--- linux-source-2.6.15-2.6.15.orig/Makefile +++ linux-source-2.6.15-2.6.15/Makefile @@ -533,6 +533,8 @@ CFLAGS += -g endif +CFLAGS += $(call cc-option, -fno-stack-protector) + include $(srctree)/arch/$(ARCH)/Makefile # arch Makefile may override CC so keep this after arch Makefile is included --- linux-source-2.6.15-2.6.15.orig/mm/mincore.c +++ linux-source-2.6.15-2.6.15/mm/mincore.c @@ -1,7 +1,7 @@ /* * linux/mm/mincore.c * - * Copyright (C) 1994-1999 Linus Torvalds + * Copyright (C) 1994-2006 Linus Torvalds */ /* @@ -38,46 +38,51 @@ return present; } -static long mincore_vma(struct vm_area_struct * vma, - unsigned long start, unsigned long end, unsigned char __user * vec) +/* + * Do a chunk of "sys_mincore()". We've already checked + * all the arguments, we hold the mmap semaphore: we should + * just return the amount of info we're asked for. + */ +static long do_mincore(unsigned long addr, unsigned char *vec, unsigned long pages) { - long error, i, remaining; - unsigned char * tmp; - - error = -ENOMEM; - if (!vma->vm_file) - return error; - - start = ((start - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff; - if (end > vma->vm_end) - end = vma->vm_end; - end = ((end - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff; - - error = -EAGAIN; - tmp = (unsigned char *) __get_free_page(GFP_KERNEL); - if (!tmp) - return error; - - /* (end - start) is # of pages, and also # of bytes in "vec */ - remaining = (end - start), + unsigned long i, nr, pgoff; + struct vm_area_struct *vma = find_vma(current->mm, addr); - error = 0; - for (i = 0; remaining > 0; remaining -= PAGE_SIZE, i++) { - int j = 0; - long thispiece = (remaining < PAGE_SIZE) ? - remaining : PAGE_SIZE; + /* + * find_vma() didn't find anything above us, or we're + * in an unmapped hole in the address space: ENOMEM. + */ + if (!vma || addr < vma->vm_start) + return -ENOMEM; - while (j < thispiece) - tmp[j++] = mincore_page(vma, start++); + /* + * Ok, got it. But check whether it's a segment we support + * mincore() on. Right now, we don't do any anonymous mappings. + * + * FIXME: This is just stupid. And returning ENOMEM is + * stupid too. We should just look at the page tables. But + * this is what we've traditionally done, so we'll just + * continue doing it. + */ + if (!vma->vm_file) + return -ENOMEM; - if (copy_to_user(vec + PAGE_SIZE * i, tmp, thispiece)) { - error = -EFAULT; - break; - } - } + /* + * Calculate how many pages there are left in the vma, and + * what the pgoff is for our address. + */ + nr = (vma->vm_end - addr) >> PAGE_SHIFT; + if (nr > pages) + nr = pages; + + pgoff = (addr - vma->vm_start) >> PAGE_SHIFT; + pgoff += vma->vm_pgoff; + + /* And then we just fill the sucker in.. */ + for (i = 0 ; i < nr; i++, pgoff++) + vec[i] = mincore_page(vma, pgoff); - free_page((unsigned long) tmp); - return error; + return nr; } /* @@ -107,82 +112,50 @@ asmlinkage long sys_mincore(unsigned long start, size_t len, unsigned char __user * vec) { - int index = 0; - unsigned long end, limit; - struct vm_area_struct * vma; - size_t max; - int unmapped_error = 0; - long error; + long retval; + unsigned long pages; + unsigned char *tmp; - /* check the arguments */ + /* Check the start address: needs to be page-aligned.. */ if (start & ~PAGE_CACHE_MASK) - goto einval; - - limit = TASK_SIZE; - if (start >= limit) - goto enomem; + return -EINVAL; - if (!len) - return 0; + /* ..and we need to be passed a valid user-space range */ + if (!access_ok(VERIFY_READ, (void __user *) start, len)) + return -ENOMEM; - max = limit - start; - len = PAGE_CACHE_ALIGN(len); - if (len > max || !len) - goto enomem; + /* This also avoids any overflows on PAGE_CACHE_ALIGN */ + pages = len >> PAGE_SHIFT; + pages += (len & ~PAGE_MASK) != 0; - end = start + len; + if (!access_ok(VERIFY_WRITE, vec, pages)) + return -EFAULT; - /* check the output buffer whilst holding the lock */ - error = -EFAULT; - down_read(¤t->mm->mmap_sem); - - if (!access_ok(VERIFY_WRITE, vec, len >> PAGE_SHIFT)) - goto out; - - /* - * If the interval [start,end) covers some unmapped address - * ranges, just ignore them, but return -ENOMEM at the end. - */ - error = 0; + tmp = (void *) __get_free_page(GFP_USER); + if (!tmp) + return -EAGAIN; - vma = find_vma(current->mm, start); - while (vma) { - /* Here start < vma->vm_end. */ - if (start < vma->vm_start) { - unmapped_error = -ENOMEM; - start = vma->vm_start; - } + retval = 0; + while (pages) { + /* + * Do at most PAGE_SIZE entries per iteration, due to + * the temporary buffer size. + */ + down_read(¤t->mm->mmap_sem); + retval = do_mincore(start, tmp, min(pages, PAGE_SIZE)); + up_read(¤t->mm->mmap_sem); - /* Here vma->vm_start <= start < vma->vm_end. */ - if (end <= vma->vm_end) { - if (start < end) { - error = mincore_vma(vma, start, end, - &vec[index]); - if (error) - goto out; - } - error = unmapped_error; - goto out; + if (retval <= 0) + break; + if (copy_to_user(vec, tmp, retval)) { + retval = -EFAULT; + break; } - - /* Here vma->vm_start <= start < vma->vm_end < end. */ - error = mincore_vma(vma, start, vma->vm_end, &vec[index]); - if (error) - goto out; - index += (vma->vm_end - start) >> PAGE_CACHE_SHIFT; - start = vma->vm_end; - vma = vma->vm_next; + pages -= retval; + vec += retval; + start += retval << PAGE_SHIFT; + retval = 0; } - - /* we found a hole in the area queried if we arrive here */ - error = -ENOMEM; - -out: - up_read(¤t->mm->mmap_sem); - return error; - -einval: - return -EINVAL; -enomem: - return -ENOMEM; + free_page((unsigned long) tmp); + return retval; } --- linux-source-2.6.15-2.6.15.orig/mm/filemap.c +++ linux-source-2.6.15-2.6.15/mm/filemap.c @@ -1951,22 +1951,9 @@ } status = a_ops->prepare_write(file, page, offset, offset+bytes); - if (unlikely(status)) { - loff_t isize = i_size_read(inode); + if (unlikely(status)) + goto fs_write_aop_error; - if (status != AOP_TRUNCATED_PAGE) - unlock_page(page); - page_cache_release(page); - if (status == AOP_TRUNCATED_PAGE) - continue; - /* - * prepare_write() may have instantiated a few blocks - * outside i_size. Trim these off again. - */ - if (pos + bytes > isize) - vmtruncate(inode, isize); - break; - } if (likely(nr_segs == 1)) copied = filemap_copy_from_user(page, offset, buf, bytes); @@ -1975,40 +1962,53 @@ cur_iov, iov_base, bytes); flush_dcache_page(page); status = a_ops->commit_write(file, page, offset, offset+bytes); - if (status == AOP_TRUNCATED_PAGE) { - page_cache_release(page); - continue; + if (unlikely(status < 0 || status == AOP_TRUNCATED_PAGE)) + goto fs_write_aop_error; + if (unlikely(copied != bytes)) { + status = -EFAULT; + goto fs_write_aop_error; } - if (likely(copied > 0)) { - if (!status) - status = copied; - - if (status >= 0) { - written += status; - count -= status; - pos += status; - buf += status; - if (unlikely(nr_segs > 1)) { - filemap_set_next_iovec(&cur_iov, - &iov_base, status); - if (count) - buf = cur_iov->iov_base + - iov_base; - } else { - iov_base += status; - } + if (unlikely(status > 0)) /* filesystem did partial write */ + copied = status; + + if (likely(copied >= 0)) { + written += copied; + count -= copied; + pos += copied; + buf += copied; + if (unlikely(nr_segs > 1)) { + filemap_set_next_iovec(&cur_iov, + &iov_base, copied); + if (count) + buf = cur_iov->iov_base + iov_base; + } else { + iov_base += copied; } } - if (unlikely(copied != bytes)) - if (status >= 0) - status = -EFAULT; unlock_page(page); mark_page_accessed(page); page_cache_release(page); - if (status < 0) - break; balance_dirty_pages_ratelimited(mapping); cond_resched(); + continue; + +fs_write_aop_error: + if (status != AOP_TRUNCATED_PAGE) + unlock_page(page); + page_cache_release(page); + + /* + * prepare_write() may have instantiated a few blocks + * outside i_size. Trim these off again. Don't need + * i_size_read because we hold i_mutex. + */ + if (pos + bytes > inode->i_size) + vmtruncate(inode, inode->i_size); + if (status == AOP_TRUNCATED_PAGE) + continue; + else + break; + } while (count); *ppos = pos; --- linux-source-2.6.15-2.6.15.orig/mm/mmap.c +++ linux-source-2.6.15-2.6.15/mm/mmap.c @@ -29,6 +29,10 @@ #include #include +#ifndef arch_mmap_check +#define arch_mmap_check(addr, len, flags) (0) +#endif + static void unmap_region(struct mm_struct *mm, struct vm_area_struct *vma, struct vm_area_struct *prev, unsigned long start, unsigned long end); @@ -905,6 +909,10 @@ if (!len) return -EINVAL; + error = arch_mmap_check(addr, len, flags); + if (error) + return error; + /* Careful about overflows.. */ len = PAGE_ALIGN(len); if (!len || len > TASK_SIZE) @@ -1451,6 +1459,7 @@ { struct mm_struct *mm = vma->vm_mm; struct rlimit *rlim = current->signal->rlim; + unsigned long new_start; /* address space limit tests */ if (!may_expand_vm(mm, grow)) @@ -1470,6 +1479,12 @@ return -ENOMEM; } + /* Check to make the stack will not grow into a hugetlb-only region. */ + new_start = (vma->vm_flags & VM_GROWSUP) ? vma->vm_start : + vma->vm_end - size; + if (is_hugepage_only_range(vma->vm_mm, new_start, size)) + return -EFAULT; + /* * Overcommit.. This must be the final test, as it will * update security statistics. @@ -1845,6 +1860,7 @@ unsigned long flags; struct rb_node ** rb_link, * rb_parent; pgoff_t pgoff = addr >> PAGE_SHIFT; + int error; len = PAGE_ALIGN(len); if (!len) @@ -1853,6 +1869,12 @@ if ((addr + len) > TASK_SIZE || (addr + len) < addr) return -EINVAL; + flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; + + error = arch_mmap_check(addr, len, flags); + if (error) + return error; + /* * mlock MCL_FUTURE? */ @@ -1893,8 +1915,6 @@ if (security_vm_enough_memory(len >> PAGE_SHIFT)) return -ENOMEM; - flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; - /* Can we just expand an old private anonymous mapping? */ if (vma_merge(mm, prev, addr, addr + len, flags, NULL, NULL, pgoff, NULL)) --- linux-source-2.6.15-2.6.15.orig/mm/shmem.c +++ linux-source-2.6.15-2.6.15/mm/shmem.c @@ -906,7 +906,7 @@ pvma.vm_policy = mpol_shared_policy_lookup(&info->policy, idx); pvma.vm_pgoff = idx; pvma.vm_end = PAGE_SIZE; - page = alloc_page_vma(gfp | __GFP_ZERO, &pvma, 0); + page = alloc_page_vma(gfp, &pvma, 0); mpol_free(pvma.vm_policy); return page; } @@ -921,7 +921,7 @@ static inline struct page * shmem_alloc_page(gfp_t gfp,struct shmem_inode_info *info, unsigned long idx) { - return alloc_page(gfp | __GFP_ZERO); + return alloc_page(gfp); } #endif @@ -1130,6 +1130,7 @@ info->alloced++; spin_unlock(&info->lock); + clear_highpage(filepage); flush_dcache_page(filepage); SetPageUptodate(filepage); } --- linux-source-2.6.15-2.6.15.orig/Documentation/networking/ip-sysctl.txt +++ linux-source-2.6.15-2.6.15/Documentation/networking/ip-sysctl.txt @@ -683,6 +683,14 @@ Functional default: enabled if local forwarding is disabled. disabled if local forwarding is enabled. +accept_source_route - INTEGER + Accept source routing (routing extension header). + + > 0: Accept routing header. + = 0: Do not accept routing header. + + Default: 0 + autoconf - BOOLEAN Autoconfigure addresses using Prefix Information in Router Advertisements. --- linux-source-2.6.15-2.6.15.orig/sound/synth/emux/soundfont.c +++ linux-source-2.6.15-2.6.15/sound/synth/emux/soundfont.c @@ -183,7 +183,7 @@ break; case SNDRV_SFNT_REMOVE_INFO: /* patch must be opened */ - if (sflist->currsf) { + if (!sflist->currsf) { snd_printk("soundfont: remove_info: patch not opened\n"); rc = -EINVAL; } else { --- linux-source-2.6.15-2.6.15.orig/sound/synth/emux/emux_seq.c +++ linux-source-2.6.15-2.6.15/sound/synth/emux/emux_seq.c @@ -55,8 +55,7 @@ #define DEFAULT_MIDI_TYPE (SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC |\ SNDRV_SEQ_PORT_TYPE_MIDI_GM |\ SNDRV_SEQ_PORT_TYPE_MIDI_GS |\ - SNDRV_SEQ_PORT_TYPE_MIDI_XG |\ - SNDRV_SEQ_PORT_TYPE_DIRECT_SAMPLE) + SNDRV_SEQ_PORT_TYPE_MIDI_XG) /* * Initialise the EMUX Synth by creating a client and registering --- linux-source-2.6.15-2.6.15.orig/sound/oss/via82cxxx_audio.c +++ linux-source-2.6.15-2.6.15/sound/oss/via82cxxx_audio.c @@ -2103,6 +2103,7 @@ { struct via_info *card = vma->vm_private_data; struct via_channel *chan = &card->ch_out; + unsigned long max_bufs; struct page *dmapage; unsigned long pgoff; int rd, wr; @@ -2126,14 +2127,11 @@ rd = card->ch_in.is_mapped; wr = card->ch_out.is_mapped; -#ifndef VIA_NDEBUG - { - unsigned long max_bufs = chan->frag_number; - if (rd && wr) max_bufs *= 2; - /* via_dsp_mmap() should ensure this */ - assert (pgoff < max_bufs); - } -#endif + max_bufs = chan->frag_number; + if (rd && wr) + max_bufs *= 2; + if (pgoff >= max_bufs) + return NOPAGE_SIGBUS; /* if full-duplex (read+write) and we have two sets of bufs, * then the playback buffers come first, sez soundcard.c */ --- linux-source-2.6.15-2.6.15.orig/sound/core/timer.c +++ linux-source-2.6.15-2.6.15/sound/core/timer.c @@ -628,8 +628,9 @@ snd_timer_instance_t *ti; struct list_head *p; unsigned long resolution, ticks; + unsigned long flags; - spin_lock(&timer->lock); + spin_lock_irqsave(&timer->lock, flags); /* now process all callbacks */ while (!list_empty(&timer->sack_list_head)) { p = timer->sack_list_head.next; /* get first item */ @@ -649,7 +650,7 @@ spin_lock(&timer->lock); ti->flags &= ~SNDRV_TIMER_IFLG_CALLBACK; } - spin_unlock(&timer->lock); + spin_unlock_irqrestore(&timer->lock, flags); } /* --- linux-source-2.6.15-2.6.15.orig/sound/core/pcm_native.c +++ linux-source-2.6.15-2.6.15/sound/core/pcm_native.c @@ -1423,8 +1423,6 @@ } } up_read(&snd_pcm_link_rwsem); - if (! num_drecs) - goto _error; snd_pcm_stream_lock_irq(substream); /* resume pause */ --- linux-source-2.6.15-2.6.15.orig/sound/core/seq/oss/seq_oss_synth.c +++ linux-source-2.6.15-2.6.15/sound/core/seq/oss/seq_oss_synth.c @@ -599,6 +599,9 @@ { seq_oss_synth_t *rec; + if (dev < 0 || dev >= dp->max_synthdev) + return -ENXIO; + if (dp->synths[dev].is_midi) { struct midi_info minf; snd_seq_oss_midi_make_info(dp, dp->synths[dev].midi_mapped, &minf); --- linux-source-2.6.15-2.6.15.orig/sound/core/memalloc.c +++ linux-source-2.6.15-2.6.15/sound/core/memalloc.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -516,10 +517,8 @@ #define SND_MEM_PROC_FILE "driver/snd-page-alloc" static struct proc_dir_entry *snd_mem_proc; -static int snd_mem_proc_read(char *page, char **start, off_t off, - int count, int *eof, void *data) +static int snd_mem_proc_read(struct seq_file *seq, void *offset) { - int len = 0; long pages = snd_allocated_pages >> (PAGE_SHIFT-12); struct list_head *p; struct snd_mem_list *mem; @@ -527,44 +526,47 @@ static char *types[] = { "UNKNOWN", "CONT", "DEV", "DEV-SG", "SBUS" }; down(&list_mutex); - len += snprintf(page + len, count - len, - "pages : %li bytes (%li pages per %likB)\n", - pages * PAGE_SIZE, pages, PAGE_SIZE / 1024); + seq_printf(seq, "pages : %li bytes (%li pages per %likB)\n", + pages * PAGE_SIZE, pages, PAGE_SIZE / 1024); devno = 0; list_for_each(p, &mem_list_head) { mem = list_entry(p, struct snd_mem_list, list); devno++; - len += snprintf(page + len, count - len, - "buffer %d : ID %08x : type %s\n", - devno, mem->id, types[mem->buffer.dev.type]); - len += snprintf(page + len, count - len, - " addr = 0x%lx, size = %d bytes\n", - (unsigned long)mem->buffer.addr, (int)mem->buffer.bytes); + seq_printf(seq, "buffer %d : ID %08x : type %s\n", + devno, mem->id, types[mem->buffer.dev.type]); + seq_printf(seq, " addr = 0x%lx, size = %d bytes\n", + (unsigned long)mem->buffer.addr, + (int)mem->buffer.bytes); } up(&list_mutex); - return len; + return 0; +} + +static int snd_mem_proc_open(struct inode *inode, struct file *file) +{ + return single_open(file, snd_mem_proc_read, NULL); } /* FIXME: for pci only - other bus? */ #ifdef CONFIG_PCI #define gettoken(bufp) strsep(bufp, " \t\n") -static int snd_mem_proc_write(struct file *file, const char __user *buffer, - unsigned long count, void *data) +static ssize_t snd_mem_proc_write(struct file *file, const char __user * buffer, + size_t count, loff_t * ppos) { char buf[128]; char *token, *p; - if (count > ARRAY_SIZE(buf) - 1) - count = ARRAY_SIZE(buf) - 1; + if (count > sizeof(buf) - 1) + return -EINVAL; if (copy_from_user(buf, buffer, count)) return -EFAULT; - buf[ARRAY_SIZE(buf) - 1] = '\0'; + buf[count] = '\0'; p = buf; token = gettoken(&p); if (! token || *token == '#') - return (int)count; + return count; if (strcmp(token, "add") == 0) { char *endp; int vendor, device, size, buffers; @@ -585,7 +587,7 @@ (buffers = simple_strtol(token, NULL, 0)) <= 0 || buffers > 4) { printk(KERN_ERR "snd-page-alloc: invalid proc write format\n"); - return (int)count; + return count; } vendor &= 0xffff; device &= 0xffff; @@ -597,7 +599,7 @@ if (pci_set_dma_mask(pci, mask) < 0 || pci_set_consistent_dma_mask(pci, mask) < 0) { printk(KERN_ERR "snd-page-alloc: cannot set DMA mask %lx for pci %04x:%04x\n", mask, vendor, device); - return (int)count; + return count; } } for (i = 0; i < buffers; i++) { @@ -607,7 +609,7 @@ size, &dmab) < 0) { printk(KERN_ERR "snd-page-alloc: cannot allocate buffer pages (size = %d)\n", size); pci_dev_put(pci); - return (int)count; + return count; } snd_dma_reserve_buf(&dmab, snd_dma_pci_buf_id(pci)); } @@ -633,9 +635,21 @@ free_all_reserved_pages(); else printk(KERN_ERR "snd-page-alloc: invalid proc cmd\n"); - return (int)count; + return count; } #endif /* CONFIG_PCI */ + +static const struct file_operations snd_mem_proc_fops = { + .owner = THIS_MODULE, + .open = snd_mem_proc_open, + .read = seq_read, +#ifdef CONFIG_PCI + .write = snd_mem_proc_write, +#endif + .llseek = seq_lseek, + .release = single_release, +}; + #endif /* CONFIG_PROC_FS */ /* @@ -646,12 +660,8 @@ { #ifdef CONFIG_PROC_FS snd_mem_proc = create_proc_entry(SND_MEM_PROC_FILE, 0644, NULL); - if (snd_mem_proc) { - snd_mem_proc->read_proc = snd_mem_proc_read; -#ifdef CONFIG_PCI - snd_mem_proc->write_proc = snd_mem_proc_write; -#endif - } + if (snd_mem_proc) + snd_mem_proc->proc_fops = &snd_mem_proc_fops; #endif return 0; } --- linux-source-2.6.15-2.6.15.orig/sound/isa/sb/sb8_midi.c +++ linux-source-2.6.15-2.6.15/sound/isa/sb/sb8_midi.c @@ -42,7 +42,10 @@ int max = 64; char byte; - if (chip == NULL || (rmidi = chip->rmidi) == NULL) { + if (!chip) + return IRQ_NONE; + rmidi = chip->rmidi; + if (!rmidi) { inb(SBP(chip, DATA_AVAIL)); /* ack interrupt */ return IRQ_NONE; } --- linux-source-2.6.15-2.6.15.orig/sound/pci/ens1370.c +++ linux-source-2.6.15-2.6.15/sound/pci/ens1370.c @@ -1598,6 +1598,9 @@ ac97.scaps = AC97_SCAP_AUDIO; if ((err = snd_ac97_mixer(pbus, &ac97, &ensoniq->u.es1371.ac97)) < 0) return err; + /* Ubuntu: ENS1371s shouldn't enable VRA */ + snd_ac97_update_bits(ensoniq->u.es1371.ac97, AC97_EXTENDED_STATUS, + AC97_EA_VRA|AC97_EA_VRM, 0); for (idx = 0; es1371_spdif_present[idx].vid != (unsigned short)PCI_ANY_ID; idx++) if (ensoniq->pci->vendor == es1371_spdif_present[idx].vid && ensoniq->pci->device == es1371_spdif_present[idx].did && --- linux-source-2.6.15-2.6.15.orig/sound/pci/hda/patch_analog.c +++ linux-source-2.6.15-2.6.15/sound/pci/hda/patch_analog.c @@ -787,6 +787,10 @@ { .modelname = "3stack", .config = AD1986A_3STACK }, { .pci_subvendor = 0x10de, .pci_subdevice = 0xcb84, .config = AD1986A_3STACK }, /* ASUS A8N-VM CSM */ + { .pci_subvendor = 0x1043, .pci_subdevice = 0x81b3, + .config = AD1986A_3STACK }, /* ASUS P5RD2-VM / P5GPL-X SE */ + { .pci_subvendor = 0x1043, .pci_subdevice = 0x81cb, + .config = AD1986A_3STACK }, /* ASUS M2NPV-VM */ { .modelname = "laptop", .config = AD1986A_LAPTOP }, { .pci_subvendor = 0x144d, .pci_subdevice = 0xc01e, .config = AD1986A_LAPTOP }, /* FSC V2060 */ @@ -795,8 +799,12 @@ { .pci_subvendor = 0x1043, .pci_subdevice = 0x818f, .config = AD1986A_LAPTOP }, /* ASUS P5GV-MX */ { .modelname = "laptop-eapd", .config = AD1986A_LAPTOP_EAPD }, + { .pci_subvendor = 0x144d, .pci_subdevice = 0xc023, + .config = AD1986A_LAPTOP_EAPD }, /* Samsung X60 Chane */ { .pci_subvendor = 0x144d, .pci_subdevice = 0xc024, .config = AD1986A_LAPTOP_EAPD }, /* Samsung R65-T2300 Charis */ + { .pci_subvendor = 0x144d, .pci_subdevice = 0xc026, + .config = AD1986A_LAPTOP_EAPD }, /* Samsung X10-T2300 Culesa */ { .pci_subvendor = 0x1043, .pci_subdevice = 0x1153, .config = AD1986A_LAPTOP_EAPD }, /* ASUS M9 */ { .pci_subvendor = 0x1043, .pci_subdevice = 0x1213, @@ -805,6 +813,8 @@ .config = AD1986A_LAPTOP_EAPD }, /* ASUS U5A */ { .pci_subvendor = 0x103c, .pci_subdevice = 0x30af, .config = AD1986A_LAPTOP_EAPD }, /* HP Compaq Presario B2800 */ + { .pci_subvendor = 0x17aa, .pci_subdevice = 0x2066, + .config = AD1986A_LAPTOP_EAPD }, /* Lenovo 3000 N100-07684JU */ {} }; @@ -1364,6 +1374,8 @@ { .modelname = "hp", .config = AD1981_HP }, /* All HP models */ { .pci_subvendor = 0x103c, .config = AD1981_HP }, + { .pci_subvendor = 0x30b0, .pci_subdevice = 0x103c, + .config = AD1981_HP }, /* HP nx6320 (reversed SSID, H/W bug) */ { .modelname = "thinkpad", .config = AD1981_THINKPAD }, /* Lenovo Thinkpad T60/X60/Z6xx */ { .pci_subvendor = 0x17aa, .config = AD1981_THINKPAD }, @@ -1526,6 +1538,9 @@ /* reivision id to check workarounds */ #define AD1988A_REV2 0x100200 +#define is_rev2(codec) \ + ((codec)->vendor_id == 0x11d41988 && \ + (codec)->revision_id == AD1988A_REV2) /* * mixers @@ -1604,10 +1619,12 @@ { struct hda_codec *codec = snd_kcontrol_chip(kcontrol); struct ad198x_spec *spec = codec->spec; - if (spec->need_dac_fix) + int err = snd_hda_ch_mode_put(codec, ucontrol, spec->channel_mode, + spec->num_channel_mode, + &spec->multiout.max_channels); + if (! err && spec->need_dac_fix) spec->multiout.num_dacs = spec->multiout.max_channels / 2; - return snd_hda_ch_mode_put(codec, ucontrol, spec->channel_mode, - spec->num_channel_mode, &spec->multiout.max_channels); + return err; } /* 6-stack mode */ @@ -1617,6 +1634,7 @@ HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x05, 1, 0x0, HDA_OUTPUT), HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x05, 2, 0x0, HDA_OUTPUT), HDA_CODEC_VOLUME("Side Playback Volume", 0x0a, 0x0, HDA_OUTPUT), + { } /* end */ }; static snd_kcontrol_new_t ad1988_6stack_mixers1_rev2[] = { @@ -1625,6 +1643,7 @@ HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x0a, 1, 0x0, HDA_OUTPUT), HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x0a, 2, 0x0, HDA_OUTPUT), HDA_CODEC_VOLUME("Side Playback Volume", 0x06, 0x0, HDA_OUTPUT), + { } /* end */ }; static snd_kcontrol_new_t ad1988_6stack_mixers2[] = { @@ -1663,6 +1682,7 @@ HDA_CODEC_VOLUME("Surround Playback Volume", 0x0a, 0x0, HDA_OUTPUT), HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x05, 1, 0x0, HDA_OUTPUT), HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x05, 2, 0x0, HDA_OUTPUT), + { } /* end */ }; static snd_kcontrol_new_t ad1988_3stack_mixers1_rev2[] = { @@ -1670,6 +1690,7 @@ HDA_CODEC_VOLUME("Surround Playback Volume", 0x0a, 0x0, HDA_OUTPUT), HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x06, 1, 0x0, HDA_OUTPUT), HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x06, 2, 0x0, HDA_OUTPUT), + { } /* end */ }; static snd_kcontrol_new_t ad1988_3stack_mixers2[] = { @@ -2176,7 +2197,7 @@ /* A B C D E F G H */ 0x04, 0x05, 0x0a, 0x04, 0x06, 0x05, 0x0a, 0x06 }; - if (codec->revision_id == AD1988A_REV2) + if (is_rev2(codec)) return idx_to_dac_rev2[idx]; else return idx_to_dac[idx]; @@ -2545,7 +2566,7 @@ init_MUTEX(&spec->amp_mutex); codec->spec = spec; - if (codec->revision_id == AD1988A_REV2) + if (is_rev2(codec)) snd_printk(KERN_INFO "patch_analog: AD1988A rev.2 is detected, enable workarounds\n"); board_config = snd_hda_check_board_config(codec, ad1988_cfg_tbl); @@ -2571,13 +2592,13 @@ case AD1988_6STACK_DIG: spec->multiout.max_channels = 8; spec->multiout.num_dacs = 4; - if (codec->revision_id == AD1988A_REV2) + if (is_rev2(codec)) spec->multiout.dac_nids = ad1988_6stack_dac_nids_rev2; else spec->multiout.dac_nids = ad1988_6stack_dac_nids; spec->input_mux = &ad1988_6stack_capture_source; spec->num_mixers = 2; - if (codec->revision_id == AD1988A_REV2) + if (is_rev2(codec)) spec->mixers[0] = ad1988_6stack_mixers1_rev2; else spec->mixers[0] = ad1988_6stack_mixers1; @@ -2593,7 +2614,7 @@ case AD1988_3STACK_DIG: spec->multiout.max_channels = 6; spec->multiout.num_dacs = 3; - if (codec->revision_id == AD1988A_REV2) + if (is_rev2(codec)) spec->multiout.dac_nids = ad1988_3stack_dac_nids_rev2; else spec->multiout.dac_nids = ad1988_3stack_dac_nids; @@ -2601,7 +2622,7 @@ spec->channel_mode = ad1988_3stack_modes; spec->num_channel_mode = ARRAY_SIZE(ad1988_3stack_modes); spec->num_mixers = 2; - if (codec->revision_id == AD1988A_REV2) + if (is_rev2(codec)) spec->mixers[0] = ad1988_3stack_mixers1_rev2; else spec->mixers[0] = ad1988_3stack_mixers1; --- linux-source-2.6.15-2.6.15.orig/sound/pci/hda/patch_realtek.c +++ linux-source-2.6.15-2.6.15/sound/pci/hda/patch_realtek.c @@ -78,6 +78,8 @@ enum { ALC262_BASIC, ALC262_FUJITSU, + ALC262_HP_BPC, + ALC262_BENQ_ED8, ALC262_AUTO, ALC262_MODEL_LAST /* last tag */ }; @@ -85,8 +87,10 @@ /* ALC861 models */ enum { ALC861_3ST, + ALC660_3ST, ALC861_3ST_DIG, ALC861_6ST_DIG, + ALC861_UNIWILL_M31, ALC861_AUTO, ALC861_MODEL_LAST, }; @@ -95,10 +99,22 @@ enum { ALC882_3ST_DIG, ALC882_6ST_DIG, + ALC882_ARIMA, ALC882_AUTO, ALC882_MODEL_LAST, }; +/* ALC883 models */ +enum { + ALC883_3ST_2ch_DIG, + ALC883_3ST_6ch_DIG, + ALC883_3ST_6ch, + ALC883_6ST_DIG, + ALC888_DEMO_BOARD, + ALC883_AUTO, + ALC883_MODEL_LAST, +}; + /* for GPIO Poll */ #define GPIO_MASK 0x03 @@ -108,7 +124,8 @@ unsigned int num_mixers; const struct hda_verb *init_verbs[5]; /* initialization verbs - * don't forget NULL termination! + * don't forget NULL + * termination! */ unsigned int num_init_verbs; @@ -139,6 +156,7 @@ /* channel model */ const struct hda_channel_mode *channel_mode; int num_channel_mode; + int need_dac_fix; /* PCM information */ struct hda_pcm pcm_rec[3]; /* used in alc_build_pcms() */ @@ -174,6 +192,7 @@ hda_nid_t dig_in_nid; unsigned int num_channel_mode; const struct hda_channel_mode *channel_mode; + int need_dac_fix; unsigned int num_mux_defs; const struct hda_input_mux *input_mux; void (*unsol_event)(struct hda_codec *, unsigned int); @@ -238,8 +257,12 @@ { struct hda_codec *codec = snd_kcontrol_chip(kcontrol); struct alc_spec *spec = codec->spec; - return snd_hda_ch_mode_put(codec, ucontrol, spec->channel_mode, - spec->num_channel_mode, &spec->multiout.max_channels); + int err = snd_hda_ch_mode_put(codec, ucontrol, spec->channel_mode, + spec->num_channel_mode, + &spec->multiout.max_channels); + if (! err && spec->need_dac_fix) + spec->multiout.num_dacs = spec->multiout.max_channels / 2; + return err; } /* @@ -351,15 +374,19 @@ * this turns out to be necessary in the future. */ if (val <= 2) { - snd_hda_codec_write(codec,nid,0,AC_VERB_SET_AMP_GAIN_MUTE, - AMP_OUT_MUTE); - snd_hda_codec_write(codec,nid,0,AC_VERB_SET_AMP_GAIN_MUTE, - AMP_IN_UNMUTE(0)); + snd_hda_codec_write(codec, nid, 0, + AC_VERB_SET_AMP_GAIN_MUTE, + AMP_OUT_MUTE); + snd_hda_codec_write(codec, nid, 0, + AC_VERB_SET_AMP_GAIN_MUTE, + AMP_IN_UNMUTE(0)); } else { - snd_hda_codec_write(codec,nid,0,AC_VERB_SET_AMP_GAIN_MUTE, - AMP_IN_MUTE(0)); - snd_hda_codec_write(codec,nid,0,AC_VERB_SET_AMP_GAIN_MUTE, - AMP_OUT_UNMUTE); + snd_hda_codec_write(codec, nid, 0, + AC_VERB_SET_AMP_GAIN_MUTE, + AMP_IN_MUTE(0)); + snd_hda_codec_write(codec, nid, 0, + AC_VERB_SET_AMP_GAIN_MUTE, + AMP_OUT_UNMUTE); } } return change; @@ -481,17 +508,21 @@ /* * set up from the preset table */ -static void setup_preset(struct alc_spec *spec, const struct alc_config_preset *preset) +static void setup_preset(struct alc_spec *spec, + const struct alc_config_preset *preset) { int i; for (i = 0; i < ARRAY_SIZE(preset->mixers) && preset->mixers[i]; i++) spec->mixers[spec->num_mixers++] = preset->mixers[i]; - for (i = 0; i < ARRAY_SIZE(preset->init_verbs) && preset->init_verbs[i]; i++) - spec->init_verbs[spec->num_init_verbs++] = preset->init_verbs[i]; + for (i = 0; i < ARRAY_SIZE(preset->init_verbs) && preset->init_verbs[i]; + i++) + spec->init_verbs[spec->num_init_verbs++] = + preset->init_verbs[i]; spec->channel_mode = preset->channel_mode; spec->num_channel_mode = preset->num_channel_mode; + spec->need_dac_fix = preset->need_dac_fix; spec->multiout.max_channels = spec->channel_mode[0].channels; @@ -517,8 +548,8 @@ * ALC880 3-stack model * * DAC: Front = 0x02 (0x0c), Surr = 0x05 (0x0f), CLFE = 0x04 (0x0e) - * Pin assignment: Front = 0x14, Line-In/Surr = 0x1a, Mic/CLFE = 0x18, F-Mic = 0x1b - * HP = 0x19 + * Pin assignment: Front = 0x14, Line-In/Surr = 0x1a, Mic/CLFE = 0x18, + * F-Mic = 0x1b, HP = 0x19 */ static hda_nid_t alc880_dac_nids[4] = { @@ -662,7 +693,8 @@ /* * ALC880 5-stack model * - * DAC: Front = 0x02 (0x0c), Surr = 0x05 (0x0f), CLFE = 0x04 (0x0d), Side = 0x02 (0xd) + * DAC: Front = 0x02 (0x0c), Surr = 0x05 (0x0f), CLFE = 0x04 (0x0d), + * Side = 0x02 (0xd) * Pin assignment: Front = 0x14, Surr = 0x17, CLFE = 0x16 * Line-In/Side = 0x1a, Mic = 0x18, F-Mic = 0x1b, HP = 0x19 */ @@ -700,7 +732,8 @@ /* * ALC880 6-stack model * - * DAC: Front = 0x02 (0x0c), Surr = 0x03 (0x0d), CLFE = 0x04 (0x0e), Side = 0x05 (0x0f) + * DAC: Front = 0x02 (0x0c), Surr = 0x03 (0x0d), CLFE = 0x04 (0x0e), + * Side = 0x05 (0x0f) * Pin assignment: Front = 0x14, Surr = 0x15, CLFE = 0x16, Side = 0x17, * Mic = 0x18, F-Mic = 0x19, Line = 0x1a, HP = 0x1b */ @@ -811,7 +844,8 @@ * Z710V model * * DAC: Front = 0x02 (0x0c), HP = 0x03 (0x0d) - * Pin assignment: Front = 0x14, HP = 0x15, Mic = 0x18, Mic2 = 0x19(?), Line = 0x1a + * Pin assignment: Front = 0x14, HP = 0x15, Mic = 0x18, Mic2 = 0x19(?), + * Line = 0x1a */ static hda_nid_t alc880_z71v_dac_nids[1] = { @@ -966,7 +1000,8 @@ } if (spec->multiout.dig_out_nid) { - err = snd_hda_create_spdif_out_ctls(codec, spec->multiout.dig_out_nid); + err = snd_hda_create_spdif_out_ctls(codec, + spec->multiout.dig_out_nid); if (err < 0) return err; } @@ -999,8 +1034,8 @@ /* Unmute input amps (CD, Line In, Mic 1 & Mic 2) of the analog-loopback * mixer widget - * Note: PASD motherboards uses the Line In 2 as the input for front panel - * mic (mic 2) + * Note: PASD motherboards uses the Line In 2 as the input for front + * panel mic (mic 2) */ /* Amp Indices: Mic1 = 0, Mic2 = 1, Line1 = 2, Line2 = 3, CD = 4 */ {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, @@ -1154,8 +1189,8 @@ /* * 6-stack pin configuration: - * front = 0x14, surr = 0x15, clfe = 0x16, side = 0x17, mic = 0x18, f-mic = 0x19, - * line = 0x1a, HP = 0x1b + * front = 0x14, surr = 0x15, clfe = 0x16, side = 0x17, mic = 0x18, + * f-mic = 0x19, line = 0x1a, HP = 0x1b */ static struct hda_verb alc880_pin_6stack_init_verbs[] = { {0x13, AC_VERB_SET_CONNECT_SEL, 0x00}, /* HP */ @@ -1292,6 +1327,10 @@ }; static struct hda_verb alc880_pin_tcl_S700_init_verbs[] = { + /* change to EAPD mode */ + {0x20, AC_VERB_SET_COEF_INDEX, 0x07}, + {0x20, AC_VERB_SET_PROC_COEF, 0x3060}, + /* Headphone output */ {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, /* Front output*/ @@ -1587,8 +1626,8 @@ snd_pcm_substream_t *substream) { struct alc_spec *spec = codec->spec; - return snd_hda_multi_out_analog_prepare(codec, &spec->multiout, stream_tag, - format, substream); + return snd_hda_multi_out_analog_prepare(codec, &spec->multiout, + stream_tag, format, substream); } static int alc880_playback_pcm_cleanup(struct hda_pcm_stream *hinfo, @@ -1640,7 +1679,8 @@ { struct alc_spec *spec = codec->spec; - snd_hda_codec_setup_stream(codec, spec->adc_nids[substream->number], 0, 0, 0); + snd_hda_codec_setup_stream(codec, spec->adc_nids[substream->number], + 0, 0, 0); return 0; } @@ -2080,6 +2120,7 @@ { .pci_subvendor = 0x107b, .pci_subdevice = 0x4040, .config = ALC880_3ST }, { .pci_subvendor = 0x107b, .pci_subdevice = 0x4041, .config = ALC880_3ST }, /* TCL S700 */ + { .modelname = "tcl", .config = ALC880_TCL_S700 }, { .pci_subvendor = 0x19db, .pci_subdevice = 0x4188, .config = ALC880_TCL_S700 }, /* Back 3 jack, front 2 jack (Internal add Aux-In) */ @@ -2091,8 +2132,13 @@ { .modelname = "3stack-digout", .config = ALC880_3ST_DIG }, { .pci_subvendor = 0x8086, .pci_subdevice = 0xe308, .config = ALC880_3ST_DIG }, { .pci_subvendor = 0x1025, .pci_subdevice = 0x0070, .config = ALC880_3ST_DIG }, - /* Clevo m520G NB */ - { .pci_subvendor = 0x1558, .pci_subdevice = 0x0520, .config = ALC880_CLEVO }, + + /* Clevo laptops */ + { .modelname = "clevo", .config = ALC880_CLEVO }, + { .pci_subvendor = 0x1558, .pci_subdevice = 0x0520, + .config = ALC880_CLEVO }, /* Clevo m520G NB */ + { .pci_subvendor = 0x1558, .pci_subdevice = 0x0660, + .config = ALC880_CLEVO }, /* Clevo m665n */ /* Back 3 jack plus 1 SPDIF out jack, front 2 jack (Internal add Aux-In)*/ { .pci_subvendor = 0x8086, .pci_subdevice = 0xe305, .config = ALC880_3ST_DIG }, @@ -2157,12 +2203,17 @@ { .pci_subvendor = 0x1043, .pci_subdevice = 0x1113, .config = ALC880_ASUS_DIG }, { .pci_subvendor = 0x1043, .pci_subdevice = 0x1173, .config = ALC880_ASUS_DIG }, { .pci_subvendor = 0x1043, .pci_subdevice = 0x1993, .config = ALC880_ASUS }, + { .pci_subvendor = 0x1043, .pci_subdevice = 0x1323, .config = ALC880_ASUS_DIG }, /* Asus A7TC */ + { .pci_subvendor = 0x1043, .pci_subdevice = 0x10c2, .config = ALC880_ASUS_DIG }, /* Asus W6A */ { .pci_subvendor = 0x1043, .pci_subdevice = 0x10c3, .config = ALC880_ASUS_DIG }, { .pci_subvendor = 0x1043, .pci_subdevice = 0x1133, .config = ALC880_ASUS }, { .pci_subvendor = 0x1043, .pci_subdevice = 0x1123, .config = ALC880_ASUS_DIG }, { .pci_subvendor = 0x1043, .pci_subdevice = 0x1143, .config = ALC880_ASUS }, + { .modelname = "asus-w1v", .config = ALC880_ASUS_W1V }, { .pci_subvendor = 0x1043, .pci_subdevice = 0x10b3, .config = ALC880_ASUS_W1V }, + { .modelname = "asus-dig", .config = ALC880_ASUS_DIG }, { .pci_subvendor = 0x1043, .pci_subdevice = 0x8181, .config = ALC880_ASUS_DIG }, /* ASUS P4GPL-X */ + { .modelname = "asus-dig2", .config = ALC880_ASUS_DIG2 }, { .pci_subvendor = 0x1558, .pci_subdevice = 0x5401, .config = ALC880_ASUS_DIG2 }, { .modelname = "uniwill", .config = ALC880_UNIWILL_DIG }, @@ -2197,6 +2248,7 @@ .dac_nids = alc880_dac_nids, .num_channel_mode = ARRAY_SIZE(alc880_threestack_modes), .channel_mode = alc880_threestack_modes, + .need_dac_fix = 1, .input_mux = &alc880_capture_source, }, [ALC880_3ST_DIG] = { @@ -2207,6 +2259,7 @@ .dig_out_nid = ALC880_DIGOUT_NID, .num_channel_mode = ARRAY_SIZE(alc880_threestack_modes), .channel_mode = alc880_threestack_modes, + .need_dac_fix = 1, .input_mux = &alc880_capture_source, }, [ALC880_TCL_S700] = { @@ -2299,6 +2352,7 @@ .dac_nids = alc880_asus_dac_nids, .num_channel_mode = ARRAY_SIZE(alc880_asus_modes), .channel_mode = alc880_asus_modes, + .need_dac_fix = 1, .input_mux = &alc880_capture_source, }, [ALC880_ASUS_DIG] = { @@ -2310,6 +2364,7 @@ .dig_out_nid = ALC880_DIGOUT_NID, .num_channel_mode = ARRAY_SIZE(alc880_asus_modes), .channel_mode = alc880_asus_modes, + .need_dac_fix = 1, .input_mux = &alc880_capture_source, }, [ALC880_ASUS_DIG2] = { @@ -2321,6 +2376,7 @@ .dig_out_nid = ALC880_DIGOUT_NID, .num_channel_mode = ARRAY_SIZE(alc880_asus_modes), .channel_mode = alc880_asus_modes, + .need_dac_fix = 1, .input_mux = &alc880_capture_source, }, [ALC880_ASUS_W1V] = { @@ -2332,6 +2388,7 @@ .dig_out_nid = ALC880_DIGOUT_NID, .num_channel_mode = ARRAY_SIZE(alc880_asus_modes), .channel_mode = alc880_asus_modes, + .need_dac_fix = 1, .input_mux = &alc880_capture_source, }, [ALC880_UNIWILL_DIG] = { @@ -2342,6 +2399,7 @@ .dig_out_nid = ALC880_DIGOUT_NID, .num_channel_mode = ARRAY_SIZE(alc880_asus_modes), .channel_mode = alc880_asus_modes, + .need_dac_fix = 1, .input_mux = &alc880_capture_source, }, [ALC880_CLEVO] = { @@ -2353,6 +2411,7 @@ .hp_nid = 0x03, .num_channel_mode = ARRAY_SIZE(alc880_threestack_modes), .channel_mode = alc880_threestack_modes, + .need_dac_fix = 1, .input_mux = &alc880_capture_source, }, [ALC880_LG] = { @@ -2364,6 +2423,7 @@ .dig_out_nid = ALC880_DIGOUT_NID, .num_channel_mode = ARRAY_SIZE(alc880_lg_ch_modes), .channel_mode = alc880_lg_ch_modes, + .need_dac_fix = 1, .input_mux = &alc880_lg_capture_source, .unsol_event = alc880_lg_unsol_event, .init_hook = alc880_lg_automute, @@ -2738,7 +2798,8 @@ board_config = snd_hda_check_board_config(codec, alc880_cfg_tbl); if (board_config < 0 || board_config >= ALC880_MODEL_LAST) { - printk(KERN_INFO "hda_codec: Unknown model for ALC880, trying auto-probe from BIOS...\n"); + printk(KERN_INFO "hda_codec: Unknown model for ALC880, " + "trying auto-probe from BIOS...\n"); board_config = ALC880_AUTO; } @@ -2749,7 +2810,9 @@ alc_free(codec); return err; } else if (! err) { - printk(KERN_INFO "hda_codec: Cannot set up configuration from BIOS. Using 3-stack mode...\n"); + printk(KERN_INFO + "hda_codec: Cannot set up configuration " + "from BIOS. Using 3-stack mode...\n"); board_config = ALC880_3ST; } } @@ -3105,6 +3168,7 @@ { } }; +#if 0 /* should be identical with alc260_init_verbs? */ static struct hda_verb alc260_hp_init_verbs[] = { /* Headphone and output */ {0x10, AC_VERB_SET_PIN_WIDGET_CONTROL, 0xc0}, @@ -3151,6 +3215,7 @@ {0x0a, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x01 << 8))}, { } }; +#endif static struct hda_verb alc260_hp_3013_init_verbs[] = { /* Line out and output */ @@ -3822,12 +3887,17 @@ { .modelname = "basic", .config = ALC260_BASIC }, { .pci_subvendor = 0x104d, .pci_subdevice = 0x81bb, .config = ALC260_BASIC }, /* Sony VAIO */ + { .pci_subvendor = 0x104d, .pci_subdevice = 0x81cc, + .config = ALC260_BASIC }, /* Sony VAIO VGN-S3HP */ + { .pci_subvendor = 0x104d, .pci_subdevice = 0x81cd, + .config = ALC260_BASIC }, /* Sony VAIO */ { .pci_subvendor = 0x152d, .pci_subdevice = 0x0729, .config = ALC260_BASIC }, /* CTL Travel Master U553W */ { .modelname = "hp", .config = ALC260_HP }, - { .pci_subvendor = 0x103c, .pci_subdevice = 0x3010, .config = ALC260_HP }, + { .modelname = "hp-3013", .config = ALC260_HP_3013 }, + { .pci_subvendor = 0x103c, .pci_subdevice = 0x3010, .config = ALC260_HP_3013 }, { .pci_subvendor = 0x103c, .pci_subdevice = 0x3011, .config = ALC260_HP }, - { .pci_subvendor = 0x103c, .pci_subdevice = 0x3012, .config = ALC260_HP }, + { .pci_subvendor = 0x103c, .pci_subdevice = 0x3012, .config = ALC260_HP_3013 }, { .pci_subvendor = 0x103c, .pci_subdevice = 0x3013, .config = ALC260_HP_3013 }, { .pci_subvendor = 0x103c, .pci_subdevice = 0x3014, .config = ALC260_HP }, { .pci_subvendor = 0x103c, .pci_subdevice = 0x3015, .config = ALC260_HP }, @@ -3862,7 +3932,7 @@ .mixers = { alc260_base_output_mixer, alc260_input_mixer, alc260_capture_alt_mixer }, - .init_verbs = { alc260_hp_init_verbs }, + .init_verbs = { alc260_init_verbs }, .num_dacs = ARRAY_SIZE(alc260_dac_nids), .dac_nids = alc260_dac_nids, .num_adc_nids = ARRAY_SIZE(alc260_hp_adc_nids), @@ -3940,7 +4010,8 @@ board_config = snd_hda_check_board_config(codec, alc260_cfg_tbl); if (board_config < 0 || board_config >= ALC260_MODEL_LAST) { - snd_printd(KERN_INFO "hda_codec: Unknown model for ALC260\n"); + snd_printd(KERN_INFO "hda_codec: Unknown model for ALC260, " + "trying auto-probe from BIOS...\n"); board_config = ALC260_AUTO; } @@ -3951,7 +4022,9 @@ alc_free(codec); return err; } else if (! err) { - printk(KERN_INFO "hda_codec: Cannot set up configuration from BIOS. Using base mode...\n"); + printk(KERN_INFO + "hda_codec: Cannot set up configuration " + "from BIOS. Using base mode...\n"); board_config = ALC260_BASIC; } } @@ -4094,21 +4167,6 @@ HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT), HDA_CODEC_VOLUME("PC Speaker Playback Volume", 0x0b, 0x05, HDA_INPUT), HDA_CODEC_MUTE("PC Speaker Playback Switch", 0x0b, 0x05, HDA_INPUT), - HDA_CODEC_VOLUME("Capture Volume", 0x07, 0x0, HDA_INPUT), - HDA_CODEC_MUTE("Capture Switch", 0x07, 0x0, HDA_INPUT), - HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x08, 0x0, HDA_INPUT), - HDA_CODEC_MUTE_IDX("Capture Switch", 1, 0x08, 0x0, HDA_INPUT), - HDA_CODEC_VOLUME_IDX("Capture Volume", 2, 0x09, 0x0, HDA_INPUT), - HDA_CODEC_MUTE_IDX("Capture Switch", 2, 0x09, 0x0, HDA_INPUT), - { - .iface = SNDRV_CTL_ELEM_IFACE_MIXER, - /* .name = "Capture Source", */ - .name = "Input Source", - .count = 3, - .info = alc882_mux_enum_info, - .get = alc882_mux_enum_get, - .put = alc882_mux_enum_put, - }, { } /* end */ }; @@ -4203,6 +4261,13 @@ { } }; +static struct hda_verb alc882_eapd_verbs[] = { + /* change to EAPD mode */ + {0x20, AC_VERB_SET_COEF_INDEX, 0x07}, + {0x20, AC_VERB_SET_PROC_COEF, 0x3060}, + { } +}; + /* * generic initialization of ADC, input mixers and output mixers */ @@ -4328,9 +4393,15 @@ static struct hda_board_config alc882_cfg_tbl[] = { { .modelname = "3stack-dig", .config = ALC882_3ST_DIG }, { .modelname = "6stack-dig", .config = ALC882_6ST_DIG }, - { .pci_subvendor = 0x1462, .pci_subdevice = 0x6668, .config = ALC882_6ST_DIG }, /* MSI */ - { .pci_subvendor = 0x105b, .pci_subdevice = 0x6668, .config = ALC882_6ST_DIG }, /* Foxconn */ - { .pci_subvendor = 0x1019, .pci_subdevice = 0x6668, .config = ALC882_6ST_DIG }, /* ECS */ + { .pci_subvendor = 0x1462, .pci_subdevice = 0x6668, + .config = ALC882_6ST_DIG }, /* MSI */ + { .pci_subvendor = 0x105b, .pci_subdevice = 0x6668, + .config = ALC882_6ST_DIG }, /* Foxconn */ + { .pci_subvendor = 0x1019, .pci_subdevice = 0x6668, + .config = ALC882_6ST_DIG }, /* ECS to Intel*/ + { .modelname = "arima", .config = ALC882_ARIMA }, + { .pci_subvendor = 0x161f, .pci_subdevice = 0x2054, + .config = ALC882_ARIMA }, /* Arima W820Di1 */ { .modelname = "auto", .config = ALC882_AUTO }, {} }; @@ -4342,11 +4413,10 @@ .num_dacs = ARRAY_SIZE(alc882_dac_nids), .dac_nids = alc882_dac_nids, .dig_out_nid = ALC882_DIGOUT_NID, - .num_adc_nids = ARRAY_SIZE(alc882_adc_nids), - .adc_nids = alc882_adc_nids, .dig_in_nid = ALC882_DIGIN_NID, .num_channel_mode = ARRAY_SIZE(alc882_ch_modes), .channel_mode = alc882_ch_modes, + .need_dac_fix = 1, .input_mux = &alc882_capture_source, }, [ALC882_6ST_DIG] = { @@ -4355,13 +4425,20 @@ .num_dacs = ARRAY_SIZE(alc882_dac_nids), .dac_nids = alc882_dac_nids, .dig_out_nid = ALC882_DIGOUT_NID, - .num_adc_nids = ARRAY_SIZE(alc882_adc_nids), - .adc_nids = alc882_adc_nids, .dig_in_nid = ALC882_DIGIN_NID, .num_channel_mode = ARRAY_SIZE(alc882_sixstack_modes), .channel_mode = alc882_sixstack_modes, .input_mux = &alc882_capture_source, }, + [ALC882_ARIMA] = { + .mixers = { alc882_base_mixer, alc882_chmode_mixer }, + .init_verbs = { alc882_init_verbs, alc882_eapd_verbs }, + .num_dacs = ARRAY_SIZE(alc882_dac_nids), + .dac_nids = alc882_dac_nids, + .num_channel_mode = ARRAY_SIZE(alc882_sixstack_modes), + .channel_mode = alc882_sixstack_modes, + .input_mux = &alc882_capture_source, + }, }; @@ -4451,10 +4528,6 @@ alc882_auto_init_analog_input(codec); } -/* - * ALC882 Headphone poll in 3.5.1a or 3.5.2 - */ - static int patch_alc882(struct hda_codec *codec) { struct alc_spec *spec; @@ -4469,7 +4542,8 @@ board_config = snd_hda_check_board_config(codec, alc882_cfg_tbl); if (board_config < 0 || board_config >= ALC882_MODEL_LAST) { - printk(KERN_INFO "hda_codec: Unknown model for ALC882, trying auto-probe from BIOS...\n"); + printk(KERN_INFO "hda_codec: Unknown model for ALC882, " + "trying auto-probe from BIOS...\n"); board_config = ALC882_AUTO; } @@ -4480,7 +4554,9 @@ alc_free(codec); return err; } else if (! err) { - printk(KERN_INFO "hda_codec: Cannot set up configuration from BIOS. Using base mode...\n"); + printk(KERN_INFO + "hda_codec: Cannot set up configuration " + "from BIOS. Using base mode...\n"); board_config = ALC882_3ST_DIG; } } @@ -4521,160 +4597,845 @@ } /* - * ALC262 support + * ALC883 support + * + * ALC883 is almost identical with ALC880 but has cleaner and more flexible + * configuration. Each pin widget can choose any input DACs and a mixer. + * Each ADC is connected from a mixer of all inputs. This makes possible + * 6-channel independent captures. + * + * In addition, an independent DAC for the multi-playback (not used in this + * driver yet). */ +#define ALC883_DIGOUT_NID 0x06 +#define ALC883_DIGIN_NID 0x0a -#define ALC262_DIGOUT_NID ALC880_DIGOUT_NID -#define ALC262_DIGIN_NID ALC880_DIGIN_NID - -#define alc262_dac_nids alc260_dac_nids -#define alc262_adc_nids alc882_adc_nids -#define alc262_adc_nids_alt alc882_adc_nids_alt +static hda_nid_t alc883_dac_nids[4] = { + /* front, rear, clfe, rear_surr */ + 0x02, 0x04, 0x03, 0x05 +}; -#define alc262_modes alc260_modes -#define alc262_capture_source alc882_capture_source +static hda_nid_t alc883_adc_nids[2] = { + /* ADC1-2 */ + 0x08, 0x09, +}; +/* input MUX */ +/* FIXME: should be a matrix-type input source selection */ -static snd_kcontrol_new_t alc262_base_mixer[] = { - HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), - HDA_CODEC_MUTE("Front Playback Switch", 0x14, 0x0, HDA_OUTPUT), - HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT), - HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT), - HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT), - HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT), - HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT), - HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT), - HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x01, HDA_INPUT), - HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x01, HDA_INPUT), - /* HDA_CODEC_VOLUME("PC Beep Playback Volume", 0x0b, 0x05, HDA_INPUT), - HDA_CODEC_MUTE("PC Beelp Playback Switch", 0x0b, 0x05, HDA_INPUT), */ - HDA_CODEC_VOLUME("Headphone Playback Volume", 0x0D, 0x0, HDA_OUTPUT), - HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT), - HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x0e, 2, 0x0, HDA_OUTPUT), - HDA_CODEC_MUTE_MONO("Mono Playback Switch", 0x16, 2, 0x0, HDA_OUTPUT), - { } /* end */ +static struct hda_input_mux alc883_capture_source = { + .num_items = 4, + .items = { + { "Mic", 0x0 }, + { "Front Mic", 0x1 }, + { "Line", 0x2 }, + { "CD", 0x4 }, + }, }; +#define alc883_mux_enum_info alc_mux_enum_info +#define alc883_mux_enum_get alc_mux_enum_get -#define alc262_capture_mixer alc882_capture_mixer -#define alc262_capture_alt_mixer alc882_capture_alt_mixer +static int alc883_mux_enum_put(snd_kcontrol_t *kcontrol, + snd_ctl_elem_value_t *ucontrol) +{ + struct hda_codec *codec = snd_kcontrol_chip(kcontrol); + struct alc_spec *spec = codec->spec; + const struct hda_input_mux *imux = spec->input_mux; + unsigned int adc_idx = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id); + static hda_nid_t capture_mixers[3] = { 0x24, 0x23, 0x22 }; + hda_nid_t nid = capture_mixers[adc_idx]; + unsigned int *cur_val = &spec->cur_mux[adc_idx]; + unsigned int i, idx; + idx = ucontrol->value.enumerated.item[0]; + if (idx >= imux->num_items) + idx = imux->num_items - 1; + if (*cur_val == idx && ! codec->in_resume) + return 0; + for (i = 0; i < imux->num_items; i++) { + unsigned int v = (i == idx) ? 0x7000 : 0x7080; + snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_AMP_GAIN_MUTE, + v | (imux->items[i].index << 8)); + } + *cur_val = idx; + return 1; +} /* - * generic initialization of ADC, input mixers and output mixers + * 2ch mode */ -static struct hda_verb alc262_init_verbs[] = { - /* - * Unmute ADC0-2 and set the default input to mic-in - */ - {0x07, AC_VERB_SET_CONNECT_SEL, 0x00}, - {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, - {0x08, AC_VERB_SET_CONNECT_SEL, 0x00}, - {0x08, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, - {0x09, AC_VERB_SET_CONNECT_SEL, 0x00}, - {0x09, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, - - /* Unmute input amps (CD, Line In, Mic 1 & Mic 2) of the analog-loopback - * mixer widget - * Note: PASD motherboards uses the Line In 2 as the input for front panel - * mic (mic 2) - */ - /* Amp Indices: Mic1 = 0, Mic2 = 1, Line1 = 2, Line2 = 3, CD = 4 */ - {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, - {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, - {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, - {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(3)}, - {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(4)}, - - /* - * Set up output mixers (0x0c - 0x0e) - */ - /* set vol=0 to output mixers */ - {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, - {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, - {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, - /* set up input amps for analog loopback */ - /* Amp Indices: DAC = 0, mixer = 1 */ - {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, - {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, - {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, - {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, - {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, - {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, +static struct hda_channel_mode alc883_3ST_2ch_modes[1] = { + { 2, NULL } +}; - {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40}, - {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, 0xc0}, - {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40}, - {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24}, - {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20}, - {0x1c, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20}, +/* + * 2ch mode + */ +static struct hda_verb alc883_3ST_ch2_init[] = { + { 0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80 }, + { 0x18, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE }, + { 0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN }, + { 0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE }, + { } /* end */ +}; - {0x14, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000}, - {0x15, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000}, - {0x16, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000}, - {0x18, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000}, - {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000}, - - {0x14, AC_VERB_SET_CONNECT_SEL, 0x00}, - {0x15, AC_VERB_SET_CONNECT_SEL, 0x01}, - - /* FIXME: use matrix-type input source selection */ - /* Mixer elements: 0x18, 19, 1a, 1b, 1c, 1d, 14, 15, 16, 17, 0b */ - /* Input mixer1: unmute Mic, F-Mic, Line, CD inputs */ - {0x24, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x00 << 8))}, - {0x24, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x03 << 8))}, - {0x24, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x02 << 8))}, - {0x24, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x04 << 8))}, - /* Input mixer2 */ - {0x23, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x00 << 8))}, - {0x23, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x03 << 8))}, - {0x23, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x02 << 8))}, - {0x23, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x04 << 8))}, - /* Input mixer3 */ - {0x22, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x00 << 8))}, - {0x22, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x03 << 8))}, - {0x22, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x02 << 8))}, - {0x22, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x04 << 8))}, +/* + * 6ch mode + */ +static struct hda_verb alc883_3ST_ch6_init[] = { + { 0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, + { 0x18, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE }, + { 0x18, AC_VERB_SET_CONNECT_SEL, 0x02 }, + { 0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, + { 0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE }, + { 0x1a, AC_VERB_SET_CONNECT_SEL, 0x01 }, + { } /* end */ +}; - { } +static struct hda_channel_mode alc883_3ST_6ch_modes[2] = { + { 2, alc883_3ST_ch2_init }, + { 6, alc883_3ST_ch6_init }, }; /* - * fujitsu model - * 0x14 = headphone/spdif-out, 0x15 = internal speaker + * 6ch mode */ +static struct hda_verb alc883_sixstack_ch6_init[] = { + { 0x17, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x00 }, + { 0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, + { 0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, + { 0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, + { } /* end */ +}; -#define ALC_HP_EVENT 0x37 - -static struct hda_verb alc262_fujitsu_unsol_verbs[] = { - {0x14, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC_HP_EVENT}, - {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, - {} +/* + * 8ch mode + */ +static struct hda_verb alc883_sixstack_ch8_init[] = { + { 0x17, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, + { 0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, + { 0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, + { 0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, + { } /* end */ }; -static struct hda_input_mux alc262_fujitsu_capture_source = { - .num_items = 2, - .items = { - { "Mic", 0x0 }, - { "CD", 0x4 }, - }, +static struct hda_channel_mode alc883_sixstack_modes[2] = { + { 6, alc883_sixstack_ch6_init }, + { 8, alc883_sixstack_ch8_init }, }; -/* mute/unmute internal speaker according to the hp jack and mute state */ -static void alc262_fujitsu_automute(struct hda_codec *codec, int force) -{ - struct alc_spec *spec = codec->spec; - unsigned int mute; +/* Pin assignment: Front=0x14, Rear=0x15, CLFE=0x16, Side=0x17 + * Mic=0x18, Front Mic=0x19, Line-In=0x1a, HP=0x1b + */ - if (force || ! spec->sense_updated) { - unsigned int present; - /* need to execute and sync at first */ - snd_hda_codec_read(codec, 0x14, 0, AC_VERB_SET_PIN_SENSE, 0); - present = snd_hda_codec_read(codec, 0x14, 0, - AC_VERB_GET_PIN_SENSE, 0); - spec->jack_present = (present & 0x80000000) != 0; - spec->sense_updated = 1; - } - if (spec->jack_present) { - /* mute internal speaker */ - snd_hda_codec_amp_update(codec, 0x15, 0, HDA_OUTPUT, 0, +static snd_kcontrol_new_t alc883_base_mixer[] = { + HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), + HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), + HDA_CODEC_VOLUME("Surround Playback Volume", 0x0d, 0x0, HDA_OUTPUT), + HDA_BIND_MUTE("Surround Playback Switch", 0x0d, 2, HDA_INPUT), + HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x0e, 1, 0x0, HDA_OUTPUT), + HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x0e, 2, 0x0, HDA_OUTPUT), + HDA_BIND_MUTE_MONO("Center Playback Switch", 0x0e, 1, 2, HDA_INPUT), + HDA_BIND_MUTE_MONO("LFE Playback Switch", 0x0e, 2, 2, HDA_INPUT), + HDA_CODEC_VOLUME("Side Playback Volume", 0x0f, 0x0, HDA_OUTPUT), + HDA_BIND_MUTE("Side Playback Switch", 0x0f, 2, HDA_INPUT), + HDA_CODEC_MUTE("Headphone Playback Switch", 0x1b, 0x0, HDA_OUTPUT), + HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT), + HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT), + HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT), + HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT), + HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT), + HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT), + HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x1, HDA_INPUT), + HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT), + HDA_CODEC_VOLUME("PC Speaker Playback Volume", 0x0b, 0x05, HDA_INPUT), + HDA_CODEC_MUTE("PC Speaker Playback Switch", 0x0b, 0x05, HDA_INPUT), + HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT), + HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT), + HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x09, 0x0, HDA_INPUT), + HDA_CODEC_MUTE_IDX("Capture Switch", 1, 0x09, 0x0, HDA_INPUT), + { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + /* .name = "Capture Source", */ + .name = "Input Source", + .count = 2, + .info = alc883_mux_enum_info, + .get = alc883_mux_enum_get, + .put = alc883_mux_enum_put, + }, + { } /* end */ +}; + +static snd_kcontrol_new_t alc883_3ST_2ch_mixer[] = { + HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), + HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), + HDA_CODEC_MUTE("Headphone Playback Switch", 0x1b, 0x0, HDA_OUTPUT), + HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT), + HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT), + HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT), + HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT), + HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT), + HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT), + HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x1, HDA_INPUT), + HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT), + HDA_CODEC_VOLUME("PC Speaker Playback Volume", 0x0b, 0x05, HDA_INPUT), + HDA_CODEC_MUTE("PC Speaker Playback Switch", 0x0b, 0x05, HDA_INPUT), + HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT), + HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT), + HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x09, 0x0, HDA_INPUT), + HDA_CODEC_MUTE_IDX("Capture Switch", 1, 0x09, 0x0, HDA_INPUT), + { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + /* .name = "Capture Source", */ + .name = "Input Source", + .count = 2, + .info = alc883_mux_enum_info, + .get = alc883_mux_enum_get, + .put = alc883_mux_enum_put, + }, + { } /* end */ +}; + +static snd_kcontrol_new_t alc883_3ST_6ch_mixer[] = { + HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), + HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), + HDA_CODEC_VOLUME("Surround Playback Volume", 0x0d, 0x0, HDA_OUTPUT), + HDA_BIND_MUTE("Surround Playback Switch", 0x0d, 2, HDA_INPUT), + HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x0e, 1, 0x0, HDA_OUTPUT), + HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x0e, 2, 0x0, HDA_OUTPUT), + HDA_BIND_MUTE_MONO("Center Playback Switch", 0x0e, 1, 2, HDA_INPUT), + HDA_BIND_MUTE_MONO("LFE Playback Switch", 0x0e, 2, 2, HDA_INPUT), + HDA_CODEC_MUTE("Headphone Playback Switch", 0x1b, 0x0, HDA_OUTPUT), + HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT), + HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT), + HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT), + HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT), + HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT), + HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT), + HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x1, HDA_INPUT), + HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x1, HDA_INPUT), + HDA_CODEC_VOLUME("PC Speaker Playback Volume", 0x0b, 0x05, HDA_INPUT), + HDA_CODEC_MUTE("PC Speaker Playback Switch", 0x0b, 0x05, HDA_INPUT), + HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT), + HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT), + HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x09, 0x0, HDA_INPUT), + HDA_CODEC_MUTE_IDX("Capture Switch", 1, 0x09, 0x0, HDA_INPUT), + { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + /* .name = "Capture Source", */ + .name = "Input Source", + .count = 2, + .info = alc883_mux_enum_info, + .get = alc883_mux_enum_get, + .put = alc883_mux_enum_put, + }, + { } /* end */ +}; + +static snd_kcontrol_new_t alc883_chmode_mixer[] = { + { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "Channel Mode", + .info = alc_ch_mode_info, + .get = alc_ch_mode_get, + .put = alc_ch_mode_put, + }, + { } /* end */ +}; + +static struct hda_verb alc883_init_verbs[] = { + /* ADC1: mute amp left and right */ + {0x08, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, + {0x08, AC_VERB_SET_CONNECT_SEL, 0x00}, + /* ADC2: mute amp left and right */ + {0x09, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, + {0x09, AC_VERB_SET_CONNECT_SEL, 0x00}, + /* Front mixer: unmute input/output amp left and right (volume = 0) */ + {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, + {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, + {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, + /* Rear mixer */ + {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, + {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, + {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, + /* CLFE mixer */ + {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, + {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, + {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, + /* Side mixer */ + {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, + {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, + {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, + + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(3)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(4)}, + + /* Front Pin: output 0 (0x0c) */ + {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, + {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, + {0x14, AC_VERB_SET_CONNECT_SEL, 0x00}, + /* Rear Pin: output 1 (0x0d) */ + {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, + {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, + {0x15, AC_VERB_SET_CONNECT_SEL, 0x01}, + /* CLFE Pin: output 2 (0x0e) */ + {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, + {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, + {0x16, AC_VERB_SET_CONNECT_SEL, 0x02}, + /* Side Pin: output 3 (0x0f) */ + {0x17, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, + {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, + {0x17, AC_VERB_SET_CONNECT_SEL, 0x03}, + /* Mic (rear) pin: input vref at 80% */ + {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, + {0x18, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, + /* Front Mic pin: input vref at 80% */ + {0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, + {0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, + /* Line In pin: input */ + {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, + {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, + /* Line-2 In: Headphone output (output 0 - 0x0c) */ + {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, + {0x1b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, + {0x1b, AC_VERB_SET_CONNECT_SEL, 0x00}, + /* CD pin widget for input */ + {0x1c, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, + + /* FIXME: use matrix-type input source selection */ + /* Mixer elements: 0x18, 19, 1a, 1b, 1c, 1d, 14, 15, 16, 17, 0b */ + /* Input mixer2 */ + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(4)}, + /* Input mixer3 */ + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(4)}, + { } +}; + +/* + * generic initialization of ADC, input mixers and output mixers + */ +static struct hda_verb alc883_auto_init_verbs[] = { + /* + * Unmute ADC0-2 and set the default input to mic-in + */ + {0x08, AC_VERB_SET_CONNECT_SEL, 0x00}, + {0x08, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x09, AC_VERB_SET_CONNECT_SEL, 0x00}, + {0x09, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + + /* Unmute input amps (CD, Line In, Mic 1 & Mic 2) of the analog-loopback + * mixer widget + * Note: PASD motherboards uses the Line In 2 as the input for front panel + * mic (mic 2) + */ + /* Amp Indices: Mic1 = 0, Mic2 = 1, Line1 = 2, Line2 = 3, CD = 4 */ + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(3)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(4)}, + + /* + * Set up output mixers (0x0c - 0x0f) + */ + /* set vol=0 to output mixers */ + {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, + {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, + {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, + {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, + /* set up input amps for analog loopback */ + /* Amp Indices: DAC = 0, mixer = 1 */ + {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x26, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x26, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + + /* FIXME: use matrix-type input source selection */ + /* Mixer elements: 0x18, 19, 1a, 1b, 1c, 1d, 14, 15, 16, 17, 0b */ + /* Input mixer1 */ + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, + //{0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(3)}, + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(4)}, + /* Input mixer2 */ + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, + //{0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(3)}, + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(4)}, + + { } +}; + +/* capture mixer elements */ +static snd_kcontrol_new_t alc883_capture_mixer[] = { + HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT), + HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT), + HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x09, 0x0, HDA_INPUT), + HDA_CODEC_MUTE_IDX("Capture Switch", 1, 0x09, 0x0, HDA_INPUT), + { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + /* The multiple "Capture Source" controls confuse alsamixer + * So call somewhat different.. + * FIXME: the controls appear in the "playback" view! + */ + /* .name = "Capture Source", */ + .name = "Input Source", + .count = 2, + .info = alc882_mux_enum_info, + .get = alc882_mux_enum_get, + .put = alc882_mux_enum_put, + }, + { } /* end */ +}; + +/* pcm configuration: identiacal with ALC880 */ +#define alc883_pcm_analog_playback alc880_pcm_analog_playback +#define alc883_pcm_analog_capture alc880_pcm_analog_capture +#define alc883_pcm_digital_playback alc880_pcm_digital_playback +#define alc883_pcm_digital_capture alc880_pcm_digital_capture + +/* + * configuration and preset + */ +static struct hda_board_config alc883_cfg_tbl[] = { + { .modelname = "3stack-dig", .config = ALC883_3ST_2ch_DIG }, + { .modelname = "3stack-6ch-dig", .config = ALC883_3ST_6ch_DIG }, + { .pci_subvendor = 0x1019, .pci_subdevice = 0x6668, + .config = ALC883_3ST_6ch_DIG }, /* ECS to Intel*/ + { .modelname = "3stack-6ch", .config = ALC883_3ST_6ch }, + { .pci_subvendor = 0x108e, .pci_subdevice = 0x534d, + .config = ALC883_3ST_6ch }, + { .modelname = "6stack-dig", .config = ALC883_6ST_DIG }, + { .pci_subvendor = 0x1462, .pci_subdevice = 0x6668, + .config = ALC883_6ST_DIG }, /* MSI */ + { .pci_subvendor = 0x105b, .pci_subdevice = 0x6668, + .config = ALC883_6ST_DIG }, /* Foxconn */ + { .modelname = "6stack-dig-demo", .config = ALC888_DEMO_BOARD }, + { .modelname = "auto", .config = ALC883_AUTO }, + {} +}; + +static struct alc_config_preset alc883_presets[] = { + [ALC883_3ST_2ch_DIG] = { + .mixers = { alc883_3ST_2ch_mixer }, + .init_verbs = { alc883_init_verbs }, + .num_dacs = ARRAY_SIZE(alc883_dac_nids), + .dac_nids = alc883_dac_nids, + .dig_out_nid = ALC883_DIGOUT_NID, + .num_adc_nids = ARRAY_SIZE(alc883_adc_nids), + .adc_nids = alc883_adc_nids, + .dig_in_nid = ALC883_DIGIN_NID, + .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes), + .channel_mode = alc883_3ST_2ch_modes, + .input_mux = &alc883_capture_source, + }, + [ALC883_3ST_6ch_DIG] = { + .mixers = { alc883_3ST_6ch_mixer, alc883_chmode_mixer }, + .init_verbs = { alc883_init_verbs }, + .num_dacs = ARRAY_SIZE(alc883_dac_nids), + .dac_nids = alc883_dac_nids, + .dig_out_nid = ALC883_DIGOUT_NID, + .num_adc_nids = ARRAY_SIZE(alc883_adc_nids), + .adc_nids = alc883_adc_nids, + .dig_in_nid = ALC883_DIGIN_NID, + .num_channel_mode = ARRAY_SIZE(alc883_3ST_6ch_modes), + .channel_mode = alc883_3ST_6ch_modes, + .need_dac_fix = 1, + .input_mux = &alc883_capture_source, + }, + [ALC883_3ST_6ch] = { + .mixers = { alc883_3ST_6ch_mixer, alc883_chmode_mixer }, + .init_verbs = { alc883_init_verbs }, + .num_dacs = ARRAY_SIZE(alc883_dac_nids), + .dac_nids = alc883_dac_nids, + .num_adc_nids = ARRAY_SIZE(alc883_adc_nids), + .adc_nids = alc883_adc_nids, + .num_channel_mode = ARRAY_SIZE(alc883_3ST_6ch_modes), + .channel_mode = alc883_3ST_6ch_modes, + .need_dac_fix = 1, + .input_mux = &alc883_capture_source, + }, + [ALC883_6ST_DIG] = { + .mixers = { alc883_base_mixer, alc883_chmode_mixer }, + .init_verbs = { alc883_init_verbs }, + .num_dacs = ARRAY_SIZE(alc883_dac_nids), + .dac_nids = alc883_dac_nids, + .dig_out_nid = ALC883_DIGOUT_NID, + .num_adc_nids = ARRAY_SIZE(alc883_adc_nids), + .adc_nids = alc883_adc_nids, + .dig_in_nid = ALC883_DIGIN_NID, + .num_channel_mode = ARRAY_SIZE(alc883_sixstack_modes), + .channel_mode = alc883_sixstack_modes, + .input_mux = &alc883_capture_source, + }, + [ALC888_DEMO_BOARD] = { + .mixers = { alc883_base_mixer, alc883_chmode_mixer }, + .init_verbs = { alc883_init_verbs }, + .num_dacs = ARRAY_SIZE(alc883_dac_nids), + .dac_nids = alc883_dac_nids, + .dig_out_nid = ALC883_DIGOUT_NID, + .num_adc_nids = ARRAY_SIZE(alc883_adc_nids), + .adc_nids = alc883_adc_nids, + .dig_in_nid = ALC883_DIGIN_NID, + .num_channel_mode = ARRAY_SIZE(alc883_sixstack_modes), + .channel_mode = alc883_sixstack_modes, + .input_mux = &alc883_capture_source, + }, +}; + + +/* + * BIOS auto configuration + */ +static void alc883_auto_set_output_and_unmute(struct hda_codec *codec, + hda_nid_t nid, int pin_type, + int dac_idx) +{ + /* set as output */ + struct alc_spec *spec = codec->spec; + int idx; + + if (spec->multiout.dac_nids[dac_idx] == 0x25) + idx = 4; + else + idx = spec->multiout.dac_nids[dac_idx] - 2; + + snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, + pin_type); + snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_AMP_GAIN_MUTE, + AMP_OUT_UNMUTE); + snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_CONNECT_SEL, idx); + +} + +static void alc883_auto_init_multi_out(struct hda_codec *codec) +{ + struct alc_spec *spec = codec->spec; + int i; + + for (i = 0; i <= HDA_SIDE; i++) { + hda_nid_t nid = spec->autocfg.line_out_pins[i]; + if (nid) + alc883_auto_set_output_and_unmute(codec, nid, PIN_OUT, i); + } +} + +static void alc883_auto_init_hp_out(struct hda_codec *codec) +{ + struct alc_spec *spec = codec->spec; + hda_nid_t pin; + + pin = spec->autocfg.hp_pin; + if (pin) /* connect to front */ + /* use dac 0 */ + alc883_auto_set_output_and_unmute(codec, pin, PIN_HP, 0); +} + +#define alc883_is_input_pin(nid) alc880_is_input_pin(nid) +#define ALC883_PIN_CD_NID ALC880_PIN_CD_NID + +static void alc883_auto_init_analog_input(struct hda_codec *codec) +{ + struct alc_spec *spec = codec->spec; + int i; + + for (i = 0; i < AUTO_PIN_LAST; i++) { + hda_nid_t nid = spec->autocfg.input_pins[i]; + if (alc883_is_input_pin(nid)) { + snd_hda_codec_write(codec, nid, 0, + AC_VERB_SET_PIN_WIDGET_CONTROL, + (i <= AUTO_PIN_FRONT_MIC ? + PIN_VREF80 : PIN_IN)); + if (nid != ALC883_PIN_CD_NID) + snd_hda_codec_write(codec, nid, 0, + AC_VERB_SET_AMP_GAIN_MUTE, + AMP_OUT_MUTE); + } + } +} + +/* almost identical with ALC880 parser... */ +static int alc883_parse_auto_config(struct hda_codec *codec) +{ + struct alc_spec *spec = codec->spec; + int err = alc880_parse_auto_config(codec); + + if (err < 0) + return err; + else if (err > 0) + /* hack - override the init verbs */ + spec->init_verbs[0] = alc883_auto_init_verbs; + spec->mixers[spec->num_mixers] = alc883_capture_mixer; + spec->num_mixers++; + return err; +} + +/* additional initialization for auto-configuration model */ +static void alc883_auto_init(struct hda_codec *codec) +{ + alc883_auto_init_multi_out(codec); + alc883_auto_init_hp_out(codec); + alc883_auto_init_analog_input(codec); +} + +static int patch_alc883(struct hda_codec *codec) +{ + struct alc_spec *spec; + int err, board_config; + + spec = kzalloc(sizeof(*spec), GFP_KERNEL); + if (spec == NULL) + return -ENOMEM; + + codec->spec = spec; + + board_config = snd_hda_check_board_config(codec, alc883_cfg_tbl); + if (board_config < 0 || board_config >= ALC883_MODEL_LAST) { + printk(KERN_INFO "hda_codec: Unknown model for ALC883, " + "trying auto-probe from BIOS...\n"); + board_config = ALC883_AUTO; + } + + if (board_config == ALC883_AUTO) { + /* automatic parse from the BIOS config */ + err = alc883_parse_auto_config(codec); + if (err < 0) { + alc_free(codec); + return err; + } else if (! err) { + printk(KERN_INFO + "hda_codec: Cannot set up configuration " + "from BIOS. Using base mode...\n"); + board_config = ALC883_3ST_2ch_DIG; + } + } + + if (board_config != ALC883_AUTO) + setup_preset(spec, &alc883_presets[board_config]); + + spec->stream_name_analog = "ALC883 Analog"; + spec->stream_analog_playback = &alc883_pcm_analog_playback; + spec->stream_analog_capture = &alc883_pcm_analog_capture; + + spec->stream_name_digital = "ALC883 Digital"; + spec->stream_digital_playback = &alc883_pcm_digital_playback; + spec->stream_digital_capture = &alc883_pcm_digital_capture; + + if (! spec->adc_nids && spec->input_mux) { + spec->adc_nids = alc883_adc_nids; + spec->num_adc_nids = ARRAY_SIZE(alc883_adc_nids); + } + + codec->patch_ops = alc_patch_ops; + if (board_config == ALC883_AUTO) + spec->init_hook = alc883_auto_init; + + return 0; +} + +/* + * ALC262 support + */ + +#define ALC262_DIGOUT_NID ALC880_DIGOUT_NID +#define ALC262_DIGIN_NID ALC880_DIGIN_NID + +#define alc262_dac_nids alc260_dac_nids +#define alc262_adc_nids alc882_adc_nids +#define alc262_adc_nids_alt alc882_adc_nids_alt + +#define alc262_modes alc260_modes +#define alc262_capture_source alc882_capture_source + +static snd_kcontrol_new_t alc262_base_mixer[] = { + HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), + HDA_CODEC_MUTE("Front Playback Switch", 0x14, 0x0, HDA_OUTPUT), + HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT), + HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT), + HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT), + HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT), + HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT), + HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT), + HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x01, HDA_INPUT), + HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x01, HDA_INPUT), + /* HDA_CODEC_VOLUME("PC Beep Playback Volume", 0x0b, 0x05, HDA_INPUT), + HDA_CODEC_MUTE("PC Beelp Playback Switch", 0x0b, 0x05, HDA_INPUT), */ + HDA_CODEC_VOLUME("Headphone Playback Volume", 0x0D, 0x0, HDA_OUTPUT), + HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT), + HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x0e, 2, 0x0, HDA_OUTPUT), + HDA_CODEC_MUTE_MONO("Mono Playback Switch", 0x16, 2, 0x0, HDA_OUTPUT), + { } /* end */ +}; + +static snd_kcontrol_new_t alc262_HP_BPC_mixer[] = { + HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), + HDA_CODEC_MUTE("Front Playback Switch", 0x15, 0x0, HDA_OUTPUT), + HDA_CODEC_MUTE("Headphone Playback Switch", 0x1b, 0x0, HDA_OUTPUT), + HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x0e, 2, 0x0, HDA_OUTPUT), + HDA_CODEC_MUTE_MONO("Mono Playback Switch", 0x16, 2, 0x0, HDA_OUTPUT), + + HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT), + HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT), + HDA_CODEC_VOLUME("Front Mic Playback Volume", 0x0b, 0x01, HDA_INPUT), + HDA_CODEC_MUTE("Front Mic Playback Switch", 0x0b, 0x01, HDA_INPUT), + HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT), + HDA_CODEC_MUTE("Line Playback Switch", 0x0b, 0x02, HDA_INPUT), + HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT), + HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT), + HDA_CODEC_VOLUME("PC Beep Playback Volume", 0x0b, 0x05, HDA_INPUT), + HDA_CODEC_MUTE("PC Beep Playback Switch", 0x0b, 0x05, HDA_INPUT), + HDA_CODEC_VOLUME("AUX IN Playback Volume", 0x0b, 0x06, HDA_INPUT), + HDA_CODEC_MUTE("AUX IN Playback Switch", 0x0b, 0x06, HDA_INPUT), + { } /* end */ +}; + +#define alc262_capture_mixer alc882_capture_mixer +#define alc262_capture_alt_mixer alc882_capture_alt_mixer + +/* + * generic initialization of ADC, input mixers and output mixers + */ +static struct hda_verb alc262_init_verbs[] = { + /* + * Unmute ADC0-2 and set the default input to mic-in + */ + {0x07, AC_VERB_SET_CONNECT_SEL, 0x00}, + {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x08, AC_VERB_SET_CONNECT_SEL, 0x00}, + {0x08, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x09, AC_VERB_SET_CONNECT_SEL, 0x00}, + {0x09, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + + /* Unmute input amps (CD, Line In, Mic 1 & Mic 2) of the analog-loopback + * mixer widget + * Note: PASD motherboards uses the Line In 2 as the input for front panel + * mic (mic 2) + */ + /* Amp Indices: Mic1 = 0, Mic2 = 1, Line1 = 2, Line2 = 3, CD = 4 */ + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(3)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(4)}, + + /* + * Set up output mixers (0x0c - 0x0e) + */ + /* set vol=0 to output mixers */ + {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, + {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, + {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, + /* set up input amps for analog loopback */ + /* Amp Indices: DAC = 0, mixer = 1 */ + {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + + {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40}, + {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, 0xc0}, + {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40}, + {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24}, + {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20}, + {0x1c, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20}, + + {0x14, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000}, + {0x15, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000}, + {0x16, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000}, + {0x18, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000}, + {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, 0x0000}, + + {0x14, AC_VERB_SET_CONNECT_SEL, 0x00}, + {0x15, AC_VERB_SET_CONNECT_SEL, 0x01}, + + /* FIXME: use matrix-type input source selection */ + /* Mixer elements: 0x18, 19, 1a, 1b, 1c, 1d, 14, 15, 16, 17, 0b */ + /* Input mixer1: unmute Mic, F-Mic, Line, CD inputs */ + {0x24, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x00 << 8))}, + {0x24, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x03 << 8))}, + {0x24, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x02 << 8))}, + {0x24, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x04 << 8))}, + /* Input mixer2 */ + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x00 << 8))}, + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x03 << 8))}, + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x02 << 8))}, + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x04 << 8))}, + /* Input mixer3 */ + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x00 << 8))}, + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x03 << 8))}, + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x02 << 8))}, + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x04 << 8))}, + + { } +}; + +/* + * fujitsu model + * 0x14 = headphone/spdif-out, 0x15 = internal speaker + */ + +#define ALC_HP_EVENT 0x37 + +static struct hda_verb alc262_fujitsu_unsol_verbs[] = { + {0x14, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC_HP_EVENT}, + {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, + {} +}; + +static struct hda_input_mux alc262_fujitsu_capture_source = { + .num_items = 2, + .items = { + { "Mic", 0x0 }, + { "CD", 0x4 }, + }, +}; + +static struct hda_input_mux alc262_HP_capture_source = { + .num_items = 5, + .items = { + { "Mic", 0x0 }, + { "Front Mic", 0x3 }, + { "Line", 0x2 }, + { "CD", 0x4 }, + { "AUX IN", 0x6 }, + }, +}; + +/* mute/unmute internal speaker according to the hp jack and mute state */ +static void alc262_fujitsu_automute(struct hda_codec *codec, int force) +{ + struct alc_spec *spec = codec->spec; + unsigned int mute; + + if (force || ! spec->sense_updated) { + unsigned int present; + /* need to execute and sync at first */ + snd_hda_codec_read(codec, 0x14, 0, AC_VERB_SET_PIN_SENSE, 0); + present = snd_hda_codec_read(codec, 0x14, 0, + AC_VERB_GET_PIN_SENSE, 0); + spec->jack_present = (present & 0x80000000) != 0; + spec->sense_updated = 1; + } + if (spec->jack_present) { + /* mute internal speaker */ + snd_hda_codec_amp_update(codec, 0x15, 0, HDA_OUTPUT, 0, 0x80, 0x80); snd_hda_codec_amp_update(codec, 0x15, 1, HDA_OUTPUT, 0, 0x80, 0x80); @@ -4759,6 +5520,13 @@ { } /* end */ }; +/* additional init verbs for Benq laptops */ +static struct hda_verb alc262_EAPD_verbs[] = { + {0x20, AC_VERB_SET_COEF_INDEX, 0x07}, + {0x20, AC_VERB_SET_PROC_COEF, 0x3070}, + {} +}; + /* add playback controls from the parsed DAC table */ static int alc262_auto_create_multi_out_ctls(struct alc_spec *spec, const struct auto_pin_cfg *cfg) { @@ -4880,6 +5648,93 @@ { } }; +static struct hda_verb alc262_HP_BPC_init_verbs[] = { + /* + * Unmute ADC0-2 and set the default input to mic-in + */ + {0x07, AC_VERB_SET_CONNECT_SEL, 0x00}, + {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x08, AC_VERB_SET_CONNECT_SEL, 0x00}, + {0x08, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x09, AC_VERB_SET_CONNECT_SEL, 0x00}, + {0x09, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + + /* Unmute input amps (CD, Line In, Mic 1 & Mic 2) of the analog-loopback + * mixer widget + * Note: PASD motherboards uses the Line In 2 as the input for front panel + * mic (mic 2) + */ + /* Amp Indices: Mic1 = 0, Mic2 = 1, Line1 = 2, Line2 = 3, CD = 4 */ + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(3)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(4)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(5)}, + {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(6)}, + + /* + * Set up output mixers (0x0c - 0x0e) + */ + /* set vol=0 to output mixers */ + {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, + {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, + {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, + + /* set up input amps for analog loopback */ + /* Amp Indices: DAC = 0, mixer = 1 */ + {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + + {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, 0xc0}, + {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, + {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, + + {0x1b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE }, + {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE }, + + {0x1b, AC_VERB_SET_CONNECT_SEL, 0x00}, + {0x15, AC_VERB_SET_CONNECT_SEL, 0x00}, + + {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20}, + {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24}, + {0x19, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24}, + {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20}, + {0x1c, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20}, + + {0x14, AC_VERB_SET_AMP_GAIN_MUTE, 0x7023 }, + {0x18, AC_VERB_SET_AMP_GAIN_MUTE, 0x7000 }, + {0x19, AC_VERB_SET_AMP_GAIN_MUTE, 0x7000 }, + {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, 0x7023 }, + {0x1c, AC_VERB_SET_AMP_GAIN_MUTE, 0x7000 }, + {0x1d, AC_VERB_SET_AMP_GAIN_MUTE, 0x7000 }, + + + /* FIXME: use matrix-type input source selection */ + /* Mixer elements: 0x18, 19, 1a, 1b, 1c, 1d, 14, 15, 16, 17, 0b */ + /* Input mixer1: unmute Mic, F-Mic, Line, CD inputs */ + {0x24, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x00 << 8))}, + {0x24, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x03 << 8))}, + {0x24, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x02 << 8))}, + {0x24, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x04 << 8))}, + /* Input mixer2 */ + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x00 << 8))}, + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x03 << 8))}, + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x02 << 8))}, + {0x23, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x04 << 8))}, + /* Input mixer3 */ + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x00 << 8))}, + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x03 << 8))}, + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x02 << 8))}, + {0x22, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x04 << 8))}, + + { } +}; + /* pcm configuration: identiacal with ALC880 */ #define alc262_pcm_analog_playback alc880_pcm_analog_playback #define alc262_pcm_analog_capture alc880_pcm_analog_capture @@ -4940,7 +5795,20 @@ static struct hda_board_config alc262_cfg_tbl[] = { { .modelname = "basic", .config = ALC262_BASIC }, { .modelname = "fujitsu", .config = ALC262_FUJITSU }, - { .pci_subvendor = 0x10cf, .pci_subdevice = 0x1397, .config = ALC262_FUJITSU }, + { .pci_subvendor = 0x10cf, .pci_subdevice = 0x1397, + .config = ALC262_FUJITSU }, + { .modelname = "hp-bpc", .config = ALC262_HP_BPC }, + { .pci_subvendor = 0x103c, .pci_subdevice = 0x208c, + .config = ALC262_HP_BPC }, /* xw4400 */ + { .pci_subvendor = 0x103c, .pci_subdevice = 0x3014, + .config = ALC262_HP_BPC }, /* xw6400 */ + { .pci_subvendor = 0x103c, .pci_subdevice = 0x3015, + .config = ALC262_HP_BPC }, /* xw8400 */ + { .pci_subvendor = 0x103c, .pci_subdevice = 0x12fe, + .config = ALC262_HP_BPC }, /* xw9400 */ + { .modelname = "benq", .config = ALC262_BENQ_ED8 }, + { .pci_subvendor = 0x17ff, .pci_subdevice = 0x0560, + .config = ALC262_BENQ_ED8 }, { .modelname = "auto", .config = ALC262_AUTO }, {} }; @@ -4968,6 +5836,26 @@ .input_mux = &alc262_fujitsu_capture_source, .unsol_event = alc262_fujitsu_unsol_event, }, + [ALC262_HP_BPC] = { + .mixers = { alc262_HP_BPC_mixer }, + .init_verbs = { alc262_HP_BPC_init_verbs }, + .num_dacs = ARRAY_SIZE(alc262_dac_nids), + .dac_nids = alc262_dac_nids, + .hp_nid = 0x03, + .num_channel_mode = ARRAY_SIZE(alc262_modes), + .channel_mode = alc262_modes, + .input_mux = &alc262_HP_capture_source, + }, + [ALC262_BENQ_ED8] = { + .mixers = { alc262_base_mixer }, + .init_verbs = { alc262_init_verbs, alc262_EAPD_verbs }, + .num_dacs = ARRAY_SIZE(alc262_dac_nids), + .dac_nids = alc262_dac_nids, + .hp_nid = 0x03, + .num_channel_mode = ARRAY_SIZE(alc262_modes), + .channel_mode = alc262_modes, + .input_mux = &alc262_capture_source, + }, }; static int patch_alc262(struct hda_codec *codec) @@ -4993,8 +5881,10 @@ #endif board_config = snd_hda_check_board_config(codec, alc262_cfg_tbl); + if (board_config < 0 || board_config >= ALC262_MODEL_LAST) { - printk(KERN_INFO "hda_codec: Unknown model for ALC262, trying auto-probe from BIOS...\n"); + printk(KERN_INFO "hda_codec: Unknown model for ALC262, " + "trying auto-probe from BIOS...\n"); board_config = ALC262_AUTO; } @@ -5005,7 +5895,9 @@ alc_free(codec); return err; } else if (! err) { - printk(KERN_INFO "hda_codec: Cannot set up configuration from BIOS. Using base mode...\n"); + printk(KERN_INFO + "hda_codec: Cannot set up configuration " + "from BIOS. Using base mode...\n"); board_config = ALC262_BASIC; } } @@ -5046,7 +5938,6 @@ return 0; } - /* * ALC861 channel source setting (2/6 channel selection for 3-stack) */ @@ -5061,9 +5952,11 @@ /* set pin widget 18h (mic1/2) for input, for mic also enable the vref */ { 0x0d, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 }, - { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, 0xb00c }, - { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x01 << 8)) }, //mic - { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x02 << 8)) }, //line in + { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, 0xb00c }, +#if 0 + { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x01 << 8)) }, /*mic*/ + { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x02 << 8)) }, /*line-in*/ +#endif { } /* end */ }; /* @@ -5077,11 +5970,13 @@ { 0x0d, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40 }, { 0x0c, AC_VERB_SET_CONNECT_SEL, 0x00 }, - { 0x0d, AC_VERB_SET_CONNECT_SEL, 0x00 }, + { 0x0d, AC_VERB_SET_CONNECT_SEL, 0x00 }, - { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, 0xb080 }, - { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x01 << 8)) }, //mic - { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x02 << 8)) }, //line in + { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, 0xb080 }, +#if 0 + { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x01 << 8)) }, /*mic*/ + { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x02 << 8)) }, /*line in*/ +#endif { } /* end */ }; @@ -5089,6 +5984,23 @@ { 2, alc861_threestack_ch2_init }, { 6, alc861_threestack_ch6_init }, }; +/* Set mic1 as input and unmute the mixer */ +static struct hda_verb alc861_uniwill_m31_ch2_init[] = { + { 0x0d, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 }, + { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x01 << 8)) }, /*mic*/ + { } /* end */ +}; +/* Set mic1 as output and mute mixer */ +static struct hda_verb alc861_uniwill_m31_ch4_init[] = { + { 0x0d, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40 }, + { 0x15, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x01 << 8)) }, /*mic*/ + { } /* end */ +}; + +static struct hda_channel_mode alc861_uniwill_m31_modes[2] = { + { 2, alc861_uniwill_m31_ch2_init }, + { 4, alc861_uniwill_m31_ch4_init }, +}; /* patch-ALC861 */ @@ -5167,6 +6079,47 @@ }, { } /* end */ }; +static snd_kcontrol_new_t alc861_uniwill_m31_mixer[] = { + /* output mixer control */ + HDA_CODEC_MUTE("Front Playback Switch", 0x03, 0x0, HDA_OUTPUT), + HDA_CODEC_MUTE("Surround Playback Switch", 0x06, 0x0, HDA_OUTPUT), + HDA_CODEC_MUTE_MONO("Center Playback Switch", 0x05, 1, 0x0, HDA_OUTPUT), + HDA_CODEC_MUTE_MONO("LFE Playback Switch", 0x05, 2, 0x0, HDA_OUTPUT), + /*HDA_CODEC_MUTE("Side Playback Switch", 0x04, 0x0, HDA_OUTPUT), */ + + /* Input mixer control */ + /* HDA_CODEC_VOLUME("Input Playback Volume", 0x15, 0x0, HDA_OUTPUT), + HDA_CODEC_MUTE("Input Playback Switch", 0x15, 0x0, HDA_OUTPUT), */ + HDA_CODEC_VOLUME("CD Playback Volume", 0x15, 0x0, HDA_INPUT), + HDA_CODEC_MUTE("CD Playback Switch", 0x15, 0x0, HDA_INPUT), + HDA_CODEC_VOLUME("Line Playback Volume", 0x15, 0x02, HDA_INPUT), + HDA_CODEC_MUTE("Line Playback Switch", 0x15, 0x02, HDA_INPUT), + HDA_CODEC_VOLUME("Mic Playback Volume", 0x15, 0x01, HDA_INPUT), + HDA_CODEC_MUTE("Mic Playback Switch", 0x15, 0x01, HDA_INPUT), + HDA_CODEC_MUTE("Front Mic Playback Switch", 0x10, 0x01, HDA_OUTPUT), + HDA_CODEC_MUTE("Headphone Playback Switch", 0x1a, 0x03, HDA_INPUT), + + /* Capture mixer control */ + HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT), + HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT), + { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "Capture Source", + .count = 1, + .info = alc_mux_enum_info, + .get = alc_mux_enum_get, + .put = alc_mux_enum_put, + }, + { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "Channel Mode", + .info = alc_ch_mode_info, + .get = alc_ch_mode_get, + .put = alc_ch_mode_put, + .private_value = ARRAY_SIZE(alc861_uniwill_m31_modes), + }, + { } /* end */ +}; /* * generic initialization of ADC, input mixers and output mixers @@ -5295,6 +6248,67 @@ {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, { } }; + +static struct hda_verb alc861_uniwill_m31_init_verbs[] = { + /* + * Unmute ADC0 and set the default input to mic-in + */ + /* port-A for surround (rear panel) */ + { 0x0e, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x00 }, + /* port-B for mic-in (rear panel) with vref */ + { 0x0d, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 }, + /* port-C for line-in (rear panel) */ + { 0x0c, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20 }, + /* port-D for Front */ + { 0x0b, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40 }, + { 0x0b, AC_VERB_SET_CONNECT_SEL, 0x00 }, + /* port-E for HP out (front panel) */ + { 0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 }, // this has to be set to VREF80 + /* route front PCM to HP */ + { 0x0f, AC_VERB_SET_CONNECT_SEL, 0x01 }, + /* port-F for mic-in (front panel) with vref */ + { 0x10, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 }, + /* port-G for CLFE (rear panel) */ + { 0x1f, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x00 }, + /* port-H for side (rear panel) */ + { 0x20, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x00 }, + /* CD-in */ + { 0x11, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20 }, + /* route front mic to ADC1*/ + {0x08, AC_VERB_SET_CONNECT_SEL, 0x00}, + {0x08, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + /* Unmute DAC0~3 & spdif out*/ + {0x03, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, + {0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, + {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, + {0x06, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, + {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, + + /* Unmute Mixer 14 (mic) 1c (Line in)*/ + {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + + /* Unmute Stereo Mixer 15 */ + {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, + {0x15, AC_VERB_SET_AMP_GAIN_MUTE, 0xb00c }, //Output 0~12 step + + {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x18, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x18, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, + {0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, + {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(3)}, // hp used DAC 3 (Front) + {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, + { } +}; + /* * generic initialization of ADC, input mixers and output mixers */ @@ -5365,6 +6379,11 @@ 0x03, 0x06, 0x05, 0x04 }; +static hda_nid_t alc660_dac_nids[3] = { + /* front, clfe, surround */ + 0x03, 0x05, 0x06 +}; + static hda_nid_t alc861_adc_nids[1] = { /* ADC0-2 */ 0x08, @@ -5617,9 +6636,16 @@ */ static struct hda_board_config alc861_cfg_tbl[] = { { .modelname = "3stack", .config = ALC861_3ST }, - { .pci_subvendor = 0x8086, .pci_subdevice = 0xd600, .config = ALC861_3ST }, + { .pci_subvendor = 0x8086, .pci_subdevice = 0xd600, + .config = ALC861_3ST }, + { .modelname = "3stack-660", .config = ALC660_3ST }, + { .pci_subvendor = 0x1043, .pci_subdevice = 0x81e7, + .config = ALC660_3ST }, { .modelname = "3stack-dig", .config = ALC861_3ST_DIG }, { .modelname = "6stack-dig", .config = ALC861_6ST_DIG }, + { .modelname = "uniwill-m31", .config = ALC861_UNIWILL_M31}, + { .pci_subvendor = 0x1584, .pci_subdevice = 0x9072, + .config = ALC861_UNIWILL_M31 }, { .modelname = "auto", .config = ALC861_AUTO }, {} }; @@ -5632,6 +6658,7 @@ .dac_nids = alc861_dac_nids, .num_channel_mode = ARRAY_SIZE(alc861_threestack_modes), .channel_mode = alc861_threestack_modes, + .need_dac_fix = 1, .num_adc_nids = ARRAY_SIZE(alc861_adc_nids), .adc_nids = alc861_adc_nids, .input_mux = &alc861_capture_source, @@ -5644,6 +6671,7 @@ .dig_out_nid = ALC861_DIGOUT_NID, .num_channel_mode = ARRAY_SIZE(alc861_threestack_modes), .channel_mode = alc861_threestack_modes, + .need_dac_fix = 1, .num_adc_nids = ARRAY_SIZE(alc861_adc_nids), .adc_nids = alc861_adc_nids, .input_mux = &alc861_capture_source, @@ -5660,6 +6688,32 @@ .adc_nids = alc861_adc_nids, .input_mux = &alc861_capture_source, }, + [ALC660_3ST] = { + .mixers = { alc861_3ST_mixer }, + .init_verbs = { alc861_threestack_init_verbs }, + .num_dacs = ARRAY_SIZE(alc660_dac_nids), + .dac_nids = alc660_dac_nids, + .num_channel_mode = ARRAY_SIZE(alc861_threestack_modes), + .channel_mode = alc861_threestack_modes, + .need_dac_fix = 1, + .num_adc_nids = ARRAY_SIZE(alc861_adc_nids), + .adc_nids = alc861_adc_nids, + .input_mux = &alc861_capture_source, + }, + [ALC861_UNIWILL_M31] = { + .mixers = { alc861_uniwill_m31_mixer }, + .init_verbs = { alc861_uniwill_m31_init_verbs }, + .num_dacs = ARRAY_SIZE(alc861_dac_nids), + .dac_nids = alc861_dac_nids, + .dig_out_nid = ALC861_DIGOUT_NID, + .num_channel_mode = ARRAY_SIZE(alc861_uniwill_m31_modes), + .channel_mode = alc861_uniwill_m31_modes, + .need_dac_fix = 1, + .num_adc_nids = ARRAY_SIZE(alc861_adc_nids), + .adc_nids = alc861_adc_nids, + .input_mux = &alc861_capture_source, + }, + }; @@ -5676,8 +6730,10 @@ codec->spec = spec; board_config = snd_hda_check_board_config(codec, alc861_cfg_tbl); + if (board_config < 0 || board_config >= ALC861_MODEL_LAST) { - printk(KERN_INFO "hda_codec: Unknown model for ALC861, trying auto-probe from BIOS...\n"); + printk(KERN_INFO "hda_codec: Unknown model for ALC861, " + "trying auto-probe from BIOS...\n"); board_config = ALC861_AUTO; } @@ -5688,7 +6744,9 @@ alc_free(codec); return err; } else if (! err) { - printk(KERN_INFO "hda_codec: Cannot set up configuration from BIOS. Using base mode...\n"); + printk(KERN_INFO + "hda_codec: Cannot set up configuration " + "from BIOS. Using base mode...\n"); board_config = ALC861_3ST_DIG; } } @@ -5719,8 +6777,12 @@ { .id = 0x10ec0262, .name = "ALC262", .patch = patch_alc262 }, { .id = 0x10ec0880, .name = "ALC880", .patch = patch_alc880 }, { .id = 0x10ec0882, .name = "ALC882", .patch = patch_alc882 }, - { .id = 0x10ec0883, .name = "ALC883", .patch = patch_alc882 }, + { .id = 0x10ec0883, .name = "ALC883", .patch = patch_alc883 }, { .id = 0x10ec0885, .name = "ALC885", .patch = patch_alc882 }, - { .id = 0x10ec0861, .name = "ALC861", .patch = patch_alc861 }, + { .id = 0x10ec0888, .name = "ALC888", .patch = patch_alc883 }, + { .id = 0x10ec0861, .rev = 0x100300, .name = "ALC861", + .patch = patch_alc861 }, + { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660", + .patch = patch_alc861 }, {} /* terminator */ }; --- linux-source-2.6.15-2.6.15.orig/sound/pci/hda/hda_codec.c +++ linux-source-2.6.15-2.6.15/sound/pci/hda/hda_codec.c @@ -396,7 +396,9 @@ u32 mask = preset->mask; if (! mask) mask = ~0; - if (preset->id == (codec->vendor_id & mask)) + if (preset->id == (codec->vendor_id & mask) && + (! preset->rev || + preset->rev == codec->revision_id)) return preset; } } @@ -1895,7 +1897,7 @@ /* front */ snd_hda_codec_setup_stream(codec, nids[HDA_FRONT], stream_tag, 0, format); - if (mout->hp_nid) + if (mout->hp_nid && mout->hp_nid != nids[HDA_FRONT]) /* headphone out will just decode front left/right (stereo) */ snd_hda_codec_setup_stream(codec, mout->hp_nid, stream_tag, 0, format); /* extra outputs copied from front */ --- linux-source-2.6.15-2.6.15.orig/sound/pci/hda/hda_intel.c +++ linux-source-2.6.15-2.6.15/sound/pci/hda/hda_intel.c @@ -1395,10 +1395,10 @@ msleep(1); } - if (chip->remap_addr) - iounmap(chip->remap_addr); if (chip->irq >= 0) free_irq(chip->irq, (void*)chip); + if (chip->remap_addr) + iounmap(chip->remap_addr); if (chip->bdl.area) snd_dma_free_pages(&chip->bdl); --- linux-source-2.6.15-2.6.15.orig/sound/pci/hda/patch_sigmatel.c +++ linux-source-2.6.15-2.6.15/sound/pci/hda/patch_sigmatel.c @@ -41,6 +41,10 @@ #define STAC_REF 0 #define STAC_D945GTP3 1 #define STAC_D945GTP5 2 +#define STAC_MACMINI 3 +#define STAC_D965_2112 4 +#define STAC_D965_284B 5 +#define STAC_922X_MODELS 6 /* number of 922x models */ struct sigmatel_spec { snd_kcontrol_new_t *mixers[4]; @@ -52,6 +56,7 @@ unsigned int mic_switch: 1; unsigned int alt_switch: 1; unsigned int hp_detect: 1; + unsigned int gpio_mute: 1; /* playback */ struct hda_multi_out multiout; @@ -105,10 +110,24 @@ 0x06, 0x07, }; +static hda_nid_t stac9227_adc_nids[2] = { + 0x07, 0x08, +}; + +#if 0 +static hda_nid_t d965_2112_dac_nids[3] = { + 0x02, 0x03, 0x05, +}; +#endif + static hda_nid_t stac922x_mux_nids[2] = { 0x12, 0x13, }; +static hda_nid_t stac9227_mux_nids[2] = { + 0x15, 0x16, +}; + static hda_nid_t stac927x_adc_nids[3] = { 0x07, 0x08, 0x09 }; @@ -117,6 +136,14 @@ 0x15, 0x16, 0x17 }; +static hda_nid_t stac9205_adc_nids[2] = { + 0x12, 0x13 +}; + +static hda_nid_t stac9205_mux_nids[2] = { + 0x19, 0x1a +}; + static hda_nid_t stac9200_pin_nids[8] = { 0x08, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, }; @@ -132,6 +159,12 @@ 0x14, 0x21, 0x22, 0x23, }; +static hda_nid_t stac9205_pin_nids[12] = { + 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x14, 0x16, 0x17, 0x18, + 0x21, 0x22, +}; + static int stac92xx_mux_enum_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo) { struct hda_codec *codec = snd_kcontrol_chip(kcontrol); @@ -171,12 +204,36 @@ {} }; +static struct hda_verb stac9227_core_init[] = { + /* set master volume and direct control */ + { 0x16, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff}, + /* unmute node 0x1b */ + { 0x1b, AC_VERB_SET_AMP_GAIN_MUTE, 0xb000}, + {} +}; + +static struct hda_verb d965_2112_core_init[] = { + /* set master volume and direct control */ + { 0x16, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff}, + /* unmute node 0x1b */ + { 0x1b, AC_VERB_SET_AMP_GAIN_MUTE, 0xb000}, + /* select node 0x03 as DAC */ + { 0x0b, AC_VERB_SET_CONNECT_SEL, 0x01}, + {} +}; + static struct hda_verb stac927x_core_init[] = { /* set master volume and direct control */ { 0x24, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff}, {} }; +static struct hda_verb stac9205_core_init[] = { + /* set master volume and direct control */ + { 0x24, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff}, + {} +}; + static snd_kcontrol_new_t stac9200_mixer[] = { HDA_CODEC_VOLUME("Master Playback Volume", 0xb, 0, HDA_OUTPUT), HDA_CODEC_MUTE("Master Playback Switch", 0xb, 0, HDA_OUTPUT), @@ -210,6 +267,21 @@ { } /* end */ }; +/* This needs to be generated dynamically based on sequence */ +static snd_kcontrol_new_t stac9227_mixer[] = { + { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "Input Source", + .count = 1, + .info = stac92xx_mux_enum_info, + .get = stac92xx_mux_enum_get, + .put = stac92xx_mux_enum_put, + }, + HDA_CODEC_VOLUME("Capture Volume", 0x15, 0x0, HDA_OUTPUT), + HDA_CODEC_MUTE("Capture Switch", 0x1b, 0x0, HDA_OUTPUT), + { } /* end */ +}; + static snd_kcontrol_new_t stac927x_mixer[] = { { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, @@ -225,6 +297,21 @@ { } /* end */ }; +static snd_kcontrol_new_t stac9205_mixer[] = { + { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .name = "Input Source", + .count = 1, + .info = stac92xx_mux_enum_info, + .get = stac92xx_mux_enum_get, + .put = stac92xx_mux_enum_put, + }, + HDA_CODEC_VOLUME("InMux Capture Volume", 0x19, 0x0, HDA_OUTPUT), + HDA_CODEC_VOLUME("InVol Capture Volume", 0x1b, 0x0, HDA_INPUT), + HDA_CODEC_MUTE("ADCMux Capture Switch", 0x1d, 0x0, HDA_OUTPUT), + { } /* end */ +}; + static int stac92xx_build_controls(struct hda_codec *codec) { struct sigmatel_spec *spec = codec->spec; @@ -289,10 +376,18 @@ 0x02a19320, 0x40000100, }; -static unsigned int *stac922x_brd_tbl[] = { - ref922x_pin_configs, - d945gtp3_pin_configs, - d945gtp5_pin_configs, +static unsigned int d965_2112_pin_configs[10] = { + 0x0221401f, 0x40000100, 0x40000100, 0x01014011, + 0x01a19021, 0x01813024, 0x01452130, 0x40000100, + 0x02a19320, 0x40000100, +}; + +static unsigned int *stac922x_brd_tbl[STAC_922X_MODELS] = { + [STAC_REF] = ref922x_pin_configs, + [STAC_D945GTP3] = d945gtp3_pin_configs, + [STAC_D945GTP5] = d945gtp5_pin_configs, + [STAC_MACMINI] = d945gtp5_pin_configs, + [STAC_D965_2112] = d965_2112_pin_configs, }; static struct hda_board_config stac922x_cfg_tbl[] = { @@ -324,6 +419,15 @@ { .pci_subvendor = PCI_VENDOR_ID_INTEL, .pci_subdevice = 0x0417, .config = STAC_D945GTP5 }, /* Intel D975XBK - 5 Stack */ + { .pci_subvendor = 0x8384, + .pci_subdevice = 0x7680, + .config = STAC_MACMINI }, /* Macbook sound */ + { .pci_subvendor = PCI_VENDOR_ID_INTEL, + .pci_subdevice = 0x2112, + .config = STAC_D965_2112 }, + { .pci_subvendor = PCI_VENDOR_ID_INTEL, + .pci_subdevice = 0x284b, + .config = STAC_D965_284B }, {} /* terminator */ }; @@ -346,6 +450,24 @@ {} /* terminator */ }; +static unsigned int ref9205_pin_configs[12] = { + 0x40000100, 0x40000100, 0x01016011, 0x01014010, + 0x01813122, 0x01a19021, 0x40000100, 0x40000100, + 0x40000100, 0x40000100, 0x01441030, 0x01c41030 +}; + +static unsigned int *stac9205_brd_tbl[] = { + ref9205_pin_configs, +}; + +static struct hda_board_config stac9205_cfg_tbl[] = { + { .modelname = "ref", + .pci_subvendor = PCI_VENDOR_ID_INTEL, + .pci_subdevice = 0x2668, /* DFI LanParty */ + .config = STAC_REF }, /* SigmaTel reference board */ + {} /* terminator */ +}; + static void stac92xx_set_config_regs(struct hda_codec *codec) { int i; @@ -842,6 +964,19 @@ } } + if (imux->num_items == 1) { + /* + * Set the current input for the muxes. + * The STAC9221 has two input muxes with identical source + * NID lists. Hopefully this won't get confused. + */ + for (i = 0; i < spec->num_muxes; i++) { + snd_hda_codec_write(codec, spec->mux_nids[i], 0, + AC_VERB_SET_CONNECT_SEL, + imux->items[0].index); + } + } + return 0; } @@ -875,10 +1010,12 @@ return err; if (! spec->autocfg.line_outs) return 0; /* can't find valid pin config */ + if ((err = stac92xx_add_dyn_out_pins(codec, &spec->autocfg)) < 0) return err; - if ((err = stac92xx_auto_fill_dac_nids(codec, &spec->autocfg)) < 0) - return err; + if (spec->multiout.num_dacs == 0) + if ((err = stac92xx_auto_fill_dac_nids(codec, &spec->autocfg)) < 0) + return err; if ((err = stac92xx_auto_create_multi_out_ctls(spec, &spec->autocfg)) < 0 || (err = stac92xx_auto_create_hp_ctls(codec, &spec->autocfg)) < 0 || @@ -947,6 +1084,45 @@ return 1; } +/* + * Early 2006 Intel Macintoshes with STAC9220X5 codecs seem to have a + * funky external mute control using GPIO pins. + */ + +static void stac922x_gpio_mute(struct hda_codec *codec, int pin, int muted) +{ + unsigned int gpiostate, gpiomask, gpiodir; + + gpiostate = snd_hda_codec_read(codec, codec->afg, 0, + AC_VERB_GET_GPIO_DATA, 0); + + if (!muted) + gpiostate |= (1 << pin); + else + gpiostate &= ~(1 << pin); + + gpiomask = snd_hda_codec_read(codec, codec->afg, 0, + AC_VERB_GET_GPIO_MASK, 0); + gpiomask |= (1 << pin); + + gpiodir = snd_hda_codec_read(codec, codec->afg, 0, + AC_VERB_GET_GPIO_DIRECTION, 0); + gpiodir |= (1 << pin); + + /* AppleHDA seems to do this -- WTF is this verb?? */ + snd_hda_codec_write(codec, codec->afg, 0, 0x7e7, 0); + + snd_hda_codec_write(codec, codec->afg, 0, + AC_VERB_SET_GPIO_MASK, gpiomask); + snd_hda_codec_write(codec, codec->afg, 0, + AC_VERB_SET_GPIO_DIRECTION, gpiodir); + + msleep(1); + + snd_hda_codec_write(codec, codec->afg, 0, + AC_VERB_SET_GPIO_DATA, gpiostate); +} + static int stac92xx_init(struct hda_codec *codec) { struct sigmatel_spec *spec = codec->spec; @@ -983,6 +1159,11 @@ stac92xx_auto_set_pinctl(codec, cfg->dig_in_pin, AC_PINCTL_IN_EN); + if (spec->gpio_mute) { + stac922x_gpio_mute(codec, 0, 0); + stac922x_gpio_mute(codec, 1, 0); + } + return 0; } @@ -1132,7 +1313,7 @@ spec->board_config = snd_hda_check_board_config(codec, stac922x_cfg_tbl); if (spec->board_config < 0) snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC922x, using BIOS defaults\n"); - else { + else if (stac922x_brd_tbl[spec->board_config] != NULL) { spec->num_pins = 10; spec->pin_nids = stac922x_pin_nids; spec->pin_configs = stac922x_brd_tbl[spec->board_config]; @@ -1146,6 +1327,25 @@ spec->mixer = stac922x_mixer; spec->multiout.dac_nids = spec->dac_nids; + + switch (spec->board_config) { + case STAC_D965_2112: + spec->adc_nids = stac9227_adc_nids; + spec->mux_nids = stac9227_mux_nids; +#if 0 + spec->multiout.dac_nids = d965_2112_dac_nids; + spec->multiout.num_dacs = ARRAY_SIZE(d965_2112_dac_nids); +#endif + spec->init = d965_2112_core_init; + spec->mixer = stac9227_mixer; + break; + case STAC_D965_284B: + spec->adc_nids = stac9227_adc_nids; + spec->mux_nids = stac9227_mux_nids; + spec->init = stac9227_core_init; + spec->mixer = stac9227_mixer; + break; + } err = stac92xx_parse_auto_config(codec, 0x08, 0x09); if (err < 0) { @@ -1153,6 +1353,9 @@ return err; } + if (spec->board_config == STAC_MACMINI) + spec->gpio_mute = 1; + codec->patch_ops = stac92xx_patch_ops; return 0; @@ -1198,11 +1401,51 @@ return 0; } +static int patch_stac9205(struct hda_codec *codec) +{ + struct sigmatel_spec *spec; + int err; + + spec = kzalloc(sizeof(*spec), GFP_KERNEL); + if (spec == NULL) + return -ENOMEM; + + codec->spec = spec; + spec->board_config = snd_hda_check_board_config(codec, stac9205_cfg_tbl); + if (spec->board_config < 0) + snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC9205, using BIOS defaults\n"); + else { + spec->num_pins = 14; + spec->pin_nids = stac9205_pin_nids; + spec->pin_configs = stac9205_brd_tbl[spec->board_config]; + stac92xx_set_config_regs(codec); + } + + spec->adc_nids = stac9205_adc_nids; + spec->mux_nids = stac9205_mux_nids; + spec->num_muxes = 3; + + spec->init = stac9205_core_init; + spec->mixer = stac9205_mixer; + + spec->multiout.dac_nids = spec->dac_nids; + + err = stac92xx_parse_auto_config(codec, 0x1f, 0x20); + if (err < 0) { + stac92xx_free(codec); + return err; + } + + codec->patch_ops = stac92xx_patch_ops; + + return 0; +} + /* - * STAC7661 + * STAC 7661(?) and 7664 hack */ -/* static config for Sony VAIO FE550G */ +/* static config for Sony VAIO FE550G and Sony VAIO AR */ static hda_nid_t vaio_dacs[1] = { 0x2 }; #define VAIO_HP_DAC 0x5 static hda_nid_t vaio_adcs[2] = { 0x8, 0x6 }; @@ -1302,7 +1545,7 @@ {} }; -static struct hda_codec_ops stac7661_patch_ops = { +static struct hda_codec_ops stac766x_patch_ops = { .build_controls = stac92xx_build_controls, .build_pcms = stac92xx_build_pcms, .init = stac92xx_init, @@ -1312,21 +1555,29 @@ #endif }; -enum { STAC7661_VAIO }; +enum { STAC766x_VAIO }; -static struct hda_board_config stac7661_cfg_tbl[] = { - { .modelname = "vaio", .config = STAC7661_VAIO }, +static struct hda_board_config stac766x_cfg_tbl[] = { + { .modelname = "vaio", .config = STAC766x_VAIO }, + { .pci_subvendor = 0x104d, .pci_subdevice = 0x0700, + .config = STAC766x_VAIO }, + { .pci_subvendor = 0x104d, .pci_subdevice = 0x1300, + .config = STAC766x_VAIO }, + { .pci_subvendor = 0x104d, .pci_subdevice = 0x81e6, + .config = STAC766x_VAIO }, { .pci_subvendor = 0x104d, .pci_subdevice = 0x81ef, - .config = STAC7661_VAIO }, + .config = STAC766x_VAIO }, + { .pci_subvendor = 0x104d, .pci_subdevice = 0x81fd, + .config = STAC766x_VAIO }, {} }; -static int patch_stac7661(struct hda_codec *codec) +static int patch_stac766x(struct hda_codec *codec) { struct sigmatel_spec *spec; int board_config; - board_config = snd_hda_check_board_config(codec, stac7661_cfg_tbl); + board_config = snd_hda_check_board_config(codec, stac766x_cfg_tbl); if (board_config < 0) /* unknown config, let generic-parser do its job... */ return snd_hda_parse_generic_codec(codec); @@ -1337,7 +1588,7 @@ codec->spec = spec; switch (board_config) { - case STAC7661_VAIO: + case STAC766x_VAIO: spec->mixer = vaio_mixer; spec->init = vaio_init; spec->multiout.max_channels = 2; @@ -1351,7 +1602,7 @@ break; } - codec->patch_ops = stac7661_patch_ops; + codec->patch_ops = stac766x_patch_ops; return 0; } @@ -1367,6 +1618,12 @@ { .id = 0x83847681, .name = "STAC9220D/9223D A2", .patch = patch_stac922x }, { .id = 0x83847682, .name = "STAC9221 A2", .patch = patch_stac922x }, { .id = 0x83847683, .name = "STAC9221D A2", .patch = patch_stac922x }, + { .id = 0x83847618, .name = "STAC9227", .patch = patch_stac927x }, + { .id = 0x83847619, .name = "STAC9227", .patch = patch_stac927x }, + { .id = 0x83847616, .name = "STAC9228", .patch = patch_stac927x }, + { .id = 0x83847617, .name = "STAC9228", .patch = patch_stac927x }, + { .id = 0x83847614, .name = "STAC9229", .patch = patch_stac927x }, + { .id = 0x83847615, .name = "STAC9229", .patch = patch_stac927x }, { .id = 0x83847620, .name = "STAC9274", .patch = patch_stac927x }, { .id = 0x83847621, .name = "STAC9274D", .patch = patch_stac927x }, { .id = 0x83847622, .name = "STAC9273X", .patch = patch_stac927x }, @@ -1377,6 +1634,15 @@ { .id = 0x83847627, .name = "STAC9271D", .patch = patch_stac927x }, { .id = 0x83847628, .name = "STAC9274X5NH", .patch = patch_stac927x }, { .id = 0x83847629, .name = "STAC9274D5NH", .patch = patch_stac927x }, - { .id = 0x83847661, .name = "STAC7661", .patch = patch_stac7661 }, + { .id = 0x83847661, .name = "STAC7661", .patch = patch_stac766x }, + { .id = 0x83847664, .name = "STAC7664", .patch = patch_stac766x }, + { .id = 0x838476a0, .name = "STAC9205", .patch = patch_stac9205 }, + { .id = 0x838476a1, .name = "STAC9205D", .patch = patch_stac9205 }, + { .id = 0x838476a2, .name = "STAC9204", .patch = patch_stac9205 }, + { .id = 0x838476a3, .name = "STAC9204D", .patch = patch_stac9205 }, + { .id = 0x838476a4, .name = "STAC9255", .patch = patch_stac9205 }, + { .id = 0x838476a5, .name = "STAC9255D", .patch = patch_stac9205 }, + { .id = 0x838476a6, .name = "STAC9254", .patch = patch_stac9205 }, + { .id = 0x838476a7, .name = "STAC9254D", .patch = patch_stac9205 }, {} /* terminator */ }; --- linux-source-2.6.15-2.6.15.orig/sound/pci/cs46xx/cs46xx.c +++ linux-source-2.6.15-2.6.15/sound/pci/cs46xx/cs46xx.c @@ -98,6 +98,7 @@ snd_card_free(card); return err; } + card->private_data = chip; chip->accept_valid = mmap_valid[dev]; if ((err = snd_cs46xx_pcm(chip, 0, NULL)) < 0) { snd_card_free(card); @@ -166,7 +167,10 @@ .id_table = snd_cs46xx_ids, .probe = snd_card_cs46xx_probe, .remove = __devexit_p(snd_card_cs46xx_remove), - SND_PCI_PM_CALLBACKS +#ifdef CONFIG_PM + .suspend = snd_cs46xx_suspend, + .resume = snd_cs46xx_resume, +#endif }; static int __init alsa_card_cs46xx_init(void) --- linux-source-2.6.15-2.6.15.orig/sound/pci/cs46xx/dsp_spos_scb_lib.c +++ linux-source-2.6.15-2.6.15/sound/pci/cs46xx/dsp_spos_scb_lib.c @@ -174,6 +174,7 @@ void cs46xx_dsp_remove_scb (cs46xx_t *chip, dsp_scb_descriptor_t * scb) { dsp_spos_instance_t * ins = chip->dsp_spos_instance; + unsigned long flags; /* check integrety */ snd_assert ( (scb->index >= 0 && @@ -188,9 +189,9 @@ goto _end); #endif - spin_lock(&scb->lock); + spin_lock_irqsave(&scb->lock, flags); _dsp_unlink_scb (chip,scb); - spin_unlock(&scb->lock); + spin_unlock_irqrestore(&scb->lock, flags); cs46xx_dsp_proc_free_scb_desc(scb); snd_assert (scb->scb_symbol != NULL, return ); --- linux-source-2.6.15-2.6.15.orig/sound/pci/cs46xx/cs46xx_lib.c +++ linux-source-2.6.15-2.6.15/sound/pci/cs46xx/cs46xx_lib.c @@ -2902,14 +2902,15 @@ if (chip->region.idx[0].resource) snd_cs46xx_hw_stop(chip); + if (chip->irq >= 0) + free_irq(chip->irq, (void *)chip); + for (idx = 0; idx < 5; idx++) { snd_cs46xx_region_t *region = &chip->region.idx[idx]; if (region->remap_addr) iounmap(region->remap_addr); release_and_free_resource(region->resource); } - if (chip->irq >= 0) - free_irq(chip->irq, (void *)chip); if (chip->active_ctrl) chip->active_ctrl(chip, -chip->amplifier); @@ -3686,18 +3687,19 @@ * APM support */ #ifdef CONFIG_PM -static int snd_cs46xx_suspend(snd_card_t *card, pm_message_t state) +int snd_cs46xx_suspend(struct pci_dev *pci, pm_message_t state) { - cs46xx_t *chip = card->pm_private_data; + snd_card_t *card = pci_get_drvdata(pci); + cs46xx_t *chip = card->private_data; int amp_saved; + snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); snd_pcm_suspend_all(chip->pcm); // chip->ac97_powerdown = snd_cs46xx_codec_read(chip, AC97_POWER_CONTROL); // chip->ac97_general_purpose = snd_cs46xx_codec_read(chip, BA0_AC97_GENERAL_PURPOSE); snd_ac97_suspend(chip->ac97[CS46XX_PRIMARY_CODEC_INDEX]); - if (chip->ac97[CS46XX_SECONDARY_CODEC_INDEX]) - snd_ac97_suspend(chip->ac97[CS46XX_SECONDARY_CODEC_INDEX]); + snd_ac97_suspend(chip->ac97[CS46XX_SECONDARY_CODEC_INDEX]); amp_saved = chip->amplifier; /* turn off amp */ @@ -3706,17 +3708,20 @@ /* disable CLKRUN */ chip->active_ctrl(chip, -chip->amplifier); chip->amplifier = amp_saved; /* restore the status */ - pci_disable_device(chip->pci); + pci_disable_device(pci); + pci_save_state(pci); return 0; } -static int snd_cs46xx_resume(snd_card_t *card) +int snd_cs46xx_resume(struct pci_dev *pci) { - cs46xx_t *chip = card->pm_private_data; + snd_card_t *card = pci_get_drvdata(pci); + cs46xx_t *chip = card->private_data; int amp_saved; - pci_enable_device(chip->pci); - pci_set_master(chip->pci); + pci_restore_state(pci); + pci_enable_device(pci); + pci_set_master(pci); amp_saved = chip->amplifier; chip->amplifier = 0; chip->active_ctrl(chip, 1); /* force to on */ @@ -3735,14 +3740,14 @@ #endif snd_ac97_resume(chip->ac97[CS46XX_PRIMARY_CODEC_INDEX]); - if (chip->ac97[CS46XX_SECONDARY_CODEC_INDEX]) - snd_ac97_resume(chip->ac97[CS46XX_SECONDARY_CODEC_INDEX]); + snd_ac97_resume(chip->ac97[CS46XX_SECONDARY_CODEC_INDEX]); if (amp_saved) chip->amplifier_ctrl(chip, 1); /* turn amp on */ else chip->active_ctrl(chip, -1); /* disable CLKRUN */ chip->amplifier = amp_saved; + snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; } #endif /* CONFIG_PM */ @@ -3898,8 +3903,6 @@ snd_cs46xx_proc_init(card, chip); - snd_card_set_pm_callback(card, snd_cs46xx_suspend, snd_cs46xx_resume, chip); - chip->active_ctrl(chip, -1); /* disable CLKRUN */ snd_card_set_dev(card, &pci->dev); --- linux-source-2.6.15-2.6.15.orig/sound/pci/cmipci.c +++ linux-source-2.6.15-2.6.15/sound/pci/cmipci.c @@ -2111,7 +2111,7 @@ CMIPCI_MIXER_VOL_MONO("Mic Capture Volume", CM_REG_MIXER2, CM_VADMIC_SHIFT, 7), CMIPCI_SB_VOL_MONO("Phone Playback Volume", CM_REG_EXTENT_IND, 5, 7), CMIPCI_DOUBLE("Phone Playback Switch", CM_REG_EXTENT_IND, CM_REG_EXTENT_IND, 4, 4, 1, 0, 0), - CMIPCI_DOUBLE("PC Speaker Playnack Switch", CM_REG_EXTENT_IND, CM_REG_EXTENT_IND, 3, 3, 1, 0, 0), + CMIPCI_DOUBLE("PC Speaker Playback Switch", CM_REG_EXTENT_IND, CM_REG_EXTENT_IND, 3, 3, 1, 0, 0), CMIPCI_DOUBLE("Mic Boost Capture Switch", CM_REG_EXTENT_IND, CM_REG_EXTENT_IND, 0, 0, 1, 0, 0), }; --- linux-source-2.6.15-2.6.15.orig/sound/pci/ymfpci/ymfpci.c +++ linux-source-2.6.15-2.6.15/sound/pci/ymfpci/ymfpci.c @@ -49,6 +49,7 @@ static long joystick_port[SNDRV_CARDS]; #endif static int rear_switch[SNDRV_CARDS]; +static int rear_swap[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = 1 }; module_param_array(index, int, NULL, 0444); MODULE_PARM_DESC(index, "Index value for the Yamaha DS-XG PCI soundcard."); @@ -66,6 +67,8 @@ #endif module_param_array(rear_switch, bool, NULL, 0444); MODULE_PARM_DESC(rear_switch, "Enable shared rear/line-in switch"); +module_param_array(rear_swap, bool, NULL, 0444); +MODULE_PARM_DESC(rear_swap, "Swap rear channels (must be enabled for correct IEC958 (S/PDIF)) output"); static struct pci_device_id snd_ymfpci_ids[] = { { 0x1073, 0x0004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* YMF724 */ @@ -271,6 +274,7 @@ } chip->fm_res = fm_res; chip->mpu_res = mpu_res; + card->private_data = chip; strcpy(card->driver, str); sprintf(card->shortname, "Yamaha DS-XG (%s)", str); sprintf(card->longname, "%s at 0x%lx, irq %i", @@ -293,7 +297,7 @@ snd_card_free(card); return err; } - if ((err = snd_ymfpci_mixer(chip, rear_switch[dev])) < 0) { + if ((err = snd_ymfpci_mixer(chip, rear_switch[dev], rear_swap[dev])) < 0) { snd_card_free(card); return err; } @@ -347,7 +351,10 @@ .id_table = snd_ymfpci_ids, .probe = snd_card_ymfpci_probe, .remove = __devexit_p(snd_card_ymfpci_remove), - SND_PCI_PM_CALLBACKS +#ifdef CONFIG_PM + .suspend = snd_ymfpci_suspend, + .resume = snd_ymfpci_resume, +#endif }; static int __init alsa_card_ymfpci_init(void) --- linux-source-2.6.15-2.6.15.orig/sound/pci/ymfpci/ymfpci_main.c +++ linux-source-2.6.15-2.6.15/sound/pci/ymfpci/ymfpci_main.c @@ -532,13 +532,24 @@ } } if (ypcm->output_rear) { - if (use_left) { - bank->eff2_gain = - bank->eff2_gain_end = vol_left; - } - if (use_right) { - bank->eff3_gain = - bank->eff3_gain_end = vol_right; + if (!ypcm->swap_rear) { + if (use_left) { + bank->eff2_gain = + bank->eff2_gain_end = vol_left; + } + if (use_right) { + bank->eff3_gain = + bank->eff3_gain_end = vol_right; + } + } else { + if (use_left) { + bank->eff3_gain = + bank->eff3_gain_end = vol_left; + } + if (use_right) { + bank->eff2_gain = + bank->eff2_gain_end = vol_right; + } } } } @@ -890,6 +901,7 @@ ypcm = runtime->private_data; ypcm->output_front = 1; ypcm->output_rear = chip->mode_dup4ch ? 1 : 0; + ypcm->swap_rear = chip->rear_swap; spin_lock_irq(&chip->reg_lock); if (ypcm->output_rear) { ymfpci_open_extension(chip); @@ -1760,7 +1772,7 @@ chip->ac97 = NULL; } -int __devinit snd_ymfpci_mixer(ymfpci_t *chip, int rear_switch) +int __devinit snd_ymfpci_mixer(ymfpci_t *chip, int rear_switch, int rear_swap) { ac97_template_t ac97; snd_kcontrol_t *kctl; @@ -1772,6 +1784,7 @@ .read = snd_ymfpci_codec_read, }; + chip->rear_swap = rear_swap; if ((err = snd_ac97_bus(chip->card, 0, &ops, chip, &chip->ac97_bus)) < 0) return err; chip->ac97_bus->private_free = snd_ymfpci_mixer_free_ac97_bus; @@ -2203,11 +2216,13 @@ }; #define YDSXGR_NUM_SAVED_REGS ARRAY_SIZE(saved_regs_index) -static int snd_ymfpci_suspend(snd_card_t *card, pm_message_t state) +int snd_ymfpci_suspend(struct pci_dev *pci, pm_message_t state) { - ymfpci_t *chip = card->pm_private_data; + snd_card_t *card = pci_get_drvdata(pci); + ymfpci_t *chip = card->private_data; unsigned int i; + snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); snd_pcm_suspend_all(chip->pcm); snd_pcm_suspend_all(chip->pcm2); snd_pcm_suspend_all(chip->pcm_spdif); @@ -2218,18 +2233,21 @@ chip->saved_ydsxgr_mode = snd_ymfpci_readl(chip, YDSXGR_MODE); snd_ymfpci_writel(chip, YDSXGR_NATIVEDACOUTVOL, 0); snd_ymfpci_disable_dsp(chip); - pci_disable_device(chip->pci); + pci_disable_device(pci); + pci_save_state(pci); return 0; } -static int snd_ymfpci_resume(snd_card_t *card) +int snd_ymfpci_resume(struct pci_dev *pci) { - ymfpci_t *chip = card->pm_private_data; + snd_card_t *card = pci_get_drvdata(pci); + ymfpci_t *chip = card->private_data; unsigned int i; - pci_enable_device(chip->pci); - pci_set_master(chip->pci); - snd_ymfpci_aclink_reset(chip->pci); + pci_restore_state(pci); + pci_enable_device(pci); + pci_set_master(pci); + snd_ymfpci_aclink_reset(pci); snd_ymfpci_codec_ready(chip, 0); snd_ymfpci_download_image(chip); udelay(100); @@ -2246,6 +2264,7 @@ chip->active_bank = snd_ymfpci_readl(chip, YDSXGR_CTRLSELECT); spin_unlock_irq(&chip->reg_lock); } + snd_power_change_state(card, SNDRV_CTL_POWER_D0); return 0; } #endif /* CONFIG_PM */ @@ -2313,6 +2332,7 @@ return -EIO; } + chip->rear_swap = 1; if ((err = snd_ymfpci_ac3_init(chip)) < 0) { snd_ymfpci_free(chip); return err; @@ -2324,7 +2344,6 @@ snd_ymfpci_free(chip); return -ENOMEM; } - snd_card_set_pm_callback(card, snd_ymfpci_suspend, snd_ymfpci_resume, chip); #endif if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { --- linux-source-2.6.15-2.6.15.orig/sound/pci/intel8x0.c +++ linux-source-2.6.15-2.6.15/sound/pci/intel8x0.c @@ -1896,6 +1896,12 @@ }, { .subvendor = 0x10cf, + .subdevice = 0x127e, + .name = "Fujitsu Lifebook C1211D", + .type = AC97_TUNE_HP_ONLY + }, + { + .subvendor = 0x10cf, .subdevice = 0x12ec, .name = "Fujitsu-Siemens 4010", .type = AC97_TUNE_HP_ONLY @@ -1913,6 +1919,12 @@ .type = AC97_TUNE_HP_ONLY }, { + .subvendor = 0x10f1, + .subdevice = 0x2895, + .name = "Tyan Thunder K8WE", + .type = AC97_TUNE_HP_ONLY + }, + { .subvendor = 0x110a, .subdevice = 0x0056, .name = "Fujitsu-Siemens Scenic", /* AD1981? */ --- linux-source-2.6.15-2.6.15.orig/sound/pci/ac97/ac97_codec.c +++ linux-source-2.6.15-2.6.15/sound/pci/ac97/ac97_codec.c @@ -1254,7 +1254,8 @@ ac97->regs[AC97_CENTER_LFE_MASTER] = 0x8080; /* build center controls */ - if (snd_ac97_try_volume_mix(ac97, AC97_CENTER_LFE_MASTER)) { + if ((snd_ac97_try_volume_mix(ac97, AC97_CENTER_LFE_MASTER)) + && !(ac97->flags & AC97_AD_MULTI)) { if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_controls_center[0], ac97))) < 0) return err; if ((err = snd_ctl_add(card, kctl = snd_ac97_cnew(&snd_ac97_controls_center[1], ac97))) < 0) @@ -1266,7 +1267,8 @@ } /* build LFE controls */ - if (snd_ac97_try_volume_mix(ac97, AC97_CENTER_LFE_MASTER+1)) { + if ((snd_ac97_try_volume_mix(ac97, AC97_CENTER_LFE_MASTER+1)) + && !(ac97->flags & AC97_AD_MULTI)) { if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_controls_lfe[0], ac97))) < 0) return err; if ((err = snd_ctl_add(card, kctl = snd_ac97_cnew(&snd_ac97_controls_lfe[1], ac97))) < 0) @@ -1278,7 +1280,8 @@ } /* build surround controls */ - if (snd_ac97_try_volume_mix(ac97, AC97_SURROUND_MASTER)) { + if ((snd_ac97_try_volume_mix(ac97, AC97_SURROUND_MASTER)) + && !(ac97->flags & AC97_AD_MULTI)) { /* Surround Master (0x38) is with stereo mutes */ if ((err = snd_ac97_cmix_new_stereo(card, "Surround Playback", AC97_SURROUND_MASTER, 1, ac97)) < 0) return err; --- linux-source-2.6.15-2.6.15.orig/sound/pci/ac97/ac97_patch.c +++ linux-source-2.6.15-2.6.15/sound/pci/ac97/ac97_patch.c @@ -1365,6 +1365,12 @@ snd_ac97_restore_iec958(ac97); } + +static void ad1888_resume(ac97_t *ac97) +{ + ad18xx_resume(ac97); + snd_ac97_write_cache(ac97, AC97_CODEC_CLASS_REV, 0x8080); +} #endif int patch_ad1819(ac97_t * ac97) @@ -1625,6 +1631,7 @@ * (SS vendor << 16 | device) */ static unsigned int ad1981_jacks_blacklist[] = { + 0x10140537, /* Thinkpad T41p */ 0x10140554, /* Thinkpad T42p/R50p */ 0x10140567, /* Thinkpad T43p 2668-G7U */ 0x10140581, /* Thinkpad X41-2527 */ @@ -1634,6 +1641,11 @@ 0 /* end */ }; +static unsigned int ad1985_jacks_blacklist[] = { + 0x8086e002, /* confirmed by ejem2005@gmail.com */ + 0 /* end */ +}; + static int check_list(ac97_t * ac97, const unsigned int * list) { u32 subid = ((u32)ac97->subsystem_vendor << 16) | ac97->subsystem_device; @@ -1842,7 +1854,7 @@ .build_post_spdif = patch_ad198x_post_spdif, .build_specific = patch_ad1888_specific, #ifdef CONFIG_PM - .resume = ad18xx_resume, + .resume = ad1888_resume, #endif .update_jacks = ad1888_update_jacks, }; @@ -1909,6 +1921,8 @@ if ((err = patch_ad1980_specific(ac97)) < 0) return err; + if (check_list(ac97, ad1985_jacks_blacklist)) + return 0; return patch_build_controls(ac97, snd_ac97_ad1985_controls, ARRAY_SIZE(snd_ac97_ad1985_controls)); } @@ -2051,7 +2065,10 @@ /* Enable SPDIF-IN only on Rev.E and above */ val = snd_ac97_read(ac97, AC97_ALC650_CLOCK); /* SPDIF IN with pin 47 */ - if (ac97->spec.dev_flags) + if (ac97->spec.dev_flags && + /* ASUS A6KM requires EAPD */ + ! (ac97->subsystem_vendor == 0x1043 && + ac97->subsystem_device == 0x1103)) val |= 0x03; /* enable */ else val &= ~0x03; /* disable */ @@ -2194,7 +2211,8 @@ val &= ~(1 << 1); /* Pin 47 is spdif input pin */ else { /* ALC655 */ if (ac97->subsystem_vendor == 0x1462 && - ac97->subsystem_device == 0x0131) /* MSI S270 laptop */ + (ac97->subsystem_device == 0x0131 || /* MSI S270 laptop */ + ac97->subsystem_device == 0x0161)) /* LG K1 Express */ val &= ~(1 << 1); /* Pin 47 is EAPD (for internal speaker) */ else val |= (1 << 1); /* Pin 47 is spdif input pin */ --- linux-source-2.6.15-2.6.15.orig/sound/pci/via82xx.c +++ linux-source-2.6.15-2.6.15/sound/pci/via82xx.c @@ -2324,7 +2324,7 @@ { .subvendor = 0x1462, .subdevice = 0x0430, .action = VIA_DXS_SRC }, /* MSI 7142 (K8MM-V) */ { .subvendor = 0x1462, .subdevice = 0x3800, .action = VIA_DXS_ENABLE }, /* MSI KT266 */ { .subvendor = 0x1462, .subdevice = 0x5901, .action = VIA_DXS_NO_VRA }, /* MSI KT6 Delta-SR */ - { .subvendor = 0x1462, .subdevice = 0x7023, .action = VIA_DXS_NO_VRA }, /* MSI K8T Neo2-FI */ + { .subvendor = 0x1462, .subdevice = 0x7023, .action = VIA_DXS_SRC }, /* MSI K8T Neo2-FI */ { .subvendor = 0x1462, .subdevice = 0x7120, .action = VIA_DXS_ENABLE }, /* MSI KT4V */ { .subvendor = 0x1462, .subdevice = 0x7142, .action = VIA_DXS_ENABLE }, /* MSI K8MM-V */ { .subvendor = 0x147b, .subdevice = 0x1401, .action = VIA_DXS_ENABLE }, /* ABIT KD7(-RAID) */ @@ -2340,6 +2340,10 @@ { .subvendor = 0x161f, .subdevice = 0x2032, .action = VIA_DXS_48K }, /* m680x machines */ { .subvendor = 0x1631, .subdevice = 0xe004, .action = VIA_DXS_ENABLE }, /* Easy Note 3174, Packard Bell */ { .subvendor = 0x1695, .subdevice = 0x3005, .action = VIA_DXS_ENABLE }, /* EPoX EP-8K9A */ + { .subvendor = 0x16f3, .subdevice = 0x6405, .action = VIA_DXS_SRC }, /* Jetway K8M8MS */ + { .subvendor = 0x1734, .subdevice = 0x1078, .action = VIA_DXS_SRC }, /* FSC Amilo L7300 */ + { .subvendor = 0x1734, .subdevice = 0x1093, .action = VIA_DXS_SRC }, /* FSC */ + { .subvendor = 0x1734, .subdevice = 0x10ab, .action = VIA_DXS_SRC }, /* FSC */ { .subvendor = 0x1849, .subdevice = 0x3059, .action = VIA_DXS_NO_VRA }, /* ASRock K7VM2 */ { .subvendor = 0x1849, .subdevice = 0x9739, .action = VIA_DXS_SRC }, /* ASRock mobo(?) */ { .subvendor = 0x1849, .subdevice = 0x9761, .action = VIA_DXS_SRC }, /* ASRock mobo(?) */ --- linux-source-2.6.15-2.6.15.orig/sound/pci/ice1712/ice1712.c +++ linux-source-2.6.15-2.6.15/sound/pci/ice1712/ice1712.c @@ -1879,7 +1879,7 @@ { ice1712_t *ice = snd_kcontrol_chip(kcontrol); static unsigned int xrate[13] = { - 8000, 9600, 11025, 12000, 1600, 22050, 24000, + 8000, 9600, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 88200, 96000 }; unsigned char oval; @@ -1946,7 +1946,7 @@ { int val; static unsigned int xrate[13] = { - 8000, 9600, 11025, 12000, 1600, 22050, 24000, + 8000, 9600, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 88200, 96000 }; @@ -1963,7 +1963,7 @@ snd_ctl_elem_value_t * ucontrol) { static unsigned int xrate[13] = { - 8000, 9600, 11025, 12000, 1600, 22050, 24000, + 8000, 9600, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 88200, 96000 }; unsigned char oval; @@ -2419,13 +2419,14 @@ udelay(200); outb(ICE1712_NATIVE, ICEREG(ice, CONTROL)); udelay(200); - if (ice->eeprom.subvendor == ICE1712_SUBDEVICE_DMX6FIRE && !ice->dxr_enable) { - /* Limit active ADCs and DACs to 6; */ - /* Note: DXR extension not supported */ - pci_write_config_byte(ice->pci, 0x60, 0x2a); - } else { - pci_write_config_byte(ice->pci, 0x60, ice->eeprom.data[ICE_EEP1_CODEC]); - } + if (ice->eeprom.subvendor == ICE1712_SUBDEVICE_DMX6FIRE && + !ice->dxr_enable) + /* Set eeprom value to limit active ADCs and DACs to 6; + * Also disable AC97 as no hardware in standard 6fire card/box + * Note: DXR extensions are not currently supported + */ + ice->eeprom.data[ICE_EEP1_CODEC] = 0x3a; + pci_write_config_byte(ice->pci, 0x60, ice->eeprom.data[ICE_EEP1_CODEC]); pci_write_config_byte(ice->pci, 0x61, ice->eeprom.data[ICE_EEP1_ACLINK]); pci_write_config_byte(ice->pci, 0x62, ice->eeprom.data[ICE_EEP1_I2SID]); pci_write_config_byte(ice->pci, 0x63, ice->eeprom.data[ICE_EEP1_SPDIF]); --- linux-source-2.6.15-2.6.15.orig/sound/pci/rme32.c +++ linux-source-2.6.15-2.6.15/sound/pci/rme32.c @@ -1368,18 +1368,18 @@ return err; rme32->port = pci_resource_start(rme32->pci, 0); - if (request_irq(pci->irq, snd_rme32_interrupt, SA_INTERRUPT | SA_SHIRQ, "RME32", (void *) rme32)) { - snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); - return -EBUSY; - } - rme32->irq = pci->irq; - if ((rme32->iobase = ioremap_nocache(rme32->port, RME32_IO_SIZE)) == 0) { snd_printk(KERN_ERR "unable to remap memory region 0x%lx-0x%lx\n", rme32->port, rme32->port + RME32_IO_SIZE - 1); return -ENOMEM; } + if (request_irq(pci->irq, snd_rme32_interrupt, SA_INTERRUPT | SA_SHIRQ, "RME32", (void *) rme32)) { + snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); + return -EBUSY; + } + rme32->irq = pci->irq; + /* read the card's revision number */ pci_read_config_byte(pci, 8, &rme32->rev); --- linux-source-2.6.15-2.6.15.orig/sound/pci/cs4281.c +++ linux-source-2.6.15-2.6.15/sound/pci/cs4281.c @@ -1405,20 +1405,20 @@ chip->ba0_addr = pci_resource_start(pci, 0); chip->ba1_addr = pci_resource_start(pci, 1); - if (request_irq(pci->irq, snd_cs4281_interrupt, SA_INTERRUPT|SA_SHIRQ, "CS4281", (void *)chip)) { - snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); + chip->ba0 = ioremap_nocache(chip->ba0_addr, pci_resource_len(pci, 0)); + chip->ba1 = ioremap_nocache(chip->ba1_addr, pci_resource_len(pci, 1)); + if (!chip->ba0 || !chip->ba1) { snd_cs4281_free(chip); return -ENOMEM; } - chip->irq = pci->irq; - chip->ba0 = ioremap_nocache(chip->ba0_addr, pci_resource_len(pci, 0)); - chip->ba1 = ioremap_nocache(chip->ba1_addr, pci_resource_len(pci, 1)); - if (!chip->ba0 || !chip->ba1) { + if (request_irq(pci->irq, snd_cs4281_interrupt, SA_INTERRUPT|SA_SHIRQ, "CS4281", (void *)chip)) { + snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); snd_cs4281_free(chip); return -ENOMEM; } - + chip->irq = pci->irq; + tmp = snd_cs4281_chip_init(chip); if (tmp) { snd_cs4281_free(chip); --- linux-source-2.6.15-2.6.15.orig/sound/pci/rme96.c +++ linux-source-2.6.15-2.6.15/sound/pci/rme96.c @@ -1569,17 +1569,17 @@ return err; rme96->port = pci_resource_start(rme96->pci, 0); + if ((rme96->iobase = ioremap_nocache(rme96->port, RME96_IO_SIZE)) == 0) { + snd_printk(KERN_ERR "unable to remap memory region 0x%lx-0x%lx\n", rme96->port, rme96->port + RME96_IO_SIZE - 1); + return -ENOMEM; + } + if (request_irq(pci->irq, snd_rme96_interrupt, SA_INTERRUPT|SA_SHIRQ, "RME96", (void *)rme96)) { snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); return -EBUSY; } rme96->irq = pci->irq; - if ((rme96->iobase = ioremap_nocache(rme96->port, RME96_IO_SIZE)) == 0) { - snd_printk(KERN_ERR "unable to remap memory region 0x%lx-0x%lx\n", rme96->port, rme96->port + RME96_IO_SIZE - 1); - return -ENOMEM; - } - /* read the card's revision number */ pci_read_config_byte(pci, 8, &rme96->rev); --- linux-source-2.6.15-2.6.15.orig/sound/pci/fm801.c +++ linux-source-2.6.15-2.6.15/sound/pci/fm801.c @@ -311,10 +311,8 @@ 2, 4, 6 }; -#define CHANNELS sizeof(channels) / sizeof(channels[0]) - static snd_pcm_hw_constraint_list_t hw_constraints_channels = { - .count = CHANNELS, + .count = ARRAY_SIZE(channels), .list = channels, .mask = 0, }; --- linux-source-2.6.15-2.6.15.orig/sound/pci/emu10k1/emu10k1x.c +++ linux-source-2.6.15-2.6.15/sound/pci/emu10k1/emu10k1x.c @@ -1640,12 +1640,7 @@ // initialization of the module static int __init alsa_card_emu10k1x_init(void) { - int err; - - if ((err = pci_register_driver(&driver)) > 0) - return err; - - return 0; + return pci_register_driver(&driver); } // clean up the module --- linux-source-2.6.15-2.6.15.orig/sound/pci/emu10k1/irq.c +++ linux-source-2.6.15-2.6.15/sound/pci/emu10k1/irq.c @@ -37,9 +37,13 @@ int handled = 0; while ((status = inl(emu->port + IPR)) != 0) { - //printk("emu10k1 irq - status = 0x%x\n", status); + //snd_printk(KERN_INFO "emu10k1 irq - status = 0x%x\n", status); orig_status = status; handled = 1; + if ((status & 0xffffffff) == 0xffffffff) { + snd_printk(KERN_INFO "snd-emu10k1: Suspected sound card removal\n"); + break; + } if (status & IPR_PCIERROR) { snd_printk(KERN_ERR "interrupt: PCI error\n"); snd_emu10k1_intr_disable(emu, INTE_PCIERRORENABLE); --- linux-source-2.6.15-2.6.15.orig/sound/pci/emu10k1/emu10k1_main.c +++ linux-source-2.6.15-2.6.15/sound/pci/emu10k1/emu10k1_main.c @@ -749,6 +749,17 @@ .ca0102_chip = 1, .ca0151_chip = 1, .spdif_bug = 1} , + /* Dell OEM/Creative Labs Audigy 2 ZS */ + /* See ALSA bug#1365 */ + {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x10031102, + .driver = "Audigy2", .name = "Audigy 2 ZS [SB0353]", + .id = "Audigy2", + .emu10k2_chip = 1, + .ca0102_chip = 1, + .ca0151_chip = 1, + .spk71 = 1, + .spdif_bug = 1, + .ac97_chip = 1} , {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x10021102, .driver = "Audigy2", .name = "Audigy 2 Platinum [SB0240P]", .id = "Audigy2", --- linux-source-2.6.15-2.6.15.orig/sound/drivers/opl3/opl3_oss.c +++ linux-source-2.6.15-2.6.15/sound/drivers/opl3/opl3_oss.c @@ -99,8 +99,7 @@ opl3->oss_chset->port = snd_seq_event_port_attach(opl3->seq_client, &callbacks, SNDRV_SEQ_PORT_CAP_WRITE, SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC | - SNDRV_SEQ_PORT_TYPE_MIDI_GM | - SNDRV_SEQ_PORT_TYPE_SYNTH, + SNDRV_SEQ_PORT_TYPE_MIDI_GM, voices, voices, name); if (opl3->oss_chset->port < 0) { --- linux-source-2.6.15-2.6.15.orig/sound/drivers/opl3/opl3_seq.c +++ linux-source-2.6.15-2.6.15/sound/drivers/opl3/opl3_seq.c @@ -203,7 +203,7 @@ SNDRV_SEQ_PORT_CAP_SUBS_WRITE, SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC | SNDRV_SEQ_PORT_TYPE_MIDI_GM | - SNDRV_SEQ_PORT_TYPE_SYNTH, + SNDRV_SEQ_PORT_TYPE_DIRECT_SAMPLE, 16, voices, name); if (opl3->chset->port < 0) { --- linux-source-2.6.15-2.6.15.orig/sound/usb/usx2y/usx2yhwdeppcm.c +++ linux-source-2.6.15-2.6.15/sound/usb/usx2y/usx2yhwdeppcm.c @@ -725,7 +725,7 @@ return -ENODEV; } area->vm_ops = &snd_usX2Y_hwdep_pcm_vm_ops; - area->vm_flags |= VM_RESERVED; + area->vm_flags |= VM_RESERVED | VM_DONTEXPAND; snd_printd("vm_flags=0x%lX\n", area->vm_flags); area->vm_private_data = hw->private_data; return 0; --- linux-source-2.6.15-2.6.15.orig/sound/usb/usx2y/usX2Yhwdep.c +++ linux-source-2.6.15-2.6.15/sound/usb/usx2y/usX2Yhwdep.c @@ -88,7 +88,7 @@ us428->us428ctls_sharedmem->CtlSnapShotLast = -2; } area->vm_ops = &us428ctls_vm_ops; - area->vm_flags |= VM_RESERVED; + area->vm_flags |= VM_RESERVED | VM_DONTEXPAND; area->vm_private_data = hw->private_data; return 0; } --- linux-source-2.6.15-2.6.15.orig/sound/usb/usbquirks.h +++ linux-source-2.6.15-2.6.15/sound/usb/usbquirks.h @@ -123,6 +123,10 @@ YAMAHA_DEVICE(0x103f, NULL), YAMAHA_DEVICE(0x1040, NULL), YAMAHA_DEVICE(0x1041, NULL), +YAMAHA_DEVICE(0x1042, NULL), +YAMAHA_DEVICE(0x1043, NULL), +YAMAHA_DEVICE(0x1044, NULL), +YAMAHA_DEVICE(0x1045, NULL), YAMAHA_DEVICE(0x2000, "DGP-7"), YAMAHA_DEVICE(0x2001, "DGP-5"), YAMAHA_DEVICE(0x2002, NULL), @@ -141,6 +145,7 @@ YAMAHA_DEVICE(0x500c, "DME24N"), YAMAHA_DEVICE(0x500d, NULL), YAMAHA_DEVICE(0x500e, NULL), +YAMAHA_DEVICE(0x500f, NULL), YAMAHA_DEVICE(0x7000, "DTX"), YAMAHA_DEVICE(0x7010, "UB99"), #undef YAMAHA_DEVICE --- linux-source-2.6.15-2.6.15.orig/sound/usb/usbaudio.c +++ linux-source-2.6.15-2.6.15/sound/usb/usbaudio.c @@ -2616,9 +2616,10 @@ if (!csep && altsd->bNumEndpoints >= 2) csep = snd_usb_find_desc(alts->endpoint[1].extra, alts->endpoint[1].extralen, NULL, USB_DT_CS_ENDPOINT); if (!csep || csep[0] < 7 || csep[2] != EP_GENERAL) { - snd_printk(KERN_ERR "%d:%u:%d : no or invalid class specific endpoint descriptor\n", + snd_printk(KERN_WARNING "%d:%u:%d : no or invalid" + " class specific endpoint descriptor\n", dev->devnum, iface_no, altno); - continue; + csep = NULL; } fp = kmalloc(sizeof(*fp), GFP_KERNEL); @@ -2637,7 +2638,7 @@ if (snd_usb_get_speed(dev) == USB_SPEED_HIGH) fp->maxpacksize = (((fp->maxpacksize >> 11) & 3) + 1) * (fp->maxpacksize & 0x7ff); - fp->attributes = csep[3]; + fp->attributes = csep ? csep[3] : 0; /* some quirks for attributes here */ --- linux-source-2.6.15-2.6.15.orig/fs/compat_ioctl.c +++ linux-source-2.6.15-2.6.15/fs/compat_ioctl.c @@ -118,7 +118,6 @@ #include #include #include -#include #include #include @@ -2292,51 +2291,6 @@ return err; } -#define VFAT_IOCTL_READDIR_BOTH32 _IOR('r', 1, struct compat_dirent[2]) -#define VFAT_IOCTL_READDIR_SHORT32 _IOR('r', 2, struct compat_dirent[2]) - -static long -put_dirent32 (struct dirent *d, struct compat_dirent __user *d32) -{ - if (!access_ok(VERIFY_WRITE, d32, sizeof(struct compat_dirent))) - return -EFAULT; - - __put_user(d->d_ino, &d32->d_ino); - __put_user(d->d_off, &d32->d_off); - __put_user(d->d_reclen, &d32->d_reclen); - if (__copy_to_user(d32->d_name, d->d_name, d->d_reclen)) - return -EFAULT; - - return 0; -} - -static int vfat_ioctl32(unsigned fd, unsigned cmd, unsigned long arg) -{ - struct compat_dirent __user *p = compat_ptr(arg); - int ret; - mm_segment_t oldfs = get_fs(); - struct dirent d[2]; - - switch(cmd) - { - case VFAT_IOCTL_READDIR_BOTH32: - cmd = VFAT_IOCTL_READDIR_BOTH; - break; - case VFAT_IOCTL_READDIR_SHORT32: - cmd = VFAT_IOCTL_READDIR_SHORT; - break; - } - - set_fs(KERNEL_DS); - ret = sys_ioctl(fd,cmd,(unsigned long)&d); - set_fs(oldfs); - if (ret >= 0) { - ret |= put_dirent32(&d[0], p); - ret |= put_dirent32(&d[1], p + 1); - } - return ret; -} - #define REISERFS_IOC_UNPACK32 _IOW(0xCD,1,int) static int reiserfs_ioctl32(unsigned fd, unsigned cmd, unsigned long ptr) @@ -3055,9 +3009,6 @@ HANDLE_IOCTL(BLKBSZGET_32, do_blkbszget) HANDLE_IOCTL(BLKBSZSET_32, do_blkbszset) HANDLE_IOCTL(BLKGETSIZE64_32, do_blkgetsize64) -/* vfat */ -HANDLE_IOCTL(VFAT_IOCTL_READDIR_BOTH32, vfat_ioctl32) -HANDLE_IOCTL(VFAT_IOCTL_READDIR_SHORT32, vfat_ioctl32) HANDLE_IOCTL(REISERFS_IOC_UNPACK32, reiserfs_ioctl32) /* Raw devices */ HANDLE_IOCTL(RAW_SETBIND, raw_ioctl) --- linux-source-2.6.15-2.6.15.orig/fs/dcache.c +++ linux-source-2.6.15-2.6.15/fs/dcache.c @@ -1358,7 +1358,7 @@ * * "buflen" should be positive. Caller holds the dcache_lock. */ -static char * __d_path( struct dentry *dentry, struct vfsmount *vfsmnt, +char * __d_path( struct dentry *dentry, struct vfsmount *vfsmnt, struct dentry *root, struct vfsmount *rootmnt, char *buffer, int buflen) { @@ -1765,3 +1765,4 @@ EXPORT_SYMBOL(names_cachep); EXPORT_SYMBOL(shrink_dcache_parent); EXPORT_SYMBOL(shrink_dcache_sb); +EXPORT_SYMBOL(__d_path); --- linux-source-2.6.15-2.6.15.orig/fs/fat/dir.c +++ linux-source-2.6.15-2.6.15/fs/fat/dir.c @@ -20,6 +20,7 @@ #include #include #include +#include #include static inline loff_t fat_make_i_pos(struct super_block *sb, @@ -421,7 +422,7 @@ EXPORT_SYMBOL(fat_search_long); struct fat_ioctl_filldir_callback { - struct dirent __user *dirent; + void __user *dirent; int result; /* for dir ioctl */ const char *longname; @@ -646,62 +647,85 @@ return __fat_readdir(inode, filp, dirent, filldir, 0, 0); } -static int fat_ioctl_filldir(void *__buf, const char *name, int name_len, - loff_t offset, ino_t ino, unsigned int d_type) +#define FAT_IOCTL_FILLDIR_FUNC(func, dirent_type) \ +static int func(void *__buf, const char *name, int name_len, \ + loff_t offset, ino_t ino, unsigned int d_type) \ +{ \ + struct fat_ioctl_filldir_callback *buf = __buf; \ + struct dirent_type __user *d1 = buf->dirent; \ + struct dirent_type __user *d2 = d1 + 1; \ + \ + if (buf->result) \ + return -EINVAL; \ + buf->result++; \ + \ + if (name != NULL) { \ + /* dirent has only short name */ \ + if (name_len >= sizeof(d1->d_name)) \ + name_len = sizeof(d1->d_name) - 1; \ + \ + if (put_user(0, d2->d_name) || \ + put_user(0, &d2->d_reclen) || \ + copy_to_user(d1->d_name, name, name_len) || \ + put_user(0, d1->d_name + name_len) || \ + put_user(name_len, &d1->d_reclen)) \ + goto efault; \ + } else { \ + /* dirent has short and long name */ \ + const char *longname = buf->longname; \ + int long_len = buf->long_len; \ + const char *shortname = buf->shortname; \ + int short_len = buf->short_len; \ + \ + if (long_len >= sizeof(d1->d_name)) \ + long_len = sizeof(d1->d_name) - 1; \ + if (short_len >= sizeof(d1->d_name)) \ + short_len = sizeof(d1->d_name) - 1; \ + \ + if (copy_to_user(d2->d_name, longname, long_len) || \ + put_user(0, d2->d_name + long_len) || \ + put_user(long_len, &d2->d_reclen) || \ + put_user(ino, &d2->d_ino) || \ + put_user(offset, &d2->d_off) || \ + copy_to_user(d1->d_name, shortname, short_len) || \ + put_user(0, d1->d_name + short_len) || \ + put_user(short_len, &d1->d_reclen)) \ + goto efault; \ + } \ + return 0; \ +efault: \ + buf->result = -EFAULT; \ + return -EFAULT; \ +} + +FAT_IOCTL_FILLDIR_FUNC(fat_ioctl_filldir, dirent) + +static int fat_ioctl_readdir(struct inode *inode, struct file *filp, + void __user *dirent, filldir_t filldir, + int short_only, int both) { - struct fat_ioctl_filldir_callback *buf = __buf; - struct dirent __user *d1 = buf->dirent; - struct dirent __user *d2 = d1 + 1; - - if (buf->result) - return -EINVAL; - buf->result++; - - if (name != NULL) { - /* dirent has only short name */ - if (name_len >= sizeof(d1->d_name)) - name_len = sizeof(d1->d_name) - 1; - - if (put_user(0, d2->d_name) || - put_user(0, &d2->d_reclen) || - copy_to_user(d1->d_name, name, name_len) || - put_user(0, d1->d_name + name_len) || - put_user(name_len, &d1->d_reclen)) - goto efault; - } else { - /* dirent has short and long name */ - const char *longname = buf->longname; - int long_len = buf->long_len; - const char *shortname = buf->shortname; - int short_len = buf->short_len; - - if (long_len >= sizeof(d1->d_name)) - long_len = sizeof(d1->d_name) - 1; - if (short_len >= sizeof(d1->d_name)) - short_len = sizeof(d1->d_name) - 1; - - if (copy_to_user(d2->d_name, longname, long_len) || - put_user(0, d2->d_name + long_len) || - put_user(long_len, &d2->d_reclen) || - put_user(ino, &d2->d_ino) || - put_user(offset, &d2->d_off) || - copy_to_user(d1->d_name, shortname, short_len) || - put_user(0, d1->d_name + short_len) || - put_user(short_len, &d1->d_reclen)) - goto efault; + struct fat_ioctl_filldir_callback buf; + int ret; + + buf.dirent = dirent; + buf.result = 0; + down(&inode->i_sem); + ret = -ENOENT; + if (!IS_DEADDIR(inode)) { + ret = __fat_readdir(inode, filp, &buf, filldir, + short_only, both); } - return 0; -efault: - buf->result = -EFAULT; - return -EFAULT; + down(&inode->i_sem); + if (ret >= 0) + ret = buf.result; + return ret; } -static int fat_dir_ioctl(struct inode * inode, struct file * filp, - unsigned int cmd, unsigned long arg) +static int fat_dir_ioctl(struct inode *inode, struct file *filp, + unsigned int cmd, unsigned long arg) { - struct fat_ioctl_filldir_callback buf; - struct dirent __user *d1; - int ret, short_only, both; + struct dirent __user *d1 = (struct dirent __user *)arg; + int short_only, both; switch (cmd) { case VFAT_IOCTL_READDIR_SHORT: @@ -716,7 +740,6 @@ return fat_generic_ioctl(inode, filp, cmd, arg); } - d1 = (struct dirent __user *)arg; if (!access_ok(VERIFY_WRITE, d1, sizeof(struct dirent[2]))) return -EFAULT; /* @@ -727,24 +750,58 @@ if (put_user(0, &d1->d_reclen)) return -EFAULT; - buf.dirent = d1; - buf.result = 0; - down(&inode->i_sem); - ret = -ENOENT; - if (!IS_DEADDIR(inode)) { - ret = __fat_readdir(inode, filp, &buf, fat_ioctl_filldir, - short_only, both); + return fat_ioctl_readdir(inode, filp, d1, fat_ioctl_filldir, + short_only, both); +} + +#ifdef CONFIG_COMPAT +#define VFAT_IOCTL_READDIR_BOTH32 _IOR('r', 1, struct compat_dirent[2]) +#define VFAT_IOCTL_READDIR_SHORT32 _IOR('r', 2, struct compat_dirent[2]) + +FAT_IOCTL_FILLDIR_FUNC(fat_compat_ioctl_filldir, compat_dirent) + +static long fat_compat_dir_ioctl(struct file *filp, unsigned cmd, + unsigned long arg) +{ + struct inode *inode = filp->f_dentry->d_inode; + struct compat_dirent __user *d1 = compat_ptr(arg); + int short_only, both; + + switch (cmd) { + case VFAT_IOCTL_READDIR_SHORT32: + short_only = 1; + both = 0; + break; + case VFAT_IOCTL_READDIR_BOTH32: + short_only = 0; + both = 1; + break; + default: + return -ENOIOCTLCMD; } - up(&inode->i_sem); - if (ret >= 0) - ret = buf.result; - return ret; + + if (!access_ok(VERIFY_WRITE, d1, sizeof(struct compat_dirent[2]))) + return -EFAULT; + /* + * Yes, we don't need this put_user() absolutely. However old + * code didn't return the right value. So, app use this value, + * in order to check whether it is EOF. + */ + if (put_user(0, &d1->d_reclen)) + return -EFAULT; + + return fat_ioctl_readdir(inode, filp, d1, fat_compat_ioctl_filldir, + short_only, both); } +#endif /* CONFIG_COMPAT */ struct file_operations fat_dir_operations = { .read = generic_read_dir, .readdir = fat_readdir, .ioctl = fat_dir_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl = fat_compat_dir_ioctl, +#endif .fsync = file_fsync, }; --- linux-source-2.6.15-2.6.15.orig/fs/binfmt_elf.c +++ linux-source-2.6.15-2.6.15/fs/binfmt_elf.c @@ -667,6 +667,15 @@ retval = PTR_ERR(interpreter); if (IS_ERR(interpreter)) goto out_free_interp; + + /* + * If the binary is not readable then enforce + * mm->dumpable = 0 regardless of the interpreter's + * permissions. + */ + if (file_permission(interpreter, MAY_READ) < 0) + bprm->interp_flags |= BINPRM_FLAGS_ENFORCE_NONDUMP; + retval = kernel_read(interpreter, 0, bprm->buf, BINPRM_BUF_SIZE); if (retval != BINPRM_BUF_SIZE) { if (retval >= 0) --- linux-source-2.6.15-2.6.15.orig/fs/udf/super.c +++ linux-source-2.6.15-2.6.15/fs/udf/super.c @@ -1646,7 +1646,7 @@ iput(inode); goto error_out; } - sb->s_maxbytes = MAX_LFS_FILESIZE; + sb->s_maxbytes = 1<<30; return 0; error_out: --- linux-source-2.6.15-2.6.15.orig/fs/udf/truncate.c +++ linux-source-2.6.15-2.6.15/fs/udf/truncate.c @@ -244,37 +244,51 @@ { if (offset) { - extoffset -= adsize; - etype = udf_next_aext(inode, &bloc, &extoffset, &eloc, &elen, &bh, 1); - if (etype == (EXT_NOT_RECORDED_NOT_ALLOCATED >> 30)) - { - extoffset -= adsize; - elen = EXT_NOT_RECORDED_NOT_ALLOCATED | (elen + offset); - udf_write_aext(inode, bloc, &extoffset, eloc, elen, bh, 0); + /* + * OK, there is not extent covering inode->i_size and + * no extent above inode->i_size => truncate is + * extending the file by 'offset'. + */ + if ((!bh && extoffset == udf_file_entry_alloc_offset(inode)) || + (bh && extoffset == sizeof(struct allocExtDesc))) { + /* File has no extents at all! */ + memset(&eloc, 0x00, sizeof(kernel_lb_addr)); + elen = EXT_NOT_RECORDED_NOT_ALLOCATED | offset; + udf_add_aext(inode, &bloc, &extoffset, eloc, elen, &bh, 1); } - else if (etype == (EXT_NOT_RECORDED_ALLOCATED >> 30)) - { - kernel_lb_addr neloc = { 0, 0 }; + else { extoffset -= adsize; - nelen = EXT_NOT_RECORDED_NOT_ALLOCATED | - ((elen + offset + inode->i_sb->s_blocksize - 1) & - ~(inode->i_sb->s_blocksize - 1)); - udf_write_aext(inode, bloc, &extoffset, neloc, nelen, bh, 1); - udf_add_aext(inode, &bloc, &extoffset, eloc, (etype << 30) | elen, &bh, 1); - } - else - { - if (elen & (inode->i_sb->s_blocksize - 1)) + etype = udf_next_aext(inode, &bloc, &extoffset, &eloc, &elen, &bh, 1); + if (etype == (EXT_NOT_RECORDED_NOT_ALLOCATED >> 30)) { extoffset -= adsize; - elen = EXT_RECORDED_ALLOCATED | - ((elen + inode->i_sb->s_blocksize - 1) & + elen = EXT_NOT_RECORDED_NOT_ALLOCATED | (elen + offset); + udf_write_aext(inode, bloc, &extoffset, eloc, elen, bh, 0); + } + else if (etype == (EXT_NOT_RECORDED_ALLOCATED >> 30)) + { + kernel_lb_addr neloc = { 0, 0 }; + extoffset -= adsize; + nelen = EXT_NOT_RECORDED_NOT_ALLOCATED | + ((elen + offset + inode->i_sb->s_blocksize - 1) & ~(inode->i_sb->s_blocksize - 1)); - udf_write_aext(inode, bloc, &extoffset, eloc, elen, bh, 1); + udf_write_aext(inode, bloc, &extoffset, neloc, nelen, bh, 1); + udf_add_aext(inode, &bloc, &extoffset, eloc, (etype << 30) | elen, &bh, 1); + } + else + { + if (elen & (inode->i_sb->s_blocksize - 1)) + { + extoffset -= adsize; + elen = EXT_RECORDED_ALLOCATED | + ((elen + inode->i_sb->s_blocksize - 1) & + ~(inode->i_sb->s_blocksize - 1)); + udf_write_aext(inode, bloc, &extoffset, eloc, elen, bh, 1); + } + memset(&eloc, 0x00, sizeof(kernel_lb_addr)); + elen = EXT_NOT_RECORDED_NOT_ALLOCATED | offset; + udf_add_aext(inode, &bloc, &extoffset, eloc, elen, &bh, 1); } - memset(&eloc, 0x00, sizeof(kernel_lb_addr)); - elen = EXT_NOT_RECORDED_NOT_ALLOCATED | offset; - udf_add_aext(inode, &bloc, &extoffset, eloc, elen, &bh, 1); } } } --- linux-source-2.6.15-2.6.15.orig/fs/ncpfs/mmap.c +++ linux-source-2.6.15-2.6.15/fs/ncpfs/mmap.c @@ -47,9 +47,6 @@ pos = address - area->vm_start + (area->vm_pgoff << PAGE_SHIFT); count = PAGE_SIZE; - if (address + PAGE_SIZE > area->vm_end) { - count = area->vm_end - address; - } /* what we can read in one go */ bufsize = NCP_SERVER(inode)->buffer_size; --- linux-source-2.6.15-2.6.15.orig/fs/Makefile +++ linux-source-2.6.15-2.6.15/fs/Makefile @@ -107,3 +107,4 @@ obj-$(CONFIG_CONFIGFS_FS) += configfs/ obj-$(CONFIG_OCFS2_FS) += ocfs2/ obj-$(CONFIG_UNION_FS) += unionfs/ +obj-$(CONFIG_DAZUKO) += dazuko/ --- linux-source-2.6.15-2.6.15.orig/fs/proc/base.c +++ linux-source-2.6.15-2.6.15/fs/proc/base.c @@ -1362,6 +1362,7 @@ inode->i_uid = 0; inode->i_gid = 0; } + inode->i_mode &= ~(S_ISUID | S_ISGID); security_task_to_inode(task, inode); return 1; } @@ -1389,6 +1390,7 @@ inode->i_uid = 0; inode->i_gid = 0; } + inode->i_mode &= ~(S_ISUID | S_ISGID); security_task_to_inode(task, inode); return 1; } --- linux-source-2.6.15-2.6.15.orig/fs/buffer.c +++ linux-source-2.6.15-2.6.15/fs/buffer.c @@ -1183,8 +1183,21 @@ } while ((size << sizebits) < PAGE_SIZE); index = block >> sizebits; - block = index << sizebits; + /* + * Check for a block which wants to lie outside our maximum possible + * pagecache index. (this comparison is done using sector_t types). + */ + if (unlikely(index != block >> sizebits)) { + char b[BDEVNAME_SIZE]; + + printk(KERN_ERR "%s: requested out-of-range block %llu for " + "device %s\n", + __FUNCTION__, (unsigned long long)block, + bdevname(bdev, b)); + return -EIO; + } + block = index << sizebits; /* Create a page with the proper size buffers.. */ page = grow_dev_page(bdev, block, index, size); if (!page) @@ -1211,12 +1224,16 @@ for (;;) { struct buffer_head * bh; + int ret; bh = __find_get_block(bdev, block, size); if (bh) return bh; - if (!grow_buffers(bdev, block, size)) + ret = grow_buffers(bdev, block, size); + if (ret < 0) + return NULL; + if (ret == 0) free_more_memory(); } } --- linux-source-2.6.15-2.6.15.orig/fs/locks.c +++ linux-source-2.6.15-2.6.15/fs/locks.c @@ -432,15 +432,14 @@ */ static int lease_init(struct file *filp, int type, struct file_lock *fl) { + if (assign_type(fl, type) != 0) + return -EINVAL; + fl->fl_owner = current->files; fl->fl_pid = current->tgid; fl->fl_file = filp; fl->fl_flags = FL_LEASE; - if (assign_type(fl, type) != 0) { - locks_free_lock(fl); - return -EINVAL; - } fl->fl_start = 0; fl->fl_end = OFFSET_MAX; fl->fl_ops = NULL; @@ -452,16 +451,19 @@ static int lease_alloc(struct file *filp, int type, struct file_lock **flp) { struct file_lock *fl = locks_alloc_lock(); - int error; + int error = -ENOMEM; if (fl == NULL) - return -ENOMEM; + goto out; error = lease_init(filp, type, fl); - if (error) - return error; + if (error) { + locks_free_lock(fl); + fl = NULL; + } +out: *flp = fl; - return 0; + return error; } /* Check if two locks overlap each other. @@ -1338,6 +1340,7 @@ goto out; if (my_before != NULL) { + *flp = *my_before; error = lease->fl_lmops->fl_change(my_before, arg); goto out; } @@ -1609,6 +1612,7 @@ struct file_lock *file_lock = locks_alloc_lock(); struct flock flock; struct inode *inode; + struct file *f; int error; if (file_lock == NULL) @@ -1683,7 +1687,15 @@ * Attempt to detect a close/fcntl race and recover by * releasing the lock that was just acquired. */ - if (!error && fcheck(fd) != filp && flock.l_type != F_UNLCK) { + /* + * we need that spin_lock here - it prevents reordering between + * update of inode->i_flock and check for it done in close(). + * rcu_read_lock() wouldn't do. + */ + spin_lock(¤t->files->file_lock); + f = fcheck(fd); + spin_unlock(¤t->files->file_lock); + if (!error && f != filp && flock.l_type != F_UNLCK) { flock.l_type = F_UNLCK; goto again; } @@ -1752,6 +1764,7 @@ struct file_lock *file_lock = locks_alloc_lock(); struct flock64 flock; struct inode *inode; + struct file *f; int error; if (file_lock == NULL) @@ -1826,7 +1839,10 @@ * Attempt to detect a close/fcntl race and recover by * releasing the lock that was just acquired. */ - if (!error && fcheck(fd) != filp && flock.l_type != F_UNLCK) { + spin_lock(¤t->files->file_lock); + f = fcheck(fd); + spin_unlock(¤t->files->file_lock); + if (!error && f != filp && flock.l_type != F_UNLCK) { flock.l_type = F_UNLCK; goto again; } --- linux-source-2.6.15-2.6.15.orig/fs/smbfs/dir.c +++ linux-source-2.6.15-2.6.15/fs/smbfs/dir.c @@ -431,6 +431,11 @@ if (dentry->d_name.len > SMB_MAXNAMELEN) goto out; + /* Do not allow lookup of names with backslashes in */ + error = -EINVAL; + if (memchr(dentry->d_name.name, '\\', dentry->d_name.len)) + goto out; + lock_kernel(); error = smb_proc_getattr(dentry, &finfo); #ifdef SMBFS_PARANOIA --- linux-source-2.6.15-2.6.15.orig/fs/nfsd/nfs2acl.c +++ linux-source-2.6.15-2.6.15/fs/nfsd/nfs2acl.c @@ -287,13 +287,20 @@ return 1; } -static int nfsaclsvc_release_fhandle(struct svc_rqst *rqstp, u32 *p, - struct nfsd_fhandle *resp) +static int nfsaclsvc_release_attrstat(struct svc_rqst *rqstp, u32 *p, + struct nfsd_attrstat *resp) { fh_put(&resp->fh); return 1; } +static int nfsaclsvc_release_access(struct svc_rqst *rqstp, u32 *p, + struct nfsd3_accessres *resp) +{ + fh_put(&resp->fh); + return 1; +} + #define nfsaclsvc_decode_voidargs NULL #define nfsaclsvc_encode_voidres NULL #define nfsaclsvc_release_void NULL @@ -322,9 +329,9 @@ static struct svc_procedure nfsd_acl_procedures2[] = { PROC(null, void, void, void, RC_NOCACHE, ST), PROC(getacl, getacl, getacl, getacl, RC_NOCACHE, ST+1+2*(1+ACL)), - PROC(setacl, setacl, attrstat, fhandle, RC_NOCACHE, ST+AT), - PROC(getattr, fhandle, attrstat, fhandle, RC_NOCACHE, ST+AT), - PROC(access, access, access, fhandle, RC_NOCACHE, ST+AT+1), + PROC(setacl, setacl, attrstat, attrstat, RC_NOCACHE, ST+AT), + PROC(getattr, fhandle, attrstat, attrstat, RC_NOCACHE, ST+AT), + PROC(access, access, access, access, RC_NOCACHE, ST+AT+1), }; struct svc_version nfsd_acl_version2 = { --- linux-source-2.6.15-2.6.15.orig/fs/cifs/inode.c +++ linux-source-2.6.15-2.6.15/fs/cifs/inode.c @@ -746,7 +746,8 @@ d_instantiate(direntry, newinode); if (direntry->d_inode) direntry->d_inode->i_nlink = 2; - if (cifs_sb->tcon->ses->capabilities & CAP_UNIX) + if (cifs_sb->tcon->ses->capabilities & CAP_UNIX) { + mode &= ~current->fs->umask; if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SET_UID) { CIFSSMBUnixSetPerms(xid, pTcon, full_path, mode, @@ -764,7 +765,7 @@ cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR); } - else { + } else { /* BB to be implemented via Windows secrty descriptors eg CIFSSMBWinSetPerms(xid, pTcon, full_path, mode, -1, -1, local_nls); */ --- linux-source-2.6.15-2.6.15.orig/fs/cifs/connect.c +++ linux-source-2.6.15-2.6.15/fs/cifs/connect.c @@ -418,7 +418,7 @@ and so simply return error to mount */ break; } - if(length == -EINTR) { + if(!try_to_freeze() && (length == -EINTR)) { cFYI(1,("cifsd thread killed")); break; } @@ -2043,7 +2043,7 @@ pSMB->req_no_secext.ByteCount = cpu_to_le16(count); rc = SendReceive(xid, ses, smb_buffer, smb_buffer_response, - &bytes_returned, 1); + CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 1); if (rc) { /* rc = map_smb_to_linux_error(smb_buffer_response); now done in SendReceive */ } else if ((smb_buffer_response->WordCount == 3) @@ -2308,7 +2308,7 @@ pSMB->req.ByteCount = cpu_to_le16(count); rc = SendReceive(xid, ses, smb_buffer, smb_buffer_response, - &bytes_returned, 1); + CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 1); if (rc) { /* rc = map_smb_to_linux_error(smb_buffer_response); *//* done in SendReceive now */ } else if ((smb_buffer_response->WordCount == 3) @@ -2594,7 +2594,7 @@ pSMB->req.ByteCount = cpu_to_le16(count); rc = SendReceive(xid, ses, smb_buffer, smb_buffer_response, - &bytes_returned, 1); + CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 1); if (smb_buffer_response->Status.CifsError == cpu_to_le32(NT_STATUS_MORE_PROCESSING_REQUIRED)) @@ -3008,7 +3008,7 @@ pSMB->req.ByteCount = cpu_to_le16(count); rc = SendReceive(xid, ses, smb_buffer, smb_buffer_response, - &bytes_returned, 1); + CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 1); if (rc) { /* rc = map_smb_to_linux_error(smb_buffer_response); *//* done in SendReceive now */ } else if ((smb_buffer_response->WordCount == 3) @@ -3233,7 +3233,7 @@ pSMB->hdr.smb_buf_length += count; pSMB->ByteCount = cpu_to_le16(count); - rc = SendReceive(xid, ses, smb_buffer, smb_buffer_response, &length, 0); + rc = SendReceive(xid, ses, smb_buffer, smb_buffer_response, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &length, 0); /* if (rc) rc = map_smb_to_linux_error(smb_buffer_response); */ /* above now done in SendReceive */ --- linux-source-2.6.15-2.6.15.orig/fs/cifs/cifsproto.h +++ linux-source-2.6.15-2.6.15/fs/cifs/cifsproto.h @@ -46,6 +46,7 @@ extern int SendReceive(const unsigned int /* xid */ , struct cifsSesInfo *, struct smb_hdr * /* input */ , struct smb_hdr * /* out */ , + unsigned int /* out_buf_size */, int * /* bytes returned */ , const int long_op); extern int SendReceive2(const unsigned int /* xid */ , struct cifsSesInfo *, struct kvec *, int /* nvec */, --- linux-source-2.6.15-2.6.15.orig/fs/cifs/asn1.c +++ linux-source-2.6.15-2.6.15/fs/cifs/asn1.c @@ -183,6 +183,11 @@ } } } + + /* don't trust len bigger than ctx buffer */ + if (*len > ctx->end - ctx->pointer) + return 0; + return 1; } @@ -200,6 +205,10 @@ if (!asn1_length_decode(ctx, &def, &len)) return 0; + /* primitive shall be definite, indefinite shall be constructed */ + if (*con == ASN1_PRI && !def) + return 0; + if (def) *eoc = ctx->pointer + len; else @@ -386,6 +395,11 @@ unsigned long *optr; size = eoc - ctx->pointer + 1; + + /* first subid actually encodes first two subids */ + if (size < 2 || size > UINT_MAX/sizeof(unsigned long)) + return 0; + *oid = kmalloc(size * sizeof (unsigned long), GFP_ATOMIC); if (*oid == NULL) { return 0; --- linux-source-2.6.15-2.6.15.orig/fs/cifs/cifssmb.c +++ linux-source-2.6.15-2.6.15/fs/cifs/cifssmb.c @@ -370,7 +370,7 @@ pSMB->ByteCount = cpu_to_le16(count); rc = SendReceive(xid, ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc == 0) { server->secMode = pSMBr->SecurityMode; server->secType = NTLM; /* BB override default for @@ -500,7 +500,7 @@ } else { smb_buffer_response = smb_buffer; /* BB removeme BB */ } - rc = SendReceive(xid, tcon->ses, smb_buffer, smb_buffer_response, + rc = SendReceive(xid, tcon->ses, smb_buffer, smb_buffer_response, MAX_CIFS_HDR_SIZE, &length, 0); if (rc) cFYI(1, ("Tree disconnect failed %d", rc)); @@ -556,7 +556,7 @@ pSMB->AndXCommand = 0xFF; rc = SendReceive(xid, ses, (struct smb_hdr *) pSMB, - smb_buffer_response, &length, 0); + smb_buffer_response, MAX_CIFS_HDR_SIZE, &length, 0); if (ses->server) { atomic_dec(&ses->server->socketUseCount); if (atomic_read(&ses->server->socketUseCount) == 0) { @@ -610,7 +610,7 @@ pSMB->hdr.smb_buf_length += name_len + 1; pSMB->ByteCount = cpu_to_le16(name_len + 1); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); cifs_stats_inc(&tcon->num_deletes); if (rc) { cFYI(1, ("Error in RMFile = %d", rc)); @@ -655,7 +655,7 @@ pSMB->hdr.smb_buf_length += name_len + 1; pSMB->ByteCount = cpu_to_le16(name_len + 1); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); cifs_stats_inc(&tcon->num_rmdirs); if (rc) { cFYI(1, ("Error in RMDir = %d", rc)); @@ -699,7 +699,7 @@ pSMB->hdr.smb_buf_length += name_len + 1; pSMB->ByteCount = cpu_to_le16(name_len + 1); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); cifs_stats_inc(&tcon->num_mkdirs); if (rc) { cFYI(1, ("Error in Mkdir = %d", rc)); @@ -817,7 +817,7 @@ pSMB->ByteCount = cpu_to_le16(count); /* long_op set to 1 to allow for oplock break timeouts */ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 1); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 1); cifs_stats_inc(&tcon->num_opens); if (rc) { cFYI(1, ("Error in Open = %d", rc)); @@ -931,7 +931,7 @@ pSMB->ByteCount = cpu_to_le16(count); /* long_op set to 1 to allow for oplock break timeouts */ rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 1); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 1); cifs_stats_inc(&tcon->num_opens); if (rc) { cFYI(1, ("Error in Open = %d", rc)); @@ -1011,7 +1011,7 @@ } rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); cifs_stats_inc(&tcon->num_reads); if (rc) { cERROR(1, ("Send error in read = %d", rc)); @@ -1136,7 +1136,7 @@ } rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, long_op); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, long_op); cifs_stats_inc(&tcon->num_writes); if (rc) { cFYI(1, ("Send error in write = %d", rc)); @@ -1289,7 +1289,7 @@ pSMB->ByteCount = cpu_to_le16(count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, timeout); + (struct smb_hdr *) pSMBr, MAX_CIFS_HDR_SIZE, &bytes_returned, timeout); cifs_stats_inc(&tcon->num_locks); if (rc) { cFYI(1, ("Send error in Lock = %d", rc)); @@ -1323,7 +1323,7 @@ pSMB->LastWriteTime = 0; pSMB->ByteCount = 0; rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, MAX_CIFS_HDR_SIZE, &bytes_returned, 0); cifs_stats_inc(&tcon->num_closes); if (rc) { if(rc!=-EINTR) { @@ -1396,7 +1396,7 @@ pSMB->ByteCount = cpu_to_le16(count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); cifs_stats_inc(&tcon->num_renames); if (rc) { cFYI(1, ("Send error in rename = %d", rc)); @@ -1475,7 +1475,7 @@ pSMB->hdr.smb_buf_length += byte_count; pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, pTcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); cifs_stats_inc(&pTcon->num_t2renames); if (rc) { cFYI(1,("Send error in Rename (by file handle) = %d", rc)); @@ -1543,7 +1543,7 @@ pSMB->ByteCount = cpu_to_le16(count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in copy = %d with %d files copied", rc, le16_to_cpu(pSMBr->CopyCount))); @@ -1633,7 +1633,7 @@ pSMB->hdr.smb_buf_length += byte_count; pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); cifs_stats_inc(&tcon->num_symlinks); if (rc) { cFYI(1, @@ -1723,7 +1723,7 @@ pSMB->hdr.smb_buf_length += byte_count; pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); cifs_stats_inc(&tcon->num_hardlinks); if (rc) { cFYI(1, ("Send error in SetPathInfo (hard link) = %d", rc)); @@ -1794,7 +1794,7 @@ pSMB->ByteCount = cpu_to_le16(count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); cifs_stats_inc(&tcon->num_hardlinks); if (rc) { cFYI(1, ("Send error in hard link (NT rename) = %d", rc)); @@ -1867,7 +1867,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in QuerySymLinkInfo = %d", rc)); } else { @@ -1944,7 +1944,7 @@ pSMB->ByteCount = 0; rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in QueryReparseLinkInfo = %d", rc)); } else { /* decode response */ @@ -2198,7 +2198,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in Query POSIX ACL = %d", rc)); } else { @@ -2289,7 +2289,7 @@ pSMB->hdr.smb_buf_length += byte_count; pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Set POSIX ACL returned %d", rc)); } @@ -2349,7 +2349,7 @@ pSMB->t2.ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("error %d in GetExtAttr", rc)); } else { @@ -2423,7 +2423,7 @@ pSMB->ByteCount = cpu_to_le16(name_len); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in QueryInfo = %d", rc)); } else if (pFinfo) { /* decode response */ @@ -2505,7 +2505,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in QPathInfo = %d", rc)); } else { /* decode response */ @@ -2587,7 +2587,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in QPathInfo = %d", rc)); } else { /* decode response */ @@ -2777,7 +2777,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); cifs_stats_inc(&tcon->num_ffirst); if (rc) {/* BB add logic to retry regular search if Unix search rejected unexpectedly by server */ @@ -2899,7 +2899,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); cifs_stats_inc(&tcon->num_fnext); if (rc) { if (rc == -EBADF) { @@ -2973,7 +2973,7 @@ pSMB->FileID = searchHandle; pSMB->ByteCount = 0; rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cERROR(1, ("Send error in FindClose = %d", rc)); } @@ -3048,7 +3048,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("error %d in QueryInternalInfo", rc)); } else { @@ -3159,7 +3159,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in GetDFSRefer = %d", rc)); } else { /* decode response */ @@ -3300,7 +3300,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in QFSInfo = %d", rc)); } else { /* decode response */ @@ -3381,7 +3381,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in QFSInfo = %d", rc)); } else { /* decode response */ @@ -3461,7 +3461,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cERROR(1, ("Send error in QFSAttributeInfo = %d", rc)); } else { /* decode response */ @@ -3530,7 +3530,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in QFSDeviceInfo = %d", rc)); } else { /* decode response */ @@ -3598,7 +3598,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cERROR(1, ("Send error in QFSUnixInfo = %d", rc)); } else { /* decode response */ @@ -3678,7 +3678,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cERROR(1, ("Send error in SETFSUnixInfo = %d", rc)); } else { /* decode response */ @@ -3740,7 +3740,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in QFSUnixInfo = %d", rc)); } else { /* decode response */ @@ -3866,7 +3866,7 @@ parm_data->FileSize = cpu_to_le64(size); pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("SetPathInfo (file size) returned %d", rc)); } @@ -3951,7 +3951,7 @@ pSMB->hdr.smb_buf_length += byte_count; pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in SetFileInfo (SetFileSize) = %d", @@ -4032,7 +4032,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); memcpy(data_offset,data,sizeof(FILE_BASIC_INFO)); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1,("Send error in Set Time (SetFileInfo) = %d",rc)); } @@ -4112,7 +4112,7 @@ memcpy(data_offset, data, sizeof (FILE_BASIC_INFO)); pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("SetPathInfo (times) returned %d", rc)); } @@ -4265,7 +4265,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("SetPathInfo (perms) returned %d", rc)); } @@ -4315,7 +4315,7 @@ pSMB->ByteCount = 0; rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, -1); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, -1); if (rc) { cFYI(1, ("Error in Notify = %d", rc)); } else { @@ -4405,7 +4405,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in QueryAllEAs = %d", rc)); } else { /* decode response */ @@ -4548,7 +4548,7 @@ pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("Send error in Query EA = %d", rc)); } else { /* decode response */ @@ -4728,7 +4728,7 @@ pSMB->hdr.smb_buf_length += byte_count; pSMB->ByteCount = cpu_to_le16(byte_count); rc = SendReceive(xid, tcon->ses, (struct smb_hdr *) pSMB, - (struct smb_hdr *) pSMBr, &bytes_returned, 0); + (struct smb_hdr *) pSMBr, CIFSMaxBufSize + MAX_CIFS_HDR_SIZE, &bytes_returned, 0); if (rc) { cFYI(1, ("SetPathInfo (EA) returned %d", rc)); } --- linux-source-2.6.15-2.6.15.orig/fs/cifs/transport.c +++ linux-source-2.6.15-2.6.15/fs/cifs/transport.c @@ -554,6 +554,7 @@ int SendReceive(const unsigned int xid, struct cifsSesInfo *ses, struct smb_hdr *in_buf, struct smb_hdr *out_buf, + unsigned int out_buf_size, int *pbytes_returned, const int long_op) { int rc = 0; @@ -750,7 +751,7 @@ return rc; } - if (receive_len > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE) { + if (receive_len > out_buf_size - 4) { cERROR(1, ("Frame too large received. Length: %d Xid: %d", receive_len, xid)); rc = -EIO; --- linux-source-2.6.15-2.6.15.orig/fs/cifs/dir.c +++ linux-source-2.6.15-2.6.15/fs/cifs/dir.c @@ -197,7 +197,8 @@ /* If Open reported that we actually created a file then we now have to set the mode if possible */ if ((cifs_sb->tcon->ses->capabilities & CAP_UNIX) && - (oplock & CIFS_CREATE_ACTION)) + (oplock & CIFS_CREATE_ACTION)) { + mode &= ~current->fs->umask; if(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SET_UID) { CIFSSMBUnixSetPerms(xid, pTcon, full_path, mode, (__u64)current->euid, @@ -215,7 +216,7 @@ cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR); } - else { + } else { /* BB implement mode setting via Windows security descriptors */ /* eg CIFSSMBWinSetPerms(xid,pTcon,full_path,mode,-1,-1,local_nls);*/ /* could set r/o dos attribute if mode & 0222 == 0 */ @@ -323,6 +324,7 @@ if(full_path == NULL) rc = -ENOMEM; else if (pTcon->ses->capabilities & CAP_UNIX) { + mode &= ~current->fs->umask; if(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SET_UID) { rc = CIFSSMBUnixSetPerms(xid, pTcon, full_path, mode,(__u64)current->euid,(__u64)current->egid, @@ -441,6 +443,20 @@ cifs_sb = CIFS_SB(parent_dir_inode->i_sb); pTcon = cifs_sb->tcon; + /* + * Don't allow the separator character in a path component. + * The VFS will not allow "/", but "\" is allowed by posix. + */ + if (!(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS)) { + int i; + for (i = 0; i < direntry->d_name.len; i++) + if (direntry->d_name.name[i] == '\\') { + cFYI(1, ("Invalid file name")); + FreeXid(xid); + return ERR_PTR(-EINVAL); + } + } + /* can not grab the rename sem here since it would deadlock in the cases (beginning of sys_rename itself) in which we already have the sb rename sem */ --- linux-source-2.6.15-2.6.15.orig/fs/hfs/super.c +++ linux-source-2.6.15-2.6.15/fs/hfs/super.c @@ -390,11 +390,13 @@ hfs_find_exit(&fd); goto bail_no_root; } + res = -EINVAL; root_inode = hfs_iget(sb, &fd.search_key->cat, &rec); hfs_find_exit(&fd); if (!root_inode) goto bail_no_root; + res = -ENOMEM; sb->s_root = d_alloc_root(root_inode); if (!sb->s_root) goto bail_iput; --- linux-source-2.6.15-2.6.15.orig/fs/squashfs/inode.c +++ linux-source-2.6.15-2.6.15/fs/squashfs/inode.c @@ -2,7 +2,7 @@ * Squashfs - a compressed read only filesystem for Linux * * Copyright (c) 2002, 2003, 2004, 2005, 2006 - * Phillip Lougher + * Phillip Lougher * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -36,7 +37,6 @@ #include #include #include -#include #include #include #include @@ -63,9 +63,6 @@ static struct super_block *squashfs_get_sb(struct file_system_type *, int, const char *, void *); - -static z_stream stream; - static struct file_system_type squashfs_fs_type = { .owner = THIS_MODULE, .name = "squashfs", @@ -176,14 +173,15 @@ SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer, long long index, unsigned int length, - long long *next_index) + long long *next_index, int srclength) { struct squashfs_sb_info *msblk = s->s_fs_info; + struct squashfs_super_block *sblk = &msblk->sblk; struct buffer_head *bh[((SQUASHFS_FILE_MAX_SIZE - 1) >> msblk->devblksize_log2) + 2]; unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1); unsigned int cur_index = index >> msblk->devblksize_log2; - int bytes, avail_bytes, b = 0, k; + int bytes, avail_bytes, b = 0, k = 0; char *c_buffer; unsigned int compressed; unsigned int c_byte = length; @@ -194,8 +192,11 @@ c_buffer = compressed ? msblk->read_data : buffer; c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte); - TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed - ? "" : "un", (unsigned int) c_byte); + TRACE("Block @ 0x%llx, %scompressed size %d, src size %d\n", index, compressed + ? "" : "un", (unsigned int) c_byte, srclength); + + if (c_byte > srclength || index < 0 || (index + c_byte) > sblk->bytes_used) + goto read_failure; if (!(bh[0] = sb_getblk(s, cur_index))) goto block_release; @@ -207,6 +208,9 @@ } ll_rw_block(READ, b, bh); } else { + if (index < 0 || (index + 2) > sblk->bytes_used) + goto read_failure; + if (!(bh[0] = get_block_length(s, &cur_index, &offset, &c_byte))) goto read_failure; @@ -219,6 +223,9 @@ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed ? "" : "un", (unsigned int) c_byte); + if (c_byte > srclength || (index + c_byte) > sblk->bytes_used) + goto read_failure; + for (b = 1; bytes < c_byte; b++) { if (!(bh[b] = sb_getblk(s, ++cur_index))) goto block_release; @@ -230,7 +237,7 @@ if (compressed) down(&msblk->read_data_mutex); - for (bytes = 0, k = 0; k < b; k++) { + for (bytes = 0; k < b; k++) { avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ? msblk->devblksize - offset : c_byte - bytes; @@ -249,20 +256,20 @@ if (compressed) { int zlib_err; - stream.next_in = c_buffer; - stream.avail_in = c_byte; - stream.next_out = buffer; - stream.avail_out = msblk->read_size; + msblk->stream.next_in = c_buffer; + msblk->stream.avail_in = c_byte; + msblk->stream.next_out = buffer; + msblk->stream.avail_out = srclength; - if (((zlib_err = zlib_inflateInit(&stream)) != Z_OK) || - ((zlib_err = zlib_inflate(&stream, Z_FINISH)) + if (((zlib_err = zlib_inflateInit(&msblk->stream)) != Z_OK) || + ((zlib_err = zlib_inflate(&msblk->stream, Z_FINISH)) != Z_STREAM_END) || ((zlib_err = - zlib_inflateEnd(&stream)) != Z_OK)) { + zlib_inflateEnd(&msblk->stream)) != Z_OK)) { ERROR("zlib_fs returned unexpected result 0x%x\n", zlib_err); bytes = 0; } else - bytes = stream.total_out; + bytes = msblk->stream.total_out; up(&msblk->read_data_mutex); } @@ -274,8 +281,8 @@ return bytes; block_release: - while (--b >= 0) - brelse(bh[b]); + for (; k < b; k++) + brelse(bh[k]); read_failure: ERROR("sb_bread failed reading block 0x%x\n", cur_index); @@ -339,14 +346,20 @@ msblk->block_cache[i].block = SQUASHFS_USED_BLK; up(&msblk->block_cache_mutex); - if (!(msblk->block_cache[i].length = - squashfs_read_data(s, - msblk->block_cache[i].data, - block, 0, &next_index))) { - ERROR("Unable to read cache block [%llx:%x]\n", - block, offset); - goto out; - } + msblk->block_cache[i].length = squashfs_read_data(s, + msblk->block_cache[i].data, block, 0, &next_index, + SQUASHFS_METADATA_SIZE); + + if (msblk->block_cache[i].length == 0) { + ERROR("Unable to read cache block [%llx:%x]\n", + block, offset); + down(&msblk->block_cache_mutex); + msblk->block_cache[i].block = SQUASHFS_INVALID_BLK; + kfree(msblk->block_cache[i].data); + wake_up(&msblk->waitq); + up(&msblk->block_cache_mutex); + goto out; + } down(&msblk->block_cache_mutex); wake_up(&msblk->waitq); @@ -360,7 +373,11 @@ continue; } - if ((bytes = msblk->block_cache[i].length - offset) >= length) { + bytes = msblk->block_cache[i].length - offset; + + if (bytes < 1) + goto out; + else if (bytes >= length) { if (buffer) memcpy(buffer, msblk->block_cache[i].data + offset, length); @@ -445,6 +462,7 @@ { int i, n; struct squashfs_sb_info *msblk = s->s_fs_info; + struct squashfs_super_block *sblk = &msblk->sblk; while ( 1 ) { down(&msblk->fragment_mutex); @@ -476,9 +494,8 @@ SQUASHFS_CACHED_FRAGMENTS; if (msblk->fragment[i].data == NULL) - if (!(msblk->fragment[i].data = kmalloc - (SQUASHFS_FILE_MAX_SIZE, - GFP_KERNEL))) { + if (!(msblk->fragment[i].data = SQUASHFS_ALLOC + (SQUASHFS_FILE_MAX_SIZE))) { ERROR("Failed to allocate fragment " "cache block\n"); up(&msblk->fragment_mutex); @@ -491,7 +508,8 @@ if (!(msblk->fragment[i].length = squashfs_read_data(s, msblk->fragment[i].data, - start_block, length, NULL))) { + start_block, length, NULL, + sblk->block_size))) { ERROR("Unable to read fragment cache block " "[%llx]\n", start_block); msblk->fragment[i].locked = 0; @@ -880,6 +898,10 @@ { struct squashfs_sb_info *msblk = s->s_fs_info; struct squashfs_super_block *sblk = &msblk->sblk; + unsigned int length = SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments); + + if (length == 0) + return 1; /* Allocate fragment index table */ if (!(msblk->fragment_index = kmalloc(SQUASHFS_FRAGMENT_INDEX_BYTES @@ -888,20 +910,16 @@ return 0; } - if (SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments) && - !squashfs_read_data(s, (char *) - msblk->fragment_index, - sblk->fragment_table_start, - SQUASHFS_FRAGMENT_INDEX_BYTES - (sblk->fragments) | - SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) { + if (!squashfs_read_data(s, (char *) msblk->fragment_index, + sblk->fragment_table_start, length | + SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, length)) { ERROR("unable to read fragment index table\n"); return 0; } if (msblk->swap) { int i; - unsigned int fragment; + long long fragment; for (i = 0; i < SQUASHFS_FRAGMENT_INDEXES(sblk->fragments); i++) { @@ -968,6 +986,10 @@ } memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info)); msblk = s->s_fs_info; + if (!(msblk->stream.workspace = vmalloc(zlib_inflate_workspacesize()))) { + ERROR("Failed to allocate zlib workspace\n"); + goto failure; + } sblk = &msblk->sblk; msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE); @@ -982,9 +1004,11 @@ init_waitqueue_head(&msblk->waitq); init_waitqueue_head(&msblk->fragment_wait_queue); + sblk->bytes_used = sizeof(struct squashfs_super_block); if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START, sizeof(struct squashfs_super_block) | - SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) { + SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, + sizeof(struct squashfs_super_block))) { SERROR("unable to read superblock\n"); goto failed_mount; } @@ -1012,6 +1036,15 @@ if(!supported_squashfs_filesystem(msblk, silent)) goto failed_mount; + /* Check the filesystem does not extend beyond the end of the + block device */ + if(sblk->bytes_used < 0 || sblk->bytes_used > i_size_read(s->s_bdev->bd_inode)) + goto failed_mount; + + /* Check the root inode for sanity */ + if (SQUASHFS_INODE_OFFSET(sblk->root_inode) > SQUASHFS_METADATA_SIZE) + goto failed_mount; + TRACE("Found valid superblock on %s\n", bdevname(s->s_bdev, b)); TRACE("Inodes are %scompressed\n", SQUASHFS_UNCOMPRESSED_INODES @@ -1081,7 +1114,9 @@ if (!squashfs_read_data(s, (char *) &suid, sblk->uid_start, ((sblk->no_uids + sblk->no_guids) * sizeof(unsigned int)) | - SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) { + SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, + (sblk->no_uids + sblk->no_guids) * + sizeof(unsigned int))) { ERROR("unable to read uid/gid table\n"); goto failed_mount; } @@ -1092,7 +1127,9 @@ if (!squashfs_read_data(s, (char *) msblk->uid, sblk->uid_start, ((sblk->no_uids + sblk->no_guids) * sizeof(unsigned int)) | - SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) { + SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, + (sblk->no_uids + sblk->no_guids) * + sizeof(unsigned int))) { ERROR("unable to read uid/gid table\n"); goto failed_mount; } @@ -1140,6 +1177,7 @@ kfree(msblk->read_data); kfree(msblk->block_cache); kfree(msblk->fragment_index_2); + vfree(msblk->stream.workspace); kfree(s->s_fs_info); s->s_fs_info = NULL; return -EINVAL; @@ -1482,7 +1520,7 @@ struct inode *inode = page->mapping->host; struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info; struct squashfs_super_block *sblk = &msblk->sblk; - unsigned char block_list[SIZE]; + unsigned char *block_list; long long block; unsigned int bsize, i = 0, bytes = 0, byte_offset = 0; int index = page->index >> (sblk->block_log - PAGE_CACHE_SHIFT); @@ -1498,6 +1536,11 @@ page->index, SQUASHFS_I(inode)->start_block); + if (!(block_list = kmalloc(SIZE, GFP_KERNEL))) { + ERROR("Failed to allocate block_list\n"); + goto skip_read; + } + if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT)) goto skip_read; @@ -1512,7 +1555,8 @@ down(&msblk->read_page_mutex); if (!(bytes = squashfs_read_data(inode->i_sb, msblk->read_page, - block, bsize, NULL))) { + block, bsize, NULL, + msblk->read_size))) { ERROR("Unable to read page, block %llx, size %x\n", block, bsize); up(&msblk->read_page_mutex); @@ -1580,6 +1624,7 @@ else release_cached_fragment(msblk, fragment); + kfree(block_list); return 0; skip_read: @@ -1590,6 +1635,7 @@ SetPageUptodate(page); unlock_page(page); + kfree(block_list); return 0; } @@ -1599,7 +1645,7 @@ struct inode *inode = page->mapping->host; struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info; struct squashfs_super_block *sblk = &msblk->sblk; - unsigned char block_list[SIZE]; + unsigned char *block_list; long long block; unsigned int bsize, bytes = 0; void *pageaddr; @@ -1610,7 +1656,12 @@ if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT)) { - pageaddr = kmap_atomic(page, KM_USER0); + block_list = NULL; + goto skip_read; + } + + if (!(block_list = kmalloc(SIZE, GFP_KERNEL))) { + ERROR("Failed to allocate block_list\n"); goto skip_read; } @@ -1622,11 +1673,12 @@ down(&msblk->read_page_mutex); bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block, - bsize, NULL); - pageaddr = kmap_atomic(page, KM_USER0); - if (bytes) + bsize, NULL, msblk->read_size); + if (bytes) { + pageaddr = kmap_atomic(page, KM_USER0); memcpy(pageaddr, msblk->read_page, bytes); - else + kunmap_atomic(pageaddr, KM_USER0); + } else ERROR("Unable to read page, block %llx, size %x\n", block, bsize); up(&msblk->read_page_mutex); @@ -1636,11 +1688,12 @@ SQUASHFS_I(inode)-> u.s1.fragment_start_block, SQUASHFS_I(inode)-> u.s1.fragment_size); - pageaddr = kmap_atomic(page, KM_USER0); if (fragment) { bytes = i_size_read(inode) & (sblk->block_size - 1); + pageaddr = kmap_atomic(page, KM_USER0); memcpy(pageaddr, fragment->data + SQUASHFS_I(inode)-> u.s1.fragment_offset, bytes); + kunmap_atomic(pageaddr, KM_USER0); release_cached_fragment(msblk, fragment); } else ERROR("Unable to read page, block %llx, size %x\n", @@ -1650,12 +1703,14 @@ } skip_read: + pageaddr = kmap_atomic(page, KM_USER0); memset(pageaddr + bytes, 0, PAGE_CACHE_SIZE - bytes); kunmap_atomic(pageaddr, KM_USER0); flush_dcache_page(page); SetPageUptodate(page); unlock_page(page); + kfree(block_list); return 0; } @@ -1719,12 +1774,18 @@ struct squashfs_sb_info *msblk = s->s_fs_info; struct squashfs_super_block *sblk = &msblk->sblk; int i, length = 0; - char buffer[sizeof(struct squashfs_dir_index) + SQUASHFS_NAME_LEN + 1]; - struct squashfs_dir_index *index = (struct squashfs_dir_index *) buffer; - char str[SQUASHFS_NAME_LEN + 1]; + struct squashfs_dir_index *index; + char *str; TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count); + if (!(str = kmalloc(sizeof(struct squashfs_dir_index) + + (SQUASHFS_NAME_LEN + 1) * 2, GFP_KERNEL))) { + ERROR("Failed to allocate squashfs_dir_index\n"); + goto failure; + } + + index = (struct squashfs_dir_index *) (str + SQUASHFS_NAME_LEN + 1); strncpy(str, name, size); str[size] = '\0'; @@ -1756,6 +1817,8 @@ } *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE; + kfree(str); +failure: return length + 3; } @@ -1767,14 +1830,19 @@ struct squashfs_super_block *sblk = &msblk->sblk; long long next_block = SQUASHFS_I(i)->start_block + sblk->directory_table_start; - int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0, + int next_offset = SQUASHFS_I(i)->offset, length = 0, dir_count; struct squashfs_dir_header dirh; - char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN + 1]; - struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer; + struct squashfs_dir_entry *dire; TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset); + if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) + + SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) { + ERROR("Failed to allocate squashfs_dir_entry\n"); + goto finish; + } + while(file->f_pos < 3) { char *name; int size, i_ino; @@ -1800,7 +1868,6 @@ goto finish; } file->f_pos += size; - dirs_read++; } length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset, @@ -1881,16 +1948,17 @@ goto finish; } file->f_pos = length; - dirs_read++; } } finish: - return dirs_read; + kfree(dire); + return 0; failed_read: ERROR("Unable to read directory block [%llx:%x]\n", next_block, next_offset); + kfree(dire); return 0; } @@ -1908,11 +1976,16 @@ int next_offset = SQUASHFS_I(i)->offset, length = 0, dir_count; struct squashfs_dir_header dirh; - char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN]; - struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer; + struct squashfs_dir_entry *dire; TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset); + if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) + + SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) { + ERROR("Failed to allocate squashfs_dir_entry\n"); + goto exit_loop; + } + if (len > SQUASHFS_NAME_LEN) goto exit_loop; @@ -1993,6 +2066,7 @@ } exit_loop: + kfree(dire); d_add(dentry, inode); return ERR_PTR(0); @@ -2016,7 +2090,7 @@ kfree(sbi->block_cache[i].data); if (sbi->fragment) for (i = 0; i < SQUASHFS_CACHED_FRAGMENTS; i++) - kfree(sbi->fragment[i].data); + SQUASHFS_FREE(sbi->fragment[i].data); kfree(sbi->fragment); kfree(sbi->block_cache); kfree(sbi->read_data); @@ -2025,6 +2099,7 @@ kfree(sbi->fragment_index); kfree(sbi->fragment_index_2); kfree(sbi->meta_index); + vfree(sbi->stream.workspace); kfree(s->s_fs_info); s->s_fs_info = NULL; } @@ -2044,20 +2119,11 @@ if (err) goto out; - printk(KERN_INFO "squashfs: version 3.0prerelease (2006/1/24) " + printk(KERN_INFO "squashfs: version 3.1 (2006/08/15) " "Phillip Lougher\n"); - if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) { - ERROR("Failed to allocate zlib workspace\n"); - destroy_inodecache(); - err = -ENOMEM; - goto out; - } - - if ((err = register_filesystem(&squashfs_fs_type))) { - vfree(stream.workspace); + if ((err = register_filesystem(&squashfs_fs_type))) destroy_inodecache(); - } out: return err; @@ -2066,7 +2132,6 @@ static void __exit exit_squashfs_fs(void) { - vfree(stream.workspace); unregister_filesystem(&squashfs_fs_type); destroy_inodecache(); } @@ -2124,5 +2189,5 @@ module_init(init_squashfs_fs); module_exit(exit_squashfs_fs); MODULE_DESCRIPTION("squashfs, a compressed read-only filesystem"); -MODULE_AUTHOR("Phillip Lougher "); +MODULE_AUTHOR("Phillip Lougher "); MODULE_LICENSE("GPL"); --- linux-source-2.6.15-2.6.15.orig/fs/squashfs/squashfs2_0.c +++ linux-source-2.6.15-2.6.15/fs/squashfs/squashfs2_0.c @@ -2,7 +2,7 @@ * Squashfs - a compressed read only filesystem for Linux * * Copyright (c) 2002, 2003, 2004, 2005, 2006 - * Phillip Lougher + * Phillip Lougher * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -72,12 +73,13 @@ } if (SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments) && - !squashfs_read_data(s, (char *) - msblk->fragment_index_2, - sblk->fragment_table_start, - SQUASHFS_FRAGMENT_INDEX_BYTES_2 - (sblk->fragments) | - SQUASHFS_COMPRESSED_BIT_BLOCK, NULL)) { + !squashfs_read_data(s, (char *) + msblk->fragment_index_2, + sblk->fragment_table_start, + SQUASHFS_FRAGMENT_INDEX_BYTES_2 + (sblk->fragments) | + SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, + SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments))) { ERROR("unable to read fragment index table\n"); return 0; } @@ -392,7 +394,8 @@ i->i_mode |= (inodeb->inode_type == SQUASHFS_CHRDEV_TYPE) ? S_IFCHR : S_IFBLK; - init_special_inode(i, i->i_mode, old_decode_dev(inodep->rdev)); + init_special_inode(i, i->i_mode, + old_decode_dev(inodep->rdev)); TRACE("Device inode %x:%x, rdev %x\n", SQUASHFS_INODE_BLK(inode), offset, @@ -484,12 +487,18 @@ struct squashfs_sb_info *msblk = s->s_fs_info; struct squashfs_super_block *sblk = &msblk->sblk; int i, length = 0; - char buffer[sizeof(struct squashfs_dir_index_2) + SQUASHFS_NAME_LEN + 1]; - struct squashfs_dir_index_2 *index = (struct squashfs_dir_index_2 *) buffer; - char str[SQUASHFS_NAME_LEN + 1]; + struct squashfs_dir_index_2 *index; + char *str; TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count); + if (!(str = kmalloc(sizeof(struct squashfs_dir_index) + + (SQUASHFS_NAME_LEN + 1) * 2, GFP_KERNEL))) { + ERROR("Failed to allocate squashfs_dir_index\n"); + goto failure; + } + + index = (struct squashfs_dir_index_2 *) (str + SQUASHFS_NAME_LEN + 1); strncpy(str, name, size); str[size] = '\0'; @@ -521,6 +530,8 @@ } *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE; + kfree(str); +failure: return length; } @@ -532,14 +543,19 @@ struct squashfs_super_block *sblk = &msblk->sblk; long long next_block = SQUASHFS_I(i)->start_block + sblk->directory_table_start; - int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0, + int next_offset = SQUASHFS_I(i)->offset, length = 0, dir_count; struct squashfs_dir_header_2 dirh; - char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN + 1]; - struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer; + struct squashfs_dir_entry_2 *dire; TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset); + if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) + + SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) { + ERROR("Failed to allocate squashfs_dir_entry\n"); + goto finish; + } + length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset, SQUASHFS_I(i)->u.s2.directory_index_start, SQUASHFS_I(i)->u.s2.directory_index_offset, @@ -617,16 +633,17 @@ goto finish; } file->f_pos = length; - dirs_read++; } } finish: - return dirs_read; + kfree(dire); + return 0; failed_read: ERROR("Unable to read directory block [%llx:%x]\n", next_block, next_offset); + kfree(dire); return 0; } @@ -644,11 +661,16 @@ int next_offset = SQUASHFS_I(i)->offset, length = 0, dir_count; struct squashfs_dir_header_2 dirh; - char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN]; - struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer; + struct squashfs_dir_entry_2 *dire; int sorted = sblk->s_major == 2 && sblk->s_minor >= 1; - TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset); + TRACE("Entered squashfs_lookup_2 [%llx:%x]\n", next_block, next_offset); + + if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) + + SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) { + ERROR("Failed to allocate squashfs_dir_entry\n"); + goto exit_loop; + } if (len > SQUASHFS_NAME_LEN) goto exit_loop; @@ -729,6 +751,7 @@ } exit_loop: + kfree(dire); d_add(dentry, inode); return ERR_PTR(0); --- linux-source-2.6.15-2.6.15.orig/fs/squashfs/squashfs.h +++ linux-source-2.6.15-2.6.15/fs/squashfs/squashfs.h @@ -2,7 +2,7 @@ * Squashfs - a compressed read only filesystem for Linux * * Copyright (c) 2002, 2003, 2004, 2005, 2006 - * Phillip Lougher + * Phillip Lougher * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -49,7 +49,7 @@ #define SQSH_EXTERN extern unsigned int squashfs_read_data(struct super_block *s, char *buffer, long long index, unsigned int length, - long long *next_index); + long long *next_index, int srclength); extern int squashfs_get_cached_block(struct super_block *s, char *buffer, long long block, unsigned int offset, int length, long long *next_block, --- linux-source-2.6.15-2.6.15.orig/fs/cramfs/inode.c +++ linux-source-2.6.15-2.6.15/fs/cramfs/inode.c @@ -482,6 +482,8 @@ pgdata = kmap(page); if (compr_len == 0) ; /* hole */ + else if (compr_len > (PAGE_CACHE_SIZE << 1)) + printk(KERN_ERR "cramfs: bad compressed blocksize %u\n", compr_len); else { down(&read_mutex); bytes_filled = cramfs_uncompress_block(pgdata, --- linux-source-2.6.15-2.6.15.orig/fs/compat.c +++ linux-source-2.6.15-2.6.15/fs/compat.c @@ -815,7 +815,7 @@ retval = -EINVAL; - if (type_page) { + if (type_page && data_page) { if (!strcmp((char *)type_page, SMBFS_NAME)) { do_smb_super_data_conv((void *)data_page); } else if (!strcmp((char *)type_page, NCPFS_NAME)) { @@ -1173,6 +1173,10 @@ if (ret) goto out; + ret = security_file_permission(file, type == READ ? MAY_READ:MAY_WRITE); + if (ret) + goto out; + fnv = NULL; if (type == READ) { fn = file->f_op->read; --- linux-source-2.6.15-2.6.15.orig/fs/binfmt_elf_fdpic.c +++ linux-source-2.6.15-2.6.15/fs/binfmt_elf_fdpic.c @@ -191,6 +191,14 @@ if (!interpreter_name) goto error; + /* + * If the binary is not readable then enforce + * mm->dumpable = 0 regardless of the interpreter's + * permissions. + */ + if (file_permission(interpreter, MAY_READ) < 0) + bprm->interp_flags |= BINPRM_FLAGS_ENFORCE_NONDUMP; + retval = kernel_read(bprm->file, phdr->p_offset, interpreter_name, --- linux-source-2.6.15-2.6.15.orig/fs/dnotify.c +++ linux-source-2.6.15-2.6.15/fs/dnotify.c @@ -20,6 +20,7 @@ #include #include #include +#include int dir_notify_enable = 1; @@ -66,6 +67,7 @@ struct dnotify_struct **prev; struct inode *inode; fl_owner_t id = current->files; + struct file *f; int error = 0; if ((arg & ~DN_MULTISHOT) == 0) { @@ -92,6 +94,15 @@ prev = &odn->dn_next; } + rcu_read_lock(); + f = fcheck(fd); + rcu_read_unlock(); + /* we'd lost the race with close(), sod off silently */ + /* note that inode->i_lock prevents reordering problems + * between accesses to descriptor table and ->i_dnotify */ + if (f != filp) + goto out_free; + error = f_setown(filp, current->pid, 0); if (error) goto out_free; --- linux-source-2.6.15-2.6.15.orig/fs/Kconfig +++ linux-source-2.6.15-2.6.15/fs/Kconfig @@ -389,6 +389,24 @@ If you don't know whether you need it, then you don't need it: answer N. +config DAZUKO + tristate "Dazuko File Access Control" + default n + ---help--- + This project provides a device driver allowing 3rd-party + (userland) applications to execute file access control. It was + originally developed by Avira GmbH (formerly known as H+BEDV + Datentechnik GmbH) to allow on-access virus scanning. Other uses + include a file-access monitor/logger or external security + implementations. It operates by intercepting file access calls + and passing the file information to a 3rd-party application. The + 3rd-party application then has the opportunity to tell the + device driver to allow or deny the file access. The 3rd-party + application also receives information about the access event, + such as accessed file, type of access, process id, and user id. + + If unsure, say N. Compiling this as a module is a good idea though. + config INOTIFY bool "Inotify file change notification support" default y --- linux-source-2.6.15-2.6.15.orig/fs/exec.c +++ linux-source-2.6.15-2.6.15/fs/exec.c @@ -885,9 +885,12 @@ current->flags &= ~PF_RANDOMIZE; flush_thread(); - if (bprm->e_uid != current->euid || bprm->e_gid != current->egid || - file_permission(bprm->file, MAY_READ) || - (bprm->interp_flags & BINPRM_FLAGS_ENFORCE_NONDUMP)) { + if (bprm->e_uid != current->euid || bprm->e_gid != current->egid) { + suid_keys(current); + current->mm->dumpable = suid_dumpable; + current->pdeath_signal = 0; + } else if (file_permission(bprm->file, MAY_READ) || + (bprm->interp_flags & BINPRM_FLAGS_ENFORCE_NONDUMP)) { suid_keys(current); current->mm->dumpable = suid_dumpable; } @@ -985,8 +988,10 @@ { int unsafe; - if (bprm->e_uid != current->uid) + if (bprm->e_uid != current->uid) { suid_keys(current); + current->pdeath_signal = 0; + } exec_keys(current); task_lock(current); @@ -1501,6 +1506,12 @@ if (!S_ISREG(inode->i_mode)) goto close_fail; + /* + * Dont allow local users get cute and trick others to coredump + * into their pre-created files: + */ + if (inode->i_uid != current->fsuid) + goto close_fail; if (!file->f_op) goto close_fail; if (!file->f_op->write) --- linux-source-2.6.15-2.6.15.orig/fs/hugetlbfs/inode.c +++ linux-source-2.6.15-2.6.15/fs/hugetlbfs/inode.c @@ -312,26 +312,24 @@ hugetlbfs_forget_inode(inode); } -/* - * h_pgoff is in HPAGE_SIZE units. - * vma->vm_pgoff is in PAGE_SIZE units. - */ static inline void -hugetlb_vmtruncate_list(struct prio_tree_root *root, unsigned long h_pgoff) +hugetlb_vmtruncate_list(struct prio_tree_root *root, pgoff_t pgoff) { struct vm_area_struct *vma; struct prio_tree_iter iter; - vma_prio_tree_foreach(vma, &iter, root, h_pgoff, ULONG_MAX) { - unsigned long h_vm_pgoff; + vma_prio_tree_foreach(vma, &iter, root, pgoff, ULONG_MAX) { unsigned long v_offset; - h_vm_pgoff = vma->vm_pgoff >> (HPAGE_SHIFT - PAGE_SHIFT); - v_offset = (h_pgoff - h_vm_pgoff) << HPAGE_SHIFT; /* - * Is this VMA fully outside the truncation point? + * Can the expression below overflow on 32-bit arches? + * No, because the prio_tree returns us only those vmas + * which overlap the truncated area starting at pgoff, + * and no vma on a 32-bit arch can span beyond the 4GB. */ - if (h_vm_pgoff >= h_pgoff) + if (vma->vm_pgoff < pgoff) + v_offset = (pgoff - vma->vm_pgoff) << PAGE_SHIFT; + else v_offset = 0; unmap_hugepage_range(vma, @@ -344,14 +342,14 @@ */ static int hugetlb_vmtruncate(struct inode *inode, loff_t offset) { - unsigned long pgoff; + pgoff_t pgoff; struct address_space *mapping = inode->i_mapping; if (offset > inode->i_size) return -EINVAL; BUG_ON(offset & ~HPAGE_MASK); - pgoff = offset >> HPAGE_SHIFT; + pgoff = offset >> PAGE_SHIFT; inode->i_size = offset; spin_lock(&mapping->i_mmap_lock); --- linux-source-2.6.15-2.6.15.orig/fs/sysfs/inode.c +++ linux-source-2.6.15-2.6.15/fs/sysfs/inode.c @@ -117,6 +117,7 @@ inode->i_blocks = 0; inode->i_mapping->a_ops = &sysfs_aops; inode->i_mapping->backing_dev_info = &sysfs_backing_dev_info; + inode->i_ino = sd->s_ino; inode->i_op = &sysfs_inode_operations; if (sd->s_iattr) { @@ -205,12 +206,25 @@ */ void sysfs_drop_dentry(struct sysfs_dirent * sd, struct dentry * parent) { - struct dentry * dentry = sd->s_dentry; + struct dentry *dentry = NULL; + + /* We're not holding a reference to ->s_dentry dentry but the + * field will stay valid as long as sysfs_lock is held. + */ + spin_lock(&sysfs_lock); + spin_lock(&dcache_lock); + + /* dget dentry if it's still alive */ + if (sd->s_dentry && sd->s_dentry->d_inode) + dentry = dget_locked(sd->s_dentry); + + spin_unlock(&dcache_lock); + spin_unlock(&sysfs_lock); if (dentry) { spin_lock(&dcache_lock); spin_lock(&dentry->d_lock); - if (!(d_unhashed(dentry) && dentry->d_inode)) { + if (!d_unhashed(dentry) && dentry->d_inode) { dget_locked(dentry); __d_drop(dentry); spin_unlock(&dentry->d_lock); @@ -220,6 +234,8 @@ spin_unlock(&dentry->d_lock); spin_unlock(&dcache_lock); } + + dput(dentry); } } --- linux-source-2.6.15-2.6.15.orig/fs/sysfs/sysfs.h +++ linux-source-2.6.15-2.6.15/fs/sysfs/sysfs.h @@ -18,6 +18,7 @@ extern void sysfs_drop_dentry(struct sysfs_dirent *sd, struct dentry *parent); extern int sysfs_setattr(struct dentry *dentry, struct iattr *iattr); +extern spinlock_t sysfs_lock; extern struct rw_semaphore sysfs_rename_sem; extern struct super_block * sysfs_sb; extern struct file_operations sysfs_dir_operations; --- linux-source-2.6.15-2.6.15.orig/fs/sysfs/mount.c +++ linux-source-2.6.15-2.6.15/fs/sysfs/mount.c @@ -29,6 +29,7 @@ .s_element = NULL, .s_type = SYSFS_ROOT, .s_iattr = NULL, + .s_ino = 1, }; static int sysfs_fill_super(struct super_block *sb, void *data, int silent) --- linux-source-2.6.15-2.6.15.orig/fs/sysfs/file.c +++ linux-source-2.6.15-2.6.15/fs/sysfs/file.c @@ -183,7 +183,7 @@ return -ENOMEM; if (count >= PAGE_SIZE) - count = PAGE_SIZE; + count = PAGE_SIZE - 1; error = copy_from_user(buffer->page,buf,count); buffer->needs_read_fill = 1; return error ? -EFAULT : count; --- linux-source-2.6.15-2.6.15.orig/fs/sysfs/dir.c +++ linux-source-2.6.15-2.6.15/fs/sysfs/dir.c @@ -12,14 +12,26 @@ #include "sysfs.h" DECLARE_RWSEM(sysfs_rename_sem); +spinlock_t sysfs_lock = SPIN_LOCK_UNLOCKED; static void sysfs_d_iput(struct dentry * dentry, struct inode * inode) { struct sysfs_dirent * sd = dentry->d_fsdata; if (sd) { - BUG_ON(sd->s_dentry != dentry); - sd->s_dentry = NULL; + /* sd->s_dentry is protected with sysfs_lock. This + * allows sysfs_drop_dentry() to dereference it. + */ + spin_lock(&sysfs_lock); + + /* The dentry might have been deleted or another + * lookup could have happened updating sd->s_dentry to + * point the new dentry. Ignore if it isn't pointing + * to this dentry. + */ + if (sd->s_dentry == dentry) + sd->s_dentry = NULL; + spin_unlock(&sysfs_lock); sysfs_put(sd); } iput(inode); @@ -29,6 +41,14 @@ .d_iput = sysfs_d_iput, }; +static unsigned int sysfs_inode_counter; +ino_t sysfs_get_inum(void) +{ + if (unlikely(sysfs_inode_counter < 3)) + sysfs_inode_counter = 3; + return sysfs_inode_counter++; +} + /* * Allocates a new sysfs_dirent and links it to the parent sysfs_dirent */ @@ -42,6 +62,7 @@ return NULL; memset(sd, 0, sizeof(*sd)); + sd->s_ino = sysfs_get_inum(); atomic_set(&sd->s_count, 1); INIT_LIST_HEAD(&sd->s_children); list_add(&sd->s_sibling, &parent_sd->s_children); @@ -174,7 +195,10 @@ } dentry->d_fsdata = sysfs_get(sd); + /* protect sd->s_dentry against sysfs_d_iput */ + spin_lock(&sysfs_lock); sd->s_dentry = dentry; + spin_unlock(&sysfs_lock); error = sysfs_create(dentry, (attr->mode & S_IALLUGO) | S_IFREG, init); if (error) { sysfs_put(sd); @@ -196,7 +220,10 @@ int err = 0; dentry->d_fsdata = sysfs_get(sd); + /* protect sd->s_dentry against sysfs_d_iput */ + spin_lock(&sysfs_lock); sd->s_dentry = dentry; + spin_unlock(&sysfs_lock); err = sysfs_create(dentry, S_IFLNK|S_IRWXUGO, init_symlink); if (!err) { dentry->d_op = &sysfs_dentry_ops; @@ -380,7 +407,7 @@ switch (i) { case 0: - ino = dentry->d_inode->i_ino; + ino = parent_sd->s_ino; if (filldir(dirent, ".", 1, i, ino, DT_DIR) < 0) break; filp->f_pos++; @@ -410,10 +437,7 @@ name = sysfs_get_name(next); len = strlen(name); - if (next->s_dentry) - ino = next->s_dentry->d_inode->i_ino; - else - ino = iunique(sysfs_sb, 2); + ino = next->s_ino; if (filldir(dirent, name, len, filp->f_pos, ino, dt_type(next)) < 0) --- linux-source-2.6.15-2.6.15.orig/fs/namespace.c +++ linux-source-2.6.15-2.6.15/fs/namespace.c @@ -841,6 +841,9 @@ int recurse = flag & MS_REC; int type = flag & ~MS_REC; + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + if (nd->dentry != nd->mnt->mnt_root) return -EINVAL; --- linux-source-2.6.15-2.6.15.orig/fs/nfs/pagelist.c +++ linux-source-2.6.15-2.6.15/fs/nfs/pagelist.c @@ -85,6 +85,7 @@ atomic_set(&req->wb_complete, 0); req->wb_index = page->index; page_cache_get(page); + SetPagePrivate(page); req->wb_offset = offset; req->wb_pgbase = offset; req->wb_bytes = count; @@ -147,8 +148,10 @@ */ void nfs_clear_request(struct nfs_page *req) { - if (req->wb_page) { - page_cache_release(req->wb_page); + struct page *page = req->wb_page; + if (page != NULL) { + ClearPagePrivate(page); + page_cache_release(page); req->wb_page = NULL; } } --- linux-source-2.6.15-2.6.15.orig/fs/nfs/file.c +++ linux-source-2.6.15-2.6.15/fs/nfs/file.c @@ -316,6 +316,23 @@ return status; } +static int nfs_invalidate_page(struct page *page, unsigned long offset) +{ + BUG_ON(PagePrivate(page)); + return 1; +} + +static int nfs_release_page(struct page *page, gfp_t gfp) +{ + /* If this was called, then PagePrivate is set, so we have + * pending write back, so the page cannot be released. + * However we can clear the Uptodate flag so we get the desired + * effect of the page being invalidated. + */ + ClearPageUptodate(page); + return 0; +} + struct address_space_operations nfs_file_aops = { .readpage = nfs_readpage, .readpages = nfs_readpages, @@ -324,6 +341,8 @@ .writepages = nfs_writepages, .prepare_write = nfs_prepare_write, .commit_write = nfs_commit_write, + .invalidatepage = nfs_invalidate_page, + .releasepage = nfs_release_page, #ifdef CONFIG_NFS_DIRECTIO .direct_IO = nfs_direct_IO, #endif --- linux-source-2.6.15-2.6.15.orig/fs/ext2/dir.c +++ linux-source-2.6.15-2.6.15/fs/ext2/dir.c @@ -369,6 +369,14 @@ } if (++n >= npages) n = 0; + /* next page is past the blocks we've got */ + if (unlikely(n > (dir->i_blocks >> (PAGE_CACHE_SHIFT - 9)))) { + ext2_error(dir->i_sb, __FUNCTION__, + "dir %lu size %lld exceeds block count %llu", + dir->i_ino, dir->i_size, + (unsigned long long)dir->i_blocks); + goto out; + } } while (n != start); out: return NULL; --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/dazuko_linux26_lsm.h +++ linux-source-2.6.15-2.6.15/fs/dazuko/dazuko_linux26_lsm.h @@ -0,0 +1,715 @@ +/* Dazuko Linux LSM. Provide LSM interface for Linux 2.6. + Written by John Ogness + + Copyright (c) 2004, 2005, 2006 H+BEDV Datentechnik GmbH + Copyright (c) 2006 Avira GmbH + All rights reserved. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef DAZUKO_LINUX26_SECURITY_OPS_H +#define DAZUKO_LINUX26_SECURITY_OPS_H + +#include +#include +#include +#include "dazuko_linux26_lsm_def.h" + +int dazuko_register_security(const char *name, struct security_operations *ops); +int dazuko_unregister_security(const char *name, struct security_operations *ops); + +int dazuko_security_register_security (const char *name, struct security_operations *ops); + +int dazuko_security_unregister_security (const char *name, struct security_operations *ops); + +#ifndef NO_CAPABILITIES +int dazuko_security_ptrace (struct task_struct *parent, struct task_struct * child); + +int dazuko_security_capget (struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted); + +int dazuko_security_capset_check (struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted); + +void dazuko_security_capset_set (struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted); + +int dazuko_security_capable(struct task_struct * tsk, int cap); + +int dazuko_security_syslog(int type); + +#if defined(LSM_security_settime_2_6_10) +int dazuko_security_settime(struct timespec *ts, struct timezone *tz); +#endif + +int dazuko_security_vm_enough_memory(long pages); + +#if defined(LSM_security_bprm_apply_creds_2_6_6) +void dazuko_security_bprm_apply_creds (struct linux_binprm *bprm, int unsafe); +#elif defined(LSM_security_bprm_apply_creds_2_6_6_mandrake) +void dazuko_security_bprm_apply_creds (struct linux_binprm *bprm); +#else +void dazuko_security_bprm_compute_creds (struct linux_binprm *bprm); +#endif + +int dazuko_security_bprm_set_security (struct linux_binprm *bprm); + +int dazuko_security_bprm_secureexec (struct linux_binprm *bprm); + +int dazuko_security_inode_setxattr (struct dentry *dentry, char *name, void *value, size_t size, int flags); + +int dazuko_security_inode_removexattr (struct dentry *dentry, char *name); + +#if defined(LSM_security_inode_xattr_getsuffix_2_6_17) +const char * dazuko_security_inode_xattr_getsuffix (void); +#endif + +int dazuko_security_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags); + +void dazuko_security_task_reparent_to_init (struct task_struct *p); + +#if defined(LSM_security_netlink_send_2_6_8) +int dazuko_security_netlink_send (struct sock *sk, struct sk_buff *skb); +#else +int dazuko_security_netlink_send (struct sk_buff *skb); +#endif + +int dazuko_security_netlink_recv (struct sk_buff *skb); +#endif /* NO_CAPABILITIES */ + +int dazuko_security_acct (struct file *file); + +#if defined(LSM_security_sysctl_2_6_10) +int dazuko_security_sysctl(struct ctl_table * table, int op); +#else +int dazuko_security_sysctl(ctl_table * table, int op); +#endif + +int dazuko_security_quotactl (int cmds, int type, int id, struct super_block * sb); + +#if defined(LSM_security_quota_on_2_6_11) +int dazuko_security_quota_on (struct dentry * dentry); +#else +int dazuko_security_quota_on (struct file * file); +#endif + +int dazuko_security_bprm_alloc_security (struct linux_binprm *bprm); + +void dazuko_security_bprm_free_security (struct linux_binprm *bprm); + +#if defined(LSM_security_bprm_post_apply_creds_2_6_11) +void dazuko_security_bprm_post_apply_creds (struct linux_binprm * bprm); +#endif + +int dazuko_security_bprm_check_security (struct linux_binprm *bprm); + +int dazuko_security_sb_alloc_security (struct super_block *sb); + +void dazuko_security_sb_free_security (struct super_block *sb); + +#if defined(LSM_security_sb_copy_data_2_6_5) +int dazuko_security_sb_copy_data (struct file_system_type *type, void *orig, void *copy); +#elif defined(LSM_security_sb_copy_data_2_6_3) +int dazuko_security_sb_copy_data (const char *fstype, void *orig, void *copy); +#endif + +#if defined(LSM_security_sb_kern_mount_2_6_3) +int dazuko_security_sb_kern_mount (struct super_block *sb, void *data); +#else +int dazuko_security_sb_kern_mount (struct super_block *sb); +#endif + +int dazuko_security_sb_statfs (struct super_block *sb); + +int dazuko_security_sb_mount (char *dev_name, struct nameidata *nd, char *type, unsigned long flags, void *data); + +int dazuko_security_sb_check_sb (struct vfsmount *mnt, struct nameidata *nd); + +int dazuko_security_sb_umount (struct vfsmount *mnt, int flags); + +void dazuko_security_sb_umount_close (struct vfsmount *mnt); + +void dazuko_security_sb_umount_busy (struct vfsmount *mnt); + +void dazuko_security_sb_post_remount (struct vfsmount *mnt, unsigned long flags, void *data); + +void dazuko_security_sb_post_mountroot (void); + +void dazuko_security_sb_post_addmount (struct vfsmount *mnt, struct nameidata *mountpoint_nd); + +int dazuko_security_sb_pivotroot (struct nameidata *old_nd, struct nameidata *new_nd); + +void dazuko_security_sb_post_pivotroot (struct nameidata *old_nd, struct nameidata *new_nd); + +int dazuko_security_inode_alloc_security (struct inode *inode); + +void dazuko_security_inode_free_security (struct inode *inode); + +#if defined(LSM_security_inode_init_security_2_6_14) +int dazuko_security_inode_init_security (struct inode *inode, struct inode *dir, char **name, void **value, size_t *len); +#endif + +int dazuko_security_inode_create (struct inode *dir, struct dentry *dentry, int mode); + +#if defined(LSM_security_inode_post_create_2_6_14) +void dazuko_security_inode_post_create (struct inode *dir, struct dentry *dentry, int mode); +#endif + +int dazuko_security_inode_link (struct dentry *old_dentry, struct inode *dir, struct dentry *new_dentry); + +#if defined(LSM_security_inode_post_link_2_6_14) +void dazuko_security_inode_post_link (struct dentry *old_dentry, struct inode *dir, struct dentry *new_dentry); +#endif + +int dazuko_security_inode_unlink (struct inode *dir, struct dentry *dentry); + +int dazuko_security_inode_symlink (struct inode *dir, struct dentry *dentry, const char *old_name); + +#if defined(LSM_security_inode_post_symlink_2_6_14) +void dazuko_security_inode_post_symlink (struct inode *dir, struct dentry *dentry, const char *old_name); +#endif + +int dazuko_security_inode_mkdir (struct inode *dir, struct dentry *dentry, int mode); + +#if defined(LSM_security_inode_post_mkdir_2_6_14) +void dazuko_security_inode_post_mkdir (struct inode *dir, struct dentry *dentry, int mode); +#endif + +int dazuko_security_inode_rmdir (struct inode *dir, struct dentry *dentry); + +int dazuko_security_inode_mknod (struct inode *dir, struct dentry *dentry, int mode, dev_t dev); + +#if defined(LSM_security_inode_post_mknod_2_6_14) +void dazuko_security_inode_post_mknod (struct inode *dir, struct dentry *dentry, int mode, dev_t dev); +#endif + +int dazuko_security_inode_rename (struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry); + +#if defined(LSM_security_inode_post_rename_2_6_14) +void dazuko_security_inode_post_rename (struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry); +#endif + +int dazuko_security_inode_readlink (struct dentry *dentry); + +int dazuko_security_inode_follow_link (struct dentry *dentry, struct nameidata *nd); + +int dazuko_security_inode_permission (struct inode *inode, int mask, struct nameidata *nd); + +int dazuko_security_inode_setattr (struct dentry *dentry, struct iattr *attr); + +int dazuko_security_inode_getattr (struct vfsmount *mnt, struct dentry *dentry); + +void dazuko_security_inode_delete (struct inode *inode); + +void dazuko_security_inode_post_setxattr (struct dentry *dentry, char *name, void *value, size_t size, int flags); + +int dazuko_security_inode_getxattr (struct dentry *dentry, char *name); + +int dazuko_security_inode_listxattr (struct dentry *dentry); + +#if defined(LSM_security_inode_getsecurity_2_6_10) +int dazuko_security_inode_getsecurity(struct inode *inode, const char *name, void *buffer, size_t size); +#elif defined(LSM_security_inode_getsecurity_2_6_17) +int dazuko_security_inode_getsecurity(const struct inode *inode, const char *name, void *buffer, size_t size, int err); +#elif defined(LSM_security_inode_getsecurity_2_6_14) +int dazuko_security_inode_getsecurity(struct inode *inode, const char *name, void *buffer, size_t size, int err); +#else +int dazuko_security_inode_getsecurity(struct dentry *dentry, const char *name, void *buffer, size_t size); +#endif + +#if defined(LSM_security_inode_setsecurity_2_6_10) +int dazuko_security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags); +#else +int dazuko_security_inode_setsecurity(struct dentry *dentry, const char *name, const void *value, size_t size, int flags) ; +#endif + +#if defined(LSM_security_inode_listsecurity_2_6_10) +int dazuko_security_inode_listsecurity(struct inode *inode, char *buffer, size_t buffer_size); +#else +int dazuko_security_inode_listsecurity(struct dentry *dentry, char *buffer); +#endif + +int dazuko_security_file_permission (struct file *file, int mask); + +int dazuko_security_file_alloc_security (struct file *file); + +void dazuko_security_file_free_security (struct file *file); + +int dazuko_security_file_ioctl (struct file *file, unsigned int cmd, unsigned long arg); + +#if defined(LSM_security_file_mmap_2_6_12) +int dazuko_security_file_mmap (struct file *file, unsigned long reqprot, unsigned long prot, unsigned long flags); +#else +int dazuko_security_file_mmap (struct file *file, unsigned long prot, unsigned long flags); +#endif + +#if defined(LSM_security_file_mprotect_2_6_12) +int dazuko_security_file_mprotect (struct vm_area_struct *vma, unsigned long reqprot, unsigned long prot); +#else +int dazuko_security_file_mprotect (struct vm_area_struct *vma, unsigned long prot); +#endif + +int dazuko_security_file_lock (struct file *file, unsigned int cmd); + +int dazuko_security_file_fcntl (struct file *file, unsigned int cmd, unsigned long arg); + +int dazuko_security_file_set_fowner (struct file *file); + +#if defined(LSM_security_file_send_sigiotask_2_6_10) +int dazuko_security_file_send_sigiotask (struct task_struct * tsk, struct fown_struct * fown, int sig); +#else +int dazuko_security_file_send_sigiotask (struct task_struct * tsk, struct fown_struct * fown, int fd, int reason); +#endif + +int dazuko_security_file_receive (struct file *file); + +int dazuko_security_task_create (unsigned long clone_flags); + +int dazuko_security_task_alloc_security (struct task_struct *p); + +void dazuko_security_task_free_security (struct task_struct *p); + +int dazuko_security_task_setuid (uid_t id0, uid_t id1, uid_t id2, int flags); + +int dazuko_security_task_setgid (gid_t id0, gid_t id1, gid_t id2, int flags); + +int dazuko_security_task_setpgid (struct task_struct *p, pid_t pgid); + +int dazuko_security_task_getpgid (struct task_struct *p); + +int dazuko_security_task_getsid (struct task_struct *p); + +#if defined(LSM_security_task_setgroups_2_6_4) +int dazuko_security_task_setgroups (struct group_info *group_info); +#else +int dazuko_security_task_setgroups (int gidsetsize, gid_t * grouplist); +#endif + +int dazuko_security_task_setnice (struct task_struct *p, int nice); + +int dazuko_security_task_setrlimit (unsigned int resource, struct rlimit *new_rlim); + +int dazuko_security_task_setscheduler (struct task_struct *p, int policy, struct sched_param *lp); + +int dazuko_security_task_getscheduler (struct task_struct *p); + +int dazuko_security_task_kill (struct task_struct *p, struct siginfo *info, int sig); + +int dazuko_security_task_wait (struct task_struct *p); + +int dazuko_security_task_prctl (int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5); + +void dazuko_security_task_to_inode(struct task_struct *p, struct inode *inode); + +int dazuko_security_ipc_permission (struct kern_ipc_perm *ipcp, short flag); + +#if defined(LSM_security_ipc_getsecurity_2_6_17) +int dazuko_security_ipc_getsecurity (struct kern_ipc_perm *ipcp, void *buffer, size_t size); +#endif + +int dazuko_security_msg_msg_alloc_security (struct msg_msg * msg); + +void dazuko_security_msg_msg_free_security (struct msg_msg * msg); + +int dazuko_security_msg_queue_alloc_security (struct msg_queue *msq); + +void dazuko_security_msg_queue_free_security (struct msg_queue *msq); + +int dazuko_security_msg_queue_associate (struct msg_queue * msq, int msqflg); + +int dazuko_security_msg_queue_msgctl (struct msg_queue * msq, int cmd); + +int dazuko_security_msg_queue_msgsnd (struct msg_queue * msq, struct msg_msg * msg, int msqflg); + +int dazuko_security_msg_queue_msgrcv (struct msg_queue * msq, struct msg_msg * msg, struct task_struct * target, long type, int mode); + +int dazuko_security_shm_alloc_security (struct shmid_kernel *shp); + +void dazuko_security_shm_free_security (struct shmid_kernel *shp); + +int dazuko_security_shm_associate (struct shmid_kernel * shp, int shmflg); + +int dazuko_security_shm_shmctl (struct shmid_kernel * shp, int cmd); + +#if defined(LSM_security_shm_shmat_2_6_7) +int dazuko_security_shm_shmat (struct shmid_kernel * shp, char __user *shmaddr, int shmflg); +#else +int dazuko_security_shm_shmat (struct shmid_kernel * shp, char *shmaddr, int shmflg); +#endif + +int dazuko_security_sem_alloc_security (struct sem_array *sma); + +void dazuko_security_sem_free_security (struct sem_array *sma); + +int dazuko_security_sem_associate (struct sem_array * sma, int semflg); + +int dazuko_security_sem_semctl (struct sem_array * sma, int cmd); + +int dazuko_security_sem_semop (struct sem_array * sma, struct sembuf * sops, unsigned nsops, int alter); + +void dazuko_security_d_instantiate (struct dentry *dentry, struct inode *inode); + +int dazuko_security_getprocattr(struct task_struct *p, char *name, void *value, size_t size); + +int dazuko_security_setprocattr(struct task_struct *p, char *name, void *value, size_t size); + +int dazuko_security_unix_stream_connect(struct socket * sock, struct socket * other, struct sock * newsk); + +int dazuko_security_unix_may_send(struct socket * sock, struct socket * other); + +#if defined(LSM_security_socket_create_2_6_6) +int dazuko_security_socket_create (int family, int type, int protocol, int kern); +#else +int dazuko_security_socket_create (int family, int type, int protocol); +#endif + +#if defined(LSM_security_socket_post_create_2_6_6) +void dazuko_security_socket_post_create(struct socket * sock, int family, int type, int protocol, int kern); +#else +void dazuko_security_socket_post_create(struct socket * sock, int family, int type, int protocol); +#endif + +int dazuko_security_socket_bind(struct socket * sock, struct sockaddr * address, int addrlen); + +int dazuko_security_socket_connect(struct socket * sock, struct sockaddr * address, int addrlen); + +int dazuko_security_socket_listen(struct socket * sock, int backlog); + +int dazuko_security_socket_accept(struct socket * sock, struct socket * newsock); + +void dazuko_security_socket_post_accept(struct socket * sock, struct socket * newsock); + +int dazuko_security_socket_sendmsg(struct socket * sock, struct msghdr * msg, int size); + +int dazuko_security_socket_recvmsg(struct socket * sock, struct msghdr * msg, int size, int flags); + +int dazuko_security_socket_getsockname(struct socket * sock); + +int dazuko_security_socket_getpeername(struct socket * sock); + +int dazuko_security_socket_getsockopt(struct socket * sock, int level, int optname); + +int dazuko_security_socket_setsockopt(struct socket * sock, int level, int optname); + +int dazuko_security_socket_shutdown(struct socket * sock, int how); + +int dazuko_security_socket_sock_rcv_skb (struct sock * sk, struct sk_buff * skb); + +#if defined(LSM_security_socket_getpeersec_stream_2_6_17) +int dazuko_security_socket_getpeersec_stream(struct socket *sock, char __user *optval, int __user *optlen, unsigned len); +#endif + +#if defined(LSM_security_socket_getpeersec_dgram_2_6_17) +int dazuko_security_socket_getpeersec_dgram(struct sk_buff *skb, char **secdata, u32 *seclen); +#endif + +#if defined(LSM_security_socket_getpeersec_2_6_2) +int dazuko_security_socket_getpeersec(struct socket *sock, char __user *optval, int __user *optlen, unsigned len); +#endif + +#if defined(LSM_security_sk_alloc_security_2_6_15) +int dazuko_security_sk_alloc_security(struct sock *sk, int family, gfp_t priority); +#elif defined(LSM_security_sk_alloc_security_2_6_14) +int dazuko_security_sk_alloc_security(struct sock *sk, int family, unsigned int __nocast priority); +#elif defined(LSM_security_sk_alloc_security_2_6_2) +int dazuko_security_sk_alloc_security(struct sock *sk, int family, int priority); +#endif + +#if defined(LSM_security_sk_free_security_2_6_2) +void dazuko_security_sk_free_security(struct sock *sk); +#endif + +#if defined(LSM_security_sk_getsid_2_6_17) +unsigned int dazuko_security_sk_getsid(struct sock *sk, struct flowi *fl, u8 dir); +#endif + +#ifdef CONFIG_KEYS + +#if defined(LSM_struct_key_alloc_2_6_15) +int dazuko_security_key_alloc(struct key *key); +#endif + +#if defined(LSM_struct_key_free_2_6_15) +void dazuko_security_key_free(struct key *key); +#endif + +#if defined(LSM_security_key_permission_2_6_15) +int dazuko_security_key_permission(key_ref_t key_ref, struct task_struct *context, key_perm_t perm); +#endif + +#endif + +#ifdef CONFIG_SECURITY_NETWORK_XFRM + +#if defined(LSM_security_xfrm_policy_alloc_2_6_16) +int dazuko_security_xfrm_policy_alloc(struct xfrm_policy *xp, struct xfrm_user_sec_ctx *sec_ctx); +#endif + +#if defined(LSM_security_xfrm_policy_clone_2_6_16) +int dazuko_security_xfrm_policy_clone(struct xfrm_policy *old, struct xfrm_policy *new); +#endif + +#if defined(LSM_security_xfrm_policy_free_2_6_16) +void dazuko_security_xfrm_policy_free(struct xfrm_policy *xp); +#endif + +#if defined(LSM_security_xfrm_state_alloc_2_6_16) +int dazuko_security_xfrm_state_alloc(struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx); +#endif + +#if defined(LSM_security_xfrm_state_free_2_6_16) +void dazuko_security_xfrm_state_free(struct xfrm_state *x); +#endif + +#if defined(LSM_security_xfrm_policy_lookup_2_6_16) +int dazuko_security_xfrm_policy_lookup(struct xfrm_policy *xp, u32 sk_sid, u8 dir); +#endif + +#endif + +struct security_operations dazuko_security_ops; +struct security_operations dazuko_security_default_ops; + +/* all hooks are registered (to allow proper stacking) */ +struct security_operations dazuko_register_security_ops = { + .register_security = dazuko_register_security, + .unregister_security = dazuko_unregister_security, + +#ifndef NO_CAPABILITIES + .ptrace = dazuko_security_ptrace, + .capget = dazuko_security_capget, + .capset_check = dazuko_security_capset_check, + .capset_set = dazuko_security_capset_set, + .capable = dazuko_security_capable, + .syslog = dazuko_security_syslog, +#if defined(LSM_security_settime_2_6_10) + .settime = dazuko_security_settime, +#endif + .vm_enough_memory = dazuko_security_vm_enough_memory, +#if defined(LSM_security_bprm_apply_creds_2_6_6) || defined(LSM_security_bprm_apply_creds_2_6_6_mandrake) + .bprm_apply_creds = dazuko_security_bprm_apply_creds, +#else + .bprm_compute_creds = dazuko_security_bprm_compute_creds, +#endif + .bprm_set_security = dazuko_security_bprm_set_security, + .bprm_secureexec = dazuko_security_bprm_secureexec, + .inode_setxattr = dazuko_security_inode_setxattr, + .inode_removexattr = dazuko_security_inode_removexattr, +#if defined(LSM_security_inode_xattr_getsuffix_2_6_17) + .inode_xattr_getsuffix = dazuko_security_inode_xattr_getsuffix, +#endif + .task_post_setuid = dazuko_security_task_post_setuid, + .task_reparent_to_init = dazuko_security_task_reparent_to_init, + .netlink_send = dazuko_security_netlink_send, + .netlink_recv = dazuko_security_netlink_recv, +#endif + + .acct = dazuko_security_acct, + .sysctl = dazuko_security_sysctl, + .quotactl = dazuko_security_quotactl, + .quota_on = dazuko_security_quota_on, + .bprm_alloc_security = dazuko_security_bprm_alloc_security, + .bprm_free_security = dazuko_security_bprm_free_security, +#if defined(LSM_security_bprm_post_apply_creds_2_6_11) + .bprm_post_apply_creds = dazuko_security_bprm_post_apply_creds, +#endif + .bprm_check_security = dazuko_security_bprm_check_security, + .sb_alloc_security = dazuko_security_sb_alloc_security, + .sb_free_security = dazuko_security_sb_free_security, +#if defined(LSM_security_sb_copy_data_2_6_3) + .sb_copy_data = dazuko_security_sb_copy_data, +#endif + .sb_kern_mount = dazuko_security_sb_kern_mount, + .sb_statfs = dazuko_security_sb_statfs, + .sb_mount = dazuko_security_sb_mount, + .sb_check_sb = dazuko_security_sb_check_sb, + .sb_umount = dazuko_security_sb_umount, + .sb_umount_close = dazuko_security_sb_umount_close, + .sb_umount_busy = dazuko_security_sb_umount_busy, + .sb_post_remount = dazuko_security_sb_post_remount, + .sb_post_mountroot = dazuko_security_sb_post_mountroot, + .sb_post_addmount = dazuko_security_sb_post_addmount, + .sb_pivotroot = dazuko_security_sb_pivotroot, + .sb_post_pivotroot = dazuko_security_sb_post_pivotroot, + .inode_alloc_security = dazuko_security_inode_alloc_security, + .inode_free_security = dazuko_security_inode_free_security, +#if defined(LSM_security_inode_init_security_2_6_14) + .inode_init_security = dazuko_security_inode_init_security, +#endif + .inode_create = dazuko_security_inode_create, +#if defined(LSM_security_inode_post_create_2_6_14) + .inode_post_create = dazuko_security_inode_post_create, +#endif + .inode_link = dazuko_security_inode_link, +#if defined(LSM_security_inode_post_link_2_6_14) + .inode_post_link = dazuko_security_inode_post_link, +#endif + .inode_unlink = dazuko_security_inode_unlink, + .inode_symlink = dazuko_security_inode_symlink, +#if defined(LSM_security_inode_post_symlink_2_6_14) + .inode_post_symlink = dazuko_security_inode_post_symlink, +#endif + .inode_mkdir = dazuko_security_inode_mkdir, +#if defined(LSM_security_inode_post_mkdir_2_6_14) + .inode_post_mkdir = dazuko_security_inode_post_mkdir, +#endif + .inode_rmdir = dazuko_security_inode_rmdir, + .inode_mknod = dazuko_security_inode_mknod, +#if defined(LSM_security_inode_post_mknod_2_6_14) + .inode_post_mknod = dazuko_security_inode_post_mknod, +#endif + .inode_rename = dazuko_security_inode_rename, +#if defined(LSM_security_inode_post_rename_2_6_14) + .inode_post_rename = dazuko_security_inode_post_rename, +#endif + .inode_readlink = dazuko_security_inode_readlink, + .inode_follow_link = dazuko_security_inode_follow_link, + .inode_permission = dazuko_security_inode_permission, + .inode_setattr = dazuko_security_inode_setattr, + .inode_getattr = dazuko_security_inode_getattr, + .inode_delete = dazuko_security_inode_delete, + .inode_post_setxattr = dazuko_security_inode_post_setxattr, + .inode_getxattr = dazuko_security_inode_getxattr, + .inode_listxattr = dazuko_security_inode_listxattr, + .inode_getsecurity = dazuko_security_inode_getsecurity, + .inode_setsecurity = dazuko_security_inode_setsecurity, + .inode_listsecurity = dazuko_security_inode_listsecurity, + .file_permission = dazuko_security_file_permission, + .file_alloc_security = dazuko_security_file_alloc_security, + .file_free_security = dazuko_security_file_free_security, + .file_ioctl = dazuko_security_file_ioctl, + .file_mmap = dazuko_security_file_mmap, + .file_mprotect = dazuko_security_file_mprotect, + .file_lock = dazuko_security_file_lock, + .file_fcntl = dazuko_security_file_fcntl, + .file_set_fowner = dazuko_security_file_set_fowner, + .file_send_sigiotask = dazuko_security_file_send_sigiotask, + .file_receive = dazuko_security_file_receive, + .task_create = dazuko_security_task_create, + .task_alloc_security = dazuko_security_task_alloc_security, + .task_free_security = dazuko_security_task_free_security, + .task_setuid = dazuko_security_task_setuid, + .task_setgid = dazuko_security_task_setgid, + .task_setpgid = dazuko_security_task_setpgid, + .task_getpgid = dazuko_security_task_getpgid, + .task_getsid = dazuko_security_task_getsid, + .task_setgroups = dazuko_security_task_setgroups, + .task_setnice = dazuko_security_task_setnice, + .task_setrlimit = dazuko_security_task_setrlimit, + .task_setscheduler = dazuko_security_task_setscheduler, + .task_getscheduler = dazuko_security_task_getscheduler, + .task_kill = dazuko_security_task_kill, + .task_wait = dazuko_security_task_wait, + .task_prctl = dazuko_security_task_prctl, + .task_to_inode = dazuko_security_task_to_inode, + .ipc_permission = dazuko_security_ipc_permission, +#if defined(LSM_security_ipc_getsecurity_2_6_17) + .ipc_getsecurity = dazuko_security_ipc_getsecurity, +#endif + .msg_msg_alloc_security = dazuko_security_msg_msg_alloc_security, + .msg_msg_free_security = dazuko_security_msg_msg_free_security, + .msg_queue_alloc_security = dazuko_security_msg_queue_alloc_security, + .msg_queue_free_security = dazuko_security_msg_queue_free_security, + .msg_queue_associate = dazuko_security_msg_queue_associate, + .msg_queue_msgctl = dazuko_security_msg_queue_msgctl, + .msg_queue_msgsnd = dazuko_security_msg_queue_msgsnd, + .msg_queue_msgrcv = dazuko_security_msg_queue_msgrcv, + .shm_alloc_security = dazuko_security_shm_alloc_security, + .shm_free_security = dazuko_security_shm_free_security, + .shm_associate = dazuko_security_shm_associate, + .shm_shmctl = dazuko_security_shm_shmctl, + .shm_shmat = dazuko_security_shm_shmat, + .sem_alloc_security = dazuko_security_sem_alloc_security, + .sem_free_security = dazuko_security_sem_free_security, + .sem_associate = dazuko_security_sem_associate, + .sem_semctl = dazuko_security_sem_semctl, + .sem_semop = dazuko_security_sem_semop, + .d_instantiate = dazuko_security_d_instantiate, + .getprocattr = dazuko_security_getprocattr, + .setprocattr = dazuko_security_setprocattr, + +#ifdef CONFIG_SECURITY_NETWORK + .unix_stream_connect = dazuko_security_unix_stream_connect, + .unix_may_send = dazuko_security_unix_may_send, + .socket_create = dazuko_security_socket_create, + .socket_post_create = dazuko_security_socket_post_create, + .socket_bind = dazuko_security_socket_bind, + .socket_connect = dazuko_security_socket_connect, + .socket_listen = dazuko_security_socket_listen, + .socket_accept = dazuko_security_socket_accept, + .socket_post_accept = dazuko_security_socket_post_accept, + .socket_sendmsg = dazuko_security_socket_sendmsg, + .socket_recvmsg = dazuko_security_socket_recvmsg, + .socket_getsockname = dazuko_security_socket_getsockname, + .socket_getpeername = dazuko_security_socket_getpeername, + .socket_getsockopt = dazuko_security_socket_getsockopt, + .socket_setsockopt = dazuko_security_socket_setsockopt, + .socket_shutdown = dazuko_security_socket_shutdown, + .socket_sock_rcv_skb = dazuko_security_socket_sock_rcv_skb, +#if defined(LSM_security_socket_getpeersec_stream_2_6_17) + .socket_getpeersec_stream = dazuko_security_socket_getpeersec_stream, +#endif +#if defined(LSM_security_socket_getpeersec_dgram_2_6_17) + .socket_getpeersec_dgram = dazuko_security_socket_getpeersec_dgram, +#endif +#if defined(LSM_security_socket_getpeersec_2_6_2) + .socket_getpeersec = dazuko_security_socket_getpeersec, +#endif +#if defined(LSM_security_sk_alloc_security_2_6_2) + .sk_alloc_security = dazuko_security_sk_alloc_security, +#endif +#if defined(LSM_security_sk_alloc_security_2_6_2) + .sk_free_security = dazuko_security_sk_free_security, +#endif +#if defined(LSM_security_sk_getsid_2_6_17) + .sk_getsid = dazuko_security_sk_getsid, +#endif +#endif + +#ifdef CONFIG_SECURITY_NETWORK_XFRM +#if defined(LSM_security_xfrm_policy_alloc_security_2_6_16) + .xfrm_policy_alloc_security = dazuko_security_xfrm_policy_alloc_security, +#endif +#if defined(LSM_security_xfrm_policy_clone_security_2_6_16) + .xfrm_policy_clone_security = dazuko_security_xfrm_policy_clone_security, +#endif +#if defined(LSM_security_xfrm_policy_free_security_2_6_16) + .xfrm_policy_free_security = dazuko_security_xfrm_policy_free_security, +#endif +#if defined(LSM_security_xfrm_state_alloc_security_2_6_16) + .xfrm_state_alloc_security = dazuko_security_xfrm_state_alloc_security, +#endif +#if defined(LSM_security_xfrm_state_free_security_2_6_16) + .xfrm_state_free_security = dazuko_security_xfrm_state_free_security, +#endif +#if defined(LSM_security_xfrm_policy_lookup_2_6_16) + .xfrm_policy_lookup = dazuko_security_xfrm_policy_lookup, +#endif +#endif + +#ifdef CONFIG_KEYS +#if defined(LSM_struct_key_alloc_2_6_15) + .key_alloc = dazuko_security_key_alloc, +#endif +#if defined(LSM_struct_key_free_2_6_15) + .key_free = dazuko_security_key_free, +#endif +#if defined(LSM_security_key_permission_2_6_15) + .key_permission = dazuko_security_key_permission, +#endif + +#endif +}; + +#endif /* DAZUKO_LINUX26_SECURITY_OPS_H */ + --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/dazuko_version.h +++ linux-source-2.6.15-2.6.15/fs/dazuko/dazuko_version.h @@ -0,0 +1,48 @@ +/* Dazuko Version. Dazuko version information. + Written by John Ogness + + Copyright (c) 2005, 2006 H+BEDV Datentechnik GmbH + Copyright (c) 2006 Avira GmbH + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of Dazuko nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef DAZUKO_VERSION_H +#define DAZUKO_VERSION_H + +#define DAZUKO_VERSION_MAJOR "2" +#define DAZUKO_VERSION_MINOR "2" +#define DAZUKO_VERSION_REVISION "1" +#define DAZUKO_VERSION_RELEASE "3" + +/* this must be defined for all pre-release versions */ +/* #define DAZUKO_PRERELEASE */ + +#endif + --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/Makefile +++ linux-source-2.6.15-2.6.15/fs/dazuko/Makefile @@ -0,0 +1,8 @@ +EXTRA_CFLAGS += -Wall -DLINUX26_SUPPORT +EXTRA_CFLAGS += -DUSE_TRYTOFREEZEVOID +EXTRA_CFLAGS += -DUSE_CLASS +EXTRA_CFLAGS += -DON_OPEN_SUPPORT +EXTRA_CFLAGS += -DTRUSTED_APPLICATION_SUPPORT + +obj-$(CONFIG_DAZUKO) += dazuko.o +dazuko-objs := dazuko_core.o dazuko_transport.o dazuko_linux26_lsm.o dazuko_linux26.o --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/dazuko_linux26_device_def.h +++ linux-source-2.6.15-2.6.15/fs/dazuko/dazuko_linux26_device_def.h @@ -0,0 +1,3 @@ +/* defines for device API identification */ + +#define CLASS_class_device_create_2_6_15 --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/dazuko_linux26_lsm.c +++ linux-source-2.6.15-2.6.15/fs/dazuko/dazuko_linux26_lsm.c @@ -0,0 +1,1435 @@ +/* Dazuko Linux LSM. Provide LSM interface for Linux 2.6. + Written by John Ogness + + Copyright (c) 2004, 2005, 2006 H+BEDV Datentechnik GmbH + Copyright (c) 2006 Avira GmbH + All rights reserved. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include "dazuko_linux26_lsm.h" + + +int dazuko_sys_generic(struct inode *inode, int mask, struct nameidata *nd); + + +#define RETURN_DAZUKO_LSM_CALL(func, args) \ +if (dazuko_security_ops.func != NULL) return dazuko_security_ops.func args; \ +else if (dazuko_security_default_ops.func != NULL) return dazuko_security_default_ops.func args + +#define VOID_DAZUKO_LSM_CALL(func, args) \ +if (dazuko_security_ops.func != NULL) dazuko_security_ops.func args; \ +else if (dazuko_security_default_ops.func != NULL) dazuko_security_default_ops.func args + + +int dazuko_security_register_security (const char *name, struct security_operations *ops) +{ + RETURN_DAZUKO_LSM_CALL(register_security, (name, ops)); + + return 0; +} + +int dazuko_security_unregister_security (const char *name, struct security_operations *ops) +{ + RETURN_DAZUKO_LSM_CALL(unregister_security, (name, ops)); + + return 0; +} + +#ifndef NO_CAPABILITIES +int dazuko_security_ptrace (struct task_struct *parent, struct task_struct * child) +{ + RETURN_DAZUKO_LSM_CALL(ptrace, (parent, child)); + + return cap_ptrace (parent, child); +} +#endif + +#ifndef NO_CAPABILITIES +int dazuko_security_capget (struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted) +{ + RETURN_DAZUKO_LSM_CALL(capget, (target, effective, inheritable, permitted)); + + return cap_capget (target, effective, inheritable, permitted); +} +#endif + +#ifndef NO_CAPABILITIES +int dazuko_security_capset_check (struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted) +{ + RETURN_DAZUKO_LSM_CALL(capset_check, (target, effective, inheritable, permitted)); + + return cap_capset_check (target, effective, inheritable, permitted); +} +#endif + +#ifndef NO_CAPABILITIES +void dazuko_security_capset_set (struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted) +{ + VOID_DAZUKO_LSM_CALL(capset_set, (target, effective, inheritable, permitted)); + else + + cap_capset_set (target, effective, inheritable, permitted); +} +#endif + +int dazuko_security_acct (struct file *file) +{ + RETURN_DAZUKO_LSM_CALL(acct, (file)); + + return 0; +} + +#ifndef NO_CAPABILITIES +int dazuko_security_capable(struct task_struct * tsk, int cap) +{ + RETURN_DAZUKO_LSM_CALL(capable, (tsk, cap)); + + return cap_capable(tsk, cap); +} +#endif + +#if defined(LSM_security_sysctl_2_6_10) +int dazuko_security_sysctl(struct ctl_table * table, int op) +#else +int dazuko_security_sysctl(ctl_table * table, int op) +#endif +{ + RETURN_DAZUKO_LSM_CALL(sysctl, (table, op)); + + return 0; +} + +int dazuko_security_quotactl (int cmds, int type, int id, struct super_block * sb) +{ + RETURN_DAZUKO_LSM_CALL(quotactl, (cmds, type, id, sb)); + + return 0; +} + +#if defined(LSM_security_quota_on_2_6_11) +int dazuko_security_quota_on (struct dentry * dentry) +{ + RETURN_DAZUKO_LSM_CALL(quota_on, (dentry)); + + return 0; +} +#else +int dazuko_security_quota_on (struct file * file) +{ + RETURN_DAZUKO_LSM_CALL(quota_on, (file)); + + return 0; +} +#endif + +#ifndef NO_CAPABILITIES +int dazuko_security_syslog(int type) +{ + RETURN_DAZUKO_LSM_CALL(syslog, (type)); + + return cap_syslog(type); +} +#endif + +#ifndef NO_CAPABILITIES +#if defined(LSM_security_settime_2_6_10) +int dazuko_security_settime(struct timespec *ts, struct timezone *tz) +{ + RETURN_DAZUKO_LSM_CALL(settime, (ts, tz)); + + return cap_settime(ts, tz); +} +#endif +#endif + +#ifndef NO_CAPABILITIES +int dazuko_security_vm_enough_memory(long pages) +{ + RETURN_DAZUKO_LSM_CALL(vm_enough_memory, (pages)); + + return cap_vm_enough_memory(pages); +} +#endif + +int dazuko_security_bprm_alloc_security (struct linux_binprm *bprm) +{ + RETURN_DAZUKO_LSM_CALL(bprm_alloc_security, (bprm)); + + return 0; +} + +void dazuko_security_bprm_free_security (struct linux_binprm *bprm) +{ + VOID_DAZUKO_LSM_CALL(bprm_free_security, (bprm)); +} + +#ifndef NO_CAPABILITIES +#if defined(LSM_security_bprm_apply_creds_2_6_6) +void dazuko_security_bprm_apply_creds (struct linux_binprm *bprm, int unsafe) +{ + VOID_DAZUKO_LSM_CALL(bprm_apply_creds, (bprm, unsafe)); + else + + cap_bprm_apply_creds (bprm, unsafe); +} +#elif defined(LSM_security_bprm_apply_creds_2_6_6_mandrake) +void dazuko_security_bprm_apply_creds (struct linux_binprm *bprm) +{ + VOID_DAZUKO_LSM_CALL(bprm_apply_creds, (bprm)); + else + + cap_bprm_apply_creds (bprm); +} +#else +void dazuko_security_bprm_compute_creds (struct linux_binprm *bprm) +{ + VOID_DAZUKO_LSM_CALL(bprm_compute_creds, (bprm)); + else + + cap_bprm_compute_creds (bprm); +} +#endif +#endif + +#if defined(LSM_security_bprm_post_apply_creds_2_6_11) +void dazuko_security_bprm_post_apply_creds (struct linux_binprm * bprm) +{ + VOID_DAZUKO_LSM_CALL(bprm_post_apply_creds, (bprm)); +} +#endif + +#ifndef NO_CAPABILITIES +int dazuko_security_bprm_set_security (struct linux_binprm *bprm) +{ + RETURN_DAZUKO_LSM_CALL(bprm_set_security, (bprm)); + + return cap_bprm_set_security (bprm); +} +#endif + +int dazuko_security_bprm_check_security (struct linux_binprm *bprm) +{ + RETURN_DAZUKO_LSM_CALL(bprm_check_security, (bprm)); + + return 0; +} + +#ifndef NO_CAPABILITIES +int dazuko_security_bprm_secureexec (struct linux_binprm *bprm) +{ + RETURN_DAZUKO_LSM_CALL(bprm_secureexec, (bprm)); + + return cap_bprm_secureexec(bprm); +} +#endif + +int dazuko_security_sb_alloc_security (struct super_block *sb) +{ + RETURN_DAZUKO_LSM_CALL(sb_alloc_security, (sb)); + + return 0; +} + +void dazuko_security_sb_free_security (struct super_block *sb) +{ + VOID_DAZUKO_LSM_CALL(sb_free_security, (sb)); +} + +#if defined(LSM_security_sb_copy_data_2_6_5) +int dazuko_security_sb_copy_data (struct file_system_type *type, void *orig, void *copy) +{ + RETURN_DAZUKO_LSM_CALL(sb_copy_data, (type, orig, copy)); + + return 0; +} +#elif defined(LSM_security_sb_copy_data_2_6_3) +int dazuko_security_sb_copy_data (const char *fstype, void *orig, void *copy) +{ + RETURN_DAZUKO_LSM_CALL(sb_copy_data, (fstype, orig, copy)); + + return 0; +} +#endif + +#if defined(LSM_security_sb_kern_mount_2_6_3) +int dazuko_security_sb_kern_mount (struct super_block *sb, void *data) +{ + RETURN_DAZUKO_LSM_CALL(sb_kern_mount, (sb, data)); + + return 0; +} +#else +int dazuko_security_sb_kern_mount (struct super_block *sb) +{ + RETURN_DAZUKO_LSM_CALL(sb_kern_mount, (sb)); + + return 0; +} +#endif + +int dazuko_security_sb_statfs (struct super_block *sb) +{ + RETURN_DAZUKO_LSM_CALL(sb_statfs, (sb)); + + return 0; +} + +int dazuko_security_sb_mount (char *dev_name, struct nameidata *nd, char *type, unsigned long flags, void *data) +{ + RETURN_DAZUKO_LSM_CALL(sb_mount, (dev_name, nd, type, flags, data)); + + return 0; +} + +int dazuko_security_sb_check_sb (struct vfsmount *mnt, struct nameidata *nd) +{ + RETURN_DAZUKO_LSM_CALL(sb_check_sb, (mnt, nd)); + + return 0; +} + +int dazuko_security_sb_umount (struct vfsmount *mnt, int flags) +{ + RETURN_DAZUKO_LSM_CALL(sb_umount, (mnt, flags)); + + return 0; +} + +void dazuko_security_sb_umount_close (struct vfsmount *mnt) +{ + VOID_DAZUKO_LSM_CALL(sb_umount_close, (mnt)); +} + +void dazuko_security_sb_umount_busy (struct vfsmount *mnt) +{ + VOID_DAZUKO_LSM_CALL(sb_umount_busy, (mnt)); +} + +void dazuko_security_sb_post_remount (struct vfsmount *mnt, unsigned long flags, void *data) +{ + VOID_DAZUKO_LSM_CALL(sb_post_remount, (mnt, flags, data)); +} + +void dazuko_security_sb_post_mountroot (void) +{ + VOID_DAZUKO_LSM_CALL(sb_post_mountroot, ()); +} + +void dazuko_security_sb_post_addmount (struct vfsmount *mnt, struct nameidata *mountpoint_nd) +{ + VOID_DAZUKO_LSM_CALL(sb_post_addmount, (mnt, mountpoint_nd)); +} + +int dazuko_security_sb_pivotroot (struct nameidata *old_nd, struct nameidata *new_nd) +{ + RETURN_DAZUKO_LSM_CALL(sb_pivotroot, (old_nd, new_nd)); + + return 0; +} + +void dazuko_security_sb_post_pivotroot (struct nameidata *old_nd, struct nameidata *new_nd) +{ + VOID_DAZUKO_LSM_CALL(sb_post_pivotroot, (old_nd, new_nd)); +} + +int dazuko_security_inode_alloc_security (struct inode *inode) +{ + RETURN_DAZUKO_LSM_CALL(inode_alloc_security, (inode)); + + return 0; +} + +void dazuko_security_inode_free_security (struct inode *inode) +{ + VOID_DAZUKO_LSM_CALL(inode_free_security, (inode)); +} + +#if defined(LSM_security_inode_init_security_2_6_14) +int dazuko_security_inode_init_security (struct inode *inode, struct inode *dir, char **name, void **value, size_t *len) +{ + RETURN_DAZUKO_LSM_CALL(inode_init_security, (inode, dir, name, value, len)); + + return -EOPNOTSUPP; +} +#endif + +int dazuko_security_inode_create (struct inode *dir, struct dentry *dentry, int mode) +{ + RETURN_DAZUKO_LSM_CALL(inode_create, (dir, dentry, mode)); + + return 0; +} + +#if defined(LSM_security_inode_post_create_2_6_14) +void dazuko_security_inode_post_create (struct inode *dir, struct dentry *dentry, int mode) +{ + VOID_DAZUKO_LSM_CALL(inode_post_create, (dir, dentry, mode)); +} +#endif + +int dazuko_security_inode_link (struct dentry *old_dentry, struct inode *dir, struct dentry *new_dentry) +{ + RETURN_DAZUKO_LSM_CALL(inode_link, (old_dentry, dir, new_dentry)); + + return 0; +} + +#if defined(LSM_security_inode_post_link_2_6_14) +void dazuko_security_inode_post_link (struct dentry *old_dentry, struct inode *dir, struct dentry *new_dentry) +{ + VOID_DAZUKO_LSM_CALL(inode_post_link, (old_dentry, dir, new_dentry)); +} +#endif + +int dazuko_security_inode_unlink (struct inode *dir, struct dentry *dentry) +{ + RETURN_DAZUKO_LSM_CALL(inode_unlink, (dir, dentry)); + + return 0; +} + +int dazuko_security_inode_symlink (struct inode *dir, struct dentry *dentry, const char *old_name) +{ + RETURN_DAZUKO_LSM_CALL(inode_symlink, (dir, dentry, old_name)); + + return 0; +} + +#if defined(LSM_security_inode_post_symlink_2_6_14) +void dazuko_security_inode_post_symlink (struct inode *dir, struct dentry *dentry, const char *old_name) +{ + VOID_DAZUKO_LSM_CALL(inode_post_symlink, (dir, dentry, old_name)); +} +#endif + +int dazuko_security_inode_mkdir (struct inode *dir, struct dentry *dentry, int mode) +{ + RETURN_DAZUKO_LSM_CALL(inode_mkdir, (dir, dentry, mode)); + + return 0; +} + +#if defined(LSM_security_inode_post_mkdir_2_6_14) +void dazuko_security_inode_post_mkdir (struct inode *dir, struct dentry *dentry, int mode) +{ + VOID_DAZUKO_LSM_CALL(inode_post_mkdir, (dir, dentry, mode)); +} +#endif + +int dazuko_security_inode_rmdir (struct inode *dir, struct dentry *dentry) +{ + RETURN_DAZUKO_LSM_CALL(inode_rmdir, (dir, dentry)); + + return 0; +} + +int dazuko_security_inode_mknod (struct inode *dir, struct dentry *dentry, int mode, dev_t dev) +{ + RETURN_DAZUKO_LSM_CALL(inode_mknod, (dir, dentry, mode, dev)); + + return 0; +} + +#if defined(LSM_security_inode_post_mknod_2_6_14) +void dazuko_security_inode_post_mknod (struct inode *dir, struct dentry *dentry, int mode, dev_t dev) +{ + VOID_DAZUKO_LSM_CALL(inode_post_mknod, (dir, dentry, mode, dev)); +} +#endif + +int dazuko_security_inode_rename (struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry) +{ + RETURN_DAZUKO_LSM_CALL(inode_rename, (old_dir, old_dentry, new_dir, new_dentry)); + + return 0; +} + +#if defined(LSM_security_inode_post_rename_2_6_14) +void dazuko_security_inode_post_rename (struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry) +{ + VOID_DAZUKO_LSM_CALL(inode_post_rename, (old_dir, old_dentry, new_dir, new_dentry)); +} +#endif + +int dazuko_security_inode_readlink (struct dentry *dentry) +{ + RETURN_DAZUKO_LSM_CALL(inode_readlink, (dentry)); + + return 0; +} + +int dazuko_security_inode_follow_link (struct dentry *dentry, struct nameidata *nd) +{ + RETURN_DAZUKO_LSM_CALL(inode_follow_link, (dentry, nd)); + + return 0; +} + +int dazuko_security_inode_permission (struct inode *inode, int mask, struct nameidata *nd) +{ + int rc1; + int rc2; + + /* get Dazuko's decision */ + rc1 = dazuko_sys_generic(inode, mask, nd); + + if (dazuko_security_ops.inode_permission != NULL) + { + /* get a stacked module's decision (regardless of Dazuko's decision) */ + rc2 = dazuko_security_ops.inode_permission (inode, mask, nd); + + /* Dazuko's decision has priority if non-zero */ + if (rc1 != 0) + return rc1; + + return rc2; + } + + /* return Dazuko's decision if non-zero */ + if (rc1 != 0) + return rc1; + + /* call default hook, if available */ + if (dazuko_security_default_ops.inode_permission != NULL) + return dazuko_security_default_ops.inode_permission (inode, mask, nd); + + return 0; +} + +int dazuko_security_inode_setattr (struct dentry *dentry, struct iattr *attr) +{ + RETURN_DAZUKO_LSM_CALL(inode_setattr, (dentry, attr)); + + return 0; +} + +int dazuko_security_inode_getattr (struct vfsmount *mnt, struct dentry *dentry) +{ + RETURN_DAZUKO_LSM_CALL(inode_getattr, (mnt, dentry)); + + return 0; +} + +void dazuko_security_inode_delete (struct inode *inode) +{ + VOID_DAZUKO_LSM_CALL(inode_delete, (inode)); +} + +#ifndef NO_CAPABILITIES +int dazuko_security_inode_setxattr (struct dentry *dentry, char *name, void *value, size_t size, int flags) +{ + RETURN_DAZUKO_LSM_CALL(inode_setxattr, (dentry, name, value, size, flags)); + +#if defined(LSM_security_inode_setxattr_2_6_2) + return cap_inode_setxattr(dentry, name, value, size, flags); +#else + return 0; +#endif +} +#endif + +void dazuko_security_inode_post_setxattr (struct dentry *dentry, char *name, void *value, size_t size, int flags) +{ + VOID_DAZUKO_LSM_CALL(inode_post_setxattr, (dentry, name, value, size, flags)); +} + +int dazuko_security_inode_getxattr (struct dentry *dentry, char *name) +{ + RETURN_DAZUKO_LSM_CALL(inode_getxattr, (dentry, name)); + + return 0; +} + +int dazuko_security_inode_listxattr (struct dentry *dentry) +{ + RETURN_DAZUKO_LSM_CALL(inode_listxattr, (dentry)); + + return 0; +} + +#ifndef NO_CAPABILITIES +int dazuko_security_inode_removexattr (struct dentry *dentry, char *name) +{ + RETURN_DAZUKO_LSM_CALL(inode_removexattr, (dentry, name)); + +#if defined(LSM_security_inode_removexattr_2_6_2) + return cap_inode_removexattr(dentry, name); +#else + return 0; +#endif +} +#endif + +#if defined(LSM_security_inode_xattr_getsuffix_2_6_17) +const char * dazuko_security_inode_xattr_getsuffix (void) +{ + RETURN_DAZUKO_LSM_CALL(inode_xattr_getsuffix, ()); + + return NULL; +} +#endif + +#if defined(LSM_security_inode_getsecurity_2_6_10) +int dazuko_security_inode_getsecurity(struct inode *inode, const char *name, void *buffer, size_t size) +{ + RETURN_DAZUKO_LSM_CALL(inode_getsecurity, (inode, name, buffer, size)); + + return -EOPNOTSUPP; +} +#elif defined(LSM_security_inode_getsecurity_2_6_17) +int dazuko_security_inode_getsecurity(const struct inode *inode, const char *name, void *buffer, size_t size, int err) +{ + RETURN_DAZUKO_LSM_CALL(inode_getsecurity, (inode, name, buffer, size, err)); + + return -EOPNOTSUPP; +} +#elif defined(LSM_security_inode_getsecurity_2_6_14) +int dazuko_security_inode_getsecurity(struct inode *inode, const char *name, void *buffer, size_t size, int err) +{ + RETURN_DAZUKO_LSM_CALL(inode_getsecurity, (inode, name, buffer, size, err)); + + return -EOPNOTSUPP; +} +#else +int dazuko_security_inode_getsecurity(struct dentry *dentry, const char *name, void *buffer, size_t size) +{ + RETURN_DAZUKO_LSM_CALL(inode_getsecurity, (dentry, name, buffer, size)); + + return -EOPNOTSUPP; +} +#endif + +#if defined(LSM_security_inode_setsecurity_2_6_10) +int dazuko_security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags) +{ + RETURN_DAZUKO_LSM_CALL(inode_setsecurity, (inode, name, value, size, flags)); + + return -EOPNOTSUPP; +} +#else +int dazuko_security_inode_setsecurity(struct dentry *dentry, const char *name, const void *value, size_t size, int flags) +{ + RETURN_DAZUKO_LSM_CALL(inode_setsecurity, (dentry, name, value, size, flags)); + + return -EOPNOTSUPP; +} +#endif + +#if defined(LSM_security_inode_listsecurity_2_6_10) +int dazuko_security_inode_listsecurity(struct inode *inode, char *buffer, size_t buffer_size) +{ + RETURN_DAZUKO_LSM_CALL(inode_listsecurity, (inode, buffer, buffer_size)); + + return 0; +} +#else +int dazuko_security_inode_listsecurity(struct dentry *dentry, char *buffer) +{ + RETURN_DAZUKO_LSM_CALL(inode_listsecurity, (dentry, buffer)); + + return 0; +} +#endif + +int dazuko_security_file_permission (struct file *file, int mask) +{ + RETURN_DAZUKO_LSM_CALL(file_permission, (file, mask)); + + return 0; +} + +int dazuko_security_file_alloc_security (struct file *file) +{ + RETURN_DAZUKO_LSM_CALL(file_alloc_security, (file)); + + return 0; +} + +void dazuko_security_file_free_security (struct file *file) +{ + VOID_DAZUKO_LSM_CALL(file_free_security, (file)); +} + +int dazuko_security_file_ioctl (struct file *file, unsigned int cmd, unsigned long arg) +{ + RETURN_DAZUKO_LSM_CALL(file_ioctl, (file, cmd, arg)); + + return 0; +} + +#if defined(LSM_security_file_mmap_2_6_12) +int dazuko_security_file_mmap (struct file *file, unsigned long reqprot, unsigned long prot, unsigned long flags) +{ + RETURN_DAZUKO_LSM_CALL(file_mmap, (file, reqprot, prot, flags)); + + return 0; +} +#else +int dazuko_security_file_mmap (struct file *file, unsigned long prot, unsigned long flags) +{ + RETURN_DAZUKO_LSM_CALL(file_mmap, (file, prot, flags)); + + return 0; +} +#endif + +#if defined(LSM_security_file_mprotect_2_6_12) +int dazuko_security_file_mprotect (struct vm_area_struct *vma, unsigned long reqprot, unsigned long prot) +{ + RETURN_DAZUKO_LSM_CALL(file_mprotect, (vma, reqprot, prot)); + + return 0; +} +#else +int dazuko_security_file_mprotect (struct vm_area_struct *vma, unsigned long prot) +{ + RETURN_DAZUKO_LSM_CALL(file_mprotect, (vma, prot)); + + return 0; +} +#endif + +int dazuko_security_file_lock (struct file *file, unsigned int cmd) +{ + RETURN_DAZUKO_LSM_CALL(file_lock, (file, cmd)); + + return 0; +} + +int dazuko_security_file_fcntl (struct file *file, unsigned int cmd, unsigned long arg) +{ + RETURN_DAZUKO_LSM_CALL(file_fcntl, (file, cmd, arg)); + + return 0; +} + +int dazuko_security_file_set_fowner (struct file *file) +{ + RETURN_DAZUKO_LSM_CALL(file_set_fowner, (file)); + + return 0; +} + +#if defined(LSM_security_file_send_sigiotask_2_6_10) +int dazuko_security_file_send_sigiotask (struct task_struct *tsk, struct fown_struct *fown, int sig) +{ + RETURN_DAZUKO_LSM_CALL(file_send_sigiotask, (tsk, fown, sig)); + + return 0; +} +#else +int dazuko_security_file_send_sigiotask (struct task_struct *tsk, struct fown_struct *fown, int fd, int reason) +{ + RETURN_DAZUKO_LSM_CALL(file_send_sigiotask, (tsk, fown, fd, reason)); + + return 0; +} +#endif + +int dazuko_security_file_receive (struct file *file) +{ + RETURN_DAZUKO_LSM_CALL(file_receive, (file)); + + return 0; +} + +int dazuko_security_task_create (unsigned long clone_flags) +{ + RETURN_DAZUKO_LSM_CALL(task_create, (clone_flags)); + + return 0; +} + +int dazuko_security_task_alloc_security (struct task_struct *p) +{ + RETURN_DAZUKO_LSM_CALL(task_alloc_security, (p)); + + return 0; +} + +void dazuko_security_task_free_security (struct task_struct *p) +{ + VOID_DAZUKO_LSM_CALL(task_free_security, (p)); +} + +int dazuko_security_task_setuid (uid_t id0, uid_t id1, uid_t id2, int flags) +{ + RETURN_DAZUKO_LSM_CALL(task_setuid, (id0, id1, id2, flags)); + + return 0; +} + +#ifndef NO_CAPABILITIES +int dazuko_security_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags) +{ + RETURN_DAZUKO_LSM_CALL(task_post_setuid, (old_ruid, old_euid, old_suid, flags)); + + return cap_task_post_setuid (old_ruid, old_euid, old_suid, flags); +} +#endif + +int dazuko_security_task_setgid (gid_t id0, gid_t id1, gid_t id2, int flags) +{ + RETURN_DAZUKO_LSM_CALL(task_setgid, (id0, id1, id2, flags)); + + return 0; +} + +int dazuko_security_task_setpgid (struct task_struct *p, pid_t pgid) +{ + RETURN_DAZUKO_LSM_CALL(task_setpgid, (p, pgid)); + + return 0; +} + +int dazuko_security_task_getpgid (struct task_struct *p) +{ + RETURN_DAZUKO_LSM_CALL(task_getpgid, (p)); + + return 0; +} + +int dazuko_security_task_getsid (struct task_struct *p) +{ + RETURN_DAZUKO_LSM_CALL(task_getsid, (p)); + + return 0; +} + +#if defined(LSM_security_task_setgroups_2_6_4) +int dazuko_security_task_setgroups (struct group_info *group_info) +{ + RETURN_DAZUKO_LSM_CALL(task_setgroups, (group_info)); + + return 0; +} +#else +int dazuko_security_task_setgroups (int gidsetsize, gid_t * grouplist) +{ + RETURN_DAZUKO_LSM_CALL(task_setgroups, (gidsetsize, grouplist)); + + return 0; +} +#endif + +int dazuko_security_task_setnice (struct task_struct *p, int nice) +{ + RETURN_DAZUKO_LSM_CALL(task_setnice, (p, nice)); + + return 0; +} + +int dazuko_security_task_setrlimit (unsigned int resource, struct rlimit *new_rlim) +{ + RETURN_DAZUKO_LSM_CALL(task_setrlimit, (resource, new_rlim)); + + return 0; +} + +int dazuko_security_task_setscheduler (struct task_struct *p, int policy, struct sched_param *lp) +{ + RETURN_DAZUKO_LSM_CALL(task_setscheduler, (p, policy, lp)); + + return 0; +} + +int dazuko_security_task_getscheduler (struct task_struct *p) +{ + RETURN_DAZUKO_LSM_CALL(task_getscheduler, (p)); + + return 0; +} + +int dazuko_security_task_kill (struct task_struct *p, struct siginfo *info, int sig) +{ + RETURN_DAZUKO_LSM_CALL(task_kill, (p, info, sig)); + + return 0; +} + +int dazuko_security_task_wait (struct task_struct *p) +{ + RETURN_DAZUKO_LSM_CALL(task_wait, (p)); + + return 0; +} + +int dazuko_security_task_prctl (int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5) +{ + RETURN_DAZUKO_LSM_CALL(task_prctl, (option, arg2, arg3, arg4, arg5)); + + return 0; +} + +#ifndef NO_CAPABILITIES +void dazuko_security_task_reparent_to_init (struct task_struct *p) +{ + VOID_DAZUKO_LSM_CALL(task_reparent_to_init, (p)); + else + + cap_task_reparent_to_init (p); +} +#endif + +void dazuko_security_task_to_inode(struct task_struct *p, struct inode *inode) +{ + VOID_DAZUKO_LSM_CALL(task_to_inode, (p, inode)); +} + +int dazuko_security_ipc_permission (struct kern_ipc_perm *ipcp, short flag) +{ + RETURN_DAZUKO_LSM_CALL(ipc_permission, (ipcp, flag)); + + return 0; +} + +#if defined(LSM_security_ipc_getsecurity_2_6_17) +int dazuko_security_ipc_getsecurity (struct kern_ipc_perm *ipcp, void *buffer, size_t size) +{ + RETURN_DAZUKO_LSM_CALL(ipc_getsecurity, (ipcp, buffer, size)); + + return -EOPNOTSUPP; +} +#endif + +int dazuko_security_msg_msg_alloc_security (struct msg_msg * msg) +{ + RETURN_DAZUKO_LSM_CALL(msg_msg_alloc_security, (msg)); + + return 0; +} + +void dazuko_security_msg_msg_free_security (struct msg_msg * msg) +{ + VOID_DAZUKO_LSM_CALL(msg_msg_free_security, (msg)); +} + +int dazuko_security_msg_queue_alloc_security (struct msg_queue *msq) +{ + RETURN_DAZUKO_LSM_CALL(msg_queue_alloc_security, (msq)); + + return 0; +} + +void dazuko_security_msg_queue_free_security (struct msg_queue *msq) +{ + VOID_DAZUKO_LSM_CALL(msg_queue_free_security, (msq)); +} + +int dazuko_security_msg_queue_associate (struct msg_queue * msq, int msqflg) +{ + RETURN_DAZUKO_LSM_CALL(msg_queue_associate, (msq, msqflg)); + + return 0; +} + +int dazuko_security_msg_queue_msgctl (struct msg_queue * msq, int cmd) +{ + RETURN_DAZUKO_LSM_CALL(msg_queue_msgctl, (msq, cmd)); + + return 0; +} + +int dazuko_security_msg_queue_msgsnd (struct msg_queue * msq, struct msg_msg * msg, int msqflg) +{ + RETURN_DAZUKO_LSM_CALL(msg_queue_msgsnd, (msq, msg, msqflg)); + + return 0; +} + +int dazuko_security_msg_queue_msgrcv (struct msg_queue * msq, struct msg_msg * msg, struct task_struct * target, long type, int mode) +{ + RETURN_DAZUKO_LSM_CALL(msg_queue_msgrcv, (msq, msg, target, type, mode)); + + return 0; +} + +int dazuko_security_shm_alloc_security (struct shmid_kernel *shp) +{ + RETURN_DAZUKO_LSM_CALL(shm_alloc_security, (shp)); + + return 0; +} + +void dazuko_security_shm_free_security (struct shmid_kernel *shp) +{ + VOID_DAZUKO_LSM_CALL(shm_free_security, (shp)); +} + +int dazuko_security_shm_associate (struct shmid_kernel * shp, int shmflg) +{ + RETURN_DAZUKO_LSM_CALL(shm_associate, (shp, shmflg)); + + return 0; +} + +int dazuko_security_shm_shmctl (struct shmid_kernel * shp, int cmd) +{ + RETURN_DAZUKO_LSM_CALL(shm_shmctl, (shp, cmd)); + + return 0; +} + +#if defined(LSM_security_shm_shmat_2_6_7) +int dazuko_security_shm_shmat (struct shmid_kernel * shp, char __user *shmaddr, int shmflg) +#else +int dazuko_security_shm_shmat (struct shmid_kernel * shp, char *shmaddr, int shmflg) +#endif +{ + RETURN_DAZUKO_LSM_CALL(shm_shmat, (shp, shmaddr, shmflg)); + + return 0; +} + +int dazuko_security_sem_alloc_security (struct sem_array *sma) +{ + RETURN_DAZUKO_LSM_CALL(sem_alloc_security, (sma)); + + return 0; +} + +void dazuko_security_sem_free_security (struct sem_array *sma) +{ + VOID_DAZUKO_LSM_CALL(sem_free_security, (sma)); +} + +int dazuko_security_sem_associate (struct sem_array * sma, int semflg) +{ + RETURN_DAZUKO_LSM_CALL(sem_associate, (sma, semflg)); + + return 0; +} + +int dazuko_security_sem_semctl (struct sem_array * sma, int cmd) +{ + RETURN_DAZUKO_LSM_CALL(sem_semctl, (sma, cmd)); + + return 0; +} + +int dazuko_security_sem_semop (struct sem_array * sma, struct sembuf * sops, unsigned nsops, int alter) +{ + RETURN_DAZUKO_LSM_CALL(sem_semop, (sma, sops, nsops, alter)); + + return 0; +} + +void dazuko_security_d_instantiate (struct dentry *dentry, struct inode *inode) +{ + VOID_DAZUKO_LSM_CALL(d_instantiate, (dentry, inode)); +} + +int dazuko_security_getprocattr(struct task_struct *p, char *name, void *value, size_t size) +{ + RETURN_DAZUKO_LSM_CALL(getprocattr, (p, name, value, size)); + + return -EINVAL; +} + +int dazuko_security_setprocattr(struct task_struct *p, char *name, void *value, size_t size) +{ + RETURN_DAZUKO_LSM_CALL(setprocattr, (p, name, value, size)); + + return -EINVAL; +} + +#ifndef NO_CAPABILITIES +#if defined(LSM_security_netlink_send_2_6_8) +int dazuko_security_netlink_send (struct sock *sk, struct sk_buff *skb) +{ + RETURN_DAZUKO_LSM_CALL(netlink_send, (sk, skb)); + + return cap_netlink_send (sk, skb); +} +#else +int dazuko_security_netlink_send (struct sk_buff *skb) +{ + RETURN_DAZUKO_LSM_CALL(netlink_send, (skb)); + + return cap_netlink_send (skb); +} +#endif +#endif + +#ifndef NO_CAPABILITIES +int dazuko_security_netlink_recv (struct sk_buff *skb) +{ + RETURN_DAZUKO_LSM_CALL(netlink_recv, (skb)); + + return cap_netlink_recv (skb); +} +#endif + + +int dazuko_security_unix_stream_connect(struct socket * sock, struct socket * other, struct sock * newsk) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(unix_stream_connect, (sock, other, newsk)); +#endif + + return 0; +} + + +int dazuko_security_unix_may_send(struct socket * sock, struct socket * other) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(unix_may_send, (sock, other)); +#endif + + return 0; +} + +#if defined(LSM_security_socket_create_2_6_6) +int dazuko_security_socket_create (int family, int type, int protocol, int kern) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_create, (family, type, protocol, kern)); +#endif + + return 0; +} +#else +int dazuko_security_socket_create (int family, int type, int protocol) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_create, (family, type, protocol)); +#endif + + return 0; +} +#endif + +#if defined(LSM_security_socket_post_create_2_6_6) +void dazuko_security_socket_post_create(struct socket * sock, int family, int type, int protocol, int kern) +{ +#ifdef CONFIG_SECURITY_NETWORK + VOID_DAZUKO_LSM_CALL(socket_post_create, (sock, family, type, protocol, kern)); +#endif +} +#else +void dazuko_security_socket_post_create(struct socket * sock, int family, int type, int protocol) +{ +#ifdef CONFIG_SECURITY_NETWORK + VOID_DAZUKO_LSM_CALL(socket_post_create, (sock, family, type, protocol)); +#endif +} +#endif + +int dazuko_security_socket_bind(struct socket * sock, struct sockaddr * address, int addrlen) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_bind, (sock, address, addrlen)); +#endif + + return 0; +} + +int dazuko_security_socket_connect(struct socket * sock, struct sockaddr * address, int addrlen) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_connect, (sock, address, addrlen)); +#endif + + return 0; +} + +int dazuko_security_socket_listen(struct socket * sock, int backlog) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_listen, (sock, backlog)); +#endif + + return 0; +} + +int dazuko_security_socket_accept(struct socket * sock, struct socket * newsock) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_accept, (sock, newsock)); +#endif + + return 0; +} + +void dazuko_security_socket_post_accept(struct socket * sock, struct socket * newsock) +{ +#ifdef CONFIG_SECURITY_NETWORK + VOID_DAZUKO_LSM_CALL(socket_post_accept, (sock, newsock)); +#endif +} + +int dazuko_security_socket_sendmsg(struct socket * sock, struct msghdr * msg, int size) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_sendmsg, (sock, msg, size)); +#endif + + return 0; +} + +int dazuko_security_socket_recvmsg(struct socket * sock, struct msghdr * msg, int size, int flags) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_recvmsg, (sock, msg, size, flags)); +#endif + + return 0; +} + +int dazuko_security_socket_getsockname(struct socket * sock) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_getsockname, (sock)); +#endif + + return 0; +} + +int dazuko_security_socket_getpeername(struct socket * sock) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_getpeername, (sock)); +#endif + + return 0; +} + +int dazuko_security_socket_getsockopt(struct socket * sock, int level, int optname) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_getsockopt, (sock, level, optname)); +#endif + + return 0; +} + +int dazuko_security_socket_setsockopt(struct socket * sock, int level, int optname) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_setsockopt, (sock, level, optname)); +#endif + + return 0; +} + +int dazuko_security_socket_shutdown(struct socket * sock, int how) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_shutdown, (sock, how)); +#endif + + return 0; +} + +int dazuko_security_socket_sock_rcv_skb (struct sock * sk, struct sk_buff * skb) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_sock_rcv_skb, (sk, skb)); +#endif + + return 0; +} + +#if defined(LSM_security_socket_getpeersec_stream_2_6_17) +int dazuko_security_socket_getpeersec_stream(struct socket *sock, char __user *optval, int __user *optlen, unsigned len) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_getpeersec_stream, (sock, optval, optlen, len)); +#endif + + return -ENOPROTOOPT; +} +#endif + +#if defined(LSM_security_socket_getpeersec_dgram_2_6_17) +int dazuko_security_socket_getpeersec_dgram(struct sk_buff *skb, char **secdata, u32 *seclen) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_getpeersec_dgram, (skb, secdata, seclen)); +#endif + + return -ENOPROTOOPT; +} +#endif + +#if defined(LSM_security_socket_getpeersec_2_6_2) +int dazuko_security_socket_getpeersec(struct socket *sock, char __user *optval, int __user *optlen, unsigned len) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(socket_getpeersec, (sock, optval, optlen, len)); +#endif + + return -ENOPROTOOPT; +} +#endif + +#if defined(LSM_security_sk_alloc_security_2_6_15) +int dazuko_security_sk_alloc_security(struct sock *sk, int family, gfp_t priority) +#elif defined(LSM_security_sk_alloc_security_2_6_14) +int dazuko_security_sk_alloc_security(struct sock *sk, int family, unsigned int __nocast priority) +#elif defined(LSM_security_sk_alloc_security_2_6_2) +int dazuko_security_sk_alloc_security(struct sock *sk, int family, int priority) +#endif +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(sk_alloc_security, (sk, family, priority)); +#endif + + return 0; +} + +#if defined(LSM_security_sk_free_security_2_6_2) +void dazuko_security_sk_free_security(struct sock *sk) +{ +#ifdef CONFIG_SECURITY_NETWORK + VOID_DAZUKO_LSM_CALL(sk_free_security, (sk)); +#endif +} +#endif + +#if defined(LSM_security_sk_getsid_2_6_17) +unsigned int dazuko_security_sk_getsid(struct sock *sk, struct flowi *fl, u8 dir) +{ +#ifdef CONFIG_SECURITY_NETWORK + RETURN_DAZUKO_LSM_CALL(sk_getsid, (sk, fl, dir)); +#endif + + return 0; +} +#endif + +#ifdef CONFIG_SECURITY_NETWORK_XFRM + +#if defined(LSM_security_xfrm_policy_alloc_2_6_16) +int dazuko_security_xfrm_policy_alloc(struct xfrm_policy *xp, struct xfrm_user_sec_ctx *sec_ctx) +{ + RETURN_DAZUKO_LSM_CALL(xfrm_policy_alloc_security, (xp, sec_ctx)); + + return 0; +} +#endif + +#if defined(LSM_security_xfrm_policy_clone_2_6_16) +int dazuko_security_xfrm_policy_clone(struct xfrm_policy *old, struct xfrm_policy *new) +{ + RETURN_DAZUKO_LSM_CALL(xfrm_policy_clone_security, (old, new)); + + return 0; +} +#endif + +#if defined(LSM_security_xfrm_policy_free_2_6_16) +void dazuko_security_xfrm_policy_free(struct xfrm_policy *xp) +{ + VOID_DAZUKO_LSM_CALL(xfrm_policy_free_security, (xp)); +} +#endif + +#if defined(LSM_security_xfrm_state_alloc_2_6_16) +int dazuko_security_xfrm_state_alloc(struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx) +{ + RETURN_DAZUKO_LSM_CALL(xfrm_state_alloc_security, (x, sec_ctx)); + + return 0; +} +#endif + +#if defined(LSM_security_xfrm_state_free_2_6_16) +void dazuko_security_xfrm_state_free(struct xfrm_state *x) +{ + VOID_DAZUKO_LSM_CALL(xfrm_state_free_security, (x)); +} +#endif + +#if defined(LSM_security_xfrm_policy_lookup_2_6_16) +int dazuko_security_xfrm_policy_lookup(struct xfrm_policy *xp, u32 sk_sid, u8 dir) +{ + RETURN_DAZUKO_LSM_CALL(xfrm_policy_lookup, (xp, sk_sid, dir)); + + return 0; +} +#endif + +#endif + +#ifdef CONFIG_KEYS + +#if defined(LSM_struct_key_alloc_2_6_15) +int dazuko_security_key_alloc(struct key *key) +{ + RETURN_DAZUKO_LSM_CALL(key_alloc, (key)); + + return 0; +} +#endif + +#if defined(LSM_struct_key_free_2_6_15) +void dazuko_security_key_free(struct key *key) +{ + VOID_DAZUKO_LSM_CALL(key_free, (key)); +} +#endif + +#if defined(LSM_security_key_permission_2_6_15) +int dazuko_security_key_permission(key_ref_t key_ref, struct task_struct *context, key_perm_t perm) +{ + RETURN_DAZUKO_LSM_CALL(key_permission, (key_ref, context, perm)); + + return 0; +} +#endif + +#endif + + +#ifdef NO_CAPABILITIES +int lsm_capability_compare(struct security_operations *ops1, struct security_operations *ops2) +{ + if (ops1->ptrace != ops2->ptrace + || ops1->capget != ops2->capget + || ops1->capset_check != ops2->capset_check + || ops1->capset_set != ops2->capset_set + || ops1->capable != ops2->capable + || ops1->syslog != ops2->syslog +#if defined(LSM_security_settime_2_6_10) + || ops1->settime != ops2->settime +#endif + || ops1->vm_enough_memory != ops2->vm_enough_memory +#if defined(LSM_security_bprm_apply_creds_2_6_6) || defined(LSM_security_bprm_apply_creds_2_6_6_mandrake) + || ops1->bprm_apply_creds != ops2->bprm_apply_creds +#else + || ops1->bprm_compute_creds != ops2->bprm_compute_creds +#endif + || ops1->bprm_set_security != ops2->bprm_set_security + || ops1->bprm_secureexec != ops2->bprm_secureexec + || ops1->inode_setxattr != ops2->inode_setxattr + || ops1->inode_removexattr != ops2->inode_removexattr + || ops1->task_post_setuid != ops2->task_post_setuid + || ops1->task_reparent_to_init != ops2->task_reparent_to_init + || ops1->netlink_send != ops2->netlink_send + || ops1->netlink_recv != ops2->netlink_recv) + { + /* capability hooks are not available */ + + return -1; + } + + return 0; +} +#endif + --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/dazuko_linux26_lsm_def.h +++ linux-source-2.6.15-2.6.15/fs/dazuko/dazuko_linux26_lsm_def.h @@ -0,0 +1,29 @@ +/* defines for LSM API identification */ + +#define LSM_security_sysctl_2_6_10 +#define LSM_security_settime_2_6_10 +#define LSM_security_bprm_apply_creds_2_6_6 +#define LSM_security_sb_copy_data_2_6_5 +#define LSM_security_sb_kern_mount_2_6_3 +#define LSM_security_inode_setxattr_2_6_2 +#define LSM_security_inode_removexattr_2_6_2 +#define LSM_security_inode_getsecurity_2_6_14 +#define LSM_security_inode_setsecurity_2_6_10 +#define LSM_security_inode_listsecurity_2_6_10 +#define LSM_security_file_send_sigiotask_2_6_10 +#define LSM_security_task_setgroups_2_6_4 +#define LSM_security_shm_shmat_2_6_7 +#define LSM_security_netlink_send_2_6_8 +#define LSM_security_socket_create_2_6_6 +#define LSM_security_socket_post_create_2_6_6 +#define LSM_security_socket_getpeersec_2_6_2 +#define LSM_security_quota_on_2_6_11 +#define LSM_security_bprm_post_apply_creds_2_6_11 +#define LSM_security_file_mmap_2_6_12 +#define LSM_security_file_mprotect_2_6_12 +#define LSM_security_inode_init_security_2_6_14 +#define LSM_security_sk_alloc_security_2_6_15 +#define LSM_security_sk_free_security_2_6_2 +#define LSM_struct_key_alloc_2_6_15 +#define LSM_struct_key_free_2_6_15 +#define LSM_security_key_permission_2_6_15 --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/dazuko_call.h +++ linux-source-2.6.15-2.6.15/fs/dazuko/dazuko_call.h @@ -0,0 +1,486 @@ +/* Dazuko. Check parameters of XP calls before making real calls. + Written by John Ogness + + Copyright (c) 2003, 2004, 2005 H+BEDV Datentechnik GmbH + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of Dazuko nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef DAZUKO_CALL_H +#define DAZUKO_CALL_H + +#include "dazuko_platform.h" + +#include "dazuko_core.h" + +struct xp_mutex; +struct xp_rwlock; +struct xp_queue; +struct xp_atomic; +struct dazuko_file_struct; +struct xp_daemon_id; + +#define call_xp_sys_hook xp_sys_hook +#define call_xp_sys_unhook xp_sys_unhook +#define call_xp_print xp_print + + +/* mutex */ + +static inline void call_xp_init_mutex(struct xp_mutex *mutex) +{ + if (mutex == NULL) + { + xp_print("dazuko: xp_init_mutex(NULL)\n"); + return; + } + + xp_init_mutex(mutex); +} + +static inline void call_xp_down(struct xp_mutex *mutex) +{ + if (mutex == NULL) + { + xp_print("dazuko: warning: xp_down(NULL)\n"); + return; + } + + xp_down(mutex); +} + +static inline void call_xp_up(struct xp_mutex *mutex) +{ + if (mutex == NULL) + { + xp_print("dazuko: warning: xp_up(NULL)\n"); + return; + } + + xp_up(mutex); +} + +static inline void call_xp_destroy_mutex(struct xp_mutex *mutex) +{ + if (mutex == NULL) + { + xp_print("dazuko: warning: xp_destroy_mutex(NULL)\n"); + return; + } + + xp_destroy_mutex(mutex); +} + + +/* read-write lock */ + +static inline void call_xp_init_rwlock(struct xp_rwlock *rwlock) +{ + if (rwlock == NULL) + { + xp_print("dazuko: warning: xp_init_rwlock(NULL)\n"); + return; + } + + xp_init_rwlock(rwlock); +} + +static inline void call_xp_write_lock(struct xp_rwlock *rwlock) +{ + if (rwlock == NULL) + { + xp_print("dazuko: warning: xp_write_lock(NULL)\n"); + return; + } + + xp_write_lock(rwlock); +} + +static inline void call_xp_write_unlock(struct xp_rwlock *rwlock) +{ + if (rwlock == NULL) + { + xp_print("dazuko: warning: xp_write_unlock(NULL)\n"); + return; + } + + xp_write_unlock(rwlock); +} + +static inline void call_xp_read_lock(struct xp_rwlock *rlock) +{ + if (rlock == NULL) + { + xp_print("dazuko: warning: xp_read_lock(NULL)\n"); + return; + } + + xp_read_lock(rlock); +} + +static inline void call_xp_read_unlock(struct xp_rwlock *rlock) +{ + if (rlock == NULL) + { + xp_print("dazuko: warning: xp_read_unlock(NULL)\n"); + return; + } + + xp_read_unlock(rlock); +} + +static inline void call_xp_destroy_rwlock(struct xp_rwlock *rwlock) +{ + if (rwlock == NULL) + { + xp_print("dazuko: warning: xp_destroy_rwlock(NULL)\n"); + return; + } + + xp_destroy_rwlock(rwlock); +} + + +/* wait-notify queue */ + +static inline int call_xp_init_queue(struct xp_queue *queue) +{ + if (queue == NULL) + { + xp_print("dazuko: warning: xp_init_queue(NULL)\n"); + return -1; + } + + return xp_init_queue(queue); +} + +static inline int call_xp_wait_until_condition(struct xp_queue *queue, int (*cfunction)(void *), void *cparam, int allow_interrupt) +{ + if (queue == NULL) + { + xp_print("dazuko: warning: xp_wait_until_condition(queue=NULL)\n"); + return -1; + } + + if (cfunction == NULL) + { + xp_print("dazuko: warning: xp_wait_until_condition(cfunction=NULL)\n"); + return -1; + } + + return xp_wait_until_condition(queue, cfunction, cparam, allow_interrupt); +} + +static inline int call_xp_notify(struct xp_queue *queue) +{ + if (queue == NULL) + { + xp_print("dazuko: warning: xp_notify(NULL)\n"); + return -1; + } + + return xp_notify(queue); +} + +static inline int call_xp_destroy_queue(struct xp_queue *queue) +{ + if (queue == NULL) + { + xp_print("dazuko: warning: xp_destroy_queue(NULL)\n"); + return -1; + } + + return xp_destroy_queue(queue); +} + + +/* memory */ + +static inline void* call_xp_malloc(size_t size) +{ + void *ptr; + + if (size < 1) + { + xp_print("dazuko: warning: xp_malloc(%d)\n", size); + return NULL; + } + + ptr = xp_malloc(size); + + if (ptr == NULL) + xp_print("dazuko: warning: xp_malloc(%d) -> NULL\n", size); + + return ptr; +} + +static int call_xp_free(void *ptr) +{ + if (ptr == NULL) + { + xp_print("dazuko: warning: xp_free(NULL)\n"); + return 0; + } + + return xp_free(ptr); +} + +static inline int call_xp_copyin(const void *user_src, void *kernel_dest, size_t size) +{ + if (user_src == NULL) + { + xp_print("dazuko: warning: xp_copyin(user_src=NULL)\n"); + return -1; + } + + if (kernel_dest == NULL) + { + xp_print("dazuko: warning: xp_copyin(kernel_dest=NULL)\n"); + return -1; + } + + if (size < 1) + { + xp_print("dazuko: warning: xp_copyin(size=%d)\n", size); + return 0; + } + + return xp_copyin(user_src, kernel_dest, size); +} + +static inline int call_xp_copyout(const void *kernel_src, void *user_dest, size_t size) +{ + if (kernel_src == NULL) + { + xp_print("dazuko: warning: xp_copyout(kernel_src=NULL)\n"); + return -1; + } + + if (user_dest == NULL) + { + xp_print("dazuko: warning: xp_copyout(user_dest=NULL)\n"); + return -1; + } + + if (size < 1) + { + xp_print("dazuko: warning: xp_copyout(size=%d)\n", size); + return 0; + } + + return xp_copyout(kernel_src, user_dest, size); +} + +static inline int call_xp_verify_user_writable(const void *user_ptr, size_t size) +{ + if (user_ptr == NULL) + { + xp_print("dazuko: warning: xp_verify_user_writable(user_ptr=NULL)\n"); + return -1; + } + + if (size < 1) + { + xp_print("dazuko: warning: xp_verify_user_writable(size=%d)\n", size); + return -1; + } + + return xp_verify_user_writable(user_ptr, size); +} + +static inline int call_xp_verify_user_readable(const void *user_ptr, size_t size) +{ + if (user_ptr == NULL) + { + xp_print("dazuko: warning: xp_verify_user_readable(user_ptr=NULL)\n"); + return -1; + } + + if (size < 1) + { + xp_print("dazuko: warning: xp_verify_user_readable(size=%d)\n", size); + return -1; + } + + return xp_verify_user_readable(user_ptr, size); +} + + +/* path attribute */ + +static inline int call_xp_is_absolute_path(const char *path) +{ + if (path == NULL) + { + xp_print("dazuko: warning: xp_is_absolute_path(NULL)\n"); + return 0; + } + + return xp_is_absolute_path(path); +} + + +/* atomic */ + +static inline int call_xp_atomic_set(struct xp_atomic *atomic, int value) +{ + if (atomic == NULL) + { + xp_print("dazuko: warning: xp_atomic_set(atomic=NULL)\n"); + return -1; + } + + return xp_atomic_set(atomic, value); +} + +static inline int call_xp_atomic_inc(struct xp_atomic *atomic) +{ + if (atomic == NULL) + { + xp_print("dazuko: warning: xp_atomic_inc(NULL)\n"); + return -1; + } + + return xp_atomic_inc(atomic); +} + +static inline int call_xp_atomic_dec(struct xp_atomic *atomic) +{ + if (atomic == NULL) + { + xp_print("dazuko: warning: xp_atomic_dec(NULL)\n"); + return -1; + } + + return xp_atomic_dec(atomic); +} + +static inline int call_xp_atomic_read(struct xp_atomic *atomic) +{ + if (atomic == NULL) + { + xp_print("dazuko: warning: xp_atomic_read(NULL)\n"); + return -1; + } + + return xp_atomic_read(atomic); +} + + +/* file structure */ + +static inline int call_xp_fill_file_struct(struct dazuko_file_struct *dfs) +{ + if (dfs == NULL) + { + xp_print("dazuko: warning: xp_fill_file_struct(NULL)\n"); + return -1; + } + + return xp_fill_file_struct(dfs); +} + + +/* daemon id */ + +static inline int call_xp_id_compare(struct xp_daemon_id *id1, struct xp_daemon_id *id2, int check_related) +{ + if (id1 == NULL) + { + xp_print("dazuko: warning: xp_id_compare(id1=NULL)\n"); + return -1; + } + + if (id2 == NULL) + { + xp_print("dazuko: warning: xp_id_compare(id2=NULL)\n"); + return -1; + } + + return xp_id_compare(id1, id2, check_related); +} + +static inline int call_xp_id_free(struct xp_daemon_id *id) +{ + if (id == NULL) + { + xp_print("dazuko: warning: xp_id_free(NULL)\n"); + return 0; + } + + return xp_id_free(id); +} + +static inline struct xp_daemon_id* call_xp_id_copy(struct xp_daemon_id *id) +{ + struct xp_daemon_id *ptr; + + if (id == NULL) + { + xp_print("dazuko: warning: xp_id_copy(NULL)\n"); + return NULL; + } + + ptr = xp_id_copy(id); + + if (ptr == NULL) + xp_print("dazuko: warning: xp_id_copy() -> NULL\n"); + + return ptr; +} + + +/* event */ + +static inline int call_xp_set_event_properties(struct event_properties *event_p, struct xp_daemon_id *xp_id) +{ + if (event_p == NULL) + { + xp_print("dazuko: warning: xp_set_event_properties(event_p=NULL)\n"); + return -1; + } + + if (xp_id == NULL) + { + xp_print("dazuko: warning: xp_set_event_properties(xp_id=NULL)\n"); + return -1; + } + + return xp_set_event_properties(event_p, xp_id); +} + + +/* cache settings */ + +static int call_xp_init_cache(unsigned long ttl) +{ + return xp_init_cache(ttl); +} + +#endif --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/dazuko_linux26.c +++ linux-source-2.6.15-2.6.15/fs/dazuko/dazuko_linux26.c @@ -0,0 +1,1277 @@ +/* Dazuko Linux. Allow Linux 2.6 file access control for 3rd-party applications. + Written by John Ogness + + Copyright (c) 2003, 2004, 2005, 2006 H+BEDV Datentechnik GmbH + Copyright (c) 2006 Avira GmbH + All rights reserved. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include "dazuko_linux26.h" +#include "dazuko_core.h" +#include "dazuko_linux26_device_def.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if !defined(USE_TRYTOFREEZEVOID) && !defined(USE_SUSPEND2) +#include +#endif +#include + + +#ifndef DAZUKO_DM +#define DAZUKO_DM 0 +#endif + + +#define CHROOT_EVENT_STRING "chroot:" +#define CHROOT_EVENT_LENGTH 7 + + +#ifndef WITH_LOCAL_DPATH +extern char * __d_path(struct dentry *, struct vfsmount *, struct dentry *, struct vfsmount *, char *, int); +#endif + +ssize_t linux_dazuko_device_read(struct file *, char __user *, size_t, loff_t *); +ssize_t linux_dazuko_device_write(struct file *, const char __user *, size_t, loff_t *); +int linux_dazuko_device_open(struct inode *, struct file *); +int linux_dazuko_device_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long param); +int linux_dazuko_device_release(struct inode *, struct file *); + +#ifdef USE_CLASS +static struct class *dazuko_class = NULL; +#else +static struct class_simple *dazuko_class = NULL; +#endif + +static struct vfsmount *orig_rootmnt = NULL; +static struct dentry *orig_root = NULL; +static int dev_major = -1; + +#ifndef DAZUKO_FIST +#ifdef NO_STACKING_SUPPORT +struct security_operations dazuko_security_ops; +#else +extern struct security_operations dazuko_security_ops; +extern struct security_operations dazuko_register_security_ops; +static struct security_operations dazuko_security_default_ops; +#endif + +static int secondary_register = 0; + +int dazuko_sys_generic(struct inode *inode, int mask, struct nameidata *nd); + +#ifndef NO_STACKING_SUPPORT +int dazuko_register_security(const char *name, struct security_operations *ops); +int dazuko_unregister_security(const char *name, struct security_operations *ops); +#endif +#endif + +#ifdef NO_CAPABILITIES +int lsm_capability_compare(struct security_operations *ops1, struct security_operations *ops2); +#endif + +static struct file_operations fops = { + .owner = THIS_MODULE, + .read = linux_dazuko_device_read, + .write = linux_dazuko_device_write, + .ioctl = linux_dazuko_device_ioctl, + .open = linux_dazuko_device_open, + .release = linux_dazuko_device_release, + }; + + +/* mutex */ + +inline void xp_init_mutex(struct xp_mutex *mutex) +{ + init_MUTEX(&(mutex->mutex)); +} + +inline void xp_down(struct xp_mutex *mutex) +{ + down(&(mutex->mutex)); +} + +inline void xp_up(struct xp_mutex *mutex) +{ + up(&(mutex->mutex)); +} + +inline void xp_destroy_mutex(struct xp_mutex *mutex) +{ +} + + +/* read-write lock */ + +inline void xp_init_rwlock(struct xp_rwlock *rwlock) +{ + rwlock_init(&(rwlock->rwlock)); +} + +inline void xp_write_lock(struct xp_rwlock *rwlock) +{ + write_lock(&(rwlock->rwlock)); +} + +inline void xp_write_unlock(struct xp_rwlock *rwlock) +{ + write_unlock(&(rwlock->rwlock)); +} + +inline void xp_read_lock(struct xp_rwlock *rlock) +{ + read_lock(&(rlock->rwlock)); +} + +inline void xp_read_unlock(struct xp_rwlock *rlock) +{ + read_unlock(&(rlock->rwlock)); +} + +inline void xp_destroy_rwlock(struct xp_rwlock *rwlock) +{ +} + + +/* wait-notify queue */ + +inline int xp_init_queue(struct xp_queue *queue) +{ + init_waitqueue_head(&(queue->queue)); + return 0; +} + +inline int xp_wait_until_condition(struct xp_queue *queue, int (*cfunction)(void *), void *cparam, int allow_interrupt) +{ + /* wait until cfunction(cparam) != 0 (condition is true) */ + int ret = 0; + + if (allow_interrupt) + { + while (1) + { + ret = wait_event_interruptible(queue->queue, cfunction(cparam) != 0); + +#ifdef USE_SUSPEND2 + if (try_todo_list() == 0) + break; +#elif defined (USE_TRYTOFREEZEVOID) + if (try_to_freeze() == 0) + break; +#else + if (current->flags & PF_FREEZE) + { + refrigerator(PF_FREEZE); + } + else + { + break; + } +#endif + } + } + else + { + wait_event(queue->queue, cfunction(cparam) != 0); + } + + return ret; +} + +inline int xp_notify(struct xp_queue *queue) +{ + wake_up(&(queue->queue)); + return 0; +} + +inline int xp_destroy_queue(struct xp_queue *queue) +{ + return 0; +} + + +/* memory */ + +inline void* xp_malloc(size_t size) +{ + return kmalloc(size, GFP_ATOMIC); +} + +inline int xp_free(void *ptr) +{ + kfree(ptr); + return 0; +} + +inline int xp_copyin(const void *user_src, void *kernel_dest, size_t size) +{ + return copy_from_user(kernel_dest, user_src, size); +} + +inline int xp_copyout(const void *kernel_src, void *user_dest, size_t size) +{ + return copy_to_user(user_dest, kernel_src, size); +} + +inline int xp_verify_user_writable(const void *user_ptr, size_t size) +{ + return 0; +} + +inline int xp_verify_user_readable(const void *user_ptr, size_t size) +{ + return 0; +} + + +/* path attribute */ + +inline int xp_is_absolute_path(const char *path) +{ + if (path[0] == '/') + return 1; + +#ifdef USE_CHROOT + if (dazuko_strlen(path) >= CHROOT_EVENT_LENGTH) + { + if (memcmp(CHROOT_EVENT_STRING, path, CHROOT_EVENT_LENGTH) == 0) + return 1; + } +#endif + + return 0; +} + + +/* atomic */ + +inline int xp_atomic_set(struct xp_atomic *atomic, int value) +{ + atomic_set(&(atomic->atomic), value); + return 0; +} + +inline int xp_atomic_inc(struct xp_atomic *atomic) +{ + atomic_inc(&(atomic->atomic)); + return 0; +} + +inline int xp_atomic_dec(struct xp_atomic *atomic) +{ + atomic_dec(&(atomic->atomic)); + return 0; +} + +inline int xp_atomic_read(struct xp_atomic *atomic) +{ + return atomic_read(&(atomic->atomic)); +} + + +/* file structure */ + +#ifdef WITH_LOCAL_DPATH +/* This code is taken directy from: + linux-2.6.0/fs/dcache.c + because __d_path is no longer exported. + */ +/** + * d_path - return the path of a dentry + * @dentry: dentry to report + * @vfsmnt: vfsmnt to which the dentry belongs + * @root: root dentry + * @rootmnt: vfsmnt to which the root dentry belongs + * @buffer: buffer to return value in + * @buflen: buffer length + * + * Convert a dentry into an ASCII path name. If the entry has been deleted + * the string " (deleted)" is appended. Note that this is ambiguous. + * + * Returns the buffer or an error code if the path was too long. + * + * "buflen" should be positive. Caller holds the dcache_lock. + */ +static char * __d_path( struct dentry *dentry, struct vfsmount *vfsmnt, + struct dentry *root, struct vfsmount *rootmnt, + char *buffer, int buflen) +{ + char * end = buffer+buflen; + char * retval; + int namelen; + + *--end = '\0'; + buflen--; + if (!IS_ROOT(dentry) && d_unhashed(dentry)) { + buflen -= 10; + end -= 10; + if (buflen < 0) + goto Elong; + memcpy(end, " (deleted)", 10); + } + + if (buflen < 1) + goto Elong; + /* Get '/' right */ + retval = end-1; + *retval = '/'; + + for (;;) { + struct dentry * parent; + + if (dentry == root && vfsmnt == rootmnt) + break; + if (dentry == vfsmnt->mnt_root || IS_ROOT(dentry)) { + /* Global root? */ + if (vfsmnt->mnt_parent == vfsmnt) + goto global_root; + dentry = vfsmnt->mnt_mountpoint; + vfsmnt = vfsmnt->mnt_parent; + continue; + } + parent = dentry->d_parent; + prefetch(parent); + namelen = dentry->d_name.len; + buflen -= namelen + 1; + if (buflen < 0) + goto Elong; + end -= namelen; + memcpy(end, dentry->d_name.name, namelen); + *--end = '/'; + retval = end; + dentry = parent; + } + + return retval; + +global_root: + namelen = dentry->d_name.len; + buflen -= namelen; + if (buflen < 0) + goto Elong; + retval -= namelen-1; /* hit the slash */ + memcpy(retval, dentry->d_name.name, namelen); + return retval; +Elong: + return ERR_PTR(-ENAMETOOLONG); +} +#endif + +static int dazuko_get_full_filename(struct xp_file_struct *xfs) +{ + struct vfsmount *rootmnt; + struct dentry *root; + char *temp; +#ifdef USE_CHROOT + int chrooted = 0; +#endif + + if (xfs == NULL) + return 0; + + if (xfs->inode == NULL) + return 0; + +#ifndef DAZUKO_FIST + if (S_ISDIR(xfs->inode->i_mode)) + return 0; +#endif + + if (xfs->nd == NULL || xfs->free_full_filename) + return 0; + + if (xfs->nd->mnt == NULL || xfs->nd->dentry == NULL) + return 0; + + /* check if we need to allocate a buffer */ + if (!xfs->free_page_buffer) + { + /* get pre-requisites for d_path function */ + xfs->buffer = (char *)__get_free_page(GFP_USER); + + /* make sure we got a page */ + if (xfs->buffer == NULL) + return 0; + + /* the buffer will need to be freed */ + xfs->free_page_buffer = 1; + } + + /* make sure we don't already have a vfsmount */ + if (!xfs->mntput_vfsmount) + { + xfs->vfsmount = mntget(xfs->nd->mnt); + + /* the vfsmount will need to be put back */ + xfs->mntput_vfsmount = 1; + } + + /* make sure we don't already have a dentry */ + if (!xfs->dput_dentry) + { + xfs->dentry = dget(xfs->nd->dentry); + + /* the dentry will need to be put back */ + xfs->dput_dentry = 1; + } + + rootmnt = mntget(orig_rootmnt); + root = dget(orig_root); + +#ifdef USE_CHROOT + temp = d_path(xfs->dentry, xfs->vfsmount, xfs->buffer, PAGE_SIZE); + + if (orig_root != current->fs->root) + chrooted = 1; +#else + spin_lock(&dcache_lock); + temp = __d_path(xfs->dentry, xfs->vfsmount, root, rootmnt, xfs->buffer, PAGE_SIZE); + spin_unlock(&dcache_lock); +#endif + + dput(root); + mntput(rootmnt); + + /* make sure we really got a new filename */ + if (temp == NULL) + return 0; + + xfs->full_filename_length = dazuko_strlen(temp); + +#ifdef USE_CHROOT + if (chrooted) + xfs->full_filename_length += CHROOT_EVENT_LENGTH; +#endif + xfs->full_filename = (char *)xp_malloc(xfs->full_filename_length + 1); + if (xfs->full_filename == NULL) + return 0; + + /* the char array will need to be freed */ + xfs->free_full_filename = 1; + +#ifdef USE_CHROOT + if (chrooted) + { + memcpy(xfs->full_filename, CHROOT_EVENT_STRING, CHROOT_EVENT_LENGTH + 1); + memcpy(xfs->full_filename + CHROOT_EVENT_LENGTH, temp, xfs->full_filename_length - CHROOT_EVENT_LENGTH + 1); + } + else +#endif + memcpy(xfs->full_filename, temp, xfs->full_filename_length + 1); + + /* we have a filename with the full path */ + + return 1; +} + +static int dazuko_fill_file_struct_cleanup(struct dazuko_file_struct *dfs) +{ + if (dfs == NULL) + return 0; + + if (dfs->extra_data == NULL) + return 0; + + if (dfs->extra_data->free_page_buffer) + { + free_page((unsigned long)dfs->extra_data->buffer); + dfs->extra_data->free_page_buffer = 0; + } + + if (dfs->extra_data->dput_dentry) + { + dput(dfs->extra_data->dentry); + dfs->extra_data->dput_dentry = 0; + } + + if (dfs->extra_data->mntput_vfsmount) + { + mntput(dfs->extra_data->vfsmount); + dfs->extra_data->mntput_vfsmount = 0; + } + + return 0; +} + +int xp_fill_file_struct(struct dazuko_file_struct *dfs) +{ + int error = -1; + + if (dfs == NULL) + return error; + + /* check if filename has already been filled in */ + if (dfs->filename != NULL) + return 0; + + /* make sure we can get the full path */ + if (dazuko_get_full_filename(dfs->extra_data)) + { + /* reference copy of full path */ + dfs->filename = dfs->extra_data->full_filename; + + dfs->filename_length = dfs->extra_data->full_filename_length; + + dfs->file_p.size = dfs->extra_data->inode->i_size; + dfs->file_p.set_size = 1; + dfs->file_p.uid = dfs->extra_data->inode->i_uid; + dfs->file_p.set_uid = 1; + dfs->file_p.gid = dfs->extra_data->inode->i_gid; + dfs->file_p.set_gid = 1; + dfs->file_p.mode = dfs->extra_data->inode->i_mode; + dfs->file_p.set_mode = 1; + dfs->file_p.device_type = dfs->extra_data->inode->i_rdev; + dfs->file_p.set_device_type = 1; + + error = 0; + } + + dazuko_fill_file_struct_cleanup(dfs); + + return error; +} + +static int dazuko_file_struct_cleanup(struct dazuko_file_struct **dfs) +{ + if (dfs == NULL) + return 0; + + if (*dfs == NULL) + return 0; + + if ((*dfs)->extra_data) + { + if ((*dfs)->extra_data->free_full_filename) + xp_free((*dfs)->extra_data->full_filename); + + xp_free((*dfs)->extra_data); + } + + xp_free(*dfs); + + *dfs = NULL; + + return 0; +} + + +/* daemon id */ + +static inline int check_parent(struct task_struct *parent, struct task_struct *child) +{ + struct task_struct *ts = child; + + if (parent == NULL || child == NULL) + return -1; + + while (1) + { + if (ts == parent) + return 0; + + if (ts->parent == NULL) + break; + + if (ts == ts->parent) + break; + + ts = ts->parent; + } + + return -1; +} + +inline int xp_id_compare(struct xp_daemon_id *id1, struct xp_daemon_id *id2, int check_related) +{ + if (id1 == NULL || id2 == NULL) + return DAZUKO_DIFFERENT; + + /* if file's are available and they match, + * then we say that the id's match + * ("file" is only used to unregister daemons and + * here we allow other processes to do this) + * Note: this is a Linux-only "hack" */ + if (id1->file != NULL && id1->file == id2->file) + return DAZUKO_SAME; + + if (id1->pid == id2->pid && id1->current_p == id2->current_p && id1->files == id2->files) + return DAZUKO_SAME; + + if (check_related) + { + if (check_parent(id1->current_p, id2->current_p) == 0) + { + return DAZUKO_CHILD; + } + else if (id1->pid == id2->pid || id1->current_p == id2->current_p || id1->files == id2->files) + { + return DAZUKO_SUSPICIOUS; + } + } + + return DAZUKO_DIFFERENT; +} + +inline int xp_id_free(struct xp_daemon_id *id) +{ + xp_free(id); + + return 0; +} + +inline struct xp_daemon_id* xp_id_copy(struct xp_daemon_id *id) +{ + struct xp_daemon_id *ptr; + + if (id == NULL) + return NULL; + + ptr = (struct xp_daemon_id *)xp_malloc(sizeof(struct xp_daemon_id)); + + if (ptr != NULL) + { + ptr->pid = id->pid; + ptr->file = id->file; + ptr->current_p = id->current_p; + ptr->files = id->files; + } + + return ptr; +} + + +/* event */ + +int xp_set_event_properties(struct event_properties *event_p, struct xp_daemon_id *xp_id) +{ + event_p->pid = xp_id->pid; + event_p->set_pid = 1; + + return 0; +} + + +/* cache settings */ + +int xp_init_cache(unsigned long ttl) +{ + return -1; +} + + +/* system hooks */ + +#ifndef DAZUKO_FIST +#ifndef NO_STACKING_SUPPORT +int dazuko_register_security(const char *name, struct security_operations *ops) +{ + char *daz_p; + char *ext_p; + char *def_p; + char *end_p; + void **ext_func_p; + void **def_func_p; + void **daz_func_p; + void *ext_func; + void *def_func; + void *daz_func; + int error = 0; + + if (name == NULL || ops == NULL) + return XP_ERROR_PERMISSION; + + /* basic allignment checking (there should only be function + * pointers in this structure) + */ + if (sizeof(struct security_operations) % sizeof(void *) != 0) + return XP_ERROR_FAULT; + + /* first check if all requested hooks are available */ + + /* note: ops is filled with default functions for functions + * that were specified with NULL + */ + +#ifdef NO_CAPABILITIES + /* we have do do an extra check if there are no capabilities + * because we never hooked these functions (see dazuko_linux26_lsm.h) + */ + + if (lsm_capability_compare(ops, &dazuko_security_default_ops) != 0) + return XP_ERROR_PERMISSION; +#endif + + ext_p = (char *)ops; + def_p = (char *)&dazuko_security_default_ops; + daz_p = (char *)&dazuko_security_ops; + end_p = daz_p + sizeof(dazuko_security_ops); + + while (daz_p < end_p) + { + daz_func_p = (void **)daz_p; + ext_func_p = (void **)ext_p; + def_func_p = (void **)def_p; + + daz_func = *daz_func_p; + ext_func = *ext_func_p; + def_func = *def_func_p; + + if (ext_func != def_func && daz_func != NULL) + { + error = 1; + break; + } + + daz_p += sizeof(void *); + ext_p += sizeof(void *); + def_p += sizeof(void *); + } + + if (error) + { + /* some requested hooks are not available */ + + return XP_ERROR_PERMISSION; + } + + /* install the requested hooks */ + + ext_p = (char *)ops; + def_p = (char *)&dazuko_security_default_ops; + daz_p = (char *)&dazuko_security_ops; + end_p = daz_p + sizeof(dazuko_security_ops); + + while (daz_p < end_p) + { + daz_func_p = (void **)daz_p; + ext_func_p = (void **)ext_p; + def_func_p = (void **)def_p; + + daz_func = *daz_func_p; + ext_func = *ext_func_p; + def_func = *def_func_p; + + if (ext_func != def_func && daz_func == NULL) + { + *daz_func_p = ext_func; + } + + daz_p += sizeof(void *); + ext_p += sizeof(void *); + def_p += sizeof(void *); + } + + return 0; +} + +int dazuko_unregister_security(const char *name, struct security_operations *ops) +{ + char *daz_p; + char *ext_p; + char *def_p; + char *end_p; + void **ext_func_p; + void **def_func_p; + void **daz_func_p; + void *ext_func; + void *def_func; + void *daz_func; + + if (name == NULL || ops == NULL) + return XP_ERROR_PERMISSION; + + /* basic allignment checking (there should only be function + * pointers in this structure) + */ + if (sizeof(struct security_operations) % sizeof(void *) != 0) + return XP_ERROR_FAULT; + + /* first check if all requested hooks are available */ + + ext_p = (char *)ops; + def_p = (char *)&dazuko_security_default_ops; + daz_p = (char *)&dazuko_security_ops; + end_p = daz_p + sizeof(dazuko_security_ops); + + while (daz_p < end_p) + { + daz_func_p = (void **)daz_p; + ext_func_p = (void **)ext_p; + def_func_p = (void **)def_p; + + daz_func = *daz_func_p; + ext_func = *ext_func_p; + def_func = *def_func_p; + + if (ext_func != def_func && daz_func == ext_func) + { + *daz_func_p = NULL; + } + + daz_p += sizeof(void *); + ext_p += sizeof(void *); + def_p += sizeof(void *); + } + + return 0; +} +#endif +#endif + + +#ifdef DAZUKO_FIST +int dazuko_sys_generic(int event, struct inode *inode, struct nameidata *nd, int daemon_is_allowed) +#else +int dazuko_sys_generic(struct inode *inode, int mask, struct nameidata *nd) +#endif +{ + struct dazuko_file_struct *dfs = NULL; + int error = 0; + int check_error = 0; + struct event_properties event_p; + struct xp_daemon_id xp_id; + struct slot_list *sl = NULL; +#ifndef DAZUKO_FIST + int event = DAZUKO_ON_OPEN; + int daemon_is_allowed = 1; +#endif + + dazuko_bzero(&event_p, sizeof(event_p)); + +#ifdef DAZUKO_FIST + if (inode == NULL || nd == NULL) + return XP_ERROR_PERMISSION; +#else + if ((mask & MAY_EXEC) != 0) + { + event = DAZUKO_ON_EXEC; + daemon_is_allowed = 0; + } + else + { + /* mask == 0 is passed in when a file is created */ + if (mask == 0 || (mask & (MAY_WRITE|MAY_APPEND)) != 0) + { + if ((mask & MAY_READ) != 0) + { + event_p.flags = O_RDWR; + } + else + { + event_p.flags = O_WRONLY; + } + + event_p.set_flags = 1; + } + else if ((mask & MAY_READ) != 0) + { + event_p.flags = O_RDONLY; + event_p.set_flags = 1; + } + } +#endif + + xp_id.pid = current->pid; + xp_id.file = NULL; + xp_id.current_p = current; + xp_id.files = current->files; + + check_error = dazuko_check_access(event, daemon_is_allowed, &xp_id, &sl); + + if (!check_error) + { + event_p.mode = inode->i_mode; + event_p.set_mode = 1; + event_p.pid = current->pid; + event_p.set_pid = 1; + event_p.uid = current->uid; + event_p.set_uid = 1; + + dfs = (struct dazuko_file_struct *)xp_malloc(sizeof(struct dazuko_file_struct)); + if (dfs != NULL) + { + dazuko_bzero(dfs, sizeof(struct dazuko_file_struct)); + + dfs->extra_data = (struct xp_file_struct *)xp_malloc(sizeof(struct xp_file_struct)); + if (dfs->extra_data != NULL) + { + dazuko_bzero(dfs->extra_data, sizeof(struct xp_file_struct)); + + dfs->extra_data->nd = nd; + dfs->extra_data->inode = inode; + + error = dazuko_process_access(event, dfs, &event_p, sl); + } + else + { + xp_free(dfs); + dfs = NULL; + } + + dazuko_file_struct_cleanup(&dfs); + } + } + + if (error) + return XP_ERROR_PERMISSION; + + return 0; +} + +inline int xp_sys_hook() +{ +#ifndef DAZUKO_FIST +#ifndef NO_STACKING_SUPPORT + struct security_operations dummy_ops; + int got_dummy = 0; +#endif + + /* Make sure we have a valid task_struct. */ + + if (current == NULL) + { + xp_print("dazuko: panic (current == NULL)\n"); + return -1; + } + if (current->fs == NULL) + { + xp_print("dazuko: panic (current->fs == NULL)\n"); + return -1; + } + if (current->fs->root == NULL) + { + xp_print("dazuko: panic (current->fs->root == NULL)\n"); + return -1; + } + if (current->fs->rootmnt == NULL) + { + xp_print("dazuko: panic (current->fs->rootmnt == NULL)\n"); + return -1; + } + + +#ifdef USE_CHROOT + xp_print("dazuko: info: using chroot events for chroot'd processes\n"); +#endif +#if defined(CONFIG_SMP) && defined(WITH_LOCAL_DPATH) + xp_print("dazuko: warning: using local __dpath() dangerous for SMP kernels\n"); +#endif +#endif + + /* Grab the current root. This is assumed to be the real. + * If it is not the real root, we could have problems + * looking up filenames. */ + + read_lock(¤t->fs->lock); + orig_rootmnt = current->fs->rootmnt; + orig_root = current->fs->root; + read_unlock(¤t->fs->lock); + +#ifndef DAZUKO_FIST +#ifdef NO_STACKING_SUPPORT + memset(&dazuko_security_ops, 0, sizeof(dazuko_security_ops)); + dazuko_security_ops.inode_permission = dazuko_sys_generic; + + if (register_security(&dazuko_security_ops) != 0) + { + if (mod_reg_security(DEVICE_NAME, &dazuko_security_ops) != 0) + { + xp_print("dazuko: failed to register\n"); + return XP_ERROR_INVALID; + } + + secondary_register = 1; + xp_print("dazuko: warning: registered as secondary module\n"); + } +#else + /* grab security defaults if we can */ + + memset(&dazuko_security_default_ops, 0, sizeof(dazuko_security_default_ops)); + + memset(&dummy_ops, 0, sizeof(dummy_ops)); + if (register_security(&dummy_ops) == 0) + { + memcpy(&dazuko_security_default_ops, &dummy_ops, sizeof(dazuko_security_default_ops)); + unregister_security(&dummy_ops); + + got_dummy = 1; + } + + /* register with the security manager */ + + memset(&dazuko_security_ops, 0, sizeof(dazuko_security_ops)); + + if (!got_dummy || register_security(&dazuko_register_security_ops) != 0) + { + /* register as secondary, but with no stacking support */ + if (mod_reg_security(DEVICE_NAME, &dazuko_security_ops) != 0) + { + xp_print("dazuko: failed to register\n"); + return XP_ERROR_INVALID; + } + + secondary_register = 1; + xp_print("dazuko: warning: registered as secondary module\n"); + } +#endif +#endif + + dev_major = register_chrdev(DAZUKO_DM, DEVICE_NAME, &fops); + if (dev_major < 0) + { + xp_print("dazuko: unable to register device, err=%d\n", dev_major); + return dev_major; + } + + devfs_mk_cdev(MKDEV(dev_major, 0), S_IFCHR | S_IRUSR | S_IWUSR, DEVICE_NAME); + +#ifdef USE_CLASS + dazuko_class = class_create(THIS_MODULE, "dazuko"); +#ifdef CLASS_class_device_create_2_6_15 + class_device_create(dazuko_class, NULL, MKDEV(dev_major, 0), NULL, "dazuko"); +#else + class_device_create(dazuko_class, MKDEV(dev_major, 0), NULL, "dazuko"); +#endif +#else + dazuko_class = class_simple_create(THIS_MODULE, "dazuko"); + class_simple_device_add(dazuko_class, MKDEV(dev_major, 0), NULL, "dazuko"); +#endif + + return 0; +} + +inline int xp_sys_unhook() +{ + unregister_chrdev(dev_major, DEVICE_NAME); + + devfs_remove(DEVICE_NAME); + +#ifdef USE_CLASS + class_device_destroy(dazuko_class, MKDEV(dev_major, 0)); + class_destroy(dazuko_class); +#else + class_simple_device_remove(MKDEV(dev_major, 0)); + class_simple_destroy(dazuko_class); +#endif + +#ifndef DAZUKO_FIST +#ifdef NO_STACKING_SUPPORT + if (secondary_register) + mod_unreg_security(DEVICE_NAME, &dazuko_security_ops); + else + unregister_security(&dazuko_security_ops); +#else + if (secondary_register) + mod_unreg_security(DEVICE_NAME, &dazuko_security_ops); + else + unregister_security(&dazuko_register_security_ops); +#endif +#endif + + return 0; +} + + +/* output */ + +int xp_print(const char *fmt, ...) +{ + va_list args; + char *p; + size_t size = 1024; + int length; + + p = (char *)xp_malloc(size); + if (p == NULL) + return -1; + + length = dazuko_strlen(KERN_INFO); + + memcpy(p, KERN_INFO, length); + + va_start(args, fmt); + vsnprintf(p + length, size - length, fmt, args); + va_end(args); + + p[size-1] = 0; + + printk(p); + + xp_free(p); + + return 0; +} + + +/* ioctl's */ + +int linux_dazuko_device_open(struct inode *inode, struct file *file) +{ + DPRINT(("dazuko: linux_dazuko_device_open() [%d]\n", current->pid)); + + return 0; +} + +ssize_t linux_dazuko_device_read(struct file *file, char *buffer, size_t length, loff_t *pos) +{ + /* Reading from the dazuko device simply + * returns the device number. This is to + * help out the daemon. */ + + char tmp[20]; + size_t dev_major_len; + + DPRINT(("dazuko: linux_dazuko_device_read() [%d]\n", current->pid)); + + if (*pos != 0) + return 0; + + if (dev_major < 0) + return XP_ERROR_NODEVICE; + + /* print dev_major to a string + * and get length (with terminator) */ + dazuko_bzero(tmp, sizeof(tmp)); + + dev_major_len = dazuko_snprintf(tmp, sizeof(tmp), "%d", dev_major) + 1; + + if (tmp[sizeof(tmp)-1] != 0) + { + xp_print("dazuko: failing device_read, device number overflow for dameon %d (dev_major=%d)\n", current->pid, dev_major); + return XP_ERROR_FAULT; + } + + if (length < dev_major_len) + return XP_ERROR_INVALID; + + /* copy dev_major string to userspace */ + if (xp_copyout(tmp, buffer, dev_major_len) != 0) + return XP_ERROR_FAULT; + + *pos += dev_major_len; + + return dev_major_len; +} + +ssize_t linux_dazuko_device_write(struct file *file, const char *buffer, size_t length, loff_t *pos) +{ + struct xp_daemon_id xp_id; + char tmpbuffer[32]; + int size; + + size = length; + if (length >= sizeof(tmpbuffer)) + size = sizeof(tmpbuffer) -1; + + /* copy request pointer string to kernelspace */ + if (xp_copyin(buffer, tmpbuffer, size) != 0) + return XP_ERROR_FAULT; + + tmpbuffer[size] = 0; + + xp_id.pid = current->pid; + xp_id.file = file; + xp_id.current_p = current; + xp_id.files = current->files; + + if (dazuko_handle_user_request(tmpbuffer, &xp_id) == 0) + return size; + + return XP_ERROR_INTERRUPT; +} + +int linux_dazuko_device_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long param) +{ + /* A daemon uses this function to interact with + * the kernel. A daemon can set scanning parameters, + * give scanning response, and get filenames to scan. */ + + struct xp_daemon_id xp_id; + int error = 0; + + if (param == 0) + { + xp_print("dazuko: error: linux_dazuko_device_ioctl(..., 0)\n"); + return XP_ERROR_INVALID; + } + + xp_id.pid = current->pid; + xp_id.file = file; + xp_id.current_p = current; + xp_id.files = current->files; + + error = dazuko_handle_user_request_compat1((void *)param, _IOC_NR(cmd), &xp_id); + + if (error != 0) + { + /* general error occurred */ + + return XP_ERROR_PERMISSION; + } + + return error; +} + +int linux_dazuko_device_release(struct inode *inode, struct file *file) +{ + struct xp_daemon_id xp_id; + + DPRINT(("dazuko: dazuko_device_release() [%d]\n", current->pid)); + + xp_id.pid = current->pid; + xp_id.file = file; + xp_id.current_p = current; + xp_id.files = current->files; + + return dazuko_unregister_daemon(&xp_id); +} + + +/* init/exit */ + +static int __init linux_dazuko_init(void) +{ + return dazuko_init(); +} + +static void __exit linux_dazuko_exit(void) +{ + dazuko_exit(); +} + + +MODULE_AUTHOR("H+BEDV Datentechnik GmbH "); +MODULE_DESCRIPTION("allow 3rd-party file access control"); +MODULE_LICENSE("GPL"); +MODULE_INFO(vermagic, VERMAGIC_STRING); + +#ifdef DAZUKO_FIST +EXPORT_SYMBOL(dazuko_sys_generic); +#endif + +security_initcall(linux_dazuko_init); +module_exit(linux_dazuko_exit); --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/dazuko_events.h +++ linux-source-2.6.15-2.6.15/fs/dazuko/dazuko_events.h @@ -0,0 +1,51 @@ +/* Dazuko Events. The defined access events for Dazuko. + Written by John Ogness + + Copyright (c) 2004, 2005 H+BEDV Datentechnik GmbH + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of Dazuko nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef DAZUKO_EVENTS_H +#define DAZUKO_EVENTS_H + +/* event types */ +#define DAZUKO_ON_OPEN 1 +#define DAZUKO_ON_CLOSE 2 +#define DAZUKO_ON_EXEC 4 +#define DAZUKO_ON_CLOSE_MODIFIED 8 +#define DAZUKO_ON_UNLINK 16 +#define DAZUKO_ON_RMDIR 32 +#define DAZUKO_TRUST_REQUEST 64 + +/* trusted flags */ +#define DAZUKO_TRUST_CHILDREN 1 + +#endif + --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/dazuko_linux26.h +++ linux-source-2.6.15-2.6.15/fs/dazuko/dazuko_linux26.h @@ -0,0 +1,78 @@ +/* Dazuko Linux. Allow Linux 2.6 file access control for 3rd-party applications. + Copyright (c) 2003, 2004, 2005, 2006 H+BEDV Datentechnik GmbH + Written by John Ogness + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef DAZUKO_LINUX26_H +#define DAZUKO_LINUX26_H + +#include + +#define DEVICE_NAME "dazuko" + +#define XP_ERROR_PERMISSION -EPERM +#define XP_ERROR_INTERRUPT -EINTR +#define XP_ERROR_BUSY -EBUSY +#define XP_ERROR_FAULT -EFAULT +#define XP_ERROR_INVALID -EINVAL +#define XP_ERROR_NODEVICE -ENODEV + + +struct xp_daemon_id +{ + int pid; + struct file *file; + struct task_struct *current_p; + struct files_struct *files; +}; + +struct xp_mutex +{ + struct semaphore mutex; +}; + +struct xp_atomic +{ + atomic_t atomic; +}; + +struct xp_file_struct +{ + int full_filename_length; + char *full_filename; + int free_full_filename; + struct dentry *dentry; + int dput_dentry; + char *buffer; + int free_page_buffer; + struct nameidata *nd; + struct vfsmount *vfsmount; + int mntput_vfsmount; + struct inode *inode; +}; + +struct xp_queue +{ + wait_queue_head_t queue; +}; + +struct xp_rwlock +{ + rwlock_t rwlock; +}; + +#endif --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/dazuko_transport.c +++ linux-source-2.6.15-2.6.15/fs/dazuko/dazuko_transport.c @@ -0,0 +1,478 @@ +/* Dazuko Transport. Types shared between userspace and kernelspace. + Written by Gerhard Sittig + + Copyright (c) 2005 H+BEDV Datentechnik GmbH + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of Dazuko nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* + * representation of "struct dazuko_request" in a form which is unambigious + * across several platforms or between subsystems within a single platform + * + * high level language data types may vary in their size or internal + * representation on the machine code level, high level language constructions + * like a "struct" in C "suffer" from the compiler's freedom to align or + * rearrange its fields + * + * since it is essential for Dazuko's functioning that the application and the + * kernel agree in how to interpret the dazuko_request layout, we introduce an + * intermediate format for passing this struct around + * + * this allows for 32bit applications to keep working against a 64bit kernel, + * or to operate a Linux binary in a FreeBSD emulation, or to compile kernel + * module and application with different options, or whatever influences the + * layout of the high level language struct -- we don't mind any longer + * + * layout of the structure: + * - no high level data type but a pure byte array + * - fixed width header fields describing the sizeof an integer, a character and + * a pointer respectively, plus the stream's total length and a "used" flag + * - variable width values following with the size specified before and thus known + */ + +#if defined __KERNEL__ || defined _KERNEL + /* kernel part, every system has its own includes for NULL and int32_t :( */ + + #if defined LINUX || defined LINUX26_SUPPORT + #include + #include + #elif defined __FreeBSD__ + #include + #include + #elif defined __sun__ + #include + #include + #endif + +#else /* __KERNEL__ */ + /* user land part (regular app), not much nicer than kernel space */ + + /* for NULL */ + #include + + /* we have to get int32_t from somewhere */ + #include + #ifndef __BIT_TYPES_DEFINED__ + #if defined __sun__ || defined __OpenBSD__ || defined __FreeBSD__ + #include + #else + #include + #endif + #endif + +#endif /* __KERNEL__ */ + +#include "dazuko_transport.h" + +/* + * we need an integer to hold (store and transport) pointers; XXX what is a + * reliable way to detect the width of pointers? the warning here is to inform + * us at compile time -- is there some #info directive which is not as + * "serious" as a compiler warning? + * + * we actually could do without introducing this extra type and always use + * int64_t which merely would issue a compiler warning (but would still work) + * in all the cases where pointers are not of 64bit width + */ + +/* define this if you want to see the outcome of the decision */ +#undef WANT_INT_PTR_NOTIFICATION + +#if defined(_LP64) || defined(_I32LPx) + #if defined WANT_INT_PTR_NOTIFICATION + #warning using 64bit integer to store pointers + #endif + #define int_ptr_t int64_t +#else + #if defined WANT_INT_PTR_NOTIFICATION + #warning using 32bit integer to store pointers + #endif + #define int_ptr_t int32_t +#endif + +/* ----- base routines ----- */ + +/* get a byte from a position within the buffer + * and increment the buffer pointer */ +static int getbyte(unsigned char **p, int *b) +{ + if (p == NULL) + return -1; + + if (*p == NULL) + return -1; + + if (b == NULL) + return -1; + + *b = **p; + (*p)++; + + return 0; +} + +/* get an integer from a position within the buffer with the specified width + * and increment the buffer pointer */ +static int getinteger(unsigned char **p, int *b, int count) +{ + int res; + int idx; + + if (p == NULL) + return -1; + + if (*p == NULL) + return -1; + + if (b == NULL) + return -1; + + res = 0; + for (idx=0 ; idx>= 8; + } + *p += count; + + return 0; +} + +/* put a pointer to a position within the buffer with the specified width + * and increment the buffer pointer */ +static int putpointer(unsigned char **p, char *b, int count) +{ + int_ptr_t val; + int idx; + + if (p == NULL) + return -1; + + if (*p == NULL) + return -1; + + val = (int_ptr_t)b; + for (idx=1 ; idx<=count ; idx++) + { + *(*p + count - idx) = (val & 0xFF); + val >>= 8; + } + *p += count; + + return(0); +} + +/* skip over data */ + +static int skipinteger(unsigned char **p, int count) +{ + if (p == NULL) + return -1; + + if (*p == NULL) + return -1; + + (*p) += count; + + return 0; +} + +static int skippointer(unsigned char **p, int count) +{ + if (p == NULL) + return -1; + + if (*p == NULL) + return -1; + + (*p) += count; + + return(0); +} + +/* ----- public routines ----- */ + +/* get the size of a low level byte stream representation */ +int dazuko_reqstream_dim_chunk0(int size_chr, int size_int, int size_ptr) +{ + /* + * a request consists of: + * chunk0 length (as 4-byte integer) + * used flag, sizeof char/int/void* (as single bytes) + * type, in size, out size, out used (as integers) + * in buff, out buff (as pointers) + */ + return (4 + (4 * size_chr) + (4 * size_int) + (2 * size_ptr)); +} + +/* + * convert a high level struct into a low level stream + * (this is the app handing its variable over to the kernel) + */ +int dazuko_reqstream_hl2ll(struct dazuko_request *req, unsigned char *ll) +{ + unsigned char *wrptr; + int size_chr; + int size_int; + int size_ptr; + int size_req; + int type_as_int; + + wrptr = ll; + + /* prepare to write */ + size_chr = sizeof(char); + size_int = sizeof(int); + size_ptr = sizeof(void *); + size_req = dazuko_reqstream_dim_chunk0(size_chr, size_int, size_ptr); + + /* + * we do not support multi byte characters + * and we assume maximum int and ptr sizes + */ + /* + * XXX how to check these at compile time? + * #if (sizeof int < 4) + * etc did not work :( + */ + if (size_chr != 1) + return -1; + + /* convert everything to base types */ + type_as_int = (req->type[0] << 8) + (req->type[1] << 0); + + /* stream out */ + if (putinteger(&wrptr, size_req, 4) != 0) return -1; + if (putbyte(&wrptr, 0) != 0) return -1; + if (putbyte(&wrptr, size_chr) != 0) return -1; + if (putbyte(&wrptr, size_int) != 0) return -1; + if (putbyte(&wrptr, size_ptr) != 0) return -1; + if (putinteger(&wrptr, type_as_int, size_int) != 0) return -1; + if (putinteger(&wrptr, req->buffer_size, size_int) != 0) return -1; + if (putpointer(&wrptr, req->buffer, size_ptr) != 0) return -1; + if (putinteger(&wrptr, req->reply_buffer_size, size_int) != 0) return -1; + if (putpointer(&wrptr, req->reply_buffer, size_ptr) != 0) return -1; + if (putinteger(&wrptr, req->reply_buffer_size_used, size_int) != 0) return -1; + + /* done */ + return 0; +} + +/* + * convert a low level stream into a high level struct + * (this is the app reading back its variable after the kernel updated it) + */ +int dazuko_reqstream_ll2hl(unsigned char *ll, struct dazuko_request *req, int strict) +{ + unsigned char *rdptr; + int size_req; + int req_used; + int size_chr; + int size_int; + int size_ptr; + int type_as_int; + + rdptr = (unsigned char *)ll; + + /* only accept streams with our own layout (length part) */ + if (getinteger(&rdptr, &size_req, 4) != 0) return -1; + if (strict) + { + if (size_req != dazuko_reqstream_dim_chunk0(sizeof(char), sizeof(int), sizeof(void *))) + return -1; + } + + /* the kernel MUST have updated the stream, otherwise it's invalid */ + if (getbyte(&rdptr, &req_used) != 0) return -1; + if (strict) + { + if (!req_used) + return -1; + } + + /* only accept streams with our own layout (type width part) */ + if (getbyte(&rdptr, &size_chr) != 0) return -1; + if (getbyte(&rdptr, &size_int) != 0) return -1; + if (getbyte(&rdptr, &size_ptr) != 0) return -1; + if (strict) + { + if ((size_chr != sizeof(char)) || (size_int != sizeof(int)) || (size_ptr != sizeof(void *))) + return -1; + } + if (size_req != dazuko_reqstream_dim_chunk0(size_chr, size_int, size_ptr)) + return -1; + + /* stream in values */ + if (getinteger(&rdptr, &type_as_int, size_int) != 0) return -1; + if (getinteger(&rdptr, &req->buffer_size, size_int) != 0) return -1; + if (getpointer(&rdptr, &req->buffer, size_ptr) != 0) return -1; + if (getinteger(&rdptr, &req->reply_buffer_size, size_int) != 0) return -1; + if (getpointer(&rdptr, &req->reply_buffer, size_ptr) != 0) return -1; + if (getinteger(&rdptr, &req->reply_buffer_size_used, size_int) != 0) return -1; + + /* post convert to req */ + req->type[0] = (type_as_int >> 8) & 0xFF; + req->type[1] = (type_as_int >> 0) & 0xFF; + + /* done */ + return 0; +} + +/* + * update a low level stream with data from a high level struct + * (this is the kernel passing back data to the app inside the app's variable) + */ +int dazuko_reqstream_updll(struct dazuko_request *req, unsigned char *ll) +{ + unsigned char *wrptr; + int size_chr; + int size_int; + int size_ptr; + int size_req; + + wrptr = ll; + + /* fetch the complete length spec to check it later */ + if (getinteger(&wrptr, &size_req, 4) != 0) return -1; + + /* rather aux a test for minimum length */ + if (size_req < dazuko_reqstream_dim_chunk0(1, 4, 4)) + return -1; + + /* set the "used" flag */ + /* + * XXX delay this to a later point in time??? OTOH the update routine + * will return an error when later steps fail and the stream will not + * get passed back to the application, so this seems OK + */ + if (putbyte(&wrptr, 1) != 0) return -1; + + /* fetch the data width fields to check them */ + if (getbyte(&wrptr, &size_chr) != 0) return -1; + if (getbyte(&wrptr, &size_int) != 0) return -1; + if (getbyte(&wrptr, &size_ptr) != 0) return -1; + if (size_chr != 1) + return -1; + if (size_req != dazuko_reqstream_dim_chunk0(size_chr, size_int, size_ptr)) + return -1; + + /* skip over the fields not of interest, only write back the + * "reply_buffer_size_used" component */ + if (skipinteger(&wrptr, size_int) != 0) return -1; + if (skipinteger(&wrptr, size_int) != 0) return -1; + if (skippointer(&wrptr, size_ptr) != 0) return -1; + if (skipinteger(&wrptr, size_int) != 0) return -1; + if (skippointer(&wrptr, size_ptr) != 0) return -1; + if (putinteger(&wrptr, req->reply_buffer_size_used, size_int) != 0) return -1; + + /* done */ + return 0; +} + --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/dazuko_transport.h +++ linux-source-2.6.15-2.6.15/fs/dazuko/dazuko_transport.h @@ -0,0 +1,106 @@ +/* Dazuko Transport. Types shared between userspace and kernelspace. + Written by John Ogness + + Copyright (c) 2004, 2005 H+BEDV Datentechnik GmbH + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of Dazuko nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef DAZUKOIO_TRANSPORT_H +#define DAZUKOIO_TRANSPORT_H + +/* various requests */ +#define SET_ACCESS_MASK 0 +#define ADD_INCLUDE_PATH 1 +#define ADD_EXCLUDE_PATH 2 +#define REGISTER 3 +#define REMOVE_ALL_PATHS 4 +#define UNREGISTER 5 +#define GET_AN_ACCESS 6 +#define RETURN_AN_ACCESS 7 +#define INITIALIZE_CACHE 8 +#define REGISTER_TRUSTED 9 +#define UNREGISTER_TRUSTED 10 +#define REMOVE_ALL_TRUSTED 11 +#define REMOVE_TRUSTED 12 + +/* this is the hard-limit file length restriction from + the 1.x series */ +#define DAZUKO_FILENAME_MAX_LENGTH_COMPAT1 4095 + +struct dazuko_request +{ + char type[2]; + int buffer_size; + char *buffer; + int reply_buffer_size; + char *reply_buffer; + int reply_buffer_size_used; +}; + +/* get the size a low level representation can use in maximum */ +int dazuko_reqstream_dim_chunk0(int size_chr, int size_int, int size_ptr); + +/* get the chunksize for the given low level representation (represented in the first 4 bytes) */ +int dazuko_reqstream_chunksize(unsigned char *ll, int *size); + +/* convert from high level to low level and vice versa */ +int dazuko_reqstream_hl2ll(struct dazuko_request *req, unsigned char *ll); +int dazuko_reqstream_ll2hl(unsigned char *ll, struct dazuko_request *req, int strict); + +/* update (patch) a low level stream from its high level template */ +int dazuko_reqstream_updll(struct dazuko_request *req, unsigned char *ll); + +/* compat1 ioctls */ + +#define IOCTL_SET_OPTION 0 +#define IOCTL_GET_AN_ACCESS 1 +#define IOCTL_RETURN_ACCESS 2 + +/* compat1 structures */ + +struct access_compat1 +{ + int deny; /* set to deny file access */ + int event; /* ON_OPEN, etc */ + int o_flags; /* access flags */ + int o_mode; /* access mode */ + int uid; /* user id */ + int pid; /* user process id */ + char filename[DAZUKO_FILENAME_MAX_LENGTH_COMPAT1]; /* accessed file */ +}; + +struct option_compat1 +{ + int command; + int buffer_length; + char buffer[DAZUKO_FILENAME_MAX_LENGTH_COMPAT1]; +}; + +#endif --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/dazuko_core.c +++ linux-source-2.6.15-2.6.15/fs/dazuko/dazuko_core.c @@ -0,0 +1,3524 @@ +/* DazukoXP. Allow cross platform file access control for 3rd-party applications. + Written by John Ogness + + Copyright (c) 2002, 2003, 2004, 2005, 2006 H+BEDV Datentechnik GmbH + Copyright (c) 2006 Avira GmbH + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of Dazuko nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +#include "dazuko_platform.h" +#include "dazuko_core.h" +#include "dazuko_version.h" + +/* inline code */ +#include "dazuko_call.h" + +/* binary version stamp */ +const char *DAZUKO_VERSION_STAMP = "\nDazukoVersion=" DAZUKO_VERSION_MAJOR "." DAZUKO_VERSION_MINOR "." DAZUKO_VERSION_REVISION "." DAZUKO_VERSION_RELEASE "\n"; + +/* version string for display */ +const char *VERSION_STRING = DAZUKO_VERSION_MAJOR "." DAZUKO_VERSION_MINOR "." DAZUKO_VERSION_REVISION +#ifdef DAZUKO_PRERELEASE +"-pre" DAZUKO_VERSION_RELEASE +#endif +; + +/* technical version string */ +const char *VERSION_NUMBER = DAZUKO_VERSION_MAJOR "." DAZUKO_VERSION_MINOR "." DAZUKO_VERSION_REVISION "." DAZUKO_VERSION_RELEASE; + +#define NUM_SLOT_LISTS 5 +#define NUM_SLOTS 25 +#define NUM_EVENTS 7 + +#define AMC_UNSET 255 + +/* slot states */ +#define DAZUKO_FREE 0 /* the daemon is not ready */ +#define DAZUKO_READY 1 /* a daemon waits for something to do */ +#define DAZUKO_WAITING 2 /* a request is waiting to be served */ +#define DAZUKO_WORKING 3 /* daemon is currently in action */ +#define DAZUKO_DONE 4 /* daemon response is available */ +#define DAZUKO_BROKEN 5 /* invalid state (interrupt from ready,waiting) */ + + +struct path +{ + /* A node in a linked list of paths. Used + * for the include and exclude lists. */ + + struct path *next; + int len; + char *path; +}; + +struct daemon_id +{ + int unique; + struct xp_daemon_id *xp_id; +}; + +#ifdef TRUSTED_APPLICATION_SUPPORT +struct trusted_container +{ + struct xp_daemon_id *xp_id; + char *token; + int token_length; + int trust_children; + struct trusted_container *next; +}; +#endif + +struct slot_list; + +struct slot +{ + /* A representation of a daemon. It holds + * all information about the daemon, the + * file that is scanned, and the state of + * the scanning process. */ + + int id; + struct daemon_id did; /* identifier for our daemon */ + int write_mode; + int state; + int response; + int event; + int filenamelength; /* not including terminator */ + char *filename; + struct event_properties event_p; + struct file_properties file_p; + struct xp_mutex mutex; + struct slot_list *slot_list; + struct xp_queue wait_daemon_waiting_until_this_slot_not_READY; + struct xp_queue wait_kernel_waiting_until_this_slot_not_WAITING_and_not_WORKING; + struct xp_queue wait_daemon_waiting_until_this_slot_not_DONE; +}; + +struct slot_list +{ + struct xp_atomic use_count; + struct slot slots[NUM_SLOTS]; + struct path *incl_paths; + struct path *excl_paths; + char *reg_name; + struct xp_rwlock lock_lists; + char access_mask; +#ifdef TRUSTED_APPLICATION_SUPPORT + struct xp_rwlock lock_trusted_list; + struct trusted_container *trusted_list; + char set_trusted_list; +#endif + struct xp_queue wait_kernel_waiting_for_any_READY_slot_or_zero_use_count; +}; + +struct slot_list_container +{ + struct slot_list *slot_list; + struct xp_mutex mutex; +}; + +struct one_slot_state_not_condition_param +{ + struct slot *slot; + int state; +}; + +struct two_slot_state_not_condition_param +{ + struct slot *slot1; + int state1; + struct slot *slot2; + int state2; +}; + +struct get_ready_slot_condition_param +{ + struct slot *slot; + struct slot_list *slotlist; +}; + +static int unique_count = 1; +static struct slot_list_container slot_lists[NUM_SLOT_LISTS]; +static struct xp_atomic active; +static struct xp_atomic groupcount; +static struct xp_mutex mutex_unique_count; +static unsigned char access_mask_cache[NUM_EVENTS][NUM_SLOT_LISTS]; +static struct xp_mutex mutex_amc; + + +int dazuko_vsnprintf(char *str, size_t size, const char *format, va_list ap) +{ + char *target; + const char *end; + int overflow = 0; + char number_buffer[32]; /* 32 should be enough to hold any number, right? */ + const char *s; + + if (str == NULL || size < 1 || format == NULL) + return -1; + + target = str; + end = (target + size) - 1; + +#define DAZUKO_VSNPRINTF_PRINTSTRING \ + for ( ; *s ; s++) \ + { \ + if (target == end) \ + { \ + overflow = 1; \ + goto dazuko_vsnprintf_out; \ + } \ + *target = *s; \ + target++; \ + } + + for ( ; *format ; format++) + { + if (target == end) + { + overflow = 1; + goto dazuko_vsnprintf_out; + } + + if (*format == '%') + { + format++; + + switch (*format) + { + case 's': /* %s */ + s = va_arg(ap, char *); + if (s == NULL) + s = "(null)"; + DAZUKO_VSNPRINTF_PRINTSTRING + break; + + case 'd': /* %d */ + sprintf(number_buffer, "%d", va_arg(ap, int)); + s = number_buffer; + DAZUKO_VSNPRINTF_PRINTSTRING + break; + + case 'p': /* %p */ + sprintf(number_buffer, "%p", va_arg(ap, void *)); + s = number_buffer; + DAZUKO_VSNPRINTF_PRINTSTRING + break; + + case 'c': /* %c */ + *target = va_arg(ap, int); + target++; + break; + + case 'l': /* %lu */ + format++; + if (*format != 'u') + { + /* print error message */ + goto dazuko_vsnprintf_out; + } + sprintf(number_buffer, "%lu", va_arg(ap, unsigned long)); + s = number_buffer; + DAZUKO_VSNPRINTF_PRINTSTRING + break; + + case '0': /* %02x */ + format++; + if (*format != '2') + { + /* print error message */ + goto dazuko_vsnprintf_out; + } + format++; + if (*format != 'x') + { + /* print error message */ + goto dazuko_vsnprintf_out; + } + sprintf(number_buffer, "%02x", va_arg(ap, int)); + s = number_buffer; + DAZUKO_VSNPRINTF_PRINTSTRING + break; + + default: + /* print error message */ + goto dazuko_vsnprintf_out; + } + } + else + { + *target = *format; + target++; + } + } + +dazuko_vsnprintf_out: + + *target = 0; + + /* We are returning what we've written. If there was an + * overflow, the returned value will match "size" rather + * than being less than "size" + */ + + return ((target - str) + overflow); +} + +int dazuko_snprintf(char *str, size_t size, const char *format, ...) +{ + va_list ap; + int ret; + + va_start(ap, format); + ret = dazuko_vsnprintf(str, size, format, ap); + va_end(ap); + + return ret; +} + +inline void dazuko_bzero(void *p, int len) +{ + /* "zero out" len bytes starting with p */ + + char *ptr = (char *)p; + + while (len--) + *ptr++ = 0; +} + +static inline int dazuko_event2index(unsigned long event) +{ + switch (event) + { + case DAZUKO_ON_OPEN: + return 0; + case DAZUKO_ON_CLOSE: + return 1; + case DAZUKO_ON_EXEC: + return 2; + case DAZUKO_ON_CLOSE_MODIFIED: + return 3; + case DAZUKO_ON_UNLINK: + return 4; + case DAZUKO_ON_RMDIR: + return 5; + case DAZUKO_TRUST_REQUEST: + return 6; + } + + return -1; +} + +static inline unsigned long dazuko_index2event(int index) +{ + switch (index) + { + case 0: + return DAZUKO_ON_OPEN; + case 1: + return DAZUKO_ON_CLOSE; + case 2: + return DAZUKO_ON_EXEC; + case 3: + return DAZUKO_ON_CLOSE_MODIFIED; + case 4: + return DAZUKO_ON_UNLINK; + case 5: + return DAZUKO_ON_RMDIR; + case 6: + return DAZUKO_TRUST_REQUEST; + } + + return 0; +} + +static void dazuko_setup_amc_cache(void) +{ + int i; + int j; + struct slot_list *sl; + unsigned long event; + int index; + +/* DOWN */ + call_xp_down(&mutex_amc); + + memset(&access_mask_cache, AMC_UNSET, sizeof(access_mask_cache)); + + for (i=0 ; iaccess_mask)) == 0) + continue; + break; + default: + if ((event & (sl->access_mask)) == 0) + continue; + break; + } + + /* if we made it this far, then the + * event is in the access mask */ + + access_mask_cache[i][index] = j; + index++; + } + } + + call_xp_up(&mutex_amc); +/* UP */ +} + + +static inline int dazuko_get_new_unique(void) +{ + int unique; + +/* DOWN */ + call_xp_down(&mutex_unique_count); + + unique = unique_count; + unique_count++; + + call_xp_up(&mutex_unique_count); +/* UP */ + + return unique; +} + +static inline int dazuko_slot_state(struct slot *s) +{ + int state; + +/* DOWN */ + call_xp_down(&(s->mutex)); + + state = s->state; + + call_xp_up(&(s->mutex)); +/* UP */ + + return state; +} + +static int one_slot_state_not_condition(void *param) +{ + return (dazuko_slot_state(((struct one_slot_state_not_condition_param *)param)->slot) + != ((struct one_slot_state_not_condition_param *)param)->state); +} + +static int two_slot_state_not_condition(void *param) +{ + return (dazuko_slot_state(((struct two_slot_state_not_condition_param *)param)->slot1) + != ((struct two_slot_state_not_condition_param *)param)->state1 + && dazuko_slot_state(((struct two_slot_state_not_condition_param *)param)->slot2) + != ((struct two_slot_state_not_condition_param *)param)->state2); +} + +static inline int __dazuko_change_slot_state(struct slot *s, int from_state, int to_state) +{ + /* Make a predicted state transition. We fail if it + * is an unpredicted change. We can ALWAYS go to the + * to_state if it is the same as from_state. Not SMP safe! */ + + if (to_state != from_state) + { + /* make sure this is a predicted transition and there + * is a daemon on this slot (unique != 0)*/ + if (s->state != from_state || s->did.unique == 0) + return 0; + } + + s->state = to_state; + + /* handle appropriate wake_up's for basic + * state changes */ + + return 1; +} + +static int dazuko_change_slot_state(struct slot *s, int from_state, int to_state, int release) +{ + /* SMP safe version of __dazuko_change_slot_state(). + * This should only be used if we haven't + * already aquired slot.mutex. Use this function + * with CAUTION, since the mutex may or may not + * be released depending on the return value AND + * on the value of the "release" argument. */ + + int success; + +/* DOWN */ + call_xp_down(&(s->mutex)); + + success = __dazuko_change_slot_state(s, from_state, to_state); + + /* the mutex is released if the state change was + * unpredicted or if the called wants it released */ + if (!success || release) + call_xp_up(&(s->mutex)); + +/* UP? */ + + return success; +} + +static struct slot * _dazuko_find_slot(struct daemon_id *did, int release, struct slot_list *sl) +{ + /* Find the first slot with the same given + * pid number. SMP safe. Use this function + * with CAUTION, since the mutex may or may not + * be released depending on the return value AND + * on the value of the "release" argument. */ + + int i; + struct slot *s = NULL; + + if (sl == NULL) + { + call_xp_print("dazuko: invalid slot_list given (bug!)\n"); + return NULL; + } + + for (i=0 ; islots[i]); +/* DOWN */ + call_xp_down(&(s->mutex)); + + if (did == NULL) + { + /* we are looking for an empty slot */ + if (s->did.unique == 0 && s->did.xp_id == NULL) + { + /* we release the mutex only if the + * called wanted us to */ + if (release) + call_xp_up(&(s->mutex)); + +/* UP? */ + + return s; + } + } + else if (s->did.unique == 0 && s->did.xp_id == NULL) + { + /* this slot is emtpy, so it can't match */ + + /* do nothing */ + } + /* xp_id's must match! */ + else if (call_xp_id_compare(s->did.xp_id, did->xp_id, 0) == DAZUKO_SAME) + { + /* unique's must also match (unless unique is negative, + * in which case we will trust xp_id) */ + if (did->unique < 0 || (s->did.unique == did->unique)) + { + /* we release the mutex only if the + * called wanted us to */ + if (release) + call_xp_up(&(s->mutex)); + +/* UP? */ + + return s; + } + } + + call_xp_up(&(s->mutex)); +/* UP */ + } + + return NULL; +} + +static struct slot * dazuko_find_slot_and_slotlist(struct daemon_id *did, int release, struct slot_list *slist, struct slot_list **sl_result) +{ + struct slot *s; + int i; + struct slot_list *sl; + + if (slist == NULL) + { + for (i=0 ; ipath = (char *)call_xp_malloc(fs_len + 1); + if (newitem->path == NULL) + { + call_xp_free(newitem); + return XP_ERROR_FAULT; + } + + /* fs_path is already in kernelspace */ + memcpy(newitem->path, fs_path, fs_len); + + newitem->path[fs_len] = 0; + + while (newitem->path[fs_len-1] == 0) + { + fs_len--; + if (fs_len == 0) + break; + } + + if (fs_len < 1) + { + call_xp_free(newitem->path); + call_xp_free(newitem); + return XP_ERROR_INVALID; + } + + newitem->len = fs_len; + + /* check if this path already exists in the list */ + for (tmp=*list ; tmp ; tmp=tmp->next) + { + if (newitem->len == tmp->len) + { + if (memcmp(newitem->path, tmp->path, tmp->len) == 0) + { + /* we already have this path */ + + call_xp_free(newitem->path); + call_xp_free(newitem); + + return 0; + } + } + } + + DPRINT(("dazuko: adding path %s\n", newitem->path)); + + /* add struct path to head of linked list */ +/* LOCK */ + call_xp_write_lock(lock_lists); + newitem->next = *list; + *list = newitem; + call_xp_write_unlock(lock_lists); +/* UNLOCK */ + + return 0; +} + +static void dazuko_remove_all_paths(struct slot_list *slist) +{ + /* Empty both include and exclude struct path + * linked lists. */ + + struct path *tmp; + + if (slist == NULL) + return; + +/* LOCK */ + call_xp_write_lock(&(slist->lock_lists)); + + /* empty include paths list */ + while (slist->incl_paths) + { + tmp = slist->incl_paths; + slist->incl_paths = slist->incl_paths->next; + + DPRINT(("dazuko: removing incl %s\n", tmp->path)); + + if (tmp->path != NULL) + call_xp_free(tmp->path); + call_xp_free(tmp); + } + + /* empty exclude paths list */ + while (slist->excl_paths) + { + tmp = slist->excl_paths; + slist->excl_paths = slist->excl_paths->next; + + DPRINT(("dazuko: removing excl %s\n", tmp->path)); + + if (tmp->path != NULL) + call_xp_free(tmp->path); + call_xp_free(tmp); + } + + call_xp_write_unlock(&(slist->lock_lists)); +/* UNLOCK */ +} + +int dazuko_active(void) +{ + if (call_xp_atomic_read(&active) > 0) + return 1; + + return 0; +} + +static int _dazuko_unregister_daemon(struct daemon_id *did) +{ + /* We unregister the daemon by finding the + * slot with the same slot->pid as the the + * current process id, the daemon. */ + + struct slot *s; + struct slot_list *sl; + + DPRINT(("dazuko: dazuko_unregister_daemon() [%d]\n", did->unique)); + + /* find our slot and hold the mutex + * if we find it */ +/* DOWN? */ + s = dazuko_find_slot_and_slotlist(did, 0, NULL, &sl); + + if (s == NULL) + { + /* this daemon was not registered */ + return 0; + } + +/* DOWN */ + + /* clearing the unique and pid makes the slot available */ + s->did.unique = 0; + call_xp_id_free(s->did.xp_id); + s->did.xp_id = NULL; + + /* reset slot state */ + __dazuko_change_slot_state(s, DAZUKO_FREE, DAZUKO_FREE); + + call_xp_up(&(s->mutex)); +/* UP */ + + call_xp_atomic_dec(&(sl->use_count)); + + /* Remove all the include and exclude paths + * if there are no more daemons in this group */ + + if (call_xp_atomic_read(&(sl->use_count)) == 0) + { + sl->access_mask = 0; + dazuko_setup_amc_cache(); + dazuko_remove_all_paths(sl); + + /* this was the last daemon in the group */ + call_xp_atomic_dec(&groupcount); + } + + /* active should always be positive here, but + * let's check just to be sure. ;) */ + if (call_xp_atomic_read(&active) > 0) + { + /* active and the kernel usage counter + * should always reflect how many daemons + * are active */ + + call_xp_atomic_dec(&active); + } + else + { + call_xp_print("dazuko: active count error (possible bug)\n"); + } + + /* slot->state has changed to FREE, notifiy appropriate queues */ + /* we need to notify all slot queues because unique could be -1, + * which means that it is possible that this process does not + * really belong to this slot */ + call_xp_notify(&(s->wait_daemon_waiting_until_this_slot_not_DONE)); + call_xp_notify(&(s->wait_kernel_waiting_until_this_slot_not_WAITING_and_not_WORKING)); + call_xp_notify(&(s->wait_daemon_waiting_until_this_slot_not_READY)); + + /* slotlist->use_count has been decreased, notify appropriate queue */ + call_xp_notify(&(sl->wait_kernel_waiting_for_any_READY_slot_or_zero_use_count)); + + return 0; +} + +int dazuko_unregister_daemon(struct xp_daemon_id *xp_id) +{ + struct daemon_id did; + int ret; + + if (xp_id == NULL) + return 0; + + did.unique = -1; + did.xp_id = call_xp_id_copy(xp_id); + + ret = _dazuko_unregister_daemon(&did); + + call_xp_id_free(did.xp_id); + + return ret; +} + +static inline struct slot_list* find_slot_list_from_groupname(const char *group_name) +{ + int i; + struct slot_list *sl; + const char *p1; + const char *p2; + + for (i=0 ; ireg_name; + + while (*p1 == *p2) + { + if (*p1 == 0) + break; + + p1++; + p2++; + } + + if (*p1 == *p2) + return sl; + } + } + + return NULL; +} + +static int dazuko_register_daemon(struct daemon_id *did, const char *reg_name, int string_length, int write_mode) +{ + const char *p1; + char *p2; + struct slot *s; + struct slot_list *sl; + int i; + + DPRINT(("dazuko: dazuko_register_daemon() [%d]\n", did->unique)); + + if (did == NULL || reg_name == NULL) + return XP_ERROR_PERMISSION; + + s = dazuko_find_slot(did, 1, NULL); + + if (s != NULL) + { + /* We are already registered! */ + + call_xp_print("dazuko: daemon %d already assigned to slot[%d]\n", did->unique, s->id); + + return XP_ERROR_PERMISSION; + } + + /* Find the slot_list with the matching name. */ + + sl = find_slot_list_from_groupname(reg_name); + + if (sl == NULL) + { + /* There is no slot_list with this name. We + * need to make one. */ + + sl = (struct slot_list *)call_xp_malloc(sizeof(struct slot_list)); + if (sl == NULL) + return XP_ERROR_FAULT; + + dazuko_bzero(sl, sizeof(struct slot_list)); + + sl->reg_name = call_xp_malloc(string_length + 1); + if (sl->reg_name == NULL) + { + call_xp_free(sl); + return XP_ERROR_FAULT; + } + dazuko_bzero(sl->reg_name, string_length + 1); + + call_xp_atomic_set(&(sl->use_count), 0); + call_xp_init_rwlock(&(sl->lock_lists)); +#ifdef TRUSTED_APPLICATION_SUPPORT + call_xp_init_rwlock(&(sl->lock_trusted_list)); +#endif + call_xp_init_queue(&(sl->wait_kernel_waiting_for_any_READY_slot_or_zero_use_count)); + + p1 = reg_name; + p2 = sl->reg_name; + + while (*p1) + { + *p2 = *p1; + + p1++; + p2++; + } + *p2 = 0; + + /* give each slot a unique id and assign slot_list */ + for (i=0 ; islots[i].id = i; + sl->slots[i].slot_list = sl; + call_xp_init_mutex(&(sl->slots[i].mutex)); + call_xp_init_queue(&(sl->slots[i].wait_daemon_waiting_until_this_slot_not_READY)); + call_xp_init_queue(&(sl->slots[i].wait_kernel_waiting_until_this_slot_not_WAITING_and_not_WORKING)); + call_xp_init_queue(&(sl->slots[i].wait_daemon_waiting_until_this_slot_not_DONE)); + } + + /* we need to find an empty slot */ + for (i=0 ; ireg_name); + call_xp_free(sl); + + return XP_ERROR_BUSY; + } + } + + /* find an available slot and hold the mutex + * if we find one */ +/* DOWN? */ + s = dazuko_find_slot(NULL, 0, sl); + + if (s == NULL) + return XP_ERROR_BUSY; + +/* DOWN */ + + /* We have found a slot, so increment the active + * variable and the kernel module use counter. + * The module counter will always reflect the + * number of daemons. */ + + call_xp_atomic_inc(&active); + + /* get new unique id for this process */ + did->unique = dazuko_get_new_unique(); + + s->did.unique = did->unique; + s->did.xp_id = call_xp_id_copy(did->xp_id); + s->write_mode = write_mode; + + call_xp_atomic_inc(&(sl->use_count)); + + if (call_xp_atomic_read(&(sl->use_count)) == 1) + { + /* this is the first daemon in the group */ + call_xp_atomic_inc(&groupcount); + } + + /* the daemon is registered, but not yet + * ready to receive files */ + __dazuko_change_slot_state(s, DAZUKO_FREE, DAZUKO_FREE); + + DPRINT(("dazuko: slot[%d] assigned to daemon %d\n", s->id, s->did.unique)); + + call_xp_up(&(s->mutex)); +/* UP */ + + /* although there was a state change, we don't need to notify any queues + * because a new slot is first interesting when it hits the READY state */ + + return 0; +} + +static struct slot* dazuko_get_an_access(struct daemon_id *did) +{ + /* The daemon is requesting a filename of a file + * to scan. This code will wait until a filename + * is available, or until we should be killed. + * (killing is done if any errors occur as well + * as when the user kills us) */ + + /* If a slot is returned, it will be already locked! */ + + int i; + struct slot *s; + struct one_slot_state_not_condition_param cond_p; + +tryagain: + /* find our slot */ + s = dazuko_find_slot(did, 1, NULL); + + if (s == NULL) + { + i = dazuko_register_daemon(did, "_COMPAT", 7, 1); + if (i != 0) + { + call_xp_print("dazuko: unregistered daemon %d attempted to get access\n", did->unique); + return NULL; + } + + s = dazuko_find_slot(did, 1, NULL); + if (s == NULL) + { + call_xp_print("dazuko: unregistered daemon %d attempted to get access\n", did->unique); + return NULL; + } + + call_xp_print("dazuko: warning: daemon %d is using a deprecated protocol\n", did->unique); + } + + /* the daemon is now ready to receive a file */ + + if (!dazuko_change_slot_state(s, DAZUKO_FREE, DAZUKO_READY, 1)) + { + /* this is an unexpected state change, but it can happen due + * to signals interrupting the registered daemon and causing + * the daemon to retry getting an access */ + + /* force change (because daemon is ready) */ + dazuko_change_slot_state(s, DAZUKO_READY, DAZUKO_READY, 1); + + /* unexpected state change, notify other kernel queue */ + call_xp_notify(&(s->wait_kernel_waiting_until_this_slot_not_WAITING_and_not_WORKING)); + } + + /* slot->state has changed to READY, notify appropriate queue */ + call_xp_notify(&(s->slot_list->wait_kernel_waiting_for_any_READY_slot_or_zero_use_count)); + + cond_p.slot = s; + cond_p.state = DAZUKO_READY; + if (call_xp_wait_until_condition(&(s->wait_daemon_waiting_until_this_slot_not_READY), one_slot_state_not_condition, &cond_p, 1) != 0) + { + /* The user has issued an interrupt. + * Return an error. The daemon should + * unregister itself. */ + + DPRINT(("dazuko: daemon %d killed while waiting for work\n", did->unique)); + + if (dazuko_change_slot_state(s, DAZUKO_READY, DAZUKO_BROKEN, 1) || dazuko_change_slot_state(s, DAZUKO_WAITING, DAZUKO_BROKEN, 1)) + { + /* slot->state has changed to BROKEN, notifiy appropriate queue */ + call_xp_notify(&(s->wait_kernel_waiting_until_this_slot_not_WAITING_and_not_WORKING)); + } + + return NULL; + } + + /* slot SHOULD now be in DAZUKO_WAITING state */ + + /* we will be working with the slot, so + * we need to lock it */ + +/* DOWN? */ + if (!dazuko_change_slot_state(s, DAZUKO_WAITING, DAZUKO_WORKING, 0)) + { + /* State transition error. Try again., */ + + goto tryagain; + } + +/* DOWN */ + + /* Slot IS in DAZUKO_WORKING state. Copy all the + * necessary information to userspace structure. */ + + /* IMPORTANT: slot is still locked! */ + + return s; /* access is available */ +} + +static int dazuko_initialize_cache(struct daemon_id *did, unsigned long ttl) +{ + /* find our slot */ + if (dazuko_find_slot(did, 1, NULL) == NULL) + { + /* this daemon is not registered! */ + + return -1; + } + + return call_xp_init_cache(ttl); +} + +static int dazuko_return_access(struct daemon_id *did, int response, struct slot *s) +{ + /* The daemon has finished scanning a file + * and has the response to give. The daemon's + * slot should be in the DAZUKO_WORKING state. */ + + struct one_slot_state_not_condition_param cond_p; + + if (s == NULL) + return -1; + + /* we will be writing into the slot, so we + * need to lock it */ + +/* DOWN? */ + if (!dazuko_change_slot_state(s, DAZUKO_WORKING, DAZUKO_DONE, 0)) + { + /* The slot is in the wrong state. We will + * assume the kernel has cancelled the file + * access. */ + + DPRINT(("dazuko: response from daemon %d on slot[%d] not needed\n", did->unique, s->id)); + + return 0; + } + +/* DOWN */ + + s->response = response; + + call_xp_up(&(s->mutex)); +/* UP */ + + /* slot->state has changed to DONE, notifiy appropriate queues */ + call_xp_notify(&(s->wait_kernel_waiting_until_this_slot_not_WAITING_and_not_WORKING)); + + cond_p.slot = s; + cond_p.state = DAZUKO_DONE; + if (call_xp_wait_until_condition(&(s->wait_daemon_waiting_until_this_slot_not_DONE), one_slot_state_not_condition, &cond_p, 1) != 0) + { + /* The user has issued an interrupt. + * Return an error. The daemon should + * unregister itself. */ + + DPRINT(("dazuko: daemon %d killed while waiting for response acknowledgement\n", did->unique)); + + return XP_ERROR_INTERRUPT; + } + + return 0; +} + +static inline int dazuko_isdigit(const char c) +{ + return (c >= '0' && c <= '9'); +} + +inline unsigned long dazuko_strtoul(const char *string) +{ + unsigned long num = 1; + const char *p = string; + + if (string == NULL) + return 0; + + if (dazuko_isdigit(*p)) + { + num *= *p - '0'; + p++; + } + else + { + return 0; + } + + while (dazuko_isdigit(*p)) + { + num *= 10; + num += *p - '0'; + p++; + } + + return num; +} + +static inline long dazuko_strtol(const char *string) +{ + const char *p = string; + + if (string == NULL) + return 0; + + switch (*p) + { + case '-': + p++; + return (-1 * ((long)(dazuko_strtoul(p)))); + + case '+': + p++; + break; + } + + return (long)dazuko_strtoul(p); +} + +inline int dazuko_strlen(const char *string) +{ + const char *p; + + if (string == NULL) + return -1; + + for (p=string ; *p ; p++) + continue; + + return (p - string); +} + +static inline const char* dazuko_strchr(const char *haystack, char needle) +{ + const char *p; + + if (haystack == NULL) + return NULL; + + for (p=haystack ; *p ; p++) + { + if (*p == needle) + return p; + } + + return NULL; +} + +static inline const char* dazuko_strstr(const char *haystack, const char *needle) +{ + const char *p1; + const char *p2; + const char *p3; + + if (haystack == NULL || needle == NULL) + return NULL; + + for (p1=haystack ; *p1 ; p1++) + { + for (p2=needle,p3=p1 ; *p2&&*p3 ; p2++,p3++) + { + if (*p2 != *p3) + break; + } + + if (*p2 == 0) + return p1; + } + + return NULL; +} + +int dazuko_get_value(const char *key, const char *string, char **value) +{ + const char *p1; + const char *p2; + int size; + + if (value == NULL) + return -1; + + *value = NULL; + + if (key == NULL || string == NULL) + return -1; + + p1 = dazuko_strstr(string, key); + if (p1 == NULL) + return -1; + + p1 += dazuko_strlen(key); + + for (p2=p1 ; *p2 && *p2!='\n' ; p2++) + continue; + + size = (p2 - p1) + 1; + *value = call_xp_malloc(size); + if (*value == NULL) + return -1; + + memcpy(*value, p1, size - 1); + (*value)[size - 1] = 0; + + return 0; +} + +static inline void dazuko_clear_replybuffer(struct dazuko_request *request) +{ + dazuko_bzero(request->reply_buffer, request->reply_buffer_size); + request->reply_buffer_size_used = 0; +} + +static inline void dazuko_close_replybuffer(struct dazuko_request *request) +{ + request->reply_buffer[request->reply_buffer_size_used] = 0; + request->reply_buffer_size_used++; +} + +static void dazuko_add_keyvalue_to_replybuffer(struct dazuko_request *request, const char *key, void *value, char vtype) +{ + +#define DAZUKO_VSNPRINT(type, name) dazuko_snprintf(request->reply_buffer + request->reply_buffer_size_used, (request->reply_buffer_size - request->reply_buffer_size_used) - 1, "%s%" #type , key, *((name *)value)) + + switch (vtype) + { + case 'd': + DAZUKO_VSNPRINT(d, const int); + break; + + case 's': + DAZUKO_VSNPRINT(s, const char *); + break; + + case 'l': + DAZUKO_VSNPRINT(lu, const unsigned long); + break; + + default: + /* all other types treated as chars */ + DAZUKO_VSNPRINT(c, const char); + break; + } + + /* update how much buffer we have used */ + request->reply_buffer_size_used += dazuko_strlen(request->reply_buffer + request->reply_buffer_size_used); +} + +static inline int dazuko_printable(char c) +{ + /* hopefully this counts for all operating systems! */ + + return ((c >= ' ') && (c <= '~') && (c != '\\')); +} + +static inline void dazuko_add_esc_to_replybuffer(struct dazuko_request *request, const char *key, char **filename) +{ + int found = 0; + char *p_rq; + const char *limit; + const char *p_fn; + unsigned char c; + + /* check for escape characters in filename */ + for (p_fn=*filename ; *p_fn ; p_fn++) + { + if (!dazuko_printable(*p_fn)) + { + found = 1; + break; + } + } + + if (found) + { + /* this is expensive, but it will also almost never occur */ + + p_rq = request->reply_buffer + request->reply_buffer_size_used; + limit = request->reply_buffer + request->reply_buffer_size - 1; + + dazuko_snprintf(p_rq, limit - p_rq, "%s", key); + p_rq += dazuko_strlen(p_rq); + + for (p_fn=*filename ; *p_fn && (p_rqreply_buffer_size_used += dazuko_strlen(request->reply_buffer + request->reply_buffer_size_used); + } + else + { + /* no escape characters found */ + + dazuko_add_keyvalue_to_replybuffer(request, key, filename, 's'); + } +} + +#ifdef TRUSTED_APPLICATION_SUPPORT +static inline void dazuko_remove_all_trusted(struct slot_list *sl) +{ + struct trusted_container *tc; + + if (sl == NULL) + return; + +/* LOCK */ + call_xp_read_lock(&(sl->lock_trusted_list)); + + while (sl->trusted_list != NULL) + { + tc = sl->trusted_list; + sl->trusted_list = sl->trusted_list->next; + call_xp_id_free(tc->xp_id); + call_xp_free(tc->token); + call_xp_free(tc); + } + + call_xp_read_unlock(&(sl->lock_trusted_list)); +/* UNLOCK */ +} + +static inline void dazuko_remove_trusted(struct slot_list *sl, char *token, int token_length) +{ + struct trusted_container *cur = NULL; + struct trusted_container *prev = NULL; + struct trusted_container *temp = NULL; + +/* LOCK */ + call_xp_read_lock(&(sl->lock_trusted_list)); + + cur = sl->trusted_list; + while (cur != NULL) + { + if (token_length != cur->token_length) + continue; + + if (memcmp(token, cur->token, token_length) == 0) + { + /* delete this container */ + + temp = cur; + + cur = cur->next; + + if (prev == NULL) + { + sl->trusted_list = cur; + } + else + { + prev->next = cur; + } + + call_xp_id_free(temp->xp_id); + call_xp_free(temp->token); + call_xp_free(temp); + } + else + { + prev = cur; + cur = cur->next; + } + } + + call_xp_read_unlock(&(sl->lock_trusted_list)); +/* UNLOCK */ +} +#endif + +static int dazuko_set_option(struct daemon_id *did, int opt, void *param, int len) +{ + /* The daemon wants to set a configuration + * option in the kernel. */ + + struct slot *s; + struct slot_list *sl; + int error = 0; + + /* sanity check */ + if (len < 0 || len > 8192) + return XP_ERROR_PERMISSION; + + /* make sure we are already registered + * (or that we don't register twice) */ + + /* find our slot */ + s = dazuko_find_slot_and_slotlist(did, 1, NULL, &sl); + + switch (opt) + { + case REGISTER: + call_xp_print("dazuko: dazuko_set_option does not support REGISTER (bug!)\n"); + return XP_ERROR_PERMISSION; + + case UNREGISTER: + if (s == NULL) + { + /* We are not registered! */ + + return 0; + } + break; + + default: + if (s == NULL) + { + error = dazuko_register_daemon(did, "_COMPAT", 7, 1); + if (error) + { + call_xp_print("dazuko: unregistered daemon %d attempted access\n", did->unique); + return XP_ERROR_PERMISSION; + } + + s = dazuko_find_slot_and_slotlist(did, 1, NULL, &sl); + if (s == NULL) + { + call_xp_print("dazuko: unregistered daemon %d attempted access\n", did->unique); + return XP_ERROR_PERMISSION; + } + + call_xp_print("dazuko: warning: daemon %d is using a deprecated protocol (opt=%d)\n", did->unique, opt); + } + break; + } + + /* check option type and take the appropriate action */ + switch (opt) + { + case UNREGISTER: + error = _dazuko_unregister_daemon(did); + break; + + case SET_ACCESS_MASK: + sl->access_mask = (char)dazuko_strtoul((char *)param); + + /* rebuild access_mask_cache */ + dazuko_setup_amc_cache(); + break; + + case ADD_INCLUDE_PATH: + error = dazuko_insert_path_fs(&(sl->incl_paths), &(sl->lock_lists), (char *)param, len); + break; + + case ADD_EXCLUDE_PATH: + error = dazuko_insert_path_fs(&(sl->excl_paths), &(sl->lock_lists), (char *)param, len); + break; + + case REMOVE_ALL_PATHS: + dazuko_remove_all_paths(sl); + break; + +#ifdef TRUSTED_APPLICATION_SUPPORT + case REMOVE_ALL_TRUSTED: + dazuko_remove_all_trusted(sl); + break; + + case REMOVE_TRUSTED: + dazuko_remove_trusted(sl, (char *)param, len); + break; +#endif + + default: + error = XP_ERROR_INVALID; + break; + } + + return error; +} + +static struct slot * dazuko_get_and_hold_ready_slot(struct slot_list *sl) +{ + /* This is a simple search to find a + * slot whose state is DAZUKO_READY. This means + * it is able to accept work. If a slot + * is found, the slot.mutex is held so + * it can be filled with work by the caller. + * It is the responsibility of the caller + * to RELEASE THE MUTEX. */ + + int i; + struct slot *s; + + for (i=0 ; islots[i]); +/* DOWN? */ + if (dazuko_change_slot_state(s, DAZUKO_READY, DAZUKO_WAITING, 0)) + { +/* DOWN */ + return s; + } + } + + /* we didn't find a slot that is ready for work */ + + return NULL; +} + +static int get_ready_slot_condition(void *param) +{ + return ((((struct get_ready_slot_condition_param *)param)->slot = dazuko_get_and_hold_ready_slot(((struct get_ready_slot_condition_param *)param)->slotlist)) != NULL + || call_xp_atomic_read(&(((struct get_ready_slot_condition_param *)param)->slotlist->use_count)) == 0); +} + +static int dazuko_run_daemon_on_slotlist(unsigned long event, char *filename, int filenamelength, struct event_properties *event_p, struct file_properties *file_p, int prev_response, struct slot_list *sl) +{ + /* This is the main function called by the kernel + * to work with a daemon. */ + + int rc; + int unique; + struct slot *s; + struct get_ready_slot_condition_param cond_p1; + struct two_slot_state_not_condition_param cond_p2; + +begin: + /* we initialize the slot value because + * we cannot guarentee that it will be + * assigned a new value BEFORE !active + * is checked */ + s = NULL; + + /* wait for a slot to become ready */ + cond_p1.slotlist = sl; + cond_p1.slot = s; + if (call_xp_wait_until_condition(&(sl->wait_kernel_waiting_for_any_READY_slot_or_zero_use_count), get_ready_slot_condition, &cond_p1, 0) != 0) + { + /* The kernel process was killed while + * waiting for a slot to become ready. + * This is fine. */ + + DPRINT(("dazuko: kernel process %d killed while waiting for free slot\n", event_p != NULL ? event_p->pid : 0)); + + return -1; /* user interrupted */ + } + + /* Make sure we have a slot. We may have + * gotten past the last wait because we + * are no longer active. */ + + s = cond_p1.slot; + + if (s == NULL) + { + /* We were no longer active. We don't + * need to initiate a daemon. This also + * means we never acquired the lock. */ + + return 0; /* allow access */ + } + +/* DOWN */ + + /* the slot is already locked at this point */ + + /* grab the daemon's unique */ + unique = s->did.unique; + + /* At this point we have a locked slot. It IS + * sitting in the DAZUKO_WAITING state, waiting for + * us to give it some work. */ + + /* set up the slot to do work */ + s->filename = filename; + s->event = event; + s->response = prev_response; + s->filenamelength = filenamelength; + + if (event_p == NULL) + dazuko_bzero(&(s->event_p), sizeof(struct event_properties)); + else + memcpy(&(s->event_p), event_p, sizeof(struct event_properties)); + + if (file_p == NULL) + dazuko_bzero(&(s->file_p), sizeof(struct file_properties)); + else + memcpy(&(s->file_p), file_p, sizeof(struct file_properties)); + + /* we are done modifying the slot */ + call_xp_up(&(s->mutex)); +/* UP */ + + /* slot->state has changed to WAITING, notifiy appropriate queues */ + call_xp_notify(&(s->wait_daemon_waiting_until_this_slot_not_READY)); + + /* wait until the daemon is finished with the slot */ + cond_p2.slot1 = s; + cond_p2.state1 = DAZUKO_WAITING; + cond_p2.slot2 = s; + cond_p2.state2 = DAZUKO_WORKING; + if (call_xp_wait_until_condition(&(s->wait_kernel_waiting_until_this_slot_not_WAITING_and_not_WORKING), two_slot_state_not_condition, &cond_p2, 0) != 0) + { + /* The kernel process was killed while + * waiting for a daemon to process the file. + * This is fine. */ + + DPRINT(("dazuko: kernel process %d killed while waiting for daemon response\n", event_p->pid)); + + /* change the slot's state to let the + * daemon know we are not interested + * in a response */ + dazuko_change_slot_state(s, DAZUKO_FREE, DAZUKO_FREE, 1); + + /* slot->state has changed to FREE, notifiy appropriate queue */ + call_xp_notify(&(s->wait_daemon_waiting_until_this_slot_not_DONE)); + + return -1; /* user interrupted */ + } + + /* we are working with the slot, so + * we need to lock it */ +/* DOWN */ + call_xp_down(&(s->mutex)); + + /* make sure this is the right daemon */ + if (s->did.unique != unique) + { + /* This is a different daemon than + * the one we assigned work to. + * We need to scan again. */ + call_xp_up(&(s->mutex)); +/* UP */ + goto begin; + } + + /* The slot should now be in the DAZUKO_DONE state. */ + if (!__dazuko_change_slot_state(s, DAZUKO_DONE, DAZUKO_FREE)) + { + /* The daemon was killed while scanning. + * We need to scan again. */ + + call_xp_up(&(s->mutex)); +/* UP */ + goto begin; + } + + /* grab the response */ + rc = s->response; + + call_xp_up(&(s->mutex)); +/* UP */ + + /* slot->state has changed to FREE, notifiy appropriate queue */ + call_xp_notify(&(s->wait_daemon_waiting_until_this_slot_not_DONE)); + + /* CONGRATULATIONS! You successfully completed a full state cycle! */ + + return rc; +} + +static int dazuko_is_selected(struct dazuko_file_struct *kfs, struct slot_list *slist) +{ + /* Check if the given filename (with path) is + * under our include directories but not under + * the exclude directories. */ + + struct dazuko_file_listnode *cur; + struct path *path; + int selected = 0; + int use_aliases = 1; + + if (kfs == NULL || slist == NULL) + return 0; + +/* LOCK */ + call_xp_read_lock(&(slist->lock_lists)); + + if (kfs->aliases == NULL && kfs->filename != NULL) + { + /* extension is not using aliases */ + + use_aliases = 0; + + kfs->aliases = (struct dazuko_file_listnode *)xp_malloc(sizeof(struct dazuko_file_listnode)); + if (kfs->aliases == NULL) + { + call_xp_print("dazuko: warning: access not controlled (%s)\n", kfs->filename); + return 0; + } + + dazuko_bzero(kfs->aliases, sizeof(struct dazuko_file_listnode)); + + kfs->aliases->filename = kfs->filename; + kfs->aliases->filename_length = kfs->filename_length; + } + + for (cur=kfs->aliases ; cur ; cur=cur->next) + { + if (cur->filename != NULL && cur->filename_length > 0) + { + /* check if filename is under our include paths */ + for (path=slist->incl_paths ; path ; path=path->next) + { + /* the include item must be at least as long as the given filename */ + if (path->len <= cur->filename_length) + { + /* the include item should match the beginning of the given filename */ + if (memcmp(path->path, cur->filename, path->len) == 0) + { + kfs->filename = cur->filename; + kfs->filename_length = cur->filename_length; + + selected = 1; + break; + } + } + } + + /* If we didn't find a path, it isn't in our + * include directories. It can't be one of + * the selected files to scan. */ + if (!selected) + { + continue; + } + + /* check if filename is under our exclude paths */ + for (path=slist->excl_paths ; path ; path=path->next) + { + /* the exclude item must be at least as long as the given filename */ + if (path->len <= cur->filename_length) + { + /* the exclude item should match the beginning of the given filename */ + if (memcmp(path->path, cur->filename, path->len) == 0) + { + kfs->filename = NULL; + kfs->filename_length = 0; + + selected = 0; + break; + } + } + } + + /* If we are still selected, then we can stop. */ + if (selected) + break; + } + } + + call_xp_read_unlock(&(slist->lock_lists)); +/* UNLOCK */ + + if (!use_aliases) + { + call_xp_free(kfs->aliases); + kfs->aliases = NULL; + } + + return selected; +} + +static inline int dazuko_should_scan(struct dazuko_file_struct *kfs, struct slot_list *slist) +{ + /* Check if we are supposed to scan this file. + * This checks for all the correct file types, + * permissions, and if it is within the desired + * paths to scan. */ + + int result = 0; + + /* make necessary platform-dependent checks */ + if (call_xp_fill_file_struct(kfs) == 0) + { + if (dazuko_is_selected(kfs, slist)) + result = 1; + } + + return result; +} + +static inline int dazuko_run_daemon(unsigned long event, struct dazuko_file_struct *dfs, struct event_properties *event_p, struct slot_list *skip_slotlist) +{ + struct slot_list *sl; + int i; + int index; + int j; + int rc = 0; + int error; + + i = dazuko_event2index(event); + if (i < 0 || i >= NUM_EVENTS) + { + call_xp_print("dazuko: unknown event:%lu, allowing access (possible bug)\n", event); + return 0; + } + + for (index=0 ; index= NUM_SLOT_LISTS) + { + call_xp_print("dazuko: illegal value:%d in access_mask_cache (possible bug)\n", j); + break; + } + +/* DOWN */ + call_xp_down(&(slot_lists[j].mutex)); + + sl = slot_lists[j].slot_list; + + call_xp_up(&(slot_lists[j].mutex)); +/* UP */ + + if (sl == NULL) + continue; + + if (sl == skip_slotlist) + continue; + + if (!dazuko_should_scan(dfs, sl)) + continue; + + error = dazuko_run_daemon_on_slotlist(event, dfs->filename, dfs->filename_length, event_p, &(dfs->file_p), rc, sl); + + if (error < 0) + { + /* most likely user interrupt */ + rc = error; + break; + } + else if (error > 0) + { + /* this daemon wants access blocked */ + rc = 1; + } + } + + return rc; +} + +static inline struct trusted_container * _remove_trusted_node(struct trusted_container *prev, struct trusted_container *cur, struct slot_list *sl) +{ + struct trusted_container *next; + + if (cur == NULL || sl == NULL) + return NULL; + + next = cur->next; + + if (prev != NULL) + prev->next = next; + else + sl->trusted_list = next; + + /* remove this trusted container */ + call_xp_id_free(cur->xp_id); + call_xp_free(cur); + + return next; +} + +inline int dazuko_is_our_daemon(struct xp_daemon_id *xp_id, struct slot_list **slotlist, struct slot **slot) +{ + /* Check if the current process is one + * of the daemons. */ + + int ret = 0; + struct daemon_id did; + struct slot *s; + int i; + struct slot_list *sl; +#ifdef TRUSTED_APPLICATION_SUPPORT + int cmp; + struct trusted_container *tc; + struct trusted_container *prev; +#endif + + did.xp_id = call_xp_id_copy(xp_id); + did.unique = -1; + + for (i=0 ; iset_trusted_list)) + continue; + +/* LOCK */ + call_xp_read_lock(&(sl->lock_trusted_list)); + + tc = sl->trusted_list; + prev = NULL; + while (tc != NULL) + { + cmp = call_xp_id_compare(tc->xp_id, did.xp_id, 1); + + if (cmp == DAZUKO_SAME || (cmp == DAZUKO_CHILD && tc->trust_children)) + { + ret = 1; + + if (slotlist != NULL) + *slotlist = sl; + + break; + } + else if (cmp == DAZUKO_SUSPICIOUS) + { + DPRINT(("dazuko: detected suspicios activity, removing trusted daemon [%d]\n", did.unique)); + + /* remove invalid trusted node */ + tc = _remove_trusted_node(prev, tc, sl); + break; + } + else + { + prev = tc; + tc = tc->next; + } + } + + call_xp_read_unlock(&(sl->lock_trusted_list)); +/* UNLOCK */ + + if (ret) + break; +#endif + } + + call_xp_id_free(did.xp_id); + + return ret; +} + +inline char* dazuko_strdup(const char *string, int *newlength) +{ + int length; + char *newstring; + + if (string == NULL) + return NULL; + + length = dazuko_strlen(string); + + newstring = (char *)call_xp_malloc(length + 1); + + if (newstring == NULL) + return NULL; + + memcpy(newstring, string, length); + newstring[length] = 0; + + if (newlength != NULL) + *newlength = length; + + return newstring; +} + +#ifdef TRUSTED_APPLICATION_SUPPORT +static inline int dazuko_add_trusted_daemon(struct xp_daemon_id *xp_id, const char *token, int trust_children, struct slot_list *sl) +{ + int error = 0; + struct trusted_container *tc; + char *temp; + +/* LOCK */ + call_xp_read_lock(&(sl->lock_trusted_list)); + + tc = sl->trusted_list; + while (tc != NULL) + { + if (call_xp_id_compare(tc->xp_id, xp_id, 0) == DAZUKO_SAME) + { + /* This process is already registered. + * but we will assign the new token. */ + + temp = dazuko_strdup(token, &(tc->token_length)); + + if (temp != NULL) + { + /* we only replace the token if we were able + * to allocate the new token */ + + call_xp_free(tc->token); + tc->token = temp; + } + + tc->trust_children = trust_children; + + break; + } + tc = tc->next; + } + + if (tc == NULL) + { + /* we need to add the process to the list */ + + tc = (struct trusted_container *)call_xp_malloc(sizeof(struct trusted_container)); + if (tc == NULL) + { + error = -1; + } + else + { + tc->token = dazuko_strdup(token, &(tc->token_length)); + + if (tc->token == NULL) + { + error = -1; + call_xp_free(tc); + } + else + { + tc->xp_id = call_xp_id_copy(xp_id); + tc->next = sl->trusted_list; + tc->trust_children = trust_children; + sl->trusted_list = tc; + + /* set the flag if necessary */ + if (!(sl->set_trusted_list)) + sl->set_trusted_list = 1; + } + } + } + + call_xp_read_unlock(&(sl->lock_trusted_list)); +/* UNLOCK */ + + return error; +} + +static inline int dazuko_register_trusted_daemon(struct xp_daemon_id *xp_id, const char *group_name, char *token, char *trust_flags) +{ + struct event_properties event_p; + struct slot_list *sl; + int rc; + int trust_children = 0; + + if (xp_id == NULL || group_name == NULL || token == NULL) + return -1; + + sl = find_slot_list_from_groupname(group_name); + + if (sl == NULL) + return -1; + + /* check if this group is accepting trust requests */ + if ((DAZUKO_TRUST_REQUEST & sl->access_mask) == 0) + return -1; + + memset(&event_p, 0, sizeof(event_p)); + + /* set general event information (for example, PID) */ + call_xp_set_event_properties(&event_p, xp_id); + + if (trust_flags != NULL) + { + if (dazuko_strchr(trust_flags, 'C') != NULL) + { + event_p.flags = DAZUKO_TRUST_CHILDREN; + trust_children = 1; + } + } + + /* prev_response is set to 1 so that trust requests + * are blocked by default */ + + rc = dazuko_run_daemon_on_slotlist(DAZUKO_TRUST_REQUEST, token, dazuko_strlen(token), &event_p, NULL, 1, sl); + + if (rc == 0) + { + /* process may be added to trusted list */ + + rc = dazuko_add_trusted_daemon(xp_id, token, trust_children, sl); + } + + return rc; +} + +static inline int dazuko_unregister_trusted_daemon(struct xp_daemon_id *xp_id) +{ + struct trusted_container *prev; + struct trusted_container *cur; + int error = -1; + int i; + struct slot_list *sl; + + for (i=0 ; iset_trusted_list)) + continue; + +/* LOCK */ + call_xp_read_lock(&(sl->lock_trusted_list)); + + prev = NULL; + cur = sl->trusted_list; + while (cur != NULL) + { + if (call_xp_id_compare(cur->xp_id, xp_id, 0) == DAZUKO_SAME) + { + _remove_trusted_node(prev, cur, sl); + + /* we found the process and removed it */ + error = 0; + + break; + } + prev = cur; + cur = cur->next; + } + + /* set flag to 0 if all trusted processes have been removed */ + if (sl->trusted_list == NULL) + sl->set_trusted_list = 0; + + call_xp_read_unlock(&(sl->lock_trusted_list)); +/* UNLOCK */ + } + + return error; +} +#endif + +static int dazuko_handle_request_register(struct dazuko_request *request, struct xp_daemon_id *xp_id) +{ + char *value1; + char *value2; + int error = 0; + struct daemon_id did; + + /* read "\nRM=regmode\nGN=group" */ + /* send "\nID=id\nVN=versionnumber\nVS=version" */ + + if (request->buffer_size <= 0) + return -1; + + if (request->reply_buffer_size <= 0) + return -1; + + if (dazuko_get_value("\nGN=", request->buffer, &value1) != 0) + return -1; + + if (dazuko_get_value("\nRM=", request->buffer, &value2) != 0) + { + call_xp_free(value1); + return -1; + } + + did.xp_id = call_xp_id_copy(xp_id); + did.unique = 0; /* a unique is not yet assigned */ + + error = dazuko_register_daemon(&did, value1, dazuko_strlen(value1), dazuko_strchr(value2, 'W') != NULL); + + dazuko_clear_replybuffer(request); + dazuko_add_keyvalue_to_replybuffer(request, "\nID=", &(did.unique), 'd'); + dazuko_add_keyvalue_to_replybuffer(request, "\nVN=", &VERSION_NUMBER, 's'); + dazuko_add_keyvalue_to_replybuffer(request, "\nVS=", &VERSION_STRING, 's'); + dazuko_close_replybuffer(request); + + call_xp_free(value1); + call_xp_free(value2); + call_xp_id_free(did.xp_id); + + return error; +} + +static int dazuko_handle_request_basic(struct dazuko_request *request, struct xp_daemon_id *xp_id, int basic_option) +{ + char *value1; + int error = 0; + struct daemon_id did; + + /* read "\nID=id" */ + + if (request->buffer_size <= 0) + return -1; + + if (dazuko_get_value("\nID=", request->buffer, &value1) != 0) + return -1; + + did.xp_id = call_xp_id_copy(xp_id); + did.unique = dazuko_strtol(value1); + + error = dazuko_set_option(&did, basic_option, NULL, 0); + + call_xp_free(value1); + call_xp_id_free(did.xp_id); + + return error; +} + +static int dazuko_handle_request_set_access_mask(struct dazuko_request *request, struct xp_daemon_id *xp_id) +{ + char *value1; + char *value2; + int error = 0; + struct daemon_id did; + + /* read "\nID=id\nAM=mask" */ + + if (request->buffer_size <= 0) + return -1; + + if (dazuko_get_value("\nID=", request->buffer, &value1) != 0) + return -1; + + if (dazuko_get_value("\nAM=", request->buffer, &value2) != 0) + { + call_xp_free(value1); + return -1; + } + + did.xp_id = call_xp_id_copy(xp_id); + did.unique = dazuko_strtol(value1); + + error = dazuko_set_option(&did, SET_ACCESS_MASK, value2, dazuko_strlen(value2)); + + call_xp_free(value1); + call_xp_free(value2); + call_xp_id_free(did.xp_id); + + return error; +} + +static int dazuko_handle_request_add_path(struct dazuko_request *request, struct xp_daemon_id *xp_id, int add_path_option) +{ + char *value1; + char *value2; + int error = 0; + struct daemon_id did; + + /* read "\nID=id\nPT=path" */ + + if (request->buffer_size <= 0) + return -1; + + if (dazuko_get_value("\nID=", request->buffer, &value1) != 0) + return -1; + + if (dazuko_get_value("\nPT=", request->buffer, &value2) != 0) + { + call_xp_free(value1); + return -1; + } + + did.xp_id = call_xp_id_copy(xp_id); + did.unique = dazuko_strtol(value1); + + error = dazuko_set_option(&did, add_path_option, value2, dazuko_strlen(value2)); + + call_xp_free(value1); + call_xp_free(value2); + call_xp_id_free(did.xp_id); + + return error; +} + +static inline int handle_event_as_readonly(struct slot *s) +{ + /* are we in read_only mode? */ + if (!(s->write_mode)) + return 1; + + /* (CLOSE events are treated as read_only since + * the action is not implemented as blockable) */ + + if (s->event == DAZUKO_ON_CLOSE || s->event == DAZUKO_ON_CLOSE_MODIFIED) + return 1; + + return 0; +} + +static int dazuko_handle_request_get_an_access(struct dazuko_request *request, struct xp_daemon_id *xp_id) +{ + char *value1; + int error = 0; + struct slot *s; + struct daemon_id did; + + /* read "\nID=id" */ + /* send "\nEV=event\nFN=file\nUI=uid\nPI=pid\nFL=flags\nMD=mode..." */ + + if (request->buffer_size <= 0) + return -1; + + if (request->reply_buffer_size <= 0) + return -1; + + if (dazuko_get_value("\nID=", request->buffer, &value1) != 0) + return -1; + + did.xp_id = call_xp_id_copy(xp_id); + did.unique = dazuko_strtol(value1); + + call_xp_free(value1); + +/* DOWN? */ + s = dazuko_get_an_access(&did); + + if (s == NULL) + { + call_xp_id_free(did.xp_id); + return XP_ERROR_INTERRUPT; + } +/* DOWN */ + + /* Slot IS in DAZUKO_WORKING state. Copy all the + * necessary information to userspace structure. */ + + dazuko_clear_replybuffer(request); + dazuko_add_keyvalue_to_replybuffer(request, "\nEV=", &(s->event), 'd'); + dazuko_add_esc_to_replybuffer(request, "\nFN=", &(s->filename)); + + if (s->event_p.set_uid) + dazuko_add_keyvalue_to_replybuffer(request, "\nUI=", &(s->event_p.uid), 'd'); + + if (s->event_p.set_pid) + dazuko_add_keyvalue_to_replybuffer(request, "\nPI=", &(s->event_p.pid), 'd'); + + if (s->event_p.set_flags) + dazuko_add_keyvalue_to_replybuffer(request, "\nFL=", &(s->event_p.flags), 'd'); + + if (s->event_p.set_mode) + dazuko_add_keyvalue_to_replybuffer(request, "\nMD=", &(s->event_p.mode), 'd'); + + if (s->file_p.set_size) + dazuko_add_keyvalue_to_replybuffer(request, "\nFS=", &(s->file_p.size), 'l'); + + if (s->file_p.set_uid) + dazuko_add_keyvalue_to_replybuffer(request, "\nFU=", &(s->file_p.uid), 'd'); + + if (s->file_p.set_gid) + dazuko_add_keyvalue_to_replybuffer(request, "\nFG=", &(s->file_p.gid), 'd'); + + if (s->file_p.set_mode) + dazuko_add_keyvalue_to_replybuffer(request, "\nFM=", &(s->file_p.mode), 'd'); + + if (s->file_p.set_device_type) + dazuko_add_keyvalue_to_replybuffer(request, "\nDT=", &(s->file_p.device_type), 'd'); + + dazuko_close_replybuffer(request); + +/* XXX: What do we do if there is a problem copying back to userspace?! */ + + if (handle_event_as_readonly(s)) + { + /* the access is immediately (and at the kernel level) + * returned */ + + call_xp_up(&(s->mutex)); +/* UP */ + + dazuko_return_access(&did, 0, s); + } + else + { + call_xp_up(&(s->mutex)); +/* UP */ + } + + call_xp_id_free(did.xp_id); + + return error; +} + +static int dazuko_handle_request_return_an_access(struct dazuko_request *request, struct xp_daemon_id *xp_id) +{ + char *value1; + char *value2; + int error = 0; + struct daemon_id did; + struct slot *s; + + /* read "\nID=id\nDN=deny" */ + + if (request->buffer_size <= 0) + return -1; + + if (dazuko_get_value("\nID=", request->buffer, &value1) != 0) + return -1; + + if (dazuko_get_value("\nDN=", request->buffer, &value2) != 0) + { + call_xp_free(value1); + return -1; + } + + did.xp_id = call_xp_id_copy(xp_id); + did.unique = dazuko_strtol(value1); + + /* find our slot */ + s = dazuko_find_slot(&did, 1, NULL); + + if (s == NULL) + { + /* It appears the kernel isn't interested + * in us or our response. It gave our slot away! */ + + DPRINT(("dazuko: daemon %d unexpectedly lost slot (by return access)\n", did.unique)); + + return -1; + } + + if (!handle_event_as_readonly(s)) + error = dazuko_return_access(&did, dazuko_strtoul(value2), s); + + call_xp_free(value1); + call_xp_free(value2); + call_xp_id_free(did.xp_id); + + return error; +} + +static int dazuko_handle_request_initialize_cache(struct dazuko_request *request, struct xp_daemon_id *xp_id) +{ + char *value1; + char *value2; + int error = 0; + int i; + struct daemon_id did; + + /* read "\nID=id\nCT=cachettl" */ + + if (request->buffer_size <= 0) + return -1; + + if (dazuko_get_value("\nID=", request->buffer, &value1) != 0) + return -1; + + if (dazuko_get_value("\nCT=", request->buffer, &value2) != 0) + { + call_xp_free(value1); + return -1; + } + + did.xp_id = call_xp_id_copy(xp_id); + did.unique = dazuko_strtol(value1); + + error = dazuko_initialize_cache(&did, dazuko_strtoul(value2)); + + call_xp_free(value1); + call_xp_free(value2); + + if (error) + i = 0; + else + i = 1; + + dazuko_clear_replybuffer(request); + dazuko_add_keyvalue_to_replybuffer(request, "\nCA=", &i, 'd'); + dazuko_close_replybuffer(request); + + call_xp_id_free(did.xp_id); + + /* the request was successful, + * even if a cache is not available */ + return 0; +} + +#ifdef TRUSTED_APPLICATION_SUPPORT +static int dazuko_handle_request_register_trusted(struct dazuko_request *request, struct xp_daemon_id *xp_id) +{ + char *value1; + char *value2; + char *value3 = NULL; + int error = 0; + int i; + struct daemon_id did; + + /* read "\nGN=group\nTT=token[\nTF=flags]" */ + /* send "\nDN=deny" */ + + if (request->buffer_size <= 0) + return -1; + + if (request->reply_buffer_size <= 0) + return -1; + + if (dazuko_get_value("\nGN=", request->buffer, &value1) != 0) + return -1; + + if (dazuko_get_value("\nTT=", request->buffer, &value2) != 0) + { + call_xp_free(value1); + return -1; + } + + dazuko_get_value("\nTF=", request->buffer, &value3); + + did.xp_id = call_xp_id_copy(xp_id); + + error = dazuko_register_trusted_daemon(did.xp_id, value1, value2, value3); + + if (error) + i = 1; + else + i = 0; + + dazuko_clear_replybuffer(request); + dazuko_add_keyvalue_to_replybuffer(request, "\nDN=", &i, 'd'); + dazuko_close_replybuffer(request); + + call_xp_free(value1); + call_xp_free(value2); + if (value3 != NULL) + call_xp_free(value3); + call_xp_id_free(did.xp_id); + + /* the request was successful, + * even if a access is denied */ + return 0; +} + +static int dazuko_handle_request_remove_trusted(struct dazuko_request *request, struct xp_daemon_id *xp_id) +{ + char *value1; + char *value2; + int error = 0; + struct daemon_id did; + + /* read "\nID=id\nTT=token" */ + + if (request->buffer_size <= 0) + return -1; + + if (dazuko_get_value("\nID=", request->buffer, &value1) != 0) + return -1; + + if (dazuko_get_value("\nTT=", request->buffer, &value2) != 0) + { + call_xp_free(value1); + return -1; + } + + did.xp_id = call_xp_id_copy(xp_id); + did.unique = dazuko_strtol(value1); + + error = dazuko_set_option(&did, REMOVE_TRUSTED, value2, dazuko_strlen(value2)); + + call_xp_free(value1); + call_xp_free(value2); + call_xp_id_free(did.xp_id); + + return error; +} + +#endif + +static int dazuko_handle_request(struct dazuko_request *request, struct xp_daemon_id *xp_id) +{ + int error = 0; + int type; + + if (request == NULL || xp_id == NULL) + return -1; + + type = request->type[0] + (256 * request->type[1]); + + switch (type) + { + case REGISTER: + return dazuko_handle_request_register(request, xp_id); + + case UNREGISTER: + return dazuko_handle_request_basic(request, xp_id, type); + + case SET_ACCESS_MASK: + return dazuko_handle_request_set_access_mask(request, xp_id); + + case ADD_INCLUDE_PATH: + return dazuko_handle_request_add_path(request, xp_id, type); + + case ADD_EXCLUDE_PATH: + return dazuko_handle_request_add_path(request, xp_id, type); + + case REMOVE_ALL_PATHS: + return dazuko_handle_request_basic(request, xp_id, type); + + case GET_AN_ACCESS: + return dazuko_handle_request_get_an_access(request, xp_id); + + case RETURN_AN_ACCESS: + return dazuko_handle_request_return_an_access(request, xp_id); + + case INITIALIZE_CACHE: + return dazuko_handle_request_initialize_cache(request, xp_id); + +#ifdef TRUSTED_APPLICATION_SUPPORT + case REGISTER_TRUSTED: + return dazuko_handle_request_register_trusted(request, xp_id); + + case UNREGISTER_TRUSTED: + /* read (nothing) */ + + error = dazuko_unregister_trusted_daemon(xp_id); + + break; + + case REMOVE_ALL_TRUSTED: + return dazuko_handle_request_basic(request, xp_id, type); + + case REMOVE_TRUSTED: + return dazuko_handle_request_remove_trusted(request, xp_id); +#endif + + default: + error = XP_ERROR_INVALID; + + break; + } + + return error; +} + +int dazuko_handle_user_request(const char *request_buffer, struct xp_daemon_id *xp_id) +{ + int error = 0; + struct dazuko_request *user_request = NULL; + unsigned char *ll_request = NULL; + unsigned char *ll_stream = NULL; + struct dazuko_request *request = NULL; + struct dazuko_request *temp_request = NULL; + char *value; + unsigned char tempslen[4]; + int streamlen = 0; + + /* + * some notes on the variables: we allocate a "request" struct which + * has a kernel space address and references data which is _completely_ + * valid from within the kernel, in addition we allocate a + * "temp_request" struct which has a kernel space address and its data + * mirrors the userland struct "user_request", the "ll_stream" byte + * array has a kernel space address and holds a copy of the user space + * request stream + */ + + if (request_buffer == NULL || xp_id == NULL) + return XP_ERROR_FAULT; + + if (dazuko_get_value("\nra=", request_buffer, &value) == 0) + { + ll_request = (unsigned char *)dazuko_strtoul(value); + xp_free(value); + } + else if (dazuko_get_value("\nRA=", request_buffer, &value) == 0) + { + user_request = (struct dazuko_request *)dazuko_strtoul(value); + xp_free(value); + } + + /* + * at least one kind of request presentation needs to be given (having + * multiple kinds does not hurt -- we pick the most portable one and + * process it) + */ + if (ll_request == NULL && user_request == NULL) + return XP_ERROR_FAULT; + + /* allocate temp kernel request */ + temp_request = (struct dazuko_request *)call_xp_malloc(sizeof(struct dazuko_request)); + if (temp_request == NULL) + return XP_ERROR_FAULT; + + /* allocate kernel request */ + request = (struct dazuko_request *)call_xp_malloc(sizeof(struct dazuko_request)); + if (request == NULL) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + + /* request bytes are zero'd out because the "out" will check + * these values */ + dazuko_bzero(request, sizeof(struct dazuko_request)); + + if (ll_request != NULL) + { + /* + * this is the "new style ra= (streamed) request" -- we have a + * description which is high level language independent: fill in *OUR* + * C language struct with the data we read in in a portable way + */ + + /* copy in the length bytes (4 bytes) */ + if (call_xp_copyin(ll_request, tempslen, 4) != 0) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + + if (dazuko_reqstream_chunksize(tempslen, &streamlen) != 0) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + + /* allocate a buffer and copyin the stream */ + ll_stream = (unsigned char *)call_xp_malloc(streamlen); + if (ll_stream == NULL) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + + if (call_xp_copyin(ll_request, ll_stream, streamlen) != 0) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + + /* convert the stream to into a (our) struct */ + if (dazuko_reqstream_ll2hl(ll_stream, temp_request, 0) != 0) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + + /* do NOT release the stream buffer here */ + } + else if (user_request != NULL) + { + /* + * this is the "old style (high level language struct) request" -- we + * HAVE TO ASSUME that the memory layout of the application and the + * kernel module match regarding the "struct dazuko_request" data type + * (yes, it's dangerous but we have no means to check anything here) + */ + + /* copy in the request */ + if (call_xp_copyin(user_request, temp_request, sizeof(struct dazuko_request)) != 0) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + } + + /* + * at this point we have a valid request structure in "temp_request" + * (still pointing to userland buffers for request and reply) + */ + + memcpy(request->type, temp_request->type, sizeof(char[2])); + + /* sanity check */ + request->buffer_size = temp_request->buffer_size; + if (request->buffer_size < 0 || request->buffer_size > 8192) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + + /* sanity check */ + request->reply_buffer_size = temp_request->reply_buffer_size; + if (request->reply_buffer_size < 0 || request->reply_buffer_size > 8192) + { + error = XP_ERROR_PERMISSION; + goto dazuko_handle_user_request_out; + } + + if (request->buffer_size > 0) + { + /* allocate request command string buffer */ + request->buffer = (char *)call_xp_malloc(request->buffer_size + 1); + if (request->buffer == NULL) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + + } + + if (request->reply_buffer_size > 0) + { + /* allocate reply text buffer */ + request->reply_buffer = (char *)call_xp_malloc(request->reply_buffer_size + 1); + if (request->reply_buffer == NULL) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + + request->reply_buffer_size_used = 0; + } + + if (request->buffer_size > 0) + { + /* copy the buffer from userspace to kernelspace */ + if (call_xp_copyin(temp_request->buffer, request->buffer, request->buffer_size) != 0) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + + request->buffer[request->buffer_size] = 0; + } + + /* process the request */ + error = dazuko_handle_request(request, xp_id); + + /* successfully processed and a response to be transferred back? */ + if (error == 0 && request->reply_buffer_size > 0) + { + request->reply_buffer[request->reply_buffer_size] = 0; + + temp_request->reply_buffer_size_used = request->reply_buffer_size_used; + + if (ll_request != NULL) + { + /* new style (streamed) request */ + + /* update a few return fields */ + if (dazuko_reqstream_updll(temp_request, ll_stream) != 0) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + + /* copyout the stream back to the application */ + if (call_xp_copyout(ll_stream, ll_request, streamlen) != 0) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + } + else if (user_request != NULL) + { + /* old style (high level language struct) request */ + + /* copyout the complete "struct dazuko_request" struct */ + if (call_xp_copyout(temp_request, user_request, sizeof(struct dazuko_request)) != 0) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + } + + /* transfer back the reply data itself */ + if (request->reply_buffer_size_used > 0) + { + /* reply_buffer_size_used already includes the NUL byte */ + if (call_xp_copyout(request->reply_buffer, temp_request->reply_buffer, request->reply_buffer_size_used) != 0) + { + error = XP_ERROR_FAULT; + goto dazuko_handle_user_request_out; + } + } + } + +dazuko_handle_user_request_out: + + if (request != NULL) + { + if (request->buffer != NULL) + call_xp_free(request->buffer); + + if (request->reply_buffer != NULL) + call_xp_free(request->reply_buffer); + + call_xp_free(request); + } + + if (temp_request != NULL) + call_xp_free(temp_request); + + if (ll_stream != NULL) + call_xp_free(ll_stream); + + return error; +} + +int dazuko_handle_user_request_compat1(void *ptr, int cmd, struct xp_daemon_id *xp_id) +{ + struct access_compat1 *user_request_1; + struct access_compat1 *temp_request_1; + struct slot_list *sl; + int error = 0; + struct slot *s; + char *k_param; + struct daemon_id did; + int temp_length; + int temp_int; + + if (ptr == NULL || xp_id == NULL) + return XP_ERROR_FAULT; + + did.xp_id = call_xp_id_copy(xp_id); + did.unique = -1; + + switch (cmd) + { + case IOCTL_GET_AN_ACCESS: + /* The daemon is requesting a filename of a file + * to scan. This code will wait until a filename + * is available, or until we should be killed. + * (killing is done if any errors occur as well + * as when the user kills us) */ + + user_request_1 = (struct access_compat1 *)ptr; + + error = call_xp_verify_user_writable(user_request_1, sizeof(struct access_compat1)); + if (error) + { + error = XP_ERROR_FAULT; + break; + } + +/* DOWN? */ + s = dazuko_get_an_access(&did); + + if (s == NULL) + { + error = XP_ERROR_INTERRUPT; + break; + } + +/* DOWN */ + + /* Slot IS in WORKING state. Copy all the + * necessary information to userspace structure. */ + + if (s->filenamelength >= DAZUKO_FILENAME_MAX_LENGTH_COMPAT1) + { + /* filename length overflow :( */ + + s->filename[DAZUKO_FILENAME_MAX_LENGTH_COMPAT1 - 1] = 0; + temp_length = DAZUKO_FILENAME_MAX_LENGTH_COMPAT1; + } + else + { + temp_length = s->filenamelength + 1; + } + + temp_request_1 = (struct access_compat1 *)call_xp_malloc(sizeof(struct access_compat1)); + if (temp_request_1 == NULL) + { + error = XP_ERROR_FAULT; + } + else if (call_xp_copyin(user_request_1, temp_request_1, sizeof(struct access_compat1)) != 0) + { + error = XP_ERROR_FAULT; + } + + if (error == 0) + { + temp_request_1->event = s->event; + temp_request_1->o_flags = s->event_p.flags; + temp_request_1->o_mode = s->event_p.mode; + temp_request_1->uid = s->event_p.uid; + temp_request_1->pid = s->event_p.pid; + memcpy(temp_request_1->filename, s->filename, temp_length); + + if (call_xp_copyout(temp_request_1, user_request_1, sizeof(struct access_compat1)) != 0) + { + error = XP_ERROR_FAULT; + } + } + + call_xp_up(&(s->mutex)); +/* UP */ + + if (error) + { + if (dazuko_change_slot_state(s, DAZUKO_WORKING, DAZUKO_BROKEN, 1)) + { + /* slot->state has changed to BROKEN, notifiy appropriate queue */ + call_xp_notify(&(s->wait_kernel_waiting_until_this_slot_not_WAITING_and_not_WORKING)); + } + } + + if (temp_request_1 != NULL) + { + call_xp_free(temp_request_1); + } + + break; + + case IOCTL_RETURN_ACCESS: + /* The daemon has finished scanning a file + * and has the response to give. The daemon's + * slot should be in the WORKING state. */ + + user_request_1 = (struct access_compat1 *)ptr; + + error = call_xp_verify_user_readable(user_request_1, sizeof(struct access_compat1)); + if (error) + { + error = XP_ERROR_FAULT; + break; + } + + temp_request_1 = (struct access_compat1 *)call_xp_malloc(sizeof(struct access_compat1)); + if (temp_request_1 == NULL) + { + error = XP_ERROR_FAULT; + break; + } + + if (call_xp_copyin(user_request_1, temp_request_1, sizeof(struct access_compat1)) != 0) + { + error = XP_ERROR_FAULT; + } + + temp_int = temp_request_1->deny; + + call_xp_free(temp_request_1); + + /* find our slot */ + s = dazuko_find_slot(&did, 1, NULL); + + if (s == NULL) + { + /* It appears the kernel isn't interested + * in us or our response. It gave our slot away! */ + + DPRINT(("dazuko: daemon %d unexpectedly lost slot (by return access compat1)\n", did.unique)); + + error = XP_ERROR_FAULT; + } + else if (!handle_event_as_readonly(s)) + { + error = dazuko_return_access(&did, temp_int, s); + } + + break; + + case IOCTL_SET_OPTION: + /* The daemon wants to set a configuration + * option in the kernel. */ + + error = call_xp_verify_user_readable(ptr, 2*sizeof(int)); + if (error) + { + error = XP_ERROR_FAULT; + break; + } + + /* copy option type from userspace */ + if (call_xp_copyin(ptr, &temp_int, sizeof(int)) != 0) + { + error = XP_ERROR_FAULT; + break; + } + + ptr = ((char *)ptr + sizeof(int)); + + /* copy path length from userspace */ + if (call_xp_copyin(ptr, &temp_length, sizeof(int)) != 0) + { + error = XP_ERROR_FAULT; + break; + } + + /* sanity check */ + if (temp_length < 0 || temp_length > 4096) + { + error = XP_ERROR_INVALID; + break; + } + + ptr = ((char *)ptr + sizeof(int)); + + error = call_xp_verify_user_readable(ptr, temp_length); + if (error) + { + error = XP_ERROR_FAULT; + break; + } + + k_param = (char *)call_xp_malloc(temp_length + 1); + if (k_param == NULL) + { + error = XP_ERROR_FAULT; + break; + } + + /* We must copy the param from userspace to kernelspace. */ + + if (call_xp_copyin(ptr, k_param, temp_length) != 0) + { + call_xp_free(k_param); + error = XP_ERROR_FAULT; + break; + } + + k_param[temp_length] = 0; + + switch (temp_int) + { + case REGISTER: + error = dazuko_register_daemon(&did, k_param, temp_length, 1); + break; + + case SET_ACCESS_MASK: + /* find our slot */ + if (dazuko_find_slot_and_slotlist(&did, 1, NULL, &sl) == NULL) + { + error = XP_ERROR_PERMISSION; + } + else if (sl == NULL) + { + error = XP_ERROR_PERMISSION; + } + else + { + sl->access_mask = k_param[0]; + + /* rebuild access_mask_cache */ + dazuko_setup_amc_cache(); + } + break; + + default: + error = dazuko_set_option(&did, temp_int, k_param, temp_length); + break; + } + + call_xp_free(k_param); + + break; + + default: + error = XP_ERROR_INVALID; + + break; + } + + call_xp_id_free(did.xp_id); + + return error; +} + +int dazuko_check_access(unsigned long event, int daemon_is_allowed, struct xp_daemon_id *xp_id, struct slot_list **cached_lookup) +{ + int i; + struct slot_list *sl = NULL; + + /* do we have any daemons? */ + if (call_xp_atomic_read(&active) <= 0) + return -1; + + /* is a group interested in this event type? */ + + i = dazuko_event2index(event); + if (i < 0 || i >= NUM_EVENTS) + return -1; + +/* DOWN */ + call_xp_down(&mutex_amc); + + i = access_mask_cache[i][0]; + + call_xp_up(&mutex_amc); +/* UP */ + + if (i == AMC_UNSET) + return -1; + + if (dazuko_is_our_daemon(xp_id, &sl, NULL)) + { + /* should daemons be allowed this event without a scan? */ + if (daemon_is_allowed) + { + /* this is one of our daemons, so we will report as + * as if this event was not in the mask */ + + return -1; + } + else + { + /* this is one of our daemons, but the + * other groups must be informed */ + + /* if there are no other groups, allow this event */ + if (call_xp_atomic_read(&groupcount) == 1) + return -1; + + if (cached_lookup != NULL) + { + /* this slot list (ours) will be skipped */ + *cached_lookup = sl; + } + } + } + + /* if we made it this far, then the + * access should be processed */ + + return 0; +} + +int dazuko_process_access(unsigned long event, struct dazuko_file_struct *kfs, struct event_properties *event_p, struct slot_list *cached_lookup) +{ + /* return codes: + * >0 -> access should be blocked + * <0 -> access should be blocked (because user interrupted) + * 0 -> access is allowed + */ + + int error = 0; + + if (kfs == NULL) + { + /* kfs is required */ + + call_xp_print("dazuko: kfs=NULL (possible bug)\n"); + + return XP_ERROR_PERMISSION; + } + + /* check and handle this event */ + error = dazuko_run_daemon(event, kfs, event_p, cached_lookup); + + if (error > 0) + { + /* access will be blocked */ + + return XP_ERROR_PERMISSION; + } + else if (error < 0) + { + /* user interrupted */ + + return XP_ERROR_INTERRUPT; + } + + /* access allowed */ + + return 0; +} + +int dazuko_init(void) +{ + int i; + int error; + + call_xp_init_mutex(&mutex_unique_count); + call_xp_init_mutex(&mutex_amc); + + dazuko_bzero(&slot_lists, sizeof(slot_lists)); + + memset(&access_mask_cache, AMC_UNSET, sizeof(access_mask_cache)); + + for (i=0 ; iuse_count)) != 0) + call_xp_print("dazuko: slot_list count was not 0 (possible bug)\n"); + + for (j=0 ; jslots[j].mutex)); + call_xp_destroy_queue(&(slot_lists[i].slot_list->slots[j].wait_daemon_waiting_until_this_slot_not_READY)); + call_xp_destroy_queue(&(slot_lists[i].slot_list->slots[j].wait_kernel_waiting_until_this_slot_not_WAITING_and_not_WORKING)); + call_xp_destroy_queue(&(slot_lists[i].slot_list->slots[j].wait_daemon_waiting_until_this_slot_not_DONE)); + } + + call_xp_destroy_rwlock(&(slot_lists[i].slot_list->lock_lists)); + +#ifdef TRUSTED_APPLICATION_SUPPORT + dazuko_remove_all_trusted(slot_lists[i].slot_list); + call_xp_destroy_rwlock(&(slot_lists[i].slot_list->lock_trusted_list)); +#endif + + call_xp_destroy_queue(&(slot_lists[i].slot_list->wait_kernel_waiting_for_any_READY_slot_or_zero_use_count)); + + if (slot_lists[i].slot_list->reg_name != NULL) + call_xp_free(slot_lists[i].slot_list->reg_name); + slot_lists[i].slot_list->reg_name = NULL; + + call_xp_free(slot_lists[i].slot_list); + slot_lists[i].slot_list = NULL; + } + + call_xp_destroy_mutex(&(slot_lists[i].mutex)); + } + + call_xp_print("dazuko: unloaded, version=%s\n", VERSION_STRING); + } + + return error; +} --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/dazuko_platform.h +++ linux-source-2.6.15-2.6.15/fs/dazuko/dazuko_platform.h @@ -0,0 +1,21 @@ +#if defined(DUMMYOS) + #include "dazuko_dummyos.h" +#elif defined(LINUX26_SUPPORT) + #include "dazuko_linux26.h" +#elif defined(LINUX) + #include "dazuko_linux.h" +#elif defined(FREEBSD5_SUPPORT) + #include "dazuko_freebsd5.h" +#elif defined(__FreeBSD__) + #include "dazuko_freebsd.h" +#else + /* fallback to Linux */ + #include + #include + + #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) + #include "dazuko_linux.h" + #else + #include "dazuko_linux26.h" + #endif +#endif --- linux-source-2.6.15-2.6.15.orig/fs/dazuko/dazuko_core.h +++ linux-source-2.6.15-2.6.15/fs/dazuko/dazuko_core.h @@ -0,0 +1,216 @@ +/* DazukoXP. Allow cross platform file access control for 3rd-party applications. + Written by John Ogness + + Copyright (c) 2002, 2003, 2004, 2005, 2006 H+BEDV Datentechnik GmbH + Copyright (c) 2006 Avira GmbH + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of Dazuko nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +#ifndef DAZUKO_XP_H +#define DAZUKO_XP_H + +#include "dazuko_transport.h" +#include "dazuko_events.h" + +/* xp_id compare results */ +#define DAZUKO_DIFFERENT 0 +#define DAZUKO_SUSPICIOUS 1 +#define DAZUKO_CHILD 2 +#define DAZUKO_SAME 3 + +/* file types */ +#define DAZUKO_NONE 0 +#define DAZUKO_REGULAR 1 +#define DAZUKO_DIRECTORY 2 +#define DAZUKO_LINK 3 + + +/********************************************************* + * structures that MUST be implemented by platform-layer * + *********************************************************/ + +/* +struct xp_mutex; +struct xp_atomic; +struct xp_file_struct; +struct xp_queue; +struct xp_rwlock; +struct xp_daemon_id; +*/ + + +/****************************************** + * structures available to platform-layer * + ******************************************/ + +struct event_properties +{ + int flags; + char set_flags; + int mode; + char set_mode; + int uid; + char set_uid; + int pid; + char set_pid; +}; + +struct file_properties +{ + unsigned long size; + char set_size; + int uid; + char set_uid; + int gid; + char set_gid; + int mode; + char set_mode; + int device_type; + char set_device_type; + int type; + char set_type; +}; + +struct dazuko_file_listnode +{ + char *filename; + int filename_length; + struct dazuko_file_listnode *next; +}; + +struct dazuko_file_struct +{ + /* A structure designed for simple and + * intelligent memory management when + * doing filename lookups in the kernel. */ + + char *filename; /* filename to report (pointer in alias list) */ + int filename_length; /* length of filename reported */ + struct dazuko_file_listnode *aliases; /* list of file names (alias names) */ + struct file_properties file_p; /* properties of file */ + struct xp_file_struct *extra_data; /* extra platform-dependant data */ +}; + + +/******************************************************** + * functions that MUST be implemented by platform-layer * + ********************************************************/ + +/* mutex */ +void xp_init_mutex(struct xp_mutex *mutex); +void xp_down(struct xp_mutex *mutex); +void xp_up(struct xp_mutex *mutex); +void xp_destroy_mutex(struct xp_mutex *mutex); + +/* read-write lock */ +void xp_init_rwlock(struct xp_rwlock *rwlock); +void xp_write_lock(struct xp_rwlock *rwlock); +void xp_write_unlock(struct xp_rwlock *rwlock); +void xp_read_lock(struct xp_rwlock *rlock); +void xp_read_unlock(struct xp_rwlock *rlock); +void xp_destroy_rwlock(struct xp_rwlock *rwlock); + +/* wait-notify queue */ +int xp_init_queue(struct xp_queue *queue); +int xp_wait_until_condition(struct xp_queue *queue, int (*cfunction)(void *), void *cparam, int allow_interrupt); +int xp_notify(struct xp_queue *queue); +int xp_destroy_queue(struct xp_queue *queue); + +/* memory */ +void* xp_malloc(size_t size); +int xp_free(void *ptr); +int xp_copyin(const void *user_src, void *kernel_dest, size_t size); +int xp_copyout(const void *kernel_src, void *user_dest, size_t size); +int xp_verify_user_writable(const void *user_ptr, size_t size); +int xp_verify_user_readable(const void *user_ptr, size_t size); + +/* path attribute */ +int xp_is_absolute_path(const char *path); + +/* atomic */ +int xp_atomic_set(struct xp_atomic *atomic, int value); +int xp_atomic_inc(struct xp_atomic *atomic); +int xp_atomic_dec(struct xp_atomic *atomic); +int xp_atomic_read(struct xp_atomic *atomic); + +/* system hook */ +int xp_sys_hook(void); +int xp_sys_unhook(void); + +/* file structure */ +int xp_fill_file_struct(struct dazuko_file_struct *dfs); + +/* daemon id */ +int xp_id_compare(struct xp_daemon_id *id1, struct xp_daemon_id *id2, int check_related); +int xp_id_free(struct xp_daemon_id *id); +struct xp_daemon_id* xp_id_copy(struct xp_daemon_id *id); + +/* event */ +int xp_set_event_properties(struct event_properties *event_p, struct xp_daemon_id *xp_id); + +/* cache settings */ +int xp_init_cache(unsigned long ttl); + +/* output */ +int xp_print(const char *fmt, ...); + +/* debug */ +#ifdef DEBUG +#define DPRINT(fmt) xp_print fmt +#else +#define DPRINT(fmt) +#endif + + +/***************************************** + * functions available to platform-layer * + *****************************************/ + +struct slot_list; +struct slot; + +int dazuko_vsnprintf(char *str, size_t size, const char *format, va_list ap); +int dazuko_snprintf(char *str, size_t size, const char *format, ...); +int dazuko_is_our_daemon(struct xp_daemon_id *xp_id, struct slot_list **slotlist, struct slot **slot); +int dazuko_get_value(const char *key, const char *string, char **value); +int dazuko_unregister_daemon(struct xp_daemon_id *xp_id); +int dazuko_handle_user_request(const char *request_buffer, struct xp_daemon_id *xp_id); +int dazuko_handle_user_request_compat1(void *ptr, int cmd, struct xp_daemon_id *xp_id); +int dazuko_strlen(const char *string); +char* dazuko_strdup(const char *string, int *newlength); +unsigned long dazuko_strtoul(const char *string); +void dazuko_bzero(void *p, int len); +int dazuko_active(void); +int dazuko_check_access(unsigned long event, int daemon_is_allowed, struct xp_daemon_id *xp_id, struct slot_list **cached_lookup); +int dazuko_process_access(unsigned long event, struct dazuko_file_struct *kfs, struct event_properties *event_p, struct slot_list *cached_lookup); +int dazuko_init(void); +int dazuko_exit(void); + +#endif --- linux-source-2.6.15-2.6.15.orig/fs/bad_inode.c +++ linux-source-2.6.15-2.6.15/fs/bad_inode.c @@ -14,61 +14,291 @@ #include #include #include +#include -static int return_EIO(void) + +static loff_t bad_file_llseek(struct file *file, loff_t offset, int origin) +{ + return -EIO; +} + +static ssize_t bad_file_read(struct file *filp, char __user *buf, + size_t size, loff_t *ppos) +{ + return -EIO; +} + +static ssize_t bad_file_write(struct file *filp, const char __user *buf, + size_t siz, loff_t *ppos) +{ + return -EIO; +} + +static ssize_t bad_file_aio_read(struct kiocb *iocb, const struct iovec *iov, + unsigned long nr_segs, loff_t pos) +{ + return -EIO; +} + +static ssize_t bad_file_aio_write(struct kiocb *iocb, const struct iovec *iov, + unsigned long nr_segs, loff_t pos) +{ + return -EIO; +} + +static int bad_file_readdir(struct file *filp, void *dirent, filldir_t filldir) +{ + return -EIO; +} + +static unsigned int bad_file_poll(struct file *filp, poll_table *wait) +{ + return POLLERR; +} + +static int bad_file_ioctl (struct inode *inode, struct file *filp, + unsigned int cmd, unsigned long arg) +{ + return -EIO; +} + +static long bad_file_unlocked_ioctl(struct file *file, unsigned cmd, + unsigned long arg) +{ + return -EIO; +} + +static long bad_file_compat_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + return -EIO; +} + +static int bad_file_mmap(struct file *file, struct vm_area_struct *vma) +{ + return -EIO; +} + +static int bad_file_open(struct inode *inode, struct file *filp) +{ + return -EIO; +} + +static int bad_file_flush(struct file *file, fl_owner_t id) +{ + return -EIO; +} + +static int bad_file_release(struct inode *inode, struct file *filp) +{ + return -EIO; +} + +static int bad_file_fsync(struct file *file, struct dentry *dentry, + int datasync) +{ + return -EIO; +} + +static int bad_file_aio_fsync(struct kiocb *iocb, int datasync) +{ + return -EIO; +} + +static int bad_file_fasync(int fd, struct file *filp, int on) +{ + return -EIO; +} + +static int bad_file_lock(struct file *file, int cmd, struct file_lock *fl) +{ + return -EIO; +} + +static ssize_t bad_file_sendfile(struct file *in_file, loff_t *ppos, + size_t count, read_actor_t actor, void *target) +{ + return -EIO; +} + +static ssize_t bad_file_sendpage(struct file *file, struct page *page, + int off, size_t len, loff_t *pos, int more) +{ + return -EIO; +} + +static unsigned long bad_file_get_unmapped_area(struct file *file, + unsigned long addr, unsigned long len, + unsigned long pgoff, unsigned long flags) { return -EIO; } -#define EIO_ERROR ((void *) (return_EIO)) +static int bad_file_check_flags(int flags) +{ + return -EIO; +} + +static int bad_file_dir_notify(struct file *file, unsigned long arg) +{ + return -EIO; +} + +static int bad_file_flock(struct file *filp, int cmd, struct file_lock *fl) +{ + return -EIO; +} static struct file_operations bad_file_ops = { - .llseek = EIO_ERROR, - .aio_read = EIO_ERROR, - .read = EIO_ERROR, - .write = EIO_ERROR, - .aio_write = EIO_ERROR, - .readdir = EIO_ERROR, - .poll = EIO_ERROR, - .ioctl = EIO_ERROR, - .mmap = EIO_ERROR, - .open = EIO_ERROR, - .flush = EIO_ERROR, - .release = EIO_ERROR, - .fsync = EIO_ERROR, - .aio_fsync = EIO_ERROR, - .fasync = EIO_ERROR, - .lock = EIO_ERROR, - .readv = EIO_ERROR, - .writev = EIO_ERROR, - .sendfile = EIO_ERROR, - .sendpage = EIO_ERROR, - .get_unmapped_area = EIO_ERROR, + .llseek = bad_file_llseek, + .read = bad_file_read, + .write = bad_file_write, + .aio_read = bad_file_aio_read, + .aio_write = bad_file_aio_write, + .readdir = bad_file_readdir, + .poll = bad_file_poll, + .ioctl = bad_file_ioctl, + .unlocked_ioctl = bad_file_unlocked_ioctl, + .compat_ioctl = bad_file_compat_ioctl, + .mmap = bad_file_mmap, + .open = bad_file_open, + .flush = bad_file_flush, + .release = bad_file_release, + .fsync = bad_file_fsync, + .aio_fsync = bad_file_aio_fsync, + .fasync = bad_file_fasync, + .lock = bad_file_lock, + .sendfile = bad_file_sendfile, + .sendpage = bad_file_sendpage, + .get_unmapped_area = bad_file_get_unmapped_area, + .check_flags = bad_file_check_flags, + .dir_notify = bad_file_dir_notify, + .flock = bad_file_flock, }; +static int bad_inode_create (struct inode *dir, struct dentry *dentry, + int mode, struct nameidata *nd) +{ + return -EIO; +} + +static struct dentry *bad_inode_lookup(struct inode *dir, + struct dentry *dentry, struct nameidata *nd) +{ + return ERR_PTR(-EIO); +} + +static int bad_inode_link (struct dentry *old_dentry, struct inode *dir, + struct dentry *dentry) +{ + return -EIO; +} + +static int bad_inode_unlink(struct inode *dir, struct dentry *dentry) +{ + return -EIO; +} + +static int bad_inode_symlink (struct inode *dir, struct dentry *dentry, + const char *symname) +{ + return -EIO; +} + +static int bad_inode_mkdir(struct inode *dir, struct dentry *dentry, + int mode) +{ + return -EIO; +} + +static int bad_inode_rmdir (struct inode *dir, struct dentry *dentry) +{ + return -EIO; +} + +static int bad_inode_mknod (struct inode *dir, struct dentry *dentry, + int mode, dev_t rdev) +{ + return -EIO; +} + +static int bad_inode_rename (struct inode *old_dir, struct dentry *old_dentry, + struct inode *new_dir, struct dentry *new_dentry) +{ + return -EIO; +} + +static int bad_inode_readlink(struct dentry *dentry, char __user *buffer, + int buflen) +{ + return -EIO; +} + +static int bad_inode_permission(struct inode *inode, int mask, + struct nameidata *nd) +{ + return -EIO; +} + +static int bad_inode_getattr(struct vfsmount *mnt, struct dentry *dentry, + struct kstat *stat) +{ + return -EIO; +} + +static int bad_inode_setattr(struct dentry *direntry, struct iattr *attrs) +{ + return -EIO; +} + +static int bad_inode_setxattr(struct dentry *dentry, const char *name, + const void *value, size_t size, int flags) +{ + return -EIO; +} + +static ssize_t bad_inode_getxattr(struct dentry *dentry, const char *name, + void *buffer, size_t size) +{ + return -EIO; +} + +static ssize_t bad_inode_listxattr(struct dentry *dentry, char *buffer, + size_t buffer_size) +{ + return -EIO; +} + +static int bad_inode_removexattr(struct dentry *dentry, const char *name) +{ + return -EIO; +} + static struct inode_operations bad_inode_ops = { - .create = EIO_ERROR, - .lookup = EIO_ERROR, - .link = EIO_ERROR, - .unlink = EIO_ERROR, - .symlink = EIO_ERROR, - .mkdir = EIO_ERROR, - .rmdir = EIO_ERROR, - .mknod = EIO_ERROR, - .rename = EIO_ERROR, - .readlink = EIO_ERROR, + .create = bad_inode_create, + .lookup = bad_inode_lookup, + .link = bad_inode_link, + .unlink = bad_inode_unlink, + .symlink = bad_inode_symlink, + .mkdir = bad_inode_mkdir, + .rmdir = bad_inode_rmdir, + .mknod = bad_inode_mknod, + .rename = bad_inode_rename, + .readlink = bad_inode_readlink, /* follow_link must be no-op, otherwise unmounting this inode won't work */ - .truncate = EIO_ERROR, - .permission = EIO_ERROR, - .getattr = EIO_ERROR, - .setattr = EIO_ERROR, - .setxattr = EIO_ERROR, - .getxattr = EIO_ERROR, - .listxattr = EIO_ERROR, - .removexattr = EIO_ERROR, + /* put_link returns void */ + /* truncate returns void */ + .permission = bad_inode_permission, + .getattr = bad_inode_getattr, + .setattr = bad_inode_setattr, + .setxattr = bad_inode_setxattr, + .getxattr = bad_inode_getxattr, + .listxattr = bad_inode_listxattr, + .removexattr = bad_inode_removexattr, + /* truncate_range returns void */ }; @@ -90,7 +320,7 @@ * on it to fail from this point on. */ -void make_bad_inode(struct inode * inode) +void make_bad_inode(struct inode *inode) { remove_inode_hash(inode); @@ -115,7 +345,7 @@ * Returns true if the inode in question has been marked as bad. */ -int is_bad_inode(struct inode * inode) +int is_bad_inode(struct inode *inode) { return (inode->i_op == &bad_inode_ops); } --- linux-source-2.6.15-2.6.15.orig/fs/minix/itree_v2.c +++ linux-source-2.6.15-2.6.15/fs/minix/itree_v2.c @@ -23,11 +23,17 @@ static int block_to_path(struct inode * inode, long block, int offsets[DEPTH]) { int n = 0; + char b[BDEVNAME_SIZE]; + struct super_block *sb = inode->i_sb; if (block < 0) { - printk("minix_bmap: block<0"); - } else if (block >= (minix_sb(inode->i_sb)->s_max_size/BLOCK_SIZE)) { - printk("minix_bmap: block>big"); + printk("MINIX-fs: block_to_path: block %ld < 0 on dev %s\n", + block, bdevname(sb->s_bdev, b)); + } else if (block >= (minix_sb(inode->i_sb)->s_max_size/sb->s_blocksize)) { + if (printk_ratelimit()) + printk("MINIX-fs: block_to_path: " + "block %ld too big on dev %s\n", + block, bdevname(sb->s_bdev, b)); } else if (block < 7) { offsets[n++] = block; } else if ((block -= 7) < 256) { --- linux-source-2.6.15-2.6.15.orig/fs/minix/itree_v1.c +++ linux-source-2.6.15-2.6.15/fs/minix/itree_v1.c @@ -23,11 +23,16 @@ static int block_to_path(struct inode * inode, long block, int offsets[DEPTH]) { int n = 0; + char b[BDEVNAME_SIZE]; if (block < 0) { - printk("minix_bmap: block<0"); + printk("MINIX-fs: block_to_path: block %ld < 0 on dev %s\n", + block, bdevname(inode->i_sb->s_bdev, b)); } else if (block >= (minix_sb(inode->i_sb)->s_max_size/BLOCK_SIZE)) { - printk("minix_bmap: block>big"); + if (printk_ratelimit()) + printk("MINIX-fs: block_to_path: " + "block %ld too big on dev %s\n", + block, bdevname(inode->i_sb->s_bdev, b)); } else if (block < 7) { offsets[n++] = block; } else if ((block -= 7) < 512) { --- linux-source-2.6.15-2.6.15.orig/fs/namei.c +++ linux-source-2.6.15-2.6.15/fs/namei.c @@ -455,7 +455,14 @@ */ result = d_lookup(parent, name); if (!result) { - struct dentry * dentry = d_alloc(parent, name); + struct dentry *dentry; + + /* Don't create child dentry for a dead directory. */ + result = ERR_PTR(-ENOENT); + if (IS_DEADDIR(dir)) + goto out_unlock; + + dentry = d_alloc(parent, name); result = ERR_PTR(-ENOMEM); if (dentry) { result = dir->i_op->lookup(dir, dentry, nd); @@ -464,6 +471,7 @@ else result = dentry; } +out_unlock: up(&dir->i_sem); return result; } @@ -1192,7 +1200,14 @@ dentry = cached_lookup(base, name, nd); if (!dentry) { - struct dentry *new = d_alloc(base, name); + struct dentry *new; + + /* Don't create child dentry for a dead directory. */ + dentry = ERR_PTR(-ENOENT); + if (IS_DEADDIR(inode)) + goto out; + + new = d_alloc(base, name); dentry = ERR_PTR(-ENOMEM); if (!new) goto out; @@ -1437,7 +1452,7 @@ if (S_ISLNK(inode->i_mode)) return -ELOOP; - if (S_ISDIR(inode->i_mode) && (flag & FMODE_WRITE)) + if (S_ISDIR(inode->i_mode) && (acc_mode & MAY_WRITE)) return -EISDIR; error = vfs_permission(nd, acc_mode); @@ -1456,7 +1471,7 @@ return -EACCES; flag &= ~O_TRUNC; - } else if (IS_RDONLY(inode) && (flag & FMODE_WRITE)) + } else if (IS_RDONLY(inode) && (acc_mode & MAY_WRITE)) return -EROFS; /* * An append-only file must be opened in append mode for writing. --- linux-source-2.6.15-2.6.15.orig/fs/ext3/inode.c +++ linux-source-2.6.15-2.6.15/fs/ext3/inode.c @@ -2257,17 +2257,15 @@ struct buffer_head *bh; struct ext3_group_desc * gdp; - - if ((ino != EXT3_ROOT_INO && - ino != EXT3_JOURNAL_INO && - ino != EXT3_RESIZE_INO && - ino < EXT3_FIRST_INO(sb)) || - ino > le32_to_cpu( - EXT3_SB(sb)->s_es->s_inodes_count)) { - ext3_error (sb, "ext3_get_inode_block", - "bad inode number: %lu", ino); + if (!ext3_valid_inum(sb, ino)) { + /* + * This error is already checked for in namei.c unless we are + * looking at an NFS filehandle, in which case no error + * report is needed + */ return 0; } + block_group = (ino - 1) / EXT3_INODES_PER_GROUP(sb); if (block_group >= EXT3_SB(sb)->s_groups_count) { ext3_error (sb, "ext3_get_inode_block", --- linux-source-2.6.15-2.6.15.orig/fs/ext3/dir.c +++ linux-source-2.6.15-2.6.15/fs/ext3/dir.c @@ -134,6 +134,9 @@ ext3_error (sb, "ext3_readdir", "directory #%lu contains a hole at offset %lu", inode->i_ino, (unsigned long)filp->f_pos); + /* corrupt size? Maybe no more blocks to read */ + if (filp->f_pos > inode->i_blocks << 9) + break; filp->f_pos += sb->s_blocksize - offset; continue; } --- linux-source-2.6.15-2.6.15.orig/fs/ext3/namei.c +++ linux-source-2.6.15-2.6.15/fs/ext3/namei.c @@ -551,6 +551,15 @@ dir->i_sb->s_blocksize - EXT3_DIR_REC_LEN(0)); for (; de < top; de = ext3_next_entry(de)) { + if (!ext3_check_dir_entry("htree_dirblock_to_tree", dir, de, bh, + (block<i_sb)) + +((char *)de - bh->b_data))) { + /* On error, skip the f_pos to the next block. */ + dir_file->f_pos = (dir_file->f_pos | + (dir->i_sb->s_blocksize - 1)) + 1; + brelse (bh); + return count; + } ext3fs_dirhash(de->name, de->name_len, hinfo); if ((hinfo->hash < start_hash) || ((hinfo->hash == start_hash) && @@ -1000,7 +1009,12 @@ if (bh) { unsigned long ino = le32_to_cpu(de->inode); brelse (bh); - inode = iget(dir->i_sb, ino); + if (!ext3_valid_inum(dir->i_sb, ino)) { + ext3_error(dir->i_sb, "ext3_lookup", + "bad inode number: %lu", ino); + inode = NULL; + } else + inode = iget(dir->i_sb, ino); if (!inode) return ERR_PTR(-EACCES); @@ -1031,7 +1045,13 @@ return ERR_PTR(-ENOENT); ino = le32_to_cpu(de->inode); brelse(bh); - inode = iget(child->d_inode->i_sb, ino); + + if (!ext3_valid_inum(child->d_inode->i_sb, ino)) { + ext3_error(child->d_inode->i_sb, "ext3_get_parent", + "bad inode number: %lu", ino); + inode = NULL; + } else + inode = iget(child->d_inode->i_sb, ino); if (!inode) return ERR_PTR(-EACCES); --- linux-source-2.6.15-2.6.15.orig/kernel/sys.c +++ linux-source-2.6.15-2.6.15/kernel/sys.c @@ -1612,42 +1612,58 @@ asmlinkage long sys_setrlimit(unsigned int resource, struct rlimit __user *rlim) { struct rlimit new_rlim, *old_rlim; + unsigned long it_prof_secs; int retval; if (resource >= RLIM_NLIMITS) return -EINVAL; - if(copy_from_user(&new_rlim, rlim, sizeof(*rlim))) + if (copy_from_user(&new_rlim, rlim, sizeof(*rlim))) return -EFAULT; - if (new_rlim.rlim_cur > new_rlim.rlim_max) - return -EINVAL; + if (new_rlim.rlim_cur > new_rlim.rlim_max) + return -EINVAL; old_rlim = current->signal->rlim + resource; if ((new_rlim.rlim_max > old_rlim->rlim_max) && !capable(CAP_SYS_RESOURCE)) return -EPERM; if (resource == RLIMIT_NOFILE && new_rlim.rlim_max > NR_OPEN) - return -EPERM; + return -EPERM; retval = security_task_setrlimit(resource, &new_rlim); if (retval) return retval; + if (resource == RLIMIT_CPU && new_rlim.rlim_cur == 0) { + /* + * The caller is asking for an immediate RLIMIT_CPU + * expiry. But we use the zero value to mean "it was + * never set". So let's cheat and make it one second + * instead + */ + new_rlim.rlim_cur = 1; + } + task_lock(current->group_leader); *old_rlim = new_rlim; task_unlock(current->group_leader); - if (resource == RLIMIT_CPU && new_rlim.rlim_cur != RLIM_INFINITY && - (cputime_eq(current->signal->it_prof_expires, cputime_zero) || - new_rlim.rlim_cur <= cputime_to_secs( - current->signal->it_prof_expires))) { - cputime_t cputime = secs_to_cputime(new_rlim.rlim_cur); + if (resource != RLIMIT_CPU) + goto out; + if (new_rlim.rlim_cur == RLIM_INFINITY) + goto out; + + it_prof_secs = cputime_to_secs(current->signal->it_prof_expires); + if (it_prof_secs == 0 || new_rlim.rlim_cur <= it_prof_secs) { + unsigned long rlim_cur = new_rlim.rlim_cur; + cputime_t cputime; + + cputime = secs_to_cputime(rlim_cur); read_lock(&tasklist_lock); spin_lock_irq(¤t->sighand->siglock); - set_process_cpu_timer(current, CPUCLOCK_PROF, - &cputime, NULL); + set_process_cpu_timer(current, CPUCLOCK_PROF, &cputime, NULL); spin_unlock_irq(¤t->sighand->siglock); read_unlock(&tasklist_lock); } - +out: return 0; } @@ -1779,7 +1795,7 @@ error = current->mm->dumpable; break; case PR_SET_DUMPABLE: - if (arg2 < 0 || arg2 > 2) { + if (arg2 < 0 || arg2 > 1) { error = -EINVAL; break; } --- linux-source-2.6.15-2.6.15.orig/kernel/posix-cpu-timers.c +++ linux-source-2.6.15-2.6.15/kernel/posix-cpu-timers.c @@ -566,9 +566,6 @@ struct cpu_timer_list *next; unsigned long i; - if (CPUCLOCK_PERTHREAD(timer->it_clock) && (p->flags & PF_EXITING)) - return; - head = (CPUCLOCK_PERTHREAD(timer->it_clock) ? p->cpu_timers : p->signal->cpu_timers); head += CPUCLOCK_WHICH(timer->it_clock); @@ -1184,6 +1181,9 @@ } t = tsk; do { + if (unlikely(t->flags & PF_EXITING)) + continue; + ticks = cputime_add(cputime_add(t->utime, t->stime), prof_left); if (!cputime_eq(prof_expires, cputime_zero) && @@ -1204,11 +1204,7 @@ t->it_sched_expires > sched)) { t->it_sched_expires = sched; } - - do { - t = next_thread(t); - } while (unlikely(t->flags & PF_EXITING)); - } while (t != tsk); + } while ((t = next_thread(t)) != tsk); } } @@ -1300,30 +1296,30 @@ #undef UNEXPIRED - BUG_ON(tsk->exit_state); - /* * Double-check with locks held. */ read_lock(&tasklist_lock); - spin_lock(&tsk->sighand->siglock); + if (likely(tsk->signal != NULL)) { + spin_lock(&tsk->sighand->siglock); - /* - * Here we take off tsk->cpu_timers[N] and tsk->signal->cpu_timers[N] - * all the timers that are firing, and put them on the firing list. - */ - check_thread_timers(tsk, &firing); - check_process_timers(tsk, &firing); + /* + * Here we take off tsk->cpu_timers[N] and tsk->signal->cpu_timers[N] + * all the timers that are firing, and put them on the firing list. + */ + check_thread_timers(tsk, &firing); + check_process_timers(tsk, &firing); - /* - * We must release these locks before taking any timer's lock. - * There is a potential race with timer deletion here, as the - * siglock now protects our private firing list. We have set - * the firing flag in each timer, so that a deletion attempt - * that gets the timer lock before we do will give it up and - * spin until we've taken care of that timer below. - */ - spin_unlock(&tsk->sighand->siglock); + /* + * We must release these locks before taking any timer's lock. + * There is a potential race with timer deletion here, as the + * siglock now protects our private firing list. We have set + * the firing flag in each timer, so that a deletion attempt + * that gets the timer lock before we do will give it up and + * spin until we've taken care of that timer below. + */ + spin_unlock(&tsk->sighand->siglock); + } read_unlock(&tasklist_lock); /* --- linux-source-2.6.15-2.6.15.orig/kernel/ptrace.c +++ linux-source-2.6.15-2.6.15/kernel/ptrace.c @@ -151,12 +151,34 @@ int ptrace_attach(struct task_struct *task) { int retval; - task_lock(task); + retval = -EPERM; if (task->pid <= 1) - goto bad; + goto out; if (task->tgid == current->tgid) - goto bad; + goto out; + +repeat: + /* + * Nasty, nasty. + * + * We want to hold both the task-lock and the + * tasklist_lock for writing at the same time. + * But that's against the rules (tasklist_lock + * is taken for reading by interrupts on other + * cpu's that may have task_lock). + */ + task_lock(task); + local_irq_disable(); + if (!write_trylock(&tasklist_lock)) { + local_irq_enable(); + task_unlock(task); + do { + cpu_relax(); + } while (!write_can_lock(&tasklist_lock)); + goto repeat; + } + /* the same process cannot be attached many times */ if (task->ptrace & PT_PTRACED) goto bad; @@ -169,17 +191,15 @@ ? PT_ATTACHED : 0); if (capable(CAP_SYS_PTRACE)) task->ptrace |= PT_PTRACE_CAP; - task_unlock(task); - write_lock_irq(&tasklist_lock); __ptrace_link(task, current); - write_unlock_irq(&tasklist_lock); force_sig_specific(SIGSTOP, task); - return 0; bad: + write_unlock_irq(&tasklist_lock); task_unlock(task); +out: return retval; } @@ -427,19 +447,22 @@ *childp = NULL; if (request == PTRACE_TRACEME) { + ret = -EPERM; /* * Are we already being traced? */ - if (current->ptrace & PT_PTRACED) - return -EPERM; - ret = security_ptrace(current->parent, current); - if (ret) - return -EPERM; - /* - * Set the ptrace bit in the process ptrace flags. - */ - current->ptrace |= PT_PTRACED; - return 0; + task_lock(current); + if (!(current->ptrace & PT_PTRACED)) { + ret = security_ptrace(current->parent, current); + /* + * Set the ptrace bit in the process ptrace flags. + */ + if (!ret) + current->ptrace |= PT_PTRACED; + } + task_unlock(current); + if (!ret) + return ret; } /* --- linux-source-2.6.15-2.6.15.orig/kernel/exit.c +++ linux-source-2.6.15-2.6.15/kernel/exit.c @@ -822,14 +822,6 @@ tsk->flags |= PF_EXITING; - /* - * Make sure we don't try to process any timer firings - * while we are already exiting. - */ - tsk->it_virt_expires = cputime_zero; - tsk->it_prof_expires = cputime_zero; - tsk->it_sched_expires = 0; - if (unlikely(in_atomic())) printk(KERN_INFO "note: %s[%d] exited with preempt_count %d\n", current->comm, current->pid, @@ -1208,8 +1200,7 @@ int why = (p->ptrace & PT_PTRACED) ? CLD_TRAPPED : CLD_STOPPED; exit_code = p->exit_code; - if (unlikely(!exit_code) || - unlikely(p->state & TASK_TRACED)) + if (unlikely(!exit_code) || unlikely(p->exit_state)) goto bail_ref; return wait_noreap_copyout(p, pid, uid, why, (exit_code << 8) | 0x7f, --- linux-source-2.6.15-2.6.15.orig/kernel/configs.c +++ linux-source-2.6.15-2.6.15/kernel/configs.c @@ -62,18 +62,9 @@ ikconfig_read_current(struct file *file, char __user *buf, size_t len, loff_t * offset) { - loff_t pos = *offset; - ssize_t count; - - if (pos >= kernel_config_data_size) - return 0; - - count = min(len, (size_t)(kernel_config_data_size - pos)); - if (copy_to_user(buf, kernel_config_data + MAGIC_SIZE + pos, count)) - return -EFAULT; - - *offset += count; - return count; + return simple_read_from_buffer(buf, len, offset, + kernel_config_data + MAGIC_SIZE, + kernel_config_data_size); } static struct file_operations ikconfig_file_ops = { --- linux-source-2.6.15-2.6.15.orig/kernel/sched.c +++ linux-source-2.6.15-2.6.15/kernel/sched.c @@ -5159,11 +5159,31 @@ } #endif +#ifdef CONFIG_SCHED_MC +static DEFINE_PER_CPU(struct sched_domain, core_domains); +static struct sched_group sched_group_core[NR_CPUS]; +#endif + +#if defined(CONFIG_SCHED_MC) && defined(CONFIG_SCHED_SMT) +static int cpu_to_core_group(int cpu) +{ + return first_cpu(cpu_sibling_map[cpu]); +} +#elif defined(CONFIG_SCHED_MC) +static int cpu_to_core_group(int cpu) +{ + return cpu; +} +#endif + static DEFINE_PER_CPU(struct sched_domain, phys_domains); static struct sched_group sched_group_phys[NR_CPUS]; static int cpu_to_phys_group(int cpu) { -#ifdef CONFIG_SCHED_SMT +#if defined(CONFIG_SCHED_MC) + cpumask_t mask = cpu_coregroup_map(cpu); + return first_cpu(mask); +#elif defined(CONFIG_SCHED_SMT) return first_cpu(cpu_sibling_map[cpu]); #else return cpu; @@ -5261,6 +5281,17 @@ sd->parent = p; sd->groups = &sched_group_phys[group]; +#ifdef CONFIG_SCHED_MC + p = sd; + sd = &per_cpu(core_domains, i); + group = cpu_to_core_group(i); + *sd = SD_MC_INIT; + sd->span = cpu_coregroup_map(i); + cpus_and(sd->span, sd->span, *cpu_map); + sd->parent = p; + sd->groups = &sched_group_core[group]; +#endif + #ifdef CONFIG_SCHED_SMT p = sd; sd = &per_cpu(cpu_domains, i); @@ -5286,6 +5317,19 @@ } #endif +#ifdef CONFIG_SCHED_MC + /* Set up multi-core groups */ + for_each_cpu_mask(i, *cpu_map) { + cpumask_t this_core_map = cpu_coregroup_map(i); + cpus_and(this_core_map, this_core_map, *cpu_map); + if (i != first_cpu(this_core_map)) + continue; + init_sched_build_groups(sched_group_core, this_core_map, + &cpu_to_core_group); + } +#endif + + /* Set up physical groups */ for (i = 0; i < MAX_NUMNODES; i++) { cpumask_t nodemask = node_to_cpumask(i); @@ -5382,11 +5426,31 @@ power = SCHED_LOAD_SCALE; sd->groups->cpu_power = power; #endif +#ifdef CONFIG_SCHED_MC + sd = &per_cpu(core_domains, i); + power = SCHED_LOAD_SCALE + (cpus_weight(sd->groups->cpumask)-1) + * SCHED_LOAD_SCALE / 10; + sd->groups->cpu_power = power; + + sd = &per_cpu(phys_domains, i); + /* + * This has to be < 2 * SCHED_LOAD_SCALE + * Lets keep it SCHED_LOAD_SCALE, so that + * while calculating NUMA group's cpu_power + * we can simply do + * numa_group->cpu_power += phys_group->cpu_power; + * + * See "only add power once for each physical pkg" + * comment below + */ + sd->groups->cpu_power = SCHED_LOAD_SCALE; +#else sd = &per_cpu(phys_domains, i); power = SCHED_LOAD_SCALE + SCHED_LOAD_SCALE * (cpus_weight(sd->groups->cpumask)-1) / 10; sd->groups->cpu_power = power; +#endif #ifdef CONFIG_NUMA sd = &per_cpu(allnodes_domains, i); @@ -5408,7 +5472,6 @@ next_sg: for_each_cpu_mask(j, sg->cpumask) { struct sched_domain *sd; - int power; sd = &per_cpu(phys_domains, j); if (j != first_cpu(sd->groups->cpumask)) { @@ -5418,10 +5481,8 @@ */ continue; } - power = SCHED_LOAD_SCALE + SCHED_LOAD_SCALE * - (cpus_weight(sd->groups->cpumask)-1) / 10; - sg->cpu_power += power; + sg->cpu_power += sd->groups->cpu_power; } sg = sg->next; if (sg != sched_group_nodes[i]) @@ -5434,6 +5495,8 @@ struct sched_domain *sd; #ifdef CONFIG_SCHED_SMT sd = &per_cpu(cpu_domains, i); +#elif defined(CONFIG_SCHED_MC) + sd = &per_cpu(core_domains, i); #else sd = &per_cpu(phys_domains, i); #endif --- linux-source-2.6.15-2.6.15.orig/kernel/cpuset.c +++ linux-source-2.6.15-2.6.15/kernel/cpuset.c @@ -1351,12 +1351,7 @@ { struct ctr_struct *ctr = file->private_data; - if (*ppos + nbytes > ctr->bufsz) - nbytes = ctr->bufsz - *ppos; - if (copy_to_user(buf, ctr->buf + *ppos, nbytes)) - return -EFAULT; - *ppos += nbytes; - return nbytes; + return simple_read_from_buffer(buf, nbytes, ppos, ctr->buf, ctr->bufsz); } static int cpuset_tasks_release(struct inode *unused_inode, struct file *file) --- linux-source-2.6.15-2.6.15.orig/arch/i386/kernel/acpi/boot.c +++ linux-source-2.6.15-2.6.15/arch/i386/kernel/acpi/boot.c @@ -215,7 +215,7 @@ { struct acpi_table_madt *madt = NULL; - if (!phys_addr || !size) + if (!phys_addr || !size || !cpu_has_apic) return -EINVAL; madt = (struct acpi_table_madt *)__acpi_map_table(phys_addr, size); @@ -750,6 +750,8 @@ if (acpi_disabled || acpi_noirq) { return -ENODEV; } + if (!cpu_has_apic) + return -ENODEV; /* * if "noapic" boot option, don't look for IO-APICs @@ -922,7 +924,15 @@ DMI_MATCH(DMI_BOARD_NAME, "2629H1G"), }, }, - + { + .callback = dmi_disable_acpi, + .ident = "Phoenix Technologies", + .matches = { + DMI_MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies, LTD"), + DMI_MATCH(DMI_BIOS_VERSION, "6.00 PG"), + DMI_MATCH(DMI_BIOS_DATE, "11/05/2003"), + }, + }, /* * Boxes that need acpi=ht */ @@ -1055,6 +1065,14 @@ DMI_MATCH(DMI_BIOS_VERSION, "0306"), } }, + { + .callback = disable_acpi_irq, + .ident = "Averatec 3200", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "AVERATEC"), + DMI_MATCH(DMI_BOARD_NAME, "3200"), + } + }, /* * Boxes that need ACPI PCI IRQ routing and PCI scan disabled --- linux-source-2.6.15-2.6.15.orig/arch/i386/kernel/time.c +++ linux-source-2.6.15-2.6.15/arch/i386/kernel/time.c @@ -302,6 +302,12 @@ do_timer_interrupt(irq, regs); write_sequnlock(&xtime_lock); + +#ifdef CONFIG_X86_LOCAL_APIC + if (using_apic_timer) + smp_send_timer_broadcast_ipi(regs); +#endif + return IRQ_HANDLED; } --- linux-source-2.6.15-2.6.15.orig/arch/i386/kernel/ptrace.c +++ linux-source-2.6.15-2.6.15/arch/i386/kernel/ptrace.c @@ -169,14 +169,22 @@ u32 *desc; unsigned long base; - down(&child->mm->context.sem); - desc = child->mm->context.ldt + (seg & ~7); - base = (desc[0] >> 16) | ((desc[1] & 0xff) << 16) | (desc[1] & 0xff000000); + seg &= ~7UL; - /* 16-bit code segment? */ - if (!((desc[1] >> 22) & 1)) - addr &= 0xffff; - addr += base; + down(&child->mm->context.sem); + if (unlikely((seg >> 3) >= child->mm->context.size)) + addr = -1L; /* bogus selector, access would fault */ + else { + desc = child->mm->context.ldt + seg; + base = ((desc[0] >> 16) | + ((desc[1] & 0xff) << 16) | + (desc[1] & 0xff000000)); + + /* 16-bit code segment? */ + if (!((desc[1] >> 22) & 1)) + addr &= 0xffff; + addr += base; + } up(&child->mm->context.sem); } return addr; --- linux-source-2.6.15-2.6.15.orig/arch/i386/kernel/alternative.c +++ linux-source-2.6.15-2.6.15/arch/i386/kernel/alternative.c @@ -308,10 +308,14 @@ void __init alternative_instructions(void) { + unsigned long flags; + + local_irq_save(flags); + apply_alternatives(__alt_instructions, __alt_instructions_end); if (smp_alt_disable) - return; + goto out; /* switch to patch-once-at-boottime-only mode and free the * tables in case we know the number of CPUs will never ever @@ -343,4 +347,7 @@ _text, _etext); alternatives_smp_switch(0); } + +out: + local_irq_restore(flags); } --- linux-source-2.6.15-2.6.15.orig/arch/i386/kernel/process.c +++ linux-source-2.6.15-2.6.15/arch/i386/kernel/process.c @@ -606,6 +606,7 @@ static inline void disable_tsc(struct task_struct *prev_p, struct task_struct *next_p) { +#ifdef CONFIG_SECCOMP_DISABLE_TSC struct thread_info *prev, *next; /* @@ -624,6 +625,7 @@ has_secure_computing(next)) write_cr4(read_cr4() | X86_CR4_TSD); } +#endif } /* --- linux-source-2.6.15-2.6.15.orig/arch/i386/kernel/smpboot.c +++ linux-source-2.6.15-2.6.15/arch/i386/kernel/smpboot.c @@ -72,6 +72,9 @@ /* Core ID of each logical CPU */ int cpu_core_id[NR_CPUS] __read_mostly = {[0 ... NR_CPUS-1] = BAD_APICID}; +/* Last level cache ID of each logical CPU */ +int cpu_llc_id[NR_CPUS] __cpuinitdata = {[0 ... NR_CPUS-1] = BAD_APICID}; + /* representing HT siblings of each logical CPU */ cpumask_t cpu_sibling_map[NR_CPUS] __read_mostly; EXPORT_SYMBOL(cpu_sibling_map); @@ -444,6 +447,18 @@ static int cpucount; +/* maps the cpu to the sched domain representing multi-core */ +cpumask_t cpu_coregroup_map(int cpu) +{ + struct cpuinfo_x86 *c = cpu_data + cpu; + /* + * For perf, we return last level cache shared map. + * TBD: when power saving sched policy is added, we will return + * cpu_core_map when power saving policy is enabled + */ + return c->llc_shared_map; +} + /* representing cpus for which sibling maps can be computed */ static cpumask_t cpu_sibling_setup_map; @@ -463,12 +478,16 @@ cpu_set(cpu, cpu_sibling_map[i]); cpu_set(i, cpu_core_map[cpu]); cpu_set(cpu, cpu_core_map[i]); + cpu_set(i, c[cpu].llc_shared_map); + cpu_set(cpu, c[i].llc_shared_map); } } } else { cpu_set(cpu, cpu_sibling_map[cpu]); } + cpu_set(cpu, c[cpu].llc_shared_map); + if (current_cpu_data.x86_max_cores == 1) { cpu_core_map[cpu] = cpu_sibling_map[cpu]; c[cpu].booted_cores = 1; @@ -476,6 +495,11 @@ } for_each_cpu_mask(i, cpu_sibling_setup_map) { + if (cpu_llc_id[cpu] != BAD_APICID && + cpu_llc_id[cpu] == cpu_llc_id[i]) { + cpu_set(i, c[cpu].llc_shared_map); + cpu_set(cpu, c[i].llc_shared_map); + } if (phys_proc_id[cpu] == phys_proc_id[i]) { cpu_set(i, cpu_core_map[cpu]); cpu_set(cpu, cpu_core_map[i]); --- linux-source-2.6.15-2.6.15.orig/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c +++ linux-source-2.6.15-2.6.15/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c @@ -75,7 +75,9 @@ __asm__ __volatile__( "out %%al, (%%dx)\n" : "=D" (result) - : "a" (command), "b" (function), "c" (0), "d" (smi_port), "D" (0), "S" (magic) + : "a" (command), "b" (function), "c" (0), "d" (smi_port), + "D" (0), "S" (magic) + : "memory" ); dprintk("result is %x\n", result); --- linux-source-2.6.15-2.6.15.orig/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c +++ linux-source-2.6.15-2.6.15/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c @@ -247,7 +247,7 @@ else p4clockmod_table[i].frequency = (stock_freq * i)/8; - if (has_N60_errata[policy->cpu] && p4clockmod_table[i].frequency < 2000000) + if (has_N60_errata[policy->cpu] && p4clockmod_table[i].frequency < 700000) p4clockmod_table[i].frequency = CPUFREQ_ENTRY_INVALID; } cpufreq_frequency_table_get_attr(p4clockmod_table, policy->cpu); --- linux-source-2.6.15-2.6.15.orig/arch/i386/kernel/cpu/amd.c +++ linux-source-2.6.15-2.6.15/arch/i386/kernel/cpu/amd.c @@ -202,6 +202,8 @@ set_bit(X86_FEATURE_K7, c->x86_capability); break; } + if (c->x86 >= 6) + set_bit(X86_FEATURE_FXSAVE_LEAK, c->x86_capability); display_cacheinfo(c); --- linux-source-2.6.15-2.6.15.orig/arch/i386/kernel/cpu/common.c +++ linux-source-2.6.15-2.6.15/arch/i386/kernel/cpu/common.c @@ -244,7 +244,7 @@ void __devinit generic_identify(struct cpuinfo_x86 * c) { u32 tfms, xlvl; - int junk; + int ebx; if (have_cpuid_p()) { /* Get vendor name */ @@ -260,7 +260,7 @@ /* Intel-defined flags: level 0x00000001 */ if ( c->cpuid_level >= 0x00000001 ) { u32 capability, excap; - cpuid(0x00000001, &tfms, &junk, &excap, &capability); + cpuid(0x00000001, &tfms, &ebx, &excap, &capability); c->x86_capability[0] = capability; c->x86_capability[4] = excap; c->x86 = (tfms >> 8) & 15; @@ -270,6 +270,11 @@ c->x86_model += ((tfms >> 16) & 0xF) << 4; } c->x86_mask = tfms & 15; +#ifdef CONFIG_SMP + c->apicid = phys_pkg_id((ebx >> 24) & 0xFF, 0); +#else + c->apicid = (ebx >> 24) & 0xFF; +#endif } else { /* Have CPUID level 0 only - unheard of */ c->x86 = 4; @@ -449,7 +454,6 @@ cpuid(1, &eax, &ebx, &ecx, &edx); - c->apicid = phys_pkg_id((ebx >> 24) & 0xFF, 0); if (!cpu_has(c, X86_FEATURE_HT) || cpu_has(c, X86_FEATURE_CMP_LEGACY)) return; --- linux-source-2.6.15-2.6.15.orig/arch/i386/kernel/cpu/intel_cacheinfo.c +++ linux-source-2.6.15-2.6.15/arch/i386/kernel/cpu/intel_cacheinfo.c @@ -161,6 +161,10 @@ unsigned int trace = 0, l1i = 0, l1d = 0, l2 = 0, l3 = 0; /* Cache sizes */ unsigned int new_l1d = 0, new_l1i = 0; /* Cache sizes from cpuid(4) */ unsigned int new_l2 = 0, new_l3 = 0, i; /* Cache sizes from cpuid(4) */ + unsigned int l2_id = 0, l3_id = 0, num_threads_sharing, index_msb; +#ifdef CONFIG_SMP + unsigned int cpu = (c == &boot_cpu_data) ? 0 : (c - cpu_data); +#endif if (c->cpuid_level > 4) { static int is_initialized; @@ -193,9 +197,15 @@ break; case 2: new_l2 = this_leaf.size/1024; + num_threads_sharing = 1 + this_leaf.eax.split.num_threads_sharing; + index_msb = get_count_order(num_threads_sharing); + l2_id = c->apicid >> index_msb; break; case 3: new_l3 = this_leaf.size/1024; + num_threads_sharing = 1 + this_leaf.eax.split.num_threads_sharing; + index_msb = get_count_order(num_threads_sharing); + l3_id = c->apicid >> index_msb; break; default: break; @@ -261,11 +271,19 @@ if (new_l1i) l1i = new_l1i; - if (new_l2) + if (new_l2) { l2 = new_l2; +#ifdef CONFIG_SMP + cpu_llc_id[cpu] = l2_id; +#endif + } - if (new_l3) + if (new_l3) { l3 = new_l3; +#ifdef CONFIG_SMP + cpu_llc_id[cpu] = l3_id; +#endif + } if ( trace ) printk (KERN_INFO "CPU: Trace cache: %dK uops", trace); --- linux-source-2.6.15-2.6.15.orig/arch/i386/kernel/traps.c +++ linux-source-2.6.15-2.6.15/arch/i386/kernel/traps.c @@ -409,10 +409,12 @@ do_trap(trapnr, signr, str, 0, regs, error_code, NULL); \ } -#define DO_ERROR_INFO(trapnr, signr, str, name, sicode, siaddr) \ +#define DO_ERROR_INFO(trapnr, signr, str, name, sicode, siaddr, irq) \ fastcall void do_##name(struct pt_regs * regs, long error_code) \ { \ siginfo_t info; \ + if (irq) \ + local_irq_enable(); \ info.si_signo = signr; \ info.si_errno = 0; \ info.si_code = sicode; \ @@ -452,13 +454,13 @@ #endif DO_VM86_ERROR( 4, SIGSEGV, "overflow", overflow) DO_VM86_ERROR( 5, SIGSEGV, "bounds", bounds) -DO_ERROR_INFO( 6, SIGILL, "invalid operand", invalid_op, ILL_ILLOPN, regs->eip) +DO_ERROR_INFO( 6, SIGILL, "invalid operand", invalid_op, ILL_ILLOPN, regs->eip, 0) DO_ERROR( 9, SIGFPE, "coprocessor segment overrun", coprocessor_segment_overrun) DO_ERROR(10, SIGSEGV, "invalid TSS", invalid_TSS) DO_ERROR(11, SIGBUS, "segment not present", segment_not_present) DO_ERROR(12, SIGBUS, "stack segment", stack_segment) -DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0) -DO_ERROR_INFO(32, SIGSEGV, "iret exception", iret_error, ILL_BADSTK, 0) +DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0, 0) +DO_ERROR_INFO(32, SIGSEGV, "iret exception", iret_error, ILL_BADSTK, 0, 1) fastcall void __kprobes do_general_protection(struct pt_regs * regs, long error_code) --- linux-source-2.6.15-2.6.15.orig/arch/i386/kernel/apic.c +++ linux-source-2.6.15-2.6.15/arch/i386/kernel/apic.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -37,10 +38,17 @@ #include #include +#include #include "io_ports.h" /* + * cpu_mask that denotes the CPUs that needs timer interrupt coming in as + * IPIs in place of local APIC timers + */ +static cpumask_t timer_bcast_ipi; + +/* * Knob to control our willingness to enable the local APIC. * -2=default-disable, -1=force-disable, 1=force-enable, 0=automatic */ @@ -93,10 +101,6 @@ /* Using APIC to generate smp_local_timer_interrupt? */ int using_apic_timer = 0; -static DEFINE_PER_CPU(int, prof_multiplier) = 1; -static DEFINE_PER_CPU(int, prof_old_multiplier) = 1; -static DEFINE_PER_CPU(int, prof_counter) = 1; - static int enabled_via_apicbase; void enable_NMI_through_LVT0 (void * dummy) @@ -936,11 +940,16 @@ static void __setup_APIC_LVTT(unsigned int clocks) { unsigned int lvtt_value, tmp_value, ver; + int cpu = smp_processor_id(); ver = GET_APIC_VERSION(apic_read(APIC_LVR)); lvtt_value = APIC_LVT_TIMER_PERIODIC | LOCAL_TIMER_VECTOR; if (!APIC_INTEGRATED(ver)) lvtt_value |= SET_APIC_TIMER_BASE(APIC_TIMER_BASE_DIV); + + if (cpu_isset(cpu, timer_bcast_ipi)) + lvtt_value |= APIC_LVT_MASKED; + apic_write_around(APIC_LVTT, lvtt_value); /* @@ -1073,7 +1082,7 @@ setup_APIC_timer(calibration_result); } -void __devinit disable_APIC_timer(void) +void disable_APIC_timer(void) { if (using_apic_timer) { unsigned long v; @@ -1085,7 +1094,10 @@ void enable_APIC_timer(void) { - if (using_apic_timer) { + int cpu = smp_processor_id(); + + if (using_apic_timer && + !cpu_isset(cpu, timer_bcast_ipi)) { unsigned long v; v = apic_read(APIC_LVTT); @@ -1093,33 +1105,31 @@ } } -/* - * the frequency of the profiling timer can be changed - * by writing a multiplier value into /proc/profile. - */ -int setup_profiling_timer(unsigned int multiplier) +void switch_APIC_timer_to_ipi(void *cpumask) { - int i; + cpumask_t mask = *(cpumask_t *)cpumask; + int cpu = smp_processor_id(); - /* - * Sanity check. [at least 500 APIC cycles should be - * between APIC interrupts as a rule of thumb, to avoid - * irqs flooding us] - */ - if ( (!multiplier) || (calibration_result/multiplier < 500)) - return -EINVAL; - - /* - * Set the new multiplier for each CPU. CPUs don't start using the - * new values until the next timer interrupt in which they do process - * accounting. At that time they also adjust their APIC timers - * accordingly. - */ - for (i = 0; i < NR_CPUS; ++i) - per_cpu(prof_multiplier, i) = multiplier; + if (cpu_isset(cpu, mask) && + !cpu_isset(cpu, timer_bcast_ipi)) { + disable_APIC_timer(); + cpu_set(cpu, timer_bcast_ipi); + } +} +EXPORT_SYMBOL(switch_APIC_timer_to_ipi); - return 0; +void switch_ipi_to_APIC_timer(void *cpumask) +{ + cpumask_t mask = *(cpumask_t *)cpumask; + int cpu = smp_processor_id(); + + if (cpu_isset(cpu, mask) && + cpu_isset(cpu, timer_bcast_ipi)) { + cpu_clear(cpu, timer_bcast_ipi); + enable_APIC_timer(); + } } +EXPORT_SYMBOL(switch_ipi_to_APIC_timer); #undef APIC_DIVISOR @@ -1135,32 +1145,10 @@ inline void smp_local_timer_interrupt(struct pt_regs * regs) { - int cpu = smp_processor_id(); - profile_tick(CPU_PROFILING, regs); - if (--per_cpu(prof_counter, cpu) <= 0) { - /* - * The multiplier may have changed since the last time we got - * to this point as a result of the user writing to - * /proc/profile. In this case we need to adjust the APIC - * timer accordingly. - * - * Interrupts are already masked off at this point. - */ - per_cpu(prof_counter, cpu) = per_cpu(prof_multiplier, cpu); - if (per_cpu(prof_counter, cpu) != - per_cpu(prof_old_multiplier, cpu)) { - __setup_APIC_LVTT( - calibration_result/ - per_cpu(prof_counter, cpu)); - per_cpu(prof_old_multiplier, cpu) = - per_cpu(prof_counter, cpu); - } - #ifdef CONFIG_SMP - update_process_times(user_mode_vm(regs)); + update_process_times(user_mode_vm(regs)); #endif - } /* * We take the 'long' return path, and there every subsystem @@ -1207,6 +1195,43 @@ irq_exit(); } +#ifndef CONFIG_SMP +static void up_apic_timer_interrupt_call(struct pt_regs *regs) +{ + int cpu = smp_processor_id(); + + /* + * the NMI deadlock-detector uses this. + */ + per_cpu(irq_stat, cpu).apic_timer_irqs++; + + smp_local_timer_interrupt(regs); +} +#endif + +void smp_send_timer_broadcast_ipi(struct pt_regs *regs) +{ + cpumask_t mask; + + cpus_and(mask, cpu_online_map, timer_bcast_ipi); + if (!cpus_empty(mask)) { +#ifdef CONFIG_SMP + send_IPI_mask(mask, LOCAL_TIMER_VECTOR); +#else + /* + * We can directly call the apic timer interrupt handler + * in UP case. Minus all irq related functions + */ + up_apic_timer_interrupt_call(regs); +#endif + } +} + +int setup_profiling_timer(unsigned int multiplier) +{ + return -EINVAL; +} + /* * This interrupt should _never_ happen with our APIC/SMP architecture */ --- linux-source-2.6.15-2.6.15.orig/arch/i386/kernel/entry.S +++ linux-source-2.6.15-2.6.15/arch/i386/kernel/entry.S @@ -128,6 +128,8 @@ call schedule_tail GET_THREAD_INFO(%ebp) popl %eax + pushl $0x0202 # Reset kernel eflags + popfl jmp syscall_exit /* @@ -259,7 +261,6 @@ 1: iret .section .fixup,"ax" iret_exc: - sti pushl $0 # no error code pushl $do_iret_error jmp error_code --- linux-source-2.6.15-2.6.15.orig/arch/i386/Kconfig +++ linux-source-2.6.15-2.6.15/arch/i386/Kconfig @@ -244,6 +244,15 @@ which can be modified by using the smp-alt-disable or smp-alt-enable kernel command line options. +config SCHED_MC + bool "Multi-core scheduler support" + depends on SMP + default y + help + Multi-core scheduler support improves the CPU scheduler's decision + making when dealing with multi-core CPU chips at a cost of slightly + increased overhead in some places. If unsure say N here. + source "kernel/Kconfig.preempt" config X86_UP_APIC @@ -698,6 +707,18 @@ If unsure, say Y. Only embedded should say N here. +config SECCOMP_DISABLE_TSC + bool "Disable the TSC for seccomp tasks" + depends on SECCOMP + default n + help + This feature mathematically prevents covert channels + for tasks running under SECCOMP. This can generate + a minuscule overhead in the scheduler. + + If you care most about performance say N. Say Y only if you're + paranoid about covert channels. + source kernel/Kconfig.hz config PHYSICAL_START --- linux-source-2.6.15-2.6.15.orig/arch/ia64/kernel/unaligned.c +++ linux-source-2.6.15-2.6.15/arch/ia64/kernel/unaligned.c @@ -1462,16 +1462,19 @@ case LDFA_OP: case LDFCCLR_OP: case LDFCNC_OP: - case LDF_IMM_OP: - case LDFA_IMM_OP: - case LDFCCLR_IMM_OP: - case LDFCNC_IMM_OP: if (u.insn.x) ret = emulate_load_floatpair(ifa, u.insn, regs); else ret = emulate_load_float(ifa, u.insn, regs); break; + case LDF_IMM_OP: + case LDFA_IMM_OP: + case LDFCCLR_IMM_OP: + case LDFCNC_IMM_OP: + ret = emulate_load_float(ifa, u.insn, regs); + break; + case STF_OP: case STF_IMM_OP: ret = emulate_store_float(ifa, u.insn, regs); --- linux-source-2.6.15-2.6.15.orig/arch/ia64/kernel/sys_ia64.c +++ linux-source-2.6.15-2.6.15/arch/ia64/kernel/sys_ia64.c @@ -164,10 +164,25 @@ return retval; } +int ia64_mmap_check(unsigned long addr, unsigned long len, + unsigned long flags) +{ + unsigned long roff; + + /* + * Don't permit mappings into unmapped space, the virtual page table + * of a region, or across a region boundary. Note: RGN_MAP_LIMIT is + * equal to 2^n-PAGE_SIZE (for some integer n <= 61) and len > 0. + */ + roff = REGION_OFFSET(addr); + if ((len > RGN_MAP_LIMIT) || (roff > (RGN_MAP_LIMIT - len))) + return -EINVAL; + return 0; +} + static inline unsigned long do_mmap2 (unsigned long addr, unsigned long len, int prot, int flags, int fd, unsigned long pgoff) { - unsigned long roff; struct file *file = NULL; flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); @@ -189,17 +204,6 @@ goto out; } - /* - * Don't permit mappings into unmapped space, the virtual page table of a region, - * or across a region boundary. Note: RGN_MAP_LIMIT is equal to 2^n-PAGE_SIZE - * (for some integer n <= 61) and len > 0. - */ - roff = REGION_OFFSET(addr); - if ((len > RGN_MAP_LIMIT) || (roff > (RGN_MAP_LIMIT - len))) { - addr = -EINVAL; - goto out; - } - down_write(¤t->mm->mmap_sem); addr = do_mmap_pgoff(file, addr, len, prot, flags, pgoff); up_write(¤t->mm->mmap_sem); --- linux-source-2.6.15-2.6.15.orig/arch/sparc64/mm/init.c +++ linux-source-2.6.15-2.6.15/arch/sparc64/mm/init.c @@ -101,8 +101,6 @@ prom_halt(); } - *num_ents = ents; - /* Sanitize what we got from the firmware, by page aligning * everything. */ @@ -124,6 +122,25 @@ regs[i].phys_addr = base; regs[i].reg_size = size; } + + for (i = 0; i < ents; i++) { + if (regs[i].reg_size == 0UL) { + int j; + + for (j = i; j < ents - 1; j++) { + regs[j].phys_addr = + regs[j+1].phys_addr; + regs[j].reg_size = + regs[j+1].reg_size; + } + + ents--; + i--; + } + } + + *num_ents = ents; + sort(regs, ents, sizeof(struct linux_prom64_registers), cmp_p64, NULL); } @@ -1376,7 +1393,7 @@ while (old_start < old_end) { int n; - for (n = 0; pavail_rescan_ents; n++) { + for (n = 0; n < pavail_rescan_ents; n++) { unsigned long new_start, new_end; new_start = pavail_rescan[n].phys_addr; @@ -1398,6 +1415,32 @@ } } +int __init page_in_phys_avail(unsigned long paddr) +{ + int i; + + paddr &= PAGE_MASK; + + for (i = 0; i < pavail_rescan_ents; i++) { + unsigned long start, end; + + start = pavail_rescan[i].phys_addr; + end = start + pavail_rescan[i].reg_size; + + if (paddr >= start && paddr < end) + return 1; + } + if (paddr >= kern_base && paddr < (kern_base + kern_size)) + return 1; +#ifdef CONFIG_BLK_DEV_INITRD + if (paddr >= __pa(initrd_start) && + paddr < __pa(PAGE_ALIGN(initrd_end))) + return 1; +#endif + + return 0; +} + void __init mem_init(void) { unsigned long codepages, datapages, initpages; --- linux-source-2.6.15-2.6.15.orig/arch/sparc64/kernel/sys_sparc.c +++ linux-source-2.6.15-2.6.15/arch/sparc64/kernel/sys_sparc.c @@ -549,6 +549,26 @@ return ret; } +int sparc64_mmap_check(unsigned long addr, unsigned long len, + unsigned long flags) +{ + if (test_thread_flag(TIF_32BIT)) { + if (len >= STACK_TOP32) + return -EINVAL; + + if (addr > STACK_TOP32 - len) + return -EINVAL; + } else { + if (len >= VA_EXCLUDE_START) + return -EINVAL; + + if (invalid_64bit_range(addr, len)) + return -EINVAL; + } + + return 0; +} + /* Linux version of mmap */ asmlinkage unsigned long sys_mmap(unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long fd, @@ -564,27 +584,11 @@ } flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); len = PAGE_ALIGN(len); - retval = -EINVAL; - - if (test_thread_flag(TIF_32BIT)) { - if (len >= STACK_TOP32) - goto out_putf; - - if ((flags & MAP_FIXED) && addr > STACK_TOP32 - len) - goto out_putf; - } else { - if (len >= VA_EXCLUDE_START) - goto out_putf; - - if ((flags & MAP_FIXED) && invalid_64bit_range(addr, len)) - goto out_putf; - } down_write(¤t->mm->mmap_sem); retval = do_mmap(file, addr, len, prot, flags, off); up_write(¤t->mm->mmap_sem); -out_putf: if (file) fput(file); out: --- linux-source-2.6.15-2.6.15.orig/arch/sparc64/kernel/traps.c +++ linux-source-2.6.15-2.6.15/arch/sparc64/kernel/traps.c @@ -1796,7 +1796,9 @@ }; } -static void sun4v_log_error(struct sun4v_error_entry *ent, int cpu, const char *pfx, atomic_t *ocnt) +extern void __show_regs(struct pt_regs * regs); + +static void sun4v_log_error(struct pt_regs *regs, struct sun4v_error_entry *ent, int cpu, const char *pfx, atomic_t *ocnt) { int cnt; @@ -1829,6 +1831,8 @@ pfx, ent->err_raddr, ent->err_size, ent->err_cpu); + __show_regs(regs); + if ((cnt = atomic_read(ocnt)) != 0) { atomic_set(ocnt, 0); wmb(); @@ -1861,7 +1865,7 @@ put_cpu(); - sun4v_log_error(&local_copy, cpu, + sun4v_log_error(regs, &local_copy, cpu, KERN_ERR "RESUMABLE ERROR", &sun4v_resum_oflow_cnt); } @@ -1909,7 +1913,7 @@ } #endif - sun4v_log_error(&local_copy, cpu, + sun4v_log_error(regs, &local_copy, cpu, KERN_EMERG "NON-RESUMABLE ERROR", &sun4v_nonresum_oflow_cnt); @@ -2199,7 +2203,6 @@ void die_if_kernel(char *str, struct pt_regs *regs) { static int die_counter; - extern void __show_regs(struct pt_regs * regs); extern void smp_report_regs(void); int count = 0; --- linux-source-2.6.15-2.6.15.orig/arch/sparc64/kernel/sun4v_tlb_miss.S +++ linux-source-2.6.15-2.6.15/arch/sparc64/kernel/sun4v_tlb_miss.S @@ -142,9 +142,9 @@ rdpr %tl, %g1 cmp %g1, 1 bgu,pn %xcc, winfix_trampoline - nop - ba,pt %xcc, sparc64_realfault_common mov FAULT_CODE_DTLB | FAULT_CODE_WRITE, %g4 + ba,pt %xcc, sparc64_realfault_common + nop /* Called from trap table: * %g4: vaddr --- linux-source-2.6.15-2.6.15.orig/arch/sparc64/kernel/pci_iommu.c +++ linux-source-2.6.15-2.6.15/arch/sparc64/kernel/pci_iommu.c @@ -219,7 +219,7 @@ * DMA for PCI device PDEV. Return non-NULL cpu-side address if * successful and set *DMA_ADDRP to the PCI side dma address. */ -static void *pci_4u_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp) +static void *pci_4u_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp, gfp_t gfp) { struct pcidev_cookie *pcp; struct pci_iommu *iommu; @@ -233,7 +233,7 @@ if (order >= 10) return NULL; - first_page = __get_free_pages(GFP_ATOMIC, order); + first_page = __get_free_pages(gfp, order); if (first_page == 0UL) return NULL; memset((char *)first_page, 0, PAGE_SIZE << order); --- linux-source-2.6.15-2.6.15.orig/arch/sparc64/kernel/pci_sun4v.c +++ linux-source-2.6.15-2.6.15/arch/sparc64/kernel/pci_sun4v.c @@ -154,7 +154,7 @@ __clear_bit(i, arena->map); } -static void *pci_4v_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp) +static void *pci_4v_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp, gfp_t gfp) { struct pcidev_cookie *pcp; struct pci_iommu *iommu; @@ -169,7 +169,7 @@ npages = size >> IO_PAGE_SHIFT; - first_page = __get_free_pages(GFP_ATOMIC, order); + first_page = __get_free_pages(gfp, order); if (unlikely(first_page == 0UL)) return NULL; @@ -599,18 +599,128 @@ /* SUN4V PCI configuration space accessors. */ -static inline int pci_sun4v_out_of_range(struct pci_pbm_info *pbm, unsigned int bus, unsigned int device, unsigned int func) +struct pdev_entry { + struct pdev_entry *next; + u32 devhandle; + unsigned int bus; + unsigned int device; + unsigned int func; +}; + +#define PDEV_HTAB_SIZE 16 +#define PDEV_HTAB_MASK (PDEV_HTAB_SIZE - 1) +static struct pdev_entry *pdev_htab[PDEV_HTAB_SIZE]; + +static inline unsigned int pdev_hashfn(u32 devhandle, unsigned int bus, unsigned int device, unsigned int func) { - if (bus == pbm->pci_first_busno) { - if (device == 0 && func == 0) - return 0; - return 1; + unsigned int val; + + val = (devhandle ^ (devhandle >> 4)); + val ^= bus; + val ^= device; + val ^= func; + + return val & PDEV_HTAB_MASK; +} + +static int pdev_htab_add(u32 devhandle, unsigned int bus, unsigned int device, unsigned int func) +{ + struct pdev_entry *p = kmalloc(sizeof(*p), GFP_KERNEL); + struct pdev_entry **slot; + + if (!p) + return -ENOMEM; + + slot = &pdev_htab[pdev_hashfn(devhandle, bus, device, func)]; + p->next = *slot; + *slot = p; + + p->devhandle = devhandle; + p->bus = bus; + p->device = device; + p->func = func; + + return 0; +} + +/* Recursively descend into the OBP device tree, rooted at toplevel_node, + * looking for a PCI device matching bus and devfn. + */ +static int obp_find(struct linux_prom_pci_registers *pregs, int toplevel_node, unsigned int bus, unsigned int devfn) +{ + toplevel_node = prom_getchild(toplevel_node); + + while (toplevel_node != 0) { + int ret = obp_find(pregs, toplevel_node, bus, devfn); + + if (ret != 0) + return ret; + + ret = prom_getproperty(toplevel_node, "reg", (char *) pregs, + sizeof(*pregs) * PROMREG_MAX); + if (ret == 0 || ret == -1) + goto next_sibling; + + if (((pregs[0].phys_hi >> 16) & 0xff) == bus && + ((pregs[0].phys_hi >> 8) & 0xff) == devfn) + break; + + next_sibling: + toplevel_node = prom_getsibling(toplevel_node); } + return toplevel_node; +} + +static int pdev_htab_populate(struct pci_pbm_info *pbm) +{ + struct linux_prom_pci_registers pr[PROMREG_MAX]; + u32 devhandle = pbm->devhandle; + unsigned int bus; + + for (bus = pbm->pci_first_busno; bus <= pbm->pci_last_busno; bus++) { + unsigned int devfn; + + for (devfn = 0; devfn < 256; devfn++) { + unsigned int device = PCI_SLOT(devfn); + unsigned int func = PCI_FUNC(devfn); + + if (obp_find(pr, pbm->prom_node, bus, devfn)) { + int err = pdev_htab_add(devhandle, bus, + device, func); + if (err) + return err; + } + } + } + + return 0; +} + +static struct pdev_entry *pdev_find(u32 devhandle, unsigned int bus, unsigned int device, unsigned int func) +{ + struct pdev_entry *p; + + p = pdev_htab[pdev_hashfn(devhandle, bus, device, func)]; + while (p) { + if (p->devhandle == devhandle && + p->bus == bus && + p->device == device && + p->func == func) + break; + + p = p->next; + } + + return p; +} + +static inline int pci_sun4v_out_of_range(struct pci_pbm_info *pbm, unsigned int bus, unsigned int device, unsigned int func) +{ if (bus < pbm->pci_first_busno || bus > pbm->pci_last_busno) return 1; - return 0; + return pdev_find(pbm->devhandle, bus, device, func) == NULL; } static int pci_sun4v_read_pci_cfg(struct pci_bus *bus_dev, unsigned int devfn, @@ -902,8 +1012,13 @@ HV_PCI_TSBID(0, i), &io_attrs, &ra); if (ret == HV_EOK) { - cnt++; - __set_bit(i, arena->map); + if (page_in_phys_avail(ra)) { + pci_sun4v_iommu_demap(devhandle, + HV_PCI_TSBID(0, i), 1); + } else { + cnt++; + __set_bit(i, arena->map); + } } } @@ -971,9 +1086,9 @@ iommu->arena.limit = num_tsb_entries; sz = probe_existing_entries(pbm, iommu); - - printk("%s: TSB entries [%lu], existing mapings [%lu]\n", - pbm->name, num_tsb_entries, sz); + if (sz) + printk("%s: Imported %lu TSB entries from OBP\n", + pbm->name, sz); } static void pci_sun4v_get_bus_range(struct pci_pbm_info *pbm) @@ -1063,6 +1178,8 @@ pci_sun4v_get_bus_range(pbm); pci_sun4v_iommu_init(pbm); + + pdev_htab_populate(pbm); } void sun4v_pci_init(int node, char *model_name) --- linux-source-2.6.15-2.6.15.orig/arch/sparc64/lib/csum_copy.S +++ linux-source-2.6.15-2.6.15/arch/sparc64/lib/csum_copy.S @@ -221,11 +221,12 @@ sll %g1, 8, %g1 or %o5, %g1, %o4 -1: add %o3, %o4, %o3 +1: addcc %o3, %o4, %o3 + addc %g0, %o3, %o3 70: retl - mov %o3, %o0 + srl %o3, 0, %o0 95: mov 0, GLOBAL_SPARE brlez,pn %o2, 4f --- linux-source-2.6.15-2.6.15.orig/arch/sparc64/lib/checksum.S +++ linux-source-2.6.15-2.6.15/arch/sparc64/lib/checksum.S @@ -165,8 +165,9 @@ sll %g1, 8, %g1 or %o5, %g1, %o4 -1: add %o2, %o4, %o2 +1: addcc %o2, %o4, %o2 + addc %g0, %o2, %o2 csum_partial_finish: retl - mov %o2, %o0 + srl %o2, 0, %o0 --- linux-source-2.6.15-2.6.15.orig/arch/ppc/kernel/traps.c +++ linux-source-2.6.15-2.6.15/arch/ppc/kernel/traps.c @@ -720,7 +720,7 @@ void alignment_exception(struct pt_regs *regs) { - int fixed; + int sig, code, fixed = 0; fixed = fix_alignment(regs); if (fixed == 1) { @@ -729,14 +729,16 @@ return; } if (fixed == -EFAULT) { - /* fixed == -EFAULT means the operand address was bad */ - if (user_mode(regs)) - _exception(SIGSEGV, regs, SEGV_ACCERR, regs->dar); - else - bad_page_fault(regs, regs->dar, SIGSEGV); - return; + sig = SIGSEGV; + code = SEGV_ACCERR; + } else { + sig = SIGBUS; + code = BUS_ADRALN; } - _exception(SIGBUS, regs, BUS_ADRALN, regs->dar); + if (user_mode(regs)) + _exception(sig, regs, code, regs->dar); + else + bad_page_fault(regs, regs->dar, sig); } void StackOverflow(struct pt_regs *regs) --- linux-source-2.6.15-2.6.15.orig/arch/powerpc/kernel/cpu_setup_power4.S +++ linux-source-2.6.15-2.6.15/arch/powerpc/kernel/cpu_setup_power4.S @@ -94,6 +94,8 @@ mfspr r0,SPRN_HID0 li r11,5 /* clear DOZE and SLEEP */ rldimi r0,r11,52,8 /* set NAP and DPM */ + li r11,0 + rldimi r0,r11,32,31 /* clear EN_ATTN */ mtspr SPRN_HID0,r0 mfspr r0,SPRN_HID0 mfspr r0,SPRN_HID0 --- linux-source-2.6.15-2.6.15.orig/arch/powerpc/kernel/vio.c +++ linux-source-2.6.15-2.6.15/arch/powerpc/kernel/vio.c @@ -205,7 +205,7 @@ size_t size, enum dma_data_direction direction) { return iommu_map_single(to_vio_dev(dev)->iommu_table, vaddr, size, - direction); + ~0ul, direction); } static void vio_unmap_single(struct device *dev, dma_addr_t dma_handle, @@ -219,7 +219,7 @@ int nelems, enum dma_data_direction direction) { return iommu_map_sg(dev, to_vio_dev(dev)->iommu_table, sglist, - nelems, direction); + nelems, ~0ul, direction); } static void vio_unmap_sg(struct device *dev, struct scatterlist *sglist, @@ -232,7 +232,7 @@ dma_addr_t *dma_handle, gfp_t flag) { return iommu_alloc_coherent(to_vio_dev(dev)->iommu_table, size, - dma_handle, flag); + dma_handle, ~0ul, flag); } static void vio_free_coherent(struct device *dev, size_t size, --- linux-source-2.6.15-2.6.15.orig/arch/powerpc/kernel/prom_init.c +++ linux-source-2.6.15-2.6.15/arch/powerpc/kernel/prom_init.c @@ -954,7 +954,7 @@ if (size == 0) continue; prom_debug(" %x %x\n", base, size); - if (base == 0) + if (base == 0 && (RELOC(of_platform) & PLATFORM_LPAR)) RELOC(rmo_top) = size; if ((base + size) > RELOC(ram_top)) RELOC(ram_top) = base + size; --- linux-source-2.6.15-2.6.15.orig/arch/powerpc/kernel/iommu.c +++ linux-source-2.6.15-2.6.15/arch/powerpc/kernel/iommu.c @@ -62,6 +62,7 @@ static unsigned long iommu_range_alloc(struct iommu_table *tbl, unsigned long npages, unsigned long *handle, + unsigned long mask, unsigned int align_order) { unsigned long n, end, i, start; @@ -98,9 +99,21 @@ */ if (start >= limit) start = largealloc ? tbl->it_largehint : tbl->it_hint; - + again: + if (limit + tbl->it_offset > mask) { + limit = mask - tbl->it_offset + 1; + /* If we're constrained on address range, first try + * at the masked hint to avoid O(n) search complexity, + * but on second pass, start at 0. + */ + if ((start & mask) >= limit || pass > 0) + start = 0; + else + start &= mask; + } + n = find_next_zero_bit(tbl->it_map, limit, start); /* Align allocation */ @@ -151,14 +164,14 @@ static dma_addr_t iommu_alloc(struct iommu_table *tbl, void *page, unsigned int npages, enum dma_data_direction direction, - unsigned int align_order) + unsigned long mask, unsigned int align_order) { unsigned long entry, flags; dma_addr_t ret = DMA_ERROR_CODE; - + spin_lock_irqsave(&(tbl->it_lock), flags); - entry = iommu_range_alloc(tbl, npages, NULL, align_order); + entry = iommu_range_alloc(tbl, npages, NULL, mask, align_order); if (unlikely(entry == DMA_ERROR_CODE)) { spin_unlock_irqrestore(&(tbl->it_lock), flags); @@ -237,7 +250,7 @@ int iommu_map_sg(struct device *dev, struct iommu_table *tbl, struct scatterlist *sglist, int nelems, - enum dma_data_direction direction) + unsigned long mask, enum dma_data_direction direction) { dma_addr_t dma_next = 0, dma_addr; unsigned long flags; @@ -275,7 +288,7 @@ vaddr = (unsigned long)page_address(s->page) + s->offset; npages = PAGE_ALIGN(vaddr + slen) - (vaddr & PAGE_MASK); npages >>= PAGE_SHIFT; - entry = iommu_range_alloc(tbl, npages, &handle, 0); + entry = iommu_range_alloc(tbl, npages, &handle, mask >> PAGE_SHIFT, 0); DBG(" - vaddr: %lx, size: %lx\n", vaddr, slen); @@ -477,7 +490,8 @@ * byte within the page as vaddr. */ dma_addr_t iommu_map_single(struct iommu_table *tbl, void *vaddr, - size_t size, enum dma_data_direction direction) + size_t size, unsigned long mask, + enum dma_data_direction direction) { dma_addr_t dma_handle = DMA_ERROR_CODE; unsigned long uaddr; @@ -490,7 +504,8 @@ npages >>= PAGE_SHIFT; if (tbl) { - dma_handle = iommu_alloc(tbl, vaddr, npages, direction, 0); + dma_handle = iommu_alloc(tbl, vaddr, npages, direction, + mask >> PAGE_SHIFT, 0); if (dma_handle == DMA_ERROR_CODE) { if (printk_ratelimit()) { printk(KERN_INFO "iommu_alloc failed, " @@ -519,7 +534,7 @@ * to the dma address (mapping) of the first page. */ void *iommu_alloc_coherent(struct iommu_table *tbl, size_t size, - dma_addr_t *dma_handle, gfp_t flag) + dma_addr_t *dma_handle, unsigned long mask, gfp_t flag) { void *ret = NULL; dma_addr_t mapping; @@ -549,7 +564,8 @@ memset(ret, 0, size); /* Set up tces to cover the allocated range */ - mapping = iommu_alloc(tbl, ret, npages, DMA_BIDIRECTIONAL, order); + mapping = iommu_alloc(tbl, ret, npages, DMA_BIDIRECTIONAL, + mask >> PAGE_SHIFT, order); if (mapping == DMA_ERROR_CODE) { free_pages((unsigned long)ret, order); ret = NULL; --- linux-source-2.6.15-2.6.15.orig/arch/powerpc/kernel/traps.c +++ linux-source-2.6.15-2.6.15/arch/powerpc/kernel/traps.c @@ -818,7 +818,7 @@ void alignment_exception(struct pt_regs *regs) { - int fixed; + int sig, code, fixed; fixed = fix_alignment(regs); @@ -830,14 +830,16 @@ /* Operand address was bad */ if (fixed == -EFAULT) { - if (user_mode(regs)) - _exception(SIGSEGV, regs, SEGV_ACCERR, regs->dar); - else - /* Search exception table */ - bad_page_fault(regs, regs->dar, SIGSEGV); - return; + sig = SIGSEGV; + code = SEGV_ACCERR; + } else { + sig = SIGBUS; + code = BUS_ADRALN; } - _exception(SIGBUS, regs, BUS_ADRALN, regs->dar); + if (user_mode(regs)) + _exception(sig, regs, code, regs->dar); + else + bad_page_fault(regs, regs->dar, sig); } void StackOverflow(struct pt_regs *regs) --- linux-source-2.6.15-2.6.15.orig/arch/powerpc/kernel/signal_32.c +++ linux-source-2.6.15-2.6.15/arch/powerpc/kernel/signal_32.c @@ -859,10 +859,13 @@ if (__get_user(cmcp, &ucp->uc_regs)) return -EFAULT; mcp = (struct mcontext __user *)(u64)cmcp; + /* no need to check access_ok(mcp), since mcp < 4GB */ } #else if (__get_user(mcp, &ucp->uc_regs)) return -EFAULT; + if (!access_ok(VERIFY_READ, mcp, sizeof(*mcp))) + return -EFAULT; #endif restore_sigmask(&set); if (restore_user_regs(regs, mcp, sig)) @@ -965,13 +968,14 @@ { struct sig_dbg_op op; int i; + unsigned char tmp; unsigned long new_msr = regs->msr; #if defined(CONFIG_4xx) || defined(CONFIG_BOOKE) unsigned long new_dbcr0 = current->thread.dbcr0; #endif for (i=0; ithread.dbcr0 = new_dbcr0; #endif + if (!access_ok(VERIFY_READ, ctx, sizeof(*ctx)) + || __get_user(tmp, (u8 __user *) ctx) + || __get_user(tmp, (u8 __user *) (ctx + 1) - 1)) + return -EFAULT; + /* * If we get a fault copying the context into the kernel's * image of the user's registers, we can't just return -EFAULT --- linux-source-2.6.15-2.6.15.orig/arch/powerpc/kernel/signal_64.c +++ linux-source-2.6.15-2.6.15/arch/powerpc/kernel/signal_64.c @@ -206,6 +206,8 @@ err |= __get_user(msr, &sc->gp_regs[PT_MSR]); if (err) return err; + if (v_regs && !access_ok(VERIFY_READ, v_regs, 34 * sizeof(vector128))) + return -EFAULT; /* Copy 33 vec registers (vr0..31 and vscr) from the stack */ if (v_regs != 0 && (msr & MSR_VEC) != 0) err |= __copy_from_user(current->thread.vr, v_regs, --- linux-source-2.6.15-2.6.15.orig/arch/powerpc/kernel/pci_iommu.c +++ linux-source-2.6.15-2.6.15/arch/powerpc/kernel/pci_iommu.c @@ -60,6 +60,25 @@ } +static inline unsigned long device_to_mask(struct device *hwdev) +{ + struct pci_dev *pdev; + + if (!hwdev) { + pdev = ppc64_isabridge_dev; + if (!pdev) /* This is the best guess we can do */ + return 0xfffffffful; + } else + pdev = to_pci_dev(hwdev); + + if (pdev->dma_mask) + return pdev->dma_mask; + + /* Assume devices without mask can take 32 bit addresses */ + return 0xfffffffful; +} + + /* Allocates a contiguous real buffer and creates mappings over it. * Returns the virtual address of the buffer and sets dma_handle * to the dma address (mapping) of the first page. @@ -68,7 +87,7 @@ dma_addr_t *dma_handle, gfp_t flag) { return iommu_alloc_coherent(devnode_table(hwdev), size, dma_handle, - flag); + device_to_mask(hwdev), flag); } static void pci_iommu_free_coherent(struct device *hwdev, size_t size, @@ -86,7 +105,8 @@ static dma_addr_t pci_iommu_map_single(struct device *hwdev, void *vaddr, size_t size, enum dma_data_direction direction) { - return iommu_map_single(devnode_table(hwdev), vaddr, size, direction); + return iommu_map_single(devnode_table(hwdev), vaddr, size, + device_to_mask(hwdev), direction); } @@ -101,7 +121,7 @@ int nelems, enum dma_data_direction direction) { return iommu_map_sg(pdev, devnode_table(pdev), sglist, - nelems, direction); + nelems, device_to_mask(pdev), direction); } static void pci_iommu_unmap_sg(struct device *pdev, struct scatterlist *sglist, @@ -113,7 +133,19 @@ /* We support DMA to/from any memory page via the iommu */ static int pci_iommu_dma_supported(struct device *dev, u64 mask) { - return 1; + struct iommu_table *tbl = devnode_table(dev); + + if (!tbl || tbl->it_offset > mask) { + printk(KERN_INFO "Warning: IOMMU table offset too big for device mask\n"); + if (tbl) + printk(KERN_INFO "mask: 0x%08lx, table offset: 0x%08lx\n", + mask, tbl->it_offset); + else + printk(KERN_INFO "mask: 0x%08lx, table unavailable\n", + mask); + return 0; + } else + return 1; } void pci_iommu_init(void) --- linux-source-2.6.15-2.6.15.orig/arch/powerpc/platforms/chrp/setup.c +++ linux-source-2.6.15-2.6.15/arch/powerpc/platforms/chrp/setup.c @@ -105,7 +105,7 @@ seq_printf(m, "machine\t\t: CHRP %s\n", model); /* longtrail (goldengate) stuff */ - if (!strncmp(model, "IBM,LongTrail", 13)) { + if (model && !strncmp(model, "IBM,LongTrail", 13)) { /* VLSI VAS96011/12 `Golden Gate 2' */ /* Memory banks */ sdramen = (in_le32(gg2_pci_config_base + GG2_PCI_DRAM_CTRL) @@ -192,9 +192,14 @@ static void __init sio_init(void) { struct device_node *root; + const char *model; - if ((root = find_path_device("/")) && - !strncmp(get_property(root, "model", NULL), "IBM,LongTrail", 13)) { + root = find_path_device("/"); + if (!root) + return; + + model = get_property(root, "model", NULL); + if (model && !strncmp(model, "IBM,LongTrail", 13)) { /* logical device 0 (KBC/Keyboard) */ sio_fixup_irq("keyboard", 0, 1, 2); /* select logical device 1 (KBC/Mouse) */ --- linux-source-2.6.15-2.6.15.orig/arch/powerpc/platforms/powermac/smp.c +++ linux-source-2.6.15-2.6.15/arch/powerpc/platforms/powermac/smp.c @@ -433,7 +433,7 @@ */ static void (*pmac_tb_freeze)(int freeze); -static unsigned long timebase; +static u64 timebase; static int tb_req; static void smp_core99_give_timebase(void) --- linux-source-2.6.15-2.6.15.orig/arch/sparc/kernel/sys_sparc.c +++ linux-source-2.6.15-2.6.15/arch/sparc/kernel/sys_sparc.c @@ -219,6 +219,20 @@ return err; } +int sparc_mmap_check(unsigned long addr, unsigned long len, unsigned long flags) +{ + if (ARCH_SUN4C_SUN4 && + (len > 0x20000000 || + (addr < 0xe0000000 && addr + len > 0x20000000))) + return -EINVAL; + + /* See asm-sparc/uaccess.h */ + if (len > TASK_SIZE - PAGE_SIZE || addr + len > TASK_SIZE - PAGE_SIZE) + return -EINVAL; + + return 0; +} + /* Linux version of mmap */ static unsigned long do_mmap2(unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long fd, @@ -233,25 +247,13 @@ goto out; } - retval = -EINVAL; len = PAGE_ALIGN(len); - if (ARCH_SUN4C_SUN4 && - (len > 0x20000000 || - ((flags & MAP_FIXED) && - addr < 0xe0000000 && addr + len > 0x20000000))) - goto out_putf; - - /* See asm-sparc/uaccess.h */ - if (len > TASK_SIZE - PAGE_SIZE || addr + len > TASK_SIZE - PAGE_SIZE) - goto out_putf; - flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); down_write(¤t->mm->mmap_sem); retval = do_mmap_pgoff(file, addr, len, prot, flags, pgoff); up_write(¤t->mm->mmap_sem); -out_putf: if (file) fput(file); out: --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/mm/init.c +++ linux-source-2.6.15-2.6.15/arch/x86_64/mm/init.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -38,11 +39,16 @@ #include #include #include +#include +#include #ifndef Dprintk #define Dprintk(x...) #endif +struct dma_mapping_ops* dma_ops; +EXPORT_SYMBOL(dma_ops); + static unsigned long dma_reserve __initdata; DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); @@ -467,12 +473,9 @@ long codesize, reservedpages, datasize, initsize; #ifdef CONFIG_SWIOTLB - if (!iommu_aperture && - (end_pfn >= 0xffffffff>>PAGE_SHIFT || force_iommu)) - swiotlb = 1; - if (swiotlb) - swiotlb_init(); + pci_swiotlb_init(); #endif + no_iommu_init(); /* How many end-of-memory variables you have, grandma! */ max_low_pfn = end_pfn; --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/time.c +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/time.c @@ -471,6 +471,11 @@ write_sequnlock(&xtime_lock); +#ifdef CONFIG_X86_LOCAL_APIC + if (using_apic_timer) + smp_send_timer_broadcast_ipi(); +#endif + return IRQ_HANDLED; } --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/ptrace.c +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/ptrace.c @@ -106,16 +106,25 @@ u32 *desc; unsigned long base; - down(&child->mm->context.sem); - desc = child->mm->context.ldt + (seg & ~7); - base = (desc[0] >> 16) | ((desc[1] & 0xff) << 16) | (desc[1] & 0xff000000); + seg &= ~7UL; - /* 16-bit code segment? */ - if (!((desc[1] >> 22) & 1)) - addr &= 0xffff; - addr += base; + down(&child->mm->context.sem); + if (unlikely((seg >> 3) >= child->mm->context.size)) + addr = -1L; /* bogus selector, access would fault */ + else { + desc = child->mm->context.ldt + seg; + base = ((desc[0] >> 16) | + ((desc[1] & 0xff) << 16) | + (desc[1] & 0xff000000)); + + /* 16-bit code segment? */ + if (!((desc[1] >> 22) & 1)) + addr &= 0xffff; + addr += base; + } up(&child->mm->context.sem); } + return addr; } @@ -226,10 +235,6 @@ { unsigned long tmp; - /* Some code in the 64bit emulation may not be 64bit clean. - Don't take any chances. */ - if (test_tsk_thread_flag(child, TIF_IA32)) - value &= 0xffffffff; switch (regno) { case offsetof(struct user_regs_struct,fs): if (value && (value & 3) != 3) --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/Makefile +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/Makefile @@ -8,7 +8,7 @@ ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_x86_64.o \ x8664_ksyms.o i387.o syscall.o vsyscall.o \ setup64.o bootflag.o e820.o reboot.o quirks.o i8237.o \ - alternative.o + pci-dma.o pci-nommu.o alternative.o obj-$(CONFIG_X86_MCE) += mce.o obj-$(CONFIG_X86_MCE_INTEL) += mce_intel.o @@ -28,7 +28,7 @@ obj-$(CONFIG_CPU_FREQ) += cpufreq/ obj-$(CONFIG_EARLY_PRINTK) += early_printk.o obj-$(CONFIG_GART_IOMMU) += pci-gart.o aperture.o -obj-$(CONFIG_DUMMY_IOMMU) += pci-nommu.o pci-dma.o +obj-$(CONFIG_SWIOTLB) += pci-swiotlb.o obj-$(CONFIG_KPROBES) += kprobes.o obj-$(CONFIG_X86_PM_TIMER) += pmtimer.o --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/pci-dma.c +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/pci-dma.c @@ -8,53 +8,259 @@ #include #include #include +#include -/* Map a set of buffers described by scatterlist in streaming - * mode for DMA. This is the scatter-gather version of the - * above pci_map_single interface. Here the scatter gather list - * elements are each tagged with the appropriate dma address - * and length. They are obtained via sg_dma_{address,length}(SG). - * - * NOTE: An implementation may be able to use a smaller number of - * DMA address/length pairs than there are SG table elements. - * (for example via virtual mapping capabilities) - * The routine returns the number of addr/length pairs actually - * used, at most nents. - * - * Device ownership issues as mentioned above for pci_map_single are - * the same here. +int iommu_merge __read_mostly = 0; +EXPORT_SYMBOL(iommu_merge); + +dma_addr_t bad_dma_address __read_mostly; +EXPORT_SYMBOL(bad_dma_address); + +/* This tells the BIO block layer to assume merging. Default to off + because we cannot guarantee merging later. */ +int iommu_bio_merge __read_mostly = 0; +EXPORT_SYMBOL(iommu_bio_merge); + +int iommu_sac_force __read_mostly = 0; +EXPORT_SYMBOL(iommu_sac_force); + +int no_iommu __read_mostly; +#ifdef CONFIG_IOMMU_DEBUG +int panic_on_overflow __read_mostly = 1; +int force_iommu __read_mostly = 1; +#else +int panic_on_overflow __read_mostly = 0; +int force_iommu __read_mostly= 0; +#endif + +/* Dummy device used for NULL arguments (normally ISA). Better would + be probably a smaller DMA mask, but this is bug-to-bug compatible + to i386. */ +struct device fallback_dev = { + .bus_id = "fallback device", + .coherent_dma_mask = 0xffffffff, + .dma_mask = &fallback_dev.coherent_dma_mask, +}; + +/* Allocate DMA memory on node near device */ +noinline static void * +dma_alloc_pages(struct device *dev, gfp_t gfp, unsigned order) +{ + struct page *page; + int node; + if (dev->bus == &pci_bus_type) + node = pcibus_to_node(to_pci_dev(dev)->bus); + else + node = numa_node_id(); + page = alloc_pages_node(node, gfp, order); + return page ? page_address(page) : NULL; +} + +/* + * Allocate memory for a coherent mapping. */ -int dma_map_sg(struct device *hwdev, struct scatterlist *sg, - int nents, int direction) +void * +dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, + gfp_t gfp) { - int i; + void *memory; + unsigned long dma_mask = 0; + u64 bus; + + if (!dev) + dev = &fallback_dev; + dma_mask = dev->coherent_dma_mask; + if (dma_mask == 0) + dma_mask = 0xffffffff; + + /* Kludge to make it bug-to-bug compatible with i386. i386 + uses the normal dma_mask for alloc_coherent. */ + dma_mask &= *dev->dma_mask; - BUG_ON(direction == DMA_NONE); - for (i = 0; i < nents; i++ ) { - struct scatterlist *s = &sg[i]; - BUG_ON(!s->page); - s->dma_address = virt_to_bus(page_address(s->page) +s->offset); - s->dma_length = s->length; + /* Why <=? Even when the mask is smaller than 4GB it is often + larger than 16MB and in this case we have a chance of + finding fitting memory in the next higher zone first. If + not retry with true GFP_DMA. -AK */ + if (dma_mask <= 0xffffffff) + gfp |= GFP_DMA32; + + again: + memory = dma_alloc_pages(dev, gfp, get_order(size)); + if (memory == NULL) + return NULL; + + { + int high, mmu; + bus = virt_to_bus(memory); + high = (bus + size) >= dma_mask; + mmu = high; + if (force_iommu && !(gfp & GFP_DMA)) + mmu = 1; + else if (high) { + free_pages((unsigned long)memory, + get_order(size)); + + /* Don't use the 16MB ZONE_DMA unless absolutely + needed. It's better to use remapping first. */ + if (dma_mask < 0xffffffff && !(gfp & GFP_DMA)) { + gfp = (gfp & ~GFP_DMA32) | GFP_DMA; + goto again; + } + + if (dma_ops->alloc_coherent) + return dma_ops->alloc_coherent(dev, size, + dma_handle, gfp); + return NULL; + } + + memset(memory, 0, size); + if (!mmu) { + *dma_handle = virt_to_bus(memory); + return memory; + } } - return nents; -} -EXPORT_SYMBOL(dma_map_sg); + if (dma_ops->alloc_coherent) { + free_pages((unsigned long)memory, get_order(size)); + gfp &= ~(GFP_DMA|GFP_DMA32); + return dma_ops->alloc_coherent(dev, size, dma_handle, gfp); + } -/* Unmap a set of streaming mode DMA translations. - * Again, cpu read rules concerning calls here are the same as for - * pci_unmap_single() above. + if (dma_ops->map_simple) { + *dma_handle = dma_ops->map_simple(dev, memory, + size, + PCI_DMA_BIDIRECTIONAL); + if (*dma_handle != bad_dma_address) + return memory; + } + + if (panic_on_overflow) + panic("dma_alloc_coherent: IOMMU overflow by %lu bytes\n",size); + free_pages((unsigned long)memory, get_order(size)); + return NULL; +} +EXPORT_SYMBOL(dma_alloc_coherent); + +/* + * Unmap coherent memory. + * The caller must ensure that the device has finished accessing the mapping. */ -void dma_unmap_sg(struct device *dev, struct scatterlist *sg, - int nents, int dir) +void dma_free_coherent(struct device *dev, size_t size, + void *vaddr, dma_addr_t bus) +{ + if (dma_ops->unmap_single) + dma_ops->unmap_single(dev, bus, size, 0); + free_pages((unsigned long)vaddr, get_order(size)); +} +EXPORT_SYMBOL(dma_free_coherent); + +int dma_supported(struct device *dev, u64 mask) +{ + if (dma_ops->dma_supported) + return dma_ops->dma_supported(dev, mask); + + /* Copied from i386. Doesn't make much sense, because it will + only work for pci_alloc_coherent. + The caller just has to use GFP_DMA in this case. */ + if (mask < 0x00ffffff) + return 0; + + /* Tell the device to use SAC when IOMMU force is on. This + allows the driver to use cheaper accesses in some cases. + + Problem with this is that if we overflow the IOMMU area and + return DAC as fallback address the device may not handle it + correctly. + + As a special case some controllers have a 39bit address + mode that is as efficient as 32bit (aic79xx). Don't force + SAC for these. Assume all masks <= 40 bits are of this + type. Normally this doesn't make any difference, but gives + more gentle handling of IOMMU overflow. */ + if (iommu_sac_force && (mask >= 0xffffffffffULL)) { + printk(KERN_INFO "%s: Force SAC with mask %Lx\n", dev->bus_id,mask); + return 0; + } + + return 1; +} +EXPORT_SYMBOL(dma_supported); + +int dma_set_mask(struct device *dev, u64 mask) { - int i; - for (i = 0; i < nents; i++) { - struct scatterlist *s = &sg[i]; - BUG_ON(s->page == NULL); - BUG_ON(s->dma_address == 0); - dma_unmap_single(dev, s->dma_address, s->dma_length, dir); - } + if (!dev->dma_mask || !dma_supported(dev, mask)) + return -EIO; + *dev->dma_mask = mask; + return 0; } +EXPORT_SYMBOL(dma_set_mask); + +/* iommu=[size][,noagp][,off][,force][,noforce][,leak][,memaper[=order]][,merge] + [,forcesac][,fullflush][,nomerge][,biomerge] + size set size of iommu (in bytes) + noagp don't initialize the AGP driver and use full aperture. + off don't use the IOMMU + leak turn on simple iommu leak tracing (only when CONFIG_IOMMU_LEAK is on) + memaper[=order] allocate an own aperture over RAM with size 32MB^order. + noforce don't force IOMMU usage. Default. + force Force IOMMU. + merge Do lazy merging. This may improve performance on some block devices. + Implies force (experimental) + biomerge Do merging at the BIO layer. This is more efficient than merge, + but should be only done with very big IOMMUs. Implies merge,force. + nomerge Don't do SG merging. + forcesac For SAC mode for masks <40bits (experimental) + fullflush Flush IOMMU on each allocation (default) + nofullflush Don't use IOMMU fullflush + allowed overwrite iommu off workarounds for specific chipsets. + soft Use software bounce buffering (default for Intel machines) + noaperture Don't touch the aperture for AGP. +*/ +__init int iommu_setup(char *p) +{ + iommu_merge = 1; -EXPORT_SYMBOL(dma_unmap_sg); + while (*p) { + if (!strncmp(p,"off",3)) + no_iommu = 1; + /* gart_parse_options has more force support */ + if (!strncmp(p,"force",5)) + force_iommu = 1; + if (!strncmp(p,"noforce",7)) { + iommu_merge = 0; + force_iommu = 0; + } + + if (!strncmp(p, "biomerge",8)) { + iommu_bio_merge = 4096; + iommu_merge = 1; + force_iommu = 1; + } + if (!strncmp(p, "panic",5)) + panic_on_overflow = 1; + if (!strncmp(p, "nopanic",7)) + panic_on_overflow = 0; + if (!strncmp(p, "merge",5)) { + iommu_merge = 1; + force_iommu = 1; + } + if (!strncmp(p, "nomerge",7)) + iommu_merge = 0; + if (!strncmp(p, "forcesac",8)) + iommu_sac_force = 1; + +#ifdef CONFIG_SWIOTLB + if (!strncmp(p, "soft",4)) + swiotlb = 1; +#endif + +#ifdef CONFIG_GART_IOMMU + gart_parse_options(p); +#endif + + p += strcspn(p, ","); + if (*p == ',') + ++p; + } + return 1; +} --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/alternative.c +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/alternative.c @@ -255,10 +255,14 @@ void __init alternative_instructions(void) { + unsigned long flags; + + local_irq_save(flags); + apply_alternatives(__alt_instructions, __alt_instructions_end); if (smp_alt_disable) - return; + goto out; /* switch to patch-once-at-boottime-only mode and free the * tables in case we know the number of CPUs will never ever @@ -290,4 +294,7 @@ _text, _etext); alternatives_smp_switch(0); } + +out: + local_irq_restore(flags); } --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/pci-nommu.c +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/pci-nommu.c @@ -6,89 +6,88 @@ #include #include #include +#include -int iommu_merge = 0; -EXPORT_SYMBOL(iommu_merge); - -dma_addr_t bad_dma_address; -EXPORT_SYMBOL(bad_dma_address); - -int iommu_bio_merge = 0; -EXPORT_SYMBOL(iommu_bio_merge); - -int iommu_sac_force = 0; -EXPORT_SYMBOL(iommu_sac_force); - -/* - * Dummy IO MMU functions - */ - -void *dma_alloc_coherent(struct device *hwdev, size_t size, - dma_addr_t *dma_handle, gfp_t gfp) +static int +check_addr(char *name, struct device *hwdev, dma_addr_t bus, size_t size) { - void *ret; - u64 mask; - int order = get_order(size); - - if (hwdev) - mask = hwdev->coherent_dma_mask & *hwdev->dma_mask; - else - mask = 0xffffffff; - for (;;) { - ret = (void *)__get_free_pages(gfp, order); - if (ret == NULL) - return NULL; - *dma_handle = virt_to_bus(ret); - if ((*dma_handle & ~mask) == 0) - break; - free_pages((unsigned long)ret, order); - if (gfp & GFP_DMA) - return NULL; - gfp |= GFP_DMA; + if (hwdev && bus + size > *hwdev->dma_mask) { + if (*hwdev->dma_mask >= 0xffffffffULL) + printk(KERN_ERR + "nommu_%s: overflow %Lx+%lu of device mask %Lx\n", + name, (long long)bus, size, (long long)*hwdev->dma_mask); + return 0; } + return 1; +} - memset(ret, 0, size); - return ret; +static dma_addr_t +nommu_map_single(struct device *hwdev, void *ptr, size_t size, + int direction) +{ + dma_addr_t bus = virt_to_bus(ptr); + if (!check_addr("map_single", hwdev, bus, size)) + return bad_dma_address; + return bus; } -EXPORT_SYMBOL(dma_alloc_coherent); -void dma_free_coherent(struct device *hwdev, size_t size, - void *vaddr, dma_addr_t dma_handle) +void nommu_unmap_single(struct device *dev, dma_addr_t addr,size_t size, + int direction) { - free_pages((unsigned long)vaddr, get_order(size)); } -EXPORT_SYMBOL(dma_free_coherent); -int dma_supported(struct device *hwdev, u64 mask) +/* Map a set of buffers described by scatterlist in streaming + * mode for DMA. This is the scatter-gather version of the + * above pci_map_single interface. Here the scatter gather list + * elements are each tagged with the appropriate dma address + * and length. They are obtained via sg_dma_{address,length}(SG). + * + * NOTE: An implementation may be able to use a smaller number of + * DMA address/length pairs than there are SG table elements. + * (for example via virtual mapping capabilities) + * The routine returns the number of addr/length pairs actually + * used, at most nents. + * + * Device ownership issues as mentioned above for pci_map_single are + * the same here. + */ +int nommu_map_sg(struct device *hwdev, struct scatterlist *sg, + int nents, int direction) { - /* - * we fall back to GFP_DMA when the mask isn't all 1s, - * so we can't guarantee allocations that must be - * within a tighter range than GFP_DMA.. - * RED-PEN this won't work for pci_map_single. Caller has to - * use GFP_DMA in the first place. - */ - if (mask < 0x00ffffff) - return 0; + int i; - return 1; -} -EXPORT_SYMBOL(dma_supported); + BUG_ON(direction == DMA_NONE); + for (i = 0; i < nents; i++ ) { + struct scatterlist *s = &sg[i]; + BUG_ON(!s->page); + s->dma_address = virt_to_bus(page_address(s->page) +s->offset); + if (!check_addr("map_sg", hwdev, s->dma_address, s->length)) + return 0; + s->dma_length = s->length; + } + return nents; +} -int dma_get_cache_alignment(void) +/* Unmap a set of streaming mode DMA translations. + * Again, cpu read rules concerning calls here are the same as for + * pci_unmap_single() above. + */ +void nommu_unmap_sg(struct device *dev, struct scatterlist *sg, + int nents, int dir) { - return boot_cpu_data.x86_clflush_size; } -EXPORT_SYMBOL(dma_get_cache_alignment); -static int __init check_ram(void) -{ - if (end_pfn >= 0xffffffff>>PAGE_SHIFT) { - printk( - KERN_ERR "WARNING more than 4GB of memory but IOMMU not compiled in.\n" - KERN_ERR "WARNING 32bit PCI may malfunction.\n"); - } - return 0; -} -__initcall(check_ram); +struct dma_mapping_ops nommu_dma_ops = { + .map_single = nommu_map_single, + .unmap_single = nommu_unmap_single, + .map_sg = nommu_map_sg, + .unmap_sg = nommu_unmap_sg, + .is_phys = 1, +}; +void __init no_iommu_init(void) +{ + if (dma_ops) + return; + dma_ops = &nommu_dma_ops; +} --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/process.c +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/process.c @@ -478,6 +478,35 @@ } /* + * This function selects if the context switch from prev to next + * has to tweak the TSC disable bit in the cr4. + */ +static inline void disable_tsc(struct task_struct *prev_p, + struct task_struct *next_p) +{ +#ifdef CONFIG_SECCOMP_DISABLE_TSC + struct thread_info *prev, *next; + + /* + * gcc should eliminate the ->thread_info dereference if + * has_secure_computing returns 0 at compile time (SECCOMP=n). + */ + prev = prev_p->thread_info; + next = next_p->thread_info; + + if (has_secure_computing(prev) || has_secure_computing(next)) { + /* slow path here */ + if (has_secure_computing(prev) && + !has_secure_computing(next)) { + write_cr4(read_cr4() & ~X86_CR4_TSD); + } else if (!has_secure_computing(prev) && + has_secure_computing(next)) + write_cr4((read_cr4() | X86_CR4_TSD) & ~X86_CR4_PCE); + } +#endif +} + +/* * This special macro can be used to load a debugging register */ #define loaddebug(thread,r) set_debug(thread->debugreg ## r, r) @@ -561,6 +590,11 @@ prev->userrsp = read_pda(oldrsp); write_pda(oldrsp, next->userrsp); write_pda(pcurrent, next_p); + + /* This must be here to ensure both math_state_restore() and + kernel_fpu_begin() work consistently. + And the AMD workaround requires it to be after DS reload. */ + unlazy_fpu(prev_p); write_pda(kernelstack, (unsigned long)next_p->thread_info + THREAD_SIZE - PDA_STACKOFFSET); @@ -597,6 +631,8 @@ } } + disable_tsc(prev_p, next_p); + return prev_p; } --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/setup.c +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/setup.c @@ -42,6 +42,9 @@ #include #include #include +#include +#include +#include #include #include @@ -60,7 +63,9 @@ #include #include #include +#include #include +#include /* * Machine setup.. @@ -85,11 +90,6 @@ unsigned long saved_video_mode; -#ifdef CONFIG_SWIOTLB -int swiotlb; -EXPORT_SYMBOL(swiotlb); -#endif - /* * Setup options */ @@ -361,11 +361,9 @@ numa_setup(from+5); #endif -#ifdef CONFIG_GART_IOMMU if (!memcmp(from,"iommu=",6)) { iommu_setup(from+6); } -#endif if (!memcmp(from,"oops=panic", 10)) panic_on_oops = 1; @@ -631,7 +629,7 @@ e820_setup_gap(); #ifdef CONFIG_GART_IOMMU - iommu_hole_init(); + iommu_hole_init(); #endif #ifdef CONFIG_VT @@ -795,6 +793,10 @@ if ((level >= 0x0f48 && level < 0x0f50) || level >= 0x0f58) set_bit(X86_FEATURE_K8_C, &c->x86_capability); + /* Enable workaround for FXSAVE leak */ + if (c->x86 >= 6) + set_bit(X86_FEATURE_FXSAVE_LEAK, &c->x86_capability); + r = get_model_name(c); if (!r) { switch (c->x86) { @@ -827,7 +829,6 @@ cpuid(1, &eax, &ebx, &ecx, &edx); - c->apicid = phys_pkg_id(0); if (!cpu_has(c, X86_FEATURE_HT) || cpu_has(c, X86_FEATURE_CMP_LEGACY)) return; @@ -1034,6 +1035,8 @@ c->x86_capability[2] = cpuid_edx(0x80860001); } + c->apicid = phys_pkg_id(0); + /* * Vendor-specific initialization. In this section we * canonicalize the feature flags, meaning if there are --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/smpboot.c +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/smpboot.c @@ -67,6 +67,9 @@ /* core ID of each logical CPU */ u8 cpu_core_id[NR_CPUS] __read_mostly = { [0 ... NR_CPUS-1] = BAD_APICID }; +/* Last level cache ID of each logical CPU */ +u8 cpu_llc_id[NR_CPUS] __cpuinitdata = {[0 ... NR_CPUS-1] = BAD_APICID}; + /* Bitmask of currently online CPUs */ cpumask_t cpu_online_map __read_mostly; @@ -438,6 +441,18 @@ cpu_set(cpuid, cpu_callin_map); } +/* maps the cpu to the sched domain representing multi-core */ +cpumask_t cpu_coregroup_map(int cpu) +{ + struct cpuinfo_x86 *c = cpu_data + cpu; + /* + * For perf, we return last level cache shared map. + * TBD: when power saving sched policy is added, we will return + * cpu_core_map when power saving policy is enabled + */ + return c->llc_shared_map; +} + /* representing cpus for which sibling maps can be computed */ static cpumask_t cpu_sibling_setup_map; @@ -456,12 +471,16 @@ cpu_set(cpu, cpu_sibling_map[i]); cpu_set(i, cpu_core_map[cpu]); cpu_set(cpu, cpu_core_map[i]); + cpu_set(i, c[cpu].llc_shared_map); + cpu_set(cpu, c[i].llc_shared_map); } } } else { cpu_set(cpu, cpu_sibling_map[cpu]); } + cpu_set(cpu, c[cpu].llc_shared_map); + if (current_cpu_data.x86_max_cores == 1) { cpu_core_map[cpu] = cpu_sibling_map[cpu]; c[cpu].booted_cores = 1; @@ -469,6 +488,11 @@ } for_each_cpu_mask(i, cpu_sibling_setup_map) { + if (cpu_llc_id[cpu] != BAD_APICID && + cpu_llc_id[cpu] == cpu_llc_id[i]) { + cpu_set(i, c[cpu].llc_shared_map); + cpu_set(cpu, c[i].llc_shared_map); + } if (phys_proc_id[cpu] == phys_proc_id[i]) { cpu_set(i, cpu_core_map[cpu]); cpu_set(cpu, cpu_core_map[i]); --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/traps.c +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/traps.c @@ -91,6 +91,20 @@ local_irq_enable(); } +static inline void preempt_conditional_sti(struct pt_regs *regs) +{ + preempt_disable(); + if (regs->eflags & X86_EFLAGS_IF) + local_irq_enable(); +} + +static inline void preempt_conditional_cli(struct pt_regs *regs) +{ + if (regs->eflags & X86_EFLAGS_IF) + local_irq_disable(); + preempt_enable_no_resched(); +} + static int kstack_depth_to_print = 10; #ifdef CONFIG_KALLSYMS @@ -644,7 +658,7 @@ SIGTRAP) == NOTIFY_STOP) return; - conditional_sti(regs); + preempt_conditional_sti(regs); /* Mask out spurious debug traps due to lazy DR7 setting */ if (condition & (DR_TRAP0|DR_TRAP1|DR_TRAP2|DR_TRAP3)) { @@ -691,11 +705,13 @@ force_sig_info(SIGTRAP, &info, tsk); clear_dr7: set_debugreg(0UL, 7); + preempt_conditional_cli(regs); return; clear_TF_reenable: set_tsk_thread_flag(tsk, TIF_SINGLESTEP); regs->eflags &= ~TF_MASK; + preempt_conditional_cli(regs); } static int kernel_math_error(struct pt_regs *regs, char *str) --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/setup64.c +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/setup64.c @@ -177,6 +177,8 @@ } } +unsigned long kernel_eflags; + /* * cpu_init() initializes state that is per-CPU. Some data is already * initialized (naturally) in the bootstrap process, such as the GDT @@ -283,4 +285,6 @@ set_debug(0UL, 7); fpu_init(); + + local_save_flags(kernel_eflags); } --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/apic.c +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/apic.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -38,13 +39,15 @@ int disable_apic_timer __initdata; +/* + * cpu_mask that denotes the CPUs that needs timer interrupt coming in as + * IPIs in place of local APIC timers + */ +static cpumask_t timer_interrupt_broadcast_ipi_mask; + /* Using APIC to generate smp_local_timer_interrupt? */ int using_apic_timer = 0; -static DEFINE_PER_CPU(int, prof_multiplier) = 1; -static DEFINE_PER_CPU(int, prof_old_multiplier) = 1; -static DEFINE_PER_CPU(int, prof_counter) = 1; - static void apic_pm_activate(void); void enable_NMI_through_LVT0 (void * dummy) @@ -660,9 +663,14 @@ static void __setup_APIC_LVTT(unsigned int clocks) { unsigned int lvtt_value, tmp_value, ver; + int cpu = smp_processor_id(); ver = GET_APIC_VERSION(apic_read(APIC_LVR)); lvtt_value = APIC_LVT_TIMER_PERIODIC | LOCAL_TIMER_VECTOR; + + if (cpu_isset(cpu, timer_interrupt_broadcast_ipi_mask)) + lvtt_value |= APIC_LVT_MASKED; + apic_write_around(APIC_LVTT, lvtt_value); /* @@ -785,7 +793,7 @@ local_irq_enable(); } -void __cpuinit disable_APIC_timer(void) +void disable_APIC_timer(void) { if (using_apic_timer) { unsigned long v; @@ -797,7 +805,10 @@ void enable_APIC_timer(void) { - if (using_apic_timer) { + int cpu = smp_processor_id(); + + if (using_apic_timer && + !cpu_isset(cpu, timer_interrupt_broadcast_ipi_mask)) { unsigned long v; v = apic_read(APIC_LVTT); @@ -805,32 +816,45 @@ } } -/* - * the frequency of the profiling timer can be changed - * by writing a multiplier value into /proc/profile. - */ -int setup_profiling_timer(unsigned int multiplier) +void switch_APIC_timer_to_ipi(void *cpumask) { - int i; + cpumask_t mask = *(cpumask_t *)cpumask; + int cpu = smp_processor_id(); - /* - * Sanity check. [at least 500 APIC cycles should be - * between APIC interrupts as a rule of thumb, to avoid - * irqs flooding us] - */ - if ( (!multiplier) || (calibration_result/multiplier < 500)) - return -EINVAL; + if (cpu_isset(cpu, mask) && + !cpu_isset(cpu, timer_interrupt_broadcast_ipi_mask)) { + disable_APIC_timer(); + cpu_set(cpu, timer_interrupt_broadcast_ipi_mask); + } +} +EXPORT_SYMBOL(switch_APIC_timer_to_ipi); - /* - * Set the new multiplier for each CPU. CPUs don't start using the - * new values until the next timer interrupt in which they do process - * accounting. At that time they also adjust their APIC timers - * accordingly. - */ - for (i = 0; i < NR_CPUS; ++i) - per_cpu(prof_multiplier, i) = multiplier; +void smp_send_timer_broadcast_ipi(void) +{ + cpumask_t mask; - return 0; + cpus_and(mask, cpu_online_map, timer_interrupt_broadcast_ipi_mask); + if (!cpus_empty(mask)) { + send_IPI_mask(mask, LOCAL_TIMER_VECTOR); + } +} + +void switch_ipi_to_APIC_timer(void *cpumask) +{ + cpumask_t mask = *(cpumask_t *)cpumask; + int cpu = smp_processor_id(); + + if (cpu_isset(cpu, mask) && + cpu_isset(cpu, timer_interrupt_broadcast_ipi_mask)) { + cpu_clear(cpu, timer_interrupt_broadcast_ipi_mask); + enable_APIC_timer(); + } +} +EXPORT_SYMBOL(switch_ipi_to_APIC_timer); + +int setup_profiling_timer(unsigned int multiplier) +{ + return -EINVAL; } #ifdef CONFIG_X86_MCE_AMD @@ -857,32 +881,10 @@ void smp_local_timer_interrupt(struct pt_regs *regs) { - int cpu = smp_processor_id(); - profile_tick(CPU_PROFILING, regs); - if (--per_cpu(prof_counter, cpu) <= 0) { - /* - * The multiplier may have changed since the last time we got - * to this point as a result of the user writing to - * /proc/profile. In this case we need to adjust the APIC - * timer accordingly. - * - * Interrupts are already masked off at this point. - */ - per_cpu(prof_counter, cpu) = per_cpu(prof_multiplier, cpu); - if (per_cpu(prof_counter, cpu) != - per_cpu(prof_old_multiplier, cpu)) { - __setup_APIC_LVTT(calibration_result/ - per_cpu(prof_counter, cpu)); - per_cpu(prof_old_multiplier, cpu) = - per_cpu(prof_counter, cpu); - } - #ifdef CONFIG_SMP - update_process_times(user_mode(regs)); + update_process_times(user_mode(regs)); #endif - } - /* * We take the 'long' return path, and there every subsystem * grabs the appropriate locks (kernel lock/ irq lock). --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/pci-swiotlb.c +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/pci-swiotlb.c @@ -0,0 +1,42 @@ +/* Glue code to lib/swiotlb.c */ + +#include +#include +#include +#include +#include +#include +#include + +int swiotlb __read_mostly; +EXPORT_SYMBOL(swiotlb); + +struct dma_mapping_ops swiotlb_dma_ops = { + .mapping_error = swiotlb_dma_mapping_error, + .alloc_coherent = swiotlb_alloc_coherent, + .free_coherent = swiotlb_free_coherent, + .map_single = swiotlb_map_single, + .unmap_single = swiotlb_unmap_single, + .sync_single_for_cpu = swiotlb_sync_single_for_cpu, + .sync_single_for_device = swiotlb_sync_single_for_device, + .sync_single_range_for_cpu = swiotlb_sync_single_range_for_cpu, + .sync_single_range_for_device = swiotlb_sync_single_range_for_device, + .sync_sg_for_cpu = swiotlb_sync_sg_for_cpu, + .sync_sg_for_device = swiotlb_sync_sg_for_device, + .map_sg = swiotlb_map_sg, + .unmap_sg = swiotlb_unmap_sg, + .dma_supported = NULL, +}; + +void pci_swiotlb_init(void) +{ + /* don't initialize swiotlb if iommu=off (no_iommu=1) */ + if (!iommu_aperture && !no_iommu && + (end_pfn > MAX_DMA32_PFN || force_iommu)) + swiotlb = 1; + if (swiotlb) { + printk(KERN_INFO "PCI-DMA: Using software bounce buffering for IO (SWIOTLB)\n"); + swiotlb_init(); + dma_ops = &swiotlb_dma_ops; + } +} --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/entry.S +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/entry.S @@ -135,6 +135,10 @@ /* rdi: prev */ ENTRY(ret_from_fork) CFI_DEFAULT_STACK + push kernel_eflags(%rip) + CFI_ADJUST_CFA_OFFSET 4 + popf # reset kernel eflags + CFI_ADJUST_CFA_OFFSET -4 call schedule_tail GET_THREAD_INFO(%rcx) testl $(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT),threadinfo_flags(%rcx) @@ -179,6 +183,10 @@ * * XXX if we had a free scratch register we could save the RSP into the stack frame * and report it properly in ps. Unfortunately we haven't. + * + * When user can change the frames always force IRET. That is because + * it deals with uncanonical addresses better. SYSRET has trouble + * with them due to bugs in both AMD and Intel CPUs. */ ENTRY(system_call) @@ -253,7 +261,10 @@ xorl %esi,%esi # oldset -> arg2 call ptregscall_common 1: movl $_TIF_NEED_RESCHED,%edi - jmp sysret_check + /* Use IRET because user could have changed frame. This + works because ptregscall_common has called FIXUP_TOP_OF_STACK. */ + cli + jmp int_with_check badsys: movq $-ENOSYS,RAX-ARGOFFSET(%rsp) @@ -279,7 +290,8 @@ call syscall_trace_leave RESTORE_TOP_OF_STACK %rbx RESTORE_REST - jmp ret_from_sys_call + /* Use IRET because user could have changed frame */ + jmp int_ret_from_sys_call CFI_ENDPROC /* @@ -933,7 +945,7 @@ swapgs paranoid_restore: RESTORE_ALL 8 - iretq + jmp iret_label paranoid_userspace: GET_THREAD_INFO(%rcx) movl threadinfo_flags(%rcx),%ebx --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/kernel/pci-gart.c +++ linux-source-2.6.15-2.6.15/arch/x86_64/kernel/pci-gart.c @@ -30,8 +30,8 @@ #include #include #include - -dma_addr_t bad_dma_address; +#include +#include unsigned long iommu_bus_base; /* GART remapping area (physical) */ static unsigned long iommu_size; /* size of remapping area bytes */ @@ -39,18 +39,6 @@ u32 *iommu_gatt_base; /* Remapping table */ -int no_iommu; -static int no_agp; -#ifdef CONFIG_IOMMU_DEBUG -int panic_on_overflow = 1; -int force_iommu = 1; -#else -int panic_on_overflow = 0; -int force_iommu = 0; -#endif -int iommu_merge = 1; -int iommu_sac_force = 0; - /* If this is disabled the IOMMU will use an optimized flushing strategy of only flushing when an mapping is reused. With it true the GART is flushed for every mapping. Problem is that doing the lazy flush seems to trigger @@ -58,10 +46,6 @@ also seen with Qlogic at least). */ int iommu_fullflush = 1; -/* This tells the BIO block layer to assume merging. Default to off - because we cannot guarantee merging later. */ -int iommu_bio_merge = 0; - #define MAX_NB 8 /* Allocation bitmap for the remapping area */ @@ -102,16 +86,6 @@ static unsigned long next_bit; /* protected by iommu_bitmap_lock */ static int need_flush; /* global flush state. set for each gart wrap */ -static dma_addr_t dma_map_area(struct device *dev, unsigned long phys_mem, - size_t size, int dir, int do_panic); - -/* Dummy device used for NULL arguments (normally ISA). Better would - be probably a smaller DMA mask, but this is bug-to-bug compatible to i386. */ -static struct device fallback_dev = { - .bus_id = "fallback device", - .coherent_dma_mask = 0xffffffff, - .dma_mask = &fallback_dev.coherent_dma_mask, -}; static unsigned long alloc_iommu(int size) { @@ -185,115 +159,7 @@ spin_unlock_irqrestore(&iommu_bitmap_lock, flags); } -/* Allocate DMA memory on node near device */ -noinline -static void *dma_alloc_pages(struct device *dev, gfp_t gfp, unsigned order) -{ - struct page *page; - int node; - if (dev->bus == &pci_bus_type) - node = pcibus_to_node(to_pci_dev(dev)->bus); - else - node = numa_node_id(); - page = alloc_pages_node(node, gfp, order); - return page ? page_address(page) : NULL; -} - -/* - * Allocate memory for a coherent mapping. - */ -void * -dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, - gfp_t gfp) -{ - void *memory; - unsigned long dma_mask = 0; - u64 bus; - if (!dev) - dev = &fallback_dev; - dma_mask = dev->coherent_dma_mask; - if (dma_mask == 0) - dma_mask = 0xffffffff; - - /* Kludge to make it bug-to-bug compatible with i386. i386 - uses the normal dma_mask for alloc_coherent. */ - dma_mask &= *dev->dma_mask; - - /* Why <=? Even when the mask is smaller than 4GB it is often larger - than 16MB and in this case we have a chance of finding fitting memory - in the next higher zone first. If not retry with true GFP_DMA. -AK */ - if (dma_mask <= 0xffffffff) - gfp |= GFP_DMA32; - - again: - memory = dma_alloc_pages(dev, gfp, get_order(size)); - if (memory == NULL) - return NULL; - - { - int high, mmu; - bus = virt_to_bus(memory); - high = (bus + size) >= dma_mask; - mmu = high; - if (force_iommu && !(gfp & GFP_DMA)) - mmu = 1; - if (no_iommu || dma_mask < 0xffffffffUL) { - if (high) { - free_pages((unsigned long)memory, - get_order(size)); - - if (swiotlb) { - gfp &= ~(GFP_DMA32|GFP_DMA); - return - swiotlb_alloc_coherent(dev, size, - dma_handle, - gfp); - } - - if (!(gfp & GFP_DMA)) { - gfp = (gfp & ~GFP_DMA32) | GFP_DMA; - goto again; - } - return NULL; - } - mmu = 0; - } - memset(memory, 0, size); - if (!mmu) { - *dma_handle = virt_to_bus(memory); - return memory; - } - } - - *dma_handle = dma_map_area(dev, bus, size, PCI_DMA_BIDIRECTIONAL, 0); - if (*dma_handle == bad_dma_address) - goto error; - flush_gart(dev); - return memory; - -error: - if (panic_on_overflow) - panic("dma_alloc_coherent: IOMMU overflow by %lu bytes\n", size); - free_pages((unsigned long)memory, get_order(size)); - return NULL; -} - -/* - * Unmap coherent memory. - * The caller must ensure that the device has finished accessing the mapping. - */ -void dma_free_coherent(struct device *dev, size_t size, - void *vaddr, dma_addr_t bus) -{ - if (swiotlb) { - swiotlb_free_coherent(dev, size, vaddr, bus); - return; - } - - dma_unmap_single(dev, bus, size, 0); - free_pages((unsigned long)vaddr, get_order(size)); -} #ifdef CONFIG_IOMMU_LEAK @@ -327,7 +193,7 @@ #define CLEAR_LEAK(x) #endif -static void iommu_full(struct device *dev, size_t size, int dir, int do_panic) +static void iommu_full(struct device *dev, size_t size, int dir) { /* * Ran out of IOMMU space for this operation. This is very bad. @@ -343,11 +209,11 @@ "PCI-DMA: Out of IOMMU space for %lu bytes at device %s\n", size, dev->bus_id); - if (size > PAGE_SIZE*EMERGENCY_PAGES && do_panic) { + if (size > PAGE_SIZE*EMERGENCY_PAGES) { if (dir == PCI_DMA_FROMDEVICE || dir == PCI_DMA_BIDIRECTIONAL) panic("PCI-DMA: Memory would be corrupted\n"); if (dir == PCI_DMA_TODEVICE || dir == PCI_DMA_BIDIRECTIONAL) - panic("PCI-DMA: Random memory would be DMAed\n"); + panic(KERN_ERR "PCI-DMA: Random memory would be DMAed\n"); } #ifdef CONFIG_IOMMU_LEAK @@ -386,8 +252,8 @@ /* Map a single continuous physical area into the IOMMU. * Caller needs to check if the iommu is needed and flush. */ -static dma_addr_t dma_map_area(struct device *dev, unsigned long phys_mem, - size_t size, int dir, int do_panic) +static dma_addr_t dma_map_area(struct device *dev, dma_addr_t phys_mem, + size_t size, int dir) { unsigned long npages = to_pages(phys_mem, size); unsigned long iommu_page = alloc_iommu(npages); @@ -397,7 +263,7 @@ return phys_mem; if (panic_on_overflow) panic("dma_map_area overflow %lu bytes\n", size); - iommu_full(dev, size, dir, do_panic); + iommu_full(dev, size, dir); return bad_dma_address; } @@ -409,15 +275,21 @@ return iommu_bus_base + iommu_page*PAGE_SIZE + (phys_mem & ~PAGE_MASK); } +static dma_addr_t gart_map_simple(struct device *dev, char *buf, + size_t size, int dir) +{ + dma_addr_t map = dma_map_area(dev, virt_to_bus(buf), size, dir); + flush_gart(dev); + return map; +} + /* Map a single area into the IOMMU */ -dma_addr_t dma_map_single(struct device *dev, void *addr, size_t size, int dir) +dma_addr_t gart_map_single(struct device *dev, void *addr, size_t size, int dir) { unsigned long phys_mem, bus; BUG_ON(dir == DMA_NONE); - if (swiotlb) - return swiotlb_map_single(dev,addr,size,dir); if (!dev) dev = &fallback_dev; @@ -425,10 +297,24 @@ if (!need_iommu(dev, phys_mem, size)) return phys_mem; - bus = dma_map_area(dev, phys_mem, size, dir, 1); - flush_gart(dev); + bus = gart_map_simple(dev, addr, size, dir); return bus; -} +} + +/* + * Wrapper for pci_unmap_single working with scatterlists. + */ +void gart_unmap_sg(struct device *dev, struct scatterlist *sg, int nents, int dir) +{ + int i; + + for (i = 0; i < nents; i++) { + struct scatterlist *s = &sg[i]; + if (!s->dma_length || !s->length) + break; + dma_unmap_single(dev, s->dma_address, s->dma_length, dir); + } +} /* Fallback for dma_map_sg in case of overflow */ static int dma_map_sg_nonforce(struct device *dev, struct scatterlist *sg, @@ -444,10 +330,10 @@ struct scatterlist *s = &sg[i]; unsigned long addr = page_to_phys(s->page) + s->offset; if (nonforced_iommu(dev, addr, s->length)) { - addr = dma_map_area(dev, addr, s->length, dir, 0); + addr = dma_map_area(dev, addr, s->length, dir); if (addr == bad_dma_address) { if (i > 0) - dma_unmap_sg(dev, sg, i, dir); + gart_unmap_sg(dev, sg, i, dir); nents = 0; sg[0].dma_length = 0; break; @@ -516,7 +402,7 @@ * DMA map all entries in a scatterlist. * Merge chunks that have page aligned sizes into a continuous mapping. */ -int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, int dir) +int gart_map_sg(struct device *dev, struct scatterlist *sg, int nents, int dir) { int i; int out; @@ -528,8 +414,6 @@ if (nents == 0) return 0; - if (swiotlb) - return swiotlb_map_sg(dev,sg,nents,dir); if (!dev) dev = &fallback_dev; @@ -572,13 +456,13 @@ error: flush_gart(NULL); - dma_unmap_sg(dev, sg, nents, dir); + gart_unmap_sg(dev, sg, nents, dir); /* When it was forced try again unforced */ if (force_iommu) return dma_map_sg_nonforce(dev, sg, nents, dir); if (panic_on_overflow) panic("dma_map_sg: overflow on %lu pages\n", pages); - iommu_full(dev, pages << PAGE_SHIFT, dir, 0); + iommu_full(dev, pages << PAGE_SHIFT, dir); for (i = 0; i < nents; i++) sg[i].dma_address = bad_dma_address; return 0; @@ -587,18 +471,13 @@ /* * Free a DMA mapping. */ -void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, +void gart_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, int direction) { unsigned long iommu_page; int npages; int i; - if (swiotlb) { - swiotlb_unmap_single(dev,dma_addr,size,direction); - return; - } - if (dma_addr < iommu_bus_base + EMERGENCY_PAGES*PAGE_SIZE || dma_addr >= iommu_bus_base + iommu_size) return; @@ -611,68 +490,7 @@ free_iommu(iommu_page, npages); } -/* - * Wrapper for pci_unmap_single working with scatterlists. - */ -void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nents, int dir) -{ - int i; - if (swiotlb) { - swiotlb_unmap_sg(dev,sg,nents,dir); - return; - } - for (i = 0; i < nents; i++) { - struct scatterlist *s = &sg[i]; - if (!s->dma_length || !s->length) - break; - dma_unmap_single(dev, s->dma_address, s->dma_length, dir); - } -} - -int dma_supported(struct device *dev, u64 mask) -{ - /* Copied from i386. Doesn't make much sense, because it will - only work for pci_alloc_coherent. - The caller just has to use GFP_DMA in this case. */ - if (mask < 0x00ffffff) - return 0; - - /* Tell the device to use SAC when IOMMU force is on. - This allows the driver to use cheaper accesses in some cases. - - Problem with this is that if we overflow the IOMMU area - and return DAC as fallback address the device may not handle it correctly. - - As a special case some controllers have a 39bit address mode - that is as efficient as 32bit (aic79xx). Don't force SAC for these. - Assume all masks <= 40 bits are of this type. Normally this doesn't - make any difference, but gives more gentle handling of IOMMU overflow. */ - if (iommu_sac_force && (mask >= 0xffffffffffULL)) { - printk(KERN_INFO "%s: Force SAC with mask %Lx\n", dev->bus_id,mask); - return 0; - } - - return 1; -} - -int dma_get_cache_alignment(void) -{ - return boot_cpu_data.x86_clflush_size; -} - -EXPORT_SYMBOL(dma_unmap_sg); -EXPORT_SYMBOL(dma_map_sg); -EXPORT_SYMBOL(dma_map_single); -EXPORT_SYMBOL(dma_unmap_single); -EXPORT_SYMBOL(dma_supported); -EXPORT_SYMBOL(no_iommu); -EXPORT_SYMBOL(force_iommu); -EXPORT_SYMBOL(bad_dma_address); -EXPORT_SYMBOL(iommu_bio_merge); -EXPORT_SYMBOL(iommu_sac_force); -EXPORT_SYMBOL(dma_get_cache_alignment); -EXPORT_SYMBOL(dma_alloc_coherent); -EXPORT_SYMBOL(dma_free_coherent); +static int no_agp; static __init unsigned long check_iommu_size(unsigned long aper, u64 aper_size) { @@ -747,7 +565,11 @@ gatt_size = (aper_size >> PAGE_SHIFT) * sizeof(u32); gatt = (void *)__get_free_pages(GFP_KERNEL, get_order(gatt_size)); if (!gatt) - panic("Cannot allocate GATT table"); + panic("Cannot allocate GATT table"); + if (change_page_attr_addr((unsigned long)gatt, gatt_size >> PAGE_SHIFT, PAGE_KERNEL_NOCACHE)) + panic("Could not set GART PTEs to uncacheable pages"); + global_flush_tlb(); + memset(gatt, 0, gatt_size); agp_gatt_table = gatt; @@ -779,6 +601,21 @@ extern int agp_amd64_init(void); +static struct dma_mapping_ops gart_dma_ops = { + .mapping_error = NULL, + .map_single = gart_map_single, + .map_simple = gart_map_simple, + .unmap_single = gart_unmap_single, + .sync_single_for_cpu = NULL, + .sync_single_for_device = NULL, + .sync_single_range_for_cpu = NULL, + .sync_single_range_for_device = NULL, + .sync_sg_for_cpu = NULL, + .sync_sg_for_device = NULL, + .map_sg = gart_map_sg, + .unmap_sg = gart_unmap_sg, +}; + static int __init pci_iommu_init(void) { struct agp_kern_info info; @@ -800,19 +637,27 @@ if (swiotlb) { no_iommu = 1; - printk(KERN_INFO "PCI-DMA: Using software bounce buffering for IO (SWIOTLB)\n"); return -1; } if (no_iommu || - (!force_iommu && end_pfn < 0xffffffff>>PAGE_SHIFT) || + (!force_iommu && end_pfn <= MAX_DMA32_PFN) || !iommu_aperture || (no_agp && init_k8_gatt(&info) < 0)) { - printk(KERN_INFO "PCI-DMA: Disabling IOMMU.\n"); no_iommu = 1; + no_iommu_init(); + printk(KERN_INFO "PCI-DMA: Disabling IOMMU.\n"); + if (end_pfn > MAX_DMA32_PFN) { + printk(KERN_ERR "WARNING more than 4GB of memory " + "but IOMMU not compiled in.\n" + KERN_ERR "WARNING 32bit PCI may malfunction.\n" + KERN_ERR "You might want to enable " + "CONFIG_GART_IOMMU\n"); + } return -1; } + printk(KERN_INFO "PCI-DMA: using GART IOMMU.\n"); aper_size = info.aper_size * 1024 * 1024; iommu_size = check_iommu_size(info.aper_base, aper_size); iommu_pages = iommu_size >> PAGE_SHIFT; @@ -886,100 +731,49 @@ flush_gart(NULL); + dma_ops = &gart_dma_ops; + return 0; } /* Must execute after PCI subsystem */ fs_initcall(pci_iommu_init); -/* iommu=[size][,noagp][,off][,force][,noforce][,leak][,memaper[=order]][,merge] - [,forcesac][,fullflush][,nomerge][,biomerge] - size set size of iommu (in bytes) - noagp don't initialize the AGP driver and use full aperture. - off don't use the IOMMU - leak turn on simple iommu leak tracing (only when CONFIG_IOMMU_LEAK is on) - memaper[=order] allocate an own aperture over RAM with size 32MB^order. - noforce don't force IOMMU usage. Default. - force Force IOMMU. - merge Do lazy merging. This may improve performance on some block devices. - Implies force (experimental) - biomerge Do merging at the BIO layer. This is more efficient than merge, - but should be only done with very big IOMMUs. Implies merge,force. - nomerge Don't do SG merging. - forcesac For SAC mode for masks <40bits (experimental) - fullflush Flush IOMMU on each allocation (default) - nofullflush Don't use IOMMU fullflush - allowed overwrite iommu off workarounds for specific chipsets. - soft Use software bounce buffering (default for Intel machines) - noaperture Don't touch the aperture for AGP. -*/ -__init int iommu_setup(char *p) -{ - int arg; +void gart_parse_options(char *p) +{ + int arg; - while (*p) { - if (!strncmp(p,"noagp",5)) - no_agp = 1; - if (!strncmp(p,"off",3)) - no_iommu = 1; - if (!strncmp(p,"force",5)) { - force_iommu = 1; - iommu_aperture_allowed = 1; - } - if (!strncmp(p,"allowed",7)) - iommu_aperture_allowed = 1; - if (!strncmp(p,"noforce",7)) { - iommu_merge = 0; - force_iommu = 0; - } - if (!strncmp(p, "memaper", 7)) { - fallback_aper_force = 1; - p += 7; - if (*p == '=') { - ++p; - if (get_option(&p, &arg)) - fallback_aper_order = arg; - } - } - if (!strncmp(p, "biomerge",8)) { - iommu_bio_merge = 4096; - iommu_merge = 1; - force_iommu = 1; - } - if (!strncmp(p, "panic",5)) - panic_on_overflow = 1; - if (!strncmp(p, "nopanic",7)) - panic_on_overflow = 0; - if (!strncmp(p, "merge",5)) { - iommu_merge = 1; - force_iommu = 1; - } - if (!strncmp(p, "nomerge",7)) - iommu_merge = 0; - if (!strncmp(p, "forcesac",8)) - iommu_sac_force = 1; - if (!strncmp(p, "fullflush",8)) - iommu_fullflush = 1; - if (!strncmp(p, "nofullflush",11)) - iommu_fullflush = 0; - if (!strncmp(p, "soft",4)) - swiotlb = 1; - if (!strncmp(p, "noaperture",10)) - fix_aperture = 0; #ifdef CONFIG_IOMMU_LEAK - if (!strncmp(p,"leak",4)) { - leak_trace = 1; - p += 4; - if (*p == '=') ++p; - if (isdigit(*p) && get_option(&p, &arg)) - iommu_leak_pages = arg; - } else + if (!strncmp(p,"leak",4)) { + leak_trace = 1; + p += 4; + if (*p == '=') ++p; + if (isdigit(*p) && get_option(&p, &arg)) + iommu_leak_pages = arg; + } #endif - if (isdigit(*p) && get_option(&p, &arg)) - iommu_size = arg; - p += strcspn(p, ","); - if (*p == ',') - ++p; - } - return 1; -} + if (isdigit(*p) && get_option(&p, &arg)) + iommu_size = arg; + if (!strncmp(p, "fullflush",8)) + iommu_fullflush = 1; + if (!strncmp(p, "nofullflush",11)) + iommu_fullflush = 0; + if (!strncmp(p,"noagp",5)) + no_agp = 1; + if (!strncmp(p, "noaperture",10)) + fix_aperture = 0; + /* duplicated from pci-dma.c */ + if (!strncmp(p,"force",5)) + iommu_aperture_allowed = 1; + if (!strncmp(p,"allowed",7)) + iommu_aperture_allowed = 1; + if (!strncmp(p, "memaper", 7)) { + fallback_aper_force = 1; + p += 7; + if (*p == '=') { + ++p; + if (get_option(&p, &arg)) + fallback_aper_order = arg; + } + } +} --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/ia32/ia32entry.S +++ linux-source-2.6.15-2.6.15/arch/x86_64/ia32/ia32entry.S @@ -35,6 +35,18 @@ movq %rax,R8(%rsp) .endm + .macro LOAD_ARGS32 offset + movl \offset(%rsp),%r11d + movl \offset+8(%rsp),%r10d + movl \offset+16(%rsp),%r9d + movl \offset+24(%rsp),%r8d + movl \offset+40(%rsp),%ecx + movl \offset+48(%rsp),%edx + movl \offset+56(%rsp),%esi + movl \offset+64(%rsp),%edi + movl \offset+72(%rsp),%eax + .endm + /* * 32bit SYSENTER instruction entry. * @@ -128,7 +140,7 @@ movq $-ENOSYS,RAX(%rsp) /* really needed? */ movq %rsp,%rdi /* &pt_regs -> arg1 */ call syscall_trace_enter - LOAD_ARGS ARGOFFSET /* reload args from stack in case ptrace changed it */ + LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */ RESTORE_REST movl %ebp, %ebp /* no need to do an access_ok check here because rbp has been @@ -221,7 +233,7 @@ movq $-ENOSYS,RAX(%rsp) /* really needed? */ movq %rsp,%rdi /* &pt_regs -> arg1 */ call syscall_trace_enter - LOAD_ARGS ARGOFFSET /* reload args from stack in case ptrace changed it */ + LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */ RESTORE_REST movl RSP-ARGOFFSET(%rsp), %r8d /* no need to do an access_ok check here because r8 has been @@ -292,7 +304,7 @@ movq $-ENOSYS,RAX(%rsp) /* really needed? */ movq %rsp,%rdi /* &pt_regs -> arg1 */ call syscall_trace_enter - LOAD_ARGS ARGOFFSET /* reload args from stack in case ptrace changed it */ + LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */ RESTORE_REST jmp ia32_do_syscall --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/Kconfig +++ linux-source-2.6.15-2.6.15/arch/x86_64/Kconfig @@ -247,6 +247,15 @@ which can be modified by using the smp-alt-disable or smp-alt-enable kernel command line options. +config SCHED_MC + bool "Multi-core scheduler support" + depends on SMP + default y + help + Multi-core scheduler support improves the CPU scheduler's decision + making when dealing with multi-core CPU chips at a cost of slightly + increased overhead in some places. If unsure say N here. + source "kernel/Kconfig.preempt" config NUMA @@ -370,32 +379,24 @@ depends on HPET_TIMER && RTC=y config GART_IOMMU - bool "IOMMU support" + bool "K8 GART IOMMU support" default y + select SWIOTLB depends on PCI help Support the IOMMU. Needed to run systems with more than 3GB of memory properly with 32-bit PCI devices that do not support DAC (Double Address Cycle). The IOMMU can be turned off at runtime with the iommu=off parameter. Normally the kernel will take the right choice by itself. - This option includes a driver for the AMD Opteron/Athlon64 IOMMU - and a software emulation used on some other systems. + This option includes a driver for the AMD Opteron/Athlon64 northbridge IOMMU + and a software emulation used on other systems. If unsure, say Y. # need this always enabled with GART_IOMMU for the VIA workaround config SWIOTLB - bool - depends on GART_IOMMU - default y - -config DUMMY_IOMMU bool - depends on !GART_IOMMU && !SWIOTLB default y - help - Don't use IOMMU code. This will cause problems when you have more than 4GB - of memory and any 32-bit devices. Don't turn on unless you know what you - are doing. + depends on GART_IOMMU config X86_MCE bool "Machine check support" if EMBEDDED @@ -467,6 +468,18 @@ If unsure, say Y. Only embedded should say N here. +config SECCOMP_DISABLE_TSC + bool "Disable the TSC for seccomp tasks" + depends on SECCOMP + default n + help + This feature mathematically prevents covert channels + for tasks running under SECCOMP. This can generate + a minuscule overhead in the scheduler. + + If you care most about performance say N. Say Y only if you're + paranoid about covert channels. + source kernel/Kconfig.hz endmenu --- linux-source-2.6.15-2.6.15.orig/arch/x86_64/lib/copy_user.S +++ linux-source-2.6.15-2.6.15/arch/x86_64/lib/copy_user.S @@ -93,7 +93,7 @@ .byte 5 .byte 5 .previous -.Lcug: +.Lcug: pushq %rbx xorl %eax,%eax /*zero for the exception handler */ @@ -275,20 +275,30 @@ * eax uncopied bytes or 0 if successfull. */ copy_user_generic_c: + xorq %rax,%rax movl %edx,%ecx shrl $3,%ecx - andl $7,%edx -1: rep + andl $7,%edx +.Lc1: rep movsq movl %edx,%ecx -2: rep +.Lc2: rep movsb -4: movl %ecx,%eax ret -3: lea (%rdx,%rcx,8),%rax + +.Lc1e: movq %rcx,%rsi +.Lc3: rep + stosq +.Lc2e: movl %edx,%ecx +.Lc4: rep + stosb +.Lc3e: leaq (%rdx,%rsi,8),%rax ret - + .section __ex_table,"a" - .quad 1b,3b - .quad 2b,4b + .align 8 + .quad .Lc1,.Lc1e + .quad .Lc2,.Lc2e + .quad .Lc3,.Lc3e + .quad .Lc4,.Lc3e .previous --- linux-source-2.6.15-2.6.15.orig/drivers/acpi/processor_idle.c +++ linux-source-2.6.15-2.6.15/drivers/acpi/processor_idle.c @@ -878,6 +878,12 @@ unsigned int i; unsigned int working = 0; +#ifdef ARCH_APICTIMER_STOPS_ON_C3 + int timer_broadcast = 0; + cpumask_t mask = cpumask_of_cpu(pr->id); + on_each_cpu(switch_ipi_to_APIC_timer, &mask, 1, 1); +#endif + for (i = 1; i < ACPI_PROCESSOR_MAX_POWER; i++) { struct acpi_processor_cx *cx = &pr->power.states[i]; @@ -888,10 +894,21 @@ case ACPI_STATE_C2: acpi_processor_power_verify_c2(cx); +#ifdef ARCH_APICTIMER_STOPS_ON_C3 + /* Some AMD systems fake C3 as C2, but still + have timer troubles */ + if (cx->valid && + boot_cpu_data.x86_vendor == X86_VENDOR_AMD) + timer_broadcast++; +#endif break; case ACPI_STATE_C3: acpi_processor_power_verify_c3(pr, cx); +#ifdef ARCH_APICTIMER_STOPS_ON_C3 + if (cx->valid) + timer_broadcast++; +#endif break; } @@ -899,6 +916,11 @@ working++; } +#ifdef ARCH_APICTIMER_STOPS_ON_C3 + if (timer_broadcast) + on_each_cpu(switch_APIC_timer_to_ipi, &mask, 1, 1); +#endif + return (working); } --- linux-source-2.6.15-2.6.15.orig/drivers/acpi/sleep/main.c +++ linux-source-2.6.15-2.6.15/drivers/acpi/sleep/main.c @@ -17,6 +17,7 @@ #include #include #include +#include #include "sleep.h" int acpi_in_suspend; @@ -37,6 +38,7 @@ }; static int init_8259A_after_S1; +static int ich7_sci_en_quirk_enabled; /** * acpi_pm_prepare - Do preliminary suspend work. @@ -98,6 +100,14 @@ case PM_SUSPEND_MEM: do_suspend_lowlevel(); + + if (ich7_sci_en_quirk_enabled) + { + int pm1c = inw(0x404); + pm1c |= 0x01; /* SCI_EN */ + outw (pm1c, 0x404); + } + break; case PM_SUSPEND_DISK: @@ -190,12 +200,31 @@ return 0; } +/* + * Apple Macbook comes back from sleep with the SCI_EN bit disabled + * causing a flood of unacknowledged IRQ9s. We need to set SCI_EN + * as soon as we come back + */ +static int __init init_ich7_sci_en_quirk(struct dmi_system_id *d) +{ + printk(KERN_WARNING "%s detected (ICH7 SCI_EN quirk enabled)\n", + d->ident); + ich7_sci_en_quirk_enabled = 1; + return 0; +} + + static struct dmi_system_id __initdata acpisleep_dmi_table[] = { { .callback = init_ints_after_s1, .ident = "Toshiba Satellite 4030cdt", .matches = {DMI_MATCH(DMI_PRODUCT_NAME, "S4030CDT/4.3"),}, }, + { + .callback = init_ich7_sci_en_quirk, + .ident = "Apple MacBook", + .matches = {DMI_MATCH(DMI_PRODUCT_NAME, "MacBook1,1"),}, + }, {}, }; --- linux-source-2.6.15-2.6.15.orig/drivers/acpi/ec.c +++ linux-source-2.6.15-2.6.15/drivers/acpi/ec.c @@ -53,8 +53,8 @@ #define ACPI_EC_EVENT_IBE 0x02 /* Input buffer empty */ #define ACPI_EC_DELAY 50 /* Wait 50ms max. during EC ops */ #define ACPI_EC_UDELAY_GLK 1000 /* Wait 1ms max. to get global lock */ -#define ACPI_EC_UDELAY 100 /* Poll @ 100us increments */ -#define ACPI_EC_UDELAY_COUNT 1000 /* Wait 10ms max. during EC ops */ +#define ACPI_EC_MSLEEP 1 /* Poll @ 1ms increments */ +#define ACPI_EC_MSLEEP_COUNT 10 /* Wait 10ms max. during EC ops */ #define ACPI_EC_COMMAND_READ 0x80 #define ACPI_EC_COMMAND_WRITE 0x81 #define ACPI_EC_BURST_ENABLE 0x82 @@ -116,7 +116,7 @@ struct acpi_generic_address command_addr; struct acpi_generic_address data_addr; unsigned long global_lock; - spinlock_t lock; + struct semaphore sem; } poll; }; @@ -172,7 +172,7 @@ static int acpi_ec_poll_wait(union acpi_ec *ec, u8 event) { u32 acpi_ec_status = 0; - u32 i = ACPI_EC_UDELAY_COUNT; + u32 i = ACPI_EC_MSLEEP_COUNT; if (!ec) return -EINVAL; @@ -185,7 +185,7 @@ &ec->common.status_addr); if (acpi_ec_status & ACPI_EC_FLAG_OBF) return 0; - udelay(ACPI_EC_UDELAY); + msleep(ACPI_EC_MSLEEP); } while (--i > 0); break; case ACPI_EC_EVENT_IBE: @@ -194,7 +194,7 @@ &ec->common.status_addr); if (!(acpi_ec_status & ACPI_EC_FLAG_IBF)) return 0; - udelay(ACPI_EC_UDELAY); + msleep(ACPI_EC_MSLEEP); } while (--i > 0); break; default: @@ -214,7 +214,7 @@ switch (event) { case ACPI_EC_EVENT_IBE: - if (~acpi_ec_read_status(ec) & event) { + if (~acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF) { ec->intr.expect_event = 0; return_VALUE(0); } @@ -326,7 +326,6 @@ { acpi_status status = AE_OK; int result = 0; - unsigned long flags = 0; u32 glk = 0; ACPI_FUNCTION_TRACE("acpi_ec_read"); @@ -342,7 +341,10 @@ return_VALUE(-ENODEV); } - spin_lock_irqsave(&ec->poll.lock, flags); + if (down_interruptible(&ec->poll.sem)) { + result = -ERESTARTSYS; + goto end_nosem; + } acpi_hw_low_level_write(8, ACPI_EC_COMMAND_READ, &ec->common.command_addr); @@ -361,7 +363,8 @@ *data, address)); end: - spin_unlock_irqrestore(&ec->poll.lock, flags); + up(&ec->poll.sem); +end_nosem: if (ec->common.global_lock) acpi_release_global_lock(glk); @@ -387,7 +390,10 @@ return_VALUE(-ENODEV); } - spin_lock_irqsave(&ec->poll.lock, flags); + if (down_interruptible(&ec->poll.sem)) { + result = -ERESTARTSYS; + goto end_nosem; + } acpi_hw_low_level_write(8, ACPI_EC_COMMAND_WRITE, &ec->common.command_addr); @@ -409,7 +415,8 @@ data, address)); end: - spin_unlock_irqrestore(&ec->poll.lock, flags); + up(&ec->poll.sem); +end_nosem: if (ec->common.global_lock) acpi_release_global_lock(glk); @@ -592,7 +599,10 @@ * Note that successful completion of the query causes the ACPI_EC_SCI * bit to be cleared (and thus clearing the interrupt source). */ - spin_lock_irqsave(&ec->poll.lock, flags); + if (down_interruptible(&ec->poll.sem)) { + result = -ERESTARTSYS; + goto end_nosem; + } acpi_hw_low_level_write(8, ACPI_EC_COMMAND_QUERY, &ec->common.command_addr); @@ -605,7 +615,8 @@ result = -ENODATA; end: - spin_unlock_irqrestore(&ec->poll.lock, flags); + up(&ec->poll.sem); +end_nosem: if (ec->common.global_lock) acpi_release_global_lock(glk); @@ -694,9 +705,10 @@ if (!ec_cxt) goto end; - spin_lock_irqsave(&ec->poll.lock, flags); + if (down_interruptible (&ec->poll.sem)) + return_VOID; acpi_hw_low_level_read(8, &value, &ec->common.command_addr); - spin_unlock_irqrestore(&ec->poll.lock, flags); + up(&ec->poll.sem); /* TBD: Implement asynch events! * NOTE: All we care about are EC-SCI's. Other EC events are @@ -790,12 +802,15 @@ case ACPI_EC_EVENT_OBF: if (!(value & ACPI_EC_FLAG_OBF)) break; + ec->intr.expect_event = 0; + wake_up(&ec->intr.wait); + break; case ACPI_EC_EVENT_IBE: if ((value & ACPI_EC_FLAG_IBF)) break; ec->intr.expect_event = 0; wake_up(&ec->intr.wait); - return ACPI_INTERRUPT_HANDLED; + break; default: break; } @@ -1008,7 +1023,7 @@ ec->common.handle = device->handle; ec->common.uid = -1; - spin_lock_init(&ec->poll.lock); + init_MUTEX(&ec->poll.sem); strcpy(acpi_device_name(device), ACPI_EC_DEVICE_NAME); strcpy(acpi_device_class(device), ACPI_EC_CLASS); acpi_driver_data(device) = ec; @@ -1303,7 +1318,7 @@ &ec_ecdt->common.gpe_bit); if (ACPI_FAILURE(status)) return status; - spin_lock_init(&ec_ecdt->poll.lock); + init_MUTEX(&ec_ecdt->poll.sem); ec_ecdt->common.global_lock = TRUE; ec_ecdt->common.handle = handle; @@ -1419,7 +1434,7 @@ ec_ecdt->common.status_addr = ecdt_ptr->ec_control; ec_ecdt->common.data_addr = ecdt_ptr->ec_data; ec_ecdt->common.gpe_bit = ecdt_ptr->gpe_bit; - spin_lock_init(&ec_ecdt->poll.lock); + init_MUTEX(&ec_ecdt->poll.sem); /* use the GL just to be safe */ ec_ecdt->common.global_lock = TRUE; ec_ecdt->common.uid = ecdt_ptr->uid; --- linux-source-2.6.15-2.6.15.orig/drivers/acpi/executer/exmutex.c +++ linux-source-2.6.15-2.6.15/drivers/acpi/executer/exmutex.c @@ -238,7 +238,7 @@ if (!obj_desc->mutex.owner_thread) { ACPI_REPORT_ERROR(("Cannot release Mutex [%4.4s], not acquired\n", acpi_ut_get_node_name(obj_desc->mutex.node))); - return_ACPI_STATUS(AE_AML_MUTEX_NOT_ACQUIRED); + return_ACPI_STATUS(AE_OK); } /* Sanity check -- we must have a valid thread ID */ --- linux-source-2.6.15-2.6.15.orig/drivers/acpi/acpi_sbs.c +++ linux-source-2.6.15-2.6.15/drivers/acpi/acpi_sbs.c @@ -73,7 +73,7 @@ MODULE_DESCRIPTION("Smart Battery System ACPI interface driver"); static u16 capacity_mode = 2; -module_param(capacity_mode, ushort, 2); +module_param(capacity_mode, ushort, 0644); static int acpi_sbs_add(struct acpi_device *device); static int acpi_sbs_remove(struct acpi_device *device, int type); --- linux-source-2.6.15-2.6.15.orig/drivers/ide/ide-disk.c +++ linux-source-2.6.15-2.6.15/drivers/ide/ide-disk.c @@ -895,11 +895,7 @@ if (drive->id_read == 0) return; - /* - * CompactFlash cards and their brethern look just like hard drives - * to us, but they are removable and don't have a doorlock mechanism. - */ - if (drive->removable && !(drive->is_flash)) { + if (drive->removable) { /* * Removable disks (eg. SYQUEST); ignore 'WD' drives */ --- linux-source-2.6.15-2.6.15.orig/drivers/ide/pci/alim15x3.c +++ linux-source-2.6.15-2.6.15/drivers/ide/pci/alim15x3.c @@ -731,6 +731,8 @@ if(m5229_revision <= 0x20) tmpbyte = (tmpbyte & (~0x02)) | 0x01; + else if (m5229_revision == 0xc7) + tmpbyte |= 0x03; else tmpbyte |= 0x01; --- linux-source-2.6.15-2.6.15.orig/drivers/ide/pci/via82cxxx.c +++ linux-source-2.6.15-2.6.15/drivers/ide/pci/via82cxxx.c @@ -6,7 +6,7 @@ * * vt82c576, vt82c586, vt82c586a, vt82c586b, vt82c596a, vt82c596b, * vt82c686, vt82c686a, vt82c686b, vt8231, vt8233, vt8233c, vt8233a, - * vt8235, vt8237 + * vt8235, vt8237, vt8237a * * Copyright (c) 2000-2002 Vojtech Pavlik * @@ -82,6 +82,7 @@ { "vt6410", PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, { "vt8251", PCI_DEVICE_ID_VIA_8251, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, { "vt8237", PCI_DEVICE_ID_VIA_8237, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, + { "vt8237a", PCI_DEVICE_ID_VIA_8237A, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, { "vt8235", PCI_DEVICE_ID_VIA_8235, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, { "vt8233a", PCI_DEVICE_ID_VIA_8233A, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, { "vt8233c", PCI_DEVICE_ID_VIA_8233C_0, 0x00, 0x2f, VIA_UDMA_100 }, --- linux-source-2.6.15-2.6.15.orig/drivers/ide/pci/amd74xx.c +++ linux-source-2.6.15-2.6.15/drivers/ide/pci/amd74xx.c @@ -74,6 +74,7 @@ { PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_IDE, 0x50, AMD_UDMA_133 }, { PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_IDE, 0x50, AMD_UDMA_133 }, { PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_IDE, 0x50, AMD_UDMA_133 }, + { PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_IDE, 0x50, AMD_UDMA_133 }, { PCI_DEVICE_ID_AMD_CS5536_IDE, 0x40, AMD_UDMA_100 }, { 0 } }; @@ -492,7 +493,8 @@ /* 14 */ DECLARE_NV_DEV("NFORCE-MCP04"), /* 15 */ DECLARE_NV_DEV("NFORCE-MCP51"), /* 16 */ DECLARE_NV_DEV("NFORCE-MCP55"), - /* 17 */ DECLARE_AMD_DEV("AMD5536"), + /* 17 */ DECLARE_NV_DEV("NFORCE-MCP65"), + /* 18 */ DECLARE_AMD_DEV("AMD5536"), }; static int __devinit amd74xx_probe(struct pci_dev *dev, const struct pci_device_id *id) @@ -529,7 +531,8 @@ { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 14 }, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 15 }, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 16 }, - { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 17 }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 17 }, + { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 18 }, { 0, }, }; MODULE_DEVICE_TABLE(pci, amd74xx_pci_tbl); --- linux-source-2.6.15-2.6.15.orig/drivers/ide/ide-probe.c +++ linux-source-2.6.15-2.6.15/drivers/ide/ide-probe.c @@ -125,45 +125,6 @@ } /** - * drive_is_flashcard - check for compact flash - * @drive: drive to check - * - * CompactFlash cards and their brethern pretend to be removable - * hard disks, except: - * (1) they never have a slave unit, and - * (2) they don't have doorlock mechanisms. - * This test catches them, and is invoked elsewhere when setting - * appropriate config bits. - * - * FIXME: This treatment is probably applicable for *all* PCMCIA (PC CARD) - * devices, so in linux 2.3.x we should change this to just treat all - * PCMCIA drives this way, and get rid of the model-name tests below - * (too big of an interface change for 2.4.x). - * At that time, we might also consider parameterizing the timeouts and - * retries, since these are MUCH faster than mechanical drives. -M.Lord - */ - -static inline int drive_is_flashcard (ide_drive_t *drive) -{ - struct hd_driveid *id = drive->id; - - if (drive->removable) { - if (id->config == 0x848a) return 1; /* CompactFlash */ - if (!strncmp(id->model, "KODAK ATA_FLASH", 15) /* Kodak */ - || !strncmp(id->model, "Hitachi CV", 10) /* Hitachi */ - || !strncmp(id->model, "SunDisk SDCFB", 13) /* old SanDisk */ - || !strncmp(id->model, "SanDisk SDCFB", 13) /* SanDisk */ - || !strncmp(id->model, "HAGIWARA HPC", 12) /* Hagiwara */ - || !strncmp(id->model, "LEXAR ATA_FLASH", 15) /* Lexar */ - || !strncmp(id->model, "ATA_FLASH", 9)) /* Simple Tech */ - { - return 1; /* yes, it is a flash memory card */ - } - } - return 0; /* no, it is not a flash memory card */ -} - -/** * do_identify - identify a drive * @drive: drive to identify * @cmd: command used @@ -278,13 +239,17 @@ /* * Not an ATAPI device: looks like a "regular" hard disk */ - if (id->config & (1<<7)) + + /* + * 0x848a = CompactFlash device + * These are *not* removable in Linux definition of the term + */ + + if ((id->config != 0x848a) && (id->config & (1<<7))) drive->removable = 1; - if (drive_is_flashcard(drive)) - drive->is_flash = 1; drive->media = ide_disk; - printk("%s DISK drive\n", (drive->is_flash) ? "CFA" : "ATA" ); + printk("%s DISK drive\n", (id->config == 0x848a) ? "CFA" : "ATA" ); QUIRK_LIST(drive); return; --- linux-source-2.6.15-2.6.15.orig/drivers/ide/ide.c +++ linux-source-2.6.15-2.6.15/drivers/ide/ide.c @@ -251,7 +251,6 @@ drive->name[2] = 'a' + (index * MAX_DRIVES) + unit; drive->max_failures = IDE_DEFAULT_MAX_FAILURES; drive->using_dma = 0; - drive->is_flash = 0; drive->vdma = 0; INIT_LIST_HEAD(&drive->list); sema_init(&drive->gendev_rel_sem, 0); --- linux-source-2.6.15-2.6.15.orig/drivers/cpufreq/cpufreq.c +++ linux-source-2.6.15-2.6.15/drivers/cpufreq/cpufreq.c @@ -340,6 +340,8 @@ show_one(scaling_max_freq, max); show_one(scaling_cur_freq, cur); +static int __cpufreq_set_policy(struct cpufreq_policy *data, struct cpufreq_policy *policy); + /** * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access */ @@ -358,7 +360,10 @@ if (ret != 1) \ return -EINVAL; \ \ - ret = cpufreq_set_policy(&new_policy); \ + down(&policy->lock); \ + ret = __cpufreq_set_policy(policy, &new_policy); \ + policy->user_policy.object = policy->object; \ + up(&policy->lock); \ \ return ret ? ret : count; \ } @@ -414,7 +419,14 @@ if (cpufreq_parse_governor(str_governor, &new_policy.policy, &new_policy.governor)) return -EINVAL; - ret = cpufreq_set_policy(&new_policy); + /* Do not use cpufreq_set_policy here or the user_policy.max + will be wrongly overridden */ + down(&policy->lock); + ret = __cpufreq_set_policy(policy, &new_policy); + + policy->user_policy.policy = policy->policy; + policy->user_policy.governor = policy->governor; + up(&policy->lock); return ret ? ret : count; } --- linux-source-2.6.15-2.6.15.orig/drivers/isdn/i4l/isdn_net.c +++ linux-source-2.6.15-2.6.15/drivers/isdn/i4l/isdn_net.c @@ -2126,7 +2126,7 @@ u_long flags; isdn_net_dev *p; isdn_net_phone *n; - char nr[32]; + char nr[ISDN_MSNLEN]; char *my_eaz; /* Search name in netdev-chain */ @@ -2135,7 +2135,7 @@ nr[1] = '\0'; printk(KERN_INFO "isdn_net: Incoming call without OAD, assuming '0'\n"); } else - strcpy(nr, setup->phone); + strlcpy(nr, setup->phone, ISDN_MSNLEN); si1 = (int) setup->si1; si2 = (int) setup->si2; if (!setup->eazmsn[0]) { @@ -2804,7 +2804,7 @@ chidx = -1; } } - strcpy(lp->msn, cfg->eaz); + strlcpy(lp->msn, cfg->eaz, sizeof(lp->msn)); lp->pre_device = drvidx; lp->pre_channel = chidx; lp->onhtime = cfg->onhtime; @@ -2953,7 +2953,7 @@ if (p) { if (!(n = (isdn_net_phone *) kmalloc(sizeof(isdn_net_phone), GFP_KERNEL))) return -ENOMEM; - strcpy(n->num, phone->phone); + strlcpy(n->num, phone->phone, sizeof(n->num)); n->next = p->local->phone[phone->outgoing & 1]; p->local->phone[phone->outgoing & 1] = n; return 0; --- linux-source-2.6.15-2.6.15.orig/drivers/isdn/i4l/isdn_common.c +++ linux-source-2.6.15-2.6.15/drivers/isdn/i4l/isdn_common.c @@ -1391,6 +1391,7 @@ if (copy_from_user(&iocts, argp, sizeof(isdn_ioctl_struct))) return -EFAULT; + iocts.drvid[sizeof(iocts.drvid)-1] = 0; if (strlen(iocts.drvid)) { if ((p = strchr(iocts.drvid, ','))) *p = 0; @@ -1475,6 +1476,7 @@ if (copy_from_user(&iocts, argp, sizeof(isdn_ioctl_struct))) return -EFAULT; + iocts.drvid[sizeof(iocts.drvid)-1] = 0; if (strlen(iocts.drvid)) { drvidx = -1; for (i = 0; i < ISDN_MAX_DRIVERS; i++) @@ -1519,7 +1521,7 @@ } else { p = (char __user *) iocts.arg; for (i = 0; i < 10; i++) { - sprintf(bname, "%s%s", + snprintf(bname, sizeof(bname), "%s%s", strlen(dev->drv[drvidx]->msn2eaz[i]) ? dev->drv[drvidx]->msn2eaz[i] : "_", (i < 9) ? "," : "\0"); @@ -1549,6 +1551,7 @@ char *p; if (copy_from_user(&iocts, argp, sizeof(isdn_ioctl_struct))) return -EFAULT; + iocts.drvid[sizeof(iocts.drvid)-1] = 0; if (strlen(iocts.drvid)) { if ((p = strchr(iocts.drvid, ','))) *p = 0; --- linux-source-2.6.15-2.6.15.orig/drivers/isdn/i4l/isdn_ppp.c +++ linux-source-2.6.15-2.6.15/drivers/isdn/i4l/isdn_ppp.c @@ -2346,6 +2346,7 @@ rs->state = CCPResetIdle; rs->is = is; rs->id = id; + init_timer(&rs->timer); rs->timer.data = (unsigned long)rs; rs->timer.function = isdn_ppp_ccp_timer_callback; is->reset->rs[id] = rs; --- linux-source-2.6.15-2.6.15.orig/drivers/cdrom/cdrom.c +++ linux-source-2.6.15-2.6.15/drivers/cdrom/cdrom.c @@ -1010,9 +1010,9 @@ if (fp->f_mode & FMODE_WRITE) { ret = -EROFS; if (cdrom_open_write(cdi)) - goto err; + goto err_release; if (!CDROM_CAN(CDC_RAM)) - goto err; + goto err_release; ret = 0; cdi->media_written = 0; } @@ -1027,6 +1027,8 @@ not be mounting, but opening with O_NONBLOCK */ check_disk_change(ip->i_bdev); return 0; +err_release: + cdi->ops->release(cdi); err: cdi->use_count--; return ret; @@ -1837,7 +1839,7 @@ init_cdrom_command(&cgc, buf, sizeof(buf), CGC_DATA_READ); cgc.cmd[0] = GPCMD_READ_DVD_STRUCTURE; cgc.cmd[7] = s->type; - cgc.cmd[9] = cgc.buflen = 0xff; + cgc.cmd[9] = cgc.buflen & 0xff; if ((ret = cdo->generic_packet(cdi, &cgc))) return ret; --- linux-source-2.6.15-2.6.15.orig/drivers/ieee1394/sbp2.c +++ linux-source-2.6.15-2.6.15/drivers/ieee1394/sbp2.c @@ -502,23 +502,18 @@ /* * This function finds the sbp2_command for a given outstanding SCpnt. * Only looks at the inuse list. + * Must be called with scsi_id->sbp2_command_orb_lock held. */ -static struct sbp2_command_info *sbp2util_find_command_for_SCpnt(struct scsi_id_instance_data *scsi_id, void *SCpnt) +static struct sbp2_command_info *sbp2util_find_command_for_SCpnt( + struct scsi_id_instance_data *scsi_id, void *SCpnt) { struct sbp2_command_info *command; - unsigned long flags; - spin_lock_irqsave(&scsi_id->sbp2_command_orb_lock, flags); - if (!list_empty(&scsi_id->sbp2_command_orb_inuse)) { - list_for_each_entry(command, &scsi_id->sbp2_command_orb_inuse, list) { - if (command->Current_SCpnt == SCpnt) { - spin_unlock_irqrestore(&scsi_id->sbp2_command_orb_lock, flags); - return (command); - } - } - } - spin_unlock_irqrestore(&scsi_id->sbp2_command_orb_lock, flags); - return(NULL); + if (!list_empty(&scsi_id->sbp2_command_orb_inuse)) + list_for_each_entry(command, &scsi_id->sbp2_command_orb_inuse, list) + if (command->Current_SCpnt == SCpnt) + return command; + return NULL; } /* @@ -586,16 +581,15 @@ /* * This function moves a command to the completed orb list. + * Must be called with scsi_id->sbp2_command_orb_lock held. */ -static void sbp2util_mark_command_completed(struct scsi_id_instance_data *scsi_id, struct sbp2_command_info *command) +static void sbp2util_mark_command_completed( + struct scsi_id_instance_data *scsi_id, + struct sbp2_command_info *command) { - unsigned long flags; - - spin_lock_irqsave(&scsi_id->sbp2_command_orb_lock, flags); list_del(&command->list); sbp2util_free_command_dma(command); list_add_tail(&command->list, &scsi_id->sbp2_command_orb_completed); - spin_unlock_irqrestore(&scsi_id->sbp2_command_orb_lock, flags); } /* @@ -2281,7 +2275,9 @@ * Matched status with command, now grab scsi command pointers and check status */ SCpnt = command->Current_SCpnt; + spin_lock_irqsave(&scsi_id->sbp2_command_orb_lock, flags); sbp2util_mark_command_completed(scsi_id, command); + spin_unlock_irqrestore(&scsi_id->sbp2_command_orb_lock, flags); if (SCpnt) { @@ -2601,6 +2597,7 @@ (struct scsi_id_instance_data *)SCpnt->device->host->hostdata[0]; struct sbp2scsi_host_info *hi = scsi_id->hi; struct sbp2_command_info *command; + unsigned long flags; SBP2_ERR("aborting sbp2 command"); scsi_print_command(SCpnt); @@ -2611,6 +2608,7 @@ * Right now, just return any matching command structures * to the free pool. */ + spin_lock_irqsave(&scsi_id->sbp2_command_orb_lock, flags); command = sbp2util_find_command_for_SCpnt(scsi_id, SCpnt); if (command) { SBP2_DEBUG("Found command to abort"); @@ -2628,6 +2626,7 @@ command->Current_done(command->Current_SCpnt); } } + spin_unlock_irqrestore(&scsi_id->sbp2_command_orb_lock, flags); /* * Initiate a fetch agent reset. --- linux-source-2.6.15-2.6.15.orig/drivers/ieee1394/video1394.c +++ linux-source-2.6.15-2.6.15/drivers/ieee1394/video1394.c @@ -19,12 +19,6 @@ * * NOTES: * - * jds -- add private data to file to keep track of iso contexts associated - * with each open -- so release won't kill all iso transfers. - * - * Damien Douxchamps: Fix failure when the number of DMA pages per frame is - * one. - * * ioctl return codes: * EFAULT is only for invalid address for the argp * EINVAL for out of range values @@ -34,12 +28,6 @@ * ENOTTY for unsupported ioctl request * */ - -/* Markus Tavenrath : - - fixed checks for valid buffer-numbers in video1394_icotl - - changed the ways the dma prg's are used, now it's possible to use - even a single dma buffer -*/ #include #include #include @@ -539,7 +527,7 @@ if (d->ir_prg[i][d->nb_cmd-1].status & cpu_to_le32(0xFFFF0000)) { reset_ir_status(d, i); d->buffer_status[d->buffer_prg_assignment[i]] = VIDEO1394_BUFFER_READY; - do_gettimeofday(&d->buffer_time[i]); + do_gettimeofday(&d->buffer_time[d->buffer_prg_assignment[i]]); } } @@ -1046,7 +1034,6 @@ /* set time of buffer */ v.filltime = d->buffer_time[v.buffer]; -// printk("Buffer %d time %d\n", v.buffer, (d->buffer_time[v.buffer]).tv_usec); /* * Look ahead to see how many more buffers have been received @@ -1104,7 +1091,7 @@ spin_lock_irqsave(&d->lock,flags); - // last_buffer is last_prg + /* last_buffer is last_prg */ next_prg = (d->last_buffer + 1) % d->num_desc; if (d->buffer_status[v.buffer]!=VIDEO1394_BUFFER_FREE) { PRINT(KERN_ERR, ohci->host->id, --- linux-source-2.6.15-2.6.15.orig/drivers/input/serio/i8042-x86ia64io.h +++ linux-source-2.6.15-2.6.15/drivers/input/serio/i8042-x86ia64io.h @@ -166,6 +166,27 @@ DMI_MATCH(DMI_PRODUCT_NAME, "Sentia"), }, }, + { + .ident = "Sharp Actius MM20", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SHARP"), + DMI_MATCH(DMI_PRODUCT_NAME, "PC-MM20 Series"), + }, + }, + { + .ident = "Sony Vaio FS-115b", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FS115B"), + }, + }, + { + .ident = "IBM 2656", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "IBM"), + DMI_MATCH(DMI_PRODUCT_NAME, "2656"), + }, + }, { } }; --- linux-source-2.6.15-2.6.15.orig/drivers/input/mouse/psmouse-base.c +++ linux-source-2.6.15-2.6.15/drivers/input/mouse/psmouse-base.c @@ -527,11 +527,15 @@ if (max_proto > PSMOUSE_IMEX && ps2pp_init(psmouse, set_properties) == 0) return PSMOUSE_PS2PP; + if (max_proto > PSMOUSE_IMEX && trackpoint_detect(psmouse, set_properties) == 0) + return PSMOUSE_TRACKPOINT; + /* * Reset to defaults in case the device got confused by extended - * protocol probes. + * protocol probes. Note that we do full reset becuase some mice + * put themselves to sleep when see PSMOUSE_RESET_DIS. */ - ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); + psmouse_reset(psmouse); if (max_proto >= PSMOUSE_IMEX && im_explorer_detect(psmouse, set_properties) == 0) return PSMOUSE_IMEX; @@ -540,12 +544,6 @@ return PSMOUSE_IMPS; /* - * Try to initialize the IBM TrackPoint - */ - if (max_proto > PSMOUSE_IMEX && trackpoint_detect(psmouse, set_properties) == 0) - return PSMOUSE_TRACKPOINT; - -/* * Okay, all failed, we have a standard mouse here. The number of the buttons * is still a question, though. We assume 3. */ @@ -559,7 +557,6 @@ * extensions. */ psmouse_reset(psmouse); - ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); } return PSMOUSE_PS2; --- linux-source-2.6.15-2.6.15.orig/drivers/input/joystick/gamecon.c +++ linux-source-2.6.15-2.6.15/drivers/input/joystick/gamecon.c @@ -159,6 +159,48 @@ } +static void gc_n64_process_packet(struct gc *gc) +{ + unsigned char data[GC_N64_LENGTH]; + signed char axes[2]; + struct input_dev *dev; + int i, j, s; + + gc_n64_read_packet(gc, data); + + for (i = 0; i < GC_MAX_DEVICES; i++) { + + dev = gc->dev[i]; + if (!dev) + continue; + + s = gc_status_bit[i]; + + if (s & gc->pads[GC_N64] & ~(data[8] | data[9])) { + + axes[0] = axes[1] = 0; + + for (j = 0; j < 8; j++) { + if (data[23 - j] & s) + axes[0] |= 1 << j; + if (data[31 - j] & s) + axes[1] |= 1 << j; + } + + input_report_abs(dev, ABS_X, axes[0]); + input_report_abs(dev, ABS_Y, -axes[1]); + + input_report_abs(dev, ABS_HAT0X, !(s & data[6]) - !(s & data[7])); + input_report_abs(dev, ABS_HAT0Y, !(s & data[4]) - !(s & data[5])); + + for (j = 0; j < 10; j++) + input_report_key(dev, gc_n64_btn[j], s & data[gc_n64_bytes[j]]); + + input_sync(dev); + } + } +} + /* * NES/SNES support. */ @@ -198,6 +240,39 @@ } } +static void gc_nes_process_packet(struct gc *gc) +{ + unsigned char data[GC_SNES_LENGTH]; + struct input_dev *dev; + int i, j, s; + + gc_nes_read_packet(gc, gc->pads[GC_SNES] ? GC_SNES_LENGTH : GC_NES_LENGTH, data); + + for (i = 0; i < GC_MAX_DEVICES; i++) { + + dev = gc->dev[i]; + if (!dev) + continue; + + s = gc_status_bit[i]; + + if (s & (gc->pads[GC_NES] | gc->pads[GC_SNES])) { + input_report_abs(dev, ABS_X, !(s & data[6]) - !(s & data[7])); + input_report_abs(dev, ABS_Y, !(s & data[4]) - !(s & data[5])); + } + + if (s & gc->pads[GC_NES]) + for (j = 0; j < 4; j++) + input_report_key(dev, gc_snes_btn[j], s & data[gc_nes_bytes[j]]); + + if (s & gc->pads[GC_SNES]) + for (j = 0; j < 8; j++) + input_report_key(dev, gc_snes_btn[j], s & data[gc_snes_bytes[j]]); + + input_sync(dev); + } +} + /* * Multisystem joystick support */ @@ -219,6 +294,35 @@ } } +static void gc_multi_process_packet(struct gc *gc) +{ + unsigned char data[GC_MULTI2_LENGTH]; + struct input_dev *dev; + int i, s; + + gc_multi_read_packet(gc, gc->pads[GC_MULTI2] ? GC_MULTI2_LENGTH : GC_MULTI_LENGTH, data); + + for (i = 0; i < GC_MAX_DEVICES; i++) { + + dev = gc->dev[i]; + if (!dev) + continue; + + s = gc_status_bit[i]; + + if (s & (gc->pads[GC_MULTI] | gc->pads[GC_MULTI2])) { + input_report_abs(dev, ABS_X, !(s & data[2]) - !(s & data[3])); + input_report_abs(dev, ABS_Y, !(s & data[0]) - !(s & data[1])); + input_report_key(dev, BTN_TRIGGER, s & data[4]); + } + + if (s & gc->pads[GC_MULTI2]) + input_report_key(dev, BTN_THUMB, s & data[5]); + + input_sync(dev); + } +} + /* * PSX support * @@ -263,10 +367,11 @@ * the psx pad. */ -static void gc_psx_command(struct gc *gc, int b, unsigned char data[5]) +static void gc_psx_command(struct gc *gc, int b, unsigned char data[GC_MAX_DEVICES]) { int i, j, cmd, read; - for (i = 0; i < 5; i++) + + for (i = 0; i < GC_MAX_DEVICES; i++) data[i] = 0; for (i = 0; i < GC_PSX_LENGTH; i++, b >>= 1) { @@ -274,7 +379,7 @@ parport_write_data(gc->pd->port, cmd | GC_PSX_POWER); udelay(gc_psx_delay); read = parport_read_status(gc->pd->port) ^ 0x80; - for (j = 0; j < 5; j++) + for (j = 0; j < GC_MAX_DEVICES; j++) data[j] |= (read & gc_status_bit[j] & (gc->pads[GC_PSX] | gc->pads[GC_DDR])) ? (1 << i) : 0; parport_write_data(gc->pd->port, cmd | GC_PSX_CLOCK | GC_PSX_POWER); udelay(gc_psx_delay); @@ -286,11 +391,12 @@ * device identifier code. */ -static void gc_psx_read_packet(struct gc *gc, unsigned char data[5][GC_PSX_BYTES], unsigned char id[5]) +static void gc_psx_read_packet(struct gc *gc, unsigned char data[GC_MAX_DEVICES][GC_PSX_BYTES], + unsigned char id[GC_MAX_DEVICES]) { int i, j, max_len = 0; unsigned long flags; - unsigned char data2[5]; + unsigned char data2[GC_MAX_DEVICES]; parport_write_data(gc->pd->port, GC_PSX_CLOCK | GC_PSX_SELECT | GC_PSX_POWER); /* Select pad */ udelay(gc_psx_delay); @@ -303,7 +409,7 @@ gc_psx_command(gc, 0x42, id); /* Get device ids */ gc_psx_command(gc, 0, data2); /* Dump status */ - for (i =0; i < 5; i++) /* Find the longest pad */ + for (i =0; i < GC_MAX_DEVICES; i++) /* Find the longest pad */ if((gc_status_bit[i] & (gc->pads[GC_PSX] | gc->pads[GC_DDR])) && (GC_PSX_LEN(id[i]) > max_len) && (GC_PSX_LEN(id[i]) <= GC_PSX_BYTES)) @@ -311,7 +417,7 @@ for (i = 0; i < max_len; i++) { /* Read in all the data */ gc_psx_command(gc, 0, data2); - for (j = 0; j < 5; j++) + for (j = 0; j < GC_MAX_DEVICES; j++) data[j][i] = data2[j]; } @@ -319,185 +425,124 @@ parport_write_data(gc->pd->port, GC_PSX_CLOCK | GC_PSX_SELECT | GC_PSX_POWER); - for(i = 0; i < 5; i++) /* Set id's to the real value */ + for(i = 0; i < GC_MAX_DEVICES; i++) /* Set id's to the real value */ id[i] = GC_PSX_ID(id[i]); } -/* - * gc_timer() reads and analyzes console pads data. - */ - -#define GC_MAX_LENGTH GC_N64_LENGTH - -static void gc_timer(unsigned long private) +static void gc_psx_process_packet(struct gc *gc) { - struct gc *gc = (void *) private; - unsigned char data[GC_MAX_LENGTH]; - unsigned char data_psx[5][GC_PSX_BYTES]; - int i, j, s; - -/* - * N64 pads - must be read first, any read confuses them for 200 us - */ + unsigned char data[GC_MAX_DEVICES][GC_PSX_BYTES]; + unsigned char id[GC_MAX_DEVICES]; + struct input_dev *dev; + int i, j; - if (gc->pads[GC_N64]) { + gc_psx_read_packet(gc, data, id); - gc_n64_read_packet(gc, data); + for (i = 0; i < GC_MAX_DEVICES; i++) { - for (i = 0; i < 5; i++) { + dev = gc->dev[i]; + if (!dev) + continue; - s = gc_status_bit[i]; + switch (id[i]) { - if (s & gc->pads[GC_N64] & ~(data[8] | data[9])) { + case GC_PSX_RUMBLE: - signed char axes[2]; - axes[0] = axes[1] = 0; + input_report_key(dev, BTN_THUMBL, ~data[i][0] & 0x04); + input_report_key(dev, BTN_THUMBR, ~data[i][0] & 0x02); - for (j = 0; j < 8; j++) { - if (data[23 - j] & s) axes[0] |= 1 << j; - if (data[31 - j] & s) axes[1] |= 1 << j; - } + case GC_PSX_NEGCON: + case GC_PSX_ANALOG: - input_report_abs(gc->dev[i], ABS_X, axes[0]); - input_report_abs(gc->dev[i], ABS_Y, -axes[1]); + if (gc->pads[GC_DDR] & gc_status_bit[i]) { + for(j = 0; j < 4; j++) + input_report_key(dev, gc_psx_ddr_btn[j], ~data[i][0] & (0x10 << j)); + } else { + for (j = 0; j < 4; j++) + input_report_abs(dev, gc_psx_abs[j + 2], data[i][j + 2]); - input_report_abs(gc->dev[i], ABS_HAT0X, !(s & data[6]) - !(s & data[7])); - input_report_abs(gc->dev[i], ABS_HAT0Y, !(s & data[4]) - !(s & data[5])); + input_report_abs(dev, ABS_X, 128 + !(data[i][0] & 0x20) * 127 - !(data[i][0] & 0x80) * 128); + input_report_abs(dev, ABS_Y, 128 + !(data[i][0] & 0x40) * 127 - !(data[i][0] & 0x10) * 128); + } - for (j = 0; j < 10; j++) - input_report_key(gc->dev[i], gc_n64_btn[j], s & data[gc_n64_bytes[j]]); + for (j = 0; j < 8; j++) + input_report_key(dev, gc_psx_btn[j], ~data[i][1] & (1 << j)); - input_sync(gc->dev[i]); - } - } - } + input_report_key(dev, BTN_START, ~data[i][0] & 0x08); + input_report_key(dev, BTN_SELECT, ~data[i][0] & 0x01); -/* - * NES and SNES pads - */ + input_sync(dev); - if (gc->pads[GC_NES] || gc->pads[GC_SNES]) { + break; - gc_nes_read_packet(gc, gc->pads[GC_SNES] ? GC_SNES_LENGTH : GC_NES_LENGTH, data); + case GC_PSX_NORMAL: + if (gc->pads[GC_DDR] & gc_status_bit[i]) { + for(j = 0; j < 4; j++) + input_report_key(dev, gc_psx_ddr_btn[j], ~data[i][0] & (0x10 << j)); + } else { + input_report_abs(dev, ABS_X, 128 + !(data[i][0] & 0x20) * 127 - !(data[i][0] & 0x80) * 128); + input_report_abs(dev, ABS_Y, 128 + !(data[i][0] & 0x40) * 127 - !(data[i][0] & 0x10) * 128); + + /* for some reason if the extra axes are left unset they drift */ + /* for (j = 0; j < 4; j++) + input_report_abs(dev, gc_psx_abs[j + 2], 128); + * This needs to be debugged properly, + * maybe fuzz processing needs to be done in input_sync() + * --vojtech + */ + } - for (i = 0; i < 5; i++) { + for (j = 0; j < 8; j++) + input_report_key(dev, gc_psx_btn[j], ~data[i][1] & (1 << j)); - s = gc_status_bit[i]; + input_report_key(dev, BTN_START, ~data[i][0] & 0x08); + input_report_key(dev, BTN_SELECT, ~data[i][0] & 0x01); - if (s & (gc->pads[GC_NES] | gc->pads[GC_SNES])) { - input_report_abs(gc->dev[i], ABS_X, !(s & data[6]) - !(s & data[7])); - input_report_abs(gc->dev[i], ABS_Y, !(s & data[4]) - !(s & data[5])); - } + input_sync(dev); - if (s & gc->pads[GC_NES]) - for (j = 0; j < 4; j++) - input_report_key(gc->dev[i], gc_snes_btn[j], s & data[gc_nes_bytes[j]]); + break; - if (s & gc->pads[GC_SNES]) - for (j = 0; j < 8; j++) - input_report_key(gc->dev[i], gc_snes_btn[j], s & data[gc_snes_bytes[j]]); - - input_sync(gc->dev[i]); + case 0: /* not a pad, ignore */ + break; } } +} /* - * Multi and Multi2 joysticks + * gc_timer() initiates reads of console pads data. */ - if (gc->pads[GC_MULTI] || gc->pads[GC_MULTI2]) { +static void gc_timer(unsigned long private) +{ + struct gc *gc = (void *) private; - gc_multi_read_packet(gc, gc->pads[GC_MULTI2] ? GC_MULTI2_LENGTH : GC_MULTI_LENGTH, data); +/* + * N64 pads - must be read first, any read confuses them for 200 us + */ - for (i = 0; i < 5; i++) { + if (gc->pads[GC_N64]) + gc_n64_process_packet(gc); - s = gc_status_bit[i]; +/* + * NES and SNES pads + */ - if (s & (gc->pads[GC_MULTI] | gc->pads[GC_MULTI2])) { - input_report_abs(gc->dev[i], ABS_X, !(s & data[2]) - !(s & data[3])); - input_report_abs(gc->dev[i], ABS_Y, !(s & data[0]) - !(s & data[1])); - input_report_key(gc->dev[i], BTN_TRIGGER, s & data[4]); - } + if (gc->pads[GC_NES] || gc->pads[GC_SNES]) + gc_nes_process_packet(gc); - if (s & gc->pads[GC_MULTI2]) - input_report_key(gc->dev[i], BTN_THUMB, s & data[5]); +/* + * Multi and Multi2 joysticks + */ - input_sync(gc->dev[i]); - } - } + if (gc->pads[GC_MULTI] || gc->pads[GC_MULTI2]) + gc_multi_process_packet(gc); /* * PSX controllers */ - if (gc->pads[GC_PSX] || gc->pads[GC_DDR]) { - - gc_psx_read_packet(gc, data_psx, data); - - for (i = 0; i < 5; i++) { - switch (data[i]) { - - case GC_PSX_RUMBLE: - - input_report_key(gc->dev[i], BTN_THUMBL, ~data_psx[i][0] & 0x04); - input_report_key(gc->dev[i], BTN_THUMBR, ~data_psx[i][0] & 0x02); - - case GC_PSX_NEGCON: - case GC_PSX_ANALOG: - - if (gc->pads[GC_DDR] & gc_status_bit[i]) { - for(j = 0; j < 4; j++) - input_report_key(gc->dev[i], gc_psx_ddr_btn[j], ~data_psx[i][0] & (0x10 << j)); - } else { - for (j = 0; j < 4; j++) - input_report_abs(gc->dev[i], gc_psx_abs[j+2], data_psx[i][j + 2]); - - input_report_abs(gc->dev[i], ABS_X, 128 + !(data_psx[i][0] & 0x20) * 127 - !(data_psx[i][0] & 0x80) * 128); - input_report_abs(gc->dev[i], ABS_Y, 128 + !(data_psx[i][0] & 0x40) * 127 - !(data_psx[i][0] & 0x10) * 128); - } - - for (j = 0; j < 8; j++) - input_report_key(gc->dev[i], gc_psx_btn[j], ~data_psx[i][1] & (1 << j)); - - input_report_key(gc->dev[i], BTN_START, ~data_psx[i][0] & 0x08); - input_report_key(gc->dev[i], BTN_SELECT, ~data_psx[i][0] & 0x01); - - input_sync(gc->dev[i]); - - break; - - case GC_PSX_NORMAL: - if (gc->pads[GC_DDR] & gc_status_bit[i]) { - for(j = 0; j < 4; j++) - input_report_key(gc->dev[i], gc_psx_ddr_btn[j], ~data_psx[i][0] & (0x10 << j)); - } else { - input_report_abs(gc->dev[i], ABS_X, 128 + !(data_psx[i][0] & 0x20) * 127 - !(data_psx[i][0] & 0x80) * 128); - input_report_abs(gc->dev[i], ABS_Y, 128 + !(data_psx[i][0] & 0x40) * 127 - !(data_psx[i][0] & 0x10) * 128); - - /* for some reason if the extra axes are left unset they drift */ - /* for (j = 0; j < 4; j++) - input_report_abs(gc->dev[i], gc_psx_abs[j+2], 128); - * This needs to be debugged properly, - * maybe fuzz processing needs to be done in input_sync() - * --vojtech - */ - } - - for (j = 0; j < 8; j++) - input_report_key(gc->dev[i], gc_psx_btn[j], ~data_psx[i][1] & (1 << j)); - - input_report_key(gc->dev[i], BTN_START, ~data_psx[i][0] & 0x08); - input_report_key(gc->dev[i], BTN_SELECT, ~data_psx[i][0] & 0x01); - - input_sync(gc->dev[i]); - - break; - - case 0: /* not a pad, ignore */ - break; - } - } - } + if (gc->pads[GC_PSX] || gc->pads[GC_DDR]) + gc_psx_process_packet(gc); mod_timer(&gc->timer, jiffies + GC_REFRESH_TIME); } @@ -654,16 +699,18 @@ gc->timer.data = (long) gc; gc->timer.function = gc_timer; - for (i = 0; i < n_pads; i++) { + for (i = 0; i < n_pads && i < GC_MAX_DEVICES; i++) { if (!pads[i]) continue; sprintf(gc->phys[i], "%s/input%d", gc->pd->port->name, i); err = gc_setup_pad(gc, i, pads[i]); if (err) - goto err_free_devs; + goto err_unreg_devs; - input_register_device(gc->dev[i]); + err = input_register_device(gc->dev[i]); + if (err) + goto err_free_dev; } if (!gc->pads[0]) { @@ -675,9 +722,12 @@ parport_put_port(pp); return gc; - err_free_devs: + err_free_dev: + input_free_device(gc->dev[i]); + err_unreg_devs: while (--i >= 0) - input_unregister_device(gc->dev[i]); + if (gc->dev[i]) + input_unregister_device(gc->dev[i]); err_free_gc: kfree(gc); err_unreg_pardev: @@ -688,7 +738,7 @@ return ERR_PTR(err); } -static void __exit gc_remove(struct gc *gc) +static void gc_remove(struct gc *gc) { int i; @@ -726,7 +776,8 @@ if (err) { while (--i >= 0) - gc_remove(gc_base[i]); + if (gc_base[i]) + gc_remove(gc_base[i]); return err; } --- linux-source-2.6.15-2.6.15.orig/drivers/pci/pci.c +++ linux-source-2.6.15-2.6.15/drivers/pci/pci.c @@ -455,7 +455,11 @@ int i; int val; - for (i = 0; i < 16; i++) { + /* + * The Base Address register should be programmed before the command + * register(s) + */ + for (i = 15; i >= 0; i--) { pci_read_config_dword(dev, i * 4, &val); if (val != dev->saved_config_space[i]) pci_write_config_dword(dev,i * 4, dev->saved_config_space[i]); --- linux-source-2.6.15-2.6.15.orig/drivers/md/dm-snap.c +++ linux-source-2.6.15-2.6.15/drivers/md/dm-snap.c @@ -529,8 +529,12 @@ { struct dm_snapshot *s = (struct dm_snapshot *) ti->private; + /* Prevent further origin writes from using this snapshot. */ + /* After this returns there can be no new kcopyd jobs. */ unregister_snapshot(s); + kcopyd_client_destroy(s->kcopyd_client); + exit_exception_table(&s->pending, pending_cache); exit_exception_table(&s->complete, exception_cache); @@ -539,7 +543,7 @@ dm_put_device(ti, s->origin); dm_put_device(ti, s->cow); - kcopyd_client_destroy(s->kcopyd_client); + kfree(s); } --- linux-source-2.6.15-2.6.15.orig/drivers/md/Makefile +++ linux-source-2.6.15-2.6.15/drivers/md/Makefile @@ -37,6 +37,7 @@ obj-$(CONFIG_DM_SNAPSHOT) += dm-snapshot.o obj-$(CONFIG_DM_MIRROR) += dm-mirror.o obj-$(CONFIG_DM_ZERO) += dm-zero.o +obj-$(CONFIG_BLK_DEV_DM_BBR) += dm-bbr.o quiet_cmd_unroll = UNROLL $@ cmd_unroll = $(PERL) $(srctree)/$(src)/unroll.pl $(UNROLL) \ --- linux-source-2.6.15-2.6.15.orig/drivers/md/dm-bbr.h +++ linux-source-2.6.15-2.6.15/drivers/md/dm-bbr.h @@ -0,0 +1,125 @@ +/* + * (C) Copyright IBM Corp. 2002, 2004 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * linux/drivers/md/dm-bbr.h + * + * Bad-block-relocation (BBR) target for device-mapper. + * + * The BBR target is designed to remap I/O write failures to another safe + * location on disk. Note that most disk drives have BBR built into them, + * this means that our software BBR will be only activated when all hardware + * BBR replacement sectors have been used. + */ + +#define BBR_TABLE_SIGNATURE 0x42627254 /* BbrT */ +#define BBR_ENTRIES_PER_SECT 31 +#define INITIAL_CRC 0xFFFFFFFF +#define CRC_POLYNOMIAL 0xEDB88320L + +/** + * Macros to cleanly print 64-bit numbers on both 32-bit and 64-bit machines. + * Use these in place of %Ld, %Lu, and %Lx. + **/ +#if BITS_PER_LONG > 32 +#define PFU64 "%lu" +#else +#define PFU64 "%Lu" +#endif + +/** + * struct bbr_table_entry + * @bad_sect: LBA of bad location. + * @replacement_sect: LBA of new location. + * + * Structure to describe one BBR remap. + **/ +struct bbr_table_entry { + u64 bad_sect; + u64 replacement_sect; +}; + +/** + * struct bbr_table + * @signature: Signature on each BBR table sector. + * @crc: CRC for this table sector. + * @sequence_number: Used to resolve conflicts when primary and secondary + * tables do not match. + * @in_use_cnt: Number of in-use table entries. + * @entries: Actual table of remaps. + * + * Structure to describe each sector of the metadata table. Each sector in this + * table can describe 31 remapped sectors. + **/ +struct bbr_table { + u32 signature; + u32 crc; + u32 sequence_number; + u32 in_use_cnt; + struct bbr_table_entry entries[BBR_ENTRIES_PER_SECT]; +}; + +/** + * struct bbr_runtime_remap + * + * Node in the binary tree used to keep track of remaps. + **/ +struct bbr_runtime_remap { + struct bbr_table_entry remap; + struct bbr_runtime_remap *left; + struct bbr_runtime_remap *right; +}; + +/** + * struct bbr_private + * @dev: Info about underlying device. + * @bbr_table: Copy of metadata table. + * @remap_root: Binary tree containing all remaps. + * @remap_root_lock: Lock for the binary tree. + * @remap_work: For adding work items to the work-queue. + * @remap_ios: List of I/Os for the work-queue to handle. + * @remap_ios_lock: Lock for the remap_ios list. + * @offset: LBA of data area. + * @lba_table1: LBA of primary BBR table. + * @lba_table2: LBA of secondary BBR table. + * @nr_sects_bbr_table: Size of each BBR table. + * @nr_replacement_blks: Number of replacement blocks. + * @start_replacement_sect: LBA of start of replacement blocks. + * @blksize_in_sects: Size of each block. + * @in_use_replacement_blks: Current number of remapped blocks. + * + * Private data for each BBR target. + **/ +struct bbr_private { + struct dm_dev *dev; + struct bbr_table *bbr_table; + struct bbr_runtime_remap *remap_root; + spinlock_t remap_root_lock; + + struct work_struct remap_work; + struct bio_list remap_ios; + spinlock_t remap_ios_lock; + + u64 offset; + u64 lba_table1; + u64 lba_table2; + u64 nr_sects_bbr_table; + u64 start_replacement_sect; + u64 nr_replacement_blks; + u32 blksize_in_sects; + atomic_t in_use_replacement_blks; +}; + --- linux-source-2.6.15-2.6.15.orig/drivers/md/kcopyd.c +++ linux-source-2.6.15-2.6.15/drivers/md/kcopyd.c @@ -43,6 +43,9 @@ struct page_list *pages; unsigned int nr_pages; unsigned int nr_free_pages; + + wait_queue_head_t destroyq; + atomic_t nr_jobs; }; static struct page_list *alloc_pl(void) @@ -292,10 +295,15 @@ int read_err = job->read_err; unsigned int write_err = job->write_err; kcopyd_notify_fn fn = job->fn; + struct kcopyd_client *kc = job->kc; - kcopyd_put_pages(job->kc, job->pages); + kcopyd_put_pages(kc, job->pages); mempool_free(job, _job_pool); fn(read_err, write_err, context); + + if (atomic_dec_and_test(&kc->nr_jobs)) + wake_up(&kc->destroyq); + return 0; } @@ -430,6 +438,7 @@ */ static void dispatch_job(struct kcopyd_job *job) { + atomic_inc(&job->kc->nr_jobs); push(&_pages_jobs, job); wake(); } @@ -667,6 +676,9 @@ return r; } + init_waitqueue_head(&kc->destroyq); + atomic_set(&kc->nr_jobs, 0); + client_add(kc); *result = kc; return 0; @@ -674,6 +686,9 @@ void kcopyd_client_destroy(struct kcopyd_client *kc) { + /* Wait for completion of all jobs submitted by this client. */ + wait_event(kc->destroyq, !atomic_read(&kc->nr_jobs)); + dm_io_put(kc->nr_pages); client_free_pages(kc); client_del(kc); --- linux-source-2.6.15-2.6.15.orig/drivers/md/Kconfig +++ linux-source-2.6.15-2.6.15/drivers/md/Kconfig @@ -236,5 +236,16 @@ ---help--- Multipath support for EMC CX/AX series hardware. +config BLK_DEV_DM_BBR + tristate "Bad Block Relocation Device Target (EXPERIMENTAL)" + depends on BLK_DEV_DM && EXPERIMENTAL + ---help--- + Support for devices with software-based bad-block-relocation. + + To compile this as a module, choose M here: the module will be + called dm-bbr. + + If unsure, say N. + endmenu --- linux-source-2.6.15-2.6.15.orig/drivers/md/dm-bbr.c +++ linux-source-2.6.15-2.6.15/drivers/md/dm-bbr.c @@ -0,0 +1,1003 @@ +/* + * (C) Copyright IBM Corp. 2002, 2004 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * linux/drivers/md/dm-bbr.c + * + * Bad-block-relocation (BBR) target for device-mapper. + * + * The BBR target is designed to remap I/O write failures to another safe + * location on disk. Note that most disk drives have BBR built into them, + * this means that our software BBR will be only activated when all hardware + * BBR replacement sectors have been used. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "dm.h" +#include "dm-bio-list.h" +#include "dm-bio-record.h" +#include "dm-bbr.h" +#include "dm-io.h" + +#define SECTOR_SIZE (1 << SECTOR_SHIFT) + +static struct workqueue_struct *dm_bbr_wq = NULL; +static void bbr_remap_handler(void *data); +static kmem_cache_t *bbr_remap_cache; +static kmem_cache_t *bbr_io_cache; +static mempool_t *bbr_io_pool; + +/** + * bbr_binary_tree_destroy + * + * Destroy the binary tree. + **/ +static void bbr_binary_tree_destroy(struct bbr_runtime_remap *root) +{ + struct bbr_runtime_remap **link = NULL; + struct bbr_runtime_remap *node = root; + + while (node) { + if (node->left) { + link = &(node->left); + node = node->left; + continue; + } + if (node->right) { + link = &(node->right); + node = node->right; + continue; + } + + kmem_cache_free(bbr_remap_cache, node); + if (node == root) { + /* If root is deleted, we're done. */ + break; + } + + /* Back to root. */ + node = root; + *link = NULL; + } +} + +static void bbr_free_remap(struct bbr_private *bbr_id) +{ + spin_lock_irq(&bbr_id->remap_root_lock); + bbr_binary_tree_destroy(bbr_id->remap_root); + bbr_id->remap_root = NULL; + spin_unlock_irq(&bbr_id->remap_root_lock); +} + +static struct bbr_private *bbr_alloc_private(void) +{ + struct bbr_private *bbr_id; + + bbr_id = kmalloc(sizeof(*bbr_id), GFP_KERNEL); + if (bbr_id) { + memset(bbr_id, 0, sizeof(*bbr_id)); + INIT_WORK(&bbr_id->remap_work, bbr_remap_handler, bbr_id); + bbr_id->remap_root_lock = SPIN_LOCK_UNLOCKED; + bbr_id->remap_ios_lock = SPIN_LOCK_UNLOCKED; + bbr_id->in_use_replacement_blks = (atomic_t)ATOMIC_INIT(0); + } + + return bbr_id; +} + +static void bbr_free_private(struct bbr_private *bbr_id) +{ + if (bbr_id->bbr_table) { + vfree(bbr_id->bbr_table); + } + bbr_free_remap(bbr_id); + kfree(bbr_id); +} + +static u32 crc_table[256]; +static u32 crc_table_built = 0; + +static void build_crc_table(void) +{ + u32 i, j, crc; + + for (i = 0; i <= 255; i++) { + crc = i; + for (j = 8; j > 0; j--) { + if (crc & 1) + crc = (crc >> 1) ^ CRC_POLYNOMIAL; + else + crc >>= 1; + } + crc_table[i] = crc; + } + crc_table_built = 1; +} + +static u32 calculate_crc(u32 crc, void *buffer, u32 buffersize) +{ + unsigned char *current_byte; + u32 temp1, temp2, i; + + current_byte = (unsigned char *) buffer; + /* Make sure the crc table is available */ + if (!crc_table_built) + build_crc_table(); + /* Process each byte in the buffer. */ + for (i = 0; i < buffersize; i++) { + temp1 = (crc >> 8) & 0x00FFFFFF; + temp2 = crc_table[(crc ^ (u32) * current_byte) & + (u32) 0xff]; + current_byte++; + crc = temp1 ^ temp2; + } + return crc; +} + +/** + * le_bbr_table_sector_to_cpu + * + * Convert bbr meta data from on-disk (LE) format + * to the native cpu endian format. + **/ +static void le_bbr_table_sector_to_cpu(struct bbr_table *p) +{ + int i; + p->signature = le32_to_cpup(&p->signature); + p->crc = le32_to_cpup(&p->crc); + p->sequence_number = le32_to_cpup(&p->sequence_number); + p->in_use_cnt = le32_to_cpup(&p->in_use_cnt); + for (i = 0; i < BBR_ENTRIES_PER_SECT; i++) { + p->entries[i].bad_sect = + le64_to_cpup(&p->entries[i].bad_sect); + p->entries[i].replacement_sect = + le64_to_cpup(&p->entries[i].replacement_sect); + } +} + +/** + * cpu_bbr_table_sector_to_le + * + * Convert bbr meta data from cpu endian format to on-disk (LE) format + **/ +static void cpu_bbr_table_sector_to_le(struct bbr_table *p, + struct bbr_table *le) +{ + int i; + le->signature = cpu_to_le32p(&p->signature); + le->crc = cpu_to_le32p(&p->crc); + le->sequence_number = cpu_to_le32p(&p->sequence_number); + le->in_use_cnt = cpu_to_le32p(&p->in_use_cnt); + for (i = 0; i < BBR_ENTRIES_PER_SECT; i++) { + le->entries[i].bad_sect = + cpu_to_le64p(&p->entries[i].bad_sect); + le->entries[i].replacement_sect = + cpu_to_le64p(&p->entries[i].replacement_sect); + } +} + +/** + * validate_bbr_table_sector + * + * Check the specified BBR table sector for a valid signature and CRC. If it's + * valid, endian-convert the table sector. + **/ +static int validate_bbr_table_sector(struct bbr_table *p) +{ + int rc = 0; + int org_crc, final_crc; + + if (le32_to_cpup(&p->signature) != BBR_TABLE_SIGNATURE) { + DMERR("dm-bbr: BBR table signature doesn't match!"); + DMERR("dm-bbr: Found 0x%x. Expecting 0x%x", + le32_to_cpup(&p->signature), BBR_TABLE_SIGNATURE); + rc = -EINVAL; + goto out; + } + + if (!p->crc) { + DMERR("dm-bbr: BBR table sector has no CRC!"); + rc = -EINVAL; + goto out; + } + + org_crc = le32_to_cpup(&p->crc); + p->crc = 0; + final_crc = calculate_crc(INITIAL_CRC, (void *)p, sizeof(*p)); + if (final_crc != org_crc) { + DMERR("dm-bbr: CRC failed!"); + DMERR("dm-bbr: Found 0x%x. Expecting 0x%x", + org_crc, final_crc); + rc = -EINVAL; + goto out; + } + + p->crc = cpu_to_le32p(&org_crc); + le_bbr_table_sector_to_cpu(p); + +out: + return rc; +} + +/** + * bbr_binary_tree_insert + * + * Insert a node into the binary tree. + **/ +static void bbr_binary_tree_insert(struct bbr_runtime_remap **root, + struct bbr_runtime_remap *newnode) +{ + struct bbr_runtime_remap **node = root; + while (node && *node) { + if (newnode->remap.bad_sect > (*node)->remap.bad_sect) { + node = &((*node)->right); + } else { + node = &((*node)->left); + } + } + + newnode->left = newnode->right = NULL; + *node = newnode; +} + +/** + * bbr_binary_search + * + * Search for a node that contains bad_sect == lsn. + **/ +static struct bbr_runtime_remap *bbr_binary_search( + struct bbr_runtime_remap *root, + u64 lsn) +{ + struct bbr_runtime_remap *node = root; + while (node) { + if (node->remap.bad_sect == lsn) { + break; + } + if (lsn > node->remap.bad_sect) { + node = node->right; + } else { + node = node->left; + } + } + return node; +} + +/** + * bbr_insert_remap_entry + * + * Create a new remap entry and add it to the binary tree for this node. + **/ +static int bbr_insert_remap_entry(struct bbr_private *bbr_id, + struct bbr_table_entry *new_bbr_entry) +{ + struct bbr_runtime_remap *newnode; + + newnode = kmem_cache_alloc(bbr_remap_cache, GFP_NOIO); + if (!newnode) { + DMERR("dm-bbr: Could not allocate from remap cache!"); + return -ENOMEM; + } + newnode->remap.bad_sect = new_bbr_entry->bad_sect; + newnode->remap.replacement_sect = new_bbr_entry->replacement_sect; + spin_lock_irq(&bbr_id->remap_root_lock); + bbr_binary_tree_insert(&bbr_id->remap_root, newnode); + spin_unlock_irq(&bbr_id->remap_root_lock); + return 0; +} + +/** + * bbr_table_to_remap_list + * + * The on-disk bbr table is sorted by the replacement sector LBA. In order to + * improve run time performance, the in memory remap list must be sorted by + * the bad sector LBA. This function is called at discovery time to initialize + * the remap list. This function assumes that at least one copy of meta data + * is valid. + **/ +static u32 bbr_table_to_remap_list(struct bbr_private *bbr_id) +{ + u32 in_use_blks = 0; + int i, j; + struct bbr_table *p; + + for (i = 0, p = bbr_id->bbr_table; + i < bbr_id->nr_sects_bbr_table; + i++, p++) { + if (!p->in_use_cnt) { + break; + } + in_use_blks += p->in_use_cnt; + for (j = 0; j < p->in_use_cnt; j++) { + bbr_insert_remap_entry(bbr_id, &p->entries[j]); + } + } + if (in_use_blks) { + char b[32]; + DMWARN("dm-bbr: There are %u BBR entries for device %s", + in_use_blks, format_dev_t(b, bbr_id->dev->bdev->bd_dev)); + } + + return in_use_blks; +} + +/** + * bbr_search_remap_entry + * + * Search remap entry for the specified sector. If found, return a pointer to + * the table entry. Otherwise, return NULL. + **/ +static struct bbr_table_entry *bbr_search_remap_entry( + struct bbr_private *bbr_id, + u64 lsn) +{ + struct bbr_runtime_remap *p; + + spin_lock_irq(&bbr_id->remap_root_lock); + p = bbr_binary_search(bbr_id->remap_root, lsn); + spin_unlock_irq(&bbr_id->remap_root_lock); + if (p) { + return (&p->remap); + } else { + return NULL; + } +} + +/** + * bbr_remap + * + * If *lsn is in the remap table, return TRUE and modify *lsn, + * else, return FALSE. + **/ +static inline int bbr_remap(struct bbr_private *bbr_id, + u64 *lsn) +{ + struct bbr_table_entry *e; + + if (atomic_read(&bbr_id->in_use_replacement_blks)) { + e = bbr_search_remap_entry(bbr_id, *lsn); + if (e) { + *lsn = e->replacement_sect; + return 1; + } + } + return 0; +} + +/** + * bbr_remap_probe + * + * If any of the sectors in the range [lsn, lsn+nr_sects] are in the remap + * table return TRUE, Else, return FALSE. + **/ +static inline int bbr_remap_probe(struct bbr_private *bbr_id, + u64 lsn, u64 nr_sects) +{ + u64 tmp, cnt; + + if (atomic_read(&bbr_id->in_use_replacement_blks)) { + for (cnt = 0, tmp = lsn; + cnt < nr_sects; + cnt += bbr_id->blksize_in_sects, tmp = lsn + cnt) { + if (bbr_remap(bbr_id,&tmp)) { + return 1; + } + } + } + return 0; +} + +/** + * bbr_setup + * + * Read the remap tables from disk and set up the initial remap tree. + **/ +static int bbr_setup(struct bbr_private *bbr_id) +{ + struct bbr_table *table = bbr_id->bbr_table; + struct io_region job; + unsigned long error; + int i, rc = 0; + + job.bdev = bbr_id->dev->bdev; + job.count = 1; + + /* Read and verify each BBR table sector individually. */ + for (i = 0; i < bbr_id->nr_sects_bbr_table; i++, table++) { + job.sector = bbr_id->lba_table1 + i; + rc = dm_io_sync_vm(1, &job, READ, table, &error); + if (rc && bbr_id->lba_table2) { + job.sector = bbr_id->lba_table2 + i; + rc = dm_io_sync_vm(1, &job, READ, table, &error); + } + if (rc) { + goto out; + } + + rc = validate_bbr_table_sector(table); + if (rc) { + goto out; + } + } + atomic_set(&bbr_id->in_use_replacement_blks, + bbr_table_to_remap_list(bbr_id)); + +out: + if (rc) { + DMERR("dm-bbr: error during device setup: %d", rc); + } + return rc; +} + +/** + * bbr_io_remap_error + * @bbr_id: Private data for the BBR node. + * @rw: READ or WRITE. + * @starting_lsn: Starting sector of request to remap. + * @count: Number of sectors in the request. + * @page: Page containing the data for the request. + * @offset: Byte-offset of the data within the page. + * + * For the requested range, try to write each sector individually. For each + * sector that fails, find the next available remap location and write the + * data to that new location. Then update the table and write both copies + * of the table to disk. Finally, update the in-memory mapping and do any + * other necessary bookkeeping. + **/ +static int bbr_io_remap_error(struct bbr_private *bbr_id, + int rw, + u64 starting_lsn, + u64 count, + struct page *page, + unsigned int offset) +{ + struct bbr_table *bbr_table; + struct io_region job; + struct page_list pl; + unsigned long table_sector_index; + unsigned long table_sector_offset; + unsigned long index; + unsigned long error; + u64 lsn, new_lsn; + char b[32]; + int rc; + + job.bdev = bbr_id->dev->bdev; + job.count = 1; + pl.page = page; + pl.next = NULL; + + /* For each sector in the request. */ + for (lsn = 0; lsn < count; lsn++, offset += SECTOR_SIZE) { + job.sector = starting_lsn + lsn; + rc = dm_io_sync(1, &job, rw, &pl, offset, &error); + while (rc) { + /* Find the next available relocation sector. */ + new_lsn = atomic_read(&bbr_id->in_use_replacement_blks); + if (new_lsn >= bbr_id->nr_replacement_blks) { + /* No more replacement sectors available. */ + return -EIO; + } + new_lsn += bbr_id->start_replacement_sect; + + /* Write the data to its new location. */ + DMWARN("dm-bbr: device %s: Trying to remap bad sector "PFU64" to sector "PFU64, + format_dev_t(b, bbr_id->dev->bdev->bd_dev), + starting_lsn + lsn, new_lsn); + job.sector = new_lsn; + rc = dm_io_sync(1, &job, rw, &pl, offset, &error); + if (rc) { + /* This replacement sector is bad. + * Try the next one. + */ + DMERR("dm-bbr: device %s: replacement sector "PFU64" is bad. Skipping.", + format_dev_t(b, bbr_id->dev->bdev->bd_dev), new_lsn); + atomic_inc(&bbr_id->in_use_replacement_blks); + continue; + } + + /* Add this new entry to the on-disk table. */ + table_sector_index = new_lsn - + bbr_id->start_replacement_sect; + table_sector_offset = table_sector_index / + BBR_ENTRIES_PER_SECT; + index = table_sector_index % BBR_ENTRIES_PER_SECT; + + bbr_table = &bbr_id->bbr_table[table_sector_offset]; + bbr_table->entries[index].bad_sect = starting_lsn + lsn; + bbr_table->entries[index].replacement_sect = new_lsn; + bbr_table->in_use_cnt++; + bbr_table->sequence_number++; + bbr_table->crc = 0; + bbr_table->crc = calculate_crc(INITIAL_CRC, + bbr_table, + sizeof(struct bbr_table)); + + /* Write the table to disk. */ + cpu_bbr_table_sector_to_le(bbr_table, bbr_table); + if (bbr_id->lba_table1) { + job.sector = bbr_id->lba_table1 + table_sector_offset; + rc = dm_io_sync_vm(1, &job, WRITE, bbr_table, &error); + } + if (bbr_id->lba_table2) { + job.sector = bbr_id->lba_table2 + table_sector_offset; + rc |= dm_io_sync_vm(1, &job, WRITE, bbr_table, &error); + } + le_bbr_table_sector_to_cpu(bbr_table); + + if (rc) { + /* Error writing one of the tables to disk. */ + DMERR("dm-bbr: device %s: error updating BBR tables on disk.", + format_dev_t(b, bbr_id->dev->bdev->bd_dev)); + return rc; + } + + /* Insert a new entry in the remapping binary-tree. */ + rc = bbr_insert_remap_entry(bbr_id, + &bbr_table->entries[index]); + if (rc) { + DMERR("dm-bbr: device %s: error adding new entry to remap tree.", + format_dev_t(b, bbr_id->dev->bdev->bd_dev)); + return rc; + } + + atomic_inc(&bbr_id->in_use_replacement_blks); + } + } + + return 0; +} + +/** + * bbr_io_process_request + * + * For each sector in this request, check if the sector has already + * been remapped. If so, process all previous sectors in the request, + * followed by the remapped sector. Then reset the starting lsn and + * count, and keep going with the rest of the request as if it were + * a whole new request. If any of the sync_io's return an error, + * call the remapper to relocate the bad sector(s). + * + * 2.5 Note: When switching over to bio's for the I/O path, we have made + * the assumption that the I/O request described by the bio is one + * virtually contiguous piece of memory (even though the bio vector + * describes it using a series of physical page addresses). + **/ +static int bbr_io_process_request(struct bbr_private *bbr_id, + struct bio *bio) +{ + struct io_region job; + u64 starting_lsn = bio->bi_sector; + u64 count, lsn, remapped_lsn; + struct page_list pl; + unsigned int offset; + unsigned long error; + int i, rw = bio_data_dir(bio); + int rc = 0; + + job.bdev = bbr_id->dev->bdev; + pl.next = NULL; + + /* Each bio can contain multiple vectors, each with a different page. + * Treat each vector as a separate request. + */ + /* KMC: Is this the right way to walk the bvec list? */ + for (i = 0; + i < bio->bi_vcnt; + i++, bio->bi_idx++, starting_lsn += count) { + + /* Bvec info: number of sectors, page, + * and byte-offset within page. + */ + count = bio_iovec(bio)->bv_len >> SECTOR_SHIFT; + pl.page = bio_iovec(bio)->bv_page; + offset = bio_iovec(bio)->bv_offset; + + /* For each sector in this bvec, check if the sector has + * already been remapped. If so, process all previous sectors + * in this request, followed by the remapped sector. Then reset + * the starting lsn and count and keep going with the rest of + * the request as if it were a whole new request. + */ + for (lsn = 0; lsn < count; lsn++) { + remapped_lsn = starting_lsn + lsn; + rc = bbr_remap(bbr_id, &remapped_lsn); + if (!rc) { + /* This sector is fine. */ + continue; + } + + /* Process all sectors in the request up to this one. */ + if (lsn > 0) { + job.sector = starting_lsn; + job.count = lsn; + rc = dm_io_sync(1, &job, rw, &pl, + offset, &error); + if (rc) { + /* If this I/O failed, then one of the + * sectors in this request needs to be + * relocated. + */ + rc = bbr_io_remap_error(bbr_id, rw, + starting_lsn, + lsn, pl.page, + offset); + if (rc) { + /* KMC: Return? Or continue to next bvec? */ + return rc; + } + } + offset += (lsn << SECTOR_SHIFT); + } + + /* Process the remapped sector. */ + job.sector = remapped_lsn; + job.count = 1; + rc = dm_io_sync(1, &job, rw, &pl, offset, &error); + if (rc) { + /* BUGBUG - Need more processing if this caused + * an error. If this I/O failed, then the + * existing remap is now bad, and we need to + * find a new remap. Can't use + * bbr_io_remap_error(), because the existing + * map entry needs to be changed, not added + * again, and the original table entry also + * needs to be changed. + */ + return rc; + } + + starting_lsn += (lsn + 1); + count -= (lsn + 1); + lsn = -1; + offset += SECTOR_SIZE; + } + + /* Check for any remaining sectors after the last split. This + * could potentially be the whole request, but that should be a + * rare case because requests should only be processed by the + * thread if we know an error occurred or they contained one or + * more remapped sectors. + */ + if (count) { + job.sector = starting_lsn; + job.count = count; + rc = dm_io_sync(1, &job, rw, &pl, offset, &error); + if (rc) { + /* If this I/O failed, then one of the sectors + * in this request needs to be relocated. + */ + rc = bbr_io_remap_error(bbr_id, rw, starting_lsn, + count, pl.page, offset); + if (rc) { + /* KMC: Return? Or continue to next bvec? */ + return rc; + } + } + } + } + + return 0; +} + +static void bbr_io_process_requests(struct bbr_private *bbr_id, + struct bio *bio) +{ + struct bio *next; + int rc; + + while (bio) { + next = bio->bi_next; + bio->bi_next = NULL; + + rc = bbr_io_process_request(bbr_id, bio); + + bio_endio(bio, bio->bi_size, rc); + + bio = next; + } +} + +/** + * bbr_remap_handler + * + * This is the handler for the bbr work-queue. + * + * I/O requests should only be sent to this handler if we know that: + * a) the request contains at least one remapped sector. + * or + * b) the request caused an error on the normal I/O path. + * + * This function uses synchronous I/O, so sending a request to this + * thread that doesn't need special processing will cause severe + * performance degredation. + **/ +static void bbr_remap_handler(void *data) +{ + struct bbr_private *bbr_id = data; + struct bio *bio; + unsigned long flags; + + spin_lock_irqsave(&bbr_id->remap_ios_lock, flags); + bio = bio_list_get(&bbr_id->remap_ios); + spin_unlock_irqrestore(&bbr_id->remap_ios_lock, flags); + + bbr_io_process_requests(bbr_id, bio); +} + +/** + * bbr_endio + * + * This is the callback for normal write requests. Check for an error + * during the I/O, and send to the thread for processing if necessary. + **/ +static int bbr_endio(struct dm_target *ti, struct bio *bio, + int error, union map_info *map_context) +{ + struct bbr_private *bbr_id = ti->private; + struct dm_bio_details *bbr_io = map_context->ptr; + + if (error && bbr_io) { + unsigned long flags; + char b[32]; + + dm_bio_restore(bbr_io, bio); + map_context->ptr = NULL; + + DMERR("dm-bbr: device %s: I/O failure on sector %lu. " + "Scheduling for retry.", + format_dev_t(b, bbr_id->dev->bdev->bd_dev), + (unsigned long)bio->bi_sector); + + spin_lock_irqsave(&bbr_id->remap_ios_lock, flags); + bio_list_add(&bbr_id->remap_ios, bio); + spin_unlock_irqrestore(&bbr_id->remap_ios_lock, flags); + + queue_work(dm_bbr_wq, &bbr_id->remap_work); + + error = 1; + } + + if (bbr_io) + mempool_free(bbr_io, bbr_io_pool); + + return error; +} + +/** + * Construct a bbr mapping + **/ +static int bbr_ctr(struct dm_target *ti, unsigned int argc, char **argv) +{ + struct bbr_private *bbr_id; + unsigned long block_size; + char *end; + int rc = -EINVAL; + + if (argc != 8) { + ti->error = "dm-bbr requires exactly 8 arguments: " + "device offset table1_lsn table2_lsn table_size start_replacement nr_replacement_blks block_size"; + goto out1; + } + + bbr_id = bbr_alloc_private(); + if (!bbr_id) { + ti->error = "dm-bbr: Error allocating bbr private data."; + goto out1; + } + + bbr_id->offset = simple_strtoull(argv[1], &end, 10); + bbr_id->lba_table1 = simple_strtoull(argv[2], &end, 10); + bbr_id->lba_table2 = simple_strtoull(argv[3], &end, 10); + bbr_id->nr_sects_bbr_table = simple_strtoull(argv[4], &end, 10); + bbr_id->start_replacement_sect = simple_strtoull(argv[5], &end, 10); + bbr_id->nr_replacement_blks = simple_strtoull(argv[6], &end, 10); + block_size = simple_strtoul(argv[7], &end, 10); + bbr_id->blksize_in_sects = (block_size >> SECTOR_SHIFT); + + bbr_id->bbr_table = vmalloc(bbr_id->nr_sects_bbr_table << SECTOR_SHIFT); + if (!bbr_id->bbr_table) { + ti->error = "dm-bbr: Error allocating bbr table."; + goto out2; + } + + if (dm_get_device(ti, argv[0], 0, ti->len, + dm_table_get_mode(ti->table), &bbr_id->dev)) { + ti->error = "dm-bbr: Device lookup failed"; + goto out2; + } + + rc = bbr_setup(bbr_id); + if (rc) { + ti->error = "dm-bbr: Device setup failed"; + goto out3; + } + + ti->private = bbr_id; + return 0; + +out3: + dm_put_device(ti, bbr_id->dev); +out2: + bbr_free_private(bbr_id); +out1: + return rc; +} + +static void bbr_dtr(struct dm_target *ti) +{ + struct bbr_private *bbr_id = ti->private; + + dm_put_device(ti, bbr_id->dev); + bbr_free_private(bbr_id); +} + +static int bbr_map(struct dm_target *ti, struct bio *bio, + union map_info *map_context) +{ + struct bbr_private *bbr_id = ti->private; + struct dm_bio_details *bbr_io; + unsigned long flags; + int rc = 1; + + bio->bi_sector += bbr_id->offset; + + if (atomic_read(&bbr_id->in_use_replacement_blks) == 0 || + !bbr_remap_probe(bbr_id, bio->bi_sector, bio_sectors(bio))) { + /* No existing remaps or this request doesn't + * contain any remapped sectors. + */ + bio->bi_bdev = bbr_id->dev->bdev; + + bbr_io = mempool_alloc(bbr_io_pool, GFP_NOIO); + dm_bio_record(bbr_io, bio); + map_context->ptr = bbr_io; + } else { + /* This request has at least one remapped sector. + * Give it to the work-queue for processing. + */ + map_context->ptr = NULL; + spin_lock_irqsave(&bbr_id->remap_ios_lock, flags); + bio_list_add(&bbr_id->remap_ios, bio); + spin_unlock_irqrestore(&bbr_id->remap_ios_lock, flags); + + queue_work(dm_bbr_wq, &bbr_id->remap_work); + rc = 0; + } + + return rc; +} + +static int bbr_status(struct dm_target *ti, status_type_t type, + char *result, unsigned int maxlen) +{ + struct bbr_private *bbr_id = ti->private; + char b[BDEVNAME_SIZE]; + + switch (type) { + case STATUSTYPE_INFO: + result[0] = '\0'; + break; + + case STATUSTYPE_TABLE: + snprintf(result, maxlen, "%s "PFU64" "PFU64" "PFU64" "PFU64" "PFU64" "PFU64" %u", + format_dev_t(b, bbr_id->dev->bdev->bd_dev), + bbr_id->offset, bbr_id->lba_table1, bbr_id->lba_table2, + bbr_id->nr_sects_bbr_table, + bbr_id->start_replacement_sect, + bbr_id->nr_replacement_blks, + bbr_id->blksize_in_sects << SECTOR_SHIFT); + break; + } + return 0; +} + +static struct target_type bbr_target = { + .name = "bbr", + .version= {1, 0, 1}, + .module = THIS_MODULE, + .ctr = bbr_ctr, + .dtr = bbr_dtr, + .map = bbr_map, + .end_io = bbr_endio, + .status = bbr_status, +}; + +int __init dm_bbr_init(void) +{ + int rc; + + rc = dm_register_target(&bbr_target); + if (rc) { + DMERR("dm-bbr: error registering target."); + goto err1; + } + + bbr_remap_cache = kmem_cache_create("bbr-remap", + sizeof(struct bbr_runtime_remap), + 0, SLAB_HWCACHE_ALIGN, NULL, NULL); + if (!bbr_remap_cache) { + DMERR("dm-bbr: error creating remap cache."); + rc = ENOMEM; + goto err2; + } + + bbr_io_cache = kmem_cache_create("bbr-io", sizeof(struct dm_bio_details), + 0, SLAB_HWCACHE_ALIGN, NULL, NULL); + if (!bbr_io_cache) { + DMERR("dm-bbr: error creating io cache."); + rc = ENOMEM; + goto err3; + } + + bbr_io_pool = mempool_create(256, mempool_alloc_slab, + mempool_free_slab, bbr_io_cache); + if (!bbr_io_pool) { + DMERR("dm-bbr: error creating io mempool."); + rc = ENOMEM; + goto err4; + } + + dm_bbr_wq = create_workqueue("dm-bbr"); + if (!dm_bbr_wq) { + DMERR("dm-bbr: error creating work-queue."); + rc = ENOMEM; + goto err5; + } + + rc = dm_io_get(1); + if (rc) { + DMERR("dm-bbr: error initializing I/O service."); + goto err6; + } + + return 0; + +err6: + destroy_workqueue(dm_bbr_wq); +err5: + mempool_destroy(bbr_io_pool); +err4: + kmem_cache_destroy(bbr_io_cache); +err3: + kmem_cache_destroy(bbr_remap_cache); +err2: + dm_unregister_target(&bbr_target); +err1: + return rc; +} + +void __exit dm_bbr_exit(void) +{ + dm_io_put(1); + destroy_workqueue(dm_bbr_wq); + mempool_destroy(bbr_io_pool); + kmem_cache_destroy(bbr_io_cache); + kmem_cache_destroy(bbr_remap_cache); + dm_unregister_target(&bbr_target); +} + +module_init(dm_bbr_init); +module_exit(dm_bbr_exit); +MODULE_LICENSE("GPL"); --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/sata_via.c +++ linux-source-2.6.15-2.6.15/drivers/scsi/sata_via.c @@ -52,6 +52,7 @@ enum board_ids_enum { vt6420, vt6421, + vt8251, }; enum { @@ -63,7 +64,7 @@ PORT0 = (1 << 1), PORT1 = (1 << 0), ALL_PORTS = PORT0 | PORT1, - N_PORTS = 2, + N_PORTS = 3, NATIVE_MODE_ALL = (1 << 7) | (1 << 6) | (1 << 5) | (1 << 4), @@ -78,7 +79,8 @@ static const struct pci_device_id svia_pci_tbl[] = { { 0x1106, 0x3149, PCI_ANY_ID, PCI_ANY_ID, 0, 0, vt6420 }, { 0x1106, 0x3249, PCI_ANY_ID, PCI_ANY_ID, 0, 0, vt6421 }, - + { 0x1106, 0x3349, PCI_ANY_ID, PCI_ANY_ID, 0, 0, vt8251 }, + { 0x1106, 0x0591, PCI_ANY_ID, PCI_ANY_ID, 0, 0, vt6420 }, { } /* terminate list */ }; @@ -109,8 +111,14 @@ .ordered_flush = 1, }; +static void via_pata_phy_reset(struct ata_port *ap); +static void via_pata_set_piomode (struct ata_port *ap, struct ata_device *adev); +static void via_pata_set_dmamode (struct ata_port *ap, struct ata_device *adev); + static const struct ata_port_operations svia_sata_ops = { .port_disable = ata_port_disable, + .set_piomode = via_pata_set_piomode, + .set_dmamode = via_pata_set_dmamode, .tf_load = ata_tf_load, .tf_read = ata_tf_read, @@ -118,7 +126,7 @@ .exec_command = ata_exec_command, .dev_select = ata_std_dev_select, - .phy_reset = sata_phy_reset, + .phy_reset = via_pata_phy_reset, .bmdma_setup = ata_bmdma_setup, .bmdma_start = ata_bmdma_start, @@ -133,9 +141,6 @@ .irq_handler = ata_interrupt, .irq_clear = ata_bmdma_irq_clear, - .scr_read = svia_scr_read, - .scr_write = svia_scr_write, - .port_start = ata_port_start, .port_stop = ata_port_stop, .host_stop = ata_host_stop, @@ -150,7 +155,17 @@ .port_ops = &svia_sata_ops, }; -MODULE_AUTHOR("Jeff Garzik"); +static struct ata_port_info via287_port_info = { + .sht = &svia_sht, + .host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_NO_LEGACY, + .pio_mask = 0x1f, + .mwdma_mask = 0x07, + .udma_mask = 0x7f, + .port_ops = &svia_sata_ops, +}; + + +MODULE_AUTHOR("Jeff Garzik(patch for VT8251 adapted by Gavril Cristian Olar)"); MODULE_DESCRIPTION("SCSI low-level driver for VIA SATA controllers"); MODULE_LICENSE("GPL"); MODULE_DEVICE_TABLE(pci, svia_pci_tbl); @@ -178,6 +193,11 @@ 16, 16, 16, 16, 32, 128 }; +static const unsigned int vt8251_bar_sizes[] = { + 8, 4, 8, 4, 16, 1024 +}; + + static unsigned long svia_scr_addr(unsigned long addr, unsigned int port) { return addr + (port * 128); @@ -194,16 +214,12 @@ { unsigned long reg_addr = pci_resource_start(pdev, port); unsigned long bmdma_addr = pci_resource_start(pdev, 4) + (port * 8); - unsigned long scr_addr; probe_ent->port[port].cmd_addr = reg_addr; probe_ent->port[port].altstatus_addr = probe_ent->port[port].ctl_addr = (reg_addr + 8) | ATA_PCI_CTL_OFS; probe_ent->port[port].bmdma_addr = bmdma_addr; - scr_addr = vt6421_scr_addr(pci_resource_start(pdev, 5), port); - probe_ent->port[port].scr_addr = scr_addr; - ata_std_ports(&probe_ent->port[port]); } @@ -224,6 +240,18 @@ return probe_ent; } +static struct ata_probe_ent *vt8251_init_probe_ent(struct pci_dev *pdev) +{ + struct ata_probe_ent *probe_ent; + struct ata_port_info *ppi = &via287_port_info; + + probe_ent = ata_pci_init_native_mode(pdev, &ppi, ATA_PORT_PRIMARY | ATA_PORT_SECONDARY); + if (!probe_ent) + return NULL; + + return probe_ent; +} + static struct ata_probe_ent *vt6421_init_probe_ent(struct pci_dev *pdev) { struct ata_probe_ent *probe_ent; @@ -238,7 +266,7 @@ INIT_LIST_HEAD(&probe_ent->node); probe_ent->sht = &svia_sht; - probe_ent->host_flags = ATA_FLAG_SATA | ATA_FLAG_SATA_RESET | + probe_ent->host_flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST | ATA_FLAG_NO_LEGACY; probe_ent->port_ops = &svia_sata_ops; probe_ent->n_ports = N_PORTS; @@ -254,6 +282,164 @@ return probe_ent; } +/* add functions for pata */ + + +/** + * via_pata_cbl_detect - Probe host controller cable detect info + * @ap: Port for which cable detect info is desired + * + * Read 80c cable indicator from ATA PCI device's PCI config + * register. This register is normally set by firmware (BIOS). + * + * LOCKING: + * None (inherited from caller). + */ +static void via_pata_cbl_detect(struct ata_port *ap) +{ + struct pci_dev *pdev = to_pci_dev(ap->host_set->dev); + int cfg_addr; + u8 tmp; + + if (ap->port_no == 2) { /* PATA channel in VT6421 */ + ap->cbl = ATA_CBL_PATA80; + cfg_addr = 0xB3; + pci_read_config_byte(pdev, cfg_addr, &tmp); + if (tmp & 0x10) { /* 40pin cable */ + ap->cbl = ATA_CBL_PATA40; + } else { /* 80pin cable */ + ap->cbl = ATA_CBL_PATA80; + } + } else { /* channel 0 and 1 are SATA channels */ + ap->cbl = ATA_CBL_SATA; + } + + return; +} + +/** + * via_pata_phy_reset - Probe specified port on PATA host controller + * @ap: Port to probe + * + * Probe PATA phy. + * + * LOCKING: + * None (inherited from caller). + */ + +static void via_pata_phy_reset(struct ata_port *ap) +{ + via_pata_cbl_detect(ap); + + ata_port_probe(ap); + + ata_bus_reset(ap); +} + + +/** + * via_pata_set_piomode - Initialize host controller PATA PIO timings + * @ap: Port whose timings we are configuring + * @adev: um + * @pio: PIO mode, 0 - 4 + * + * Set PIO mode for device, in host controller PCI config space. + * + * LOCKING: + * None (inherited from caller). + */ + +static void via_pata_set_piomode (struct ata_port *ap, struct ata_device *adev) +{ + struct pci_dev *dev = to_pci_dev(ap->host_set->dev); + + u8 cfg_byte; + int cfg_addr; + + if (ap->port_no != 2) { /* SATA channel in VT6421 */ + /* no need to set */ + return; + } + + + cfg_addr = 0xAB; + switch (adev->pio_mode & 0x07) { + case 0: + cfg_byte = 0xa8; + break; + case 1: + cfg_byte = 0x65; + break; + case 2: + cfg_byte = 0x65; + break; + case 3: + cfg_byte = 0x31; + break; + case 4: + cfg_byte = 0x20; + break; + default: + cfg_byte = 0x20; + } + + pci_write_config_byte (dev, cfg_addr, cfg_byte); +} + +/** + * via_pata_set_dmamode - Initialize host controller PATA PIO timings + * @ap: Port whose timings we are configuring + * @adev: um + * @udma: udma mode, 0 - 6 + * + * Set UDMA mode for device, in host controller PCI config space. + * + * LOCKING: + * None (inherited from caller). + */ + +static void via_pata_set_dmamode (struct ata_port *ap, struct ata_device *adev) +{ + struct pci_dev *dev = to_pci_dev(ap->host_set->dev); + + u8 cfg_byte; + int cfg_addr; + + if (ap->port_no != 2) { /* SATA channel in VT6421 */ + /* no need to set */ + return; + } + + cfg_addr = 0xB3; + switch (adev->dma_mode & 0x07) { + case 0: + cfg_byte = 0xee; + break; + case 1: + cfg_byte = 0xe8; + break; + case 2: + cfg_byte = 0xe6; + break; + case 3: + cfg_byte = 0xe4; + break; + case 4: + cfg_byte = 0xe2; + break; + case 5: + cfg_byte = 0xe1; + break; + case 6: + cfg_byte = 0xe0; + break; + default: + cfg_byte = 0xe0; + } + + pci_write_config_byte (dev, cfg_addr, cfg_byte); +} + static void svia_configure(struct pci_dev *pdev) { u8 tmp8; @@ -326,10 +512,24 @@ rc = -EIO; goto err_out_regions; } - + bar_sizes = &svia_bar_sizes[0]; + } else if(board_id == vt6421) { + bar_sizes = &vt6421_bar_sizes[0]; } else { - bar_sizes = &vt6421_bar_sizes[0]; + /* vt8251, do special init if needed */ + pci_read_config_byte(pdev, SATA_PATA_SHARING, &tmp8); + printk( "ConfigSpace offset 49H: 0x%x\n",tmp8); + pci_write_config_byte(pdev, SATA_PATA_SHARING, tmp8 | (1<<5)); + /* + if (tmp8 & SATA_2DEV) { + printk(KERN_ERR DRV_NAME "(%s): SATA master/slave not supported (0x%x)\n", + pci_name(pdev), (int) tmp8); + rc = -EIO; + goto err_out_regions; + } + */ + bar_sizes = &vt8251_bar_sizes[0]; } for (i = 0; i < ARRAY_SIZE(svia_bar_sizes); i++) @@ -353,8 +553,10 @@ if (board_id == vt6420) probe_ent = vt6420_init_probe_ent(pdev); + else if (board_id == vt6421) + probe_ent = vt6421_init_probe_ent(pdev); else - probe_ent = vt6421_init_probe_ent(pdev); + probe_ent = vt8251_init_probe_ent(pdev); if (!probe_ent) { dev_printk(KERN_ERR, &pdev->dev, "out of memory\n"); --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/megaraid.c +++ linux-source-2.6.15-2.6.15/drivers/scsi/megaraid.c @@ -2,7 +2,7 @@ * * Linux MegaRAID device driver * - * Copyright © 2002 LSI Logic Corporation. + * Copyright (c) 2002 LSI Logic Corporation. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -17,7 +17,8 @@ * Copyright (c) 2003 Christoph Hellwig * - new-style, hotplug-aware pci probing and scsi registration * - * Version : v2.00.3 (Feb 19, 2003) - Atul Mukker + * Version : v2.00.4 Mon Nov 14 14:02:43 EST 2005 - Seokmann Ju + * * * Description: Linux device driver for LSI Logic MegaRAID controller * @@ -44,6 +45,7 @@ #include #include #include +#include #include #include "scsi.h" @@ -51,10 +53,10 @@ #include "megaraid.h" -#define MEGARAID_MODULE_VERSION "2.00.3" +#define MEGARAID_MODULE_VERSION "2.00.4" -MODULE_AUTHOR ("LSI Logic Corporation"); -MODULE_DESCRIPTION ("LSI Logic MegaRAID driver"); +MODULE_AUTHOR ("sju@lsil.com"); +MODULE_DESCRIPTION ("LSI Logic MegaRAID legacy driver"); MODULE_LICENSE ("GPL"); MODULE_VERSION(MEGARAID_MODULE_VERSION); @@ -2093,7 +2095,7 @@ memcpy(*pdev, adapter->dev, sizeof(struct pci_dev)); - if( pci_set_dma_mask(*pdev, 0xffffffff) != 0 ) { + if( pci_set_dma_mask(*pdev, DMA_32BIT_MASK) != 0 ) { kfree(*pdev); return -1; } @@ -4469,7 +4471,6 @@ { Scsi_Cmnd *scmd; struct scsi_device *sdev; - unsigned long flags = 0; scb_t *scb; int rval; @@ -4553,7 +4554,7 @@ static struct scsi_host_template megaraid_template = { .module = THIS_MODULE, .name = "MegaRAID", - .proc_name = "megaraid", + .proc_name = "megaraid_legacy", .info = megaraid_info, .queuecommand = megaraid_queue, .bios_param = megaraid_biosparam, @@ -4570,7 +4571,7 @@ }; static int __devinit -megaraid_legacy_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) +megaraid_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) { struct Scsi_Host *host; adapter_t *adapter; @@ -4858,10 +4859,10 @@ /* Set the Mode of addressing to 64 bit if we can */ if ((adapter->flag & BOARD_64BIT) && (sizeof(dma_addr_t) == 8)) { - pci_set_dma_mask(pdev, 0xffffffffffffffffULL); + pci_set_dma_mask(pdev, DMA_64BIT_MASK); adapter->has_64bit_addr = 1; } else { - pci_set_dma_mask(pdev, 0xffffffff); + pci_set_dma_mask(pdev, DMA_32BIT_MASK); adapter->has_64bit_addr = 0; } @@ -5036,30 +5037,26 @@ __megaraid_shutdown(adapter); } -static struct pci_device_id megaraid_legacy_pci_tbl[] = { +static struct pci_device_id megaraid_pci_tbl[] = { {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, - {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3, - HP_SUBSYS_VID, HP_NETRAID1M_SUBSYS_DID, 0, 0, 0}, - {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3, - HP_SUBSYS_VID, HP_NETRAID2M_SUBSYS_DID, 0, 0, 0}, - {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3, - DELL_SUBSYS_VID, PCI_SUBSYS_ID_PERC3_ATA100_4, 0, 0, 0}, + {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_AMI_MEGARAID3, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, {0,} }; -MODULE_DEVICE_TABLE(pci, megaraid_legacy_pci_tbl); +MODULE_DEVICE_TABLE(pci, megaraid_pci_tbl); -static struct pci_driver megaraid_legacy_pci_driver = { - .name = "megaraidlegacy", - .id_table = megaraid_legacy_pci_tbl, - .probe = megaraid_legacy_probe_one, +static struct pci_driver megaraid_pci_driver = { + .name = "megaraid_legacy", + .id_table = megaraid_pci_tbl, + .probe = megaraid_probe_one, .remove = __devexit_p(megaraid_remove_one), .shutdown = megaraid_shutdown, }; -static int __init megaraid_legacy_init(void) +static int __init megaraid_init(void) { int error; @@ -5075,7 +5072,7 @@ "megaraid: failed to create megaraid root\n"); } #endif - error = pci_module_init(&megaraid_legacy_pci_driver); + error = pci_module_init(&megaraid_pci_driver); if (error) { #ifdef CONFIG_PROC_FS remove_proc_entry("megaraid", &proc_root); @@ -5089,7 +5086,7 @@ * First argument (major) to register_chrdev implies a dynamic * major number allocation. */ - major = register_chrdev(0, "megadev", &megadev_fops); + major = register_chrdev(0, "megadev_legacy", &megadev_fops); if (!major) { printk(KERN_WARNING "megaraid: failed to register char device\n"); @@ -5098,21 +5095,21 @@ return 0; } -static void __exit megaraid_legacy_exit(void) +static void __exit megaraid_exit(void) { /* * Unregister the character device interface to the driver. */ - unregister_chrdev(major, "megadev"); + unregister_chrdev(major, "megadev_legacy"); - pci_unregister_driver(&megaraid_legacy_pci_driver); + pci_unregister_driver(&megaraid_pci_driver); #ifdef CONFIG_PROC_FS remove_proc_entry("megaraid", &proc_root); #endif } -module_init(megaraid_legacy_init); -module_exit(megaraid_legacy_exit); +module_init(megaraid_init); +module_exit(megaraid_exit); /* vi: set ts=8 sw=8 tw=78: */ --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/scsi_scan.c +++ linux-source-2.6.15-2.6.15/drivers/scsi/scsi_scan.c @@ -783,8 +783,20 @@ transport_configure_device(&sdev->sdev_gendev); - if (sdev->host->hostt->slave_configure) - sdev->host->hostt->slave_configure(sdev); + if (sdev->host->hostt->slave_configure) { + int ret = sdev->host->hostt->slave_configure(sdev); + if (ret) { + /* + * if LLDD reports slave not present, don't clutter + * console with alloc failure messages + */ + if (ret != -ENXIO) { + sdev_printk(KERN_ERR, sdev, + "failed to configure device\n"); + } + return SCSI_SCAN_NO_RESPONSE; + } + } /* * Ok, the device is now all set up, we can --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/libata-core.c +++ linux-source-2.6.15-2.6.15/drivers/scsi/libata-core.c @@ -4303,6 +4303,9 @@ if (!ata_dev_present(dev)) return 0; + if (ap->flags & ATA_FLAG_SUSPENDED) + ata_busy_wait(ap, ATA_BUSY | ATA_DRQ, 200000); + ap->ops->phy_reset(ap); ata_acpi_exec_tfs(ap); --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/ahci.c +++ linux-source-2.6.15-2.6.15/drivers/scsi/ahci.c @@ -72,7 +72,6 @@ RX_FIS_D2H_REG = 0x40, /* offset of D2H Register FIS data */ board_ahci = 0, - board_via_ahci = 1, /* global controller registers */ HOST_CAP = 0x00, /* host capabilities */ @@ -147,7 +146,6 @@ PORT_CMD_LIST_ON = (1 << 15), /* cmd list DMA engine running */ PORT_CMD_FIS_ON = (1 << 14), /* FIS DMA engine running */ PORT_CMD_FIS_RX = (1 << 4), /* Enable FIS receive DMA engine */ - PORT_CMD_CLO = (1 << 3), /* CLO */ PORT_CMD_POWER_ON = (1 << 2), /* Power up device */ PORT_CMD_SPIN_UP = (1 << 1), /* Spin up device */ PORT_CMD_START = (1 << 0), /* Enable port DMA engine */ @@ -223,10 +221,6 @@ static int ahci_pci_device_suspend(struct pci_dev *pdev, pm_message_t state); static int ahci_pci_device_resume(struct pci_dev *pdev); static void ahci_remove_one (struct pci_dev *pdev); -static int via_ahci_qc_issue(struct ata_queued_cmd *qc); -static void via_ahci_phy_reset(struct ata_port *ap); -static int via_ahci_softreset(struct ata_port *ap); - static struct scsi_host_template ahci_sht = { .module = THIS_MODULE, @@ -277,33 +271,6 @@ .port_stop = ahci_port_stop, }; -static struct ata_port_operations via_ahci_ops = { - .port_disable = ata_port_disable, - - .check_status = ahci_check_status, - .check_altstatus = ahci_check_status, - .dev_select = ata_noop_dev_select, - - .tf_read = ahci_tf_read, - - - .qc_prep = ahci_qc_prep, - - .eng_timeout = ahci_eng_timeout, - - .irq_handler = ahci_interrupt, - .irq_clear = ahci_irq_clear, - - .scr_read = ahci_scr_read, - .scr_write = ahci_scr_write, - - .port_start = ahci_port_start, - - .phy_reset = via_ahci_phy_reset, - .qc_issue = via_ahci_qc_issue, - .port_stop = ahci_port_stop, -}; - static struct ata_port_info ahci_port_info[] = { /* board_ahci */ { @@ -315,16 +282,6 @@ .udma_mask = 0x7f, /* udma0-6 ; FIXME */ .port_ops = &ahci_ops, }, - /* board_via_ahci */ - { - .sht = &ahci_sht, - .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | - ATA_FLAG_SRST | ATA_FLAG_MMIO | - ATA_FLAG_PIO_DMA, - .pio_mask = 0x03, /* pio3-4 */ - .udma_mask = 0x7f, /* udma0-6 ; FIXME */ - .port_ops = &via_ahci_ops, - }, }; static const struct pci_device_id ahci_pci_tbl[] = { @@ -358,8 +315,28 @@ board_ahci }, /* ICH8M */ { PCI_VENDOR_ID_INTEL, 0x282a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, board_ahci }, /* ICH8M */ - { PCI_VENDOR_ID_VIA, 0x3349, PCI_ANY_ID, PCI_ANY_ID, 0, 0, - board_via_ahci }, /* VT8251*/ + { 0x197b, 0x2360, PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_ahci }, /* JMicron JMB360 */ + { 0x197b, 0x2361, PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_ahci }, /* JMicron JMB361 */ + { 0x197b, 0x2363, PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_ahci }, /* JMicron JMB363 */ + { 0x197b, 0x2365, PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_ahci }, /* JMicron JMB365 */ + { 0x197b, 0x2366, PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_ahci }, /* JMicron JMB366 */ + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_AHCI, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_ahci }, /* MCP65 */ + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_AHCI2, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_ahci }, /* MCP65 */ + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_AHCI3, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_ahci }, /* MCP65 */ + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_AHCI4, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + board_ahci }, /* MCP65 */ { } /* terminate list */ }; @@ -1289,7 +1266,6 @@ struct pci_dev *pdev = to_pci_dev(probe_ent->dev); void __iomem *mmio = probe_ent->mmio_base; u32 tmp, cap_save; - u16 tmp16; unsigned int i, j, using_dac; int rc; void __iomem *port_mmio; @@ -1330,9 +1306,13 @@ writel(0xf, mmio + HOST_PORTS_IMPL); (void) readl(mmio + HOST_PORTS_IMPL); /* flush */ - pci_read_config_word(pdev, 0x92, &tmp16); - tmp16 |= 0xf; - pci_write_config_word(pdev, 0x92, tmp16); + if (pdev->vendor == PCI_VENDOR_ID_INTEL) { + u16 tmp16; + + pci_read_config_word(pdev, 0x92, &tmp16); + tmp16 |= 0xf; + pci_write_config_word(pdev, 0x92, tmp16); + } hpriv->cap = readl(mmio + HOST_CAP); hpriv->port_map = readl(mmio + HOST_PORTS_IMPL); @@ -1584,6 +1564,10 @@ if (have_msi) hpriv->flags |= AHCI_FLAG_MSI; + /* JMicron-specific fixup: make sure we're in AHCI mode */ + if (pdev->vendor == 0x197b) + pci_write_config_byte(pdev, 0x41, 0xa1); + /* initialize adapter */ rc = ahci_host_init(probe_ent); if (rc) @@ -1615,112 +1599,6 @@ return rc; } -/* START: patch code for VIA VT8251 ahci controller */ - -static int via_ahci_softreset(struct ata_port *ap) -{ - void __iomem *port_mmio = (void __iomem *) ap->ioaddr.cmd_addr; - struct ahci_port_priv *pp = ap->private_data; - u32 tmp,i,j,via_opts[]={0x00000505,0x00000005}; - u8 *fisbuf,via_fisbuf[]={0x04,0x00}; - - VPRINTK("ENTER\n"); - - writel(0x00000000, port_mmio + PORT_IRQ_MASK); /*disable interrupt */ - readl (port_mmio + PORT_IRQ_MASK); /* flush */ - - /* prepare the software-reset commands */ - - memset(pp->cmd_slot, 0, 32); - - for (j = 0; j < 2; j++) { - /* prepare the command header */ - pp->cmd_slot[0].opts = via_opts[j]; - pp->cmd_slot[0].status = 0; - pp->cmd_slot[0].tbl_addr = cpu_to_le32(pp->cmd_tbl_dma & 0xffffffff); - pp->cmd_slot[0].tbl_addr_hi = cpu_to_le32((pp->cmd_tbl_dma >> 16) >> 16); - - /* prepare CMDFIS struct */ - fisbuf = pp->cmd_tbl; - memset(fisbuf, 0, 64); - fisbuf[0] = 0x27; - fisbuf[7] = 0xa0; - fisbuf[15] = via_fisbuf[j]; - - /* trigger the commands */ - writel(0x1, port_mmio + PORT_CMD_ISSUE); - readl (port_mmio + PORT_CMD_ISSUE); /* flush */ - - udelay(20); - /* wait command complete */ - for (i = 0; i < 2000; i++) { - tmp = readl(port_mmio + PORT_CMD_ISSUE); - if ((tmp & 1) == 0) break; - msleep(20); - } - - if (i == 2000) { - printk(KERN_WARNING "TimeOut for Wait Command complete\n"); - return 1; - } - } - - // enable port interrupt - writel(0xffffffff, port_mmio + PORT_IRQ_MASK); - readl (port_mmio + PORT_IRQ_MASK); /* flush */ - - return 0; -} - - -static void via_ahci_phy_reset(struct ata_port *ap) -{ - void __iomem *port_mmio = (void __iomem *) ap->ioaddr.cmd_addr; - u32 tmp,i; - u8 tmp_status; - - /*Fix the VIA busy bug by a software reset*/ - for (i = 0; i < 100; i++) { - tmp_status = ap->ops->check_status(ap); - if ((tmp_status & ATA_BUSY) == 0) break; - msleep(10); - } - - if ((tmp_status & ATA_BUSY)) { - DPRINTK("Busy after CommReset, do softreset...\n"); - /*set the PxCMD.CLO bit to clear BUSY and DRQ, to make the reset command sent out*/ - tmp = readl(port_mmio + PORT_CMD); - tmp |= PORT_CMD_CLO; - writel(tmp, port_mmio + PORT_CMD); - readl(port_mmio + PORT_CMD); /* flush */ - - if (via_ahci_softreset(ap)) { - printk(KERN_WARNING "softreset failed\n"); - return; - } - } - - ahci_phy_reset(ap); -} - -static int via_ahci_qc_issue(struct ata_queued_cmd *qc) -{ - - if (qc && - qc->tf.command == ATA_CMD_SET_FEATURES && - qc->tf.feature == SETFEATURES_XFER) { - /* skip set xfer mode process */ - - ata_qc_complete(qc); - qc = NULL; - return 0; - } - - ahci_qc_issue(qc); - - return 0; -} - static void ahci_remove_one (struct pci_dev *pdev) { --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/sata_mv.c +++ linux-source-2.6.15-2.6.15/drivers/scsi/sata_mv.c @@ -511,6 +511,12 @@ }; /* + * module options + */ +static int msi; /* Use PCI msi; either zero (off, default) or non-zero */ + + +/* * Functions */ @@ -2192,7 +2198,7 @@ } /* Enable interrupts */ - if (pci_enable_msi(pdev) == 0) { + if (msi && pci_enable_msi(pdev) == 0) { hpriv->hp_flags |= MV_HP_FLAG_MSI; } else { pci_intx(pdev, 1); @@ -2247,5 +2253,8 @@ MODULE_DEVICE_TABLE(pci, mv_pci_tbl); MODULE_VERSION(DRV_VERSION); +module_param(msi, int, 0444); +MODULE_PARM_DESC(msi, "Enable use of PCI MSI (0=off, 1=on)"); + module_init(mv_init); module_exit(mv_exit); --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/megaraid.h +++ linux-source-2.6.15-2.6.15/drivers/scsi/megaraid.h @@ -3,9 +3,8 @@ #include - #define MEGARAID_VERSION \ - "v2.00.3 (Release Date: Wed Feb 19 08:51:30 EST 2003)\n" + "v2.00.4 (Release Date: Thu Feb 9 08:51:30 EST 2006)\n" /* * Driver features - change the values to enable or disable features in the @@ -84,11 +83,6 @@ #define LSI_SUBSYS_VID 0x1000 #define INTEL_SUBSYS_VID 0x8086 -/* Sub-System Device IDs */ -#define HP_NETRAID1M_SUBSYS_DID 0x60E7 -#define HP_NETRAID2M_SUBSYS_DID 0x60E8 -#define PCI_SUBSYS_ID_PERC3_ATA100_4 0x0511 - #define HBA_SIGNATURE 0x3344 #define HBA_SIGNATURE_471 0xCCCC #define HBA_SIGNATURE_64BIT 0x0299 --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/sata_nv.c +++ linux-source-2.6.15-2.6.15/drivers/scsi/sata_nv.c @@ -160,12 +160,17 @@ PCI_ANY_ID, PCI_ANY_ID, 0, 0, GENERIC }, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, GENERIC }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_SATA, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, GENERIC }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_SATA2, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, GENERIC }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_SATA3, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, GENERIC }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_SATA4, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, GENERIC }, { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE<<8, 0xffff00, GENERIC }, - { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, - PCI_ANY_ID, PCI_ANY_ID, - PCI_CLASS_STORAGE_RAID<<8, 0xffff00, GENERIC }, { 0, } /* terminate list */ }; --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/megaraid/megaraid_mm.h +++ linux-source-2.6.15-2.6.15/drivers/scsi/megaraid/megaraid_mm.h @@ -22,7 +22,6 @@ #include #include #include -#include #include "mbox_defs.h" #include "megaraid_ioctl.h" --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/megaraid/megaraid_mbox.h +++ linux-source-2.6.15-2.6.15/drivers/scsi/megaraid/megaraid_mbox.h @@ -21,8 +21,8 @@ #include "megaraid_ioctl.h" -#define MEGARAID_VERSION "2.20.4.6" -#define MEGARAID_EXT_VERSION "(Release Date: Mon Mar 07 12:27:22 EST 2005)" +#define MEGARAID_VERSION "2.20.4.8" +#define MEGARAID_EXT_VERSION "(Release Date: Mon Apr 11 12:27:22 EST 2006)" /* @@ -100,6 +100,9 @@ #define MBOX_BUSY_WAIT 10 // max usec to wait for busy mailbox #define MBOX_RESET_WAIT 180 // wait these many seconds in reset #define MBOX_RESET_EXT_WAIT 120 // extended wait reset +#define MBOX_SYNC_WAIT_CNT 0xFFFF // wait loop index for synchronous mode + +#define MBOX_SYNC_DELAY_200 200 // 200 micro-seconds /* * maximum transfer that can happen through the firmware commands issued --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/megaraid/megaraid_sas.c +++ linux-source-2.6.15-2.6.15/drivers/scsi/megaraid/megaraid_sas.c @@ -10,7 +10,7 @@ * 2 of the License, or (at your option) any later version. * * FILE : megaraid_sas.c - * Version : v00.00.02.00-rc4 + * Version : v00.00.02.04 * * Authors: * Sreenivas Bagalkote @@ -54,13 +54,19 @@ { PCI_VENDOR_ID_LSI_LOGIC, - PCI_DEVICE_ID_LSI_SAS1064R, + PCI_DEVICE_ID_LSI_SAS1064R, // xscale IOP PCI_ANY_ID, PCI_ANY_ID, }, { + PCI_VENDOR_ID_LSI_LOGIC, + PCI_DEVICE_ID_LSI_SAS1078R, // ppc IOP + PCI_ANY_ID, + PCI_ANY_ID, + }, + { PCI_VENDOR_ID_DELL, - PCI_DEVICE_ID_DELL_PERC5, + PCI_DEVICE_ID_DELL_PERC5, // xscale IOP PCI_ANY_ID, PCI_ANY_ID, }, @@ -80,7 +86,7 @@ * * Returns a free command from the pool */ -static inline struct megasas_cmd *megasas_get_cmd(struct megasas_instance +static struct megasas_cmd *megasas_get_cmd(struct megasas_instance *instance) { unsigned long flags; @@ -118,12 +124,18 @@ spin_unlock_irqrestore(&instance->cmd_pool_lock, flags); } + +/** +* The following functions are defined for xscale +* (deviceid : 1064R, PERC5) controllers +*/ + /** - * megasas_enable_intr - Enables interrupts + * megasas_enable_intr_xscale - Enables interrupts * @regs: MFI register set */ static inline void -megasas_enable_intr(struct megasas_register_set __iomem * regs) +megasas_enable_intr_xscale(struct megasas_register_set __iomem * regs) { writel(1, &(regs)->outbound_intr_mask); @@ -132,13 +144,153 @@ } /** + * megasas_read_fw_status_reg_xscale - returns the current FW status value + * @regs: MFI register set + */ +static u32 +megasas_read_fw_status_reg_xscale(struct megasas_register_set __iomem * regs) +{ + return readl(&(regs)->outbound_msg_0); +} +/** + * megasas_clear_interrupt_xscale - Check & clear interrupt + * @regs: MFI register set + */ +static int +megasas_clear_intr_xscale(struct megasas_register_set __iomem * regs) +{ + u32 status; + /* + * Check if it is our interrupt + */ + status = readl(®s->outbound_intr_status); + + if (!(status & MFI_OB_INTR_STATUS_MASK)) { + return 1; + } + + /* + * Clear the interrupt by writing back the same value + */ + writel(status, ®s->outbound_intr_status); + + return 0; +} + +/** + * megasas_fire_cmd_xscale - Sends command to the FW + * @frame_phys_addr : Physical address of cmd + * @frame_count : Number of frames for the command + * @regs : MFI register set + */ +static inline void +megasas_fire_cmd_xscale(dma_addr_t frame_phys_addr,u32 frame_count, struct megasas_register_set __iomem *regs) +{ + writel((frame_phys_addr >> 3)|(frame_count), + &(regs)->inbound_queue_port); +} + +static struct megasas_instance_template megasas_instance_template_xscale = { + + .fire_cmd = megasas_fire_cmd_xscale, + .enable_intr = megasas_enable_intr_xscale, + .clear_intr = megasas_clear_intr_xscale, + .read_fw_status_reg = megasas_read_fw_status_reg_xscale, +}; + +/** +* This is the end of set of functions & definitions specific +* to xscale (deviceid : 1064R, PERC5) controllers +*/ + +/** +* The following functions are defined for ppc (deviceid : 0x60) +* controllers +*/ + +/** + * megasas_enable_intr_ppc - Enables interrupts + * @regs: MFI register set + */ +static inline void +megasas_enable_intr_ppc(struct megasas_register_set __iomem * regs) +{ + writel(0xFFFFFFFF, &(regs)->outbound_doorbell_clear); + + writel(~0x80000004, &(regs)->outbound_intr_mask); + + /* Dummy readl to force pci flush */ + readl(®s->outbound_intr_mask); +} + +/** + * megasas_read_fw_status_reg_ppc - returns the current FW status value + * @regs: MFI register set + */ +static u32 +megasas_read_fw_status_reg_ppc(struct megasas_register_set __iomem * regs) +{ + return readl(&(regs)->outbound_scratch_pad); +} + +/** + * megasas_clear_interrupt_ppc - Check & clear interrupt + * @regs: MFI register set + */ +static int +megasas_clear_intr_ppc(struct megasas_register_set __iomem * regs) +{ + u32 status; + /* + * Check if it is our interrupt + */ + status = readl(®s->outbound_intr_status); + + if (!(status & MFI_REPLY_1078_MESSAGE_INTERRUPT)) { + return 1; + } + + /* + * Clear the interrupt by writing back the same value + */ + writel(status, ®s->outbound_doorbell_clear); + + return 0; +} +/** + * megasas_fire_cmd_ppc - Sends command to the FW + * @frame_phys_addr : Physical address of cmd + * @frame_count : Number of frames for the command + * @regs : MFI register set + */ +static inline void +megasas_fire_cmd_ppc(dma_addr_t frame_phys_addr, u32 frame_count, struct megasas_register_set __iomem *regs) +{ + writel((frame_phys_addr | (frame_count<<1))|1, + &(regs)->inbound_queue_port); +} + +static struct megasas_instance_template megasas_instance_template_ppc = { + + .fire_cmd = megasas_fire_cmd_ppc, + .enable_intr = megasas_enable_intr_ppc, + .clear_intr = megasas_clear_intr_ppc, + .read_fw_status_reg = megasas_read_fw_status_reg_ppc, +}; + +/** +* This is the end of set of functions & definitions +* specific to ppc (deviceid : 0x60) controllers +*/ + +/** * megasas_disable_intr - Disables interrupts * @regs: MFI register set */ static inline void megasas_disable_intr(struct megasas_register_set __iomem * regs) { - u32 mask = readl(®s->outbound_intr_mask) & (~0x00000001); + u32 mask = 0x1f; writel(mask, ®s->outbound_intr_mask); /* Dummy readl to force pci flush */ @@ -166,8 +318,7 @@ /* * Issue the frame using inbound queue port */ - writel(cmd->frame_phys_addr >> 3, - &instance->reg_set->inbound_queue_port); + instance->instancet->fire_cmd(cmd->frame_phys_addr ,0,instance->reg_set); /* * Wait for cmd_status to change @@ -197,8 +348,7 @@ { cmd->cmd_status = ENODATA; - writel(cmd->frame_phys_addr >> 3, - &instance->reg_set->inbound_queue_port); + instance->instancet->fire_cmd(cmd->frame_phys_addr ,0,instance->reg_set); wait_event(instance->int_cmd_wait_q, (cmd->cmd_status != ENODATA)); @@ -241,8 +391,7 @@ cmd->sync_cmd = 1; cmd->cmd_status = 0xFF; - writel(cmd->frame_phys_addr >> 3, - &instance->reg_set->inbound_queue_port); + instance->instancet->fire_cmd(cmd->frame_phys_addr ,0,instance->reg_set); /* * Wait for this cmd to complete @@ -262,7 +411,7 @@ * If successful, this function returns the number of SG elements. Otherwise, * it returnes -1. */ -static inline int +static int megasas_make_sgl32(struct megasas_instance *instance, struct scsi_cmnd *scp, union megasas_sgl *mfi_sgl) { @@ -310,7 +459,7 @@ * If successful, this function returns the number of SG elements. Otherwise, * it returnes -1. */ -static inline int +static int megasas_make_sgl64(struct megasas_instance *instance, struct scsi_cmnd *scp, union megasas_sgl *mfi_sgl) { @@ -359,7 +508,7 @@ * This function prepares CDB commands. These are typcially pass-through * commands to the devices. */ -static inline int +static int megasas_build_dcdb(struct megasas_instance *instance, struct scsi_cmnd *scp, struct megasas_cmd *cmd) { @@ -440,7 +589,7 @@ * * Frames (and accompanying SGLs) for regular SCSI IOs use this function. */ -static inline int +static int megasas_build_ldio(struct megasas_instance *instance, struct scsi_cmnd *scp, struct megasas_cmd *cmd) { @@ -557,112 +706,29 @@ } /** - * megasas_build_cmd - Prepares a command packet - * @instance: Adapter soft state - * @scp: SCSI command - * @frame_count: [OUT] Number of frames used to prepare this command + * megasas_is_ldio - Checks if the cmd is for logical drive + * @scmd: SCSI command + * + * Called by megasas_queue_command to find out if the command to be queued + * is a logical drive command */ -static inline struct megasas_cmd *megasas_build_cmd(struct megasas_instance - *instance, - struct scsi_cmnd *scp, - int *frame_count) +static inline int megasas_is_ldio(struct scsi_cmnd *cmd) { - u32 logical_cmd; - struct megasas_cmd *cmd; - - /* - * Find out if this is logical or physical drive command. - */ - logical_cmd = MEGASAS_IS_LOGICAL(scp); - - /* - * Logical drive command - */ - if (logical_cmd) { - - if (scp->device->id >= MEGASAS_MAX_LD) { - scp->result = DID_BAD_TARGET << 16; - return NULL; - } - - switch (scp->cmnd[0]) { - - case READ_10: - case WRITE_10: - case READ_12: - case WRITE_12: - case READ_6: - case WRITE_6: - case READ_16: - case WRITE_16: - /* - * Fail for LUN > 0 - */ - if (scp->device->lun) { - scp->result = DID_BAD_TARGET << 16; - return NULL; - } - - cmd = megasas_get_cmd(instance); - - if (!cmd) { - scp->result = DID_IMM_RETRY << 16; - return NULL; - } - - *frame_count = megasas_build_ldio(instance, scp, cmd); - - if (!(*frame_count)) { - megasas_return_cmd(instance, cmd); - return NULL; - } - - return cmd; - - default: - /* - * Fail for LUN > 0 - */ - if (scp->device->lun) { - scp->result = DID_BAD_TARGET << 16; - return NULL; - } - - cmd = megasas_get_cmd(instance); - - if (!cmd) { - scp->result = DID_IMM_RETRY << 16; - return NULL; - } - - *frame_count = megasas_build_dcdb(instance, scp, cmd); - - if (!(*frame_count)) { - megasas_return_cmd(instance, cmd); - return NULL; - } - - return cmd; - } - } else { - cmd = megasas_get_cmd(instance); - - if (!cmd) { - scp->result = DID_IMM_RETRY << 16; - return NULL; - } - - *frame_count = megasas_build_dcdb(instance, scp, cmd); - - if (!(*frame_count)) { - megasas_return_cmd(instance, cmd); - return NULL; - } - - return cmd; + if (!MEGASAS_IS_LOGICAL(cmd)) + return 0; + switch (cmd->cmnd[0]) { + case READ_10: + case WRITE_10: + case READ_12: + case WRITE_12: + case READ_6: + case WRITE_6: + case READ_16: + case WRITE_16: + return 1; + default: + return 0; } - - return NULL; } /** @@ -683,16 +749,28 @@ scmd->scsi_done = done; scmd->result = 0; - cmd = megasas_build_cmd(instance, scmd, &frame_count); - - if (!cmd) { - done(scmd); - return 0; + if (MEGASAS_IS_LOGICAL(scmd) && + (scmd->device->id >= MEGASAS_MAX_LD || scmd->device->lun)) { + scmd->result = DID_BAD_TARGET << 16; + goto out_done; } + cmd = megasas_get_cmd(instance); + if (!cmd) + return SCSI_MLQUEUE_HOST_BUSY; + + /* + * Logical drive command + */ + if (megasas_is_ldio(scmd)) + frame_count = megasas_build_ldio(instance, scmd, cmd); + else + frame_count = megasas_build_dcdb(instance, scmd, cmd); + + if (!frame_count) + goto out_return_cmd; + cmd->scmd = scmd; - scmd->SCp.ptr = (char *)cmd; - scmd->SCp.sent_command = jiffies; /* * Issue the command to the FW @@ -701,10 +779,35 @@ instance->fw_outstanding++; spin_unlock_irqrestore(&instance->instance_lock, flags); - writel(((cmd->frame_phys_addr >> 3) | (cmd->frame_count - 1)), - &instance->reg_set->inbound_queue_port); + instance->instancet->fire_cmd(cmd->frame_phys_addr ,cmd->frame_count-1,instance->reg_set); return 0; + + out_return_cmd: + megasas_return_cmd(instance, cmd); + out_done: + done(scmd); + return 0; +} + +static int megasas_slave_configure(struct scsi_device *sdev) +{ + /* + * Don't export physical disk devices to the disk driver. + * + * FIXME: Currently we don't export them to the midlayer at all. + * That will be fixed once LSI engineers have audited the + * firmware for possible issues. + */ + if (sdev->channel < MEGASAS_MAX_PD_CHANNELS && sdev->type == TYPE_DISK) + return -ENXIO; + + /* + * The RAID firmware may require extended timeouts. + */ + if (sdev->channel >= MEGASAS_MAX_PD_CHANNELS) + sdev->timeout = 90 * HZ; + return 0; } /** @@ -775,23 +878,6 @@ return ret_val; } -static enum scsi_eh_timer_return megasas_reset_timer(struct scsi_cmnd *scmd) -{ - unsigned long seconds; - - if (scmd->SCp.ptr) { - seconds = (jiffies - scmd->SCp.sent_command) / HZ; - - if (seconds < 90) { - return EH_RESET_TIMER; - } else { - return EH_NOT_HANDLED; - } - } - - return EH_HANDLED; -} - /** * megasas_reset_device - Device reset handler entry point */ @@ -815,7 +901,7 @@ int ret; /* - * Frist wait for all commands to complete + * First wait for all commands to complete */ ret = megasas_generic_reset(scmd); @@ -857,11 +943,11 @@ .module = THIS_MODULE, .name = "LSI Logic SAS based MegaRAID driver", .proc_name = "megaraid_sas", + .slave_configure = megasas_slave_configure, .queuecommand = megasas_queue_command, .eh_device_reset_handler = megasas_reset_device, .eh_bus_reset_handler = megasas_reset_bus_host, .eh_host_reset_handler = megasas_reset_bus_host, - .eh_timed_out = megasas_reset_timer, .use_clustering = ENABLE_CLUSTERING, }; @@ -913,7 +999,7 @@ * @instance: Adapter soft state * @cmd: Completed command */ -static inline void +static void megasas_unmap_sgbuf(struct megasas_instance *instance, struct megasas_cmd *cmd) { dma_addr_t buf_h; @@ -957,7 +1043,7 @@ * an alternate status (as in the case of aborted * commands) */ -static inline void +static void megasas_complete_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd, u8 alt_status) { @@ -985,20 +1071,6 @@ break; } - /* - * Don't export physical disk devices to mid-layer. - */ - if (!MEGASAS_IS_LOGICAL(cmd->scmd) && - (hdr->cmd_status == MFI_STAT_OK) && - (cmd->scmd->cmnd[0] == INQUIRY)) { - - if (((*(u8 *) cmd->scmd->request_buffer) & 0x1F) == - TYPE_DISK) { - cmd->scmd->result = DID_BAD_TARGET << 16; - exception = 1; - } - } - case MFI_CMD_LD_READ: case MFI_CMD_LD_WRITE: @@ -1104,10 +1176,9 @@ * SCSI mid-layer instead of the status * returned by the FW */ -static inline int +static int megasas_deplete_reply_queue(struct megasas_instance *instance, u8 alt_status) { - u32 status; u32 producer; u32 consumer; u32 context; @@ -1115,17 +1186,10 @@ /* * Check if it is our interrupt + * Clear the interrupt */ - status = readl(&instance->reg_set->outbound_intr_status); - - if (!(status & MFI_OB_INTR_STATUS_MASK)) { + if(instance->instancet->clear_intr(instance->reg_set)) return IRQ_NONE; - } - - /* - * Clear the interrupt by writing back the same value - */ - writel(status, &instance->reg_set->outbound_intr_status); producer = *instance->producer; consumer = *instance->consumer; @@ -1159,7 +1223,7 @@ /** * megasas_transition_to_ready - Move the FW to READY state - * @reg_set: MFI register set + * @instance: Adapter soft state * * During the initialization, FW passes can potentially be in any one of * several possible states. If the FW in operational, waiting-for-handshake @@ -1167,14 +1231,14 @@ * has to wait for the ready state. */ static int -megasas_transition_to_ready(struct megasas_register_set __iomem * reg_set) +megasas_transition_to_ready(struct megasas_instance* instance) { int i; u8 max_wait; u32 fw_state; u32 cur_state; - fw_state = readl(®_set->outbound_msg_0) & MFI_STATE_MASK; + fw_state = instance->instancet->read_fw_status_reg(instance->reg_set) & MFI_STATE_MASK; while (fw_state != MFI_STATE_READY) { @@ -1192,7 +1256,7 @@ * Set the CLR bit in inbound doorbell */ writel(MFI_INIT_CLEAR_HANDSHAKE, - ®_set->inbound_doorbell); + &instance->reg_set->inbound_doorbell); max_wait = 2; cur_state = MFI_STATE_WAIT_HANDSHAKE; @@ -1202,8 +1266,8 @@ /* * Bring it to READY state; assuming max wait 2 secs */ - megasas_disable_intr(reg_set); - writel(MFI_INIT_READY, ®_set->inbound_doorbell); + megasas_disable_intr(instance->reg_set); + writel(MFI_INIT_READY, &instance->reg_set->inbound_doorbell); max_wait = 10; cur_state = MFI_STATE_OPERATIONAL; @@ -1252,8 +1316,8 @@ * The cur_state should not last for more than max_wait secs */ for (i = 0; i < (max_wait * 1000); i++) { - fw_state = MFI_STATE_MASK & - readl(®_set->outbound_msg_0); + fw_state = instance->instancet->read_fw_status_reg(instance->reg_set) & + MFI_STATE_MASK ; if (fw_state == cur_state) { msleep(1); @@ -1615,18 +1679,30 @@ reg_set = instance->reg_set; + switch(instance->pdev->device) + { + case PCI_DEVICE_ID_LSI_SAS1078R: + instance->instancet = &megasas_instance_template_ppc; + break; + case PCI_DEVICE_ID_LSI_SAS1064R: + case PCI_DEVICE_ID_DELL_PERC5: + default: + instance->instancet = &megasas_instance_template_xscale; + break; + } + /* * We expect the FW state to be READY */ - if (megasas_transition_to_ready(instance->reg_set)) + if (megasas_transition_to_ready(instance)) goto fail_ready_state; /* * Get various operational parameters from status register */ - instance->max_fw_cmds = readl(®_set->outbound_msg_0) & 0x00FFFF; - instance->max_num_sge = (readl(®_set->outbound_msg_0) & 0xFF0000) >> - 0x10; + instance->max_fw_cmds = instance->instancet->read_fw_status_reg(reg_set) & 0x00FFFF; + instance->max_num_sge = (instance->instancet->read_fw_status_reg(reg_set) & 0xFF0000) >> + 0x10; /* * Create a pool of commands */ @@ -1935,8 +2011,7 @@ /* * Issue the aen registration frame */ - writel(cmd->frame_phys_addr >> 3, - &instance->reg_set->inbound_queue_port); + instance->instancet->fire_cmd(cmd->frame_phys_addr ,0,instance->reg_set); return 0; } @@ -1990,6 +2065,7 @@ host->max_channel = MEGASAS_MAX_CHANNELS - 1; host->max_id = MEGASAS_MAX_DEV_PER_CHANNEL; host->max_lun = MEGASAS_MAX_LUN; + host->max_cmd_len = 16; /* * Notify the mid-layer about the new controller @@ -2125,7 +2201,7 @@ goto fail_irq; } - megasas_enable_intr(instance->reg_set); + instance->instancet->enable_intr(instance->reg_set); /* * Store instance in PCI softstate @@ -2680,9 +2756,8 @@ unsigned long arg) { switch (cmd) { - case MEGASAS_IOC_FIRMWARE:{ - return megasas_mgmt_compat_ioctl_fw(file, arg); - } + case MEGASAS_IOC_FIRMWARE32: + return megasas_mgmt_compat_ioctl_fw(file, arg); case MEGASAS_IOC_GET_AEN: return megasas_mgmt_ioctl_aen(file, arg); } --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/megaraid/megaraid_sas.h +++ linux-source-2.6.15-2.6.15/drivers/scsi/megaraid/megaraid_sas.h @@ -18,10 +18,9 @@ /** * MegaRAID SAS Driver meta data */ -#define MEGASAS_VERSION "00.00.02.00-rc4" -#define MEGASAS_RELDATE "Sep 16, 2005" -#define MEGASAS_EXT_VERSION "Fri Sep 16 12:37:08 EDT 2005" - +#define MEGASAS_VERSION "00.00.02.04" +#define MEGASAS_RELDATE "Feb 03, 2006" +#define MEGASAS_EXT_VERSION "Fri Feb 03 14:31:44 PST 2006" /* * ===================================== * MegaRAID SAS MFI firmware definitions @@ -554,31 +553,46 @@ #define MFI_OB_INTR_STATUS_MASK 0x00000002 #define MFI_POLL_TIMEOUT_SECS 10 +#define MFI_REPLY_1078_MESSAGE_INTERRUPT 0x80000000 +#define PCI_DEVICE_ID_LSI_SAS1078R 0x00000060 + struct megasas_register_set { + u32 reserved_0[4]; /*0000h*/ + + u32 inbound_msg_0; /*0010h*/ + u32 inbound_msg_1; /*0014h*/ + u32 outbound_msg_0; /*0018h*/ + u32 outbound_msg_1; /*001Ch*/ + + u32 inbound_doorbell; /*0020h*/ + u32 inbound_intr_status; /*0024h*/ + u32 inbound_intr_mask; /*0028h*/ + + u32 outbound_doorbell; /*002Ch*/ + u32 outbound_intr_status; /*0030h*/ + u32 outbound_intr_mask; /*0034h*/ - u32 reserved_0[4]; /*0000h */ + u32 reserved_1[2]; /*0038h*/ - u32 inbound_msg_0; /*0010h */ - u32 inbound_msg_1; /*0014h */ - u32 outbound_msg_0; /*0018h */ - u32 outbound_msg_1; /*001Ch */ + u32 inbound_queue_port; /*0040h*/ + u32 outbound_queue_port; /*0044h*/ - u32 inbound_doorbell; /*0020h */ - u32 inbound_intr_status; /*0024h */ - u32 inbound_intr_mask; /*0028h */ + u32 reserved_2[22]; /*0048h*/ - u32 outbound_doorbell; /*002Ch */ - u32 outbound_intr_status; /*0030h */ - u32 outbound_intr_mask; /*0034h */ + u32 outbound_doorbell_clear; /*00A0h*/ - u32 reserved_1[2]; /*0038h */ + u32 reserved_3[3]; /*00A4h*/ - u32 inbound_queue_port; /*0040h */ - u32 outbound_queue_port; /*0044h */ + u32 outbound_scratch_pad ; /*00B0h*/ - u32 reserved_2; /*004Ch */ + u32 reserved_4[3]; /*00B4h*/ - u32 index_registers[1004]; /*0050h */ + u32 inbound_low_queue_port ; /*00C0h*/ + + u32 inbound_high_queue_port ; /*00C4h*/ + + u32 reserved_5; /*00C8h*/ + u32 index_registers[820]; /*00CCh*/ } __attribute__ ((packed)); @@ -1013,6 +1027,16 @@ } __attribute__ ((packed)); + struct megasas_instance_template { + void (*fire_cmd)(dma_addr_t ,u32 ,struct megasas_register_set __iomem *); + + void (*enable_intr)(struct megasas_register_set __iomem *) ; + + int (*clear_intr)(struct megasas_register_set __iomem *); + + u32 (*read_fw_status_reg)(struct megasas_register_set __iomem *); + }; + struct megasas_instance { u32 *producer; @@ -1056,6 +1080,8 @@ u32 fw_outstanding; u32 hw_crit_error; spinlock_t instance_lock; + + struct megasas_instance_template *instancet; }; #define MEGASAS_IS_LOGICAL(scp) \ @@ -1125,11 +1151,10 @@ struct compat_iovec sgl[MAX_IOCTL_SGE]; } __attribute__ ((packed)); -#define MEGASAS_IOC_FIRMWARE _IOWR('M', 1, struct compat_megasas_iocpacket) -#else -#define MEGASAS_IOC_FIRMWARE _IOWR('M', 1, struct megasas_iocpacket) #endif +#define MEGASAS_IOC_FIRMWARE _IOWR('M', 1, struct megasas_iocpacket) +#define MEGASAS_IOC_FIRMWARE32 _IOWR('M', 1, struct compat_megasas_iocpacket) #define MEGASAS_IOC_GET_AEN _IOW('M', 3, struct megasas_aen) struct megasas_mgmt_info { --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/megaraid/megaraid_mbox.c +++ linux-source-2.6.15-2.6.15/drivers/scsi/megaraid/megaraid_mbox.c @@ -10,12 +10,13 @@ * 2 of the License, or (at your option) any later version. * * FILE : megaraid_mbox.c - * Version : v2.20.4.6 (Mar 07 2005) + * Version : v2.20.4.8 (Apr 11 2006) * * Authors: * Atul Mukker * Sreenivas Bagalkote * Manoj Jose + * Seokmann Ju * * List of supported controllers * @@ -136,7 +137,7 @@ -MODULE_AUTHOR("LSI Logic Corporation"); +MODULE_AUTHOR("sju@lsil.com"); MODULE_DESCRIPTION("LSI Logic MegaRAID Mailbox Driver"); MODULE_LICENSE("GPL"); MODULE_VERSION(MEGARAID_VERSION); @@ -278,68 +279,14 @@ { PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3, - PCI_VENDOR_ID_DELL, - PCI_SUBSYS_ID_PERC3_QC, - }, - { - PCI_VENDOR_ID_AMI, - PCI_DEVICE_ID_AMI_MEGARAID3, - PCI_VENDOR_ID_DELL, - PCI_SUBSYS_ID_PERC3_DC, - }, - { - PCI_VENDOR_ID_AMI, - PCI_DEVICE_ID_AMI_MEGARAID3, - PCI_VENDOR_ID_DELL, - PCI_SUBSYS_ID_PERC3_SC, - }, - { - PCI_VENDOR_ID_AMI, - PCI_DEVICE_ID_AMI_MEGARAID3, - PCI_VENDOR_ID_AMI, - PCI_SUBSYS_ID_PERC3_SC, - }, - { - PCI_VENDOR_ID_AMI, - PCI_DEVICE_ID_AMI_MEGARAID3, - PCI_VENDOR_ID_AMI, - PCI_SUBSYS_ID_PERC3_DC, - }, - { - PCI_VENDOR_ID_LSI_LOGIC, - PCI_DEVICE_ID_MEGARAID_SCSI_320_0, - PCI_VENDOR_ID_LSI_LOGIC, - PCI_SUBSYS_ID_MEGARAID_SCSI_320_0, - }, - { - PCI_VENDOR_ID_LSI_LOGIC, - PCI_DEVICE_ID_MEGARAID_SCSI_320_1, - PCI_VENDOR_ID_LSI_LOGIC, - PCI_SUBSYS_ID_MEGARAID_SCSI_320_1, - }, - { - PCI_VENDOR_ID_LSI_LOGIC, - PCI_DEVICE_ID_MEGARAID_SCSI_320_2, - PCI_VENDOR_ID_LSI_LOGIC, - PCI_SUBSYS_ID_MEGARAID_SCSI_320_2, - }, - { - PCI_VENDOR_ID_LSI_LOGIC, - PCI_DEVICE_ID_MEGARAID_I4_133_RAID, - PCI_VENDOR_ID_LSI_LOGIC, - PCI_SUBSYS_ID_MEGARAID_I4_133_RAID, - }, - { - PCI_VENDOR_ID_LSI_LOGIC, - PCI_DEVICE_ID_MEGARAID_SATA_150_4, - PCI_VENDOR_ID_LSI_LOGIC, - PCI_SUBSYS_ID_MEGARAID_SATA_150_4, + PCI_ANY_ID, + PCI_ANY_ID, }, { PCI_VENDOR_ID_LSI_LOGIC, - PCI_DEVICE_ID_MEGARAID_SATA_150_6, - PCI_VENDOR_ID_LSI_LOGIC, - PCI_SUBSYS_ID_MEGARAID_SATA_150_6, + PCI_DEVICE_ID_AMI_MEGARAID3, + PCI_ANY_ID, + PCI_ANY_ID, }, { PCI_VENDOR_ID_LSI_LOGIC, @@ -347,18 +294,6 @@ PCI_ANY_ID, PCI_ANY_ID, }, - { - PCI_VENDOR_ID_LSI_LOGIC, - PCI_DEVICE_ID_INTEL_RAID_SRCS16, - PCI_VENDOR_ID_INTEL, - PCI_SUBSYS_ID_INTEL_RAID_SRCS16, - }, - { - PCI_VENDOR_ID_LSI_LOGIC, - PCI_DEVICE_ID_INTEL_RAID_SRCU41L_LAKE_SHETEK, - PCI_VENDOR_ID_INTEL, - PCI_SUBSYS_ID_INTEL_RAID_SRCU41L_LAKE_SHETEK, - }, {0} /* Terminating entry */ }; MODULE_DEVICE_TABLE(pci, pci_id_table_g); @@ -779,7 +714,7 @@ * . Allocate memory required for all the commands * . Use internal library of FW routines, build up complete soft state */ -static int __init +static int __devinit megaraid_init_mbox(adapter_t *adapter) { struct pci_dev *pdev; @@ -1331,7 +1266,7 @@ * return the scb from the head of the free list. NULL if there are none * available **/ -static inline scb_t * +static scb_t * megaraid_alloc_scb(adapter_t *adapter, struct scsi_cmnd *scp) { struct list_head *head = &adapter->kscb_pool; @@ -1394,7 +1329,7 @@ * * prepare the scatter-gather list */ -static inline int +static int megaraid_mbox_mksgl(adapter_t *adapter, scb_t *scb) { struct scatterlist *sgl; @@ -1467,7 +1402,7 @@ * * post the command to the controller if mailbox is availble. */ -static inline int +static int mbox_post_cmd(adapter_t *adapter, scb_t *scb) { mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); @@ -2135,7 +2070,7 @@ * * Returns: 1 if the interrupt is valid, 0 otherwise */ -static inline int +static int megaraid_ack_sequence(adapter_t *adapter) { mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); @@ -2273,7 +2208,7 @@ * * DMA sync if required. */ -static inline void +static void megaraid_mbox_sync_scb(adapter_t *adapter, scb_t *scb) { mbox_ccb_t *ccb; @@ -2343,6 +2278,7 @@ unsigned long flags; uint8_t c; int status; + uioc_t *kioc; if (!adapter) return; @@ -2385,6 +2321,9 @@ // remove from local clist list_del_init(&scb->list); + kioc = (uioc_t *)scb->gp; + kioc->status = 0; + megaraid_mbox_mm_done(adapter, scb); continue; @@ -2701,6 +2640,7 @@ int recovery_window; int recovering; int i; + uioc_t *kioc; adapter = SCP2ADAPTER(scp); raid_dev = ADAP2RAIDDEV(adapter); @@ -2720,32 +2660,51 @@ // Also, reset all the commands currently owned by the driver spin_lock_irqsave(PENDING_LIST_LOCK(adapter), flags); list_for_each_entry_safe(scb, tmp, &adapter->pend_list, list) { - list_del_init(&scb->list); // from pending list - con_log(CL_ANN, (KERN_WARNING - "megaraid: %ld:%d[%d:%d], reset from pending list\n", - scp->serial_number, scb->sno, - scb->dev_channel, scb->dev_target)); + if (scb->sno >= MBOX_MAX_SCSI_CMDS) { + con_log(CL_ANN, (KERN_WARNING + "megaraid: IOCTL packet with %d[%d:%d] being reset\n", + scb->sno, scb->dev_channel, scb->dev_target)); - scp->result = (DID_RESET << 16); - scp->scsi_done(scp); + scb->status = -1; - megaraid_dealloc_scb(adapter, scb); + kioc = (uioc_t *)scb->gp; + kioc->status = -EFAULT; + + megaraid_mbox_mm_done(adapter, scb); + } else { + if (scb->scp == scp) { // Found command + con_log(CL_ANN, (KERN_WARNING + "megaraid: %ld:%d[%d:%d], reset from pending list\n", + scp->serial_number, scb->sno, + scb->dev_channel, scb->dev_target)); + } else { + con_log(CL_ANN, (KERN_WARNING + "megaraid: IO packet with %d[%d:%d] being reset\n", + scb->sno, scb->dev_channel, scb->dev_target)); + } + + scb->scp->result = (DID_RESET << 16); + scb->scp->scsi_done(scb->scp); + + megaraid_dealloc_scb(adapter, scb); + } } spin_unlock_irqrestore(PENDING_LIST_LOCK(adapter), flags); if (adapter->outstanding_cmds) { con_log(CL_ANN, (KERN_NOTICE "megaraid: %d outstanding commands. Max wait %d sec\n", - adapter->outstanding_cmds, MBOX_RESET_WAIT)); + adapter->outstanding_cmds, + (MBOX_RESET_WAIT + MBOX_RESET_EXT_WAIT))); } recovery_window = MBOX_RESET_WAIT + MBOX_RESET_EXT_WAIT; recovering = adapter->outstanding_cmds; - for (i = 0; i < recovery_window && adapter->outstanding_cmds; i++) { + for (i = 0; i < recovery_window; i++) { megaraid_ack_sequence(adapter); @@ -2754,12 +2713,11 @@ con_log(CL_ANN, ( "megaraid mbox: Wait for %d commands to complete:%d\n", adapter->outstanding_cmds, - MBOX_RESET_WAIT - i)); + (MBOX_RESET_WAIT + MBOX_RESET_EXT_WAIT) - i)); } // bailout if no recovery happended in reset time - if ((i == MBOX_RESET_WAIT) && - (recovering == adapter->outstanding_cmds)) { + if (adapter->outstanding_cmds == 0) { break; } @@ -2862,7 +2820,7 @@ // available within 1 second, assume FW is initializing and wait // for an extended amount of time if (mbox->numstatus == 0xFF) { // status not yet available - udelay(25);; + udelay(25); for (i = 0; mbox->numstatus == 0xFF && i < 1000; i++) { rmb(); @@ -2983,11 +2941,13 @@ wmb(); WRINDOOR(raid_dev, raid_dev->mbox_dma | 0x1); - for (i = 0; i < 0xFFFFF; i++) { + for (i = 0; i < MBOX_SYNC_WAIT_CNT; i++) { if (mbox->numstatus != 0xFF) break; + rmb(); + udelay(MBOX_SYNC_DELAY_200); } - if (i == 0xFFFFF) { + if (i == MBOX_SYNC_WAIT_CNT) { // We may need to re-calibrate the counter con_log(CL_ANN, (KERN_CRIT "megaraid: fast sync command timed out\n")); @@ -3539,7 +3499,7 @@ adp.drvr_data = (unsigned long)adapter; adp.pdev = adapter->pdev; adp.issue_uioc = megaraid_mbox_mm_handler; - adp.timeout = 300; + adp.timeout = MBOX_RESET_WAIT + MBOX_RESET_EXT_WAIT; adp.max_kioc = MBOX_MAX_USER_CMDS; if ((rval = mraid_mm_register_adp(&adp)) != 0) { @@ -3766,7 +3726,6 @@ unsigned long flags; kioc = (uioc_t *)scb->gp; - kioc->status = 0; mbox64 = (mbox64_t *)(unsigned long)kioc->cmdbuf; mbox64->mbox32.status = scb->status; raw_mbox = (uint8_t *)&mbox64->mbox32; --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/megaraid/megaraid_mm.c +++ linux-source-2.6.15-2.6.15/drivers/scsi/megaraid/megaraid_mm.c @@ -898,10 +898,8 @@ adapter = kmalloc(sizeof(mraid_mmadp_t), GFP_KERNEL); - if (!adapter) { - rval = -ENOMEM; - goto memalloc_error; - } + if (!adapter) + return -ENOMEM; memset(adapter, 0, sizeof(mraid_mmadp_t)); --- linux-source-2.6.15-2.6.15.orig/drivers/scsi/aacraid/linit.c +++ linux-source-2.6.15-2.6.15/drivers/scsi/aacraid/linit.c @@ -512,6 +512,8 @@ static int aac_cfg_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) { + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; return aac_do_ioctl(file->private_data, cmd, (void __user *)arg); } @@ -565,6 +567,8 @@ static long aac_compat_cfg_ioctl(struct file *file, unsigned cmd, unsigned long arg) { + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; return aac_compat_do_ioctl((struct aac_dev *)file->private_data, cmd, arg); } #endif --- linux-source-2.6.15-2.6.15.orig/drivers/net/slip.c +++ linux-source-2.6.15-2.6.15/drivers/net/slip.c @@ -464,9 +464,14 @@ /* 20 sec timeout not reached */ goto out; } - printk(KERN_WARNING "%s: transmit timed out, %s?\n", dev->name, - (sl->tty->driver->chars_in_buffer(sl->tty) || sl->xleft) ? - "bad line quality" : "driver error"); + { + int cib = 0; + if (sl->tty->driver->chars_in_buffer) + cib = sl->tty->driver->chars_in_buffer(sl->tty); + printk(KERN_WARNING "%s: transmit timed out, %s?\n", + dev->name, (cib || sl->xleft) ? + "bad line quality" : "driver error"); + } sl->xleft = 0; sl->tty->flags &= ~(1 << TTY_DO_WRITE_WAKEUP); sl_unlock(sl); @@ -842,7 +847,9 @@ if(!capable(CAP_NET_ADMIN)) return -EPERM; - + if (!tty->driver->write) + return -EOPNOTSUPP; + /* RTnetlink lock is misused here to serialize concurrent opens of slip channels. There are better ways, but it is the simplest one. --- linux-source-2.6.15-2.6.15.orig/drivers/net/sky2.c +++ linux-source-2.6.15-2.6.15/drivers/net/sky2.c @@ -51,7 +51,7 @@ #include "sky2.h" #define DRV_NAME "sky2" -#define DRV_VERSION "0.15" +#define DRV_VERSION "1.4" #define PFX DRV_NAME " " /* @@ -61,10 +61,6 @@ * a receive requires one (or two if using 64 bit dma). */ -#define is_ec_a1(hw) \ - unlikely((hw)->chip_id == CHIP_ID_YUKON_EC && \ - (hw)->chip_rev == CHIP_REV_YU_EC_A1) - #define RX_LE_SIZE 512 #define RX_LE_BYTES (RX_LE_SIZE*sizeof(struct sky2_rx_le)) #define RX_MAX_PENDING (RX_LE_SIZE/2 - 2) @@ -83,6 +79,8 @@ #define NAPI_WEIGHT 64 #define PHY_RETRIES 1000 +#define RING_NEXT(x,s) (((x)+1) & ((s)-1)) + static const u32 default_msg = NETIF_MSG_DRV | NETIF_MSG_PROBE | NETIF_MSG_LINK | NETIF_MSG_TIMER | NETIF_MSG_TX_ERR | NETIF_MSG_RX_ERR @@ -96,11 +94,21 @@ module_param(copybreak, int, 0); MODULE_PARM_DESC(copybreak, "Receive copy threshold"); +static int disable_msi = 0; +module_param(disable_msi, int, 0); +MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)"); + +static int idle_timeout = 100; +module_param(idle_timeout, int, 0); +MODULE_PARM_DESC(idle_timeout, "Idle timeout workaround for lost interrupts (ms)"); + static const struct pci_device_id sky2_id_table[] = { +#ifndef CONFIG_SK98LIN { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9000) }, +#endif { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9E00) }, - { PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4b00) }, - { PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4b01) }, +#ifndef CONFIG_SK98LIN + { PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4b00) }, /* DGE-560T */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4340) }, { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4341) }, { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4342) }, @@ -111,10 +119,13 @@ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4347) }, { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4350) }, { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4351) }, +#endif { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4352) }, +#ifndef CONFIG_SK98LIN { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4360) }, { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4361) }, { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4362) }, +#endif { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4363) }, { 0 } }; @@ -182,12 +193,11 @@ return v; } -static int sky2_set_power_state(struct sky2_hw *hw, pci_power_t state) +static void sky2_set_power_state(struct sky2_hw *hw, pci_power_t state) { u16 power_control; u32 reg1; int vaux; - int ret = 0; pr_debug("sky2_set_power_state %d\n", state); sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON); @@ -231,6 +241,7 @@ } if (hw->chip_id == CHIP_ID_YUKON_EC_U) { + sky2_write16(hw, B0_CTST, Y2_HW_WOL_ON); sky2_pci_write32(hw, PCI_DEV_REG3, 0); reg1 = sky2_pci_read32(hw, PCI_DEV_REG4); reg1 &= P_ASPM_CONTROL_MSK; @@ -269,12 +280,10 @@ break; default: printk(KERN_ERR PFX "Unknown power state %d\n", state); - ret = -1; } sky2_pci_write16(hw, hw->pm_cap + PCI_PM_CTRL, power_control); sky2_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF); - return ret; } static void sky2_phy_reset(struct sky2_hw *hw, unsigned port) @@ -301,7 +310,8 @@ struct sky2_port *sky2 = netdev_priv(hw->dev[port]); u16 ctrl, ct1000, adv, pg, ledctrl, ledover; - if (sky2->autoneg == AUTONEG_ENABLE && hw->chip_id != CHIP_ID_YUKON_XL) { + if (sky2->autoneg == AUTONEG_ENABLE && + !(hw->chip_id == CHIP_ID_YUKON_XL || hw->chip_id == CHIP_ID_YUKON_EC_U)) { u16 ectrl = gm_phy_read(hw, port, PHY_MARV_EXT_CTRL); ectrl &= ~(PHY_M_EC_M_DSC_MSK | PHY_M_EC_S_DSC_MSK | @@ -329,7 +339,7 @@ ctrl |= PHY_M_PC_MDI_XMODE(PHY_M_PC_ENA_AUTO); if (sky2->autoneg == AUTONEG_ENABLE && - hw->chip_id == CHIP_ID_YUKON_XL) { + (hw->chip_id == CHIP_ID_YUKON_XL || hw->chip_id == CHIP_ID_YUKON_EC_U)) { ctrl &= ~PHY_M_PC_DSC_MSK; ctrl |= PHY_M_PC_DSC(2) | PHY_M_PC_DOWN_S_ENA; } @@ -445,10 +455,11 @@ gm_phy_write(hw, port, PHY_MARV_EXT_ADR, 3); /* set LED Function Control register */ - gm_phy_write(hw, port, PHY_MARV_PHY_CTRL, (PHY_M_LEDC_LOS_CTRL(1) | /* LINK/ACT */ - PHY_M_LEDC_INIT_CTRL(7) | /* 10 Mbps */ - PHY_M_LEDC_STA1_CTRL(7) | /* 100 Mbps */ - PHY_M_LEDC_STA0_CTRL(7))); /* 1000 Mbps */ + gm_phy_write(hw, port, PHY_MARV_PHY_CTRL, + (PHY_M_LEDC_LOS_CTRL(1) | /* LINK/ACT */ + PHY_M_LEDC_INIT_CTRL(7) | /* 10 Mbps */ + PHY_M_LEDC_STA1_CTRL(7) | /* 100 Mbps */ + PHY_M_LEDC_STA0_CTRL(7))); /* 1000 Mbps */ /* set Polarity Control register */ gm_phy_write(hw, port, PHY_MARV_PHY_STAT, @@ -462,6 +473,25 @@ /* restore page register */ gm_phy_write(hw, port, PHY_MARV_EXT_ADR, pg); break; + case CHIP_ID_YUKON_EC_U: + pg = gm_phy_read(hw, port, PHY_MARV_EXT_ADR); + + /* select page 3 to access LED control register */ + gm_phy_write(hw, port, PHY_MARV_EXT_ADR, 3); + + /* set LED Function Control register */ + gm_phy_write(hw, port, PHY_MARV_PHY_CTRL, + (PHY_M_LEDC_LOS_CTRL(1) | /* LINK/ACT */ + PHY_M_LEDC_INIT_CTRL(8) | /* 10 Mbps */ + PHY_M_LEDC_STA1_CTRL(7) | /* 100 Mbps */ + PHY_M_LEDC_STA0_CTRL(7)));/* 1000 Mbps */ + + /* set Blink Rate in LED Timer Control Register */ + gm_phy_write(hw, port, PHY_MARV_INT_MASK, + ledctrl | PHY_M_LED_BLINK_RT(BLINK_84MS)); + /* restore page register */ + gm_phy_write(hw, port, PHY_MARV_EXT_ADR, pg); + break; default: /* set Tx LED (LED_TX) to blink mode on Rx OR Tx activity */ @@ -470,19 +500,21 @@ ledover |= PHY_M_LED_MO_RX(MO_LED_OFF); } - if (hw->chip_id == CHIP_ID_YUKON_EC_U && hw->chip_rev >= 2) { + if (hw->chip_id == CHIP_ID_YUKON_EC_U && hw->chip_rev == CHIP_REV_YU_EC_A1) { /* apply fixes in PHY AFE */ - gm_phy_write(hw, port, 22, 255); + pg = gm_phy_read(hw, port, PHY_MARV_EXT_ADR); + gm_phy_write(hw, port, PHY_MARV_EXT_ADR, 255); + /* increase differential signal amplitude in 10BASE-T */ - gm_phy_write(hw, port, 24, 0xaa99); - gm_phy_write(hw, port, 23, 0x2011); + gm_phy_write(hw, port, 0x18, 0xaa99); + gm_phy_write(hw, port, 0x17, 0x2011); /* fix for IEEE A/B Symmetry failure in 1000BASE-T */ - gm_phy_write(hw, port, 24, 0xa204); - gm_phy_write(hw, port, 23, 0x2002); + gm_phy_write(hw, port, 0x18, 0xa204); + gm_phy_write(hw, port, 0x17, 0x2002); /* set page register to 0 */ - gm_phy_write(hw, port, 22, 0); + gm_phy_write(hw, port, PHY_MARV_EXT_ADR, pg); } else { gm_phy_write(hw, port, PHY_MARV_LED_CTRL, ledctrl); @@ -505,9 +537,9 @@ /* Force a renegotiation */ static void sky2_phy_reinit(struct sky2_port *sky2) { - down(&sky2->phy_sema); + spin_lock_bh(&sky2->phy_lock); sky2_phy_init(sky2->hw, sky2->port); - up(&sky2->phy_sema); + spin_unlock_bh(&sky2->phy_lock); } static void sky2_mac_init(struct sky2_hw *hw, unsigned port) @@ -556,6 +588,11 @@ if (sky2->duplex == DUPLEX_FULL) reg |= GM_GPCR_DUP_FULL; + + /* turn off pause in 10/100mbps half duplex */ + else if (sky2->speed != SPEED_1000 && + hw->chip_id != CHIP_ID_YUKON_EC_U) + sky2->tx_pause = sky2->rx_pause = 0; } else reg = GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100 | GM_GPCR_DUP_FULL; @@ -572,9 +609,9 @@ sky2_read16(hw, SK_REG(port, GMAC_IRQ_SRC)); - down(&sky2->phy_sema); + spin_lock_bh(&sky2->phy_lock); sky2_phy_init(hw, port); - up(&sky2->phy_sema); + spin_unlock_bh(&sky2->phy_lock); /* MIB clear */ reg = gma_read16(hw, port, GM_PHY_ADDR); @@ -651,16 +688,10 @@ } -/* Assign Ram Buffer allocation. - * start and end are in units of 4k bytes - * ram registers are in units of 64bit words - */ -static void sky2_ramset(struct sky2_hw *hw, u16 q, u8 startk, u8 endk) +/* Assign Ram Buffer allocation in units of 64bit (8 bytes) */ +static void sky2_ramset(struct sky2_hw *hw, u16 q, u32 start, u32 end) { - u32 start, end; - - start = startk * 4096/8; - end = (endk * 4096/8) - 1; + pr_debug(PFX "q %d %#x %#x\n", q, start, end); sky2_write8(hw, RB_ADDR(q, RB_CTRL), RB_RST_CLR); sky2_write32(hw, RB_ADDR(q, RB_START), start); @@ -669,7 +700,7 @@ sky2_write32(hw, RB_ADDR(q, RB_RP), start); if (q == Q_R1 || q == Q_R2) { - u32 space = (endk - startk) * 4096/8; + u32 space = end - start + 1; u32 tp = space - space/4; /* On receive queue's set the thresholds @@ -722,41 +753,15 @@ { struct sky2_tx_le *le = sky2->tx_le + sky2->tx_prod; - sky2->tx_prod = (sky2->tx_prod + 1) % TX_RING_SIZE; + sky2->tx_prod = RING_NEXT(sky2->tx_prod, TX_RING_SIZE); return le; } -/* - * This is a workaround code taken from SysKonnect sk98lin driver - * to deal with chip bug on Yukon EC rev 0 in the wraparound case. - */ -static void sky2_put_idx(struct sky2_hw *hw, unsigned q, - u16 idx, u16 *last, u16 size) +/* Update chip's next pointer */ +static inline void sky2_put_idx(struct sky2_hw *hw, unsigned q, u16 idx) { wmb(); - if (is_ec_a1(hw) && idx < *last) { - u16 hwget = sky2_read16(hw, Y2_QADDR(q, PREF_UNIT_GET_IDX)); - - if (hwget == 0) { - /* Start prefetching again */ - sky2_write8(hw, Y2_QADDR(q, PREF_UNIT_FIFO_WM), 0xe0); - goto setnew; - } - - if (hwget == size - 1) { - /* set watermark to one list element */ - sky2_write8(hw, Y2_QADDR(q, PREF_UNIT_FIFO_WM), 8); - - /* set put index to first list element */ - sky2_write16(hw, Y2_QADDR(q, PREF_UNIT_PUT_IDX), 0); - } else /* have hardware go to end of list */ - sky2_write16(hw, Y2_QADDR(q, PREF_UNIT_PUT_IDX), - size - 1); - } else { -setnew: - sky2_write16(hw, Y2_QADDR(q, PREF_UNIT_PUT_IDX), idx); - } - *last = idx; + sky2_write16(hw, Y2_QADDR(q, PREF_UNIT_PUT_IDX), idx); mmiowb(); } @@ -764,7 +769,7 @@ static inline struct sky2_rx_le *sky2_next_rx(struct sky2_port *sky2) { struct sky2_rx_le *le = sky2->rx_le + sky2->rx_put; - sky2->rx_put = (sky2->rx_put + 1) % RX_LE_SIZE; + sky2->rx_put = RING_NEXT(sky2->rx_put, RX_LE_SIZE); return le; } @@ -879,7 +884,7 @@ if (!netif_running(dev)) return -ENODEV; /* Phy still in reset */ - switch(cmd) { + switch (cmd) { case SIOCGMIIPHY: data->phy_id = PHY_ADDR_MARV; @@ -887,9 +892,9 @@ case SIOCGMIIREG: { u16 val = 0; - down(&sky2->phy_sema); + spin_lock_bh(&sky2->phy_lock); err = __gm_phy_read(hw, sky2->port, data->reg_num & 0x1f, &val); - up(&sky2->phy_sema); + spin_unlock_bh(&sky2->phy_lock); data->val_out = val; break; @@ -899,10 +904,10 @@ if (!capable(CAP_NET_ADMIN)) return -EPERM; - down(&sky2->phy_sema); + spin_lock_bh(&sky2->phy_lock); err = gm_phy_write(hw, sky2->port, data->reg_num & 0x1f, data->val_in); - up(&sky2->phy_sema); + spin_unlock_bh(&sky2->phy_lock); break; } return err; @@ -954,8 +959,7 @@ skb = alloc_skb(size + RX_SKB_ALIGN, gfp_mask); if (likely(skb)) { unsigned long p = (unsigned long) skb->data; - skb_reserve(skb, - ((p + RX_SKB_ALIGN - 1) & ~(RX_SKB_ALIGN - 1)) - p); + skb_reserve(skb, ALIGN(p, RX_SKB_ALIGN) - p); } return skb; @@ -972,6 +976,7 @@ struct sky2_hw *hw = sky2->hw; unsigned rxq = rxqaddr[sky2->port]; int i; + unsigned thresh; sky2->rx_put = sky2->rx_next = 0; sky2_qset(hw, rxq); @@ -996,13 +1001,24 @@ sky2_rx_add(sky2, re->mapaddr); } - /* Truncate oversize frames */ - sky2_write16(hw, SK_REG(sky2->port, RX_GMF_TR_THR), sky2->rx_bufsize - 8); - sky2_write32(hw, SK_REG(sky2->port, RX_GMF_CTRL_T), RX_TRUNC_ON); + + /* + * The receiver hangs if it receives frames larger than the + * packet buffer. As a workaround, truncate oversize frames, but + * the register is limited to 9 bits, so if you do frames > 2052 + * you better get the MTU right! + */ + thresh = (sky2->rx_bufsize - 8) / sizeof(u32); + if (thresh > 0x1ff) + sky2_write32(hw, SK_REG(sky2->port, RX_GMF_CTRL_T), RX_TRUNC_OFF); + else { + sky2_write16(hw, SK_REG(sky2->port, RX_GMF_TR_THR), thresh); + sky2_write32(hw, SK_REG(sky2->port, RX_GMF_CTRL_T), RX_TRUNC_ON); + } + /* Tell chip about available buffers */ sky2_write16(hw, Y2_QADDR(rxq, PREF_UNIT_PUT_IDX), sky2->rx_put); - sky2->rx_last_put = sky2_read16(hw, Y2_QADDR(rxq, PREF_UNIT_PUT_IDX)); return 0; nomem: sky2_rx_clean(sky2); @@ -1015,8 +1031,26 @@ struct sky2_port *sky2 = netdev_priv(dev); struct sky2_hw *hw = sky2->hw; unsigned port = sky2->port; - u32 ramsize, rxspace; - int err = -ENOMEM; + u32 ramsize, rxspace, imask; + int cap, err = -ENOMEM; + struct net_device *otherdev = hw->dev[sky2->port^1]; + + /* + * On dual port PCI-X card, there is an problem where status + * can be received out of order due to split transactions + */ + if (otherdev && netif_running(otherdev) && + (cap = pci_find_capability(hw->pdev, PCI_CAP_ID_PCIX))) { + struct sky2_port *osky2 = netdev_priv(otherdev); + u16 cmd; + + cmd = sky2_pci_read16(hw, cap + PCI_X_CMD); + cmd &= ~PCI_X_CMD_MAX_SPLIT; + sky2_pci_write16(hw, cap + PCI_X_CMD, cmd); + + sky2->rx_csum = 0; + osky2->rx_csum = 0; + } if (netif_msg_ifup(sky2)) printk(KERN_INFO PFX "%s: enabling interface\n", dev->name); @@ -1048,19 +1082,16 @@ sky2_mac_init(hw, port); - /* Determine available ram buffer space (in 4K blocks). - * Note: not sure about the FE setting below yet - */ - if (hw->chip_id == CHIP_ID_YUKON_FE) - ramsize = 4; - else - ramsize = sky2_read8(hw, B2_E_0); + /* Determine available ram buffer space in qwords. */ + ramsize = sky2_read8(hw, B2_E_0) * 4096/8; - /* Give transmitter one third (rounded up) */ - rxspace = ramsize - (ramsize + 2) / 3; + if (ramsize > 6*1024/8) + rxspace = ramsize - (ramsize + 2) / 3; + else + rxspace = ramsize / 2; - sky2_ramset(hw, rxqaddr[port], 0, rxspace); - sky2_ramset(hw, txqaddr[port], rxspace, ramsize); + sky2_ramset(hw, rxqaddr[port], 0, rxspace-1); + sky2_ramset(hw, txqaddr[port], rxspace, ramsize-1); /* Make sure SyncQ is disabled */ sky2_write8(hw, RB_ADDR(port == 0 ? Q_XS1 : Q_XS2, RB_CTRL), @@ -1080,10 +1111,10 @@ goto err_out; /* Enable interrupts from phy/mac for port */ - spin_lock_irq(&hw->hw_lock); - hw->intr_mask |= portirq_msk[port]; - sky2_write32(hw, B0_IMSK, hw->intr_mask); - spin_unlock_irq(&hw->hw_lock); + imask = sky2_read32(hw, B0_IMSK); + imask |= portirq_msk[port]; + sky2_write32(hw, B0_IMSK, imask); + return 0; err_out: @@ -1109,7 +1140,7 @@ /* Modular subtraction in ring */ static inline int tx_dist(unsigned tail, unsigned head) { - return (head - tail) % TX_RING_SIZE; + return (head - tail) & (TX_RING_SIZE - 1); } /* Number of list elements available for next tx */ @@ -1203,7 +1234,7 @@ /* just drop the packet if non-linear expansion fails */ if (skb_header_cloned(skb) && pskb_expand_head(skb, 0, 0, GFP_ATOMIC)) { - dev_kfree_skb_any(skb); + dev_kfree_skb(skb); goto out_unlock; } @@ -1286,7 +1317,7 @@ le->opcode = OP_BUFFER | HW_OWNER; fre = sky2->tx_ring - + ((re - sky2->tx_ring) + i + 1) % TX_RING_SIZE; + + RING_NEXT((re - sky2->tx_ring) + i, TX_RING_SIZE); pci_unmap_addr_set(fre, mapaddr, mapping); } @@ -1300,8 +1331,7 @@ netif_stop_queue(dev); } - sky2_put_idx(hw, txqaddr[sky2->port], sky2->tx_prod, - &sky2->tx_last_put, TX_RING_SIZE); + sky2_put_idx(hw, txqaddr[sky2->port], sky2->tx_prod); out_unlock: spin_unlock(&sky2->tx_lock); @@ -1333,7 +1363,7 @@ struct tx_ring_info *re = sky2->tx_ring + put; struct sk_buff *skb = re->skb; - nxt = re->idx; + nxt = re->idx; BUG_ON(nxt >= TX_RING_SIZE); prefetch(sky2->tx_ring + nxt); @@ -1347,17 +1377,17 @@ for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { struct tx_ring_info *fre; - fre = sky2->tx_ring + (put + i + 1) % TX_RING_SIZE; + fre = sky2->tx_ring + RING_NEXT(put + i, TX_RING_SIZE); pci_unmap_page(pdev, pci_unmap_addr(fre, mapaddr), - skb_shinfo(skb)->frags[i].size, + skb_shinfo(skb)->frags[i].size, PCI_DMA_TODEVICE); } - dev_kfree_skb_any(skb); + dev_kfree_skb(skb); } sky2->tx_cons = put; - if (netif_queue_stopped(dev) && tx_avail(sky2) > MAX_SKB_TX_LE) + if (tx_avail(sky2) > MAX_SKB_TX_LE) netif_wake_queue(dev); } @@ -1376,6 +1406,7 @@ struct sky2_hw *hw = sky2->hw; unsigned port = sky2->port; u16 ctrl; + u32 imask; /* Never really got started! */ if (!sky2->tx_le) @@ -1387,14 +1418,6 @@ /* Stop more packets from being queued */ netif_stop_queue(dev); - /* Disable port IRQ */ - spin_lock_irq(&hw->hw_lock); - hw->intr_mask &= ~portirq_msk[port]; - sky2_write32(hw, B0_IMSK, hw->intr_mask); - spin_unlock_irq(&hw->hw_lock); - - flush_scheduled_work(); - sky2_phy_reset(hw, port); /* Stop transmitter */ @@ -1438,6 +1461,11 @@ sky2_write8(hw, SK_REG(port, RX_GMF_CTRL_T), GMF_RST_SET); sky2_write8(hw, SK_REG(port, TX_GMF_CTRL_T), GMF_RST_SET); + /* Disable port IRQ */ + imask = sky2_read32(hw, B0_IMSK); + imask &= ~portirq_msk[port]; + sky2_write32(hw, B0_IMSK, imask); + /* turn off LED's */ sky2_write16(hw, B0_Y2LED, LED_STAT_OFF); @@ -1532,17 +1560,26 @@ sky2_write8(hw, SK_REG(port, LNK_LED_REG), LINKLED_ON | LINKLED_BLINK_OFF | LINKLED_LINKSYNC_OFF); - if (hw->chip_id == CHIP_ID_YUKON_XL) { + if (hw->chip_id == CHIP_ID_YUKON_XL || hw->chip_id == CHIP_ID_YUKON_EC_U) { u16 pg = gm_phy_read(hw, port, PHY_MARV_EXT_ADR); + u16 led = PHY_M_LEDC_LOS_CTRL(1); /* link active */ + + switch(sky2->speed) { + case SPEED_10: + led |= PHY_M_LEDC_INIT_CTRL(7); + break; + + case SPEED_100: + led |= PHY_M_LEDC_STA1_CTRL(7); + break; + + case SPEED_1000: + led |= PHY_M_LEDC_STA0_CTRL(7); + break; + } gm_phy_write(hw, port, PHY_MARV_EXT_ADR, 3); - gm_phy_write(hw, port, PHY_MARV_PHY_CTRL, PHY_M_LEDC_LOS_CTRL(1) | /* LINK/ACT */ - PHY_M_LEDC_INIT_CTRL(sky2->speed == - SPEED_10 ? 7 : 0) | - PHY_M_LEDC_STA1_CTRL(sky2->speed == - SPEED_100 ? 7 : 0) | - PHY_M_LEDC_STA0_CTRL(sky2->speed == - SPEED_1000 ? 7 : 0)); + gm_phy_write(hw, port, PHY_MARV_PHY_CTRL, led); gm_phy_write(hw, port, PHY_MARV_EXT_ADR, pg); } @@ -1617,7 +1654,7 @@ sky2->speed = sky2_phy_speed(hw, aux); /* Pause bits are offset (9..8) */ - if (hw->chip_id == CHIP_ID_YUKON_XL) + if (hw->chip_id == CHIP_ID_YUKON_XL || hw->chip_id == CHIP_ID_YUKON_EC_U) aux >>= 6; sky2->rx_pause = (aux & PHY_M_PS_RX_P_EN) != 0; @@ -1632,20 +1669,19 @@ return 0; } -/* - * Interrupt from PHY are handled outside of interrupt context - * because accessing phy registers requires spin wait which might - * cause excess interrupt latency. - */ -static void sky2_phy_task(void *arg) +/* Interrupt from PHY */ +static void sky2_phy_intr(struct sky2_hw *hw, unsigned port) { - struct sky2_port *sky2 = arg; - struct sky2_hw *hw = sky2->hw; + struct net_device *dev = hw->dev[port]; + struct sky2_port *sky2 = netdev_priv(dev); u16 istatus, phystat; - down(&sky2->phy_sema); - istatus = gm_phy_read(hw, sky2->port, PHY_MARV_INT_STAT); - phystat = gm_phy_read(hw, sky2->port, PHY_MARV_PHY_STAT); + spin_lock(&sky2->phy_lock); + istatus = gm_phy_read(hw, port, PHY_MARV_INT_STAT); + phystat = gm_phy_read(hw, port, PHY_MARV_PHY_STAT); + + if (!netif_running(dev)) + goto out; if (netif_msg_intr(sky2)) printk(KERN_INFO PFX "%s: phy interrupt status 0x%x 0x%x\n", @@ -1671,12 +1707,7 @@ sky2_link_down(sky2); } out: - up(&sky2->phy_sema); - - spin_lock_irq(&hw->hw_lock); - hw->intr_mask |= (sky2->port == 0) ? Y2_IS_IRQ_PHY1 : Y2_IS_IRQ_PHY2; - sky2_write32(hw, B0_IMSK, hw->intr_mask); - spin_unlock_irq(&hw->hw_lock); + spin_unlock(&sky2->phy_lock); } @@ -1688,41 +1719,49 @@ struct sky2_port *sky2 = netdev_priv(dev); struct sky2_hw *hw = sky2->hw; unsigned txq = txqaddr[sky2->port]; - u16 ridx; - - /* Maybe we just missed an status interrupt */ - spin_lock(&sky2->tx_lock); - ridx = sky2_read16(hw, - sky2->port == 0 ? STAT_TXA1_RIDX : STAT_TXA2_RIDX); - sky2_tx_complete(sky2, ridx); - spin_unlock(&sky2->tx_lock); - - if (!netif_queue_stopped(dev)) { - if (net_ratelimit()) - pr_info(PFX "transmit interrupt missed? recovered\n"); - return; - } + u16 report, done; if (netif_msg_timer(sky2)) printk(KERN_ERR PFX "%s: tx timeout\n", dev->name); - sky2_write32(hw, Q_ADDR(txq, Q_CSR), BMU_STOP); - sky2_write32(hw, Y2_QADDR(txq, PREF_UNIT_CTRL), PREF_UNIT_RST_SET); + report = sky2_read16(hw, sky2->port == 0 ? STAT_TXA1_RIDX : STAT_TXA2_RIDX); + done = sky2_read16(hw, Q_ADDR(txq, Q_DONE)); - sky2_tx_clean(sky2); + printk(KERN_DEBUG PFX "%s: transmit ring %u .. %u report=%u done=%u\n", + dev->name, + sky2->tx_cons, sky2->tx_prod, report, done); + + if (report != done) { + printk(KERN_INFO PFX "status burst pending (irq moderation?)\n"); + + sky2_write8(hw, STAT_TX_TIMER_CTRL, TIM_STOP); + sky2_write8(hw, STAT_TX_TIMER_CTRL, TIM_START); + } else if (report != sky2->tx_cons) { + printk(KERN_INFO PFX "status report lost?\n"); + + spin_lock_bh(&sky2->tx_lock); + sky2_tx_complete(sky2, report); + spin_unlock_bh(&sky2->tx_lock); + } else { + printk(KERN_INFO PFX "hardware hung? flushing\n"); + + sky2_write32(hw, Q_ADDR(txq, Q_CSR), BMU_STOP); + sky2_write32(hw, Y2_QADDR(txq, PREF_UNIT_CTRL), PREF_UNIT_RST_SET); - sky2_qset(hw, txq); - sky2_prefetch_init(hw, txq, sky2->tx_le_map, TX_RING_SIZE - 1); + sky2_tx_clean(sky2); + + sky2_qset(hw, txq); + sky2_prefetch_init(hw, txq, sky2->tx_le_map, TX_RING_SIZE - 1); + } } -#define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) /* Want receive buffer size to be multiple of 64 bits * and incl room for vlan and truncation */ static inline unsigned sky2_buf_size(int mtu) { - return roundup(mtu + ETH_HLEN + VLAN_HLEN, 8) + 8; + return ALIGN(mtu + ETH_HLEN + VLAN_HLEN, 8) + 8; } static int sky2_change_mtu(struct net_device *dev, int new_mtu) @@ -1731,6 +1770,7 @@ struct sky2_hw *hw = sky2->hw; int err; u16 ctl, mode; + u32 imask; if (new_mtu < ETH_ZLEN || new_mtu > ETH_JUMBO_MTU) return -EINVAL; @@ -1743,12 +1783,15 @@ return 0; } + imask = sky2_read32(hw, B0_IMSK); sky2_write32(hw, B0_IMSK, 0); dev->trans_start = jiffies; /* prevent tx timeout */ netif_stop_queue(dev); netif_poll_disable(hw->dev[0]); + synchronize_irq(hw->pdev->irq); + ctl = gma_read16(hw, sky2->port, GM_GP_CTRL); gma_write16(hw, sky2->port, GM_GP_CTRL, ctl & ~GM_GPCR_RX_ENA); sky2_rx_stop(sky2); @@ -1767,7 +1810,7 @@ sky2_write8(hw, RB_ADDR(rxqaddr[sky2->port], RB_CTRL), RB_ENA_OP_MD); err = sky2_rx_start(sky2); - sky2_write32(hw, B0_IMSK, hw->intr_mask); + sky2_write32(hw, B0_IMSK, imask); if (err) dev_close(dev); @@ -1844,8 +1887,7 @@ sky2_rx_add(sky2, re->mapaddr); /* Tell receiver about new buffers. */ - sky2_put_idx(sky2->hw, rxqaddr[sky2->port], sky2->rx_put, - &sky2->rx_last_put, RX_LE_SIZE); + sky2_put_idx(sky2->hw, rxqaddr[sky2->port], sky2->rx_put); return skb; @@ -1872,55 +1914,33 @@ goto resubmit; } -/* - * Check for transmit complete - */ -#define TX_NO_STATUS 0xffff - -static void sky2_tx_check(struct sky2_hw *hw, int port, u16 last) +/* Transmit complete */ +static inline void sky2_tx_done(struct net_device *dev, u16 last) { - if (last != TX_NO_STATUS) { - struct net_device *dev = hw->dev[port]; - if (dev && netif_running(dev)) { - struct sky2_port *sky2 = netdev_priv(dev); + struct sky2_port *sky2 = netdev_priv(dev); - spin_lock(&sky2->tx_lock); - sky2_tx_complete(sky2, last); - spin_unlock(&sky2->tx_lock); - } + if (netif_running(dev)) { + spin_lock(&sky2->tx_lock); + sky2_tx_complete(sky2, last); + spin_unlock(&sky2->tx_lock); } } -/* - * Both ports share the same status interrupt, therefore there is only - * one poll routine. - */ -static int sky2_poll(struct net_device *dev0, int *budget) +/* Is status ring empty or is there more to do? */ +static inline int sky2_more_work(const struct sky2_hw *hw) { - struct sky2_hw *hw = ((struct sky2_port *) netdev_priv(dev0))->hw; - unsigned int to_do = min(dev0->quota, *budget); - unsigned int work_done = 0; - u16 hwidx; - u16 tx_done[2] = { TX_NO_STATUS, TX_NO_STATUS }; - - sky2_write32(hw, STAT_CTRL, SC_STAT_CLR_IRQ); + return (hw->st_idx != sky2_read16(hw, STAT_PUT_IDX)); +} - /* - * Kick the STAT_LEV_TIMER_CTRL timer. - * This fixes my hangs on Yukon-EC (0xb6) rev 1. - * The if clause is there to start the timer only if it has been - * configured correctly and not been disabled via ethtool. - */ - if (sky2_read8(hw, STAT_LEV_TIMER_CTRL) == TIM_START) { - sky2_write8(hw, STAT_LEV_TIMER_CTRL, TIM_STOP); - sky2_write8(hw, STAT_LEV_TIMER_CTRL, TIM_START); - } +/* Process status response ring */ +static int sky2_status_intr(struct sky2_hw *hw, int to_do) +{ + int work_done = 0; + u16 hwidx = sky2_read16(hw, STAT_PUT_IDX); - hwidx = sky2_read16(hw, STAT_PUT_IDX); - BUG_ON(hwidx >= STATUS_RING_SIZE); rmb(); - while (hwidx != hw->st_idx) { + while (hw->st_idx != hwidx) { struct sky2_status_le *le = hw->st_le + hw->st_idx; struct net_device *dev; struct sky2_port *sky2; @@ -1928,18 +1948,14 @@ u32 status; u16 length; - le = hw->st_le + hw->st_idx; - hw->st_idx = (hw->st_idx + 1) % STATUS_RING_SIZE; - prefetch(hw->st_le + hw->st_idx); + hw->st_idx = RING_NEXT(hw->st_idx, STATUS_RING_SIZE); BUG_ON(le->link >= 2); dev = hw->dev[le->link]; - if (dev == NULL || !netif_running(dev)) - continue; sky2 = netdev_priv(dev); - status = le32_to_cpu(le->status); - length = le16_to_cpu(le->length); + length = le->length; + status = le->status; switch (le->opcode & ~HW_OWNER) { case OP_RXSTAT: @@ -1981,42 +1997,24 @@ case OP_TXINDEXLE: /* TX index reports status for both ports */ - tx_done[0] = status & 0xffff; - tx_done[1] = ((status >> 24) & 0xff) - | (u16)(length & 0xf) << 8; + BUILD_BUG_ON(TX_RING_SIZE > 0x1000); + sky2_tx_done(hw->dev[0], status & 0xfff); + if (hw->dev[1]) + sky2_tx_done(hw->dev[1], + ((status >> 24) & 0xff) + | (u16)(length & 0xf) << 8); break; default: if (net_ratelimit()) printk(KERN_WARNING PFX "unknown status opcode 0x%x\n", le->opcode); - break; + goto exit_loop; } } exit_loop: - sky2_tx_check(hw, 0, tx_done[0]); - sky2_tx_check(hw, 1, tx_done[1]); - - if (sky2_read8(hw, STAT_TX_TIMER_CTRL) == TIM_START) { - sky2_write8(hw, STAT_TX_TIMER_CTRL, TIM_STOP); - sky2_write8(hw, STAT_TX_TIMER_CTRL, TIM_START); - } - - if (likely(work_done < to_do)) { - spin_lock_irq(&hw->hw_lock); - __netif_rx_complete(dev0); - - hw->intr_mask |= Y2_IS_STAT_BMU; - sky2_write32(hw, B0_IMSK, hw->intr_mask); - spin_unlock_irq(&hw->hw_lock); - - return 0; - } else { - *budget -= work_done; - dev0->quota -= work_done; - return 1; - } + return work_done; } static void sky2_hw_error(struct sky2_hw *hw, unsigned port, u32 status) @@ -2135,42 +2133,63 @@ } } -static void sky2_phy_intr(struct sky2_hw *hw, unsigned port) +/* This should never happen it is a fatal situation */ +static void sky2_descriptor_error(struct sky2_hw *hw, unsigned port, + const char *rxtx, u32 mask) { struct net_device *dev = hw->dev[port]; struct sky2_port *sky2 = netdev_priv(dev); + u32 imask; + + printk(KERN_ERR PFX "%s: %s descriptor error (hardware problem)\n", + dev ? dev->name : "", rxtx); - hw->intr_mask &= ~(port == 0 ? Y2_IS_IRQ_PHY1 : Y2_IS_IRQ_PHY2); - sky2_write32(hw, B0_IMSK, hw->intr_mask); + imask = sky2_read32(hw, B0_IMSK); + imask &= ~mask; + sky2_write32(hw, B0_IMSK, imask); - schedule_work(&sky2->phy_task); + if (dev) { + spin_lock(&sky2->phy_lock); + sky2_link_down(sky2); + spin_unlock(&sky2->phy_lock); + } } -static irqreturn_t sky2_intr(int irq, void *dev_id, struct pt_regs *regs) +/* If idle then force a fake soft NAPI poll once a second + * to work around cases where sharing an edge triggered interrupt. + */ +static inline void sky2_idle_start(struct sky2_hw *hw) { - struct sky2_hw *hw = dev_id; - struct net_device *dev0 = hw->dev[0]; - u32 status; + if (idle_timeout > 0) + mod_timer(&hw->idle_timer, + jiffies + msecs_to_jiffies(idle_timeout)); +} - status = sky2_read32(hw, B0_Y2_SP_ISRC2); - if (status == 0 || status == ~0) - return IRQ_NONE; +static void sky2_idle(unsigned long arg) +{ + struct sky2_hw *hw = (struct sky2_hw *) arg; + struct net_device *dev = hw->dev[0]; + + if (__netif_rx_schedule_prep(dev)) + __netif_rx_schedule(dev); + + mod_timer(&hw->idle_timer, jiffies + msecs_to_jiffies(idle_timeout)); +} + + +static int sky2_poll(struct net_device *dev0, int *budget) +{ + struct sky2_hw *hw = ((struct sky2_port *) netdev_priv(dev0))->hw; + int work_limit = min(dev0->quota, *budget); + int work_done = 0; + u32 status = sky2_read32(hw, B0_Y2_SP_EISR); + + if (!~status) + goto out; - spin_lock(&hw->hw_lock); if (status & Y2_IS_HW_ERR) sky2_hw_intr(hw); - /* Do NAPI for Rx and Tx status */ - if (status & Y2_IS_STAT_BMU) { - hw->intr_mask &= ~Y2_IS_STAT_BMU; - sky2_write32(hw, B0_IMSK, hw->intr_mask); - - if (likely(__netif_rx_schedule_prep(dev0))) { - prefetch(&hw->st_le[hw->st_idx]); - __netif_rx_schedule(dev0); - } - } - if (status & Y2_IS_IRQ_PHY1) sky2_phy_intr(hw, 0); @@ -2183,9 +2202,48 @@ if (status & Y2_IS_IRQ_MAC2) sky2_mac_intr(hw, 1); - sky2_write32(hw, B0_Y2_SP_ICR, 2); + if (status & Y2_IS_CHK_RX1) + sky2_descriptor_error(hw, 0, "receive", Y2_IS_CHK_RX1); + + if (status & Y2_IS_CHK_RX2) + sky2_descriptor_error(hw, 1, "receive", Y2_IS_CHK_RX2); + + if (status & Y2_IS_CHK_TXA1) + sky2_descriptor_error(hw, 0, "transmit", Y2_IS_CHK_TXA1); + + if (status & Y2_IS_CHK_TXA2) + sky2_descriptor_error(hw, 1, "transmit", Y2_IS_CHK_TXA2); + + work_done = sky2_status_intr(hw, work_limit); + *budget -= work_done; + dev0->quota -= work_done; + + if (status & Y2_IS_STAT_BMU) + sky2_write32(hw, STAT_CTRL, SC_STAT_CLR_IRQ); + + if (sky2_more_work(hw)) + return 1; +out: + netif_rx_complete(dev0); + + sky2_read32(hw, B0_Y2_SP_LISR); + return 0; +} + +static irqreturn_t sky2_intr(int irq, void *dev_id, struct pt_regs *regs) +{ + struct sky2_hw *hw = dev_id; + struct net_device *dev0 = hw->dev[0]; + u32 status; + + /* Reading this mask interrupts as side effect */ + status = sky2_read32(hw, B0_Y2_SP_ISRC2); + if (status == 0 || status == ~0) + return IRQ_NONE; - spin_unlock(&hw->hw_lock); + prefetch(&hw->st_le[hw->st_idx]); + if (likely(__netif_rx_schedule_prep(dev0))) + __netif_rx_schedule(dev0); return IRQ_HANDLED; } @@ -2194,8 +2252,10 @@ static void sky2_netpoll(struct net_device *dev) { struct sky2_port *sky2 = netdev_priv(dev); + struct net_device *dev0 = sky2->hw->dev[0]; - sky2_intr(sky2->hw->pdev->irq, sky2->hw, NULL); + if (netif_running(dev) && __netif_rx_schedule_prep(dev0)) + __netif_rx_schedule(dev0); } #endif @@ -2224,7 +2284,7 @@ } -static int sky2_reset(struct sky2_hw *hw) +static int __devinit sky2_reset(struct sky2_hw *hw) { u16 status; u8 t8, pmd_type; @@ -2239,6 +2299,16 @@ return -EOPNOTSUPP; } + hw->chip_rev = (sky2_read8(hw, B2_MAC_CFG) & CFG_CHIP_R_MSK) >> 4; + + /* This rev is really old, and requires untested workarounds */ + if (hw->chip_id == CHIP_ID_YUKON_EC && hw->chip_rev == CHIP_REV_YU_EC_A1) { + printk(KERN_ERR PFX "%s: unsupported revision Yukon-%s (0x%x) rev %d\n", + pci_name(hw->pdev), yukon2_name[hw->chip_id - CHIP_ID_YUKON_XL], + hw->chip_id, hw->chip_rev); + return -EOPNOTSUPP; + } + /* disable ASF */ if (hw->chip_id <= CHIP_ID_YUKON_EC) { sky2_write8(hw, B28_Y2_ASF_STAT_CMD, Y2_ASF_RESET); @@ -2259,7 +2329,7 @@ sky2_write8(hw, B0_CTST, CS_MRST_CLR); /* clear any PEX errors */ - if (pci_find_capability(hw->pdev, PCI_CAP_ID_EXP)) + if (pci_find_capability(hw->pdev, PCI_CAP_ID_EXP)) sky2_pci_write32(hw, PEX_UNC_ERR_STAT, 0xffffffffUL); @@ -2272,7 +2342,6 @@ if (!(sky2_read8(hw, B2_Y2_CLK_GATE) & Y2_STATUS_LNK2_INAC)) ++hw->ports; } - hw->chip_rev = (sky2_read8(hw, B2_MAC_CFG) & CFG_CHIP_R_MSK) >> 4; sky2_set_power_state(hw, PCI_D0); @@ -2338,30 +2407,18 @@ /* Set the list last index */ sky2_write16(hw, STAT_LAST_IDX, STATUS_RING_SIZE - 1); - /* These status setup values are copied from SysKonnect's driver */ - if (is_ec_a1(hw)) { - /* WA for dev. #4.3 */ - sky2_write16(hw, STAT_TX_IDX_TH, 0xfff); /* Tx Threshold */ - - /* set Status-FIFO watermark */ - sky2_write8(hw, STAT_FIFO_WM, 0x21); /* WA for dev. #4.18 */ - - /* set Status-FIFO ISR watermark */ - sky2_write8(hw, STAT_FIFO_ISR_WM, 0x07); /* WA for dev. #4.18 */ - sky2_write32(hw, STAT_TX_TIMER_INI, sky2_us2clk(hw, 10000)); - } else { - sky2_write16(hw, STAT_TX_IDX_TH, 10); - sky2_write8(hw, STAT_FIFO_WM, 16); + sky2_write16(hw, STAT_TX_IDX_TH, 10); + sky2_write8(hw, STAT_FIFO_WM, 16); - /* set Status-FIFO ISR watermark */ - if (hw->chip_id == CHIP_ID_YUKON_XL && hw->chip_rev == 0) - sky2_write8(hw, STAT_FIFO_ISR_WM, 4); - else - sky2_write8(hw, STAT_FIFO_ISR_WM, 16); + /* set Status-FIFO ISR watermark */ + if (hw->chip_id == CHIP_ID_YUKON_XL && hw->chip_rev == 0) + sky2_write8(hw, STAT_FIFO_ISR_WM, 4); + else + sky2_write8(hw, STAT_FIFO_ISR_WM, 16); - sky2_write32(hw, STAT_TX_TIMER_INI, sky2_us2clk(hw, 1000)); - sky2_write32(hw, STAT_ISR_TIMER_INI, sky2_us2clk(hw, 7)); - } + sky2_write32(hw, STAT_TX_TIMER_INI, sky2_us2clk(hw, 1000)); + sky2_write32(hw, STAT_ISR_TIMER_INI, sky2_us2clk(hw, 20)); + sky2_write32(hw, STAT_LEV_TIMER_INI, sky2_us2clk(hw, 100)); /* enable status unit */ sky2_write32(hw, STAT_CTRL, SC_STAT_OP_ON); @@ -2503,17 +2560,34 @@ { "rx_unicast", GM_RXF_UC_OK }, { "tx_mac_pause", GM_TXF_MPAUSE }, { "rx_mac_pause", GM_RXF_MPAUSE }, - { "collisions", GM_TXF_SNG_COL }, + { "collisions", GM_TXF_COL }, { "late_collision",GM_TXF_LAT_COL }, { "aborted", GM_TXF_ABO_COL }, + { "single_collisions", GM_TXF_SNG_COL }, { "multi_collisions", GM_TXF_MUL_COL }, - { "fifo_underrun", GM_TXE_FIFO_UR }, - { "fifo_overflow", GM_RXE_FIFO_OV }, - { "rx_toolong", GM_RXF_LNG_ERR }, - { "rx_jabber", GM_RXF_JAB_PKT }, + + { "rx_short", GM_RXF_SHT }, { "rx_runt", GM_RXE_FRAG }, + { "rx_64_byte_packets", GM_RXF_64B }, + { "rx_65_to_127_byte_packets", GM_RXF_127B }, + { "rx_128_to_255_byte_packets", GM_RXF_255B }, + { "rx_256_to_511_byte_packets", GM_RXF_511B }, + { "rx_512_to_1023_byte_packets", GM_RXF_1023B }, + { "rx_1024_to_1518_byte_packets", GM_RXF_1518B }, + { "rx_1518_to_max_byte_packets", GM_RXF_MAX_SZ }, { "rx_too_long", GM_RXF_LNG_ERR }, + { "rx_fifo_overflow", GM_RXE_FIFO_OV }, + { "rx_jabber", GM_RXF_JAB_PKT }, { "rx_fcs_error", GM_RXF_FCS_ERR }, + + { "tx_64_byte_packets", GM_TXF_64B }, + { "tx_65_to_127_byte_packets", GM_TXF_127B }, + { "tx_128_to_255_byte_packets", GM_TXF_255B }, + { "tx_256_to_511_byte_packets", GM_TXF_511B }, + { "tx_512_to_1023_byte_packets", GM_TXF_1023B }, + { "tx_1024_to_1518_byte_packets", GM_TXF_1518B }, + { "tx_1519_to_max_byte_packets", GM_TXF_MAX_SZ }, + { "tx_fifo_underrun", GM_TXE_FIFO_UR }, }; static u32 sky2_get_rx_csum(struct net_device *dev) @@ -2615,7 +2689,7 @@ sky2->net_stats.rx_bytes = data[1]; sky2->net_stats.tx_packets = data[2] + data[4] + data[6]; sky2->net_stats.rx_packets = data[3] + data[5] + data[7]; - sky2->net_stats.multicast = data[5] + data[7]; + sky2->net_stats.multicast = data[3] + data[5]; sky2->net_stats.collisions = data[10]; sky2->net_stats.tx_aborted_errors = data[12]; @@ -2744,7 +2818,7 @@ ms = data * 1000; /* save initial values */ - down(&sky2->phy_sema); + spin_lock_bh(&sky2->phy_lock); if (hw->chip_id == CHIP_ID_YUKON_XL) { u16 pg = gm_phy_read(hw, port, PHY_MARV_EXT_ADR); gm_phy_write(hw, port, PHY_MARV_EXT_ADR, 3); @@ -2760,9 +2834,9 @@ sky2_led(hw, port, onoff); onoff = !onoff; - up(&sky2->phy_sema); + spin_unlock_bh(&sky2->phy_lock); interrupted = msleep_interruptible(250); - down(&sky2->phy_sema); + spin_lock_bh(&sky2->phy_lock); ms -= 250; } @@ -2777,7 +2851,7 @@ gm_phy_write(hw, port, PHY_MARV_LED_CTRL, ledctrl); gm_phy_write(hw, port, PHY_MARV_LED_OVER, ledover); } - up(&sky2->phy_sema); + spin_unlock_bh(&sky2->phy_lock); return 0; } @@ -2807,38 +2881,6 @@ return err; } -#ifdef CONFIG_PM -static void sky2_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) -{ - struct sky2_port *sky2 = netdev_priv(dev); - - wol->supported = WAKE_MAGIC; - wol->wolopts = sky2->wol ? WAKE_MAGIC : 0; -} - -static int sky2_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) -{ - struct sky2_port *sky2 = netdev_priv(dev); - struct sky2_hw *hw = sky2->hw; - - if (wol->wolopts != WAKE_MAGIC && wol->wolopts != 0) - return -EOPNOTSUPP; - - sky2->wol = wol->wolopts == WAKE_MAGIC; - - if (sky2->wol) { - memcpy_toio(hw->regs + WOL_MAC_ADDR, dev->dev_addr, ETH_ALEN); - - sky2_write16(hw, WOL_CTRL_STAT, - WOL_CTL_ENA_PME_ON_MAGIC_PKT | - WOL_CTL_ENA_MAGIC_PKT_UNIT); - } else - sky2_write16(hw, WOL_CTRL_STAT, WOL_CTL_DEFAULT); - - return 0; -} -#endif - static int sky2_get_coalesce(struct net_device *dev, struct ethtool_coalesce *ecmd) { @@ -2879,19 +2921,11 @@ { struct sky2_port *sky2 = netdev_priv(dev); struct sky2_hw *hw = sky2->hw; - const u32 tmin = sky2_clk2us(hw, 1); - const u32 tmax = 5000; + const u32 tmax = sky2_clk2us(hw, 0x0ffffff); - if (ecmd->tx_coalesce_usecs != 0 && - (ecmd->tx_coalesce_usecs < tmin || ecmd->tx_coalesce_usecs > tmax)) - return -EINVAL; - - if (ecmd->rx_coalesce_usecs != 0 && - (ecmd->rx_coalesce_usecs < tmin || ecmd->rx_coalesce_usecs > tmax)) - return -EINVAL; - - if (ecmd->rx_coalesce_usecs_irq != 0 && - (ecmd->rx_coalesce_usecs_irq < tmin || ecmd->rx_coalesce_usecs_irq > tmax)) + if (ecmd->tx_coalesce_usecs > tmax || + ecmd->rx_coalesce_usecs > tmax || + ecmd->rx_coalesce_usecs_irq > tmax) return -EINVAL; if (ecmd->tx_max_coalesced_frames >= TX_RING_SIZE-1) @@ -3026,10 +3060,6 @@ .set_ringparam = sky2_set_ringparam, .get_pauseparam = sky2_get_pauseparam, .set_pauseparam = sky2_set_pauseparam, -#ifdef CONFIG_PM - .get_wol = sky2_get_wol, - .set_wol = sky2_set_wol, -#endif .phys_id = sky2_phys_id, .get_stats_count = sky2_get_stats_count, .get_ethtool_stats = sky2_get_ethtool_stats, @@ -3082,17 +3112,11 @@ sky2->duplex = -1; sky2->speed = -1; sky2->advertising = sky2_supported_modes(hw); + sky2->rx_csum = 1; - /* Receive checksum disabled for Yukon XL - * because of observed problems with incorrect - * values when multiple packets are received in one interrupt - */ - sky2->rx_csum = (hw->chip_id != CHIP_ID_YUKON_XL); - - INIT_WORK(&sky2->phy_task, sky2_phy_task, sky2); - init_MUTEX(&sky2->phy_sema); + spin_lock_init(&sky2->phy_lock); sky2->tx_pending = TX_DEF_PENDING; - sky2->rx_pending = is_ec_a1(hw) ? 8 : RX_DEF_PENDING; + sky2->rx_pending = RX_DEF_PENDING; sky2->rx_bufsize = sky2_buf_size(ETH_DATA_LEN); hw->dev[port] = dev; @@ -3134,6 +3158,66 @@ dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]); } +/* Handle software interrupt used during MSI test */ +static irqreturn_t __devinit sky2_test_intr(int irq, void *dev_id, + struct pt_regs *regs) +{ + struct sky2_hw *hw = dev_id; + u32 status = sky2_read32(hw, B0_Y2_SP_ISRC2); + + if (status == 0) + return IRQ_NONE; + + if (status & Y2_IS_IRQ_SW) { + hw->msi_detected = 1; + wake_up(&hw->msi_wait); + sky2_write8(hw, B0_CTST, CS_CL_SW_IRQ); + } + sky2_write32(hw, B0_Y2_SP_ICR, 2); + + return IRQ_HANDLED; +} + +/* Test interrupt path by forcing a a software IRQ */ +static int __devinit sky2_test_msi(struct sky2_hw *hw) +{ + struct pci_dev *pdev = hw->pdev; + int err; + + sky2_write32(hw, B0_IMSK, Y2_IS_IRQ_SW); + + err = request_irq(pdev->irq, sky2_test_intr, SA_SHIRQ, DRV_NAME, hw); + if (err) { + printk(KERN_ERR PFX "%s: cannot assign irq %d\n", + pci_name(pdev), pdev->irq); + return err; + } + + init_waitqueue_head (&hw->msi_wait); + + sky2_write8(hw, B0_CTST, CS_ST_SW_IRQ); + wmb(); + + wait_event_timeout(hw->msi_wait, hw->msi_detected, HZ/10); + + if (!hw->msi_detected) { + /* MSI test failed, go back to INTx mode */ + printk(KERN_WARNING PFX "%s: No interrupt was generated using MSI, " + "switching to INTx mode. Please report this failure to " + "the PCI maintainer and include system chipset information.\n", + pci_name(pdev)); + + err = -EOPNOTSUPP; + sky2_write8(hw, B0_CTST, CS_CL_SW_IRQ); + } + + sky2_write32(hw, B0_IMSK, 0); + + free_irq(pdev->irq, hw); + + return err; +} + static int __devinit sky2_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -3202,7 +3286,6 @@ goto err_out_free_hw; } hw->pm_cap = pm_cap; - spin_lock_init(&hw->hw_lock); #ifdef __BIG_ENDIAN /* byte swap descriptors in hardware */ @@ -3255,21 +3338,32 @@ } } - err = request_irq(pdev->irq, sky2_intr, SA_SHIRQ, DRV_NAME, hw); + if (!disable_msi && pci_enable_msi(pdev) == 0) { + err = sky2_test_msi(hw); + if (err == -EOPNOTSUPP) + pci_disable_msi(pdev); + else if (err) + goto err_out_unregister; + } + + err = request_irq(pdev->irq, sky2_intr, SA_SHIRQ, DRV_NAME, hw); if (err) { printk(KERN_ERR PFX "%s: cannot assign irq %d\n", pci_name(pdev), pdev->irq); goto err_out_unregister; } - hw->intr_mask = Y2_IS_BASE; - sky2_write32(hw, B0_IMSK, hw->intr_mask); + sky2_write32(hw, B0_IMSK, Y2_IS_BASE); + + setup_timer(&hw->idle_timer, sky2_idle, (unsigned long) hw); + sky2_idle_start(hw); pci_set_drvdata(pdev, hw); return 0; err_out_unregister: + pci_disable_msi(pdev); if (dev1) { unregister_netdev(dev1); free_netdev(dev1); @@ -3299,19 +3393,24 @@ if (!hw) return; + del_timer_sync(&hw->idle_timer); + + sky2_write32(hw, B0_IMSK, 0); + synchronize_irq(hw->pdev->irq); + dev0 = hw->dev[0]; dev1 = hw->dev[1]; if (dev1) unregister_netdev(dev1); unregister_netdev(dev0); - sky2_write32(hw, B0_IMSK, 0); sky2_set_power_state(hw, PCI_D3hot); sky2_write16(hw, B0_Y2LED, LED_STAT_OFF); sky2_write8(hw, B0_CTST, CS_RST_SET); sky2_read8(hw, B0_CTST); free_irq(pdev->irq, hw); + pci_disable_msi(pdev); pci_free_consistent(pdev, STATUS_LE_BYTES, hw->st_le, hw->st_dma); pci_release_regions(pdev); pci_disable_device(pdev); @@ -3330,8 +3429,14 @@ { struct sky2_hw *hw = pci_get_drvdata(pdev); int i; + pci_power_t pstate = pci_choose_state(pdev, state); + + if (!(pstate == PCI_D3hot || pstate == PCI_D3cold)) + return -EINVAL; - for (i = 0; i < 2; i++) { + del_timer_sync(&hw->idle_timer); + + for (i = 0; i < hw->ports; i++) { struct net_device *dev = hw->dev[i]; if (dev) { @@ -3340,10 +3445,14 @@ sky2_down(dev); netif_device_detach(dev); + netif_poll_disable(dev); } } - return sky2_set_power_state(hw, pci_choose_state(pdev, state)); + sky2_write32(hw, B0_IMSK, 0); + pci_save_state(pdev); + sky2_set_power_state(hw, pstate); + return 0; } static int sky2_resume(struct pci_dev *pdev) @@ -3353,27 +3462,31 @@ pci_restore_state(pdev); pci_enable_wake(pdev, PCI_D0, 0); - err = sky2_set_power_state(hw, PCI_D0); - if (err) - goto out; + sky2_set_power_state(hw, PCI_D0); err = sky2_reset(hw); if (err) goto out; - for (i = 0; i < 2; i++) { + sky2_write32(hw, B0_IMSK, Y2_IS_BASE); + + for (i = 0; i < hw->ports; i++) { struct net_device *dev = hw->dev[i]; if (dev && netif_running(dev)) { netif_device_attach(dev); + netif_poll_enable(dev); + err = sky2_up(dev); if (err) { printk(KERN_ERR PFX "%s: could not up: %d\n", dev->name, err); dev_close(dev); - break; + goto out; } } } + + sky2_idle_start(hw); out: return err; } --- linux-source-2.6.15-2.6.15.orig/drivers/net/tg3.c +++ linux-source-2.6.15-2.6.15/drivers/net/tg3.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -68,8 +69,8 @@ #define DRV_MODULE_NAME "tg3" #define PFX DRV_MODULE_NAME ": " -#define DRV_MODULE_VERSION "3.47" -#define DRV_MODULE_RELDATE "Dec 28, 2005" +#define DRV_MODULE_VERSION "3.49" +#define DRV_MODULE_RELDATE "Feb 2, 2006" #define TG3_DEF_MAC_MODE 0 #define TG3_DEF_RX_MODE 0 @@ -1324,10 +1325,12 @@ val &= ~((1 << 16) | (1 << 4) | (1 << 2) | (1 << 1) | 1); tw32(0x7d00, val); if (!(tp->tg3_flags & TG3_FLAG_ENABLE_ASF)) { - tg3_nvram_lock(tp); + int err; + + err = tg3_nvram_lock(tp); tg3_halt_cpu(tp, RX_CPU_BASE); - tw32_f(NVRAM_SWARB, SWARB_REQ_CLR0); - tg3_nvram_unlock(tp); + if (!err) + tg3_nvram_unlock(tp); } } @@ -3479,6 +3482,17 @@ struct tg3 *tp = _data; unsigned int restart_timer; + tg3_full_lock(tp, 0); + tp->tg3_flags |= TG3_FLAG_IN_RESET_TASK; + + if (!netif_running(tp->dev)) { + tp->tg3_flags &= ~TG3_FLAG_IN_RESET_TASK; + tg3_full_unlock(tp); + return; + } + + tg3_full_unlock(tp); + tg3_netif_stop(tp); tg3_full_lock(tp, 1); @@ -3491,10 +3505,12 @@ tg3_netif_start(tp); - tg3_full_unlock(tp); - if (restart_timer) mod_timer(&tp->timer, jiffies + 1); + + tp->tg3_flags &= ~TG3_FLAG_IN_RESET_TASK; + + tg3_full_unlock(tp); } static void tg3_tx_timeout(struct net_device *dev) @@ -3516,9 +3532,23 @@ (base + len + 8 < base)); } +/* Test for DMA addresses > 40-bit */ +static inline int tg3_40bit_overflow_test(struct tg3 *tp, dma_addr_t mapping, + int len) +{ +#if defined(CONFIG_HIGHMEM) && (BITS_PER_LONG == 64) + if (tp->tg3_flags2 & TG3_FLG2_5780_CLASS) + return (((u64) mapping + len) > DMA_40BIT_MASK); + return 0; +#else + return 0; +#endif +} + static void tg3_set_txd(struct tg3 *, int, dma_addr_t, int, u32, u32); -static int tigon3_4gb_hwbug_workaround(struct tg3 *tp, struct sk_buff *skb, +/* Workaround 4GB and 40-bit hardware DMA bugs. */ +static int tigon3_dma_hwbug_workaround(struct tg3 *tp, struct sk_buff *skb, u32 last_plus_one, u32 *start, u32 base_flags, u32 mss) { @@ -3650,7 +3680,7 @@ TXD_FLAG_CPU_POST_DMA); skb->nh.iph->check = 0; - skb->nh.iph->tot_len = ntohs(mss + ip_tcp_len + tcp_opt_len); + skb->nh.iph->tot_len = htons(mss + ip_tcp_len + tcp_opt_len); if (tp->tg3_flags2 & TG3_FLG2_HW_TSO) { skb->h.th->check = 0; base_flags &= ~TXD_FLAG_TCPUDP_CSUM; @@ -3726,6 +3756,9 @@ if (tg3_4g_overflow_test(mapping, len)) would_hit_hwbug = 1; + if (tg3_40bit_overflow_test(tp, mapping, len)) + would_hit_hwbug = 1; + if (tp->tg3_flags2 & TG3_FLG2_HW_TSO) tg3_set_txd(tp, entry, mapping, len, base_flags, (i == last)|(mss << 1)); @@ -3747,7 +3780,7 @@ /* If the workaround fails due to memory/mapping * failure, silently drop this packet. */ - if (tigon3_4gb_hwbug_workaround(tp, skb, last_plus_one, + if (tigon3_dma_hwbug_workaround(tp, skb, last_plus_one, &start, base_flags, mss)) goto out_unlock; @@ -4192,14 +4225,19 @@ if (tp->tg3_flags & TG3_FLAG_NVRAM) { int i; - tw32(NVRAM_SWARB, SWARB_REQ_SET1); - for (i = 0; i < 8000; i++) { - if (tr32(NVRAM_SWARB) & SWARB_GNT1) - break; - udelay(20); + if (tp->nvram_lock_cnt == 0) { + tw32(NVRAM_SWARB, SWARB_REQ_SET1); + for (i = 0; i < 8000; i++) { + if (tr32(NVRAM_SWARB) & SWARB_GNT1) + break; + udelay(20); + } + if (i == 8000) { + tw32(NVRAM_SWARB, SWARB_REQ_CLR1); + return -ENODEV; + } } - if (i == 8000) - return -ENODEV; + tp->nvram_lock_cnt++; } return 0; } @@ -4207,8 +4245,12 @@ /* tp->lock is held. */ static void tg3_nvram_unlock(struct tg3 *tp) { - if (tp->tg3_flags & TG3_FLAG_NVRAM) - tw32_f(NVRAM_SWARB, SWARB_REQ_CLR1); + if (tp->tg3_flags & TG3_FLAG_NVRAM) { + if (tp->nvram_lock_cnt > 0) + tp->nvram_lock_cnt--; + if (tp->nvram_lock_cnt == 0) + tw32_f(NVRAM_SWARB, SWARB_REQ_CLR1); + } } /* tp->lock is held. */ @@ -4319,8 +4361,13 @@ void (*write_op)(struct tg3 *, u32, u32); int i; - if (!(tp->tg3_flags2 & TG3_FLG2_SUN_570X)) + if (!(tp->tg3_flags2 & TG3_FLG2_SUN_570X)) { tg3_nvram_lock(tp); + /* No matching tg3_nvram_unlock() after this because + * chip reset below will undo the nvram lock. + */ + tp->nvram_lock_cnt = 0; + } /* * We must avoid the readl() that normally takes place. @@ -4716,6 +4763,10 @@ (offset == RX_CPU_BASE ? "RX" : "TX")); return -ENODEV; } + + /* Clear firmware's nvram arbitration. */ + if (tp->tg3_flags & TG3_FLAG_NVRAM) + tw32(NVRAM_SWARB, SWARB_REQ_CLR0); return 0; } @@ -4735,7 +4786,7 @@ static int tg3_load_firmware_cpu(struct tg3 *tp, u32 cpu_base, u32 cpu_scratch_base, int cpu_scratch_size, struct fw_info *info) { - int err, i; + int err, lock_err, i; void (*write_op)(struct tg3 *, u32, u32); if (cpu_base == TX_CPU_BASE && @@ -4754,9 +4805,10 @@ /* It is possible that bootcode is still loading at this point. * Get the nvram lock first before halting the cpu. */ - tg3_nvram_lock(tp); + lock_err = tg3_nvram_lock(tp); err = tg3_halt_cpu(tp, cpu_base); - tg3_nvram_unlock(tp); + if (!lock_err) + tg3_nvram_unlock(tp); if (err) goto out; @@ -6764,6 +6816,13 @@ { struct tg3 *tp = netdev_priv(dev); + /* Calling flush_scheduled_work() may deadlock because + * linkwatch_event() may be on the workqueue and it will try to get + * the rtnl_lock which we are holding. + */ + while (tp->tg3_flags & TG3_FLAG_IN_RESET_TASK) + msleep(1); + netif_stop_queue(dev); del_timer_sync(&tp->timer); @@ -7309,21 +7368,23 @@ cmd->supported |= (SUPPORTED_1000baseT_Half | SUPPORTED_1000baseT_Full); - if (!(tp->tg3_flags2 & TG3_FLG2_ANY_SERDES)) + if (!(tp->tg3_flags2 & TG3_FLG2_ANY_SERDES)) { cmd->supported |= (SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full | SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full | SUPPORTED_MII); - else + cmd->port = PORT_TP; + } else { cmd->supported |= SUPPORTED_FIBRE; + cmd->port = PORT_FIBRE; + } cmd->advertising = tp->link_config.advertising; if (netif_running(dev)) { cmd->speed = tp->link_config.active_speed; cmd->duplex = tp->link_config.active_duplex; } - cmd->port = 0; cmd->phy_address = PHY_ADDR; cmd->transceiver = 0; cmd->autoneg = tp->link_config.autoneg; @@ -8181,7 +8242,7 @@ data[1] = 1; } if (etest->flags & ETH_TEST_FL_OFFLINE) { - int irq_sync = 0; + int err, irq_sync = 0; if (netif_running(dev)) { tg3_netif_stop(tp); @@ -8191,11 +8252,12 @@ tg3_full_lock(tp, irq_sync); tg3_halt(tp, RESET_KIND_SUSPEND, 1); - tg3_nvram_lock(tp); + err = tg3_nvram_lock(tp); tg3_halt_cpu(tp, RX_CPU_BASE); if (!(tp->tg3_flags2 & TG3_FLG2_5705_PLUS)) tg3_halt_cpu(tp, TX_CPU_BASE); - tg3_nvram_unlock(tp); + if (!err) + tg3_nvram_unlock(tp); if (tg3_test_registers(tp) != 0) { etest->flags |= ETH_TEST_FL_FAILED; @@ -8587,7 +8649,11 @@ GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5701) { tp->tg3_flags |= TG3_FLAG_NVRAM; - tg3_nvram_lock(tp); + if (tg3_nvram_lock(tp)) { + printk(KERN_WARNING PFX "%s: Cannot get nvarm lock, " + "tg3_nvram_init failed.\n", tp->dev->name); + return; + } tg3_enable_nvram_access(tp); if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5752) @@ -8685,7 +8751,9 @@ if (offset > NVRAM_ADDR_MSK) return -EINVAL; - tg3_nvram_lock(tp); + ret = tg3_nvram_lock(tp); + if (ret) + return ret; tg3_enable_nvram_access(tp); @@ -8784,10 +8852,6 @@ offset = offset + (pagesize - page_off); - /* Nvram lock released by tg3_nvram_read() above, - * so need to get it again. - */ - tg3_nvram_lock(tp); tg3_enable_nvram_access(tp); /* @@ -8924,7 +8988,9 @@ else { u32 grc_mode; - tg3_nvram_lock(tp); + ret = tg3_nvram_lock(tp); + if (ret) + return ret; tg3_enable_nvram_access(tp); if ((tp->tg3_flags2 & TG3_FLG2_5750_PLUS) && @@ -9033,10 +9099,6 @@ tp->phy_id = PHY_ID_INVALID; tp->led_ctrl = LED_CTRL_MODE_PHY_1; - /* Do not even try poking around in here on Sun parts. */ - if (tp->tg3_flags2 & TG3_FLG2_SUN_570X) - return; - tg3_read_mem(tp, NIC_SRAM_DATA_SIG, &val); if (val == NIC_SRAM_DATA_SIG_MAGIC) { u32 nic_cfg, led_cfg; @@ -9282,7 +9344,7 @@ static void __devinit tg3_read_partno(struct tg3 *tp) { unsigned char vpd_data[256]; - int i; + unsigned int i; if (tp->tg3_flags2 & TG3_FLG2_SUN_570X) { /* Sun decided not to put the necessary bits in the @@ -9305,9 +9367,9 @@ } /* Now parse and find the part number. */ - for (i = 0; i < 256; ) { + for (i = 0; i < 254; ) { unsigned char val = vpd_data[i]; - int block_end; + unsigned int block_end; if (val == 0x82 || val == 0x91) { i = (i + 3 + @@ -9323,21 +9385,26 @@ (vpd_data[i + 1] + (vpd_data[i + 2] << 8))); i += 3; - while (i < block_end) { + + if (block_end > 256) + goto out_not_found; + + while (i < (block_end - 2)) { if (vpd_data[i + 0] == 'P' && vpd_data[i + 1] == 'N') { int partno_len = vpd_data[i + 2]; - if (partno_len > 24) + i += 3; + if (partno_len > 24 || (partno_len + i) > 256) goto out_not_found; memcpy(tp->board_part_number, - &vpd_data[i + 3], - partno_len); + &vpd_data[i], partno_len); /* Success. */ return; } + i += 3 + vpd_data[i + 2]; } /* Part number not found. */ @@ -9492,12 +9559,36 @@ } } - /* Find msi capability. */ + /* The EPB bridge inside 5714, 5715, and 5780 cannot support + * DMA addresses > 40-bit. This bridge may have other additional + * 57xx devices behind it in some 4-port NIC designs for example. + * Any tg3 device found behind the bridge will also need the 40-bit + * DMA workaround. + */ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5780 || GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5714) { tp->tg3_flags2 |= TG3_FLG2_5780_CLASS; + tp->tg3_flags |= TG3_FLAG_40BIT_DMA_BUG; tp->msi_cap = pci_find_capability(tp->pdev, PCI_CAP_ID_MSI); } + else { + struct pci_dev *bridge = NULL; + + do { + bridge = pci_get_device(PCI_VENDOR_ID_SERVERWORKS, + PCI_DEVICE_ID_SERVERWORKS_EPB, + bridge); + if (bridge && bridge->subordinate && + (bridge->subordinate->number <= + tp->pdev->bus->number) && + (bridge->subordinate->subordinate >= + tp->pdev->bus->number)) { + tp->tg3_flags |= TG3_FLAG_40BIT_DMA_BUG; + pci_dev_put(bridge); + break; + } + } while (bridge); + } /* Initialize misc host control in PCI block. */ tp->misc_host_ctrl |= (misc_ctrl_reg & @@ -10243,7 +10334,14 @@ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704) { u32 ccval = (tr32(TG3PCI_CLOCK_CTRL) & 0x1f); - if (ccval == 0x6 || ccval == 0x7) + /* If the 5704 is behind the EPB bridge, we can + * do the less restrictive ONE_DMA workaround for + * better performance. + */ + if ((tp->tg3_flags & TG3_FLAG_40BIT_DMA_BUG) && + GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704) + tp->dma_rwctrl |= 0x8000; + else if (ccval == 0x6 || ccval == 0x7) tp->dma_rwctrl |= DMA_RWCTRL_ONE_DMA; /* Set bit 23 to enable PCIX hw bug fix */ @@ -10483,8 +10581,6 @@ strcat(str, "66MHz"); else if (clock_ctrl == 6) strcat(str, "100MHz"); - else if (clock_ctrl == 7) - strcat(str, "133MHz"); } else { strcpy(str, "PCI:"); if (tp->tg3_flags & TG3_FLAG_PCI_HIGH_SPEED) @@ -10565,8 +10661,9 @@ unsigned long tg3reg_base, tg3reg_len; struct net_device *dev; struct tg3 *tp; - int i, err, pci_using_dac, pm_cap; + int i, err, pm_cap; char str[40]; + u64 dma_mask, persist_dma_mask; if (tg3_version_printed++ == 0) printk(KERN_INFO "%s", version); @@ -10603,26 +10700,6 @@ goto err_out_free_res; } - /* Configure DMA attributes. */ - err = pci_set_dma_mask(pdev, DMA_64BIT_MASK); - if (!err) { - pci_using_dac = 1; - err = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK); - if (err < 0) { - printk(KERN_ERR PFX "Unable to obtain 64 bit DMA " - "for consistent allocations\n"); - goto err_out_free_res; - } - } else { - err = pci_set_dma_mask(pdev, DMA_32BIT_MASK); - if (err) { - printk(KERN_ERR PFX "No usable DMA configuration, " - "aborting.\n"); - goto err_out_free_res; - } - pci_using_dac = 0; - } - tg3reg_base = pci_resource_start(pdev, 0); tg3reg_len = pci_resource_len(pdev, 0); @@ -10636,8 +10713,6 @@ SET_MODULE_OWNER(dev); SET_NETDEV_DEV(dev, &pdev->dev); - if (pci_using_dac) - dev->features |= NETIF_F_HIGHDMA; dev->features |= NETIF_F_LLTX; #if TG3_VLAN_TAG_USED dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX; @@ -10722,6 +10797,45 @@ goto err_out_iounmap; } + /* The EPB bridge inside 5714, 5715, and 5780 and any + * device behind the EPB cannot support DMA addresses > 40-bit. + * On 64-bit systems with IOMMU, use 40-bit dma_mask. + * On 64-bit systems without IOMMU, use 64-bit dma_mask and + * do DMA address check in tg3_start_xmit(). + */ + if (tp->tg3_flags2 & TG3_FLG2_IS_5788) + persist_dma_mask = dma_mask = DMA_32BIT_MASK; + else if (tp->tg3_flags & TG3_FLAG_40BIT_DMA_BUG) { + persist_dma_mask = dma_mask = DMA_40BIT_MASK; +#ifdef CONFIG_HIGHMEM + dma_mask = DMA_64BIT_MASK; +#endif + } else + persist_dma_mask = dma_mask = DMA_64BIT_MASK; + + /* Configure DMA attributes. */ + if (dma_mask > DMA_32BIT_MASK) { + err = pci_set_dma_mask(pdev, dma_mask); + if (!err) { + dev->features |= NETIF_F_HIGHDMA; + err = pci_set_consistent_dma_mask(pdev, + persist_dma_mask); + if (err < 0) { + printk(KERN_ERR PFX "Unable to obtain 64 bit " + "DMA for consistent allocations\n"); + goto err_out_iounmap; + } + } + } + if (err || dma_mask == DMA_32BIT_MASK) { + err = pci_set_dma_mask(pdev, DMA_32BIT_MASK); + if (err) { + printk(KERN_ERR PFX "No usable DMA configuration, " + "aborting.\n"); + goto err_out_iounmap; + } + } + tg3_init_bufmgr_config(tp); #if TG3_TSO_SUPPORT != 0 @@ -10790,9 +10904,6 @@ } else tp->tg3_flags &= ~TG3_FLAG_RX_CHECKSUMS; - if (tp->tg3_flags2 & TG3_FLG2_IS_5788) - dev->features &= ~NETIF_F_HIGHDMA; - /* flow control autonegotiation is default behavior */ tp->tg3_flags |= TG3_FLAG_PAUSE_AUTONEG; @@ -10836,8 +10947,10 @@ (tp->tg3_flags & TG3_FLAG_SPLIT_MODE) != 0, (tp->tg3_flags2 & TG3_FLG2_NO_ETH_WIRE_SPEED) == 0, (tp->tg3_flags2 & TG3_FLG2_TSO_CAPABLE) != 0); - printk(KERN_INFO "%s: dma_rwctrl[%08x]\n", - dev->name, tp->dma_rwctrl); + printk(KERN_INFO "%s: dma_rwctrl[%08x] dma_mask[%d-bit]\n", + dev->name, tp->dma_rwctrl, + (pdev->dma_mask == DMA_32BIT_MASK) ? 32 : + (((u64) pdev->dma_mask == DMA_40BIT_MASK) ? 40 : 64)); return 0; @@ -10866,6 +10979,7 @@ if (dev) { struct tg3 *tp = netdev_priv(dev); + flush_scheduled_work(); unregister_netdev(dev); if (tp->regs) { iounmap(tp->regs); @@ -10887,6 +11001,7 @@ if (!netif_running(dev)) return 0; + flush_scheduled_work(); tg3_netif_stop(tp); del_timer_sync(&tp->timer); --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skethtool.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skethtool.c @@ -2,8 +2,8 @@ * * Name: skethtool.c * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.7 $ - * Date: $Date: 2004/09/29 13:32:07 $ + * Version: $Revision: 1.3.2.9 $ + * Date: $Date: 2005/05/23 13:47:33 $ * Purpose: All functions regarding ethtool handling * ******************************************************************************/ @@ -11,7 +11,7 @@ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect GmbH. - * (C)Copyright 2002-2004 Marvell. + * (C)Copyright 2002-2005 Marvell. * * Driver for Marvell Yukon/2 chipset and SysKonnect Gigabit Ethernet * Server Adapters. @@ -21,9 +21,6 @@ * * Address all question to: linux@syskonnect.de * - * The technical manual for the adapters is available from SysKonnect's - * web pages: www.syskonnect.com - * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -36,10 +33,18 @@ #include "h/skdrv1st.h" #include "h/skdrv2nd.h" #include "h/skversion.h" - #include +#include #include -#include + +/****************************************************************************** + * + * External Functions and Data + * + *****************************************************************************/ + +extern void SkDimDisableModeration(SK_AC *pAC, int CurrentModeration); +extern void SkDimEnableModerationIfNeeded(SK_AC *pAC); /****************************************************************************** * @@ -47,6 +52,12 @@ * *****************************************************************************/ +#ifndef ETHT_STATSTRING_LEN +#define ETHT_STATSTRING_LEN 32 +#endif + +#define SK98LIN_STAT(m) sizeof(((SK_AC *)0)->m),offsetof(SK_AC, m) + #define SUPP_COPPER_ALL (SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full | \ SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full | \ SUPPORTED_1000baseT_Half| SUPPORTED_1000baseT_Full| \ @@ -65,6 +76,445 @@ ADVERTISED_FIBRE | \ ADVERTISED_Autoneg) +/****************************************************************************** + * + * Local Function Prototypes + * + *****************************************************************************/ + +#ifdef ETHTOOL_GSET +static void getSettings(SK_AC *pAC, int port, struct ethtool_cmd *ecmd); +#endif +#ifdef ETHTOOL_SSET +static int setSettings(SK_AC *pAC, int port, struct ethtool_cmd *ecmd); +#endif +#ifdef ETHTOOL_GPAUSEPARAM +static void getPauseParams(SK_AC *pAC, int port, struct ethtool_pauseparam *epause); +#endif +#ifdef ETHTOOL_SPAUSEPARAM +static int setPauseParams(SK_AC *pAC, int port, struct ethtool_pauseparam *epause); +#endif +#ifdef ETHTOOL_GDRVINFO +static void getDriverInfo(SK_AC *pAC, int port, struct ethtool_drvinfo *edrvinfo); +#endif +#ifdef ETHTOOL_PHYS_ID +static int startLocateNIC(SK_AC *pAC, int port, struct ethtool_value *blinkSecs); +static void toggleLeds(unsigned long ptr); +#endif +#ifdef ETHTOOL_GCOALESCE +static void getModerationParams(SK_AC *pAC, int port, struct ethtool_coalesce *ecoalesc); +#endif +#ifdef ETHTOOL_SCOALESCE +static int setModerationParams(SK_AC *pAC, int port, struct ethtool_coalesce *ecoalesc); +#endif +#ifdef ETHTOOL_GWOL +static void getWOLsettings(SK_AC *pAC, int port, struct ethtool_wolinfo *ewol); +#endif +#ifdef ETHTOOL_SWOL +static int setWOLsettings(SK_AC *pAC, int port, struct ethtool_wolinfo *ewol); +#endif + +static int getPortNumber(struct net_device *netdev, struct ifreq *ifr); + +/****************************************************************************** + * + * Local Variables + * + *****************************************************************************/ + +struct sk98lin_stats { + char stat_string[ETHT_STATSTRING_LEN]; + int sizeof_stat; + int stat_offset; +}; + +static struct sk98lin_stats sk98lin_etht_stats_port0[] = { + { "rx_packets" , SK98LIN_STAT(PnmiStruct.Stat[0].StatRxOkCts) }, + { "tx_packets" , SK98LIN_STAT(PnmiStruct.Stat[0].StatTxOkCts) }, + { "rx_bytes" , SK98LIN_STAT(PnmiStruct.Stat[0].StatRxOctetsOkCts) }, + { "tx_bytes" , SK98LIN_STAT(PnmiStruct.Stat[0].StatTxOctetsOkCts) }, + { "rx_errors" , SK98LIN_STAT(PnmiStruct.InErrorsCts) }, + { "tx_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatTxSingleCollisionCts) }, + { "rx_dropped" , SK98LIN_STAT(PnmiStruct.RxNoBufCts) }, + { "tx_dropped" , SK98LIN_STAT(PnmiStruct.TxNoBufCts) }, + { "multicasts" , SK98LIN_STAT(PnmiStruct.Stat[0].StatRxMulticastOkCts) }, + { "collisions" , SK98LIN_STAT(PnmiStruct.Stat[0].StatTxSingleCollisionCts) }, + { "rx_length_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatRxRuntCts) }, + { "rx_buffer_overflow_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatRxFifoOverflowCts) }, + { "rx_crc_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatRxFcsCts) }, + { "rx_frame_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatRxFramingCts) }, + { "rx_too_short_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatRxShortsCts) }, + { "rx_too_long_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatRxTooLongCts) }, + { "rx_carrier_extension_errors", SK98LIN_STAT(PnmiStruct.Stat[0].StatRxCextCts) }, + { "rx_symbol_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatRxSymbolCts) }, + { "rx_llc_mac_size_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatRxIRLengthCts) }, + { "rx_carrier_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatRxCarrierCts) }, + { "rx_jabber_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatRxJabberCts) }, + { "rx_missed_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatRxMissedCts) }, + { "tx_abort_collision_errors" , SK98LIN_STAT(stats.tx_aborted_errors) }, + { "tx_carrier_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatTxCarrierCts) }, + { "tx_buffer_underrun_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatTxFifoUnderrunCts) }, + { "tx_heartbeat_errors" , SK98LIN_STAT(PnmiStruct.Stat[0].StatTxCarrierCts) } , + { "tx_window_errors" , SK98LIN_STAT(stats.tx_window_errors) } +}; + +static struct sk98lin_stats sk98lin_etht_stats_port1[] = { + { "rx_packets" , SK98LIN_STAT(PnmiStruct.Stat[1].StatRxOkCts) }, + { "tx_packets" , SK98LIN_STAT(PnmiStruct.Stat[1].StatTxOkCts) }, + { "rx_bytes" , SK98LIN_STAT(PnmiStruct.Stat[1].StatRxOctetsOkCts) }, + { "tx_bytes" , SK98LIN_STAT(PnmiStruct.Stat[1].StatTxOctetsOkCts) }, + { "rx_errors" , SK98LIN_STAT(PnmiStruct.InErrorsCts) }, + { "tx_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatTxSingleCollisionCts) }, + { "rx_dropped" , SK98LIN_STAT(PnmiStruct.RxNoBufCts) }, + { "tx_dropped" , SK98LIN_STAT(PnmiStruct.TxNoBufCts) }, + { "multicasts" , SK98LIN_STAT(PnmiStruct.Stat[1].StatRxMulticastOkCts) }, + { "collisions" , SK98LIN_STAT(PnmiStruct.Stat[1].StatTxSingleCollisionCts) }, + { "rx_length_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatRxRuntCts) }, + { "rx_buffer_overflow_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatRxFifoOverflowCts) }, + { "rx_crc_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatRxFcsCts) }, + { "rx_frame_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatRxFramingCts) }, + { "rx_too_short_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatRxShortsCts) }, + { "rx_too_long_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatRxTooLongCts) }, + { "rx_carrier_extension_errors", SK98LIN_STAT(PnmiStruct.Stat[1].StatRxCextCts) }, + { "rx_symbol_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatRxSymbolCts) }, + { "rx_llc_mac_size_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatRxIRLengthCts) }, + { "rx_carrier_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatRxCarrierCts) }, + { "rx_jabber_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatRxJabberCts) }, + { "rx_missed_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatRxMissedCts) }, + { "tx_abort_collision_errors" , SK98LIN_STAT(stats.tx_aborted_errors) }, + { "tx_carrier_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatTxCarrierCts) }, + { "tx_buffer_underrun_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatTxFifoUnderrunCts) }, + { "tx_heartbeat_errors" , SK98LIN_STAT(PnmiStruct.Stat[1].StatTxCarrierCts) } , + { "tx_window_errors" , SK98LIN_STAT(stats.tx_window_errors) } +}; + +#define SK98LIN_STATS_LEN sizeof(sk98lin_etht_stats_port0) / sizeof(struct sk98lin_stats) + +static int nbrBlinkQuarterSeconds; +static int currentPortIndex; +static SK_BOOL isLocateNICrunning = SK_FALSE; +static SK_BOOL isDualNetCard = SK_FALSE; +static SK_BOOL doSwitchLEDsOn = SK_FALSE; +static SK_BOOL boardWasDown[2] = { SK_FALSE, SK_FALSE }; +static struct timer_list locateNICtimer; + +/****************************************************************************** + * + * Global Functions + * + *****************************************************************************/ + +/***************************************************************************** + * + * SkEthIoctl - IOCTL entry point for all ethtool queries + * + * Description: + * Any IOCTL request that has to deal with the ethtool command tool is + * dispatched via this function. + * + * Returns: + * ==0: everything fine, no error + * !=0: the return value is the error code of the failure + */ +int SkEthIoctl( +struct net_device *netdev, /* the pointer to netdev structure */ +struct ifreq *ifr) /* what interface the request refers to? */ +{ + DEV_NET *pNet = (DEV_NET*) netdev->priv; + SK_AC *pAC = pNet->pAC; + void *pAddr = ifr->ifr_data; + int port = getPortNumber(netdev, ifr); + SK_PNMI_STRUCT_DATA *pPnmiStruct = &pAC->PnmiStruct; + SK_U32 Size = sizeof(SK_PNMI_STRUCT_DATA); + SK_U32 cmd; + struct sk98lin_stats *sk98lin_etht_stats = + (port == 0) ? sk98lin_etht_stats_port0 : sk98lin_etht_stats_port1; + + if (get_user(cmd, (uint32_t *) pAddr)) { + return -EFAULT; + } + + switch(cmd) { +#ifdef ETHTOOL_GSET + case ETHTOOL_GSET: { + struct ethtool_cmd ecmd = { ETHTOOL_GSET }; + getSettings(pAC, port, &ecmd); + if(copy_to_user(pAddr, &ecmd, sizeof(ecmd))) { + return -EFAULT; + } + return 0; + } + break; +#endif +#ifdef ETHTOOL_SSET + case ETHTOOL_SSET: { + struct ethtool_cmd ecmd; + if(copy_from_user(&ecmd, pAddr, sizeof(ecmd))) { + return -EFAULT; + } + return setSettings(pAC, port, &ecmd); + } + break; +#endif +#ifdef ETHTOOL_GDRVINFO + case ETHTOOL_GDRVINFO: { + struct ethtool_drvinfo drvinfo = { ETHTOOL_GDRVINFO }; + getDriverInfo(pAC, port, &drvinfo); + if(copy_to_user(pAddr, &drvinfo, sizeof(drvinfo))) { + return -EFAULT; + } + return 0; + } + break; +#endif +#ifdef ETHTOOL_GSTRINGS + case ETHTOOL_GSTRINGS: { + struct ethtool_gstrings gstrings = { ETHTOOL_GSTRINGS }; + char *strings = NULL; + int err = 0; + if(copy_from_user(&gstrings, pAddr, sizeof(gstrings))) { + return -EFAULT; + } + switch(gstrings.string_set) { +#ifdef ETHTOOL_GSTATS + case ETH_SS_STATS: { + int i; + gstrings.len = SK98LIN_STATS_LEN; + if ((strings = kmalloc(SK98LIN_STATS_LEN*ETHT_STATSTRING_LEN,GFP_KERNEL)) == NULL) { + return -ENOMEM; + } + for(i=0; i < SK98LIN_STATS_LEN; i++) { + memcpy(&strings[i * ETHT_STATSTRING_LEN], + &(sk98lin_etht_stats[i].stat_string), + ETHT_STATSTRING_LEN); + } + } + break; +#endif + default: + return -EOPNOTSUPP; + } + if(copy_to_user(pAddr, &gstrings, sizeof(gstrings))) { + err = -EFAULT; + } + pAddr = (void *) ((unsigned long int) pAddr + offsetof(struct ethtool_gstrings, data)); + if(!err && copy_to_user(pAddr, strings, gstrings.len * ETH_GSTRING_LEN)) { + err = -EFAULT; + } + kfree(strings); + return err; + } +#endif +#ifdef ETHTOOL_GSTATS + case ETHTOOL_GSTATS: { + struct { + struct ethtool_stats eth_stats; + uint64_t data[SK98LIN_STATS_LEN]; + } stats = { {ETHTOOL_GSTATS, SK98LIN_STATS_LEN} }; + int i; + + if (netif_running(pAC->dev[port])) { + SkPnmiGetStruct(pAC, pAC->IoBase, pPnmiStruct, &Size, port); + } + for(i = 0; i < SK98LIN_STATS_LEN; i++) { + if (netif_running(pAC->dev[port])) { + stats.data[i] = (sk98lin_etht_stats[i].sizeof_stat == + sizeof(uint64_t)) ? + *(uint64_t *)((char *)pAC + + sk98lin_etht_stats[i].stat_offset) : + *(uint32_t *)((char *)pAC + + sk98lin_etht_stats[i].stat_offset); + } else { + stats.data[i] = (sk98lin_etht_stats[i].sizeof_stat == + sizeof(uint64_t)) ? (uint64_t) 0 : (uint32_t) 0; + } + } + if(copy_to_user(pAddr, &stats, sizeof(stats))) { + return -EFAULT; + } + return 0; + } +#endif +#ifdef ETHTOOL_PHYS_ID + case ETHTOOL_PHYS_ID: { + struct ethtool_value blinkSecs; + if(copy_from_user(&blinkSecs, pAddr, sizeof(blinkSecs))) { + return -EFAULT; + } + return startLocateNIC(pAC, port, &blinkSecs); + } +#endif +#ifdef ETHTOOL_GPAUSEPARAM + case ETHTOOL_GPAUSEPARAM: { + struct ethtool_pauseparam epause = { ETHTOOL_GPAUSEPARAM }; + getPauseParams(pAC, port, &epause); + if(copy_to_user(pAddr, &epause, sizeof(epause))) { + return -EFAULT; + } + return 0; + } +#endif +#ifdef ETHTOOL_SPAUSEPARAM + case ETHTOOL_SPAUSEPARAM: { + struct ethtool_pauseparam epause; + if(copy_from_user(&epause, pAddr, sizeof(epause))) { + return -EFAULT; + } + return setPauseParams(pAC, port, &epause); + } +#endif +#ifdef ETHTOOL_GSG + case ETHTOOL_GSG: { + struct ethtool_value edata = { ETHTOOL_GSG }; + edata.data = (netdev->features & NETIF_F_SG) != 0; + if (copy_to_user(pAddr, &edata, sizeof(edata))) { + return -EFAULT; + } + return 0; + } +#endif +#ifdef ETHTOOL_SSG + case ETHTOOL_SSG: { + struct ethtool_value edata; + if (copy_from_user(&edata, pAddr, sizeof(edata))) { + return -EFAULT; + } + if (pAC->ChipsetType) { /* Don't handle if Genesis */ + if (edata.data) { + netdev->features |= NETIF_F_SG; + } else { + netdev->features &= ~NETIF_F_SG; + } + } + return 0; + } +#endif +#ifdef ETHTOOL_GRXCSUM + case ETHTOOL_GRXCSUM: { + struct ethtool_value edata = { ETHTOOL_GRXCSUM }; + edata.data = pAC->RxPort[port].UseRxCsum; + if (copy_to_user(pAddr, &edata, sizeof(edata))) { + return -EFAULT; + } + return 0; + } +#endif +#ifdef ETHTOOL_SRXCSUM + case ETHTOOL_SRXCSUM: { + struct ethtool_value edata; + if (copy_from_user(&edata, pAddr, sizeof(edata))) { + return -EFAULT; + } + pAC->RxPort[port].UseRxCsum = edata.data; + return 0; + } +#endif +#ifdef ETHTOOL_GTXCSUM + case ETHTOOL_GTXCSUM: { + struct ethtool_value edata = { ETHTOOL_GTXCSUM }; + edata.data = ((netdev->features & NETIF_F_IP_CSUM) != 0); + if (copy_to_user(pAddr, &edata, sizeof(edata))) { + return -EFAULT; + } + return 0; + } +#endif +#ifdef ETHTOOL_STXCSUM + case ETHTOOL_STXCSUM: { + struct ethtool_value edata; + if (copy_from_user(&edata, pAddr, sizeof(edata))) { + return -EFAULT; + } + if (pAC->ChipsetType) { /* Don't handle if Genesis */ + if (edata.data) { + netdev->features |= NETIF_F_IP_CSUM; + } else { + netdev->features &= ~NETIF_F_IP_CSUM; + } + } + return 0; + } +#endif +#ifdef ETHTOOL_NWAY_RST + case ETHTOOL_NWAY_RST: { + if(netif_running(netdev)) { + (*netdev->stop)(netdev); + (*netdev->open)(netdev); + } + return 0; + } +#endif +#ifdef NETIF_F_TSO +#ifdef ETHTOOL_GTSO + case ETHTOOL_GTSO: { + struct ethtool_value edata = { ETHTOOL_GTSO }; + edata.data = (netdev->features & NETIF_F_TSO) != 0; + if (copy_to_user(pAddr, &edata, sizeof(edata))) { + return -EFAULT; + } + return 0; + } +#endif +#ifdef ETHTOOL_STSO + case ETHTOOL_STSO: { + struct ethtool_value edata; + if (CHIP_ID_YUKON_2(pAC)) { + if (copy_from_user(&edata, pAddr, sizeof(edata))) { + return -EFAULT; + } + if (edata.data) { + netdev->features |= NETIF_F_TSO; + } else { + netdev->features &= ~NETIF_F_TSO; + } + return 0; + } + return -EOPNOTSUPP; + } +#endif +#endif +#ifdef ETHTOOL_GCOALESCE + case ETHTOOL_GCOALESCE: { + struct ethtool_coalesce ecoalesc = { ETHTOOL_GCOALESCE }; + getModerationParams(pAC, port, &ecoalesc); + if(copy_to_user(pAddr, &ecoalesc, sizeof(ecoalesc))) { + return -EFAULT; + } + return 0; + } +#endif +#ifdef ETHTOOL_SCOALESCE + case ETHTOOL_SCOALESCE: { + struct ethtool_coalesce ecoalesc; + if(copy_from_user(&ecoalesc, pAddr, sizeof(ecoalesc))) { + return -EFAULT; + } + return setModerationParams(pAC, port, &ecoalesc); + } +#endif +#ifdef ETHTOOL_GWOL + case ETHTOOL_GWOL: { + struct ethtool_wolinfo ewol = { ETHTOOL_GWOL }; + getWOLsettings(pAC, port, &ewol); + if(copy_to_user(pAddr, &ewol, sizeof(ewol))) { + return -EFAULT; + } + return 0; + } +#endif +#ifdef ETHTOOL_SWOL + case ETHTOOL_SWOL: { + struct ethtool_wolinfo ewol; + if(copy_from_user(&ewol, pAddr, sizeof(ewol))) { + return -EFAULT; + } + return setWOLsettings(pAC, port, &ewol); + } +#endif + default: + return -EOPNOTSUPP; + } +} /* SkEthIoctl() */ /****************************************************************************** * @@ -72,6 +522,7 @@ * *****************************************************************************/ +#ifdef ETHTOOL_GSET /***************************************************************************** * * getSettings - retrieves the current settings of the selected adapter @@ -81,15 +532,15 @@ * This configuration involves a)speed, b)duplex and c)autoneg plus * a number of other variables. * - * Returns: always 0 + * Returns: N/A * */ -static int getSettings(struct net_device *dev, struct ethtool_cmd *ecmd) +static void getSettings( +SK_AC *pAC, /* pointer to adapter control context */ +int port, /* the port of the selected adapter */ +struct ethtool_cmd *ecmd) /* mandatory command structure for results */ { - const DEV_NET *pNet = netdev_priv(dev); - int port = pNet->PortNr; - const SK_AC *pAC = pNet->pAC; - const SK_GEPORT *pPort = &pAC->GIni.GP[port]; + SK_GEPORT *pPort = &pAC->GIni.GP[port]; static int DuplexAutoNegConfMap[9][3]= { { -1 , -1 , -1 }, @@ -102,6 +553,7 @@ { SK_LMODE_AUTOSENSE , -1 , -1 }, { SK_LMODE_INDETERMINATED, -1 , -1 } }; + static int SpeedConfMap[6][2] = { { 0 , -1 }, { SK_LSPEED_AUTO , -1 }, @@ -110,6 +562,7 @@ { SK_LSPEED_1000MBPS , SPEED_1000 }, { SK_LSPEED_INDETERMINATED, -1 } }; + static int AdvSpeedMap[6][2] = { { 0 , -1 }, { SK_LSPEED_AUTO , -1 }, @@ -137,12 +590,10 @@ if (pAC->GIni.GIChipId == CHIP_ID_YUKON) { ecmd->supported &= ~(SUPPORTED_1000baseT_Half); } -#ifdef CHIP_ID_YUKON_FE if (pAC->GIni.GIChipId == CHIP_ID_YUKON_FE) { ecmd->supported &= ~(SUPPORTED_1000baseT_Half); ecmd->supported &= ~(SUPPORTED_1000baseT_Full); } -#endif } if (pAC->GIni.GP[0].PLinkSpeed != SK_LSPEED_AUTO) { ecmd->advertising = AdvSpeedMap[pPort->PLinkSpeed][1]; @@ -152,26 +603,18 @@ } else { ecmd->advertising = ecmd->supported; } - - if (ecmd->autoneg == AUTONEG_ENABLE) + if (ecmd->autoneg == AUTONEG_ENABLE) { ecmd->advertising |= ADVERTISED_Autoneg; + } } else { ecmd->port = PORT_FIBRE; - ecmd->supported = SUPP_FIBRE_ALL; - ecmd->advertising = ADV_FIBRE_ALL; + ecmd->supported = (SUPP_FIBRE_ALL); + ecmd->advertising = (ADV_FIBRE_ALL); } - return 0; -} - -/* - * MIB infrastructure uses instance value starting at 1 - * based on board and port. - */ -static inline u32 pnmiInstance(const DEV_NET *pNet) -{ - return 1 + (pNet->pAC->RlmtNets == 2) + pNet->PortNr; } +#endif +#ifdef ETHTOOL_SSET /***************************************************************************** * * setSettings - configures the settings of a selected adapter @@ -181,422 +624,710 @@ * c)autonegotiation. * * Returns: - * 0: everything fine, no error - * <0: the return value is the error code of the failure + * ==0: everything fine, no error + * !=0: the return value is the error code of the failure */ -static int setSettings(struct net_device *dev, struct ethtool_cmd *ecmd) +static int setSettings( +SK_AC *pAC, /* pointer to adapter control context */ +int port, /* the port of the selected adapter */ +struct ethtool_cmd *ecmd) /* command structure containing settings */ { - DEV_NET *pNet = netdev_priv(dev); - SK_AC *pAC = pNet->pAC; - u32 instance; - char buf[4]; - int len = 1; + DEV_NET *pNet = (DEV_NET *) pAC->dev[port]->priv; + SK_U32 Instance; + char Buf[4]; + unsigned int Len = 1; + int Ret; - if (ecmd->speed != SPEED_10 && ecmd->speed != SPEED_100 - && ecmd->speed != SPEED_1000) - return -EINVAL; - - if (ecmd->duplex != DUPLEX_HALF && ecmd->duplex != DUPLEX_FULL) - return -EINVAL; + if (port == 0) { + Instance = (pAC->RlmtNets == 2) ? 1 : 2; + } else { + Instance = (pAC->RlmtNets == 2) ? 2 : 3; + } - if (ecmd->autoneg != AUTONEG_DISABLE && ecmd->autoneg != AUTONEG_ENABLE) - return -EINVAL; + if (((ecmd->autoneg == AUTONEG_DISABLE) || (ecmd->autoneg == AUTONEG_ENABLE)) && + ((ecmd->duplex == DUPLEX_FULL) || (ecmd->duplex == DUPLEX_HALF))) { + if (ecmd->autoneg == AUTONEG_DISABLE) { + if (ecmd->duplex == DUPLEX_FULL) { + *Buf = (char) SK_LMODE_FULL; + } else { + *Buf = (char) SK_LMODE_HALF; + } + } else { + if (ecmd->duplex == DUPLEX_FULL) { + *Buf = (char) SK_LMODE_AUTOFULL; + } else { + *Buf = (char) SK_LMODE_AUTOHALF; + } + } - if (ecmd->autoneg == AUTONEG_DISABLE) - *buf = (ecmd->duplex == DUPLEX_FULL) - ? SK_LMODE_FULL : SK_LMODE_HALF; - else - *buf = (ecmd->duplex == DUPLEX_FULL) - ? SK_LMODE_AUTOFULL : SK_LMODE_AUTOHALF; + Ret = SkPnmiSetVar(pAC, pAC->IoBase, OID_SKGE_LINK_MODE, + &Buf, &Len, Instance, pNet->NetNr); - instance = pnmiInstance(pNet); - if (SkPnmiSetVar(pAC, pAC->IoBase, OID_SKGE_LINK_MODE, - &buf, &len, instance, pNet->NetNr) != SK_PNMI_ERR_OK) - return -EINVAL; - - switch(ecmd->speed) { - case SPEED_1000: - *buf = SK_LSPEED_1000MBPS; - break; - case SPEED_100: - *buf = SK_LSPEED_100MBPS; - break; - case SPEED_10: - *buf = SK_LSPEED_10MBPS; + if (Ret != SK_PNMI_ERR_OK) { + return -EINVAL; + } } - if (SkPnmiSetVar(pAC, pAC->IoBase, OID_SKGE_SPEED_MODE, - &buf, &len, instance, pNet->NetNr) != SK_PNMI_ERR_OK) - return -EINVAL; + if ((ecmd->speed == SPEED_1000) || + (ecmd->speed == SPEED_100) || + (ecmd->speed == SPEED_10)) { + if (ecmd->speed == SPEED_1000) { + *Buf = (char) SK_LSPEED_1000MBPS; + } else if (ecmd->speed == SPEED_100) { + *Buf = (char) SK_LSPEED_100MBPS; + } else { + *Buf = (char) SK_LSPEED_10MBPS; + } + Ret = SkPnmiSetVar(pAC, pAC->IoBase, OID_SKGE_SPEED_MODE, + &Buf, &Len, Instance, pNet->NetNr); + + if (Ret != SK_PNMI_ERR_OK) { + return -EINVAL; + } + } else { + return -EINVAL; + } return 0; } +#endif +#ifdef ETHTOOL_GPAUSEPARAM /***************************************************************************** * - * getDriverInfo - returns generic driver and adapter information + * getPauseParams - retrieves the pause parameters * * Description: - * Generic driver information is returned via this function, such as - * the name of the driver, its version and and firmware version. - * In addition to this, the location of the selected adapter is - * returned as a bus info string (e.g. '01:05.0'). - * + * All current pause parameters of a selected adapter are placed + * in the passed ethtool_pauseparam structure and are returned. + * * Returns: N/A * */ -static void getDriverInfo(struct net_device *dev, struct ethtool_drvinfo *info) +static void getPauseParams( +SK_AC *pAC, /* pointer to adapter control context */ +int port, /* the port of the selected adapter */ +struct ethtool_pauseparam *epause) /* pause parameter struct for result */ { - const DEV_NET *pNet = netdev_priv(dev); - const SK_AC *pAC = pNet->pAC; - char vers[32]; - - snprintf(vers, sizeof(vers)-1, VER_STRING "(v%d.%d)", - (pAC->GIni.GIPciHwRev >> 4) & 0xf, pAC->GIni.GIPciHwRev & 0xf); - - strlcpy(info->driver, DRIVER_FILE_NAME, sizeof(info->driver)); - strcpy(info->version, vers); - strcpy(info->fw_version, "N/A"); - strlcpy(info->bus_info, pci_name(pAC->PciDev), ETHTOOL_BUSINFO_LEN); -} - -/* - * Ethtool statistics support. - */ -static const char StringsStats[][ETH_GSTRING_LEN] = { - "rx_packets", "tx_packets", - "rx_bytes", "tx_bytes", - "rx_errors", "tx_errors", - "rx_dropped", "tx_dropped", - "multicasts", "collisions", - "rx_length_errors", "rx_buffer_overflow_errors", - "rx_crc_errors", "rx_frame_errors", - "rx_too_short_errors", "rx_too_long_errors", - "rx_carrier_extension_errors", "rx_symbol_errors", - "rx_llc_mac_size_errors", "rx_carrier_errors", - "rx_jabber_errors", "rx_missed_errors", - "tx_abort_collision_errors", "tx_carrier_errors", - "tx_buffer_underrun_errors", "tx_heartbeat_errors", - "tx_window_errors", -}; + SK_GEPORT *pPort = &pAC->GIni.GP[port]; -static int getStatsCount(struct net_device *dev) -{ - return ARRAY_SIZE(StringsStats); -} + epause->rx_pause = 0; + epause->tx_pause = 0; -static void getStrings(struct net_device *dev, u32 stringset, u8 *data) -{ - switch(stringset) { - case ETH_SS_STATS: - memcpy(data, *StringsStats, sizeof(StringsStats)); - break; + if (pPort->PFlowCtrlMode == SK_FLOW_MODE_LOC_SEND) { + epause->tx_pause = 1; + } + if ((pPort->PFlowCtrlMode == SK_FLOW_MODE_SYMMETRIC) || + (pPort->PFlowCtrlMode == SK_FLOW_MODE_SYM_OR_REM)) { + epause->tx_pause = 1; + epause->rx_pause = 1; } -} -static void getEthtoolStats(struct net_device *dev, - struct ethtool_stats *stats, u64 *data) -{ - const DEV_NET *pNet = netdev_priv(dev); - const SK_AC *pAC = pNet->pAC; - const SK_PNMI_STRUCT_DATA *pPnmiStruct = &pAC->PnmiStruct; - - *data++ = pPnmiStruct->Stat[0].StatRxOkCts; - *data++ = pPnmiStruct->Stat[0].StatTxOkCts; - *data++ = pPnmiStruct->Stat[0].StatRxOctetsOkCts; - *data++ = pPnmiStruct->Stat[0].StatTxOctetsOkCts; - *data++ = pPnmiStruct->InErrorsCts; - *data++ = pPnmiStruct->Stat[0].StatTxSingleCollisionCts; - *data++ = pPnmiStruct->RxNoBufCts; - *data++ = pPnmiStruct->TxNoBufCts; - *data++ = pPnmiStruct->Stat[0].StatRxMulticastOkCts; - *data++ = pPnmiStruct->Stat[0].StatTxSingleCollisionCts; - *data++ = pPnmiStruct->Stat[0].StatRxRuntCts; - *data++ = pPnmiStruct->Stat[0].StatRxFifoOverflowCts; - *data++ = pPnmiStruct->Stat[0].StatRxFcsCts; - *data++ = pPnmiStruct->Stat[0].StatRxFramingCts; - *data++ = pPnmiStruct->Stat[0].StatRxShortsCts; - *data++ = pPnmiStruct->Stat[0].StatRxTooLongCts; - *data++ = pPnmiStruct->Stat[0].StatRxCextCts; - *data++ = pPnmiStruct->Stat[0].StatRxSymbolCts; - *data++ = pPnmiStruct->Stat[0].StatRxIRLengthCts; - *data++ = pPnmiStruct->Stat[0].StatRxCarrierCts; - *data++ = pPnmiStruct->Stat[0].StatRxJabberCts; - *data++ = pPnmiStruct->Stat[0].StatRxMissedCts; - *data++ = pAC->stats.tx_aborted_errors; - *data++ = pPnmiStruct->Stat[0].StatTxCarrierCts; - *data++ = pPnmiStruct->Stat[0].StatTxFifoUnderrunCts; - *data++ = pPnmiStruct->Stat[0].StatTxCarrierCts; - *data++ = pAC->stats.tx_window_errors; + if ((epause->rx_pause == 0) && (epause->tx_pause == 0)) { + epause->autoneg = SK_FALSE; + } else { + epause->autoneg = SK_TRUE; + } } +#endif - +#ifdef ETHTOOL_SPAUSEPARAM /***************************************************************************** * - * toggleLeds - Changes the LED state of an adapter + * setPauseParams - configures the pause parameters of an adapter * * Description: - * This function changes the current state of all LEDs of an adapter so - * that it can be located by a user. - * - * Returns: N/A + * This function sets the Rx or Tx pause parameters * + * Returns: + * ==0: everything fine, no error + * !=0: the return value is the error code of the failure */ -static void toggleLeds(DEV_NET *pNet, int on) +static int setPauseParams( +SK_AC *pAC, /* pointer to adapter control context */ +int port, /* the port of the selected adapter */ +struct ethtool_pauseparam *epause) /* pause parameter struct with params */ { - SK_AC *pAC = pNet->pAC; - int port = pNet->PortNr; - void __iomem *io = pAC->IoBase; - - if (pAC->GIni.GIGenesis) { - SK_OUT8(io, MR_ADDR(port,LNK_LED_REG), - on ? SK_LNK_ON : SK_LNK_OFF); - SkGeYellowLED(pAC, io, - on ? (LED_ON >> 1) : (LED_OFF >> 1)); - SkGeXmitLED(pAC, io, MR_ADDR(port,RX_LED_INI), - on ? SK_LED_TST : SK_LED_DIS); - - if (pAC->GIni.GP[port].PhyType == SK_PHY_BCOM) - SkXmPhyWrite(pAC, io, port, PHY_BCOM_P_EXT_CTRL, - on ? PHY_B_PEC_LED_ON : PHY_B_PEC_LED_OFF); - else if (pAC->GIni.GP[port].PhyType == SK_PHY_LONE) - SkXmPhyWrite(pAC, io, port, PHY_LONE_LED_CFG, - on ? 0x0800 : PHY_L_LC_LEDT); - else - SkGeXmitLED(pAC, io, MR_ADDR(port,TX_LED_INI), - on ? SK_LED_TST : SK_LED_DIS); + SK_GEPORT *pPort = &pAC->GIni.GP[port]; + DEV_NET *pNet = (DEV_NET *) pAC->dev[port]->priv; + int PrevSpeedVal = pPort->PLinkSpeedUsed; + + SK_U32 Instance; + char Buf[4]; + int Ret; + SK_BOOL prevAutonegValue = SK_TRUE; + int prevTxPause = 0; + int prevRxPause = 0; + unsigned int Len = 1; + + if (port == 0) { + Instance = (pAC->RlmtNets == 2) ? 1 : 2; + } else { + Instance = (pAC->RlmtNets == 2) ? 2 : 3; + } + + /* + ** we have to determine the current settings to see if + ** the operator requested any modification of the flow + ** control parameters... + */ + if (pPort->PFlowCtrlMode == SK_FLOW_MODE_LOC_SEND) { + prevTxPause = 1; + } + if ((pPort->PFlowCtrlMode == SK_FLOW_MODE_SYMMETRIC) || + (pPort->PFlowCtrlMode == SK_FLOW_MODE_SYM_OR_REM)) { + prevTxPause = 1; + prevRxPause = 1; + } + + if ((prevRxPause == 0) && (prevTxPause == 0)) { + prevAutonegValue = SK_FALSE; + } + + + /* + ** perform modifications regarding the changes + ** requested by the operator + */ + if (epause->autoneg != prevAutonegValue) { + if (epause->autoneg == AUTONEG_DISABLE) { + *Buf = (char) SK_FLOW_MODE_NONE; + } else { + *Buf = (char) SK_FLOW_MODE_SYMMETRIC; + } } else { - const u16 YukLedOn = (PHY_M_LED_MO_DUP(MO_LED_ON) | - PHY_M_LED_MO_10(MO_LED_ON) | - PHY_M_LED_MO_100(MO_LED_ON) | - PHY_M_LED_MO_1000(MO_LED_ON) | - PHY_M_LED_MO_RX(MO_LED_ON)); - const u16 YukLedOff = (PHY_M_LED_MO_DUP(MO_LED_OFF) | - PHY_M_LED_MO_10(MO_LED_OFF) | - PHY_M_LED_MO_100(MO_LED_OFF) | - PHY_M_LED_MO_1000(MO_LED_OFF) | - PHY_M_LED_MO_RX(MO_LED_OFF)); - + if(epause->rx_pause && epause->tx_pause) { + *Buf = (char) SK_FLOW_MODE_SYMMETRIC; + } else if (epause->rx_pause && !epause->tx_pause) { + *Buf = (char) SK_FLOW_MODE_SYM_OR_REM; + } else if(!epause->rx_pause && epause->tx_pause) { + *Buf = (char) SK_FLOW_MODE_LOC_SEND; + } else { + *Buf = (char) SK_FLOW_MODE_NONE; + } + } - SkGmPhyWrite(pAC,io,port,PHY_MARV_LED_CTRL,0); - SkGmPhyWrite(pAC,io,port,PHY_MARV_LED_OVER, - on ? YukLedOn : YukLedOff); + Ret = SkPnmiSetVar(pAC, pAC->IoBase, OID_SKGE_FLOWCTRL_MODE, + &Buf, &Len, Instance, pNet->NetNr); + + if (Ret != SK_PNMI_ERR_OK) { + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_CTRL, + ("ethtool (sk98lin): error changing rx/tx pause (%i)\n", Ret)); + } else { + Len = 1; /* set buffer length to correct value */ } + + /* + ** It may be that autoneg has been disabled! Therefore + ** set the speed to the previously used value... + */ + *Buf = (char) PrevSpeedVal; + + Ret = SkPnmiSetVar(pAC, pAC->IoBase, OID_SKGE_SPEED_MODE, + &Buf, &Len, Instance, pNet->NetNr); + + if (Ret != SK_PNMI_ERR_OK) { + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_CTRL, + ("ethtool (sk98lin): error setting speed (%i)\n", Ret)); + } + return 0; } +#endif +#ifdef ETHTOOL_GCOALESCE /***************************************************************************** * - * skGeBlinkTimer - Changes the LED state of an adapter + * getModerationParams - retrieves the IRQ moderation settings * * Description: - * This function changes the current state of all LEDs of an adapter so - * that it can be located by a user. If the requested time interval for - * this test has elapsed, this function cleans up everything that was - * temporarily setup during the locate NIC test. This involves of course - * also closing or opening any adapter so that the initial board state - * is recovered. + * All current IRQ moderation settings of a selected adapter are placed + * in the passed ethtool_coalesce structure and are returned. * * Returns: N/A * */ -void SkGeBlinkTimer(unsigned long data) +static void getModerationParams( +SK_AC *pAC, /* pointer to adapter control context */ +int port, /* the port of the selected adapter */ +struct ethtool_coalesce *ecoalesc) /* IRQ moderation struct for results */ { - struct net_device *dev = (struct net_device *) data; - DEV_NET *pNet = netdev_priv(dev); - SK_AC *pAC = pNet->pAC; - - toggleLeds(pNet, pAC->LedsOn); + DIM_INFO *Info = &pAC->DynIrqModInfo; + SK_BOOL UseTxIrqModeration = SK_FALSE; + SK_BOOL UseRxIrqModeration = SK_FALSE; + + if (Info->IntModTypeSelect != C_INT_MOD_NONE) { + if (CHIP_ID_YUKON_2(pAC)) { + UseRxIrqModeration = SK_TRUE; + UseTxIrqModeration = SK_TRUE; + } else { + if ((Info->MaskIrqModeration == IRQ_MASK_RX_ONLY) || + (Info->MaskIrqModeration == IRQ_MASK_SP_RX) || + (Info->MaskIrqModeration == IRQ_MASK_RX_TX_SP)) { + UseRxIrqModeration = SK_TRUE; + } + if ((Info->MaskIrqModeration == IRQ_MASK_TX_ONLY) || + (Info->MaskIrqModeration == IRQ_MASK_SP_TX) || + (Info->MaskIrqModeration == IRQ_MASK_RX_TX_SP)) { + UseTxIrqModeration = SK_TRUE; + } + } - pAC->LedsOn = !pAC->LedsOn; - mod_timer(&pAC->BlinkTimer, jiffies + HZ/4); + if (UseRxIrqModeration) { + ecoalesc->rx_coalesce_usecs = 1000000 / Info->MaxModIntsPerSec; + } + if (UseTxIrqModeration) { + ecoalesc->tx_coalesce_usecs = 1000000 / Info->MaxModIntsPerSec; + } + if (Info->IntModTypeSelect == C_INT_MOD_DYNAMIC) { + ecoalesc->rate_sample_interval = Info->DynIrqModSampleInterval; + if (UseRxIrqModeration) { + ecoalesc->use_adaptive_rx_coalesce = 1; + ecoalesc->rx_coalesce_usecs_low = + 1000000 / Info->MaxModIntsPerSecLowerLimit; + ecoalesc->rx_coalesce_usecs_high = + 1000000 / Info->MaxModIntsPerSecUpperLimit; + } + if (UseTxIrqModeration) { + ecoalesc->use_adaptive_tx_coalesce = 1; + ecoalesc->tx_coalesce_usecs_low = + 1000000 / Info->MaxModIntsPerSecLowerLimit; + ecoalesc->tx_coalesce_usecs_high = + 1000000 / Info->MaxModIntsPerSecUpperLimit; + } + } + } } +#endif +#ifdef ETHTOOL_SCOALESCE /***************************************************************************** * - * locateDevice - start the locate NIC feature of the elected adapter + * setModerationParams - configures the IRQ moderation of an adapter * * Description: - * This function is used if the user want to locate a particular NIC. - * All LEDs are regularly switched on and off, so the NIC can easily - * be identified. + * Depending on the desired IRQ moderation parameters, either a) static, + * b) dynamic or c) no moderation is configured. * - * Returns: - * ==0: everything fine, no error, locateNIC test was started - * !=0: one locateNIC test runs already + * Returns: + * ==0: everything fine, no error + * !=0: the return value is the error code of the failure * + * Notes: + * The supported timeframe for the coalesced interrupts ranges from + * 33.333us (30 IntsPerSec) down to 25us (40.000 IntsPerSec). + * Any requested value that is not in this range will abort the request! */ -static int locateDevice(struct net_device *dev, u32 data) +static int setModerationParams( +SK_AC *pAC, /* pointer to adapter control context */ +int port, /* the port of the selected adapter */ +struct ethtool_coalesce *ecoalesc) /* IRQ moderation struct with params */ { - DEV_NET *pNet = netdev_priv(dev); - SK_AC *pAC = pNet->pAC; + DIM_INFO *Info = &pAC->DynIrqModInfo; + int PrevModeration = Info->IntModTypeSelect; - if(!data || data > (u32)(MAX_SCHEDULE_TIMEOUT / HZ)) - data = (u32)(MAX_SCHEDULE_TIMEOUT / HZ); + Info->IntModTypeSelect = C_INT_MOD_NONE; /* initial default */ - /* start blinking */ - pAC->LedsOn = 0; - mod_timer(&pAC->BlinkTimer, jiffies); - msleep_interruptible(data * 1000); - del_timer_sync(&pAC->BlinkTimer); - toggleLeds(pNet, 0); + if ((ecoalesc->rx_coalesce_usecs) || (ecoalesc->tx_coalesce_usecs)) { + if (ecoalesc->rx_coalesce_usecs) { + if ((ecoalesc->rx_coalesce_usecs < 25) || + (ecoalesc->rx_coalesce_usecs > 33333)) { + return -EINVAL; + } + } + if (ecoalesc->tx_coalesce_usecs) { + if ((ecoalesc->tx_coalesce_usecs < 25) || + (ecoalesc->tx_coalesce_usecs > 33333)) { + return -EINVAL; + } + } + if (!CHIP_ID_YUKON_2(pAC)) { + if ((Info->MaskIrqModeration == IRQ_MASK_SP_RX) || + (Info->MaskIrqModeration == IRQ_MASK_SP_TX) || + (Info->MaskIrqModeration == IRQ_MASK_RX_TX_SP)) { + Info->MaskIrqModeration = IRQ_MASK_SP_ONLY; + } + } + Info->IntModTypeSelect = C_INT_MOD_STATIC; + if (ecoalesc->rx_coalesce_usecs) { + Info->MaxModIntsPerSec = + 1000000 / ecoalesc->rx_coalesce_usecs; + if (!CHIP_ID_YUKON_2(pAC)) { + if (Info->MaskIrqModeration == IRQ_MASK_TX_ONLY) { + Info->MaskIrqModeration = IRQ_MASK_TX_RX; + } + if (Info->MaskIrqModeration == IRQ_MASK_SP_ONLY) { + Info->MaskIrqModeration = IRQ_MASK_SP_RX; + } + if (Info->MaskIrqModeration == IRQ_MASK_SP_TX) { + Info->MaskIrqModeration = IRQ_MASK_RX_TX_SP; + } + } else { + Info->MaskIrqModeration = Y2_IRQ_MASK; + } + } + if (ecoalesc->tx_coalesce_usecs) { + Info->MaxModIntsPerSec = + 1000000 / ecoalesc->tx_coalesce_usecs; + if (!CHIP_ID_YUKON_2(pAC)) { + if (Info->MaskIrqModeration == IRQ_MASK_RX_ONLY) { + Info->MaskIrqModeration = IRQ_MASK_TX_RX; + } + if (Info->MaskIrqModeration == IRQ_MASK_SP_ONLY) { + Info->MaskIrqModeration = IRQ_MASK_SP_TX; + } + if (Info->MaskIrqModeration == IRQ_MASK_SP_RX) { + Info->MaskIrqModeration = IRQ_MASK_RX_TX_SP; + } + } else { + Info->MaskIrqModeration = Y2_IRQ_MASK; + } + } + } + if ((ecoalesc->rate_sample_interval) || + (ecoalesc->rx_coalesce_usecs_low) || + (ecoalesc->tx_coalesce_usecs_low) || + (ecoalesc->rx_coalesce_usecs_high)|| + (ecoalesc->tx_coalesce_usecs_high)) { + if (ecoalesc->rate_sample_interval) { + if ((ecoalesc->rate_sample_interval < 1) || + (ecoalesc->rate_sample_interval > 10)) { + return -EINVAL; + } + } + if (ecoalesc->rx_coalesce_usecs_low) { + if ((ecoalesc->rx_coalesce_usecs_low < 25) || + (ecoalesc->rx_coalesce_usecs_low > 33333)) { + return -EINVAL; + } + } + if (ecoalesc->rx_coalesce_usecs_high) { + if ((ecoalesc->rx_coalesce_usecs_high < 25) || + (ecoalesc->rx_coalesce_usecs_high > 33333)) { + return -EINVAL; + } + } + if (ecoalesc->tx_coalesce_usecs_low) { + if ((ecoalesc->tx_coalesce_usecs_low < 25) || + (ecoalesc->tx_coalesce_usecs_low > 33333)) { + return -EINVAL; + } + } + if (ecoalesc->tx_coalesce_usecs_high) { + if ((ecoalesc->tx_coalesce_usecs_high < 25) || + (ecoalesc->tx_coalesce_usecs_high > 33333)) { + return -EINVAL; + } + } - return 0; + Info->IntModTypeSelect = C_INT_MOD_DYNAMIC; + if (ecoalesc->rate_sample_interval) { + Info->DynIrqModSampleInterval = + ecoalesc->rate_sample_interval; + } + if (ecoalesc->rx_coalesce_usecs_low) { + Info->MaxModIntsPerSecLowerLimit = + 1000000 / ecoalesc->rx_coalesce_usecs_low; + } + if (ecoalesc->tx_coalesce_usecs_low) { + Info->MaxModIntsPerSecLowerLimit = + 1000000 / ecoalesc->tx_coalesce_usecs_low; + } + if (ecoalesc->rx_coalesce_usecs_high) { + Info->MaxModIntsPerSecUpperLimit = + 1000000 / ecoalesc->rx_coalesce_usecs_high; + } + if (ecoalesc->tx_coalesce_usecs_high) { + Info->MaxModIntsPerSecUpperLimit = + 1000000 / ecoalesc->tx_coalesce_usecs_high; + } + } + + if ((PrevModeration == C_INT_MOD_NONE) && + (Info->IntModTypeSelect != C_INT_MOD_NONE)) { + SkDimEnableModerationIfNeeded(pAC); + } + if (PrevModeration != C_INT_MOD_NONE) { + SkDimDisableModeration(pAC, PrevModeration); + if (Info->IntModTypeSelect != C_INT_MOD_NONE) { + SkDimEnableModerationIfNeeded(pAC); + } + } + + return 0; } +#endif +#ifdef ETHTOOL_GWOL /***************************************************************************** * - * getPauseParams - retrieves the pause parameters + * getWOLsettings - retrieves the WOL settings of the selected adapter * * Description: - * All current pause parameters of a selected adapter are placed - * in the passed ethtool_pauseparam structure and are returned. + * All current WOL settings of a selected adapter are placed in the + * passed ethtool_wolinfo structure and are returned to the caller. * * Returns: N/A * */ -static void getPauseParams(struct net_device *dev, struct ethtool_pauseparam *epause) +static void getWOLsettings( +SK_AC *pAC, /* pointer to adapter control context */ +int port, /* the port of the selected adapter */ +struct ethtool_wolinfo *ewol) /* mandatory WOL structure for results */ { - DEV_NET *pNet = netdev_priv(dev); - SK_AC *pAC = pNet->pAC; - SK_GEPORT *pPort = &pAC->GIni.GP[pNet->PortNr]; + ewol->supported = pAC->WolInfo.SupportedWolOptions; + ewol->wolopts = pAC->WolInfo.ConfiguredWolOptions; - epause->rx_pause = (pPort->PFlowCtrlMode == SK_FLOW_MODE_SYMMETRIC) || - (pPort->PFlowCtrlMode == SK_FLOW_MODE_SYM_OR_REM); - - epause->tx_pause = epause->rx_pause || (pPort->PFlowCtrlMode == SK_FLOW_MODE_LOC_SEND); - epause->autoneg = epause->rx_pause || epause->tx_pause; + return; } +#endif +#ifdef ETHTOOL_SWOL /***************************************************************************** * - * setPauseParams - configures the pause parameters of an adapter + * setWOLsettings - configures the WOL settings of a selected adapter * * Description: - * This function sets the Rx or Tx pause parameters + * The WOL settings of a selected adapter are configured regarding + * the parameters in the passed ethtool_wolinfo structure. + * Note that currently only wake on magic packet is supported! * * Returns: * ==0: everything fine, no error * !=0: the return value is the error code of the failure */ -static int setPauseParams(struct net_device *dev , struct ethtool_pauseparam *epause) +static int setWOLsettings( +SK_AC *pAC, /* pointer to adapter control context */ +int port, /* the port of the selected adapter */ +struct ethtool_wolinfo *ewol) /* WOL structure containing settings */ { - DEV_NET *pNet = netdev_priv(dev); - SK_AC *pAC = pNet->pAC; - SK_GEPORT *pPort = &pAC->GIni.GP[pNet->PortNr]; - u32 instance = pnmiInstance(pNet); - struct ethtool_pauseparam old; - u8 oldspeed = pPort->PLinkSpeedUsed; - char buf[4]; - int len = 1; - int ret; + if (((ewol->wolopts & WAKE_MAGIC) == WAKE_MAGIC) || (ewol->wolopts == 0)) { + pAC->WolInfo.ConfiguredWolOptions = ewol->wolopts; + return 0; + } + return -EFAULT; +} +#endif - /* - ** we have to determine the current settings to see if - ** the operator requested any modification of the flow - ** control parameters... - */ - getPauseParams(dev, &old); +#ifdef ETHTOOL_GDRVINFO +/***************************************************************************** + * + * getDriverInfo - returns generic driver and adapter information + * + * Description: + * Generic driver information is returned via this function, such as + * the name of the driver, its version and and firmware version. + * In addition to this, the location of the selected adapter is + * returned as a bus info string (e.g. '01:05.0'). + * + * Returns: N/A + * + */ +static void getDriverInfo( +SK_AC *pAC, /* pointer to adapter control context */ +int port, /* the port of the selected adapter */ +struct ethtool_drvinfo *edrvinfo) /* mandatory info structure for results */ +{ + char versionString[32]; - /* - ** perform modifications regarding the changes - ** requested by the operator - */ - if (epause->autoneg != old.autoneg) - *buf = epause->autoneg ? SK_FLOW_MODE_NONE : SK_FLOW_MODE_SYMMETRIC; - else { - if (epause->rx_pause && epause->tx_pause) - *buf = SK_FLOW_MODE_SYMMETRIC; - else if (epause->rx_pause && !epause->tx_pause) - *buf = SK_FLOW_MODE_SYM_OR_REM; - else if (!epause->rx_pause && epause->tx_pause) - *buf = SK_FLOW_MODE_LOC_SEND; - else - *buf = SK_FLOW_MODE_NONE; + snprintf(versionString, 32, "%s (%s)", VER_STRING, PATCHLEVEL); + strncpy(edrvinfo->driver, DRIVER_FILE_NAME , 32); + strncpy(edrvinfo->version, versionString , 32); + strncpy(edrvinfo->fw_version, "N/A", 32); + strncpy(edrvinfo->bus_info, pci_name(pAC->PciDev), 32); + +#ifdef ETHTOOL_GSTATS + edrvinfo->n_stats = SK98LIN_STATS_LEN; +#endif +} +#endif + +#ifdef ETHTOOL_PHYS_ID +/***************************************************************************** + * + * startLocateNIC - start the locate NIC feature of the elected adapter + * + * Description: + * This function is used if the user want to locate a particular NIC. + * All LEDs are regularly switched on and off, so the NIC can easily + * be identified. + * + * Returns: + * ==0: everything fine, no error, locateNIC test was started + * !=0: one locateNIC test runs already + * + */ +static int startLocateNIC( +SK_AC *pAC, /* pointer to adapter control context */ +int port, /* the port of the selected adapter */ +struct ethtool_value *blinkSecs) /* how long the LEDs should blink in seconds */ +{ + struct SK_NET_DEVICE *pDev = pAC->dev[port]; + int OtherPort = (port) ? 0 : 1; + struct SK_NET_DEVICE *pOtherDev = pAC->dev[OtherPort]; + + if (isLocateNICrunning) { + return -EFAULT; } + isLocateNICrunning = SK_TRUE; + currentPortIndex = port; + isDualNetCard = (pDev != pOtherDev) ? SK_TRUE : SK_FALSE; - ret = SkPnmiSetVar(pAC, pAC->IoBase, OID_SKGE_FLOWCTRL_MODE, - &buf, &len, instance, pNet->NetNr); + if (netif_running(pAC->dev[port])) { + boardWasDown[0] = SK_FALSE; + } else { + (*pDev->open)(pDev); + boardWasDown[0] = SK_TRUE; + } - if (ret != SK_PNMI_ERR_OK) { - SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_CTRL, - ("ethtool (sk98lin): error changing rx/tx pause (%i)\n", ret)); - goto err; + if (isDualNetCard) { + if (netif_running(pAC->dev[OtherPort])) { + boardWasDown[1] = SK_FALSE; + } else { + (*pOtherDev->open)(pOtherDev); + boardWasDown[1] = SK_TRUE; + } } - /* - ** It may be that autoneg has been disabled! Therefore - ** set the speed to the previously used value... - */ - if (!epause->autoneg) { - len = 1; - ret = SkPnmiSetVar(pAC, pAC->IoBase, OID_SKGE_SPEED_MODE, - &oldspeed, &len, instance, pNet->NetNr); - if (ret != SK_PNMI_ERR_OK) - SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_CTRL, - ("ethtool (sk98lin): error setting speed (%i)\n", ret)); + if ((blinkSecs->data < 1) || (blinkSecs->data > 30)) { + blinkSecs->data = 3; /* three seconds default */ } - err: - return ret ? -EIO : 0; -} + nbrBlinkQuarterSeconds = 4*blinkSecs->data; -/* Only Yukon supports checksum offload. */ -static int setScatterGather(struct net_device *dev, u32 data) -{ - DEV_NET *pNet = netdev_priv(dev); - SK_AC *pAC = pNet->pAC; + init_timer(&locateNICtimer); + locateNICtimer.function = toggleLeds; + locateNICtimer.data = (unsigned long) pAC; + locateNICtimer.expires = jiffies + HZ; /* initially 1sec */ + add_timer(&locateNICtimer); - if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) - return -EOPNOTSUPP; - return ethtool_op_set_sg(dev, data); + return 0; } -static int setTxCsum(struct net_device *dev, u32 data) +/***************************************************************************** + * + * toggleLeds - Changes the LED state of an adapter + * + * Description: + * This function changes the current state of all LEDs of an adapter so + * that it can be located by a user. If the requested time interval for + * this test has elapsed, this function cleans up everything that was + * temporarily setup during the locate NIC test. This involves of course + * also closing or opening any adapter so that the initial board state + * is recovered. + * + * Returns: N/A + * + */ +static void toggleLeds( +unsigned long ptr) /* holds the pointer to adapter control context */ { - DEV_NET *pNet = netdev_priv(dev); - SK_AC *pAC = pNet->pAC; - - if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) - return -EOPNOTSUPP; + SK_AC *pAC = (SK_AC *) ptr; + int port = currentPortIndex; + SK_IOC IoC = pAC->IoBase; + struct SK_NET_DEVICE *pDev = pAC->dev[port]; + int OtherPort = (port) ? 0 : 1; + struct SK_NET_DEVICE *pOtherDev = pAC->dev[OtherPort]; + + SK_U16 YukLedOn = (PHY_M_LED_MO_DUP(MO_LED_ON) | + PHY_M_LED_MO_10(MO_LED_ON) | + PHY_M_LED_MO_100(MO_LED_ON) | + PHY_M_LED_MO_1000(MO_LED_ON) | + PHY_M_LED_MO_RX(MO_LED_ON)); + SK_U16 YukLedOff = (PHY_M_LED_MO_DUP(MO_LED_OFF) | + PHY_M_LED_MO_10(MO_LED_OFF) | + PHY_M_LED_MO_100(MO_LED_OFF) | + PHY_M_LED_MO_1000(MO_LED_OFF) | + PHY_M_LED_MO_RX(MO_LED_OFF)); + + nbrBlinkQuarterSeconds--; + if (nbrBlinkQuarterSeconds <= 0) { + (*pDev->stop)(pDev); + if (isDualNetCard) { + (*pOtherDev->stop)(pOtherDev); + } - return ethtool_op_set_tx_csum(dev, data); -} + if (!boardWasDown[0]) { + (*pDev->open)(pDev); + } + if (isDualNetCard) { + (*pOtherDev->open)(pOtherDev); + } + isDualNetCard = SK_FALSE; + isLocateNICrunning = SK_FALSE; + return; + } -static u32 getRxCsum(struct net_device *dev) -{ - DEV_NET *pNet = netdev_priv(dev); - SK_AC *pAC = pNet->pAC; + doSwitchLEDsOn = (doSwitchLEDsOn) ? SK_FALSE : SK_TRUE; + if (doSwitchLEDsOn) { + if (pAC->GIni.GIGenesis) { + SK_OUT8(IoC,MR_ADDR(port,LNK_LED_REG),(SK_U8)SK_LNK_ON); + SkGeYellowLED(pAC,IoC,LED_ON >> 1); + SkGeXmitLED(pAC,IoC,MR_ADDR(port,RX_LED_INI),SK_LED_TST); + if (pAC->GIni.GP[port].PhyType == SK_PHY_BCOM) { + SkXmPhyWrite(pAC,IoC,port,PHY_BCOM_P_EXT_CTRL,PHY_B_PEC_LED_ON); + } else if (pAC->GIni.GP[port].PhyType == SK_PHY_LONE) { + SkXmPhyWrite(pAC,IoC,port,PHY_LONE_LED_CFG,0x0800); + } else { + SkGeXmitLED(pAC,IoC,MR_ADDR(port,TX_LED_INI),SK_LED_TST); + } + } else { + SkGmPhyWrite(pAC,IoC,port,PHY_MARV_LED_CTRL,0); + SkGmPhyWrite(pAC,IoC,port,PHY_MARV_LED_OVER,YukLedOn); + } + } else { + if (pAC->GIni.GIGenesis) { + SK_OUT8(IoC,MR_ADDR(port,LNK_LED_REG),(SK_U8)SK_LNK_OFF); + SkGeYellowLED(pAC,IoC,LED_OFF >> 1); + SkGeXmitLED(pAC,IoC,MR_ADDR(port,RX_LED_INI),SK_LED_DIS); + if (pAC->GIni.GP[port].PhyType == SK_PHY_BCOM) { + SkXmPhyWrite(pAC,IoC,port,PHY_BCOM_P_EXT_CTRL,PHY_B_PEC_LED_OFF); + } else if (pAC->GIni.GP[port].PhyType == SK_PHY_LONE) { + SkXmPhyWrite(pAC,IoC,port,PHY_LONE_LED_CFG,PHY_L_LC_LEDT); + } else { + SkGeXmitLED(pAC,IoC,MR_ADDR(port,TX_LED_INI),SK_LED_DIS); + } + } else { + SkGmPhyWrite(pAC,IoC,port,PHY_MARV_LED_CTRL,0); + SkGmPhyWrite(pAC,IoC,port,PHY_MARV_LED_OVER,YukLedOff); + } + } - return pAC->RxPort[pNet->PortNr].RxCsum; -} + locateNICtimer.function = toggleLeds; + locateNICtimer.data = (unsigned long) pAC; + locateNICtimer.expires = jiffies + (HZ/4); /* 250ms */ + add_timer(&locateNICtimer); +} +#endif -static int setRxCsum(struct net_device *dev, u32 data) +/***************************************************************************** + * + * getPortNumber - evaluates the port number of an interface + * + * Description: + * It may be that the current interface refers to one which is located + * on a dual net adapter. Hence, this function will return the correct + * port for further use. + * + * Returns: + * the port number that corresponds to the selected adapter + * + */ +static int getPortNumber( +struct net_device *netdev, /* the pointer to netdev structure */ +struct ifreq *ifr) /* what interface the request refers to? */ { - DEV_NET *pNet = netdev_priv(dev); - SK_AC *pAC = pNet->pAC; - - if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) - return -EOPNOTSUPP; + DEV_NET *pNet = (DEV_NET*) netdev->priv; + SK_AC *pAC = pNet->pAC; - pAC->RxPort[pNet->PortNr].RxCsum = data != 0; + if (pAC->dev[1] != pAC->dev[0]) { + if (!strcmp(pAC->dev[1]->name, ifr->ifr_name)) { + return 1; /* port index 1 */ + } + } return 0; } -struct ethtool_ops SkGeEthtoolOps = { - .get_settings = getSettings, - .set_settings = setSettings, - .get_drvinfo = getDriverInfo, - .get_strings = getStrings, - .get_stats_count = getStatsCount, - .get_ethtool_stats = getEthtoolStats, - .phys_id = locateDevice, - .get_pauseparam = getPauseParams, - .set_pauseparam = setPauseParams, - .get_link = ethtool_op_get_link, - .get_perm_addr = ethtool_op_get_perm_addr, - .get_sg = ethtool_op_get_sg, - .set_sg = setScatterGather, - .get_tx_csum = ethtool_op_get_tx_csum, - .set_tx_csum = setTxCsum, - .get_rx_csum = getRxCsum, - .set_rx_csum = setRxCsum, -}; +/******************************************************************************* + * + * End of file + * + ******************************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/sktwsi.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/sktwsi.c @@ -0,0 +1,1355 @@ +/****************************************************************************** + * + * Name: sktwsi.c + * Project: Gigabit Ethernet Adapters, TWSI-Module + * Version: $Revision: 1.9 $ + * Date: $Date: 2004/12/20 15:10:30 $ + * Purpose: Functions to access Voltage and Temperature Sensor + * + ******************************************************************************/ + +/****************************************************************************** + * + * (C)Copyright 1998-2002 SysKonnect. + * (C)Copyright 2002-2004 Marvell. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * The information in this file is provided "AS IS" without warranty. + * + ******************************************************************************/ + +/* + * TWSI Protocol + */ +#if (defined(DEBUG) || ((!defined(LINT)) && (!defined(SK_SLIM)))) +static const char SysKonnectFileId[] = + "@(#) $Id: sktwsi.c,v 1.9 2004/12/20 15:10:30 rschmidt Exp $ (C) Marvell."; +#endif + +#include "h/skdrv1st.h" /* Driver Specific Definitions */ +#include "h/lm80.h" +#include "h/skdrv2nd.h" /* Adapter Control- and Driver specific Def. */ + +#ifdef __C2MAN__ +/* + TWSI protocol implementation. + + General Description: + + The TWSI protocol is used for the temperature sensors and for + the serial EEPROM which hold the configuration. + + This file covers functions that allow to read write and do + some bulk requests a specified TWSI address. + + The Genesis has 2 TWSI buses. One for the EEPROM which holds + the VPD Data and one for temperature and voltage sensor. + The following picture shows the TWSI buses, TWSI devices and + their control registers. + + Note: The VPD functions are in skvpd.c +. +. PCI Config TWSI Bus for VPD Data: +. +. +------------+ +. | VPD EEPROM | +. +------------+ +. | +. | <-- TWSI +. | +. +-----------+-----------+ +. | | +. +-----------------+ +-----------------+ +. | PCI_VPD_ADR_REG | | PCI_VPD_DAT_REG | +. +-----------------+ +-----------------+ +. +. +. TWSI Bus for LM80 sensor: +. +. +-----------------+ +. | Temperature and | +. | Voltage Sensor | +. | LM80 | +. +-----------------+ +. | +. | +. TWSI --> | +. | +. +----+ +. +-------------->| OR |<--+ +. | +----+ | +. +------+------+ | +. | | | +. +--------+ +--------+ +----------+ +. | B2_I2C | | B2_I2C | | B2_I2C | +. | _CTRL | | _DATA | | _SW | +. +--------+ +--------+ +----------+ +. + The TWSI bus may be driven by the B2_I2C_SW or by the B2_I2C_CTRL + and B2_I2C_DATA registers. + For driver software it is recommended to use the TWSI control and + data register, because TWSI bus timing is done by the ASIC and + an interrupt may be received when the TWSI request is completed. + + Clock Rate Timing: MIN MAX generated by + VPD EEPROM: 50 kHz 100 kHz HW + LM80 over TWSI Ctrl/Data reg. 50 kHz 100 kHz HW + LM80 over B2_I2C_SW register 0 400 kHz SW + + Note: The clock generated by the hardware is dependend on the + PCI clock. If the PCI bus clock is 33 MHz, the I2C/VPD + clock is 50 kHz. + */ +intro() +{} +#endif + +#ifdef SK_DIAG +/* + * TWSI Fast Mode timing values used by the LM80. + * If new devices are added to the TWSI bus the timing values have to be checked. + */ +#ifndef I2C_SLOW_TIMING +#define T_CLK_LOW 1300L /* clock low time in ns */ +#define T_CLK_HIGH 600L /* clock high time in ns */ +#define T_DATA_IN_SETUP 100L /* data in Set-up Time */ +#define T_START_HOLD 600L /* start condition hold time */ +#define T_START_SETUP 600L /* start condition Set-up time */ +#define T_STOP_SETUP 600L /* stop condition Set-up time */ +#define T_BUS_IDLE 1300L /* time the bus must free after Tx */ +#define T_CLK_2_DATA_OUT 900L /* max. clock low to data output valid */ +#else /* I2C_SLOW_TIMING */ +/* TWSI Standard Mode Timing */ +#define T_CLK_LOW 4700L /* clock low time in ns */ +#define T_CLK_HIGH 4000L /* clock high time in ns */ +#define T_DATA_IN_SETUP 250L /* data in Set-up Time */ +#define T_START_HOLD 4000L /* start condition hold time */ +#define T_START_SETUP 4700L /* start condition Set-up time */ +#define T_STOP_SETUP 4000L /* stop condition Set-up time */ +#define T_BUS_IDLE 4700L /* time the bus must free after Tx */ +#endif /* !I2C_SLOW_TIMING */ + +#define NS2BCLK(x) (((x)*125)/10000) + +/* + * TWSI Wire Operations + * + * About I2C_CLK_LOW(): + * + * The Data Direction bit (I2C_DATA_DIR) has to be set to input when setting + * clock to low, to prevent the ASIC and the TWSI data client from driving the + * serial data line simultaneously (ASIC: last bit of a byte = '1', TWSI client + * send an 'ACK'). See also Concentrator Bugreport No. 10192. + */ +#define I2C_DATA_HIGH(IoC) SK_I2C_SET_BIT(IoC, I2C_DATA) +#define I2C_DATA_LOW(IoC) SK_I2C_CLR_BIT(IoC, I2C_DATA) +#define I2C_DATA_OUT(IoC) SK_I2C_SET_BIT(IoC, I2C_DATA_DIR) +#define I2C_DATA_IN(IoC) SK_I2C_CLR_BIT(IoC, I2C_DATA_DIR | I2C_DATA) +#define I2C_CLK_HIGH(IoC) SK_I2C_SET_BIT(IoC, I2C_CLK) +#define I2C_CLK_LOW(IoC) SK_I2C_CLR_BIT(IoC, I2C_CLK | I2C_DATA_DIR) +#define I2C_START_COND(IoC) SK_I2C_CLR_BIT(IoC, I2C_CLK) + +#define NS2CLKT(x) ((x*125L)/10000) + +/*--------------- TWSI Interface Register Functions --------------- */ + +/* + * sending one bit + */ +void SkI2cSndBit( +SK_IOC IoC, /* I/O Context */ +SK_U8 Bit) /* Bit to send */ +{ + I2C_DATA_OUT(IoC); + if (Bit) { + I2C_DATA_HIGH(IoC); + } + else { + I2C_DATA_LOW(IoC); + } + SkDgWaitTime(IoC, NS2BCLK(T_DATA_IN_SETUP)); + I2C_CLK_HIGH(IoC); + SkDgWaitTime(IoC, NS2BCLK(T_CLK_HIGH)); + I2C_CLK_LOW(IoC); +} /* SkI2cSndBit*/ + + +/* + * Signal a start to the TWSI Bus. + * + * A start is signaled when data goes to low in a high clock cycle. + * + * Ends with Clock Low. + * + * Status: not tested + */ +void SkI2cStart( +SK_IOC IoC) /* I/O Context */ +{ + /* Init data and Clock to output lines */ + /* Set Data high */ + I2C_DATA_OUT(IoC); + I2C_DATA_HIGH(IoC); + /* Set Clock high */ + I2C_CLK_HIGH(IoC); + + SkDgWaitTime(IoC, NS2BCLK(T_START_SETUP)); + + /* Set Data Low */ + I2C_DATA_LOW(IoC); + + SkDgWaitTime(IoC, NS2BCLK(T_START_HOLD)); + + /* Clock low without Data to Input */ + I2C_START_COND(IoC); + + SkDgWaitTime(IoC, NS2BCLK(T_CLK_LOW)); +} /* SkI2cStart */ + + +void SkI2cStop( +SK_IOC IoC) /* I/O Context */ +{ + /* Init data and Clock to output lines */ + /* Set Data low */ + I2C_DATA_OUT(IoC); + I2C_DATA_LOW(IoC); + + SkDgWaitTime(IoC, NS2BCLK(T_CLK_2_DATA_OUT)); + + /* Set Clock high */ + I2C_CLK_HIGH(IoC); + + SkDgWaitTime(IoC, NS2BCLK(T_STOP_SETUP)); + + /* + * Set Data High: Do it by setting the Data Line to Input. + * Because of a pull up resistor the Data Line + * floods to high. + */ + I2C_DATA_IN(IoC); + + /* + * When TWSI activity is stopped + * o DATA should be set to input and + * o CLOCK should be set to high! + */ + SkDgWaitTime(IoC, NS2BCLK(T_BUS_IDLE)); +} /* SkI2cStop */ + + +/* + * Receive just one bit via the TWSI bus. + * + * Note: Clock must be set to LOW before calling this function. + * + * Returns The received bit. + */ +int SkI2cRcvBit( +SK_IOC IoC) /* I/O Context */ +{ + int Bit; + SK_U8 I2cSwCtrl; + + /* Init data as input line */ + I2C_DATA_IN(IoC); + + SkDgWaitTime(IoC, NS2BCLK(T_CLK_2_DATA_OUT)); + + I2C_CLK_HIGH(IoC); + + SkDgWaitTime(IoC, NS2BCLK(T_CLK_HIGH)); + + SK_I2C_GET_SW(IoC, &I2cSwCtrl); + + Bit = (I2cSwCtrl & I2C_DATA) ? 1 : 0; + + I2C_CLK_LOW(IoC); + SkDgWaitTime(IoC, NS2BCLK(T_CLK_LOW-T_CLK_2_DATA_OUT)); + + return(Bit); +} /* SkI2cRcvBit */ + + +/* + * Receive an ACK. + * + * returns 0 If acknowledged + * 1 in case of an error + */ +int SkI2cRcvAck( +SK_IOC IoC) /* I/O Context */ +{ + /* + * Received bit must be zero. + */ + return(SkI2cRcvBit(IoC) != 0); +} /* SkI2cRcvAck */ + + +/* + * Send an NACK. + */ +void SkI2cSndNAck( +SK_IOC IoC) /* I/O Context */ +{ + /* + * Received bit must be zero. + */ + SkI2cSndBit(IoC, 1); +} /* SkI2cSndNAck */ + + +/* + * Send an ACK. + */ +void SkI2cSndAck( +SK_IOC IoC) /* I/O Context */ +{ + /* + * Received bit must be zero. + */ + SkI2cSndBit(IoC, 0); +} /* SkI2cSndAck */ + + +/* + * Send one byte to the TWSI device and wait for ACK. + * + * Return acknowleged status. + */ +int SkI2cSndByte( +SK_IOC IoC, /* I/O Context */ +int Byte) /* byte to send */ +{ + int i; + + for (i = 0; i < 8; i++) { + if (Byte & (1<<(7-i))) { + SkI2cSndBit(IoC, 1); + } + else { + SkI2cSndBit(IoC, 0); + } + } + + return(SkI2cRcvAck(IoC)); +} /* SkI2cSndByte */ + + +/* + * Receive one byte and ack it. + * + * Return byte. + */ +int SkI2cRcvByte( +SK_IOC IoC, /* I/O Context */ +int Last) /* Last Byte Flag */ +{ + int i; + int Byte = 0; + + for (i = 0; i < 8; i++) { + Byte <<= 1; + Byte |= SkI2cRcvBit(IoC); + } + + if (Last) { + SkI2cSndNAck(IoC); + } + else { + SkI2cSndAck(IoC); + } + + return(Byte); +} /* SkI2cRcvByte */ + + +/* + * Start dialog and send device address + * + * Return 0 if acknowleged, 1 in case of an error + */ +int SkI2cSndDev( +SK_IOC IoC, /* I/O Context */ +int Addr, /* Device Address */ +int Rw) /* Read / Write Flag */ +{ + SkI2cStart(IoC); + Rw = ~Rw; + Rw &= I2C_WRITE; + return(SkI2cSndByte(IoC, (Addr << 1) | Rw)); +} /* SkI2cSndDev */ + +#endif /* SK_DIAG */ + +/*----------------- TWSI CTRL Register Functions ----------*/ + +/* + * waits for a completion of an TWSI transfer + * + * returns 0: success, transfer completes + * 1: error, transfer does not complete, TWSI transfer + * killed, wait loop terminated. + */ +int SkI2cWait( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +int Event) /* complete event to wait for (I2C_READ or I2C_WRITE) */ +{ + SK_U64 StartTime; + SK_U64 CurrentTime; + SK_U32 I2cCtrl; + + StartTime = SkOsGetTime(pAC); + + do { + CurrentTime = SkOsGetTime(pAC); + + if (CurrentTime - StartTime > SK_TICKS_PER_SEC / 8) { + + SK_I2C_STOP(IoC); +#ifndef SK_DIAG + SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_I2C_E002, SKERR_I2C_E002MSG); +#endif /* !SK_DIAG */ + return(1); + } + + SK_I2C_GET_CTL(IoC, &I2cCtrl); + +#ifdef xYUKON_DBG + printf("StartTime=%lu, CurrentTime=%lu\n", + StartTime, CurrentTime); + if (kbhit()) { + return(1); + } +#endif /* YUKON_DBG */ + + } while ((I2cCtrl & I2C_FLAG) == (SK_U32)Event << 31); + + return(0); +} /* SkI2cWait */ + + +/* + * waits for a completion of an TWSI transfer + * + * Returns + * Nothing + */ +void SkI2cWaitIrq( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC) /* I/O Context */ +{ + SK_SENSOR *pSen; + SK_U64 StartTime; + SK_U32 IrqSrc; + SK_U32 IsTwsiReadyBit; + + IsTwsiReadyBit = CHIP_ID_YUKON_2(pAC) ? Y2_IS_TWSI_RDY : IS_I2C_READY; + + pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens]; + + if (pSen->SenState == SK_SEN_IDLE) { + return; + } + + StartTime = SkOsGetTime(pAC); + + do { + if (SkOsGetTime(pAC) - StartTime > SK_TICKS_PER_SEC / 8) { + + SK_I2C_STOP(IoC); +#ifndef SK_DIAG + SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_I2C_E016, SKERR_I2C_E016MSG); +#endif /* !SK_DIAG */ + return; + } + + SK_IN32(IoC, B0_ISRC, &IrqSrc); + + } while ((IrqSrc & IsTwsiReadyBit) == 0); + + pSen->SenState = SK_SEN_IDLE; + return; +} /* SkI2cWaitIrq */ + +/* + * writes a single byte or 4 bytes into the TWSI device + * + * returns 0: success + * 1: error + */ +int SkI2cWrite( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +SK_U32 I2cData, /* TWSI Data to write */ +int I2cDev, /* TWSI Device Address */ +int I2cDevSize, /* TWSI Device Size (e.g. I2C_025K_DEV or I2C_2K_DEV) */ +int I2cReg, /* TWSI Device Register Address */ +int I2cBurst) /* TWSI Burst Flag */ +{ + SK_OUT32(IoC, B2_I2C_DATA, I2cData); + + SK_I2C_CTL(IoC, I2C_WRITE, I2cDev, I2cDevSize, I2cReg, I2cBurst); + + return(SkI2cWait(pAC, IoC, I2C_WRITE)); +} /* SkI2cWrite*/ + + +#ifdef SK_DIAG +/* + * reads a single byte or 4 bytes from the TWSI device + * + * returns the word read + */ +SK_U32 SkI2cRead( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +int I2cDev, /* TWSI Device Address */ +int I2cDevSize, /* TWSI Device Size (e.g. I2C_025K_DEV or I2C_2K_DEV) */ +int I2cReg, /* TWSI Device Register Address */ +int I2cBurst) /* TWSI Burst Flag */ +{ + SK_U32 Data; + + SK_OUT32(IoC, B2_I2C_DATA, 0); + SK_I2C_CTL(IoC, I2C_READ, I2cDev, I2cDevSize, I2cReg, I2cBurst); + + if (SkI2cWait(pAC, IoC, I2C_READ) != 0) { + w_print("%s\n", SKERR_I2C_E002MSG); + } + + SK_IN32(IoC, B2_I2C_DATA, &Data); + + return(Data); +} /* SkI2cRead */ +#endif /* SK_DIAG */ + + +/* + * read a sensor's value + * + * This function reads a sensor's value from the TWSI sensor chip. The sensor + * is defined by its index into the sensors database in the struct pAC points + * to. + * Returns + * 1 if the read is completed + * 0 if the read must be continued (TWSI Bus still allocated) + */ +int SkI2cReadSensor( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +SK_SENSOR *pSen) /* Sensor to be read */ +{ + if (pSen->SenRead != NULL) { + return((*pSen->SenRead)(pAC, IoC, pSen)); + } + + return(0); /* no success */ +} /* SkI2cReadSensor */ + +/* + * Do the Init state 0 initialization + */ +static int SkI2cInit0( +SK_AC *pAC) /* Adapter Context */ +{ + int i; + SK_SENSOR *pSen; + + /* Begin with first sensor */ + pAC->I2c.CurrSens = 0; + + /* Begin with timeout control for state machine */ + pAC->I2c.TimerMode = SK_TIMER_WATCH_SM; + + /* Set sensor number to zero */ + pAC->I2c.MaxSens = 0; + +#ifndef SK_DIAG + /* Initialize Number of Dummy Reads */ + pAC->I2c.DummyReads = SK_MAX_SENSORS; +#endif /* !SK_DIAG */ + + for (i = 0; i < SK_MAX_SENSORS; i++) { + pSen = &pAC->I2c.SenTable[i]; + + pSen->SenDesc = "unknown"; + pSen->SenType = SK_SEN_UNKNOWN; + pSen->SenThreErrHigh = 0; + pSen->SenThreErrLow = 0; + pSen->SenThreWarnHigh = 0; + pSen->SenThreWarnLow = 0; + pSen->SenReg = LM80_FAN2_IN; + pSen->SenInit = SK_SEN_DYN_INIT_NONE; + pSen->SenValue = 0; + pSen->SenErrFlag = SK_SEN_ERR_NOT_PRESENT; + pSen->SenErrCts = 0; + pSen->SenBegErrTS = 0; + pSen->SenState = SK_SEN_IDLE; + pSen->SenRead = NULL; + pSen->SenDev = 0; + } + + /* Now we are "INIT data"ed */ + pAC->I2c.InitLevel = SK_INIT_DATA; + return(0); +} /* SkI2cInit0*/ + + +/* + * Do the init state 1 initialization + * + * initialize the following register of the LM80: + * Configuration register: + * - START, noINT, activeLOW, noINT#Clear, noRESET, noCI, noGPO#, noINIT + * + * Interrupt Mask Register 1: + * - all interrupts are Disabled (0xff) + * + * Interrupt Mask Register 2: + * - all interrupts are Disabled (0xff) Interrupt modi doesn't matter. + * + * Fan Divisor/RST_OUT register: + * - Divisors set to 1 (bits 00), all others 0s. + * + * OS# Configuration/Temperature resolution Register: + * - all 0s + * + */ +static int SkI2cInit1( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC) /* I/O Context */ +{ + int i; + SK_U8 I2cSwCtrl; + SK_GEPORT *pPrt; /* GIni Port struct pointer */ + SK_SENSOR *pSen; + + if (pAC->I2c.InitLevel != SK_INIT_DATA) { + /* Re-init not needed in TWSI module */ + return(0); + } + + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_EC || + pAC->GIni.GIChipId == CHIP_ID_YUKON_FE) { + /* No sensors on Yukon-EC and Yukon-FE */ + return(0); + } + + /* Set the Direction of TWSI-Data Pin to IN */ + SK_I2C_CLR_BIT(IoC, I2C_DATA_DIR | I2C_DATA); + /* Check for 32-Bit Yukon with Low at TWSI-Data Pin */ + SK_I2C_GET_SW(IoC, &I2cSwCtrl); + + if ((I2cSwCtrl & I2C_DATA) == 0) { + /* this is a 32-Bit board */ + pAC->GIni.GIYukon32Bit = SK_TRUE; + return(0); + } + + /* Check for 64 Bit Yukon without sensors */ + if (SkI2cWrite(pAC, IoC, 0, LM80_ADDR, I2C_025K_DEV, LM80_CFG, 0) != 0) { + return(0); + } + + (void)SkI2cWrite(pAC, IoC, 0xffUL, LM80_ADDR, I2C_025K_DEV, LM80_IMSK_1, 0); + + (void)SkI2cWrite(pAC, IoC, 0xffUL, LM80_ADDR, I2C_025K_DEV, LM80_IMSK_2, 0); + + (void)SkI2cWrite(pAC, IoC, 0, LM80_ADDR, I2C_025K_DEV, LM80_FAN_CTRL, 0); + + (void)SkI2cWrite(pAC, IoC, 0, LM80_ADDR, I2C_025K_DEV, LM80_TEMP_CTRL, 0); + + (void)SkI2cWrite(pAC, IoC, (SK_U32)LM80_CFG_START, LM80_ADDR, I2C_025K_DEV, + LM80_CFG, 0); + + /* + * MaxSens has to be updated here, because PhyType is not + * set when performing Init Level 0 + */ + pAC->I2c.MaxSens = 5; + + pPrt = &pAC->GIni.GP[0]; + + if (pAC->GIni.GIGenesis) { + if (pPrt->PhyType == SK_PHY_BCOM) { + if (pAC->GIni.GIMacsFound == 1) { + pAC->I2c.MaxSens += 1; + } + else { + pAC->I2c.MaxSens += 3; + } + } + } + else { + pAC->I2c.MaxSens += 3; + } + + for (i = 0; i < pAC->I2c.MaxSens; i++) { + pSen = &pAC->I2c.SenTable[i]; + switch (i) { + case 0: + pSen->SenDesc = "Temperature"; + pSen->SenType = SK_SEN_TEMP; + pSen->SenThreErrHigh = SK_SEN_TEMP_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_TEMP_HIGH_WARN; + pSen->SenThreWarnLow = SK_SEN_TEMP_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_TEMP_LOW_ERR; + pSen->SenReg = LM80_TEMP_IN; + break; + case 1: + pSen->SenDesc = "Voltage PCI"; + pSen->SenType = SK_SEN_VOLT; + pSen->SenThreErrHigh = SK_SEN_PCI_5V_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_PCI_5V_HIGH_WARN; + if (pAC->GIni.GIPciBus != SK_PEX_BUS) { + pSen->SenThreWarnLow = SK_SEN_PCI_5V_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_PCI_5V_LOW_ERR; + } + else { + pSen->SenThreWarnLow = 0; + pSen->SenThreErrLow = 0; + } + pSen->SenReg = LM80_VT0_IN; + break; + case 2: + pSen->SenDesc = "Voltage PCI-IO"; + pSen->SenType = SK_SEN_VOLT; + pSen->SenThreErrHigh = SK_SEN_PCI_IO_5V_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_PCI_IO_5V_HIGH_WARN; + if (pAC->GIni.GIPciBus != SK_PEX_BUS) { + pSen->SenThreWarnLow = SK_SEN_PCI_IO_3V3_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_PCI_IO_3V3_LOW_ERR; + } + else { + pSen->SenThreWarnLow = 0; + pSen->SenThreErrLow = 0; + } + pSen->SenReg = LM80_VT1_IN; + pSen->SenInit = SK_SEN_DYN_INIT_PCI_IO; + break; + case 3: + if (pAC->GIni.GIGenesis) { + pSen->SenDesc = "Voltage ASIC"; + } + else { + pSen->SenDesc = "Voltage VMAIN"; + } + pSen->SenType = SK_SEN_VOLT; + pSen->SenThreErrHigh = SK_SEN_VDD_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_VDD_HIGH_WARN; + pSen->SenThreWarnLow = SK_SEN_VDD_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_VDD_LOW_ERR; + pSen->SenReg = LM80_VT2_IN; + break; + case 4: + if (pAC->GIni.GIGenesis) { + if (pPrt->PhyType == SK_PHY_BCOM) { + pSen->SenDesc = "Voltage PHY A PLL"; + pSen->SenThreErrHigh = SK_SEN_PLL_3V3_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_PLL_3V3_HIGH_WARN; + pSen->SenThreWarnLow = SK_SEN_PLL_3V3_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_PLL_3V3_LOW_ERR; + } + else { + pSen->SenDesc = "Voltage PMA"; + pSen->SenThreErrHigh = SK_SEN_PLL_3V3_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_PLL_3V3_HIGH_WARN; + pSen->SenThreWarnLow = SK_SEN_PLL_3V3_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_PLL_3V3_LOW_ERR; + } + } + else { + pSen->SenDesc = "Voltage VAUX"; + pSen->SenThreErrHigh = SK_SEN_VAUX_3V3_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_VAUX_3V3_HIGH_WARN; + if (pAC->GIni.GIVauxAvail) { + pSen->SenThreWarnLow = SK_SEN_VAUX_3V3_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_VAUX_3V3_LOW_ERR; + } + else { + pSen->SenThreErrLow = 0; + pSen->SenThreWarnLow = 0; + } + } + pSen->SenType = SK_SEN_VOLT; + pSen->SenReg = LM80_VT3_IN; + break; + case 5: + if (CHIP_ID_YUKON_2(pAC)) { + if (pAC->GIni.GIChipRev == 0) { + pSen->SenDesc = "Voltage Core 1V3"; + pSen->SenThreErrHigh = SK_SEN_CORE_1V3_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_CORE_1V3_HIGH_WARN; + pSen->SenThreWarnLow = SK_SEN_CORE_1V3_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_CORE_1V3_LOW_ERR; + } + else { + pSen->SenDesc = "Voltage Core 1V2"; + pSen->SenThreErrHigh = SK_SEN_CORE_1V2_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_CORE_1V2_HIGH_WARN; + pSen->SenThreWarnLow = SK_SEN_CORE_1V2_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_CORE_1V2_LOW_ERR; + } + } + else { + if (pAC->GIni.GIGenesis) { + pSen->SenDesc = "Voltage PHY 2V5"; + pSen->SenThreErrHigh = SK_SEN_PHY_2V5_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_PHY_2V5_HIGH_WARN; + pSen->SenThreWarnLow = SK_SEN_PHY_2V5_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_PHY_2V5_LOW_ERR; + } + else { + pSen->SenDesc = "Voltage Core 1V5"; + pSen->SenThreErrHigh = SK_SEN_CORE_1V5_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_CORE_1V5_HIGH_WARN; + pSen->SenThreWarnLow = SK_SEN_CORE_1V5_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_CORE_1V5_LOW_ERR; + } + } + pSen->SenType = SK_SEN_VOLT; + pSen->SenReg = LM80_VT4_IN; + break; + case 6: + if (CHIP_ID_YUKON_2(pAC)) { + pSen->SenDesc = "Voltage PHY 1V5"; + pSen->SenThreErrHigh = SK_SEN_CORE_1V5_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_CORE_1V5_HIGH_WARN; + if (pAC->GIni.GIPciBus == SK_PEX_BUS) { + pSen->SenThreWarnLow = SK_SEN_CORE_1V5_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_CORE_1V5_LOW_ERR; + } + else { + pSen->SenThreWarnLow = 0; + pSen->SenThreErrLow = 0; + } + } + else { + if (pAC->GIni.GIGenesis) { + pSen->SenDesc = "Voltage PHY B PLL"; + } + else { + pSen->SenDesc = "Voltage PHY 3V3"; + } + pSen->SenThreErrHigh = SK_SEN_PLL_3V3_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_PLL_3V3_HIGH_WARN; + pSen->SenThreWarnLow = SK_SEN_PLL_3V3_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_PLL_3V3_LOW_ERR; + } + pSen->SenType = SK_SEN_VOLT; + pSen->SenReg = LM80_VT5_IN; + break; + case 7: + if (pAC->GIni.GIGenesis) { + pSen->SenDesc = "Speed Fan"; + pSen->SenType = SK_SEN_FAN; + pSen->SenThreErrHigh = SK_SEN_FAN_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_FAN_HIGH_WARN; + pSen->SenThreWarnLow = SK_SEN_FAN_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_FAN_LOW_ERR; + pSen->SenReg = LM80_FAN2_IN; + } + else { + pSen->SenDesc = "Voltage PHY 2V5"; + pSen->SenType = SK_SEN_VOLT; + pSen->SenThreErrHigh = SK_SEN_PHY_2V5_HIGH_ERR; + pSen->SenThreWarnHigh = SK_SEN_PHY_2V5_HIGH_WARN; + pSen->SenThreWarnLow = SK_SEN_PHY_2V5_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_PHY_2V5_LOW_ERR; + pSen->SenReg = LM80_VT6_IN; + } + break; + default: + SK_ERR_LOG(pAC, SK_ERRCL_INIT | SK_ERRCL_SW, + SKERR_I2C_E001, SKERR_I2C_E001MSG); + break; + } + + pSen->SenValue = 0; + pSen->SenErrFlag = SK_SEN_ERR_OK; + pSen->SenErrCts = 0; + pSen->SenBegErrTS = 0; + pSen->SenState = SK_SEN_IDLE; + if (pSen->SenThreWarnLow != 0) { + pSen->SenRead = SkLm80ReadSensor; + } + pSen->SenDev = LM80_ADDR; + } + +#ifndef SK_DIAG + pAC->I2c.DummyReads = pAC->I2c.MaxSens; +#endif /* !SK_DIAG */ + + /* Clear TWSI IRQ */ + SK_OUT32(IoC, B2_I2C_IRQ, I2C_CLR_IRQ); + + /* Now we are I/O initialized */ + pAC->I2c.InitLevel = SK_INIT_IO; + return(0); +} /* SkI2cInit1 */ + + +/* + * Init level 2: Start first sensor read. + */ +static int SkI2cInit2( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC) /* I/O Context */ +{ + int ReadComplete; + SK_SENSOR *pSen; + + if (pAC->I2c.InitLevel != SK_INIT_IO) { + /* ReInit not needed in TWSI module */ + /* Init0 and Init2 not permitted */ + return(0); + } + + pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens]; + + ReadComplete = SkI2cReadSensor(pAC, IoC, pSen); + + if (ReadComplete) { + SK_ERR_LOG(pAC, SK_ERRCL_INIT, SKERR_I2C_E008, SKERR_I2C_E008MSG); + } + + /* Now we are correctly initialized */ + pAC->I2c.InitLevel = SK_INIT_RUN; + + return(0); +} /* SkI2cInit2*/ + + +/* + * Initialize TWSI devices + * + * Get the first voltage value and discard it. + * Go into temperature read mode. A default pointer is not set. + * + * The things to be done depend on the init level in the parameter list: + * Level 0: + * Initialize only the data structures. Do NOT access hardware. + * Level 1: + * Initialize hardware through SK_IN / SK_OUT commands. Do NOT use interrupts. + * Level 2: + * Everything is possible. Interrupts may be used from now on. + * + * return: + * 0 = success + * other = error. + */ +int SkI2cInit( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context needed in levels 1 and 2 */ +int Level) /* Init Level */ +{ + + switch (Level) { + case SK_INIT_DATA: + return(SkI2cInit0(pAC)); + case SK_INIT_IO: + return(SkI2cInit1(pAC, IoC)); + case SK_INIT_RUN: + return(SkI2cInit2(pAC, IoC)); + default: + break; + } + + return(0); +} /* SkI2cInit */ + + +#ifndef SK_DIAG +/* + * Interrupt service function for the TWSI Interface + * + * Clears the Interrupt source + * + * Reads the register and check it for sending a trap. + * + * Starts the timer if necessary. + */ +void SkI2cIsr( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC) /* I/O Context */ +{ + SK_EVPARA Para; + + /* Clear TWSI IRQ */ + SK_OUT32(IoC, B2_I2C_IRQ, I2C_CLR_IRQ); + + Para.Para64 = 0; + SkEventQueue(pAC, SKGE_I2C, SK_I2CEV_IRQ, Para); +} /* SkI2cIsr */ + + +/* + * Check this sensors Value against the threshold and send events. + */ +static void SkI2cCheckSensor( +SK_AC *pAC, /* Adapter Context */ +SK_SENSOR *pSen) +{ + SK_EVPARA ParaLocal; + SK_BOOL TooHigh; /* Is sensor too high? */ + SK_BOOL TooLow; /* Is sensor too low? */ + SK_U64 CurrTime; /* Current Time */ + SK_BOOL DoTrapSend; /* We need to send a trap */ + SK_BOOL DoErrLog; /* We need to log the error */ + SK_BOOL IsError; /* Error occured */ + + /* Check Dummy Reads first */ + if (pAC->I2c.DummyReads > 0) { + pAC->I2c.DummyReads--; + return; + } + + /* Get the current time */ + CurrTime = SkOsGetTime(pAC); + + /* Set para to the most useful setting: The current sensor. */ + ParaLocal.Para64 = (SK_U64)pAC->I2c.CurrSens; + + /* Check the Value against the thresholds. First: Error Thresholds */ + TooHigh = pSen->SenValue > pSen->SenThreErrHigh; + TooLow = pSen->SenValue < pSen->SenThreErrLow; + + IsError = SK_FALSE; + + if (TooHigh || TooLow) { + /* Error condition is satisfied */ + DoTrapSend = SK_TRUE; + DoErrLog = SK_TRUE; + + /* Now error condition is satisfied */ + IsError = SK_TRUE; + + if (pSen->SenErrFlag == SK_SEN_ERR_ERR) { + /* This state is the former one */ + + /* So check first whether we have to send a trap */ + if (pSen->SenLastErrTrapTS + SK_SEN_ERR_TR_HOLD > CurrTime) { + /* + * Do NOT send the Trap. The hold back time + * has to run out first. + */ + DoTrapSend = SK_FALSE; + } + + /* Check now whether we have to log an Error */ + if (pSen->SenLastErrLogTS + SK_SEN_ERR_LOG_HOLD > CurrTime) { + /* + * Do NOT log the error. The hold back time + * has to run out first. + */ + DoErrLog = SK_FALSE; + } + } + else { + /* We came from a different state -> Set Begin Time Stamp */ + pSen->SenBegErrTS = CurrTime; + pSen->SenErrFlag = SK_SEN_ERR_ERR; + } + + if (DoTrapSend) { + /* Set current Time */ + pSen->SenLastErrTrapTS = CurrTime; + pSen->SenErrCts++; + + /* Queue PNMI Event */ + SkEventQueue(pAC, SKGE_PNMI, TooHigh ? + SK_PNMI_EVT_SEN_ERR_UPP : SK_PNMI_EVT_SEN_ERR_LOW, + ParaLocal); + } + + if (DoErrLog) { + /* Set current Time */ + pSen->SenLastErrLogTS = CurrTime; + + if (pSen->SenType == SK_SEN_TEMP) { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E011, SKERR_I2C_E011MSG); + } + else if (pSen->SenType == SK_SEN_VOLT) { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E012, SKERR_I2C_E012MSG); + } + else { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E015, SKERR_I2C_E015MSG); + } + } + } + + /* Check the Value against the thresholds */ + /* 2nd: Warning thresholds */ + TooHigh = pSen->SenValue > pSen->SenThreWarnHigh; + TooLow = pSen->SenValue < pSen->SenThreWarnLow; + + if (!IsError && (TooHigh || TooLow)) { + /* Error condition is satisfied */ + DoTrapSend = SK_TRUE; + DoErrLog = SK_TRUE; + + if (pSen->SenErrFlag == SK_SEN_ERR_WARN) { + /* This state is the former one */ + + /* So check first whether we have to send a trap */ + if (pSen->SenLastWarnTrapTS + SK_SEN_WARN_TR_HOLD > CurrTime) { + /* + * Do NOT send the Trap. The hold back time + * has to run out first. + */ + DoTrapSend = SK_FALSE; + } + + /* Check now whether we have to log an Error */ + if (pSen->SenLastWarnLogTS + SK_SEN_WARN_LOG_HOLD > CurrTime) { + /* + * Do NOT log the error. The hold back time + * has to run out first. + */ + DoErrLog = SK_FALSE; + } + } + else { + /* We came from a different state -> Set Begin Time Stamp */ + pSen->SenBegWarnTS = CurrTime; + pSen->SenErrFlag = SK_SEN_ERR_WARN; + } + + if (DoTrapSend) { + /* Set current Time */ + pSen->SenLastWarnTrapTS = CurrTime; + pSen->SenWarnCts++; + + /* Queue PNMI Event */ + SkEventQueue(pAC, SKGE_PNMI, TooHigh ? + SK_PNMI_EVT_SEN_WAR_UPP : SK_PNMI_EVT_SEN_WAR_LOW, ParaLocal); + } + + if (DoErrLog) { + /* Set current Time */ + pSen->SenLastWarnLogTS = CurrTime; + + if (pSen->SenType == SK_SEN_TEMP) { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E009, SKERR_I2C_E009MSG); + } + else if (pSen->SenType == SK_SEN_VOLT) { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E010, SKERR_I2C_E010MSG); + } + else { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E014, SKERR_I2C_E014MSG); + } + } + } + + /* Check for NO error at all */ + if (!IsError && !TooHigh && !TooLow) { + /* Set o.k. Status if no error and no warning condition */ + pSen->SenErrFlag = SK_SEN_ERR_OK; + } + + /* End of check against the thresholds */ + + if (pSen->SenInit == SK_SEN_DYN_INIT_PCI_IO) { + /* Bug fix AF: 16.Aug.2001: Correct the init base of LM80 sensor */ + pSen->SenInit = SK_SEN_DYN_INIT_NONE; + + if (pSen->SenValue > SK_SEN_PCI_IO_RANGE_LIMITER) { + /* 5V PCI-IO Voltage */ + pSen->SenThreWarnLow = SK_SEN_PCI_IO_5V_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_PCI_IO_5V_LOW_ERR; + } + else { + /* 3.3V PCI-IO Voltage */ + pSen->SenThreWarnHigh = SK_SEN_PCI_IO_3V3_HIGH_WARN; + pSen->SenThreErrHigh = SK_SEN_PCI_IO_3V3_HIGH_ERR; + } + } + +#ifdef TEST_ONLY + /* Dynamic thresholds also for VAUX of LM80 sensor */ + if (pSen->SenInit == SK_SEN_DYN_INIT_VAUX) { + + pSen->SenInit = SK_SEN_DYN_INIT_NONE; + + /* 3.3V VAUX Voltage */ + if (pSen->SenValue > SK_SEN_VAUX_RANGE_LIMITER) { + pSen->SenThreWarnLow = SK_SEN_VAUX_3V3_LOW_WARN; + pSen->SenThreErrLow = SK_SEN_VAUX_3V3_LOW_ERR; + } + /* 0V VAUX Voltage */ + else { + pSen->SenThreWarnHigh = SK_SEN_VAUX_0V_WARN_ERR; + pSen->SenThreErrHigh = SK_SEN_VAUX_0V_WARN_ERR; + } + } + + /* Check initialization state: the VIO Thresholds need adaption */ + if (!pSen->SenInit && pSen->SenReg == LM80_VT1_IN && + pSen->SenValue > SK_SEN_WARNLOW2C && + pSen->SenValue < SK_SEN_WARNHIGH2) { + + pSen->SenThreErrLow = SK_SEN_ERRLOW2C; + pSen->SenThreWarnLow = SK_SEN_WARNLOW2C; + pSen->SenInit = SK_TRUE; + } + + if (!pSen->SenInit && pSen->SenReg == LM80_VT1_IN && + pSen->SenValue > SK_SEN_WARNLOW2 && + pSen->SenValue < SK_SEN_WARNHIGH2C) { + + pSen->SenThreErrHigh = SK_SEN_ERRHIGH2C; + pSen->SenThreWarnHigh = SK_SEN_WARNHIGH2C; + pSen->SenInit = SK_TRUE; + } +#endif + + if (pSen->SenInit != SK_SEN_DYN_INIT_NONE) { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_I2C_E013, SKERR_I2C_E013MSG); + } +} /* SkI2cCheckSensor */ + + +/* + * The only Event to be served is the timeout event + * + */ +int SkI2cEvent( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +SK_U32 Event, /* Module specific Event */ +SK_EVPARA Para) /* Event specific Parameter */ +{ + int ReadComplete; + SK_SENSOR *pSen; + SK_U32 Time; + SK_EVPARA ParaLocal; + int i; + + /* New case: no sensors */ + if (pAC->I2c.MaxSens == 0) { + return(0); + } + + switch (Event) { + case SK_I2CEV_IRQ: + pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens]; + ReadComplete = SkI2cReadSensor(pAC, IoC, pSen); + + if (ReadComplete) { + /* Check sensor against defined thresholds */ + SkI2cCheckSensor(pAC, pSen); + + /* Increment Current sensor and set appropriate Timeout */ + pAC->I2c.CurrSens++; + if (pAC->I2c.CurrSens >= pAC->I2c.MaxSens) { + pAC->I2c.CurrSens = 0; + Time = SK_I2C_TIM_LONG; + } + else { + Time = SK_I2C_TIM_SHORT; + } + + /* Start Timer */ + ParaLocal.Para64 = (SK_U64)0; + + pAC->I2c.TimerMode = SK_TIMER_NEW_GAUGING; + + SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, Time, + SKGE_I2C, SK_I2CEV_TIM, ParaLocal); + } + else { + /* Start Timer */ + ParaLocal.Para64 = (SK_U64)0; + + pAC->I2c.TimerMode = SK_TIMER_WATCH_SM; + + SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, SK_I2C_TIM_WATCH, + SKGE_I2C, SK_I2CEV_TIM, ParaLocal); + } + break; + case SK_I2CEV_TIM: + if (pAC->I2c.TimerMode == SK_TIMER_NEW_GAUGING) { + + ParaLocal.Para64 = (SK_U64)0; + SkTimerStop(pAC, IoC, &pAC->I2c.SenTimer); + + pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens]; + ReadComplete = SkI2cReadSensor(pAC, IoC, pSen); + + if (ReadComplete) { + /* Check sensor against defined thresholds */ + SkI2cCheckSensor(pAC, pSen); + + /* Increment Current sensor and set appropriate Timeout */ + pAC->I2c.CurrSens++; + if (pAC->I2c.CurrSens == pAC->I2c.MaxSens) { + pAC->I2c.CurrSens = 0; + Time = SK_I2C_TIM_LONG; + } + else { + Time = SK_I2C_TIM_SHORT; + } + + /* Start Timer */ + ParaLocal.Para64 = (SK_U64)0; + + pAC->I2c.TimerMode = SK_TIMER_NEW_GAUGING; + + SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, Time, + SKGE_I2C, SK_I2CEV_TIM, ParaLocal); + } + } + else { + pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens]; + pSen->SenErrFlag = SK_SEN_ERR_FAULTY; + SK_I2C_STOP(IoC); + + /* Increment Current sensor and set appropriate Timeout */ + pAC->I2c.CurrSens++; + if (pAC->I2c.CurrSens == pAC->I2c.MaxSens) { + pAC->I2c.CurrSens = 0; + Time = SK_I2C_TIM_LONG; + } + else { + Time = SK_I2C_TIM_SHORT; + } + + /* Start Timer */ + ParaLocal.Para64 = (SK_U64)0; + + pAC->I2c.TimerMode = SK_TIMER_NEW_GAUGING; + + SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, Time, + SKGE_I2C, SK_I2CEV_TIM, ParaLocal); + } + break; + case SK_I2CEV_CLEAR: + for (i = 0; i < SK_MAX_SENSORS; i++) { + pSen = &pAC->I2c.SenTable[i]; + + pSen->SenErrFlag = SK_SEN_ERR_OK; + pSen->SenErrCts = 0; + pSen->SenWarnCts = 0; + pSen->SenBegErrTS = 0; + pSen->SenBegWarnTS = 0; + pSen->SenLastErrTrapTS = (SK_U64)0; + pSen->SenLastErrLogTS = (SK_U64)0; + pSen->SenLastWarnTrapTS = (SK_U64)0; + pSen->SenLastWarnLogTS = (SK_U64)0; + } + break; + default: + SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_I2C_E006, SKERR_I2C_E006MSG); + } + + return(0); +} /* SkI2cEvent*/ + +#endif /* !SK_DIAG */ + --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/sky2.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/sky2.c @@ -0,0 +1,2737 @@ +/****************************************************************************** + * + * Name: sky2.c + * Project: Yukon2 specific functions and implementations + * Version: $Revision: 1.35.2.33 $ + * Date: $Date: 2005/06/17 14:09:32 $ + * Purpose: The main driver source module + * + *****************************************************************************/ + +/****************************************************************************** + * + * (C)Copyright 1998-2002 SysKonnect GmbH. + * (C)Copyright 2002-2005 Marvell. + * + * Driver for Marvell Yukon/2 chipset and SysKonnect Gigabit Ethernet + * Server Adapters. + * + * Author: Ralph Roesler (rroesler@syskonnect.de) + * Mirko Lindner (mlindner@syskonnect.de) + * + * Address all question to: linux@syskonnect.de + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * The information in this file is provided "AS IS" without warranty. + * + *****************************************************************************/ + +#include "h/skdrv1st.h" +#include "h/skdrv2nd.h" +#include + +/****************************************************************************** + * + * Local Function Prototypes + * + *****************************************************************************/ + +static void InitPacketQueues(SK_AC *pAC,int Port); +static void GiveTxBufferToHw(SK_AC *pAC,SK_IOC IoC,int Port); +static void GiveRxBufferToHw(SK_AC *pAC,SK_IOC IoC,int Port,SK_PACKET *pPacket); +static void FillReceiveTableYukon2(SK_AC *pAC,SK_IOC IoC,int Port); +static SK_BOOL HandleReceives(SK_AC *pAC,int Port,SK_U16 Len,SK_U32 FrameStatus,SK_U16 Tcp1,SK_U16 Tcp2,SK_U32 Tist,SK_U16 Vlan); +static void CheckForSendComplete(SK_AC *pAC,SK_IOC IoC,int Port,SK_PKT_QUEUE *pPQ,SK_LE_TABLE *pLETab,unsigned int Done); +static void UnmapAndFreeTxPktBuffer(SK_AC *pAC,SK_PACKET *pSkPacket,int TxPort); +static SK_BOOL AllocateAndInitLETables(SK_AC *pAC); +static SK_BOOL AllocatePacketBuffersYukon2(SK_AC *pAC); +static void FreeLETables(SK_AC *pAC); +static void FreePacketBuffers(SK_AC *pAC); +static SK_BOOL AllocAndMapRxBuffer(SK_AC *pAC,SK_PACKET *pSkPacket,int Port); +#ifdef CONFIG_SK98LIN_NAPI +static SK_BOOL HandleStatusLEs(SK_AC *pAC,int *WorkDone,int WorkToDo); +#else +static SK_BOOL HandleStatusLEs(SK_AC *pAC); +#endif + +extern void SkGeCheckTimer (DEV_NET *pNet); +extern void SkLocalEventQueue( SK_AC *pAC, + SK_U32 Class, + SK_U32 Event, + SK_U32 Param1, + SK_U32 Param2, + SK_BOOL Flag); +extern void SkLocalEventQueue64( SK_AC *pAC, + SK_U32 Class, + SK_U32 Event, + SK_U64 Param, + SK_BOOL Flag); + +/****************************************************************************** + * + * Local Variables + * + *****************************************************************************/ + +#define MAX_NBR_RX_BUFFERS_IN_HW 0x15 +static SK_U8 NbrRxBuffersInHW; + +#if defined(__i386__) || defined(__x86_64__) +#if defined(__x86_64__) +#define FLUSH_OPC(le) +/* #define FLUSH_OPC(le) \ */ +/* cache0 = ((long *)(le))[0]; \ */ +/* cache1 = ((long *)(le))[1]; \ */ +/* ((volatile long *)(le))[0] = cache0; \ */ +/* ((volatile long *)(le))[1] = cache1; */ +#else +#define FLUSH_OPC(le) +#endif +#else +#define FLUSH_OPC(le) +#endif + +/****************************************************************************** + * + * Global Functions + * + *****************************************************************************/ + +int SkY2Xmit( struct sk_buff *skb, struct SK_NET_DEVICE *dev); + +/***************************************************************************** + * + * SkY2RestartStatusUnit - restarts teh status unit + * + * Description: + * Reenables the status unit after any De-Init (e.g. when altering + * the sie of the MTU via 'ifconfig a.b.c.d mtu xxx') + * + * Returns: N/A + */ +void SkY2RestartStatusUnit( +SK_AC *pAC) /* pointer to adapter control context */ +{ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("==> SkY2RestartStatusUnit\n")); + + /* + ** It might be that the TX timer is not started. Therefore + ** it is initialized here -> to be more investigated! + */ + SK_OUT32(pAC->IoBase, STAT_TX_TIMER_INI, HW_MS_TO_TICKS(pAC,10)); + + pAC->StatusLETable.Done = 0; + pAC->StatusLETable.Put = 0; + pAC->StatusLETable.HwPut = 0; + SkGeY2InitStatBmu(pAC, pAC->IoBase, &pAC->StatusLETable); + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("<== SkY2RestartStatusUnit\n")); +} + +/***************************************************************************** + * + * SkY2RlmtSend - sends out a single RLMT notification + * + * Description: + * This function sends out an RLMT frame + * + * Returns: + * > 0 - on succes: the number of bytes in the message + * = 0 - on resource shortage: this frame sent or dropped, now + * the ring is full ( -> set tbusy) + * < 0 - on failure: other problems ( -> return failure to upper layers) + */ +int SkY2RlmtSend ( +SK_AC *pAC, /* pointer to adapter control context */ +int PortNr, /* index of port the packet(s) shall be send to */ +struct sk_buff *pMessage) /* pointer to send-message */ +{ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("=== SkY2RlmtSend\n")); +#if 0 + return -1; // temporarily do not send out RLMT frames +#endif + skb_shinfo(pMessage)->nr_frags = (2*MAX_SKB_FRAGS) + PortNr; + return(SkY2Xmit(pMessage, pAC->dev[PortNr])); // SkY2Xmit needs device +} + +/***************************************************************************** + * + * SkY2AllocateResources - Allocates all required resources for Yukon2 + * + * Description: + * This function allocates all memory needed for the Yukon2. + * It maps also RX buffers to the LETables and initializes the + * status list element table. + * + * Returns: + * SK_TRUE, if all resources could be allocated and setup succeeded + * SK_FALSE, if an error + */ +SK_BOOL SkY2AllocateResources ( +SK_AC *pAC) /* pointer to adapter control context */ +{ + int CurrMac; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("==> SkY2AllocateResources\n")); + + /* + ** Initialize the packet queue variables first + */ + for (CurrMac = 0; CurrMac < pAC->GIni.GIMacsFound; CurrMac++) { + InitPacketQueues(pAC, CurrMac); + } + + /* + ** Get sufficient memory for the LETables + */ + if (!AllocateAndInitLETables(pAC)) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, + SK_DBGCAT_INIT | SK_DBGCAT_DRV_ERROR, + ("No memory for LETable.\n")); + return(SK_FALSE); + } + + /* + ** Allocate and intialize memory for both RX and TX + ** packet and fragment buffers. On an error, free + ** previously allocated LETable memory and quit. + */ + if (!AllocatePacketBuffersYukon2(pAC)) { + FreeLETables(pAC); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, + SK_DBGCAT_INIT | SK_DBGCAT_DRV_ERROR, + ("No memory for Packetbuffers.\n")); + return(SK_FALSE); + } + + /* + ** Rx and Tx LE tables will be initialized in SkGeOpen() + ** + ** It might be that the TX timer is not started. Therefore + ** it is initialized here -> to be more investigated! + */ + SK_OUT32(pAC->IoBase, STAT_TX_TIMER_INI, HW_MS_TO_TICKS(pAC,10)); + SkGeY2InitStatBmu(pAC, pAC->IoBase, &pAC->StatusLETable); + + pAC->MaxUnusedRxLeWorking = MAX_UNUSED_RX_LE_WORKING; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("<== SkY2AllocateResources\n")); + + return (SK_TRUE); +} + +/***************************************************************************** + * + * SkY2FreeResources - Frees previously allocated resources of Yukon2 + * + * Description: + * This function frees all previously allocated memory of the Yukon2. + * + * Returns: N/A + */ +void SkY2FreeResources ( +SK_AC *pAC) /* pointer to adapter control context */ +{ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("==> SkY2FreeResources\n")); + + FreeLETables(pAC); + FreePacketBuffers(pAC); + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("<== SkY2FreeResources\n")); +} + +/***************************************************************************** + * + * SkY2AllocateRxBuffers - Allocates the receive buffers for a port + * + * Description: + * This function allocated all the RX buffers of the Yukon2. + * + * Returns: N/A + */ +void SkY2AllocateRxBuffers ( +SK_AC *pAC, /* pointer to adapter control context */ +SK_IOC IoC, /* I/O control context */ +int Port) /* port index of RX */ +{ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("==> SkY2AllocateRxBuffers (Port %c)\n", Port)); + + FillReceiveTableYukon2(pAC, IoC, Port); + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("<== SkY2AllocateRxBuffers\n")); +} + +/***************************************************************************** + * + * SkY2FreeRxBuffers - Free's all allocates RX buffers of + * + * Description: + * This function frees all RX buffers of the Yukon2 for a single port + * + * Returns: N/A + */ +void SkY2FreeRxBuffers ( +SK_AC *pAC, /* pointer to adapter control context */ +SK_IOC IoC, /* I/O control context */ +int Port) /* port index of RX */ +{ + SK_PACKET *pSkPacket; + unsigned long Flags; /* for POP/PUSH macros */ + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("==> SkY2FreeRxBuffers (Port %c)\n", Port)); + + if (pAC->RxPort[Port].ReceivePacketTable != NULL) { + POP_FIRST_PKT_FROM_QUEUE(&pAC->RxPort[Port].RxQ_working, pSkPacket); + while (pSkPacket != NULL) { + if ((pSkPacket->pFrag) != NULL) { + pci_unmap_page(pAC->PciDev, + (dma_addr_t) pSkPacket->pFrag->pPhys, + pSkPacket->pFrag->FragLen - 2, + PCI_DMA_FROMDEVICE); + + DEV_KFREE_SKB_ANY(pSkPacket->pMBuf); + pSkPacket->pMBuf = NULL; + pSkPacket->pFrag->pPhys = (SK_U64) 0; + pSkPacket->pFrag->pVirt = NULL; + } + PUSH_PKT_AS_LAST_IN_QUEUE(&pAC->RxPort[Port].RxQ_waiting, pSkPacket); + POP_FIRST_PKT_FROM_QUEUE(&pAC->RxPort[Port].RxQ_working, pSkPacket); + } + } + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("<== SkY2FreeRxBuffers\n")); +} + +/***************************************************************************** + * + * SkY2FreeTxBuffers - Free's any currently maintained Tx buffer + * + * Description: + * This function frees the TX buffers of the Yukon2 for a single port + * which might be in use by a transmit action + * + * Returns: N/A + */ +void SkY2FreeTxBuffers ( +SK_AC *pAC, /* pointer to adapter control context */ +SK_IOC IoC, /* I/O control context */ +int Port) /* port index of TX */ +{ + SK_PACKET *pSkPacket; + SK_FRAG *pSkFrag; + unsigned long Flags; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("==> SkY2FreeTxBuffers (Port %c)\n", Port)); + + if (pAC->TxPort[Port][0].TransmitPacketTable != NULL) { + POP_FIRST_PKT_FROM_QUEUE(&pAC->TxPort[Port][0].TxAQ_working, pSkPacket); + while (pSkPacket != NULL) { + if ((pSkFrag = pSkPacket->pFrag) != NULL) { + UnmapAndFreeTxPktBuffer(pAC, pSkPacket, Port); + } + PUSH_PKT_AS_LAST_IN_QUEUE(&pAC->TxPort[Port][0].TxQ_free, pSkPacket); + POP_FIRST_PKT_FROM_QUEUE(&pAC->TxPort[Port][0].TxAQ_working, pSkPacket); + } +#ifdef USE_SYNC_TX_QUEUE + POP_FIRST_PKT_FROM_QUEUE(&pAC->TxPort[Port][0].TxSQ_working, pSkPacket); + while (pSkPacket != NULL) { + if ((pSkFrag = pSkPacket->pFrag) != NULL) { + UnmapAndFreeTxPktBuffer(pAC, pSkPacket, Port); + } + PUSH_PKT_AS_LAST_IN_QUEUE(&pAC->TxPort[Port][0].TxQ_free, pSkPacket); + POP_FIRST_PKT_FROM_QUEUE(&pAC->TxPort[Port][0].TxSQ_working, pSkPacket); + } +#endif + } + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("<== SkY2FreeTxBuffers\n")); +} + +/***************************************************************************** + * + * SkY2Isr - handle a receive IRQ for all yukon2 cards + * + * Description: + * This function is called when a receive IRQ is set. (only for yukon2) + * HandleReceives does the deferred processing of all outstanding + * interrupt operations. + * + * Returns: N/A + */ +SkIsrRetVar SkY2Isr ( +int irq, /* the irq we have received (might be shared!) */ +void *dev_id, /* current device id */ +struct pt_regs *ptregs) /* not used by our driver */ +{ + struct SK_NET_DEVICE *dev = (struct SK_NET_DEVICE *)dev_id; + DEV_NET *pNet = (DEV_NET*) dev->priv; + SK_AC *pAC = pNet->pAC; + SK_U32 IntSrc; + unsigned long Flags; +#ifndef CONFIG_SK98LIN_NAPI + SK_BOOL handledStatLE = SK_FALSE; +#else + SK_BOOL SetIntMask = SK_FALSE; +#endif + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("==> SkY2Isr\n")); + + SK_IN32(pAC->IoBase, B0_Y2_SP_ISRC2, &IntSrc); + + if ((IntSrc == 0) && (!pNet->NetConsoleMode)){ + SK_OUT32(pAC->IoBase, B0_Y2_SP_ICR, 2); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("No Interrupt\n ==> SkY2Isr\n")); + return SkIsrRetNone; + + } + +#ifdef Y2_RECOVERY + if (pNet->InRecover) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("Already in recover\n ==> SkY2Isr\n")); + SK_OUT32(pAC->IoBase, B0_Y2_SP_ICR, 2); + return SkIsrRetNone; + } +#endif + +#ifdef CONFIG_SK98LIN_NAPI + if (netif_rx_schedule_prep(pAC->dev[0])) { + pAC->GIni.GIValIrqMask &= ~(Y2_IS_STAT_BMU); + SK_OUT32(pAC->IoBase, B0_IMSK, pAC->GIni.GIValIrqMask); + SetIntMask = SK_TRUE; + __netif_rx_schedule(pAC->dev[0]); + } + + if (netif_rx_schedule_prep(pAC->dev[1])) { + if (!SetIntMask) { + pAC->GIni.GIValIrqMask &= ~(Y2_IS_STAT_BMU); + SK_OUT32(pAC->IoBase, B0_IMSK, pAC->GIni.GIValIrqMask); + } + __netif_rx_schedule(pAC->dev[1]); + } +#else + handledStatLE = HandleStatusLEs(pAC); +#endif + + /* + ** Check for Special Interrupts + */ + if ((IntSrc & ~Y2_IS_STAT_BMU) || pAC->CheckQueue || pNet->TimerExpired) { + pAC->CheckQueue = SK_FALSE; + spin_lock_irqsave(&pAC->SlowPathLock, Flags); +#ifdef Y2_RECOVERY + if (pNet->TimerExpired) { + SkGeCheckTimer(pNet); + } +#endif + SkGeSirqIsr(pAC, pAC->IoBase, IntSrc); + SkEventDispatcher(pAC, pAC->IoBase); + spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); + } + + /* Speed enhancement for a2 chipsets */ + if (HW_FEATURE(pAC, HWF_WA_DEV_42)) { + spin_lock_irqsave(&pAC->SetPutIndexLock, Flags); + SkGeY2SetPutIndex(pAC, pAC->IoBase, Y2_PREF_Q_ADDR(Q_XA1,0), &pAC->TxPort[0][0].TxALET); + SkGeY2SetPutIndex(pAC, pAC->IoBase, Y2_PREF_Q_ADDR(Q_R1,0), &pAC->RxPort[0].RxLET); + spin_unlock_irqrestore(&pAC->SetPutIndexLock, Flags); + } + + /* + ** Reenable interrupts and signal end of ISR + */ + SK_OUT32(pAC->IoBase, B0_Y2_SP_ICR, 2); + + /* + ** Stop and restart TX timer in case a Status LE was handled + */ +#ifndef CONFIG_SK98LIN_NAPI + if ((HW_FEATURE(pAC, HWF_WA_DEV_43_418)) && (handledStatLE)) { + SK_OUT8(pAC->IoBase, STAT_TX_TIMER_CTRL, TIM_STOP); + SK_OUT8(pAC->IoBase, STAT_TX_TIMER_CTRL, TIM_START); + } +#endif + + if (!(IS_Q_EMPTY(&(pAC->TxPort[0][TX_PRIO_LOW].TxAQ_waiting)))) { + GiveTxBufferToHw(pAC, pAC->IoBase, 0); + } + if (!(IS_Q_EMPTY(&(pAC->TxPort[1][TX_PRIO_LOW].TxAQ_waiting)))) { + GiveTxBufferToHw(pAC, pAC->IoBase, 1); + } + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("<== SkY2Isr\n")); + + return SkIsrRetHandled; +} /* SkY2Isr */ + +/***************************************************************************** + * + * SkY2Xmit - Linux frame transmit function for Yukon2 + * + * Description: + * The system calls this function to send frames onto the wire. + * It puts the frame in the tx descriptor ring. If the ring is + * full then, the 'tbusy' flag is set. + * + * Returns: + * 0, if everything is ok + * !=0, on error + * + * WARNING: + * returning 1 in 'tbusy' case caused system crashes (double + * allocated skb's) !!! + */ +int SkY2Xmit( +struct sk_buff *skb, /* socket buffer to be sent */ +struct SK_NET_DEVICE *dev) /* via which device? */ +{ + DEV_NET *pNet = (DEV_NET*) dev->priv; + SK_AC *pAC = pNet->pAC; + SK_U8 FragIdx = 0; + SK_PACKET *pSkPacket; + SK_FRAG *PrevFrag; + SK_FRAG *CurrFrag; + SK_PKT_QUEUE *pWorkQueue; /* corresponding TX queue */ + SK_PKT_QUEUE *pWaitQueue; + SK_PKT_QUEUE *pFreeQueue; + SK_LE_TABLE *pLETab; /* corresponding LETable */ + skb_frag_t *sk_frag; + SK_U64 PhysAddr; + unsigned long Flags; + unsigned int Port; + int CurrFragCtr; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("==> SkY2Xmit\n")); + + /* + ** Get port and return if no free packet is available + */ + if (skb_shinfo(skb)->nr_frags > MAX_SKB_FRAGS) { + Port = skb_shinfo(skb)->nr_frags - (2*MAX_SKB_FRAGS); + skb_shinfo(skb)->nr_frags = 0; + } else { + Port = (pAC->RlmtNets == 2) ? pNet->PortNr : pAC->ActivePort; + } + + if (IS_Q_EMPTY(&(pAC->TxPort[Port][TX_PRIO_LOW].TxQ_free))) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_TX_PROGRESS | SK_DBGCAT_DRV_ERROR, + ("Not free packets available for send\n")); + return 1; /* zero bytes sent! */ + } + + /* + ** Put any new packet to be sent in the waiting queue and + ** handle also any possible fragment of that packet. + */ + pWorkQueue = &(pAC->TxPort[Port][TX_PRIO_LOW].TxAQ_working); + pWaitQueue = &(pAC->TxPort[Port][TX_PRIO_LOW].TxAQ_waiting); + pFreeQueue = &(pAC->TxPort[Port][TX_PRIO_LOW].TxQ_free); + pLETab = &(pAC->TxPort[Port][TX_PRIO_LOW].TxALET); + + /* + ** Normal send operations require only one fragment, because + ** only one sk_buff data area is passed. + ** In contradiction to this, scatter-gather (zerocopy) send + ** operations might pass one or more additional fragments + ** where each fragment needs a separate fragment info packet. + */ + if (((skb_shinfo(skb)->nr_frags + 1) * MAX_FRAG_OVERHEAD) > + NUM_FREE_LE_IN_TABLE(pLETab)) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_TX_PROGRESS | SK_DBGCAT_DRV_ERROR, + ("Not enough LE available for send\n")); + return 1; /* zero bytes sent! */ + } + + if ((skb_shinfo(skb)->nr_frags + 1) > MAX_NUM_FRAGS) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_TX_PROGRESS | SK_DBGCAT_DRV_ERROR, + ("Not even one fragment available for send\n")); + return 1; /* zero bytes sent! */ + } + + /* + ** Get first packet from free packet queue + */ + POP_FIRST_PKT_FROM_QUEUE(pFreeQueue, pSkPacket); + if(pSkPacket == NULL) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_TX_PROGRESS | SK_DBGCAT_DRV_ERROR, + ("Could not obtain free packet used for xmit\n")); + return 1; /* zero bytes sent! */ + } + + pSkPacket->pFrag = &(pSkPacket->FragArray[FragIdx]); + + /* + ** map the sk_buff to be available for the adapter + */ + PhysAddr = (SK_U64) pci_map_page(pAC->PciDev, + virt_to_page(skb->data), + ((unsigned long) skb->data & ~PAGE_MASK), + skb_headlen(skb), + PCI_DMA_TODEVICE); + pSkPacket->pMBuf = skb; + pSkPacket->pFrag->pPhys = PhysAddr; + pSkPacket->pFrag->FragLen = skb_headlen(skb); + pSkPacket->pFrag->pNext = NULL; /* initial has no next default */ + pSkPacket->NumFrags = skb_shinfo(skb)->nr_frags + 1; + + PrevFrag = pSkPacket->pFrag; + + /* + ** Each scatter-gather fragment need to be mapped... + */ + for ( CurrFragCtr = 0; + CurrFragCtr < skb_shinfo(skb)->nr_frags; + CurrFragCtr++) { + FragIdx++; + sk_frag = &skb_shinfo(skb)->frags[CurrFragCtr]; + CurrFrag = &(pSkPacket->FragArray[FragIdx]); + + /* + ** map the sk_buff to be available for the adapter + */ + PhysAddr = (SK_U64) pci_map_page(pAC->PciDev, + sk_frag->page, + sk_frag->page_offset, + sk_frag->size, + PCI_DMA_TODEVICE); + + CurrFrag->pPhys = PhysAddr; + CurrFrag->FragLen = sk_frag->size; + CurrFrag->pNext = NULL; + + /* + ** Add the new fragment to the list of fragments + */ + PrevFrag->pNext = CurrFrag; + PrevFrag = CurrFrag; + } + + /* + ** Add packet to waiting packets queue + */ + PUSH_PKT_AS_LAST_IN_QUEUE(pWaitQueue, pSkPacket); + GiveTxBufferToHw(pAC, pAC->IoBase, Port); + dev->trans_start = jiffies; + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("<== SkY2Xmit(return 0)\n")); + return (0); +} /* SkY2Xmit */ + +#ifdef CONFIG_SK98LIN_NAPI +/***************************************************************************** + * + * SkY2Poll - NAPI Rx polling callback for Yukon2 chipsets + * + * Description: + * Called by the Linux system in case NAPI polling is activated + * + * Returns + * The number of work data still to be handled + * + * Notes + * The slowpath lock needs to be set because HW accesses may + * interfere with slowpath events (e.g. TWSI) + */ +int SkY2Poll( +struct net_device *dev, /* device that needs to be polled */ +int *budget) /* how many budget do we have? */ +{ + SK_AC *pAC = ((DEV_NET*)(dev->priv))->pAC; + int WorkToDo = min(*budget, dev->quota); + int WorkDone = 0; + SK_BOOL handledStatLE = SK_FALSE; + unsigned long Flags; + + spin_lock_irqsave(&pAC->SlowPathLock, Flags); + handledStatLE = HandleStatusLEs(pAC, &WorkDone, WorkToDo); + + *budget -= WorkDone; + dev->quota -= WorkDone; + + if(WorkDone < WorkToDo) { + netif_rx_complete(dev); + pAC->GIni.GIValIrqMask |= (Y2_IS_STAT_BMU); + SK_OUT32(pAC->IoBase, B0_IMSK, pAC->GIni.GIValIrqMask); + if ((HW_FEATURE(pAC, HWF_WA_DEV_43_418)) && (handledStatLE)) { + SK_OUT8(pAC->IoBase, STAT_TX_TIMER_CTRL, TIM_STOP); + SK_OUT8(pAC->IoBase, STAT_TX_TIMER_CTRL, TIM_START); + } + } + spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); + return (WorkDone >= WorkToDo); +} /* SkY2Poll */ +#endif + +/****************************************************************************** + * + * SkY2PortStop - stop a port on Yukon2 + * + * Description: + * This function stops a port of the Yukon2 chip. This stop + * stop needs to be performed in a specific order: + * + * a) Stop the Prefetch unit + * b) Stop the Port (MAC, PHY etc.) + * + * Returns: N/A + */ +void SkY2PortStop( +SK_AC *pAC, /* adapter control context */ +SK_IOC IoC, /* I/O control context (address of adapter registers) */ +int Port, /* port to stop (MAC_1 + n) */ +int Dir, /* StopDirection (SK_STOP_RX, SK_STOP_TX, SK_STOP_ALL) */ +int RstMode) /* Reset Mode (SK_SOFT_RST, SK_HARD_RST) */ +{ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("==> SkY2PortStop (Port %c)\n", 'A' + Port)); + + /* + ** Stop the HW + */ + SkGeStopPort(pAC, IoC, Port, Dir, RstMode); + + /* + ** Move any TX packet from work queues into the free queue again + ** and initialize the TX LETable variables + */ + SkY2FreeTxBuffers(pAC, pAC->IoBase, Port); + pAC->TxPort[Port][TX_PRIO_LOW].TxALET.Bmu.RxTx.TcpWp = 0; + pAC->TxPort[Port][TX_PRIO_LOW].TxALET.Bmu.RxTx.MssValue = 0; + pAC->TxPort[Port][TX_PRIO_LOW].TxALET.BufHighAddr = 0; + pAC->TxPort[Port][TX_PRIO_LOW].TxALET.Done = 0; + pAC->TxPort[Port][TX_PRIO_LOW].TxALET.Put = 0; + // pAC->GIni.GP[Port].PState = SK_PRT_STOP; + + /* + ** Move any RX packet from work queue into the waiting queue + ** and initialize the RX LETable variables + */ + SkY2FreeRxBuffers(pAC, pAC->IoBase, Port); + pAC->RxPort[Port].RxLET.BufHighAddr = 0; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("<== SkY2PortStop()\n")); +} + +/****************************************************************************** + * + * SkY2PortStart - start a port on Yukon2 + * + * Description: + * This function starts a port of the Yukon2 chip. This start + * action needs to be performed in a specific order: + * + * a) Initialize the LET indices (PUT/GET to 0) + * b) Initialize the LET in HW (enables also prefetch unit) + * c) Move all RX buffers from waiting queue to working queue + * which involves also setting up of RX list elements + * d) Initialize the FIFO settings of Yukon2 (Watermark etc.) + * e) Initialize the Port (MAC, PHY etc.) + * f) Initialize the MC addresses + * + * Returns: N/A + */ +void SkY2PortStart( +SK_AC *pAC, /* adapter control context */ +SK_IOC IoC, /* I/O control context (address of adapter registers) */ +int Port) /* port to start */ +{ + // SK_GEPORT *pPrt = &pAC->GIni.GP[Port]; + SK_HWLE *pLE; + SK_U32 DWord; + SK_U32 PrefetchReg; /* register for Put index */ +#if defined(__x86_64__) + long cache0, cache1; +#endif + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("==> SkY2PortStart (Port %c)\n", 'A' + Port)); + + /* + ** Initialize the LET indices + */ + pAC->RxPort[Port].RxLET.Done = 0; + pAC->RxPort[Port].RxLET.Put = 0; + pAC->RxPort[Port].RxLET.HwPut = 0; + pAC->TxPort[Port][TX_PRIO_LOW].TxALET.Done = 0; + pAC->TxPort[Port][TX_PRIO_LOW].TxALET.Put = 0; + pAC->TxPort[Port][TX_PRIO_LOW].TxALET.HwPut = 0; + if (HW_SYNC_TX_SUPPORTED(pAC)) { + pAC->TxPort[Port][TX_PRIO_LOW].TxSLET.Done = 0; + pAC->TxPort[Port][TX_PRIO_LOW].TxSLET.Put = 0; + pAC->TxPort[Port][TX_PRIO_LOW].TxSLET.HwPut = 0; + } + + if (HW_FEATURE(pAC, HWF_WA_DEV_420)) { + /* + ** It might be that we have to limit the RX buffers + ** effectively passed to HW. Initialize the start + ** value in that case... + */ + NbrRxBuffersInHW = 0; + } + + /* + ** TODO on dual net adapters we need to check if + ** StatusLETable need to be set... + ** + ** pAC->StatusLETable.Done = 0; + ** pAC->StatusLETable.Put = 0; + ** pAC->StatusLETable.HwPut = 0; + ** SkGeY2InitPrefetchUnit(pAC, pAC->IoBase, Q_ST, &pAC->StatusLETable); + */ + + /* + ** Initialize the LET in HW (enables also prefetch unit) + */ + SkGeY2InitPrefetchUnit(pAC, IoC,(Port == 0) ? Q_R1 : Q_R2, + &pAC->RxPort[Port].RxLET); + SkGeY2InitPrefetchUnit( pAC, IoC,(Port == 0) ? Q_XA1 : Q_XA2, + &pAC->TxPort[Port][TX_PRIO_LOW].TxALET); + if (HW_SYNC_TX_SUPPORTED(pAC)) { + SkGeY2InitPrefetchUnit( pAC, IoC, (Port == 0) ? Q_XS1 : Q_XS2, + &pAC->TxPort[Port][TX_PRIO_HIGH].TxSLET); + } + + + /* + ** Using new values for the watermarks and the timer for + ** low latency optimization + */ + if (pAC->LowLatency) { + SK_OUT8(IoC, STAT_FIFO_WM, 1); + SK_OUT8(IoC, STAT_FIFO_ISR_WM, 1); + SK_OUT32(IoC, STAT_LEV_TIMER_INI, 50); + SK_OUT32(IoC, STAT_ISR_TIMER_INI, 10); + } + + + /* + ** Initialize the Port (MAC, PHY etc.) + */ + if (SkGeInitPort(pAC, IoC, Port)) { + if (Port == 0) { + printk("%s: SkGeInitPort A failed.\n",pAC->dev[0]->name); + } else { + printk("%s: SkGeInitPort B failed.\n",pAC->dev[1]->name); + } + } + + if (IS_GMAC(pAC)) { + /* disable Rx GMAC FIFO Flush Mode */ + SK_OUT8(IoC, MR_ADDR(Port, RX_GMF_CTRL_T), (SK_U8) GMF_RX_F_FL_OFF); + } + + /* + ** Initialize the MC addresses + */ + SkAddrMcUpdate(pAC,IoC, Port); + + SkMacRxTxEnable(pAC, IoC,Port); + + if (pAC->RxPort[Port].UseRxCsum) { + SkGeRxCsum(pAC, IoC, Port, SK_TRUE); + + GET_RX_LE(pLE, &pAC->RxPort[Port].RxLET); + RXLE_SET_STACS1(pLE, pAC->CsOfs1); + RXLE_SET_STACS2(pLE, pAC->CsOfs2); + RXLE_SET_CTRL(pLE, 0); + + RXLE_SET_OPC(pLE, OP_TCPSTART | HW_OWNER); + FLUSH_OPC(pLE); + if (Port == 0) { + PrefetchReg=Y2_PREF_Q_ADDR(Q_R1,PREF_UNIT_PUT_IDX_REG); + } else { + PrefetchReg=Y2_PREF_Q_ADDR(Q_R2,PREF_UNIT_PUT_IDX_REG); + } + DWord = GET_PUT_IDX(&pAC->RxPort[Port].RxLET); + SK_OUT32(IoC, PrefetchReg, DWord); + UPDATE_HWPUT_IDX(&pAC->RxPort[Port].RxLET); + } + + pAC->GIni.GP[Port].PState = SK_PRT_RUN; + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("<== SkY2PortStart()\n")); +} + +/****************************************************************************** + * + * Local Functions + * + *****************************************************************************/ + +/***************************************************************************** + * + * InitPacketQueues - initialize SW settings of packet queues + * + * Description: + * This function will initialize the packet queues for a port. + * + * Returns: N/A + */ +static void InitPacketQueues( +SK_AC *pAC, /* pointer to adapter control context */ +int Port) /* index of port to be initialized */ +{ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("==> InitPacketQueues(Port %c)\n", 'A' + Port)); + + pAC->RxPort[Port].RxQ_working.pHead = NULL; + pAC->RxPort[Port].RxQ_working.pTail = NULL; + spin_lock_init(&pAC->RxPort[Port].RxQ_working.QueueLock); + + pAC->RxPort[Port].RxQ_waiting.pHead = NULL; + pAC->RxPort[Port].RxQ_waiting.pTail = NULL; + spin_lock_init(&pAC->RxPort[Port].RxQ_waiting.QueueLock); + + pAC->TxPort[Port][TX_PRIO_LOW].TxQ_free.pHead = NULL; + pAC->TxPort[Port][TX_PRIO_LOW].TxQ_free.pTail = NULL; + spin_lock_init(&pAC->TxPort[Port][TX_PRIO_LOW].TxQ_free.QueueLock); + + pAC->TxPort[Port][TX_PRIO_LOW].TxAQ_working.pHead = NULL; + pAC->TxPort[Port][TX_PRIO_LOW].TxAQ_working.pTail = NULL; + spin_lock_init(&pAC->TxPort[Port][TX_PRIO_LOW].TxAQ_working.QueueLock); + + pAC->TxPort[Port][TX_PRIO_LOW].TxAQ_waiting.pHead = NULL; + pAC->TxPort[Port][TX_PRIO_LOW].TxAQ_waiting.pTail = NULL; + spin_lock_init(&pAC->TxPort[Port][TX_PRIO_LOW].TxAQ_waiting.QueueLock); + +#ifdef USE_SYNC_TX_QUEUE + pAC->TxPort[Port][TX_PRIO_LOW].TxSQ_working.pHead = NULL; + pAC->TxPort[Port][TX_PRIO_LOW].TxSQ_working.pTail = NULL; + spin_lock_init(&pAC->TxPort[Port][TX_PRIO_LOW].TxSQ_working.QueueLock); + + pAC->TxPort[Port][TX_PRIO_LOW].TxSQ_waiting.pHead = NULL; + pAC->TxPort[Port][TX_PRIO_LOW].TxSQ_waiting.pTail = NULL; + spin_lock_init(&pAC->TxPort[Port][TX_PRIO_LOW].TxSQ_waiting.QueueLock); +#endif + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("<== InitPacketQueues(Port %c)\n", 'A' + Port)); +} /* InitPacketQueues */ + +/***************************************************************************** + * + * GiveTxBufferToHw - commits a previously allocated DMA area to HW + * + * Description: + * This functions gives transmit buffers to HW. If no list elements + * are available the buffers will be queued. + * + * Notes: + * This function can run only once in a system at one time. + * + * Returns: N/A + */ +static void GiveTxBufferToHw( +SK_AC *pAC, /* pointer to adapter control context */ +SK_IOC IoC, /* I/O control context (address of registers) */ +int Port) /* port index for which the buffer is used */ +{ + SK_HWLE *pLE; + SK_PACKET *pSkPacket; + SK_FRAG *pFrag; + SK_PKT_QUEUE *pWorkQueue; /* corresponding TX queue */ + SK_PKT_QUEUE *pWaitQueue; + SK_LE_TABLE *pLETab; /* corresponding LETable */ + SK_BOOL SetOpcodePacketFlag; + SK_U32 HighAddress; + SK_U32 LowAddress; + SK_U16 TcpSumStart; + SK_U16 TcpSumWrite; + SK_U8 OpCode; + SK_U8 Ctrl; + unsigned long Flags; + unsigned long LockFlag; + int Protocol; +#ifdef NETIF_F_TSO + SK_U16 Mss; + int TcpOptLen; + int IpTcpLen; +#endif +#if defined(__x86_64__) + long cache0, cache1; +#endif + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("==> GiveTxBufferToHw\n")); + + if (IS_Q_EMPTY(&(pAC->TxPort[Port][TX_PRIO_LOW].TxAQ_waiting))) { + return; + } + + spin_lock_irqsave(&pAC->TxQueueLock, LockFlag); + + /* + ** Initialize queue settings + */ + pWorkQueue = &(pAC->TxPort[Port][TX_PRIO_LOW].TxAQ_working); + pWaitQueue = &(pAC->TxPort[Port][TX_PRIO_LOW].TxAQ_waiting); + pLETab = &(pAC->TxPort[Port][TX_PRIO_LOW].TxALET); + + POP_FIRST_PKT_FROM_QUEUE(pWaitQueue, pSkPacket); + while (pSkPacket != NULL) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("\tWe have a packet to send %p\n", pSkPacket)); + + /* + ** the first frag of a packet gets opcode OP_PACKET + */ + SetOpcodePacketFlag = SK_TRUE; + pFrag = pSkPacket->pFrag; + + /* + ** fill list elements with data from fragments + */ + while (pFrag != NULL) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("\tGet LE\n")); +#ifdef NETIF_F_TSO + Mss = skb_shinfo(pSkPacket->pMBuf)->tso_size; + if (Mss) { + TcpOptLen = ((pSkPacket->pMBuf->h.th->doff - 5) * 4); + IpTcpLen = ((pSkPacket->pMBuf->nh.iph->ihl * 4) + + sizeof(struct tcphdr)); + Mss += (TcpOptLen + IpTcpLen + C_LEN_ETHERMAC_HEADER); + } + if (pLETab->Bmu.RxTx.MssValue != Mss) { + pLETab->Bmu.RxTx.MssValue = Mss; + /* Take a new LE for TSO from the table */ + GET_TX_LE(pLE, pLETab); + +#if 0 + if(pSkPacket->VlanId) { + TXLE_SET_OPC(pLE, OP_LRGLENVLAN | HW_OWNER); + TXLE_SET_VLAN(pLE, pSkPacket->VlanId); + pSkPacket->VlanId = 0; + Ctrl |= INS_VLAN; + } else { +#endif + TXLE_SET_OPC(pLE, OP_LRGLEN | HW_OWNER); +#if 0 + } +#endif + /* set maximum segment size for new packet */ + TXLE_SET_LSLEN(pLE, pLETab->Bmu.RxTx.MssValue); + FLUSH_OPC(pLE) ; + } +#endif + GET_TX_LE(pLE, pLETab); + Ctrl = 0; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("\tGot empty LE %p idx %d\n", pLE, GET_PUT_IDX(pLETab))); + + SK_DBG_DUMP_TX_LE(pLE); + + LowAddress = (SK_U32) (pFrag->pPhys & 0xffffffff); + HighAddress = (SK_U32) (pFrag->pPhys >> 32); + if (HighAddress != pLETab->BufHighAddr) { + /* set opcode high part of the address in one LE */ + OpCode = OP_ADDR64 | HW_OWNER; + + /* Set now the 32 high bits of the address */ + TXLE_SET_ADDR( pLE, HighAddress); + + /* Set the opcode into the LE */ + TXLE_SET_OPC(pLE, OpCode); + + /* Flush the LE to memory */ + FLUSH_OPC(pLE); + + /* remember the HighAddress we gave to the Hardware */ + pLETab->BufHighAddr = HighAddress; + + /* get a new LE because we filled one with high address */ + GET_TX_LE(pLE, pLETab); + } + + /* + ** TCP checksum offload + */ + if ((pSkPacket->pMBuf->ip_summed == CHECKSUM_HW) && + (SetOpcodePacketFlag == SK_TRUE)) { + Protocol = ((SK_U8)pSkPacket->pMBuf->data[C_OFFSET_IPPROTO] & 0xff); + /* if (Protocol & C_PROTO_ID_IP) { Ctrl = 0; } */ + if (Protocol & C_PROTO_ID_TCP) { + Ctrl = CALSUM | WR_SUM | INIT_SUM | LOCK_SUM; + /* TCP Checksum Calculation Start Position */ + TcpSumStart = C_LEN_ETHERMAC_HEADER + IP_HDR_LEN; + /* TCP Checksum Write Position */ + TcpSumWrite = TcpSumStart + TCP_CSUM_OFFS; + } else { + Ctrl = UDPTCP | CALSUM | WR_SUM | INIT_SUM | LOCK_SUM; + /* TCP Checksum Calculation Start Position */ + TcpSumStart = ETHER_MAC_HDR_LEN + IP_HDR_LEN; + /* UDP Checksum Write Position */ + TcpSumWrite = TcpSumStart + UDP_CSUM_OFFS; + } + + if ((Ctrl) && (pLETab->Bmu.RxTx.TcpWp != TcpSumWrite)) { + /* Update the last value of the write position */ + pLETab->Bmu.RxTx.TcpWp = TcpSumWrite; + + /* Set the Lock field for this LE: */ + /* Checksum calculation for one packet only */ + TXLE_SET_LCKCS(pLE, 1); + + /* Set the start position for checksum. */ + TXLE_SET_STACS(pLE, TcpSumStart); + + /* Set the position where the checksum will be writen */ + TXLE_SET_WRICS(pLE, TcpSumWrite); + + /* Set the initial value for checksum */ + /* PseudoHeader CS passed from Linux -> 0! */ + TXLE_SET_INICS(pLE, 0); + + /* Set the opcode for tcp checksum */ + TXLE_SET_OPC(pLE, OP_TCPLISW | HW_OWNER); + + /* Flush the LE to memory */ + FLUSH_OPC(pLE); + + /* get a new LE because we filled one with data for checksum */ + GET_TX_LE(pLE, pLETab); + } + } /* end TCP offload handling */ + + TXLE_SET_ADDR(pLE, LowAddress); + TXLE_SET_LEN(pLE, pFrag->FragLen); + + if (SetOpcodePacketFlag){ +#ifdef NETIF_F_TSO + if (Mss) { + OpCode = OP_LARGESEND | HW_OWNER; + } else { +#endif + OpCode = OP_PACKET| HW_OWNER; +#ifdef NETIF_F_TSO + } +#endif + SetOpcodePacketFlag = SK_FALSE; + } else { + /* Follow packet in a sequence has always OP_BUFFER */ + OpCode = OP_BUFFER | HW_OWNER; + } + + pFrag = pFrag->pNext; + if (pFrag == NULL) { + /* mark last fragment */ + Ctrl |= EOP; + } + TXLE_SET_CTRL(pLE, Ctrl); + TXLE_SET_OPC(pLE, OpCode); + FLUSH_OPC(pLE); + SK_DBG_DUMP_TX_LE(pLE); + } + + /* + ** Remember next LE for tx complete + */ + pSkPacket->NextLE = GET_PUT_IDX(pLETab); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("\tNext LE for pkt %p is %d\n", pSkPacket, pSkPacket->NextLE)); + + /* + ** Add packet to working packets queue + */ + PUSH_PKT_AS_LAST_IN_QUEUE(pWorkQueue, pSkPacket); + + /* + ** give transmit start command + */ + if (HW_FEATURE(pAC, HWF_WA_DEV_42)) { + spin_lock(&pAC->SetPutIndexLock); + SkGeY2SetPutIndex(pAC, pAC->IoBase, Y2_PREF_Q_ADDR(Q_XA1,0), &pAC->TxPort[0][0].TxALET); + spin_unlock(&pAC->SetPutIndexLock); + } else { + /* write put index */ + if (Port == 0) { + SK_OUT32(pAC->IoBase, + Y2_PREF_Q_ADDR(Q_XA1,PREF_UNIT_PUT_IDX_REG), + GET_PUT_IDX(&pAC->TxPort[0][0].TxALET)); + UPDATE_HWPUT_IDX(&pAC->TxPort[0][0].TxALET); + } else { + SK_OUT32(pAC->IoBase, + Y2_PREF_Q_ADDR(Q_XA2, PREF_UNIT_PUT_IDX_REG), + GET_PUT_IDX(&pAC->TxPort[1][0].TxALET)); + UPDATE_HWPUT_IDX(&pAC->TxPort[1][0].TxALET); + } + } + + if (IS_Q_EMPTY(&(pAC->TxPort[Port][TX_PRIO_LOW].TxAQ_waiting))) { + break; /* get out of while */ + } + POP_FIRST_PKT_FROM_QUEUE(pWaitQueue, pSkPacket); + } /* while (pSkPacket != NULL) */ + + spin_unlock_irqrestore(&pAC->TxQueueLock, LockFlag); + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("<== GiveTxBufferToHw\n")); + return; +} /* GiveTxBufferToHw */ + +/*********************************************************************** + * + * GiveRxBufferToHw - commits a previously allocated DMA area to HW + * + * Description: + * This functions gives receive buffers to HW. If no list elements + * are available the buffers will be queued. + * + * Notes: + * This function can run only once in a system at one time. + * + * Returns: N/A + */ +static void GiveRxBufferToHw( +SK_AC *pAC, /* pointer to adapter control context */ +SK_IOC IoC, /* I/O control context (address of registers) */ +int Port, /* port index for which the buffer is used */ +SK_PACKET *pPacket) /* receive buffer(s) */ +{ + SK_HWLE *pLE; + SK_LE_TABLE *pLETab; + SK_BOOL Done = SK_FALSE; /* at least on LE changed? */ + SK_U32 LowAddress; + SK_U32 HighAddress; + SK_U32 PrefetchReg; /* register for Put index */ + unsigned NumFree; + unsigned Required; + unsigned long Flags; +#if defined(__x86_64__) + long cache0, cache1; +#endif + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("==> GiveRxBufferToHw(Port %c, Packet %p)\n", 'A' + Port, pPacket)); + + pLETab = &pAC->RxPort[Port].RxLET; + + if (Port == 0) { + PrefetchReg = Y2_PREF_Q_ADDR(Q_R1, PREF_UNIT_PUT_IDX_REG); + } else { + PrefetchReg = Y2_PREF_Q_ADDR(Q_R2, PREF_UNIT_PUT_IDX_REG); + } + + if (pPacket != NULL) { + /* + ** For the time being, we have only one packet passed + ** to this function which might be changed in future! + */ + PUSH_PKT_AS_LAST_IN_QUEUE(&pAC->RxPort[Port].RxQ_waiting, pPacket); + } + + /* + ** now pPacket contains the very first waiting packet + */ + POP_FIRST_PKT_FROM_QUEUE(&pAC->RxPort[Port].RxQ_waiting, pPacket); + while (pPacket != NULL) { + if (HW_FEATURE(pAC, HWF_WA_DEV_420)) { + if (NbrRxBuffersInHW >= MAX_NBR_RX_BUFFERS_IN_HW) { + PUSH_PKT_AS_FIRST_IN_QUEUE(&pAC->RxPort[Port].RxQ_waiting, pPacket); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("<== GiveRxBufferToHw()\n")); + return; + } + NbrRxBuffersInHW++; + } + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("Try to add packet %p\n", pPacket)); + + /* + ** Check whether we have enough listelements: + ** + ** we have to take into account that each fragment + ** may need an additional list element for the high + ** part of the address here I simplified it by + ** using MAX_FRAG_OVERHEAD maybe it's worth to split + ** this constant for Rx and Tx or to calculate the + ** real number of needed LE's + */ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("\tNum %d Put %d Done %d Free %d %d\n", + pLETab->Num, pLETab->Put, pLETab->Done, + NUM_FREE_LE_IN_TABLE(pLETab), + (NUM_FREE_LE_IN_TABLE(pLETab)))); + + Required = pPacket->NumFrags + MAX_FRAG_OVERHEAD; + NumFree = NUM_FREE_LE_IN_TABLE(pLETab); + if (NumFree) { + NumFree--; + } + + if (Required > NumFree ) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_RX_PROGRESS | SK_DBGCAT_DRV_ERROR, + ("\tOut of LEs have %d need %d\n", + NumFree, Required)); + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("\tWaitQueue starts with packet %p\n", pPacket)); + PUSH_PKT_AS_FIRST_IN_QUEUE(&pAC->RxPort[Port].RxQ_waiting, pPacket); + if (Done) { + /* + ** write Put index to BMU or Polling Unit and make the LE's + ** available for the hardware + */ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("\tWrite new Put Idx\n")); + + SK_OUT32(IoC, PrefetchReg, GET_PUT_IDX(pLETab)); + UPDATE_HWPUT_IDX(pLETab); + } + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("<== GiveRxBufferToHw()\n")); + return; + } else { + if (!AllocAndMapRxBuffer(pAC, pPacket, Port)) { + /* + ** Failure while allocating sk_buff might + ** be due to temporary short of resources + ** Maybe next time buffers are available. + ** Until this, the packet remains in the + ** RX waiting queue... + */ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_RX_PROGRESS | SK_DBGCAT_DRV_ERROR, + ("Failed to allocate Rx buffer\n")); + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("WaitQueue starts with packet %p\n", pPacket)); + PUSH_PKT_AS_FIRST_IN_QUEUE(&pAC->RxPort[Port].RxQ_waiting, pPacket); + if (Done) { + /* + ** write Put index to BMU or Polling + ** Unit and make the LE's + ** available for the hardware + */ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("\tWrite new Put Idx\n")); + + SK_OUT32(IoC, PrefetchReg, GET_PUT_IDX(pLETab)); + UPDATE_HWPUT_IDX(pLETab); + } + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("<== GiveRxBufferToHw()\n")); + return; + } + } + Done = SK_TRUE; + + LowAddress = (SK_U32) (pPacket->pFrag->pPhys & 0xffffffff); + HighAddress = (SK_U32) (pPacket->pFrag->pPhys >> 32); + if (HighAddress != pLETab->BufHighAddr) { + /* get a new LE for high address */ + GET_RX_LE(pLE, pLETab); + + /* Set now the 32 high bits of the address */ + RXLE_SET_ADDR(pLE, HighAddress); + + /* Set the control bits of the address */ + RXLE_SET_CTRL(pLE, 0); + + /* Set the opcode into the LE */ + RXLE_SET_OPC(pLE, (OP_ADDR64 | HW_OWNER)); + + /* Flush the LE to memory */ + FLUSH_OPC(pLE); + + /* remember the HighAddress we gave to the Hardware */ + pLETab->BufHighAddr = HighAddress; + } + + /* + ** Fill data into listelement + */ + GET_RX_LE(pLE, pLETab); + RXLE_SET_ADDR(pLE, LowAddress); + RXLE_SET_LEN(pLE, pPacket->pFrag->FragLen); + RXLE_SET_CTRL(pLE, 0); + RXLE_SET_OPC(pLE, (OP_PACKET | HW_OWNER)); + FLUSH_OPC(pLE); + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("=== LE filled\n")); + + SK_DBG_DUMP_RX_LE(pLE); + + /* + ** Remember next LE for rx complete + */ + pPacket->NextLE = GET_PUT_IDX(pLETab); + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("\tPackets Next LE is %d\n", pPacket->NextLE)); + + /* + ** Add packet to working receive buffer queue and get + ** any next packet out of the waiting queue + */ + PUSH_PKT_AS_LAST_IN_QUEUE(&pAC->RxPort[Port].RxQ_working, pPacket); + if (IS_Q_EMPTY(&(pAC->RxPort[Port].RxQ_waiting))) { + break; /* get out of while processing */ + } + POP_FIRST_PKT_FROM_QUEUE(&pAC->RxPort[Port].RxQ_waiting, pPacket); + } + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("\tWaitQueue is empty\n")); + + if (Done) { + /* + ** write Put index to BMU or Polling Unit and make the LE's + ** available for the hardware + */ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("\tWrite new Put Idx\n")); + + /* Speed enhancement for a2 chipsets */ + if (HW_FEATURE(pAC, HWF_WA_DEV_42)) { + spin_lock_irqsave(&pAC->SetPutIndexLock, Flags); + SkGeY2SetPutIndex(pAC, pAC->IoBase, Y2_PREF_Q_ADDR(Q_R1,0), pLETab); + spin_unlock_irqrestore(&pAC->SetPutIndexLock, Flags); + } else { + /* write put index */ + if (Port == 0) { + SK_OUT32(IoC, + Y2_PREF_Q_ADDR(Q_R1, PREF_UNIT_PUT_IDX_REG), + GET_PUT_IDX(pLETab)); + } else { + SK_OUT32(IoC, + Y2_PREF_Q_ADDR(Q_R2, PREF_UNIT_PUT_IDX_REG), + GET_PUT_IDX(pLETab)); + } + + /* Update put index */ + UPDATE_HWPUT_IDX(pLETab); + } + } + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("<== GiveRxBufferToHw()\n")); +} /* GiveRxBufferToHw */ + +/*********************************************************************** + * + * FillReceiveTableYukon2 - map any waiting RX buffers to HW + * + * Description: + * If the list element table contains more empty elements than + * specified this function tries to refill them. + * + * Notes: + * This function can run only once per port in a system at one time. + * + * Returns: N/A + */ +static void FillReceiveTableYukon2( +SK_AC *pAC, /* pointer to adapter control context */ +SK_IOC IoC, /* I/O control context */ +int Port) /* port index of RX */ +{ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("==> FillReceiveTableYukon2 (Port %c)\n", 'A' + Port)); + + if (NUM_FREE_LE_IN_TABLE(&pAC->RxPort[Port].RxLET) > + pAC->MaxUnusedRxLeWorking) { + + /* + ** Give alle waiting receive buffers down + ** The queue holds all RX packets that + ** need a fresh allocation of the sk_buff. + */ + if (pAC->RxPort[Port].RxQ_waiting.pHead != NULL) { + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("Waiting queue is not empty -> give it to HW")); + GiveRxBufferToHw(pAC, IoC, Port, NULL); + } + } + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("<== FillReceiveTableYukon2 ()\n")); +} /* FillReceiveTableYukon2 */ + +/****************************************************************************** + * + * + * HandleReceives - will pass any ready RX packet to kernel + * + * Description: + * This functions handles a received packet. It checks wether it is + * valid, updates the receive list element table and gives the receive + * buffer to Linux + * + * Notes: + * This function can run only once per port at one time in the system. + * + * Returns: N/A + */ +static SK_BOOL HandleReceives( +SK_AC *pAC, /* adapter control context */ +int Port, /* port on which a packet has been received */ +SK_U16 Len, /* number of bytes which was actually received */ +SK_U32 FrameStatus, /* MAC frame status word */ +SK_U16 Tcp1, /* first hw checksum */ +SK_U16 Tcp2, /* second hw checksum */ +SK_U32 Tist, /* timestamp */ +SK_U16 Vlan) /* Vlan Id */ +{ + + SK_PACKET *pSkPacket; + SK_LE_TABLE *pLETab; + SK_MBUF *pRlmtMbuf; /* buffer for giving RLMT frame */ + struct sk_buff *pMsg; /* ptr to message holding frame */ +#ifdef __ia64__ + struct sk_buff *pNewMsg; /* used when IP aligning */ +#endif + +#ifdef CONFIG_SK98LIN_NAPI + SK_BOOL SlowPathLock = SK_FALSE; +#else + SK_BOOL SlowPathLock = SK_TRUE; +#endif + SK_BOOL IsGoodPkt; + SK_BOOL IsBc; + SK_BOOL IsMc; + SK_EVPARA EvPara; /* an event parameter union */ + SK_I16 LenToFree; /* must be signed integer */ + + unsigned long Flags; /* for spin lock */ + unsigned int RlmtNotifier; + unsigned short Type; + int IpFrameLength; + int FrameLength; /* total length of recvd frame */ + int HeaderLength; + int NumBytes; + int Result; + int Offset = 0; + +#ifdef Y2_SYNC_CHECK + SK_U16 MyTcp; +#endif + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("==> HandleReceives (Port %c)\n", 'A' + Port)); + + /* + ** initialize vars for selected port + */ + pLETab = &pAC->RxPort[Port].RxLET; + + /* + ** check whether we want to receive this packet + */ + SK_Y2_RXSTAT_CHECK_PKT(Len, FrameStatus, IsGoodPkt); + + /* + ** Remember length to free (in case of RxBuffer overruns; + ** unlikely, but might happen once in a while) + */ + LenToFree = (SK_I16) Len; + + /* + ** maybe we put these two checks into the SK_RXDESC_CHECK_PKT macro too + */ + if (Len > pAC->RxPort[Port].RxBufSize) { + IsGoodPkt = SK_FALSE; + } + + /* + ** take first receive buffer out of working queue + */ + POP_FIRST_PKT_FROM_QUEUE(&pAC->RxPort[Port].RxQ_working, pSkPacket); + if (pSkPacket == NULL) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_ERROR, + ("Packet not available. NULL pointer.\n")); + return(SK_TRUE); + } + + if (HW_FEATURE(pAC, HWF_WA_DEV_420)) { + NbrRxBuffersInHW--; + } + + /* + ** Verify the received length of the frame! Note that having + ** multiple RxBuffers being aware of one single receive packet + ** (one packet spread over multiple RxBuffers) is not supported + ** by this driver! + */ + if ((Len > pAC->RxPort[Port].RxBufSize) || + (Len > (SK_U16) pSkPacket->PacketLen)) { + IsGoodPkt = SK_FALSE; + } + + /* + ** Reset own bit in LE's between old and new Done index + ** This is not really necessary but makes debugging easier + */ + CLEAR_LE_OWN_FROM_DONE_TO(pLETab, pSkPacket->NextLE); + + /* + ** Free the list elements for new Rx buffers + */ + SET_DONE_INDEX(pLETab, pSkPacket->NextLE); + pMsg = pSkPacket->pMBuf; + FrameLength = Len; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("Received frame of length %d on port %d\n",FrameLength, Port)); + + if (!IsGoodPkt) { + /* + ** release the DMA mapping + */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,5) + pci_dma_sync_single(pAC->PciDev, + (dma_addr_t) pSkPacket->pFrag->pPhys, + pSkPacket->pFrag->FragLen, + PCI_DMA_FROMDEVICE); + +#else + pci_dma_sync_single_for_cpu(pAC->PciDev, + (dma_addr_t) pSkPacket->pFrag->pPhys, + pSkPacket->pFrag->FragLen, + PCI_DMA_FROMDEVICE); +#endif + + DEV_KFREE_SKB_ANY(pSkPacket->pMBuf); + PUSH_PKT_AS_LAST_IN_QUEUE(&pAC->RxPort[Port].RxQ_waiting, pSkPacket); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("<== HandleReceives (Port %c)\n", 'A' + Port)); + + /* + ** Sanity check for RxBuffer overruns... + */ + LenToFree = LenToFree - (pSkPacket->pFrag->FragLen); + while (LenToFree > 0) { + POP_FIRST_PKT_FROM_QUEUE(&pAC->RxPort[Port].RxQ_working, pSkPacket); + if (HW_FEATURE(pAC, HWF_WA_DEV_420)) { + NbrRxBuffersInHW--; + } + CLEAR_LE_OWN_FROM_DONE_TO(pLETab, pSkPacket->NextLE); + SET_DONE_INDEX(pLETab, pSkPacket->NextLE); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,5) + pci_dma_sync_single(pAC->PciDev, + (dma_addr_t) pSkPacket->pFrag->pPhys, + pSkPacket->pFrag->FragLen, + PCI_DMA_FROMDEVICE); +#else + pci_dma_sync_single_for_device(pAC->PciDev, + (dma_addr_t) pSkPacket->pFrag->pPhys, + pSkPacket->pFrag->FragLen, + PCI_DMA_FROMDEVICE); +#endif + + DEV_KFREE_SKB_ANY(pSkPacket->pMBuf); + PUSH_PKT_AS_LAST_IN_QUEUE(&pAC->RxPort[Port].RxQ_waiting, pSkPacket); + LenToFree = LenToFree - ((SK_I16)(pSkPacket->pFrag->FragLen)); + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_RX_PROGRESS | SK_DBGCAT_DRV_ERROR, + ("<==HandleReceives (Port %c) drop faulty len pkt(2)\n",'A'+Port)); + } + return(SK_TRUE); + } else { + /* + ** Release the DMA mapping + */ + pci_unmap_single(pAC->PciDev, + pSkPacket->pFrag->pPhys, + pAC->RxPort[Port].RxBufSize, + PCI_DMA_FROMDEVICE); + + skb_put(pMsg, FrameLength); /* set message len */ + pMsg->ip_summed = CHECKSUM_NONE; /* initial default */ + +#ifdef Y2_SYNC_CHECK + pAC->FramesWithoutSyncCheck++; + if (pAC->FramesWithoutSyncCheck > Y2_RESYNC_WATERMARK) { + if ((Tcp1 != 1) && (Tcp2 != 0)) { + pAC->FramesWithoutSyncCheck = 0; + MyTcp = (SK_U16) SkCsCalculateChecksum( + &pMsg->data[14], + FrameLength - 14); + if (MyTcp != Tcp1) { + /* Queue port reset event */ + SkLocalEventQueue(pAC, SKGE_DRV, + SK_DRV_RECOVER,Port,-1,SK_FALSE); + } + } + } +#endif + + if (pAC->RxPort[Port].UseRxCsum) { + Type = ntohs(*((short*)&pMsg->data[12])); + if (Type == 0x800) { + *((char *)&(IpFrameLength)) = pMsg->data[16]; + *(((char *)&(IpFrameLength))+1) = pMsg->data[17]; + IpFrameLength = ntohs(IpFrameLength); + HeaderLength = FrameLength - IpFrameLength; + if (HeaderLength == 0xe) { + Result = + SkCsGetReceiveInfo(pAC,&pMsg->data[14],Tcp1,Tcp2, Port); + if ((Result == SKCS_STATUS_IP_FRAGMENT) || + (Result == SKCS_STATUS_IP_CSUM_OK) || + (Result == SKCS_STATUS_TCP_CSUM_OK) || + (Result == SKCS_STATUS_UDP_CSUM_OK)) { + pMsg->ip_summed = CHECKSUM_UNNECESSARY; + } else if ((Result == SKCS_STATUS_TCP_CSUM_ERROR) || + (Result == SKCS_STATUS_UDP_CSUM_ERROR) || + (Result == SKCS_STATUS_IP_CSUM_ERROR_UDP) || + (Result == SKCS_STATUS_IP_CSUM_ERROR_TCP) || + (Result == SKCS_STATUS_IP_CSUM_ERROR)) { + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_RX_PROGRESS | SK_DBGCAT_DRV_ERROR, + ("skge: CRC error. Frame dropped!\n")); + DEV_KFREE_SKB_ANY(pMsg); + PUSH_PKT_AS_LAST_IN_QUEUE(&pAC->RxPort[Port].RxQ_waiting, pSkPacket); + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_RX_PROGRESS, + ("<==HandleReceives(Port %c)\n",'A'+Port)); + return(SK_TRUE); + } else { + pMsg->ip_summed = CHECKSUM_NONE; + } + } /* end if (HeaderLength == valid) */ + } /* end if (Type == 0x800) -> IP frame */ + } /* end if (pRxPort->UseRxCsum) */ + + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_RX_PROGRESS,("V")); + RlmtNotifier = SK_RLMT_RX_PROTOCOL; + + IsBc = (FrameStatus & GMR_FS_BC) ? SK_TRUE : SK_FALSE; + SK_RLMT_PRE_LOOKAHEAD(pAC,Port,FrameLength, + IsBc,&Offset,&NumBytes); + if (NumBytes != 0) { + IsMc = (FrameStatus & GMR_FS_MC) ? SK_TRUE : SK_FALSE; + SK_RLMT_LOOKAHEAD(pAC,Port,&pMsg->data[Offset], + IsBc,IsMc,&RlmtNotifier); + } + + if (RlmtNotifier == SK_RLMT_RX_PROTOCOL) { + SK_DBG_MSG(NULL,SK_DBGMOD_DRV, + SK_DBGCAT_DRV_RX_PROGRESS,("W")); + if ((Port == pAC->ActivePort)||(pAC->RlmtNets == 2)) { + /* send up only frames from active port */ + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_RX_PROGRESS,("U")); +#ifdef xDEBUG + DumpMsg(pMsg, "Rx"); +#endif + SK_PNMI_CNT_RX_OCTETS_DELIVERED(pAC, + FrameLength, Port); +#ifdef __ia64__ + pNewMsg = alloc_skb(pMsg->len, GFP_ATOMIC); + skb_reserve(pNewMsg, 2); /* to align IP */ + SK_MEMCPY(pNewMsg->data,pMsg->data,pMsg->len); + pNewMsg->ip_summed = pMsg->ip_summed; + skb_put(pNewMsg, pMsg->len); + DEV_KFREE_SKB_ANY(pMsg); + pMsg = pNewMsg; +#endif + pMsg->dev = pAC->dev[Port]; + pMsg->protocol = eth_type_trans(pMsg, + pAC->dev[Port]); + netif_rx(pMsg); + pAC->dev[Port]->last_rx = jiffies; + } else { /* drop frame */ + SK_DBG_MSG(NULL,SK_DBGMOD_DRV, + SK_DBGCAT_DRV_RX_PROGRESS,("D")); + DEV_KFREE_SKB_ANY(pMsg); + } + } else { /* This is an RLMT-packet! */ + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_RX_PROGRESS,("R")); + pRlmtMbuf = SkDrvAllocRlmtMbuf(pAC, + pAC->IoBase, FrameLength); + if (pRlmtMbuf != NULL) { + pRlmtMbuf->pNext = NULL; + pRlmtMbuf->Length = FrameLength; + pRlmtMbuf->PortIdx = Port; + EvPara.pParaPtr = pRlmtMbuf; + SK_MEMCPY((char*)(pRlmtMbuf->pData), + (char*)(pMsg->data),FrameLength); + + if (SlowPathLock == SK_TRUE) { + spin_lock_irqsave(&pAC->SlowPathLock, Flags); + SkEventQueue(pAC, SKGE_RLMT, + SK_RLMT_PACKET_RECEIVED, + EvPara); + pAC->CheckQueue = SK_TRUE; + spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); + } else { + SkEventQueue(pAC, SKGE_RLMT, + SK_RLMT_PACKET_RECEIVED, + EvPara); + pAC->CheckQueue = SK_TRUE; + } + + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_RX_PROGRESS,("Q")); + } + if (pAC->dev[Port]->flags & (IFF_PROMISC | IFF_ALLMULTI)) { +#ifdef __ia64__ + pNewMsg = alloc_skb(pMsg->len, GFP_ATOMIC); + skb_reserve(pNewMsg, 2); /* to align IP */ + SK_MEMCPY(pNewMsg->data,pMsg->data,pMsg->len); + pNewMsg->ip_summed = pMsg->ip_summed; + pNewMsg->len = pMsg->len; + DEV_KFREE_SKB_ANY(pMsg); + pMsg = pNewMsg; +#endif + pMsg->dev = pAC->dev[Port]; + pMsg->protocol = eth_type_trans(pMsg,pAC->dev[Port]); + netif_rx(pMsg); + pAC->dev[Port]->last_rx = jiffies; + } else { + DEV_KFREE_SKB_ANY(pMsg); + } + } /* if packet for rlmt */ + PUSH_PKT_AS_LAST_IN_QUEUE(&pAC->RxPort[Port].RxQ_waiting, pSkPacket); + } /* end if-else (IsGoodPkt) */ + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("<== HandleReceives (Port %c)\n", 'A' + Port)); + return(SK_TRUE); + +} /* HandleReceives */ + +/*********************************************************************** + * + * CheckForSendComplete - Frees any freeable Tx bufffer + * + * Description: + * This function checks the queues of a port for completed send + * packets and returns these packets back to the OS. + * + * Notes: + * This function can run simultaneously for both ports if + * the OS function OSReturnPacket() can handle this, + * + * Such a send complete does not mean, that the packet is really + * out on the wire. We just know that the adapter has copied it + * into its internal memory and the buffer in the systems memory + * is no longer needed. + * + * Returns: N/A + */ +static void CheckForSendComplete( +SK_AC *pAC, /* pointer to adapter control context */ +SK_IOC IoC, /* I/O control context */ +int Port, /* port index */ +SK_PKT_QUEUE *pPQ, /* tx working packet queue to check */ +SK_LE_TABLE *pLETab, /* corresponding list element table */ +unsigned int Done) /* done index reported for this LET */ +{ + SK_PACKET *pSkPacket; + SK_PKT_QUEUE SendCmplPktQ = { NULL, NULL, SPIN_LOCK_UNLOCKED }; + SK_BOOL DoWakeQueue = SK_FALSE; + unsigned long Flags; + unsigned Put; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("==> CheckForSendComplete(Port %c)\n", 'A' + Port)); + + /* + ** Reset own bit in LE's between old and new Done index + ** This is not really necessairy but makes debugging easier + */ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("Clear Own Bits in TxTable from %d to %d\n", + pLETab->Done, (Done == 0) ? + NUM_LE_IN_TABLE(pLETab) : + (Done - 1))); + + spin_lock_irqsave(&(pPQ->QueueLock), Flags); + + CLEAR_LE_OWN_FROM_DONE_TO(pLETab, Done); + + Put = GET_PUT_IDX(pLETab); + + /* + ** Check whether some packets have been completed + */ + PLAIN_POP_FIRST_PKT_FROM_QUEUE(pPQ, pSkPacket); + while (pSkPacket != NULL) { + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("Check Completion of Tx packet %p\n", pSkPacket)); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("Put %d NewDone %d NextLe of Packet %d\n", Put, Done, + pSkPacket->NextLE)); + + if ((Put > Done) && + ((pSkPacket->NextLE > Put) || (pSkPacket->NextLE <= Done))) { + PLAIN_PUSH_PKT_AS_LAST_IN_QUEUE(&SendCmplPktQ, pSkPacket); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("Packet finished (a)\n")); + } else if ((Done > Put) && + (pSkPacket->NextLE > Put) && (pSkPacket->NextLE <= Done)) { + PLAIN_PUSH_PKT_AS_LAST_IN_QUEUE(&SendCmplPktQ, pSkPacket); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("Packet finished (b)\n")); + } else if ((Done == TXA_MAX_LE-1) && (Put == 0) && (pSkPacket->NextLE == 0)) { + PLAIN_PUSH_PKT_AS_LAST_IN_QUEUE(&SendCmplPktQ, pSkPacket); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("Packet finished (b)\n")); + DoWakeQueue = SK_TRUE; + } else if (Done == Put) { + /* all packets have been sent */ + PLAIN_PUSH_PKT_AS_LAST_IN_QUEUE(&SendCmplPktQ, pSkPacket); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("Packet finished (c)\n")); + } else { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("Packet not yet finished\n")); + PLAIN_PUSH_PKT_AS_FIRST_IN_QUEUE(pPQ, pSkPacket); + break; + } + PLAIN_POP_FIRST_PKT_FROM_QUEUE(pPQ, pSkPacket); + } + spin_unlock_irqrestore(&(pPQ->QueueLock), Flags); + + /* + ** Set new done index in list element table + */ + SET_DONE_INDEX(pLETab, Done); + + /* + ** All TX packets that are send complete should be added to + ** the free queue again for new sents to come + */ + pSkPacket = SendCmplPktQ.pHead; + while (pSkPacket != NULL) { + while (pSkPacket->pFrag != NULL) { + pci_unmap_page(pAC->PciDev, + (dma_addr_t) pSkPacket->pFrag->pPhys, + pSkPacket->pFrag->FragLen, + PCI_DMA_FROMDEVICE); + pSkPacket->pFrag = pSkPacket->pFrag->pNext; + } + + DEV_KFREE_SKB_ANY(pSkPacket->pMBuf); + pSkPacket->pMBuf = NULL; + pSkPacket = pSkPacket->pNext; /* get next packet */ + } + + /* + ** Append the available TX packets back to free queue + */ + if (SendCmplPktQ.pHead != NULL) { + spin_lock_irqsave(&(pAC->TxPort[Port][0].TxQ_free.QueueLock), Flags); + if (pAC->TxPort[Port][0].TxQ_free.pTail != NULL) { + pAC->TxPort[Port][0].TxQ_free.pTail->pNext = SendCmplPktQ.pHead; + pAC->TxPort[Port][0].TxQ_free.pTail = SendCmplPktQ.pTail; + if (pAC->TxPort[Port][0].TxQ_free.pHead->pNext == NULL) { + netif_wake_queue(pAC->dev[Port]); + } + } else { + pAC->TxPort[Port][0].TxQ_free.pHead = SendCmplPktQ.pHead; + pAC->TxPort[Port][0].TxQ_free.pTail = SendCmplPktQ.pTail; + netif_wake_queue(pAC->dev[Port]); + } + if (Done == Put) { + netif_wake_queue(pAC->dev[Port]); + } + if (DoWakeQueue) { + netif_wake_queue(pAC->dev[Port]); + DoWakeQueue = SK_FALSE; + } + spin_unlock_irqrestore(&pAC->TxPort[Port][0].TxQ_free.QueueLock, Flags); + } + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("<== CheckForSendComplete()\n")); + + return; +} /* CheckForSendComplete */ + +/***************************************************************************** + * + * UnmapAndFreeTxPktBuffer + * + * Description: + * This function free any allocated space of receive buffers + * + * Arguments: + * pAC - A pointer to the adapter context struct. + * + */ +static void UnmapAndFreeTxPktBuffer( +SK_AC *pAC, /* pointer to adapter context */ +SK_PACKET *pSkPacket, /* pointer to port struct of ring to fill */ +int TxPort) /* TX port index */ +{ + SK_FRAG *pFrag = pSkPacket->pFrag; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("--> UnmapAndFreeTxPktBuffer\n")); + + while (pFrag != NULL) { + pci_unmap_page(pAC->PciDev, + (dma_addr_t) pFrag->pPhys, + pFrag->FragLen, + PCI_DMA_FROMDEVICE); + pFrag = pFrag->pNext; + } + + DEV_KFREE_SKB_ANY(pSkPacket->pMBuf); + pSkPacket->pMBuf = NULL; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, + ("<-- UnmapAndFreeTxPktBuffer\n")); +} + +/***************************************************************************** + * + * HandleStatusLEs + * + * Description: + * This function checks for any new status LEs that may have been + * received. Those status LEs may either be Rx or Tx ones. + * + * Returns: N/A + */ +static SK_BOOL HandleStatusLEs( +#ifdef CONFIG_SK98LIN_NAPI +SK_AC *pAC, /* pointer to adapter context */ +int *WorkDone, /* Done counter needed for NAPI */ +int WorkToDo) /* ToDo counter for NAPI */ +#else +SK_AC *pAC) /* pointer to adapter context */ +#endif +{ + int DoneTxA[SK_MAX_MACS]; + int DoneTxS[SK_MAX_MACS]; + int Port; + SK_BOOL handledStatLE = SK_FALSE; + SK_BOOL NewDone = SK_FALSE; + SK_HWLE *pLE; + SK_U16 HighVal; + SK_U32 LowVal; + SK_U8 OpCode; + int i; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("==> HandleStatusLEs\n")); + + do { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("Check next Own Bit of ST-LE[%d]: 0x%li \n", + (pAC->StatusLETable.Done + 1) % NUM_LE_IN_TABLE(&pAC->StatusLETable), + OWN_OF_FIRST_LE(&pAC->StatusLETable))); + + while (OWN_OF_FIRST_LE(&pAC->StatusLETable) == HW_OWNER) { + GET_ST_LE(pLE, &pAC->StatusLETable); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("Working on finished status LE[%d]:\n", + GET_DONE_INDEX(&pAC->StatusLETable))); + SK_DBG_DUMP_ST_LE(pLE); + handledStatLE = SK_TRUE; + OpCode = STLE_GET_OPC(pLE) & ~HW_OWNER; + Port = STLE_GET_LINK(pLE); + +#ifdef USE_TIST_FOR_RESET + if (SK_ADAPTER_WAITING_FOR_TIST(pAC)) { + /* do we just have a tist LE ? */ + if ((OpCode & OP_RXTIMESTAMP) == OP_RXTIMESTAMP) { + for (i = 0; i < pAC->GIni.GIMacsFound; i++) { + if (SK_PORT_WAITING_FOR_ANY_TIST(pAC, i)) { + /* if a port is waiting for any tist it is done */ + SK_CLR_STATE_FOR_PORT(pAC, i); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DUMP, + ("Got any Tist on port %c (now 0x%X!!!)\n", + 'A' + i, pAC->AdapterResetState)); + } + if (SK_PORT_WAITING_FOR_SPECIFIC_TIST(pAC, i)) { + Y2_GET_TIST_LOW_VAL(pAC->IoBase, &LowVal); + if ((pAC->MinTistHi != pAC->GIni.GITimeStampCnt) || + (pAC->MinTistLo < LowVal)) { + /* time is up now */ + SK_CLR_STATE_FOR_PORT(pAC, i); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DUMP, + ("Got expected Tist on Port %c (now 0x%X)!!!\n", + 'A' + i, pAC->AdapterResetState)); +#ifdef Y2_SYNC_CHECK + pAC->FramesWithoutSyncCheck = + Y2_RESYNC_WATERMARK; +#endif + } else { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DUMP, + ("Got Tist %l:%l on Port %c but still waiting\n", + pAC->GIni.GITimeStampCnt, pAC->MinTistLo, + 'A' + i)); + } + } + } +#ifndef Y2_RECOVERY + if (!SK_ADAPTER_WAITING_FOR_TIST(pAC)) { + /* nobody needs tist anymore - turn it off */ + Y2_DISABLE_TIST(pAC->IoBase); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DUMP, + ("Turn off Tist !!!\n")); + } +#endif + } else if (OpCode == OP_TXINDEXLE) { + /* + * change OpCode to notify the folowing code + * to ignore the done index from this LE + * unfortunately tist LEs will be generated only + * for RxStat LEs + * so in order to get a safe Done index for a + * port currently waiting for a tist we have to + * get the done index directly from the BMU + */ + OpCode = OP_MOD_TXINDEX; + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DUMP, + ("Mark unusable TX_INDEX LE!!!\n")); + } else { + if (SK_PORT_WAITING_FOR_TIST(pAC, Port)) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DUMP, + ("Ignore LE 0x%X on Port %c!!!\n", + OpCode, 'A' + Port)); + OpCode = OP_MOD_LE; +#ifdef Y2_LE_CHECK + /* mark entries invalid */ + pAC->LastOpc = 0xFF; + pAC->LastPort = 3; +#endif + } + } + } /* if (SK_ADAPTER_WAITING_FOR_TIST(pAC)) */ +#endif + + + + + +#ifdef Y2_LE_CHECK + if (pAC->LastOpc != 0xFF) { + /* last opc is valid + * check if current opcode follows last opcode + */ + if ((((OpCode & OP_RXTIMESTAMP) == OP_RXTIMESTAMP) && (pAC->LastOpc != OP_RXSTAT)) || + (((OpCode & OP_RXCHKS) == OP_RXCHKS) && (pAC->LastOpc != OP_RXTIMESTAMP)) || + ((OpCode == OP_RXSTAT) && (pAC->LastOpc != OP_RXCHKS))) { + + /* opcode sequence broken + * current LE is invalid + */ + + if (pAC->LastOpc == OP_RXTIMESTAMP) { + /* force invalid checksum */ + pLE->St.StUn.StRxTCPCSum.RxTCPSum1 = 1; + pLE->St.StUn.StRxTCPCSum.RxTCPSum2 = 0; + OpCode = pAC->LastOpc = OP_RXCHKS; + Port = pAC->LastPort; + } else if (pAC->LastOpc == OP_RXCHKS) { + /* force invalid frame */ + Port = pAC->LastPort; + pLE->St.Stat.BufLen = 64; + pLE->St.StUn.StRxStatWord = GMR_FS_CRC_ERR; + OpCode = pAC->LastOpc = OP_RXSTAT; +#ifdef Y2_SYNC_CHECK + /* force rx sync check */ + pAC->FramesWithoutSyncCheck = Y2_RESYNC_WATERMARK; +#endif + } else if (pAC->LastOpc == OP_RXSTAT) { + /* create dont care tist */ + pLE->St.StUn.StRxTimeStamp = 0; + OpCode = pAC->LastOpc = OP_RXTIMESTAMP; + /* dont know the port yet */ + } else { +#ifdef DEBUG + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("Unknown LastOpc %X for Timestamp on port %c.\n", + pAC->LastOpc, Port)); +#endif + } + } + } +#endif + + switch (OpCode) { + case OP_RXSTAT: +#ifdef Y2_RECOVERY + pAC->LastOpc = OP_RXSTAT; +#endif + /* + ** This is always the last Status LE belonging + ** to a received packet -> handle it... + */ + if ((Port != 0) && (Port != 1)) { + /* Unknown port */ + panic("sk98lin: Unknown port %d\n", + Port); + } + + HandleReceives( + pAC, + Port, + STLE_GET_LEN(pLE), + STLE_GET_FRSTATUS(pLE), + pAC->StatusLETable.Bmu.Stat.TcpSum1, + pAC->StatusLETable.Bmu.Stat.TcpSum2, + pAC->StatusLETable.Bmu.Stat.RxTimeStamp, + pAC->StatusLETable.Bmu.Stat.VlanId); +#ifdef CONFIG_SK98LIN_NAPI + if (*WorkDone >= WorkToDo) { + break; + } + (*WorkDone)++; +#endif + break; + case OP_RXVLAN: + /* this value will be used for next RXSTAT */ + pAC->StatusLETable.Bmu.Stat.VlanId = STLE_GET_VLAN(pLE); + break; + case OP_RXTIMEVLAN: + /* this value will be used for next RXSTAT */ + pAC->StatusLETable.Bmu.Stat.VlanId = STLE_GET_VLAN(pLE); + /* fall through */ + case OP_RXTIMESTAMP: + /* this value will be used for next RXSTAT */ + pAC->StatusLETable.Bmu.Stat.RxTimeStamp = STLE_GET_TIST(pLE); +#ifdef Y2_RECOVERY + pAC->LastOpc = OP_RXTIMESTAMP; + pAC->LastPort = Port; +#endif + break; + case OP_RXCHKSVLAN: + /* this value will be used for next RXSTAT */ + pAC->StatusLETable.Bmu.Stat.VlanId = STLE_GET_VLAN(pLE); + /* fall through */ + case OP_RXCHKS: + /* this value will be used for next RXSTAT */ + pAC->StatusLETable.Bmu.Stat.TcpSum1 = STLE_GET_TCP1(pLE); + pAC->StatusLETable.Bmu.Stat.TcpSum2 = STLE_GET_TCP2(pLE); +#ifdef Y2_RECOVERY + pAC->LastPort = Port; + pAC->LastOpc = OP_RXCHKS; +#endif + break; + case OP_RSS_HASH: + /* this value will be used for next RXSTAT */ +#if 0 + pAC->StatusLETable.Bmu.Stat.RssHashValue = STLE_GET_RSS(pLE); +#endif + break; + case OP_TXINDEXLE: + /* + ** :;:; TODO + ** it would be possible to check for which queues + ** the index has been changed and call + ** CheckForSendComplete() only for such queues + */ + STLE_GET_DONE_IDX(pLE,LowVal,HighVal); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("LowVal: 0x%x HighVal: 0x%x\n", LowVal, HighVal)); + + /* + ** It would be possible to check whether we really + ** need the values for second port or sync queue, + ** but I think checking whether we need them is + ** more expensive than the calculation + */ + DoneTxA[0] = STLE_GET_DONE_IDX_TXA1(LowVal,HighVal); + DoneTxS[0] = STLE_GET_DONE_IDX_TXS1(LowVal,HighVal); + DoneTxA[1] = STLE_GET_DONE_IDX_TXA2(LowVal,HighVal); + DoneTxS[1] = STLE_GET_DONE_IDX_TXS2(LowVal,HighVal); + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("DoneTxa1 0x%x DoneTxS1: 0x%x DoneTxa2 0x%x DoneTxS2: 0x%x\n", + DoneTxA[0], DoneTxS[0], DoneTxA[1], DoneTxS[1])); + + NewDone = SK_TRUE; + break; +#ifdef USE_TIST_FOR_RESET + case OP_MOD_TXINDEX: + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DUMP, + ("OP_MOD_TXINDEX\n")); + SK_IN16(pAC->IoBase, Q_ADDR(Q_XA1, Q_DONE), &DoneTxA[0]); + if (pAC->GIni.GIMacsFound > 1) { + SK_IN16(pAC->IoBase, Q_ADDR(Q_XA2, Q_DONE), &DoneTxA[1]); + } + NewDone = SK_TRUE; + break; + case OP_MOD_LE: + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DUMP, + ("Ignore marked LE on port in Reset\n")); + break; +#endif + + default: + /* + ** Have to handle the illegal Opcode in Status LE + */ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("Unexpected OpCode\n")); + break; + } + +#ifdef Y2_RECOVERY + OpCode = STLE_GET_OPC(pLE) & ~HW_OWNER; + STLE_SET_OPC(pLE, OpCode); +#else + /* + ** Reset own bit we have to do this in order to detect a overflow + */ + STLE_SET_OPC(pLE, SW_OWNER); +#endif + } /* while (OWN_OF_FIRST_LE(&pAC->StatusLETable) == HW_OWNER) */ + + /* + ** Now handle any new transmit complete + */ + if (NewDone) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("Done Index for Tx BMU has been changed\n")); + for (Port = 0; Port < pAC->GIni.GIMacsFound; Port++) { + /* + ** Do we have a new Done idx ? + */ + if (DoneTxA[Port] != GET_DONE_INDEX(&pAC->TxPort[Port][0].TxALET)) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("Check TxA%d\n", Port + 1)); + CheckForSendComplete(pAC, pAC->IoBase, Port, + &(pAC->TxPort[Port][0].TxAQ_working), + &pAC->TxPort[Port][0].TxALET, + DoneTxA[Port]); + } else { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("No changes for TxA%d\n", Port + 1)); + } +#ifdef USE_SYNC_TX_QUEUE + if (HW_SYNC_TX_SUPPORTED(pAC)) { + /* + ** Do we have a new Done idx ? + */ + if (DoneTxS[Port] != + GET_DONE_INDEX(&pAC->TxPort[Port][0].TxSLET)) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_INT_SRC, + ("Check TxS%d\n", Port)); + CheckForSendComplete(pAC, pAC->IoBase, Port, + &(pAC->TxPort[Port][0].TxSQ_working), + &pAC->TxPort[Port][0].TxSLET, + DoneTxS[Port]); + } else { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_INT_SRC, + ("No changes for TxS%d\n", Port)); + } + } +#endif + } + } + NewDone = SK_FALSE; + + /* + ** Check whether we have to refill our RX table + */ + if (HW_FEATURE(pAC, HWF_WA_DEV_420)) { + if (NbrRxBuffersInHW < MAX_NBR_RX_BUFFERS_IN_HW) { + for (Port = 0; Port < pAC->GIni.GIMacsFound; Port++) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("Check for refill of RxBuffers on Port %c\n", 'A' + Port)); + FillReceiveTableYukon2(pAC, pAC->IoBase, Port); + } + } + } else { + for (Port = 0; Port < pAC->GIni.GIMacsFound; Port++) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, + ("Check for refill of RxBuffers on Port %c\n", 'A' + Port)); + if (NUM_FREE_LE_IN_TABLE(&pAC->RxPort[Port].RxLET) >= 64) { + FillReceiveTableYukon2(pAC, pAC->IoBase, Port); + } + } + } +#ifdef CONFIG_SK98LIN_NAPI + if (*WorkDone >= WorkToDo) { + break; + } +#endif + } while (OWN_OF_FIRST_LE(&pAC->StatusLETable) == HW_OWNER); + + /* + ** Clear status BMU + */ + SK_OUT32(pAC->IoBase, STAT_CTRL, SC_STAT_CLR_IRQ); + + return(handledStatLE); +} /* HandleStatusLEs */ + +/***************************************************************************** + * + * AllocateAndInitLETables - allocate memory for the LETable and init + * + * Description: + * This function will allocate space for the LETable and will also + * initialize them. The size of the tables must have been specified + * before. + * + * Arguments: + * pAC - A pointer to the adapter context struct. + * + * Returns: + * SK_TRUE - all LETables initialized + * SK_FALSE - failed + */ +static SK_BOOL AllocateAndInitLETables( +SK_AC *pAC) /* pointer to adapter context */ +{ + char *pVirtMemAddr; + dma_addr_t pPhysMemAddr = 0; + SK_U32 CurrMac; + unsigned Size; + unsigned Aligned; + unsigned Alignment; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("==> AllocateAndInitLETables()\n")); + + /* + ** Determine how much memory we need with respect to alignment + */ + Alignment = MAX_LEN_OF_LE_TAB; + Size = 0; + for (CurrMac = 0; CurrMac < pAC->GIni.GIMacsFound; CurrMac++) { + SK_ALIGN_SIZE(LE_TAB_SIZE(RX_MAX_LE), Alignment, Aligned); + Size += Aligned; + SK_ALIGN_SIZE(LE_TAB_SIZE(TXA_MAX_LE), Alignment, Aligned); + Size += Aligned; + SK_ALIGN_SIZE(LE_TAB_SIZE(TXS_MAX_LE), Alignment, Aligned); + Size += Aligned; + } + SK_ALIGN_SIZE(LE_TAB_SIZE(ST_MAX_LE), Alignment, Aligned); + Size += Aligned; + Size += Alignment; + pAC->SizeOfAlignedLETables = Size; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("Need %08x bytes in total\n", Size)); + + /* + ** Allocate the memory + */ + pVirtMemAddr = pci_alloc_consistent(pAC->PciDev, Size, &pPhysMemAddr); + if (pVirtMemAddr == NULL) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, + SK_DBGCAT_INIT | SK_DBGCAT_DRV_ERROR, + ("AllocateAndInitLETables: kernel malloc failed!\n")); + return (SK_FALSE); + } + + /* + ** Initialize the memory + */ + SK_MEMSET(pVirtMemAddr, 0, Size); + ALIGN_ADDR(pVirtMemAddr, Alignment); /* Macro defined in skgew.h */ + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("Virtual address of LETab is %8p!\n", pVirtMemAddr)); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("Phys address of LETab is %8p!\n", (void *) pPhysMemAddr)); + + for (CurrMac = 0; CurrMac < pAC->GIni.GIMacsFound; CurrMac++) { + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("RxLeTable for Port %c", 'A' + CurrMac)); + SkGeY2InitSingleLETable( + pAC, + &pAC->RxPort[CurrMac].RxLET, + RX_MAX_LE, + pVirtMemAddr, + (SK_U32) (pPhysMemAddr & 0xffffffff), + (SK_U32) (((SK_U64) pPhysMemAddr) >> 32)); + + SK_ALIGN_SIZE(LE_TAB_SIZE(RX_MAX_LE), Alignment, Aligned); + pVirtMemAddr += Aligned; + pPhysMemAddr += Aligned; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("TxALeTable for Port %c", 'A' + CurrMac)); + SkGeY2InitSingleLETable( + pAC, + &pAC->TxPort[CurrMac][0].TxALET, + TXA_MAX_LE, + pVirtMemAddr, + (SK_U32) (pPhysMemAddr & 0xffffffff), + (SK_U32) (((SK_U64) pPhysMemAddr) >> 32)); + + SK_ALIGN_SIZE(LE_TAB_SIZE(TXA_MAX_LE), Alignment, Aligned); + pVirtMemAddr += Aligned; + pPhysMemAddr += Aligned; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("TxSLeTable for Port %c", 'A' + CurrMac)); + SkGeY2InitSingleLETable( + pAC, + &pAC->TxPort[CurrMac][0].TxSLET, + TXS_MAX_LE, + pVirtMemAddr, + (SK_U32) (pPhysMemAddr & 0xffffffff), + (SK_U32) (((SK_U64) pPhysMemAddr) >> 32)); + + SK_ALIGN_SIZE(LE_TAB_SIZE(TXS_MAX_LE), Alignment, Aligned); + pVirtMemAddr += Aligned; + pPhysMemAddr += Aligned; + } + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG,("StLeTable")); + + SkGeY2InitSingleLETable( + pAC, + &pAC->StatusLETable, + ST_MAX_LE, + pVirtMemAddr, + (SK_U32) (pPhysMemAddr & 0xffffffff), + (SK_U32) (((SK_U64) pPhysMemAddr) >> 32)); + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("<== AllocateAndInitLETables(OK)\n")); + return(SK_TRUE); +} /* AllocateAndInitLETables */ + +/***************************************************************************** + * + * AllocatePacketBuffersYukon2 - allocate packet and fragment buffers + * + * Description: + * This function will allocate space for the packets and fragments + * + * Arguments: + * pAC - A pointer to the adapter context struct. + * + * Returns: + * SK_TRUE - Memory was allocated correctly + * SK_FALSE - An error occured + */ +static SK_BOOL AllocatePacketBuffersYukon2( +SK_AC *pAC) /* pointer to adapter context */ +{ + SK_PACKET *pRxPacket; + SK_PACKET *pTxPacket; + SK_U32 CurrBuff; + SK_U32 CurrMac; + unsigned long Flags; /* needed for POP/PUSH functions */ + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("==> AllocatePacketBuffersYukon2()")); + + for (CurrMac = 0; CurrMac < pAC->GIni.GIMacsFound; CurrMac++) { + /* + ** Allocate RX packet space, initialize the packets and + ** add them to the RX waiting queue. Waiting queue means + ** that packet and fragment are initialized, but no sk_buff + ** has been assigned to it yet. + */ + pAC->RxPort[CurrMac].ReceivePacketTable = + kmalloc((RX_MAX_NBR_BUFFERS * sizeof(SK_PACKET)), GFP_KERNEL); + + if (pAC->RxPort[CurrMac].ReceivePacketTable == NULL) { + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_INIT | SK_DBGCAT_DRV_ERROR, + ("AllocatePacketBuffersYukon2: no mem RxPkts (port %i)",CurrMac)); + break; + } else { + SK_MEMSET(pAC->RxPort[CurrMac].ReceivePacketTable, 0, + (RX_MAX_NBR_BUFFERS * sizeof(SK_PACKET))); + + pRxPacket = pAC->RxPort[CurrMac].ReceivePacketTable; + + for (CurrBuff=0;CurrBuffpFrag = &(pRxPacket->FragArray[0]); + pRxPacket->NumFrags = 1; + PUSH_PKT_AS_LAST_IN_QUEUE(&pAC->RxPort[CurrMac].RxQ_waiting, pRxPacket); + pRxPacket++; + } + } + + /* + ** Allocate TX packet space, initialize the packets and + ** add them to the TX free queue. Free queue means that + ** packet is available and initialized, but no fragment + ** has been assigned to it. (Must be done at TX side) + */ + pAC->TxPort[CurrMac][0].TransmitPacketTable = + kmalloc((TX_MAX_NBR_BUFFERS * sizeof(SK_PACKET)), GFP_KERNEL); + + if (pAC->TxPort[CurrMac][0].TransmitPacketTable == NULL) { + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_INIT | SK_DBGCAT_DRV_ERROR, + ("AllocatePacketBuffersYukon2: no mem TxPkts (port %i)",CurrMac)); + kfree(pAC->RxPort[CurrMac].ReceivePacketTable); + return(SK_FALSE); + } else { + SK_MEMSET(pAC->TxPort[CurrMac][0].TransmitPacketTable, 0, + (TX_MAX_NBR_BUFFERS * sizeof(SK_PACKET))); + + pTxPacket = pAC->TxPort[CurrMac][0].TransmitPacketTable; + + for (CurrBuff=0;CurrBuffTxPort[CurrMac][0].TxQ_free, pTxPacket); + pTxPacket++; + } + } + } /* end for (CurrMac = 0; CurrMac < pAC->GIni.GIMacsFound; CurrMac++) */ + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_INIT, + ("<== AllocatePacketBuffersYukon2 (OK)\n")); + return(SK_TRUE); + +} /* AllocatePacketBuffersYukon2 */ + +/***************************************************************************** + * + * FreeLETables - release allocated memory of LETables + * + * Description: + * This function will free all resources of the LETables + * + * Arguments: + * pAC - A pointer to the adapter context struct. + * + * Returns: N/A + */ +static void FreeLETables( +SK_AC *pAC) /* pointer to adapter control context */ +{ + dma_addr_t pPhysMemAddr; + char *pVirtMemAddr; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("==> FreeLETables()\n")); + + /* + ** The RxLETable is the first of all LET. + ** Therefore we can use its address for the input + ** of the free function. + */ + pVirtMemAddr = (char *) pAC->RxPort[0].RxLET.pLETab; + pPhysMemAddr = (((SK_U64) pAC->RxPort[0].RxLET.pPhyLETABHigh << (SK_U64) 32) | + ((SK_U64) pAC->RxPort[0].RxLET.pPhyLETABLow)); + + /* free continuous memory */ + pci_free_consistent(pAC->PciDev, pAC->SizeOfAlignedLETables, + pVirtMemAddr, pPhysMemAddr); + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("<== FreeLETables()\n")); +} /* FreeLETables */ + +/***************************************************************************** + * + * FreePacketBuffers - free's all packet buffers of an adapter + * + * Description: + * This function will free all previously allocated memory of the + * packet buffers. + * + * Arguments: + * pAC - A pointer to the adapter context struct. + * + * Returns: N/A + */ +static void FreePacketBuffers( +SK_AC *pAC) /* pointer to adapter control context */ +{ + int Port; + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("==> FreePacketBuffers()\n")); + + for (Port = 0; Port < pAC->GIni.GIMacsFound; Port++) { + kfree(pAC->RxPort[Port].ReceivePacketTable); + kfree(pAC->TxPort[Port][0].TransmitPacketTable); + } + + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DRV_MSG, + ("<== FreePacketBuffers()\n")); +} /* FreePacketBuffers */ + +/***************************************************************************** + * + * AllocAndMapRxBuffer - fill one buffer into the receive packet/fragment + * + * Description: + * The function allocates a new receive buffer and assigns it to the + * the passsed receive packet/fragment + * + * Returns: + * SK_TRUE - a buffer was allocated and assigned + * SK_FALSE - a buffer could not be added + */ +static SK_BOOL AllocAndMapRxBuffer( +SK_AC *pAC, /* pointer to the adapter control context */ +SK_PACKET *pSkPacket, /* pointer to packet that is to fill */ +int Port) /* port the packet belongs to */ +{ + struct sk_buff *pMsgBlock; /* pointer to a new message block */ + SK_U64 PhysAddr; /* physical address of a rx buffer */ + + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("--> AllocAndMapRxBuffer (Port: %i)\n", Port)); + + pMsgBlock = alloc_skb(pAC->RxPort[Port].RxBufSize, GFP_ATOMIC); + if (pMsgBlock == NULL) { + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_RX_PROGRESS | SK_DBGCAT_DRV_ERROR, + ("%s: Allocation of rx buffer failed !\n", + pAC->dev[Port]->name)); + SK_PNMI_CNT_NO_RX_BUF(pAC, pAC->RxPort[Port].PortIndex); + return(SK_FALSE); + } + skb_reserve(pMsgBlock, 8); + + PhysAddr = (SK_U64) pci_map_page(pAC->PciDev, + virt_to_page(pMsgBlock->data), + ((unsigned long) pMsgBlock->data & + ~PAGE_MASK), + pAC->RxPort[Port].RxBufSize, + PCI_DMA_FROMDEVICE); + + pSkPacket->pFrag->pVirt = pMsgBlock->data; + pSkPacket->pFrag->pPhys = PhysAddr; + pSkPacket->pFrag->FragLen = pAC->RxPort[Port].RxBufSize; /* for correct unmap */ + pSkPacket->pMBuf = pMsgBlock; + pSkPacket->PacketLen = pAC->RxPort[Port].RxBufSize; + + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, + ("<-- AllocAndMapRxBuffer\n")); + + return (SK_TRUE); +} /* AllocAndMapRxBuffer */ + +/******************************************************************************* + * + * End of file + * + ******************************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skge.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skge.c @@ -1,32 +1,26 @@ /****************************************************************************** * - * Name: skge.c - * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.45 $ - * Date: $Date: 2004/02/12 14:41:02 $ - * Purpose: The main driver source module + * Name: skge.c + * Project: GEnesis, PCI Gigabit Ethernet Adapter + * Version: $Revision: 1.60.2.51 $ + * Date: $Date: 2005/06/17 14:09:14 $ + * Purpose: The main driver source module * ******************************************************************************/ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect GmbH. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2005 Marvell. * * Driver for Marvell Yukon chipset and SysKonnect Gigabit Ethernet * Server Adapters. * - * Created 10-Feb-1999, based on Linux' acenic.c, 3c59x.c and - * SysKonnects GEnesis Solaris driver - * Author: Christoph Goos (cgoos@syskonnect.de) - * Mirko Lindner (mlindner@syskonnect.de) + * Author: Mirko Lindner (mlindner@syskonnect.de) + * Ralph Roesler (rroesler@syskonnect.de) * * Address all question to: linux@syskonnect.de * - * The technical manual for the adapters is available from SysKonnect's - * web pages: www.syskonnect.com - * Goto "Support" and search Knowledge Base for "manual". - * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -38,85 +32,53 @@ /****************************************************************************** * - * Possible compiler options (#define xxx / -Dxxx): - * - * debugging can be enable by changing SK_DEBUG_CHKMOD and - * SK_DEBUG_CHKCAT in makefile (described there). - * - ******************************************************************************/ - -/****************************************************************************** - * * Description: * - * This is the main module of the Linux GE driver. - * - * All source files except skge.c, skdrv1st.h, skdrv2nd.h and sktypes.h - * are part of SysKonnect's COMMON MODULES for the SK-98xx adapters. - * Those are used for drivers on multiple OS', so some thing may seem - * unnecessary complicated on Linux. Please do not try to 'clean up' - * them without VERY good reasons, because this will make it more - * difficult to keep the Linux driver in synchronisation with the - * other versions. - * - * Include file hierarchy: - * - * - * - * "h/skdrv1st.h" - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * those three depending on kernel version used: - * - * - * - * - * - * "h/skerror.h" - * "h/skdebug.h" - * "h/sktypes.h" - * "h/lm80.h" - * "h/xmac_ii.h" - * - * "h/skdrv2nd.h" - * "h/skqueue.h" - * "h/skgehwt.h" - * "h/sktimer.h" - * "h/ski2c.h" - * "h/skgepnmi.h" - * "h/skvpd.h" - * "h/skgehw.h" - * "h/skgeinit.h" - * "h/skaddr.h" - * "h/skgesirq.h" - * "h/skrlmt.h" + * All source files in this sk98lin directory except of the sk98lin + * Linux specific files + * + * - skdim.c + * - skethtool.c + * - skge.c + * - skproc.c + * - sky2.c + * - Makefile + * - h/skdrv1st.h + * - h/skdrv2nd.h + * - h/sktypes.h + * - h/skversion.h + * + * are part of SysKonnect's common modules for the SK-9xxx adapters. + * + * Those common module files which are not Linux specific are used to + * build drivers on different OS' (e.g. Windows, MAC OS) so that those + * drivers are based on the same set of files + * + * At a first glance, this seems to complicate things unnescessarily on + * Linux, but please do not try to 'clean up' them without VERY good + * reasons, because this will make it more difficult to keep the sk98lin + * driver for Linux in synchronisation with the other drivers running on + * other operating systems. * ******************************************************************************/ #include "h/skversion.h" -#include #include -#include #include -#include -#include +#include + +#ifdef CONFIG_PROC_FS +#include +#endif #include "h/skdrv1st.h" #include "h/skdrv2nd.h" +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,9) +#include +#endif + /******************************************************************************* * * Defines @@ -126,62 +88,14 @@ /* for debuging on x86 only */ /* #define BREAKPOINT() asm(" int $3"); */ -/* use the transmit hw checksum driver functionality */ -#define USE_SK_TX_CHECKSUM - -/* use the receive hw checksum driver functionality */ -#define USE_SK_RX_CHECKSUM - -/* use the scatter-gather functionality with sendfile() */ -#define SK_ZEROCOPY - -/* use of a transmit complete interrupt */ -#define USE_TX_COMPLETE - -/* - * threshold for copying small receive frames - * set to 0 to avoid copying, set to 9001 to copy all frames - */ -#define SK_COPY_THRESHOLD 50 - -/* number of adapters that can be configured via command line params */ -#define SK_MAX_CARD_PARAM 16 - - - -/* - * use those defines for a compile-in version of the driver instead - * of command line parameters - */ -// #define LINK_SPEED_A {"Auto", } -// #define LINK_SPEED_B {"Auto", } -// #define AUTO_NEG_A {"Sense", } -// #define AUTO_NEG_B {"Sense", } -// #define DUP_CAP_A {"Both", } -// #define DUP_CAP_B {"Both", } -// #define FLOW_CTRL_A {"SymOrRem", } -// #define FLOW_CTRL_B {"SymOrRem", } -// #define ROLE_A {"Auto", } -// #define ROLE_B {"Auto", } -// #define PREF_PORT {"A", } -// #define CON_TYPE {"Auto", } -// #define RLMT_MODE {"CheckLinkState", } - -#define DEV_KFREE_SKB(skb) dev_kfree_skb(skb) -#define DEV_KFREE_SKB_IRQ(skb) dev_kfree_skb_irq(skb) -#define DEV_KFREE_SKB_ANY(skb) dev_kfree_skb_any(skb) - /* Set blink mode*/ #define OEM_CONFIG_VALUE ( SK_ACT_LED_BLINK | \ SK_DUP_LED_NORMAL | \ SK_LED_LINK100_ON) - -/* Isr return value */ -#define SkIsrRetVar irqreturn_t -#define SkIsrRetNone IRQ_NONE -#define SkIsrRetHandled IRQ_HANDLED +#define CLEAR_AND_START_RX(Port) SK_OUT8(pAC->IoBase, RxQueueAddr[(Port)]+Q_CSR, CSR_START | CSR_IRQ_CL_F) +#define CLEAR_TX_IRQ(Port,Prio) SK_OUT8(pAC->IoBase, TxQueueAddr[(Port)][(Prio)]+Q_CSR, CSR_IRQ_CL_F) /******************************************************************************* @@ -190,12 +104,23 @@ * ******************************************************************************/ +static int __devinit sk98lin_init_device(struct pci_dev *pdev, const struct pci_device_id *ent); +static void sk98lin_remove_device(struct pci_dev *pdev); +#ifdef CONFIG_PM +static int sk98lin_suspend(struct pci_dev *pdev, pm_message_t state); +static int sk98lin_resume(struct pci_dev *pdev); +static void SkEnableWOMagicPacket(SK_AC *pAC, SK_IOC IoC, SK_MAC_ADDR MacAddr); +#endif +#ifdef Y2_RECOVERY +static void SkGeHandleKernelTimer(unsigned long ptr); +void SkGeCheckTimer(DEV_NET *pNet); +#endif static void FreeResources(struct SK_NET_DEVICE *dev); static int SkGeBoardInit(struct SK_NET_DEVICE *dev, SK_AC *pAC); static SK_BOOL BoardAllocMem(SK_AC *pAC); static void BoardFreeMem(SK_AC *pAC); static void BoardInitMem(SK_AC *pAC); -static void SetupRing(SK_AC*, void*, uintptr_t, RXD**, RXD**, RXD**, int*, SK_BOOL); +static void SetupRing(SK_AC*, void*, uintptr_t, RXD**, RXD**, RXD**, int*, int*, SK_BOOL); static SkIsrRetVar SkGeIsr(int irq, void *dev_id, struct pt_regs *ptregs); static SkIsrRetVar SkGeIsrOnePort(int irq, void *dev_id, struct pt_regs *ptregs); static int SkGeOpen(struct SK_NET_DEVICE *dev); @@ -206,39 +131,75 @@ static struct net_device_stats *SkGeStats(struct SK_NET_DEVICE *dev); static int SkGeIoctl(struct SK_NET_DEVICE *dev, struct ifreq *rq, int cmd); static void GetConfiguration(SK_AC*); +static void ProductStr(SK_AC*); static int XmitFrame(SK_AC*, TX_PORT*, struct sk_buff*); static void FreeTxDescriptors(SK_AC*pAC, TX_PORT*); static void FillRxRing(SK_AC*, RX_PORT*); static SK_BOOL FillRxDescriptor(SK_AC*, RX_PORT*); +#ifdef CONFIG_SK98LIN_NAPI +static int SkGePoll(struct net_device *dev, int *budget); +static void ReceiveIrq(SK_AC*, RX_PORT*, SK_BOOL, int*, int); +#else static void ReceiveIrq(SK_AC*, RX_PORT*, SK_BOOL); -static void ClearAndStartRx(SK_AC*, int); -static void ClearTxIrq(SK_AC*, int, int); +#endif +#ifdef SK_POLL_CONTROLLER +static void SkGeNetPoll(struct SK_NET_DEVICE *dev); +#endif static void ClearRxRing(SK_AC*, RX_PORT*); static void ClearTxRing(SK_AC*, TX_PORT*); static int SkGeChangeMtu(struct SK_NET_DEVICE *dev, int new_mtu); static void PortReInitBmu(SK_AC*, int); static int SkGeIocMib(DEV_NET*, unsigned int, int); static int SkGeInitPCI(SK_AC *pAC); -static void StartDrvCleanupTimer(SK_AC *pAC); -static void StopDrvCleanupTimer(SK_AC *pAC); -static int XmitFrameSG(SK_AC*, TX_PORT*, struct sk_buff*); - -#ifdef SK_DIAG_SUPPORT static SK_U32 ParseDeviceNbrFromSlotName(const char *SlotName); static int SkDrvInitAdapter(SK_AC *pAC, int devNbr); static int SkDrvDeInitAdapter(SK_AC *pAC, int devNbr); -#endif +extern void SkLocalEventQueue( SK_AC *pAC, + SK_U32 Class, + SK_U32 Event, + SK_U32 Param1, + SK_U32 Param2, + SK_BOOL Flag); +extern void SkLocalEventQueue64( SK_AC *pAC, + SK_U32 Class, + SK_U32 Event, + SK_U64 Param, + SK_BOOL Flag); + +static int XmitFrameSG(SK_AC*, TX_PORT*, struct sk_buff*); /******************************************************************************* * * Extern Function Prototypes * ******************************************************************************/ + +extern SK_BOOL SkY2AllocateResources(SK_AC *pAC); +extern void SkY2FreeResources(SK_AC *pAC); +extern void SkY2AllocateRxBuffers(SK_AC *pAC,SK_IOC IoC,int Port); +extern void SkY2FreeRxBuffers(SK_AC *pAC,SK_IOC IoC,int Port); +extern void SkY2FreeTxBuffers(SK_AC *pAC,SK_IOC IoC,int Port); +extern SkIsrRetVar SkY2Isr(int irq,void *dev_id,struct pt_regs *ptregs); +extern int SkY2Xmit(struct sk_buff *skb,struct SK_NET_DEVICE *dev); +extern void SkY2PortStop(SK_AC *pAC,SK_IOC IoC,int Port,int Dir,int RstMode); +extern void SkY2PortStart(SK_AC *pAC,SK_IOC IoC,int Port); +extern int SkY2RlmtSend(SK_AC *pAC,int PortNr,struct sk_buff *pMessage); +extern void SkY2RestartStatusUnit(SK_AC *pAC); +#ifdef CONFIG_SK98LIN_NAPI +extern int SkY2Poll(struct net_device *dev, int *budget); +#endif + extern void SkDimEnableModerationIfNeeded(SK_AC *pAC); -extern void SkDimDisplayModerationSettings(SK_AC *pAC); extern void SkDimStartModerationTimer(SK_AC *pAC); extern void SkDimModerate(SK_AC *pAC); -extern void SkGeBlinkTimer(unsigned long data); + +extern int SkEthIoctl(struct net_device *netdev, struct ifreq *ifr); + +#ifdef CONFIG_PROC_FS +static const char SK_Root_Dir_entry[] = "sk98lin"; +static struct proc_dir_entry *pSkRootDir; +extern struct file_operations sk_proc_fops; +#endif #ifdef DEBUG static void DumpMsg(struct sk_buff*, char*); @@ -247,33 +208,402 @@ #endif /* global variables *********************************************************/ +static const char *BootString = BOOT_STRING; +struct SK_NET_DEVICE *SkGeRootDev = NULL; static SK_BOOL DoPrintInterfaceChange = SK_TRUE; -extern struct ethtool_ops SkGeEthtoolOps; /* local variables **********************************************************/ static uintptr_t TxQueueAddr[SK_MAX_MACS][2] = {{0x680, 0x600},{0x780, 0x700}}; static uintptr_t RxQueueAddr[SK_MAX_MACS] = {0x400, 0x480}; +static int sk98lin_max_boards_found = 0; + +#ifdef CONFIG_PROC_FS +static struct proc_dir_entry *pSkRootDir; +#endif + + + +static struct pci_device_id sk98lin_pci_tbl[] __devinitdata = { +/* { pci_vendor_id, pci_device_id, * SAMPLE ENTRY! * + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, */ + { 0x1148, 0x9000, /* SysKonnect (1148), SK-9Sxx 10/100/1000Base-T Server Adapter */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x1186, 0x4b00, /* D-Link (1186), Gigabit Ethernet Adapter */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x1186, 0x4b01, /* D-Link (1186), Gigabit Ethernet Adapter */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x11ab, 0x4340, /* Marvell (11ab), Gigabit Ethernet Controller */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x11ab, 0x4341, /* Marvell (11ab), Gigabit Ethernet Controller */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x11ab, 0x4342, /* Marvell (11ab), Gigabit Ethernet Controller */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x11ab, 0x4343, /* Marvell (11ab), Gigabit Ethernet Controller */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x11ab, 0x4344, /* Marvell (11ab), Gigabit Ethernet Controller */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x11ab, 0x4345, /* Marvell (11ab), Gigabit Ethernet Controller */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x11ab, 0x4346, /* Marvell (11ab), Gigabit Ethernet Controller */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x11ab, 0x4347, /* Marvell (11ab), Gigabit Ethernet Controller */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x11ab, 0x4350, /* Marvell (11ab), Fast Ethernet Controller */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x11ab, 0x4351, /* Marvell (11ab), Fast Ethernet Controller */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x11ab, 0x4360, /* Marvell (11ab), Gigabit Ethernet Controller */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x11ab, 0x4361, /* Marvell (11ab), Gigabit Ethernet Controller */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0x11ab, 0x4362, /* Marvell (11ab), Gigabit Ethernet Controller */ + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { 0, } +}; + +MODULE_DEVICE_TABLE(pci, sk98lin_pci_tbl); + +static struct pci_driver sk98lin_driver = { + .name = DRIVER_FILE_NAME, + .id_table = sk98lin_pci_tbl, + .probe = sk98lin_init_device, + .remove = __devexit_p(sk98lin_remove_device), +#ifdef CONFIG_PM + .suspend = sk98lin_suspend, + .resume = sk98lin_resume +#endif +}; + /***************************************************************************** * - * SkPciWriteCfgDWord - write a 32 bit value to pci config space + * sk98lin_init_device - initialize the adapter * * Description: - * This routine writes a 32 bit value to the pci configuration - * space. + * This function initializes the adapter. Resources for + * the adapter are allocated and the adapter is brought into Init 1 + * state. * * Returns: - * 0 - indicate everything worked ok. - * != 0 - error indication + * 0, if everything is ok + * !=0, on error */ -static inline int SkPciWriteCfgDWord( -SK_AC *pAC, /* Adapter Control structure pointer */ -int PciAddr, /* PCI register address */ -SK_U32 Val) /* pointer to store the read value */ +static int __devinit sk98lin_init_device(struct pci_dev *pdev, + const struct pci_device_id *ent) + { - pci_write_config_dword(pAC->PciDev, PciAddr, Val); - return(0); -} /* SkPciWriteCfgDWord */ + static SK_BOOL sk98lin_boot_string = SK_FALSE; + static SK_BOOL sk98lin_proc_entry = SK_FALSE; + static int sk98lin_boards_found = 0; + SK_AC *pAC; + DEV_NET *pNet = NULL; + struct SK_NET_DEVICE *dev = NULL; + int retval; +#ifdef CONFIG_PROC_FS + struct proc_dir_entry *pProcFile; +#endif + + retval = pci_enable_device(pdev); + if (retval) { + printk(KERN_ERR "Cannot enable PCI device, " + "aborting.\n"); + return retval; + } + + dev = NULL; + pNet = NULL; + + + /* INSERT * We have to find the power-management capabilities */ + /* Find power-management capability. */ + + + + /* Configure DMA attributes. */ + retval = pci_set_dma_mask(pdev, (u64) 0xffffffffffffffffULL); + if (!retval) { + retval = pci_set_dma_mask(pdev, (u64) 0xffffffff); + if (retval) + return retval; + } else { + return retval; + } + + + if ((dev = alloc_etherdev(sizeof(DEV_NET))) == NULL) { + printk(KERN_ERR "Unable to allocate etherdev " + "structure!\n"); + return -ENODEV; + } + + pNet = dev->priv; + pNet->pAC = kmalloc(sizeof(SK_AC), GFP_KERNEL); + if (pNet->pAC == NULL){ + free_netdev(dev); + printk(KERN_ERR "Unable to allocate adapter " + "structure!\n"); + return -ENODEV; + } + + + /* Print message */ + if (!sk98lin_boot_string) { + /* set display flag to TRUE so that */ + /* we only display this string ONCE */ + sk98lin_boot_string = SK_TRUE; + printk("%s\n", BootString); + } + + memset(pNet->pAC, 0, sizeof(SK_AC)); + pAC = pNet->pAC; + pAC->PciDev = pdev; + pAC->PciDevId = pdev->device; + pAC->dev[0] = dev; + pAC->dev[1] = dev; + sprintf(pAC->Name, "SysKonnect SK-98xx"); + pAC->CheckQueue = SK_FALSE; + + dev->irq = pdev->irq; + retval = SkGeInitPCI(pAC); + if (retval) { + printk("SKGE: PCI setup failed: %i\n", retval); + free_netdev(dev); + return -ENODEV; + } + + SET_MODULE_OWNER(dev); + + dev->open = &SkGeOpen; + dev->stop = &SkGeClose; + dev->get_stats = &SkGeStats; + dev->set_multicast_list = &SkGeSetRxMode; + dev->set_mac_address = &SkGeSetMacAddr; + dev->do_ioctl = &SkGeIoctl; + dev->change_mtu = &SkGeChangeMtu; + dev->flags &= ~IFF_RUNNING; +#ifdef SK_POLL_CONTROLLER + dev->poll_controller = SkGeNetPoll; +#endif + SET_NETDEV_DEV(dev, &pdev->dev); + + pAC->Index = sk98lin_boards_found; + + if (SkGeBoardInit(dev, pAC)) { + free_netdev(dev); + return -ENODEV; + } else { + ProductStr(pAC); + } + + /* shifter to later moment in time... */ + if (CHIP_ID_YUKON_2(pAC)) { + dev->hard_start_xmit = &SkY2Xmit; +#ifdef CONFIG_SK98LIN_NAPI + dev->poll = &SkY2Poll; + dev->weight = 64; +#endif + } else { + dev->hard_start_xmit = &SkGeXmit; +#ifdef CONFIG_SK98LIN_NAPI + dev->poll = &SkGePoll; + dev->weight = 64; +#endif + } + +#ifdef NETIF_F_TSO +#ifdef USE_SK_TSO_FEATURE + if (CHIP_ID_YUKON_2(pAC)) { + dev->features |= NETIF_F_TSO; + } +#endif +#endif +#ifdef CONFIG_SK98LIN_ZEROCOPY + if (pAC->GIni.GIChipId != CHIP_ID_GENESIS) + dev->features |= NETIF_F_SG; +#endif +#ifdef USE_SK_TX_CHECKSUM + if (pAC->GIni.GIChipId != CHIP_ID_GENESIS) + dev->features |= NETIF_F_IP_CSUM; +#endif +#ifdef USE_SK_RX_CHECKSUM + pAC->RxPort[0].UseRxCsum = SK_TRUE; + if (pAC->GIni.GIMacsFound == 2 ) { + pAC->RxPort[1].UseRxCsum = SK_TRUE; + } +#endif + + /* Save the hardware revision */ + pAC->HWRevision = (((pAC->GIni.GIPciHwRev >> 4) & 0x0F)*10) + + (pAC->GIni.GIPciHwRev & 0x0F); + + /* Set driver globals */ + pAC->Pnmi.pDriverFileName = DRIVER_FILE_NAME; + pAC->Pnmi.pDriverReleaseDate = DRIVER_REL_DATE; + + SK_MEMSET(&(pAC->PnmiBackup), 0, sizeof(SK_PNMI_STRUCT_DATA)); + SK_MEMCPY(&(pAC->PnmiBackup), &(pAC->PnmiStruct), + sizeof(SK_PNMI_STRUCT_DATA)); + + /* Register net device */ + retval = register_netdev(dev); + if (retval) { + printk(KERN_ERR "SKGE: Could not register device.\n"); + FreeResources(dev); + free_netdev(dev); + return retval; + } + + /* Save initial device name */ + strcpy(pNet->InitialDevName, dev->name); + + /* Set network to off */ + netif_stop_queue(dev); + netif_carrier_off(dev); + + /* Print adapter specific string from vpd and config settings */ + printk("%s: %s\n", pNet->InitialDevName, pAC->DeviceStr); + printk(" PrefPort:%c RlmtMode:%s\n", + 'A' + pAC->Rlmt.Net[0].Port[pAC->Rlmt.Net[0].PrefPort]->PortNumber, + (pAC->RlmtMode==0) ? "Check Link State" : + ((pAC->RlmtMode==1) ? "Check Link State" : + ((pAC->RlmtMode==3) ? "Check Local Port" : + ((pAC->RlmtMode==7) ? "Check Segmentation" : + ((pAC->RlmtMode==17) ? "Dual Check Link State" :"Error"))))); + + SkGeYellowLED(pAC, pAC->IoBase, 1); + + memcpy((caddr_t) &dev->dev_addr, + (caddr_t) &pAC->Addr.Net[0].CurrentMacAddress, 6); + + /* First adapter... Create proc and print message */ +#ifdef CONFIG_PROC_FS + if (!sk98lin_proc_entry) { + sk98lin_proc_entry = SK_TRUE; + SK_MEMCPY(&SK_Root_Dir_entry, BootString, + sizeof(SK_Root_Dir_entry) - 1); + + /*Create proc (directory)*/ + if(!pSkRootDir) { + pSkRootDir = proc_mkdir(SK_Root_Dir_entry, proc_net); + if (!pSkRootDir) { + printk(KERN_WARNING "%s: Unable to create /proc/net/%s", + dev->name, SK_Root_Dir_entry); + } else { + pSkRootDir->owner = THIS_MODULE; + } + } + } + + /* Create proc file */ + if (pSkRootDir && + (pProcFile = create_proc_entry(pNet->InitialDevName, S_IRUGO, + pSkRootDir))) { + pProcFile->proc_fops = &sk_proc_fops; + pProcFile->data = dev; + } + +#endif + + pNet->PortNr = 0; + pNet->NetNr = 0; + + sk98lin_boards_found++; + pci_set_drvdata(pdev, dev); + + /* More then one port found */ + if ((pAC->GIni.GIMacsFound == 2 ) && (pAC->RlmtNets == 2)) { + if ((dev = alloc_etherdev(sizeof(DEV_NET))) == 0) { + printk(KERN_ERR "Unable to allocate etherdev " + "structure!\n"); + return -ENODEV; + } + + pAC->dev[1] = dev; + pNet = dev->priv; + pNet->PortNr = 1; + pNet->NetNr = 1; + pNet->pAC = pAC; + + if (CHIP_ID_YUKON_2(pAC)) { + dev->hard_start_xmit = &SkY2Xmit; +#ifdef CONFIG_SK98LIN_NAPI + dev->poll = &SkY2Poll; + dev->weight = 64; +#endif + } else { + dev->hard_start_xmit = &SkGeXmit; +#ifdef CONFIG_SK98LIN_NAPI + dev->poll = &SkGePoll; + dev->weight = 64; +#endif + } + dev->open = &SkGeOpen; + dev->stop = &SkGeClose; + dev->get_stats = &SkGeStats; + dev->set_multicast_list = &SkGeSetRxMode; + dev->set_mac_address = &SkGeSetMacAddr; + dev->do_ioctl = &SkGeIoctl; + dev->change_mtu = &SkGeChangeMtu; + dev->flags &= ~IFF_RUNNING; +#ifdef SK_POLL_CONTROLLER + dev->poll_controller = SkGeNetPoll; +#endif + +#ifdef NETIF_F_TSO +#ifdef USE_SK_TSO_FEATURE + if (CHIP_ID_YUKON_2(pAC)) { + dev->features |= NETIF_F_TSO; + } +#endif +#endif +#ifdef CONFIG_SK98LIN_ZEROCOPY + /* Don't handle if Genesis chipset */ + if (pAC->GIni.GIChipId != CHIP_ID_GENESIS) + dev->features |= NETIF_F_SG; +#endif +#ifdef USE_SK_TX_CHECKSUM + /* Don't handle if Genesis chipset */ + if (pAC->GIni.GIChipId != CHIP_ID_GENESIS) + dev->features |= NETIF_F_IP_CSUM; +#endif + + if (register_netdev(dev)) { + printk(KERN_ERR "SKGE: Could not register device.\n"); + free_netdev(dev); + pAC->dev[1] = pAC->dev[0]; + } else { + + /* Save initial device name */ + strcpy(pNet->InitialDevName, dev->name); + + /* Set network to off */ + netif_stop_queue(dev); + netif_carrier_off(dev); + + +#ifdef CONFIG_PROC_FS + if (pSkRootDir + && (pProcFile = create_proc_entry(pNet->InitialDevName, + S_IRUGO, pSkRootDir))) { + pProcFile->proc_fops = &sk_proc_fops; + pProcFile->data = dev; + } +#endif + + memcpy((caddr_t) &dev->dev_addr, + (caddr_t) &pAC->Addr.Net[1].CurrentMacAddress, 6); + + printk("%s: %s\n", pNet->InitialDevName, pAC->DeviceStr); + printk(" PrefPort:B RlmtMode:Dual Check Link State\n"); + } + } + + pAC->Index = sk98lin_boards_found; + sk98lin_max_boards_found = sk98lin_boards_found; + return 0; +} + + /***************************************************************************** * @@ -282,22 +612,26 @@ * Description: * This function initialize the PCI resources and IO * - * Returns: - * 0 - indicate everything worked ok. - * != 0 - error indication + * Returns: N/A + * */ -static __devinit int SkGeInitPCI(SK_AC *pAC) +int SkGeInitPCI(SK_AC *pAC) { struct SK_NET_DEVICE *dev = pAC->dev[0]; struct pci_dev *pdev = pAC->PciDev; int retval; + if (pci_enable_device(pdev) != 0) { + return 1; + } + dev->mem_start = pci_resource_start (pdev, 0); pci_set_master(pdev); - retval = pci_request_regions(pdev, "sk98lin"); - if (retval) - goto out; + if (pci_request_regions(pdev, DRIVER_FILE_NAME) != 0) { + retval = 2; + goto out_disable; + } #ifdef SK_BIG_ENDIAN /* @@ -315,9 +649,10 @@ /* * Remap the regs into kernel space. */ - pAC->IoBase = ioremap_nocache(dev->mem_start, 0x4000); - if (!pAC->IoBase) { - retval = -EIO; + pAC->IoBase = (char*)ioremap_nocache(dev->mem_start, 0x4000); + + if (!pAC->IoBase){ + retval = 3; goto out_release; } @@ -325,10 +660,391 @@ out_release: pci_release_regions(pdev); - out: + out_disable: + pci_disable_device(pdev); return retval; } +#ifdef Y2_RECOVERY +/***************************************************************************** + * + * SkGeHandleKernelTimer - Handle the kernel timer requests + * + * Description: + * If the requested time interval for the timer has elapsed, + * this function checks the link state. + * + * Returns: N/A + * + */ +static void SkGeHandleKernelTimer( +unsigned long ptr) /* holds the pointer to adapter control context */ +{ + DEV_NET *pNet = (DEV_NET*) ptr; + + pNet->TimerExpired = SK_TRUE; +} + +/***************************************************************************** + * + * sk98lin_check_timer - Resume the the card + * + * Description: + * This function checks the kernel timer + * + * Returns: N/A + * + */ +void SkGeCheckTimer( +DEV_NET *pNet) /* holds the pointer to adapter control context */ +{ + SK_AC *pAC = pNet->pAC; + SK_BOOL StartTimer = SK_TRUE; +#ifdef Y2_RX_CHECK + SK_BOOL ZeroRegister = SK_FALSE; + SK_U8 FifoReadPointer; + SK_U8 FifoReadLevel; + SK_U32 BmuStateMachine; +#endif + + if (pNet->InRecover) + return; + +#define TXPORT pAC->TxPort[pNet->PortNr][TX_PRIO_LOW] +#define RXPORT pAC->RxPort[pNet->PortNr] + + if ( (CHIP_ID_YUKON_2(pAC)) && + (netif_running(pAC->dev[pNet->PortNr]))) { + +#ifdef Y2_RX_CHECK + /* Check the receiver only if link is up*/ + if ( (netif_carrier_ok(pAC->dev[pNet->PortNr])) && + (pNet->LastJiffies == pAC->dev[pNet->PortNr]->last_rx)) { + + /* Nothing received */ + /* Get the register values */ + SK_IN8(pAC->IoBase, 0x0448, &FifoReadPointer); + SK_IN8(pAC->IoBase, 0x044a, &FifoReadLevel); + SK_IN32(pAC->IoBase, 0x043c, &BmuStateMachine); + + /* Check the register values */ + if ((pNet->FifoReadPointer != FifoReadPointer) || + (pNet->FifoReadLevel != FifoReadLevel) || + (pNet->BmuStateMachine != BmuStateMachine)) { + + /* Check the values */ + if ((pNet->FifoReadPointer) || + (pNet->FifoReadLevel) || + (pNet->BmuStateMachine)) { + + /* Check the jiffies again */ + if (pNet->LastJiffies == + pAC->dev[pNet->PortNr]->last_rx) { + /* Still nothing received */ + SkLocalEventQueue(pAC, SKGE_DRV, + SK_DRV_RECOVER,pNet->PortNr,-1,SK_FALSE); + } else { + ZeroRegister = SK_TRUE; + } + } else { + pNet->FifoReadPointer = FifoReadPointer; + pNet->FifoReadLevel = FifoReadLevel; + pNet->BmuStateMachine = BmuStateMachine; + + } + } else { + if ((FifoReadLevel != 0) && + (FifoReadPointer > 0)) { + /* Check the jiffies again */ + if (pNet->LastJiffies == + pAC->dev[pNet->PortNr]->last_rx) { + /* Still nothing received */ + SkLocalEventQueue(pAC, SKGE_DRV, + SK_DRV_RECOVER,pNet->PortNr,-1,SK_FALSE); + } else { + ZeroRegister = SK_TRUE; + } + } else { + ZeroRegister = SK_TRUE; + } + } + } else { + /* Clear the values */ + if ((pNet->FifoReadPointer) || + (pNet->FifoReadLevel) || + (pNet->BmuStateMachine)) { + ZeroRegister = SK_TRUE; + } + pNet->LastJiffies = + pAC->dev[pNet->PortNr]->last_rx; + } + + /* Clear the register values */ + if (ZeroRegister) { + pNet->FifoReadPointer = 0; + pNet->FifoReadLevel = 0; + pNet->BmuStateMachine = 0; + } +#endif + + /* Checkthe transmitter */ + if (!(IS_Q_EMPTY(&TXPORT.TxAQ_working))) { + if (TXPORT.LastDone != TXPORT.TxALET.Done) { + TXPORT.LastDone = TXPORT.TxALET.Done; + pNet->TransmitTimeoutTimer = 0; + } else { + pNet->TransmitTimeoutTimer++; + if (pNet->TransmitTimeoutTimer >= 10) { + pNet->TransmitTimeoutTimer = 0; +#ifdef CHECK_TRANSMIT_TIMEOUT + StartTimer = SK_FALSE; + SkLocalEventQueue(pAC, SKGE_DRV, + SK_DRV_RECOVER,pNet->PortNr,-1,SK_FALSE); +#endif + } + } + } + +#ifdef CHECK_TRANSMIT_TIMEOUT +// if (!timer_pending(&pNet->KernelTimer)) { + pNet->KernelTimer.expires = jiffies + (HZ/4); /* 250ms */ + add_timer(&pNet->KernelTimer); + pNet->TimerExpired = SK_FALSE; +// } +#endif + } +} +#endif + + +#ifdef CONFIG_PM +/***************************************************************************** + * + * sk98lin_resume - Resume the the card + * + * Description: + * This function resumes the card into the D0 state + * + * Returns: N/A + * + */ +static int sk98lin_resume( +struct pci_dev *pdev) /* the device that is to resume */ +{ + struct net_device *dev = pci_get_drvdata(pdev); + DEV_NET *pNet = (DEV_NET*) dev->priv; + SK_AC *pAC = pNet->pAC; + SK_U16 PmCtlSts; + + /* Set the power state to D0 */ + pci_set_power_state(pdev, 0); +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,9) + pci_restore_state(pdev); +#else + pci_restore_state(pdev, pAC->PciState); +#endif + + /* Set the adapter power state to D0 */ + SkPciReadCfgWord(pAC, PCI_PM_CTL_STS, &PmCtlSts); + PmCtlSts &= ~(PCI_PM_STATE_D3); /* reset all DState bits */ + PmCtlSts |= PCI_PM_STATE_D0; + SkPciWriteCfgWord(pAC, PCI_PM_CTL_STS, PmCtlSts); + + /* Reinit the adapter and start the port again */ + pAC->BoardLevel = SK_INIT_DATA; + SkDrvLeaveDiagMode(pAC); + + netif_device_attach(dev); + netif_start_queue(dev); + return 0; +} + +/***************************************************************************** + * + * sk98lin_suspend - Suspend the card + * + * Description: + * This function suspends the card into a defined state + * + * Returns: N/A + * + */ +static int sk98lin_suspend( +struct pci_dev *pdev, /* pointer to the device that is to suspend */ +pm_message_t state) /* what power state is desired by Linux? */ +{ + struct net_device *dev = pci_get_drvdata(pdev); + DEV_NET *pNet = (DEV_NET*) dev->priv; + SK_AC *pAC = pNet->pAC; + SK_U16 PciPMControlStatus; + SK_U16 PciPMCapabilities; + SK_MAC_ADDR MacAddr; + int i; + + /* GEnesis and first yukon revs do not support power management */ + if (pAC->GIni.GIChipId == CHIP_ID_YUKON) { + if (pAC->GIni.GIChipRev == 0) { + return 0; /* power management not supported */ + } + } + + if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) { + return 0; /* not supported for this chipset */ + } + + if (pAC->WolInfo.ConfiguredWolOptions == 0) { + return 0; /* WOL possible, but disabled via ethtool */ + } + + if(netif_running(dev)) { + netif_stop_queue(dev); /* stop device if running */ + } + + netif_device_detach(dev); + + /* read the PM control/status register from the PCI config space */ + SK_IN16(pAC->IoBase, PCI_C(pAC, PCI_PM_CTL_STS), &PciPMControlStatus); + + /* read the power management capabilities from the config space */ + SK_IN16(pAC->IoBase, PCI_C(pAC, PCI_PM_CAP_REG), &PciPMCapabilities); + + /* Enable WakeUp with Magic Packet - get MAC address from adapter */ + for (i = 0; i < SK_MAC_ADDR_LEN; i++) { + /* virtual address: will be used for data */ + SK_IN8(pAC->IoBase, (B2_MAC_1 + i), &MacAddr.a[i]); + } + + SkDrvEnterDiagMode(pAC); + SkEnableWOMagicPacket(pAC, pAC->IoBase, MacAddr); + + pci_enable_wake(pdev, 3, 1); + pci_enable_wake(pdev, 4, 1); /* 4 == D3 cold */ +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,9) + pci_save_state(pdev); +#else + pci_save_state(pdev, pAC->PciState); +#endif + pci_set_power_state(pdev, pci_choose_state(pdev, state)); /* set the state */ + + return 0; +} + + +/****************************************************************************** + * + * SkEnableWOMagicPacket - Enable Wake on Magic Packet on the adapter + * + * Context: + * init, pageable + * the adapter should be de-initialized before calling this function + * + * Returns: + * nothing + */ + +static void SkEnableWOMagicPacket( +SK_AC *pAC, /* Adapter Control Context */ +SK_IOC IoC, /* I/O control context */ +SK_MAC_ADDR MacAddr) /* MacAddr expected in magic packet */ +{ + SK_U16 Word; + SK_U32 DWord; + int i; + int HwPortIndex; + int Port = 0; + + /* use Port 0 as long as we do not have any dual port cards which support WOL */ + HwPortIndex = 0; + DWord = 0; + + SK_OUT16(IoC, 0x0004, 0x0002); /* clear S/W Reset */ + SK_OUT16(IoC, 0x0f10, 0x0002); /* clear Link Reset */ + + /* + * PHY Configuration: + * Autonegotioation is enalbed, advertise 10 HD, 10 FD, + * 100 HD, and 100 FD. + */ + if ((pAC->GIni.GIChipId == CHIP_ID_YUKON_EC) || + (pAC->GIni.GIChipId == CHIP_ID_YUKON) || + (pAC->GIni.GIChipId == CHIP_ID_YUKON_LITE)) { + + SK_OUT16(IoC, 0x0004, 0x0800); /* enable CLK_RUN */ + SK_OUT8(IoC, 0x0007, 0xa9); /* enable VAUX */ + + /* WA code for COMA mode */ + /* Only for yukon plus based chipsets rev A3 */ + if (pAC->GIni.GIChipRev == CHIP_REV_YU_LITE_A3) { + SK_IN32(IoC, B2_GP_IO, &DWord); + DWord |= GP_DIR_9; /* set to output */ + DWord &= ~GP_IO_9; /* clear PHY reset (active high) */ + SK_OUT32(IoC, B2_GP_IO, DWord); /* clear PHY reset */ + } + + if ((pAC->GIni.GIChipId == CHIP_ID_YUKON_LITE) || + (pAC->GIni.GIChipId == CHIP_ID_YUKON)) { + SK_OUT32(IoC, 0x0f04, 0x01f04001); /* set PHY reset */ + SK_OUT32(IoC, 0x0f04, 0x01f04002); /* clear PHY reset */ + } else { + SK_OUT8(IoC, 0x0f04, 0x02); /* clear PHY reset */ + } + + SK_OUT8(IoC, 0x0f00, 0x02); /* clear MAC reset */ + SkGmPhyWrite(pAC, IoC, Port, 4, 0x01e1); /* advertise 10/100 HD/FD */ + SkGmPhyWrite(pAC, IoC, Port, 9, 0x0000); /* do not advertise 1000 HD/FD */ + SkGmPhyWrite(pAC, IoC, Port, 00, 0xB300); /* 100 MBit, disable Autoneg */ + } else if (pAC->GIni.GIChipId == CHIP_ID_YUKON_FE) { + SK_OUT8(IoC, 0x0007, 0xa9); /* enable VAUX */ + SK_OUT8(IoC, 0x0f04, 0x02); /* clear PHY reset */ + SK_OUT8(IoC, 0x0f00, 0x02); /* clear MAC reset */ + SkGmPhyWrite(pAC, IoC, Port, 16, 0x0130); /* Enable Automatic Crossover */ + SkGmPhyWrite(pAC, IoC, Port, 00, 0xB300); /* 100 MBit, disable Autoneg */ + } + + + /* + * MAC Configuration: + * Set the MAC to 100 HD and enable the auto update features + * for Speed, Flow Control and Duplex Mode. + * If autonegotiation completes successfully the + * MAC takes the link parameters from the PHY. + * If the link partner doesn't support autonegotiation + * the MAC can receive magic packets if the link partner + * uses 100 HD. + */ + SK_OUT16(IoC, 0x2804, 0x3832); + + + /* + * Set Up Magic Packet parameters + */ + for (i = 0; i < 6; i+=2) { /* set up magic packet MAC address */ + SK_IN16(IoC, 0x100 + i, &Word); + SK_OUT16(IoC, 0xf24 + i, Word); + } + + SK_OUT16(IoC, 0x0f20, 0x0208); /* enable PME on magic packet */ + /* and on wake up frame */ + + /* + * Set up PME generation + */ + /* set PME legacy mode */ + /* Only for PCI express based chipsets */ + if ((pAC->GIni.GIChipId == CHIP_ID_YUKON_EC) || + (pAC->GIni.GIChipId == CHIP_ID_YUKON_FE)) { + SkPciReadCfgDWord(pAC, 0x40, &DWord); + DWord |= 0x8000; + SkPciWriteCfgDWord(pAC, 0x40, DWord); + } + + /* clear PME status and switch adapter to DState */ + SkPciReadCfgWord(pAC, 0x4c, &Word); + Word |= 0x103; + SkPciWriteCfgWord(pAC, 0x4c, Word); +} /* SkEnableWOMagicPacket */ +#endif + /***************************************************************************** * @@ -347,20 +1063,24 @@ DEV_NET *pNet; SK_AC *pAC; - pNet = netdev_priv(dev); - pAC = pNet->pAC; - AllocFlag = pAC->AllocFlag; - if (pAC->PciDev) { - pci_release_regions(pAC->PciDev); - } - if (AllocFlag & SK_ALLOC_IRQ) { - free_irq(dev->irq, dev); - } - if (pAC->IoBase) { - iounmap(pAC->IoBase); - } - if (pAC->pDescrMem) { - BoardFreeMem(pAC); + if (dev->priv) { + pNet = (DEV_NET*) dev->priv; + pAC = pNet->pAC; + AllocFlag = pAC->AllocFlag; + if (pAC->PciDev) { + pci_release_regions(pAC->PciDev); + } + if (AllocFlag & SK_ALLOC_IRQ) { + free_irq(dev->irq, dev); + } + if (pAC->IoBase) { + iounmap(pAC->IoBase); + } + if (CHIP_ID_YUKON_2(pAC)) { + SkY2FreeResources(pAC); + } else { + BoardFreeMem(pAC); + } } } /* FreeResources */ @@ -369,6 +1089,7 @@ MODULE_DESCRIPTION("SysKonnect SK-NET Gigabit Ethernet SK-98xx driver"); MODULE_LICENSE("GPL"); + #ifdef LINK_SPEED_A static char *Speed_A[SK_MAX_CARD_PARAM] = LINK_SPEED; #else @@ -450,9 +1171,10 @@ static int IntsPerSec[SK_MAX_CARD_PARAM]; static char *Moderation[SK_MAX_CARD_PARAM]; static char *ModerationMask[SK_MAX_CARD_PARAM]; -static char *AutoSizing[SK_MAX_CARD_PARAM]; -static char *Stats[SK_MAX_CARD_PARAM]; +static char *LowLatency[SK_MAX_CARD_PARAM]; + +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,9) module_param_array(Speed_A, charp, NULL, 0); module_param_array(Speed_B, charp, NULL, 0); module_param_array(AutoNeg_A, charp, NULL, 0); @@ -469,9 +1191,117 @@ /* used for interrupt moderation */ module_param_array(IntsPerSec, int, NULL, 0); module_param_array(Moderation, charp, NULL, 0); -module_param_array(Stats, charp, NULL, 0); module_param_array(ModerationMask, charp, NULL, 0); -module_param_array(AutoSizing, charp, NULL, 0); +module_param_array(LowLatency, charp, NULL, 0); +#else +MODULE_PARM(Speed_A, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(Speed_B, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(AutoNeg_A, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(AutoNeg_B, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(DupCap_A, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(DupCap_B, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(FlowCtrl_A, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(FlowCtrl_B, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(Role_A, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(Role_B, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(ConType, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(PrefPort, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(RlmtMode, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(IntsPerSec, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "i"); +MODULE_PARM(Moderation, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(ModerationMask, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +MODULE_PARM(LowLatency, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s"); +#endif + + +/***************************************************************************** + * + * sk98lin_remove_device - device deinit function + * + * Description: + * Disable adapter if it is still running, free resources, + * free device struct. + * + * Returns: N/A + */ + +static void sk98lin_remove_device(struct pci_dev *pdev) +{ +DEV_NET *pNet; +SK_AC *pAC; +struct SK_NET_DEVICE *next; +unsigned long Flags; +struct net_device *dev = pci_get_drvdata(pdev); + + + /* Device not available. Return. */ + if (!dev) + return; + + pNet = (DEV_NET*) dev->priv; + pAC = pNet->pAC; + next = pAC->Next; + + netif_stop_queue(dev); + SkGeYellowLED(pAC, pAC->IoBase, 0); + + if(pAC->BoardLevel == SK_INIT_RUN) { + /* board is still alive */ + spin_lock_irqsave(&pAC->SlowPathLock, Flags); + SkLocalEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, + 0, -1, SK_FALSE); + SkLocalEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, + 1, -1, SK_TRUE); + + /* disable interrupts */ + SK_OUT32(pAC->IoBase, B0_IMSK, 0); + SkGeDeInit(pAC, pAC->IoBase); + spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); + pAC->BoardLevel = SK_INIT_DATA; + /* We do NOT check here, if IRQ was pending, of course*/ + } + + if(pAC->BoardLevel == SK_INIT_IO) { + /* board is still alive */ + SkGeDeInit(pAC, pAC->IoBase); + pAC->BoardLevel = SK_INIT_DATA; + } + + if ((pAC->GIni.GIMacsFound == 2) && pAC->RlmtNets == 2){ + unregister_netdev(pAC->dev[1]); + free_netdev(pAC->dev[1]); + } + + FreeResources(dev); + +#ifdef CONFIG_PROC_FS + /* Remove the sk98lin procfs device entries */ + if ((pAC->GIni.GIMacsFound == 2) && pAC->RlmtNets == 2){ + remove_proc_entry(pAC->dev[1]->name, pSkRootDir); + } + remove_proc_entry(pNet->InitialDevName, pSkRootDir); +#endif + + dev->get_stats = NULL; + /* + * otherwise unregister_netdev calls get_stats with + * invalid IO ... :-( + */ + unregister_netdev(dev); + free_netdev(dev); + kfree(pAC); + sk98lin_max_boards_found--; + +#ifdef CONFIG_PROC_FS + /* Remove all Proc entries if last device */ + if (sk98lin_max_boards_found == 0) { + /* clear proc-dir */ + remove_proc_entry(pSkRootDir->name, proc_net); + } +#endif + +} + /***************************************************************************** * @@ -486,7 +1316,7 @@ * 0, if everything is ok * !=0, on error */ -static int __devinit SkGeBoardInit(struct SK_NET_DEVICE *dev, SK_AC *pAC) +static int __init SkGeBoardInit(struct SK_NET_DEVICE *dev, SK_AC *pAC) { short i; unsigned long Flags; @@ -509,12 +1339,10 @@ spin_lock_init(&pAC->TxPort[i][0].TxDesRingLock); spin_lock_init(&pAC->RxPort[i].RxDesRingLock); } - spin_lock_init(&pAC->SlowPathLock); - /* setup phy_id blink timer */ - pAC->BlinkTimer.function = SkGeBlinkTimer; - pAC->BlinkTimer.data = (unsigned long) dev; - init_timer(&pAC->BlinkTimer); + spin_lock_init(&pAC->SlowPathLock); + spin_lock_init(&pAC->TxQueueLock); /* for Yukon2 chipsets */ + spin_lock_init(&pAC->SetPutIndexLock); /* for Yukon2 chipsets */ /* level 0 init common modules here */ @@ -523,7 +1351,7 @@ if (SkGeInit(pAC, pAC->IoBase, SK_INIT_DATA) != 0) { printk("HWInit (0) failed.\n"); spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); - return -EIO; + return(-EAGAIN); } SkI2cInit( pAC, pAC->IoBase, SK_INIT_DATA); SkEventInit(pAC, pAC->IoBase, SK_INIT_DATA); @@ -533,19 +1361,17 @@ SkTimerInit(pAC, pAC->IoBase, SK_INIT_DATA); pAC->BoardLevel = SK_INIT_DATA; - pAC->RxBufSize = ETH_BUF_SIZE; + pAC->RxPort[0].RxBufSize = ETH_BUF_SIZE; + pAC->RxPort[1].RxBufSize = ETH_BUF_SIZE; SK_PNMI_SET_DRIVER_DESCR(pAC, DescrString); SK_PNMI_SET_DRIVER_VER(pAC, VerStr); - spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); - /* level 1 init common modules here (HW init) */ - spin_lock_irqsave(&pAC->SlowPathLock, Flags); if (SkGeInit(pAC, pAC->IoBase, SK_INIT_IO) != 0) { printk("sk98lin: HWInit (1) failed.\n"); spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); - return -EIO; + return(-EAGAIN); } SkI2cInit( pAC, pAC->IoBase, SK_INIT_IO); SkEventInit(pAC, pAC->IoBase, SK_INIT_IO); @@ -553,46 +1379,93 @@ SkAddrInit( pAC, pAC->IoBase, SK_INIT_IO); SkRlmtInit( pAC, pAC->IoBase, SK_INIT_IO); SkTimerInit(pAC, pAC->IoBase, SK_INIT_IO); +#ifdef Y2_RECOVERY + /* mark entries invalid */ + pAC->LastPort = 3; + pAC->LastOpc = 0xFF; +#endif /* Set chipset type support */ - pAC->ChipsetType = 0; if ((pAC->GIni.GIChipId == CHIP_ID_YUKON) || - (pAC->GIni.GIChipId == CHIP_ID_YUKON_LITE)) { - pAC->ChipsetType = 1; + (pAC->GIni.GIChipId == CHIP_ID_YUKON_LITE) || + (pAC->GIni.GIChipId == CHIP_ID_YUKON_LP)) { + pAC->ChipsetType = 1; /* Yukon chipset (descriptor logic) */ + } else if (CHIP_ID_YUKON_2(pAC)) { + pAC->ChipsetType = 2; /* Yukon2 chipset (list logic) */ + } else { + pAC->ChipsetType = 0; /* Genesis chipset (descriptor logic) */ + } + + /* wake on lan support */ + pAC->WolInfo.SupportedWolOptions = 0; +#if defined (ETHTOOL_GWOL) && defined (ETHTOOL_SWOL) + if (pAC->GIni.GIChipId != CHIP_ID_GENESIS) { + pAC->WolInfo.SupportedWolOptions = WAKE_MAGIC; + if (pAC->GIni.GIChipId == CHIP_ID_YUKON) { + if (pAC->GIni.GIChipRev == 0) { + pAC->WolInfo.SupportedWolOptions = 0; + } + } } +#endif + pAC->WolInfo.ConfiguredWolOptions = pAC->WolInfo.SupportedWolOptions; GetConfiguration(pAC); if (pAC->RlmtNets == 2) { - pAC->GIni.GIPortUsage = SK_MUL_LINK; + pAC->GIni.GP[0].PPortUsage = SK_MUL_LINK; + pAC->GIni.GP[1].PPortUsage = SK_MUL_LINK; } pAC->BoardLevel = SK_INIT_IO; spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); - if (pAC->GIni.GIMacsFound == 2) { - Ret = request_irq(dev->irq, SkGeIsr, SA_SHIRQ, "sk98lin", dev); - } else if (pAC->GIni.GIMacsFound == 1) { - Ret = request_irq(dev->irq, SkGeIsrOnePort, SA_SHIRQ, - "sk98lin", dev); - } else { - printk(KERN_WARNING "sk98lin: Illegal number of ports: %d\n", - pAC->GIni.GIMacsFound); - return -EIO; + if (!CHIP_ID_YUKON_2(pAC)) { + if (pAC->GIni.GIMacsFound == 2) { + Ret = request_irq(dev->irq, SkGeIsr, SA_SHIRQ, dev->name, dev); + } else if (pAC->GIni.GIMacsFound == 1) { + Ret = request_irq(dev->irq, SkGeIsrOnePort, SA_SHIRQ, dev->name, dev); + } else { + printk(KERN_WARNING "sk98lin: Illegal number of ports: %d\n", + pAC->GIni.GIMacsFound); + return -EAGAIN; + } + } + else { + Ret = request_irq(dev->irq, SkY2Isr, SA_SHIRQ, dev->name, dev); } if (Ret) { printk(KERN_WARNING "sk98lin: Requested IRQ %d is busy.\n", - dev->irq); - return Ret; + dev->irq); + return -EAGAIN; } pAC->AllocFlag |= SK_ALLOC_IRQ; - /* Alloc memory for this board (Mem for RxD/TxD) : */ - if(!BoardAllocMem(pAC)) { - printk("No memory for descriptor rings.\n"); - return -ENOMEM; + /* + ** Alloc descriptor/LETable memory for this board (both RxD/TxD) + */ + if (CHIP_ID_YUKON_2(pAC)) { + if (!SkY2AllocateResources(pAC)) { + printk("No memory for Yukon2 settings\n"); + return(-EAGAIN); + } + } else { + if(!BoardAllocMem(pAC)) { + printk("No memory for descriptor rings.\n"); + return(-EAGAIN); + } } +#ifdef SK_USE_CSUM + SkCsSetReceiveFlags(pAC, + SKCS_PROTO_IP | SKCS_PROTO_TCP | SKCS_PROTO_UDP, + &pAC->CsOfs1, &pAC->CsOfs2, 0); + pAC->CsOfs = (pAC->CsOfs2 << 16) | pAC->CsOfs1; +#endif + + /* + ** Function BoardInitMem() for Yukon dependent settings... + */ BoardInitMem(pAC); /* tschilling: New common function with minimum size check. */ DualNet = SK_FALSE; @@ -604,11 +1477,22 @@ pAC, pAC->ActivePort, DualNet)) { - BoardFreeMem(pAC); + if (CHIP_ID_YUKON_2(pAC)) { + SkY2FreeResources(pAC); + } else { + BoardFreeMem(pAC); + } + printk("sk98lin: SkGeInitAssignRamToQueues failed.\n"); - return -EIO; + return(-EAGAIN); } + /* + * Register the device here + */ + pAC->Next = SkGeRootDev; + SkGeRootDev = dev; + return (0); } /* SkGeBoardInit */ @@ -627,7 +1511,8 @@ * SK_TRUE, if all memory could be allocated * SK_FALSE, if not */ -static __devinit SK_BOOL BoardAllocMem(SK_AC *pAC) +static SK_BOOL BoardAllocMem( +SK_AC *pAC) { caddr_t pDescrMem; /* pointer to descriptor memory area */ size_t AllocLength; /* length of complete descriptor area */ @@ -697,16 +1582,20 @@ SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY, ("BoardFreeMem\n")); + + if (pAC->pDescrMem) { + #if (BITS_PER_LONG == 32) - AllocLength = (RX_RING_SIZE + TX_RING_SIZE) * pAC->GIni.GIMacsFound + 8; + AllocLength = (RX_RING_SIZE + TX_RING_SIZE) * pAC->GIni.GIMacsFound + 8; #else - AllocLength = (RX_RING_SIZE + TX_RING_SIZE) * pAC->GIni.GIMacsFound - + RX_RING_SIZE + 8; + AllocLength = (RX_RING_SIZE + TX_RING_SIZE) * pAC->GIni.GIMacsFound + + RX_RING_SIZE + 8; #endif - pci_free_consistent(pAC->PciDev, AllocLength, + pci_free_consistent(pAC->PciDev, AllocLength, pAC->pDescrMem, pAC->pDescrMemDMA); - pAC->pDescrMem = NULL; + pAC->pDescrMem = NULL; + } } /* BoardFreeMem */ @@ -715,12 +1604,13 @@ * BoardInitMem - initiate the descriptor rings * * Description: - * This function sets the descriptor rings up in memory. + * This function sets the descriptor rings or LETables up in memory. * The adapter is initialized with the descriptor start addresses. * * Returns: N/A */ -static __devinit void BoardInitMem(SK_AC *pAC) +static void BoardInitMem( +SK_AC *pAC) /* pointer to adapter context */ { int i; /* loop counter */ int RxDescrSize; /* the size of a rx descriptor rounded up to alignment*/ @@ -729,34 +1619,37 @@ SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY, ("BoardInitMem\n")); - RxDescrSize = (((sizeof(RXD) - 1) / DESCR_ALIGN) + 1) * DESCR_ALIGN; - pAC->RxDescrPerRing = RX_RING_SIZE / RxDescrSize; - TxDescrSize = (((sizeof(TXD) - 1) / DESCR_ALIGN) + 1) * DESCR_ALIGN; - pAC->TxDescrPerRing = TX_RING_SIZE / RxDescrSize; + if (!pAC->GIni.GIYukon2) { + RxDescrSize = (((sizeof(RXD) - 1) / DESCR_ALIGN) + 1) * DESCR_ALIGN; + pAC->RxDescrPerRing = RX_RING_SIZE / RxDescrSize; + TxDescrSize = (((sizeof(TXD) - 1) / DESCR_ALIGN) + 1) * DESCR_ALIGN; + pAC->TxDescrPerRing = TX_RING_SIZE / RxDescrSize; - for (i=0; iGIni.GIMacsFound; i++) { - SetupRing( - pAC, - pAC->TxPort[i][0].pTxDescrRing, - pAC->TxPort[i][0].VTxDescrRing, - (RXD**)&pAC->TxPort[i][0].pTxdRingHead, - (RXD**)&pAC->TxPort[i][0].pTxdRingTail, - (RXD**)&pAC->TxPort[i][0].pTxdRingPrev, - &pAC->TxPort[i][0].TxdRingFree, - SK_TRUE); - SetupRing( - pAC, - pAC->RxPort[i].pRxDescrRing, - pAC->RxPort[i].VRxDescrRing, - &pAC->RxPort[i].pRxdRingHead, - &pAC->RxPort[i].pRxdRingTail, - &pAC->RxPort[i].pRxdRingPrev, - &pAC->RxPort[i].RxdRingFree, - SK_FALSE); + for (i=0; iGIni.GIMacsFound; i++) { + SetupRing( + pAC, + pAC->TxPort[i][0].pTxDescrRing, + pAC->TxPort[i][0].VTxDescrRing, + (RXD**)&pAC->TxPort[i][0].pTxdRingHead, + (RXD**)&pAC->TxPort[i][0].pTxdRingTail, + (RXD**)&pAC->TxPort[i][0].pTxdRingPrev, + &pAC->TxPort[i][0].TxdRingFree, + &pAC->TxPort[i][0].TxdRingPrevFree, + SK_TRUE); + SetupRing( + pAC, + pAC->RxPort[i].pRxDescrRing, + pAC->RxPort[i].VRxDescrRing, + &pAC->RxPort[i].pRxdRingHead, + &pAC->RxPort[i].pRxdRingTail, + &pAC->RxPort[i].pRxdRingPrev, + &pAC->RxPort[i].RxdRingFree, + &pAC->RxPort[i].RxdRingFree, + SK_FALSE); + } } } /* BoardInitMem */ - /***************************************************************************** * * SetupRing - create one descriptor ring @@ -776,6 +1669,7 @@ RXD **ppRingTail, /* address where the tail should be written */ RXD **ppRingPrev, /* address where the tail should be written */ int *pRingFree, /* address where the # of free descr. goes */ +int *pRingPrevFree, /* address where the # of free descr. goes */ SK_BOOL IsTx) /* flag: is this a tx ring */ { int i; /* loop counter */ @@ -808,7 +1702,7 @@ /* set the pointers right */ pDescr->VNextRxd = VNextDescr & 0xffffffffULL; pDescr->pNextRxd = pNextDescr; - if (!IsTx) pDescr->TcpSumStarts = ETH_HLEN << 16 | ETH_HLEN; + pDescr->TcpSumStarts = pAC->CsOfs; /* advance one step */ pPrevDescr = pDescr; @@ -818,11 +1712,12 @@ } pPrevDescr->pNextRxd = (RXD*) pMemArea; pPrevDescr->VNextRxd = VMemArea; - pDescr = (RXD*) pMemArea; - *ppRingHead = (RXD*) pMemArea; - *ppRingTail = *ppRingHead; - *ppRingPrev = pPrevDescr; - *pRingFree = DescrNum; + pDescr = (RXD*) pMemArea; + *ppRingHead = (RXD*) pMemArea; + *ppRingTail = *ppRingHead; + *ppRingPrev = pPrevDescr; + *pRingFree = DescrNum; + *pRingPrevFree = DescrNum; } /* SetupRing */ @@ -887,17 +1782,35 @@ SK_AC *pAC; SK_U32 IntSrc; /* interrupts source register contents */ - pNet = netdev_priv(dev); + pNet = (DEV_NET*) dev->priv; pAC = pNet->pAC; /* * Check and process if its our interrupt */ SK_IN32(pAC->IoBase, B0_SP_ISRC, &IntSrc); - if (IntSrc == 0) { + if ((IntSrc == 0) && (!pNet->NetConsoleMode)) { return SkIsrRetNone; } +#ifdef CONFIG_SK98LIN_NAPI + if (netif_rx_schedule_prep(dev)) { + pAC->GIni.GIValIrqMask &= ~(NAPI_DRV_IRQS); + SK_OUT32(pAC->IoBase, B0_IMSK, pAC->GIni.GIValIrqMask); + __netif_rx_schedule(dev); + } + +#ifdef USE_TX_COMPLETE /* only if tx complete interrupt used */ + if (IntSrc & IS_XA1_F) { + CLEAR_TX_IRQ(0, TX_PRIO_LOW); + } + if (IntSrc & IS_XA2_F) { + CLEAR_TX_IRQ(1, TX_PRIO_LOW); + } +#endif + + +#else while (((IntSrc & IRQ_MASK) & ~SPECIAL_IRQS) != 0) { #if 0 /* software irq currently not used */ if (IntSrc & IS_IRQ_SW) { @@ -911,6 +1824,7 @@ SK_DBGCAT_DRV_INT_SRC, ("EOF RX1 IRQ\n")); ReceiveIrq(pAC, &pAC->RxPort[0], SK_TRUE); + CLEAR_AND_START_RX(0); SK_PNMI_CNT_RX_INTR(pAC, 0); } if (IntSrc & IS_R2_F) { @@ -918,6 +1832,7 @@ SK_DBGCAT_DRV_INT_SRC, ("EOF RX2 IRQ\n")); ReceiveIrq(pAC, &pAC->RxPort[1], SK_TRUE); + CLEAR_AND_START_RX(1); SK_PNMI_CNT_RX_INTR(pAC, 1); } #ifdef USE_TX_COMPLETE /* only if tx complete interrupt used */ @@ -925,6 +1840,7 @@ SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, ("EOF AS TX1 IRQ\n")); + CLEAR_TX_IRQ(0, TX_PRIO_LOW); SK_PNMI_CNT_TX_INTR(pAC, 0); spin_lock(&pAC->TxPort[0][TX_PRIO_LOW].TxDesRingLock); FreeTxDescriptors(pAC, &pAC->TxPort[0][TX_PRIO_LOW]); @@ -934,6 +1850,7 @@ SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, ("EOF AS TX2 IRQ\n")); + CLEAR_TX_IRQ(1, TX_PRIO_LOW); SK_PNMI_CNT_TX_INTR(pAC, 1); spin_lock(&pAC->TxPort[1][TX_PRIO_LOW].TxDesRingLock); FreeTxDescriptors(pAC, &pAC->TxPort[1][TX_PRIO_LOW]); @@ -944,38 +1861,28 @@ SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, ("EOF SY TX1 IRQ\n")); + CLEAR_TX_IRQ(0, TX_PRIO_HIGH); SK_PNMI_CNT_TX_INTR(pAC, 1); spin_lock(&pAC->TxPort[0][TX_PRIO_HIGH].TxDesRingLock); FreeTxDescriptors(pAC, 0, TX_PRIO_HIGH); spin_unlock(&pAC->TxPort[0][TX_PRIO_HIGH].TxDesRingLock); - ClearTxIrq(pAC, 0, TX_PRIO_HIGH); } if (IntSrc & IS_XS2_F) { SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, ("EOF SY TX2 IRQ\n")); + CLEAR_TX_IRQ(1, TX_PRIO_HIGH); SK_PNMI_CNT_TX_INTR(pAC, 1); spin_lock(&pAC->TxPort[1][TX_PRIO_HIGH].TxDesRingLock); FreeTxDescriptors(pAC, 1, TX_PRIO_HIGH); spin_unlock(&pAC->TxPort[1][TX_PRIO_HIGH].TxDesRingLock); - ClearTxIrq(pAC, 1, TX_PRIO_HIGH); } #endif #endif - /* do all IO at once */ - if (IntSrc & IS_R1_F) - ClearAndStartRx(pAC, 0); - if (IntSrc & IS_R2_F) - ClearAndStartRx(pAC, 1); -#ifdef USE_TX_COMPLETE /* only if tx complete interrupt used */ - if (IntSrc & IS_XA1_F) - ClearTxIrq(pAC, 0, TX_PRIO_LOW); - if (IntSrc & IS_XA2_F) - ClearTxIrq(pAC, 1, TX_PRIO_LOW); -#endif SK_IN32(pAC->IoBase, B0_ISRC, &IntSrc); } /* while (IntSrc & IRQ_MASK != 0) */ +#endif IntSrc &= pAC->GIni.GIValIrqMask; if ((IntSrc & SPECIAL_IRQS) || pAC->CheckQueue) { @@ -989,18 +1896,12 @@ SkEventDispatcher(pAC, pAC->IoBase); spin_unlock(&pAC->SlowPathLock); } - /* - * do it all again is case we cleared an interrupt that - * came in after handling the ring (OUTs may be delayed - * in hardware buffers, but are through after IN) - * - * rroesler: has been commented out and shifted to - * SkGeDrvEvent(), because it is timer - * guarded now - * + +#ifndef CONFIG_SK98LIN_NAPI + /* Handle interrupts */ ReceiveIrq(pAC, &pAC->RxPort[0], SK_TRUE); ReceiveIrq(pAC, &pAC->RxPort[1], SK_TRUE); - */ +#endif if (pAC->CheckQueue) { pAC->CheckQueue = SK_FALSE; @@ -1036,17 +1937,32 @@ SK_AC *pAC; SK_U32 IntSrc; /* interrupts source register contents */ - pNet = netdev_priv(dev); + pNet = (DEV_NET*) dev->priv; pAC = pNet->pAC; /* * Check and process if its our interrupt */ SK_IN32(pAC->IoBase, B0_SP_ISRC, &IntSrc); - if (IntSrc == 0) { + if ((IntSrc == 0) && (!pNet->NetConsoleMode)) { return SkIsrRetNone; } +#ifdef CONFIG_SK98LIN_NAPI + if (netif_rx_schedule_prep(dev)) { + // CLEAR_AND_START_RX(0); + // CLEAR_TX_IRQ(0, TX_PRIO_LOW); + pAC->GIni.GIValIrqMask &= ~(NAPI_DRV_IRQS); + SK_OUT32(pAC->IoBase, B0_IMSK, pAC->GIni.GIValIrqMask); + __netif_rx_schedule(dev); + } + +#ifdef USE_TX_COMPLETE /* only if tx complete interrupt used */ + if (IntSrc & IS_XA1_F) { + CLEAR_TX_IRQ(0, TX_PRIO_LOW); + } +#endif +#else while (((IntSrc & IRQ_MASK) & ~SPECIAL_IRQS) != 0) { #if 0 /* software irq currently not used */ if (IntSrc & IS_IRQ_SW) { @@ -1060,6 +1976,7 @@ SK_DBGCAT_DRV_INT_SRC, ("EOF RX1 IRQ\n")); ReceiveIrq(pAC, &pAC->RxPort[0], SK_TRUE); + CLEAR_AND_START_RX(0); SK_PNMI_CNT_RX_INTR(pAC, 0); } #ifdef USE_TX_COMPLETE /* only if tx complete interrupt used */ @@ -1067,6 +1984,7 @@ SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, ("EOF AS TX1 IRQ\n")); + CLEAR_TX_IRQ(0, TX_PRIO_LOW); SK_PNMI_CNT_TX_INTR(pAC, 0); spin_lock(&pAC->TxPort[0][TX_PRIO_LOW].TxDesRingLock); FreeTxDescriptors(pAC, &pAC->TxPort[0][TX_PRIO_LOW]); @@ -1077,24 +1995,18 @@ SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_INT_SRC, ("EOF SY TX1 IRQ\n")); + CLEAR_TX_IRQ(0, TX_PRIO_HIGH); SK_PNMI_CNT_TX_INTR(pAC, 0); spin_lock(&pAC->TxPort[0][TX_PRIO_HIGH].TxDesRingLock); FreeTxDescriptors(pAC, 0, TX_PRIO_HIGH); spin_unlock(&pAC->TxPort[0][TX_PRIO_HIGH].TxDesRingLock); - ClearTxIrq(pAC, 0, TX_PRIO_HIGH); } #endif #endif - /* do all IO at once */ - if (IntSrc & IS_R1_F) - ClearAndStartRx(pAC, 0); -#ifdef USE_TX_COMPLETE /* only if tx complete interrupt used */ - if (IntSrc & IS_XA1_F) - ClearTxIrq(pAC, 0, TX_PRIO_LOW); -#endif SK_IN32(pAC->IoBase, B0_ISRC, &IntSrc); } /* while (IntSrc & IRQ_MASK != 0) */ +#endif IntSrc &= pAC->GIni.GIValIrqMask; if ((IntSrc & SPECIAL_IRQS) || pAC->CheckQueue) { @@ -1108,17 +2020,10 @@ SkEventDispatcher(pAC, pAC->IoBase); spin_unlock(&pAC->SlowPathLock); } - /* - * do it all again is case we cleared an interrupt that - * came in after handling the ring (OUTs may be delayed - * in hardware buffers, but are through after IN) - * - * rroesler: has been commented out and shifted to - * SkGeDrvEvent(), because it is timer - * guarded now - * + +#ifndef CONFIG_SK98LIN_NAPI ReceiveIrq(pAC, &pAC->RxPort[0], SK_TRUE); - */ +#endif /* IRQ is processed - Enable IRQs again*/ SK_OUT32(pAC->IoBase, B0_IMSK, pAC->GIni.GIValIrqMask); @@ -1126,25 +2031,6 @@ return SkIsrRetHandled; } /* SkGeIsrOnePort */ -#ifdef CONFIG_NET_POLL_CONTROLLER -/**************************************************************************** - * - * SkGePollController - polling receive, for netconsole - * - * Description: - * Polling receive - used by netconsole and other diagnostic tools - * to allow network i/o with interrupts disabled. - * - * Returns: N/A - */ -static void SkGePollController(struct net_device *dev) -{ - disable_irq(dev->irq); - SkGeIsr(dev->irq, dev, NULL); - enable_irq(dev->irq); -} -#endif - /**************************************************************************** * * SkGeOpen - handle start of initialized adapter @@ -1162,27 +2048,25 @@ * != 0 on error */ static int SkGeOpen( -struct SK_NET_DEVICE *dev) +struct SK_NET_DEVICE *dev) /* the device that is to be opened */ { - DEV_NET *pNet; - SK_AC *pAC; - unsigned long Flags; /* for spin lock */ - int i; - SK_EVPARA EvPara; /* an event parameter union */ + DEV_NET *pNet = (DEV_NET*) dev->priv; + SK_AC *pAC = pNet->pAC; + unsigned long Flags; /* for the spin locks */ + int CurrMac; /* loop ctr for ports */ - pNet = netdev_priv(dev); - pAC = pNet->pAC; - SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY, ("SkGeOpen: pAC=0x%lX:\n", (unsigned long)pAC)); -#ifdef SK_DIAG_SUPPORT if (pAC->DiagModeActive == DIAG_ACTIVE) { if (pAC->Pnmi.DiagAttached == SK_DIAG_RUNNING) { return (-1); /* still in use by diag; deny actions */ } } -#endif + + if (!try_module_get(THIS_MODULE)) { + return (-1); /* increase of usage count not possible */ + } /* Set blink mode */ if ((pAC->PciDev->vendor == 0x1186) || (pAC->PciDev->vendor == 0x11ab )) @@ -1191,6 +2075,7 @@ if (pAC->BoardLevel == SK_INIT_DATA) { /* level 1 init common modules here */ if (SkGeInit(pAC, pAC->IoBase, SK_INIT_IO) != 0) { + module_put(THIS_MODULE); /* decrease usage count */ printk("%s: HWInit (1) failed.\n", pAC->dev[pNet->PortNr]->name); return (-1); } @@ -1201,11 +2086,17 @@ SkRlmtInit (pAC, pAC->IoBase, SK_INIT_IO); SkTimerInit (pAC, pAC->IoBase, SK_INIT_IO); pAC->BoardLevel = SK_INIT_IO; +#ifdef Y2_RECOVERY + /* mark entries invalid */ + pAC->LastPort = 3; + pAC->LastOpc = 0xFF; +#endif } if (pAC->BoardLevel != SK_INIT_RUN) { /* tschilling: Level 2 init modules here, check return value. */ if (SkGeInit(pAC, pAC->IoBase, SK_INIT_RUN) != 0) { + module_put(THIS_MODULE); /* decrease usage count */ printk("%s: HWInit (2) failed.\n", pAC->dev[pNet->PortNr]->name); return (-1); } @@ -1218,44 +2109,61 @@ pAC->BoardLevel = SK_INIT_RUN; } - for (i=0; iGIni.GIMacsFound; i++) { - /* Enable transmit descriptor polling. */ - SkGePollTxD(pAC, pAC->IoBase, i, SK_TRUE); - FillRxRing(pAC, &pAC->RxPort[i]); + for (CurrMac=0; CurrMacGIni.GIMacsFound; CurrMac++) { + if (!CHIP_ID_YUKON_2(pAC)) { + /* Enable transmit descriptor polling. */ + SkGePollTxD(pAC, pAC->IoBase, CurrMac, SK_TRUE); + FillRxRing(pAC, &pAC->RxPort[CurrMac]); + SkMacRxTxEnable(pAC, pAC->IoBase, pNet->PortNr); + } } - SkGeYellowLED(pAC, pAC->IoBase, 1); - StartDrvCleanupTimer(pAC); + SkGeYellowLED(pAC, pAC->IoBase, 1); SkDimEnableModerationIfNeeded(pAC); - SkDimDisplayModerationSettings(pAC); - pAC->GIni.GIValIrqMask &= IRQ_MASK; - - /* enable Interrupts */ - SK_OUT32(pAC->IoBase, B0_IMSK, pAC->GIni.GIValIrqMask); - SK_OUT32(pAC->IoBase, B0_HWE_IMSK, IRQ_HWE_MASK); + if (!CHIP_ID_YUKON_2(pAC)) { + /* + ** Has been setup already at SkGeInit(SK_INIT_IO), + ** but additional masking added for Genesis & Yukon + ** chipsets -> modify it... + */ + pAC->GIni.GIValIrqMask &= IRQ_MASK; +#ifndef USE_TX_COMPLETE + pAC->GIni.GIValIrqMask &= ~(TX_COMPL_IRQS); +#endif + } spin_lock_irqsave(&pAC->SlowPathLock, Flags); if ((pAC->RlmtMode != 0) && (pAC->MaxPorts == 0)) { - EvPara.Para32[0] = pAC->RlmtNets; - EvPara.Para32[1] = -1; - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_SET_NETS, - EvPara); - EvPara.Para32[0] = pAC->RlmtMode; - EvPara.Para32[1] = 0; - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_MODE_CHANGE, - EvPara); + SkLocalEventQueue(pAC, SKGE_RLMT, SK_RLMT_SET_NETS, + pAC->RlmtNets, -1, SK_FALSE); + SkLocalEventQueue(pAC, SKGE_RLMT, SK_RLMT_MODE_CHANGE, + pAC->RlmtMode, 0, SK_FALSE); } - EvPara.Para32[0] = pNet->NetNr; - EvPara.Para32[1] = -1; - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, EvPara); - SkEventDispatcher(pAC, pAC->IoBase); + SkLocalEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, + pNet->NetNr, -1, SK_TRUE); spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); - pAC->MaxPorts++; +#ifdef Y2_RECOVERY + pNet->TimerExpired = SK_FALSE; + pNet->InRecover = SK_FALSE; + pNet->NetConsoleMode = SK_FALSE; + + /* Initialize the kernel timer */ + init_timer(&pNet->KernelTimer); + pNet->KernelTimer.function = SkGeHandleKernelTimer; + pNet->KernelTimer.data = (unsigned long) pNet; + pNet->KernelTimer.expires = jiffies + (HZ/4); /* initially 250ms */ + add_timer(&pNet->KernelTimer); +#endif + + /* enable Interrupts */ + SK_OUT32(pAC->IoBase, B0_IMSK, pAC->GIni.GIValIrqMask); + SK_OUT32(pAC->IoBase, B0_HWE_IMSK, IRQ_HWE_MASK); + pAC->MaxPorts++; SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY, ("SkGeOpen suceeded\n")); @@ -1276,32 +2184,35 @@ * error code - on error */ static int SkGeClose( -struct SK_NET_DEVICE *dev) +struct SK_NET_DEVICE *dev) /* the device that is to be closed */ { - DEV_NET *pNet; - DEV_NET *newPtrNet; - SK_AC *pAC; - - unsigned long Flags; /* for spin lock */ - int i; - int PortIdx; - SK_EVPARA EvPara; - + DEV_NET *pNet = (DEV_NET*) dev->priv; + SK_AC *pAC = pNet->pAC; + DEV_NET *newPtrNet; + unsigned long Flags; /* for the spin locks */ + int CurrMac; /* loop ctr for the current MAC */ + int PortIdx; +#ifdef CONFIG_SK98LIN_NAPI + int WorkToDo = 1; /* min(*budget, dev->quota); */ + int WorkDone = 0; +#endif SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY, ("SkGeClose: pAC=0x%lX ", (unsigned long)pAC)); - pNet = netdev_priv(dev); - pAC = pNet->pAC; +#ifdef Y2_RECOVERY + pNet->InRecover = SK_TRUE; + del_timer(&pNet->KernelTimer); +#endif -#ifdef SK_DIAG_SUPPORT if (pAC->DiagModeActive == DIAG_ACTIVE) { if (pAC->DiagFlowCtrl == SK_FALSE) { + module_put(THIS_MODULE); /* ** notify that the interface which has been closed ** by operator interaction must not be started up ** again when the DIAG has finished. */ - newPtrNet = netdev_priv(pAC->dev[0]); + newPtrNet = (DEV_NET *) pAC->dev[0]->priv; if (newPtrNet == pNet) { pAC->WasIfUp[0] = SK_FALSE; } else { @@ -1312,7 +2223,6 @@ pAC->DiagFlowCtrl = SK_FALSE; } } -#endif netif_stop_queue(dev); @@ -1321,8 +2231,6 @@ else PortIdx = pNet->NetNr; - StopDrvCleanupTimer(pAC); - /* * Clear multicast table, promiscuous mode .... */ @@ -1334,46 +2242,101 @@ spin_lock_irqsave(&pAC->SlowPathLock, Flags); /* disable interrupts */ SK_OUT32(pAC->IoBase, B0_IMSK, 0); - EvPara.Para32[0] = pNet->NetNr; - EvPara.Para32[1] = -1; - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara); - SkEventDispatcher(pAC, pAC->IoBase); + SkLocalEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, + pNet->NetNr, -1, SK_TRUE); SK_OUT32(pAC->IoBase, B0_IMSK, 0); /* stop the hardware */ - SkGeDeInit(pAC, pAC->IoBase); - pAC->BoardLevel = SK_INIT_DATA; + + + if ((pAC->GIni.GIMacsFound == 2 ) && (pAC->RlmtNets == 1)) { + /* RLMT check link state mode */ + for (CurrMac=0; CurrMacGIni.GIMacsFound; CurrMac++) { + if (CHIP_ID_YUKON_2(pAC)) + SkY2PortStop( pAC, + pAC->IoBase, + CurrMac, + SK_STOP_ALL, + SK_HARD_RST); + else + SkGeStopPort( pAC, + pAC->IoBase, + CurrMac, + SK_STOP_ALL, + SK_HARD_RST); + } /* for */ + } else { + /* Single link or single port */ + if (CHIP_ID_YUKON_2(pAC)) + SkY2PortStop( pAC, + pAC->IoBase, + PortIdx, + SK_STOP_ALL, + SK_HARD_RST); + else + SkGeStopPort( pAC, + pAC->IoBase, + PortIdx, + SK_STOP_ALL, + SK_HARD_RST); + } spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); } else { - spin_lock_irqsave(&pAC->SlowPathLock, Flags); - EvPara.Para32[0] = pNet->NetNr; - EvPara.Para32[1] = -1; - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara); - SkPnmiEvent(pAC, pAC->IoBase, SK_PNMI_EVT_XMAC_RESET, EvPara); - SkEventDispatcher(pAC, pAC->IoBase); + SkLocalEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, + pNet->NetNr, -1, SK_FALSE); + SkLocalEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_XMAC_RESET, + pNet->NetNr, -1, SK_TRUE); spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); /* Stop port */ spin_lock_irqsave(&pAC->TxPort[pNet->PortNr] [TX_PRIO_LOW].TxDesRingLock, Flags); - SkGeStopPort(pAC, pAC->IoBase, pNet->PortNr, - SK_STOP_ALL, SK_HARD_RST); + if (CHIP_ID_YUKON_2(pAC)) { + SkY2PortStop(pAC, pAC->IoBase, pNet->PortNr, + SK_STOP_ALL, SK_HARD_RST); + } + else { + SkGeStopPort(pAC, pAC->IoBase, pNet->PortNr, + SK_STOP_ALL, SK_HARD_RST); + } spin_unlock_irqrestore(&pAC->TxPort[pNet->PortNr] [TX_PRIO_LOW].TxDesRingLock, Flags); } if (pAC->RlmtNets == 1) { /* clear all descriptor rings */ - for (i=0; iGIni.GIMacsFound; i++) { - ReceiveIrq(pAC, &pAC->RxPort[i], SK_TRUE); - ClearRxRing(pAC, &pAC->RxPort[i]); - ClearTxRing(pAC, &pAC->TxPort[i][TX_PRIO_LOW]); + for (CurrMac=0; CurrMacGIni.GIMacsFound; CurrMac++) { + if (!CHIP_ID_YUKON_2(pAC)) { +#ifdef CONFIG_SK98LIN_NAPI + WorkToDo = 1; + ReceiveIrq(pAC,&pAC->RxPort[CurrMac], + SK_TRUE,&WorkDone,WorkToDo); +#else + ReceiveIrq(pAC,&pAC->RxPort[CurrMac],SK_TRUE); +#endif + ClearRxRing(pAC, &pAC->RxPort[CurrMac]); + ClearTxRing(pAC, &pAC->TxPort[CurrMac][TX_PRIO_LOW]); + } else { + SkY2FreeRxBuffers(pAC, pAC->IoBase, CurrMac); + SkY2FreeTxBuffers(pAC, pAC->IoBase, CurrMac); + } } } else { /* clear port descriptor rings */ - ReceiveIrq(pAC, &pAC->RxPort[pNet->PortNr], SK_TRUE); - ClearRxRing(pAC, &pAC->RxPort[pNet->PortNr]); - ClearTxRing(pAC, &pAC->TxPort[pNet->PortNr][TX_PRIO_LOW]); + if (!CHIP_ID_YUKON_2(pAC)) { +#ifdef CONFIG_SK98LIN_NAPI + WorkToDo = 1; + ReceiveIrq(pAC, &pAC->RxPort[pNet->PortNr], SK_TRUE, &WorkDone, WorkToDo); +#else + ReceiveIrq(pAC, &pAC->RxPort[pNet->PortNr], SK_TRUE); +#endif + ClearRxRing(pAC, &pAC->RxPort[pNet->PortNr]); + ClearTxRing(pAC, &pAC->TxPort[pNet->PortNr][TX_PRIO_LOW]); + } + else { + SkY2FreeRxBuffers(pAC, pAC->IoBase, pNet->PortNr); + SkY2FreeTxBuffers(pAC, pAC->IoBase, pNet->PortNr); + } } SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY, @@ -1384,6 +2347,11 @@ sizeof(SK_PNMI_STRUCT_DATA)); pAC->MaxPorts--; + module_put(THIS_MODULE); + +#ifdef Y2_RECOVERY + pNet->InRecover = SK_FALSE; +#endif return (0); } /* SkGeClose */ @@ -1410,7 +2378,7 @@ SK_AC *pAC; int Rc; /* return code of XmitFrame */ - pNet = netdev_priv(dev); + pNet = (DEV_NET*) dev->priv; pAC = pNet->pAC; if ((!skb_shinfo(skb)->nr_frags) || @@ -1442,9 +2410,11 @@ } /* Transmitter out of resources? */ +#ifdef USE_TX_COMPLETE if (Rc <= 0) { netif_stop_queue(dev); } +#endif /* If not taken, give buffer ownership back to the * queueing layer. @@ -1456,6 +2426,94 @@ return (0); } /* SkGeXmit */ +#ifdef CONFIG_SK98LIN_NAPI +/***************************************************************************** + * + * SkGePoll - NAPI Rx polling callback for GEnesis and Yukon chipsets + * + * Description: + * Called by the Linux system in case NAPI polling is activated + * + * Returns: + * The number of work data still to be handled + */ +static int SkGePoll(struct net_device *dev, int *budget) +{ +SK_AC *pAC = ((DEV_NET*)(dev->priv))->pAC; /* pointer to adapter context */ +int WorkToDo = min(*budget, dev->quota); +int WorkDone = 0; + + if (pAC->dev[0] != pAC->dev[1]) { +#ifdef USE_TX_COMPLETE + spin_lock(&pAC->TxPort[1][TX_PRIO_LOW].TxDesRingLock); + FreeTxDescriptors(pAC, &pAC->TxPort[1][TX_PRIO_LOW]); + spin_unlock(&pAC->TxPort[1][TX_PRIO_LOW].TxDesRingLock); +#endif + ReceiveIrq(pAC, &pAC->RxPort[1], SK_TRUE, &WorkDone, WorkToDo); + CLEAR_AND_START_RX(1); + } +#ifdef USE_TX_COMPLETE + spin_lock(&pAC->TxPort[0][TX_PRIO_LOW].TxDesRingLock); + FreeTxDescriptors(pAC, &pAC->TxPort[0][TX_PRIO_LOW]); + spin_unlock(&pAC->TxPort[0][TX_PRIO_LOW].TxDesRingLock); +#endif + ReceiveIrq(pAC, &pAC->RxPort[0], SK_TRUE, &WorkDone, WorkToDo); + CLEAR_AND_START_RX(0); + + *budget -= WorkDone; + dev->quota -= WorkDone; + + if(WorkDone < WorkToDo) { + netif_rx_complete(dev); + /* enable interrupts again */ + pAC->GIni.GIValIrqMask |= (NAPI_DRV_IRQS); +#ifndef USE_TX_COMPLETE + pAC->GIni.GIValIrqMask &= ~(TX_COMPL_IRQS); +#endif + SK_OUT32(pAC->IoBase, B0_IMSK, pAC->GIni.GIValIrqMask); + } + return (WorkDone >= WorkToDo); +} /* SkGePoll */ +#endif + +#ifdef SK_POLL_CONTROLLER +/***************************************************************************** + * + * SkGeNetPoll - Polling "interrupt" + * + * Description: + * Polling 'interrupt' - used by things like netconsole and netdump + * to send skbs without having to re-enable interrupts. + * It's not called while the interrupt routine is executing. + */ +static void SkGeNetPoll( +struct SK_NET_DEVICE *dev) +{ +DEV_NET *pNet; +SK_AC *pAC; + + pNet = (DEV_NET*) dev->priv; + pAC = pNet->pAC; + pNet->NetConsoleMode = SK_TRUE; + + /* Prevent any reconfiguration while handling + the 'interrupt' */ + SK_OUT32(pAC->IoBase, B0_IMSK, 0); + + if (!CHIP_ID_YUKON_2(pAC)) { + /* Handle the GENESIS Isr */ + if (pAC->GIni.GIMacsFound == 2) + SkGeIsr(dev->irq, dev, NULL); + else + SkGeIsrOnePort(dev->irq, dev, NULL); + } else { + /* Handle the Yukon2 Isr */ + SkY2Isr(dev->irq, dev, NULL); + } + +} +#endif + /***************************************************************************** * @@ -1480,7 +2538,7 @@ * < 0 - on failure: other problems ( -> return failure to upper layers) */ static int XmitFrame( -SK_AC *pAC, /* pointer to adapter context */ +SK_AC *pAC, /* pointer to adapter context */ TX_PORT *pTxPort, /* pointer to struct of port to send to */ struct sk_buff *pMessage) /* pointer to send-message */ { @@ -1488,17 +2546,22 @@ TXD *pOldTxd; unsigned long Flags; SK_U64 PhysAddr; + int Protocol; + int IpHeaderLength; int BytesSend = pMessage->len; SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_TX_PROGRESS, ("X")); spin_lock_irqsave(&pTxPort->TxDesRingLock, Flags); #ifndef USE_TX_COMPLETE - FreeTxDescriptors(pAC, pTxPort); + if ((pTxPort->TxdRingPrevFree - pTxPort->TxdRingFree) > 6) { + FreeTxDescriptors(pAC, pTxPort); + pTxPort->TxdRingPrevFree = pTxPort->TxdRingFree; + } #endif if (pTxPort->TxdRingFree == 0) { /* - ** no enough free descriptors in ring at the moment. + ** not enough free descriptors in ring at the moment. ** Maybe free'ing some old one help? */ FreeTxDescriptors(pAC, pTxPort); @@ -1560,10 +2623,8 @@ pTxd->pMBuf = pMessage; if (pMessage->ip_summed == CHECKSUM_HW) { - u16 hdrlen = pMessage->h.raw - pMessage->data; - u16 offset = hdrlen + pMessage->csum; - - if ((pMessage->h.ipiph->protocol == IPPROTO_UDP ) && + Protocol = ((SK_U8)pMessage->data[C_OFFSET_IPPROTO] & 0xff); + if ((Protocol == C_PROTO_ID_UDP) && (pAC->GIni.GIChipRev == 0) && (pAC->GIni.GIChipId == CHIP_ID_YUKON)) { pTxd->TBControl = BMU_TCP_CHECK; @@ -1571,9 +2632,14 @@ pTxd->TBControl = BMU_UDP_CHECK; } - pTxd->TcpSumOfs = 0; - pTxd->TcpSumSt = hdrlen; - pTxd->TcpSumWr = offset; + IpHeaderLength = (SK_U8)pMessage->data[C_OFFSET_IPHEADER]; + IpHeaderLength = (IpHeaderLength & 0xf) * 4; + pTxd->TcpSumOfs = 0; /* PH-Checksum already calculated */ + pTxd->TcpSumSt = C_LEN_ETHERMAC_HEADER + IpHeaderLength + + (Protocol == C_PROTO_ID_UDP ? + C_OFFSET_UDPHEADER_UDPCS : + C_OFFSET_TCPHEADER_TCPCS); + pTxd->TcpSumWr = C_LEN_ETHERMAC_HEADER + IpHeaderLength; pTxd->TBControl |= BMU_OWN | BMU_STF | BMU_SW | BMU_EOF | @@ -1581,7 +2647,7 @@ BMU_IRQ_EOF | #endif pMessage->len; - } else { + } else { pTxd->TBControl = BMU_OWN | BMU_STF | BMU_CHECK | BMU_SW | BMU_EOF | #ifdef USE_TX_COMPLETE @@ -1636,10 +2702,11 @@ TXD *pTxdLst; int CurrFrag; int BytesSend; + int IpHeaderLength; + int Protocol; skb_frag_t *sk_frag; SK_U64 PhysAddr; unsigned long Flags; - SK_U32 Control; spin_lock_irqsave(&pTxPort->TxDesRingLock, Flags); #ifndef USE_TX_COMPLETE @@ -1662,6 +2729,7 @@ pTxdFst = pTxd; pTxdLst = pTxd; BytesSend = 0; + Protocol = 0; /* ** Map the first fragment (header) into the DMA-space @@ -1679,31 +2747,32 @@ ** Does the HW need to evaluate checksum for TCP or UDP packets? */ if (pMessage->ip_summed == CHECKSUM_HW) { - u16 hdrlen = pMessage->h.raw - pMessage->data; - u16 offset = hdrlen + pMessage->csum; - - Control = BMU_STFWD; - + pTxd->TBControl = BMU_STF | BMU_STFWD | skb_headlen(pMessage); /* ** We have to use the opcode for tcp here, because the ** opcode for udp is not working in the hardware yet ** (Revision 2.0) */ - if ((pMessage->h.ipiph->protocol == IPPROTO_UDP ) && + Protocol = ((SK_U8)pMessage->data[C_OFFSET_IPPROTO] & 0xff); + if ((Protocol == C_PROTO_ID_UDP) && (pAC->GIni.GIChipRev == 0) && (pAC->GIni.GIChipId == CHIP_ID_YUKON)) { - Control |= BMU_TCP_CHECK; + pTxd->TBControl |= BMU_TCP_CHECK; } else { - Control |= BMU_UDP_CHECK; + pTxd->TBControl |= BMU_UDP_CHECK; } - pTxd->TcpSumOfs = 0; - pTxd->TcpSumSt = hdrlen; - pTxd->TcpSumWr = offset; - } else - Control = BMU_CHECK | BMU_SW; - - pTxd->TBControl = BMU_STF | Control | skb_headlen(pMessage); + IpHeaderLength = ((SK_U8)pMessage->data[C_OFFSET_IPHEADER] & 0xf)*4; + pTxd->TcpSumOfs = 0; /* PH-Checksum already claculated */ + pTxd->TcpSumSt = C_LEN_ETHERMAC_HEADER + IpHeaderLength + + (Protocol == C_PROTO_ID_UDP ? + C_OFFSET_UDPHEADER_UDPCS : + C_OFFSET_TCPHEADER_TCPCS); + pTxd->TcpSumWr = C_LEN_ETHERMAC_HEADER + IpHeaderLength; + } else { + pTxd->TBControl = BMU_CHECK | BMU_SW | BMU_STF | + skb_headlen(pMessage); + } pTxd = pTxd->pNextTxd; pTxPort->TxdRingFree--; @@ -1727,18 +2796,40 @@ pTxd->VDataHigh = (SK_U32) (PhysAddr >> 32); pTxd->pMBuf = pMessage; - pTxd->TBControl = Control | BMU_OWN | sk_frag->size;; + /* + ** Does the HW need to evaluate checksum for TCP or UDP packets? + */ + if (pMessage->ip_summed == CHECKSUM_HW) { + pTxd->TBControl = BMU_OWN | BMU_SW | BMU_STFWD; + /* + ** We have to use the opcode for tcp here because the + ** opcode for udp is not working in the hardware yet + ** (revision 2.0) + */ + if ((Protocol == C_PROTO_ID_UDP) && + (pAC->GIni.GIChipRev == 0) && + (pAC->GIni.GIChipId == CHIP_ID_YUKON)) { + pTxd->TBControl |= BMU_TCP_CHECK; + } else { + pTxd->TBControl |= BMU_UDP_CHECK; + } + } else { + pTxd->TBControl = BMU_CHECK | BMU_SW | BMU_OWN; + } /* ** Do we have the last fragment? */ if( (CurrFrag+1) == skb_shinfo(pMessage)->nr_frags ) { #ifdef USE_TX_COMPLETE - pTxd->TBControl |= BMU_EOF | BMU_IRQ_EOF; + pTxd->TBControl |= BMU_EOF | BMU_IRQ_EOF | sk_frag->size; #else - pTxd->TBControl |= BMU_EOF; + pTxd->TBControl |= BMU_EOF | sk_frag->size; #endif pTxdFst->TBControl |= BMU_OWN | BMU_SW; + + } else { + pTxd->TBControl |= sk_frag->size; } pTxdLst = pTxd; pTxd = pTxd->pNextTxd; @@ -1892,7 +2983,7 @@ SK_U16 Length; /* data fragment length */ SK_U64 PhysAddr; /* physical address of a rx buffer */ - pMsgBlock = alloc_skb(pAC->RxBufSize, GFP_ATOMIC); + pMsgBlock = alloc_skb(pRxPort->RxBufSize, GFP_ATOMIC); if (pMsgBlock == NULL) { SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY, @@ -1906,12 +2997,12 @@ pRxd = pRxPort->pRxdRingTail; pRxPort->pRxdRingTail = pRxd->pNextRxd; pRxPort->RxdRingFree--; - Length = pAC->RxBufSize; + Length = pRxPort->RxBufSize; PhysAddr = (SK_U64) pci_map_page(pAC->PciDev, virt_to_page(pMsgBlock->data), ((unsigned long) pMsgBlock->data & ~PAGE_MASK), - pAC->RxBufSize - 2, + pRxPort->RxBufSize - 2, PCI_DMA_FROMDEVICE); pRxd->VDataLow = (SK_U32) (PhysAddr & 0xffffffff); @@ -1951,7 +3042,7 @@ pRxd = pRxPort->pRxdRingTail; pRxPort->pRxdRingTail = pRxd->pNextRxd; pRxPort->RxdRingFree--; - Length = pAC->RxBufSize; + Length = pRxPort->RxBufSize; pRxd->VDataLow = PhysLow; pRxd->VDataHigh = PhysHigh; @@ -1976,28 +3067,40 @@ * Returns: N/A */ static void ReceiveIrq( - SK_AC *pAC, /* pointer to adapter context */ - RX_PORT *pRxPort, /* pointer to receive port struct */ - SK_BOOL SlowPathLock) /* indicates if SlowPathLock is needed */ -{ -RXD *pRxd; /* pointer to receive descriptors */ -SK_U32 Control; /* control field of descriptor */ -struct sk_buff *pMsg; /* pointer to message holding frame */ -struct sk_buff *pNewMsg; /* pointer to a new message for copying frame */ -int FrameLength; /* total length of received frame */ -SK_MBUF *pRlmtMbuf; /* ptr to a buffer for giving a frame to rlmt */ -SK_EVPARA EvPara; /* an event parameter union */ -unsigned long Flags; /* for spin lock */ -int PortIndex = pRxPort->PortIndex; -unsigned int Offset; -unsigned int NumBytes; -unsigned int ForRlmt; -SK_BOOL IsBc; -SK_BOOL IsMc; -SK_BOOL IsBadFrame; /* Bad frame */ - -SK_U32 FrameStat; -SK_U64 PhysAddr; +#ifdef CONFIG_SK98LIN_NAPI +SK_AC *pAC, /* pointer to adapter context */ +RX_PORT *pRxPort, /* pointer to receive port struct */ +SK_BOOL SlowPathLock, /* indicates if SlowPathLock is needed */ +int *WorkDone, +int WorkToDo) +#else +SK_AC *pAC, /* pointer to adapter context */ +RX_PORT *pRxPort, /* pointer to receive port struct */ +SK_BOOL SlowPathLock) /* indicates if SlowPathLock is needed */ +#endif +{ + RXD *pRxd; /* pointer to receive descriptors */ + struct sk_buff *pMsg; /* pointer to message holding frame */ + struct sk_buff *pNewMsg; /* pointer to new message for frame copy */ + SK_MBUF *pRlmtMbuf; /* ptr to buffer for giving frame to RLMT */ + SK_EVPARA EvPara; /* an event parameter union */ + SK_U32 Control; /* control field of descriptor */ + unsigned long Flags; /* for spin lock handling */ + int PortIndex = pRxPort->PortIndex; + int FrameLength; /* total length of received frame */ + int IpFrameLength; /* IP length of the received frame */ + unsigned int Offset; + unsigned int NumBytes; + unsigned int RlmtNotifier; + SK_BOOL IsBc; /* we received a broadcast packet */ + SK_BOOL IsMc; /* we received a multicast packet */ + SK_BOOL IsBadFrame; /* the frame received is bad! */ + SK_U32 FrameStat; + unsigned short Csum1; + unsigned short Csum2; + unsigned short Type; + int Result; + SK_U64 PhysAddr; rx_start: /* do forever; exit if BMU_OWN found */ @@ -2019,6 +3122,13 @@ Control = pRxd->RBControl; +#ifdef CONFIG_SK98LIN_NAPI + if (*WorkDone >= WorkToDo) { + break; + } + (*WorkDone)++; +#endif + /* check if this descriptor is ready */ if ((Control & BMU_OWN) != 0) { /* this descriptor is not yet ready */ @@ -2027,11 +3137,10 @@ FillRxRing(pAC, pRxPort); return; } - pAC->DynIrqModInfo.NbrProcessedDescr++; /* get length of frame and check it */ FrameLength = Control & BMU_BBC; - if (FrameLength > pAC->RxBufSize) { + if (FrameLength > pRxPort->RxBufSize) { goto rx_failed; } @@ -2046,8 +3155,8 @@ FrameStat = pRxd->FrameStat; /* check for frame length mismatch */ -#define XMR_FS_LEN_SHIFT 18 -#define GMR_FS_LEN_SHIFT 16 +#define XMR_FS_LEN_SHIFT 18 +#define GMR_FS_LEN_SHIFT 16 if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) { if (FrameLength != (SK_U32) (FrameStat >> XMR_FS_LEN_SHIFT)) { SK_DBG_MSG(NULL, SK_DBGMOD_DRV, @@ -2057,8 +3166,7 @@ (SK_U32) (FrameStat >> XMR_FS_LEN_SHIFT))); goto rx_failed; } - } - else { + } else { if (FrameLength != (SK_U32) (FrameStat >> GMR_FS_LEN_SHIFT)) { SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, @@ -2091,9 +3199,6 @@ /* DumpMsg(pMsg, "Rx"); */ if ((Control & BMU_STAT_VAL) != BMU_STAT_VAL || (IsBadFrame)) { -#if 0 - (FrameStat & (XMR_FS_ANY_ERR | XMR_FS_2L_VLAN)) != 0) { -#endif /* there is a receive error in this frame */ SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_RX_PROGRESS, @@ -2101,6 +3206,20 @@ "Control: %x\nRxStat: %x\n", Control, FrameStat)); + PhysAddr = ((SK_U64) pRxd->VDataHigh) << (SK_U64)32; + PhysAddr |= (SK_U64) pRxd->VDataLow; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,5) + pci_dma_sync_single(pAC->PciDev, + (dma_addr_t) PhysAddr, + FrameLength, + PCI_DMA_FROMDEVICE); +#else + pci_dma_sync_single_for_cpu(pAC->PciDev, + (dma_addr_t) PhysAddr, + FrameLength, + PCI_DMA_FROMDEVICE); +#endif ReQueueRxBuffer(pAC, pRxPort, pMsg, pRxd->VDataHigh, pRxd->VDataLow); @@ -2120,96 +3239,107 @@ skb_put(pNewMsg, FrameLength); PhysAddr = ((SK_U64) pRxd->VDataHigh) << (SK_U64)32; PhysAddr |= (SK_U64) pRxd->VDataLow; - - pci_dma_sync_single_for_cpu(pAC->PciDev, - (dma_addr_t) PhysAddr, - FrameLength, - PCI_DMA_FROMDEVICE); - memcpy(pNewMsg->data, pMsg, FrameLength); - +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,5) + pci_dma_sync_single(pAC->PciDev, + (dma_addr_t) PhysAddr, + FrameLength, + PCI_DMA_FROMDEVICE); +#else pci_dma_sync_single_for_device(pAC->PciDev, - (dma_addr_t) PhysAddr, - FrameLength, - PCI_DMA_FROMDEVICE); + (dma_addr_t) PhysAddr, + FrameLength, + PCI_DMA_FROMDEVICE); +#endif + + eth_copy_and_sum(pNewMsg, pMsg->data, + FrameLength, 0); ReQueueRxBuffer(pAC, pRxPort, pMsg, pRxd->VDataHigh, pRxd->VDataLow); pMsg = pNewMsg; - } - else { + } else { /* * if large frame, or SKB allocation failed, pass * the SKB directly to the networking */ - PhysAddr = ((SK_U64) pRxd->VDataHigh) << (SK_U64)32; PhysAddr |= (SK_U64) pRxd->VDataLow; /* release the DMA mapping */ pci_unmap_single(pAC->PciDev, PhysAddr, - pAC->RxBufSize - 2, + pRxPort->RxBufSize - 2, PCI_DMA_FROMDEVICE); + skb_put(pMsg, FrameLength); /* set message len */ + pMsg->ip_summed = CHECKSUM_NONE; /* initial default */ - /* set length in message */ - skb_put(pMsg, FrameLength); - } /* frame > SK_COPY_TRESHOLD */ - -#ifdef USE_SK_RX_CHECKSUM - pMsg->csum = pRxd->TcpSums & 0xffff; - pMsg->ip_summed = CHECKSUM_HW; -#else - pMsg->ip_summed = CHECKSUM_NONE; -#endif - + if (pRxPort->UseRxCsum) { + Type = ntohs(*((short*)&pMsg->data[12])); + if (Type == 0x800) { + IpFrameLength = (int) ntohs((unsigned short) + ((unsigned short *) pMsg->data)[8]); + if ((FrameLength - IpFrameLength) == 0xe) { + Csum1=le16_to_cpu(pRxd->TcpSums & 0xffff); + Csum2=le16_to_cpu((pRxd->TcpSums >> 16) & 0xffff); + if ((((Csum1 & 0xfffe) && (Csum2 & 0xfffe)) && + (pAC->GIni.GIChipId == CHIP_ID_GENESIS)) || + (pAC->ChipsetType)) { + Result = SkCsGetReceiveInfo(pAC, &pMsg->data[14], + Csum1, Csum2, PortIndex); + if ((Result == SKCS_STATUS_IP_FRAGMENT) || + (Result == SKCS_STATUS_IP_CSUM_OK) || + (Result == SKCS_STATUS_TCP_CSUM_OK) || + (Result == SKCS_STATUS_UDP_CSUM_OK)) { + pMsg->ip_summed = CHECKSUM_UNNECESSARY; + } else if ((Result == SKCS_STATUS_TCP_CSUM_ERROR) || + (Result == SKCS_STATUS_UDP_CSUM_ERROR) || + (Result == SKCS_STATUS_IP_CSUM_ERROR_UDP) || + (Result == SKCS_STATUS_IP_CSUM_ERROR_TCP) || + (Result == SKCS_STATUS_IP_CSUM_ERROR)) { + /* HW Checksum error */ + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, + SK_DBGCAT_DRV_RX_PROGRESS, + ("skge: CRC error. Frame dropped!\n")); + goto rx_failed; + } else { + pMsg->ip_summed = CHECKSUM_NONE; + } + }/* checksumControl calculation valid */ + } /* Frame length check */ + } /* IP frame */ + } /* pRxPort->UseRxCsum */ + } /* frame > SK_COPY_TRESHOLD */ + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 1,("V")); - ForRlmt = SK_RLMT_RX_PROTOCOL; -#if 0 - IsBc = (FrameStat & XMR_FS_BC)==XMR_FS_BC; -#endif + RlmtNotifier = SK_RLMT_RX_PROTOCOL; SK_RLMT_PRE_LOOKAHEAD(pAC, PortIndex, FrameLength, - IsBc, &Offset, &NumBytes); + IsBc, &Offset, &NumBytes); if (NumBytes != 0) { -#if 0 - IsMc = (FrameStat & XMR_FS_MC)==XMR_FS_MC; -#endif - SK_RLMT_LOOKAHEAD(pAC, PortIndex, - &pMsg->data[Offset], - IsBc, IsMc, &ForRlmt); + SK_RLMT_LOOKAHEAD(pAC,PortIndex,&pMsg->data[Offset], + IsBc,IsMc,&RlmtNotifier); } - if (ForRlmt == SK_RLMT_RX_PROTOCOL) { - SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 1,("W")); + if (RlmtNotifier == SK_RLMT_RX_PROTOCOL) { + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 1,("W")); /* send up only frames from active port */ - if ((PortIndex == pAC->ActivePort) || - (pAC->RlmtNets == 2)) { - /* frame for upper layer */ + if ((PortIndex == pAC->ActivePort)||(pAC->RlmtNets == 2)) { SK_DBG_MSG(NULL, SK_DBGMOD_DRV, 1,("U")); #ifdef xDEBUG DumpMsg(pMsg, "Rx"); #endif - SK_PNMI_CNT_RX_OCTETS_DELIVERED(pAC, - FrameLength, pRxPort->PortIndex); - - pMsg->dev = pAC->dev[pRxPort->PortIndex]; - pMsg->protocol = eth_type_trans(pMsg, - pAC->dev[pRxPort->PortIndex]); - netif_rx(pMsg); - pAC->dev[pRxPort->PortIndex]->last_rx = jiffies; - } - else { - /* drop frame */ + SK_PNMI_CNT_RX_OCTETS_DELIVERED(pAC,FrameLength,PortIndex); + pMsg->dev = pAC->dev[PortIndex]; + pMsg->protocol = eth_type_trans(pMsg,pAC->dev[PortIndex]); + netif_rx(pMsg); /* frame for upper layer */ + pAC->dev[PortIndex]->last_rx = jiffies; + } else { SK_DBG_MSG(NULL, SK_DBGMOD_DRV, - SK_DBGCAT_DRV_RX_PROGRESS, - ("D")); - DEV_KFREE_SKB(pMsg); + SK_DBGCAT_DRV_RX_PROGRESS,("D")); + DEV_KFREE_SKB(pMsg); /* drop frame */ } - - } /* if not for rlmt */ - else { - /* packet for rlmt */ + } else { /* packet for RLMT stack */ SK_DBG_MSG(NULL, SK_DBGMOD_DRV, - SK_DBGCAT_DRV_RX_PROGRESS, ("R")); + SK_DBGCAT_DRV_RX_PROGRESS,("R")); pRlmtMbuf = SkDrvAllocRlmtMbuf(pAC, pAC->IoBase, FrameLength); if (pRlmtMbuf != NULL) { @@ -2237,32 +3367,22 @@ } SK_DBG_MSG(NULL, SK_DBGMOD_DRV, - SK_DBGCAT_DRV_RX_PROGRESS, - ("Q")); + SK_DBGCAT_DRV_RX_PROGRESS,("Q")); } - if ((pAC->dev[pRxPort->PortIndex]->flags & - (IFF_PROMISC | IFF_ALLMULTI)) != 0 || - (ForRlmt & SK_RLMT_RX_PROTOCOL) == - SK_RLMT_RX_PROTOCOL) { - pMsg->dev = pAC->dev[pRxPort->PortIndex]; - pMsg->protocol = eth_type_trans(pMsg, - pAC->dev[pRxPort->PortIndex]); + if ((pAC->dev[PortIndex]->flags & (IFF_PROMISC | IFF_ALLMULTI)) || + (RlmtNotifier & SK_RLMT_RX_PROTOCOL)) { + pMsg->dev = pAC->dev[PortIndex]; + pMsg->protocol = eth_type_trans(pMsg,pAC->dev[PortIndex]); netif_rx(pMsg); - pAC->dev[pRxPort->PortIndex]->last_rx = jiffies; - } - else { + pAC->dev[PortIndex]->last_rx = jiffies; + } else { DEV_KFREE_SKB(pMsg); } - - } /* if packet for rlmt */ + } /* if packet for RLMT stack */ } /* for ... scanning the RXD ring */ /* RXD ring is empty -> fill and restart */ FillRxRing(pAC, pRxPort); - /* do not start if called from Close */ - if (pAC->BoardLevel > SK_INIT_DATA) { - ClearAndStartRx(pAC, PortIndex); - } return; rx_failed: @@ -2276,7 +3396,7 @@ PhysAddr |= (SK_U64) pRxd->VDataLow; pci_unmap_page(pAC->PciDev, PhysAddr, - pAC->RxBufSize - 2, + pRxPort->RxBufSize - 2, PCI_DMA_FROMDEVICE); DEV_KFREE_SKB_IRQ(pRxd->pMBuf); pRxd->pMBuf = NULL; @@ -2286,49 +3406,6 @@ } /* ReceiveIrq */ - -/***************************************************************************** - * - * ClearAndStartRx - give a start receive command to BMU, clear IRQ - * - * Description: - * This function sends a start command and a clear interrupt - * command for one receive queue to the BMU. - * - * Returns: N/A - * none - */ -static void ClearAndStartRx( -SK_AC *pAC, /* pointer to the adapter context */ -int PortIndex) /* index of the receive port (XMAC) */ -{ - SK_OUT8(pAC->IoBase, - RxQueueAddr[PortIndex]+Q_CSR, - CSR_START | CSR_IRQ_CL_F); -} /* ClearAndStartRx */ - - -/***************************************************************************** - * - * ClearTxIrq - give a clear transmit IRQ command to BMU - * - * Description: - * This function sends a clear tx IRQ command for one - * transmit queue to the BMU. - * - * Returns: N/A - */ -static void ClearTxIrq( -SK_AC *pAC, /* pointer to the adapter context */ -int PortIndex, /* index of the transmit port (XMAC) */ -int Prio) /* priority or normal queue */ -{ - SK_OUT8(pAC->IoBase, - TxQueueAddr[PortIndex][Prio]+Q_CSR, - CSR_IRQ_CL_F); -} /* ClearTxIrq */ - - /***************************************************************************** * * ClearRxRing - remove all buffers from the receive ring @@ -2359,7 +3436,7 @@ PhysAddr |= (SK_U64) pRxd->VDataLow; pci_unmap_page(pAC->PciDev, PhysAddr, - pAC->RxBufSize - 2, + pRxPort->RxBufSize - 2, PCI_DMA_FROMDEVICE); DEV_KFREE_SKB(pRxd->pMBuf); pRxd->pMBuf = NULL; @@ -2417,31 +3494,32 @@ static int SkGeSetMacAddr(struct SK_NET_DEVICE *dev, void *p) { -DEV_NET *pNet = netdev_priv(dev); +DEV_NET *pNet = (DEV_NET*) dev->priv; SK_AC *pAC = pNet->pAC; +int Ret; struct sockaddr *addr = p; unsigned long Flags; SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY, ("SkGeSetMacAddr starts now...\n")); - if(netif_running(dev)) - return -EBUSY; memcpy(dev->dev_addr, addr->sa_data,dev->addr_len); spin_lock_irqsave(&pAC->SlowPathLock, Flags); if (pAC->RlmtNets == 2) - SkAddrOverride(pAC, pAC->IoBase, pNet->NetNr, + Ret = SkAddrOverride(pAC, pAC->IoBase, pNet->NetNr, (SK_MAC_ADDR*)dev->dev_addr, SK_ADDR_VIRTUAL_ADDRESS); else - SkAddrOverride(pAC, pAC->IoBase, pAC->ActivePort, + Ret = SkAddrOverride(pAC, pAC->IoBase, pAC->ActivePort, (SK_MAC_ADDR*)dev->dev_addr, SK_ADDR_VIRTUAL_ADDRESS); - - spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); + + if (Ret != SK_ADDR_OVERRIDE_SUCCESS) + return -EBUSY; + return 0; } /* SkGeSetMacAddr */ @@ -2474,7 +3552,7 @@ SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY, ("SkGeSetRxMode starts now... ")); - pNet = netdev_priv(dev); + pNet = (DEV_NET*) dev->priv; pAC = pNet->pAC; if (pAC->RlmtNets == 1) PortIdx = pAC->ActivePort; @@ -2523,6 +3601,45 @@ /***************************************************************************** * + * SkSetMtuBufferSize - set the MTU buffer to another value + * + * Description: + * This function sets the new buffers and is called whenever the MTU + * size is changed + * + * Returns: + * N/A + */ + +static void SkSetMtuBufferSize( +SK_AC *pAC, /* pointer to adapter context */ +int PortNr, /* Port number */ +int Mtu) /* pointer to tx prt struct */ +{ + pAC->RxPort[PortNr].RxBufSize = Mtu + 32; + + /* RxBufSize must be a multiple of 8 */ + while (pAC->RxPort[PortNr].RxBufSize % 8) { + pAC->RxPort[PortNr].RxBufSize = + pAC->RxPort[PortNr].RxBufSize + 1; + } + + if (Mtu > 1500) { + pAC->GIni.GP[PortNr].PPortUsage = SK_JUMBO_LINK; + } else { + if ((pAC->GIni.GIMacsFound == 2 ) && (pAC->RlmtNets == 2)) { + pAC->GIni.GP[PortNr].PPortUsage = SK_MUL_LINK; + } else { + pAC->GIni.GP[PortNr].PPortUsage = SK_RED_LINK; + } + } + + return; +} + + +/***************************************************************************** + * * SkGeChangeMtu - set the MTU to another value * * Description: @@ -2536,28 +3653,26 @@ */ static int SkGeChangeMtu(struct SK_NET_DEVICE *dev, int NewMtu) { -DEV_NET *pNet; -struct net_device *pOtherDev; -SK_AC *pAC; -unsigned long Flags; -int i; -SK_EVPARA EvPara; +DEV_NET *pNet; +SK_AC *pAC; +unsigned long Flags; +#ifdef CONFIG_SK98LIN_NAPI +int WorkToDo = 1; // min(*budget, dev->quota); +int WorkDone = 0; +#endif SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY, ("SkGeChangeMtu starts now...\n")); - pNet = netdev_priv(dev); + pNet = (DEV_NET*) dev->priv; pAC = pNet->pAC; + /* MTU size outside the spec */ if ((NewMtu < 68) || (NewMtu > SK_JUMBO_MTU)) { return -EINVAL; } - if(pAC->BoardLevel != SK_INIT_RUN) { - return -EINVAL; - } - -#ifdef SK_DIAG_SUPPORT + /* Diag access active */ if (pAC->DiagModeActive == DIAG_ACTIVE) { if (pAC->DiagFlowCtrl == SK_FALSE) { return -1; /* still in use, deny any actions of MTU */ @@ -2565,201 +3680,74 @@ pAC->DiagFlowCtrl = SK_FALSE; } } -#endif - - pOtherDev = pAC->dev[1 - pNet->NetNr]; - - if ( netif_running(pOtherDev) && (pOtherDev->mtu > 1500) - && (NewMtu <= 1500)) - return 0; - pAC->RxBufSize = NewMtu + 32; dev->mtu = NewMtu; + SkSetMtuBufferSize(pAC, pNet->PortNr, NewMtu); - SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY, - ("New MTU: %d\n", NewMtu)); + if(!netif_running(dev)) { + /* Preset MTU size if device not ready/running */ + return 0; + } - /* - ** Prevent any reconfiguration while changing the MTU - ** by disabling any interrupts - */ + /* Prevent any reconfiguration while changing the MTU + by disabling any interrupts */ SK_OUT32(pAC->IoBase, B0_IMSK, 0); spin_lock_irqsave(&pAC->SlowPathLock, Flags); - /* - ** Notify RLMT that any ports are to be stopped - */ - EvPara.Para32[0] = 0; - EvPara.Para32[1] = -1; - if ((pAC->GIni.GIMacsFound == 2 ) && (pAC->RlmtNets == 2)) { - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara); - EvPara.Para32[0] = 1; - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara); - } else { - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara); - } - - /* - ** After calling the SkEventDispatcher(), RLMT is aware about - ** the stopped ports -> configuration can take place! - */ - SkEventDispatcher(pAC, pAC->IoBase); - - for (i=0; iGIni.GIMacsFound; i++) { - spin_lock(&pAC->TxPort[i][TX_PRIO_LOW].TxDesRingLock); - netif_stop_queue(pAC->dev[i]); + /* Notify RLMT that the port has to be stopped */ + netif_stop_queue(dev); + SkLocalEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, + pNet->PortNr, -1, SK_TRUE); + spin_lock(&pAC->TxPort[pNet->PortNr][TX_PRIO_LOW].TxDesRingLock); - } - /* - ** Depending on the desired MTU size change, a different number of - ** RX buffers need to be allocated - */ - if (NewMtu > 1500) { - /* - ** Use less rx buffers - */ - for (i=0; iGIni.GIMacsFound; i++) { - if ((pAC->GIni.GIMacsFound == 2 ) && (pAC->RlmtNets == 2)) { - pAC->RxPort[i].RxFillLimit = pAC->RxDescrPerRing - - (pAC->RxDescrPerRing / 4); - } else { - if (i == pAC->ActivePort) { - pAC->RxPort[i].RxFillLimit = pAC->RxDescrPerRing - - (pAC->RxDescrPerRing / 4); - } else { - pAC->RxPort[i].RxFillLimit = pAC->RxDescrPerRing - - (pAC->RxDescrPerRing / 10); - } - } - } + /* Change RxFillLimit to 1 */ + if ((pAC->GIni.GIMacsFound == 2 ) && (pAC->RlmtNets == 2)) { + pAC->RxPort[pNet->PortNr].RxFillLimit = 1; } else { - /* - ** Use the normal amount of rx buffers - */ - for (i=0; iGIni.GIMacsFound; i++) { - if ((pAC->GIni.GIMacsFound == 2 ) && (pAC->RlmtNets == 2)) { - pAC->RxPort[i].RxFillLimit = 1; - } else { - if (i == pAC->ActivePort) { - pAC->RxPort[i].RxFillLimit = 1; - } else { - pAC->RxPort[i].RxFillLimit = pAC->RxDescrPerRing - - (pAC->RxDescrPerRing / 4); - } - } - } + pAC->RxPort[1 - pNet->PortNr].RxFillLimit = 1; + pAC->RxPort[pNet->PortNr].RxFillLimit = pAC->RxDescrPerRing - + (pAC->RxDescrPerRing / 4); } - - SkGeDeInit(pAC, pAC->IoBase); - /* - ** enable/disable hardware support for long frames - */ - if (NewMtu > 1500) { -// pAC->JumboActivated = SK_TRUE; /* is never set back !!! */ - pAC->GIni.GIPortUsage = SK_JUMBO_LINK; + /* clear and reinit the rx rings here, because of new MTU size */ + if (CHIP_ID_YUKON_2(pAC)) { + SkY2PortStop(pAC, pAC->IoBase, pNet->PortNr, SK_STOP_ALL, SK_SOFT_RST); + SkY2AllocateRxBuffers(pAC, pAC->IoBase, pNet->PortNr); + SkY2PortStart(pAC, pAC->IoBase, pNet->PortNr); } else { - if ((pAC->GIni.GIMacsFound == 2 ) && (pAC->RlmtNets == 2)) { - pAC->GIni.GIPortUsage = SK_MUL_LINK; - } else { - pAC->GIni.GIPortUsage = SK_RED_LINK; - } - } +// SkGeStopPort(pAC, pAC->IoBase, pNet->PortNr, SK_STOP_ALL, SK_SOFT_RST); +#ifdef CONFIG_SK98LIN_NAPI + WorkToDo = 1; + ReceiveIrq(pAC, &pAC->RxPort[pNet->PortNr], SK_TRUE, &WorkDone, WorkToDo); +#else + ReceiveIrq(pAC, &pAC->RxPort[pNet->PortNr], SK_TRUE); +#endif + ClearRxRing(pAC, &pAC->RxPort[pNet->PortNr]); + FillRxRing(pAC, &pAC->RxPort[pNet->PortNr]); - SkGeInit( pAC, pAC->IoBase, SK_INIT_IO); - SkI2cInit( pAC, pAC->IoBase, SK_INIT_IO); - SkEventInit(pAC, pAC->IoBase, SK_INIT_IO); - SkPnmiInit( pAC, pAC->IoBase, SK_INIT_IO); - SkAddrInit( pAC, pAC->IoBase, SK_INIT_IO); - SkRlmtInit( pAC, pAC->IoBase, SK_INIT_IO); - SkTimerInit(pAC, pAC->IoBase, SK_INIT_IO); - - /* - ** tschilling: - ** Speed and others are set back to default in level 1 init! - */ - GetConfiguration(pAC); - - SkGeInit( pAC, pAC->IoBase, SK_INIT_RUN); - SkI2cInit( pAC, pAC->IoBase, SK_INIT_RUN); - SkEventInit(pAC, pAC->IoBase, SK_INIT_RUN); - SkPnmiInit( pAC, pAC->IoBase, SK_INIT_RUN); - SkAddrInit( pAC, pAC->IoBase, SK_INIT_RUN); - SkRlmtInit( pAC, pAC->IoBase, SK_INIT_RUN); - SkTimerInit(pAC, pAC->IoBase, SK_INIT_RUN); + /* Enable transmit descriptor polling */ + SkGePollTxD(pAC, pAC->IoBase, pNet->PortNr, SK_TRUE); + FillRxRing(pAC, &pAC->RxPort[pNet->PortNr]); + } - /* - ** clear and reinit the rx rings here - */ - for (i=0; iGIni.GIMacsFound; i++) { - ReceiveIrq(pAC, &pAC->RxPort[i], SK_TRUE); - ClearRxRing(pAC, &pAC->RxPort[i]); - FillRxRing(pAC, &pAC->RxPort[i]); + netif_start_queue(pAC->dev[pNet->PortNr]); - /* - ** Enable transmit descriptor polling - */ - SkGePollTxD(pAC, pAC->IoBase, i, SK_TRUE); - FillRxRing(pAC, &pAC->RxPort[i]); - }; + spin_unlock(&pAC->TxPort[pNet->PortNr][TX_PRIO_LOW].TxDesRingLock); - SkGeYellowLED(pAC, pAC->IoBase, 1); - SkDimEnableModerationIfNeeded(pAC); - SkDimDisplayModerationSettings(pAC); - netif_start_queue(pAC->dev[pNet->PortNr]); - for (i=pAC->GIni.GIMacsFound-1; i>=0; i--) { - spin_unlock(&pAC->TxPort[i][TX_PRIO_LOW].TxDesRingLock); - } + /* Notify RLMT about the changing and restarting one (or more) ports */ + SkLocalEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, + pNet->PortNr, -1, SK_TRUE); - /* - ** Enable Interrupts again - */ + /* Enable Interrupts again */ SK_OUT32(pAC->IoBase, B0_IMSK, pAC->GIni.GIValIrqMask); SK_OUT32(pAC->IoBase, B0_HWE_IMSK, IRQ_HWE_MASK); - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, EvPara); - SkEventDispatcher(pAC, pAC->IoBase); - - /* - ** Notify RLMT about the changing and restarting one (or more) ports - */ - if ((pAC->GIni.GIMacsFound == 2 ) && (pAC->RlmtNets == 2)) { - EvPara.Para32[0] = pAC->RlmtNets; - EvPara.Para32[1] = -1; - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_SET_NETS, EvPara); - EvPara.Para32[0] = pNet->PortNr; - EvPara.Para32[1] = -1; - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, EvPara); - - if (netif_running(pOtherDev)) { - DEV_NET *pOtherNet = netdev_priv(pOtherDev); - EvPara.Para32[0] = pOtherNet->PortNr; - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, EvPara); - } - } else { - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_START, EvPara); - } - - SkEventDispatcher(pAC, pAC->IoBase); spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); - - /* - ** While testing this driver with latest kernel 2.5 (2.5.70), it - ** seems as if upper layers have a problem to handle a successful - ** return value of '0'. If such a zero is returned, the complete - ** system hangs for several minutes (!), which is in acceptable. - ** - ** Currently it is not clear, what the exact reason for this problem - ** is. The implemented workaround for 2.5 is to return the desired - ** new MTU size if all needed changes for the new MTU size where - ** performed. In kernels 2.2 and 2.4, a zero value is returned, - ** which indicates the successful change of the mtu-size. - */ - return NewMtu; + return 0; -} /* SkGeChangeMtu */ +} /***************************************************************************** @@ -2775,44 +3763,40 @@ */ static struct net_device_stats *SkGeStats(struct SK_NET_DEVICE *dev) { -DEV_NET *pNet = netdev_priv(dev); +DEV_NET *pNet = (DEV_NET*) dev->priv; SK_AC *pAC = pNet->pAC; -SK_PNMI_STRUCT_DATA *pPnmiStruct; /* structure for all Pnmi-Data */ -SK_PNMI_STAT *pPnmiStat; /* pointer to virtual XMAC stat. data */ -SK_PNMI_CONF *pPnmiConf; /* pointer to virtual link config. */ -unsigned int Size; /* size of pnmi struct */ +SK_PNMI_STRUCT_DATA *pPnmiStruct; /* structure for all Pnmi-Data */ +SK_PNMI_STAT *pPnmiStat; /* pointer to virtual XMAC stat. data */ +SK_PNMI_CONF *pPnmiConf; /* pointer to virtual link config. */ +unsigned int Size; /* size of pnmi struct */ unsigned long Flags; /* for spin lock */ SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY, ("SkGeStats starts now...\n")); pPnmiStruct = &pAC->PnmiStruct; -#ifdef SK_DIAG_SUPPORT - if ((pAC->DiagModeActive == DIAG_NOTACTIVE) && - (pAC->BoardLevel == SK_INIT_RUN)) { -#endif - SK_MEMSET(pPnmiStruct, 0, sizeof(SK_PNMI_STRUCT_DATA)); - spin_lock_irqsave(&pAC->SlowPathLock, Flags); - Size = SK_PNMI_STRUCT_SIZE; - SkPnmiGetStruct(pAC, pAC->IoBase, pPnmiStruct, &Size, pNet->NetNr); - spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); -#ifdef SK_DIAG_SUPPORT + if ((pAC->DiagModeActive == DIAG_NOTACTIVE) && + (pAC->BoardLevel == SK_INIT_RUN)) { + SK_MEMSET(pPnmiStruct, 0, sizeof(SK_PNMI_STRUCT_DATA)); + spin_lock_irqsave(&pAC->SlowPathLock, Flags); + Size = SK_PNMI_STRUCT_SIZE; + SkPnmiGetStruct(pAC, pAC->IoBase, pPnmiStruct, &Size, pNet->NetNr); + spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); } -#endif - pPnmiStat = &pPnmiStruct->Stat[0]; - pPnmiConf = &pPnmiStruct->Conf[0]; + pPnmiStat = &pPnmiStruct->Stat[0]; + pPnmiConf = &pPnmiStruct->Conf[0]; pAC->stats.rx_packets = (SK_U32) pPnmiStruct->RxDeliveredCts & 0xFFFFFFFF; pAC->stats.tx_packets = (SK_U32) pPnmiStat->StatTxOkCts & 0xFFFFFFFF; pAC->stats.rx_bytes = (SK_U32) pPnmiStruct->RxOctetsDeliveredCts; pAC->stats.tx_bytes = (SK_U32) pPnmiStat->StatTxOctetsOkCts; - if (dev->mtu <= 1500) { - pAC->stats.rx_errors = (SK_U32) pPnmiStruct->InErrorsCts & 0xFFFFFFFF; - } else { - pAC->stats.rx_errors = (SK_U32) ((pPnmiStruct->InErrorsCts - - pPnmiStat->StatRxTooLongCts) & 0xFFFFFFFF); + if (dev->mtu <= 1500) { + pAC->stats.rx_errors = (SK_U32) pPnmiStruct->InErrorsCts & 0xFFFFFFFF; + } else { + pAC->stats.rx_errors = (SK_U32) ((pPnmiStruct->InErrorsCts - + pPnmiStat->StatRxTooLongCts) & 0xFFFFFFFF); } @@ -2851,38 +3835,41 @@ * Description: * This function is called if an ioctl is issued on the device. * There are three subfunction for reading, writing and test-writing - * the private MIB data structure (useful for SysKonnect-internal tools). + * the private MIB data structure (usefull for SysKonnect-internal tools). * * Returns: * 0, if everything is ok * !=0, on error */ -static int SkGeIoctl(struct SK_NET_DEVICE *dev, struct ifreq *rq, int cmd) -{ -DEV_NET *pNet; -SK_AC *pAC; -void *pMemBuf; -struct pci_dev *pdev = NULL; -SK_GE_IOCTL Ioctl; -unsigned int Err = 0; -int Size = 0; -int Ret = 0; -unsigned int Length = 0; -int HeaderLength = sizeof(SK_U32) + sizeof(SK_U32); +static int SkGeIoctl( +struct SK_NET_DEVICE *dev, /* the device the IOCTL is to be performed on */ +struct ifreq *rq, /* additional request structure containing data */ +int cmd) /* requested IOCTL command number */ +{ + DEV_NET *pNet = (DEV_NET*) dev->priv; + SK_AC *pAC = pNet->pAC; + struct pci_dev *pdev = NULL; + void *pMemBuf; + SK_GE_IOCTL Ioctl; + unsigned long Flags; /* for spin lock */ + unsigned int Err = 0; + unsigned int Length = 0; + int HeaderLength = sizeof(SK_U32) + sizeof(SK_U32); + int Size = 0; + int Ret = 0; SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY, ("SkGeIoctl starts now...\n")); - pNet = netdev_priv(dev); - pAC = pNet->pAC; - if(copy_from_user(&Ioctl, rq->ifr_data, sizeof(SK_GE_IOCTL))) { return -EFAULT; } switch(cmd) { - case SK_IOCTL_SETMIB: - case SK_IOCTL_PRESETMIB: + case SIOCETHTOOL: + return SkEthIoctl(dev, rq); + case SK_IOCTL_SETMIB: /* FALL THRU */ + case SK_IOCTL_PRESETMIB: /* FALL THRU (if capable!) */ if (!capable(CAP_NET_ADMIN)) return -EPERM; case SK_IOCTL_GETMIB: if(copy_from_user(&pAC->PnmiStruct, Ioctl.pData, @@ -2909,6 +3896,7 @@ if (NULL == (pMemBuf = kmalloc(Length, GFP_KERNEL))) { return -ENOMEM; } + spin_lock_irqsave(&pAC->SlowPathLock, Flags); if(copy_from_user(pMemBuf, Ioctl.pData, Length)) { Err = -EFAULT; goto fault_gen; @@ -2927,10 +3915,10 @@ goto fault_gen; } fault_gen: + spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); kfree(pMemBuf); /* cleanup everything */ break; -#ifdef SK_DIAG_SUPPORT - case SK_IOCTL_DIAG: + case SK_IOCTL_DIAG: if (!capable(CAP_NET_ADMIN)) return -EPERM; if (Ioctl.Len < (sizeof(pAC->PnmiStruct) + HeaderLength)) { Length = Ioctl.Len; @@ -2967,7 +3955,6 @@ fault_diag: kfree(pMemBuf); /* cleanup everything */ break; -#endif default: Err = -EOPNOTSUPP; } @@ -2999,12 +3986,12 @@ unsigned int Size, /* length of ioctl data */ int mode) /* flag for set/preset */ { -unsigned long Flags; /* for spin lock */ -SK_AC *pAC; + SK_AC *pAC = pNet->pAC; + unsigned long Flags; /* for spin lock */ SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ENTRY, ("SkGeIocMib starts now...\n")); - pAC = pNet->pAC; + /* access MIB */ spin_lock_irqsave(&pAC->SlowPathLock, Flags); switch(mode) { @@ -3047,17 +4034,18 @@ SK_I32 Port; /* preferred port */ SK_BOOL AutoSet; SK_BOOL DupSet; -int LinkSpeed = SK_LSPEED_AUTO; /* Link speed */ -int AutoNeg = 1; /* autoneg off (0) or on (1) */ -int DuplexCap = 0; /* 0=both,1=full,2=half */ -int FlowCtrl = SK_FLOW_MODE_SYM_OR_REM; /* FlowControl */ -int MSMode = SK_MS_MODE_AUTO; /* master/slave mode */ - -SK_BOOL IsConTypeDefined = SK_TRUE; -SK_BOOL IsLinkSpeedDefined = SK_TRUE; -SK_BOOL IsFlowCtrlDefined = SK_TRUE; -SK_BOOL IsRoleDefined = SK_TRUE; -SK_BOOL IsModeDefined = SK_TRUE; +int LinkSpeed = SK_LSPEED_AUTO; /* Link speed */ +int AutoNeg = 1; /* autoneg off (0) or on (1) */ +int DuplexCap = 0; /* 0=both,1=full,2=half */ +int FlowCtrl = SK_FLOW_MODE_SYM_OR_REM; /* FlowControl */ +int MSMode = SK_MS_MODE_AUTO; /* master/slave mode */ +int IrqModMaskOffset = 6; /* all ints moderated=default */ + +SK_BOOL IsConTypeDefined = SK_TRUE; +SK_BOOL IsLinkSpeedDefined = SK_TRUE; +SK_BOOL IsFlowCtrlDefined = SK_TRUE; +SK_BOOL IsRoleDefined = SK_TRUE; +SK_BOOL IsModeDefined = SK_TRUE; /* * The two parameters AutoNeg. and DuplexCap. map to one configuration * parameter. The mapping is described by this table: @@ -3075,6 +4063,15 @@ {SK_LMODE_AUTOBOTH , SK_LMODE_AUTOFULL , SK_LMODE_AUTOHALF }, {SK_LMODE_AUTOSENSE, SK_LMODE_AUTOSENSE, SK_LMODE_AUTOSENSE} }; +SK_U32 IrqModMask[7][2] = + { { IRQ_MASK_RX_ONLY , Y2_DRIVER_IRQS }, + { IRQ_MASK_TX_ONLY , Y2_DRIVER_IRQS }, + { IRQ_MASK_SP_ONLY , Y2_SPECIAL_IRQS }, + { IRQ_MASK_SP_RX , Y2_IRQ_MASK }, + { IRQ_MASK_TX_RX , Y2_DRIVER_IRQS }, + { IRQ_MASK_SP_TX , Y2_IRQ_MASK }, + { IRQ_MASK_RX_TX_SP, Y2_IRQ_MASK } }; + #define DC_BOTH 0 #define DC_FULL 1 #define DC_HALF 2 @@ -3114,7 +4111,7 @@ ** ** This ConType parameter is used for all ports of the adapter! */ - if ( (ConType != NULL) && + if ( (ConType != NULL) && (pAC->Index < SK_MAX_CARD_PARAM) && (ConType[pAC->Index] != NULL) ) { @@ -3140,40 +4137,40 @@ M_CurrPort.PMSMode = SK_MS_MODE_AUTO; M_CurrPort.PLinkSpeed = SK_LSPEED_AUTO; } - } else if (strcmp(ConType[pAC->Index],"100FD")==0) { + } else if (strcmp(ConType[pAC->Index],"100FD")==0) { for (Port = 0; Port < SK_MAX_MACS; Port++) { M_CurrPort.PLinkModeConf = Capabilities[AN_OFF][DC_FULL]; M_CurrPort.PFlowCtrlMode = SK_FLOW_MODE_NONE; M_CurrPort.PMSMode = SK_MS_MODE_AUTO; M_CurrPort.PLinkSpeed = SK_LSPEED_100MBPS; } - } else if (strcmp(ConType[pAC->Index],"100HD")==0) { + } else if (strcmp(ConType[pAC->Index],"100HD")==0) { for (Port = 0; Port < SK_MAX_MACS; Port++) { M_CurrPort.PLinkModeConf = Capabilities[AN_OFF][DC_HALF]; M_CurrPort.PFlowCtrlMode = SK_FLOW_MODE_NONE; M_CurrPort.PMSMode = SK_MS_MODE_AUTO; M_CurrPort.PLinkSpeed = SK_LSPEED_100MBPS; } - } else if (strcmp(ConType[pAC->Index],"10FD")==0) { + } else if (strcmp(ConType[pAC->Index],"10FD")==0) { for (Port = 0; Port < SK_MAX_MACS; Port++) { M_CurrPort.PLinkModeConf = Capabilities[AN_OFF][DC_FULL]; M_CurrPort.PFlowCtrlMode = SK_FLOW_MODE_NONE; M_CurrPort.PMSMode = SK_MS_MODE_AUTO; M_CurrPort.PLinkSpeed = SK_LSPEED_10MBPS; } - } else if (strcmp(ConType[pAC->Index],"10HD")==0) { + } else if (strcmp(ConType[pAC->Index],"10HD")==0) { for (Port = 0; Port < SK_MAX_MACS; Port++) { M_CurrPort.PLinkModeConf = Capabilities[AN_OFF][DC_HALF]; M_CurrPort.PFlowCtrlMode = SK_FLOW_MODE_NONE; M_CurrPort.PMSMode = SK_MS_MODE_AUTO; M_CurrPort.PLinkSpeed = SK_LSPEED_10MBPS; } - } else { + } else { printk("sk98lin: Illegal value \"%s\" for ConType\n", ConType[pAC->Index]); IsConTypeDefined = SK_FALSE; /* Wrong ConType defined */ } - } else { + } else { IsConTypeDefined = SK_FALSE; /* No ConType defined */ } @@ -3192,14 +4189,30 @@ } else if (strcmp(Speed_A[pAC->Index],"100")==0) { LinkSpeed = SK_LSPEED_100MBPS; } else if (strcmp(Speed_A[pAC->Index],"1000")==0) { - LinkSpeed = SK_LSPEED_1000MBPS; + if ((pAC->PciDev->vendor == 0x11ab ) && + (pAC->PciDev->device == 0x4350)) { + LinkSpeed = SK_LSPEED_100MBPS; + printk("sk98lin: Illegal value \"%s\" for Speed_A.\n" + "Gigabit speed not possible with this chip revision!", + Speed_A[pAC->Index]); + } else { + LinkSpeed = SK_LSPEED_1000MBPS; + } } else { printk("sk98lin: Illegal value \"%s\" for Speed_A\n", Speed_A[pAC->Index]); IsLinkSpeedDefined = SK_FALSE; } } else { - IsLinkSpeedDefined = SK_FALSE; + if ((pAC->PciDev->vendor == 0x11ab ) && + (pAC->PciDev->device == 0x4350)) { + /* Gigabit speed not supported + * Swith to speed 100 + */ + LinkSpeed = SK_LSPEED_100MBPS; + } else { + IsLinkSpeedDefined = SK_FALSE; + } } /* @@ -3294,9 +4307,6 @@ } if (!AutoSet && DupSet) { - printk("sk98lin: Port A: Duplex setting not" - " possible in\n default AutoNegotiation mode" - " (Sense).\n Using AutoNegotiation On\n"); AutoNeg = AN_ON; } @@ -3324,7 +4334,7 @@ FlowCtrl = SK_FLOW_MODE_NONE; } else { printk("sk98lin: Illegal value \"%s\" for FlowCtrl_A\n", - FlowCtrl_A[pAC->Index]); + FlowCtrl_A[pAC->Index]); IsFlowCtrlDefined = SK_FALSE; } } else { @@ -3416,7 +4426,7 @@ ** Decide whether to set new config value if somethig valid has ** been received. */ - if (IsLinkSpeedDefined) { + if (IsLinkSpeedDefined) { pAC->GIni.GP[1].PLinkSpeed = LinkSpeed; } @@ -3492,9 +4502,6 @@ } if (!AutoSet && DupSet) { - printk("sk98lin: Port B: Duplex setting not" - " possible in\n default AutoNegotiation mode" - " (Sense).\n Using AutoNegotiation On\n"); AutoNeg = AN_ON; } @@ -3607,11 +4614,15 @@ } pAC->RlmtNets = 1; + pAC->RlmtMode = 0; if (RlmtMode != NULL && pAC->IndexIndex] != NULL) { if (strcmp(RlmtMode[pAC->Index], "") == 0) { - pAC->RlmtMode = 0; + if (pAC->GIni.GIMacsFound == 2) { + pAC->RlmtMode = SK_RLMT_CHECK_LINK; + pAC->RlmtNets = 2; + } } else if (strcmp(RlmtMode[pAC->Index], "CheckLinkState") == 0) { pAC->RlmtMode = SK_RLMT_CHECK_LINK; } else if (strcmp(RlmtMode[pAC->Index], "CheckLocalPort") == 0) { @@ -3632,12 +4643,37 @@ pAC->RlmtMode = 0; } } else { - pAC->RlmtMode = 0; + if (pAC->GIni.GIMacsFound == 2) { + pAC->RlmtMode = SK_RLMT_CHECK_LINK; + pAC->RlmtNets = 2; + } } - + +#ifdef SK_YUKON2 + /* + ** use dualnet config per default + * + pAC->RlmtMode = SK_RLMT_CHECK_LINK; + pAC->RlmtNets = 2; + */ +#endif + + + /* + ** Check the LowLatance parameters + */ + pAC->LowLatency = SK_FALSE; + if (LowLatency[pAC->Index] != NULL) { + if (strcmp(LowLatency[pAC->Index], "On") == 0) { + pAC->LowLatency = SK_TRUE; + } + } + + /* ** Check the interrupt moderation parameters */ + pAC->DynIrqModInfo.IntModTypeSelect = C_INT_MOD_NONE; if (Moderation[pAC->Index] != NULL) { if (strcmp(Moderation[pAC->Index], "") == 0) { pAC->DynIrqModInfo.IntModTypeSelect = C_INT_MOD_NONE; @@ -3651,70 +4687,49 @@ printk("sk98lin: Illegal value \"%s\" for Moderation.\n" " Disable interrupt moderation.\n", Moderation[pAC->Index]); - pAC->DynIrqModInfo.IntModTypeSelect = C_INT_MOD_NONE; - } - } else { - pAC->DynIrqModInfo.IntModTypeSelect = C_INT_MOD_NONE; - } - - if (Stats[pAC->Index] != NULL) { - if (strcmp(Stats[pAC->Index], "Yes") == 0) { - pAC->DynIrqModInfo.DisplayStats = SK_TRUE; - } else { - pAC->DynIrqModInfo.DisplayStats = SK_FALSE; } } else { - pAC->DynIrqModInfo.DisplayStats = SK_FALSE; +/* Set interrupt moderation if wished */ +#ifdef CONFIG_SK98LIN_STATINT + pAC->DynIrqModInfo.IntModTypeSelect = C_INT_MOD_STATIC; +#endif } if (ModerationMask[pAC->Index] != NULL) { if (strcmp(ModerationMask[pAC->Index], "Rx") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_RX_ONLY; + IrqModMaskOffset = 0; } else if (strcmp(ModerationMask[pAC->Index], "Tx") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_TX_ONLY; + IrqModMaskOffset = 1; } else if (strcmp(ModerationMask[pAC->Index], "Sp") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_SP_ONLY; + IrqModMaskOffset = 2; } else if (strcmp(ModerationMask[pAC->Index], "RxSp") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_SP_RX; + IrqModMaskOffset = 3; } else if (strcmp(ModerationMask[pAC->Index], "SpRx") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_SP_RX; + IrqModMaskOffset = 3; } else if (strcmp(ModerationMask[pAC->Index], "RxTx") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_TX_RX; + IrqModMaskOffset = 4; } else if (strcmp(ModerationMask[pAC->Index], "TxRx") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_TX_RX; + IrqModMaskOffset = 4; } else if (strcmp(ModerationMask[pAC->Index], "TxSp") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_SP_TX; + IrqModMaskOffset = 5; } else if (strcmp(ModerationMask[pAC->Index], "SpTx") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_SP_TX; - } else if (strcmp(ModerationMask[pAC->Index], "RxTxSp") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_RX_TX_SP; - } else if (strcmp(ModerationMask[pAC->Index], "RxSpTx") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_RX_TX_SP; - } else if (strcmp(ModerationMask[pAC->Index], "TxRxSp") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_RX_TX_SP; - } else if (strcmp(ModerationMask[pAC->Index], "TxSpRx") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_RX_TX_SP; - } else if (strcmp(ModerationMask[pAC->Index], "SpTxRx") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_RX_TX_SP; - } else if (strcmp(ModerationMask[pAC->Index], "SpRxTx") == 0) { - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_RX_TX_SP; - } else { /* some rubbish */ - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_RX_ONLY; - } - } else { /* operator has stated nothing */ - pAC->DynIrqModInfo.MaskIrqModeration = IRQ_MASK_TX_RX; - } - - if (AutoSizing[pAC->Index] != NULL) { - if (strcmp(AutoSizing[pAC->Index], "On") == 0) { - pAC->DynIrqModInfo.AutoSizing = SK_FALSE; - } else { - pAC->DynIrqModInfo.AutoSizing = SK_FALSE; + IrqModMaskOffset = 5; + } else { /* some rubbish stated */ + // IrqModMaskOffset = 6; ->has been initialized + // already at the begin of this function... } - } else { /* operator has stated nothing */ - pAC->DynIrqModInfo.AutoSizing = SK_FALSE; + } + if (!CHIP_ID_YUKON_2(pAC)) { + pAC->DynIrqModInfo.MaskIrqModeration = IrqModMask[IrqModMaskOffset][0]; + } else { + pAC->DynIrqModInfo.MaskIrqModeration = IrqModMask[IrqModMaskOffset][1]; } + if (!CHIP_ID_YUKON_2(pAC)) { + pAC->DynIrqModInfo.MaxModIntsPerSec = C_INTS_PER_SEC_DEFAULT; + } else { + pAC->DynIrqModInfo.MaxModIntsPerSec = C_Y2_INTS_PER_SEC_DEFAULT; + } if (IntsPerSec[pAC->Index] != 0) { if ((IntsPerSec[pAC->Index]< C_INT_MOD_IPS_LOWER_RANGE) || (IntsPerSec[pAC->Index] > C_INT_MOD_IPS_UPPER_RANGE)) { @@ -3723,28 +4738,25 @@ IntsPerSec[pAC->Index], C_INT_MOD_IPS_LOWER_RANGE, C_INT_MOD_IPS_UPPER_RANGE, - C_INTS_PER_SEC_DEFAULT); - pAC->DynIrqModInfo.MaxModIntsPerSec = C_INTS_PER_SEC_DEFAULT; + pAC->DynIrqModInfo.MaxModIntsPerSec); } else { pAC->DynIrqModInfo.MaxModIntsPerSec = IntsPerSec[pAC->Index]; } - } else { - pAC->DynIrqModInfo.MaxModIntsPerSec = C_INTS_PER_SEC_DEFAULT; - } + } /* ** Evaluate upper and lower moderation threshold */ pAC->DynIrqModInfo.MaxModIntsPerSecUpperLimit = pAC->DynIrqModInfo.MaxModIntsPerSec + - (pAC->DynIrqModInfo.MaxModIntsPerSec / 2); + (pAC->DynIrqModInfo.MaxModIntsPerSec / 5); pAC->DynIrqModInfo.MaxModIntsPerSecLowerLimit = pAC->DynIrqModInfo.MaxModIntsPerSec - - (pAC->DynIrqModInfo.MaxModIntsPerSec / 2); - - pAC->DynIrqModInfo.PrevTimeVal = jiffies; /* initial value */ + (pAC->DynIrqModInfo.MaxModIntsPerSec / 5); + pAC->DynIrqModInfo.DynIrqModSampleInterval = + SK_DRV_MODERATION_TIMER_LENGTH; } /* GetConfiguration */ @@ -3754,66 +4766,31 @@ * ProductStr - return a adapter identification string from vpd * * Description: - * This function reads the product name string from the vpd area - * and puts it the field pAC->DeviceString. - * - * Returns: N/A - */ -static inline int ProductStr( - SK_AC *pAC, /* pointer to adapter context */ - char *DeviceStr, /* result string */ - int StrLen /* length of the string */ -) -{ -char Keyword[] = VPD_NAME; /* vpd productname identifier */ -int ReturnCode; /* return code from vpd_read */ -unsigned long Flags; - - spin_lock_irqsave(&pAC->SlowPathLock, Flags); - ReturnCode = VpdRead(pAC, pAC->IoBase, Keyword, DeviceStr, &StrLen); - spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); - - return ReturnCode; -} /* ProductStr */ - -/***************************************************************************** - * - * StartDrvCleanupTimer - Start timer to check for descriptors which - * might be placed in descriptor ring, but - * havent been handled up to now - * - * Description: - * This function requests a HW-timer fo the Yukon card. The actions to - * perform when this timer expires, are located in the SkDrvEvent(). - * - * Returns: N/A - */ -static void -StartDrvCleanupTimer(SK_AC *pAC) { - SK_EVPARA EventParam; /* Event struct for timer event */ - - SK_MEMSET((char *) &EventParam, 0, sizeof(EventParam)); - EventParam.Para32[0] = SK_DRV_RX_CLEANUP_TIMER; - SkTimerStart(pAC, pAC->IoBase, &pAC->DrvCleanupTimer, - SK_DRV_RX_CLEANUP_TIMER_LENGTH, - SKGE_DRV, SK_DRV_TIMER, EventParam); -} - -/***************************************************************************** - * - * StopDrvCleanupTimer - Stop timer to check for descriptors - * - * Description: - * This function requests a HW-timer fo the Yukon card. The actions to - * perform when this timer expires, are located in the SkDrvEvent(). + * This function reads the product name string from the vpd area + * and puts it the field pAC->DeviceString. * * Returns: N/A */ -static void -StopDrvCleanupTimer(SK_AC *pAC) { - SkTimerStop(pAC, pAC->IoBase, &pAC->DrvCleanupTimer); - SK_MEMSET((char *) &pAC->DrvCleanupTimer, 0, sizeof(SK_TIMER)); -} +static void ProductStr( +SK_AC *pAC /* pointer to adapter context */ +) +{ +int StrLen = 80; /* length of the string, defined in SK_AC */ +char Keyword[] = VPD_NAME; /* vpd productname identifier */ +int ReturnCode; /* return code from vpd_read */ +unsigned long Flags; + + spin_lock_irqsave(&pAC->SlowPathLock, Flags); + ReturnCode = VpdRead(pAC, pAC->IoBase, Keyword, pAC->DeviceStr, + &StrLen); + spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); + if (ReturnCode != 0) { + /* there was an error reading the vpd data */ + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_ERROR, + ("Error reading VPD data: %d\n", ReturnCode)); + pAC->DeviceStr[0] = '\0'; + } +} /* ProductStr */ /****************************************************************************/ /* functions for common modules *********************************************/ @@ -3903,7 +4880,9 @@ SK_U64 SkOsGetTime(SK_AC *pAC) { SK_U64 PrivateJiffies; + SkOsGetTimeCurrent(pAC, &PrivateJiffies); + return PrivateJiffies; } /* SkOsGetTime */ @@ -3976,6 +4955,28 @@ /***************************************************************************** * + * SkPciWriteCfgDWord - write a 32 bit value to pci config space + * + * Description: + * This routine writes a 32 bit value to the pci configuration + * space. + * + * Returns: + * 0 - indicate everything worked ok. + * != 0 - error indication + */ +int SkPciWriteCfgDWord( +SK_AC *pAC, /* Adapter Control structure pointer */ +int PciAddr, /* PCI register address */ +SK_U32 Val) /* pointer to store the read value */ +{ + pci_write_config_dword(pAC->PciDev, PciAddr, Val); + return(0); +} /* SkPciWriteCfgDWord */ + + +/***************************************************************************** + * * SkPciWriteCfgWord - write a 16 bit value to pci config space * * Description: @@ -4036,29 +5037,26 @@ * */ int SkDrvEvent( -SK_AC *pAC, /* pointer to adapter context */ -SK_IOC IoC, /* io-context */ -SK_U32 Event, /* event-id */ -SK_EVPARA Param) /* event-parameter */ -{ -SK_MBUF *pRlmtMbuf; /* pointer to a rlmt-mbuf structure */ -struct sk_buff *pMsg; /* pointer to a message block */ -int FromPort; /* the port from which we switch away */ -int ToPort; /* the port we switch to */ -SK_EVPARA NewPara; /* parameter for further events */ -int Stat; -unsigned long Flags; -SK_BOOL DualNet; +SK_AC *pAC, /* pointer to adapter context */ +SK_IOC IoC, /* IO control context */ +SK_U32 Event, /* event-id */ +SK_EVPARA Param) /* event-parameter */ +{ + SK_MBUF *pRlmtMbuf; /* pointer to a rlmt-mbuf structure */ + struct sk_buff *pMsg; /* pointer to a message block */ + SK_BOOL DualNet; + SK_U32 Reason; + unsigned long Flags; + int FromPort; /* the port from which we switch away */ + int ToPort; /* the port we switch to */ + int Stat; + DEV_NET *pNet = NULL; +#ifdef CONFIG_SK98LIN_NAPI + int WorkToDo = 1; /* min(*budget, dev->quota); */ + int WorkDone = 0; +#endif switch (Event) { - case SK_DRV_ADAP_FAIL: - SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT, - ("ADAPTER FAIL EVENT\n")); - printk("%s: Adapter failed.\n", pAC->dev[0]->name); - /* disable interrupts */ - SK_OUT32(pAC->IoBase, B0_IMSK, 0); - /* cgoos */ - break; case SK_DRV_PORT_FAIL: FromPort = Param.Para32[0]; SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT, @@ -4068,210 +5066,294 @@ } else { printk("%s: Port B failed.\n", pAC->dev[1]->name); } - /* cgoos */ break; - case SK_DRV_PORT_RESET: /* SK_U32 PortIdx */ - /* action list 4 */ + case SK_DRV_PORT_RESET: FromPort = Param.Para32[0]; SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT, ("PORT RESET EVENT, Port: %d ", FromPort)); - NewPara.Para64 = FromPort; - SkPnmiEvent(pAC, IoC, SK_PNMI_EVT_XMAC_RESET, NewPara); + SkLocalEventQueue64(pAC, SKGE_PNMI, SK_PNMI_EVT_XMAC_RESET, + FromPort, SK_FALSE); spin_lock_irqsave( &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock, Flags); - - SkGeStopPort(pAC, IoC, FromPort, SK_STOP_ALL, SK_HARD_RST); - netif_carrier_off(pAC->dev[Param.Para32[0]]); + if (CHIP_ID_YUKON_2(pAC)) { + SkY2PortStop(pAC, IoC, FromPort, SK_STOP_ALL, SK_HARD_RST); + } else { + SkGeStopPort(pAC, IoC, FromPort, SK_STOP_ALL, SK_HARD_RST); + } + pAC->dev[Param.Para32[0]]->flags &= ~IFF_RUNNING; spin_unlock_irqrestore( &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock, Flags); - /* clear rx ring from received frames */ - ReceiveIrq(pAC, &pAC->RxPort[FromPort], SK_FALSE); - - ClearTxRing(pAC, &pAC->TxPort[FromPort][TX_PRIO_LOW]); + if (!CHIP_ID_YUKON_2(pAC)) { +#ifdef CONFIG_SK98LIN_NAPI + WorkToDo = 1; + ReceiveIrq(pAC, &pAC->RxPort[FromPort], SK_FALSE, &WorkDone, WorkToDo); +#else + ReceiveIrq(pAC, &pAC->RxPort[FromPort], SK_FALSE); +#endif + ClearTxRing(pAC, &pAC->TxPort[FromPort][TX_PRIO_LOW]); + } spin_lock_irqsave( &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock, Flags); - - /* tschilling: Handling of return value inserted. */ - if (SkGeInitPort(pAC, IoC, FromPort)) { - if (FromPort == 0) { - printk("%s: SkGeInitPort A failed.\n", pAC->dev[0]->name); + +#ifdef USE_TIST_FOR_RESET + if (pAC->GIni.GIYukon2) { +#ifdef Y2_RECOVERY + /* for Yukon II we want to have tist enabled all the time */ + if (!SK_ADAPTER_WAITING_FOR_TIST(pAC)) { + Y2_ENABLE_TIST(pAC->IoBase); + } +#else + /* make sure that we do not accept any status LEs from now on */ + if (SK_ADAPTER_WAITING_FOR_TIST(pAC)) { +#endif + /* port already waiting for tist */ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DUMP, + ("Port %c is now waiting for specific Tist\n", + 'A' + FromPort)); + SK_SET_WAIT_BIT_FOR_PORT( + pAC, + SK_PSTATE_WAITING_FOR_SPECIFIC_TIST, + FromPort); + /* get current timestamp */ + Y2_GET_TIST_LOW_VAL(pAC->IoBase, &pAC->MinTistLo); + pAC->MinTistHi = pAC->GIni.GITimeStampCnt; +#ifndef Y2_RECOVERY } else { - printk("%s: SkGeInitPort B failed.\n", pAC->dev[1]->name); + /* nobody is waiting yet */ + SK_SET_WAIT_BIT_FOR_PORT( + pAC, + SK_PSTATE_WAITING_FOR_ANY_TIST, + FromPort); + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DUMP, + ("Port %c is now waiting for any Tist (0x%X)\n", + 'A' + FromPort, pAC->AdapterResetState)); + /* start tist */ + Y2_ENABLE_TIST(pAC-IoBase); + } +#endif + } +#endif + +#ifdef Y2_LE_CHECK + /* mark entries invalid */ + pAC->LastPort = 3; + pAC->LastOpc = 0xFF; +#endif + if (CHIP_ID_YUKON_2(pAC)) { + SkY2PortStart(pAC, IoC, FromPort); + } else { + /* tschilling: Handling of return value inserted. */ + if (SkGeInitPort(pAC, IoC, FromPort)) { + if (FromPort == 0) { + printk("%s: SkGeInitPort A failed.\n", pAC->dev[0]->name); + } else { + printk("%s: SkGeInitPort B failed.\n", pAC->dev[1]->name); + } } + SkAddrMcUpdate(pAC,IoC, FromPort); + PortReInitBmu(pAC, FromPort); + SkGePollTxD(pAC, IoC, FromPort, SK_TRUE); + CLEAR_AND_START_RX(FromPort); } - SkAddrMcUpdate(pAC,IoC, FromPort); - PortReInitBmu(pAC, FromPort); - SkGePollTxD(pAC, IoC, FromPort, SK_TRUE); - ClearAndStartRx(pAC, FromPort); spin_unlock_irqrestore( &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock, Flags); break; - case SK_DRV_NET_UP: /* SK_U32 PortIdx */ - { struct net_device *dev = pAC->dev[Param.Para32[0]]; - /* action list 5 */ + case SK_DRV_NET_UP: FromPort = Param.Para32[0]; SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT, - ("NET UP EVENT, Port: %d ", Param.Para32[0])); - /* Mac update */ - SkAddrMcUpdate(pAC,IoC, FromPort); - + ("NET UP EVENT, Port: %d ", FromPort)); + SkAddrMcUpdate(pAC,IoC, FromPort); /* Mac update */ if (DoPrintInterfaceChange) { - printk("%s: network connection up using" - " port %c\n", pAC->dev[Param.Para32[0]]->name, 'A'+Param.Para32[0]); + printk("%s: network connection up using port %c\n", + pAC->dev[FromPort]->name, 'A'+FromPort); - /* tschilling: Values changed according to LinkSpeedUsed. */ - Stat = pAC->GIni.GP[FromPort].PLinkSpeedUsed; - if (Stat == SK_LSPEED_STAT_10MBPS) { - printk(" speed: 10\n"); - } else if (Stat == SK_LSPEED_STAT_100MBPS) { - printk(" speed: 100\n"); - } else if (Stat == SK_LSPEED_STAT_1000MBPS) { - printk(" speed: 1000\n"); - } else { - printk(" speed: unknown\n"); - } + /* tschilling: Values changed according to LinkSpeedUsed. */ + Stat = pAC->GIni.GP[FromPort].PLinkSpeedUsed; + if (Stat == SK_LSPEED_STAT_10MBPS) { + printk(" speed: 10\n"); + } else if (Stat == SK_LSPEED_STAT_100MBPS) { + printk(" speed: 100\n"); + } else if (Stat == SK_LSPEED_STAT_1000MBPS) { + printk(" speed: 1000\n"); + } else { + printk(" speed: unknown\n"); + } + Stat = pAC->GIni.GP[FromPort].PLinkModeStatus; + if ((Stat == SK_LMODE_STAT_AUTOHALF) || + (Stat == SK_LMODE_STAT_AUTOFULL)) { + printk(" autonegotiation: yes\n"); + } else { + printk(" autonegotiation: no\n"); + } - Stat = pAC->GIni.GP[FromPort].PLinkModeStatus; - if (Stat == SK_LMODE_STAT_AUTOHALF || - Stat == SK_LMODE_STAT_AUTOFULL) { - printk(" autonegotiation: yes\n"); - } - else { - printk(" autonegotiation: no\n"); - } - if (Stat == SK_LMODE_STAT_AUTOHALF || - Stat == SK_LMODE_STAT_HALF) { - printk(" duplex mode: half\n"); - } - else { - printk(" duplex mode: full\n"); - } - Stat = pAC->GIni.GP[FromPort].PFlowCtrlStatus; - if (Stat == SK_FLOW_STAT_REM_SEND ) { - printk(" flowctrl: remote send\n"); - } - else if (Stat == SK_FLOW_STAT_LOC_SEND ){ - printk(" flowctrl: local send\n"); - } - else if (Stat == SK_FLOW_STAT_SYMMETRIC ){ - printk(" flowctrl: symmetric\n"); - } - else { - printk(" flowctrl: none\n"); - } - - /* tschilling: Check against CopperType now. */ - if ((pAC->GIni.GICopperType == SK_TRUE) && - (pAC->GIni.GP[FromPort].PLinkSpeedUsed == - SK_LSPEED_STAT_1000MBPS)) { - Stat = pAC->GIni.GP[FromPort].PMSStatus; - if (Stat == SK_MS_STAT_MASTER ) { - printk(" role: master\n"); + if ((Stat == SK_LMODE_STAT_AUTOHALF) || + (Stat == SK_LMODE_STAT_HALF)) { + printk(" duplex mode: half\n"); + } else { + printk(" duplex mode: full\n"); } - else if (Stat == SK_MS_STAT_SLAVE ) { - printk(" role: slave\n"); + + Stat = pAC->GIni.GP[FromPort].PFlowCtrlStatus; + if (Stat == SK_FLOW_STAT_REM_SEND ) { + printk(" flowctrl: remote send\n"); + } else if (Stat == SK_FLOW_STAT_LOC_SEND ) { + printk(" flowctrl: local send\n"); + } else if (Stat == SK_FLOW_STAT_SYMMETRIC ) { + printk(" flowctrl: symmetric\n"); + } else { + printk(" flowctrl: none\n"); } - else { - printk(" role: ???\n"); + + /* tschilling: Check against CopperType now. */ + if ((pAC->GIni.GICopperType == SK_TRUE) && + (pAC->GIni.GP[FromPort].PLinkSpeedUsed == + SK_LSPEED_STAT_1000MBPS)) { + Stat = pAC->GIni.GP[FromPort].PMSStatus; + if (Stat == SK_MS_STAT_MASTER ) { + printk(" role: master\n"); + } else if (Stat == SK_MS_STAT_SLAVE ) { + printk(" role: slave\n"); + } else { + printk(" role: ???\n"); + } } - } - /* - Display dim (dynamic interrupt moderation) - informations - */ - if (pAC->DynIrqModInfo.IntModTypeSelect == C_INT_MOD_STATIC) - printk(" irq moderation: static (%d ints/sec)\n", + /* Display interrupt moderation informations */ + if (pAC->DynIrqModInfo.IntModTypeSelect == C_INT_MOD_STATIC) { + printk(" irq moderation: static (%d ints/sec)\n", pAC->DynIrqModInfo.MaxModIntsPerSec); - else if (pAC->DynIrqModInfo.IntModTypeSelect == C_INT_MOD_DYNAMIC) - printk(" irq moderation: dynamic (%d ints/sec)\n", + } else if (pAC->DynIrqModInfo.IntModTypeSelect == C_INT_MOD_DYNAMIC) { + printk(" irq moderation: dynamic (%d ints/sec)\n", pAC->DynIrqModInfo.MaxModIntsPerSec); - else - printk(" irq moderation: disabled\n"); + } else { + printk(" irq moderation: disabled\n"); + } + +#ifdef NETIF_F_TSO + if (CHIP_ID_YUKON_2(pAC)) { + if (pAC->dev[FromPort]->features & NETIF_F_TSO) { + printk(" tcp offload: enabled\n"); + } else { + printk(" tcp offload: disabled\n"); + } + } +#endif + if (pAC->dev[FromPort]->features & NETIF_F_SG) { + printk(" scatter-gather: enabled\n"); + } else { + printk(" scatter-gather: disabled\n"); + } - printk(" scatter-gather: %s\n", - (dev->features & NETIF_F_SG) ? "enabled" : "disabled"); - printk(" tx-checksum: %s\n", - (dev->features & NETIF_F_IP_CSUM) ? "enabled" : "disabled"); - printk(" rx-checksum: %s\n", - pAC->RxPort[Param.Para32[0]].RxCsum ? "enabled" : "disabled"); + if (pAC->dev[FromPort]->features & NETIF_F_IP_CSUM) { + printk(" tx-checksum: enabled\n"); + } else { + printk(" tx-checksum: disabled\n"); + } + if (pAC->RxPort[FromPort].UseRxCsum) { + printk(" rx-checksum: enabled\n"); + } else { + printk(" rx-checksum: disabled\n"); + } +#ifdef CONFIG_SK98LIN_NAPI + printk(" rx-polling: enabled\n"); +#endif + if (pAC->LowLatency) { + printk(" low latency: enabled\n"); + } } else { - DoPrintInterfaceChange = SK_TRUE; - } + DoPrintInterfaceChange = SK_TRUE; + } - if ((Param.Para32[0] != pAC->ActivePort) && - (pAC->RlmtNets == 1)) { - NewPara.Para32[0] = pAC->ActivePort; - NewPara.Para32[1] = Param.Para32[0]; - SkEventQueue(pAC, SKGE_DRV, SK_DRV_SWITCH_INTERN, - NewPara); + if ((FromPort != pAC->ActivePort)&&(pAC->RlmtNets == 1)) { + SkLocalEventQueue(pAC, SKGE_DRV, SK_DRV_SWITCH_INTERN, + pAC->ActivePort, FromPort, SK_FALSE); } /* Inform the world that link protocol is up. */ - netif_carrier_on(dev); + netif_wake_queue(pAC->dev[FromPort]); + netif_carrier_on(pAC->dev[FromPort]); + pAC->dev[FromPort]->flags |= IFF_RUNNING; break; - } - case SK_DRV_NET_DOWN: /* SK_U32 Reason */ - /* action list 7 */ + case SK_DRV_NET_DOWN: + Reason = Param.Para32[0]; + FromPort = Param.Para32[1]; SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT, ("NET DOWN EVENT ")); + + /* Stop queue and carrier */ + netif_stop_queue(pAC->dev[FromPort]); + netif_carrier_off(pAC->dev[FromPort]); + + /* Print link change */ if (DoPrintInterfaceChange) { - printk("%s: network connection down\n", - pAC->dev[Param.Para32[1]]->name); + if (pAC->dev[FromPort]->flags & IFF_RUNNING) { + printk("%s: network connection down\n", + pAC->dev[FromPort]->name); + } } else { DoPrintInterfaceChange = SK_TRUE; } - netif_carrier_off(pAC->dev[Param.Para32[1]]); + pAC->dev[FromPort]->flags &= ~IFF_RUNNING; break; - case SK_DRV_SWITCH_HARD: /* SK_U32 FromPortIdx SK_U32 ToPortIdx */ - SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT, - ("PORT SWITCH HARD ")); - case SK_DRV_SWITCH_SOFT: /* SK_U32 FromPortIdx SK_U32 ToPortIdx */ - /* action list 6 */ - printk("%s: switching to port %c\n", pAC->dev[0]->name, - 'A'+Param.Para32[1]); - case SK_DRV_SWITCH_INTERN: /* SK_U32 FromPortIdx SK_U32 ToPortIdx */ + case SK_DRV_SWITCH_HARD: /* FALL THRU */ + case SK_DRV_SWITCH_SOFT: /* FALL THRU */ + case SK_DRV_SWITCH_INTERN: FromPort = Param.Para32[0]; - ToPort = Param.Para32[1]; + ToPort = Param.Para32[1]; + printk("%s: switching from port %c to port %c\n", + pAC->dev[0]->name, 'A'+FromPort, 'A'+ToPort); SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT, ("PORT SWITCH EVENT, From: %d To: %d (Pref %d) ", FromPort, ToPort, pAC->Rlmt.Net[0].PrefPort)); - NewPara.Para64 = FromPort; - SkPnmiEvent(pAC, IoC, SK_PNMI_EVT_XMAC_RESET, NewPara); - NewPara.Para64 = ToPort; - SkPnmiEvent(pAC, IoC, SK_PNMI_EVT_XMAC_RESET, NewPara); + SkLocalEventQueue64(pAC, SKGE_PNMI, SK_PNMI_EVT_XMAC_RESET, + FromPort, SK_FALSE); + SkLocalEventQueue64(pAC, SKGE_PNMI, SK_PNMI_EVT_XMAC_RESET, + ToPort, SK_FALSE); spin_lock_irqsave( &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock, Flags); spin_lock(&pAC->TxPort[ToPort][TX_PRIO_LOW].TxDesRingLock); - SkGeStopPort(pAC, IoC, FromPort, SK_STOP_ALL, SK_SOFT_RST); - SkGeStopPort(pAC, IoC, ToPort, SK_STOP_ALL, SK_SOFT_RST); + if (CHIP_ID_YUKON_2(pAC)) { + SkY2PortStop(pAC, IoC, FromPort, SK_STOP_ALL, SK_SOFT_RST); + SkY2PortStop(pAC, IoC, ToPort, SK_STOP_ALL, SK_SOFT_RST); + } + else { + SkGeStopPort(pAC, IoC, FromPort, SK_STOP_ALL, SK_SOFT_RST); + SkGeStopPort(pAC, IoC, ToPort, SK_STOP_ALL, SK_SOFT_RST); + } spin_unlock(&pAC->TxPort[ToPort][TX_PRIO_LOW].TxDesRingLock); spin_unlock_irqrestore( &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock, Flags); - ReceiveIrq(pAC, &pAC->RxPort[FromPort], SK_FALSE); /* clears rx ring */ - ReceiveIrq(pAC, &pAC->RxPort[ToPort], SK_FALSE); /* clears rx ring */ - ClearTxRing(pAC, &pAC->TxPort[FromPort][TX_PRIO_LOW]); - ClearTxRing(pAC, &pAC->TxPort[ToPort][TX_PRIO_LOW]); + if (!CHIP_ID_YUKON_2(pAC)) { +#ifdef CONFIG_SK98LIN_NAPI + WorkToDo = 1; + ReceiveIrq(pAC, &pAC->RxPort[FromPort], SK_FALSE, &WorkDone, WorkToDo); + ReceiveIrq(pAC, &pAC->RxPort[ToPort], SK_FALSE, &WorkDone, WorkToDo); +#else + ReceiveIrq(pAC, &pAC->RxPort[FromPort], SK_FALSE); /* clears rx ring */ + ReceiveIrq(pAC, &pAC->RxPort[ToPort], SK_FALSE); /* clears rx ring */ +#endif + ClearTxRing(pAC, &pAC->TxPort[FromPort][TX_PRIO_LOW]); + ClearTxRing(pAC, &pAC->TxPort[ToPort][TX_PRIO_LOW]); + } + spin_lock_irqsave( &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock, Flags); spin_lock(&pAC->TxPort[ToPort][TX_PRIO_LOW].TxDesRingLock); pAC->ActivePort = ToPort; -#if 0 - SetQueueSizes(pAC); -#else + /* tschilling: New common function with minimum size check. */ DualNet = SK_FALSE; if (pAC->RlmtNets == 2) { @@ -4289,74 +5371,338 @@ printk("SkGeInitAssignRamToQueues failed.\n"); break; } -#endif - /* tschilling: Handling of return values inserted. */ - if (SkGeInitPort(pAC, IoC, FromPort) || - SkGeInitPort(pAC, IoC, ToPort)) { - printk("%s: SkGeInitPort failed.\n", pAC->dev[0]->name); + + if (!CHIP_ID_YUKON_2(pAC)) { + /* tschilling: Handling of return values inserted. */ + if (SkGeInitPort(pAC, IoC, FromPort) || + SkGeInitPort(pAC, IoC, ToPort)) { + printk("%s: SkGeInitPort failed.\n", pAC->dev[0]->name); + } } - if (Event == SK_DRV_SWITCH_SOFT) { - SkMacRxTxEnable(pAC, IoC, FromPort); + if (!CHIP_ID_YUKON_2(pAC)) { + if (Event == SK_DRV_SWITCH_SOFT) { + SkMacRxTxEnable(pAC, IoC, FromPort); + } + SkMacRxTxEnable(pAC, IoC, ToPort); } - SkMacRxTxEnable(pAC, IoC, ToPort); + SkAddrSwap(pAC, IoC, FromPort, ToPort); SkAddrMcUpdate(pAC, IoC, FromPort); SkAddrMcUpdate(pAC, IoC, ToPort); - PortReInitBmu(pAC, FromPort); - PortReInitBmu(pAC, ToPort); - SkGePollTxD(pAC, IoC, FromPort, SK_TRUE); - SkGePollTxD(pAC, IoC, ToPort, SK_TRUE); - ClearAndStartRx(pAC, FromPort); - ClearAndStartRx(pAC, ToPort); + +#ifdef USE_TIST_FOR_RESET + if (pAC->GIni.GIYukon2) { + /* make sure that we do not accept any status LEs from now on */ + SK_DBG_MSG(pAC, SK_DBGMOD_DRV, SK_DBGCAT_DUMP, + ("both Ports now waiting for specific Tist\n")); + SK_SET_WAIT_BIT_FOR_PORT( + pAC, + SK_PSTATE_WAITING_FOR_ANY_TIST, + 0); + SK_SET_WAIT_BIT_FOR_PORT( + pAC, + SK_PSTATE_WAITING_FOR_ANY_TIST, + 1); + + /* start tist */ + Y2_ENABLE_TIST(pAC->IoBase); + } +#endif + if (!CHIP_ID_YUKON_2(pAC)) { + PortReInitBmu(pAC, FromPort); + PortReInitBmu(pAC, ToPort); + SkGePollTxD(pAC, IoC, FromPort, SK_TRUE); + SkGePollTxD(pAC, IoC, ToPort, SK_TRUE); + CLEAR_AND_START_RX(FromPort); + CLEAR_AND_START_RX(ToPort); + } else { + SkY2PortStart(pAC, IoC, FromPort); + SkY2PortStart(pAC, IoC, ToPort); +#ifdef SK_YUKON2 + /* in yukon-II always port 0 has to be started first */ + // SkY2PortStart(pAC, IoC, 0); + // SkY2PortStart(pAC, IoC, 1); +#endif + } spin_unlock(&pAC->TxPort[ToPort][TX_PRIO_LOW].TxDesRingLock); spin_unlock_irqrestore( &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock, Flags); break; case SK_DRV_RLMT_SEND: /* SK_MBUF *pMb */ - SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT, - ("RLS ")); + SK_DBG_MSG(NULL,SK_DBGMOD_DRV,SK_DBGCAT_DRV_EVENT,("RLS ")); pRlmtMbuf = (SK_MBUF*) Param.pParaPtr; pMsg = (struct sk_buff*) pRlmtMbuf->pOs; skb_put(pMsg, pRlmtMbuf->Length); - if (XmitFrame(pAC, &pAC->TxPort[pRlmtMbuf->PortIdx][TX_PRIO_LOW], - pMsg) < 0) + if (!CHIP_ID_YUKON_2(pAC)) { + if (XmitFrame(pAC, &pAC->TxPort[pRlmtMbuf->PortIdx][TX_PRIO_LOW], + pMsg) < 0) { + DEV_KFREE_SKB_ANY(pMsg); + } + } else { + if (SkY2RlmtSend(pAC, pRlmtMbuf->PortIdx, pMsg) < 0) { + DEV_KFREE_SKB_ANY(pMsg); + } + } + break; + case SK_DRV_TIMER: + if (Param.Para32[0] == SK_DRV_MODERATION_TIMER) { + /* check what IRQs are to be moderated */ + SkDimStartModerationTimer(pAC); + SkDimModerate(pAC); + } else { + printk("Expiration of unknown timer\n"); + } + break; + case SK_DRV_ADAP_FAIL: +#if (!defined (Y2_RECOVERY) && !defined (Y2_LE_CHECK)) + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT, + ("ADAPTER FAIL EVENT\n")); + printk("%s: Adapter failed.\n", pAC->dev[0]->name); + SK_OUT32(pAC->IoBase, B0_IMSK, 0); /* disable interrupts */ + break; +#endif + +#if (defined (Y2_RECOVERY) || defined (Y2_LE_CHECK)) + case SK_DRV_RECOVER: + pNet = (DEV_NET *) pAC->dev[0]->priv; + + /* Recover already in progress */ + if (pNet->InRecover) { + break; + } + + netif_stop_queue(pAC->dev[0]); /* stop device if running */ + pNet->InRecover = SK_TRUE; + + FromPort = Param.Para32[0]; + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT, + ("PORT RESET EVENT, Port: %d ", FromPort)); + + /* Disable interrupts */ + SK_OUT32(pAC->IoBase, B0_IMSK, 0); + SK_OUT32(pAC->IoBase, B0_HWE_IMSK, 0); + + SkLocalEventQueue64(pAC, SKGE_PNMI, SK_PNMI_EVT_XMAC_RESET, + FromPort, SK_FALSE); + spin_lock_irqsave( + &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock, + Flags); + if (CHIP_ID_YUKON_2(pAC)) { + if (pAC->GIni.GIMacsFound > 1) { + SkY2PortStop(pAC, IoC, 0, SK_STOP_ALL, SK_SOFT_RST); + SkY2PortStop(pAC, IoC, 1, SK_STOP_ALL, SK_SOFT_RST); + } else { + SkY2PortStop(pAC, IoC, FromPort, SK_STOP_ALL, SK_SOFT_RST); + } + } else { + SkGeStopPort(pAC, IoC, FromPort, SK_STOP_ALL, SK_SOFT_RST); + } + pAC->dev[Param.Para32[0]]->flags &= ~IFF_RUNNING; + spin_unlock_irqrestore( + &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock, + Flags); + + if (!CHIP_ID_YUKON_2(pAC)) { +#ifdef CONFIG_SK98LIN_NAPI + WorkToDo = 1; + ReceiveIrq(pAC, &pAC->RxPort[FromPort], SK_FALSE, &WorkDone, WorkToDo); +#else + ReceiveIrq(pAC, &pAC->RxPort[FromPort], SK_FALSE); +#endif + ClearTxRing(pAC, &pAC->TxPort[FromPort][TX_PRIO_LOW]); + } + spin_lock_irqsave( + &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock, + Flags); + +#ifdef USE_TIST_FOR_RESET + if (pAC->GIni.GIYukon2) { +#if 0 + /* make sure that we do not accept any status LEs from now on */ + Y2_ENABLE_TIST(pAC->IoBase); + + /* get current timestamp */ + Y2_GET_TIST_LOW_VAL(pAC->IoBase, &pAC->MinTistLo); + pAC->MinTistHi = pAC->GIni.GITimeStampCnt; + + SK_SET_WAIT_BIT_FOR_PORT( + pAC, + SK_PSTATE_WAITING_FOR_SPECIFIC_TIST, + FromPort); +#endif + if (pAC->GIni.GIMacsFound > 1) { + SK_SET_WAIT_BIT_FOR_PORT( + pAC, + SK_PSTATE_WAITING_FOR_ANY_TIST, + 0); + SK_SET_WAIT_BIT_FOR_PORT( + pAC, + SK_PSTATE_WAITING_FOR_ANY_TIST, + 1); + } else { + SK_SET_WAIT_BIT_FOR_PORT( + pAC, + SK_PSTATE_WAITING_FOR_ANY_TIST, + FromPort); + } + + /* start tist */ + Y2_ENABLE_TIST(pAC->IoBase); + } +#endif + + + +#ifdef Y2_LE_CHECK + /* mark entries invalid */ + pAC->LastPort = 3; + pAC->LastOpc = 0xFF; +#endif + +#endif + /* Restart ports but do not initialize PHY. */ + if (CHIP_ID_YUKON_2(pAC)) { + if (pAC->GIni.GIMacsFound > 1) { + SkY2PortStart(pAC, IoC, 0); + SkY2PortStart(pAC, IoC, 1); + } else { + SkY2PortStart(pAC, IoC, FromPort); + } + } else { + /* tschilling: Handling of return value inserted. */ + if (SkGeInitPort(pAC, IoC, FromPort)) { + if (FromPort == 0) { + printk("%s: SkGeInitPort A failed.\n", pAC->dev[0]->name); + } else { + printk("%s: SkGeInitPort B failed.\n", pAC->dev[1]->name); + } + } + SkAddrMcUpdate(pAC,IoC, FromPort); + PortReInitBmu(pAC, FromPort); + SkGePollTxD(pAC, IoC, FromPort, SK_TRUE); + CLEAR_AND_START_RX(FromPort); + } + spin_unlock_irqrestore( + &pAC->TxPort[FromPort][TX_PRIO_LOW].TxDesRingLock, + Flags); + +#if 0 + /* restart the kernel timer */ + pNet = (DEV_NET *) pAC->dev[FromPort]->priv; + if (!timer_pending(&pNet->KernelTimer)) { + pNet->KernelTimer.expires = + jiffies + (HZ/4); /* 250ms */ + add_timer(&pNet->KernelTimer); + } +#endif + pNet->InRecover = SK_FALSE; + /* enable Interrupts */ + SK_OUT32(pAC->IoBase, B0_IMSK, pAC->GIni.GIValIrqMask); + SK_OUT32(pAC->IoBase, B0_HWE_IMSK, IRQ_HWE_MASK); + netif_wake_queue(pAC->dev[0]); + break; + default: + break; + } + SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT, + ("END EVENT ")); + + return (0); +} /* SkDrvEvent */ + + +/****************************************************************************** + * + * SkLocalEventQueue() - add event to queue + * + * Description: + * This function adds an event to the event queue and run the + * SkEventDispatcher. At least Init Level 1 is required to queue events, + * but will be scheduled add Init Level 2. + * + * returns: + * nothing + */ +void SkLocalEventQueue( +SK_AC *pAC, /* Adapters context */ +SK_U32 Class, /* Event Class */ +SK_U32 Event, /* Event to be queued */ +SK_U32 Param1, /* Event parameter 1 */ +SK_U32 Param2, /* Event parameter 2 */ +SK_BOOL Dispatcher) /* Dispatcher flag: + * TRUE == Call SkEventDispatcher + * FALSE == Don't execute SkEventDispatcher + */ +{ + SK_EVPARA EvPara; + EvPara.Para32[0] = Param1; + EvPara.Para32[1] = Param2; + + + if (Class == SKGE_PNMI) { + SkPnmiEvent( pAC, + pAC->IoBase, + Event, + EvPara); + } else { + SkEventQueue( pAC, + Class, + Event, + EvPara); + } + + /* Run the dispatcher */ + if (Dispatcher) { + SkEventDispatcher(pAC, pAC->IoBase); + } + +} + +/****************************************************************************** + * + * SkLocalEventQueue64() - add event to queue (64bit version) + * + * Description: + * This function adds an event to the event queue and run the + * SkEventDispatcher. At least Init Level 1 is required to queue events, + * but will be scheduled add Init Level 2. + * + * returns: + * nothing + */ +void SkLocalEventQueue64( +SK_AC *pAC, /* Adapters context */ +SK_U32 Class, /* Event Class */ +SK_U32 Event, /* Event to be queued */ +SK_U64 Param, /* Event parameter */ +SK_BOOL Dispatcher) /* Dispatcher flag: + * TRUE == Call SkEventDispatcher + * FALSE == Don't execute SkEventDispatcher + */ +{ + SK_EVPARA EvPara; + EvPara.Para64 = Param; + + + if (Class == SKGE_PNMI) { + SkPnmiEvent( pAC, + pAC->IoBase, + Event, + EvPara); + } else { + SkEventQueue( pAC, + Class, + Event, + EvPara); + } - DEV_KFREE_SKB_ANY(pMsg); - break; - case SK_DRV_TIMER: - if (Param.Para32[0] == SK_DRV_MODERATION_TIMER) { - /* - ** expiration of the moderation timer implies that - ** dynamic moderation is to be applied - */ - SkDimStartModerationTimer(pAC); - SkDimModerate(pAC); - if (pAC->DynIrqModInfo.DisplayStats) { - SkDimDisplayModerationSettings(pAC); - } - } else if (Param.Para32[0] == SK_DRV_RX_CLEANUP_TIMER) { - /* - ** check if we need to check for descriptors which - ** haven't been handled the last millisecs - */ - StartDrvCleanupTimer(pAC); - if (pAC->GIni.GIMacsFound == 2) { - ReceiveIrq(pAC, &pAC->RxPort[1], SK_FALSE); - } - ReceiveIrq(pAC, &pAC->RxPort[0], SK_FALSE); - } else { - printk("Expiration of unknown timer\n"); - } - break; - default: - break; + /* Run the dispatcher */ + if (Dispatcher) { + SkEventDispatcher(pAC, pAC->IoBase); } - SK_DBG_MSG(NULL, SK_DBGMOD_DRV, SK_DBGCAT_DRV_EVENT, - ("END EVENT ")); - - return (0); -} /* SkDrvEvent */ + +} /***************************************************************************** @@ -4408,8 +5754,6 @@ } /* SkErrorLog */ -#ifdef SK_DIAG_SUPPORT - /***************************************************************************** * * SkDrvEnterDiagMode - handles DIAG attach request @@ -4424,8 +5768,11 @@ int SkDrvEnterDiagMode( SK_AC *pAc) /* pointer to adapter context */ { - DEV_NET *pNet = netdev_priv(pAc->dev[0]); - SK_AC *pAC = pNet->pAC; + SK_AC *pAC = NULL; + DEV_NET *pNet = NULL; + + pNet = (DEV_NET *) pAc->dev[0]->priv; + pAC = pNet->pAC; SK_MEMCPY(&(pAc->PnmiBackup), &(pAc->PnmiStruct), sizeof(SK_PNMI_STRUCT_DATA)); @@ -4440,8 +5787,9 @@ } else { pAC->WasIfUp[0] = SK_FALSE; } - if (pNet != netdev_priv(pAC->dev[1])) { - pNet = netdev_priv(pAC->dev[1]); + + if (pNet != (DEV_NET *) pAc->dev[1]->priv) { + pNet = (DEV_NET *) pAc->dev[1]->priv; if (netif_running(pAC->dev[1])) { pAC->WasIfUp[1] = SK_TRUE; pAC->DiagFlowCtrl = SK_TRUE; /* for SkGeClose */ @@ -4474,16 +5822,16 @@ sizeof(SK_PNMI_STRUCT_DATA)); pAc->DiagModeActive = DIAG_NOTACTIVE; pAc->Pnmi.DiagAttached = SK_DIAG_IDLE; - if (pAc->WasIfUp[0] == SK_TRUE) { - pAc->DiagFlowCtrl = SK_TRUE; /* for SkGeClose */ + if (pAc->WasIfUp[0] == SK_TRUE) { + pAc->DiagFlowCtrl = SK_TRUE; /* for SkGeClose */ DoPrintInterfaceChange = SK_FALSE; - SkDrvInitAdapter(pAc, 0); /* first device */ - } - if (pAc->WasIfUp[1] == SK_TRUE) { - pAc->DiagFlowCtrl = SK_TRUE; /* for SkGeClose */ + SkDrvInitAdapter(pAc, 0); /* first device */ + } + if (pAc->WasIfUp[1] == SK_TRUE) { + pAc->DiagFlowCtrl = SK_TRUE; /* for SkGeClose */ DoPrintInterfaceChange = SK_FALSE; - SkDrvInitAdapter(pAc, 1); /* second device */ - } + SkDrvInitAdapter(pAc, 1); /* second device */ + } return(0); } @@ -4563,11 +5911,20 @@ dev = pAC->dev[devNbr]; - /* On Linux 2.6 the network driver does NOT mess with reference - ** counts. The driver MUST be able to be unloaded at any time - ** due to the possibility of hotplug. + /* + ** Function SkGeClose() uses MOD_DEC_USE_COUNT (2.2/2.4) + ** or module_put() (2.6) to decrease the number of users for + ** a device, but if a device is to be put under control of + ** the DIAG, that count is OK already and does not need to + ** be adapted! Hence the opposite MOD_INC_USE_COUNT or + ** try_module_get() needs to be used again to correct that. */ + if (!try_module_get(THIS_MODULE)) { + return (-1); + } + if (SkGeClose(dev) != 0) { + module_put(THIS_MODULE); return (-1); } return (0); @@ -4596,6 +5953,17 @@ if (SkGeOpen(dev) != 0) { return (-1); + } else { + /* + ** Function SkGeOpen() uses MOD_INC_USE_COUNT (2.2/2.4) + ** or try_module_get() (2.6) to increase the number of + ** users for a device, but if a device was just under + ** control of the DIAG, that count is OK already and + ** does not need to be adapted! Hence the opposite + ** MOD_DEC_USE_COUNT or module_put() needs to be used + ** again to correct that. + */ + module_put(THIS_MODULE); } /* @@ -4608,14 +5976,25 @@ } /* SkDrvInitAdapter */ -#endif +static int __init sk98lin_init(void) +{ + return pci_module_init(&sk98lin_driver); +} + +static void __exit sk98lin_cleanup(void) +{ + pci_unregister_driver(&sk98lin_driver); +} + +module_init(sk98lin_init); +module_exit(sk98lin_cleanup); + #ifdef DEBUG /****************************************************************************/ /* "debug only" section *****************************************************/ /****************************************************************************/ - /***************************************************************************** * * DumpMsg - print a frame @@ -4626,9 +6005,11 @@ * Returns: N/A * */ -static void DumpMsg(struct sk_buff *skb, char *str) +static void DumpMsg( +struct sk_buff *skb, /* linux' socket buffer */ +char *str) /* additional msg string */ { - int msglen; + int msglen = (skb->len > 64) ? 64 : skb->len; if (skb == NULL) { printk("DumpMsg(): NULL-Message\n"); @@ -4640,19 +6021,14 @@ return; } - msglen = skb->len; - if (msglen > 64) - msglen = 64; - - printk("--- Begin of message from %s , len %d (from %d) ----\n", str, msglen, skb->len); - + printk("DumpMsg: PhysPage: %p\n", + page_address(virt_to_page(skb->data))); + printk("--- Begin of message from %s , len %d (from %d) ----\n", + str, msglen, skb->len); DumpData((char *)skb->data, msglen); - printk("------- End of message ---------\n"); } /* DumpMsg */ - - /***************************************************************************** * * DumpData - print a data area @@ -4664,23 +6040,22 @@ * Returns: N/A * */ -static void DumpData(char *p, int size) -{ -register int i; -int haddr, addr; -char hex_buffer[180]; -char asc_buffer[180]; -char HEXCHAR[] = "0123456789ABCDEF"; - - addr = 0; - haddr = 0; - hex_buffer[0] = 0; - asc_buffer[0] = 0; +static void DumpData( +char *p, /* pointer to area containing the data */ +int size) /* the size of that data area in bytes */ +{ + register int i; + int haddr = 0, addr = 0; + char hex_buffer[180] = { '\0' }; + char asc_buffer[180] = { '\0' }; + char HEXCHAR[] = "0123456789ABCDEF"; + for (i=0; i < size; ) { - if (*p >= '0' && *p <='z') + if (*p >= '0' && *p <='z') { asc_buffer[addr] = *p; - else + } else { asc_buffer[addr] = '.'; + } addr++; asc_buffer[addr] = 0; hex_buffer[haddr] = HEXCHAR[(*p & 0xf0) >> 4]; @@ -4706,27 +6081,24 @@ * DumpLong - print a data area as long values * * Description: - * This function prints a area of data to the system logfile/to the + * This function prints a long variable to the system logfile/to the * console. * * Returns: N/A * */ -static void DumpLong(char *pc, int size) -{ -register int i; -int haddr, addr; -char hex_buffer[180]; -char asc_buffer[180]; -char HEXCHAR[] = "0123456789ABCDEF"; -long *p; -int l; - - addr = 0; - haddr = 0; - hex_buffer[0] = 0; - asc_buffer[0] = 0; - p = (long*) pc; +static void DumpLong( +char *pc, /* location of the variable to print */ +int size) /* how large is the variable? */ +{ + register int i; + int haddr = 0, addr = 0; + char hex_buffer[180] = { '\0' }; + char asc_buffer[180] = { '\0' }; + char HEXCHAR[] = "0123456789ABCDEF"; + long *p = (long*) pc; + int l; + for (i=0; i < size; ) { l = (long) *p; hex_buffer[haddr] = HEXCHAR[(l >> 28) & 0xf]; @@ -4760,386 +6132,8 @@ #endif -static int __devinit skge_probe_one(struct pci_dev *pdev, - const struct pci_device_id *ent) -{ - SK_AC *pAC; - DEV_NET *pNet = NULL; - struct net_device *dev = NULL; - static int boards_found = 0; - int error = -ENODEV; - int using_dac = 0; - char DeviceStr[80]; - - if (pci_enable_device(pdev)) - goto out; - - /* Configure DMA attributes. */ - if (sizeof(dma_addr_t) > sizeof(u32) && - !(error = pci_set_dma_mask(pdev, DMA_64BIT_MASK))) { - using_dac = 1; - error = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK); - if (error < 0) { - printk(KERN_ERR "sk98lin %s unable to obtain 64 bit DMA " - "for consistent allocations\n", pci_name(pdev)); - goto out_disable_device; - } - } else { - error = pci_set_dma_mask(pdev, DMA_32BIT_MASK); - if (error) { - printk(KERN_ERR "sk98lin %s no usable DMA configuration\n", - pci_name(pdev)); - goto out_disable_device; - } - } - - error = -ENOMEM; - dev = alloc_etherdev(sizeof(DEV_NET)); - if (!dev) { - printk(KERN_ERR "sk98lin: unable to allocate etherdev " - "structure!\n"); - goto out_disable_device; - } - - pNet = netdev_priv(dev); - pNet->pAC = kzalloc(sizeof(SK_AC), GFP_KERNEL); - if (!pNet->pAC) { - printk(KERN_ERR "sk98lin: unable to allocate adapter " - "structure!\n"); - goto out_free_netdev; - } - - pAC = pNet->pAC; - pAC->PciDev = pdev; - - pAC->dev[0] = dev; - pAC->dev[1] = dev; - pAC->CheckQueue = SK_FALSE; - - dev->irq = pdev->irq; - - error = SkGeInitPCI(pAC); - if (error) { - printk(KERN_ERR "sk98lin: PCI setup failed: %i\n", error); - goto out_free_netdev; - } - - SET_MODULE_OWNER(dev); - dev->open = &SkGeOpen; - dev->stop = &SkGeClose; - dev->hard_start_xmit = &SkGeXmit; - dev->get_stats = &SkGeStats; - dev->set_multicast_list = &SkGeSetRxMode; - dev->set_mac_address = &SkGeSetMacAddr; - dev->do_ioctl = &SkGeIoctl; - dev->change_mtu = &SkGeChangeMtu; -#ifdef CONFIG_NET_POLL_CONTROLLER - dev->poll_controller = &SkGePollController; -#endif - SET_NETDEV_DEV(dev, &pdev->dev); - SET_ETHTOOL_OPS(dev, &SkGeEthtoolOps); - - /* Use only if yukon hardware */ - if (pAC->ChipsetType) { -#ifdef USE_SK_TX_CHECKSUM - dev->features |= NETIF_F_IP_CSUM; -#endif -#ifdef SK_ZEROCOPY - dev->features |= NETIF_F_SG; -#endif -#ifdef USE_SK_RX_CHECKSUM - pAC->RxPort[0].RxCsum = 1; -#endif - } - - if (using_dac) - dev->features |= NETIF_F_HIGHDMA; - - pAC->Index = boards_found++; - - error = SkGeBoardInit(dev, pAC); - if (error) - goto out_free_netdev; - - /* Read Adapter name from VPD */ - if (ProductStr(pAC, DeviceStr, sizeof(DeviceStr)) != 0) { - error = -EIO; - printk(KERN_ERR "sk98lin: Could not read VPD data.\n"); - goto out_free_resources; - } - - /* Register net device */ - error = register_netdev(dev); - if (error) { - printk(KERN_ERR "sk98lin: Could not register device.\n"); - goto out_free_resources; - } - - /* Print adapter specific string from vpd */ - printk("%s: %s\n", dev->name, DeviceStr); - - /* Print configuration settings */ - printk(" PrefPort:%c RlmtMode:%s\n", - 'A' + pAC->Rlmt.Net[0].Port[pAC->Rlmt.Net[0].PrefPort]->PortNumber, - (pAC->RlmtMode==0) ? "Check Link State" : - ((pAC->RlmtMode==1) ? "Check Link State" : - ((pAC->RlmtMode==3) ? "Check Local Port" : - ((pAC->RlmtMode==7) ? "Check Segmentation" : - ((pAC->RlmtMode==17) ? "Dual Check Link State" :"Error"))))); - - SkGeYellowLED(pAC, pAC->IoBase, 1); - - memcpy(&dev->dev_addr, &pAC->Addr.Net[0].CurrentMacAddress, 6); - memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len); - - pNet->PortNr = 0; - pNet->NetNr = 0; - - boards_found++; - - pci_set_drvdata(pdev, dev); - - /* More then one port found */ - if ((pAC->GIni.GIMacsFound == 2 ) && (pAC->RlmtNets == 2)) { - dev = alloc_etherdev(sizeof(DEV_NET)); - if (!dev) { - printk(KERN_ERR "sk98lin: unable to allocate etherdev " - "structure!\n"); - goto single_port; - } - - pNet = netdev_priv(dev); - pNet->PortNr = 1; - pNet->NetNr = 1; - pNet->pAC = pAC; - - dev->open = &SkGeOpen; - dev->stop = &SkGeClose; - dev->hard_start_xmit = &SkGeXmit; - dev->get_stats = &SkGeStats; - dev->set_multicast_list = &SkGeSetRxMode; - dev->set_mac_address = &SkGeSetMacAddr; - dev->do_ioctl = &SkGeIoctl; - dev->change_mtu = &SkGeChangeMtu; - SET_NETDEV_DEV(dev, &pdev->dev); - SET_ETHTOOL_OPS(dev, &SkGeEthtoolOps); - - if (pAC->ChipsetType) { -#ifdef USE_SK_TX_CHECKSUM - dev->features |= NETIF_F_IP_CSUM; -#endif -#ifdef SK_ZEROCOPY - dev->features |= NETIF_F_SG; -#endif -#ifdef USE_SK_RX_CHECKSUM - pAC->RxPort[1].RxCsum = 1; -#endif - } - - if (using_dac) - dev->features |= NETIF_F_HIGHDMA; - - error = register_netdev(dev); - if (error) { - printk(KERN_ERR "sk98lin: Could not register device" - " for second port. (%d)\n", error); - free_netdev(dev); - goto single_port; - } - - pAC->dev[1] = dev; - memcpy(&dev->dev_addr, - &pAC->Addr.Net[1].CurrentMacAddress, 6); - memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len); - - printk("%s: %s\n", dev->name, DeviceStr); - printk(" PrefPort:B RlmtMode:Dual Check Link State\n"); - } - -single_port: - - /* Save the hardware revision */ - pAC->HWRevision = (((pAC->GIni.GIPciHwRev >> 4) & 0x0F)*10) + - (pAC->GIni.GIPciHwRev & 0x0F); - - /* Set driver globals */ - pAC->Pnmi.pDriverFileName = DRIVER_FILE_NAME; - pAC->Pnmi.pDriverReleaseDate = DRIVER_REL_DATE; - - memset(&pAC->PnmiBackup, 0, sizeof(SK_PNMI_STRUCT_DATA)); - memcpy(&pAC->PnmiBackup, &pAC->PnmiStruct, sizeof(SK_PNMI_STRUCT_DATA)); - - return 0; - - out_free_resources: - FreeResources(dev); - out_free_netdev: - free_netdev(dev); - out_disable_device: - pci_disable_device(pdev); - out: - return error; -} - -static void __devexit skge_remove_one(struct pci_dev *pdev) -{ - struct net_device *dev = pci_get_drvdata(pdev); - DEV_NET *pNet = netdev_priv(dev); - SK_AC *pAC = pNet->pAC; - struct net_device *otherdev = pAC->dev[1]; - - unregister_netdev(dev); - - SkGeYellowLED(pAC, pAC->IoBase, 0); - - if (pAC->BoardLevel == SK_INIT_RUN) { - SK_EVPARA EvPara; - unsigned long Flags; - - /* board is still alive */ - spin_lock_irqsave(&pAC->SlowPathLock, Flags); - EvPara.Para32[0] = 0; - EvPara.Para32[1] = -1; - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara); - EvPara.Para32[0] = 1; - EvPara.Para32[1] = -1; - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STOP, EvPara); - SkEventDispatcher(pAC, pAC->IoBase); - /* disable interrupts */ - SK_OUT32(pAC->IoBase, B0_IMSK, 0); - SkGeDeInit(pAC, pAC->IoBase); - spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); - pAC->BoardLevel = SK_INIT_DATA; - /* We do NOT check here, if IRQ was pending, of course*/ - } - - if (pAC->BoardLevel == SK_INIT_IO) { - /* board is still alive */ - SkGeDeInit(pAC, pAC->IoBase); - pAC->BoardLevel = SK_INIT_DATA; - } - - FreeResources(dev); - free_netdev(dev); - if (otherdev != dev) - free_netdev(otherdev); - kfree(pAC); -} - -#ifdef CONFIG_PM -static int skge_suspend(struct pci_dev *pdev, pm_message_t state) -{ - struct net_device *dev = pci_get_drvdata(pdev); - DEV_NET *pNet = netdev_priv(dev); - SK_AC *pAC = pNet->pAC; - struct net_device *otherdev = pAC->dev[1]; - - if (netif_running(dev)) { - netif_carrier_off(dev); - DoPrintInterfaceChange = SK_FALSE; - SkDrvDeInitAdapter(pAC, 0); /* performs SkGeClose */ - netif_device_detach(dev); - } - if (otherdev != dev) { - if (netif_running(otherdev)) { - netif_carrier_off(otherdev); - DoPrintInterfaceChange = SK_FALSE; - SkDrvDeInitAdapter(pAC, 1); /* performs SkGeClose */ - netif_device_detach(otherdev); - } - } - - pci_save_state(pdev); - pci_enable_wake(pdev, pci_choose_state(pdev, state), 0); - if (pAC->AllocFlag & SK_ALLOC_IRQ) { - free_irq(dev->irq, dev); - } - pci_disable_device(pdev); - pci_set_power_state(pdev, pci_choose_state(pdev, state)); - - return 0; -} - -static int skge_resume(struct pci_dev *pdev) -{ - struct net_device *dev = pci_get_drvdata(pdev); - DEV_NET *pNet = netdev_priv(dev); - SK_AC *pAC = pNet->pAC; - struct net_device *otherdev = pAC->dev[1]; - int ret; - - pci_set_power_state(pdev, PCI_D0); - pci_restore_state(pdev); - pci_enable_device(pdev); - pci_set_master(pdev); - if (pAC->GIni.GIMacsFound == 2) - ret = request_irq(dev->irq, SkGeIsr, SA_SHIRQ, "sk98lin", dev); - else - ret = request_irq(dev->irq, SkGeIsrOnePort, SA_SHIRQ, "sk98lin", dev); - if (ret) { - printk(KERN_WARNING "sk98lin: unable to acquire IRQ %d\n", dev->irq); - pAC->AllocFlag &= ~SK_ALLOC_IRQ; - dev->irq = 0; - pci_disable_device(pdev); - return -EBUSY; - } - - netif_device_attach(dev); - if (netif_running(dev)) { - DoPrintInterfaceChange = SK_FALSE; - SkDrvInitAdapter(pAC, 0); /* first device */ - } - if (otherdev != dev) { - netif_device_attach(otherdev); - if (netif_running(otherdev)) { - DoPrintInterfaceChange = SK_FALSE; - SkDrvInitAdapter(pAC, 1); /* second device */ - } - } - - return 0; -} -#else -#define skge_suspend NULL -#define skge_resume NULL -#endif - -static struct pci_device_id skge_pci_tbl[] = { - { PCI_VENDOR_ID_3COM, 0x1700, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, - { PCI_VENDOR_ID_3COM, 0x80eb, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, - { PCI_VENDOR_ID_SYSKONNECT, 0x4300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, - { PCI_VENDOR_ID_SYSKONNECT, 0x4320, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, -/* DLink card does not have valid VPD so this driver gags - * { PCI_VENDOR_ID_DLINK, 0x4c00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, - */ - { PCI_VENDOR_ID_MARVELL, 0x4320, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, - { PCI_VENDOR_ID_MARVELL, 0x5005, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, - { PCI_VENDOR_ID_CNET, 0x434e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, - { PCI_VENDOR_ID_LINKSYS, 0x1032, PCI_ANY_ID, 0x0015, }, - { PCI_VENDOR_ID_LINKSYS, 0x1064, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, - { 0 } -}; - -MODULE_DEVICE_TABLE(pci, skge_pci_tbl); - -static struct pci_driver skge_driver = { - .name = "sk98lin", - .id_table = skge_pci_tbl, - .probe = skge_probe_one, - .remove = __devexit_p(skge_remove_one), - .suspend = skge_suspend, - .resume = skge_resume, -}; - -static int __init skge_init(void) -{ - return pci_module_init(&skge_driver); -} - -static void __exit skge_exit(void) -{ - pci_unregister_driver(&skge_driver); -} - -module_init(skge_init); -module_exit(skge_exit); +/******************************************************************************* + * + * End of file + * + ******************************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/Makefile +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/Makefile @@ -1,6 +1,59 @@ +#****************************************************************************** # -# Makefile for the SysKonnect SK-98xx device driver. +# Name: skge.c +# Project: GEnesis, PCI Gigabit Ethernet Adapter +# Version: $Revision: 1.9.2.1 $ +# Date: $Date: 2005/04/11 09:01:18 $ +# Purpose: The main driver source module # +#****************************************************************************** + +#****************************************************************************** +# +# (C)Copyright 1998-2002 SysKonnect GmbH. +# (C)Copyright 2002-2005 Marvell. +# +# Makefile for Marvell Yukon chipset and SysKonnect Gigabit Ethernet +# Server Adapter driver. (Kernel 2.6) +# +# Author: Mirko Lindner (mlindner@syskonnect.de) +# Ralph Roesler (rroesler@syskonnect.de) +# +# Address all question to: linux@syskonnect.de +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# The information in this file is provided "AS IS" without warranty. +# +#****************************************************************************** + +#****************************************************************************** +# +# History: +# +# $Log: Makefile2.6,v $ +# Revision 1.9.2.1 2005/04/11 09:01:18 mlindner +# Fix: Copyright year changed +# +# Revision 1.9 2004/07/13 15:54:50 rroesler +# Add: file skethtool.c +# Fix: corrected header regarding copyright +# Fix: minor typos corrected +# +# Revision 1.8 2004/06/08 08:39:38 mlindner +# Fix: Add CONFIG_SK98LIN_ZEROCOPY as default +# +# Revision 1.7 2004/06/03 16:06:56 mlindner +# Fix: Added compile flag SK_DIAG_SUPPORT +# +# Revision 1.6 2004/06/02 08:02:59 mlindner +# Add: Changed header information and inserted a GPL statement +# +# +#****************************************************************************** # @@ -13,20 +66,24 @@ obj-$(CONFIG_SK98LIN) += sk98lin.o sk98lin-objs := \ skge.o \ + sky2.o \ skethtool.o \ + sky2le.o \ skdim.o \ skaddr.o \ skgehwt.o \ skgeinit.o \ skgepnmi.o \ skgesirq.o \ - ski2c.o \ + sktwsi.o \ sklm80.o \ skqueue.o \ skrlmt.o \ sktimer.o \ skvpd.o \ - skxmac2.o + skxmac2.o \ + skproc.o \ + skcsum.o # DBGDEF = \ # -DDEBUG @@ -75,13 +132,11 @@ # SK_DBGCAT_DRV_INT_SRC 0x04000000 interrupts sources # SK_DBGCAT_DRV_EVENT 0x08000000 driver events -EXTRA_CFLAGS += -Idrivers/net/sk98lin -DSK_DIAG_SUPPORT -DGENESIS -DYUKON $(DBGDEF) $(SKPARAM) +EXTRA_CFLAGS += -Idrivers/net/sk98lin -DSK_USE_CSUM -DSK_DIAG_SUPPORT \ + -DGENESIS -DYUKON -DYUK2 -DCONFIG_SK98LIN_ZEROCOPY \ + $(DBGDEF) $(SKPARAM) clean: rm -f core *.o *.a *.s - - - - --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skrlmt.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skrlmt.c @@ -2,8 +2,8 @@ * * Name: skrlmt.c * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.69 $ - * Date: $Date: 2003/04/15 09:39:22 $ + * Version: $Revision: 2.3 $ + * Date: $Date: 2005/05/04 09:47:53 $ * Purpose: Manage links on SK-NET Adapters, esp. redundant ones. * ******************************************************************************/ @@ -39,7 +39,7 @@ #ifndef lint static const char SysKonnectFileId[] = - "@(#) $Id: skrlmt.c,v 1.69 2003/04/15 09:39:22 tschilli Exp $ (C) Marvell."; + "@(#) $Id: skrlmt.c,v 2.3 2005/05/04 09:47:53 tschilli Exp $ (C) Marvell."; #endif /* !defined(lint) */ #define __SKRLMT_C @@ -350,7 +350,7 @@ SK_BOOL PhysicalAMacAddressSet; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_INIT, - ("RLMT Init level %d.\n", Level)) + ("RLMT Init level %d.\n", Level)); switch (Level) { case SK_INIT_DATA: /* Initialize data structures. */ @@ -390,7 +390,7 @@ case SK_INIT_IO: /* GIMacsFound first available here. */ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_INIT, - ("RLMT: %d MACs were detected.\n", pAC->GIni.GIMacsFound)) + ("RLMT: %d MACs were detected.\n", pAC->GIni.GIMacsFound)); pAC->Rlmt.Net[0].NumPorts = pAC->GIni.GIMacsFound; @@ -512,7 +512,7 @@ } SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SkRlmtBuildCheckChain.\n")) + ("SkRlmtBuildCheckChain.\n")); NumMacsUp = 0; @@ -558,7 +558,7 @@ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, ("Port %d checks %d other ports: %2X.\n", i, pAC->Rlmt.Net[NetIdx].Port[i]->PortsChecked, - pAC->Rlmt.Net[NetIdx].Port[i]->PortCheck[0].CheckAddr.a[5])) + pAC->Rlmt.Net[NetIdx].Port[i]->PortCheck[0].CheckAddr.a[5])); } #endif /* DEBUG */ @@ -604,7 +604,7 @@ if ((CheckSrc == 0) || (CheckDest == 0)) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_ERR, ("SkRlmtBuildPacket: Invalid %s%saddr.\n", - (CheckSrc == 0 ? "Src" : ""), (CheckDest == 0 ? "Dest" : ""))) + (CheckSrc == 0 ? "Src" : ""), (CheckDest == 0 ? "Dest" : ""))); } #endif @@ -796,7 +796,7 @@ SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_TX, - ("SkRlmtSend: BPDU Packet on Port %u.\n", PortNumber)) + ("SkRlmtSend: BPDU Packet on Port %u.\n", PortNumber)); } } return; @@ -835,7 +835,7 @@ * Bring it up. */ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX, - ("SkRlmtPacketReceive: Received on PortDown.\n")) + ("SkRlmtPacketReceive: Received on PortDown.\n")); pRPort->PortState = SK_RLMT_PS_GOING_UP; pRPort->GuTimeStamp = SkOsGetTime(pAC); @@ -849,7 +849,7 @@ } /* PortDown && !SuspectTx */ else if (pRPort->CheckingState & SK_RLMT_PCS_RX) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX, - ("SkRlmtPacketReceive: Stop bringing port down.\n")) + ("SkRlmtPacketReceive: Stop bringing port down.\n")); SkTimerStop(pAC, IoC, &pRPort->DownRxTimer); pRPort->CheckingState &= ~SK_RLMT_PCS_RX; /* pAC->Rlmt.CheckSwitch = SK_TRUE; */ @@ -896,7 +896,7 @@ pRPort = &pAC->Rlmt.Port[PortNumber]; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX, - ("SkRlmtPacketReceive: PortNumber == %d.\n", PortNumber)) + ("SkRlmtPacketReceive: PortNumber == %d.\n", PortNumber)); pRPacket = (SK_RLMT_PACKET*)pMb->pData; pSPacket = (SK_SPTREE_PACKET*)pRPacket; @@ -917,7 +917,7 @@ /* Not sent to current MAC or registered MC address => Trash it. */ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX, - ("SkRlmtPacketReceive: Not for me.\n")) + ("SkRlmtPacketReceive: Not for me.\n")); SkDrvFreeRlmtMbuf(pAC, IoC, pMb); return; @@ -955,7 +955,7 @@ pRPacket->Indicator[5] == SK_RLMT_INDICATOR5 && pRPacket->Indicator[6] == SK_RLMT_INDICATOR6) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX, - ("SkRlmtPacketReceive: Duplicate MAC Address.\n")) + ("SkRlmtPacketReceive: Duplicate MAC Address.\n")); /* Error Log entry. */ SK_ERR_LOG(pAC, SK_ERRCL_COMM, SKERR_RLMT_E006, SKERR_RLMT_E006_MSG); @@ -963,7 +963,7 @@ else { /* Simply trash it. */ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX, - ("SkRlmtPacketReceive: Sent by me.\n")) + ("SkRlmtPacketReceive: Sent by me.\n")); } SkDrvFreeRlmtMbuf(pAC, IoC, pMb); @@ -1007,7 +1007,7 @@ #endif /* 0 */ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX, - ("SkRlmtPacketReceive: Announce.\n")) + ("SkRlmtPacketReceive: Announce.\n")); SkDrvFreeRlmtMbuf(pAC, IoC, pMb); break; @@ -1015,7 +1015,7 @@ case SK_PACKET_ALIVE: if (pRPacket->SSap & LLC_COMMAND_RESPONSE_BIT) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX, - ("SkRlmtPacketReceive: Alive Reply.\n")) + ("SkRlmtPacketReceive: Alive Reply.\n")); if (!(pAC->Addr.Port[PortNumber].PromMode & SK_PROM_MODE_LLC) || SK_ADDR_EQUAL( @@ -1046,7 +1046,7 @@ } else { /* Alive Request Packet. */ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX, - ("SkRlmtPacketReceive: Alive Request.\n")) + ("SkRlmtPacketReceive: Alive Request.\n")); pRPort->RxHelloCts++; @@ -1065,7 +1065,7 @@ case SK_PACKET_CHECK_TX: SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX, - ("SkRlmtPacketReceive: Check your tx line.\n")) + ("SkRlmtPacketReceive: Check your tx line.\n")); /* A port checking us requests us to check our tx line. */ pRPort->CheckingState |= SK_RLMT_PCS_TX; @@ -1088,7 +1088,7 @@ case SK_PACKET_ADDR_CHANGED: SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX, - ("SkRlmtPacketReceive: Address Change.\n")) + ("SkRlmtPacketReceive: Address Change.\n")); /* Build the check chain. */ SkRlmtBuildCheckChain(pAC, pRPort->Net->NetNumber); @@ -1097,7 +1097,7 @@ default: SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX, - ("SkRlmtPacketReceive: Unknown RLMT packet.\n")) + ("SkRlmtPacketReceive: Unknown RLMT packet.\n")); /* RA;:;: ??? */ SkDrvFreeRlmtMbuf(pAC, IoC, pMb); @@ -1107,7 +1107,7 @@ pSPacket->Ctrl == SK_RLMT_SPT_CTRL && (pSPacket->SSap & ~LLC_COMMAND_RESPONSE_BIT) == SK_RLMT_SPT_SSAP) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX, - ("SkRlmtPacketReceive: BPDU Packet.\n")) + ("SkRlmtPacketReceive: BPDU Packet.\n")); /* Spanning Tree packet. */ pRPort->RxSpHelloCts++; @@ -1139,7 +1139,7 @@ pRPort->Root.Id[0], pRPort->Root.Id[1], pRPort->Root.Id[2], pRPort->Root.Id[3], pRPort->Root.Id[4], pRPort->Root.Id[5], - pRPort->Root.Id[6], pRPort->Root.Id[7])) + pRPort->Root.Id[6], pRPort->Root.Id[7])); } SkDrvFreeRlmtMbuf(pAC, IoC, pMb); @@ -1150,7 +1150,7 @@ } else { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_RX, - ("SkRlmtPacketReceive: Unknown Packet Type.\n")) + ("SkRlmtPacketReceive: Unknown Packet Type.\n")); /* Unknown packet. */ SkDrvFreeRlmtMbuf(pAC, IoC, pMb); @@ -1232,7 +1232,7 @@ if ((pRPort->PacketsPerTimeSlot - pRPort->BpduPacketsPerTimeSlot) == 0) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, ("SkRlmtCheckPort %d: No (%d) receives in last time slot.\n", - PortNumber, pRPort->PacketsPerTimeSlot)) + PortNumber, pRPort->PacketsPerTimeSlot)); /* * Check segmentation if there was no receive at least twice @@ -1249,7 +1249,7 @@ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, ("SkRlmtCheckPort: PortsSuspect %d, PcsRx %d.\n", - pRPort->PortsSuspect, pRPort->CheckingState & SK_RLMT_PCS_RX)) + pRPort->PortsSuspect, pRPort->CheckingState & SK_RLMT_PCS_RX)); if (pRPort->PortState != SK_RLMT_PS_DOWN) { NewTimeout = TO_SHORTEN(pAC->Rlmt.Port[PortNumber].Net->TimeoutValue); @@ -1295,7 +1295,7 @@ ("SkRlmtCheckPort %d: %d (%d) receives in last time slot.\n", PortNumber, pRPort->PacketsPerTimeSlot - pRPort->BpduPacketsPerTimeSlot, - pRPort->PacketsPerTimeSlot)) + pRPort->PacketsPerTimeSlot)); SkRlmtPortReceives(pAC, IoC, PortNumber); if (pAC->Rlmt.CheckSwitch) { @@ -1345,7 +1345,7 @@ i, pAC->Rlmt.Port[i].PortDown, pAC->Rlmt.Port[i].PortNoRx, *((SK_U32*)(&pAC->Rlmt.Port[i].BcTimeStamp) + OFFS_HI32), - *((SK_U32*)(&pAC->Rlmt.Port[i].BcTimeStamp) + OFFS_LO32))) + *((SK_U32*)(&pAC->Rlmt.Port[i].BcTimeStamp) + OFFS_LO32))); if (!pAC->Rlmt.Port[i].PortDown && !pAC->Rlmt.Port[i].PortNoRx) { if (!PortFound || pAC->Rlmt.Port[i].BcTimeStamp > BcTimeStamp) { @@ -1358,7 +1358,7 @@ if (PortFound) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Port %d received the last broadcast.\n", *pSelect)) + ("Port %d received the last broadcast.\n", *pSelect)); /* Look if another port's time stamp is similar. */ for (i = 0; i < (SK_U32)pAC->GIni.GIMacsFound; i++) { @@ -1373,7 +1373,7 @@ PortFound = SK_FALSE; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Port %d received a broadcast at a similar time.\n", i)) + ("Port %d received a broadcast at a similar time.\n", i)); break; } } @@ -1385,7 +1385,7 @@ ("SK_RLMT_SELECT_BCRX found Port %d receiving the substantially " "latest broadcast (%u).\n", *pSelect, - BcTimeStamp - pAC->Rlmt.Port[1 - *pSelect].BcTimeStamp)) + BcTimeStamp - pAC->Rlmt.Port[1 - *pSelect].BcTimeStamp)); } #endif /* DEBUG */ @@ -1434,7 +1434,7 @@ PortFound = SK_TRUE; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, ("SK_RLMT_SELECT_NOTSUSPECT found Port %d up and not check RX.\n", - *pSelect)) + *pSelect)); break; } } @@ -1483,7 +1483,7 @@ } PortFound = SK_TRUE; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_SELECT_UP found Port %d up.\n", *pSelect)) + ("SK_RLMT_SELECT_UP found Port %d up.\n", *pSelect)); break; } } @@ -1544,7 +1544,7 @@ } SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_SELECT_GOINGUP found Port %d going up.\n", *pSelect)) + ("SK_RLMT_SELECT_GOINGUP found Port %d going up.\n", *pSelect)); return (SK_TRUE); } /* SkRlmtSelectGoingUp */ @@ -1590,7 +1590,7 @@ } PortFound = SK_TRUE; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_SELECT_DOWN found Port %d down.\n", *pSelect)) + ("SK_RLMT_SELECT_DOWN found Port %d down.\n", *pSelect)); break; } } @@ -1680,16 +1680,19 @@ Para.Para32[1] = NetIdx; SkEventQueue(pAC, SKGE_DRV, SK_DRV_NET_UP, Para); - if ((pAC->Rlmt.Net[NetIdx].RlmtMode & SK_RLMT_TRANSPARENT) == 0 && - (Para.pParaPtr = SkRlmtBuildPacket(pAC, IoC, - pAC->Rlmt.Net[NetIdx].Port[i]->PortNumber, - SK_PACKET_ANNOUNCE, &pAC->Addr.Net[NetIdx]. - CurrentMacAddress, &SkRlmtMcAddr)) != NULL) { - /* - * Send announce packet to RLMT multicast address to force - * switches to learn the new location of the logical MAC address. - */ - SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para); + if (pAC->Rlmt.NumNets == 1) { + if ((pAC->Rlmt.Net[NetIdx].RlmtMode & SK_RLMT_TRANSPARENT) == 0 && + (Para.pParaPtr = SkRlmtBuildPacket(pAC, IoC, + pAC->Rlmt.Net[NetIdx].Port[i]->PortNumber, + SK_PACKET_ANNOUNCE, &pAC->Addr.Net[NetIdx]. + CurrentMacAddress, &SkRlmtMcAddr)) != NULL) { + + /* + * Send announce packet to RLMT multicast address to force + * switches to learn the new location of the logical MAC address. + */ + SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para); + } } } else { @@ -1788,7 +1791,7 @@ if (Para.Para32[1] != Active) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Active: %d, Para1: %d.\n", Active, Para.Para32[1])) + ("Active: %d, Para1: %d.\n", Active, Para.Para32[1])); pAC->Rlmt.Net[NetIdx].ActivePort = Para.Para32[1]; Para.Para32[0] = pAC->Rlmt.Net[NetIdx]. Port[Para.Para32[0]]->PortNumber; @@ -1868,7 +1871,7 @@ pNet->Port[i]->Root.Id[0], pNet->Port[i]->Root.Id[1], pNet->Port[i]->Root.Id[2], pNet->Port[i]->Root.Id[3], pNet->Port[i]->Root.Id[4], pNet->Port[i]->Root.Id[5], - pNet->Port[i]->Root.Id[6], pNet->Port[i]->Root.Id[7])) + pNet->Port[i]->Root.Id[6], pNet->Port[i]->Root.Id[7])); if (!pNet->RootIdSet) { pNet->Root = pNet->Port[i]->Root; @@ -1963,13 +1966,13 @@ SK_U32 i; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PORTSTART_TIMEOUT Port %d Event BEGIN.\n", Para.Para32[0])) + ("SK_RLMT_PORTSTART_TIMEOUT Port %d Event BEGIN.\n", Para.Para32[0])); if (Para.Para32[1] != (SK_U32)-1) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad Parameter.\n")) + ("Bad Parameter.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PORTSTART_TIMEOUT Event EMPTY.\n")) + ("SK_RLMT_PORTSTART_TIMEOUT Event EMPTY.\n")); return; } @@ -1990,7 +1993,7 @@ } SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PORTSTART_TIMEOUT Event END.\n")) + ("SK_RLMT_PORTSTART_TIMEOUT Event END.\n")); } /* SkRlmtEvtPortStartTim */ @@ -2018,21 +2021,21 @@ SK_EVPARA Para2; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_LINK_UP Port %d Event BEGIN.\n", Para.Para32[0])) + ("SK_RLMT_LINK_UP Port %d Event BEGIN.\n", Para.Para32[0])); pRPort = &pAC->Rlmt.Port[Para.Para32[0]]; if (!pRPort->PortStarted) { SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E008, SKERR_RLMT_E008_MSG); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_LINK_UP Event EMPTY.\n")) + ("SK_RLMT_LINK_UP Event EMPTY.\n")); return; } if (!pRPort->LinkDown) { /* RA;:;: Any better solution? */ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_LINK_UP Event EMPTY.\n")) + ("SK_RLMT_LINK_UP Event EMPTY.\n")); return; } @@ -2082,16 +2085,19 @@ Para2.Para32[1] = (SK_U32)-1; SkTimerStart(pAC, IoC, &pRPort->UpTimer, SK_RLMT_PORTUP_TIM_VAL, SKGE_RLMT, SK_RLMT_PORTUP_TIM, Para2); - + /* Later: if (pAC->Rlmt.RlmtMode & SK_RLMT_CHECK_LOC_LINK) && */ - if ((pRPort->Net->RlmtMode & SK_RLMT_TRANSPARENT) == 0 && - (pRPort->Net->RlmtMode & SK_RLMT_CHECK_LINK) != 0 && - (Para2.pParaPtr = - SkRlmtBuildPacket(pAC, IoC, Para.Para32[0], SK_PACKET_ANNOUNCE, - &pAC->Addr.Port[Para.Para32[0]].CurrentMacAddress, &SkRlmtMcAddr) - ) != NULL) { - /* Send "new" packet to RLMT multicast address. */ - SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para2); + if (pAC->Rlmt.NumNets == 1) { + if ((pRPort->Net->RlmtMode & SK_RLMT_TRANSPARENT) == 0 && + (pRPort->Net->RlmtMode & SK_RLMT_CHECK_LINK) != 0 && + (Para2.pParaPtr = + SkRlmtBuildPacket(pAC, IoC, Para.Para32[0], SK_PACKET_ANNOUNCE, + &pAC->Addr.Port[Para.Para32[0]].CurrentMacAddress, &SkRlmtMcAddr) + ) != NULL) { + + /* Send "new" packet to RLMT multicast address. */ + SkEventQueue(pAC, SKGE_DRV, SK_DRV_RLMT_SEND, Para2); + } } if (pRPort->Net->RlmtMode & SK_RLMT_CHECK_SEG) { @@ -2110,7 +2116,7 @@ } SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_LINK_UP Event END.\n")) + ("SK_RLMT_LINK_UP Event END.\n")); } /* SkRlmtEvtLinkUp */ @@ -2136,20 +2142,20 @@ SK_RLMT_PORT *pRPort; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PORTUP_TIM Port %d Event BEGIN.\n", Para.Para32[0])) + ("SK_RLMT_PORTUP_TIM Port %d Event BEGIN.\n", Para.Para32[0])); if (Para.Para32[1] != (SK_U32)-1) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad Parameter.\n")) + ("Bad Parameter.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PORTUP_TIM Event EMPTY.\n")) + ("SK_RLMT_PORTUP_TIM Event EMPTY.\n")); return; } pRPort = &pAC->Rlmt.Port[Para.Para32[0]]; if (pRPort->LinkDown || (pRPort->PortState == SK_RLMT_PS_UP)) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PORTUP_TIM Port %d Event EMPTY.\n", Para.Para32[0])) + ("SK_RLMT_PORTUP_TIM Port %d Event EMPTY.\n", Para.Para32[0])); return; } @@ -2164,7 +2170,7 @@ } SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PORTUP_TIM Event END.\n")) + ("SK_RLMT_PORTUP_TIM Event END.\n")); } /* SkRlmtEvtPortUpTim */ @@ -2192,13 +2198,13 @@ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, ("SK_RLMT_PORTDOWN* Port %d Event (%d) BEGIN.\n", - Para.Para32[0], Event)) + Para.Para32[0], Event)); if (Para.Para32[1] != (SK_U32)-1) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad Parameter.\n")) + ("Bad Parameter.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PORTDOWN* Event EMPTY.\n")) + ("SK_RLMT_PORTDOWN* Event EMPTY.\n")); return; } @@ -2206,7 +2212,7 @@ if (!pRPort->PortStarted || (Event == SK_RLMT_PORTDOWN_TX_TIM && !(pRPort->CheckingState & SK_RLMT_PCS_TX))) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PORTDOWN* Event (%d) EMPTY.\n", Event)) + ("SK_RLMT_PORTDOWN* Event (%d) EMPTY.\n", Event)); return; } @@ -2243,7 +2249,7 @@ } SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PORTDOWN* Event (%d) END.\n", Event)) + ("SK_RLMT_PORTDOWN* Event (%d) END.\n", Event)); } /* SkRlmtEvtPortDownX */ @@ -2270,7 +2276,7 @@ pRPort = &pAC->Rlmt.Port[Para.Para32[0]]; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_LINK_DOWN Port %d Event BEGIN.\n", Para.Para32[0])) + ("SK_RLMT_LINK_DOWN Port %d Event BEGIN.\n", Para.Para32[0])); if (!pAC->Rlmt.Port[Para.Para32[0]].LinkDown) { pRPort->Net->LinksUp--; @@ -2289,7 +2295,7 @@ } SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_LINK_DOWN Event END.\n")) + ("SK_RLMT_LINK_DOWN Event END.\n")); } /* SkRlmtEvtLinkDown */ @@ -2318,13 +2324,13 @@ SK_MAC_ADDR *pNewMacAddr; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PORT_ADDR Port %d Event BEGIN.\n", Para.Para32[0])) + ("SK_RLMT_PORT_ADDR Port %d Event BEGIN.\n", Para.Para32[0])); if (Para.Para32[1] != (SK_U32)-1) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad Parameter.\n")) + ("Bad Parameter.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PORT_ADDR Event EMPTY.\n")) + ("SK_RLMT_PORT_ADDR Event EMPTY.\n")); return; } @@ -2348,7 +2354,7 @@ } SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PORT_ADDR Event END.\n")) + ("SK_RLMT_PORT_ADDR Event END.\n")); } /* SkRlmtEvtPortAddr */ @@ -2376,35 +2382,35 @@ SK_U32 PortNumber; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_START Net %d Event BEGIN.\n", Para.Para32[0])) + ("SK_RLMT_START Net %d Event BEGIN.\n", Para.Para32[0])); if (Para.Para32[1] != (SK_U32)-1) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad Parameter.\n")) + ("Bad Parameter.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_START Event EMPTY.\n")) + ("SK_RLMT_START Event EMPTY.\n")); return; } if (Para.Para32[0] >= pAC->Rlmt.NumNets) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad NetNumber %d.\n", Para.Para32[0])) + ("Bad NetNumber %d.\n", Para.Para32[0])); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_START Event EMPTY.\n")) + ("SK_RLMT_START Event EMPTY.\n")); return; } if (pAC->Rlmt.Net[Para.Para32[0]].RlmtState != SK_RLMT_RS_INIT) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_START Event EMPTY.\n")) + ("SK_RLMT_START Event EMPTY.\n")); return; } if (pAC->Rlmt.NetsStarted >= pAC->Rlmt.NumNets) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("All nets should have been started.\n")) + ("All nets should have been started.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_START Event EMPTY.\n")) + ("SK_RLMT_START Event EMPTY.\n")); return; } @@ -2438,7 +2444,7 @@ pAC->Rlmt.NetsStarted++; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_START Event END.\n")) + ("SK_RLMT_START Event END.\n")); } /* SkRlmtEvtStart */ @@ -2466,35 +2472,35 @@ SK_U32 i; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_STOP Net %d Event BEGIN.\n", Para.Para32[0])) + ("SK_RLMT_STOP Net %d Event BEGIN.\n", Para.Para32[0])); if (Para.Para32[1] != (SK_U32)-1) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad Parameter.\n")) + ("Bad Parameter.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_STOP Event EMPTY.\n")) + ("SK_RLMT_STOP Event EMPTY.\n")); return; } if (Para.Para32[0] >= pAC->Rlmt.NumNets) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad NetNumber %d.\n", Para.Para32[0])) + ("Bad NetNumber %d.\n", Para.Para32[0])); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_STOP Event EMPTY.\n")) + ("SK_RLMT_STOP Event EMPTY.\n")); return; } if (pAC->Rlmt.Net[Para.Para32[0]].RlmtState == SK_RLMT_RS_INIT) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_STOP Event EMPTY.\n")) + ("SK_RLMT_STOP Event EMPTY.\n")); return; } if (pAC->Rlmt.NetsStarted == 0) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("All nets are stopped.\n")) + ("All nets are stopped.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_STOP Event EMPTY.\n")) + ("SK_RLMT_STOP Event EMPTY.\n")); return; } @@ -2529,7 +2535,7 @@ pAC->Rlmt.NetsStarted--; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_STOP Event END.\n")) + ("SK_RLMT_STOP Event END.\n")); } /* SkRlmtEvtStop */ @@ -2559,13 +2565,13 @@ SK_U32 i; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_TIM Event BEGIN.\n")) + ("SK_RLMT_TIM Event BEGIN.\n")); if (Para.Para32[1] != (SK_U32)-1) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad Parameter.\n")) + ("Bad Parameter.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_TIM Event EMPTY.\n")) + ("SK_RLMT_TIM Event EMPTY.\n")); return; } @@ -2637,7 +2643,7 @@ } SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_TIM Event END.\n")) + ("SK_RLMT_TIM Event END.\n")); } /* SkRlmtEvtTim */ @@ -2665,13 +2671,13 @@ #endif /* DEBUG */ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_SEG_TIM Event BEGIN.\n")) + ("SK_RLMT_SEG_TIM Event BEGIN.\n")); if (Para.Para32[1] != (SK_U32)-1) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad Parameter.\n")) + ("Bad Parameter.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_SEG_TIM Event EMPTY.\n")) + ("SK_RLMT_SEG_TIM Event EMPTY.\n")); return; } @@ -2695,7 +2701,7 @@ InAddr8[3], InAddr8[4], InAddr8[5], pAPort->Exact[k].a[0], pAPort->Exact[k].a[1], pAPort->Exact[k].a[2], pAPort->Exact[k].a[3], - pAPort->Exact[k].a[4], pAPort->Exact[k].a[5])) + pAPort->Exact[k].a[4], pAPort->Exact[k].a[5])); } } #endif /* xDEBUG */ @@ -2703,7 +2709,7 @@ SkRlmtCheckSeg(pAC, IoC, Para.Para32[0]); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_SEG_TIM Event END.\n")) + ("SK_RLMT_SEG_TIM Event END.\n")); } /* SkRlmtEvtSegTim */ @@ -2732,18 +2738,18 @@ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PACKET_RECEIVED Event BEGIN.\n")) + ("SK_RLMT_PACKET_RECEIVED Event BEGIN.\n")); /* Should we ignore frames during port switching? */ #ifdef DEBUG pMb = Para.pParaPtr; if (pMb == NULL) { - SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, ("No mbuf.\n")) + SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, ("No mbuf.\n")); } else if (pMb->pNext != NULL) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("More than one mbuf or pMb->pNext not set.\n")) + ("More than one mbuf or pMb->pNext not set.\n")); } #endif /* DEBUG */ @@ -2761,7 +2767,7 @@ } SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PACKET_RECEIVED Event END.\n")) + ("SK_RLMT_PACKET_RECEIVED Event END.\n")); } /* SkRlmtEvtPacketRx */ @@ -2788,21 +2794,21 @@ SK_RLMT_PORT *pRPort; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_STATS_CLEAR Event BEGIN.\n")) + ("SK_RLMT_STATS_CLEAR Event BEGIN.\n")); if (Para.Para32[1] != (SK_U32)-1) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad Parameter.\n")) + ("Bad Parameter.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_STATS_CLEAR Event EMPTY.\n")) + ("SK_RLMT_STATS_CLEAR Event EMPTY.\n")); return; } if (Para.Para32[0] >= pAC->Rlmt.NumNets) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad NetNumber %d.\n", Para.Para32[0])) + ("Bad NetNumber %d.\n", Para.Para32[0])); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_STATS_CLEAR Event EMPTY.\n")) + ("SK_RLMT_STATS_CLEAR Event EMPTY.\n")); return; } @@ -2817,7 +2823,7 @@ } SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_STATS_CLEAR Event END.\n")) + ("SK_RLMT_STATS_CLEAR Event END.\n")); } /* SkRlmtEvtStatsClear */ @@ -2841,28 +2847,28 @@ SK_EVPARA Para) /* SK_U32 NetNumber; SK_U32 -1 */ { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_STATS_UPDATE Event BEGIN.\n")) + ("SK_RLMT_STATS_UPDATE Event BEGIN.\n")); if (Para.Para32[1] != (SK_U32)-1) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad Parameter.\n")) + ("Bad Parameter.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_STATS_UPDATE Event EMPTY.\n")) + ("SK_RLMT_STATS_UPDATE Event EMPTY.\n")); return; } if (Para.Para32[0] >= pAC->Rlmt.NumNets) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad NetNumber %d.\n", Para.Para32[0])) + ("Bad NetNumber %d.\n", Para.Para32[0])); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_STATS_UPDATE Event EMPTY.\n")) + ("SK_RLMT_STATS_UPDATE Event EMPTY.\n")); return; } /* Update statistics - currently always up-to-date. */ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_STATS_UPDATE Event END.\n")) + ("SK_RLMT_STATS_UPDATE Event END.\n")); } /* SkRlmtEvtStatsUpdate */ @@ -2886,13 +2892,13 @@ SK_EVPARA Para) /* SK_U32 PortIndex; SK_U32 NetNumber */ { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PREFPORT_CHANGE to Port %d Event BEGIN.\n", Para.Para32[0])) + ("SK_RLMT_PREFPORT_CHANGE to Port %d Event BEGIN.\n", Para.Para32[0])); if (Para.Para32[1] >= pAC->Rlmt.NumNets) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad NetNumber %d.\n", Para.Para32[1])) + ("Bad NetNumber %d.\n", Para.Para32[1])); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PREFPORT_CHANGE Event EMPTY.\n")) + ("SK_RLMT_PREFPORT_CHANGE Event EMPTY.\n")); return; } @@ -2905,7 +2911,7 @@ SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E010, SKERR_RLMT_E010_MSG); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PREFPORT_CHANGE Event EMPTY.\n")) + ("SK_RLMT_PREFPORT_CHANGE Event EMPTY.\n")); return; } @@ -2919,7 +2925,7 @@ } SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_PREFPORT_CHANGE Event END.\n")) + ("SK_RLMT_PREFPORT_CHANGE Event END.\n")); } /* SkRlmtEvtPrefportChange */ @@ -2945,37 +2951,37 @@ int i; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_SET_NETS Event BEGIN.\n")) + ("SK_RLMT_SET_NETS Event BEGIN.\n")); if (Para.Para32[1] != (SK_U32)-1) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad Parameter.\n")) + ("Bad Parameter.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_SET_NETS Event EMPTY.\n")) + ("SK_RLMT_SET_NETS Event EMPTY.\n")); return; } if (Para.Para32[0] == 0 || Para.Para32[0] > SK_MAX_NETS || Para.Para32[0] > (SK_U32)pAC->GIni.GIMacsFound) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad number of nets: %d.\n", Para.Para32[0])) + ("Bad number of nets: %d.\n", Para.Para32[0])); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_SET_NETS Event EMPTY.\n")) + ("SK_RLMT_SET_NETS Event EMPTY.\n")); return; } if (Para.Para32[0] == pAC->Rlmt.NumNets) { /* No change. */ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_SET_NETS Event EMPTY.\n")) + ("SK_RLMT_SET_NETS Event EMPTY.\n")); return; } /* Entering and leaving dual mode only allowed while nets are stopped. */ if (pAC->Rlmt.NetsStarted > 0) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Changing dual mode only allowed while all nets are stopped.\n")) + ("Changing dual mode only allowed while all nets are stopped.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_SET_NETS Event EMPTY.\n")) + ("SK_RLMT_SET_NETS Event EMPTY.\n")); return; } @@ -3006,9 +3012,10 @@ SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_SET_NETS, Para); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("RLMT: Changed to one net with two ports.\n")) + ("RLMT: Changed to one net with two ports.\n")); } else if (Para.Para32[0] == 2) { + pAC->Rlmt.RlmtOff = SK_TRUE; pAC->Rlmt.Port[1].Net= &pAC->Rlmt.Net[1]; pAC->Rlmt.Net[1].NumPorts = pAC->GIni.GIMacsFound - 1; pAC->Rlmt.Net[0].NumPorts = @@ -3035,19 +3042,19 @@ SkEventQueue(pAC, SKGE_PNMI, SK_PNMI_EVT_RLMT_SET_NETS, Para); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("RLMT: Changed to two nets with one port each.\n")) + ("RLMT: Changed to two nets with one port each.\n")); } else { /* Not implemented for more than two nets. */ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SetNets not implemented for more than two nets.\n")) + ("SetNets not implemented for more than two nets.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_SET_NETS Event EMPTY.\n")) + ("SK_RLMT_SET_NETS Event EMPTY.\n")); return; } SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_SET_NETS Event END.\n")) + ("SK_RLMT_SET_NETS Event END.\n")); } /* SkRlmtSetNets */ @@ -3075,13 +3082,13 @@ SK_U32 PrevRlmtMode; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_MODE_CHANGE Event BEGIN.\n")) + ("SK_RLMT_MODE_CHANGE Event BEGIN.\n")); if (Para.Para32[1] >= pAC->Rlmt.NumNets) { SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Bad NetNumber %d.\n", Para.Para32[1])) + ("Bad NetNumber %d.\n", Para.Para32[1])); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_MODE_CHANGE Event EMPTY.\n")) + ("SK_RLMT_MODE_CHANGE Event EMPTY.\n")); return; } @@ -3091,9 +3098,9 @@ Para.Para32[0] != SK_RLMT_MODE_CLS) { pAC->Rlmt.Net[Para.Para32[1]].RlmtMode = SK_RLMT_MODE_CLS; SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Forced RLMT mode to CLS on single port net.\n")) + ("Forced RLMT mode to CLS on single port net.\n")); SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_MODE_CHANGE Event EMPTY.\n")) + ("SK_RLMT_MODE_CHANGE Event EMPTY.\n")); return; } @@ -3159,7 +3166,7 @@ } /* SK_RLMT_CHECK_SEG bit changed. */ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("SK_RLMT_MODE_CHANGE Event END.\n")) + ("SK_RLMT_MODE_CHANGE Event END.\n")); } /* SkRlmtEvtModeChange */ @@ -3245,7 +3252,7 @@ default: /* Create error log entry. */ SK_DBG_MSG(pAC, SK_DBGMOD_RLMT, SK_DBGCAT_CTRL, - ("Unknown RLMT Event %d.\n", Event)) + ("Unknown RLMT Event %d.\n", Event)); SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_RLMT_E003, SKERR_RLMT_E003_MSG); break; } /* switch() */ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skgehwt.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skgehwt.c @@ -2,8 +2,8 @@ * * Name: skgehwt.c * Project: Gigabit Ethernet Adapters, Event Scheduler Module - * Version: $Revision: 1.15 $ - * Date: $Date: 2003/09/16 13:41:23 $ + * Version: $Revision: 2.2 $ + * Date: $Date: 2004/05/28 13:39:04 $ * Purpose: Hardware Timer * ******************************************************************************/ @@ -11,7 +11,7 @@ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect GmbH. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2004 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ */ #if (defined(DEBUG) || ((!defined(LINT)) && (!defined(SK_SLIM)))) static const char SysKonnectFileId[] = - "@(#) $Id: skgehwt.c,v 1.15 2003/09/16 13:41:23 rschmidt Exp $ (C) Marvell."; + "@(#) $Id: skgehwt.c,v 2.2 2004/05/28 13:39:04 rschmidt Exp $ (C) Marvell."; #endif #include "h/skdrv1st.h" /* Driver Specific Definitions */ @@ -44,10 +44,10 @@ /* * Prototypes of local functions. */ -#define SK_HWT_MAX (65000) +#define SK_HWT_MAX 65000UL * 160 /* ca. 10 sec. */ /* correction factor */ -#define SK_HWT_FAC (1000 * (SK_U32)pAC->GIni.GIHstClkFact / 100) +#define SK_HWT_FAC (10 * (SK_U32)pAC->GIni.GIHstClkFact / 16) /* * Initialize hardware timer. @@ -73,29 +73,21 @@ void SkHwtStart( SK_AC *pAC, /* Adapters context */ SK_IOC Ioc, /* IoContext */ -SK_U32 Time) /* Time in units of 16us to load the timer with. */ +SK_U32 Time) /* Time in usec to load the timer */ { - SK_U32 Cnt; - if (Time > SK_HWT_MAX) Time = SK_HWT_MAX; pAC->Hwt.TStart = Time; pAC->Hwt.TStop = 0L; - Cnt = Time; - - /* - * if time < 16 us - * time = 16 us - */ - if (!Cnt) { - Cnt++; + if (!Time) { + Time = 1L; } - SK_OUT32(Ioc, B2_TI_INI, Cnt * SK_HWT_FAC); - - SK_OUT16(Ioc, B2_TI_CTRL, TIM_START); /* Start timer. */ + SK_OUT32(Ioc, B2_TI_INI, Time * SK_HWT_FAC); + + SK_OUT16(Ioc, B2_TI_CTRL, TIM_START); /* Start timer */ pAC->Hwt.TActive = SK_TRUE; } @@ -109,13 +101,12 @@ SK_IOC Ioc) /* IoContext */ { SK_OUT16(Ioc, B2_TI_CTRL, TIM_STOP); - + SK_OUT16(Ioc, B2_TI_CTRL, TIM_CLR_IRQ); pAC->Hwt.TActive = SK_FALSE; } - /* * Stop hardware timer and read time elapsed since last start. * @@ -129,6 +120,9 @@ { SK_U32 TRead; SK_U32 IStatus; + SK_U32 TimerInt; + + TimerInt = CHIP_ID_YUKON_2(pAC) ? Y2_IS_TIMINT : IS_TIMINT; if (pAC->Hwt.TActive) { @@ -139,15 +133,15 @@ SK_IN32(Ioc, B0_ISRC, &IStatus); - /* Check if timer expired (or wraped around) */ - if ((TRead > pAC->Hwt.TStart) || (IStatus & IS_TIMINT)) { - + /* Check if timer expired (or wrapped around) */ + if ((TRead > pAC->Hwt.TStart) || ((IStatus & TimerInt) != 0)) { + SkHwtStop(pAC, Ioc); - + pAC->Hwt.TStop = pAC->Hwt.TStart; } else { - + pAC->Hwt.TStop = pAC->Hwt.TStart - TRead; } } @@ -162,9 +156,9 @@ SK_IOC Ioc) /* IoContext */ { SkHwtStop(pAC, Ioc); - + pAC->Hwt.TStop = pAC->Hwt.TStart; - + SkTimerDone(pAC, Ioc); } --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skgepnmi.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skgepnmi.c @@ -1,9 +1,9 @@ /***************************************************************************** * * Name: skgepnmi.c - * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.111 $ - * Date: $Date: 2003/09/15 13:35:35 $ + * Project: Gigabit Ethernet Adapters, PNMI-Module + * Version: $Revision: 2.21 $ + * Date: $Date: 2005/05/11 11:50:12 $ * Purpose: Private Network Management Interface * ****************************************************************************/ @@ -22,11 +22,10 @@ * ******************************************************************************/ - -#ifndef _lint +#if (defined(DEBUG) || ((!defined(LINT)) && (!defined(SK_SLIM)))) static const char SysKonnectFileId[] = - "@(#) $Id: skgepnmi.c,v 1.111 2003/09/15 13:35:35 tschilli Exp $ (C) Marvell."; -#endif /* !_lint */ + "@(#) $Id: skgepnmi.c,v 2.21 2005/05/11 11:50:12 tschilli Exp $ (C) Marvell."; +#endif #include "h/skdrv1st.h" #include "h/sktypes.h" @@ -38,12 +37,14 @@ #include "h/skcsum.h" #include "h/skvpd.h" #include "h/skgehw.h" +#include "h/sky2le.h" #include "h/skgeinit.h" #include "h/skdrv2nd.h" #include "h/skgepnm2.h" #ifdef SK_POWER_MGMT #include "h/skgepmgt.h" -#endif +#endif /* SK_POWER_MGMT */ + /* defines *******************************************************************/ #ifndef DEBUG @@ -72,7 +73,6 @@ int SkPnmiGenIoctl(SK_AC *pAC, SK_IOC IoC, void * pBuf, unsigned int * pLen, SK_U32 NetIndex); - /* * Private Function prototypes */ @@ -112,6 +112,12 @@ PNMI_STATIC int Vct(SK_AC *pAC, SK_IOC IoC, int Action, SK_U32 Id, char *pBuf, unsigned int *pLen, SK_U32 Instance, unsigned int TableIndex, SK_U32 NetIndex); PNMI_STATIC void CheckVctStatus(SK_AC *, SK_IOC, char *, SK_U32, SK_U32); +PNMI_STATIC void VctGetResults(SK_AC *, SK_IOC, SK_U32); +#ifdef SK_ASF +PNMI_STATIC int Asf(SK_AC *pAC, SK_IOC IoC, int action, SK_U32 Id, + char *pBuf, unsigned int *pLen, SK_U32 Instance, + unsigned int TableIndex, SK_U32 NetIndex); +#endif /* SK_ASF */ /* * Table to correlate OID with handler function and index to @@ -353,17 +359,13 @@ * Always 0 */ int SkPnmiInit( -SK_AC *pAC, /* Pointer to adapter context */ -SK_IOC IoC, /* IO context handle */ -int Level) /* Initialization level */ +SK_AC *pAC, /* Pointer to adapter context */ +SK_IOC IoC, /* IO context handle */ +int Level) /* Initialization level */ { unsigned int PortMax; /* Number of ports */ unsigned int PortIndex; /* Current port index in loop */ - SK_U16 Val16; /* Multiple purpose 16 bit variable */ - SK_U8 Val8; /* Mulitple purpose 8 bit variable */ - SK_EVPARA EventParam; /* Event struct for timer event */ - SK_PNMI_VCT *pVctBackupData; - + SK_EVPARA EventParam; /* Event struct for timer event */ SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL, ("PNMI: SkPnmiInit: Called, level=%d\n", Level)); @@ -372,9 +374,11 @@ case SK_INIT_DATA: SK_MEMSET((char *)&pAC->Pnmi, 0, sizeof(pAC->Pnmi)); + pAC->Pnmi.TrapBufFree = SK_PNMI_TRAP_QUEUE_LEN; pAC->Pnmi.StartUpTime = SK_PNMI_HUNDREDS_SEC(SkOsGetTime(pAC)); pAC->Pnmi.RlmtChangeThreshold = SK_PNMI_DEF_RLMT_CHG_THRES; + for (PortIndex = 0; PortIndex < SK_MAX_MACS; PortIndex ++) { pAC->Pnmi.Port[PortIndex].ActiveFlag = SK_FALSE; @@ -408,51 +412,42 @@ break; case SK_INIT_IO: - /* - * Reset MAC counters - */ + + /* Reset MAC counters. */ PortMax = pAC->GIni.GIMacsFound; for (PortIndex = 0; PortIndex < PortMax; PortIndex ++) { pAC->GIni.GIFunc.pFnMacResetCounter(pAC, IoC, PortIndex); } - + /* Initialize DSP variables for Vct() to 0xff => Never written! */ for (PortIndex = 0; PortIndex < PortMax; PortIndex ++) { pAC->GIni.GP[PortIndex].PCableLen = 0xff; - pVctBackupData = &pAC->Pnmi.VctBackup[PortIndex]; - pVctBackupData->PCableLen = 0xff; + pAC->Pnmi.VctBackup[PortIndex].CableLen = 0xff; } - - /* - * Get pci bus speed - */ - SK_IN16(IoC, B0_CTST, &Val16); - if ((Val16 & CS_BUS_CLOCK) == 0) { - pAC->Pnmi.PciBusSpeed = 33; + /* Get PCI bus speed. */ + if (pAC->GIni.GIPciClock66) { + + pAC->Pnmi.PciBusSpeed = 66; } else { - pAC->Pnmi.PciBusSpeed = 66; + pAC->Pnmi.PciBusSpeed = 33; } - /* - * Get pci bus width - */ - SK_IN16(IoC, B0_CTST, &Val16); - if ((Val16 & CS_BUS_SLOT_SZ) == 0) { + /* Get PCI bus width. */ + if (pAC->GIni.GIPciSlot64) { - pAC->Pnmi.PciBusWidth = 32; + pAC->Pnmi.PciBusWidth = 64; } else { - pAC->Pnmi.PciBusWidth = 64; + pAC->Pnmi.PciBusWidth = 32; } - /* - * Get chipset - */ + /* Get chipset. */ switch (pAC->GIni.GIChipId) { + case CHIP_ID_GENESIS: pAC->Pnmi.Chipset = SK_PNMI_CHIPSET_XMAC; break; @@ -461,57 +456,51 @@ pAC->Pnmi.Chipset = SK_PNMI_CHIPSET_YUKON; break; + case CHIP_ID_YUKON_LITE: + pAC->Pnmi.Chipset = SK_PNMI_CHIPSET_YUKON_LITE; + break; + + case CHIP_ID_YUKON_LP: + pAC->Pnmi.Chipset = SK_PNMI_CHIPSET_YUKON_LP; + break; + + case CHIP_ID_YUKON_XL: + pAC->Pnmi.Chipset = SK_PNMI_CHIPSET_YUKON_XL; + break; + + case CHIP_ID_YUKON_EC: + pAC->Pnmi.Chipset = SK_PNMI_CHIPSET_YUKON_EC; + break; + + case CHIP_ID_YUKON_FE: + pAC->Pnmi.Chipset = SK_PNMI_CHIPSET_YUKON_FE; + break; + default: break; } - /* - * Get PMD and DeviceType - */ - SK_IN8(IoC, B2_PMD_TYP, &Val8); - switch (Val8) { + /* Get PMD and Device Type. */ + switch (pAC->GIni.GIPmdTyp) { + case 'S': pAC->Pnmi.PMD = 3; - if (pAC->GIni.GIMacsFound > 1) { - - pAC->Pnmi.DeviceType = 0x00020002; - } - else { - pAC->Pnmi.DeviceType = 0x00020001; - } + pAC->Pnmi.DeviceType = 0x00020001; break; case 'L': pAC->Pnmi.PMD = 2; - if (pAC->GIni.GIMacsFound > 1) { - - pAC->Pnmi.DeviceType = 0x00020004; - } - else { - pAC->Pnmi.DeviceType = 0x00020003; - } + pAC->Pnmi.DeviceType = 0x00020003; break; case 'C': pAC->Pnmi.PMD = 4; - if (pAC->GIni.GIMacsFound > 1) { - - pAC->Pnmi.DeviceType = 0x00020006; - } - else { - pAC->Pnmi.DeviceType = 0x00020005; - } + pAC->Pnmi.DeviceType = 0x00020005; break; case 'T': pAC->Pnmi.PMD = 5; - if (pAC->GIni.GIMacsFound > 1) { - - pAC->Pnmi.DeviceType = 0x00020008; - } - else { - pAC->Pnmi.DeviceType = 0x00020007; - } + pAC->Pnmi.DeviceType = 0x00020007; break; default : @@ -520,11 +509,14 @@ break; } - /* - * Get connector - */ - SK_IN8(IoC, B2_CONN_TYP, &Val8); - switch (Val8) { + if (pAC->GIni.GIMacsFound > 1) { + + pAC->Pnmi.DeviceType++; + } + + /* Get connector type. */ + switch (pAC->GIni.GIConTyp) { + case 'C': pAC->Pnmi.Connector = 2; break; @@ -552,17 +544,17 @@ break; case SK_INIT_RUN: - /* - * Start timer for RLMT change counter - */ + + /* Start timer for RLMT change counter. */ SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam)); + SkTimerStart(pAC, IoC, &pAC->Pnmi.RlmtChangeEstimate.EstTimer, - 28125000, SKGE_PNMI, SK_PNMI_EVT_CHG_EST_TIMER, + SK_PNMI_EVT_TIMER_CHECK, SKGE_PNMI, SK_PNMI_EVT_CHG_EST_TIMER, EventParam); break; default: - break; /* Nothing todo */ + break; /* Nothing to do. */ } return (0); @@ -611,7 +603,7 @@ * Description: * Calls a general sub-function for all this stuff. The preset does * the same as a set, but returns just before finally setting the - * new value. This is useful to check if a set might be successfull. + * new value. This is usefull to check if a set might be successfull. * If the instance -1 is passed, an array of values is supposed and * all instances of the OID will be set. * @@ -642,7 +634,6 @@ ("PNMI: SkPnmiPreSetVar: Called, Id=0x%x, BufLen=%d, Instance=%d, NetIndex=%d\n", Id, *pLen, Instance, NetIndex)); - return (PnmiVar(pAC, IoC, SK_PNMI_PRESET, Id, (char *)pBuf, pLen, Instance, NetIndex)); } @@ -654,7 +645,7 @@ * Description: * Calls a general sub-function for all this stuff. The preset does * the same as a set, but returns just before finally setting the - * new value. This is useful to check if a set might be successfull. + * new value. This is usefull to check if a set might be successfull. * If the instance -1 is passed, an array of values is supposed and * all instances of the OID will be set. * @@ -724,7 +715,6 @@ unsigned int TmpLen; char KeyArr[SK_PNMI_VPD_ENTRIES][SK_PNMI_VPD_KEY_SIZE]; - SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL, ("PNMI: SkPnmiGetStruct: Called, BufLen=%d, NetIndex=%d\n", *pLen, NetIndex)); @@ -733,22 +723,19 @@ if (*pLen >= SK_PNMI_MIN_STRUCT_SIZE) { - SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_TOO_SHORT, - (SK_U32)(-1)); + SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_TOO_SHORT, (SK_U32)(-1)); } *pLen = SK_PNMI_STRUCT_SIZE; return (SK_PNMI_ERR_TOO_SHORT); } - /* - * Check NetIndex - */ + /* Check NetIndex. */ if (NetIndex >= pAC->Rlmt.NumNets) { return (SK_PNMI_ERR_UNKNOWN_NET); } - /* Update statistic */ + /* Update statistics. */ SK_PNMI_CHECKFLAGS("SkPnmiGetStruct: On call"); if ((Ret = MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1)) != @@ -773,15 +760,12 @@ return (Ret); } - /* - * Increment semaphores to indicate that an update was - * already done - */ + /* Increment semaphores to indicate that an update was already done. */ pAC->Pnmi.MacUpdatedFlag ++; pAC->Pnmi.RlmtUpdatedFlag ++; pAC->Pnmi.SirqUpdatedFlag ++; - /* Get vpd keys for instance calculation */ + /* Get VPD keys for instance calculation. */ Ret = GetVpdKeyArr(pAC, IoC, &KeyArr[0][0], sizeof(KeyArr), &TmpLen); if (Ret != SK_PNMI_ERR_OK) { @@ -795,13 +779,13 @@ return (SK_PNMI_ERR_GENERAL); } - /* Retrieve values */ + /* Retrieve values. */ SK_MEMSET((char *)pBuf, 0, SK_PNMI_STRUCT_SIZE); + for (TableIndex = 0; TableIndex < ID_TABLE_SIZE; TableIndex ++) { InstanceNo = IdTable[TableIndex].InstanceNo; - for (InstanceCnt = 1; InstanceCnt <= InstanceNo; - InstanceCnt ++) { + for (InstanceCnt = 1; InstanceCnt <= InstanceNo; InstanceCnt ++) { DstOffset = IdTable[TableIndex].Offset + (InstanceCnt - 1) * @@ -870,7 +854,7 @@ * Description: * Calls a general sub-function for all this set stuff. The preset does * the same as a set, but returns just before finally setting the - * new value. This is useful to check if a set might be successfull. + * new value. This is usefull to check if a set might be successfull. * The sub-function runs through the IdTable, checks which OIDs are able * to set, and calls the handler function of the OID to perform the * preset. The return value of the function will also be stored in @@ -998,7 +982,6 @@ unsigned int PhysPortIndex; unsigned int MaxNetNumber; int CounterIndex; - int Ret; SK_U16 MacStatus; SK_U64 OverflowStatus; SK_U64 Mask; @@ -1012,12 +995,7 @@ SK_U64 Delta; SK_PNMI_ESTIMATE *pEst; SK_U32 NetIndex; - SK_GEPORT *pPrt; - SK_PNMI_VCT *pVctBackupData; SK_U32 RetCode; - int i; - SK_U32 CableLength; - #ifdef DEBUG if (Event != SK_PNMI_EVT_XMAC_RESET) { @@ -1048,9 +1026,7 @@ #endif /* DEBUG */ OverflowStatus = 0; - /* - * Check which source caused an overflow interrupt. - */ + /* Check which source caused an overflow interrupt. */ if ((pAC->GIni.GIFunc.pFnMacOverflow(pAC, IoC, PhysPortIndex, MacStatus, &OverflowStatus) != 0) || (OverflowStatus == 0)) { @@ -1068,7 +1044,6 @@ Mask = (SK_U64)1 << CounterIndex; if ((OverflowStatus & Mask) == 0) { - continue; } @@ -1100,9 +1075,7 @@ case SK_PNMI_HRX_IRLENGTH: case SK_PNMI_HRX_RESERVED: - /* - * the following counters aren't be handled (id > 63) - */ + /* The following counters aren't be handled (id > 63). */ case SK_PNMI_HTX_SYNC: case SK_PNMI_HTX_SYNC_OCTET: break; @@ -1189,7 +1162,7 @@ if ((unsigned int)Param.Para64 >= (unsigned int)pAC->I2c.MaxSens) { SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_CTRL, - ("PNMI: ERR: SkPnmiEvent: SK_PNMI_EVT_SEN_ERR_UPP parameter wrong, SensorIndex=%d\n", + ("PNMI: ERR: SK_PNMI_EVT_SEN_ERR_UPP parameter wrong, SensorIndex=%d\n", (unsigned int)Param.Para64)); return (0); } @@ -1208,16 +1181,14 @@ case SK_PNMI_EVT_CHG_EST_TIMER: /* * Calculate port switch average on a per hour basis - * Time interval for check : 28125 ms + * Time interval for check : 28125 ms (SK_PNMI_EVT_TIMER_CHECK) * Number of values for average : 8 * * Be careful in changing these values, on change check * - typedef of SK_PNMI_ESTIMATE (Size of EstValue * array one less than value number) * - Timer initialization SkTimerStart() in SkPnmiInit - * - Delta value below must be multiplicated with - * power of 2 - * + * - Delta value below must be multiplicated with power of 2 */ pEst = &pAC->Pnmi.RlmtChangeEstimate; CounterIndex = pEst->EstValueIndex + 1; @@ -1240,7 +1211,7 @@ Delta = NewestValue - OldestValue; } else { - /* Overflow situation */ + /* Overflow situation. */ Delta = (SK_U64)(0 - OldestValue) + NewestValue; } @@ -1266,8 +1237,9 @@ } SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam)); + SkTimerStart(pAC, IoC, &pAC->Pnmi.RlmtChangeEstimate.EstTimer, - 28125000, SKGE_PNMI, SK_PNMI_EVT_CHG_EST_TIMER, + SK_PNMI_EVT_TIMER_CHECK, SKGE_PNMI, SK_PNMI_EVT_CHG_EST_TIMER, EventParam); break; @@ -1311,29 +1283,25 @@ (unsigned int)Param.Para64)); return (0); } -#endif +#endif /* DEBUG */ + PhysPortIndex = (unsigned int)Param.Para64; - /* - * Update XMAC statistic to get fresh values - */ - Ret = MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1); - if (Ret != SK_PNMI_ERR_OK) { + /* Update XMAC statistic to get fresh values. */ + if (MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1) != + SK_PNMI_ERR_OK) { SK_PNMI_CHECKFLAGS("SkPnmiEvent: On return"); return (0); } - /* - * Increment semaphore to indicate that an update was - * already done - */ + + /* Increment semaphore to indicate that an update was already done. */ pAC->Pnmi.MacUpdatedFlag ++; for (CounterIndex = 0; CounterIndex < SK_PNMI_MAX_IDX; CounterIndex ++) { if (!StatAddr[CounterIndex][MacType].GetOffset) { - continue; } @@ -1366,14 +1334,15 @@ QueueRlmtPortTrap(pAC, OID_SKGE_TRAP_RLMT_PORT_UP, PhysPortIndex); (void)SK_DRIVER_SENDEVENT(pAC, IoC); - /* Bugfix for XMAC errata (#10620)*/ + /* Bugfix for XMAC errata (#10620). */ if (MacType == SK_MAC_XMAC) { - /* Add incremental difference to offset (#10620)*/ + /* Add incremental difference to offset (#10620). */ (void)pAC->GIni.GIFunc.pFnMacStatistic(pAC, IoC, PhysPortIndex, XM_RXE_SHT_ERR, &Val32); Value = (((SK_U64)pAC->Pnmi.Port[PhysPortIndex]. CounterHigh[SK_PNMI_HRX_SHORTS] << 32) | (SK_U64)Val32); + pAC->Pnmi.Port[PhysPortIndex].CounterOffset[SK_PNMI_HRX_SHORTS] += Value - pAC->Pnmi.Port[PhysPortIndex].RxShortZeroMark; } @@ -1403,7 +1372,7 @@ QueueRlmtPortTrap(pAC, OID_SKGE_TRAP_RLMT_PORT_DOWN, PhysPortIndex); (void)SK_DRIVER_SENDEVENT(pAC, IoC); - /* Bugfix #10620 - get zero level for incremental difference */ + /* Bugfix #10620 - get zero level for incremental difference. */ if (MacType == SK_MAC_XMAC) { (void)pAC->GIni.GIFunc.pFnMacStatistic(pAC, IoC, PhysPortIndex, @@ -1435,17 +1404,13 @@ } #endif /* DEBUG */ - /* - * For now, ignore event if NetIndex != 0. - */ + /* For now, ignore event if NetIndex != 0. */ if (Param.Para32[1] != 0) { return (0); } - /* - * Nothing to do if port is already inactive - */ + /* Nothing to do if port is already inactive. */ if (!pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) { return (0); @@ -1476,7 +1441,6 @@ CounterIndex ++) { if (!StatAddr[CounterIndex][MacType].GetOffset) { - continue; } @@ -1485,9 +1449,7 @@ pAC->Pnmi.VirtualCounterOffset[CounterIndex] += Value; } - /* - * Set port to inactive - */ + /* Set port to inactive. */ pAC->Pnmi.Port[PhysPortIndex].ActiveFlag = SK_FALSE; pAC->Pnmi.MacUpdatedFlag --; @@ -1513,25 +1475,19 @@ } #endif /* DEBUG */ - /* - * For now, ignore event if NetIndex != 0. - */ + /* For now, ignore event if NetIndex != 0. */ if (Param.Para32[1] != 0) { return (0); } - /* - * Nothing to do if port is already active - */ + /* Nothing to do if port is already inactive. */ if (pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) { return (0); } - /* - * Statistic maintenance - */ + /* Statistic maintenance. */ pAC->Pnmi.RlmtChangeCts ++; pAC->Pnmi.RlmtChangeTime = SK_PNMI_HUNDREDS_SEC(SkOsGetTime(pAC)); @@ -1565,7 +1521,6 @@ CounterIndex ++) { if (!StatAddr[CounterIndex][MacType].GetOffset) { - continue; } @@ -1574,16 +1529,14 @@ pAC->Pnmi.VirtualCounterOffset[CounterIndex] -= Value; } - /* Set port to active */ + /* Set port to active. */ pAC->Pnmi.Port[PhysPortIndex].ActiveFlag = SK_TRUE; pAC->Pnmi.MacUpdatedFlag --; break; case SK_PNMI_EVT_RLMT_SEGMENTATION: - /* - * Para.Para32[0] contains the NetIndex. - */ + /* Para.Para32[0] contains the NetIndex. */ /* * Store a trap message in the trap buffer and generate an event for @@ -1598,71 +1551,53 @@ * Param.Para32[0] contains the number of Nets. * Param.Para32[1] is reserved, contains -1. */ - /* - * Check number of nets - */ + /* Check number of nets. */ MaxNetNumber = pAC->GIni.GIMacsFound; - if (((unsigned int)Param.Para32[0] < 1) - || ((unsigned int)Param.Para32[0] > MaxNetNumber)) { + + if (((unsigned int)Param.Para32[0] < 1) || + ((unsigned int)Param.Para32[0] > MaxNetNumber)) { + return (SK_PNMI_ERR_UNKNOWN_NET); } - if ((unsigned int)Param.Para32[0] == 1) { /* single net mode */ + if ((unsigned int)Param.Para32[0] == 1) { /* SingleNet mode. */ pAC->Pnmi.DualNetActiveFlag = SK_FALSE; } - else { /* dual net mode */ + else { /* DualNet mode. */ pAC->Pnmi.DualNetActiveFlag = SK_TRUE; } break; case SK_PNMI_EVT_VCT_RESET: PhysPortIndex = Param.Para32[0]; - pPrt = &pAC->GIni.GP[PhysPortIndex]; - pVctBackupData = &pAC->Pnmi.VctBackup[PhysPortIndex]; if (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_PENDING) { + RetCode = SkGmCableDiagStatus(pAC, IoC, PhysPortIndex, SK_FALSE); + if (RetCode == 2) { /* * VCT test is still running. * Start VCT timer counter again. */ - SK_MEMSET((char *) &Param, 0, sizeof(Param)); + SK_MEMSET((char *)&Param, 0, sizeof(Param)); + Param.Para32[0] = PhysPortIndex; Param.Para32[1] = -1; - SkTimerStart(pAC, IoC, - &pAC->Pnmi.VctTimeout[PhysPortIndex].VctTimer, - 4000000, SKGE_PNMI, SK_PNMI_EVT_VCT_RESET, Param); + + SkTimerStart(pAC, IoC, &pAC->Pnmi.VctTimeout[PhysPortIndex], + SK_PNMI_VCT_TIMER_CHECK, SKGE_PNMI, SK_PNMI_EVT_VCT_RESET, Param); + break; } - pAC->Pnmi.VctStatus[PhysPortIndex] &= ~SK_PNMI_VCT_PENDING; - pAC->Pnmi.VctStatus[PhysPortIndex] |= - (SK_PNMI_VCT_NEW_VCT_DATA | SK_PNMI_VCT_TEST_DONE); - /* Copy results for later use to PNMI struct. */ - for (i = 0; i < 4; i++) { - if (pPrt->PMdiPairSts[i] == SK_PNMI_VCT_NORMAL_CABLE) { - if ((pPrt->PMdiPairLen[i] > 35) && - (pPrt->PMdiPairLen[i] < 0xff)) { - pPrt->PMdiPairSts[i] = SK_PNMI_VCT_IMPEDANCE_MISMATCH; - } - } - if ((pPrt->PMdiPairLen[i] > 35) && - (pPrt->PMdiPairLen[i] != 0xff)) { - CableLength = 1000 * - (((175 * pPrt->PMdiPairLen[i]) / 210) - 28); - } - else { - CableLength = 0; - } - pVctBackupData->PMdiPairLen[i] = CableLength; - pVctBackupData->PMdiPairSts[i] = pPrt->PMdiPairSts[i]; - } + VctGetResults(pAC, IoC, PhysPortIndex); - Param.Para32[0] = PhysPortIndex; - Param.Para32[1] = -1; - SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_RESET, Param); - SkEventDispatcher(pAC, IoC); + EventParam.Para32[0] = PhysPortIndex; + EventParam.Para32[1] = -1; + SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_RESET, EventParam); + + /* SkEventDispatcher(pAC, IoC); */ } break; @@ -1710,14 +1645,13 @@ unsigned int TableIndex; int Ret; - if ((TableIndex = LookupId(Id)) == (unsigned int)(-1)) { *pLen = 0; return (SK_PNMI_ERR_UNKNOWN_OID); } - /* Check NetIndex */ + /* Check NetIndex. */ if (NetIndex >= pAC->Rlmt.NumNets) { return (SK_PNMI_ERR_UNKNOWN_NET); } @@ -1767,22 +1701,20 @@ SK_U32 Instance; SK_U32 Id; - - /* Check if the passed buffer has the right size */ + /* Check if the passed buffer has the right size. */ if (*pLen < SK_PNMI_STRUCT_SIZE) { - /* Check if we can return the error within the buffer */ + /* Check if we can return the error within the buffer. */ if (*pLen >= SK_PNMI_MIN_STRUCT_SIZE) { - SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_TOO_SHORT, - (SK_U32)(-1)); + SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_TOO_SHORT, (SK_U32)(-1)); } *pLen = SK_PNMI_STRUCT_SIZE; return (SK_PNMI_ERR_TOO_SHORT); } - /* Check NetIndex */ + /* Check NetIndex. */ if (NetIndex >= pAC->Rlmt.NumNets) { return (SK_PNMI_ERR_UNKNOWN_NET); } @@ -1810,12 +1742,11 @@ pAC->Pnmi.RlmtUpdatedFlag ++; pAC->Pnmi.SirqUpdatedFlag ++; - /* Preset/Set values */ + /* PRESET/SET values. */ for (TableIndex = 0; TableIndex < ID_TABLE_SIZE; TableIndex ++) { if ((IdTable[TableIndex].Access != SK_PNMI_RW) && (IdTable[TableIndex].Access != SK_PNMI_WO)) { - continue; } @@ -1826,8 +1757,7 @@ InstanceCnt ++) { DstOffset = IdTable[TableIndex].Offset + - (InstanceCnt - 1) * - IdTable[TableIndex].StructSize; + (InstanceCnt - 1) * IdTable[TableIndex].StructSize; /* * Because VPD multiple instance variables are @@ -1837,9 +1767,7 @@ */ Instance = (SK_U32)InstanceCnt; - /* - * Evaluate needed buffer length - */ + /* Evaluate needed buffer length. */ Len = 0; Ret = IdTable[TableIndex].Func(pAC, IoC, SK_PNMI_GET, IdTable[TableIndex].Id, @@ -1855,8 +1783,7 @@ pAC->Pnmi.SirqUpdatedFlag --; SK_PNMI_CHECKFLAGS("PnmiStruct: On return"); - SK_PNMI_SET_STAT(pBuf, - SK_PNMI_ERR_GENERAL, DstOffset); + SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_GENERAL, DstOffset); *pLen = SK_PNMI_MIN_STRUCT_SIZE; return (SK_PNMI_ERR_GENERAL); } @@ -1878,7 +1805,7 @@ } } - /* Call the OID handler function */ + /* Call the OID handler function. */ Ret = IdTable[TableIndex].Func(pAC, IoC, Action, IdTable[TableIndex].Id, pBuf + DstOffset, &Len, Instance, TableIndex, NetIndex); @@ -1889,8 +1816,7 @@ pAC->Pnmi.SirqUpdatedFlag --; SK_PNMI_CHECKFLAGS("PnmiStruct: On return"); - SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_BAD_VALUE, - DstOffset); + SK_PNMI_SET_STAT(pBuf, SK_PNMI_ERR_BAD_VALUE, DstOffset); *pLen = SK_PNMI_MIN_STRUCT_SIZE; return (SK_PNMI_ERR_BAD_VALUE); } @@ -1924,7 +1850,7 @@ if (IdTable[i].Id == Id) { - return i; + return (i); } } @@ -1965,16 +1891,13 @@ { if (Id != OID_SKGE_ALL_DATA) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR003, - SK_PNMI_ERR003MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR003, SK_PNMI_ERR003MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); } - /* - * Check instance. We only handle single instance variables - */ + /* Check instance. We only handle single instance variables. */ if (Instance != (SK_U32)(-1) && Instance != 1) { *pLen = 0; @@ -2033,10 +1956,7 @@ int Ret; SK_U32 ActionOp; - - /* - * Check instance. We only handle single instance variables - */ + /* Check instance. We only handle single instance variables. */ if (Instance != (SK_U32)(-1) && Instance != 1) { *pLen = 0; @@ -2049,10 +1969,10 @@ return (SK_PNMI_ERR_TOO_SHORT); } - /* Check if a get should be performed */ + /* Check if a GET should be performed. */ if (Action == SK_PNMI_GET) { - /* A get is easy. We always return the same value */ + /* A GET is easy. We always return the same value. */ ActionOp = (SK_U32)SK_PNMI_ACT_IDLE; SK_PNMI_STORE_U32(pBuf, ActionOp); *pLen = sizeof(SK_U32); @@ -2060,13 +1980,13 @@ return (SK_PNMI_ERR_OK); } - /* Continue with PRESET/SET action */ + /* Continue with PRESET/SET action. */ if (*pLen > sizeof(SK_U32)) { return (SK_PNMI_ERR_BAD_VALUE); } - /* Check if the command is a known one */ + /* Check if the command is a known one. */ SK_PNMI_READ_U32(pBuf, ActionOp); if (*pLen > sizeof(SK_U32) || (ActionOp != SK_PNMI_ACT_IDLE && @@ -2078,7 +1998,7 @@ return (SK_PNMI_ERR_BAD_VALUE); } - /* A preset ends here */ + /* A PRESET ends here. */ if (Action == SK_PNMI_PRESET) { return (SK_PNMI_ERR_OK); @@ -2087,19 +2007,15 @@ switch (ActionOp) { case SK_PNMI_ACT_IDLE: - /* Nothing to do */ + /* Nothing to do. */ break; case SK_PNMI_ACT_RESET: - /* - * Perform a driver reset or something that comes near - * to this. - */ + /* Perform a driver reset or something that comes near to this. */ Ret = SK_DRIVER_RESET(pAC, IoC); if (Ret != 0) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR005, - SK_PNMI_ERR005MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR005, SK_PNMI_ERR005MSG); return (SK_PNMI_ERR_GENERAL); } @@ -2116,13 +2032,12 @@ break; case SK_PNMI_ACT_RESETCNT: - /* Set all counters and timestamps to zero */ + /* Set all counters and timestamps to zero. */ ResetCounter(pAC, IoC, NetIndex); break; default: - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR006, - SK_PNMI_ERR006MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR006, SK_PNMI_ERR006MSG); return (SK_PNMI_ERR_GENERAL); } @@ -2166,25 +2081,21 @@ SK_U32 StatVal32; SK_BOOL Is64BitReq = SK_FALSE; - /* - * Only the active Mac is returned - */ + /* Only the active MAC is returned. */ if (Instance != (SK_U32)(-1) && Instance != 1) { *pLen = 0; return (SK_PNMI_ERR_UNKNOWN_INST); } - /* - * Check action type - */ + /* Check action type. */ if (Action != SK_PNMI_GET) { *pLen = 0; return (SK_PNMI_ERR_READ_ONLY); } - /* Check length */ + /* Check length. */ switch (Id) { case OID_802_3_PERMANENT_ADDRESS: @@ -2205,12 +2116,12 @@ #else /* SK_NDIS_64BIT_CTR */ - /* for compatibility, at least 32bit are required for OID */ + /* For compatibility, at least 32 bits are required for OID. */ if (*pLen < sizeof(SK_U32)) { /* - * but indicate handling for 64bit values, - * if insufficient space is provided - */ + * Indicate handling for 64 bit values, + * if insufficient space is provided. + */ *pLen = sizeof(SK_U64); return (SK_PNMI_ERR_TOO_SHORT); } @@ -2226,16 +2137,14 @@ * to indicate that an update was already done. */ Ret = MacUpdate(pAC, IoC, 0, pAC->GIni.GIMacsFound - 1); - if ( Ret != SK_PNMI_ERR_OK) { + if (Ret != SK_PNMI_ERR_OK) { *pLen = 0; return (Ret); } pAC->Pnmi.MacUpdatedFlag ++; - /* - * Get value (MAC Index 0 identifies the virtual MAC) - */ + /* Get value (MAC index 0 identifies the virtual MAC). */ switch (Id) { case OID_802_3_PERMANENT_ADDRESS: @@ -2251,7 +2160,7 @@ default: StatVal = GetStatVal(pAC, IoC, 0, IdTable[TableIndex].Param, NetIndex); - /* by default 32bit values are evaluated */ + /* By default 32 bit values are evaluated. */ if (!Is64BitReq) { StatVal32 = (SK_U32)StatVal; SK_PNMI_STORE_U32(pBuf, StatVal32); @@ -2305,21 +2214,19 @@ int MacType; int Ret; SK_U64 StatVal; - - - /* Calculate instance if wished. MAC index 0 is the virtual MAC */ + /* Calculate instance if wished. MAC index 0 is the virtual MAC. */ PhysPortMax = pAC->GIni.GIMacsFound; LogPortMax = SK_PNMI_PORT_PHYS2LOG(PhysPortMax); MacType = pAC->GIni.GIMacType; - if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { /* Dual net mode */ + if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { /* DualNet mode. */ LogPortMax--; } - if ((Instance != (SK_U32)(-1))) { /* Only one specific instance is queried */ - /* Check instance range */ + if ((Instance != (SK_U32)(-1))) { /* Only one specific instance is queried. */ + /* Check instance range. */ if ((Instance < 1) || (Instance > LogPortMax)) { *pLen = 0; @@ -2329,20 +2236,20 @@ Limit = LogPortIndex + 1; } - else { /* Instance == (SK_U32)(-1), get all Instances of that OID */ + else { /* Instance == (SK_U32)(-1), get all Instances of that OID. */ LogPortIndex = 0; Limit = LogPortMax; } - /* Check action */ + /* Check action. */ if (Action != SK_PNMI_GET) { *pLen = 0; return (SK_PNMI_ERR_READ_ONLY); } - /* Check length */ + /* Check length. */ if (*pLen < (Limit - LogPortIndex) * sizeof(SK_U64)) { *pLen = (Limit - LogPortIndex) * sizeof(SK_U64); @@ -2361,7 +2268,7 @@ } pAC->Pnmi.MacUpdatedFlag ++; - /* Get value */ + /* Get value. */ Offset = 0; for (; LogPortIndex < Limit; LogPortIndex ++) { @@ -2467,19 +2374,16 @@ unsigned int Limit; unsigned int Offset = 0; - /* - * Calculate instance if wished. MAC index 0 is the virtual - * MAC. - */ + /* Calculate instance if wished. MAC index 0 is the virtual MAC. */ PhysPortMax = pAC->GIni.GIMacsFound; LogPortMax = SK_PNMI_PORT_PHYS2LOG(PhysPortMax); - if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { /* Dual net mode */ + if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { /* DualNet mode. */ LogPortMax--; } - if ((Instance != (SK_U32)(-1))) { /* Only one specific instance is queried */ - /* Check instance range */ + if ((Instance != (SK_U32)(-1))) { /* Only one specific instance is queried. */ + /* Check instance range. */ if ((Instance < 1) || (Instance > LogPortMax)) { *pLen = 0; @@ -2488,27 +2392,23 @@ LogPortIndex = SK_PNMI_PORT_INST2LOG(Instance); Limit = LogPortIndex + 1; } - else { /* Instance == (SK_U32)(-1), get all Instances of that OID */ + else { /* Instance == (SK_U32)(-1), get all Instances of that OID. */ LogPortIndex = 0; Limit = LogPortMax; } - /* - * Perform Action - */ + /* Perform action. */ if (Action == SK_PNMI_GET) { - /* Check length */ + /* Check length. */ if (*pLen < (Limit - LogPortIndex) * 6) { *pLen = (Limit - LogPortIndex) * 6; return (SK_PNMI_ERR_TOO_SHORT); } - /* - * Get value - */ + /* Get value. */ for (; LogPortIndex < Limit; LogPortIndex ++) { switch (Id) { @@ -2532,8 +2432,7 @@ &pAC->Addr.Net[NetIndex].PermanentMacAddress); } else { - PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( - pAC, LogPortIndex); + PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC, LogPortIndex); CopyMac(pBuf + Offset, &pAC->Addr.Port[PhysPortIndex].PermanentMacAddress); @@ -2542,8 +2441,7 @@ break; default: - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR008, - SK_PNMI_ERR008MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR008, SK_PNMI_ERR008MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -2554,8 +2452,8 @@ } else { /* - * The logical MAC address may not be changed only - * the physical ones + * The logical MAC address may not be changed, + * only the physical ones. */ if (Id == OID_SKGE_PHYS_FAC_ADDR) { @@ -2563,19 +2461,16 @@ return (SK_PNMI_ERR_READ_ONLY); } - /* - * Only the current address may be changed - */ + /* Only the current address may be changed. */ if (Id != OID_SKGE_PHYS_CUR_ADDR) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR009, - SK_PNMI_ERR009MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR009, SK_PNMI_ERR009MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); } - /* Check length */ + /* Check length. */ if (*pLen < (Limit - LogPortIndex) * 6) { *pLen = (Limit - LogPortIndex) * 6; @@ -2587,32 +2482,26 @@ return (SK_PNMI_ERR_BAD_VALUE); } - /* - * Check Action - */ + /* Check action. */ if (Action == SK_PNMI_PRESET) { *pLen = 0; return (SK_PNMI_ERR_OK); } - /* - * Set OID_SKGE_MAC_CUR_ADDR - */ + /* Set OID_SKGE_MAC_CUR_ADDR. */ for (; LogPortIndex < Limit; LogPortIndex ++, Offset += 6) { /* * A set to virtual port and set of broadcast - * address will be ignored + * address will be ignored. */ if (LogPortIndex == 0 || SK_MEMCMP(pBuf + Offset, "\xff\xff\xff\xff\xff\xff", 6) == 0) { - continue; } - PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC, - LogPortIndex); + PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC, LogPortIndex); Ret = SkAddrOverride(pAC, IoC, PhysPortIndex, (SK_MAC_ADDR *)(pBuf + Offset), @@ -2665,10 +2554,7 @@ unsigned int Offset = 0; SK_U64 StatVal; - - /* - * Calculate instance if wished - */ + /* Calculate instance if wished. */ if (Instance != (SK_U32)(-1)) { if ((Instance < 1) || (Instance > SKCS_NUM_PROTOCOLS)) { @@ -2684,25 +2570,21 @@ Limit = SKCS_NUM_PROTOCOLS; } - /* - * Check action - */ + /* Check action. */ if (Action != SK_PNMI_GET) { *pLen = 0; return (SK_PNMI_ERR_READ_ONLY); } - /* Check length */ + /* Check length. */ if (*pLen < (Limit - Index) * sizeof(SK_U64)) { *pLen = (Limit - Index) * sizeof(SK_U64); return (SK_PNMI_ERR_TOO_SHORT); } - /* - * Get value - */ + /* Get value. */ for (; Index < Limit; Index ++) { switch (Id) { @@ -2728,8 +2610,7 @@ break; default: - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR010, - SK_PNMI_ERR010MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR010, SK_PNMI_ERR010MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -2739,9 +2620,7 @@ Offset += sizeof(SK_U64); } - /* - * Store used buffer space - */ + /* Store used buffer space. */ *pLen = Offset; return (SK_PNMI_ERR_OK); @@ -2784,10 +2663,7 @@ SK_U32 Val32; SK_U64 Val64; - - /* - * Calculate instance if wished - */ + /* Calculate instance if wished. */ if ((Instance != (SK_U32)(-1))) { if ((Instance < 1) || (Instance > (SK_U32)pAC->I2c.MaxSens)) { @@ -2804,16 +2680,14 @@ Limit = (unsigned int) pAC->I2c.MaxSens; } - /* - * Check action - */ + /* Check action. */ if (Action != SK_PNMI_GET) { *pLen = 0; return (SK_PNMI_ERR_READ_ONLY); } - /* Check length */ + /* Check length. */ switch (Id) { case OID_SKGE_SENSOR_VALUE: @@ -2872,38 +2746,33 @@ break; default: - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR012, - SK_PNMI_ERR012MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR012, SK_PNMI_ERR012MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); } - /* - * Get value - */ + /* Get value. */ for (Offset = 0; Index < Limit; Index ++) { switch (Id) { case OID_SKGE_SENSOR_INDEX: *(pBuf + Offset) = (char)Index; - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_SENSOR_DESCR: Len = SK_STRLEN(pAC->I2c.SenTable[Index].SenDesc); - SK_MEMCPY(pBuf + Offset + 1, - pAC->I2c.SenTable[Index].SenDesc, Len); + SK_MEMCPY(pBuf + Offset + 1, pAC->I2c.SenTable[Index].SenDesc, Len); *(pBuf + Offset) = (char)Len; Offset += Len + 1; break; case OID_SKGE_SENSOR_TYPE: - *(pBuf + Offset) = - (char)pAC->I2c.SenTable[Index].SenType; - Offset += sizeof(char); + *(pBuf + Offset) = (char)pAC->I2c.SenTable[Index].SenType; + Offset ++; break; case OID_SKGE_SENSOR_VALUE: @@ -2940,9 +2809,8 @@ break; case OID_SKGE_SENSOR_STATUS: - *(pBuf + Offset) = - (char)pAC->I2c.SenTable[Index].SenErrFlag; - Offset += sizeof(char); + *(pBuf + Offset) = (char)pAC->I2c.SenTable[Index].SenErrFlag; + Offset ++; break; case OID_SKGE_SENSOR_WAR_CTS: @@ -2979,9 +2847,7 @@ } } - /* - * Store used buffer space - */ + /* Store used buffer space. */ *pLen = Offset; return (SK_PNMI_ERR_OK); @@ -3035,9 +2901,7 @@ int Ret; SK_U32 Val32; - /* - * Get array of all currently stored VPD keys - */ + /* Get array of all currently stored VPD keys. */ Ret = GetVpdKeyArr(pAC, IoC, &KeyArr[0][0], sizeof(KeyArr), &KeyNo); if (Ret != SK_PNMI_ERR_OK) { *pLen = 0; @@ -3082,21 +2946,19 @@ } } - /* - * Get value, if a query should be performed - */ + /* Get value, if a query should be performed. */ if (Action == SK_PNMI_GET) { switch (Id) { case OID_SKGE_VPD_FREE_BYTES: - /* Check length of buffer */ + /* Check length of buffer. */ if (*pLen < sizeof(SK_U32)) { *pLen = sizeof(SK_U32); return (SK_PNMI_ERR_TOO_SHORT); } - /* Get number of free bytes */ + /* Get number of free bytes. */ pVpdStatus = VpdStat(pAC, IoC); if (pVpdStatus == NULL) { @@ -3121,7 +2983,7 @@ break; case OID_SKGE_VPD_ENTRIES_LIST: - /* Check length */ + /* Check length. */ for (Len = 0, Index = 0; Index < KeyNo; Index ++) { Len += SK_STRLEN(KeyArr[Index]) + 1; @@ -3132,7 +2994,7 @@ return (SK_PNMI_ERR_TOO_SHORT); } - /* Get value */ + /* Get value. */ *(pBuf) = (char)Len - 1; for (Offset = 1, Index = 0; Index < KeyNo; Index ++) { @@ -3151,7 +3013,7 @@ break; case OID_SKGE_VPD_ENTRIES_NUMBER: - /* Check length */ + /* Check length. */ if (*pLen < sizeof(SK_U32)) { *pLen = sizeof(SK_U32); @@ -3164,7 +3026,7 @@ break; case OID_SKGE_VPD_KEY: - /* Check buffer length, if it is large enough */ + /* Check buffer length, if it is large enough. */ for (Len = 0, Index = FirstIndex; Index < LastIndex; Index ++) { @@ -3180,31 +3042,27 @@ * Get the key to an intermediate buffer, because * we have to prepend a length byte. */ - for (Offset = 0, Index = FirstIndex; - Index < LastIndex; Index ++) { + for (Offset = 0, Index = FirstIndex; Index < LastIndex; Index ++) { Len = SK_STRLEN(KeyArr[Index]); *(pBuf + Offset) = (char)Len; - SK_MEMCPY(pBuf + Offset + 1, KeyArr[Index], - Len); + SK_MEMCPY(pBuf + Offset + 1, KeyArr[Index], Len); Offset += Len + 1; } *pLen = Offset; break; case OID_SKGE_VPD_VALUE: - /* Check the buffer length if it is large enough */ - for (Offset = 0, Index = FirstIndex; - Index < LastIndex; Index ++) { + /* Check the buffer length if it is large enough. */ + for (Offset = 0, Index = FirstIndex; Index < LastIndex; Index ++) { BufLen = 256; if (VpdRead(pAC, IoC, KeyArr[Index], Buf, (int *)&BufLen) > 0 || BufLen >= SK_PNMI_VPD_DATALEN) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, - SK_PNMI_ERR021, + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR021, SK_PNMI_ERR021MSG); return (SK_PNMI_ERR_GENERAL); @@ -3221,16 +3079,14 @@ * Get the value to an intermediate buffer, because * we have to prepend a length byte. */ - for (Offset = 0, Index = FirstIndex; - Index < LastIndex; Index ++) { + for (Offset = 0, Index = FirstIndex; Index < LastIndex; Index ++) { BufLen = 256; if (VpdRead(pAC, IoC, KeyArr[Index], Buf, (int *)&BufLen) > 0 || BufLen >= SK_PNMI_VPD_DATALEN) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, - SK_PNMI_ERR022, + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR022, SK_PNMI_ERR022MSG); *pLen = 0; @@ -3251,8 +3107,7 @@ return (SK_PNMI_ERR_TOO_SHORT); } - for (Offset = 0, Index = FirstIndex; - Index < LastIndex; Index ++) { + for (Offset = 0, Index = FirstIndex; Index < LastIndex; Index ++) { if (VpdMayWrite(KeyArr[Index])) { @@ -3278,15 +3133,14 @@ break; default: - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR023, - SK_PNMI_ERR023MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR023, SK_PNMI_ERR023MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); } } else { - /* The only OID which can be set is VPD_ACTION */ + /* The only OID which can be set is VPD_ACTION. */ if (Id != OID_SKGE_VPD_ACTION) { if (Id == OID_SKGE_VPD_FREE_BYTES || @@ -3300,8 +3154,7 @@ return (SK_PNMI_ERR_READ_ONLY); } - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR024, - SK_PNMI_ERR024MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR024, SK_PNMI_ERR024MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -3317,14 +3170,11 @@ return (SK_PNMI_ERR_TOO_SHORT); } - /* - * The first byte contains the VPD action type we should - * perform. - */ + /* The first byte contains the VPD action type we should perform. */ switch (*pBuf) { case SK_PNMI_VPD_IGNORE: - /* Nothing to do */ + /* Nothing to do. */ break; case SK_PNMI_VPD_CREATE: @@ -3356,13 +3206,13 @@ SK_MEMCPY(Buf, pBuf + 4, Offset); Buf[Offset] = 0; - /* A preset ends here */ + /* A PRESET ends here. */ if (Action == SK_PNMI_PRESET) { return (SK_PNMI_ERR_OK); } - /* Write the new entry or modify an existing one */ + /* Write the new entry or modify an existing one .*/ Ret = VpdWrite(pAC, IoC, KeyStr, Buf); if (Ret == SK_PNMI_VPD_NOWRITE ) { @@ -3394,7 +3244,7 @@ break; case SK_PNMI_VPD_DELETE: - /* Check if the buffer size is plausible */ + /* Check if the buffer size is plausible. */ if (*pLen < 3) { *pLen = 3; @@ -3409,7 +3259,7 @@ KeyStr[1] = pBuf[2]; KeyStr[2] = 0; - /* Find the passed key in the array */ + /* Find the passed key in the array. */ for (Index = 0; Index < KeyNo; Index ++) { if (SK_STRCMP(KeyStr, KeyArr[Index]) == 0) { @@ -3417,6 +3267,7 @@ break; } } + /* * If we cannot find the key it is wrong, so we * return an appropriate error value. @@ -3432,7 +3283,7 @@ return (SK_PNMI_ERR_OK); } - /* Ok, you wanted it and you will get it */ + /* Ok, you wanted it and you will get it. */ Ret = VpdDelete(pAC, IoC, KeyStr); if (Ret != SK_PNMI_VPD_OK) { @@ -3505,23 +3356,21 @@ SK_U32 Val32; SK_U64 Val64; SK_U64 Val64RxHwErrs = 0; + SK_U64 Val64RxRunt = 0; + SK_U64 Val64RxFcs = 0; SK_U64 Val64TxHwErrs = 0; SK_BOOL Is64BitReq = SK_FALSE; char Buf[256]; int MacType; - /* - * Check instance. We only handle single instance variables. - */ + /* Check instance. We only handle single instance variables. */ if (Instance != (SK_U32)(-1) && Instance != 1) { *pLen = 0; return (SK_PNMI_ERR_UNKNOWN_INST); } - /* - * Check action. We only allow get requests. - */ + /* Check action. We only allow get requests. */ if (Action != SK_PNMI_GET) { *pLen = 0; @@ -3530,9 +3379,7 @@ MacType = pAC->GIni.GIMacType; - /* - * Check length for the various supported OIDs - */ + /* Check length for the various supported OIDs. */ switch (Id) { case OID_GEN_XMIT_ERROR: @@ -3546,14 +3393,12 @@ #else /* SK_NDIS_64BIT_CTR */ - /* - * for compatibility, at least 32bit are required for oid - */ + /* For compatibility, at least 32bit are required for OID. */ if (*pLen < sizeof(SK_U32)) { /* - * but indicate handling for 64bit values, - * if insufficient space is provided - */ + * Indicate handling for 64bit values, + * if insufficient space is provided. + */ *pLen = sizeof(SK_U64); return (SK_PNMI_ERR_TOO_SHORT); } @@ -3624,11 +3469,11 @@ break; default: - /* Checked later */ + /* Checked later. */ break; } - /* Update statistic */ + /* Update statistics. */ if (Id == OID_SKGE_RX_HW_ERROR_CTS || Id == OID_SKGE_TX_HW_ERROR_CTS || Id == OID_SKGE_IN_ERRORS_CTS || @@ -3636,7 +3481,8 @@ Id == OID_GEN_XMIT_ERROR || Id == OID_GEN_RCV_ERROR) { - /* Force the XMAC to update its statistic counters and + /* + * Force the XMAC to update its statistic counters and * Increment semaphore to indicate that an update was * already done. */ @@ -3667,11 +3513,26 @@ GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_IRLENGTH, NetIndex) + GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_SYMBOL, NetIndex) + GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_SHORTS, NetIndex) + - GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_RUNT, NetIndex) + GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_TOO_LONG, NetIndex) + - GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_FCS, NetIndex) + GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_CEXT, NetIndex); - break; + + + /* + * In some cases the runt and fcs counters are incremented when collisions + * occur. We have to correct those counters here. + */ + Val64RxRunt = GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_RUNT, NetIndex); + Val64RxFcs = GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_FCS, NetIndex); + + if (Val64RxRunt > Val64RxFcs) { + Val64RxRunt -= Val64RxFcs; + Val64RxHwErrs += Val64RxRunt; + } + else { + Val64RxFcs -= Val64RxRunt; + Val64RxHwErrs += Val64RxFcs; + } + break; case OID_SKGE_TX_HW_ERROR_CTS: case OID_SKGE_OUT_ERROR_CTS: @@ -3685,9 +3546,7 @@ } } - /* - * Retrieve value - */ + /* Retrieve value. */ switch (Id) { case OID_SKGE_SUPPORTED_LIST: @@ -3697,11 +3556,11 @@ *pLen = Len; return (SK_PNMI_ERR_TOO_SHORT); } - for (Offset = 0, Index = 0; Offset < Len; - Offset += sizeof(SK_U32), Index ++) { + for (Offset = 0, Index = 0; Offset < Len; Index ++) { Val32 = (SK_U32)IdTable[Index].Id; SK_PNMI_STORE_U32(pBuf + Offset, Val32); + Offset += sizeof(SK_U32); } *pLen = Len; break; @@ -3727,8 +3586,7 @@ case OID_SKGE_DRIVER_DESCR: if (pAC->Pnmi.pDriverDescription == NULL) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR007, - SK_PNMI_ERR007MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR007, SK_PNMI_ERR007MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -3737,8 +3595,7 @@ Len = SK_STRLEN(pAC->Pnmi.pDriverDescription) + 1; if (Len > SK_PNMI_STRINGLEN1) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR029, - SK_PNMI_ERR029MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR029, SK_PNMI_ERR029MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -3757,8 +3614,7 @@ case OID_SKGE_DRIVER_VERSION: if (pAC->Pnmi.pDriverVersion == NULL) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR030, - SK_PNMI_ERR030MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR030, SK_PNMI_ERR030MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -3767,8 +3623,7 @@ Len = SK_STRLEN(pAC->Pnmi.pDriverVersion) + 1; if (Len > SK_PNMI_STRINGLEN1) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR031, - SK_PNMI_ERR031MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR031, SK_PNMI_ERR031MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -3787,8 +3642,7 @@ case OID_SKGE_DRIVER_RELDATE: if (pAC->Pnmi.pDriverReleaseDate == NULL) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR030, - SK_PNMI_ERR053MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR053, SK_PNMI_ERR053MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -3797,8 +3651,7 @@ Len = SK_STRLEN(pAC->Pnmi.pDriverReleaseDate) + 1; if (Len > SK_PNMI_STRINGLEN1) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR031, - SK_PNMI_ERR054MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR054, SK_PNMI_ERR054MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -3817,8 +3670,7 @@ case OID_SKGE_DRIVER_FILENAME: if (pAC->Pnmi.pDriverFileName == NULL) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR030, - SK_PNMI_ERR055MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR055, SK_PNMI_ERR055MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -3827,8 +3679,7 @@ Len = SK_STRLEN(pAC->Pnmi.pDriverFileName) + 1; if (Len > SK_PNMI_STRINGLEN1) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR031, - SK_PNMI_ERR056MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR056, SK_PNMI_ERR056MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -3854,8 +3705,7 @@ Len = 256; if (VpdRead(pAC, IoC, VPD_NAME, Buf, (int *)&Len) > 0) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR032, - SK_PNMI_ERR032MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR032, SK_PNMI_ERR032MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -3863,8 +3713,7 @@ Len ++; if (Len > SK_PNMI_STRINGLEN1) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR033, - SK_PNMI_ERR033MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR033, SK_PNMI_ERR033MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -3880,7 +3729,6 @@ break; case OID_SKGE_HW_VERSION: - /* Oh, I love to do some string manipulation */ if (*pLen < 5) { *pLen = 5; @@ -3889,9 +3737,9 @@ Val8 = (SK_U8)pAC->GIni.GIPciHwRev; pBuf[0] = 4; pBuf[1] = 'v'; - pBuf[2] = (char)(0x30 | ((Val8 >> 4) & 0x0F)); + pBuf[2] = (char)('0' | ((Val8 >> 4) & 0x0f)); pBuf[3] = '.'; - pBuf[4] = (char)(0x30 | (Val8 & 0x0F)); + pBuf[4] = (char)('0' | (Val8 & 0x0f)); *pLen = 5; break; @@ -3914,12 +3762,12 @@ break; case OID_SKGE_VAUXAVAIL: - *pBuf = (char) pAC->GIni.GIVauxAvail; + *pBuf = (char)pAC->GIni.GIVauxAvail; *pLen = sizeof(char); break; case OID_SKGE_BUS_TYPE: - *pBuf = (char) SK_PNMI_BUS_PCI; + *pBuf = (char)SK_PNMI_BUS_PCI; *pLen = sizeof(char); break; @@ -3968,31 +3816,31 @@ break; case OID_SKGE_RLMT_MONITOR_NUMBER: -/* XXX Not yet implemented by RLMT therefore we return zero elements */ + /* Not yet implemented by RLMT, therefore we return zero elements. */ Val32 = 0; SK_PNMI_STORE_U32(pBuf, Val32); *pLen = sizeof(SK_U32); break; case OID_SKGE_TX_SW_QUEUE_LEN: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.BufPort[NetIndex].TxSwQueueLen; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.BufPort[0].TxSwQueueLen + pAC->Pnmi.BufPort[1].TxSwQueueLen; } } else { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.Port[NetIndex].TxSwQueueLen; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.Port[0].TxSwQueueLen + pAC->Pnmi.Port[1].TxSwQueueLen; @@ -4004,24 +3852,24 @@ case OID_SKGE_TX_SW_QUEUE_MAX: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.BufPort[NetIndex].TxSwQueueMax; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.BufPort[0].TxSwQueueMax + pAC->Pnmi.BufPort[1].TxSwQueueMax; } } else { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.Port[NetIndex].TxSwQueueMax; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.Port[0].TxSwQueueMax + pAC->Pnmi.Port[1].TxSwQueueMax; @@ -4032,24 +3880,24 @@ break; case OID_SKGE_TX_RETRY: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.BufPort[NetIndex].TxRetryCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.BufPort[0].TxRetryCts + pAC->Pnmi.BufPort[1].TxRetryCts; } } else { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.Port[NetIndex].TxRetryCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.Port[0].TxRetryCts + pAC->Pnmi.Port[1].TxRetryCts; @@ -4060,24 +3908,24 @@ break; case OID_SKGE_RX_INTR_CTS: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.BufPort[NetIndex].RxIntrCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.BufPort[0].RxIntrCts + pAC->Pnmi.BufPort[1].RxIntrCts; } } else { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.Port[NetIndex].RxIntrCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.Port[0].RxIntrCts + pAC->Pnmi.Port[1].RxIntrCts; @@ -4088,24 +3936,24 @@ break; case OID_SKGE_TX_INTR_CTS: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.BufPort[NetIndex].TxIntrCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.BufPort[0].TxIntrCts + pAC->Pnmi.BufPort[1].TxIntrCts; } } else { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.Port[NetIndex].TxIntrCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.Port[0].TxIntrCts + pAC->Pnmi.Port[1].TxIntrCts; @@ -4116,24 +3964,24 @@ break; case OID_SKGE_RX_NO_BUF_CTS: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.BufPort[NetIndex].RxNoBufCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.BufPort[0].RxNoBufCts + pAC->Pnmi.BufPort[1].RxNoBufCts; } } else { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.Port[NetIndex].RxNoBufCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.Port[0].RxNoBufCts + pAC->Pnmi.Port[1].RxNoBufCts; @@ -4144,24 +3992,24 @@ break; case OID_SKGE_TX_NO_BUF_CTS: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.BufPort[NetIndex].TxNoBufCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.BufPort[0].TxNoBufCts + pAC->Pnmi.BufPort[1].TxNoBufCts; } } else { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.Port[NetIndex].TxNoBufCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.Port[0].TxNoBufCts + pAC->Pnmi.Port[1].TxNoBufCts; @@ -4172,24 +4020,24 @@ break; case OID_SKGE_TX_USED_DESCR_NO: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.BufPort[NetIndex].TxUsedDescrNo; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.BufPort[0].TxUsedDescrNo + pAC->Pnmi.BufPort[1].TxUsedDescrNo; } } else { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.Port[NetIndex].TxUsedDescrNo; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.Port[0].TxUsedDescrNo + pAC->Pnmi.Port[1].TxUsedDescrNo; @@ -4200,24 +4048,24 @@ break; case OID_SKGE_RX_DELIVERED_CTS: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.BufPort[NetIndex].RxDeliveredCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.BufPort[0].RxDeliveredCts + pAC->Pnmi.BufPort[1].RxDeliveredCts; } } else { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.Port[NetIndex].RxDeliveredCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.Port[0].RxDeliveredCts + pAC->Pnmi.Port[1].RxDeliveredCts; @@ -4228,24 +4076,24 @@ break; case OID_SKGE_RX_OCTETS_DELIV_CTS: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.BufPort[NetIndex].RxOctetsDeliveredCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.BufPort[0].RxOctetsDeliveredCts + pAC->Pnmi.BufPort[1].RxOctetsDeliveredCts; } } else { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.Port[NetIndex].RxOctetsDeliveredCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.Port[0].RxOctetsDeliveredCts + pAC->Pnmi.Port[1].RxOctetsDeliveredCts; @@ -4266,13 +4114,13 @@ break; case OID_SKGE_IN_ERRORS_CTS: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = Val64RxHwErrs + pAC->Pnmi.BufPort[NetIndex].RxNoBufCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = Val64RxHwErrs + pAC->Pnmi.BufPort[0].RxNoBufCts + @@ -4280,11 +4128,11 @@ } } else { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = Val64RxHwErrs + pAC->Pnmi.Port[NetIndex].RxNoBufCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = Val64RxHwErrs + pAC->Pnmi.Port[0].RxNoBufCts + @@ -4296,13 +4144,13 @@ break; case OID_SKGE_OUT_ERROR_CTS: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = Val64TxHwErrs + pAC->Pnmi.BufPort[NetIndex].TxNoBufCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = Val64TxHwErrs + pAC->Pnmi.BufPort[0].TxNoBufCts + @@ -4310,11 +4158,11 @@ } } else { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = Val64TxHwErrs + pAC->Pnmi.Port[NetIndex].TxNoBufCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = Val64TxHwErrs + pAC->Pnmi.Port[0].TxNoBufCts + @@ -4326,24 +4174,24 @@ break; case OID_SKGE_ERR_RECOVERY_CTS: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.BufPort[NetIndex].ErrRecoveryCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.BufPort[0].ErrRecoveryCts + pAC->Pnmi.BufPort[1].ErrRecoveryCts; } } else { - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { Val64 = pAC->Pnmi.Port[NetIndex].ErrRecoveryCts; } - /* Single net mode */ + /* SingleNet mode. */ else { Val64 = pAC->Pnmi.Port[0].ErrRecoveryCts + pAC->Pnmi.Port[1].ErrRecoveryCts; @@ -4367,7 +4215,7 @@ break; case OID_GEN_RCV_ERROR: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { Val64 = Val64RxHwErrs + pAC->Pnmi.BufPort[NetIndex].RxNoBufCts; } @@ -4376,7 +4224,7 @@ } /* - * by default 32bit values are evaluated + * By default 32bit values are evaluated. */ if (!Is64BitReq) { Val32 = (SK_U32)Val64; @@ -4390,7 +4238,7 @@ break; case OID_GEN_XMIT_ERROR: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { Val64 = Val64TxHwErrs + pAC->Pnmi.BufPort[NetIndex].TxNoBufCts; } @@ -4399,7 +4247,7 @@ } /* - * by default 32bit values are evaluated + * By default 32bit values are evaluated. */ if (!Is64BitReq) { Val32 = (SK_U32)Val64; @@ -4413,16 +4261,19 @@ break; case OID_GEN_RCV_NO_BUFFER: - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { - Val64 = pAC->Pnmi.BufPort[NetIndex].RxNoBufCts; + Val64 = pAC->Pnmi.BufPort[NetIndex].RxNoBufCts + + GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_OVERFLOW, NetIndex); + } else { - Val64 = pAC->Pnmi.Port[NetIndex].RxNoBufCts; + Val64 = pAC->Pnmi.Port[NetIndex].RxNoBufCts + + GetStatVal(pAC, IoC, 0, SK_PNMI_HRX_OVERFLOW, NetIndex); } /* - * by default 32bit values are evaluated + * By default 32bit values are evaluated. */ if (!Is64BitReq) { Val32 = (SK_U32)Val64; @@ -4442,8 +4293,7 @@ break; default: - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR034, - SK_PNMI_ERR034MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR034, SK_PNMI_ERR034MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -4500,25 +4350,17 @@ SK_U32 Val32; SK_U64 Val64; - - /* - * Check instance. Only single instance OIDs are allowed here. - */ + /* Check instance. Only single instance OIDs are allowed here. */ if (Instance != (SK_U32)(-1) && Instance != 1) { *pLen = 0; return (SK_PNMI_ERR_UNKNOWN_INST); } - /* - * Perform the requested action. - */ + /* Perform the requested action. */ if (Action == SK_PNMI_GET) { - /* - * Check if the buffer length is large enough. - */ - + /* Check if the buffer length is large enough. */ switch (Id) { case OID_SKGE_RLMT_MODE: @@ -4551,8 +4393,7 @@ break; default: - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR035, - SK_PNMI_ERR035MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR035, SK_PNMI_ERR035MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -4571,9 +4412,7 @@ } pAC->Pnmi.RlmtUpdatedFlag ++; - /* - * Retrieve Value - */ + /* Retrieve value. */ switch (Id) { case OID_SKGE_RLMT_MODE: @@ -4651,17 +4490,17 @@ pAC->Pnmi.RlmtUpdatedFlag --; } else { - /* Perform a preset or set */ + /* Perform a PRESET or SET. */ switch (Id) { case OID_SKGE_RLMT_MODE: - /* Check if the buffer length is plausible */ + /* Check if the buffer length is plausible. */ if (*pLen < sizeof(char)) { *pLen = sizeof(char); return (SK_PNMI_ERR_TOO_SHORT); } - /* Check if the value range is correct */ + /* Check if the value range is correct. */ if (*pLen != sizeof(char) || (*pBuf & SK_PNMI_RLMT_MODE_CHK_LINK) == 0 || *(SK_U8 *)pBuf > 15) { @@ -4669,21 +4508,21 @@ *pLen = 0; return (SK_PNMI_ERR_BAD_VALUE); } - /* The preset ends here */ + /* The PRESET ends here. */ if (Action == SK_PNMI_PRESET) { *pLen = 0; return (SK_PNMI_ERR_OK); } - /* Send an event to RLMT to change the mode */ + /* Send an event to RLMT to change the mode. */ SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam)); + EventParam.Para32[0] |= (SK_U32)(*pBuf); EventParam.Para32[1] = 0; if (SkRlmtEvent(pAC, IoC, SK_RLMT_MODE_CHANGE, EventParam) > 0) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR037, - SK_PNMI_ERR037MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR037, SK_PNMI_ERR037MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -4691,20 +4530,25 @@ break; case OID_SKGE_RLMT_PORT_PREFERRED: - /* Check if the buffer length is plausible */ + /* PRESET/SET action makes no sense in Dual Net mode. */ + if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { + break; + } + + /* Check if the buffer length is plausible. */ if (*pLen < sizeof(char)) { *pLen = sizeof(char); return (SK_PNMI_ERR_TOO_SHORT); } - /* Check if the value range is correct */ + /* Check if the value range is correct. */ if (*pLen != sizeof(char) || *(SK_U8 *)pBuf > (SK_U8)pAC->GIni.GIMacsFound) { *pLen = 0; return (SK_PNMI_ERR_BAD_VALUE); } - /* The preset ends here */ + /* The PRESET ends here. */ if (Action == SK_PNMI_PRESET) { *pLen = 0; @@ -4717,13 +4561,13 @@ * make the decision which is the preferred port. */ SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam)); + EventParam.Para32[0] = (SK_U32)(*pBuf) - 1; EventParam.Para32[1] = NetIndex; if (SkRlmtEvent(pAC, IoC, SK_RLMT_PREFPORT_CHANGE, EventParam) > 0) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR038, - SK_PNMI_ERR038MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR038, SK_PNMI_ERR038MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -4731,22 +4575,20 @@ break; case OID_SKGE_RLMT_CHANGE_THRES: - /* Check if the buffer length is plausible */ + /* Check if the buffer length is plausible. */ if (*pLen < sizeof(SK_U64)) { *pLen = sizeof(SK_U64); return (SK_PNMI_ERR_TOO_SHORT); } - /* - * There are not many restrictions to the - * value range. - */ + + /* There are not many restrictions to the value range. */ if (*pLen != sizeof(SK_U64)) { *pLen = 0; return (SK_PNMI_ERR_BAD_VALUE); } - /* A preset ends here */ + /* The PRESET ends here. */ if (Action == SK_PNMI_PRESET) { *pLen = 0; @@ -4761,7 +4603,7 @@ break; default: - /* The other OIDs are not be able for set */ + /* The other OIDs are not be able for set. */ *pLen = 0; return (SK_PNMI_ERR_READ_ONLY); } @@ -4806,54 +4648,49 @@ SK_U32 Val32; SK_U64 Val64; - /* - * Calculate the port indexes from the instance. - */ + + /* Calculate the port indexes from the instance. */ PhysPortMax = pAC->GIni.GIMacsFound; if ((Instance != (SK_U32)(-1))) { - /* Check instance range */ + /* Check instance range. */ if ((Instance < 1) || (Instance > PhysPortMax)) { *pLen = 0; return (SK_PNMI_ERR_UNKNOWN_INST); } - /* Single net mode */ + /* SingleNet mode. */ PhysPortIndex = Instance - 1; - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { PhysPortIndex = NetIndex; } - /* Both net modes */ + /* Both net modes. */ Limit = PhysPortIndex + 1; } else { - /* Single net mode */ + /* SingleNet mode. */ PhysPortIndex = 0; Limit = PhysPortMax; - /* Dual net mode */ + /* DualNet mode. */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { PhysPortIndex = NetIndex; Limit = PhysPortIndex + 1; } } - /* - * Currently only get requests are allowed. - */ + /* Currently only GET requests are allowed. */ if (Action != SK_PNMI_GET) { *pLen = 0; return (SK_PNMI_ERR_READ_ONLY); } - /* - * Check if the buffer length is large enough. - */ + /* Check if the buffer length is large enough. */ switch (Id) { case OID_SKGE_RLMT_PORT_INDEX: @@ -4877,8 +4714,7 @@ break; default: - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR039, - SK_PNMI_ERR039MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR039, SK_PNMI_ERR039MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -4896,9 +4732,7 @@ } pAC->Pnmi.RlmtUpdatedFlag ++; - /* - * Get value - */ + /* Get value. */ Offset = 0; for (; PhysPortIndex < Limit; PhysPortIndex ++) { @@ -5011,19 +4845,21 @@ int Ret; SK_EVPARA EventParam; SK_U32 Val32; +#ifdef SK_PHY_LP_MODE + SK_U8 CurrentPhyPowerState; +#endif /* SK_PHY_LP_MODE */ - /* - * Calculate instance if wished. MAC index 0 is the virtual MAC. - */ + + /* Calculate instance if wished. MAC index 0 is the virtual MAC. */ PhysPortMax = pAC->GIni.GIMacsFound; LogPortMax = SK_PNMI_PORT_PHYS2LOG(PhysPortMax); - if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { /* Dual net mode */ + if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { /* DualNet mode. */ LogPortMax--; } - if ((Instance != (SK_U32)(-1))) { /* Only one specific instance is queried */ - /* Check instance range */ + if ((Instance != (SK_U32)(-1))) { /* Only one specific instance is queried. */ + /* Check instance range. */ if ((Instance < 1) || (Instance > LogPortMax)) { *pLen = 0; @@ -5033,18 +4869,16 @@ Limit = LogPortIndex + 1; } - else { /* Instance == (SK_U32)(-1), get all Instances of that OID */ + else { /* Instance == (SK_U32)(-1), get all Instances of that OID. */ LogPortIndex = 0; Limit = LogPortMax; } - /* - * Perform action - */ + /* Perform action. */ if (Action == SK_PNMI_GET) { - /* Check length */ + /* Check length. */ switch (Id) { case OID_SKGE_PMD: @@ -5082,8 +4916,7 @@ break; default: - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR041, - SK_PNMI_ERR041MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR041, SK_PNMI_ERR041MSG); *pLen = 0; return (SK_PNMI_ERR_GENERAL); } @@ -5099,9 +4932,7 @@ } pAC->Pnmi.SirqUpdatedFlag ++; - /* - * Get value - */ + /* Get value. */ Offset = 0; for (; LogPortIndex < Limit; LogPortIndex ++) { @@ -5111,107 +4942,99 @@ case OID_SKGE_PMD: *pBufPtr = pAC->Pnmi.PMD; - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_CONNECTOR: *pBufPtr = pAC->Pnmi.Connector; - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_PHY_TYPE: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { continue; } - else { - /* Get value for physical ports */ - PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( - pAC, LogPortIndex); - Val32 = pAC->GIni.GP[PhysPortIndex].PhyType; - SK_PNMI_STORE_U32(pBufPtr, Val32); - } + /* Get value for physical port. */ + PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC, LogPortIndex); + Val32 = pAC->GIni.GP[PhysPortIndex].PhyType; } - else { /* DualNetMode */ + else { /* DualNet mode. */ Val32 = pAC->GIni.GP[NetIndex].PhyType; - SK_PNMI_STORE_U32(pBufPtr, Val32); } + SK_PNMI_STORE_U32(pBufPtr, Val32); Offset += sizeof(SK_U32); break; #ifdef SK_PHY_LP_MODE case OID_SKGE_PHY_LP_MODE: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { continue; } - else { - /* Get value for physical ports */ - PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC, LogPortIndex); - Val8 = (SK_U8) pAC->GIni.GP[PhysPortIndex].PPhyPowerState; - *pBufPtr = Val8; - } + /* Get value for physical port. */ + PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC, LogPortIndex); + *pBufPtr = (SK_U8)pAC->GIni.GP[PhysPortIndex].PPhyPowerState; } - else { /* DualNetMode */ + else { /* DualNet mode. */ - Val8 = (SK_U8) pAC->GIni.GP[PhysPortIndex].PPhyPowerState; - *pBufPtr = Val8; + *pBufPtr = (SK_U8)pAC->GIni.GP[NetIndex].PPhyPowerState; } Offset += sizeof(SK_U8); break; #endif case OID_SKGE_LINK_CAP: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { - /* Get value for virtual port */ + /* Get value for virtual port. */ VirtualConf(pAC, IoC, Id, pBufPtr); } else { - /* Get value for physical ports */ + /* Get value for physical port. */ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( pAC, LogPortIndex); *pBufPtr = pAC->GIni.GP[PhysPortIndex].PLinkCap; } } - else { /* DualNetMode */ + else { /* DualNet mode. */ *pBufPtr = pAC->GIni.GP[NetIndex].PLinkCap; } - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_LINK_MODE: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { - /* Get value for virtual port */ + /* Get value for virtual port. */ VirtualConf(pAC, IoC, Id, pBufPtr); } else { - /* Get value for physical ports */ + /* Get value for physical port. */ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( pAC, LogPortIndex); *pBufPtr = pAC->GIni.GP[PhysPortIndex].PLinkModeConf; } } - else { /* DualNetMode */ + else { /* DualNet mode. */ *pBufPtr = pAC->GIni.GP[NetIndex].PLinkModeConf; } - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_LINK_MODE_STATUS: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { - /* Get value for virtual port */ + /* Get value for virtual port. */ VirtualConf(pAC, IoC, Id, pBufPtr); } else { - /* Get value for physical port */ + /* Get value for physical port. */ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( pAC, LogPortIndex); @@ -5219,147 +5042,147 @@ CalculateLinkModeStatus(pAC, IoC, PhysPortIndex); } } - else { /* DualNetMode */ + else { /* DualNet mode. */ *pBufPtr = CalculateLinkModeStatus(pAC, IoC, NetIndex); } - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_LINK_STATUS: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { - /* Get value for virtual port */ + /* Get value for virtual port. */ VirtualConf(pAC, IoC, Id, pBufPtr); } else { - /* Get value for physical ports */ + /* Get value for physical port. */ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( pAC, LogPortIndex); *pBufPtr = CalculateLinkStatus(pAC, IoC, PhysPortIndex); } } - else { /* DualNetMode */ + else { /* DualNet mode. */ *pBufPtr = CalculateLinkStatus(pAC, IoC, NetIndex); } - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_FLOWCTRL_CAP: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { - /* Get value for virtual port */ + /* Get value for virtual port. */ VirtualConf(pAC, IoC, Id, pBufPtr); } else { - /* Get value for physical ports */ + /* Get value for physical port. */ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( pAC, LogPortIndex); *pBufPtr = pAC->GIni.GP[PhysPortIndex].PFlowCtrlCap; } } - else { /* DualNetMode */ + else { /* DualNet mode. */ *pBufPtr = pAC->GIni.GP[NetIndex].PFlowCtrlCap; } - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_FLOWCTRL_MODE: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { - /* Get value for virtual port */ + /* Get value for virtual port. */ VirtualConf(pAC, IoC, Id, pBufPtr); } else { - /* Get value for physical port */ + /* Get value for physical port. */ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( pAC, LogPortIndex); *pBufPtr = pAC->GIni.GP[PhysPortIndex].PFlowCtrlMode; } } - else { /* DualNetMode */ + else { /* DualNet mode. */ *pBufPtr = pAC->GIni.GP[NetIndex].PFlowCtrlMode; } - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_FLOWCTRL_STATUS: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { - /* Get value for virtual port */ + /* Get value for virtual port. */ VirtualConf(pAC, IoC, Id, pBufPtr); } else { - /* Get value for physical port */ + /* Get value for physical port. */ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( pAC, LogPortIndex); *pBufPtr = pAC->GIni.GP[PhysPortIndex].PFlowCtrlStatus; } } - else { /* DualNetMode */ + else { /* DualNet mode. */ *pBufPtr = pAC->GIni.GP[NetIndex].PFlowCtrlStatus; } - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_PHY_OPERATION_CAP: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet Mode. */ if (LogPortIndex == 0) { - /* Get value for virtual port */ + /* Get value for virtual port. */ VirtualConf(pAC, IoC, Id, pBufPtr); } else { - /* Get value for physical ports */ + /* Get value for physical port. */ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( pAC, LogPortIndex); *pBufPtr = pAC->GIni.GP[PhysPortIndex].PMSCap; } } - else { /* DualNetMode */ + else { /* DualNet mode. */ *pBufPtr = pAC->GIni.GP[NetIndex].PMSCap; } - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_PHY_OPERATION_MODE: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { - /* Get value for virtual port */ + /* Get value for virtual port. */ VirtualConf(pAC, IoC, Id, pBufPtr); } else { - /* Get value for physical port */ + /* Get value for physical port. */ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( pAC, LogPortIndex); *pBufPtr = pAC->GIni.GP[PhysPortIndex].PMSMode; } } - else { /* DualNetMode */ + else { /* DualNet mode. */ *pBufPtr = pAC->GIni.GP[NetIndex].PMSMode; } - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_PHY_OPERATION_STATUS: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { - /* Get value for virtual port */ + /* Get value for virtual port. */ VirtualConf(pAC, IoC, Id, pBufPtr); } else { - /* Get value for physical port */ + /* Get value for physical port. */ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( pAC, LogPortIndex); @@ -5370,70 +5193,70 @@ *pBufPtr = pAC->GIni.GP[NetIndex].PMSStatus; } - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_SPEED_CAP: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { - /* Get value for virtual port */ + /* Get value for virtual port. */ VirtualConf(pAC, IoC, Id, pBufPtr); } else { - /* Get value for physical ports */ + /* Get value for physical port. */ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( pAC, LogPortIndex); *pBufPtr = pAC->GIni.GP[PhysPortIndex].PLinkSpeedCap; } } - else { /* DualNetMode */ + else { /* DualNet mode. */ *pBufPtr = pAC->GIni.GP[NetIndex].PLinkSpeedCap; } - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_SPEED_MODE: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { - /* Get value for virtual port */ + /* Get value for virtual port. */ VirtualConf(pAC, IoC, Id, pBufPtr); } else { - /* Get value for physical port */ + /* Get value for physical port. */ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( pAC, LogPortIndex); *pBufPtr = pAC->GIni.GP[PhysPortIndex].PLinkSpeed; } } - else { /* DualNetMode */ + else { /* DualNet mode. */ *pBufPtr = pAC->GIni.GP[NetIndex].PLinkSpeed; } - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_SPEED_STATUS: - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { - /* Get value for virtual port */ + /* Get value for virtual port. */ VirtualConf(pAC, IoC, Id, pBufPtr); } else { - /* Get value for physical port */ + /* Get value for physical port. */ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS( pAC, LogPortIndex); *pBufPtr = pAC->GIni.GP[PhysPortIndex].PLinkSpeedUsed; } } - else { /* DualNetMode */ + else { /* DualNet mode. */ *pBufPtr = pAC->GIni.GP[NetIndex].PLinkSpeedUsed; } - Offset += sizeof(char); + Offset ++; break; case OID_SKGE_MTU: @@ -5486,40 +5309,33 @@ return (SK_PNMI_ERR_TOO_SHORT); } break; -#endif +#endif /* SK_PHY_LP_MODE */ case OID_SKGE_MTU: - if (*pLen < sizeof(SK_U32)) { + if (*pLen < (Limit - LogPortIndex) * sizeof(SK_U32)) { - *pLen = sizeof(SK_U32); + *pLen = (Limit - LogPortIndex) * sizeof(SK_U32); return (SK_PNMI_ERR_TOO_SHORT); } - if (*pLen != sizeof(SK_U32)) { - - *pLen = 0; - return (SK_PNMI_ERR_BAD_VALUE); - } break; - + default: *pLen = 0; return (SK_PNMI_ERR_READ_ONLY); } - /* - * Perform preset or set - */ + /* Perform PRESET or SET. */ Offset = 0; for (; LogPortIndex < Limit; LogPortIndex ++) { + Val8 = *(pBuf + Offset); + switch (Id) { case OID_SKGE_LINK_MODE: - /* Check the value range */ - Val8 = *(pBuf + Offset); + /* Check the value range. */ if (Val8 == 0) { - - Offset += sizeof(char); + Offset++; break; } if (Val8 < SK_LMODE_HALF || @@ -5530,51 +5346,68 @@ return (SK_PNMI_ERR_BAD_VALUE); } - /* The preset ends here */ + /* The PRESET ends here. */ if (Action == SK_PNMI_PRESET) { return (SK_PNMI_ERR_OK); } - if (LogPortIndex == 0) { - - /* - * The virtual port consists of all currently - * active ports. Find them and send an event - * with the new link mode to SIRQ. - */ - for (PhysPortIndex = 0; - PhysPortIndex < PhysPortMax; - PhysPortIndex ++) { - - if (!pAC->Pnmi.Port[PhysPortIndex]. - ActiveFlag) { - - continue; - } + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ + if (LogPortIndex == 0) { + /* + * The virtual port consists of all currently + * active ports. Find them and send an event + * with the new link mode to SIRQ. + */ + for (PhysPortIndex = 0; PhysPortIndex < PhysPortMax; + PhysPortIndex ++) { - EventParam.Para32[0] = PhysPortIndex; + if (!pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) { + continue; + } + + EventParam.Para32[0] = PhysPortIndex; + EventParam.Para32[1] = (SK_U32)Val8; + if (SkGeSirqEvent(pAC, IoC, + SK_HWEV_SET_LMODE, + EventParam) > 0) { + + SK_ERR_LOG(pAC, SK_ERRCL_SW, + SK_PNMI_ERR043, + SK_PNMI_ERR043MSG); + + *pLen = 0; + return (SK_PNMI_ERR_GENERAL); + } + } /* for */ + } + else { + /* + * Send an event with the new link mode to + * the SIRQ module. + */ + EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS( + pAC, LogPortIndex); EventParam.Para32[1] = (SK_U32)Val8; - if (SkGeSirqEvent(pAC, IoC, - SK_HWEV_SET_LMODE, + if (SkGeSirqEvent(pAC, IoC, SK_HWEV_SET_LMODE, EventParam) > 0) { - + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR043, SK_PNMI_ERR043MSG); - + *pLen = 0; return (SK_PNMI_ERR_GENERAL); } } } - else { + else { /* DualNet mode. */ + /* * Send an event with the new link mode to * the SIRQ module. */ - EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS( - pAC, LogPortIndex); + EventParam.Para32[0] = NetIndex; EventParam.Para32[1] = (SK_U32)Val8; if (SkGeSirqEvent(pAC, IoC, SK_HWEV_SET_LMODE, EventParam) > 0) { @@ -5587,15 +5420,13 @@ return (SK_PNMI_ERR_GENERAL); } } - Offset += sizeof(char); + Offset++; break; case OID_SKGE_FLOWCTRL_MODE: - /* Check the value range */ - Val8 = *(pBuf + Offset); + /* Check the value range. */ if (Val8 == 0) { - - Offset += sizeof(char); + Offset++; break; } if (Val8 < SK_FLOW_MODE_NONE || @@ -5606,30 +5437,48 @@ return (SK_PNMI_ERR_BAD_VALUE); } - /* The preset ends here */ + /* The PRESET ends here. */ if (Action == SK_PNMI_PRESET) { return (SK_PNMI_ERR_OK); } - if (LogPortIndex == 0) { + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ + if (LogPortIndex == 0) { + /* + * The virtual port consists of all currently + * active ports. Find them and send an event + * with the new flow control mode to SIRQ. + */ + for (PhysPortIndex = 0; PhysPortIndex < PhysPortMax; + PhysPortIndex ++) { - /* - * The virtual port consists of all currently - * active ports. Find them and send an event - * with the new flow control mode to SIRQ. - */ - for (PhysPortIndex = 0; - PhysPortIndex < PhysPortMax; - PhysPortIndex ++) { + if (!pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) { + continue; + } - if (!pAC->Pnmi.Port[PhysPortIndex]. - ActiveFlag) { + EventParam.Para32[0] = PhysPortIndex; + EventParam.Para32[1] = (SK_U32)Val8; + if (SkGeSirqEvent(pAC, IoC, + SK_HWEV_SET_FLOWMODE, + EventParam) > 0) { + + SK_ERR_LOG(pAC, SK_ERRCL_SW, + SK_PNMI_ERR044, + SK_PNMI_ERR044MSG); - continue; + *pLen = 0; + return (SK_PNMI_ERR_GENERAL); + } } - - EventParam.Para32[0] = PhysPortIndex; + } + else { + /* + * Send an event with the new flow control + * mode to the SIRQ module. + */ + EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS( + pAC, LogPortIndex); EventParam.Para32[1] = (SK_U32)Val8; if (SkGeSirqEvent(pAC, IoC, SK_HWEV_SET_FLOWMODE, @@ -5644,17 +5493,16 @@ } } } - else { + else { /* DualNet mode. */ + /* - * Send an event with the new flow control - * mode to the SIRQ module. + * Send an event with the new link mode to + * the SIRQ module. */ - EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS( - pAC, LogPortIndex); + EventParam.Para32[0] = NetIndex; EventParam.Para32[1] = (SK_U32)Val8; - if (SkGeSirqEvent(pAC, IoC, - SK_HWEV_SET_FLOWMODE, EventParam) - > 0) { + if (SkGeSirqEvent(pAC, IoC, SK_HWEV_SET_FLOWMODE, + EventParam) > 0) { SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR044, @@ -5664,15 +5512,14 @@ return (SK_PNMI_ERR_GENERAL); } } - Offset += sizeof(char); + Offset++; break; case OID_SKGE_PHY_OPERATION_MODE : - /* Check the value range */ - Val8 = *(pBuf + Offset); + /* Check the value range. */ if (Val8 == 0) { - /* mode of this port remains unchanged */ - Offset += sizeof(char); + /* Mode of this port remains unchanged. */ + Offset++; break; } if (Val8 < SK_MS_MODE_AUTO || @@ -5683,34 +5530,51 @@ return (SK_PNMI_ERR_BAD_VALUE); } - /* The preset ends here */ + /* The PRESET ends here. */ if (Action == SK_PNMI_PRESET) { return (SK_PNMI_ERR_OK); } - if (LogPortIndex == 0) { + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ + if (LogPortIndex == 0) { + /* + * The virtual port consists of all currently + * active ports. Find them and send an event + * with new master/slave (role) mode to SIRQ. + */ + for (PhysPortIndex = 0; PhysPortIndex < PhysPortMax; + PhysPortIndex ++) { - /* - * The virtual port consists of all currently - * active ports. Find them and send an event - * with new master/slave (role) mode to SIRQ. - */ - for (PhysPortIndex = 0; - PhysPortIndex < PhysPortMax; - PhysPortIndex ++) { + if (!pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) { + continue; + } - if (!pAC->Pnmi.Port[PhysPortIndex]. - ActiveFlag) { + EventParam.Para32[0] = PhysPortIndex; + EventParam.Para32[1] = (SK_U32)Val8; + if (SkGeSirqEvent(pAC, IoC, + SK_HWEV_SET_ROLE, + EventParam) > 0) { + + SK_ERR_LOG(pAC, SK_ERRCL_SW, + SK_PNMI_ERR042, + SK_PNMI_ERR042MSG); - continue; + *pLen = 0; + return (SK_PNMI_ERR_GENERAL); + } } - - EventParam.Para32[0] = PhysPortIndex; + } + else { + /* + * Send an event with the new master/slave + * (role) mode to the SIRQ module. + */ + EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS( + pAC, LogPortIndex); EventParam.Para32[1] = (SK_U32)Val8; if (SkGeSirqEvent(pAC, IoC, - SK_HWEV_SET_ROLE, - EventParam) > 0) { + SK_HWEV_SET_ROLE, EventParam) > 0) { SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR042, @@ -5721,16 +5585,16 @@ } } } - else { + else { /* DualNet mode. */ + /* - * Send an event with the new master/slave - * (role) mode to the SIRQ module. + * Send an event with the new link mode to + * the SIRQ module. */ - EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS( - pAC, LogPortIndex); + EventParam.Para32[0] = NetIndex; EventParam.Para32[1] = (SK_U32)Val8; - if (SkGeSirqEvent(pAC, IoC, - SK_HWEV_SET_ROLE, EventParam) > 0) { + if (SkGeSirqEvent(pAC, IoC, SK_HWEV_SET_ROLE, + EventParam) > 0) { SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR042, @@ -5740,16 +5604,13 @@ return (SK_PNMI_ERR_GENERAL); } } - - Offset += sizeof(char); + Offset++; break; case OID_SKGE_SPEED_MODE: - /* Check the value range */ - Val8 = *(pBuf + Offset); + /* Check the value range. */ if (Val8 == 0) { - - Offset += sizeof(char); + Offset++; break; } if (Val8 < (SK_LSPEED_AUTO) || @@ -5760,29 +5621,49 @@ return (SK_PNMI_ERR_BAD_VALUE); } - /* The preset ends here */ + /* The PRESET ends here. */ if (Action == SK_PNMI_PRESET) { return (SK_PNMI_ERR_OK); } - if (LogPortIndex == 0) { + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ + if (LogPortIndex == 0) { - /* - * The virtual port consists of all currently - * active ports. Find them and send an event - * with the new flow control mode to SIRQ. - */ - for (PhysPortIndex = 0; - PhysPortIndex < PhysPortMax; - PhysPortIndex ++) { + /* + * The virtual port consists of all currently + * active ports. Find them and send an event + * with the new flow control mode to SIRQ. + */ + for (PhysPortIndex = 0; PhysPortIndex < PhysPortMax; + PhysPortIndex ++) { - if (!pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) { + if (!pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) { + continue; + } - continue; - } + EventParam.Para32[0] = PhysPortIndex; + EventParam.Para32[1] = (SK_U32)Val8; + if (SkGeSirqEvent(pAC, IoC, + SK_HWEV_SET_SPEED, + EventParam) > 0) { + + SK_ERR_LOG(pAC, SK_ERRCL_SW, + SK_PNMI_ERR045, + SK_PNMI_ERR045MSG); - EventParam.Para32[0] = PhysPortIndex; + *pLen = 0; + return (SK_PNMI_ERR_GENERAL); + } + } + } + else { + /* + * Send an event with the new flow control + * mode to the SIRQ module. + */ + EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS( + pAC, LogPortIndex); EventParam.Para32[1] = (SK_U32)Val8; if (SkGeSirqEvent(pAC, IoC, SK_HWEV_SET_SPEED, @@ -5797,16 +5678,15 @@ } } } - else { + else { /* DualNet mode. */ + /* - * Send an event with the new flow control - * mode to the SIRQ module. + * Send an event with the new link mode to + * the SIRQ module. */ - EventParam.Para32[0] = SK_PNMI_PORT_LOG2PHYS( - pAC, LogPortIndex); + EventParam.Para32[0] = NetIndex; EventParam.Para32[1] = (SK_U32)Val8; - if (SkGeSirqEvent(pAC, IoC, - SK_HWEV_SET_SPEED, + if (SkGeSirqEvent(pAC, IoC, SK_HWEV_SET_SPEED, EventParam) > 0) { SK_ERR_LOG(pAC, SK_ERRCL_SW, @@ -5817,23 +5697,25 @@ return (SK_PNMI_ERR_GENERAL); } } - Offset += sizeof(char); + Offset++; break; - case OID_SKGE_MTU : - /* Check the value range */ - Val32 = *(SK_U32*)(pBuf + Offset); + case OID_SKGE_MTU: + /* Check the value range. */ + SK_PNMI_READ_U32((pBuf + Offset), Val32); + if (Val32 == 0) { - /* mtu of this port remains unchanged */ + /* MTU of this port remains unchanged. */ Offset += sizeof(SK_U32); break; } + if (SK_DRIVER_PRESET_MTU(pAC, IoC, NetIndex, Val32) != 0) { *pLen = 0; return (SK_PNMI_ERR_BAD_VALUE); } - /* The preset ends here */ + /* The PRESET ends here. */ if (Action == SK_PNMI_PRESET) { return (SK_PNMI_ERR_OK); } @@ -5844,116 +5726,69 @@ Offset += sizeof(SK_U32); break; - + #ifdef SK_PHY_LP_MODE case OID_SKGE_PHY_LP_MODE: - /* The preset ends here */ + /* The PRESET ends here. */ if (Action == SK_PNMI_PRESET) { return (SK_PNMI_ERR_OK); } - if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNetMode */ + if (!pAC->Pnmi.DualNetActiveFlag) { /* SingleNet mode. */ if (LogPortIndex == 0) { Offset = 0; continue; } - else { - /* Set value for physical ports */ - PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC, LogPortIndex); - - switch (*(pBuf + Offset)) { - case 0: - /* If LowPowerMode is active, we can leave it. */ - if (pAC->GIni.GP[PhysPortIndex].PPhyPowerState) { - - Val32 = SkGmLeaveLowPowerMode(pAC, IoC, PhysPortIndex); - - if (pAC->GIni.GP[PhysPortIndex].PPhyPowerState < 3) { - - SkDrvInitAdapter(pAC); - } - break; - } - else { - *pLen = 0; - return (SK_PNMI_ERR_GENERAL); - } - case 1: - case 2: - case 3: - case 4: - /* If no LowPowerMode is active, we can enter it. */ - if (!pAC->GIni.GP[PhysPortIndex].PPhyPowerState) { - - if ((*(pBuf + Offset)) < 3) { - - SkDrvDeInitAdapter(pAC); - } - - Val32 = SkGmEnterLowPowerMode(pAC, IoC, PhysPortIndex, *pBuf); - break; - } - else { - *pLen = 0; - return (SK_PNMI_ERR_GENERAL); - } - default: - *pLen = 0; - return (SK_PNMI_ERR_BAD_VALUE); - } - } } - else { /* DualNetMode */ - - switch (*(pBuf + Offset)) { - case 0: - /* If we are in a LowPowerMode, we can leave it. */ - if (pAC->GIni.GP[PhysPortIndex].PPhyPowerState) { + /* Set value for physical port. */ + PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC, LogPortIndex); + CurrentPhyPowerState = pAC->GIni.GP[PhysPortIndex].PPhyPowerState; - Val32 = SkGmLeaveLowPowerMode(pAC, IoC, PhysPortIndex); - - if (pAC->GIni.GP[PhysPortIndex].PPhyPowerState < 3) { + switch (Val8) { + case PHY_PM_OPERATIONAL_MODE: + /* If LowPowerMode is active, we can leave it. */ + if (CurrentPhyPowerState) { - SkDrvInitAdapter(pAC); - } - break; - } - else { - *pLen = 0; - return (SK_PNMI_ERR_GENERAL); - } - - case 1: - case 2: - case 3: - case 4: - /* If we are not already in LowPowerMode, we can enter it. */ - if (!pAC->GIni.GP[PhysPortIndex].PPhyPowerState) { - - if ((*(pBuf + Offset)) < 3) { - - SkDrvDeInitAdapter(pAC); - } - else { - - Val32 = SkGmEnterLowPowerMode(pAC, IoC, PhysPortIndex, *pBuf); - } - break; - } - else { - *pLen = 0; - return (SK_PNMI_ERR_GENERAL); + Val32 = SkGmLeaveLowPowerMode(pAC, IoC, PhysPortIndex); + + if ((CurrentPhyPowerState == PHY_PM_DEEP_SLEEP) || + (CurrentPhyPowerState == PHY_PM_IEEE_POWER_DOWN)) { + + SkDrvInitAdapter(pAC); } - - default: + break; + } + else { *pLen = 0; - return (SK_PNMI_ERR_BAD_VALUE); - } + return (SK_PNMI_ERR_GENERAL); + } + case PHY_PM_DEEP_SLEEP: + case PHY_PM_IEEE_POWER_DOWN: + /* If no LowPowerMode is active, we can enter it. */ + if (!CurrentPhyPowerState) { + SkDrvDeInitAdapter(pAC); + } + + case PHY_PM_ENERGY_DETECT: + case PHY_PM_ENERGY_DETECT_PLUS: + /* If no LowPowerMode is active, we can enter it. */ + if (!CurrentPhyPowerState) { + + Val32 = SkGmEnterLowPowerMode(pAC, IoC, PhysPortIndex, *pBuf); + break; + } + else { + *pLen = 0; + return (SK_PNMI_ERR_GENERAL); + } + default: + *pLen = 0; + return (SK_PNMI_ERR_BAD_VALUE); } - Offset += sizeof(SK_U8); + Offset++; break; -#endif +#endif /* SK_PHY_LP_MODE */ default: SK_DBG_MSG(pAC, SK_DBGMOD_PNMI, SK_DBGCAT_ERR, @@ -6003,14 +5838,11 @@ unsigned int Limit; unsigned int Offset; unsigned int Entries; - - /* - * Calculate instance if wished. - */ - /* XXX Not yet implemented. Return always an empty table. */ + /* Not implemented yet. Return always an empty table. */ Entries = 0; + /* Calculate instance if wished. */ if ((Instance != (SK_U32)(-1))) { if ((Instance < 1) || (Instance > Entries)) { @@ -6027,12 +5859,10 @@ Limit = Entries; } - /* - * Get/Set value - */ + /* GET/SET value. */ if (Action == SK_PNMI_GET) { - for (Offset=0; Index < Limit; Index ++) { + for (Offset = 0; Index < Limit; Index ++) { switch (Id) { @@ -6054,32 +5884,29 @@ *pLen = Offset; } else { - /* Only MONITOR_ADMIN can be set */ + /* Only MONITOR_ADMIN can be set. */ if (Id != OID_SKGE_RLMT_MONITOR_ADMIN) { *pLen = 0; return (SK_PNMI_ERR_READ_ONLY); } - /* Check if the length is plausible */ + /* Check if the length is plausible. */ if (*pLen < (Limit - Index)) { return (SK_PNMI_ERR_TOO_SHORT); } - /* Okay, we have a wide value range */ + /* Okay, we have a wide value range. */ if (*pLen != (Limit - Index)) { *pLen = 0; return (SK_PNMI_ERR_BAD_VALUE); } -/* - for (Offset=0; Index < Limit; Index ++) { - } -*/ -/* - * XXX Not yet implemented. Return always BAD_VALUE, because the table - * is empty. - */ + + /* + * Not yet implemented. Return always BAD_VALUE, + * because the table is empty. + */ *pLen = 0; return (SK_PNMI_ERR_BAD_VALUE); } @@ -6120,14 +5947,12 @@ PortActiveFlag = SK_FALSE; PhysPortMax = pAC->GIni.GIMacsFound; - for (PhysPortIndex = 0; PhysPortIndex < PhysPortMax; - PhysPortIndex ++) { + for (PhysPortIndex = 0; PhysPortIndex < PhysPortMax; PhysPortIndex ++) { pPrt = &pAC->GIni.GP[PhysPortIndex]; - /* Check if the physical port is active */ + /* Check if the physical port is active. */ if (!pAC->Pnmi.Port[PhysPortIndex].ActiveFlag) { - continue; } @@ -6136,12 +5961,13 @@ switch (Id) { case OID_SKGE_PHY_TYPE: - /* Check if it is the first active port */ + /* Check if it is the first active port. */ if (*pBuf == 0) { Val32 = pPrt->PhyType; SK_PNMI_STORE_U32(pBuf, Val32); continue; } + break; case OID_SKGE_LINK_CAP: @@ -6155,7 +5981,7 @@ break; case OID_SKGE_LINK_MODE: - /* Check if it is the first active port */ + /* Check if it is the first active port. */ if (*pBuf == 0) { *pBuf = pPrt->PLinkModeConf; @@ -6163,9 +5989,8 @@ } /* - * If we find an active port with a different link - * mode than the first one we return a value that - * indicates that the link mode is indeterminated. + * If we find an active port with a different link mode + * than the first one we return indeterminated. */ if (*pBuf != pPrt->PLinkModeConf) { @@ -6174,10 +5999,10 @@ break; case OID_SKGE_LINK_MODE_STATUS: - /* Get the link mode of the physical port */ + /* Get the link mode of the physical port. */ Val8 = CalculateLinkModeStatus(pAC, IoC, PhysPortIndex); - /* Check if it is the first active port */ + /* Check if it is the first active port. */ if (*pBuf == 0) { *pBuf = Val8; @@ -6185,10 +6010,8 @@ } /* - * If we find an active port with a different link - * mode status than the first one we return a value - * that indicates that the link mode status is - * indeterminated. + * If we find an active port with a different link mode status + * than the first one we return indeterminated. */ if (*pBuf != Val8) { @@ -6197,10 +6020,10 @@ break; case OID_SKGE_LINK_STATUS: - /* Get the link status of the physical port */ + /* Get the link status of the physical port. */ Val8 = CalculateLinkStatus(pAC, IoC, PhysPortIndex); - /* Check if it is the first active port */ + /* Check if it is the first active port. */ if (*pBuf == 0) { *pBuf = Val8; @@ -6208,10 +6031,8 @@ } /* - * If we find an active port with a different link - * status than the first one, we return a value - * that indicates that the link status is - * indeterminated. + * If we find an active port with a different link status + * than the first one we return indeterminated. */ if (*pBuf != Val8) { @@ -6220,7 +6041,7 @@ break; case OID_SKGE_FLOWCTRL_CAP: - /* Check if it is the first active port */ + /* Check if it is the first active port. */ if (*pBuf == 0) { *pBuf = pPrt->PFlowCtrlCap; @@ -6235,7 +6056,7 @@ break; case OID_SKGE_FLOWCTRL_MODE: - /* Check if it is the first active port */ + /* Check if it is the first active port. */ if (*pBuf == 0) { *pBuf = pPrt->PFlowCtrlMode; @@ -6243,9 +6064,8 @@ } /* - * If we find an active port with a different flow - * control mode than the first one, we return a value - * that indicates that the mode is indeterminated. + * If we find an active port with a different flow-control mode + * than the first one we return indeterminated. */ if (*pBuf != pPrt->PFlowCtrlMode) { @@ -6254,7 +6074,7 @@ break; case OID_SKGE_FLOWCTRL_STATUS: - /* Check if it is the first active port */ + /* Check if it is the first active port. */ if (*pBuf == 0) { *pBuf = pPrt->PFlowCtrlStatus; @@ -6262,10 +6082,8 @@ } /* - * If we find an active port with a different flow - * control status than the first one, we return a - * value that indicates that the status is - * indeterminated. + * If we find an active port with a different flow-control status + * than the first one we return indeterminated. */ if (*pBuf != pPrt->PFlowCtrlStatus) { @@ -6274,7 +6092,7 @@ break; case OID_SKGE_PHY_OPERATION_CAP: - /* Check if it is the first active port */ + /* Check if it is the first active port. */ if (*pBuf == 0) { *pBuf = pPrt->PMSCap; @@ -6289,7 +6107,7 @@ break; case OID_SKGE_PHY_OPERATION_MODE: - /* Check if it is the first active port */ + /* Check if it is the first active port. */ if (*pBuf == 0) { *pBuf = pPrt->PMSMode; @@ -6297,9 +6115,8 @@ } /* - * If we find an active port with a different master/ - * slave mode than the first one, we return a value - * that indicates that the mode is indeterminated. + * If we find an active port with a different master/slave mode + * than the first one we return indeterminated. */ if (*pBuf != pPrt->PMSMode) { @@ -6308,7 +6125,7 @@ break; case OID_SKGE_PHY_OPERATION_STATUS: - /* Check if it is the first active port */ + /* Check if it is the first active port. */ if (*pBuf == 0) { *pBuf = pPrt->PMSStatus; @@ -6316,10 +6133,8 @@ } /* - * If we find an active port with a different master/ - * slave status than the first one, we return a - * value that indicates that the status is - * indeterminated. + * If we find an active port with a different master/slave status + * than the first one we return indeterminated. */ if (*pBuf != pPrt->PMSStatus) { @@ -6328,7 +6143,7 @@ break; case OID_SKGE_SPEED_MODE: - /* Check if it is the first active port */ + /* Check if it is the first active port. */ if (*pBuf == 0) { *pBuf = pPrt->PLinkSpeed; @@ -6336,9 +6151,8 @@ } /* - * If we find an active port with a different flow - * control mode than the first one, we return a value - * that indicates that the mode is indeterminated. + * If we find an active port with a different link speed + * than the first one we return indeterminated. */ if (*pBuf != pPrt->PLinkSpeed) { @@ -6347,7 +6161,7 @@ break; case OID_SKGE_SPEED_STATUS: - /* Check if it is the first active port */ + /* Check if it is the first active port. */ if (*pBuf == 0) { *pBuf = pPrt->PLinkSpeedUsed; @@ -6355,10 +6169,8 @@ } /* - * If we find an active port with a different flow - * control status than the first one, we return a - * value that indicates that the status is - * indeterminated. + * If we find an active port with a different link speed used + * than the first one we return indeterminated. */ if (*pBuf != pPrt->PLinkSpeedUsed) { @@ -6368,9 +6180,7 @@ } } - /* - * If no port is active return an indeterminated answer - */ + /* If no port is active return an indeterminated answer. */ if (!PortActiveFlag) { switch (Id) { @@ -6473,7 +6283,7 @@ * * Description: * The COMMON module only tells us if the mode is half or full duplex. - * But in the decade of auto sensing it is useful for the user to + * But in the decade of auto sensing it is usefull for the user to * know if the mode was negotiated or forced. Therefore we have a * look to the mode, which was last used by the negotiation process. * @@ -6487,16 +6297,15 @@ { SK_U8 Result; - /* Get the current mode, which can be full or half duplex */ + /* Get the current mode, which can be full or half duplex. */ Result = pAC->GIni.GP[PhysPortIndex].PLinkModeStatus; - /* Check if no valid mode could be found (link is down) */ + /* Check if no valid mode could be found (link is down). */ if (Result < SK_LMODE_STAT_HALF) { Result = SK_LMODE_STAT_UNKNOWN; } else if (pAC->GIni.GP[PhysPortIndex].PLinkMode >= SK_LMODE_AUTOHALF) { - /* * Auto-negotiation was used to bring up the link. Change * the already found duplex status that it indicates @@ -6541,22 +6350,19 @@ int Index; int Ret; - SK_MEMSET(pKeyArr, 0, KeyArrLen); - /* - * Get VPD key list - */ - Ret = VpdKeys(pAC, IoC, (char *)&BufKeys, (int *)&BufKeysLen, + /* Get VPD key list. */ + Ret = VpdKeys(pAC, IoC, BufKeys, (int *)&BufKeysLen, (int *)pKeyNo); + if (Ret > 0) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR014, - SK_PNMI_ERR014MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR014, SK_PNMI_ERR014MSG); return (SK_PNMI_ERR_GENERAL); } - /* If no keys are available return now */ + /* If no keys are available return now. */ if (*pKeyNo == 0 || BufKeysLen == 0) { return (SK_PNMI_ERR_OK); @@ -6564,12 +6370,11 @@ /* * If the key list is too long for us trunc it and give a * errorlog notification. This case should not happen because - * the maximum number of keys is limited due to RAM limitations + * the maximum number of keys is limited due to RAM limitations. */ if (*pKeyNo > SK_PNMI_VPD_ENTRIES) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR015, - SK_PNMI_ERR015MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR015, SK_PNMI_ERR015MSG); *pKeyNo = SK_PNMI_VPD_ENTRIES; } @@ -6582,14 +6387,12 @@ Offset ++) { if (BufKeys[Offset] != 0) { - continue; } if (Offset - StartOffset > SK_PNMI_VPD_KEY_SIZE) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR016, - SK_PNMI_ERR016MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR016, SK_PNMI_ERR016MSG); return (SK_PNMI_ERR_GENERAL); } @@ -6600,7 +6403,7 @@ StartOffset = Offset + 1; } - /* Last key not zero terminated? Get it anyway */ + /* Last key not zero terminated? Get it anyway. */ if (StartOffset < Offset) { SK_STRNCPY(pKeyArr + Index * SK_PNMI_VPD_KEY_SIZE, @@ -6629,19 +6432,18 @@ { SK_EVPARA EventParam; - /* Was the module already updated during the current PNMI call? */ if (pAC->Pnmi.SirqUpdatedFlag > 0) { return (SK_PNMI_ERR_OK); } - /* Send an synchronuous update event to the module */ + /* Send an synchronuous update event to the module. */ SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam)); - if (SkGeSirqEvent(pAC, IoC, SK_HWEV_UPDATE_STAT, EventParam) > 0) { + + if (SkGeSirqEvent(pAC, IoC, SK_HWEV_UPDATE_STAT, EventParam)) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR047, - SK_PNMI_ERR047MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR047, SK_PNMI_ERR047MSG); return (SK_PNMI_ERR_GENERAL); } @@ -6669,21 +6471,19 @@ { SK_EVPARA EventParam; - /* Was the module already updated during the current PNMI call? */ if (pAC->Pnmi.RlmtUpdatedFlag > 0) { return (SK_PNMI_ERR_OK); } - /* Send an synchronuous update event to the module */ + /* Send an synchronuous update event to the module. */ SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam)); EventParam.Para32[0] = NetIndex; EventParam.Para32[1] = (SK_U32)-1; if (SkRlmtEvent(pAC, IoC, SK_RLMT_STATS_UPDATE, EventParam) > 0) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR048, - SK_PNMI_ERR048MSG); + SK_ERR_LOG(pAC, SK_ERRCL_SW, SK_PNMI_ERR048, SK_PNMI_ERR048MSG); return (SK_PNMI_ERR_GENERAL); } @@ -6721,20 +6521,20 @@ return (SK_PNMI_ERR_OK); } - /* Send an update command to all MACs specified */ + /* Send an update command to all MACs specified. */ for (MacIndex = FirstMac; MacIndex <= LastMac; MacIndex ++) { /* * 2002-09-13 pweber: Freeze the current SW counters. * (That should be done as close as * possible to the update of the - * HW counters) + * HW counters). */ if (pAC->GIni.GIMacType == SK_MAC_XMAC) { pAC->Pnmi.BufPort[MacIndex] = pAC->Pnmi.Port[MacIndex]; } - /* 2002-09-13 pweber: Update the HW counter */ + /* 2002-09-13 pweber: Update the HW counter. */ if (pAC->GIni.GIFunc.pFnMacUpdateStats(pAC, IoC, MacIndex) != 0) { return (SK_PNMI_ERR_GENERAL); @@ -6772,19 +6572,19 @@ SK_U64 Val = 0; - if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { /* Dual net mode */ + if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { /* DualNet mode. */ PhysPortIndex = NetIndex; Val = GetPhysStatVal(pAC, IoC, PhysPortIndex, StatIndex); } - else { /* Single Net mode */ + else { /* SingleNet mode. */ if (LogPortIndex == 0) { PhysPortMax = pAC->GIni.GIMacsFound; - /* Add counter of all active ports */ + /* Add counter of all active ports. */ for (PhysPortIndex = 0; PhysPortIndex < PhysPortMax; PhysPortIndex ++) { @@ -6794,11 +6594,11 @@ } } - /* Correct value because of port switches */ + /* Correct value because of port switches. */ Val += pAC->Pnmi.VirtualCounterOffset[StatIndex]; } else { - /* Get counter value of physical port */ + /* Get counter value of physical port. */ PhysPortIndex = SK_PNMI_PORT_LOG2PHYS(pAC, LogPortIndex); Val = GetPhysStatVal(pAC, IoC, PhysPortIndex, StatIndex); @@ -6844,7 +6644,7 @@ MacType = pAC->GIni.GIMacType; - /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort) */ + /* 2002-09-17 pweber: For XMAC, use the frozen SW counters (BufPort). */ if (MacType == SK_MAC_XMAC) { pPnmiPrt = &pAC->Pnmi.BufPort[PhysPortIndex]; } @@ -6912,7 +6712,7 @@ case SK_PNMI_HTX_BURST: case SK_PNMI_HTX_EXCESS_DEF: case SK_PNMI_HTX_CARRIER: - /* Not supported by GMAC */ + /* Not supported by GMAC. */ if (MacType == SK_MAC_GMAC) { return (Val); } @@ -6924,7 +6724,7 @@ break; case SK_PNMI_HTX_MACC: - /* GMAC only supports PAUSE MAC control frames */ + /* GMAC only supports PAUSE MAC control frames. */ if (MacType == SK_MAC_GMAC) { HelpIndex = SK_PNMI_HTX_PMACC; } @@ -6941,7 +6741,7 @@ case SK_PNMI_HTX_COL: case SK_PNMI_HRX_UNDERSIZE: - /* Not supported by XMAC */ + /* Not supported by XMAC. */ if (MacType == SK_MAC_XMAC) { return (Val); } @@ -6953,7 +6753,7 @@ break; case SK_PNMI_HTX_DEFFERAL: - /* Not supported by GMAC */ + /* Not supported by GMAC. */ if (MacType == SK_MAC_GMAC) { return (Val); } @@ -6971,7 +6771,7 @@ HighVal = 0; } else { - /* Otherwise get contents of hardware register */ + /* Otherwise get contents of hardware register. */ (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex, StatAddr[StatIndex][MacType].Reg, &LowVal); @@ -6980,7 +6780,7 @@ break; case SK_PNMI_HRX_BADOCTET: - /* Not supported by XMAC */ + /* Not supported by XMAC. */ if (MacType == SK_MAC_XMAC) { return (Val); } @@ -6999,7 +6799,7 @@ return (Val); case SK_PNMI_HRX_LONGFRAMES: - /* For XMAC the SW counter is managed by PNMI */ + /* For XMAC the SW counter is managed by PNMI. */ if (MacType == SK_MAC_XMAC) { return (pPnmiPrt->StatRxLongFrameCts); } @@ -7019,7 +6819,7 @@ Val = (((SK_U64)HighVal << 32) | (SK_U64)LowVal); if (MacType == SK_MAC_GMAC) { - /* For GMAC the SW counter is additionally managed by PNMI */ + /* For GMAC the SW counter is additionally managed by PNMI. */ Val += pPnmiPrt->StatRxFrameTooLongCts; } else { @@ -7037,20 +6837,19 @@ break; case SK_PNMI_HRX_SHORTS: - /* Not supported by GMAC */ + /* Not supported by GMAC. */ if (MacType == SK_MAC_GMAC) { /* GM_RXE_FRAG?? */ return (Val); } /* - * XMAC counts short frame errors even if link down (#10620) - * - * If link-down the counter remains constant + * XMAC counts short frame errors even if link down (#10620). + * If the link is down, the counter remains constant. */ if (pPrt->PLinkModeStatus != SK_LMODE_STAT_UNKNOWN) { - /* Otherwise get incremental difference */ + /* Otherwise get incremental difference. */ (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex, StatAddr[StatIndex][MacType].Reg, &LowVal); @@ -7073,7 +6872,7 @@ case SK_PNMI_HRX_IRLENGTH: case SK_PNMI_HRX_SYMBOL: case SK_PNMI_HRX_CEXT: - /* Not supported by GMAC */ + /* Not supported by GMAC. */ if (MacType == SK_MAC_GMAC) { return (Val); } @@ -7085,7 +6884,7 @@ break; case SK_PNMI_HRX_PMACC_ERR: - /* For GMAC the SW counter is managed by PNMI */ + /* For GMAC the SW counter is managed by PNMI. */ if (MacType == SK_MAC_GMAC) { return (pPnmiPrt->StatRxPMaccErr); } @@ -7096,13 +6895,13 @@ HighVal = pPnmiPrt->CounterHigh[StatIndex]; break; - /* SW counter managed by PNMI */ + /* SW counter managed by PNMI. */ case SK_PNMI_HTX_SYNC: LowVal = (SK_U32)pPnmiPrt->StatSyncCts; HighVal = (SK_U32)(pPnmiPrt->StatSyncCts >> 32); break; - /* SW counter managed by PNMI */ + /* SW counter managed by PNMI. */ case SK_PNMI_HTX_SYNC_OCTET: LowVal = (SK_U32)pPnmiPrt->StatSyncOctetsCts; HighVal = (SK_U32)(pPnmiPrt->StatSyncOctetsCts >> 32); @@ -7110,17 +6909,19 @@ case SK_PNMI_HRX_FCS: /* - * Broadcom filters FCS errors and counts it in - * Receive Error Counter register + * Broadcom filters FCS errors and counts them in + * Receive Error Counter register. */ if (pPrt->PhyType == SK_PHY_BCOM) { - /* do not read while not initialized (PHY_READ hangs!)*/ +#ifdef GENESIS + /* Do not read while not initialized (PHY_READ hangs!). */ if (pPrt->PState != SK_PRT_RESET) { SkXmPhyRead(pAC, IoC, PhysPortIndex, PHY_BCOM_RE_CTR, &Word); LowVal = Word; } HighVal = pPnmiPrt->CounterHigh[StatIndex]; +#endif /* GENESIS */ } else { (void)pFnMac->pFnMacStatistic(pAC, IoC, PhysPortIndex, @@ -7140,7 +6941,7 @@ Val = (((SK_U64)HighVal << 32) | (SK_U64)LowVal); - /* Correct value because of possible XMAC reset. XMAC Errata #2 */ + /* Correct value because of possible XMAC reset (XMAC Errata #2). */ Val += pPnmiPrt->CounterOffset[StatIndex]; return (Val); @@ -7165,22 +6966,21 @@ unsigned int PhysPortIndex; SK_EVPARA EventParam; - SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam)); - /* Notify sensor module */ + /* Notify sensor module. */ SkEventQueue(pAC, SKGE_I2C, SK_I2CEV_CLEAR, EventParam); - /* Notify RLMT module */ + /* Notify RLMT module. */ EventParam.Para32[0] = NetIndex; EventParam.Para32[1] = (SK_U32)-1; SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_STATS_CLEAR, EventParam); EventParam.Para32[1] = 0; - /* Notify SIRQ module */ + /* Notify SIRQ module. */ SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_CLEAR_STAT, EventParam); - /* Notify CSUM module */ + /* Notify CSUM module. */ #ifdef SK_USE_CSUM EventParam.Para32[0] = NetIndex; EventParam.Para32[1] = (SK_U32)-1; @@ -7188,7 +6988,7 @@ EventParam); #endif /* SK_USE_CSUM */ - /* Clear XMAC statistic */ + /* Clear XMAC statistics. */ for (PhysPortIndex = 0; PhysPortIndex < (unsigned int)pAC->GIni.GIMacsFound; PhysPortIndex ++) { @@ -7215,13 +7015,13 @@ PhysPortIndex].StatRxPMaccErr)); } - /* - * Clear local statistics - */ + /* Clear local statistics. */ SK_MEMSET((char *)&pAC->Pnmi.VirtualCounterOffset, 0, sizeof(pAC->Pnmi.VirtualCounterOffset)); + pAC->Pnmi.RlmtChangeCts = 0; pAC->Pnmi.RlmtChangeTime = 0; + SK_MEMSET((char *)&pAC->Pnmi.RlmtChangeEstimate.EstValue[0], 0, sizeof(pAC->Pnmi.RlmtChangeEstimate.EstValue)); pAC->Pnmi.RlmtChangeEstimate.EstValueIndex = 0; @@ -7258,23 +7058,21 @@ SK_U32 TrapId, /* SNMP ID of the trap */ unsigned int Size) /* Space needed for trap entry */ { - unsigned int BufPad = pAC->Pnmi.TrapBufPad; - unsigned int BufFree = pAC->Pnmi.TrapBufFree; - unsigned int Beg = pAC->Pnmi.TrapQueueBeg; - unsigned int End = pAC->Pnmi.TrapQueueEnd; + unsigned int BufPad = pAC->Pnmi.TrapBufPad; + unsigned int BufFree = pAC->Pnmi.TrapBufFree; + unsigned int Beg = pAC->Pnmi.TrapQueueBeg; + unsigned int End = pAC->Pnmi.TrapQueueEnd; char *pBuf = &pAC->Pnmi.TrapBuf[0]; int Wrap; - unsigned int NeededSpace; - unsigned int EntrySize; + unsigned int NeededSpace; + unsigned int EntrySize; SK_U32 Val32; SK_U64 Val64; - - /* Last byte of entry will get a copy of the entry length */ + /* Last byte of entry will get a copy of the entry length. */ Size ++; - /* - * Calculate needed buffer space */ + /* Calculate needed buffer space. */ if (Beg >= Size) { NeededSpace = Size; @@ -7289,7 +7087,7 @@ * Check if enough buffer space is provided. Otherwise * free some entries. Leave one byte space between begin * and end of buffer to make it possible to detect whether - * the buffer is full or empty + * the buffer is full or empty. */ while (BufFree < NeededSpace + 1) { @@ -7328,13 +7126,13 @@ } BufFree -= NeededSpace; - /* Save the current offsets */ + /* Save the current offsets. */ pAC->Pnmi.TrapQueueBeg = Beg; pAC->Pnmi.TrapQueueEnd = End; pAC->Pnmi.TrapBufPad = BufPad; pAC->Pnmi.TrapBufFree = BufFree; - /* Initialize the trap entry */ + /* Initialize the trap entry. */ *(pBuf + Beg + Size - 1) = (char)Size; *(pBuf + Beg) = (char)Size; Val32 = (pAC->Pnmi.TrapUnique) ++; @@ -7369,7 +7167,6 @@ unsigned int Len; unsigned int DstOff = 0; - while (Trap != End) { Len = (unsigned int)*(pBuf + Trap); @@ -7414,7 +7211,6 @@ unsigned int Entries = 0; unsigned int TotalLen = 0; - while (Trap != End) { Len = (unsigned int)*(pBuf + Trap); @@ -7471,14 +7267,14 @@ unsigned int DescrLen; SK_U32 Val32; - - /* Get trap buffer entry */ + /* Get trap buffer entry. */ DescrLen = SK_STRLEN(pAC->I2c.SenTable[SensorIndex].SenDesc); + pBuf = GetTrapEntry(pAC, TrapId, SK_PNMI_TRAP_SENSOR_LEN_BASE + DescrLen); Offset = SK_PNMI_TRAP_SIMPLE_LEN; - /* Store additionally sensor trap related data */ + /* Store additionally sensor trap related data. */ Val32 = OID_SKGE_SENSOR_INDEX; SK_PNMI_STORE_U32(pBuf + Offset, Val32); *(pBuf + Offset + 4) = 4; @@ -7523,7 +7319,6 @@ char *pBuf; SK_U32 Val32; - pBuf = GetTrapEntry(pAC, OID_SKGE_TRAP_RLMT_CHANGE_PORT, SK_PNMI_TRAP_RLMT_CHANGE_LEN); @@ -7551,7 +7346,6 @@ char *pBuf; SK_U32 Val32; - pBuf = GetTrapEntry(pAC, TrapId, SK_PNMI_TRAP_RLMT_PORT_LEN); Val32 = OID_SKGE_RLMT_PORT_INDEX; @@ -7571,12 +7365,11 @@ * Nothing */ PNMI_STATIC void CopyMac( -char *pDst, /* Pointer to destination buffer */ +char *pDst, /* Pointer to destination buffer */ SK_MAC_ADDR *pMac) /* Pointer of Source */ { int i; - for (i = 0; i < sizeof(SK_MAC_ADDR); i ++) { *(pDst + i) = pMac->a[i]; @@ -7616,17 +7409,14 @@ SK_U32 RetCode = SK_PNMI_ERR_GENERAL; - /* - * Check instance. We only handle single instance variables - */ + /* Check instance. We only handle single instance variables. */ if (Instance != (SK_U32)(-1) && Instance != 1) { *pLen = 0; return (SK_PNMI_ERR_UNKNOWN_INST); } - - /* Check length */ + /* Check length. */ switch (Id) { case OID_PNP_CAPABILITIES: @@ -7664,14 +7454,10 @@ break; } - /* - * Perform action - */ + /* Perform action. */ if (Action == SK_PNMI_GET) { - /* - * Get value - */ + /* Get value. */ switch (Id) { case OID_PNP_CAPABILITIES: @@ -7679,18 +7465,21 @@ break; case OID_PNP_QUERY_POWER: - /* The Windows DDK describes: An OID_PNP_QUERY_POWER requests - the miniport to indicate whether it can transition its NIC - to the low-power state. - A miniport driver must always return NDIS_STATUS_SUCCESS - to a query of OID_PNP_QUERY_POWER. */ + /* + * The Windows DDK describes: An OID_PNP_QUERY_POWER requests + * the miniport to indicate whether it can transition its NIC + * to the low-power state. + * A miniport driver must always return NDIS_STATUS_SUCCESS + * to a query of OID_PNP_QUERY_POWER. + */ *pLen = sizeof(SK_DEVICE_POWER_STATE); RetCode = SK_PNMI_ERR_OK; break; - /* NDIS handles these OIDs as write-only. + /* + * NDIS handles these OIDs as write-only. * So in case of get action the buffer with written length = 0 - * is returned + * is returned. */ case OID_PNP_SET_POWER: case OID_PNP_ADD_WAKE_UP_PATTERN: @@ -7711,13 +7500,11 @@ return (RetCode); } - - /* - * Perform preset or set - */ + /* Perform PRESET or SET. */ - /* POWER module does not support PRESET action */ + /* The POWER module does not support PRESET action. */ if (Action == SK_PNMI_PRESET) { + return (SK_PNMI_ERR_OK); } @@ -7749,7 +7536,7 @@ #ifdef SK_DIAG_SUPPORT /***************************************************************************** * - * DiagActions - OID handler function of Diagnostic driver + * DiagActions - OID handler function of Diagnostic driver * * Description: * The code is simple. No description necessary. @@ -7776,22 +7563,17 @@ unsigned int TableIndex, /* Index to the Id table */ SK_U32 NetIndex) /* NetIndex (0..n), in single net mode always zero */ { - SK_U32 DiagStatus; SK_U32 RetCode = SK_PNMI_ERR_GENERAL; - /* - * Check instance. We only handle single instance variables. - */ + /* Check instance. We only handle single instance variables. */ if (Instance != (SK_U32)(-1) && Instance != 1) { *pLen = 0; return (SK_PNMI_ERR_UNKNOWN_INST); } - /* - * Check length. - */ + /* Check length. */ switch (Id) { case OID_SKGE_DIAG_MODE: @@ -7809,10 +7591,9 @@ } /* Perform action. */ - - /* GET value. */ if (Action == SK_PNMI_GET) { + /* Get value. */ switch (Id) { case OID_SKGE_DIAG_MODE: @@ -7827,14 +7608,15 @@ RetCode = SK_PNMI_ERR_GENERAL; break; } - return (RetCode); + return (RetCode); } /* From here SET or PRESET value. */ /* PRESET value is not supported. */ if (Action == SK_PNMI_PRESET) { - return (SK_PNMI_ERR_OK); + + return (SK_PNMI_ERR_OK); } /* SET value. */ @@ -7846,7 +7628,7 @@ /* Attach the DIAG to this adapter. */ case SK_DIAG_ATTACHED: - /* Check if we come from running */ + /* Check if we come from running. */ if (pAC->Pnmi.DiagAttached == SK_DIAG_RUNNING) { RetCode = SkDrvLeaveDiagMode(pAC); @@ -7881,7 +7663,7 @@ /* If DiagMode is not active, we can enter it. */ if (!pAC->DiagModeActive) { - RetCode = SkDrvEnterDiagMode(pAC); + RetCode = SkDrvEnterDiagMode(pAC); } else { @@ -7900,7 +7682,7 @@ break; case SK_DIAG_IDLE: - /* Check if we come from running */ + /* Check if we come from running. */ if (pAC->Pnmi.DiagAttached == SK_DIAG_RUNNING) { RetCode = SkDrvLeaveDiagMode(pAC); @@ -7946,7 +7728,7 @@ /***************************************************************************** * - * Vct - OID handler function of OIDs + * Vct - OID handler function of OIDs for Virtual Cable Tester (VCT) * * Description: * The code is simple. No description necessary. @@ -7982,153 +7764,150 @@ SK_U32 PhysPortIndex; SK_U32 Limit; SK_U32 Offset; - SK_BOOL Link; - SK_U32 RetCode = SK_PNMI_ERR_GENERAL; - int i; + SK_U32 RetCode; + int i; SK_EVPARA Para; - SK_U32 CableLength; - - /* - * Calculate the port indexes from the instance. - */ + + RetCode = SK_PNMI_ERR_GENERAL; + + /* Calculate the port indexes from the instance. */ PhysPortMax = pAC->GIni.GIMacsFound; LogPortMax = SK_PNMI_PORT_PHYS2LOG(PhysPortMax); - + /* Dual net mode? */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { LogPortMax--; } - + if ((Instance != (SK_U32) (-1))) { - /* Check instance range. */ - if ((Instance < 2) || (Instance > LogPortMax)) { - *pLen = 0; - return (SK_PNMI_ERR_UNKNOWN_INST); - } - + /* + * Get one instance of that OID, so check the instance range: + * There is no virtual port with an Instance == 1, so we get + * the values from one physical port only. + */ if (pAC->Pnmi.DualNetActiveFlag == SK_TRUE) { PhysPortIndex = NetIndex; } else { + if ((Instance < 2) || (Instance > LogPortMax)) { + *pLen = 0; + return (SK_PNMI_ERR_UNKNOWN_INST); + } PhysPortIndex = Instance - 2; } Limit = PhysPortIndex + 1; } else { /* - * Instance == (SK_U32) (-1), get all Instances of that OID. - * - * Not implemented yet. May be used in future releases. + * Instance == (SK_U32) (-1), so get all instances of that OID. + * There is no virtual port with an Instance == 1, so we get + * the values from all physical ports. */ PhysPortIndex = 0; Limit = PhysPortMax; } - - pPrt = &pAC->GIni.GP[PhysPortIndex]; - if (pPrt->PHWLinkUp) { - Link = SK_TRUE; - } - else { - Link = SK_FALSE; - } - - /* Check MAC type */ - if (pPrt->PhyType != SK_PHY_MARV_COPPER) { + + /* Check MAC type. */ + if ((Id != OID_SKGE_VCT_CAPABILITIES) && + (pAC->GIni.GP[PhysPortIndex].PhyType != SK_PHY_MARV_COPPER)) { *pLen = 0; - return (SK_PNMI_ERR_GENERAL); + return (SK_PNMI_ERR_NOT_SUPPORTED); } - - /* Initialize backup data pointer. */ - pVctBackupData = &pAC->Pnmi.VctBackup[PhysPortIndex]; - - /* Check action type */ + + /* Check action type. */ if (Action == SK_PNMI_GET) { - /* Check length */ + /* Check length. */ switch (Id) { - + case OID_SKGE_VCT_GET: if (*pLen < (Limit - PhysPortIndex) * sizeof(SK_PNMI_VCT)) { *pLen = (Limit - PhysPortIndex) * sizeof(SK_PNMI_VCT); return (SK_PNMI_ERR_TOO_SHORT); } break; - + case OID_SKGE_VCT_STATUS: + case OID_SKGE_VCT_CAPABILITIES: if (*pLen < (Limit - PhysPortIndex) * sizeof(SK_U8)) { *pLen = (Limit - PhysPortIndex) * sizeof(SK_U8); return (SK_PNMI_ERR_TOO_SHORT); } break; - + default: *pLen = 0; return (SK_PNMI_ERR_GENERAL); } - - /* Get value */ + + /* Get value. */ Offset = 0; for (; PhysPortIndex < Limit; PhysPortIndex++) { + + pPrt = &pAC->GIni.GP[PhysPortIndex]; + switch (Id) { - + case OID_SKGE_VCT_GET: - if ((Link == SK_FALSE) && + if (!pPrt->PHWLinkUp && (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_PENDING)) { + RetCode = SkGmCableDiagStatus(pAC, IoC, PhysPortIndex, SK_FALSE); + if (RetCode == 0) { - pAC->Pnmi.VctStatus[PhysPortIndex] &= ~SK_PNMI_VCT_PENDING; - pAC->Pnmi.VctStatus[PhysPortIndex] |= - (SK_PNMI_VCT_NEW_VCT_DATA | SK_PNMI_VCT_TEST_DONE); - - /* Copy results for later use to PNMI struct. */ - for (i = 0; i < 4; i++) { - if (pPrt->PMdiPairSts[i] == SK_PNMI_VCT_NORMAL_CABLE) { - if ((pPrt->PMdiPairLen[i] > 35) && (pPrt->PMdiPairLen[i] < 0xff)) { - pPrt->PMdiPairSts[i] = SK_PNMI_VCT_IMPEDANCE_MISMATCH; - } - } - if ((pPrt->PMdiPairLen[i] > 35) && (pPrt->PMdiPairLen[i] != 0xff)) { - CableLength = 1000 * (((175 * pPrt->PMdiPairLen[i]) / 210) - 28); - } - else { - CableLength = 0; - } - pVctBackupData->PMdiPairLen[i] = CableLength; - pVctBackupData->PMdiPairSts[i] = pPrt->PMdiPairSts[i]; - } + + /* VCT test is finished, so save the data. */ + VctGetResults(pAC, IoC, PhysPortIndex); Para.Para32[0] = PhysPortIndex; Para.Para32[1] = -1; SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_RESET, Para); - SkEventDispatcher(pAC, IoC); - } - else { - ; /* VCT test is running. */ + + /* SkEventDispatcher(pAC, IoC); */ } } - + + /* Initialize backup data pointer. */ + pVctBackupData = &pAC->Pnmi.VctBackup[PhysPortIndex]; + /* Get all results. */ CheckVctStatus(pAC, IoC, pBuf, Offset, PhysPortIndex); - Offset += sizeof(SK_U8); + + Offset++; *(pBuf + Offset) = pPrt->PCableLen; - Offset += sizeof(SK_U8); + Offset++; for (i = 0; i < 4; i++) { - SK_PNMI_STORE_U32((pBuf + Offset), pVctBackupData->PMdiPairLen[i]); + + SK_PNMI_STORE_U32((pBuf + Offset), pVctBackupData->MdiPairLen[i]); Offset += sizeof(SK_U32); } for (i = 0; i < 4; i++) { - *(pBuf + Offset) = pVctBackupData->PMdiPairSts[i]; - Offset += sizeof(SK_U8); + + *(pBuf + Offset) = pVctBackupData->MdiPairSts[i]; + Offset++; } - + RetCode = SK_PNMI_ERR_OK; break; - + case OID_SKGE_VCT_STATUS: CheckVctStatus(pAC, IoC, pBuf, Offset, PhysPortIndex); - Offset += sizeof(SK_U8); + + Offset++; RetCode = SK_PNMI_ERR_OK; break; - + + case OID_SKGE_VCT_CAPABILITIES: + if (pPrt->PhyType != SK_PHY_MARV_COPPER) { + *(pBuf + Offset) = SK_PNMI_VCT_NOT_SUPPORTED; + } + else { + *(pBuf + Offset) = SK_PNMI_VCT_SUPPORTED; + } + Offset++; + + RetCode = SK_PNMI_ERR_OK; + break; + default: *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -8136,15 +7915,15 @@ } /* for */ *pLen = Offset; return (RetCode); - + } /* if SK_PNMI_GET */ - + /* * From here SET or PRESET action. Check if the passed * buffer length is plausible. */ - - /* Check length */ + + /* Check length. */ switch (Id) { case OID_SKGE_VCT_SET: if (*pLen < (Limit - PhysPortIndex) * sizeof(SK_U32)) { @@ -8152,42 +7931,45 @@ return (SK_PNMI_ERR_TOO_SHORT); } break; - + default: *pLen = 0; return (SK_PNMI_ERR_GENERAL); } - - /* - * Perform preset or set. - */ - + + /* Perform PRESET or SET. */ + /* VCT does not support PRESET action. */ if (Action == SK_PNMI_PRESET) { + return (SK_PNMI_ERR_OK); } - + Offset = 0; for (; PhysPortIndex < Limit; PhysPortIndex++) { + + pPrt = &pAC->GIni.GP[PhysPortIndex]; + switch (Id) { case OID_SKGE_VCT_SET: /* Start VCT test. */ - if (Link == SK_FALSE) { + if (!pPrt->PHWLinkUp) { SkGeStopPort(pAC, IoC, PhysPortIndex, SK_STOP_ALL, SK_SOFT_RST); - + RetCode = SkGmCableDiagStatus(pAC, IoC, PhysPortIndex, SK_TRUE); + if (RetCode == 0) { /* RetCode: 0 => Start! */ pAC->Pnmi.VctStatus[PhysPortIndex] |= SK_PNMI_VCT_PENDING; - pAC->Pnmi.VctStatus[PhysPortIndex] &= ~SK_PNMI_VCT_NEW_VCT_DATA; - pAC->Pnmi.VctStatus[PhysPortIndex] &= ~SK_PNMI_VCT_LINK; - - /* - * Start VCT timer counter. - */ - SK_MEMSET((char *) &Para, 0, sizeof(Para)); + pAC->Pnmi.VctStatus[PhysPortIndex] &= + ~(SK_PNMI_VCT_NEW_VCT_DATA | SK_PNMI_VCT_LINK); + + /* Start VCT timer counter. */ + SK_MEMSET((char *)&Para, 0, sizeof(Para)); Para.Para32[0] = PhysPortIndex; Para.Para32[1] = -1; - SkTimerStart(pAC, IoC, &pAC->Pnmi.VctTimeout[PhysPortIndex].VctTimer, - 4000000, SKGE_PNMI, SK_PNMI_EVT_VCT_RESET, Para); + + SkTimerStart(pAC, IoC, &pAC->Pnmi.VctTimeout[PhysPortIndex], + SK_PNMI_VCT_TIMER_CHECK, SKGE_PNMI, SK_PNMI_EVT_VCT_RESET, Para); + SK_PNMI_STORE_U32((pBuf + Offset), RetCode); RetCode = SK_PNMI_ERR_OK; } @@ -8203,7 +7985,7 @@ } Offset += sizeof(SK_U32); break; - + default: *pLen = 0; return (SK_PNMI_ERR_GENERAL); @@ -8215,6 +7997,65 @@ } /* Vct */ +PNMI_STATIC void VctGetResults( +SK_AC *pAC, +SK_IOC IoC, +SK_U32 Port) +{ + SK_GEPORT *pPrt; + int i; + SK_U8 PairLen; + SK_U8 PairSts; + SK_U32 MinLength; + SK_U32 CableLength; + + pPrt = &pAC->GIni.GP[Port]; + + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_FE) { + MinLength = 25; + } + else { + MinLength = 35; + } + + /* Copy results for later use to PNMI struct. */ + for (i = 0; i < 4; i++) { + + PairLen = pPrt->PMdiPairLen[i]; + + if (((pPrt->PLinkSpeedCap & SK_LSPEED_CAP_1000MBPS) == 0) && (i > 1)) { + PairSts = SK_PNMI_VCT_NOT_PRESENT; + } + else { + PairSts = pPrt->PMdiPairSts[i]; + } + + if ((PairSts == SK_PNMI_VCT_NORMAL_CABLE) && + (PairLen > 28) && (PairLen < 0xff)) { + + PairSts = SK_PNMI_VCT_IMPEDANCE_MISMATCH; + } + + /* Ignore values <= MinLength, the linear factor is 4/5. */ + if ((PairLen > MinLength) && (PairLen < 0xff)) { + + CableLength = 1000UL * (PairLen - MinLength) * 4 / 5; + } + else { + /* No cable or short cable. */ + CableLength = 0; + } + + pAC->Pnmi.VctBackup[Port].MdiPairLen[i] = CableLength; + pAC->Pnmi.VctBackup[Port].MdiPairSts[i] = PairSts; + } + + pAC->Pnmi.VctStatus[Port] &= ~SK_PNMI_VCT_PENDING; + pAC->Pnmi.VctStatus[Port] |= (SK_PNMI_VCT_NEW_VCT_DATA | + SK_PNMI_VCT_TEST_DONE); + +} /* GetVctResults */ + PNMI_STATIC void CheckVctStatus( SK_AC *pAC, SK_IOC IoC, @@ -8224,54 +8065,57 @@ { SK_GEPORT *pPrt; SK_PNMI_VCT *pVctData; + SK_U8 VctStatus; SK_U32 RetCode; - + pPrt = &pAC->GIni.GP[PhysPortIndex]; - + pVctData = (SK_PNMI_VCT *) (pBuf + Offset); pVctData->VctStatus = SK_PNMI_VCT_NONE; - + + VctStatus = pAC->Pnmi.VctStatus[PhysPortIndex]; + if (!pPrt->PHWLinkUp) { - + /* Was a VCT test ever made before? */ - if (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_TEST_DONE) { - if ((pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_LINK)) { + if (VctStatus & SK_PNMI_VCT_TEST_DONE) { + if (VctStatus & SK_PNMI_VCT_LINK) { pVctData->VctStatus |= SK_PNMI_VCT_OLD_VCT_DATA; } else { pVctData->VctStatus |= SK_PNMI_VCT_NEW_VCT_DATA; } } - + /* Check VCT test status. */ RetCode = SkGmCableDiagStatus(pAC,IoC, PhysPortIndex, SK_FALSE); + if (RetCode == 2) { /* VCT test is running. */ pVctData->VctStatus |= SK_PNMI_VCT_RUNNING; } else { /* VCT data was copied to pAC here. Check PENDING state. */ - if (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_PENDING) { + if (VctStatus & SK_PNMI_VCT_PENDING) { pVctData->VctStatus |= SK_PNMI_VCT_NEW_VCT_DATA; } } - + if (pPrt->PCableLen != 0xff) { /* Old DSP value. */ pVctData->VctStatus |= SK_PNMI_VCT_OLD_DSP_DATA; } } else { - /* Was a VCT test ever made before? */ - if (pAC->Pnmi.VctStatus[PhysPortIndex] & SK_PNMI_VCT_TEST_DONE) { + if (VctStatus & SK_PNMI_VCT_TEST_DONE) { pVctData->VctStatus &= ~SK_PNMI_VCT_NEW_VCT_DATA; pVctData->VctStatus |= SK_PNMI_VCT_OLD_VCT_DATA; } - + /* DSP only valid in 100/1000 modes. */ - if (pAC->GIni.GP[PhysPortIndex].PLinkSpeedUsed != - SK_LSPEED_STAT_10MBPS) { + if (pPrt->PLinkSpeedUsed != SK_LSPEED_STAT_10MBPS) { pVctData->VctStatus |= SK_PNMI_VCT_NEW_DSP_DATA; } } + } /* CheckVctStatus */ @@ -8314,29 +8158,29 @@ ReturnCode = SK_PNMI_ERR_GENERAL; SK_MEMCPY(&Mode, pBuf, sizeof(SK_I32)); - SK_MEMCPY(&Oid, (char *) pBuf + sizeof(SK_I32), sizeof(SK_U32)); + SK_MEMCPY(&Oid, (char *)pBuf + sizeof(SK_I32), sizeof(SK_U32)); HeaderLength = sizeof(SK_I32) + sizeof(SK_U32); *pLen = *pLen - HeaderLength; - SK_MEMCPY((char *) pBuf + sizeof(SK_I32), (char *) pBuf + HeaderLength, *pLen); + SK_MEMCPY((char *)pBuf + sizeof(SK_I32), (char *)pBuf + HeaderLength, *pLen); switch(Mode) { case SK_GET_SINGLE_VAR: - ReturnCode = SkPnmiGetVar(pAC, IoC, Oid, - (char *) pBuf + sizeof(SK_I32), pLen, + ReturnCode = SkPnmiGetVar(pAC, IoC, Oid, + (char *)pBuf + sizeof(SK_I32), pLen, ((SK_U32) (-1)), NetIndex); SK_PNMI_STORE_U32(pBuf, ReturnCode); *pLen = *pLen + sizeof(SK_I32); break; case SK_PRESET_SINGLE_VAR: - ReturnCode = SkPnmiPreSetVar(pAC, IoC, Oid, - (char *) pBuf + sizeof(SK_I32), pLen, + ReturnCode = SkPnmiPreSetVar(pAC, IoC, Oid, + (char *)pBuf + sizeof(SK_I32), pLen, ((SK_U32) (-1)), NetIndex); SK_PNMI_STORE_U32(pBuf, ReturnCode); *pLen = *pLen + sizeof(SK_I32); break; case SK_SET_SINGLE_VAR: - ReturnCode = SkPnmiSetVar(pAC, IoC, Oid, - (char *) pBuf + sizeof(SK_I32), pLen, + ReturnCode = SkPnmiSetVar(pAC, IoC, Oid, + (char *)pBuf + sizeof(SK_I32), pLen, ((SK_U32) (-1)), NetIndex); SK_PNMI_STORE_U32(pBuf, ReturnCode); *pLen = *pLen + sizeof(SK_I32); @@ -8357,3 +8201,86 @@ return (ReturnCode); } /* SkGeIocGen */ + +#ifdef SK_ASF +/***************************************************************************** + * + * Asf + * + * Description: + * The code is simple. No description necessary. + * + * Returns: + * SK_PNMI_ERR_OK The request was successfully performed. + * SK_PNMI_ERR_GENERAL A general severe internal error occured. + * SK_PNMI_ERR_TOO_SHORT The passed buffer is too short to contain + * the correct data (e.g. a 32bit value is + * needed, but a 16 bit value was passed). + * SK_PNMI_ERR_UNKNOWN_INST The requested instance of the OID doesn't + * exist (e.g. port instance 3 on a two port + * adapter. + */ + +PNMI_STATIC int Asf( +SK_AC *pAC, /* Pointer to adapter context */ +SK_IOC IoC, /* IO context handle */ +int Action, /* GET/PRESET/SET action */ +SK_U32 Id, /* Object ID that is to be processed */ +char *pBuf, /* Buffer used for the management data transfer */ +unsigned int *pLen, /* On call: pBuf buffer length. On return: used buffer */ +SK_U32 Instance, /* Instance (1..n) that is to be queried or -1 */ +unsigned int TableIndex, /* Index to the Id table */ +SK_U32 NetIndex) /* NetIndex (0..n), in single net mode always zero */ +{ + SK_U32 RetCode = SK_PNMI_ERR_GENERAL; + + /* + * Check instance. We only handle single instance variables. + */ + if (Instance != (SK_U32)(-1) && Instance != 1) { + + *pLen = 0; + return (SK_PNMI_ERR_UNKNOWN_INST); + } + + /* Perform action. */ + /* GET value. */ + if (Action == SK_PNMI_GET) { + switch (Id) { + case OID_SKGE_ASF: + RetCode = SkAsfGet(pAC, IoC, (SK_U8 *) pBuf, pLen); + break; + default: + RetCode = SkAsfGetOid( pAC, IoC, Id, Instance, (SK_U8 *) pBuf, pLen ); + break; + } + + return (RetCode); + } + + /* PRESET value. */ + if (Action == SK_PNMI_PRESET) { + switch (Id) { + case OID_SKGE_ASF: + RetCode = SkAsfPreSet(pAC, IoC, (SK_U8 *) pBuf, pLen); + break; + default: + RetCode = SkAsfPreSetOid( pAC, IoC, Id, Instance, (SK_U8 *) pBuf, pLen ); + break; + } + } + + /* SET value. */ + if (Action == SK_PNMI_SET) { + switch (Id) { + case OID_SKGE_ASF: + RetCode = SkAsfSet(pAC, IoC, (SK_U8 *) pBuf, pLen); + break; + default: + RetCode = SkAsfSetOid( pAC, IoC, Id, Instance, (SK_U8 *) pBuf, pLen ); + break; + } + } + return (RetCode); +} +#endif /* SK_ASF */ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skgesirq.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skgesirq.c @@ -2,8 +2,8 @@ * * Name: skgesirq.c * Project: Gigabit Ethernet Adapters, Common Modules - * Version: $Revision: 1.92 $ - * Date: $Date: 2003/09/16 14:37:07 $ + * Version: $Revision: 2.21 $ + * Date: $Date: 2005/03/03 15:49:58 $ * Purpose: Special IRQ module * ******************************************************************************/ @@ -11,13 +11,12 @@ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2005 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * * The information in this file is provided "AS IS" without warranty. * ******************************************************************************/ @@ -38,7 +37,7 @@ * right after this ISR. * * The Interrupt source register of the adapter is NOT read by this module. - * SO if the drivers implementor needs a while loop around the + * SO if the drivers implementor needs a while loop around the * slow data paths interrupt bits, he needs to call the SkGeSirqIsr() for * each loop entered. * @@ -46,11 +45,6 @@ * */ -#if (defined(DEBUG) || ((!defined(LINT)) && (!defined(SK_SLIM)))) -static const char SysKonnectFileId[] = - "@(#) $Id: skgesirq.c,v 1.92 2003/09/16 14:37:07 rschmidt Exp $ (C) Marvell."; -#endif - #include "h/skdrv1st.h" /* Driver Specific Definitions */ #ifndef SK_SLIM #include "h/skgepnmi.h" /* PNMI Definitions */ @@ -58,6 +52,13 @@ #endif #include "h/skdrv2nd.h" /* Adapter Control and Driver specific Def. */ +/* local variables ************************************************************/ + +#if (defined(DEBUG) || ((!defined(LINT)) && (!defined(SK_SLIM)))) +static const char SysKonnectFileId[] = + "@(#) $Id: skgesirq.c,v 2.21 2005/03/03 15:49:58 rschmidt Exp $ (C) Marvell."; +#endif + /* local function prototypes */ #ifdef GENESIS static int SkGePortCheckUpXmac(SK_AC*, SK_IOC, int, SK_BOOL); @@ -86,7 +87,7 @@ XM_RXF_511B, XM_RXF_1023B, XM_RXF_MAX_SZ -} ; +}; #endif /* GENESIS */ #ifdef __C2MAN__ @@ -109,8 +110,8 @@ * Returns: N/A */ static void SkHWInitDefSense( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; /* GIni Port struct pointer */ @@ -119,7 +120,7 @@ pPrt->PAutoNegTimeOut = 0; - if (pPrt->PLinkModeConf != SK_LMODE_AUTOSENSE) { + if (pPrt->PLinkModeConf != (SK_U8)SK_LMODE_AUTOSENSE) { pPrt->PLinkMode = pPrt->PLinkModeConf; return; } @@ -145,8 +146,8 @@ * */ static SK_U8 SkHWSenseGetNext( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; /* GIni Port struct pointer */ @@ -155,18 +156,18 @@ pPrt->PAutoNegTimeOut = 0; - if (pPrt->PLinkModeConf != (SK_U8)SK_LMODE_AUTOSENSE) { + if (pPrt->PLinkModeConf != (SK_U8)SK_LMODE_AUTOSENSE) { /* Leave all as configured */ return(pPrt->PLinkModeConf); } - if (pPrt->PLinkMode == (SK_U8)SK_LMODE_AUTOFULL) { + if (pPrt->PLinkMode == (SK_U8)SK_LMODE_AUTOFULL) { /* Return next mode AUTOBOTH */ - return ((SK_U8)SK_LMODE_AUTOBOTH); + return((SK_U8)SK_LMODE_AUTOBOTH); } /* Return default autofull */ - return ((SK_U8)SK_LMODE_AUTOFULL); + return((SK_U8)SK_LMODE_AUTOFULL); } /* SkHWSenseGetNext */ @@ -179,8 +180,8 @@ * Returns: N/A */ static void SkHWSenseSetNext( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O context */ int Port, /* Port Index (MAC_1 + n) */ SK_U8 NewMode) /* New Mode to be written in sense mode */ { @@ -190,7 +191,7 @@ pPrt->PAutoNegTimeOut = 0; - if (pPrt->PLinkModeConf != (SK_U8)SK_LMODE_AUTOSENSE) { + if (pPrt->PLinkModeConf != (SK_U8)SK_LMODE_AUTOSENSE) { return; } @@ -214,8 +215,8 @@ * Returns: N/A */ void SkHWLinkDown( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; /* GIni Port struct pointer */ @@ -227,11 +228,11 @@ /* Disable Receiver and Transmitter */ SkMacRxTxDisable(pAC, IoC, Port); - + /* Init default sense mode */ SkHWInitDefSense(pAC, IoC, Port); - if (pPrt->PHWLinkUp == SK_FALSE) { + if (!pPrt->PHWLinkUp) { return; } @@ -242,8 +243,8 @@ pPrt->PHWLinkUp = SK_FALSE; /* Reset Port stati */ - pPrt->PLinkModeStatus = (SK_U8)SK_LMODE_STAT_UNKNOWN; - pPrt->PFlowCtrlStatus = (SK_U8)SK_FLOW_STAT_NONE; + pPrt->PLinkModeStatus = (SK_U8)SK_LMODE_STAT_UNKNOWN; + pPrt->PFlowCtrlStatus = (SK_U8)SK_FLOW_STAT_NONE; pPrt->PLinkSpeedUsed = (SK_U8)SK_LSPEED_STAT_INDETERMINATED; /* Re-init Phy especially when the AutoSense default is set now */ @@ -266,8 +267,8 @@ * Returns: N/A */ void SkHWLinkUp( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; /* GIni Port struct pointer */ @@ -281,11 +282,11 @@ pPrt->PHWLinkUp = SK_TRUE; pPrt->PAutoNegFail = SK_FALSE; - pPrt->PLinkModeStatus = (SK_U8)SK_LMODE_STAT_UNKNOWN; + pPrt->PLinkModeStatus = (SK_U8)SK_LMODE_STAT_UNKNOWN; - if (pPrt->PLinkMode != (SK_U8)SK_LMODE_AUTOHALF && - pPrt->PLinkMode != (SK_U8)SK_LMODE_AUTOFULL && - pPrt->PLinkMode != (SK_U8)SK_LMODE_AUTOBOTH) { + if (pPrt->PLinkMode != (SK_U8)SK_LMODE_AUTOHALF && + pPrt->PLinkMode != (SK_U8)SK_LMODE_AUTOFULL && + pPrt->PLinkMode != (SK_U8)SK_LMODE_AUTOBOTH) { /* Link is up and no Auto-negotiation should be done */ /* Link speed should be the configured one */ @@ -304,18 +305,18 @@ } /* Set Link Mode Status */ - if (pPrt->PLinkMode == SK_LMODE_FULL) { + if (pPrt->PLinkMode == (SK_U8)SK_LMODE_FULL) { pPrt->PLinkModeStatus = (SK_U8)SK_LMODE_STAT_FULL; } else { - pPrt->PLinkModeStatus = (SK_U8)SK_LMODE_STAT_HALF; + pPrt->PLinkModeStatus = (SK_U8)SK_LMODE_STAT_HALF; } /* No flow control without auto-negotiation */ - pPrt->PFlowCtrlStatus = (SK_U8)SK_FLOW_STAT_NONE; + pPrt->PFlowCtrlStatus = (SK_U8)SK_FLOW_STAT_NONE; /* enable Rx/Tx */ - (void)SkMacRxTxEnable(pAC, IoC, Port); + (void)SkMacRxTxEnable(pAC, IoC, Port); } } /* SkHWLinkUp */ @@ -329,14 +330,16 @@ * Returns: N/A */ static void SkMacParity( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ -int Port) /* Port Index of the port failed */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O context */ +int Port) /* Port Index (MAC_1 + n) */ { SK_EVPARA Para; SK_GEPORT *pPrt; /* GIni Port struct pointer */ SK_U32 TxMax; /* Tx Max Size Counter */ + TxMax = 0; + pPrt = &pAC->GIni.GP[Port]; /* Clear IRQ Tx Parity Error */ @@ -355,7 +358,7 @@ pAC->GIni.GIChipRev == 0) ? GMF_CLI_TX_FC : GMF_CLI_TX_PE)); } #endif /* YUKON */ - + if (pPrt->PCheckPar) { if (Port == MAC_1) { @@ -366,7 +369,7 @@ } Para.Para64 = Port; SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para); - + Para.Para32[0] = Port; SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para); @@ -378,7 +381,7 @@ if (pAC->GIni.GIGenesis) { /* Snap statistic counters */ (void)SkXmUpdateStats(pAC, IoC, Port); - + (void)SkXmMacStatistic(pAC, IoC, Port, XM_TXF_MAX_SZ, &TxMax); } #endif /* GENESIS */ @@ -399,15 +402,15 @@ /****************************************************************************** * - * SkGeHwErr() - Hardware Error service routine + * SkGeYuHwErr() - Hardware Error service routine (Genesis and Yukon) * * Description: handles all HW Error interrupts * * Returns: N/A */ -static void SkGeHwErr( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +static void SkGeYuHwErr( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O context */ SK_U32 HwStatus) /* Interrupt status word */ { SK_EVPARA Para; @@ -423,10 +426,10 @@ } /* Reset all bits in the PCI STATUS register */ - SK_IN16(IoC, PCI_C(PCI_STATUS), &Word); - + SK_IN16(IoC, PCI_C(pAC, PCI_STATUS), &Word); + SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON); - SK_OUT16(IoC, PCI_C(PCI_STATUS), (SK_U16)(Word | PCI_ERRBITS)); + SK_OUT16(IoC, PCI_C(pAC, PCI_STATUS), (SK_U16)(Word | PCI_ERRBITS)); SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF); Para.Para64 = 0; @@ -484,14 +487,18 @@ #endif /* YUKON */ if ((HwStatus & IS_RAM_RD_PAR) != 0) { + SK_OUT16(IoC, B3_RI_CTRL, RI_CLR_RD_PERR); + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E014, SKERR_SIRQ_E014MSG); Para.Para64 = 0; SkEventQueue(pAC, SKGE_DRV, SK_DRV_ADAP_FAIL, Para); } if ((HwStatus & IS_RAM_WR_PAR) != 0) { + SK_OUT16(IoC, B3_RI_CTRL, RI_CLR_WR_PERR); + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E015, SKERR_SIRQ_E015MSG); Para.Para64 = 0; SkEventQueue(pAC, SKGE_DRV, SK_DRV_ADAP_FAIL, Para); @@ -512,7 +519,7 @@ SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E018, SKERR_SIRQ_E018MSG); Para.Para64 = MAC_1; SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para); - + Para.Para32[0] = MAC_1; SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para); } @@ -524,37 +531,286 @@ SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E019, SKERR_SIRQ_E019MSG); Para.Para64 = MAC_2; SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para); - + Para.Para32[0] = MAC_2; SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para); } -} /* SkGeHwErr */ +} /* SkGeYuHwErr */ + +#ifdef YUK2 +/****************************************************************************** + * + * SkYuk2HwPortErr() - Service HW Errors for specified port (Yukon-2 only) + * + * Description: handles the HW Error interrupts for a specific port. + * + * Returns: N/A + */ +static void SkYuk2HwPortErr( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +SK_U32 HwStatus, /* Interrupt status word */ +int Port) /* Port Index (MAC_1 + n) */ +{ + SK_EVPARA Para; + int Queue; + + if (Port == MAC_2) { + HwStatus >>= 8; + } + + if ((HwStatus & Y2_HWE_L1_MASK) == 0) { + return; + } + + if ((HwStatus & Y2_IS_PAR_RD1) != 0) { + /* Clear IRQ */ + SK_OUT16(IoC, SELECT_RAM_BUFFER(Port, B3_RI_CTRL), RI_CLR_RD_PERR); + + if (Port == MAC_1) { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E028, SKERR_SIRQ_E028MSG); + } + else { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E030, SKERR_SIRQ_E030MSG); + } + } + + if ((HwStatus & Y2_IS_PAR_WR1) != 0) { + /* Clear IRQ */ + SK_OUT16(IoC, SELECT_RAM_BUFFER(Port, B3_RI_CTRL), RI_CLR_WR_PERR); + if (Port == MAC_1) { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E029, SKERR_SIRQ_E029MSG); + } + else { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E031, SKERR_SIRQ_E031MSG); + } + } + + if ((HwStatus & Y2_IS_PAR_MAC1) != 0) { + /* Clear IRQ */ + SK_OUT8(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), GMF_CLI_TX_PE); + + if (Port == MAC_1) { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E016, SKERR_SIRQ_E016MSG); + } + else { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E017, SKERR_SIRQ_E017MSG); + } + } + + if ((HwStatus & Y2_IS_PAR_RX1) != 0) { + if (Port == MAC_1) { + Queue = Q_R1; + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E018, SKERR_SIRQ_E018MSG); + } + else { + Queue = Q_R2; + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E019, SKERR_SIRQ_E019MSG); + } + /* Clear IRQ */ + SK_OUT32(IoC, Q_ADDR(Queue, Q_CSR), BMU_CLR_IRQ_PAR); + } + + if ((HwStatus & Y2_IS_TCP_TXS1) != 0) { + if (Port == MAC_1) { + Queue = Q_XS1; + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E033, SKERR_SIRQ_E033MSG); + } + else { + Queue = Q_XS2; + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E035, SKERR_SIRQ_E035MSG); + } + /* Clear IRQ */ + SK_OUT32(IoC, Q_ADDR(Queue, Q_CSR), BMU_CLR_IRQ_TCP); + } + + if ((HwStatus & Y2_IS_TCP_TXA1) != 0) { + if (Port == MAC_1) { + Queue = Q_XA1; + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E032, SKERR_SIRQ_E032MSG); + } + else { + Queue = Q_XA2; + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E034, SKERR_SIRQ_E034MSG); + } + /* Clear IRQ */ + SK_OUT32(IoC, Q_ADDR(Queue, Q_CSR), BMU_CLR_IRQ_TCP); + } + + Para.Para64 = Port; + SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para); + + Para.Para32[0] = Port; + SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para); + +} /* SkYuk2HwPortErr */ /****************************************************************************** * - * SkGeSirqIsr() - Special Interrupt Service Routine + * SkYuk2HwErr() - Hardware Error service routine (Yukon-2 only) * - * Description: handles all non data transfer specific interrupts (slow path) + * Description: handles all HW Error interrupts + * + * Returns: N/A + */ +static void SkYuk2HwErr( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +SK_U32 HwStatus) /* Interrupt status word */ +{ + SK_EVPARA Para; + SK_U16 Word; + SK_U32 DWord; + SK_U32 TlpHead[4]; + int i; + + /* This is necessary only for Rx timing measurements */ + if ((HwStatus & Y2_IS_TIST_OV) != 0) { + /* increment Time Stamp Timer counter (high) */ + pAC->GIni.GITimeStampCnt++; + + /* Clear Time Stamp Timer IRQ */ + SK_OUT8(IoC, GMAC_TI_ST_CTRL, (SK_U8)GMT_ST_CLR_IRQ); + } + + /* Evaluate Y2_IS_PCI_NEXP before Y2_IS_MST_ERR or Y2_IS_IRQ_STAT */ + if ((HwStatus & Y2_IS_PCI_NEXP) != 0) { + /* PCI-Express Error occured which is not described in PEX spec. */ + /* + * This error is also mapped either to Master Abort (Y2_IS_MST_ERR) + * or Target Abort (Y2_IS_IRQ_STAT) bit and can only be cleared there. + * Therefore handle this event just by printing an error log entry. + */ + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E027, SKERR_SIRQ_E027MSG); + } + + if ((HwStatus & (Y2_IS_MST_ERR | Y2_IS_IRQ_STAT)) != 0) { + /* PCI Errors occured */ + if ((HwStatus & Y2_IS_IRQ_STAT) != 0) { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E013, SKERR_SIRQ_E013MSG); + } + else { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E012, SKERR_SIRQ_E012MSG); + } + + /* Reset all bits in the PCI STATUS register */ + SK_IN16(IoC, PCI_C(pAC, PCI_STATUS), &Word); + + SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON); + SK_OUT16(IoC, PCI_C(pAC, PCI_STATUS), (SK_U16)(Word | PCI_ERRBITS)); + SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF); + + Para.Para64 = 0; + SkEventQueue(pAC, SKGE_DRV, SK_DRV_ADAP_FAIL, Para); + } + + /* check for PCI-Express Uncorrectable Error*/ + if ((HwStatus & Y2_IS_PCI_EXP) != 0) { + /* + * On PCI-Express bus bridges are called root complexes (RC). + * PCI-Express errors are recognized by the root complex too, + * which requests the system to handle the problem. After error + * occurence it may be that no access to the adapter may be performed + * any longer. + */ + + /* Get uncorrectable error status */ + SK_IN32(IoC, PCI_C(pAC, PEX_UNC_ERR_STAT), &DWord); + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, + ("PEX Uncorr.Error Status: 0x%08lX\n", DWord)); + + if (DWord != PEX_UNSUP_REQ) { + /* ignore Unsupported Request Errors */ + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E026, SKERR_SIRQ_E026MSG); + } + + if ((DWord & (PEX_FATAL_ERRORS | PEX_POIS_TLP)) != 0) { + /* + * Stop only, if the uncorrectable error is fatal or + * Poisoned TLP occured + */ + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, ("Header Log:")); + + for (i = 0; i < 4; i++) { + /* get TLP Header from Log Registers */ + SK_IN32(IoC, PCI_C(pAC, PEX_HEADER_LOG + i*4), TlpHead + i); + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, + (" 0x%08lX", TlpHead[i])); + } + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, ("\n")); + + /* check for vendor defined broadcast message */ + if (TlpHead[0] == 0x73004001 && (SK_U8)TlpHead[1] == 0x7f) { + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, + ("Vendor defined broadcast message\n")); + } + else { + Para.Para64 = 0; + SkEventQueue(pAC, SKGE_DRV, SK_DRV_ADAP_FAIL, Para); + + pAC->GIni.GIValHwIrqMask &= ~Y2_IS_PCI_EXP; + /* Rewrite HW IRQ mask */ + SK_OUT32(IoC, B0_HWE_IMSK, pAC->GIni.GIValHwIrqMask); + } + } + /* clear the interrupt */ + SK_OUT32(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON); + SK_OUT32(IoC, PCI_C(pAC, PEX_UNC_ERR_STAT), 0xffffffffUL); + SK_OUT32(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF); + } + + for (i = 0; i < pAC->GIni.GIMacsFound; i++) { + + SkYuk2HwPortErr(pAC, IoC, HwStatus, i); + } + +} /* SkYuk2HwErr */ +#endif /* YUK2 */ + +/****************************************************************************** + * + * SkGeSirqIsr() - Wrapper for Special Interrupt Service Routine + * + * Description: calls the preselected special ISR (slow path) * * Returns: N/A */ void SkGeSirqIsr( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O context */ +SK_U32 Istatus) /* Interrupt status word */ +{ + pAC->GIni.GIFunc.pSkGeSirqIsr(pAC, IoC, Istatus); +} + +/****************************************************************************** + * + * SkGeYuSirqIsr() - Special Interrupt Service Routine + * + * Description: handles all non data transfer specific interrupts (slow path) + * + * Returns: N/A + */ +void SkGeYuSirqIsr( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ SK_U32 Istatus) /* Interrupt status word */ { SK_EVPARA Para; SK_U32 RegVal32; /* Read register value */ SK_GEPORT *pPrt; /* GIni Port struct pointer */ - SK_U16 PhyInt; + SK_U16 PhyInt; int i; if (((Istatus & IS_HW_ERR) & pAC->GIni.GIValIrqMask) != 0) { /* read the HW Error Interrupt source */ SK_IN32(IoC, B0_HWE_ISRC, &RegVal32); - - SkGeHwErr(pAC, IoC, RegVal32); + + SkGeYuHwErr(pAC, IoC, RegVal32); } /* @@ -569,7 +825,7 @@ } if (((Istatus & (IS_PA_TO_RX2 | IS_PA_TO_TX2)) != 0) && - pAC->GIni.GP[MAC_2].PState == SK_PRT_RESET) { + pAC->GIni.GP[MAC_2].PState == SK_PRT_RESET) { /* MAC 2 was not initialized but Packet timeout occured */ SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E005, SKERR_SIRQ_E005MSG); @@ -590,8 +846,8 @@ } if ((Istatus & IS_PA_TO_TX1) != 0) { - - pPrt = &pAC->GIni.GP[0]; + + pPrt = &pAC->GIni.GP[MAC_1]; /* May be a normal situation in a server with a slow network */ SK_OUT16(IoC, B3_PA_CTRL, PA_CLR_TO_TX1); @@ -612,25 +868,18 @@ * we ignore those */ pPrt->HalfDupTimerActive = SK_TRUE; -#ifdef XXX - Len = sizeof(SK_U64); - SkPnmiGetVar(pAC, IoC, OID_SKGE_STAT_TX_OCTETS, (char *)&Octets, - &Len, (SK_U32)SK_PNMI_PORT_PHYS2INST(pAC, 0), - pAC->Rlmt.Port[0].Net->NetNumber); - - pPrt->LastOctets = Octets; -#endif /* XXX */ + /* Snap statistic counters */ (void)SkXmUpdateStats(pAC, IoC, 0); (void)SkXmMacStatistic(pAC, IoC, 0, XM_TXO_OK_HI, &RegVal32); pPrt->LastOctets = (SK_U64)RegVal32 << 32; - + (void)SkXmMacStatistic(pAC, IoC, 0, XM_TXO_OK_LO, &RegVal32); pPrt->LastOctets += RegVal32; - + Para.Para32[0] = 0; SkTimerStart(pAC, IoC, &pPrt->HalfDupChkTimer, SK_HALFDUP_CHK_TIME, SKGE_HWAC, SK_HWEV_HALFDUP_CHK, Para); @@ -640,8 +889,8 @@ } if ((Istatus & IS_PA_TO_TX2) != 0) { - - pPrt = &pAC->GIni.GP[1]; + + pPrt = &pAC->GIni.GP[MAC_2]; /* May be a normal situation in a server with a slow network */ SK_OUT16(IoC, B3_PA_CTRL, PA_CLR_TO_TX2); @@ -653,25 +902,18 @@ pPrt->PLinkModeStatus == SK_LMODE_STAT_AUTOHALF) && !pPrt->HalfDupTimerActive) { pPrt->HalfDupTimerActive = SK_TRUE; -#ifdef XXX - Len = sizeof(SK_U64); - SkPnmiGetVar(pAC, IoC, OID_SKGE_STAT_TX_OCTETS, (char *)&Octets, - &Len, (SK_U32)SK_PNMI_PORT_PHYS2INST(pAC, 1), - pAC->Rlmt.Port[1].Net->NetNumber); - - pPrt->LastOctets = Octets; -#endif /* XXX */ + /* Snap statistic counters */ (void)SkXmUpdateStats(pAC, IoC, 1); (void)SkXmMacStatistic(pAC, IoC, 1, XM_TXO_OK_HI, &RegVal32); pPrt->LastOctets = (SK_U64)RegVal32 << 32; - + (void)SkXmMacStatistic(pAC, IoC, 1, XM_TXO_OK_LO, &RegVal32); pPrt->LastOctets += RegVal32; - + Para.Para32[0] = 1; SkTimerStart(pAC, IoC, &pPrt->HalfDupChkTimer, SK_HALFDUP_CHK_TIME, SKGE_HWAC, SK_HWEV_HALFDUP_CHK, Para); @@ -684,6 +926,7 @@ if ((Istatus & IS_R1_C) != 0) { /* Clear IRQ */ SK_OUT32(IoC, B0_R1_CSR, CSR_IRQ_CL_C); + SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E006, SKERR_SIRQ_E006MSG); Para.Para64 = MAC_1; @@ -695,6 +938,7 @@ if ((Istatus & IS_R2_C) != 0) { /* Clear IRQ */ SK_OUT32(IoC, B0_R2_CSR, CSR_IRQ_CL_C); + SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E007, SKERR_SIRQ_E007MSG); Para.Para64 = MAC_2; @@ -706,6 +950,7 @@ if ((Istatus & IS_XS1_C) != 0) { /* Clear IRQ */ SK_OUT32(IoC, B0_XS1_CSR, CSR_IRQ_CL_C); + SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E008, SKERR_SIRQ_E008MSG); Para.Para64 = MAC_1; @@ -717,6 +962,7 @@ if ((Istatus & IS_XA1_C) != 0) { /* Clear IRQ */ SK_OUT32(IoC, B0_XA1_CSR, CSR_IRQ_CL_C); + SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E009, SKERR_SIRQ_E009MSG); Para.Para64 = MAC_1; @@ -728,6 +974,7 @@ if ((Istatus & IS_XS2_C) != 0) { /* Clear IRQ */ SK_OUT32(IoC, B0_XS2_CSR, CSR_IRQ_CL_C); + SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E010, SKERR_SIRQ_E010MSG); Para.Para64 = MAC_2; @@ -739,6 +986,7 @@ if ((Istatus & IS_XA2_C) != 0) { /* Clear IRQ */ SK_OUT32(IoC, B0_XA2_CSR, CSR_IRQ_CL_C); + SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E011, SKERR_SIRQ_E011MSG); Para.Para64 = MAC_2; @@ -751,39 +999,37 @@ if ((Istatus & IS_EXT_REG) != 0) { /* Test IRQs from PHY */ for (i = 0; i < pAC->GIni.GIMacsFound; i++) { - + pPrt = &pAC->GIni.GP[i]; - + if (pPrt->PState == SK_PRT_RESET) { continue; } - + #ifdef GENESIS if (pAC->GIni.GIGenesis) { - + switch (pPrt->PhyType) { - + case SK_PHY_XMAC: break; - + case SK_PHY_BCOM: SkXmPhyRead(pAC, IoC, i, PHY_BCOM_INT_STAT, &PhyInt); - + if ((PhyInt & ~PHY_B_DEF_MSK) != 0) { SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, - ("Port %d Bcom Int: 0x%04X\n", - i, PhyInt)); + ("Port %d PHY Int: 0x%04X\n", i, PhyInt)); SkPhyIsrBcom(pAC, IoC, i, PhyInt); } break; #ifdef OTHER_PHY case SK_PHY_LONE: SkXmPhyRead(pAC, IoC, i, PHY_LONE_INT_STAT, &PhyInt); - + if ((PhyInt & PHY_L_DEF_MSK) != 0) { SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, - ("Port %d Lone Int: %x\n", - i, PhyInt)); + ("Port %d PHY Int: 0x%04X\n", i, PhyInt)); SkPhyIsrLone(pAC, IoC, i, PhyInt); } break; @@ -791,7 +1037,7 @@ } } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { /* Read PHY Interrupt Status */ @@ -799,8 +1045,7 @@ if ((PhyInt & PHY_M_DEF_MSK) != 0) { SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, - ("Port %d Marv Int: 0x%04X\n", - i, PhyInt)); + ("Port %d PHY Int: 0x%04X\n", i, PhyInt)); SkPhyIsrGmac(pAC, IoC, i, PhyInt); } } @@ -808,13 +1053,13 @@ } } - /* I2C Ready interrupt */ + /* TWSI Ready interrupt */ if ((Istatus & IS_I2C_READY) != 0) { #ifdef SK_SLIM - SK_OUT32(IoC, B2_I2C_IRQ, I2C_CLR_IRQ); -#else + SK_OUT32(IoC, B2_I2C_IRQ, I2C_CLR_IRQ); +#else SkI2cIsr(pAC, IoC); -#endif +#endif } /* SW forced interrupt */ @@ -829,7 +1074,7 @@ * us only a link going down. */ /* clear interrupt */ - SK_OUT8(IoC, MR_ADDR(MAC_1, LNK_SYNC_CTRL), LED_CLR_IRQ); + SK_OUT8(IoC, MR_ADDR(MAC_1, LNK_SYNC_CTRL), LNK_CLR_IRQ); } /* Check MAC after link sync counter */ @@ -844,7 +1089,7 @@ * us only a link going down. */ /* clear interrupt */ - SK_OUT8(IoC, MR_ADDR(MAC_2, LNK_SYNC_CTRL), LED_CLR_IRQ); + SK_OUT8(IoC, MR_ADDR(MAC_2, LNK_SYNC_CTRL), LNK_CLR_IRQ); } /* Check MAC after link sync counter */ @@ -860,13 +1105,189 @@ /* read the HW Error Interrupt source */ SK_IN32(IoC, B0_HWE_ISRC, &RegVal32); - SkGeHwErr(pAC, IoC, RegVal32); + SkGeYuHwErr(pAC, IoC, RegVal32); } SkHwtIsr(pAC, IoC); } -} /* SkGeSirqIsr */ +} /* SkGeYuSirqIsr */ + +#ifdef YUK2 +/****************************************************************************** + * + * SkYuk2PortSirq() - Service HW Errors for specified port (Yukon-2 only) + * + * Description: handles the HW Error interrupts for a specific port. + * + * Returns: N/A + */ +static void SkYuk2PortSirq( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +SK_U32 IStatus, /* Interrupt status word */ +int Port) /* Port Index (MAC_1 + n) */ +{ + SK_EVPARA Para; + int Queue; + SK_U16 PhyInt; + + if (Port == MAC_2) { + IStatus >>= 8; + } + + /* Interrupt from PHY */ + if ((IStatus & Y2_IS_IRQ_PHY1) != 0) { + /* Read PHY Interrupt Status */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_INT_STAT, &PhyInt); + + if ((PhyInt & PHY_M_DEF_MSK) != 0) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, + ("Port %d PHY Int: 0x%04X\n", Port, PhyInt)); + SkPhyIsrGmac(pAC, IoC, Port, PhyInt); + } + } + + /* Interrupt from MAC */ + if ((IStatus & Y2_IS_IRQ_MAC1) != 0) { + SkMacIrq(pAC, IoC, Port); + } + + if ((IStatus & (Y2_IS_CHK_RX1 | Y2_IS_CHK_TXS1 | Y2_IS_CHK_TXA1)) != 0) { + if ((IStatus & Y2_IS_CHK_RX1) != 0) { + if (Port == MAC_1) { + Queue = Q_R1; + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E006, + SKERR_SIRQ_E006MSG); + } + else { + Queue = Q_R2; + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E007, + SKERR_SIRQ_E007MSG); + } + /* Clear IRQ */ + SK_OUT32(IoC, Q_ADDR(Queue, Q_CSR), BMU_CLR_IRQ_CHK); + } + + if ((IStatus & Y2_IS_CHK_TXS1) != 0) { + if (Port == MAC_1) { + Queue = Q_XS1; + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E008, + SKERR_SIRQ_E008MSG); + } + else { + Queue = Q_XS2; + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E010, + SKERR_SIRQ_E010MSG); + } + /* Clear IRQ */ + SK_OUT32(IoC, Q_ADDR(Queue, Q_CSR), BMU_CLR_IRQ_CHK); + } + + if ((IStatus & Y2_IS_CHK_TXA1) != 0) { + if (Port == MAC_1) { + Queue = Q_XA1; + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E009, + SKERR_SIRQ_E009MSG); + } + else { + Queue = Q_XA2; + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E011, + SKERR_SIRQ_E011MSG); + } + /* Clear IRQ */ + SK_OUT32(IoC, Q_ADDR(Queue, Q_CSR), BMU_CLR_IRQ_CHK); + } + + Para.Para64 = Port; + SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para); + + Para.Para32[0] = Port; + SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para); + } +} /* SkYuk2PortSirq */ +#endif /* YUK2 */ + +/****************************************************************************** + * + * SkYuk2SirqIsr() - Special Interrupt Service Routine (Yukon-2 only) + * + * Description: handles all non data transfer specific interrupts (slow path) + * + * Returns: N/A + */ +void SkYuk2SirqIsr( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +SK_U32 Istatus) /* Interrupt status word */ +{ +#ifdef YUK2 + SK_EVPARA Para; + SK_U32 RegVal32; /* Read register value */ + SK_U8 Value; + + /* HW Error indicated ? */ + if (((Istatus & Y2_IS_HW_ERR) & pAC->GIni.GIValIrqMask) != 0) { + /* read the HW Error Interrupt source */ + SK_IN32(IoC, B0_HWE_ISRC, &RegVal32); + + SkYuk2HwErr(pAC, IoC, RegVal32); + } + + /* Interrupt from ASF Subsystem */ + if ((Istatus & Y2_IS_ASF) != 0) { + /* clear IRQ */ + /* later on clearing should be done in ASF ISR handler */ + SK_IN8(IoC, B28_Y2_ASF_STAT_CMD, &Value); + Value |= Y2_ASF_CLR_HSTI; + SK_OUT8(IoC, B28_Y2_ASF_STAT_CMD, Value); + /* Call IRQ handler in ASF Module */ + /* TBD */ + } + + /* Check IRQ from polling unit */ + if ((Istatus & Y2_IS_POLL_CHK) != 0) { + /* Clear IRQ */ + SK_OUT32(IoC, POLL_CTRL, PC_CLR_IRQ_CHK); + + SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_SIRQ_E036, + SKERR_SIRQ_E036MSG); + Para.Para64 = 0; + SkEventQueue(pAC, SKGE_DRV, SK_DRV_ADAP_FAIL, Para); + } + + /* TWSI Ready interrupt */ + if ((Istatus & Y2_IS_TWSI_RDY) != 0) { +#ifdef SK_SLIM + SK_OUT32(IoC, B2_I2C_IRQ, I2C_CLR_IRQ); +#else + SkI2cIsr(pAC, IoC); +#endif + } + + /* SW forced interrupt */ + if ((Istatus & Y2_IS_IRQ_SW) != 0) { + /* clear the software IRQ */ + SK_OUT8(IoC, B0_CTST, CS_CL_SW_IRQ); + } + + if ((Istatus & Y2_IS_L1_MASK) != 0) { + SkYuk2PortSirq(pAC, IoC, Istatus, MAC_1); + } + + if ((Istatus & Y2_IS_L2_MASK) != 0) { + SkYuk2PortSirq(pAC, IoC, Istatus, MAC_2); + } + + /* Timer interrupt (served last) */ + if ((Istatus & Y2_IS_TIMINT) != 0) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, + ("Timer Int: 0x%08lX\n", Istatus)); + SkHwtIsr(pAC, IoC); + } +#endif /* YUK2 */ + +} /* SkYuk2SirqIsr */ #ifdef GENESIS @@ -880,8 +1301,8 @@ */ static int SkGePortCheckShorts( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* IO Context */ -int Port) /* Which port should be checked */ +SK_IOC IoC, /* I/O Context */ +int Port) /* Port Index (MAC_1 + n) */ { SK_U32 Shorts; /* Short Event Counter */ SK_U32 CheckShorts; /* Check value for Short Event Counter */ @@ -909,9 +1330,9 @@ RxCts = 0; for (i = 0; i < sizeof(SkGeRxRegs)/sizeof(SkGeRxRegs[0]); i++) { - + (void)SkXmMacStatistic(pAC, IoC, Port, SkGeRxRegs[i], &RxTmp); - + RxCts += (SK_U64)RxTmp; } @@ -928,11 +1349,11 @@ CheckShorts = 2; (void)SkXmMacStatistic(pAC, IoC, Port, XM_RXF_FCS_ERR, &FcsErrCts); - - if (pPrt->PLinkModeConf == SK_LMODE_AUTOSENSE && - pPrt->PLipaAutoNeg == SK_LIPA_UNKNOWN && - (pPrt->PLinkMode == SK_LMODE_HALF || - pPrt->PLinkMode == SK_LMODE_FULL)) { + + if (pPrt->PLinkModeConf == (SK_U8)SK_LMODE_AUTOSENSE && + pPrt->PLipaAutoNeg == (SK_U8)SK_LIPA_UNKNOWN && + (pPrt->PLinkMode == (SK_U8)SK_LMODE_HALF || + pPrt->PLinkMode == (SK_U8)SK_LMODE_FULL)) { /* * This is autosensing and we are in the fallback * manual full/half duplex mode. @@ -941,16 +1362,16 @@ /* Nothing received, restart link */ pPrt->PPrevFcs = FcsErrCts; pPrt->PPrevShorts = Shorts; - + return(SK_HW_PS_RESTART); } else { - pPrt->PLipaAutoNeg = SK_LIPA_MANUAL; + pPrt->PLipaAutoNeg = (SK_U8)SK_LIPA_MANUAL; } } if (((RxCts - pPrt->PPrevRx) > pPrt->PRxLim) || - (!(FcsErrCts - pPrt->PPrevFcs))) { + (!(FcsErrCts - pPrt->PPrevFcs))) { /* * Note: The compare with zero above has to be done the way shown, * otherwise the Linux driver will have a problem. @@ -995,29 +1416,25 @@ */ static int SkGePortCheckUp( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* IO Context */ -int Port) /* Which port should be checked */ +SK_IOC IoC, /* I/O Context */ +int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; /* GIni Port struct pointer */ SK_BOOL AutoNeg; /* Is Auto-negotiation used ? */ int Rtv; /* Return value */ Rtv = SK_HW_PS_NONE; - + pPrt = &pAC->GIni.GP[Port]; - if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) { - AutoNeg = SK_FALSE; - } - else { - AutoNeg = SK_TRUE; - } + AutoNeg = pPrt->PLinkMode != SK_LMODE_HALF && + pPrt->PLinkMode != SK_LMODE_FULL; #ifdef GENESIS if (pAC->GIni.GIGenesis) { switch (pPrt->PhyType) { - + case SK_PHY_XMAC: Rtv = SkGePortCheckUpXmac(pAC, IoC, Port, AutoNeg); break; @@ -1038,7 +1455,7 @@ #ifdef YUKON if (pAC->GIni.GIYukon) { - + Rtv = SkGePortCheckUpGmac(pAC, IoC, Port, AutoNeg); } #endif /* YUKON */ @@ -1059,8 +1476,8 @@ */ static int SkGePortCheckUpXmac( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* IO Context */ -int Port, /* Which port should be checked */ +SK_IOC IoC, /* I/O Context */ +int Port, /* Port Index (MAC_1 + n) */ SK_BOOL AutoNeg) /* Is Auto-negotiation used ? */ { SK_U32 Shorts; /* Short Event Counter */ @@ -1098,7 +1515,7 @@ XM_IN16(IoC, Port, XM_ISRC, &Isrc); IsrcSum |= Isrc; SkXmAutoNegLipaXmac(pAC, IoC, Port, IsrcSum); - + if ((Isrc & XM_IS_INP_ASS) == 0) { /* It has been in sync since last time */ /* Restart the PORT */ @@ -1117,14 +1534,14 @@ * Link Restart Workaround: * it may be possible that the other Link side * restarts its link as well an we detect - * another LinkBroken. To prevent this + * another PLinkBroken. To prevent this * happening we check for a maximum number * of consecutive restart. If those happens, * we do NOT restart the active link and * check whether the link is now o.k. */ pPrt->PLinkResCt++; - + pPrt->PAutoNegTimeOut = 0; if (pPrt->PLinkResCt < SK_MAX_LRESTART) { @@ -1132,13 +1549,13 @@ } pPrt->PLinkResCt = 0; - + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("Do NOT restart on Port %d %x %x\n", Port, Isrc, IsrcSum)); } else { pPrt->PIsave = (SK_U16)(IsrcSum & XM_IS_AND); - + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("Save Sync/nosync Port %d %x %x\n", Port, Isrc, IsrcSum)); @@ -1165,7 +1582,7 @@ if ((Isrc & XM_IS_INP_ASS) != 0) { pPrt->PLinkBroken = SK_TRUE; /* Re-Init Link partner Autoneg flag */ - pPrt->PLipaAutoNeg = SK_LIPA_UNKNOWN; + pPrt->PLipaAutoNeg = (SK_U8)SK_LIPA_UNKNOWN; SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, ("Link broken Port %d\n", Port)); @@ -1178,7 +1595,7 @@ } else { SkXmAutoNegLipaXmac(pAC, IoC, Port, Isrc); - + if (SkGePortCheckShorts(pAC, IoC, Port) == SK_HW_PS_RESTART) { return(SK_HW_PS_RESTART); } @@ -1210,17 +1627,21 @@ } if (AutoNeg) { + /* Auto-Negotiation Done ? */ if ((IsrcSum & XM_IS_AND) != 0) { + SkHWLinkUp(pAC, IoC, Port); + Done = SkMacAutoNegDone(pAC, IoC, Port); + if (Done != SK_AND_OK) { /* Get PHY parameters, for debugging only */ SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_AUNE_LP, &LpAb); SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_RES_ABI, &ResAb); - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("AutoNeg FAIL Port %d (LpAb %x, ResAb %x)\n", - Port, LpAb, ResAb)); - + Port, LpAb, ResAb)); + /* Try next possible mode */ NextMode = SkHWSenseGetNext(pAC, IoC, Port); SkHWLinkDown(pAC, IoC, Port); @@ -1236,42 +1657,41 @@ * (clear Page Received bit if set) */ SkXmPhyRead(pAC, IoC, Port, PHY_XMAC_AUNE_EXP, &ExtStat); - + return(SK_HW_PS_LINK); } - + /* AutoNeg not done, but HW link is up. Check for timeouts */ - pPrt->PAutoNegTimeOut++; - if (pPrt->PAutoNegTimeOut >= SK_AND_MAX_TO) { + if (pPrt->PAutoNegTimeOut++ >= SK_AND_MAX_TO) { /* Increase the Timeout counter */ pPrt->PAutoNegTOCt++; /* Timeout occured */ SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, ("AutoNeg timeout Port %d\n", Port)); - if (pPrt->PLinkModeConf == SK_LMODE_AUTOSENSE && - pPrt->PLipaAutoNeg != SK_LIPA_AUTO) { + if (pPrt->PLinkModeConf == (SK_U8)SK_LMODE_AUTOSENSE && + pPrt->PLipaAutoNeg != (SK_U8)SK_LIPA_AUTO) { /* Set Link manually up */ SkHWSenseSetNext(pAC, IoC, Port, SK_LMODE_FULL); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, ("Set manual full duplex Port %d\n", Port)); } - if (pPrt->PLinkModeConf == SK_LMODE_AUTOSENSE && - pPrt->PLipaAutoNeg == SK_LIPA_AUTO && + if (pPrt->PLinkModeConf == (SK_U8)SK_LMODE_AUTOSENSE && + pPrt->PLipaAutoNeg == (SK_U8)SK_LIPA_AUTO && pPrt->PAutoNegTOCt >= SK_MAX_ANEG_TO) { /* * This is rather complicated. * we need to check here whether the LIPA_AUTO * we saw before is false alert. We saw at one - * switch ( SR8800) that on boot time it sends + * switch (SR8800) that on boot time it sends * just one auto-neg packet and does no further * auto-negotiation. * Solution: we restart the autosensing after * a few timeouts. */ pPrt->PAutoNegTOCt = 0; - pPrt->PLipaAutoNeg = SK_LIPA_UNKNOWN; + pPrt->PLipaAutoNeg = (SK_U8)SK_LIPA_UNKNOWN; SkHWInitDefSense(pAC, IoC, Port); } @@ -1282,18 +1702,18 @@ else { /* Link is up and we don't need more */ #ifdef DEBUG - if (pPrt->PLipaAutoNeg == SK_LIPA_AUTO) { - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + if (pPrt->PLipaAutoNeg == (SK_U8)SK_LIPA_AUTO) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("ERROR: Lipa auto detected on port %d\n", Port)); } #endif /* DEBUG */ SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, ("Link sync(GP), Port %d\n", Port)); SkHWLinkUp(pAC, IoC, Port); - + /* - * Link sync (GP) and so assume a good connection. But if not received - * a bunch of frames received in a time slot (maybe broken tx cable) + * Link sync (GP) and so assume a good connection. But if no + * bunch of frames received in a time slot (maybe broken Tx cable) * the port is restart. */ return(SK_HW_PS_LINK); @@ -1314,8 +1734,8 @@ */ static int SkGePortCheckUpBcom( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* IO Context */ -int Port, /* Which port should be checked */ +SK_IOC IoC, /* I/O Context */ +int Port, /* Port Index (MAC_1 + n) */ SK_BOOL AutoNeg) /* Is Auto-negotiation used ? */ { SK_GEPORT *pPrt; /* GIni Port struct pointer */ @@ -1334,74 +1754,6 @@ /* Check for No HCD Link events (#10523) */ SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_STAT, &Isrc); -#ifdef xDEBUG - if ((Isrc & ~(PHY_B_IS_HCT | PHY_B_IS_LCT) == - (PHY_B_IS_SCR_S_ER | PHY_B_IS_RRS_CHANGE | PHY_B_IS_LRS_CHANGE)) { - - SK_U32 Stat1, Stat2, Stat3; - - Stat1 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_MASK, &Stat1); - CMSMPrintString( - pAC->pConfigTable, - MSG_TYPE_RUNTIME_INFO, - "CheckUp1 - Stat: %x, Mask: %x", - (void *)Isrc, - (void *)Stat1); - - Stat1 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_CTRL, &Stat1); - Stat2 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_STAT, &Stat2); - Stat1 = Stat1 << 16 | Stat2; - Stat2 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_ADV, &Stat2); - Stat3 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_LP, &Stat3); - Stat2 = Stat2 << 16 | Stat3; - CMSMPrintString( - pAC->pConfigTable, - MSG_TYPE_RUNTIME_INFO, - "Ctrl/Stat: %x, AN Adv/LP: %x", - (void *)Stat1, - (void *)Stat2); - - Stat1 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_EXP, &Stat1); - Stat2 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_EXT_STAT, &Stat2); - Stat1 = Stat1 << 16 | Stat2; - Stat2 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_CTRL, &Stat2); - Stat3 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_STAT, &Stat3); - Stat2 = Stat2 << 16 | Stat3; - CMSMPrintString( - pAC->pConfigTable, - MSG_TYPE_RUNTIME_INFO, - "AN Exp/IEEE Ext: %x, 1000T Ctrl/Stat: %x", - (void *)Stat1, - (void *)Stat2); - - Stat1 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_P_EXT_CTRL, &Stat1); - Stat2 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_P_EXT_STAT, &Stat2); - Stat1 = Stat1 << 16 | Stat2; - Stat2 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &Stat2); - Stat3 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_STAT, &Stat3); - Stat2 = Stat2 << 16 | Stat3; - CMSMPrintString( - pAC->pConfigTable, - MSG_TYPE_RUNTIME_INFO, - "PHY Ext Ctrl/Stat: %x, Aux Ctrl/Stat: %x", - (void *)Stat1, - (void *)Stat2); - } -#endif /* DEBUG */ - if ((Isrc & (PHY_B_IS_NO_HDCL /* | PHY_B_IS_NO_HDC */)) != 0) { /* * Workaround BCom Errata: @@ -1414,14 +1766,6 @@ (SK_U16)(Ctrl & ~PHY_CT_LOOP)); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("No HCD Link event, Port %d\n", Port)); -#ifdef xDEBUG - CMSMPrintString( - pAC->pConfigTable, - MSG_TYPE_RUNTIME_INFO, - "No HCD link event, port %d.", - (void *)Port, - (void *)NULL); -#endif /* DEBUG */ } /* Not obsolete: link status bit is latched to 0 and autoclearing! */ @@ -1431,72 +1775,6 @@ return(SK_HW_PS_NONE); } -#ifdef xDEBUG - { - SK_U32 Stat1, Stat2, Stat3; - - Stat1 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_MASK, &Stat1); - CMSMPrintString( - pAC->pConfigTable, - MSG_TYPE_RUNTIME_INFO, - "CheckUp1a - Stat: %x, Mask: %x", - (void *)Isrc, - (void *)Stat1); - - Stat1 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_CTRL, &Stat1); - Stat2 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_STAT, &PhyStat); - Stat1 = Stat1 << 16 | PhyStat; - Stat2 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_ADV, &Stat2); - Stat3 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_LP, &Stat3); - Stat2 = Stat2 << 16 | Stat3; - CMSMPrintString( - pAC->pConfigTable, - MSG_TYPE_RUNTIME_INFO, - "Ctrl/Stat: %x, AN Adv/LP: %x", - (void *)Stat1, - (void *)Stat2); - - Stat1 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_EXP, &Stat1); - Stat2 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_EXT_STAT, &Stat2); - Stat1 = Stat1 << 16 | Stat2; - Stat2 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_CTRL, &Stat2); - Stat3 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_STAT, &ResAb); - Stat2 = Stat2 << 16 | ResAb; - CMSMPrintString( - pAC->pConfigTable, - MSG_TYPE_RUNTIME_INFO, - "AN Exp/IEEE Ext: %x, 1000T Ctrl/Stat: %x", - (void *)Stat1, - (void *)Stat2); - - Stat1 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_P_EXT_CTRL, &Stat1); - Stat2 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_P_EXT_STAT, &Stat2); - Stat1 = Stat1 << 16 | Stat2; - Stat2 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &Stat2); - Stat3 = 0; - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_STAT, &Stat3); - Stat2 = Stat2 << 16 | Stat3; - CMSMPrintString( - pAC->pConfigTable, - MSG_TYPE_RUNTIME_INFO, - "PHY Ext Ctrl/Stat: %x, Aux Ctrl/Stat: %x", - (void *)Stat1, - (void *)Stat2); - } -#endif /* DEBUG */ - /* * Here we usually can check whether the link is in sync and * auto-negotiation is done. @@ -1505,7 +1783,7 @@ SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_STAT, &PhyStat); SkMacAutoNegLipaPhy(pAC, IoC, Port, PhyStat); - + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("CheckUp Port %d, PhyStat: 0x%04X\n", Port, PhyStat)); @@ -1513,88 +1791,62 @@ if ((ResAb & PHY_B_1000S_MSF) != 0) { /* Error */ - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("Master/Slave Fault port %d\n", Port)); - + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, + ("Master/Slave Fault, ResAb: 0x%04X\n", ResAb)); + pPrt->PAutoNegFail = SK_TRUE; pPrt->PMSStatus = SK_MS_STAT_FAULT; - + return(SK_HW_PS_RESTART); } if ((PhyStat & PHY_ST_LSYNC) == 0) { return(SK_HW_PS_NONE); } - + pPrt->PMSStatus = ((ResAb & PHY_B_1000S_MSR) != 0) ? SK_MS_STAT_MASTER : SK_MS_STAT_SLAVE; - + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("Port %d, ResAb: 0x%04X\n", Port, ResAb)); if (AutoNeg) { + /* Auto-Negotiation Over ? */ if ((PhyStat & PHY_ST_AN_OVER) != 0) { - + SkHWLinkUp(pAC, IoC, Port); - + Done = SkMacAutoNegDone(pAC, IoC, Port); - + if (Done != SK_AND_OK) { #ifdef DEBUG /* Get PHY parameters, for debugging only */ SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUNE_LP, &LpAb); SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_STAT, &ExtStat); - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("AutoNeg FAIL Port %d (LpAb %x, 1000TStat %x)\n", Port, LpAb, ExtStat)); #endif /* DEBUG */ return(SK_HW_PS_RESTART); } else { -#ifdef xDEBUG - /* Dummy read ISR to prevent extra link downs/ups */ - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_STAT, &ExtStat); - - if ((ExtStat & ~(PHY_B_IS_HCT | PHY_B_IS_LCT)) != 0) { - CMSMPrintString( - pAC->pConfigTable, - MSG_TYPE_RUNTIME_INFO, - "CheckUp2 - Stat: %x", - (void *)ExtStat, - (void *)NULL); - } -#endif /* DEBUG */ return(SK_HW_PS_LINK); } } } else { /* !AutoNeg */ - /* Link is up and we don't need more. */ + /* Link is up and we don't need more */ #ifdef DEBUG - if (pPrt->PLipaAutoNeg == SK_LIPA_AUTO) { - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + if (pPrt->PLipaAutoNeg == (SK_U8)SK_LIPA_AUTO) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("ERROR: Lipa auto detected on port %d\n", Port)); } #endif /* DEBUG */ -#ifdef xDEBUG - /* Dummy read ISR to prevent extra link downs/ups */ - SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_INT_STAT, &ExtStat); - - if ((ExtStat & ~(PHY_B_IS_HCT | PHY_B_IS_LCT)) != 0) { - CMSMPrintString( - pAC->pConfigTable, - MSG_TYPE_RUNTIME_INFO, - "CheckUp3 - Stat: %x", - (void *)ExtStat, - (void *)NULL); - } -#endif /* DEBUG */ - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, ("Link sync(GP), Port %d\n", Port)); SkHWLinkUp(pAC, IoC, Port); - + return(SK_HW_PS_LINK); } @@ -1615,20 +1867,17 @@ */ static int SkGePortCheckUpGmac( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* IO Context */ -int Port, /* Which port should be checked */ +SK_IOC IoC, /* I/O Context */ +int Port, /* Port Index (MAC_1 + n) */ SK_BOOL AutoNeg) /* Is Auto-negotiation used ? */ { SK_GEPORT *pPrt; /* GIni Port struct pointer */ int Done; - SK_U16 PhyIsrc; /* PHY Interrupt source */ - SK_U16 PhyStat; /* PPY Status */ + SK_U16 PhyStat; /* PHY Status */ SK_U16 PhySpecStat;/* PHY Specific Status */ SK_U16 ResAb; /* Master/Slave resolution */ SK_EVPARA Para; -#ifdef DEBUG SK_U16 Word; /* I/O helper */ -#endif /* DEBUG */ pPrt = &pAC->GIni.GP[Port]; @@ -1642,94 +1891,125 @@ SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("CheckUp Port %d, PhyStat: 0x%04X\n", Port, PhyStat)); - /* Read PHY Interrupt Status */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_INT_STAT, &PhyIsrc); + SkMacAutoNegLipaPhy(pAC, IoC, Port, PhyStat); - if ((PhyIsrc & PHY_M_IS_AN_COMPL) != 0) { - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("Auto-Negotiation Completed, PhyIsrc: 0x%04X\n", PhyIsrc)); - } + if ((pPrt->PLinkSpeedCap & SK_LSPEED_CAP_1000MBPS) != 0) { - if ((PhyIsrc & PHY_M_IS_LSP_CHANGE) != 0) { - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("Link Speed Changed, PhyIsrc: 0x%04X\n", PhyIsrc)); - } + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_1000T_STAT, &ResAb); - SkMacAutoNegLipaPhy(pAC, IoC, Port, PhyStat); - - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_1000T_STAT, &ResAb); + if ((ResAb & PHY_B_1000S_MSF) != 0) { + /* Error */ + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, + ("Master/Slave Fault, ResAb: 0x%04X\n", ResAb)); - if ((ResAb & PHY_B_1000S_MSF) != 0) { - /* Error */ - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("Master/Slave Fault port %d\n", Port)); - - pPrt->PAutoNegFail = SK_TRUE; - pPrt->PMSStatus = SK_MS_STAT_FAULT; - - return(SK_HW_PS_RESTART); + pPrt->PAutoNegFail = SK_TRUE; + pPrt->PMSStatus = SK_MS_STAT_FAULT; + + return(SK_HW_PS_RESTART); + } } /* Read PHY Specific Status */ SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_STAT, &PhySpecStat); - + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("Phy1000BT: 0x%04X, PhySpecStat: 0x%04X\n", ResAb, PhySpecStat)); #ifdef DEBUG SkGmPhyRead(pAC, IoC, Port, PHY_MARV_AUNE_EXP, &Word); - if ((PhyIsrc & PHY_M_IS_AN_PR) != 0 || (Word & PHY_ANE_RX_PG) != 0 || + if ((Word & PHY_ANE_RX_PG) != 0 || (PhySpecStat & PHY_M_PS_PAGE_REC) != 0) { /* Read PHY Next Page Link Partner */ SkGmPhyRead(pAC, IoC, Port, PHY_MARV_NEPG_LP, &Word); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("Page Received, NextPage: 0x%04X\n", Word)); + ("Page received, NextPage: 0x%04X\n", Word)); } #endif /* DEBUG */ if ((PhySpecStat & PHY_M_PS_LINK_UP) == 0) { + /* Link down */ return(SK_HW_PS_NONE); } - - if ((PhySpecStat & PHY_M_PS_DOWNS_STAT) != 0 || - (PhyIsrc & PHY_M_IS_DOWNSH_DET) != 0) { - /* Downshift detected */ - SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E025, SKERR_SIRQ_E025MSG); - - Para.Para64 = Port; - SkEventQueue(pAC, SKGE_DRV, SK_DRV_DOWNSHIFT_DET, Para); - - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("Downshift detected, PhyIsrc: 0x%04X\n", PhyIsrc)); + +#ifdef XXX + SK_U16 PhyInt; + /* Read PHY Interrupt Status */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_INT_STAT, &PhyInt); + + /* cross check that the link is really up */ + if ((PhyInt & PHY_M_IS_LST_CHANGE) == 0) { + /* Link Status unchanged */ + return(SK_HW_PS_NONE); } +#endif /* XXX */ - pPrt->PMSStatus = ((ResAb & PHY_B_1000S_MSR) != 0) ? - SK_MS_STAT_MASTER : SK_MS_STAT_SLAVE; + if (pAC->GIni.GICopperType) { + + if ((pPrt->PLinkSpeedCap & SK_LSPEED_CAP_1000MBPS) != 0) { + + if ((PhySpecStat & PHY_M_PS_DOWNS_STAT) != 0) { + /* Downshift detected */ + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E025, + SKERR_SIRQ_E025MSG); + + Para.Para64 = Port; + SkEventQueue(pAC, SKGE_DRV, SK_DRV_DOWNSHIFT_DET, Para); - pPrt->PCableLen = (SK_U8)((PhySpecStat & PHY_M_PS_CABLE_MSK) >> 7); + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("Downshift detected, PhySpecStat: 0x%04X\n", PhySpecStat)); + } + + pPrt->PMSStatus = ((ResAb & PHY_B_1000S_MSR) != 0) ? + SK_MS_STAT_MASTER : SK_MS_STAT_SLAVE; + } + if ((PhySpecStat & PHY_M_PS_MDI_X_STAT) != 0) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("MDI Xover detected, PhyStat: 0x%04X\n", PhySpecStat)); + } + + /* on PHY 88E1112 cable length is in Reg. 26, Page 5 */ + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_XL) { + /* save page register */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_EXT_ADR, &Word); + + /* select page 5 to access VCT DSP distance register */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, 5); + + /* get VCT DSP distance */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_EXT_CTRL_2, &PhySpecStat); + + /* restore page register */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, Word); + + pPrt->PCableLen = (SK_U8)(PhySpecStat & PHY_M_EC2_FO_AM_MSK); + } + else { + pPrt->PCableLen = (SK_U8)((PhySpecStat & PHY_M_PS_CABLE_MSK) >> 7); + } + } + if (AutoNeg) { - /* Auto-Negotiation Over ? */ + /* Auto-Negotiation Complete ? */ if ((PhyStat & PHY_ST_AN_OVER) != 0) { - + SkHWLinkUp(pAC, IoC, Port); - + Done = SkMacAutoNegDone(pAC, IoC, Port); - + if (Done != SK_AND_OK) { return(SK_HW_PS_RESTART); } - + return(SK_HW_PS_LINK); } } else { /* !AutoNeg */ - /* Link is up and we don't need more */ #ifdef DEBUG - if (pPrt->PLipaAutoNeg == SK_LIPA_AUTO) { - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + if (pPrt->PLipaAutoNeg == (SK_U8)SK_LIPA_AUTO) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("ERROR: Lipa auto detected on port %d\n", Port)); } #endif /* DEBUG */ @@ -1737,7 +2017,7 @@ SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, ("Link sync, Port %d\n", Port)); SkHWLinkUp(pAC, IoC, Port); - + return(SK_HW_PS_LINK); } @@ -1758,8 +2038,8 @@ */ static int SkGePortCheckUpLone( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* IO Context */ -int Port, /* Which port should be checked */ +SK_IOC IoC, /* I/O Context */ +int Port, /* Port Index (MAC_1 + n) */ SK_BOOL AutoNeg) /* Is Auto-negotiation used ? */ { SK_GEPORT *pPrt; /* GIni Port struct pointer */ @@ -1788,7 +2068,7 @@ StatSum |= PhyStat; SkMacAutoNegLipaPhy(pAC, IoC, Port, PhyStat); - + if ((PhyStat & PHY_ST_LSYNC) == 0) { /* Save Auto-negotiation Done bit */ pPrt->PIsave = (SK_U16)(StatSum & PHY_ST_AN_OVER); @@ -1802,17 +2082,21 @@ } if (AutoNeg) { + /* Auto-Negotiation Over ? */ if ((StatSum & PHY_ST_AN_OVER) != 0) { + SkHWLinkUp(pAC, IoC, Port); + Done = SkMacAutoNegDone(pAC, IoC, Port); + if (Done != SK_AND_OK) { /* Get PHY parameters, for debugging only */ SkXmPhyRead(pAC, IoC, Port, PHY_LONE_AUNE_LP, &LpAb); SkXmPhyRead(pAC, IoC, Port, PHY_LONE_1000T_STAT, &ExtStat); - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("AutoNeg FAIL Port %d (LpAb %x, 1000TStat %x)\n", Port, LpAb, ExtStat)); - + /* Try next possible mode */ NextMode = SkHWSenseGetNext(pAC, IoC, Port); SkHWLinkDown(pAC, IoC, Port); @@ -1833,15 +2117,14 @@ return(SK_HW_PS_LINK); } } - + /* AutoNeg not done, but HW link is up. Check for timeouts */ - pPrt->PAutoNegTimeOut++; - if (pPrt->PAutoNegTimeOut >= SK_AND_MAX_TO) { + if (pPrt->PAutoNegTimeOut++ >= SK_AND_MAX_TO) { /* Timeout occured */ SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, ("AutoNeg timeout Port %d\n", Port)); - if (pPrt->PLinkModeConf == SK_LMODE_AUTOSENSE && - pPrt->PLipaAutoNeg != SK_LIPA_AUTO) { + if (pPrt->PLinkModeConf == (SK_U8)SK_LMODE_AUTOSENSE && + pPrt->PLipaAutoNeg != (SK_U8)SK_LIPA_AUTO) { /* Set Link manually up */ SkHWSenseSetNext(pAC, IoC, Port, SK_LMODE_FULL); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, @@ -1855,8 +2138,8 @@ else { /* Link is up and we don't need more */ #ifdef DEBUG - if (pPrt->PLipaAutoNeg == SK_LIPA_AUTO) { - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + if (pPrt->PLipaAutoNeg == (SK_U8)SK_LIPA_AUTO) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("ERROR: Lipa auto detected on port %d\n", Port)); } #endif /* DEBUG */ @@ -1866,11 +2149,12 @@ * extra link down/ups */ SkXmPhyRead(pAC, IoC, Port, PHY_LONE_INT_STAT, &ExtStat); - + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, ("Link sync(GP), Port %d\n", Port)); + SkHWLinkUp(pAC, IoC, Port); - + return(SK_HW_PS_LINK); } @@ -1889,8 +2173,8 @@ */ static int SkGePortCheckUpNat( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* IO Context */ -int Port, /* Which port should be checked */ +SK_IOC IoC, /* I/O Context */ +int Port, /* Port Index (MAC_1 + n) */ SK_BOOL AutoNeg) /* Is Auto-negotiation used ? */ { /* todo: National */ @@ -1909,12 +2193,12 @@ */ int SkGeSirqEvent( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* Io Context */ +SK_IOC IoC, /* I/O Context */ SK_U32 Event, /* Module specific Event */ SK_EVPARA Para) /* Event specific Parameter */ { SK_GEPORT *pPrt; /* GIni Port struct pointer */ - SK_U32 Port; + int Port; SK_U32 Val32; int PortStat; SK_U8 Val8; @@ -1922,25 +2206,25 @@ SK_U64 Octets; #endif /* GENESIS */ - Port = Para.Para32[0]; + Port = (int)Para.Para32[0]; pPrt = &pAC->GIni.GP[Port]; switch (Event) { case SK_HWEV_WATIM: if (pPrt->PState == SK_PRT_RESET) { - + PortStat = SK_HW_PS_NONE; } else { /* Check whether port came up */ - PortStat = SkGePortCheckUp(pAC, IoC, (int)Port); + PortStat = SkGePortCheckUp(pAC, IoC, Port); } switch (PortStat) { case SK_HW_PS_RESTART: if (pPrt->PHWLinkUp) { /* Set Link to down */ - SkHWLinkDown(pAC, IoC, (int)Port); + SkHWLinkDown(pAC, IoC, Port); /* * Signal directly to RLMT to ensure correct @@ -1958,19 +2242,23 @@ SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_UP, Para); break; } - + /* Start again the check Timer */ if (pPrt->PHWLinkUp) { + Val32 = SK_WA_ACT_TIME; } else { Val32 = SK_WA_INA_TIME; - } - /* Todo: still needed for non-XMAC PHYs??? */ + if (pAC->GIni.GIYukon) { + Val32 *= 5; + } + } /* Start workaround Errata #2 timer */ SkTimerStart(pAC, IoC, &pPrt->PWaTimer, Val32, SKGE_HWAC, SK_HWEV_WATIM, Para); + break; case SK_HWEV_PORT_START: @@ -1982,7 +2270,7 @@ SkRlmtEvent(pAC, IoC, SK_RLMT_LINK_DOWN, Para); } - SkHWLinkDown(pAC, IoC, (int)Port); + SkHWLinkDown(pAC, IoC, Port); /* Schedule Port RESET */ SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_RESET, Para); @@ -1990,6 +2278,7 @@ /* Start workaround Errata #2 timer */ SkTimerStart(pAC, IoC, &pPrt->PWaTimer, SK_WA_INA_TIME, SKGE_HWAC, SK_HWEV_WATIM, Para); + break; case SK_HWEV_PORT_STOP: @@ -2004,7 +2293,7 @@ /* Stop Workaround Timer */ SkTimerStop(pAC, IoC, &pPrt->PWaTimer); - SkHWLinkDown(pAC, IoC, (int)Port); + SkHWLinkDown(pAC, IoC, Port); break; case SK_HWEV_UPDATE_STAT: @@ -2013,7 +2302,7 @@ case SK_HWEV_CLEAR_STAT: /* We do NOT need to clear any statistics */ - for (Port = 0; Port < (SK_U32)pAC->GIni.GIMacsFound; Port++) { + for (Port = 0; Port < pAC->GIni.GIMacsFound; Port++) { pPrt->PPrevRx = 0; pPrt->PPrevFcs = 0; pPrt->PPrevShorts = 0; @@ -2085,23 +2374,18 @@ pPrt->HalfDupTimerActive = SK_FALSE; if (pPrt->PLinkModeStatus == SK_LMODE_STAT_HALF || pPrt->PLinkModeStatus == SK_LMODE_STAT_AUTOHALF) { -#ifdef XXX - Len = sizeof(SK_U64); - SkPnmiGetVar(pAC, IoC, OID_SKGE_STAT_TX_OCTETS, (char *)&Octets, - &Len, (SK_U32)SK_PNMI_PORT_PHYS2INST(pAC, Port), - pAC->Rlmt.Port[Port].Net->NetNumber); -#endif /* XXX */ + /* Snap statistic counters */ (void)SkXmUpdateStats(pAC, IoC, Port); (void)SkXmMacStatistic(pAC, IoC, Port, XM_TXO_OK_HI, &Val32); Octets = (SK_U64)Val32 << 32; - + (void)SkXmMacStatistic(pAC, IoC, Port, XM_TXO_OK_LO, &Val32); Octets += Val32; - + if (pPrt->LastOctets == Octets) { /* Tx hanging, a FIFO flush restarts it */ SkMacFlushTxFifo(pAC, IoC, Port); @@ -2110,7 +2394,7 @@ } break; #endif /* GENESIS */ - + default: SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_SIRQ_E001, SKERR_SIRQ_E001MSG); break; @@ -2131,8 +2415,8 @@ */ static void SkPhyIsrBcom( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* Io Context */ -int Port, /* Port Num = PHY Num */ +SK_IOC IoC, /* I/O Context */ +int Port, /* Port Index (MAC_1 + n) */ SK_U16 IStatus) /* Interrupt Status */ { SK_GEPORT *pPrt; /* GIni Port struct pointer */ @@ -2145,7 +2429,7 @@ SK_ERR_LOG(pAC, SK_ERRCL_HW | SK_ERRCL_INIT, SKERR_SIRQ_E022, SKERR_SIRQ_E022MSG); } - + if ((IStatus & (PHY_B_IS_AN_PR | PHY_B_IS_LST_CHANGE)) != 0) { SkHWLinkDown(pAC, IoC, Port); @@ -2174,8 +2458,8 @@ */ static void SkPhyIsrGmac( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* Io Context */ -int Port, /* Port Num = PHY Num */ +SK_IOC IoC, /* I/O Context */ +int Port, /* Port Index (MAC_1 + n) */ SK_U16 IStatus) /* Interrupt Status */ { SK_GEPORT *pPrt; /* GIni Port struct pointer */ @@ -2184,37 +2468,69 @@ pPrt = &pAC->GIni.GP[Port]; - if ((IStatus & (PHY_M_IS_AN_PR | PHY_M_IS_LST_CHANGE)) != 0) { - - SkHWLinkDown(pAC, IoC, Port); + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("Port %d PHY IRQ, PhyIsrc: 0x%04X\n", Port, IStatus)); - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_AUNE_ADV, &Word); + if ((IStatus & PHY_M_IS_LST_CHANGE) != 0) { SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("AutoNeg.Adv: 0x%04X\n", Word)); - - /* Set Auto-negotiation advertisement */ - if (pPrt->PFlowCtrlMode == SK_FLOW_MODE_SYM_OR_REM) { - /* restore Asymmetric Pause bit */ - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_AUNE_ADV, - (SK_U16)(Word | PHY_M_AN_ASP)); - } - + ("Link Status changed\n")); + Para.Para32[0] = (SK_U32)Port; - /* Signal to RLMT */ - SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para); + + if (pPrt->PHWLinkUp) { + + SkHWLinkDown(pAC, IoC, Port); + + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_AUNE_ADV, &Word); + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("AutoNeg.Adv: 0x%04X\n", Word)); + + /* Set Auto-negotiation advertisement */ + if (pAC->GIni.GIChipId != CHIP_ID_YUKON_FE && + pPrt->PFlowCtrlMode == SK_FLOW_MODE_SYM_OR_REM) { + /* restore Asymmetric Pause bit */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_AUNE_ADV, + (SK_U16)(Word | PHY_M_AN_ASP)); + } + + /* Signal to RLMT */ + SkEventQueue(pAC, SKGE_RLMT, SK_RLMT_LINK_DOWN, Para); + } + else { + if ((IStatus & PHY_M_IS_AN_COMPL) != 0) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("Auto-Negotiation completed\n")); + } + + if ((IStatus & PHY_M_IS_LSP_CHANGE) != 0) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("Link Speed changed\n")); + } + + SkEventQueue(pAC, SKGE_HWAC, SK_HWEV_WATIM, Para); + } } - + if ((IStatus & PHY_M_IS_AN_ERROR) != 0) { - /* Auto-Negotiation Error */ - SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E023, SKERR_SIRQ_E023MSG); + /* the copper PHY makes 1 retry */ + if (pAC->GIni.GICopperType) { + /* not logged as error, it might be the first attempt */ + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("Auto-Negotiation Error\n")); + } + else { + /* Auto-Negotiation Error */ + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E023, SKERR_SIRQ_E023MSG); + } } - + if ((IStatus & PHY_M_IS_FIFO_ERROR) != 0) { /* FIFO Overflow/Underrun Error */ SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_SIRQ_E024, SKERR_SIRQ_E024MSG); } - + } /* SkPhyIsrGmac */ #endif /* YUKON */ @@ -2230,8 +2546,8 @@ */ static void SkPhyIsrLone( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* Io Context */ -int Port, /* Port Num = PHY Num */ +SK_IOC IoC, /* I/O Context */ +int Port, /* Port Index (MAC_1 + n) */ SK_U16 IStatus) /* Interrupt Status */ { SK_EVPARA Para; --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/sklm80.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/sklm80.c @@ -2,8 +2,8 @@ * * Name: sklm80.c * Project: Gigabit Ethernet Adapters, TWSI-Module - * Version: $Revision: 1.22 $ - * Date: $Date: 2003/10/20 09:08:21 $ + * Version: $Revision: 1.1 $ + * Date: $Date: 2003/12/19 14:02:31 $ * Purpose: Functions to access Voltage and Temperature Sensor (LM80) * ******************************************************************************/ @@ -27,7 +27,7 @@ */ #if (defined(DEBUG) || ((!defined(LINT)) && (!defined(SK_SLIM)))) static const char SysKonnectFileId[] = - "@(#) $Id: sklm80.c,v 1.22 2003/10/20 09:08:21 rschmidt Exp $ (C) Marvell. "; + "@(#) $Id: sklm80.c,v 1.1 2003/12/19 14:02:31 mschmid Exp $ (C) Marvell. "; #endif #include "h/skdrv1st.h" /* Driver Specific Definitions */ @@ -111,12 +111,12 @@ /* * read a sensors value (LM80 specific) * - * This function reads a sensors value from the I2C sensor chip LM80. + * This function reads a sensors value from the TWSI sensor chip LM80. * The sensor is defined by its index into the sensors database in the struct * pAC points to. * * Returns 1 if the read is completed - * 0 if the read must be continued (I2C Bus still allocated) + * 0 if the read must be continued (TWSI Bus still allocated) */ int SkLm80ReadSensor( SK_AC *pAC, /* Adapter Context */ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skvpd.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skvpd.h @@ -1,22 +1,22 @@ /****************************************************************************** * * Name: skvpd.h - * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.15 $ - * Date: $Date: 2003/01/13 10:39:38 $ + * Project: Gigabit Ethernet Adapters, VPD-Module + * Version: $Revision: 2.6 $ + * Date: $Date: 2004/11/09 15:18:00 $ * Purpose: Defines and Macros for VPD handling * ******************************************************************************/ /****************************************************************************** * - * (C)Copyright 1998-2003 SysKonnect GmbH. + * (C)Copyright 1998-2002 SysKonnect. + * (C)Copyright 2002-2004 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * * The information in this file is provided "AS IS" without warranty. * ******************************************************************************/ @@ -31,7 +31,7 @@ /* * Define Resource Type Identifiers and VPD keywords */ -#define RES_ID 0x82 /* Resource Type ID String (Product Name) */ +#define RES_ID 0x82 /* Resource Type ID String (Product Name) */ #define RES_VPD_R 0x90 /* start of VPD read only area */ #define RES_VPD_W 0x91 /* start of VPD read/write area */ #define RES_END 0x78 /* Resource Type End Tag */ @@ -40,14 +40,16 @@ #define VPD_NAME "Name" /* Product Name, VPD name of RES_ID */ #endif /* VPD_NAME */ #define VPD_PN "PN" /* Adapter Part Number */ -#define VPD_EC "EC" /* Adapter Engineering Level */ +#define VPD_EC "EC" /* Adapter Engineering Level */ #define VPD_MN "MN" /* Manufacture ID */ #define VPD_SN "SN" /* Serial Number */ #define VPD_CP "CP" /* Extended Capability */ #define VPD_RV "RV" /* Checksum and Reserved */ -#define VPD_YA "YA" /* Asset Tag Identifier */ +#define VPD_YA "YA" /* Asset Tag Identifier */ #define VPD_VL "VL" /* First Error Log Message (SK specific) */ #define VPD_VF "VF" /* Second Error Log Message (SK specific) */ +#define VPD_VB "VB" /* Boot Agent ROM Configuration (SK specific) */ +#define VPD_VE "VE" /* EFI UNDI Configuration (SK specific) */ #define VPD_RW "RW" /* Remaining Read / Write Area */ /* 'type' values for vpd_setup_para() */ @@ -55,7 +57,7 @@ #define VPD_RW_KEY 2 /* RW keys are "Yx", "Vx", and "RW" */ /* 'op' values for vpd_setup_para() */ -#define ADD_KEY 1 /* add the key at the pos "RV" or "RW" */ +#define ADD_KEY 1 /* add the key at the pos "RV" or "RW" */ #define OWR_KEY 2 /* overwrite key if already exists */ /* @@ -64,18 +66,18 @@ #define VPD_DEV_ID_GENESIS 0x4300 -#define VPD_SIZE_YUKON 256 -#define VPD_SIZE_GENESIS 512 -#define VPD_SIZE 512 +#define VPD_SIZE_YUKON 256 +#define VPD_SIZE_GENESIS 512 +#define VPD_SIZE 512 #define VPD_READ 0x0000 #define VPD_WRITE 0x8000 #define VPD_STOP(pAC,IoC) VPD_OUT16(pAC,IoC,PCI_VPD_ADR_REG,VPD_WRITE) -#define VPD_GET_RES_LEN(p) ((unsigned int) \ - (* (SK_U8 *)&(p)[1]) |\ - ((* (SK_U8 *)&(p)[2]) << 8)) -#define VPD_GET_VPD_LEN(p) ((unsigned int)(* (SK_U8 *)&(p)[2])) +#define VPD_GET_RES_LEN(p) ((unsigned int)\ + (*(SK_U8 *)&(p)[1]) |\ + ((*(SK_U8 *)&(p)[2]) << 8)) +#define VPD_GET_VPD_LEN(p) ((unsigned int)(*(SK_U8 *)&(p)[2])) #define VPD_GET_VAL(p) ((char *)&(p)[3]) #define VPD_MAX_LEN 50 @@ -126,62 +128,70 @@ /* * System specific VPD macros */ -#ifndef SKDIAG +#ifndef SK_DIAG #ifndef VPD_DO_IO #define VPD_OUT8(pAC,IoC,Addr,Val) (void)SkPciWriteCfgByte(pAC,Addr,Val) #define VPD_OUT16(pAC,IoC,Addr,Val) (void)SkPciWriteCfgWord(pAC,Addr,Val) +#define VPD_OUT32(pAC,IoC,Addr,Val) (void)SkPciWriteCfgDWord(pAC,Addr,Val) #define VPD_IN8(pAC,IoC,Addr,pVal) (void)SkPciReadCfgByte(pAC,Addr,pVal) #define VPD_IN16(pAC,IoC,Addr,pVal) (void)SkPciReadCfgWord(pAC,Addr,pVal) #define VPD_IN32(pAC,IoC,Addr,pVal) (void)SkPciReadCfgDWord(pAC,Addr,pVal) #else /* VPD_DO_IO */ -#define VPD_OUT8(pAC,IoC,Addr,Val) SK_OUT8(IoC,PCI_C(Addr),Val) -#define VPD_OUT16(pAC,IoC,Addr,Val) SK_OUT16(IoC,PCI_C(Addr),Val) -#define VPD_IN8(pAC,IoC,Addr,pVal) SK_IN8(IoC,PCI_C(Addr),pVal) -#define VPD_IN16(pAC,IoC,Addr,pVal) SK_IN16(IoC,PCI_C(Addr),pVal) -#define VPD_IN32(pAC,IoC,Addr,pVal) SK_IN32(IoC,PCI_C(Addr),pVal) +#define VPD_OUT8(pAC,IoC,Addr,Val) SK_OUT8(IoC,PCI_C(pAC,Addr),Val) +#define VPD_OUT16(pAC,IoC,Addr,Val) SK_OUT16(IoC,PCI_C(pAC,Addr),Val) +#define VPD_OUT32(pAC,IoC,Addr,Val) SK_OUT32(IoC,PCI_C(pAC,Addr),Val) +#define VPD_IN8(pAC,IoC,Addr,pVal) SK_IN8(IoC,PCI_C(pAC,Addr),pVal) +#define VPD_IN16(pAC,IoC,Addr,pVal) SK_IN16(IoC,PCI_C(pAC,Addr),pVal) +#define VPD_IN32(pAC,IoC,Addr,pVal) SK_IN32(IoC,PCI_C(pAC,Addr),pVal) #endif /* VPD_DO_IO */ -#else /* SKDIAG */ +#else /* SK_DIAG */ #define VPD_OUT8(pAC,Ioc,Addr,Val) { \ if ((pAC)->DgT.DgUseCfgCycle) \ SkPciWriteCfgByte(pAC,Addr,Val); \ else \ - SK_OUT8(pAC,PCI_C(Addr),Val); \ + SK_OUT8(pAC,PCI_C(pAC,Addr),Val); \ } #define VPD_OUT16(pAC,Ioc,Addr,Val) { \ if ((pAC)->DgT.DgUseCfgCycle) \ SkPciWriteCfgWord(pAC,Addr,Val); \ else \ - SK_OUT16(pAC,PCI_C(Addr),Val); \ + SK_OUT16(pAC,PCI_C(pAC,Addr),Val); \ + } +#define VPD_OUT32(pAC,Ioc,Addr,Val) { \ + if ((pAC)->DgT.DgUseCfgCycle) \ + SkPciWriteCfgDWord(pAC,Addr,Val); \ + else \ + SK_OUT32(pAC,PCI_C(pAC,Addr),Val); \ } #define VPD_IN8(pAC,Ioc,Addr,pVal) { \ - if ((pAC)->DgT.DgUseCfgCycle) \ + if ((pAC)->DgT.DgUseCfgCycle) \ SkPciReadCfgByte(pAC,Addr,pVal); \ else \ - SK_IN8(pAC,PCI_C(Addr),pVal); \ + SK_IN8(pAC,PCI_C(pAC,Addr),pVal); \ } #define VPD_IN16(pAC,Ioc,Addr,pVal) { \ - if ((pAC)->DgT.DgUseCfgCycle) \ + if ((pAC)->DgT.DgUseCfgCycle) \ SkPciReadCfgWord(pAC,Addr,pVal); \ else \ - SK_IN16(pAC,PCI_C(Addr),pVal); \ + SK_IN16(pAC,PCI_C(pAC,Addr),pVal); \ } #define VPD_IN32(pAC,Ioc,Addr,pVal) { \ if ((pAC)->DgT.DgUseCfgCycle) \ SkPciReadCfgDWord(pAC,Addr,pVal); \ else \ - SK_IN32(pAC,PCI_C(Addr),pVal); \ + SK_IN32(pAC,PCI_C(pAC,Addr),pVal); \ } -#endif /* nSKDIAG */ +#endif /* SK_DIAG */ /* function prototypes ********************************************************/ #ifndef SK_KR_PROTO -#ifdef SKDIAG +#ifdef SK_DIAG extern SK_U32 VpdReadDWord( SK_AC *pAC, SK_IOC IoC, int addr); -#endif /* SKDIAG */ +#endif /* SK_DIAG */ extern int VpdSetupPara( SK_AC *pAC, @@ -232,7 +242,12 @@ SK_IOC IoC, char *msg); -#ifdef SKDIAG +int VpdInit( + SK_AC *pAC, + SK_IOC IoC); + +#if defined(SK_DIAG) || defined(SK_ASF) + extern int VpdReadBlock( SK_AC *pAC, SK_IOC IoC, @@ -246,7 +261,9 @@ char *buf, int addr, int len); -#endif /* SKDIAG */ + +#endif /* SK_DIAG || SK_ASF */ + #else /* SK_KR_PROTO */ extern SK_U32 VpdReadDWord(); extern int VpdSetupPara(); @@ -261,3 +278,4 @@ #endif /* SK_KR_PROTO */ #endif /* __INC_SKVPD_H_ */ + --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skversion.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skversion.h @@ -1,17 +1,17 @@ /****************************************************************************** * - * Name: version.h + * Name: skversion.h * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.5 $ - * Date: $Date: 2003/10/07 08:16:51 $ - * Purpose: SK specific Error log support + * Version: $Revision: 1.3.2.1 $ + * Date: $Date: 2005/04/11 09:00:53 $ + * Purpose: specific version strings and numbers * ******************************************************************************/ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect GmbH. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2005 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,17 +22,15 @@ * ******************************************************************************/ -#ifdef lint -static const char SysKonnectFileId[] = "@(#) (C) SysKonnect GmbH."; -static const char SysKonnectBuildNumber[] = - "@(#)SK-BUILD: 6.23 PL: 01"; -#endif /* !defined(lint) */ - -#define BOOT_STRING "sk98lin: Network Device Driver v6.23\n" \ - "(C)Copyright 1999-2004 Marvell(R)." - -#define VER_STRING "6.23" -#define DRIVER_FILE_NAME "sk98lin" -#define DRIVER_REL_DATE "Feb-13-2004" - +#define BOOT_STRING "sk98lin: Network Device Driver v8.23.1.3\n" \ + "(C)Copyright 1999-2005 Marvell(R)." +#define VER_STRING "8.23.1.3" +#define PATCHLEVEL "01" +#define DRIVER_FILE_NAME "sk98lin" +#define DRIVER_REL_DATE "Jun-20-2005" +/******************************************************************************* + * + * End of file + * + ******************************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/xmac_ii.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/xmac_ii.h @@ -2,8 +2,8 @@ * * Name: xmac_ii.h * Project: Gigabit Ethernet Adapters, Common Modules - * Version: $Revision: 1.52 $ - * Date: $Date: 2003/10/02 16:35:50 $ + * Version: $Revision: 2.11 $ + * Date: $Date: 2005/01/04 14:14:20 $ * Purpose: Defines and Macros for Gigabit Ethernet Controller * ******************************************************************************/ @@ -11,13 +11,12 @@ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2004 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * * The information in this file is provided "AS IS" without warranty. * ******************************************************************************/ @@ -449,7 +448,7 @@ /* * Receive Frame Status Encoding */ -#define XMR_FS_LEN (0x3fffUL<<18) /* Bit 31..18: Rx Frame Length */ +#define XMR_FS_LEN_MSK (0x3fffUL<<18) /* Bit 31..18: Rx Frame Length */ #define XMR_FS_2L_VLAN (1L<<17) /* Bit 17: tagged wh 2Lev VLAN ID*/ #define XMR_FS_1L_VLAN (1L<<16) /* Bit 16: tagged wh 1Lev VLAN ID*/ #define XMR_FS_BC (1L<<15) /* Bit 15: Broadcast Frame */ @@ -469,6 +468,8 @@ #define XMR_FS_ERR (1L<<1) /* Bit 1: Frame Error */ #define XMR_FS_MCTRL (1L<<0) /* Bit 0: MAC Control Packet */ +#define XMR_FS_LEN_SHIFT 18 + /* * XMR_FS_ERR will be set if * XMR_FS_FCS_ERR, XMR_FS_LNG_ERR, XMR_FS_RUNT, @@ -510,7 +511,7 @@ #define PHY_BCOM_NEPG 0x07 /* 16 bit r/w Next Page Register */ #define PHY_BCOM_NEPG_LP 0x08 /* 16 bit r/o Next Page Link Partner */ /* Broadcom-specific registers */ -#define PHY_BCOM_1000T_CTRL 0x09 /* 16 bit r/w 1000Base-T Ctrl Reg */ +#define PHY_BCOM_1000T_CTRL 0x09 /* 16 bit r/w 1000Base-T Control Reg */ #define PHY_BCOM_1000T_STAT 0x0a /* 16 bit r/o 1000Base-T Status Reg */ /* 0x0b - 0x0e: reserved */ #define PHY_BCOM_EXT_STAT 0x0f /* 16 bit r/o Extended Status Reg */ @@ -541,24 +542,32 @@ #define PHY_MARV_NEPG 0x07 /* 16 bit r/w Next Page Register */ #define PHY_MARV_NEPG_LP 0x08 /* 16 bit r/o Next Page Link Partner */ /* Marvel-specific registers */ -#define PHY_MARV_1000T_CTRL 0x09 /* 16 bit r/w 1000Base-T Ctrl Reg */ +#define PHY_MARV_1000T_CTRL 0x09 /* 16 bit r/w 1000Base-T Control Reg */ #define PHY_MARV_1000T_STAT 0x0a /* 16 bit r/o 1000Base-T Status Reg */ /* 0x0b - 0x0e: reserved */ #define PHY_MARV_EXT_STAT 0x0f /* 16 bit r/o Extended Status Reg */ -#define PHY_MARV_PHY_CTRL 0x10 /* 16 bit r/w PHY Specific Ctrl Reg */ -#define PHY_MARV_PHY_STAT 0x11 /* 16 bit r/o PHY Specific Stat Reg */ +#define PHY_MARV_PHY_CTRL 0x10 /* 16 bit r/w PHY Specific Control Reg */ +#define PHY_MARV_PHY_STAT 0x11 /* 16 bit r/o PHY Specific Status Reg */ #define PHY_MARV_INT_MASK 0x12 /* 16 bit r/w Interrupt Mask Reg */ #define PHY_MARV_INT_STAT 0x13 /* 16 bit r/o Interrupt Status Reg */ #define PHY_MARV_EXT_CTRL 0x14 /* 16 bit r/w Ext. PHY Specific Ctrl */ #define PHY_MARV_RXE_CNT 0x15 /* 16 bit r/w Receive Error Counter */ #define PHY_MARV_EXT_ADR 0x16 /* 16 bit r/w Ext. Ad. for Cable Diag. */ - /* 0x17: reserved */ +#define PHY_MARV_PORT_IRQ 0x17 /* 16 bit r/o Port 0 IRQ (88E1111 only) */ #define PHY_MARV_LED_CTRL 0x18 /* 16 bit r/w LED Control Reg */ #define PHY_MARV_LED_OVER 0x19 /* 16 bit r/w Manual LED Override Reg */ #define PHY_MARV_EXT_CTRL_2 0x1a /* 16 bit r/w Ext. PHY Specific Ctrl 2 */ #define PHY_MARV_EXT_P_STAT 0x1b /* 16 bit r/w Ext. PHY Spec. Stat Reg */ #define PHY_MARV_CABLE_DIAG 0x1c /* 16 bit r/o Cable Diagnostic Reg */ - /* 0x1d - 0x1f: reserved */ +#define PHY_MARV_PAGE_ADDR 0x1d /* 16 bit r/w Extended Page Address Reg */ +#define PHY_MARV_PAGE_DATA 0x1e /* 16 bit r/w Extended Page Data Reg */ + +/* for 10/100 Fast Ethernet PHY (88E3082 only) */ +#define PHY_MARV_FE_LED_PAR 0x16 /* 16 bit r/w LED Parallel Select Reg. */ +#define PHY_MARV_FE_LED_SER 0x17 /* 16 bit r/w LED Stream Select S. LED */ +#define PHY_MARV_FE_VCT_TX 0x1a /* 16 bit r/w VCT Reg. for TXP/N Pins */ +#define PHY_MARV_FE_VCT_RX 0x1b /* 16 bit r/o VCT Reg. for RXP/N Pins */ +#define PHY_MARV_FE_SPEC_2 0x1c /* 16 bit r/w Specific Control Reg. 2 */ /*----------------------------------------------------------------------------*/ /* @@ -574,9 +583,9 @@ #define PHY_LONE_NEPG 0x07 /* 16 bit r/w Next Page Register */ #define PHY_LONE_NEPG_LP 0x08 /* 16 bit r/o Next Page Link Partner */ /* Level One-specific registers */ -#define PHY_LONE_1000T_CTRL 0x09 /* 16 bit r/w 1000Base-T Control Reg*/ +#define PHY_LONE_1000T_CTRL 0x09 /* 16 bit r/w 1000Base-T Control Reg */ #define PHY_LONE_1000T_STAT 0x0a /* 16 bit r/o 1000Base-T Status Reg */ - /* 0x0b -0x0e: reserved */ + /* 0x0b - 0x0e: reserved */ #define PHY_LONE_EXT_STAT 0x0f /* 16 bit r/o Extended Status Reg */ #define PHY_LONE_PORT_CFG 0x10 /* 16 bit r/w Port Configuration Reg*/ #define PHY_LONE_Q_STAT 0x11 /* 16 bit r/o Quick Status Reg */ @@ -585,7 +594,7 @@ #define PHY_LONE_LED_CFG 0x14 /* 16 bit r/w LED Configuration Reg */ #define PHY_LONE_PORT_CTRL 0x15 /* 16 bit r/w Port Control Reg */ #define PHY_LONE_CIM 0x16 /* 16 bit r/o CIM Reg */ - /* 0x17 -0x1c: reserved */ + /* 0x17 - 0x1c: reserved */ /*----------------------------------------------------------------------------*/ /* @@ -603,14 +612,14 @@ /* National-specific registers */ #define PHY_NAT_1000T_CTRL 0x09 /* 16 bit r/w 1000Base-T Control Reg */ #define PHY_NAT_1000T_STAT 0x0a /* 16 bit r/o 1000Base-T Status Reg */ - /* 0x0b -0x0e: reserved */ + /* 0x0b - 0x0e: reserved */ #define PHY_NAT_EXT_STAT 0x0f /* 16 bit r/o Extended Status Register */ #define PHY_NAT_EXT_CTRL1 0x10 /* 16 bit r/o Extended Control Reg1 */ #define PHY_NAT_Q_STAT1 0x11 /* 16 bit r/o Quick Status Reg1 */ #define PHY_NAT_10B_OP 0x12 /* 16 bit r/o 10Base-T Operations Reg */ #define PHY_NAT_EXT_CTRL2 0x13 /* 16 bit r/o Extended Control Reg1 */ #define PHY_NAT_Q_STAT2 0x14 /* 16 bit r/o Quick Status Reg2 */ - /* 0x15 -0x18: reserved */ + /* 0x15 - 0x18: reserved */ #define PHY_NAT_PHY_ADDR 0x19 /* 16 bit r/o PHY Address Register */ @@ -618,7 +627,7 @@ /* * PHY bit definitions - * Bits defined as PHY_X_..., PHY_B_..., PHY_L_... or PHY_N_... are + * Bits defined as PHY_X_..., PHY_B_..., PHY_L_..., PHY_N_... or PHY_M_... are * XMAC/Broadcom/LevelOne/National/Marvell-specific. * All other are general. */ @@ -629,14 +638,14 @@ /***** PHY_LONE_CTRL 16 bit r/w PHY Control Register *****/ #define PHY_CT_RESET (1<<15) /* Bit 15: (sc) clear all PHY related regs */ #define PHY_CT_LOOP (1<<14) /* Bit 14: enable Loopback over PHY */ -#define PHY_CT_SPS_LSB (1<<13) /* Bit 13: (BC,L1) Speed select, lower bit */ +#define PHY_CT_SPS_LSB (1<<13) /* Bit 13: Speed select, lower bit */ #define PHY_CT_ANE (1<<12) /* Bit 12: Auto-Negotiation Enabled */ -#define PHY_CT_PDOWN (1<<11) /* Bit 11: (BC,L1) Power Down Mode */ -#define PHY_CT_ISOL (1<<10) /* Bit 10: (BC,L1) Isolate Mode */ -#define PHY_CT_RE_CFG (1<<9) /* Bit 9: (sc) Restart Auto-Negotiation */ +#define PHY_CT_PDOWN (1<<11) /* Bit 11: Power Down Mode */ +#define PHY_CT_ISOL (1<<10) /* Bit 10: Isolate Mode */ +#define PHY_CT_RE_CFG (1<<9) /* Bit 9: (sc) Restart Auto-Negotiation */ #define PHY_CT_DUP_MD (1<<8) /* Bit 8: Duplex Mode */ -#define PHY_CT_COL_TST (1<<7) /* Bit 7: (BC,L1) Collision Test enabled */ -#define PHY_CT_SPS_MSB (1<<6) /* Bit 6: (BC,L1) Speed select, upper bit */ +#define PHY_CT_COL_TST (1<<7) /* Bit 7: Collision Test enabled */ +#define PHY_CT_SPS_MSB (1<<6) /* Bit 6: Speed select, upper bit */ /* Bit 5..0: reserved */ #define PHY_CT_SP1000 PHY_CT_SPS_MSB /* enable speed of 1000 Mbps */ @@ -649,25 +658,25 @@ /***** PHY_MARV_STAT 16 bit r/w PHY Status Register *****/ /***** PHY_LONE_STAT 16 bit r/w PHY Status Register *****/ /* Bit 15..9: reserved */ - /* (BC/L1) 100/10 Mbps cap bits ignored*/ + /* (BC/L1) 100/10 Mbps cap bits ignored */ #define PHY_ST_EXT_ST (1<<8) /* Bit 8: Extended Status Present */ /* Bit 7: reserved */ -#define PHY_ST_PRE_SUP (1<<6) /* Bit 6: (BC/L1) preamble suppression */ +#define PHY_ST_PRE_SUP (1<<6) /* Bit 6: Preamble Suppression */ #define PHY_ST_AN_OVER (1<<5) /* Bit 5: Auto-Negotiation Over */ #define PHY_ST_REM_FLT (1<<4) /* Bit 4: Remote Fault Condition Occured */ #define PHY_ST_AN_CAP (1<<3) /* Bit 3: Auto-Negotiation Capability */ #define PHY_ST_LSYNC (1<<2) /* Bit 2: Link Synchronized */ -#define PHY_ST_JAB_DET (1<<1) /* Bit 1: (BC/L1) Jabber Detected */ +#define PHY_ST_JAB_DET (1<<1) /* Bit 1: Jabber Detected */ #define PHY_ST_EXT_REG (1<<0) /* Bit 0: Extended Register available */ -/***** PHY_XMAC_ID1 16 bit r/o PHY ID1 Register */ -/***** PHY_BCOM_ID1 16 bit r/o PHY ID1 Register */ -/***** PHY_MARV_ID1 16 bit r/o PHY ID1 Register */ -/***** PHY_LONE_ID1 16 bit r/o PHY ID1 Register */ +/***** PHY_XMAC_ID1 16 bit r/o PHY ID1 Register */ +/***** PHY_BCOM_ID1 16 bit r/o PHY ID1 Register */ +/***** PHY_MARV_ID1 16 bit r/o PHY ID1 Register */ +/***** PHY_LONE_ID1 16 bit r/o PHY ID1 Register */ #define PHY_I1_OUI_MSK (0x3f<<10) /* Bit 15..10: Organization Unique ID */ #define PHY_I1_MOD_NUM (0x3f<<4) /* Bit 9.. 4: Model Number */ -#define PHY_I1_REV_MSK 0x0f /* Bit 3.. 0: Revision Number */ +#define PHY_I1_REV_MSK 0xf /* Bit 3.. 0: Revision Number */ /* different Broadcom PHY Ids */ #define PHY_BCOM_ID1_A1 0x6041 @@ -675,11 +684,19 @@ #define PHY_BCOM_ID1_C0 0x6044 #define PHY_BCOM_ID1_C5 0x6047 +/* different Marvell PHY Ids */ +#define PHY_MARV_ID0_VAL 0x0141 /* Marvell Unique Identifier */ + +#define PHY_MARV_ID1_B0 0x0C23 /* Yukon (PHY 88E1011) */ +#define PHY_MARV_ID1_B2 0x0C25 /* Yukon-Plus (PHY 88E1011) */ +#define PHY_MARV_ID1_C2 0x0CC2 /* Yukon-EC (PHY 88E1111) */ +#define PHY_MARV_ID1_Y2 0x0C91 /* Yukon-2 (PHY 88E1112) */ + /***** PHY_XMAC_AUNE_ADV 16 bit r/w Auto-Negotiation Advertisement *****/ /***** PHY_XMAC_AUNE_LP 16 bit r/o Link Partner Ability Reg *****/ #define PHY_AN_NXT_PG (1<<15) /* Bit 15: Request Next Page */ -#define PHY_X_AN_ACK (1<<14) /* Bit 14: (ro) Acknowledge Received */ +#define PHY_X_AN_ACK (1<<14) /* Bit 14: (ro) Acknowledge Received */ #define PHY_X_AN_RFB (3<<12) /* Bit 13..12: Remote Fault Bits */ /* Bit 11.. 9: reserved */ #define PHY_X_AN_PAUSE (3<<7) /* Bit 8.. 7: Pause Bits */ @@ -827,7 +844,7 @@ #define PHY_B_PEC_BY_MLT3 (1<<8) /* Bit 8: Bypass MLT3 Encoder */ #define PHY_B_PEC_BY_RXA (1<<7) /* Bit 7: Bypass Rx Alignm. */ #define PHY_B_PEC_RES_SCR (1<<6) /* Bit 6: Reset Scrambler */ -#define PHY_B_PEC_EN_LTR (1<<5) /* Bit 5: Ena LED Traffic Mode */ +#define PHY_B_PEC_EN_LTR (1<<5) /* Bit 5: Enable LED Traffic Mode */ #define PHY_B_PEC_LED_ON (1<<4) /* Bit 4: Force LED's on */ #define PHY_B_PEC_LED_OFF (1<<3) /* Bit 3: Force LED's off */ #define PHY_B_PEC_EX_IPG (1<<2) /* Bit 2: Extend Tx IPG Mode */ @@ -981,7 +998,7 @@ #define PHY_L_QS_DUP_MOD (1<<9) /* Bit 9: Full/Half Duplex */ #define PHY_L_QS_AN (1<<8) /* Bit 8: AutoNeg is On */ #define PHY_L_QS_AN_C (1<<7) /* Bit 7: AN is Complete */ -#define PHY_L_QS_LLE (7<<4) /* Bit 6: Line Length Estim. */ +#define PHY_L_QS_LLE (7<<4) /* Bit 6..4: Line Length Estim. */ #define PHY_L_QS_PAUSE (1<<3) /* Bit 3: LP advertised Pause */ #define PHY_L_QS_AS_PAUSE (1<<2) /* Bit 2: LP adv. asym. Pause */ #define PHY_L_QS_ISOLATE (1<<1) /* Bit 1: CIM Isolated */ @@ -1029,9 +1046,8 @@ /* Bit 9..0: not described */ /***** PHY_LONE_CIM 16 bit r/o CIM Reg *****/ -#define PHY_L_CIM_ISOL (255<<8)/* Bit 15..8: Isolate Count */ -#define PHY_L_CIM_FALSE_CAR (255<<0)/* Bit 7..0: False Carrier Count */ - +#define PHY_L_CIM_ISOL (0xff<<8) /* Bit 15..8: Isolate Count */ +#define PHY_L_CIM_FALSE_CAR 0xff /* Bit 7..0: False Carrier Count */ /* * Pause Bits (PHY_L_AN_ASP and PHY_L_AN_PC) encoding @@ -1041,7 +1057,6 @@ #define PHY_L_P_ASYM_MD (2<<10) /* Bit 11..10: asymmetric Pause Mode */ #define PHY_L_P_BOTH_MD (3<<10) /* Bit 11..10: both Pause Mode */ - /* * National-Specific */ @@ -1086,22 +1101,24 @@ */ /***** PHY_MARV_AUNE_ADV 16 bit r/w Auto-Negotiation Advertisement *****/ /***** PHY_MARV_AUNE_LP 16 bit r/w Link Part Ability Reg *****/ -#define PHY_M_AN_NXT_PG BIT_15 /* Request Next Page */ -#define PHY_M_AN_ACK BIT_14 /* (ro) Acknowledge Received */ -#define PHY_M_AN_RF BIT_13 /* Remote Fault */ - /* Bit 12: reserved */ -#define PHY_M_AN_ASP BIT_11 /* Asymmetric Pause */ -#define PHY_M_AN_PC BIT_10 /* MAC Pause implemented */ -#define PHY_M_AN_100_FD BIT_8 /* Advertise 100Base-TX Full Duplex */ -#define PHY_M_AN_100_HD BIT_7 /* Advertise 100Base-TX Half Duplex */ -#define PHY_M_AN_10_FD BIT_6 /* Advertise 10Base-TX Full Duplex */ -#define PHY_M_AN_10_HD BIT_5 /* Advertise 10Base-TX Half Duplex */ +#define PHY_M_AN_NXT_PG BIT_15S /* Request Next Page */ +#define PHY_M_AN_ACK BIT_14S /* (ro) Acknowledge Received */ +#define PHY_M_AN_RF BIT_13S /* Remote Fault */ + /* Bit 12: reserved */ +#define PHY_M_AN_ASP BIT_11S /* Asymmetric Pause */ +#define PHY_M_AN_PC BIT_10S /* MAC Pause implemented */ +#define PHY_M_AN_100_T4 BIT_9S /* Not cap. 100Base-T4 (always 0) */ +#define PHY_M_AN_100_FD BIT_8S /* Advertise 100Base-TX Full Duplex */ +#define PHY_M_AN_100_HD BIT_7S /* Advertise 100Base-TX Half Duplex */ +#define PHY_M_AN_10_FD BIT_6S /* Advertise 10Base-TX Full Duplex */ +#define PHY_M_AN_10_HD BIT_5S /* Advertise 10Base-TX Half Duplex */ +#define PHY_M_AN_SEL_MSK (0x1f<<4) /* Bit 4.. 0: Selector Field Mask */ /* special defines for FIBER (88E1011S only) */ -#define PHY_M_AN_ASP_X BIT_8 /* Asymmetric Pause */ -#define PHY_M_AN_PC_X BIT_7 /* MAC Pause implemented */ -#define PHY_M_AN_1000X_AHD BIT_6 /* Advertise 10000Base-X Half Duplex */ -#define PHY_M_AN_1000X_AFD BIT_5 /* Advertise 10000Base-X Full Duplex */ +#define PHY_M_AN_ASP_X BIT_8S /* Asymmetric Pause */ +#define PHY_M_AN_PC_X BIT_7S /* MAC Pause implemented */ +#define PHY_M_AN_1000X_AHD BIT_6S /* Advertise 10000Base-X Half Duplex */ +#define PHY_M_AN_1000X_AFD BIT_5S /* Advertise 10000Base-X Full Duplex */ /* Pause Bits (PHY_M_AN_ASP_X and PHY_M_AN_PC_X) encoding */ #define PHY_M_P_NO_PAUSE_X (0<<7) /* Bit 8.. 7: no Pause Mode */ @@ -1111,105 +1128,162 @@ /***** PHY_MARV_1000T_CTRL 16 bit r/w 1000Base-T Control Reg *****/ #define PHY_M_1000C_TEST (7<<13) /* Bit 15..13: Test Modes */ -#define PHY_M_1000C_MSE (1<<12) /* Bit 12: Manual Master/Slave Enable */ -#define PHY_M_1000C_MSC (1<<11) /* Bit 11: M/S Configuration (1=Master) */ -#define PHY_M_1000C_MPD (1<<10) /* Bit 10: Multi-Port Device */ -#define PHY_M_1000C_AFD (1<<9) /* Bit 9: Advertise Full Duplex */ -#define PHY_M_1000C_AHD (1<<8) /* Bit 8: Advertise Half Duplex */ +#define PHY_M_1000C_MSE BIT_12S /* Manual Master/Slave Enable */ +#define PHY_M_1000C_MSC BIT_11S /* M/S Configuration (1=Master) */ +#define PHY_M_1000C_MPD BIT_10S /* Multi-Port Device */ +#define PHY_M_1000C_AFD BIT_9S /* Advertise Full Duplex */ +#define PHY_M_1000C_AHD BIT_8S /* Advertise Half Duplex */ /* Bit 7..0: reserved */ /***** PHY_MARV_PHY_CTRL 16 bit r/w PHY Specific Ctrl Reg *****/ -#define PHY_M_PC_TX_FFD_MSK (3<<14) /* Bit 15..14: Tx FIFO Depth Mask */ -#define PHY_M_PC_RX_FFD_MSK (3<<12) /* Bit 13..12: Rx FIFO Depth Mask */ -#define PHY_M_PC_ASS_CRS_TX (1<<11) /* Bit 11: Assert CRS on Transmit */ -#define PHY_M_PC_FL_GOOD (1<<10) /* Bit 10: Force Link Good */ -#define PHY_M_PC_EN_DET_MSK (3<<8) /* Bit 9.. 8: Energy Detect Mask */ -#define PHY_M_PC_ENA_EXT_D (1<<7) /* Bit 7: Enable Ext. Distance (10BT) */ -#define PHY_M_PC_MDIX_MSK (3<<5) /* Bit 6.. 5: MDI/MDIX Config. Mask */ -#define PHY_M_PC_DIS_125CLK (1<<4) /* Bit 4: Disable 125 CLK */ -#define PHY_M_PC_MAC_POW_UP (1<<3) /* Bit 3: MAC Power up */ -#define PHY_M_PC_SQE_T_ENA (1<<2) /* Bit 2: SQE Test Enabled */ -#define PHY_M_PC_POL_R_DIS (1<<1) /* Bit 1: Polarity Reversal Disabled */ -#define PHY_M_PC_DIS_JABBER (1<<0) /* Bit 0: Disable Jabber */ +#define PHY_M_PC_TX_FFD_MSK (3<<14) /* Bit 15..14: Tx FIFO Depth Mask */ +#define PHY_M_PC_RX_FFD_MSK (3<<12) /* Bit 13..12: Rx FIFO Depth Mask */ +#define PHY_M_PC_ASS_CRS_TX BIT_11S /* Assert CRS on Transmit */ +#define PHY_M_PC_FL_GOOD BIT_10S /* Force Link Good */ +#define PHY_M_PC_EN_DET_MSK (3<<8) /* Bit 9.. 8: Energy Detect Mask */ +#define PHY_M_PC_ENA_EXT_D BIT_7S /* Enable Ext. Distance (10BT) */ +#define PHY_M_PC_MDIX_MSK (3<<5) /* Bit 6.. 5: MDI/MDIX Config. Mask */ +#define PHY_M_PC_DIS_125CLK BIT_4S /* Disable 125 CLK */ +#define PHY_M_PC_MAC_POW_UP BIT_3S /* MAC Power up */ +#define PHY_M_PC_SQE_T_ENA BIT_2S /* SQE Test Enabled */ +#define PHY_M_PC_POL_R_DIS BIT_1S /* Polarity Reversal Disabled */ +#define PHY_M_PC_DIS_JABBER BIT_0S /* Disable Jabber */ #define PHY_M_PC_EN_DET SHIFT8(2) /* Energy Detect (Mode 1) */ #define PHY_M_PC_EN_DET_PLUS SHIFT8(3) /* Energy Detect Plus (Mode 2) */ -#define PHY_M_PC_MDI_XMODE(x) SHIFT5(x) -#define PHY_M_PC_MAN_MDI 0 /* 00 = Manual MDI configuration */ +#define PHY_M_PC_MDI_XMODE(x) (SHIFT5(x) & PHY_M_PC_MDIX_MSK) + +#define PHY_M_PC_MAN_MDI 0 /* 00 = Manual MDI configuration */ #define PHY_M_PC_MAN_MDIX 1 /* 01 = Manual MDIX configuration */ #define PHY_M_PC_ENA_AUTO 3 /* 11 = Enable Automatic Crossover */ +/* for Yukon-2 Gigabit Ethernet PHY (88E1112 only) */ +#define PHY_M_PC_DIS_LINK_P BIT_15S /* Disable Link Pulses */ +#define PHY_M_PC_DSC_MSK (7<<12) /* Bit 14..12: Downshift Counter */ +#define PHY_M_PC_DOWN_S_ENA BIT_11S /* Downshift Enable */ + /* !!! Errata in spec. (1 = disable) */ + +#define PHY_M_PC_DSC(x) (SHIFT12(x) & PHY_M_PC_DSC_MSK) + /* 000=1x; 001=2x; 010=3x; 011=4x */ + /* 100=5x; 101=6x; 110=7x; 111=8x */ + +/* for 10/100 Fast Ethernet PHY (88E3082 only) */ +#define PHY_M_PC_ENA_DTE_DT BIT_15S /* Enable Data Terminal Equ. (DTE) Detect */ +#define PHY_M_PC_ENA_ENE_DT BIT_14S /* Enable Energy Detect (sense & pulse) */ +#define PHY_M_PC_DIS_NLP_CK BIT_13S /* Disable Normal Link Puls (NLP) Check */ +#define PHY_M_PC_ENA_LIP_NP BIT_12S /* Enable Link Partner Next Page Reg. */ +#define PHY_M_PC_DIS_NLP_GN BIT_11S /* Disable Normal Link Puls Generation */ + +#define PHY_M_PC_DIS_SCRAMB BIT_9S /* Disable Scrambler */ +#define PHY_M_PC_DIS_FEFI BIT_8S /* Disable Far End Fault Indic. (FEFI) */ + +#define PHY_M_PC_SH_TP_SEL BIT_6S /* Shielded Twisted Pair Select */ +#define PHY_M_PC_RX_FD_MSK (3<<2) /* Bit 3.. 2: Rx FIFO Depth Mask */ + /***** PHY_MARV_PHY_STAT 16 bit r/o PHY Specific Status Reg *****/ -#define PHY_M_PS_SPEED_MSK (3<<14) /* Bit 15..14: Speed Mask */ -#define PHY_M_PS_SPEED_1000 (1<<15) /* 10 = 1000 Mbps */ -#define PHY_M_PS_SPEED_100 (1<<14) /* 01 = 100 Mbps */ -#define PHY_M_PS_SPEED_10 0 /* 00 = 10 Mbps */ -#define PHY_M_PS_FULL_DUP (1<<13) /* Bit 13: Full Duplex */ -#define PHY_M_PS_PAGE_REC (1<<12) /* Bit 12: Page Received */ -#define PHY_M_PS_SPDUP_RES (1<<11) /* Bit 11: Speed & Duplex Resolved */ -#define PHY_M_PS_LINK_UP (1<<10) /* Bit 10: Link Up */ -#define PHY_M_PS_CABLE_MSK (3<<7) /* Bit 9.. 7: Cable Length Mask */ -#define PHY_M_PS_MDI_X_STAT (1<<6) /* Bit 6: MDI Crossover Stat (1=MDIX) */ -#define PHY_M_PS_DOWNS_STAT (1<<5) /* Bit 5: Downshift Status (1=downsh.) */ -#define PHY_M_PS_ENDET_STAT (1<<4) /* Bit 4: Energy Detect Status (1=act) */ -#define PHY_M_PS_TX_P_EN (1<<3) /* Bit 3: Tx Pause Enabled */ -#define PHY_M_PS_RX_P_EN (1<<2) /* Bit 2: Rx Pause Enabled */ -#define PHY_M_PS_POL_REV (1<<1) /* Bit 1: Polarity Reversed */ -#define PHY_M_PC_JABBER (1<<0) /* Bit 0: Jabber */ +#define PHY_M_PS_SPEED_MSK (3<<14) /* Bit 15..14: Speed Mask */ +#define PHY_M_PS_SPEED_1000 BIT_15S /* 10 = 1000 Mbps */ +#define PHY_M_PS_SPEED_100 BIT_14S /* 01 = 100 Mbps */ +#define PHY_M_PS_SPEED_10 0 /* 00 = 10 Mbps */ +#define PHY_M_PS_FULL_DUP BIT_13S /* Full Duplex */ +#define PHY_M_PS_PAGE_REC BIT_12S /* Page Received */ +#define PHY_M_PS_SPDUP_RES BIT_11S /* Speed & Duplex Resolved */ +#define PHY_M_PS_LINK_UP BIT_10S /* Link Up */ +#define PHY_M_PS_CABLE_MSK (7<<7) /* Bit 9.. 7: Cable Length Mask */ +#define PHY_M_PS_MDI_X_STAT BIT_6S /* MDI Crossover Stat (1=MDIX) */ +#define PHY_M_PS_DOWNS_STAT BIT_5S /* Downshift Status (1=downsh.) */ +#define PHY_M_PS_ENDET_STAT BIT_4S /* Energy Detect Status (1=act) */ +#define PHY_M_PS_TX_P_EN BIT_3S /* Tx Pause Enabled */ +#define PHY_M_PS_RX_P_EN BIT_2S /* Rx Pause Enabled */ +#define PHY_M_PS_POL_REV BIT_1S /* Polarity Reversed */ +#define PHY_M_PS_JABBER BIT_0S /* Jabber */ #define PHY_M_PS_PAUSE_MSK (PHY_M_PS_TX_P_EN | PHY_M_PS_RX_P_EN) +/* for 10/100 Fast Ethernet PHY (88E3082 only) */ +#define PHY_M_PS_DTE_DETECT BIT_15S /* Data Terminal Equipment (DTE) Detected */ +#define PHY_M_PS_RES_SPEED BIT_14S /* Resolved Speed (1=100 Mbps, 0=10 Mbps */ + /***** PHY_MARV_INT_MASK 16 bit r/w Interrupt Mask Reg *****/ /***** PHY_MARV_INT_STAT 16 bit r/o Interrupt Status Reg *****/ -#define PHY_M_IS_AN_ERROR (1<<15) /* Bit 15: Auto-Negotiation Error */ -#define PHY_M_IS_LSP_CHANGE (1<<14) /* Bit 14: Link Speed Changed */ -#define PHY_M_IS_DUP_CHANGE (1<<13) /* Bit 13: Duplex Mode Changed */ -#define PHY_M_IS_AN_PR (1<<12) /* Bit 12: Page Received */ -#define PHY_M_IS_AN_COMPL (1<<11) /* Bit 11: Auto-Negotiation Completed */ -#define PHY_M_IS_LST_CHANGE (1<<10) /* Bit 10: Link Status Changed */ -#define PHY_M_IS_SYMB_ERROR (1<<9) /* Bit 9: Symbol Error */ -#define PHY_M_IS_FALSE_CARR (1<<8) /* Bit 8: False Carrier */ -#define PHY_M_IS_FIFO_ERROR (1<<7) /* Bit 7: FIFO Overflow/Underrun Error */ -#define PHY_M_IS_MDI_CHANGE (1<<6) /* Bit 6: MDI Crossover Changed */ -#define PHY_M_IS_DOWNSH_DET (1<<5) /* Bit 5: Downshift Detected */ -#define PHY_M_IS_END_CHANGE (1<<4) /* Bit 4: Energy Detect Changed */ - /* Bit 3..2: reserved */ -#define PHY_M_IS_POL_CHANGE (1<<1) /* Bit 1: Polarity Changed */ -#define PHY_M_IS_JABBER (1<<0) /* Bit 0: Jabber */ +#define PHY_M_IS_AN_ERROR BIT_15S /* Auto-Negotiation Error */ +#define PHY_M_IS_LSP_CHANGE BIT_14S /* Link Speed Changed */ +#define PHY_M_IS_DUP_CHANGE BIT_13S /* Duplex Mode Changed */ +#define PHY_M_IS_AN_PR BIT_12S /* Page Received */ +#define PHY_M_IS_AN_COMPL BIT_11S /* Auto-Negotiation Completed */ +#define PHY_M_IS_LST_CHANGE BIT_10S /* Link Status Changed */ +#define PHY_M_IS_SYMB_ERROR BIT_9S /* Symbol Error */ +#define PHY_M_IS_FALSE_CARR BIT_8S /* False Carrier */ +#define PHY_M_IS_FIFO_ERROR BIT_7S /* FIFO Overflow/Underrun Error */ +#define PHY_M_IS_MDI_CHANGE BIT_6S /* MDI Crossover Changed */ +#define PHY_M_IS_DOWNSH_DET BIT_5S /* Downshift Detected */ +#define PHY_M_IS_END_CHANGE BIT_4S /* Energy Detect Changed */ + /* Bit 3: reserved */ +#define PHY_M_IS_DTE_CHANGE BIT_2S /* DTE Power Det. Status Changed */ + /* (88E1111 only) */ +#define PHY_M_IS_POL_CHANGE BIT_1S /* Polarity Changed */ +#define PHY_M_IS_JABBER BIT_0S /* Jabber */ #define PHY_M_DEF_MSK (PHY_M_IS_AN_ERROR | PHY_M_IS_AN_PR | \ PHY_M_IS_LST_CHANGE | PHY_M_IS_FIFO_ERROR) /***** PHY_MARV_EXT_CTRL 16 bit r/w Ext. PHY Specific Ctrl *****/ -#define PHY_M_EC_M_DSC_MSK (3<<10) /* Bit 11..10: Master downshift counter */ -#define PHY_M_EC_S_DSC_MSK (3<<8) /* Bit 9.. 8: Slave downshift counter */ +#define PHY_M_EC_ENA_BC_EXT BIT_15S /* Enable Block Carr. Ext. (88E1111 only) */ +#define PHY_M_EC_ENA_LIN_LB BIT_14S /* Enable Line Loopback (88E1111 only) */ + /* Bit 13: reserved */ +#define PHY_M_EC_DIS_LINK_P BIT_12S /* Disable Link Pulses (88E1111 only) */ +#define PHY_M_EC_M_DSC_MSK (3<<10) /* Bit 11..10: Master Downshift Counter */ + /* (88E1011 only) */ +#define PHY_M_EC_S_DSC_MSK (3<<8) /* Bit 9.. 8: Slave Downshift Counter */ + /* (88E1011 only) */ +#define PHY_M_EC_DSC_MSK_2 (7<<9) /* Bit 11.. 9: Downshift Counter */ + /* (88E1111 only) */ +#define PHY_M_EC_DOWN_S_ENA BIT_8S /* Downshift Enable (88E1111 only) */ + /* !!! Errata in spec. (1 = disable) */ +#define PHY_M_EC_RX_TIM_CT BIT_7S /* RGMII Rx Timing Control*/ #define PHY_M_EC_MAC_S_MSK (7<<4) /* Bit 6.. 4: Def. MAC interface speed */ -#define PHY_M_EC_FIB_AN_ENA (1<<3) /* Bit 3: Fiber Auto-Neg. Enable */ - -#define PHY_M_EC_M_DSC(x) SHIFT10(x) /* 00=1x; 01=2x; 10=3x; 11=4x */ -#define PHY_M_EC_S_DSC(x) SHIFT8(x) /* 00=dis; 01=1x; 10=2x; 11=3x */ -#define PHY_M_EC_MAC_S(x) SHIFT4(x) /* 01X=0; 110=2.5; 111=25 (MHz) */ - +#define PHY_M_EC_FIB_AN_ENA BIT_3S /* Fiber Auto-Neg. Enable (88E1011S only) */ +#define PHY_M_EC_DTE_D_ENA BIT_2S /* DTE Detect Enable (88E1111 only) */ +#define PHY_M_EC_TX_TIM_CT BIT_1S /* RGMII Tx Timing Control */ +#define PHY_M_EC_TRANS_DIS BIT_0S /* Transmitter Disable (88E1111 only) */ + +#define PHY_M_EC_M_DSC(x) (SHIFT10(x) & PHY_M_EC_M_DSC_MSK) + /* 00=1x; 01=2x; 10=3x; 11=4x */ +#define PHY_M_EC_S_DSC(x) (SHIFT8(x) & PHY_M_EC_S_DSC_MSK) + /* 00=dis; 01=1x; 10=2x; 11=3x */ +#define PHY_M_EC_MAC_S(x) (SHIFT4(x) & PHY_M_EC_MAC_S_MSK) + /* 01X=0; 110=2.5; 111=25 (MHz) */ + +#define PHY_M_EC_DSC_2(x) (SHIFT9(x) & PHY_M_EC_DSC_MSK_2) + /* 000=1x; 001=2x; 010=3x; 011=4x */ + /* 100=5x; 101=6x; 110=7x; 111=8x */ #define MAC_TX_CLK_0_MHZ 2 #define MAC_TX_CLK_2_5_MHZ 6 #define MAC_TX_CLK_25_MHZ 7 /***** PHY_MARV_LED_CTRL 16 bit r/w LED Control Reg *****/ -#define PHY_M_LEDC_DIS_LED (1<<15) /* Bit 15: Disable LED */ -#define PHY_M_LEDC_PULS_MSK (7<<12) /* Bit 14..12: Pulse Stretch Mask */ -#define PHY_M_LEDC_F_INT (1<<11) /* Bit 11: Force Interrupt */ -#define PHY_M_LEDC_BL_R_MSK (7<<8) /* Bit 10.. 8: Blink Rate Mask */ - /* Bit 7.. 5: reserved */ -#define PHY_M_LEDC_LINK_MSK (3<<3) /* Bit 4.. 3: Link Control Mask */ -#define PHY_M_LEDC_DP_CTRL (1<<2) /* Bit 2: Duplex Control */ -#define PHY_M_LEDC_RX_CTRL (1<<1) /* Bit 1: Rx activity / Link */ -#define PHY_M_LEDC_TX_CTRL (1<<0) /* Bit 0: Tx activity / Link */ +#define PHY_M_LEDC_DIS_LED BIT_15S /* Disable LED */ +#define PHY_M_LEDC_PULS_MSK (7<<12) /* Bit 14..12: Pulse Stretch Mask */ +#define PHY_M_LEDC_F_INT BIT_11S /* Force Interrupt */ +#define PHY_M_LEDC_BL_R_MSK (7<<8) /* Bit 10.. 8: Blink Rate Mask */ +#define PHY_M_LEDC_DP_C_LSB BIT_7S /* Duplex Control (LSB, 88E1111 only) */ +#define PHY_M_LEDC_TX_C_LSB BIT_6S /* Tx Control (LSB, 88E1111 only) */ +#define PHY_M_LEDC_LK_C_MSK (7<<3) /* Bit 5.. 3: Link Control Mask */ + /* (88E1111 only) */ + /* Bit 7.. 5: reserved (88E1011 only) */ +#define PHY_M_LEDC_LINK_MSK (3<<3) /* Bit 4.. 3: Link Control Mask */ + /* (88E1011 only) */ +#define PHY_M_LEDC_DP_CTRL BIT_2S /* Duplex Control */ +#define PHY_M_LEDC_DP_C_MSB BIT_2S /* Duplex Control (MSB, 88E1111 only) */ +#define PHY_M_LEDC_RX_CTRL BIT_1S /* Rx Activity / Link */ +#define PHY_M_LEDC_TX_CTRL BIT_0S /* Tx Activity / Link */ +#define PHY_M_LEDC_TX_C_MSB BIT_0S /* Tx Control (MSB, 88E1111 only) */ -#define PHY_M_LED_PULS_DUR(x) SHIFT12(x) /* Pulse Stretch Duration */ +#define PHY_M_LED_PULS_DUR(x) (SHIFT12(x) & PHY_M_LEDC_PULS_MSK) -#define PULS_NO_STR 0 /* no pulse stretching */ -#define PULS_21MS 1 /* 21 ms to 42 ms */ +#define PULS_NO_STR 0 /* no pulse stretching */ +#define PULS_21MS 1 /* 21 ms to 42 ms */ #define PULS_42MS 2 /* 42 ms to 84 ms */ #define PULS_84MS 3 /* 84 ms to 170 ms */ #define PULS_170MS 4 /* 170 ms to 340 ms */ @@ -1217,7 +1291,7 @@ #define PULS_670MS 6 /* 670 ms to 1.3 s */ #define PULS_1300MS 7 /* 1.3 s to 2.7 s */ -#define PHY_M_LED_BLINK_RT(x) SHIFT8(x) /* Blink Rate */ +#define PHY_M_LED_BLINK_RT(x) (SHIFT8(x) & PHY_M_LEDC_BL_R_MSK) #define BLINK_42MS 0 /* 42 ms */ #define BLINK_84MS 1 /* 84 ms */ @@ -1227,6 +1301,8 @@ /* values 5 - 7: reserved */ /***** PHY_MARV_LED_OVER 16 bit r/w Manual LED Override Reg *****/ +#define PHY_M_LED_MO_SGMII(x) SHIFT14(x) /* Bit 15..14: SGMII AN Timer */ + /* Bit 13..12: reserved */ #define PHY_M_LED_MO_DUP(x) SHIFT10(x) /* Bit 11..10: Duplex */ #define PHY_M_LED_MO_10(x) SHIFT8(x) /* Bit 9.. 8: Link 10 */ #define PHY_M_LED_MO_100(x) SHIFT6(x) /* Bit 7.. 6: Link 100 */ @@ -1240,30 +1316,35 @@ #define MO_LED_ON 3 /***** PHY_MARV_EXT_CTRL_2 16 bit r/w Ext. PHY Specific Ctrl 2 *****/ - /* Bit 15.. 7: reserved */ -#define PHY_M_EC2_FI_IMPED (1<<6) /* Bit 6: Fiber Input Impedance */ -#define PHY_M_EC2_FO_IMPED (1<<5) /* Bit 5: Fiber Output Impedance */ -#define PHY_M_EC2_FO_M_CLK (1<<4) /* Bit 4: Fiber Mode Clock Enable */ -#define PHY_M_EC2_FO_BOOST (1<<3) /* Bit 3: Fiber Output Boost */ + /* Bit 15.. 7: reserved */ +#define PHY_M_EC2_FI_IMPED BIT_6S /* Fiber Input Impedance */ +#define PHY_M_EC2_FO_IMPED BIT_5S /* Fiber Output Impedance */ +#define PHY_M_EC2_FO_M_CLK BIT_4S /* Fiber Mode Clock Enable */ +#define PHY_M_EC2_FO_BOOST BIT_3S /* Fiber Output Boost */ #define PHY_M_EC2_FO_AM_MSK 7 /* Bit 2.. 0: Fiber Output Amplitude */ -/***** PHY_MARV_EXT_P_STAT 16 bit r/w Ext. PHY Specific Status *****/ -#define PHY_M_FC_AUTO_SEL (1<<15) /* Bit 15: Fiber/Copper Auto Sel. dis. */ -#define PHY_M_FC_AN_REG_ACC (1<<14) /* Bit 14: Fiber/Copper Autoneg. reg acc */ -#define PHY_M_FC_RESULUTION (1<<13) /* Bit 13: Fiber/Copper Resulution */ -#define PHY_M_SER_IF_AN_BP (1<<12) /* Bit 12: Ser IF autoneg. bypass enable */ -#define PHY_M_SER_IF_BP_ST (1<<11) /* Bit 11: Ser IF autoneg. bypass status */ -#define PHY_M_IRQ_POLARITY (1<<10) /* Bit 10: IRQ polarity */ - /* Bit 9..4: reserved */ -#define PHY_M_UNDOC1 (1<< 7) /* undocumented bit !! */ -#define PHY_M_MODE_MASK (0xf<<0)/* Bit 3..0: copy of HWCFG MODE[3:0] */ - +/***** PHY_MARV_EXT_P_STAT 16 bit r/w Ext. PHY Specific Status *****/ +#define PHY_M_FC_AUTO_SEL BIT_15S /* Fiber/Copper Auto Sel. Dis. */ +#define PHY_M_FC_AN_REG_ACC BIT_14S /* Fiber/Copper AN Reg. Access */ +#define PHY_M_FC_RESOLUTION BIT_13S /* Fiber/Copper Resolution */ +#define PHY_M_SER_IF_AN_BP BIT_12S /* Ser. IF AN Bypass Enable */ +#define PHY_M_SER_IF_BP_ST BIT_11S /* Ser. IF AN Bypass Status */ +#define PHY_M_IRQ_POLARITY BIT_10S /* IRQ polarity */ +#define PHY_M_DIS_AUT_MED BIT_9S /* Disable Aut. Medium Reg. Selection */ + /* (88E1111 only) */ + /* Bit 9.. 4: reserved (88E1011 only) */ +#define PHY_M_UNDOC1 BIT_7S /* undocumented bit !! */ +#define PHY_M_DTE_POW_STAT BIT_4S /* DTE Power Status (88E1111 only) */ +#define PHY_M_MODE_MASK 0xf /* Bit 3.. 0: copy of HWCFG MODE[3:0] */ /***** PHY_MARV_CABLE_DIAG 16 bit r/o Cable Diagnostic Reg *****/ -#define PHY_M_CABD_ENA_TEST (1<<15) /* Bit 15: Enable Test */ -#define PHY_M_CABD_STAT_MSK (3<<13) /* Bit 14..13: Status */ - /* Bit 12.. 8: reserved */ -#define PHY_M_CABD_DIST_MSK 0xff /* Bit 7.. 0: Distance */ +#define PHY_M_CABD_ENA_TEST BIT_15S /* Enable Test (Page 0) */ +#define PHY_M_CABD_DIS_WAIT BIT_15S /* Disable Waiting Period (Page 1) */ + /* (88E1111 only) */ +#define PHY_M_CABD_STAT_MSK (3<<13) /* Bit 14..13: Status Mask */ +#define PHY_M_CABD_AMPL_MSK (0x1f<<8) /* Bit 12.. 8: Amplitude Mask */ + /* (88E1111 only) */ +#define PHY_M_CABD_DIST_MSK 0xff /* Bit 7.. 0: Distance Mask */ /* values for Cable Diagnostic Status (11=fail; 00=OK; 10=open; 01=short) */ #define CABD_STAT_NORMAL 0 @@ -1271,6 +1352,72 @@ #define CABD_STAT_OPEN 2 #define CABD_STAT_FAIL 3 +/* for 10/100 Fast Ethernet PHY (88E3082 only) */ +/***** PHY_MARV_FE_LED_PAR 16 bit r/w LED Parallel Select Reg. *****/ + /* Bit 15..12: reserved (used internally) */ +#define PHY_M_FELP_LED2_MSK (0xf<<8) /* Bit 11.. 8: LED2 Mask (LINK) */ +#define PHY_M_FELP_LED1_MSK (0xf<<4) /* Bit 7.. 4: LED1 Mask (ACT) */ +#define PHY_M_FELP_LED0_MSK 0xf /* Bit 3.. 0: LED0 Mask (SPEED) */ + +#define PHY_M_FELP_LED2_CTRL(x) (SHIFT8(x) & PHY_M_FELP_LED2_MSK) +#define PHY_M_FELP_LED1_CTRL(x) (SHIFT4(x) & PHY_M_FELP_LED1_MSK) +#define PHY_M_FELP_LED0_CTRL(x) (SHIFT0(x) & PHY_M_FELP_LED0_MSK) + +#define LED_PAR_CTRL_COLX 0x00 +#define LED_PAR_CTRL_ERROR 0x01 +#define LED_PAR_CTRL_DUPLEX 0x02 +#define LED_PAR_CTRL_DP_COL 0x03 +#define LED_PAR_CTRL_SPEED 0x04 +#define LED_PAR_CTRL_LINK 0x05 +#define LED_PAR_CTRL_TX 0x06 +#define LED_PAR_CTRL_RX 0x07 +#define LED_PAR_CTRL_ACT 0x08 +#define LED_PAR_CTRL_LNK_RX 0x09 +#define LED_PAR_CTRL_LNK_AC 0x0a +#define LED_PAR_CTRL_ACT_BL 0x0b +#define LED_PAR_CTRL_TX_BL 0x0c +#define LED_PAR_CTRL_RX_BL 0x0d +#define LED_PAR_CTRL_COL_BL 0x0e +#define LED_PAR_CTRL_INACT 0x0f + +/***** PHY_MARV_FE_SPEC_2 16 bit r/w Specific Control Reg. 2 *****/ +#define PHY_M_FESC_DIS_WAIT BIT_2S /* Disable TDR Waiting Period */ +#define PHY_M_FESC_ENA_MCLK BIT_1S /* Enable MAC Rx Clock in sleep mode */ +#define PHY_M_FESC_SEL_CL_A BIT_0S /* Select Class A driver (100B-TX) */ + +/* for Yukon-2 Gigabit Ethernet PHY (88E1112 only) */ +/***** PHY_MARV_PHY_CTRL (page 2) 16 bit r/w MAC Specific Ctrl *****/ +#define PHY_M_MAC_MD_MSK (7<<7) /* Bit 9.. 7: Mode Select Mask */ +#define PHY_M_MAC_MD_AUTO 3 /* Auto Copper/1000Base-X */ +#define PHY_M_MAC_MD_COPPER 5 /* Copper only */ +#define PHY_M_MAC_MD_1000BX 7 /* 1000Base-X only */ +#define PHY_M_MAC_MODE_SEL(x) (SHIFT7(x) & PHY_M_MAC_MD_MSK) + +/***** PHY_MARV_PHY_CTRL (page 3) 16 bit r/w LED Control Reg. *****/ +#define PHY_M_LEDC_LOS_MSK (0xf<<12) /* Bit 15..12: LOS LED Ctrl. Mask */ +#define PHY_M_LEDC_INIT_MSK (0xf<<8) /* Bit 11.. 8: INIT LED Ctrl. Mask */ +#define PHY_M_LEDC_STA1_MSK (0xf<<4) /* Bit 7.. 4: STAT1 LED Ctrl. Mask */ +#define PHY_M_LEDC_STA0_MSK 0xf /* Bit 3.. 0: STAT0 LED Ctrl. Mask */ + +#define PHY_M_LEDC_LOS_CTRL(x) (SHIFT12(x) & PHY_M_LEDC_LOS_MSK) +#define PHY_M_LEDC_INIT_CTRL(x) (SHIFT8(x) & PHY_M_LEDC_INIT_MSK) +#define PHY_M_LEDC_STA1_CTRL(x) (SHIFT4(x) & PHY_M_LEDC_STA1_MSK) +#define PHY_M_LEDC_STA0_CTRL(x) (SHIFT0(x) & PHY_M_LEDC_STA0_MSK) + +/***** PHY_MARV_PHY_STAT (page 3) 16 bit r/w Polarity Control Reg. *****/ +#define PHY_M_POLC_LS1M_MSK (0xf<<12) /* Bit 15..12: LOS,STAT1 Mix % Mask */ +#define PHY_M_POLC_IS0M_MSK (0xf<<8) /* Bit 11.. 8: INIT,STAT0 Mix % Mask */ +#define PHY_M_POLC_LOS_MSK (0x3<<6) /* Bit 7.. 6: LOS Pol. Ctrl. Mask */ +#define PHY_M_POLC_INIT_MSK (0x3<<4) /* Bit 5.. 4: INIT Pol. Ctrl. Mask */ +#define PHY_M_POLC_STA1_MSK (0x3<<2) /* Bit 3.. 2: STAT1 Pol. Ctrl. Mask */ +#define PHY_M_POLC_STA0_MSK 0x3 /* Bit 1.. 0: STAT0 Pol. Ctrl. Mask */ + +#define PHY_M_POLC_LS1_P_MIX(x) (SHIFT12(x) & PHY_M_POLC_LS1M_MSK) +#define PHY_M_POLC_IS0_P_MIX(x) (SHIFT8(x) & PHY_M_POLC_IS0M_MSK) +#define PHY_M_POLC_LOS_CTRL(x) (SHIFT6(x) & PHY_M_POLC_LOS_MSK) +#define PHY_M_POLC_INIT_CTRL(x) (SHIFT4(x) & PHY_M_POLC_INIT_MSK) +#define PHY_M_POLC_STA1_CTRL(x) (SHIFT2(x) & PHY_M_POLC_STA1_MSK) +#define PHY_M_POLC_STA0_CTRL(x) (SHIFT0(x) & PHY_M_POLC_STA0_MSK) /* * GMAC registers @@ -1431,141 +1578,159 @@ */ /* GM_GP_STAT 16 bit r/o General Purpose Status Register */ -#define GM_GPSR_SPEED (1<<15) /* Bit 15: Port Speed (1 = 100 Mbps) */ -#define GM_GPSR_DUPLEX (1<<14) /* Bit 14: Duplex Mode (1 = Full) */ -#define GM_GPSR_FC_TX_DIS (1<<13) /* Bit 13: Tx Flow-Control Mode Disabled */ -#define GM_GPSR_LINK_UP (1<<12) /* Bit 12: Link Up Status */ -#define GM_GPSR_PAUSE (1<<11) /* Bit 11: Pause State */ -#define GM_GPSR_TX_ACTIVE (1<<10) /* Bit 10: Tx in Progress */ -#define GM_GPSR_EXC_COL (1<<9) /* Bit 9: Excessive Collisions Occured */ -#define GM_GPSR_LAT_COL (1<<8) /* Bit 8: Late Collisions Occured */ - /* Bit 7..6: reserved */ -#define GM_GPSR_PHY_ST_CH (1<<5) /* Bit 5: PHY Status Change */ -#define GM_GPSR_GIG_SPEED (1<<4) /* Bit 4: Gigabit Speed (1 = 1000 Mbps) */ -#define GM_GPSR_PART_MODE (1<<3) /* Bit 3: Partition mode */ -#define GM_GPSR_FC_RX_DIS (1<<2) /* Bit 2: Rx Flow-Control Mode Disabled */ -#define GM_GPSR_PROM_EN (1<<1) /* Bit 1: Promiscuous Mode Enabled */ - /* Bit 0: reserved */ - +#define GM_GPSR_SPEED BIT_15S /* Port Speed (1 = 100 Mbps) */ +#define GM_GPSR_DUPLEX BIT_14S /* Duplex Mode (1 = Full) */ +#define GM_GPSR_FC_TX_DIS BIT_13S /* Tx Flow-Control Mode Disabled */ +#define GM_GPSR_LINK_UP BIT_12S /* Link Up Status */ +#define GM_GPSR_PAUSE BIT_11S /* Pause State */ +#define GM_GPSR_TX_ACTIVE BIT_10S /* Tx in Progress */ +#define GM_GPSR_EXC_COL BIT_9S /* Excessive Collisions Occured */ +#define GM_GPSR_LAT_COL BIT_8S /* Late Collisions Occured */ + /* Bit 7.. 6: reserved */ +#define GM_GPSR_PHY_ST_CH BIT_5S /* PHY Status Change */ +#define GM_GPSR_GIG_SPEED BIT_4S /* Gigabit Speed (1 = 1000 Mbps) */ +#define GM_GPSR_PART_MODE BIT_3S /* Partition mode */ +#define GM_GPSR_FC_RX_DIS BIT_2S /* Rx Flow-Control Mode Disabled */ + /* Bit 2.. 0: reserved */ + /* GM_GP_CTRL 16 bit r/w General Purpose Control Register */ - /* Bit 15: reserved */ -#define GM_GPCR_PROM_ENA (1<<14) /* Bit 14: Enable Promiscuous Mode */ -#define GM_GPCR_FC_TX_DIS (1<<13) /* Bit 13: Disable Tx Flow-Control Mode */ -#define GM_GPCR_TX_ENA (1<<12) /* Bit 12: Enable Transmit */ -#define GM_GPCR_RX_ENA (1<<11) /* Bit 11: Enable Receive */ -#define GM_GPCR_BURST_ENA (1<<10) /* Bit 10: Enable Burst Mode */ -#define GM_GPCR_LOOP_ENA (1<<9) /* Bit 9: Enable MAC Loopback Mode */ -#define GM_GPCR_PART_ENA (1<<8) /* Bit 8: Enable Partition Mode */ -#define GM_GPCR_GIGS_ENA (1<<7) /* Bit 7: Gigabit Speed (1000 Mbps) */ -#define GM_GPCR_FL_PASS (1<<6) /* Bit 6: Force Link Pass */ -#define GM_GPCR_DUP_FULL (1<<5) /* Bit 5: Full Duplex Mode */ -#define GM_GPCR_FC_RX_DIS (1<<4) /* Bit 4: Disable Rx Flow-Control Mode */ -#define GM_GPCR_SPEED_100 (1<<3) /* Bit 3: Port Speed 100 Mbps */ -#define GM_GPCR_AU_DUP_DIS (1<<2) /* Bit 2: Disable Auto-Update Duplex */ -#define GM_GPCR_AU_FCT_DIS (1<<1) /* Bit 1: Disable Auto-Update Flow-C. */ -#define GM_GPCR_AU_SPD_DIS (1<<0) /* Bit 0: Disable Auto-Update Speed */ +#define GM_GPCR_RMII_PH_ENA BIT_15S /* Enable RMII for PHY (Yukon-FE only) */ +#define GM_GPCR_RMII_LB_ENA BIT_14S /* Enable RMII Loopback (Yukon-FE only) */ +#define GM_GPCR_FC_TX_DIS BIT_13S /* Disable Tx Flow-Control Mode */ +#define GM_GPCR_TX_ENA BIT_12S /* Enable Transmit */ +#define GM_GPCR_RX_ENA BIT_11S /* Enable Receive */ + /* Bit 10: reserved */ +#define GM_GPCR_LOOP_ENA BIT_9S /* Enable MAC Loopback Mode */ +#define GM_GPCR_PART_ENA BIT_8S /* Enable Partition Mode */ +#define GM_GPCR_GIGS_ENA BIT_7S /* Gigabit Speed (1000 Mbps) */ +#define GM_GPCR_FL_PASS BIT_6S /* Force Link Pass */ +#define GM_GPCR_DUP_FULL BIT_5S /* Full Duplex Mode */ +#define GM_GPCR_FC_RX_DIS BIT_4S /* Disable Rx Flow-Control Mode */ +#define GM_GPCR_SPEED_100 BIT_3S /* Port Speed 100 Mbps */ +#define GM_GPCR_AU_DUP_DIS BIT_2S /* Disable Auto-Update Duplex */ +#define GM_GPCR_AU_FCT_DIS BIT_1S /* Disable Auto-Update Flow-C. */ +#define GM_GPCR_AU_SPD_DIS BIT_0S /* Disable Auto-Update Speed */ #define GM_GPCR_SPEED_1000 (GM_GPCR_GIGS_ENA | GM_GPCR_SPEED_100) #define GM_GPCR_AU_ALL_DIS (GM_GPCR_AU_DUP_DIS | GM_GPCR_AU_FCT_DIS |\ GM_GPCR_AU_SPD_DIS) - + /* GM_TX_CTRL 16 bit r/w Transmit Control Register */ -#define GM_TXCR_FORCE_JAM (1<<15) /* Bit 15: Force Jam / Flow-Control */ -#define GM_TXCR_CRC_DIS (1<<14) /* Bit 14: Disable insertion of CRC */ -#define GM_TXCR_PAD_DIS (1<<13) /* Bit 13: Disable padding of packets */ -#define GM_TXCR_COL_THR_MSK (1<<10) /* Bit 12..10: Collision Threshold */ +#define GM_TXCR_FORCE_JAM BIT_15S /* Force Jam / Flow-Control */ +#define GM_TXCR_CRC_DIS BIT_14S /* Disable insertion of CRC */ +#define GM_TXCR_PAD_DIS BIT_13S /* Disable padding of packets */ +#define GM_TXCR_COL_THR_MSK (7<<10) /* Bit 12..10: Collision Threshold Mask */ + /* Bit 9.. 8: reserved */ +#define GM_TXCR_PAD_PAT_MSK 0xff /* Bit 7.. 0: Padding Pattern Mask */ + /* (Yukon-2 only) */ #define TX_COL_THR(x) (SHIFT10(x) & GM_TXCR_COL_THR_MSK) #define TX_COL_DEF 0x04 - + /* GM_RX_CTRL 16 bit r/w Receive Control Register */ -#define GM_RXCR_UCF_ENA (1<<15) /* Bit 15: Enable Unicast filtering */ -#define GM_RXCR_MCF_ENA (1<<14) /* Bit 14: Enable Multicast filtering */ -#define GM_RXCR_CRC_DIS (1<<13) /* Bit 13: Remove 4-byte CRC */ -#define GM_RXCR_PASS_FC (1<<12) /* Bit 12: Pass FC packets to FIFO */ - +#define GM_RXCR_UCF_ENA BIT_15S /* Enable Unicast filtering */ +#define GM_RXCR_MCF_ENA BIT_14S /* Enable Multicast filtering */ +#define GM_RXCR_CRC_DIS BIT_13S /* Remove 4-byte CRC */ +#define GM_RXCR_PASS_FC BIT_12S /* Pass FC packets to FIFO (Yukon-1 only) */ + /* Bit 11.. 0: reserved */ + /* GM_TX_PARAM 16 bit r/w Transmit Parameter Register */ -#define GM_TXPA_JAMLEN_MSK (0x03<<14) /* Bit 15..14: Jam Length */ -#define GM_TXPA_JAMIPG_MSK (0x1f<<9) /* Bit 13..9: Jam IPG */ -#define GM_TXPA_JAMDAT_MSK (0x1f<<4) /* Bit 8..4: IPG Jam to Data */ - /* Bit 3..0: reserved */ +#define GM_TXPA_JAMLEN_MSK (3<<14) /* Bit 15..14: Jam Length Mask */ +#define GM_TXPA_JAMIPG_MSK (0x1f<<9) /* Bit 13.. 9: Jam IPG Mask */ +#define GM_TXPA_JAMDAT_MSK (0x1f<<4) /* Bit 8.. 4: IPG Jam to Data Mask */ +#define GM_TXPA_BO_LIM_MSK 0x0f /* Bit 3.. 0: Backoff Limit Mask */ + /* (Yukon-2 only) */ #define TX_JAM_LEN_VAL(x) (SHIFT14(x) & GM_TXPA_JAMLEN_MSK) #define TX_JAM_IPG_VAL(x) (SHIFT9(x) & GM_TXPA_JAMIPG_MSK) #define TX_IPG_JAM_DATA(x) (SHIFT4(x) & GM_TXPA_JAMDAT_MSK) +#define TX_BACK_OFF_LIM(x) ((x) & GM_TXPA_BO_LIM_MSK) #define TX_JAM_LEN_DEF 0x03 #define TX_JAM_IPG_DEF 0x0b #define TX_IPG_JAM_DEF 0x1c +#define TX_BOF_LIM_DEF 0x04 /* GM_SERIAL_MODE 16 bit r/w Serial Mode Register */ -#define GM_SMOD_DATABL_MSK (0x1f<<11) /* Bit 15..11: Data Blinder (r/o) */ -#define GM_SMOD_LIMIT_4 (1<<10) /* Bit 10: 4 consecutive Tx trials */ -#define GM_SMOD_VLAN_ENA (1<<9) /* Bit 9: Enable VLAN (Max. Frame Len) */ -#define GM_SMOD_JUMBO_ENA (1<<8) /* Bit 8: Enable Jumbo (Max. Frame Len) */ - /* Bit 7..5: reserved */ -#define GM_SMOD_IPG_MSK 0x1f /* Bit 4..0: Inter-Packet Gap (IPG) */ - +#define GM_SMOD_DATABL_MSK (0x1f<<11) /* Bit 15..11: Data Blinder */ + /* r/o on Yukon, r/w on Yukon-EC */ +#define GM_SMOD_LIMIT_4 BIT_10S /* 4 consecutive Tx trials */ +#define GM_SMOD_VLAN_ENA BIT_9S /* Enable VLAN (Max. Frame Len) */ +#define GM_SMOD_JUMBO_ENA BIT_8S /* Enable Jumbo (Max. Frame Len) */ + /* Bit 7.. 5: reserved */ +#define GM_SMOD_IPG_MSK 0x1f /* Bit 4.. 0: Inter-Packet Gap (IPG) */ + #define DATA_BLIND_VAL(x) (SHIFT11(x) & GM_SMOD_DATABL_MSK) -#define DATA_BLIND_DEF 0x04 +#define IPG_DATA_VAL(x) ((x) & GM_SMOD_IPG_MSK) -#define IPG_DATA_VAL(x) (x & GM_SMOD_IPG_MSK) +#define DATA_BLIND_DEF 0x04 #define IPG_DATA_DEF 0x1e /* GM_SMI_CTRL 16 bit r/w SMI Control Register */ #define GM_SMI_CT_PHY_A_MSK (0x1f<<11) /* Bit 15..11: PHY Device Address */ #define GM_SMI_CT_REG_A_MSK (0x1f<<6) /* Bit 10.. 6: PHY Register Address */ -#define GM_SMI_CT_OP_RD (1<<5) /* Bit 5: OpCode Read (0=Write)*/ -#define GM_SMI_CT_RD_VAL (1<<4) /* Bit 4: Read Valid (Read completed) */ -#define GM_SMI_CT_BUSY (1<<3) /* Bit 3: Busy (Operation in progress) */ - /* Bit 2..0: reserved */ - +#define GM_SMI_CT_OP_RD BIT_5S /* OpCode Read (0=Write)*/ +#define GM_SMI_CT_RD_VAL BIT_4S /* Read Valid (Read completed) */ +#define GM_SMI_CT_BUSY BIT_3S /* Busy (Operation in progress) */ + /* Bit 2.. 0: reserved */ + #define GM_SMI_CT_PHY_AD(x) (SHIFT11(x) & GM_SMI_CT_PHY_A_MSK) #define GM_SMI_CT_REG_AD(x) (SHIFT6(x) & GM_SMI_CT_REG_A_MSK) /* GM_PHY_ADDR 16 bit r/w GPHY Address Register */ - /* Bit 15..6: reserved */ -#define GM_PAR_MIB_CLR (1<<5) /* Bit 5: Set MIB Clear Counter Mode */ -#define GM_PAR_MIB_TST (1<<4) /* Bit 4: MIB Load Counter (Test Mode) */ - /* Bit 3..0: reserved */ - + /* Bit 15.. 6: reserved */ +#define GM_PAR_MIB_CLR BIT_5S /* Set MIB Clear Counter Mode */ +#define GM_PAR_MIB_TST BIT_4S /* MIB Load Counter (Test Mode) */ + /* Bit 3.. 0: reserved */ + /* Receive Frame Status Encoding */ -#define GMR_FS_LEN (0xffffUL<<16) /* Bit 31..16: Rx Frame Length */ +#define GMR_FS_LEN_MSK (0xffffUL<<16) /* Bit 31..16: Rx Frame Length */ /* Bit 15..14: reserved */ -#define GMR_FS_VLAN (1L<<13) /* Bit 13: VLAN Packet */ -#define GMR_FS_JABBER (1L<<12) /* Bit 12: Jabber Packet */ -#define GMR_FS_UN_SIZE (1L<<11) /* Bit 11: Undersize Packet */ -#define GMR_FS_MC (1L<<10) /* Bit 10: Multicast Packet */ -#define GMR_FS_BC (1L<<9) /* Bit 9: Broadcast Packet */ -#define GMR_FS_RX_OK (1L<<8) /* Bit 8: Receive OK (Good Packet) */ -#define GMR_FS_GOOD_FC (1L<<7) /* Bit 7: Good Flow-Control Packet */ -#define GMR_FS_BAD_FC (1L<<6) /* Bit 6: Bad Flow-Control Packet */ -#define GMR_FS_MII_ERR (1L<<5) /* Bit 5: MII Error */ -#define GMR_FS_LONG_ERR (1L<<4) /* Bit 4: Too Long Packet */ -#define GMR_FS_FRAGMENT (1L<<3) /* Bit 3: Fragment */ +#define GMR_FS_VLAN BIT_13 /* VLAN Packet */ +#define GMR_FS_JABBER BIT_12 /* Jabber Packet */ +#define GMR_FS_UN_SIZE BIT_11 /* Undersize Packet */ +#define GMR_FS_MC BIT_10 /* Multicast Packet */ +#define GMR_FS_BC BIT_9 /* Broadcast Packet */ +#define GMR_FS_RX_OK BIT_8 /* Receive OK (Good Packet) */ +#define GMR_FS_GOOD_FC BIT_7 /* Good Flow-Control Packet */ +#define GMR_FS_BAD_FC BIT_6 /* Bad Flow-Control Packet */ +#define GMR_FS_MII_ERR BIT_5 /* MII Error */ +#define GMR_FS_LONG_ERR BIT_4 /* Too Long Packet */ +#define GMR_FS_FRAGMENT BIT_3 /* Fragment */ /* Bit 2: reserved */ -#define GMR_FS_CRC_ERR (1L<<1) /* Bit 1: CRC Error */ -#define GMR_FS_RX_FF_OV (1L<<0) /* Bit 0: Rx FIFO Overflow */ +#define GMR_FS_CRC_ERR BIT_1 /* CRC Error */ +#define GMR_FS_RX_FF_OV BIT_0 /* Rx FIFO Overflow */ + +#define GMR_FS_LEN_SHIFT 16 /* * GMR_FS_ANY_ERR (analogous to XMR_FS_ANY_ERR) */ -#define GMR_FS_ANY_ERR (GMR_FS_CRC_ERR | \ - GMR_FS_LONG_ERR | \ +#ifdef SK_DIAG +#define GMR_FS_ANY_ERR ( \ + GMR_FS_RX_FF_OV | \ + GMR_FS_CRC_ERR | \ + GMR_FS_FRAGMENT | \ GMR_FS_MII_ERR | \ GMR_FS_BAD_FC | \ GMR_FS_GOOD_FC | \ GMR_FS_JABBER) - -/* Rx GMAC FIFO Flush Mask (default) */ -#define RX_FF_FL_DEF_MSK (GMR_FS_CRC_ERR | \ +#else +#define GMR_FS_ANY_ERR ( \ GMR_FS_RX_FF_OV | \ + GMR_FS_CRC_ERR | \ + GMR_FS_FRAGMENT | \ + GMR_FS_LONG_ERR | \ GMR_FS_MII_ERR | \ GMR_FS_BAD_FC | \ GMR_FS_GOOD_FC | \ GMR_FS_UN_SIZE | \ GMR_FS_JABBER) +#endif + +/* Rx GMAC FIFO Flush Mask (default) */ +#define RX_FF_FL_DEF_MSK GMR_FS_ANY_ERR /* typedefs *******************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skaddr.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skaddr.h @@ -2,8 +2,8 @@ * * Name: skaddr.h * Project: Gigabit Ethernet Adapters, ADDR-Modul - * Version: $Revision: 1.29 $ - * Date: $Date: 2003/05/13 16:57:24 $ + * Version: $Revision: 2.1 $ + * Date: $Date: 2003/10/27 14:16:07 $ * Purpose: Header file for Address Management (MC, UC, Prom). * ******************************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skdrv2nd.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skdrv2nd.h @@ -1,17 +1,17 @@ /****************************************************************************** * - * Name: skdrv2nd.h - * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.10 $ - * Date: $Date: 2003/12/11 16:04:45 $ - * Purpose: Second header file for driver and all other modules + * Name: skdrv2nd.h + * Project: GEnesis, PCI Gigabit Ethernet Adapter + * Version: $Revision: 1.29.2.20 $ + * Date: $Date: 2005/06/17 14:09:50 $ + * Purpose: Second header file for driver and all other modules * ******************************************************************************/ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect GmbH. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2005 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,10 +42,11 @@ #include "h/skqueue.h" #include "h/skgehwt.h" #include "h/sktimer.h" -#include "h/ski2c.h" +#include "h/sktwsi.h" #include "h/skgepnmi.h" #include "h/skvpd.h" #include "h/skgehw.h" +#include "h/sky2le.h" #include "h/skgeinit.h" #include "h/skaddr.h" #include "h/skgesirq.h" @@ -53,103 +54,178 @@ #include "h/skrlmt.h" #include "h/skgedrv.h" +/* Defines for the poll cotroller */ +#ifdef HAVE_POLL_CONTROLLER +#define SK_POLL_CONTROLLER +#define CONFIG_SK98LIN_NAPI +#elif CONFIG_NET_POLL_CONTROLLER +#define SK_POLL_CONTROLLER +#define CONFIG_SK98LIN_NAPI +#endif + -extern SK_MBUF *SkDrvAllocRlmtMbuf(SK_AC*, SK_IOC, unsigned); -extern void SkDrvFreeRlmtMbuf(SK_AC*, SK_IOC, SK_MBUF*); -extern SK_U64 SkOsGetTime(SK_AC*); -extern int SkPciReadCfgDWord(SK_AC*, int, SK_U32*); -extern int SkPciReadCfgWord(SK_AC*, int, SK_U16*); -extern int SkPciReadCfgByte(SK_AC*, int, SK_U8*); -extern int SkPciWriteCfgWord(SK_AC*, int, SK_U16); -extern int SkPciWriteCfgByte(SK_AC*, int, SK_U8); -extern int SkDrvEvent(SK_AC*, SK_IOC IoC, SK_U32, SK_EVPARA); - -#ifdef SK_DIAG_SUPPORT -extern int SkDrvEnterDiagMode(SK_AC *pAc); -extern int SkDrvLeaveDiagMode(SK_AC *pAc); +/****************************************************************************** + * + * Generic driver defines + * + ******************************************************************************/ + +#define USE_TIST_FOR_RESET /* Use timestamp for reset */ +#define Y2_RECOVERY /* use specific recovery yukon2 functions */ +#define Y2_LE_CHECK /* activate check for LE order */ +#define Y2_SYNC_CHECK /* activate check for receiver in sync */ +#define SK_YUKON2 /* Enable Yukon2 dual net support */ +#define USE_SK_TX_CHECKSUM /* use the tx hw checksum driver functionality */ +#define USE_SK_RX_CHECKSUM /* use the rx hw checksum driver functionality */ +#define USE_SK_TSO_FEATURE /* use TCP segmentation offload if possible */ +#define SK_COPY_THRESHOLD 50 /* threshold for copying small RX frames; + * 0 avoids copying, 9001 copies all */ +#define SK_MAX_CARD_PARAM 16 /* number of adapters that can be configured via + * command line params */ +//#define USE_TX_COMPLETE /* use of a transmit complete interrupt */ +#ifndef CONFIG_SK98LIN_NAPI +#define Y2_RX_CHECK /* RX Check timestamp */ +#endif + +/* + * use those defines for a compile-in version of the driver instead + * of command line parameters + */ +// #define LINK_SPEED_A {"Auto",} +// #define LINK_SPEED_B {"Auto",} +// #define AUTO_NEG_A {"Sense",} +// #define AUTO_NEG_B {"Sense"} +// #define DUP_CAP_A {"Both",} +// #define DUP_CAP_B {"Both",} +// #define FLOW_CTRL_A {"SymOrRem",} +// #define FLOW_CTRL_B {"SymOrRem",} +// #define ROLE_A {"Auto",} +// #define ROLE_B {"Auto",} +// #define PREF_PORT {"A",} +// #define CON_TYPE {"Auto",} +// #define RLMT_MODE {"CheckLinkState",} + +#ifdef Y2_RECOVERY +#define CHECK_TRANSMIT_TIMEOUT +#define Y2_RESYNC_WATERMARK 1000000L #endif + +/****************************************************************************** + * + * Generic ISR defines + * + ******************************************************************************/ + +#define SkIsrRetVar irqreturn_t +#define SkIsrRetNone IRQ_NONE +#define SkIsrRetHandled IRQ_HANDLED + +#define DEV_KFREE_SKB(skb) dev_kfree_skb(skb) +#define DEV_KFREE_SKB_IRQ(skb) dev_kfree_skb_irq(skb) +#define DEV_KFREE_SKB_ANY(skb) dev_kfree_skb_any(skb) + +/****************************************************************************** + * + * Global function prototypes + * + ******************************************************************************/ + +extern SK_MBUF *SkDrvAllocRlmtMbuf(SK_AC*, SK_IOC, unsigned); +extern void SkDrvFreeRlmtMbuf(SK_AC*, SK_IOC, SK_MBUF*); +extern SK_U64 SkOsGetTime(SK_AC*); +extern int SkPciReadCfgDWord(SK_AC*, int, SK_U32*); +extern int SkPciReadCfgWord(SK_AC*, int, SK_U16*); +extern int SkPciReadCfgByte(SK_AC*, int, SK_U8*); +extern int SkPciWriteCfgDWord(SK_AC*, int, SK_U32); +extern int SkPciWriteCfgWord(SK_AC*, int, SK_U16); +extern int SkPciWriteCfgByte(SK_AC*, int, SK_U8); +extern int SkDrvEvent(SK_AC*, SK_IOC IoC, SK_U32, SK_EVPARA); +extern int SkDrvEnterDiagMode(SK_AC *pAc); +extern int SkDrvLeaveDiagMode(SK_AC *pAc); + +/****************************************************************************** + * + * Linux specific RLMT buffer structure (SK_MBUF typedef in skdrv1st)! + * + ******************************************************************************/ + struct s_DrvRlmtMbuf { - SK_MBUF *pNext; /* Pointer to next RLMT Mbuf. */ - SK_U8 *pData; /* Data buffer (virtually contig.). */ - unsigned Size; /* Data buffer size. */ - unsigned Length; /* Length of packet (<= Size). */ - SK_U32 PortIdx; /* Receiving/transmitting port. */ + SK_MBUF *pNext; /* Pointer to next RLMT Mbuf. */ + SK_U8 *pData; /* Data buffer (virtually contig.). */ + unsigned Size; /* Data buffer size. */ + unsigned Length; /* Length of packet (<= Size). */ + SK_U32 PortIdx; /* Receiving/transmitting port. */ #ifdef SK_RLMT_MBUF_PRIVATE - SK_RLMT_MBUF Rlmt; /* Private part for RLMT. */ -#endif /* SK_RLMT_MBUF_PRIVATE */ - struct sk_buff *pOs; /* Pointer to message block */ + SK_RLMT_MBUF Rlmt; /* Private part for RLMT. */ +#endif + struct sk_buff *pOs; /* Pointer to message block */ }; +/****************************************************************************** + * + * Linux specific TIME defines + * + ******************************************************************************/ -/* - * Time macros - */ #if SK_TICKS_PER_SEC == 100 #define SK_PNMI_HUNDREDS_SEC(t) (t) #else -#define SK_PNMI_HUNDREDS_SEC(t) ((((unsigned long)t) * 100) / \ - (SK_TICKS_PER_SEC)) +#define SK_PNMI_HUNDREDS_SEC(t) ((((unsigned long)t)*100)/(SK_TICKS_PER_SEC)) #endif -/* - * New SkOsGetTime - */ #define SkOsGetTimeCurrent(pAC, pUsec) {\ struct timeval t;\ do_gettimeofday(&t);\ *pUsec = ((((t.tv_sec) * 1000000L)+t.tv_usec)/10000);\ } +/****************************************************************************** + * + * Linux specific IOCTL defines and typedefs + * + ******************************************************************************/ -/* - * ioctl definitions - */ -#define SK_IOCTL_BASE (SIOCDEVPRIVATE) -#define SK_IOCTL_GETMIB (SK_IOCTL_BASE + 0) -#define SK_IOCTL_SETMIB (SK_IOCTL_BASE + 1) -#define SK_IOCTL_PRESETMIB (SK_IOCTL_BASE + 2) -#define SK_IOCTL_GEN (SK_IOCTL_BASE + 3) -#define SK_IOCTL_DIAG (SK_IOCTL_BASE + 4) - -typedef struct s_IOCTL SK_GE_IOCTL; +#define SK_IOCTL_BASE (SIOCDEVPRIVATE) +#define SK_IOCTL_GETMIB (SK_IOCTL_BASE + 0) +#define SK_IOCTL_SETMIB (SK_IOCTL_BASE + 1) +#define SK_IOCTL_PRESETMIB (SK_IOCTL_BASE + 2) +#define SK_IOCTL_GEN (SK_IOCTL_BASE + 3) +#define SK_IOCTL_DIAG (SK_IOCTL_BASE + 4) +typedef struct s_IOCTL SK_GE_IOCTL; struct s_IOCTL { char __user * pData; unsigned int Len; }; +/****************************************************************************** + * + * Generic sizes and length definitions + * + ******************************************************************************/ -/* - * define sizes of descriptor rings in bytes - */ - -#define TX_RING_SIZE (8*1024) -#define RX_RING_SIZE (24*1024) - -/* - * Buffer size for ethernet packets - */ -#define ETH_BUF_SIZE 1540 -#define ETH_MAX_MTU 1514 -#define ETH_MIN_MTU 60 -#define ETH_MULTICAST_BIT 0x01 -#define SK_JUMBO_MTU 9000 - -/* - * transmit priority selects the queue: LOW=asynchron, HIGH=synchron - */ -#define TX_PRIO_LOW 0 -#define TX_PRIO_HIGH 1 +#define TX_RING_SIZE (24*1024) /* GEnesis/Yukon */ +#define RX_RING_SIZE (24*1024) /* GEnesis/Yukon */ +#define RX_MAX_NBR_BUFFERS 128 /* Yukon-EC/-II */ +#define TX_MAX_NBR_BUFFERS 128 /* Yukon-EC/-II */ + +#define ETH_BUF_SIZE 1560 /* multiples of 8 bytes */ +#define ETH_MAX_MTU 1514 +#define ETH_MIN_MTU 60 +#define ETH_MULTICAST_BIT 0x01 +#define SK_JUMBO_MTU 9000 + +#define TX_PRIO_LOW 0 /* asynchronous queue */ +#define TX_PRIO_HIGH 1 /* synchronous queue */ +#define DESCR_ALIGN 64 /* alignment of Rx/Tx descriptors */ -/* - * alignment of rx/tx descriptors - */ -#define DESCR_ALIGN 64 +/****************************************************************************** + * + * PNMI related definitions + * + ******************************************************************************/ -/* - * definitions for pnmi. TODO - */ #define SK_DRIVER_RESET(pAC, IoC) 0 #define SK_DRIVER_SENDEVENT(pAC, IoC) 0 #define SK_DRIVER_SELFTEST(pAC, IoC) 0 @@ -158,20 +234,16 @@ #define SK_DRIVER_SET_MTU(pAc,IoC,i,v) 0 #define SK_DRIVER_PRESET_MTU(pAc,IoC,i,v) 0 -/* -** Interim definition of SK_DRV_TIMER placed in this file until -** common modules have boon finallized -*/ -#define SK_DRV_TIMER 11 -#define SK_DRV_MODERATION_TIMER 1 -#define SK_DRV_MODERATION_TIMER_LENGTH 1000000 /* 1 second */ -#define SK_DRV_RX_CLEANUP_TIMER 2 -#define SK_DRV_RX_CLEANUP_TIMER_LENGTH 1000000 /* 100 millisecs */ -/* -** Definitions regarding transmitting frames -** any calculating any checksum. -*/ +/****************************************************************************** + * + * Various offsets and sizes + * + ******************************************************************************/ + +#define SK_DRV_MODERATION_TIMER 1 /* id */ +#define SK_DRV_MODERATION_TIMER_LENGTH 1 /* 1 second */ + #define C_LEN_ETHERMAC_HEADER_DEST_ADDR 6 #define C_LEN_ETHERMAC_HEADER_SRC_ADDR 6 #define C_LEN_ETHERMAC_HEADER_LENTYPE 2 @@ -197,112 +269,430 @@ #define C_PROTO_ID_UDP 17 /* refer to RFC 790 or Stevens' */ #define C_PROTO_ID_TCP 6 /* TCP/IP illustrated for details */ -/* TX and RX descriptors *****************************************************/ +/****************************************************************************** + * + * Tx and Rx descriptor definitions + * + ******************************************************************************/ typedef struct s_RxD RXD; /* the receive descriptor */ - struct s_RxD { - volatile SK_U32 RBControl; /* Receive Buffer Control */ - SK_U32 VNextRxd; /* Next receive descriptor,low dword */ - SK_U32 VDataLow; /* Receive buffer Addr, low dword */ - SK_U32 VDataHigh; /* Receive buffer Addr, high dword */ - SK_U32 FrameStat; /* Receive Frame Status word */ - SK_U32 TimeStamp; /* Time stamp from XMAC */ - SK_U32 TcpSums; /* TCP Sum 2 / TCP Sum 1 */ - SK_U32 TcpSumStarts; /* TCP Sum Start 2 / TCP Sum Start 1 */ - RXD *pNextRxd; /* Pointer to next Rxd */ - struct sk_buff *pMBuf; /* Pointer to Linux' socket buffer */ + volatile SK_U32 RBControl; /* Receive Buffer Control */ + SK_U32 VNextRxd; /* Next receive descriptor,low dword */ + SK_U32 VDataLow; /* Receive buffer Addr, low dword */ + SK_U32 VDataHigh; /* Receive buffer Addr, high dword */ + SK_U32 FrameStat; /* Receive Frame Status word */ + SK_U32 TimeStamp; /* Time stamp from XMAC */ + SK_U32 TcpSums; /* TCP Sum 2 / TCP Sum 1 */ + SK_U32 TcpSumStarts; /* TCP Sum Start 2 / TCP Sum Start 1 */ + RXD *pNextRxd; /* Pointer to next Rxd */ + struct sk_buff *pMBuf; /* Pointer to Linux' socket buffer */ }; typedef struct s_TxD TXD; /* the transmit descriptor */ - struct s_TxD { - volatile SK_U32 TBControl; /* Transmit Buffer Control */ - SK_U32 VNextTxd; /* Next transmit descriptor,low dword */ - SK_U32 VDataLow; /* Transmit Buffer Addr, low dword */ - SK_U32 VDataHigh; /* Transmit Buffer Addr, high dword */ - SK_U32 FrameStat; /* Transmit Frame Status Word */ - SK_U32 TcpSumOfs; /* Reserved / TCP Sum Offset */ - SK_U16 TcpSumSt; /* TCP Sum Start */ - SK_U16 TcpSumWr; /* TCP Sum Write */ - SK_U32 TcpReserved; /* not used */ - TXD *pNextTxd; /* Pointer to next Txd */ - struct sk_buff *pMBuf; /* Pointer to Linux' socket buffer */ + volatile SK_U32 TBControl; /* Transmit Buffer Control */ + SK_U32 VNextTxd; /* Next transmit descriptor,low dword */ + SK_U32 VDataLow; /* Transmit Buffer Addr, low dword */ + SK_U32 VDataHigh; /* Transmit Buffer Addr, high dword */ + SK_U32 FrameStat; /* Transmit Frame Status Word */ + SK_U32 TcpSumOfs; /* Reserved / TCP Sum Offset */ + SK_U16 TcpSumSt; /* TCP Sum Start */ + SK_U16 TcpSumWr; /* TCP Sum Write */ + SK_U32 TcpReserved; /* not used */ + TXD *pNextTxd; /* Pointer to next Txd */ + struct sk_buff *pMBuf; /* Pointer to Linux' socket buffer */ }; -/* Used interrupt bits in the interrupts source register *********************/ +/****************************************************************************** + * + * Generic Yukon-II defines + * + ******************************************************************************/ -#define DRIVER_IRQS ((IS_IRQ_SW) | \ - (IS_R1_F) |(IS_R2_F) | \ - (IS_XS1_F) |(IS_XA1_F) | \ - (IS_XS2_F) |(IS_XA2_F)) - -#define SPECIAL_IRQS ((IS_HW_ERR) |(IS_I2C_READY) | \ - (IS_EXT_REG) |(IS_TIMINT) | \ - (IS_PA_TO_RX1) |(IS_PA_TO_RX2) | \ - (IS_PA_TO_TX1) |(IS_PA_TO_TX2) | \ - (IS_MAC1) |(IS_LNK_SYNC_M1)| \ - (IS_MAC2) |(IS_LNK_SYNC_M2)| \ - (IS_R1_C) |(IS_R2_C) | \ - (IS_XS1_C) |(IS_XA1_C) | \ - (IS_XS2_C) |(IS_XA2_C)) - -#define IRQ_MASK ((IS_IRQ_SW) | \ - (IS_R1_B) |(IS_R1_F) |(IS_R2_B) |(IS_R2_F) | \ - (IS_XS1_B) |(IS_XS1_F) |(IS_XA1_B)|(IS_XA1_F)| \ - (IS_XS2_B) |(IS_XS2_F) |(IS_XA2_B)|(IS_XA2_F)| \ - (IS_HW_ERR) |(IS_I2C_READY)| \ - (IS_EXT_REG) |(IS_TIMINT) | \ - (IS_PA_TO_RX1) |(IS_PA_TO_RX2)| \ - (IS_PA_TO_TX1) |(IS_PA_TO_TX2)| \ - (IS_MAC1) |(IS_MAC2) | \ - (IS_R1_C) |(IS_R2_C) | \ - (IS_XS1_C) |(IS_XA1_C) | \ - (IS_XS2_C) |(IS_XA2_C)) +#define LE_SIZE sizeof(SK_HWLE) +#define MAX_NUM_FRAGS (MAX_SKB_FRAGS + 1) +#define MIN_LEN_OF_LE_TAB 128 +#define MAX_LEN_OF_LE_TAB 4096 +#define MAX_UNUSED_RX_LE_WORKING 8 +#ifdef MAX_FRAG_OVERHEAD +#undef MAX_FRAG_OVERHEAD +#define MAX_FRAG_OVERHEAD 4 +#endif +// as we have a maximum of 16 physical fragments, +// maximum 1 ADDR64 per physical fragment +// maximum 4 LEs for VLAN, Csum, LargeSend, Packet +#define MIN_LE_FREE_REQUIRED ((16*2) + 4) +#define IS_GMAC(pAc) (!pAc->GIni.GIGenesis) +#ifdef USE_SYNC_TX_QUEUE +#define TXS_MAX_LE 256 +#else /* !USE_SYNC_TX_QUEUE */ +#define TXS_MAX_LE 0 +#endif + +#define ETHER_MAC_HDR_LEN (6+6+2) // MAC SRC ADDR, MAC DST ADDR, TYPE +#define IP_HDR_LEN 20 +#define TCP_CSUM_OFFS 0x10 +#define UDP_CSUM_OFFS 0x06 +#define TXA_MAX_LE 256 +#define RX_MAX_LE 256 +#define ST_MAX_LE (SK_MAX_MACS)*((3*RX_MAX_LE)+(TXA_MAX_LE)+(TXS_MAX_LE)) + +#if (defined (Y2_RECOVERY) || defined (Y2_LE_CHECK)) +/* event for recovery from tx hang or rx out of sync */ +#define SK_DRV_RECOVER 17 +#endif +/****************************************************************************** + * + * Structures specific for Yukon-II + * + ******************************************************************************/ + +typedef struct s_frag SK_FRAG; +struct s_frag { + SK_FRAG *pNext; + char *pVirt; + SK_U64 pPhys; + unsigned int FragLen; +}; + +typedef struct s_packet SK_PACKET; +struct s_packet { + /* Common infos: */ + SK_PACKET *pNext; /* pointer for packet queues */ + unsigned int PacketLen; /* length of packet */ + unsigned int NumFrags; /* nbr of fragments (for Rx always 1) */ + SK_FRAG *pFrag; /* fragment list */ + SK_FRAG FragArray[MAX_NUM_FRAGS]; /* TX fragment array */ + unsigned int NextLE; /* next LE to use for the next packet */ + + /* Private infos: */ + struct sk_buff *pMBuf; /* Pointer to Linux' socket buffer */ +}; + +typedef struct s_queue SK_PKT_QUEUE; +struct s_queue { + SK_PACKET *pHead; + SK_PACKET *pTail; + spinlock_t QueueLock; /* serialize packet accesses */ +}; + +/******************************************************************************* + * + * Macros specific for Yukon-II queues + * + ******************************************************************************/ + +#define IS_Q_EMPTY(pQueue) ((pQueue)->pHead != NULL) ? SK_FALSE : SK_TRUE +#define IS_Q_LOCKED(pQueue) spin_is_locked(&((pQueue)->QueueLock)) + +#define PLAIN_POP_FIRST_PKT_FROM_QUEUE(pQueue, pPacket) { \ + if ((pQueue)->pHead != NULL) { \ + (pPacket) = (pQueue)->pHead; \ + (pQueue)->pHead = (pPacket)->pNext; \ + if ((pQueue)->pHead == NULL) { \ + (pQueue)->pTail = NULL; \ + } \ + (pPacket)->pNext = NULL; \ + } else { \ + (pPacket) = NULL; \ + } \ +} + +#define PLAIN_PUSH_PKT_AS_FIRST_IN_QUEUE(pQueue, pPacket) { \ + if ((pQueue)->pHead != NULL) { \ + (pPacket)->pNext = (pQueue)->pHead; \ + } else { \ + (pPacket)->pNext = NULL; \ + (pQueue)->pTail = (pPacket); \ + } \ + (pQueue)->pHead = (pPacket); \ +} + +#define PLAIN_PUSH_PKT_AS_LAST_IN_QUEUE(pQueue, pPacket) { \ + (pPacket)->pNext = NULL; \ + if ((pQueue)->pTail != NULL) { \ + (pQueue)->pTail->pNext = (pPacket); \ + } else { \ + (pQueue)->pHead = (pPacket); \ + } \ + (pQueue)->pTail = (pPacket); \ +} + +#define PLAIN_PUSH_MULTIPLE_PKT_AS_LAST_IN_QUEUE(pQueue,pPktGrpStart,pPktGrpEnd) { \ + if ((pPktGrpStart) != NULL) { \ + if ((pQueue)->pTail != NULL) { \ + (pQueue)->pTail->pNext = (pPktGrpStart); \ + } else { \ + (pQueue)->pHead = (pPktGrpStart); \ + } \ + (pQueue)->pTail = (pPktGrpEnd); \ + } \ +} + +/* Required: 'Flags' */ +#define POP_FIRST_PKT_FROM_QUEUE(pQueue, pPacket) { \ + spin_lock_irqsave(&((pQueue)->QueueLock), Flags); \ + if ((pQueue)->pHead != NULL) { \ + (pPacket) = (pQueue)->pHead; \ + (pQueue)->pHead = (pPacket)->pNext; \ + if ((pQueue)->pHead == NULL) { \ + (pQueue)->pTail = NULL; \ + } \ + (pPacket)->pNext = NULL; \ + } else { \ + (pPacket) = NULL; \ + } \ + spin_unlock_irqrestore(&((pQueue)->QueueLock), Flags); \ +} + +/* Required: 'Flags' */ +#define PUSH_PKT_AS_FIRST_IN_QUEUE(pQueue, pPacket) { \ + spin_lock_irqsave(&(pQueue)->QueueLock, Flags); \ + if ((pQueue)->pHead != NULL) { \ + (pPacket)->pNext = (pQueue)->pHead; \ + } else { \ + (pPacket)->pNext = NULL; \ + (pQueue)->pTail = (pPacket); \ + } \ + (pQueue)->pHead = (pPacket); \ + spin_unlock_irqrestore(&(pQueue)->QueueLock, Flags); \ +} -#define IRQ_HWE_MASK (IS_ERR_MSK) /* enable all HW irqs */ +/* Required: 'Flags' */ +#define PUSH_PKT_AS_LAST_IN_QUEUE(pQueue, pPacket) { \ + (pPacket)->pNext = NULL; \ + spin_lock_irqsave(&(pQueue)->QueueLock, Flags); \ + if ((pQueue)->pTail != NULL) { \ + (pQueue)->pTail->pNext = (pPacket); \ + } else { \ + (pQueue)->pHead = (pPacket); \ + } \ + (pQueue)->pTail = (pPacket); \ + spin_unlock_irqrestore(&(pQueue)->QueueLock, Flags); \ +} + +/* Required: 'Flags' */ +#define PUSH_MULTIPLE_PKT_AS_LAST_IN_QUEUE(pQueue,pPktGrpStart,pPktGrpEnd) { \ + if ((pPktGrpStart) != NULL) { \ + spin_lock_irqsave(&(pQueue)->QueueLock, Flags); \ + if ((pQueue)->pTail != NULL) { \ + (pQueue)->pTail->pNext = (pPktGrpStart); \ + } else { \ + (pQueue)->pHead = (pPktGrpStart); \ + } \ + (pQueue)->pTail = (pPktGrpEnd); \ + spin_unlock_irqrestore(&(pQueue)->QueueLock, Flags); \ + } \ +} + +/******************************************************************************* + * + * Macros specific for Yukon-II queues (tist) + * + ******************************************************************************/ + +#ifdef USE_TIST_FOR_RESET +/* port is fully operational */ +#define SK_PSTATE_NOT_WAITING_FOR_TIST 0 +/* port in reset until any tist LE */ +#define SK_PSTATE_WAITING_FOR_ANY_TIST BIT_0 +/* port in reset until timer reaches pAC->MinTistLo */ +#define SK_PSTATE_WAITING_FOR_SPECIFIC_TIST BIT_1 +#define SK_PSTATE_PORT_SHIFT 4 +#define SK_PSTATE_PORT_MASK ((1 << SK_PSTATE_PORT_SHIFT) - 1) + +/* use this + Port to build OP_MOD_TXINDEX_NO_PORT_A|B */ +#define OP_MOD_TXINDEX 0x71 +/* opcode for a TX_INDEX LE in which Port A has to be ignored */ +#define OP_MOD_TXINDEX_NO_PORT_A 0x71 +/* opcode for a TX_INDEX LE in which Port B has to be ignored */ +#define OP_MOD_TXINDEX_NO_PORT_B 0x72 +/* opcode for LE to be ignored because port is still in reset */ +#define OP_MOD_LE 0x7F + +/* set tist wait mode Bit for port */ +#define SK_SET_WAIT_BIT_FOR_PORT(pAC, Bit, Port) \ + { \ + (pAC)->AdapterResetState |= ((Bit) << (SK_PSTATE_PORT_SHIFT * Port)); \ + } + +/* reset tist waiting for specified port */ +#define SK_CLR_STATE_FOR_PORT(pAC, Port) \ + { \ + (pAC)->AdapterResetState &= \ + ~(SK_PSTATE_PORT_MASK << (SK_PSTATE_PORT_SHIFT * Port)); \ + } + +/* return SK_TRUE when port is in reset waiting for tist */ +#define SK_PORT_WAITING_FOR_TIST(pAC, Port) \ + ((((pAC)->AdapterResetState >> (SK_PSTATE_PORT_SHIFT * Port)) & \ + SK_PSTATE_PORT_MASK) != SK_PSTATE_NOT_WAITING_FOR_TIST) + +/* return SK_TRUE when port is in reset waiting for any tist */ +#define SK_PORT_WAITING_FOR_ANY_TIST(pAC, Port) \ + ((((pAC)->AdapterResetState >> (SK_PSTATE_PORT_SHIFT * Port)) & \ + SK_PSTATE_WAITING_FOR_ANY_TIST) == SK_PSTATE_WAITING_FOR_ANY_TIST) + +/* return SK_TRUE when port is in reset waiting for a specific tist */ +#define SK_PORT_WAITING_FOR_SPECIFIC_TIST(pAC, Port) \ + ((((pAC)->AdapterResetState >> (SK_PSTATE_PORT_SHIFT * Port)) & \ + SK_PSTATE_WAITING_FOR_SPECIFIC_TIST) == \ + SK_PSTATE_WAITING_FOR_SPECIFIC_TIST) + +/* return whether adapter is expecting a tist LE */ +#define SK_ADAPTER_WAITING_FOR_TIST(pAC) ((pAC)->AdapterResetState != 0) + +/* enable timestamp timer and force creation of tist LEs */ +#define Y2_ENABLE_TIST(IoC) \ + SK_OUT8(IoC, GMAC_TI_ST_CTRL, (SK_U8) GMT_ST_START) + +/* disable timestamp timer and stop creation of tist LEs */ +#define Y2_DISABLE_TIST(IoC) \ + SK_OUT8(IoC, GMAC_TI_ST_CTRL, (SK_U8) GMT_ST_STOP) + +/* get current value of timestamp timer */ +#define Y2_GET_TIST_LOW_VAL(IoC, pVal) \ + SK_IN32(IoC, GMAC_TI_ST_VAL, pVal) + +#endif + + +/******************************************************************************* + * + * Used interrupt bits in the interrupts source register + * + ******************************************************************************/ + +#define DRIVER_IRQS ((IS_IRQ_SW) | \ + (IS_R1_F) | (IS_R2_F) | \ + (IS_XS1_F) | (IS_XA1_F) | \ + (IS_XS2_F) | (IS_XA2_F)) + +#define TX_COMPL_IRQS ((IS_XS1_B) | (IS_XS1_F) | \ + (IS_XA1_B) | (IS_XA1_F) | \ + (IS_XS2_B) | (IS_XS2_F) | \ + (IS_XA2_B) | (IS_XA2_F)) + +#define NAPI_DRV_IRQS ((IS_R1_F) | (IS_R2_F) | \ + (IS_XS1_F) | (IS_XA1_F)| \ + (IS_XS2_F) | (IS_XA2_F)) + +#define Y2_DRIVER_IRQS ((Y2_IS_STAT_BMU) | (Y2_IS_IRQ_SW) | (Y2_IS_POLL_CHK)) + +#define SPECIAL_IRQS ((IS_HW_ERR) |(IS_I2C_READY) | \ + (IS_EXT_REG) |(IS_TIMINT) | \ + (IS_PA_TO_RX1) |(IS_PA_TO_RX2) | \ + (IS_PA_TO_TX1) |(IS_PA_TO_TX2) | \ + (IS_MAC1) |(IS_LNK_SYNC_M1)| \ + (IS_MAC2) |(IS_LNK_SYNC_M2)| \ + (IS_R1_C) |(IS_R2_C) | \ + (IS_XS1_C) |(IS_XA1_C) | \ + (IS_XS2_C) |(IS_XA2_C)) + +#define Y2_SPECIAL_IRQS ((Y2_IS_HW_ERR) |(Y2_IS_ASF) | \ + (Y2_IS_TWSI_RDY) |(Y2_IS_TIMINT) | \ + (Y2_IS_IRQ_PHY2) |(Y2_IS_IRQ_MAC2) | \ + (Y2_IS_CHK_RX2) |(Y2_IS_CHK_TXS2) | \ + (Y2_IS_CHK_TXA2) |(Y2_IS_IRQ_PHY1) | \ + (Y2_IS_IRQ_MAC1) |(Y2_IS_CHK_RX1) | \ + (Y2_IS_CHK_TXS1) |(Y2_IS_CHK_TXA1)) + +#define IRQ_MASK ((IS_IRQ_SW) | \ + (IS_R1_F) |(IS_R2_F) | \ + (IS_XS1_F) |(IS_XA1_F) | \ + (IS_XS2_F) |(IS_XA2_F) | \ + (IS_HW_ERR) |(IS_I2C_READY)| \ + (IS_EXT_REG) |(IS_TIMINT) | \ + (IS_PA_TO_RX1) |(IS_PA_TO_RX2)| \ + (IS_PA_TO_TX1) |(IS_PA_TO_TX2)| \ + (IS_MAC1) |(IS_MAC2) | \ + (IS_R1_C) |(IS_R2_C) | \ + (IS_XS1_C) |(IS_XA1_C) | \ + (IS_XS2_C) |(IS_XA2_C)) + +#define Y2_IRQ_MASK ((Y2_DRIVER_IRQS) | (Y2_SPECIAL_IRQS)) + +#define IRQ_HWE_MASK (IS_ERR_MSK) /* enable all HW irqs */ +#define Y2_IRQ_HWE_MASK (Y2_HWE_ALL_MSK) /* enable all HW irqs */ typedef struct s_DevNet DEV_NET; struct s_DevNet { - int PortNr; - int NetNr; - SK_AC *pAC; + struct proc_dir_entry *proc; + int PortNr; + int NetNr; + char InitialDevName[20]; + SK_BOOL NetConsoleMode; +#ifdef Y2_RECOVERY + struct timer_list KernelTimer; /* Kernel timer struct */ + int TransmitTimeoutTimer; /* Transmit timer */ + SK_BOOL TimerExpired; /* Transmit timer */ + SK_BOOL InRecover; /* Recover flag */ +#ifdef Y2_RX_CHECK + SK_U8 FifoReadPointer; /* Backup of the FRP */ + SK_U8 FifoReadLevel; /* Backup of the FRL */ + SK_U32 BmuStateMachine; /* Backup of the MBU SM */ + SK_U32 LastJiffies; /* Backup of the jiffies */ +#endif +#endif + SK_AC *pAC; }; -typedef struct s_TxPort TX_PORT; +/******************************************************************************* + * + * Rx/Tx Port structures + * + ******************************************************************************/ -struct s_TxPort { - /* the transmit descriptor rings */ - caddr_t pTxDescrRing; /* descriptor area memory */ - SK_U64 VTxDescrRing; /* descr. area bus virt. addr. */ - TXD *pTxdRingHead; /* Head of Tx rings */ - TXD *pTxdRingTail; /* Tail of Tx rings */ - TXD *pTxdRingPrev; /* descriptor sent previously */ - int TxdRingFree; /* # of free entrys */ - spinlock_t TxDesRingLock; /* serialize descriptor accesses */ - SK_IOC HwAddr; /* bmu registers address */ - int PortIndex; /* index number of port (0 or 1) */ +typedef struct s_TxPort TX_PORT; +struct s_TxPort { /* the transmit descriptor rings */ + caddr_t pTxDescrRing; /* descriptor area memory */ + SK_U64 VTxDescrRing; /* descr. area bus virt. addr. */ + TXD *pTxdRingHead; /* Head of Tx rings */ + TXD *pTxdRingTail; /* Tail of Tx rings */ + TXD *pTxdRingPrev; /* descriptor sent previously */ + int TxdRingPrevFree;/* previously # of free entrys */ + int TxdRingFree; /* # of free entrys */ + spinlock_t TxDesRingLock; /* serialize descriptor accesses */ + caddr_t HwAddr; /* bmu registers address */ + int PortIndex; /* index number of port (0 or 1) */ + SK_PACKET *TransmitPacketTable; + SK_LE_TABLE TxALET; /* tx (async) list element table */ + SK_LE_TABLE TxSLET; /* tx (sync) list element table */ + SK_PKT_QUEUE TxQ_free; + SK_PKT_QUEUE TxAQ_waiting; + SK_PKT_QUEUE TxSQ_waiting; + SK_PKT_QUEUE TxAQ_working; + SK_PKT_QUEUE TxSQ_working; + unsigned LastDone; }; -typedef struct s_RxPort RX_PORT; - -struct s_RxPort { - /* the receive descriptor rings */ - caddr_t pRxDescrRing; /* descriptor area memory */ - SK_U64 VRxDescrRing; /* descr. area bus virt. addr. */ - RXD *pRxdRingHead; /* Head of Rx rings */ - RXD *pRxdRingTail; /* Tail of Rx rings */ - RXD *pRxdRingPrev; /* descriptor given to BMU previously */ - int RxdRingFree; /* # of free entrys */ - int RxCsum; /* use receive checksum hardware */ - spinlock_t RxDesRingLock; /* serialize descriptor accesses */ - int RxFillLimit; /* limit for buffers in ring */ - SK_IOC HwAddr; /* bmu registers address */ - int PortIndex; /* index number of port (0 or 1) */ +typedef struct s_RxPort RX_PORT; +struct s_RxPort { /* the receive descriptor rings */ + caddr_t pRxDescrRing; /* descriptor area memory */ + SK_U64 VRxDescrRing; /* descr. area bus virt. addr. */ + RXD *pRxdRingHead; /* Head of Rx rings */ + RXD *pRxdRingTail; /* Tail of Rx rings */ + RXD *pRxdRingPrev; /* descr given to BMU previously */ + int RxdRingFree; /* # of free entrys */ + spinlock_t RxDesRingLock; /* serialize descriptor accesses */ + int RxFillLimit; /* limit for buffers in ring */ + caddr_t HwAddr; /* bmu registers address */ + int PortIndex; /* index number of port (0 or 1) */ + SK_BOOL UseRxCsum; /* use Rx checksumming (yes/no) */ + SK_PACKET *ReceivePacketTable; + SK_LE_TABLE RxLET; /* rx list element table */ + SK_PKT_QUEUE RxQ_working; + SK_PKT_QUEUE RxQ_waiting; + int RxBufSize; }; -/* Definitions needed for interrupt moderation *******************************/ +/******************************************************************************* + * + * Interrupt masks used in combination with interrupt moderation + * + ******************************************************************************/ #define IRQ_EOF_AS_TX ((IS_XA1_F) | (IS_XA2_F)) #define IRQ_EOF_SY_TX ((IS_XS1_F) | (IS_XS2_F)) @@ -314,134 +704,150 @@ #define IRQ_MASK_SP_TX ((SPECIAL_IRQS) | (IRQ_MASK_TX_ONLY)) #define IRQ_MASK_RX_TX_SP ((SPECIAL_IRQS) | (IRQ_MASK_TX_RX)) -#define C_INT_MOD_NONE 1 -#define C_INT_MOD_STATIC 2 -#define C_INT_MOD_DYNAMIC 4 - -#define C_CLK_FREQ_GENESIS 53215000 /* shorter: 53.125 MHz */ -#define C_CLK_FREQ_YUKON 78215000 /* shorter: 78.125 MHz */ - -#define C_INTS_PER_SEC_DEFAULT 2000 -#define C_INT_MOD_ENABLE_PERCENTAGE 50 /* if higher 50% enable */ -#define C_INT_MOD_DISABLE_PERCENTAGE 50 /* if lower 50% disable */ -#define C_INT_MOD_IPS_LOWER_RANGE 30 -#define C_INT_MOD_IPS_UPPER_RANGE 40000 - - -typedef struct s_DynIrqModInfo DIM_INFO; -struct s_DynIrqModInfo { - unsigned long PrevTimeVal; - unsigned int PrevSysLoad; - unsigned int PrevUsedTime; - unsigned int PrevTotalTime; - int PrevUsedDescrRatio; - int NbrProcessedDescr; - SK_U64 PrevPort0RxIntrCts; - SK_U64 PrevPort1RxIntrCts; - SK_U64 PrevPort0TxIntrCts; - SK_U64 PrevPort1TxIntrCts; - SK_BOOL ModJustEnabled; /* Moderation just enabled yes/no */ - - int MaxModIntsPerSec; /* Moderation Threshold */ - int MaxModIntsPerSecUpperLimit; /* Upper limit for DIM */ - int MaxModIntsPerSecLowerLimit; /* Lower limit for DIM */ - - long MaskIrqModeration; /* ModIrqType (eg. 'TxRx') */ - SK_BOOL DisplayStats; /* Stats yes/no */ - SK_BOOL AutoSizing; /* Resize DIM-timer on/off */ - int IntModTypeSelect; /* EnableIntMod (eg. 'dynamic') */ +#define IRQ_MASK_Y2_TX_ONLY (Y2_IS_STAT_BMU) +#define IRQ_MASK_Y2_RX_ONLY (Y2_IS_STAT_BMU) +#define IRQ_MASK_Y2_SP_ONLY (SPECIAL_IRQS) +#define IRQ_MASK_Y2_TX_RX ((IRQ_MASK_TX_ONLY)| (IRQ_MASK_RX_ONLY)) +#define IRQ_MASK_Y2_SP_RX ((SPECIAL_IRQS) | (IRQ_MASK_RX_ONLY)) +#define IRQ_MASK_Y2_SP_TX ((SPECIAL_IRQS) | (IRQ_MASK_TX_ONLY)) +#define IRQ_MASK_Y2_RX_TX_SP ((SPECIAL_IRQS) | (IRQ_MASK_TX_RX)) - SK_TIMER ModTimer; /* just some timer */ -}; +/******************************************************************************* + * + * Defines and typedefs regarding interrupt moderation + * + ******************************************************************************/ -typedef struct s_PerStrm PER_STRM; +#define C_INT_MOD_NONE 1 +#define C_INT_MOD_STATIC 2 +#define C_INT_MOD_DYNAMIC 4 + +#define C_CLK_FREQ_GENESIS 53215000 /* or: 53.125 MHz */ +#define C_CLK_FREQ_YUKON 78215000 /* or: 78.125 MHz */ +#define C_CLK_FREQ_YUKON_EC 125000000 /* or: 125.000 MHz */ + +#define C_Y2_INTS_PER_SEC_DEFAULT 5000 +#define C_INTS_PER_SEC_DEFAULT 2000 +#define C_INT_MOD_IPS_LOWER_RANGE 30 /* in IRQs/second */ +#define C_INT_MOD_IPS_UPPER_RANGE 40000 /* in IRQs/second */ + +typedef struct s_DynIrqModInfo { + SK_U64 PrevPort0RxIntrCts; + SK_U64 PrevPort1RxIntrCts; + SK_U64 PrevPort0TxIntrCts; + SK_U64 PrevPort1TxIntrCts; + SK_U64 PrevPort0StatusLeIntrCts; + SK_U64 PrevPort1StatusLeIntrCts; + int MaxModIntsPerSec; /* Moderation Threshold */ + int MaxModIntsPerSecUpperLimit; /* Upper limit for DIM */ + int MaxModIntsPerSecLowerLimit; /* Lower limit for DIM */ + long MaskIrqModeration; /* IRQ Mask (eg. 'TxRx') */ + int IntModTypeSelect; /* Type (eg. 'dynamic') */ + int DynIrqModSampleInterval; /* expressed in seconds! */ + SK_TIMER ModTimer; /* Timer for dynamic mod. */ +} DIM_INFO; -#define SK_ALLOC_IRQ 0x00000001 +/******************************************************************************* + * + * Defines and typedefs regarding wake-on-lan + * + ******************************************************************************/ + +typedef struct s_WakeOnLanInfo { + SK_U32 SupportedWolOptions; /* e.g. WAKE_PHY... */ + SK_U32 ConfiguredWolOptions; /* e.g. WAKE_PHY... */ +} WOL_INFO; -#ifdef SK_DIAG_SUPPORT +#define SK_ALLOC_IRQ 0x00000001 #define DIAG_ACTIVE 1 #define DIAG_NOTACTIVE 0 -#endif /**************************************************************************** + * * Per board structure / Adapter Context structure: - * Allocated within attach(9e) and freed within detach(9e). - * Contains all 'per device' necessary handles, flags, locks etc.: - */ + * Contains all 'per device' necessary handles, flags, locks etc.: + * + ******************************************************************************/ + struct s_AC { - SK_GEINIT GIni; /* GE init struct */ - SK_PNMI Pnmi; /* PNMI data struct */ - SK_VPD vpd; /* vpd data struct */ - SK_QUEUE Event; /* Event queue */ - SK_HWT Hwt; /* Hardware Timer control struct */ - SK_TIMCTRL Tim; /* Software Timer control struct */ - SK_I2C I2c; /* I2C relevant data structure */ - SK_ADDR Addr; /* for Address module */ - SK_CSUM Csum; /* for checksum module */ - SK_RLMT Rlmt; /* for rlmt module */ - spinlock_t SlowPathLock; /* Normal IRQ lock */ - struct timer_list BlinkTimer; /* for LED blinking */ - int LedsOn; - SK_PNMI_STRUCT_DATA PnmiStruct; /* structure to get all Pnmi-Data */ - int RlmtMode; /* link check mode to set */ - int RlmtNets; /* Number of nets */ - - SK_IOC IoBase; /* register set of adapter */ - int BoardLevel; /* level of active hw init (0-2) */ - - SK_U32 AllocFlag; /* flag allocation of resources */ - struct pci_dev *PciDev; /* for access to pci config space */ - struct SK_NET_DEVICE *dev[2]; /* pointer to device struct */ - - int RxBufSize; /* length of receive buffers */ - struct net_device_stats stats; /* linux 'netstat -i' statistics */ - int Index; /* internal board index number */ - - /* adapter RAM sizes for queues of active port */ - int RxQueueSize; /* memory used for receive queue */ - int TxSQueueSize; /* memory used for sync. tx queue */ - int TxAQueueSize; /* memory used for async. tx queue */ - - int PromiscCount; /* promiscuous mode counter */ - int AllMultiCount; /* allmulticast mode counter */ - int MulticCount; /* number of different MC */ - /* addresses for this board */ - /* (may be more than HW can)*/ - - int HWRevision; /* Hardware revision */ - int ActivePort; /* the active XMAC port */ - int MaxPorts; /* number of activated ports */ - int TxDescrPerRing; /* # of descriptors per tx ring */ - int RxDescrPerRing; /* # of descriptors per rx ring */ - - caddr_t pDescrMem; /* Pointer to the descriptor area */ - dma_addr_t pDescrMemDMA; /* PCI DMA address of area */ - - /* the port structures with descriptor rings */ - TX_PORT TxPort[SK_MAX_MACS][2]; - RX_PORT RxPort[SK_MAX_MACS]; - - SK_BOOL CheckQueue; /* check event queue soon */ - SK_TIMER DrvCleanupTimer;/* to check for pending descriptors */ - DIM_INFO DynIrqModInfo; /* all data related to DIM */ - - /* Only for tests */ - int PortDown; - int ChipsetType; /* Chipset family type - * 0 == Genesis family support - * 1 == Yukon family support - */ -#ifdef SK_DIAG_SUPPORT - SK_U32 DiagModeActive; /* is diag active? */ - SK_BOOL DiagFlowCtrl; /* for control purposes */ - SK_PNMI_STRUCT_DATA PnmiBackup; /* backup structure for all Pnmi-Data */ - SK_BOOL WasIfUp[SK_MAX_MACS]; /* for OpenClose while - * DIAG is busy with NIC - */ + SK_GEINIT GIni; /* GE init struct */ + SK_PNMI Pnmi; /* PNMI data struct */ + SK_VPD vpd; /* vpd data struct */ + SK_QUEUE Event; /* Event queue */ + SK_HWT Hwt; /* Hardware Timer ctrl struct */ + SK_TIMCTRL Tim; /* Software Timer ctrl struct */ + SK_I2C I2c; /* I2C relevant data structure*/ + SK_ADDR Addr; /* for Address module */ + SK_CSUM Csum; /* for checksum module */ + SK_RLMT Rlmt; /* for rlmt module */ + spinlock_t SlowPathLock; /* Normal IRQ lock */ + spinlock_t TxQueueLock; /* TX Queue lock */ + SK_PNMI_STRUCT_DATA PnmiStruct; /* struct for all Pnmi-Data */ + int RlmtMode; /* link check mode to set */ + int RlmtNets; /* Number of nets */ + SK_IOC IoBase; /* register set of adapter */ + int BoardLevel; /* level of hw init (0-2) */ + char DeviceStr[80]; /* adapter string from vpd */ + SK_U32 AllocFlag; /* alloc flag of resources */ + struct pci_dev *PciDev; /* for access to pci cfg space*/ + SK_U32 PciDevId; /* pci device id */ + struct SK_NET_DEVICE *dev[2]; /* pointer to device struct */ + char Name[30]; /* driver name */ + struct SK_NET_DEVICE *Next; /* link all devs for cleanup */ + struct net_device_stats stats; /* linux 'netstat -i' stats */ + int Index; /* internal board idx number */ + int RxQueueSize; /* memory used for RX queue */ + int TxSQueueSize; /* memory used for TXS queue */ + int TxAQueueSize; /* memory used for TXA queue */ + int PromiscCount; /* promiscuous mode counter */ + int AllMultiCount; /* allmulticast mode counter */ + int MulticCount; /* number of MC addresses used*/ + int HWRevision; /* Hardware revision */ + int ActivePort; /* the active XMAC port */ + int MaxPorts; /* number of activated ports */ + int TxDescrPerRing;/* # of descriptors TX ring */ + int RxDescrPerRing;/* # of descriptors RX ring */ + caddr_t pDescrMem; /* Ptr to the descriptor area */ + dma_addr_t pDescrMemDMA; /* PCI DMA address of area */ + SK_U32 PciState[16]; /* PCI state */ + TX_PORT TxPort[SK_MAX_MACS][2]; + RX_PORT RxPort[SK_MAX_MACS]; + SK_LE_TABLE StatusLETable; + unsigned SizeOfAlignedLETables; + spinlock_t SetPutIndexLock; + int MaxUnusedRxLeWorking; + unsigned int CsOfs1; /* for checksum calculation */ + unsigned int CsOfs2; /* for checksum calculation */ + SK_U32 CsOfs; /* for checksum calculation */ + SK_BOOL CheckQueue; /* check event queue soon */ + DIM_INFO DynIrqModInfo; /* all data related to IntMod */ + WOL_INFO WolInfo; /* all info regarding WOL */ + int ChipsetType; /* 0=GENESIS; 1=Yukon */ + SK_BOOL LowLatency; /* LowLatency optimization on?*/ + SK_U32 DiagModeActive;/* is diag active? */ + SK_BOOL DiagFlowCtrl; /* for control purposes */ + SK_PNMI_STRUCT_DATA PnmiBackup; /* backup structure for PNMI */ + SK_BOOL WasIfUp[SK_MAX_MACS]; +#ifdef USE_TIST_FOR_RESET + int AdapterResetState; + SK_U32 MinTistLo; + SK_U32 MinTistHi; +#endif +#ifdef Y2_RECOVERY + int LastPort; /* port for curr. handled rx */ + int LastOpc; /* last rx LEs opcode */ +#endif +#ifdef Y2_SYNC_CHECK + unsigned long FramesWithoutSyncCheck; /* since last check */ #endif - }; -#endif /* __INC_SKDRV2ND_H */ +#endif + +/******************************************************************************* + * + * End of file + * + ******************************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skerror.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skerror.h @@ -2,8 +2,8 @@ * * Name: skerror.h * Project: Gigabit Ethernet Adapters, Common Modules - * Version: $Revision: 1.7 $ - * Date: $Date: 2003/05/13 17:25:13 $ + * Version: $Revision: 2.2 $ + * Date: $Date: 2004/05/24 15:27:19 $ * Purpose: SK specific Error log support * ******************************************************************************/ @@ -11,13 +11,12 @@ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2004 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * * The information in this file is provided "AS IS" without warranty. * ******************************************************************************/ @@ -36,7 +35,6 @@ #define SK_ERRCL_HW (1L<<4) /* Hardware Failure */ #define SK_ERRCL_COMM (1L<<5) /* Communication error */ - /* * Define Error Code Bases */ @@ -49,7 +47,9 @@ #define SK_ERRBASE_I2C 700 /* Base Error number for I2C module */ #define SK_ERRBASE_QUEUE 800 /* Base Error number for Scheduler */ #define SK_ERRBASE_ADDR 900 /* Base Error number for Address module */ -#define SK_ERRBASE_PECP 1000 /* Base Error number for PECP */ +#define SK_ERRBASE_PECP 1000 /* Base Error number for PECP */ #define SK_ERRBASE_DRV 1100 /* Base Error number for Driver */ +#define SK_ERRBASE_ASF 1200 /* Base Error number for ASF */ #endif /* _INC_SKERROR_H_ */ + --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skgetwsi.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skgetwsi.h @@ -0,0 +1,241 @@ +/****************************************************************************** + * + * Name: skgetwsi.h + * Project: Gigabit Ethernet Adapters, TWSI-Module + * Version: $Revision: 1.7 $ + * Date: $Date: 2004/12/20 14:48:51 $ + * Purpose: Special defines for TWSI + * + ******************************************************************************/ + +/****************************************************************************** + * + * (C)Copyright 1998-2002 SysKonnect. + * (C)Copyright 2002-2004 Marvell. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * The information in this file is provided "AS IS" without warranty. + * + ******************************************************************************/ + +/* + * SKGETWSI.H contains all SK-98xx specific defines for the TWSI handling + */ + +#ifndef _INC_SKGETWSI_H_ +#define _INC_SKGETWSI_H_ + +/* + * Macros to access the B2_I2C_CTRL + */ +#define SK_I2C_CTL(IoC, flag, dev, dev_size, reg, burst) \ + SK_OUT32(IoC, B2_I2C_CTRL,\ + (flag ? 0x80000000UL : 0x0L) | \ + (((SK_U32)reg << 16) & I2C_ADDR) | \ + (((SK_U32)dev << 9) & I2C_DEV_SEL) | \ + (dev_size & I2C_DEV_SIZE) | \ + ((burst << 4) & I2C_BURST_LEN)) + +#define SK_I2C_STOP(IoC) { \ + SK_U32 I2cCtrl; \ + SK_IN32(IoC, B2_I2C_CTRL, &I2cCtrl); \ + SK_OUT32(IoC, B2_I2C_CTRL, I2cCtrl | I2C_STOP); \ +} + +#define SK_I2C_GET_CTL(IoC, pI2cCtrl) SK_IN32(IoC, B2_I2C_CTRL, pI2cCtrl) + +/* + * Macros to access the TWSI SW Registers + */ +#define SK_I2C_SET_BIT(IoC, SetBits) { \ + SK_U8 OrgBits; \ + SK_IN8(IoC, B2_I2C_SW, &OrgBits); \ + SK_OUT8(IoC, B2_I2C_SW, OrgBits | (SK_U8)(SetBits)); \ +} + +#define SK_I2C_CLR_BIT(IoC, ClrBits) { \ + SK_U8 OrgBits; \ + SK_IN8(IoC, B2_I2C_SW, &OrgBits); \ + SK_OUT8(IoC, B2_I2C_SW, OrgBits & ~((SK_U8)(ClrBits))); \ +} + +#define SK_I2C_GET_SW(IoC, pI2cSw) SK_IN8(IoC, B2_I2C_SW, pI2cSw) + +/* + * define the possible sensor states + */ +#define SK_SEN_IDLE 0 /* Idle: sensor not read */ +#define SK_SEN_VALUE 1 /* Value Read cycle */ +#define SK_SEN_VALEXT 2 /* Extended Value Read cycle */ + +/* + * Conversion factor to convert read Voltage sensor to milli Volt + * Conversion factor to convert read Temperature sensor to 10th degree Celsius + */ +#define SK_LM80_VT_LSB 22 /* 22mV LSB resolution */ +#define SK_LM80_TEMP_LSB 10 /* 1 degree LSB resolution */ +#define SK_LM80_TEMPEXT_LSB 5 /* 0.5 degree LSB resolution for ext. val. */ + +/* + * formula: counter = (22500*60)/(rpm * divisor * pulses/2) + * assuming: 6500rpm, 4 pulses, divisor 1 + */ +#define SK_LM80_FAN_FAKTOR ((22500L*60)/(1*2)) + +/* + * Define sensor management data + * Maximum is reached on Genesis copper dual port and Yukon-64 + * Board specific maximum is in pAC->I2c.MaxSens + */ +#define SK_MAX_SENSORS 8 /* maximal no. of installed sensors */ +#define SK_MIN_SENSORS 5 /* minimal no. of installed sensors */ + +/* + * To watch the state machine (SM) use the timer in two ways + * instead of one as hitherto + */ +#define SK_TIMER_WATCH_SM 0 /* Watch the SM to finish in a spec. time */ +#define SK_TIMER_NEW_GAUGING 1 /* Start a new gauging when timer expires */ + +/* + * Defines for the individual thresholds + */ + +#define C_PLUS_20 120 / 100 +#define C_PLUS_15 115 / 100 +#define C_PLUS_10 110 / 100 +#define C_PLUS_5 105 / 100 +#define C_MINUS_5 95 / 100 +#define C_MINUS_10 90 / 100 +#define C_MINUS_15 85 / 100 + +/* Temperature sensor */ +#define SK_SEN_TEMP_HIGH_ERR 800 /* Temperature High Err Threshold */ +#define SK_SEN_TEMP_HIGH_WARN 700 /* Temperature High Warn Threshold */ +#define SK_SEN_TEMP_LOW_WARN 100 /* Temperature Low Warn Threshold */ +#define SK_SEN_TEMP_LOW_ERR 0 /* Temperature Low Err Threshold */ + +/* VCC which should be 5 V */ +#define SK_SEN_PCI_5V_HIGH_ERR 5588 /* Voltage PCI High Err Threshold */ +#define SK_SEN_PCI_5V_HIGH_WARN 5346 /* Voltage PCI High Warn Threshold */ +#define SK_SEN_PCI_5V_LOW_WARN 4664 /* Voltage PCI Low Warn Threshold */ +#define SK_SEN_PCI_5V_LOW_ERR 4422 /* Voltage PCI Low Err Threshold */ + +/* + * VIO may be 5 V or 3.3 V. Initialization takes two parts: + * 1. Initialize lowest lower limit and highest higher limit. + * 2. After the first value is read correct the upper or the lower limit to + * the appropriate C constant. + * + * Warning limits are +-5% of the exepected voltage. + * Error limits are +-10% of the expected voltage. + */ + +/* Bug fix AF: 16.Aug.2001: Correct the init base of LM80 sensor */ + +#define SK_SEN_PCI_IO_5V_HIGH_ERR 5566 /* + 10% V PCI-IO High Err Threshold */ +#define SK_SEN_PCI_IO_5V_HIGH_WARN 5324 /* + 5% V PCI-IO High Warn Threshold */ + /* 5000 mVolt */ +#define SK_SEN_PCI_IO_5V_LOW_WARN 4686 /* - 5% V PCI-IO Low Warn Threshold */ +#define SK_SEN_PCI_IO_5V_LOW_ERR 4444 /* - 10% V PCI-IO Low Err Threshold */ + +#define SK_SEN_PCI_IO_RANGE_LIMITER 4000 /* 4000 mV range delimiter */ + +/* correction values for the second pass */ +#define SK_SEN_PCI_IO_3V3_HIGH_ERR 3850 /* + 15% V PCI-IO High Err Threshold */ +#define SK_SEN_PCI_IO_3V3_HIGH_WARN 3674 /* + 10% V PCI-IO High Warn Threshold */ + /* 3300 mVolt */ +#define SK_SEN_PCI_IO_3V3_LOW_WARN 2926 /* - 10% V PCI-IO Low Warn Threshold */ +#define SK_SEN_PCI_IO_3V3_LOW_ERR 2772 /* - 15% V PCI-IO Low Err Threshold */ + +/* + * VDD voltage + */ +#define SK_SEN_VDD_HIGH_ERR 3630 /* Voltage ASIC High Err Threshold */ +#define SK_SEN_VDD_HIGH_WARN 3476 /* Voltage ASIC High Warn Threshold */ +#define SK_SEN_VDD_LOW_WARN 3146 /* Voltage ASIC Low Warn Threshold */ +#define SK_SEN_VDD_LOW_ERR 2970 /* Voltage ASIC Low Err Threshold */ + +/* + * PHY PLL 3V3 voltage + */ +#define SK_SEN_PLL_3V3_HIGH_ERR 3630 /* Voltage PMA High Err Threshold */ +#define SK_SEN_PLL_3V3_HIGH_WARN 3476 /* Voltage PMA High Warn Threshold */ +#define SK_SEN_PLL_3V3_LOW_WARN 3146 /* Voltage PMA Low Warn Threshold */ +#define SK_SEN_PLL_3V3_LOW_ERR 2970 /* Voltage PMA Low Err Threshold */ + +/* + * VAUX (YUKON only) + */ +#define SK_SEN_VAUX_3V3_VAL 3300 /* Voltage VAUX 3.3 Volt */ + +#define SK_SEN_VAUX_3V3_HIGH_ERR (SK_I32)(SK_SEN_VAUX_3V3_VAL * C_PLUS_10) +#define SK_SEN_VAUX_3V3_HIGH_WARN (SK_I32)(SK_SEN_VAUX_3V3_VAL * C_PLUS_5) +#define SK_SEN_VAUX_3V3_LOW_WARN (SK_I32)(SK_SEN_VAUX_3V3_VAL * C_MINUS_5) +#define SK_SEN_VAUX_3V3_LOW_ERR (SK_I32)(SK_SEN_VAUX_3V3_VAL * C_MINUS_10) + +#define SK_SEN_VAUX_RANGE_LIMITER 1000 /* 1000 mV range delimiter */ + +/* + * PHY 2V5 voltage + */ +#define SK_SEN_PHY_2V5_VAL 2500 /* Voltage PHY 2.5 Volt */ + +#define SK_SEN_PHY_2V5_HIGH_ERR (SK_I32)(SK_SEN_PHY_2V5_VAL * C_PLUS_10) +#define SK_SEN_PHY_2V5_HIGH_WARN (SK_I32)(SK_SEN_PHY_2V5_VAL * C_PLUS_5) +#define SK_SEN_PHY_2V5_LOW_WARN (SK_I32)(SK_SEN_PHY_2V5_VAL * C_MINUS_5) +#define SK_SEN_PHY_2V5_LOW_ERR (SK_I32)(SK_SEN_PHY_2V5_VAL * C_MINUS_10) + +/* + * ASIC Core 1V5 voltage (YUKON only) + */ +#define SK_SEN_CORE_1V5_VAL 1500 /* Voltage ASIC Core 1.5 Volt */ + +#define SK_SEN_CORE_1V5_HIGH_ERR (SK_I32)(SK_SEN_CORE_1V5_VAL * C_PLUS_10) +#define SK_SEN_CORE_1V5_HIGH_WARN (SK_I32)(SK_SEN_CORE_1V5_VAL * C_PLUS_5) +#define SK_SEN_CORE_1V5_LOW_WARN (SK_I32)(SK_SEN_CORE_1V5_VAL * C_MINUS_5) +#define SK_SEN_CORE_1V5_LOW_ERR (SK_I32)(SK_SEN_CORE_1V5_VAL * C_MINUS_10) + +/* + * ASIC Core 1V2 (1V3) voltage (YUKON-2 only) + */ +#define SK_SEN_CORE_1V2_VAL 1200 /* Voltage ASIC Core 1.2 Volt */ + +#define SK_SEN_CORE_1V2_HIGH_ERR (SK_I32)(SK_SEN_CORE_1V2_VAL * C_PLUS_20) +#define SK_SEN_CORE_1V2_HIGH_WARN (SK_I32)(SK_SEN_CORE_1V2_VAL * C_PLUS_15) +#define SK_SEN_CORE_1V2_LOW_WARN (SK_I32)(SK_SEN_CORE_1V2_VAL * C_MINUS_5) +#define SK_SEN_CORE_1V2_LOW_ERR (SK_I32)(SK_SEN_CORE_1V2_VAL * C_MINUS_10) + +#define SK_SEN_CORE_1V3_VAL 1300 /* Voltage ASIC Core 1.3 Volt */ + +#define SK_SEN_CORE_1V3_HIGH_ERR (SK_I32)(SK_SEN_CORE_1V3_VAL * C_PLUS_15) +#define SK_SEN_CORE_1V3_HIGH_WARN (SK_I32)(SK_SEN_CORE_1V3_VAL * C_PLUS_10) +#define SK_SEN_CORE_1V3_LOW_WARN (SK_I32)(SK_SEN_CORE_1V3_VAL * C_MINUS_5) +#define SK_SEN_CORE_1V3_LOW_ERR (SK_I32)(SK_SEN_CORE_1V3_VAL * C_MINUS_10) + +/* + * FAN 1 speed + */ +/* assuming: 6500rpm +-15%, 4 pulses, + * warning at: 80 % + * error at: 70 % + * no upper limit + */ +#define SK_SEN_FAN_HIGH_ERR 20000 /* FAN Speed High Err Threshold */ +#define SK_SEN_FAN_HIGH_WARN 20000 /* FAN Speed High Warn Threshold */ +#define SK_SEN_FAN_LOW_WARN 5200 /* FAN Speed Low Warn Threshold */ +#define SK_SEN_FAN_LOW_ERR 4550 /* FAN Speed Low Err Threshold */ + +/* + * Some Voltages need dynamic thresholds + */ +#define SK_SEN_DYN_INIT_NONE 0 /* No dynamic init of thresholds */ +#define SK_SEN_DYN_INIT_PCI_IO 10 /* Init PCI-IO with new thresholds */ +#define SK_SEN_DYN_INIT_VAUX 11 /* Init VAUX with new thresholds */ + +extern int SkLm80ReadSensor(SK_AC *pAC, SK_IOC IoC, SK_SENSOR *pSen); +#endif /* n_INC_SKGETWSI_H */ + --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skdebug.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skdebug.h @@ -2,8 +2,8 @@ * * Name: skdebug.h * Project: Gigabit Ethernet Adapters, Common Modules - * Version: $Revision: 1.14 $ - * Date: $Date: 2003/05/13 17:26:00 $ + * Version: $Revision: 2.3 $ + * Date: $Date: 2005/01/25 16:44:28 $ * Purpose: SK specific DEBUG support * ******************************************************************************/ @@ -11,13 +11,12 @@ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2005 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * * The information in this file is provided "AS IS" without warranty. * ******************************************************************************/ @@ -28,9 +27,9 @@ #ifdef DEBUG #ifndef SK_DBG_MSG #define SK_DBG_MSG(pAC,comp,cat,arg) \ - if ( ((comp) & SK_DBG_CHKMOD(pAC)) && \ - ((cat) & SK_DBG_CHKCAT(pAC)) ) { \ - SK_DBG_PRINTF arg ; \ + if ( ((comp) & SK_DBG_CHKMOD(pAC)) && \ + ((cat) & SK_DBG_CHKCAT(pAC)) ) { \ + SK_DBG_PRINTF arg; \ } #endif #else @@ -58,6 +57,13 @@ #define SK_DBGMOD_ADDR 0x00000080L /* ADDR module */ #define SK_DBGMOD_PECP 0x00000100L /* PECP module */ #define SK_DBGMOD_POWM 0x00000200L /* Power Management module */ +#ifdef SK_ASF +#define SK_DBGMOD_ASF 0x00000400L /* ASF module */ +#endif +#ifdef SK_LBFO +#define SK_DBGMOD_LACP 0x00000800L /* link aggregation control protocol */ +#define SK_DBGMOD_FD 0x00001000L /* frame distributor (link aggregation) */ +#endif /* SK_LBFO */ /* Debug events */ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skgehw.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skgehw.h @@ -2,8 +2,8 @@ * * Name: skgehw.h * Project: Gigabit Ethernet Adapters, Common Modules - * Version: $Revision: 1.56 $ - * Date: $Date: 2003/09/23 09:01:00 $ + * Version: $Revision: 2.49 $ + * Date: $Date: 2005/01/20 13:01:35 $ * Purpose: Defines and Macros for the Gigabit Ethernet Adapter Product Family * ******************************************************************************/ @@ -11,13 +11,12 @@ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2004 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * * The information in this file is provided "AS IS" without warranty. * ******************************************************************************/ @@ -114,6 +113,16 @@ #define SHIFT1(x) ((x) << 1) #define SHIFT0(x) ((x) << 0) +/* Macro for arbitrary alignment of a given pointer */ +#define ALIGN_ADDR( ADDRESS, GRANULARITY ) { \ + SK_UPTR addr = (SK_UPTR)(ADDRESS); \ + if (addr & ((GRANULARITY)-1)) { \ + addr += (GRANULARITY); \ + addr &= ~(SK_UPTR)((GRANULARITY)-1); \ + ADDRESS = (void *)addr; \ + }\ +} + /* * Configuration Space header * Since this module is used for different OS', those may be @@ -132,34 +141,74 @@ #define PCI_BIST 0x0f /* 8 bit Built-in selftest */ #define PCI_BASE_1ST 0x10 /* 32 bit 1st Base address */ #define PCI_BASE_2ND 0x14 /* 32 bit 2nd Base address */ - /* Byte 0x18..0x2b: reserved */ + /* Bytes 0x18..0x2b: reserved */ #define PCI_SUB_VID 0x2c /* 16 bit Subsystem Vendor ID */ #define PCI_SUB_ID 0x2e /* 16 bit Subsystem ID */ #define PCI_BASE_ROM 0x30 /* 32 bit Expansion ROM Base Address */ -#define PCI_CAP_PTR 0x34 /* 8 bit Capabilities Ptr */ - /* Byte 0x35..0x3b: reserved */ +#define PCI_CAP_PTR 0x34 /* 8 bit Capabilities Pointer */ + /* Bytes 0x35..0x3b: reserved */ #define PCI_IRQ_LINE 0x3c /* 8 bit Interrupt Line */ #define PCI_IRQ_PIN 0x3d /* 8 bit Interrupt Pin */ #define PCI_MIN_GNT 0x3e /* 8 bit Min_Gnt */ #define PCI_MAX_LAT 0x3f /* 8 bit Max_Lat */ /* Device Dependent Region */ -#define PCI_OUR_REG_1 0x40 /* 32 bit Our Register 1 */ -#define PCI_OUR_REG_2 0x44 /* 32 bit Our Register 2 */ +#define PCI_OUR_REG_1 0x40 /* 32 bit Our Register 1 */ +#define PCI_OUR_REG_2 0x44 /* 32 bit Our Register 2 */ /* Power Management Region */ -#define PCI_PM_CAP_ID 0x48 /* 8 bit Power Management Cap. ID */ -#define PCI_PM_NITEM 0x49 /* 8 bit Next Item Ptr */ -#define PCI_PM_CAP_REG 0x4a /* 16 bit Power Management Capabilities */ -#define PCI_PM_CTL_STS 0x4c /* 16 bit Power Manag. Control/Status */ +#define PCI_PM_CAP_ID 0x48 /* 8 bit Power Management Cap. ID */ +#define PCI_PM_NITEM 0x49 /* 8 bit PM Next Item Pointer */ +#define PCI_PM_CAP_REG 0x4a /* 16 bit Power Management Capabilities */ +#define PCI_PM_CTL_STS 0x4c /* 16 bit Power Manag. Control/Status */ /* Byte 0x4e: reserved */ -#define PCI_PM_DAT_REG 0x4f /* 8 bit Power Manag. Data Register */ +#define PCI_PM_DAT_REG 0x4f /* 8 bit Power Manag. Data Register */ /* VPD Region */ -#define PCI_VPD_CAP_ID 0x50 /* 8 bit VPD Cap. ID */ -#define PCI_VPD_NITEM 0x51 /* 8 bit Next Item Ptr */ -#define PCI_VPD_ADR_REG 0x52 /* 16 bit VPD Address Register */ -#define PCI_VPD_DAT_REG 0x54 /* 32 bit VPD Data Register */ - /* Byte 0x58..0x59: reserved */ -#define PCI_SER_LD_CTRL 0x5a /* 16 bit SEEPROM Loader Ctrl (YUKON only) */ - /* Byte 0x5c..0xff: reserved */ +#define PCI_VPD_CAP_ID 0x50 /* 8 bit VPD Cap. ID */ +#define PCI_VPD_NITEM 0x51 /* 8 bit VPD Next Item Pointer */ +#define PCI_VPD_ADR_REG 0x52 /* 16 bit VPD Address Register */ +#define PCI_VPD_DAT_REG 0x54 /* 32 bit VPD Data Register */ + /* Bytes 0x58..0x59: reserved */ +#define PCI_SER_LD_CTRL 0x5a /* 16 bit SEEPROM Loader Ctrl (YUKON only) */ + /* Bytes 0x5c..0xfc: used by Yukon-2 */ +#define PCI_MSI_CAP_ID 0x5c /* 8 bit MSI Capability ID Register */ +#define PCI_MSI_NITEM 0x5d /* 8 bit MSI Next Item Pointer */ +#define PCI_MSI_CTRL 0x5e /* 16 bit MSI Message Control */ +#define PCI_MSI_ADR_LO 0x60 /* 32 bit MSI Message Address (Lower) */ +#define PCI_MSI_ADR_HI 0x64 /* 32 bit MSI Message Address (Upper) */ +#define PCI_MSI_DATA 0x68 /* 16 bit MSI Message Data */ + /* Bytes 0x6a..0x6b: reserved */ +#define PCI_X_CAP_ID 0x6c /* 8 bit PCI-X Capability ID Register */ +#define PCI_X_NITEM 0x6d /* 8 bit PCI-X Next Item Pointer */ +#define PCI_X_COMMAND 0x6e /* 16 bit PCI-X Command */ +#define PCI_X_PE_STAT 0x70 /* 32 bit PCI-X / PE Status */ +#define PCI_CAL_CTRL 0x74 /* 16 bit PCI Calibration Control Register */ +#define PCI_CAL_STAT 0x76 /* 16 bit PCI Calibration Status Register */ +#define PCI_DISC_CNT 0x78 /* 16 bit PCI Discard Counter */ +#define PCI_RETRY_CNT 0x7a /* 8 bit PCI Retry Counter */ + /* Byte 0x7b: reserved */ +#define PCI_OUR_STATUS 0x7c /* 32 bit Adapter Status Register */ + /* Bytes 0x80..0xdf: reserved */ + +/* PCI Express Capability */ +#define PEX_CAP_ID 0xe0 /* 8 bit PEX Capability ID */ +#define PEX_NITEM 0xe1 /* 8 bit PEX Next Item Pointer */ +#define PEX_CAP_REG 0xe2 /* 16 bit PEX Capability Register */ +#define PEX_DEV_CAP 0xe4 /* 32 bit PEX Device Capabilities */ +#define PEX_DEV_CTRL 0xe8 /* 16 bit PEX Device Control */ +#define PEX_DEV_STAT 0xea /* 16 bit PEX Device Status */ +#define PEX_LNK_CAP 0xec /* 32 bit PEX Link Capabilities */ +#define PEX_LNK_CTRL 0xf0 /* 16 bit PEX Link Control */ +#define PEX_LNK_STAT 0xf2 /* 16 bit PEX Link Status */ + /* Bytes 0xf4..0xff: reserved */ + +/* PCI Express Extended Capabilities */ +#define PEX_ADV_ERR_REP 0x100 /* 32 bit PEX Advanced Error Reporting */ +#define PEX_UNC_ERR_STAT 0x104 /* 32 bit PEX Uncorr. Errors Status */ +#define PEX_UNC_ERR_MASK 0x108 /* 32 bit PEX Uncorr. Errors Mask */ +#define PEX_UNC_ERR_SEV 0x10c /* 32 bit PEX Uncorr. Errors Severity */ +#define PEX_COR_ERR_STAT 0x110 /* 32 bit PEX Correc. Errors Status */ +#define PEX_COR_ERR_MASK 0x114 /* 32 bit PEX Correc. Errors Mask */ +#define PEX_ADV_ERR_CAP_C 0x118 /* 32 bit PEX Advanced Error Cap./Ctrl */ +#define PEX_HEADER_LOG 0x11c /* 4x32 bit PEX Header Log Register */ /* * I2C Address (PCI Config) @@ -180,13 +229,13 @@ #define PCI_ADSTEP BIT_7S /* Address Stepping */ #define PCI_PERREN BIT_6S /* Parity Report Response enable */ #define PCI_VGA_SNOOP BIT_5S /* VGA palette snoop */ -#define PCI_MWIEN BIT_4S /* Memory write an inv cycl ena */ +#define PCI_MWIEN BIT_4S /* Memory write an inv cycl enable */ #define PCI_SCYCEN BIT_3S /* Special Cycle enable */ #define PCI_BMEN BIT_2S /* Bus Master enable */ #define PCI_MEMEN BIT_1S /* Memory Space Access enable */ #define PCI_IOEN BIT_0S /* I/O Space Access enable */ -#define PCI_COMMAND_VAL (PCI_FBTEN | PCI_SERREN | PCI_PERREN | PCI_MWIEN |\ +#define PCI_COMMAND_VAL (PCI_INT_DIS | PCI_SERREN | PCI_PERREN | \ PCI_BMEN | PCI_MEMEN | PCI_IOEN) /* PCI_STATUS 16 bit Status */ @@ -220,7 +269,7 @@ /* PCI_HEADER_T 8 bit Header Type */ #define PCI_HD_MF_DEV BIT_7S /* 0= single, 1= multi-func dev */ -#define PCI_HD_TYPE 0x7f /* Bit 6..0: Header Layout 0= normal */ +#define PCI_HD_TYPE 0x7f /* Bit 6..0: Header Layout (0=normal) */ /* PCI_BIST 8 bit Built-in selftest */ /* Built-in Self test not supported (optional) */ @@ -229,33 +278,42 @@ #define PCI_MEMSIZE 0x4000L /* use 16 kB Memory Base */ #define PCI_MEMBASE_MSK 0xffffc000L /* Bit 31..14: Memory Base Address */ #define PCI_MEMSIZE_MSK 0x00003ff0L /* Bit 13.. 4: Memory Size Req. */ -#define PCI_PREFEN BIT_3 /* Prefetchable */ -#define PCI_MEM_TYP (3L<<2) /* Bit 2.. 1: Memory Type */ +#define PCI_PREFEN BIT_3 /* Prefetch enable */ +#define PCI_MEM_TYP_MSK (3L<<1) /* Bit 2.. 1: Memory Type Mask */ +#define PCI_MEMSPACE BIT_0 /* Memory Space Indicator */ + #define PCI_MEM32BIT (0L<<1) /* Base addr anywhere in 32 Bit range */ #define PCI_MEM1M (1L<<1) /* Base addr below 1 MegaByte */ #define PCI_MEM64BIT (2L<<1) /* Base addr anywhere in 64 Bit range */ -#define PCI_MEMSPACE BIT_0 /* Memory Space Indicator */ /* PCI_BASE_2ND 32 bit 2nd Base address */ #define PCI_IOBASE 0xffffff00L /* Bit 31.. 8: I/O Base address */ #define PCI_IOSIZE 0x000000fcL /* Bit 7.. 2: I/O Size Requirements */ - /* Bit 1: reserved */ + /* Bit 1: reserved */ #define PCI_IOSPACE BIT_0 /* I/O Space Indicator */ /* PCI_BASE_ROM 32 bit Expansion ROM Base Address */ #define PCI_ROMBASE_MSK 0xfffe0000L /* Bit 31..17: ROM Base address */ #define PCI_ROMBASE_SIZ (0x1cL<<14) /* Bit 16..14: Treat as Base or Size */ #define PCI_ROMSIZE (0x38L<<11) /* Bit 13..11: ROM Size Requirements */ - /* Bit 10.. 1: reserved */ + /* Bit 10.. 1: reserved */ #define PCI_ROMEN BIT_0 /* Address Decode enable */ /* Device Dependent Region */ /* PCI_OUR_REG_1 32 bit Our Register 1 */ - /* Bit 31..29: reserved */ + /* Bit 31..29: reserved */ #define PCI_PHY_COMA BIT_28 /* Set PHY to Coma Mode (YUKON only) */ #define PCI_TEST_CAL BIT_27 /* Test PCI buffer calib. (YUKON only) */ #define PCI_EN_CAL BIT_26 /* Enable PCI buffer calib. (YUKON only) */ #define PCI_VIO BIT_25 /* PCI I/O Voltage, 0 = 3.3V, 1 = 5V */ +/* Yukon-2 */ +#define PCI_Y2_PIG_ENA BIT_31 /* Enable Plug-in-Go (YUKON-2) */ +#define PCI_Y2_DLL_DIS BIT_30 /* Disable PCI DLL (YUKON-2) */ +#define PCI_Y2_PHY2_COMA BIT_29 /* Set PHY 2 to Coma Mode (YUKON-2) */ +#define PCI_Y2_PHY1_COMA BIT_28 /* Set PHY 1 to Coma Mode (YUKON-2) */ +#define PCI_Y2_PHY2_POWD BIT_27 /* Set PHY 2 to Power Down (YUKON-2) */ +#define PCI_Y2_PHY1_POWD BIT_26 /* Set PHY 1 to Power Down (YUKON-2) */ + /* Bit 25: reserved */ #define PCI_DIS_BOOT BIT_24 /* Disable BOOT via ROM */ #define PCI_EN_IO BIT_23 /* Mapping to I/O space */ #define PCI_EN_FPROM BIT_22 /* Enable FLASH mapping to memory */ @@ -266,9 +324,10 @@ #define PCI_PAGE_32K (1L<<20) /* 32 k pages */ #define PCI_PAGE_64K (2L<<20) /* 64 k pages */ #define PCI_PAGE_128K (3L<<20) /* 128 k pages */ - /* Bit 19: reserved */ + /* Bit 19: reserved */ #define PCI_PAGEREG (7L<<16) /* Bit 18..16: Page Register */ #define PCI_NOTAR BIT_15 /* No turnaround cycle */ +#define PCI_PEX_LEGNAT BIT_15 /* PEX PM legacy/native mode (YUKON-2) */ #define PCI_FORCE_BE BIT_14 /* Assert all BEs on MR */ #define PCI_DIS_MRL BIT_13 /* Disable Mem Read Line */ #define PCI_DIS_MRM BIT_12 /* Disable Mem Read Multiple */ @@ -278,13 +337,13 @@ #define PCI_DIS_PCI_CLK BIT_8 /* Disable PCI clock driving */ #define PCI_SKEW_DAS (0xfL<<4) /* Bit 7.. 4: Skew Ctrl, DAS Ext */ #define PCI_SKEW_BASE 0xfL /* Bit 3.. 0: Skew Ctrl, Base */ - +#define PCI_CLS_OPT BIT_3 /* Cache Line Size opt. PCI-X (YUKON-2) */ /* PCI_OUR_REG_2 32 bit Our Register 2 */ #define PCI_VPD_WR_THR (0xffL<<24) /* Bit 31..24: VPD Write Threshold */ #define PCI_DEV_SEL (0x7fL<<17) /* Bit 23..17: EEPROM Device Select */ #define PCI_VPD_ROM_SZ (7L<<14) /* Bit 16..14: VPD ROM Size */ - /* Bit 13..12: reserved */ + /* Bit 13..12: reserved */ #define PCI_PATCH_DIR (0xfL<<8) /* Bit 11.. 8: Ext Patches dir 3..0 */ #define PCI_PATCH_DIR_3 BIT_11 #define PCI_PATCH_DIR_2 BIT_10 @@ -297,21 +356,20 @@ #define PCI_EXT_PATCH_0 BIT_4 #define PCI_EN_DUMMY_RD BIT_3 /* Enable Dummy Read */ #define PCI_REV_DESC BIT_2 /* Reverse Desc. Bytes */ - /* Bit 1: reserved */ + /* Bit 1: reserved */ #define PCI_USEDATA64 BIT_0 /* Use 64Bit Data bus ext */ - /* Power Management Region */ /* PCI_PM_CAP_REG 16 bit Power Management Capabilities */ #define PCI_PME_SUP_MSK (0x1f<<11) /* Bit 15..11: PM Event Support Mask */ -#define PCI_PME_D3C_SUP BIT_15S /* PME from D3cold Support (if Vaux) */ +#define PCI_PME_D3C_SUP BIT_15S /* PME from D3cold Support (if VAUX) */ #define PCI_PME_D3H_SUP BIT_14S /* PME from D3hot Support */ #define PCI_PME_D2_SUP BIT_13S /* PME from D2 Support */ #define PCI_PME_D1_SUP BIT_12S /* PME from D1 Support */ #define PCI_PME_D0_SUP BIT_11S /* PME from D0 Support */ #define PCI_PM_D2_SUP BIT_10S /* D2 Support in 33 MHz mode */ #define PCI_PM_D1_SUP BIT_9S /* D1 Support */ - /* Bit 8.. 6: reserved */ + /* Bit 8.. 6: reserved */ #define PCI_PM_DSI BIT_5S /* Device Specific Initialization */ #define PCI_PM_APS BIT_4S /* Auxialiary Power Source */ #define PCI_PME_CLOCK BIT_3S /* PM Event Clock */ @@ -322,7 +380,7 @@ #define PCI_PM_DAT_SCL (3<<13) /* Bit 14..13: Data Reg. scaling factor */ #define PCI_PM_DAT_SEL (0xf<<9) /* Bit 12.. 9: PM data selector field */ #define PCI_PME_EN BIT_8S /* Enable PME# generation (YUKON only) */ - /* Bit 7.. 2: reserved */ + /* Bit 7.. 2: reserved */ #define PCI_PM_STATE_MSK 3 /* Bit 1.. 0: Power Management State */ #define PCI_PM_STATE_D0 0 /* D0: Operational (default) */ @@ -333,7 +391,67 @@ /* VPD Region */ /* PCI_VPD_ADR_REG 16 bit VPD Address Register */ #define PCI_VPD_FLAG BIT_15S /* starts VPD rd/wr cycle */ -#define PCI_VPD_ADR_MSK 0x7fffL /* Bit 14.. 0: VPD address mask */ +#define PCI_VPD_ADR_MSK 0x7fffL /* Bit 14.. 0: VPD Address Mask */ + +/* PCI_OUR_STATUS 32 bit Adapter Status Register (Yukon-2) */ +#define PCI_OS_PCI64B BIT_31 /* Conventional PCI 64 bits Bus */ +#define PCI_OS_PCIX BIT_30 /* PCI-X Bus */ +#define PCI_OS_MODE_MSK (3L<<28) /* Bit 29..28: PCI-X Bus Mode Mask */ +#define PCI_OS_PCI66M BIT_27 /* PCI 66 MHz Bus */ +#define PCI_OS_PCI_X BIT_26 /* PCI/PCI-X Bus (0 = PEX) */ +#define PCI_OS_DLLE_MSK (3L<<24) /* Bit 25..24: DLL Status Indication */ +#define PCI_OS_DLLR_MSK (0xfL<<20) /* Bit 23..20: DLL Row Counters Values */ +#define PCI_OS_DLLC_MSK (0xfL<<16) /* Bit 19..16: DLL Col. Counters Values */ + /* Bit 15.. 8: reserved */ + +#define PCI_OS_SPEED(val) ((val & PCI_OS_MODE_MSK) >> 28) /* PCI-X Speed */ +/* possible values for the speed field of the register */ +#define PCI_OS_SPD_PCI 0 /* PCI Conventional Bus */ +#define PCI_OS_SPD_X66 1 /* PCI-X 66MHz Bus */ +#define PCI_OS_SPD_X100 2 /* PCI-X 100MHz Bus */ +#define PCI_OS_SPD_X133 3 /* PCI-X 133MHz Bus */ + +/* PEX_DEV_CTRL 16 bit PEX Device Control (Yukon-2) */ + /* Bit 15 reserved */ +#define PEX_DC_MAX_RRS_MSK (7<<12) /* Bit 14..12: Max. Read Request Size */ +#define PEX_DC_EN_NO_SNOOP BIT_11S /* Enable No Snoop */ +#define PEX_DC_EN_AUX_POW BIT_10S /* Enable AUX Power */ +#define PEX_DC_EN_PHANTOM BIT_9S /* Enable Phantom Functions */ +#define PEX_DC_EN_EXT_TAG BIT_8S /* Enable Extended Tag Field */ +#define PEX_DC_MAX_PLS_MSK (7<<5) /* Bit 7.. 5: Max. Payload Size Mask */ +#define PEX_DC_EN_REL_ORD BIT_4S /* Enable Relaxed Ordering */ +#define PEX_DC_EN_UNS_RQ_RP BIT_3S /* Enable Unsupported Request Reporting */ +#define PEX_DC_EN_FAT_ER_RP BIT_2S /* Enable Fatal Error Reporting */ +#define PEX_DC_EN_NFA_ER_RP BIT_1S /* Enable Non-Fatal Error Reporting */ +#define PEX_DC_EN_COR_ER_RP BIT_0S /* Enable Correctable Error Reporting */ + +#define PEX_DC_MAX_RD_RQ_SIZE(x) (SHIFT12(x) & PEX_DC_MAX_RRS_MSK) + +/* PEX_LNK_STAT 16 bit PEX Link Status (Yukon-2) */ + /* Bit 15..13 reserved */ +#define PEX_LS_SLOT_CLK_CFG BIT_12S /* Slot Clock Config */ +#define PEX_LS_LINK_TRAIN BIT_11S /* Link Training */ +#define PEX_LS_TRAIN_ERROR BIT_10S /* Training Error */ +#define PEX_LS_LINK_WI_MSK (0x3f<<4) /* Bit 9.. 4: Neg. Link Width Mask */ +#define PEX_LS_LINK_SP_MSK 0x0f /* Bit 3.. 0: Link Speed Mask */ + +/* PEX_UNC_ERR_STAT PEX Uncorrectable Errors Status Register (Yukon-2) */ + /* Bit 31..21 reserved */ +#define PEX_UNSUP_REQ BIT_20 /* Unsupported Request Error */ + /* ECRC Error (not supported) */ +#define PEX_MALFOR_TLP BIT_18 /* Malformed TLP */ + /* Receiver Overflow (not supported) */ +#define PEX_UNEXP_COMP BIT_16 /* Unexpected Completion */ + /* Completer Abort (not supported) */ +#define PEX_COMP_TO BIT_14 /* Completion Timeout */ +#define PEX_FLOW_CTRL_P BIT_13 /* Flow Control Protocol Error */ +#define PEX_POIS_TLP BIT_12 /* Poisoned TLP */ + /* Bit 11.. 5: reserved */ +#define PEX_DATA_LINK_P BIT_4 /* Data Link Protocol Error */ + /* Bit 3.. 1: reserved */ + /* Training Error (not supported) */ + +#define PEX_FATAL_ERRORS (PEX_MALFOR_TLP | PEX_FLOW_CTRL_P | PEX_DATA_LINK_P) /* Control Register File (Address Map) */ @@ -349,8 +467,14 @@ #define B0_IMSK 0x000c /* 32 bit Interrupt Mask Register */ #define B0_HWE_ISRC 0x0010 /* 32 bit HW Error Interrupt Src Reg */ #define B0_HWE_IMSK 0x0014 /* 32 bit HW Error Interrupt Mask Reg */ -#define B0_SP_ISRC 0x0018 /* 32 bit Special Interrupt Source Reg */ - /* 0x001c: reserved */ +#define B0_SP_ISRC 0x0018 /* 32 bit Special Interrupt Source Reg 1 */ + +/* Special ISR registers (Yukon-2 only) */ +#define B0_Y2_SP_ISRC2 0x001c /* 32 bit Special Interrupt Source Reg 2 */ +#define B0_Y2_SP_ISRC3 0x0020 /* 32 bit Special Interrupt Source Reg 3 */ +#define B0_Y2_SP_EISR 0x0024 /* 32 bit Enter ISR Reg */ +#define B0_Y2_SP_LISR 0x0028 /* 32 bit Leave ISR Reg */ +#define B0_Y2_SP_ICR 0x002c /* 32 bit Interrupt Control Reg */ /* B0 XMAC 1 registers (GENESIS only) */ #define B0_XM1_IMSK 0x0020 /* 16 bit r/w XMAC 1 Interrupt Mask Register*/ @@ -400,14 +524,23 @@ #define B2_CONN_TYP 0x0118 /* 8 bit Connector type */ #define B2_PMD_TYP 0x0119 /* 8 bit PMD type */ #define B2_MAC_CFG 0x011a /* 8 bit MAC Configuration / Chip Revision */ -#define B2_CHIP_ID 0x011b /* 8 bit Chip Identification Number */ - /* Eprom registers are currently of no use */ +#define B2_CHIP_ID 0x011b /* 8 bit Chip Identification Number */ + /* Eprom registers */ #define B2_E_0 0x011c /* 8 bit EPROM Byte 0 (ext. SRAM size */ +/* Yukon and Genesis */ #define B2_E_1 0x011d /* 8 bit EPROM Byte 1 (PHY type) */ #define B2_E_2 0x011e /* 8 bit EPROM Byte 2 */ +/* Yukon-2 */ +#define B2_Y2_CLK_GATE 0x011d /* 8 bit Clock Gating (Yukon-2) */ +#define B2_Y2_HW_RES 0x011e /* 8 bit HW Resources (Yukon-2) */ + #define B2_E_3 0x011f /* 8 bit EPROM Byte 3 */ + +/* Yukon and Genesis */ #define B2_FAR 0x0120 /* 32 bit Flash-Prom Addr Reg/Cnt */ #define B2_FDP 0x0124 /* 8 bit Flash-Prom Data Port */ +/* Yukon-2 */ +#define B2_Y2_CLK_CTRL 0x0120 /* 32 bit Core Clock Frequency Control */ /* 0x0125 - 0x0127: reserved */ #define B2_LD_CTRL 0x0128 /* 8 bit EPROM loader control register */ #define B2_LD_TEST 0x0129 /* 8 bit EPROM loader test register */ @@ -439,6 +572,10 @@ #define B2_BSC_CTRL 0x0178 /* 8 bit Blink Source Counter Control */ #define B2_BSC_STAT 0x0179 /* 8 bit Blink Source Counter Status */ #define B2_BSC_TST 0x017a /* 16 bit Blink Source Counter Test Reg */ + +/* Yukon-2 */ +#define Y2_PEX_PHY_DATA 0x0170 /* 16 bit PEX PHY Data Register */ +#define Y2_PEX_PHY_ADDR 0x0172 /* 16 bit PEX PHY Address Register */ /* 0x017c - 0x017f: reserved */ /* @@ -448,9 +585,13 @@ #define B3_RAM_ADDR 0x0180 /* 32 bit RAM Address, to read or write */ #define B3_RAM_DATA_LO 0x0184 /* 32 bit RAM Data Word (low dWord) */ #define B3_RAM_DATA_HI 0x0188 /* 32 bit RAM Data Word (high dWord) */ + +#define SELECT_RAM_BUFFER(rb, addr) (addr | (rb << 6)) /* Yukon-2 only */ + /* 0x018c - 0x018f: reserved */ /* RAM Interface Registers */ +/* Yukon-2: use SELECT_RAM_BUFFER() to access the RAM buffer */ /* * The HW-Spec. calls this registers Timeout Value 0..11. But this names are * not usable in SW. Please notice these are NOT real timeouts, these are @@ -517,8 +658,8 @@ /* 0x01ea - 0x01eb: reserved */ #define B3_PA_TOVAL_TX2 0x01ec /* 16 bit Timeout Val Tx Path MAC 2 */ /* 0x01ee - 0x01ef: reserved */ -#define B3_PA_CTRL 0x01f0 /* 16 bit Packet Arbiter Ctrl Register */ -#define B3_PA_TEST 0x01f2 /* 16 bit Packet Arbiter Test Register */ +#define B3_PA_CTRL 0x01f0 /* 16 bit Packet Arbiter Ctrl Register */ +#define B3_PA_TEST 0x01f2 /* 16 bit Packet Arbiter Test Register */ /* 0x01f4 - 0x01ff: reserved */ /* @@ -532,7 +673,16 @@ #define TXA_CTRL 0x0210 /* 8 bit Tx Arbiter Control Register */ #define TXA_TEST 0x0211 /* 8 bit Tx Arbiter Test Register */ #define TXA_STAT 0x0212 /* 8 bit Tx Arbiter Status Register */ - /* 0x0213 - 0x027f: reserved */ + /* 0x0213 - 0x021f: reserved */ + + /* RSS key registers for Yukon-2 Family */ +#define B4_RSS_KEY 0x0220 /* 4x32 bit RSS Key register (Yukon-2) */ + /* RSS key register offsets */ +#define KEY_IDX_0 0 /* offset for location of KEY 0 */ +#define KEY_IDX_1 4 /* offset for location of KEY 1 */ +#define KEY_IDX_2 8 /* offset for location of KEY 2 */ +#define KEY_IDX_3 12 /* offset for location of KEY 3 */ + /* 0x0280 - 0x0292: MAC 2 */ /* 0x0213 - 0x027f: reserved */ @@ -570,8 +720,37 @@ #define Q_T1_SV 0x3f /* 8 bit Test Register 1 Supervisor SM */ #define Q_T2 0x40 /* 32 bit Test Register 2 */ #define Q_T3 0x44 /* 32 bit Test Register 3 */ + +/* Yukon-2 */ +#define Q_DONE 0x24 /* 16 bit Done Index (Yukon-2 only) */ +#define Q_WM 0x40 /* 16 bit FIFO Watermark */ +#define Q_AL 0x42 /* 8 bit FIFO Alignment */ +#define Q_RSP 0x44 /* 16 bit FIFO Read Shadow Pointer */ +#define Q_RSL 0x46 /* 8 bit FIFO Read Shadow Level */ +#define Q_RP 0x48 /* 8 bit FIFO Read Pointer */ +#define Q_RL 0x4a /* 8 bit FIFO Read Level */ +#define Q_WP 0x4c /* 8 bit FIFO Write Pointer */ +#define Q_WSP 0x4d /* 8 bit FIFO Write Shadow Pointer */ +#define Q_WL 0x4e /* 8 bit FIFO Write Level */ +#define Q_WSL 0x4f /* 8 bit FIFO Write Shadow Level */ /* 0x48 - 0x7f: reserved */ +/* Queue Prefetch Unit Offsets, use Y2_PREF_Q_ADDR() to address (Yukon-2 only)*/ +#define Y2_B8_PREF_REGS 0x0450 + +#define PREF_UNIT_CTRL_REG 0x00 /* 32 bit Prefetch Control register */ +#define PREF_UNIT_LAST_IDX_REG 0x04 /* 16 bit Last Index */ +#define PREF_UNIT_ADDR_LOW_REG 0x08 /* 32 bit List start addr, low part */ +#define PREF_UNIT_ADDR_HI_REG 0x0c /* 32 bit List start addr, high part*/ +#define PREF_UNIT_GET_IDX_REG 0x10 /* 16 bit Get Index */ +#define PREF_UNIT_PUT_IDX_REG 0x14 /* 16 bit Put Index */ +#define PREF_UNIT_FIFO_WP_REG 0x20 /* 8 bit FIFO write pointer */ +#define PREF_UNIT_FIFO_RP_REG 0x24 /* 8 bit FIFO read pointer */ +#define PREF_UNIT_FIFO_WM_REG 0x28 /* 8 bit FIFO watermark */ +#define PREF_UNIT_FIFO_LEV_REG 0x2c /* 8 bit FIFO level */ + +#define PREF_UNIT_MASK_IDX 0x0fff + /* * Bank 16 - 23 */ @@ -583,17 +762,17 @@ #define RB_END 0x04 /* 32 bit RAM Buffer End Address */ #define RB_WP 0x08 /* 32 bit RAM Buffer Write Pointer */ #define RB_RP 0x0c /* 32 bit RAM Buffer Read Pointer */ -#define RB_RX_UTPP 0x10 /* 32 bit Rx Upper Threshold, Pause Pack */ -#define RB_RX_LTPP 0x14 /* 32 bit Rx Lower Threshold, Pause Pack */ +#define RB_RX_UTPP 0x10 /* 32 bit Rx Upper Threshold, Pause Packet */ +#define RB_RX_LTPP 0x14 /* 32 bit Rx Lower Threshold, Pause Packet */ #define RB_RX_UTHP 0x18 /* 32 bit Rx Upper Threshold, High Prio */ #define RB_RX_LTHP 0x1c /* 32 bit Rx Lower Threshold, High Prio */ /* 0x10 - 0x1f: reserved at Tx RAM Buffer Registers */ #define RB_PC 0x20 /* 32 bit RAM Buffer Packet Counter */ #define RB_LEV 0x24 /* 32 bit RAM Buffer Level Register */ -#define RB_CTRL 0x28 /* 8 bit RAM Buffer Control Register */ +#define RB_CTRL 0x28 /* 32 bit RAM Buffer Control Register */ #define RB_TST1 0x29 /* 8 bit RAM Buffer Test Register 1 */ -#define RB_TST2 0x2A /* 8 bit RAM Buffer Test Register 2 */ - /* 0x2c - 0x7f: reserved */ +#define RB_TST2 0x2a /* 8 bit RAM Buffer Test Register 2 */ + /* 0x2b - 0x7f: reserved */ /* * Bank 24 @@ -603,7 +782,7 @@ * use MR_ADDR() to access */ #define RX_MFF_EA 0x0c00 /* 32 bit Receive MAC FIFO End Address */ -#define RX_MFF_WP 0x0c04 /* 32 bit Receive MAC FIFO Write Pointer */ +#define RX_MFF_WP 0x0c04 /* 32 bit Receive MAC FIFO Write Pointer */ /* 0x0c08 - 0x0c0b: reserved */ #define RX_MFF_RP 0x0c0c /* 32 bit Receive MAC FIFO Read Pointer */ #define RX_MFF_PC 0x0c10 /* 32 bit Receive MAC FIFO Packet Cnt */ @@ -628,20 +807,22 @@ #define LNK_LED_REG 0x0c3c /* 8 bit Link LED Register */ /* 0x0c3d - 0x0c3f: reserved */ -/* Receive GMAC FIFO (YUKON only), use MR_ADDR() to access */ +/* Receive GMAC FIFO (YUKON and Yukon-2), use MR_ADDR() to access */ #define RX_GMF_EA 0x0c40 /* 32 bit Rx GMAC FIFO End Address */ #define RX_GMF_AF_THR 0x0c44 /* 32 bit Rx GMAC FIFO Almost Full Thresh. */ #define RX_GMF_CTRL_T 0x0c48 /* 32 bit Rx GMAC FIFO Control/Test */ #define RX_GMF_FL_MSK 0x0c4c /* 32 bit Rx GMAC FIFO Flush Mask */ #define RX_GMF_FL_THR 0x0c50 /* 32 bit Rx GMAC FIFO Flush Threshold */ - /* 0x0c54 - 0x0c5f: reserved */ -#define RX_GMF_WP 0x0c60 /* 32 bit Rx GMAC FIFO Write Pointer */ +#define RX_GMF_TR_THR 0x0c54 /* 32 bit Rx Truncation Threshold (Yukon-2) */ + /* 0x0c58 - 0x0c5b: reserved */ +#define RX_GMF_VLAN 0x0c5c /* 32 bit Rx VLAN Type Register (Yukon-2) */ +#define RX_GMF_WP 0x0c60 /* 32 bit Rx GMAC FIFO Write Pointer */ /* 0x0c64 - 0x0c67: reserved */ -#define RX_GMF_WLEV 0x0c68 /* 32 bit Rx GMAC FIFO Write Level */ +#define RX_GMF_WLEV 0x0c68 /* 32 bit Rx GMAC FIFO Write Level */ /* 0x0c6c - 0x0c6f: reserved */ -#define RX_GMF_RP 0x0c70 /* 32 bit Rx GMAC FIFO Read Pointer */ +#define RX_GMF_RP 0x0c70 /* 32 bit Rx GMAC FIFO Read Pointer */ /* 0x0c74 - 0x0c77: reserved */ -#define RX_GMF_RLEV 0x0c78 /* 32 bit Rx GMAC FIFO Read Level */ +#define RX_GMF_RLEV 0x0c78 /* 32 bit Rx GMAC FIFO Read Level */ /* 0x0c7c - 0x0c7f: reserved */ /* @@ -658,7 +839,7 @@ * use MR_ADDR() to access */ #define TX_MFF_EA 0x0d00 /* 32 bit Transmit MAC FIFO End Address */ -#define TX_MFF_WP 0x0d04 /* 32 bit Transmit MAC FIFO WR Pointer */ +#define TX_MFF_WP 0x0d04 /* 32 bit Transmit MAC FIFO WR Pointer */ #define TX_MFF_WSP 0x0d08 /* 32 bit Transmit MAC FIFO WR Shadow Ptr */ #define TX_MFF_RP 0x0d0c /* 32 bit Transmit MAC FIFO RD Pointer */ #define TX_MFF_PC 0x0d10 /* 32 bit Transmit MAC FIFO Packet Cnt */ @@ -676,18 +857,19 @@ #define TX_LED_TST 0x0d29 /* 8 bit Transmit LED Cnt Test Reg */ /* 0x0d2a - 0x0d3f: reserved */ -/* Transmit GMAC FIFO (YUKON only), use MR_ADDR() to access */ +/* Transmit GMAC FIFO (YUKON and Yukon-2), use MR_ADDR() to access */ #define TX_GMF_EA 0x0d40 /* 32 bit Tx GMAC FIFO End Address */ #define TX_GMF_AE_THR 0x0d44 /* 32 bit Tx GMAC FIFO Almost Empty Thresh.*/ #define TX_GMF_CTRL_T 0x0d48 /* 32 bit Tx GMAC FIFO Control/Test */ - /* 0x0d4c - 0x0d5f: reserved */ -#define TX_GMF_WP 0x0d60 /* 32 bit Tx GMAC FIFO Write Pointer */ -#define TX_GMF_WSP 0x0d64 /* 32 bit Tx GMAC FIFO Write Shadow Ptr. */ -#define TX_GMF_WLEV 0x0d68 /* 32 bit Tx GMAC FIFO Write Level */ + /* 0x0d4c - 0x0d5b: reserved */ +#define TX_GMF_VLAN 0x0d5c /* 32 bit Tx VLAN Type Register (Yukon-2) */ +#define TX_GMF_WP 0x0d60 /* 32 bit Tx GMAC FIFO Write Pointer */ +#define TX_GMF_WSP 0x0d64 /* 32 bit Tx GMAC FIFO Write Shadow Pointer */ +#define TX_GMF_WLEV 0x0d68 /* 32 bit Tx GMAC FIFO Write Level */ /* 0x0d6c - 0x0d6f: reserved */ -#define TX_GMF_RP 0x0d70 /* 32 bit Tx GMAC FIFO Read Pointer */ -#define TX_GMF_RSTP 0x0d74 /* 32 bit Tx GMAC FIFO Restart Pointer */ -#define TX_GMF_RLEV 0x0d78 /* 32 bit Tx GMAC FIFO Read Level */ +#define TX_GMF_RP 0x0d70 /* 32 bit Tx GMAC FIFO Read Pointer */ +#define TX_GMF_RSTP 0x0d74 /* 32 bit Tx GMAC FIFO Restart Pointer */ +#define TX_GMF_RLEV 0x0d78 /* 32 bit Tx GMAC FIFO Read Level */ /* 0x0d7c - 0x0d7f: reserved */ /* @@ -713,12 +895,84 @@ #define GMAC_TI_ST_CTRL 0x0e18 /* 8 bit Time Stamp Timer Ctrl Reg */ /* 0x0e19: reserved */ #define GMAC_TI_ST_TST 0x0e1a /* 8 bit Time Stamp Timer Test Reg */ - /* 0x0e1b - 0x0e7f: reserved */ + /* 0x0e1b - 0x0e1f: reserved */ + +/* Polling Unit Registers (Yukon-2 only) */ +#define POLL_CTRL 0x0e20 /* 32 bit Polling Unit Control Reg */ +#define POLL_LAST_IDX 0x0e24 /* 16 bit Polling Unit List Last Index */ + /* 0x0e26 - 0x0e27: reserved */ +#define POLL_LIST_ADDR_LO 0x0e28 /* 32 bit Poll. List Start Addr (low) */ +#define POLL_LIST_ADDR_HI 0x0e2c /* 32 bit Poll. List Start Addr (high) */ + /* 0x0e30 - 0x0e3f: reserved */ + +/* ASF Subsystem Registers (Yukon-2 only) */ +#define B28_Y2_SMB_CONFIG 0x0e40 /* 32 bit ASF SMBus Config Register */ +#define B28_Y2_SMB_CSD_REG 0x0e44 /* 32 bit ASF SMB Control/Status/Data */ + /* 0x0e48 - 0x0e5f: reserved */ +#define B28_Y2_ASF_IRQ_V_BASE 0x0e60 /* 32 bit ASF IRQ Vector Base */ + /* 0x0e64 - 0x0e67: reserved */ +#define B28_Y2_ASF_STAT_CMD 0x0e68 /* 32 bit ASF Status and Command Reg */ +#define B28_Y2_ASF_HOST_COM 0x0e6c /* 32 bit ASF Host Communication Reg */ +#define B28_Y2_DATA_REG_1 0x0e70 /* 32 bit ASF/Host Data Register 1 */ +#define B28_Y2_DATA_REG_2 0x0e74 /* 32 bit ASF/Host Data Register 2 */ +#define B28_Y2_DATA_REG_3 0x0e78 /* 32 bit ASF/Host Data Register 3 */ +#define B28_Y2_DATA_REG_4 0x0e7c /* 32 bit ASF/Host Data Register 4 */ /* * Bank 29 */ - /* 0x0e80 - 0x0efc: reserved */ + +/* Status BMU Registers (Yukon-2 only)*/ +#define STAT_CTRL 0x0e80 /* 32 bit Status BMU Control Reg */ +#define STAT_LAST_IDX 0x0e84 /* 16 bit Status BMU Last Index */ + /* 0x0e85 - 0x0e86: reserved */ +#define STAT_LIST_ADDR_LO 0x0e88 /* 32 bit Status List Start Addr (low) */ +#define STAT_LIST_ADDR_HI 0x0e8c /* 32 bit Status List Start Addr (high) */ +#define STAT_TXA1_RIDX 0x0e90 /* 16 bit Status TxA1 Report Index Reg */ +#define STAT_TXS1_RIDX 0x0e92 /* 16 bit Status TxS1 Report Index Reg */ +#define STAT_TXA2_RIDX 0x0e94 /* 16 bit Status TxA2 Report Index Reg */ +#define STAT_TXS2_RIDX 0x0e96 /* 16 bit Status TxS2 Report Index Reg */ +#define STAT_TX_IDX_TH 0x0e98 /* 16 bit Status Tx Index Threshold Reg */ + /* 0x0e9a - 0x0e9b: reserved */ +#define STAT_PUT_IDX 0x0e9c /* 16 bit Status Put Index Reg */ + /* 0x0e9e - 0x0e9f: reserved */ + +/* FIFO Control/Status Registers (Yukon-2 only)*/ +#define STAT_FIFO_WP 0x0ea0 /* 8 bit Status FIFO Write Pointer Reg */ + /* 0x0ea1 - 0x0ea3: reserved */ +#define STAT_FIFO_RP 0x0ea4 /* 8 bit Status FIFO Read Pointer Reg */ + /* 0x0ea5: reserved */ +#define STAT_FIFO_RSP 0x0ea6 /* 8 bit Status FIFO Read Shadow Ptr */ + /* 0x0ea7: reserved */ +#define STAT_FIFO_LEVEL 0x0ea8 /* 8 bit Status FIFO Level Reg */ + /* 0x0ea9: reserved */ +#define STAT_FIFO_SHLVL 0x0eaa /* 8 bit Status FIFO Shadow Level Reg */ + /* 0x0eab: reserved */ +#define STAT_FIFO_WM 0x0eac /* 8 bit Status FIFO Watermark Reg */ +#define STAT_FIFO_ISR_WM 0x0ead /* 8 bit Status FIFO ISR Watermark Reg */ + /* 0x0eae - 0x0eaf: reserved */ + +/* Level and ISR Timer Registers (Yukon-2 only)*/ +#define STAT_LEV_TIMER_INI 0x0eb0 /* 32 bit Level Timer Init. Value Reg */ +#define STAT_LEV_TIMER_CNT 0x0eb4 /* 32 bit Level Timer Counter Reg */ +#define STAT_LEV_TIMER_CTRL 0x0eb8 /* 8 bit Level Timer Control Reg */ +#define STAT_LEV_TIMER_TEST 0x0eb9 /* 8 bit Level Timer Test Reg */ + /* 0x0eba - 0x0ebf: reserved */ +#define STAT_TX_TIMER_INI 0x0ec0 /* 32 bit Tx Timer Init. Value Reg */ +#define STAT_TX_TIMER_CNT 0x0ec4 /* 32 bit Tx Timer Counter Reg */ +#define STAT_TX_TIMER_CTRL 0x0ec8 /* 8 bit Tx Timer Control Reg */ +#define STAT_TX_TIMER_TEST 0x0ec9 /* 8 bit Tx Timer Test Reg */ + /* 0x0eca - 0x0ecf: reserved */ +#define STAT_ISR_TIMER_INI 0x0ed0 /* 32 bit ISR Timer Init. Value Reg */ +#define STAT_ISR_TIMER_CNT 0x0ed4 /* 32 bit ISR Timer Counter Reg */ +#define STAT_ISR_TIMER_CTRL 0x0ed8 /* 8 bit ISR Timer Control Reg */ +#define STAT_ISR_TIMER_TEST 0x0ed9 /* 8 bit ISR Timer Test Reg */ + /* 0x0eda - 0x0eff: reserved */ + +#define ST_LAST_IDX_MASK 0x007f /* Last Index Mask */ +#define ST_TXRP_IDX_MASK 0x0fff /* Tx Report Index Mask */ +#define ST_TXTH_IDX_MASK 0x0fff /* Tx Threshold Index Mask */ +#define ST_WM_IDX_MASK 0x3f /* FIFO Watermark Index Mask */ /* * Bank 30 @@ -742,11 +996,9 @@ #define WOL_MATCH_RES 0x0f23 /* 8 bit WOL Match Result Reg */ #define WOL_MAC_ADDR_LO 0x0f24 /* 32 bit WOL MAC Address Low */ #define WOL_MAC_ADDR_HI 0x0f28 /* 16 bit WOL MAC Address High */ -#define WOL_PATT_RPTR 0x0f2c /* 8 bit WOL Pattern Read Ptr */ - -/* use this macro to access above registers */ -#define WOL_REG(Reg) ((Reg) + (pAC->GIni.GIWolOffs)) - +#define WOL_PATT_PME 0x0f2a /* 8 bit WOL PME Match Enable (Yukon-2) */ +#define WOL_PATT_ASFM 0x0f2b /* 8 bit WOL ASF Match Enable (Yukon-2) */ +#define WOL_PATT_RPTR 0x0f2c /* 8 bit WOL Pattern Read Pointer */ /* WOL Pattern Length Registers (YUKON only) */ @@ -764,11 +1016,22 @@ */ /* 0x0f80 - 0x0fff: reserved */ +/* WOL registers link 2 */ + +/* use this macro to access WOL registers */ +#define WOL_REG(Port, Reg) ((Reg) + ((Port)*0x80) + (pAC->GIni.GIWolOffs)) + /* * Bank 32 - 33 */ #define WOL_PATT_RAM_1 0x1000 /* WOL Pattern RAM Link 1 */ +#define WOL_PATT_RAM_2 0x1400 /* WOL Pattern RAM Link 2 */ +/* use this macro to retrieve the pattern ram base address */ +#define WOL_PATT_RAM_BASE(Port) (WOL_PATT_RAM_1 + (Port)*0x400) + +/* offset to configuration space on Yukon-2 */ +#define Y2_CFG_SPC 0x1c00 /* * Bank 0x22 - 0x3f */ @@ -800,13 +1063,26 @@ */ /* B0_RAP 8 bit Register Address Port */ /* Bit 7: reserved */ -#define RAP_RAP 0x3f /* Bit 6..0: 0 = block 0,..,6f = block 6f */ +#define RAP_MSK 0x7f /* Bit 6..0: 0 = block 0,..,6f = block 6f */ + +/* B0_CTST 24 bit Control/Status register */ + /* Bit 23..18: reserved */ +#define Y2_VMAIN_AVAIL BIT_17 /* VMAIN available (YUKON-2 only) */ +#define Y2_VAUX_AVAIL BIT_16 /* VAUX available (YUKON-2 only) */ + /* Bit 15..14: reserved */ +#define Y2_ASF_ENABLE BIT_13S /* ASF Unit Enable (YUKON-2 only) */ +#define Y2_ASF_DISABLE BIT_12S /* ASF Unit Disable (YUKON-2 only) */ +#define Y2_CLK_RUN_ENA BIT_11S /* CLK_RUN Enable (YUKON-2 only) */ +#define Y2_CLK_RUN_DIS BIT_10S /* CLK_RUN Disable (YUKON-2 only) */ +#define Y2_LED_STAT_ON BIT_9S /* Status LED On (YUKON-2 only) */ +#define Y2_LED_STAT_OFF BIT_8S /* Status LED Off (YUKON-2 only) */ + /* Bit 7.. 0: same as below */ /* B0_CTST 16 bit Control/Status register */ /* Bit 15..14: reserved */ -#define CS_CLK_RUN_HOT BIT_13S /* CLK_RUN hot m. (YUKON-Lite only) */ -#define CS_CLK_RUN_RST BIT_12S /* CLK_RUN reset (YUKON-Lite only) */ -#define CS_CLK_RUN_ENA BIT_11S /* CLK_RUN enable (YUKON-Lite only) */ +#define CS_CLK_RUN_HOT BIT_13S /* CLK_RUN Hot m. (YUKON-Lite only) */ +#define CS_CLK_RUN_RST BIT_12S /* CLK_RUN Reset (YUKON-Lite only) */ +#define CS_CLK_RUN_ENA BIT_11S /* CLK_RUN Enable (YUKON-Lite only) */ #define CS_VAUX_AVAIL BIT_10S /* VAUX available (YUKON only) */ #define CS_BUS_CLOCK BIT_9S /* Bus Clock 0/1 = 33/66 MHz */ #define CS_BUS_SLOT_SZ BIT_8S /* Slot Size 0/1 = 32/64 bit slot */ @@ -814,26 +1090,27 @@ #define CS_CL_SW_IRQ BIT_6S /* Clear IRQ SW Request */ #define CS_STOP_DONE BIT_5S /* Stop Master is finished */ #define CS_STOP_MAST BIT_4S /* Command Bit to stop the master */ -#define CS_MRST_CLR BIT_3S /* Clear Master reset */ -#define CS_MRST_SET BIT_2S /* Set Master reset */ -#define CS_RST_CLR BIT_1S /* Clear Software reset */ -#define CS_RST_SET BIT_0S /* Set Software reset */ +#define CS_MRST_CLR BIT_3S /* Clear Master Reset */ +#define CS_MRST_SET BIT_2S /* Set Master Reset */ +#define CS_RST_CLR BIT_1S /* Clear Software Reset */ +#define CS_RST_SET BIT_0S /* Set Software Reset */ -/* B0_LED 8 Bit LED register */ +/* B0_LED 8 Bit LED register (GENESIS only)*/ /* Bit 7.. 2: reserved */ -#define LED_STAT_ON BIT_1S /* Status LED on */ -#define LED_STAT_OFF BIT_0S /* Status LED off */ +#define LED_STAT_ON BIT_1S /* Status LED On */ +#define LED_STAT_OFF BIT_0S /* Status LED Off */ /* B0_POWER_CTRL 8 Bit Power Control reg (YUKON only) */ #define PC_VAUX_ENA BIT_7 /* Switch VAUX Enable */ -#define PC_VAUX_DIS BIT_6 /* Switch VAUX Disable */ -#define PC_VCC_ENA BIT_5 /* Switch VCC Enable */ -#define PC_VCC_DIS BIT_4 /* Switch VCC Disable */ -#define PC_VAUX_ON BIT_3 /* Switch VAUX On */ -#define PC_VAUX_OFF BIT_2 /* Switch VAUX Off */ -#define PC_VCC_ON BIT_1 /* Switch VCC On */ -#define PC_VCC_OFF BIT_0 /* Switch VCC Off */ +#define PC_VAUX_DIS BIT_6 /* Switch VAUX Disable */ +#define PC_VCC_ENA BIT_5 /* Switch VCC Enable */ +#define PC_VCC_DIS BIT_4 /* Switch VCC Disable */ +#define PC_VAUX_ON BIT_3 /* Switch VAUX On */ +#define PC_VAUX_OFF BIT_2 /* Switch VAUX Off */ +#define PC_VCC_ON BIT_1 /* Switch VCC On */ +#define PC_VCC_OFF BIT_0 /* Switch VCC Off */ +/* Yukon and Genesis */ /* B0_ISRC 32 bit Interrupt Source Register */ /* B0_IMSK 32 bit Interrupt Mask Register */ /* B0_SP_ISRC 32 bit Special Interrupt Source Reg */ @@ -879,12 +1156,51 @@ #define IS_XA2_F BIT_1 /* Q_XA2 End of Frame */ #define IS_XA2_C BIT_0 /* Q_XA2 Encoding Error */ +/* (Yukon-2) */ +/* B0_ISRC 32 bit Interrupt Source Register */ +/* B0_IMSK 32 bit Interrupt Mask Register */ +/* B0_SP_ISRC 32 bit Special Interrupt Source Reg */ +/* B2_IRQM_MSK 32 bit IRQ Moderation Mask */ +/* B0_Y2_SP_ISRC2 32 bit Special Interrupt Source Reg 2 */ +/* B0_Y2_SP_ISRC3 32 bit Special Interrupt Source Reg 3 */ +/* B0_Y2_SP_EISR 32 bit Enter ISR Reg */ +/* B0_Y2_SP_LISR 32 bit Leave ISR Reg */ +#define Y2_IS_PORT_MASK(Port, Mask) ((Mask) << (Port*8)) +#define Y2_IS_HW_ERR BIT_31 /* Interrupt HW Error */ +#define Y2_IS_STAT_BMU BIT_30 /* Status BMU Interrupt */ +#define Y2_IS_ASF BIT_29 /* ASF subsystem Interrupt */ + /* Bit 28: reserved */ +#define Y2_IS_POLL_CHK BIT_27 /* Check IRQ from polling unit */ +#define Y2_IS_TWSI_RDY BIT_26 /* IRQ on end of TWSI Tx */ +#define Y2_IS_IRQ_SW BIT_25 /* SW forced IRQ */ +#define Y2_IS_TIMINT BIT_24 /* IRQ from Timer */ + /* Bit 23..16 reserved */ + /* Link 2 Interrupts */ +#define Y2_IS_IRQ_PHY2 BIT_12 /* Interrupt from PHY 2 */ +#define Y2_IS_IRQ_MAC2 BIT_11 /* Interrupt from MAC 2 */ +#define Y2_IS_CHK_RX2 BIT_10 /* Descriptor error Rx 2 */ +#define Y2_IS_CHK_TXS2 BIT_9 /* Descriptor error TXS 2 */ +#define Y2_IS_CHK_TXA2 BIT_8 /* Descriptor error TXA 2 */ + /* Bit 7.. 5 reserved */ + /* Link 1 interrupts */ +#define Y2_IS_IRQ_PHY1 BIT_4 /* Interrupt from PHY 1 */ +#define Y2_IS_IRQ_MAC1 BIT_3 /* Interrupt from MAC 1 */ +#define Y2_IS_CHK_RX1 BIT_2 /* Descriptor error Rx 1 */ +#define Y2_IS_CHK_TXS1 BIT_1 /* Descriptor error TXS 1 */ +#define Y2_IS_CHK_TXA1 BIT_0 /* Descriptor error TXA 1 */ + +#define Y2_IS_L1_MASK 0x0000001fUL /* IRQ Mask for port 1 */ +#define Y2_IS_L2_MASK 0x00001f00UL /* IRQ Mask for port 2 */ + +#define Y2_IS_ALL_MSK 0xef001f1fUL /* All Interrupt bits */ + +/* Yukon and Genesis */ /* B0_HWE_ISRC 32 bit HW Error Interrupt Src Reg */ /* B0_HWE_IMSK 32 bit HW Error Interrupt Mask Reg */ /* B2_IRQM_HWE_MSK 32 bit IRQ Moderation HW Error Mask */ #define IS_ERR_MSK 0x00000fffL /* All Error bits */ - /* Bit 31..14: reserved */ + /* Bit 31..14: reserved */ #define IS_IRQ_TIST_OV BIT_13 /* Time Stamp Timer Overflow (YUKON only) */ #define IS_IRQ_SENSOR BIT_12 /* IRQ from Sensor (YUKON only) */ #define IS_IRQ_MST_ERR BIT_11 /* IRQ master error detected */ @@ -900,6 +1216,43 @@ #define IS_R1_PAR_ERR BIT_1 /* Queue R1 Parity Error */ #define IS_R2_PAR_ERR BIT_0 /* Queue R2 Parity Error */ + /* Yukon-2 */ +/* B0_HWE_ISRC 32 bit HW Error Interrupt Src Reg */ +/* B0_HWE_IMSK 32 bit HW Error Interrupt Mask Reg */ +/* B2_IRQM_HWE_MSK 32 bit IRQ Moderation HW Error Mask */ + /* Bit: 31..30 reserved */ +#define Y2_IS_TIST_OV BIT_29 /* Time Stamp Timer overflow interrupt */ +#define Y2_IS_SENSOR BIT_28 /* Sensor interrupt */ +#define Y2_IS_MST_ERR BIT_27 /* Master error interrupt */ +#define Y2_IS_IRQ_STAT BIT_26 /* Status exception interrupt */ +#define Y2_IS_PCI_EXP BIT_25 /* PCI-Express interrupt */ +#define Y2_IS_PCI_NEXP BIT_24 /* PCI-Express error similar to PCI error */ + /* Bit: 23..14 reserved */ + /* Link 2 */ +#define Y2_IS_PAR_RD2 BIT_13 /* Read RAM parity error interrupt */ +#define Y2_IS_PAR_WR2 BIT_12 /* Write RAM parity error interrupt */ +#define Y2_IS_PAR_MAC2 BIT_11 /* MAC hardware fault interrupt */ +#define Y2_IS_PAR_RX2 BIT_10 /* Parity Error Rx Queue 2 */ +#define Y2_IS_TCP_TXS2 BIT_9 /* TCP length mismatch sync Tx queue IRQ */ +#define Y2_IS_TCP_TXA2 BIT_8 /* TCP length mismatch async Tx queue IRQ */ + /* Bit: 9.. 6 reserved */ + /* Link 1 */ +#define Y2_IS_PAR_RD1 BIT_5 /* Read RAM parity error interrupt */ +#define Y2_IS_PAR_WR1 BIT_4 /* Write RAM parity error interrupt */ +#define Y2_IS_PAR_MAC1 BIT_3 /* MAC hardware fault interrupt */ +#define Y2_IS_PAR_RX1 BIT_2 /* Parity Error Rx Queue 1 */ +#define Y2_IS_TCP_TXS1 BIT_1 /* TCP length mismatch sync Tx queue IRQ */ +#define Y2_IS_TCP_TXA1 BIT_0 /* TCP length mismatch async Tx queue IRQ */ + +#define Y2_HWE_L1_MASK (Y2_IS_PAR_RD1 | Y2_IS_PAR_WR1 | Y2_IS_PAR_MAC1 |\ + Y2_IS_PAR_RX1 | Y2_IS_TCP_TXS1| Y2_IS_TCP_TXA1) +#define Y2_HWE_L2_MASK (Y2_IS_PAR_RD2 | Y2_IS_PAR_WR2 | Y2_IS_PAR_MAC2 |\ + Y2_IS_PAR_RX2 | Y2_IS_TCP_TXS2| Y2_IS_TCP_TXA2) + +#define Y2_HWE_ALL_MSK (Y2_IS_TIST_OV | /* Y2_IS_SENSOR | */ Y2_IS_MST_ERR |\ + Y2_IS_IRQ_STAT | Y2_IS_PCI_EXP | Y2_IS_PCI_NEXP |\ + Y2_HWE_L1_MASK | Y2_HWE_L2_MASK) + /* B2_CONN_TYP 8 bit Connector type */ /* B2_PMD_TYP 8 bit PMD type */ /* Values of connector and PMD type comply to SysKonnect internal std */ @@ -908,19 +1261,65 @@ #define CFG_CHIP_R_MSK (0xf<<4) /* Bit 7.. 4: Chip Revision */ /* Bit 3.. 2: reserved */ #define CFG_DIS_M2_CLK BIT_1S /* Disable Clock for 2nd MAC */ -#define CFG_SNG_MAC BIT_0S /* MAC Config: 0=2 MACs / 1=1 MAC*/ +#define CFG_SNG_MAC BIT_0S /* MAC Config: 0 = 2 MACs; 1 = 1 MAC */ -/* B2_CHIP_ID 8 bit Chip Identification Number */ +/* B2_CHIP_ID 8 bit Chip Identification Number */ #define CHIP_ID_GENESIS 0x0a /* Chip ID for GENESIS */ #define CHIP_ID_YUKON 0xb0 /* Chip ID for YUKON */ #define CHIP_ID_YUKON_LITE 0xb1 /* Chip ID for YUKON-Lite (Rev. A1-A3) */ #define CHIP_ID_YUKON_LP 0xb2 /* Chip ID for YUKON-LP */ +#define CHIP_ID_YUKON_XL 0xb3 /* Chip ID for YUKON-2 XL */ +#define CHIP_ID_YUKON_EC 0xb6 /* Chip ID for YUKON-2 EC */ +#define CHIP_ID_YUKON_FE 0xb7 /* Chip ID for YUKON-2 FE */ #define CHIP_REV_YU_LITE_A1 3 /* Chip Rev. for YUKON-Lite A1,A2 */ #define CHIP_REV_YU_LITE_A3 7 /* Chip Rev. for YUKON-Lite A3 */ +#define CHIP_REV_YU_EC_A1 0 /* Chip Rev. for Yukon-EC A1/A0 */ +#define CHIP_REV_YU_EC_A2 1 /* Chip Rev. for Yukon-EC A2 */ +#define CHIP_REV_YU_EC_A3 2 /* Chip Rev. for Yukon-EC A3 */ + +/* B2_Y2_CLK_GATE 8 bit Clock Gating (Yukon-2 only) */ +#define Y2_STATUS_LNK2_INAC BIT_7S /* Status Link 2 inactiv (0 = activ) */ +#define Y2_CLK_GAT_LNK2_DIS BIT_6S /* Disable clock gating Link 2 */ +#define Y2_COR_CLK_LNK2_DIS BIT_5S /* Disable Core clock Link 2 */ +#define Y2_PCI_CLK_LNK2_DIS BIT_4S /* Disable PCI clock Link 2 */ +#define Y2_STATUS_LNK1_INAC BIT_3S /* Status Link 1 inactiv (0 = activ) */ +#define Y2_CLK_GAT_LNK1_DIS BIT_2S /* Disable clock gating Link 1 */ +#define Y2_COR_CLK_LNK1_DIS BIT_1S /* Disable Core clock Link 1 */ +#define Y2_PCI_CLK_LNK1_DIS BIT_0S /* Disable PCI clock Link 1 */ + +/* B2_Y2_HW_RES 8 bit HW Resources (Yukon-2 only) */ + /* Bit 7.. 5: reserved */ +#define CFG_LED_MODE_MSK (7<<2) /* Bit 4.. 2: LED Mode Mask */ +#define CFG_LINK_2_AVAIL BIT_1S /* Link 2 available */ +#define CFG_LINK_1_AVAIL BIT_0S /* Link 1 available */ + +#define CFG_LED_MODE(x) (((x) & CFG_LED_MODE_MSK) >> 2) +#define CFG_DUAL_MAC_MSK (CFG_LINK_2_AVAIL | CFG_LINK_1_AVAIL) + +#define CFG_LED_SING_ACT_LNK 0 /* Single LED ACT/LNK mode */ +#define CFG_LED_DUAL_ACT_LNK 1 /* Dual LED ACT/LNK mode */ + +/* B2_E_3 8 bit lower 4 bits used for HW self test result */ +#define B2_E3_RES_MASK 0x0f + /* B2_FAR 32 bit Flash-Prom Addr Reg/Cnt */ -#define FAR_ADDR 0x1ffffL /* Bit 16.. 0: FPROM Address mask */ +#define FAR_ADDR 0x1ffffL /* Bit 16.. 0: FPROM Address Mask */ + +/* B2_Y2_CLK_CTRL 32 bit Core Clock Frequency Control Register (Yukon-2/EC) */ + /* Bit 31..24: reserved */ +/* Yukon-EC/FE */ +#define Y2_CLK_DIV_VAL_MSK (0xffL<<16) /* Bit 23..16: Clock Divisor Value */ +#define Y2_CLK_DIV_VAL(x) (SHIFT16(x) & Y2_CLK_DIV_VAL_MSK) +/* Yukon-2 */ +#define Y2_CLK_DIV_VAL2_MSK (7L<<21) /* Bit 23..21: Clock Divisor Value */ +#define Y2_CLK_SELECT2_MSK (0x1fL<<16) /* Bit 20..16: Clock Select */ +#define Y2_CLK_DIV_VAL_2(x) (SHIFT21(x) & Y2_CLK_DIV_VAL2_MSK) +#define Y2_CLK_SEL_VAL_2(x) (SHIFT16(x) & Y2_CLK_SELECT2_MSK) + /* Bit 15.. 2: reserved */ +#define Y2_CLK_DIV_ENA BIT_1S /* Enable Core Clock Division */ +#define Y2_CLK_DIV_DIS BIT_0S /* Disable Core Clock Division */ /* B2_LD_CTRL 8 bit EPROM loader control register */ /* Bits are currently reserved */ @@ -960,9 +1359,6 @@ #define DPT_START BIT_1S /* Start Descriptor Poll Timer */ #define DPT_STOP BIT_0S /* Stop Descriptor Poll Timer */ -/* B2_E_3 8 bit lower 4 bits used for HW self test result */ -#define B2_E3_RES_MASK 0x0f - /* B2_TST_CTRL1 8 bit Test Control Register 1 */ #define TST_FRC_DPERR_MR BIT_7S /* force DATAPERR on MST RD */ #define TST_FRC_DPERR_MW BIT_6S /* force DATAPERR on MST WR */ @@ -982,7 +1378,7 @@ #define TST_FRC_APERR_2M64 BIT_0S /* AddrPERR on 2. phase */ /* B2_GP_IO 32 bit General Purpose I/O Register */ - /* Bit 31..26: reserved */ + /* Bit 31..26: reserved */ #define GP_DIR_9 BIT_25 /* IO_9 direct, 0=In/1=Out */ #define GP_DIR_8 BIT_24 /* IO_8 direct, 0=In/1=Out */ #define GP_DIR_7 BIT_23 /* IO_7 direct, 0=In/1=Out */ @@ -1032,10 +1428,8 @@ #define I2C_DATA BIT_1S /* I2C Data Port */ #define I2C_CLK BIT_0S /* I2C Clock Port */ -/* - * I2C Address - */ -#define I2C_SENS_ADDR LM80_ADDR /* I2C Sensor Address, (Volt and Temp)*/ +/* I2C Address */ +#define I2C_SENS_ADDR LM80_ADDR /* I2C Sensor Address (Volt and Temp) */ /* B2_BSC_CTRL 8 bit Blink Source Counter Control */ @@ -1052,16 +1446,20 @@ #define BSC_T_OFF BIT_1S /* Test mode off */ #define BSC_T_STEP BIT_0S /* Test step */ +/* Y2_PEX_PHY_ADDR/DATA PEX PHY address and data reg (Yukon-2 only) */ +#define PEX_RD_ACCESS BIT_31 /* Access Mode Read = 1, Write = 0 */ +#define PEX_DB_ACCESS BIT_30 /* Access to debug register */ + /* B3_RAM_ADDR 32 bit RAM Address, to read or write */ /* Bit 31..19: reserved */ #define RAM_ADR_RAN 0x0007ffffL /* Bit 18.. 0: RAM Address Range */ /* RAM Interface Registers */ -/* B3_RI_CTRL 16 bit RAM Iface Control Register */ +/* B3_RI_CTRL 16 bit RAM Interface Control Register */ /* Bit 15..10: reserved */ -#define RI_CLR_RD_PERR BIT_9S /* Clear IRQ RAM Read Parity Err */ -#define RI_CLR_WR_PERR BIT_8S /* Clear IRQ RAM Write Parity Err*/ +#define RI_CLR_RD_PERR BIT_9S /* Clear IRQ RAM Read Parity Err */ +#define RI_CLR_WR_PERR BIT_8S /* Clear IRQ RAM Write Parity Err */ /* Bit 7.. 2: reserved */ #define RI_RST_CLR BIT_1S /* Clear RAM Interface Reset */ #define RI_RST_SET BIT_0S /* Set RAM Interface Reset */ @@ -1171,7 +1569,7 @@ /* Bit 31..16: reserved */ #define BC_MAX 0xffff /* Bit 15.. 0: Byte counter */ -/* BMU Control Status Registers */ +/* BMU Control / Status Registers (Yukon and Genesis) */ /* B0_R1_CSR 32 bit BMU Ctrl/Stat Rx Queue 1 */ /* B0_R2_CSR 32 bit BMU Ctrl/Stat Rx Queue 2 */ /* B0_XA1_CSR 32 bit BMU Ctrl/Stat Sync Tx Queue 1 */ @@ -1212,6 +1610,41 @@ CSR_SV_RUN | CSR_DREAD_RUN | CSR_DWRITE_RUN |\ CSR_TRANS_RUN) +/* Rx BMU Control / Status Registers (Yukon-2) */ +#define BMU_IDLE BIT_31 /* BMU Idle State */ +#define BMU_RX_TCP_PKT BIT_30 /* Rx TCP Packet (when RSS Hash enabled) */ +#define BMU_RX_IP_PKT BIT_29 /* Rx IP Packet (when RSS Hash enabled) */ + /* Bit 28..16: reserved */ +#define BMU_ENA_RX_RSS_HASH BIT_15 /* Enable Rx RSS Hash */ +#define BMU_DIS_RX_RSS_HASH BIT_14 /* Disable Rx RSS Hash */ +#define BMU_ENA_RX_CHKSUM BIT_13 /* Enable Rx TCP/IP Checksum Check */ +#define BMU_DIS_RX_CHKSUM BIT_12 /* Disable Rx TCP/IP Checksum Check */ +#define BMU_CLR_IRQ_PAR BIT_11 /* Clear IRQ on Parity errors (Rx) */ +#define BMU_CLR_IRQ_TCP BIT_11 /* Clear IRQ on TCP segmen. error (Tx) */ +#define BMU_CLR_IRQ_CHK BIT_10 /* Clear IRQ Check */ +#define BMU_STOP BIT_9 /* Stop Rx/Tx Queue */ +#define BMU_START BIT_8 /* Start Rx/Tx Queue */ +#define BMU_FIFO_OP_ON BIT_7 /* FIFO Operational On */ +#define BMU_FIFO_OP_OFF BIT_6 /* FIFO Operational Off */ +#define BMU_FIFO_ENA BIT_5 /* Enable FIFO */ +#define BMU_FIFO_RST BIT_4 /* Reset FIFO */ +#define BMU_OP_ON BIT_3 /* BMU Operational On */ +#define BMU_OP_OFF BIT_2 /* BMU Operational Off */ +#define BMU_RST_CLR BIT_1 /* Clear BMU Reset (Enable) */ +#define BMU_RST_SET BIT_0 /* Set BMU Reset */ + +#define BMU_CLR_RESET (BMU_FIFO_RST | BMU_OP_OFF | BMU_RST_CLR) +#define BMU_OPER_INIT (BMU_CLR_IRQ_PAR | BMU_CLR_IRQ_CHK | BMU_START | \ + BMU_FIFO_ENA | BMU_OP_ON) + +/* Tx BMU Control / Status Registers (Yukon-2) */ + /* Bit 31: same as for Rx */ + /* Bit 30..14: reserved */ +#define BMU_TX_IPIDINCR_ON BIT_13 /* Enable IP ID Increment */ +#define BMU_TX_IPIDINCR_OFF BIT_12 /* Disable IP ID Increment */ +#define BMU_TX_CLR_IRQ_TCP BIT_11 /* Clear IRQ on TCP segm. length mism. */ + /* Bit 10..0: same as for Rx */ + /* Q_F 32 bit Flag Register */ /* Bit 31..28: reserved */ #define F_ALM_FULL BIT_27 /* Rx FIFO: almost full */ @@ -1260,6 +1693,13 @@ /* Bit 3: reserved */ #define T3_VRAM_MSK 7 /* Bit 2.. 0: Virtual RAM Buffer Address */ +/* Queue Prefetch Unit Offsets, use Y2_PREF_Q_ADDR() to address (Yukon-2 only)*/ +/* PREF_UNIT_CTRL_REG 32 bit Prefetch Control register */ +#define PREF_UNIT_OP_ON BIT_3 /* prefetch unit operational */ +#define PREF_UNIT_OP_OFF BIT_2 /* prefetch unit not operational */ +#define PREF_UNIT_RST_CLR BIT_1 /* Clear Prefetch Unit Reset */ +#define PREF_UNIT_RST_SET BIT_0 /* Set Prefetch Unit Reset */ + /* RAM Buffer Register Offsets, use RB_ADDR(Queue, Offs) to access */ /* RB_START 32 bit RAM Buffer Start Address */ /* RB_END 32 bit RAM Buffer End Address */ @@ -1275,24 +1715,24 @@ #define RB_MSK 0x0007ffff /* Bit 18.. 0: RAM Buffer Pointer Bits */ /* RB_TST2 8 bit RAM Buffer Test Register 2 */ - /* Bit 7.. 4: reserved */ -#define RB_PC_DEC BIT_3S /* Packet Counter Decrem */ + /* Bit 7.. 4: reserved */ +#define RB_PC_DEC BIT_3S /* Packet Counter Decrement */ #define RB_PC_T_ON BIT_2S /* Packet Counter Test On */ -#define RB_PC_T_OFF BIT_1S /* Packet Counter Tst Off */ -#define RB_PC_INC BIT_0S /* Packet Counter Increm */ +#define RB_PC_T_OFF BIT_1S /* Packet Counter Test Off */ +#define RB_PC_INC BIT_0S /* Packet Counter Increment */ /* RB_TST1 8 bit RAM Buffer Test Register 1 */ /* Bit 7: reserved */ #define RB_WP_T_ON BIT_6S /* Write Pointer Test On */ #define RB_WP_T_OFF BIT_5S /* Write Pointer Test Off */ -#define RB_WP_INC BIT_4S /* Write Pointer Increm */ +#define RB_WP_INC BIT_4S /* Write Pointer Increment */ /* Bit 3: reserved */ #define RB_RP_T_ON BIT_2S /* Read Pointer Test On */ #define RB_RP_T_OFF BIT_1S /* Read Pointer Test Off */ -#define RB_RP_DEC BIT_0S /* Read Pointer Decrement */ +#define RB_RP_INC BIT_0S /* Read Pointer Increment */ /* RB_CTRL 8 bit RAM Buffer Control Register */ - /* Bit 7.. 6: reserved */ + /* Bit 7.. 6: reserved */ #define RB_ENA_STFWD BIT_5S /* Enable Store & Forward */ #define RB_DIS_STFWD BIT_4S /* Disable Store & Forward */ #define RB_ENA_OP_MD BIT_3S /* Enable Operation Mode */ @@ -1300,16 +1740,31 @@ #define RB_RST_CLR BIT_1S /* Clear RAM Buf STM Reset */ #define RB_RST_SET BIT_0S /* Set RAM Buf STM Reset */ +/* Yukon-2 */ + /* Bit 31..20: reserved */ +#define RB_CNT_DOWN BIT_19 /* Packet Counter Decrement */ +#define RB_CNT_TST_ON BIT_18 /* Packet Counter Test On */ +#define RB_CNT_TST_OFF BIT_17 /* Packet Counter Test Off */ +#define RB_CNT_UP BIT_16 /* Packet Counter Increment */ + /* Bit 15: reserved */ +#define RB_WP_TST_ON BIT_14 /* Write Pointer Test On */ +#define RB_WP_TST_OFF BIT_13 /* Write Pointer Test Off */ +#define RB_WP_UP BIT_12 /* Write Pointer Increment */ + /* Bit 11: reserved */ +#define RB_RP_TST_ON BIT_10 /* Read Pointer Test On */ +#define RB_RP_TST_OFF BIT_9 /* Read Pointer Test Off */ +#define RB_RP_UP BIT_8 /* Read Pointer Increment */ + /* Receive and Transmit MAC FIFO Registers (GENESIS only) */ /* RX_MFF_EA 32 bit Receive MAC FIFO End Address */ -/* RX_MFF_WP 32 bit Receive MAC FIFO Write Pointer */ +/* RX_MFF_WP 32 bit Receive MAC FIFO Write Pointer */ /* RX_MFF_RP 32 bit Receive MAC FIFO Read Pointer */ /* RX_MFF_PC 32 bit Receive MAC FIFO Packet Counter */ /* RX_MFF_LEV 32 bit Receive MAC FIFO Level */ /* TX_MFF_EA 32 bit Transmit MAC FIFO End Address */ -/* TX_MFF_WP 32 bit Transmit MAC FIFO Write Pointer */ +/* TX_MFF_WP 32 bit Transmit MAC FIFO Write Pointer */ /* TX_MFF_WSP 32 bit Transmit MAC FIFO WR Shadow Pointer */ /* TX_MFF_RP 32 bit Transmit MAC FIFO Read Pointer */ /* TX_MFF_PC 32 bit Transmit MAC FIFO Packet Cnt */ @@ -1359,9 +1814,9 @@ /* RX_MFF_TST2 8 bit Receive MAC FIFO Test Register 2 */ /* TX_MFF_TST2 8 bit Transmit MAC FIFO Test Register 2 */ /* Bit 7: reserved */ -#define MFF_WSP_T_ON BIT_6S /* Tx: Write Shadow Ptr TestOn */ -#define MFF_WSP_T_OFF BIT_5S /* Tx: Write Shadow Ptr TstOff */ -#define MFF_WSP_INC BIT_4S /* Tx: Write Shadow Ptr Increment */ +#define MFF_WSP_T_ON BIT_6S /* Tx: Write Shadow Pointer Test On */ +#define MFF_WSP_T_OFF BIT_5S /* Tx: Write Shadow Pointer Test Off */ +#define MFF_WSP_INC BIT_4S /* Tx: Write Shadow Pointer Increment */ #define MFF_PC_DEC BIT_3S /* Packet Counter Decrement */ #define MFF_PC_T_ON BIT_2S /* Packet Counter Test On */ #define MFF_PC_T_OFF BIT_1S /* Packet Counter Test Off */ @@ -1372,7 +1827,7 @@ /* Bit 7: reserved */ #define MFF_WP_T_ON BIT_6S /* Write Pointer Test On */ #define MFF_WP_T_OFF BIT_5S /* Write Pointer Test Off */ -#define MFF_WP_INC BIT_4S /* Write Pointer Increm */ +#define MFF_WP_INC BIT_4S /* Write Pointer Increment */ /* Bit 3: reserved */ #define MFF_RP_T_ON BIT_2S /* Read Pointer Test On */ #define MFF_RP_T_OFF BIT_1S /* Read Pointer Test Off */ @@ -1391,12 +1846,16 @@ /* RX_LED_CTRL 8 bit Receive LED Cnt Control Reg */ /* TX_LED_CTRL 8 bit Transmit LED Cnt Control Reg */ + /* Bit 7.. 3: reserved */ +#define LED_START BIT_2S /* Start Counter */ +#define LED_STOP BIT_1S /* Stop Counter */ +#define LED_STATE BIT_0S /* Rx/Tx: LED State, 1=LED On */ + /* LNK_SYNC_CTRL 8 bit Link Sync Cnt Control Register */ /* Bit 7.. 3: reserved */ -#define LED_START BIT_2S /* Start Timer */ -#define LED_STOP BIT_1S /* Stop Timer */ -#define LED_STATE BIT_0S /* Rx/Tx: LED State, 1=LED on */ -#define LED_CLR_IRQ BIT_0S /* Lnk: Clear Link IRQ */ +#define LNK_START BIT_2S /* Start Counter */ +#define LNK_STOP BIT_1S /* Stop Counter */ +#define LNK_CLR_IRQ BIT_0S /* Clear Link IRQ */ /* RX_LED_TST 8 bit Receive LED Cnt Test Register */ /* TX_LED_TST 8 bit Transmit LED Cnt Test Register */ @@ -1407,86 +1866,138 @@ #define LED_T_STEP BIT_0S /* LED Counter Step */ /* LNK_LED_REG 8 bit Link LED Register */ - /* Bit 7.. 6: reserved */ + /* Bit 7.. 6: reserved */ #define LED_BLK_ON BIT_5S /* Link LED Blinking On */ #define LED_BLK_OFF BIT_4S /* Link LED Blinking Off */ #define LED_SYNC_ON BIT_3S /* Use Sync Wire to switch LED */ #define LED_SYNC_OFF BIT_2S /* Disable Sync Wire Input */ -#define LED_ON BIT_1S /* switch LED on */ -#define LED_OFF BIT_0S /* switch LED off */ +#define LED_ON BIT_1S /* Switch LED On */ +#define LED_OFF BIT_0S /* Switch LED Off */ /* Receive and Transmit GMAC FIFO Registers (YUKON only) */ /* RX_GMF_EA 32 bit Rx GMAC FIFO End Address */ /* RX_GMF_AF_THR 32 bit Rx GMAC FIFO Almost Full Thresh. */ -/* RX_GMF_WP 32 bit Rx GMAC FIFO Write Pointer */ -/* RX_GMF_WLEV 32 bit Rx GMAC FIFO Write Level */ -/* RX_GMF_RP 32 bit Rx GMAC FIFO Read Pointer */ -/* RX_GMF_RLEV 32 bit Rx GMAC FIFO Read Level */ +/* RX_GMF_WP 32 bit Rx GMAC FIFO Write Pointer */ +/* RX_GMF_WLEV 32 bit Rx GMAC FIFO Write Level */ +/* RX_GMF_RP 32 bit Rx GMAC FIFO Read Pointer */ +/* RX_GMF_RLEV 32 bit Rx GMAC FIFO Read Level */ /* TX_GMF_EA 32 bit Tx GMAC FIFO End Address */ /* TX_GMF_AE_THR 32 bit Tx GMAC FIFO Almost Empty Thresh.*/ -/* TX_GMF_WP 32 bit Tx GMAC FIFO Write Pointer */ -/* TX_GMF_WSP 32 bit Tx GMAC FIFO Write Shadow Ptr. */ -/* TX_GMF_WLEV 32 bit Tx GMAC FIFO Write Level */ -/* TX_GMF_RP 32 bit Tx GMAC FIFO Read Pointer */ -/* TX_GMF_RSTP 32 bit Tx GMAC FIFO Restart Pointer */ -/* TX_GMF_RLEV 32 bit Tx GMAC FIFO Read Level */ +/* TX_GMF_WP 32 bit Tx GMAC FIFO Write Pointer */ +/* TX_GMF_WSP 32 bit Tx GMAC FIFO Write Shadow Pointer */ +/* TX_GMF_WLEV 32 bit Tx GMAC FIFO Write Level */ +/* TX_GMF_RP 32 bit Tx GMAC FIFO Read Pointer */ +/* TX_GMF_RSTP 32 bit Tx GMAC FIFO Restart Pointer */ +/* TX_GMF_RLEV 32 bit Tx GMAC FIFO Read Level */ /* RX_GMF_CTRL_T 32 bit Rx GMAC FIFO Control/Test */ - /* Bits 31..15: reserved */ -#define GMF_WP_TST_ON BIT_14 /* Write Pointer Test On */ -#define GMF_WP_TST_OFF BIT_13 /* Write Pointer Test Off */ -#define GMF_WP_STEP BIT_12 /* Write Pointer Step/Increment */ + /* Bit 31..28 reserved */ +#define RX_TRUNC_ON BIT_27 /* enable packet truncation */ +#define RX_TRUNC_OFF BIT_26 /* disable packet truncation */ +#define RX_VLAN_STRIP_ON BIT_25 /* enable VLAN stripping */ +#define RX_VLAN_STRIP_OFF BIT_24 /* disable VLAN stripping */ + /* Bit 23..15 reserved */ +#define GMF_WP_TST_ON BIT_14 /* Write Pointer Test On */ +#define GMF_WP_TST_OFF BIT_13 /* Write Pointer Test Off */ +#define GMF_WP_STEP BIT_12 /* Write Pointer Step/Increment */ /* Bit 11: reserved */ -#define GMF_RP_TST_ON BIT_10 /* Read Pointer Test On */ -#define GMF_RP_TST_OFF BIT_9 /* Read Pointer Test Off */ -#define GMF_RP_STEP BIT_8 /* Read Pointer Step/Increment */ -#define GMF_RX_F_FL_ON BIT_7 /* Rx FIFO Flush Mode On */ -#define GMF_RX_F_FL_OFF BIT_6 /* Rx FIFO Flush Mode Off */ -#define GMF_CLI_RX_FO BIT_5 /* Clear IRQ Rx FIFO Overrun */ -#define GMF_CLI_RX_FC BIT_4 /* Clear IRQ Rx Frame Complete */ -#define GMF_OPER_ON BIT_3 /* Operational Mode On */ -#define GMF_OPER_OFF BIT_2 /* Operational Mode Off */ -#define GMF_RST_CLR BIT_1 /* Clear GMAC FIFO Reset */ -#define GMF_RST_SET BIT_0 /* Set GMAC FIFO Reset */ - -/* TX_GMF_CTRL_T 32 bit Tx GMAC FIFO Control/Test */ - /* Bits 31..19: reserved */ -#define GMF_WSP_TST_ON BIT_18 /* Write Shadow Pointer Test On */ -#define GMF_WSP_TST_OFF BIT_17 /* Write Shadow Pointer Test Off */ -#define GMF_WSP_STEP BIT_16 /* Write Shadow Pointer Step/Increment */ - /* Bits 15..7: same as for RX_GMF_CTRL_T */ -#define GMF_CLI_TX_FU BIT_6 /* Clear IRQ Tx FIFO Underrun */ -#define GMF_CLI_TX_FC BIT_5 /* Clear IRQ Tx Frame Complete */ -#define GMF_CLI_TX_PE BIT_4 /* Clear IRQ Tx Parity Error */ +#define GMF_RP_TST_ON BIT_10 /* Read Pointer Test On */ +#define GMF_RP_TST_OFF BIT_9 /* Read Pointer Test Off */ +#define GMF_RP_STEP BIT_8 /* Read Pointer Step/Increment */ +#define GMF_RX_F_FL_ON BIT_7 /* Rx FIFO Flush Mode On */ +#define GMF_RX_F_FL_OFF BIT_6 /* Rx FIFO Flush Mode Off */ +#define GMF_CLI_RX_FO BIT_5 /* Clear IRQ Rx FIFO Overrun */ +#define GMF_CLI_RX_FC BIT_4 /* Clear IRQ Rx Frame Complete */ +#define GMF_OPER_ON BIT_3 /* Operational Mode On */ +#define GMF_OPER_OFF BIT_2 /* Operational Mode Off */ +#define GMF_RST_CLR BIT_1 /* Clear GMAC FIFO Reset */ +#define GMF_RST_SET BIT_0 /* Set GMAC FIFO Reset */ + +/* TX_GMF_CTRL_T 32 bit Tx GMAC FIFO Control/Test (YUKON and Yukon-2) */ + /* Bits 31..26: reserved */ +#define TX_VLAN_TAG_ON BIT_25 /* enable VLAN tagging */ +#define TX_VLAN_TAG_OFF BIT_24 /* disable VLAN tagging */ + /* Bits 23..19: reserved */ +#define GMF_WSP_TST_ON BIT_18 /* Write Shadow Pointer Test On */ +#define GMF_WSP_TST_OFF BIT_17 /* Write Shadow Pointer Test Off */ +#define GMF_WSP_STEP BIT_16 /* Write Shadow Pointer Step/Increment */ + /* Bits 15..8: same as for RX_GMF_CTRL_T */ + /* Bit 7: reserved */ +#define GMF_CLI_TX_FU BIT_6 /* Clear IRQ Tx FIFO Underrun */ +#define GMF_CLI_TX_FC BIT_5 /* Clear IRQ Tx Frame Complete */ +#define GMF_CLI_TX_PE BIT_4 /* Clear IRQ Tx Parity Error */ /* Bits 3..0: same as for RX_GMF_CTRL_T */ #define GMF_RX_CTRL_DEF (GMF_OPER_ON | GMF_RX_F_FL_ON) #define GMF_TX_CTRL_DEF GMF_OPER_ON +#define RX_GMF_AF_THR_MIN 0x0c /* Rx GMAC FIFO Almost Full Thresh. min. */ #define RX_GMF_FL_THR_DEF 0x0a /* Rx GMAC FIFO Flush Threshold default */ /* GMAC_TI_ST_CTRL 8 bit Time Stamp Timer Ctrl Reg (YUKON only) */ - /* Bit 7.. 3: reserved */ -#define GMT_ST_START BIT_2S /* Start Time Stamp Timer */ -#define GMT_ST_STOP BIT_1S /* Stop Time Stamp Timer */ -#define GMT_ST_CLR_IRQ BIT_0S /* Clear Time Stamp Timer IRQ */ - + /* Bit 7.. 3: reserved */ +#define GMT_ST_START BIT_2S /* Start Time Stamp Timer */ +#define GMT_ST_STOP BIT_1S /* Stop Time Stamp Timer */ +#define GMT_ST_CLR_IRQ BIT_0S /* Clear Time Stamp Timer IRQ */ + +/* POLL_CTRL 32 bit Polling Unit control register (Yukon-2 only) */ + /* Bit 31.. 6: reserved */ +#define PC_CLR_IRQ_CHK BIT_5 /* Clear IRQ Check */ +#define PC_POLL_RQ BIT_4 /* Poll Request Start */ +#define PC_POLL_OP_ON BIT_3 /* Operational Mode On */ +#define PC_POLL_OP_OFF BIT_2 /* Operational Mode Off */ +#define PC_POLL_RST_CLR BIT_1 /* Clear Polling Unit Reset (Enable) */ +#define PC_POLL_RST_SET BIT_0 /* Set Polling Unit Reset */ + + +/* The bit definition of the following registers is still missing! */ +/* B28_Y2_SMB_CONFIG 32 bit ASF SMBus Config Register */ +/* B28_Y2_SMB_CSD_REG 32 bit ASF SMB Control/Status/Data */ +/* B28_Y2_ASF_IRQ_V_BASE 32 bit ASF IRQ Vector Base */ + +/* B28_Y2_ASF_STAT_CMD 32 bit ASF Status and Command Reg */ +/* This register is used by the host driver software */ + /* Bit 31:5 reserved */ +#define Y2_ASF_OS_PRES BIT_4S /* ASF operation system present */ +#define Y2_ASF_RESET BIT_3S /* ASF system in reset state */ +#define Y2_ASF_RUNNING BIT_2S /* ASF system operational */ +#define Y2_ASF_CLR_HSTI BIT_1S /* Clear ASF IRQ */ +#define Y2_ASF_IRQ BIT_0S /* Issue an IRQ to ASF system */ + +#define Y2_ASF_UC_STATE (3<<2) /* ASF uC State */ +#define Y2_ASF_CLK_HALT 0 /* ASF system clock stopped */ + +/* B28_Y2_ASF_HOST_COM 32 bit ASF Host Communication Reg */ +/* This register is used by the ASF firmware */ + /* Bit 31:2 reserved */ +#define Y2_ASF_CLR_ASFI BIT_1 /* Clear host IRQ */ +#define Y2_ASF_HOST_IRQ BIT_0 /* Issue an IRQ to HOST system */ + + +/* STAT_CTRL 32 bit Status BMU control register (Yukon-2 only) */ + /* Bit 7.. 5: reserved */ +#define SC_STAT_CLR_IRQ BIT_4 /* Status Burst IRQ clear */ +#define SC_STAT_OP_ON BIT_3 /* Operational Mode On */ +#define SC_STAT_OP_OFF BIT_2 /* Operational Mode Off */ +#define SC_STAT_RST_CLR BIT_1 /* Clear Status Unit Reset (Enable) */ +#define SC_STAT_RST_SET BIT_0 /* Set Status Unit Reset */ + /* GMAC_CTRL 32 bit GMAC Control Reg (YUKON only) */ /* Bits 31.. 8: reserved */ -#define GMC_H_BURST_ON BIT_7 /* Half Duplex Burst Mode On */ -#define GMC_H_BURST_OFF BIT_6 /* Half Duplex Burst Mode Off */ -#define GMC_F_LOOPB_ON BIT_5 /* FIFO Loopback On */ -#define GMC_F_LOOPB_OFF BIT_4 /* FIFO Loopback Off */ -#define GMC_PAUSE_ON BIT_3 /* Pause On */ -#define GMC_PAUSE_OFF BIT_2 /* Pause Off */ -#define GMC_RST_CLR BIT_1 /* Clear GMAC Reset */ -#define GMC_RST_SET BIT_0 /* Set GMAC Reset */ +#define GMC_H_BURST_ON BIT_7 /* Half Duplex Burst Mode On */ +#define GMC_H_BURST_OFF BIT_6 /* Half Duplex Burst Mode Off */ +#define GMC_F_LOOPB_ON BIT_5 /* FIFO Loopback On */ +#define GMC_F_LOOPB_OFF BIT_4 /* FIFO Loopback Off */ +#define GMC_PAUSE_ON BIT_3 /* Pause On */ +#define GMC_PAUSE_OFF BIT_2 /* Pause Off */ +#define GMC_RST_CLR BIT_1 /* Clear GMAC Reset */ +#define GMC_RST_SET BIT_0 /* Set GMAC Reset */ /* GPHY_CTRL 32 bit GPHY Control Reg (YUKON only) */ /* Bits 31..29: reserved */ #define GPC_SEL_BDT BIT_28 /* Select Bi-Dir. Transfer for MDC/MDIO */ -#define GPC_INT_POL_HI BIT_27 /* IRQ Polarity is Active HIGH */ +#define GPC_INT_POL BIT_27 /* IRQ Polarity is Active Low */ #define GPC_75_OHM BIT_26 /* Use 75 Ohm Termination instead of 50 */ #define GPC_DIS_FC BIT_25 /* Disable Automatic Fiber/Copper Detection */ #define GPC_DIS_SLEEP BIT_24 /* Disable Energy Detect */ @@ -1540,14 +2051,14 @@ /* GMAC_IRQ_SRC 8 bit GMAC Interrupt Source Reg (YUKON only) */ /* GMAC_IRQ_MSK 8 bit GMAC Interrupt Mask Reg (YUKON only) */ -#define GM_IS_TX_CO_OV BIT_5 /* Transmit Counter Overflow IRQ */ -#define GM_IS_RX_CO_OV BIT_4 /* Receive Counter Overflow IRQ */ -#define GM_IS_TX_FF_UR BIT_3 /* Transmit FIFO Underrun */ -#define GM_IS_TX_COMPL BIT_2 /* Frame Transmission Complete */ -#define GM_IS_RX_FF_OR BIT_1 /* Receive FIFO Overrun */ -#define GM_IS_RX_COMPL BIT_0 /* Frame Reception Complete */ +#define GM_IS_RX_CO_OV BIT_5S /* Receive Counter Overflow IRQ */ +#define GM_IS_TX_CO_OV BIT_4S /* Transmit Counter Overflow IRQ */ +#define GM_IS_TX_FF_UR BIT_3S /* Transmit FIFO Underrun */ +#define GM_IS_TX_COMPL BIT_2S /* Frame Transmission Complete */ +#define GM_IS_RX_FF_OR BIT_1S /* Receive FIFO Overrun */ +#define GM_IS_RX_COMPL BIT_0S /* Frame Reception Complete */ -#define GMAC_DEF_MSK (GM_IS_TX_CO_OV | GM_IS_RX_CO_OV | \ +#define GMAC_DEF_MSK (GM_IS_RX_CO_OV | GM_IS_TX_CO_OV | \ GM_IS_TX_FF_UR) /* GMAC_LINK_CTRL 16 bit GMAC Link Control Reg (YUKON only) */ @@ -1579,15 +2090,19 @@ #define WOL_CTL_DEFAULT \ (WOL_CTL_DIS_PME_ON_LINK_CHG | \ - WOL_CTL_DIS_PME_ON_PATTERN | \ - WOL_CTL_DIS_PME_ON_MAGIC_PKT | \ - WOL_CTL_DIS_LINK_CHG_UNIT | \ - WOL_CTL_DIS_PATTERN_UNIT | \ - WOL_CTL_DIS_MAGIC_PKT_UNIT) + WOL_CTL_DIS_PME_ON_PATTERN | \ + WOL_CTL_DIS_PME_ON_MAGIC_PKT | \ + WOL_CTL_DIS_LINK_CHG_UNIT | \ + WOL_CTL_DIS_PATTERN_UNIT | \ + WOL_CTL_DIS_MAGIC_PKT_UNIT) /* WOL_MATCH_CTL 8 bit WOL Match Control Reg */ #define WOL_CTL_PATT_ENA(x) (BIT_0 << (x)) +/* WOL_PATT_PME 8 bit WOL PME Match Enable (Yukon-2) */ +#define WOL_PATT_FORCE_PME BIT_7 /* Generates a PME */ +#define WOL_PATT_MATCH_PME_ALL 0x7f + #define SK_NUM_WOL_PATTERN 7 #define SK_PATTERN_PER_WORD 4 #define SK_BITMASK_PATTERN 7 @@ -1606,17 +2121,17 @@ SK_U32 TxAdrLo; /* Physical Tx Buffer Address lower dword */ SK_U32 TxAdrHi; /* Physical Tx Buffer Address upper dword */ SK_U32 TxStat; /* Transmit Frame Status Word */ -#ifndef SK_USE_REV_DESC +#ifndef SK_USE_REV_DESC SK_U16 TxTcpOffs; /* TCP Checksum Calculation Start Value */ SK_U16 TxRes1; /* 16 bit reserved field */ SK_U16 TxTcpWp; /* TCP Checksum Write Position */ SK_U16 TxTcpSp; /* TCP Checksum Calculation Start Position */ -#else /* SK_USE_REV_DESC */ +#else /* SK_USE_REV_DESC */ SK_U16 TxRes1; /* 16 bit reserved field */ SK_U16 TxTcpOffs; /* TCP Checksum Calculation Start Value */ SK_U16 TxTcpSp; /* TCP Checksum Calculation Start Position */ SK_U16 TxTcpWp; /* TCP Checksum Write Position */ -#endif /* SK_USE_REV_DESC */ +#endif /* SK_USE_REV_DESC */ SK_U32 TxRes2; /* 32 bit reserved field */ } SK_HWTXD; @@ -1628,29 +2143,262 @@ SK_U32 RxAdrHi; /* Physical Rx Buffer Address upper dword */ SK_U32 RxStat; /* Receive Frame Status Word */ SK_U32 RxTiSt; /* Receive Time Stamp (from XMAC on GENESIS) */ -#ifndef SK_USE_REV_DESC - SK_U16 RxTcpSum1; /* TCP Checksum 1 */ - SK_U16 RxTcpSum2; /* TCP Checksum 2 */ +#ifndef SK_USE_REV_DESC + SK_U16 RxTcpSum1; /* Rx TCP Checksum 1 */ + SK_U16 RxTcpSum2; /* Rx TCP Checksum 2 */ SK_U16 RxTcpSp1; /* TCP Checksum Calculation Start Position 1 */ SK_U16 RxTcpSp2; /* TCP Checksum Calculation Start Position 2 */ -#else /* SK_USE_REV_DESC */ - SK_U16 RxTcpSum2; /* TCP Checksum 2 */ - SK_U16 RxTcpSum1; /* TCP Checksum 1 */ +#else /* SK_USE_REV_DESC */ + SK_U16 RxTcpSum2; /* Rx TCP Checksum 2 */ + SK_U16 RxTcpSum1; /* Rx TCP Checksum 1 */ SK_U16 RxTcpSp2; /* TCP Checksum Calculation Start Position 2 */ SK_U16 RxTcpSp1; /* TCP Checksum Calculation Start Position 1 */ -#endif /* SK_USE_REV_DESC */ +#endif /* SK_USE_REV_DESC */ } SK_HWRXD; /* * Drivers which use the reverse descriptor feature (PCI_OUR_REG_2) * should set the define SK_USE_REV_DESC. - * Structures are 'normaly' not endianess dependent. But in - * this case the SK_U16 fields are bound to bit positions inside the - * descriptor. RxTcpSum1 e.g. must start at bit 0 within the 6.th DWord. + * Structures are 'normally' not endianess dependent. But in this case + * the SK_U16 fields are bound to bit positions inside the descriptor. + * RxTcpSum1 e.g. must start at bit 0 within the 7.th DWord. * The bit positions inside a DWord are of course endianess dependent and - * swaps if the DWord is swapped by the hardware. + * swap if the DWord is swapped by the hardware. */ +/* YUKON-2 descriptors ******************************************************/ + +typedef struct _TxChksum { +#ifndef SK_USE_REV_DESC + SK_U16 TxTcpWp; /* TCP Checksum Write Position */ + SK_U16 TxTcpSp; /* TCP Checksum Calculation Start Position */ +#else /* SK_USE_REV_DESC */ + SK_U16 TxTcpSp; /* TCP Checksum Calculation Start Position */ + SK_U16 TxTcpWp; /* TCP Checksum Write Position */ +#endif /* SK_USE_REV_DESC */ +} SK_HWTXCS; + +typedef struct _LargeSend { +#ifndef SK_USE_REV_DESC + SK_U16 Length; /* Large Send Segment Length */ + SK_U16 Reserved; /* reserved */ +#else /* SK_USE_REV_DESC */ + SK_U16 Reserved; /* reserved */ + SK_U16 Length; /* Large Send Segment Length */ +#endif /* SK_USE_REV_DESC */ +} SK_HWTXLS; + +typedef union u_HwTxBuf { + SK_U16 BufLen; /* Tx Buffer Length */ + SK_U16 VlanTag; /* VLAN Tag */ + SK_U16 InitCsum; /* Init. Checksum */ +} SK_HWTXBUF; + +/* Tx List Element structure */ +typedef struct s_HwLeTx { + union { + SK_U32 BufAddr; /* Tx LE Buffer Address high/low */ + SK_HWTXCS ChkSum; /* Tx LE TCP Checksum parameters */ + SK_HWTXLS LargeSend;/* Large Send length */ + } TxUn; +#ifndef SK_USE_REV_DESC + SK_HWTXBUF Send; + SK_U8 ControlFlags; /* Tx LE Control field or Lock Number */ + SK_U8 Opcode; /* Tx LE Opcode field */ +#else /* SK_USE_REV_DESC */ + SK_U8 Opcode; /* Tx LE Opcode field */ + SK_U8 ControlFlags; /* Tx LE Control field or Lock Number */ + SK_HWTXBUF Send; +#endif /* SK_USE_REV_DESC */ +} SK_HWLETX; + +typedef struct _RxChkSum{ +#ifndef SK_USE_REV_DESC + SK_U16 RxTcpSp1; /* TCP Checksum Calculation Start Position 1 */ + SK_U16 RxTcpSp2; /* TCP Checksum Calculation Start Position 2 */ +#else /* SK_USE_REV_DESC */ + SK_U16 RxTcpSp2; /* TCP Checksum Calculation Start Position 2 */ + SK_U16 RxTcpSp1; /* TCP Checksum Calculation Start Position 1 */ +#endif /* SK_USE_REV_DESC */ +} SK_HWRXCS; + +/* Rx List Element structure */ +typedef struct s_HwLeRx { + union { + SK_U32 BufAddr; /* Rx LE Buffer Address high/low */ + SK_HWRXCS ChkSum; /* Rx LE TCP Checksum parameters */ + } RxUn; +#ifndef SK_USE_REV_DESC + SK_U16 BufferLength; /* Rx LE Buffer Length field */ + SK_U8 ControlFlags; /* Rx LE Control field */ + SK_U8 Opcode; /* Rx LE Opcode field */ +#else /* SK_USE_REV_DESC */ + SK_U8 Opcode; /* Rx LE Opcode field */ + SK_U8 ControlFlags; /* Rx LE Control field */ + SK_U16 BufferLength; /* Rx LE Buffer Length field */ +#endif /* SK_USE_REV_DESC */ +} SK_HWLERX; + +typedef struct s_StRxTCPChkSum { +#ifndef SK_USE_REV_DESC + SK_U16 RxTCPSum1; /* Rx TCP Checksum 1 */ + SK_U16 RxTCPSum2; /* Rx TCP Checksum 2 */ +#else /* SK_USE_REV_DESC */ + SK_U16 RxTCPSum2; /* Rx TCP Checksum 2 */ + SK_U16 RxTCPSum1; /* Rx TCP Checksum 1 */ +#endif /* SK_USE_REV_DESC */ +} SK_HWSTCS; + +typedef struct s_StRxRssFlags { +#ifndef SK_USE_REV_DESC + SK_U8 FlagField; /* contains TCP and IP flags */ + SK_U8 reserved; /* reserved */ +#else /* SK_USE_REV_DESC */ + SK_U8 reserved; /* reserved */ + SK_U8 FlagField; /* contains TCP and IP flags */ +#endif /* SK_USE_REV_DESC */ +} SK_HWSTRSS; + +/* bit definition of RSS LE bit 32/33 (SK_HWSTRSS.FlagField) */ + /* bit 7..2 reserved */ +#define RSS_TCP_FLAG BIT_1S /* RSS value related to TCP area */ +#define RSS_IP_FLAG BIT_0S /* RSS value related to IP area */ +/* StRxRssValue is valid if at least RSS_IP_FLAG is set. */ +/* For protocol errors or other protocols an empty RSS LE is generated. */ + +typedef union u_HwStBuf { + SK_U16 BufLen; /* Rx Buffer Length */ + SK_U16 VlanTag; /* VLAN Tag */ + SK_U16 StTxStatHi; /* Tx Queue Status (high) */ + SK_HWSTRSS Rss; /* Flag Field for TCP and IP protocol */ +} SK_HWSTBUF; + +/* Status List Element structure */ +typedef struct s_HwLeSt { + union { + SK_U32 StRxStatWord; /* Rx Status Dword */ + SK_U32 StRxTimeStamp; /* Rx Timestamp */ + SK_HWSTCS StRxTCPCSum; /* Rx TCP Checksum */ + SK_U32 StTxStatLow; /* Tx Queue Status (low) */ + SK_U32 StRxRssValue; /* Rx RSS value */ + } StUn; +#ifndef SK_USE_REV_DESC + SK_HWSTBUF Stat; + SK_U8 Link; /* Status LE Link field */ + SK_U8 Opcode; /* Status LE Opcode field */ +#else /* SK_USE_REV_DESC */ + SK_U8 Opcode; /* Status LE Opcode field */ + SK_U8 Link; /* Status LE Link field */ + SK_HWSTBUF Stat; +#endif /* SK_USE_REV_DESC */ +} SK_HWLEST; + +/* Special Action List Element */ +typedef struct s_HwLeSa { +#ifndef SK_USE_REV_DESC + SK_U16 TxAIdxVld; /* Special Action LE TxA Put Index field */ + SK_U16 TxSIdxVld; /* Special Action LE TxS Put Index field */ + SK_U16 RxIdxVld; /* Special Action LE Rx Put Index field */ + SK_U8 Link; /* Special Action LE Link field */ + SK_U8 Opcode; /* Special Action LE Opcode field */ +#else /* SK_USE_REV_DESC */ + SK_U16 TxSIdxVld; /* Special Action LE TxS Put Index field */ + SK_U16 TxAIdxVld; /* Special Action LE TxA Put Index field */ + SK_U8 Opcode; /* Special Action LE Opcode field */ + SK_U8 Link; /* Special Action LE Link field */ + SK_U16 RxIdxVld; /* Special Action LE Rx Put Index field */ +#endif /* SK_USE_REV_DESC */ +} SK_HWLESA; + +/* Common List Element union */ +typedef union u_HwLeTxRxSt { + /* Transmit List Element Structure */ + SK_HWLETX Tx; + /* Receive List Element Structure */ + SK_HWLERX Rx; + /* Status List Element Structure */ + SK_HWLEST St; + /* Special Action List Element Structure */ + SK_HWLESA Sa; + /* Full List Element */ + SK_U64 Full; +} SK_HWLE; + +/* mask and shift value to get Tx async queue status for port 1 */ +#define STLE_TXA1_MSKL 0x00000fff +#define STLE_TXA1_SHIFTL 0 + +/* mask and shift value to get Tx sync queue status for port 1 */ +#define STLE_TXS1_MSKL 0x00fff000 +#define STLE_TXS1_SHIFTL 12 + +/* mask and shift value to get Tx async queue status for port 2 */ +#define STLE_TXA2_MSKL 0xff000000 +#define STLE_TXA2_SHIFTL 24 +#define STLE_TXA2_MSKH 0x000f +/* this one shifts up */ +#define STLE_TXA2_SHIFTH 8 + +/* mask and shift value to get Tx sync queue status for port 2 */ +#define STLE_TXS2_MSKL 0x00000000 +#define STLE_TXS2_SHIFTL 0 +#define STLE_TXS2_MSKH 0xfff0 +#define STLE_TXS2_SHIFTH 4 + +/* YUKON-2 bit values */ +#define HW_OWNER BIT_7 +#define SW_OWNER 0 + +#define PU_PUTIDX_VALID BIT_12 + +/* YUKON-2 Control flags */ +#define UDPTCP BIT_0S +#define CALSUM BIT_1S +#define WR_SUM BIT_2S +#define INIT_SUM BIT_3S +#define LOCK_SUM BIT_4S +#define INS_VLAN BIT_5S +#define FRC_STAT BIT_6S +#define EOP BIT_7S + +#define TX_LOCK BIT_8S +#define BUF_SEND BIT_9S +#define PACKET_SEND BIT_10S + +#define NO_WARNING BIT_14S +#define NO_UPDATE BIT_15S + +/* YUKON-2 Rx/Tx opcodes defines */ +#define OP_TCPWRITE 0x11 +#define OP_TCPSTART 0x12 +#define OP_TCPINIT 0x14 +#define OP_TCPLCK 0x18 +#define OP_TCPCHKSUM OP_TCPSTART +#define OP_TCPIS (OP_TCPINIT | OP_TCPSTART) +#define OP_TCPLW (OP_TCPLCK | OP_TCPWRITE) +#define OP_TCPLSW (OP_TCPLCK | OP_TCPSTART | OP_TCPWRITE) +#define OP_TCPLISW (OP_TCPLCK | OP_TCPINIT | OP_TCPSTART | OP_TCPWRITE) +#define OP_ADDR64 0x21 +#define OP_VLAN 0x22 +#define OP_ADDR64VLAN (OP_ADDR64 | OP_VLAN) +#define OP_LRGLEN 0x24 +#define OP_LRGLENVLAN (OP_LRGLEN | OP_VLAN) +#define OP_BUFFER 0x40 +#define OP_PACKET 0x41 +#define OP_LARGESEND 0x43 + +/* YUKON-2 STATUS opcodes defines */ +#define OP_RXSTAT 0x60 +#define OP_RXTIMESTAMP 0x61 +#define OP_RXVLAN 0x62 +#define OP_RXCHKS 0x64 +#define OP_RXCHKSVLAN (OP_RXCHKS | OP_RXVLAN) +#define OP_RXTIMEVLAN (OP_RXTIMESTAMP | OP_RXVLAN) +#define OP_RSS_HASH 0x65 +#define OP_TXINDEXLE 0x68 + +/* YUKON-2 SPECIAL opcodes defines */ +#define OP_PUTIDX 0x70 /* Descriptor Bit Definition */ /* TxCtrl Transmit Buffer Control Field */ @@ -1685,6 +2433,10 @@ /* macros ********************************************************************/ +/* Macro for accessing the key registers */ +#define RSS_KEY_ADDR(Port, KeyIndex) \ + ((B4_RSS_KEY | ( ((Port) == 0) ? 0 : 0x80)) + (KeyIndex)) + /* Receive and Transmit Queues */ #define Q_R1 0x0000 /* Receive Queue 1 */ #define Q_R2 0x0080 /* Receive Queue 2 */ @@ -1693,6 +2445,10 @@ #define Q_XS2 0x0300 /* Synchronous Transmit Queue 2 */ #define Q_XA2 0x0380 /* Asynchronous Transmit Queue 2 */ +#define Q_ASF_R1 0x100 /* ASF Rx Queue 1 */ +#define Q_ASF_R2 0x180 /* ASF Rx Queue 2 */ +#define Q_ASF_T1 0x140 /* ASF Tx Queue 1 */ +#define Q_ASF_T2 0x1c0 /* ASF Tx Queue 2 */ /* * Macro Q_ADDR() * @@ -1704,11 +2460,27 @@ * Offs Queue register offset. * Values: Q_D, Q_DA_L ... Q_T2, Q_T3 * - * usage SK_IN32(pAC, Q_ADDR(Q_R2, Q_BC), pVal) + * usage SK_IN32(IoC, Q_ADDR(Q_R2, Q_BC), pVal) */ #define Q_ADDR(Queue, Offs) (B8_Q_REGS + (Queue) + (Offs)) /* + * Macro Y2_PREF_Q_ADDR() + * + * Use this macro to access the Prefetch Units of the receive and + * transmit queues of Yukon-2. + * + * para: + * Queue Queue to access. + * Values: Q_R1, Q_R2, Q_XS1, Q_XA1, Q_XS2, Q_XA2, + * Offs Queue register offset. + * Values: PREF_UNIT_CTRL_REG ... PREF_UNIT_FIFO_LEV_REG + * + * usage SK_IN16(IoC, Y2_Q_ADDR(Q_R2, PREF_UNIT_GET_IDX_REG), pVal) + */ +#define Y2_PREF_Q_ADDR(Queue, Offs) (Y2_B8_PREF_REGS + (Queue) + (Offs)) + +/* * Macro RB_ADDR() * * Use this macro to access the RAM Buffer Registers. @@ -1719,14 +2491,14 @@ * Offs Queue register offset. * Values: RB_START, RB_END ... RB_LEV, RB_CTRL * - * usage SK_IN32(pAC, RB_ADDR(Q_R2, RB_RP), pVal) + * usage SK_IN32(IoC, RB_ADDR(Q_R2, RB_RP), pVal) */ #define RB_ADDR(Queue, Offs) (B16_RAM_REGS + (Queue) + (Offs)) /* MAC Related Registers */ -#define MAC_1 0 /* belongs to the port near the slot */ -#define MAC_2 1 /* belongs to the port far away from the slot */ +#define MAC_1 0 /* 1st port */ +#define MAC_2 1 /* 2nd port */ /* * Macro MR_ADDR() @@ -1740,19 +2512,10 @@ * Values: RX_MFF_EA, RX_MFF_WP ... LNK_LED_REG, * TX_MFF_EA, TX_MFF_WP ... TX_LED_TST * - * usage SK_IN32(pAC, MR_ADDR(MAC_1, TX_MFF_EA), pVal) + * usage SK_IN32(IoC, MR_ADDR(MAC_1, TX_MFF_EA), pVal) */ #define MR_ADDR(Mac, Offs) (((Mac) << 7) + (Offs)) -#ifdef SK_LITTLE_ENDIAN -#define XM_WORD_LO 0 -#define XM_WORD_HI 1 -#else /* !SK_LITTLE_ENDIAN */ -#define XM_WORD_LO 1 -#define XM_WORD_HI 0 -#endif /* !SK_LITTLE_ENDIAN */ - - /* * macros to access the XMAC (GENESIS only) * @@ -1777,22 +2540,31 @@ #define XMA(Mac, Reg) \ ((BASE_XMAC_1 + (Mac) * (BASE_XMAC_2 - BASE_XMAC_1)) | ((Reg) << 1)) -#define XM_IN16(IoC, Mac, Reg, pVal) \ - SK_IN16((IoC), XMA((Mac), (Reg)), (pVal)) +#define XM_IN16(IoC, Mac, Reg, pVal) \ + SK_IN16(IoC, XMA(Mac, Reg), pVal) + +#define XM_OUT16(IoC, Mac, Reg, Val) \ + SK_OUT16(IoC, XMA(Mac, Reg), Val) + +#ifdef SK_LITTLE_ENDIAN + +#define XM_IN32(IoC, Mac, Reg, pVal) { \ + SK_IN16(IoC, XMA(Mac, Reg), (SK_U16 SK_FAR *)(pVal)); \ + SK_IN16(IoC, XMA(Mac, (Reg) + 2), (SK_U16 SK_FAR *)(pVal) + 1); \ +} -#define XM_OUT16(IoC, Mac, Reg, Val) \ - SK_OUT16((IoC), XMA((Mac), (Reg)), (Val)) +#else /* !SK_LITTLE_ENDIAN */ -#define XM_IN32(IoC, Mac, Reg, pVal) { \ - SK_IN16((IoC), XMA((Mac), (Reg)), \ - (SK_U16 SK_FAR*)&((SK_U16 SK_FAR*)(pVal))[XM_WORD_LO]); \ - SK_IN16((IoC), XMA((Mac), (Reg+2)), \ - (SK_U16 SK_FAR*)&((SK_U16 SK_FAR*)(pVal))[XM_WORD_HI]); \ +#define XM_IN32(IoC, Mac, Reg, pVal) { \ + SK_IN16(IoC, XMA(Mac, Reg), (SK_U16 SK_FAR *)(pVal) + 1); \ + SK_IN16(IoC, XMA(Mac, (Reg) + 2), (SK_U16 SK_FAR *)(pVal)); \ } +#endif /* !SK_LITTLE_ENDIAN */ + #define XM_OUT32(IoC, Mac, Reg, Val) { \ - SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16)((Val) & 0xffffL)); \ - SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16)(((Val) >> 16) & 0xffffL));\ + SK_OUT16(IoC, XMA(Mac, Reg), (SK_U16)((Val) & 0xffffL)); \ + SK_OUT16(IoC, XMA(Mac, (Reg) + 2), (SK_U16)(((Val) >> 16) & 0xffffL)); \ } /* Remember: we are always writing to / reading from LITTLE ENDIAN memory */ @@ -1802,13 +2574,13 @@ SK_U8 *pByte; \ pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0]; \ SK_IN16((IoC), XMA((Mac), (Reg)), &Word); \ - pByte[0] = (SK_U8)(Word & 0x00ff); \ + pByte[0] = (SK_U8)(Word & 0x00ff); \ pByte[1] = (SK_U8)((Word >> 8) & 0x00ff); \ - SK_IN16((IoC), XMA((Mac), (Reg+2)), &Word); \ - pByte[2] = (SK_U8)(Word & 0x00ff); \ + SK_IN16((IoC), XMA((Mac), (Reg) + 2), &Word); \ + pByte[2] = (SK_U8)(Word & 0x00ff); \ pByte[3] = (SK_U8)((Word >> 8) & 0x00ff); \ - SK_IN16((IoC), XMA((Mac), (Reg+4)), &Word); \ - pByte[4] = (SK_U8)(Word & 0x00ff); \ + SK_IN16((IoC), XMA((Mac), (Reg) + 4), &Word); \ + pByte[4] = (SK_U8)(Word & 0x00ff); \ pByte[5] = (SK_U8)((Word >> 8) & 0x00ff); \ } @@ -1818,10 +2590,10 @@ SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16) \ (((SK_U16)(pByte[0]) & 0x00ff) | \ (((SK_U16)(pByte[1]) << 8) & 0xff00))); \ - SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16) \ + SK_OUT16((IoC), XMA((Mac), (Reg) + 2), (SK_U16) \ (((SK_U16)(pByte[2]) & 0x00ff) | \ (((SK_U16)(pByte[3]) << 8) & 0xff00))); \ - SK_OUT16((IoC), XMA((Mac), (Reg+4)), (SK_U16) \ + SK_OUT16((IoC), XMA((Mac), (Reg) + 4), (SK_U16) \ (((SK_U16)(pByte[4]) & 0x00ff) | \ (((SK_U16)(pByte[5]) << 8) & 0xff00))); \ } @@ -1831,16 +2603,16 @@ SK_U8 SK_FAR *pByte; \ pByte = (SK_U8 SK_FAR *)&((SK_U8 SK_FAR *)(pVal))[0]; \ SK_IN16((IoC), XMA((Mac), (Reg)), &Word); \ - pByte[0] = (SK_U8)(Word & 0x00ff); \ + pByte[0] = (SK_U8)(Word & 0x00ff); \ pByte[1] = (SK_U8)((Word >> 8) & 0x00ff); \ - SK_IN16((IoC), XMA((Mac), (Reg+2)), &Word); \ - pByte[2] = (SK_U8)(Word & 0x00ff); \ + SK_IN16((IoC), XMA((Mac), (Reg) + 2), &Word); \ + pByte[2] = (SK_U8)(Word & 0x00ff); \ pByte[3] = (SK_U8)((Word >> 8) & 0x00ff); \ - SK_IN16((IoC), XMA((Mac), (Reg+4)), &Word); \ - pByte[4] = (SK_U8)(Word & 0x00ff); \ + SK_IN16((IoC), XMA((Mac), (Reg) + 4), &Word); \ + pByte[4] = (SK_U8)(Word & 0x00ff); \ pByte[5] = (SK_U8)((Word >> 8) & 0x00ff); \ - SK_IN16((IoC), XMA((Mac), (Reg+6)), &Word); \ - pByte[6] = (SK_U8)(Word & 0x00ff); \ + SK_IN16((IoC), XMA((Mac), (Reg) + 6), &Word); \ + pByte[6] = (SK_U8)(Word & 0x00ff); \ pByte[7] = (SK_U8)((Word >> 8) & 0x00ff); \ } @@ -1850,13 +2622,13 @@ SK_OUT16((IoC), XMA((Mac), (Reg)), (SK_U16) \ (((SK_U16)(pByte[0]) & 0x00ff)| \ (((SK_U16)(pByte[1]) << 8) & 0xff00))); \ - SK_OUT16((IoC), XMA((Mac), (Reg+2)), (SK_U16) \ + SK_OUT16((IoC), XMA((Mac), (Reg) + 2), (SK_U16) \ (((SK_U16)(pByte[2]) & 0x00ff)| \ (((SK_U16)(pByte[3]) << 8) & 0xff00))); \ - SK_OUT16((IoC), XMA((Mac), (Reg+4)), (SK_U16) \ + SK_OUT16((IoC), XMA((Mac), (Reg) + 4), (SK_U16) \ (((SK_U16)(pByte[4]) & 0x00ff)| \ (((SK_U16)(pByte[5]) << 8) & 0xff00))); \ - SK_OUT16((IoC), XMA((Mac), (Reg+6)), (SK_U16) \ + SK_OUT16((IoC), XMA((Mac), (Reg) + 6), (SK_U16) \ (((SK_U16)(pByte[6]) & 0x00ff)| \ (((SK_U16)(pByte[7]) << 8) & 0xff00))); \ } @@ -1866,7 +2638,7 @@ * * GM_IN16(), to read a 16 bit register (e.g. GM_GP_STAT) * GM_OUT16(), to write a 16 bit register (e.g. GM_GP_CTRL) - * GM_IN32(), to read a 32 bit register (e.g. GM_) + * GM_IN32(), to read a 32 bit register (e.g. GM_RXF_UC_OK) * GM_OUT32(), to write a 32 bit register (e.g. GM_) * GM_INADDR(), to read a network address register (e.g. GM_SRC_ADDR_1L) * GM_OUTADDR(), to write a network address register (e.g. GM_SRC_ADDR_2L) @@ -1885,22 +2657,31 @@ #define GMA(Mac, Reg) \ ((BASE_GMAC_1 + (Mac) * (BASE_GMAC_2 - BASE_GMAC_1)) | (Reg)) -#define GM_IN16(IoC, Mac, Reg, pVal) \ - SK_IN16((IoC), GMA((Mac), (Reg)), (pVal)) +#define GM_IN16(IoC, Mac, Reg, pVal) \ + SK_IN16(IoC, GMA(Mac, Reg), pVal) + +#define GM_OUT16(IoC, Mac, Reg, Val) \ + SK_OUT16(IoC, GMA(Mac, Reg), Val) -#define GM_OUT16(IoC, Mac, Reg, Val) \ - SK_OUT16((IoC), GMA((Mac), (Reg)), (Val)) +#ifdef SK_LITTLE_ENDIAN -#define GM_IN32(IoC, Mac, Reg, pVal) { \ - SK_IN16((IoC), GMA((Mac), (Reg)), \ - (SK_U16 SK_FAR*)&((SK_U16 SK_FAR*)(pVal))[XM_WORD_LO]); \ - SK_IN16((IoC), GMA((Mac), (Reg+4)), \ - (SK_U16 SK_FAR*)&((SK_U16 SK_FAR*)(pVal))[XM_WORD_HI]); \ +#define GM_IN32(IoC, Mac, Reg, pVal) { \ + SK_IN16(IoC, GMA(Mac, Reg), (SK_U16 SK_FAR *)(pVal)); \ + SK_IN16((IoC), GMA(Mac, (Reg) + 4), (SK_U16 SK_FAR *)(pVal) + 1); \ } +#else /* !SK_LITTLE_ENDIAN */ + +#define GM_IN32(IoC, Mac, Reg, pVal) { \ + SK_IN16(IoC, GMA(Mac, Reg), (SK_U16 SK_FAR *)(pVal) + 1); \ + SK_IN16(IoC, GMA(Mac, (Reg) + 4), (SK_U16 SK_FAR *)(pVal)); \ +} + +#endif /* !SK_LITTLE_ENDIAN */ + #define GM_OUT32(IoC, Mac, Reg, Val) { \ - SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16)((Val) & 0xffffL)); \ - SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16)(((Val) >> 16) & 0xffffL));\ + SK_OUT16(IoC, GMA(Mac, Reg), (SK_U16)((Val) & 0xffffL)); \ + SK_OUT16(IoC, GMA(Mac, (Reg) + 4), (SK_U16)(((Val) >> 16) & 0xffffL)); \ } #define GM_INADDR(IoC, Mac, Reg, pVal) { \ @@ -1908,13 +2689,13 @@ SK_U8 *pByte; \ pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0]; \ SK_IN16((IoC), GMA((Mac), (Reg)), &Word); \ - pByte[0] = (SK_U8)(Word & 0x00ff); \ + pByte[0] = (SK_U8)(Word & 0x00ff); \ pByte[1] = (SK_U8)((Word >> 8) & 0x00ff); \ - SK_IN16((IoC), GMA((Mac), (Reg+4)), &Word); \ - pByte[2] = (SK_U8)(Word & 0x00ff); \ + SK_IN16((IoC), GMA((Mac), (Reg) + 4), &Word); \ + pByte[2] = (SK_U8)(Word & 0x00ff); \ pByte[3] = (SK_U8)((Word >> 8) & 0x00ff); \ - SK_IN16((IoC), GMA((Mac), (Reg+8)), &Word); \ - pByte[4] = (SK_U8)(Word & 0x00ff); \ + SK_IN16((IoC), GMA((Mac), (Reg) + 8), &Word); \ + pByte[4] = (SK_U8)(Word & 0x00ff); \ pByte[5] = (SK_U8)((Word >> 8) & 0x00ff); \ } @@ -1924,10 +2705,10 @@ SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16) \ (((SK_U16)(pByte[0]) & 0x00ff) | \ (((SK_U16)(pByte[1]) << 8) & 0xff00))); \ - SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16) \ + SK_OUT16((IoC), GMA((Mac), (Reg) + 4), (SK_U16) \ (((SK_U16)(pByte[2]) & 0x00ff) | \ (((SK_U16)(pByte[3]) << 8) & 0xff00))); \ - SK_OUT16((IoC), GMA((Mac), (Reg+8)), (SK_U16) \ + SK_OUT16((IoC), GMA((Mac), (Reg) + 8), (SK_U16) \ (((SK_U16)(pByte[4]) & 0x00ff) | \ (((SK_U16)(pByte[5]) << 8) & 0xff00))); \ } @@ -1937,16 +2718,16 @@ SK_U8 *pByte; \ pByte = (SK_U8 *)&((SK_U8 *)(pVal))[0]; \ SK_IN16((IoC), GMA((Mac), (Reg)), &Word); \ - pByte[0] = (SK_U8)(Word & 0x00ff); \ + pByte[0] = (SK_U8)(Word & 0x00ff); \ pByte[1] = (SK_U8)((Word >> 8) & 0x00ff); \ - SK_IN16((IoC), GMA((Mac), (Reg+4)), &Word); \ - pByte[2] = (SK_U8)(Word & 0x00ff); \ + SK_IN16((IoC), GMA((Mac), (Reg) + 4), &Word); \ + pByte[2] = (SK_U8)(Word & 0x00ff); \ pByte[3] = (SK_U8)((Word >> 8) & 0x00ff); \ - SK_IN16((IoC), GMA((Mac), (Reg+8)), &Word); \ - pByte[4] = (SK_U8)(Word & 0x00ff); \ + SK_IN16((IoC), GMA((Mac), (Reg) + 8), &Word); \ + pByte[4] = (SK_U8)(Word & 0x00ff); \ pByte[5] = (SK_U8)((Word >> 8) & 0x00ff); \ - SK_IN16((IoC), GMA((Mac), (Reg+12)), &Word); \ - pByte[6] = (SK_U8)(Word & 0x00ff); \ + SK_IN16((IoC), GMA((Mac), (Reg) + 12), &Word); \ + pByte[6] = (SK_U8)(Word & 0x00ff); \ pByte[7] = (SK_U8)((Word >> 8) & 0x00ff); \ } @@ -1956,13 +2737,13 @@ SK_OUT16((IoC), GMA((Mac), (Reg)), (SK_U16) \ (((SK_U16)(pByte[0]) & 0x00ff)| \ (((SK_U16)(pByte[1]) << 8) & 0xff00))); \ - SK_OUT16((IoC), GMA((Mac), (Reg+4)), (SK_U16) \ + SK_OUT16((IoC), GMA((Mac), (Reg) + 4), (SK_U16) \ (((SK_U16)(pByte[2]) & 0x00ff)| \ (((SK_U16)(pByte[3]) << 8) & 0xff00))); \ - SK_OUT16((IoC), GMA((Mac), (Reg+8)), (SK_U16) \ + SK_OUT16((IoC), GMA((Mac), (Reg) + 8), (SK_U16) \ (((SK_U16)(pByte[4]) & 0x00ff)| \ (((SK_U16)(pByte[5]) << 8) & 0xff00))); \ - SK_OUT16((IoC), GMA((Mac), (Reg+12)), (SK_U16) \ + SK_OUT16((IoC), GMA((Mac), (Reg) + 12), (SK_U16) \ (((SK_U16)(pByte[6]) & 0x00ff)| \ (((SK_U16)(pByte[7]) << 8) & 0xff00))); \ } @@ -2010,30 +2791,30 @@ * * usage: PHY_READ(IoC, pPort, MAC_1, PHY_CTRL, Value); * Warning: a PHY_READ on an uninitialized PHY (PHY still in reset) never - * comes back. This is checked in DEBUG mode. + * comes back. This is checked in DEBUG mode. */ #ifndef DEBUG #define PHY_READ(IoC, pPort, Mac, PhyReg, pVal) { \ - SK_U16 Mmu; \ + SK_U16 Mmu; \ \ XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr); \ XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal)); \ if ((pPort)->PhyType != SK_PHY_XMAC) { \ - do { \ + do { \ XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu); \ } while ((Mmu & XM_MMU_PHY_RDY) == 0); \ XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal)); \ - } \ + } \ } #else #define PHY_READ(IoC, pPort, Mac, PhyReg, pVal) { \ - SK_U16 Mmu; \ + SK_U16 Mmu; \ int __i = 0; \ \ XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr); \ XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal)); \ if ((pPort)->PhyType != SK_PHY_XMAC) { \ - do { \ + do { \ XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu); \ __i++; \ if (__i > 100000) { \ @@ -2044,7 +2825,7 @@ } \ } while ((Mmu & XM_MMU_PHY_RDY) == 0); \ XM_IN16((IoC), (Mac), XM_PHY_DATA, (pVal)); \ - } \ + } \ } #endif /* DEBUG */ @@ -2052,17 +2833,17 @@ SK_U16 Mmu; \ \ if ((pPort)->PhyType != SK_PHY_XMAC) { \ - do { \ + do { \ XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu); \ } while ((Mmu & XM_MMU_PHY_BUSY) != 0); \ - } \ + } \ XM_OUT16((IoC), (Mac), XM_PHY_ADDR, (PhyReg) | (pPort)->PhyAddr); \ XM_OUT16((IoC), (Mac), XM_PHY_DATA, (Val)); \ if ((pPort)->PhyType != SK_PHY_XMAC) { \ - do { \ + do { \ XM_IN16((IoC), (Mac), XM_MMU_CMD, &Mmu); \ } while ((Mmu & XM_MMU_PHY_BUSY) != 0); \ - } \ + } \ } /* @@ -2071,12 +2852,14 @@ * Use this macro to access PCI config register from the I/O space. * * para: + * pAC Pointer to adapter context * Addr PCI configuration register to access. * Values: PCI_VENDOR_ID ... PCI_VPD_ADR_REG, * - * usage SK_IN16(pAC, PCI_C(PCI_VENDOR_ID), pVal); + * usage SK_IN16(IoC, PCI_C(pAC, PCI_VENDOR_ID), pVal); */ -#define PCI_C(Addr) (B7_CFG_SPC + (Addr)) /* PCI Config Space */ +#define PCI_C(p, Addr) \ + (((CHIP_ID_YUKON_2(p)) ? Y2_CFG_SPC : B7_CFG_SPC) + (Addr)) /* * Macro SK_HW_ADDR(Base, Addr) @@ -2088,7 +2871,7 @@ * Addr Address offset * * usage: May be used in SK_INxx and SK_OUTxx macros - * #define SK_IN8(pAC, Addr, pVal) ...\ + * #define SK_IN8(IoC, Addr, pVal) ...\ * *pVal = (SK_U8)inp(SK_HW_ADDR(pAC->Hw.Iop, Addr))) */ #ifdef SK_MEM_MAPPED_IO @@ -2107,12 +2890,27 @@ * para: * pAC Pointer to adapter context struct * IoC I/O context needed for SK I/O macros - * Port Port number + * Port Port number * Mode Mode to set for this LED */ #define SK_HWAC_LINK_LED(pAC, IoC, Port, Mode) \ SK_OUT8(IoC, MR_ADDR(Port, LNK_LED_REG), Mode); +#define SK_SET_GP_IO(IoC, Bit) { \ + SK_U32 DWord; \ + SK_IN32(IoC, B2_GP_IO, &DWord); \ + DWord |= ((GP_DIR_0 | GP_IO_0) << (Bit));\ + SK_OUT32(IoC, B2_GP_IO, DWord); \ +} + +#define SK_CLR_GP_IO(IoC, Bit) { \ + SK_U32 DWord; \ + SK_IN32(IoC, B2_GP_IO, &DWord); \ + DWord &= ~((GP_DIR_0 | GP_IO_0) << (Bit));\ + SK_OUT32(IoC, B2_GP_IO, DWord); \ +} + +#define SK_GE_PCI_FIFO_SIZE 1600 /* PCI FIFO Size */ /* typedefs *******************************************************************/ @@ -2124,3 +2922,4 @@ #endif /* __cplusplus */ #endif /* __INC_SKGEHW_H */ + --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skqueue.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skqueue.h @@ -2,8 +2,8 @@ * * Name: skqueue.h * Project: Gigabit Ethernet Adapters, Event Scheduler Module - * Version: $Revision: 1.16 $ - * Date: $Date: 2003/09/16 12:50:32 $ + * Version: $Revision: 2.3 $ + * Date: $Date: 2004/05/14 13:39:15 $ * Purpose: Defines for the Event queue * ******************************************************************************/ @@ -45,6 +45,9 @@ #define SKGE_RSF 11 /* RSF Aggregation Event Class */ #define SKGE_MARKER 12 /* MARKER Aggregation Event Class */ #define SKGE_FD 13 /* FD Distributor Event Class */ +#ifdef SK_ASF +#define SKGE_ASF 14 /* ASF Event Class */ +#endif /* * define event queue as circular buffer @@ -90,5 +93,11 @@ #define SKERR_Q_E001MSG "Event queue overflow" #define SKERR_Q_E002 (SKERR_Q_E001+1) #define SKERR_Q_E002MSG "Undefined event class" +#define SKERR_Q_E003 (SKERR_Q_E001+2) +#define SKERR_Q_E003MSG "Event queued in Init Level 0" +#define SKERR_Q_E004 (SKERR_Q_E001+3) +#define SKERR_Q_E004MSG "Error Reported from Event Fuction (Queue Blocked)" +#define SKERR_Q_E005 (SKERR_Q_E001+4) +#define SKERR_Q_E005MSG "Event scheduler called in Init Level 0 or 1" #endif /* _SKQUEUE_H_ */ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skgepnm2.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skgepnm2.h @@ -2,8 +2,8 @@ * * Name: skgepnm2.h * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.36 $ - * Date: $Date: 2003/05/23 12:45:13 $ + * Version: $Revision: 2.4 $ + * Date: $Date: 2005/05/03 06:42:43 $ * Purpose: Defines for Private Network Management Interface * ****************************************************************************/ @@ -28,8 +28,13 @@ /* * General definitions */ -#define SK_PNMI_CHIPSET_XMAC 1 /* XMAC11800FP */ -#define SK_PNMI_CHIPSET_YUKON 2 /* YUKON */ +#define SK_PNMI_CHIPSET_XMAC 1 /* XMAC11800FP */ +#define SK_PNMI_CHIPSET_YUKON 2 /* YUKON */ +#define SK_PNMI_CHIPSET_YUKON_LITE 3 /* YUKON-Lite (Rev. A1-A3) */ +#define SK_PNMI_CHIPSET_YUKON_LP 4 /* YUKON-LP */ +#define SK_PNMI_CHIPSET_YUKON_XL 5 /* YUKON-2 XL */ +#define SK_PNMI_CHIPSET_YUKON_EC 6 /* YUKON-2 EC */ +#define SK_PNMI_CHIPSET_YUKON_FE 7 /* YUKON-2 FE */ #define SK_PNMI_BUS_PCI 1 /* PCI bus*/ @@ -70,9 +75,9 @@ /* * VCT internal status values */ -#define SK_PNMI_VCT_PENDING 32 -#define SK_PNMI_VCT_TEST_DONE 64 -#define SK_PNMI_VCT_LINK 128 +#define SK_PNMI_VCT_PENDING 0x20 +#define SK_PNMI_VCT_TEST_DONE 0x40 +#define SK_PNMI_VCT_LINK 0x80 /* * Internal table definitions @@ -323,7 +328,7 @@ vSt, \ pAC->Pnmi.MacUpdatedFlag, \ pAC->Pnmi.RlmtUpdatedFlag, \ - pAC->Pnmi.SirqUpdatedFlag))}} + pAC->Pnmi.SirqUpdatedFlag));}} #else /* !DEBUG */ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/sky2le.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/sky2le.h @@ -0,0 +1,891 @@ +/****************************************************************************** + * + * Name: sky2le.h + * Project: Gigabit Ethernet Adapters, Common Modules + * Version: $Revision: 1.9 $ + * Date: $Date: 2005/01/26 10:53:34 $ + * Purpose: Common list element definitions and access macros. + * + ******************************************************************************/ + +/****************************************************************************** + * + * (C)Copyright 2003-2004 Marvell + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * The information in this file is provided "AS IS" without warranty. + * + ******************************************************************************/ + +#ifndef __INC_SKY2LE_H +#define __INC_SKY2LE_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* defines ********************************************************************/ + +#define MIN_LEN_OF_LE_TAB 128 +#define MAX_LEN_OF_LE_TAB 4096 +#ifdef USE_POLLING_UNIT +#define NUM_LE_POLLING_UNIT 2 +#endif +#define MAX_FRAG_OVERHEAD 10 + +/* Macro for aligning a given value */ +#define SK_ALIGN_SIZE(Value, Alignment, AlignedVal) { \ + (AlignedVal) = (((Value) + (Alignment) - 1) & (~((Alignment) - 1)));\ +} + +/****************************************************************************** + * + * LE2DWord() - Converts the given Little Endian value to machine order value + * + * Description: + * This function converts the Little Endian value received as an argument to + * the machine order value. + * + * Returns: + * The converted value + * + */ + +#ifdef SK_LITTLE_ENDIAN + +#ifndef SK_USE_REV_DESC +#define LE2DWord(value) (value) +#else /* SK_USE_REV_DESC */ +#define LE2DWord(value) \ + ((((value)<<24L) & 0xff000000L) + \ + (((value)<< 8L) & 0x00ff0000L) + \ + (((value)>> 8L) & 0x0000ff00L) + \ + (((value)>>24L) & 0x000000ffL)) +#endif /* SK_USE_REV_DESC */ + +#else /* !SK_LITTLE_ENDIAN */ + +#ifndef SK_USE_REV_DESC +#define LE2DWord(value) \ + ((((value)<<24L) & 0xff000000L) + \ + (((value)<< 8L) & 0x00ff0000L) + \ + (((value)>> 8L) & 0x0000ff00L) + \ + (((value)>>24L) & 0x000000ffL)) +#else /* SK_USE_REV_DESC */ +#define LE2DWord(value) (value) +#endif /* SK_USE_REV_DESC */ + +#endif /* !SK_LITTLE_ENDIAN */ + +/****************************************************************************** + * + * DWord2LE() - Converts the given value to a Little Endian value + * + * Description: + * This function converts the value received as an argument to a Little Endian + * value on Big Endian machines. If the machine running the code is Little + * Endian, then no conversion is done. + * + * Returns: + * The converted value + * + */ + +#ifdef SK_LITTLE_ENDIAN + +#ifndef SK_USE_REV_DESC +#define DWord2LE(value) (value) +#else /* SK_USE_REV_DESC */ +#define DWord2LE(value) \ + ((((value)<<24L) & 0xff000000L) + \ + (((value)<< 8L) & 0x00ff0000L) + \ + (((value)>> 8L) & 0x0000ff00L) + \ + (((value)>>24L) & 0x000000ffL)) +#endif /* SK_USE_REV_DESC */ + +#else /* !SK_LITTLE_ENDIAN */ + +#ifndef SK_USE_REV_DESC +#define DWord2LE(value) \ + ((((value)<<24L) & 0xff000000L) + \ + (((value)<< 8L) & 0x00ff0000L) + \ + (((value)>> 8L) & 0x0000ff00L) + \ + (((value)>>24L) & 0x000000ffL)) +#else /* SK_USE_REV_DESC */ +#define DWord2LE(value) (value) +#endif /* SK_USE_REV_DESC */ +#endif /* !SK_LITTLE_ENDIAN */ + +/****************************************************************************** + * + * LE2Word() - Converts the given Little Endian value to machine order value + * + * Description: + * This function converts the Little Endian value received as an argument to + * the machine order value. + * + * Returns: + * The converted value + * + */ + +#ifdef SK_LITTLE_ENDIAN +#ifndef SK_USE_REV_DESC +#define LE2Word(value) (value) +#else /* SK_USE_REV_DESC */ +#define LE2Word(value) \ + ((((value)<< 8L) & 0xff00) + \ + (((value)>> 8L) & 0x00ff)) +#endif /* SK_USE_REV_DESC */ + +#else /* !SK_LITTLE_ENDIAN */ +#ifndef SK_USE_REV_DESC +#define LE2Word(value) \ + ((((value)<< 8L) & 0xff00) + \ + (((value)>> 8L) & 0x00ff)) +#else /* SK_USE_REV_DESC */ +#define LE2Word(value) (value) +#endif /* SK_USE_REV_DESC */ +#endif /* !SK_LITTLE_ENDIAN */ + +/****************************************************************************** + * + * Word2LE() - Converts the given value to a Little Endian value + * + * Description: + * This function converts the value received as an argument to a Little Endian + * value on Big Endian machines. If the machine running the code is Little + * Endian, then no conversion is done. + * + * Returns: + * The converted value + * + */ + +#ifdef SK_LITTLE_ENDIAN +#ifndef SK_USE_REV_DESC +#define Word2LE(value) (value) +#else /* SK_USE_REV_DESC */ +#define Word2LE(value) \ + ((((value)<< 8L) & 0xff00) + \ + (((value)>> 8L) & 0x00ff)) +#endif /* SK_USE_REV_DESC */ + +#else /* !SK_LITTLE_ENDIAN */ +#ifndef SK_USE_REV_DESC +#define Word2LE(value) \ + ((((value)<< 8L) & 0xff00) + \ + (((value)>> 8L) & 0x00ff)) +#else /* SK_USE_REV_DESC */ +#define Word2LE(value) (value) +#endif /* SK_USE_REV_DESC */ +#endif /* !SK_LITTLE_ENDIAN */ + +/****************************************************************************** + * + * Transmit list element macros + * + */ + +#define TXLE_SET_ADDR(pLE, Addr) \ + ((pLE)->Tx.TxUn.BufAddr = DWord2LE(Addr)) +#define TXLE_SET_LSLEN(pLE, Len) \ + ((pLE)->Tx.TxUn.LargeSend.Length = Word2LE(Len)) +#define TXLE_SET_STACS(pLE, Start) \ + ((pLE)->Tx.TxUn.ChkSum.TxTcpSp = Word2LE(Start)) +#define TXLE_SET_WRICS(pLE, Write) \ + ((pLE)->Tx.TxUn.ChkSum.TxTcpWp = Word2LE(Write)) +#define TXLE_SET_INICS(pLE, Ini) ((pLE)->Tx.Send.InitCsum = Word2LE(Ini)) +#define TXLE_SET_LEN(pLE, Len) ((pLE)->Tx.Send.BufLen = Word2LE(Len)) +#define TXLE_SET_VLAN(pLE, Vlan) ((pLE)->Tx.Send.VlanTag = Word2LE(Vlan)) +#define TXLE_SET_LCKCS(pLE, Lock) ((pLE)->Tx.ControlFlags = (Lock)) +#define TXLE_SET_CTRL(pLE, Ctrl) ((pLE)->Tx.ControlFlags = (Ctrl)) +#define TXLE_SET_OPC(pLE, Opc) ((pLE)->Tx.Opcode = (Opc)) + +#define TXLE_GET_ADDR(pLE) LE2DWord((pLE)->Tx.TxUn.BufAddr) +#define TXLE_GET_LSLEN(pLE) LE2Word((pLE)->Tx.TxUn.LargeSend.Length) +#define TXLE_GET_STACS(pLE) LE2Word((pLE)->Tx.TxUn.ChkSum.TxTcpSp) +#define TXLE_GET_WRICS(pLE) LE2Word((pLE)->Tx.TxUn.ChkSum.TxTcpWp) +#define TXLE_GET_INICS(pLE) LE2Word((pLE)->Tx.Send.InitCsum) +#define TXLE_GET_LEN(pLE) LE2Word((pLE)->Tx.Send.BufLen) +#define TXLE_GET_VLAN(pLE) LE2Word((pLE)->Tx.Send.VlanTag) +#define TXLE_GET_LCKCS(pLE) ((pLE)->Tx.ControlFlags) +#define TXLE_GET_CTRL(pLE) ((pLE)->Tx.ControlFlags) +#define TXLE_GET_OPC(pLE) ((pLE)->Tx.Opcode) + +/****************************************************************************** + * + * Receive list element macros + * + */ + +#define RXLE_SET_ADDR(pLE, Addr) \ + ((pLE)->Rx.RxUn.BufAddr = (SK_U32) DWord2LE(Addr)) +#define RXLE_SET_STACS2(pLE, Offs) \ + ((pLE)->Rx.RxUn.ChkSum.RxTcpSp2 = Word2LE(Offs)) +#define RXLE_SET_STACS1(pLE, Offs) \ + ((pLE)->Rx.RxUn.ChkSum.RxTcpSp1 = Word2LE(Offs)) +#define RXLE_SET_LEN(pLE, Len) ((pLE)->Rx.BufferLength = Word2LE(Len)) +#define RXLE_SET_CTRL(pLE, Ctrl) ((pLE)->Rx.ControlFlags = (Ctrl)) +#define RXLE_SET_OPC(pLE, Opc) ((pLE)->Rx.Opcode = (Opc)) + +#define RXLE_GET_ADDR(pLE) LE2DWord((pLE)->Rx.RxUn.BufAddr) +#define RXLE_GET_STACS2(pLE) LE2Word((pLE)->Rx.RxUn.ChkSum.RxTcpSp2) +#define RXLE_GET_STACS1(pLE) LE2Word((pLE)->Rx.RxUn.ChkSum.RxTcpSp1) +#define RXLE_GET_LEN(pLE) LE2Word((pLE)->Rx.BufferLength) +#define RXLE_GET_CTRL(pLE) ((pLE)->Rx.ControlFlags) +#define RXLE_GET_OPC(pLE) ((pLE)->Rx.Opcode) + +/****************************************************************************** + * + * Status list element macros + * + */ + +#define STLE_SET_OPC(pLE, Opc) ((pLE)->St.Opcode = (Opc)) + +#define STLE_GET_FRSTATUS(pLE) LE2DWord((pLE)->St.StUn.StRxStatWord) +#define STLE_GET_TIST(pLE) LE2DWord((pLE)->St.StUn.StRxTimeStamp) +#define STLE_GET_TCP1(pLE) LE2Word((pLE)->St.StUn.StRxTCPCSum.RxTCPSum1) +#define STLE_GET_TCP2(pLE) LE2Word((pLE)->St.StUn.StRxTCPCSum.RxTCPSum2) +#define STLE_GET_LEN(pLE) LE2Word((pLE)->St.Stat.BufLen) +#define STLE_GET_VLAN(pLE) LE2Word((pLE)->St.Stat.VlanTag) +#define STLE_GET_LINK(pLE) ((pLE)->St.Link) +#define STLE_GET_OPC(pLE) ((pLE)->St.Opcode) +#define STLE_GET_DONE_IDX(pLE,LowVal,HighVal) { \ + (LowVal) = LE2DWord((pLE)->St.StUn.StTxStatLow); \ + (HighVal) = LE2Word((pLE)->St.Stat.StTxStatHi); \ +} + +#define STLE_GET_RSS(pLE) LE2DWord((pLE)->St.StUn.StRxRssValue) +#define STLE_GET_IPBIT(pLE) ((pLE)->St.Stat.Rss.FlagField & RSS_IP_FLAG) +#define STLE_GET_TCPBIT(pLE) ((pLE)->St.Stat.Rss.FlagField & RSS_TCP_FLAG) + + +/* I always take both values as a paramter to avoid typos */ +#define STLE_GET_DONE_IDX_TXA1(LowVal,HighVal) \ + (((LowVal) & STLE_TXA1_MSKL) >> STLE_TXA1_SHIFTL) +#define STLE_GET_DONE_IDX_TXS1(LowVal,HighVal) \ + ((LowVal & STLE_TXS1_MSKL) >> STLE_TXS1_SHIFTL) +#define STLE_GET_DONE_IDX_TXA2(LowVal,HighVal) \ + (((LowVal & STLE_TXA2_MSKL) >> STLE_TXA2_SHIFTL) + \ + ((HighVal & STLE_TXA2_MSKH) << STLE_TXA2_SHIFTH)) +#define STLE_GET_DONE_IDX_TXS2(LowVal,HighVal) \ + ((HighVal & STLE_TXS2_MSKH) >> STLE_TXS2_SHIFTH) + + +#define SK_Y2_RXSTAT_CHECK_PKT(Len, RxStat, IsOk) { \ + (IsOk) = (((RxStat) & GMR_FS_RX_OK) != 0) && \ + (((RxStat) & GMR_FS_ANY_ERR) == 0); \ + \ + if ((IsOk) && ((SK_U16)(((RxStat) & GMR_FS_LEN_MSK) >> \ + GMR_FS_LEN_SHIFT) != (Len))) { \ + /* length in MAC status differs from length in LE */\ + (IsOk) = SK_FALSE; \ + } \ +} + + +/****************************************************************************** + * + * Polling unit list element macros + * + * NOTE: the Idx must be <= 0xfff and PU_PUTIDX_VALID makes them valid + * + */ + +#ifdef USE_POLLING_UNIT + +#define POLE_SET_OPC(pLE, Opc) ((pLE)->Sa.Opcode = (Opc)) +#define POLE_SET_LINK(pLE, Port) ((pLE)->Sa.Link = (Port)) +#define POLE_SET_RXIDX(pLE, Idx) ((pLE)->Sa.RxIdxVld = Word2LE(Idx)) +#define POLE_SET_TXAIDX(pLE, Idx) ((pLE)->Sa.TxAIdxVld = Word2LE(Idx)) +#define POLE_SET_TXSIDX(pLE, Idx) ((pLE)->Sa.TxSIdxVld = Word2LE(Idx)) + +#define POLE_GET_OPC(pLE) ((pLE)->Sa.Opcode) +#define POLE_GET_LINK(pLE) ((pLE)->Sa.Link) +#define POLE_GET_RXIDX(pLE) LE2Word((pLE)->Sa.RxIdxVld) +#define POLE_GET_TXAIDX(pLE) LE2Word((pLE)->Sa.TxAIdxVld) +#define POLE_GET_TXSIDX(pLE) LE2Word((pLE)->Sa.TxSIdxVld) + +#endif /* USE_POLLING_UNIT */ + +/****************************************************************************** + * + * Debug macros for list elements + * + */ + +#ifdef DEBUG + +#define SK_DBG_DUMP_RX_LE(pLE) { \ + SK_U8 Opcode; \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("=== RX_LIST_ELEMENT @addr: %p cont: %02x %02x %02x %02x %02x %02x %02x %02x\n", \ + pLE, ((SK_U8 *) pLE)[0], ((SK_U8 *) pLE)[1], ((SK_U8 *) pLE)[2],\ + ((SK_U8 *) pLE)[3], ((SK_U8 *) pLE)[4], ((SK_U8 *) pLE)[5], \ + ((SK_U8 *) pLE)[6], ((SK_U8 *) pLE)[7])); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\t (16bit) %04x %04x %04x %04x\n", \ + ((SK_U16 *) pLE)[0], ((SK_U16 *) pLE)[1], ((SK_U16 *) pLE)[2], \ + ((SK_U16 *) pLE)[3])); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\t (32bit) %08x %08x\n", \ + ((SK_U32 *) pLE)[0], ((SK_U32 *) pLE)[1])); \ + Opcode = RXLE_GET_OPC(pLE); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOwn belongs to %s\n", ((Opcode & HW_OWNER) == HW_OWNER) ? \ + "Hardware" : "Software")); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOpc: 0x%x ",Opcode)); \ + switch (Opcode & (~HW_OWNER)) { \ + case OP_BUFFER: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_BUFFER\n")); \ + break; \ + case OP_PACKET: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_PACKET\n")); \ + break; \ + case OP_ADDR64: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_ADDR64\n")); \ + break; \ + case OP_TCPSTART: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_TCPPAR\n")); \ + break; \ + case SW_OWNER: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tunused LE\n")); \ + break; \ + default: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tunknown Opcode!!!\n")); \ + break; \ + } \ + if ((Opcode & OP_BUFFER) == OP_BUFFER) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tControl: 0x%x\n", RXLE_GET_CTRL(pLE))); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tBufLen: 0x%x\n", RXLE_GET_LEN(pLE))); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tLowAddr: 0x%x\n", RXLE_GET_ADDR(pLE))); \ + } \ + if ((Opcode & OP_ADDR64) == OP_ADDR64) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tHighAddr: 0x%x\n", RXLE_GET_ADDR(pLE))); \ + } \ + if ((Opcode & OP_TCPSTART) == OP_TCPSTART) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tTCP Sum Start 1 : 0x%x\n", RXLE_GET_STACS1(pLE))); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tTCP Sum Start 2 : 0x%x\n", RXLE_GET_STACS2(pLE))); \ + } \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("=====================\n")); \ +} + +#define SK_DBG_DUMP_TX_LE(pLE) { \ + SK_U8 Opcode; \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("=== TX_LIST_ELEMENT @addr: %p cont: %02x %02x %02x %02x %02x %02x %02x %02x\n", \ + pLE, ((SK_U8 *) pLE)[0], ((SK_U8 *) pLE)[1], ((SK_U8 *) pLE)[2],\ + ((SK_U8 *) pLE)[3], ((SK_U8 *) pLE)[4], ((SK_U8 *) pLE)[5], \ + ((SK_U8 *) pLE)[6], ((SK_U8 *) pLE)[7])); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\t (16bit) %04x %04x %04x %04x\n", \ + ((SK_U16 *) pLE)[0], ((SK_U16 *) pLE)[1], ((SK_U16 *) pLE)[2], \ + ((SK_U16 *) pLE)[3])); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\t (32bit) %08x %08x\n", \ + ((SK_U32 *) pLE)[0], ((SK_U32 *) pLE)[1])); \ + Opcode = TXLE_GET_OPC(pLE); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOwn belongs to %s\n", ((Opcode & HW_OWNER) == HW_OWNER) ? \ + "Hardware" : "Software")); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOpc: 0x%x ",Opcode)); \ + switch (Opcode & (~HW_OWNER)) { \ + case OP_TCPCHKSUM: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_TCPCHKSUM\n")); \ + break; \ + case OP_TCPIS: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_TCPIS\n")); \ + break; \ + case OP_TCPLCK: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_TCPLCK\n")); \ + break; \ + case OP_TCPLW: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_TCPLW\n")); \ + break; \ + case OP_TCPLSW: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_TCPLSW\n")); \ + break; \ + case OP_TCPLISW: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_TCPLISW\n")); \ + break; \ + case OP_ADDR64: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_ADDR64\n")); \ + break; \ + case OP_VLAN: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_VLAN\n")); \ + break; \ + case OP_ADDR64VLAN: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_ADDR64VLAN\n")); \ + break; \ + case OP_LRGLEN: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_LRGLEN\n")); \ + break; \ + case OP_LRGLENVLAN: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_LRGLENVLAN\n")); \ + break; \ + case OP_BUFFER: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_BUFFER\n")); \ + break; \ + case OP_PACKET: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_PACKET\n")); \ + break; \ + case OP_LARGESEND: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_LARGESEND\n")); \ + break; \ + case SW_OWNER: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tunused LE\n")); \ + break; \ + default: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tunknown Opcode!!!\n")); \ + break; \ + } \ + if ((Opcode & OP_BUFFER) == OP_BUFFER) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tControl: 0x%x\n", TXLE_GET_CTRL(pLE))); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tBufLen: 0x%x\n", TXLE_GET_LEN(pLE))); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tLowAddr: 0x%x\n", TXLE_GET_ADDR(pLE))); \ + } \ + if ((Opcode & OP_ADDR64) == OP_ADDR64) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tHighAddr: 0x%x\n", TXLE_GET_ADDR(pLE))); \ + } \ + if ((Opcode & OP_VLAN) == OP_VLAN) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tVLAN Id: 0x%x\n", TXLE_GET_VLAN(pLE))); \ + } \ + if ((Opcode & OP_LRGLEN) == OP_LRGLEN) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tLarge send length: 0x%x\n", TXLE_GET_LSLEN(pLE))); \ + } \ + if ((Opcode &(~HW_OWNER)) <= OP_ADDR64) { \ + if ((Opcode & OP_TCPWRITE) == OP_TCPWRITE) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tTCP Sum Write: 0x%x\n", TXLE_GET_WRICS(pLE))); \ + } \ + if ((Opcode & OP_TCPSTART) == OP_TCPSTART) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tTCP Sum Start: 0x%x\n", TXLE_GET_STACS(pLE))); \ + } \ + if ((Opcode & OP_TCPINIT) == OP_TCPINIT) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tTCP Sum Init: 0x%x\n", TXLE_GET_INICS(pLE))); \ + } \ + if ((Opcode & OP_TCPLCK) == OP_TCPLCK) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tTCP Sum Lock: 0x%x\n", TXLE_GET_LCKCS(pLE))); \ + } \ + } \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("=====================\n")); \ +} + +#define SK_DBG_DUMP_ST_LE(pLE) { \ + SK_U8 Opcode; \ + SK_U16 HighVal; \ + SK_U32 LowVal; \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("=== ST_LIST_ELEMENT @addr: %p contains: %02x %02x %02x %02x %02x %02x %02x %02x\n",\ + pLE, ((SK_U8 *) pLE)[0], ((SK_U8 *) pLE)[1], ((SK_U8 *) pLE)[2],\ + ((SK_U8 *) pLE)[3], ((SK_U8 *) pLE)[4], ((SK_U8 *) pLE)[5], \ + ((SK_U8 *) pLE)[6], ((SK_U8 *) pLE)[7])); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\t (16bit) %04x %04x %04x %04x\n", \ + ((SK_U16 *) pLE)[0], ((SK_U16 *) pLE)[1], ((SK_U16 *) pLE)[2], \ + ((SK_U16 *) pLE)[3])); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\t (32bit) %08x %08x\n", \ + ((SK_U32 *) pLE)[0], ((SK_U32 *) pLE)[1])); \ + Opcode = STLE_GET_OPC(pLE); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOwn belongs to %s\n", ((Opcode & HW_OWNER) == SW_OWNER) ? \ + "Hardware" : "Software")); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOpc: 0x%x", Opcode)); \ + Opcode &= (~HW_OWNER); \ + switch (Opcode) { \ + case OP_RXSTAT: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_RXSTAT\n")); \ + break; \ + case OP_RXTIMESTAMP: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_RXTIMESTAMP\n")); \ + break; \ + case OP_RXVLAN: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_RXVLAN\n")); \ + break; \ + case OP_RXCHKS: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_RXCHKS\n")); \ + break; \ + case OP_RXCHKSVLAN: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_RXCHKSVLAN\n")); \ + break; \ + case OP_RXTIMEVLAN: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_RXTIMEVLAN\n")); \ + break; \ + case OP_RSS_HASH: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_RSS_HASH\n")); \ + break; \ + case OP_TXINDEXLE: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_TXINDEXLE\n")); \ + break; \ + case HW_OWNER: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tunused LE\n")); \ + break; \ + default: \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tunknown status list element!!!\n")); \ + break; \ + } \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tPort: %c\n", 'A' + STLE_GET_LINK(pLE))); \ + if (Opcode == OP_RXSTAT) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tFrameLen: 0x%x\n", STLE_GET_LEN(pLE))); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tFrameStat: 0x%x\n", STLE_GET_FRSTATUS(pLE))); \ + } \ + if ((Opcode & OP_RXVLAN) == OP_RXVLAN) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tVLAN Id: 0x%x\n", STLE_GET_VLAN(pLE))); \ + } \ + if ((Opcode & OP_RXTIMESTAMP) == OP_RXTIMESTAMP) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tTimestamp: 0x%x\n", STLE_GET_TIST(pLE))); \ + } \ + if ((Opcode & OP_RXCHKS) == OP_RXCHKS) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tTCP: 0x%x 0x%x\n", STLE_GET_TCP1(pLE), \ + STLE_GET_TCP2(pLE))); \ + } \ + if (Opcode == OP_TXINDEXLE) { \ + STLE_GET_DONE_IDX(pLE, LowVal, HighVal); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tTx Index TxA1: 0x%x\n", \ + STLE_GET_DONE_IDX_TXA1(LowVal,HighVal))); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tTx Index TxS1: 0x%x\n", \ + STLE_GET_DONE_IDX_TXS1(LowVal,HighVal))); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tTx Index TxA2: 0x%x\n", \ + STLE_GET_DONE_IDX_TXA2(LowVal,HighVal))); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tTx Index TxS2: 0x%x\n", \ + STLE_GET_DONE_IDX_TXS2(LowVal,HighVal))); \ + } \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("=====================\n")); \ +} + +#ifdef USE_POLLING_UNIT +#define SK_DBG_DUMP_PO_LE(pLE) { \ + SK_U8 Opcode; \ + SK_U16 Idx; \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("=== PO_LIST_ELEMENT @addr: %p cont: %02x %02x %02x %02x %02x %02x %02x %02x\n", \ + pLE, ((SK_U8 *) pLE)[0], ((SK_U8 *) pLE)[1], ((SK_U8 *) pLE)[2],\ + ((SK_U8 *) pLE)[3], ((SK_U8 *) pLE)[4], ((SK_U8 *) pLE)[5], \ + ((SK_U8 *) pLE)[6], ((SK_U8 *) pLE)[7])); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\t (16bit) %04x %04x %04x %04x\n", \ + ((SK_U16 *) pLE)[0], ((SK_U16 *) pLE)[1], ((SK_U16 *) pLE)[2], \ + ((SK_U16 *) pLE)[3])); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\t (32bit) %08x %08x\n", \ + ((SK_U32 *) pLE)[0], ((SK_U32 *) pLE)[1])); \ + Opcode = POLE_GET_OPC(pLE); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOwn belongs to %s\n", ((Opcode & HW_OWNER) == HW_OWNER) ? \ + "Hardware" : "Software")); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOpc: 0x%x ",Opcode)); \ + if ((Opcode & ~HW_OWNER) == OP_PUTIDX) { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tOP_PUTIDX\n")); \ + } \ + else { \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tunknown Opcode!!!\n")); \ + } \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tPort %c\n", 'A' + POLE_GET_LINK(pLE))); \ + Idx = POLE_GET_TXAIDX(pLE); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tTxA Index is 0x%X and %svalid\n", Idx, \ + (Idx & PU_PUTIDX_VALID) ? "" : "not ")); \ + Idx = POLE_GET_TXSIDX(pLE); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tTxS Index is 0x%X and %svalid\n", Idx, \ + (Idx & PU_PUTIDX_VALID) ? "" : "not ")); \ + Idx = POLE_GET_RXIDX(pLE); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("\tRx Index is 0x%X and %svalid\n", Idx, \ + (Idx & PU_PUTIDX_VALID) ? "" : "not ")); \ + SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ + ("=====================\n")); \ +} +#endif /* USE_POLLING_UNIT */ + +#else /* !DEBUG */ + +#define SK_DBG_DUMP_RX_LE(pLE) +#define SK_DBG_DUMP_TX_LE(pLE) +#define SK_DBG_DUMP_ST_LE(pLE) +#define SK_DBG_DUMP_PO_LE(pLE) + +#endif /* !DEBUG */ + +/****************************************************************************** + * + * Macros for listelement tables + * + * + */ + +#define LE_SIZE sizeof(SK_HWLE) +#define LE_TAB_SIZE(NumElements) ((NumElements) * LE_SIZE) + +/* Number of unused list elements in table + * this macro always returns the number of free listelements - 1 + * this way we want to guarantee that always one LE remains unused + */ +#define NUM_FREE_LE_IN_TABLE(pTable) \ + ( ((pTable)->Put >= (pTable)->Done) ? \ + (NUM_LE_IN_TABLE(pTable) - (pTable)->Put + (pTable)->Done - 1) :\ + ((pTable)->Done - (pTable)->Put - 1) ) + +/* total number of list elements in table */ +#define NUM_LE_IN_TABLE(pTable) ((pTable)->Num) + +/* get next unused Rx list element */ +#define GET_RX_LE(pLE, pTable) { \ + pLE = &(pTable)->pLETab[(pTable)->Put]; \ + (pTable)->Put = ((pTable)->Put + 1) & (NUM_LE_IN_TABLE(pTable) - 1);\ +} + +/* get next unused Tx list element */ +#define GET_TX_LE(pLE, pTable) GET_RX_LE(pLE, pTable) + +/* get next status list element expected to be finished by hw */ +#define GET_ST_LE(pLE, pTable) { \ + pLE = &(pTable)->pLETab[(pTable)->Done]; \ + (pTable)->Done = ((pTable)->Done +1) & (NUM_LE_IN_TABLE(pTable) - 1);\ +} + +#ifdef USE_POLLING_UNIT +/* get next polling unit list element for port */ +#define GET_PO_LE(pLE, pTable, Port) { \ + pLE = &(pTable)->pLETab[(Port)]; \ +} +#endif /* USE_POLLING_UNIT */ + +#define GET_PUT_IDX(pTable) ((pTable)->Put) + +#define UPDATE_HWPUT_IDX(pTable) {(pTable)->HwPut = (pTable)->Put; } + +/* + * get own bit of next status LE + * if the result is != 0 there has been at least one status LE finished + */ +#define OWN_OF_FIRST_LE(pTable) \ + (STLE_GET_OPC(&(pTable)->pLETab[(pTable)->Done]) & HW_OWNER) + +#define SET_DONE_INDEX(pTable, Idx) (pTable)->Done = (Idx); + +#define GET_DONE_INDEX(pTable) ((pTable)->Done) + +#ifdef SAFE_BUT_SLOW + +/* check own bit of LE before current done idx */ +#define CHECK_STLE_OVERFLOW(pTable, IsOk) { \ + unsigned i; \ + if ((i = (pTable)->Done) == 0) { \ + i = NUM_LE_IN_TABLE(pTable); \ + } \ + else { \ + i = i - 1; \ + } \ + if (STLE_GET_OPC(&(pTable)->pLETab[i]) == HW_OWNER) { \ + (IsOk) = SK_TRUE; \ + } \ + else { \ + (IsOk) = SK_FALSE; \ + } \ + } + + +/* + * for Yukon-2 the hardware is not polling the list elements, so it + * is not necessary to change the own-bit of Rx or Tx LEs before + * reusing them + * but it might make debugging easier if one simply can see whether + * a LE has been worked on + */ + +#define CLEAR_LE_OWN(pTable, Idx) \ + STLE_SET_OPC(&(pTable)->pLETab[(Idx)], SW_OWNER) + +/* + * clear all own bits starting from old done index up to the LE before + * the new done index + */ +#define CLEAR_LE_OWN_FROM_DONE_TO(pTable, To) { \ + int i; \ + i = (pTable)->Done; \ + while (i != To) { \ + CLEAR_LE_OWN(pTable, i); \ + i = (i + 1) & (NUM_LE_IN_TABLE(pTable) - 1); \ + } \ + } + +#else /* !SAFE_BUT_SLOW */ + +#define CHECK_STLE_OVERFLOW(pTable, IsOk) +#define CLEAR_LE_OWN(pTable, Idx) +#define CLEAR_LE_OWN_FROM_DONE_TO(pTable, To) + +#endif /* !SAFE_BUT_SLOW */ + + +/* typedefs *******************************************************************/ + +typedef struct s_LetRxTx { + SK_U16 VlanId; /* VLAN Id given down last time */ + SK_U16 TcpWp; /* TCP Checksum Write Position */ + SK_U16 TcpSp1; /* TCP Checksum Calculation Start Position 1 */ + SK_U16 TcpSp2; /* TCP Checksum Calculation Start Position 2 */ + SK_U16 MssValue; /* Maximum Segment Size */ + SK_U16 Reserved1; /* reserved word for furture extensions */ + SK_U16 Reserved2; /* reserved word for furture extensions */ + SK_U16 Reserved3; /* reserved word for furture extensions */ +} SK_LET_RX_TX; + +typedef struct s_LetStat { + SK_U32 RxTimeStamp; /* Receive Timestamp */ + SK_U32 RssHashValue; /* RSS Hash Value */ + SK_BOOL RssIsIp; /* RSS Hash Value: IP packet detected */ + SK_BOOL RssIsTcp; /* RSS Hash Value: IP+TCP packet detected */ + SK_U16 VlanId; /* VLAN Id given received by Status BMU */ + SK_U16 TcpSum1; /* TCP checksum 1 (status BMU) */ + SK_U16 TcpSum2; /* TCP checksum 2 (status BMU) */ +} SK_LET_STAT; + +typedef union s_LetBmuSpec { + SK_LET_RX_TX RxTx; /* Rx/Tx BMU specific variables */ + SK_LET_STAT Stat; /* Status BMU specific variables */ +} SK_LET_BMU_S; + +typedef struct s_le_table { + /* all LE's between Done and HWPut are owned by the hardware */ + /* all LE's between Put and Done can be used from Software */ + /* all LE's between HWPut and Put are currently processed in DriverSend */ + unsigned Done; /* done index - consumed from HW and available */ + unsigned Put; /* put index - to be given to hardware */ + unsigned HwPut; /* put index actually given to hardware */ + unsigned Num; /* total number of list elements */ + SK_HWLE *pLETab; /* virtual address of list element table */ + SK_U32 pPhyLETABLow; /* physical address of list element table */ + SK_U32 pPhyLETABHigh; /* physical address of list element table */ + /* values to remember in order to save some LEs */ + SK_U32 BufHighAddr; /* high addr given down last time */ + SK_LET_BMU_S Bmu; /* contains BMU specific information */ + SK_U32 private; /* driver private variable free usable */ + SK_U16 TcpInitCsum; /* Init. Checksum */ +} SK_LE_TABLE; + +/* function prototypes ********************************************************/ + +#ifndef SK_KR_PROTO + +/* + * public functions in sky2le.c + */ +extern void SkGeY2SetPutIndex( + SK_AC *pAC, + SK_IOC IoC, + SK_U32 StartAddrPrefetchUnit, + SK_LE_TABLE *pLETab); + +extern void SkGeY2InitPrefetchUnit( + SK_AC *pAC, + SK_IOC IoC, + unsigned int Queue, + SK_LE_TABLE *pLETab); + +extern void SkGeY2InitStatBmu( + SK_AC *pAC, + SK_IOC IoC, + SK_LE_TABLE *pLETab); + +extern void SkGeY2InitPollUnit( + SK_AC *pAC, + SK_IOC IoC, + SK_LE_TABLE *pLETab); + +extern void SkGeY2InitSingleLETable( + SK_AC *pAC, + SK_LE_TABLE *pLETab, + unsigned int NumLE, + void *pVMem, + SK_U32 PMemLowAddr, + SK_U32 PMemHighAddr); + +#else /* SK_KR_PROTO */ +extern void SkGeY2SetPutIndex(); +extern void SkGeY2InitPrefetchUnit(); +extern void SkGeY2InitStatBmu(); +extern void SkGeY2InitPollUnit(); +extern void SkGeY2InitSingleLETable(); +#endif /* SK_KR_PROTO */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __INC_SKY2LE_H */ + --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/lm80.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/lm80.h @@ -2,8 +2,8 @@ * * Name: lm80.h * Project: Gigabit Ethernet Adapters, Common Modules - * Version: $Revision: 1.6 $ - * Date: $Date: 2003/05/13 17:26:52 $ + * Version: $Revision: 2.1 $ + * Date: $Date: 2003/10/27 14:16:08 $ * Purpose: Contains all defines for the LM80 Chip * (National Semiconductor). * --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/sktwsi.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/sktwsi.h @@ -0,0 +1,177 @@ +/****************************************************************************** + * + * Name: sktwsi.h + * Project: Gigabit Ethernet Adapters, TWSI-Module + * Version: $Revision: 1.1 $ + * Date: $Date: 2003/12/19 14:02:56 $ + * Purpose: Defines to access Voltage and Temperature Sensor + * + ******************************************************************************/ + +/****************************************************************************** + * + * (C)Copyright 1998-2002 SysKonnect. + * (C)Copyright 2002-2003 Marvell. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * The information in this file is provided "AS IS" without warranty. + * + ******************************************************************************/ + +/* + * SKTWSI.H contains all TWSI specific defines + */ + +#ifndef _SKTWSI_H_ +#define _SKTWSI_H_ + +typedef struct s_Sensor SK_SENSOR; + +#include "h/skgetwsi.h" + +/* + * Define the TWSI events. + */ +#define SK_I2CEV_IRQ 1 /* IRQ happened Event */ +#define SK_I2CEV_TIM 2 /* Timeout event */ +#define SK_I2CEV_CLEAR 3 /* Clear MIB Values */ + +/* + * Define READ and WRITE Constants. + */ +#define I2C_READ 0 +#define I2C_WRITE 1 +#define I2C_BURST 1 +#define I2C_SINGLE 0 + +#define SKERR_I2C_E001 (SK_ERRBASE_I2C+0) +#define SKERR_I2C_E001MSG "Sensor index unknown" +#define SKERR_I2C_E002 (SKERR_I2C_E001+1) +#define SKERR_I2C_E002MSG "TWSI: transfer does not complete" +#define SKERR_I2C_E003 (SKERR_I2C_E002+1) +#define SKERR_I2C_E003MSG "LM80: NAK on device send" +#define SKERR_I2C_E004 (SKERR_I2C_E003+1) +#define SKERR_I2C_E004MSG "LM80: NAK on register send" +#define SKERR_I2C_E005 (SKERR_I2C_E004+1) +#define SKERR_I2C_E005MSG "LM80: NAK on device (2) send" +#define SKERR_I2C_E006 (SKERR_I2C_E005+1) +#define SKERR_I2C_E006MSG "Unknown event" +#define SKERR_I2C_E007 (SKERR_I2C_E006+1) +#define SKERR_I2C_E007MSG "LM80 read out of state" +#define SKERR_I2C_E008 (SKERR_I2C_E007+1) +#define SKERR_I2C_E008MSG "Unexpected sensor read completed" +#define SKERR_I2C_E009 (SKERR_I2C_E008+1) +#define SKERR_I2C_E009MSG "WARNING: temperature sensor out of range" +#define SKERR_I2C_E010 (SKERR_I2C_E009+1) +#define SKERR_I2C_E010MSG "WARNING: voltage sensor out of range" +#define SKERR_I2C_E011 (SKERR_I2C_E010+1) +#define SKERR_I2C_E011MSG "ERROR: temperature sensor out of range" +#define SKERR_I2C_E012 (SKERR_I2C_E011+1) +#define SKERR_I2C_E012MSG "ERROR: voltage sensor out of range" +#define SKERR_I2C_E013 (SKERR_I2C_E012+1) +#define SKERR_I2C_E013MSG "ERROR: couldn't init sensor" +#define SKERR_I2C_E014 (SKERR_I2C_E013+1) +#define SKERR_I2C_E014MSG "WARNING: fan sensor out of range" +#define SKERR_I2C_E015 (SKERR_I2C_E014+1) +#define SKERR_I2C_E015MSG "ERROR: fan sensor out of range" +#define SKERR_I2C_E016 (SKERR_I2C_E015+1) +#define SKERR_I2C_E016MSG "TWSI: active transfer does not complete" + +/* + * Define Timeout values + */ +#define SK_I2C_TIM_LONG 2000000L /* 2 seconds */ +#define SK_I2C_TIM_SHORT 100000L /* 100 milliseconds */ +#define SK_I2C_TIM_WATCH 1000000L /* 1 second */ + +/* + * Define trap and error log hold times + */ +#ifndef SK_SEN_ERR_TR_HOLD +#define SK_SEN_ERR_TR_HOLD (4*SK_TICKS_PER_SEC) +#endif +#ifndef SK_SEN_ERR_LOG_HOLD +#define SK_SEN_ERR_LOG_HOLD (60*SK_TICKS_PER_SEC) +#endif +#ifndef SK_SEN_WARN_TR_HOLD +#define SK_SEN_WARN_TR_HOLD (15*SK_TICKS_PER_SEC) +#endif +#ifndef SK_SEN_WARN_LOG_HOLD +#define SK_SEN_WARN_LOG_HOLD (15*60*SK_TICKS_PER_SEC) +#endif + +/* + * Defines for SenType + */ +#define SK_SEN_UNKNOWN 0 +#define SK_SEN_TEMP 1 +#define SK_SEN_VOLT 2 +#define SK_SEN_FAN 3 + +/* + * Define for the SenErrorFlag + */ +#define SK_SEN_ERR_NOT_PRESENT 0 /* Error Flag: Sensor not present */ +#define SK_SEN_ERR_OK 1 /* Error Flag: O.K. */ +#define SK_SEN_ERR_WARN 2 /* Error Flag: Warning */ +#define SK_SEN_ERR_ERR 3 /* Error Flag: Error */ +#define SK_SEN_ERR_FAULTY 4 /* Error Flag: Faulty */ + +/* + * Define the Sensor struct + */ +struct s_Sensor { + char *SenDesc; /* Description */ + int SenType; /* Voltage or Temperature */ + SK_I32 SenValue; /* Current value of the sensor */ + SK_I32 SenThreErrHigh; /* High error Threshhold of this sensor */ + SK_I32 SenThreWarnHigh; /* High warning Threshhold of this sensor */ + SK_I32 SenThreErrLow; /* Lower error Threshold of the sensor */ + SK_I32 SenThreWarnLow; /* Lower warning Threshold of the sensor */ + int SenErrFlag; /* Sensor indicated an error */ + SK_BOOL SenInit; /* Is sensor initialized ? */ + SK_U64 SenErrCts; /* Error trap counter */ + SK_U64 SenWarnCts; /* Warning trap counter */ + SK_U64 SenBegErrTS; /* Begin error timestamp */ + SK_U64 SenBegWarnTS; /* Begin warning timestamp */ + SK_U64 SenLastErrTrapTS; /* Last error trap timestamp */ + SK_U64 SenLastErrLogTS; /* Last error log timestamp */ + SK_U64 SenLastWarnTrapTS; /* Last warning trap timestamp */ + SK_U64 SenLastWarnLogTS; /* Last warning log timestamp */ + int SenState; /* Sensor State (see HW specific include) */ + int (*SenRead)(SK_AC *pAC, SK_IOC IoC, struct s_Sensor *pSen); + /* Sensors read function */ + SK_U16 SenReg; /* Register Address for this sensor */ + SK_U8 SenDev; /* Device Selection for this sensor */ +}; + +typedef struct s_I2c { + SK_SENSOR SenTable[SK_MAX_SENSORS]; /* Sensor Table */ + int CurrSens; /* Which sensor is currently queried */ + int MaxSens; /* Max. number of sensors */ + int TimerMode; /* Use the timer also to watch the state machine */ + int InitLevel; /* Initialized Level */ +#ifndef SK_DIAG + int DummyReads; /* Number of non-checked dummy reads */ + SK_TIMER SenTimer; /* Sensors timer */ +#endif /* !SK_DIAG */ +} SK_I2C; + +extern int SkI2cInit(SK_AC *pAC, SK_IOC IoC, int Level); +extern int SkI2cWrite(SK_AC *pAC, SK_IOC IoC, SK_U32 Data, int Dev, int Size, + int Reg, int Burst); +extern int SkI2cReadSensor(SK_AC *pAC, SK_IOC IoC, SK_SENSOR *pSen); +#ifdef SK_DIAG +extern SK_U32 SkI2cRead(SK_AC *pAC, SK_IOC IoC, int Dev, int Size, int Reg, + int Burst); +#else /* !SK_DIAG */ +extern int SkI2cEvent(SK_AC *pAC, SK_IOC IoC, SK_U32 Event, SK_EVPARA Para); +extern void SkI2cWaitIrq(SK_AC *pAC, SK_IOC IoC); +extern void SkI2cIsr(SK_AC *pAC, SK_IOC IoC); +#endif /* !SK_DIAG */ +#endif /* n_SKTWSI_H */ + --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skgeinit.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skgeinit.h @@ -2,8 +2,8 @@ * * Name: skgeinit.h * Project: Gigabit Ethernet Adapters, Common Modules - * Version: $Revision: 1.83 $ - * Date: $Date: 2003/09/16 14:07:37 $ + * Version: $Revision: 2.37 $ + * Date: $Date: 2005/05/24 08:42:19 $ * Purpose: Structures and prototypes for the GE Init Module * ******************************************************************************/ @@ -11,13 +11,12 @@ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2005 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * * The information in this file is provided "AS IS" without warranty. * ******************************************************************************/ @@ -60,14 +59,17 @@ #define SK_XMIT_DUR 0x002faf08UL /* 50 ms */ #define SK_BLK_DUR 0x01dcd650UL /* 500 ms */ -#define SK_DPOLL_DEF 0x00ee6b28UL /* 250 ms at 62.5 MHz */ +#define SK_DPOLL_DEF 0x00ee6b28UL /* 250 ms at 62.5 MHz (Genesis) */ +#define SK_DPOLL_DEF_Y2 0x0000124fUL /* 75 us (Yukon-2) */ #define SK_DPOLL_MAX 0x00ffffffUL /* 268 ms at 62.5 MHz */ - /* 215 ms at 78.12 MHz */ + /* 215 ms at 78.12 MHz (Yukon) */ #define SK_FACT_62 100 /* is given in percent */ -#define SK_FACT_53 85 /* on GENESIS: 53.12 MHz */ +#define SK_FACT_53 85 /* on GENESIS: 53.12 MHz */ #define SK_FACT_78 125 /* on YUKON: 78.12 MHz */ +#define SK_FACT_100 161 /* on YUKON-FE: 100 MHz */ +#define SK_FACT_125 202 /* on YUKON-EC: 125 MHz */ /* Timeout values */ #define SK_MAC_TO_53 72 /* MAC arbiter timeout */ @@ -83,10 +85,16 @@ #define SK_RB_LLPP_B (16 * 1024) /* Lower Level for big Queues */ #ifndef SK_BMU_RX_WM -#define SK_BMU_RX_WM 0x600 /* BMU Rx Watermark */ +#define SK_BMU_RX_WM 0x600 /* BMU Rx Watermark */ #endif + #ifndef SK_BMU_TX_WM -#define SK_BMU_TX_WM 0x600 /* BMU Tx Watermark */ +#define SK_BMU_TX_WM 0x600 /* BMU Tx Watermark */ +#endif + +/* performance sensitive drivers should set this define to 0x80 */ +#ifndef SK_BMU_RX_WM_PEX +#define SK_BMU_RX_WM_PEX 0x600 /* BMU Rx Watermark for PEX */ #endif /* XMAC II Rx High Watermark */ @@ -98,37 +106,31 @@ #define SK_XM_THR_MULL 0x01fb /* .. for multiple link usage */ #define SK_XM_THR_JUMBO 0x03fc /* .. for jumbo frame usage */ -/* values for GIPortUsage */ +/* values for PortUsage */ #define SK_RED_LINK 1 /* redundant link usage */ #define SK_MUL_LINK 2 /* multiple link usage */ #define SK_JUMBO_LINK 3 /* driver uses jumbo frames */ /* Minimum RAM Buffer Rx Queue Size */ -#define SK_MIN_RXQ_SIZE 16 /* 16 kB */ +#define SK_MIN_RXQ_SIZE (((pAC)->GIni.GIYukon2) ? 10 : 16) /* 10/16 kB */ /* Minimum RAM Buffer Tx Queue Size */ -#define SK_MIN_TXQ_SIZE 16 /* 16 kB */ +#define SK_MIN_TXQ_SIZE (((pAC)->GIni.GIYukon2) ? 10 : 16) /* 10/16 kB */ -/* Queue Size units */ -#define QZ_UNITS 0x7 +/* Queue Size units (Genesis/Yukon) */ +#define QZ_UNITS 7 #define QZ_STEP 8 +/* Queue Size units (Yukon-2) */ +#define QZ_STEP_Y2 1 + /* Percentage of queue size from whole memory */ /* 80 % for receive */ -#define RAM_QUOTA_RX 80L -/* 0% for sync transfer */ -#define RAM_QUOTA_SYNC 0L +#define RAM_QUOTA_RX 80 +/* 0 % for sync transfer */ +#define RAM_QUOTA_SYNC 0 /* the rest (20%) is taken for async transfer */ -/* Get the rounded queue size in Bytes in 8k steps */ -#define ROUND_QUEUE_SIZE(SizeInBytes) \ - ((((unsigned long) (SizeInBytes) + (QZ_STEP*1024L)-1) / 1024) & \ - ~(QZ_STEP-1)) - -/* Get the rounded queue size in KBytes in 8k steps */ -#define ROUND_QUEUE_SIZE_KB(Kilobytes) \ - ROUND_QUEUE_SIZE((Kilobytes) * 1024L) - /* Types of RAM Buffer Queues */ #define SK_RX_SRAM_Q 1 /* small receive queue */ #define SK_RX_BRAM_Q 2 /* big receive queue */ @@ -167,11 +169,11 @@ /* Link Speed Capabilities */ -#define SK_LSPEED_CAP_AUTO (1<<0) /* Automatic resolution */ -#define SK_LSPEED_CAP_10MBPS (1<<1) /* 10 Mbps */ -#define SK_LSPEED_CAP_100MBPS (1<<2) /* 100 Mbps */ -#define SK_LSPEED_CAP_1000MBPS (1<<3) /* 1000 Mbps */ -#define SK_LSPEED_CAP_INDETERMINATED (1<<4) /* indeterminated */ +#define SK_LSPEED_CAP_AUTO BIT_0S /* Automatic resolution */ +#define SK_LSPEED_CAP_10MBPS BIT_1S /* 10 Mbps */ +#define SK_LSPEED_CAP_100MBPS BIT_2S /* 100 Mbps */ +#define SK_LSPEED_CAP_1000MBPS BIT_3S /* 1000 Mbps */ +#define SK_LSPEED_CAP_INDETERMINATED BIT_4S /* indeterminated */ /* Link Speed Parameter */ #define SK_LSPEED_AUTO 1 /* Automatic resolution */ @@ -189,11 +191,11 @@ /* Link Capability Parameter */ -#define SK_LMODE_CAP_HALF (1<<0) /* Half Duplex Mode */ -#define SK_LMODE_CAP_FULL (1<<1) /* Full Duplex Mode */ -#define SK_LMODE_CAP_AUTOHALF (1<<2) /* AutoHalf Duplex Mode */ -#define SK_LMODE_CAP_AUTOFULL (1<<3) /* AutoFull Duplex Mode */ -#define SK_LMODE_CAP_INDETERMINATED (1<<4) /* indeterminated */ +#define SK_LMODE_CAP_HALF BIT_0S /* Half Duplex Mode */ +#define SK_LMODE_CAP_FULL BIT_1S /* Full Duplex Mode */ +#define SK_LMODE_CAP_AUTOHALF BIT_2S /* AutoHalf Duplex Mode */ +#define SK_LMODE_CAP_AUTOFULL BIT_3S /* AutoFull Duplex Mode */ +#define SK_LMODE_CAP_INDETERMINATED BIT_4S /* indeterminated */ /* Link Mode Current State */ #define SK_LMODE_STAT_UNKNOWN 1 /* Unknown Duplex Mode */ @@ -220,10 +222,10 @@ #define SK_FLOW_STAT_INDETERMINATED 5 /* indeterminated */ /* Master/Slave Mode Capabilities */ -#define SK_MS_CAP_AUTO (1<<0) /* Automatic resolution */ -#define SK_MS_CAP_MASTER (1<<1) /* This station is master */ -#define SK_MS_CAP_SLAVE (1<<2) /* This station is slave */ -#define SK_MS_CAP_INDETERMINATED (1<<3) /* indeterminated */ +#define SK_MS_CAP_AUTO BIT_0S /* Automatic resolution */ +#define SK_MS_CAP_MASTER BIT_1S /* This station is master */ +#define SK_MS_CAP_SLAVE BIT_2S /* This station is slave */ +#define SK_MS_CAP_INDETERMINATED BIT_3S /* indeterminated */ /* Set Master/Slave Mode Parameter (and capabilities) */ #define SK_MS_MODE_AUTO 1 /* Automatic resolution */ @@ -238,25 +240,25 @@ #define SK_MS_STAT_FAULT 4 /* M/S resolution failed */ #define SK_MS_STAT_INDETERMINATED 5 /* indeterminated */ -/* parameter 'Mode' when calling SkXmSetRxCmd() */ -#define SK_STRIP_FCS_ON (1<<0) /* Enable FCS stripping of Rx frames */ -#define SK_STRIP_FCS_OFF (1<<1) /* Disable FCS stripping of Rx frames */ -#define SK_STRIP_PAD_ON (1<<2) /* Enable pad byte stripping of Rx fr */ -#define SK_STRIP_PAD_OFF (1<<3) /* Disable pad byte stripping of Rx fr */ -#define SK_LENERR_OK_ON (1<<4) /* Don't chk fr for in range len error */ -#define SK_LENERR_OK_OFF (1<<5) /* Check frames for in range len error */ -#define SK_BIG_PK_OK_ON (1<<6) /* Don't set Rx Error bit for big frames */ -#define SK_BIG_PK_OK_OFF (1<<7) /* Set Rx Error bit for big frames */ -#define SK_SELF_RX_ON (1<<8) /* Enable Rx of own packets */ -#define SK_SELF_RX_OFF (1<<9) /* Disable Rx of own packets */ +/* parameter 'Mode' when calling SkMacSetRxCmd() */ +#define SK_STRIP_FCS_ON BIT_0S /* Enable FCS stripping of Rx frames */ +#define SK_STRIP_FCS_OFF BIT_1S /* Disable FCS stripping of Rx frames */ +#define SK_STRIP_PAD_ON BIT_2S /* Enable pad byte stripping of Rx fr */ +#define SK_STRIP_PAD_OFF BIT_3S /* Disable pad byte stripping of Rx fr */ +#define SK_LENERR_OK_ON BIT_4S /* Don't chk fr for in range len error */ +#define SK_LENERR_OK_OFF BIT_5S /* Check frames for in range len error */ +#define SK_BIG_PK_OK_ON BIT_6S /* Don't set Rx Error bit for big frames */ +#define SK_BIG_PK_OK_OFF BIT_7S /* Set Rx Error bit for big frames */ +#define SK_SELF_RX_ON BIT_8S /* Enable Rx of own packets */ +#define SK_SELF_RX_OFF BIT_9S /* Disable Rx of own packets */ /* parameter 'Para' when calling SkMacSetRxTxEn() */ -#define SK_MAC_LOOPB_ON (1<<0) /* Enable MAC Loopback Mode */ -#define SK_MAC_LOOPB_OFF (1<<1) /* Disable MAC Loopback Mode */ -#define SK_PHY_LOOPB_ON (1<<2) /* Enable PHY Loopback Mode */ -#define SK_PHY_LOOPB_OFF (1<<3) /* Disable PHY Loopback Mode */ -#define SK_PHY_FULLD_ON (1<<4) /* Enable GMII Full Duplex */ -#define SK_PHY_FULLD_OFF (1<<5) /* Disable GMII Full Duplex */ +#define SK_MAC_LOOPB_ON BIT_0S /* Enable MAC Loopback Mode */ +#define SK_MAC_LOOPB_OFF BIT_1S /* Disable MAC Loopback Mode */ +#define SK_PHY_LOOPB_ON BIT_2S /* Enable PHY Loopback Mode */ +#define SK_PHY_LOOPB_OFF BIT_3S /* Disable PHY Loopback Mode */ +#define SK_PHY_FULLD_ON BIT_4S /* Enable GMII Full Duplex */ +#define SK_PHY_FULLD_OFF BIT_5S /* Disable GMII Full Duplex */ /* States of PState */ #define SK_PRT_RESET 0 /* the port is reset */ @@ -266,18 +268,24 @@ /* PHY power down modes */ #define PHY_PM_OPERATIONAL_MODE 0 /* PHY operational mode */ -#define PHY_PM_DEEP_SLEEP 1 /* coma mode --> minimal power */ +#define PHY_PM_DEEP_SLEEP 1 /* Coma mode --> minimal power */ #define PHY_PM_IEEE_POWER_DOWN 2 /* IEEE 22.2.4.1.5 compl. power down */ -#define PHY_PM_ENERGY_DETECT 3 /* energy detect */ -#define PHY_PM_ENERGY_DETECT_PLUS 4 /* energy detect plus */ +#define PHY_PM_ENERGY_DETECT 3 /* Energy detect */ +#define PHY_PM_ENERGY_DETECT_PLUS 4 /* Energy detect plus */ + +/* PCI Bus Types */ +#define SK_PCI_BUS BIT_0S /* normal PCI bus */ +#define SK_PCIX_BUS BIT_1S /* PCI-X bus */ +#define SK_PEX_BUS BIT_2S /* PCI-Express bus */ /* Default receive frame limit for Workaround of XMAC Errata */ #define SK_DEF_RX_WA_LIM SK_CONSTU64(100) /* values for GILedBlinkCtrl (LED Blink Control) */ -#define SK_ACT_LED_BLINK (1<<0) /* Active LED blinking */ -#define SK_DUP_LED_NORMAL (1<<1) /* Duplex LED normal */ -#define SK_LED_LINK100_ON (1<<2) /* Link 100M LED on */ +#define SK_ACT_LED_BLINK BIT_0S /* Active LED blinking */ +#define SK_DUP_LED_NORMAL BIT_1S /* Duplex LED normal */ +#define SK_LED_LINK100_ON BIT_2S /* Link 100M LED on */ +#define SK_DUAL_LED_ACT_LNK BIT_3S /* Dual LED ACT/LNK configuration */ /* Link Partner Status */ #define SK_LIPA_UNKNOWN 0 /* Link partner is in unknown state */ @@ -290,18 +298,165 @@ /* Max. Auto-neg. timeouts before link detection in sense mode is reset */ #define SK_MAX_ANEG_TO 10 /* Max. 10 times the sense mode is reset */ + +/****************************************************************************** + * + * HW_FEATURE() macro + */ + +/* DWORD 0: Features */ +#define HWF_RED_CORE_CLK_SUP 0x01000000UL /* Reduced Core Clock supp. */ +#define HWF_SYNC_TX_SUP 0x00800000UL /* synch Tx queue available */ +#define HWF_SINGLE_PORT_DEVICE 0x00400000UL /* device has only one LAN IF */ +#define HWF_JUMBO_FRAMES_SUP 0x00200000UL /* Jumbo frames supported */ +#define HWF_TX_TCP_CSUM_SUP 0x00100000UL /* TCP Tx checksum supported */ +#define HWF_TX_UDP_CSUM_SUP 0x00080000UL /* UDP Tx checksum supported */ +#define HWF_RX_CSUM_SUP 0x00040000UL /* RX checksum supported */ +#define HWF_TCP_SEGM_SUP 0x00020000UL /* TCP segmentation supported */ +#define HWF_RSS_HASH_SUP 0x00010000UL /* RSS Hash supported */ +#define HWF_PORT_VLAN_SUP 0x00008000UL /* VLAN can be config per port*/ +#define HWF_ROLE_PARAM_SUP 0x00004000UL /* Role parameter supported */ +#define HWF_LOW_PMODE_SUP 0x00002000UL /* Low Power Mode supported */ +#define HWF_ENERGIE_DEMO_SUP 0x00001000UL /* Energie detect mode supp. */ +#define HWF_SPEED1000_SUP 0x00000800UL /* Line Speed 1000 supported */ +#define HWF_SPEED100_SUP 0x00000400UL /* Line Speed 100 supported */ +#define HWF_SPEED10_SUP 0x00000200UL /* Line Speed 10 supported */ +#define HWF_AUTONEGSENSE_SUP 0x00000100UL /* Autoneg Sense supported */ +#define HWF_PHY_LOOPB_MD_SUP 0x00000080UL /* PHY loopback mode supp. */ +#define HWF_ASF_SUP 0x00000040UL /* ASF support possible */ +#define HWF_QS_STEPS_1KB 0x00000020UL /* The Rx/Tx queues can be */ + /* configured with 1 kB res. */ +#define HWF_OWN_RAM_PER_PORT 0x00000010UL /* Each port has a separate */ + /* RAM buffer */ +#define HWF_MIN_LED_IF 0x00000008UL /* Minimal LED interface */ + /* (e.g. for Yukon-EC) */ +#define HWF_LIST_ELEMENTS_USED 0x00000004UL /* HW uses list elements */ + /* (otherwise desc. are used) */ +#define HWF_GMAC_INSIDE 0x00000002UL /* device contains GMAC */ +#define HWF_TWSI_PRESENT 0x00000001UL /* TWSI sensor bus present */ + +/*-RMV- DWORD 1: Deviations */ +#define HWF_WA_DEV_4115 0x10010000UL /*-RMV- 4.115 (Rx MAC FIFO) */ +#define HWF_WA_DEV_4109 0x10008000UL /*-RMV- 4.109 (BIU hang) */ +#define HWF_WA_DEV_483 0x10004000UL /*-RMV- 4.83 (Rx TCP wrong) */ +#define HWF_WA_DEV_479 0x10002000UL /*-RMV- 4.79 (Rx BMU hang II) */ +#define HWF_WA_DEV_472 0x10001000UL /*-RMV- 4.72 (GPHY2 MDC clk) */ +#define HWF_WA_DEV_463 0x10000800UL /*-RMV- 4.63 (Rx BMU hang I) */ +#define HWF_WA_DEV_427 0x10000400UL /*-RMV- 4.27 (Tx Done Rep) */ +#define HWF_WA_DEV_42 0x10000200UL /*-RMV- 4.2 (pref unit burst) */ +#define HWF_WA_DEV_46 0x10000100UL /*-RMV- 4.6 (CPU crash II) */ +#define HWF_WA_DEV_43_418 0x10000080UL /*-RMV- 4.3 & 4.18 (PCI unexp */ + /*-RMV- compl&Stat BMU deadl) */ +#define HWF_WA_DEV_420 0x10000040UL /*-RMV- 4.20 (Status BMU ov) */ +#define HWF_WA_DEV_423 0x10000020UL /*-RMV- 4.23 (TCP Segm Hang) */ +#define HWF_WA_DEV_424 0x10000010UL /*-RMV- 4.24 (MAC reg overwr) */ +#define HWF_WA_DEV_425 0x10000008UL /*-RMV- 4.25 (Magic packet */ + /*-RMV- with odd offset) */ +#define HWF_WA_DEV_428 0x10000004UL /*-RMV- 4.28 (Poll-U &BigEndi)*/ +#define HWF_WA_FIFO_FLUSH_YLA0 0x10000002UL /*-RMV- dis Rx GMAC FIFO Flush*/ + /*-RMV- for Yu-L Rev. A0 only */ +#define HWF_WA_COMA_MODE 0x10000001UL /*-RMV- Coma Mode WA req */ + +/* DWORD 2: still unused */ +/* DWORD 3: still unused */ + + +/* + * HW_FEATURE() - returns whether the feature is serviced or not + */ +#define HW_FEATURE(pAC, ReqFeature) \ + (((pAC)->GIni.HwF.Features[((ReqFeature) & 0x30000000UL) >> 28] &\ + ((ReqFeature) & 0x0fffffffUL)) != 0) + +#define HW_FEAT_LIST 0 +#define HW_DEV_LIST 1 + +#define SET_HW_FEATURE_MASK(pAC, List, OffMaskValue, OnMaskValue) { \ + if ((List) == HW_FEAT_LIST || (List) == HW_DEV_LIST) { \ + (pAC)->GIni.HwF.OffMask[List] = (OffMaskValue); \ + (pAC)->GIni.HwF.OnMask[List] = (OnMaskValue); \ + } \ +} + +/* driver access macros for GIni structure ***********************************/ + +#define CHIP_ID_YUKON_2(pAC) ((pAC)->GIni.GIYukon2) +#define HW_SYNC_TX_SUPPORTED(pAC) \ + ((pAC)->GIni.GIChipId != CHIP_ID_YUKON_EC && \ + (pAC)->GIni.GIChipId != CHIP_ID_YUKON_FE) + +#define HW_MS_TO_TICKS(pAC, MsTime) \ + ((MsTime) * (62500L/100) * (pAC)->GIni.GIHstClkFact) + +#ifdef XXX +/* still under construction */ +#define HW_IS_SINGLE_PORT(pAC) ((pAC)->GIni.GIMacsFound == 1) +#define HW_NUMBER_OF_PORTS(pAC) ((pAC)->GIni.GIMacsFound) + +#define HW_TX_UDP_CSUM_SUPPORTED(pAC) \ + ((((pAC)->GIni.GIChipId >= CHIP_ID_YUKON) && ((pAC)->GIni.GIChipRev != 0)) + +#define HW_DEFAULT_LINESPEED(pAC) \ + ((!(pAC)->GIni.GIGenesis && (pAC)->GIni.GICopperType) ? \ + SK_LSPEED_AUTO : SK_LSPEED_1000MBPS) + +#define HW_ROLE_PARAM_SUPPORTED(pAC) ((pAC)->GIni.GICopperType) + +#define HW_SPEED1000_SUPPORTED(pAC, Port) \ + ((pAC)->GIni.GP[Port].PLinkSpeedCap & SK_LSPEED_CAP_1000MBPS) + +#define HW_SPEED100_SUPPORTED(pAC, Port) \ + ((pAC)->GIni.GP[Port].PLinkSpeedCap & SK_LSPEED_CAP_100MBPS) + +#define HW_SPEED10_SUPPORTED(pAC, Port) \ + ((pAC)->GIni.GP[Port].PLinkSpeedCap & SK_LSPEED_CAP_10MBPS) + +#define HW_AUTONEGSENSE_SUPPORTED(pAC) ((pAC)->GIni.GP[0].PhyType==SK_PHY_XMAC) + +#define HW_FREQ_TO_CARD_TICKS(pAC, AdapterClkSpeed, Freq) \ + (((AdapterClkSpeed / 100) * (pAC)->GIni.GIHstClkFact) / Freq) + +#define HW_IS_LINK_UP(pAC, Port) ((pAC)->GIni.GP[Port].PHWLinkUp) +#define HW_LINK_SPEED_USED(pAC, Port) ((pAC)->GIni.GP[Port].PLinkSpeedUsed) +#define HW_RAM_SIZE(pAC) ((pAC)->GIni.GIRamSize) + +#define HW_PHY_LP_MODE_SUPPORTED(pAC) (pAC0->??? +#define HW_ASF_ACTIVE(pAC) ??? +#define RAWIO_OUT32(pAC, pAC->RegIrqMask, pAC->GIni.GIValIrqMask)... + +/* macro to check whether Tx checksum is supported */ +#define HW_TX_CSUM_SUPPORTED(pAC) ((pAC)->GIni.GIChipId != CHIP_ID_GENESIS) + +BMU_UDP_CHECK : BMU_TCP_CHECK; + +/* macro for - Own Bit mirrored to DWORD7 (Yukon LP receive descriptor) */ +#endif /* 0 */ + + /* structures *****************************************************************/ /* + * HW Feature structure + */ +typedef struct s_HwFeatures { + SK_U32 Features[4]; /* Feature list */ + SK_U32 OffMask[4]; /* Off Mask */ + SK_U32 OnMask[4]; /* On Mask */ +} SK_HW_FEATURES; + +/* * MAC specific functions */ typedef struct s_GeMacFunc { - int (*pFnMacUpdateStats)(SK_AC *pAC, SK_IOC IoC, unsigned int Port); - int (*pFnMacStatistic)(SK_AC *pAC, SK_IOC IoC, unsigned int Port, - SK_U16 StatAddr, SK_U32 SK_FAR *pVal); - int (*pFnMacResetCounter)(SK_AC *pAC, SK_IOC IoC, unsigned int Port); - int (*pFnMacOverflow)(SK_AC *pAC, SK_IOC IoC, unsigned int Port, - SK_U16 IStatus, SK_U64 SK_FAR *pVal); + int (*pFnMacUpdateStats)(SK_AC *, SK_IOC, unsigned int); + int (*pFnMacStatistic)(SK_AC *, SK_IOC, unsigned int, SK_U16, SK_U32 SK_FAR *); + int (*pFnMacResetCounter)(SK_AC *, SK_IOC, unsigned int); + int (*pFnMacOverflow)(SK_AC *, SK_IOC, unsigned int, SK_U16, SK_U64 SK_FAR *); + void (*pSkGeSirqIsr)(SK_AC *, SK_IOC, SK_U32); +#ifdef SK_DIAG + int (*pFnMacPhyRead)(SK_AC *, SK_IOC, int, int, SK_U16 SK_FAR *); + int (*pFnMacPhyWrite)(SK_AC *, SK_IOC, int, int, SK_U16); +#endif /* SK_DIAG */ } SK_GEMACFUNC; /* @@ -311,7 +466,7 @@ #ifndef SK_DIAG SK_TIMER PWaTimer; /* Workaround Timer */ SK_TIMER HalfDupChkTimer; -#endif /* SK_DIAG */ +#endif /* !SK_DIAG */ SK_U32 PPrevShorts; /* Previous Short Counter checking */ SK_U32 PPrevFcs; /* Previous FCS Error Counter checking */ SK_U64 PPrevRx; /* Previous RxOk Counter checking */ @@ -335,6 +490,7 @@ int PXaQOff; /* Asynchronous Tx Queue Address Offset */ int PhyType; /* PHY used on this port */ int PState; /* Port status (reset, stop, init, run) */ + int PPortUsage; /* Driver Port Usage */ SK_U16 PhyId1; /* PHY Id1 on this port */ SK_U16 PhyAddr; /* MDIO/MDC PHY address */ SK_U16 PIsave; /* Saved Interrupt status word */ @@ -367,6 +523,8 @@ int PMacJamLen; /* MAC Jam length */ int PMacJamIpgVal; /* MAC Jam IPG */ int PMacJamIpgData; /* MAC IPG Jam to Data */ + int PMacBackOffLim; /* MAC Back-off Limit */ + int PMacDataBlind; /* MAC Data Blinder */ int PMacIpgData; /* MAC Data IPG */ SK_BOOL PMacLimit4; /* reset collision counter and backoff algorithm */ } SK_GEPORT; @@ -379,27 +537,37 @@ int GIChipId; /* Chip Identification Number */ int GIChipRev; /* Chip Revision Number */ SK_U8 GIPciHwRev; /* PCI HW Revision Number */ + SK_U8 GIPciBus; /* PCI Bus Type (PCI / PCI-X / PCI-Express) */ + SK_U8 GIPciMode; /* PCI / PCI-X Mode @ Clock */ + SK_U8 GIPexWidth; /* PCI-Express Negotiated Link Width */ SK_BOOL GIGenesis; /* Genesis adapter ? */ - SK_BOOL GIYukon; /* YUKON-A1/Bx chip */ + SK_BOOL GIYukon; /* YUKON family (1 and 2) */ SK_BOOL GIYukonLite; /* YUKON-Lite chip */ + SK_BOOL GIYukon2; /* YUKON-2 chip (-XL, -EC or -FE) */ + SK_U8 GIConTyp; /* Connector Type */ + SK_U8 GIPmdTyp; /* PMD Type */ SK_BOOL GICopperType; /* Copper Type adapter ? */ SK_BOOL GIPciSlot64; /* 64-bit PCI Slot */ SK_BOOL GIPciClock66; /* 66 MHz PCI Clock */ SK_BOOL GIVauxAvail; /* VAUX available (YUKON) */ SK_BOOL GIYukon32Bit; /* 32-Bit YUKON adapter */ + SK_BOOL GIAsfEnabled; /* ASF subsystem enabled */ + SK_BOOL GIAsfRunning; /* ASF subsystem running */ SK_U16 GILedBlinkCtrl; /* LED Blink Control */ int GIMacsFound; /* Number of MACs found on this adapter */ int GIMacType; /* MAC Type used on this adapter */ - int GIHstClkFact; /* Host Clock Factor (62.5 / HstClk * 100) */ - int GIPortUsage; /* Driver Port Usage */ + int GIChipCap; /* Adapter's Capabilities */ + int GIHstClkFact; /* Host Clock Factor (HstClk / 62.5 * 100) */ int GILevel; /* Initialization Level completed */ int GIRamSize; /* The RAM size of the adapter in kB */ int GIWolOffs; /* WOL Register Offset (HW-Bug in Rev. A) */ SK_U32 GIRamOffs; /* RAM Address Offset for addr calculation */ SK_U32 GIPollTimerVal; /* Descr. Poll Timer Init Val (HstClk ticks) */ SK_U32 GIValIrqMask; /* Value for Interrupt Mask */ + SK_U32 GIValHwIrqMask; /* Value for Interrupt Mask */ SK_U32 GITimeStampCnt; /* Time Stamp High Counter (YUKON only) */ SK_GEPORT GP[SK_MAX_MACS];/* Port Dependent Information */ + SK_HW_FEATURES HwF; /* HW Features struct */ SK_GEMACFUNC GIFunc; /* MAC depedent functions */ } SK_GEINIT; @@ -417,7 +585,7 @@ #define SKERR_HWI_E005 (SKERR_HWI_E004+1) #define SKERR_HWI_E005MSG "SkGeInitPort(): cannot init running ports" #define SKERR_HWI_E006 (SKERR_HWI_E005+1) -#define SKERR_HWI_E006MSG "SkGeMacInit(): PState does not match HW state" +#define SKERR_HWI_E006MSG "unused" #define SKERR_HWI_E007 (SKERR_HWI_E006+1) #define SKERR_HWI_E007MSG "SkXmInitDupMd() called with invalid Dup Mode" #define SKERR_HWI_E008 (SKERR_HWI_E007+1) @@ -433,11 +601,11 @@ #define SKERR_HWI_E013 (SKERR_HWI_E012+1) #define SKERR_HWI_E013MSG "SkGeInitPort(): cfg changed for running queue" #define SKERR_HWI_E014 (SKERR_HWI_E013+1) -#define SKERR_HWI_E014MSG "SkGeInitPort(): unknown GIPortUsage specified" +#define SKERR_HWI_E014MSG "SkGeInitPort(): unknown PortUsage specified" #define SKERR_HWI_E015 (SKERR_HWI_E014+1) -#define SKERR_HWI_E015MSG "Illegal Link mode parameter" +#define SKERR_HWI_E015MSG "Illegal Link Mode parameter" #define SKERR_HWI_E016 (SKERR_HWI_E015+1) -#define SKERR_HWI_E016MSG "Illegal Flow control mode parameter" +#define SKERR_HWI_E016MSG "Illegal Flow Control Mode parameter" #define SKERR_HWI_E017 (SKERR_HWI_E016+1) #define SKERR_HWI_E017MSG "Illegal value specified for GIPollTimerVal" #define SKERR_HWI_E018 (SKERR_HWI_E017+1) @@ -447,9 +615,9 @@ #define SKERR_HWI_E020 (SKERR_HWI_E019+1) #define SKERR_HWI_E020MSG "Illegal Master/Slave parameter" #define SKERR_HWI_E021 (SKERR_HWI_E020+1) -#define SKERR_HWI_E021MSG "MacUpdateStats(): cannot update statistic counter" -#define SKERR_HWI_E022 (SKERR_HWI_E021+1) -#define SKERR_HWI_E022MSG "MacStatistic(): illegal statistic base address" +#define SKERR_HWI_E021MSG "MacUpdateStats(): cannot update statistic counter" +#define SKERR_HWI_E022 (SKERR_HWI_E021+1) +#define SKERR_HWI_E022MSG "MacStatistic(): illegal statistic base address" #define SKERR_HWI_E023 (SKERR_HWI_E022+1) #define SKERR_HWI_E023MSG "SkGeInitPort(): Transmit Queue Size too small" #define SKERR_HWI_E024 (SKERR_HWI_E023+1) @@ -464,6 +632,24 @@ /* * public functions in skgeinit.c */ +extern void SkGePortVlan( + SK_AC *pAC, + SK_IOC IoC, + int Port, + SK_BOOL Enable); + +extern void SkGeRxRss( + SK_AC *pAC, + SK_IOC IoC, + int Port, + SK_BOOL Enable); + +extern void SkGeRxCsum( + SK_AC *pAC, + SK_IOC IoC, + int Port, + SK_BOOL Enable); + extern void SkGePollRxD( SK_AC *pAC, SK_IOC IoC, @@ -601,13 +787,13 @@ int Port, SK_U16 IStatus); -extern void SkMacSetRxTxEn( +extern void SkMacSetRxTxEn( SK_AC *pAC, SK_IOC IoC, int Port, int Para); -extern int SkMacRxTxEnable( +extern int SkMacRxTxEnable( SK_AC *pAC, SK_IOC IoC, int Port); @@ -624,28 +810,28 @@ int Port, SK_BOOL Enable); -extern void SkXmPhyRead( +extern int SkXmPhyRead( SK_AC *pAC, SK_IOC IoC, int Port, int Addr, SK_U16 SK_FAR *pVal); -extern void SkXmPhyWrite( +extern int SkXmPhyWrite( SK_AC *pAC, SK_IOC IoC, int Port, int Addr, SK_U16 Val); -extern void SkGmPhyRead( +extern int SkGmPhyRead( SK_AC *pAC, SK_IOC IoC, int Port, int Addr, SK_U16 SK_FAR *pVal); -extern void SkGmPhyWrite( +extern int SkGmPhyWrite( SK_AC *pAC, SK_IOC IoC, int Port, @@ -713,7 +899,7 @@ SK_AC *pAC, SK_IOC IoC, unsigned int Port, - SK_U16 IStatus, + SK_U16 IStatus, SK_U64 SK_FAR *pStatus); extern int SkGmOverflowStatus( @@ -729,6 +915,7 @@ int Port, SK_BOOL StartTest); +#ifdef SK_PHY_LP_MODE extern int SkGmEnterLowPowerMode( SK_AC *pAC, SK_IOC IoC, @@ -739,6 +926,7 @@ SK_AC *pAC, SK_IOC IoC, int Port); +#endif /* SK_PHY_LP_MODE */ #ifdef SK_DIAG extern void SkGePhyRead( @@ -794,6 +982,9 @@ extern void SkGeXmitLED(); extern void SkGeInitRamIface(); extern int SkGeInitAssignRamToQueues(); +extern void SkGePortVlan(); +extern void SkGeRxCsum(); +extern void SkGeRxRss(); /* * public functions in skxmac2.c @@ -803,7 +994,7 @@ extern void SkMacHardRst(); extern void SkMacClearRst(); extern void SkMacInitPhy(); -extern int SkMacRxTxEnable(); +extern int SkMacRxTxEnable(); extern void SkMacPromiscMode(); extern void SkMacHashing(); extern void SkMacIrqDisable(); @@ -814,11 +1005,11 @@ extern void SkMacAutoNegLipaPhy(); extern void SkMacSetRxTxEn(); extern void SkXmInitMac(); -extern void SkXmPhyRead(); -extern void SkXmPhyWrite(); +extern int SkXmPhyRead(); +extern int SkXmPhyWrite(); extern void SkGmInitMac(); -extern void SkGmPhyRead(); -extern void SkGmPhyWrite(); +extern int SkGmPhyRead(); +extern int SkGmPhyWrite(); extern void SkXmClrExactAddr(); extern void SkXmInitDupMd(); extern void SkXmInitPauseMd(); @@ -832,8 +1023,10 @@ extern int SkXmOverflowStatus(); extern int SkGmOverflowStatus(); extern int SkGmCableDiagStatus(); +#ifdef SK_PHY_LP_MODE extern int SkGmEnterLowPowerMode(); extern int SkGmLeaveLowPowerMode(); +#endif /* SK_PHY_LP_MODE */ #ifdef SK_DIAG extern void SkGePhyRead(); @@ -844,10 +1037,11 @@ extern void SkXmSendCont(); #endif /* SK_DIAG */ -#endif /* SK_KR_PROTO */ +#endif /* SK_KR_PROTO */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __INC_SKGEINIT_H_ */ + --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skrlmt.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skrlmt.h @@ -2,8 +2,8 @@ * * Name: skrlmt.h * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.37 $ - * Date: $Date: 2003/04/15 09:43:43 $ + * Version: $Revision: 2.1 $ + * Date: $Date: 2003/10/27 14:16:09 $ * Purpose: Header file for Redundant Link ManagemenT. * ******************************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skcsum.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skcsum.h @@ -2,8 +2,8 @@ * * Name: skcsum.h * Project: GEnesis - SysKonnect SK-NET Gigabit Ethernet (SK-98xx) - * Version: $Revision: 1.10 $ - * Date: $Date: 2003/08/20 13:59:57 $ + * Version: $Revision: 2.2 $ + * Date: $Date: 2003/12/29 15:37:26 $ * Purpose: Store/verify Internet checksum in send/receive packets. * ******************************************************************************/ @@ -157,9 +157,7 @@ typedef struct s_Csum { /* Enabled receive SK_PROTO_XXX bit flags. */ unsigned ReceiveFlags[SK_MAX_NETS]; -#ifdef TX_CSUM unsigned TransmitFlags[SK_MAX_NETS]; -#endif /* TX_CSUM */ /* The protocol statistics structure; one per supported protocol. */ SKCS_PROTO_STATS ProtoStats[SK_MAX_NETS][SKCS_NUM_PROTOCOLS]; --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skgedrv.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skgedrv.h @@ -2,8 +2,8 @@ * * Name: skgedrv.h * Project: Gigabit Ethernet Adapters, Common Modules - * Version: $Revision: 1.10 $ - * Date: $Date: 2003/07/04 12:25:01 $ + * Version: $Revision: 2.1 $ + * Date: $Date: 2003/10/27 14:16:08 $ * Purpose: Interface with the driver * ******************************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skgesirq.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skgesirq.h @@ -2,22 +2,21 @@ * * Name: skgesirq.h * Project: Gigabit Ethernet Adapters, Common Modules - * Version: $Revision: 1.30 $ - * Date: $Date: 2003/07/04 12:34:13 $ - * Purpose: SK specific Gigabit Ethernet special IRQ functions + * Version: $Revision: 2.3 $ + * Date: $Date: 2004/05/28 14:42:03 $ + * Purpose: Gigabit Ethernet special IRQ functions * ******************************************************************************/ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2004 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * * The information in this file is provided "AS IS" without warranty. * ******************************************************************************/ @@ -44,10 +43,10 @@ #define SK_HWEV_SET_SPEED 9 /* Set Link Speed by PNMI */ #define SK_HWEV_HALFDUP_CHK 10 /* Half Duplex Hangup Workaround */ -#define SK_WA_ACT_TIME (5000000UL) /* 5 sec */ -#define SK_WA_INA_TIME (100000UL) /* 100 msec */ +#define SK_WA_ACT_TIME 1000000UL /* 1000 msec (1 sec) */ +#define SK_WA_INA_TIME 100000UL /* 100 msec */ -#define SK_HALFDUP_CHK_TIME (10000UL) /* 10 msec */ +#define SK_HALFDUP_CHK_TIME 10000UL /* 10 msec */ /* * Define the error numbers and messages @@ -102,10 +101,35 @@ #define SKERR_SIRQ_E024MSG "FIFO overflow error" #define SKERR_SIRQ_E025 (SKERR_SIRQ_E024+1) #define SKERR_SIRQ_E025MSG "2 Pair Downshift detected" +#define SKERR_SIRQ_E026 (SKERR_SIRQ_E025+1) +#define SKERR_SIRQ_E026MSG "Uncorrectable PCI Express error" +#define SKERR_SIRQ_E027 (SKERR_SIRQ_E026+1) +#define SKERR_SIRQ_E027MSG "PCI express protocol violation error" +#define SKERR_SIRQ_E028 (SKERR_SIRQ_E027+1) +#define SKERR_SIRQ_E028MSG "Parity error on RAM 1 (read)" +#define SKERR_SIRQ_E029 (SKERR_SIRQ_E028+1) +#define SKERR_SIRQ_E029MSG "Parity error on RAM 1 (write)" +#define SKERR_SIRQ_E030 (SKERR_SIRQ_E029+1) +#define SKERR_SIRQ_E030MSG "Parity error on RAM 2 (read)" +#define SKERR_SIRQ_E031 (SKERR_SIRQ_E030+1) +#define SKERR_SIRQ_E031MSG "Parity error on RAM 2 (write)" +#define SKERR_SIRQ_E032 (SKERR_SIRQ_E031+1) +#define SKERR_SIRQ_E032MSG "TCP segmentation error async. queue 1" +#define SKERR_SIRQ_E033 (SKERR_SIRQ_E032+1) +#define SKERR_SIRQ_E033MSG "TCP segmentation error sync. queue 1" +#define SKERR_SIRQ_E034 (SKERR_SIRQ_E033+1) +#define SKERR_SIRQ_E034MSG "TCP segmentation error async. queue 2" +#define SKERR_SIRQ_E035 (SKERR_SIRQ_E034+1) +#define SKERR_SIRQ_E035MSG "TCP segmentation error sync. queue 2" +#define SKERR_SIRQ_E036 (SKERR_SIRQ_E035+1) +#define SKERR_SIRQ_E036MSG "CHECK failure polling unit" extern void SkGeSirqIsr(SK_AC *pAC, SK_IOC IoC, SK_U32 Istatus); extern int SkGeSirqEvent(SK_AC *pAC, SK_IOC IoC, SK_U32 Event, SK_EVPARA Para); extern void SkHWLinkUp(SK_AC *pAC, SK_IOC IoC, int Port); extern void SkHWLinkDown(SK_AC *pAC, SK_IOC IoC, int Port); +extern void SkGeYuSirqIsr(SK_AC *pAC, SK_IOC IoC, SK_U32 Istatus); +extern void SkYuk2SirqIsr(SK_AC *pAC, SK_IOC IoC, SK_U32 Istatus); #endif /* _INC_SKGESIRQ_H_ */ + --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skgepnmi.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skgepnmi.h @@ -1,9 +1,9 @@ /***************************************************************************** * * Name: skgepnmi.h - * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.62 $ - * Date: $Date: 2003/08/15 12:31:52 $ + * Project: Gigabit Ethernet Adapters, PNMI-Module + * Version: $Revision: 2.9 $ + * Date: $Date: 2004/10/26 12:42:39 $ * Purpose: Defines for Private Network Management Interface * ****************************************************************************/ @@ -31,7 +31,7 @@ #include "h/sktypes.h" #include "h/skerror.h" #include "h/sktimer.h" -#include "h/ski2c.h" +#include "h/sktwsi.h" #include "h/skaddr.h" #include "h/skrlmt.h" #include "h/skvpd.h" @@ -41,7 +41,6 @@ */ #define SK_PNMI_MDB_VERSION 0x00030001 /* 3.1 */ - /* * Event definitions */ @@ -54,16 +53,13 @@ #define SK_PNMI_EVT_UTILIZATION_TIMER 7 /* Timer event for Utiliza. */ #define SK_PNMI_EVT_CLEAR_COUNTER 8 /* Clear statistic counters */ #define SK_PNMI_EVT_XMAC_RESET 9 /* XMAC will be reset */ - #define SK_PNMI_EVT_RLMT_PORT_UP 10 /* Port came logically up */ #define SK_PNMI_EVT_RLMT_PORT_DOWN 11 /* Port went logically down */ #define SK_PNMI_EVT_RLMT_SEGMENTATION 13 /* Two SP root bridges found */ #define SK_PNMI_EVT_RLMT_ACTIVE_DOWN 14 /* Port went logically down */ #define SK_PNMI_EVT_RLMT_ACTIVE_UP 15 /* Port came logically up */ -#define SK_PNMI_EVT_RLMT_SET_NETS 16 /* 1. Parameter is number of nets - 1 = single net; 2 = dual net */ -#define SK_PNMI_EVT_VCT_RESET 17 /* VCT port reset timer event started with SET. */ - +#define SK_PNMI_EVT_RLMT_SET_NETS 16 /* Number of nets (1 or 2). */ +#define SK_PNMI_EVT_VCT_RESET 17 /* VCT port reset timer event started with SET. */ /* * Return values @@ -78,7 +74,6 @@ #define SK_PNMI_ERR_UNKNOWN_NET 7 #define SK_PNMI_ERR_NOT_SUPPORTED 10 - /* * Return values of driver reset function SK_DRIVER_RESET() and * driver event function SK_DRIVER_EVENT() @@ -86,19 +81,17 @@ #define SK_PNMI_ERR_OK 0 #define SK_PNMI_ERR_FAIL 1 - /* * Return values of driver test function SK_DRIVER_SELFTEST() */ #define SK_PNMI_TST_UNKNOWN (1 << 0) -#define SK_PNMI_TST_TRANCEIVER (1 << 1) +#define SK_PNMI_TST_TRANCEIVER (1 << 1) #define SK_PNMI_TST_ASIC (1 << 2) #define SK_PNMI_TST_SENSOR (1 << 3) -#define SK_PNMI_TST_POWERMGMT (1 << 4) +#define SK_PNMI_TST_POWERMGMT (1 << 4) #define SK_PNMI_TST_PCI (1 << 5) #define SK_PNMI_TST_MAC (1 << 6) - /* * RLMT specific definitions */ @@ -352,6 +345,7 @@ #define OID_SKGE_VCT_GET 0xFF020200 #define OID_SKGE_VCT_SET 0xFF020201 #define OID_SKGE_VCT_STATUS 0xFF020202 +#define OID_SKGE_VCT_CAPABILITIES 0xFF020203 #ifdef SK_DIAG_SUPPORT /* Defines for driver DIAG mode. */ @@ -367,22 +361,69 @@ #define OID_SKGE_PHY_TYPE 0xFF020215 #define OID_SKGE_PHY_LP_MODE 0xFF020216 +/* + * Added for new DualNet IM driver V2 + * these OIDs should later be in pnmi.h + */ +#define OID_SKGE_MAC_COUNT 0xFF020217 +#define OID_SKGE_DUALNET_MODE 0xFF020218 +#define OID_SKGE_SET_TAGHEADER 0xFF020219 + +#ifdef SK_ASF +/* Defines for ASF */ +#define OID_SKGE_ASF 0xFF02021a +#define OID_SKGE_ASF_STORE_CONFIG 0xFF02021b +#define OID_SKGE_ASF_ENA 0xFF02021c +#define OID_SKGE_ASF_RETRANS 0xFF02021d +#define OID_SKGE_ASF_RETRANS_INT 0xFF02021e +#define OID_SKGE_ASF_HB_ENA 0xFF02021f +#define OID_SKGE_ASF_HB_INT 0xFF020220 +#define OID_SKGE_ASF_WD_ENA 0xFF020221 +#define OID_SKGE_ASF_WD_TIME 0xFF020222 +#define OID_SKGE_ASF_IP_SOURCE 0xFF020223 +#define OID_SKGE_ASF_MAC_SOURCE 0xFF020224 +#define OID_SKGE_ASF_IP_DEST 0xFF020225 +#define OID_SKGE_ASF_MAC_DEST 0xFF020226 +#define OID_SKGE_ASF_COMMUNITY_NAME 0xFF020227 +#define OID_SKGE_ASF_RSP_ENA 0xFF020228 +#define OID_SKGE_ASF_RETRANS_COUNT_MIN 0xFF020229 +#define OID_SKGE_ASF_RETRANS_COUNT_MAX 0xFF02022a +#define OID_SKGE_ASF_RETRANS_INT_MIN 0xFF02022b +#define OID_SKGE_ASF_RETRANS_INT_MAX 0xFF02022c +#define OID_SKGE_ASF_HB_INT_MIN 0xFF02022d +#define OID_SKGE_ASF_HB_INT_MAX 0xFF02022e +#define OID_SKGE_ASF_WD_TIME_MIN 0xFF02022f +#define OID_SKGE_ASF_WD_TIME_MAX 0xFF020230 +#define OID_SKGE_ASF_HB_CAP 0xFF020231 +#define OID_SKGE_ASF_WD_TIMER_RES 0xFF020232 +#define OID_SKGE_ASF_GUID 0xFF020233 +#define OID_SKGE_ASF_KEY_OP 0xFF020234 +#define OID_SKGE_ASF_KEY_ADM 0xFF020235 +#define OID_SKGE_ASF_KEY_GEN 0xFF020236 +#define OID_SKGE_ASF_CAP 0xFF020237 +#define OID_SKGE_ASF_PAR_1 0xFF020238 +#define OID_SKGE_ASF_OVERALL_OID 0xFF020239 +#define OID_SKGE_ASF_FWVER_OID 0xFF020240 +#define OID_SKGE_ASF_ACPI_OID 0xFF020241 +#define OID_SKGE_ASF_SMBUS_OID 0xFF020242 +#endif /* SK_ASF */ + /* VCT struct to store a backup copy of VCT data after a port reset. */ typedef struct s_PnmiVct { SK_U8 VctStatus; - SK_U8 PCableLen; - SK_U32 PMdiPairLen[4]; - SK_U8 PMdiPairSts[4]; + SK_U8 CableLen; + SK_U32 MdiPairLen[4]; + SK_U8 MdiPairSts[4]; } SK_PNMI_VCT; /* VCT status values (to be given to CPA via OID_SKGE_VCT_STATUS). */ -#define SK_PNMI_VCT_NONE 0 -#define SK_PNMI_VCT_OLD_VCT_DATA 1 -#define SK_PNMI_VCT_NEW_VCT_DATA 2 -#define SK_PNMI_VCT_OLD_DSP_DATA 4 -#define SK_PNMI_VCT_NEW_DSP_DATA 8 -#define SK_PNMI_VCT_RUNNING 16 +#define SK_PNMI_VCT_NONE 0x00 +#define SK_PNMI_VCT_OLD_VCT_DATA 0x01 +#define SK_PNMI_VCT_NEW_VCT_DATA 0x02 +#define SK_PNMI_VCT_OLD_DSP_DATA 0x04 +#define SK_PNMI_VCT_NEW_DSP_DATA 0x08 +#define SK_PNMI_VCT_RUNNING 0x10 /* VCT cable test status. */ @@ -390,7 +431,12 @@ #define SK_PNMI_VCT_SHORT_CABLE 1 #define SK_PNMI_VCT_OPEN_CABLE 2 #define SK_PNMI_VCT_TEST_FAIL 3 -#define SK_PNMI_VCT_IMPEDANCE_MISMATCH 4 +#define SK_PNMI_VCT_IMPEDANCE_MISMATCH 4 +#define SK_PNMI_VCT_NOT_PRESENT 5 + +/* VCT capabilities (needed for OID_SKGE_VCT_CAPABILITIES. */ +#define SK_PNMI_VCT_SUPPORTED 1 +#define SK_PNMI_VCT_NOT_SUPPORTED 0 #define OID_SKGE_TRAP_SEN_WAR_LOW 500 #define OID_SKGE_TRAP_SEN_WAR_UPP 501 @@ -419,7 +465,6 @@ #define SK_SET_FULL_MIB 5 #define SK_PRESET_FULL_MIB 6 - /* * Define error numbers and messages for syslog */ @@ -452,7 +497,7 @@ #define SK_PNMI_ERR014 (SK_ERRBASE_PNMI + 14) #define SK_PNMI_ERR014MSG "Vpd: Cannot read VPD keys" #define SK_PNMI_ERR015 (SK_ERRBASE_PNMI + 15) -#define SK_PNMI_ERR015MSG "Vpd: Internal array for VPD keys to small" +#define SK_PNMI_ERR015MSG "Vpd: Internal array for VPD keys too small" #define SK_PNMI_ERR016 (SK_ERRBASE_PNMI + 16) #define SK_PNMI_ERR016MSG "Vpd: Key string too long" #define SK_PNMI_ERR017 (SK_ERRBASE_PNMI + 17) @@ -494,9 +539,9 @@ #define SK_PNMI_ERR036 (SK_ERRBASE_PNMI + 36) #define SK_PNMI_ERR036MSG "" #define SK_PNMI_ERR037 (SK_ERRBASE_PNMI + 37) -#define SK_PNMI_ERR037MSG "Rlmt: SK_RLMT_MODE_CHANGE event return not 0" +#define SK_PNMI_ERR037MSG "Rlmt: SK_RLMT_MODE_CHANGE event returned not 0" #define SK_PNMI_ERR038 (SK_ERRBASE_PNMI + 38) -#define SK_PNMI_ERR038MSG "Rlmt: SK_RLMT_PREFPORT_CHANGE event return not 0" +#define SK_PNMI_ERR038MSG "Rlmt: SK_RLMT_PREFPORT_CHANGE event returned not 0" #define SK_PNMI_ERR039 (SK_ERRBASE_PNMI + 39) #define SK_PNMI_ERR039MSG "RlmtStat: Unknown OID" #define SK_PNMI_ERR040 (SK_ERRBASE_PNMI + 40) @@ -514,9 +559,9 @@ #define SK_PNMI_ERR046 (SK_ERRBASE_PNMI + 46) #define SK_PNMI_ERR046MSG "Monitor: Unknown OID" #define SK_PNMI_ERR047 (SK_ERRBASE_PNMI + 47) -#define SK_PNMI_ERR047MSG "SirqUpdate: Event function returns not 0" +#define SK_PNMI_ERR047MSG "SirqUpdate: Event function returned not 0" #define SK_PNMI_ERR048 (SK_ERRBASE_PNMI + 48) -#define SK_PNMI_ERR048MSG "RlmtUpdate: Event function returns not 0" +#define SK_PNMI_ERR048MSG "RlmtUpdate: Event function returned not 0" #define SK_PNMI_ERR049 (SK_ERRBASE_PNMI + 49) #define SK_PNMI_ERR049MSG "SkPnmiInit: Invalid size of 'CounterOffset' struct!!" #define SK_PNMI_ERR050 (SK_ERRBASE_PNMI + 50) @@ -826,23 +871,25 @@ } SK_PNMI_STRUCT_DATA; #define SK_PNMI_STRUCT_SIZE (sizeof(SK_PNMI_STRUCT_DATA)) + +/* The ReturnStatus field must be located before VpdFreeBytes! */ #define SK_PNMI_MIN_STRUCT_SIZE ((unsigned int)(SK_UPTR)\ &(((SK_PNMI_STRUCT_DATA *)0)->VpdFreeBytes)) - /* - * ReturnStatus field - * must be located - * before VpdFreeBytes - */ /* * Various definitions */ +#define SK_PNMI_EVT_TIMER_CHECK 28125000L /* 28125 ms */ + +#define SK_PNMI_VCT_TIMER_CHECK 4000000L /* 4 sec. */ + #define SK_PNMI_MAX_PROTOS 3 -#define SK_PNMI_CNT_NO 66 /* Must have the value of the enum - * SK_PNMI_MAX_IDX. Define SK_PNMI_CHECK - * for check while init phase 1 - */ +/* + * SK_PNMI_CNT_NO must have the value of the enum SK_PNMI_MAX_IDX. + * Define SK_PNMI_CHECK to check this during init level SK_INIT_IO. + */ +#define SK_PNMI_CNT_NO 66 /* * Estimate data structure @@ -856,14 +903,6 @@ /* - * VCT timer data structure - */ -typedef struct s_VctTimer { - SK_TIMER VctTimer; -} SK_PNMI_VCT_TIMER; - - -/* * PNMI specific adapter context structure */ typedef struct s_PnmiPort { @@ -933,9 +972,9 @@ unsigned int TrapQueueEnd; unsigned int TrapBufPad; unsigned int TrapUnique; - SK_U8 VctStatus[SK_MAX_MACS]; - SK_PNMI_VCT VctBackup[SK_MAX_MACS]; - SK_PNMI_VCT_TIMER VctTimeout[SK_MAX_MACS]; + SK_U8 VctStatus[SK_MAX_MACS]; + SK_PNMI_VCT VctBackup[SK_MAX_MACS]; + SK_TIMER VctTimeout[SK_MAX_MACS]; #ifdef SK_DIAG_SUPPORT SK_U32 DiagAttached; #endif /* SK_DIAG_SUPPORT */ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skdrv1st.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skdrv1st.h @@ -2,8 +2,8 @@ * * Name: skdrv1st.h * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.4 $ - * Date: $Date: 2003/11/12 14:28:14 $ + * Version: $Revision: 1.5.2.5 $ + * Date: $Date: 2005/04/11 09:00:53 $ * Purpose: First header file for driver and all other modules * ******************************************************************************/ @@ -11,7 +11,7 @@ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect GmbH. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2005 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,23 +22,12 @@ * ******************************************************************************/ -/****************************************************************************** - * - * Description: - * - * This is the first include file of the driver, which includes all - * neccessary system header files and some of the GEnesis header files. - * It also defines some basic items. - * - * Include File Hierarchy: - * - * see skge.c - * - ******************************************************************************/ - #ifndef __INC_SKDRV1ST_H #define __INC_SKDRV1ST_H +/* Check kernel version */ +#include + typedef struct s_AC SK_AC; /* Set card versions */ @@ -55,6 +44,9 @@ #define SK_ADDR_EQUAL(a1,a2) (!memcmp(a1,a2,6)) +#define SK_STRNCMP(s1,s2,len) strncmp(s1,s2,len) +#define SK_STRCPY(dest,src) strcpy(dest,src) + #include #include #include @@ -63,10 +55,9 @@ #include #include #include -#include #include +#include #include -#include #include #include #include @@ -76,11 +67,7 @@ #include #define SK_CS_CALCULATE_CHECKSUM -#ifndef CONFIG_X86_64 -#define SkCsCalculateChecksum(p,l) ((~ip_compute_csum(p, l)) & 0xffff) -#else -#define SkCsCalculateChecksum(p,l) ((~ip_fast_csum(p, l)) & 0xffff) -#endif +#define SkCsCalculateChecksum(p,l) (~csum_fold(csum_partial(p, l, 0))) #include "h/sktypes.h" #include "h/skerror.h" @@ -88,6 +75,10 @@ #include "h/lm80.h" #include "h/xmac_ii.h" +#ifndef SK_BMU_RX_WM_PEX +#define SK_BMU_RX_WM_PEX 0x80 +#endif + #ifdef __LITTLE_ENDIAN #define SK_LITTLE_ENDIAN #else @@ -107,7 +98,7 @@ #define SK_MAX_MACS 2 #define SK_MAX_NETS 2 -#define SK_IOC char __iomem * +#define SK_IOC char* typedef struct s_DrvRlmtMbuf SK_MBUF; @@ -186,3 +177,8 @@ #endif +/******************************************************************************* + * + * End of file + * + ******************************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/skgehwt.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/skgehwt.h @@ -2,8 +2,8 @@ * * Name: skhwt.h * Project: Gigabit Ethernet Adapters, Event Scheduler Module - * Version: $Revision: 1.7 $ - * Date: $Date: 2003/09/16 12:55:08 $ + * Version: $Revision: 2.1 $ + * Date: $Date: 2003/10/27 14:16:09 $ * Purpose: Defines for the hardware timer functions * ******************************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/sktimer.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/sktimer.h @@ -2,8 +2,8 @@ * * Name: sktimer.h * Project: Gigabit Ethernet Adapters, Event Scheduler Module - * Version: $Revision: 1.11 $ - * Date: $Date: 2003/09/16 12:58:18 $ + * Version: $Revision: 2.1 $ + * Date: $Date: 2003/10/27 14:16:09 $ * Purpose: Defines for the timer functions * ******************************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/h/sktypes.h +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/h/sktypes.h @@ -2,8 +2,8 @@ * * Name: sktypes.h * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.2 $ - * Date: $Date: 2003/10/07 08:16:51 $ + * Version: $Revision: 1.2.2.1 $ + * Date: $Date: 2005/04/11 09:00:53 $ * Purpose: Define data types for Linux * ******************************************************************************/ @@ -11,7 +11,7 @@ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect GmbH. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2005 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,48 +22,28 @@ * ******************************************************************************/ -/****************************************************************************** - * - * Description: - * - * In this file, all data types that are needed by the common modules - * are mapped to Linux data types. - * - * - * Include File Hierarchy: - * - * - ******************************************************************************/ - #ifndef __INC_SKTYPES_H #define __INC_SKTYPES_H - -/* defines *******************************************************************/ - -/* - * Data types with a specific size. 'I' = signed, 'U' = unsigned. - */ -#define SK_I8 s8 -#define SK_U8 u8 -#define SK_I16 s16 -#define SK_U16 u16 -#define SK_I32 s32 -#define SK_U32 u32 -#define SK_I64 s64 -#define SK_U64 u64 - -#define SK_UPTR ulong /* casting pointer <-> integral */ - -/* -* Boolean type. -*/ -#define SK_BOOL SK_U8 -#define SK_FALSE 0 -#define SK_TRUE (!SK_FALSE) - -/* typedefs *******************************************************************/ - -/* function prototypes ********************************************************/ +#define SK_I8 s8 /* 8 bits (1 byte) signed */ +#define SK_U8 u8 /* 8 bits (1 byte) unsigned */ +#define SK_I16 s16 /* 16 bits (2 bytes) signed */ +#define SK_U16 u16 /* 16 bits (2 bytes) unsigned */ +#define SK_I32 s32 /* 32 bits (4 bytes) signed */ +#define SK_U32 u32 /* 32 bits (4 bytes) unsigned */ +#define SK_I64 s64 /* 64 bits (8 bytes) signed */ +#define SK_U64 u64 /* 64 bits (8 bytes) unsigned */ + +#define SK_UPTR ulong /* casting pointer <-> integral */ + +#define SK_BOOL SK_U8 +#define SK_FALSE 0 +#define SK_TRUE (!SK_FALSE) #endif /* __INC_SKTYPES_H */ + +/******************************************************************************* + * + * End of file + * + ******************************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skgemib.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skgemib.c @@ -2,8 +2,8 @@ * * Name: skgemib.c * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.11 $ - * Date: $Date: 2003/09/15 13:38:12 $ + * Version: $Revision: 2.7 $ + * Date: $Date: 2004/10/26 12:42:18 $ * Purpose: Private Network Management Interface Management Database * ****************************************************************************/ @@ -251,6 +251,183 @@ 0, SK_PNMI_RW, DiagActions, 0}, #endif /* SK_DIAG_SUPPORT */ +#ifdef SK_ASF + {OID_SKGE_ASF, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_STORE_CONFIG, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_ENA, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_RETRANS, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_RETRANS_INT, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_HB_ENA, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_HB_INT, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_WD_ENA, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_WD_TIME, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_IP_SOURCE, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_MAC_SOURCE, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_IP_DEST, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_MAC_DEST, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_COMMUNITY_NAME, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_RSP_ENA, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_RETRANS_COUNT_MIN, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_RETRANS_COUNT_MAX, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_RETRANS_INT_MIN, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_RETRANS_INT_MAX, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_HB_INT_MIN, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_HB_INT_MAX, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_WD_TIME_MIN, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_WD_TIME_MAX, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_HB_CAP, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_WD_TIMER_RES, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_GUID, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_KEY_OP, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_KEY_ADM, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_KEY_GEN, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_CAP, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_PAR_1, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_OVERALL_OID, + 0, + 0, + 0, + SK_PNMI_RW, Asf, 0}, + {OID_SKGE_ASF_FWVER_OID, + 0, + 0, + 0, + SK_PNMI_RO, Asf, 0}, + {OID_SKGE_ASF_ACPI_OID, + 0, + 0, + 0, + SK_PNMI_RO, Asf, 0}, + {OID_SKGE_ASF_SMBUS_OID, + 0, + 0, + 0, + SK_PNMI_RO, Asf, 0}, +#endif /* SK_ASF */ {OID_SKGE_MDB_VERSION, 1, 0, @@ -1073,6 +1250,11 @@ 0, 0, SK_PNMI_RO, Vct, 0}, + {OID_SKGE_VCT_CAPABILITIES, + 0, + 0, + 0, + SK_PNMI_RO, Vct, 0}, {OID_SKGE_BOARDLEVEL, 0, 0, --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skaddr.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skaddr.c @@ -2,8 +2,8 @@ * * Name: skaddr.c * Project: Gigabit Ethernet Adapters, ADDR-Module - * Version: $Revision: 1.52 $ - * Date: $Date: 2003/06/02 13:46:15 $ + * Version: $Revision: 2.6 $ + * Date: $Date: 2005/05/11 10:05:14 $ * Purpose: Manage Addresses (Multicast and Unicast) and Promiscuous Mode. * ******************************************************************************/ @@ -44,7 +44,7 @@ #if (defined(DEBUG) || ((!defined(LINT)) && (!defined(SK_SLIM)))) static const char SysKonnectFileId[] = - "@(#) $Id: skaddr.c,v 1.52 2003/06/02 13:46:15 tschilli Exp $ (C) Marvell."; + "@(#) $Id: skaddr.c,v 2.6 2005/05/11 10:05:14 tschilli Exp $ (C) Marvell."; #endif /* DEBUG ||!LINT || !SK_SLIM */ #define __SKADDR_C @@ -79,7 +79,7 @@ /* 64-bit hash values with all bits set. */ -static const SK_U16 OnesHash[4] = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}; +SK_U16 OnesHash[4] = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}; /* local variables ************************************************************/ @@ -191,11 +191,11 @@ pAC->Addr.Port[pAC->Addr.Net[0].ActivePort].Exact[0] = pAC->Addr.Net[0].CurrentMacAddress; #if SK_MAX_NETS > 1 - /* Set logical MAC address for net 2 to (log | 3). */ + /* Set logical MAC address for net 2 to. */ if (!pAC->Addr.Net[1].CurrentMacAddressSet) { pAC->Addr.Net[1].PermanentMacAddress = pAC->Addr.Net[0].PermanentMacAddress; - pAC->Addr.Net[1].PermanentMacAddress.a[5] |= 3; + pAC->Addr.Net[1].PermanentMacAddress.a[5] += 1; /* Set the current logical MAC address to the permanent one. */ pAC->Addr.Net[1].CurrentMacAddress = pAC->Addr.Net[1].PermanentMacAddress; @@ -213,7 +213,7 @@ pAC->Addr.Net[i].PermanentMacAddress.a[2], pAC->Addr.Net[i].PermanentMacAddress.a[3], pAC->Addr.Net[i].PermanentMacAddress.a[4], - pAC->Addr.Net[i].PermanentMacAddress.a[5])) + pAC->Addr.Net[i].PermanentMacAddress.a[5])); SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_INIT, ("Logical MAC Address (Net%d): %02X %02X %02X %02X %02X %02X\n", @@ -223,7 +223,7 @@ pAC->Addr.Net[i].CurrentMacAddress.a[2], pAC->Addr.Net[i].CurrentMacAddress.a[3], pAC->Addr.Net[i].CurrentMacAddress.a[4], - pAC->Addr.Net[i].CurrentMacAddress.a[5])) + pAC->Addr.Net[i].CurrentMacAddress.a[5])); } #endif /* DEBUG */ @@ -266,7 +266,7 @@ pAPort->PermanentMacAddress.a[2], pAPort->PermanentMacAddress.a[3], pAPort->PermanentMacAddress.a[4], - pAPort->PermanentMacAddress.a[5])) + pAPort->PermanentMacAddress.a[5])); SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_INIT, ("SkAddrInit: Physical MAC Address: %02X %02X %02X %02X %02X %02X\n", @@ -275,7 +275,7 @@ pAPort->CurrentMacAddress.a[2], pAPort->CurrentMacAddress.a[3], pAPort->CurrentMacAddress.a[4], - pAPort->CurrentMacAddress.a[5])) + pAPort->CurrentMacAddress.a[5])); #endif /* DEBUG */ } /* pAC->Addr.InitDone = SK_INIT_IO; */ @@ -339,10 +339,14 @@ } if (pAC->GIni.GIGenesis) { +#ifdef GENESIS ReturnCode = SkAddrXmacMcClear(pAC, IoC, PortNumber, Flags); +#endif } else { +#ifdef YUKON ReturnCode = SkAddrGmacMcClear(pAC, IoC, PortNumber, Flags); +#endif } return (ReturnCode); @@ -352,7 +356,7 @@ #endif /* !SK_SLIM */ #ifndef SK_SLIM - +#ifdef GENESIS /****************************************************************************** * * SkAddrXmacMcClear - clear the multicast table @@ -404,11 +408,11 @@ return (SK_ADDR_SUCCESS); } /* SkAddrXmacMcClear */ - +#endif /* GENESIS */ #endif /* !SK_SLIM */ #ifndef SK_SLIM - +#ifdef YUKON /****************************************************************************** * * SkAddrGmacMcClear - clear the multicast table @@ -447,7 +451,7 @@ pAC->Addr.Port[PortNumber].InexactFilter.Bytes[4], pAC->Addr.Port[PortNumber].InexactFilter.Bytes[5], pAC->Addr.Port[PortNumber].InexactFilter.Bytes[6], - pAC->Addr.Port[PortNumber].InexactFilter.Bytes[7])) + pAC->Addr.Port[PortNumber].InexactFilter.Bytes[7])); #endif /* DEBUG */ /* Clear InexactFilter */ @@ -489,7 +493,7 @@ pAC->Addr.Port[PortNumber].InexactFilter.Bytes[4], pAC->Addr.Port[PortNumber].InexactFilter.Bytes[5], pAC->Addr.Port[PortNumber].InexactFilter.Bytes[6], - pAC->Addr.Port[PortNumber].InexactFilter.Bytes[7])) + pAC->Addr.Port[PortNumber].InexactFilter.Bytes[7])); #endif /* DEBUG */ if (!(Flags & SK_MC_SW_ONLY)) { @@ -499,9 +503,10 @@ return (SK_ADDR_SUCCESS); } /* SkAddrGmacMcClear */ +#endif /* YUKON */ #ifndef SK_ADDR_CHEAT - +#ifdef GENESIS /****************************************************************************** * * SkXmacMcHash - hash multicast address @@ -538,8 +543,9 @@ return (Crc & ((1 << HASH_BITS) - 1)); } /* SkXmacMcHash */ +#endif /* GENESIS */ - +#ifdef YUKON /****************************************************************************** * * SkGmacMcHash - hash multicast address @@ -597,7 +603,7 @@ return (Crc & ((1 << HASH_BITS) - 1)); } /* SkGmacMcHash */ - +#endif /* YUKON */ #endif /* !SK_ADDR_CHEAT */ /****************************************************************************** @@ -638,17 +644,21 @@ } if (pAC->GIni.GIGenesis) { +#ifdef GENESIS ReturnCode = SkAddrXmacMcAdd(pAC, IoC, PortNumber, pMc, Flags); +#endif } else { +#ifdef YUKON ReturnCode = SkAddrGmacMcAdd(pAC, IoC, PortNumber, pMc, Flags); +#endif } return (ReturnCode); } /* SkAddrMcAdd */ - +#ifdef GENESIS /****************************************************************************** * * SkAddrXmacMcAdd - add a multicast address to a port @@ -758,8 +768,9 @@ } } /* SkAddrXmacMcAdd */ +#endif /* GENESIS */ - +#ifdef YUKON /****************************************************************************** * * SkAddrGmacMcAdd - add a multicast address to a port @@ -821,7 +832,7 @@ pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[4], pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[5], pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[6], - pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[7])) + pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[7])); #endif /* DEBUG */ } else { /* not permanent => DRV */ @@ -845,7 +856,7 @@ pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[4], pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[5], pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[6], - pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[7])) + pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[7])); #endif /* DEBUG */ } @@ -860,7 +871,7 @@ return (SK_MC_FILTERING_INEXACT); } /* SkAddrGmacMcAdd */ - +#endif /* YUKON */ #endif /* !SK_SLIM */ /****************************************************************************** @@ -892,7 +903,7 @@ SK_IOC IoC, /* I/O context */ SK_U32 PortNumber) /* Port Number */ { - int ReturnCode = 0; + int ReturnCode = SK_ADDR_ILLEGAL_PORT; #if (!defined(SK_SLIM) || defined(DEBUG)) if (PortNumber >= (SK_U32) pAC->GIni.GIMacsFound) { return (SK_ADDR_ILLEGAL_PORT); @@ -948,13 +959,13 @@ SK_ADDR_PORT *pAPort; SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL, - ("SkAddrXmacMcUpdate on Port %u.\n", PortNumber)) + ("SkAddrXmacMcUpdate on Port %u.\n", PortNumber)); pAPort = &pAC->Addr.Port[PortNumber]; #ifdef DEBUG SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL, - ("Next0 on Port %d: %d\n", PortNumber, Next0[PortNumber])) + ("Next0 on Port %d: %d\n", PortNumber, Next0[PortNumber])); #endif /* DEBUG */ /* Start with 0 to also program the logical MAC address. */ @@ -1043,7 +1054,7 @@ pAPort->Exact[i].a[2], pAPort->Exact[i].a[3], pAPort->Exact[i].a[4], - pAPort->Exact[i].a[5])) + pAPort->Exact[i].a[5])); } #endif /* DEBUG */ @@ -1095,13 +1106,13 @@ SK_ADDR_PORT *pAPort; SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL, - ("SkAddrGmacMcUpdate on Port %u.\n", PortNumber)) + ("SkAddrGmacMcUpdate on Port %u.\n", PortNumber)); pAPort = &pAC->Addr.Port[PortNumber]; #ifdef DEBUG SK_DBG_MSG(pAC,SK_DBGMOD_ADDR, SK_DBGCAT_CTRL, - ("Next0 on Port %d: %d\n", PortNumber, Next0[PortNumber])) + ("Next0 on Port %d: %d\n", PortNumber, Next0[PortNumber])); #endif /* DEBUG */ #ifndef SK_SLIM @@ -1157,7 +1168,7 @@ pAPort->Exact[0].a[2], pAPort->Exact[0].a[3], pAPort->Exact[0].a[4], - pAPort->Exact[0].a[5])) + pAPort->Exact[0].a[5])); SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL, ("SkAddrGmacMcUpdate: Physical MAC Address: %02X %02X %02X %02X %02X %02X\n", @@ -1166,7 +1177,7 @@ pAPort->CurrentMacAddress.a[2], pAPort->CurrentMacAddress.a[3], pAPort->CurrentMacAddress.a[4], - pAPort->CurrentMacAddress.a[5])) + pAPort->CurrentMacAddress.a[5])); #endif /* DEBUG */ #ifndef SK_SLIM @@ -1275,26 +1286,42 @@ (void) SkAddrMcUpdate(pAC, IoC, PortNumber); } else if (Flags & SK_ADDR_PHYSICAL_ADDRESS) { /* Physical MAC address. */ - if (SK_ADDR_EQUAL(pNewAddr->a, - pAC->Addr.Net[NetNumber].CurrentMacAddress.a)) { - return (SK_ADDR_DUPLICATE_ADDRESS); - } - for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) { if (!pAC->Addr.Port[i].CurrentMacAddressSet) { return (SK_ADDR_TOO_EARLY); } + } + /* + * In dual net mode it should be possible to set all MAC + * addresses independently. Therefore the equality checks + * against the locical address of the same port and the + * physical address of the other port are suppressed here. + */ + if (pAC->Rlmt.NumNets == 1) { if (SK_ADDR_EQUAL(pNewAddr->a, - pAC->Addr.Port[i].CurrentMacAddress.a)) { - if (i == PortNumber) { - return (SK_ADDR_SUCCESS); - } - else { - return (SK_ADDR_DUPLICATE_ADDRESS); + pAC->Addr.Net[NetNumber].CurrentMacAddress.a)) { + return (SK_ADDR_DUPLICATE_ADDRESS); + } + + for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) { + if (SK_ADDR_EQUAL(pNewAddr->a, + pAC->Addr.Port[i].CurrentMacAddress.a)) { + if (i == PortNumber) { + return (SK_ADDR_SUCCESS); + } + else { + return (SK_ADDR_DUPLICATE_ADDRESS); + } } } } + else { + if (SK_ADDR_EQUAL(pNewAddr->a, + pAC->Addr.Port[PortNumber].CurrentMacAddress.a)) { + return (SK_ADDR_SUCCESS); + } + } pAC->Addr.Port[PortNumber].PreviousMacAddress = pAC->Addr.Port[PortNumber].CurrentMacAddress; @@ -1325,18 +1352,28 @@ pAC->Addr.Net[NetNumber].CurrentMacAddress.a)) { return (SK_ADDR_SUCCESS); } - + for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) { if (!pAC->Addr.Port[i].CurrentMacAddressSet) { return (SK_ADDR_TOO_EARLY); } + } - if (SK_ADDR_EQUAL(pNewAddr->a, - pAC->Addr.Port[i].CurrentMacAddress.a)) { - return (SK_ADDR_DUPLICATE_ADDRESS); + /* + * In dual net mode on Yukon-2 adapters the physical address + * of port 0 and the logical address of port 1 are equal - in + * this case the equality check of the physical address leads + * to an error and is suppressed here. + */ + if (pAC->Rlmt.NumNets == 1) { + for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) { + if (SK_ADDR_EQUAL(pNewAddr->a, + pAC->Addr.Port[i].CurrentMacAddress.a)) { + return (SK_ADDR_DUPLICATE_ADDRESS); + } } } - + /* * In case that the physical and the logical MAC addresses are equal * we must also change the physical MAC address here. @@ -1424,7 +1461,7 @@ SK_U32 PortNumber, /* port whose promiscuous mode changes */ int NewPromMode) /* new promiscuous mode */ { - int ReturnCode = 0; + int ReturnCode = SK_ADDR_ILLEGAL_PORT; #if (!defined(SK_SLIM) || defined(DEBUG)) if (PortNumber >= (SK_U32) pAC->GIni.GIMacsFound) { return (SK_ADDR_ILLEGAL_PORT); --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skgeinit.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skgeinit.c @@ -2,8 +2,8 @@ * * Name: skgeinit.c * Project: Gigabit Ethernet Adapters, Common Modules - * Version: $Revision: 1.97 $ - * Date: $Date: 2003/10/02 16:45:31 $ + * Version: $Revision: 2.73 $ + * Date: $Date: 2005/05/24 08:05:45 $ * Purpose: Contains functions to initialize the adapter * ******************************************************************************/ @@ -11,13 +11,12 @@ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2005 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * * The information in this file is provided "AS IS" without warranty. * ******************************************************************************/ @@ -31,7 +30,7 @@ #if (defined(DEBUG) || ((!defined(LINT)) && (!defined(SK_SLIM)))) static const char SysKonnectFileId[] = - "@(#) $Id: skgeinit.c,v 1.97 2003/10/02 16:45:31 rschmidt Exp $ (C) Marvell."; + "@(#) $Id: skgeinit.c,v 2.73 2005/05/24 08:05:45 rschmidt Exp $ (C) Marvell."; #endif struct s_QOffTab { @@ -59,6 +58,101 @@ /****************************************************************************** * + * SkGePortVlan() - Enable / Disable VLAN support + * + * Description: + * Enable or disable the VLAN support of the selected port. + * The new configuration is *not* saved over any SkGeStopPort() and + * SkGeInitPort() calls. + * Currently this function is only supported on Yukon-2/EC adapters. + * + * Returns: + * nothing + */ +void SkGePortVlan( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +int Port, /* Port number */ +SK_BOOL Enable) /* Flag */ +{ + if (CHIP_ID_YUKON_2(pAC)) { + if (Enable) { + SK_OUT32(IoC, MR_ADDR(Port, RX_GMF_CTRL_T), RX_VLAN_STRIP_ON); + SK_OUT32(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), TX_VLAN_TAG_ON); + } + else { + SK_OUT32(IoC, MR_ADDR(Port, RX_GMF_CTRL_T), RX_VLAN_STRIP_OFF); + SK_OUT32(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), TX_VLAN_TAG_OFF); + } + } +} + + +/****************************************************************************** + * + * SkGeRxRss() - Enable / Disable RSS Hash Calculation + * + * Description: + * Enable or disable the RSS hash calculation of the selected port. + * The new configuration is *not* saved over any SkGeStopPort() and + * SkGeInitPort() calls. + * Currently this function is only supported on Yukon-2/EC adapters. + * + * Returns: + * nothing + */ +void SkGeRxRss( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +int Port, /* Port number */ +SK_BOOL Enable) /* Flag */ +{ + if (CHIP_ID_YUKON_2(pAC)) { + if (Enable) { + SK_OUT32(IoC, Q_ADDR(pAC->GIni.GP[Port].PRxQOff, Q_CSR), + BMU_ENA_RX_RSS_HASH); + } + else { + SK_OUT32(IoC, Q_ADDR(pAC->GIni.GP[Port].PRxQOff, Q_CSR), + BMU_DIS_RX_RSS_HASH); + } + } +} + +/****************************************************************************** + * + * SkGeRxCsum() - Enable / Disable Receive Checksum + * + * Description: + * Enable or disable the checksum of the selected port. + * The new configuration is *not* saved over any SkGeStopPort() and + * SkGeInitPort() calls. + * Currently this function is only supported on Yukon-2/EC adapters. + * + * Returns: + * nothing + */ +void SkGeRxCsum( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +int Port, /* Port number */ +SK_BOOL Enable) /* Flag */ +{ + if (CHIP_ID_YUKON_2(pAC)) { + if (Enable) { + SK_OUT32(IoC, Q_ADDR(pAC->GIni.GP[Port].PRxQOff, Q_CSR), + BMU_ENA_RX_CHKSUM); + } + else { + SK_OUT32(IoC, Q_ADDR(pAC->GIni.GP[Port].PRxQOff, Q_CSR), + BMU_DIS_RX_CHKSUM); + } + } +} + + +/****************************************************************************** + * * SkGePollRxD() - Enable / Disable Descriptor Polling of RxD Ring * * Description: @@ -71,8 +165,8 @@ * nothing */ void SkGePollRxD( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_BOOL PollRxD) /* SK_TRUE (enable pol.), SK_FALSE (disable pol.) */ { @@ -80,8 +174,8 @@ pPrt = &pAC->GIni.GP[Port]; - SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), (PollRxD) ? - CSR_ENA_POL : CSR_DIS_POL); + SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), (SK_U32)((PollRxD) ? + CSR_ENA_POL : CSR_DIS_POL)); } /* SkGePollRxD */ @@ -99,8 +193,8 @@ * nothing */ void SkGePollTxD( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_BOOL PollTxD) /* SK_TRUE (enable pol.), SK_FALSE (disable pol.) */ { @@ -114,7 +208,7 @@ if (pPrt->PXSQSize != 0) { SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), DWord); } - + if (pPrt->PXAQSize != 0) { SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), DWord); } @@ -135,17 +229,27 @@ * nothing */ void SkGeYellowLED( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int State) /* yellow LED state, 0 = OFF, 0 != ON */ { + int LedReg; + + if (CHIP_ID_YUKON_2(pAC)) { + /* different mapping on Yukon-2 */ + LedReg = B0_CTST + 1; + } + else { + LedReg = B0_LED; + } + if (State == 0) { - /* Switch yellow LED OFF */ - SK_OUT8(IoC, B0_LED, LED_STAT_OFF); + /* Switch state LED OFF */ + SK_OUT8(IoC, LedReg, LED_STAT_OFF); } else { - /* Switch yellow LED ON */ - SK_OUT8(IoC, B0_LED, LED_STAT_ON); + /* Switch state LED ON */ + SK_OUT8(IoC, LedReg, LED_STAT_ON); } } /* SkGeYellowLED */ @@ -169,8 +273,8 @@ * nothing */ void SkGeXmitLED( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Led, /* offset to the LED Init Value register */ int Mode) /* Mode may be SK_LED_DIS, SK_LED_ENA, SK_LED_TST */ { @@ -197,13 +301,13 @@ SK_OUT8(IoC, Led + XMIT_LED_TST, LED_T_OFF); break; } - + /* - * 1000BT: The Transmit LED is driven by the PHY. + * 1000BT: the Transmit LED is driven by the PHY. * But the default LED configuration is used for * Level One and Broadcom PHYs. - * (Broadcom: It may be that PHY_B_PEC_EN_LTR has to be set.) - * (In this case it has to be added here. But we will see. XXX) + * (Broadcom: It may be that PHY_B_PEC_EN_LTR has to be set. + * In this case it has to be added here.) */ } /* SkGeXmitLED */ #endif /* !SK_SLIM || GENESIS */ @@ -227,7 +331,7 @@ * 1: configuration error */ static int DoCalcAddr( -SK_AC *pAC, /* adapter context */ +SK_AC *pAC, /* Adapter Context */ SK_GEPORT SK_FAR *pPrt, /* port index */ int QuSize, /* size of the queue to configure in kB */ SK_U32 SK_FAR *StartVal, /* start value for address calculation */ @@ -264,12 +368,35 @@ /****************************************************************************** * + * SkGeRoundQueueSize() - Round the given queue size to the adpaters QZ units + * + * Description: + * This function rounds the given queue size in kBs to adapter specific + * queue size units (Genesis and Yukon: 8 kB, Yukon-2/EC: 1 kB). + * + * Returns: + * the rounded queue size in kB + */ +static int SkGeRoundQueueSize( +SK_AC *pAC, /* Adapter Context */ +int QueueSizeKB) /* Queue size in kB */ +{ + int QueueSizeSteps; + + QueueSizeSteps = (CHIP_ID_YUKON_2(pAC)) ? QZ_STEP_Y2 : QZ_STEP; + + return((QueueSizeKB + QueueSizeSteps - 1) & ~(QueueSizeSteps - 1)); +} /* SkGeRoundQueueSize */ + + +/****************************************************************************** + * * SkGeInitAssignRamToQueues() - allocate default queue sizes * * Description: * This function assigns the memory to the different queues and ports. * When DualNet is set to SK_TRUE all ports get the same amount of memory. - * Otherwise the first port gets most of the memory and all the + * Otherwise the first port gets most of the memory and all the * other ports just the required minimum. * This function can only be called when pAC->GIni.GIRamSize and * pAC->GIni.GIMacsFound have been initialized, usually this happens @@ -282,102 +409,141 @@ */ int SkGeInitAssignRamToQueues( -SK_AC *pAC, /* Adapter context */ +SK_AC *pAC, /* Adapter Context */ int ActivePort, /* Active Port in RLMT mode */ -SK_BOOL DualNet) /* adapter context */ +SK_BOOL DualNet) /* Dual Net active */ { int i; int UsedKilobytes; /* memory already assigned */ int ActivePortKilobytes; /* memory available for active port */ - SK_GEPORT *pGePort; - - UsedKilobytes = 0; + int MinQueueSize; /* min. memory for queues */ + int TotalRamSize; /* total memory for queues */ + SK_BOOL DualPortYukon2; + SK_GEPORT *pPrt; if (ActivePort >= pAC->GIni.GIMacsFound) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, ("SkGeInitAssignRamToQueues: ActivePort (%d) invalid\n", ActivePort)); return(1); } - if (((pAC->GIni.GIMacsFound * (SK_MIN_RXQ_SIZE + SK_MIN_TXQ_SIZE)) + - ((RAM_QUOTA_SYNC == 0) ? 0 : SK_MIN_TXQ_SIZE)) > pAC->GIni.GIRamSize) { + + DualPortYukon2 = (CHIP_ID_YUKON_2(pAC) && pAC->GIni.GIMacsFound == 2); + + TotalRamSize = pAC->GIni.GIRamSize; + + if (DualPortYukon2) { + TotalRamSize *= 2; + } + + MinQueueSize = SK_MIN_RXQ_SIZE + SK_MIN_TXQ_SIZE; + + if (MinQueueSize > pAC->GIni.GIRamSize) { + MinQueueSize = pAC->GIni.GIRamSize; + } + + if ((pAC->GIni.GIMacsFound * MinQueueSize + + RAM_QUOTA_SYNC * SK_MIN_TXQ_SIZE) > TotalRamSize) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, ("SkGeInitAssignRamToQueues: Not enough memory (%d)\n", - pAC->GIni.GIRamSize)); + TotalRamSize)); return(2); } if (DualNet) { /* every port gets the same amount of memory */ - ActivePortKilobytes = pAC->GIni.GIRamSize / pAC->GIni.GIMacsFound; + ActivePortKilobytes = TotalRamSize / pAC->GIni.GIMacsFound; + for (i = 0; i < pAC->GIni.GIMacsFound; i++) { - pGePort = &pAC->GIni.GP[i]; - + pPrt = &pAC->GIni.GP[i]; + + if (DualPortYukon2) { + ActivePortKilobytes = pAC->GIni.GIRamSize; + } /* take away the minimum memory for active queues */ - ActivePortKilobytes -= (SK_MIN_RXQ_SIZE + SK_MIN_TXQ_SIZE); + ActivePortKilobytes -= MinQueueSize; /* receive queue gets the minimum + 80% of the rest */ - pGePort->PRxQSize = (int) (ROUND_QUEUE_SIZE_KB(( - ActivePortKilobytes * (unsigned long) RAM_QUOTA_RX) / 100)) + pPrt->PRxQSize = SkGeRoundQueueSize(pAC, + (int)((long)ActivePortKilobytes * RAM_QUOTA_RX) / 100) + SK_MIN_RXQ_SIZE; - ActivePortKilobytes -= (pGePort->PRxQSize - SK_MIN_RXQ_SIZE); + ActivePortKilobytes -= (pPrt->PRxQSize - SK_MIN_RXQ_SIZE); /* synchronous transmit queue */ - pGePort->PXSQSize = 0; + pPrt->PXSQSize = 0; /* asynchronous transmit queue */ - pGePort->PXAQSize = (int) ROUND_QUEUE_SIZE_KB(ActivePortKilobytes + - SK_MIN_TXQ_SIZE); + pPrt->PXAQSize = SkGeRoundQueueSize(pAC, + ActivePortKilobytes + SK_MIN_TXQ_SIZE); } } - else { - /* Rlmt Mode or single link adapter */ + else { /* RLMT Mode or single link adapter */ - /* Set standby queue size defaults for all standby ports */ + UsedKilobytes = 0; + + /* set standby queue size defaults for all standby ports */ for (i = 0; i < pAC->GIni.GIMacsFound; i++) { if (i != ActivePort) { - pGePort = &pAC->GIni.GP[i]; + pPrt = &pAC->GIni.GP[i]; - pGePort->PRxQSize = SK_MIN_RXQ_SIZE; - pGePort->PXAQSize = SK_MIN_TXQ_SIZE; - pGePort->PXSQSize = 0; + if (DualPortYukon2) { + pPrt->PRxQSize = SkGeRoundQueueSize(pAC, + (int)((long)pAC->GIni.GIRamSize * RAM_QUOTA_RX) / 100); + pPrt->PXAQSize = pAC->GIni.GIRamSize - pPrt->PRxQSize; + } + else { + pPrt->PRxQSize = SK_MIN_RXQ_SIZE; + pPrt->PXAQSize = SK_MIN_TXQ_SIZE; + } + pPrt->PXSQSize = 0; /* Count used RAM */ - UsedKilobytes += pGePort->PRxQSize + pGePort->PXAQSize; + UsedKilobytes += pPrt->PRxQSize + pPrt->PXAQSize; } } /* what's left? */ - ActivePortKilobytes = pAC->GIni.GIRamSize - UsedKilobytes; + ActivePortKilobytes = TotalRamSize - UsedKilobytes; /* assign it to the active port */ /* first take away the minimum memory */ - ActivePortKilobytes -= (SK_MIN_RXQ_SIZE + SK_MIN_TXQ_SIZE); - pGePort = &pAC->GIni.GP[ActivePort]; + ActivePortKilobytes -= MinQueueSize; + pPrt = &pAC->GIni.GP[ActivePort]; /* receive queue get's the minimum + 80% of the rest */ - pGePort->PRxQSize = (int) (ROUND_QUEUE_SIZE_KB((ActivePortKilobytes * - (unsigned long) RAM_QUOTA_RX) / 100)) + SK_MIN_RXQ_SIZE; + pPrt->PRxQSize = SkGeRoundQueueSize(pAC, + (int)((long)ActivePortKilobytes * RAM_QUOTA_RX) / 100) + + MinQueueSize/2; - ActivePortKilobytes -= (pGePort->PRxQSize - SK_MIN_RXQ_SIZE); + ActivePortKilobytes -= (pPrt->PRxQSize - MinQueueSize/2); /* synchronous transmit queue */ - pGePort->PXSQSize = 0; + pPrt->PXSQSize = 0; /* asynchronous transmit queue */ - pGePort->PXAQSize = (int) ROUND_QUEUE_SIZE_KB(ActivePortKilobytes) + - SK_MIN_TXQ_SIZE; + pPrt->PXAQSize = SkGeRoundQueueSize(pAC, ActivePortKilobytes) + + MinQueueSize/2; } -#ifdef VCPU - VCPUprintf(0, "PRxQSize=%u, PXSQSize=%u, PXAQSize=%u\n", - pGePort->PRxQSize, pGePort->PXSQSize, pGePort->PXAQSize); -#endif /* VCPU */ + +#ifdef DEBUG + for (i = 0; i < pAC->GIni.GIMacsFound; i++) { + + pPrt = &pAC->GIni.GP[i]; + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("Port %d: RxQSize=%u, TxAQSize=%u, TxSQSize=%u\n", + i, pPrt->PRxQSize, pPrt->PXAQSize, pPrt->PXSQSize)); + } +#endif /* DEBUG */ return(0); } /* SkGeInitAssignRamToQueues */ + /****************************************************************************** * * SkGeCheckQSize() - Checks the Adapters Queue Size Configuration @@ -388,12 +554,12 @@ * used ports. * This requirements must be fullfilled to have a valid configuration: * - The size of all queues must not exceed GIRamSize. - * - The queue sizes must be specified in units of 8 kB. + * - The queue sizes must be specified in units of 8 kB (Genesis & Yukon). * - The size of Rx queues of available ports must not be - * smaller than 16 kB. + * smaller than 16 kB (Genesis & Yukon) resp. 10 kB (Yukon-2). * - The size of at least one Tx queue (synch. or asynch.) - * of available ports must not be smaller than 16 kB - * when Jumbo Frames are used. + * of available ports must not be smaller than 16 kB (Genesis & Yukon), + * resp. 10 kB (Yukon-2) when Jumbo Frames are used. * - The RAM start and end addresses must not be changed * for ports which are already initialized. * Furthermore SkGeCheckQSize() defines the Start and End Addresses @@ -404,7 +570,7 @@ * 1: Queue Size Configuration invalid */ static int SkGeCheckQSize( -SK_AC *pAC, /* adapter context */ +SK_AC *pAC, /* Adapter Context */ int Port) /* port index */ { SK_GEPORT *pPrt; @@ -414,55 +580,68 @@ SK_U32 StartAddr; #ifndef SK_SLIM int UsedMem; /* total memory used (max. found ports) */ -#endif +#endif Rtv = 0; - + #ifndef SK_SLIM UsedMem = 0; + Rtv = 0; for (i = 0; i < pAC->GIni.GIMacsFound; i++) { pPrt = &pAC->GIni.GP[i]; - if ((pPrt->PRxQSize & QZ_UNITS) != 0 || - (pPrt->PXSQSize & QZ_UNITS) != 0 || - (pPrt->PXAQSize & QZ_UNITS) != 0) { + if (CHIP_ID_YUKON_2(pAC)) { + UsedMem = 0; + } + else if (((pPrt->PRxQSize & QZ_UNITS) != 0 || + (pPrt->PXSQSize & QZ_UNITS) != 0 || + (pPrt->PXAQSize & QZ_UNITS) != 0)) { SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E012, SKERR_HWI_E012MSG); return(1); } - if (i == Port && pPrt->PRxQSize < SK_MIN_RXQ_SIZE) { +#ifndef SK_DIAG + if (i == Port && pAC->GIni.GIRamSize > SK_MIN_RXQ_SIZE && + pPrt->PRxQSize < SK_MIN_RXQ_SIZE) { SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E011, SKERR_HWI_E011MSG); return(1); } - + /* * the size of at least one Tx queue (synch. or asynch.) has to be > 0. * if Jumbo Frames are used, this size has to be >= 16 kB. */ if ((i == Port && pPrt->PXSQSize == 0 && pPrt->PXAQSize == 0) || - (pAC->GIni.GIPortUsage == SK_JUMBO_LINK && - ((pPrt->PXSQSize > 0 && pPrt->PXSQSize < SK_MIN_TXQ_SIZE) || + (pPrt->PPortUsage == SK_JUMBO_LINK && + ((pPrt->PXSQSize > 0 && pPrt->PXSQSize < SK_MIN_TXQ_SIZE) || (pPrt->PXAQSize > 0 && pPrt->PXAQSize < SK_MIN_TXQ_SIZE)))) { SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E023, SKERR_HWI_E023MSG); return(1); } - +#endif /* !SK_DIAG */ + UsedMem += pPrt->PRxQSize + pPrt->PXSQSize + pPrt->PXAQSize; + + if (UsedMem > pAC->GIni.GIRamSize) { + SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E012, SKERR_HWI_E012MSG); + return(1); + } } - - if (UsedMem > pAC->GIni.GIRamSize) { - SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E012, SKERR_HWI_E012MSG); - return(1); - } + #endif /* !SK_SLIM */ /* Now start address calculation */ StartAddr = pAC->GIni.GIRamOffs; for (i = 0; i < pAC->GIni.GIMacsFound; i++) { + pPrt = &pAC->GIni.GP[i]; + if (CHIP_ID_YUKON_2(pAC)) { + StartAddr = 0; + } + /* Calculate/Check values for the receive queue */ Rtv2 = DoCalcAddr(pAC, pPrt, pPrt->PRxQSize, &StartAddr, &pPrt->PRxQRamStart, &pPrt->PRxQRamEnd); @@ -502,8 +681,8 @@ * nothing */ static void SkGeInitMacArb( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC) /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC) /* I/O Context */ { /* release local reset */ SK_OUT16(IoC, B3_MA_TO_CTRL, MA_RST_CLR); @@ -542,8 +721,8 @@ * nothing */ static void SkGeInitPktArb( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC) /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC) /* I/O Context */ { /* release local reset */ SK_OUT16(IoC, B3_PA_CTRL, PA_RST_CLR); @@ -559,7 +738,8 @@ * NOTE: the packet arbiter timeout interrupt is needed for * half duplex hangup workaround */ - if (pAC->GIni.GIPortUsage != SK_JUMBO_LINK) { + if (pAC->GIni.GP[MAC_1].PPortUsage != SK_JUMBO_LINK && + pAC->GIni.GP[MAC_2].PPortUsage != SK_JUMBO_LINK) { if (pAC->GIni.GIMacsFound == 1) { SK_OUT16(IoC, B3_PA_CTRL, PA_ENA_TO_TX1); } @@ -582,14 +762,11 @@ * nothing */ static void SkGeInitMacFifo( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_U16 Word; -#ifdef VCPU - SK_U32 DWord; -#endif /* VCPU */ /* * For each FIFO: * - release local reset @@ -597,31 +774,29 @@ * - setup defaults for the control register * - enable the FIFO */ - + #ifdef GENESIS if (pAC->GIni.GIGenesis) { - /* Configure Rx MAC FIFO */ + /* configure Rx MAC FIFO */ SK_OUT8(IoC, MR_ADDR(Port, RX_MFF_CTRL2), MFF_RST_CLR); SK_OUT16(IoC, MR_ADDR(Port, RX_MFF_CTRL1), MFF_RX_CTRL_DEF); SK_OUT8(IoC, MR_ADDR(Port, RX_MFF_CTRL2), MFF_ENA_OP_MD); - + /* Configure Tx MAC FIFO */ SK_OUT8(IoC, MR_ADDR(Port, TX_MFF_CTRL2), MFF_RST_CLR); SK_OUT16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), MFF_TX_CTRL_DEF); SK_OUT8(IoC, MR_ADDR(Port, TX_MFF_CTRL2), MFF_ENA_OP_MD); - - /* Enable frame flushing if jumbo frames used */ - if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK) { + + /* enable frame flushing if jumbo frames used */ + if (pAC->GIni.GP[Port].PPortUsage == SK_JUMBO_LINK) { SK_OUT16(IoC, MR_ADDR(Port, RX_MFF_CTRL1), MFF_ENA_FLUSH); } } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { - /* set Rx GMAC FIFO Flush Mask */ - SK_OUT16(IoC, MR_ADDR(Port, RX_GMF_FL_MSK), (SK_U16)RX_FF_FL_DEF_MSK); - + Word = (SK_U16)GMF_RX_CTRL_DEF; /* disable Rx GMAC FIFO Flush for YUKON-Lite Rev. A0 only */ @@ -629,23 +804,52 @@ Word &= ~GMF_RX_F_FL_ON; } - - /* Configure Rx MAC FIFO */ + + /* Configure Rx GMAC FIFO */ SK_OUT8(IoC, MR_ADDR(Port, RX_GMF_CTRL_T), (SK_U8)GMF_RST_CLR); SK_OUT16(IoC, MR_ADDR(Port, RX_GMF_CTRL_T), Word); - - /* set Rx GMAC FIFO Flush Threshold (default: 0x0a -> 56 bytes) */ - SK_OUT16(IoC, MR_ADDR(Port, RX_GMF_FL_THR), RX_GMF_FL_THR_DEF); - - /* Configure Tx MAC FIFO */ + + Word = RX_FF_FL_DEF_MSK; + +#ifndef SK_DIAG + if (HW_FEATURE(pAC, HWF_WA_DEV_4115)) { + /* + * Flushing must be enabled (needed for ASF see dev. #4.29), + * but the flushing mask should be disabled (see dev. #4.115) + */ + Word = 0; + } +#endif /* !SK_DIAG */ + + /* set Rx GMAC FIFO Flush Mask (after clearing reset) */ + SK_OUT16(IoC, MR_ADDR(Port, RX_GMF_FL_MSK), Word); + + /* default: 0x0a -> 56 bytes on Yukon-1 and 64 bytes on Yukon-2 */ + Word = (SK_U16)RX_GMF_FL_THR_DEF; + + if (CHIP_ID_YUKON_2(pAC)) { + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_EC && + pAC->GIni.GIAsfEnabled) { + /* WA for dev. #4.30 (reduce to 0x08 -> 48 bytes) */ + Word -= 2; + } + } + else { + /* + * because Pause Packet Truncation in GMAC is not working + * we have to increase the Flush Threshold to 64 bytes + * in order to flush pause packets in Rx FIFO on Yukon-1 + */ + Word++; + } + + /* set Rx GMAC FIFO Flush Threshold (after clearing reset) */ + SK_OUT16(IoC, MR_ADDR(Port, RX_GMF_FL_THR), Word); + + /* Configure Tx GMAC FIFO */ SK_OUT8(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), (SK_U8)GMF_RST_CLR); SK_OUT16(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), (SK_U16)GMF_TX_CTRL_DEF); - -#ifdef VCPU - SK_IN32(IoC, MR_ADDR(Port, RX_GMF_AF_THR), &DWord); - SK_IN32(IoC, MR_ADDR(Port, TX_GMF_AE_THR), &DWord); -#endif /* VCPU */ - + /* set Tx GMAC FIFO Almost Empty Threshold */ /* SK_OUT32(IoC, MR_ADDR(Port, TX_GMF_AE_THR), 0); */ } @@ -653,7 +857,7 @@ } /* SkGeInitMacFifo */ -#ifdef SK_LNK_SYNC_CNT +#ifdef SK_LNK_SYNC_CNT /****************************************************************************** * * SkGeLoadLnkSyncCnt() - Load the Link Sync Counter and starts counting @@ -674,8 +878,8 @@ * nothing */ void SkGeLoadLnkSyncCnt( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_U32 CntVal) /* Counter value */ { @@ -685,7 +889,7 @@ SK_BOOL IrqPend; /* stop counter */ - SK_OUT8(IoC, MR_ADDR(Port, LNK_SYNC_CTRL), LED_STOP); + SK_OUT8(IoC, MR_ADDR(Port, LNK_SYNC_CTRL), LNK_STOP); /* * ASIC problem: @@ -698,6 +902,7 @@ IrqPend = SK_FALSE; SK_IN32(IoC, B0_ISRC, &ISrc); SK_IN32(IoC, B0_IMSK, &OrgIMsk); + if (Port == MAC_1) { NewIMsk = OrgIMsk & ~IS_LNK_SYNC_M1; if ((ISrc & IS_LNK_SYNC_M1) != 0) { @@ -710,6 +915,7 @@ IrqPend = SK_TRUE; } } + if (!IrqPend) { SK_OUT32(IoC, B0_IMSK, NewIMsk); } @@ -718,15 +924,17 @@ SK_OUT32(IoC, MR_ADDR(Port, LNK_SYNC_INI), CntVal); /* start counter */ - SK_OUT8(IoC, MR_ADDR(Port, LNK_SYNC_CTRL), LED_START); + SK_OUT8(IoC, MR_ADDR(Port, LNK_SYNC_CTRL), LNK_START); if (!IrqPend) { - /* clear the unexpected IRQ, and restore the interrupt mask */ - SK_OUT8(IoC, MR_ADDR(Port, LNK_SYNC_CTRL), LED_CLR_IRQ); + /* clear the unexpected IRQ */ + SK_OUT8(IoC, MR_ADDR(Port, LNK_SYNC_CTRL), LNK_CLR_IRQ); + + /* restore the interrupt mask */ SK_OUT32(IoC, B0_IMSK, OrgIMsk); } } /* SkGeLoadLnkSyncCnt*/ -#endif /* SK_LNK_SYNC_CNT */ +#endif /* SK_LNK_SYNC_CNT */ #if defined(SK_DIAG) || defined(SK_CFG_SYNC) /****************************************************************************** @@ -758,8 +966,8 @@ * synchronous queue is configured */ int SkGeCfgSync( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_U32 IntTime, /* Interval Timer Value in units of 8ns */ SK_U32 LimCount, /* Number of bytes to transfer during IntTime */ @@ -777,16 +985,16 @@ SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E010, SKERR_HWI_E010MSG); return(1); } - + if (pAC->GIni.GP[Port].PXSQSize == 0) { SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E009, SKERR_HWI_E009MSG); return(2); } - + /* calculate register values */ IntTime = (IntTime / 2) * pAC->GIni.GIHstClkFact / 100; LimCount = LimCount / 8; - + if (IntTime > TXA_MAX_VAL || LimCount > TXA_MAX_VAL) { SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E010, SKERR_HWI_E010MSG); return(1); @@ -804,13 +1012,13 @@ */ SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL), TXA_ENA_FSYNC | TXA_DIS_ALLOC | TXA_STOP_RC); - + SK_OUT32(IoC, MR_ADDR(Port, TXA_ITI_INI), IntTime); SK_OUT32(IoC, MR_ADDR(Port, TXA_LIM_INI), LimCount); - + SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL), (SK_U8)(SyncMode & (TXA_ENA_ALLOC | TXA_DIS_ALLOC))); - + if (IntTime != 0 || LimCount != 0) { SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL), TXA_DIS_FSYNC | TXA_START_RC); } @@ -831,10 +1039,10 @@ * Returns: * nothing */ -static void DoInitRamQueue( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ -int QuIoOffs, /* Queue IO Address Offset */ +void DoInitRamQueue( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +int QuIoOffs, /* Queue I/O Address Offset */ SK_U32 QuStartAddr, /* Queue Start Address */ SK_U32 QuEndAddr, /* Queue End Address */ int QuType) /* Queue Type (SK_RX_SRAM_Q|SK_RX_BRAM_Q|SK_TX_RAM_Q) */ @@ -867,8 +1075,7 @@ /* continue with SK_RX_BRAM_Q */ case SK_RX_BRAM_Q: - /* write threshold for Rx Queue */ - + /* write threshold for Rx Queue (Pause packets) */ SK_OUT32(IoC, RB_ADDR(QuIoOffs, RB_RX_UTPP), RxUpThresVal); SK_OUT32(IoC, RB_ADDR(QuIoOffs, RB_RX_LTPP), RxLoThresVal); @@ -882,7 +1089,8 @@ * or YUKON is used ((GMAC Tx FIFO is only 1 kB) * we NEED Store & Forward of the RAM buffer. */ - if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK || + if (pAC->GIni.GP[MAC_1].PPortUsage == SK_JUMBO_LINK || + pAC->GIni.GP[MAC_2].PPortUsage == SK_JUMBO_LINK || pAC->GIni.GIYukon) { /* enable Store & Forward Mode for the Tx Side */ SK_OUT8(IoC, RB_ADDR(QuIoOffs, RB_CTRL), RB_ENA_STFWD); @@ -911,8 +1119,8 @@ * nothing */ static void SkGeInitRamBufs( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; @@ -920,8 +1128,8 @@ pPrt = &pAC->GIni.GP[Port]; - if (pPrt->PRxQSize == SK_MIN_RXQ_SIZE) { - RxQType = SK_RX_SRAM_Q; /* small Rx Queue */ + if (pPrt->PRxQSize <= SK_MIN_RXQ_SIZE) { + RxQType = SK_RX_SRAM_Q; /* small Rx Queue */ } else { RxQType = SK_RX_BRAM_Q; /* big Rx Queue */ @@ -929,10 +1137,10 @@ DoInitRamQueue(pAC, IoC, pPrt->PRxQOff, pPrt->PRxQRamStart, pPrt->PRxQRamEnd, RxQType); - + DoInitRamQueue(pAC, IoC, pPrt->PXsQOff, pPrt->PXsQRamStart, pPrt->PXsQRamEnd, SK_TX_RAM_Q); - + DoInitRamQueue(pAC, IoC, pPrt->PXaQOff, pPrt->PXaQRamStart, pPrt->PXaQRamEnd, SK_TX_RAM_Q); @@ -953,26 +1161,37 @@ * nothing */ void SkGeInitRamIface( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC) /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC) /* I/O Context */ { - /* release local reset */ - SK_OUT16(IoC, B3_RI_CTRL, RI_RST_CLR); + int i; + int RamBuffers; - /* configure timeout values */ - SK_OUT8(IoC, B3_RI_WTO_R1, SK_RI_TO_53); - SK_OUT8(IoC, B3_RI_WTO_XA1, SK_RI_TO_53); - SK_OUT8(IoC, B3_RI_WTO_XS1, SK_RI_TO_53); - SK_OUT8(IoC, B3_RI_RTO_R1, SK_RI_TO_53); - SK_OUT8(IoC, B3_RI_RTO_XA1, SK_RI_TO_53); - SK_OUT8(IoC, B3_RI_RTO_XS1, SK_RI_TO_53); - SK_OUT8(IoC, B3_RI_WTO_R2, SK_RI_TO_53); - SK_OUT8(IoC, B3_RI_WTO_XA2, SK_RI_TO_53); - SK_OUT8(IoC, B3_RI_WTO_XS2, SK_RI_TO_53); - SK_OUT8(IoC, B3_RI_RTO_R2, SK_RI_TO_53); - SK_OUT8(IoC, B3_RI_RTO_XA2, SK_RI_TO_53); - SK_OUT8(IoC, B3_RI_RTO_XS2, SK_RI_TO_53); + if (CHIP_ID_YUKON_2(pAC)) { + RamBuffers = pAC->GIni.GIMacsFound; + } + else { + RamBuffers = 1; + } + + for (i = 0; i < RamBuffers; i++) { + /* release local reset */ + SK_OUT8(IoC, SELECT_RAM_BUFFER(i, B3_RI_CTRL), (SK_U8)RI_RST_CLR); + /* configure timeout values */ + SK_OUT8(IoC, SELECT_RAM_BUFFER(i, B3_RI_WTO_R1), SK_RI_TO_53); + SK_OUT8(IoC, SELECT_RAM_BUFFER(i, B3_RI_WTO_XA1), SK_RI_TO_53); + SK_OUT8(IoC, SELECT_RAM_BUFFER(i, B3_RI_WTO_XS1), SK_RI_TO_53); + SK_OUT8(IoC, SELECT_RAM_BUFFER(i, B3_RI_RTO_R1), SK_RI_TO_53); + SK_OUT8(IoC, SELECT_RAM_BUFFER(i, B3_RI_RTO_XA1), SK_RI_TO_53); + SK_OUT8(IoC, SELECT_RAM_BUFFER(i, B3_RI_RTO_XS1), SK_RI_TO_53); + SK_OUT8(IoC, SELECT_RAM_BUFFER(i, B3_RI_WTO_R2), SK_RI_TO_53); + SK_OUT8(IoC, SELECT_RAM_BUFFER(i, B3_RI_WTO_XA2), SK_RI_TO_53); + SK_OUT8(IoC, SELECT_RAM_BUFFER(i, B3_RI_WTO_XS2), SK_RI_TO_53); + SK_OUT8(IoC, SELECT_RAM_BUFFER(i, B3_RI_RTO_R2), SK_RI_TO_53); + SK_OUT8(IoC, SELECT_RAM_BUFFER(i, B3_RI_RTO_XA2), SK_RI_TO_53); + SK_OUT8(IoC, SELECT_RAM_BUFFER(i, B3_RI_RTO_XS2), SK_RI_TO_53); + } } /* SkGeInitRamIface */ @@ -987,8 +1206,8 @@ * nothing */ static void SkGeInitBmu( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; @@ -999,29 +1218,63 @@ RxWm = SK_BMU_RX_WM; TxWm = SK_BMU_TX_WM; - - if (!pAC->GIni.GIPciSlot64 && !pAC->GIni.GIPciClock66) { - /* for better performance */ - RxWm /= 2; - TxWm /= 2; - } - /* Rx Queue: Release all local resets and set the watermark */ - SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), CSR_CLR_RESET); - SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_F), RxWm); + if (CHIP_ID_YUKON_2(pAC)) { - /* - * Tx Queue: Release all local resets if the queue is used ! - * set watermark - */ - if (pPrt->PXSQSize != 0) { - SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CSR_CLR_RESET); - SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_F), TxWm); + if (pAC->GIni.GIPciBus == SK_PEX_BUS) { + /* for better performance set it to 128 */ + RxWm = SK_BMU_RX_WM_PEX; + } + + /* Rx Queue: Release all local resets and set the watermark */ + SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), BMU_CLR_RESET); + SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), BMU_OPER_INIT); + SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), BMU_FIFO_OP_ON); + SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_WM), RxWm); + + /* + * Tx Queue: Release all local resets if the queue is used ! + * set watermark + */ + if (pPrt->PXSQSize != 0 && HW_SYNC_TX_SUPPORTED(pAC)) { + /* Yukon-EC doesn't have a synchronous Tx queue */ + SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), BMU_CLR_RESET); + SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), BMU_OPER_INIT); + SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), BMU_FIFO_OP_ON); + SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_WM), TxWm); + } + + if (pPrt->PXAQSize != 0) { + SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), BMU_CLR_RESET); + SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), BMU_OPER_INIT); + SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), BMU_FIFO_OP_ON); + SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_WM), TxWm); + } } - - if (pPrt->PXAQSize != 0) { - SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CSR_CLR_RESET); - SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_F), TxWm); + else { + if (!pAC->GIni.GIPciSlot64 && !pAC->GIni.GIPciClock66) { + /* for better performance */ + RxWm /= 2; + TxWm /= 2; + } + + /* Rx Queue: Release all local resets and set the watermark */ + SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), CSR_CLR_RESET); + SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_F), RxWm); + + /* + * Tx Queue: Release all local resets if the queue is used ! + * set watermark + */ + if (pPrt->PXSQSize != 0) { + SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CSR_CLR_RESET); + SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_F), TxWm); + } + + if (pPrt->PXAQSize != 0) { + SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CSR_CLR_RESET); + SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_F), TxWm); + } } /* * Do NOT enable the descriptor poll timers here, because @@ -1045,20 +1298,29 @@ */ static SK_U32 TestStopBit( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* IO Context */ -int QuIoOffs) /* Queue IO Address Offset */ +SK_IOC IoC, /* I/O Context */ +int QuIoOffs) /* Queue I/O Address Offset */ { SK_U32 QuCsr; /* CSR contents */ SK_IN32(IoC, Q_ADDR(QuIoOffs, Q_CSR), &QuCsr); - if ((QuCsr & (CSR_STOP | CSR_SV_IDLE)) == 0) { - /* Stop Descriptor overridden by start command */ - SK_OUT32(IoC, Q_ADDR(QuIoOffs, Q_CSR), CSR_STOP); + if (CHIP_ID_YUKON_2(pAC)) { + if ((QuCsr & (BMU_STOP | BMU_IDLE)) == 0) { + /* Stop Descriptor overridden by start command */ + SK_OUT32(IoC, Q_ADDR(QuIoOffs, Q_CSR), BMU_STOP); - SK_IN32(IoC, Q_ADDR(QuIoOffs, Q_CSR), &QuCsr); + SK_IN32(IoC, Q_ADDR(QuIoOffs, Q_CSR), &QuCsr); + } + } + else { + if ((QuCsr & (CSR_STOP | CSR_SV_IDLE)) == 0) { + /* Stop Descriptor overridden by start command */ + SK_OUT32(IoC, Q_ADDR(QuIoOffs, Q_CSR), CSR_STOP); + + SK_IN32(IoC, Q_ADDR(QuIoOffs, Q_CSR), &QuCsr); + } } - return(QuCsr); } /* TestStopBit */ @@ -1142,56 +1404,82 @@ * SWITCH_PORT. */ void SkGeStopPort( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* I/O context */ -int Port, /* port to stop (MAC_1 + n) */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +int Port, /* Port to stop (MAC_1 + n) */ int Dir, /* Direction to Stop (SK_STOP_RX, SK_STOP_TX, SK_STOP_ALL) */ int RstMode)/* Reset Mode (SK_SOFT_RST, SK_HARD_RST) */ { -#ifndef SK_DIAG - SK_EVPARA Para; -#endif /* !SK_DIAG */ SK_GEPORT *pPrt; - SK_U32 DWord; + SK_U32 RxCsr; SK_U32 XsCsr; SK_U32 XaCsr; SK_U64 ToutStart; + SK_U32 CsrStart; + SK_U32 CsrStop; + SK_U32 CsrIdle; + SK_U32 CsrTest; + SK_U8 rsl; /* FIFO read shadow level */ + SK_U8 rl; /* FIFO read level */ int i; int ToutCnt; pPrt = &pAC->GIni.GP[Port]; + /* set the proper values of Q_CSR register layout depending on the chip */ + if (CHIP_ID_YUKON_2(pAC)) { + CsrStart = BMU_START; + CsrStop = BMU_STOP; + CsrIdle = BMU_IDLE; + CsrTest = BMU_IDLE; + } + else { + CsrStart = CSR_START; + CsrStop = CSR_STOP; + CsrIdle = CSR_SV_IDLE; + CsrTest = CSR_SV_IDLE | CSR_STOP; + } + if ((Dir & SK_STOP_TX) != 0) { - /* disable receiver and transmitter */ - SkMacRxTxDisable(pAC, IoC, Port); - + + if (!pAC->GIni.GIAsfEnabled) { + /* disable receiver and transmitter */ + SkMacRxTxDisable(pAC, IoC, Port); + } + /* stop both transmit queues */ + SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CsrStop); + SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CsrStop); /* * If the BMU is in the reset state CSR_STOP will terminate * immediately. */ - SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CSR_STOP); - SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CSR_STOP); ToutStart = SkOsGetTime(pAC); ToutCnt = 0; do { - /* - * Clear packet arbiter timeout to make sure - * this loop will terminate. - */ - SK_OUT16(IoC, B3_PA_CTRL, (SK_U16)((Port == MAC_1) ? - PA_CLR_TO_TX1 : PA_CLR_TO_TX2)); - - /* - * If the transfer stucks at the MAC the STOP command will not - * terminate if we don't flush the XMAC's transmit FIFO ! - */ - SkMacFlushTxFifo(pAC, IoC, Port); +#ifdef GENESIS + if (pAC->GIni.GIGenesis) { + /* clear Tx packet arbiter timeout IRQ */ + SK_OUT16(IoC, B3_PA_CTRL, (SK_U16)((Port == MAC_1) ? + PA_CLR_TO_TX1 : PA_CLR_TO_TX2)); + /* + * If the transfer stucks at the XMAC the STOP command will not + * terminate if we don't flush the XMAC's transmit FIFO ! + */ + SkMacFlushTxFifo(pAC, IoC, Port); + } +#endif /* GENESIS */ - XsCsr = TestStopBit(pAC, IoC, pPrt->PXsQOff); XaCsr = TestStopBit(pAC, IoC, pPrt->PXaQOff); + if (HW_SYNC_TX_SUPPORTED(pAC)) { + XsCsr = TestStopBit(pAC, IoC, pPrt->PXsQOff); + } + else { + XsCsr = XaCsr; + } + if (SkOsGetTime(pAC) - ToutStart > (SK_TICKS_PER_SEC / 18)) { /* * Timeout of 1/18 second reached. @@ -1199,67 +1487,111 @@ */ ToutCnt++; if (ToutCnt > 1) { - /* Might be a problem when the driver event handler - * calls StopPort again. XXX. + /* + * If BMU stop doesn't terminate, we assume that + * we have a stable state and can reset the BMU, + * the Prefetch Unit, and RAM buffer now. */ - - /* Fatal Error, Loop aborted */ - SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_HWI_E018, - SKERR_HWI_E018MSG); -#ifndef SK_DIAG - Para.Para64 = Port; - SkEventQueue(pAC, SKGE_DRV, SK_DRV_PORT_FAIL, Para); -#endif /* !SK_DIAG */ - return; + break; /* ===> leave do/while loop here */ } /* - * Cache incoherency workaround: Assume a start command + * Cache incoherency workaround: assume a start command * has been lost while sending the frame. */ ToutStart = SkOsGetTime(pAC); - if ((XsCsr & CSR_STOP) != 0) { - SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CSR_START); + if ((XsCsr & CsrStop) != 0) { + SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CsrStart); } - if ((XaCsr & CSR_STOP) != 0) { - SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CSR_START); + + if ((XaCsr & CsrStop) != 0) { + SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CsrStart); } - } + /* + * After the previous operations the X(s|a)Csr does no + * longer contain the proper values + */ + XaCsr = TestStopBit(pAC, IoC, pPrt->PXaQOff); + + if (HW_SYNC_TX_SUPPORTED(pAC)) { + XsCsr = TestStopBit(pAC, IoC, pPrt->PXsQOff); + } + else { + XsCsr = XaCsr; + } + } /* * Because of the ASIC problem report entry from 21.08.1998 it is * required to wait until CSR_STOP is reset and CSR_SV_IDLE is set. + * (valid for GENESIS only) */ - } while ((XsCsr & (CSR_STOP | CSR_SV_IDLE)) != CSR_SV_IDLE || - (XaCsr & (CSR_STOP | CSR_SV_IDLE)) != CSR_SV_IDLE); + } while (((XsCsr & CsrTest) != CsrIdle || + (XaCsr & CsrTest) != CsrIdle)); + + if (pAC->GIni.GIAsfEnabled) { - /* Reset the MAC depending on the RstMode */ - if (RstMode == SK_SOFT_RST) { - SkMacSoftRst(pAC, IoC, Port); + pPrt->PState = (RstMode == SK_SOFT_RST) ? SK_PRT_STOP : + SK_PRT_RESET; } else { - SkMacHardRst(pAC, IoC, Port); + /* Reset the MAC depending on the RstMode */ + if (RstMode == SK_SOFT_RST) { + + SkMacSoftRst(pAC, IoC, Port); + } + else { + if (HW_FEATURE(pAC, HWF_WA_DEV_472) && Port == MAC_1 && + pAC->GIni.GP[MAC_2].PState == SK_PRT_RUN) { + + pAC->GIni.GP[MAC_1].PState = SK_PRT_RESET; + + /* set GPHY Control reset */ + SK_OUT8(IoC, MR_ADDR(MAC_1, GPHY_CTRL), (SK_U8)GPC_RST_SET); + } + else { + + SkMacHardRst(pAC, IoC, Port); + } + } } - - /* Disable Force Sync bit and Enable Alloc bit */ + + /* disable Force Sync bit and Enable Alloc bit */ SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL), TXA_DIS_FSYNC | TXA_DIS_ALLOC | TXA_STOP_RC); - + /* Stop Interval Timer and Limit Counter of Tx Arbiter */ SK_OUT32(IoC, MR_ADDR(Port, TXA_ITI_INI), 0L); SK_OUT32(IoC, MR_ADDR(Port, TXA_LIM_INI), 0L); /* Perform a local reset of the port's Tx path */ + if (CHIP_ID_YUKON_2(pAC)) { + /* Reset the PCI FIFO of the async Tx queue */ + SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), + BMU_RST_SET | BMU_FIFO_RST); + + /* Reset the PCI FIFO of the sync Tx queue */ + SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), + BMU_RST_SET | BMU_FIFO_RST); + + /* Reset the Tx prefetch units */ + SK_OUT32(IoC, Y2_PREF_Q_ADDR(pPrt->PXaQOff, PREF_UNIT_CTRL_REG), + PREF_UNIT_RST_SET); + SK_OUT32(IoC, Y2_PREF_Q_ADDR(pPrt->PXsQOff, PREF_UNIT_CTRL_REG), + PREF_UNIT_RST_SET); + } + else { + /* Reset the PCI FIFO of the async Tx queue */ + SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CSR_SET_RESET); + /* Reset the PCI FIFO of the sync Tx queue */ + SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CSR_SET_RESET); + } - /* Reset the PCI FIFO of the async Tx queue */ - SK_OUT32(IoC, Q_ADDR(pPrt->PXaQOff, Q_CSR), CSR_SET_RESET); - /* Reset the PCI FIFO of the sync Tx queue */ - SK_OUT32(IoC, Q_ADDR(pPrt->PXsQOff, Q_CSR), CSR_SET_RESET); /* Reset the RAM Buffer async Tx queue */ SK_OUT8(IoC, RB_ADDR(pPrt->PXaQOff, RB_CTRL), RB_RST_SET); /* Reset the RAM Buffer sync Tx queue */ SK_OUT8(IoC, RB_ADDR(pPrt->PXsQOff, RB_CTRL), RB_RST_SET); - + /* Reset Tx MAC FIFO */ #ifdef GENESIS if (pAC->GIni.GIGenesis) { @@ -1271,71 +1603,116 @@ SkGeXmitLED(pAC, IoC, MR_ADDR(Port, TX_LED_INI), SK_LED_DIS); } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { - /* Reset TX MAC FIFO */ - SK_OUT8(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), (SK_U8)GMF_RST_SET); + /* do the reset only if ASF is not enabled */ + if (!pAC->GIni.GIAsfEnabled) { + /* Reset Tx MAC FIFO */ + SK_OUT8(IoC, MR_ADDR(Port, TX_GMF_CTRL_T), (SK_U8)GMF_RST_SET); + } + + /* set Pause Off */ + SK_OUT8(IoC, MR_ADDR(Port, GMAC_CTRL), (SK_U8)GMC_PAUSE_OFF); } #endif /* YUKON */ } if ((Dir & SK_STOP_RX) != 0) { - /* - * The RX Stop Command will not terminate if no buffers - * are queued in the RxD ring. But it will always reach - * the Idle state. Therefore we can use this feature to - * stop the transfer of received packets. - */ - /* stop the port's receive queue */ - SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), CSR_STOP); - - i = 100; - do { + + if (CHIP_ID_YUKON_2(pAC)) { /* - * Clear packet arbiter timeout to make sure - * this loop will terminate + * The RX Stop command will not work for Yukon-2 if the BMU does not + * reach the end of packet and since we can't make sure that we have + * incoming data, we must reset the BMU while it is not during a DMA + * transfer. Since it is possible that the RX path is still active, + * the RX RAM buffer will be stopped first, so any possible incoming + * data will not trigger a DMA. After the RAM buffer is stopped, the + * BMU is polled until any DMA in progress is ended and only then it + * will be reset. */ - SK_OUT16(IoC, B3_PA_CTRL, (SK_U16)((Port == MAC_1) ? - PA_CLR_TO_RX1 : PA_CLR_TO_RX2)); - DWord = TestStopBit(pAC, IoC, pPrt->PRxQOff); + /* disable the RAM Buffer receive queue */ + SK_OUT8(IoC, RB_ADDR(pPrt->PRxQOff, RB_CTRL), RB_DIS_OP_MD); - /* timeout if i==0 (bug fix for #10748) */ - if (--i == 0) { - SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_HWI_E024, - SKERR_HWI_E024MSG); - break; + i = 0xffff; + while (--i) { + SK_IN8(IoC, RB_ADDR(pPrt->PRxQOff, Q_RSL), &rsl); + SK_IN8(IoC, RB_ADDR(pPrt->PRxQOff, Q_RL), &rl); + + if (rsl == rl) { + break; + } } + /* - * because of the ASIC problem report entry from 21.08.98 - * it is required to wait until CSR_STOP is reset and - * CSR_SV_IDLE is set. + * If the Rx side is blocked, the above loop cannot terminate. + * But, if there was any traffic it should be terminated, now. + * However, stop the Rx BMU and the Prefetch Unit ! */ - } while ((DWord & (CSR_STOP | CSR_SV_IDLE)) != CSR_SV_IDLE); + SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), + BMU_RST_SET | BMU_FIFO_RST); + /* reset the Rx prefetch unit */ + SK_OUT32(IoC, Y2_PREF_Q_ADDR(pPrt->PRxQOff, PREF_UNIT_CTRL_REG), + PREF_UNIT_RST_SET); + } + else { + /* + * The RX Stop Command will not terminate if no buffers + * are queued in the RxD ring. But it will always reach + * the Idle state. Therefore we can use this feature to + * stop the transfer of received packets. + */ + /* stop the port's receive queue */ + SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), CsrStop); - /* The path data transfer activity is fully stopped now */ + i = 100; + do { +#ifdef GENESIS + if (pAC->GIni.GIGenesis) { + /* clear Rx packet arbiter timeout IRQ */ + SK_OUT16(IoC, B3_PA_CTRL, (SK_U16)((Port == MAC_1) ? + PA_CLR_TO_RX1 : PA_CLR_TO_RX2)); + } +#endif /* GENESIS */ + + RxCsr = TestStopBit(pAC, IoC, pPrt->PRxQOff); + + /* timeout if i==0 (bug fix for #10748) */ + if (--i == 0) { + SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_HWI_E024, + SKERR_HWI_E024MSG); + break; + } + /* + * Because of the ASIC problem report entry from 21.08.1998 it is + * required to wait until CSR_STOP is reset and CSR_SV_IDLE is set. + * (valid for GENESIS only) + */ + } while ((RxCsr & CsrTest) != CsrIdle); + /* The path data transfer activity is fully stopped now */ - /* Perform a local reset of the port's Rx path */ + /* Perform a local reset of the port's Rx path */ + /* Reset the PCI FIFO of the Rx queue */ + SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), CSR_SET_RESET); + } - /* Reset the PCI FIFO of the Rx queue */ - SK_OUT32(IoC, Q_ADDR(pPrt->PRxQOff, Q_CSR), CSR_SET_RESET); /* Reset the RAM Buffer receive queue */ SK_OUT8(IoC, RB_ADDR(pPrt->PRxQOff, RB_CTRL), RB_RST_SET); /* Reset Rx MAC FIFO */ #ifdef GENESIS if (pAC->GIni.GIGenesis) { - + SK_OUT8(IoC, MR_ADDR(Port, RX_MFF_CTRL2), MFF_RST_SET); /* switch Rx LED off, stop the LED counter */ SkGeXmitLED(pAC, IoC, MR_ADDR(Port, RX_LED_INI), SK_LED_DIS); } #endif /* GENESIS */ - + #ifdef YUKON - if (pAC->GIni.GIYukon) { + if (pAC->GIni.GIYukon && !pAC->GIni.GIAsfEnabled) { /* Reset Rx MAC FIFO */ SK_OUT8(IoC, MR_ADDR(Port, RX_GMF_CTRL_T), (SK_U8)GMF_RST_SET); } @@ -1355,8 +1732,8 @@ * nothing */ static void SkGeInit0( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC) /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC) /* I/O Context */ { int i; SK_GEPORT *pPrt; @@ -1365,6 +1742,7 @@ pPrt = &pAC->GIni.GP[i]; pPrt->PState = SK_PRT_RESET; + pPrt->PPortUsage = SK_RED_LINK; pPrt->PRxQOff = QOffTab[i].RxQOff; pPrt->PXsQOff = QOffTab[i].XsQOff; pPrt->PXaQOff = QOffTab[i].XaQOff; @@ -1393,24 +1771,30 @@ pPrt->PLipaAutoNeg = (SK_U8)SK_LIPA_UNKNOWN; pPrt->PAutoNegFail = SK_FALSE; pPrt->PHWLinkUp = SK_FALSE; - pPrt->PLinkBroken = SK_TRUE; /* See WA code */ + pPrt->PLinkBroken = SK_TRUE; /* See WA code */ pPrt->PPhyPowerState = PHY_PM_OPERATIONAL_MODE; pPrt->PMacColThres = TX_COL_DEF; pPrt->PMacJamLen = TX_JAM_LEN_DEF; pPrt->PMacJamIpgVal = TX_JAM_IPG_DEF; pPrt->PMacJamIpgData = TX_IPG_JAM_DEF; + pPrt->PMacBackOffLim = TX_BOF_LIM_DEF; + pPrt->PMacDataBlind = DATA_BLIND_DEF; pPrt->PMacIpgData = IPG_DATA_DEF; pPrt->PMacLimit4 = SK_FALSE; } - pAC->GIni.GIPortUsage = SK_RED_LINK; pAC->GIni.GILedBlinkCtrl = (SK_U16)OemConfig.Value; - pAC->GIni.GIValIrqMask = IS_ALL_MSK; + pAC->GIni.GIChipCap = 0; + + for (i = 0; i < 4; i++) { + pAC->GIni.HwF.Features[i]= 0x00000000; + pAC->GIni.HwF.OnMask[i] = 0x00000000; + pAC->GIni.HwF.OffMask[i] = 0x00000000; + } } /* SkGeInit0*/ #ifdef SK_PCI_RESET - /****************************************************************************** * * SkGePciReset() - Reset PCI interface @@ -1426,8 +1810,8 @@ * 1: Power state could not be changed to 3. */ static int SkGePciReset( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC) /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC) /* I/O Context */ { int i; SK_U16 PmCtlSts; @@ -1450,7 +1834,7 @@ /* We know the RAM Interface Arbiter is enabled. */ SkPciWriteCfgWord(pAC, PCI_PM_CTL_STS, PCI_PM_STATE_D3); SkPciReadCfgWord(pAC, PCI_PM_CTL_STS, &PmCtlSts); - + if ((PmCtlSts & PCI_PM_STATE_MSK) != PCI_PM_STATE_D3) { return(1); } @@ -1460,7 +1844,7 @@ /* Check for D0 state. */ SkPciReadCfgWord(pAC, PCI_PM_CTL_STS, &PmCtlSts); - + if ((PmCtlSts & PCI_PM_STATE_MSK) != PCI_PM_STATE_D0) { return(1); } @@ -1469,11 +1853,24 @@ SkPciReadCfgWord(pAC, PCI_COMMAND, &PciCmd); SkPciReadCfgByte(pAC, PCI_CACHE_LSZ, &Cls); SkPciReadCfgDWord(pAC, PCI_BASE_1ST, &Bp1); - SkPciReadCfgDWord(pAC, PCI_BASE_2ND, &Bp2); + + /* + * Compute the location in PCI config space of BAR2 + * relativ to the location of BAR1 + */ + if ((Bp1 & PCI_MEM_TYP_MSK) == PCI_MEM64BIT) { + /* BAR1 is 64 bits wide */ + i = 8; + } + else { + i = 4; + } + + SkPciReadCfgDWord(pAC, PCI_BASE_1ST + i, &Bp2); SkPciReadCfgByte(pAC, PCI_LAT_TIM, &Lat); - - if (PciCmd != 0 || Cls != (SK_U8)0 || Lat != (SK_U8)0 || - (Bp1 & 0xfffffff0L) != 0 || Bp2 != 1) { + + if (PciCmd != 0 || Cls != 0 || (Bp1 & 0xfffffff0L) != 0 || Bp2 != 1 || + Lat != 0) { return(1); } @@ -1484,9 +1881,80 @@ return(0); } /* SkGePciReset */ - #endif /* SK_PCI_RESET */ + +/****************************************************************************** + * + * SkGeSetUpSupFeatures() - Collect Feature List for HW_FEATURE Macro + * + * Description: + * This function collects the available features and required + * deviation services of the Adapter and provides these + * information in the GIHwF struct. This information is used as + * default value and may be overritten by the driver using the + * SET_HW_FEATURE_MASK() macro in its Init0 phase. + * + * Notice: + * Using the On and Off mask: Never switch on the same bit in both + * masks simultaneously. However, if doing the Off mask will win. + * + * Returns: + * nothing + */ +static void SkGeSetUpSupFeatures( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC) /* I/O Context */ +{ + int i; + + switch (pAC->GIni.GIChipId) { + case CHIP_ID_YUKON_EC: + if (pAC->GIni.GIChipRev == CHIP_REV_YU_EC_A1) { + /* A0/A1 */ + pAC->GIni.HwF.Features[HW_DEV_LIST] = + HWF_WA_DEV_42 | HWF_WA_DEV_46 | HWF_WA_DEV_43_418 | + HWF_WA_DEV_420 | HWF_WA_DEV_423 | + HWF_WA_DEV_424 | HWF_WA_DEV_425 | HWF_WA_DEV_427 | + HWF_WA_DEV_428 | HWF_WA_DEV_483 | HWF_WA_DEV_4109; + } + else { + /* A2/A3 */ + pAC->GIni.HwF.Features[HW_DEV_LIST] = + HWF_WA_DEV_424 | HWF_WA_DEV_425 | HWF_WA_DEV_427 | + HWF_WA_DEV_428 | HWF_WA_DEV_483 | HWF_WA_DEV_4109; + } + break; + case CHIP_ID_YUKON_FE: + pAC->GIni.HwF.Features[HW_DEV_LIST] = HWF_WA_DEV_427 | HWF_WA_DEV_4109; + break; + case CHIP_ID_YUKON_XL: + /* still needed for Diag */ + if (pAC->GIni.GIChipRev == 0) { + pAC->GIni.HwF.Features[HW_DEV_LIST] = + HWF_WA_DEV_427 | HWF_WA_DEV_463 | HWF_WA_DEV_472 | + HWF_WA_DEV_479 | HWF_WA_DEV_483 | HWF_WA_DEV_4115; + } + else if (pAC->GIni.GIChipRev == 1) { + pAC->GIni.HwF.Features[HW_DEV_LIST] = + HWF_WA_DEV_427 | HWF_WA_DEV_483 | HWF_WA_DEV_4109 | + HWF_WA_DEV_4115; + } + else { + pAC->GIni.HwF.Features[HW_DEV_LIST] = + HWF_WA_DEV_427 | HWF_WA_DEV_483 | HWF_WA_DEV_4109; + } + break; + } + + for (i = 0; i < 4; i++) { + pAC->GIni.HwF.Features[i] = + (pAC->GIni.HwF.Features[i] | pAC->GIni.HwF.OnMask[i]) & + ~pAC->GIni.HwF.OffMask[i]; + } +} /* SkGeSetUpSupFeatures */ + + /****************************************************************************** * * SkGeInit1() - Level 1 Initialization @@ -1509,73 +1977,216 @@ * 6: HW self test failed */ static int SkGeInit1( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC) /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC) /* I/O Context */ { SK_U8 Byte; SK_U16 Word; - SK_U16 CtrlStat; + SK_U32 CtrlStat; + SK_U32 VauxAvail; SK_U32 DWord; + SK_U32 PowerDownBit; + SK_GEPORT *pPrt; int RetVal; int i; RetVal = 0; - /* save CLK_RUN bits (YUKON-Lite) */ - SK_IN16(IoC, B0_CTST, &CtrlStat); + /* save CLK_RUN & ASF_ENABLE bits (YUKON-Lite, YUKON-EC) */ + SK_IN32(IoC, B0_CTST, &CtrlStat); #ifdef SK_PCI_RESET (void)SkGePciReset(pAC, IoC); #endif /* SK_PCI_RESET */ - /* do the SW-reset */ - SK_OUT8(IoC, B0_CTST, CS_RST_SET); - /* release the SW-reset */ + /* Important: SW-reset has to be cleared here, to ensure + * the CHIP_ID can be read IO-mapped based, too - + * remember the RAP register can only be written if + * SW-reset is cleared. + */ SK_OUT8(IoC, B0_CTST, CS_RST_CLR); + /* read Chip Identification Number */ + SK_IN8(IoC, B2_CHIP_ID, &Byte); + pAC->GIni.GIChipId = Byte; + + pAC->GIni.GIAsfEnabled = SK_FALSE; + + /* ASF support only for Yukon-2 */ + if ((pAC->GIni.GIChipId >= CHIP_ID_YUKON_XL) && + (pAC->GIni.GIChipId <= CHIP_ID_YUKON_EC)) { +#ifdef SK_ASF + if ((CtrlStat & Y2_ASF_ENABLE) != 0) { + /* do the SW-reset only if ASF is not enabled */ + pAC->GIni.GIAsfEnabled = SK_TRUE; + } +#else /* !SK_ASF */ + + SK_IN8(IoC, B28_Y2_ASF_STAT_CMD, &Byte); + + pAC->GIni.GIAsfRunning = Byte & Y2_ASF_RUNNING; + + /* put ASF system in reset state */ + SK_OUT8(IoC, B28_Y2_ASF_STAT_CMD, Y2_ASF_RESET); + + /* disable ASF Unit */ + SK_OUT16(IoC, B0_CTST, Y2_ASF_DISABLE); +#endif /* !SK_ASF */ + } + + if (!pAC->GIni.GIAsfEnabled) { + /* Yukon-2: required for Diag and Power Management */ + /* set the SW-reset */ + SK_OUT8(IoC, B0_CTST, CS_RST_SET); + + /* release the SW-reset */ + SK_OUT8(IoC, B0_CTST, CS_RST_CLR); + } + /* reset all error bits in the PCI STATUS register */ /* * Note: PCI Cfg cycles cannot be used, because they are not * available on some platforms after 'boot time'. */ - SK_IN16(IoC, PCI_C(PCI_STATUS), &Word); - + SK_IN16(IoC, PCI_C(pAC, PCI_STATUS), &Word); + SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON); - SK_OUT16(IoC, PCI_C(PCI_STATUS), (SK_U16)(Word | PCI_ERRBITS)); - SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF); + + SK_OUT16(IoC, PCI_C(pAC, PCI_STATUS), Word | (SK_U16)PCI_ERRBITS); /* release Master Reset */ SK_OUT8(IoC, B0_CTST, CS_MRST_CLR); #ifdef CLK_RUN CtrlStat |= CS_CLK_RUN_ENA; -#endif /* CLK_RUN */ /* restore CLK_RUN bits */ SK_OUT16(IoC, B0_CTST, (SK_U16)(CtrlStat & (CS_CLK_RUN_HOT | CS_CLK_RUN_RST | CS_CLK_RUN_ENA))); +#endif /* CLK_RUN */ + + if ((pAC->GIni.GIChipId >= CHIP_ID_YUKON_XL) && + (pAC->GIni.GIChipId <= CHIP_ID_YUKON_FE)) { + + pAC->GIni.GIYukon2 = SK_TRUE; + pAC->GIni.GIValIrqMask = Y2_IS_ALL_MSK; + pAC->GIni.GIValHwIrqMask = Y2_HWE_ALL_MSK; + + VauxAvail = Y2_VAUX_AVAIL; + + SK_IN32(IoC, PCI_C(pAC, PCI_OUR_STATUS), &DWord); + + if ((DWord & PCI_OS_PCI_X) != 0) { + /* this is a PCI / PCI-X bus */ + if ((DWord & PCI_OS_PCIX) != 0) { + /* this is a PCI-X bus */ + pAC->GIni.GIPciBus = SK_PCIX_BUS; + + /* PCI-X is always 64-bit wide */ + pAC->GIni.GIPciSlot64 = SK_TRUE; + + pAC->GIni.GIPciMode = (SK_U8)(PCI_OS_SPEED(DWord)); + } + else { + /* this is a conventional PCI bus */ + pAC->GIni.GIPciBus = SK_PCI_BUS; + + SK_IN16(IoC, PCI_C(pAC, PCI_OUR_REG_2), &Word); + + /* check if 64-bit width is used */ + pAC->GIni.GIPciSlot64 = (SK_BOOL) + (((DWord & PCI_OS_PCI64B) != 0) && + ((Word & PCI_USEDATA64) != 0)); + + /* check if 66 MHz PCI Clock is active */ + pAC->GIni.GIPciClock66 = (SK_BOOL)((DWord & PCI_OS_PCI66M) != 0); + } + } + else { + /* this is a PEX bus */ + pAC->GIni.GIPciBus = SK_PEX_BUS; + + /* clear any PEX errors */ + SK_OUT32(IoC, PCI_C(pAC, PEX_UNC_ERR_STAT), 0xffffffffUL); + + SK_IN16(IoC, PCI_C(pAC, PEX_LNK_STAT), &Word); + + pAC->GIni.GIPexWidth = (SK_U8)((Word & PEX_LS_LINK_WI_MSK) >> 4); + } + /* + * Yukon-2 chips family has a different way of providing + * the number of MACs available + */ + pAC->GIni.GIMacsFound = 1; + + SK_IN8(IoC, B2_Y2_HW_RES, &Byte); + + if (CHIP_ID_YUKON_2(pAC)) { + /* + * OEM config value is overwritten and should not + * be used for Yukon-2 + */ + pAC->GIni.GILedBlinkCtrl |= SK_ACT_LED_BLINK; + + if (CFG_LED_MODE(Byte) == CFG_LED_DUAL_ACT_LNK) { + + pAC->GIni.GILedBlinkCtrl |= SK_DUAL_LED_ACT_LNK; + } + } + + if ((Byte & CFG_DUAL_MAC_MSK) == CFG_DUAL_MAC_MSK) { + + SK_IN8(IoC, B2_Y2_CLK_GATE, &Byte); + + if (!(Byte & Y2_STATUS_LNK2_INAC)) { + /* Link 2 activ */ + pAC->GIni.GIMacsFound++; + } + } + +#ifdef VCPU + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_XL) { + /* temporary WA for reported number of links */ + pAC->GIni.GIMacsFound = 2; + } +#endif /* VCPU */ + + /* read Chip Revision */ + SK_IN8(IoC, B2_MAC_CFG, &Byte); + + pAC->GIni.GIChipCap = Byte & 0x0f; + } + else { + pAC->GIni.GIYukon2 = SK_FALSE; + pAC->GIni.GIValIrqMask = IS_ALL_MSK; + pAC->GIni.GIValHwIrqMask = 0; /* not activated */ + + VauxAvail = CS_VAUX_AVAIL; + + /* read number of MACs and Chip Revision */ + SK_IN8(IoC, B2_MAC_CFG, &Byte); + + pAC->GIni.GIMacsFound = (Byte & CFG_SNG_MAC) ? 1 : 2; + } - /* read Chip Identification Number */ - SK_IN8(IoC, B2_CHIP_ID, &Byte); - pAC->GIni.GIChipId = Byte; - - /* read number of MACs */ - SK_IN8(IoC, B2_MAC_CFG, &Byte); - pAC->GIni.GIMacsFound = (Byte & CFG_SNG_MAC) ? 1 : 2; - /* get Chip Revision Number */ pAC->GIni.GIChipRev = (SK_U8)((Byte & CFG_CHIP_R_MSK) >> 4); - /* get diff. PCI parameters */ - SK_IN16(IoC, B0_CTST, &CtrlStat); - +#ifndef SK_DIAG + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_XL && pAC->GIni.GIChipRev == 0) { + /* Yukon-2 Chip Rev. A0 */ + return(6); + } +#endif /* !SK_DIAG */ + /* read the adapters RAM size */ SK_IN8(IoC, B2_E_0, &Byte); - + pAC->GIni.GIGenesis = SK_FALSE; pAC->GIni.GIYukon = SK_FALSE; pAC->GIni.GIYukonLite = SK_FALSE; + pAC->GIni.GIVauxAvail = SK_FALSE; #ifdef GENESIS if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) { @@ -1591,57 +2202,77 @@ pAC->GIni.GIRamSize = (int)Byte * 512; pAC->GIni.GIRamOffs = 0; } - /* all GE adapters work with 53.125 MHz host clock */ + /* all GENESIS adapters work with 53.125 MHz host clock */ pAC->GIni.GIHstClkFact = SK_FACT_53; - + /* set Descr. Poll Timer Init Value to 250 ms */ pAC->GIni.GIPollTimerVal = SK_DPOLL_DEF * (SK_U32)pAC->GIni.GIHstClkFact / 100; } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIChipId != CHIP_ID_GENESIS) { - + pAC->GIni.GIYukon = SK_TRUE; - + pAC->GIni.GIRamSize = (Byte == (SK_U8)0) ? 128 : (int)Byte * 4; - + pAC->GIni.GIRamOffs = 0; - - /* WA for chip Rev. A */ + + /* WA for Yukon chip Rev. A */ pAC->GIni.GIWolOffs = (pAC->GIni.GIChipId == CHIP_ID_YUKON && pAC->GIni.GIChipRev == 0) ? WOL_REG_OFFS : 0; - + /* get PM Capabilities of PCI config space */ - SK_IN16(IoC, PCI_C(PCI_PM_CAP_REG), &Word); + SK_IN16(IoC, PCI_C(pAC, PCI_PM_CAP_REG), &Word); /* check if VAUX is available */ - if (((CtrlStat & CS_VAUX_AVAIL) != 0) && + if (((CtrlStat & VauxAvail) != 0) && /* check also if PME from D3cold is set */ ((Word & PCI_PME_D3C_SUP) != 0)) { /* set entry in GE init struct */ pAC->GIni.GIVauxAvail = SK_TRUE; } - - if (pAC->GIni.GIChipId == CHIP_ID_YUKON_LITE) { - /* this is Rev. A1 */ - pAC->GIni.GIYukonLite = SK_TRUE; - } - else { - /* save Flash-Address Register */ - SK_IN32(IoC, B2_FAR, &DWord); - /* test Flash-Address Register */ - SK_OUT8(IoC, B2_FAR + 3, 0xff); - SK_IN8(IoC, B2_FAR + 3, &Byte); + if (!CHIP_ID_YUKON_2(pAC)) { - if (Byte != 0) { - /* this is Rev. A0 */ + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_LITE) { + /* this is Rev. A1 */ pAC->GIni.GIYukonLite = SK_TRUE; + } + else { + /* save Flash-Address Register */ + SK_IN32(IoC, B2_FAR, &DWord); - /* restore Flash-Address Register */ - SK_OUT32(IoC, B2_FAR, DWord); + /* test Flash-Address Register */ + SK_OUT8(IoC, B2_FAR + 3, 0xff); + SK_IN8(IoC, B2_FAR + 3, &Byte); + + if (Byte != 0) { + /* this is Rev. A0 */ + pAC->GIni.GIYukonLite = SK_TRUE; + + /* restore Flash-Address Register */ + SK_OUT32(IoC, B2_FAR, DWord); + } + } + } + else { + /* Check for CLS = 0 (dev. #4.55) */ + if (pAC->GIni.GIPciBus != SK_PEX_BUS) { + /* PCI and PCI-X */ + SK_IN8(IoC, PCI_C(pAC, PCI_CACHE_LSZ), &Byte); + if (Byte == 0) { + /* set CLS to 2 if configured to 0 */ + SK_OUT8(IoC, PCI_C(pAC, PCI_CACHE_LSZ), 2); + } + if (pAC->GIni.GIPciBus == SK_PCIX_BUS) { + /* set Cache Line Size opt. */ + SK_IN32(IoC, PCI_C(pAC, PCI_OUR_REG_1), &DWord); + DWord |= PCI_CLS_OPT; + SK_OUT32(IoC, PCI_C(pAC, PCI_OUR_REG_1), DWord); + } } } @@ -1649,70 +2280,147 @@ SK_OUT8(IoC, B0_POWER_CTRL, (SK_U8)(PC_VAUX_ENA | PC_VCC_ENA | PC_VAUX_OFF | PC_VCC_ON)); - /* read the Interrupt source */ - SK_IN32(IoC, B0_ISRC, &DWord); - - if ((DWord & IS_HW_ERR) != 0) { - /* read the HW Error Interrupt source */ - SK_IN32(IoC, B0_HWE_ISRC, &DWord); - - if ((DWord & IS_IRQ_SENSOR) != 0) { - /* disable HW Error IRQ */ - pAC->GIni.GIValIrqMask &= ~IS_HW_ERR; + Byte = 0; + + if (CHIP_ID_YUKON_2(pAC)) { + /* PEX adapters work with different host clock */ + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_EC) { + /* Yukon-EC works with 125 MHz host clock */ + pAC->GIni.GIHstClkFact = SK_FACT_125; + } + else if (pAC->GIni.GIChipId == CHIP_ID_YUKON_FE) { + /* Yukon-FE works with 100 MHz host clock */ + pAC->GIni.GIHstClkFact = SK_FACT_100; + } + else { /* CHIP_ID_YUKON_XL */ + /* all Yukon-2 adapters work with 156 MHz host clock */ + pAC->GIni.GIHstClkFact = 2 * SK_FACT_78; + + if (pAC->GIni.GIChipRev > 1) { + /* enable bits are inverted */ + Byte = (SK_U8)(Y2_PCI_CLK_LNK1_DIS | Y2_COR_CLK_LNK1_DIS | + Y2_CLK_GAT_LNK1_DIS | Y2_PCI_CLK_LNK2_DIS | + Y2_COR_CLK_LNK2_DIS | Y2_CLK_GAT_LNK2_DIS); + } } + + pAC->GIni.GIPollTimerVal = + SK_DPOLL_DEF_Y2 * (SK_U32)pAC->GIni.GIHstClkFact / 100; + + /* set power down bit */ + PowerDownBit = PCI_Y2_PHY1_POWD | PCI_Y2_PHY2_POWD; + + /* disable Core Clock Division, set Clock Select to 0 (Yukon-2) */ + SK_OUT32(IoC, B2_Y2_CLK_CTRL, Y2_CLK_DIV_DIS); + + /* enable PCI & Core Clock, enable clock gating for both Links */ + SK_OUT8(IoC, B2_Y2_CLK_GATE, Byte); } - - for (i = 0; i < pAC->GIni.GIMacsFound; i++) { - /* set GMAC Link Control reset */ - SK_OUT16(IoC, MR_ADDR(i, GMAC_LINK_CTRL), GMLC_RST_SET); + else { + /* YUKON adapters work with 78 MHz host clock */ + pAC->GIni.GIHstClkFact = SK_FACT_78; + + pAC->GIni.GIPollTimerVal = SK_DPOLL_MAX; /* 215 ms */ + + /* read the Interrupt source */ + SK_IN32(IoC, B0_ISRC, &DWord); + + if ((DWord & IS_HW_ERR) != 0) { + /* read the HW Error Interrupt source */ + SK_IN32(IoC, B0_HWE_ISRC, &DWord); + + if ((DWord & IS_IRQ_SENSOR) != 0) { + /* disable HW Error IRQ */ + pAC->GIni.GIValIrqMask &= ~IS_HW_ERR; + } + } + /* set power down bit */ + PowerDownBit = PCI_PHY_COMA; + } + + SK_IN32(IoC, PCI_C(pAC, PCI_OUR_REG_1), &DWord); + + DWord &= ~PowerDownBit; + + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_XL && pAC->GIni.GIChipRev > 1) { + /* deassert Low Power for 1st PHY */ + DWord |= PCI_Y2_PHY1_COMA; - /* clear GMAC Link Control reset */ - SK_OUT16(IoC, MR_ADDR(i, GMAC_LINK_CTRL), GMLC_RST_CLR); + if (pAC->GIni.GIMacsFound > 1) { + /* deassert Low Power for 2nd PHY */ + DWord |= PCI_Y2_PHY2_COMA; + } + } + + /* Release PHY from PowerDown/COMA Mode */ + SK_OUT32(IoC, PCI_C(pAC, PCI_OUR_REG_1), DWord); + + if (!pAC->GIni.GIAsfEnabled) { + + for (i = 0; i < pAC->GIni.GIMacsFound; i++) { + /* set GMAC Link Control reset */ + SK_OUT8(IoC, MR_ADDR(i, GMAC_LINK_CTRL), (SK_U8)GMLC_RST_SET); + + /* clear GMAC Link Control reset */ + SK_OUT8(IoC, MR_ADDR(i, GMAC_LINK_CTRL), (SK_U8)GMLC_RST_CLR); + } } - /* all YU chips work with 78.125 MHz host clock */ - pAC->GIni.GIHstClkFact = SK_FACT_78; - - pAC->GIni.GIPollTimerVal = SK_DPOLL_MAX; /* 215 ms */ } #endif /* YUKON */ - /* check if 64-bit PCI Slot is present */ - pAC->GIni.GIPciSlot64 = (SK_BOOL)((CtrlStat & CS_BUS_SLOT_SZ) != 0); - - /* check if 66 MHz PCI Clock is active */ - pAC->GIni.GIPciClock66 = (SK_BOOL)((CtrlStat & CS_BUS_CLOCK) != 0); + SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF); + + if (!CHIP_ID_YUKON_2(pAC)) { + /* this is a conventional PCI bus */ + pAC->GIni.GIPciBus = SK_PCI_BUS; + + /* check if 64-bit PCI Slot is present */ + pAC->GIni.GIPciSlot64 = (SK_BOOL)((CtrlStat & CS_BUS_SLOT_SZ) != 0); + + /* check if 66 MHz PCI Clock is active */ + pAC->GIni.GIPciClock66 = (SK_BOOL)((CtrlStat & CS_BUS_CLOCK) != 0); + } /* read PCI HW Revision Id. */ - SK_IN8(IoC, PCI_C(PCI_REV_ID), &Byte); + SK_IN8(IoC, PCI_C(pAC, PCI_REV_ID), &Byte); pAC->GIni.GIPciHwRev = Byte; + /* read connector type */ + SK_IN8(IoC, B2_CONN_TYP, &pAC->GIni.GIConTyp); + /* read the PMD type */ SK_IN8(IoC, B2_PMD_TYP, &Byte); - pAC->GIni.GICopperType = (SK_U8)(Byte == 'T'); - /* read the PHY type */ + pAC->GIni.GIPmdTyp = Byte; + + pAC->GIni.GICopperType = (SK_BOOL)(Byte == 'T' || Byte == '1' || + (pAC->GIni.GIYukon2 && !(Byte == 'L' || Byte == 'S'))); + + /* read the PHY type (Yukon and Genesis) */ SK_IN8(IoC, B2_E_1, &Byte); Byte &= 0x0f; /* the PHY type is stored in the lower nibble */ for (i = 0; i < pAC->GIni.GIMacsFound; i++) { - + + pPrt = &pAC->GIni.GP[i]; + #ifdef GENESIS if (pAC->GIni.GIGenesis) { switch (Byte) { case SK_PHY_XMAC: - pAC->GIni.GP[i].PhyAddr = PHY_ADDR_XMAC; + pPrt->PhyAddr = PHY_ADDR_XMAC; break; case SK_PHY_BCOM: - pAC->GIni.GP[i].PhyAddr = PHY_ADDR_BCOM; - pAC->GIni.GP[i].PMSCap = (SK_U8)(SK_MS_CAP_AUTO | + pPrt->PhyAddr = PHY_ADDR_BCOM; + pPrt->PMSCap = (SK_U8)(SK_MS_CAP_AUTO | SK_MS_CAP_MASTER | SK_MS_CAP_SLAVE); break; #ifdef OTHER_PHY case SK_PHY_LONE: - pAC->GIni.GP[i].PhyAddr = PHY_ADDR_LONE; + pPrt->PhyAddr = PHY_ADDR_LONE; break; case SK_PHY_NAT: - pAC->GIni.GP[i].PhyAddr = PHY_ADDR_NAT; + pPrt->PhyAddr = PHY_ADDR_NAT; break; #endif /* OTHER_PHY */ default: @@ -1722,65 +2430,98 @@ } } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { - - if (Byte < (SK_U8)SK_PHY_MARV_COPPER) { + + if ((Byte < (SK_U8)SK_PHY_MARV_COPPER) && + pAC->GIni.GIPmdTyp != 'L' && pAC->GIni.GIPmdTyp != 'S') { /* if this field is not initialized */ Byte = (SK_U8)SK_PHY_MARV_COPPER; - + pAC->GIni.GICopperType = SK_TRUE; } - - pAC->GIni.GP[i].PhyAddr = PHY_ADDR_MARV; - + + pPrt->PhyAddr = PHY_ADDR_MARV; + if (pAC->GIni.GICopperType) { - pAC->GIni.GP[i].PLinkSpeedCap = (SK_U8)(SK_LSPEED_CAP_AUTO | - SK_LSPEED_CAP_10MBPS | SK_LSPEED_CAP_100MBPS | - SK_LSPEED_CAP_1000MBPS); - - pAC->GIni.GP[i].PLinkSpeed = (SK_U8)SK_LSPEED_AUTO; - - pAC->GIni.GP[i].PMSCap = (SK_U8)(SK_MS_CAP_AUTO | + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_FE || + (pAC->GIni.GIChipId == CHIP_ID_YUKON_EC && + pAC->GIni.GIChipCap == 2)) { + + pPrt->PLinkSpeedCap = (SK_U8)(SK_LSPEED_CAP_100MBPS | + SK_LSPEED_CAP_10MBPS); + + pAC->GIni.GIRamSize = 4; + } + else { + pPrt->PLinkSpeedCap = (SK_U8)(SK_LSPEED_CAP_1000MBPS | + SK_LSPEED_CAP_100MBPS | SK_LSPEED_CAP_10MBPS | + SK_LSPEED_CAP_AUTO); + } + + pPrt->PLinkSpeed = (SK_U8)SK_LSPEED_AUTO; + + pPrt->PMSCap = (SK_U8)(SK_MS_CAP_AUTO | SK_MS_CAP_MASTER | SK_MS_CAP_SLAVE); } else { Byte = (SK_U8)SK_PHY_MARV_FIBER; } } + + /* clear TWSI IRQ */ + SK_OUT32(IoC, B2_I2C_IRQ, I2C_CLR_IRQ); + #endif /* YUKON */ - - pAC->GIni.GP[i].PhyType = (int)Byte; - + + pPrt->PhyType = (int)Byte; + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, - ("PHY type: %d PHY addr: %04x\n", Byte, - pAC->GIni.GP[i].PhyAddr)); + ("PHY type: %d PHY addr: %04x\n", + Byte, pPrt->PhyAddr)); } - + /* get MAC Type & set function pointers dependent on */ #ifdef GENESIS if (pAC->GIni.GIGenesis) { - + pAC->GIni.GIMacType = SK_MAC_XMAC; pAC->GIni.GIFunc.pFnMacUpdateStats = SkXmUpdateStats; pAC->GIni.GIFunc.pFnMacStatistic = SkXmMacStatistic; pAC->GIni.GIFunc.pFnMacResetCounter = SkXmResetCounter; pAC->GIni.GIFunc.pFnMacOverflow = SkXmOverflowStatus; +#ifdef SK_DIAG + pAC->GIni.GIFunc.pFnMacPhyRead = SkXmPhyRead; + pAC->GIni.GIFunc.pFnMacPhyWrite = SkXmPhyWrite; +#else /* SK_DIAG */ + pAC->GIni.GIFunc.pSkGeSirqIsr = SkGeYuSirqIsr; +#endif /* !SK_DIAG */ } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { - + pAC->GIni.GIMacType = SK_MAC_GMAC; pAC->GIni.GIFunc.pFnMacUpdateStats = SkGmUpdateStats; pAC->GIni.GIFunc.pFnMacStatistic = SkGmMacStatistic; pAC->GIni.GIFunc.pFnMacResetCounter = SkGmResetCounter; pAC->GIni.GIFunc.pFnMacOverflow = SkGmOverflowStatus; +#ifdef SK_DIAG + pAC->GIni.GIFunc.pFnMacPhyRead = SkGmPhyRead; + pAC->GIni.GIFunc.pFnMacPhyWrite = SkGmPhyWrite; +#else /* SK_DIAG */ + if (CHIP_ID_YUKON_2(pAC)) { + pAC->GIni.GIFunc.pSkGeSirqIsr = SkYuk2SirqIsr; + } + else { + pAC->GIni.GIFunc.pSkGeSirqIsr = SkGeYuSirqIsr; + } +#endif /* !SK_DIAG */ #ifdef SPECIAL_HANDLING if (pAC->GIni.GIChipId == CHIP_ID_YUKON) { @@ -1793,7 +2534,9 @@ #endif } #endif /* YUKON */ - + + SkGeSetUpSupFeatures(pAC, IoC); + return(RetVal); } /* SkGeInit1 */ @@ -1814,9 +2557,12 @@ * nothing */ static void SkGeInit2( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC) /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC) /* I/O Context */ { +#ifdef YUKON + SK_U16 Word; +#endif /* YUKON */ #ifdef GENESIS SK_U32 DWord; #endif /* GENESIS */ @@ -1850,13 +2596,13 @@ SkGeInitPktArb(pAC, IoC); } #endif /* GENESIS */ - -#ifdef YUKON + +#ifdef xSK_DIAG if (pAC->GIni.GIYukon) { /* start Time Stamp Timer */ SK_OUT8(IoC, GMAC_TI_ST_CTRL, (SK_U8)GMT_ST_START); } -#endif /* YUKON */ +#endif /* SK_DIAG */ /* enable the Tx Arbiters */ for (i = 0; i < pAC->GIni.GIMacsFound; i++) { @@ -1866,8 +2612,34 @@ /* enable the RAM Interface Arbiter */ SkGeInitRamIface(pAC, IoC); +#ifdef YUKON + if (CHIP_ID_YUKON_2(pAC)) { + + if (pAC->GIni.GIPciBus == SK_PEX_BUS) { + + SK_IN16(IoC, PCI_C(pAC, PEX_DEV_CTRL), &Word); + + /* change Max. Read Request Size to 2048 bytes */ + Word &= ~PEX_DC_MAX_RRS_MSK; + Word |= PEX_DC_MAX_RD_RQ_SIZE(4); + + SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON); + + SK_OUT16(IoC, PCI_C(pAC, PEX_DEV_CTRL), Word); + + SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF); + } + + /* + * Writing the HW Error Mask Reg. will not generate an IRQ + * as long as the B0_IMSK is not set by the driver. + */ + SK_OUT32(IoC, B0_HWE_IMSK, pAC->GIni.GIValHwIrqMask); + } +#endif /* YUKON */ } /* SkGeInit2 */ + /****************************************************************************** * * SkGeInit() - Initialize the GE Adapter with the specified level. @@ -1889,7 +2661,7 @@ * if Number of MACs > SK_MAX_MACS * * After returning from Level 0 the adapter - * may be accessed with IO operations. + * may be accessed with I/O operations. * * Level 2: start the Blink Source Counter * @@ -1898,14 +2670,14 @@ * 1: Number of MACs exceeds SK_MAX_MACS (after level 1) * 2: Adapter not present or not accessible * 3: Illegal initialization level - * 4: Initialization Level 1 Call missing + * 4: Initialization level 1 call missing * 5: Unexpected PHY type detected * 6: HW self test failed */ int SkGeInit( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ -int Level) /* initialization level */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ +int Level) /* Initialization Level */ { int RetVal; /* return value */ SK_U32 DWord; @@ -1920,7 +2692,7 @@ SkGeInit0(pAC, IoC); pAC->GIni.GILevel = SK_INIT_DATA; break; - + case SK_INIT_IO: /* Initialization Level 1 */ RetVal = SkGeInit1(pAC, IoC); @@ -1932,22 +2704,24 @@ SK_OUT32(IoC, B2_IRQM_INI, SK_TEST_VAL); SK_IN32(IoC, B2_IRQM_INI, &DWord); SK_OUT32(IoC, B2_IRQM_INI, 0L); - + if (DWord != SK_TEST_VAL) { RetVal = 2; break; } +#ifdef DEBUG /* check if the number of GIMacsFound matches SK_MAX_MACS */ if (pAC->GIni.GIMacsFound > SK_MAX_MACS) { RetVal = 1; break; } +#endif /* DEBUG */ /* Level 1 successfully passed */ pAC->GIni.GILevel = SK_INIT_IO; break; - + case SK_INIT_RUN: /* Initialization Level 2 */ if (pAC->GIni.GILevel != SK_INIT_IO) { @@ -1957,12 +2731,13 @@ RetVal = 4; break; } + SkGeInit2(pAC, IoC); /* Level 2 successfully passed */ pAC->GIni.GILevel = SK_INIT_RUN; break; - + default: SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E003, SKERR_HWI_E003MSG); RetVal = 3; @@ -1985,77 +2760,79 @@ * nothing */ void SkGeDeInit( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC) /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC) /* I/O Context */ { int i; SK_U16 Word; -#ifdef SK_PHY_LP_MODE - SK_U8 Byte; +#ifdef SK_PHY_LP_MODE_DEEP_SLEEP SK_U16 PmCtlSts; -#endif /* SK_PHY_LP_MODE */ +#endif #if (!defined(SK_SLIM) && !defined(VCPU)) /* ensure I2C is ready */ SkI2cWaitIrq(pAC, IoC); -#endif - - /* stop all current transfer activity */ - for (i = 0; i < pAC->GIni.GIMacsFound; i++) { - if (pAC->GIni.GP[i].PState != SK_PRT_STOP && - pAC->GIni.GP[i].PState != SK_PRT_RESET) { - - SkGeStopPort(pAC, IoC, i, SK_STOP_ALL, SK_HARD_RST); - } - } +#endif -#ifdef SK_PHY_LP_MODE - /* +#ifdef SK_PHY_LP_MODE_DEEP_SLEEP + /* * for power saving purposes within mobile environments - * we set the PHY to coma mode and switch to D3 power state. + * we set the PHY to coma mode. */ - if (pAC->GIni.GIYukonLite && - pAC->GIni.GIChipRev >= CHIP_REV_YU_LITE_A3) { +#ifdef XXX + if (pAC->GIni.GIVauxAvail) { + /* switch power to VAUX */ + SK_OUT8(IoC, B0_POWER_CTRL, (SK_U8)(PC_VAUX_ENA | PC_VCC_ENA | + PC_VAUX_ON | PC_VCC_OFF)); + } +#endif /* XXX */ + + if (CHIP_ID_YUKON_2(pAC) && /* pAC->GIni.GIMacsFound == 1 && */ + !pAC->GIni.GIAsfEnabled +#ifdef XXX + || (pAC->GIni.GIYukonLite && pAC->GIni.GIChipRev >= CHIP_REV_YU_LITE_A3) +#endif /* XXX */ + ) { /* for all ports switch PHY to coma mode */ for (i = 0; i < pAC->GIni.GIMacsFound; i++) { - - SkGmEnterLowPowerMode(pAC, IoC, i, PHY_PM_DEEP_SLEEP); - } - if (pAC->GIni.GIVauxAvail) { - /* switch power to VAUX */ - Byte = PC_VAUX_ENA | PC_VCC_ENA | PC_VAUX_ON | PC_VCC_OFF; - - SK_OUT8(IoC, B0_POWER_CTRL, Byte); + (void)SkGmEnterLowPowerMode(pAC, IoC, i, PHY_PM_DEEP_SLEEP); } - - /* switch to D3 state */ - SK_IN16(IoC, PCI_C(PCI_PM_CTL_STS), &PmCtlSts); - - PmCtlSts |= PCI_PM_STATE_D3; + } +#else /* !SK_PHY_LP_MODE_DEEP_SLEEP */ - SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON); + if (!pAC->GIni.GIAsfEnabled) { + /* stop all current transfer activity */ + for (i = 0; i < pAC->GIni.GIMacsFound; i++) { + if (pAC->GIni.GP[i].PState != SK_PRT_STOP && + pAC->GIni.GP[i].PState != SK_PRT_RESET) { - SK_OUT16(IoC, PCI_C(PCI_PM_CTL_STS), PmCtlSts); + SkGeStopPort(pAC, IoC, i, SK_STOP_ALL, SK_HARD_RST); + } + } } -#endif /* SK_PHY_LP_MODE */ - /* Reset all bits in the PCI STATUS register */ + /* reset all bits in the PCI STATUS register */ /* * Note: PCI Cfg cycles cannot be used, because they are not * available on some platforms after 'boot time'. */ - SK_IN16(IoC, PCI_C(PCI_STATUS), &Word); - + SK_IN16(IoC, PCI_C(pAC, PCI_STATUS), &Word); + SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON); - SK_OUT16(IoC, PCI_C(PCI_STATUS), (SK_U16)(Word | PCI_ERRBITS)); + + SK_OUT16(IoC, PCI_C(pAC, PCI_STATUS), Word | (SK_U16)PCI_ERRBITS); + SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF); - /* do the reset, all LEDs are switched off now */ - SK_OUT8(IoC, B0_CTST, CS_RST_SET); - + if (!pAC->GIni.GIAsfEnabled) { + /* set the SW-reset */ + SK_OUT8(IoC, B0_CTST, CS_RST_SET); + } +#endif /* !SK_PHY_LP_MODE_DEEP_SLEEP */ + pAC->GIni.GILevel = SK_INIT_DATA; } /* SkGeDeInit */ @@ -2089,8 +2866,8 @@ * 2: The port has to be stopped before it can be initialized again. */ int SkGeInitPort( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port to configure */ { SK_GEPORT *pPrt; @@ -2101,8 +2878,8 @@ SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E004, SKERR_HWI_E004MSG); return(1); } - - if (pPrt->PState == SK_PRT_INIT || pPrt->PState == SK_PRT_RUN) { + + if (pPrt->PState >= SK_PRT_INIT) { SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E005, SKERR_HWI_E005MSG); return(2); } @@ -2119,29 +2896,29 @@ SkGeXmitLED(pAC, IoC, MR_ADDR(Port, TX_LED_INI), SK_LED_ENA); SkGeXmitLED(pAC, IoC, MR_ADDR(Port, RX_LED_INI), SK_LED_ENA); /* The Link LED is initialized by RLMT or Diagnostics itself */ - + SkXmInitMac(pAC, IoC, Port); } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { SkGmInitMac(pAC, IoC, Port); } #endif /* YUKON */ - + /* do NOT initialize the Link Sync Counter */ SkGeInitMacFifo(pAC, IoC, Port); - + SkGeInitRamBufs(pAC, IoC, Port); - + if (pPrt->PXSQSize != 0) { /* enable Force Sync bit if synchronous queue available */ SK_OUT8(IoC, MR_ADDR(Port, TXA_CTRL), TXA_ENA_FSYNC); } - + SkGeInitBmu(pAC, IoC, Port); /* mark port as initialized */ @@ -2149,3 +2926,4 @@ return(0); } /* SkGeInitPort */ + --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/sky2le.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/sky2le.c @@ -0,0 +1,510 @@ +/***************************************************************************** + * + * Name: sky2le.c + * Project: Gigabit Ethernet Adapters, Common Modules + * Version: $Revision: 1.11 $ + * Date: $Date: 2004/11/22 14:21:58 $ + * Purpose: Functions for handling List Element Tables + * + *****************************************************************************/ + +/****************************************************************************** + * + * (C)Copyright 2002-2004 Marvell. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * The information in this file is provided "AS IS" without warranty. + * + ******************************************************************************/ + +/***************************************************************************** + * + * Description: + * + * This module contains the code necessary for handling List Elements. + * + * Supported Gigabit Ethernet Chipsets: + * Yukon-2 (PCI, PCI-X, PCI-Express) + * + * Include File Hierarchy: + * + * + *****************************************************************************/ +#include "h/skdrv1st.h" +#include "h/skdrv2nd.h" + +/* defines *******************************************************************/ +/* typedefs ******************************************************************/ +/* global variables **********************************************************/ +/* local variables ***********************************************************/ + +#if (defined(DEBUG) || ((!defined(LINT)) && (!defined(SK_SLIM)))) +static const char SysKonnectFileId[] = + "@(#) $Id: sky2le.c,v 1.11 2004/11/22 14:21:58 malthoff Exp $ (C) Marvell."; +#endif /* DEBUG || (!LINT && !SK_SLIM) */ + +/* function prototypes *******************************************************/ + +/***************************************************************************** + * + * SkGeY2InitSingleLETable() - initializes a list element table + * + * Description: + * This function will initialize the selected list element table. + * Should be called once during DriverInit. No InitLevel required. + * + * Arguments: + * pAC - pointer to the adapter context struct. + * pLETab - pointer to list element table structure + * NumLE - number of list elements in this table + * pVMem - virtual address of memory allocated for this LE table + * PMemLowAddr - physical address of memory to be used for the LE table + * PMemHighAddr + * + * Returns: + * nothing + */ +void SkGeY2InitSingleLETable( +SK_AC *pAC, /* pointer to adapter context */ +SK_LE_TABLE *pLETab, /* pointer to list element table to be initialized */ +unsigned int NumLE, /* number of list elements to be filled in tab */ +void *pVMem, /* virtual address of memory used for list elements */ +SK_U32 PMemLowAddr, /* physical addr of mem used for LE */ +SK_U32 PMemHighAddr) +{ + unsigned int i; + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("==> SkGeY2InitSingleLETable()\n")); + +#ifdef DEBUG + if (NumLE != 2) { /* not table for polling unit */ + if ((NumLE % MIN_LEN_OF_LE_TAB) != 0 || NumLE > MAX_LEN_OF_LE_TAB) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, + ("ERROR: Illegal number of list elements %d\n", NumLE)); + } + } +#endif /* DEBUG */ + + /* special case: unused list element table */ + if (NumLE == 0) { + PMemLowAddr = 0; + PMemHighAddr = 0; + pVMem = 0; + } + + /* + * in order to get the best possible performance the macros to access + * list elements use & instead of % + * this requires the length of LE tables to be a power of 2 + */ + + /* + * this code guarantees that we use the next power of 2 below the + * value specified for NumLe - this way some LEs in the table may + * not be used but the macros work correctly + * this code does not check for bad values below 128 because in such a + * case we cannot do anything here + */ + + if ((NumLE != 2) && (NumLE != 0)) { + /* no check for polling unit and unused sync Tx */ + i = MIN_LEN_OF_LE_TAB; + while (NumLE > i) { + i *= 2; + if (i > MAX_LEN_OF_LE_TAB) { + break; + } + } + if (NumLE != i) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, + ("ERROR: Illegal number of list elements %d adjusted to %d\n", + NumLE, (i / 2))); + NumLE = i / 2; + } + } + + /* set addresses */ + pLETab->pPhyLETABLow = PMemLowAddr; + pLETab->pPhyLETABHigh = PMemHighAddr; + pLETab->pLETab = pVMem; + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("contains %d LEs", NumLE)); + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + (" and starts at virt %08lx and phys %08lx:%08lx\n", + pVMem, PMemHighAddr, PMemLowAddr)); + + /* initialize indexes */ + pLETab->Done = 0; + pLETab->Put = 0; + pLETab->HwPut = 0; + /* initialize size */ + pLETab->Num = NumLE; + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("<== SkGeY2InitSingleLETable()\n")); +} /* SkGeY2InitSingleLETable */ + +/***************************************************************************** + * + * SkGeY2InitPrefetchUnit() - Initialize a Prefetch Unit + * + * Description: + * Calling this function requires an already configured list element + * table. The prefetch unit to be configured is specified in the parameter + * 'Queue'. The function is able to initialze the prefetch units of + * the following queues: Q_R1, Q_R2, Q_XS1, Q_XS2, Q_XA1, Q_XA2. + * The funcution should be called before SkGeInitPort(). + * + * Arguments: + * pAC - pointer to the adapter context struct. + * IoC - I/O context. + * Queue - I/O offset of queue e.g. Q_XA1. + * pLETab - pointer to list element table to be initialized + * + * Returns: N/A + */ +void SkGeY2InitPrefetchUnit( +SK_AC *pAC, /* pointer to adapter context */ +SK_IOC IoC, /* I/O context */ +unsigned int Queue, /* Queue offset for finding the right registers */ +SK_LE_TABLE *pLETab) /* pointer to list element table to be initialized */ +{ + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("==> SkGeY2InitPrefetchUnit()\n")); + +#ifdef DEBUG + if (Queue != Q_R1 && Queue != Q_R2 && Queue != Q_XS1 && + Queue != Q_XS2 && Queue != Q_XA1 && Queue != Q_XA2) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, + ("ERROR: Illegal queue identifier %x\n", Queue)); + } +#endif /* DEBUG */ + + /* disable the prefetch unit */ + SK_OUT32(IoC, Y2_PREF_Q_ADDR(Queue, PREF_UNIT_CTRL_REG), PREF_UNIT_RST_SET); + SK_OUT32(IoC, Y2_PREF_Q_ADDR(Queue, PREF_UNIT_CTRL_REG), PREF_UNIT_RST_CLR); + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("Base address: %08lx:%08lx\n", pLETab->pPhyLETABHigh, + pLETab->pPhyLETABLow)); + + /* Set the list base address high part*/ + SK_OUT32(IoC, Y2_PREF_Q_ADDR(Queue, PREF_UNIT_ADDR_HI_REG), + pLETab->pPhyLETABHigh); + + /* Set the list base address low part */ + SK_OUT32(IoC, Y2_PREF_Q_ADDR(Queue, PREF_UNIT_ADDR_LOW_REG), + pLETab->pPhyLETABLow); + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("Last index: %d\n", pLETab->Num-1)); + + /* Set the list last index */ + SK_OUT16(IoC, Y2_PREF_Q_ADDR(Queue, PREF_UNIT_LAST_IDX_REG), + (SK_U16)(pLETab->Num - 1)); + + /* turn on prefetch unit */ + SK_OUT32(IoC, Y2_PREF_Q_ADDR(Queue, PREF_UNIT_CTRL_REG), PREF_UNIT_OP_ON); + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("<== SkGeY2InitPrefetchUnit()\n")); +} /* SkGeY2InitPrefetchUnit */ + + +/***************************************************************************** + * + * SkGeY2InitStatBmu() - Initialize the Status BMU + * + * Description: + * Calling this function requires an already configured list element + * table. Ensure the status BMU is only initialized once during + * DriverInit - InitLevel2 required. + * + * Arguments: + * pAC - pointer to the adapter context struct. + * IoC - I/O context. + * pLETab - pointer to status LE table to be initialized + * + * Returns: N/A + */ +void SkGeY2InitStatBmu( +SK_AC *pAC, /* pointer to adapter context */ +SK_IOC IoC, /* I/O context */ +SK_LE_TABLE *pLETab) /* pointer to status LE table */ +{ + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("==> SkGeY2InitStatBmu()\n")); + + /* disable the prefetch unit */ + SK_OUT32(IoC, STAT_CTRL, SC_STAT_RST_SET); + SK_OUT32(IoC, STAT_CTRL, SC_STAT_RST_CLR); + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("Base address Low: %08lX\n", pLETab->pPhyLETABLow)); + + /* Set the list base address */ + SK_OUT32(IoC, STAT_LIST_ADDR_LO, pLETab->pPhyLETABLow); + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("Base address High: %08lX\n", pLETab->pPhyLETABHigh)); + + SK_OUT32(IoC, STAT_LIST_ADDR_HI, pLETab->pPhyLETABHigh); + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("Last index: %d\n", pLETab->Num - 1)); + + /* Set the list last index */ + SK_OUT16(IoC, STAT_LAST_IDX, (SK_U16)(pLETab->Num - 1)); + + if (HW_FEATURE(pAC, HWF_WA_DEV_43_418)) { + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("Set Tx index threshold\n")); + /* WA for dev. #4.3 */ + SK_OUT16(IoC, STAT_TX_IDX_TH, ST_TXTH_IDX_MASK); + + /* set Status-FIFO watermark */ + SK_OUT8(IoC, STAT_FIFO_WM, 0x21); /* WA for dev. #4.18 */ + + /* set Status-FIFO ISR watermark */ + SK_OUT8(IoC, STAT_FIFO_ISR_WM, 0x07); /* WA for dev. #4.18 */ + + /* WA for dev. #4.3 and #4.18 */ + /* set Status-FIFO Tx timer init value */ + SK_OUT32(IoC, STAT_TX_TIMER_INI, HW_MS_TO_TICKS(pAC, 10)); + } + else { + /* + * Further settings may be added if required... + * 1) Status-FIFO watermark (STAT_FIFO_WM, STAT_FIFO_ISR_WM) + * 2) Status-FIFO timer values (STAT_TX_TIMER_INI, + * STAT_LEV_TIMER_INI and STAT_ISR_TIMER_INI) + * but tests shows that the default values give the best results, + * therefore the defaults are used. + */ + + /* + * Theses settings should avoid the + * temporary hanging of the status BMU. + * May be not all required... still under investigation... + */ + SK_OUT16(IoC, STAT_TX_IDX_TH, 0x000a); + + /* set Status-FIFO watermark */ + SK_OUT8(IoC, STAT_FIFO_WM, 0x10); + + + /* set Status-FIFO ISR watermark */ + if (HW_FEATURE(pAC, HWF_WA_DEV_4109)) { + SK_OUT8(IoC, STAT_FIFO_ISR_WM, 0x10); + } + else { + SK_OUT8(IoC, STAT_FIFO_ISR_WM, 0x04); + } + + SK_OUT32(IoC, STAT_ISR_TIMER_INI, 0x0190); + } + + /* start Status-FIFO timer */ + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("Start Status FiFo timer\n")); + + /* enable the prefetch unit */ + /* operational bit not functional for Yukon-EC, but fixed in Yukon-2 */ + SK_OUT32(IoC, STAT_CTRL, SC_STAT_OP_ON); + + /* start Status-FIFO timer */ + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("Start Status FiFo timer\n")); + + SK_OUT8(IoC, STAT_TX_TIMER_CTRL, TIM_START); + SK_OUT8(IoC, STAT_LEV_TIMER_CTRL, TIM_START); + SK_OUT8(IoC, STAT_ISR_TIMER_CTRL, TIM_START); + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("<== SkGeY2InitStatBmu()\n")); +} /* SkGeY2InitStatBmu */ + +#ifdef USE_POLLING_UNIT +/***************************************************************************** + * + * SkGeY2InitPollUnit() - Initialize the Polling Unit + * + * Description: + * This function will write the data of one polling LE table into the + * adapter. + * + * Arguments: + * pAC - pointer to the adapter context struct. + * IoC - I/O context. + * pLETab - pointer to polling LE table to be initialized + * + * Returns: N/A + */ +void SkGeY2InitPollUnit( +SK_AC *pAC, /* pointer to adapter context */ +SK_IOC IoC, /* I/O context */ +SK_LE_TABLE *pLETab) /* pointer to polling LE table */ +{ + SK_HWLE *pLE; + int i; +#ifdef VCPU + VCPU_VARS(); +#endif /* VCPU */ + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("==> SkGeY2InitPollUnit()\n")); + +#ifdef VCPU + for (i = 0; i < SK_MAX_MACS; i++) { + GET_PO_LE(pLE, pLETab, i); + VCPU_START_AND_COPY_LE(); + /* initialize polling LE but leave indexes invalid */ + POLE_SET_OPC(pLE, OP_PUTIDX | HW_OWNER); + POLE_SET_LINK(pLE, i); + POLE_SET_RXIDX(pLE, 0); + POLE_SET_TXAIDX(pLE, 0); + POLE_SET_TXSIDX(pLE, 0); + VCPU_WRITE_LE(); + SK_DBG_DUMP_PO_LE(pLE); + } +#endif /* VCPU */ + + /* disable the polling unit */ + SK_OUT32(IoC, POLL_CTRL, PC_POLL_RST_SET); + SK_OUT32(IoC, POLL_CTRL, PC_POLL_RST_CLR); + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("Base address Low: %08lX\n", pLETab->pPhyLETABLow)); + + /* Set the list base address */ + SK_OUT32(IoC, POLL_LIST_ADDR_LO, pLETab->pPhyLETABLow); + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("Base address High: %08lX\n", pLETab->pPhyLETABHigh)); + + SK_OUT32(IoC, POLL_LIST_ADDR_HI, pLETab->pPhyLETABHigh); + + /* we don't need to write the last index - it is hardwired to 1 */ + + /* enable the prefetch unit */ + SK_OUT32(IoC, POLL_CTRL, PC_POLL_OP_ON); + + /* + * now we have to start the descriptor poll timer because it triggers + * the polling unit + */ + + /* + * still playing with the value (timer runs at 125 MHz) + * descriptor poll timer is enabled by GeInit + */ + SK_OUT32(IoC, B28_DPT_INI, + (SK_DPOLL_DEF_Y2 * (SK_U32)pAC->GIni.GIHstClkFact / 100)); + + SK_OUT8(IoC, B28_DPT_CTRL, TIM_START); + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("<== SkGeY2InitPollUnit()\n")); +} /* SkGeY2InitPollUnit */ +#endif /* USE_POLLING_UNIT */ + + +/****************************************************************************** + * + * SkGeY2SetPutIndex + * + * Description: + * This function is writing the Done index of a transmit + * list element table. + * + * Notes: + * Dev. Issue 4.2 + * + * Returns: N/A + */ +void SkGeY2SetPutIndex( +SK_AC *pAC, /* pointer to adapter context */ +SK_IOC IoC, /* pointer to the IO context */ +SK_U32 StartAddrPrefetchUnit, /* start address of the prefetch unit */ +SK_LE_TABLE *pLETab) /* list element table to work with */ +{ + unsigned int Put; + SK_U16 EndOfListIndex; + SK_U16 HwGetIndex; + SK_U16 HwPutIndex; + + /* set put index we would like to write */ + Put = GET_PUT_IDX(pLETab); + + /* + * in this case we wrap around + * new put is lower than last put given to hw + */ + if (Put < pLETab->HwPut) { + + /* set put index = last index of list */ + EndOfListIndex = (NUM_LE_IN_TABLE(pLETab)-1); + + /* read get index of hw prefetch unit */ + SK_IN16(IoC, (StartAddrPrefetchUnit + PREF_UNIT_GET_IDX_REG), + &HwGetIndex); + + /* read put index of hw prefetch unit */ + SK_IN16(IoC, (StartAddrPrefetchUnit + PREF_UNIT_PUT_IDX_REG), + &HwPutIndex); + + /* prefetch unit reached end of list */ + /* prefetch unit reached first list element */ + if (HwGetIndex == 0) { + /* restore watermark */ + SK_OUT8(IoC, StartAddrPrefetchUnit + PREF_UNIT_FIFO_WM_REG, 0xe0U); + /* write put index */ + SK_OUT16(IoC, StartAddrPrefetchUnit + PREF_UNIT_PUT_IDX_REG, + (SK_U16)Put); + + /* remember put index we wrote to hw */ + pLETab->HwPut = Put; + } + else if (HwGetIndex == EndOfListIndex) { + /* set watermark to one list element */ + SK_OUT8(IoC, StartAddrPrefetchUnit + PREF_UNIT_FIFO_WM_REG, 8); + /* set put index to first list element */ + SK_OUT16(IoC, StartAddrPrefetchUnit + PREF_UNIT_PUT_IDX_REG, 0); + } + /* prefetch unit did not reach end of list yet */ + /* and we did not write put index to end of list yet */ + else if ((HwPutIndex != EndOfListIndex) && + (HwGetIndex != EndOfListIndex)) { + /* write put index */ + SK_OUT16(IoC, StartAddrPrefetchUnit + PREF_UNIT_PUT_IDX_REG, + EndOfListIndex); + } + else { + /* do nothing */ + } + } + else { +#ifdef XXX /* leads in to problems in the Windows Driver */ + if (Put != pLETab->HwPut) { + /* write put index */ + SK_OUT16(IoC, StartAddrPrefetchUnit + PREF_UNIT_PUT_IDX_REG, + (SK_U16)Put); + /* update put index */ + UPDATE_HWPUT_IDX(pLETab); + } +#else + /* write put index */ + SK_OUT16(IoC, StartAddrPrefetchUnit + PREF_UNIT_PUT_IDX_REG, + (SK_U16)Put); + /* update put index */ + UPDATE_HWPUT_IDX(pLETab); +#endif + } +} /* SkGeY2SetPutIndex */ + --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skxmac2.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skxmac2.c @@ -2,8 +2,8 @@ * * Name: skxmac2.c * Project: Gigabit Ethernet Adapters, Common Modules - * Version: $Revision: 1.102 $ - * Date: $Date: 2003/10/02 16:53:58 $ + * Version: $Revision: 2.35 $ + * Date: $Date: 2005/05/24 08:35:04 $ * Purpose: Contains functions to initialize the MACs and PHYs * ******************************************************************************/ @@ -11,13 +11,12 @@ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2005 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * * The information in this file is provided "AS IS" without warranty. * ******************************************************************************/ @@ -37,7 +36,7 @@ #if (defined(DEBUG) || ((!defined(LINT)) && (!defined(SK_SLIM)))) static const char SysKonnectFileId[] = - "@(#) $Id: skxmac2.c,v 1.102 2003/10/02 16:53:58 rschmidt Exp $ (C) Marvell."; + "@(#) $Id: skxmac2.c,v 2.35 2005/05/24 08:35:04 rschmidt Exp $ (C) Marvell."; #endif #ifdef GENESIS @@ -83,7 +82,7 @@ * Returns: * nothing */ -void SkXmPhyRead( +int SkXmPhyRead( SK_AC *pAC, /* Adapter Context */ SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ @@ -94,13 +93,13 @@ SK_GEPORT *pPrt; pPrt = &pAC->GIni.GP[Port]; - + /* write the PHY register's address */ XM_OUT16(IoC, Port, XM_PHY_ADDR, PhyReg | pPrt->PhyAddr); - + /* get the PHY register's value */ XM_IN16(IoC, Port, XM_PHY_DATA, pVal); - + if (pPrt->PhyType != SK_PHY_XMAC) { do { XM_IN16(IoC, Port, XM_MMU_CMD, &Mmu); @@ -110,6 +109,8 @@ /* get the PHY register's value */ XM_IN16(IoC, Port, XM_PHY_DATA, pVal); } + + return(0); } /* SkXmPhyRead */ @@ -122,7 +123,7 @@ * Returns: * nothing */ -void SkXmPhyWrite( +int SkXmPhyWrite( SK_AC *pAC, /* Adapter Context */ SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ @@ -133,26 +134,28 @@ SK_GEPORT *pPrt; pPrt = &pAC->GIni.GP[Port]; - + if (pPrt->PhyType != SK_PHY_XMAC) { do { XM_IN16(IoC, Port, XM_MMU_CMD, &Mmu); /* wait until 'Busy' is cleared */ } while ((Mmu & XM_MMU_PHY_BUSY) != 0); } - + /* write the PHY register's address */ XM_OUT16(IoC, Port, XM_PHY_ADDR, PhyReg | pPrt->PhyAddr); - + /* write the PHY register's value */ XM_OUT16(IoC, Port, XM_PHY_DATA, Val); - + if (pPrt->PhyType != SK_PHY_XMAC) { do { XM_IN16(IoC, Port, XM_MMU_CMD, &Mmu); /* wait until 'Busy' is cleared */ } while ((Mmu & XM_MMU_PHY_BUSY) != 0); } + + return(0); } /* SkXmPhyWrite */ #endif /* GENESIS */ @@ -167,7 +170,7 @@ * Returns: * nothing */ -void SkGmPhyRead( +int SkGmPhyRead( SK_AC *pAC, /* Adapter Context */ SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ @@ -176,52 +179,72 @@ { SK_U16 Ctrl; SK_GEPORT *pPrt; -#ifdef VCPU - u_long SimCyle; - u_long SimLowTime; - - VCPUgetTime(&SimCyle, &SimLowTime); - VCPUprintf(0, "SkGmPhyRead(%u), SimCyle=%u, SimLowTime=%u\n", - PhyReg, SimCyle, SimLowTime); -#endif /* VCPU */ - + SK_U32 StartTime; + SK_U32 CurrTime; + SK_U32 Delta; + pPrt = &pAC->GIni.GP[Port]; - + /* set PHY-Register offset and 'Read' OpCode (= 1) */ *pVal = (SK_U16)(GM_SMI_CT_PHY_AD(pPrt->PhyAddr) | GM_SMI_CT_REG_AD(PhyReg) | GM_SMI_CT_OP_RD); GM_OUT16(IoC, Port, GM_SMI_CTRL, *pVal); - GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl); - +#ifdef DEBUG /* additional check for MDC/MDIO activity */ - if ((Ctrl & GM_SMI_CT_BUSY) == 0) { + GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl); + + if ((Ctrl & GM_SMI_CT_OP_RD) == 0) { + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, + ("PHY read impossible on Port %d (Ctrl=0x%04x)\n", Port, Ctrl)); + *pVal = 0; - return; + return(1); } +#endif /* DEBUG */ *pVal |= GM_SMI_CT_BUSY; - - do { + + SK_IN32(IoC, GMAC_TI_ST_VAL, &StartTime); + + do { /* wait until 'Busy' is cleared and 'ReadValid' is set */ #ifdef VCPU VCPUwaitTime(1000); #endif /* VCPU */ + SK_IN32(IoC, GMAC_TI_ST_VAL, &CurrTime); + + if (CurrTime >= StartTime) { + Delta = CurrTime - StartTime; + } + else { + Delta = CurrTime + ~StartTime + 1; + } + + if (Delta > SK_PHY_ACC_TO) { + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, + ("PHY read timeout on Port %d (Ctrl=0x%04x)\n", Port, Ctrl)); + return(1); + } + GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl); - /* wait until 'ReadValid' is set */ - } while (Ctrl == *pVal); - - /* get the PHY register's value */ + /* Error on reading SMI Control Register */ + if (Ctrl == 0xffff) { + return(1); + } + + } while ((Ctrl ^ *pVal) != (GM_SMI_CT_RD_VAL | GM_SMI_CT_BUSY)); + GM_IN16(IoC, Port, GM_SMI_DATA, pVal); -#ifdef VCPU - VCPUgetTime(&SimCyle, &SimLowTime); - VCPUprintf(0, "VCPUgetTime(), SimCyle=%u, SimLowTime=%u\n", - SimCyle, SimLowTime); -#endif /* VCPU */ + /* dummy read after GM_IN16() */ + SK_IN32(IoC, GMAC_TI_ST_VAL, &CurrTime); + return(0); } /* SkGmPhyRead */ @@ -234,7 +257,7 @@ * Returns: * nothing */ -void SkGmPhyWrite( +int SkGmPhyWrite( SK_AC *pAC, /* Adapter Context */ SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ @@ -243,54 +266,74 @@ { SK_U16 Ctrl; SK_GEPORT *pPrt; -#ifdef VCPU - SK_U32 DWord; - u_long SimCyle; - u_long SimLowTime; - - VCPUgetTime(&SimCyle, &SimLowTime); - VCPUprintf(0, "SkGmPhyWrite(Reg=%u, Val=0x%04x), SimCyle=%u, SimLowTime=%u\n", - PhyReg, Val, SimCyle, SimLowTime); -#endif /* VCPU */ - + SK_U32 StartTime; + SK_U32 CurrTime; + SK_U32 Delta; + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("SkGmPhyWrite Port:%d, Reg=%d, Val=0x%04X\n", + Port, PhyReg, Val)); + pPrt = &pAC->GIni.GP[Port]; - + /* write the PHY register's value */ GM_OUT16(IoC, Port, GM_SMI_DATA, Val); - - /* set PHY-Register offset and 'Write' OpCode (= 0) */ - Val = GM_SMI_CT_PHY_AD(pPrt->PhyAddr) | GM_SMI_CT_REG_AD(PhyReg); - GM_OUT16(IoC, Port, GM_SMI_CTRL, Val); - - GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl); - +#ifdef DEBUG /* additional check for MDC/MDIO activity */ - if ((Ctrl & GM_SMI_CT_BUSY) == 0) { - return; + GM_IN16(IoC, Port, GM_SMI_DATA, &Ctrl); + + if (Ctrl != Val) { + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, + ("PHY write impossible on Port %d (Val=0x%04x)\n", Port, Ctrl)); + + return(1); } - - Val |= GM_SMI_CT_BUSY; +#endif /* DEBUG */ - do { -#ifdef VCPU - /* read Timer value */ - SK_IN32(IoC, B2_TI_VAL, &DWord); + /* set PHY-Register offset and 'Write' OpCode (= 0) */ + Ctrl = (SK_U16)(GM_SMI_CT_PHY_AD(pPrt->PhyAddr) | + GM_SMI_CT_REG_AD(PhyReg)); + GM_OUT16(IoC, Port, GM_SMI_CTRL, Ctrl); + + SK_IN32(IoC, GMAC_TI_ST_VAL, &StartTime); + + do { /* wait until 'Busy' is cleared */ +#ifdef VCPU VCPUwaitTime(1000); #endif /* VCPU */ + SK_IN32(IoC, GMAC_TI_ST_VAL, &CurrTime); + + if (CurrTime >= StartTime) { + Delta = CurrTime - StartTime; + } + else { + Delta = CurrTime + ~StartTime + 1; + } + + if (Delta > SK_PHY_ACC_TO) { + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, + ("PHY write timeout on Port %d (Ctrl=0x%04x)\n", Port, Ctrl)); + return(1); + } + GM_IN16(IoC, Port, GM_SMI_CTRL, &Ctrl); - /* wait until 'Busy' is cleared */ - } while (Ctrl == Val); + /* Error on reading SMI Control Register */ + if (Ctrl == 0xffff) { + return(1); + } -#ifdef VCPU - VCPUgetTime(&SimCyle, &SimLowTime); - VCPUprintf(0, "VCPUgetTime(), SimCyle=%u, SimLowTime=%u\n", - SimCyle, SimLowTime); -#endif /* VCPU */ + } while ((Ctrl & GM_SMI_CT_BUSY) != 0); + /* dummy read after GM_IN16() */ + SK_IN32(IoC, GMAC_TI_ST_VAL, &CurrTime); + + return(0); } /* SkGmPhyWrite */ #endif /* YUKON */ @@ -312,16 +355,8 @@ int PhyReg, /* Register Address (Offset) */ SK_U16 *pVal) /* Pointer to Value */ { - void (*r_func)(SK_AC *pAC, SK_IOC IoC, int Port, int Reg, SK_U16 *pVal); - if (pAC->GIni.GIGenesis) { - r_func = SkXmPhyRead; - } - else { - r_func = SkGmPhyRead; - } - - r_func(pAC, IoC, Port, PhyReg, pVal); + pAC->GIni.GIFunc.pFnMacPhyRead(pAC, IoC, Port, PhyReg, pVal); } /* SkGePhyRead */ @@ -341,16 +376,8 @@ int PhyReg, /* Register Address (Offset) */ SK_U16 Val) /* Value */ { - void (*w_func)(SK_AC *pAC, SK_IOC IoC, int Port, int Reg, SK_U16 Val); - if (pAC->GIni.GIGenesis) { - w_func = SkXmPhyWrite; - } - else { - w_func = SkGmPhyWrite; - } - - w_func(pAC, IoC, Port, PhyReg, Val); + pAC->GIni.GIFunc.pFnMacPhyWrite(pAC, IoC, Port, PhyReg, Val); } /* SkGePhyWrite */ #endif /* SK_DIAG */ @@ -360,15 +387,15 @@ * SkMacPromiscMode() - Enable / Disable Promiscuous Mode * * Description: - * enables / disables promiscuous mode by setting Mode Register (XMAC) or - * Receive Control Register (GMAC) dep. on board type + * enables / disables promiscuous mode by setting Mode Register (XMAC) or + * Receive Control Register (GMAC) dep. on board type * * Returns: * nothing */ void SkMacPromiscMode( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_BOOL Enable) /* Enable / Disable */ { @@ -377,11 +404,11 @@ #endif #ifdef GENESIS SK_U32 MdReg; -#endif +#endif #ifdef GENESIS if (pAC->GIni.GIGenesis) { - + XM_IN32(IoC, Port, XM_MODE, &MdReg); /* enable or disable promiscuous mode */ if (Enable) { @@ -394,12 +421,12 @@ XM_OUT32(IoC, Port, XM_MODE, MdReg); } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { - + GM_IN16(IoC, Port, GM_RX_CTRL, &RcReg); - + /* enable or disable unicast and multicast filtering */ if (Enable) { RcReg &= ~(GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA); @@ -420,28 +447,28 @@ * SkMacHashing() - Enable / Disable Hashing * * Description: - * enables / disables hashing by setting Mode Register (XMAC) or - * Receive Control Register (GMAC) dep. on board type + * enables / disables hashing by setting Mode Register (XMAC) or + * Receive Control Register (GMAC) dep. on board type * * Returns: * nothing */ void SkMacHashing( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_BOOL Enable) /* Enable / Disable */ { #ifdef YUKON SK_U16 RcReg; -#endif +#endif #ifdef GENESIS SK_U32 MdReg; #endif #ifdef GENESIS if (pAC->GIni.GIGenesis) { - + XM_IN32(IoC, Port, XM_MODE, &MdReg); /* enable or disable hashing */ if (Enable) { @@ -454,12 +481,12 @@ XM_OUT32(IoC, Port, XM_MODE, MdReg); } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { - + GM_IN16(IoC, Port, GM_RX_CTRL, &RcReg); - + /* enable or disable multicast filtering */ if (Enable) { RcReg |= GM_RXCR_MCF_ENA; @@ -487,8 +514,8 @@ * - don't set XMR_FS_ERR in status SK_LENERR_OK_ON/OFF * for inrange length error frames * - don't set XMR_FS_ERR in status SK_BIG_PK_OK_ON/OFF - * for frames > 1514 bytes - * - enable Rx of own packets SK_SELF_RX_ON/OFF + * for frames > 1514 bytes + * - enable Rx of own packets SK_SELF_RX_ON/OFF * * for incoming packets may be enabled/disabled by this function. * Additional modes may be added later. @@ -499,11 +526,11 @@ * nothing */ static void SkXmSetRxCmd( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ int Mode) /* Mode is SK_STRIP_FCS_ON/OFF, SK_STRIP_PAD_ON/OFF, - SK_LENERR_OK_ON/OFF, or SK_BIG_PK_OK_ON/OFF */ + SK_LENERR_OK_ON/OFF, or SK_BIG_PK_OK_ON/OFF */ { SK_U16 OldRxCmd; SK_U16 RxCmd; @@ -511,7 +538,7 @@ XM_IN16(IoC, Port, XM_RX_CMD, &OldRxCmd); RxCmd = OldRxCmd; - + switch (Mode & (SK_STRIP_FCS_ON | SK_STRIP_FCS_OFF)) { case SK_STRIP_FCS_ON: RxCmd |= XM_RX_STRIP_FCS; @@ -572,8 +599,8 @@ * The features * - FCS (CRC) stripping, SK_STRIP_FCS_ON/OFF * - don't set GMR_FS_LONG_ERR SK_BIG_PK_OK_ON/OFF - * for frames > 1514 bytes - * - enable Rx of own packets SK_SELF_RX_ON/OFF + * for frames > 1514 bytes + * - enable Rx of own packets SK_SELF_RX_ON/OFF * * for incoming packets may be enabled/disabled by this function. * Additional modes may be added later. @@ -584,20 +611,17 @@ * nothing */ static void SkGmSetRxCmd( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ int Mode) /* Mode is SK_STRIP_FCS_ON/OFF, SK_STRIP_PAD_ON/OFF, - SK_LENERR_OK_ON/OFF, or SK_BIG_PK_OK_ON/OFF */ + SK_LENERR_OK_ON/OFF, or SK_BIG_PK_OK_ON/OFF */ { - SK_U16 OldRxCmd; SK_U16 RxCmd; if ((Mode & (SK_STRIP_FCS_ON | SK_STRIP_FCS_OFF)) != 0) { - - GM_IN16(IoC, Port, GM_RX_CTRL, &OldRxCmd); - RxCmd = OldRxCmd; + GM_IN16(IoC, Port, GM_RX_CTRL, &RxCmd); if ((Mode & SK_STRIP_FCS_ON) != 0) { RxCmd |= GM_RXCR_CRC_DIS; @@ -605,17 +629,13 @@ else { RxCmd &= ~GM_RXCR_CRC_DIS; } - /* Write the new mode to the Rx control register if required */ - if (OldRxCmd != RxCmd) { - GM_OUT16(IoC, Port, GM_RX_CTRL, RxCmd); - } + /* Write the new mode to the Rx Control register */ + GM_OUT16(IoC, Port, GM_RX_CTRL, RxCmd); } if ((Mode & (SK_BIG_PK_OK_ON | SK_BIG_PK_OK_OFF)) != 0) { - - GM_IN16(IoC, Port, GM_SERIAL_MODE, &OldRxCmd); - RxCmd = OldRxCmd; + GM_IN16(IoC, Port, GM_SERIAL_MODE, &RxCmd); if ((Mode & SK_BIG_PK_OK_ON) != 0) { RxCmd |= GM_SMOD_JUMBO_ENA; @@ -623,10 +643,8 @@ else { RxCmd &= ~GM_SMOD_JUMBO_ENA; } - /* Write the new mode to the Rx control register if required */ - if (OldRxCmd != RxCmd) { - GM_OUT16(IoC, Port, GM_SERIAL_MODE, RxCmd); - } + /* Write the new mode to the Serial Mode register */ + GM_OUT16(IoC, Port, GM_SERIAL_MODE, RxCmd); } } /* SkGmSetRxCmd */ @@ -641,17 +659,17 @@ * nothing */ void SkMacSetRxCmd( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ int Mode) /* Rx Mode */ { if (pAC->GIni.GIGenesis) { - + SkXmSetRxCmd(pAC, IoC, Port, Mode); } else { - + SkGmSetRxCmd(pAC, IoC, Port, Mode); } @@ -668,15 +686,15 @@ * nothing */ void SkMacCrcGener( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_BOOL Enable) /* Enable / Disable */ { SK_U16 Word; if (pAC->GIni.GIGenesis) { - + XM_IN16(IoC, Port, XM_TX_CMD, &Word); if (Enable) { @@ -689,9 +707,9 @@ XM_OUT16(IoC, Port, XM_TX_CMD, Word); } else { - + GM_IN16(IoC, Port, GM_TX_CTRL, &Word); - + if (Enable) { Word &= ~GM_TXCR_CRC_DIS; } @@ -721,14 +739,14 @@ * nothing */ void SkXmClrExactAddr( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ int StartNum, /* Begin with this Address Register Index (0..15) */ int StopNum) /* Stop after finished with this Register Idx (0..15) */ { int i; - SK_U16 ZeroAddr[3] = {0x0000, 0x0000, 0x0000}; + SK_U16 ZeroAddr[3] = {0, 0, 0}; if ((unsigned)StartNum > 15 || (unsigned)StopNum > 15 || StartNum > StopNum) { @@ -738,7 +756,7 @@ } for (i = StartNum; i <= StopNum; i++) { - XM_OUTADDR(IoC, Port, XM_EXM(i), &ZeroAddr[0]); + XM_OUTADDR(IoC, Port, XM_EXM(i), ZeroAddr); } } /* SkXmClrExactAddr */ #endif /* GENESIS */ @@ -755,21 +773,21 @@ * nothing */ void SkMacFlushTxFifo( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { #ifdef GENESIS SK_U32 MdReg; if (pAC->GIni.GIGenesis) { - + XM_IN32(IoC, Port, XM_MODE, &MdReg); XM_OUT32(IoC, Port, XM_MODE, MdReg | XM_MD_FTF); } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { /* no way to flush the FIFO we have to issue a reset */ @@ -791,8 +809,8 @@ * nothing */ void SkMacFlushRxFifo( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { #ifdef GENESIS @@ -805,7 +823,7 @@ XM_OUT32(IoC, Port, XM_MODE, MdReg | XM_MD_FRF); } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { /* no way to flush the FIFO we have to issue a reset */ @@ -853,23 +871,23 @@ * nothing */ static void SkXmSoftRst( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { - SK_U16 ZeroAddr[4] = {0x0000, 0x0000, 0x0000, 0x0000}; - + SK_U16 ZeroAddr[4] = {0, 0, 0, 0}; + /* reset the statistics module */ XM_OUT32(IoC, Port, XM_GP_PORT, XM_GP_RES_STAT); /* disable all XMAC IRQs */ XM_OUT16(IoC, Port, XM_IMSK, 0xffff); - + XM_OUT32(IoC, Port, XM_MODE, 0); /* clear Mode Reg */ - + XM_OUT16(IoC, Port, XM_TX_CMD, 0); /* reset TX CMD Reg */ XM_OUT16(IoC, Port, XM_RX_CMD, 0); /* reset RX CMD Reg */ - + /* disable all PHY IRQs */ switch (pAC->GIni.GP[Port].PhyType) { case SK_PHY_BCOM: @@ -887,13 +905,13 @@ } /* clear the Hash Register */ - XM_OUTHASH(IoC, Port, XM_HSM, &ZeroAddr); + XM_OUTHASH(IoC, Port, XM_HSM, ZeroAddr); /* clear the Exact Match Address registers */ SkXmClrExactAddr(pAC, IoC, Port, 0, 15); - + /* clear the Source Check Address registers */ - XM_OUTHASH(IoC, Port, XM_SRC_CHK, &ZeroAddr); + XM_OUTHASH(IoC, Port, XM_SRC_CHK, ZeroAddr); } /* SkXmSoftRst */ @@ -916,8 +934,8 @@ * nothing */ static void SkXmHardRst( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_U32 Reg; @@ -940,19 +958,19 @@ } SK_OUT16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), MFF_SET_MAC_RST); - + SK_IN16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), &Word); - + } while ((Word & MFF_SET_MAC_RST) == 0); } /* For external PHYs there must be special handling */ if (pAC->GIni.GP[Port].PhyType != SK_PHY_XMAC) { - + SK_IN32(IoC, B2_GP_IO, &Reg); - + if (Port == 0) { - Reg |= GP_DIR_0; /* set to output */ + Reg |= GP_DIR_0; /* set to output */ Reg &= ~GP_IO_0; /* set PHY reset (active low) */ } else { @@ -978,12 +996,12 @@ * nothing */ static void SkXmClearRst( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_U32 DWord; - + /* clear HW reset */ SK_OUT16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), MFF_CLR_MAC_RST); @@ -1000,7 +1018,7 @@ /* Clear PHY reset */ SK_OUT32(IoC, B2_GP_IO, DWord); - /* Enable GMII interface */ + /* enable GMII interface */ XM_OUT16(IoC, Port, XM_HW_CFG, XM_HW_GMII_MD); } } /* SkXmClearRst */ @@ -1020,8 +1038,8 @@ * nothing */ static void SkGmSoftRst( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_U16 EmptyHash[4] = {0x0000, 0x0000, 0x0000, 0x0000}; @@ -1030,19 +1048,18 @@ /* reset the statistics module */ /* disable all GMAC IRQs */ - SK_OUT8(IoC, GMAC_IRQ_MSK, 0); - + SK_OUT8(IoC, MR_ADDR(Port, GMAC_IRQ_MSK), 0); + /* disable all PHY IRQs */ SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_INT_MASK, 0); - + /* clear the Hash Register */ GM_OUTHASH(IoC, Port, GM_MC_ADDR_H1, EmptyHash); - /* Enable Unicast and Multicast filtering */ + /* enable Unicast and Multicast filtering */ GM_IN16(IoC, Port, GM_RX_CTRL, &RxCtrl); - - GM_OUT16(IoC, Port, GM_RX_CTRL, - (SK_U16)(RxCtrl | GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA)); + + GM_OUT16(IoC, Port, GM_RX_CTRL, RxCtrl | GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA); } /* SkGmSoftRst */ @@ -1057,16 +1074,16 @@ * nothing */ static void SkGmHardRst( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_U32 DWord; - + /* WA code for COMA mode */ if (pAC->GIni.GIYukonLite && pAC->GIni.GIChipRev >= CHIP_REV_YU_LITE_A3) { - + SK_IN32(IoC, B2_GP_IO, &DWord); DWord |= (GP_DIR_9 | GP_IO_9); @@ -1076,10 +1093,10 @@ } /* set GPHY Control reset */ - SK_OUT32(IoC, MR_ADDR(Port, GPHY_CTRL), GPC_RST_SET); + SK_OUT8(IoC, MR_ADDR(Port, GPHY_CTRL), (SK_U8)GPC_RST_SET); /* set GMAC Control reset */ - SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_RST_SET); + SK_OUT8(IoC, MR_ADDR(Port, GMAC_CTRL), (SK_U8)GMC_RST_SET); } /* SkGmHardRst */ @@ -1094,24 +1111,27 @@ * nothing */ static void SkGmClearRst( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_U32 DWord; - + SK_U16 PhyId0; + SK_U16 PhyId1; + SK_U16 Word; + #ifdef XXX - /* clear GMAC Control reset */ - SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_RST_CLR); + /* clear GMAC Control reset */ + SK_OUT8(IoC, MR_ADDR(Port, GMAC_CTRL), (SK_U8)GMC_RST_CLR); - /* set GMAC Control reset */ - SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_RST_SET); + /* set GMAC Control reset */ + SK_OUT8(IoC, MR_ADDR(Port, GMAC_CTRL), (SK_U8)GMC_RST_SET); #endif /* XXX */ /* WA code for COMA mode */ if (pAC->GIni.GIYukonLite && pAC->GIni.GIChipRev >= CHIP_REV_YU_LITE_A3) { - + SK_IN32(IoC, B2_GP_IO, &DWord); DWord |= GP_DIR_9; /* set to output */ @@ -1121,30 +1141,74 @@ SK_OUT32(IoC, B2_GP_IO, DWord); } - /* set HWCFG_MODE */ - DWord = GPC_INT_POL_HI | GPC_DIS_FC | GPC_DIS_SLEEP | - GPC_ENA_XC | GPC_ANEG_ADV_ALL_M | GPC_ENA_PAUSE | - (pAC->GIni.GICopperType ? GPC_HWCFG_GMII_COP : - GPC_HWCFG_GMII_FIB); +#ifdef VCPU + /* set MAC Reset before PHY reset is set */ + SK_OUT8(IoC, MR_ADDR(Port, GMAC_CTRL), (SK_U8)GMC_RST_SET); +#endif /* VCPU */ + + if (CHIP_ID_YUKON_2(pAC)) { + /* set GPHY Control reset */ + SK_OUT8(IoC, MR_ADDR(Port, GPHY_CTRL), (SK_U8)GPC_RST_SET); - /* set GPHY Control reset */ - SK_OUT32(IoC, MR_ADDR(Port, GPHY_CTRL), DWord | GPC_RST_SET); + /* release GPHY Control reset */ + SK_OUT8(IoC, MR_ADDR(Port, GPHY_CTRL), (SK_U8)GPC_RST_CLR); + } + else { + /* set HWCFG_MODE */ + DWord = GPC_INT_POL | GPC_DIS_FC | GPC_DIS_SLEEP | + GPC_ENA_XC | GPC_ANEG_ADV_ALL_M | GPC_ENA_PAUSE | + (pAC->GIni.GICopperType ? GPC_HWCFG_GMII_COP : + GPC_HWCFG_GMII_FIB); - /* release GPHY Control reset */ - SK_OUT32(IoC, MR_ADDR(Port, GPHY_CTRL), DWord | GPC_RST_CLR); + /* set GPHY Control reset */ + SK_OUT32(IoC, MR_ADDR(Port, GPHY_CTRL), DWord | GPC_RST_SET); + + /* release GPHY Control reset */ + SK_OUT32(IoC, MR_ADDR(Port, GPHY_CTRL), DWord | GPC_RST_CLR); + } #ifdef VCPU + /* wait for internal initialization of GPHY */ + VCPUprintf(0, "Waiting until PHY %d is ready to initialize\n", Port); + VCpuWait(10000); + + /* release GMAC reset */ + SK_OUT8(IoC, MR_ADDR(Port, GMAC_CTRL), (SK_U8)GMC_RST_CLR); + + /* wait for stable GMAC clock */ VCpuWait(9000); #endif /* VCPU */ /* clear GMAC Control reset */ - SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_PAUSE_ON | GMC_RST_CLR); + SK_OUT8(IoC, MR_ADDR(Port, GMAC_CTRL), (SK_U8)GMC_RST_CLR); + + if (HW_FEATURE(pAC, HWF_WA_DEV_472) && Port == MAC_2) { + + /* clear GMAC 1 Control reset */ + SK_OUT8(IoC, MR_ADDR(MAC_1, GMAC_CTRL), (SK_U8)GMC_RST_CLR); + + do { + /* set GMAC 2 Control reset */ + SK_OUT8(IoC, MR_ADDR(MAC_2, GMAC_CTRL), (SK_U8)GMC_RST_SET); + + /* clear GMAC 2 Control reset */ + SK_OUT8(IoC, MR_ADDR(MAC_2, GMAC_CTRL), (SK_U8)GMC_RST_CLR); + + SkGmPhyRead(pAC, IoC, MAC_2, PHY_MARV_ID0, &PhyId0); + + SkGmPhyRead(pAC, IoC, MAC_2, PHY_MARV_ID1, &PhyId1); + + SkGmPhyRead(pAC, IoC, MAC_2, PHY_MARV_INT_MASK, &Word); + + } while (Word != 0 || PhyId0 != PHY_MARV_ID0_VAL || + PhyId1 != PHY_MARV_ID1_Y2); + } #ifdef VCPU VCpuWait(2000); - + SK_IN32(IoC, MR_ADDR(Port, GPHY_CTRL), &DWord); - + SK_IN32(IoC, B0_ISRC, &DWord); #endif /* VCPU */ @@ -1162,37 +1226,33 @@ * nothing */ void SkMacSoftRst( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { - SK_GEPORT *pPrt; - - pPrt = &pAC->GIni.GP[Port]; - /* disable receiver and transmitter */ SkMacRxTxDisable(pAC, IoC, Port); #ifdef GENESIS if (pAC->GIni.GIGenesis) { - + SkXmSoftRst(pAC, IoC, Port); } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { - + SkGmSoftRst(pAC, IoC, Port); } #endif /* YUKON */ /* flush the MAC's Rx and Tx FIFOs */ SkMacFlushTxFifo(pAC, IoC, Port); - + SkMacFlushRxFifo(pAC, IoC, Port); - pPrt->PState = SK_PRT_STOP; + pAC->GIni.GP[Port].PState = SK_PRT_STOP; } /* SkMacSoftRst */ @@ -1207,25 +1267,27 @@ * nothing */ void SkMacHardRst( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { - + #ifdef GENESIS if (pAC->GIni.GIGenesis) { - + SkXmHardRst(pAC, IoC, Port); } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { - + SkGmHardRst(pAC, IoC, Port); } #endif /* YUKON */ + pAC->GIni.GP[Port].PHWLinkUp = SK_FALSE; + pAC->GIni.GP[Port].PState = SK_PRT_RESET; } /* SkMacHardRst */ @@ -1241,21 +1303,21 @@ * nothing */ void SkMacClearRst( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { - + #ifdef GENESIS if (pAC->GIni.GIGenesis) { - + SkXmClearRst(pAC, IoC, Port); } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { - + SkGmClearRst(pAC, IoC, Port); } #endif /* YUKON */ @@ -1279,8 +1341,8 @@ * nothing */ void SkXmInitMac( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; @@ -1290,13 +1352,13 @@ pPrt = &pAC->GIni.GP[Port]; if (pPrt->PState == SK_PRT_STOP) { - /* Port State: SK_PRT_STOP */ /* Verify that the reset bit is cleared */ SK_IN16(IoC, MR_ADDR(Port, TX_MFF_CTRL1), &SWord); if ((SWord & MFF_SET_MAC_RST) != 0) { /* PState does not match HW state */ - SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E006, SKERR_HWI_E006MSG); + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, + ("SkXmInitMac: PState does not match HW state")); /* Correct it */ pPrt->PState = SK_PRT_RESET; } @@ -1315,7 +1377,7 @@ * Must be done AFTER first access to BCOM chip. */ XM_IN16(IoC, Port, XM_MMU_CMD, &SWord); - + XM_OUT16(IoC, Port, XM_MMU_CMD, SWord | XM_MMU_NO_PRE); if (pPrt->PhyId1 == PHY_BCOM_ID1_C0) { @@ -1348,7 +1410,7 @@ * Disable Power Management after reset. */ SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &SWord); - + SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, (SK_U16)(SWord | PHY_B_AC_DIS_PM)); @@ -1357,7 +1419,7 @@ /* Dummy read the Interrupt source register */ XM_IN16(IoC, Port, XM_ISRC, &SWord); - + /* * The auto-negotiation process starts immediately after * clearing the reset. The auto-negotiation process should be @@ -1383,7 +1445,7 @@ * independent. Remember this when changing. */ SK_IN16(IoC, (B2_MAC_2 + Port * 8 + i * 2), &SWord); - + XM_OUT16(IoC, Port, (XM_SA + i * 2), SWord); } @@ -1401,7 +1463,7 @@ SWord = SK_XM_THR_SL; /* for single port */ if (pAC->GIni.GIMacsFound > 1) { - switch (pAC->GIni.GIPortUsage) { + switch (pPrt->PPortUsage) { case SK_RED_LINK: SWord = SK_XM_THR_REDL; /* redundant link */ break; @@ -1424,7 +1486,7 @@ /* setup register defaults for the Rx Command Register */ SWord = XM_RX_STRIP_FCS | XM_RX_LENERR_OK; - if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK) { + if (pPrt->PPortUsage == SK_JUMBO_LINK) { SWord |= XM_RX_BIG_PK_OK; } @@ -1436,7 +1498,7 @@ */ SWord |= XM_RX_DIS_CEXT; } - + XM_OUT16(IoC, Port, XM_RX_CMD, SWord); /* @@ -1493,8 +1555,8 @@ * nothing */ void SkGmInitMac( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; @@ -1505,24 +1567,29 @@ pPrt = &pAC->GIni.GP[Port]; if (pPrt->PState == SK_PRT_STOP) { - /* Port State: SK_PRT_STOP */ /* Verify that the reset bit is cleared */ SK_IN32(IoC, MR_ADDR(Port, GMAC_CTRL), &DWord); - + if ((DWord & GMC_RST_SET) != 0) { /* PState does not match HW state */ - SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E006, SKERR_HWI_E006MSG); + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("SkGmInitMac: PState does not match HW state")); /* Correct it */ pPrt->PState = SK_PRT_RESET; } + else { + /* enable all PHY interrupts */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_INT_MASK, + (SK_U16)PHY_M_DEF_MSK); + } } if (pPrt->PState == SK_PRT_RESET) { - + SkGmHardRst(pAC, IoC, Port); SkGmClearRst(pAC, IoC, Port); - + /* Auto-negotiation ? */ if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) { /* Auto-negotiation disabled */ @@ -1532,10 +1599,10 @@ /* disable auto-update for speed, duplex and flow-control */ SWord |= GM_GPCR_AU_ALL_DIS; - + /* setup General Purpose Control Register */ GM_OUT16(IoC, Port, GM_GP_CTRL, SWord); - + SWord = GM_GPCR_AU_ALL_DIS; } else { @@ -1546,7 +1613,10 @@ switch (pPrt->PLinkSpeed) { case SK_LSPEED_AUTO: case SK_LSPEED_1000MBPS: - SWord |= GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100; + if ((pPrt->PLinkSpeedCap & SK_LSPEED_CAP_1000MBPS) != 0) { + + SWord |= GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100; + } break; case SK_LSPEED_100MBPS: SWord |= GM_GPCR_SPEED_100; @@ -1564,8 +1634,6 @@ /* flow-control settings */ switch (pPrt->PFlowCtrlMode) { case SK_FLOW_MODE_NONE: - /* set Pause Off */ - SK_OUT32(IoC, MR_ADDR(Port, GMAC_CTRL), GMC_PAUSE_OFF); /* disable Tx & Rx flow-control */ SWord |= GM_GPCR_FC_TX_DIS | GM_GPCR_FC_RX_DIS | GM_GPCR_AU_FCT_DIS; break; @@ -1583,24 +1651,25 @@ GM_OUT16(IoC, Port, GM_GP_CTRL, SWord); /* dummy read the Interrupt Source Register */ - SK_IN16(IoC, GMAC_IRQ_SRC, &SWord); - + SK_IN16(IoC, MR_ADDR(Port, GMAC_IRQ_SRC), &SWord); + #ifndef VCPU /* read Id from PHY */ SkGmPhyRead(pAC, IoC, Port, PHY_MARV_ID1, &pPrt->PhyId1); - + SkGmInitPhyMarv(pAC, IoC, Port, SK_FALSE); -#endif /* VCPU */ +#endif /* !VCPU */ } (void)SkGmResetCounter(pAC, IoC, Port); /* setup Transmit Control Register */ - GM_OUT16(IoC, Port, GM_TX_CTRL, TX_COL_THR(pPrt->PMacColThres)); + GM_OUT16(IoC, Port, GM_TX_CTRL, (SK_U16)TX_COL_THR(pPrt->PMacColThres)); /* setup Receive Control Register */ - GM_OUT16(IoC, Port, GM_RX_CTRL, GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA | - GM_RXCR_CRC_DIS); + SWord = GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA | GM_RXCR_CRC_DIS; + + GM_OUT16(IoC, Port, GM_RX_CTRL, SWord); /* setup Transmit Flow Control Register */ GM_OUT16(IoC, Port, GM_TX_FLOW_CTRL, 0xffff); @@ -1610,31 +1679,29 @@ GM_IN16(IoC, Port, GM_TX_PARAM, &SWord); #endif /* VCPU */ - SWord = TX_JAM_LEN_VAL(pPrt->PMacJamLen) | - TX_JAM_IPG_VAL(pPrt->PMacJamIpgVal) | - TX_IPG_JAM_DATA(pPrt->PMacJamIpgData); - + SWord = (SK_U16)(TX_JAM_LEN_VAL(pPrt->PMacJamLen) | + TX_JAM_IPG_VAL(pPrt->PMacJamIpgVal) | + TX_IPG_JAM_DATA(pPrt->PMacJamIpgData) | + TX_BACK_OFF_LIM(pPrt->PMacBackOffLim)); + GM_OUT16(IoC, Port, GM_TX_PARAM, SWord); /* configure the Serial Mode Register */ -#ifdef VCPU - GM_IN16(IoC, Port, GM_SERIAL_MODE, &SWord); -#endif /* VCPU */ - - SWord = GM_SMOD_VLAN_ENA | IPG_DATA_VAL(pPrt->PMacIpgData); + SWord = (SK_U16)(DATA_BLIND_VAL(pPrt->PMacDataBlind) | + GM_SMOD_VLAN_ENA | IPG_DATA_VAL(pPrt->PMacIpgData)); if (pPrt->PMacLimit4) { /* reset of collision counter after 4 consecutive collisions */ SWord |= GM_SMOD_LIMIT_4; } - if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK) { + if (pPrt->PPortUsage == SK_JUMBO_LINK) { /* enable jumbo mode (Max. Frame Length = 9018) */ SWord |= GM_SMOD_JUMBO_ENA; } - + GM_OUT16(IoC, Port, GM_SERIAL_MODE, SWord); - + /* * configure the GMACs Station Addresses * in PROM you can find our addresses at: @@ -1663,15 +1730,15 @@ else { GM_OUT16(IoC, Port, (GM_SRC_ADDR_1L + i * 4), SWord); } -#else +#else GM_OUT16(IoC, Port, (GM_SRC_ADDR_1L + i * 4), SWord); #endif /* WA_DEV_16 */ - + /* virtual address: will be used for data */ SK_IN16(IoC, (B2_MAC_1 + Port * 8 + i * 2), &SWord); GM_OUT16(IoC, Port, (GM_SRC_ADDR_2L + i * 4), SWord); - + /* reset Multicast filtering Hash registers 1-3 */ GM_OUT16(IoC, Port, GM_MC_ADDR_H1 + 4*i, 0); } @@ -1684,18 +1751,6 @@ GM_OUT16(IoC, Port, GM_RX_IRQ_MSK, 0); GM_OUT16(IoC, Port, GM_TR_IRQ_MSK, 0); -#if defined(SK_DIAG) || defined(DEBUG) - /* read General Purpose Status */ - GM_IN16(IoC, Port, GM_GP_STAT, &SWord); - - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("MAC Stat Reg.=0x%04X\n", SWord)); -#endif /* SK_DIAG || DEBUG */ - -#ifdef SK_DIAG - c_print("MAC Stat Reg=0x%04X\n", SWord); -#endif /* SK_DIAG */ - } /* SkGmInitMac */ #endif /* YUKON */ @@ -1714,8 +1769,8 @@ * nothing */ void SkXmInitDupMd( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { switch (pAC->GIni.GP[Port].PLinkModeStatus) { @@ -1762,8 +1817,8 @@ * nothing */ void SkXmInitPauseMd( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; @@ -1773,11 +1828,11 @@ pPrt = &pAC->GIni.GP[Port]; XM_IN16(IoC, Port, XM_MMU_CMD, &Word); - + if (pPrt->PFlowCtrlStatus == SK_FLOW_STAT_NONE || pPrt->PFlowCtrlStatus == SK_FLOW_STAT_LOC_SEND) { - /* Disable Pause Frame Reception */ + /* disable Pause Frame Reception */ Word |= XM_MMU_IGN_PF; } else { @@ -1785,10 +1840,10 @@ * enabling pause frame reception is required for 1000BT * because the XMAC is not reset if the link is going down */ - /* Enable Pause Frame Reception */ + /* enable Pause Frame Reception */ Word &= ~XM_MMU_IGN_PF; - } - + } + XM_OUT16(IoC, Port, XM_MMU_CMD, Word); XM_IN32(IoC, Port, XM_MODE, &DWord); @@ -1811,10 +1866,10 @@ /* remember this value is defined in big endian (!) */ XM_OUT16(IoC, Port, XM_MAC_PTIME, 0xffff); - /* Set Pause Mode in Mode Register */ + /* set Pause Mode in Mode Register */ DWord |= XM_PAUSE_MODE; - /* Set Pause Mode in MAC Rx FIFO */ + /* set Pause Mode in MAC Rx FIFO */ SK_OUT16(IoC, MR_ADDR(Port, RX_MFF_CTRL1), MFF_ENA_PAUSE); } else { @@ -1822,13 +1877,13 @@ * disable pause frame generation is required for 1000BT * because the XMAC is not reset if the link is going down */ - /* Disable Pause Mode in Mode Register */ + /* disable Pause Mode in Mode Register */ DWord &= ~XM_PAUSE_MODE; - /* Disable Pause Mode in MAC Rx FIFO */ + /* disable Pause Mode in MAC Rx FIFO */ SK_OUT16(IoC, MR_ADDR(Port, RX_MFF_CTRL1), MFF_DIS_PAUSE); } - + XM_OUT32(IoC, Port, XM_MODE, DWord); } /* SkXmInitPauseMd*/ @@ -1845,8 +1900,8 @@ * nothing */ static void SkXmInitPhyXmac( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_BOOL DoLoop) /* Should a Phy LoopBack be set-up? */ { @@ -1855,12 +1910,12 @@ pPrt = &pAC->GIni.GP[Port]; Ctrl = 0; - + /* Auto-negotiation ? */ if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) { SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("InitPhyXmac: no auto-negotiation Port %d\n", Port)); - /* Set DuplexMode in Config register */ + /* set DuplexMode in Config register */ if (pPrt->PLinkMode == SK_LMODE_FULL) { Ctrl |= PHY_CT_DUP_MD; } @@ -1873,9 +1928,9 @@ else { SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("InitPhyXmac: with auto-negotiation Port %d\n", Port)); - /* Set Auto-negotiation advertisement */ + /* set Auto-negotiation advertisement */ - /* Set Full/half duplex capabilities */ + /* set Full/half duplex capabilities */ switch (pPrt->PLinkMode) { case SK_LMODE_AUTOHALF: Ctrl |= PHY_X_AN_HD; @@ -1891,7 +1946,7 @@ SKERR_HWI_E015MSG); } - /* Set Flow-control capabilities */ + /* set Flow-control capabilities */ switch (pPrt->PFlowCtrlMode) { case SK_FLOW_MODE_NONE: Ctrl |= PHY_X_P_NO_PAUSE; @@ -1918,7 +1973,7 @@ } if (DoLoop) { - /* Set the Phy Loopback bit, too */ + /* set the Phy Loopback bit, too */ Ctrl |= PHY_CT_LOOP; } @@ -1939,8 +1994,8 @@ * nothing */ static void SkXmInitPhyBcom( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_BOOL DoLoop) /* Should a Phy LoopBack be set-up? */ { @@ -1962,7 +2017,7 @@ /* manually Master/Slave ? */ if (pPrt->PMSMode != SK_MS_MODE_AUTO) { Ctrl2 |= PHY_B_1000C_MSE; - + if (pPrt->PMSMode == SK_MS_MODE_MASTER) { Ctrl2 |= PHY_B_1000C_MSC; } @@ -1971,7 +2026,7 @@ if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) { SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("InitPhyBcom: no auto-negotiation Port %d\n", Port)); - /* Set DuplexMode in Config register */ + /* set DuplexMode in Config register */ if (pPrt->PLinkMode == SK_LMODE_FULL) { Ctrl1 |= PHY_CT_DUP_MD; } @@ -1989,7 +2044,7 @@ else { SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("InitPhyBcom: with auto-negotiation Port %d\n", Port)); - /* Set Auto-negotiation advertisement */ + /* set Auto-negotiation advertisement */ /* * Workaround BCOM Errata #1 for the C5 type. @@ -1997,8 +2052,8 @@ * Set Repeater/DTE bit 10 of the 1000Base-T Control Register */ Ctrl2 |= PHY_B_1000C_RD; - - /* Set Full/half duplex capabilities */ + + /* set Full/half duplex capabilities */ switch (pPrt->PLinkMode) { case SK_LMODE_AUTOHALF: Ctrl2 |= PHY_B_1000C_AHD; @@ -2014,7 +2069,7 @@ SKERR_HWI_E015MSG); } - /* Set Flow-control capabilities */ + /* set Flow-control capabilities */ switch (pPrt->PFlowCtrlMode) { case SK_FLOW_MODE_NONE: Ctrl3 |= PHY_B_P_NO_PAUSE; @@ -2036,27 +2091,27 @@ /* Restart Auto-negotiation */ Ctrl1 |= PHY_CT_ANE | PHY_CT_RE_CFG; } - + /* Initialize LED register here? */ /* No. Please do it in SkDgXmitLed() (if required) and swap - init order of LEDs and XMAC. (MAl) */ - + init order of LEDs and XMAC. (MAl) */ + /* Write 1000Base-T Control Register */ SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_1000T_CTRL, Ctrl2); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("Set 1000B-T Ctrl Reg=0x%04X\n", Ctrl2)); - + /* Write AutoNeg Advertisement Register */ SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_AUNE_ADV, Ctrl3); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("Set Auto-Neg.Adv.Reg=0x%04X\n", Ctrl3)); - + if (DoLoop) { - /* Set the Phy Loopback bit, too */ + /* set the Phy Loopback bit, too */ Ctrl1 |= PHY_CT_LOOP; } - if (pAC->GIni.GIPortUsage == SK_JUMBO_LINK) { + if (pPrt->PPortUsage == SK_JUMBO_LINK) { /* configure FIFO to high latency for transmission of ext. packets */ Ctrl4 |= PHY_B_PEC_HIGH_LA; @@ -2068,7 +2123,7 @@ /* Configure LED Traffic Mode and Jumbo Frame usage if specified */ SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_P_EXT_CTRL, Ctrl4); - + /* Write to the Phy control register */ SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_CTRL, Ctrl1); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, @@ -2078,17 +2133,17 @@ #ifdef YUKON -#ifndef SK_SLIM +#ifdef SK_PHY_LP_MODE /****************************************************************************** * * SkGmEnterLowPowerMode() * - * Description: + * Description: * This function sets the Marvell Alaska PHY to the low power mode * given by parameter mode. * The following low power modes are available: - * - * - Coma Mode (Deep Sleep): + * + * - COMA Mode (Deep Sleep): * Power consumption: ~15 - 30 mW * The PHY cannot wake up on its own. * @@ -2115,114 +2170,203 @@ * 1: error */ int SkGmEnterLowPowerMode( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (e.g. MAC_1) */ SK_U8 Mode) /* low power mode */ { + SK_U8 LastMode; + SK_U8 Byte; SK_U16 Word; + SK_U16 ClkDiv; SK_U32 DWord; - SK_U8 LastMode; + SK_U32 PowerDownBit; int Ret = 0; - if (pAC->GIni.GIYukonLite && - pAC->GIni.GIChipRev >= CHIP_REV_YU_LITE_A3) { + if (!(CHIP_ID_YUKON_2(pAC) || (pAC->GIni.GIYukonLite && + pAC->GIni.GIChipRev >= CHIP_REV_YU_LITE_A3))) { - /* save current power mode */ - LastMode = pAC->GIni.GP[Port].PPhyPowerState; - pAC->GIni.GP[Port].PPhyPowerState = Mode; - - switch (Mode) { - /* coma mode (deep sleep) */ - case PHY_PM_DEEP_SLEEP: - /* setup General Purpose Control Register */ - GM_OUT16(IoC, 0, GM_GP_CTRL, GM_GPCR_FL_PASS | - GM_GPCR_SPEED_100 | GM_GPCR_AU_ALL_DIS); - - /* apply COMA mode workaround */ - SkGmPhyWrite(pAC, IoC, Port, 29, 0x001f); - SkGmPhyWrite(pAC, IoC, Port, 30, 0xfff3); - - SK_IN32(IoC, PCI_C(PCI_OUR_REG_1), &DWord); - - SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON); - - /* Set PHY to Coma Mode */ - SK_OUT32(IoC, PCI_C(PCI_OUR_REG_1), DWord | PCI_PHY_COMA); - - SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF); - - break; - - /* IEEE 22.2.4.1.5 compatible power down mode */ - case PHY_PM_IEEE_POWER_DOWN: - /* - * - disable MAC 125 MHz clock - * - allow MAC power down - */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_CTRL, &Word); - Word |= PHY_M_PC_DIS_125CLK; - Word &= ~PHY_M_PC_MAC_POW_UP; - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, Word); + return(1); + } - /* - * register changes must be followed by a software - * reset to take effect - */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &Word); - Word |= PHY_CT_RESET; - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, Word); - - /* switch IEEE compatible power down mode on */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &Word); - Word |= PHY_CT_PDOWN; - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, Word); - break; + /* save current power mode */ + LastMode = pAC->GIni.GP[Port].PPhyPowerState; + pAC->GIni.GP[Port].PPhyPowerState = Mode; + + SK_DBG_MSG(pAC, SK_DBGMOD_POWM, SK_DBGCAT_CTRL, + ("SkGmEnterLowPowerMode: %u\n", Mode)); + + switch (Mode) { + /* COMA mode (deep sleep) */ + case PHY_PM_DEEP_SLEEP: + /* clear PHY & MAC reset first */ + SkGmClearRst(pAC, IoC, Port); - /* energy detect and energy detect plus mode */ - case PHY_PM_ENERGY_DETECT: - case PHY_PM_ENERGY_DETECT_PLUS: - /* - * - disable MAC 125 MHz clock - */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_CTRL, &Word); - Word |= PHY_M_PC_DIS_125CLK; - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, Word); - - /* activate energy detect mode 1 */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_CTRL, &Word); - - /* energy detect mode */ - if (Mode == PHY_PM_ENERGY_DETECT) { - Word |= PHY_M_PC_EN_DET; - } - /* energy detect plus mode */ - else { - Word |= PHY_M_PC_EN_DET_PLUS; + /* setup General Purpose Control Register */ + GM_OUT16(IoC, Port, GM_GP_CTRL, GM_GPCR_FL_PASS | + GM_GPCR_SPEED_100 | GM_GPCR_AU_ALL_DIS); + + SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON); + + if (CHIP_ID_YUKON_2(pAC)) { + /* set power down bit */ + PowerDownBit = (Port == MAC_1) ? PCI_Y2_PHY1_POWD : + PCI_Y2_PHY2_POWD; + + /* no COMA mode on Yukon-FE and Yukon-2 PHY */ + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_FE || + pAC->GIni.GIChipId == CHIP_ID_YUKON_XL) { + + /* set IEEE compatible Power Down Mode */ + Ret = SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, PHY_CT_PDOWN); + + ClkDiv = 0; /* divide clock by 2 */ + } + else { + ClkDiv = 1; /* divide clock by 4 */ + } + } + else { + /* apply COMA mode workaround */ + (void)SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PAGE_ADDR, 0x001f); + + Ret = SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PAGE_DATA, 0xfff3); + + PowerDownBit = PCI_PHY_COMA; + } + + SK_IN32(IoC, PCI_C(pAC, PCI_OUR_REG_1), &DWord); + + /* set PHY to PowerDown/COMA Mode */ + SK_OUT32(IoC, PCI_C(pAC, PCI_OUR_REG_1), DWord | PowerDownBit); + + /* check if this routine was called from a for() loop */ + if (pAC->GIni.GIMacsFound == 1 || Port == MAC_2) { + + /* ASF system clock stopped */ + SK_OUT8(IoC, B28_Y2_ASF_STAT_CMD, Y2_ASF_CLK_HALT); + + if (HW_FEATURE(pAC, HWF_RED_CORE_CLK_SUP)) { + /* on Yukon-2 clock select value is 31 */ + DWord = (pAC->GIni.GIChipId == CHIP_ID_YUKON_XL) ? + (Y2_CLK_DIV_VAL_2(0) | Y2_CLK_SEL_VAL_2(31)) : + Y2_CLK_DIV_VAL(ClkDiv); + + /* check for Yukon-2 dual port PCI-Express adapter */ + if (!(pAC->GIni.GIMacsFound == 2 && + pAC->GIni.GIPciBus == SK_PEX_BUS)) { + /* enable Core Clock Division */ + DWord |= Y2_CLK_DIV_ENA; } - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, Word); + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("Set Core Clock: 0x%08X\n", DWord)); - /* - * reinitialize the PHY to force a software reset - * which is necessary after the register settings - * for the energy detect modes. - * Furthermore reinitialisation prevents that the - * PHY is running out of a stable state. - */ - SkGmInitPhyMarv(pAC, IoC, Port, SK_FALSE); - break; + /* reduce Core Clock Frequency */ + SK_OUT32(IoC, B2_Y2_CLK_CTRL, DWord); + } - /* don't change current power mode */ - default: - pAC->GIni.GP[Port].PPhyPowerState = LastMode; - Ret = 1; - break; + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_XL && + pAC->GIni.GIChipRev > 1) { + /* enable bits are inverted */ + Byte = 0; + } + else { + Byte = (SK_U8)(Y2_PCI_CLK_LNK1_DIS | Y2_COR_CLK_LNK1_DIS | + Y2_CLK_GAT_LNK1_DIS | Y2_PCI_CLK_LNK2_DIS | + Y2_COR_CLK_LNK2_DIS | Y2_CLK_GAT_LNK2_DIS); + } + + /* disable PCI & Core Clock, disable clock gating for both Links */ + SK_OUT8(IoC, B2_Y2_CLK_GATE, Byte); + + if (pAC->GIni.GIVauxAvail) { + /* switch power to VAUX */ + SK_OUT8(IoC, B0_POWER_CTRL, (SK_U8)(PC_VAUX_ENA | PC_VCC_ENA | + PC_VAUX_ON | PC_VCC_OFF)); + } +#ifdef DEBUG + SK_IN32(IoC, B0_CTST, &DWord); + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("Ctrl/Stat & Switch: 0x%08x\n", DWord)); +#endif /* DEBUG */ + + if (pAC->GIni.GIMacsFound == 1 && + pAC->GIni.GIPciBus == SK_PEX_BUS) { + + /* switch to D1 state */ + SK_OUT8(IoC, PCI_C(pAC, PCI_PM_CTL_STS), PCI_PM_STATE_D1); + } } - } - /* low power modes are not supported by this chip */ - else { + + break; + + /* IEEE 22.2.4.1.5 compatible power down mode */ + case PHY_PM_IEEE_POWER_DOWN: + + Ret = SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_CTRL, &Word); + + Word |= PHY_M_PC_POL_R_DIS; + + if (!CHIP_ID_YUKON_2(pAC)) { + /* disable MAC 125 MHz clock */ + Word |= PHY_M_PC_DIS_125CLK; + Word &= ~PHY_M_PC_MAC_POW_UP; + } + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, Word); + + /* these register changes must be followed by a software reset */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &Word); + Word |= PHY_CT_RESET; + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, Word); + + /* switch IEEE compatible power down mode on */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &Word); + Word |= PHY_CT_PDOWN; + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, Word); + + break; + + /* energy detect and energy detect plus mode */ + case PHY_PM_ENERGY_DETECT: + case PHY_PM_ENERGY_DETECT_PLUS: + + Ret = SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_CTRL, &Word); + + Word |= PHY_M_PC_POL_R_DIS; + + if (!CHIP_ID_YUKON_2(pAC)) { + /* disable MAC 125 MHz clock */ + Word |= PHY_M_PC_DIS_125CLK; + } + + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_FE) { + /* enable Energy Detect (sense & pulse) */ + Word |= PHY_M_PC_ENA_ENE_DT; + } + else { + /* clear energy detect mode bits */ + Word &= ~PHY_M_PC_EN_DET_MSK; + + Word |= (Mode == PHY_PM_ENERGY_DETECT) ? PHY_M_PC_EN_DET : + PHY_M_PC_EN_DET_PLUS; + } + + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, Word); + + /* these register changes must be followed by a software reset */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &Word); + Word |= PHY_CT_RESET; + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, Word); + + break; + + /* don't change current power mode */ + default: + pAC->GIni.GP[Port].PPhyPowerState = LastMode; Ret = 1; + break; } return(Ret); @@ -2233,7 +2377,7 @@ * * SkGmLeaveLowPowerMode() * - * Description: + * Description: * Leave the current low power mode and switch to normal mode * * Note: @@ -2243,115 +2387,146 @@ * 1: error */ int SkGmLeaveLowPowerMode( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (e.g. MAC_1) */ { SK_U32 DWord; + SK_U32 PowerDownBit; SK_U16 Word; SK_U8 LastMode; int Ret = 0; - if (pAC->GIni.GIYukonLite && - pAC->GIni.GIChipRev >= CHIP_REV_YU_LITE_A3) { + if (!(CHIP_ID_YUKON_2(pAC) || (pAC->GIni.GIYukonLite && + pAC->GIni.GIChipRev >= CHIP_REV_YU_LITE_A3))) { - /* save current power mode */ - LastMode = pAC->GIni.GP[Port].PPhyPowerState; - pAC->GIni.GP[Port].PPhyPowerState = PHY_PM_OPERATIONAL_MODE; - - switch (LastMode) { - /* coma mode (deep sleep) */ - case PHY_PM_DEEP_SLEEP: - SK_IN32(IoC, PCI_C(PCI_OUR_REG_1), &DWord); - - SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON); - - /* Release PHY from Coma Mode */ - SK_OUT32(IoC, PCI_C(PCI_OUR_REG_1), DWord & ~PCI_PHY_COMA); - - SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF); - - SK_IN32(IoC, B2_GP_IO, &DWord); - - /* set to output */ - DWord |= (GP_DIR_9 | GP_IO_9); - - /* set PHY reset */ - SK_OUT32(IoC, B2_GP_IO, DWord); - - DWord &= ~GP_IO_9; /* clear PHY reset (active high) */ - - /* clear PHY reset */ - SK_OUT32(IoC, B2_GP_IO, DWord); - break; - - /* IEEE 22.2.4.1.5 compatible power down mode */ - case PHY_PM_IEEE_POWER_DOWN: - /* - * - enable MAC 125 MHz clock - * - set MAC power up - */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_CTRL, &Word); - Word &= ~PHY_M_PC_DIS_125CLK; - Word |= PHY_M_PC_MAC_POW_UP; - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, Word); + return(1); + } - /* - * register changes must be followed by a software - * reset to take effect - */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &Word); - Word |= PHY_CT_RESET; - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, Word); - - /* switch IEEE compatible power down mode off */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &Word); - Word &= ~PHY_CT_PDOWN; - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, Word); - break; + /* save current power mode */ + LastMode = pAC->GIni.GP[Port].PPhyPowerState; + pAC->GIni.GP[Port].PPhyPowerState = PHY_PM_OPERATIONAL_MODE; - /* energy detect and energy detect plus mode */ - case PHY_PM_ENERGY_DETECT: - case PHY_PM_ENERGY_DETECT_PLUS: - /* - * - enable MAC 125 MHz clock - */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_CTRL, &Word); - Word &= ~PHY_M_PC_DIS_125CLK; - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, Word); - - /* disable energy detect mode */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_CTRL, &Word); - Word &= ~PHY_M_PC_EN_DET_MSK; - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, Word); + SK_DBG_MSG(pAC, SK_DBGMOD_POWM, SK_DBGCAT_CTRL, + ("SkGmLeaveLowPowerMode: %u\n", LastMode)); - /* - * reinitialize the PHY to force a software reset - * which is necessary after the register settings - * for the energy detect modes. - * Furthermore reinitialisation prevents that the - * PHY is running out of a stable state. - */ - SkGmInitPhyMarv(pAC, IoC, Port, SK_FALSE); - break; + switch (LastMode) { + /* COMA mode (deep sleep) */ + case PHY_PM_DEEP_SLEEP: - /* don't change current power mode */ - default: - pAC->GIni.GP[Port].PPhyPowerState = LastMode; - Ret = 1; - break; + SkPciReadCfgWord(pAC, PCI_PM_CTL_STS, &Word); + + /* reset all DState bits */ + Word &= ~(PCI_PM_STATE_MSK); + + /* switch to D0 state */ + SkPciWriteCfgWord(pAC, PCI_PM_CTL_STS, Word); + + SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON); + + if (CHIP_ID_YUKON_2(pAC)) { + /* disable Core Clock Division */ + SK_OUT32(IoC, B2_Y2_CLK_CTRL, Y2_CLK_DIV_DIS); + + /* set power down bit */ + PowerDownBit = (Port == MAC_1) ? PCI_Y2_PHY1_POWD : + PCI_Y2_PHY2_POWD; } - } - /* low power modes are not supported by this chip */ - else { + else { + PowerDownBit = PCI_PHY_COMA; + } + + SK_IN32(IoC, PCI_C(pAC, PCI_OUR_REG_1), &DWord); + + /* Release PHY from PowerDown/COMA Mode */ + SK_OUT32(IoC, PCI_C(pAC, PCI_OUR_REG_1), DWord & ~PowerDownBit); + + SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF); + + if (CHIP_ID_YUKON_2(pAC)) { + /* no COMA mode on Yukon-FE */ + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_FE) { + /* release IEEE compatible Power Down Mode */ + Ret = SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, PHY_CT_ANE); + } + } + else { + SK_IN32(IoC, B2_GP_IO, &DWord); + + /* set to output */ + DWord |= (GP_DIR_9 | GP_IO_9); + + /* set PHY reset */ + SK_OUT32(IoC, B2_GP_IO, DWord); + + DWord &= ~GP_IO_9; /* clear PHY reset (active high) */ + + /* clear PHY reset */ + SK_OUT32(IoC, B2_GP_IO, DWord); + } + + break; + + /* IEEE 22.2.4.1.5 compatible power down mode */ + case PHY_PM_IEEE_POWER_DOWN: + + if (pAC->GIni.GIChipId != CHIP_ID_YUKON_XL) { + + Ret = SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_CTRL, &Word); + Word &= ~PHY_M_PC_DIS_125CLK; /* enable MAC 125 MHz clock */ + Word |= PHY_M_PC_MAC_POW_UP; /* set MAC power up */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, Word); + + /* these register changes must be followed by a software reset */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &Word); + Word |= PHY_CT_RESET; + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, Word); + } + + /* switch IEEE compatible power down mode off */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &Word); + Word &= ~PHY_CT_PDOWN; + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, Word); + + break; + + /* energy detect and energy detect plus mode */ + case PHY_PM_ENERGY_DETECT: + case PHY_PM_ENERGY_DETECT_PLUS: + + if (pAC->GIni.GIChipId != CHIP_ID_YUKON_XL) { + + Ret = SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_CTRL, &Word); + + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_FE) { + /* disable Energy Detect */ + Word &= ~PHY_M_PC_ENA_ENE_DT; + } + else { + /* disable energy detect mode & enable MAC 125 MHz clock */ + Word &= ~(PHY_M_PC_EN_DET_MSK | PHY_M_PC_DIS_125CLK); + } + + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, Word); + + /* these register changes must be followed by a software reset */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &Word); + Word |= PHY_CT_RESET; + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, Word); + } + break; + + /* don't change current power mode */ + default: + pAC->GIni.GP[Port].PPhyPowerState = LastMode; Ret = 1; + break; } return(Ret); } /* SkGmLeaveLowPowerMode */ -#endif /* !SK_SLIM */ - +#endif /* SK_PHY_LP_MODE */ /****************************************************************************** * @@ -2365,74 +2540,168 @@ * nothing */ static void SkGmInitPhyMarv( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_BOOL DoLoop) /* Should a Phy LoopBack be set-up? */ { SK_GEPORT *pPrt; + SK_BOOL AutoNeg; SK_U16 PhyCtrl; SK_U16 C1000BaseT; SK_U16 AutoNegAdv; + SK_U8 PauseMode; +#ifndef VCPU + SK_U16 SWord; + SK_U16 PageReg; + SK_U16 LoopSpeed; SK_U16 ExtPhyCtrl; SK_U16 LedCtrl; - SK_BOOL AutoNeg; + SK_U16 LedOver; #if defined(SK_DIAG) || defined(DEBUG) SK_U16 PhyStat; SK_U16 PhyStat1; SK_U16 PhySpecStat; #endif /* SK_DIAG || DEBUG */ +#endif /* !VCPU */ + + /* set Pause On */ + PauseMode = (SK_U8)GMC_PAUSE_ON; pPrt = &pAC->GIni.GP[Port]; /* Auto-negotiation ? */ - if (pPrt->PLinkMode == SK_LMODE_HALF || pPrt->PLinkMode == SK_LMODE_FULL) { - AutoNeg = SK_FALSE; - } - else { - AutoNeg = SK_TRUE; - } - + AutoNeg = pPrt->PLinkMode != SK_LMODE_HALF && + pPrt->PLinkMode != SK_LMODE_FULL; + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("InitPhyMarv: Port %d, auto-negotiation %s\n", - Port, AutoNeg ? "ON" : "OFF")); + ("InitPhyMarv: Port %d, Auto-neg. %s, LMode %d, LSpeed %d, FlowC %d\n", + Port, AutoNeg ? "ON" : "OFF", + pPrt->PLinkMode, pPrt->PLinkSpeed, pPrt->PFlowCtrlMode)); -#ifdef VCPU - VCPUprintf(0, "SkGmInitPhyMarv(), Port=%u, DoLoop=%u\n", - Port, DoLoop); -#else /* VCPU */ - if (DoLoop) { - /* Set 'MAC Power up'-bit, set Manual MDI configuration */ - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, - PHY_M_PC_MAC_POW_UP); +#ifndef VCPU + if ((pPrt->PLinkSpeedCap & SK_LSPEED_CAP_1000MBPS) != 0) { + + if (DoLoop) { + /* special setup for PHY 88E1112 */ + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_XL) { + + LoopSpeed = pPrt->PLinkSpeed; + + if (LoopSpeed == SK_LSPEED_AUTO) { + /* force 1000 Mbps */ + LoopSpeed = SK_LSPEED_1000MBPS; + } + LoopSpeed += 2; + + /* save page register */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_EXT_ADR, &PageReg); + + /* select page 2 to access MAC control register */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, 2); + + /* set MAC interface speed */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, LoopSpeed << 4); + + /* restore page register */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, PageReg); + + /* disable link pulses */ + SWord = PHY_M_PC_DIS_LINK_P; + } + else { + /* set 'MAC Power up'-bit, set Manual MDI configuration */ + SWord = PHY_M_PC_MAC_POW_UP; + } + + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, SWord); + } + else if (AutoNeg && pPrt->PLinkSpeed == SK_LSPEED_AUTO && + pAC->GIni.GIChipId != CHIP_ID_YUKON_XL) { + /* Read Ext. PHY Specific Control */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_EXT_CTRL, &ExtPhyCtrl); + + ExtPhyCtrl &= ~(PHY_M_EC_M_DSC_MSK | PHY_M_EC_S_DSC_MSK | + PHY_M_EC_MAC_S_MSK); + + ExtPhyCtrl |= PHY_M_EC_MAC_S(MAC_TX_CLK_25_MHZ); + + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_EC) { + /* on PHY 88E1111 there is a change for downshift control */ + ExtPhyCtrl |= PHY_M_EC_DSC_2(2) | PHY_M_EC_DOWN_S_ENA; + } + else { + ExtPhyCtrl |= PHY_M_EC_M_DSC(2) | PHY_M_EC_S_DSC(3); + } + + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_CTRL, ExtPhyCtrl); + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("Set Ext. PHY Ctrl=0x%04X\n", ExtPhyCtrl)); + } } - else if (AutoNeg && pPrt->PLinkSpeed == SK_LSPEED_AUTO) { - /* Read Ext. PHY Specific Control */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_EXT_CTRL, &ExtPhyCtrl); - - ExtPhyCtrl &= ~(PHY_M_EC_M_DSC_MSK | PHY_M_EC_S_DSC_MSK | - PHY_M_EC_MAC_S_MSK); - - ExtPhyCtrl |= PHY_M_EC_MAC_S(MAC_TX_CLK_25_MHZ) | - PHY_M_EC_M_DSC(0) | PHY_M_EC_S_DSC(1); - - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_CTRL, ExtPhyCtrl); - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("Set Ext. PHY Ctrl=0x%04X\n", ExtPhyCtrl)); + + if (CHIP_ID_YUKON_2(pAC)) { + /* Read PHY Specific Control */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_CTRL, &PhyCtrl); + + if (!DoLoop && pAC->GIni.GICopperType) { + + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_FE) { + /* enable Automatic Crossover (!!! Bits 5..4) */ + PhyCtrl |= (SK_U16)(PHY_M_PC_MDI_XMODE(PHY_M_PC_ENA_AUTO) >> 1); + } + else { + /* disable Energy Detect Mode */ + PhyCtrl &= ~PHY_M_PC_EN_DET_MSK; + + /* enable Automatic Crossover */ + PhyCtrl |= (SK_U16)PHY_M_PC_MDI_XMODE(PHY_M_PC_ENA_AUTO); + + if (AutoNeg && pPrt->PLinkSpeed == SK_LSPEED_AUTO && + pAC->GIni.GIChipId == CHIP_ID_YUKON_XL) { + /* on PHY 88E1112 there is a change for downshift control */ + PhyCtrl &= ~PHY_M_PC_DSC_MSK; + PhyCtrl |= PHY_M_PC_DSC(2) | PHY_M_PC_DOWN_S_ENA; + } + } + } + /* workaround for deviation #4.88 (CRC errors) */ + else { + /* disable Automatic Crossover */ + PhyCtrl &= ~PHY_M_PC_MDIX_MSK; + } + + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, PhyCtrl); + } + + /* special setup for PHY 88E1112 Fiber */ + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_XL && !pAC->GIni.GICopperType) { + /* Fiber: select 1000BASE-X only mode MAC Specific Ctrl Reg. */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, 2); + + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_CTRL, &SWord); + + SWord &= ~PHY_M_MAC_MD_MSK; + SWord |= PHY_M_MAC_MODE_SEL(PHY_M_MAC_MD_1000BX); + + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, SWord); + + /* select page 1 to access Fiber registers */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, 1); } /* Read PHY Control */ SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &PhyCtrl); if (!AutoNeg) { - /* Disable Auto-negotiation */ + /* disable Auto-negotiation */ PhyCtrl &= ~PHY_CT_ANE; } PhyCtrl |= PHY_CT_RESET; - /* Assert software reset */ + /* assert software reset */ SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, PhyCtrl); -#endif /* VCPU */ +#endif /* !VCPU */ PhyCtrl = 0 /* PHY_CT_COL_TST */; C1000BaseT = 0; @@ -2442,30 +2711,31 @@ if (pPrt->PMSMode != SK_MS_MODE_AUTO) { /* enable Manual Master/Slave */ C1000BaseT |= PHY_M_1000C_MSE; - + if (pPrt->PMSMode == SK_MS_MODE_MASTER) { C1000BaseT |= PHY_M_1000C_MSC; /* set it to Master */ } } - + /* Auto-negotiation ? */ if (!AutoNeg) { - + if (pPrt->PLinkMode == SK_LMODE_FULL) { - /* Set Full Duplex Mode */ + /* set Full Duplex Mode */ PhyCtrl |= PHY_CT_DUP_MD; } - /* Set Master/Slave manually if not already done */ + /* set Master/Slave manually if not already done */ if (pPrt->PMSMode == SK_MS_MODE_AUTO) { C1000BaseT |= PHY_M_1000C_MSE; /* set it to Slave */ } - /* Set Speed */ + /* set Speed */ switch (pPrt->PLinkSpeed) { case SK_LSPEED_AUTO: case SK_LSPEED_1000MBPS: - PhyCtrl |= PHY_CT_SP1000; + PhyCtrl |= (((pPrt->PLinkSpeedCap & SK_LSPEED_CAP_1000MBPS) != 0) ? + PHY_CT_SP1000 : PHY_CT_SP100); break; case SK_LSPEED_100MBPS: PhyCtrl |= PHY_CT_SP100; @@ -2477,38 +2747,65 @@ SKERR_HWI_E019MSG); } + if ((pPrt->PFlowCtrlMode == SK_FLOW_STAT_NONE) || + /* disable Pause also for 10/100 Mbps in half duplex mode */ + ((pPrt->PLinkMode == SK_LMODE_HALF) && + ((pPrt->PLinkSpeed == SK_LSPEED_STAT_100MBPS) || + (pPrt->PLinkSpeed == SK_LSPEED_STAT_10MBPS)))) { + + /* set Pause Off */ + PauseMode = (SK_U8)GMC_PAUSE_OFF; + } + + SK_OUT8(IoC, MR_ADDR(Port, GMAC_CTRL), PauseMode); + if (!DoLoop) { + /* assert software reset */ PhyCtrl |= PHY_CT_RESET; } } else { - /* Set Auto-negotiation advertisement */ - + /* set Auto-negotiation advertisement */ + if (pAC->GIni.GICopperType) { - /* Set Speed capabilities */ + /* set Speed capabilities */ switch (pPrt->PLinkSpeed) { case SK_LSPEED_AUTO: - C1000BaseT |= PHY_M_1000C_AHD | PHY_M_1000C_AFD; + if ((pPrt->PLinkSpeedCap & SK_LSPEED_CAP_1000MBPS) != 0) { + C1000BaseT |= PHY_M_1000C_AFD; +#ifdef xSK_DIAG + C1000BaseT |= PHY_M_1000C_AHD; +#endif /* SK_DIAG */ + } AutoNegAdv |= PHY_M_AN_100_FD | PHY_M_AN_100_HD | PHY_M_AN_10_FD | PHY_M_AN_10_HD; break; case SK_LSPEED_1000MBPS: - C1000BaseT |= PHY_M_1000C_AHD | PHY_M_1000C_AFD; + if ((pPrt->PLinkSpeedCap & SK_LSPEED_CAP_1000MBPS) != 0) { + C1000BaseT |= PHY_M_1000C_AFD; +#ifdef xSK_DIAG + C1000BaseT |= PHY_M_1000C_AHD; +#endif /* SK_DIAG */ + } break; case SK_LSPEED_100MBPS: - AutoNegAdv |= PHY_M_AN_100_FD | PHY_M_AN_100_HD | - /* advertise 10Base-T also */ - PHY_M_AN_10_FD | PHY_M_AN_10_HD; + if ((pPrt->PLinkSpeedCap & SK_LSPEED_CAP_100MBPS) != 0) { + AutoNegAdv |= PHY_M_AN_100_FD | PHY_M_AN_100_HD | + /* advertise 10Base-T also */ + PHY_M_AN_10_FD | PHY_M_AN_10_HD; + } break; case SK_LSPEED_10MBPS: - AutoNegAdv |= PHY_M_AN_10_FD | PHY_M_AN_10_HD; + if ((pPrt->PLinkSpeedCap & SK_LSPEED_CAP_10MBPS) != 0) { + AutoNegAdv |= PHY_M_AN_10_FD | PHY_M_AN_10_HD; + } break; default: SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E019, SKERR_HWI_E019MSG); } - /* Set Full/half duplex capabilities */ + /* set Full/half duplex capabilities */ switch (pPrt->PLinkMode) { case SK_LMODE_AUTOHALF: C1000BaseT &= ~PHY_M_1000C_AFD; @@ -2524,8 +2821,8 @@ SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E015, SKERR_HWI_E015MSG); } - - /* Set Flow-control capabilities */ + + /* set Flow-control capabilities */ switch (pPrt->PFlowCtrlMode) { case SK_FLOW_MODE_NONE: AutoNegAdv |= PHY_B_P_NO_PAUSE; @@ -2545,8 +2842,8 @@ } } else { /* special defines for FIBER (88E1011S only) */ - - /* Set Full/half duplex capabilities */ + + /* set Full/half duplex capabilities */ switch (pPrt->PLinkMode) { case SK_LMODE_AUTOHALF: AutoNegAdv |= PHY_M_AN_1000X_AHD; @@ -2561,8 +2858,8 @@ SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E015, SKERR_HWI_E015MSG); } - - /* Set Flow-control capabilities */ + + /* set Flow-control capabilities */ switch (pPrt->PFlowCtrlMode) { case SK_FLOW_MODE_NONE: AutoNegAdv |= PHY_M_P_NO_PAUSE_X; @@ -2587,52 +2884,51 @@ PhyCtrl |= PHY_CT_ANE | PHY_CT_RE_CFG; } } - + #ifdef VCPU /* * E-mail from Gu Lin (08-03-2002): */ - + /* Program PHY register 30 as 16'h0708 for simulation speed up */ SkGmPhyWrite(pAC, IoC, Port, 30, 0x0700 /* 0x0708 */); - + VCpuWait(2000); #else /* VCPU */ - - /* Write 1000Base-T Control Register */ - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_1000T_CTRL, C1000BaseT); - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("Set 1000B-T Ctrl =0x%04X\n", C1000BaseT)); - + + if (pAC->GIni.GIChipId != CHIP_ID_YUKON_FE) { + /* Write 1000Base-T Control Register */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_1000T_CTRL, C1000BaseT); + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("Set 1000B-T Ctrl =0x%04X\n", C1000BaseT)); + } + /* Write AutoNeg Advertisement Register */ SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_AUNE_ADV, AutoNegAdv); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("Set Auto-Neg.Adv.=0x%04X\n", AutoNegAdv)); #endif /* VCPU */ - + if (DoLoop) { - /* Set the PHY Loopback bit */ + /* set the PHY Loopback bit */ PhyCtrl |= PHY_CT_LOOP; #ifdef XXX /* Program PHY register 16 as 16'h0400 to force link good */ SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, PHY_M_PC_FL_GOOD); -#endif /* XXX */ -#ifndef VCPU if (pPrt->PLinkSpeed != SK_LSPEED_AUTO) { /* Write Ext. PHY Specific Control */ SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_CTRL, (SK_U16)((pPrt->PLinkSpeed + 2) << 4)); } -#endif /* VCPU */ +#endif /* XXX */ } #ifdef TEST_ONLY else if (pPrt->PLinkSpeed == SK_LSPEED_10MBPS) { - /* Write PHY Specific Control */ - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, - PHY_M_PC_EN_DET_MSK); + /* Write PHY Specific Control */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, PHY_M_PC_EN_DET_MSK); } #endif @@ -2645,27 +2941,83 @@ VCpuWait(2000); #else - LedCtrl = PHY_M_LED_PULS_DUR(PULS_170MS) | PHY_M_LED_BLINK_RT(BLINK_84MS); + LedCtrl = PHY_M_LED_PULS_DUR(PULS_170MS); + + LedOver = 0; + + if ((pAC->GIni.GILedBlinkCtrl & SK_ACT_LED_BLINK) != 0) { + + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_FE) { + /* on 88E3082 these bits are at 11..9 (shifted left) */ + LedCtrl |= PHY_M_LED_BLINK_RT(BLINK_84MS) << 1; + + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_FE_LED_PAR, &SWord); - if ((pAC->GIni.GILedBlinkCtrl & SK_ACT_LED_BLINK) != 0) { - LedCtrl |= PHY_M_LEDC_RX_CTRL | PHY_M_LEDC_TX_CTRL; + /* delete ACT LED control bits */ + SWord &= ~PHY_M_FELP_LED1_MSK; + /* change ACT LED control to blink mode */ + SWord |= PHY_M_FELP_LED1_CTRL(LED_PAR_CTRL_ACT_BL); + + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_FE_LED_PAR, SWord); + } + else if (pAC->GIni.GIChipId == CHIP_ID_YUKON_XL) { + /* save page register */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_EXT_ADR, &PageReg); + + /* select page 3 to access LED control register */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, 3); + + /* set LED Function Control register */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, (SK_U16) + (PHY_M_LEDC_LOS_CTRL(1) | /* LINK/ACT */ + PHY_M_LEDC_INIT_CTRL(7) | /* 10 Mbps */ + PHY_M_LEDC_STA1_CTRL(7) | /* 100 Mbps */ + PHY_M_LEDC_STA0_CTRL(7))); /* 1000 Mbps */ + + /* set Polarity Control register */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_STAT, (SK_U16) + (PHY_M_POLC_LS1_P_MIX(4) | PHY_M_POLC_IS0_P_MIX(4) | + PHY_M_POLC_LOS_CTRL(2) | PHY_M_POLC_INIT_CTRL(2) | + PHY_M_POLC_STA1_CTRL(2) | PHY_M_POLC_STA0_CTRL(2))); + + /* restore page register */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, PageReg); + } + else { + /* set Tx LED (LED_TX) to blink mode on Rx OR Tx activity */ + LedCtrl |= PHY_M_LED_BLINK_RT(BLINK_84MS) | PHY_M_LEDC_TX_CTRL; + + /* on PHY 88E1111 there is a change for LED control */ + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_EC && + (pAC->GIni.GILedBlinkCtrl & SK_DUAL_LED_ACT_LNK) != 0) { + /* Yukon-EC needs setting of 2 bits: 0,6=11) */ + LedCtrl |= PHY_M_LEDC_TX_C_LSB; + } + /* turn off the Rx LED (LED_RX) */ + LedOver |= PHY_M_LED_MO_RX(MO_LED_OFF); + } } if ((pAC->GIni.GILedBlinkCtrl & SK_DUP_LED_NORMAL) != 0) { + /* disable blink mode (LED_DUPLEX) on collisions */ LedCtrl |= PHY_M_LEDC_DP_CTRL; } - + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_LED_CTRL, LedCtrl); if ((pAC->GIni.GILedBlinkCtrl & SK_LED_LINK100_ON) != 0) { /* only in forced 100 Mbps mode */ if (!AutoNeg && pPrt->PLinkSpeed == SK_LSPEED_100MBPS) { - - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_LED_OVER, - PHY_M_LED_MO_100(MO_LED_ON)); + /* turn on 100 Mbps LED (LED_LINK100) */ + LedOver |= PHY_M_LED_MO_100(MO_LED_ON); } } + if (LedOver != 0) { + /* set Manual LED Override */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_LED_OVER, LedOver); + } + #ifdef SK_DIAG c_print("Set PHY Ctrl=0x%04X\n", PhyCtrl); c_print("Set 1000 B-T=0x%04X\n", C1000BaseT); @@ -2678,30 +3030,33 @@ SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CTRL, &PhyCtrl); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("PHY Ctrl Reg.=0x%04X\n", PhyCtrl)); - - /* Read 1000Base-T Control Register */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_1000T_CTRL, &C1000BaseT); - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("1000B-T Ctrl =0x%04X\n", C1000BaseT)); - + /* Read AutoNeg Advertisement Register */ SkGmPhyRead(pAC, IoC, Port, PHY_MARV_AUNE_ADV, &AutoNegAdv); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("Auto-Neg.Adv.=0x%04X\n", AutoNegAdv)); - - /* Read Ext. PHY Specific Control */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_EXT_CTRL, &ExtPhyCtrl); - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("Ext. PHY Ctrl=0x%04X\n", ExtPhyCtrl)); - + + if (pAC->GIni.GIChipId != CHIP_ID_YUKON_FE) { + /* Read 1000Base-T Control Register */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_1000T_CTRL, &C1000BaseT); + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("1000B-T Ctrl =0x%04X\n", C1000BaseT)); + + /* Read Ext. PHY Specific Control */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_EXT_CTRL, &ExtPhyCtrl); + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + ("Ext. PHY Ctrl=0x%04X\n", ExtPhyCtrl)); + } + /* Read PHY Status */ SkGmPhyRead(pAC, IoC, Port, PHY_MARV_STAT, &PhyStat); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("PHY Stat Reg.=0x%04X\n", PhyStat)); + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_STAT, &PhyStat1); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("PHY Stat Reg.=0x%04X\n", PhyStat1)); - + /* Read PHY Specific Status */ SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_STAT, &PhySpecStat); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, @@ -2718,6 +3073,8 @@ c_print("PHY Spec Reg=0x%04X\n", PhySpecStat); #endif /* SK_DIAG */ + /* enable all PHY interrupts */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_INT_MASK, (SK_U16)PHY_M_DEF_MSK); #endif /* VCPU */ } /* SkGmInitPhyMarv */ @@ -2737,8 +3094,8 @@ * nothing */ static void SkXmInitPhyLone( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_BOOL DoLoop) /* Should a Phy LoopBack be set-up? */ { @@ -2756,7 +3113,7 @@ /* manually Master/Slave ? */ if (pPrt->PMSMode != SK_MS_MODE_AUTO) { Ctrl2 |= PHY_L_1000C_MSE; - + if (pPrt->PMSMode == SK_MS_MODE_MASTER) { Ctrl2 |= PHY_L_1000C_MSC; } @@ -2769,7 +3126,7 @@ */ SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("InitPhyLone: no auto-negotiation Port %d\n", Port)); - /* Set DuplexMode in Config register */ + /* set DuplexMode in Config register */ if (pPrt->PLinkMode == SK_LMODE_FULL) { Ctrl1 |= PHY_CT_DUP_MD; } @@ -2778,7 +3135,6 @@ if (pPrt->PMSMode == SK_MS_MODE_AUTO) { Ctrl2 |= PHY_L_1000C_MSE; /* set it to Slave */ } - /* * Do NOT enable Auto-negotiation here. This would hold * the link down because no IDLES are transmitted @@ -2787,9 +3143,9 @@ else { SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("InitPhyLone: with auto-negotiation Port %d\n", Port)); - /* Set Auto-negotiation advertisement */ + /* set Auto-negotiation advertisement */ - /* Set Full/half duplex capabilities */ + /* set Full/half duplex capabilities */ switch (pPrt->PLinkMode) { case SK_LMODE_AUTOHALF: Ctrl2 |= PHY_L_1000C_AHD; @@ -2805,7 +3161,7 @@ SKERR_HWI_E015MSG); } - /* Set Flow-control capabilities */ + /* set Flow-control capabilities */ switch (pPrt->PFlowCtrlMode) { case SK_FLOW_MODE_NONE: Ctrl3 |= PHY_L_P_NO_PAUSE; @@ -2827,19 +3183,19 @@ /* Restart Auto-negotiation */ Ctrl1 = PHY_CT_ANE | PHY_CT_RE_CFG; } - + /* Write 1000Base-T Control Register */ SkXmPhyWrite(pAC, IoC, Port, PHY_LONE_1000T_CTRL, Ctrl2); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("1000B-T Ctrl Reg=0x%04X\n", Ctrl2)); - + /* Write AutoNeg Advertisement Register */ SkXmPhyWrite(pAC, IoC, Port, PHY_LONE_AUNE_ADV, Ctrl3); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("Auto-Neg.Adv.Reg=0x%04X\n", Ctrl3)); if (DoLoop) { - /* Set the Phy Loopback bit, too */ + /* set the Phy Loopback bit, too */ Ctrl1 |= PHY_CT_LOOP; } @@ -2862,8 +3218,8 @@ * nothing */ static void SkXmInitPhyNat( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_BOOL DoLoop) /* Should a Phy LoopBack be set-up? */ { @@ -2884,8 +3240,8 @@ * nothing */ void SkMacInitPhy( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_BOOL DoLoop) /* Should a Phy LoopBack be set-up? */ { @@ -2895,7 +3251,7 @@ #ifdef GENESIS if (pAC->GIni.GIGenesis) { - + switch (pPrt->PhyType) { case SK_PHY_XMAC: SkXmInitPhyXmac(pAC, IoC, Port, DoLoop); @@ -2914,10 +3270,10 @@ } } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { - + SkGmInitPhyMarv(pAC, IoC, Port, DoLoop); } #endif /* YUKON */ @@ -2939,8 +3295,8 @@ * SK_AND_OTHER Other error happened */ static int SkXmAutoNegDoneXmac( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; @@ -2958,10 +3314,10 @@ if ((LPAb & PHY_X_AN_RFB) != 0) { /* At least one of the remote fault bit is set */ - /* Error */ - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("AutoNegFail: Remote fault bit set Port %d\n", Port)); pPrt->PAutoNegFail = SK_TRUE; + return(SK_AND_OTHER); } @@ -2974,7 +3330,7 @@ } else { /* Error */ - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("AutoNegFail: Duplex mode mismatch Port %d\n", Port)); pPrt->PAutoNegFail = SK_TRUE; return(SK_AND_DUP_CAP); @@ -2984,19 +3340,19 @@ /* We are NOT using chapter 4.23 of the Xaqti manual */ /* We are using IEEE 802.3z/D5.0 Table 37-4 */ if ((pPrt->PFlowCtrlMode == SK_FLOW_MODE_SYMMETRIC || - pPrt->PFlowCtrlMode == SK_FLOW_MODE_SYM_OR_REM) && - (LPAb & PHY_X_P_SYM_MD) != 0) { + pPrt->PFlowCtrlMode == SK_FLOW_MODE_SYM_OR_REM) && + (LPAb & PHY_X_P_SYM_MD) != 0) { /* Symmetric PAUSE */ pPrt->PFlowCtrlStatus = SK_FLOW_STAT_SYMMETRIC; } else if (pPrt->PFlowCtrlMode == SK_FLOW_MODE_SYM_OR_REM && - (LPAb & PHY_X_RS_PAUSE) == PHY_X_P_ASYM_MD) { - /* Enable PAUSE receive, disable PAUSE transmit */ + (LPAb & PHY_X_RS_PAUSE) == PHY_X_P_ASYM_MD) { + /* enable PAUSE receive, disable PAUSE transmit */ pPrt->PFlowCtrlStatus = SK_FLOW_STAT_REM_SEND; } else if (pPrt->PFlowCtrlMode == SK_FLOW_MODE_LOC_SEND && - (LPAb & PHY_X_RS_PAUSE) == PHY_X_P_BOTH_MD) { - /* Disable PAUSE receive, enable PAUSE transmit */ + (LPAb & PHY_X_RS_PAUSE) == PHY_X_P_BOTH_MD) { + /* disable PAUSE receive, enable PAUSE transmit */ pPrt->PFlowCtrlStatus = SK_FLOW_STAT_LOC_SEND; } else { @@ -3022,8 +3378,8 @@ * SK_AND_OTHER Other error happened */ static int SkXmAutoNegDoneBcom( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; @@ -3045,12 +3401,12 @@ 01-Sep-2000 RA;:;: SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_1000T_STAT, &ResAb); #endif /* 0 */ - + SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_STAT, &AuxStat); if ((LPAb & PHY_B_AN_RF) != 0) { /* Remote fault bit is set: Error */ - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("AutoNegFail: Remote fault bit set Port %d\n", Port)); pPrt->PAutoNegFail = SK_TRUE; return(SK_AND_OTHER); @@ -3065,23 +3421,23 @@ } else { /* Error */ - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("AutoNegFail: Duplex mode mismatch Port %d\n", Port)); pPrt->PAutoNegFail = SK_TRUE; return(SK_AND_DUP_CAP); } - + #ifdef TEST_ONLY 01-Sep-2000 RA;:;: /* Check Master/Slave resolution */ if ((ResAb & PHY_B_1000S_MSF) != 0) { - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("Master/Slave Fault Port %d\n", Port)); pPrt->PAutoNegFail = SK_TRUE; pPrt->PMSStatus = SK_MS_STAT_FAULT; return(SK_AND_OTHER); } - + pPrt->PMSStatus = ((ResAb & PHY_B_1000S_MSR) != 0) ? SK_MS_STAT_MASTER : SK_MS_STAT_SLAVE; #endif /* 0 */ @@ -3093,11 +3449,11 @@ pPrt->PFlowCtrlStatus = SK_FLOW_STAT_SYMMETRIC; } else if ((AuxStat & PHY_B_AS_PAUSE_MSK) == PHY_B_AS_PRR) { - /* Enable PAUSE receive, disable PAUSE transmit */ + /* enable PAUSE receive, disable PAUSE transmit */ pPrt->PFlowCtrlStatus = SK_FLOW_STAT_REM_SEND; } else if ((AuxStat & PHY_B_AS_PAUSE_MSK) == PHY_B_AS_PRT) { - /* Disable PAUSE receive, enable PAUSE transmit */ + /* disable PAUSE receive, enable PAUSE transmit */ pPrt->PFlowCtrlStatus = SK_FLOW_STAT_LOC_SEND; } else { @@ -3125,14 +3481,18 @@ * SK_AND_OTHER Other error happened */ static int SkGmAutoNegDoneMarv( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; SK_U16 LPAb; /* Link Partner Ability */ SK_U16 ResAb; /* Resolved Ability */ SK_U16 AuxStat; /* Auxiliary Status */ + SK_U8 PauseMode; /* Pause Mode */ + + /* set Pause On */ + PauseMode = (SK_U8)GMC_PAUSE_ON; SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("AutoNegDoneMarv, Port %d\n", Port)); @@ -3142,78 +3502,105 @@ SkGmPhyRead(pAC, IoC, Port, PHY_MARV_AUNE_LP, &LPAb); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("Link P.Abil.=0x%04X\n", LPAb)); - + if ((LPAb & PHY_M_AN_RF) != 0) { - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("AutoNegFail: Remote fault bit set Port %d\n", Port)); pPrt->PAutoNegFail = SK_TRUE; return(SK_AND_OTHER); } - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_1000T_STAT, &ResAb); - - /* Check Master/Slave resolution */ - if ((ResAb & PHY_B_1000S_MSF) != 0) { - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("Master/Slave Fault Port %d\n", Port)); - pPrt->PAutoNegFail = SK_TRUE; - pPrt->PMSStatus = SK_MS_STAT_FAULT; - return(SK_AND_OTHER); + if ((pPrt->PLinkSpeedCap & SK_LSPEED_CAP_1000MBPS) != 0) { + + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_1000T_STAT, &ResAb); + + /* Check Master/Slave resolution */ + if ((ResAb & PHY_B_1000S_MSF) != 0) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, + ("Master/Slave Fault Port %d\n", Port)); + pPrt->PAutoNegFail = SK_TRUE; + pPrt->PMSStatus = SK_MS_STAT_FAULT; + return(SK_AND_OTHER); + } + + pPrt->PMSStatus = ((ResAb & PHY_B_1000S_MSR) != 0) ? + (SK_U8)SK_MS_STAT_MASTER : (SK_U8)SK_MS_STAT_SLAVE; } - - pPrt->PMSStatus = ((ResAb & PHY_B_1000S_MSR) != 0) ? - (SK_U8)SK_MS_STAT_MASTER : (SK_U8)SK_MS_STAT_SLAVE; - + /* Read PHY Specific Status */ SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_STAT, &AuxStat); - + /* Check Speed & Duplex resolved */ - if ((AuxStat & PHY_M_PS_SPDUP_RES) == 0) { - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, - ("AutoNegFail: Speed & Duplex not resolved, Port %d\n", Port)); - pPrt->PAutoNegFail = SK_TRUE; - pPrt->PLinkModeStatus = (SK_U8)SK_LMODE_STAT_UNKNOWN; - return(SK_AND_DUP_CAP); - } - - if ((AuxStat & PHY_M_PS_FULL_DUP) != 0) { - pPrt->PLinkModeStatus = (SK_U8)SK_LMODE_STAT_AUTOFULL; - } - else { - pPrt->PLinkModeStatus = (SK_U8)SK_LMODE_STAT_AUTOHALF; - } - - /* Check PAUSE mismatch ??? */ - /* We are using IEEE 802.3z/D5.0 Table 37-4 */ - if ((AuxStat & PHY_M_PS_PAUSE_MSK) == PHY_M_PS_PAUSE_MSK) { - /* Symmetric PAUSE */ - pPrt->PFlowCtrlStatus = SK_FLOW_STAT_SYMMETRIC; - } - else if ((AuxStat & PHY_M_PS_PAUSE_MSK) == PHY_M_PS_RX_P_EN) { - /* Enable PAUSE receive, disable PAUSE transmit */ - pPrt->PFlowCtrlStatus = SK_FLOW_STAT_REM_SEND; + if ((AuxStat & PHY_M_PS_SPDUP_RES) == 0) { + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, + ("AutoNegFail: Speed & Duplex not resolved, Port %d\n", Port)); + pPrt->PAutoNegFail = SK_TRUE; + pPrt->PLinkModeStatus = (SK_U8)SK_LMODE_STAT_UNKNOWN; + return(SK_AND_DUP_CAP); } - else if ((AuxStat & PHY_M_PS_PAUSE_MSK) == PHY_M_PS_TX_P_EN) { - /* Disable PAUSE receive, enable PAUSE transmit */ - pPrt->PFlowCtrlStatus = SK_FLOW_STAT_LOC_SEND; + + pPrt->PLinkModeStatus = (SK_U8)(((AuxStat & PHY_M_PS_FULL_DUP) != 0) ? + SK_LMODE_STAT_AUTOFULL : SK_LMODE_STAT_AUTOHALF); + + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_FE) { + /* set used link speed */ + pPrt->PLinkSpeedUsed = (SK_U8)(((AuxStat & PHY_M_PS_SPEED_100) != 0) ? + SK_LSPEED_STAT_100MBPS : SK_LSPEED_STAT_10MBPS); } else { - /* PAUSE mismatch -> no PAUSE */ - pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE; + /* set used link speed */ + switch ((unsigned)(AuxStat & PHY_M_PS_SPEED_MSK)) { + case (unsigned)PHY_M_PS_SPEED_1000: + pPrt->PLinkSpeedUsed = (SK_U8)SK_LSPEED_STAT_1000MBPS; + break; + case PHY_M_PS_SPEED_100: + pPrt->PLinkSpeedUsed = (SK_U8)SK_LSPEED_STAT_100MBPS; + break; + default: + pPrt->PLinkSpeedUsed = (SK_U8)SK_LSPEED_STAT_10MBPS; + } + + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_XL) { + /* Tx & Rx Pause Enabled bits are at 9..8 */ + AuxStat >>= 6; + + if (!pAC->GIni.GICopperType) { + /* always 1000 Mbps on fiber */ + pPrt->PLinkSpeedUsed = (SK_U8)SK_LSPEED_STAT_1000MBPS; + } + } + + AuxStat &= PHY_M_PS_PAUSE_MSK; + /* We are using IEEE 802.3z/D5.0 Table 37-4 */ + if (AuxStat == PHY_M_PS_PAUSE_MSK) { + /* Symmetric PAUSE */ + pPrt->PFlowCtrlStatus = SK_FLOW_STAT_SYMMETRIC; + } + else if (AuxStat == PHY_M_PS_RX_P_EN) { + /* enable PAUSE receive, disable PAUSE transmit */ + pPrt->PFlowCtrlStatus = SK_FLOW_STAT_REM_SEND; + } + else if (AuxStat == PHY_M_PS_TX_P_EN) { + /* disable PAUSE receive, enable PAUSE transmit */ + pPrt->PFlowCtrlStatus = SK_FLOW_STAT_LOC_SEND; + } + else { + /* PAUSE mismatch -> no PAUSE */ + pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE; + } } - - /* set used link speed */ - switch ((unsigned)(AuxStat & PHY_M_PS_SPEED_MSK)) { - case (unsigned)PHY_M_PS_SPEED_1000: - pPrt->PLinkSpeedUsed = (SK_U8)SK_LSPEED_STAT_1000MBPS; - break; - case PHY_M_PS_SPEED_100: - pPrt->PLinkSpeedUsed = (SK_U8)SK_LSPEED_STAT_100MBPS; - break; - default: - pPrt->PLinkSpeedUsed = (SK_U8)SK_LSPEED_STAT_10MBPS; + + if ((pPrt->PFlowCtrlStatus == SK_FLOW_STAT_NONE) || + /* disable Pause also for 10/100 Mbps in half duplex mode */ + ((pPrt->PLinkSpeedUsed < (SK_U8)SK_LSPEED_STAT_1000MBPS) && + pPrt->PLinkModeStatus == (SK_U8)SK_LMODE_STAT_AUTOHALF)) { + + /* set Pause Off */ + PauseMode = (SK_U8)GMC_PAUSE_OFF; } + SK_OUT8(IoC, MR_ADDR(Port, GMAC_CTRL), PauseMode); + return(SK_AND_OK); } /* SkGmAutoNegDoneMarv */ #endif /* YUKON */ @@ -3233,8 +3620,8 @@ * SK_AND_OTHER Other error happened */ static int SkXmAutoNegDoneLone( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; @@ -3253,8 +3640,7 @@ if ((LPAb & PHY_L_AN_RF) != 0) { /* Remote fault bit is set */ - /* Error */ - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("AutoNegFail: Remote fault bit set Port %d\n", Port)); pPrt->PAutoNegFail = SK_TRUE; return(SK_AND_OTHER); @@ -3267,11 +3653,11 @@ else { pPrt->PLinkModeStatus = (SK_U8)SK_LMODE_STAT_AUTOHALF; } - + /* Check Master/Slave resolution */ if ((ResAb & PHY_L_1000S_MSF) != 0) { /* Error */ - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("Master/Slave Fault Port %d\n", Port)); pPrt->PAutoNegFail = SK_TRUE; pPrt->PMSStatus = SK_MS_STAT_FAULT; @@ -3288,7 +3674,7 @@ /* We are using IEEE 802.3z/D5.0 Table 37-4 */ /* we must manually resolve the abilities here */ pPrt->PFlowCtrlStatus = SK_FLOW_STAT_NONE; - + switch (pPrt->PFlowCtrlMode) { case SK_FLOW_MODE_NONE: /* default */ @@ -3296,7 +3682,7 @@ case SK_FLOW_MODE_LOC_SEND: if ((QuickStat & (PHY_L_QS_PAUSE | PHY_L_QS_AS_PAUSE)) == (PHY_L_QS_PAUSE | PHY_L_QS_AS_PAUSE)) { - /* Disable PAUSE receive, enable PAUSE transmit */ + /* disable PAUSE receive, enable PAUSE transmit */ pPrt->PFlowCtrlStatus = SK_FLOW_STAT_LOC_SEND; } break; @@ -3309,7 +3695,7 @@ case SK_FLOW_MODE_SYM_OR_REM: if ((QuickStat & (PHY_L_QS_PAUSE | PHY_L_QS_AS_PAUSE)) == PHY_L_QS_AS_PAUSE) { - /* Enable PAUSE receive, disable PAUSE transmit */ + /* enable PAUSE receive, disable PAUSE transmit */ pPrt->PFlowCtrlStatus = SK_FLOW_STAT_REM_SEND; } else if ((QuickStat & PHY_L_QS_PAUSE) != 0) { @@ -3321,7 +3707,7 @@ SK_ERR_LOG(pAC, SK_ERRCL_SW | SK_ERRCL_INIT, SKERR_HWI_E016, SKERR_HWI_E016MSG); } - + return(SK_AND_OK); } /* SkXmAutoNegDoneLone */ @@ -3339,8 +3725,8 @@ * SK_AND_OTHER Other error happened */ static int SkXmAutoNegDoneNat( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { /* todo: National */ @@ -3360,9 +3746,9 @@ * SK_AND_DUP_CAP Duplex capability error happened * SK_AND_OTHER Other error happened */ -int SkMacAutoNegDone( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +int SkMacAutoNegDone( +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; @@ -3374,9 +3760,9 @@ #ifdef GENESIS if (pAC->GIni.GIGenesis) { - + switch (pPrt->PhyType) { - + case SK_PHY_XMAC: Rtv = SkXmAutoNegDoneXmac(pAC, IoC, Port); break; @@ -3396,26 +3782,26 @@ } } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { - + Rtv = SkGmAutoNegDoneMarv(pAC, IoC, Port); } #endif /* YUKON */ - + if (Rtv != SK_AND_OK) { return(Rtv); } SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("AutoNeg done Port %d\n", Port)); - + /* We checked everything and may now enable the link */ pPrt->PAutoNegFail = SK_FALSE; SkMacRxTxEnable(pAC, IoC, Port); - + return(SK_AND_OK); } /* SkMacAutoNegDone */ @@ -3433,7 +3819,7 @@ */ static void SkXmSetRxTxEn( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* IO context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ int Para) /* Parameter to set: MAC or PHY LoopBack, Duplex Mode */ { @@ -3458,7 +3844,7 @@ Word &= ~XM_MMU_GMII_LOOP; break; } - + switch (Para & (SK_PHY_FULLD_ON | SK_PHY_FULLD_OFF)) { case SK_PHY_FULLD_ON: Word |= XM_MMU_GMII_FD; @@ -3467,7 +3853,7 @@ Word &= ~XM_MMU_GMII_FD; break; } - + XM_OUT16(IoC, Port, XM_MMU_CMD, Word | XM_MMU_ENA_RX | XM_MMU_ENA_TX); /* dummy read to ensure writing */ @@ -3490,12 +3876,12 @@ */ static void SkGmSetRxTxEn( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* IO context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ int Para) /* Parameter to set: MAC LoopBack, Duplex Mode */ { SK_U16 Ctrl; - + GM_IN16(IoC, Port, GM_GP_CTRL, &Ctrl); switch (Para & (SK_MAC_LOOPB_ON | SK_MAC_LOOPB_OFF)) { @@ -3515,12 +3901,13 @@ Ctrl &= ~GM_GPCR_DUP_FULL; break; } - - GM_OUT16(IoC, Port, GM_GP_CTRL, (SK_U16)(Ctrl | GM_GPCR_RX_ENA | - GM_GPCR_TX_ENA)); + GM_OUT16(IoC, Port, GM_GP_CTRL, Ctrl | GM_GPCR_RX_ENA | GM_GPCR_TX_ENA); + +#ifdef XXX /* dummy read to ensure writing */ GM_IN16(IoC, Port, GM_GP_CTRL, &Ctrl); +#endif /* XXX */ } /* SkGmSetRxTxEn */ #endif /* YUKON */ @@ -3537,20 +3924,20 @@ */ void SkMacSetRxTxEn( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* IO context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ int Para) { #ifdef GENESIS if (pAC->GIni.GIGenesis) { - + SkXmSetRxTxEn(pAC, IoC, Port, Para); } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { - + SkGmSetRxTxEn(pAC, IoC, Port, Para); } #endif /* YUKON */ @@ -3570,8 +3957,8 @@ * != 0 Error happened */ int SkMacRxTxEnable( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; @@ -3589,9 +3976,9 @@ } if ((pPrt->PLinkMode == SK_LMODE_AUTOHALF || - pPrt->PLinkMode == SK_LMODE_AUTOFULL || - pPrt->PLinkMode == SK_LMODE_AUTOBOTH) && - pPrt->PAutoNegFail) { + pPrt->PLinkMode == SK_LMODE_AUTOFULL || + pPrt->PLinkMode == SK_LMODE_AUTOBOTH) && + pPrt->PAutoNegFail) { /* Auto-negotiation is not done or failed */ return(0); } @@ -3600,9 +3987,9 @@ if (pAC->GIni.GIGenesis) { /* set Duplex Mode and Pause Mode */ SkXmInitDupMd(pAC, IoC, Port); - + SkXmInitPauseMd(pAC, IoC, Port); - + /* * Initialize the Interrupt Mask Register. Default IRQs are... * - Link Asynchronous Event @@ -3618,23 +4005,23 @@ /* add IRQ for Receive FIFO Overflow */ IntMask &= ~XM_IS_RXF_OV; #endif /* DEBUG */ - + if (pPrt->PhyType != SK_PHY_XMAC) { /* disable GP0 interrupt bit */ IntMask |= XM_IS_INP_ASS; } XM_OUT16(IoC, Port, XM_IMSK, IntMask); - + /* get MMU Command Reg. */ XM_IN16(IoC, Port, XM_MMU_CMD, &Reg); - + if (pPrt->PhyType != SK_PHY_XMAC && (pPrt->PLinkModeStatus == SK_LMODE_STAT_FULL || pPrt->PLinkModeStatus == SK_LMODE_STAT_AUTOFULL)) { /* set to Full Duplex */ Reg |= XM_MMU_GMII_FD; } - + switch (pPrt->PhyType) { case SK_PHY_BCOM: /* @@ -3644,7 +4031,7 @@ SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &SWord); SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, (SK_U16)(SWord & ~PHY_B_AC_DIS_PM)); - SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_INT_MASK, + SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_INT_MASK, (SK_U16)PHY_B_DEF_MSK); break; #ifdef OTHER_PHY @@ -3658,12 +4045,12 @@ break; #endif /* OTHER_PHY */ } - + /* enable Rx/Tx */ XM_OUT16(IoC, Port, XM_MMU_CMD, Reg | XM_MMU_ENA_RX | XM_MMU_ENA_TX); } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { /* @@ -3678,30 +4065,30 @@ /* add IRQ for Receive FIFO Overrun */ IntMask |= GM_IS_RX_FF_OR; #endif /* DEBUG */ - - SK_OUT8(IoC, GMAC_IRQ_MSK, (SK_U8)IntMask); - + + SK_OUT8(IoC, MR_ADDR(Port, GMAC_IRQ_MSK), (SK_U8)IntMask); + /* get General Purpose Control */ GM_IN16(IoC, Port, GM_GP_CTRL, &Reg); - + if (pPrt->PLinkModeStatus == SK_LMODE_STAT_FULL || pPrt->PLinkModeStatus == SK_LMODE_STAT_AUTOFULL) { /* set to Full Duplex */ Reg |= GM_GPCR_DUP_FULL; } - + /* enable Rx/Tx */ - GM_OUT16(IoC, Port, GM_GP_CTRL, (SK_U16)(Reg | GM_GPCR_RX_ENA | - GM_GPCR_TX_ENA)); + GM_OUT16(IoC, Port, GM_GP_CTRL, Reg | GM_GPCR_RX_ENA | GM_GPCR_TX_ENA); -#ifndef VCPU - /* Enable all PHY interrupts */ - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_INT_MASK, - (SK_U16)PHY_M_DEF_MSK); -#endif /* VCPU */ +#ifdef XXX + /* dummy read to ensure writing */ + GM_IN16(IoC, Port, GM_GP_CTRL, &Reg); +#endif /* XXX */ } #endif /* YUKON */ - + + pAC->GIni.GP[Port].PState = SK_PRT_RUN; + return(0); } /* SkMacRxTxEnable */ @@ -3717,33 +4104,38 @@ */ void SkMacRxTxDisable( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* IO context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_U16 Word; #ifdef GENESIS if (pAC->GIni.GIGenesis) { - + XM_IN16(IoC, Port, XM_MMU_CMD, &Word); - - XM_OUT16(IoC, Port, XM_MMU_CMD, Word & ~(XM_MMU_ENA_RX | XM_MMU_ENA_TX)); - + + Word &= ~(XM_MMU_ENA_RX | XM_MMU_ENA_TX); + + XM_OUT16(IoC, Port, XM_MMU_CMD, Word); + /* dummy read to ensure writing */ XM_IN16(IoC, Port, XM_MMU_CMD, &Word); } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { - + GM_IN16(IoC, Port, GM_GP_CTRL, &Word); - GM_OUT16(IoC, Port, GM_GP_CTRL, (SK_U16)(Word & ~(GM_GPCR_RX_ENA | - GM_GPCR_TX_ENA))); + Word &= ~(GM_GPCR_RX_ENA | GM_GPCR_TX_ENA); + GM_OUT16(IoC, Port, GM_GP_CTRL, Word); + +#ifdef XXX /* dummy read to ensure writing */ GM_IN16(IoC, Port, GM_GP_CTRL, &Word); +#endif /* XXX */ } #endif /* YUKON */ @@ -3760,7 +4152,7 @@ */ void SkMacIrqDisable( SK_AC *pAC, /* Adapter Context */ -SK_IOC IoC, /* IO context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; @@ -3772,18 +4164,18 @@ #ifdef GENESIS if (pAC->GIni.GIGenesis) { - + /* disable all XMAC IRQs */ - XM_OUT16(IoC, Port, XM_IMSK, 0xffff); - - /* Disable all PHY interrupts */ + XM_OUT16(IoC, Port, XM_IMSK, 0xffff); + + /* disable all PHY interrupts */ switch (pPrt->PhyType) { case SK_PHY_BCOM: /* Make sure that PHY is initialized */ if (pPrt->PState != SK_PRT_RESET) { /* NOT allowed if BCOM is in RESET state */ /* Workaround BCOM Errata (#10523) all BCom */ - /* Disable Power Management if link is down */ + /* disable Power Management if link is down */ SkXmPhyRead(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, &Word); SkXmPhyWrite(pAC, IoC, Port, PHY_BCOM_AUX_CTRL, (SK_U16)(Word | PHY_B_AC_DIS_PM)); @@ -3802,16 +4194,16 @@ } } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { /* disable all GMAC IRQs */ - SK_OUT8(IoC, GMAC_IRQ_MSK, 0); - + SK_OUT8(IoC, MR_ADDR(Port, GMAC_IRQ_MSK), 0); + #ifndef VCPU - /* Disable all PHY interrupts */ + /* disable all PHY interrupts */ SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_INT_MASK, 0); -#endif /* VCPU */ +#endif /* !VCPU */ } #endif /* YUKON */ @@ -3823,29 +4215,72 @@ * * SkXmSendCont() - Enable / Disable Send Continuous Mode * - * Description: enable / disable Send Continuous Mode on XMAC + * Description: enable / disable Send Continuous Mode on XMAC resp. + * Packet Generation on GPHY * * Returns: * nothing */ void SkXmSendCont( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_BOOL Enable) /* Enable / Disable */ { + SK_U16 Reg; + SK_U16 Save; SK_U32 MdReg; - XM_IN32(IoC, Port, XM_MODE, &MdReg); + if (pAC->GIni.GIGenesis) { + XM_IN32(IoC, Port, XM_MODE, &MdReg); - if (Enable) { - MdReg |= XM_MD_TX_CONT; + if (Enable) { + MdReg |= XM_MD_TX_CONT; + } + else { + MdReg &= ~XM_MD_TX_CONT; + } + /* setup Mode Register */ + XM_OUT32(IoC, Port, XM_MODE, MdReg); } else { - MdReg &= ~XM_MD_TX_CONT; + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_EC) { + /* select page 18 */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PAGE_ADDR, 18); + + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PAGE_DATA, &Reg); + + Reg &= ~0x003c; /* clear bits 5..2 */ + + if (Enable) { + /* enable packet generation, 1518 byte length */ + Reg |= (BIT_5S | BIT_3S); + } + + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PAGE_DATA, Reg); + } + else if (pAC->GIni.GIChipId == CHIP_ID_YUKON_XL) { + /* save page register */ + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_EXT_ADR, &Save); + + /* select page 6 to access Packet Generation register */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, 6); + + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_PHY_CTRL, &Reg); + + Reg &= ~0x003f; /* clear bits 5..0 */ + + if (Enable) { + /* enable packet generation, 1518 byte length */ + Reg |= (BIT_3S | BIT_1S); + } + + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PHY_CTRL, Reg); + + /* restore page register */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, Save); + } } - /* setup Mode Register */ - XM_OUT32(IoC, Port, XM_MODE, MdReg); } /* SkXmSendCont */ @@ -3860,8 +4295,8 @@ * nothing */ void SkMacTimeStamp( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_BOOL Enable) /* Enable / Disable */ { @@ -3906,8 +4341,8 @@ * is set true. */ void SkXmAutoNegLipaXmac( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_U16 IStatus) /* Interrupt Status word to analyse */ { @@ -3921,6 +4356,7 @@ SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("AutoNegLipa: AutoNeg detected on Port %d, IStatus=0x%04X\n", Port, IStatus)); + pPrt->PLipaAutoNeg = SK_LIPA_AUTO; } } /* SkXmAutoNegLipaXmac */ @@ -3936,8 +4372,8 @@ * is set true. */ void SkMacAutoNegLipaPhy( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_U16 PhyStat) /* PHY Status word to analyse */ { @@ -3951,6 +4387,7 @@ SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("AutoNegLipa: AutoNeg detected on Port %d, PhyStat=0x%04X\n", Port, PhyStat)); + pPrt->PLipaAutoNeg = SK_LIPA_AUTO; } } /* SkMacAutoNegLipaPhy */ @@ -3965,7 +4402,7 @@ * * Note: * With an external PHY, some interrupt bits are not meaningfull any more: - * - LinkAsyncEvent (bit #14) XM_IS_LNK_AE + * - LinkAsyncEvent (bit #14) XM_IS_LNK_AE * - LinkPartnerReqConfig (bit #10) XM_IS_LIPA_RC * - Page Received (bit #9) XM_IS_RX_PAGE * - NextPageLoadedForXmt (bit #8) XM_IS_TX_PAGE @@ -3977,8 +4414,8 @@ * nothing */ void SkXmIrq( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; @@ -3986,13 +4423,13 @@ SK_U16 IStatus; /* Interrupt status read from the XMAC */ SK_U16 IStatus2; #ifdef SK_SLIM - SK_U64 OverflowStatus; -#endif + SK_U64 OverflowStatus; +#endif pPrt = &pAC->GIni.GP[Port]; - + XM_IN16(IoC, Port, XM_ISRC, &IStatus); - + /* LinkPartner Auto-negable? */ if (pPrt->PhyType == SK_PHY_XMAC) { SkXmAutoNegLipaXmac(pAC, IoC, Port, IStatus); @@ -4003,7 +4440,7 @@ XM_IS_RX_PAGE | XM_IS_TX_PAGE | XM_IS_AND | XM_IS_INP_ASS); } - + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, ("XmacIrq Port %d Isr 0x%04X\n", Port, IStatus)); @@ -4113,40 +4550,40 @@ * nothing */ void SkGmIrq( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; SK_U8 IStatus; /* Interrupt status */ #ifdef SK_SLIM - SK_U64 OverflowStatus; + SK_U64 OverflowStatus; #else SK_EVPARA Para; -#endif +#endif pPrt = &pAC->GIni.GP[Port]; - - SK_IN8(IoC, GMAC_IRQ_SRC, &IStatus); - + + SK_IN8(IoC, MR_ADDR(Port, GMAC_IRQ_SRC), &IStatus); + #ifdef XXX /* LinkPartner Auto-negable? */ SkMacAutoNegLipaPhy(pAC, IoC, Port, IStatus); #endif /* XXX */ - + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_IRQ, - ("GmacIrq Port %d Isr 0x%04X\n", Port, IStatus)); + ("GmacIrq Port %d Isr 0x%02X\n", Port, IStatus)); /* Combined Tx & Rx Counter Overflow SIRQ Event */ if (IStatus & (GM_IS_RX_CO_OV | GM_IS_TX_CO_OV)) { /* these IRQs will be cleared by reading GMACs register */ #ifdef SK_SLIM - SkGmOverflowStatus(pAC, IoC, Port, IStatus, &OverflowStatus); + SkGmOverflowStatus(pAC, IoC, Port, (SK_U16)IStatus, &OverflowStatus); #else Para.Para32[0] = (SK_U32)Port; Para.Para32[1] = (SK_U32)IStatus; SkPnmiEvent(pAC, IoC, SK_PNMI_EVT_SIRQ_OVERFLOW, Para); -#endif +#endif } if (IStatus & GM_IS_RX_FF_OR) { @@ -4185,8 +4622,8 @@ * nothing */ void SkMacIrq( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port) /* Port Index (MAC_1 + n) */ { #ifdef GENESIS @@ -4195,7 +4632,7 @@ SkXmIrq(pAC, IoC, Port); } #endif /* GENESIS */ - + #ifdef YUKON if (pAC->GIni.GIYukon) { /* IRQ from GMAC */ @@ -4222,8 +4659,8 @@ * 1: something went wrong */ int SkXmUpdateStats( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ unsigned int Port) /* Port Index (MAC_1 + n) */ { SK_GEPORT *pPrt; @@ -4245,7 +4682,7 @@ do { XM_IN16(IoC, Port, XM_STAT_CMD, &StatReg); - + if (++WaitIndex > 10) { SK_ERR_LOG(pAC, SK_ERRCL_HW, SKERR_HWI_E021, SKERR_HWI_E021MSG); @@ -4253,7 +4690,7 @@ return(1); } } while ((StatReg & (XM_SC_SNP_TXC | XM_SC_SNP_RXC)) != 0); - + return(0); } /* SkXmUpdateStats */ @@ -4272,19 +4709,19 @@ * 1: something went wrong */ int SkXmMacStatistic( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ unsigned int Port, /* Port Index (MAC_1 + n) */ SK_U16 StatAddr, /* MIB counter base address */ -SK_U32 SK_FAR *pVal) /* ptr to return statistic value */ +SK_U32 SK_FAR *pVal) /* Pointer to return statistic value */ { if ((StatAddr < XM_TXF_OK) || (StatAddr > XM_RXF_MAX_SZ)) { - + SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E022, SKERR_HWI_E022MSG); - + return(1); } - + XM_IN32(IoC, Port, StatAddr, pVal); return(0); @@ -4303,12 +4740,12 @@ * 1: something went wrong */ int SkXmResetCounter( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ unsigned int Port) /* Port Index (MAC_1 + n) */ { XM_OUT16(IoC, Port, XM_STAT_CMD, XM_SC_CLR_RXC | XM_SC_CLR_TXC); - /* Clear two times according to Errata #3 */ + /* Clear two times according to XMAC Errata #3 */ XM_OUT16(IoC, Port, XM_STAT_CMD, XM_SC_CLR_RXC | XM_SC_CLR_TXC); return(0); @@ -4335,11 +4772,11 @@ * 1: something went wrong */ int SkXmOverflowStatus( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ unsigned int Port, /* Port Index (MAC_1 + n) */ -SK_U16 IStatus, /* Interupt Status from MAC */ -SK_U64 SK_FAR *pStatus) /* ptr for return overflow status value */ +SK_U16 IStatus, /* Interrupt Status from MAC */ +SK_U64 SK_FAR *pStatus) /* Pointer for return overflow status value */ { SK_U64 Status; /* Overflow status */ SK_U32 RegVal; @@ -4351,7 +4788,7 @@ XM_IN32(IoC, Port, XM_RX_CNT_EV, &RegVal); Status |= (SK_U64)RegVal << 32; } - + if ((IStatus & XM_IS_TXC_OV) != 0) { XM_IN32(IoC, Port, XM_TX_CNT_EV, &RegVal); @@ -4378,8 +4815,8 @@ * 1: something went wrong */ int SkGmUpdateStats( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ unsigned int Port) /* Port Index (MAC_1 + n) */ { return(0); @@ -4400,24 +4837,27 @@ * 1: something went wrong */ int SkGmMacStatistic( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ unsigned int Port, /* Port Index (MAC_1 + n) */ SK_U16 StatAddr, /* MIB counter base address */ -SK_U32 SK_FAR *pVal) /* ptr to return statistic value */ +SK_U32 SK_FAR *pVal) /* Pointer to return statistic value */ { if ((StatAddr < GM_RXF_UC_OK) || (StatAddr > GM_TXE_FIFO_UR)) { - + SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_HWI_E022, SKERR_HWI_E022MSG); - - SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, + + SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_ERR, ("SkGmMacStat: wrong MIB counter 0x%04X\n", StatAddr)); return(1); } - + GM_IN32(IoC, Port, StatAddr, pVal); + /* dummy read */ + SK_IN16(IoC, B0_RAP, &StatAddr); + return(0); } /* SkGmMacStatistic */ @@ -4434,8 +4874,8 @@ * 1: something went wrong */ int SkGmResetCounter( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ unsigned int Port) /* Port Index (MAC_1 + n) */ { SK_U16 Reg; /* Phy Address Register */ @@ -4446,16 +4886,16 @@ /* set MIB Clear Counter Mode */ GM_OUT16(IoC, Port, GM_PHY_ADDR, Reg | GM_PAR_MIB_CLR); - + /* read all MIB Counters with Clear Mode set */ for (i = 0; i < GM_MIB_CNT_SIZE; i++) { /* the reset is performed only when the lower 16 bits are read */ GM_IN16(IoC, Port, GM_MIB_CNT_BASE + 8*i, &Word); } - + /* clear MIB Clear Counter Mode */ GM_OUT16(IoC, Port, GM_PHY_ADDR, Reg); - + return(0); } /* SkGmResetCounter */ @@ -4469,48 +4909,62 @@ * resulting counter overflow status is written to , whereas the * the following bit coding is used: * 63:56 - unused - * 55:48 - TxRx interrupt register bit7:0 - * 32:47 - Rx interrupt register + * 55:48 - TxRx interrupt register bit 7:0 + * 47:32 - Rx interrupt register * 31:24 - unused - * 23:16 - TxRx interrupt register bit15:8 - * 15:0 - Tx interrupt register + * 23:16 - TxRx interrupt register bit 15:8 + * 15: 0 - Tx interrupt register * * Returns: * 0: success * 1: something went wrong */ int SkGmOverflowStatus( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ unsigned int Port, /* Port Index (MAC_1 + n) */ -SK_U16 IStatus, /* Interupt Status from MAC */ -SK_U64 SK_FAR *pStatus) /* ptr for return overflow status value */ +SK_U16 IStatus, /* Interrupt Status from MAC */ +SK_U64 SK_FAR *pStatus) /* Pointer for return overflow status value */ { - SK_U64 Status; /* Overflow status */ SK_U16 RegVal; +#ifndef SK_SLIM + SK_U64 Status; /* Overflow status */ Status = 0; +#endif /* !SK_SLIM */ if ((IStatus & GM_IS_RX_CO_OV) != 0) { /* this register is self-clearing after read */ GM_IN16(IoC, Port, GM_RX_IRQ_SRC, &RegVal); + +#ifndef SK_SLIM Status |= (SK_U64)RegVal << 32; +#endif /* !SK_SLIM */ } - + if ((IStatus & GM_IS_TX_CO_OV) != 0) { /* this register is self-clearing after read */ GM_IN16(IoC, Port, GM_TX_IRQ_SRC, &RegVal); + +#ifndef SK_SLIM Status |= (SK_U64)RegVal; +#endif /* !SK_SLIM */ } - + /* this register is self-clearing after read */ GM_IN16(IoC, Port, GM_TR_IRQ_SRC, &RegVal); + +#ifndef SK_SLIM /* Rx overflow interrupt register bits (LoByte)*/ Status |= (SK_U64)((SK_U8)RegVal) << 48; /* Tx overflow interrupt register bits (HiByte)*/ Status |= (SK_U64)(RegVal >> 8) << 16; *pStatus = Status; +#endif /* !SK_SLIM */ + + /* dummy read */ + SK_IN16(IoC, B0_RAP, &RegVal); return(0); } /* SkGmOverflowStatus */ @@ -4526,57 +4980,114 @@ * gets the results if 'StartTest' is true * * NOTE: this test is meaningful only when link is down - * + * * Returns: * 0: success * 1: no YUKON copper * 2: test in progress */ int SkGmCableDiagStatus( -SK_AC *pAC, /* adapter context */ -SK_IOC IoC, /* IO context */ +SK_AC *pAC, /* Adapter Context */ +SK_IOC IoC, /* I/O Context */ int Port, /* Port Index (MAC_1 + n) */ SK_BOOL StartTest) /* flag for start / get result */ { int i; + int CableDiagOffs; + int MdiPairs; + SK_BOOL FastEthernet; + SK_BOOL Yukon2; SK_U16 RegVal; SK_GEPORT *pPrt; pPrt = &pAC->GIni.GP[Port]; if (pPrt->PhyType != SK_PHY_MARV_COPPER) { - + return(1); } + Yukon2 = (pAC->GIni.GIChipId == CHIP_ID_YUKON_XL); + + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_FE) { + + CableDiagOffs = PHY_MARV_FE_VCT_TX; + FastEthernet = SK_TRUE; + MdiPairs = 2; + } + else { + CableDiagOffs = Yukon2 ? PHY_MARV_PHY_CTRL : PHY_MARV_CABLE_DIAG; + FastEthernet = SK_FALSE; + MdiPairs = 4; + } + if (StartTest) { + + /* set to RESET to avoid PortCheckUp */ + pPrt->PState = SK_PRT_RESET; + /* only start the cable test */ - if ((pPrt->PhyId1 & PHY_I1_REV_MSK) < 4) { - /* apply TDR workaround from Marvell */ - SkGmPhyWrite(pAC, IoC, Port, 29, 0x001e); - - SkGmPhyWrite(pAC, IoC, Port, 30, 0xcc00); - SkGmPhyWrite(pAC, IoC, Port, 30, 0xc800); - SkGmPhyWrite(pAC, IoC, Port, 30, 0xc400); - SkGmPhyWrite(pAC, IoC, Port, 30, 0xc000); - SkGmPhyWrite(pAC, IoC, Port, 30, 0xc100); + if (!FastEthernet) { + + if ((((pPrt->PhyId1 & PHY_I1_MOD_NUM) >> 4) == 2) && + ((pPrt->PhyId1 & PHY_I1_REV_MSK) < 4)) { + /* apply TDR workaround for model 2, rev. < 4 */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PAGE_ADDR, 0x001e); + + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PAGE_DATA, 0xcc00); + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PAGE_DATA, 0xc800); + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PAGE_DATA, 0xc400); + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PAGE_DATA, 0xc000); + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_PAGE_DATA, 0xc100); + } + +#ifdef YUKON_DBG + if (pAC->GIni.GIChipId == CHIP_ID_YUKON_EC) { + /* set address to 1 for page 1 */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, 1); + + /* disable waiting period */ + SkGmPhyWrite(pAC, IoC, Port, CableDiagOffs, + PHY_M_CABD_DIS_WAIT); + } +#endif + if (Yukon2) { + /* set address to 5 for page 5 */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, 5); + +#ifdef YUKON_DBG + /* disable waiting period */ + SkGmPhyWrite(pAC, IoC, Port, CableDiagOffs + 1, + PHY_M_CABD_DIS_WAIT); +#endif + } + else { + /* set address to 0 for MDI[0] (Page 0) */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, 0); + } } + else { + RegVal = PHY_CT_RESET | PHY_CT_SP100; - /* set address to 0 for MDI[0] */ - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, 0); + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CTRL, RegVal); - /* Read Cable Diagnostic Reg */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CABLE_DIAG, &RegVal); +#ifdef xYUKON_DBG + SkGmPhyRead(pAC, IoC, Port, PHY_MARV_FE_SPEC_2, &RegVal); + /* disable waiting period */ + RegVal |= PHY_M_FESC_DIS_WAIT; + + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_FE_SPEC_2, RegVal); +#endif + } /* start Cable Diagnostic Test */ - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_CABLE_DIAG, - (SK_U16)(RegVal | PHY_M_CABD_ENA_TEST)); - + SkGmPhyWrite(pAC, IoC, Port, CableDiagOffs, PHY_M_CABD_ENA_TEST); + return(0); } - + /* Read Cable Diagnostic Reg */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CABLE_DIAG, &RegVal); + SkGmPhyRead(pAC, IoC, Port, CableDiagOffs, &RegVal); SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_CTRL, ("PHY Cable Diag.=0x%04X\n", RegVal)); @@ -4587,16 +5098,24 @@ } /* get the test results */ - for (i = 0; i < 4; i++) { - /* set address to i for MDI[i] */ - SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, (SK_U16)i); + for (i = 0; i < MdiPairs; i++) { + + if (!FastEthernet && !Yukon2) { + /* set address to i for MDI[i] */ + SkGmPhyWrite(pAC, IoC, Port, PHY_MARV_EXT_ADR, (SK_U16)i); + } /* get Cable Diagnostic values */ - SkGmPhyRead(pAC, IoC, Port, PHY_MARV_CABLE_DIAG, &RegVal); + SkGmPhyRead(pAC, IoC, Port, CableDiagOffs, &RegVal); pPrt->PMdiPairLen[i] = (SK_U8)(RegVal & PHY_M_CABD_DIST_MSK); pPrt->PMdiPairSts[i] = (SK_U8)((RegVal & PHY_M_CABD_STAT_MSK) >> 13); + + if (FastEthernet || Yukon2) { + /* get next register */ + CableDiagOffs++; + } } return(0); @@ -4605,3 +5124,4 @@ #endif /* YUKON */ /* End of file */ + --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/sktimer.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/sktimer.c @@ -2,8 +2,8 @@ * * Name: sktimer.c * Project: Gigabit Ethernet Adapters, Event Scheduler Module - * Version: $Revision: 1.14 $ - * Date: $Date: 2003/09/16 13:46:51 $ + * Version: $Revision: 2.2 $ + * Date: $Date: 2004/05/28 13:44:39 $ * Purpose: High level timer functions. * ******************************************************************************/ @@ -11,7 +11,7 @@ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect GmbH. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2004 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,13 +22,12 @@ * ******************************************************************************/ - /* * Event queue and dispatcher */ #if (defined(DEBUG) || ((!defined(LINT)) && (!defined(SK_SLIM)))) static const char SysKonnectFileId[] = - "@(#) $Id: sktimer.c,v 1.14 2003/09/16 13:46:51 rschmidt Exp $ (C) Marvell."; + "@(#) $Id: sktimer.c,v 2.2 2004/05/28 13:44:39 rschmidt Exp $ (C) Marvell."; #endif #include "h/skdrv1st.h" /* Driver Specific Definitions */ @@ -62,7 +61,7 @@ { switch (Level) { case SK_INIT_DATA: - pAC->Tim.StQueue = NULL; + pAC->Tim.StQueue = 0; break; case SK_INIT_IO: SkHwtInit(pAC, Ioc); @@ -85,22 +84,20 @@ SK_TIMER **ppTimPrev; SK_TIMER *pTm; - /* - * remove timer from queue - */ + /* remove timer from queue */ pTimer->TmActive = SK_FALSE; - + if (pAC->Tim.StQueue == pTimer && !pTimer->TmNext) { SkHwtStop(pAC, Ioc); } - + for (ppTimPrev = &pAC->Tim.StQueue; (pTm = *ppTimPrev); ppTimPrev = &pTm->TmNext ) { - + if (pTm == pTimer) { /* * Timer found in queue - * - dequeue it and + * - dequeue it * - correct delta of the next timer */ *ppTimPrev = pTm->TmNext; @@ -121,7 +118,7 @@ SK_AC *pAC, /* Adapters context */ SK_IOC Ioc, /* IoContext */ SK_TIMER *pTimer, /* Timer Pointer to be started */ -SK_U32 Time, /* Time value */ +SK_U32 Time, /* Time Value (in microsec.) */ SK_U32 Class, /* Event Class for this timer */ SK_U32 Event, /* Event Value for this timer */ SK_EVPARA Para) /* Event Parameter for this timer */ @@ -130,11 +127,6 @@ SK_TIMER *pTm; SK_U32 Delta; - Time /= 16; /* input is uS, clock ticks are 16uS */ - - if (!Time) - Time = 1; - SkTimerStop(pAC, Ioc, pTimer); pTimer->TmClass = Class; @@ -143,31 +135,26 @@ pTimer->TmActive = SK_TRUE; if (!pAC->Tim.StQueue) { - /* First Timer to be started */ + /* first Timer to be started */ pAC->Tim.StQueue = pTimer; - pTimer->TmNext = NULL; + pTimer->TmNext = 0; pTimer->TmDelta = Time; - + SkHwtStart(pAC, Ioc, Time); - + return; } - /* - * timer correction - */ + /* timer correction */ timer_done(pAC, Ioc, 0); - /* - * find position in queue - */ + /* find position in queue */ Delta = 0; for (ppTimPrev = &pAC->Tim.StQueue; (pTm = *ppTimPrev); ppTimPrev = &pTm->TmNext ) { - + if (Delta + pTm->TmDelta > Time) { - /* Position found */ - /* Here the timer needs to be inserted. */ + /* the timer needs to be inserted here */ break; } Delta += pTm->TmDelta; @@ -179,9 +166,7 @@ pTimer->TmDelta = Time - Delta; if (pTm) { - /* There is a next timer - * -> correct its Delta value. - */ + /* there is a next timer: correct its Delta value */ pTm->TmDelta -= pTimer->TmDelta; } @@ -210,7 +195,7 @@ int Done = 0; Delta = SkHwtRead(pAC, Ioc); - + ppLast = &pAC->Tim.StQueue; pTm = pAC->Tim.StQueue; while (pTm && !Done) { @@ -228,13 +213,13 @@ Done = 1; } } - *ppLast = NULL; + *ppLast = 0; /* * pTm points to the first Timer that did not run out. * StQueue points to the first Timer that run out. */ - for ( pTComp = pAC->Tim.StQueue; pTComp; pTComp = pTComp->TmNext) { + for (pTComp = pAC->Tim.StQueue; pTComp; pTComp = pTComp->TmNext) { SkEventQueue(pAC,pTComp->TmClass, pTComp->TmEvent, pTComp->TmPara); } --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skproc.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skproc.c @@ -0,0 +1,477 @@ +/****************************************************************************** + * + * Name: skproc.c + * Project: GEnesis, PCI Gigabit Ethernet Adapter + * Version: $Revision: 1.14.2.4 $ + * Date: $Date: 2005/05/23 13:47:33 $ + * Purpose: Functions to display statictic data + * + ******************************************************************************/ + +/****************************************************************************** + * + * (C)Copyright 1998-2002 SysKonnect GmbH. + * (C)Copyright 2002-2005 Marvell. + * + * Driver for Marvell Yukon/2 chipset and SysKonnect Gigabit Ethernet + * Server Adapters. + * + * Author: Ralph Roesler (rroesler@syskonnect.de) + * Mirko Lindner (mlindner@syskonnect.de) + * + * Address all question to: linux@syskonnect.de + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * The information in this file is provided "AS IS" without warranty. + * + *****************************************************************************/ + +#include +#include + +#include "h/skdrv1st.h" +#include "h/skdrv2nd.h" +#include "h/skversion.h" + +extern struct SK_NET_DEVICE *SkGeRootDev; + +/****************************************************************************** + * + * Local Function Prototypes and Local Variables + * + *****************************************************************************/ + +static int sk_proc_print(void *writePtr, char *format, ...); +static void sk_gen_browse(void *buffer); +static int len; + +static int sk_seq_show(struct seq_file *seq, void *v); +static int sk_proc_open(struct inode *inode, struct file *file); +struct file_operations sk_proc_fops = { + .owner = THIS_MODULE, + .open = sk_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; +struct net_device *currDev = NULL; + +/***************************************************************************** + * + * sk_gen_browse -generic print "summaries" entry + * + * Description: + * This function fills the proc entry with statistic data about + * the ethernet device. + * + * Returns: N/A + * + */ +static void sk_gen_browse( +void *buffer) /* buffer where the statistics will be stored in */ +{ + struct SK_NET_DEVICE *SkgeProcDev = SkGeRootDev; + struct SK_NET_DEVICE *next; + SK_BOOL DisableStatistic = 0; + SK_PNMI_STRUCT_DATA *pPnmiStruct; + SK_PNMI_STAT *pPnmiStat; + unsigned long Flags; + unsigned int Size; + DEV_NET *pNet; + SK_AC *pAC; + char sens_msg[50]; + int card_type; + int MaxSecurityCount = 0; + int t; + int i; + + while (SkgeProcDev) { + MaxSecurityCount++; + if (MaxSecurityCount > 100) { + printk("Max limit for sk_proc_read security counter!\n"); + return; + } + pNet = (DEV_NET*) SkgeProcDev->priv; + pAC = pNet->pAC; + next = pAC->Next; + pPnmiStruct = &pAC->PnmiStruct; + /* NetIndex in GetStruct is now required, zero is only dummy */ + + for (t=pAC->GIni.GIMacsFound; t > 0; t--) { + if ((pAC->GIni.GIMacsFound == 2) && pAC->RlmtNets == 1) + t--; + + spin_lock_irqsave(&pAC->SlowPathLock, Flags); + Size = SK_PNMI_STRUCT_SIZE; + DisableStatistic = 0; + if (pAC->BoardLevel == SK_INIT_DATA) { + SK_MEMCPY(&(pAC->PnmiStruct), &(pAC->PnmiBackup), sizeof(SK_PNMI_STRUCT_DATA)); + if (pAC->DiagModeActive == DIAG_NOTACTIVE) { + pAC->Pnmi.DiagAttached = SK_DIAG_IDLE; + } + } else { + SkPnmiGetStruct(pAC, pAC->IoBase, pPnmiStruct, &Size, t-1); + } + spin_unlock_irqrestore(&pAC->SlowPathLock, Flags); + if (strcmp(pAC->dev[t-1]->name, currDev->name) == 0) { + if (!pAC->GIni.GIYukon32Bit) + card_type = 64; + else + card_type = 32; + + pPnmiStat = &pPnmiStruct->Stat[0]; + len = sk_proc_print(buffer, + "\nDetailed statistic for device %s\n", + pAC->dev[t-1]->name); + len += sk_proc_print(buffer, + "=======================================\n"); + + /* Board statistics */ + len += sk_proc_print(buffer, + "\nBoard statistics\n\n"); + len += sk_proc_print(buffer, + "Card name %s\n", + pAC->DeviceStr); + len += sk_proc_print(buffer, + "Vendor/Device ID %x/%x\n", + pAC->PciDev->vendor, + pAC->PciDev->device); + len += sk_proc_print(buffer, + "Card type (Bit) %d\n", + card_type); + + len += sk_proc_print(buffer, + "Active Port %c\n", + 'A' + pAC->Rlmt.Net[t-1].Port[pAC->Rlmt. + Net[t-1].PrefPort]->PortNumber); + len += sk_proc_print(buffer, + "Preferred Port %c\n", + 'A' + pAC->Rlmt.Net[t-1].Port[pAC->Rlmt. + Net[t-1].PrefPort]->PortNumber); + + if (pAC->DynIrqModInfo.IntModTypeSelect == C_INT_MOD_STATIC) { + len += sk_proc_print(buffer, + "Interrupt Moderation static (%d ints/sec)\n", + pAC->DynIrqModInfo.MaxModIntsPerSec); + } else if (pAC->DynIrqModInfo.IntModTypeSelect == C_INT_MOD_DYNAMIC) { + len += sk_proc_print(buffer, + "Interrupt Moderation dynamic (%d ints/sec)\n", + pAC->DynIrqModInfo.MaxModIntsPerSec); + } else { + len += sk_proc_print(buffer, + "Interrupt Moderation disabled\n"); + } + + if (pAC->GIni.GIPciBus == SK_PEX_BUS) { + len += sk_proc_print(buffer, + "Bus type PCI-Express\n"); + len += sk_proc_print(buffer, + "Bus width (Lanes) %d\n", + pAC->GIni.GIPexWidth); + } else { + if (pAC->GIni.GIPciBus == SK_PCIX_BUS) { + len += sk_proc_print(buffer, + "Bus type PCI-X\n"); + if (pAC->GIni.GIPciMode == PCI_OS_SPD_X133) { + len += sk_proc_print(buffer, + "Bus speed (MHz) 133\n"); + } else if (pAC->GIni.GIPciMode == PCI_OS_SPD_X100) { + len += sk_proc_print(buffer, + "Bus speed (MHz) 100\n"); + } else if (pAC->GIni.GIPciMode == PCI_OS_SPD_X66) { + len += sk_proc_print(buffer, + "Bus speed (MHz) 66\n"); + } else { + len += sk_proc_print(buffer, + "Bus speed (MHz) 33\n"); + } + } else { + len += sk_proc_print(buffer, + "Bus type PCI\n"); + len += sk_proc_print(buffer, + "Bus speed (MHz) %d\n", + pPnmiStruct->BusSpeed); + } + len += sk_proc_print(buffer, + "Bus width (Bit) %d\n", + pPnmiStruct->BusWidth); + } + + len += sk_proc_print(buffer, + "Driver version %s (%s)\n", + VER_STRING, PATCHLEVEL); + len += sk_proc_print(buffer, + "Driver release date %s\n", + pAC->Pnmi.pDriverReleaseDate); + len += sk_proc_print(buffer, + "Hardware revision v%d.%d\n", + (pAC->GIni.GIPciHwRev >> 4) & 0x0F, + pAC->GIni.GIPciHwRev & 0x0F); + + if (!netif_running(pAC->dev[t-1])) { + len += sk_proc_print(buffer, + "\n Device %s is down.\n" + " Therefore no statistics are available.\n" + " After bringing the device up (ifconfig)" + " statistics will\n" + " be displayed.\n", + pAC->dev[t-1]->name); + DisableStatistic = 1; + } + + /* Display only if statistic info available */ + /* Print sensor informations */ + if (!DisableStatistic) { + for (i=0; i < pAC->I2c.MaxSens; i ++) { + /* Check type */ + switch (pAC->I2c.SenTable[i].SenType) { + case 1: + strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc); + strcat(sens_msg, " (C)"); + len += sk_proc_print(buffer, + "%-25s %d.%02d\n", + sens_msg, + pAC->I2c.SenTable[i].SenValue / 10, + pAC->I2c.SenTable[i].SenValue % + 10); + + strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc); + strcat(sens_msg, " (F)"); + len += sk_proc_print(buffer, + "%-25s %d.%02d\n", + sens_msg, + ((((pAC->I2c.SenTable[i].SenValue) + *10)*9)/5 + 3200)/100, + ((((pAC->I2c.SenTable[i].SenValue) + *10)*9)/5 + 3200) % 10); + break; + case 2: + strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc); + strcat(sens_msg, " (V)"); + len += sk_proc_print(buffer, + "%-25s %d.%03d\n", + sens_msg, + pAC->I2c.SenTable[i].SenValue / 1000, + pAC->I2c.SenTable[i].SenValue % 1000); + break; + case 3: + strcpy(sens_msg, pAC->I2c.SenTable[i].SenDesc); + strcat(sens_msg, " (rpm)"); + len += sk_proc_print(buffer, + "%-25s %d\n", + sens_msg, + pAC->I2c.SenTable[i].SenValue); + break; + default: + break; + } + } + + /*Receive statistics */ + len += sk_proc_print(buffer, + "\nReceive statistics\n\n"); + + len += sk_proc_print(buffer, + "Received bytes %Lu\n", + (unsigned long long) pPnmiStat->StatRxOctetsOkCts); + len += sk_proc_print(buffer, + "Received packets %Lu\n", + (unsigned long long) pPnmiStat->StatRxOkCts); +#if 0 + if (pAC->GIni.GP[0].PhyType == SK_PHY_XMAC && + pAC->HWRevision < 12) { + pPnmiStruct->InErrorsCts = pPnmiStruct->InErrorsCts - + pPnmiStat->StatRxShortsCts; + pPnmiStat->StatRxShortsCts = 0; + } +#endif + if (pAC->dev[t-1]->mtu > 1500) + pPnmiStruct->InErrorsCts = pPnmiStruct->InErrorsCts - + pPnmiStat->StatRxTooLongCts; + + len += sk_proc_print(buffer, + "Receive errors %Lu\n", + (unsigned long long) pPnmiStruct->InErrorsCts); + len += sk_proc_print(buffer, + "Receive dropped %Lu\n", + (unsigned long long) pPnmiStruct->RxNoBufCts); + len += sk_proc_print(buffer, + "Received multicast %Lu\n", + (unsigned long long) pPnmiStat->StatRxMulticastOkCts); +#ifdef ADVANCED_STATISTIC_OUTPUT + len += sk_proc_print(buffer, + "Receive error types\n"); + len += sk_proc_print(buffer, + " length %Lu\n", + (unsigned long long) pPnmiStat->StatRxRuntCts); + len += sk_proc_print(buffer, + " buffer overflow %Lu\n", + (unsigned long long) pPnmiStat->StatRxFifoOverflowCts); + len += sk_proc_print(buffer, + " bad crc %Lu\n", + (unsigned long long) pPnmiStat->StatRxFcsCts); + len += sk_proc_print(buffer, + " framing %Lu\n", + (unsigned long long) pPnmiStat->StatRxFramingCts); + len += sk_proc_print(buffer, + " missed frames %Lu\n", + (unsigned long long) pPnmiStat->StatRxMissedCts); + + if (pAC->dev[t-1]->mtu > 1500) + pPnmiStat->StatRxTooLongCts = 0; + + len += sk_proc_print(buffer, + " too long %Lu\n", + (unsigned long long) pPnmiStat->StatRxTooLongCts); + len += sk_proc_print(buffer, + " carrier extension %Lu\n", + (unsigned long long) pPnmiStat->StatRxCextCts); + len += sk_proc_print(buffer, + " too short %Lu\n", + (unsigned long long) pPnmiStat->StatRxShortsCts); + len += sk_proc_print(buffer, + " symbol %Lu\n", + (unsigned long long) pPnmiStat->StatRxSymbolCts); + len += sk_proc_print(buffer, + " LLC MAC size %Lu\n", + (unsigned long long) pPnmiStat->StatRxIRLengthCts); + len += sk_proc_print(buffer, + " carrier event %Lu\n", + (unsigned long long) pPnmiStat->StatRxCarrierCts); + len += sk_proc_print(buffer, + " jabber %Lu\n", + (unsigned long long) pPnmiStat->StatRxJabberCts); +#endif + + /*Transmit statistics */ + len += sk_proc_print(buffer, + "\nTransmit statistics\n\n"); + + len += sk_proc_print(buffer, + "Transmitted bytes %Lu\n", + (unsigned long long) pPnmiStat->StatTxOctetsOkCts); + len += sk_proc_print(buffer, + "Transmitted packets %Lu\n", + (unsigned long long) pPnmiStat->StatTxOkCts); + len += sk_proc_print(buffer, + "Transmit errors %Lu\n", + (unsigned long long) pPnmiStat->StatTxSingleCollisionCts); + len += sk_proc_print(buffer, + "Transmit dropped %Lu\n", + (unsigned long long) pPnmiStruct->TxNoBufCts); + len += sk_proc_print(buffer, + "Transmit collisions %Lu\n", + (unsigned long long) pPnmiStat->StatTxSingleCollisionCts); +#ifdef ADVANCED_STATISTIC_OUTPUT + len += sk_proc_print(buffer, + "Transmit error types\n"); + len += sk_proc_print(buffer, + " excessive collision %ld\n", + pAC->stats.tx_aborted_errors); + len += sk_proc_print(buffer, + " carrier %Lu\n", + (unsigned long long) pPnmiStat->StatTxCarrierCts); + len += sk_proc_print(buffer, + " fifo underrun %Lu\n", + (unsigned long long) pPnmiStat->StatTxFifoUnderrunCts); + len += sk_proc_print(buffer, + " heartbeat %Lu\n", + (unsigned long long) pPnmiStat->StatTxCarrierCts); + len += sk_proc_print(buffer, + " window %ld\n", + pAC->stats.tx_window_errors); +#endif + } /* if (!DisableStatistic) */ + + } /* if (strcmp(pACname, currDeviceName) == 0) */ + } + SkgeProcDev = next; + } +} + +/***************************************************************************** + * + * sk_proc_print - generic line print + * + * Description: + * This function fills the proc entry with statistic data about the + * ethernet device. + * + * Returns: + * the number of bytes written + * + */ +static int sk_proc_print( +void *writePtr, /* the buffer pointer */ +char *format, /* the format of the string */ +...) /* variable list of arguments */ +{ +#define MAX_LEN_SINGLE_LINE 256 + char str[MAX_LEN_SINGLE_LINE]; + va_list a_start; + int lenght = 0; + + struct seq_file *seq = (struct seq_file *) writePtr; + + SK_MEMSET(str, 0, MAX_LEN_SINGLE_LINE); + + va_start(a_start, format); + vsprintf(str, format, a_start); + va_end(a_start); + + lenght = strlen(str); + + seq_printf(seq, str); + return lenght; +} + +/***************************************************************************** + * + * sk_seq_show - show proc information of a particular adapter + * + * Description: + * This function fills the proc entry with statistic data about the + * ethernet device. It invokes the generic sk_gen_browse() to print + * out all items one per one. + * + * Returns: + * the number of bytes written + * + */ +static int sk_seq_show( +struct seq_file *seq, /* the sequence pointer */ +void *v) /* additional pointer */ +{ + void *castedBuffer = (void *) seq; + currDev = seq->private; + sk_gen_browse(castedBuffer); + return 0; +} + +/***************************************************************************** + * + * sk_proc_open - register the show function when proc is open'ed + * + * Description: + * This function is called whenever a sk98lin proc file is queried. + * + * Returns: + * the return value of single_open() + * + */ +static int sk_proc_open( +struct inode *inode, /* the inode of the file */ +struct file *file) /* the file pointer itself */ +{ + return single_open(file, sk_seq_show, PDE(inode)->data); +} + +/******************************************************************************* + * + * End of file + * + ******************************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skdim.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skdim.c @@ -1,17 +1,25 @@ /****************************************************************************** * - * Name: skdim.c - * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.5 $ - * Date: $Date: 2003/11/28 12:55:40 $ - * Purpose: All functions to maintain interrupt moderation + * Name: skdim.c + * Project: GEnesis, PCI Gigabit Ethernet Adapter + * Version: $Revision: 1.5.2.2 $ + * Date: $Date: 2005/05/23 13:47:33 $ + * Purpose: All functions regardig interrupt moderation * ******************************************************************************/ /****************************************************************************** * * (C)Copyright 1998-2002 SysKonnect GmbH. - * (C)Copyright 2002-2003 Marvell. + * (C)Copyright 2002-2005 Marvell. + * + * Driver for Marvell Yukon/2 chipset and SysKonnect Gigabit Ethernet + * Server Adapters. + * + * Author: Ralph Roesler (rroesler@syskonnect.de) + * Mirko Lindner (mlindner@syskonnect.de) + * + * Address all question to: linux@syskonnect.de * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,723 +28,367 @@ * * The information in this file is provided "AS IS" without warranty. * - ******************************************************************************/ + *****************************************************************************/ -/****************************************************************************** - * - * Description: - * - * This module is intended to manage the dynamic interrupt moderation on both - * GEnesis and Yukon adapters. - * - * Include File Hierarchy: - * - * "skdrv1st.h" - * "skdrv2nd.h" - * - ******************************************************************************/ - -#ifndef lint -static const char SysKonnectFileId[] = - "@(#) $Id: skdim.c,v 1.5 2003/11/28 12:55:40 rroesler Exp $ (C) SysKonnect."; -#endif - -#define __SKADDR_C - -#ifdef __cplusplus -#error C++ is not yet supported. -extern "C" { -#endif - -/******************************************************************************* -** -** Includes -** -*******************************************************************************/ - -#ifndef __INC_SKDRV1ST_H #include "h/skdrv1st.h" -#endif - -#ifndef __INC_SKDRV2ND_H #include "h/skdrv2nd.h" -#endif -#include - -/******************************************************************************* -** -** Defines -** -*******************************************************************************/ - -/******************************************************************************* -** -** Typedefs -** -*******************************************************************************/ +/****************************************************************************** + * + * Local Function Prototypes + * + *****************************************************************************/ -/******************************************************************************* -** -** Local function prototypes -** -*******************************************************************************/ - -static unsigned int GetCurrentSystemLoad(SK_AC *pAC); -static SK_U64 GetIsrCalls(SK_AC *pAC); -static SK_BOOL IsIntModEnabled(SK_AC *pAC); -static void SetCurrIntCtr(SK_AC *pAC); -static void EnableIntMod(SK_AC *pAC); -static void DisableIntMod(SK_AC *pAC); -static void ResizeDimTimerDuration(SK_AC *pAC); -static void DisplaySelectedModerationType(SK_AC *pAC); -static void DisplaySelectedModerationMask(SK_AC *pAC); -static void DisplayDescrRatio(SK_AC *pAC); +static SK_U64 getIsrCalls(SK_AC *pAC); +static SK_BOOL isIntModEnabled(SK_AC *pAC); +static void setCurrIntCtr(SK_AC *pAC); +static void enableIntMod(SK_AC *pAC); +static void disableIntMod(SK_AC *pAC); -/******************************************************************************* -** -** Global variables -** -*******************************************************************************/ +#define M_DIMINFO pAC->DynIrqModInfo -/******************************************************************************* -** -** Local variables -** -*******************************************************************************/ +/****************************************************************************** + * + * Global Functions + * + *****************************************************************************/ -/******************************************************************************* -** -** Global functions -** -*******************************************************************************/ +/***************************************************************************** + * + * SkDimModerate - Moderates the IRQs depending on the current needs + * + * Description: + * Moderation of IRQs depends on the number of occurred IRQs with + * respect to the previous moderation cycle. + * + * Returns: N/A + * + */ +void SkDimModerate( +SK_AC *pAC) /* pointer to adapter control context */ +{ + SK_U64 IsrCalls = getIsrCalls(pAC); + + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG,("==> SkDimModerate\n")); + + if (M_DIMINFO.IntModTypeSelect == C_INT_MOD_DYNAMIC) { + if (isIntModEnabled(pAC)) { + if (IsrCalls < M_DIMINFO.MaxModIntsPerSecLowerLimit) { + disableIntMod(pAC); + } + } else { + if (IsrCalls > M_DIMINFO.MaxModIntsPerSecUpperLimit) { + enableIntMod(pAC); + } + } + } + setCurrIntCtr(pAC); -/******************************************************************************* -** Function : SkDimModerate -** Description : Called in every ISR to check if moderation is to be applied -** or not for the current number of interrupts -** Programmer : Ralph Roesler -** Last Modified: 22-mar-03 -** Returns : void (!) -** Notes : - -*******************************************************************************/ - -void -SkDimModerate(SK_AC *pAC) { - unsigned int CurrSysLoad = 0; /* expressed in percent */ - unsigned int LoadIncrease = 0; /* expressed in percent */ - SK_U64 ThresholdInts = 0; - SK_U64 IsrCallsPerSec = 0; + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG,("<== SkDimModerate\n")); +} -#define M_DIMINFO pAC->DynIrqModInfo +/***************************************************************************** + * + * SkDimStartModerationTimer - Starts the moderation timer + * + * Description: + * Dynamic interrupt moderation is regularly checked using the + * so-called moderation timer. This timer is started with this function. + * + * Returns: N/A + */ +void SkDimStartModerationTimer( +SK_AC *pAC) /* pointer to adapter control context */ +{ + SK_EVPARA EventParam; /* Event struct for timer event */ + + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG, + ("==> SkDimStartModerationTimer\n")); - if (!IsIntModEnabled(pAC)) { - if (M_DIMINFO.IntModTypeSelect == C_INT_MOD_DYNAMIC) { - CurrSysLoad = GetCurrentSystemLoad(pAC); - if (CurrSysLoad > 75) { - /* - ** More than 75% total system load! Enable the moderation - ** to shield the system against too many interrupts. - */ - EnableIntMod(pAC); - } else if (CurrSysLoad > M_DIMINFO.PrevSysLoad) { - LoadIncrease = (CurrSysLoad - M_DIMINFO.PrevSysLoad); - if (LoadIncrease > ((M_DIMINFO.PrevSysLoad * - C_INT_MOD_ENABLE_PERCENTAGE) / 100)) { - if (CurrSysLoad > 10) { - /* - ** More than 50% increase with respect to the - ** previous load of the system. Most likely this - ** is due to our ISR-proc... - */ - EnableIntMod(pAC); - } - } - } else { - /* - ** Neither too much system load at all nor too much increase - ** with respect to the previous system load. Hence, we can leave - ** the ISR-handling like it is without enabling moderation. - */ - } - M_DIMINFO.PrevSysLoad = CurrSysLoad; - } - } else { - if (M_DIMINFO.IntModTypeSelect == C_INT_MOD_DYNAMIC) { - ThresholdInts = ((M_DIMINFO.MaxModIntsPerSec * - C_INT_MOD_DISABLE_PERCENTAGE) / 100); - IsrCallsPerSec = GetIsrCalls(pAC); - if (IsrCallsPerSec <= ThresholdInts) { - /* - ** The number of interrupts within the last second is - ** lower than the disable_percentage of the desried - ** maxrate. Therefore we can disable the moderation. - */ - DisableIntMod(pAC); - M_DIMINFO.MaxModIntsPerSec = - (M_DIMINFO.MaxModIntsPerSecUpperLimit + - M_DIMINFO.MaxModIntsPerSecLowerLimit) / 2; - } else { - /* - ** The number of interrupts per sec is the same as expected. - ** Evalulate the descriptor-ratio. If it has changed, a resize - ** in the moderation timer might be useful - */ - if (M_DIMINFO.AutoSizing) { - ResizeDimTimerDuration(pAC); - } - } - } - } - - /* - ** Some information to the log... - */ - if (M_DIMINFO.DisplayStats) { - DisplaySelectedModerationType(pAC); - DisplaySelectedModerationMask(pAC); - DisplayDescrRatio(pAC); - } + if (M_DIMINFO.IntModTypeSelect == C_INT_MOD_DYNAMIC) { + SK_MEMSET((char *) &EventParam, 0, sizeof(EventParam)); + EventParam.Para32[0] = SK_DRV_MODERATION_TIMER; + SkTimerStart(pAC, pAC->IoBase, + &pAC->DynIrqModInfo.ModTimer, + pAC->DynIrqModInfo.DynIrqModSampleInterval * 1000000, + SKGE_DRV, SK_DRV_TIMER, EventParam); + } - M_DIMINFO.NbrProcessedDescr = 0; - SetCurrIntCtr(pAC); + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG, + ("<== SkDimStartModerationTimer\n")); } -/******************************************************************************* -** Function : SkDimStartModerationTimer -** Description : Starts the audit-timer for the dynamic interrupt moderation -** Programmer : Ralph Roesler -** Last Modified: 22-mar-03 -** Returns : void (!) -** Notes : - -*******************************************************************************/ - -void -SkDimStartModerationTimer(SK_AC *pAC) { - SK_EVPARA EventParam; /* Event struct for timer event */ - - SK_MEMSET((char *) &EventParam, 0, sizeof(EventParam)); - EventParam.Para32[0] = SK_DRV_MODERATION_TIMER; - SkTimerStart(pAC, pAC->IoBase, &pAC->DynIrqModInfo.ModTimer, - SK_DRV_MODERATION_TIMER_LENGTH, - SKGE_DRV, SK_DRV_TIMER, EventParam); -} +/***************************************************************************** + * + * SkDimEnableModerationIfNeeded - Enables or disables any moderationtype + * + * Description: + * This function effectively initializes the IRQ moderation of a network + * adapter. Depending on the configuration, this might be either static + * or dynamic. If no moderation is configured, this function will do + * nothing. + * + * Returns: N/A + */ +void SkDimEnableModerationIfNeeded( +SK_AC *pAC) /* pointer to adapter control context */ +{ + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG, + ("==> SkDimEnableModerationIfNeeded\n")); + + if (M_DIMINFO.IntModTypeSelect != C_INT_MOD_NONE) { + if (M_DIMINFO.IntModTypeSelect == C_INT_MOD_STATIC) { + enableIntMod(pAC); + } else { /* must be C_INT_MOD_DYNAMIC */ + SkDimStartModerationTimer(pAC); + } + } -/******************************************************************************* -** Function : SkDimEnableModerationIfNeeded -** Description : Either enables or disables moderation -** Programmer : Ralph Roesler -** Last Modified: 22-mar-03 -** Returns : void (!) -** Notes : This function is called when a particular adapter is opened -** There is no Disable function, because when all interrupts -** might be disable, the moderation timer has no meaning at all -******************************************************************************/ - -void -SkDimEnableModerationIfNeeded(SK_AC *pAC) { - - if (M_DIMINFO.IntModTypeSelect == C_INT_MOD_STATIC) { - EnableIntMod(pAC); /* notification print in this function */ - } else if (M_DIMINFO.IntModTypeSelect == C_INT_MOD_DYNAMIC) { - SkDimStartModerationTimer(pAC); - if (M_DIMINFO.DisplayStats) { - printk("Dynamic moderation has been enabled\n"); - } - } else { - if (M_DIMINFO.DisplayStats) { - printk("No moderation has been enabled\n"); - } - } + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG, + ("<== SkDimEnableModerationIfNeeded\n")); } -/******************************************************************************* -** Function : SkDimDisplayModerationSettings -** Description : Displays the current settings regaring interrupt moderation -** Programmer : Ralph Roesler -** Last Modified: 22-mar-03 -** Returns : void (!) -** Notes : - -*******************************************************************************/ - -void -SkDimDisplayModerationSettings(SK_AC *pAC) { - DisplaySelectedModerationType(pAC); - DisplaySelectedModerationMask(pAC); -} +/***************************************************************************** + * + * SkDimDisableModeration - disables moderation if it is enabled + * + * Description: + * Disabling of the moderation requires that is enabled already. + * + * Returns: N/A + */ +void SkDimDisableModeration( +SK_AC *pAC, /* pointer to adapter control context */ +int CurrentModeration) /* type of current moderation */ +{ + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG, + ("==> SkDimDisableModeration\n")); + + if (M_DIMINFO.IntModTypeSelect != C_INT_MOD_NONE) { + if (CurrentModeration == C_INT_MOD_STATIC) { + disableIntMod(pAC); + } else { /* must be C_INT_MOD_DYNAMIC */ + SkTimerStop(pAC, pAC->IoBase, &M_DIMINFO.ModTimer); + disableIntMod(pAC); + } + } -/******************************************************************************* -** -** Local functions -** -*******************************************************************************/ + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG, + ("<== SkDimDisableModeration\n")); +} -/******************************************************************************* -** Function : GetCurrentSystemLoad -** Description : Retrieves the current system load of the system. This load -** is evaluated for all processors within the system. -** Programmer : Ralph Roesler -** Last Modified: 22-mar-03 -** Returns : unsigned int: load expressed in percentage -** Notes : The possible range being returned is from 0 up to 100. -** Whereas 0 means 'no load at all' and 100 'system fully loaded' -** It is impossible to determine what actually causes the system -** to be in 100%, but maybe that is due to too much interrupts. -*******************************************************************************/ - -static unsigned int -GetCurrentSystemLoad(SK_AC *pAC) { - unsigned long jif = jiffies; - unsigned int UserTime = 0; - unsigned int SystemTime = 0; - unsigned int NiceTime = 0; - unsigned int IdleTime = 0; - unsigned int TotalTime = 0; - unsigned int UsedTime = 0; - unsigned int SystemLoad = 0; +/****************************************************************************** + * + * Local Functions + * + *****************************************************************************/ - /* unsigned int NbrCpu = 0; */ +/***************************************************************************** + * + * getIsrCalls - evaluate the number of IRQs handled in mod interval + * + * Description: + * Depending on the selected moderation mask, this function will return + * the number of interrupts handled in the previous moderation interval. + * This evaluated number is based on the current number of interrupts + * stored in PNMI-context and the previous stored interrupts. + * + * Returns: + * the number of IRQs handled + */ +static SK_U64 getIsrCalls( +SK_AC *pAC) /* pointer to adapter control context */ +{ + SK_U64 RxPort0IntDiff = 0, RxPort1IntDiff = 0; + SK_U64 TxPort0IntDiff = 0, TxPort1IntDiff = 0; + SK_U64 StatusPort0IntDiff = 0, StatusPort1IntDiff = 0; + + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG,("==>getIsrCalls\n")); + + if (!CHIP_ID_YUKON_2(pAC)) { + if ((M_DIMINFO.MaskIrqModeration == IRQ_MASK_TX_ONLY) || + (M_DIMINFO.MaskIrqModeration == IRQ_MASK_SP_TX)) { + if (pAC->GIni.GIMacsFound == 2) { + TxPort1IntDiff = + pAC->Pnmi.Port[1].TxIntrCts - + M_DIMINFO.PrevPort1TxIntrCts; + } + TxPort0IntDiff = pAC->Pnmi.Port[0].TxIntrCts - + M_DIMINFO.PrevPort0TxIntrCts; + } else if ((M_DIMINFO.MaskIrqModeration == IRQ_MASK_RX_ONLY) || + (M_DIMINFO.MaskIrqModeration == IRQ_MASK_SP_RX)) { + if (pAC->GIni.GIMacsFound == 2) { + RxPort1IntDiff = + pAC->Pnmi.Port[1].RxIntrCts - + M_DIMINFO.PrevPort1RxIntrCts; + } + RxPort0IntDiff = pAC->Pnmi.Port[0].RxIntrCts - + M_DIMINFO.PrevPort0RxIntrCts; + } else { + if (pAC->GIni.GIMacsFound == 2) { + RxPort1IntDiff = + pAC->Pnmi.Port[1].RxIntrCts - + M_DIMINFO.PrevPort1RxIntrCts; + TxPort1IntDiff = + pAC->Pnmi.Port[1].TxIntrCts - + M_DIMINFO.PrevPort1TxIntrCts; + } + RxPort0IntDiff = pAC->Pnmi.Port[0].RxIntrCts - + M_DIMINFO.PrevPort0RxIntrCts; + TxPort0IntDiff = pAC->Pnmi.Port[0].TxIntrCts - + M_DIMINFO.PrevPort0TxIntrCts; + } + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG, + ("==>getIsrCalls (!CHIP_ID_YUKON_2)\n")); + return (RxPort0IntDiff + RxPort1IntDiff + + TxPort0IntDiff + TxPort1IntDiff); + } /* - ** The following lines have been commented out, because - ** from kernel 2.5.44 onwards, the kernel-owned structure - ** - ** struct kernel_stat kstat - ** - ** is not marked as an exported symbol in the file + ** We have a Yukon2 compliant chipset if we come up to here ** - ** kernel/ksyms.c - ** - ** As a consequence, using this driver as KLM is not possible - ** and any access of the structure kernel_stat via the - ** dedicated macros kstat_cpu(i).cpustat.xxx is to be avoided. - ** - ** The kstat-information might be added again in future - ** versions of the 2.5.xx kernel, but for the time being, - ** number of interrupts will serve as indication how much - ** load we currently have... - ** - ** for (NbrCpu = 0; NbrCpu < num_online_cpus(); NbrCpu++) { - ** UserTime = UserTime + kstat_cpu(NbrCpu).cpustat.user; - ** NiceTime = NiceTime + kstat_cpu(NbrCpu).cpustat.nice; - ** SystemTime = SystemTime + kstat_cpu(NbrCpu).cpustat.system; - ** } + if (pAC->GIni.GIMacsFound == 2) { + StatusPort1IntDiff = pAC->Pnmi.Port[1].StatusLeIntrCts - + M_DIMINFO.PrevPort1StatusIntrCts; + } + StatusPort0IntDiff = pAC->Pnmi.Port[0].StatusLeIntrCts - + M_DIMINFO.PrevPort0StatusIntrCts; */ - SK_U64 ThresholdInts = 0; - SK_U64 IsrCallsPerSec = 0; - - ThresholdInts = ((M_DIMINFO.MaxModIntsPerSec * - C_INT_MOD_ENABLE_PERCENTAGE) + 100); - IsrCallsPerSec = GetIsrCalls(pAC); - if (IsrCallsPerSec >= ThresholdInts) { - /* - ** We do not know how much the real CPU-load is! - ** Return 80% as a default in order to activate DIM - */ - SystemLoad = 80; - return (SystemLoad); - } - - UsedTime = UserTime + NiceTime + SystemTime; - - IdleTime = jif * num_online_cpus() - UsedTime; - TotalTime = UsedTime + IdleTime; - - SystemLoad = ( 100 * (UsedTime - M_DIMINFO.PrevUsedTime) ) / - (TotalTime - M_DIMINFO.PrevTotalTime); + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG, + ("==>getIsrCalls (CHIP_ID_YUKON_2)\n")); + return (StatusPort0IntDiff + StatusPort1IntDiff); +} - if (M_DIMINFO.DisplayStats) { - printk("Current system load is: %u\n", SystemLoad); +/***************************************************************************** + * + * setCurrIntCtr - stores the current number of interrupts + * + * Description: + * Stores the current number of occurred interrupts in the adapter + * context. This is needed to evaluate the umber of interrupts within + * the moderation interval. + * + * Returns: N/A + * + */ +static void setCurrIntCtr( +SK_AC *pAC) /* pointer to adapter control context */ +{ + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG,("==>setCurrIntCtr\n")); + + if (!CHIP_ID_YUKON_2(pAC)) { + if (pAC->GIni.GIMacsFound == 2) { + M_DIMINFO.PrevPort1RxIntrCts = pAC->Pnmi.Port[1].RxIntrCts; + M_DIMINFO.PrevPort1TxIntrCts = pAC->Pnmi.Port[1].TxIntrCts; + } + M_DIMINFO.PrevPort0RxIntrCts = pAC->Pnmi.Port[0].RxIntrCts; + M_DIMINFO.PrevPort0TxIntrCts = pAC->Pnmi.Port[0].TxIntrCts; + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG, + ("<== setCurrIntCtr (!CHIP_ID_YUKON_2)\n")); + return; } - M_DIMINFO.PrevTotalTime = TotalTime; - M_DIMINFO.PrevUsedTime = UsedTime; - - return (SystemLoad); + /* + ** We have a Yukon2 compliant chipset if we come up to here + ** + if (pAC->GIni.GIMacsFound == 2) { + M_DIMINFO.PrevPort1StatusIntrCts = pAC->Pnmi.Port[1].StatusLeIntrCts; + } + M_DIMINFO.PrevPort0StatusIntrCts = pAC->Pnmi.Port[0].StatusLeIntrCts; + */ + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG, + ("<== setCurrIntCtr (CHIP_ID_YUKON_2)\n")); } -/******************************************************************************* -** Function : GetIsrCalls -** Description : Depending on the selected moderation mask, this function will -** return the number of interrupts handled in the previous time- -** frame. This evaluated number is based on the current number -** of interrupts stored in PNMI-context and the previous stored -** interrupts. -** Programmer : Ralph Roesler -** Last Modified: 23-mar-03 -** Returns : int: the number of interrupts being executed in the last -** timeframe -** Notes : It makes only sense to call this function, when dynamic -** interrupt moderation is applied -*******************************************************************************/ - -static SK_U64 -GetIsrCalls(SK_AC *pAC) { - SK_U64 RxPort0IntDiff = 0; - SK_U64 RxPort1IntDiff = 0; - SK_U64 TxPort0IntDiff = 0; - SK_U64 TxPort1IntDiff = 0; - - if (pAC->DynIrqModInfo.MaskIrqModeration == IRQ_MASK_TX_ONLY) { - if (pAC->GIni.GIMacsFound == 2) { - TxPort1IntDiff = pAC->Pnmi.Port[1].TxIntrCts - - pAC->DynIrqModInfo.PrevPort1TxIntrCts; - } - TxPort0IntDiff = pAC->Pnmi.Port[0].TxIntrCts - - pAC->DynIrqModInfo.PrevPort0TxIntrCts; - } else if (pAC->DynIrqModInfo.MaskIrqModeration == IRQ_MASK_RX_ONLY) { - if (pAC->GIni.GIMacsFound == 2) { - RxPort1IntDiff = pAC->Pnmi.Port[1].RxIntrCts - - pAC->DynIrqModInfo.PrevPort1RxIntrCts; - } - RxPort0IntDiff = pAC->Pnmi.Port[0].RxIntrCts - - pAC->DynIrqModInfo.PrevPort0RxIntrCts; - } else { - if (pAC->GIni.GIMacsFound == 2) { - RxPort1IntDiff = pAC->Pnmi.Port[1].RxIntrCts - - pAC->DynIrqModInfo.PrevPort1RxIntrCts; - TxPort1IntDiff = pAC->Pnmi.Port[1].TxIntrCts - - pAC->DynIrqModInfo.PrevPort1TxIntrCts; - } - RxPort0IntDiff = pAC->Pnmi.Port[0].RxIntrCts - - pAC->DynIrqModInfo.PrevPort0RxIntrCts; - TxPort0IntDiff = pAC->Pnmi.Port[0].TxIntrCts - - pAC->DynIrqModInfo.PrevPort0TxIntrCts; - } - - return (RxPort0IntDiff + RxPort1IntDiff + TxPort0IntDiff + TxPort1IntDiff); +/***************************************************************************** + * + * isIntModEnabled - returns the current state of interrupt moderation + * + * Description: + * This function retrieves the current value of the interrupt moderation + * command register. Its content determines whether any moderation is + * running or not. + * + * Returns: + * SK_TRUE : IRQ moderation is currently active + * SK_FALSE: No IRQ moderation is active + */ +static SK_BOOL isIntModEnabled( +SK_AC *pAC) /* pointer to adapter control context */ +{ + unsigned long CtrCmd; + + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG,("==>isIntModEnabled\n")); + + SK_IN32(pAC->IoBase, B2_IRQM_CTRL, &CtrCmd); + if ((CtrCmd & TIM_START) == TIM_START) { + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG, + ("<== isIntModEnabled (SK_TRUE)\n")); + return SK_TRUE; + } + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG, + ("<== isIntModEnabled (SK_FALSE)\n")); + return SK_FALSE; } -/******************************************************************************* -** Function : GetRxCalls -** Description : This function will return the number of times a receive inter- -** rupt was processed. This is needed to evaluate any resizing -** factor. -** Programmer : Ralph Roesler -** Last Modified: 23-mar-03 -** Returns : SK_U64: the number of RX-ints being processed -** Notes : It makes only sense to call this function, when dynamic -** interrupt moderation is applied -*******************************************************************************/ - -static SK_U64 -GetRxCalls(SK_AC *pAC) { - SK_U64 RxPort0IntDiff = 0; - SK_U64 RxPort1IntDiff = 0; - - if (pAC->GIni.GIMacsFound == 2) { - RxPort1IntDiff = pAC->Pnmi.Port[1].RxIntrCts - - pAC->DynIrqModInfo.PrevPort1RxIntrCts; - } - RxPort0IntDiff = pAC->Pnmi.Port[0].RxIntrCts - - pAC->DynIrqModInfo.PrevPort0RxIntrCts; - - return (RxPort0IntDiff + RxPort1IntDiff); -} +/***************************************************************************** + * + * enableIntMod - enables the interrupt moderation + * + * Description: + * Enabling the interrupt moderation is done by putting the desired + * moderation interval in the B2_IRQM_INI register, specifying the + * desired maks in the B2_IRQM_MSK register and finally starting the + * IRQ moderation timer using the B2_IRQM_CTRL register. + * + * Returns: N/A + * + */ +static void enableIntMod( +SK_AC *pAC) /* pointer to adapter control context */ +{ + unsigned long ModBase; + + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG,("==> enableIntMod\n")); + + if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) { + ModBase = C_CLK_FREQ_GENESIS / M_DIMINFO.MaxModIntsPerSec; + } else if (pAC->GIni.GIChipId == CHIP_ID_YUKON_EC) { + ModBase = C_CLK_FREQ_YUKON_EC / M_DIMINFO.MaxModIntsPerSec; + } else { + ModBase = C_CLK_FREQ_YUKON / M_DIMINFO.MaxModIntsPerSec; + } -/******************************************************************************* -** Function : SetCurrIntCtr -** Description : Will store the current number orf occured interrupts in the -** adapter context. This is needed to evaluated the number of -** interrupts within a current timeframe. -** Programmer : Ralph Roesler -** Last Modified: 23-mar-03 -** Returns : void (!) -** Notes : - -*******************************************************************************/ - -static void -SetCurrIntCtr(SK_AC *pAC) { - if (pAC->GIni.GIMacsFound == 2) { - pAC->DynIrqModInfo.PrevPort1RxIntrCts = pAC->Pnmi.Port[1].RxIntrCts; - pAC->DynIrqModInfo.PrevPort1TxIntrCts = pAC->Pnmi.Port[1].TxIntrCts; - } - pAC->DynIrqModInfo.PrevPort0RxIntrCts = pAC->Pnmi.Port[0].RxIntrCts; - pAC->DynIrqModInfo.PrevPort0TxIntrCts = pAC->Pnmi.Port[0].TxIntrCts; -} + SK_OUT32(pAC->IoBase, B2_IRQM_INI, ModBase); + SK_OUT32(pAC->IoBase, B2_IRQM_MSK, M_DIMINFO.MaskIrqModeration); + SK_OUT32(pAC->IoBase, B2_IRQM_CTRL, TIM_START); -/******************************************************************************* -** Function : IsIntModEnabled() -** Description : Retrieves the current value of the interrupts moderation -** command register. Its content determines whether any -** moderation is running or not. -** Programmer : Ralph Roesler -** Last Modified: 23-mar-03 -** Returns : SK_TRUE : if mod timer running -** SK_FALSE : if no moderation is being performed -** Notes : - -*******************************************************************************/ - -static SK_BOOL -IsIntModEnabled(SK_AC *pAC) { - unsigned long CtrCmd; - - SK_IN32(pAC->IoBase, B2_IRQM_CTRL, &CtrCmd); - if ((CtrCmd & TIM_START) == TIM_START) { - return SK_TRUE; - } else { - return SK_FALSE; - } + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG,("<== enableIntMod\n")); } -/******************************************************************************* -** Function : EnableIntMod() -** Description : Enables the interrupt moderation using the values stored in -** in the pAC->DynIntMod data structure -** Programmer : Ralph Roesler -** Last Modified: 22-mar-03 -** Returns : - -** Notes : - -*******************************************************************************/ - -static void -EnableIntMod(SK_AC *pAC) { - unsigned long ModBase; - - if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) { - ModBase = C_CLK_FREQ_GENESIS / pAC->DynIrqModInfo.MaxModIntsPerSec; - } else { - ModBase = C_CLK_FREQ_YUKON / pAC->DynIrqModInfo.MaxModIntsPerSec; - } - - SK_OUT32(pAC->IoBase, B2_IRQM_INI, ModBase); - SK_OUT32(pAC->IoBase, B2_IRQM_MSK, pAC->DynIrqModInfo.MaskIrqModeration); - SK_OUT32(pAC->IoBase, B2_IRQM_CTRL, TIM_START); - if (M_DIMINFO.DisplayStats) { - printk("Enabled interrupt moderation (%i ints/sec)\n", - M_DIMINFO.MaxModIntsPerSec); - } -} +/***************************************************************************** + * + * disableIntMod - disables the interrupt moderation + * + * Description: + * Disabling the interrupt moderation is done by stopping the + * IRQ moderation timer using the B2_IRQM_CTRL register. + * + * Returns: N/A + * + */ +static void disableIntMod( +SK_AC *pAC) /* pointer to adapter control context */ +{ + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG,("==> disableIntMod\n")); -/******************************************************************************* -** Function : DisableIntMod() -** Description : Disbles the interrupt moderation independent of what inter- -** rupts are running or not -** Programmer : Ralph Roesler -** Last Modified: 23-mar-03 -** Returns : - -** Notes : - -*******************************************************************************/ - -static void -DisableIntMod(SK_AC *pAC) { - - SK_OUT32(pAC->IoBase, B2_IRQM_CTRL, TIM_STOP); - if (M_DIMINFO.DisplayStats) { - printk("Disabled interrupt moderation\n"); - } -} + SK_OUT32(pAC->IoBase, B2_IRQM_CTRL, TIM_STOP); -/******************************************************************************* -** Function : ResizeDimTimerDuration(); -** Description : Checks the current used descriptor ratio and resizes the -** duration timer (longer/smaller) if possible. -** Programmer : Ralph Roesler -** Last Modified: 23-mar-03 -** Returns : - -** Notes : There are both maximum and minimum timer duration value. -** This function assumes that interrupt moderation is already -** enabled! -*******************************************************************************/ - -static void -ResizeDimTimerDuration(SK_AC *pAC) { - SK_BOOL IncreaseTimerDuration; - int TotalMaxNbrDescr; - int UsedDescrRatio; - int RatioDiffAbs; - int RatioDiffRel; - int NewMaxModIntsPerSec; - int ModAdjValue; - long ModBase; - - /* - ** Check first if we are allowed to perform any modification - */ - if (IsIntModEnabled(pAC)) { - if (M_DIMINFO.IntModTypeSelect != C_INT_MOD_DYNAMIC) { - return; - } else { - if (M_DIMINFO.ModJustEnabled) { - M_DIMINFO.ModJustEnabled = SK_FALSE; - return; - } - } - } - - /* - ** If we got until here, we have to evaluate the amount of the - ** descriptor ratio change... - */ - TotalMaxNbrDescr = pAC->RxDescrPerRing * GetRxCalls(pAC); - UsedDescrRatio = (M_DIMINFO.NbrProcessedDescr * 100) / TotalMaxNbrDescr; - - if (UsedDescrRatio > M_DIMINFO.PrevUsedDescrRatio) { - RatioDiffAbs = (UsedDescrRatio - M_DIMINFO.PrevUsedDescrRatio); - RatioDiffRel = (RatioDiffAbs * 100) / UsedDescrRatio; - M_DIMINFO.PrevUsedDescrRatio = UsedDescrRatio; - IncreaseTimerDuration = SK_FALSE; /* in other words: DECREASE */ - } else if (UsedDescrRatio < M_DIMINFO.PrevUsedDescrRatio) { - RatioDiffAbs = (M_DIMINFO.PrevUsedDescrRatio - UsedDescrRatio); - RatioDiffRel = (RatioDiffAbs * 100) / M_DIMINFO.PrevUsedDescrRatio; - M_DIMINFO.PrevUsedDescrRatio = UsedDescrRatio; - IncreaseTimerDuration = SK_TRUE; /* in other words: INCREASE */ - } else { - RatioDiffAbs = (M_DIMINFO.PrevUsedDescrRatio - UsedDescrRatio); - RatioDiffRel = (RatioDiffAbs * 100) / M_DIMINFO.PrevUsedDescrRatio; - M_DIMINFO.PrevUsedDescrRatio = UsedDescrRatio; - IncreaseTimerDuration = SK_TRUE; /* in other words: INCREASE */ - } - - /* - ** Now we can determine the change in percent - */ - if ((RatioDiffRel >= 0) && (RatioDiffRel <= 5) ) { - ModAdjValue = 1; /* 1% change - maybe some other value in future */ - } else if ((RatioDiffRel > 5) && (RatioDiffRel <= 10) ) { - ModAdjValue = 1; /* 1% change - maybe some other value in future */ - } else if ((RatioDiffRel > 10) && (RatioDiffRel <= 15) ) { - ModAdjValue = 1; /* 1% change - maybe some other value in future */ - } else { - ModAdjValue = 1; /* 1% change - maybe some other value in future */ - } - - if (IncreaseTimerDuration) { - NewMaxModIntsPerSec = M_DIMINFO.MaxModIntsPerSec + - (M_DIMINFO.MaxModIntsPerSec * ModAdjValue) / 100; - } else { - NewMaxModIntsPerSec = M_DIMINFO.MaxModIntsPerSec - - (M_DIMINFO.MaxModIntsPerSec * ModAdjValue) / 100; - } - - /* - ** Check if we exceed boundaries... - */ - if ( (NewMaxModIntsPerSec > M_DIMINFO.MaxModIntsPerSecUpperLimit) || - (NewMaxModIntsPerSec < M_DIMINFO.MaxModIntsPerSecLowerLimit)) { - if (M_DIMINFO.DisplayStats) { - printk("Cannot change ModTim from %i to %i ints/sec\n", - M_DIMINFO.MaxModIntsPerSec, NewMaxModIntsPerSec); - } - return; - } else { - if (M_DIMINFO.DisplayStats) { - printk("Resized ModTim from %i to %i ints/sec\n", - M_DIMINFO.MaxModIntsPerSec, NewMaxModIntsPerSec); - } - } - - M_DIMINFO.MaxModIntsPerSec = NewMaxModIntsPerSec; - - if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) { - ModBase = C_CLK_FREQ_GENESIS / pAC->DynIrqModInfo.MaxModIntsPerSec; - } else { - ModBase = C_CLK_FREQ_YUKON / pAC->DynIrqModInfo.MaxModIntsPerSec; - } - - /* - ** We do not need to touch any other registers - */ - SK_OUT32(pAC->IoBase, B2_IRQM_INI, ModBase); + SK_DBG_MSG(pAC,SK_DBGMOD_DRV,SK_DBGCAT_DRV_MSG,("<== disableIntMod\n")); } /******************************************************************************* -** Function : DisplaySelectedModerationType() -** Description : Displays what type of moderation we have -** Programmer : Ralph Roesler -** Last Modified: 23-mar-03 -** Returns : void! -** Notes : - -*******************************************************************************/ - -static void -DisplaySelectedModerationType(SK_AC *pAC) { - - if (pAC->DynIrqModInfo.DisplayStats) { - if (pAC->DynIrqModInfo.IntModTypeSelect == C_INT_MOD_STATIC) { - printk("Static int moderation runs with %i INTS/sec\n", - pAC->DynIrqModInfo.MaxModIntsPerSec); - } else if (pAC->DynIrqModInfo.IntModTypeSelect == C_INT_MOD_DYNAMIC) { - if (IsIntModEnabled(pAC)) { - printk("Dynamic int moderation runs with %i INTS/sec\n", - pAC->DynIrqModInfo.MaxModIntsPerSec); - } else { - printk("Dynamic int moderation currently not applied\n"); - } - } else { - printk("No interrupt moderation selected!\n"); - } - } -} - -/******************************************************************************* -** Function : DisplaySelectedModerationMask() -** Description : Displays what interrupts are moderated -** Programmer : Ralph Roesler -** Last Modified: 23-mar-03 -** Returns : void! -** Notes : - -*******************************************************************************/ - -static void -DisplaySelectedModerationMask(SK_AC *pAC) { - - if (pAC->DynIrqModInfo.DisplayStats) { - if (pAC->DynIrqModInfo.IntModTypeSelect != C_INT_MOD_NONE) { - switch (pAC->DynIrqModInfo.MaskIrqModeration) { - case IRQ_MASK_TX_ONLY: - printk("Only Tx-interrupts are moderated\n"); - break; - case IRQ_MASK_RX_ONLY: - printk("Only Rx-interrupts are moderated\n"); - break; - case IRQ_MASK_SP_ONLY: - printk("Only special-interrupts are moderated\n"); - break; - case IRQ_MASK_TX_RX: - printk("Tx- and Rx-interrupts are moderated\n"); - break; - case IRQ_MASK_SP_RX: - printk("Special- and Rx-interrupts are moderated\n"); - break; - case IRQ_MASK_SP_TX: - printk("Special- and Tx-interrupts are moderated\n"); - break; - case IRQ_MASK_RX_TX_SP: - printk("All Rx-, Tx and special-interrupts are moderated\n"); - break; - default: - printk("Don't know what is moderated\n"); - break; - } - } else { - printk("No specific interrupts masked for moderation\n"); - } - } -} - -/******************************************************************************* -** Function : DisplayDescrRatio -** Description : Like the name states... -** Programmer : Ralph Roesler -** Last Modified: 23-mar-03 -** Returns : void! -** Notes : - -*******************************************************************************/ - -static void -DisplayDescrRatio(SK_AC *pAC) { - int TotalMaxNbrDescr = 0; - - if (pAC->DynIrqModInfo.DisplayStats) { - TotalMaxNbrDescr = pAC->RxDescrPerRing * GetRxCalls(pAC); - printk("Ratio descriptors: %i/%i\n", - M_DIMINFO.NbrProcessedDescr, TotalMaxNbrDescr); - } -} - -/******************************************************************************* -** -** End of file -** -*******************************************************************************/ + * + * End of file + * + ******************************************************************************/ --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skvpd.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skvpd.c @@ -1,22 +1,22 @@ /****************************************************************************** * * Name: skvpd.c - * Project: GEnesis, PCI Gigabit Ethernet Adapter - * Version: $Revision: 1.37 $ - * Date: $Date: 2003/01/13 10:42:45 $ - * Purpose: Shared software to read and write VPD data + * Project: Gigabit Ethernet Adapters, VPD-Module + * Version: $Revision: 2.6 $ + * Date: $Date: 2004/11/02 10:47:39 $ + * Purpose: Shared software to read and write VPD * ******************************************************************************/ /****************************************************************************** * - * (C)Copyright 1998-2003 SysKonnect GmbH. + * (C)Copyright 1998-2002 SysKonnect. + * (C)Copyright 2002-2004 Marvell. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * * The information in this file is provided "AS IS" without warranty. * ******************************************************************************/ @@ -25,7 +25,7 @@ Please refer skvpd.txt for infomation how to include this module */ static const char SysKonnectFileId[] = - "@(#)$Id: skvpd.c,v 1.37 2003/01/13 10:42:45 rschmidt Exp $ (C) SK"; + "@(#) $Id: skvpd.c,v 2.6 2004/11/02 10:47:39 rschmidt Exp $ (C) Marvell."; #include "h/skdrv1st.h" #include "h/sktypes.h" @@ -59,9 +59,10 @@ SK_U64 start_time; SK_U16 state; - SK_DBG_MSG(pAC,SK_DBGMOD_VPD, SK_DBGCAT_CTRL, + SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL, ("VPD wait for %s\n", event?"Write":"Read")); start_time = SkOsGetTime(pAC); + do { if (SkOsGetTime(pAC) - start_time > SK_TICKS_PER_SEC) { @@ -81,17 +82,18 @@ ("ERROR:VPD wait timeout\n")); return(1); } - + VPD_IN16(pAC, IoC, PCI_VPD_ADR_REG, &state); - + SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL, ("state = %x, event %x\n",state,event)); - } while((int)(state & PCI_VPD_FLAG) == event); + } while ((int)(state & PCI_VPD_FLAG) == event); return(0); } -#ifdef SKDIAG + +#ifdef SK_DIAG /* * Read the dword at address 'addr' from the VPD EEPROM. @@ -124,16 +126,15 @@ Rtv = 0; VPD_IN32(pAC, IoC, PCI_VPD_DAT_REG, &Rtv); - + SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL, ("VPD read dword data = 0x%x\n",Rtv)); return(Rtv); } +#endif /* SK_DIAG */ -#endif /* SKDIAG */ - -#if 0 +#ifdef XXX /* Write the dword 'data' at address 'addr' into the VPD EEPROM, and verify that the data is written. @@ -151,7 +152,6 @@ . over all 3.8 ms 13.2 ms . - Returns 0: success 1: error, I2C transfer does not terminate 2: error, data verify error @@ -189,7 +189,8 @@ return(0); } /* VpdWriteDWord */ -#endif /* 0 */ +#endif /* XXX */ + /* * Read one Stream of 'len' bytes of VPD data, starting at 'addr' from @@ -215,7 +216,7 @@ pComp = (SK_U8 *) buf; for (i = 0; i < Len; i++, buf++) { - if ((i%sizeof(SK_U32)) == 0) { + if ((i % SZ_LONG) == 0) { /* * At the begin of each cycle read the Data Reg * So it is initialized even if only a few bytes @@ -233,14 +234,13 @@ } } - /* Write current Byte */ - VPD_OUT8(pAC, IoC, PCI_VPD_DAT_REG + (i%sizeof(SK_U32)), - *(SK_U8*)buf); + /* Write current byte */ + VPD_OUT8(pAC, IoC, PCI_VPD_DAT_REG + (i % SZ_LONG), *(SK_U8*)buf); - if (((i%sizeof(SK_U32)) == 3) || (i == (Len - 1))) { + if (((i % SZ_LONG) == 3) || (i == (Len - 1))) { /* New Address needs to be written to VPD_ADDR reg */ AdrReg = (SK_U16) Addr; - Addr += sizeof(SK_U32); + Addr += SZ_LONG; AdrReg |= VPD_WRITE; /* WRITE operation */ VPD_OUT16(pAC, IoC, PCI_VPD_ADR_REG, AdrReg); @@ -250,7 +250,7 @@ if (Rtv != 0) { SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR, ("Write Timed Out\n")); - return(i - (i%sizeof(SK_U32))); + return(i - (i % SZ_LONG)); } /* @@ -265,18 +265,18 @@ if (Rtv != 0) { SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR, ("Verify Timed Out\n")); - return(i - (i%sizeof(SK_U32))); + return(i - (i % SZ_LONG)); } - for (j = 0; j <= (int)(i%sizeof(SK_U32)); j++, pComp++) { - + for (j = 0; j <= (int)(i % SZ_LONG); j++, pComp++) { + VPD_IN8(pAC, IoC, PCI_VPD_DAT_REG + j, &Data); - + if (Data != *pComp) { /* Verify Error */ SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR, ("WriteStream Verify Error\n")); - return(i - (i%sizeof(SK_U32)) + j); + return(i - (i % SZ_LONG) + j); } } } @@ -284,7 +284,7 @@ return(Len); } - + /* * Read one Stream of 'len' bytes of VPD data, starting at 'addr' from @@ -304,10 +304,10 @@ int Rtv; for (i = 0; i < Len; i++, buf++) { - if ((i%sizeof(SK_U32)) == 0) { + if ((i % SZ_LONG) == 0) { /* New Address needs to be written to VPD_ADDR reg */ AdrReg = (SK_U16) Addr; - Addr += sizeof(SK_U32); + Addr += SZ_LONG; AdrReg &= ~VPD_WRITE; /* READ operation */ VPD_OUT16(pAC, IoC, PCI_VPD_ADR_REG, AdrReg); @@ -318,13 +318,13 @@ return(i); } } - VPD_IN8(pAC, IoC, PCI_VPD_DAT_REG + (i%sizeof(SK_U32)), - (SK_U8 *)buf); + VPD_IN8(pAC, IoC, PCI_VPD_DAT_REG + (i % SZ_LONG), (SK_U8 *)buf); } return(Len); } + /* * Read ore writes 'len' bytes of VPD data, starting at 'addr' from * or to the I2C EEPROM. @@ -350,14 +350,14 @@ return(0); vpd_rom_size = pAC->vpd.rom_size; - + if (addr > vpd_rom_size - 4) { SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL, ("Address error: 0x%x, exp. < 0x%x\n", addr, vpd_rom_size - 4)); return(0); } - + if (addr + len > vpd_rom_size) { len = vpd_rom_size - addr; SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR, @@ -374,8 +374,8 @@ return(Rtv); } -#ifdef SKDIAG +#if defined (SK_DIAG) || defined (SK_ASF) /* * Read 'len' bytes of VPD data, starting at 'addr'. * @@ -391,6 +391,7 @@ return(VpdTransferBlock(pAC, IoC, buf, addr, len, VPD_READ)); } + /* * Write 'len' bytes of *but to the VPD EEPROM, starting at 'addr'. * @@ -405,18 +406,27 @@ { return(VpdTransferBlock(pAC, IoC, buf, addr, len, VPD_WRITE)); } -#endif /* SKDIAG */ +#endif /* SK_DIAG */ -/* - * (re)initialize the VPD buffer + +/****************************************************************************** * - * Reads the VPD data from the EEPROM into the VPD buffer. - * Get the remaining read only and read / write space. + * VpdInit() - (re)initialize the VPD buffer * - * return 0: success - * 1: fatal VPD error + * Description: + * Reads the VPD data from the EEPROM into the VPD buffer. + * Get the remaining read only and read / write space. + * + * Note: + * This is a local function and should be used locally only. + * However, the ASF module needs to use this function also. + * Therfore it has been published. + * + * Returns: + * 0: success + * 1: fatal VPD error */ -static int VpdInit( +int VpdInit( SK_AC *pAC, /* Adapters context */ SK_IOC IoC) /* IO Context */ { @@ -427,14 +437,14 @@ SK_U16 dev_id; SK_U32 our_reg2; - SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_INIT, ("VpdInit .. ")); - + SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_INIT, ("VpdInit ... ")); + VPD_IN16(pAC, IoC, PCI_DEVICE_ID, &dev_id); - + VPD_IN32(pAC, IoC, PCI_OUR_REG_2, &our_reg2); - + pAC->vpd.rom_size = 256 << ((our_reg2 & PCI_VPD_ROM_SZ) >> 14); - + /* * this function might get used before the hardware is initialized * therefore we cannot always trust in GIChipId @@ -465,19 +475,15 @@ ("Block Read Error\n")); return(1); } - + pAC->vpd.vpd_size = vpd_size; /* Asus K8V Se Deluxe bugfix. Correct VPD content */ - /* MBo April 2004 */ - if (((unsigned char)pAC->vpd.vpd_buf[0x3f] == 0x38) && - ((unsigned char)pAC->vpd.vpd_buf[0x40] == 0x3c) && - ((unsigned char)pAC->vpd.vpd_buf[0x41] == 0x45)) { - printk("sk98lin: Asus mainboard with buggy VPD? " - "Correcting data.\n"); - pAC->vpd.vpd_buf[0x40] = 0x38; - } + i = 62; + if (!SK_STRNCMP(pAC->vpd.vpd_buf + i, " 8vpd.vpd_buf[i + 2] = '8'; + } /* find the end tag of the RO area */ if (!(r = vpd_find_para(pAC, VPD_RV, &rp))) { @@ -485,9 +491,9 @@ ("Encoding Error: RV Tag not found\n")); return(1); } - + if (r->p_val + r->p_len > pAC->vpd.vpd_buf + vpd_size/2) { - SK_DBG_MSG(pAC,SK_DBGMOD_VPD,SK_DBGCAT_ERR | SK_DBGCAT_FATAL, + SK_DBG_MSG(pAC, SK_DBGMOD_VPD,SK_DBGCAT_ERR | SK_DBGCAT_FATAL, ("Encoding Error: Invalid VPD struct size\n")); return(1); } @@ -497,7 +503,7 @@ for (i = 0, x = 0; (unsigned)i <= (unsigned)vpd_size/2 - r->p_len; i++) { x += pAC->vpd.vpd_buf[i]; } - + if (x != 0) { /* checksum error */ SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL, @@ -511,7 +517,7 @@ ("Encoding Error: RV Tag not found\n")); return(1); } - + if (r->p_val < pAC->vpd.vpd_buf + vpd_size/2) { SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL, ("Encoding Error: Invalid VPD struct size\n")); @@ -531,6 +537,7 @@ return(0); } + /* * find the Keyword 'key' in the VPD buffer and fills the * parameter struct 'p' with it's values @@ -541,7 +548,7 @@ static SK_VPD_PARA *vpd_find_para( SK_AC *pAC, /* common data base */ const char *key, /* keyword to find (e.g. "MN") */ -SK_VPD_PARA *p) /* parameter description struct */ +SK_VPD_PARA *p) /* parameter description struct */ { char *v ; /* points to VPD buffer */ int max; /* Maximum Number of Iterations */ @@ -556,10 +563,10 @@ if (*v != (char)RES_ID) { SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL, ("Error: 0x%x missing\n", RES_ID)); - return NULL; + return(0); } - if (strcmp(key, VPD_NAME) == 0) { + if (SK_STRCMP(key, VPD_NAME) == 0) { p->p_len = VPD_GET_RES_LEN(v); p->p_val = VPD_GET_VAL(v); SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL, @@ -569,7 +576,7 @@ v += 3 + VPD_GET_RES_LEN(v) + 3; for (;; ) { - if (SK_MEMCMP(key,v,2) == 0) { + if (SK_MEMCMP(key, v, 2) == 0) { p->p_len = VPD_GET_VPD_LEN(v); p->p_val = VPD_GET_VAL(v); SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL, @@ -579,11 +586,11 @@ /* exit when reaching the "RW" Tag or the maximum of itera. */ max--; - if (SK_MEMCMP(VPD_RW,v,2) == 0 || max == 0) { + if (SK_MEMCMP(VPD_RW, v, 2) == 0 || max == 0) { break; } - if (SK_MEMCMP(VPD_RV,v,2) == 0) { + if (SK_MEMCMP(VPD_RV, v, 2) == 0) { v += 3 + VPD_GET_VPD_LEN(v) + 3; /* skip VPD-W */ } else { @@ -600,9 +607,10 @@ ("Key/Len Encoding error\n")); } #endif /* DEBUG */ - return NULL; + return(0); } + /* * Move 'n' bytes. Begin with the last byte if 'n' is > 0, * Start with the last byte if n is < 0. @@ -637,6 +645,7 @@ } } + /* * setup the VPD keyword 'key' at 'ip'. * @@ -653,10 +662,11 @@ p = (SK_VPD_KEY *) ip; p->p_key[0] = key[0]; p->p_key[1] = key[1]; - p->p_len = (unsigned char) len; - SK_MEMCPY(&p->p_val,buf,len); + p->p_len = (unsigned char)len; + SK_MEMCPY(&p->p_val, buf, len); } + /* * Setup the VPD end tag "RV" / "RW". * Also correct the remaining space variables vpd_free_ro / vpd_free_rw. @@ -682,7 +692,7 @@ if (p->p_key[0] != 'R' || (p->p_key[1] != 'V' && p->p_key[1] != 'W')) { /* something wrong here, encoding error */ - SK_DBG_MSG(pAC,SK_DBGMOD_VPD,SK_DBGCAT_ERR | SK_DBGCAT_FATAL, + SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL, ("Encoding Error: invalid end tag\n")); return(1); } @@ -714,6 +724,7 @@ return(0); } + /* * Insert a VPD keyword into the VPD buffer. * @@ -747,11 +758,11 @@ SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_CTRL, ("VPD setup para key = %s, val = %s\n",key,buf)); - + vpd_size = pAC->vpd.vpd_size; rtv = 0; - ip = NULL; + ip = 0; if (type == VPD_RW_KEY) { /* end tag is "RW" */ free = pAC->vpd.v.vpd_free_rw; @@ -875,18 +886,18 @@ } } - if ((signed)strlen(VPD_NAME) + 1 <= *len) { + if ((signed)SK_STRLEN(VPD_NAME) + 1 <= *len) { v = pAC->vpd.vpd_buf; - strcpy(buf,VPD_NAME); - n = strlen(VPD_NAME) + 1; + SK_STRCPY(buf, VPD_NAME); + n = SK_STRLEN(VPD_NAME) + 1; buf += n; *elements = 1; SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_RX, - ("'%c%c' ",v[0],v[1])); + ("'%c%c' ", v[0], v[1])); } else { *len = 0; - SK_DBG_MSG(pAC,SK_DBGMOD_VPD,SK_DBGCAT_ERR, + SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR, ("buffer overflow\n")); return(2); } @@ -894,17 +905,17 @@ v += 3 + VPD_GET_RES_LEN(v) + 3; for (;; ) { /* exit when reaching the "RW" Tag */ - if (SK_MEMCMP(VPD_RW,v,2) == 0) { + if (SK_MEMCMP(VPD_RW, v, 2) == 0) { break; } - if (SK_MEMCMP(VPD_RV,v,2) == 0) { + if (SK_MEMCMP(VPD_RV, v, 2) == 0) { v += 3 + VPD_GET_VPD_LEN(v) + 3; /* skip VPD-W */ continue; } if (n+3 <= *len) { - SK_MEMCPY(buf,v,2); + SK_MEMCPY(buf, v, 2); buf += 2; *buf++ = '\0'; n += 3; @@ -991,13 +1002,14 @@ { if ((*key != 'Y' && *key != 'V') || key[1] < '0' || key[1] > 'Z' || - (key[1] > '9' && key[1] < 'A') || strlen(key) != 2) { + (key[1] > '9' && key[1] < 'A') || SK_STRLEN(key) != 2) { return(SK_FALSE); } return(SK_TRUE); } + /* * Read the contents of the VPD EEPROM and copy it to the VPD * buffer if not already done. Insert/overwrite the keyword 'key' @@ -1026,7 +1038,7 @@ if ((*key != 'Y' && *key != 'V') || key[1] < '0' || key[1] > 'Z' || - (key[1] > '9' && key[1] < 'A') || strlen(key) != 2) { + (key[1] > '9' && key[1] < 'A') || SK_STRLEN(key) != 2) { SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR, ("illegal key tag, keyword not written\n")); @@ -1042,13 +1054,13 @@ } rtv = 0; - len = strlen(buf); + len = SK_STRLEN(buf); if (len > VPD_MAX_LEN) { /* cut it */ len = VPD_MAX_LEN; rtv = 2; SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR, - ("keyword too long, cut after %d bytes\n",VPD_MAX_LEN)); + ("keyword too long, cut after %d bytes\n", VPD_MAX_LEN)); } if ((rtv2 = VpdSetupPara(pAC, key, buf, len, VPD_RW_KEY, OWR_KEY)) != 0) { SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR, @@ -1059,6 +1071,7 @@ return(rtv); } + /* * Read the contents of the VPD EEPROM and copy it to the * VPD buffer if not already done. Remove the VPD keyword @@ -1082,7 +1095,7 @@ vpd_size = pAC->vpd.vpd_size; - SK_DBG_MSG(pAC,SK_DBGMOD_VPD,SK_DBGCAT_TX,("VPD delete key %s\n",key)); + SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_TX, ("VPD delete key %s\n", key)); if ((pAC->vpd.v.vpd_status & VPD_VALID) == 0) { if (VpdInit(pAC, IoC) != 0) { SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR, @@ -1119,6 +1132,7 @@ return(0); } + /* * If the VPD buffer contains valid data write the VPD * read/write area back to the VPD EEPROM. @@ -1149,7 +1163,6 @@ } - /* * Read the contents of the VPD EEPROM and copy it to the VPD buffer * if not already done. If the keyword "VF" is not present it will be @@ -1178,7 +1191,7 @@ } } - len = strlen(msg); + len = SK_STRLEN(msg); if (len > VPD_MAX_LEN) { /* cut it */ len = VPD_MAX_LEN; --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skqueue.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skqueue.c @@ -2,8 +2,8 @@ * * Name: skqueue.c * Project: Gigabit Ethernet Adapters, Event Scheduler Module - * Version: $Revision: 1.20 $ - * Date: $Date: 2003/09/16 13:44:00 $ + * Version: $Revision: 2.3 $ + * Date: $Date: 2004/05/14 13:28:18 $ * Purpose: Management of an event queue. * ******************************************************************************/ @@ -28,7 +28,7 @@ */ #if (defined(DEBUG) || ((!defined(LINT)) && (!defined(SK_SLIM)))) static const char SysKonnectFileId[] = - "@(#) $Id: skqueue.c,v 1.20 2003/09/16 13:44:00 rschmidt Exp $ (C) Marvell."; + "@(#) $Id: skqueue.c,v 2.3 2004/05/14 13:28:18 malthoff Exp $ (C) Marvell."; #endif #include "h/skdrv1st.h" /* Driver Specific Definitions */ @@ -48,10 +48,16 @@ #define PRINTF(a,b,c) -/* - * init event queue management +/****************************************************************************** + * + * SkEventInit() - init event queue management * - * Must be called during init level 0. + * Description: + * This function initializes event queue management. + * It must be called during init level 0. + * + * Returns: + * nothing */ void SkEventInit( SK_AC *pAC, /* Adapter context */ @@ -67,8 +73,17 @@ } } -/* - * add event to queue +/****************************************************************************** + * + * SkEventQueue() - add event to queue + * + * Description: + * This function adds an event to the event queue. + * At least Init Level 1 is required to queue events, + * but will be scheduled add Init Level 2. + * + * returns: + * nothing */ void SkEventQueue( SK_AC *pAC, /* Adapters context */ @@ -76,26 +91,45 @@ SK_U32 Event, /* Event to be queued */ SK_EVPARA Para) /* Event parameter */ { - pAC->Event.EvPut->Class = Class; - pAC->Event.EvPut->Event = Event; - pAC->Event.EvPut->Para = Para; + + if (pAC->GIni.GILevel == SK_INIT_DATA) { + SK_ERR_LOG(pAC, SK_ERRCL_NORES, SKERR_Q_E003, SKERR_Q_E003MSG); + } + else { + pAC->Event.EvPut->Class = Class; + pAC->Event.EvPut->Event = Event; + pAC->Event.EvPut->Para = Para; - if (++pAC->Event.EvPut == &pAC->Event.EvQueue[SK_MAX_EVENT]) - pAC->Event.EvPut = pAC->Event.EvQueue; + if (++pAC->Event.EvPut == &pAC->Event.EvQueue[SK_MAX_EVENT]) + pAC->Event.EvPut = pAC->Event.EvQueue; - if (pAC->Event.EvPut == pAC->Event.EvGet) { - SK_ERR_LOG(pAC, SK_ERRCL_NORES, SKERR_Q_E001, SKERR_Q_E001MSG); + if (pAC->Event.EvPut == pAC->Event.EvGet) { + SK_ERR_LOG(pAC, SK_ERRCL_NORES, SKERR_Q_E001, SKERR_Q_E001MSG); + } } } -/* - * event dispatcher - * while event queue is not empty - * get event from queue - * send command to state machine - * end - * return error reported by individual Event function - * 0 if no error occured. +/****************************************************************************** + * + * SkEventDispatcher() - Event Dispatcher + * + * Description: + * The event dispatcher performs the following operations: + * o while event queue is not empty + * - get event from queue + * - send event to state machine + * end + * + * CAUTION: + * The event functions MUST report an error if performing a reinitialization + * of the event queue, e.g. performing level Init 0..2 while in dispatcher + * call! + * ANY OTHER return value delays scheduling the other events in the + * queue. In this case the event blocks the queue until + * the error condition is cleared! + * + * Returns: + * The return value error reported by individual event function */ int SkEventDispatcher( SK_AC *pAC, /* Adapters Context */ @@ -105,6 +139,10 @@ SK_U32 Class; int Rtv; + if (pAC->GIni.GILevel != SK_INIT_RUN) { + SK_ERR_LOG(pAC, SK_ERRCL_NORES, SKERR_Q_E005, SKERR_Q_E005MSG); + } + pEv = pAC->Event.EvGet; PRINTF("dispatch get %x put %x\n", pEv, pAC->Event.ev_put); @@ -152,6 +190,11 @@ Rtv = SkFdEvent(pAC, Ioc, pEv->Event, pEv->Para); break; #endif /* SK_USE_LAC_EV */ +#ifdef SK_ASF + case SKGE_ASF : + Rtv = SkAsfEvent(pAC,Ioc,pEv->Event,pEv->Para); + break ; +#endif #ifdef SK_USE_CSUM case SKGE_CSUM : Rtv = SkCsEvent(pAC, Ioc, pEv->Event, pEv->Para); @@ -163,6 +206,20 @@ } if (Rtv != 0) { + /* + * Special Case: See CAUTION statement above. + * We assume the event queue is reset. + */ + if (pAC->Event.EvGet != pAC->Event.EvQueue && + pAC->Event.EvGet != pEv) { + /* + * Create an error log entry if the + * event queue isn't reset. + * In this case it may be blocked. + */ + SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_Q_E004, SKERR_Q_E004MSG); + } + return(Rtv); } --- linux-source-2.6.15-2.6.15.orig/drivers/net/sk98lin/skcsum.c +++ linux-source-2.6.15-2.6.15/drivers/net/sk98lin/skcsum.c @@ -0,0 +1,871 @@ +/****************************************************************************** + * + * Name: skcsum.c + * Project: GEnesis, PCI Gigabit Ethernet Adapter + * Version: $Revision: 2.1 $ + * Date: $Date: 2003/10/27 14:16:08 $ + * Purpose: Store/verify Internet checksum in send/receive packets. + * + ******************************************************************************/ + +/****************************************************************************** + * + * (C)Copyright 1998-2003 SysKonnect GmbH. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * The information in this file is provided "AS IS" without warranty. + * + ******************************************************************************/ + +#ifdef SK_USE_CSUM /* Check if CSUM is to be used. */ + +#ifndef lint +static const char SysKonnectFileId[] = + "@(#) $Id: skcsum.c,v 2.1 2003/10/27 14:16:08 amock Exp $ (C) SysKonnect."; +#endif /* !lint */ + +/****************************************************************************** + * + * Description: + * + * This is the "GEnesis" common module "CSUM". + * + * This module contains the code necessary to calculate, store, and verify the + * Internet Checksum of IP, TCP, and UDP frames. + * + * "GEnesis" is an abbreviation of "Gigabit Ethernet Network System in Silicon" + * and is the code name of this SysKonnect project. + * + * Compilation Options: + * + * SK_USE_CSUM - Define if CSUM is to be used. Otherwise, CSUM will be an + * empty module. + * + * SKCS_OVERWRITE_PROTO - Define to overwrite the default protocol id + * definitions. In this case, all SKCS_PROTO_xxx definitions must be made + * external. + * + * SKCS_OVERWRITE_STATUS - Define to overwrite the default return status + * definitions. In this case, all SKCS_STATUS_xxx definitions must be made + * external. + * + * Include File Hierarchy: + * + * "h/skdrv1st.h" + * "h/skcsum.h" + * "h/sktypes.h" + * "h/skqueue.h" + * "h/skdrv2nd.h" + * + ******************************************************************************/ + +#include "h/skdrv1st.h" +#include "h/skcsum.h" +#include "h/skdrv2nd.h" + +/* defines ********************************************************************/ + +/* The size of an Ethernet MAC header. */ +#define SKCS_ETHERNET_MAC_HEADER_SIZE (6+6+2) + +/* The size of the used topology's MAC header. */ +#define SKCS_MAC_HEADER_SIZE SKCS_ETHERNET_MAC_HEADER_SIZE + +/* The size of the IP header without any option fields. */ +#define SKCS_IP_HEADER_SIZE 20 + +/* + * Field offsets within the IP header. + */ + +/* "Internet Header Version" and "Length". */ +#define SKCS_OFS_IP_HEADER_VERSION_AND_LENGTH 0 + +/* "Total Length". */ +#define SKCS_OFS_IP_TOTAL_LENGTH 2 + +/* "Flags" "Fragment Offset". */ +#define SKCS_OFS_IP_FLAGS_AND_FRAGMENT_OFFSET 6 + +/* "Next Level Protocol" identifier. */ +#define SKCS_OFS_IP_NEXT_LEVEL_PROTOCOL 9 + +/* Source IP address. */ +#define SKCS_OFS_IP_SOURCE_ADDRESS 12 + +/* Destination IP address. */ +#define SKCS_OFS_IP_DESTINATION_ADDRESS 16 + + +/* + * Field offsets within the UDP header. + */ + +/* UDP checksum. */ +#define SKCS_OFS_UDP_CHECKSUM 6 + +/* IP "Next Level Protocol" identifiers (see RFC 790). */ +#define SKCS_PROTO_ID_TCP 6 /* Transport Control Protocol */ +#define SKCS_PROTO_ID_UDP 17 /* User Datagram Protocol */ + +/* IP "Don't Fragment" bit. */ +#define SKCS_IP_DONT_FRAGMENT SKCS_HTON16(0x4000) + +/* Add a byte offset to a pointer. */ +#define SKCS_IDX(pPtr, Ofs) ((void *) ((char *) (pPtr) + (Ofs))) + +/* + * Macros that convert host to network representation and vice versa, i.e. + * little/big endian conversion on little endian machines only. + */ +#ifdef SK_LITTLE_ENDIAN +#define SKCS_HTON16(Val16) (((unsigned) (Val16) >> 8) | (((Val16) & 0xff) << 8)) +#endif /* SK_LITTLE_ENDIAN */ +#ifdef SK_BIG_ENDIAN +#define SKCS_HTON16(Val16) (Val16) +#endif /* SK_BIG_ENDIAN */ +#define SKCS_NTOH16(Val16) SKCS_HTON16(Val16) + +/* typedefs *******************************************************************/ + +/* function prototypes ********************************************************/ + +/****************************************************************************** + * + * SkCsGetSendInfo - get checksum information for a send packet + * + * Description: + * Get all checksum information necessary to send a TCP or UDP packet. The + * function checks the IP header passed to it. If the high-level protocol + * is either TCP or UDP the pseudo header checksum is calculated and + * returned. + * + * The function returns the total length of the IP header (including any + * IP option fields), which is the same as the start offset of the IP data + * which in turn is the start offset of the TCP or UDP header. + * + * The function also returns the TCP or UDP pseudo header checksum, which + * should be used as the start value for the hardware checksum calculation. + * (Note that any actual pseudo header checksum can never calculate to + * zero.) + * + * Note: + * There is a bug in the GENESIS ASIC which may lead to wrong checksums. + * + * Arguments: + * pAc - A pointer to the adapter context struct. + * + * pIpHeader - Pointer to IP header. Must be at least the IP header *not* + * including any option fields, i.e. at least 20 bytes. + * + * Note: This pointer will be used to address 8-, 16-, and 32-bit + * variables with the respective alignment offsets relative to the pointer. + * Thus, the pointer should point to a 32-bit aligned address. If the + * target system cannot address 32-bit variables on non 32-bit aligned + * addresses, then the pointer *must* point to a 32-bit aligned address. + * + * pPacketInfo - A pointer to the packet information structure for this + * packet. Before calling this SkCsGetSendInfo(), the following field must + * be initialized: + * + * ProtocolFlags - Initialize with any combination of + * SKCS_PROTO_XXX bit flags. SkCsGetSendInfo() will only work on + * the protocols specified here. Any protocol(s) not specified + * here will be ignored. + * + * Note: Only one checksum can be calculated in hardware. Thus, if + * SKCS_PROTO_IP is specified in the 'ProtocolFlags', + * SkCsGetSendInfo() must calculate the IP header checksum in + * software. It might be a better idea to have the calling + * protocol stack calculate the IP header checksum. + * + * Returns: N/A + * On return, the following fields in 'pPacketInfo' may or may not have + * been filled with information, depending on the protocol(s) found in the + * packet: + * + * ProtocolFlags - Returns the SKCS_PROTO_XXX bit flags of the protocol(s) + * that were both requested by the caller and actually found in the packet. + * Protocol(s) not specified by the caller and/or not found in the packet + * will have their respective SKCS_PROTO_XXX bit flags reset. + * + * Note: For IP fragments, TCP and UDP packet information is ignored. + * + * IpHeaderLength - The total length in bytes of the complete IP header + * including any option fields is returned here. This is the start offset + * of the IP data, i.e. the TCP or UDP header if present. + * + * IpHeaderChecksum - If IP has been specified in the 'ProtocolFlags', the + * 16-bit Internet Checksum of the IP header is returned here. This value + * is to be stored into the packet's 'IP Header Checksum' field. + * + * PseudoHeaderChecksum - If this is a TCP or UDP packet and if TCP or UDP + * has been specified in the 'ProtocolFlags', the 16-bit Internet Checksum + * of the TCP or UDP pseudo header is returned here. + */ +void SkCsGetSendInfo( +SK_AC *pAc, /* Adapter context struct. */ +void *pIpHeader, /* IP header. */ +SKCS_PACKET_INFO *pPacketInfo, /* Packet information struct. */ +int NetNumber) /* Net number */ +{ + /* Internet Header Version found in IP header. */ + unsigned InternetHeaderVersion; + + /* Length of the IP header as found in IP header. */ + unsigned IpHeaderLength; + + /* Bit field specifiying the desired/found protocols. */ + unsigned ProtocolFlags; + + /* Next level protocol identifier found in IP header. */ + unsigned NextLevelProtocol; + + /* Length of IP data portion. */ + unsigned IpDataLength; + + /* TCP/UDP pseudo header checksum. */ + unsigned long PseudoHeaderChecksum; + + /* Pointer to next level protocol statistics structure. */ + SKCS_PROTO_STATS *NextLevelProtoStats; + + /* Temporary variable. */ + unsigned Tmp; + + Tmp = *(SK_U8 *) + SKCS_IDX(pIpHeader, SKCS_OFS_IP_HEADER_VERSION_AND_LENGTH); + + /* Get the Internet Header Version (IHV). */ + /* Note: The IHV is stored in the upper four bits. */ + + InternetHeaderVersion = Tmp >> 4; + + /* Check the Internet Header Version. */ + /* Note: We currently only support IP version 4. */ + + if (InternetHeaderVersion != 4) { /* IPv4? */ + SK_DBG_MSG(pAc, SK_DBGMOD_CSUM, SK_DBGCAT_ERR | SK_DBGCAT_TX, + ("Tx: Unknown Internet Header Version %u.\n", + InternetHeaderVersion)); + pPacketInfo->ProtocolFlags = 0; + pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].TxUnableCts++; + return; + } + + /* Get the IP header length (IHL). */ + /* + * Note: The IHL is stored in the lower four bits as the number of + * 4-byte words. + */ + + IpHeaderLength = (Tmp & 0xf) * 4; + pPacketInfo->IpHeaderLength = IpHeaderLength; + + /* Check the IP header length. */ + + /* 04-Aug-1998 sw - Really check the IHL? Necessary? */ + + if (IpHeaderLength < 5*4) { + SK_DBG_MSG(pAc, SK_DBGMOD_CSUM, SK_DBGCAT_ERR | SK_DBGCAT_TX, + ("Tx: Invalid IP Header Length %u.\n", IpHeaderLength)); + pPacketInfo->ProtocolFlags = 0; + pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].TxUnableCts++; + return; + } + + /* This is an IPv4 frame with a header of valid length. */ + + pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].TxOkCts++; + + /* Check if we should calculate the IP header checksum. */ + + ProtocolFlags = pPacketInfo->ProtocolFlags; + + if (ProtocolFlags & SKCS_PROTO_IP) { + pPacketInfo->IpHeaderChecksum = + SkCsCalculateChecksum(pIpHeader, IpHeaderLength); + } + + /* Get the next level protocol identifier. */ + + NextLevelProtocol = + *(SK_U8 *) SKCS_IDX(pIpHeader, SKCS_OFS_IP_NEXT_LEVEL_PROTOCOL); + + /* + * Check if this is a TCP or UDP frame and if we should calculate the + * TCP/UDP pseudo header checksum. + * + * Also clear all protocol bit flags of protocols not present in the + * frame. + */ + + if ((ProtocolFlags & SKCS_PROTO_TCP) != 0 && + NextLevelProtocol == SKCS_PROTO_ID_TCP) { + /* TCP/IP frame. */ + ProtocolFlags &= SKCS_PROTO_TCP | SKCS_PROTO_IP; + NextLevelProtoStats = + &pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_TCP]; + } + else if ((ProtocolFlags & SKCS_PROTO_UDP) != 0 && + NextLevelProtocol == SKCS_PROTO_ID_UDP) { + /* UDP/IP frame. */ + ProtocolFlags &= SKCS_PROTO_UDP | SKCS_PROTO_IP; + NextLevelProtoStats = + &pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_UDP]; + } + else { + /* + * Either not a TCP or UDP frame and/or TCP/UDP processing not + * specified. + */ + pPacketInfo->ProtocolFlags = ProtocolFlags & SKCS_PROTO_IP; + return; + } + + /* Check if this is an IP fragment. */ + + /* + * Note: An IP fragment has a non-zero "Fragment Offset" field and/or + * the "More Fragments" bit set. Thus, if both the "Fragment Offset" + * and the "More Fragments" are zero, it is *not* a fragment. We can + * easily check both at the same time since they are in the same 16-bit + * word. + */ + + if ((*(SK_U16 *) + SKCS_IDX(pIpHeader, SKCS_OFS_IP_FLAGS_AND_FRAGMENT_OFFSET) & + ~SKCS_IP_DONT_FRAGMENT) != 0) { + /* IP fragment; ignore all other protocols. */ + pPacketInfo->ProtocolFlags = ProtocolFlags & SKCS_PROTO_IP; + NextLevelProtoStats->TxUnableCts++; + return; + } + + /* + * Calculate the TCP/UDP pseudo header checksum. + */ + + /* Get total length of IP header and data. */ + + IpDataLength = + *(SK_U16 *) SKCS_IDX(pIpHeader, SKCS_OFS_IP_TOTAL_LENGTH); + + /* Get length of IP data portion. */ + + IpDataLength = SKCS_NTOH16(IpDataLength) - IpHeaderLength; + + /* Calculate the sum of all pseudo header fields (16-bit). */ + + PseudoHeaderChecksum = + (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader, + SKCS_OFS_IP_SOURCE_ADDRESS + 0) + + (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader, + SKCS_OFS_IP_SOURCE_ADDRESS + 2) + + (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader, + SKCS_OFS_IP_DESTINATION_ADDRESS + 0) + + (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader, + SKCS_OFS_IP_DESTINATION_ADDRESS + 2) + + (unsigned long) SKCS_HTON16(NextLevelProtocol) + + (unsigned long) SKCS_HTON16(IpDataLength); + + /* Add-in any carries. */ + + SKCS_OC_ADD(PseudoHeaderChecksum, PseudoHeaderChecksum, 0); + + /* Add-in any new carry. */ + + SKCS_OC_ADD(pPacketInfo->PseudoHeaderChecksum, PseudoHeaderChecksum, 0); + + pPacketInfo->ProtocolFlags = ProtocolFlags; + NextLevelProtoStats->TxOkCts++; /* Success. */ +} /* SkCsGetSendInfo */ + + +/****************************************************************************** + * + * SkCsGetReceiveInfo - verify checksum information for a received packet + * + * Description: + * Verify a received frame's checksum. The function returns a status code + * reflecting the result of the verification. + * + * Note: + * Before calling this function you have to verify that the frame is + * not padded and Checksum1 and Checksum2 are bigger than 1. + * + * Arguments: + * pAc - Pointer to adapter context struct. + * + * pIpHeader - Pointer to IP header. Must be at least the length in bytes + * of the received IP header including any option fields. For UDP packets, + * 8 additional bytes are needed to access the UDP checksum. + * + * Note: The actual length of the IP header is stored in the lower four + * bits of the first octet of the IP header as the number of 4-byte words, + * so it must be multiplied by four to get the length in bytes. Thus, the + * maximum IP header length is 15 * 4 = 60 bytes. + * + * Checksum1 - The first 16-bit Internet Checksum calculated by the + * hardware starting at the offset returned by SkCsSetReceiveFlags(). + * + * Checksum2 - The second 16-bit Internet Checksum calculated by the + * hardware starting at the offset returned by SkCsSetReceiveFlags(). + * + * Returns: + * SKCS_STATUS_UNKNOWN_IP_VERSION - Not an IP v4 frame. + * SKCS_STATUS_IP_CSUM_ERROR - IP checksum error. + * SKCS_STATUS_IP_CSUM_ERROR_TCP - IP checksum error in TCP frame. + * SKCS_STATUS_IP_CSUM_ERROR_UDP - IP checksum error in UDP frame + * SKCS_STATUS_IP_FRAGMENT - IP fragment (IP checksum ok). + * SKCS_STATUS_IP_CSUM_OK - IP checksum ok (not a TCP or UDP frame). + * SKCS_STATUS_TCP_CSUM_ERROR - TCP checksum error (IP checksum ok). + * SKCS_STATUS_UDP_CSUM_ERROR - UDP checksum error (IP checksum ok). + * SKCS_STATUS_TCP_CSUM_OK - IP and TCP checksum ok. + * SKCS_STATUS_UDP_CSUM_OK - IP and UDP checksum ok. + * SKCS_STATUS_IP_CSUM_OK_NO_UDP - IP checksum OK and no UDP checksum. + * + * Note: If SKCS_OVERWRITE_STATUS is defined, the SKCS_STATUS_XXX values + * returned here can be defined in some header file by the module using CSUM. + * In this way, the calling module can assign return values for its own needs, + * e.g. by assigning bit flags to the individual protocols. + */ +SKCS_STATUS SkCsGetReceiveInfo( +SK_AC *pAc, /* Adapter context struct. */ +void *pIpHeader, /* IP header. */ +unsigned Checksum1, /* Hardware checksum 1. */ +unsigned Checksum2, /* Hardware checksum 2. */ +int NetNumber) /* Net number */ +{ + /* Internet Header Version found in IP header. */ + unsigned InternetHeaderVersion; + + /* Length of the IP header as found in IP header. */ + unsigned IpHeaderLength; + + /* Length of IP data portion. */ + unsigned IpDataLength; + + /* IP header checksum. */ + unsigned IpHeaderChecksum; + + /* IP header options checksum, if any. */ + unsigned IpOptionsChecksum; + + /* IP data checksum, i.e. TCP/UDP checksum. */ + unsigned IpDataChecksum; + + /* Next level protocol identifier found in IP header. */ + unsigned NextLevelProtocol; + + /* The checksum of the "next level protocol", i.e. TCP or UDP. */ + unsigned long NextLevelProtocolChecksum; + + /* Pointer to next level protocol statistics structure. */ + SKCS_PROTO_STATS *NextLevelProtoStats; + + /* Temporary variable. */ + unsigned Tmp; + + Tmp = *(SK_U8 *) + SKCS_IDX(pIpHeader, SKCS_OFS_IP_HEADER_VERSION_AND_LENGTH); + + /* Get the Internet Header Version (IHV). */ + /* Note: The IHV is stored in the upper four bits. */ + + InternetHeaderVersion = Tmp >> 4; + + /* Check the Internet Header Version. */ + /* Note: We currently only support IP version 4. */ + + if (InternetHeaderVersion != 4) { /* IPv4? */ + SK_DBG_MSG(pAc, SK_DBGMOD_CSUM, SK_DBGCAT_ERR | SK_DBGCAT_RX, + ("Rx: Unknown Internet Header Version %u.\n", + InternetHeaderVersion)); + pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].RxUnableCts++; + return (SKCS_STATUS_UNKNOWN_IP_VERSION); + } + + /* Get the IP header length (IHL). */ + /* + * Note: The IHL is stored in the lower four bits as the number of + * 4-byte words. + */ + + IpHeaderLength = (Tmp & 0xf) * 4; + + /* Check the IP header length. */ + + /* 04-Aug-1998 sw - Really check the IHL? Necessary? */ + + if (IpHeaderLength < 5*4) { + SK_DBG_MSG(pAc, SK_DBGMOD_CSUM, SK_DBGCAT_ERR | SK_DBGCAT_RX, + ("Rx: Invalid IP Header Length %u.\n", IpHeaderLength)); + pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].RxErrCts++; + return (SKCS_STATUS_IP_CSUM_ERROR); + } + + /* This is an IPv4 frame with a header of valid length. */ + + /* Get the IP header and data checksum. */ + + IpDataChecksum = Checksum2; + + /* + * The IP header checksum is calculated as follows: + * + * IpHeaderChecksum = Checksum1 - Checksum2 + */ + + SKCS_OC_SUB(IpHeaderChecksum, Checksum1, Checksum2); + + /* Check if any IP header options. */ + + if (IpHeaderLength > SKCS_IP_HEADER_SIZE) { + + /* Get the IP options checksum. */ + + IpOptionsChecksum = SkCsCalculateChecksum( + SKCS_IDX(pIpHeader, SKCS_IP_HEADER_SIZE), + IpHeaderLength - SKCS_IP_HEADER_SIZE); + + /* Adjust the IP header and IP data checksums. */ + + SKCS_OC_ADD(IpHeaderChecksum, IpHeaderChecksum, IpOptionsChecksum); + + SKCS_OC_SUB(IpDataChecksum, IpDataChecksum, IpOptionsChecksum); + } + + /* + * Check if the IP header checksum is ok. + * + * NOTE: We must check the IP header checksum even if the caller just wants + * us to check upper-layer checksums, because we cannot do any further + * processing of the packet without a valid IP checksum. + */ + + /* Get the next level protocol identifier. */ + + NextLevelProtocol = *(SK_U8 *) + SKCS_IDX(pIpHeader, SKCS_OFS_IP_NEXT_LEVEL_PROTOCOL); + + if (IpHeaderChecksum != 0xffff) { + pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_IP].RxErrCts++; + /* the NDIS tester wants to know the upper level protocol too */ + if (NextLevelProtocol == SKCS_PROTO_ID_TCP) { + return(SKCS_STATUS_IP_CSUM_ERROR_TCP); + } + else if (NextLevelProtocol == SKCS_PROTO_ID_UDP) { + return(SKCS_STATUS_IP_CSUM_ERROR_UDP); + } + return (SKCS_STATUS_IP_CSUM_ERROR); + } + + /* + * Check if this is a TCP or UDP frame and if we should calculate the + * TCP/UDP pseudo header checksum. + * + * Also clear all protocol bit flags of protocols not present in the + * frame. + */ + + if ((pAc->Csum.ReceiveFlags[NetNumber] & SKCS_PROTO_TCP) != 0 && + NextLevelProtocol == SKCS_PROTO_ID_TCP) { + /* TCP/IP frame. */ + NextLevelProtoStats = + &pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_TCP]; + } + else if ((pAc->Csum.ReceiveFlags[NetNumber] & SKCS_PROTO_UDP) != 0 && + NextLevelProtocol == SKCS_PROTO_ID_UDP) { + /* UDP/IP frame. */ + NextLevelProtoStats = + &pAc->Csum.ProtoStats[NetNumber][SKCS_PROTO_STATS_UDP]; + } + else { + /* + * Either not a TCP or UDP frame and/or TCP/UDP processing not + * specified. + */ + return (SKCS_STATUS_IP_CSUM_OK); + } + + /* Check if this is an IP fragment. */ + + /* + * Note: An IP fragment has a non-zero "Fragment Offset" field and/or + * the "More Fragments" bit set. Thus, if both the "Fragment Offset" + * and the "More Fragments" are zero, it is *not* a fragment. We can + * easily check both at the same time since they are in the same 16-bit + * word. + */ + + if ((*(SK_U16 *) + SKCS_IDX(pIpHeader, SKCS_OFS_IP_FLAGS_AND_FRAGMENT_OFFSET) & + ~SKCS_IP_DONT_FRAGMENT) != 0) { + /* IP fragment; ignore all other protocols. */ + NextLevelProtoStats->RxUnableCts++; + return (SKCS_STATUS_IP_FRAGMENT); + } + + /* + * 08-May-2000 ra + * + * From RFC 768 (UDP) + * If the computed checksum is zero, it is transmitted as all ones (the + * equivalent in one's complement arithmetic). An all zero transmitted + * checksum value means that the transmitter generated no checksum (for + * debugging or for higher level protocols that don't care). + */ + + if (NextLevelProtocol == SKCS_PROTO_ID_UDP && + *(SK_U16*)SKCS_IDX(pIpHeader, IpHeaderLength + 6) == 0x0000) { + + NextLevelProtoStats->RxOkCts++; + + return (SKCS_STATUS_IP_CSUM_OK_NO_UDP); + } + + /* + * Calculate the TCP/UDP checksum. + */ + + /* Get total length of IP header and data. */ + + IpDataLength = + *(SK_U16 *) SKCS_IDX(pIpHeader, SKCS_OFS_IP_TOTAL_LENGTH); + + /* Get length of IP data portion. */ + + IpDataLength = SKCS_NTOH16(IpDataLength) - IpHeaderLength; + + NextLevelProtocolChecksum = + + /* Calculate the pseudo header checksum. */ + + (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader, + SKCS_OFS_IP_SOURCE_ADDRESS + 0) + + (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader, + SKCS_OFS_IP_SOURCE_ADDRESS + 2) + + (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader, + SKCS_OFS_IP_DESTINATION_ADDRESS + 0) + + (unsigned long) *(SK_U16 *) SKCS_IDX(pIpHeader, + SKCS_OFS_IP_DESTINATION_ADDRESS + 2) + + (unsigned long) SKCS_HTON16(NextLevelProtocol) + + (unsigned long) SKCS_HTON16(IpDataLength) + + + /* Add the TCP/UDP header checksum. */ + + (unsigned long) IpDataChecksum; + + /* Add-in any carries. */ + + SKCS_OC_ADD(NextLevelProtocolChecksum, NextLevelProtocolChecksum, 0); + + /* Add-in any new carry. */ + + SKCS_OC_ADD(NextLevelProtocolChecksum, NextLevelProtocolChecksum, 0); + + /* Check if the TCP/UDP checksum is ok. */ + + if ((unsigned) NextLevelProtocolChecksum == 0xffff) { + + /* TCP/UDP checksum ok. */ + + NextLevelProtoStats->RxOkCts++; + + return (NextLevelProtocol == SKCS_PROTO_ID_TCP ? + SKCS_STATUS_TCP_CSUM_OK : SKCS_STATUS_UDP_CSUM_OK); + } + + /* TCP/UDP checksum error. */ + + NextLevelProtoStats->RxErrCts++; + + return (NextLevelProtocol == SKCS_PROTO_ID_TCP ? + SKCS_STATUS_TCP_CSUM_ERROR : SKCS_STATUS_UDP_CSUM_ERROR); +} /* SkCsGetReceiveInfo */ + + +/****************************************************************************** + * + * SkCsSetReceiveFlags - set checksum receive flags + * + * Description: + * Use this function to set the various receive flags. According to the + * protocol flags set by the caller, the start offsets within received + * packets of the two hardware checksums are returned. These offsets must + * be stored in all receive descriptors. + * + * Arguments: + * pAc - Pointer to adapter context struct. + * + * ReceiveFlags - Any combination of SK_PROTO_XXX flags of the protocols + * for which the caller wants checksum information on received frames. + * + * pChecksum1Offset - The start offset of the first receive descriptor + * hardware checksum to be calculated for received frames is returned + * here. + * + * pChecksum2Offset - The start offset of the second receive descriptor + * hardware checksum to be calculated for received frames is returned + * here. + * + * Returns: N/A + * Returns the two hardware checksum start offsets. + */ +void SkCsSetReceiveFlags( +SK_AC *pAc, /* Adapter context struct. */ +unsigned ReceiveFlags, /* New receive flags. */ +unsigned *pChecksum1Offset, /* Offset for hardware checksum 1. */ +unsigned *pChecksum2Offset, /* Offset for hardware checksum 2. */ +int NetNumber) +{ + /* Save the receive flags. */ + + pAc->Csum.ReceiveFlags[NetNumber] = ReceiveFlags; + + /* First checksum start offset is the IP header. */ + *pChecksum1Offset = SKCS_MAC_HEADER_SIZE; + + /* + * Second checksum start offset is the IP data. Note that this may vary + * if there are any IP header options in the actual packet. + */ + *pChecksum2Offset = SKCS_MAC_HEADER_SIZE + SKCS_IP_HEADER_SIZE; +} /* SkCsSetReceiveFlags */ + +#ifndef SK_CS_CALCULATE_CHECKSUM + +/****************************************************************************** + * + * SkCsCalculateChecksum - calculate checksum for specified data + * + * Description: + * Calculate and return the 16-bit Internet Checksum for the specified + * data. + * + * Arguments: + * pData - Pointer to data for which the checksum shall be calculated. + * Note: The pointer should be aligned on a 16-bit boundary. + * + * Length - Length in bytes of data to checksum. + * + * Returns: + * The 16-bit Internet Checksum for the specified data. + * + * Note: The checksum is calculated in the machine's natural byte order, + * i.e. little vs. big endian. Thus, the resulting checksum is different + * for the same input data on little and big endian machines. + * + * However, when written back to the network packet, the byte order is + * always in correct network order. + */ +unsigned SkCsCalculateChecksum( +void *pData, /* Data to checksum. */ +unsigned Length) /* Length of data. */ +{ + SK_U16 *pU16; /* Pointer to the data as 16-bit words. */ + unsigned long Checksum; /* Checksum; must be at least 32 bits. */ + + /* Sum up all 16-bit words. */ + + pU16 = (SK_U16 *) pData; + for (Checksum = 0; Length > 1; Length -= 2) { + Checksum += *pU16++; + } + + /* If this is an odd number of bytes, add-in the last byte. */ + + if (Length > 0) { +#ifdef SK_BIG_ENDIAN + /* Add the last byte as the high byte. */ + Checksum += ((unsigned) *(SK_U8 *) pU16) << 8; +#else /* !SK_BIG_ENDIAN */ + /* Add the last byte as the low byte. */ + Checksum += *(SK_U8 *) pU16; +#endif /* !SK_BIG_ENDIAN */ + } + + /* Add-in any carries. */ + + SKCS_OC_ADD(Checksum, Checksum, 0); + + /* Add-in any new carry. */ + + SKCS_OC_ADD(Checksum, Checksum, 0); + + /* Note: All bits beyond the 16-bit limit are now zero. */ + + return ((unsigned) Checksum); +} /* SkCsCalculateChecksum */ + +#endif /* SK_CS_CALCULATE_CHECKSUM */ + +/****************************************************************************** + * + * SkCsEvent - the CSUM event dispatcher + * + * Description: + * This is the event handler for the CSUM module. + * + * Arguments: + * pAc - Pointer to adapter context. + * + * Ioc - I/O context. + * + * Event - Event id. + * + * Param - Event dependent parameter. + * + * Returns: + * The 16-bit Internet Checksum for the specified data. + * + * Note: The checksum is calculated in the machine's natural byte order, + * i.e. little vs. big endian. Thus, the resulting checksum is different + * for the same input data on little and big endian machines. + * + * However, when written back to the network packet, the byte order is + * always in correct network order. + */ +int SkCsEvent( +SK_AC *pAc, /* Pointer to adapter context. */ +SK_IOC Ioc, /* I/O context. */ +SK_U32 Event, /* Event id. */ +SK_EVPARA Param) /* Event dependent parameter. */ +{ + int ProtoIndex; + int NetNumber; + + switch (Event) { + /* + * Clear protocol statistics. + * + * Param - Protocol index, or -1 for all protocols. + * - Net number. + */ + case SK_CSUM_EVENT_CLEAR_PROTO_STATS: + + ProtoIndex = (int)Param.Para32[1]; + NetNumber = (int)Param.Para32[0]; + if (ProtoIndex < 0) { /* Clear for all protocols. */ + if (NetNumber >= 0) { + SK_MEMSET(&pAc->Csum.ProtoStats[NetNumber][0], 0, + sizeof(pAc->Csum.ProtoStats[NetNumber])); + } + } + else { /* Clear for individual protocol. */ + SK_MEMSET(&pAc->Csum.ProtoStats[NetNumber][ProtoIndex], 0, + sizeof(pAc->Csum.ProtoStats[NetNumber][ProtoIndex])); + } + break; + default: + break; + } + return (0); /* Success. */ +} /* SkCsEvent */ + +#endif /* SK_USE_CSUM */ --- linux-source-2.6.15-2.6.15.orig/drivers/net/skge.c +++ linux-source-2.6.15-2.6.15/drivers/net/skge.c @@ -44,7 +44,7 @@ #include "skge.h" #define DRV_NAME "skge" -#define DRV_VERSION "1.3" +#define DRV_VERSION "1.5" #define PFX DRV_NAME " " #define DEFAULT_TX_RING_SIZE 128 @@ -77,7 +77,9 @@ { PCI_DEVICE(PCI_VENDOR_ID_3COM, PCI_DEVICE_ID_3COM_3C940B) }, { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_GE) }, { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_YU) }, + { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, 0x9E00) }, /* SK-9Exx */ { PCI_DEVICE(PCI_VENDOR_ID_DLINK, PCI_DEVICE_ID_DLINK_DGE510T), }, +// { PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4b01) }, /* DGE-530T */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4320) }, { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x5005) }, /* Belkin */ { PCI_DEVICE(PCI_VENDOR_ID_CNET, PCI_DEVICE_ID_CNET_GIGACARD) }, @@ -104,7 +106,6 @@ static const int rxqaddr[] = { Q_R1, Q_R2 }; static const u32 rxirqmask[] = { IS_R1_F, IS_R2_F }; static const u32 txirqmask[] = { IS_XA1_F, IS_XA2_F }; -static const u32 portirqmask[] = { IS_PORT_1, IS_PORT_2 }; static int skge_get_regs_len(struct net_device *dev) { @@ -358,7 +359,7 @@ skge->net_stats.rx_bytes = data[1]; skge->net_stats.tx_packets = data[2] + data[4] + data[6]; skge->net_stats.rx_packets = data[3] + data[5] + data[7]; - skge->net_stats.multicast = data[5] + data[7]; + skge->net_stats.multicast = data[3] + data[5]; skge->net_stats.collisions = data[10]; skge->net_stats.tx_aborted_errors = data[12]; @@ -401,7 +402,7 @@ int err; if (p->rx_pending == 0 || p->rx_pending > MAX_RX_RING_SIZE || - p->tx_pending == 0 || p->tx_pending > MAX_TX_RING_SIZE) + p->tx_pending < MAX_SKB_FRAGS+1 || p->tx_pending > MAX_TX_RING_SIZE) return -EINVAL; skge->rx_ring.count = p->rx_pending; @@ -728,19 +729,18 @@ * Allocate ring elements and chain them together * One-to-one association of board descriptors with ring elements */ -static int skge_ring_alloc(struct skge_ring *ring, void *vaddr, u64 base) +static int skge_ring_alloc(struct skge_ring *ring, void *vaddr, u32 base) { struct skge_tx_desc *d; struct skge_element *e; int i; - ring->start = kmalloc(sizeof(*e)*ring->count, GFP_KERNEL); + ring->start = kcalloc(sizeof(*e), ring->count, GFP_KERNEL); if (!ring->start) return -ENOMEM; for (i = 0, e = ring->start, d = vaddr; i < ring->count; i++, e++, d++) { e->desc = d; - e->skb = NULL; if (i == ring->count - 1) { e->next = ring->start; d->next_offset = base; @@ -783,7 +783,7 @@ * Note: DMA address is not changed by chip. * MTU not changed while receiver active. */ -static void skge_rx_reuse(struct skge_element *e, unsigned int size) +static inline void skge_rx_reuse(struct skge_element *e, unsigned int size) { struct skge_rx_desc *rd = e->desc; @@ -831,7 +831,7 @@ do { struct sk_buff *skb; - skb = dev_alloc_skb(skge->rx_buf_size + NET_IP_ALIGN); + skb = alloc_skb(skge->rx_buf_size + NET_IP_ALIGN, GFP_KERNEL); if (!skb) return -ENOMEM; @@ -849,8 +849,7 @@ LED_BLK_OFF|LED_SYNC_OFF|LED_ON); netif_carrier_on(skge->netdev); - if (skge->tx_avail > MAX_SKB_FRAGS + 1) - netif_wake_queue(skge->netdev); + netif_wake_queue(skge->netdev); if (netif_msg_link(skge)) printk(KERN_INFO PFX @@ -2157,7 +2156,7 @@ printk(KERN_INFO PFX "%s: enabling interface\n", dev->name); if (dev->mtu > RX_BUF_SIZE) - skge->rx_buf_size = dev->mtu + ETH_HLEN + NET_IP_ALIGN; + skge->rx_buf_size = dev->mtu + ETH_HLEN; else skge->rx_buf_size = RX_BUF_SIZE; @@ -2169,27 +2168,29 @@ if (!skge->mem) return -ENOMEM; + BUG_ON(skge->dma & 7); + + if ((u64)skge->dma >> 32 != ((u64) skge->dma + skge->mem_size) >> 32) { + printk(KERN_ERR PFX "pci_alloc_consistent region crosses 4G boundary\n"); + err = -EINVAL; + goto free_pci_mem; + } + memset(skge->mem, 0, skge->mem_size); - if ((err = skge_ring_alloc(&skge->rx_ring, skge->mem, skge->dma))) + err = skge_ring_alloc(&skge->rx_ring, skge->mem, skge->dma); + if (err) goto free_pci_mem; err = skge_rx_fill(skge); if (err) goto free_rx_ring; - if ((err = skge_ring_alloc(&skge->tx_ring, skge->mem + rx_size, - skge->dma + rx_size))) + err = skge_ring_alloc(&skge->tx_ring, skge->mem + rx_size, + skge->dma + rx_size); + if (err) goto free_rx_ring; - skge->tx_avail = skge->tx_ring.count - 1; - - /* Enable IRQ from port */ - spin_lock_irq(&hw->hw_lock); - hw->intr_mask |= portirqmask[port]; - skge_write32(hw, B0_IMSK, hw->intr_mask); - spin_unlock_irq(&hw->hw_lock); - /* Initialize MAC */ spin_lock_bh(&hw->phy_lock); if (hw->chip_id == CHIP_ID_GENESIS) @@ -2246,11 +2247,6 @@ else yukon_stop(skge); - spin_lock_irq(&hw->hw_lock); - hw->intr_mask &= ~portirqmask[skge->port]; - skge_write32(hw, B0_IMSK, hw->intr_mask); - spin_unlock_irq(&hw->hw_lock); - /* Stop transmitter */ skge_write8(hw, Q_ADDR(txqaddr[port], Q_CSR), CSR_STOP); skge_write32(hw, RB_ADDR(txqaddr[port], RB_CTRL), @@ -2297,6 +2293,12 @@ return 0; } +static inline int skge_avail(const struct skge_ring *ring) +{ + return ((ring->to_clean > ring->to_use) ? 0 : ring->count) + + (ring->to_clean - ring->to_use) - 1; +} + static int skge_xmit_frame(struct sk_buff *skb, struct net_device *dev) { struct skge_port *skge = netdev_priv(dev); @@ -2307,27 +2309,24 @@ int i; u32 control, len; u64 map; - unsigned long flags; skb = skb_padto(skb, ETH_ZLEN); if (!skb) return NETDEV_TX_OK; - local_irq_save(flags); if (!spin_trylock(&skge->tx_lock)) { - /* Collision - tell upper layer to requeue */ - local_irq_restore(flags); - return NETDEV_TX_LOCKED; - } + /* Collision - tell upper layer to requeue */ + return NETDEV_TX_LOCKED; + } - if (unlikely(skge->tx_avail < skb_shinfo(skb)->nr_frags +1)) { + if (unlikely(skge_avail(&skge->tx_ring) < skb_shinfo(skb)->nr_frags + 1)) { if (!netif_queue_stopped(dev)) { netif_stop_queue(dev); printk(KERN_WARNING PFX "%s: ring full when queue awake!\n", dev->name); } - spin_unlock_irqrestore(&skge->tx_lock, flags); + spin_unlock(&skge->tx_lock); return NETDEV_TX_BUSY; } @@ -2396,49 +2395,51 @@ dev->name, e - ring->start, skb->len); ring->to_use = e->next; - skge->tx_avail -= skb_shinfo(skb)->nr_frags + 1; - if (skge->tx_avail <= MAX_SKB_FRAGS + 1) { + if (skge_avail(&skge->tx_ring) <= MAX_SKB_FRAGS + 1) { pr_debug("%s: transmit queue full\n", dev->name); netif_stop_queue(dev); } + mmiowb(); + spin_unlock(&skge->tx_lock); + dev->trans_start = jiffies; - spin_unlock_irqrestore(&skge->tx_lock, flags); return NETDEV_TX_OK; } -static inline void skge_tx_free(struct skge_hw *hw, struct skge_element *e) +static void skge_tx_complete(struct skge_port *skge, struct skge_element *last) { - /* This ring element can be skb or fragment */ - if (e->skb) { - pci_unmap_single(hw->pdev, - pci_unmap_addr(e, mapaddr), - pci_unmap_len(e, maplen), - PCI_DMA_TODEVICE); - dev_kfree_skb_any(e->skb); + struct pci_dev *pdev = skge->hw->pdev; + struct skge_element *e; + + for (e = skge->tx_ring.to_clean; e != last; e = e->next) { + struct sk_buff *skb = e->skb; + int i; + e->skb = NULL; - } else { - pci_unmap_page(hw->pdev, - pci_unmap_addr(e, mapaddr), - pci_unmap_len(e, maplen), - PCI_DMA_TODEVICE); + pci_unmap_single(pdev, pci_unmap_addr(e, mapaddr), + skb_headlen(skb), PCI_DMA_TODEVICE); + + for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { + e = e->next; + pci_unmap_page(pdev, pci_unmap_addr(e, mapaddr), + skb_shinfo(skb)->frags[i].size, + PCI_DMA_TODEVICE); + } + + dev_kfree_skb(skb); } + skge->tx_ring.to_clean = e; } static void skge_tx_clean(struct skge_port *skge) { - struct skge_ring *ring = &skge->tx_ring; - struct skge_element *e; - unsigned long flags; - spin_lock_irqsave(&skge->tx_lock, flags); - for (e = ring->to_clean; e != ring->to_use; e = e->next) { - ++skge->tx_avail; - skge_tx_free(skge->hw, e); - } - ring->to_clean = e; - spin_unlock_irqrestore(&skge->tx_lock, flags); + spin_lock_bh(&skge->tx_lock); + skge_tx_complete(skge, skge->tx_ring.to_use); + netif_wake_queue(skge->netdev); + spin_unlock_bh(&skge->tx_lock); } static void skge_tx_timeout(struct net_device *dev) @@ -2597,7 +2598,7 @@ goto error; if (len < RX_COPY_THRESHOLD) { - skb = dev_alloc_skb(len + 2); + skb = alloc_skb(len + 2, GFP_ATOMIC); if (!skb) goto resubmit; @@ -2612,10 +2613,11 @@ skge_rx_reuse(e, skge->rx_buf_size); } else { struct sk_buff *nskb; - nskb = dev_alloc_skb(skge->rx_buf_size + NET_IP_ALIGN); + nskb = alloc_skb(skge->rx_buf_size + NET_IP_ALIGN, GFP_ATOMIC); if (!nskb) goto resubmit; + skb_reserve(nskb, NET_IP_ALIGN); pci_unmap_single(skge->hw->pdev, pci_unmap_addr(e, mapaddr), pci_unmap_len(e, maplen), @@ -2663,6 +2665,36 @@ return NULL; } +static void skge_tx_done(struct skge_port *skge) +{ + struct skge_ring *ring = &skge->tx_ring; + struct skge_element *e, *last; + + spin_lock(&skge->tx_lock); + last = ring->to_clean; + for (e = ring->to_clean; e != ring->to_use; e = e->next) { + struct skge_tx_desc *td = e->desc; + + if (td->control & BMU_OWN) + break; + + if (td->control & BMU_EOF) { + last = e->next; + if (unlikely(netif_msg_tx_done(skge))) + printk(KERN_DEBUG PFX "%s: tx done slot %td\n", + skge->netdev->name, e - ring->start); + } + } + + skge_tx_complete(skge, last); + + skge_write8(skge->hw, Q_ADDR(txqaddr[skge->port], Q_CSR), CSR_IRQ_CL_F); + + if (skge_avail(&skge->tx_ring) > MAX_SKB_FRAGS + 1) + netif_wake_queue(skge->netdev); + + spin_unlock(&skge->tx_lock); +} static int skge_poll(struct net_device *dev, int *budget) { @@ -2670,8 +2702,10 @@ struct skge_hw *hw = skge->hw; struct skge_ring *ring = &skge->rx_ring; struct skge_element *e; - unsigned int to_do = min(dev->quota, *budget); - unsigned int work_done = 0; + int to_do = min(dev->quota, *budget); + int work_done = 0; + + skge_tx_done(skge); for (e = ring->to_clean; prefetch(e->next), work_done < to_do; e = e->next) { struct skge_rx_desc *rd = e->desc; @@ -2683,15 +2717,13 @@ if (control & BMU_OWN) break; - skb = skge_rx_get(skge, e, control, rd->status, - le16_to_cpu(rd->csum2)); + skb = skge_rx_get(skge, e, control, rd->status, rd->csum2); if (likely(skb)) { dev->last_rx = jiffies; netif_receive_skb(skb); ++work_done; - } else - skge_rx_reuse(e, skge->rx_buf_size); + } } ring->to_clean = e; @@ -2705,49 +2737,15 @@ if (work_done >= to_do) return 1; /* not done */ - spin_lock_irq(&hw->hw_lock); - __netif_rx_complete(dev); - hw->intr_mask |= portirqmask[skge->port]; + netif_rx_complete(dev); + mmiowb(); + + hw->intr_mask |= skge->port == 0 ? (IS_R1_F|IS_XA1_F) : (IS_R2_F|IS_XA2_F); skge_write32(hw, B0_IMSK, hw->intr_mask); - spin_unlock_irq(&hw->hw_lock); return 0; } -static inline void skge_tx_intr(struct net_device *dev) -{ - struct skge_port *skge = netdev_priv(dev); - struct skge_hw *hw = skge->hw; - struct skge_ring *ring = &skge->tx_ring; - struct skge_element *e; - - spin_lock(&skge->tx_lock); - for (e = ring->to_clean; prefetch(e->next), e != ring->to_use; e = e->next) { - struct skge_tx_desc *td = e->desc; - u32 control; - - rmb(); - control = td->control; - if (control & BMU_OWN) - break; - - if (unlikely(netif_msg_tx_done(skge))) - printk(KERN_DEBUG PFX "%s: tx done slot %td status 0x%x\n", - dev->name, e - ring->start, td->status); - - skge_tx_free(hw, e); - e->skb = NULL; - ++skge->tx_avail; - } - ring->to_clean = e; - skge_write8(hw, Q_ADDR(txqaddr[skge->port], Q_CSR), CSR_IRQ_CL_F); - - if (skge->tx_avail > MAX_SKB_FRAGS + 1) - netif_wake_queue(dev); - - spin_unlock(&skge->tx_lock); -} - /* Parity errors seem to happen when Genesis is connected to a switch * with no other ports present. Heartbeat error?? */ @@ -2770,17 +2768,6 @@ ? GMF_CLI_TX_FC : GMF_CLI_TX_PE); } -static void skge_pci_clear(struct skge_hw *hw) -{ - u16 status; - - pci_read_config_word(hw->pdev, PCI_STATUS, &status); - skge_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON); - pci_write_config_word(hw->pdev, PCI_STATUS, - status | PCI_STATUS_ERROR_BITS); - skge_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF); -} - static void skge_mac_intr(struct skge_hw *hw, int port) { if (hw->chip_id == CHIP_ID_GENESIS) @@ -2822,23 +2809,39 @@ if (hwstatus & IS_M2_PAR_ERR) skge_mac_parity(hw, 1); - if (hwstatus & IS_R1_PAR_ERR) + if (hwstatus & IS_R1_PAR_ERR) { + printk(KERN_ERR PFX "%s: receive queue parity error\n", + hw->dev[0]->name); skge_write32(hw, B0_R1_CSR, CSR_IRQ_CL_P); + } - if (hwstatus & IS_R2_PAR_ERR) + if (hwstatus & IS_R2_PAR_ERR) { + printk(KERN_ERR PFX "%s: receive queue parity error\n", + hw->dev[1]->name); skge_write32(hw, B0_R2_CSR, CSR_IRQ_CL_P); + } if (hwstatus & (IS_IRQ_MST_ERR|IS_IRQ_STAT)) { - printk(KERN_ERR PFX "hardware error detected (status 0x%x)\n", - hwstatus); + u16 pci_status, pci_cmd; - skge_pci_clear(hw); + pci_read_config_word(hw->pdev, PCI_COMMAND, &pci_cmd); + pci_read_config_word(hw->pdev, PCI_STATUS, &pci_status); + + printk(KERN_ERR PFX "%s: PCI error cmd=%#x status=%#x\n", + pci_name(hw->pdev), pci_cmd, pci_status); + + /* Write the error bits back to clear them. */ + pci_status &= PCI_STATUS_ERROR_BITS; + skge_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON); + pci_write_config_word(hw->pdev, PCI_COMMAND, + pci_cmd | PCI_COMMAND_SERR | PCI_COMMAND_PARITY); + pci_write_config_word(hw->pdev, PCI_STATUS, pci_status); + skge_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF); /* if error still set then just ignore it */ hwstatus = skge_read32(hw, B0_HWE_ISRC); if (hwstatus & IS_IRQ_STAT) { - pr_debug("IRQ status %x: still set ignoring hardware errors\n", - hwstatus); + printk(KERN_INFO PFX "unable to clear error (so ignoring them)\n"); hw->intr_mask &= ~IS_HW_ERR; } } @@ -2855,12 +2858,11 @@ int port; spin_lock(&hw->phy_lock); - for (port = 0; port < 2; port++) { + for (port = 0; port < hw->ports; port++) { struct net_device *dev = hw->dev[port]; + struct skge_port *skge = netdev_priv(dev); - if (dev && netif_running(dev)) { - struct skge_port *skge = netdev_priv(dev); - + if (netif_running(dev)) { if (hw->chip_id != CHIP_ID_GENESIS) yukon_phy_intr(skge); else @@ -2869,38 +2871,39 @@ } spin_unlock(&hw->phy_lock); - spin_lock_irq(&hw->hw_lock); hw->intr_mask |= IS_EXT_REG; skge_write32(hw, B0_IMSK, hw->intr_mask); - spin_unlock_irq(&hw->hw_lock); } static irqreturn_t skge_intr(int irq, void *dev_id, struct pt_regs *regs) { struct skge_hw *hw = dev_id; - u32 status = skge_read32(hw, B0_SP_ISRC); + u32 status; - if (status == 0 || status == ~0) /* hotplug or shared irq */ + /* Reading this register masks IRQ */ + status = skge_read32(hw, B0_SP_ISRC); + if (status == 0) return IRQ_NONE; - spin_lock(&hw->hw_lock); - if (status & IS_R1_F) { + if (status & IS_EXT_REG) { + hw->intr_mask &= ~IS_EXT_REG; + tasklet_schedule(&hw->ext_tasklet); + } + + if (status & (IS_R1_F|IS_XA1_F)) { skge_write8(hw, Q_ADDR(Q_R1, Q_CSR), CSR_IRQ_CL_F); - hw->intr_mask &= ~IS_R1_F; + hw->intr_mask &= ~(IS_R1_F|IS_XA1_F); netif_rx_schedule(hw->dev[0]); } - if (status & IS_R2_F) { + if (status & (IS_R2_F|IS_XA2_F)) { skge_write8(hw, Q_ADDR(Q_R2, Q_CSR), CSR_IRQ_CL_F); - hw->intr_mask &= ~IS_R2_F; + hw->intr_mask &= ~(IS_R2_F|IS_XA2_F); netif_rx_schedule(hw->dev[1]); } - if (status & IS_XA1_F) - skge_tx_intr(hw->dev[0]); - - if (status & IS_XA2_F) - skge_tx_intr(hw->dev[1]); + if (likely((status & hw->intr_mask) == 0)) + return IRQ_HANDLED; if (status & IS_PA_TO_RX1) { struct skge_port *skge = netdev_priv(hw->dev[0]); @@ -2929,13 +2932,7 @@ if (status & IS_HW_ERR) skge_error_irq(hw); - if (status & IS_EXT_REG) { - hw->intr_mask &= ~IS_EXT_REG; - tasklet_schedule(&hw->ext_tasklet); - } - skge_write32(hw, B0_IMSK, hw->intr_mask); - spin_unlock(&hw->hw_lock); return IRQ_HANDLED; } @@ -3010,7 +3007,7 @@ static int skge_reset(struct skge_hw *hw) { u32 reg; - u16 ctst; + u16 ctst, pci_status; u8 t8, mac_cfg, pmd_type, phy_type; int i; @@ -3021,8 +3018,13 @@ skge_write8(hw, B0_CTST, CS_RST_CLR); /* clear PCI errors, if any */ - skge_pci_clear(hw); + skge_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_ON); + skge_write8(hw, B2_TST_CTRL2, 0); + pci_read_config_word(hw->pdev, PCI_STATUS, &pci_status); + pci_write_config_word(hw->pdev, PCI_STATUS, + pci_status | PCI_STATUS_ERROR_BITS); + skge_write8(hw, B2_TST_CTRL1, TST_CFG_WRITE_OFF); skge_write8(hw, B0_CTST, CS_MRST_CLR); /* restore CLK_RUN bits (for Yukon-Lite) */ @@ -3081,7 +3083,10 @@ else hw->ram_size = t8 * 4096; - hw->intr_mask = IS_HW_ERR | IS_EXT_REG; + hw->intr_mask = IS_HW_ERR | IS_EXT_REG | IS_PORT_1; + if (hw->ports > 1) + hw->intr_mask |= IS_PORT_2; + if (hw->chip_id == CHIP_ID_GENESIS) genesis_init(hw); else { @@ -3251,13 +3256,15 @@ struct skge_hw *hw; int err, using_dac = 0; - if ((err = pci_enable_device(pdev))) { + err = pci_enable_device(pdev); + if (err) { printk(KERN_ERR PFX "%s cannot enable PCI device\n", pci_name(pdev)); goto err_out; } - if ((err = pci_request_regions(pdev, DRV_NAME))) { + err = pci_request_regions(pdev, DRV_NAME); + if (err) { printk(KERN_ERR PFX "%s cannot obtain PCI resources\n", pci_name(pdev)); goto err_out_disable_pdev; @@ -3265,22 +3272,18 @@ pci_set_master(pdev); - if (sizeof(dma_addr_t) > sizeof(u32) && - !(err = pci_set_dma_mask(pdev, DMA_64BIT_MASK))) { + if (!pci_set_dma_mask(pdev, DMA_64BIT_MASK)) { using_dac = 1; err = pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK); - if (err < 0) { - printk(KERN_ERR PFX "%s unable to obtain 64 bit DMA " - "for consistent allocations\n", pci_name(pdev)); - goto err_out_free_regions; - } - } else { - err = pci_set_dma_mask(pdev, DMA_32BIT_MASK); - if (err) { - printk(KERN_ERR PFX "%s no usable DMA configuration\n", - pci_name(pdev)); - goto err_out_free_regions; - } + } else if (!(err = pci_set_dma_mask(pdev, DMA_32BIT_MASK))) { + using_dac = 0; + err = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK); + } + + if (err) { + printk(KERN_ERR PFX "%s no usable DMA configuration\n", + pci_name(pdev)); + goto err_out_free_regions; } #ifdef __BIG_ENDIAN @@ -3304,7 +3307,6 @@ hw->pdev = pdev; spin_lock_init(&hw->phy_lock); - spin_lock_init(&hw->hw_lock); tasklet_init(&hw->ext_tasklet, skge_extirq, (unsigned long) hw); hw->regs = ioremap_nocache(pci_resource_start(pdev, 0), 0x4000); @@ -3314,7 +3316,8 @@ goto err_out_free_hw; } - if ((err = request_irq(pdev->irq, skge_intr, SA_SHIRQ, DRV_NAME, hw))) { + err = request_irq(pdev->irq, skge_intr, SA_SHIRQ, DRV_NAME, hw); + if (err) { printk(KERN_ERR PFX "%s: cannot assign irq %d\n", pci_name(pdev), pdev->irq); goto err_out_iounmap; @@ -3332,7 +3335,8 @@ if ((dev = skge_devinit(hw, 0, using_dac)) == NULL) goto err_out_led_off; - if ((err = register_netdev(dev))) { + err = register_netdev(dev); + if (err) { printk(KERN_ERR PFX "%s: cannot register net device\n", pci_name(pdev)); goto err_out_free_netdev; @@ -3387,7 +3391,6 @@ skge_write32(hw, B0_IMSK, 0); skge_write16(hw, B0_LED, LED_STAT_OFF); - skge_pci_clear(hw); skge_write8(hw, B0_CTST, CS_RST_SET); tasklet_kill(&hw->ext_tasklet); --- linux-source-2.6.15-2.6.15.orig/drivers/net/tg3.h +++ linux-source-2.6.15-2.6.15/drivers/net/tg3.h @@ -2162,6 +2162,8 @@ #define TG3_FLAG_JUMBO_RING_ENABLE 0x00800000 #define TG3_FLAG_10_100_ONLY 0x01000000 #define TG3_FLAG_PAUSE_AUTONEG 0x02000000 +#define TG3_FLAG_IN_RESET_TASK 0x04000000 +#define TG3_FLAG_40BIT_DMA_BUG 0x08000000 #define TG3_FLAG_BROKEN_CHECKSUMS 0x10000000 #define TG3_FLAG_GOT_SERDES_FLOWCTL 0x20000000 #define TG3_FLAG_SPLIT_MODE 0x40000000 @@ -2275,6 +2277,7 @@ dma_addr_t stats_mapping; struct work_struct reset_task; + int nvram_lock_cnt; u32 nvram_size; u32 nvram_pagesize; u32 nvram_jedecnum; --- linux-source-2.6.15-2.6.15.orig/drivers/net/sky2.h +++ linux-source-2.6.15-2.6.15/drivers/net/sky2.h @@ -214,6 +214,8 @@ enum { Y2_VMAIN_AVAIL = 1<<17,/* VMAIN available (YUKON-2 only) */ Y2_VAUX_AVAIL = 1<<16,/* VAUX available (YUKON-2 only) */ + Y2_HW_WOL_ON = 1<<15,/* HW WOL On (Yukon-EC Ultra A1 only) */ + Y2_HW_WOL_OFF = 1<<14,/* HW WOL On (Yukon-EC Ultra A1 only) */ Y2_ASF_ENABLE = 1<<13,/* ASF Unit Enable (YUKON-2 only) */ Y2_ASF_DISABLE = 1<<12,/* ASF Unit Disable (YUKON-2 only) */ Y2_CLK_RUN_ENA = 1<<11,/* CLK_RUN Enable (YUKON-2 only) */ @@ -278,13 +280,11 @@ Y2_IS_CHK_TXS1 = 1<<1, /* Descriptor error TXS 1 */ Y2_IS_CHK_TXA1 = 1<<0, /* Descriptor error TXA 1 */ - Y2_IS_BASE = Y2_IS_HW_ERR | Y2_IS_STAT_BMU | - Y2_IS_POLL_CHK | Y2_IS_TWSI_RDY | - Y2_IS_IRQ_SW | Y2_IS_TIMINT, - Y2_IS_PORT_1 = Y2_IS_IRQ_PHY1 | Y2_IS_IRQ_MAC1 | - Y2_IS_CHK_RX1 | Y2_IS_CHK_TXA1 | Y2_IS_CHK_TXS1, - Y2_IS_PORT_2 = Y2_IS_IRQ_PHY2 | Y2_IS_IRQ_MAC2 | - Y2_IS_CHK_RX2 | Y2_IS_CHK_TXA2 | Y2_IS_CHK_TXS2, + Y2_IS_BASE = Y2_IS_HW_ERR | Y2_IS_STAT_BMU, + Y2_IS_PORT_1 = Y2_IS_IRQ_PHY1 | Y2_IS_IRQ_MAC1 + | Y2_IS_CHK_TXA1 | Y2_IS_CHK_RX1, + Y2_IS_PORT_2 = Y2_IS_IRQ_PHY2 | Y2_IS_IRQ_MAC2 + | Y2_IS_CHK_TXA2 | Y2_IS_CHK_RX2, }; /* B2_IRQM_HWE_MSK 32 bit IRQ Moderation HW Error Mask */ @@ -380,6 +380,9 @@ CHIP_REV_YU_EC_A1 = 0, /* Chip Rev. for Yukon-EC A1/A0 */ CHIP_REV_YU_EC_A2 = 1, /* Chip Rev. for Yukon-EC A2 */ CHIP_REV_YU_EC_A3 = 2, /* Chip Rev. for Yukon-EC A3 */ + + CHIP_REV_YU_EC_U_A0 = 0, + CHIP_REV_YU_EC_U_A1 = 1, }; /* B2_Y2_CLK_GATE 8 bit Clock Gating (Yukon-2 only) */ @@ -1375,24 +1378,23 @@ GM_SMI_CTRL = 0x0080, /* 16 bit r/w SMI Control Register */ GM_SMI_DATA = 0x0084, /* 16 bit r/w SMI Data Register */ GM_PHY_ADDR = 0x0088, /* 16 bit r/w GPHY Address Register */ +/* MIB Counters */ + GM_MIB_CNT_BASE = 0x0100, /* Base Address of MIB Counters */ + GM_MIB_CNT_END = 0x025C, /* Last MIB counter */ }; -/* MIB Counters */ -#define GM_MIB_CNT_BASE 0x0100 /* Base Address of MIB Counters */ -#define GM_MIB_CNT_SIZE 44 /* Number of MIB Counters */ -#define GM_MIB_CNT_END 0x025C /* Last MIB counter */ /* * MIB Counters base address definitions (low word) - * use offset 4 for access to high word (32 bit r/o) */ enum { - GM_RXF_UC_OK = GM_MIB_CNT_BASE + 0, /* Unicast Frames Received OK */ + GM_RXF_UC_OK = GM_MIB_CNT_BASE + 0, /* Unicast Frames Received OK */ GM_RXF_BC_OK = GM_MIB_CNT_BASE + 8, /* Broadcast Frames Received OK */ GM_RXF_MPAUSE = GM_MIB_CNT_BASE + 16, /* Pause MAC Ctrl Frames Received */ GM_RXF_MC_OK = GM_MIB_CNT_BASE + 24, /* Multicast Frames Received OK */ GM_RXF_FCS_ERR = GM_MIB_CNT_BASE + 32, /* Rx Frame Check Seq. Error */ - /* GM_MIB_CNT_BASE + 40: reserved */ + GM_RXO_OK_LO = GM_MIB_CNT_BASE + 48, /* Octets Received OK Low */ GM_RXO_OK_HI = GM_MIB_CNT_BASE + 56, /* Octets Received OK High */ GM_RXO_ERR_LO = GM_MIB_CNT_BASE + 64, /* Octets Received Invalid Low */ @@ -1400,37 +1402,36 @@ GM_RXF_SHT = GM_MIB_CNT_BASE + 80, /* Frames <64 Byte Received OK */ GM_RXE_FRAG = GM_MIB_CNT_BASE + 88, /* Frames <64 Byte Received with FCS Err */ GM_RXF_64B = GM_MIB_CNT_BASE + 96, /* 64 Byte Rx Frame */ - GM_RXF_127B = GM_MIB_CNT_BASE + 104, /* 65-127 Byte Rx Frame */ - GM_RXF_255B = GM_MIB_CNT_BASE + 112, /* 128-255 Byte Rx Frame */ - GM_RXF_511B = GM_MIB_CNT_BASE + 120, /* 256-511 Byte Rx Frame */ - GM_RXF_1023B = GM_MIB_CNT_BASE + 128, /* 512-1023 Byte Rx Frame */ - GM_RXF_1518B = GM_MIB_CNT_BASE + 136, /* 1024-1518 Byte Rx Frame */ - GM_RXF_MAX_SZ = GM_MIB_CNT_BASE + 144, /* 1519-MaxSize Byte Rx Frame */ - GM_RXF_LNG_ERR = GM_MIB_CNT_BASE + 152, /* Rx Frame too Long Error */ - GM_RXF_JAB_PKT = GM_MIB_CNT_BASE + 160, /* Rx Jabber Packet Frame */ - /* GM_MIB_CNT_BASE + 168: reserved */ - GM_RXE_FIFO_OV = GM_MIB_CNT_BASE + 176, /* Rx FIFO overflow Event */ - /* GM_MIB_CNT_BASE + 184: reserved */ - GM_TXF_UC_OK = GM_MIB_CNT_BASE + 192, /* Unicast Frames Xmitted OK */ - GM_TXF_BC_OK = GM_MIB_CNT_BASE + 200, /* Broadcast Frames Xmitted OK */ - GM_TXF_MPAUSE = GM_MIB_CNT_BASE + 208, /* Pause MAC Ctrl Frames Xmitted */ - GM_TXF_MC_OK = GM_MIB_CNT_BASE + 216, /* Multicast Frames Xmitted OK */ - GM_TXO_OK_LO = GM_MIB_CNT_BASE + 224, /* Octets Transmitted OK Low */ - GM_TXO_OK_HI = GM_MIB_CNT_BASE + 232, /* Octets Transmitted OK High */ - GM_TXF_64B = GM_MIB_CNT_BASE + 240, /* 64 Byte Tx Frame */ - GM_TXF_127B = GM_MIB_CNT_BASE + 248, /* 65-127 Byte Tx Frame */ - GM_TXF_255B = GM_MIB_CNT_BASE + 256, /* 128-255 Byte Tx Frame */ - GM_TXF_511B = GM_MIB_CNT_BASE + 264, /* 256-511 Byte Tx Frame */ - GM_TXF_1023B = GM_MIB_CNT_BASE + 272, /* 512-1023 Byte Tx Frame */ - GM_TXF_1518B = GM_MIB_CNT_BASE + 280, /* 1024-1518 Byte Tx Frame */ - GM_TXF_MAX_SZ = GM_MIB_CNT_BASE + 288, /* 1519-MaxSize Byte Tx Frame */ - - GM_TXF_COL = GM_MIB_CNT_BASE + 304, /* Tx Collision */ - GM_TXF_LAT_COL = GM_MIB_CNT_BASE + 312, /* Tx Late Collision */ - GM_TXF_ABO_COL = GM_MIB_CNT_BASE + 320, /* Tx aborted due to Exces. Col. */ - GM_TXF_MUL_COL = GM_MIB_CNT_BASE + 328, /* Tx Multiple Collision */ - GM_TXF_SNG_COL = GM_MIB_CNT_BASE + 336, /* Tx Single Collision */ - GM_TXE_FIFO_UR = GM_MIB_CNT_BASE + 344, /* Tx FIFO Underrun Event */ + GM_RXF_127B = GM_MIB_CNT_BASE + 104,/* 65-127 Byte Rx Frame */ + GM_RXF_255B = GM_MIB_CNT_BASE + 112,/* 128-255 Byte Rx Frame */ + GM_RXF_511B = GM_MIB_CNT_BASE + 120,/* 256-511 Byte Rx Frame */ + GM_RXF_1023B = GM_MIB_CNT_BASE + 128,/* 512-1023 Byte Rx Frame */ + GM_RXF_1518B = GM_MIB_CNT_BASE + 136,/* 1024-1518 Byte Rx Frame */ + GM_RXF_MAX_SZ = GM_MIB_CNT_BASE + 144,/* 1519-MaxSize Byte Rx Frame */ + GM_RXF_LNG_ERR = GM_MIB_CNT_BASE + 152,/* Rx Frame too Long Error */ + GM_RXF_JAB_PKT = GM_MIB_CNT_BASE + 160,/* Rx Jabber Packet Frame */ + + GM_RXE_FIFO_OV = GM_MIB_CNT_BASE + 176,/* Rx FIFO overflow Event */ + GM_TXF_UC_OK = GM_MIB_CNT_BASE + 192,/* Unicast Frames Xmitted OK */ + GM_TXF_BC_OK = GM_MIB_CNT_BASE + 200,/* Broadcast Frames Xmitted OK */ + GM_TXF_MPAUSE = GM_MIB_CNT_BASE + 208,/* Pause MAC Ctrl Frames Xmitted */ + GM_TXF_MC_OK = GM_MIB_CNT_BASE + 216,/* Multicast Frames Xmitted OK */ + GM_TXO_OK_LO = GM_MIB_CNT_BASE + 224,/* Octets Transmitted OK Low */ + GM_TXO_OK_HI = GM_MIB_CNT_BASE + 232,/* Octets Transmitted OK High */ + GM_TXF_64B = GM_MIB_CNT_BASE + 240,/* 64 Byte Tx Frame */ + GM_TXF_127B = GM_MIB_CNT_BASE + 248,/* 65-127 Byte Tx Frame */ + GM_TXF_255B = GM_MIB_CNT_BASE + 256,/* 128-255 Byte Tx Frame */ + GM_TXF_511B = GM_MIB_CNT_BASE + 264,/* 256-511 Byte Tx Frame */ + GM_TXF_1023B = GM_MIB_CNT_BASE + 272,/* 512-1023 Byte Tx Frame */ + GM_TXF_1518B = GM_MIB_CNT_BASE + 280,/* 1024-1518 Byte Tx Frame */ + GM_TXF_MAX_SZ = GM_MIB_CNT_BASE + 288,/* 1519-MaxSize Byte Tx Frame */ + + GM_TXF_COL = GM_MIB_CNT_BASE + 304,/* Tx Collision */ + GM_TXF_LAT_COL = GM_MIB_CNT_BASE + 312,/* Tx Late Collision */ + GM_TXF_ABO_COL = GM_MIB_CNT_BASE + 320,/* Tx aborted due to Exces. Col. */ + GM_TXF_MUL_COL = GM_MIB_CNT_BASE + 328,/* Tx Multiple Collision */ + GM_TXF_SNG_COL = GM_MIB_CNT_BASE + 336,/* Tx Single Collision */ + GM_TXE_FIFO_UR = GM_MIB_CNT_BASE + 344,/* Tx FIFO Underrun Event */ }; /* GMAC Bit Definitions */ @@ -1808,7 +1809,7 @@ __le16 length; u8 ctrl; u8 opcode; -} __attribute((packed));; +} __attribute((packed)); struct sky2_status_le { __le32 status; /* also checksum */ @@ -1833,6 +1834,7 @@ struct net_device *netdev; unsigned port; u32 msg_enable; + spinlock_t phy_lock; spinlock_t tx_lock ____cacheline_aligned_in_smp; struct tx_ring_info *tx_ring; @@ -1841,7 +1843,6 @@ u16 tx_prod; /* next le to use */ u32 tx_addr64; u16 tx_pending; - u16 tx_last_put; u16 tx_last_mss; struct ring_info *rx_ring ____cacheline_aligned_in_smp; @@ -1850,7 +1851,6 @@ u16 rx_next; /* next re to check */ u16 rx_put; /* next le index to use */ u16 rx_pending; - u16 rx_last_put; u16 rx_bufsize; #ifdef SKY2_VLAN_TAG_USED u16 rx_tag; @@ -1866,20 +1866,15 @@ u8 rx_pause; u8 tx_pause; u8 rx_csum; - u8 wol; struct net_device_stats net_stats; - struct work_struct phy_task; - struct semaphore phy_sema; }; struct sky2_hw { void __iomem *regs; struct pci_dev *pdev; struct net_device *dev[2]; - spinlock_t hw_lock; - u32 intr_mask; int pm_cap; u8 chip_id; @@ -1890,6 +1885,10 @@ struct sky2_status_le *st_le; u32 st_idx; dma_addr_t st_dma; + + struct timer_list idle_timer; + int msi_detected; + wait_queue_head_t msi_wait; }; /* Register accessor for memory mapped device */ --- linux-source-2.6.15-2.6.15.orig/drivers/net/forcedeth.c +++ linux-source-2.6.15-2.6.15/drivers/net/forcedeth.c @@ -101,6 +101,12 @@ * 0.46: 20 Oct 2005: Add irq optimization modes. * 0.47: 26 Oct 2005: Add phyaddr 0 in phy scan. * 0.48: 24 Dec 2005: Disable TSO, bugfix for pci_map_single + * 0.49: 10 Dec 2005: Fix tso for large buffers. + * 0.50: 20 Jan 2006: Add 8021pq tagging support. + * 0.51: 20 Jan 2006: Add 64bit consistent memory allocation for rings. + * 0.52: 20 Jan 2006: Add MSI/MSIX support. + * 0.53: 19 Mar 2006: Fix init from low power mode and add hw reset. + * 0.54: 21 Mar 2006: Fix spin locks for multi irqs and cleanup. * * Known bugs: * We suspect that on some hardware no TX done interrupts are generated. @@ -112,7 +118,7 @@ * DEV_NEED_TIMERIRQ will not harm you on sane hardware, only generating a few * superfluous timer interrupts from the nic. */ -#define FORCEDETH_VERSION "0.48" +#define FORCEDETH_VERSION "0.54" #define DRV_NAME "forcedeth" #include @@ -130,6 +136,7 @@ #include #include #include +#include #include #include @@ -152,6 +159,10 @@ #define DEV_HAS_LARGEDESC 0x0004 /* device supports jumbo frames and needs packet format 2 */ #define DEV_HAS_HIGH_DMA 0x0008 /* device supports 64bit dma */ #define DEV_HAS_CHECKSUM 0x0010 /* device supports tx and rx checksum offloads */ +#define DEV_HAS_VLAN 0x0020 /* device supports vlan tagging and striping */ +#define DEV_HAS_MSI 0x0040 /* device supports MSI */ +#define DEV_HAS_MSI_X 0x0080 /* device supports MSI-X */ +#define DEV_HAS_POWER_CNTRL 0x0100 /* device supports power savings */ enum { NvRegIrqStatus = 0x000, @@ -165,14 +176,17 @@ #define NVREG_IRQ_TX_OK 0x0010 #define NVREG_IRQ_TIMER 0x0020 #define NVREG_IRQ_LINK 0x0040 -#define NVREG_IRQ_TX_ERROR 0x0080 -#define NVREG_IRQ_TX1 0x0100 +#define NVREG_IRQ_RX_FORCED 0x0080 +#define NVREG_IRQ_TX_FORCED 0x0100 #define NVREG_IRQMASK_THROUGHPUT 0x00df #define NVREG_IRQMASK_CPU 0x0040 +#define NVREG_IRQ_TX_ALL (NVREG_IRQ_TX_ERR|NVREG_IRQ_TX_OK|NVREG_IRQ_TX_FORCED) +#define NVREG_IRQ_RX_ALL (NVREG_IRQ_RX_ERROR|NVREG_IRQ_RX|NVREG_IRQ_RX_NOBUF|NVREG_IRQ_RX_FORCED) +#define NVREG_IRQ_OTHER (NVREG_IRQ_TIMER|NVREG_IRQ_LINK) #define NVREG_IRQ_UNKNOWN (~(NVREG_IRQ_RX_ERROR|NVREG_IRQ_RX|NVREG_IRQ_RX_NOBUF|NVREG_IRQ_TX_ERR| \ - NVREG_IRQ_TX_OK|NVREG_IRQ_TIMER|NVREG_IRQ_LINK|NVREG_IRQ_TX_ERROR| \ - NVREG_IRQ_TX1)) + NVREG_IRQ_TX_OK|NVREG_IRQ_TIMER|NVREG_IRQ_LINK|NVREG_IRQ_RX_FORCED| \ + NVREG_IRQ_TX_FORCED)) NvRegUnknownSetupReg6 = 0x008, #define NVREG_UNKSETUP6_VAL 3 @@ -184,10 +198,16 @@ NvRegPollingInterval = 0x00c, #define NVREG_POLL_DEFAULT_THROUGHPUT 970 #define NVREG_POLL_DEFAULT_CPU 13 + NvRegMSIMap0 = 0x020, + NvRegMSIMap1 = 0x024, + NvRegMSIIrqMask = 0x030, +#define NVREG_MSI_VECTOR_0_ENABLED 0x01 NvRegMisc1 = 0x080, #define NVREG_MISC1_HD 0x02 #define NVREG_MISC1_FORCE 0x3b0f3c + NvRegMacReset = 0x3c, +#define NVREG_MAC_RESET_ASSERT 0x0F3 NvRegTransmitterControl = 0x084, #define NVREG_XMITCTL_START 0x01 NvRegTransmitterStatus = 0x088, @@ -253,6 +273,10 @@ #define NVREG_TXRXCTL_DESC_1 0 #define NVREG_TXRXCTL_DESC_2 0x02100 #define NVREG_TXRXCTL_DESC_3 0x02200 +#define NVREG_TXRXCTL_VLANSTRIP 0x00040 +#define NVREG_TXRXCTL_VLANINS 0x00080 + NvRegTxRingPhysAddrHigh = 0x148, + NvRegRxRingPhysAddrHigh = 0x14C, NvRegMIIStatus = 0x180, #define NVREG_MIISTAT_ERROR 0x0001 #define NVREG_MIISTAT_LINKCHANGE 0x0008 @@ -302,6 +326,15 @@ #define NVREG_POWERSTATE_D1 0x0001 #define NVREG_POWERSTATE_D2 0x0002 #define NVREG_POWERSTATE_D3 0x0003 + NvRegVlanControl = 0x300, +#define NVREG_VLANCONTROL_ENABLE 0x2000 + NvRegMSIXMap0 = 0x3e0, + NvRegMSIXMap1 = 0x3e4, + NvRegMSIXIrqStatus = 0x3f0, + + NvRegPowerState2 = 0x600, +#define NVREG_POWERSTATE2_POWERUP_MASK 0x0F11 +#define NVREG_POWERSTATE2_POWERUP_REV_A3 0x0001 }; /* Big endian: should work, but is untested */ @@ -313,7 +346,7 @@ struct ring_desc_ex { u32 PacketBufferHigh; u32 PacketBufferLow; - u32 Reserved; + u32 TxVlan; u32 FlagLen; }; @@ -349,9 +382,13 @@ #define NV_TX2_VALID (1<<31) #define NV_TX2_TSO (1<<28) #define NV_TX2_TSO_SHIFT 14 +#define NV_TX2_TSO_MAX_SHIFT 14 +#define NV_TX2_TSO_MAX_SIZE (1<lock); @@ -535,7 +593,15 @@ unsigned int next_tx, nic_tx; struct sk_buff *tx_skbuff[TX_RING]; dma_addr_t tx_dma[TX_RING]; + unsigned int tx_dma_len[TX_RING]; u32 tx_flags; + + /* vlan fields */ + struct vlan_group *vlangrp; + + /* msi/msi-x fields */ + u32 msi_flags; + struct msix_entry msi_x_entry[NV_MSI_X_MAX_VECTORS]; }; /* @@ -563,6 +629,16 @@ */ static int poll_interval = -1; +/* + * Disable MSI interrupts + */ +static int disable_msi = 0; + +/* + * Disable MSIX interrupts + */ +static int disable_msix = 0; + static inline struct fe_priv *get_nvpriv(struct net_device *dev) { return netdev_priv(dev); @@ -608,6 +684,99 @@ return 0; } +#define NV_SETUP_RX_RING 0x01 +#define NV_SETUP_TX_RING 0x02 + +static void setup_hw_rings(struct net_device *dev, int rxtx_flags) +{ + struct fe_priv *np = get_nvpriv(dev); + u8 __iomem *base = get_hwbase(dev); + + if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) { + if (rxtx_flags & NV_SETUP_RX_RING) { + writel((u32) cpu_to_le64(np->ring_addr), base + NvRegRxRingPhysAddr); + } + if (rxtx_flags & NV_SETUP_TX_RING) { + writel((u32) cpu_to_le64(np->ring_addr + RX_RING*sizeof(struct ring_desc)), base + NvRegTxRingPhysAddr); + } + } else { + if (rxtx_flags & NV_SETUP_RX_RING) { + writel((u32) cpu_to_le64(np->ring_addr), base + NvRegRxRingPhysAddr); + writel((u32) (cpu_to_le64(np->ring_addr) >> 32), base + NvRegRxRingPhysAddrHigh); + } + if (rxtx_flags & NV_SETUP_TX_RING) { + writel((u32) cpu_to_le64(np->ring_addr + RX_RING*sizeof(struct ring_desc_ex)), base + NvRegTxRingPhysAddr); + writel((u32) (cpu_to_le64(np->ring_addr + RX_RING*sizeof(struct ring_desc_ex)) >> 32), base + NvRegTxRingPhysAddrHigh); + } + } +} + +static int using_multi_irqs(struct net_device *dev) +{ + struct fe_priv *np = get_nvpriv(dev); + + if (!(np->msi_flags & NV_MSI_X_ENABLED) || + ((np->msi_flags & NV_MSI_X_ENABLED) && + ((np->msi_flags & NV_MSI_X_VECTORS_MASK) == 0x1))) + return 0; + else + return 1; +} + +static void nv_enable_irq(struct net_device *dev) +{ + struct fe_priv *np = get_nvpriv(dev); + + if (!using_multi_irqs(dev)) { + if (np->msi_flags & NV_MSI_X_ENABLED) + enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector); + else + enable_irq(dev->irq); + } else { + enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector); + enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector); + enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_OTHER].vector); + } +} + +static void nv_disable_irq(struct net_device *dev) +{ + struct fe_priv *np = get_nvpriv(dev); + + if (!using_multi_irqs(dev)) { + if (np->msi_flags & NV_MSI_X_ENABLED) + disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector); + else + disable_irq(dev->irq); + } else { + disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector); + disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector); + disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_OTHER].vector); + } +} + +/* In MSIX mode, a write to irqmask behaves as XOR */ +static void nv_enable_hw_interrupts(struct net_device *dev, u32 mask) +{ + u8 __iomem *base = get_hwbase(dev); + + writel(mask, base + NvRegIrqMask); +} + +static void nv_disable_hw_interrupts(struct net_device *dev, u32 mask) +{ + struct fe_priv *np = get_nvpriv(dev); + u8 __iomem *base = get_hwbase(dev); + + if (np->msi_flags & NV_MSI_X_ENABLED) { + writel(mask, base + NvRegIrqMask); + } else { + if (np->msi_flags & NV_MSI_ENABLED) + writel(0, base + NvRegMSIIrqMask); + writel(0, base + NvRegIrqMask); + } +} + #define MII_READ (-1) /* mii_rw: read/write a register on the PHY. * @@ -829,6 +998,24 @@ pci_push(base); } +static void nv_mac_reset(struct net_device *dev) +{ + struct fe_priv *np = netdev_priv(dev); + u8 __iomem *base = get_hwbase(dev); + + dprintk(KERN_DEBUG "%s: nv_mac_reset\n", dev->name); + writel(NVREG_TXRXCTL_BIT2 | NVREG_TXRXCTL_RESET | np->txrxctl_bits, base + NvRegTxRxControl); + pci_push(base); + writel(NVREG_MAC_RESET_ASSERT, base + NvRegMacReset); + pci_push(base); + udelay(NV_MAC_RESET_DELAY); + writel(0, base + NvRegMacReset); + pci_push(base); + udelay(NV_MAC_RESET_DELAY); + writel(NVREG_TXRXCTL_BIT2 | np->txrxctl_bits, base + NvRegTxRxControl); + pci_push(base); +} + /* * nv_get_stats: dev->get_stats function * Get latest stats value from the nic. @@ -899,14 +1086,28 @@ struct net_device *dev = (struct net_device *) data; struct fe_priv *np = netdev_priv(dev); - disable_irq(dev->irq); + if (!using_multi_irqs(dev)) { + if (np->msi_flags & NV_MSI_X_ENABLED) + disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector); + else + disable_irq(dev->irq); + } else { + disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector); + } if (nv_alloc_rx(dev)) { - spin_lock(&np->lock); + spin_lock_irq(&np->lock); if (!np->in_shutdown) mod_timer(&np->oom_kick, jiffies + OOM_REFILL); - spin_unlock(&np->lock); + spin_unlock_irq(&np->lock); + } + if (!using_multi_irqs(dev)) { + if (np->msi_flags & NV_MSI_X_ENABLED) + enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector); + else + enable_irq(dev->irq); + } else { + enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector); } - enable_irq(dev->irq); } static void nv_init_rx(struct net_device *dev) @@ -935,6 +1136,7 @@ else np->tx_ring.ex[i].FlagLen = 0; np->tx_skbuff[i] = NULL; + np->tx_dma[i] = 0; } } @@ -945,30 +1147,27 @@ return nv_alloc_rx(dev); } -static void nv_release_txskb(struct net_device *dev, unsigned int skbnr) +static int nv_release_txskb(struct net_device *dev, unsigned int skbnr) { struct fe_priv *np = netdev_priv(dev); - struct sk_buff *skb = np->tx_skbuff[skbnr]; - unsigned int j, entry, fragments; - - dprintk(KERN_INFO "%s: nv_release_txskb for skbnr %d, skb %p\n", - dev->name, skbnr, np->tx_skbuff[skbnr]); - - entry = skbnr; - if ((fragments = skb_shinfo(skb)->nr_frags) != 0) { - for (j = fragments; j >= 1; j--) { - skb_frag_t *frag = &skb_shinfo(skb)->frags[j-1]; - pci_unmap_page(np->pci_dev, np->tx_dma[entry], - frag->size, - PCI_DMA_TODEVICE); - entry = (entry - 1) % TX_RING; - } + + dprintk(KERN_INFO "%s: nv_release_txskb for skbnr %d\n", + dev->name, skbnr); + + if (np->tx_dma[skbnr]) { + pci_unmap_page(np->pci_dev, np->tx_dma[skbnr], + np->tx_dma_len[skbnr], + PCI_DMA_TODEVICE); + np->tx_dma[skbnr] = 0; + } + + if (np->tx_skbuff[skbnr]) { + dev_kfree_skb_any(np->tx_skbuff[skbnr]); + np->tx_skbuff[skbnr] = NULL; + return 1; + } else { + return 0; } - pci_unmap_single(np->pci_dev, np->tx_dma[entry], - skb->len - skb->data_len, - PCI_DMA_TODEVICE); - dev_kfree_skb_irq(skb); - np->tx_skbuff[skbnr] = NULL; } static void nv_drain_tx(struct net_device *dev) @@ -981,10 +1180,8 @@ np->tx_ring.orig[i].FlagLen = 0; else np->tx_ring.ex[i].FlagLen = 0; - if (np->tx_skbuff[i]) { - nv_release_txskb(dev, i); + if (nv_release_txskb(dev, i)) np->stats.tx_dropped++; - } } } @@ -1021,68 +1218,112 @@ static int nv_start_xmit(struct sk_buff *skb, struct net_device *dev) { struct fe_priv *np = netdev_priv(dev); + u32 tx_flags = 0; u32 tx_flags_extra = (np->desc_ver == DESC_VER_1 ? NV_TX_LASTPACKET : NV_TX2_LASTPACKET); unsigned int fragments = skb_shinfo(skb)->nr_frags; - unsigned int nr = (np->next_tx + fragments) % TX_RING; + unsigned int nr = (np->next_tx - 1) % TX_RING; + unsigned int start_nr = np->next_tx % TX_RING; unsigned int i; + u32 offset = 0; + u32 bcnt; + u32 size = skb->len-skb->data_len; + u32 entries = (size >> NV_TX2_TSO_MAX_SHIFT) + ((size & (NV_TX2_TSO_MAX_SIZE-1)) ? 1 : 0); + u32 tx_flags_vlan = 0; + + /* add fragments to entries count */ + for (i = 0; i < fragments; i++) { + entries += (skb_shinfo(skb)->frags[i].size >> NV_TX2_TSO_MAX_SHIFT) + + ((skb_shinfo(skb)->frags[i].size & (NV_TX2_TSO_MAX_SIZE-1)) ? 1 : 0); + } spin_lock_irq(&np->lock); - if ((np->next_tx - np->nic_tx + fragments) > TX_LIMIT_STOP) { + if ((np->next_tx - np->nic_tx + entries - 1) > TX_LIMIT_STOP) { spin_unlock_irq(&np->lock); netif_stop_queue(dev); return NETDEV_TX_BUSY; } - np->tx_skbuff[nr] = skb; - - if (fragments) { - dprintk(KERN_DEBUG "%s: nv_start_xmit: buffer contains %d fragments\n", dev->name, fragments); - /* setup descriptors in reverse order */ - for (i = fragments; i >= 1; i--) { - skb_frag_t *frag = &skb_shinfo(skb)->frags[i-1]; - np->tx_dma[nr] = pci_map_page(np->pci_dev, frag->page, frag->page_offset, frag->size, - PCI_DMA_TODEVICE); + /* setup the header buffer */ + do { + bcnt = (size > NV_TX2_TSO_MAX_SIZE) ? NV_TX2_TSO_MAX_SIZE : size; + nr = (nr + 1) % TX_RING; + + np->tx_dma[nr] = pci_map_single(np->pci_dev, skb->data + offset, bcnt, + PCI_DMA_TODEVICE); + np->tx_dma_len[nr] = bcnt; + + if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) { + np->tx_ring.orig[nr].PacketBuffer = cpu_to_le32(np->tx_dma[nr]); + np->tx_ring.orig[nr].FlagLen = cpu_to_le32((bcnt-1) | tx_flags); + } else { + np->tx_ring.ex[nr].PacketBufferHigh = cpu_to_le64(np->tx_dma[nr]) >> 32; + np->tx_ring.ex[nr].PacketBufferLow = cpu_to_le64(np->tx_dma[nr]) & 0x0FFFFFFFF; + np->tx_ring.ex[nr].FlagLen = cpu_to_le32((bcnt-1) | tx_flags); + } + tx_flags = np->tx_flags; + offset += bcnt; + size -= bcnt; + } while(size); + + /* setup the fragments */ + for (i = 0; i < fragments; i++) { + skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; + u32 size = frag->size; + offset = 0; + + do { + bcnt = (size > NV_TX2_TSO_MAX_SIZE) ? NV_TX2_TSO_MAX_SIZE : size; + nr = (nr + 1) % TX_RING; + + np->tx_dma[nr] = pci_map_page(np->pci_dev, frag->page, frag->page_offset+offset, bcnt, + PCI_DMA_TODEVICE); + np->tx_dma_len[nr] = bcnt; if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) { np->tx_ring.orig[nr].PacketBuffer = cpu_to_le32(np->tx_dma[nr]); - np->tx_ring.orig[nr].FlagLen = cpu_to_le32( (frag->size-1) | np->tx_flags | tx_flags_extra); + np->tx_ring.orig[nr].FlagLen = cpu_to_le32((bcnt-1) | tx_flags); } else { np->tx_ring.ex[nr].PacketBufferHigh = cpu_to_le64(np->tx_dma[nr]) >> 32; np->tx_ring.ex[nr].PacketBufferLow = cpu_to_le64(np->tx_dma[nr]) & 0x0FFFFFFFF; - np->tx_ring.ex[nr].FlagLen = cpu_to_le32( (frag->size-1) | np->tx_flags | tx_flags_extra); + np->tx_ring.ex[nr].FlagLen = cpu_to_le32((bcnt-1) | tx_flags); } - - nr = (nr - 1) % TX_RING; + offset += bcnt; + size -= bcnt; + } while (size); + } - if (np->desc_ver == DESC_VER_1) - tx_flags_extra &= ~NV_TX_LASTPACKET; - else - tx_flags_extra &= ~NV_TX2_LASTPACKET; - } + /* set last fragment flag */ + if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) { + np->tx_ring.orig[nr].FlagLen |= cpu_to_le32(tx_flags_extra); + } else { + np->tx_ring.ex[nr].FlagLen |= cpu_to_le32(tx_flags_extra); } + np->tx_skbuff[nr] = skb; + #ifdef NETIF_F_TSO if (skb_shinfo(skb)->tso_size) - tx_flags_extra |= NV_TX2_TSO | (skb_shinfo(skb)->tso_size << NV_TX2_TSO_SHIFT); + tx_flags_extra = NV_TX2_TSO | (skb_shinfo(skb)->tso_size << NV_TX2_TSO_SHIFT); else #endif - tx_flags_extra |= (skb->ip_summed == CHECKSUM_HW ? (NV_TX2_CHECKSUM_L3|NV_TX2_CHECKSUM_L4) : 0); + tx_flags_extra = (skb->ip_summed == CHECKSUM_HW ? (NV_TX2_CHECKSUM_L3|NV_TX2_CHECKSUM_L4) : 0); - np->tx_dma[nr] = pci_map_single(np->pci_dev, skb->data, skb->len-skb->data_len, - PCI_DMA_TODEVICE); - + /* vlan tag */ + if (np->vlangrp && vlan_tx_tag_present(skb)) { + tx_flags_vlan = NV_TX3_VLAN_TAG_PRESENT | vlan_tx_tag_get(skb); + } + + /* set tx flags */ if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) { - np->tx_ring.orig[nr].PacketBuffer = cpu_to_le32(np->tx_dma[nr]); - np->tx_ring.orig[nr].FlagLen = cpu_to_le32( (skb->len-skb->data_len-1) | np->tx_flags | tx_flags_extra); + np->tx_ring.orig[start_nr].FlagLen |= cpu_to_le32(tx_flags | tx_flags_extra); } else { - np->tx_ring.ex[nr].PacketBufferHigh = cpu_to_le64(np->tx_dma[nr]) >> 32; - np->tx_ring.ex[nr].PacketBufferLow = cpu_to_le64(np->tx_dma[nr]) & 0x0FFFFFFFF; - np->tx_ring.ex[nr].FlagLen = cpu_to_le32( (skb->len-skb->data_len-1) | np->tx_flags | tx_flags_extra); + np->tx_ring.ex[start_nr].TxVlan = cpu_to_le32(tx_flags_vlan); + np->tx_ring.ex[start_nr].FlagLen |= cpu_to_le32(tx_flags | tx_flags_extra); } - dprintk(KERN_DEBUG "%s: nv_start_xmit: packet packet %d queued for transmission. tx_flags_extra: %x\n", - dev->name, np->next_tx, tx_flags_extra); + dprintk(KERN_DEBUG "%s: nv_start_xmit: packet %d (entries %d) queued for transmission. tx_flags_extra: %x\n", + dev->name, np->next_tx, entries, tx_flags_extra); { int j; for (j=0; j<64; j++) { @@ -1093,7 +1334,7 @@ dprintk("\n"); } - np->next_tx += 1 + fragments; + np->next_tx += entries; dev->trans_start = jiffies; spin_unlock_irq(&np->lock); @@ -1140,7 +1381,6 @@ np->stats.tx_packets++; np->stats.tx_bytes += skb->len; } - nv_release_txskb(dev, i); } } else { if (Flags & NV_TX2_LASTPACKET) { @@ -1156,9 +1396,9 @@ np->stats.tx_packets++; np->stats.tx_bytes += skb->len; } - nv_release_txskb(dev, i); } } + nv_release_txskb(dev, i); np->nic_tx++; } if (np->next_tx - np->nic_tx < TX_LIMIT_START) @@ -1173,9 +1413,14 @@ { struct fe_priv *np = netdev_priv(dev); u8 __iomem *base = get_hwbase(dev); + u32 status; - printk(KERN_INFO "%s: Got tx_timeout. irq: %08x\n", dev->name, - readl(base + NvRegIrqStatus) & NVREG_IRQSTAT_MASK); + if (np->msi_flags & NV_MSI_X_ENABLED) + status = readl(base + NvRegMSIXIrqStatus) & NVREG_IRQSTAT_MASK; + else + status = readl(base + NvRegIrqStatus) & NVREG_IRQSTAT_MASK; + + printk(KERN_INFO "%s: Got tx_timeout. irq: %08x\n", dev->name, status); { int i; @@ -1184,7 +1429,7 @@ dev->name, (unsigned long)np->ring_addr, np->next_tx, np->nic_tx); printk(KERN_INFO "%s: Dumping tx registers\n", dev->name); - for (i=0;i<0x400;i+= 32) { + for (i=0;i<=np->register_size;i+= 32) { printk(KERN_INFO "%3x: %08x %08x %08x %08x %08x %08x %08x %08x\n", i, readl(base + i + 0), readl(base + i + 4), @@ -1237,10 +1482,7 @@ printk(KERN_DEBUG "%s: tx_timeout: dead entries!\n", dev->name); nv_drain_tx(dev); np->next_tx = np->nic_tx = 0; - if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) - writel((u32) (np->ring_addr + RX_RING*sizeof(struct ring_desc)), base + NvRegTxRingPhysAddr); - else - writel((u32) (np->ring_addr + RX_RING*sizeof(struct ring_desc_ex)), base + NvRegTxRingPhysAddr); + setup_hw_rings(dev, NV_SETUP_TX_RING); netif_wake_queue(dev); } @@ -1306,6 +1548,8 @@ { struct fe_priv *np = netdev_priv(dev); u32 Flags; + u32 vlanflags = 0; + for (;;) { struct sk_buff *skb; @@ -1321,6 +1565,7 @@ } else { Flags = le32_to_cpu(np->rx_ring.ex[i].FlagLen); len = nv_descr_getlength_ex(&np->rx_ring.ex[i], np->desc_ver); + vlanflags = le32_to_cpu(np->rx_ring.ex[i].PacketBufferLow); } dprintk(KERN_DEBUG "%s: nv_rx_process: looking at packet %d, Flags 0x%x.\n", @@ -1438,7 +1683,11 @@ skb->protocol = eth_type_trans(skb, dev); dprintk(KERN_DEBUG "%s: nv_rx_process: packet %d with %d bytes, proto %d accepted.\n", dev->name, np->cur_rx, len, skb->protocol); - netif_rx(skb); + if (np->vlangrp && (vlanflags & NV_RX3_VLAN_TAG_PRESENT)) { + vlan_hwaccel_rx(skb, np->vlangrp, vlanflags & NV_RX3_VLAN_TAG_MASK); + } else { + netif_rx(skb); + } dev->last_rx = jiffies; np->stats.rx_packets++; np->stats.rx_bytes += len; @@ -1487,7 +1736,7 @@ * guessed, there is probably a simpler approach. * Changing the MTU is a rare event, it shouldn't matter. */ - disable_irq(dev->irq); + nv_disable_irq(dev); spin_lock_bh(&dev->xmit_lock); spin_lock(&np->lock); /* stop engines */ @@ -1508,11 +1757,7 @@ } /* reinit nic view of the rx queue */ writel(np->rx_buf_sz, base + NvRegOffloadConfig); - writel((u32) np->ring_addr, base + NvRegRxRingPhysAddr); - if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) - writel((u32) (np->ring_addr + RX_RING*sizeof(struct ring_desc)), base + NvRegTxRingPhysAddr); - else - writel((u32) (np->ring_addr + RX_RING*sizeof(struct ring_desc_ex)), base + NvRegTxRingPhysAddr); + setup_hw_rings(dev, NV_SETUP_RX_RING | NV_SETUP_TX_RING); writel( ((RX_RING-1) << NVREG_RINGSZ_RXSHIFT) + ((TX_RING-1) << NVREG_RINGSZ_TXSHIFT), base + NvRegRingSizes); pci_push(base); @@ -1524,7 +1769,7 @@ nv_start_tx(dev); spin_unlock(&np->lock); spin_unlock_bh(&dev->xmit_lock); - enable_irq(dev->irq); + nv_enable_irq(dev); } return 0; } @@ -1830,8 +2075,13 @@ dprintk(KERN_DEBUG "%s: nv_nic_irq\n", dev->name); for (i=0; ; i++) { - events = readl(base + NvRegIrqStatus) & NVREG_IRQSTAT_MASK; - writel(NVREG_IRQSTAT_MASK, base + NvRegIrqStatus); + if (!(np->msi_flags & NV_MSI_X_ENABLED)) { + events = readl(base + NvRegIrqStatus) & NVREG_IRQSTAT_MASK; + writel(NVREG_IRQSTAT_MASK, base + NvRegIrqStatus); + } else { + events = readl(base + NvRegMSIXIrqStatus) & NVREG_IRQSTAT_MASK; + writel(NVREG_IRQSTAT_MASK, base + NvRegMSIXIrqStatus); + } pci_push(base); dprintk(KERN_DEBUG "%s: irq: %08x\n", dev->name, events); if (!(events & np->irqmask)) @@ -1871,11 +2121,16 @@ if (i > max_interrupt_work) { spin_lock(&np->lock); /* disable interrupts on the nic */ - writel(0, base + NvRegIrqMask); + if (!(np->msi_flags & NV_MSI_X_ENABLED)) + writel(0, base + NvRegIrqMask); + else + writel(np->irqmask, base + NvRegIrqMask); pci_push(base); - if (!np->in_shutdown) + if (!np->in_shutdown) { + np->nic_poll_irq = np->irqmask; mod_timer(&np->nic_poll, jiffies + POLL_WAIT); + } printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq.\n", dev->name, i); spin_unlock(&np->lock); break; @@ -1887,22 +2142,214 @@ return IRQ_RETVAL(i); } +static irqreturn_t nv_nic_irq_tx(int foo, void *data, struct pt_regs *regs) +{ + struct net_device *dev = (struct net_device *) data; + struct fe_priv *np = netdev_priv(dev); + u8 __iomem *base = get_hwbase(dev); + u32 events; + int i; + + dprintk(KERN_DEBUG "%s: nv_nic_irq_tx\n", dev->name); + + for (i=0; ; i++) { + events = readl(base + NvRegMSIXIrqStatus) & NVREG_IRQ_TX_ALL; + writel(NVREG_IRQ_TX_ALL, base + NvRegMSIXIrqStatus); + pci_push(base); + dprintk(KERN_DEBUG "%s: tx irq: %08x\n", dev->name, events); + if (!(events & np->irqmask)) + break; + + spin_lock_irq(&np->lock); + nv_tx_done(dev); + spin_unlock_irq(&np->lock); + + if (events & (NVREG_IRQ_TX_ERR)) { + dprintk(KERN_DEBUG "%s: received irq with events 0x%x. Probably TX fail.\n", + dev->name, events); + } + if (i > max_interrupt_work) { + spin_lock_irq(&np->lock); + /* disable interrupts on the nic */ + writel(NVREG_IRQ_TX_ALL, base + NvRegIrqMask); + pci_push(base); + + if (!np->in_shutdown) { + np->nic_poll_irq |= NVREG_IRQ_TX_ALL; + mod_timer(&np->nic_poll, jiffies + POLL_WAIT); + } + printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_tx.\n", dev->name, i); + spin_unlock_irq(&np->lock); + break; + } + + } + dprintk(KERN_DEBUG "%s: nv_nic_irq_tx completed\n", dev->name); + + return IRQ_RETVAL(i); +} + +static irqreturn_t nv_nic_irq_rx(int foo, void *data, struct pt_regs *regs) +{ + struct net_device *dev = (struct net_device *) data; + struct fe_priv *np = netdev_priv(dev); + u8 __iomem *base = get_hwbase(dev); + u32 events; + int i; + + dprintk(KERN_DEBUG "%s: nv_nic_irq_rx\n", dev->name); + + for (i=0; ; i++) { + events = readl(base + NvRegMSIXIrqStatus) & NVREG_IRQ_RX_ALL; + writel(NVREG_IRQ_RX_ALL, base + NvRegMSIXIrqStatus); + pci_push(base); + dprintk(KERN_DEBUG "%s: rx irq: %08x\n", dev->name, events); + if (!(events & np->irqmask)) + break; + + nv_rx_process(dev); + if (nv_alloc_rx(dev)) { + spin_lock_irq(&np->lock); + if (!np->in_shutdown) + mod_timer(&np->oom_kick, jiffies + OOM_REFILL); + spin_unlock_irq(&np->lock); + } + + if (i > max_interrupt_work) { + spin_lock_irq(&np->lock); + /* disable interrupts on the nic */ + writel(NVREG_IRQ_RX_ALL, base + NvRegIrqMask); + pci_push(base); + + if (!np->in_shutdown) { + np->nic_poll_irq |= NVREG_IRQ_RX_ALL; + mod_timer(&np->nic_poll, jiffies + POLL_WAIT); + } + printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_rx.\n", dev->name, i); + spin_unlock_irq(&np->lock); + break; + } + + } + dprintk(KERN_DEBUG "%s: nv_nic_irq_rx completed\n", dev->name); + + return IRQ_RETVAL(i); +} + +static irqreturn_t nv_nic_irq_other(int foo, void *data, struct pt_regs *regs) +{ + struct net_device *dev = (struct net_device *) data; + struct fe_priv *np = netdev_priv(dev); + u8 __iomem *base = get_hwbase(dev); + u32 events; + int i; + + dprintk(KERN_DEBUG "%s: nv_nic_irq_other\n", dev->name); + + for (i=0; ; i++) { + events = readl(base + NvRegMSIXIrqStatus) & NVREG_IRQ_OTHER; + writel(NVREG_IRQ_OTHER, base + NvRegMSIXIrqStatus); + pci_push(base); + dprintk(KERN_DEBUG "%s: irq: %08x\n", dev->name, events); + if (!(events & np->irqmask)) + break; + + if (events & NVREG_IRQ_LINK) { + spin_lock_irq(&np->lock); + nv_link_irq(dev); + spin_unlock_irq(&np->lock); + } + if (np->need_linktimer && time_after(jiffies, np->link_timeout)) { + spin_lock_irq(&np->lock); + nv_linkchange(dev); + spin_unlock_irq(&np->lock); + np->link_timeout = jiffies + LINK_TIMEOUT; + } + if (events & (NVREG_IRQ_UNKNOWN)) { + printk(KERN_DEBUG "%s: received irq with unknown events 0x%x. Please report\n", + dev->name, events); + } + if (i > max_interrupt_work) { + spin_lock_irq(&np->lock); + /* disable interrupts on the nic */ + writel(NVREG_IRQ_OTHER, base + NvRegIrqMask); + pci_push(base); + + if (!np->in_shutdown) { + np->nic_poll_irq |= NVREG_IRQ_OTHER; + mod_timer(&np->nic_poll, jiffies + POLL_WAIT); + } + printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_other.\n", dev->name, i); + spin_unlock_irq(&np->lock); + break; + } + + } + dprintk(KERN_DEBUG "%s: nv_nic_irq_other completed\n", dev->name); + + return IRQ_RETVAL(i); +} + static void nv_do_nic_poll(unsigned long data) { struct net_device *dev = (struct net_device *) data; struct fe_priv *np = netdev_priv(dev); u8 __iomem *base = get_hwbase(dev); + u32 mask = 0; - disable_irq(dev->irq); - /* FIXME: Do we need synchronize_irq(dev->irq) here? */ /* + * First disable irq(s) and then * reenable interrupts on the nic, we have to do this before calling * nv_nic_irq because that may decide to do otherwise */ - writel(np->irqmask, base + NvRegIrqMask); + + if (!using_multi_irqs(dev)) { + if (np->msi_flags & NV_MSI_X_ENABLED) + disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector); + else + disable_irq(dev->irq); + mask = np->irqmask; + } else { + if (np->nic_poll_irq & NVREG_IRQ_RX_ALL) { + disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector); + mask |= NVREG_IRQ_RX_ALL; + } + if (np->nic_poll_irq & NVREG_IRQ_TX_ALL) { + disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector); + mask |= NVREG_IRQ_TX_ALL; + } + if (np->nic_poll_irq & NVREG_IRQ_OTHER) { + disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_OTHER].vector); + mask |= NVREG_IRQ_OTHER; + } + } + np->nic_poll_irq = 0; + + /* FIXME: Do we need synchronize_irq(dev->irq) here? */ + + writel(mask, base + NvRegIrqMask); pci_push(base); - nv_nic_irq((int) 0, (void *) data, (struct pt_regs *) NULL); - enable_irq(dev->irq); + + if (!using_multi_irqs(dev)) { + nv_nic_irq((int) 0, (void *) data, (struct pt_regs *) NULL); + if (np->msi_flags & NV_MSI_X_ENABLED) + enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector); + else + enable_irq(dev->irq); + } else { + if (np->nic_poll_irq & NVREG_IRQ_RX_ALL) { + nv_nic_irq_rx((int) 0, (void *) data, (struct pt_regs *) NULL); + enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector); + } + if (np->nic_poll_irq & NVREG_IRQ_TX_ALL) { + nv_nic_irq_tx((int) 0, (void *) data, (struct pt_regs *) NULL); + enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector); + } + if (np->nic_poll_irq & NVREG_IRQ_OTHER) { + nv_nic_irq_other((int) 0, (void *) data, (struct pt_regs *) NULL); + enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_OTHER].vector); + } + } } #ifdef CONFIG_NET_POLL_CONTROLLER @@ -2125,11 +2572,11 @@ } #define FORCEDETH_REGS_VER 1 -#define FORCEDETH_REGS_SIZE 0x400 /* 256 32-bit registers */ static int nv_get_regs_len(struct net_device *dev) { - return FORCEDETH_REGS_SIZE; + struct fe_priv *np = netdev_priv(dev); + return np->register_size; } static void nv_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *buf) @@ -2141,7 +2588,7 @@ regs->version = FORCEDETH_REGS_VER; spin_lock_irq(&np->lock); - for (i=0;iregister_size/sizeof(u32); i++) rbuf[i] = readl(base + i*sizeof(u32)); spin_unlock_irq(&np->lock); } @@ -2168,6 +2615,18 @@ return ret; } +#ifdef NETIF_F_TSO +static int nv_set_tso(struct net_device *dev, u32 value) +{ + struct fe_priv *np = netdev_priv(dev); + + if ((np->driver_data & DEV_HAS_CHECKSUM)) + return ethtool_op_set_tso(dev, value); + else + return value ? -EOPNOTSUPP : 0; +} +#endif + static struct ethtool_ops ops = { .get_drvinfo = nv_get_drvinfo, .get_link = ethtool_op_get_link, @@ -2179,17 +2638,185 @@ .get_regs = nv_get_regs, .nway_reset = nv_nway_reset, .get_perm_addr = ethtool_op_get_perm_addr, +#ifdef NETIF_F_TSO + .get_tso = ethtool_op_get_tso, + .set_tso = nv_set_tso +#endif +}; + +static void nv_vlan_rx_register(struct net_device *dev, struct vlan_group *grp) +{ + struct fe_priv *np = get_nvpriv(dev); + + spin_lock_irq(&np->lock); + + /* save vlan group */ + np->vlangrp = grp; + + if (grp) { + /* enable vlan on MAC */ + np->txrxctl_bits |= NVREG_TXRXCTL_VLANSTRIP | NVREG_TXRXCTL_VLANINS; + } else { + /* disable vlan on MAC */ + np->txrxctl_bits &= ~NVREG_TXRXCTL_VLANSTRIP; + np->txrxctl_bits &= ~NVREG_TXRXCTL_VLANINS; + } + + writel(np->txrxctl_bits, get_hwbase(dev) + NvRegTxRxControl); + + spin_unlock_irq(&np->lock); }; +static void nv_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid) +{ + /* nothing to do */ +}; + +static void set_msix_vector_map(struct net_device *dev, u32 vector, u32 irqmask) +{ + u8 __iomem *base = get_hwbase(dev); + int i; + u32 msixmap = 0; + + /* Each interrupt bit can be mapped to a MSIX vector (4 bits). + * MSIXMap0 represents the first 8 interrupts and MSIXMap1 represents + * the remaining 8 interrupts. + */ + for (i = 0; i < 8; i++) { + if ((irqmask >> i) & 0x1) { + msixmap |= vector << (i << 2); + } + } + writel(readl(base + NvRegMSIXMap0) | msixmap, base + NvRegMSIXMap0); + + msixmap = 0; + for (i = 0; i < 8; i++) { + if ((irqmask >> (i + 8)) & 0x1) { + msixmap |= vector << (i << 2); + } + } + writel(readl(base + NvRegMSIXMap1) | msixmap, base + NvRegMSIXMap1); +} + +static int nv_request_irq(struct net_device *dev) +{ + struct fe_priv *np = get_nvpriv(dev); + u8 __iomem *base = get_hwbase(dev); + int ret = 1; + int i; + + if (np->msi_flags & NV_MSI_X_CAPABLE) { + for (i = 0; i < (np->msi_flags & NV_MSI_X_VECTORS_MASK); i++) { + np->msi_x_entry[i].entry = i; + } + if ((ret = pci_enable_msix(np->pci_dev, np->msi_x_entry, (np->msi_flags & NV_MSI_X_VECTORS_MASK))) == 0) { + np->msi_flags |= NV_MSI_X_ENABLED; + if (optimization_mode == NV_OPTIMIZATION_MODE_THROUGHPUT) { + /* Request irq for rx handling */ + if (request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector, &nv_nic_irq_rx, SA_SHIRQ, dev->name, dev) != 0) { + printk(KERN_INFO "forcedeth: request_irq failed for rx %d\n", ret); + pci_disable_msix(np->pci_dev); + np->msi_flags &= ~NV_MSI_X_ENABLED; + goto out_err; + } + /* Request irq for tx handling */ + if (request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector, &nv_nic_irq_tx, SA_SHIRQ, dev->name, dev) != 0) { + printk(KERN_INFO "forcedeth: request_irq failed for tx %d\n", ret); + pci_disable_msix(np->pci_dev); + np->msi_flags &= ~NV_MSI_X_ENABLED; + goto out_free_rx; + } + /* Request irq for link and timer handling */ + if (request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_OTHER].vector, &nv_nic_irq_other, SA_SHIRQ, dev->name, dev) != 0) { + printk(KERN_INFO "forcedeth: request_irq failed for link %d\n", ret); + pci_disable_msix(np->pci_dev); + np->msi_flags &= ~NV_MSI_X_ENABLED; + goto out_free_tx; + } + /* map interrupts to their respective vector */ + writel(0, base + NvRegMSIXMap0); + writel(0, base + NvRegMSIXMap1); + set_msix_vector_map(dev, NV_MSI_X_VECTOR_RX, NVREG_IRQ_RX_ALL); + set_msix_vector_map(dev, NV_MSI_X_VECTOR_TX, NVREG_IRQ_TX_ALL); + set_msix_vector_map(dev, NV_MSI_X_VECTOR_OTHER, NVREG_IRQ_OTHER); + } else { + /* Request irq for all interrupts */ + if (request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector, &nv_nic_irq, SA_SHIRQ, dev->name, dev) != 0) { + printk(KERN_INFO "forcedeth: request_irq failed %d\n", ret); + pci_disable_msix(np->pci_dev); + np->msi_flags &= ~NV_MSI_X_ENABLED; + goto out_err; + } + + /* map interrupts to vector 0 */ + writel(0, base + NvRegMSIXMap0); + writel(0, base + NvRegMSIXMap1); + } + } + } + if (ret != 0 && np->msi_flags & NV_MSI_CAPABLE) { + if ((ret = pci_enable_msi(np->pci_dev)) == 0) { + np->msi_flags |= NV_MSI_ENABLED; + if (request_irq(np->pci_dev->irq, &nv_nic_irq, SA_SHIRQ, dev->name, dev) != 0) { + printk(KERN_INFO "forcedeth: request_irq failed %d\n", ret); + pci_disable_msi(np->pci_dev); + np->msi_flags &= ~NV_MSI_ENABLED; + goto out_err; + } + + /* map interrupts to vector 0 */ + writel(0, base + NvRegMSIMap0); + writel(0, base + NvRegMSIMap1); + /* enable msi vector 0 */ + writel(NVREG_MSI_VECTOR_0_ENABLED, base + NvRegMSIIrqMask); + } + } + if (ret != 0) { + if (request_irq(np->pci_dev->irq, &nv_nic_irq, SA_SHIRQ, dev->name, dev) != 0) + goto out_err; + } + + return 0; +out_free_tx: + free_irq(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector, dev); +out_free_rx: + free_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector, dev); +out_err: + return 1; +} + +static void nv_free_irq(struct net_device *dev) +{ + struct fe_priv *np = get_nvpriv(dev); + int i; + + if (np->msi_flags & NV_MSI_X_ENABLED) { + for (i = 0; i < (np->msi_flags & NV_MSI_X_VECTORS_MASK); i++) { + free_irq(np->msi_x_entry[i].vector, dev); + } + pci_disable_msix(np->pci_dev); + np->msi_flags &= ~NV_MSI_X_ENABLED; + } else { + free_irq(np->pci_dev->irq, dev); + if (np->msi_flags & NV_MSI_ENABLED) { + pci_disable_msi(np->pci_dev); + np->msi_flags &= ~NV_MSI_ENABLED; + } + } +} + static int nv_open(struct net_device *dev) { struct fe_priv *np = netdev_priv(dev); u8 __iomem *base = get_hwbase(dev); - int ret, oom, i; + int ret = 1; + int oom, i; dprintk(KERN_DEBUG "nv_open: begin\n"); /* 1) erase previous misconfiguration */ + if (np->driver_data & DEV_HAS_POWER_CNTRL) + nv_mac_reset(dev); /* 4.1-1: stop adapter: ignored, 4.3 seems to be overkill */ writel(NVREG_MCASTADDRA_FORCE, base + NvRegMulticastAddrA); writel(0, base + NvRegMulticastAddrB); @@ -2217,11 +2844,7 @@ nv_copy_mac_to_hw(dev); /* 4) give hw rings */ - writel((u32) np->ring_addr, base + NvRegRxRingPhysAddr); - if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) - writel((u32) (np->ring_addr + RX_RING*sizeof(struct ring_desc)), base + NvRegTxRingPhysAddr); - else - writel((u32) (np->ring_addr + RX_RING*sizeof(struct ring_desc_ex)), base + NvRegTxRingPhysAddr); + setup_hw_rings(dev, NV_SETUP_RX_RING | NV_SETUP_TX_RING); writel( ((RX_RING-1) << NVREG_RINGSZ_RXSHIFT) + ((TX_RING-1) << NVREG_RINGSZ_TXSHIFT), base + NvRegRingSizes); @@ -2229,6 +2852,7 @@ writel(np->linkspeed, base + NvRegLinkSpeed); writel(NVREG_UNKSETUP3_VAL1, base + NvRegUnknownSetupReg3); writel(np->txrxctl_bits, base + NvRegTxRxControl); + writel(np->vlanctl_bits, base + NvRegVlanControl); pci_push(base); writel(NVREG_TXRXCTL_BIT1|np->txrxctl_bits, base + NvRegTxRxControl); reg_delay(dev, NvRegUnknownSetupReg5, NVREG_UNKSETUP5_BIT31, NVREG_UNKSETUP5_BIT31, @@ -2273,18 +2897,18 @@ udelay(10); writel(readl(base + NvRegPowerState) | NVREG_POWERSTATE_VALID, base + NvRegPowerState); - writel(0, base + NvRegIrqMask); + nv_disable_hw_interrupts(dev, np->irqmask); pci_push(base); writel(NVREG_MIISTAT_MASK2, base + NvRegMIIStatus); writel(NVREG_IRQSTAT_MASK, base + NvRegIrqStatus); pci_push(base); - ret = request_irq(dev->irq, &nv_nic_irq, SA_SHIRQ, dev->name, dev); - if (ret) + if (nv_request_irq(dev)) { goto out_drain; + } /* ask for interrupts */ - writel(np->irqmask, base + NvRegIrqMask); + nv_enable_hw_interrupts(dev, np->irqmask); spin_lock_irq(&np->lock); writel(NVREG_MCASTADDRA_FORCE, base + NvRegMulticastAddrA); @@ -2345,13 +2969,13 @@ /* disable interrupts on the nic or we will lock up */ base = get_hwbase(dev); - writel(0, base + NvRegIrqMask); + nv_disable_hw_interrupts(dev, np->irqmask); pci_push(base); dprintk(KERN_INFO "%s: Irqmask is zero again\n", dev->name); spin_unlock_irq(&np->lock); - free_irq(dev->irq, dev); + nv_free_irq(dev); drain_ring(dev); @@ -2376,6 +3000,7 @@ unsigned long addr; u8 __iomem *base; int err, i; + u32 powerstate; dev = alloc_etherdev(sizeof(struct fe_priv)); err = -ENOMEM; @@ -2408,6 +3033,11 @@ if (err < 0) goto out_disable; + if (id->driver_data & (DEV_HAS_VLAN|DEV_HAS_MSI_X|DEV_HAS_POWER_CNTRL)) + np->register_size = NV_PCI_REGSZ_VER2; + else + np->register_size = NV_PCI_REGSZ_VER1; + err = -EINVAL; addr = 0; for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { @@ -2416,7 +3046,7 @@ pci_resource_len(pci_dev, i), pci_resource_flags(pci_dev, i)); if (pci_resource_flags(pci_dev, i) & IORESOURCE_MEM && - pci_resource_len(pci_dev, i) >= NV_PCI_REGSZ) { + pci_resource_len(pci_dev, i) >= np->register_size) { addr = pci_resource_start(pci_dev, i); break; } @@ -2427,17 +3057,25 @@ goto out_relreg; } + /* copy of driver data */ + np->driver_data = id->driver_data; + /* handle different descriptor versions */ if (id->driver_data & DEV_HAS_HIGH_DMA) { /* packet format 3: supports 40-bit addressing */ np->desc_ver = DESC_VER_3; - if (pci_set_dma_mask(pci_dev, 0x0000007fffffffffULL)) { + np->txrxctl_bits = NVREG_TXRXCTL_DESC_3; + if (pci_set_dma_mask(pci_dev, DMA_39BIT_MASK)) { printk(KERN_INFO "forcedeth: 64-bit DMA failed, using 32-bit addressing for device %s.\n", pci_name(pci_dev)); } else { dev->features |= NETIF_F_HIGHDMA; + printk(KERN_INFO "forcedeth: using HIGHDMA\n"); + } + if (pci_set_consistent_dma_mask(pci_dev, 0x0000007fffffffffULL)) { + printk(KERN_INFO "forcedeth: 64-bit DMA (consistent) failed for device %s.\n", + pci_name(pci_dev)); } - np->txrxctl_bits = NVREG_TXRXCTL_DESC_3; } else if (id->driver_data & DEV_HAS_LARGEDESC) { /* packet format 2: supports jumbo frames */ np->desc_ver = DESC_VER_2; @@ -2456,12 +3094,28 @@ np->txrxctl_bits |= NVREG_TXRXCTL_RXCHECK; dev->features |= NETIF_F_HW_CSUM | NETIF_F_SG; #ifdef NETIF_F_TSO - /* disabled dev->features |= NETIF_F_TSO; */ + dev->features |= NETIF_F_TSO; #endif } + np->vlanctl_bits = 0; + if (id->driver_data & DEV_HAS_VLAN) { + np->vlanctl_bits = NVREG_VLANCONTROL_ENABLE; + dev->features |= NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_TX; + dev->vlan_rx_register = nv_vlan_rx_register; + dev->vlan_rx_kill_vid = nv_vlan_rx_kill_vid; + } + + np->msi_flags = 0; + if ((id->driver_data & DEV_HAS_MSI) && !disable_msi) { + np->msi_flags |= NV_MSI_CAPABLE; + } + if ((id->driver_data & DEV_HAS_MSI_X) && !disable_msix) { + np->msi_flags |= NV_MSI_X_CAPABLE; + } + err = -ENOMEM; - np->base = ioremap(addr, NV_PCI_REGSZ); + np->base = ioremap(addr, np->register_size); if (!np->base) goto out_relreg; dev->base_addr = (unsigned long)np->base; @@ -2537,15 +3191,34 @@ writel(0, base + NvRegWakeUpFlags); np->wolenabled = 0; + if (id->driver_data & DEV_HAS_POWER_CNTRL) { + u8 revision_id; + pci_read_config_byte(pci_dev, PCI_REVISION_ID, &revision_id); + + /* take phy and nic out of low power mode */ + powerstate = readl(base + NvRegPowerState2); + powerstate &= ~NVREG_POWERSTATE2_POWERUP_MASK; + if ((id->device == PCI_DEVICE_ID_NVIDIA_NVENET_12 || + id->device == PCI_DEVICE_ID_NVIDIA_NVENET_13) && + revision_id >= 0xA3) + powerstate |= NVREG_POWERSTATE2_POWERUP_REV_A3; + writel(powerstate, base + NvRegPowerState2); + } + if (np->desc_ver == DESC_VER_1) { np->tx_flags = NV_TX_VALID; } else { np->tx_flags = NV_TX2_VALID; } - if (optimization_mode == NV_OPTIMIZATION_MODE_THROUGHPUT) + if (optimization_mode == NV_OPTIMIZATION_MODE_THROUGHPUT) { np->irqmask = NVREG_IRQMASK_THROUGHPUT; - else + if (np->msi_flags & NV_MSI_X_CAPABLE) /* set number of vectors */ + np->msi_flags |= 0x0003; + } else { np->irqmask = NVREG_IRQMASK_CPU; + if (np->msi_flags & NV_MSI_X_CAPABLE) /* set number of vectors */ + np->msi_flags |= 0x0001; + } if (id->driver_data & DEV_NEED_TIMERIRQ) np->irqmask |= NVREG_IRQ_TIMER; @@ -2692,19 +3365,19 @@ }, { /* MCP51 Ethernet Controller */ PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_12), - .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA, + .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL, }, { /* MCP51 Ethernet Controller */ PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_13), - .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA, + .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL, }, { /* MCP55 Ethernet Controller */ PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_14), - .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA, + .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_VLAN|DEV_HAS_MSI|DEV_HAS_MSI_X|DEV_HAS_POWER_CNTRL, }, { /* MCP55 Ethernet Controller */ PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_15), - .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA, + .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_VLAN|DEV_HAS_MSI|DEV_HAS_MSI_X|DEV_HAS_POWER_CNTRL, }, {0,}, }; @@ -2734,6 +3407,10 @@ MODULE_PARM_DESC(optimization_mode, "In throughput mode (0), every tx & rx packet will generate an interrupt. In CPU mode (1), interrupts are controlled by a timer."); module_param(poll_interval, int, 0); MODULE_PARM_DESC(poll_interval, "Interval determines how frequent timer interrupt is generated by [(time_in_micro_secs * 100) / (2^10)]. Min is 0 and Max is 65535."); +module_param(disable_msi, int, 0); +MODULE_PARM_DESC(disable_msi, "Disable MSI interrupts by setting to 1."); +module_param(disable_msix, int, 0); +MODULE_PARM_DESC(disable_msix, "Disable MSIX interrupts by setting to 1."); MODULE_AUTHOR("Manfred Spraul "); MODULE_DESCRIPTION("Reverse Engineered nForce ethernet driver"); --- linux-source-2.6.15-2.6.15.orig/drivers/net/ppp_synctty.c +++ linux-source-2.6.15-2.6.15/drivers/net/ppp_synctty.c @@ -207,6 +207,9 @@ struct syncppp *ap; int err; + if (!tty->driver->write) + return -EOPNOTSUPP; + ap = kmalloc(sizeof(*ap), GFP_KERNEL); err = -ENOMEM; if (ap == 0) --- linux-source-2.6.15-2.6.15.orig/drivers/net/skge.h +++ linux-source-2.6.15-2.6.15/drivers/net/skge.h @@ -2402,7 +2402,6 @@ struct tasklet_struct ext_tasklet; spinlock_t phy_lock; - spinlock_t hw_lock; }; enum { @@ -2419,7 +2418,6 @@ int port; spinlock_t tx_lock; - u32 tx_avail; struct skge_ring tx_ring; struct skge_ring rx_ring; --- linux-source-2.6.15-2.6.15.orig/drivers/net/e1000/e1000_main.c +++ linux-source-2.6.15-2.6.15/drivers/net/e1000/e1000_main.c @@ -248,6 +248,12 @@ module_param(debug, int, 0); MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)"); +#ifdef CONFIG_PCI_MSI +static int enable_msi; +module_param(enable_msi, int, 0); +MODULE_PARM_DESC(enable_msi, "Enable use of MSI interrupts"); +#endif + /** * e1000_init_module - Driver Registration Routine * @@ -439,7 +445,7 @@ } #ifdef CONFIG_PCI_MSI - if (adapter->hw.mac_type > e1000_82547_rev_2) { + if (adapter->hw.mac_type > e1000_82547_rev_2 && enable_msi) { adapter->have_msi = TRUE; if ((err = pci_enable_msi(adapter->pdev))) { DPRINTK(PROBE, ERR, --- linux-source-2.6.15-2.6.15.orig/drivers/net/irda/nsc-ircc.h +++ linux-source-2.6.15-2.6.15/drivers/net/irda/nsc-ircc.h @@ -269,7 +269,7 @@ __u32 new_speed; int index; /* Instance index */ - struct pm_dev *dev; + struct platform_device *pldev; }; static inline void switch_bank(int iobase, int bank) --- linux-source-2.6.15-2.6.15.orig/drivers/net/irda/irtty-sir.c +++ linux-source-2.6.15-2.6.15/drivers/net/irda/irtty-sir.c @@ -63,7 +63,9 @@ IRDA_ASSERT(priv != NULL, return -1;); IRDA_ASSERT(priv->magic == IRTTY_MAGIC, return -1;); - return priv->tty->driver->chars_in_buffer(priv->tty); + if (priv->tty->driver->chars_in_buffer) + return priv->tty->driver->chars_in_buffer(priv->tty); + return 0; } /* Wait (sleep) until underlaying hardware finished transmission --- linux-source-2.6.15-2.6.15.orig/drivers/net/irda/nsc-ircc.c +++ linux-source-2.6.15-2.6.15/drivers/net/irda/nsc-ircc.c @@ -55,14 +55,12 @@ #include #include #include +#include #include #include #include -#include -#include - #include #include #include @@ -74,14 +72,27 @@ static char *driver_name = "nsc-ircc"; +/* Power Management */ +#define NSC_IRCC_DRIVER_NAME "nsc-ircc" +static int nsc_ircc_suspend(struct platform_device *dev, pm_message_t state); +static int nsc_ircc_resume(struct platform_device *dev); + +static struct platform_driver nsc_ircc_driver = { + .suspend = nsc_ircc_suspend, + .resume = nsc_ircc_resume, + .driver = { + .name = NSC_IRCC_DRIVER_NAME, + }, +}; + /* Module parameters */ static int qos_mtt_bits = 0x07; /* 1 ms or more */ static int dongle_id; /* Use BIOS settions by default, but user may supply module parameters */ -static unsigned int io[] = { ~0, ~0, ~0, ~0 }; -static unsigned int irq[] = { 0, 0, 0, 0, 0 }; -static unsigned int dma[] = { 0, 0, 0, 0, 0 }; +static unsigned int io[] = { ~0, ~0, ~0, ~0, ~0 }; +static unsigned int irq[] = { 0, 0, 0, 0, 0 }; +static unsigned int dma[] = { 0, 0, 0, 0, 0 }; static int nsc_ircc_probe_108(nsc_chip_t *chip, chipio_t *info); static int nsc_ircc_probe_338(nsc_chip_t *chip, chipio_t *info); @@ -89,8 +100,7 @@ static int nsc_ircc_init_108(nsc_chip_t *chip, chipio_t *info); static int nsc_ircc_init_338(nsc_chip_t *chip, chipio_t *info); static int nsc_ircc_init_39x(nsc_chip_t *chip, chipio_t *info); -static int __devinit nsc_ircc_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *id); -static void __devexit nsc_ircc_pnp_remove(struct pnp_dev * dev); +static int nsc_ircc_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *id); /* These are the known NSC chips */ static nsc_chip_t chips[] = { @@ -105,11 +115,16 @@ /* Contributed by Jan Frey - IBM A30/A31 */ { "PC8739x", { 0x2e, 0x4e, 0x0 }, 0x20, 0xea, 0xff, nsc_ircc_probe_39x, nsc_ircc_init_39x }, + /* IBM ThinkPads using PC8738x (T60/X60/Z60) */ + { "IBM-PC8738x", { 0x2e, 0x4e, 0x0 }, 0x20, 0xf4, 0xff, + nsc_ircc_probe_39x, nsc_ircc_init_39x }, + /* IBM ThinkPads using PC8394T (T43/R52/?) */ + { "IBM-PC8394T", { 0x2e, 0x4e, 0x0 }, 0x20, 0xf9, 0xff, + nsc_ircc_probe_39x, nsc_ircc_init_39x }, { NULL } }; -/* Max 4 instances for now */ -static struct nsc_ircc_cb *dev_self[] = { NULL, NULL, NULL, NULL }; +static struct nsc_ircc_cb *dev_self[] = { NULL, NULL, NULL, NULL, NULL }; static char *dongle_types[] = { "Differential serial interface", @@ -131,6 +146,7 @@ }; /* PNP probing */ +static chipio_t pnp_info; static const struct pnp_device_id nsc_ircc_pnp_table[] = { { .id = "NSC6001", .driver_data = 0 }, { .id = "IBM0071", .driver_data = 0 }, @@ -143,11 +159,10 @@ .name = "nsc-ircc", .id_table = nsc_ircc_pnp_table, .probe = nsc_ircc_pnp_probe, - .remove = __devexit_p(nsc_ircc_pnp_remove), }; /* Some prototypes */ -static int nsc_ircc_open(chipio_t *info, int pnp); +static int nsc_ircc_open(chipio_t *info); static int nsc_ircc_close(struct nsc_ircc_cb *self); static int nsc_ircc_setup(chipio_t *info); static void nsc_ircc_pio_receive(struct nsc_ircc_cb *self); @@ -166,10 +181,9 @@ static int nsc_ircc_net_close(struct net_device *dev); static int nsc_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); static struct net_device_stats *nsc_ircc_net_get_stats(struct net_device *dev); -static int nsc_ircc_pmproc(struct pm_dev *dev, pm_request_t rqst, void *data); /* Globals */ -static int pnp_registered_port; +static int pnp_succeeded; /* * Function nsc_ircc_init () @@ -181,36 +195,33 @@ { chipio_t info; nsc_chip_t *chip; - int ret = -ENODEV; + int ret; int cfg_base; int cfg, id; int reg; int i = 0; - int r; - /* Register with PnP subsystem to detect disable ports */ - r = pnp_register_driver(&nsc_ircc_pnp_driver); - if (r >= 0) { - pnp_registered_port = 1; - ret = 0; - } + ret = platform_driver_register(&nsc_ircc_driver); + if (ret) { + IRDA_ERROR("%s, Can't register driver!\n", driver_name); + return ret; + } + + /* Register with PnP subsystem to detect disable ports */ + pnp_register_driver(&nsc_ircc_pnp_driver); + + ret = -ENODEV; /* Probe for all the NSC chipsets we know about */ - for (chip=chips; chip->name ; chip++) { + for (chip = chips; chip->name ; chip++) { IRDA_DEBUG(2, "%s(), Probing for %s ...\n", __FUNCTION__, chip->name); /* Try all config registers for this chip */ - for (cfg=0; cfg<3; cfg++) { + for (cfg = 0; cfg < ARRAY_SIZE(chip->cfg); cfg++) { cfg_base = chip->cfg[cfg]; if (!cfg_base) continue; - - memset(&info, 0, sizeof(chipio_t)); - info.cfg_base = cfg_base; - info.fir_base = io[i]; - info.dma = dma[i]; - info.irq = irq[i]; /* Read index register */ reg = inb(cfg_base); @@ -225,24 +236,64 @@ if ((id & chip->cid_mask) == chip->cid_value) { IRDA_DEBUG(2, "%s() Found %s chip, revision=%d\n", __FUNCTION__, chip->name, id & ~chip->cid_mask); - /* - * If the user supplies the base address, then - * we init the chip, if not we probe the values - * set by the BIOS - */ - if (io[i] < 0x2000) { - chip->init(chip, &info); - } else - chip->probe(chip, &info); - if (nsc_ircc_open(&info, FALSE) == 0) - ret = 0; + /* + * If we found a correct PnP setting, + * we first try it. + */ + if (pnp_succeeded) { + memset(&info, 0, sizeof(chipio_t)); + info.cfg_base = cfg_base; + info.fir_base = pnp_info.fir_base; + info.dma = pnp_info.dma; + info.irq = pnp_info.irq; + + if (info.fir_base < 0x2000) { + IRDA_MESSAGE("%s, chip->init\n", driver_name); + chip->init(chip, &info); + } else + chip->probe(chip, &info); + + if (nsc_ircc_open(&info) >= 0) + ret = 0; + } + + /* + * Opening based on PnP values failed. + * Let's fallback to user values, or probe + * the chip. + */ + if (ret) { + IRDA_DEBUG(2, "%s, PnP init failed\n", driver_name); + memset(&info, 0, sizeof(chipio_t)); + info.cfg_base = cfg_base; + info.fir_base = io[i]; + info.dma = dma[i]; + info.irq = irq[i]; + + /* + * If the user supplies the base address, then + * we init the chip, if not we probe the values + * set by the BIOS + */ + if (io[i] < 0x2000) { + chip->init(chip, &info); + } else + chip->probe(chip, &info); + + if (nsc_ircc_open(&info) >= 0) + ret = 0; + } i++; } else { IRDA_DEBUG(2, "%s(), Wrong chip id=0x%02x\n", __FUNCTION__, id); } } - + } + + if (ret) { + platform_driver_unregister(&nsc_ircc_driver); + pnp_unregister_driver(&nsc_ircc_pnp_driver); } return ret; @@ -258,15 +309,13 @@ { int i; - pm_unregister_all(nsc_ircc_pmproc); - - if (pnp_registered_port) - pnp_unregister_driver(&nsc_ircc_pnp_driver); - - for (i=0; i < 4; i++) { + for (i = 0; i < ARRAY_SIZE(dev_self); i++) { if (dev_self[i]) nsc_ircc_close(dev_self[i]); } + + platform_driver_unregister(&nsc_ircc_driver); + pnp_unregister_driver(&nsc_ircc_pnp_driver); } /* @@ -275,22 +324,22 @@ * Open driver instance * */ -static int __devinit nsc_ircc_open(chipio_t *info, int pnp) +static int __init nsc_ircc_open(chipio_t *info) { struct net_device *dev; struct nsc_ircc_cb *self; - struct pm_dev *pmdev; void *ret; - int err; - int i; + int err, chip_index; IRDA_DEBUG(2, "%s()\n", __FUNCTION__); - for (i=0; i < 4; i++) { - if (!dev_self[i]) + + for (chip_index = 0; chip_index < ARRAY_SIZE(dev_self); chip_index++) { + if (!dev_self[chip_index]) break; } - if (i == 4) { + + if (chip_index == ARRAY_SIZE(dev_self)) { IRDA_ERROR("%s(), maximum number of supported chips reached!\n", __FUNCTION__); return -ENOMEM; } @@ -315,8 +364,8 @@ spin_lock_init(&self->lock); /* Need to store self somewhere */ - dev_self[i] = self; - self->index = i; + dev_self[chip_index] = self; + self->index = chip_index; /* Initialize IO */ self->io.cfg_base = info->cfg_base; @@ -328,7 +377,7 @@ /* Reserve the ioports that we need */ ret = request_region(self->io.fir_base, self->io.fir_ext, driver_name); - if (!ret && !pnp) { + if (!ret) { IRDA_WARNING("%s(), can't get iobase of 0x%03x\n", __FUNCTION__, self->io.fir_base); err = -ENODEV; @@ -395,7 +444,7 @@ /* Check if user has supplied a valid dongle id or not */ if ((dongle_id <= 0) || - (dongle_id >= (sizeof(dongle_types) / sizeof(dongle_types[0]))) ) { + (dongle_id >= ARRAY_SIZE(dongle_types))) { dongle_id = nsc_ircc_read_dongle_id(self->io.fir_base); IRDA_MESSAGE("%s, Found dongle: %s\n", driver_name, @@ -408,11 +457,18 @@ self->io.dongle_id = dongle_id; nsc_ircc_init_dongle_interface(self->io.fir_base, dongle_id); - pmdev = pm_register(PM_SYS_DEV, PM_SYS_IRDA, nsc_ircc_pmproc); - if (pmdev) - pmdev->data = self; + self->pldev = platform_device_register_simple(NSC_IRCC_DRIVER_NAME, + self->index, NULL, 0); + if (IS_ERR(self->pldev)) { + err = PTR_ERR(self->pldev); + goto out5; + } + platform_set_drvdata(self->pldev, self); - return 0; + return chip_index; + + out5: + unregister_netdev(dev); out4: dma_free_coherent(NULL, self->tx_buff.truesize, self->tx_buff.head, self->tx_buff_dma); @@ -423,7 +479,7 @@ release_region(self->io.fir_base, self->io.fir_ext); out1: free_netdev(dev); - dev_self[i] = NULL; + dev_self[chip_index] = NULL; return err; } @@ -433,7 +489,7 @@ * Close driver instance * */ -static int __devexit nsc_ircc_close(struct nsc_ircc_cb *self) +static int __exit nsc_ircc_close(struct nsc_ircc_cb *self) { int iobase; @@ -443,6 +499,8 @@ iobase = self->io.fir_base; + platform_device_unregister(self->pldev); + /* Remove netdevice */ unregister_netdev(self->netdev); @@ -749,7 +807,7 @@ int cfg_base = info->cfg_base; int enabled; - /* User is shure about his config... accept it. */ + /* User is sure about his config... accept it. */ IRDA_DEBUG(2, "%s(): nsc_ircc_init_39x (user settings): " "io=0x%04x, irq=%d, dma=%d\n", __FUNCTION__, info->fir_base, info->irq, info->dma); @@ -851,14 +909,12 @@ } /* PNP probing */ -static int __devinit -nsc_ircc_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *id) +static int nsc_ircc_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *id) { - chipio_t info; - - memset(&info, 0, sizeof(chipio_t)); - info.irq = -1; - info.dma = -1; + memset(&pnp_info, 0, sizeof(chipio_t)); + pnp_info.irq = -1; + pnp_info.dma = -1; + pnp_succeeded = 1; /* There don't seem to be any way to get the cfg_base. * On my box, cfg_base is in the PnP descriptor of the @@ -866,40 +922,29 @@ if (pnp_port_valid(dev, 0) && !(pnp_port_flags(dev, 0) & IORESOURCE_DISABLED)) - info.fir_base = pnp_port_start(dev, 0); + pnp_info.fir_base = pnp_port_start(dev, 0); if (pnp_irq_valid(dev, 0) && !(pnp_irq_flags(dev, 0) & IORESOURCE_DISABLED)) - info.irq = pnp_irq(dev, 0); + pnp_info.irq = pnp_irq(dev, 0); if (pnp_dma_valid(dev, 0) && !(pnp_dma_flags(dev, 0) & IORESOURCE_DISABLED)) - info.dma = pnp_dma(dev, 0); + pnp_info.dma = pnp_dma(dev, 0); - IRDA_DEBUG(0, "%s() : Found cfg_base 0x%03X ; firbase 0x%03X ; irq %d ; dma %d.\n", __FUNCTION__, info.cfg_base, info.fir_base, info.irq, info.dma); + IRDA_DEBUG(0, "%s() : From PnP, found firbase 0x%03X ; irq %d ; dma %d.\n", + __FUNCTION__, pnp_info.fir_base, pnp_info.irq, pnp_info.dma); - if(/*(info.cfg_base == 0) ||*/ (info.fir_base == 0) || - (info.irq == -1) || (info.dma == -1)) { + if((pnp_info.fir_base == 0) || + (pnp_info.irq == -1) || (pnp_info.dma == -1)) { /* Returning an error will disable the device. Yuck ! */ //return -EINVAL; - return 0; + pnp_succeeded = 0; } - /* We should identify and initialise the device */ - if (nsc_ircc_open(&info, TRUE) == 0) - pnp_set_drvdata(dev, (void *)1); - return 0; } -static void __devexit -nsc_ircc_pnp_remove(struct pnp_dev * dev) -{ - int index = (int)pnp_get_drvdata(dev); - if (index && dev_self[index - 1]) - nsc_ircc_close(dev_self[index - 1]); -} - /* * Function nsc_ircc_setup (info) * @@ -2255,45 +2300,83 @@ return &self->stats; } -static void nsc_ircc_suspend(struct nsc_ircc_cb *self) +static int nsc_ircc_suspend(struct platform_device *dev, pm_message_t state) { - IRDA_MESSAGE("%s, Suspending\n", driver_name); + struct nsc_ircc_cb *self = platform_get_drvdata(dev); + int bank; + unsigned long flags; + int iobase = self->io.fir_base; if (self->io.suspended) - return; + return 0; + + IRDA_DEBUG(1, "%s, Suspending\n", driver_name); + + rtnl_lock(); + if (netif_running(self->netdev)) { + netif_device_detach(self->netdev); + spin_lock_irqsave(&self->lock, flags); + /* Save current bank */ + bank = inb(iobase+BSR); - nsc_ircc_net_close(self->netdev); + /* Disable interrupts */ + switch_bank(iobase, BANK0); + outb(0, iobase+IER); + + /* Restore bank register */ + outb(bank, iobase+BSR); + spin_unlock_irqrestore(&self->lock, flags); + free_irq(self->io.irq, self->netdev); + disable_dma(self->io.dma); + } self->io.suspended = 1; + rtnl_unlock(); + + return 0; } -static void nsc_ircc_wakeup(struct nsc_ircc_cb *self) +static int nsc_ircc_resume(struct platform_device *dev) { + struct nsc_ircc_cb *self = platform_get_drvdata(dev); + unsigned long flags; + if (!self->io.suspended) - return; + return 0; + + IRDA_DEBUG(1, "%s, Waking up\n", driver_name); + rtnl_lock(); nsc_ircc_setup(&self->io); - nsc_ircc_net_open(self->netdev); - - IRDA_MESSAGE("%s, Waking up\n", driver_name); + nsc_ircc_init_dongle_interface(self->io.fir_base, self->io.dongle_id); + + if (netif_running(self->netdev)) { + if (request_irq(self->io.irq, nsc_ircc_interrupt, 0, + self->netdev->name, self->netdev)) { + IRDA_WARNING("%s, unable to allocate irq=%d\n", + driver_name, self->io.irq); + + /* + * Don't fail resume process, just kill this + * network interface + */ + unregister_netdevice(self->netdev); + } else { + spin_lock_irqsave(&self->lock, flags); + nsc_ircc_change_speed(self, self->io.speed); + spin_unlock_irqrestore(&self->lock, flags); + netif_device_attach(self->netdev); + } + } else { + spin_lock_irqsave(&self->lock, flags); + nsc_ircc_change_speed(self, 9600); + spin_unlock_irqrestore(&self->lock, flags); + } self->io.suspended = 0; -} + rtnl_unlock(); -static int nsc_ircc_pmproc(struct pm_dev *dev, pm_request_t rqst, void *data) -{ - struct nsc_ircc_cb *self = (struct nsc_ircc_cb*) dev->data; - if (self) { - switch (rqst) { - case PM_SUSPEND: - nsc_ircc_suspend(self); - break; - case PM_RESUME: - nsc_ircc_wakeup(self); - break; - } - } - return 0; + return 0; } MODULE_AUTHOR("Dag Brattli "); --- linux-source-2.6.15-2.6.15.orig/drivers/net/irda/via-ircc.c +++ linux-source-2.6.15-2.6.15/drivers/net/irda/via-ircc.c @@ -1220,8 +1220,13 @@ IRDA_DEBUG(2, "%s(): len=%x\n", __FUNCTION__, len); + if ((len - 4) < 2) { + self->stats.rx_dropped++; + return FALSE; + } + skb = dev_alloc_skb(len + 1); - if ((skb == NULL) || ((len - 4) < 2)) { + if (skb == NULL) { self->stats.rx_dropped++; return FALSE; } --- linux-source-2.6.15-2.6.15.orig/drivers/net/irda/sir_kthread.c +++ linux-source-2.6.15-2.6.15/drivers/net/irda/sir_kthread.c @@ -109,8 +109,6 @@ static int irda_thread(void *startup) { - DECLARE_WAITQUEUE(wait, current); - daemonize("kIrDAd"); irda_rq_queue.thread = current; @@ -126,12 +124,8 @@ * that the problem is that "uninterruptible sleep * contributes to load average", making user worry. * Jean II */ - prepare_to_wait(&irda_rq_queue.kick, &wait, TASK_INTERRUPTIBLE); - if (list_empty(&irda_rq_queue.request_list)) - schedule_timeout(HZ/10); - else - __set_task_state(current, TASK_RUNNING); - finish_wait(&irda_rq_queue.kick, &wait); + wait_event_interruptible_timeout(irda_rq_queue.kick, + !list_empty(&irda_rq_queue.request_list), HZ); /* make swsusp happy with our thread */ try_to_freeze(); --- linux-source-2.6.15-2.6.15.orig/drivers/net/pppox.c +++ linux-source-2.6.15-2.6.15/drivers/net/pppox.c @@ -58,7 +58,7 @@ { /* Clear connection to ppp device, if attached. */ - if (sk->sk_state & (PPPOX_BOUND | PPPOX_ZOMBIE)) { + if (sk->sk_state & (PPPOX_BOUND | PPPOX_CONNECTED | PPPOX_ZOMBIE)) { ppp_unregister_channel(&pppox_sk(sk)->chan); sk->sk_state = PPPOX_DEAD; } --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/strip.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/strip.c @@ -800,7 +800,8 @@ struct termios old_termios = *(tty->termios); tty->termios->c_cflag &= ~CBAUD; /* Clear the old baud setting */ tty->termios->c_cflag |= baudcode; /* Set the new baud setting */ - tty->driver->set_termios(tty, &old_termios); + if (tty->driver->set_termios) + tty->driver->set_termios(tty, &old_termios); } /* --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/ipw3945/ipw3945.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/ipw3945/ipw3945.c @@ -61,6 +61,7 @@ * then again with each band one directed and one indirect. * */ +#include #include #include #include @@ -97,7 +98,7 @@ #define VQ #endif -#define IPW3945_VERSION "1.0.3" VD VM VP VR VQ +#define IPW3945_VERSION "1.0.5" VD VM VP VR VQ #define DRV_DESCRIPTION "Intel(R) PRO/Wireless 3945 Network Connection driver for Linux" #define DRV_COPYRIGHT "Copyright(c) 2003-2006 Intel Corporation" @@ -6543,6 +6544,13 @@ return IPW_INVALID_STATION; } +static void ipw_remove_all_sta(struct ipw_priv *priv) +{ + int i; + for (i = 0; i < NUM_OF_STATIONS; i++) + priv->stations[i].used = 0; +} + static u8 ipw_sync_station(struct ipw_priv *priv, int sta_id, u8 tx_rate, u8 flags) { @@ -6628,6 +6636,12 @@ ipw_send_disassociate(data, 0); + if (priv->ieee->wpa_ie_len) { + kfree(priv->ieee->wpa_ie); + priv->ieee->wpa_ie = NULL; + priv->ieee->wpa_ie_len = 0; + } + if (priv->ieee->iw_mode == IW_MODE_INFRA) del_timer_sync(&priv->roaming_wdt); @@ -9306,8 +9320,12 @@ if (auth->transaction == 2) { struct sk_buff *skb_auth = NULL; struct ieee80211_auth *auth2; + int tx_key = + !(priv->ieee->sec. + flags & SEC_ACTIVE_KEY) ? 0 : priv->ieee-> + sec.active_key; struct ieee80211_crypt_data *crypt = - priv->ieee->crypt[0]; + priv->ieee->crypt[tx_key]; if (!crypt) { IPW_DEBUG_ASSOC("no crypt config " @@ -11692,6 +11710,7 @@ break; default: + mutex_unlock(&priv->mutex); return -EPERM; } else wrqu->freq.m = 0; @@ -15798,6 +15817,8 @@ ipw_update_tech_led(priv); } + ipw_remove_all_sta(priv); + /* Unblock any waiting calls */ wake_up_interruptible_all(&priv->wait_command_queue); wake_up_interruptible_all(&priv->wait_daemon_out_queue); --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/prism54_softmac/islpci_hotplug.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/prism54_softmac/islpci_hotplug.c @@ -51,7 +51,6 @@ 0x1260, 0x3890, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, -#endif /* 3COM 3CRWE154G72 Wireless LAN adapter */ { 0x10b7, 0x6001, @@ -60,13 +59,11 @@ /* Intersil PRISM Indigo Wireless LAN adapter */ /* disabled, use old driver! */ -#if 0 { 0x1260, 0x3877, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, #endif - /* Intersil PRISM Javelin/Xbow Wireless LAN adapter */ { 0x1260, 0x3886, --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/acx/pci.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/acx/pci.c @@ -618,17 +618,18 @@ .subdevice = 0xab80, .verstr = "1.2.0.30", }, - { /* Texas Instruments ACX 111 54Mbps Wireless Interface, reported by - * McPolu . */ + { /* Texas Instruments ACX 111 54Mbps Wireless Interface */ .vendor = PCI_VENDOR_ID_TI, .device = PCI_DEVICE_ID_TI_TNETW1130, - .subvendor = 0x104c, - .subdevice = 0x9067, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, .verstr = "1.2.1.34", }, { 0 } }; +#define PCI_MATCH(a,b) (a == b || a == PCI_ANY_ID) + /* Returns an alternate version of the firmware for specific devices. The * above table will _always_ be overriden by module param. */ static const char *get_firmware_ver(struct pci_dev *dev) @@ -639,10 +640,10 @@ goto use_default; for (dev_match = fw_ver_table; dev_match->vendor; dev_match++) { - if (dev_match->vendor == dev->vendor && - dev_match->device == dev->device && - dev_match->subvendor == dev->subsystem_vendor && - dev_match->subdevice == dev->subsystem_device) + if (PCI_MATCH(dev_match->vendor, dev->vendor) && + PCI_MATCH(dev_match->device, dev->device) && + PCI_MATCH(dev_match->subvendor, dev->subsystem_vendor) && + PCI_MATCH(dev_match->subdevice, dev->subsystem_device)) return dev_match->verstr; } --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/rt_config.h +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/rt_config.h @@ -1,164 +1,164 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: rt_config.h - * - * Abstract: Central header file for all includes - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * RoryC 21st Dec 02 Initial code - * MarkW 8th Dec 04 Baseline code - ***************************************************************************/ - -#ifndef __RT_CONFIG_H__ -#define __RT_CONFIG_H__ - -#define PROFILE_PATH "/etc/Wireless/RT2500STA/RT2500STA.dat" -#define NIC_DEVICE_NAME "RT2500STA" - -#define DRV_NAME "rt2500" -#define DRV_VERSION "1.1.0 BETA3" -#define DRV_RELDATE "2005/07/31" -#define DRV_VERSION_MAJOR 1 -#define DRV_VERSION_MINOR 1 -#define DRV_VERSION_SUB 0 -#define DRV_BUILD_YEAR 2005 -#define DRV_BUILD_MONTH 07 -#define DRV_BUILD_DAY 31 - -/* Operational parameters that are set at compile time. */ -#if !defined(__OPTIMIZE__) || !defined(__KERNEL__) -#warning You must compile this file with the correct options! -#warning See the last lines of the source file. -#error You must compile this driver with "-O". -#endif - -#include //can delete -#include -#include -#include -#include -#include -#include //can delete -#include // can delete -#include -#include -#include -#include -#include -#include -#include //can delete -#include // can delete -#include -#include -#include -#include -#include -#include - -#if LINUX_VERSION_CODE >= 0x20407 -#include -#endif -#include /* Processor type for cache alignment. */ -#include -#include -#include -#include -#include - -// The type definition has to be placed before including rt2460.h -#ifndef ULONG -#define CHAR char -#define INT int -#define SHORT int -#define UINT u32 -#define ULONG u32 -#define USHORT u16 -#define UCHAR u8 - -#define BOOLEAN u8 -//#define LARGE_INTEGER s64 -#define VOID void -#define LONG int -#define ULONGLONG u64 -typedef VOID *PVOID; -typedef CHAR *PCHAR; -typedef UCHAR *PUCHAR; -typedef LONG *PLONG; -typedef ULONG *PULONG; - -typedef union _LARGE_INTEGER { - struct { - ULONG LowPart; - LONG HighPart; - }vv; - struct { - ULONG LowPart; - LONG HighPart; - } u; - s64 QuadPart; -} LARGE_INTEGER; - -#endif - -#define IN -#define OUT - -#define TRUE 1 -#define FALSE 0 - -#define NDIS_STATUS INT -#define NDIS_STATUS_SUCCESS 0x00 -#define NDIS_STATUS_FAILURE 0x01 -#define NDIS_STATUS_RESOURCES 0x03 -#define NDIS_STATUS_MEDIA_DISCONNECT 0x04 -#define NDIS_STATUS_MEDIA_CONNECT 0x05 - -#ifdef __BIG_ENDIAN -//#warning Compiling for big endian machine. -#define BIG_ENDIAN TRUE -#endif /* __BIG_ENDIAN */ - -#include "rtmp_type.h" -#include "rtmp_def.h" -#include "rt2560.h" -#include "rtmp.h" -#include "mlme.h" -#include "oid.h" -#include "wpa.h" -#include "md5.h" - -#define DEBUG_TASK_DELAY 2000 - -enum rt2560_chips { - RT2560A = 0, -}; - -#ifdef RTMP_EMBEDDED -#undef GFP_KERNEL -#define GFP_KERNEL (GFP_DMA | GFP_ATOMIC) -#endif - -#endif // __RT_CONFIG_H__ +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: rt_config.h + * + * Abstract: Central header file for all includes + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * RoryC 21st Dec 02 Initial code + * MarkW 8th Dec 04 Baseline code + ***************************************************************************/ + +#ifndef __RT_CONFIG_H__ +#define __RT_CONFIG_H__ + +#define PROFILE_PATH "/etc/Wireless/RT2500STA/RT2500STA.dat" +#define NIC_DEVICE_NAME "RT2500STA" + +#define DRV_NAME "rt2500" +#define DRV_VERSION "1.1.0 CVS" +#define DRV_RELDATE "2005/07/10" +#define DRV_VERSION_MAJOR 1 +#define DRV_VERSION_MINOR 1 +#define DRV_VERSION_SUB 0 +#define DRV_BUILD_YEAR 2005 +#define DRV_BUILD_MONTH 07 +#define DRV_BUILD_DAY 10 + +/* Operational parameters that are set at compile time. */ +#if !defined(__OPTIMIZE__) || !defined(__KERNEL__) +#warning You must compile this file with the correct options! +#warning See the last lines of the source file. +#error You must compile this driver with "-O". +#endif + +#include //can delete +#include +#include +#include +#include +#include +#include //can delete +#include // can delete +#include +#include +#include +#include +#include +#include +#include //can delete +#include // can delete +#include +#include +#include +#include +#include +#include + +#if LINUX_VERSION_CODE >= 0x20407 +#include +#endif +#include /* Processor type for cache alignment. */ +#include +#include +#include +#include +#include + +// The type definition has to be placed before including rt2460.h +#ifndef ULONG +#define CHAR char +#define INT int +#define SHORT int +#define UINT u32 +#define ULONG u32 +#define USHORT u16 +#define UCHAR u8 + +#define BOOLEAN u8 +//#define LARGE_INTEGER s64 +#define VOID void +#define LONG int +#define ULONGLONG u64 +typedef VOID *PVOID; +typedef CHAR *PCHAR; +typedef UCHAR *PUCHAR; +typedef LONG *PLONG; +typedef ULONG *PULONG; + +typedef union _LARGE_INTEGER { + struct { + ULONG LowPart; + LONG HighPart; + }vv; + struct { + ULONG LowPart; + LONG HighPart; + } u; + s64 QuadPart; +} LARGE_INTEGER; + +#endif + +#define IN +#define OUT + +#define TRUE 1 +#define FALSE 0 + +#define NDIS_STATUS INT +#define NDIS_STATUS_SUCCESS 0x00 +#define NDIS_STATUS_FAILURE 0x01 +#define NDIS_STATUS_RESOURCES 0x03 +#define NDIS_STATUS_MEDIA_DISCONNECT 0x04 +#define NDIS_STATUS_MEDIA_CONNECT 0x05 + +#ifdef __BIG_ENDIAN +#warning Compiling for big endian machine. +#define BIG_ENDIAN TRUE +#endif /* __BIG_ENDIAN */ + +#include "rtmp_type.h" +#include "rtmp_def.h" +#include "rt2560.h" +#include "rtmp.h" +#include "mlme.h" +#include "oid.h" +#include "wpa.h" +#include "md5.h" + +#define DEBUG_TASK_DELAY 2000 + +enum rt2560_chips { + RT2560A = 0, +}; + +#ifdef RTMP_EMBEDDED +#undef GFP_KERNEL +#define GFP_KERNEL (GFP_DMA | GFP_ATOMIC) +#endif + +#endif // __RT_CONFIG_H__ --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/rtmp_info.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/rtmp_info.c @@ -1,4609 +1,4776 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: rtmp_info.c - * - * Abstract: IOCTL related subroutines - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * RoryC 3rd Jan 03 Initial code - * MarkW 8th Dec 04 Baseline code - * RobinC 10th Dec 04 RFMON Support - * MarkW 10th Dec 04 Rolled in Ralink 1.4.5.0 - * MarkW 15th Dec 04 Removed debug iwpriv - * RobinC 16th Dec 04 Fix for range values - * RobinC 16th Dec 04 support ifpreup scripts - * RobinC 17th Dec 04 Link Quality reporting - * MarkW 17th Dec 04 iwconfig frequency fix - * MarkW 17th Dec 04 Monitor mode through iwconfig - * MarkW 22nd Dec 04 RSSI reporting for iwlist scanning - * MarkW 31st Jan 05 if pre-up fix for RaConfig - * LuisCorreia 23rd Feb 05 fix unknown IOCTL's - * MarkW 9th Mar 05 Quality reporting in scan for current - * MarkW 9th Jun 05 Fix channel change for ADHOC mode - ***************************************************************************/ - -#include "rt_config.h" -#include - -#ifndef IW_ESSID_MAX_SIZE -/* Maximum size of the ESSID and NICKN strings */ -#define IW_ESSID_MAX_SIZE 32 -#endif - -#define NR_WEP_KEYS 4 -#define WEP_SMALL_KEY_LEN (40/8) -#define WEP_LARGE_KEY_LEN (104/8) - -#define MAP_CHANNEL_ID_TO_KHZ(ch, khz) { \ - switch (ch) \ - { \ - case 1: khz = 2412000; break; \ - case 2: khz = 2417000; break; \ - case 3: khz = 2422000; break; \ - case 4: khz = 2427000; break; \ - case 5: khz = 2432000; break; \ - case 6: khz = 2437000; break; \ - case 7: khz = 2442000; break; \ - case 8: khz = 2447000; break; \ - case 9: khz = 2452000; break; \ - case 10: khz = 2457000; break; \ - case 11: khz = 2462000; break; \ - case 12: khz = 2467000; break; \ - case 13: khz = 2472000; break; \ - case 14: khz = 2484000; break; \ - case 36: /* UNII */ khz = 5180000; break; \ - case 40: /* UNII */ khz = 5200000; break; \ - case 44: /* UNII */ khz = 5220000; break; \ - case 48: /* UNII */ khz = 5240000; break; \ - case 52: /* UNII */ khz = 5260000; break; \ - case 56: /* UNII */ khz = 5280000; break; \ - case 60: /* UNII */ khz = 5300000; break; \ - case 64: /* UNII */ khz = 5320000; break; \ - case 149: /* UNII */ khz = 5745000; break; \ - case 153: /* UNII */ khz = 5765000; break; \ - case 157: /* UNII */ khz = 5785000; break; \ - case 161: /* UNII */ khz = 5805000; break; \ - case 100: /* HiperLAN2 */ khz = 5500000; break; \ - case 104: /* HiperLAN2 */ khz = 5520000; break; \ - case 108: /* HiperLAN2 */ khz = 5540000; break; \ - case 112: /* HiperLAN2 */ khz = 5560000; break; \ - case 116: /* HiperLAN2 */ khz = 5580000; break; \ - case 120: /* HiperLAN2 */ khz = 5600000; break; \ - case 124: /* HiperLAN2 */ khz = 5620000; break; \ - case 128: /* HiperLAN2 */ khz = 5640000; break; \ - case 132: /* HiperLAN2 */ khz = 5660000; break; \ - case 136: /* HiperLAN2 */ khz = 5680000; break; \ - case 140: /* HiperLAN2 */ khz = 5700000; break; \ - case 34: /* Japan MMAC */ khz = 5170000; break; \ - case 38: /* Japan MMAC */ khz = 5190000; break; \ - case 42: /* Japan MMAC */ khz = 5210000; break; \ - case 46: /* Japan MMAC */ khz = 5230000; break; \ - default: khz = 2412000; break; \ - } \ - } - -#define MAP_KHZ_TO_CHANNEL_ID(khz, ch) { \ - switch (khz) \ - { \ - case 2412000: ch = 1; break; \ - case 2417000: ch = 2; break; \ - case 2422000: ch = 3; break; \ - case 2427000: ch = 4; break; \ - case 2432000: ch = 5; break; \ - case 2437000: ch = 6; break; \ - case 2442000: ch = 7; break; \ - case 2447000: ch = 8; break; \ - case 2452000: ch = 9; break; \ - case 2457000: ch = 10; break; \ - case 2462000: ch = 11; break; \ - case 2467000: ch = 12; break; \ - case 2472000: ch = 13; break; \ - case 2484000: ch = 14; break; \ - case 5180000: ch = 36; /* UNII */ break; \ - case 5200000: ch = 40; /* UNII */ break; \ - case 5220000: ch = 44; /* UNII */ break; \ - case 5240000: ch = 48; /* UNII */ break; \ - case 5260000: ch = 52; /* UNII */ break; \ - case 5280000: ch = 56; /* UNII */ break; \ - case 5300000: ch = 60; /* UNII */ break; \ - case 5320000: ch = 64; /* UNII */ break; \ - case 5745000: ch = 149; /* UNII */ break; \ - case 5765000: ch = 153; /* UNII */ break; \ - case 5785000: ch = 157; /* UNII */ break; \ - case 5805000: ch = 161; /* UNII */ break; \ - case 5500000: ch = 100; /* HiperLAN2 */ break; \ - case 5520000: ch = 104; /* HiperLAN2 */ break; \ - case 5540000: ch = 108; /* HiperLAN2 */ break; \ - case 5560000: ch = 112; /* HiperLAN2 */ break; \ - case 5580000: ch = 116; /* HiperLAN2 */ break; \ - case 5600000: ch = 120; /* HiperLAN2 */ break; \ - case 5620000: ch = 124; /* HiperLAN2 */ break; \ - case 5640000: ch = 128; /* HiperLAN2 */ break; \ - case 5660000: ch = 132; /* HiperLAN2 */ break; \ - case 5680000: ch = 136; /* HiperLAN2 */ break; \ - case 5700000: ch = 140; /* HiperLAN2 */ break; \ - case 5170000: ch = 34; /* Japan MMAC */ break; \ - case 5190000: ch = 38; /* Japan MMAC */ break; \ - case 5210000: ch = 42; /* Japan MMAC */ break; \ - case 5230000: ch = 46; /* Japan MMAC */ break; \ - default: ch = 1; break; \ - } \ - } - -struct iw_priv_args privtab[] = { -{ RTPRIV_IOCTL_SET, - IW_PRIV_TYPE_CHAR | 1024, 0, - "set"}, -{ RTPRIV_IOCTL_BBP, - IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024, - "bbp"}, -{ RTPRIV_IOCTL_MAC, - IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024, - "mac"}, -{ RTPRIV_IOCTL_E2P, - IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024, - "e2p"} -}; - -static struct { - char *name; - int (*set_proc)(PRTMP_ADAPTER pAdapter, PUCHAR arg); -} *PRTMP_PRIVATE_SET_PROC, RTMP_PRIVATE_SUPPORT_PROC[] = { - {"CountryRegion", Set_CountryRegion_Proc }, - {"SSID", Set_SSID_Proc}, - {"WirelessMode", Set_WirelessMode_Proc}, - {"TxRate", Set_TxRate_Proc}, - {"AdhocOfdm", Set_AdhocModeRate_Proc}, - {"Channel", Set_Channel_Proc}, - {"BGProtection", Set_BGProtection_Proc}, - {"StaWithEtherBridge", Set_StaWithEtherBridge_Proc}, - {"TxPreamble", Set_TxPreamble_Proc}, - {"RTSThreshold", Set_RTSThreshold_Proc}, - {"FragThreshold", Set_FragThreshold_Proc}, - {"TxBurst", Set_TxBurst_Proc}, - {"TurboRate", Set_TurboRate_Proc}, - {"NetworkType", Set_NetworkType_Proc}, - {"AuthMode", Set_AuthMode_Proc}, - {"EncrypType", Set_EncrypType_Proc}, - {"DefaultKeyID", Set_DefaultKeyID_Proc}, - {"Key1", Set_Key1_Proc}, - {"Key2", Set_Key2_Proc}, - {"Key3", Set_Key3_Proc}, - {"Key4", Set_Key4_Proc}, - {"WPAPSK", Set_WPAPSK_Proc}, - {"WPANONE", Set_WPANONE_Proc}, - -#ifdef RALINK_ATE - {"ATE", Set_ATE_Proc }, // set ATE Mode to: STOP, TXCONT, TXCARR, TXFRAME, RXFRAME - {"ATEDA", Set_ATE_DA_Proc }, // set ATE TxFrames ADDR1, DA - {"ATESA", Set_ATE_SA_Proc }, // set ATE TxFrames ADDR2, SA - {"ATEBSSID", Set_ATE_BSSID_Proc }, // set ATE TxFrames ADDR3, BSSID - {"ATECHANNEL",Set_ATE_CHANNEL_Proc }, // set ATE Channel - {"ATETXPOW", Set_ATE_TX_POWER_Proc }, // set ATE TxPower - {"ATETXLEN", Set_ATE_TX_LENGTH_Proc}, // set ATE TxLength - {"ATETXCNT", Set_ATE_TX_COUNT_Proc }, // set ATE TxCount - {"ATETXRATE", Set_ATE_TX_RATE_Proc }, // set ATE TxRate -#endif //#ifdef RALINK_ATE - - {NULL,} -}; - -char * rtstrchr(const char * s, int c) -{ - for(; *s != (char) c; ++s) - if (*s == '\0') - return NULL; - return (char *) s; - } -/* -This is required for LinEX2004/kernel2.6.7 to provide iwlist scanning function -*/ -int rt_ioctl_giwrange(struct net_device *dev, - struct iw_request_info *info, - struct iw_point *data, char *extra) -{ - PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) dev->priv; - struct iw_range *range = (struct iw_range *) extra; - u16 val; - int i,chan; - - DBGPRINT(RT_DEBUG_TRACE,"0. rtusb_ioctl_giwrange\n"); - data->length = sizeof(struct iw_range); - memset(range, 0, sizeof(struct iw_range)); - - range->txpower_capa = IW_TXPOW_DBM; - - if (INFRA_ON(pAdapter)||ADHOC_ON(pAdapter)) - { - range->min_pmp = 1 * 1024; - range->max_pmp = 65535 * 1024; - range->min_pmt = 1 * 1024; - range->max_pmt = 1000 * 1024; - range->pmp_flags = IW_POWER_PERIOD; - range->pmt_flags = IW_POWER_TIMEOUT; - range->pm_capa = IW_POWER_PERIOD | IW_POWER_TIMEOUT | - IW_POWER_UNICAST_R | IW_POWER_ALL_R; - } - - range->we_version_compiled = WIRELESS_EXT; - range->we_version_source = 14; - - range->retry_capa = IW_RETRY_LIMIT; - range->retry_flags = IW_RETRY_LIMIT; - range->min_retry = 0; - range->max_retry = 255; - - val = 0; - for (i = 0; i < 14; i++) { - chan = pAdapter->PortCfg.ChannelList[val]; - if (chan != 0) - { - range->freq[val].i = chan; - MAP_CHANNEL_ID_TO_KHZ(range->freq[val].i, range->freq[val].m); - range->freq[val].m*=100; - range->freq[val].e = 1; - val++; - } - } - - range->num_frequency = val; - range->num_channels = val; - - val = 0; - for (i = 0; i < pAdapter->PortCfg.SupportedRatesLen; i++) { - range->bitrate[i]=1000000*(pAdapter->PortCfg.SupportedRates[i] & 0x7f)/2; - val++; - if (val == IW_MAX_BITRATES) - break; - } - range->num_bitrates = val; - - range->max_qual.qual = 100; /* % sig quality*/ - - range->max_qual.level = 1; /* dB */ - range->max_qual.noise = 152; /* dB */ - range->max_qual.updated = 172; /* Updated all three */ - - /* What would be suitable values for "average/typical" qual? */ - range->avg_qual.qual = pAdapter->Mlme.ChannelQuality; - range->avg_qual.level = pAdapter->PortCfg.LastRssi; - range->avg_qual.noise = 0; - range->avg_qual.updated = 7; /* Updated all three */ - - range->sensitivity = -30; - - range->max_encoding_tokens = NR_WEP_KEYS; - range->num_encoding_sizes = 2; - range->encoding_size[0] = 5; - range->encoding_size[1] = 13; - -#if 0 - over2 = 0; - len = prism2_get_datarates(dev, rates); - range->num_bitrates = 0; - for (i = 0; i < len; i++) { - if (range->num_bitrates < IW_MAX_BITRATES) { - range->bitrate[range->num_bitrates] = - rates[i] * 500000; - range->num_bitrates++; - } - if (rates[i] == 0x0b || rates[i] == 0x16) - over2 = 1; - } - /* estimated maximum TCP throughput values (bps) */ - range->throughput = over2 ? 5500000 : 1500000; -#endif - range->min_rts = 0; - range->max_rts = 2347; - range->min_frag = 256; - range->max_frag = 2346; - - return 0; -} - -static int -rt_ioctl_setparam(struct net_device *dev, struct iw_request_info *info, - void *w, char *extra) -{ - PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) dev->priv; - char *this_char; - char *value; - int Status; - - while ((this_char = strsep(&extra, ",")) != NULL) - { - if (!*this_char) - continue; - - if ((value = rtstrchr(this_char, '=')) != NULL) - *value++ = 0; - - if (!value || !*value) - continue; - - for (PRTMP_PRIVATE_SET_PROC = RTMP_PRIVATE_SUPPORT_PROC; PRTMP_PRIVATE_SET_PROC->name; PRTMP_PRIVATE_SET_PROC++) - { - if (strcmp(this_char, PRTMP_PRIVATE_SET_PROC->name) == 0) - { - if(!PRTMP_PRIVATE_SET_PROC->set_proc(pAdapter, value)) - { //FALSE:Set private failed then return Invalid argument - Status = -EINVAL; - } - break; //Exit for loop. - } - } - - if(PRTMP_PRIVATE_SET_PROC->name == NULL) - { //Not found argument - Status = -EINVAL; - DBGPRINT(RT_DEBUG_TRACE, "ioctl::(iwpriv) Not Support Set Command [%s=%s]\n", this_char, value); - break; - } - } - return 0; -} - -static const iw_handler rt_priv_handlers[] = { - (iw_handler) rt_ioctl_setparam, /* SIOCWFIRSTPRIV+0 */ -}; - -#ifdef SIOCGIWSCAN -int rt_ioctl_siwscan(struct net_device *dev, - struct iw_request_info *info, - struct iw_point *data, char *extra) -{ - ULONG Now; - PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) dev->priv; - int Status = NDIS_STATUS_SUCCESS; - BOOLEAN StateMachineTouched = FALSE; - if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) - return 0; - if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_MLME_INITIALIZED)) - return 0; - do{ - Now = jiffies; - - if ((pAdapter->MediaState == NdisMediaStateConnected) && - ((pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPA) || - (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPAPSK)) && - (pAdapter->PortCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED) - ) - { - DBGPRINT(RT_DEBUG_TRACE, "!!! Link UP, Port Not Secured! ignore this set::OID_802_11_BSSID_LIST_SCAN\n"); - Status = NDIS_STATUS_SUCCESS; - break; - } - - if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) - { - MlmeRestartStateMachine(pAdapter); - DBGPRINT(RT_DEBUG_TRACE, "!!! MLME busy, reset MLME state machine !!!\n"); - } - - // tell CNTL state machine to call NdisMSetInformationComplete() after completing - // this request, because this request is initiated by NDIS. - pAdapter->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; - // Reset Missed scan number - pAdapter->PortCfg.IgnoredScanNumber = 0; - pAdapter->PortCfg.LastScanTime = Now; - - MlmeEnqueue(&pAdapter->Mlme.Queue, - MLME_CNTL_STATE_MACHINE, - OID_802_11_BSSID_LIST_SCAN, - 0, - NULL); - - Status = NDIS_STATUS_SUCCESS; - StateMachineTouched = TRUE; - }while(0); - return 0; -} -int -rt_ioctl_giwscan(struct net_device *dev, - struct iw_request_info *info, - struct iw_point *data, char *extra) -{ - - PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) dev->priv; - int i=2, j; - char *current_ev = extra; - char *end_buf = extra + IW_SCAN_MAX_DATA; - char *current_val; - struct iw_event iwe; - - for (i = 0; i < pAdapter->PortCfg.BssTab.BssNr; i++) - { - if (current_ev >= end_buf) - break; - - //================================ - memset(&iwe, 0, sizeof(iwe)); - iwe.cmd = SIOCGIWAP; - iwe.u.ap_addr.sa_family = ARPHRD_ETHER; - memcpy(iwe.u.ap_addr.sa_data, &pAdapter->PortCfg.BssTab.BssEntry[i].Bssid, ETH_ALEN); - current_ev = iwe_stream_add_event(current_ev,end_buf, &iwe, IW_EV_ADDR_LEN); - //================================ - memset(&iwe, 0, sizeof(iwe)); - iwe.cmd = SIOCGIWMODE; - if (pAdapter->PortCfg.BssTab.BssEntry[i].BssType == Ndis802_11IBSS) - { - iwe.u.mode = IW_MODE_ADHOC; - } - else if (pAdapter->PortCfg.BssTab.BssEntry[i].BssType == Ndis802_11Infrastructure) - { - iwe.u.mode = IW_MODE_INFRA; - } - else - { - iwe.u.mode = IW_MODE_AUTO; - } - - iwe.len = IW_EV_UINT_LEN; - current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_UINT_LEN); - //================================ - memset(&iwe, 0, sizeof(iwe)); - iwe.cmd = SIOCGIWESSID; - iwe.u.data.length = pAdapter->PortCfg.BssTab.BssEntry[i].SsidLen; - iwe.u.data.flags = 1; - current_ev = iwe_stream_add_point(current_ev,end_buf, &iwe, pAdapter->PortCfg.BssTab.BssEntry[i].Ssid); - //================================ - memset(&iwe, 0, sizeof(iwe)); - iwe.cmd = SIOCGIWENCODE; - if (CAP_IS_PRIVACY_ON (pAdapter->PortCfg.BssTab.BssEntry[i].CapabilityInfo )) - iwe.u.data.flags =IW_ENCODE_ENABLED | IW_ENCODE_NOKEY; - else - iwe.u.data.flags = IW_ENCODE_DISABLED; - current_ev = iwe_stream_add_point(current_ev, end_buf,&iwe, pAdapter->PortCfg.BssTab.BssEntry[i].Ssid); - - //================================ - memset(&iwe, 0, sizeof(iwe)); - iwe.cmd = SIOCGIWRATE; - current_val = current_ev + IW_EV_LCP_LEN; - //for (j = 0; j < pAdapter->PortCfg.BssTab.BssEntry[i].RatesLen;j++) - for (j = 0; j < 1;j++) - { - iwe.u.bitrate.value = RateIdToMbps[pAdapter->PortCfg.BssTab.BssEntry[i].Rates[i]/2] * 1000000; - iwe.u.bitrate.disabled = 0; - current_val = iwe_stream_add_value(current_ev, - current_val, end_buf, &iwe, - IW_EV_PARAM_LEN); - } - //================================ - memset(&iwe, 0, sizeof(iwe)); - iwe.cmd = SIOCGIWFREQ; - if (INFRA_ON(pAdapter) || ADHOC_ON(pAdapter)) - iwe.u.freq.m = pAdapter->PortCfg.BssTab.BssEntry[i].Channel; - else - iwe.u.freq.m = pAdapter->PortCfg.BssTab.BssEntry[i].Channel; - iwe.u.freq.e = 0; - iwe.u.freq.i = 0; - current_ev = iwe_stream_add_event(current_ev,end_buf, &iwe, IW_EV_FREQ_LEN); - //================================ - memset(&iwe, 0, sizeof(iwe)); - iwe.cmd = IWEVQUAL; - if (memcmp(&pAdapter->PortCfg.BssTab.BssEntry[i].Bssid, &pAdapter->PortCfg.Bssid, ETH_ALEN) == 0) - iwe.u.qual.qual = pAdapter->Mlme.ChannelQuality; - else - iwe.u.qual.qual = 0; - iwe.u.qual.level = pAdapter->PortCfg.BssTab.BssEntry[i].Rssi - RSSI_TO_DBM_OFFSET; // signal level (dBm) - iwe.u.qual.noise = (pAdapter->PortCfg.LastR17Value > BBP_R17_DYNAMIC_UP_BOUND) ? BBP_R17_DYNAMIC_UP_BOUND : ((ULONG) pAdapter->PortCfg.LastR17Value); // // noise level (dBm) - - current_ev = iwe_stream_add_event(current_ev,end_buf, &iwe, IW_EV_QUAL_LEN); - - - //================================ - memset(&iwe, 0, sizeof(iwe)); - } - data->length = current_ev - extra; - DBGPRINT(RT_DEBUG_TRACE,"rtusb_ioctl_giwscan. %d BSS returned\n",pAdapter->PortCfg.BssTab.BssNr); - return 0; -} -#endif -static const iw_handler rt_handler[] = -{ - (iw_handler) NULL, /* SIOCSIWCOMMIT */ - (iw_handler) NULL, /* SIOCGIWNAME 1 */ - (iw_handler) NULL, /* SIOCSIWNWID */ - (iw_handler) NULL, /* SIOCGIWNWID */ - (iw_handler) NULL, /* SIOCSIWFREQ */ - (iw_handler) NULL, /* SIOCGIWFREQ 5*/ - (iw_handler) NULL, /* SIOCSIWMODE */ - (iw_handler) NULL, /* SIOCGIWMODE */ - (iw_handler) NULL, /* SIOCSIWSENS */ - (iw_handler) NULL, /* SIOCGIWSENS */ - (iw_handler) NULL /* not used */, /* SIOCSIWRANGE */ - (iw_handler) rt_ioctl_giwrange, /* SIOCGIWRANGE 11 */ - (iw_handler) NULL /* not used */, /* SIOCSIWPRIV */ - (iw_handler) NULL /* kernel code */, /* SIOCGIWPRIV */ - (iw_handler) NULL /* not used */, /* SIOCSIWSTATS */ - (iw_handler) NULL /* kernel code */, /* SIOCGIWSTATS f*/ - (iw_handler) NULL, /* SIOCSIWSPY */ - (iw_handler) NULL, /* SIOCGIWSPY */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* SIOCSIWAP */ - (iw_handler) NULL, /* SIOCGIWAP 0x15*/ - (iw_handler) NULL, /* -- hole -- 0x16 */ - (iw_handler) NULL, /* SIOCGIWAPLIST */ -#ifdef SIOCGIWSCAN - (iw_handler) rt_ioctl_siwscan, /* SIOCSIWSCAN 0x18*/ - (iw_handler) rt_ioctl_giwscan, /* SIOCGIWSCAN */ -#else - (iw_handler) NULL, /* SIOCSIWSCAN */ - (iw_handler) NULL, /* SIOCGIWSCAN */ -#endif /* SIOCGIWSCAN */ - (iw_handler) NULL, /* SIOCSIWESSID */ - (iw_handler) NULL, /* SIOCGIWESSID */ - (iw_handler) NULL, /* SIOCSIWNICKN */ - (iw_handler) NULL, /* SIOCGIWNICKN 1d*/ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* SIOCSIWRATE 20*/ - (iw_handler) NULL, /* SIOCGIWRATE */ - (iw_handler) NULL, /* SIOCSIWRTS */ - (iw_handler) NULL, /* SIOCGIWRTS */ - (iw_handler) NULL, /* SIOCSIWFRAG */ - (iw_handler) NULL, /* SIOCGIWFRAG 25*/ - (iw_handler) NULL, /* SIOCSIWTXPOW */ - (iw_handler) NULL, /* SIOCGIWTXPOW */ - (iw_handler) NULL, /* SIOCSIWRETRY */ - (iw_handler) NULL, /* SIOCGIWRETRY 29*/ - (iw_handler) NULL, /* SIOCSIWENCODE 2a*/ - (iw_handler) NULL, /* SIOCGIWENCODE 2b*/ - (iw_handler) NULL, /* SIOCSIWPOWER 2c*/ - (iw_handler) NULL, /* SIOCGIWPOWER 2d*/ -}; - -const struct iw_handler_def rt2500_iw_handler_def = -{ -#define N(a) (sizeof (a) / sizeof (a[0])) - .standard = (iw_handler *) rt_handler, - .num_standard = sizeof(rt_handler) / sizeof(iw_handler), - .private = (iw_handler *) rt_priv_handlers, - .num_private = N(rt_priv_handlers), - .private_args = (struct iw_priv_args *) privtab, - .num_private_args = N(privtab), -#if WIRELESS_EXT > 15 -// .spy_offset = offsetof(struct hostap_interface, spy_data), -#endif /* WIRELESS_EXT > 15 */ -}; -INT RTMPSetInformation( - IN PRTMP_ADAPTER pAdapter, - IN OUT struct ifreq *rq, - IN INT cmd) -{ - struct iwreq *wrq = (struct iwreq *) rq; - NDIS_802_11_SSID Ssid, *pSsid=NULL; - NDIS_802_11_MAC_ADDRESS Bssid; - RT_802_11_PHY_MODE PhyMode; - RT_802_11_STA_CONFIG StaConfig; - NDIS_802_11_RATES aryRates; - RT_802_11_PREAMBLE Preamble; - NDIS_802_11_WEP_STATUS WepStatus; - NDIS_802_11_AUTHENTICATION_MODE AuthMode; - NDIS_802_11_NETWORK_INFRASTRUCTURE BssType; - NDIS_802_11_RTS_THRESHOLD RtsThresh; - NDIS_802_11_FRAGMENTATION_THRESHOLD FragThresh; - NDIS_802_11_POWER_MODE PowerMode; - NDIS_802_11_TX_POWER_LEVEL TxPowerLevel; - PNDIS_802_11_KEY pKey = NULL; - PNDIS_802_11_REMOVE_KEY pRemoveKey = NULL; - NDIS_802_11_CONFIGURATION Config, *pConfig = NULL; - ULONG Now; - ULONG KeyIdx; - INT Status = NDIS_STATUS_SUCCESS; - UCHAR CountryRegion; - BOOLEAN RadioState; - BOOLEAN StateMachineTouched = FALSE; - USHORT TxTotalCnt; - - switch(cmd & 0x7FFF) { - case RT_OID_802_11_COUNTRY_REGION: - if (wrq->u.data.length != sizeof(CountryRegion)) - Status = -EINVAL; - else - { - if(copy_from_user(&CountryRegion, wrq->u.data.pointer, wrq->u.data.length)) - Status = -EINVAL; - pAdapter->PortCfg.CountryRegion = CountryRegion; - DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_COUNTRY_REGION (=%d) \n", pAdapter->PortCfg.CountryRegion); - } - break; - case OID_802_11_BSSID_LIST_SCAN: - Now = jiffies; - TxTotalCnt = pAdapter->DrsCounters.OneSecTxOkCount + - pAdapter->DrsCounters.OneSecTxRetryOkCount + - pAdapter->DrsCounters.OneSecTxFailCount; - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_BSSID_LIST_SCAN, TxCnt = %d \n", TxTotalCnt); - // For XP WZC, we will allow scan every 10 times, roughly 10 minutes. - // if ((Oid == OID_802_11_BSSID_LIST_SCAN) && - // (pAdapter->MediaState == NdisMediaStateConnected) && - // (pAdapter->PortCfg.IgnoredScanNumber < 10)) - if (TxTotalCnt > 100) - { - DBGPRINT(RT_DEBUG_TRACE, "!!! Link UP, ignore this set::OID_802_11_BSSID_LIST_SCAN\n"); - Status = NDIS_STATUS_SUCCESS; - pAdapter->PortCfg.IgnoredScanNumber++; - break; - } - - if ((pAdapter->MediaState == NdisMediaStateConnected) && - ((pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPA) || - (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPAPSK)) && - (pAdapter->PortCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED) - ) - { - DBGPRINT(RT_DEBUG_TRACE, "!!! Link UP, Port Not Secured! ignore this set::OID_802_11_BSSID_LIST_SCAN\n"); - Status = NDIS_STATUS_SUCCESS; - break; - } - - if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) - { - MlmeRestartStateMachine(pAdapter); - DBGPRINT(RT_DEBUG_TRACE, "!!! MLME busy, reset MLME state machine !!!\n"); - } - - // tell CNTL state machine to call NdisMSetInformationComplete() after completing - // this request, because this request is initiated by NDIS. - pAdapter->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; - // Reset Missed scan number - pAdapter->PortCfg.IgnoredScanNumber = 0; - pAdapter->PortCfg.LastScanTime = Now; - - MlmeEnqueue(&pAdapter->Mlme.Queue, - MLME_CNTL_STATE_MACHINE, - OID_802_11_BSSID_LIST_SCAN, - 0, - NULL); - - Status = NDIS_STATUS_SUCCESS; - StateMachineTouched = TRUE; - break; - case OID_802_11_SSID: - if (wrq->u.data.length != sizeof(NDIS_802_11_SSID)) - Status = -EINVAL; - else - { - if(copy_from_user(&Ssid, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - pSsid = &Ssid; - - if (pSsid->SsidLength > MAX_LEN_OF_SSID) - Status = -EINVAL; - else - { - if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) - { - MlmeRestartStateMachine(pAdapter); - DBGPRINT(RT_DEBUG_TRACE, "!!! MLME busy, reset MLME state machine !!!\n"); - } - // tell CNTL state machine to call NdisMSetInformationComplete() after completing - // this request, because this request is initiated by NDIS. - pAdapter->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; - - MlmeEnqueue(&pAdapter->Mlme.Queue, - MLME_CNTL_STATE_MACHINE, - OID_802_11_SSID, - sizeof(NDIS_802_11_SSID), - (VOID *)pSsid - ); - Status = NDIS_STATUS_SUCCESS; - StateMachineTouched = TRUE; - - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_SSID (Len=%d,Ssid=%s)\n", pSsid->SsidLength, pSsid->Ssid); - } - } - break; - case OID_802_11_BSSID: - if (wrq->u.data.length != sizeof(NDIS_802_11_MAC_ADDRESS)) - Status = -EINVAL; - else - { - if(copy_from_user(&Bssid, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - - if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) - { - MlmeRestartStateMachine(pAdapter); - DBGPRINT(RT_DEBUG_TRACE, "!!! MLME busy, reset MLME state machine !!!\n"); - } - - // tell CNTL state machine to call NdisMSetInformationComplete() after completing - // this request, because this request is initiated by NDIS. - pAdapter->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; - - MlmeEnqueue(&pAdapter->Mlme.Queue, - MLME_CNTL_STATE_MACHINE, - OID_802_11_BSSID, - sizeof(NDIS_802_11_MAC_ADDRESS), - (VOID *)&Bssid); - Status = NDIS_STATUS_SUCCESS; - StateMachineTouched = TRUE; - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_BSSID %02x:%02x:%02x:%02x:%02x:%02x\n", - Bssid[0], Bssid[1], Bssid[2], Bssid[3], Bssid[4], Bssid[5]); - } - break; - case RT_OID_802_11_RADIO: - if (wrq->u.data.length != sizeof(BOOLEAN)) - Status = -EINVAL; - else - { - if(copy_from_user(&RadioState, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_RADIO (=%d)\n", RadioState); - if (pAdapter->PortCfg.bSwRadio != RadioState) - { - pAdapter->PortCfg.bSwRadio = RadioState; - if (pAdapter->PortCfg.bRadio != (pAdapter->PortCfg.bHwRadio && pAdapter->PortCfg.bSwRadio)) - { - pAdapter->PortCfg.bRadio = (pAdapter->PortCfg.bHwRadio && pAdapter->PortCfg.bSwRadio); - if (pAdapter->PortCfg.bRadio == TRUE) - MlmeRadioOn(pAdapter); - else - MlmeRadioOff(pAdapter); - } - } - } - break; - case RT_OID_802_11_PHY_MODE: - if (wrq->u.data.length != sizeof(RT_802_11_PHY_MODE)) - Status = -EINVAL; - else - { - if(copy_from_user(&PhyMode, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - RTMPSetPhyMode(pAdapter, PhyMode); - DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_PHY_MODE (=%d)\n", PhyMode); - } - break; - case RT_OID_802_11_STA_CONFIG: - if (wrq->u.data.length != sizeof(RT_802_11_STA_CONFIG)) - Status = -EINVAL; - else - { - if(copy_from_user(&StaConfig, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - pAdapter->PortCfg.EnableTxBurst = StaConfig.EnableTxBurst; - pAdapter->PortCfg.EnableTurboRate = StaConfig.EnableTurboRate; - pAdapter->PortCfg.UseBGProtection = StaConfig.UseBGProtection; -// pAdapter->PortCfg.UseShortSlotTime = StaConfig.UseShortSlotTime; - pAdapter->PortCfg.UseShortSlotTime = 1; // 2003-10-30 always SHORT SLOT capable - if (pAdapter->PortCfg.AdhocMode != StaConfig.AdhocMode) - { - // allow dynamic change of "USE OFDM rate or not" in ADHOC mode - // if setting changed, need to reset current TX rate as well as BEACON frame format - pAdapter->PortCfg.AdhocMode = StaConfig.AdhocMode; - if (pAdapter->PortCfg.BssType == BSS_INDEP) - { - MlmeUpdateTxRates(pAdapter, FALSE); - MakeIbssBeacon(pAdapter); - } - } - DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_SET_STA_CONFIG (Burst=%d,72/100=%d,Protection=%d,ShortSlot=%d,OFDM in 11g Adhoc=%d\n", - pAdapter->PortCfg.EnableTxBurst, - pAdapter->PortCfg.EnableTurboRate, - pAdapter->PortCfg.UseBGProtection, - pAdapter->PortCfg.UseShortSlotTime, - pAdapter->PortCfg.AdhocMode); - } - break; - case OID_802_11_DESIRED_RATES: - if (wrq->u.data.length != sizeof(NDIS_802_11_RATES)) - Status = -EINVAL; - else - { - if(copy_from_user(&aryRates, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - memset(pAdapter->PortCfg.DesiredRates, 0, MAX_LEN_OF_SUPPORTED_RATES); - memcpy(pAdapter->PortCfg.DesiredRates, &aryRates, sizeof(NDIS_802_11_RATES)); - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_DESIRED_RATES (%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x)\n", - pAdapter->PortCfg.DesiredRates[0],pAdapter->PortCfg.DesiredRates[1], - pAdapter->PortCfg.DesiredRates[2],pAdapter->PortCfg.DesiredRates[3], - pAdapter->PortCfg.DesiredRates[4],pAdapter->PortCfg.DesiredRates[5], - pAdapter->PortCfg.DesiredRates[6],pAdapter->PortCfg.DesiredRates[7] ); - // Changing DesiredRate may affect the MAX TX rate we used to TX frames out - MlmeUpdateTxRates(pAdapter, FALSE); - } - break; - case RT_OID_802_11_PREAMBLE: - if (wrq->u.data.length != sizeof(RT_802_11_PREAMBLE)) - Status = -EINVAL; - else - { - if(copy_from_user(&Preamble, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - if (Preamble == Rt802_11PreambleShort) - { - pAdapter->PortCfg.WindowsTxPreamble = Preamble; - MlmeSetTxPreamble(pAdapter, Rt802_11PreambleShort); - } - else if ((Preamble == Rt802_11PreambleLong) || (Preamble == Rt802_11PreambleAuto)) - { - // if user wants AUTO, initialize to LONG here, then change according to AP's - // capability upon association. - pAdapter->PortCfg.WindowsTxPreamble = Preamble; - MlmeSetTxPreamble(pAdapter, Rt802_11PreambleLong); - } - else - { - Status = EINVAL; - break; - } - DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_SET_PREAMBLE (=%d)\n", Preamble); - } - break; - case OID_802_11_WEP_STATUS: - if (wrq->u.data.length != sizeof(NDIS_802_11_WEP_STATUS)) - Status = -EINVAL; - else - { - if(copy_from_user(&WepStatus, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - // Since TKIP, AES, WEP are all supported. It should not have any invalid setting - if (WepStatus <= Ndis802_11Encryption3KeyAbsent) - { - if (pAdapter->PortCfg.WepStatus != WepStatus) - { - // Config has changed - pAdapter->bConfigChanged = TRUE; - } - pAdapter->PortCfg.WepStatus = WepStatus; - } - else - { - Status = -EINVAL; - break; - } - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_WEP_STATUS (=%d)\n",WepStatus); - } - break; - case OID_802_11_AUTHENTICATION_MODE: - if (wrq->u.data.length != sizeof(NDIS_802_11_AUTHENTICATION_MODE)) - Status = -EINVAL; - else - { - if(copy_from_user(&AuthMode, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - if (AuthMode > Ndis802_11AuthModeMax) - { - Status = -EINVAL; - break; - } - else - { - if (pAdapter->PortCfg.AuthMode != AuthMode) - { - // Config has changed - pAdapter->bConfigChanged = TRUE; - } - pAdapter->PortCfg.AuthMode = AuthMode; - } - pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED; - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_AUTHENTICATION_MODE (=%d) \n",pAdapter->PortCfg.AuthMode); - } - break; - case OID_802_11_INFRASTRUCTURE_MODE: - if (wrq->u.data.length != sizeof(NDIS_802_11_NETWORK_INFRASTRUCTURE)) - Status = -EINVAL; - else - { - if(copy_from_user(&BssType, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - if (BssType == Ndis802_11IBSS) - { - if (pAdapter->PortCfg.BssType != BSS_INDEP) - { - // Config has changed - pAdapter->bConfigChanged = TRUE; - } - pAdapter->PortCfg.BssType = BSS_INDEP; - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_INFRASTRUCTURE_MODE (AD-HOC)\n"); - } - else if (BssType == Ndis802_11Infrastructure) - { - if (pAdapter->PortCfg.BssType != BSS_INFRA) - { - // Config has changed - pAdapter->bConfigChanged = TRUE; - } - pAdapter->PortCfg.BssType = BSS_INFRA; - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_INFRASTRUCTURE_MODE (INFRA)\n"); - } - else - { - Status = -EINVAL; - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_INFRASTRUCTURE_MODE (unknown)\n"); - } - } - // Reset Ralink supplicant to not use, it will be set to start when UI set PMK key - pAdapter->PortCfg.WpaState = SS_NOTUSE; - break; - case RT_OID_802_11_RESET_COUNTERS: - memset(&pAdapter->WlanCounters, 0, sizeof(COUNTER_802_11)); - memset(&pAdapter->Counters, 0, sizeof(COUNTER_802_3)); - memset(&pAdapter->RalinkCounters, 0, sizeof(COUNTER_RALINK)); - memset(&pAdapter->Mlme.PrevWlanCounters, 0, sizeof(COUNTER_802_11)); - DBGPRINT(RT_DEBUG_INFO, "Set::RT_OID_802_11_RESET_COUNTERS \n"); - break; - case OID_802_11_RTS_THRESHOLD: - if (wrq->u.data.length != sizeof(NDIS_802_11_RTS_THRESHOLD)) - Status = -EINVAL; - else - { - if(copy_from_user(&RtsThresh, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - if (RtsThresh > MAX_RTS_THRESHOLD) - Status = -EINVAL; - else - pAdapter->PortCfg.RtsThreshold = (USHORT)RtsThresh; - } - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_RTS_THRESHOLD (=%d)\n",RtsThresh); - break; - case OID_802_11_FRAGMENTATION_THRESHOLD: - if (wrq->u.data.length != sizeof(NDIS_802_11_FRAGMENTATION_THRESHOLD)) - Status = -EINVAL; - else - { - if(copy_from_user(&FragThresh, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - pAdapter->PortCfg.bFragmentZeroDisable = FALSE; - if (FragThresh > MAX_FRAG_THRESHOLD || FragThresh < MIN_FRAG_THRESHOLD) - { - if (FragThresh == 0) - { - pAdapter->PortCfg.FragmentThreshold = MAX_FRAG_THRESHOLD; - pAdapter->PortCfg.bFragmentZeroDisable = TRUE; - } - else - Status = -EINVAL; - } - else - pAdapter->PortCfg.FragmentThreshold = (USHORT)FragThresh; - } - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_FRAGMENTATION_THRESHOLD (=%d) \n",FragThresh); - break; - case OID_802_11_POWER_MODE: - if (wrq->u.data.length != sizeof(NDIS_802_11_POWER_MODE)) - Status = -EINVAL; - else - { - if(copy_from_user(&PowerMode, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - // save user's policy here, but not change PortCfg.Psm immediately - if (PowerMode == Ndis802_11PowerModeCAM) - { - // clear PSM bit immediately - MlmeSetPsmBit(pAdapter, PWR_ACTIVE); - pAdapter->PortCfg.RecvDtim = TRUE; - if (pAdapter->PortCfg.WindowsACCAMEnable == FALSE) - pAdapter->PortCfg.WindowsPowerMode = PowerMode; - pAdapter->PortCfg.WindowsBatteryPowerMode = PowerMode; - } - else if (PowerMode == Ndis802_11PowerModeMAX_PSP) - { - // do NOT turn on PSM bit here, wait until MlmeCheckForPsmChange() - // to exclude certain situations. - // MlmeSetPsmBit(pAdapter, PWR_SAVE); - if (pAdapter->PortCfg.WindowsACCAMEnable == FALSE) - pAdapter->PortCfg.WindowsPowerMode = PowerMode; - pAdapter->PortCfg.WindowsBatteryPowerMode = PowerMode; - pAdapter->PortCfg.RecvDtim = TRUE; // FALSE; - pAdapter->PortCfg.DefaultListenCount = 5; - } - else if (PowerMode == Ndis802_11PowerModeFast_PSP) - { - // do NOT turn on PSM bit here, wait until MlmeCheckForPsmChange() - // to exclude certain situations. - // MlmeSetPsmBit(pAdapter, PWR_SAVE); - pAdapter->PortCfg.RecvDtim = TRUE; - if (pAdapter->PortCfg.WindowsACCAMEnable == FALSE) - pAdapter->PortCfg.WindowsPowerMode = PowerMode; - pAdapter->PortCfg.WindowsBatteryPowerMode = PowerMode; - pAdapter->PortCfg.DefaultListenCount = 3; - } - else - Status = -EINVAL; - } - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_POWER_MODE (=%d)\n",PowerMode); - break; - case OID_802_11_TX_POWER_LEVEL: - if (wrq->u.data.length != sizeof(NDIS_802_11_TX_POWER_LEVEL)) - Status = -EINVAL; - else - { - if(copy_from_user(&TxPowerLevel, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - if (TxPowerLevel > MAX_TX_POWER_LEVEL) - Status = -EINVAL; - else - pAdapter->PortCfg.TxPower = (UCHAR)TxPowerLevel; - } - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_TX_POWER_LEVEL (=%d) \n",TxPowerLevel); - break; - // For WPA PSK PMK key - case RT_OID_802_11_ADD_WPA: - pKey = kmalloc(wrq->u.data.length, GFP_KERNEL); - if(copy_from_user(pKey, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - if (pKey->Length != wrq->u.data.length) - { - Status = -EINVAL; - DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_ADD_WPA, Failed!!\n"); - } - else - { - if (pAdapter->PortCfg.AuthMode != Ndis802_11AuthModeWPAPSK) - { - Status = -EOPNOTSUPP; - DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_ADD_WPA, Failed!! [AuthMode != WPAPSK]\n"); - } - else // Only for WPA PSK mode - { - pAdapter->PortCfg.PskKey.KeyLen = (UCHAR) pKey->KeyLength; - memcpy(pAdapter->PortCfg.PskKey.Key, &pKey->KeyMaterial, pKey->KeyLength); - // Use RaConfig as PSK agent. - // Start STA supplicant state machine - pAdapter->PortCfg.WpaState = SS_START; - - DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_ADD_WPA (id=0x%x, Len=%d-byte)\n", pKey->KeyIndex, pKey->KeyLength); - } - } - kfree(pKey); - break; - case OID_802_11_REMOVE_KEY: - pRemoveKey = kmalloc(wrq->u.data.length, GFP_KERNEL); - if(copy_from_user(pRemoveKey, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - if (pRemoveKey->Length != wrq->u.data.length) - { - Status = -EINVAL; - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_REMOVE_KEY, Failed!!\n"); - } - else - { - if (pAdapter->PortCfg.AuthMode >= Ndis802_11AuthModeWPA) - { - RTMPWPARemoveKeyProc(pAdapter, pRemoveKey); - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_REMOVE_KEY, Remove WPA Key!!\n"); - } - else - { - KeyIdx = pRemoveKey->KeyIndex; - - if (KeyIdx & 0x80000000) - { - // Should never set default bit when remove key - Status = -EINVAL; - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_REMOVE_KEY, Failed!!(Should never set default bit when remove key)\n"); - } - else - { - KeyIdx = KeyIdx & 0x0fffffff; - if (KeyIdx > 3) - { - Status = -EINVAL; - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_REMOVE_KEY, Failed!!(KeyId[%d] out of range)\n", KeyIdx); - } - else - { - pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen = 0; - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_REMOVE_KEY (id=0x%x, Len=%d-byte)\n", pRemoveKey->KeyIndex, pRemoveKey->Length); - } - } - } - } - kfree(pRemoveKey); - break; - case OID_802_11_ADD_KEY: - pKey = kmalloc(wrq->u.data.length, GFP_KERNEL); - if(copy_from_user(pKey, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - if (pKey->Length != wrq->u.data.length) - { - Status = -EINVAL; - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_ADD_KEY, Failed!!\n"); - } - else - { - if (pAdapter->PortCfg.AuthMode >= Ndis802_11AuthModeWPA) - { - RTMPWPAAddKeyProc(pAdapter, pKey); - } - else // Old WEP stuff - { - KeyIdx = pKey->KeyIndex & 0x0fffffff; - - // it is a shared key - if (KeyIdx > 4) - Status = -EINVAL; - else - { - pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen = (UCHAR) pKey->KeyLength; - memcpy(pAdapter->PortCfg.SharedKey[KeyIdx].Key, &pKey->KeyMaterial, pKey->KeyLength); - if (pKey->KeyIndex & 0x80000000) - { - // Default key for tx (shared key) - pAdapter->PortCfg.DefaultKeyId = (UCHAR) KeyIdx; - } - } - } - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_ADD_KEY (id=0x%x, Len=%d-byte)\n", pKey->KeyIndex, pKey->KeyLength); - } - kfree(pKey); - break; - case OID_802_11_CONFIGURATION: - if (wrq->u.data.length != sizeof(NDIS_802_11_CONFIGURATION)) - Status = -EINVAL; - else - { - if(copy_from_user(&Config, wrq->u.data.pointer, wrq->u.data.length)){ - Status = -EINVAL; - break; - } - pConfig = &Config; - pAdapter->PortCfg.IbssConfig.BeaconPeriod = (USHORT) pConfig->BeaconPeriod; - pAdapter->PortCfg.IbssConfig.AtimWin = (USHORT) pConfig->ATIMWindow; - MAP_KHZ_TO_CHANNEL_ID(pConfig->DSConfig, pAdapter->PortCfg.IbssConfig.Channel); - DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_CONFIGURATION (BeacnPeriod=%d,AtimW=%d,Ch=%d)\n", - pConfig->BeaconPeriod, pConfig->ATIMWindow, pAdapter->PortCfg.IbssConfig.Channel); - // Config has changed - pAdapter->bConfigChanged = TRUE; - } - break; - default: - DBGPRINT(RT_DEBUG_TRACE, "Set::unknown IOCTL's subcmd = 0x%08x\n", cmd); - Status = -EOPNOTSUPP; - break; - } - - return Status; -} - -INT RTMPQueryInformation( - IN PRTMP_ADAPTER pAdapter, - IN OUT struct ifreq *rq, - IN INT cmd) -{ - struct iwreq *wrq = (struct iwreq *) rq; - NDIS_802_11_BSSID_LIST_EX *pBssidList = NULL; - PNDIS_WLAN_BSSID_EX pBss; - NDIS_802_11_SSID Ssid; - NDIS_802_11_CONFIGURATION Configuration; - RT_802_11_LINK_STATUS LinkStatus; - RT_802_11_STA_CONFIG StaConfig; - NDIS_802_11_STATISTICS Statistics; - NDIS_802_11_RTS_THRESHOLD RtsThresh; - NDIS_802_11_FRAGMENTATION_THRESHOLD FragThresh; - NDIS_802_11_POWER_MODE PowerMode; - NDIS_802_11_NETWORK_INFRASTRUCTURE BssType; - RT_802_11_PREAMBLE PreamType; - NDIS_802_11_AUTHENTICATION_MODE AuthMode; - NDIS_802_11_WEP_STATUS WepStatus; - RT_VERSION_INFO DriverVersionInfo; - ULONG BssBufSize; - ULONG BssLen; - ULONG ulInfo = 0; - ULONG FcsValue; - PUCHAR pBuf = NULL; - PUCHAR pPtr; - INT Status = NDIS_STATUS_SUCCESS; - UCHAR Padding; - UINT i; - BOOLEAN RadioState; - - switch(cmd) { - case RT_OID_DEVICE_NAME: - DBGPRINT(RT_DEBUG_TRACE, "Query::RT_OID_DEVICE_NAME\n"); - if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE)) - { - // TODO: Any client apps that use this need to be reworked so they are okay when the module is loaded but the interface is down. Until then .... - // Interface is down, so pretend we don't exist. - Status = -EFAULT; - } - else - { - wrq->u.data.length = sizeof(NIC_DEVICE_NAME); - if(copy_to_user(wrq->u.data.pointer, NIC_DEVICE_NAME, wrq->u.data.length)) - Status = -EFAULT; - } - break; - case RT_OID_VERSION_INFO: - DBGPRINT(RT_DEBUG_INFO, "Query::RT_OID_VERSION_INFO \n"); - DriverVersionInfo.DriverVersionW = DRV_VERSION_MAJOR; - DriverVersionInfo.DriverVersionX = DRV_VERSION_MINOR; - DriverVersionInfo.DriverVersionY = DRV_VERSION_SUB; - DriverVersionInfo.DriverVersionZ = 0; - DriverVersionInfo.DriverBuildYear = DRV_BUILD_YEAR; - DriverVersionInfo.DriverBuildMonth = DRV_BUILD_MONTH; - DriverVersionInfo.DriverBuildDay = DRV_BUILD_DAY; - wrq->u.data.length = sizeof(RT_VERSION_INFO); - if(copy_to_user(wrq->u.data.pointer, &DriverVersionInfo, wrq->u.data.length)) - Status = -EFAULT; - break; - case OID_802_11_BSSID_LIST: - DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_BSSID_LIST (%d BSS returned)\n",pAdapter->PortCfg.BssTab.BssNr); - // Claculate total buffer size required - BssBufSize = sizeof(ULONG); - - for (i = 0; i < pAdapter->PortCfg.BssTab.BssNr; i++) - { - // Align pointer to 4 bytes boundary. - Padding = 4 - (pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen & 0x0003); - if (Padding == 4) - Padding = 0; - BssBufSize += (sizeof(NDIS_WLAN_BSSID_EX) - 4 + sizeof(NDIS_802_11_FIXED_IEs) + pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen + Padding); - } - - // For safety issue, we add 256 bytes just in case - BssBufSize += 256; - // Allocate the same size as passed from higher layer - pBuf = kmalloc(BssBufSize, GFP_KERNEL); - if(pBuf == NULL) - { - Status = -ENOMEM; - break; - } - // Init 802_11_BSSID_LIST_EX structure - memset(pBuf, 0, BssBufSize); - pBssidList = (PNDIS_802_11_BSSID_LIST_EX) pBuf; - pBssidList->NumberOfItems = pAdapter->PortCfg.BssTab.BssNr; - - // Calculate total buffer length - BssLen = 4; // Consist of NumberOfItems - // Point to start of NDIS_WLAN_BSSID_EX - // pPtr = pBuf + sizeof(ULONG); - pPtr = (PUCHAR) &pBssidList->Bssid[0]; - for (i = 0; i < pAdapter->PortCfg.BssTab.BssNr; i++) - { - pBss = (PNDIS_WLAN_BSSID_EX) pPtr; - memcpy(&pBss->MacAddress, &pAdapter->PortCfg.BssTab.BssEntry[i].Bssid, ETH_ALEN); - if ((pAdapter->PortCfg.BssTab.BssEntry[i].Hidden == 1) && (pAdapter->PortCfg.bShowHiddenSSID == FALSE)) - { - pBss->Ssid.SsidLength = 0; - } - else - { - pBss->Ssid.SsidLength = pAdapter->PortCfg.BssTab.BssEntry[i].SsidLen; - memcpy(pBss->Ssid.Ssid, pAdapter->PortCfg.BssTab.BssEntry[i].Ssid, pAdapter->PortCfg.BssTab.BssEntry[i].SsidLen); - } - pBss->Privacy = pAdapter->PortCfg.BssTab.BssEntry[i].Privacy; - pBss->Rssi = pAdapter->PortCfg.BssTab.BssEntry[i].Rssi - pAdapter->PortCfg.RssiToDbm; - pBss->NetworkTypeInUse = Ndis802_11DS; - pBss->Configuration.Length = sizeof(NDIS_802_11_CONFIGURATION); - pBss->Configuration.BeaconPeriod = pAdapter->PortCfg.BssTab.BssEntry[i].BeaconPeriod; - pBss->Configuration.ATIMWindow = pAdapter->PortCfg.BssTab.BssEntry[i].AtimWin; - - MAP_CHANNEL_ID_TO_KHZ(pAdapter->PortCfg.BssTab.BssEntry[i].Channel, pBss->Configuration.DSConfig); - - if (pAdapter->PortCfg.BssTab.BssEntry[i].BssType == BSS_INFRA) - pBss->InfrastructureMode = Ndis802_11Infrastructure; - else - pBss->InfrastructureMode = Ndis802_11IBSS; - - memcpy(pBss->SupportedRates, pAdapter->PortCfg.BssTab.BssEntry[i].Rates, pAdapter->PortCfg.BssTab.BssEntry[i].RatesLen); - - DBGPRINT(RT_DEBUG_TRACE, "BSS#%d - %s, Ch %d = %d Khz\n", - i,pBss->Ssid.Ssid,pAdapter->PortCfg.BssTab.BssEntry[i].Channel,pBss->Configuration.DSConfig); - - if (pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen == 0) - { - pBss->IELength = sizeof(NDIS_802_11_FIXED_IEs); - memcpy(pBss->IEs, &pAdapter->PortCfg.BssTab.BssEntry[i].FixIEs, sizeof(NDIS_802_11_FIXED_IEs)); - pPtr = pPtr + sizeof(NDIS_WLAN_BSSID_EX) - 4 + sizeof(NDIS_802_11_FIXED_IEs); - } - else - { - pBss->IELength = sizeof(NDIS_802_11_FIXED_IEs) + pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen; - pPtr = pPtr + sizeof(NDIS_WLAN_BSSID_EX) - 4 + sizeof(NDIS_802_11_FIXED_IEs); - memcpy(pBss->IEs, &pAdapter->PortCfg.BssTab.BssEntry[i].FixIEs, sizeof(NDIS_802_11_FIXED_IEs)); - memcpy(pPtr, pAdapter->PortCfg.BssTab.BssEntry[i].VarIEs, pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen); - pPtr += pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen; - } - // Align pointer to 4 bytes boundary. - Padding = 4 - (pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen & 0x0003); - if (Padding == 4) - Padding = 0; - pPtr += Padding; - pBss->Length = sizeof(NDIS_WLAN_BSSID_EX) - 4 + sizeof(NDIS_802_11_FIXED_IEs) + pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen + Padding; - BssLen += pBss->Length; - } - wrq->u.data.length = BssLen; - if(copy_to_user(wrq->u.data.pointer, pBssidList, wrq->u.data.length)) - Status = -EFAULT; - kfree(pBssidList); - break; - case OID_802_3_CURRENT_ADDRESS: - wrq->u.data.length = ETH_ALEN; - if(copy_to_user(wrq->u.data.pointer, &pAdapter->CurrentAddress, wrq->u.data.length)){ - Status = -EFAULT; - break; - } - DBGPRINT(RT_DEBUG_INFO, "Query::OID_802_3_CURRENT_ADDRESS \n"); - break; - case OID_GEN_MEDIA_CONNECT_STATUS: - DBGPRINT(RT_DEBUG_INFO, "Query::OID_GEN_MEDIA_CONNECT_STATUS \n"); - wrq->u.data.length = sizeof(NDIS_MEDIA_STATE); - if(copy_to_user(wrq->u.data.pointer, &pAdapter->MediaState, wrq->u.data.length)) - Status = -EFAULT; - break; - case OID_802_11_BSSID: - if (INFRA_ON(pAdapter) || ADHOC_ON(pAdapter)) - { - if(copy_to_user(wrq->u.data.pointer, &pAdapter->PortCfg.Bssid, sizeof(MACADDR))) - Status = -EFAULT; - - DBGPRINT(RT_DEBUG_INFO, "IOCTL::SIOCGIWAP(=%02x:%02x:%02x:%02x:%02x:%02x)\n", - pAdapter->PortCfg.Bssid.Octet[0],pAdapter->PortCfg.Bssid.Octet[1],pAdapter->PortCfg.Bssid.Octet[2], - pAdapter->PortCfg.Bssid.Octet[3],pAdapter->PortCfg.Bssid.Octet[4],pAdapter->PortCfg.Bssid.Octet[5]); - - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_BSSID(=EMPTY)\n"); - Status = -ENOTCONN; - } - break; - case OID_802_11_SSID: - Ssid.SsidLength = pAdapter->PortCfg.SsidLen; - memset(Ssid.Ssid, 0, MAX_LEN_OF_SSID); - memcpy(Ssid.Ssid, pAdapter->PortCfg.Ssid, Ssid.SsidLength); - wrq->u.data.length = sizeof(NDIS_802_11_SSID); - if(copy_to_user(wrq->u.data.pointer, &Ssid, wrq->u.data.length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_SSID (Len=%d, ssid=%s)\n", Ssid.SsidLength,Ssid.Ssid); - break; - case RT_OID_802_11_LINK_STATUS: - LinkStatus.CurrTxRate = RateIdTo500Kbps[pAdapter->PortCfg.TxRate]; // unit : 500 kbps - LinkStatus.ChannelQuality = pAdapter->Mlme.ChannelQuality; - LinkStatus.RxByteCount = pAdapter->RalinkCounters.ReceivedByteCount; - LinkStatus.TxByteCount = pAdapter->RalinkCounters.TransmittedByteCount; - wrq->u.data.length = sizeof(RT_802_11_LINK_STATUS); - if(copy_to_user(wrq->u.data.pointer, &LinkStatus, wrq->u.data.length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "Query::RT_OID_802_11_LINK_STATUS\n"); - break; - case OID_802_11_CONFIGURATION: - Configuration.Length = sizeof(NDIS_802_11_CONFIGURATION); - Configuration.BeaconPeriod = pAdapter->PortCfg.BeaconPeriod; - Configuration.ATIMWindow = pAdapter->PortCfg.AtimWin; - MAP_CHANNEL_ID_TO_KHZ(pAdapter->PortCfg.Channel, Configuration.DSConfig); - wrq->u.data.length = sizeof(NDIS_802_11_CONFIGURATION); - if(copy_to_user(wrq->u.data.pointer, &Configuration, wrq->u.data.length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_CONFIGURATION(BeaconPeriod=%d,AtimW=%d,Channel=%d) \n", - Configuration.BeaconPeriod, Configuration.ATIMWindow, pAdapter->PortCfg.Channel); - break; - case OID_802_11_RSSI: - ulInfo = pAdapter->PortCfg.LastRssi - pAdapter->PortCfg.RssiToDbm; - wrq->u.data.length = sizeof(ulInfo); - if(copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_RSSI(=%d)\n", ulInfo); - break; - case OID_802_11_STATISTICS: - DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_STATISTICS \n"); - // Update FCS counters - RTMP_IO_READ32(pAdapter, CNT0, &FcsValue); - pAdapter->WlanCounters.FCSErrorCount.QuadPart += ((FcsValue & 0x0000ffff) >> 7); - // Add FCS error count to private counters - pAdapter->RalinkCounters.RealFcsErrCount.QuadPart += FcsValue; - - // Sanity check for calculation of sucessful count - if (pAdapter->WlanCounters.TransmittedFragmentCount.QuadPart < pAdapter->WlanCounters.RetryCount.QuadPart) - pAdapter->WlanCounters.TransmittedFragmentCount.QuadPart = pAdapter->WlanCounters.RetryCount.QuadPart; - - Statistics.TransmittedFragmentCount.QuadPart = pAdapter->WlanCounters.TransmittedFragmentCount.QuadPart; - Statistics.MulticastTransmittedFrameCount.QuadPart = pAdapter->WlanCounters.MulticastTransmittedFrameCount.QuadPart; - Statistics.FailedCount.QuadPart = pAdapter->WlanCounters.FailedCount.QuadPart; - Statistics.RetryCount.QuadPart = pAdapter->WlanCounters.RetryCount.QuadPart; - Statistics.MultipleRetryCount.QuadPart = pAdapter->WlanCounters.MultipleRetryCount.QuadPart; - Statistics.RTSSuccessCount.QuadPart = pAdapter->WlanCounters.RTSSuccessCount.QuadPart; - Statistics.RTSFailureCount.QuadPart = pAdapter->WlanCounters.RTSFailureCount.QuadPart; - Statistics.ACKFailureCount.QuadPart = pAdapter->WlanCounters.ACKFailureCount.QuadPart; - Statistics.FrameDuplicateCount.QuadPart = pAdapter->WlanCounters.FrameDuplicateCount.QuadPart; - Statistics.ReceivedFragmentCount.QuadPart = pAdapter->WlanCounters.ReceivedFragmentCount.QuadPart; - Statistics.MulticastReceivedFrameCount.QuadPart = pAdapter->WlanCounters.MulticastReceivedFrameCount.QuadPart; -#ifdef RT2500_DBG - Statistics.FCSErrorCount = pAdapter->RalinkCounters.RealFcsErrCount; -#else - Statistics.FCSErrorCount.QuadPart = pAdapter->WlanCounters.FCSErrorCount.QuadPart; - Statistics.FrameDuplicateCount.vv.LowPart = pAdapter->WlanCounters.FrameDuplicateCount.vv.LowPart / 100; -#endif - wrq->u.data.length = sizeof(NDIS_802_11_STATISTICS); - if(copy_to_user(wrq->u.data.pointer, &Statistics, wrq->u.data.length)) - Status = -EFAULT; - break; - case OID_GEN_RCV_OK: - DBGPRINT(RT_DEBUG_INFO, "Query::OID_GEN_RCV_OK \n"); - ulInfo = pAdapter->Counters.GoodReceives; - wrq->u.data.length = sizeof(ulInfo); - if(copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length)) - Status = -EFAULT; - break; - case OID_GEN_RCV_NO_BUFFER: - DBGPRINT(RT_DEBUG_INFO, "Query::OID_GEN_RCV_NO_BUFFER \n"); - ulInfo = pAdapter->Counters.RxNoBuffer; - wrq->u.data.length = sizeof(ulInfo); - if(copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length)) - Status = -EFAULT; - break; - case RT_OID_802_11_PHY_MODE: - ulInfo = (ULONG)pAdapter->PortCfg.PhyMode; - wrq->u.data.length = sizeof(ulInfo); - if(copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "Query::RT_OID_802_11_PHY_MODE (=%d)\n", ulInfo); - break; - case RT_OID_802_11_STA_CONFIG: - DBGPRINT(RT_DEBUG_TRACE, "Query::RT_OID_802_11_QUERY_STA_CONFIG\n"); - StaConfig.EnableTxBurst = pAdapter->PortCfg.EnableTxBurst; - StaConfig.EnableTurboRate = pAdapter->PortCfg.EnableTurboRate; - StaConfig.UseBGProtection = pAdapter->PortCfg.UseBGProtection; - StaConfig.UseShortSlotTime = pAdapter->PortCfg.UseShortSlotTime; - StaConfig.AdhocMode = pAdapter->PortCfg.AdhocMode; - StaConfig.HwRadioStatus = (pAdapter->PortCfg.bHwRadio == TRUE) ? 1 : 0; - StaConfig.Rsv1 = 0; - StaConfig.SystemErrorBitmap = pAdapter->PortCfg.SystemErrorBitmap; - wrq->u.data.length = sizeof(RT_802_11_STA_CONFIG); - if(copy_to_user(wrq->u.data.pointer, &StaConfig, wrq->u.data.length)) - Status = -EFAULT; - break; - case OID_802_11_RTS_THRESHOLD: - RtsThresh = pAdapter->PortCfg.RtsThreshold; - wrq->u.data.length = sizeof(RtsThresh); - if(copy_to_user(wrq->u.data.pointer, &RtsThresh, wrq->u.data.length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_RTS_THRESHOLD(=%d)\n", RtsThresh); - break; - case OID_802_11_FRAGMENTATION_THRESHOLD: - FragThresh = pAdapter->PortCfg.FragmentThreshold; - if (pAdapter->PortCfg.bFragmentZeroDisable == TRUE) - FragThresh = 0; - wrq->u.data.length = sizeof(FragThresh); - if(copy_to_user(wrq->u.data.pointer, &FragThresh, wrq->u.data.length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_FRAGMENTATION_THRESHOLD(=%d)\n", FragThresh); - break; - case OID_802_11_POWER_MODE: - PowerMode = pAdapter->PortCfg.WindowsPowerMode; - wrq->u.data.length = sizeof(PowerMode); - if(copy_to_user(wrq->u.data.pointer, &PowerMode, wrq->u.data.length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_POWER_MODE(=%d)\n", PowerMode); - break; - case RT_OID_802_11_RADIO: - RadioState = (BOOLEAN) pAdapter->PortCfg.bSwRadio; - wrq->u.data.length = sizeof(RadioState); - if(copy_to_user(wrq->u.data.pointer, &RadioState, wrq->u.data.length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "Query::RT_OID_802_11_QUERY_RADIO (=%d)\n", RadioState); - break; - case OID_802_11_INFRASTRUCTURE_MODE: - if (ADHOC_ON(pAdapter)) - BssType = Ndis802_11IBSS; - else if (INFRA_ON(pAdapter)) - BssType = Ndis802_11Infrastructure; - else - BssType = Ndis802_11AutoUnknown; - - wrq->u.data.length = sizeof(BssType); - if(copy_to_user(wrq->u.data.pointer, &BssType, wrq->u.data.length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_INFRASTRUCTURE_MODE(=%d)\n", BssType); - break; - case RT_OID_802_11_PREAMBLE: - PreamType = pAdapter->PortCfg.WindowsTxPreamble; - wrq->u.data.length = sizeof(PreamType); - if(copy_to_user(wrq->u.data.pointer, &PreamType, wrq->u.data.length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "Query::RT_OID_802_11_QUERY_PREAMBLE(=%d)\n", PreamType); - break; - case OID_802_11_AUTHENTICATION_MODE: - AuthMode = pAdapter->PortCfg.AuthMode; - wrq->u.data.length = sizeof(AuthMode); - if(copy_to_user(wrq->u.data.pointer, &AuthMode, wrq->u.data.length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_AUTHENTICATION_MODE(=%d)\n", AuthMode); - break; - case OID_802_11_WEP_STATUS: - WepStatus = pAdapter->PortCfg.WepStatus; - wrq->u.data.length = sizeof(WepStatus); - if(copy_to_user(wrq->u.data.pointer, &WepStatus, wrq->u.data.length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_WEP_STATUS(=%d)\n", WepStatus); - break; - - case RT_OID_802_11_QUERY_EEPROM_VERSION: - wrq->u.data.length = sizeof(ULONG); - if(copy_to_user(wrq->u.data.pointer, &pAdapter->PortCfg.EepromVersion, wrq->u.data.length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "Query::RT_OID_802_11_QUERY_EEPROM_VERSION (=%d)\n", pAdapter->PortCfg.EepromVersion); - break; - - default: - DBGPRINT(RT_DEBUG_TRACE, "Query::unknown IOCTL's subcmd = 0x%08x\n", cmd); - Status = -EOPNOTSUPP; - break; - } - - return Status; -} - -INT RT2500_ioctl( - IN struct net_device *net_dev, - IN OUT struct ifreq *rq, - IN INT cmd) -{ - PRTMP_ADAPTER pAdapter= net_dev->priv; - struct iwreq *wrq = (struct iwreq *) rq; - struct iw_point *erq = NULL; - struct iw_freq *frq = NULL; - NDIS_802_11_SSID Ssid, *pSsid=NULL; - NDIS_802_11_NETWORK_INFRASTRUCTURE BssType = Ndis802_11Infrastructure; - NDIS_802_11_RTS_THRESHOLD RtsThresh; - NDIS_802_11_FRAGMENTATION_THRESHOLD FragThresh; - NDIS_802_11_MAC_ADDRESS Bssid; - INT Status = NDIS_STATUS_SUCCESS; - USHORT subcmd; - BOOLEAN StateMachineTouched = FALSE; - int i, chan = -1, index = 0, len = 0; - - - switch(cmd) { - case SIOCGIWNAME: - DBGPRINT(RT_DEBUG_TRACE, "IOCTL::SIOCGIWNAME\n"); - strcpy(wrq->u.name, "RT2500 Wireless"); //Less then 16 bytes. - break; - case SIOCSIWESSID: //Set ESSID - erq = &wrq->u.essid; - memset(&Ssid, 0x00, sizeof(NDIS_802_11_SSID)); - if (erq->flags) - { - if (erq->length > IW_ESSID_MAX_SIZE) - { - Status = -E2BIG; - break; - } - - if(RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE)) - { - if (copy_from_user(Ssid.Ssid, erq->pointer, (erq->length - 1))) - { - Status = -EFAULT; - break; - } - Ssid.SsidLength = erq->length - 1; //minus null character. - }else{ - // This SEEMS to be needed to actual work RobinC when iface - // is down - if (copy_from_user(pAdapter->PortCfg.Ssid, erq->pointer, (erq->length - 1))) - { - Status = -EFAULT; - break; - } - pAdapter->PortCfg.SsidLen = erq->length - 1; //minus null character. - - memcpy(pAdapter->Mlme.CntlAux.Ssid, pAdapter->PortCfg.Ssid, pAdapter->PortCfg.SsidLen); - pAdapter->Mlme.CntlAux.SsidLen = pAdapter->PortCfg.SsidLen; - } - } - else - Ssid.SsidLength = 0; // ANY ssid - - pSsid = &Ssid; - - // if network is down then me MUST not proceed into actualy - // running mlme stuff - if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE)) - break; - - if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) - { - MlmeRestartStateMachine(pAdapter); - DBGPRINT(RT_DEBUG_TRACE, "!!! MLME busy, reset MLME state machine !!!\n"); - } - - // tell CNTL state machine to call NdisMSetInformationComplete() after completing - // this request, because this request is initiated by NDIS. - pAdapter->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; - - MlmeEnqueue(&pAdapter->Mlme.Queue, - MLME_CNTL_STATE_MACHINE, - OID_802_11_SSID, - sizeof(NDIS_802_11_SSID), - (VOID *)pSsid - ); - Status = NDIS_STATUS_SUCCESS; - StateMachineTouched = TRUE; - - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWESSID[cmd=0x%x] (Len=%d,Ssid=%s)\n", SIOCSIWESSID, pSsid->SsidLength, pSsid->Ssid); - break; - case SIOCGIWESSID: //Get ESSID - erq = &wrq->u.essid; - - erq->flags=1; - erq->length = pAdapter->PortCfg.SsidLen; - if(copy_to_user(erq->pointer, pAdapter->PortCfg.Ssid, erq->length)) - Status = -EFAULT; - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCGIWESSID (Len=%d, ssid=%s...)\n", erq->length, pAdapter->PortCfg.Ssid); - break; - case SIOCGIWNWID: // get network id - Status = -EOPNOTSUPP; - break; - case SIOCSIWNWID: // set network id (the cell) - Status = -EOPNOTSUPP; - break; - case SIOCSIWFREQ: // set channel/frequency (Hz) - frq = &wrq->u.freq; - if((frq->e == 0) && (frq->m <= 1000)) - chan = frq->m; // Setting by channel number - else - MAP_KHZ_TO_CHANNEL_ID( (frq->m /100) , chan); // Setting by frequency - search the table , like 2.412G, 2.422G, - pAdapter->PortCfg.IbssConfig.Channel = chan; - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWFREQ[cmd=0x%x] (Channel=%d)\n", SIOCSIWFREQ, pAdapter->PortCfg.IbssConfig.Channel); - if(pAdapter->PortCfg.BssType == BSS_MONITOR || pAdapter->PortCfg.BssType == BSS_INDEP) - { - pAdapter->PortCfg.Channel = chan; - AsicSwitchChannel(pAdapter, pAdapter->PortCfg.Channel); - AsicLockChannel(pAdapter, pAdapter->PortCfg.Channel); - } - break; - case SIOCGIWFREQ: // get channel/frequency (Hz) - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCGIWFREQ\n"); - if (INFRA_ON(pAdapter) || ADHOC_ON(pAdapter)){ - MAP_CHANNEL_ID_TO_KHZ(pAdapter->PortCfg.Channel, wrq->u.freq.m); - }else{ - MAP_CHANNEL_ID_TO_KHZ(pAdapter->PortCfg.IbssConfig.Channel, wrq->u.freq.m); - } - // MW: Alter the multiplier so iwconfig reports GhZ - wrq->u.freq.e = 3; - wrq->u.freq.i = 0; - break; - case SIOCGIWNICKN: //get node name/nickname - erq = &wrq->u.data; - erq->length = strlen(pAdapter->nickn); - if(copy_to_user(erq->pointer, pAdapter->nickn, erq->length)) - Status = -EFAULT; - break; - case SIOCSIWNICKN: //set node name/nickname - erq = &wrq->u.data; - if (erq->flags) - { - if (erq->length <= IW_ESSID_MAX_SIZE){ - if(copy_from_user(pAdapter->nickn, erq->pointer, erq->length)){ - Status = -EINVAL; - break; - } - }else - Status = -E2BIG; - } - break; - case SIOCGIWRATE: //get default bit rate (bps) - wrq->u.bitrate.value = RateIdToMbps[pAdapter->PortCfg.TxRate] * 1000000; - wrq->u.bitrate.disabled = 0; - break; - case SIOCSIWRATE: //set default bit rate (bps) - RTMPSetDesiredRates(pAdapter, wrq->u.bitrate.value); - break; - case SIOCGIWRTS: // get RTS/CTS threshold (bytes) - wrq->u.rts.value = (INT) pAdapter->PortCfg.RtsThreshold; - wrq->u.rts.disabled = (wrq->u.rts.value == MAX_RTS_THRESHOLD); - wrq->u.rts.fixed = 1; - break; - case SIOCSIWRTS: //set RTS/CTS threshold (bytes) - RtsThresh = wrq->u.rts.value; - if (wrq->u.rts.disabled) - RtsThresh = MAX_RTS_THRESHOLD; - - if((RtsThresh > 0) && (RtsThresh <= MAX_RTS_THRESHOLD)) - pAdapter->PortCfg.RtsThreshold = (USHORT)RtsThresh; - else if (RtsThresh == 0) - pAdapter->PortCfg.RtsThreshold = MAX_RTS_THRESHOLD; - - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWRTS (=%d)\n", pAdapter->PortCfg.RtsThreshold); - break; - case SIOCGIWFRAG: //get fragmentation thr (bytes) - wrq->u.frag.value = (INT) pAdapter->PortCfg.FragmentThreshold; - wrq->u.frag.disabled = (wrq->u.frag.value >= MAX_FRAG_THRESHOLD); - wrq->u.frag.fixed = 1; - break; - case SIOCSIWFRAG: //set fragmentation thr (bytes) - FragThresh = wrq->u.frag.value; - if (wrq->u.rts.disabled) - FragThresh = MAX_FRAG_THRESHOLD; - - if ( (FragThresh >= MIN_FRAG_THRESHOLD) && (FragThresh <= MAX_FRAG_THRESHOLD)) - pAdapter->PortCfg.FragmentThreshold = (USHORT)FragThresh; - else if (FragThresh == 0) - pAdapter->PortCfg.FragmentThreshold = MAX_FRAG_THRESHOLD; - - if (pAdapter->PortCfg.FragmentThreshold == MAX_FRAG_THRESHOLD) - pAdapter->PortCfg.bFragmentZeroDisable = TRUE; - else - pAdapter->PortCfg.bFragmentZeroDisable = FALSE; - - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWFRAG (=%d)\n", pAdapter->PortCfg.FragmentThreshold); - break; - case SIOCGIWENCODE: //get encoding token & mode - index = (wrq->u.encoding.flags & IW_ENCODE_INDEX) - 1; - if ((index < 0) || (index >= NR_WEP_KEYS)) - index = pAdapter->PortCfg.DefaultKeyId; // Default key for tx (shared key) - - if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeOpen) - wrq->u.encoding.flags = IW_ENCODE_OPEN; - else if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeShared) - wrq->u.encoding.flags = IW_ENCODE_RESTRICTED; - - if (pAdapter->PortCfg.WepStatus == Ndis802_11WEPDisabled) - wrq->u.encoding.flags |= IW_ENCODE_DISABLED; - else - { - if(wrq->u.encoding.pointer) - { - wrq->u.encoding.length = pAdapter->PortCfg.SharedKey[index].KeyLen; - if(copy_to_user(wrq->u.encoding.pointer, - pAdapter->PortCfg.SharedKey[index].Key, - pAdapter->PortCfg.SharedKey[index].KeyLen)) - Status = -EFAULT; - wrq->u.encoding.flags |= (index + 1); - } - } - break; - case SIOCSIWENCODE: //set encoding token & mode - index = (wrq->u.encoding.flags & IW_ENCODE_INDEX) - 1; - /* take the old default key if index is invalid */ - if((index < 0) || (index >= NR_WEP_KEYS)) - index = pAdapter->PortCfg.DefaultKeyId; // Default key for tx (shared key) - - if(wrq->u.encoding.pointer) - { - len = wrq->u.encoding.length; - if(len > WEP_LARGE_KEY_LEN) - len = WEP_LARGE_KEY_LEN; - - memset(pAdapter->PortCfg.SharedKey[index].Key, 0x00, MAX_LEN_OF_KEY); - if(copy_from_user(pAdapter->PortCfg.SharedKey[index].Key, - wrq->u.encoding.pointer, len)){ - Status = -EINVAL; - break; - } - pAdapter->PortCfg.SharedKey[index].KeyLen = len <= WEP_SMALL_KEY_LEN ? WEP_SMALL_KEY_LEN : WEP_LARGE_KEY_LEN; - } - pAdapter->PortCfg.DefaultKeyId = (UCHAR) index; - if (wrq->u.encoding.flags & IW_ENCODE_DISABLED) - pAdapter->PortCfg.WepStatus = Ndis802_11WEPDisabled; - else - pAdapter->PortCfg.WepStatus = Ndis802_11WEPEnabled; - - if (wrq->u.encoding.flags & IW_ENCODE_RESTRICTED) - pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeShared; - if (wrq->u.encoding.flags & IW_ENCODE_OPEN) - pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeOpen; - - if(pAdapter->PortCfg.WepStatus == Ndis802_11WEPDisabled) - pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeOpen; - -//#ifdef RT2500_DBG - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWENCODE Key[%x] => \n", index); - for (i = 0; i < len; i++) - { - DBGPRINT(RT_DEBUG_TRACE, "%02x:", pAdapter->PortCfg.SharedKey[index].Key[i]); - if (i%16 == 15) - DBGPRINT(RT_DEBUG_TRACE, "\n"); - } - DBGPRINT(RT_DEBUG_TRACE, "\n"); -//#endif - break; - case SIOCGIWAP: //get access point MAC addresses - if (INFRA_ON(pAdapter) || ADHOC_ON(pAdapter)) - { - wrq->u.ap_addr.sa_family = ARPHRD_ETHER; - memcpy(wrq->u.ap_addr.sa_data, &pAdapter->PortCfg.Bssid, ETH_ALEN); - - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCGIWAP(=%02x:%02x:%02x:%02x:%02x:%02x)\n", - pAdapter->PortCfg.Bssid.Octet[0], pAdapter->PortCfg.Bssid.Octet[1], pAdapter->PortCfg.Bssid.Octet[2], - pAdapter->PortCfg.Bssid.Octet[3], pAdapter->PortCfg.Bssid.Octet[4], pAdapter->PortCfg.Bssid.Octet[5]); - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCGIWAP(=EMPTY)\n"); - Status = -ENOTCONN; - } - break; - case SIOCSIWAP: //set access point MAC addresses - memcpy(&Bssid, &wrq->u.ap_addr.sa_data, sizeof(NDIS_802_11_MAC_ADDRESS)); - - if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE)) - break; - - if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) - { - MlmeRestartStateMachine(pAdapter); - DBGPRINT(RT_DEBUG_TRACE, "!!! MLME busy, reset MLME state machine !!!\n"); - } - - // tell CNTL state machine to call NdisMSetInformationComplete() after completing - // this request, because this request is initiated by NDIS. - pAdapter->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; - - MlmeEnqueue(&pAdapter->Mlme.Queue, - MLME_CNTL_STATE_MACHINE, - OID_802_11_BSSID, - sizeof(NDIS_802_11_MAC_ADDRESS), - (VOID *)&Bssid); - Status = NDIS_STATUS_SUCCESS; - StateMachineTouched = TRUE; - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWAP %02x:%02x:%02x:%02x:%02x:%02x\n", - Bssid[0], Bssid[1], Bssid[2], Bssid[3], Bssid[4], Bssid[5]); - break; - case SIOCGIWMODE: //get operation mode - if (pAdapter->PortCfg.BssType == BSS_INDEP) - { - BssType = Ndis802_11IBSS; - wrq->u.mode = IW_MODE_ADHOC; - } - else if (pAdapter->PortCfg.BssType == BSS_INFRA) - { - BssType = Ndis802_11Infrastructure; - wrq->u.mode = IW_MODE_INFRA; - } -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,20)) - else if (pAdapter->PortCfg.BssType == BSS_MONITOR) - { - BssType = Ndis802_11Monitor; - wrq->u.mode = IW_MODE_MONITOR; - } -#endif - else - { - BssType = Ndis802_11AutoUnknown; - wrq->u.mode = IW_MODE_AUTO; - } - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCGIWMODE(=%d)\n", BssType); - break; - case SIOCSIWMODE: //set operation mode - if(wrq->u.mode == IW_MODE_ADHOC) - { - if (pAdapter->PortCfg.BssType != BSS_INDEP) - { - // Config has changed - pAdapter->bConfigChanged = TRUE; - } - pAdapter->PortCfg.BssType = BSS_INDEP; - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWMODE (AD-HOC)\n"); - } - else if (wrq->u.mode == IW_MODE_INFRA) - { - if (pAdapter->PortCfg.BssType != BSS_INFRA) - { - // Config has changed - pAdapter->bConfigChanged = TRUE; - } - pAdapter->PortCfg.BssType = BSS_INFRA; - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWMODE (INFRA)\n"); - } -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,20)) - else if (wrq->u.mode == IW_MODE_MONITOR) - { - if (pAdapter->PortCfg.BssType != BSS_MONITOR) - { - // COnfig has changed - pAdapter->bConfigChanged = TRUE; - } - pAdapter->PortCfg.BssType = BSS_MONITOR; - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWMODE (MONITOR)\n"); - } -#endif - else - { - Status = -EINVAL; - DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWMODE (unknown)\n"); - } - - if (pAdapter->bConfigChanged == TRUE) - { - if (pAdapter->PortCfg.BssType == BSS_MONITOR) - { - pAdapter->net_dev->type = 801; - RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x4e); - } - else - { - pAdapter->net_dev->type = 1; - RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x7e); - } - } - // Reset Ralink supplicant to not use, it will be set to start when UI set PMK key - pAdapter->PortCfg.WpaState = SS_NOTUSE; - break; - case SIOCGIWSENS: //get sensitivity (dBm) - case SIOCSIWSENS: //set sensitivity (dBm) - case SIOCGIWPOWER: //get Power Management settings - case SIOCSIWPOWER: //set Power Management settings - case SIOCGIWTXPOW: //get transmit power (dBm) - case SIOCSIWTXPOW: //set transmit power (dBm) - case SIOCGIWRETRY: //get retry limits and lifetime - case SIOCSIWRETRY: //set retry limits and lifetime - case 0x00008946: // ethtool specific IOCTL (FIXME!, minimal support should not be difficult) - case 0x00008947: // mrtg related IOCTL (ignored for now) - Status = -EOPNOTSUPP; - break; - case RT_PRIV_IOCTL: - subcmd = wrq->u.data.flags; - if( subcmd & OID_GET_SET_TOGGLE) - Status = RTMPSetInformation(pAdapter, rq, subcmd); - else - Status = RTMPQueryInformation(pAdapter, rq, subcmd); - break; - case SIOCGIWPRIV: - if (wrq->u.data.pointer) { - if ( !access_ok(VERIFY_WRITE, wrq->u.data.pointer, sizeof(privtab)) ) - break; - wrq->u.data.length = sizeof(privtab) / sizeof(privtab[0]); - if (copy_to_user(wrq->u.data.pointer, privtab, sizeof(privtab))) - Status = -EFAULT; - } - break; - - case RTPRIV_IOCTL_SET: - { - char *this_char; - char *value; - - if( !access_ok(VERIFY_READ, wrq->u.data.pointer, wrq->u.data.length) ) - break; - - while ((this_char = strsep((char**)&wrq->u.data.pointer, ",")) != NULL) - { - if (!*this_char) - continue; - - if ((value = rtstrchr(this_char, '=')) != NULL) - *value++ = 0; - - if (!value || !*value) - continue; - - for (PRTMP_PRIVATE_SET_PROC = RTMP_PRIVATE_SUPPORT_PROC; PRTMP_PRIVATE_SET_PROC->name; PRTMP_PRIVATE_SET_PROC++) - { - if (strcmp(this_char, PRTMP_PRIVATE_SET_PROC->name) == 0) - { - if(!PRTMP_PRIVATE_SET_PROC->set_proc(pAdapter, value)) - { //FALSE:Set private failed then return Invalid argument - Status = -EINVAL; - } - break; //Exit for loop. - } - } - - if(PRTMP_PRIVATE_SET_PROC->name == NULL) - { //Not found argument - Status = -EINVAL; - DBGPRINT(RT_DEBUG_TRACE, "ioctl::(iwpriv) Not Support Set Command [%s=%s]\n", this_char, value); - break; - } - } - } - break; - - case RTPRIV_IOCTL_BBP: - RTMPIoctlBBP(pAdapter, wrq); - break; - - case RTPRIV_IOCTL_MAC: - RTMPIoctlMAC(pAdapter, wrq); - break; - -#ifdef RALINK_ATE - case RTPRIV_IOCTL_E2P: - RTMPIoctlE2PROM(pAdapter, wrq); - break; -#endif - - default: - DBGPRINT(RT_DEBUG_TRACE, "IOCTL::unknown IOCTL's cmd = 0x%08x\n", cmd); - Status = -EOPNOTSUPP; - break; - } - - if(StateMachineTouched) // Upper layer sent a MLME-related operations - MlmeHandler(pAdapter); - - return Status; -} - - -UCHAR BCAST[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; -/* - ======================================================================== - - Routine Description: - Add WPA key process - - Arguments: - pAdapter Pointer to our adapter - pBuf Pointer to the where the key stored - - Return Value: - NDIS_SUCCESS Add key successfully - - Note: - - ======================================================================== -*/ -NDIS_STATUS RTMPWPAAddKeyProc( - IN PRTMP_ADAPTER pAdapter, - IN PVOID pBuf) -{ - PNDIS_802_11_KEY pKey; - ULONG KeyIdx; - NDIS_STATUS Status; - PUCHAR pTxMic, pRxMic; - BOOLEAN bTxKey; // Set the key as transmit key - BOOLEAN bPairwise; // Indicate the key is pairwise key - BOOLEAN bKeyRSC; // indicate the receive SC set by KeyRSC value. - // Otherwise, it will set by the NIC. - BOOLEAN bAuthenticator; // indicate key is set by authenticator. - INT i, PairwiseIdx; - - pKey = (PNDIS_802_11_KEY) pBuf; - KeyIdx = pKey->KeyIndex & 0xff; - // Bit 31 of Add-key, Tx Key - bTxKey = (pKey->KeyIndex & 0x80000000) ? TRUE : FALSE; - // Bit 30 of Add-key PairwiseKey - bPairwise = (pKey->KeyIndex & 0x40000000) ? TRUE : FALSE; - // Bit 29 of Add-key KeyRSC - bKeyRSC = (pKey->KeyIndex & 0x20000000) ? TRUE : FALSE; - // Bit 28 of Add-key Authenticator - bAuthenticator = (pKey->KeyIndex & 0x10000000) ? TRUE : FALSE; - - // 1. Check Group / Pairwise Key - if (bPairwise) // Pairwise Key - { - // 1. KeyIdx must be 0, otherwise, return NDIS_STATUS_INVALID_DATA - if (KeyIdx != 0) - return(NDIS_STATUS_FAILURE); - - // 2. Check bTx, it must be true, otherwise, return NDIS_STATUS_INVALID_DATA - if (bTxKey == FALSE) - return(NDIS_STATUS_FAILURE); - - // 3. If BSSID is not all 0xff, return NDIS_STATUS_INVALID_DATA - if (NdisEqualMemory(pKey->BSSID, BCAST, 6)) - return(NDIS_STATUS_FAILURE); - - // 4. Selct RxMic / TxMic based on Supp / Authenticator - if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) - { - // for WPA-None Tx, Rx MIC is the same - pTxMic = (PUCHAR) (&pKey->KeyMaterial) + 16; - pRxMic = pTxMic; - } - else if (bAuthenticator == TRUE) - { - pTxMic = (PUCHAR) (&pKey->KeyMaterial) + 16; - pRxMic = (PUCHAR) (&pKey->KeyMaterial) + 24; - } - else - { - pRxMic = (PUCHAR) (&pKey->KeyMaterial) + 16; - pTxMic = (PUCHAR) (&pKey->KeyMaterial) + 24; - } - - // 5. Find the old entry to overwrite or find an empty entry. - PairwiseIdx = 0; - for (i = 0; i < PAIRWISE_KEY_NO; i++) - { - if (pAdapter->PortCfg.PairwiseKey[i].KeyLen == 0) - { - PairwiseIdx = i; - break; - } - else if (RTMPEqualMemory(pAdapter->PortCfg.PairwiseKey[i].BssId, pKey->BSSID, 6)) - { - // Found the old entry - PairwiseIdx = i; - break; - } - } - // If there is no match and no empty pairwise key, we have to replace an old one - // which will be index 0 in our case. - - // 6. Check RxTsc - if (bKeyRSC == TRUE) - { - memcpy(&pAdapter->PortCfg.PairwiseKey[PairwiseIdx].RxTsc, &pKey->KeyRSC, 6); - } - else - { - memset(pAdapter->PortCfg.PairwiseKey[PairwiseIdx].RxTsc, 0, 6); - } - - // 7. Copy information into Pairwise Key structure. - // pKey->KeyLength will include TxMic and RxMic, therefore, we use 16 bytes hardcoded. - pAdapter->PortCfg.PairwiseKey[PairwiseIdx].KeyLen = 16; - memcpy(pAdapter->PortCfg.PairwiseKey[PairwiseIdx].Key, &pKey->KeyMaterial, 16); - memcpy(pAdapter->PortCfg.PairwiseKey[PairwiseIdx].RxMic, pRxMic, 8); - memcpy(pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxMic, pTxMic, 8); - memcpy(pAdapter->PortCfg.PairwiseKey[PairwiseIdx].BssId, pKey->BSSID, 6); - // Init TxTsc to one based on WiFi WPA specs - pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxTsc[0] = 1; - pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxTsc[1] = 0; - pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxTsc[2] = 0; - pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxTsc[3] = 0; - pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxTsc[4] = 0; - pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxTsc[5] = 0; - Status = NDIS_STATUS_SUCCESS; - - DBGPRINT(RT_DEBUG_INFO, "TKIP Key = "); - for (i = 0; i < 16; i++) - { - DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.PairwiseKey[PairwiseIdx].Key[i]); - } - DBGPRINT(RT_DEBUG_INFO, "\n"); - DBGPRINT(RT_DEBUG_INFO, "TKIP Rx MIC Key = "); - for (i = 0; i < 8; i++) - { - DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.PairwiseKey[PairwiseIdx].RxMic[i]); - } - DBGPRINT(RT_DEBUG_INFO, "\n"); - DBGPRINT(RT_DEBUG_INFO, "TKIP Tx MIC Key = "); - for (i = 0; i < 8; i++) - { - DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxMic[i]); - } - DBGPRINT(RT_DEBUG_INFO, "\n"); - DBGPRINT(RT_DEBUG_INFO, "TKIP RxTSC = "); - for (i = 0; i < 6; i++) - { - DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.PairwiseKey[PairwiseIdx].RxTsc[i]); - } - DBGPRINT(RT_DEBUG_INFO, "\n"); - DBGPRINT(RT_DEBUG_INFO, "BSSID:%02x:%02x:%02x:%02x:%02x:%02x \n", - pKey->BSSID[0],pKey->BSSID[1],pKey->BSSID[2],pKey->BSSID[3],pKey->BSSID[4],pKey->BSSID[5]); - - } - else // Group Key - { - // 1. Check BSSID, if not current BSSID or Bcast, return NDIS_STATUS_INVALID_DATA - if ((!NdisEqualMemory(&pKey->BSSID, &BCAST, 6)) && - (!NdisEqualMemory(&pKey->BSSID, &pAdapter->PortCfg.Bssid, 6))) - return(NDIS_STATUS_FAILURE); - - - // 2. Check Key index for supported Group Key - if (KeyIdx >= GROUP_KEY_NO) - return(NDIS_STATUS_FAILURE); - - // 3. Set as default Tx Key if bTxKey is TRUE - if (bTxKey == TRUE) - pAdapter->PortCfg.DefaultKeyId = (UCHAR) KeyIdx; - - // 4. Selct RxMic / TxMic based on Supp / Authenticator - if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) - { - // for WPA-None Tx, Rx MIC is the same - pTxMic = (PUCHAR) (&pKey->KeyMaterial) + 16; - pRxMic = pTxMic; - } - else if (bAuthenticator == TRUE) - { - pTxMic = (PUCHAR) (&pKey->KeyMaterial) + 16; - pRxMic = (PUCHAR) (&pKey->KeyMaterial) + 24; - } - else - { - pRxMic = (PUCHAR) (&pKey->KeyMaterial) + 16; - pTxMic = (PUCHAR) (&pKey->KeyMaterial) + 24; - } - - // 5. Check RxTsc - if (bKeyRSC == TRUE) - { - memcpy(pAdapter->PortCfg.GroupKey[KeyIdx].RxTsc, &pKey->KeyRSC, 6); - } - else - { - memset(pAdapter->PortCfg.GroupKey[KeyIdx].RxTsc, 0, 6); - } - - // 6. Copy information into Group Key structure. - // pKey->KeyLength will include TxMic and RxMic, therefore, we use 16 bytes hardcoded. - pAdapter->PortCfg.GroupKey[KeyIdx].KeyLen = 16; - memcpy(pAdapter->PortCfg.GroupKey[KeyIdx].Key, &pKey->KeyMaterial, 16); - memcpy(pAdapter->PortCfg.GroupKey[KeyIdx].RxMic, pRxMic, 8); - memcpy(pAdapter->PortCfg.GroupKey[KeyIdx].TxMic, pTxMic, 8); - memcpy(pAdapter->PortCfg.GroupKey[KeyIdx].BssId, pKey->BSSID, 6); - // Init TxTsc to one based on WiFi WPA specs - pAdapter->PortCfg.GroupKey[KeyIdx].TxTsc[0] = 1; - pAdapter->PortCfg.GroupKey[KeyIdx].TxTsc[1] = 0; - pAdapter->PortCfg.GroupKey[KeyIdx].TxTsc[2] = 0; - pAdapter->PortCfg.GroupKey[KeyIdx].TxTsc[3] = 0; - pAdapter->PortCfg.GroupKey[KeyIdx].TxTsc[4] = 0; - pAdapter->PortCfg.GroupKey[KeyIdx].TxTsc[5] = 0; - // 802.1x port control - pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_SECURED; - Status = NDIS_STATUS_SUCCESS; - - // For WEP compatibility, in case it use OID_ADD_KEY, not OID_ADD_WEP - if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) - { - pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen = (UCHAR) pKey->KeyLength; - memcpy(pAdapter->PortCfg.SharedKey[KeyIdx].Key, &pKey->KeyMaterial, pKey->KeyLength); - } - - DBGPRINT(RT_DEBUG_INFO, "TKIP Key = "); - for (i = 0; i < 16; i++) - { - DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.GroupKey[KeyIdx].Key[i]); - } - DBGPRINT(RT_DEBUG_INFO, "\n"); - DBGPRINT(RT_DEBUG_INFO, "TKIP Rx MIC Key = "); - for (i = 0; i < 8; i++) - { - DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.GroupKey[KeyIdx].RxMic[i]); - } - DBGPRINT(RT_DEBUG_INFO, "\n"); - DBGPRINT(RT_DEBUG_INFO, "TKIP Tx MIC Key = "); - for (i = 0; i < 8; i++) - { - DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.GroupKey[KeyIdx].TxMic[i]); - } - DBGPRINT(RT_DEBUG_INFO, "\n"); - DBGPRINT(RT_DEBUG_INFO, "TKIP RxTSC = "); - for (i = 0; i < 6; i++) - { - DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.GroupKey[KeyIdx].RxTsc[i]); - } - DBGPRINT(RT_DEBUG_INFO, "\n"); - DBGPRINT(RT_DEBUG_INFO, "BSSID:%02x:%02x:%02x:%02x:%02x:%02x \n", - pKey->BSSID[0],pKey->BSSID[1],pKey->BSSID[2],pKey->BSSID[3],pKey->BSSID[4],pKey->BSSID[5]); - - } - return (Status); -} - -/* - ======================================================================== - - Routine Description: - Remove WPA Key process - - Arguments: - pAdapter Pointer to our adapter - pBuf Pointer to the where the key stored - - Return Value: - NDIS_SUCCESS Add key successfully - - Note: - - ======================================================================== -*/ -NDIS_STATUS RTMPWPARemoveKeyProc( - IN PRTMP_ADAPTER pAdapter, - IN PVOID pBuf) -{ - PNDIS_802_11_REMOVE_KEY pKey; - ULONG KeyIdx; - NDIS_STATUS Status = NDIS_STATUS_FAILURE; - BOOLEAN bTxKey; // Set the key as transmit key - BOOLEAN bPairwise; // Indicate the key is pairwise key - BOOLEAN bKeyRSC; // indicate the receive SC set by KeyRSC value. - // Otherwise, it will set by the NIC. - BOOLEAN bAuthenticator; // indicate key is set by authenticator. - INT i; - - pKey = (PNDIS_802_11_REMOVE_KEY) pBuf; - KeyIdx = pKey->KeyIndex & 0xff; - // Bit 31 of Add-key, Tx Key - bTxKey = (pKey->KeyIndex & 0x80000000) ? TRUE : FALSE; - // Bit 30 of Add-key PairwiseKey - bPairwise = (pKey->KeyIndex & 0x40000000) ? TRUE : FALSE; - // Bit 29 of Add-key KeyRSC - bKeyRSC = (pKey->KeyIndex & 0x20000000) ? TRUE : FALSE; - // Bit 28 of Add-key Authenticator - bAuthenticator = (pKey->KeyIndex & 0x10000000) ? TRUE : FALSE; - - // 1. If bTx is TRUE, return failure information - if (bTxKey == TRUE) - return(NDIS_STATUS_FAILURE); - - // 2. Check Pairwise Key - if (bPairwise) - { - // a. If BSSID is broadcast, remove all pairwise keys. - if (NdisEqualMemory(&pKey->BSSID, &BCAST, 6)) - { - for (i = 0; i < PAIRWISE_KEY_NO; i++) - { - pAdapter->PortCfg.PairwiseKey[i].KeyLen = 0; - } - Status = NDIS_STATUS_SUCCESS; - } - - // b. If not broadcast, remove the pairwise specified by BSSID - else - { - for (i = 0; i < PAIRWISE_KEY_NO; i++) - { - if (NdisEqualMemory(pAdapter->PortCfg.PairwiseKey[i].BssId, pKey->BSSID, 6)) - { - pAdapter->PortCfg.PairwiseKey[i].KeyLen = 0; - Status = NDIS_STATUS_SUCCESS; - break; - } - } - - } - // c. If no pairwise supported, delete Group Key 0. - // The will be false since we do support pairwise keys. - } - // 3. Group Key - else - { - // a. If BSSID is broadcast, remove all group keys indexed - if (NdisEqualMemory(&pKey->BSSID, &BCAST, 6)) - { - pAdapter->PortCfg.GroupKey[KeyIdx].KeyLen = 0; - Status = NDIS_STATUS_SUCCESS; - } - - // b. If BSSID matched, delte the group key indexed. - else if (NdisEqualMemory(pAdapter->PortCfg.GroupKey[KeyIdx].BssId, pKey->BSSID, 6)) - { - pAdapter->PortCfg.GroupKey[KeyIdx].KeyLen = 0; - Status = NDIS_STATUS_SUCCESS; - } - - // c. For WEP compatibility - if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) - { - pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen = 0; - } - } - - return (Status); -} - - -/* - ======================================================================== - - Routine Description: - Remove All WPA Keys - - Arguments: - pAdapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPWPARemoveAllKeys( - IN PRTMP_ADAPTER pAdapter) -{ - INT i; - - // For WPA-None, there is no need to remove it, since WinXP won't set it again after - // Link up. And it will be replaced if user changed it. - if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) - return; - - for (i = 0; i < PAIRWISE_KEY_NO; i++) - { - pAdapter->PortCfg.PairwiseKey[i].KeyLen = 0; - } - - for (i = 0; i < GROUP_KEY_NO; i++) - { - pAdapter->PortCfg.GroupKey[i].KeyLen = 0; - } -} - -/* - ======================================================================== - - Routine Description: - Change NIC PHY mode. Re-association may be necessary. - - Arguments: - pAdapter Pointer to our adapter - phmode - - ======================================================================== -*/ -VOID RTMPSetPhyMode( - IN PRTMP_ADAPTER pAdapter, - IN ULONG phymode) -{ - INT i; - - DBGPRINT(RT_DEBUG_TRACE,"RTMPSetPhyMode(=%d)\n", phymode); - - // the selected phymode must be supported by the RF IC encoded in E2PROM - if (pAdapter->PortCfg.RfType < RFIC_5222) - { - if (phymode == PHY_11A) - phymode = PHY_11BG_MIXED; - } - - // if no change, do nothing - if (pAdapter->PortCfg.PhyMode == phymode) - return; - - pAdapter->PortCfg.PhyMode = (UCHAR)phymode; - BuildChannelList(pAdapter); - - for (i = 0; i < pAdapter->PortCfg.ChannelListNum; i++) - { - if (pAdapter->PortCfg.IbssConfig.Channel == pAdapter->PortCfg.ChannelList[i]) - break; - } - if (i == pAdapter->PortCfg.ChannelListNum) - pAdapter->PortCfg.IbssConfig.Channel = FirstChannel(pAdapter); - pAdapter->PortCfg.Channel = pAdapter->PortCfg.IbssConfig.Channel; - - AsicSwitchChannel(pAdapter, pAdapter->PortCfg.Channel); - AsicLockChannel(pAdapter, pAdapter->PortCfg.Channel); - - switch (phymode) { - case PHY_11B: - pAdapter->PortCfg.IbssConfig.SupportedRates[0] = 0x82; // 1 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.IbssConfig.SupportedRates[1] = 0x84; // 2 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.IbssConfig.SupportedRates[2] = 0x8B; // 5.5 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.IbssConfig.SupportedRates[3] = 0x96; // 11 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.IbssConfig.SupportedRatesLen = 4; - pAdapter->PortCfg.SupportedRates[0] = 0x82; // 1 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.SupportedRates[1] = 0x84; // 2 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.SupportedRates[2] = 0x8B; // 5.5 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.SupportedRates[3] = 0x96; // 11 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.SupportedRatesLen = 4; - pAdapter->PortCfg.DesiredRates[0] = 2; // 1 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[1] = 4; // 2 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[2] = 11; // 5.5 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[3] = 22; // 11 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[4] = 0; - pAdapter->PortCfg.DesiredRates[5] = 0; - pAdapter->PortCfg.DesiredRates[6] = 0; - pAdapter->PortCfg.DesiredRates[7] = 0; - pAdapter->PortCfg.DesiredRates[8] = 0; - pAdapter->PortCfg.DesiredRates[9] = 0; - pAdapter->PortCfg.DesiredRates[10] = 0; - pAdapter->PortCfg.DesiredRates[11] = 0; - break; - - case PHY_11BG_MIXED: - case PHY_11ABG_MIXED: - pAdapter->PortCfg.IbssConfig.SupportedRates[0] = 0x82; // 1 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.IbssConfig.SupportedRates[1] = 0x84; // 2 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.IbssConfig.SupportedRates[2] = 0x8B; // 5.5 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.IbssConfig.SupportedRates[3] = 0x96; // 11 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.IbssConfig.SupportedRates[4] = 0x12; // 9 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.IbssConfig.SupportedRates[5] = 0x24; // 18 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.IbssConfig.SupportedRates[6] = 0x48; // 36 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.IbssConfig.SupportedRates[7] = 0x6c; // 54 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.IbssConfig.SupportedRates[8] = 0x8C; // 6 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.IbssConfig.SupportedRates[9] = 0x98; // 12 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.IbssConfig.SupportedRates[10] = 0xb0; // 24 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.IbssConfig.SupportedRates[11] = 0x60; // 48 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.IbssConfig.SupportedRatesLen = 12; - pAdapter->PortCfg.SupportedRates[0] = 0x82; // 1 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.SupportedRates[1] = 0x84; // 2 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.SupportedRates[2] = 0x8B; // 5.5 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.SupportedRates[3] = 0x96; // 11 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.SupportedRates[4] = 0x8C; // 6 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.SupportedRates[5] = 0x12; // 9 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.SupportedRates[6] = 0x98; // 12 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.SupportedRates[7] = 0x24; // 18 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.SupportedRates[8] = 0xb0; // 24 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.SupportedRates[9] = 0x48; // 36 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.SupportedRates[10] = 0x60; // 48 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.SupportedRates[11] = 0x6c; // 54 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.SupportedRatesLen = 12; - pAdapter->PortCfg.DesiredRates[0] = 2; // 1 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[1] = 4; // 2 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[2] = 11; // 5.5 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[3] = 22; // 11 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[4] = 12; // 6 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[5] = 18; // 9 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[6] = 24; // 12 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[7] = 36; // 18 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[8] = 48; // 24 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[9] = 72; // 36 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[10] = 96; // 48 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[11] = 108; // 54 mbps, in units of 0.5 Mbps - break; - - case PHY_11A: - pAdapter->PortCfg.IbssConfig.SupportedRates[0] = 0x8C; // 6 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.IbssConfig.SupportedRates[1] = 0x12; // 9 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.IbssConfig.SupportedRates[2] = 0x98; // 12 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.IbssConfig.SupportedRates[3] = 0x24; // 18 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.IbssConfig.SupportedRates[4] = 0xb0; // 24 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.IbssConfig.SupportedRates[5] = 0x48; // 36 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.IbssConfig.SupportedRates[6] = 0x60; // 48 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.IbssConfig.SupportedRates[7] = 0x6c; // 54 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.IbssConfig.SupportedRates[8] = 0; - pAdapter->PortCfg.IbssConfig.SupportedRates[9] = 0; - pAdapter->PortCfg.IbssConfig.SupportedRates[10] = 0; - pAdapter->PortCfg.IbssConfig.SupportedRates[11] = 0; - pAdapter->PortCfg.IbssConfig.SupportedRatesLen = 8; - pAdapter->PortCfg.SupportedRates[0] = 0x8C; // 6 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.SupportedRates[1] = 0x12; // 9 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.SupportedRates[2] = 0x98; // 12 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.SupportedRates[3] = 0x24; // 18 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.SupportedRates[4] = 0xb0; // 24 mbps, in units of 0.5 Mbps, basic rate - pAdapter->PortCfg.SupportedRates[5] = 0x48; // 36 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.SupportedRates[6] = 0x60; // 48 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.SupportedRates[7] = 0x6c; // 54 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.SupportedRates[8] = 0; - pAdapter->PortCfg.SupportedRates[9] = 0; - pAdapter->PortCfg.SupportedRates[10] = 0; - pAdapter->PortCfg.SupportedRates[11] = 0; - pAdapter->PortCfg.SupportedRatesLen = 8; - pAdapter->PortCfg.DesiredRates[0] = 12; // 6 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[1] = 18; // 9 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[2] = 24; // 12 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[3] = 36; // 18 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[4] = 48; // 24 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[5] = 72; // 36 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[6] = 96; // 48 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[7] = 108; // 54 mbps, in units of 0.5 Mbps - pAdapter->PortCfg.DesiredRates[8] = 0; - pAdapter->PortCfg.DesiredRates[9] = 0; - pAdapter->PortCfg.DesiredRates[10] = 0; - pAdapter->PortCfg.DesiredRates[11] = 0; - break; - - default: - break; - } - - MlmeUpdateTxRates(pAdapter, FALSE); - AsicSetSlotTime(pAdapter, FALSE); - MakeIbssBeacon(pAdapter); // supported rates may change -} - -VOID RTMPSetDesiredRates( - IN PRTMP_ADAPTER pAdapter, - IN LONG Rates) -{ - NDIS_802_11_RATES aryRates; - - memset(&aryRates, 0x00, sizeof(NDIS_802_11_RATES)); - switch (pAdapter->PortCfg.PhyMode) - { - case PHY_11A: // A only - switch (Rates) - { - case 6000000: //6M - aryRates[0] = 0x0c; // 6M - break; - case 9000000: //9M - aryRates[0] = 0x12; // 9M - break; - case 12000000: //12M - aryRates[0] = 0x18; // 12M - break; - case 18000000: //18M - aryRates[0] = 0x24; // 18M - break; - case 24000000: //24M - aryRates[0] = 0x30; // 24M - break; - case 36000000: //36M - aryRates[0] = 0x48; // 36M - break; - case 48000000: //48M - aryRates[0] = 0x60; // 48M - break; - case 54000000: //54M - aryRates[0] = 0x6c; // 54M - break; - case -1: //Auto - default: - aryRates[0] = 0x6c; // 54Mbps - aryRates[1] = 0x60; // 48Mbps - aryRates[2] = 0x48; // 36Mbps - aryRates[3] = 0x30; // 24Mbps - aryRates[4] = 0x24; // 18M - aryRates[5] = 0x18; // 12M - aryRates[6] = 0x12; // 9M - aryRates[7] = 0x0c; // 6M - break; - } - break; - case PHY_11BG_MIXED: // B/G Mixed - case PHY_11B: // B only - case PHY_11ABG_MIXED: // A/B/G Mixed - default: - switch (Rates) - { - case 1000000: //1M - aryRates[0] = 0x02; - break; - case 2000000: //2M - aryRates[0] = 0x04; - break; - case 5000000: //5.5M - aryRates[0] = 0x0b; // 5.5M - break; - case 11000000: //11M - aryRates[0] = 0x16; // 11M - break; - case 6000000: //6M - aryRates[0] = 0x0c; // 6M - break; - case 9000000: //9M - aryRates[0] = 0x12; // 9M - break; - case 12000000: //12M - aryRates[0] = 0x18; // 12M - break; - case 18000000: //18M - aryRates[0] = 0x24; // 18M - break; - case 24000000: //24M - aryRates[0] = 0x30; // 24M - break; - case 36000000: //36M - aryRates[0] = 0x48; // 36M - break; - case 48000000: //48M - aryRates[0] = 0x60; // 48M - break; - case 54000000: //54M - aryRates[0] = 0x6c; // 54M - break; - case -1: //Auto - default: - if (pAdapter->PortCfg.PhyMode == PHY_11B) - { //B Only - aryRates[0] = 0x16; // 11Mbps - aryRates[1] = 0x0b; // 5.5Mbps - aryRates[2] = 0x04; // 2Mbps - aryRates[3] = 0x02; // 1Mbps - } - else - { //(B/G) Mixed or (A/B/G) Mixed - aryRates[0] = 0x6c; // 54Mbps - aryRates[1] = 0x60; // 48Mbps - aryRates[2] = 0x48; // 36Mbps - aryRates[3] = 0x30; // 24Mbps - aryRates[4] = 0x16; // 11Mbps - aryRates[5] = 0x0b; // 5.5Mbps - aryRates[6] = 0x04; // 2Mbps - aryRates[7] = 0x02; // 1Mbps - } - break; - } - break; - } - - memset(pAdapter->PortCfg.DesiredRates, 0, MAX_LEN_OF_SUPPORTED_RATES); - memcpy(pAdapter->PortCfg.DesiredRates, &aryRates, sizeof(NDIS_802_11_RATES)); - DBGPRINT(RT_DEBUG_TRACE, " RTMPSetDesiredRates (%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x)\n", - pAdapter->PortCfg.DesiredRates[0],pAdapter->PortCfg.DesiredRates[1], - pAdapter->PortCfg.DesiredRates[2],pAdapter->PortCfg.DesiredRates[3], - pAdapter->PortCfg.DesiredRates[4],pAdapter->PortCfg.DesiredRates[5], - pAdapter->PortCfg.DesiredRates[6],pAdapter->PortCfg.DesiredRates[7] ); - // Changing DesiredRate may affect the MAX TX rate we used to TX frames out - MlmeUpdateTxRates(pAdapter, FALSE); -} -/* - ========================================================================== - Description: - Set Country Region - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_CountryRegion_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - ULONG region; - int success = TRUE; - - region = simple_strtol(arg, 0, 10); - if( (region >= REGION_MIN) && (region <= REGION_MAX) ) - { - pAdapter->PortCfg.CountryRegion = (UCHAR) region; - DBGPRINT(RT_DEBUG_TRACE, "Set_CountryRegion_Proc::(CountryRegion=%d)\n", pAdapter->PortCfg.CountryRegion); - DBGPRINT(RT_DEBUG_TRACE, "Set_CountryRegion_Proc::(CountryRegion=%d)\n", pAdapter->PortCfg.CountryRegion); - } - else - success = FALSE; - - return success; -} -/* - ========================================================================== - Description: - Set SSID - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_SSID_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - NDIS_802_11_SSID Ssid, *pSsid=NULL; - BOOLEAN StateMachineTouched = FALSE; - int success = TRUE; - - - /* Protect against oops if net is down, this will not work with if-preup - use iwconfig properly */ - printk("'iwpriv set essid' is deprecated, please use 'iwconfg essid' instead\n"); - if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE)) - return FALSE; - - if( strlen(arg) <= MAX_LEN_OF_SSID) - { - memset(&Ssid, 0, MAX_LEN_OF_SSID); - memcpy(Ssid.Ssid, arg, strlen(arg)); - Ssid.SsidLength = strlen(arg); - pSsid = &Ssid; - - - - if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) - { - MlmeRestartStateMachine(pAdapter); - DBGPRINT(RT_DEBUG_TRACE, "!!! MLME busy, reset MLME state machine !!!\n"); - } - // tell CNTL state machine to call NdisMSetInformationComplete() after completing - // this request, because this request is initiated by NDIS. - pAdapter->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; - - MlmeEnqueue(&pAdapter->Mlme.Queue, - MLME_CNTL_STATE_MACHINE, - OID_802_11_SSID, - sizeof(NDIS_802_11_SSID), - (VOID *)pSsid); - - StateMachineTouched = TRUE; - DBGPRINT(RT_DEBUG_TRACE, "Set_SSID_Proc::(Len=%d,Ssid=%s)\n", pAdapter->PortCfg.SsidLen, pAdapter->PortCfg.Ssid); - } - else - success = FALSE; - - if (StateMachineTouched) // Upper layer sent a MLME-related operations - MlmeHandler(pAdapter); - - return success; -} -/* - ========================================================================== - Description: - Set Wireless Mode - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_WirelessMode_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - ULONG WirelessMode; - int success = TRUE; - - WirelessMode = simple_strtol(arg, 0, 10); - - if ((WirelessMode == PHY_11BG_MIXED) || (WirelessMode == PHY_11B) || - (WirelessMode == PHY_11A) || (WirelessMode == PHY_11ABG_MIXED)) - { - RTMPSetPhyMode(pAdapter, WirelessMode); - DBGPRINT(RT_DEBUG_TRACE, "Set_WirelessMode_Proc::(=%d)\n", WirelessMode); - } - else - success = FALSE; - - return success; -} -/* - ========================================================================== - Description: - Set TxRate - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_TxRate_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - ULONG TxRate; - int success = TRUE; - ULONG rate_mapping[12] = {1, 2, 5, 11, 6, 9, 12, 18, 24, 36, 48, 54}; //according to README - - TxRate = simple_strtol(arg, 0, 10); - - if (TxRate == 0) - RTMPSetDesiredRates(pAdapter, -1); - else - RTMPSetDesiredRates(pAdapter, (LONG) (rate_mapping[TxRate-1] * 1000000)); - return success; -} -/* - ========================================================================== - Description: - Set AdhocMode support Rate can or can not exceed 11Mbps against WiFi spec. - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_AdhocModeRate_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - ULONG AdhocMode; - - AdhocMode = simple_strtol(arg, 0, 10); - - if (AdhocMode == 1) - pAdapter->PortCfg.AdhocMode = 1; - else if (AdhocMode == 0) - pAdapter->PortCfg.AdhocMode = 0; - else - return FALSE; //Invalid argument - - DBGPRINT(RT_DEBUG_TRACE, "Set_AdhocModeRate_Proc::(AdhocMode=%d)\n", pAdapter->PortCfg.AdhocMode); - - return TRUE; -} -/* - ========================================================================== - Description: - Set Channel - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_Channel_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - int success = TRUE; - UCHAR Channel; - - Channel = (UCHAR) simple_strtol(arg, 0, 10); - - if (ChannelSanity(pAdapter, Channel) == TRUE) - { - pAdapter->PortCfg.Channel = Channel; - pAdapter->PortCfg.IbssConfig.Channel = Channel; - DBGPRINT(RT_DEBUG_TRACE, "Set_Channel_Proc::(Channel=%d)\n", Channel); - } - else - success = FALSE; - - return success; -} -/* - ========================================================================== - Description: - Set 11B/11G Protection - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_BGProtection_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) - -{ - switch (simple_strtol(arg, 0, 10)) - { - case 0: //AUTO - pAdapter->PortCfg.UseBGProtection = 0; - break; - case 1: //Always On - pAdapter->PortCfg.UseBGProtection = 1; - break; - case 2: //Always OFF - pAdapter->PortCfg.UseBGProtection = 2; - break; - default: //Invalid argument - return FALSE; - } - DBGPRINT(RT_DEBUG_TRACE, "Set_BGProtection_Proc::(BGProtection=%d)\n", pAdapter->PortCfg.UseBGProtection); - - return TRUE; -} -/* - ========================================================================== - Description: - Set StaWithEtherBridge function on/off - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_StaWithEtherBridge_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) - -{ - switch (simple_strtol(arg, 0, 10)) - { - case 0: //Off - pAdapter->PortCfg.StaWithEtherBridge.Enable = FALSE; - break; - case 1: //On - pAdapter->PortCfg.StaWithEtherBridge.Enable = TRUE; - break; - default: //Invalid argument - return FALSE; - } - DBGPRINT(RT_DEBUG_TRACE, "Set_StaWithEtherBridge_Proc::(StaWithEtherBridge=%d)\n", pAdapter->PortCfg.StaWithEtherBridge.Enable); - - return TRUE; -} -/* - ========================================================================== - Description: - Set TxPreamble - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_TxPreamble_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - RT_802_11_PREAMBLE Preamble; - - Preamble = simple_strtol(arg, 0, 10); - switch (Preamble) - { - case Rt802_11PreambleShort: - pAdapter->PortCfg.WindowsTxPreamble = Preamble; - MlmeSetTxPreamble(pAdapter, Rt802_11PreambleShort); - break; - case Rt802_11PreambleLong: - case Rt802_11PreambleAuto: - // if user wants AUTO, initialize to LONG here, then change according to AP's - // capability upon association. - pAdapter->PortCfg.WindowsTxPreamble = Preamble; - MlmeSetTxPreamble(pAdapter, Rt802_11PreambleLong); - break; - default: //Invalid argument - return FALSE; - } - - DBGPRINT(RT_DEBUG_TRACE, "Set_TxPreamble_Proc::(TxPreamble=%d)\n", Preamble); - - return TRUE; -} -/* - ========================================================================== - Description: - Set RTS Threshold - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_RTSThreshold_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) - - -{ - NDIS_802_11_RTS_THRESHOLD RtsThresh; - - printk("'iwpriv set RTSThreshold' is deprecated, please use 'iwconfg rts' instead\n"); - - RtsThresh = simple_strtol(arg, 0, 10); - - if((RtsThresh > 0) && (RtsThresh <= MAX_RTS_THRESHOLD)) - pAdapter->PortCfg.RtsThreshold = (USHORT)RtsThresh; - else if (RtsThresh == 0) - pAdapter->PortCfg.RtsThreshold = MAX_RTS_THRESHOLD; - else - return FALSE; - - DBGPRINT(RT_DEBUG_TRACE, "Set_RTSThreshold_Proc::(RTSThreshold=%d)\n", pAdapter->PortCfg.RtsThreshold); - return TRUE; -} -/* - ========================================================================== - Description: - Set Fragment Threshold - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_FragThreshold_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - NDIS_802_11_FRAGMENTATION_THRESHOLD FragThresh; - - printk("'iwpriv set FragThreshold' is deprecated, please use 'iwconfg frag' instead\n"); - - - FragThresh = simple_strtol(arg, 0, 10); - - if ( (FragThresh >= MIN_FRAG_THRESHOLD) && (FragThresh <= MAX_FRAG_THRESHOLD)) - pAdapter->PortCfg.FragmentThreshold = (USHORT)FragThresh; - else if (FragThresh == 0) - pAdapter->PortCfg.FragmentThreshold = MAX_FRAG_THRESHOLD; - else - return FALSE; //Invalid argument - - if (pAdapter->PortCfg.FragmentThreshold == MAX_FRAG_THRESHOLD) - pAdapter->PortCfg.bFragmentZeroDisable = TRUE; - else - pAdapter->PortCfg.bFragmentZeroDisable = FALSE; - - DBGPRINT(RT_DEBUG_TRACE, "Set_FragThreshold_Proc::(FragThreshold=%d)\n", FragThresh); - - return TRUE; -} -/* - ========================================================================== - Description: - Set TxBurst - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_TxBurst_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - ULONG TxBurst; - - TxBurst = simple_strtol(arg, 0, 10); - - if (TxBurst == 1) - pAdapter->PortCfg.EnableTxBurst = TRUE; - else if (TxBurst == 0) - pAdapter->PortCfg.EnableTxBurst = FALSE; - else - return FALSE; //Invalid argument - - DBGPRINT(RT_DEBUG_TRACE, "Set_TxBurst_Proc::(TxBurst=%d)\n", pAdapter->PortCfg.EnableTxBurst); - - return TRUE; -} -/* - ========================================================================== - Description: - Set TurboRate Enable or Disable - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_TurboRate_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - ULONG TurboRate; - - TurboRate = simple_strtol(arg, 0, 10); - - if (TurboRate == 1) - pAdapter->PortCfg.EnableTurboRate = TRUE; - else if (TurboRate == 0) - pAdapter->PortCfg.EnableTurboRate = FALSE; - else - return FALSE; //Invalid argument - - DBGPRINT(RT_DEBUG_TRACE, "Set_TurboRate_Proc::(TurboRate=%d)\n", pAdapter->PortCfg.EnableTurboRate); - - return TRUE; -} -/* - ========================================================================== - Description: - Set Short Slot Time Enable or Disable - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_ShortSlot_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - ULONG ShortSlot; - - ShortSlot = simple_strtol(arg, 0, 10); - - if (ShortSlot == 1) - pAdapter->PortCfg.UseShortSlotTime = TRUE; - else if (ShortSlot == 0) - pAdapter->PortCfg.UseShortSlotTime = FALSE; - else - return FALSE; //Invalid argument - - DBGPRINT(RT_DEBUG_TRACE, "Set_ShortSlot_Proc::(ShortSlot=%d)\n", pAdapter->PortCfg.UseShortSlotTime); - - return TRUE; -} - -/* - ========================================================================== - Description: - Set Network Type(Infrastructure/Adhoc mode) - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_NetworkType_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - - printk("'iwpriv set NetworkType' is deprecated, please use 'iwconfg mode' instead\n"); - - if (strcmp(arg, "Adhoc") == 0) - pAdapter->PortCfg.BssType = BSS_INDEP; - else //Default Infrastructure mode - pAdapter->PortCfg.BssType = BSS_INFRA; - - // Reset Ralink supplicant to not use, it will be set to start when UI set PMK key - pAdapter->PortCfg.WpaState = SS_NOTUSE; - - DBGPRINT(RT_DEBUG_TRACE, "Set_NetworkType_Proc::(NetworkType=%d)\n", pAdapter->PortCfg.BssType); - - return TRUE; -} - -/* - ========================================================================== - Description: - Set Authentication mode - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_AuthMode_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - if ((strcmp(arg, "OPEN") == 0) || (strcmp(arg, "open") == 0)) - pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeOpen; - else if ((strcmp(arg, "SHARED") == 0) || (strcmp(arg, "shared") == 0)) - pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeShared; - else if ((strcmp(arg, "AUTO") == 0) || (strcmp(arg, "auto") == 0)) - pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeAutoSwitch; - else if ((strcmp(arg, "WPAPSK") == 0) || (strcmp(arg, "wpapsk") == 0)) - pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeWPAPSK; - else if ((strcmp(arg, "WPANONE") == 0) || (strcmp(arg, "wpanone") == 0)) - pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeWPANone; - else - return FALSE; - - pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED; - - DBGPRINT(RT_DEBUG_TRACE, "Set_AuthMode_Proc::(AuthMode=%d)\n", pAdapter->PortCfg.AuthMode); - - return TRUE; -} - -/* - ========================================================================== - Description: - Set Encryption Type - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_EncrypType_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - if ((strcmp(arg, "NONE") == 0) || (strcmp(arg, "none") == 0)) - pAdapter->PortCfg.WepStatus = Ndis802_11WEPDisabled; - else if ((strcmp(arg, "WEP") == 0) || (strcmp(arg, "wep") == 0)) - pAdapter->PortCfg.WepStatus = Ndis802_11WEPEnabled; - else if ((strcmp(arg, "TKIP") == 0) || (strcmp(arg, "tkip") == 0)) - pAdapter->PortCfg.WepStatus = Ndis802_11Encryption2Enabled; - else if ((strcmp(arg, "AES") == 0) || (strcmp(arg, "aes") == 0)) - pAdapter->PortCfg.WepStatus = Ndis802_11Encryption3Enabled; - else - return FALSE; - - DBGPRINT(RT_DEBUG_TRACE, "Set_EncrypType_Proc::(EncrypType=%d)\n", pAdapter->PortCfg.WepStatus); - - return TRUE; -} -/* - ========================================================================== - Description: - Set Default Key ID - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_DefaultKeyID_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - ULONG KeyIdx; - - printk("'iwpriv set DefaultKeyID' is deprecated, please use 'iwconfg key' instead\n"); - - KeyIdx = simple_strtol(arg, 0, 10); - if((KeyIdx >= 1 ) && (KeyIdx <= 4)) - pAdapter->PortCfg.DefaultKeyId = (UCHAR) (KeyIdx - 1 ); - else - return FALSE; //Invalid argument - - DBGPRINT(RT_DEBUG_TRACE, "Set_DefaultKeyID_Proc::(DefaultKeyID=%d)\n", pAdapter->PortCfg.DefaultKeyId); - - return TRUE; -} -/* - ========================================================================== - Description: - Set WEP KEY1 - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_Key1_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - int KeyLen; - int i; - - printk("'iwpriv set Key1' is deprecated, please use 'iwconfg key [1] ' instead\n"); - - KeyLen = strlen(arg); - - switch (KeyLen) - { - case 5: //wep 40 Ascii type - pAdapter->PortCfg.SharedKey[0].KeyLen = KeyLen; - memcpy(pAdapter->PortCfg.SharedKey[0].Key, arg, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Ascii"); - break; - case 10: //wep 40 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(arg+i)) ) - return FALSE; //Not Hex value; - } - pAdapter->PortCfg.SharedKey[0].KeyLen = KeyLen / 2 ; - AtoH(arg, pAdapter->PortCfg.SharedKey[0].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Hex"); - break; - case 13: //wep 104 Ascii type - pAdapter->PortCfg.SharedKey[0].KeyLen = KeyLen; - memcpy(pAdapter->PortCfg.SharedKey[0].Key, arg, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Ascii"); - break; - case 26: //wep 104 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(arg+i)) ) - return FALSE; //Not Hex value; - } - pAdapter->PortCfg.SharedKey[0].KeyLen = KeyLen / 2 ; - AtoH(arg, pAdapter->PortCfg.SharedKey[0].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Hex"); - break; - default: //Invalid argument - DBGPRINT(RT_DEBUG_TRACE, "Set_Key1_Proc::Invalid argument (=%s)\n", arg); - return FALSE; - } - - return TRUE; -} -/* - ========================================================================== - Description: - Set WEP KEY2 - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_Key2_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - int KeyLen; - int i; - - printk("'iwpriv set Key2' is deprecated, please use 'iwconfg key [2] ' instead\n"); - - - KeyLen = strlen(arg); - - switch (KeyLen) - { - case 5: //wep 40 Ascii type - pAdapter->PortCfg.SharedKey[1].KeyLen = KeyLen; - memcpy(pAdapter->PortCfg.SharedKey[1].Key, arg, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Ascii"); - break; - case 10: //wep 40 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(arg+i)) ) - return FALSE; //Not Hex value; - } - pAdapter->PortCfg.SharedKey[1].KeyLen = KeyLen / 2 ; - AtoH(arg, pAdapter->PortCfg.SharedKey[1].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Hex"); - break; - case 13: //wep 104 Ascii type - pAdapter->PortCfg.SharedKey[1].KeyLen = KeyLen; - memcpy(pAdapter->PortCfg.SharedKey[1].Key, arg, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Ascii"); - break; - case 26: //wep 104 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(arg+i)) ) - return FALSE; //Not Hex value; - } - pAdapter->PortCfg.SharedKey[1].KeyLen = KeyLen / 2 ; - AtoH(arg, pAdapter->PortCfg.SharedKey[1].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Hex"); - break; - default: //Invalid argument - DBGPRINT(RT_DEBUG_TRACE, "Set_Key2_Proc::Invalid argument (=%s)\n", arg); - return FALSE; - } - - return TRUE; -} -/* - ========================================================================== - Description: - Set WEP KEY3 - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_Key3_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - int KeyLen; - int i; - - printk("'iwpriv set Key3' is deprecated, please use 'iwconfg key [3] ' instead\n"); - - KeyLen = strlen(arg); - - switch (KeyLen) - { - case 5: //wep 40 Ascii type - pAdapter->PortCfg.SharedKey[2].KeyLen = KeyLen; - memcpy(pAdapter->PortCfg.SharedKey[2].Key, arg, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key3_Proc::(Key3=%s and type=%s)\n", arg, "Ascii"); - break; - case 10: //wep 40 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(arg+i)) ) - return FALSE; //Not Hex value; - } - pAdapter->PortCfg.SharedKey[2].KeyLen = KeyLen / 2 ; - AtoH(arg, pAdapter->PortCfg.SharedKey[2].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key3_Proc::(Key3=%s and type=%s)\n", arg, "Hex"); - break; - case 13: //wep 104 Ascii type - pAdapter->PortCfg.SharedKey[2].KeyLen = KeyLen; - memcpy(pAdapter->PortCfg.SharedKey[2].Key, arg, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key3_Proc::(Key3=%s and type=%s)\n", arg, "Ascii"); - break; - case 26: //wep 104 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(arg+i)) ) - return FALSE; //Not Hex value; - } - pAdapter->PortCfg.SharedKey[2].KeyLen = KeyLen / 2 ; - AtoH(arg, pAdapter->PortCfg.SharedKey[2].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key3_Proc::(Key3=%s and type=%s)\n", arg, "Hex"); - break; - default: //Invalid argument - DBGPRINT(RT_DEBUG_TRACE, "Set_Key3_Proc::Invalid argument (=%s)\n", arg); - return FALSE; - } - - return TRUE; -} -/* - ========================================================================== - Description: - Set WEP KEY4 - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_Key4_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - int KeyLen; - int i; - - printk("'iwpriv set Key4' is deprecated, please use 'iwconfg key [4] ' instead\n"); - - KeyLen = strlen(arg); - - switch (KeyLen) - { - case 5: //wep 40 Ascii type - pAdapter->PortCfg.SharedKey[3].KeyLen = KeyLen; - memcpy(pAdapter->PortCfg.SharedKey[3].Key, arg, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Ascii"); - break; - case 10: //wep 40 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(arg+i)) ) - return FALSE; //Not Hex value; - } - pAdapter->PortCfg.SharedKey[3].KeyLen = KeyLen / 2 ; - AtoH(arg, pAdapter->PortCfg.SharedKey[3].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Hex"); - break; - case 13: //wep 104 Ascii type - pAdapter->PortCfg.SharedKey[3].KeyLen = KeyLen; - memcpy(pAdapter->PortCfg.SharedKey[3].Key, arg, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Ascii"); - break; - case 26: //wep 104 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(arg+i)) ) - return FALSE; //Not Hex value; - } - pAdapter->PortCfg.SharedKey[3].KeyLen = KeyLen / 2 ; - AtoH(arg, pAdapter->PortCfg.SharedKey[3].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Hex"); - break; - default: //Invalid argument - DBGPRINT(RT_DEBUG_TRACE, "Set_Key4_Proc::Invalid argument (=%s)\n", arg); - return FALSE; - } - - return TRUE; -} -/* - ========================================================================== - Description: - Set WPA PSK key - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_WPAPSK_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - UCHAR keyMaterial[40]; - - DBGPRINT(RT_DEBUG_TRACE, "Set_WPAPSK_Proc::(WPAPSK=%s)\n", arg); - if ((strlen(arg) < 8) || (strlen(arg) > 64)) - { - DBGPRINT(RT_DEBUG_TRACE, "Set failed!!(WPAPSK=%s), WPAPSK key-string required 8 ~ 64 characters \n", arg); - return FALSE; - } - - if (strlen(arg) == 64) - { - AtoH(arg, pAdapter->PortCfg.PskKey.Key, 32); - } - else - { - PasswordHash((char *)arg, pAdapter->Mlme.CntlAux.Ssid, pAdapter->Mlme.CntlAux.SsidLen, keyMaterial); - - memcpy(&pAdapter->PortCfg.PskKey.Key, &keyMaterial, 32); - } - - // Use RaConfig as PSK agent. - // Start STA supplicant state machine - pAdapter->PortCfg.WpaState = SS_START; - - return TRUE; -} - - -/* - ========================================================================== - Description: - Set WPA NONE key - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ - -INT Set_WPANONE_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - UCHAR keyMaterial[40]; - - DBGPRINT(RT_DEBUG_TRACE, "Set_WPANONE_Proc::(WPANONE=%s)\n", arg); - if ((strlen(arg) < 8) || (strlen(arg) > 64)) - { - DBGPRINT(RT_DEBUG_TRACE, "Set failed!!(WPANONE=%s), WPANONE key-string required 8 ~ 64 characters \n", arg); - return FALSE; - } - - if (strlen(arg) == 64) - { - AtoH(arg, pAdapter->PortCfg.PskKey.Key, 32); - } - else - { - PasswordHash((char *)arg, pAdapter->Mlme.CntlAux.Ssid, pAdapter->Mlme.CntlAux.SsidLen, keyMaterial); - - memcpy(pAdapter->PortCfg.PskKey.Key, keyMaterial, 32); - } - // Use RaConfig as PSK agent. - // Start STA supplicant state machine - pAdapter->PortCfg.WpaState = SS_START; - -//----------------------------------------------------------------------------- -// pasted from "RTMPWPAAddKeyProc(...)" -// major on Group Key only. - - // Group Key - { - // 3. Set as default Tx Key if bTxKey is TRUE - pAdapter->PortCfg.DefaultKeyId = 0; - - // 4. Selct RxMic / TxMic based on Supp / Authenticator - // for WPA-None Tx, Rx MIC is the same - //pTxMic = (PUCHAR) (keyMaterial) + 16; - //pRxMic = pTxMic; - - memset(pAdapter->PortCfg.GroupKey[0].RxTsc, 0x00, 6); - - // 6. Copy information into Group Key structure. - // pKey->KeyLength will include TxMic and RxMic, therefore, we use 16 bytes hardcoded. - pAdapter->PortCfg.GroupKey[0].KeyLen = 16; - memcpy(pAdapter->PortCfg.GroupKey[0].Key, (PUCHAR)(keyMaterial) + 0, 16); - memcpy(pAdapter->PortCfg.GroupKey[0].RxMic, (PUCHAR)(keyMaterial) + 16, 8); - memcpy(pAdapter->PortCfg.GroupKey[0].TxMic, (PUCHAR)(keyMaterial) + 16, 8); - memcpy(pAdapter->PortCfg.GroupKey[0].BssId, &pAdapter->PortCfg.Bssid, 6); - - // Init TxTsc to one based on WiFi WPA specs - pAdapter->PortCfg.GroupKey[0].TxTsc[0] = 1; - pAdapter->PortCfg.GroupKey[0].TxTsc[1] = 0; - pAdapter->PortCfg.GroupKey[0].TxTsc[2] = 0; - pAdapter->PortCfg.GroupKey[0].TxTsc[3] = 0; - pAdapter->PortCfg.GroupKey[0].TxTsc[4] = 0; - pAdapter->PortCfg.GroupKey[0].TxTsc[5] = 0; - - // 802.1x port control - pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_SECURED; - } - - return TRUE; -} - -/* - ========================================================================== - Description: - Read / Write BBP -Arguments: - pAdapter Pointer to our adapter - wrq Pointer to the ioctl argument - - Return Value: - None - - Note: - Usage: - 1.) iwpriv ra0 bbp ==> read all BBP - 2.) iwpriv ra0 bbp 1,2,10,32 ==> raed BBP where ID=1,2,10,32 - 3.) iwpriv ra0 bbp 1=10,17=3E ==> write BBP R1=0x10, R17=0x3E - ========================================================================== -*/ -VOID RTMPIoctlBBP( - IN PRTMP_ADAPTER pAdapter, - IN struct iwreq *wrq) -{ - char *this_char; - char *value; - int i=0; - int count = 0; - UCHAR regBBP; - char msg[1024]; - char arg[255]; - char *ptr; - ULONG bbpId; - ULONG bbpValue; - BOOLEAN bIsPrintAllBBP = FALSE; - - DBGPRINT(RT_DEBUG_TRACE, "==>RTMPIoctlBBP\n"); - memset(msg, 0x00, 1024); - if (wrq->u.data.length > 1) //No parameters. - { - memcpy(arg, wrq->u.data.pointer, (wrq->u.data.length > 255) ? 255 : wrq->u.data.length); - ptr = arg; - sprintf(msg, "\n"); - //Parsing Read or Write - while ((this_char = strsep(&ptr, ",")) != NULL) - { - i++; - DBGPRINT(RT_DEBUG_TRACE, "this_char=%s\n", this_char); - if (!*this_char) - continue; - - if ((value = rtstrchr(this_char, '=')) != NULL) - *value++ = 0; - - if (!value || !*value) - { //Read - DBGPRINT(RT_DEBUG_TRACE, "this_char=%s, value=%s\n", this_char, value); - bbpId = simple_strtol(this_char, 0, 10); - if ((bbpId >=0) && (bbpId <= 63)) - { - RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, bbpId, ®BBP); - sprintf(msg+strlen(msg), "R%02d[0x%02X]:%02X ", bbpId, bbpId*2, regBBP); - count++; - if (count%5 == 4) - sprintf(msg+strlen(msg), "\n"); - DBGPRINT(RT_DEBUG_TRACE, "msg=%s\n", msg); - } - else - {//Invalid parametes, so default print all bbp - bIsPrintAllBBP = TRUE; - break; - } - } - else - { //Write - DBGPRINT(RT_DEBUG_TRACE, "this_char=%s, value=%s\n", this_char, value); - bbpId = simple_strtol(this_char, 0, 10); - bbpValue = simple_strtol(value, 0, 10); - DBGPRINT(RT_DEBUG_TRACE, "bbpID=%02d, value=0x%x\n", bbpId, bbpValue); - if ((bbpId >=0) && (bbpId <= 63)) - { - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, (UCHAR) bbpId, (UCHAR) bbpValue); - //Read it back for showing - RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, bbpId, ®BBP); - sprintf(msg+strlen(msg), "R%02d[0x%02X]:%02X ", bbpId, bbpId*2, regBBP); - count++; - if (count%5 == 4) - sprintf(msg+strlen(msg), "\n"); - DBGPRINT(RT_DEBUG_TRACE, "msg=%s\n", msg); - } - else - {//Invalid parametes, so default print all bbp - bIsPrintAllBBP = TRUE; - break; - } - } - } - } - else - bIsPrintAllBBP = TRUE; - - if (bIsPrintAllBBP) - { - memset(msg, 0x00, 1024); - sprintf(msg, "\n"); - for (i = 0; i <= 63; i++) - { - RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, i, ®BBP); - sprintf(msg+strlen(msg), "R%02d[0x%02X]:%02X ", i, i*2, regBBP); - if (i%5 == 4) - sprintf(msg+strlen(msg), "\n"); - } - // Copy the information into the user buffer - wrq->u.data.length = strlen(msg); - if(copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length)) - DBGPRINT(RT_DEBUG_ERROR, "RTMPIoctlBBP - copy to user failure\n"); - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "copy to user [msg=%s]\n", msg); - // Copy the information into the user buffer - wrq->u.data.length = strlen(msg); - if(copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length)) - DBGPRINT(RT_DEBUG_ERROR, "RTMPIoctlBBP - copy to user failure\n"); - } - DBGPRINT(RT_DEBUG_TRACE, "<==RTMPIoctlBBP\n"); -} - -/* - ========================================================================== - Description: - Read / Write MAC -Arguments: - pAdapter Pointer to our adapter - wrq Pointer to the ioctl argument - - Return Value: - None - - Note: - Usage: - 1.) iwpriv ra0 mac 0 ==> read MAC where Addr=0x0 - 2.) iwpriv ra0 mac 0=12 ==> write MAC where Addr=0x0, value=12 - ========================================================================== -*/ -VOID RTMPIoctlMAC( - IN PRTMP_ADAPTER pAdapter, - IN struct iwreq *wrq) -{ - char *this_char; - char *value; - int j=0, k=0; - int count = 0; - char msg[1024]; - char arg[255]; - char *ptr; - ULONG macAddr = 0; - UCHAR temp[16], temp2[16]; - ULONG macValue; - - DBGPRINT(RT_DEBUG_TRACE, "==>RTMPIoctlMAC\n"); - memset(msg, 0x00, 1024); - if (wrq->u.data.length > 1) //No parameters. - { - memcpy(arg, wrq->u.data.pointer, (wrq->u.data.length > 255) ? 255 : wrq->u.data.length); - ptr = arg; - sprintf(msg, "\n"); - //Parsing Read or Write - while ((this_char = strsep(&ptr, ",")) != NULL) - { - DBGPRINT(RT_DEBUG_TRACE, "this_char=%s\n", this_char); - if (!*this_char) - continue; - - if ((value = rtstrchr(this_char, '=')) != NULL) - *value++ = 0; - - if (!value || !*value) - { //Read - // Sanity check - if(strlen(this_char) > 4) - break; - - j = strlen(this_char); - while(j-- > 0) - { - if(this_char[j] > 'f' || this_char[j] < '0') - return; - } - - // Mac Addr - k = j = strlen(this_char); - while(j-- > 0) - { - this_char[4-k+j] = this_char[j]; - } - - while(k < 4) - this_char[3-k++]='0'; - this_char[4]='\0'; - - if(strlen(this_char) == 4) - { - AtoH(this_char, temp, 4); - macAddr = *temp*256 + temp[1]; - if (macAddr < 0xFFFF) - { - RTMP_IO_READ32(pAdapter, macAddr, &macValue); - DBGPRINT(RT_DEBUG_TRACE, "macAddr=%x, regMAC=%x\n", macAddr, macValue); - sprintf(msg+strlen(msg), "[0x%08X]:%08X ", macAddr , macValue); - count++; - if (count%5 == 4) - sprintf(msg+strlen(msg), "\n"); - DBGPRINT(RT_DEBUG_TRACE, "msg=%s\n", msg); - } - else - {//Invalid parametes, so default print all bbp - break; - } - } - } - else - { //Write - memcpy(&temp2, value, strlen(value)); - temp2[strlen(value)] = '\0'; - - // Sanity check - if((strlen(this_char) > 4) || strlen(temp2) > 8) - break; - - j = strlen(this_char); - while(j-- > 0) - { - if(this_char[j] > 'f' || this_char[j] < '0') - return; - } - - j = strlen(temp2); - while(j-- > 0) - { - if(temp2[j] > 'f' || temp2[j] < '0') - return; - } - - //MAC Addr - k = j = strlen(this_char); - while(j-- > 0) - { - this_char[4-k+j] = this_char[j]; - } - - while(k < 4) - this_char[3-k++]='0'; - this_char[4]='\0'; - - //MAC value - k = j = strlen(temp2); - while(j-- > 0) - { - temp2[8-k+j] = temp2[j]; - } - - while(k < 8) - temp2[7-k++]='0'; - temp2[8]='\0'; - - { - AtoH(this_char, temp, 4); - macAddr = *temp*256 + temp[1]; - - AtoH(temp2, temp, 8); - macValue = *temp*256*256*256 + temp[1]*256*256 + temp[2]*256 + temp[3]; - - DBGPRINT(RT_DEBUG_TRACE, "macAddr=%02x, macValue=0x%x\n", macAddr, macValue); - - RTMP_IO_WRITE32(pAdapter, macAddr, macValue); - sprintf(msg+strlen(msg), "[0x%02X]:%02X ", macAddr, macValue); - count++; - if (count%5 == 4) - sprintf(msg+strlen(msg), "\n"); - DBGPRINT(RT_DEBUG_TRACE, "msg=%s\n", msg); - } - } - } - } - - if(strlen(msg) == 1) - sprintf(msg+strlen(msg), "===>Error command format!"); - DBGPRINT(RT_DEBUG_TRACE, "copy to user [msg=%s]\n", msg); - // Copy the information into the user buffer - wrq->u.data.length = strlen(msg); - if(copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length)) - DBGPRINT(RT_DEBUG_ERROR, "RTMPIoctlMAC - copy to user failure.\n"); - - DBGPRINT(RT_DEBUG_TRACE, "<==RTMPIoctlMAC\n"); -} - -#ifdef RALINK_ATE - -/* - ========================================================================== - Description: - Read / Write E2PROM -Arguments: - pAdapter Pointer to our adapter - wrq Pointer to the ioctl argument - - Return Value: - None - - Note: - Usage: - 1.) iwpriv ra0 e2p 0 ==> read E2PROM where Addr=0x0 - 2.) iwpriv ra0 e2p 0=1234 ==> write E2PROM where Addr=0x0, value=1234 - ========================================================================== -*/ -VOID RTMPIoctlE2PROM( - IN PRTMP_ADAPTER pAdapter, - IN struct iwreq *wrq) -{ - char *this_char; - char *value; - int j=0, k=0; - int count = 0; - char msg[1024]; - char arg[255]; - char *ptr; - USHORT eepAddr = 0; - UCHAR temp[16], temp2[16]; - USHORT eepValue; - - DBGPRINT(RT_DEBUG_TRACE, "==>RTMPIoctlE2PROM\n"); - memset(msg, 0x00, 1024); - if (wrq->u.data.length > 1) //No parameters. - { - memcpy(arg, wrq->u.data.pointer, (wrq->u.data.length > 255) ? 255 : wrq->u.data.length); - ptr = arg; - sprintf(msg, "\n"); - //Parsing Read or Write - while ((this_char = strsep(&ptr, ",")) != NULL) - { - DBGPRINT(RT_DEBUG_TRACE, "this_char=%s\n", this_char); - if (!*this_char) - continue; - - if ((value = strchr(this_char, '=')) != NULL) - *value++ = 0; - - if (!value || !*value) - { //Read - DBGPRINT(RT_DEBUG_TRACE, "Read: this_char=%s, strlen=%d\n", this_char, strlen(this_char)); - - // Sanity check - if(strlen(this_char) > 4) - break; - - j = strlen(this_char); - while(j-- > 0) - { - if(this_char[j] > 'f' || this_char[j] < '0') - return; - } - - // E2PROM addr - k = j = strlen(this_char); - while(j-- > 0) - { - this_char[4-k+j] = this_char[j]; - } - - while(k < 4) - this_char[3-k++]='0'; - this_char[4]='\0'; - - if(strlen(this_char) == 4) - { - AtoH(this_char, temp, 4); - eepAddr = *temp*256 + temp[1]; - if (eepAddr < 0xFFFF) - { - eepValue = RTMP_EEPROM_READ16(pAdapter, eepAddr); - DBGPRINT(RT_DEBUG_TRACE, "eepAddr=%x, eepValue=%x\n", eepAddr, eepValue); - sprintf(msg+strlen(msg), "[0x%04X]:%04X ", eepAddr , eepValue); - count++; - if (count%5 == 4) - sprintf(msg+strlen(msg), "\n"); - DBGPRINT(RT_DEBUG_TRACE, "msg=%s\n", msg); - } - else - {//Invalid parametes, so default printk all bbp - break; - } - } - } - else - { //Write - DBGPRINT(RT_DEBUG_TRACE, "Write: this_char=%s, strlen(value)=%d, value=%s\n", this_char, strlen(value), value); - memcpy(&temp2, value, strlen(value)); - temp2[strlen(value)] = '\0'; - - // Sanity check - if((strlen(this_char) > 4) || strlen(temp2) > 8) - break; - - j = strlen(this_char); - while(j-- > 0) - { - if(this_char[j] > 'f' || this_char[j] < '0') - return; - } - j = strlen(temp2); - while(j-- > 0) - { - if(temp2[j] > 'f' || temp2[j] < '0') - return; - } - - //MAC Addr - k = j = strlen(this_char); - while(j-- > 0) - { - this_char[4-k+j] = this_char[j]; - } - - while(k < 4) - this_char[3-k++]='0'; - this_char[4]='\0'; - - //MAC value - k = j = strlen(temp2); - while(j-- > 0) - { - temp2[4-k+j] = temp2[j]; - } - - while(k < 4) - temp2[3-k++]='0'; - temp2[4]='\0'; - - AtoH(this_char, temp, 4); - eepAddr = *temp*256 + temp[1]; - - AtoH(temp2, temp, 4); - eepValue = *temp*256 + temp[1]; - - DBGPRINT(RT_DEBUG_TRACE, "eepAddr=%02x, eepValue=0x%x\n", eepAddr, eepValue); - - RTMP_EEPROM_WRITE16(pAdapter, eepAddr, eepValue); - sprintf(msg+strlen(msg), "[0x%02X]:%02X ", eepAddr, eepValue); - count++; - if (count%5 == 4) - sprintf(msg+strlen(msg), "\n"); - DBGPRINT(RT_DEBUG_TRACE, "msg=%s\n", msg); - } - } - } - - if(strlen(msg) == 1) - sprintf(msg+strlen(msg), "===>Error command format!"); - - // Copy the information into the user buffer - DBGPRINT(RT_DEBUG_TRACE, "copy to user [msg=%s]\n", msg); - wrq->u.data.length = strlen(msg); - copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length); - - DBGPRINT(RT_DEBUG_TRACE, "<==RTMPIoctlE2PROM\n"); -} - -UCHAR TempletFrame[24] = {0x08,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xAA,0xBB,0x12,0x34,0x56,0x00,0x11,0x22,0xAA,0xBB,0xCC,0x00,0x00}; // 802.11 MAC Header, Type:Data, Length:24bytes - -/* - ========================================================================== - Description: - Set ATE operation mode to - 0. APSTOP = Stop STA Mode - 1. APSTART = Start STA Mode - 2. TXCONT = Continuous Transmit - 3. TXCARR = Transmit Carrier - 4. TXFRAME = Transmit Frames - 5. RXFRAME = Receive Frames - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_ATE_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - USHORT BbpData; - ULONG MacData; - PTXD_STRUC pTxD; - PUCHAR pDest; - UINT i, j; - - DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_Proc (arg = %s)\n", arg); - - mdelay(5); - - AsicSwitchChannel(pAdapter, pAdapter->ate.Channel); - AsicLockChannel(pAdapter, pAdapter->ate.Channel); - - mdelay(5); - - RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, 63, &BbpData); - RTMP_IO_READ32(pAdapter, MACCSR1, &MacData); - - BbpData = 0; - MacData &= 0xFBFFFFFF; - - if (!strcmp(arg, "STASTOP")) - { - DBGPRINT(RT_DEBUG_TRACE, "ATE: STASTOP\n"); - - RTMP_IO_WRITE32(pAdapter, MACCSR1, MacData); - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, 63, BbpData); - - pAdapter->ate.Mode = ATE_STASTOP; - - LinkDown(pAdapter); - AsicEnableBssSync(pAdapter); - netif_stop_queue(pAdapter->net_dev); - RTMPStationStop(pAdapter); - RTMP_IO_WRITE32(pAdapter, RXCSR0, 0xffffffff); // Stop Rx - } - else if (!strcmp(arg, "STASTART")) - { - DBGPRINT(RT_DEBUG_TRACE, "ATE: STASTART\n"); - - RTMP_IO_WRITE32(pAdapter, MACCSR1, MacData); - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, 63, BbpData); - - pAdapter->ate.Mode = ATE_STASTART; - - RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x56); // Start Rx - netif_start_queue(pAdapter->net_dev); - RTMPStationStart(pAdapter); - } - else if (!strcmp(arg, "TXCONT")) // Continuous Tx - { - DBGPRINT(RT_DEBUG_TRACE, "ATE: TXCONT\n"); - - pAdapter->ate.Mode = ATE_TXCONT; - - BbpData |= 0x80; - MacData |= 0x04000000; - - RTMP_IO_WRITE32(pAdapter, MACCSR1, MacData); - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, 63, BbpData); - - for (i = 0; (i < TX_RING_SIZE) && (i < pAdapter->ate.TxCount); i++) - { - pTxD = (PTXD_STRUC)pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; - pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; - - // Prepare frame payload - memcpy(pDest, &TempletFrame, LENGTH_802_11); - for(j = LENGTH_802_11; j < pAdapter->ate.TxLength; j++) - pDest[j] = 0xAA; - memcpy(&pDest[4], &pAdapter->ate.Addr1, ETH_LENGTH_OF_ADDRESS); - memcpy(&pDest[10], &pAdapter->ate.Addr2, ETH_LENGTH_OF_ADDRESS); - memcpy(&pDest[16], &pAdapter->ate.Addr3, ETH_LENGTH_OF_ADDRESS); - - RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, - SHORT_RETRY, IFS_BACKOFF, pAdapter->ate.TxRate, 4, - pAdapter->ate.TxLength, pAdapter->PortCfg.TxPreambleInUsed, 0); - - pAdapter->CurEncryptIndex++; - if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) - { - pAdapter->CurEncryptIndex = 0; - } - } - - RTMP_IO_WRITE32(pAdapter, RXCSR0, 0xffffffff); - RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); - } - else if (!strcmp(arg, "TXCARR")) // Tx Carrier ------------------------------------- - { - DBGPRINT(RT_DEBUG_TRACE, "ATE: TXCARR\n"); - pAdapter->ate.Mode = ATE_TXCARR; - - BbpData |= 0x40; - MacData |= 0x04000000; - - RTMP_IO_WRITE32(pAdapter, MACCSR1, MacData); - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, 63, BbpData); - - for (i = 0; (i < TX_RING_SIZE) && (i < pAdapter->ate.TxCount); i++) - { - pTxD = (PTXD_STRUC)pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; - pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; - - // Prepare frame payload - memcpy(pDest, &TempletFrame, LENGTH_802_11); - for(j = LENGTH_802_11; j < pAdapter->ate.TxLength; j++) - pDest[j] = 0xAA; - memcpy(&pDest[4], &pAdapter->ate.Addr1, ETH_LENGTH_OF_ADDRESS); - memcpy(&pDest[10], &pAdapter->ate.Addr2, ETH_LENGTH_OF_ADDRESS); - memcpy(&pDest[16], &pAdapter->ate.Addr3, ETH_LENGTH_OF_ADDRESS); - - RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, - SHORT_RETRY, IFS_BACKOFF, pAdapter->ate.TxRate, 4, - pAdapter->ate.TxLength, pAdapter->PortCfg.TxPreambleInUsed, 0); - - pAdapter->CurEncryptIndex++; - if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) - { - pAdapter->CurEncryptIndex = 0; - } - } - - RTMP_IO_WRITE32(pAdapter, RXCSR0, 0xffffffff); - RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); - } - else if (!strcmp(arg, "TXFRAME")) // Tx Frames -------------------------------------- - { - DBGPRINT(RT_DEBUG_TRACE, "ATE: TXFRAME(Count=%d)\n", pAdapter->ate.TxCount); - pAdapter->ate.Mode = ATE_TXFRAME; - - RTMP_IO_WRITE32(pAdapter, MACCSR1, MacData); - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, 63, BbpData); - - pAdapter->ate.TxDoneCount = 0; - - for (i = 0; (i < TX_RING_SIZE) && (i < pAdapter->ate.TxCount); i++) - { - pTxD = (PTXD_STRUC)pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; - pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; - - // Prepare frame payload - memcpy(pDest, &TempletFrame, LENGTH_802_11); - for(j = LENGTH_802_11; j < pAdapter->ate.TxLength; j++) - pDest[j] = 0xAA; - memcpy(&pDest[4], &pAdapter->ate.Addr1, ETH_LENGTH_OF_ADDRESS); - memcpy(&pDest[10], &pAdapter->ate.Addr2, ETH_LENGTH_OF_ADDRESS); - memcpy(&pDest[16], &pAdapter->ate.Addr3, ETH_LENGTH_OF_ADDRESS); - - RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, - SHORT_RETRY, IFS_BACKOFF, pAdapter->ate.TxRate, 4, - pAdapter->ate.TxLength, Rt802_11PreambleLong, 0); - - pAdapter->CurEncryptIndex++; - if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) - { - pAdapter->CurEncryptIndex = 0; - } - } - pAdapter->ate.TxDoneCount += i; - DBGPRINT(RT_DEBUG_TRACE, "TXFRAME txcount=%d\n", pAdapter->ate.TxCount); - DBGPRINT(RT_DEBUG_TRACE, "pAdapter->ate.TxDoneCount = %d\n", pAdapter->ate.TxDoneCount); - - RTMP_IO_WRITE32(pAdapter, RXCSR0, 0xffffffff); - RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); - } - else if (!strcmp(arg, "RXFRAME")) // Rx Frames -------------------------------------- - { - DBGPRINT(RT_DEBUG_TRACE, "ATE: RXFRAME\n"); - - RTMP_IO_WRITE32(pAdapter, MACCSR1, MacData); - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, 63, BbpData); - - pAdapter->ate.Mode = ATE_RXFRAME; - pAdapter->ate.TxDoneCount = pAdapter->ate.TxCount; - - RTMP_IO_WRITE32(pAdapter, TXCSR0, 0x08); // Abort Tx - RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x56); // Start Rx - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "ATE: Invalid arg!\n"); - return FALSE; - } - - mdelay(5); - - DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_Proc\n"); - return TRUE; -} - -/* - ========================================================================== - Description: - Set ATE ADDR1=DA for TxFrames Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_ATE_DA_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - char *value; - int i; - - DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_DA_Proc\n"); - DBGPRINT(RT_DEBUG_TRACE, "arg=%s\n", arg); - - if(strlen(arg) != 17) //Mac address acceptable format 01:02:03:04:05:06 length 17 - return FALSE; - - for (i=0, value = strtok(arg,":"); value; value = strtok(NULL,":")) - { - if((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))) ) - return FALSE; //Invalid - - AtoH(value, &pAdapter->ate.Addr1[i++], 2); - } - - if(i != 6) - return FALSE; //Invalid - - DBGPRINT(RT_DEBUG_TRACE, "DA=%2X:%2X:%2X:%2X:%2X:%2X\n", pAdapter->ate.Addr1[0], pAdapter->ate.Addr1[1], pAdapter->ate.Addr1[2], pAdapter->ate.Addr1[3], pAdapter->ate.Addr1[4], pAdapter->ate.Addr1[5]); - DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_DA_Proc\n"); - - return TRUE; -} - -/* - ========================================================================== - Description: - Set ATE ADDR2=SA for TxFrames Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_ATE_SA_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - char *value; - int i; - - DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_SA_Proc\n"); - DBGPRINT(RT_DEBUG_TRACE, "arg=%s\n", arg); - - if(strlen(arg) != 17) //Mac address acceptable format 01:02:03:04:05:06 length 17 - return FALSE; - - for (i=0, value = strtok(arg,":"); value; value = strtok(NULL,":")) - { - if((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))) ) - return FALSE; //Invalid - - AtoH(value, &pAdapter->ate.Addr2[i++], 2); - } - - if(i != 6) - return FALSE; //Invalid - - DBGPRINT(RT_DEBUG_TRACE, "DA=%2X:%2X:%2X:%2X:%2X:%2X\n", pAdapter->ate.Addr2[0], pAdapter->ate.Addr2[1], pAdapter->ate.Addr2[2], pAdapter->ate.Addr2[3], pAdapter->ate.Addr2[4], pAdapter->ate.Addr2[5]); - DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_SA_Proc\n"); - - return TRUE; -} - -/* - ========================================================================== - Description: - Set ATE ADDR3=BSSID for TxFrames Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_ATE_BSSID_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - char *value; - int i; - - DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_BSSID_Proc\n"); - DBGPRINT(RT_DEBUG_TRACE, "arg=%s\n", arg); - - if(strlen(arg) != 17) //Mac address acceptable format 01:02:03:04:05:06 length 17 - return FALSE; - - for (i=0, value = strtok(arg,":"); value; value = strtok(NULL,":")) - { - if((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))) ) - return FALSE; //Invalid - - AtoH(value, &pAdapter->ate.Addr3[i++], 2); - } - - if(i != 6) - return FALSE; //Invalid - - DBGPRINT(RT_DEBUG_TRACE, "DA=%2X:%2X:%2X:%2X:%2X:%2X\n", pAdapter->ate.Addr3[0], pAdapter->ate.Addr3[1], pAdapter->ate.Addr3[2], pAdapter->ate.Addr3[3], pAdapter->ate.Addr3[4], pAdapter->ate.Addr3[5]); - DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_BSSID_Proc\n"); - - return TRUE; -} - -/* - ========================================================================== - Description: - Set ATE Channel Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_ATE_CHANNEL_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_CHANNEL_Proc (arg = %s)\n", arg); - - pAdapter->ate.Channel = simple_strtol(arg, 0, 10); - if((pAdapter->ate.Channel < 1) || (pAdapter->ate.Channel > 14)) - { - pAdapter->ate.Channel = 1; - return FALSE; - } - - DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_CHANNEL_Proc (ATE Channel = %d)\n", pAdapter->ate.Channel); - - return TRUE; -} - -/* - ========================================================================== - Description: - Set ATE Tx Power Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_ATE_TX_POWER_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - ULONG R3; - - DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_TX_POWER_Proc\n"); - DBGPRINT(RT_DEBUG_TRACE, "arg=%s\n", arg); - - pAdapter->ate.TxPower = simple_strtol(arg, 0, 10); - - if(pAdapter->ate.TxPower >= 32) - { - pAdapter->ate.TxPower = pAdapter->PortCfg.ChannelTxPower[pAdapter->PortCfg.Channel - 1];; - return FALSE; - } - - R3 = pAdapter->ate.TxPower; - R3 = R3 << 9; // shift TX power control to correct RF register bit position - - R3 |= (pAdapter->PortCfg.LatchRfRegs.R3 & 0xffffc1ff); - RTMP_RF_IO_WRITE32(pAdapter, R3); - - DBGPRINT(RT_DEBUG_TRACE, "TxPower = %d\n", pAdapter->ate.TxPower); - DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_TX_POWER_Proc\n"); - - return TRUE; -} - -/* - ========================================================================== - Description: - Set ATE Tx Length Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_ATE_TX_LENGTH_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_TX_LENGTH_Proc\n"); - DBGPRINT(RT_DEBUG_TRACE, "arg=%s\n", arg); - - pAdapter->ate.TxLength = simple_strtol(arg, 0, 10); - - if((pAdapter->ate.TxLength < 24) || (pAdapter->ate.TxLength > 1500)) - { - pAdapter->ate.TxLength = 1500; - return FALSE; - } - - DBGPRINT(RT_DEBUG_TRACE, "TxLength = %d\n", pAdapter->ate.TxLength); - DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_TX_LENGTH_Proc\n"); - - return TRUE; -} - -/* - ========================================================================== - Description: - Set ATE Tx Count Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_ATE_TX_COUNT_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_TX_COUNT_Proc\n"); - DBGPRINT(RT_DEBUG_TRACE, "arg=%s\n", arg); - - pAdapter->ate.TxCount = simple_strtol(arg, 0, 10); - - DBGPRINT(RT_DEBUG_TRACE, "TxCount = %d\n", pAdapter->ate.TxCount); - DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_TX_COUNT_Proc\n"); - - return TRUE; -} - -/* - ========================================================================== - Description: - Set ATE Tx Rate - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== -*/ -INT Set_ATE_TX_RATE_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg) -{ - DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_TX_RATE_Proc\n"); - DBGPRINT(RT_DEBUG_TRACE, "arg=%s\n", arg); - - pAdapter->ate.TxRate = simple_strtol(arg, 0, 10); - - if(pAdapter->ate.TxRate > RATE_54) - { - pAdapter->ate.TxRate = RATE_11; - return FALSE; - } - - DBGPRINT(RT_DEBUG_TRACE, "TxRate = %d\n", pAdapter->ate.TxRate); - DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_TX_RATE_Proc\n"); - - return TRUE; -} - -VOID RTMPStationStop( - IN PRTMP_ADAPTER pAd) -{ - DBGPRINT(RT_DEBUG_TRACE, "==> RTMPStationStop\n"); - RTMPCancelTimer(&pAd->timer); - RTMPCancelTimer(&pAd->Mlme.AssocAux.AssocTimer); - RTMPCancelTimer(&pAd->Mlme.AssocAux.ReassocTimer); - RTMPCancelTimer(&pAd->Mlme.AssocAux.DisassocTimer); - RTMPCancelTimer(&pAd->Mlme.AuthAux.AuthTimer); - RTMPCancelTimer(&pAd->Mlme.AuthRspAux.AuthRspTimer); - RTMPCancelTimer(&pAd->Mlme.SyncAux.BeaconTimer); - RTMPCancelTimer(&pAd->Mlme.SyncAux.ScanTimer); - RTMPCancelTimer(&pAd->Mlme.PeriodicTimer); - RTMPCancelTimer(&pAd->PortCfg.RfTuningTimer); - if (pAd->PortCfg.LedMode == LED_MODE_TXRX_ACTIVITY) - RTMPCancelTimer(&pAd->PortCfg.LedCntl.BlinkTimer); - RTMPCancelTimer(&pAd->PortCfg.RxAnt.RxAntDiversityTimer); - DBGPRINT(RT_DEBUG_TRACE, "<== RTMPStationStop\n"); -} - -VOID RTMPStationStart( - IN PRTMP_ADAPTER pAd) -{ - DBGPRINT(RT_DEBUG_TRACE, "==> RTMPStationStart\n"); - RTMPSetTimer(pAd, &pAd->Mlme.PeriodicTimer, MLME_TASK_EXEC_INTV); - //RTMPSetTimer(pAd, &pAd->timer, DEBUG_TASK_DELAY); //not used. - DBGPRINT(RT_DEBUG_TRACE, "<== RTMPStationStart\n"); -} - -#endif //#ifdef RALINK_ATE - - +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: rtmp_info.c + * + * Abstract: IOCTL related subroutines + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * RoryC 3rd Jan 03 Initial code + * MarkW 8th Dec 04 Baseline code + * RobinC 10th Dec 04 RFMON Support + * MarkW 10th Dec 04 Rolled in Ralink 1.4.5.0 + * MarkW 15th Dec 04 Removed debug iwpriv + * RobinC 16th Dec 04 Fix for range values + * RobinC 16th Dec 04 support ifpreup scripts + * RobinC 17th Dec 04 Link Quality reporting + * MarkW 17th Dec 04 iwconfig frequency fix + * MarkW 17th Dec 04 Monitor mode through iwconfig + * MarkW 22nd Dec 04 RSSI reporting for iwlist scanning + * MarkW 31st Jan 05 if pre-up fix for RaConfig + * LuisCorreia 23rd Feb 05 fix unknown IOCTL's + * MarkW 9th Mar 05 Quality reporting in scan for current + * MarkW 9th Jun 05 Fix channel change for ADHOC mode + ***************************************************************************/ + +#include "rt_config.h" +#include + +#ifndef IW_ESSID_MAX_SIZE +/* Maximum size of the ESSID and NICKN strings */ +#define IW_ESSID_MAX_SIZE 32 +#endif + +#define NR_WEP_KEYS 4 +#define WEP_SMALL_KEY_LEN (40/8) +#define WEP_LARGE_KEY_LEN (104/8) + +#define MAP_CHANNEL_ID_TO_KHZ(ch, khz) { \ + switch (ch) \ + { \ + case 1: khz = 2412000; break; \ + case 2: khz = 2417000; break; \ + case 3: khz = 2422000; break; \ + case 4: khz = 2427000; break; \ + case 5: khz = 2432000; break; \ + case 6: khz = 2437000; break; \ + case 7: khz = 2442000; break; \ + case 8: khz = 2447000; break; \ + case 9: khz = 2452000; break; \ + case 10: khz = 2457000; break; \ + case 11: khz = 2462000; break; \ + case 12: khz = 2467000; break; \ + case 13: khz = 2472000; break; \ + case 14: khz = 2484000; break; \ + case 36: /* UNII */ khz = 5180000; break; \ + case 40: /* UNII */ khz = 5200000; break; \ + case 44: /* UNII */ khz = 5220000; break; \ + case 48: /* UNII */ khz = 5240000; break; \ + case 52: /* UNII */ khz = 5260000; break; \ + case 56: /* UNII */ khz = 5280000; break; \ + case 60: /* UNII */ khz = 5300000; break; \ + case 64: /* UNII */ khz = 5320000; break; \ + case 149: /* UNII */ khz = 5745000; break; \ + case 153: /* UNII */ khz = 5765000; break; \ + case 157: /* UNII */ khz = 5785000; break; \ + case 161: /* UNII */ khz = 5805000; break; \ + case 100: /* HiperLAN2 */ khz = 5500000; break; \ + case 104: /* HiperLAN2 */ khz = 5520000; break; \ + case 108: /* HiperLAN2 */ khz = 5540000; break; \ + case 112: /* HiperLAN2 */ khz = 5560000; break; \ + case 116: /* HiperLAN2 */ khz = 5580000; break; \ + case 120: /* HiperLAN2 */ khz = 5600000; break; \ + case 124: /* HiperLAN2 */ khz = 5620000; break; \ + case 128: /* HiperLAN2 */ khz = 5640000; break; \ + case 132: /* HiperLAN2 */ khz = 5660000; break; \ + case 136: /* HiperLAN2 */ khz = 5680000; break; \ + case 140: /* HiperLAN2 */ khz = 5700000; break; \ + case 34: /* Japan MMAC */ khz = 5170000; break; \ + case 38: /* Japan MMAC */ khz = 5190000; break; \ + case 42: /* Japan MMAC */ khz = 5210000; break; \ + case 46: /* Japan MMAC */ khz = 5230000; break; \ + default: khz = 2412000; break; \ + } \ + } + +#define MAP_KHZ_TO_CHANNEL_ID(khz, ch) { \ + switch (khz) \ + { \ + case 2412000: ch = 1; break; \ + case 2417000: ch = 2; break; \ + case 2422000: ch = 3; break; \ + case 2427000: ch = 4; break; \ + case 2432000: ch = 5; break; \ + case 2437000: ch = 6; break; \ + case 2442000: ch = 7; break; \ + case 2447000: ch = 8; break; \ + case 2452000: ch = 9; break; \ + case 2457000: ch = 10; break; \ + case 2462000: ch = 11; break; \ + case 2467000: ch = 12; break; \ + case 2472000: ch = 13; break; \ + case 2484000: ch = 14; break; \ + case 5180000: ch = 36; /* UNII */ break; \ + case 5200000: ch = 40; /* UNII */ break; \ + case 5220000: ch = 44; /* UNII */ break; \ + case 5240000: ch = 48; /* UNII */ break; \ + case 5260000: ch = 52; /* UNII */ break; \ + case 5280000: ch = 56; /* UNII */ break; \ + case 5300000: ch = 60; /* UNII */ break; \ + case 5320000: ch = 64; /* UNII */ break; \ + case 5745000: ch = 149; /* UNII */ break; \ + case 5765000: ch = 153; /* UNII */ break; \ + case 5785000: ch = 157; /* UNII */ break; \ + case 5805000: ch = 161; /* UNII */ break; \ + case 5500000: ch = 100; /* HiperLAN2 */ break; \ + case 5520000: ch = 104; /* HiperLAN2 */ break; \ + case 5540000: ch = 108; /* HiperLAN2 */ break; \ + case 5560000: ch = 112; /* HiperLAN2 */ break; \ + case 5580000: ch = 116; /* HiperLAN2 */ break; \ + case 5600000: ch = 120; /* HiperLAN2 */ break; \ + case 5620000: ch = 124; /* HiperLAN2 */ break; \ + case 5640000: ch = 128; /* HiperLAN2 */ break; \ + case 5660000: ch = 132; /* HiperLAN2 */ break; \ + case 5680000: ch = 136; /* HiperLAN2 */ break; \ + case 5700000: ch = 140; /* HiperLAN2 */ break; \ + case 5170000: ch = 34; /* Japan MMAC */ break; \ + case 5190000: ch = 38; /* Japan MMAC */ break; \ + case 5210000: ch = 42; /* Japan MMAC */ break; \ + case 5230000: ch = 46; /* Japan MMAC */ break; \ + default: ch = 1; break; \ + } \ + } + +struct iw_priv_args privtab[] = { +{ RTPRIV_IOCTL_SET, + IW_PRIV_TYPE_CHAR | 1024, 0, + "set"}, +{ RTPRIV_IOCTL_BBP, + IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024, + "bbp"}, +{ RTPRIV_IOCTL_MAC, + IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024, + "mac"}, +{ RTPRIV_IOCTL_E2P, + IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024, + "e2p"}, +{ RTPRIV_IOCTL_RFMONTX, + IW_PRIV_TYPE_INT | 2, IW_PRIV_TYPE_CHAR | sizeof (char), + "rfmontx"} +}; + +static struct { + char *name; + int (*set_proc)(PRTMP_ADAPTER pAdapter, PUCHAR arg); +} *PRTMP_PRIVATE_SET_PROC, RTMP_PRIVATE_SUPPORT_PROC[] = { + {"CountryRegion", Set_CountryRegion_Proc }, + {"SSID", Set_SSID_Proc}, + {"WirelessMode", Set_WirelessMode_Proc}, + {"TxRate", Set_TxRate_Proc}, + {"AdhocOfdm", Set_AdhocModeRate_Proc}, + {"Channel", Set_Channel_Proc}, + {"BGProtection", Set_BGProtection_Proc}, + {"StaWithEtherBridge", Set_StaWithEtherBridge_Proc}, + {"TxPreamble", Set_TxPreamble_Proc}, + {"RTSThreshold", Set_RTSThreshold_Proc}, + {"FragThreshold", Set_FragThreshold_Proc}, + {"TxBurst", Set_TxBurst_Proc}, + {"TurboRate", Set_TurboRate_Proc}, + {"NetworkType", Set_NetworkType_Proc}, + {"AuthMode", Set_AuthMode_Proc}, + {"EncrypType", Set_EncrypType_Proc}, + {"DefaultKeyID", Set_DefaultKeyID_Proc}, + {"Key1", Set_Key1_Proc}, + {"Key2", Set_Key2_Proc}, + {"Key3", Set_Key3_Proc}, + {"Key4", Set_Key4_Proc}, + {"WPAPSK", Set_WPAPSK_Proc}, + {"WPANONE", Set_WPANONE_Proc}, + +#ifdef RALINK_ATE + {"ATE", Set_ATE_Proc }, // set ATE Mode to: STOP, TXCONT, TXCARR, TXFRAME, RXFRAME + {"ATEDA", Set_ATE_DA_Proc }, // set ATE TxFrames ADDR1, DA + {"ATESA", Set_ATE_SA_Proc }, // set ATE TxFrames ADDR2, SA + {"ATEBSSID", Set_ATE_BSSID_Proc }, // set ATE TxFrames ADDR3, BSSID + {"ATECHANNEL",Set_ATE_CHANNEL_Proc }, // set ATE Channel + {"ATETXPOW", Set_ATE_TX_POWER_Proc }, // set ATE TxPower + {"ATETXLEN", Set_ATE_TX_LENGTH_Proc}, // set ATE TxLength + {"ATETXCNT", Set_ATE_TX_COUNT_Proc }, // set ATE TxCount + {"ATETXRATE", Set_ATE_TX_RATE_Proc }, // set ATE TxRate +#endif //#ifdef RALINK_ATE + + {NULL,} +}; + +char * rtstrchr(const char * s, int c) +{ + for(; *s != (char) c; ++s) + if (*s == '\0') + return NULL; + return (char *) s; + } +/* +This is required for LinEX2004/kernel2.6.7 to provide iwlist scanning function +*/ +int rt_ioctl_giwrange(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *data, char *extra) +{ + PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) dev->priv; + struct iw_range *range = (struct iw_range *) extra; + u16 val; + int i,chan; + + DBGPRINT(RT_DEBUG_TRACE,"0. rtusb_ioctl_giwrange\n"); + data->length = sizeof(struct iw_range); + memset(range, 0, sizeof(struct iw_range)); + + range->txpower_capa = IW_TXPOW_DBM; + + if (INFRA_ON(pAdapter)||ADHOC_ON(pAdapter)) + { + range->min_pmp = 1 * 1024; + range->max_pmp = 65535 * 1024; + range->min_pmt = 1 * 1024; + range->max_pmt = 1000 * 1024; + range->pmp_flags = IW_POWER_PERIOD; + range->pmt_flags = IW_POWER_TIMEOUT; + range->pm_capa = IW_POWER_PERIOD | IW_POWER_TIMEOUT | + IW_POWER_UNICAST_R | IW_POWER_ALL_R; + } + + range->we_version_compiled = WIRELESS_EXT; + range->we_version_source = 14; + + range->retry_capa = IW_RETRY_LIMIT; + range->retry_flags = IW_RETRY_LIMIT; + range->min_retry = 0; + range->max_retry = 255; + + val = 0; + for (i = 0; i < 14; i++) { + chan = pAdapter->PortCfg.ChannelList[val]; + if (chan != 0) + { + range->freq[val].i = chan; + MAP_CHANNEL_ID_TO_KHZ(range->freq[val].i, range->freq[val].m); + range->freq[val].m*=100; + range->freq[val].e = 1; + val++; + } + } + + range->num_frequency = val; + range->num_channels = val; + + val = 0; + for (i = 0; i < pAdapter->PortCfg.SupportedRatesLen; i++) { + range->bitrate[i]=1000000*(pAdapter->PortCfg.SupportedRates[i] & 0x7f)/2; + val++; + if (val == IW_MAX_BITRATES) + break; + } + range->num_bitrates = val; + + range->max_qual.qual = 100; /* % sig quality*/ + + range->max_qual.level = 1; /* dB */ + range->max_qual.noise = 152; /* dB */ + range->max_qual.updated = 172; /* Updated all three */ + + /* What would be suitable values for "average/typical" qual? */ + range->avg_qual.qual = pAdapter->Mlme.ChannelQuality; + range->avg_qual.level = pAdapter->PortCfg.LastRssi; + range->avg_qual.noise = 0; + range->avg_qual.updated = 7; /* Updated all three */ + + range->sensitivity = -30; + + range->max_encoding_tokens = NR_WEP_KEYS; + range->num_encoding_sizes = 2; + range->encoding_size[0] = 5; + range->encoding_size[1] = 13; + +#if 0 + over2 = 0; + len = prism2_get_datarates(dev, rates); + range->num_bitrates = 0; + for (i = 0; i < len; i++) { + if (range->num_bitrates < IW_MAX_BITRATES) { + range->bitrate[range->num_bitrates] = + rates[i] * 500000; + range->num_bitrates++; + } + if (rates[i] == 0x0b || rates[i] == 0x16) + over2 = 1; + } + /* estimated maximum TCP throughput values (bps) */ + range->throughput = over2 ? 5500000 : 1500000; +#endif + range->min_rts = 0; + range->max_rts = 2347; + range->min_frag = 256; + range->max_frag = 2346; + + return 0; +} + +static int +rt_ioctl_setparam(struct net_device *dev, struct iw_request_info *info, + void *w, char *extra) +{ + PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) dev->priv; + char *this_char; + char *value; + int Status; + + while ((this_char = strsep(&extra, ",")) != NULL) + { + if (!*this_char) + continue; + + if ((value = rtstrchr(this_char, '=')) != NULL) + *value++ = 0; + + if (!value || !*value) + continue; + + for (PRTMP_PRIVATE_SET_PROC = RTMP_PRIVATE_SUPPORT_PROC; PRTMP_PRIVATE_SET_PROC->name; PRTMP_PRIVATE_SET_PROC++) + { + if (strcmp(this_char, PRTMP_PRIVATE_SET_PROC->name) == 0) + { + if(!PRTMP_PRIVATE_SET_PROC->set_proc(pAdapter, value)) + { //FALSE:Set private failed then return Invalid argument + Status = -EINVAL; + } + break; //Exit for loop. + } + } + + if(PRTMP_PRIVATE_SET_PROC->name == NULL) + { //Not found argument + Status = -EINVAL; + DBGPRINT(RT_DEBUG_TRACE, "ioctl::(iwpriv) Not Support Set Command [%s=%s]\n", this_char, value); + break; + } + } + return 0; +} + +static const iw_handler rt_priv_handlers[] = { + (iw_handler) rt_ioctl_setparam, /* SIOCWFIRSTPRIV+0 */ +}; + +#ifdef SIOCGIWSCAN +int rt_ioctl_siwscan(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *data, char *extra) +{ + ULONG Now; + PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) dev->priv; + int Status = NDIS_STATUS_SUCCESS; + BOOLEAN StateMachineTouched = FALSE; + if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) + return 0; + if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_MLME_INITIALIZED)) + return 0; + do{ + Now = jiffies; + + if ((pAdapter->MediaState == NdisMediaStateConnected) && + ((pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPA) || + (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPAPSK)) && + (pAdapter->PortCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED) + ) + { + DBGPRINT(RT_DEBUG_TRACE, "!!! Link UP, Port Not Secured! ignore this set::OID_802_11_BSSID_LIST_SCAN\n"); + Status = NDIS_STATUS_SUCCESS; + break; + } + + if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) + { + MlmeRestartStateMachine(pAdapter); + DBGPRINT(RT_DEBUG_TRACE, "!!! MLME busy, reset MLME state machine !!!\n"); + } + + // tell CNTL state machine to call NdisMSetInformationComplete() after completing + // this request, because this request is initiated by NDIS. + pAdapter->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; + // Reset Missed scan number + pAdapter->PortCfg.IgnoredScanNumber = 0; + pAdapter->PortCfg.LastScanTime = Now; + + MlmeEnqueue(&pAdapter->Mlme.Queue, + MLME_CNTL_STATE_MACHINE, + OID_802_11_BSSID_LIST_SCAN, + 0, + NULL); + + Status = NDIS_STATUS_SUCCESS; + StateMachineTouched = TRUE; + }while(0); + return 0; +} +int +rt_ioctl_giwscan(struct net_device *dev, + struct iw_request_info *info, + struct iw_point *data, char *extra) +{ + + PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) dev->priv; + int i=2, j; + char *current_ev = extra; + char *end_buf = extra + IW_SCAN_MAX_DATA; + char *current_val; + struct iw_event iwe; + + for (i = 0; i < pAdapter->PortCfg.BssTab.BssNr; i++) + { + if (current_ev >= end_buf) + break; + + //================================ + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = SIOCGIWAP; + iwe.u.ap_addr.sa_family = ARPHRD_ETHER; + memcpy(iwe.u.ap_addr.sa_data, &pAdapter->PortCfg.BssTab.BssEntry[i].Bssid, ETH_ALEN); + current_ev = iwe_stream_add_event(current_ev,end_buf, &iwe, IW_EV_ADDR_LEN); + //================================ + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = SIOCGIWMODE; + if (pAdapter->PortCfg.BssTab.BssEntry[i].BssType == Ndis802_11IBSS) + { + iwe.u.mode = IW_MODE_ADHOC; + } + else if (pAdapter->PortCfg.BssTab.BssEntry[i].BssType == Ndis802_11Infrastructure) + { + iwe.u.mode = IW_MODE_INFRA; + } + else + { + iwe.u.mode = IW_MODE_AUTO; + } + + iwe.len = IW_EV_UINT_LEN; + current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_UINT_LEN); + //================================ + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = SIOCGIWESSID; + iwe.u.data.length = pAdapter->PortCfg.BssTab.BssEntry[i].SsidLen; + iwe.u.data.flags = 1; + current_ev = iwe_stream_add_point(current_ev,end_buf, &iwe, pAdapter->PortCfg.BssTab.BssEntry[i].Ssid); + //================================ + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = SIOCGIWENCODE; + if (CAP_IS_PRIVACY_ON (pAdapter->PortCfg.BssTab.BssEntry[i].CapabilityInfo )) + iwe.u.data.flags =IW_ENCODE_ENABLED | IW_ENCODE_NOKEY; + else + iwe.u.data.flags = IW_ENCODE_DISABLED; + current_ev = iwe_stream_add_point(current_ev, end_buf,&iwe, pAdapter->PortCfg.BssTab.BssEntry[i].Ssid); + + //================================ + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = SIOCGIWRATE; + current_val = current_ev + IW_EV_LCP_LEN; + //for (j = 0; j < pAdapter->PortCfg.BssTab.BssEntry[i].RatesLen;j++) + for (j = 0; j < 1;j++) + { + iwe.u.bitrate.value = RateIdToMbps[pAdapter->PortCfg.BssTab.BssEntry[i].Rates[i]/2] * 1000000; + iwe.u.bitrate.disabled = 0; + current_val = iwe_stream_add_value(current_ev, + current_val, end_buf, &iwe, + IW_EV_PARAM_LEN); + } + //================================ + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = SIOCGIWFREQ; + if (INFRA_ON(pAdapter) || ADHOC_ON(pAdapter)) + iwe.u.freq.m = pAdapter->PortCfg.BssTab.BssEntry[i].Channel; + else + iwe.u.freq.m = pAdapter->PortCfg.BssTab.BssEntry[i].Channel; + iwe.u.freq.e = 0; + iwe.u.freq.i = 0; + current_ev = iwe_stream_add_event(current_ev,end_buf, &iwe, IW_EV_FREQ_LEN); + //================================ + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = IWEVQUAL; + if (memcmp(&pAdapter->PortCfg.BssTab.BssEntry[i].Bssid, &pAdapter->PortCfg.Bssid, ETH_ALEN) == 0) + iwe.u.qual.qual = pAdapter->Mlme.ChannelQuality; + else + iwe.u.qual.qual = 0; + iwe.u.qual.level = pAdapter->PortCfg.BssTab.BssEntry[i].Rssi - RSSI_TO_DBM_OFFSET; // signal level (dBm) + iwe.u.qual.noise = pAdapter->PortCfg.BssTab.BssEntry[i].Noise; + //iwe.u.qual.noise = (pAdapter->PortCfg.LastR17Value > BBP_R17_DYNAMIC_UP_BOUND) ? BBP_R17_DYNAMIC_UP_BOUND : ((ULONG) pAdapter->PortCfg.LastR17Value); // // noise level (dBm) + + current_ev = iwe_stream_add_event(current_ev,end_buf, &iwe, IW_EV_QUAL_LEN); + + + //================================ + memset(&iwe, 0, sizeof(iwe)); + } + data->length = current_ev - extra; + DBGPRINT(RT_DEBUG_TRACE,"rtusb_ioctl_giwscan. %d BSS returned\n",pAdapter->PortCfg.BssTab.BssNr); + return 0; +} +#endif +static const iw_handler rt_handler[] = +{ + (iw_handler) NULL, /* SIOCSIWCOMMIT */ + (iw_handler) NULL, /* SIOCGIWNAME 1 */ + (iw_handler) NULL, /* SIOCSIWNWID */ + (iw_handler) NULL, /* SIOCGIWNWID */ + (iw_handler) NULL, /* SIOCSIWFREQ */ + (iw_handler) NULL, /* SIOCGIWFREQ 5*/ + (iw_handler) NULL, /* SIOCSIWMODE */ + (iw_handler) NULL, /* SIOCGIWMODE */ + (iw_handler) NULL, /* SIOCSIWSENS */ + (iw_handler) NULL, /* SIOCGIWSENS */ + (iw_handler) NULL /* not used */, /* SIOCSIWRANGE */ + (iw_handler) rt_ioctl_giwrange, /* SIOCGIWRANGE 11 */ + (iw_handler) NULL /* not used */, /* SIOCSIWPRIV */ + (iw_handler) NULL /* kernel code */, /* SIOCGIWPRIV */ + (iw_handler) NULL /* not used */, /* SIOCSIWSTATS */ + (iw_handler) NULL /* kernel code */, /* SIOCGIWSTATS f*/ + (iw_handler) NULL, /* SIOCSIWSPY */ + (iw_handler) NULL, /* SIOCGIWSPY */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* SIOCSIWAP */ + (iw_handler) NULL, /* SIOCGIWAP 0x15*/ + (iw_handler) NULL, /* -- hole -- 0x16 */ + (iw_handler) NULL, /* SIOCGIWAPLIST */ +#ifdef SIOCGIWSCAN + (iw_handler) rt_ioctl_siwscan, /* SIOCSIWSCAN 0x18*/ + (iw_handler) rt_ioctl_giwscan, /* SIOCGIWSCAN */ +#else + (iw_handler) NULL, /* SIOCSIWSCAN */ + (iw_handler) NULL, /* SIOCGIWSCAN */ +#endif /* SIOCGIWSCAN */ + (iw_handler) NULL, /* SIOCSIWESSID */ + (iw_handler) NULL, /* SIOCGIWESSID */ + (iw_handler) NULL, /* SIOCSIWNICKN */ + (iw_handler) NULL, /* SIOCGIWNICKN 1d*/ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* SIOCSIWRATE 20*/ + (iw_handler) NULL, /* SIOCGIWRATE */ + (iw_handler) NULL, /* SIOCSIWRTS */ + (iw_handler) NULL, /* SIOCGIWRTS */ + (iw_handler) NULL, /* SIOCSIWFRAG */ + (iw_handler) NULL, /* SIOCGIWFRAG 25*/ + (iw_handler) NULL, /* SIOCSIWTXPOW */ + (iw_handler) NULL, /* SIOCGIWTXPOW */ + (iw_handler) NULL, /* SIOCSIWRETRY */ + (iw_handler) NULL, /* SIOCGIWRETRY 29*/ + (iw_handler) NULL, /* SIOCSIWENCODE 2a*/ + (iw_handler) NULL, /* SIOCGIWENCODE 2b*/ + (iw_handler) NULL, /* SIOCSIWPOWER 2c*/ + (iw_handler) NULL, /* SIOCGIWPOWER 2d*/ +}; + +const struct iw_handler_def rt2500_iw_handler_def = +{ +#define N(a) (sizeof (a) / sizeof (a[0])) + .standard = (iw_handler *) rt_handler, + .num_standard = sizeof(rt_handler) / sizeof(iw_handler), + .private = (iw_handler *) rt_priv_handlers, + .num_private = N(rt_priv_handlers), + .private_args = (struct iw_priv_args *) privtab, + .num_private_args = N(privtab), +#if WIRELESS_EXT > 16 + .get_wireless_stats = RT2500_get_wireless_stats, +#endif +#if WIRELESS_EXT > 15 +// .spy_offset = offsetof(struct hostap_interface, spy_data), +#endif /* WIRELESS_EXT > 15 */ +}; +INT RTMPSetInformation( + IN PRTMP_ADAPTER pAdapter, + IN OUT struct ifreq *rq, + IN INT cmd) +{ + struct iwreq *wrq = (struct iwreq *) rq; + NDIS_802_11_SSID Ssid, *pSsid=NULL; + NDIS_802_11_MAC_ADDRESS Bssid; + RT_802_11_PHY_MODE PhyMode; + RT_802_11_STA_CONFIG StaConfig; + NDIS_802_11_RATES aryRates; + RT_802_11_PREAMBLE Preamble; + NDIS_802_11_WEP_STATUS WepStatus; + NDIS_802_11_AUTHENTICATION_MODE AuthMode; + NDIS_802_11_NETWORK_INFRASTRUCTURE BssType; + NDIS_802_11_RTS_THRESHOLD RtsThresh; + NDIS_802_11_FRAGMENTATION_THRESHOLD FragThresh; + NDIS_802_11_POWER_MODE PowerMode; + NDIS_802_11_TX_POWER_LEVEL TxPowerLevel; + PNDIS_802_11_KEY pKey = NULL; + PNDIS_802_11_REMOVE_KEY pRemoveKey = NULL; + NDIS_802_11_CONFIGURATION Config, *pConfig = NULL; + ULONG Now; + ULONG KeyIdx; + INT Status = NDIS_STATUS_SUCCESS; + UCHAR CountryRegion; + BOOLEAN RadioState; + BOOLEAN StateMachineTouched = FALSE; + USHORT TxTotalCnt; + + switch(cmd & 0x7FFF) { + case RT_OID_802_11_COUNTRY_REGION: + if (wrq->u.data.length != sizeof(CountryRegion)) + Status = -EINVAL; + else + { + if(copy_from_user(&CountryRegion, wrq->u.data.pointer, wrq->u.data.length)) + Status = -EINVAL; + pAdapter->PortCfg.CountryRegion = CountryRegion; + BuildChannelList(pAdapter); + DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_COUNTRY_REGION (=%d) \n", pAdapter->PortCfg.CountryRegion); + } + break; + case OID_802_11_BSSID_LIST_SCAN: + Now = jiffies; + TxTotalCnt = pAdapter->DrsCounters.OneSecTxOkCount + + pAdapter->DrsCounters.OneSecTxRetryOkCount + + pAdapter->DrsCounters.OneSecTxFailCount; + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_BSSID_LIST_SCAN, TxCnt = %d \n", TxTotalCnt); + // For XP WZC, we will allow scan every 10 times, roughly 10 minutes. + // if ((Oid == OID_802_11_BSSID_LIST_SCAN) && + // (pAdapter->MediaState == NdisMediaStateConnected) && + // (pAdapter->PortCfg.IgnoredScanNumber < 10)) + if (TxTotalCnt > 100) + { + DBGPRINT(RT_DEBUG_TRACE, "!!! Link UP, ignore this set::OID_802_11_BSSID_LIST_SCAN\n"); + Status = NDIS_STATUS_SUCCESS; + pAdapter->PortCfg.IgnoredScanNumber++; + break; + } + + if ((pAdapter->MediaState == NdisMediaStateConnected) && + ((pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPA) || + (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPAPSK)) && + (pAdapter->PortCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED) + ) + { + DBGPRINT(RT_DEBUG_TRACE, "!!! Link UP, Port Not Secured! ignore this set::OID_802_11_BSSID_LIST_SCAN\n"); + Status = NDIS_STATUS_SUCCESS; + break; + } + + if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) + { + MlmeRestartStateMachine(pAdapter); + DBGPRINT(RT_DEBUG_TRACE, "!!! MLME busy, reset MLME state machine !!!\n"); + } + + // tell CNTL state machine to call NdisMSetInformationComplete() after completing + // this request, because this request is initiated by NDIS. + pAdapter->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; + // Reset Missed scan number + pAdapter->PortCfg.IgnoredScanNumber = 0; + pAdapter->PortCfg.LastScanTime = Now; + + MlmeEnqueue(&pAdapter->Mlme.Queue, + MLME_CNTL_STATE_MACHINE, + OID_802_11_BSSID_LIST_SCAN, + 0, + NULL); + + Status = NDIS_STATUS_SUCCESS; + StateMachineTouched = TRUE; + break; + case OID_802_11_SSID: + if (wrq->u.data.length != sizeof(NDIS_802_11_SSID)) + Status = -EINVAL; + else + { + if(copy_from_user(&Ssid, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + pSsid = &Ssid; + + if (pSsid->SsidLength > MAX_LEN_OF_SSID) + Status = -EINVAL; + else + { + if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) + { + MlmeRestartStateMachine(pAdapter); + DBGPRINT(RT_DEBUG_TRACE, "!!! MLME busy, reset MLME state machine !!!\n"); + } + // tell CNTL state machine to call NdisMSetInformationComplete() after completing + // this request, because this request is initiated by NDIS. + pAdapter->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; + + MlmeEnqueue(&pAdapter->Mlme.Queue, + MLME_CNTL_STATE_MACHINE, + OID_802_11_SSID, + sizeof(NDIS_802_11_SSID), + (VOID *)pSsid + ); + Status = NDIS_STATUS_SUCCESS; + StateMachineTouched = TRUE; + + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_SSID (Len=%d,Ssid=%s)\n", pSsid->SsidLength, pSsid->Ssid); + } + } + break; + case OID_802_11_BSSID: + if (wrq->u.data.length != sizeof(NDIS_802_11_MAC_ADDRESS)) + Status = -EINVAL; + else + { + if(copy_from_user(&Bssid, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + + if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) + { + MlmeRestartStateMachine(pAdapter); + DBGPRINT(RT_DEBUG_TRACE, "!!! MLME busy, reset MLME state machine !!!\n"); + } + + // tell CNTL state machine to call NdisMSetInformationComplete() after completing + // this request, because this request is initiated by NDIS. + pAdapter->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; + + MlmeEnqueue(&pAdapter->Mlme.Queue, + MLME_CNTL_STATE_MACHINE, + OID_802_11_BSSID, + sizeof(NDIS_802_11_MAC_ADDRESS), + (VOID *)&Bssid); + Status = NDIS_STATUS_SUCCESS; + StateMachineTouched = TRUE; + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_BSSID %02x:%02x:%02x:%02x:%02x:%02x\n", + Bssid[0], Bssid[1], Bssid[2], Bssid[3], Bssid[4], Bssid[5]); + } + break; + case RT_OID_802_11_RADIO: + if (wrq->u.data.length != sizeof(BOOLEAN)) + Status = -EINVAL; + else + { + if(copy_from_user(&RadioState, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_RADIO (=%d)\n", RadioState); + if (pAdapter->PortCfg.bSwRadio != RadioState) + { + pAdapter->PortCfg.bSwRadio = RadioState; + if (pAdapter->PortCfg.bRadio != (pAdapter->PortCfg.bHwRadio && pAdapter->PortCfg.bSwRadio)) + { + pAdapter->PortCfg.bRadio = (pAdapter->PortCfg.bHwRadio && pAdapter->PortCfg.bSwRadio); + if (pAdapter->PortCfg.bRadio == TRUE) + MlmeRadioOn(pAdapter); + else + MlmeRadioOff(pAdapter); + } + } + } + break; + case RT_OID_802_11_PHY_MODE: + if (wrq->u.data.length != sizeof(RT_802_11_PHY_MODE)) + Status = -EINVAL; + else + { + if(copy_from_user(&PhyMode, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + RTMPSetPhyMode(pAdapter, PhyMode); + DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_PHY_MODE (=%d)\n", PhyMode); + } + break; + case RT_OID_802_11_STA_CONFIG: + if (wrq->u.data.length != sizeof(RT_802_11_STA_CONFIG)) + Status = -EINVAL; + else + { + if(copy_from_user(&StaConfig, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + pAdapter->PortCfg.EnableTxBurst = StaConfig.EnableTxBurst; + pAdapter->PortCfg.EnableTurboRate = StaConfig.EnableTurboRate; + pAdapter->PortCfg.UseBGProtection = StaConfig.UseBGProtection; +// pAdapter->PortCfg.UseShortSlotTime = StaConfig.UseShortSlotTime; + pAdapter->PortCfg.UseShortSlotTime = 1; // 2003-10-30 always SHORT SLOT capable + if (pAdapter->PortCfg.AdhocMode != StaConfig.AdhocMode) + { + // allow dynamic change of "USE OFDM rate or not" in ADHOC mode + // if setting changed, need to reset current TX rate as well as BEACON frame format + pAdapter->PortCfg.AdhocMode = StaConfig.AdhocMode; + if (pAdapter->PortCfg.BssType == BSS_INDEP) + { + MlmeUpdateTxRates(pAdapter, FALSE); + MakeIbssBeacon(pAdapter); + } + } + DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_SET_STA_CONFIG (Burst=%d,72/100=%d,Protection=%d,ShortSlot=%d,OFDM in 11g Adhoc=%d\n", + pAdapter->PortCfg.EnableTxBurst, + pAdapter->PortCfg.EnableTurboRate, + pAdapter->PortCfg.UseBGProtection, + pAdapter->PortCfg.UseShortSlotTime, + pAdapter->PortCfg.AdhocMode); + } + break; + case OID_802_11_DESIRED_RATES: + if (wrq->u.data.length != sizeof(NDIS_802_11_RATES)) + Status = -EINVAL; + else + { + if(copy_from_user(&aryRates, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + memset(pAdapter->PortCfg.DesiredRates, 0, MAX_LEN_OF_SUPPORTED_RATES); + memcpy(pAdapter->PortCfg.DesiredRates, &aryRates, sizeof(NDIS_802_11_RATES)); + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_DESIRED_RATES (%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x)\n", + pAdapter->PortCfg.DesiredRates[0],pAdapter->PortCfg.DesiredRates[1], + pAdapter->PortCfg.DesiredRates[2],pAdapter->PortCfg.DesiredRates[3], + pAdapter->PortCfg.DesiredRates[4],pAdapter->PortCfg.DesiredRates[5], + pAdapter->PortCfg.DesiredRates[6],pAdapter->PortCfg.DesiredRates[7] ); + // Changing DesiredRate may affect the MAX TX rate we used to TX frames out + MlmeUpdateTxRates(pAdapter, FALSE); + } + break; + case RT_OID_802_11_PREAMBLE: + if (wrq->u.data.length != sizeof(RT_802_11_PREAMBLE)) + Status = -EINVAL; + else + { + if(copy_from_user(&Preamble, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + if (Preamble == Rt802_11PreambleShort) + { + pAdapter->PortCfg.WindowsTxPreamble = Preamble; + MlmeSetTxPreamble(pAdapter, Rt802_11PreambleShort); + } + else if ((Preamble == Rt802_11PreambleLong) || (Preamble == Rt802_11PreambleAuto)) + { + // if user wants AUTO, initialize to LONG here, then change according to AP's + // capability upon association. + pAdapter->PortCfg.WindowsTxPreamble = Preamble; + MlmeSetTxPreamble(pAdapter, Rt802_11PreambleLong); + } + else + { + Status = EINVAL; + break; + } + DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_SET_PREAMBLE (=%d)\n", Preamble); + } + break; + case OID_802_11_WEP_STATUS: + if (wrq->u.data.length != sizeof(NDIS_802_11_WEP_STATUS)) + Status = -EINVAL; + else + { + if(copy_from_user(&WepStatus, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + // Since TKIP, AES, WEP are all supported. It should not have any invalid setting + if (WepStatus <= Ndis802_11Encryption3KeyAbsent) + { + if (pAdapter->PortCfg.WepStatus != WepStatus) + { + // Config has changed + pAdapter->bConfigChanged = TRUE; + } + pAdapter->PortCfg.WepStatus = WepStatus; + } + else + { + Status = -EINVAL; + break; + } + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_WEP_STATUS (=%d)\n",WepStatus); + } + break; + case OID_802_11_AUTHENTICATION_MODE: + if (wrq->u.data.length != sizeof(NDIS_802_11_AUTHENTICATION_MODE)) + Status = -EINVAL; + else + { + if(copy_from_user(&AuthMode, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + if (AuthMode > Ndis802_11AuthModeMax) + { + Status = -EINVAL; + break; + } + else + { + if (pAdapter->PortCfg.AuthMode != AuthMode) + { + // Config has changed + pAdapter->bConfigChanged = TRUE; + } + pAdapter->PortCfg.AuthMode = AuthMode; + } + pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED; + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_AUTHENTICATION_MODE (=%d) \n",pAdapter->PortCfg.AuthMode); + } + break; + case OID_802_11_INFRASTRUCTURE_MODE: + if (wrq->u.data.length != sizeof(NDIS_802_11_NETWORK_INFRASTRUCTURE)) + Status = -EINVAL; + else + { + if(copy_from_user(&BssType, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + if (BssType == Ndis802_11IBSS) + { + if (pAdapter->PortCfg.BssType != BSS_INDEP) + { + // Config has changed + pAdapter->bConfigChanged = TRUE; + } + pAdapter->PortCfg.BssType = BSS_INDEP; + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_INFRASTRUCTURE_MODE (AD-HOC)\n"); + } + else if (BssType == Ndis802_11Infrastructure) + { + if (pAdapter->PortCfg.BssType != BSS_INFRA) + { + // Config has changed + pAdapter->bConfigChanged = TRUE; + } + pAdapter->PortCfg.BssType = BSS_INFRA; + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_INFRASTRUCTURE_MODE (INFRA)\n"); + } + else + { + Status = -EINVAL; + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_INFRASTRUCTURE_MODE (unknown)\n"); + } + } + // Reset Ralink supplicant to not use, it will be set to start when UI set PMK key + pAdapter->PortCfg.WpaState = SS_NOTUSE; + break; + case RT_OID_802_11_RESET_COUNTERS: + memset(&pAdapter->WlanCounters, 0, sizeof(COUNTER_802_11)); + memset(&pAdapter->Counters, 0, sizeof(COUNTER_802_3)); + memset(&pAdapter->RalinkCounters, 0, sizeof(COUNTER_RALINK)); + memset(&pAdapter->Mlme.PrevWlanCounters, 0, sizeof(COUNTER_802_11)); + DBGPRINT(RT_DEBUG_INFO, "Set::RT_OID_802_11_RESET_COUNTERS \n"); + break; + case OID_802_11_RTS_THRESHOLD: + if (wrq->u.data.length != sizeof(NDIS_802_11_RTS_THRESHOLD)) + Status = -EINVAL; + else + { + if(copy_from_user(&RtsThresh, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + if (RtsThresh > MAX_RTS_THRESHOLD) + Status = -EINVAL; + else + pAdapter->PortCfg.RtsThreshold = (USHORT)RtsThresh; + } + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_RTS_THRESHOLD (=%d)\n",RtsThresh); + break; + case OID_802_11_FRAGMENTATION_THRESHOLD: + if (wrq->u.data.length != sizeof(NDIS_802_11_FRAGMENTATION_THRESHOLD)) + Status = -EINVAL; + else + { + if(copy_from_user(&FragThresh, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + pAdapter->PortCfg.bFragmentZeroDisable = FALSE; + if (FragThresh > MAX_FRAG_THRESHOLD || FragThresh < MIN_FRAG_THRESHOLD) + { + if (FragThresh == 0) + { + pAdapter->PortCfg.FragmentThreshold = MAX_FRAG_THRESHOLD; + pAdapter->PortCfg.bFragmentZeroDisable = TRUE; + } + else + Status = -EINVAL; + } + else + pAdapter->PortCfg.FragmentThreshold = (USHORT)FragThresh; + } + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_FRAGMENTATION_THRESHOLD (=%d) \n",FragThresh); + break; + case OID_802_11_POWER_MODE: + if (wrq->u.data.length != sizeof(NDIS_802_11_POWER_MODE)) + Status = -EINVAL; + else + { + if(copy_from_user(&PowerMode, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + // save user's policy here, but not change PortCfg.Psm immediately + if (PowerMode == Ndis802_11PowerModeCAM) + { + // clear PSM bit immediately + MlmeSetPsmBit(pAdapter, PWR_ACTIVE); + pAdapter->PortCfg.RecvDtim = TRUE; + if (pAdapter->PortCfg.WindowsACCAMEnable == FALSE) + pAdapter->PortCfg.WindowsPowerMode = PowerMode; + pAdapter->PortCfg.WindowsBatteryPowerMode = PowerMode; + } + else if (PowerMode == Ndis802_11PowerModeMAX_PSP) + { + // do NOT turn on PSM bit here, wait until MlmeCheckForPsmChange() + // to exclude certain situations. + // MlmeSetPsmBit(pAdapter, PWR_SAVE); + if (pAdapter->PortCfg.WindowsACCAMEnable == FALSE) + pAdapter->PortCfg.WindowsPowerMode = PowerMode; + pAdapter->PortCfg.WindowsBatteryPowerMode = PowerMode; + pAdapter->PortCfg.RecvDtim = TRUE; // FALSE; + pAdapter->PortCfg.DefaultListenCount = 5; + } + else if (PowerMode == Ndis802_11PowerModeFast_PSP) + { + // do NOT turn on PSM bit here, wait until MlmeCheckForPsmChange() + // to exclude certain situations. + // MlmeSetPsmBit(pAdapter, PWR_SAVE); + pAdapter->PortCfg.RecvDtim = TRUE; + if (pAdapter->PortCfg.WindowsACCAMEnable == FALSE) + pAdapter->PortCfg.WindowsPowerMode = PowerMode; + pAdapter->PortCfg.WindowsBatteryPowerMode = PowerMode; + pAdapter->PortCfg.DefaultListenCount = 3; + } + else + Status = -EINVAL; + } + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_POWER_MODE (=%d)\n",PowerMode); + break; + case OID_802_11_TX_POWER_LEVEL: + if (wrq->u.data.length != sizeof(NDIS_802_11_TX_POWER_LEVEL)) + Status = -EINVAL; + else + { + if(copy_from_user(&TxPowerLevel, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + if (TxPowerLevel > MAX_TX_POWER_LEVEL) + Status = -EINVAL; + else + pAdapter->PortCfg.TxPower = (UCHAR)TxPowerLevel; + } + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_TX_POWER_LEVEL (=%d) \n",TxPowerLevel); + break; + // For WPA PSK PMK key + case RT_OID_802_11_ADD_WPA: + pKey = kmalloc(wrq->u.data.length, GFP_KERNEL); + if(pKey == NULL) + { + Status = -ENOMEM; + break; + } + if(copy_from_user(pKey, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + if (pKey->Length != wrq->u.data.length) + { + Status = -EINVAL; + DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_ADD_WPA, Failed!!\n"); + } + else + { + if (pAdapter->PortCfg.AuthMode != Ndis802_11AuthModeWPAPSK) + { + Status = -EOPNOTSUPP; + DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_ADD_WPA, Failed!! [AuthMode != WPAPSK]\n"); + } + else // Only for WPA PSK mode + { + pAdapter->PortCfg.PskKey.KeyLen = (UCHAR) pKey->KeyLength; + memcpy(pAdapter->PortCfg.PskKey.Key, &pKey->KeyMaterial, pKey->KeyLength); + // Use RaConfig as PSK agent. + // Start STA supplicant state machine + pAdapter->PortCfg.WpaState = SS_START; + + DBGPRINT(RT_DEBUG_TRACE, "Set::RT_OID_802_11_ADD_WPA (id=0x%x, Len=%d-byte)\n", pKey->KeyIndex, pKey->KeyLength); + } + } + kfree(pKey); + break; + case OID_802_11_REMOVE_KEY: + pRemoveKey = kmalloc(wrq->u.data.length, GFP_KERNEL); + if(pRemoveKey == NULL) + { + Status = -ENOMEM; + break; + } + if(copy_from_user(pRemoveKey, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + if (pRemoveKey->Length != wrq->u.data.length) + { + Status = -EINVAL; + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_REMOVE_KEY, Failed!!\n"); + } + else + { + if (pAdapter->PortCfg.AuthMode >= Ndis802_11AuthModeWPA) + { + RTMPWPARemoveKeyProc(pAdapter, pRemoveKey); + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_REMOVE_KEY, Remove WPA Key!!\n"); + } + else + { + KeyIdx = pRemoveKey->KeyIndex; + + if (KeyIdx & 0x80000000) + { + // Should never set default bit when remove key + Status = -EINVAL; + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_REMOVE_KEY, Failed!!(Should never set default bit when remove key)\n"); + } + else + { + KeyIdx = KeyIdx & 0x0fffffff; + if (KeyIdx > 3) + { + Status = -EINVAL; + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_REMOVE_KEY, Failed!!(KeyId[%d] out of range)\n", KeyIdx); + } + else + { + pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen = 0; + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_REMOVE_KEY (id=0x%x, Len=%d-byte)\n", pRemoveKey->KeyIndex, pRemoveKey->Length); + } + } + } + } + kfree(pRemoveKey); + break; + case OID_802_11_ADD_KEY: + pKey = kmalloc(wrq->u.data.length, GFP_KERNEL); + if(pKey == NULL) + { + Status = -ENOMEM; + break; + } + if(copy_from_user(pKey, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + if (pKey->Length != wrq->u.data.length) + { + Status = -EINVAL; + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_ADD_KEY, Failed!!\n"); + } + else + { + if (pAdapter->PortCfg.AuthMode >= Ndis802_11AuthModeWPA) + { + RTMPWPAAddKeyProc(pAdapter, pKey); + } + else // Old WEP stuff + { + KeyIdx = pKey->KeyIndex & 0x0fffffff; + + // it is a shared key + if (KeyIdx > 4) + Status = -EINVAL; + else + { + pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen = (UCHAR) pKey->KeyLength; + memcpy(pAdapter->PortCfg.SharedKey[KeyIdx].Key, &pKey->KeyMaterial, pKey->KeyLength); + if (pKey->KeyIndex & 0x80000000) + { + // Default key for tx (shared key) + pAdapter->PortCfg.DefaultKeyId = (UCHAR) KeyIdx; + } + } + } + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_ADD_KEY (id=0x%x, Len=%d-byte)\n", pKey->KeyIndex, pKey->KeyLength); + } + kfree(pKey); + break; + case OID_802_11_CONFIGURATION: + if (wrq->u.data.length != sizeof(NDIS_802_11_CONFIGURATION)) + Status = -EINVAL; + else + { + if(copy_from_user(&Config, wrq->u.data.pointer, wrq->u.data.length)){ + Status = -EINVAL; + break; + } + pConfig = &Config; + pAdapter->PortCfg.IbssConfig.BeaconPeriod = (USHORT) pConfig->BeaconPeriod; + pAdapter->PortCfg.IbssConfig.AtimWin = (USHORT) pConfig->ATIMWindow; + MAP_KHZ_TO_CHANNEL_ID(pConfig->DSConfig, pAdapter->PortCfg.IbssConfig.Channel); + DBGPRINT(RT_DEBUG_TRACE, "Set::OID_802_11_CONFIGURATION (BeacnPeriod=%d,AtimW=%d,Ch=%d)\n", + pConfig->BeaconPeriod, pConfig->ATIMWindow, pAdapter->PortCfg.IbssConfig.Channel); + // Config has changed + pAdapter->bConfigChanged = TRUE; + } + break; + default: + DBGPRINT(RT_DEBUG_TRACE, "Set::unknown IOCTL's subcmd = 0x%08x\n", cmd); + Status = -EOPNOTSUPP; + break; + } + + return Status; +} + +INT RTMPQueryInformation( + IN PRTMP_ADAPTER pAdapter, + IN OUT struct ifreq *rq, + IN INT cmd) +{ + struct iwreq *wrq = (struct iwreq *) rq; + NDIS_802_11_BSSID_LIST_EX *pBssidList = NULL; + PNDIS_WLAN_BSSID_EX pBss; + NDIS_802_11_SSID Ssid; + NDIS_802_11_CONFIGURATION Configuration; + RT_802_11_LINK_STATUS LinkStatus; + RT_802_11_STA_CONFIG StaConfig; + NDIS_802_11_STATISTICS Statistics; + NDIS_802_11_RTS_THRESHOLD RtsThresh; + NDIS_802_11_FRAGMENTATION_THRESHOLD FragThresh; + NDIS_802_11_POWER_MODE PowerMode; + NDIS_802_11_NETWORK_INFRASTRUCTURE BssType; + RT_802_11_PREAMBLE PreamType; + NDIS_802_11_AUTHENTICATION_MODE AuthMode; + NDIS_802_11_WEP_STATUS WepStatus; + RT_VERSION_INFO DriverVersionInfo; + ULONG BssBufSize; + ULONG BssLen; + ULONG ulInfo = 0; + ULONG FcsValue; + PUCHAR pBuf = NULL; + PUCHAR pPtr; + INT Status = NDIS_STATUS_SUCCESS; + UCHAR Padding; + UINT i; + BOOLEAN RadioState; + + switch(cmd) { + case RT_OID_DEVICE_NAME: + DBGPRINT(RT_DEBUG_TRACE, "Query::RT_OID_DEVICE_NAME\n"); + if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE)) + { + // TODO: Any client apps that use this need to be reworked so they are okay when the module is loaded but the interface is down. Until then .... + // Interface is down, so pretend we don't exist. + Status = -EFAULT; + } + else + { + wrq->u.data.length = sizeof(NIC_DEVICE_NAME); + if(copy_to_user(wrq->u.data.pointer, NIC_DEVICE_NAME, wrq->u.data.length)) + Status = -EFAULT; + } + break; + case RT_OID_VERSION_INFO: + DBGPRINT(RT_DEBUG_INFO, "Query::RT_OID_VERSION_INFO \n"); + DriverVersionInfo.DriverVersionW = DRV_VERSION_MAJOR; + DriverVersionInfo.DriverVersionX = DRV_VERSION_MINOR; + DriverVersionInfo.DriverVersionY = DRV_VERSION_SUB; + DriverVersionInfo.DriverVersionZ = 0; + DriverVersionInfo.DriverBuildYear = DRV_BUILD_YEAR; + DriverVersionInfo.DriverBuildMonth = DRV_BUILD_MONTH; + DriverVersionInfo.DriverBuildDay = DRV_BUILD_DAY; + wrq->u.data.length = sizeof(RT_VERSION_INFO); + if(copy_to_user(wrq->u.data.pointer, &DriverVersionInfo, wrq->u.data.length)) + Status = -EFAULT; + break; + case OID_802_11_BSSID_LIST: + DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_BSSID_LIST (%d BSS returned)\n",pAdapter->PortCfg.BssTab.BssNr); + // Claculate total buffer size required + BssBufSize = sizeof(ULONG); + + for (i = 0; i < pAdapter->PortCfg.BssTab.BssNr; i++) + { + // Align pointer to 4 bytes boundary. + Padding = 4 - (pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen & 0x0003); + if (Padding == 4) + Padding = 0; + BssBufSize += (sizeof(NDIS_WLAN_BSSID_EX) - 4 + sizeof(NDIS_802_11_FIXED_IEs) + pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen + Padding); + } + + // For safety issue, we add 256 bytes just in case + BssBufSize += 256; + // Allocate the same size as passed from higher layer + pBuf = kmalloc(BssBufSize, GFP_KERNEL); + if(pBuf == NULL) + { + Status = -ENOMEM; + break; + } + // Init 802_11_BSSID_LIST_EX structure + memset(pBuf, 0, BssBufSize); + pBssidList = (PNDIS_802_11_BSSID_LIST_EX) pBuf; + pBssidList->NumberOfItems = pAdapter->PortCfg.BssTab.BssNr; + + // Calculate total buffer length + BssLen = 4; // Consist of NumberOfItems + // Point to start of NDIS_WLAN_BSSID_EX + // pPtr = pBuf + sizeof(ULONG); + pPtr = (PUCHAR) &pBssidList->Bssid[0]; + for (i = 0; i < pAdapter->PortCfg.BssTab.BssNr; i++) + { + pBss = (PNDIS_WLAN_BSSID_EX) pPtr; + memcpy(&pBss->MacAddress, &pAdapter->PortCfg.BssTab.BssEntry[i].Bssid, ETH_ALEN); + if ((pAdapter->PortCfg.BssTab.BssEntry[i].Hidden == 1) && (pAdapter->PortCfg.bShowHiddenSSID == FALSE)) + { + pBss->Ssid.SsidLength = 0; + } + else + { + pBss->Ssid.SsidLength = pAdapter->PortCfg.BssTab.BssEntry[i].SsidLen; + memcpy(pBss->Ssid.Ssid, pAdapter->PortCfg.BssTab.BssEntry[i].Ssid, pAdapter->PortCfg.BssTab.BssEntry[i].SsidLen); + } + pBss->Privacy = pAdapter->PortCfg.BssTab.BssEntry[i].Privacy; + pBss->Rssi = pAdapter->PortCfg.BssTab.BssEntry[i].Rssi - pAdapter->PortCfg.RssiToDbm; + pBss->NetworkTypeInUse = Ndis802_11DS; + pBss->Configuration.Length = sizeof(NDIS_802_11_CONFIGURATION); + pBss->Configuration.BeaconPeriod = pAdapter->PortCfg.BssTab.BssEntry[i].BeaconPeriod; + pBss->Configuration.ATIMWindow = pAdapter->PortCfg.BssTab.BssEntry[i].AtimWin; + + MAP_CHANNEL_ID_TO_KHZ(pAdapter->PortCfg.BssTab.BssEntry[i].Channel, pBss->Configuration.DSConfig); + + if (pAdapter->PortCfg.BssTab.BssEntry[i].BssType == BSS_INFRA) + pBss->InfrastructureMode = Ndis802_11Infrastructure; + else + pBss->InfrastructureMode = Ndis802_11IBSS; + + memcpy(pBss->SupportedRates, pAdapter->PortCfg.BssTab.BssEntry[i].Rates, pAdapter->PortCfg.BssTab.BssEntry[i].RatesLen); + + DBGPRINT(RT_DEBUG_TRACE, "BSS#%d - %s, Ch %d = %d Khz\n", + i,pBss->Ssid.Ssid,pAdapter->PortCfg.BssTab.BssEntry[i].Channel,pBss->Configuration.DSConfig); + + if (pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen == 0) + { + pBss->IELength = sizeof(NDIS_802_11_FIXED_IEs); + memcpy(pBss->IEs, &pAdapter->PortCfg.BssTab.BssEntry[i].FixIEs, sizeof(NDIS_802_11_FIXED_IEs)); + pPtr = pPtr + sizeof(NDIS_WLAN_BSSID_EX) - 4 + sizeof(NDIS_802_11_FIXED_IEs); + } + else + { + pBss->IELength = sizeof(NDIS_802_11_FIXED_IEs) + pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen; + pPtr = pPtr + sizeof(NDIS_WLAN_BSSID_EX) - 4 + sizeof(NDIS_802_11_FIXED_IEs); + memcpy(pBss->IEs, &pAdapter->PortCfg.BssTab.BssEntry[i].FixIEs, sizeof(NDIS_802_11_FIXED_IEs)); + memcpy(pPtr, pAdapter->PortCfg.BssTab.BssEntry[i].VarIEs, pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen); + pPtr += pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen; + } + // Align pointer to 4 bytes boundary. + Padding = 4 - (pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen & 0x0003); + if (Padding == 4) + Padding = 0; + pPtr += Padding; + pBss->Length = sizeof(NDIS_WLAN_BSSID_EX) - 4 + sizeof(NDIS_802_11_FIXED_IEs) + pAdapter->PortCfg.BssTab.BssEntry[i].VarIELen + Padding; + BssLen += pBss->Length; + } + wrq->u.data.length = BssLen; + if(copy_to_user(wrq->u.data.pointer, pBssidList, wrq->u.data.length)) + Status = -EFAULT; + kfree(pBssidList); + break; + case OID_802_3_CURRENT_ADDRESS: + wrq->u.data.length = ETH_ALEN; + if(copy_to_user(wrq->u.data.pointer, &pAdapter->CurrentAddress, wrq->u.data.length)){ + Status = -EFAULT; + break; + } + DBGPRINT(RT_DEBUG_INFO, "Query::OID_802_3_CURRENT_ADDRESS \n"); + break; + case OID_GEN_MEDIA_CONNECT_STATUS: + DBGPRINT(RT_DEBUG_INFO, "Query::OID_GEN_MEDIA_CONNECT_STATUS \n"); + wrq->u.data.length = sizeof(NDIS_MEDIA_STATE); + if(copy_to_user(wrq->u.data.pointer, &pAdapter->MediaState, wrq->u.data.length)) + Status = -EFAULT; + break; + case OID_802_11_BSSID: + if (INFRA_ON(pAdapter) || ADHOC_ON(pAdapter)) + { + if(copy_to_user(wrq->u.data.pointer, &pAdapter->PortCfg.Bssid, sizeof(MACADDR))) + Status = -EFAULT; + + DBGPRINT(RT_DEBUG_INFO, "IOCTL::SIOCGIWAP(=%02x:%02x:%02x:%02x:%02x:%02x)\n", + pAdapter->PortCfg.Bssid.Octet[0],pAdapter->PortCfg.Bssid.Octet[1],pAdapter->PortCfg.Bssid.Octet[2], + pAdapter->PortCfg.Bssid.Octet[3],pAdapter->PortCfg.Bssid.Octet[4],pAdapter->PortCfg.Bssid.Octet[5]); + + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_BSSID(=EMPTY)\n"); + Status = -ENOTCONN; + } + break; + case OID_802_11_SSID: + Ssid.SsidLength = pAdapter->PortCfg.SsidLen; + memset(Ssid.Ssid, 0, MAX_LEN_OF_SSID); + memcpy(Ssid.Ssid, pAdapter->PortCfg.Ssid, Ssid.SsidLength); + wrq->u.data.length = sizeof(NDIS_802_11_SSID); + if(copy_to_user(wrq->u.data.pointer, &Ssid, wrq->u.data.length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_SSID (Len=%d, ssid=%s)\n", Ssid.SsidLength,Ssid.Ssid); + break; + case RT_OID_802_11_LINK_STATUS: + LinkStatus.CurrTxRate = RateIdTo500Kbps[pAdapter->PortCfg.TxRate]; // unit : 500 kbps + LinkStatus.ChannelQuality = pAdapter->Mlme.ChannelQuality; + LinkStatus.RxByteCount = pAdapter->RalinkCounters.ReceivedByteCount; + LinkStatus.TxByteCount = pAdapter->RalinkCounters.TransmittedByteCount; + wrq->u.data.length = sizeof(RT_802_11_LINK_STATUS); + if(copy_to_user(wrq->u.data.pointer, &LinkStatus, wrq->u.data.length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "Query::RT_OID_802_11_LINK_STATUS\n"); + break; + case OID_802_11_CONFIGURATION: + Configuration.Length = sizeof(NDIS_802_11_CONFIGURATION); + Configuration.BeaconPeriod = pAdapter->PortCfg.BeaconPeriod; + Configuration.ATIMWindow = pAdapter->PortCfg.AtimWin; + MAP_CHANNEL_ID_TO_KHZ(pAdapter->PortCfg.Channel, Configuration.DSConfig); + wrq->u.data.length = sizeof(NDIS_802_11_CONFIGURATION); + if(copy_to_user(wrq->u.data.pointer, &Configuration, wrq->u.data.length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_CONFIGURATION(BeaconPeriod=%d,AtimW=%d,Channel=%d) \n", + Configuration.BeaconPeriod, Configuration.ATIMWindow, pAdapter->PortCfg.Channel); + break; + case OID_802_11_RSSI: + ulInfo = pAdapter->PortCfg.LastRssi - pAdapter->PortCfg.RssiToDbm; + wrq->u.data.length = sizeof(ulInfo); + if(copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_RSSI(=%d)\n", ulInfo); + break; + case OID_802_11_STATISTICS: + DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_STATISTICS \n"); + // Update FCS counters + RTMP_IO_READ32(pAdapter, CNT0, &FcsValue); + pAdapter->WlanCounters.FCSErrorCount.QuadPart += ((FcsValue & 0x0000ffff) >> 7); + // Add FCS error count to private counters + pAdapter->RalinkCounters.RealFcsErrCount.QuadPart += FcsValue; + + // Sanity check for calculation of sucessful count + if (pAdapter->WlanCounters.TransmittedFragmentCount.QuadPart < pAdapter->WlanCounters.RetryCount.QuadPart) + pAdapter->WlanCounters.TransmittedFragmentCount.QuadPart = pAdapter->WlanCounters.RetryCount.QuadPart; + + Statistics.TransmittedFragmentCount.QuadPart = pAdapter->WlanCounters.TransmittedFragmentCount.QuadPart; + Statistics.MulticastTransmittedFrameCount.QuadPart = pAdapter->WlanCounters.MulticastTransmittedFrameCount.QuadPart; + Statistics.FailedCount.QuadPart = pAdapter->WlanCounters.FailedCount.QuadPart; + Statistics.RetryCount.QuadPart = pAdapter->WlanCounters.RetryCount.QuadPart; + Statistics.MultipleRetryCount.QuadPart = pAdapter->WlanCounters.MultipleRetryCount.QuadPart; + Statistics.RTSSuccessCount.QuadPart = pAdapter->WlanCounters.RTSSuccessCount.QuadPart; + Statistics.RTSFailureCount.QuadPart = pAdapter->WlanCounters.RTSFailureCount.QuadPart; + Statistics.ACKFailureCount.QuadPart = pAdapter->WlanCounters.ACKFailureCount.QuadPart; + Statistics.FrameDuplicateCount.QuadPart = pAdapter->WlanCounters.FrameDuplicateCount.QuadPart; + Statistics.ReceivedFragmentCount.QuadPart = pAdapter->WlanCounters.ReceivedFragmentCount.QuadPart; + Statistics.MulticastReceivedFrameCount.QuadPart = pAdapter->WlanCounters.MulticastReceivedFrameCount.QuadPart; +#ifdef RT2500_DBG + Statistics.FCSErrorCount = pAdapter->RalinkCounters.RealFcsErrCount; +#else + Statistics.FCSErrorCount.QuadPart = pAdapter->WlanCounters.FCSErrorCount.QuadPart; + Statistics.FrameDuplicateCount.vv.LowPart = pAdapter->WlanCounters.FrameDuplicateCount.vv.LowPart / 100; +#endif + wrq->u.data.length = sizeof(NDIS_802_11_STATISTICS); + if(copy_to_user(wrq->u.data.pointer, &Statistics, wrq->u.data.length)) + Status = -EFAULT; + break; + case OID_GEN_RCV_OK: + DBGPRINT(RT_DEBUG_INFO, "Query::OID_GEN_RCV_OK \n"); + ulInfo = pAdapter->Counters.GoodReceives; + wrq->u.data.length = sizeof(ulInfo); + if(copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length)) + Status = -EFAULT; + break; + case OID_GEN_RCV_NO_BUFFER: + DBGPRINT(RT_DEBUG_INFO, "Query::OID_GEN_RCV_NO_BUFFER \n"); + ulInfo = pAdapter->Counters.RxNoBuffer; + wrq->u.data.length = sizeof(ulInfo); + if(copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length)) + Status = -EFAULT; + break; + case RT_OID_802_11_PHY_MODE: + ulInfo = (ULONG)pAdapter->PortCfg.PhyMode; + wrq->u.data.length = sizeof(ulInfo); + if(copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "Query::RT_OID_802_11_PHY_MODE (=%d)\n", ulInfo); + break; + case RT_OID_802_11_STA_CONFIG: + DBGPRINT(RT_DEBUG_TRACE, "Query::RT_OID_802_11_QUERY_STA_CONFIG\n"); + StaConfig.EnableTxBurst = pAdapter->PortCfg.EnableTxBurst; + StaConfig.EnableTurboRate = pAdapter->PortCfg.EnableTurboRate; + StaConfig.UseBGProtection = pAdapter->PortCfg.UseBGProtection; + StaConfig.UseShortSlotTime = pAdapter->PortCfg.UseShortSlotTime; + StaConfig.AdhocMode = pAdapter->PortCfg.AdhocMode; + StaConfig.HwRadioStatus = (pAdapter->PortCfg.bHwRadio == TRUE) ? 1 : 0; + StaConfig.Rsv1 = 0; + StaConfig.SystemErrorBitmap = pAdapter->PortCfg.SystemErrorBitmap; + wrq->u.data.length = sizeof(RT_802_11_STA_CONFIG); + if(copy_to_user(wrq->u.data.pointer, &StaConfig, wrq->u.data.length)) + Status = -EFAULT; + break; + case OID_802_11_RTS_THRESHOLD: + RtsThresh = pAdapter->PortCfg.RtsThreshold; + wrq->u.data.length = sizeof(RtsThresh); + if(copy_to_user(wrq->u.data.pointer, &RtsThresh, wrq->u.data.length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_RTS_THRESHOLD(=%d)\n", RtsThresh); + break; + case OID_802_11_FRAGMENTATION_THRESHOLD: + FragThresh = pAdapter->PortCfg.FragmentThreshold; + if (pAdapter->PortCfg.bFragmentZeroDisable == TRUE) + FragThresh = 0; + wrq->u.data.length = sizeof(FragThresh); + if(copy_to_user(wrq->u.data.pointer, &FragThresh, wrq->u.data.length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_FRAGMENTATION_THRESHOLD(=%d)\n", FragThresh); + break; + case OID_802_11_POWER_MODE: + PowerMode = pAdapter->PortCfg.WindowsPowerMode; + wrq->u.data.length = sizeof(PowerMode); + if(copy_to_user(wrq->u.data.pointer, &PowerMode, wrq->u.data.length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_POWER_MODE(=%d)\n", PowerMode); + break; + case RT_OID_802_11_RADIO: + RadioState = (BOOLEAN) pAdapter->PortCfg.bSwRadio; + wrq->u.data.length = sizeof(RadioState); + if(copy_to_user(wrq->u.data.pointer, &RadioState, wrq->u.data.length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "Query::RT_OID_802_11_QUERY_RADIO (=%d)\n", RadioState); + break; + case OID_802_11_INFRASTRUCTURE_MODE: + if (ADHOC_ON(pAdapter)) + BssType = Ndis802_11IBSS; + else if (INFRA_ON(pAdapter)) + BssType = Ndis802_11Infrastructure; + else + BssType = Ndis802_11AutoUnknown; + + wrq->u.data.length = sizeof(BssType); + if(copy_to_user(wrq->u.data.pointer, &BssType, wrq->u.data.length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_INFRASTRUCTURE_MODE(=%d)\n", BssType); + break; + case RT_OID_802_11_PREAMBLE: + PreamType = pAdapter->PortCfg.WindowsTxPreamble; + wrq->u.data.length = sizeof(PreamType); + if(copy_to_user(wrq->u.data.pointer, &PreamType, wrq->u.data.length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "Query::RT_OID_802_11_QUERY_PREAMBLE(=%d)\n", PreamType); + break; + case OID_802_11_AUTHENTICATION_MODE: + AuthMode = pAdapter->PortCfg.AuthMode; + wrq->u.data.length = sizeof(AuthMode); + if(copy_to_user(wrq->u.data.pointer, &AuthMode, wrq->u.data.length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_AUTHENTICATION_MODE(=%d)\n", AuthMode); + break; + case OID_802_11_WEP_STATUS: + WepStatus = pAdapter->PortCfg.WepStatus; + wrq->u.data.length = sizeof(WepStatus); + if(copy_to_user(wrq->u.data.pointer, &WepStatus, wrq->u.data.length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "Query::OID_802_11_WEP_STATUS(=%d)\n", WepStatus); + break; + + case RT_OID_802_11_QUERY_EEPROM_VERSION: + wrq->u.data.length = sizeof(ULONG); + if(copy_to_user(wrq->u.data.pointer, &pAdapter->PortCfg.EepromVersion, wrq->u.data.length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "Query::RT_OID_802_11_QUERY_EEPROM_VERSION (=%d)\n", pAdapter->PortCfg.EepromVersion); + break; + + default: + DBGPRINT(RT_DEBUG_TRACE, "Query::unknown IOCTL's subcmd = 0x%08x\n", cmd); + Status = -EOPNOTSUPP; + break; + } + + return Status; +} + +INT RT2500_ioctl( + IN struct net_device *net_dev, + IN OUT struct ifreq *rq, + IN INT cmd) +{ + PRTMP_ADAPTER pAdapter= net_dev->priv; + struct iwreq *wrq = (struct iwreq *) rq; + struct iw_point *erq = NULL; + struct iw_freq *frq = NULL; + NDIS_802_11_SSID Ssid, *pSsid=NULL; + NDIS_802_11_NETWORK_INFRASTRUCTURE BssType = Ndis802_11Infrastructure; + NDIS_802_11_RTS_THRESHOLD RtsThresh; + NDIS_802_11_FRAGMENTATION_THRESHOLD FragThresh; + NDIS_802_11_MAC_ADDRESS Bssid; + INT Status = NDIS_STATUS_SUCCESS; + USHORT subcmd; + BOOLEAN StateMachineTouched = FALSE; + int i, chan = -1, index = 0, len = 0; + + + switch(cmd) { + case SIOCGIWNAME: + DBGPRINT(RT_DEBUG_TRACE, "IOCTL::SIOCGIWNAME\n"); + strcpy(wrq->u.name, "RT2500 Wireless"); //Less then 16 bytes. + break; + case SIOCSIWESSID: //Set ESSID + erq = &wrq->u.essid; + memset(&Ssid, 0x00, sizeof(NDIS_802_11_SSID)); + if (erq->flags) + { + if (erq->length > IW_ESSID_MAX_SIZE) + { + Status = -E2BIG; + break; + } + + if(RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE)) + { + if (copy_from_user(Ssid.Ssid, erq->pointer, (erq->length - 1))) + { + Status = -EFAULT; + break; + } + Ssid.SsidLength = erq->length - 1; //minus null character. + }else{ + // This SEEMS to be needed to actual work RobinC when iface + // is down + if (copy_from_user(pAdapter->PortCfg.Ssid, erq->pointer, (erq->length - 1))) + { + Status = -EFAULT; + break; + } + pAdapter->PortCfg.SsidLen = erq->length - 1; //minus null character. + + memcpy(pAdapter->Mlme.CntlAux.Ssid, pAdapter->PortCfg.Ssid, pAdapter->PortCfg.SsidLen); + pAdapter->Mlme.CntlAux.SsidLen = pAdapter->PortCfg.SsidLen; + } + } + else + Ssid.SsidLength = 0; // ANY ssid + + pSsid = &Ssid; + + // if network is down then me MUST not proceed into actualy + // running mlme stuff + if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE)) + break; + + if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) + { + MlmeRestartStateMachine(pAdapter); + DBGPRINT(RT_DEBUG_TRACE, "!!! MLME busy, reset MLME state machine !!!\n"); + } + + // tell CNTL state machine to call NdisMSetInformationComplete() after completing + // this request, because this request is initiated by NDIS. + pAdapter->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; + + MlmeEnqueue(&pAdapter->Mlme.Queue, + MLME_CNTL_STATE_MACHINE, + OID_802_11_SSID, + sizeof(NDIS_802_11_SSID), + (VOID *)pSsid + ); + Status = NDIS_STATUS_SUCCESS; + StateMachineTouched = TRUE; + + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWESSID[cmd=0x%x] (Len=%d,Ssid=%s)\n", SIOCSIWESSID, pSsid->SsidLength, pSsid->Ssid); + break; + case SIOCGIWESSID: //Get ESSID + erq = &wrq->u.essid; + + erq->flags=1; + erq->length = pAdapter->PortCfg.SsidLen; + if(copy_to_user(erq->pointer, pAdapter->PortCfg.Ssid, erq->length)) + Status = -EFAULT; + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCGIWESSID (Len=%d, ssid=%s...)\n", erq->length, pAdapter->PortCfg.Ssid); + break; + case SIOCGIWNWID: // get network id + Status = -EOPNOTSUPP; + break; + case SIOCSIWNWID: // set network id (the cell) + Status = -EOPNOTSUPP; + break; + case SIOCSIWFREQ: // set channel/frequency (Hz) + frq = &wrq->u.freq; + if((frq->e == 0) && (frq->m <= 1000)) + chan = frq->m; // Setting by channel number + else + MAP_KHZ_TO_CHANNEL_ID( (frq->m /100) , chan); // Setting by frequency - search the table , like 2.412G, 2.422G, + pAdapter->PortCfg.IbssConfig.Channel = chan; + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWFREQ[cmd=0x%x] (Channel=%d)\n", SIOCSIWFREQ, pAdapter->PortCfg.IbssConfig.Channel); + if(RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE) && (pAdapter->PortCfg.BssType == BSS_MONITOR || pAdapter->PortCfg.BssType == BSS_INDEP)) + { + pAdapter->PortCfg.Channel = chan; + AsicSwitchChannel(pAdapter, pAdapter->PortCfg.Channel); + AsicLockChannel(pAdapter, pAdapter->PortCfg.Channel); + } + break; + case SIOCGIWFREQ: // get channel/frequency (Hz) + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCGIWFREQ\n"); + if (INFRA_ON(pAdapter) || ADHOC_ON(pAdapter)){ + MAP_CHANNEL_ID_TO_KHZ(pAdapter->PortCfg.Channel, wrq->u.freq.m); + }else{ + MAP_CHANNEL_ID_TO_KHZ(pAdapter->PortCfg.IbssConfig.Channel, wrq->u.freq.m); + } + // MW: Alter the multiplier so iwconfig reports GhZ + wrq->u.freq.e = 3; + wrq->u.freq.i = 0; + break; + case SIOCGIWNICKN: //get node name/nickname + erq = &wrq->u.data; + erq->length = strlen(pAdapter->nickn); + if(copy_to_user(erq->pointer, pAdapter->nickn, erq->length)) + Status = -EFAULT; + break; + case SIOCSIWNICKN: //set node name/nickname + erq = &wrq->u.data; + if (erq->flags) + { + if (erq->length <= IW_ESSID_MAX_SIZE){ + if(copy_from_user(pAdapter->nickn, erq->pointer, erq->length)){ + Status = -EINVAL; + break; + } + }else + Status = -E2BIG; + } + break; + case SIOCGIWRATE: //get default bit rate (bps) + wrq->u.bitrate.value = RateIdToMbps[pAdapter->PortCfg.TxRate] * 1000000; + wrq->u.bitrate.disabled = 0; + break; + case SIOCSIWRATE: //set default bit rate (bps) + RTMPSetDesiredRates(pAdapter, wrq->u.bitrate.value); + break; + case SIOCGIWRTS: // get RTS/CTS threshold (bytes) + wrq->u.rts.value = (INT) pAdapter->PortCfg.RtsThreshold; + wrq->u.rts.disabled = (wrq->u.rts.value == MAX_RTS_THRESHOLD); + wrq->u.rts.fixed = 1; + break; + case SIOCSIWRTS: //set RTS/CTS threshold (bytes) + RtsThresh = wrq->u.rts.value; + if (wrq->u.rts.disabled) + RtsThresh = MAX_RTS_THRESHOLD; + + if((RtsThresh > 0) && (RtsThresh <= MAX_RTS_THRESHOLD)) + pAdapter->PortCfg.RtsThreshold = (USHORT)RtsThresh; + else if (RtsThresh == 0) + pAdapter->PortCfg.RtsThreshold = MAX_RTS_THRESHOLD; + + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWRTS (=%d)\n", pAdapter->PortCfg.RtsThreshold); + break; + case SIOCGIWFRAG: //get fragmentation thr (bytes) + wrq->u.frag.value = (INT) pAdapter->PortCfg.FragmentThreshold; + wrq->u.frag.disabled = (wrq->u.frag.value >= MAX_FRAG_THRESHOLD); + wrq->u.frag.fixed = 1; + break; + case SIOCSIWFRAG: //set fragmentation thr (bytes) + FragThresh = wrq->u.frag.value; + if (wrq->u.rts.disabled) + FragThresh = MAX_FRAG_THRESHOLD; + + if ( (FragThresh >= MIN_FRAG_THRESHOLD) && (FragThresh <= MAX_FRAG_THRESHOLD)) + pAdapter->PortCfg.FragmentThreshold = (USHORT)FragThresh; + else if (FragThresh == 0) + pAdapter->PortCfg.FragmentThreshold = MAX_FRAG_THRESHOLD; + + if (pAdapter->PortCfg.FragmentThreshold == MAX_FRAG_THRESHOLD) + pAdapter->PortCfg.bFragmentZeroDisable = TRUE; + else + pAdapter->PortCfg.bFragmentZeroDisable = FALSE; + + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWFRAG (=%d)\n", pAdapter->PortCfg.FragmentThreshold); + break; + case SIOCGIWENCODE: //get encoding token & mode + index = (wrq->u.encoding.flags & IW_ENCODE_INDEX) - 1; + if ((index < 0) || (index >= NR_WEP_KEYS)) + index = pAdapter->PortCfg.DefaultKeyId; // Default key for tx (shared key) + + if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeOpen) + wrq->u.encoding.flags = IW_ENCODE_OPEN; + else if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeShared) + wrq->u.encoding.flags = IW_ENCODE_RESTRICTED; + + if (pAdapter->PortCfg.WepStatus == Ndis802_11WEPDisabled) + wrq->u.encoding.flags |= IW_ENCODE_DISABLED; + else + { + if(wrq->u.encoding.pointer) + { + wrq->u.encoding.length = pAdapter->PortCfg.SharedKey[index].KeyLen; + if(copy_to_user(wrq->u.encoding.pointer, + pAdapter->PortCfg.SharedKey[index].Key, + pAdapter->PortCfg.SharedKey[index].KeyLen)) + Status = -EFAULT; + wrq->u.encoding.flags |= (index + 1); + } + } + break; + case SIOCSIWENCODE: //set encoding token & mode + index = (wrq->u.encoding.flags & IW_ENCODE_INDEX) - 1; + /* take the old default key if index is invalid */ + if((index < 0) || (index >= NR_WEP_KEYS)) + index = pAdapter->PortCfg.DefaultKeyId; // Default key for tx (shared key) + + if(wrq->u.encoding.pointer) + { + len = wrq->u.encoding.length; + if(len > WEP_LARGE_KEY_LEN) + len = WEP_LARGE_KEY_LEN; + + memset(pAdapter->PortCfg.SharedKey[index].Key, 0x00, MAX_LEN_OF_KEY); + if(copy_from_user(pAdapter->PortCfg.SharedKey[index].Key, + wrq->u.encoding.pointer, len)){ + Status = -EINVAL; + break; + } + pAdapter->PortCfg.SharedKey[index].KeyLen = len <= WEP_SMALL_KEY_LEN ? WEP_SMALL_KEY_LEN : WEP_LARGE_KEY_LEN; + } + pAdapter->PortCfg.DefaultKeyId = (UCHAR) index; + if (wrq->u.encoding.flags & IW_ENCODE_DISABLED) + pAdapter->PortCfg.WepStatus = Ndis802_11WEPDisabled; + else + pAdapter->PortCfg.WepStatus = Ndis802_11WEPEnabled; + + if (wrq->u.encoding.flags & IW_ENCODE_RESTRICTED) + pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeShared; + if (wrq->u.encoding.flags & IW_ENCODE_OPEN) + pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeOpen; + + if(pAdapter->PortCfg.WepStatus == Ndis802_11WEPDisabled) + pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeOpen; + +//#ifdef RT2500_DBG + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWENCODE Key[%x] => \n", index); + for (i = 0; i < len; i++) + { + DBGPRINT(RT_DEBUG_TRACE, "%02x:", pAdapter->PortCfg.SharedKey[index].Key[i]); + if (i%16 == 15) + DBGPRINT(RT_DEBUG_TRACE, "\n"); + } + DBGPRINT(RT_DEBUG_TRACE, "\n"); +//#endif + break; + case SIOCGIWAP: //get access point MAC addresses + if (INFRA_ON(pAdapter) || ADHOC_ON(pAdapter)) + { + wrq->u.ap_addr.sa_family = ARPHRD_ETHER; + memcpy(wrq->u.ap_addr.sa_data, &pAdapter->PortCfg.Bssid, ETH_ALEN); + + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCGIWAP(=%02x:%02x:%02x:%02x:%02x:%02x)\n", + pAdapter->PortCfg.Bssid.Octet[0], pAdapter->PortCfg.Bssid.Octet[1], pAdapter->PortCfg.Bssid.Octet[2], + pAdapter->PortCfg.Bssid.Octet[3], pAdapter->PortCfg.Bssid.Octet[4], pAdapter->PortCfg.Bssid.Octet[5]); + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCGIWAP(=EMPTY)\n"); + Status = -ENOTCONN; + } + break; + case SIOCSIWAP: //set access point MAC addresses + memcpy(&Bssid, &wrq->u.ap_addr.sa_data, sizeof(NDIS_802_11_MAC_ADDRESS)); + + if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE)) + break; + + if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) + { + MlmeRestartStateMachine(pAdapter); + DBGPRINT(RT_DEBUG_TRACE, "!!! MLME busy, reset MLME state machine !!!\n"); + } + + // tell CNTL state machine to call NdisMSetInformationComplete() after completing + // this request, because this request is initiated by NDIS. + pAdapter->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; + + MlmeEnqueue(&pAdapter->Mlme.Queue, + MLME_CNTL_STATE_MACHINE, + OID_802_11_BSSID, + sizeof(NDIS_802_11_MAC_ADDRESS), + (VOID *)&Bssid); + Status = NDIS_STATUS_SUCCESS; + StateMachineTouched = TRUE; + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWAP %02x:%02x:%02x:%02x:%02x:%02x\n", + Bssid[0], Bssid[1], Bssid[2], Bssid[3], Bssid[4], Bssid[5]); + break; + case SIOCGIWMODE: //get operation mode + if (pAdapter->PortCfg.BssType == BSS_INDEP) + { + BssType = Ndis802_11IBSS; + wrq->u.mode = IW_MODE_ADHOC; + } + else if (pAdapter->PortCfg.BssType == BSS_INFRA) + { + BssType = Ndis802_11Infrastructure; + wrq->u.mode = IW_MODE_INFRA; + } +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,20)) + else if (pAdapter->PortCfg.BssType == BSS_MONITOR) + { + BssType = Ndis802_11Monitor; + wrq->u.mode = IW_MODE_MONITOR; + } +#endif + else + { + BssType = Ndis802_11AutoUnknown; + wrq->u.mode = IW_MODE_AUTO; + } + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCGIWMODE(=%d)\n", BssType); + break; + case SIOCSIWMODE: //set operation mode + if(wrq->u.mode == IW_MODE_ADHOC) + { + if (pAdapter->PortCfg.BssType != BSS_INDEP) + { + // Config has changed + pAdapter->bConfigChanged = TRUE; + } + pAdapter->PortCfg.BssType = BSS_INDEP; + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWMODE (AD-HOC)\n"); + } + else if (wrq->u.mode == IW_MODE_INFRA) + { + if (pAdapter->PortCfg.BssType != BSS_INFRA) + { + // Config has changed + pAdapter->bConfigChanged = TRUE; + } + pAdapter->PortCfg.BssType = BSS_INFRA; + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWMODE (INFRA)\n"); + } +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,20)) + else if (wrq->u.mode == IW_MODE_MONITOR) + { + if (pAdapter->PortCfg.BssType != BSS_MONITOR) + { + // COnfig has changed + pAdapter->bConfigChanged = TRUE; + } + pAdapter->PortCfg.BssType = BSS_MONITOR; + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWMODE (MONITOR)\n"); + } +#endif + else + { + Status = -ENOSYS; + DBGPRINT(RT_DEBUG_TRACE, "ioctl::SIOCSIWMODE (unknown)\n"); + } + + if (pAdapter->bConfigChanged == TRUE) + { + if (pAdapter->PortCfg.BssType == BSS_MONITOR) + { + if (pAdapter->PortCfg.MallowRFMONTx == TRUE) + pAdapter->net_dev->type = 801; // ARPHRD_IEEE80211 + else + pAdapter->net_dev->type = 802; // ARPHRD_IEEE80211_PRISM + + RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x46); + } + else if (pAdapter->bAcceptPromiscuous == TRUE) + { + pAdapter->net_dev->type = 1; + RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x6e); + } + else + { + pAdapter->net_dev->type = 1; + RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x7e); + } + } + // Reset Ralink supplicant to not use, it will be set to start when UI set PMK key + pAdapter->PortCfg.WpaState = SS_NOTUSE; + break; + case SIOCGIWSENS: //get sensitivity (dBm) + case SIOCSIWSENS: //set sensitivity (dBm) + case SIOCGIWPOWER: //get Power Management settings + case SIOCSIWPOWER: //set Power Management settings + Status = -EOPNOTSUPP; + break; + case SIOCGIWTXPOW: //get transmit power (dBm) +#if WIRELESS_EXT >= 17 + // Krellan: Get TxPower in dBm now, not percentage + { + ULONG R3; + UCHAR Channel = pAdapter->PortCfg.Channel; + + // Krellan: This code comes from AsicSwitchChannel(), + // as we must know the channel we are currently on, + // in order to get the correct EEPROM-recommended + // value to establish as 0 dBm. + if (Channel <= 14) + R3 = pAdapter->PortCfg.ChannelTxPower[Channel - 1]; + else + R3 = pAdapter->PortCfg.ChannelTxPower[0]; + + if (R3 > 31) R3 = 31; + + wrq->u.txpower.value = pAdapter->PortCfg.TxPowerDriver - R3; + wrq->u.txpower.flags = IW_TXPOW_DBM; + wrq->u.txpower.fixed = !(pAdapter->PortCfg.TxPowerAuto); + wrq->u.txpower.disabled = FALSE; + } + break; +#endif + case SIOCSIWTXPOW: //set transmit power (dBm) +#if WIRELESS_EXT >= 17 + // Krellan: Set TxPower in dBm now, not percentage + { + int Value; + + if (wrq->u.txpower.disabled) + { + // Krellan: I don't know how to turn off the radio entirely + Status = -EOPNOTSUPP; + printk(KERN_ERR DRV_NAME " SIOCSIWTXPOW: Setting txpower off is not supported\n"); + } + else + { + if (wrq->u.txpower.fixed) + { + if (wrq->u.txpower.flags != IW_TXPOW_DBM) + { + Status = -EINVAL; + printk(KERN_ERR DRV_NAME " SIOCSIWTXPOW: Value not in IW_TXPOW_DBM units\n"); + } + else + { + Value = wrq->u.txpower.value; + + if (Value < MIN_TXPOWER_DBM || Value > MAX_TXPOWER_DBM) + { + Status = -EINVAL; + printk(KERN_ERR DRV_NAME " SIOCSIWTXPOW: Value out of range [%d,%d]\n", + MIN_TXPOWER_DBM, MAX_TXPOWER_DBM); + } + else + { + pAdapter->PortCfg.TxPowerUser = Value; + pAdapter->PortCfg.TxPowerAuto = FALSE; + } + } + } + else + { + pAdapter->PortCfg.TxPowerAuto = TRUE; + } + } + } + break; +#endif + case SIOCGIWRETRY: //get retry limits and lifetime + case SIOCSIWRETRY: //set retry limits and lifetime + case 0x00008946: // ethtool specific IOCTL (FIXME!, minimal support should not be difficult) + case 0x00008947: // mrtg related IOCTL (ignored for now) + Status = -EOPNOTSUPP; + break; + case RT_PRIV_IOCTL: + subcmd = wrq->u.data.flags; + if( subcmd & OID_GET_SET_TOGGLE) + Status = RTMPSetInformation(pAdapter, rq, subcmd); + else + Status = RTMPQueryInformation(pAdapter, rq, subcmd); + break; + case SIOCGIWPRIV: + if (wrq->u.data.pointer) { + if ( !access_ok(VERIFY_WRITE, wrq->u.data.pointer, sizeof(privtab)) ) + break; + wrq->u.data.length = sizeof(privtab) / sizeof(privtab[0]); + if (copy_to_user(wrq->u.data.pointer, privtab, sizeof(privtab))) + Status = -EFAULT; + } + break; + + case RTPRIV_IOCTL_SET: + { + char *this_char; + char *value; + + if( !access_ok(VERIFY_READ, wrq->u.data.pointer, wrq->u.data.length) ) + break; + + while ((this_char = strsep((char**)&wrq->u.data.pointer, ",")) != NULL) + { + if (!*this_char) + continue; + + if ((value = rtstrchr(this_char, '=')) != NULL) + *value++ = 0; + + if (!value || !*value) + continue; + + for (PRTMP_PRIVATE_SET_PROC = RTMP_PRIVATE_SUPPORT_PROC; PRTMP_PRIVATE_SET_PROC->name; PRTMP_PRIVATE_SET_PROC++) + { + if (strcmp(this_char, PRTMP_PRIVATE_SET_PROC->name) == 0) + { + if(!PRTMP_PRIVATE_SET_PROC->set_proc(pAdapter, value)) + { //FALSE:Set private failed then return Invalid argument + Status = -EINVAL; + } + break; //Exit for loop. + } + } + + if(PRTMP_PRIVATE_SET_PROC->name == NULL) + { //Not found argument + Status = -EINVAL; + DBGPRINT(RT_DEBUG_TRACE, "ioctl::(iwpriv) Not Support Set Command [%s=%s]\n", this_char, value); + break; + } + } + } + break; + + case RTPRIV_IOCTL_BBP: + RTMPIoctlBBP(pAdapter, wrq); + break; + + case RTPRIV_IOCTL_MAC: + RTMPIoctlMAC(pAdapter, wrq); + break; + +#ifdef RALINK_ATE + case RTPRIV_IOCTL_E2P: + RTMPIoctlE2PROM(pAdapter, wrq); + break; +#endif + + case RTPRIV_IOCTL_RFMONTX: + Status = RTMPIoctlRFMONTX(pAdapter, wrq); + break; + + default: + DBGPRINT(RT_DEBUG_TRACE, "IOCTL::unknown IOCTL's cmd = 0x%08x\n", cmd); + Status = -EOPNOTSUPP; + break; + } + + if(StateMachineTouched) // Upper layer sent a MLME-related operations + MlmeHandler(pAdapter); + + return Status; +} + + +UCHAR BCAST[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; +/* + ======================================================================== + + Routine Description: + Add WPA key process + + Arguments: + pAdapter Pointer to our adapter + pBuf Pointer to the where the key stored + + Return Value: + NDIS_SUCCESS Add key successfully + + Note: + + ======================================================================== +*/ +NDIS_STATUS RTMPWPAAddKeyProc( + IN PRTMP_ADAPTER pAdapter, + IN PVOID pBuf) +{ + PNDIS_802_11_KEY pKey; + ULONG KeyIdx; + NDIS_STATUS Status; + PUCHAR pTxMic, pRxMic; + BOOLEAN bTxKey; // Set the key as transmit key + BOOLEAN bPairwise; // Indicate the key is pairwise key + BOOLEAN bKeyRSC; // indicate the receive SC set by KeyRSC value. + // Otherwise, it will set by the NIC. + BOOLEAN bAuthenticator; // indicate key is set by authenticator. + INT i, PairwiseIdx; + + pKey = (PNDIS_802_11_KEY) pBuf; + KeyIdx = pKey->KeyIndex & 0xff; + // Bit 31 of Add-key, Tx Key + bTxKey = (pKey->KeyIndex & 0x80000000) ? TRUE : FALSE; + // Bit 30 of Add-key PairwiseKey + bPairwise = (pKey->KeyIndex & 0x40000000) ? TRUE : FALSE; + // Bit 29 of Add-key KeyRSC + bKeyRSC = (pKey->KeyIndex & 0x20000000) ? TRUE : FALSE; + // Bit 28 of Add-key Authenticator + bAuthenticator = (pKey->KeyIndex & 0x10000000) ? TRUE : FALSE; + + // 1. Check Group / Pairwise Key + if (bPairwise) // Pairwise Key + { + // 1. KeyIdx must be 0, otherwise, return NDIS_STATUS_INVALID_DATA + if (KeyIdx != 0) + return(NDIS_STATUS_FAILURE); + + // 2. Check bTx, it must be true, otherwise, return NDIS_STATUS_INVALID_DATA + if (bTxKey == FALSE) + return(NDIS_STATUS_FAILURE); + + // 3. If BSSID is not all 0xff, return NDIS_STATUS_INVALID_DATA + if (NdisEqualMemory(pKey->BSSID, BCAST, 6)) + return(NDIS_STATUS_FAILURE); + + // 4. Selct RxMic / TxMic based on Supp / Authenticator + if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) + { + // for WPA-None Tx, Rx MIC is the same + pTxMic = (PUCHAR) (&pKey->KeyMaterial) + 16; + pRxMic = pTxMic; + } + else if (bAuthenticator == TRUE) + { + pTxMic = (PUCHAR) (&pKey->KeyMaterial) + 16; + pRxMic = (PUCHAR) (&pKey->KeyMaterial) + 24; + } + else + { + pRxMic = (PUCHAR) (&pKey->KeyMaterial) + 16; + pTxMic = (PUCHAR) (&pKey->KeyMaterial) + 24; + } + + // 5. Find the old entry to overwrite or find an empty entry. + PairwiseIdx = 0; + for (i = 0; i < PAIRWISE_KEY_NO; i++) + { + if (pAdapter->PortCfg.PairwiseKey[i].KeyLen == 0) + { + PairwiseIdx = i; + break; + } + else if (RTMPEqualMemory(pAdapter->PortCfg.PairwiseKey[i].BssId, pKey->BSSID, 6)) + { + // Found the old entry + PairwiseIdx = i; + break; + } + } + // If there is no match and no empty pairwise key, we have to replace an old one + // which will be index 0 in our case. + + // 6. Check RxTsc + if (bKeyRSC == TRUE) + { + memcpy(&pAdapter->PortCfg.PairwiseKey[PairwiseIdx].RxTsc, &pKey->KeyRSC, 6); + } + else + { + memset(pAdapter->PortCfg.PairwiseKey[PairwiseIdx].RxTsc, 0, 6); + } + + // 7. Copy information into Pairwise Key structure. + // pKey->KeyLength will include TxMic and RxMic, therefore, we use 16 bytes hardcoded. + pAdapter->PortCfg.PairwiseKey[PairwiseIdx].KeyLen = 16; + memcpy(pAdapter->PortCfg.PairwiseKey[PairwiseIdx].Key, &pKey->KeyMaterial, 16); + memcpy(pAdapter->PortCfg.PairwiseKey[PairwiseIdx].RxMic, pRxMic, 8); + memcpy(pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxMic, pTxMic, 8); + memcpy(pAdapter->PortCfg.PairwiseKey[PairwiseIdx].BssId, pKey->BSSID, 6); + // Init TxTsc to one based on WiFi WPA specs + pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxTsc[0] = 1; + pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxTsc[1] = 0; + pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxTsc[2] = 0; + pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxTsc[3] = 0; + pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxTsc[4] = 0; + pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxTsc[5] = 0; + Status = NDIS_STATUS_SUCCESS; + + DBGPRINT(RT_DEBUG_INFO, "TKIP Key = "); + for (i = 0; i < 16; i++) + { + DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.PairwiseKey[PairwiseIdx].Key[i]); + } + DBGPRINT(RT_DEBUG_INFO, "\n"); + DBGPRINT(RT_DEBUG_INFO, "TKIP Rx MIC Key = "); + for (i = 0; i < 8; i++) + { + DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.PairwiseKey[PairwiseIdx].RxMic[i]); + } + DBGPRINT(RT_DEBUG_INFO, "\n"); + DBGPRINT(RT_DEBUG_INFO, "TKIP Tx MIC Key = "); + for (i = 0; i < 8; i++) + { + DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.PairwiseKey[PairwiseIdx].TxMic[i]); + } + DBGPRINT(RT_DEBUG_INFO, "\n"); + DBGPRINT(RT_DEBUG_INFO, "TKIP RxTSC = "); + for (i = 0; i < 6; i++) + { + DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.PairwiseKey[PairwiseIdx].RxTsc[i]); + } + DBGPRINT(RT_DEBUG_INFO, "\n"); + DBGPRINT(RT_DEBUG_INFO, "BSSID:%02x:%02x:%02x:%02x:%02x:%02x \n", + pKey->BSSID[0],pKey->BSSID[1],pKey->BSSID[2],pKey->BSSID[3],pKey->BSSID[4],pKey->BSSID[5]); + + } + else // Group Key + { + // 1. Check BSSID, if not current BSSID or Bcast, return NDIS_STATUS_INVALID_DATA + if ((!NdisEqualMemory(&pKey->BSSID, &BCAST, 6)) && + (!NdisEqualMemory(&pKey->BSSID, &pAdapter->PortCfg.Bssid, 6))) + return(NDIS_STATUS_FAILURE); + + + // 2. Check Key index for supported Group Key + if (KeyIdx >= GROUP_KEY_NO) + return(NDIS_STATUS_FAILURE); + + // 3. Set as default Tx Key if bTxKey is TRUE + if (bTxKey == TRUE) + pAdapter->PortCfg.DefaultKeyId = (UCHAR) KeyIdx; + + // 4. Selct RxMic / TxMic based on Supp / Authenticator + if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) + { + // for WPA-None Tx, Rx MIC is the same + pTxMic = (PUCHAR) (&pKey->KeyMaterial) + 16; + pRxMic = pTxMic; + } + else if (bAuthenticator == TRUE) + { + pTxMic = (PUCHAR) (&pKey->KeyMaterial) + 16; + pRxMic = (PUCHAR) (&pKey->KeyMaterial) + 24; + } + else + { + pRxMic = (PUCHAR) (&pKey->KeyMaterial) + 16; + pTxMic = (PUCHAR) (&pKey->KeyMaterial) + 24; + } + + // 5. Check RxTsc + if (bKeyRSC == TRUE) + { + memcpy(pAdapter->PortCfg.GroupKey[KeyIdx].RxTsc, &pKey->KeyRSC, 6); + } + else + { + memset(pAdapter->PortCfg.GroupKey[KeyIdx].RxTsc, 0, 6); + } + + // 6. Copy information into Group Key structure. + // pKey->KeyLength will include TxMic and RxMic, therefore, we use 16 bytes hardcoded. + pAdapter->PortCfg.GroupKey[KeyIdx].KeyLen = 16; + memcpy(pAdapter->PortCfg.GroupKey[KeyIdx].Key, &pKey->KeyMaterial, 16); + memcpy(pAdapter->PortCfg.GroupKey[KeyIdx].RxMic, pRxMic, 8); + memcpy(pAdapter->PortCfg.GroupKey[KeyIdx].TxMic, pTxMic, 8); + memcpy(pAdapter->PortCfg.GroupKey[KeyIdx].BssId, pKey->BSSID, 6); + // Init TxTsc to one based on WiFi WPA specs + pAdapter->PortCfg.GroupKey[KeyIdx].TxTsc[0] = 1; + pAdapter->PortCfg.GroupKey[KeyIdx].TxTsc[1] = 0; + pAdapter->PortCfg.GroupKey[KeyIdx].TxTsc[2] = 0; + pAdapter->PortCfg.GroupKey[KeyIdx].TxTsc[3] = 0; + pAdapter->PortCfg.GroupKey[KeyIdx].TxTsc[4] = 0; + pAdapter->PortCfg.GroupKey[KeyIdx].TxTsc[5] = 0; + // 802.1x port control + pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_SECURED; + Status = NDIS_STATUS_SUCCESS; + + // For WEP compatibility, in case it use OID_ADD_KEY, not OID_ADD_WEP + if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) + { + pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen = (UCHAR) pKey->KeyLength; + memcpy(pAdapter->PortCfg.SharedKey[KeyIdx].Key, &pKey->KeyMaterial, pKey->KeyLength); + } + + DBGPRINT(RT_DEBUG_INFO, "TKIP Key = "); + for (i = 0; i < 16; i++) + { + DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.GroupKey[KeyIdx].Key[i]); + } + DBGPRINT(RT_DEBUG_INFO, "\n"); + DBGPRINT(RT_DEBUG_INFO, "TKIP Rx MIC Key = "); + for (i = 0; i < 8; i++) + { + DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.GroupKey[KeyIdx].RxMic[i]); + } + DBGPRINT(RT_DEBUG_INFO, "\n"); + DBGPRINT(RT_DEBUG_INFO, "TKIP Tx MIC Key = "); + for (i = 0; i < 8; i++) + { + DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.GroupKey[KeyIdx].TxMic[i]); + } + DBGPRINT(RT_DEBUG_INFO, "\n"); + DBGPRINT(RT_DEBUG_INFO, "TKIP RxTSC = "); + for (i = 0; i < 6; i++) + { + DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PortCfg.GroupKey[KeyIdx].RxTsc[i]); + } + DBGPRINT(RT_DEBUG_INFO, "\n"); + DBGPRINT(RT_DEBUG_INFO, "BSSID:%02x:%02x:%02x:%02x:%02x:%02x \n", + pKey->BSSID[0],pKey->BSSID[1],pKey->BSSID[2],pKey->BSSID[3],pKey->BSSID[4],pKey->BSSID[5]); + + } + return (Status); +} + +/* + ======================================================================== + + Routine Description: + Remove WPA Key process + + Arguments: + pAdapter Pointer to our adapter + pBuf Pointer to the where the key stored + + Return Value: + NDIS_SUCCESS Add key successfully + + Note: + + ======================================================================== +*/ +NDIS_STATUS RTMPWPARemoveKeyProc( + IN PRTMP_ADAPTER pAdapter, + IN PVOID pBuf) +{ + PNDIS_802_11_REMOVE_KEY pKey; + ULONG KeyIdx; + NDIS_STATUS Status = NDIS_STATUS_FAILURE; + BOOLEAN bTxKey; // Set the key as transmit key + BOOLEAN bPairwise; // Indicate the key is pairwise key + BOOLEAN bKeyRSC; // indicate the receive SC set by KeyRSC value. + // Otherwise, it will set by the NIC. + BOOLEAN bAuthenticator; // indicate key is set by authenticator. + INT i; + + pKey = (PNDIS_802_11_REMOVE_KEY) pBuf; + KeyIdx = pKey->KeyIndex & 0xff; + // Bit 31 of Add-key, Tx Key + bTxKey = (pKey->KeyIndex & 0x80000000) ? TRUE : FALSE; + // Bit 30 of Add-key PairwiseKey + bPairwise = (pKey->KeyIndex & 0x40000000) ? TRUE : FALSE; + // Bit 29 of Add-key KeyRSC + bKeyRSC = (pKey->KeyIndex & 0x20000000) ? TRUE : FALSE; + // Bit 28 of Add-key Authenticator + bAuthenticator = (pKey->KeyIndex & 0x10000000) ? TRUE : FALSE; + + // 1. If bTx is TRUE, return failure information + if (bTxKey == TRUE) + return(NDIS_STATUS_FAILURE); + + // 2. Check Pairwise Key + if (bPairwise) + { + // a. If BSSID is broadcast, remove all pairwise keys. + if (NdisEqualMemory(&pKey->BSSID, &BCAST, 6)) + { + for (i = 0; i < PAIRWISE_KEY_NO; i++) + { + pAdapter->PortCfg.PairwiseKey[i].KeyLen = 0; + } + Status = NDIS_STATUS_SUCCESS; + } + + // b. If not broadcast, remove the pairwise specified by BSSID + else + { + for (i = 0; i < PAIRWISE_KEY_NO; i++) + { + if (NdisEqualMemory(pAdapter->PortCfg.PairwiseKey[i].BssId, pKey->BSSID, 6)) + { + pAdapter->PortCfg.PairwiseKey[i].KeyLen = 0; + Status = NDIS_STATUS_SUCCESS; + break; + } + } + + } + // c. If no pairwise supported, delete Group Key 0. + // The will be false since we do support pairwise keys. + } + // 3. Group Key + else + { + // a. If BSSID is broadcast, remove all group keys indexed + if (NdisEqualMemory(&pKey->BSSID, &BCAST, 6)) + { + pAdapter->PortCfg.GroupKey[KeyIdx].KeyLen = 0; + Status = NDIS_STATUS_SUCCESS; + } + + // b. If BSSID matched, delte the group key indexed. + else if (NdisEqualMemory(pAdapter->PortCfg.GroupKey[KeyIdx].BssId, pKey->BSSID, 6)) + { + pAdapter->PortCfg.GroupKey[KeyIdx].KeyLen = 0; + Status = NDIS_STATUS_SUCCESS; + } + + // c. For WEP compatibility + if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) + { + pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen = 0; + } + } + + return (Status); +} + + +/* + ======================================================================== + + Routine Description: + Remove All WPA Keys + + Arguments: + pAdapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPWPARemoveAllKeys( + IN PRTMP_ADAPTER pAdapter) +{ + INT i; + + // For WPA-None, there is no need to remove it, since WinXP won't set it again after + // Link up. And it will be replaced if user changed it. + if (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) + return; + + for (i = 0; i < PAIRWISE_KEY_NO; i++) + { + pAdapter->PortCfg.PairwiseKey[i].KeyLen = 0; + } + + for (i = 0; i < GROUP_KEY_NO; i++) + { + pAdapter->PortCfg.GroupKey[i].KeyLen = 0; + } +} + +/* + ======================================================================== + + Routine Description: + Change NIC PHY mode. Re-association may be necessary. + + Arguments: + pAdapter Pointer to our adapter + phmode + + ======================================================================== +*/ +VOID RTMPSetPhyMode( + IN PRTMP_ADAPTER pAdapter, + IN ULONG phymode) +{ + INT i; + + DBGPRINT(RT_DEBUG_TRACE,"RTMPSetPhyMode(=%d)\n", phymode); + + // the selected phymode must be supported by the RF IC encoded in E2PROM + if (pAdapter->PortCfg.RfType < RFIC_5222) + { + if (phymode == PHY_11A) + phymode = PHY_11BG_MIXED; + } + + // if no change, do nothing + if (pAdapter->PortCfg.PhyMode == phymode) + return; + + pAdapter->PortCfg.PhyMode = (UCHAR)phymode; + BuildChannelList(pAdapter); + + for (i = 0; i < pAdapter->PortCfg.ChannelListNum; i++) + { + if (pAdapter->PortCfg.IbssConfig.Channel == pAdapter->PortCfg.ChannelList[i]) + break; + } + if (i == pAdapter->PortCfg.ChannelListNum) + pAdapter->PortCfg.IbssConfig.Channel = FirstChannel(pAdapter); + pAdapter->PortCfg.Channel = pAdapter->PortCfg.IbssConfig.Channel; + + AsicSwitchChannel(pAdapter, pAdapter->PortCfg.Channel); + AsicLockChannel(pAdapter, pAdapter->PortCfg.Channel); + + switch (phymode) { + case PHY_11B: + pAdapter->PortCfg.IbssConfig.SupportedRates[0] = 0x82; // 1 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.IbssConfig.SupportedRates[1] = 0x84; // 2 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.IbssConfig.SupportedRates[2] = 0x8B; // 5.5 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.IbssConfig.SupportedRates[3] = 0x96; // 11 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.IbssConfig.SupportedRatesLen = 4; + pAdapter->PortCfg.SupportedRates[0] = 0x82; // 1 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.SupportedRates[1] = 0x84; // 2 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.SupportedRates[2] = 0x8B; // 5.5 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.SupportedRates[3] = 0x96; // 11 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.SupportedRatesLen = 4; + pAdapter->PortCfg.DesiredRates[0] = 2; // 1 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[1] = 4; // 2 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[2] = 11; // 5.5 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[3] = 22; // 11 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[4] = 0; + pAdapter->PortCfg.DesiredRates[5] = 0; + pAdapter->PortCfg.DesiredRates[6] = 0; + pAdapter->PortCfg.DesiredRates[7] = 0; + pAdapter->PortCfg.DesiredRates[8] = 0; + pAdapter->PortCfg.DesiredRates[9] = 0; + pAdapter->PortCfg.DesiredRates[10] = 0; + pAdapter->PortCfg.DesiredRates[11] = 0; + break; + + case PHY_11BG_MIXED: + case PHY_11ABG_MIXED: + pAdapter->PortCfg.IbssConfig.SupportedRates[0] = 0x82; // 1 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.IbssConfig.SupportedRates[1] = 0x84; // 2 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.IbssConfig.SupportedRates[2] = 0x8B; // 5.5 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.IbssConfig.SupportedRates[3] = 0x96; // 11 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.IbssConfig.SupportedRates[4] = 0x12; // 9 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.IbssConfig.SupportedRates[5] = 0x24; // 18 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.IbssConfig.SupportedRates[6] = 0x48; // 36 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.IbssConfig.SupportedRates[7] = 0x6c; // 54 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.IbssConfig.SupportedRates[8] = 0x8C; // 6 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.IbssConfig.SupportedRates[9] = 0x98; // 12 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.IbssConfig.SupportedRates[10] = 0xb0; // 24 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.IbssConfig.SupportedRates[11] = 0x60; // 48 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.IbssConfig.SupportedRatesLen = 12; + pAdapter->PortCfg.SupportedRates[0] = 0x82; // 1 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.SupportedRates[1] = 0x84; // 2 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.SupportedRates[2] = 0x8B; // 5.5 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.SupportedRates[3] = 0x96; // 11 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.SupportedRates[4] = 0x8C; // 6 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.SupportedRates[5] = 0x12; // 9 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.SupportedRates[6] = 0x98; // 12 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.SupportedRates[7] = 0x24; // 18 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.SupportedRates[8] = 0xb0; // 24 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.SupportedRates[9] = 0x48; // 36 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.SupportedRates[10] = 0x60; // 48 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.SupportedRates[11] = 0x6c; // 54 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.SupportedRatesLen = 12; + pAdapter->PortCfg.DesiredRates[0] = 2; // 1 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[1] = 4; // 2 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[2] = 11; // 5.5 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[3] = 22; // 11 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[4] = 12; // 6 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[5] = 18; // 9 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[6] = 24; // 12 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[7] = 36; // 18 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[8] = 48; // 24 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[9] = 72; // 36 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[10] = 96; // 48 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[11] = 108; // 54 mbps, in units of 0.5 Mbps + break; + + case PHY_11A: + pAdapter->PortCfg.IbssConfig.SupportedRates[0] = 0x8C; // 6 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.IbssConfig.SupportedRates[1] = 0x12; // 9 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.IbssConfig.SupportedRates[2] = 0x98; // 12 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.IbssConfig.SupportedRates[3] = 0x24; // 18 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.IbssConfig.SupportedRates[4] = 0xb0; // 24 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.IbssConfig.SupportedRates[5] = 0x48; // 36 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.IbssConfig.SupportedRates[6] = 0x60; // 48 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.IbssConfig.SupportedRates[7] = 0x6c; // 54 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.IbssConfig.SupportedRates[8] = 0; + pAdapter->PortCfg.IbssConfig.SupportedRates[9] = 0; + pAdapter->PortCfg.IbssConfig.SupportedRates[10] = 0; + pAdapter->PortCfg.IbssConfig.SupportedRates[11] = 0; + pAdapter->PortCfg.IbssConfig.SupportedRatesLen = 8; + pAdapter->PortCfg.SupportedRates[0] = 0x8C; // 6 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.SupportedRates[1] = 0x12; // 9 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.SupportedRates[2] = 0x98; // 12 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.SupportedRates[3] = 0x24; // 18 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.SupportedRates[4] = 0xb0; // 24 mbps, in units of 0.5 Mbps, basic rate + pAdapter->PortCfg.SupportedRates[5] = 0x48; // 36 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.SupportedRates[6] = 0x60; // 48 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.SupportedRates[7] = 0x6c; // 54 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.SupportedRates[8] = 0; + pAdapter->PortCfg.SupportedRates[9] = 0; + pAdapter->PortCfg.SupportedRates[10] = 0; + pAdapter->PortCfg.SupportedRates[11] = 0; + pAdapter->PortCfg.SupportedRatesLen = 8; + pAdapter->PortCfg.DesiredRates[0] = 12; // 6 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[1] = 18; // 9 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[2] = 24; // 12 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[3] = 36; // 18 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[4] = 48; // 24 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[5] = 72; // 36 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[6] = 96; // 48 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[7] = 108; // 54 mbps, in units of 0.5 Mbps + pAdapter->PortCfg.DesiredRates[8] = 0; + pAdapter->PortCfg.DesiredRates[9] = 0; + pAdapter->PortCfg.DesiredRates[10] = 0; + pAdapter->PortCfg.DesiredRates[11] = 0; + break; + + default: + break; + } + + MlmeUpdateTxRates(pAdapter, FALSE); + AsicSetSlotTime(pAdapter, FALSE); + MakeIbssBeacon(pAdapter); // supported rates may change +} + +VOID RTMPSetDesiredRates( + IN PRTMP_ADAPTER pAdapter, + IN LONG Rates) +{ + NDIS_802_11_RATES aryRates; + + memset(&aryRates, 0x00, sizeof(NDIS_802_11_RATES)); + switch (pAdapter->PortCfg.PhyMode) + { + case PHY_11A: // A only + switch (Rates) + { + case 6000000: //6M + aryRates[0] = 0x0c; // 6M + break; + case 9000000: //9M + aryRates[0] = 0x12; // 9M + break; + case 12000000: //12M + aryRates[0] = 0x18; // 12M + break; + case 18000000: //18M + aryRates[0] = 0x24; // 18M + break; + case 24000000: //24M + aryRates[0] = 0x30; // 24M + break; + case 36000000: //36M + aryRates[0] = 0x48; // 36M + break; + case 48000000: //48M + aryRates[0] = 0x60; // 48M + break; + case 54000000: //54M + aryRates[0] = 0x6c; // 54M + break; + case -1: //Auto + default: + aryRates[0] = 0x6c; // 54Mbps + aryRates[1] = 0x60; // 48Mbps + aryRates[2] = 0x48; // 36Mbps + aryRates[3] = 0x30; // 24Mbps + aryRates[4] = 0x24; // 18M + aryRates[5] = 0x18; // 12M + aryRates[6] = 0x12; // 9M + aryRates[7] = 0x0c; // 6M + break; + } + break; + case PHY_11BG_MIXED: // B/G Mixed + case PHY_11B: // B only + case PHY_11ABG_MIXED: // A/B/G Mixed + default: + switch (Rates) + { + case 1000000: //1M + aryRates[0] = 0x02; + break; + case 2000000: //2M + aryRates[0] = 0x04; + break; + case 5000000: //5.5M + aryRates[0] = 0x0b; // 5.5M + break; + case 11000000: //11M + aryRates[0] = 0x16; // 11M + break; + case 6000000: //6M + aryRates[0] = 0x0c; // 6M + break; + case 9000000: //9M + aryRates[0] = 0x12; // 9M + break; + case 12000000: //12M + aryRates[0] = 0x18; // 12M + break; + case 18000000: //18M + aryRates[0] = 0x24; // 18M + break; + case 24000000: //24M + aryRates[0] = 0x30; // 24M + break; + case 36000000: //36M + aryRates[0] = 0x48; // 36M + break; + case 48000000: //48M + aryRates[0] = 0x60; // 48M + break; + case 54000000: //54M + aryRates[0] = 0x6c; // 54M + break; + case -1: //Auto + default: + if (pAdapter->PortCfg.PhyMode == PHY_11B) + { //B Only + aryRates[0] = 0x16; // 11Mbps + aryRates[1] = 0x0b; // 5.5Mbps + aryRates[2] = 0x04; // 2Mbps + aryRates[3] = 0x02; // 1Mbps + } + else + { //(B/G) Mixed or (A/B/G) Mixed + aryRates[0] = 0x6c; // 54Mbps + aryRates[1] = 0x60; // 48Mbps + aryRates[2] = 0x48; // 36Mbps + aryRates[3] = 0x30; // 24Mbps + aryRates[4] = 0x16; // 11Mbps + aryRates[5] = 0x0b; // 5.5Mbps + aryRates[6] = 0x04; // 2Mbps + aryRates[7] = 0x02; // 1Mbps + } + break; + } + break; + } + + memset(pAdapter->PortCfg.DesiredRates, 0, MAX_LEN_OF_SUPPORTED_RATES); + memcpy(pAdapter->PortCfg.DesiredRates, &aryRates, sizeof(NDIS_802_11_RATES)); + DBGPRINT(RT_DEBUG_TRACE, " RTMPSetDesiredRates (%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x)\n", + pAdapter->PortCfg.DesiredRates[0],pAdapter->PortCfg.DesiredRates[1], + pAdapter->PortCfg.DesiredRates[2],pAdapter->PortCfg.DesiredRates[3], + pAdapter->PortCfg.DesiredRates[4],pAdapter->PortCfg.DesiredRates[5], + pAdapter->PortCfg.DesiredRates[6],pAdapter->PortCfg.DesiredRates[7] ); + // Changing DesiredRate may affect the MAX TX rate we used to TX frames out + MlmeUpdateTxRates(pAdapter, FALSE); +} +/* + ========================================================================== + Description: + Set Country Region + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_CountryRegion_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + ULONG region; + int success = TRUE; + + region = simple_strtol(arg, 0, 10); + if( (region >= REGION_MIN) && (region <= REGION_MAX) ) + { + pAdapter->PortCfg.CountryRegion = (UCHAR) region; + DBGPRINT(RT_DEBUG_TRACE, "Set_CountryRegion_Proc::(CountryRegion=%d)\n", pAdapter->PortCfg.CountryRegion); + BuildChannelList(pAdapter); + } + else + success = FALSE; + + return success; +} +/* + ========================================================================== + Description: + Set SSID + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_SSID_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + NDIS_802_11_SSID Ssid, *pSsid=NULL; + BOOLEAN StateMachineTouched = FALSE; + int success = TRUE; + + + /* Protect against oops if net is down, this will not work with if-preup + use iwconfig properly */ + printk("'iwpriv set essid' is deprecated, please use 'iwconfg essid' instead\n"); + if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE)) + return FALSE; + + if( strlen(arg) <= MAX_LEN_OF_SSID) + { + memset(&Ssid, 0, MAX_LEN_OF_SSID); + memcpy(Ssid.Ssid, arg, strlen(arg)); + Ssid.SsidLength = strlen(arg); + pSsid = &Ssid; + + + + if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) + { + MlmeRestartStateMachine(pAdapter); + DBGPRINT(RT_DEBUG_TRACE, "!!! MLME busy, reset MLME state machine !!!\n"); + } + // tell CNTL state machine to call NdisMSetInformationComplete() after completing + // this request, because this request is initiated by NDIS. + pAdapter->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; + + MlmeEnqueue(&pAdapter->Mlme.Queue, + MLME_CNTL_STATE_MACHINE, + OID_802_11_SSID, + sizeof(NDIS_802_11_SSID), + (VOID *)pSsid); + + StateMachineTouched = TRUE; + DBGPRINT(RT_DEBUG_TRACE, "Set_SSID_Proc::(Len=%d,Ssid=%s)\n", pAdapter->PortCfg.SsidLen, pAdapter->PortCfg.Ssid); + } + else + success = FALSE; + + if (StateMachineTouched) // Upper layer sent a MLME-related operations + MlmeHandler(pAdapter); + + return success; +} +/* + ========================================================================== + Description: + Set Wireless Mode + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_WirelessMode_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + ULONG WirelessMode; + int success = TRUE; + + WirelessMode = simple_strtol(arg, 0, 10); + + if ((WirelessMode == PHY_11BG_MIXED) || (WirelessMode == PHY_11B) || + (WirelessMode == PHY_11A) || (WirelessMode == PHY_11ABG_MIXED)) + { + RTMPSetPhyMode(pAdapter, WirelessMode); + DBGPRINT(RT_DEBUG_TRACE, "Set_WirelessMode_Proc::(=%d)\n", WirelessMode); + } + else + success = FALSE; + + return success; +} +/* + ========================================================================== + Description: + Set TxRate + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_TxRate_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + ULONG TxRate; + int success = TRUE; + ULONG rate_mapping[12] = {1, 2, 5, 11, 6, 9, 12, 18, 24, 36, 48, 54}; //according to README + + TxRate = simple_strtol(arg, 0, 10); + + if (TxRate == 0) + RTMPSetDesiredRates(pAdapter, -1); + else + RTMPSetDesiredRates(pAdapter, (LONG) (rate_mapping[TxRate-1] * 1000000)); + return success; +} +/* + ========================================================================== + Description: + Set AdhocMode support Rate can or can not exceed 11Mbps against WiFi spec. + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_AdhocModeRate_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + ULONG AdhocMode; + + AdhocMode = simple_strtol(arg, 0, 10); + + if (AdhocMode == 1) + pAdapter->PortCfg.AdhocMode = 1; + else if (AdhocMode == 0) + pAdapter->PortCfg.AdhocMode = 0; + else + return FALSE; //Invalid argument + + DBGPRINT(RT_DEBUG_TRACE, "Set_AdhocModeRate_Proc::(AdhocMode=%d)\n", pAdapter->PortCfg.AdhocMode); + + return TRUE; +} +/* + ========================================================================== + Description: + Set Channel + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_Channel_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + int success = TRUE; + UCHAR Channel; + + Channel = (UCHAR) simple_strtol(arg, 0, 10); + + if (ChannelSanity(pAdapter, Channel) == TRUE) + { + pAdapter->PortCfg.Channel = Channel; + pAdapter->PortCfg.IbssConfig.Channel = Channel; + DBGPRINT(RT_DEBUG_TRACE, "Set_Channel_Proc::(Channel=%d)\n", Channel); + } + else + success = FALSE; + + return success; +} +/* + ========================================================================== + Description: + Set 11B/11G Protection + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_BGProtection_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) + +{ + switch (simple_strtol(arg, 0, 10)) + { + case 0: //AUTO + pAdapter->PortCfg.UseBGProtection = 0; + break; + case 1: //Always On + pAdapter->PortCfg.UseBGProtection = 1; + break; + case 2: //Always OFF + pAdapter->PortCfg.UseBGProtection = 2; + break; + default: //Invalid argument + return FALSE; + } + DBGPRINT(RT_DEBUG_TRACE, "Set_BGProtection_Proc::(BGProtection=%d)\n", pAdapter->PortCfg.UseBGProtection); + + return TRUE; +} +/* + ========================================================================== + Description: + Set StaWithEtherBridge function on/off + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_StaWithEtherBridge_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) + +{ + switch (simple_strtol(arg, 0, 10)) + { + case 0: //Off + pAdapter->PortCfg.StaWithEtherBridge.Enable = FALSE; + break; + case 1: //On + pAdapter->PortCfg.StaWithEtherBridge.Enable = TRUE; + break; + default: //Invalid argument + return FALSE; + } + DBGPRINT(RT_DEBUG_TRACE, "Set_StaWithEtherBridge_Proc::(StaWithEtherBridge=%d)\n", pAdapter->PortCfg.StaWithEtherBridge.Enable); + + return TRUE; +} +/* + ========================================================================== + Description: + Set TxPreamble + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_TxPreamble_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + RT_802_11_PREAMBLE Preamble; + + Preamble = simple_strtol(arg, 0, 10); + switch (Preamble) + { + case Rt802_11PreambleShort: + pAdapter->PortCfg.WindowsTxPreamble = Preamble; + MlmeSetTxPreamble(pAdapter, Rt802_11PreambleShort); + break; + case Rt802_11PreambleLong: + case Rt802_11PreambleAuto: + // if user wants AUTO, initialize to LONG here, then change according to AP's + // capability upon association. + pAdapter->PortCfg.WindowsTxPreamble = Preamble; + MlmeSetTxPreamble(pAdapter, Rt802_11PreambleLong); + break; + default: //Invalid argument + return FALSE; + } + + DBGPRINT(RT_DEBUG_TRACE, "Set_TxPreamble_Proc::(TxPreamble=%d)\n", Preamble); + + return TRUE; +} +/* + ========================================================================== + Description: + Set RTS Threshold + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_RTSThreshold_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) + + +{ + NDIS_802_11_RTS_THRESHOLD RtsThresh; + + printk("'iwpriv set RTSThreshold' is deprecated, please use 'iwconfg rts' instead\n"); + + RtsThresh = simple_strtol(arg, 0, 10); + + if((RtsThresh > 0) && (RtsThresh <= MAX_RTS_THRESHOLD)) + pAdapter->PortCfg.RtsThreshold = (USHORT)RtsThresh; + else if (RtsThresh == 0) + pAdapter->PortCfg.RtsThreshold = MAX_RTS_THRESHOLD; + else + return FALSE; + + DBGPRINT(RT_DEBUG_TRACE, "Set_RTSThreshold_Proc::(RTSThreshold=%d)\n", pAdapter->PortCfg.RtsThreshold); + return TRUE; +} +/* + ========================================================================== + Description: + Set Fragment Threshold + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_FragThreshold_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + NDIS_802_11_FRAGMENTATION_THRESHOLD FragThresh; + + printk("'iwpriv set FragThreshold' is deprecated, please use 'iwconfg frag' instead\n"); + + + FragThresh = simple_strtol(arg, 0, 10); + + if ( (FragThresh >= MIN_FRAG_THRESHOLD) && (FragThresh <= MAX_FRAG_THRESHOLD)) + pAdapter->PortCfg.FragmentThreshold = (USHORT)FragThresh; + else if (FragThresh == 0) + pAdapter->PortCfg.FragmentThreshold = MAX_FRAG_THRESHOLD; + else + return FALSE; //Invalid argument + + if (pAdapter->PortCfg.FragmentThreshold == MAX_FRAG_THRESHOLD) + pAdapter->PortCfg.bFragmentZeroDisable = TRUE; + else + pAdapter->PortCfg.bFragmentZeroDisable = FALSE; + + DBGPRINT(RT_DEBUG_TRACE, "Set_FragThreshold_Proc::(FragThreshold=%d)\n", FragThresh); + + return TRUE; +} +/* + ========================================================================== + Description: + Set TxBurst + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_TxBurst_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + ULONG TxBurst; + + TxBurst = simple_strtol(arg, 0, 10); + + if (TxBurst == 1) + pAdapter->PortCfg.EnableTxBurst = TRUE; + else if (TxBurst == 0) + pAdapter->PortCfg.EnableTxBurst = FALSE; + else + return FALSE; //Invalid argument + + DBGPRINT(RT_DEBUG_TRACE, "Set_TxBurst_Proc::(TxBurst=%d)\n", pAdapter->PortCfg.EnableTxBurst); + + return TRUE; +} +/* + ========================================================================== + Description: + Set TurboRate Enable or Disable + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_TurboRate_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + ULONG TurboRate; + + TurboRate = simple_strtol(arg, 0, 10); + + if (TurboRate == 1) + pAdapter->PortCfg.EnableTurboRate = TRUE; + else if (TurboRate == 0) + pAdapter->PortCfg.EnableTurboRate = FALSE; + else + return FALSE; //Invalid argument + + DBGPRINT(RT_DEBUG_TRACE, "Set_TurboRate_Proc::(TurboRate=%d)\n", pAdapter->PortCfg.EnableTurboRate); + + return TRUE; +} +/* + ========================================================================== + Description: + Set Short Slot Time Enable or Disable + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_ShortSlot_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + ULONG ShortSlot; + + ShortSlot = simple_strtol(arg, 0, 10); + + if (ShortSlot == 1) + pAdapter->PortCfg.UseShortSlotTime = TRUE; + else if (ShortSlot == 0) + pAdapter->PortCfg.UseShortSlotTime = FALSE; + else + return FALSE; //Invalid argument + + DBGPRINT(RT_DEBUG_TRACE, "Set_ShortSlot_Proc::(ShortSlot=%d)\n", pAdapter->PortCfg.UseShortSlotTime); + + return TRUE; +} + +/* + ========================================================================== + Description: + Set Network Type(Infrastructure/Adhoc mode) + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_NetworkType_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + + printk("'iwpriv set NetworkType' is deprecated, please use 'iwconfg mode' instead\n"); + + if (strcmp(arg, "Adhoc") == 0) + pAdapter->PortCfg.BssType = BSS_INDEP; + else //Default Infrastructure mode + pAdapter->PortCfg.BssType = BSS_INFRA; + + // Reset Ralink supplicant to not use, it will be set to start when UI set PMK key + pAdapter->PortCfg.WpaState = SS_NOTUSE; + + DBGPRINT(RT_DEBUG_TRACE, "Set_NetworkType_Proc::(NetworkType=%d)\n", pAdapter->PortCfg.BssType); + + return TRUE; +} + +/* + ========================================================================== + Description: + Set Authentication mode + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_AuthMode_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + if ((strcmp(arg, "OPEN") == 0) || (strcmp(arg, "open") == 0)) + pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeOpen; + else if ((strcmp(arg, "SHARED") == 0) || (strcmp(arg, "shared") == 0)) + pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeShared; + else if ((strcmp(arg, "AUTO") == 0) || (strcmp(arg, "auto") == 0)) + pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeAutoSwitch; + else if ((strcmp(arg, "WPAPSK") == 0) || (strcmp(arg, "wpapsk") == 0)) + pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeWPAPSK; + else if ((strcmp(arg, "WPANONE") == 0) || (strcmp(arg, "wpanone") == 0)) + pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeWPANone; + else + return FALSE; + + pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED; + + DBGPRINT(RT_DEBUG_TRACE, "Set_AuthMode_Proc::(AuthMode=%d)\n", pAdapter->PortCfg.AuthMode); + + return TRUE; +} + +/* + ========================================================================== + Description: + Set Encryption Type + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_EncrypType_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + if ((strcmp(arg, "NONE") == 0) || (strcmp(arg, "none") == 0)) + pAdapter->PortCfg.WepStatus = Ndis802_11WEPDisabled; + else if ((strcmp(arg, "WEP") == 0) || (strcmp(arg, "wep") == 0)) + pAdapter->PortCfg.WepStatus = Ndis802_11WEPEnabled; + else if ((strcmp(arg, "TKIP") == 0) || (strcmp(arg, "tkip") == 0)) + pAdapter->PortCfg.WepStatus = Ndis802_11Encryption2Enabled; + else if ((strcmp(arg, "AES") == 0) || (strcmp(arg, "aes") == 0)) + pAdapter->PortCfg.WepStatus = Ndis802_11Encryption3Enabled; + else + return FALSE; + + DBGPRINT(RT_DEBUG_TRACE, "Set_EncrypType_Proc::(EncrypType=%d)\n", pAdapter->PortCfg.WepStatus); + + return TRUE; +} +/* + ========================================================================== + Description: + Set Default Key ID + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_DefaultKeyID_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + ULONG KeyIdx; + + printk("'iwpriv set DefaultKeyID' is deprecated, please use 'iwconfg key' instead\n"); + + KeyIdx = simple_strtol(arg, 0, 10); + if((KeyIdx >= 1 ) && (KeyIdx <= 4)) + pAdapter->PortCfg.DefaultKeyId = (UCHAR) (KeyIdx - 1 ); + else + return FALSE; //Invalid argument + + DBGPRINT(RT_DEBUG_TRACE, "Set_DefaultKeyID_Proc::(DefaultKeyID=%d)\n", pAdapter->PortCfg.DefaultKeyId); + + return TRUE; +} +/* + ========================================================================== + Description: + Set WEP KEY1 + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_Key1_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + int KeyLen; + int i; + + printk("'iwpriv set Key1' is deprecated, please use 'iwconfg key [1] ' instead\n"); + + KeyLen = strlen(arg); + + switch (KeyLen) + { + case 5: //wep 40 Ascii type + pAdapter->PortCfg.SharedKey[0].KeyLen = KeyLen; + memcpy(pAdapter->PortCfg.SharedKey[0].Key, arg, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Ascii"); + break; + case 10: //wep 40 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(arg+i)) ) + return FALSE; //Not Hex value; + } + pAdapter->PortCfg.SharedKey[0].KeyLen = KeyLen / 2 ; + AtoH(arg, pAdapter->PortCfg.SharedKey[0].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Hex"); + break; + case 13: //wep 104 Ascii type + pAdapter->PortCfg.SharedKey[0].KeyLen = KeyLen; + memcpy(pAdapter->PortCfg.SharedKey[0].Key, arg, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Ascii"); + break; + case 26: //wep 104 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(arg+i)) ) + return FALSE; //Not Hex value; + } + pAdapter->PortCfg.SharedKey[0].KeyLen = KeyLen / 2 ; + AtoH(arg, pAdapter->PortCfg.SharedKey[0].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Hex"); + break; + default: //Invalid argument + DBGPRINT(RT_DEBUG_TRACE, "Set_Key1_Proc::Invalid argument (=%s)\n", arg); + return FALSE; + } + + return TRUE; +} +/* + ========================================================================== + Description: + Set WEP KEY2 + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_Key2_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + int KeyLen; + int i; + + printk("'iwpriv set Key2' is deprecated, please use 'iwconfg key [2] ' instead\n"); + + + KeyLen = strlen(arg); + + switch (KeyLen) + { + case 5: //wep 40 Ascii type + pAdapter->PortCfg.SharedKey[1].KeyLen = KeyLen; + memcpy(pAdapter->PortCfg.SharedKey[1].Key, arg, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Ascii"); + break; + case 10: //wep 40 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(arg+i)) ) + return FALSE; //Not Hex value; + } + pAdapter->PortCfg.SharedKey[1].KeyLen = KeyLen / 2 ; + AtoH(arg, pAdapter->PortCfg.SharedKey[1].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Hex"); + break; + case 13: //wep 104 Ascii type + pAdapter->PortCfg.SharedKey[1].KeyLen = KeyLen; + memcpy(pAdapter->PortCfg.SharedKey[1].Key, arg, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Ascii"); + break; + case 26: //wep 104 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(arg+i)) ) + return FALSE; //Not Hex value; + } + pAdapter->PortCfg.SharedKey[1].KeyLen = KeyLen / 2 ; + AtoH(arg, pAdapter->PortCfg.SharedKey[1].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Hex"); + break; + default: //Invalid argument + DBGPRINT(RT_DEBUG_TRACE, "Set_Key2_Proc::Invalid argument (=%s)\n", arg); + return FALSE; + } + + return TRUE; +} +/* + ========================================================================== + Description: + Set WEP KEY3 + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_Key3_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + int KeyLen; + int i; + + printk("'iwpriv set Key3' is deprecated, please use 'iwconfg key [3] ' instead\n"); + + KeyLen = strlen(arg); + + switch (KeyLen) + { + case 5: //wep 40 Ascii type + pAdapter->PortCfg.SharedKey[2].KeyLen = KeyLen; + memcpy(pAdapter->PortCfg.SharedKey[2].Key, arg, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key3_Proc::(Key3=%s and type=%s)\n", arg, "Ascii"); + break; + case 10: //wep 40 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(arg+i)) ) + return FALSE; //Not Hex value; + } + pAdapter->PortCfg.SharedKey[2].KeyLen = KeyLen / 2 ; + AtoH(arg, pAdapter->PortCfg.SharedKey[2].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key3_Proc::(Key3=%s and type=%s)\n", arg, "Hex"); + break; + case 13: //wep 104 Ascii type + pAdapter->PortCfg.SharedKey[2].KeyLen = KeyLen; + memcpy(pAdapter->PortCfg.SharedKey[2].Key, arg, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key3_Proc::(Key3=%s and type=%s)\n", arg, "Ascii"); + break; + case 26: //wep 104 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(arg+i)) ) + return FALSE; //Not Hex value; + } + pAdapter->PortCfg.SharedKey[2].KeyLen = KeyLen / 2 ; + AtoH(arg, pAdapter->PortCfg.SharedKey[2].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key3_Proc::(Key3=%s and type=%s)\n", arg, "Hex"); + break; + default: //Invalid argument + DBGPRINT(RT_DEBUG_TRACE, "Set_Key3_Proc::Invalid argument (=%s)\n", arg); + return FALSE; + } + + return TRUE; +} +/* + ========================================================================== + Description: + Set WEP KEY4 + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_Key4_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + int KeyLen; + int i; + + printk("'iwpriv set Key4' is deprecated, please use 'iwconfg key [4] ' instead\n"); + + KeyLen = strlen(arg); + + switch (KeyLen) + { + case 5: //wep 40 Ascii type + pAdapter->PortCfg.SharedKey[3].KeyLen = KeyLen; + memcpy(pAdapter->PortCfg.SharedKey[3].Key, arg, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Ascii"); + break; + case 10: //wep 40 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(arg+i)) ) + return FALSE; //Not Hex value; + } + pAdapter->PortCfg.SharedKey[3].KeyLen = KeyLen / 2 ; + AtoH(arg, pAdapter->PortCfg.SharedKey[3].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Hex"); + break; + case 13: //wep 104 Ascii type + pAdapter->PortCfg.SharedKey[3].KeyLen = KeyLen; + memcpy(pAdapter->PortCfg.SharedKey[3].Key, arg, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Ascii"); + break; + case 26: //wep 104 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(arg+i)) ) + return FALSE; //Not Hex value; + } + pAdapter->PortCfg.SharedKey[3].KeyLen = KeyLen / 2 ; + AtoH(arg, pAdapter->PortCfg.SharedKey[3].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Hex"); + break; + default: //Invalid argument + DBGPRINT(RT_DEBUG_TRACE, "Set_Key4_Proc::Invalid argument (=%s)\n", arg); + return FALSE; + } + + return TRUE; +} +/* + ========================================================================== + Description: + Set WPA PSK key + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_WPAPSK_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + UCHAR keyMaterial[40]; + + DBGPRINT(RT_DEBUG_TRACE, "Set_WPAPSK_Proc::(WPAPSK=%s)\n", arg); + if ((strlen(arg) < 8) || (strlen(arg) > 64)) + { + DBGPRINT(RT_DEBUG_TRACE, "Set failed!!(WPAPSK=%s), WPAPSK key-string required 8 ~ 64 characters \n", arg); + return FALSE; + } + + if (strlen(arg) == 64) + { + AtoH(arg, pAdapter->PortCfg.PskKey.Key, 32); + } + else + { + PasswordHash((char *)arg, pAdapter->Mlme.CntlAux.Ssid, pAdapter->Mlme.CntlAux.SsidLen, keyMaterial); + + memcpy(&pAdapter->PortCfg.PskKey.Key, &keyMaterial, 32); + } + + // Use RaConfig as PSK agent. + // Start STA supplicant state machine + pAdapter->PortCfg.WpaState = SS_START; + + return TRUE; +} + + +/* + ========================================================================== + Description: + Set WPA NONE key + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ + +INT Set_WPANONE_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + UCHAR keyMaterial[40]; + + DBGPRINT(RT_DEBUG_TRACE, "Set_WPANONE_Proc::(WPANONE=%s)\n", arg); + if ((strlen(arg) < 8) || (strlen(arg) > 64)) + { + DBGPRINT(RT_DEBUG_TRACE, "Set failed!!(WPANONE=%s), WPANONE key-string required 8 ~ 64 characters \n", arg); + return FALSE; + } + + if (strlen(arg) == 64) + { + AtoH(arg, pAdapter->PortCfg.PskKey.Key, 32); + } + else + { + PasswordHash((char *)arg, pAdapter->Mlme.CntlAux.Ssid, pAdapter->Mlme.CntlAux.SsidLen, keyMaterial); + + memcpy(pAdapter->PortCfg.PskKey.Key, keyMaterial, 32); + } + // Use RaConfig as PSK agent. + // Start STA supplicant state machine + pAdapter->PortCfg.WpaState = SS_START; + +//----------------------------------------------------------------------------- +// pasted from "RTMPWPAAddKeyProc(...)" +// major on Group Key only. + + // Group Key + { + // 3. Set as default Tx Key if bTxKey is TRUE + pAdapter->PortCfg.DefaultKeyId = 0; + + // 4. Selct RxMic / TxMic based on Supp / Authenticator + // for WPA-None Tx, Rx MIC is the same + //pTxMic = (PUCHAR) (keyMaterial) + 16; + //pRxMic = pTxMic; + + memset(pAdapter->PortCfg.GroupKey[0].RxTsc, 0x00, 6); + + // 6. Copy information into Group Key structure. + // pKey->KeyLength will include TxMic and RxMic, therefore, we use 16 bytes hardcoded. + pAdapter->PortCfg.GroupKey[0].KeyLen = 16; + memcpy(pAdapter->PortCfg.GroupKey[0].Key, (PUCHAR)(keyMaterial) + 0, 16); + memcpy(pAdapter->PortCfg.GroupKey[0].RxMic, (PUCHAR)(keyMaterial) + 16, 8); + memcpy(pAdapter->PortCfg.GroupKey[0].TxMic, (PUCHAR)(keyMaterial) + 16, 8); + memcpy(pAdapter->PortCfg.GroupKey[0].BssId, &pAdapter->PortCfg.Bssid, 6); + + // Init TxTsc to one based on WiFi WPA specs + pAdapter->PortCfg.GroupKey[0].TxTsc[0] = 1; + pAdapter->PortCfg.GroupKey[0].TxTsc[1] = 0; + pAdapter->PortCfg.GroupKey[0].TxTsc[2] = 0; + pAdapter->PortCfg.GroupKey[0].TxTsc[3] = 0; + pAdapter->PortCfg.GroupKey[0].TxTsc[4] = 0; + pAdapter->PortCfg.GroupKey[0].TxTsc[5] = 0; + + // 802.1x port control + pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_SECURED; + } + + return TRUE; +} + +/* + ========================================================================== + Description: + Read / Write BBP +Arguments: + pAdapter Pointer to our adapter + wrq Pointer to the ioctl argument + + Return Value: + None + + Note: + Usage: + 1.) iwpriv ra0 bbp ==> read all BBP + 2.) iwpriv ra0 bbp 1,2,10,32 ==> raed BBP where ID=1,2,10,32 + 3.) iwpriv ra0 bbp 1=10,17=3E ==> write BBP R1=0x10, R17=0x3E + ========================================================================== +*/ +VOID RTMPIoctlBBP( + IN PRTMP_ADAPTER pAdapter, + IN struct iwreq *wrq) +{ + char *this_char; + char *value; + int i=0; + int count = 0; + UCHAR regBBP; + char *msg = NULL; + char *arg = NULL; + char *ptr; + ULONG bbpId; + ULONG bbpValue; + BOOLEAN bIsPrintAllBBP = FALSE; + + msg = kmalloc(1024, GFP_KERNEL); + arg = kmalloc(255, GFP_KERNEL); + + DBGPRINT(RT_DEBUG_TRACE, "==>RTMPIoctlBBP\n"); + memset(msg, 0x00, 1024); + memset(arg, 0x00, 255); + if (wrq->u.data.length > 1) //No parameters. + { + memcpy(arg, wrq->u.data.pointer, (wrq->u.data.length > 255) ? 255 : wrq->u.data.length); + ptr = arg; + sprintf(msg, "\n"); + //Parsing Read or Write + while ((this_char = strsep(&ptr, ",")) != NULL) + { + i++; + DBGPRINT(RT_DEBUG_TRACE, "this_char=%s\n", this_char); + if (!*this_char) + continue; + + if ((value = rtstrchr(this_char, '=')) != NULL) + *value++ = 0; + + if (!value || !*value) + { //Read + DBGPRINT(RT_DEBUG_TRACE, "this_char=%s, value=%s\n", this_char, value); + bbpId = simple_strtol(this_char, 0, 10); + if ((bbpId >=0) && (bbpId <= 63)) + { + RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, bbpId, ®BBP); + sprintf(msg+strlen(msg), "R%02d[0x%02X]:%02X ", bbpId, bbpId*2, regBBP); + count++; + if (count%5 == 4) + sprintf(msg+strlen(msg), "\n"); + DBGPRINT(RT_DEBUG_TRACE, "msg=%s\n", (char*)msg); + } + else + {//Invalid parametes, so default print all bbp + bIsPrintAllBBP = TRUE; + break; + } + } + else + { //Write + DBGPRINT(RT_DEBUG_TRACE, "this_char=%s, value=%s\n", this_char, value); + bbpId = simple_strtol(this_char, 0, 10); + bbpValue = simple_strtol(value, 0, 10); + DBGPRINT(RT_DEBUG_TRACE, "bbpID=%02d, value=0x%x\n", bbpId, bbpValue); + if ((bbpId >=0) && (bbpId <= 63)) + { + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, (UCHAR) bbpId, (UCHAR) bbpValue); + //Read it back for showing + RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, bbpId, ®BBP); + sprintf(msg+strlen(msg), "R%02d[0x%02X]:%02X ", bbpId, bbpId*2, regBBP); + count++; + if (count%5 == 4) + sprintf(msg+strlen(msg), "\n"); + DBGPRINT(RT_DEBUG_TRACE, "msg=%s\n", (char*)msg); + } + else + {//Invalid parametes, so default print all bbp + bIsPrintAllBBP = TRUE; + break; + } + } + } + } + else + bIsPrintAllBBP = TRUE; + + if (bIsPrintAllBBP) + { + memset(msg, 0x00, 1024); + sprintf(msg, "\n"); + for (i = 0; i <= 63; i++) + { + RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, i, ®BBP); + sprintf(msg+strlen(msg), "R%02d[0x%02X]:%02X ", i, i*2, regBBP); + if (i%5 == 4) + sprintf(msg+strlen(msg), "\n"); + } + // Copy the information into the user buffer + wrq->u.data.length = strlen(msg); + if(copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length)) + DBGPRINT(RT_DEBUG_ERROR, "RTMPIoctlBBP - copy to user failure\n"); + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "copy to user [msg=%s]\n", (char*)msg); + // Copy the information into the user buffer + wrq->u.data.length = strlen(msg); + if(copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length)) + DBGPRINT(RT_DEBUG_ERROR, "RTMPIoctlBBP - copy to user failure\n"); + } + DBGPRINT(RT_DEBUG_TRACE, "<==RTMPIoctlBBP\n"); + + kfree(msg); + kfree(arg); +} + +int RTMPIoctlRFMONTX( + IN PRTMP_ADAPTER pAdapter, + IN OUT struct iwreq *wrq) +{ + char *pvalue; + char value; + + if (wrq->u.data.length) /* Argument : set the state. */ + { + pvalue = wrq->u.data.pointer; + value = *pvalue; + + if (value == 1) + { + pAdapter->PortCfg.MallowRFMONTx = TRUE; + pAdapter->net_dev->type = 801; // ARPHRD_IEEE80211 + } + else if (!value) + { + pAdapter->PortCfg.MallowRFMONTx = FALSE; + pAdapter->net_dev->type = 802; // ARPHRD_IEEE80211_PRISM + } + else return -EINVAL; + } + + /* Display the state. Use "value" to indicate it. */ + value = pAdapter->PortCfg.MallowRFMONTx == TRUE ? '1' + : '0'; + wrq->u.data.length = sizeof (char); + + if (copy_to_user (wrq->u.data.pointer, &value, wrq->u.data.length)) + DBGPRINT (RT_DEBUG_ERROR, "RTMPIoctlRFMONTX - copy to user failure.\n"); + + return 0; +} + +/* + ========================================================================== + Description: + Read / Write MAC +Arguments: + pAdapter Pointer to our adapter + wrq Pointer to the ioctl argument + + Return Value: + None + + Note: + Usage: + 1.) iwpriv ra0 mac 0 ==> read MAC where Addr=0x0 + 2.) iwpriv ra0 mac 0=12 ==> write MAC where Addr=0x0, value=12 + ========================================================================== +*/ +VOID RTMPIoctlMAC( + IN PRTMP_ADAPTER pAdapter, + IN struct iwreq *wrq) +{ + char *this_char; + char *value; + int j=0, k=0; + int count = 0; + char *msg; + char *arg; + char *ptr; + ULONG macAddr = 0; + UCHAR temp[16], temp2[16]; + ULONG macValue; + + msg = kmalloc(1024, GFP_KERNEL); + arg = kmalloc(255, GFP_KERNEL); + + DBGPRINT(RT_DEBUG_TRACE, "==>RTMPIoctlMAC\n"); + memset(msg, 0x00, 1024); + memset(arg, 0x00, 255); + + if (wrq->u.data.length > 1) //No parameters. + { + memcpy(arg, wrq->u.data.pointer, (wrq->u.data.length > 255) ? 255 : wrq->u.data.length); + ptr = arg; + sprintf(msg, "\n"); + //Parsing Read or Write + while ((this_char = strsep(&ptr, ",")) != NULL) + { + DBGPRINT(RT_DEBUG_TRACE, "this_char=%s\n", this_char); + if (!*this_char) + continue; + + if ((value = rtstrchr(this_char, '=')) != NULL) + *value++ = 0; + + if (!value || !*value) + { //Read + // Sanity check + if(strlen(this_char) > 4) + break; + + j = strlen(this_char); + while(j-- > 0) + { + if(this_char[j] > 'f' || this_char[j] < '0') + return; + } + + // Mac Addr + k = j = strlen(this_char); + while(j-- > 0) + { + this_char[4-k+j] = this_char[j]; + } + + while(k < 4) + this_char[3-k++]='0'; + this_char[4]='\0'; + + if(strlen(this_char) == 4) + { + AtoH(this_char, temp, 4); + macAddr = *temp*256 + temp[1]; + if (macAddr < 0xFFFF) + { + RTMP_IO_READ32(pAdapter, macAddr, &macValue); + DBGPRINT(RT_DEBUG_TRACE, "macAddr=%x, regMAC=%x\n", macAddr, macValue); + sprintf(msg+strlen(msg), "[0x%08X]:%08X ", macAddr , macValue); + count++; + if (count%5 == 4) + sprintf(msg+strlen(msg), "\n"); + DBGPRINT(RT_DEBUG_TRACE, "msg=%s\n", (char*)msg); + } + else + {//Invalid parametes, so default print all bbp + break; + } + } + } + else + { //Write + memcpy(&temp2, value, strlen(value)); + temp2[strlen(value)] = '\0'; + + // Sanity check + if((strlen(this_char) > 4) || strlen(temp2) > 8) + break; + + j = strlen(this_char); + while(j-- > 0) + { + if(this_char[j] > 'f' || this_char[j] < '0') + return; + } + + j = strlen(temp2); + while(j-- > 0) + { + if(temp2[j] > 'f' || temp2[j] < '0') + return; + } + + //MAC Addr + k = j = strlen(this_char); + while(j-- > 0) + { + this_char[4-k+j] = this_char[j]; + } + + while(k < 4) + this_char[3-k++]='0'; + this_char[4]='\0'; + + //MAC value + k = j = strlen(temp2); + while(j-- > 0) + { + temp2[8-k+j] = temp2[j]; + } + + while(k < 8) + temp2[7-k++]='0'; + temp2[8]='\0'; + + { + AtoH(this_char, temp, 4); + macAddr = *temp*256 + temp[1]; + + AtoH(temp2, temp, 8); + macValue = *temp*256*256*256 + temp[1]*256*256 + temp[2]*256 + temp[3]; + + DBGPRINT(RT_DEBUG_TRACE, "macAddr=%02x, macValue=0x%x\n", macAddr, macValue); + + RTMP_IO_WRITE32(pAdapter, macAddr, macValue); + sprintf(msg+strlen(msg), "[0x%02X]:%02X ", macAddr, macValue); + count++; + if (count%5 == 4) + sprintf(msg+strlen(msg), "\n"); + DBGPRINT(RT_DEBUG_TRACE, "msg=%s\n", (char*)msg); + } + } + } + } + + if(strlen(msg) == 1) + sprintf(msg+strlen(msg), "===>Error command format!"); + DBGPRINT(RT_DEBUG_TRACE, "copy to user [msg=%s]\n", (char*)msg); + // Copy the information into the user buffer + wrq->u.data.length = strlen(msg); + if(copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length)) + DBGPRINT(RT_DEBUG_ERROR, "RTMPIoctlMAC - copy to user failure.\n"); + + DBGPRINT(RT_DEBUG_TRACE, "<==RTMPIoctlMAC\n"); + + kfree(msg); + kfree(arg); +} + +#ifdef RALINK_ATE + +/* + ========================================================================== + Description: + Read / Write E2PROM +Arguments: + pAdapter Pointer to our adapter + wrq Pointer to the ioctl argument + + Return Value: + None + + Note: + Usage: + 1.) iwpriv ra0 e2p 0 ==> read E2PROM where Addr=0x0 + 2.) iwpriv ra0 e2p 0=1234 ==> write E2PROM where Addr=0x0, value=1234 + ========================================================================== +*/ +VOID RTMPIoctlE2PROM( + IN PRTMP_ADAPTER pAdapter, + IN struct iwreq *wrq) +{ + char *this_char; + char *value; + int j=0, k=0; + int count = 0; + char *msg; + char *arg; + char *ptr; + USHORT eepAddr = 0; + UCHAR temp[16], temp2[16]; + USHORT eepValue; + + msg = kmalloc(1024, GFP_KERNEL); + arg = kmalloc(255, GFP_KERNEL); + + DBGPRINT(RT_DEBUG_TRACE, "==>RTMPIoctlE2PROM\n"); + memset(msg, 0x00, 1024); + memset(arg, 0x00, 255); + + memset(msg, 0x00, 1024); + if (wrq->u.data.length > 1) //No parameters. + { + memcpy(arg, wrq->u.data.pointer, (wrq->u.data.length > 255) ? 255 : wrq->u.data.length); + ptr = arg; + sprintf(msg, "\n"); + //Parsing Read or Write + while ((this_char = strsep(&ptr, ",")) != NULL) + { + DBGPRINT(RT_DEBUG_TRACE, "this_char=%s\n", this_char); + if (!*this_char) + continue; + + if ((value = strchr(this_char, '=')) != NULL) + *value++ = 0; + + if (!value || !*value) + { //Read + DBGPRINT(RT_DEBUG_TRACE, "Read: this_char=%s, strlen=%d\n", this_char, strlen(this_char)); + + // Sanity check + if(strlen(this_char) > 4) + break; + + j = strlen(this_char); + while(j-- > 0) + { + if(this_char[j] > 'f' || this_char[j] < '0') + return; + } + + // E2PROM addr + k = j = strlen(this_char); + while(j-- > 0) + { + this_char[4-k+j] = this_char[j]; + } + + while(k < 4) + this_char[3-k++]='0'; + this_char[4]='\0'; + + if(strlen(this_char) == 4) + { + AtoH(this_char, temp, 4); + eepAddr = *temp*256 + temp[1]; + if (eepAddr < 0xFFFF) + { + eepValue = RTMP_EEPROM_READ16(pAdapter, eepAddr); + DBGPRINT(RT_DEBUG_TRACE, "eepAddr=%x, eepValue=%x\n", eepAddr, eepValue); + sprintf(msg+strlen(msg), "[0x%04X]:%04X ", eepAddr , eepValue); + count++; + if (count%5 == 4) + sprintf(msg+strlen(msg), "\n"); + DBGPRINT(RT_DEBUG_TRACE, "msg=%s\n", *msg); + } + else + {//Invalid parametes, so default printk all bbp + break; + } + } + } + else + { //Write + DBGPRINT(RT_DEBUG_TRACE, "Write: this_char=%s, strlen(value)=%d, value=%s\n", this_char, strlen(value), value); + memcpy(&temp2, value, strlen(value)); + temp2[strlen(value)] = '\0'; + + // Sanity check + if((strlen(this_char) > 4) || strlen(temp2) > 8) + break; + + j = strlen(this_char); + while(j-- > 0) + { + if(this_char[j] > 'f' || this_char[j] < '0') + return; + } + j = strlen(temp2); + while(j-- > 0) + { + if(temp2[j] > 'f' || temp2[j] < '0') + return; + } + + //MAC Addr + k = j = strlen(this_char); + while(j-- > 0) + { + this_char[4-k+j] = this_char[j]; + } + + while(k < 4) + this_char[3-k++]='0'; + this_char[4]='\0'; + + //MAC value + k = j = strlen(temp2); + while(j-- > 0) + { + temp2[4-k+j] = temp2[j]; + } + + while(k < 4) + temp2[3-k++]='0'; + temp2[4]='\0'; + + AtoH(this_char, temp, 4); + eepAddr = *temp*256 + temp[1]; + + AtoH(temp2, temp, 4); + eepValue = *temp*256 + temp[1]; + + DBGPRINT(RT_DEBUG_TRACE, "eepAddr=%02x, eepValue=0x%x\n", eepAddr, eepValue); + + RTMP_EEPROM_WRITE16(pAdapter, eepAddr, eepValue); + sprintf(msg+strlen(msg), "[0x%02X]:%02X ", eepAddr, eepValue); + count++; + if (count%5 == 4) + sprintf(msg+strlen(msg), "\n"); + DBGPRINT(RT_DEBUG_TRACE, "msg=%s\n", *msg); + } + } + } + + if(strlen(msg) == 1) + sprintf(msg+strlen(msg), "===>Error command format!"); + + // Copy the information into the user buffer + DBGPRINT(RT_DEBUG_TRACE, "copy to user [msg=%s]\n", *msg); + wrq->u.data.length = strlen(msg); + copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length); + + DBGPRINT(RT_DEBUG_TRACE, "<==RTMPIoctlE2PROM\n"); + + kfree(msg); + kfree(arg); +} + +UCHAR TempletFrame[24] = {0x08,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xAA,0xBB,0x12,0x34,0x56,0x00,0x11,0x22,0xAA,0xBB,0xCC,0x00,0x00}; // 802.11 MAC Header, Type:Data, Length:24bytes + +/* + ========================================================================== + Description: + Set ATE operation mode to + 0. APSTOP = Stop STA Mode + 1. APSTART = Start STA Mode + 2. TXCONT = Continuous Transmit + 3. TXCARR = Transmit Carrier + 4. TXFRAME = Transmit Frames + 5. RXFRAME = Receive Frames + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_ATE_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + USHORT BbpData; + ULONG MacData; + PTXD_STRUC pTxD; + PUCHAR pDest; + UINT i, j; + + DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_Proc (arg = %s)\n", arg); + + mdelay(5); + + AsicSwitchChannel(pAdapter, pAdapter->ate.Channel); + AsicLockChannel(pAdapter, pAdapter->ate.Channel); + + mdelay(5); + + RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, 63, &BbpData); + RTMP_IO_READ32(pAdapter, MACCSR1, &MacData); + + BbpData = 0; + MacData &= 0xFBFFFFFF; + + if (!strcmp(arg, "STASTOP")) + { + DBGPRINT(RT_DEBUG_TRACE, "ATE: STASTOP\n"); + + RTMP_IO_WRITE32(pAdapter, MACCSR1, MacData); + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, 63, BbpData); + + pAdapter->ate.Mode = ATE_STASTOP; + + LinkDown(pAdapter); + AsicEnableBssSync(pAdapter); + netif_stop_queue(pAdapter->net_dev); + RTMPStationStop(pAdapter); + RTMP_IO_WRITE32(pAdapter, RXCSR0, 0xffffffff); // Stop Rx + } + else if (!strcmp(arg, "STASTART")) + { + DBGPRINT(RT_DEBUG_TRACE, "ATE: STASTART\n"); + + RTMP_IO_WRITE32(pAdapter, MACCSR1, MacData); + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, 63, BbpData); + + pAdapter->ate.Mode = ATE_STASTART; + + RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x56); // Start Rx + netif_start_queue(pAdapter->net_dev); + RTMPStationStart(pAdapter); + } + else if (!strcmp(arg, "TXCONT")) // Continuous Tx + { + DBGPRINT(RT_DEBUG_TRACE, "ATE: TXCONT\n"); + + pAdapter->ate.Mode = ATE_TXCONT; + + BbpData |= 0x80; + MacData |= 0x04000000; + + RTMP_IO_WRITE32(pAdapter, MACCSR1, MacData); + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, 63, BbpData); + + for (i = 0; (i < TX_RING_SIZE) && (i < pAdapter->ate.TxCount); i++) + { + pTxD = (PTXD_STRUC)pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; + pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; + + // Prepare frame payload + memcpy(pDest, &TempletFrame, LENGTH_802_11); + for(j = LENGTH_802_11; j < pAdapter->ate.TxLength; j++) + pDest[j] = 0xAA; + memcpy(&pDest[4], &pAdapter->ate.Addr1, ETH_LENGTH_OF_ADDRESS); + memcpy(&pDest[10], &pAdapter->ate.Addr2, ETH_LENGTH_OF_ADDRESS); + memcpy(&pDest[16], &pAdapter->ate.Addr3, ETH_LENGTH_OF_ADDRESS); + + RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, + SHORT_RETRY, IFS_BACKOFF, pAdapter->ate.TxRate, 4, + pAdapter->ate.TxLength, pAdapter->PortCfg.TxPreambleInUsed, 0); + + pAdapter->CurEncryptIndex++; + if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) + { + pAdapter->CurEncryptIndex = 0; + } + } + + RTMP_IO_WRITE32(pAdapter, RXCSR0, 0xffffffff); + RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); + } + else if (!strcmp(arg, "TXCARR")) // Tx Carrier ------------------------------------- + { + DBGPRINT(RT_DEBUG_TRACE, "ATE: TXCARR\n"); + pAdapter->ate.Mode = ATE_TXCARR; + + BbpData |= 0x40; + MacData |= 0x04000000; + + RTMP_IO_WRITE32(pAdapter, MACCSR1, MacData); + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, 63, BbpData); + + for (i = 0; (i < TX_RING_SIZE) && (i < pAdapter->ate.TxCount); i++) + { + pTxD = (PTXD_STRUC)pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; + pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; + + // Prepare frame payload + memcpy(pDest, &TempletFrame, LENGTH_802_11); + for(j = LENGTH_802_11; j < pAdapter->ate.TxLength; j++) + pDest[j] = 0xAA; + memcpy(&pDest[4], &pAdapter->ate.Addr1, ETH_LENGTH_OF_ADDRESS); + memcpy(&pDest[10], &pAdapter->ate.Addr2, ETH_LENGTH_OF_ADDRESS); + memcpy(&pDest[16], &pAdapter->ate.Addr3, ETH_LENGTH_OF_ADDRESS); + + RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, + SHORT_RETRY, IFS_BACKOFF, pAdapter->ate.TxRate, 4, + pAdapter->ate.TxLength, pAdapter->PortCfg.TxPreambleInUsed, 0); + + pAdapter->CurEncryptIndex++; + if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) + { + pAdapter->CurEncryptIndex = 0; + } + } + + RTMP_IO_WRITE32(pAdapter, RXCSR0, 0xffffffff); + RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); + } + else if (!strcmp(arg, "TXFRAME")) // Tx Frames -------------------------------------- + { + DBGPRINT(RT_DEBUG_TRACE, "ATE: TXFRAME(Count=%d)\n", pAdapter->ate.TxCount); + pAdapter->ate.Mode = ATE_TXFRAME; + + RTMP_IO_WRITE32(pAdapter, MACCSR1, MacData); + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, 63, BbpData); + + pAdapter->ate.TxDoneCount = 0; + + for (i = 0; (i < TX_RING_SIZE) && (i < pAdapter->ate.TxCount); i++) + { + pTxD = (PTXD_STRUC)pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; + pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; + + // Prepare frame payload + memcpy(pDest, &TempletFrame, LENGTH_802_11); + for(j = LENGTH_802_11; j < pAdapter->ate.TxLength; j++) + pDest[j] = 0xAA; + memcpy(&pDest[4], &pAdapter->ate.Addr1, ETH_LENGTH_OF_ADDRESS); + memcpy(&pDest[10], &pAdapter->ate.Addr2, ETH_LENGTH_OF_ADDRESS); + memcpy(&pDest[16], &pAdapter->ate.Addr3, ETH_LENGTH_OF_ADDRESS); + + RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, + SHORT_RETRY, IFS_BACKOFF, pAdapter->ate.TxRate, 4, + pAdapter->ate.TxLength, Rt802_11PreambleLong, 0); + + pAdapter->CurEncryptIndex++; + if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) + { + pAdapter->CurEncryptIndex = 0; + } + } + pAdapter->ate.TxDoneCount += i; + DBGPRINT(RT_DEBUG_TRACE, "TXFRAME txcount=%d\n", pAdapter->ate.TxCount); + DBGPRINT(RT_DEBUG_TRACE, "pAdapter->ate.TxDoneCount = %d\n", pAdapter->ate.TxDoneCount); + + RTMP_IO_WRITE32(pAdapter, RXCSR0, 0xffffffff); + RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); + } + else if (!strcmp(arg, "RXFRAME")) // Rx Frames -------------------------------------- + { + DBGPRINT(RT_DEBUG_TRACE, "ATE: RXFRAME\n"); + + RTMP_IO_WRITE32(pAdapter, MACCSR1, MacData); + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, 63, BbpData); + + pAdapter->ate.Mode = ATE_RXFRAME; + pAdapter->ate.TxDoneCount = pAdapter->ate.TxCount; + + RTMP_IO_WRITE32(pAdapter, TXCSR0, 0x08); // Abort Tx + RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x56); // Start Rx + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "ATE: Invalid arg!\n"); + return FALSE; + } + + mdelay(5); + + DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_Proc\n"); + return TRUE; +} + +/* + ========================================================================== + Description: + Set ATE ADDR1=DA for TxFrames Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_ATE_DA_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + char *value; + int i; + + DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_DA_Proc\n"); + DBGPRINT(RT_DEBUG_TRACE, "arg=%s\n", arg); + + if(strlen(arg) != 17) //Mac address acceptable format 01:02:03:04:05:06 length 17 + return FALSE; + + for (i=0, value = strtok(arg,":"); value; value = strtok(NULL,":")) + { + if((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))) ) + return FALSE; //Invalid + + AtoH(value, &pAdapter->ate.Addr1[i++], 2); + } + + if(i != 6) + return FALSE; //Invalid + + DBGPRINT(RT_DEBUG_TRACE, "DA=%2X:%2X:%2X:%2X:%2X:%2X\n", pAdapter->ate.Addr1[0], pAdapter->ate.Addr1[1], pAdapter->ate.Addr1[2], pAdapter->ate.Addr1[3], pAdapter->ate.Addr1[4], pAdapter->ate.Addr1[5]); + DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_DA_Proc\n"); + + return TRUE; +} + +/* + ========================================================================== + Description: + Set ATE ADDR2=SA for TxFrames Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_ATE_SA_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + char *value; + int i; + + DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_SA_Proc\n"); + DBGPRINT(RT_DEBUG_TRACE, "arg=%s\n", arg); + + if(strlen(arg) != 17) //Mac address acceptable format 01:02:03:04:05:06 length 17 + return FALSE; + + for (i=0, value = strtok(arg,":"); value; value = strtok(NULL,":")) + { + if((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))) ) + return FALSE; //Invalid + + AtoH(value, &pAdapter->ate.Addr2[i++], 2); + } + + if(i != 6) + return FALSE; //Invalid + + DBGPRINT(RT_DEBUG_TRACE, "DA=%2X:%2X:%2X:%2X:%2X:%2X\n", pAdapter->ate.Addr2[0], pAdapter->ate.Addr2[1], pAdapter->ate.Addr2[2], pAdapter->ate.Addr2[3], pAdapter->ate.Addr2[4], pAdapter->ate.Addr2[5]); + DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_SA_Proc\n"); + + return TRUE; +} + +/* + ========================================================================== + Description: + Set ATE ADDR3=BSSID for TxFrames Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_ATE_BSSID_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + char *value; + int i; + + DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_BSSID_Proc\n"); + DBGPRINT(RT_DEBUG_TRACE, "arg=%s\n", arg); + + if(strlen(arg) != 17) //Mac address acceptable format 01:02:03:04:05:06 length 17 + return FALSE; + + for (i=0, value = strtok(arg,":"); value; value = strtok(NULL,":")) + { + if((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))) ) + return FALSE; //Invalid + + AtoH(value, &pAdapter->ate.Addr3[i++], 2); + } + + if(i != 6) + return FALSE; //Invalid + + DBGPRINT(RT_DEBUG_TRACE, "DA=%2X:%2X:%2X:%2X:%2X:%2X\n", pAdapter->ate.Addr3[0], pAdapter->ate.Addr3[1], pAdapter->ate.Addr3[2], pAdapter->ate.Addr3[3], pAdapter->ate.Addr3[4], pAdapter->ate.Addr3[5]); + DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_BSSID_Proc\n"); + + return TRUE; +} + +/* + ========================================================================== + Description: + Set ATE Channel Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_ATE_CHANNEL_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_CHANNEL_Proc (arg = %s)\n", arg); + + pAdapter->ate.Channel = simple_strtol(arg, 0, 10); + if((pAdapter->ate.Channel < 1) || (pAdapter->ate.Channel > 14)) + { + pAdapter->ate.Channel = 1; + return FALSE; + } + + DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_CHANNEL_Proc (ATE Channel = %d)\n", pAdapter->ate.Channel); + + return TRUE; +} + +/* + ========================================================================== + Description: + Set ATE Tx Power Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_ATE_TX_POWER_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + ULONG R3; + + DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_TX_POWER_Proc\n"); + DBGPRINT(RT_DEBUG_TRACE, "arg=%s\n", arg); + + pAdapter->ate.TxPower = simple_strtol(arg, 0, 10); + + if(pAdapter->ate.TxPower >= 32) + { + pAdapter->ate.TxPower = pAdapter->PortCfg.ChannelTxPower[pAdapter->PortCfg.Channel - 1];; + return FALSE; + } + + R3 = pAdapter->ate.TxPower; + R3 = R3 << 9; // shift TX power control to correct RF register bit position + + R3 |= (pAdapter->PortCfg.LatchRfRegs.R3 & 0xffffc1ff); + RTMP_RF_IO_WRITE32(pAdapter, R3); + + DBGPRINT(RT_DEBUG_TRACE, "TxPower = %d\n", pAdapter->ate.TxPower); + DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_TX_POWER_Proc\n"); + + return TRUE; +} + +/* + ========================================================================== + Description: + Set ATE Tx Length Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_ATE_TX_LENGTH_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_TX_LENGTH_Proc\n"); + DBGPRINT(RT_DEBUG_TRACE, "arg=%s\n", arg); + + pAdapter->ate.TxLength = simple_strtol(arg, 0, 10); + + if((pAdapter->ate.TxLength < 24) || (pAdapter->ate.TxLength > 1500)) + { + pAdapter->ate.TxLength = 1500; + return FALSE; + } + + DBGPRINT(RT_DEBUG_TRACE, "TxLength = %d\n", pAdapter->ate.TxLength); + DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_TX_LENGTH_Proc\n"); + + return TRUE; +} + +/* + ========================================================================== + Description: + Set ATE Tx Count Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_ATE_TX_COUNT_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_TX_COUNT_Proc\n"); + DBGPRINT(RT_DEBUG_TRACE, "arg=%s\n", arg); + + pAdapter->ate.TxCount = simple_strtol(arg, 0, 10); + + DBGPRINT(RT_DEBUG_TRACE, "TxCount = %d\n", pAdapter->ate.TxCount); + DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_TX_COUNT_Proc\n"); + + return TRUE; +} + +/* + ========================================================================== + Description: + Set ATE Tx Rate + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== +*/ +INT Set_ATE_TX_RATE_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg) +{ + DBGPRINT(RT_DEBUG_TRACE, "==> Set_ATE_TX_RATE_Proc\n"); + DBGPRINT(RT_DEBUG_TRACE, "arg=%s\n", arg); + + pAdapter->ate.TxRate = simple_strtol(arg, 0, 10); + + if(pAdapter->ate.TxRate > RATE_54) + { + pAdapter->ate.TxRate = RATE_11; + return FALSE; + } + + DBGPRINT(RT_DEBUG_TRACE, "TxRate = %d\n", pAdapter->ate.TxRate); + DBGPRINT(RT_DEBUG_TRACE, "<== Set_ATE_TX_RATE_Proc\n"); + + return TRUE; +} + +VOID RTMPStationStop( + IN PRTMP_ADAPTER pAd) +{ + DBGPRINT(RT_DEBUG_TRACE, "==> RTMPStationStop\n"); + RTMPCancelTimer(&pAd->timer); + RTMPCancelTimer(&pAd->Mlme.AssocAux.AssocTimer); + RTMPCancelTimer(&pAd->Mlme.AssocAux.ReassocTimer); + RTMPCancelTimer(&pAd->Mlme.AssocAux.DisassocTimer); + RTMPCancelTimer(&pAd->Mlme.AuthAux.AuthTimer); + RTMPCancelTimer(&pAd->Mlme.AuthRspAux.AuthRspTimer); + RTMPCancelTimer(&pAd->Mlme.SyncAux.BeaconTimer); + RTMPCancelTimer(&pAd->Mlme.SyncAux.ScanTimer); + RTMPCancelTimer(&pAd->Mlme.PeriodicTimer); + RTMPCancelTimer(&pAd->PortCfg.RfTuningTimer); + if (pAd->PortCfg.LedMode == LED_MODE_TXRX_ACTIVITY) + RTMPCancelTimer(&pAd->PortCfg.LedCntl.BlinkTimer); + RTMPCancelTimer(&pAd->PortCfg.RxAnt.RxAntDiversityTimer); + DBGPRINT(RT_DEBUG_TRACE, "<== RTMPStationStop\n"); +} + +VOID RTMPStationStart( + IN PRTMP_ADAPTER pAd) +{ + DBGPRINT(RT_DEBUG_TRACE, "==> RTMPStationStart\n"); + RTMPSetTimer(pAd, &pAd->Mlme.PeriodicTimer, MLME_TASK_EXEC_INTV); + //RTMPSetTimer(pAd, &pAd->timer, DEBUG_TASK_DELAY); //not used. + DBGPRINT(RT_DEBUG_TRACE, "<== RTMPStationStart\n"); +} + +#endif //#ifdef RALINK_ATE + + --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/rtmp_data.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/rtmp_data.c @@ -1,4021 +1,4089 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: rtmp_data.c - * - * Abstract: Data path subroutines - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * John 25th Feb 03 Modify for rt2560 - * MarkW 8th Dec 04 Baseline code - * MarkW (rt2400) 8th Dec 04 Promisc mode support - * RobinC 10th Dec 04 RFMON Support - * MarkW 10th Dec 04 Rolled in Ralink 1.4.5.0 - * MarkW 17th Dec 04 Monitor mode through iwconfig - * MarkW 19th Feb 05 Fixes to incoming byte count - * GregorG 29th Mar 05 Big endian fixes - ***************************************************************************/ - -#include "rt_config.h" - -static UCHAR SNAP_802_1H[] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00}; -static UCHAR SNAP_BRIDGE_TUNNEL[] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8}; -static UCHAR EAPOL[] = {0x88, 0x8e}; - -static UCHAR IPX[] = {0x81, 0x37}; -static UCHAR APPLE_TALK[] = {0x80, 0xf3}; -static UCHAR PlcpSignal[12] = { - 0, /* RATE_1 */ 1, /* RATE_2 */ 2, /* RATE_5_5 */ 3, /* RATE_11 */ // see BBP spec - 11, /* RATE_6 */ 15, /* RATE_9 */ 10, /* RATE_12 */ 14, /* RATE_18 */ // see IEEE802.11a-1999 p.14 - 9, /* RATE_24 */ 13, /* RATE_36 */ 8, /* RATE_48 */ 12 /* RATE_54 */ }; // see IEEE802.11a-1999 p.14 - -#define COLLECT_RX_ANTENNA_AVERAGE_RSSI(_pAd, _RxAnt, _rssi) \ -{ \ - USHORT AvgRssi; \ - if (_RxAnt.PrimaryInUsed) \ - { \ - AvgRssi = _RxAnt.AvgRssi[_RxAnt.PrimaryRxAnt]; \ - if (AvgRssi > 0) \ - AvgRssi = AvgRssi - (AvgRssi >> 3) + _rssi; \ - else \ - AvgRssi = _rssi << 3; \ - _RxAnt.AvgRssi[_RxAnt.PrimaryRxAnt] = AvgRssi; \ - } \ - else \ - { \ - AvgRssi = _RxAnt.AvgRssi[_RxAnt.SecondaryRxAnt]; \ - _RxAnt.RcvPktNumWhenEvaluate++;\ - if ((AvgRssi > 0) && (_RxAnt.FirstPktArrivedWhenEvaluate)) \ - AvgRssi = AvgRssi - (AvgRssi >> 3) + _rssi; \ - else \ - { \ - _RxAnt.FirstPktArrivedWhenEvaluate = TRUE; \ - AvgRssi = _rssi << 3; \ - DBGPRINT(RT_DEBUG_TRACE,"Reset RSSI(%d) when first packet is rcved \n",_rssi-_pAd->PortCfg.RssiToDbm); \ - } \ - } \ -} \ - -/* - ======================================================================== - - Routine Description: - Check Rx descriptor, return NDIS_STATUS_FAILURE if any error dound - - Arguments: - pRxD Pointer to the Rx descriptor - - Return Value: - NDIS_STATUS_SUCCESS No err - NDIS_STATUS_FAILURE Error - - Note: - - ======================================================================== -*/ -inline NDIS_STATUS RTMPCheckRxDescriptor( - IN PRXD_STRUC pRxD) -{ - // Phy errors - if (pRxD->PhyErr) - return(NDIS_STATUS_FAILURE); - - // CRC errors - if (pRxD->Crc) - return(NDIS_STATUS_FAILURE); - - // Paul 04-03 for OFDM Rx length issue - if (pRxD->DataByteCnt > 1600) - return(NDIS_STATUS_FAILURE); - - return(NDIS_STATUS_SUCCESS); -} - -#ifdef BIG_ENDIAN -/* - ======================================================================== - - Routine Description: - Endian conversion of Tx/Rx descriptor . - - Arguments: - pAdapter Pointer to our adapter - pData Pointer to Tx/Rx descriptor - DescriptorType Direction of the frame - - Return Value: - None - - Note: - Call this function when read or update descriptor - ======================================================================== -*/ -inline VOID RTMPDescriptorEndianChange( - IN PUCHAR pData, - IN ULONG DescriptorType) -{ - *((ULONG *)(pData + 40)) = SWAP32(*((ULONG *)(pData + 40))); // Byte 10 - if(DescriptorType == TYPE_TXD) - *((ULONG *)(pData + 8)) = SWAP32(*((ULONG *)(pData + 8))); // Byte 2 - *(ULONG *)pData = SWAP32(*(ULONG *)pData); // Byte 0; this must be swapped last -} - -/* - ======================================================================== - - Routine Description: - Endian conversion of all kinds of 802.11 frames . - - Arguments: - pAdapter Pointer to our adapter - pData Pointer to the 802.11 frame structure - Dir Direction of the frame - FromRxDoneInt Caller is from RxDone interrupt - - Return Value: - None - - Note: - Call this function when read or update buffer data - ======================================================================== -*/ -VOID RTMPFrameEndianChange( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pData, - IN ULONG Dir, - IN BOOLEAN FromRxDoneInt) -{ - PMACHDR pFrame; - PUCHAR pMacHdr; - - // swab 16 bit fields - Frame Control field - if(Dir == DIR_READ) - { - *(USHORT *)pData = SWAP16(*(USHORT *)pData); - } - - pFrame = (PMACHDR) pData; - pMacHdr = (PUCHAR) pFrame; - - // swab 16 bit fields - Duration/ID field - *(USHORT *)(pMacHdr + 2) = SWAP16(*(USHORT *)(pMacHdr + 2)); - - // swab 16 bit fields - Sequence Control field - *(USHORT *)(pMacHdr + 22) = SWAP16(*(USHORT *)(pMacHdr + 22)); - - if(pFrame->Type == BTYPE_MGMT) - { - switch(pFrame->SubType) - { - case SUBTYPE_ASSOC_REQ: - case SUBTYPE_REASSOC_REQ: - // swab 16 bit fields - CapabilityInfo field - pMacHdr += MAC_HDR_LEN; - *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); - - // swab 16 bit fields - Listen Interval field - pMacHdr += 2; - *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); - break; - - case SUBTYPE_ASSOC_RSP: - case SUBTYPE_REASSOC_RSP: - // swab 16 bit fields - CapabilityInfo field - pMacHdr += MAC_HDR_LEN; - *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); - - // swab 16 bit fields - Status Code field - pMacHdr += 2; - *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); - - // swab 16 bit fields - AID field - pMacHdr += 2; - *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); - break; - - case SUBTYPE_AUTH: - // If from RTMPHandleRxDoneInterrupt routine, it is still a encrypt format. - // The convertion is delayed to RTMPHandleDecryptionDoneInterrupt. - if(!FromRxDoneInt && pAdapter->NeedSwapToLittleEndian == TRUE) - { - // swab 16 bit fields - Auth Alg No. field - pMacHdr += MAC_HDR_LEN; - *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); - - // swab 16 bit fields - Auth Seq No. field - pMacHdr += 2; - *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); - - // swab 16 bit fields - Status Code field - pMacHdr += 2; - *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); - } - break; - - case SUBTYPE_BEACON: - case SUBTYPE_PROBE_RSP: - // swab 16 bit fields - BeaconInterval field - pMacHdr += MAC_HDR_LEN + TIMESTAMP_LEN; - *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); - - // swab 16 bit fields - CapabilityInfo field - pMacHdr += sizeof(USHORT); - *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); - break; - - case SUBTYPE_DEAUTH: - case SUBTYPE_DISASSOC: - // swab 16 bit fields - Reason code field - pMacHdr += MAC_HDR_LEN; - *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); - break; - } - } - else if( pFrame->Type == BTYPE_DATA ) - { - } - else if(pFrame->Type == BTYPE_CNTL) - { - } - else - { - DBGPRINT(RT_DEBUG_ERROR,"Invalid Frame Type!!!\n"); - } - - // swab 16 bit fields - Frame Control - if(Dir == DIR_WRITE) - { - *(USHORT *)pData = SWAP16(*(USHORT *)pData); - } -} -#endif - -/* - ======================================================================== - - Routine Description: - Process RxDone interrupt, running in DPC level - - Arguments: - pAdapter Pointer to our adapter - - Return Value: - None - - Note: - This routine has to maintain Rx ring read pointer. - ======================================================================== -*/ -VOID RTMPHandleRxDoneInterrupt( - IN PRTMP_ADAPTER pAdapter) -{ - PRXD_STRUC pRxD; -#ifdef BIG_ENDIAN - PRXD_STRUC pDestRxD; - RXD_STRUC RxD; -#endif - PHEADER_802_11 pHeader; - PUCHAR pData; - PUCHAR pDestMac, pSrcMac; - UCHAR Count; - UCHAR KeyIdx; - PWPA_KEY pWpaKey; - NDIS_STATUS Status; - BOOLEAN bDropFrame; - ULONG RegValue;//, Address; - ULONGLONG HwDecryptIndex; - unsigned long irqflag; - - // Make sure Rx ring resource won't be used by other threads - spin_lock_irqsave(&pAdapter->RxRingLock, irqflag); - - // Verify Hardware Decryption pointer with Software Decryption pointer - RTMP_IO_READ32(pAdapter, SECCSR0, &RegValue); - HwDecryptIndex = RegValue - pAdapter->RxRing[0].pa_addr; - do_div(HwDecryptIndex, RING_DESCRIPTOR_SIZE); - -#if 0 - Address = pAdapter->RxRing[pAdapter->CurDecryptIndex].pa_addr; - if (Address != RegValue) - { - DBGPRINT(RT_DEBUG_ERROR,"Decrypt pointer not matched SW = 0x%x, HW = 0x%x\n", Address, RegValue); - DBGPRINT(RT_DEBUG_ERROR,"Sw Decr Ptr = %d, Rx ptr = %d Hw ptr = %d\n", - pAdapter->CurDecryptIndex, pAdapter->CurRxIndex, HwDecryptIndex); - } -#endif - Count = 0; - do - { - // Point to Rx indexed rx ring descriptor -#ifndef BIG_ENDIAN - pRxD = (PRXD_STRUC) pAdapter->RxRing[pAdapter->CurRxIndex].va_addr; -#else - pDestRxD = (PRXD_STRUC) pAdapter->RxRing[pAdapter->CurRxIndex].va_addr; - RxD = *pDestRxD; - pRxD = &RxD; - RTMPDescriptorEndianChange((PUCHAR)pRxD, TYPE_RXD); -#endif - // Initialize drop frame flag - bDropFrame = FALSE; - - // In case of false alarm or processed at last instance - if (pRxD->Owner != DESC_OWN_HOST) - { - break; - } - - // Decrypt engine stuck - if (pRxD->CipherOwner != DESC_OWN_HOST) - { - pAdapter->RalinkCounters.RxRingErrCount++; - break; - } - -#ifdef RALINK_ATE - if(pAdapter->ate.Mode == ATE_RXFRAME) - { - bDropFrame = TRUE; - } -#endif //#ifdef RALINK_ATE - - // Point to Rx ring buffer where stores the real data frame - pData = (PUCHAR) (pAdapter->RxRing[pAdapter->CurRxIndex].va_data_addr); - // Cast to 802.11 header for flags checking - pHeader = (PHEADER_802_11) pData; - -#ifdef BIG_ENDIAN - RTMPFrameEndianChange(pAdapter, (PUCHAR)pHeader, DIR_READ, TRUE); -#endif - - // Check for all RxD errors - Status = RTMPCheckRxDescriptor(pRxD); - - // Apply packet filtering rule based on microsoft requirements. - if (Status == NDIS_STATUS_SUCCESS) - Status = RTMPApplyPacketFilter(pAdapter, pRxD, pHeader); - - // Add receive counters - if (Status == NDIS_STATUS_SUCCESS) - { - // collect current antenna's average RSSI for software-based RX Antenna diversity - if (pRxD->U2M || pAdapter->bAcceptPromiscuous == TRUE || ((pHeader->Controlhead.Frame.Subtype == SUBTYPE_BEACON) && (MAC_ADDR_EQUAL(&pAdapter->PortCfg.Bssid, &pHeader->Controlhead.Addr2)))) - { - //DBGPRINT(RT_DEBUG_TRACE, "COLLECT_RSSI:(%d)\n", pRxD->BBR1 - pAdapter->PortCfg.RssiToDbm); - pAdapter->PortCfg.NumOfAvgRssiSample ++; - COLLECT_RX_ANTENNA_AVERAGE_RSSI(pAdapter, pAdapter->PortCfg.RxAnt, pRxD->BBR1); - - } - } - else - { - // Increase general counters - pAdapter->Counters.RxErrors++; - } - - // Check for retry bit, if this bit is on, search the cache with SA & sequence - // as index, if matched, discard this frame, otherwise, update cache - // This check only apply to unicast data & management frames - if ((Status == NDIS_STATUS_SUCCESS) && (pRxD->U2M) && (pHeader->Controlhead.Frame.Type != BTYPE_CNTL)) - { - if (pHeader->Controlhead.Frame.Retry) - { - if (RTMPSearchTupleCache(pAdapter, pHeader) == TRUE) - { - // Found retry frame in tuple cache, Discard this frame / fragment - // Increase 802.11 counters - INC_COUNTER(pAdapter->WlanCounters.FrameDuplicateCount); - Status = NDIS_STATUS_FAILURE; - } - else - RTMPUpdateTupleCache(pAdapter, pHeader); - } - else // Update Tuple Cache - RTMPUpdateTupleCache(pAdapter, pHeader); - } - - // - // Do RxD release operation for all failure frames - // - pRxD->CipherAlg = CIPHER_NONE; - if (Status == NDIS_STATUS_SUCCESS && pAdapter->PortCfg.BssType != BSS_MONITOR) - { - // pData : Pointer skip the first 24 bytes, 802.11 HEADER - pData += LENGTH_802_11; - - // - // Start of main loop to parse receiving frames. - // The sequence will be Type first, then subtype... - // - switch (pHeader->Controlhead.Frame.Type) - { - // Frame with data type - case BTYPE_DATA: - // Drop not my BSS frame - if (INFRA_ON(pAdapter)) - { - // Infrastructure mode, check address 2 for BSSID - if (!RTMPEqualMemory(&pHeader->Controlhead.Addr2, &pAdapter->PortCfg.Bssid, 6)) - { - // Receive frame not my BSSID - bDropFrame = TRUE; - break; - } - } - else // Ad-Hoc mode or Not associated - { - // Ad-Hoc mode, check address 3 for BSSID - if (!RTMPEqualMemory(&pHeader->Addr3, &pAdapter->PortCfg.Bssid, 6)) - { - // Receive frame not my BSSID - bDropFrame = TRUE; - break; - } - - // Drop frame from AP while we are in Ad-hoc mode or not associated - if (pHeader->Controlhead.Frame.FrDs) - { - bDropFrame = TRUE; - break; - } - } - - // Drop Null data frame, or CF with NULL data frame - if ((pHeader->Controlhead.Frame.Subtype == SUBTYPE_NULL_FUNC) || - (pHeader->Controlhead.Frame.Subtype == SUBTYPE_CFACK) || - (pHeader->Controlhead.Frame.Subtype == SUBTYPE_CFPOLL) || - (pHeader->Controlhead.Frame.Subtype == SUBTYPE_CFACK_CFPOLL)) - { - bDropFrame = TRUE; - break; - } - - // Good data frame appears, increase the counters - INC_COUNTER(pAdapter->WlanCounters.ReceivedFragmentCount); - pAdapter->RalinkCounters.ReceivedByteCount += pRxD->DataByteCnt; - - // Process Multicast data frame - if (pRxD->Mcast) - { - // Multicast 802.11 Counter - INC_COUNTER(pAdapter->WlanCounters.MulticastReceivedFrameCount); - DBGPRINT(RT_DEBUG_INFO,"Receiving multicast frame\n"); - } - - // Init WPA Key to NULL - pWpaKey = (PWPA_KEY) NULL; - - // Find the WPA key, either Group or Pairwise Key - if ((pAdapter->PortCfg.AuthMode >= Ndis802_11AuthModeWPA) && (pHeader->Controlhead.Frame.Wep)) - { - INT idx; - - // First lookup the DA, if it's a group address, use GROUP key - if (pRxD->Bcast || pRxD->Mcast) - { - - idx = (*(pData + 3) & 0xc0) >> 6; - if ((pAdapter->PortCfg.GroupKey[idx].KeyLen != 0) && - ((INFRA_ON(pAdapter) && (NdisEqualMemory(&pHeader->Controlhead.Addr2, &pAdapter->PortCfg.Bssid, 6))) || - (ADHOC_ON(pAdapter) && (NdisEqualMemory(&pHeader->Addr3, &pAdapter->PortCfg.Bssid, 6))))) - { - pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.GroupKey[idx]; - pWpaKey->Type = GROUP_KEY; - DBGPRINT(RT_DEBUG_INFO, "Rx Use Group Key %d\n", idx); - } - } - // Try to find the Pairwise Key - else - { - for (idx = 0; idx < PAIRWISE_KEY_NO; idx++) - { - if ((NdisEqualMemory(&pHeader->Controlhead.Addr2, pAdapter->PortCfg.PairwiseKey[idx].BssId, 6)) && - (pAdapter->PortCfg.PairwiseKey[idx].KeyLen != 0)) - { - pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.PairwiseKey[idx]; - pWpaKey->Type = PAIRWISE_KEY; - DBGPRINT(RT_DEBUG_INFO, "Rx Use Pairwise Key\n"); - break; - } - } -#if 1 - // Use default Group Key if there is no Pairwise key present - if ((pWpaKey == NULL) && (pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId].KeyLen != 0)) - { - pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId]; - pWpaKey->Type = GROUP_KEY; - DBGPRINT(RT_DEBUG_INFO, "Rx Use Group Key\n"); - } -#endif - } - } - - // Process Broadcast & Multicast data frame - if (pRxD->Bcast || pRxD->Mcast) - { - // Drop Mcast / Bcast frame with fragment bit on - if (pHeader->Controlhead.Frame.MoreFrag) - { - DBGPRINT(RT_DEBUG_ERROR,"Receiving multicast frame with fragment bit on\n"); - Status = NDIS_STATUS_FAILURE; - bDropFrame = TRUE; - break; - } - - // Filter out Bcast frame which AP relayed for us - if (pHeader->Controlhead.Frame.FrDs && RTMPEqualMemory(&pHeader->Addr3, pAdapter->CurrentAddress, 6)) - { - Status = NDIS_STATUS_FAILURE; - bDropFrame = TRUE; - break; - } - - // WEP encrypted frame - if (pHeader->Controlhead.Frame.Wep) - { - // Check our WEP setting, if no WEP turning on, just drop this frame - if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) // WEP - { - KeyIdx = (*(pData + 3) & 0xc0) >> 6; - memcpy((PUCHAR) &pRxD->Iv, pData, 4); //Get WEP IV - memcpy(pRxD->Key, pAdapter->PortCfg.SharedKey[KeyIdx].Key, pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen); - if (pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen == 5) - pRxD->CipherAlg = CIPHER_WEP64; - else - pRxD->CipherAlg = CIPHER_WEP128; - } - else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pWpaKey != NULL)) // TKIP - { - UCHAR Eiv_Tmp[4]; - - memcpy((PUCHAR) &pRxD->Iv, pData, 4); //Get WEP IV - // Swap EIV byte order, due to ASIC's bug. - Eiv_Tmp[0] = *(pData + 7); - Eiv_Tmp[1] = *(pData + 6); - Eiv_Tmp[2] = *(pData + 5); - Eiv_Tmp[3] = *(pData + 4); - memcpy((PUCHAR) &pRxD->Eiv, Eiv_Tmp, 4); //Get WEP EIV - // Copy TA into RxD - memcpy(pRxD->TA, &pHeader->Controlhead.Addr2, 6); - KeyIdx = (*(pData + 3) & 0xc0) >> 6; - memcpy(pRxD->Key, pWpaKey->Key, 16); - pRxD->CipherAlg = CIPHER_TKIP; - } - else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) && (pWpaKey != NULL)) // AES - { - memcpy((PUCHAR) &pRxD->Iv, pData, 4); //Get WEP IV - memcpy((PUCHAR) &pRxD->Eiv, (pData + 4), 4); //Get WEP EIV - // Copy TA into RxD - memcpy(pRxD->TA, &pHeader->Controlhead.Addr2, 6); - KeyIdx = (*(pData + 3) & 0xc0) >> 6; - memcpy(pRxD->Key, pWpaKey->Key, 16); - pRxD->CipherAlg = CIPHER_AES; - } - else - { - // Add error counter - Status = NDIS_STATUS_FAILURE; - bDropFrame = TRUE; - break; - } - } - else // Not encrypted frames - { - pRxD->CipherAlg = CIPHER_NONE; - } - } - - // Begin process unicast to me frame - else if (pRxD->U2M || pAdapter->bAcceptPromiscuous == TRUE) - { - // Send PS-Poll for AP to send next data frame - if ((pHeader->Controlhead.Frame.MoreData) && INFRA_ON(pAdapter) && (pAdapter->PortCfg.Psm == PWR_SAVE)) - { - EnqueuePsPoll(pAdapter); - DBGPRINT(RT_DEBUG_TRACE, "Sending PS-POLL\n"); - } - - // - // Begin frame processing - // - pDestMac = (PUCHAR) &(pHeader->Controlhead.Addr1); // DA is always address 1 - if (INFRA_ON(pAdapter)) // For infrastructure, SA is address 3 - pSrcMac = (PUCHAR) &(pHeader->Addr3); - else // For IBSS mode, SA is address 2 - pSrcMac = (PUCHAR) &(pHeader->Controlhead.Addr2); - - // WEP encrypted frame - if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) // WEP - { - if (pHeader->Controlhead.Frame.Wep) - { - KeyIdx = (*(pData + 3) & 0xc0) >> 6; - - memcpy((PUCHAR) &pRxD->Iv, pData, 4); //Get WEP IV - memcpy(pRxD->Key, pAdapter->PortCfg.SharedKey[KeyIdx].Key, pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen); - if (pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen == 5) - pRxD->CipherAlg = CIPHER_WEP64; - else - pRxD->CipherAlg = CIPHER_WEP128; - } - else if ((pAdapter->PortCfg.PrivacyFilter == Ndis802_11PrivFilter8021xWEP) && - (pHeader->Frag == 0)) - { - // Check 802.1x frame, if not drop it. - if (!RTMPEqualMemory(EAPOL, pData + 6, 2)) - { - // Not 802.1X frames - // Add error counter - Status = NDIS_STATUS_FAILURE; - bDropFrame = TRUE; - break; - } - } - } - else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pWpaKey != NULL)) // TKIP - { - if (pHeader->Controlhead.Frame.Wep) - { - UCHAR Eiv_Tmp[4]; - - memcpy((PUCHAR) &pRxD->Iv, pData, 4); //Get WEP IV - // Swap EIV byte order, due to ASIC's bug. - Eiv_Tmp[0] = *(pData + 7); - Eiv_Tmp[1] = *(pData + 6); - Eiv_Tmp[2] = *(pData + 5); - Eiv_Tmp[3] = *(pData + 4); - memcpy((PUCHAR) &pRxD->Eiv, Eiv_Tmp, 4); //Get WEP EIV - KeyIdx = (*(pData + 3) & 0xc0) >> 6; - // Copy TA into RxD - memcpy(pRxD->TA, &pHeader->Controlhead.Addr2, 6); - memcpy(pRxD->Key, pWpaKey->Key, 16); - pRxD->CipherAlg = CIPHER_TKIP; - } - else if ((pAdapter->PortCfg.PrivacyFilter == Ndis802_11PrivFilter8021xWEP) && - (pHeader->Frag == 0)) - { - // Check 802.1x frame, if not drop it. - if (!RTMPEqualMemory(EAPOL, pData + 6, 2)) - { - // Not 802.1X frames - // Add error counter - Status = NDIS_STATUS_FAILURE; - bDropFrame = TRUE; - break; - } - } - } - else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) && (pWpaKey != NULL)) // AES - { - if (pHeader->Controlhead.Frame.Wep) - { - memcpy((PUCHAR) &pRxD->Iv, pData, 4); //Get WEP IV - memcpy((PUCHAR) &pRxD->Eiv, (pData + 4), 4); //Get WEP EIV - // Copy TA into RxD - memcpy(pRxD->TA, &pHeader->Controlhead.Addr2, 6); - KeyIdx = (*(pData + 3) & 0xc0) >> 6; - memcpy(pRxD->Key, pWpaKey->Key, 16); - pRxD->CipherAlg = CIPHER_AES; - } - else if ((pAdapter->PortCfg.PrivacyFilter == Ndis802_11PrivFilter8021xWEP) && - (pHeader->Frag == 0)) - { - // Check 802.1x frame, if not drop it. - if (!RTMPEqualMemory(EAPOL, pData + 6, 2)) - { - // Not 802.1X frames - // Add error counter - Status = NDIS_STATUS_FAILURE; - bDropFrame = TRUE; - break; - } - } - } - else if (pHeader->Controlhead.Frame.Wep) - { - // Drop WEP frame when PrivacyInvoked is FALSE - Status = NDIS_STATUS_FAILURE; - bDropFrame = TRUE; - break; - } - else // Not encryptrd frames - { - pRxD->CipherAlg = CIPHER_NONE; - } - } - break; - - case BTYPE_MGMT: - // Always None encrypted - pRxD->CipherAlg = CIPHER_NONE; - break; - - case BTYPE_CNTL: - // Ignore ??? - bDropFrame = TRUE; - break; - - default : - bDropFrame = TRUE; - break; - } - } - else - bDropFrame = TRUE; - - // Packet will still do NULL cipher operation and drop afterward - if (bDropFrame == TRUE) - { - pRxD->Drop = 1; - pRxD->CipherAlg = CIPHER_NONE; - } - else - { - pRxD->Drop = 0; - pRxD->IvOffset = LENGTH_802_11; - } - - pRxD->CipherOwner = DESC_OWN_NIC; - -#ifdef BIG_ENDIAN - RTMPFrameEndianChange(pAdapter, (PUCHAR)pHeader, DIR_WRITE, TRUE); - RTMPDescriptorEndianChange((PUCHAR)pRxD, TYPE_RXD); - *pDestRxD = RxD; -#endif - - pAdapter->CurRxIndex++; - if (pAdapter->CurRxIndex >= RX_RING_SIZE) - { - pAdapter->CurRxIndex = 0; - } - Count++; - - pAdapter->RalinkCounters.RxCount ++; - - } while (Count < MAX_RX_PROCESS); - - // Kick Decrypt Control Register, based on ASIC's implementation - // We have to kick decrypt & encrypt every frame. - RTMP_IO_WRITE32(pAdapter, SECCSR0, 0x1); - - // Make sure to release Rx ring resource - spin_unlock_irqrestore(&pAdapter->RxRingLock, irqflag); -} - -/* - ======================================================================== - - Routine Description: - Process TxRing TxDone interrupt, running in DPC level - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPHandleTxRingTxDoneInterrupt( - IN PRTMP_ADAPTER pAdapter) -{ - PTXD_STRUC pTxD; -#ifdef BIG_ENDIAN - PTXD_STRUC pDestTxD; - TXD_STRUC TxD; -#endif - UCHAR Count; - unsigned long irqflag; - - // Make sure Tx ring resource won't be used by other threads - spin_lock_irqsave(&pAdapter->TxRingLock, irqflag); - - Count = 0; - do - { -#ifndef BIG_ENDIAN - pTxD = (PTXD_STRUC) (pAdapter->TxRing[pAdapter->NextTxDoneIndex].va_addr); -#else - pDestTxD = (PTXD_STRUC) (pAdapter->TxRing[pAdapter->NextTxDoneIndex].va_addr); - TxD = *pDestTxD; - pTxD = &TxD; - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); -#endif - - if ((pTxD->Owner == DESC_OWN_NIC) || (pTxD->CipherOwn == DESC_OWN_NIC) || (pTxD->Valid == FALSE)) - { - break; - } - - RTMPHardTransmitDone( - pAdapter, - pTxD, - pAdapter->TxRing[pAdapter->NextTxDoneIndex].FrameType); - - // It might happend with no Ndis packet to indicate back to upper layer - // Clear for NdisSendComplete request - pTxD->Valid = FALSE; - - // Increase Total transmit byte counter after real data sent out - pAdapter->RalinkCounters.TransmittedByteCount += pTxD->DataByteCnt; - -#ifdef BIG_ENDIAN - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pDestTxD = TxD; -#endif - - pAdapter->NextTxDoneIndex++; - if (pAdapter->NextTxDoneIndex >= TX_RING_SIZE) - { - pAdapter->NextTxDoneIndex = 0; - } - } while (++Count < MAX_TX_PROCESS); - -#ifdef RALINK_ATE - if((pAdapter->ate.Mode == ATE_TXCONT) || (pAdapter->ate.Mode == ATE_TXCARR) || ((pAdapter->ate.Mode == ATE_TXFRAME))) - { - if (pAdapter->ate.TxDoneCount < pAdapter->ate.TxCount) - { - pAdapter->ate.TxDoneCount++; - DBGPRINT(RT_DEBUG_INFO, "pAdapter->ate.TxDoneCount = %d, Preamble=%d\n", pAdapter->ate.TxDoneCount, pAdapter->PortCfg.TxPreambleInUsed); - pTxD = (PTXD_STRUC)pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; - - RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, - SHORT_RETRY, IFS_BACKOFF, pAdapter->ate.TxRate, 4, - pAdapter->ate.TxLength, Rt802_11PreambleLong, 0); - - pAdapter->CurEncryptIndex++; - if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) - { - pAdapter->CurEncryptIndex = 0; - } - - RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); - } - else if (pAdapter->ate.Mode == ATE_TXFRAME) - { - DBGPRINT(RT_DEBUG_TRACE, "ATE TXFRAME completed!\n"); - } - } -#endif //#ifdef RALINK_ATE - - // Make sure to release Tx ring resource - spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); - - if(pAdapter->bNetDeviceStopQueue) - { - DBGPRINT(RT_DEBUG_TRACE, "NetDevice start queue!!!\n\n"); - pAdapter->bNetDeviceStopQueue = FALSE; - netif_start_queue(pAdapter->net_dev); - } - - // Some Tx ring resource freed, check for pending send frame for hard transmit - if ((!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) && - (!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF)) && - (!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RESET_IN_PROGRESS))) - { - // RTMPDeQueuePacket(pAdapter, &pAdapter->TxSwQueue0); - // Call dequeue without selected queue, let the subroutine select the right priority - // Tx software queue - RTMPDeQueuePacket(pAdapter); - } -} - -/* - ======================================================================== - - Routine Description: - Process Priority ring TxDone interrupt, running in DPC level - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPHandlePrioRingTxDoneInterrupt( - IN PRTMP_ADAPTER pAdapter) -{ - PTXD_STRUC pTxD; -#ifdef BIG_ENDIAN - PTXD_STRUC pDestTxD; - TXD_STRUC TxD; -#endif - UCHAR Count; - PMGMT_STRUC pMgmt; - unsigned long irqflag; - - // Make sure Prio ring resource won't be used by other threads - spin_lock_irqsave(&pAdapter->PrioRingLock, irqflag); - - Count = 0; - do - { -#ifndef BIG_ENDIAN - pTxD = (PTXD_STRUC) (pAdapter->PrioRing[pAdapter->NextPrioDoneIndex].va_addr); -#else - pDestTxD = (PTXD_STRUC) (pAdapter->PrioRing[pAdapter->NextPrioDoneIndex].va_addr); - TxD = *pDestTxD; - pTxD = &TxD; - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); -#endif - - // Check for the descriptor ownership - if ((pTxD->Owner == DESC_OWN_NIC) || (pTxD->Valid == FALSE)) - { -#ifdef BIG_ENDIAN - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pDestTxD = TxD; -#endif - break; - } - - // No need to put in reply for MLME - RTMPHardTransmitDone( - pAdapter, - pTxD, - pAdapter->PrioRing[pAdapter->NextPrioDoneIndex].FrameType); - - // It might happend with no Ndis packet to indicate back to upper layer - pTxD->Valid = FALSE; - - // Increase Total transmit byte counter after real data sent out - pAdapter->RalinkCounters.TransmittedByteCount += pTxD->DataByteCnt; - -#ifdef BIG_ENDIAN - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pDestTxD = TxD; -#endif - - pAdapter->NextPrioDoneIndex++; - if (pAdapter->NextPrioDoneIndex >= PRIO_RING_SIZE) - { - pAdapter->NextPrioDoneIndex = 0; - } - } while (++Count < MAX_TX_PROCESS); - - // Make sure to release Prio ring resource - spin_unlock_irqrestore(&pAdapter->PrioRingLock, irqflag); - - if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF)) - return; - - if (pAdapter->PushMgmtIndex != pAdapter->PopMgmtIndex) - { - if (RTMPFreeDescriptorRequest(pAdapter, PRIO_RING, 1) == NDIS_STATUS_SUCCESS) - { - pMgmt = (PMGMT_STRUC) &pAdapter->MgmtRing[pAdapter->PopMgmtIndex]; - if (pMgmt->Valid == TRUE) - { - MlmeHardTransmit(pAdapter, pMgmt->pBuffer, pMgmt->Length); - MlmeFreeMemory(pAdapter, pMgmt->pBuffer); - pMgmt->Valid = FALSE; - spin_lock(&pAdapter->PrioRingLock); - pAdapter->PopMgmtIndex++; - pAdapter->MgmtQueueSize--; - if (pAdapter->PopMgmtIndex >= MGMT_RING_SIZE) - { - pAdapter->PopMgmtIndex = 0; - } - spin_unlock(&pAdapter->PrioRingLock); - } - } - } -} - -/* - ======================================================================== - - Routine Description: - Process Atim ring TxDone interrupt, running in DPC level - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPHandleAtimRingTxDoneInterrupt( - IN PRTMP_ADAPTER pAdapter) -{ - // PTXD_STRUC pTxD; - // UCHAR Count; - - // Make sure Atim ring resource won't be used by other threads - //spin_lock_irqsave(&pAdapter->AtimRingLock); - - // Did not support ATIM, remove everything. - - // Make sure to release Atim ring resource - //spin_unlock_irqrestore(&pAdapter->AtimRingLock); -} - -/* - ======================================================================== - - Routine Description: - Process Rx ring DecryptionDone interrupt, running in DPC level - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPHandleDecryptionDoneInterrupt( - IN PRTMP_ADAPTER pAdapter) -{ - PRXD_STRUC pRxD; -#ifdef BIG_ENDIAN - PRXD_STRUC pDestRxD; - RXD_STRUC RxD; -#endif - PHEADER_802_11 pHeader; - PUCHAR pData; - PVOID pManage; - PUCHAR pDestMac, pSrcMac; - UCHAR Header802_3[14]; - UCHAR LLC_Len[2]; - USHORT PacketSize; - ULONG High32TSF, Low32TSF; - UCHAR Count; - PWPA_KEY pWpaKey; - NDIS_STATUS Status; - ULONG RegValue; - ULONGLONG HwDecryptIndex; - ULONG i; - struct sk_buff *skb; - unsigned long irqflag; - - // Make sure Rx ring resource won't be used by other threads - spin_lock_irqsave(&pAdapter->RxRingLock, irqflag); - - RTMP_IO_READ32(pAdapter, SECCSR0, &RegValue); - HwDecryptIndex = RegValue - pAdapter->RxRing[0].pa_addr; - do_div(HwDecryptIndex, RING_DESCRIPTOR_SIZE); - - Count = 0; - //do - while (pAdapter->CurDecryptIndex != HwDecryptIndex) - { - // Point to Rx indexed rx ring descriptor -#ifndef BIG_ENDIAN - pRxD = (PRXD_STRUC) pAdapter->RxRing[pAdapter->CurDecryptIndex].va_addr; -#else - pDestRxD = (PRXD_STRUC) pAdapter->RxRing[pAdapter->CurDecryptIndex].va_addr; - RxD = *pDestRxD; - pRxD = &RxD; - RTMPDescriptorEndianChange((PUCHAR)pRxD, TYPE_RXD); -#endif - - // In case of false alarm or processed at last instance - if ((pRxD->Owner != DESC_OWN_HOST) || (pRxD->CipherOwner != DESC_OWN_HOST)) - break; - - // Point to Rx ring buffer where stores the real data frame - pData = (PUCHAR) (pAdapter->RxRing[pAdapter->CurDecryptIndex].va_data_addr); - // Cast to 802.11 header for flags checking - pHeader = (PHEADER_802_11) pData; - -#ifdef BIG_ENDIAN - RTMPFrameEndianChange(pAdapter, (PUCHAR)pHeader, DIR_READ, FALSE); -#endif - // Driver will check the decrypt algorithm and decide whether this ICV is true or not - if ((pRxD->IcvError == 1) && (pRxD->CipherAlg == CIPHER_NONE)) - pRxD->IcvError = 0; - - // Since we already process header at RxDone interrupt, there is no need to proces - // header sanity again, the only thing we have to check is icv_err bit - if (pRxD->IcvError == 1) - { - DBGPRINT(RT_DEBUG_TRACE,"Rx DecryptDone - ICV error (len %d)\n", pRxD->DataByteCnt); - pRxD->Drop =1; // Drop frame with icv error - } - // Saved data pointer for management frame which will pass to MLME block - pManage = (PVOID) pData; - - if (pAdapter->PortCfg.BssType == BSS_MONITOR) - { - struct sk_buff *skb; - - if ((skb = __dev_alloc_skb(2048, GFP_DMA|GFP_ATOMIC)) != NULL) - { - skb->dev = pAdapter->net_dev; - memcpy(skb_put(skb, pRxD->DataByteCnt), pData, pRxD->DataByteCnt); - skb->mac.raw = skb->data; - skb->pkt_type = PACKET_OTHERHOST; - skb->protocol = htons(ETH_P_802_2); - skb->ip_summed = CHECKSUM_NONE; - netif_rx(skb); - } - pRxD->Drop = 1; - } - - // pData : Pointer skip the first 24 bytes, 802.11 HEADER - pData += LENGTH_802_11; - - // The total available payload should exclude 24-byte 802.11 Header - // If Security is enabled, IV, EIV, ICV size is excluded by ASIC - PacketSize = (USHORT) pRxD->DataByteCnt - LENGTH_802_11; - - // Find the WPA key, either Group or Pairwise Key - // Although the data has been decrypted by ASIC, - // driver has to calculate the RxMIC which required the key. - // The failed case should not happen. If it did, drop it. - // Init WPA Key - pWpaKey = (PWPA_KEY) NULL; - if ((pAdapter->PortCfg.AuthMode >= Ndis802_11AuthModeWPA) && (pHeader->Controlhead.Frame.Wep)) - { - INT idx; - - // First lookup the DA, if it's a group address, use GROUP key - if (pRxD->Bcast || pRxD->Mcast) - { - // Get the IV index from RxD descriptor -#ifdef BIG_ENDIAN - idx = (pRxD->Iv & 0x000000c0) >> 6; -#else - idx = (pRxD->Iv & 0xc0000000) >> 30; -#endif - if ((pAdapter->PortCfg.GroupKey[idx].KeyLen != 0) && - ((INFRA_ON(pAdapter) && (NdisEqualMemory(&pHeader->Controlhead.Addr2, &pAdapter->PortCfg.Bssid, 6))) || - (ADHOC_ON(pAdapter) && (NdisEqualMemory(&pHeader->Addr3, &pAdapter->PortCfg.Bssid, 6))))) - { - pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.GroupKey[idx]; - pWpaKey->Type = GROUP_KEY; - DBGPRINT(RT_DEBUG_INFO, "Decrypt Done: Rx Use Group Key %d\n", idx); - } - } - // Try to find the Pairwise Key - else - { - for (idx = 0; idx < PAIRWISE_KEY_NO; idx++) - { - if ((NdisEqualMemory(&pHeader->Controlhead.Addr2, pAdapter->PortCfg.PairwiseKey[idx].BssId, 6)) && - (pAdapter->PortCfg.PairwiseKey[idx].KeyLen != 0)) - { - pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.PairwiseKey[idx]; - pWpaKey->Type = PAIRWISE_KEY; - DBGPRINT(RT_DEBUG_INFO, "Rx Use Pairwise Key\n"); - break; - } - } -#if 1 - // Use default Group Key if there is no Pairwise key present - if ((pWpaKey == NULL) && (pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId].KeyLen != 0)) - { - pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId]; - pWpaKey->Type = GROUP_KEY; - DBGPRINT(RT_DEBUG_INFO, "Rx Use Group Key\n"); - } -#endif - } - - // If there is no WPA key matched, this frame should be dropped - if (pWpaKey == NULL) - pRxD->Drop = 1; - } - - // - // Start of main loop to parse receiving frames. - // The sequence will be Type first, then subtype... - // - if (pRxD->Drop == 0) - { - switch (pHeader->Controlhead.Frame.Type) - { - // Frame with data type - case BTYPE_DATA: - // DA is always address 1 - // For infrastructure, SA is address 3. For IBSS mode, SA is address 2 - pDestMac = (PUCHAR) &(pHeader->Controlhead.Addr1); - if (INFRA_ON(pAdapter)) - pSrcMac = (PUCHAR) &(pHeader->Addr3); - else - pSrcMac = (PUCHAR) &(pHeader->Controlhead.Addr2); - - // Process Broadcast & Multicast data frame - if (pRxD->Bcast || pRxD->Mcast) - { - // For TKIP frame, calculate the MIC value - if (pRxD->CipherAlg == CIPHER_TKIP) - { - INT i = 0; - - if (pWpaKey == NULL) - { - DBGPRINT(RT_DEBUG_ERROR,"No matched TKIP in decryption done calculate MIC routine!!!\n"); - Status = NDIS_STATUS_FAILURE; - break; - } - - // Minus MIC length - PacketSize -= 8; - if (RTMPTkipCompareMICValue( - pAdapter, - pData, - pDestMac, - pSrcMac, - pWpaKey->RxMic, - PacketSize) == FALSE) - { - DBGPRINT(RT_DEBUG_ERROR,"Rx MIC Value error\n"); - RTMPReportMicError(pAdapter, pWpaKey); - Status = NDIS_STATUS_FAILURE; - break; - } - - // Second, increase RxTsc value for next transmission - while (++pWpaKey->RxTsc[i] == 0x0) - { - i++; - if (i == 6) - break; - } - // Rx TSC has done one full cycle, since re-key is done by transmitter - // We did not do anything for Rx path - } - - // build 802.3 header and decide if remove the 8-byte LLC/SNAP encapsulation - CONVERT_TO_802_3(Header802_3, pDestMac, pSrcMac, pData, PacketSize); - - pAdapter->PortCfg.LedCntl.fRxActivity = TRUE; // for RX ACTIVITY LED - - // For miniportTransferData - pAdapter->pRxData = pData; - - // Acknolwdge upper layer the received frame -#ifdef RTMP_EMBEDDED - if ((skb = __dev_alloc_skb(PacketSize + LENGTH_802_3 + 2, GFP_DMA|GFP_ATOMIC)) != NULL) -#else - if ((skb = dev_alloc_skb(PacketSize + LENGTH_802_3 + 2)) != NULL) -#endif - { - skb->dev = pAdapter->net_dev; - skb_reserve(skb, 2); // 16 byte align the IP header - memcpy(skb_put(skb, LENGTH_802_3), Header802_3, LENGTH_802_3); - memcpy(skb_put(skb, PacketSize), pData, PacketSize); - skb->protocol = eth_type_trans(skb, pAdapter->net_dev); - netif_rx(skb); - pAdapter->net_dev->last_rx = jiffies; - pAdapter->stats.rx_packets++; - } - - DBGPRINT(RT_DEBUG_INFO, "!!! Broadcast Ethenet rx Indicated !!!\n"); - } - - // Begin process unicast to me frame - else if (pRxD->U2M || pAdapter->bAcceptPromiscuous == TRUE) - { - // Update Rx data rate first. - if (pRxD->Ofdm == 1) - { - for (i = 4; i < 12; i++) - { - if (pRxD->BBR0 == PlcpSignal[i]) - break; - } - if (i < 12) - pAdapter->LastRxRate = i; - } - else // receive CCK encoding - { - if (pRxD->BBR0 == 10) - pAdapter->LastRxRate = 0; - else if (pRxD->BBR0 == 20) - pAdapter->LastRxRate = 1; - else if (pRxD->BBR0 == 55) - pAdapter->LastRxRate = 2; - else if (pRxD->BBR0 == 110) - pAdapter->LastRxRate = 3; - } - - if (pHeader->Frag == 0) // First or Only fragment - { - // For TKIP frame, calculate the MIC value - if ((pHeader->Controlhead.Frame.MoreFrag == FALSE) && - (pRxD->CipherAlg == CIPHER_TKIP) && - (pHeader->Controlhead.Frame.Wep)) - { - if (pWpaKey == NULL) - { - DBGPRINT(RT_DEBUG_ERROR,"No matched TKIP in decryption done calculate MIC routine!!!\n"); - Status = NDIS_STATUS_FAILURE; - break; - } - // Minus MIC length - PacketSize -= 8; - if (RTMPTkipCompareMICValue( - pAdapter, - pData, - pDestMac, - pSrcMac, - pWpaKey->RxMic, - PacketSize) == FALSE) - { - DBGPRINT(RT_DEBUG_ERROR,"Rx MIC Value error\n"); - RTMPReportMicError(pAdapter, pWpaKey); - Status = NDIS_STATUS_FAILURE; - break; - } - } - - pAdapter->FragFrame.Flags &= 0xFFFFFFFE; - - // Check for encapsulation other than RFC1042 & Bridge tunnel - if ((!RTMPEqualMemory(SNAP_802_1H, pData, 6)) && - (!RTMPEqualMemory(SNAP_BRIDGE_TUNNEL, pData, 6))) - { - LLC_Len[0] = PacketSize / 256; - LLC_Len[1] = PacketSize % 256; - MAKE_802_3_HEADER(Header802_3, pDestMac, pSrcMac, ((PUCHAR) LLC_Len)); - } - else - { - char *pProto = pData + 6; - - // Remove 802.11 H header & reconstruct 802.3 header - // pData += (LENGTH_802_1_H - LENGTH_802_3_TYPE); - // Check for EAPOL frame when driver supplicant enabled - // TODO: It is not strickly correct. There is no fragment handling. It might damage driver - // TODO: But for WPAPSK, it's not likely fragment on EAPOL frame will happen - if (RTMPEqualMemory(EAPOL, pProto, 2) && ((pAdapter->PortCfg.WpaState != SS_NOTUSE))) - { - RTMP_IO_READ32(pAdapter, CSR17, &High32TSF); // TSF value - RTMP_IO_READ32(pAdapter, CSR16, &Low32TSF); // TSF vlaue - PacketSize += LENGTH_802_11; - // Enqueue this frame to MLME engine - MlmeEnqueueForRecv( - pAdapter, - &pAdapter->Mlme.Queue, - High32TSF, - Low32TSF, - (UCHAR)pRxD->BBR1, - PacketSize, - pManage); - break; - } - - if ((RTMPEqualMemory(IPX, pProto, 2) || RTMPEqualMemory(APPLE_TALK, pProto, 2)) && - RTMPEqualMemory(SNAP_802_1H, pData, 6)) - { - // preserved the LLC/SNAP filed - LLC_Len[0] = PacketSize / 256; - LLC_Len[1] = PacketSize % 256; - MAKE_802_3_HEADER(Header802_3, pDestMac, pSrcMac, ((PUCHAR) LLC_Len)); - } - else - { - // remove the LLC/SNAP field - MAKE_802_3_HEADER(Header802_3, pDestMac, pSrcMac, pProto); - memcpy(pAdapter->FragFrame.Header_LLC, pData, 8); - PacketSize -= LENGTH_802_1_H; - pData += LENGTH_802_1_H; - pAdapter->FragFrame.Flags |= 0x01; - } - } - - // One & The only fragment - if (pHeader->Controlhead.Frame.MoreFrag == FALSE) - { - // For miniportTransferData - pAdapter->pRxData = pData; - - pAdapter->PortCfg.LedCntl.fRxActivity = TRUE; // for RX ACTIVITY LED - - // Acknowledge upper layer the received frame -#ifdef RTMP_EMBEDDED - if ((skb = __dev_alloc_skb(PacketSize + LENGTH_802_3 + 2, GFP_DMA|GFP_ATOMIC)) != NULL) -#else - if ((skb = dev_alloc_skb(PacketSize + LENGTH_802_3 + 2)) != NULL) -#endif - { - skb->dev = pAdapter->net_dev; - skb_reserve(skb, 2); // 16 byte align the IP header - memcpy(skb_put(skb, LENGTH_802_3), Header802_3, LENGTH_802_3); - memcpy(skb_put(skb, PacketSize), pData, PacketSize); - skb->protocol = eth_type_trans(skb, pAdapter->net_dev); - netif_rx(skb); - pAdapter->net_dev->last_rx = jiffies; - pAdapter->stats.rx_packets++; - } - - // ZdisZeroMemory(Header802_3, LENGTH_802_3); - DBGPRINT(RT_DEBUG_INFO, "!!! Frame without Fragment Indicated !!!\n"); - - // Increase general counters - pAdapter->Counters.GoodReceives++; - - } - // First fragment of fragmented frames - else - { - memcpy(&pAdapter->FragFrame.Buffer[LENGTH_802_3], pData, PacketSize); - memcpy(pAdapter->FragFrame.Header802_3, Header802_3, LENGTH_802_3); - //NdisZeroMemory(Header802_3, LENGTH_802_3); - pAdapter->FragFrame.RxSize = PacketSize; - pAdapter->FragFrame.Sequence = pHeader->Sequence; - pAdapter->FragFrame.LastFrag = pHeader->Frag; // Should be 0 - } - } - // Middle & End of fragment burst fragments - else - { - // No LLC-SNAP header in except the first fragment frame - - if ((pHeader->Sequence != pAdapter->FragFrame.Sequence) || - (pHeader->Frag != (pAdapter->FragFrame.LastFrag + 1))) - { - // Fragment is not the same sequence or out of fragment number order - // Clear Fragment frame contents - memset(&pAdapter->FragFrame, 0, sizeof(FRAGMENT_FRAME)); - Status = NDIS_STATUS_FAILURE; - break; - } - else if ((pAdapter->FragFrame.RxSize + PacketSize) > MAX_FRAME_SIZE) - { - // Fragment frame is too large, it exeeds the maximum frame size. - // We have to drop it. - // Clear Fragment frame contents - memset(&pAdapter->FragFrame, 0, sizeof(FRAGMENT_FRAME)); - Status = NDIS_STATUS_FAILURE; - break; - } - - // concatenate this fragment into the re-assembly buffer - memcpy(&pAdapter->FragFrame.Buffer[LENGTH_802_3 + pAdapter->FragFrame.RxSize], pData, PacketSize); - pAdapter->FragFrame.RxSize += PacketSize; - pAdapter->FragFrame.LastFrag = pHeader->Frag; // Update fragment number - - // Last fragment - if (pHeader->Controlhead.Frame.MoreFrag == FALSE) - { - // For TKIP frame, calculate the MIC value - if ((pRxD->CipherAlg == CIPHER_TKIP) && (pHeader->Controlhead.Frame.Wep)) - { - if (pWpaKey == NULL) - { - DBGPRINT(RT_DEBUG_ERROR,"No matched TKIP in decryption done calculate MIC routine!!!\n"); - Status = NDIS_STATUS_FAILURE; - break; - } - // Minus MIC length - pAdapter->FragFrame.RxSize -= 8; - - if (pAdapter->FragFrame.Flags & 0x00000001) - { - // originally there's an LLC/SNAP field in the first fragment - // but been removed in re-assembly buffer. here we have to include - // this LLC/SNAP field upon calculating TKIP MIC - // Copy LLC data to the position in front of real data for MIC calculation - memcpy(&pAdapter->FragFrame.Buffer[LENGTH_802_3 - LENGTH_802_1_H], - pAdapter->FragFrame.Header_LLC, - LENGTH_802_1_H); - pData = (PUCHAR) &pAdapter->FragFrame.Buffer[LENGTH_802_3 - LENGTH_802_1_H]; - PacketSize = (USHORT)pAdapter->FragFrame.RxSize + LENGTH_802_1_H; - //cketSize = (USHORT)pAdapter->FragFrame.RxSize + 8; - } - else - { - pData = (PUCHAR) &pAdapter->FragFrame.Buffer[LENGTH_802_3]; - PacketSize = (USHORT)pAdapter->FragFrame.RxSize; - } - - if (RTMPTkipCompareMICValue( - pAdapter, - pData, - pDestMac, - pSrcMac, - pWpaKey->RxMic, - PacketSize) == FALSE) - { - DBGPRINT(RT_DEBUG_ERROR,"Rx MIC Value error 2\n"); - RTMPReportMicError(pAdapter, pWpaKey); - Status = NDIS_STATUS_FAILURE; - break; - } - - // TODO: - // Getting RxTSC from Rx descriptor - } - - // for RX ACTIVITY LED - pAdapter->PortCfg.LedCntl.fRxActivity = TRUE; - - // For miniportTransferData - pAdapter->pRxData = &pAdapter->FragFrame.Buffer[LENGTH_802_3]; - - memcpy(pAdapter->FragFrame.Buffer, pAdapter->FragFrame.Header802_3, LENGTH_802_3); - // Acknowledge upper layer the received frame -#ifdef RTMP_EMBEDDED - if ((skb = __dev_alloc_skb(pAdapter->FragFrame.RxSize + LENGTH_802_3 + 2, GFP_DMA|GFP_ATOMIC)) != NULL) -#else - if ((skb = dev_alloc_skb(pAdapter->FragFrame.RxSize + LENGTH_802_3 + 2)) != NULL) -#endif - { - skb->dev = pAdapter->net_dev; - skb_reserve(skb, 2); /* 16 byte align the IP header */ - memcpy(skb_put(skb, LENGTH_802_3), (PVOID) &pAdapter->FragFrame.Buffer[0], LENGTH_802_3); - memcpy(skb_put(skb, pAdapter->FragFrame.RxSize), (PVOID) &pAdapter->FragFrame.Buffer[LENGTH_802_3], pAdapter->FragFrame.RxSize); - skb->protocol = eth_type_trans(skb, pAdapter->net_dev); - netif_rx(skb); - pAdapter->net_dev->last_rx = jiffies; - pAdapter->stats.rx_packets++; - } - - // Increase general counters - pAdapter->Counters.GoodReceives++; - - // Clear Fragment frame contents - memset(&pAdapter->FragFrame, 0, sizeof(FRAGMENT_FRAME)); - DBGPRINT(RT_DEBUG_INFO, "!!! Frame with Fragment Indicated !!!\n"); - } - } - } - break; - - case BTYPE_MGMT: - // Read required regsiter for MLME engine - RTMP_IO_READ32(pAdapter, CSR17, &High32TSF); // TSF value - RTMP_IO_READ32(pAdapter, CSR16, &Low32TSF); // TSF vlaue - - // Enqueue this frame to MLME engine - MlmeEnqueueForRecv( - pAdapter, - &pAdapter->Mlme.Queue, - High32TSF, - Low32TSF, - (UCHAR)pRxD->BBR1, - pRxD->DataByteCnt, - pManage); - break; - - case BTYPE_CNTL: - // Ignore ??? - break; - - default : - break; - } - } - - pAdapter->CurDecryptIndex++; - if (pAdapter->CurDecryptIndex >= RX_RING_SIZE) - { - pAdapter->CurDecryptIndex = 0; - } - Count++; - - pAdapter->RalinkCounters.DecryptCount ++; - - // Clear Cipherowner bit & Rx Owner bit for all drop & non-drop frames - pRxD->CipherOwner = DESC_OWN_HOST; - pRxD->Owner = DESC_OWN_NIC; -#ifdef BIG_ENDIAN - RTMPDescriptorEndianChange((PUCHAR)pRxD, TYPE_RXD); - *pDestRxD = RxD; -#endif - } - //} while (Count < RX_RING_SIZE); - //} while (pAdapter->CurDecryptIndex != HwDecryptIndex); - - // Make sure to release Rx ring resource - spin_unlock_irqrestore(&pAdapter->RxRingLock, irqflag); -} - -/* - ======================================================================== - - Routine Description: - Process Tx ring EncryptionDone interrupt, running in DPC level - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPHandleEncryptionDoneInterrupt( - IN PRTMP_ADAPTER pAdapter) -{ - PTXD_STRUC pTxD; -#ifdef BIG_ENDIAN - PTXD_STRUC pDestTxD; - TXD_STRUC TxD; -#endif - UCHAR Count; - ULONG RegValue; - ULONGLONG HwEncryptIndex; - unsigned long irqflag; - - // Make sure Prio ring resource won't be used by other threads - spin_lock_irqsave(&pAdapter->TxRingLock, irqflag); - - RTMP_IO_READ32(pAdapter, SECCSR1, &RegValue); - HwEncryptIndex = RegValue - pAdapter->TxRing[0].pa_addr; - do_div(HwEncryptIndex, RING_DESCRIPTOR_SIZE); - - Count = 0; - //do - while (pAdapter->NextEncryptDoneIndex != HwEncryptIndex) - { -#ifndef BIG_ENDIAN - pTxD = (PTXD_STRUC) (pAdapter->TxRing[pAdapter->NextEncryptDoneIndex].va_addr); -#else - pDestTxD = (PTXD_STRUC) (pAdapter->TxRing[pAdapter->NextEncryptDoneIndex].va_addr); - TxD = *pDestTxD; - pTxD = &TxD; - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); -#endif - - // Check for the descriptor cipher ownership - if ((pTxD->CipherOwn == DESC_OWN_NIC) || (pTxD->Owner == DESC_OWN_NIC)) - { - pAdapter->RalinkCounters.TxRingErrCount++; -#ifdef BIG_ENDIAN - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pDestTxD = TxD; -#endif - break; - } - - // Alter EIV due to ASIC's bug - if (pTxD->CipherAlg == CIPHER_TKIP) - { - UCHAR Eiv_Tmp[4]; - PUCHAR pTmp; - - memcpy(Eiv_Tmp, &pTxD->Eiv, 4); - pTmp = (PUCHAR) &pTxD->Eiv; - *pTmp = Eiv_Tmp[3]; - *(pTmp + 1) = Eiv_Tmp[2]; - *(pTmp + 2) = Eiv_Tmp[1]; - *(pTmp + 3) = Eiv_Tmp[0]; - } - // Sanity Check, CurTxIndex should equal to NextEncryptDoneIndex - // ASSERT(pAdapter->CurTxIndex == pAdapter->NextEncryptDoneIndex); - - pTxD->Valid = TRUE; - pTxD->Owner = DESC_OWN_NIC; - -#ifdef BIG_ENDIAN - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pDestTxD = TxD; -#endif - - pAdapter->NextEncryptDoneIndex++; - if (pAdapter->NextEncryptDoneIndex >= TX_RING_SIZE) - { - pAdapter->NextEncryptDoneIndex = 0; - } - pAdapter->CurTxIndex = pAdapter->NextEncryptDoneIndex; - pAdapter->RalinkCounters.KickTxCount++; - - if (pAdapter->CurTxIndex == pAdapter->CurEncryptIndex) - break; - } - //} while (++Count < MAX_TX_PROCESS); - //} while (pAdapter->NextEncryptDoneIndex != HwEncryptIndex); - - // Kick Tx Control Register at the end of all ring buffer preparation - RTMP_IO_WRITE32(pAdapter, TXCSR0, 0x1); - - // Make sure to release Tx ring resource - spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); -} - -/* - ======================================================================== - - Routine Description: - Arguments: - Adapter Pointer to our adapter - ======================================================================== -*/ -void RTMPHandleTbcnInterrupt(IN PRTMP_ADAPTER pAdapter) -{ - if (ADHOC_ON(pAdapter)) - { - MACHDR *pBcnHdr = (MACHDR *)pAdapter->BeaconRing.va_data_addr; - - // update BEACON frame's sequence number - pAdapter->Sequence = ((pAdapter->Sequence) + 1) & (MAX_SEQ_NUMBER); - pBcnHdr->Seq = pAdapter->Sequence; - -#ifdef BIG_ENDIAN - *(USHORT *)((UCHAR *)pBcnHdr + 22) = SWAP16(*(USHORT *)((UCHAR *)pBcnHdr + 22)); -#endif - } -} - -/* - ======================================================================== - - Routine Description: - Arguments: - Adapter Pointer to our adapter - ======================================================================== -*/ -void RTMPHandleTwakeupInterrupt(IN PRTMP_ADAPTER pAdapter) -{ - // DBGPRINT(RT_DEBUG_ERROR, ("Twakeup Expired... !!!\n")); - pAdapter->PortCfg.Pss = PWR_ACTIVE; -} - -/* - ======================================================================== - - Routine Description: - Process all transmit ring Tx Done interrupt, running in DPC level - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPHardTransmitDone( - IN PRTMP_ADAPTER pAdapter, - IN PTXD_STRUC pTxD, - IN UCHAR FrameType) -{ - - switch (pTxD->TxResult) - { - case SUCCESS_WITHOUT_RETRY: // Success without any retry - // Return send complete status - // DBGPRINT(RT_DEBUG_INFO, "TX Success without retry<<<\n"); - if (pTxD->RTS) - { - // Increase 802.11 counters - INC_COUNTER(pAdapter->WlanCounters.RTSSuccessCount); - pTxD->RTS = 0; - } - - // Increase general counters - pAdapter->Counters.GoodTransmits++; - INC_COUNTER(pAdapter->WlanCounters.TransmittedFragmentCount); - - // update DRS related counters - if (pTxD->ACK && (FrameType == BTYPE_DATA)) - { - pAdapter->DrsCounters.OneSecTxOkCount ++; - } - break; - - case SUCCESS_WITH_RETRY: // Success with some retry - // DBGPRINT(RT_DEBUG_INFO, "TX Success with retry(=%d)<<<\n",pTxD->RetryCount); - // Increase 802.11 counters - INC_COUNTER(pAdapter->WlanCounters.RetryCount); - INC_COUNTER(pAdapter->WlanCounters.ACKFailureCount); - INC_COUNTER(pAdapter->WlanCounters.TransmittedFragmentCount); - - // Increase general counters - pAdapter->Counters.GoodTransmits++; - - if (pTxD->RetryCount > 1) - { - // Increase 802.11 counters - INC_COUNTER(pAdapter->WlanCounters.MultipleRetryCount); - - // Increase general counters - pAdapter->Counters.MoreCollisions++; - } - else - { - // Increase general counters - pAdapter->Counters.OneCollision++; - } - - if (pTxD->RTS) - { - INC_COUNTER(pAdapter->WlanCounters.RTSSuccessCount); - pTxD->RTS = 0; - } - - // update DRS related counters - if (pTxD->ACK && (FrameType == BTYPE_DATA)) - { - if (pTxD->TxRate > pAdapter->PortCfg.TxRate) - { - // DRS - must be NULL frame retried @ UpRate; downgrade - // TxQuality[UpRate] so that not upgrade TX rate - pAdapter->DrsCounters.TxQuality[pTxD->TxRate] += 2; - if (pAdapter->DrsCounters.TxQuality[pTxD->TxRate] > DRS_TX_QUALITY_WORST_BOUND) - pAdapter->DrsCounters.TxQuality[pTxD->TxRate] = DRS_TX_QUALITY_WORST_BOUND; - } - else if (pTxD->TxRate == pAdapter->PortCfg.TxRate) - pAdapter->DrsCounters.OneSecTxRetryOkCount ++; - } - break; - - case FAIL_RETRY_LIMIT: // Fail on hitting retry count limit -// DBGPRINT(RT_DEBUG_WARN, ("TX Failed (RETRY LIMIT)<<<\n")); - // Increase 802.11 counters - INC_COUNTER(pAdapter->WlanCounters.FailedCount); - INC_COUNTER(pAdapter->WlanCounters.ACKFailureCount); - - // Increase general counters - pAdapter->Counters.TxErrors++; - - if (pTxD->RTS) - { - INC_COUNTER(pAdapter->WlanCounters.RTSFailureCount); - pTxD->RTS = 0; - } - - // update DRS related counters - if (pTxD->ACK && (FrameType == BTYPE_DATA)) - { - if (pTxD->TxRate > pAdapter->PortCfg.TxRate) - { - // DRS - must be NULL frame failed @ UpRate; downgrade - // TxQuality[UpRate] so that not upgrade TX rate - pAdapter->DrsCounters.TxQuality[pTxD->TxRate] = DRS_TX_QUALITY_WORST_BOUND; - } - else if (pTxD->TxRate == pAdapter->PortCfg.TxRate) - { - pAdapter->DrsCounters.OneSecTxFailCount ++; - } - } - break; - - case FAIL_INVALID: - // DBGPRINT(RT_DEBUG_WARN, ("TX Failed (INVALID)<<<\n")); - // Increase general counters - pAdapter->Counters.TxErrors++; - - if (pTxD->RTS) - { - INC_COUNTER(pAdapter->WlanCounters.RTSFailureCount); - pTxD->RTS = 0; - } - break; - - case FAIL_OTHER: - default: - // DBGPRINT(RT_DEBUG_ERROR, ("TX Failed (other=%d)<<<\n",pTxD->TxResult)); - // Increase 802.11 counters - INC_COUNTER(pAdapter->WlanCounters.FailedCount); - INC_COUNTER(pAdapter->WlanCounters.ACKFailureCount); - - // Increase general counters - pAdapter->Counters.TxErrors++; - - if (pTxD->RTS) - { - INC_COUNTER(pAdapter->WlanCounters.RTSFailureCount); - pTxD->RTS = 0; - } - break; - } -} - -/* - ======================================================================== - - Routine Description: - API for MLME to transmit management frame to AP (BSS Mode) - or station (IBSS Mode) - - Arguments: - pAdapter Pointer to our adapter - Buffer Pointer to memory of outgoing frame - Length Size of outgoing management frame - - Return Value: - NDIS_STATUS_FAILURE - NDIS_STATUS_PENDING - NDIS_STATUS_SUCCESS - - Note: - - ======================================================================== -*/ -NDIS_STATUS MiniportMMRequest( - IN PRTMP_ADAPTER pAdapter, - IN PVOID pBuffer, - IN ULONG Length) -{ - PMGMT_STRUC pMgmt; - NDIS_STATUS Status = NDIS_STATUS_SUCCESS; - - DBGPRINT(RT_DEBUG_INFO, "---> MiniportMMRequest\n"); - // Check management ring free avaliability - pMgmt = (PMGMT_STRUC) &pAdapter->MgmtRing[pAdapter->PushMgmtIndex]; - - // This management cell has been occupied - if (pMgmt->Valid == TRUE) - { - // No Management ring buffer avaliable - MlmeFreeMemory(pAdapter, pBuffer); - Status = NDIS_STATUS_FAILURE; - DBGPRINT(RT_DEBUG_WARN, "<--- MiniportMMRequest (error:: MgmtRing full)\n"); - pAdapter->RalinkCounters.MgmtRingFullCount++; - return (Status); - } - - // Insert this request into software managemnet ring - if (pBuffer) - { - pMgmt->pBuffer = pBuffer; - pMgmt->Length = Length; - pMgmt->Valid = TRUE; - pAdapter->PushMgmtIndex++; - pAdapter->MgmtQueueSize++; - if (pAdapter->PushMgmtIndex >= MGMT_RING_SIZE) - { - pAdapter->PushMgmtIndex = 0; - } - } - else - { - // Null pBuffer, no need to free memory buffer. - // This should not happen - DBGPRINT(RT_DEBUG_WARN, "<--- MiniportMMRequest (error:: NULL msg)\n"); - Status = NDIS_STATUS_FAILURE; - return (Status); - } - - if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF)) - return (Status); - - // Check Free priority queue - if (RTMPFreeDescriptorRequest(pAdapter, PRIO_RING, 1) == NDIS_STATUS_SUCCESS) - { - pMgmt = (PMGMT_STRUC) &pAdapter->MgmtRing[pAdapter->PopMgmtIndex]; - if (pMgmt->Valid == TRUE) - { - MlmeHardTransmit(pAdapter, pMgmt->pBuffer, pMgmt->Length); - MlmeFreeMemory(pAdapter, pMgmt->pBuffer); - pMgmt->Valid = FALSE; - spin_lock(&pAdapter->PrioRingLock); - pAdapter->PopMgmtIndex++; - pAdapter->MgmtQueueSize--; - if (pAdapter->PopMgmtIndex >= MGMT_RING_SIZE) - { - pAdapter->PopMgmtIndex = 0; - } - spin_unlock(&pAdapter->PrioRingLock); - } - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "not enough space in PrioRing\n"); - } - - DBGPRINT(RT_DEBUG_INFO, "<--- MiniportMMRequest\n"); - return (Status); -} - -/* - ======================================================================== - - Routine Description: - Copy frame from waiting queue into relative ring buffer and set - appropriate ASIC register to kick hardware transmit function - - Arguments: - pAdapter Pointer to our adapter - pBuffer Pointer to memory of outgoing frame - Length Size of outgoing management frame - - Return Value: - NDIS_STATUS_FAILURE - NDIS_STATUS_PENDING - NDIS_STATUS_SUCCESS - - Note: - - ======================================================================== -*/ -VOID MlmeHardTransmit( - IN PRTMP_ADAPTER pAdapter, - IN PVOID pBuffer, - IN ULONG Length) -{ - PTXD_STRUC pTxD; -#ifdef BIG_ENDIAN - PTXD_STRUC pDestTxD; - TXD_STRUC TxD; -#endif - PUCHAR pDest; - PHEADER_802_11 pHeader_802_11; - BOOLEAN AckRequired, InsertTimestamp; - unsigned long irqflag; - - DBGPRINT(RT_DEBUG_INFO, "MlmeHardTransmit\n"); - - // Make sure Prio ring resource won't be used by other threads - spin_lock_irqsave(&pAdapter->PrioRingLock, irqflag); - - pDest = (PUCHAR) pAdapter->PrioRing[pAdapter->CurPrioIndex].va_data_addr; -#ifndef BIG_ENDIAN - pTxD = (PTXD_STRUC) pAdapter->PrioRing[pAdapter->CurPrioIndex].va_addr; -#else - pDestTxD = (PTXD_STRUC) pAdapter->PrioRing[pAdapter->CurPrioIndex].va_addr; - TxD = *pDestTxD; - pTxD = &TxD; - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); -#endif - - if (pTxD->Owner == DESC_OWN_NIC) - { - // Descriptor owned by NIC. No descriptor avaliable - // This should not happen since caller guaranteed. - // Make sure to release Prio ring resource - spin_unlock_irqrestore(&pAdapter->PrioRingLock, irqflag); - return; - } - if (pTxD->Valid == TRUE) - { - // Ndis packet of last round did not cleared. - // This should not happen since caller guaranteed. - // Make sure to release Prio ring resource - spin_unlock_irqrestore(&pAdapter->PrioRingLock, irqflag); - return; - } - if (pBuffer == NULL) - { - // The buffer shouldn't be NULL - spin_unlock_irqrestore(&pAdapter->PrioRingLock, irqflag); - return; - } - - // outgoing frame always wakeup PHY to prevent frame lost - AsicForceWakeup(pAdapter); - - pHeader_802_11 = (PHEADER_802_11) pBuffer; - pHeader_802_11->Controlhead.Frame.PwrMgt = 0; // (pAdapter->PortCfg.Psm == PWR_SAVE); - InsertTimestamp = FALSE; - if (pHeader_802_11->Controlhead.Frame.Type == BTYPE_CNTL) // must be PS-POLL - { - AckRequired = FALSE; - pAdapter->PrioRing[pAdapter->CurPrioIndex].FrameType = BTYPE_CNTL; - } - else // BTYPE_MGMT or BMGMT_DATA(must be NULL frame) - { - pAdapter->PrioRing[pAdapter->CurPrioIndex].FrameType = BTYPE_MGMT; - pAdapter->Sequence = ((pAdapter->Sequence) + 1) & (MAX_SEQ_NUMBER); - pHeader_802_11->Sequence = pAdapter->Sequence; - - if (pHeader_802_11->Controlhead.Addr1.Octet[0] & 0x01) // MULTICAST, BROADCAST - { - AckRequired = FALSE; - pHeader_802_11->Controlhead.Duration = 0; - } - else - { - AckRequired = TRUE; - pHeader_802_11->Controlhead.Duration = RTMPCalcDuration(pAdapter, pAdapter->PortCfg.MlmeRate, 14); - if (pHeader_802_11->Controlhead.Frame.Subtype == SUBTYPE_PROBE_RSP) - { - InsertTimestamp = TRUE; - } - } - } -#ifdef BIG_ENDIAN - RTMPFrameEndianChange(pAdapter, (PUCHAR)pBuffer, DIR_WRITE, FALSE); -#endif - memcpy(pDest, pBuffer, Length); - - // Initialize Priority Descriptor - // For inter-frame gap, the number is for this frame and next frame - // For MLME rate, we will fix as 2Mb to match other vendor's implement -#ifdef BIG_ENDIAN - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pDestTxD = TxD; - pTxD = pDestTxD; -#endif - RTMPWriteTxDescriptor(pTxD, FALSE, CIPHER_NONE, AckRequired, FALSE, InsertTimestamp, - SHORT_RETRY, IFS_BACKOFF, pAdapter->PortCfg.MlmeRate, 4, Length, pAdapter->PortCfg.TxPreambleInUsed, 0); - - // Increase & maintain Tx Ring Index - pAdapter->CurPrioIndex++; - if (pAdapter->CurPrioIndex >= PRIO_RING_SIZE) - { - pAdapter->CurPrioIndex = 0; - } - - // Kick priority ring transmit - RTMP_IO_WRITE32(pAdapter,TXCSR0,0x4); - - // Make sure to release Prio ring resource - spin_unlock_irqrestore(&pAdapter->PrioRingLock, irqflag); -} -/* - ======================================================================== - - Routine Description: - This routine is used to en-queue outgoing packets when - there is no enough shread memory - - Arguments: - pAdapter Pointer to our adapter - pPacket Pointer to send packet - - Return Value: - None - - Note: - - ======================================================================== -*/ -NDIS_STATUS RTMPSendPacket( - IN PRTMP_ADAPTER pAdapter, - IN struct sk_buff *skb) -{ - PVOID pVirtualAddress; - UINT AllowFragSize; - UCHAR NumberOfFrag; - UCHAR RTSRequired; - NDIS_STATUS Status = NDIS_STATUS_FAILURE; - UCHAR PsMode; - - struct sk_buff_head *pTxQueue = NULL; - ULONG Priority; - UCHAR AccessCategory; - unsigned long irqflag; - - DBGPRINT(RT_DEBUG_INFO, "<==== RTMPSendPacket\n"); - - // Init priority value - Priority = 0; - AccessCategory = 0; - - if (skb) - { - Priority = skb->priority; - // 802.11e/d4.4 June, 2003 - if (Priority <=2) - AccessCategory = 0; - else if (Priority == 3) - AccessCategory = 1; - else if (Priority <= 5) - AccessCategory = 2; - else - AccessCategory = 3; - DBGPRINT(RT_DEBUG_INFO, "Priority = %d, AC = %d\n", Priority, AccessCategory); - } - - // For TKIP, MIC value is treated as payload, it might be fragmented through - // different MPDUs. - if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) - { - skb->data_len += 8; - } - - pVirtualAddress = (PVOID)skb->data; - - // Check for virtual address allocation, it might fail !!! - if (pVirtualAddress == NULL) - { - // Resourece is low, system did not allocation virtual address - // return NDIS_STATUS_FAILURE directly to upper layer - return (Status); - } - - // Store Ethernet MAC address when APClinet mode on - if ((pAdapter->PortCfg.StaWithEtherBridge.Enable) - && ((*((PUCHAR) pVirtualAddress) & 0x01) == 0) - && !MAC_ADDR_EQUAL(&pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr, ((PUCHAR) pVirtualAddress) + 6) - /*&& !MAC_ADDR_EQUAL(&pAdapter->PermanentAddress, ((PUCHAR) pVirtualAddress) + 6)*/) - { - CSR3_STRUC StaMacReg0; - CSR4_STRUC StaMacReg1; - - COPY_MAC_ADDR(&pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr, ((PUCHAR) pVirtualAddress) + 6); - - StaMacReg0.field.Byte0 = pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[0]; - StaMacReg0.field.Byte1 = pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[1]; - StaMacReg0.field.Byte2 = pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[2]; - StaMacReg0.field.Byte3 = pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[3]; - - StaMacReg1.field.Byte4 = pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[4]; - StaMacReg1.field.Byte5 = pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[5]; - - pAdapter->CurrentAddress[0] = StaMacReg0.field.Byte0; - pAdapter->CurrentAddress[1] = StaMacReg0.field.Byte1; - pAdapter->CurrentAddress[2] = StaMacReg0.field.Byte2; - pAdapter->CurrentAddress[3] = StaMacReg0.field.Byte3; - pAdapter->CurrentAddress[4] = StaMacReg1.field.Byte4; - pAdapter->CurrentAddress[5] = StaMacReg1.field.Byte5; - - RTMP_IO_WRITE32(pAdapter, CSR3, StaMacReg0.word); - RTMP_IO_WRITE32(pAdapter, CSR4, StaMacReg1.word); - - DBGPRINT(RT_DEBUG_TRACE, "StaWithEtherBridge - joining %02x:%02x:%02x:%02x:%02x:%02x ...\n", - pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[0],pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[1],pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[2], - pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[3],pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[4],pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[5]); - } - - // - // Check for multicast or broadcast (First byte of DA) - // - if ((*((PUCHAR) pVirtualAddress) & 0x01) != 0) - { - // For multicast & broadcast, there is no fragment allowed - NumberOfFrag = 1; - } - else - { - // Check for payload allowed for each fragment - AllowFragSize = (pAdapter->PortCfg.FragmentThreshold) - LENGTH_802_11 - LENGTH_CRC; - - // Calculate fragments required - NumberOfFrag = ((skb->data_len - LENGTH_802_3 + LENGTH_802_1_H) / AllowFragSize) + 1; - // Minus 1 if the size just match to allowable fragment size - if (((skb->data_len - LENGTH_802_3 + LENGTH_802_1_H) % AllowFragSize) == 0) - { - NumberOfFrag--; - } - } - - // Check for requirement of RTS - if (NumberOfFrag > 1) - { - // If multiple fragment required, RTS is required only for the first fragment - // if the fragment size large than RTS threshold - RTSRequired = (pAdapter->PortCfg.FragmentThreshold > pAdapter->PortCfg.RtsThreshold) ? 1 : 0; - } - else - { - RTSRequired = (skb->data_len > pAdapter->PortCfg.RtsThreshold) ? 1 : 0; - } - DBGPRINT(RT_DEBUG_INFO, "Number of fragments include RTS :%d\n", NumberOfFrag + RTSRequired); - - // RTS/CTS may also be required in order to protect OFDM frame - if ((pAdapter->PortCfg.TxRate >= RATE_FIRST_OFDM_RATE) && pAdapter->PortCfg.BGProtectionInUsed) - RTSRequired = 1; - - // Save framnet number to Ndis packet reserved field - RTMP_SET_PACKET_FRAGMENTS(skb, NumberOfFrag); - - // Save RTS requirement to Ndis packet reserved field - RTMP_SET_PACKET_RTS(skb, RTSRequired); - - // Make sure SendTxWait queue resource won't be used by other threads - spin_lock_irqsave(&pAdapter->TxSwQueueLock, irqflag); - - // Select the right priority queue - // There should be no else statement since it should always fall within 0-3 - if (AccessCategory== 0) - pTxQueue = &pAdapter->TxSwQueue0; - else if (AccessCategory== 1) - pTxQueue = &pAdapter->TxSwQueue1; - else if (AccessCategory== 2) - pTxQueue = &pAdapter->TxSwQueue2; - else if (AccessCategory== 3) - pTxQueue = &pAdapter->TxSwQueue3; - - // - // For infrastructure mode, enqueue this frame immediately to sendwaitqueue - // For Ad-hoc mode, check the DA power state, then decide which queue to enqueue - // - if (INFRA_ON(pAdapter)) - { - // In infrastructure mode, simply enqueue the packet into Tx waiting queue. - DBGPRINT(RT_DEBUG_INFO, "Infrastructure -> Enqueue one frame\n"); - - // Enqueue Ndis packet to end of Tx wait queue - skb_queue_tail(pTxQueue, skb); - Status = NDIS_STATUS_SUCCESS; - } - else - { - // In IBSS mode, power state of destination should be considered. - PsMode = PWR_ACTIVE; // Faked - if (PsMode == PWR_ACTIVE) - { - DBGPRINT(RT_DEBUG_INFO,"Ad-Hoc -> Enqueue one frame\n"); - - // Enqueue Ndis packet to end of Tx wait queue - skb_queue_tail(pTxQueue, skb); - Status = NDIS_STATUS_SUCCESS; - } - } - - spin_unlock_irqrestore(&pAdapter->TxSwQueueLock, irqflag); - return (Status); -} - -/* - ======================================================================== - - Routine Description: - To do the enqueue operation and extract the first item of waiting - list. If a number of available shared memory segments could meet - the request of extracted item, the extracted item will be fragmented - into shared memory segments. - - Arguments: - pAdapter Pointer to our adapter - pQueue Pointer to Waiting Queue - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPDeQueuePacket( - IN PRTMP_ADAPTER pAdapter) -{ - UCHAR FragmentRequired; - NDIS_STATUS Status; - UCHAR Count = 0; - struct sk_buff_head *pQueue; - UCHAR AccessCategory; - struct sk_buff *skb; - unsigned long irqflag; - - // Make sure SendTxWait queue resource won't be used by other threads - spin_lock_irqsave(&pAdapter->TxSwQueueLock, irqflag); - - while (Count < MAX_TX_PROCESS) - // Check queue before dequeue - // while ((pQueue->Head != NULL) && (Count < MAX_TX_PROCESS)) - { - // Reset is in progress, stop immediately - if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RESET_IN_PROGRESS)) - break; - - pQueue = RTMPCheckTxSwQueue(pAdapter, &AccessCategory); - if(!pQueue) - break; - - // Dequeue the first entry from head of queue list - skb = skb_dequeue(pQueue); - - if(!skb) - break; - - // RTS or CTS-to-self for B/G protection mode has been set already. - // There is no need to re-do it here. - // Total fragment required = number of fragment + RST if required - FragmentRequired = RTMP_GET_PACKET_FRAGMENTS(skb) + RTMP_GET_PACKET_RTS(skb); - - if (RTMPFreeDescriptorRequest(pAdapter, TX_RING, FragmentRequired) == NDIS_STATUS_SUCCESS) - { - // Avaliable ring descriptors are enough for this frame - // Call hard transmit - Status = RTMPHardEncrypt(pAdapter, skb, FragmentRequired, pAdapter->PortCfg.EnableTxBurst, AccessCategory); - - if (Status == NDIS_STATUS_FAILURE) - { - // Packet failed due to various Ndis Packet error - dev_kfree_skb_irq(skb); - break; - } - else if (Status == NDIS_STATUS_RESOURCES) - { - // Not enough free tx ring, it might happen due to free descriptor inquery might be not correct - // It also might change to NDIS_STATUS_FAILURE to simply drop the frame - // Put the frame back into head of queue - skb_queue_head(pQueue, skb); - break; - } - Count++; - } - else - { - skb_queue_head(pQueue, skb); - pAdapter->PrivateInfo.TxRingFullCnt++; - DBGPRINT(RT_DEBUG_INFO,"RTMPDequeuePacket --> Not enough free Tx Ring descriptor (CurEncryptIndex=%d,CurTxIndex=%d, NextTxDoneIndex=%d)!!!\n", - pAdapter->CurEncryptIndex, pAdapter->CurTxIndex, pAdapter->NextTxDoneIndex); - break; - } - } - - // Release TxSwQueue0 resources - spin_unlock_irqrestore(&pAdapter->TxSwQueueLock, irqflag); -} - -/* - ======================================================================== - - Routine Description: - This subroutine will scan through releative ring descriptor to find - out avaliable free ring descriptor and compare with request size. - - Arguments: - pAdapter Pointer to our adapter - RingType Selected Ring - - Return Value: - NDIS_STATUS_FAILURE Not enough free descriptor - NDIS_STATUS_SUCCESS Enough free descriptor - - Note: - - ======================================================================== -*/ -NDIS_STATUS RTMPFreeDescriptorRequest( - IN PRTMP_ADAPTER pAdapter, - IN UCHAR RingType, - IN UCHAR NumberRequired) -{ - UCHAR FreeNumber = 0; - UINT Index; - PTXD_STRUC pTxD; -#ifdef BIG_ENDIAN - PTXD_STRUC pDestTxD; - TXD_STRUC TxD; -#endif - unsigned long irqflag; - NDIS_STATUS Status = NDIS_STATUS_FAILURE; - - switch (RingType) - { - case TX_RING: - spin_lock_irqsave(&pAdapter->TxRingLock, irqflag); - Index = pAdapter->CurEncryptIndex; - do - { -#ifndef BIG_ENDIAN - pTxD = (PTXD_STRUC) pAdapter->TxRing[Index].va_addr; -#else - pDestTxD = (PTXD_STRUC) pAdapter->TxRing[Index].va_addr; - TxD = *pDestTxD; - pTxD = &TxD; - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); -#endif - - // While Owner bit is NIC, obviously ASIC still need it. - // If valid bit is TRUE, indicate that TxDone has not process yet - // We should not use it until TxDone finish cleanup job - if ((pTxD->Owner == DESC_OWN_HOST) && (pTxD->CipherOwn == DESC_OWN_HOST) && (pTxD->Valid == FALSE)) - { - // This one is free - FreeNumber++; - } - else - { - DBGPRINT(RT_DEBUG_INFO,"RTMPFreeDescriptorRequest fail - Owner=%d,CipherOwn=%d,Valid=%d\n",pTxD->Owner, pTxD->CipherOwn, pTxD->Valid); - break; - } - - Index++; - if (Index >= TX_RING_SIZE) // Wrap around issue - { - Index = 0; - } - - } while (FreeNumber < NumberRequired); // Quit here ! Free number is enough ! - - if (FreeNumber >= NumberRequired) - { - Status = NDIS_STATUS_SUCCESS; - } - - // Make sure to release Tx ring resource - spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); - break; - - case PRIO_RING: - spin_lock_irqsave(&pAdapter->PrioRingLock, irqflag); - Index = pAdapter->CurPrioIndex; - do - { -#ifndef BIG_ENDIAN - pTxD = (PTXD_STRUC) pAdapter->PrioRing[Index].va_addr; -#else - pDestTxD = (PTXD_STRUC) pAdapter->PrioRing[Index].va_addr; - TxD = *pDestTxD; - pTxD = &TxD; - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); -#endif - - // While Owner bit is NIC, obviously ASIC still need it. - // If valid bit is TRUE, indicate that TxDone has not process yet - // We should not use it until TxDone finish cleanup job - if ((pTxD->Owner == DESC_OWN_HOST) && (pTxD->Valid == FALSE)) - { - // This one is free - FreeNumber++; - } - else - { - break; - } - - Index++; - if (Index >= PRIO_RING_SIZE) // Wrap around issue - { - Index = 0; - } - - } while (FreeNumber < NumberRequired); // Quit here ! Free number is enough ! - - if (FreeNumber >= NumberRequired) - { - Status = NDIS_STATUS_SUCCESS; - } - - // Make sure to release Prio ring resource - spin_unlock_irqrestore(&pAdapter->PrioRingLock, irqflag); - break; - - default: - break; - } - - return (Status); -} - -VOID RTMPSendNullFrame( - IN PRTMP_ADAPTER pAdapter, - IN PVOID pBuffer, - IN ULONG Length, - IN UCHAR TxRate) -{ - PUCHAR pDest; - PTXD_STRUC pTxD; - UCHAR FrameGap; -#ifdef BIG_ENDIAN - PTXD_STRUC pDestTxD; - TXD_STRUC TxD; -#endif - unsigned long irqflag; - - if (pBuffer == NULL) - { - return; - } - - if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RESET_IN_PROGRESS)) - { - MlmeFreeMemory(pAdapter, pBuffer); - return; - } - - // WPA 802.1x secured port control - if (((pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPA) || - (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPAPSK)) && - (pAdapter->PortCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED)) - { - MlmeFreeMemory(pAdapter, pBuffer); - return; - } - - FrameGap = IFS_BACKOFF; // Default frame gap mode - - // outgoing frame always wakeup PHY to prevent frame lost and - // turn off PSM bit to improve performance - AsicForceWakeup(pAdapter); -#if 0 - if ((pAdapter->TxSwQueue0.Number != 0) || (pAdapter->TxSwQueue1.Number != 0) || - (pAdapter->TxSwQueue2.Number != 0) || (pAdapter->TxSwQueue3.Number != 0)) - { - DBGPRINT(RT_DEBUG_TRACE,("Drop Null frame due to Tx queue not empty!\n")); - } - else -#endif - { - // Make sure Tx ring resource won't be used by other threads - spin_lock_irqsave(&pAdapter->TxRingLock, irqflag); - - // Get the Tx Ring descriptor & Dma Buffer address - pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; -#ifndef BIG_ENDIAN - pTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; -#else - pDestTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; - TxD = *pDestTxD; - pTxD = &TxD; - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); -#endif - - if ((pTxD->Owner == DESC_OWN_HOST) && (pTxD->CipherOwn == DESC_OWN_HOST) && (pTxD->Valid == FALSE)) - { - HEADER_802_11 *pHeader_802_11; - - DBGPRINT(RT_DEBUG_TRACE, "SYNC - send NULL Frame @%d Mbps...\n", RateIdToMbps[TxRate]); -#ifdef BIG_ENDIAN - RTMPFrameEndianChange(pAdapter, (PUCHAR)pBuffer, DIR_WRITE, FALSE); -#endif - memcpy(pDest, pBuffer, Length); - pAdapter->TxRing[pAdapter->CurEncryptIndex].FrameType = BTYPE_DATA; - - pHeader_802_11 = (PHEADER_802_11) pDest; - pHeader_802_11->Controlhead.Frame.PwrMgt = (pAdapter->PortCfg.Psm == PWR_SAVE); - -#ifdef BIG_ENDIAN - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pDestTxD = TxD; - pTxD = pDestTxD; -#endif - - RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, TRUE, FALSE, FALSE, LONG_RETRY, IFS_BACKOFF, - TxRate, 4, Length, pAdapter->PortCfg.TxPreambleInUsed, 0); - - // Increase & maintain Tx Ring Index - pAdapter->CurEncryptIndex++; - if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) - { - pAdapter->CurEncryptIndex = 0; - } - - pAdapter->RalinkCounters.EncryptCount++; - - // Kick Encrypt Control Register at the end of all ring buffer preparation - RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); - - } - spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); - } - MlmeFreeMemory(pAdapter, pBuffer); -} - -/* - ======================================================================== - - Routine Description: - Copy frame from waiting queue into relative ring buffer and set - appropriate ASIC register to kick hardware encryption before really - sent out to air. - - Arguments: - pAdapter Pointer to our adapter - PNDIS_PACKET Pointer to outgoing Ndis frame - NumberOfFrag Number of fragment required - - Return Value: - None - - Note: - - ======================================================================== -*/ -NDIS_STATUS RTMPHardEncrypt( - IN PRTMP_ADAPTER pAdapter, - IN struct sk_buff *skb, - IN UCHAR NumberRequired, - IN ULONG EnableTxBurst, - IN UCHAR AccessCategory) -{ - PVOID pVirtualAddress; - UINT NdisBufferLength; - UINT BytesCopied; - UINT TxSize; - UINT FreeFragSize; - UINT RemainSize; - USHORT Protocol; - UCHAR FrameGap; - HEADER_802_11 Header_802_11; - PUCHAR pDest; - PUCHAR pSrc; - PUCHAR pEncap; - UCHAR CipherAlg; - PTXD_STRUC pTxD; - BOOLEAN StartOfFrame; - BOOLEAN EAPOLFrame; - BOOLEAN Encapped; - ULONG Iv16; - ULONG Iv32; - BOOLEAN MICFrag; - PWPA_KEY pWpaKey = NULL; - UCHAR RetryMode = SHORT_RETRY; - UCHAR AckRate = RATE_2; - USHORT AckDuration = 0; - USHORT EncryptionOverhead = 0; -#ifdef BIG_ENDIAN - PTXD_STRUC pDestTxD; - TXD_STRUC TxD; - PUCHAR pOriginDest; -#endif - unsigned long irqflag; - - // Make sure Tx ring resource won't be used by other threads - spin_lock_irqsave(&pAdapter->TxRingLock, irqflag); - - if(skb->data == NULL) - { - DBGPRINT(RT_DEBUG_ERROR, "Error, Null skb data buffer!!!\n"); - - spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); - return (NDIS_STATUS_FAILURE); - } - - if (EnableTxBurst == 1) - FrameGap = IFS_SIFS; - else - FrameGap = IFS_BACKOFF; // Default frame gap mode - - // outgoing frame always wakeup PHY to prevent frame lost and - // turn off PSM bit to improve performance - if (pAdapter->PortCfg.Psm == PWR_SAVE) - { - MlmeSetPsmBit(pAdapter, PWR_ACTIVE); - } - AsicForceWakeup(pAdapter); - - // Sequence Number is identical for all fragments belonged to the same frame - // Sequence is 0 - 4095 - pAdapter->Sequence = ((pAdapter->Sequence) + 1) & (MAX_SEQ_NUMBER); - - AckRate = pAdapter->PortCfg.ExpectedACKRate[pAdapter->PortCfg.TxRate]; - AckDuration = RTMPCalcDuration(pAdapter, AckRate, 14); - - pVirtualAddress = skb->data; - NdisBufferLength = skb->len; - - if ((*((PUCHAR) pVirtualAddress) & 0x01) != 0) // Multicast or Broadcast - { - INC_COUNTER(pAdapter->WlanCounters.MulticastTransmittedFrameCount); - } - - if (NdisBufferLength < 14) - { - DBGPRINT(RT_DEBUG_ERROR,"RTMPHardTransmit --> Ndis Packet buffer error !!!\n"); - // Make sure to release Tx ring resource - spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); - return (NDIS_STATUS_FAILURE); - } - - // - // Start making 802.11 frame header - // - memset(&Header_802_11, 0, sizeof(HEADER_802_11)); // Initialize 802.11 header for each fragment - if (INFRA_ON(pAdapter)) - { - // Address 1 - AP, Address 2 - this STA, Address 3 - DA - memcpy(&Header_802_11.Controlhead.Addr1, &pAdapter->PortCfg.Bssid, ETH_ALEN); - memcpy(&Header_802_11.Addr3, (PUCHAR) pVirtualAddress, ETH_ALEN); - Header_802_11.Controlhead.Frame.ToDs = 1; - } - else - { - // Address 1 - DA, Address 2 - this STA, Address 3 - BSSID - memcpy(&Header_802_11.Controlhead.Addr1, (PUCHAR) pVirtualAddress, ETH_ALEN); - memcpy(&Header_802_11.Addr3, &pAdapter->PortCfg.Bssid, ETH_ALEN); - } - memcpy(&Header_802_11.Controlhead.Addr2, pAdapter->CurrentAddress, ETH_ALEN); - - Header_802_11.Sequence = pAdapter->Sequence; // Sequence number - Header_802_11.Controlhead.Frame.Type = BTYPE_DATA; // Frame type - Header_802_11.Controlhead.Frame.PwrMgt = (pAdapter->PortCfg.Psm == PWR_SAVE); - - // Add 802.11x protocol check. - // For non-WPA network, 802.1x message should not encrypt even - // the privacy is on. - if (RTMPEqualMemory(EAPOL, ((PUCHAR) pVirtualAddress) + 12, 2)) - { - EAPOLFrame = TRUE; - if (pAdapter->PortCfg.MicErrCnt >= 2) - pAdapter->PortCfg.MicErrCnt++; - } - else - EAPOLFrame = FALSE; - - // WPA 802.1x secured port control - if (((pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPA) || - (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPAPSK)) && - ((pAdapter->PortCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED) || (pAdapter->PortCfg.MicErrCnt >= 2)) && - (EAPOLFrame == FALSE)) - { - DBGPRINT(RT_DEBUG_TRACE,"RTMPHardEncrypt --> Drop packet before port secured !!!\n"); - // Make sure to release Tx ring resource - spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); - return (NDIS_STATUS_FAILURE); - } - - MICFrag = FALSE; // Flag to indicate MIC shall spread into two MPDUs - Encapped = FALSE; - pEncap = NULL; - - pSrc = (PUCHAR) pVirtualAddress; - Protocol = *(pSrc + 12) * 256 + *(pSrc + 13); - if (Protocol > 1500) // CHeck for LLC encaped - { - pEncap = SNAP_802_1H; - Encapped = TRUE; - if (RTMPEqualMemory(IPX, pSrc + 12, 2) || - RTMPEqualMemory(APPLE_TALK, pSrc + 12, 2)) - { - pEncap = SNAP_BRIDGE_TUNNEL; - } - } - - if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) && - (pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen != 0)) - EncryptionOverhead = 8; // WEP: IV + ICV - else if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) - EncryptionOverhead = 12; // TKIP: IV + EIV + ICV, MIC already added to TotalPacketLength - else if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) - EncryptionOverhead = 16; // AES: IV + EIV + Hardware MIC - else - EncryptionOverhead = 0; - - // - // Make RTS frame if required - // - if (RTMP_GET_PACKET_RTS(skb)) - { - PCONTROL_HEADER pControlHeader; - ULONG NextFragSize; - - // RTS-protected frame should use LONG_RETRY (=4), other frames use SHORT_RETRY (=7) - RetryMode = LONG_RETRY; - - pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; -#ifndef BIG_ENDIAN - pTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; -#else - pDestTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; - TxD = *pDestTxD; - pTxD = &TxD; - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); -#endif - - if ((pTxD->Owner == DESC_OWN_NIC) || (pTxD->CipherOwn == DESC_OWN_NIC)) - { - // Descriptor owned by NIC. No descriptor avaliable - // This should not happen since caller guaranteed. - // Make sure to release Tx ring resource - spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); - return (NDIS_STATUS_RESOURCES); - } - if (pTxD->Valid == TRUE) - { - // This might happen when HardTransmit process faster than TxDone interrupt. - // However, Since we did call free descriptor number check before Tx HardTransmit. - // This case should not happened. We should return to higher caller and requeue this - // acket until next Tx hardtransmit. Hopefully this situation is corrected then. - // Ndis packet of last round did not cleared. - // This should not happen since caller guaranteed. - // Make sure to release Tx ring resource - pTxD->Valid = FALSE; -#ifdef BIG_ENDIAN - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pDestTxD = TxD; -#endif - - spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); - return (NDIS_STATUS_RESOURCES); - } - - pAdapter->TxRing[pAdapter->CurEncryptIndex].FrameType = BTYPE_CNTL; - pControlHeader = (PCONTROL_HEADER) pDest; - memset(pControlHeader, 0, sizeof(CONTROL_HEADER)); - pControlHeader->Frame.Type = BTYPE_CNTL; - - // Calculate duration = 2 SIFS + CTS + Data Frame size - if (RTMP_GET_PACKET_FRAGMENTS(skb) > 1) - { - // If fragment required, size is maximum fragment size - NextFragSize = pAdapter->PortCfg.FragmentThreshold; - } - else - { - // Size should be frame with 802.11 header & CRC - NextFragSize = skb->data_len + LENGTH_802_11 + LENGTH_CRC - LENGTH_802_3; - - if (Encapped) - NextFragSize += LENGTH_802_1_H; - } - pControlHeader->Duration = 2 * (pAdapter->PortCfg.Dsifs) - + RTMPCalcDuration(pAdapter, pAdapter->PortCfg.TxRate, NextFragSize + EncryptionOverhead) - + AckDuration; - - // Write Tx descriptor - // Don't kick tx start until all frames are prepared - // RTS has to set more fragment bit for fragment burst - // RTS did not encrypt - if (pAdapter->PortCfg.BGProtectionInUsed == 1) - { - DBGPRINT(RT_DEBUG_TRACE,"Making CTS-to-self Frame\n"); - pControlHeader->Frame.Subtype = SUBTYPE_CTS; - memcpy(&pControlHeader->Addr1, pAdapter->CurrentAddress, ETH_ALEN); - -#ifdef BIG_ENDIAN - RTMPFrameEndianChange(pAdapter, (PUCHAR)pControlHeader, DIR_WRITE, FALSE); - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pDestTxD = TxD; - pTxD = pDestTxD; -#endif - - -#ifdef WIFI_TEST - RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, SHORT_RETRY, - FrameGap, pAdapter->PortCfg.RtsRate, 4, 10, Rt802_11PreambleShort, - AccessCategory); -#else - RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, SHORT_RETRY, - FrameGap, pAdapter->PortCfg.RtsRate, 4, 10, pAdapter->PortCfg.TxPreambleInUsed, - AccessCategory); -#endif - } - else - { - DBGPRINT(RT_DEBUG_TRACE,"Making RTS Frame\n"); - pControlHeader->Frame.Subtype = SUBTYPE_RTS; - if (INFRA_ON(pAdapter)) - memcpy(&pControlHeader->Addr1, &pAdapter->PortCfg.Bssid, ETH_ALEN); - else - memcpy(&pControlHeader->Addr1, (PUCHAR) pVirtualAddress, ETH_ALEN); - memcpy(&pControlHeader->Addr2, pAdapter->CurrentAddress, ETH_ALEN); -#ifdef BIG_ENDIAN - RTMPFrameEndianChange(pAdapter, (PUCHAR)pControlHeader, DIR_WRITE, FALSE); - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pDestTxD = TxD; - pTxD = pDestTxD; -#endif - RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, TRUE, TRUE, FALSE, SHORT_RETRY, - FrameGap, pAdapter->PortCfg.RtsRate, 4, sizeof(CONTROL_HEADER), - pAdapter->PortCfg.TxPreambleInUsed, AccessCategory); - pTxD->RTS = 1; - } - - FrameGap = IFS_SIFS; // Init frame gap for coming data after RTS - NumberRequired--; - - // Increase & maintain Tx Ring Index - pAdapter->CurEncryptIndex++; - if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) - { - pAdapter->CurEncryptIndex = 0; - } - pAdapter->RalinkCounters.EncryptCount++; - } - - // Find the WPA key, either Group or Pairwise Key - if (pAdapter->PortCfg.AuthMode >= Ndis802_11AuthModeWPA) - { - INT idx; - - pWpaKey = (PWPA_KEY) NULL; - // First lookup the DA, if it's a group address, use GROUP key - if (Header_802_11.Controlhead.Addr1.Octet[0] & 0x01) - { - if (pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId].KeyLen != 0) - { - pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId]; - pWpaKey->Type = GROUP_KEY; - DBGPRINT(RT_DEBUG_INFO, "Tx Use Group Key\n"); - } - } - // Try to find the Pairwise Key - else - { - for (idx = 0; idx < PAIRWISE_KEY_NO; idx++) - { - if ((NdisEqualMemory(&Header_802_11.Controlhead.Addr1, pAdapter->PortCfg.PairwiseKey[idx].BssId, 6)) && - (pAdapter->PortCfg.PairwiseKey[idx].KeyLen != 0)) - { - pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.PairwiseKey[idx]; - pWpaKey->Type = PAIRWISE_KEY; - DBGPRINT(RT_DEBUG_INFO, "Tx Use Pairwise Key\n"); - break; - } - } - // Use default Group Key if there is no Pairwise key present - if ((pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId].KeyLen != 0) && (pWpaKey == NULL)) - { - pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId]; - pWpaKey->Type = GROUP_KEY; - DBGPRINT(RT_DEBUG_INFO, "Tx Use Group Key\n"); - } - } - } - - // For the purpose to calculate duration for the second last fragment - RemainSize = skb->data_len - LENGTH_802_3 + LENGTH_CRC; - - StartOfFrame = TRUE; - // Start Copy Ndis Packet into Ring buffer. - // For frame required more than one ring buffer (fragment), all ring buffers - // have to be filled before kicking start tx bit. - do - { - // Get the Tx Ring descriptor & Dma Buffer address -#ifndef BIG_ENDIAN - pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; - pTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; -#else - pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; - pOriginDest = pDest; - pDestTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; - TxD = *pDestTxD; - pTxD = &TxD; - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); -#endif - - if ((pTxD->Owner == DESC_OWN_NIC) || (pTxD->CipherOwn == DESC_OWN_NIC)) - { - // Descriptor owned by NIC. No descriptor avaliable - // This should not happen since caller guaranteed. - // Make sure to release Tx ring resource - pAdapter->RalinkCounters.TxRingErrCount++; - spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); - return (NDIS_STATUS_RESOURCES); - } - if (pTxD->Valid == TRUE) - { - // Ndis packet of last round did not cleared. - // This should not happen since caller guaranteed. - // Make sure to release Tx ring resource - pTxD->Valid = FALSE; - -#ifdef BIG_ENDIAN - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pDestTxD = TxD; -#endif - - pAdapter->RalinkCounters.TxRingErrCount++; - spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); - return (NDIS_STATUS_RESOURCES); - } - pAdapter->TxRing[pAdapter->CurEncryptIndex].FrameType = BTYPE_DATA; - - // Make fragment number & more fragment bit of 802.11 header - if (StartOfFrame == TRUE) - Header_802_11.Frag = 0; // Start of fragment burst / Single Frame - else - Header_802_11.Frag++; // Rest of fragmented frames. - - // Maximum allowable payload with one ring buffer, bound by fragment size - FreeFragSize = pAdapter->PortCfg.FragmentThreshold - LENGTH_CRC; - - // - // calculate "duration" field of this fragment - // - if (NumberRequired > 1) - { - ULONG NextFragSize; - Header_802_11.Controlhead.Frame.MoreFrag = 1; - - if (NumberRequired == 2) - NextFragSize = RemainSize - pAdapter->PortCfg.FragmentThreshold + LENGTH_802_11 + LENGTH_802_11 + LENGTH_CRC; - else - NextFragSize = pAdapter->PortCfg.FragmentThreshold; - - Header_802_11.Controlhead.Duration = 3 * pAdapter->PortCfg.Dsifs - + 2 * AckDuration - + RTMPCalcDuration(pAdapter, pAdapter->PortCfg.TxRate, NextFragSize + EncryptionOverhead); - } - else // this is the last or only fragment - { - Header_802_11.Controlhead.Frame.MoreFrag = 0; - - if (Header_802_11.Controlhead.Addr1.Octet[0] & 0x01) // multicast/broadcast - Header_802_11.Controlhead.Duration = 0; - else - Header_802_11.Controlhead.Duration = pAdapter->PortCfg.Dsifs + AckDuration; - } - - // Check for WEP enable bit and prepare for software WEP - if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) && (EAPOLFrame == FALSE) && - (pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen != 0)) - Header_802_11.Controlhead.Frame.Wep = 1; - else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pWpaKey != NULL)) - Header_802_11.Controlhead.Frame.Wep = 1; - else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) && (pWpaKey != NULL)) - Header_802_11.Controlhead.Frame.Wep = 1; - - // - // Copy 802.11 header to Tx ring buffer - // - memcpy(pDest, &Header_802_11, sizeof(Header_802_11)); - pDest += sizeof(Header_802_11); - FreeFragSize -= sizeof(Header_802_11); - - DBGPRINT(RT_DEBUG_TRACE,"pWpaKey = %s\n", pWpaKey == NULL ? "NULL" : "not NULL"); - - if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) && (EAPOLFrame == FALSE) && - (pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen != 0)) - { - DBGPRINT(RT_DEBUG_TRACE,"Ndis802_11Encryption1Enabled::DefaultKeyId = %d\n", pAdapter->PortCfg.DefaultKeyId); - // Prepare IV, IV offset, Key for Hardware encryption - RTMPInitWepEngine( - pAdapter, - pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].Key, - pAdapter->PortCfg.DefaultKeyId, - pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen, - (PUCHAR) &pTxD->Iv); - - if (pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen == 5) - CipherAlg = CIPHER_WEP64; - else - CipherAlg = CIPHER_WEP128; - - // Set Iv offset in TxD - pTxD->IvOffset = LENGTH_802_11; - // Copy Encrypt Key to TxD - memcpy( - pTxD->Key, - pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].Key, - pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen); - } - else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pWpaKey != NULL)) - { - INT i = 0; - DBGPRINT(RT_DEBUG_TRACE,"Ndis802_11Encryption2Enabled::DefaultKeyId = %d\n", pAdapter->PortCfg.DefaultKeyId); - // Prepare 8 bytes TKIP encapsulation for MPDU - { - TKIP_IV tkipIv; - - tkipIv.IV16.field.rc0 = *(pWpaKey->TxTsc + 1); - tkipIv.IV16.field.rc1 = (tkipIv.IV16.field.rc0 | 0x20) & 0x7f; - tkipIv.IV16.field.rc2 = *pWpaKey->TxTsc; - tkipIv.IV16.field.ExtIV = 1; // 0: non-extended IV, 1: an extended IV - tkipIv.IV16.field.KeyID = pAdapter->PortCfg.DefaultKeyId; - tkipIv.IV32 = *(PULONG)(pWpaKey->TxTsc + 2); -#if 0 //jett, 2004-1222 ------------------ -#if BIG_ENDIAN == TRUE - pTxD->Iv = (tkipIv.IV16.field.rc0 << 24) | (tkipIv.IV16.field.rc1 << 16) | (tkipIv.IV16.field.rc2 << 8) | (tkipIv.IV16.field.CONTROL.Byte); -#endif - -#ifdef RTMP_EMBEDDED - pTxD->Iv = (tkipIv.IV16.field.CONTROL.Byte << 24) | (tkipIv.IV16.field.rc2 << 16) | (tkipIv.IV16.field.rc1 << 8) | (tkipIv.IV16.field.rc0); -#else - pTxD->Iv = tkipIv.IV16.word; -#endif -#else //---------------------------------- -#ifdef BIG_ENDIAN - pTxD->Iv = SWAP32(tkipIv.IV16.word); -#else - pTxD->Iv = tkipIv.IV16.word; -#endif -#endif //---------------------------------- - - *((PUCHAR) &pTxD->Eiv) = *((PUCHAR) &tkipIv.IV32 + 3); - *((PUCHAR) &pTxD->Eiv + 1) = *((PUCHAR) &tkipIv.IV32 + 2); - *((PUCHAR) &pTxD->Eiv + 2) = *((PUCHAR) &tkipIv.IV32 + 1); - *((PUCHAR) &pTxD->Eiv + 3) = *((PUCHAR) &tkipIv.IV32); - } - - // Increase TxTsc value for next transmission - while (++pWpaKey->TxTsc[i] == 0x0) - { - i++; - if (i == 6) - break; - } - - // Set IV offset - pTxD->IvOffset = LENGTH_802_11; - - // Copy TKey - memcpy(pTxD->Key, pWpaKey->Key, 16); - - // Set Cipher suite - CipherAlg = CIPHER_TKIP; - } - else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) && (pWpaKey != NULL)) - { - INT i; - PUCHAR pTmp; - - i = 0; - pTmp = (PUCHAR) &Iv16; - *pTmp = pWpaKey->TxTsc[0]; - *(pTmp + 1) = pWpaKey->TxTsc[1]; - *(pTmp + 2) = 0; - *(pTmp + 3) = (pAdapter->PortCfg.DefaultKeyId << 6) | 0x20; - - Iv32 = *(PULONG)(&pWpaKey->TxTsc[2]); - - // Increase TxTsc value for next transmission - while (++pWpaKey->TxTsc[i] == 0x0) - { - i++; - if (i == 6) - break; - } - if (i == 6) - { - // TODO: TSC has done one full cycle, do re-keying stuff follow specs - // Should send a special event microsoft defined to request re-key - } - - memcpy(&pTxD->Iv, &Iv16, 4); // Copy IV - memcpy(&pTxD->Eiv, &Iv32, 4); // Copy EIV - pTxD->IvOffset = LENGTH_802_11; // Set IV offset - memcpy(pTxD->Key, pWpaKey->Key, 16); // Copy TKey - CipherAlg = CIPHER_AES; // Set Cipher suite - } - else - CipherAlg = CIPHER_NONE; - - // - // Only the first fragment required LLC-SNAP header !!! - // - if ((StartOfFrame == TRUE) && (Encapped == TRUE)) - { - // For WEP & no encryption required frame, just copy LLC header into buffer, - // Hardware will do the encryption job. - // For TKIP, we have to calculate MIC and store it first - if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pWpaKey != NULL)) - { - // Calculate MSDU MIC Value - RTMPCalculateMICValue(pAdapter, skb, pEncap, 6, pWpaKey); - } - - // Copy LLC header - memcpy(pDest, pEncap, 6); - pDest += 6; - - // Copy protocol type - pSrc = (PUCHAR) pVirtualAddress; - memcpy(pDest, pSrc + 12, 2); - pDest += 2; - - // Exclude 802.3 header size, we will recalculate the size at - // the end of fragment preparation. - NdisBufferLength -= LENGTH_802_3; - pSrc += LENGTH_802_3; - FreeFragSize -= LENGTH_802_1_H; - } - else if ((StartOfFrame == TRUE) && (Encapped == FALSE)) - { - if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pWpaKey != NULL)) - { - // Calculate MSDU MIC Value - RTMPCalculateMICValue(pAdapter, skb, pEncap, 0, pWpaKey); - } - - pSrc = (PUCHAR) pVirtualAddress + LENGTH_802_3; - NdisBufferLength -= LENGTH_802_3; - } - - // Start copying payload - BytesCopied = 0; - do - { - if (NdisBufferLength >= FreeFragSize) - { - // Copy only the free fragment size, and save the pointer - // of current buffer descriptor for next fragment buffer. - memcpy(pDest, pSrc, FreeFragSize); - BytesCopied += FreeFragSize; - pSrc += FreeFragSize; - pDest += FreeFragSize; - NdisBufferLength -= FreeFragSize; - break; - } - else - { - // Copy the rest of this buffer descriptor pointed data - // into ring buffer. - memcpy(pDest, pSrc, NdisBufferLength); - BytesCopied += NdisBufferLength; - pDest += NdisBufferLength; - FreeFragSize -= NdisBufferLength; - } - - // No more buffer descriptor - // Add MIC value if needed - if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && - (MICFrag == FALSE) && - (pWpaKey != NULL)) - { - INT i; - - NdisBufferLength = 8; // Set length to MIC length - DBGPRINT(RT_DEBUG_INFO, "Calculated TX MIC value ="); - for (i = 0; i < 8; i++) - { - DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PrivateInfo.Tx.MIC[i]); - } - DBGPRINT(RT_DEBUG_INFO, "\n"); - - if (FreeFragSize >= NdisBufferLength) - { - memcpy(pDest, pAdapter->PrivateInfo.Tx.MIC, NdisBufferLength); - BytesCopied += NdisBufferLength; - pDest += NdisBufferLength; - FreeFragSize -= NdisBufferLength; - NdisBufferLength = 0; - RemainSize += 8; // Need to add MIC as payload - } - else - { - memcpy(pDest, pAdapter->PrivateInfo.Tx.MIC, FreeFragSize); - BytesCopied += FreeFragSize; - pSrc = pAdapter->PrivateInfo.Tx.MIC + FreeFragSize; - pDest += FreeFragSize; - NdisBufferLength -= FreeFragSize; - MICFrag = TRUE; - RemainSize += (8 - FreeFragSize); // Need to add MIC as payload - } - } - } while (FALSE); // End of copying payload - - // Real packet size, No 802.1H header for fragments except the first one. - if ((StartOfFrame == TRUE) && (Encapped == TRUE)) - { - TxSize = BytesCopied + LENGTH_802_11 + LENGTH_802_1_H; - } - else - { - TxSize = BytesCopied + LENGTH_802_11; - } - - RemainSize = RemainSize - BytesCopied; - - if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) && (Header_802_11.Controlhead.Frame.Wep == 1)) - { - // IV + ICV which ASIC added after encryption done - TxSize += 8; - } - else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pWpaKey != NULL)) - { - // IV + EIV + ICV which ASIC added after encryption done - TxSize += 12; - } - else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) && (pWpaKey != NULL)) - { - // IV + EIV + HW MIC - TxSize += 16; - } - - // Prepare Tx descriptors before kicking tx. - // The BBP register index in Tx descriptor has to be configured too. -#ifdef BIG_ENDIAN - RTMPFrameEndianChange(pAdapter, pOriginDest, DIR_WRITE, FALSE); - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pDestTxD = TxD; - pTxD = pDestTxD; -#endif - if (Header_802_11.Controlhead.Addr1.Octet[0] & 0x01) - { - // Multicast, retry bit is off - RTMPWriteTxDescriptor(pTxD, TRUE, CipherAlg, FALSE, FALSE, FALSE, RetryMode, FrameGap, - pAdapter->PortCfg.TxRate, 4, TxSize, pAdapter->PortCfg.TxPreambleInUsed, AccessCategory); - } - else - { - RTMPWriteTxDescriptor(pTxD, TRUE, CipherAlg, TRUE, FALSE, FALSE, RetryMode, FrameGap, - pAdapter->PortCfg.TxRate, 4, TxSize, pAdapter->PortCfg.TxPreambleInUsed, AccessCategory); - } - - // Set frame gap for the rest of fragment burst. - // It won't matter if there is only one fragment (single fragment frame). - StartOfFrame = FALSE; - FrameGap = IFS_SIFS; - NumberRequired--; - - // Increase & maintain Tx Ring Index - pAdapter->CurEncryptIndex++; - if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) - { - pAdapter->CurEncryptIndex = 0; - } - - pAdapter->RalinkCounters.EncryptCount++; - - } while (NumberRequired > 0); - - - // Kick Encrypt Control Register at the end of all ring buffer preparation - RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); - - // Acknowledge protocol send complete of pending packet. - dev_kfree_skb_irq(skb); - - // Make sure to release Tx ring resource - spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); - - return (NDIS_STATUS_SUCCESS); -} - -/* - ======================================================================== - - Routine Description: - Calculates the duration which is required to transmit out frames - with given size and specified rate. - - Arguments: - pAdapter Pointer to our adapter - Rate Transmit rate - Size Frame size in units of byte - - Return Value: - Duration number in units of usec - - Note: - - ======================================================================== -*/ -USHORT RTMPCalcDuration( - IN PRTMP_ADAPTER pAdapter, - IN UCHAR Rate, - IN ULONG Size) -{ - ULONG Duration = 0; - - if (Rate < RATE_FIRST_OFDM_RATE) // CCK - { - if ((Rate > RATE_1) && (pAdapter->PortCfg.TxPreambleInUsed == Rt802_11PreambleShort)) - Duration = 96; // 72+24 preamble+plcp - else - Duration = 192; // 144+48 preamble+plcp - - Duration += (USHORT)((Size << 4) / RateIdTo500Kbps[Rate]); - if ((Size << 4) % RateIdTo500Kbps[Rate]) - Duration ++; - } - else // OFDM rates - { - Duration = 20 + 6; // 16+4 preamble+plcp + Signal Extension - Duration += 4 * (USHORT)((11 + Size * 4) / RateIdTo500Kbps[Rate]); - if ((11 + Size * 4) % RateIdTo500Kbps[Rate]) - Duration += 4; - } - - return (USHORT)Duration; - -} - -/* - ======================================================================== - - Routine Description: - Calculates the duration which is required to transmit out frames - with given size and specified rate. - - Arguments: - pTxD Pointer to transmit descriptor - Ack Setting for Ack requirement bit - Fragment Setting for Fragment bit - RetryMode Setting for retry mode - Ifs Setting for IFS gap - Rate Setting for transmit rate - Service Setting for service - Length Frame length - TxPreamble Short or Long preamble when using CCK rates - AccessCategory - 0-3, according to 802.11e/d4.4 June/2003 - - Return Value: - None - - ======================================================================== -*/ -VOID RTMPWriteTxDescriptor( - IN PTXD_STRUC pSourceTxD, - IN BOOLEAN DoEncrypt, - IN UCHAR CipherAlg, - IN BOOLEAN Ack, - IN BOOLEAN Fragment, - IN BOOLEAN InsTimestamp, - IN UCHAR RetryMode, - IN UCHAR Ifs, - IN UINT Rate, - IN UCHAR Service, - IN ULONG Length, - IN USHORT TxPreamble, - IN UCHAR AccessCategory) -{ - UINT Residual; - PTXD_STRUC pTxD; -#ifndef BIG_ENDIAN - pTxD = pSourceTxD; -#else - TXD_STRUC TxD; - - TxD = *pSourceTxD; - pTxD = &TxD; - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); -#endif - - pTxD->MoreFrag = Fragment; - pTxD->ACK = Ack; - pTxD->Timestamp = InsTimestamp; - pTxD->RetryMd = RetryMode; - pTxD->IFS = Ifs; - pTxD->DataByteCnt = Length; - pTxD->TxRate = Rate; - switch (AccessCategory) // 802.11e/d4.4 June/2003 - { - case 3: // TC3, = <1, aCwMin/4, aCwMin/2> - pTxD->CWmin = CW_MIN_IN_BITS - 2; - pTxD->CWmax = CW_MIN_IN_BITS - 1; - pTxD->Aifs = 1; - break; - case 2: // TC2, = <1, aCwMin/2, aCwMin> - pTxD->CWmin = CW_MIN_IN_BITS - 1; - pTxD->CWmax = CW_MIN_IN_BITS; - pTxD->Aifs = 1; - break; - case 1: // TC1, = <1, aCwMin, aCwMax> - pTxD->CWmin = CW_MIN_IN_BITS; - pTxD->CWmax = CW_MAX_IN_BITS; - pTxD->Aifs = 1; - break; - case 0: // TC0, = <2, aCwMin, aCwMax> - default: - pTxD->CWmin = CW_MIN_IN_BITS; - pTxD->CWmax = CW_MAX_IN_BITS; - pTxD->Aifs = 2; - break; - } - - if (Rate < RATE_FIRST_OFDM_RATE) - pTxD->Ofdm = 0; - else - pTxD->Ofdm = 1; - - // fill up PLCP SIGNAL field - pTxD->PlcpSignal = PlcpSignal[Rate]; - if (((Rate == RATE_2) || (Rate == RATE_5_5) || (Rate == RATE_11)) && (TxPreamble == Rt802_11PreambleShort)) // no short preamble for RATE_1 - { - pTxD->PlcpSignal |= 0x0008; - } - - // fill up PLCP SERVICE field, not used for OFDM rates - pTxD->PlcpService = Service; - - // file up PLCP LENGTH_LOW and LENGTH_HIGH fields - Length += 4; - if (Rate < RATE_FIRST_OFDM_RATE) // 11b - RATE_1, RATE_2, RATE_5_5, RATE_11 - { - if ((Rate == RATE_1) || ( Rate == RATE_2)) - { - Length = Length * 8 / (Rate + 1); - } - else - { - Residual = ((Length * 16) % (11 * (1 + Rate - RATE_5_5))); - Length = Length * 16 / (11 * (1 + Rate - RATE_5_5)); - if (Residual != 0) - { - Length++; - } - if ((Residual <= (3 * (1 + Rate - RATE_5_5))) && (Residual != 0)) - { - if (Rate == RATE_11) // Only 11Mbps require length extension bit - pTxD->PlcpService |= 0x80; // 11b's PLCP Length extension bit - } - } - - pTxD->PlcpLengthHigh = Length / 256; - pTxD->PlcpLengthLow = Length % 256; - } - else // OFDM - RATE_6, RATE_9, RATE_12, RATE_18, RATE_24, RATE_36, RATE_48, RATE_54 - { - pTxD->PlcpLengthHigh = Length / 64; // high 6-bit of total byte count - pTxD->PlcpLengthLow = Length % 64; // low 6-bit of total byte count - } - - if (DoEncrypt == TRUE) // Do encryption only - { - pTxD->Owner = DESC_OWN_HOST; - pTxD->Valid = FALSE; - pTxD->CipherAlg = CipherAlg; - pTxD->CipherOwn = DESC_OWN_NIC; - } - else // Hard transmit - { - pTxD->Valid = TRUE; - pTxD->CipherAlg = CIPHER_NONE; - pTxD->CipherOwn = DESC_OWN_HOST; - pTxD->Owner = DESC_OWN_NIC; - } -#ifdef BIG_ENDIAN - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pSourceTxD = *pTxD; -#endif -} - -/* - ======================================================================== - - Routine Description: - Search tuple cache for receive duplicate frame from unicast frames. - - Arguments: - pAdapter Pointer to our adapter - pHeader 802.11 header of receiving frame - - Return Value: - TRUE found matched tuple cache - FALSE no matched found - - Note: - - ======================================================================== -*/ -BOOLEAN RTMPSearchTupleCache( - IN PRTMP_ADAPTER pAdapter, - IN PHEADER_802_11 pHeader) -{ - INT Index; - - for (Index = 0; Index < MAX_CLIENT; Index++) - { - if (pAdapter->TupleCache[Index].Valid == FALSE) - continue; - - if (RTMPEqualMemory(&pAdapter->TupleCache[Index].MAC, &pHeader->Controlhead.Addr2, 6) && - (pAdapter->TupleCache[Index].Sequence == pHeader->Sequence) && - (pAdapter->TupleCache[Index].Frag == pHeader->Frag)) - { -// DBGPRINT(RT_DEBUG_TRACE,("DUPCHECK - duplicate frame hit entry %d\n", Index)); - return (TRUE); - } - } - return (FALSE); -} - -/* - ======================================================================== - - Routine Description: - Update tuple cache for new received unicast frames. - - Arguments: - pAdapter Pointer to our adapter - pHeader 802.11 header of receiving frame - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPUpdateTupleCache( - IN PRTMP_ADAPTER pAdapter, - IN PHEADER_802_11 pHeader) -{ - UCHAR Index; - - for (Index = 0; Index < MAX_CLIENT; Index++) - { - if (pAdapter->TupleCache[Index].Valid == FALSE) - { - // Add new entry - memcpy(&pAdapter->TupleCache[Index].MAC, &pHeader->Controlhead.Addr2, 6); - pAdapter->TupleCache[Index].Sequence = pHeader->Sequence; - pAdapter->TupleCache[Index].Frag = pHeader->Frag; - pAdapter->TupleCache[Index].Valid = TRUE; - pAdapter->TupleCacheLastUpdateIndex = Index; - DBGPRINT(RT_DEBUG_INFO,"DUPCHECK - Add Entry %d, MAC=%02x:%02x:%02x:%02x:%02x:%02x\n", - Index, pAdapter->TupleCache[Index].MAC.Octet[0], pAdapter->TupleCache[Index].MAC.Octet[1], - pAdapter->TupleCache[Index].MAC.Octet[2], pAdapter->TupleCache[Index].MAC.Octet[3], - pAdapter->TupleCache[Index].MAC.Octet[4], pAdapter->TupleCache[Index].MAC.Octet[5]); - return; - } - else if (RTMPEqualMemory(&pAdapter->TupleCache[Index].MAC, &pHeader->Controlhead.Addr2, 6)) - { - // Update old entry - pAdapter->TupleCache[Index].Sequence = pHeader->Sequence; - pAdapter->TupleCache[Index].Frag = pHeader->Frag; - return; - } - } - - // tuple cache full, replace the first inserted one (even though it may not be - // least referenced one) - if (Index == MAX_CLIENT) - { - pAdapter->TupleCacheLastUpdateIndex ++; - if (pAdapter->TupleCacheLastUpdateIndex >= MAX_CLIENT) - pAdapter->TupleCacheLastUpdateIndex = 0; - Index = pAdapter->TupleCacheLastUpdateIndex; - - // replace with new entry - memcpy(&pAdapter->TupleCache[Index].MAC, &pHeader->Controlhead.Addr2, 6); - pAdapter->TupleCache[Index].Sequence = pHeader->Sequence; - pAdapter->TupleCache[Index].Frag = pHeader->Frag; - pAdapter->TupleCache[Index].Valid = TRUE; - DBGPRINT(RT_DEBUG_INFO,"DUPCHECK - replace Entry %d, MAC=%02x:%02x:%02x:%02x:%02x:%02x\n", - Index, pAdapter->TupleCache[Index].MAC.Octet[0], pAdapter->TupleCache[Index].MAC.Octet[1], - pAdapter->TupleCache[Index].MAC.Octet[2], pAdapter->TupleCache[Index].MAC.Octet[3], - pAdapter->TupleCache[Index].MAC.Octet[4], pAdapter->TupleCache[Index].MAC.Octet[5]); - } -} - -/* - ======================================================================== - - Routine Description: - Suspend MSDU transmission - - Arguments: - pAdapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPSuspendMsduTransmission( - IN PRTMP_ADAPTER pAdapter) -{ - DBGPRINT(RT_DEBUG_TRACE,"SCANNING, suspend MSDU transmission ...\n"); - RTMP_SET_FLAG(pAdapter, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS); -} - -/* - ======================================================================== - - Routine Description: - Resume MSDU transmission - - Arguments: - pAdapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPResumeMsduTransmission( - IN PRTMP_ADAPTER pAdapter) -{ - DBGPRINT(RT_DEBUG_INFO,"SCAN done, resume MSDU transmission ...\n"); - RTMP_CLEAR_FLAG(pAdapter, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS); - - // Dequeue Tx queue if Reset is not in progress - if ((!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RESET_IN_PROGRESS)) && - (!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF))) - { - //RTMPDeQueuePacket(pAdapter, &pAdapter->TxSwQueue0); - // Call dequeue without selected queue, let the subroutine select the right priority - // Tx software queue - RTMPDeQueuePacket(pAdapter); - } -} - -/* - ======================================================================== - - Routine Description: - Apply packet filter policy, return NDIS_STATUS_FAILURE if this frame - should be dropped. - - Arguments: - pAdapter Pointer to our adapter - pRxD Pointer to the Rx descriptor - pHeader Pointer to the 802.11 frame header - - Return Value: - NDIS_STATUS_SUCCESS Accept frame - NDIS_STATUS_FAILURE Drop Frame - - Note: - Maganement frame should bypass this filtering rule. - - ======================================================================== -*/ -NDIS_STATUS RTMPApplyPacketFilter( - IN PRTMP_ADAPTER pAdapter, - IN PRXD_STRUC pRxD, - IN PHEADER_802_11 pHeader) -{ - UCHAR i; - - // 0. Management frame should bypass all these filtering rules. - if (pHeader->Controlhead.Frame.Type == BTYPE_MGMT) - { - return(NDIS_STATUS_SUCCESS); - } - - // 0.1 Drop all Rx frames if MIC countermeasures kicks in - if (pAdapter->PortCfg.MicErrCnt >= 2) - { - return(NDIS_STATUS_FAILURE); - } - - // 1. Drop unicast to me packet if NDIS_PACKET_TYPE_DIRECTED is FALSE - if (pRxD->U2M) - { - if (pAdapter->bAcceptDirect == FALSE) - { - return(NDIS_STATUS_FAILURE); - } - } - - // 2. Drop broadcast packet if NDIS_PACKET_TYPE_BROADCAST is FALSE - else if (pRxD->Bcast) - { - if (pAdapter->bAcceptBroadcast == FALSE) - { - return(NDIS_STATUS_FAILURE); - } - } - - // 3. Drop multicast packet if NDIS_PACKET_TYPE_ALL_MULTICAST is false - // and NDIS_PACKET_TYPE_MULTICAST is false. - // If NDIS_PACKET_TYPE_MULTICAST is true, but NDIS_PACKET_TYPE_ALL_MULTICAST is false. - // We have to deal with multicast table lookup & drop not matched packets. - else if (pRxD->Mcast) - { - if (pAdapter->bAcceptAllMulticast == FALSE) - { - if (pAdapter->bAcceptMulticast == FALSE) - { - return(NDIS_STATUS_FAILURE); - } - else - { - // Selected accept multicast packet based on multicast table - for (i = 0; i < pAdapter->NumberOfMcAddresses; i++) - { - if (RTMPEqualMemory(&pHeader->Controlhead.Addr1, pAdapter->McastTable[i], ETH_ALEN)) - { - break; // Matched - } - } - - // Not matched - if (i == pAdapter->NumberOfMcAddresses) - { - DBGPRINT(RT_DEBUG_INFO,"Drop multicast %02x:%02x:%02x:%02x:%02x:%02x\n", - pHeader->Controlhead.Addr1.Octet[0], pHeader->Controlhead.Addr1.Octet[1], - pHeader->Controlhead.Addr1.Octet[2], pHeader->Controlhead.Addr1.Octet[3], - pHeader->Controlhead.Addr1.Octet[4], pHeader->Controlhead.Addr1.Octet[5]); - return(NDIS_STATUS_FAILURE); - } - else - { - DBGPRINT(RT_DEBUG_INFO,"Accept multicast %02x:%02x:%02x:%02x:%02x:%02x\n", - pHeader->Controlhead.Addr1.Octet[0], pHeader->Controlhead.Addr1.Octet[1], - pHeader->Controlhead.Addr1.Octet[2], pHeader->Controlhead.Addr1.Octet[3], - pHeader->Controlhead.Addr1.Octet[4], pHeader->Controlhead.Addr1.Octet[5]); - } - } - } - } - - // 4. Not U2M, not Mcast, not Bcast, must be unicast to other DA. - // Since we did not implement promiscuous mode, just drop this kind of packet for now. - else if (pAdapter->bAcceptPromiscuous == FALSE) - { - return(NDIS_STATUS_FAILURE); - } - - return(NDIS_STATUS_SUCCESS); -} - -/* - ======================================================================== - - Routine Description: - Check and fine the packet waiting in SW queue with highest priority - - Arguments: - pAdapter Pointer to our adapter - - Return Value: - pQueue Pointer to Waiting Queue - - Note: - - ======================================================================== -*/ -struct sk_buff_head* RTMPCheckTxSwQueue( - IN PRTMP_ADAPTER pAdapter, - OUT UCHAR *AccessCategory) -{ - if (!skb_queue_empty(&pAdapter->TxSwQueue3)) - { - *AccessCategory = 3; - return (&pAdapter->TxSwQueue3); - } - else if (!skb_queue_empty(&pAdapter->TxSwQueue2)) - { - *AccessCategory = 2; - return (&pAdapter->TxSwQueue2); - } - else if (!skb_queue_empty(&pAdapter->TxSwQueue1)) - { - *AccessCategory = 1; - return (&pAdapter->TxSwQueue1); - } - else if (!skb_queue_empty(&pAdapter->TxSwQueue0)) - { - *AccessCategory = 0; - return (&pAdapter->TxSwQueue0); - } - - // No packet pending in Tx Sw queue - *AccessCategory = 0; - return (NULL); -} - -/* - ======================================================================== - - Routine Description: - Process MIC error indication and record MIC error timer. - - Arguments: - pAdapter Pointer to our adapter - pWpaKey Pointer to the WPA key structure - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPReportMicError( - IN PRTMP_ADAPTER pAdapter, - IN PWPA_KEY pWpaKey) -{ - ULONG Now; - struct - { - NDIS_802_11_STATUS_INDICATION Status; - NDIS_802_11_AUTHENTICATION_REQUEST Request; - } Report; - - // 0. Set Status to indicate auth error - Report.Status.StatusType = Ndis802_11StatusType_Authentication; - - // 1. Check for Group or Pairwise MIC error - if (pWpaKey->Type == PAIRWISE_KEY) - Report.Request.Flags = NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR; - else - Report.Request.Flags = NDIS_802_11_AUTH_REQUEST_GROUP_ERROR; - - // 2. Copy AP MAC address - memcpy(Report.Request.Bssid, pWpaKey->BssId, 6); - - // 3. Calculate length - Report.Request.Length = sizeof(NDIS_802_11_AUTHENTICATION_REQUEST); - - // 4. Record Last MIC error time and count - Now = jiffies; - if (pAdapter->PortCfg.MicErrCnt == 0) - { - pAdapter->PortCfg.MicErrCnt++; - pAdapter->PortCfg.LastMicErrorTime = Now; - } - else if (pAdapter->PortCfg.MicErrCnt == 1) - { - if ((pAdapter->PortCfg.LastMicErrorTime + (60 * HZ)) < Now) - { - // Update Last MIC error time, this did not violate two MIC errors within 60 seconds - pAdapter->PortCfg.LastMicErrorTime = Now; - } - else - { - pAdapter->PortCfg.LastMicErrorTime = Now; - // Violate MIC error counts, MIC countermeasures kicks in - pAdapter->PortCfg.MicErrCnt++; - // We shall block all reception - // We shall clean all Tx ring and disassoicate from AP after next EAPOL frame - RTMPRingCleanUp(pAdapter, TX_RING); - } - } - else - { - // MIC error count >= 2 - // This should not happen - ; - } -} +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: rtmp_data.c + * + * Abstract: Data path subroutines + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * John 25th Feb 03 Modify for rt2560 + * MarkW 8th Dec 04 Baseline code + * MarkW (rt2400) 8th Dec 04 Promisc mode support + * RobinC 10th Dec 04 RFMON Support + * MarkW 10th Dec 04 Rolled in Ralink 1.4.5.0 + * MarkW 17th Dec 04 Monitor mode through iwconfig + * MarkW 19th Feb 05 Fixes to incoming byte count + * GregorG 29th Mar 05 Big endian fixes + ***************************************************************************/ + +#include "rt_config.h" + +static UCHAR SNAP_802_1H[] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00}; +static UCHAR SNAP_BRIDGE_TUNNEL[] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8}; +static UCHAR EAPOL[] = {0x88, 0x8e}; + +static UCHAR IPX[] = {0x81, 0x37}; +static UCHAR APPLE_TALK[] = {0x80, 0xf3}; +static UCHAR PlcpSignal[12] = { + 0, /* RATE_1 */ 1, /* RATE_2 */ 2, /* RATE_5_5 */ 3, /* RATE_11 */ // see BBP spec + 11, /* RATE_6 */ 15, /* RATE_9 */ 10, /* RATE_12 */ 14, /* RATE_18 */ // see IEEE802.11a-1999 p.14 + 9, /* RATE_24 */ 13, /* RATE_36 */ 8, /* RATE_48 */ 12 /* RATE_54 */ }; // see IEEE802.11a-1999 p.14 +static UINT _11G_RATES[12] = { 0, 0, 0, 0, 6, 9, 12, 18, 24, 36, 48, 54 }; + +#define COLLECT_RX_ANTENNA_AVERAGE_RSSI(_pAd, _RxAnt, _rssi) \ +{ \ + USHORT AvgRssi; \ + if (_RxAnt.PrimaryInUsed) \ + { \ + AvgRssi = _RxAnt.AvgRssi[_RxAnt.PrimaryRxAnt]; \ + if (AvgRssi > 0) \ + AvgRssi = AvgRssi - (AvgRssi >> 3) + _rssi; \ + else \ + AvgRssi = _rssi << 3; \ + _RxAnt.AvgRssi[_RxAnt.PrimaryRxAnt] = AvgRssi; \ + } \ + else \ + { \ + AvgRssi = _RxAnt.AvgRssi[_RxAnt.SecondaryRxAnt]; \ + _RxAnt.RcvPktNumWhenEvaluate++;\ + if ((AvgRssi > 0) && (_RxAnt.FirstPktArrivedWhenEvaluate)) \ + AvgRssi = AvgRssi - (AvgRssi >> 3) + _rssi; \ + else \ + { \ + _RxAnt.FirstPktArrivedWhenEvaluate = TRUE; \ + AvgRssi = _rssi << 3; \ + DBGPRINT(RT_DEBUG_TRACE,"Reset RSSI(%d) when first packet is rcved \n",_rssi-_pAd->PortCfg.RssiToDbm); \ + } \ + } \ +} \ + +/* + ======================================================================== + + Routine Description: + Check Rx descriptor, return NDIS_STATUS_FAILURE if any error dound + + Arguments: + pRxD Pointer to the Rx descriptor + + Return Value: + NDIS_STATUS_SUCCESS No err + NDIS_STATUS_FAILURE Error + + Note: + + ======================================================================== +*/ +inline NDIS_STATUS RTMPCheckRxDescriptor( + IN PRXD_STRUC pRxD) +{ + // Phy errors + if (pRxD->PhyErr) + return(NDIS_STATUS_FAILURE); + + // CRC errors + if (pRxD->Crc) + return(NDIS_STATUS_FAILURE); + + // Paul 04-03 for OFDM Rx length issue + if (pRxD->DataByteCnt > 1600) + return(NDIS_STATUS_FAILURE); + + return(NDIS_STATUS_SUCCESS); +} + +#ifdef BIG_ENDIAN +/* + ======================================================================== + + Routine Description: + Endian conversion of Tx/Rx descriptor . + + Arguments: + pAdapter Pointer to our adapter + pData Pointer to Tx/Rx descriptor + DescriptorType Direction of the frame + + Return Value: + None + + Note: + Call this function when read or update descriptor + ======================================================================== +*/ +inline VOID RTMPDescriptorEndianChange( + IN PUCHAR pData, + IN ULONG DescriptorType) +{ + *((ULONG *)(pData + 40)) = SWAP32(*((ULONG *)(pData + 40))); // Byte 10 + if(DescriptorType == TYPE_TXD) + *((ULONG *)(pData + 8)) = SWAP32(*((ULONG *)(pData + 8))); // Byte 2 + *(ULONG *)pData = SWAP32(*(ULONG *)pData); // Byte 0; this must be swapped last +} + +/* + ======================================================================== + + Routine Description: + Endian conversion of all kinds of 802.11 frames . + + Arguments: + pAdapter Pointer to our adapter + pData Pointer to the 802.11 frame structure + Dir Direction of the frame + FromRxDoneInt Caller is from RxDone interrupt + + Return Value: + None + + Note: + Call this function when read or update buffer data + ======================================================================== +*/ +VOID RTMPFrameEndianChange( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pData, + IN ULONG Dir, + IN BOOLEAN FromRxDoneInt) +{ + PMACHDR pFrame; + PUCHAR pMacHdr; + + // swab 16 bit fields - Frame Control field + if(Dir == DIR_READ) + { + *(USHORT *)pData = SWAP16(*(USHORT *)pData); + } + + pFrame = (PMACHDR) pData; + pMacHdr = (PUCHAR) pFrame; + + // swab 16 bit fields - Duration/ID field + *(USHORT *)(pMacHdr + 2) = SWAP16(*(USHORT *)(pMacHdr + 2)); + + // swab 16 bit fields - Sequence Control field + *(USHORT *)(pMacHdr + 22) = SWAP16(*(USHORT *)(pMacHdr + 22)); + + if(pFrame->Type == BTYPE_MGMT) + { + switch(pFrame->SubType) + { + case SUBTYPE_ASSOC_REQ: + case SUBTYPE_REASSOC_REQ: + // swab 16 bit fields - CapabilityInfo field + pMacHdr += MAC_HDR_LEN; + *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); + + // swab 16 bit fields - Listen Interval field + pMacHdr += 2; + *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); + break; + + case SUBTYPE_ASSOC_RSP: + case SUBTYPE_REASSOC_RSP: + // swab 16 bit fields - CapabilityInfo field + pMacHdr += MAC_HDR_LEN; + *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); + + // swab 16 bit fields - Status Code field + pMacHdr += 2; + *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); + + // swab 16 bit fields - AID field + pMacHdr += 2; + *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); + break; + + case SUBTYPE_AUTH: + // If from RTMPHandleRxDoneInterrupt routine, it is still a encrypt format. + // The convertion is delayed to RTMPHandleDecryptionDoneInterrupt. + if(!FromRxDoneInt && pAdapter->NeedSwapToLittleEndian == TRUE) + { + // swab 16 bit fields - Auth Alg No. field + pMacHdr += MAC_HDR_LEN; + *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); + + // swab 16 bit fields - Auth Seq No. field + pMacHdr += 2; + *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); + + // swab 16 bit fields - Status Code field + pMacHdr += 2; + *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); + } + break; + + case SUBTYPE_BEACON: + case SUBTYPE_PROBE_RSP: + // swab 16 bit fields - BeaconInterval field + pMacHdr += MAC_HDR_LEN + TIMESTAMP_LEN; + *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); + + // swab 16 bit fields - CapabilityInfo field + pMacHdr += sizeof(USHORT); + *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); + break; + + case SUBTYPE_DEAUTH: + case SUBTYPE_DISASSOC: + // swab 16 bit fields - Reason code field + pMacHdr += MAC_HDR_LEN; + *(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr); + break; + } + } + else if( pFrame->Type == BTYPE_DATA ) + { + } + else if(pFrame->Type == BTYPE_CNTL) + { + } + else + { + DBGPRINT(RT_DEBUG_ERROR,"Invalid Frame Type!!!\n"); + } + + // swab 16 bit fields - Frame Control + if(Dir == DIR_WRITE) + { + *(USHORT *)pData = SWAP16(*(USHORT *)pData); + } +} +#endif + +/* + ======================================================================== + + Routine Description: + Process RxDone interrupt, running in DPC level + + Arguments: + pAdapter Pointer to our adapter + + Return Value: + None + + Note: + This routine has to maintain Rx ring read pointer. + ======================================================================== +*/ +VOID RTMPHandleRxDoneInterrupt( + IN PRTMP_ADAPTER pAdapter) +{ + PRXD_STRUC pRxD; +#ifdef BIG_ENDIAN + PRXD_STRUC pDestRxD; + RXD_STRUC RxD; +#endif + PHEADER_802_11 pHeader; + PUCHAR pData; + PUCHAR pDestMac, pSrcMac; + UCHAR Count; + UCHAR KeyIdx; + PWPA_KEY pWpaKey; + NDIS_STATUS Status; + BOOLEAN bDropFrame; + ULONG RegValue;//, Address; + ULONGLONG HwDecryptIndex; + unsigned long irqflag; + + // Make sure Rx ring resource won't be used by other threads + spin_lock_irqsave(&pAdapter->RxRingLock, irqflag); + + // Verify Hardware Decryption pointer with Software Decryption pointer + RTMP_IO_READ32(pAdapter, SECCSR0, &RegValue); + HwDecryptIndex = RegValue - pAdapter->RxRing[0].pa_addr; + do_div(HwDecryptIndex, RING_DESCRIPTOR_SIZE); + +#if 0 + Address = pAdapter->RxRing[pAdapter->CurDecryptIndex].pa_addr; + if (Address != RegValue) + { + DBGPRINT(RT_DEBUG_ERROR,"Decrypt pointer not matched SW = 0x%x, HW = 0x%x\n", Address, RegValue); + DBGPRINT(RT_DEBUG_ERROR,"Sw Decr Ptr = %d, Rx ptr = %d Hw ptr = %d\n", + pAdapter->CurDecryptIndex, pAdapter->CurRxIndex, HwDecryptIndex); + } +#endif + Count = 0; + do + { + // Point to Rx indexed rx ring descriptor +#ifndef BIG_ENDIAN + pRxD = (PRXD_STRUC) pAdapter->RxRing[pAdapter->CurRxIndex].va_addr; +#else + pDestRxD = (PRXD_STRUC) pAdapter->RxRing[pAdapter->CurRxIndex].va_addr; + RxD = *pDestRxD; + pRxD = &RxD; + RTMPDescriptorEndianChange((PUCHAR)pRxD, TYPE_RXD); +#endif + // Initialize drop frame flag + bDropFrame = FALSE; + + // In case of false alarm or processed at last instance + if (pRxD->Owner != DESC_OWN_HOST) + { + break; + } + + // Decrypt engine stuck + if (pRxD->CipherOwner != DESC_OWN_HOST) + { + pAdapter->RalinkCounters.RxRingErrCount++; + break; + } + +#ifdef RALINK_ATE + if(pAdapter->ate.Mode == ATE_RXFRAME) + { + bDropFrame = TRUE; + } +#endif //#ifdef RALINK_ATE + + // Point to Rx ring buffer where stores the real data frame + pData = (PUCHAR) (pAdapter->RxRing[pAdapter->CurRxIndex].va_data_addr); + // Cast to 802.11 header for flags checking + pHeader = (PHEADER_802_11) pData; + +#ifdef BIG_ENDIAN + RTMPFrameEndianChange(pAdapter, (PUCHAR)pHeader, DIR_READ, TRUE); +#endif + + // Check for all RxD errors + Status = RTMPCheckRxDescriptor(pRxD); + + // Apply packet filtering rule based on microsoft requirements. + if (Status == NDIS_STATUS_SUCCESS) + Status = RTMPApplyPacketFilter(pAdapter, pRxD, pHeader); + + // Add receive counters + if (Status == NDIS_STATUS_SUCCESS) + { + // collect current antenna's average RSSI for software-based RX Antenna diversity + if (pRxD->U2M || pAdapter->bAcceptPromiscuous == TRUE || ((pHeader->Controlhead.Frame.Subtype == SUBTYPE_BEACON) && (MAC_ADDR_EQUAL(&pAdapter->PortCfg.Bssid, &pHeader->Controlhead.Addr2)))) + { + //DBGPRINT(RT_DEBUG_TRACE, "COLLECT_RSSI:(%d)\n", pRxD->BBR1 - pAdapter->PortCfg.RssiToDbm); + pAdapter->PortCfg.NumOfAvgRssiSample ++; + COLLECT_RX_ANTENNA_AVERAGE_RSSI(pAdapter, pAdapter->PortCfg.RxAnt, pRxD->BBR1); + + } + } + else + { + // Increase general counters + pAdapter->Counters.RxErrors++; + } + + // Check for retry bit, if this bit is on, search the cache with SA & sequence + // as index, if matched, discard this frame, otherwise, update cache + // This check only apply to unicast data & management frames + if ((Status == NDIS_STATUS_SUCCESS) && (pRxD->U2M) && (pHeader->Controlhead.Frame.Type != BTYPE_CNTL)) + { + if (pHeader->Controlhead.Frame.Retry) + { + if (RTMPSearchTupleCache(pAdapter, pHeader) == TRUE) + { + // Found retry frame in tuple cache, Discard this frame / fragment + // Increase 802.11 counters + INC_COUNTER(pAdapter->WlanCounters.FrameDuplicateCount); + Status = NDIS_STATUS_FAILURE; + } + else + RTMPUpdateTupleCache(pAdapter, pHeader); + } + else // Update Tuple Cache + RTMPUpdateTupleCache(pAdapter, pHeader); + } + + // + // Do RxD release operation for all failure frames + // + pRxD->CipherAlg = CIPHER_NONE; + if (Status == NDIS_STATUS_SUCCESS && pAdapter->PortCfg.BssType != BSS_MONITOR) + { + // pData : Pointer skip the first 24 bytes, 802.11 HEADER + pData += LENGTH_802_11; + + // + // Start of main loop to parse receiving frames. + // The sequence will be Type first, then subtype... + // + switch (pHeader->Controlhead.Frame.Type) + { + // Frame with data type + case BTYPE_DATA: + // Drop not my BSS frame + if (INFRA_ON(pAdapter)) + { + // Infrastructure mode, check address 2 for BSSID + if (!RTMPEqualMemory(&pHeader->Controlhead.Addr2, &pAdapter->PortCfg.Bssid, 6)) + { + // Receive frame not my BSSID + bDropFrame = TRUE; + break; + } + } + else // Ad-Hoc mode or Not associated + { + // Ad-Hoc mode, check address 3 for BSSID + if (!RTMPEqualMemory(&pHeader->Addr3, &pAdapter->PortCfg.Bssid, 6)) + { + // Receive frame not my BSSID + bDropFrame = TRUE; + break; + } + + // Drop frame from AP while we are in Ad-hoc mode or not associated + if (pHeader->Controlhead.Frame.FrDs) + { + bDropFrame = TRUE; + break; + } + } + + // Drop Null data frame, or CF with NULL data frame + if ((pHeader->Controlhead.Frame.Subtype == SUBTYPE_NULL_FUNC) || + (pHeader->Controlhead.Frame.Subtype == SUBTYPE_CFACK) || + (pHeader->Controlhead.Frame.Subtype == SUBTYPE_CFPOLL) || + (pHeader->Controlhead.Frame.Subtype == SUBTYPE_CFACK_CFPOLL)) + { + bDropFrame = TRUE; + break; + } + + // Good data frame appears, increase the counters + INC_COUNTER(pAdapter->WlanCounters.ReceivedFragmentCount); + pAdapter->RalinkCounters.ReceivedByteCount += pRxD->DataByteCnt; + + // Process Multicast data frame + if (pRxD->Mcast) + { + // Multicast 802.11 Counter + INC_COUNTER(pAdapter->WlanCounters.MulticastReceivedFrameCount); + DBGPRINT(RT_DEBUG_INFO,"Receiving multicast frame\n"); + } + + // Init WPA Key to NULL + pWpaKey = (PWPA_KEY) NULL; + + // Find the WPA key, either Group or Pairwise Key + if ((pAdapter->PortCfg.AuthMode >= Ndis802_11AuthModeWPA) && (pHeader->Controlhead.Frame.Wep)) + { + INT idx; + + // First lookup the DA, if it's a group address, use GROUP key + if (pRxD->Bcast || pRxD->Mcast) + { + + idx = (*(pData + 3) & 0xc0) >> 6; + if ((pAdapter->PortCfg.GroupKey[idx].KeyLen != 0) && + ((INFRA_ON(pAdapter) && (NdisEqualMemory(&pHeader->Controlhead.Addr2, &pAdapter->PortCfg.Bssid, 6))) || + (ADHOC_ON(pAdapter) && (NdisEqualMemory(&pHeader->Addr3, &pAdapter->PortCfg.Bssid, 6))))) + { + pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.GroupKey[idx]; + pWpaKey->Type = GROUP_KEY; + DBGPRINT(RT_DEBUG_INFO, "Rx Use Group Key %d\n", idx); + } + } + // Try to find the Pairwise Key + else + { + for (idx = 0; idx < PAIRWISE_KEY_NO; idx++) + { + if ((NdisEqualMemory(&pHeader->Controlhead.Addr2, pAdapter->PortCfg.PairwiseKey[idx].BssId, 6)) && + (pAdapter->PortCfg.PairwiseKey[idx].KeyLen != 0)) + { + pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.PairwiseKey[idx]; + pWpaKey->Type = PAIRWISE_KEY; + DBGPRINT(RT_DEBUG_INFO, "Rx Use Pairwise Key\n"); + break; + } + } +#if 1 + // Use default Group Key if there is no Pairwise key present + if ((pWpaKey == NULL) && (pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId].KeyLen != 0)) + { + pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId]; + pWpaKey->Type = GROUP_KEY; + DBGPRINT(RT_DEBUG_INFO, "Rx Use Group Key\n"); + } +#endif + } + } + + // Process Broadcast & Multicast data frame + if (pRxD->Bcast || pRxD->Mcast) + { + // Drop Mcast / Bcast frame with fragment bit on + if (pHeader->Controlhead.Frame.MoreFrag) + { + DBGPRINT(RT_DEBUG_ERROR,"Receiving multicast frame with fragment bit on\n"); + Status = NDIS_STATUS_FAILURE; + bDropFrame = TRUE; + break; + } + + // Filter out Bcast frame which AP relayed for us + if (pHeader->Controlhead.Frame.FrDs && RTMPEqualMemory(&pHeader->Addr3, pAdapter->CurrentAddress, 6)) + { + Status = NDIS_STATUS_FAILURE; + bDropFrame = TRUE; + break; + } + + // WEP encrypted frame + if (pHeader->Controlhead.Frame.Wep) + { + // Check our WEP setting, if no WEP turning on, just drop this frame + if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) // WEP + { + KeyIdx = (*(pData + 3) & 0xc0) >> 6; + memcpy((PUCHAR) &pRxD->Iv, pData, 4); //Get WEP IV + memcpy(pRxD->Key, pAdapter->PortCfg.SharedKey[KeyIdx].Key, pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen); + if (pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen == 5) + pRxD->CipherAlg = CIPHER_WEP64; + else + pRxD->CipherAlg = CIPHER_WEP128; + } + else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pWpaKey != NULL)) // TKIP + { + UCHAR Eiv_Tmp[4]; + + memcpy((PUCHAR) &pRxD->Iv, pData, 4); //Get WEP IV + // Swap EIV byte order, due to ASIC's bug. + Eiv_Tmp[0] = *(pData + 7); + Eiv_Tmp[1] = *(pData + 6); + Eiv_Tmp[2] = *(pData + 5); + Eiv_Tmp[3] = *(pData + 4); + memcpy((PUCHAR) &pRxD->Eiv, Eiv_Tmp, 4); //Get WEP EIV + // Copy TA into RxD + memcpy(pRxD->TA, &pHeader->Controlhead.Addr2, 6); + KeyIdx = (*(pData + 3) & 0xc0) >> 6; + memcpy(pRxD->Key, pWpaKey->Key, 16); + pRxD->CipherAlg = CIPHER_TKIP; + } + else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) && (pWpaKey != NULL)) // AES + { + memcpy((PUCHAR) &pRxD->Iv, pData, 4); //Get WEP IV + memcpy((PUCHAR) &pRxD->Eiv, (pData + 4), 4); //Get WEP EIV + // Copy TA into RxD + memcpy(pRxD->TA, &pHeader->Controlhead.Addr2, 6); + KeyIdx = (*(pData + 3) & 0xc0) >> 6; + memcpy(pRxD->Key, pWpaKey->Key, 16); + pRxD->CipherAlg = CIPHER_AES; + } + else + { + // Add error counter + Status = NDIS_STATUS_FAILURE; + bDropFrame = TRUE; + break; + } + } + else // Not encrypted frames + { + pRxD->CipherAlg = CIPHER_NONE; + } + } + + // Begin process unicast to me frame + else if (pRxD->U2M || pAdapter->bAcceptPromiscuous == TRUE) + { + // Send PS-Poll for AP to send next data frame + if ((pHeader->Controlhead.Frame.MoreData) && INFRA_ON(pAdapter) && (pAdapter->PortCfg.Psm == PWR_SAVE)) + { + EnqueuePsPoll(pAdapter); + DBGPRINT(RT_DEBUG_TRACE, "Sending PS-POLL\n"); + } + + // + // Begin frame processing + // + pDestMac = (PUCHAR) &(pHeader->Controlhead.Addr1); // DA is always address 1 + if (INFRA_ON(pAdapter)) // For infrastructure, SA is address 3 + pSrcMac = (PUCHAR) &(pHeader->Addr3); + else // For IBSS mode, SA is address 2 + pSrcMac = (PUCHAR) &(pHeader->Controlhead.Addr2); + + // WEP encrypted frame + if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) // WEP + { + if (pHeader->Controlhead.Frame.Wep) + { + KeyIdx = (*(pData + 3) & 0xc0) >> 6; + + memcpy((PUCHAR) &pRxD->Iv, pData, 4); //Get WEP IV + memcpy(pRxD->Key, pAdapter->PortCfg.SharedKey[KeyIdx].Key, pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen); + if (pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen == 5) + pRxD->CipherAlg = CIPHER_WEP64; + else + pRxD->CipherAlg = CIPHER_WEP128; + } + else if ((pAdapter->PortCfg.PrivacyFilter == Ndis802_11PrivFilter8021xWEP) && + (pHeader->Frag == 0)) + { + // Check 802.1x frame, if not drop it. + if (!RTMPEqualMemory(EAPOL, pData + 6, 2)) + { + // Not 802.1X frames + // Add error counter + Status = NDIS_STATUS_FAILURE; + bDropFrame = TRUE; + break; + } + } + } + else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pWpaKey != NULL)) // TKIP + { + if (pHeader->Controlhead.Frame.Wep) + { + UCHAR Eiv_Tmp[4]; + + memcpy((PUCHAR) &pRxD->Iv, pData, 4); //Get WEP IV + // Swap EIV byte order, due to ASIC's bug. + Eiv_Tmp[0] = *(pData + 7); + Eiv_Tmp[1] = *(pData + 6); + Eiv_Tmp[2] = *(pData + 5); + Eiv_Tmp[3] = *(pData + 4); + memcpy((PUCHAR) &pRxD->Eiv, Eiv_Tmp, 4); //Get WEP EIV + KeyIdx = (*(pData + 3) & 0xc0) >> 6; + // Copy TA into RxD + memcpy(pRxD->TA, &pHeader->Controlhead.Addr2, 6); + memcpy(pRxD->Key, pWpaKey->Key, 16); + pRxD->CipherAlg = CIPHER_TKIP; + } + else if ((pAdapter->PortCfg.PrivacyFilter == Ndis802_11PrivFilter8021xWEP) && + (pHeader->Frag == 0)) + { + // Check 802.1x frame, if not drop it. + if (!RTMPEqualMemory(EAPOL, pData + 6, 2)) + { + // Not 802.1X frames + // Add error counter + Status = NDIS_STATUS_FAILURE; + bDropFrame = TRUE; + break; + } + } + } + else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) && (pWpaKey != NULL)) // AES + { + if (pHeader->Controlhead.Frame.Wep) + { + memcpy((PUCHAR) &pRxD->Iv, pData, 4); //Get WEP IV + memcpy((PUCHAR) &pRxD->Eiv, (pData + 4), 4); //Get WEP EIV + // Copy TA into RxD + memcpy(pRxD->TA, &pHeader->Controlhead.Addr2, 6); + KeyIdx = (*(pData + 3) & 0xc0) >> 6; + memcpy(pRxD->Key, pWpaKey->Key, 16); + pRxD->CipherAlg = CIPHER_AES; + } + else if ((pAdapter->PortCfg.PrivacyFilter == Ndis802_11PrivFilter8021xWEP) && + (pHeader->Frag == 0)) + { + // Check 802.1x frame, if not drop it. + if (!RTMPEqualMemory(EAPOL, pData + 6, 2)) + { + // Not 802.1X frames + // Add error counter + Status = NDIS_STATUS_FAILURE; + bDropFrame = TRUE; + break; + } + } + } + else if (pHeader->Controlhead.Frame.Wep) + { + // Drop WEP frame when PrivacyInvoked is FALSE + Status = NDIS_STATUS_FAILURE; + bDropFrame = TRUE; + break; + } + else // Not encryptrd frames + { + pRxD->CipherAlg = CIPHER_NONE; + } + } + break; + + case BTYPE_MGMT: + // Always None encrypted + pRxD->CipherAlg = CIPHER_NONE; + break; + + case BTYPE_CNTL: + // Ignore ??? + bDropFrame = TRUE; + break; + + default : + bDropFrame = TRUE; + break; + } + } + else + bDropFrame = TRUE; + + // Packet will still do NULL cipher operation and drop afterward + if (bDropFrame == TRUE) + { + pRxD->Drop = 1; + pRxD->CipherAlg = CIPHER_NONE; + } + else + { + pRxD->Drop = 0; + pRxD->IvOffset = LENGTH_802_11; + } + + pRxD->CipherOwner = DESC_OWN_NIC; + +#ifdef BIG_ENDIAN + RTMPFrameEndianChange(pAdapter, (PUCHAR)pHeader, DIR_WRITE, TRUE); + RTMPDescriptorEndianChange((PUCHAR)pRxD, TYPE_RXD); + *pDestRxD = RxD; +#endif + + pAdapter->CurRxIndex++; + if (pAdapter->CurRxIndex >= RX_RING_SIZE) + { + pAdapter->CurRxIndex = 0; + } + Count++; + + pAdapter->RalinkCounters.RxCount ++; + + } while (Count < MAX_RX_PROCESS); + + // Kick Decrypt Control Register, based on ASIC's implementation + // We have to kick decrypt & encrypt every frame. + RTMP_IO_WRITE32(pAdapter, SECCSR0, 0x1); + + // Make sure to release Rx ring resource + spin_unlock_irqrestore(&pAdapter->RxRingLock, irqflag); +} + +/* + ======================================================================== + + Routine Description: + Process TxRing TxDone interrupt, running in DPC level + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPHandleTxRingTxDoneInterrupt( + IN PRTMP_ADAPTER pAdapter) +{ + PTXD_STRUC pTxD; +#ifdef BIG_ENDIAN + PTXD_STRUC pDestTxD; + TXD_STRUC TxD; +#endif + UCHAR Count; + unsigned long irqflag; + + // Make sure Tx ring resource won't be used by other threads + spin_lock_irqsave(&pAdapter->TxRingLock, irqflag); + + Count = 0; + do + { +#ifndef BIG_ENDIAN + pTxD = (PTXD_STRUC) (pAdapter->TxRing[pAdapter->NextTxDoneIndex].va_addr); +#else + pDestTxD = (PTXD_STRUC) (pAdapter->TxRing[pAdapter->NextTxDoneIndex].va_addr); + TxD = *pDestTxD; + pTxD = &TxD; + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); +#endif + + if ((pTxD->Owner == DESC_OWN_NIC) || (pTxD->CipherOwn == DESC_OWN_NIC) || (pTxD->Valid == FALSE)) + { + break; + } + + RTMPHardTransmitDone( + pAdapter, + pTxD, + pAdapter->TxRing[pAdapter->NextTxDoneIndex].FrameType); + + // It might happend with no Ndis packet to indicate back to upper layer + // Clear for NdisSendComplete request + pTxD->Valid = FALSE; + + // Increase Total transmit byte counter after real data sent out + pAdapter->RalinkCounters.TransmittedByteCount += pTxD->DataByteCnt; + +#ifdef BIG_ENDIAN + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pDestTxD = TxD; +#endif + + pAdapter->NextTxDoneIndex++; + if (pAdapter->NextTxDoneIndex >= TX_RING_SIZE) + { + pAdapter->NextTxDoneIndex = 0; + } + } while (++Count < MAX_TX_PROCESS); + +#ifdef RALINK_ATE + if((pAdapter->ate.Mode == ATE_TXCONT) || (pAdapter->ate.Mode == ATE_TXCARR) || ((pAdapter->ate.Mode == ATE_TXFRAME))) + { + if (pAdapter->ate.TxDoneCount < pAdapter->ate.TxCount) + { + pAdapter->ate.TxDoneCount++; + DBGPRINT(RT_DEBUG_INFO, "pAdapter->ate.TxDoneCount = %d, Preamble=%d\n", pAdapter->ate.TxDoneCount, pAdapter->PortCfg.TxPreambleInUsed); + pTxD = (PTXD_STRUC)pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; + + RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, + SHORT_RETRY, IFS_BACKOFF, pAdapter->ate.TxRate, 4, + pAdapter->ate.TxLength, Rt802_11PreambleLong, 0); + + pAdapter->CurEncryptIndex++; + if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) + { + pAdapter->CurEncryptIndex = 0; + } + + RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); + } + else if (pAdapter->ate.Mode == ATE_TXFRAME) + { + DBGPRINT(RT_DEBUG_TRACE, "ATE TXFRAME completed!\n"); + } + } +#endif //#ifdef RALINK_ATE + + // Make sure to release Tx ring resource + spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); + + if(pAdapter->bNetDeviceStopQueue) + { + DBGPRINT(RT_DEBUG_TRACE, "NetDevice start queue!!!\n\n"); + pAdapter->bNetDeviceStopQueue = FALSE; + netif_start_queue(pAdapter->net_dev); + } + + // Some Tx ring resource freed, check for pending send frame for hard transmit + if ((!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) && + (!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF)) && + (!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RESET_IN_PROGRESS))) + { + // RTMPDeQueuePacket(pAdapter, &pAdapter->TxSwQueue0); + // Call dequeue without selected queue, let the subroutine select the right priority + // Tx software queue + RTMPDeQueuePacket(pAdapter); + } +} + +/* + ======================================================================== + + Routine Description: + Process Priority ring TxDone interrupt, running in DPC level + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPHandlePrioRingTxDoneInterrupt( + IN PRTMP_ADAPTER pAdapter) +{ + PTXD_STRUC pTxD; +#ifdef BIG_ENDIAN + PTXD_STRUC pDestTxD; + TXD_STRUC TxD; +#endif + UCHAR Count; + PMGMT_STRUC pMgmt; + unsigned long irqflag; + + // Make sure Prio ring resource won't be used by other threads + spin_lock_irqsave(&pAdapter->PrioRingLock, irqflag); + + Count = 0; + do + { +#ifndef BIG_ENDIAN + pTxD = (PTXD_STRUC) (pAdapter->PrioRing[pAdapter->NextPrioDoneIndex].va_addr); +#else + pDestTxD = (PTXD_STRUC) (pAdapter->PrioRing[pAdapter->NextPrioDoneIndex].va_addr); + TxD = *pDestTxD; + pTxD = &TxD; + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); +#endif + + // Check for the descriptor ownership + if ((pTxD->Owner == DESC_OWN_NIC) || (pTxD->Valid == FALSE)) + { +#ifdef BIG_ENDIAN + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pDestTxD = TxD; +#endif + break; + } + + // No need to put in reply for MLME + RTMPHardTransmitDone( + pAdapter, + pTxD, + pAdapter->PrioRing[pAdapter->NextPrioDoneIndex].FrameType); + + // It might happend with no Ndis packet to indicate back to upper layer + pTxD->Valid = FALSE; + + // Increase Total transmit byte counter after real data sent out + pAdapter->RalinkCounters.TransmittedByteCount += pTxD->DataByteCnt; + +#ifdef BIG_ENDIAN + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pDestTxD = TxD; +#endif + + pAdapter->NextPrioDoneIndex++; + if (pAdapter->NextPrioDoneIndex >= PRIO_RING_SIZE) + { + pAdapter->NextPrioDoneIndex = 0; + } + } while (++Count < MAX_TX_PROCESS); + + // Make sure to release Prio ring resource + spin_unlock_irqrestore(&pAdapter->PrioRingLock, irqflag); + + if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF)) + return; + + + spin_lock_irqsave(&pAdapter->PrioRingLock, irqflag); + if (pAdapter->PushMgmtIndex != pAdapter->PopMgmtIndex) + { + if (RTMPFreeDescriptorRequest(pAdapter, PRIO_RING, 1) == NDIS_STATUS_SUCCESS) + { + pMgmt = (PMGMT_STRUC) &pAdapter->MgmtRing[pAdapter->PopMgmtIndex]; + if (pMgmt->Valid == TRUE) + { + MlmeHardTransmit(pAdapter, pMgmt->pBuffer, pMgmt->Length); + MlmeFreeMemory(pAdapter, pMgmt->pBuffer); + pMgmt->Valid = FALSE; + pAdapter->PopMgmtIndex++; + pAdapter->MgmtQueueSize--; + if (pAdapter->PopMgmtIndex >= MGMT_RING_SIZE) + { + pAdapter->PopMgmtIndex = 0; + } + } + } + } + spin_unlock_irqrestore(&pAdapter->PrioRingLock, irqflag); +} + +/* + ======================================================================== + + Routine Description: + Process Atim ring TxDone interrupt, running in DPC level + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPHandleAtimRingTxDoneInterrupt( + IN PRTMP_ADAPTER pAdapter) +{ + // PTXD_STRUC pTxD; + // UCHAR Count; + + // Make sure Atim ring resource won't be used by other threads + //spin_lock_irqsave(&pAdapter->AtimRingLock); + + // Did not support ATIM, remove everything. + + // Make sure to release Atim ring resource + //spin_unlock_irqrestore(&pAdapter->AtimRingLock); +} + +/* + ======================================================================== + + Routine Description: + Process Rx ring DecryptionDone interrupt, running in DPC level + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPHandleDecryptionDoneInterrupt( + IN PRTMP_ADAPTER pAdapter) +{ + PRXD_STRUC pRxD; +#ifdef BIG_ENDIAN + PRXD_STRUC pDestRxD; + RXD_STRUC RxD; +#endif + PHEADER_802_11 pHeader; + PUCHAR pData; + PVOID pManage; + PUCHAR pDestMac, pSrcMac; + UCHAR Header802_3[14]; + UCHAR LLC_Len[2]; + USHORT PacketSize; + ULONG High32TSF, Low32TSF; + UCHAR Count; + PWPA_KEY pWpaKey; + NDIS_STATUS Status; + ULONG RegValue; + ULONGLONG HwDecryptIndex; + ULONG i; + struct sk_buff *skb; + unsigned long irqflag; + + // Make sure Rx ring resource won't be used by other threads + spin_lock_irqsave(&pAdapter->RxRingLock, irqflag); + + RTMP_IO_READ32(pAdapter, SECCSR0, &RegValue); + HwDecryptIndex = RegValue - pAdapter->RxRing[0].pa_addr; + do_div(HwDecryptIndex, RING_DESCRIPTOR_SIZE); + + Count = 0; + //do + while (pAdapter->CurDecryptIndex != HwDecryptIndex) + { + // Point to Rx indexed rx ring descriptor +#ifndef BIG_ENDIAN + pRxD = (PRXD_STRUC) pAdapter->RxRing[pAdapter->CurDecryptIndex].va_addr; +#else + pDestRxD = (PRXD_STRUC) pAdapter->RxRing[pAdapter->CurDecryptIndex].va_addr; + RxD = *pDestRxD; + pRxD = &RxD; + RTMPDescriptorEndianChange((PUCHAR)pRxD, TYPE_RXD); +#endif + + // In case of false alarm or processed at last instance + if ((pRxD->Owner != DESC_OWN_HOST) || (pRxD->CipherOwner != DESC_OWN_HOST)) + break; + + // Point to Rx ring buffer where stores the real data frame + pData = (PUCHAR) (pAdapter->RxRing[pAdapter->CurDecryptIndex].va_data_addr); + // Cast to 802.11 header for flags checking + pHeader = (PHEADER_802_11) pData; + +#ifdef BIG_ENDIAN + RTMPFrameEndianChange(pAdapter, (PUCHAR)pHeader, DIR_READ, FALSE); +#endif + // Driver will check the decrypt algorithm and decide whether this ICV is true or not + if ((pRxD->IcvError == 1) && (pRxD->CipherAlg == CIPHER_NONE)) + pRxD->IcvError = 0; + + // Since we already process header at RxDone interrupt, there is no need to proces + // header sanity again, the only thing we have to check is icv_err bit + if (pRxD->IcvError == 1) + { + DBGPRINT(RT_DEBUG_TRACE,"Rx DecryptDone - ICV error (len %d)\n", pRxD->DataByteCnt); + pRxD->Drop =1; // Drop frame with icv error + } + // Saved data pointer for management frame which will pass to MLME block + pManage = (PVOID) pData; + + if (pAdapter->PortCfg.BssType == BSS_MONITOR) + { + struct sk_buff *skb; + wlan_ng_prism2_header *ph; + + if ((skb = __dev_alloc_skb(2048, GFP_DMA|GFP_ATOMIC)) != NULL) + { + if (pAdapter->PortCfg.MallowRFMONTx == TRUE) + goto rfmontx_80211_receive; + + // setup the wlan-ng prismheader + + if (skb_headroom(skb) < sizeof(wlan_ng_prism2_header)) + pskb_expand_head(skb, sizeof(wlan_ng_prism2_header), 0, GFP_ATOMIC); + + ph = (wlan_ng_prism2_header *) + skb_push(skb, sizeof(wlan_ng_prism2_header)); + memset(ph, 0, sizeof(wlan_ng_prism2_header)); + + ph->msgcode = DIDmsg_lnxind_wlansniffrm; + ph->msglen = sizeof(wlan_ng_prism2_header); + strcpy(ph->devname, pAdapter->net_dev->name); + + ph->hosttime.did = DIDmsg_lnxind_wlansniffrm_hosttime; + ph->mactime.did = DIDmsg_lnxind_wlansniffrm_mactime; + ph->channel.did = DIDmsg_lnxind_wlansniffrm_channel; + ph->rssi.did = DIDmsg_lnxind_wlansniffrm_rssi; + ph->signal.did = DIDmsg_lnxind_wlansniffrm_signal; + ph->noise.did = DIDmsg_lnxind_wlansniffrm_noise; + ph->rate.did = DIDmsg_lnxind_wlansniffrm_rate; + ph->istx.did = DIDmsg_lnxind_wlansniffrm_istx; + ph->frmlen.did = DIDmsg_lnxind_wlansniffrm_frmlen; + + ph->hosttime.len = 4; + ph->mactime.len = 4; + ph->channel.len = 4; + ph->rssi.len = 4; + ph->signal.len = 4; + ph->noise.len = 4; + ph->rate.len = 4; + ph->istx.len = 4; + ph->frmlen.len = 4; + + ph->hosttime.data = jiffies; + ph->signal.data = pRxD->BBR1; + ph->channel.data = pAdapter->PortCfg.IbssConfig.Channel; + ph->noise.data = pAdapter->PortCfg.LastR17Value; + ph->rssi.data = ph->signal.data - ph->noise.data; + ph->frmlen.data = pRxD->DataByteCnt; + + if (pRxD->Ofdm == 1) + { + for (i = 4; i < 12; i++) + if (pRxD->BBR0 == PlcpSignal[i]) + ph->rate.data = _11G_RATES[i] * 2; + } + else + ph->rate.data = pRxD->BBR0 / 5; + + // end prismheader setup + + rfmontx_80211_receive: + + skb->dev = pAdapter->net_dev; + memcpy(skb_put(skb, pRxD->DataByteCnt), pData, pRxD->DataByteCnt); + skb->mac.raw = skb->data; + skb->pkt_type = PACKET_OTHERHOST; + skb->protocol = htons(ETH_P_802_2); + skb->ip_summed = CHECKSUM_NONE; + netif_rx(skb); + } + pRxD->Drop = 1; + } + + // pData : Pointer skip the first 24 bytes, 802.11 HEADER + pData += LENGTH_802_11; + + // The total available payload should exclude 24-byte 802.11 Header + // If Security is enabled, IV, EIV, ICV size is excluded by ASIC + PacketSize = (USHORT) pRxD->DataByteCnt - LENGTH_802_11; + + // Find the WPA key, either Group or Pairwise Key + // Although the data has been decrypted by ASIC, + // driver has to calculate the RxMIC which required the key. + // The failed case should not happen. If it did, drop it. + // Init WPA Key + pWpaKey = (PWPA_KEY) NULL; + if ((pAdapter->PortCfg.AuthMode >= Ndis802_11AuthModeWPA) && (pHeader->Controlhead.Frame.Wep)) + { + INT idx; + + // First lookup the DA, if it's a group address, use GROUP key + if (pRxD->Bcast || pRxD->Mcast) + { + // Get the IV index from RxD descriptor +#ifdef BIG_ENDIAN + idx = (pRxD->Iv & 0x000000c0) >> 6; +#else + idx = (pRxD->Iv & 0xc0000000) >> 30; +#endif + if ((pAdapter->PortCfg.GroupKey[idx].KeyLen != 0) && + ((INFRA_ON(pAdapter) && (NdisEqualMemory(&pHeader->Controlhead.Addr2, &pAdapter->PortCfg.Bssid, 6))) || + (ADHOC_ON(pAdapter) && (NdisEqualMemory(&pHeader->Addr3, &pAdapter->PortCfg.Bssid, 6))))) + { + pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.GroupKey[idx]; + pWpaKey->Type = GROUP_KEY; + DBGPRINT(RT_DEBUG_INFO, "Decrypt Done: Rx Use Group Key %d\n", idx); + } + } + // Try to find the Pairwise Key + else + { + for (idx = 0; idx < PAIRWISE_KEY_NO; idx++) + { + if ((NdisEqualMemory(&pHeader->Controlhead.Addr2, pAdapter->PortCfg.PairwiseKey[idx].BssId, 6)) && + (pAdapter->PortCfg.PairwiseKey[idx].KeyLen != 0)) + { + pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.PairwiseKey[idx]; + pWpaKey->Type = PAIRWISE_KEY; + DBGPRINT(RT_DEBUG_INFO, "Rx Use Pairwise Key\n"); + break; + } + } +#if 1 + // Use default Group Key if there is no Pairwise key present + if ((pWpaKey == NULL) && (pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId].KeyLen != 0)) + { + pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId]; + pWpaKey->Type = GROUP_KEY; + DBGPRINT(RT_DEBUG_INFO, "Rx Use Group Key\n"); + } +#endif + } + + // If there is no WPA key matched, this frame should be dropped + if (pWpaKey == NULL) + pRxD->Drop = 1; + } + + // + // Start of main loop to parse receiving frames. + // The sequence will be Type first, then subtype... + // + if (pRxD->Drop == 0) + { + switch (pHeader->Controlhead.Frame.Type) + { + // Frame with data type + case BTYPE_DATA: + // DA is always address 1 + // For infrastructure, SA is address 3. For IBSS mode, SA is address 2 + pDestMac = (PUCHAR) &(pHeader->Controlhead.Addr1); + if (INFRA_ON(pAdapter)) + pSrcMac = (PUCHAR) &(pHeader->Addr3); + else + pSrcMac = (PUCHAR) &(pHeader->Controlhead.Addr2); + + // Process Broadcast & Multicast data frame + if (pRxD->Bcast || pRxD->Mcast) + { + // For TKIP frame, calculate the MIC value + if (pRxD->CipherAlg == CIPHER_TKIP) + { + INT i = 0; + + if (pWpaKey == NULL) + { + DBGPRINT(RT_DEBUG_ERROR,"No matched TKIP in decryption done calculate MIC routine!!!\n"); + Status = NDIS_STATUS_FAILURE; + break; + } + + // Minus MIC length + PacketSize -= 8; + if (RTMPTkipCompareMICValue( + pAdapter, + pData, + pDestMac, + pSrcMac, + pWpaKey->RxMic, + PacketSize) == FALSE) + { + DBGPRINT(RT_DEBUG_ERROR,"Rx MIC Value error\n"); + RTMPReportMicError(pAdapter, pWpaKey); + Status = NDIS_STATUS_FAILURE; + break; + } + + // Second, increase RxTsc value for next transmission + while (++pWpaKey->RxTsc[i] == 0x0) + { + i++; + if (i == 6) + break; + } + // Rx TSC has done one full cycle, since re-key is done by transmitter + // We did not do anything for Rx path + } + + // build 802.3 header and decide if remove the 8-byte LLC/SNAP encapsulation + CONVERT_TO_802_3(Header802_3, pDestMac, pSrcMac, pData, PacketSize); + + pAdapter->PortCfg.LedCntl.fRxActivity = TRUE; // for RX ACTIVITY LED + + // For miniportTransferData + pAdapter->pRxData = pData; + + // Acknolwdge upper layer the received frame +#ifdef RTMP_EMBEDDED + if ((skb = __dev_alloc_skb(PacketSize + LENGTH_802_3 + 2, GFP_DMA|GFP_ATOMIC)) != NULL) +#else + if ((skb = dev_alloc_skb(PacketSize + LENGTH_802_3 + 2)) != NULL) +#endif + { + skb->dev = pAdapter->net_dev; + skb_reserve(skb, 2); // 16 byte align the IP header + memcpy(skb_put(skb, LENGTH_802_3), Header802_3, LENGTH_802_3); + memcpy(skb_put(skb, PacketSize), pData, PacketSize); + skb->protocol = eth_type_trans(skb, pAdapter->net_dev); + netif_rx(skb); + pAdapter->net_dev->last_rx = jiffies; + pAdapter->stats.rx_packets++; + } + + DBGPRINT(RT_DEBUG_INFO, "!!! Broadcast Ethenet rx Indicated !!!\n"); + } + + // Begin process unicast to me frame + else if (pRxD->U2M || pAdapter->bAcceptPromiscuous == TRUE) + { + // Update Rx data rate first. + if (pRxD->Ofdm == 1) + { + for (i = 4; i < 12; i++) + { + if (pRxD->BBR0 == PlcpSignal[i]) + break; + } + if (i < 12) + pAdapter->LastRxRate = i; + } + else // receive CCK encoding + { + if (pRxD->BBR0 == 10) + pAdapter->LastRxRate = 0; + else if (pRxD->BBR0 == 20) + pAdapter->LastRxRate = 1; + else if (pRxD->BBR0 == 55) + pAdapter->LastRxRate = 2; + else if (pRxD->BBR0 == 110) + pAdapter->LastRxRate = 3; + } + + if (pHeader->Frag == 0) // First or Only fragment + { + // For TKIP frame, calculate the MIC value + if ((pHeader->Controlhead.Frame.MoreFrag == FALSE) && + (pRxD->CipherAlg == CIPHER_TKIP) && + (pHeader->Controlhead.Frame.Wep)) + { + if (pWpaKey == NULL) + { + DBGPRINT(RT_DEBUG_ERROR,"No matched TKIP in decryption done calculate MIC routine!!!\n"); + Status = NDIS_STATUS_FAILURE; + break; + } + // Minus MIC length + PacketSize -= 8; + if (RTMPTkipCompareMICValue( + pAdapter, + pData, + pDestMac, + pSrcMac, + pWpaKey->RxMic, + PacketSize) == FALSE) + { + DBGPRINT(RT_DEBUG_ERROR,"Rx MIC Value error\n"); + RTMPReportMicError(pAdapter, pWpaKey); + Status = NDIS_STATUS_FAILURE; + break; + } + } + + pAdapter->FragFrame.Flags &= 0xFFFFFFFE; + + // Check for encapsulation other than RFC1042 & Bridge tunnel + if ((!RTMPEqualMemory(SNAP_802_1H, pData, 6)) && + (!RTMPEqualMemory(SNAP_BRIDGE_TUNNEL, pData, 6))) + { + LLC_Len[0] = PacketSize / 256; + LLC_Len[1] = PacketSize % 256; + MAKE_802_3_HEADER(Header802_3, pDestMac, pSrcMac, ((PUCHAR) LLC_Len)); + } + else + { + char *pProto = pData + 6; + + // Remove 802.11 H header & reconstruct 802.3 header + // pData += (LENGTH_802_1_H - LENGTH_802_3_TYPE); + // Check for EAPOL frame when driver supplicant enabled + // TODO: It is not strickly correct. There is no fragment handling. It might damage driver + // TODO: But for WPAPSK, it's not likely fragment on EAPOL frame will happen + if (RTMPEqualMemory(EAPOL, pProto, 2) && ((pAdapter->PortCfg.WpaState != SS_NOTUSE))) + { + RTMP_IO_READ32(pAdapter, CSR17, &High32TSF); // TSF value + RTMP_IO_READ32(pAdapter, CSR16, &Low32TSF); // TSF vlaue + PacketSize += LENGTH_802_11; + // Enqueue this frame to MLME engine + MlmeEnqueueForRecv( + pAdapter, + &pAdapter->Mlme.Queue, + High32TSF, + Low32TSF, + (UCHAR)pRxD->BBR1, (UCHAR)pAdapter->PortCfg.LastR17Value, + PacketSize, + pManage); + break; + } + + if ((RTMPEqualMemory(IPX, pProto, 2) || RTMPEqualMemory(APPLE_TALK, pProto, 2)) && + RTMPEqualMemory(SNAP_802_1H, pData, 6)) + { + // preserved the LLC/SNAP filed + LLC_Len[0] = PacketSize / 256; + LLC_Len[1] = PacketSize % 256; + MAKE_802_3_HEADER(Header802_3, pDestMac, pSrcMac, ((PUCHAR) LLC_Len)); + } + else + { + // remove the LLC/SNAP field + MAKE_802_3_HEADER(Header802_3, pDestMac, pSrcMac, pProto); + memcpy(pAdapter->FragFrame.Header_LLC, pData, 8); + PacketSize -= LENGTH_802_1_H; + pData += LENGTH_802_1_H; + pAdapter->FragFrame.Flags |= 0x01; + } + } + + // One & The only fragment + if (pHeader->Controlhead.Frame.MoreFrag == FALSE) + { + // For miniportTransferData + pAdapter->pRxData = pData; + + pAdapter->PortCfg.LedCntl.fRxActivity = TRUE; // for RX ACTIVITY LED + + // Acknowledge upper layer the received frame +#ifdef RTMP_EMBEDDED + if ((skb = __dev_alloc_skb(PacketSize + LENGTH_802_3 + 2, GFP_DMA|GFP_ATOMIC)) != NULL) +#else + if ((skb = dev_alloc_skb(PacketSize + LENGTH_802_3 + 2)) != NULL) +#endif + { + skb->dev = pAdapter->net_dev; + skb_reserve(skb, 2); // 16 byte align the IP header + memcpy(skb_put(skb, LENGTH_802_3), Header802_3, LENGTH_802_3); + memcpy(skb_put(skb, PacketSize), pData, PacketSize); + skb->protocol = eth_type_trans(skb, pAdapter->net_dev); + netif_rx(skb); + pAdapter->net_dev->last_rx = jiffies; + pAdapter->stats.rx_packets++; + } + + // ZdisZeroMemory(Header802_3, LENGTH_802_3); + DBGPRINT(RT_DEBUG_INFO, "!!! Frame without Fragment Indicated !!!\n"); + + // Increase general counters + pAdapter->Counters.GoodReceives++; + + } + // First fragment of fragmented frames + else + { + memcpy(&pAdapter->FragFrame.Buffer[LENGTH_802_3], pData, PacketSize); + memcpy(pAdapter->FragFrame.Header802_3, Header802_3, LENGTH_802_3); + //NdisZeroMemory(Header802_3, LENGTH_802_3); + pAdapter->FragFrame.RxSize = PacketSize; + pAdapter->FragFrame.Sequence = pHeader->Sequence; + pAdapter->FragFrame.LastFrag = pHeader->Frag; // Should be 0 + } + } + // Middle & End of fragment burst fragments + else + { + // No LLC-SNAP header in except the first fragment frame + + if ((pHeader->Sequence != pAdapter->FragFrame.Sequence) || + (pHeader->Frag != (pAdapter->FragFrame.LastFrag + 1))) + { + // Fragment is not the same sequence or out of fragment number order + // Clear Fragment frame contents + memset(&pAdapter->FragFrame, 0, sizeof(FRAGMENT_FRAME)); + Status = NDIS_STATUS_FAILURE; + break; + } + else if ((pAdapter->FragFrame.RxSize + PacketSize) > MAX_FRAME_SIZE) + { + // Fragment frame is too large, it exeeds the maximum frame size. + // We have to drop it. + // Clear Fragment frame contents + memset(&pAdapter->FragFrame, 0, sizeof(FRAGMENT_FRAME)); + Status = NDIS_STATUS_FAILURE; + break; + } + + // concatenate this fragment into the re-assembly buffer + memcpy(&pAdapter->FragFrame.Buffer[LENGTH_802_3 + pAdapter->FragFrame.RxSize], pData, PacketSize); + pAdapter->FragFrame.RxSize += PacketSize; + pAdapter->FragFrame.LastFrag = pHeader->Frag; // Update fragment number + + // Last fragment + if (pHeader->Controlhead.Frame.MoreFrag == FALSE) + { + // For TKIP frame, calculate the MIC value + if ((pRxD->CipherAlg == CIPHER_TKIP) && (pHeader->Controlhead.Frame.Wep)) + { + if (pWpaKey == NULL) + { + DBGPRINT(RT_DEBUG_ERROR,"No matched TKIP in decryption done calculate MIC routine!!!\n"); + Status = NDIS_STATUS_FAILURE; + break; + } + // Minus MIC length + pAdapter->FragFrame.RxSize -= 8; + + if (pAdapter->FragFrame.Flags & 0x00000001) + { + // originally there's an LLC/SNAP field in the first fragment + // but been removed in re-assembly buffer. here we have to include + // this LLC/SNAP field upon calculating TKIP MIC + // Copy LLC data to the position in front of real data for MIC calculation + memcpy(&pAdapter->FragFrame.Buffer[LENGTH_802_3 - LENGTH_802_1_H], + pAdapter->FragFrame.Header_LLC, + LENGTH_802_1_H); + pData = (PUCHAR) &pAdapter->FragFrame.Buffer[LENGTH_802_3 - LENGTH_802_1_H]; + PacketSize = (USHORT)pAdapter->FragFrame.RxSize + LENGTH_802_1_H; + //cketSize = (USHORT)pAdapter->FragFrame.RxSize + 8; + } + else + { + pData = (PUCHAR) &pAdapter->FragFrame.Buffer[LENGTH_802_3]; + PacketSize = (USHORT)pAdapter->FragFrame.RxSize; + } + + if (RTMPTkipCompareMICValue( + pAdapter, + pData, + pDestMac, + pSrcMac, + pWpaKey->RxMic, + PacketSize) == FALSE) + { + DBGPRINT(RT_DEBUG_ERROR,"Rx MIC Value error 2\n"); + RTMPReportMicError(pAdapter, pWpaKey); + Status = NDIS_STATUS_FAILURE; + break; + } + + // TODO: + // Getting RxTSC from Rx descriptor + } + + // for RX ACTIVITY LED + pAdapter->PortCfg.LedCntl.fRxActivity = TRUE; + + // For miniportTransferData + pAdapter->pRxData = &pAdapter->FragFrame.Buffer[LENGTH_802_3]; + + memcpy(pAdapter->FragFrame.Buffer, pAdapter->FragFrame.Header802_3, LENGTH_802_3); + // Acknowledge upper layer the received frame +#ifdef RTMP_EMBEDDED + if ((skb = __dev_alloc_skb(pAdapter->FragFrame.RxSize + LENGTH_802_3 + 2, GFP_DMA|GFP_ATOMIC)) != NULL) +#else + if ((skb = dev_alloc_skb(pAdapter->FragFrame.RxSize + LENGTH_802_3 + 2)) != NULL) +#endif + { + skb->dev = pAdapter->net_dev; + skb_reserve(skb, 2); /* 16 byte align the IP header */ + memcpy(skb_put(skb, LENGTH_802_3), (PVOID) &pAdapter->FragFrame.Buffer[0], LENGTH_802_3); + memcpy(skb_put(skb, pAdapter->FragFrame.RxSize), (PVOID) &pAdapter->FragFrame.Buffer[LENGTH_802_3], pAdapter->FragFrame.RxSize); + skb->protocol = eth_type_trans(skb, pAdapter->net_dev); + netif_rx(skb); + pAdapter->net_dev->last_rx = jiffies; + pAdapter->stats.rx_packets++; + } + + // Increase general counters + pAdapter->Counters.GoodReceives++; + + // Clear Fragment frame contents + memset(&pAdapter->FragFrame, 0, sizeof(FRAGMENT_FRAME)); + DBGPRINT(RT_DEBUG_INFO, "!!! Frame with Fragment Indicated !!!\n"); + } + } + } + break; + + case BTYPE_MGMT: + // Read required regsiter for MLME engine + RTMP_IO_READ32(pAdapter, CSR17, &High32TSF); // TSF value + RTMP_IO_READ32(pAdapter, CSR16, &Low32TSF); // TSF vlaue + + // Enqueue this frame to MLME engine + MlmeEnqueueForRecv( + pAdapter, + &pAdapter->Mlme.Queue, + High32TSF, + Low32TSF, + (UCHAR)pRxD->BBR1, + (UCHAR)pAdapter->PortCfg.LastR17Value, + pRxD->DataByteCnt, + pManage); + break; + + case BTYPE_CNTL: + // Ignore ??? + break; + + default : + break; + } + } + + pAdapter->CurDecryptIndex++; + if (pAdapter->CurDecryptIndex >= RX_RING_SIZE) + { + pAdapter->CurDecryptIndex = 0; + } + Count++; + + pAdapter->RalinkCounters.DecryptCount ++; + + // Clear Cipherowner bit & Rx Owner bit for all drop & non-drop frames + pRxD->CipherOwner = DESC_OWN_HOST; + pRxD->Owner = DESC_OWN_NIC; +#ifdef BIG_ENDIAN + RTMPDescriptorEndianChange((PUCHAR)pRxD, TYPE_RXD); + *pDestRxD = RxD; +#endif + } + //} while (Count < RX_RING_SIZE); + //} while (pAdapter->CurDecryptIndex != HwDecryptIndex); + + // Make sure to release Rx ring resource + spin_unlock_irqrestore(&pAdapter->RxRingLock, irqflag); +} + +/* + ======================================================================== + + Routine Description: + Process Tx ring EncryptionDone interrupt, running in DPC level + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPHandleEncryptionDoneInterrupt( + IN PRTMP_ADAPTER pAdapter) +{ + PTXD_STRUC pTxD; +#ifdef BIG_ENDIAN + PTXD_STRUC pDestTxD; + TXD_STRUC TxD; +#endif + UCHAR Count; + ULONG RegValue; + ULONGLONG HwEncryptIndex; + unsigned long irqflag; + + // Make sure Prio ring resource won't be used by other threads + spin_lock_irqsave(&pAdapter->TxRingLock, irqflag); + + RTMP_IO_READ32(pAdapter, SECCSR1, &RegValue); + HwEncryptIndex = RegValue - pAdapter->TxRing[0].pa_addr; + do_div(HwEncryptIndex, RING_DESCRIPTOR_SIZE); + + Count = 0; + //do + while (pAdapter->NextEncryptDoneIndex != HwEncryptIndex) + { +#ifndef BIG_ENDIAN + pTxD = (PTXD_STRUC) (pAdapter->TxRing[pAdapter->NextEncryptDoneIndex].va_addr); +#else + pDestTxD = (PTXD_STRUC) (pAdapter->TxRing[pAdapter->NextEncryptDoneIndex].va_addr); + TxD = *pDestTxD; + pTxD = &TxD; + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); +#endif + + // Check for the descriptor cipher ownership + if ((pTxD->CipherOwn == DESC_OWN_NIC) || (pTxD->Owner == DESC_OWN_NIC)) + { + pAdapter->RalinkCounters.TxRingErrCount++; +#ifdef BIG_ENDIAN + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pDestTxD = TxD; +#endif + break; + } + + // Alter EIV due to ASIC's bug + if (pTxD->CipherAlg == CIPHER_TKIP) + { + UCHAR Eiv_Tmp[4]; + PUCHAR pTmp; + + memcpy(Eiv_Tmp, &pTxD->Eiv, 4); + pTmp = (PUCHAR) &pTxD->Eiv; + *pTmp = Eiv_Tmp[3]; + *(pTmp + 1) = Eiv_Tmp[2]; + *(pTmp + 2) = Eiv_Tmp[1]; + *(pTmp + 3) = Eiv_Tmp[0]; + } + // Sanity Check, CurTxIndex should equal to NextEncryptDoneIndex + // ASSERT(pAdapter->CurTxIndex == pAdapter->NextEncryptDoneIndex); + + pTxD->Valid = TRUE; + pTxD->Owner = DESC_OWN_NIC; + +#ifdef BIG_ENDIAN + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pDestTxD = TxD; +#endif + + pAdapter->NextEncryptDoneIndex++; + if (pAdapter->NextEncryptDoneIndex >= TX_RING_SIZE) + { + pAdapter->NextEncryptDoneIndex = 0; + } + pAdapter->CurTxIndex = pAdapter->NextEncryptDoneIndex; + pAdapter->RalinkCounters.KickTxCount++; + + if (pAdapter->CurTxIndex == pAdapter->CurEncryptIndex) + break; + } + //} while (++Count < MAX_TX_PROCESS); + //} while (pAdapter->NextEncryptDoneIndex != HwEncryptIndex); + + // Kick Tx Control Register at the end of all ring buffer preparation + RTMP_IO_WRITE32(pAdapter, TXCSR0, 0x1); + + // Make sure to release Tx ring resource + spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); +} + +/* + ======================================================================== + + Routine Description: + Arguments: + Adapter Pointer to our adapter + ======================================================================== +*/ +void RTMPHandleTbcnInterrupt(IN PRTMP_ADAPTER pAdapter) +{ + if (ADHOC_ON(pAdapter)) + { + MACHDR *pBcnHdr = (MACHDR *)pAdapter->BeaconRing.va_data_addr; + + // update BEACON frame's sequence number + pAdapter->Sequence = ((pAdapter->Sequence) + 1) & (MAX_SEQ_NUMBER); + pBcnHdr->Seq = pAdapter->Sequence; + +#ifdef BIG_ENDIAN + *(USHORT *)((UCHAR *)pBcnHdr + 22) = SWAP16(*(USHORT *)((UCHAR *)pBcnHdr + 22)); +#endif + } +} + +/* + ======================================================================== + + Routine Description: + Arguments: + Adapter Pointer to our adapter + ======================================================================== +*/ +void RTMPHandleTwakeupInterrupt(IN PRTMP_ADAPTER pAdapter) +{ + // DBGPRINT(RT_DEBUG_ERROR, ("Twakeup Expired... !!!\n")); + pAdapter->PortCfg.Pss = PWR_ACTIVE; +} + +/* + ======================================================================== + + Routine Description: + Process all transmit ring Tx Done interrupt, running in DPC level + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPHardTransmitDone( + IN PRTMP_ADAPTER pAdapter, + IN PTXD_STRUC pTxD, + IN UCHAR FrameType) +{ + + switch (pTxD->TxResult) + { + case SUCCESS_WITHOUT_RETRY: // Success without any retry + // Return send complete status + // DBGPRINT(RT_DEBUG_INFO, "TX Success without retry<<<\n"); + if (pTxD->RTS) + { + // Increase 802.11 counters + INC_COUNTER(pAdapter->WlanCounters.RTSSuccessCount); + pTxD->RTS = 0; + } + + // Increase general counters + pAdapter->Counters.GoodTransmits++; + INC_COUNTER(pAdapter->WlanCounters.TransmittedFragmentCount); + + // update DRS related counters + if (pTxD->ACK && (FrameType == BTYPE_DATA)) + { + pAdapter->DrsCounters.OneSecTxOkCount ++; + } + break; + + case SUCCESS_WITH_RETRY: // Success with some retry + // DBGPRINT(RT_DEBUG_INFO, "TX Success with retry(=%d)<<<\n",pTxD->RetryCount); + // Increase 802.11 counters + INC_COUNTER(pAdapter->WlanCounters.RetryCount); + INC_COUNTER(pAdapter->WlanCounters.ACKFailureCount); + INC_COUNTER(pAdapter->WlanCounters.TransmittedFragmentCount); + + // Increase general counters + pAdapter->Counters.GoodTransmits++; + + if (pTxD->RetryCount > 1) + { + // Increase 802.11 counters + INC_COUNTER(pAdapter->WlanCounters.MultipleRetryCount); + + // Increase general counters + pAdapter->Counters.MoreCollisions++; + } + else + { + // Increase general counters + pAdapter->Counters.OneCollision++; + } + + if (pTxD->RTS) + { + INC_COUNTER(pAdapter->WlanCounters.RTSSuccessCount); + pTxD->RTS = 0; + } + + // update DRS related counters + if (pTxD->ACK && (FrameType == BTYPE_DATA)) + { + if (pTxD->TxRate > pAdapter->PortCfg.TxRate) + { + // DRS - must be NULL frame retried @ UpRate; downgrade + // TxQuality[UpRate] so that not upgrade TX rate + pAdapter->DrsCounters.TxQuality[pTxD->TxRate] += 2; + if (pAdapter->DrsCounters.TxQuality[pTxD->TxRate] > DRS_TX_QUALITY_WORST_BOUND) + pAdapter->DrsCounters.TxQuality[pTxD->TxRate] = DRS_TX_QUALITY_WORST_BOUND; + } + else if (pTxD->TxRate == pAdapter->PortCfg.TxRate) + pAdapter->DrsCounters.OneSecTxRetryOkCount ++; + } + break; + + case FAIL_RETRY_LIMIT: // Fail on hitting retry count limit +// DBGPRINT(RT_DEBUG_WARN, ("TX Failed (RETRY LIMIT)<<<\n")); + // Increase 802.11 counters + INC_COUNTER(pAdapter->WlanCounters.FailedCount); + INC_COUNTER(pAdapter->WlanCounters.ACKFailureCount); + + // Increase general counters + pAdapter->Counters.TxErrors++; + + if (pTxD->RTS) + { + INC_COUNTER(pAdapter->WlanCounters.RTSFailureCount); + pTxD->RTS = 0; + } + + // update DRS related counters + if (pTxD->ACK && (FrameType == BTYPE_DATA)) + { + if (pTxD->TxRate > pAdapter->PortCfg.TxRate) + { + // DRS - must be NULL frame failed @ UpRate; downgrade + // TxQuality[UpRate] so that not upgrade TX rate + pAdapter->DrsCounters.TxQuality[pTxD->TxRate] = DRS_TX_QUALITY_WORST_BOUND; + } + else if (pTxD->TxRate == pAdapter->PortCfg.TxRate) + { + pAdapter->DrsCounters.OneSecTxFailCount ++; + } + } + break; + + case FAIL_INVALID: + // DBGPRINT(RT_DEBUG_WARN, ("TX Failed (INVALID)<<<\n")); + // Increase general counters + pAdapter->Counters.TxErrors++; + + if (pTxD->RTS) + { + INC_COUNTER(pAdapter->WlanCounters.RTSFailureCount); + pTxD->RTS = 0; + } + break; + + case FAIL_OTHER: + default: + // DBGPRINT(RT_DEBUG_ERROR, ("TX Failed (other=%d)<<<\n",pTxD->TxResult)); + // Increase 802.11 counters + INC_COUNTER(pAdapter->WlanCounters.FailedCount); + INC_COUNTER(pAdapter->WlanCounters.ACKFailureCount); + + // Increase general counters + pAdapter->Counters.TxErrors++; + + if (pTxD->RTS) + { + INC_COUNTER(pAdapter->WlanCounters.RTSFailureCount); + pTxD->RTS = 0; + } + break; + } +} + +/* + ======================================================================== + + Routine Description: + API for MLME to transmit management frame to AP (BSS Mode) + or station (IBSS Mode) + + Arguments: + pAdapter Pointer to our adapter + Buffer Pointer to memory of outgoing frame + Length Size of outgoing management frame + + Return Value: + NDIS_STATUS_FAILURE + NDIS_STATUS_PENDING + NDIS_STATUS_SUCCESS + + Note: + + ======================================================================== +*/ +NDIS_STATUS MiniportMMRequest( + IN PRTMP_ADAPTER pAdapter, + IN PVOID pBuffer, + IN ULONG Length) +{ + PMGMT_STRUC pMgmt; + NDIS_STATUS Status = NDIS_STATUS_SUCCESS; + unsigned long irqflag; + + DBGPRINT(RT_DEBUG_INFO, "---> MiniportMMRequest\n"); + // Check management ring free avaliability + pMgmt = (PMGMT_STRUC) &pAdapter->MgmtRing[pAdapter->PushMgmtIndex]; + + // This management cell has been occupied + if (pMgmt->Valid == TRUE) + { + // No Management ring buffer avaliable + MlmeFreeMemory(pAdapter, pBuffer); + Status = NDIS_STATUS_FAILURE; + DBGPRINT(RT_DEBUG_WARN, "<--- MiniportMMRequest (error:: MgmtRing full)\n"); + pAdapter->RalinkCounters.MgmtRingFullCount++; + return (Status); + } + + // Insert this request into software managemnet ring + if (pBuffer) + { + pMgmt->pBuffer = pBuffer; + pMgmt->Length = Length; + pMgmt->Valid = TRUE; + pAdapter->PushMgmtIndex++; + pAdapter->MgmtQueueSize++; + if (pAdapter->PushMgmtIndex >= MGMT_RING_SIZE) + { + pAdapter->PushMgmtIndex = 0; + } + } + else + { + // Null pBuffer, no need to free memory buffer. + // This should not happen + DBGPRINT(RT_DEBUG_WARN, "<--- MiniportMMRequest (error:: NULL msg)\n"); + Status = NDIS_STATUS_FAILURE; + return (Status); + } + + if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF)) + return (Status); + + // Check Free priority queue + spin_lock_irqsave(&pAdapter->PrioRingLock, irqflag); + if (RTMPFreeDescriptorRequest(pAdapter, PRIO_RING, 1) == NDIS_STATUS_SUCCESS) + { + pMgmt = (PMGMT_STRUC) &pAdapter->MgmtRing[pAdapter->PopMgmtIndex]; + if (pMgmt->Valid == TRUE) + { + MlmeHardTransmit(pAdapter, pMgmt->pBuffer, pMgmt->Length); + MlmeFreeMemory(pAdapter, pMgmt->pBuffer); + pMgmt->Valid = FALSE; + pAdapter->PopMgmtIndex++; + pAdapter->MgmtQueueSize--; + if (pAdapter->PopMgmtIndex >= MGMT_RING_SIZE) + { + pAdapter->PopMgmtIndex = 0; + } + } + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "not enough space in PrioRing\n"); + } + spin_unlock_irqrestore(&pAdapter->PrioRingLock, irqflag); + + DBGPRINT(RT_DEBUG_INFO, "<--- MiniportMMRequest\n"); + return (Status); +} + +/* + ======================================================================== + + Routine Description: + Copy frame from waiting queue into relative ring buffer and set + appropriate ASIC register to kick hardware transmit function + + Arguments: + pAdapter Pointer to our adapter + pBuffer Pointer to memory of outgoing frame + Length Size of outgoing management frame + + Return Value: + NDIS_STATUS_FAILURE + NDIS_STATUS_PENDING + NDIS_STATUS_SUCCESS + + Note: + + ======================================================================== +*/ +VOID MlmeHardTransmit( + IN PRTMP_ADAPTER pAdapter, + IN PVOID pBuffer, + IN ULONG Length) +{ + PTXD_STRUC pTxD; +#ifdef BIG_ENDIAN + PTXD_STRUC pDestTxD; + TXD_STRUC TxD; +#endif + PUCHAR pDest; + PHEADER_802_11 pHeader_802_11; + BOOLEAN AckRequired, InsertTimestamp; + + DBGPRINT(RT_DEBUG_INFO, "MlmeHardTransmit\n"); + + // Make sure Prio ring resource won't be used by other threads + + pDest = (PUCHAR) pAdapter->PrioRing[pAdapter->CurPrioIndex].va_data_addr; +#ifndef BIG_ENDIAN + pTxD = (PTXD_STRUC) pAdapter->PrioRing[pAdapter->CurPrioIndex].va_addr; +#else + pDestTxD = (PTXD_STRUC) pAdapter->PrioRing[pAdapter->CurPrioIndex].va_addr; + TxD = *pDestTxD; + pTxD = &TxD; + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); +#endif + + if (pTxD->Owner == DESC_OWN_NIC) + { + // Descriptor owned by NIC. No descriptor avaliable + // This should not happen since caller guaranteed. + return; + } + if (pTxD->Valid == TRUE) + { + // Ndis packet of last round did not cleared. + // This should not happen since caller guaranteed. + return; + } + if (pBuffer == NULL) + { + // The buffer shouldn't be NULL + return; + } + + // outgoing frame always wakeup PHY to prevent frame lost + AsicForceWakeup(pAdapter); + + pHeader_802_11 = (PHEADER_802_11) pBuffer; + pHeader_802_11->Controlhead.Frame.PwrMgt = 0; // (pAdapter->PortCfg.Psm == PWR_SAVE); + InsertTimestamp = FALSE; + if (pHeader_802_11->Controlhead.Frame.Type == BTYPE_CNTL) // must be PS-POLL + { + AckRequired = FALSE; + pAdapter->PrioRing[pAdapter->CurPrioIndex].FrameType = BTYPE_CNTL; + } + else // BTYPE_MGMT or BMGMT_DATA(must be NULL frame) + { + pAdapter->PrioRing[pAdapter->CurPrioIndex].FrameType = BTYPE_MGMT; + pAdapter->Sequence = ((pAdapter->Sequence) + 1) & (MAX_SEQ_NUMBER); + pHeader_802_11->Sequence = pAdapter->Sequence; + + if (pHeader_802_11->Controlhead.Addr1.Octet[0] & 0x01) // MULTICAST, BROADCAST + { + AckRequired = FALSE; + pHeader_802_11->Controlhead.Duration = 0; + } + else + { + AckRequired = TRUE; + pHeader_802_11->Controlhead.Duration = RTMPCalcDuration(pAdapter, pAdapter->PortCfg.MlmeRate, 14); + if (pHeader_802_11->Controlhead.Frame.Subtype == SUBTYPE_PROBE_RSP) + { + InsertTimestamp = TRUE; + } + } + } +#ifdef BIG_ENDIAN + RTMPFrameEndianChange(pAdapter, (PUCHAR)pBuffer, DIR_WRITE, FALSE); +#endif + memcpy(pDest, pBuffer, Length); + + // Initialize Priority Descriptor + // For inter-frame gap, the number is for this frame and next frame + // For MLME rate, we will fix as 2Mb to match other vendor's implement +#ifdef BIG_ENDIAN + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pDestTxD = TxD; + pTxD = pDestTxD; +#endif + RTMPWriteTxDescriptor(pTxD, FALSE, CIPHER_NONE, AckRequired, FALSE, InsertTimestamp, + SHORT_RETRY, IFS_BACKOFF, pAdapter->PortCfg.MlmeRate, 4, Length, pAdapter->PortCfg.TxPreambleInUsed, 0); + + // Increase & maintain Tx Ring Index + pAdapter->CurPrioIndex++; + if (pAdapter->CurPrioIndex >= PRIO_RING_SIZE) + { + pAdapter->CurPrioIndex = 0; + } + + // Kick priority ring transmit + RTMP_IO_WRITE32(pAdapter,TXCSR0,0x4); + + // Make sure to release Prio ring resource +} +/* + ======================================================================== + + Routine Description: + This routine is used to en-queue outgoing packets when + there is no enough shread memory + + Arguments: + pAdapter Pointer to our adapter + pPacket Pointer to send packet + + Return Value: + None + + Note: + + ======================================================================== +*/ +NDIS_STATUS RTMPSendPacket( + IN PRTMP_ADAPTER pAdapter, + IN struct sk_buff *skb) +{ + PVOID pVirtualAddress; + UINT AllowFragSize; + UCHAR NumberOfFrag; + UCHAR RTSRequired; + NDIS_STATUS Status = NDIS_STATUS_FAILURE; + UCHAR PsMode; + + struct sk_buff_head *pTxQueue = NULL; + ULONG Priority; + UCHAR AccessCategory; + unsigned long irqflag; + + DBGPRINT(RT_DEBUG_INFO, "<==== RTMPSendPacket\n"); + + // Init priority value + Priority = 0; + AccessCategory = 0; + + if (skb) + { + Priority = skb->priority; + // 802.11e/d4.4 June, 2003 + if (Priority <=2) + AccessCategory = 0; + else if (Priority == 3) + AccessCategory = 1; + else if (Priority <= 5) + AccessCategory = 2; + else + AccessCategory = 3; + DBGPRINT(RT_DEBUG_INFO, "Priority = %d, AC = %d\n", Priority, AccessCategory); + } + + // For TKIP, MIC value is treated as payload, it might be fragmented through + // different MPDUs. + if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) + { + skb->data_len += 8; + } + + pVirtualAddress = (PVOID)skb->data; + + // Check for virtual address allocation, it might fail !!! + if (pVirtualAddress == NULL) + { + // Resourece is low, system did not allocation virtual address + // return NDIS_STATUS_FAILURE directly to upper layer + return (Status); + } + + // Store Ethernet MAC address when APClinet mode on + if ((pAdapter->PortCfg.StaWithEtherBridge.Enable) + && ((*((PUCHAR) pVirtualAddress) & 0x01) == 0) + && !MAC_ADDR_EQUAL(&pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr, ((PUCHAR) pVirtualAddress) + 6) + /*&& !MAC_ADDR_EQUAL(&pAdapter->PermanentAddress, ((PUCHAR) pVirtualAddress) + 6)*/) + { + CSR3_STRUC StaMacReg0; + CSR4_STRUC StaMacReg1; + + COPY_MAC_ADDR(&pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr, ((PUCHAR) pVirtualAddress) + 6); + + StaMacReg0.field.Byte0 = pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[0]; + StaMacReg0.field.Byte1 = pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[1]; + StaMacReg0.field.Byte2 = pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[2]; + StaMacReg0.field.Byte3 = pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[3]; + + StaMacReg1.field.Byte4 = pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[4]; + StaMacReg1.field.Byte5 = pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[5]; + + pAdapter->CurrentAddress[0] = StaMacReg0.field.Byte0; + pAdapter->CurrentAddress[1] = StaMacReg0.field.Byte1; + pAdapter->CurrentAddress[2] = StaMacReg0.field.Byte2; + pAdapter->CurrentAddress[3] = StaMacReg0.field.Byte3; + pAdapter->CurrentAddress[4] = StaMacReg1.field.Byte4; + pAdapter->CurrentAddress[5] = StaMacReg1.field.Byte5; + + RTMP_IO_WRITE32(pAdapter, CSR3, StaMacReg0.word); + RTMP_IO_WRITE32(pAdapter, CSR4, StaMacReg1.word); + + DBGPRINT(RT_DEBUG_TRACE, "StaWithEtherBridge - joining %02x:%02x:%02x:%02x:%02x:%02x ...\n", + pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[0],pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[1],pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[2], + pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[3],pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[4],pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr.Octet[5]); + } + + // + // Check for multicast or broadcast (First byte of DA) + // + if ((*((PUCHAR) pVirtualAddress) & 0x01) != 0) + { + // For multicast & broadcast, there is no fragment allowed + NumberOfFrag = 1; + } + else + { + // Check for payload allowed for each fragment + AllowFragSize = (pAdapter->PortCfg.FragmentThreshold) - LENGTH_802_11 - LENGTH_CRC; + + // Calculate fragments required + NumberOfFrag = ((skb->data_len - LENGTH_802_3 + LENGTH_802_1_H) / AllowFragSize) + 1; + // Minus 1 if the size just match to allowable fragment size + if (((skb->data_len - LENGTH_802_3 + LENGTH_802_1_H) % AllowFragSize) == 0) + { + NumberOfFrag--; + } + } + + // Check for requirement of RTS + if (NumberOfFrag > 1) + { + // If multiple fragment required, RTS is required only for the first fragment + // if the fragment size large than RTS threshold + RTSRequired = (pAdapter->PortCfg.FragmentThreshold > pAdapter->PortCfg.RtsThreshold) ? 1 : 0; + } + else + { + RTSRequired = (skb->data_len > pAdapter->PortCfg.RtsThreshold) ? 1 : 0; + } + DBGPRINT(RT_DEBUG_INFO, "Number of fragments include RTS :%d\n", NumberOfFrag + RTSRequired); + + // RTS/CTS may also be required in order to protect OFDM frame + if ((pAdapter->PortCfg.TxRate >= RATE_FIRST_OFDM_RATE) && pAdapter->PortCfg.BGProtectionInUsed) + RTSRequired = 1; + + // Save framnet number to Ndis packet reserved field + RTMP_SET_PACKET_FRAGMENTS(skb, NumberOfFrag); + + // Save RTS requirement to Ndis packet reserved field + RTMP_SET_PACKET_RTS(skb, RTSRequired); + + // Make sure SendTxWait queue resource won't be used by other threads + spin_lock_irqsave(&pAdapter->TxSwQueueLock, irqflag); + + // Select the right priority queue + // There should be no else statement since it should always fall within 0-3 + if (AccessCategory== 0) + pTxQueue = &pAdapter->TxSwQueue0; + else if (AccessCategory== 1) + pTxQueue = &pAdapter->TxSwQueue1; + else if (AccessCategory== 2) + pTxQueue = &pAdapter->TxSwQueue2; + else if (AccessCategory== 3) + pTxQueue = &pAdapter->TxSwQueue3; + + // + // For infrastructure mode, enqueue this frame immediately to sendwaitqueue + // For Ad-hoc mode, check the DA power state, then decide which queue to enqueue + // + if (INFRA_ON(pAdapter)) + { + // In infrastructure mode, simply enqueue the packet into Tx waiting queue. + DBGPRINT(RT_DEBUG_INFO, "Infrastructure -> Enqueue one frame\n"); + + // Enqueue Ndis packet to end of Tx wait queue + skb_queue_tail(pTxQueue, skb); + Status = NDIS_STATUS_SUCCESS; + } + else + { + // In IBSS mode, power state of destination should be considered. + PsMode = PWR_ACTIVE; // Faked + if (PsMode == PWR_ACTIVE) + { + DBGPRINT(RT_DEBUG_INFO,"Ad-Hoc -> Enqueue one frame\n"); + + // Enqueue Ndis packet to end of Tx wait queue + skb_queue_tail(pTxQueue, skb); + Status = NDIS_STATUS_SUCCESS; + } + } + + spin_unlock_irqrestore(&pAdapter->TxSwQueueLock, irqflag); + return (Status); +} + +/* + ======================================================================== + + Routine Description: + To do the enqueue operation and extract the first item of waiting + list. If a number of available shared memory segments could meet + the request of extracted item, the extracted item will be fragmented + into shared memory segments. + + Arguments: + pAdapter Pointer to our adapter + pQueue Pointer to Waiting Queue + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPDeQueuePacket( + IN PRTMP_ADAPTER pAdapter) +{ + UCHAR FragmentRequired; + NDIS_STATUS Status; + UCHAR Count = 0; + struct sk_buff_head *pQueue; + UCHAR AccessCategory; + struct sk_buff *skb; + unsigned long irqflag; + + // Make sure SendTxWait queue resource won't be used by other threads + spin_lock_irqsave(&pAdapter->TxSwQueueLock, irqflag); + + while (Count < MAX_TX_PROCESS) + // Check queue before dequeue + // while ((pQueue->Head != NULL) && (Count < MAX_TX_PROCESS)) + { + // Reset is in progress, stop immediately + if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RESET_IN_PROGRESS)) + break; + + pQueue = RTMPCheckTxSwQueue(pAdapter, &AccessCategory); + if(!pQueue) + break; + + // Dequeue the first entry from head of queue list + skb = skb_dequeue(pQueue); + + if(!skb) + break; + + // RTS or CTS-to-self for B/G protection mode has been set already. + // There is no need to re-do it here. + // Total fragment required = number of fragment + RST if required + FragmentRequired = RTMP_GET_PACKET_FRAGMENTS(skb) + RTMP_GET_PACKET_RTS(skb); + + if (RTMPFreeDescriptorRequest(pAdapter, TX_RING, FragmentRequired) == NDIS_STATUS_SUCCESS) + { + // Avaliable ring descriptors are enough for this frame + // Call hard transmit + Status = RTMPHardEncrypt(pAdapter, skb, FragmentRequired, pAdapter->PortCfg.EnableTxBurst, AccessCategory); + + if (Status == NDIS_STATUS_FAILURE) + { + // Packet failed due to various Ndis Packet error + dev_kfree_skb_irq(skb); + break; + } + else if (Status == NDIS_STATUS_RESOURCES) + { + // Not enough free tx ring, it might happen due to free descriptor inquery might be not correct + // It also might change to NDIS_STATUS_FAILURE to simply drop the frame + // Put the frame back into head of queue + skb_queue_head(pQueue, skb); + break; + } + Count++; + } + else + { + skb_queue_head(pQueue, skb); + pAdapter->PrivateInfo.TxRingFullCnt++; + DBGPRINT(RT_DEBUG_INFO,"RTMPDequeuePacket --> Not enough free Tx Ring descriptor (CurEncryptIndex=%d,CurTxIndex=%d, NextTxDoneIndex=%d)!!!\n", + pAdapter->CurEncryptIndex, pAdapter->CurTxIndex, pAdapter->NextTxDoneIndex); + break; + } + } + + // Release TxSwQueue0 resources + spin_unlock_irqrestore(&pAdapter->TxSwQueueLock, irqflag); +} + +/* + ======================================================================== + + Routine Description: + This subroutine will scan through releative ring descriptor to find + out avaliable free ring descriptor and compare with request size. + + Arguments: + pAdapter Pointer to our adapter + RingType Selected Ring + + Return Value: + NDIS_STATUS_FAILURE Not enough free descriptor + NDIS_STATUS_SUCCESS Enough free descriptor + + Note: + + ======================================================================== +*/ +NDIS_STATUS RTMPFreeDescriptorRequest( + IN PRTMP_ADAPTER pAdapter, + IN UCHAR RingType, + IN UCHAR NumberRequired) +{ + UCHAR FreeNumber = 0; + UINT Index; + PTXD_STRUC pTxD; +#ifdef BIG_ENDIAN + PTXD_STRUC pDestTxD; + TXD_STRUC TxD; +#endif + unsigned long irqflag; + NDIS_STATUS Status = NDIS_STATUS_FAILURE; + + switch (RingType) + { + case TX_RING: + spin_lock_irqsave(&pAdapter->TxRingLock, irqflag); + Index = pAdapter->CurEncryptIndex; + do + { +#ifndef BIG_ENDIAN + pTxD = (PTXD_STRUC) pAdapter->TxRing[Index].va_addr; +#else + pDestTxD = (PTXD_STRUC) pAdapter->TxRing[Index].va_addr; + TxD = *pDestTxD; + pTxD = &TxD; + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); +#endif + + // While Owner bit is NIC, obviously ASIC still need it. + // If valid bit is TRUE, indicate that TxDone has not process yet + // We should not use it until TxDone finish cleanup job + if ((pTxD->Owner == DESC_OWN_HOST) && (pTxD->CipherOwn == DESC_OWN_HOST) && (pTxD->Valid == FALSE)) + { + // This one is free + FreeNumber++; + } + else + { + DBGPRINT(RT_DEBUG_INFO,"RTMPFreeDescriptorRequest fail - Owner=%d,CipherOwn=%d,Valid=%d\n",pTxD->Owner, pTxD->CipherOwn, pTxD->Valid); + break; + } + + Index++; + if (Index >= TX_RING_SIZE) // Wrap around issue + { + Index = 0; + } + + } while (FreeNumber < NumberRequired); // Quit here ! Free number is enough ! + + if (FreeNumber >= NumberRequired) + { + Status = NDIS_STATUS_SUCCESS; + } + + // Make sure to release Tx ring resource + spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); + break; + + case PRIO_RING: + Index = pAdapter->CurPrioIndex; + do + { +#ifndef BIG_ENDIAN + pTxD = (PTXD_STRUC) pAdapter->PrioRing[Index].va_addr; +#else + pDestTxD = (PTXD_STRUC) pAdapter->PrioRing[Index].va_addr; + TxD = *pDestTxD; + pTxD = &TxD; + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); +#endif + + // While Owner bit is NIC, obviously ASIC still need it. + // If valid bit is TRUE, indicate that TxDone has not process yet + // We should not use it until TxDone finish cleanup job + if ((pTxD->Owner == DESC_OWN_HOST) && (pTxD->Valid == FALSE)) + { + // This one is free + FreeNumber++; + } + else + { + break; + } + + Index++; + if (Index >= PRIO_RING_SIZE) // Wrap around issue + { + Index = 0; + } + + } while (FreeNumber < NumberRequired); // Quit here ! Free number is enough ! + + if (FreeNumber >= NumberRequired) + { + Status = NDIS_STATUS_SUCCESS; + } + + break; + + default: + break; + } + + return (Status); +} + +VOID RTMPSendNullFrame( + IN PRTMP_ADAPTER pAdapter, + IN PVOID pBuffer, + IN ULONG Length, + IN UCHAR TxRate) +{ + PUCHAR pDest; + PTXD_STRUC pTxD; + UCHAR FrameGap; +#ifdef BIG_ENDIAN + PTXD_STRUC pDestTxD; + TXD_STRUC TxD; +#endif + unsigned long irqflag; + + if (pBuffer == NULL) + { + return; + } + + if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RESET_IN_PROGRESS)) + { + MlmeFreeMemory(pAdapter, pBuffer); + return; + } + + // WPA 802.1x secured port control + if (((pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPA) || + (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPAPSK)) && + (pAdapter->PortCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED)) + { + MlmeFreeMemory(pAdapter, pBuffer); + return; + } + + FrameGap = IFS_BACKOFF; // Default frame gap mode + + // outgoing frame always wakeup PHY to prevent frame lost and + // turn off PSM bit to improve performance + AsicForceWakeup(pAdapter); +#if 0 + if ((pAdapter->TxSwQueue0.Number != 0) || (pAdapter->TxSwQueue1.Number != 0) || + (pAdapter->TxSwQueue2.Number != 0) || (pAdapter->TxSwQueue3.Number != 0)) + { + DBGPRINT(RT_DEBUG_TRACE,("Drop Null frame due to Tx queue not empty!\n")); + } + else +#endif + { + // Make sure Tx ring resource won't be used by other threads + spin_lock_irqsave(&pAdapter->TxRingLock, irqflag); + + // Get the Tx Ring descriptor & Dma Buffer address + pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; +#ifndef BIG_ENDIAN + pTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; +#else + pDestTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; + TxD = *pDestTxD; + pTxD = &TxD; + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); +#endif + + if ((pTxD->Owner == DESC_OWN_HOST) && (pTxD->CipherOwn == DESC_OWN_HOST) && (pTxD->Valid == FALSE)) + { + HEADER_802_11 *pHeader_802_11; + + DBGPRINT(RT_DEBUG_TRACE, "SYNC - send NULL Frame @%d Mbps...\n", RateIdToMbps[TxRate]); +#ifdef BIG_ENDIAN + RTMPFrameEndianChange(pAdapter, (PUCHAR)pBuffer, DIR_WRITE, FALSE); +#endif + memcpy(pDest, pBuffer, Length); + pAdapter->TxRing[pAdapter->CurEncryptIndex].FrameType = BTYPE_DATA; + + pHeader_802_11 = (PHEADER_802_11) pDest; + pHeader_802_11->Controlhead.Frame.PwrMgt = (pAdapter->PortCfg.Psm == PWR_SAVE); + +#ifdef BIG_ENDIAN + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pDestTxD = TxD; + pTxD = pDestTxD; +#endif + + RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, TRUE, FALSE, FALSE, LONG_RETRY, IFS_BACKOFF, + TxRate, 4, Length, pAdapter->PortCfg.TxPreambleInUsed, 0); + + // Increase & maintain Tx Ring Index + pAdapter->CurEncryptIndex++; + if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) + { + pAdapter->CurEncryptIndex = 0; + } + + pAdapter->RalinkCounters.EncryptCount++; + + // Kick Encrypt Control Register at the end of all ring buffer preparation + RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); + + } + spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); + } + MlmeFreeMemory(pAdapter, pBuffer); +} + +/* + ======================================================================== + + Routine Description: + Copy frame from waiting queue into relative ring buffer and set + appropriate ASIC register to kick hardware encryption before really + sent out to air. + + Arguments: + pAdapter Pointer to our adapter + PNDIS_PACKET Pointer to outgoing Ndis frame + NumberOfFrag Number of fragment required + + Return Value: + None + + Note: + + ======================================================================== +*/ +NDIS_STATUS RTMPHardEncrypt( + IN PRTMP_ADAPTER pAdapter, + IN struct sk_buff *skb, + IN UCHAR NumberRequired, + IN ULONG EnableTxBurst, + IN UCHAR AccessCategory) +{ + PVOID pVirtualAddress; + UINT NdisBufferLength; + UINT BytesCopied; + UINT TxSize; + UINT FreeFragSize; + UINT RemainSize; + USHORT Protocol; + UCHAR FrameGap; + HEADER_802_11 Header_802_11; + PUCHAR pDest; + PUCHAR pSrc; + PUCHAR pEncap; + UCHAR CipherAlg; + PTXD_STRUC pTxD; + BOOLEAN StartOfFrame; + BOOLEAN EAPOLFrame; + BOOLEAN Encapped; + ULONG Iv16; + ULONG Iv32; + BOOLEAN MICFrag; + PWPA_KEY pWpaKey = NULL; + UCHAR RetryMode = SHORT_RETRY; + UCHAR AckRate = RATE_2; + USHORT AckDuration = 0; + USHORT EncryptionOverhead = 0; +#ifdef BIG_ENDIAN + PTXD_STRUC pDestTxD; + TXD_STRUC TxD; + PUCHAR pOriginDest; +#endif + unsigned long irqflag; + + // Make sure Tx ring resource won't be used by other threads + spin_lock_irqsave(&pAdapter->TxRingLock, irqflag); + + if(skb->data == NULL) + { + DBGPRINT(RT_DEBUG_ERROR, "Error, Null skb data buffer!!!\n"); + + spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); + return (NDIS_STATUS_FAILURE); + } + + if (pAdapter->PortCfg.BssType == BSS_MONITOR && pAdapter->PortCfg.MallowRFMONTx == TRUE) + { + pAdapter->TxRing[pAdapter->CurEncryptIndex].FrameType = BTYPE_DATA; + pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; + pTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; + MlmeSetPsmBit(pAdapter, PWR_ACTIVE); + memcpy(pDest,skb->data,skb->len); + RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, SHORT_RETRY, IFS_BACKOFF, pAdapter->PortCfg.TxRate, 4, skb->len, pAdapter->PortCfg.TxPreambleInUsed, AccessCategory); + + pAdapter->CurEncryptIndex++; + if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) + pAdapter->CurEncryptIndex = 0; + pAdapter->RalinkCounters.EncryptCount++; + + goto skip_packet_handling; + } + + if (EnableTxBurst == 1) + FrameGap = IFS_SIFS; + else + FrameGap = IFS_BACKOFF; // Default frame gap mode + + // outgoing frame always wakeup PHY to prevent frame lost and + // turn off PSM bit to improve performance + if (pAdapter->PortCfg.Psm == PWR_SAVE) + { + MlmeSetPsmBit(pAdapter, PWR_ACTIVE); + } + AsicForceWakeup(pAdapter); + + // Sequence Number is identical for all fragments belonged to the same frame + // Sequence is 0 - 4095 + pAdapter->Sequence = ((pAdapter->Sequence) + 1) & (MAX_SEQ_NUMBER); + + AckRate = pAdapter->PortCfg.ExpectedACKRate[pAdapter->PortCfg.TxRate]; + AckDuration = RTMPCalcDuration(pAdapter, AckRate, 14); + + pVirtualAddress = skb->data; + NdisBufferLength = skb->len; + + if ((*((PUCHAR) pVirtualAddress) & 0x01) != 0) // Multicast or Broadcast + { + INC_COUNTER(pAdapter->WlanCounters.MulticastTransmittedFrameCount); + } + + if (NdisBufferLength < 14) + { + DBGPRINT(RT_DEBUG_ERROR,"RTMPHardTransmit --> Ndis Packet buffer error !!!\n"); + // Make sure to release Tx ring resource + spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); + return (NDIS_STATUS_FAILURE); + } + + // + // Start making 802.11 frame header + // + memset(&Header_802_11, 0, sizeof(HEADER_802_11)); // Initialize 802.11 header for each fragment + if (INFRA_ON(pAdapter)) + { + // Address 1 - AP, Address 2 - this STA, Address 3 - DA + memcpy(&Header_802_11.Controlhead.Addr1, &pAdapter->PortCfg.Bssid, ETH_ALEN); + memcpy(&Header_802_11.Addr3, (PUCHAR) pVirtualAddress, ETH_ALEN); + Header_802_11.Controlhead.Frame.ToDs = 1; + } + else + { + // Address 1 - DA, Address 2 - this STA, Address 3 - BSSID + memcpy(&Header_802_11.Controlhead.Addr1, (PUCHAR) pVirtualAddress, ETH_ALEN); + memcpy(&Header_802_11.Addr3, &pAdapter->PortCfg.Bssid, ETH_ALEN); + } + memcpy(&Header_802_11.Controlhead.Addr2, pAdapter->CurrentAddress, ETH_ALEN); + + Header_802_11.Sequence = pAdapter->Sequence; // Sequence number + Header_802_11.Controlhead.Frame.Type = BTYPE_DATA; // Frame type + Header_802_11.Controlhead.Frame.PwrMgt = (pAdapter->PortCfg.Psm == PWR_SAVE); + + // Add 802.11x protocol check. + // For non-WPA network, 802.1x message should not encrypt even + // the privacy is on. + if (RTMPEqualMemory(EAPOL, ((PUCHAR) pVirtualAddress) + 12, 2)) + { + EAPOLFrame = TRUE; + if (pAdapter->PortCfg.MicErrCnt >= 2) + pAdapter->PortCfg.MicErrCnt++; + } + else + EAPOLFrame = FALSE; + + // WPA 802.1x secured port control + if (((pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPA) || + (pAdapter->PortCfg.AuthMode == Ndis802_11AuthModeWPAPSK)) && + ((pAdapter->PortCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED) || (pAdapter->PortCfg.MicErrCnt >= 2)) && + (EAPOLFrame == FALSE)) + { + DBGPRINT(RT_DEBUG_TRACE,"RTMPHardEncrypt --> Drop packet before port secured !!!\n"); + // Make sure to release Tx ring resource + spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); + return (NDIS_STATUS_FAILURE); + } + + MICFrag = FALSE; // Flag to indicate MIC shall spread into two MPDUs + Encapped = FALSE; + pEncap = NULL; + + pSrc = (PUCHAR) pVirtualAddress; + Protocol = *(pSrc + 12) * 256 + *(pSrc + 13); + if (Protocol > 1500) // CHeck for LLC encaped + { + pEncap = SNAP_802_1H; + Encapped = TRUE; + if (RTMPEqualMemory(IPX, pSrc + 12, 2) || + RTMPEqualMemory(APPLE_TALK, pSrc + 12, 2)) + { + pEncap = SNAP_BRIDGE_TUNNEL; + } + } + + if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) && + (pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen != 0)) + EncryptionOverhead = 8; // WEP: IV + ICV + else if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) + EncryptionOverhead = 12; // TKIP: IV + EIV + ICV, MIC already added to TotalPacketLength + else if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) + EncryptionOverhead = 16; // AES: IV + EIV + Hardware MIC + else + EncryptionOverhead = 0; + + // + // Make RTS frame if required + // + if (RTMP_GET_PACKET_RTS(skb)) + { + PCONTROL_HEADER pControlHeader; + ULONG NextFragSize; + + // RTS-protected frame should use LONG_RETRY (=4), other frames use SHORT_RETRY (=7) + RetryMode = LONG_RETRY; + + pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; +#ifndef BIG_ENDIAN + pTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; +#else + pDestTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; + TxD = *pDestTxD; + pTxD = &TxD; + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); +#endif + + if ((pTxD->Owner == DESC_OWN_NIC) || (pTxD->CipherOwn == DESC_OWN_NIC)) + { + // Descriptor owned by NIC. No descriptor avaliable + // This should not happen since caller guaranteed. + // Make sure to release Tx ring resource + spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); + return (NDIS_STATUS_RESOURCES); + } + if (pTxD->Valid == TRUE) + { + // This might happen when HardTransmit process faster than TxDone interrupt. + // However, Since we did call free descriptor number check before Tx HardTransmit. + // This case should not happened. We should return to higher caller and requeue this + // acket until next Tx hardtransmit. Hopefully this situation is corrected then. + // Ndis packet of last round did not cleared. + // This should not happen since caller guaranteed. + // Make sure to release Tx ring resource + pTxD->Valid = FALSE; +#ifdef BIG_ENDIAN + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pDestTxD = TxD; +#endif + + spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); + return (NDIS_STATUS_RESOURCES); + } + + pAdapter->TxRing[pAdapter->CurEncryptIndex].FrameType = BTYPE_CNTL; + pControlHeader = (PCONTROL_HEADER) pDest; + memset(pControlHeader, 0, sizeof(CONTROL_HEADER)); + pControlHeader->Frame.Type = BTYPE_CNTL; + + // Calculate duration = 2 SIFS + CTS + Data Frame size + if (RTMP_GET_PACKET_FRAGMENTS(skb) > 1) + { + // If fragment required, size is maximum fragment size + NextFragSize = pAdapter->PortCfg.FragmentThreshold; + } + else + { + // Size should be frame with 802.11 header & CRC + NextFragSize = skb->data_len + LENGTH_802_11 + LENGTH_CRC - LENGTH_802_3; + + if (Encapped) + NextFragSize += LENGTH_802_1_H; + } + pControlHeader->Duration = 2 * (pAdapter->PortCfg.Dsifs) + + RTMPCalcDuration(pAdapter, pAdapter->PortCfg.TxRate, NextFragSize + EncryptionOverhead) + + AckDuration; + + // Write Tx descriptor + // Don't kick tx start until all frames are prepared + // RTS has to set more fragment bit for fragment burst + // RTS did not encrypt + if (pAdapter->PortCfg.BGProtectionInUsed == 1) + { + DBGPRINT(RT_DEBUG_TRACE,"Making CTS-to-self Frame\n"); + pControlHeader->Frame.Subtype = SUBTYPE_CTS; + memcpy(&pControlHeader->Addr1, pAdapter->CurrentAddress, ETH_ALEN); + +#ifdef BIG_ENDIAN + RTMPFrameEndianChange(pAdapter, (PUCHAR)pControlHeader, DIR_WRITE, FALSE); + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pDestTxD = TxD; + pTxD = pDestTxD; +#endif + + +#ifdef WIFI_TEST + RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, SHORT_RETRY, + FrameGap, pAdapter->PortCfg.RtsRate, 4, 10, Rt802_11PreambleShort, + AccessCategory); +#else + RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, FALSE, FALSE, FALSE, SHORT_RETRY, + FrameGap, pAdapter->PortCfg.RtsRate, 4, 10, pAdapter->PortCfg.TxPreambleInUsed, + AccessCategory); +#endif + } + else + { + DBGPRINT(RT_DEBUG_TRACE,"Making RTS Frame\n"); + pControlHeader->Frame.Subtype = SUBTYPE_RTS; + if (INFRA_ON(pAdapter)) + memcpy(&pControlHeader->Addr1, &pAdapter->PortCfg.Bssid, ETH_ALEN); + else + memcpy(&pControlHeader->Addr1, (PUCHAR) pVirtualAddress, ETH_ALEN); + memcpy(&pControlHeader->Addr2, pAdapter->CurrentAddress, ETH_ALEN); +#ifdef BIG_ENDIAN + RTMPFrameEndianChange(pAdapter, (PUCHAR)pControlHeader, DIR_WRITE, FALSE); + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pDestTxD = TxD; + pTxD = pDestTxD; +#endif + RTMPWriteTxDescriptor(pTxD, TRUE, CIPHER_NONE, TRUE, TRUE, FALSE, SHORT_RETRY, + FrameGap, pAdapter->PortCfg.RtsRate, 4, sizeof(CONTROL_HEADER), + pAdapter->PortCfg.TxPreambleInUsed, AccessCategory); + pTxD->RTS = 1; + } + + FrameGap = IFS_SIFS; // Init frame gap for coming data after RTS + NumberRequired--; + + // Increase & maintain Tx Ring Index + pAdapter->CurEncryptIndex++; + if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) + { + pAdapter->CurEncryptIndex = 0; + } + pAdapter->RalinkCounters.EncryptCount++; + } + + // Find the WPA key, either Group or Pairwise Key + if (pAdapter->PortCfg.AuthMode >= Ndis802_11AuthModeWPA) + { + INT idx; + + pWpaKey = (PWPA_KEY) NULL; + // First lookup the DA, if it's a group address, use GROUP key + if (Header_802_11.Controlhead.Addr1.Octet[0] & 0x01) + { + if (pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId].KeyLen != 0) + { + pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId]; + pWpaKey->Type = GROUP_KEY; + DBGPRINT(RT_DEBUG_INFO, "Tx Use Group Key\n"); + } + } + // Try to find the Pairwise Key + else + { + for (idx = 0; idx < PAIRWISE_KEY_NO; idx++) + { + if ((NdisEqualMemory(&Header_802_11.Controlhead.Addr1, pAdapter->PortCfg.PairwiseKey[idx].BssId, 6)) && + (pAdapter->PortCfg.PairwiseKey[idx].KeyLen != 0)) + { + pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.PairwiseKey[idx]; + pWpaKey->Type = PAIRWISE_KEY; + DBGPRINT(RT_DEBUG_INFO, "Tx Use Pairwise Key\n"); + break; + } + } + // Use default Group Key if there is no Pairwise key present + if ((pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId].KeyLen != 0) && (pWpaKey == NULL)) + { + pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.GroupKey[pAdapter->PortCfg.DefaultKeyId]; + pWpaKey->Type = GROUP_KEY; + DBGPRINT(RT_DEBUG_INFO, "Tx Use Group Key\n"); + } + } + } + + // For the purpose to calculate duration for the second last fragment + RemainSize = skb->data_len - LENGTH_802_3 + LENGTH_CRC; + + StartOfFrame = TRUE; + // Start Copy Ndis Packet into Ring buffer. + // For frame required more than one ring buffer (fragment), all ring buffers + // have to be filled before kicking start tx bit. + do + { + // Get the Tx Ring descriptor & Dma Buffer address +#ifndef BIG_ENDIAN + pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; + pTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; +#else + pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; + pOriginDest = pDest; + pDestTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; + TxD = *pDestTxD; + pTxD = &TxD; + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); +#endif + + if ((pTxD->Owner == DESC_OWN_NIC) || (pTxD->CipherOwn == DESC_OWN_NIC)) + { + // Descriptor owned by NIC. No descriptor avaliable + // This should not happen since caller guaranteed. + // Make sure to release Tx ring resource + pAdapter->RalinkCounters.TxRingErrCount++; + spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); + return (NDIS_STATUS_RESOURCES); + } + if (pTxD->Valid == TRUE) + { + // Ndis packet of last round did not cleared. + // This should not happen since caller guaranteed. + // Make sure to release Tx ring resource + pTxD->Valid = FALSE; + +#ifdef BIG_ENDIAN + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pDestTxD = TxD; +#endif + + pAdapter->RalinkCounters.TxRingErrCount++; + spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); + return (NDIS_STATUS_RESOURCES); + } + pAdapter->TxRing[pAdapter->CurEncryptIndex].FrameType = BTYPE_DATA; + + // Make fragment number & more fragment bit of 802.11 header + if (StartOfFrame == TRUE) + Header_802_11.Frag = 0; // Start of fragment burst / Single Frame + else + Header_802_11.Frag++; // Rest of fragmented frames. + + // Maximum allowable payload with one ring buffer, bound by fragment size + FreeFragSize = pAdapter->PortCfg.FragmentThreshold - LENGTH_CRC; + + // + // calculate "duration" field of this fragment + // + if (NumberRequired > 1) + { + ULONG NextFragSize; + Header_802_11.Controlhead.Frame.MoreFrag = 1; + + if (NumberRequired == 2) + NextFragSize = RemainSize - pAdapter->PortCfg.FragmentThreshold + LENGTH_802_11 + LENGTH_802_11 + LENGTH_CRC; + else + NextFragSize = pAdapter->PortCfg.FragmentThreshold; + + Header_802_11.Controlhead.Duration = 3 * pAdapter->PortCfg.Dsifs + + 2 * AckDuration + + RTMPCalcDuration(pAdapter, pAdapter->PortCfg.TxRate, NextFragSize + EncryptionOverhead); + } + else // this is the last or only fragment + { + Header_802_11.Controlhead.Frame.MoreFrag = 0; + + if (Header_802_11.Controlhead.Addr1.Octet[0] & 0x01) // multicast/broadcast + Header_802_11.Controlhead.Duration = 0; + else + Header_802_11.Controlhead.Duration = pAdapter->PortCfg.Dsifs + AckDuration; + } + + // Check for WEP enable bit and prepare for software WEP + if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) && (EAPOLFrame == FALSE) && + (pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen != 0)) + Header_802_11.Controlhead.Frame.Wep = 1; + else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pWpaKey != NULL)) + Header_802_11.Controlhead.Frame.Wep = 1; + else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) && (pWpaKey != NULL)) + Header_802_11.Controlhead.Frame.Wep = 1; + + // + // Copy 802.11 header to Tx ring buffer + // + memcpy(pDest, &Header_802_11, sizeof(Header_802_11)); + pDest += sizeof(Header_802_11); + FreeFragSize -= sizeof(Header_802_11); + + DBGPRINT(RT_DEBUG_TRACE,"pWpaKey = %s\n", pWpaKey == NULL ? "NULL" : "not NULL"); + + if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) && (EAPOLFrame == FALSE) && + (pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen != 0)) + { + DBGPRINT(RT_DEBUG_TRACE,"Ndis802_11Encryption1Enabled::DefaultKeyId = %d\n", pAdapter->PortCfg.DefaultKeyId); + // Prepare IV, IV offset, Key for Hardware encryption + RTMPInitWepEngine( + pAdapter, + pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].Key, + pAdapter->PortCfg.DefaultKeyId, + pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen, + (PUCHAR) &pTxD->Iv); + + if (pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen == 5) + CipherAlg = CIPHER_WEP64; + else + CipherAlg = CIPHER_WEP128; + + // Set Iv offset in TxD + pTxD->IvOffset = LENGTH_802_11; + // Copy Encrypt Key to TxD + memcpy( + pTxD->Key, + pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].Key, + pAdapter->PortCfg.SharedKey[pAdapter->PortCfg.DefaultKeyId].KeyLen); + } + else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pWpaKey != NULL)) + { + INT i = 0; + DBGPRINT(RT_DEBUG_TRACE,"Ndis802_11Encryption2Enabled::DefaultKeyId = %d\n", pAdapter->PortCfg.DefaultKeyId); + // Prepare 8 bytes TKIP encapsulation for MPDU + { + TKIP_IV tkipIv; + + tkipIv.IV16.field.rc0 = *(pWpaKey->TxTsc + 1); + tkipIv.IV16.field.rc1 = (tkipIv.IV16.field.rc0 | 0x20) & 0x7f; + tkipIv.IV16.field.rc2 = *pWpaKey->TxTsc; + tkipIv.IV16.field.ExtIV = 1; // 0: non-extended IV, 1: an extended IV + tkipIv.IV16.field.KeyID = pAdapter->PortCfg.DefaultKeyId; + tkipIv.IV32 = *(PULONG)(pWpaKey->TxTsc + 2); +#if 0 //jett, 2004-1222 ------------------ +#if BIG_ENDIAN == TRUE + pTxD->Iv = (tkipIv.IV16.field.rc0 << 24) | (tkipIv.IV16.field.rc1 << 16) | (tkipIv.IV16.field.rc2 << 8) | (tkipIv.IV16.field.CONTROL.Byte); +#endif + +#ifdef RTMP_EMBEDDED + pTxD->Iv = (tkipIv.IV16.field.CONTROL.Byte << 24) | (tkipIv.IV16.field.rc2 << 16) | (tkipIv.IV16.field.rc1 << 8) | (tkipIv.IV16.field.rc0); +#else + pTxD->Iv = tkipIv.IV16.word; +#endif +#else //---------------------------------- +#ifdef BIG_ENDIAN + pTxD->Iv = SWAP32(tkipIv.IV16.word); +#else + pTxD->Iv = tkipIv.IV16.word; +#endif +#endif //---------------------------------- + + *((PUCHAR) &pTxD->Eiv) = *((PUCHAR) &tkipIv.IV32 + 3); + *((PUCHAR) &pTxD->Eiv + 1) = *((PUCHAR) &tkipIv.IV32 + 2); + *((PUCHAR) &pTxD->Eiv + 2) = *((PUCHAR) &tkipIv.IV32 + 1); + *((PUCHAR) &pTxD->Eiv + 3) = *((PUCHAR) &tkipIv.IV32); + } + + // Increase TxTsc value for next transmission + while (++pWpaKey->TxTsc[i] == 0x0) + { + i++; + if (i == 6) + break; + } + + // Set IV offset + pTxD->IvOffset = LENGTH_802_11; + + // Copy TKey + memcpy(pTxD->Key, pWpaKey->Key, 16); + + // Set Cipher suite + CipherAlg = CIPHER_TKIP; + } + else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) && (pWpaKey != NULL)) + { + INT i; + PUCHAR pTmp; + + i = 0; + pTmp = (PUCHAR) &Iv16; + *pTmp = pWpaKey->TxTsc[0]; + *(pTmp + 1) = pWpaKey->TxTsc[1]; + *(pTmp + 2) = 0; + *(pTmp + 3) = (pAdapter->PortCfg.DefaultKeyId << 6) | 0x20; + + Iv32 = *(PULONG)(&pWpaKey->TxTsc[2]); + + // Increase TxTsc value for next transmission + while (++pWpaKey->TxTsc[i] == 0x0) + { + i++; + if (i == 6) + break; + } + if (i == 6) + { + // TODO: TSC has done one full cycle, do re-keying stuff follow specs + // Should send a special event microsoft defined to request re-key + } + + memcpy(&pTxD->Iv, &Iv16, 4); // Copy IV + memcpy(&pTxD->Eiv, &Iv32, 4); // Copy EIV + pTxD->IvOffset = LENGTH_802_11; // Set IV offset + memcpy(pTxD->Key, pWpaKey->Key, 16); // Copy TKey + CipherAlg = CIPHER_AES; // Set Cipher suite + } + else + CipherAlg = CIPHER_NONE; + + // + // Only the first fragment required LLC-SNAP header !!! + // + if ((StartOfFrame == TRUE) && (Encapped == TRUE)) + { + // For WEP & no encryption required frame, just copy LLC header into buffer, + // Hardware will do the encryption job. + // For TKIP, we have to calculate MIC and store it first + if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pWpaKey != NULL)) + { + // Calculate MSDU MIC Value + RTMPCalculateMICValue(pAdapter, skb, pEncap, 6, pWpaKey); + } + + // Copy LLC header + memcpy(pDest, pEncap, 6); + pDest += 6; + + // Copy protocol type + pSrc = (PUCHAR) pVirtualAddress; + memcpy(pDest, pSrc + 12, 2); + pDest += 2; + + // Exclude 802.3 header size, we will recalculate the size at + // the end of fragment preparation. + NdisBufferLength -= LENGTH_802_3; + pSrc += LENGTH_802_3; + FreeFragSize -= LENGTH_802_1_H; + } + else if ((StartOfFrame == TRUE) && (Encapped == FALSE)) + { + if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pWpaKey != NULL)) + { + // Calculate MSDU MIC Value + RTMPCalculateMICValue(pAdapter, skb, pEncap, 0, pWpaKey); + } + + pSrc = (PUCHAR) pVirtualAddress + LENGTH_802_3; + NdisBufferLength -= LENGTH_802_3; + } + + // Start copying payload + BytesCopied = 0; + do + { + if (NdisBufferLength >= FreeFragSize) + { + // Copy only the free fragment size, and save the pointer + // of current buffer descriptor for next fragment buffer. + memcpy(pDest, pSrc, FreeFragSize); + BytesCopied += FreeFragSize; + pSrc += FreeFragSize; + pDest += FreeFragSize; + NdisBufferLength -= FreeFragSize; + break; + } + else + { + // Copy the rest of this buffer descriptor pointed data + // into ring buffer. + memcpy(pDest, pSrc, NdisBufferLength); + BytesCopied += NdisBufferLength; + pDest += NdisBufferLength; + FreeFragSize -= NdisBufferLength; + } + + // No more buffer descriptor + // Add MIC value if needed + if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && + (MICFrag == FALSE) && + (pWpaKey != NULL)) + { + INT i; + + NdisBufferLength = 8; // Set length to MIC length + DBGPRINT(RT_DEBUG_INFO, "Calculated TX MIC value ="); + for (i = 0; i < 8; i++) + { + DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PrivateInfo.Tx.MIC[i]); + } + DBGPRINT(RT_DEBUG_INFO, "\n"); + + if (FreeFragSize >= NdisBufferLength) + { + memcpy(pDest, pAdapter->PrivateInfo.Tx.MIC, NdisBufferLength); + BytesCopied += NdisBufferLength; + pDest += NdisBufferLength; + FreeFragSize -= NdisBufferLength; + NdisBufferLength = 0; + RemainSize += 8; // Need to add MIC as payload + } + else + { + memcpy(pDest, pAdapter->PrivateInfo.Tx.MIC, FreeFragSize); + BytesCopied += FreeFragSize; + pSrc = pAdapter->PrivateInfo.Tx.MIC + FreeFragSize; + pDest += FreeFragSize; + NdisBufferLength -= FreeFragSize; + MICFrag = TRUE; + RemainSize += (8 - FreeFragSize); // Need to add MIC as payload + } + } + } while (FALSE); // End of copying payload + + // Real packet size, No 802.1H header for fragments except the first one. + if ((StartOfFrame == TRUE) && (Encapped == TRUE)) + { + TxSize = BytesCopied + LENGTH_802_11 + LENGTH_802_1_H; + } + else + { + TxSize = BytesCopied + LENGTH_802_11; + } + + RemainSize = RemainSize - BytesCopied; + + if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) && (Header_802_11.Controlhead.Frame.Wep == 1)) + { + // IV + ICV which ASIC added after encryption done + TxSize += 8; + } + else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pWpaKey != NULL)) + { + // IV + EIV + ICV which ASIC added after encryption done + TxSize += 12; + } + else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) && (pWpaKey != NULL)) + { + // IV + EIV + HW MIC + TxSize += 16; + } + + // Prepare Tx descriptors before kicking tx. + // The BBP register index in Tx descriptor has to be configured too. +#ifdef BIG_ENDIAN + RTMPFrameEndianChange(pAdapter, pOriginDest, DIR_WRITE, FALSE); + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pDestTxD = TxD; + pTxD = pDestTxD; +#endif + if (Header_802_11.Controlhead.Addr1.Octet[0] & 0x01) + { + // Multicast, retry bit is off + RTMPWriteTxDescriptor(pTxD, TRUE, CipherAlg, FALSE, FALSE, FALSE, RetryMode, FrameGap, + pAdapter->PortCfg.TxRate, 4, TxSize, pAdapter->PortCfg.TxPreambleInUsed, AccessCategory); + } + else + { + RTMPWriteTxDescriptor(pTxD, TRUE, CipherAlg, TRUE, FALSE, FALSE, RetryMode, FrameGap, + pAdapter->PortCfg.TxRate, 4, TxSize, pAdapter->PortCfg.TxPreambleInUsed, AccessCategory); + } + + // Set frame gap for the rest of fragment burst. + // It won't matter if there is only one fragment (single fragment frame). + StartOfFrame = FALSE; + FrameGap = IFS_SIFS; + NumberRequired--; + + // Increase & maintain Tx Ring Index + pAdapter->CurEncryptIndex++; + if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) + { + pAdapter->CurEncryptIndex = 0; + } + + pAdapter->RalinkCounters.EncryptCount++; + + } while (NumberRequired > 0); + +skip_packet_handling: + + // Kick Encrypt Control Register at the end of all ring buffer preparation + RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); + + // Acknowledge protocol send complete of pending packet. + dev_kfree_skb_irq(skb); + + // Make sure to release Tx ring resource + spin_unlock_irqrestore(&pAdapter->TxRingLock, irqflag); + + return (NDIS_STATUS_SUCCESS); +} + +/* + ======================================================================== + + Routine Description: + Calculates the duration which is required to transmit out frames + with given size and specified rate. + + Arguments: + pAdapter Pointer to our adapter + Rate Transmit rate + Size Frame size in units of byte + + Return Value: + Duration number in units of usec + + Note: + + ======================================================================== +*/ +USHORT RTMPCalcDuration( + IN PRTMP_ADAPTER pAdapter, + IN UCHAR Rate, + IN ULONG Size) +{ + ULONG Duration = 0; + + if (Rate < RATE_FIRST_OFDM_RATE) // CCK + { + if ((Rate > RATE_1) && (pAdapter->PortCfg.TxPreambleInUsed == Rt802_11PreambleShort)) + Duration = 96; // 72+24 preamble+plcp + else + Duration = 192; // 144+48 preamble+plcp + + Duration += (USHORT)((Size << 4) / RateIdTo500Kbps[Rate]); + if ((Size << 4) % RateIdTo500Kbps[Rate]) + Duration ++; + } + else // OFDM rates + { + Duration = 20 + 6; // 16+4 preamble+plcp + Signal Extension + Duration += 4 * (USHORT)((11 + Size * 4) / RateIdTo500Kbps[Rate]); + if ((11 + Size * 4) % RateIdTo500Kbps[Rate]) + Duration += 4; + } + + return (USHORT)Duration; + +} + +/* + ======================================================================== + + Routine Description: + Calculates the duration which is required to transmit out frames + with given size and specified rate. + + Arguments: + pTxD Pointer to transmit descriptor + Ack Setting for Ack requirement bit + Fragment Setting for Fragment bit + RetryMode Setting for retry mode + Ifs Setting for IFS gap + Rate Setting for transmit rate + Service Setting for service + Length Frame length + TxPreamble Short or Long preamble when using CCK rates + AccessCategory - 0-3, according to 802.11e/d4.4 June/2003 + + Return Value: + None + + ======================================================================== +*/ +VOID RTMPWriteTxDescriptor( + IN PTXD_STRUC pSourceTxD, + IN BOOLEAN DoEncrypt, + IN UCHAR CipherAlg, + IN BOOLEAN Ack, + IN BOOLEAN Fragment, + IN BOOLEAN InsTimestamp, + IN UCHAR RetryMode, + IN UCHAR Ifs, + IN UINT Rate, + IN UCHAR Service, + IN ULONG Length, + IN USHORT TxPreamble, + IN UCHAR AccessCategory) +{ + UINT Residual; + PTXD_STRUC pTxD; +#ifndef BIG_ENDIAN + pTxD = pSourceTxD; +#else + TXD_STRUC TxD; + + TxD = *pSourceTxD; + pTxD = &TxD; + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); +#endif + + pTxD->MoreFrag = Fragment; + pTxD->ACK = Ack; + pTxD->Timestamp = InsTimestamp; + pTxD->RetryMd = RetryMode; + pTxD->IFS = Ifs; + pTxD->DataByteCnt = Length; + pTxD->TxRate = Rate; + switch (AccessCategory) // 802.11e/d4.4 June/2003 + { + case 3: // TC3, = <1, aCwMin/4, aCwMin/2> + pTxD->CWmin = CW_MIN_IN_BITS - 2; + pTxD->CWmax = CW_MIN_IN_BITS - 1; + pTxD->Aifs = 1; + break; + case 2: // TC2, = <1, aCwMin/2, aCwMin> + pTxD->CWmin = CW_MIN_IN_BITS - 1; + pTxD->CWmax = CW_MIN_IN_BITS; + pTxD->Aifs = 1; + break; + case 1: // TC1, = <1, aCwMin, aCwMax> + pTxD->CWmin = CW_MIN_IN_BITS; + pTxD->CWmax = CW_MAX_IN_BITS; + pTxD->Aifs = 1; + break; + case 0: // TC0, = <2, aCwMin, aCwMax> + default: + pTxD->CWmin = CW_MIN_IN_BITS; + pTxD->CWmax = CW_MAX_IN_BITS; + pTxD->Aifs = 2; + break; + } + + if (Rate < RATE_FIRST_OFDM_RATE) + pTxD->Ofdm = 0; + else + pTxD->Ofdm = 1; + + // fill up PLCP SIGNAL field + pTxD->PlcpSignal = PlcpSignal[Rate]; + if (((Rate == RATE_2) || (Rate == RATE_5_5) || (Rate == RATE_11)) && (TxPreamble == Rt802_11PreambleShort)) // no short preamble for RATE_1 + { + pTxD->PlcpSignal |= 0x0008; + } + + // fill up PLCP SERVICE field, not used for OFDM rates + pTxD->PlcpService = Service; + + // file up PLCP LENGTH_LOW and LENGTH_HIGH fields + Length += 4; + if (Rate < RATE_FIRST_OFDM_RATE) // 11b - RATE_1, RATE_2, RATE_5_5, RATE_11 + { + if ((Rate == RATE_1) || ( Rate == RATE_2)) + { + Length = Length * 8 / (Rate + 1); + } + else + { + Residual = ((Length * 16) % (11 * (1 + Rate - RATE_5_5))); + Length = Length * 16 / (11 * (1 + Rate - RATE_5_5)); + if (Residual != 0) + { + Length++; + } + if ((Residual <= (3 * (1 + Rate - RATE_5_5))) && (Residual != 0)) + { + if (Rate == RATE_11) // Only 11Mbps require length extension bit + pTxD->PlcpService |= 0x80; // 11b's PLCP Length extension bit + } + } + + pTxD->PlcpLengthHigh = Length / 256; + pTxD->PlcpLengthLow = Length % 256; + } + else // OFDM - RATE_6, RATE_9, RATE_12, RATE_18, RATE_24, RATE_36, RATE_48, RATE_54 + { + pTxD->PlcpLengthHigh = Length / 64; // high 6-bit of total byte count + pTxD->PlcpLengthLow = Length % 64; // low 6-bit of total byte count + } + + if (DoEncrypt == TRUE) // Do encryption only + { + pTxD->Owner = DESC_OWN_HOST; + pTxD->Valid = FALSE; + pTxD->CipherAlg = CipherAlg; + pTxD->CipherOwn = DESC_OWN_NIC; + } + else // Hard transmit + { + pTxD->Valid = TRUE; + pTxD->CipherAlg = CIPHER_NONE; + pTxD->CipherOwn = DESC_OWN_HOST; + pTxD->Owner = DESC_OWN_NIC; + } +#ifdef BIG_ENDIAN + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pSourceTxD = *pTxD; +#endif +} + +/* + ======================================================================== + + Routine Description: + Search tuple cache for receive duplicate frame from unicast frames. + + Arguments: + pAdapter Pointer to our adapter + pHeader 802.11 header of receiving frame + + Return Value: + TRUE found matched tuple cache + FALSE no matched found + + Note: + + ======================================================================== +*/ +BOOLEAN RTMPSearchTupleCache( + IN PRTMP_ADAPTER pAdapter, + IN PHEADER_802_11 pHeader) +{ + INT Index; + + for (Index = 0; Index < MAX_CLIENT; Index++) + { + if (pAdapter->TupleCache[Index].Valid == FALSE) + continue; + + if (RTMPEqualMemory(&pAdapter->TupleCache[Index].MAC, &pHeader->Controlhead.Addr2, 6) && + (pAdapter->TupleCache[Index].Sequence == pHeader->Sequence) && + (pAdapter->TupleCache[Index].Frag == pHeader->Frag)) + { +// DBGPRINT(RT_DEBUG_TRACE,("DUPCHECK - duplicate frame hit entry %d\n", Index)); + return (TRUE); + } + } + return (FALSE); +} + +/* + ======================================================================== + + Routine Description: + Update tuple cache for new received unicast frames. + + Arguments: + pAdapter Pointer to our adapter + pHeader 802.11 header of receiving frame + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPUpdateTupleCache( + IN PRTMP_ADAPTER pAdapter, + IN PHEADER_802_11 pHeader) +{ + UCHAR Index; + + for (Index = 0; Index < MAX_CLIENT; Index++) + { + if (pAdapter->TupleCache[Index].Valid == FALSE) + { + // Add new entry + memcpy(&pAdapter->TupleCache[Index].MAC, &pHeader->Controlhead.Addr2, 6); + pAdapter->TupleCache[Index].Sequence = pHeader->Sequence; + pAdapter->TupleCache[Index].Frag = pHeader->Frag; + pAdapter->TupleCache[Index].Valid = TRUE; + pAdapter->TupleCacheLastUpdateIndex = Index; + DBGPRINT(RT_DEBUG_INFO,"DUPCHECK - Add Entry %d, MAC=%02x:%02x:%02x:%02x:%02x:%02x\n", + Index, pAdapter->TupleCache[Index].MAC.Octet[0], pAdapter->TupleCache[Index].MAC.Octet[1], + pAdapter->TupleCache[Index].MAC.Octet[2], pAdapter->TupleCache[Index].MAC.Octet[3], + pAdapter->TupleCache[Index].MAC.Octet[4], pAdapter->TupleCache[Index].MAC.Octet[5]); + return; + } + else if (RTMPEqualMemory(&pAdapter->TupleCache[Index].MAC, &pHeader->Controlhead.Addr2, 6)) + { + // Update old entry + pAdapter->TupleCache[Index].Sequence = pHeader->Sequence; + pAdapter->TupleCache[Index].Frag = pHeader->Frag; + return; + } + } + + // tuple cache full, replace the first inserted one (even though it may not be + // least referenced one) + if (Index == MAX_CLIENT) + { + pAdapter->TupleCacheLastUpdateIndex ++; + if (pAdapter->TupleCacheLastUpdateIndex >= MAX_CLIENT) + pAdapter->TupleCacheLastUpdateIndex = 0; + Index = pAdapter->TupleCacheLastUpdateIndex; + + // replace with new entry + memcpy(&pAdapter->TupleCache[Index].MAC, &pHeader->Controlhead.Addr2, 6); + pAdapter->TupleCache[Index].Sequence = pHeader->Sequence; + pAdapter->TupleCache[Index].Frag = pHeader->Frag; + pAdapter->TupleCache[Index].Valid = TRUE; + DBGPRINT(RT_DEBUG_INFO,"DUPCHECK - replace Entry %d, MAC=%02x:%02x:%02x:%02x:%02x:%02x\n", + Index, pAdapter->TupleCache[Index].MAC.Octet[0], pAdapter->TupleCache[Index].MAC.Octet[1], + pAdapter->TupleCache[Index].MAC.Octet[2], pAdapter->TupleCache[Index].MAC.Octet[3], + pAdapter->TupleCache[Index].MAC.Octet[4], pAdapter->TupleCache[Index].MAC.Octet[5]); + } +} + +/* + ======================================================================== + + Routine Description: + Suspend MSDU transmission + + Arguments: + pAdapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPSuspendMsduTransmission( + IN PRTMP_ADAPTER pAdapter) +{ + DBGPRINT(RT_DEBUG_TRACE,"SCANNING, suspend MSDU transmission ...\n"); + RTMP_SET_FLAG(pAdapter, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS); +} + +/* + ======================================================================== + + Routine Description: + Resume MSDU transmission + + Arguments: + pAdapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPResumeMsduTransmission( + IN PRTMP_ADAPTER pAdapter) +{ + DBGPRINT(RT_DEBUG_INFO,"SCAN done, resume MSDU transmission ...\n"); + RTMP_CLEAR_FLAG(pAdapter, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS); + + // Dequeue Tx queue if Reset is not in progress + if ((!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RESET_IN_PROGRESS)) && + (!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF))) + { + //RTMPDeQueuePacket(pAdapter, &pAdapter->TxSwQueue0); + // Call dequeue without selected queue, let the subroutine select the right priority + // Tx software queue + RTMPDeQueuePacket(pAdapter); + } +} + +/* + ======================================================================== + + Routine Description: + Apply packet filter policy, return NDIS_STATUS_FAILURE if this frame + should be dropped. + + Arguments: + pAdapter Pointer to our adapter + pRxD Pointer to the Rx descriptor + pHeader Pointer to the 802.11 frame header + + Return Value: + NDIS_STATUS_SUCCESS Accept frame + NDIS_STATUS_FAILURE Drop Frame + + Note: + Maganement frame should bypass this filtering rule. + + ======================================================================== +*/ +NDIS_STATUS RTMPApplyPacketFilter( + IN PRTMP_ADAPTER pAdapter, + IN PRXD_STRUC pRxD, + IN PHEADER_802_11 pHeader) +{ + UCHAR i; + + // 0. Management frame should bypass all these filtering rules. + if (pHeader->Controlhead.Frame.Type == BTYPE_MGMT) + { + return(NDIS_STATUS_SUCCESS); + } + + // 0.1 Drop all Rx frames if MIC countermeasures kicks in + if (pAdapter->PortCfg.MicErrCnt >= 2) + { + return(NDIS_STATUS_FAILURE); + } + + // 1. Drop unicast to me packet if NDIS_PACKET_TYPE_DIRECTED is FALSE + if (pRxD->U2M) + { + if (pAdapter->bAcceptDirect == FALSE) + { + return(NDIS_STATUS_FAILURE); + } + } + + // 2. Drop broadcast packet if NDIS_PACKET_TYPE_BROADCAST is FALSE + else if (pRxD->Bcast) + { + if (pAdapter->bAcceptBroadcast == FALSE) + { + return(NDIS_STATUS_FAILURE); + } + } + + // 3. Drop multicast packet if NDIS_PACKET_TYPE_ALL_MULTICAST is false + // and NDIS_PACKET_TYPE_MULTICAST is false. + // If NDIS_PACKET_TYPE_MULTICAST is true, but NDIS_PACKET_TYPE_ALL_MULTICAST is false. + // We have to deal with multicast table lookup & drop not matched packets. + else if (pRxD->Mcast) + { + if (pAdapter->bAcceptAllMulticast == FALSE) + { + if (pAdapter->bAcceptMulticast == FALSE) + { + return(NDIS_STATUS_FAILURE); + } + else + { + // Selected accept multicast packet based on multicast table + for (i = 0; i < pAdapter->NumberOfMcAddresses; i++) + { + if (RTMPEqualMemory(&pHeader->Controlhead.Addr1, pAdapter->McastTable[i], ETH_ALEN)) + { + break; // Matched + } + } + + // Not matched + if (i == pAdapter->NumberOfMcAddresses) + { + DBGPRINT(RT_DEBUG_INFO,"Drop multicast %02x:%02x:%02x:%02x:%02x:%02x\n", + pHeader->Controlhead.Addr1.Octet[0], pHeader->Controlhead.Addr1.Octet[1], + pHeader->Controlhead.Addr1.Octet[2], pHeader->Controlhead.Addr1.Octet[3], + pHeader->Controlhead.Addr1.Octet[4], pHeader->Controlhead.Addr1.Octet[5]); + return(NDIS_STATUS_FAILURE); + } + else + { + DBGPRINT(RT_DEBUG_INFO,"Accept multicast %02x:%02x:%02x:%02x:%02x:%02x\n", + pHeader->Controlhead.Addr1.Octet[0], pHeader->Controlhead.Addr1.Octet[1], + pHeader->Controlhead.Addr1.Octet[2], pHeader->Controlhead.Addr1.Octet[3], + pHeader->Controlhead.Addr1.Octet[4], pHeader->Controlhead.Addr1.Octet[5]); + } + } + } + } + + // 4. Not U2M, not Mcast, not Bcast, must be unicast to other DA. + // Since we did not implement promiscuous mode, just drop this kind of packet for now. + else if (pAdapter->bAcceptPromiscuous == FALSE) + { + return(NDIS_STATUS_FAILURE); + } + + return(NDIS_STATUS_SUCCESS); +} + +/* + ======================================================================== + + Routine Description: + Check and fine the packet waiting in SW queue with highest priority + + Arguments: + pAdapter Pointer to our adapter + + Return Value: + pQueue Pointer to Waiting Queue + + Note: + + ======================================================================== +*/ +struct sk_buff_head* RTMPCheckTxSwQueue( + IN PRTMP_ADAPTER pAdapter, + OUT UCHAR *AccessCategory) +{ + if (!skb_queue_empty(&pAdapter->TxSwQueue3)) + { + *AccessCategory = 3; + return (&pAdapter->TxSwQueue3); + } + else if (!skb_queue_empty(&pAdapter->TxSwQueue2)) + { + *AccessCategory = 2; + return (&pAdapter->TxSwQueue2); + } + else if (!skb_queue_empty(&pAdapter->TxSwQueue1)) + { + *AccessCategory = 1; + return (&pAdapter->TxSwQueue1); + } + else if (!skb_queue_empty(&pAdapter->TxSwQueue0)) + { + *AccessCategory = 0; + return (&pAdapter->TxSwQueue0); + } + + // No packet pending in Tx Sw queue + *AccessCategory = 0; + return (NULL); +} + +/* + ======================================================================== + + Routine Description: + Process MIC error indication and record MIC error timer. + + Arguments: + pAdapter Pointer to our adapter + pWpaKey Pointer to the WPA key structure + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPReportMicError( + IN PRTMP_ADAPTER pAdapter, + IN PWPA_KEY pWpaKey) +{ + ULONG Now; + struct + { + NDIS_802_11_STATUS_INDICATION Status; + NDIS_802_11_AUTHENTICATION_REQUEST Request; + } Report; + + // 0. Set Status to indicate auth error + Report.Status.StatusType = Ndis802_11StatusType_Authentication; + + // 1. Check for Group or Pairwise MIC error + if (pWpaKey->Type == PAIRWISE_KEY) + Report.Request.Flags = NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR; + else + Report.Request.Flags = NDIS_802_11_AUTH_REQUEST_GROUP_ERROR; + + // 2. Copy AP MAC address + memcpy(Report.Request.Bssid, pWpaKey->BssId, 6); + + // 3. Calculate length + Report.Request.Length = sizeof(NDIS_802_11_AUTHENTICATION_REQUEST); + + // 4. Record Last MIC error time and count + Now = jiffies; + if (pAdapter->PortCfg.MicErrCnt == 0) + { + pAdapter->PortCfg.MicErrCnt++; + pAdapter->PortCfg.LastMicErrorTime = Now; + } + else if (pAdapter->PortCfg.MicErrCnt == 1) + { + if ((pAdapter->PortCfg.LastMicErrorTime + (60 * HZ)) < Now) + { + // Update Last MIC error time, this did not violate two MIC errors within 60 seconds + pAdapter->PortCfg.LastMicErrorTime = Now; + } + else + { + pAdapter->PortCfg.LastMicErrorTime = Now; + // Violate MIC error counts, MIC countermeasures kicks in + pAdapter->PortCfg.MicErrCnt++; + // We shall block all reception + // We shall clean all Tx ring and disassoicate from AP after next EAPOL frame + RTMPRingCleanUp(pAdapter, TX_RING); + } + } + else + { + // MIC error count >= 2 + // This should not happen + ; + } +} --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/sync.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/sync.c @@ -1,1510 +1,1517 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: sync.c - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * MarkW 8th Dec 04 Baseline code - * MarkW 10th Dec 04 Rolled in Ralink 1.4.5.0 -* MarkW 5th Jun 05 Fix no-SSID broadcasting assoc. - ***************************************************************************/ - -#include "rt_config.h" - -// 2.4 Ghz channel plan -UCHAR Ra24Ghz_FCC[] = {1,2,3,4,5,6,7,8,9,10,11}; -UCHAR Ra24Ghz_IC[] = {1,2,3,4,5,6,7,8,9,10,11}; -UCHAR Ra24Ghz_ESTI[]= {1,2,3,4,5,6,7,8,9,10,11,12,13}; -UCHAR Ra24Ghz_SPAIN[] = {10,11}; -UCHAR Ra24Ghz_FRANCE[] = {10,11,12,13}; -UCHAR Ra24Ghz_MKK[] = {14}; -UCHAR Ra24Ghz_MKK1[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14}; -UCHAR Ra24Ghz_ISRAEL[] = {3,4,5,6,7,8,9}; - -// 5 Ghz channel plan -UCHAR Ra5Ghz_UNII[] = {36,40,44,48,52,56,60,64, 149,153,157,161}; -UCHAR Ra5Ghz_MMAC[] = {34,38,42,46}; -UCHAR Ra5Ghz_HyperLAN2[] = {36,40,44,48,52,56,60,64, 100,104,108,112,116,120,124,128,132,136,140}; - -extern UCHAR CipherSuiteWpaNoneTkip[]; -extern UCHAR CipherSuiteWpaNoneTkipLen; - -extern UCHAR CipherSuiteWpaNoneAes[]; -extern UCHAR CipherSuiteWpaNoneAesLen; - -/* - ========================================================================== - Description: - The sync state machine, - Parameters: - Sm - pointer to the state machine - Note: - the state machine looks like the following - - Column 1-2 - SYNC_IDLE JOIN_WAIT_BEACON - MT2_MLME_SCAN_REQ mlme_scan_req_action invalid_state_when_scan - MT2_MLME_JOIN_REQ mlme_join_req_action invalid_state_when_join - MT2_MLME_START_REQ mlme_start_req_action invalid_state_when_start - MT2_PEER_BEACON peer_beacon peer_beacon_at_join_wait_beacon_action - MT2_PEER_PROBE_RSP peer_beacon drop - MT2_PEER_ATIM drop drop - MT2_SCAN_TIMEOUT Drop Drop - MT2_BEACON_TIMEOUT Drop beacon_timeout_at_join_wait_beacon_action - MT2_ATIM_TIMEOUT Drop Drop - MT2_PEER_PROBE_REQ ???? drop - - column 3 - SCAN_LISTEN - MT2_MLME_SCAN_REQ invalid_state_when_scan - MT2_MLME_JOIN_REQ invalid_state_when_join - MT2_MLME_START_REQ invalid_state_when_start - MT2_PEER_BEACON peer_beacon_at_scan_action - MT2_PEER_PROBE_RSP peer_probe_rsp_at_scan_action - MT2_PEER_ATIM drop - MT2_SCAN_TIMEOUT scan_timeout_action - MT2_BEACON_TIMEOUT Drop - MT2_ATIM_TIMEOUT Drop - MT2_PEER_PROBE_REQ drop - ========================================================================== - */ -VOID SyncStateMachineInit( - IN PRTMP_ADAPTER pAd, - IN STATE_MACHINE *Sm, - OUT STATE_MACHINE_FUNC Trans[]) -{ - StateMachineInit(Sm, (STATE_MACHINE_FUNC*)Trans, MAX_SYNC_STATE, MAX_SYNC_MSG, (STATE_MACHINE_FUNC)Drop, SYNC_IDLE, SYNC_MACHINE_BASE); - - // column 1 - StateMachineSetAction(Sm, SYNC_IDLE, MT2_MLME_SCAN_REQ, (STATE_MACHINE_FUNC)MlmeScanReqAction); - StateMachineSetAction(Sm, SYNC_IDLE, MT2_MLME_JOIN_REQ, (STATE_MACHINE_FUNC)MlmeJoinReqAction); - StateMachineSetAction(Sm, SYNC_IDLE, MT2_MLME_START_REQ, (STATE_MACHINE_FUNC)MlmeStartReqAction); - StateMachineSetAction(Sm, SYNC_IDLE, MT2_PEER_BEACON, (STATE_MACHINE_FUNC)PeerBeacon); -// StateMachineSetAction(Sm, SYNC_IDLE, MT2_PEER_PROBE_RSP, (STATE_MACHINE_FUNC)PeerBeacon); - StateMachineSetAction(Sm, SYNC_IDLE, MT2_PEER_PROBE_REQ, (STATE_MACHINE_FUNC)PeerProbeReqAction); - - //column 2 - StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_MLME_SCAN_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenScan); - StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_MLME_JOIN_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenJoin); - StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_MLME_START_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenStart); - StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_PEER_BEACON, (STATE_MACHINE_FUNC)PeerBeaconAtJoinAction); - StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_BEACON_TIMEOUT, (STATE_MACHINE_FUNC)BeaconTimeoutAtJoinAction); - - // column 3 - StateMachineSetAction(Sm, SCAN_LISTEN, MT2_MLME_SCAN_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenScan); - StateMachineSetAction(Sm, SCAN_LISTEN, MT2_MLME_JOIN_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenJoin); - StateMachineSetAction(Sm, SCAN_LISTEN, MT2_MLME_START_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenStart); - StateMachineSetAction(Sm, SCAN_LISTEN, MT2_PEER_BEACON, (STATE_MACHINE_FUNC)PeerBeaconAtScanAction); - StateMachineSetAction(Sm, SCAN_LISTEN, MT2_PEER_PROBE_RSP, (STATE_MACHINE_FUNC)PeerBeaconAtScanAction); - StateMachineSetAction(Sm, SCAN_LISTEN, MT2_SCAN_TIMEOUT, (STATE_MACHINE_FUNC)ScanTimeoutAction); - - // timer init - RTMPInitTimer(pAd, &pAd->Mlme.SyncAux.BeaconTimer, BeaconTimeout); - RTMPInitTimer(pAd, &pAd->Mlme.SyncAux.ScanTimer, ScanTimeout); -} - -/* - ========================================================================== - Description: - Becaon timeout handler, executed in timer thread - ========================================================================== - */ -VOID BeaconTimeout( - IN unsigned long data) -{ - RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; - - DBGPRINT(RT_DEBUG_TRACE,"SYNC - BeaconTimeout\n"); - MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_BEACON_TIMEOUT, 0, NULL); - MlmeHandler(pAd); -} - -/* - ========================================================================== - Description: - ATIM timeout handler, executed in timer thread - ========================================================================== - */ -VOID AtimTimeout( - IN unsigned long data) -{ - RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; - - DBGPRINT(RT_DEBUG_TRACE,"SYNC - AtimTimeout \n"); - MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_ATIM_TIMEOUT, 0, NULL); - MlmeHandler(pAd); -} - -/* - ========================================================================== - Description: - Scan timeout handler, executed in timer thread - ========================================================================== - */ -VOID ScanTimeout( - IN unsigned long data) -{ - RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; - - DBGPRINT(RT_DEBUG_INFO,"SYNC - Scan Timeout \n"); - MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_SCAN_TIMEOUT, 0, NULL); - MlmeHandler(pAd); -} - -/* - ========================================================================== - Description: - MLME SCAN req state machine procedure - ========================================================================== - */ -VOID MlmeScanReqAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - UCHAR Ssid[MAX_LEN_OF_SSID], SsidLen, ScanType, BssType; - ULONG Now; - - // Suspend MSDU transmission here - RTMPSuspendMsduTransmission(pAd); - - // first check the parameter sanity - if (MlmeScanReqSanity(pAd, - Elem->Msg, - Elem->MsgLen, - &BssType, - Ssid, - &SsidLen, - &ScanType)) - { - DBGPRINT(RT_DEBUG_TRACE, "SYNC - MlmeScanReqAction\n"); - Now = jiffies; - pAd->PortCfg.LastScanTime = Now; - // reset all the timers - RTMPCancelTimer(&pAd->Mlme.SyncAux.BeaconTimer); - RTMPCancelTimer(&pAd->Mlme.SyncAux.ScanTimer); - - // record desired BSS parameters - pAd->Mlme.SyncAux.BssType = BssType; - pAd->Mlme.SyncAux.ScanType = ScanType; - pAd->Mlme.SyncAux.SsidLen = SsidLen; - memcpy(pAd->Mlme.SyncAux.Ssid, Ssid, SsidLen); - - // start from the first channel - pAd->Mlme.SyncAux.Channel = FirstChannel(pAd); - ScanNextChannel(pAd); - } - else - { - printk(KERN_ERR DRV_NAME "SYNC - MlmeScanReqAction() sanity check fail. BUG!!!\n"); - pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; - MlmeCntlConfirm(pAd, MT2_SCAN_CONF, MLME_INVALID_FORMAT); - } -} - -/* - ========================================================================== - Description: - MLME JOIN req state machine procedure - ========================================================================== - */ -VOID MlmeJoinReqAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - BSS_ENTRY *pBss; - MLME_JOIN_REQ_STRUCT *Info = (MLME_JOIN_REQ_STRUCT *)(Elem->Msg); - - DBGPRINT(RT_DEBUG_TRACE, "SYNC - MlmeJoinReqAction(BSS #%d)\n", Info->BssIdx); - - // reset all the timers - RTMPCancelTimer(&pAd->Mlme.SyncAux.ScanTimer); - RTMPCancelTimer(&pAd->Mlme.SyncAux.BeaconTimer); - - pBss = &pAd->Mlme.CntlAux.SsidBssTab.BssEntry[Info->BssIdx]; - - // record the desired SSID & BSSID we're waiting for - COPY_MAC_ADDR(&pAd->Mlme.SyncAux.Bssid, &pBss->Bssid); - memcpy(pAd->Mlme.SyncAux.Ssid, pBss->Ssid, pBss->SsidLen); - pAd->Mlme.SyncAux.SsidLen = pBss->SsidLen; - - // switch channel and waiting for beacon timer - AsicSwitchChannel(pAd, pBss->Channel); - AsicLockChannel(pAd, pBss->Channel); - DBGPRINT(RT_DEBUG_TRACE, "SYNC - Switch to channel %d, SSID %s \n", pBss->Channel, pAd->Mlme.SyncAux.Ssid); - DBGPRINT(RT_DEBUG_TRACE, "SYNC - Wait BEACON from %02x:%02x:%02x:%02x:%02x:%02x ...\n", - pAd->Mlme.SyncAux.Bssid.Octet[0], pAd->Mlme.SyncAux.Bssid.Octet[1], - pAd->Mlme.SyncAux.Bssid.Octet[2], pAd->Mlme.SyncAux.Bssid.Octet[3], - pAd->Mlme.SyncAux.Bssid.Octet[4], pAd->Mlme.SyncAux.Bssid.Octet[5]); - RTMPSetTimer(pAd, &pAd->Mlme.SyncAux.BeaconTimer, JOIN_TIMEOUT); - - pAd->Mlme.SyncMachine.CurrState = JOIN_WAIT_BEACON; -} - -/* - ========================================================================== - Description: - MLME START Request state machine procedure, starting an IBSS - ========================================================================== - */ -VOID MlmeStartReqAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - UCHAR Ssid[MAX_LEN_OF_SSID], SsidLen; - - // New for WPA security suites - UCHAR VarIE[MAX_VIE_LEN]; // Total VIE length = MAX_VIE_LEN - -5 - NDIS_802_11_VARIABLE_IEs *pVIE = NULL; - LARGE_INTEGER TimeStamp; - BOOLEAN Privacy; -#ifdef SINGLE_ADHOC_LINKUP - ULONG Bssidx; - BOOLEAN CfExist = FALSE; - CF_PARM CfParm; -#endif - - // Init Variable IE structure - pVIE = (PNDIS_802_11_VARIABLE_IEs) VarIE; - pVIE->Length = 0; - TimeStamp.vv.LowPart = 0; - TimeStamp.vv.HighPart = 0; - - if (MlmeStartReqSanity(pAd, Elem->Msg, Elem->MsgLen, Ssid, &SsidLen)) - { - // reset all the timers - RTMPCancelTimer(&pAd->Mlme.SyncAux.ScanTimer); - RTMPCancelTimer(&pAd->Mlme.SyncAux.BeaconTimer); - - // PortCfg.PrivacyInvoked should have been set via OID_802_11_WEP_STATUS. - // pAd->PortCfg.PrivacyInvoked = FALSE; - - memcpy(pAd->PortCfg.Ssid, Ssid, SsidLen); - pAd->PortCfg.SsidLen = SsidLen; - pAd->PortCfg.BssType = BSS_INDEP; - Privacy = (pAd->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) || - (pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) || - (pAd->PortCfg.WepStatus == Ndis802_11Encryption3Enabled); - pAd->PortCfg.CapabilityInfo = CAP_GENERATE(0,1,0,0,Privacy, (pAd->PortCfg.WindowsTxPreamble == Rt802_11PreambleShort)); - pAd->PortCfg.BeaconPeriod = pAd->PortCfg.IbssConfig.BeaconPeriod; - pAd->PortCfg.AtimWin = pAd->PortCfg.IbssConfig.AtimWin; - pAd->PortCfg.Channel = pAd->PortCfg.IbssConfig.Channel; - if ((pAd->PortCfg.PhyMode == PHY_11ABG_MIXED) && (pAd->PortCfg.Channel > 14)) - { - // no 1,2,5.5,11 Mbps when in 5Ghz band - pAd->PortCfg.SupportedRatesLen = pAd->PortCfg.IbssConfig.SupportedRatesLen - 4; - memset(pAd->PortCfg.SupportedRates, 0, MAX_LEN_OF_SUPPORTED_RATES); - memcpy(pAd->PortCfg.SupportedRates, &pAd->PortCfg.IbssConfig.SupportedRates[4], MAX_LEN_OF_SUPPORTED_RATES - 4); - } - else - { - pAd->PortCfg.SupportedRatesLen = pAd->PortCfg.IbssConfig.SupportedRatesLen; - memcpy(pAd->PortCfg.SupportedRates, pAd->PortCfg.IbssConfig.SupportedRates, MAX_LEN_OF_SUPPORTED_RATES); - } -// pAd->PortCfg.Pss = PWR_ACTIVE; - - // generate a radom number as BSSID - MacAddrRandomBssid(pAd, &pAd->PortCfg.Bssid); - AsicSetBssid(pAd, &pAd->PortCfg.Bssid); - AsicSwitchChannel(pAd, pAd->PortCfg.Channel); - AsicLockChannel(pAd, pAd->PortCfg.Channel); - - DBGPRINT(RT_DEBUG_TRACE, "SYNC - MlmeStartReqAction(ch= %d,supported rate len= %d)\n", - pAd->PortCfg.Channel, pAd->PortCfg.SupportedRatesLen); - -#ifdef SINGLE_ADHOC_LINKUP - // Add itself as the entry within BSS table - Bssidx = BssTableSearch(&pAd->PortCfg.BssTab, &pAd->PortCfg.Bssid); - if (Bssidx == BSS_NOT_FOUND) - { - Bssidx = BssTableSetEntry(pAd, &pAd->PortCfg.BssTab, &pAd->PortCfg.Bssid, - Ssid, SsidLen, pAd->PortCfg.BssType, pAd->PortCfg.BeaconPeriod, - CfExist, &CfParm, pAd->PortCfg.AtimWin, pAd->PortCfg.CapabilityInfo, - pAd->PortCfg.SupportedRates, pAd->PortCfg.SupportedRatesLen, TRUE, - pAd->PortCfg.Channel, Elem->Rssi, TimeStamp, pVIE); - } -#endif - - pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; - MlmeCntlConfirm(pAd, MT2_START_CONF, (USHORT)MLME_SUCCESS); - } - else - { - printk(KERN_ERR DRV_NAME "SYNC - MlmeStartReqAction() sanity check fail. BUG!!!\n"); - pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; - MlmeCntlConfirm(pAd, MT2_START_CONF, MLME_INVALID_FORMAT); - } -} - -/* - ========================================================================== - Description: - peer sends beacon back when scanning - ========================================================================== - */ -VOID PeerBeaconAtScanAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MACADDR Bssid, Addr2; - UCHAR Ssid[MAX_LEN_OF_SSID], BssType, Channel, Rates[MAX_LEN_OF_SUPPORTED_RATES], RatesLen, - SsidLen, DtimCount, DtimPeriod, BcastFlag, MessageToMe, Legacy; - CF_PARM CfParm; - USHORT BeaconPeriod, AtimWin, CapabilityInfo; - MACFRAME *Fr; - LARGE_INTEGER TimeStamp; - BOOLEAN CfExist = FALSE; - BOOLEAN ExtendedRateIeExist; - UCHAR Erp; - UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES], ExtRate[MAX_LEN_OF_SUPPORTED_RATES]; - UCHAR SupRateLen, ExtRateLen; - - // New for WPA security suites - UCHAR VarIE[MAX_VIE_LEN]; // Total VIE length = MAX_VIE_LEN - -5 - NDIS_802_11_VARIABLE_IEs *pVIE = NULL; - - // NdisFillMemory(Ssid, MAX_LEN_OF_SSID, 0x00); - Fr = (MACFRAME *) Elem->Msg; - // Init Variable IE structure - pVIE = (PNDIS_802_11_VARIABLE_IEs) VarIE; - pVIE->Length = 0; - if (PeerBeaconAndProbeRspSanity(pAd, - Elem->Msg, - Elem->MsgLen, - &Addr2, - &Bssid, Ssid, - &SsidLen, - &BssType, - &BeaconPeriod, - &Channel, - &TimeStamp, - &CfExist, - &CfParm, - &AtimWin, - &CapabilityInfo, - Rates, - &RatesLen, - &ExtendedRateIeExist, - &Erp, - &DtimCount, - &DtimPeriod, - &BcastFlag, - &MessageToMe, - &Legacy, - SupRate, - &SupRateLen, - ExtRate, - &ExtRateLen, - pVIE)) - { - ULONG Idx; - UCHAR Rssi = 0; - - // This correct im-proper RSSI indication during SITE SURVEY issue. - // Always report bigger RSSI during SCANNING when receiving multiple BEACONs from the same AP. - // This case happens because BEACONs come from adjacent channels, so RSSI become weaker as we - // switch to more far away channels. - Idx = BssTableSearch(&pAd->PortCfg.BssTab, &Bssid); - if (Idx != BSS_NOT_FOUND) - Rssi = pAd->PortCfg.BssTab.BssEntry[Idx].Rssi; - if (Elem->Rssi > Rssi) - Rssi = Elem->Rssi; - - DBGPRINT(RT_DEBUG_INFO, "SYNC - PeerBeaconAtScanAction (Subtype=%d, SsidLen=%d, Ssid=%s)\n", Fr->Hdr.SubType, SsidLen,Ssid); - - // Mask out unnecessary capability information - CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; - - BssTableSetEntry(pAd, &pAd->PortCfg.BssTab, &Bssid, Ssid, SsidLen, BssType, - BeaconPeriod, CfExist, &CfParm, AtimWin, CapabilityInfo, Rates, - RatesLen, ExtendedRateIeExist, Channel, Rssi, TimeStamp, pVIE); - } - // sanity check fail, ignored -} - -/* - ========================================================================== - Description: - When waiting joining the (I)BSS, beacon received from external - ========================================================================== - */ -VOID PeerBeaconAtJoinAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MACADDR Bssid, Addr2; - UCHAR Ssid[MAX_LEN_OF_SSID], SsidLen, BssType, Channel, RatesLen, MessageToMe, - Rates[MAX_LEN_OF_SUPPORTED_RATES], DtimCount, DtimPeriod, BcastFlag, Legacy; - LARGE_INTEGER TimeStamp; - USHORT BeaconPeriod, AtimWin, CapabilityInfo; - CF_PARM Cf; - BOOLEAN CfExist = FALSE, ExtendedRateIeExist; - UCHAR Erp; - UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES], ExtRate[MAX_LEN_OF_SUPPORTED_RATES]; - UCHAR SupRateLen, ExtRateLen; - - // New for WPA security suites - UCHAR VarIE[MAX_VIE_LEN]; // Total VIE length = MAX_VIE_LEN - -5 - NDIS_802_11_VARIABLE_IEs *pVIE = NULL; - - // Init Variable IE structure - pVIE = (PNDIS_802_11_VARIABLE_IEs) VarIE; - pVIE->Length = 0; - if (PeerBeaconAndProbeRspSanity(pAd, - Elem->Msg, - Elem->MsgLen, - &Addr2, - &Bssid, - Ssid, - &SsidLen, - &BssType, - &BeaconPeriod, - &Channel, - &TimeStamp, - &CfExist, - &Cf, - &AtimWin, - &CapabilityInfo, - Rates, - &RatesLen, - &ExtendedRateIeExist, - &Erp, - &DtimCount, - &DtimPeriod, - &BcastFlag, - &MessageToMe, - &Legacy, - SupRate, - &SupRateLen, - ExtRate, - &ExtRateLen, - pVIE)) - { - // Disqualify 11b only adhoc when we are in 11g only adhoc mode - if ((BssType == BSS_INDEP) && (pAd->PortCfg.AdhocMode == 2) && (RatesLen < 12)) - return; - - if (MAC_ADDR_EQUAL(&pAd->Mlme.SyncAux.Bssid, &Bssid)) - { - DBGPRINT(RT_DEBUG_TRACE, "SYNC - receive desired BEACON at JoinWaitBeacon...\n"); - RTMPCancelTimer(&pAd->Mlme.SyncAux.BeaconTimer); - - // Update RSSI to prevent No signal display when cards first initialized - pAd->PortCfg.LastRssi = Elem->Rssi; - pAd->PortCfg.AvgRssi = Elem->Rssi; - - if (pAd->Mlme.SyncAux.SsidLen > 0) - { - memcpy(pAd->PortCfg.Ssid, pAd->Mlme.SyncAux.Ssid, pAd->Mlme.SyncAux.SsidLen); - pAd->PortCfg.SsidLen = pAd->Mlme.SyncAux.SsidLen; - } - else - { - memcpy(pAd->PortCfg.Ssid, Ssid, SsidLen); - pAd->PortCfg.SsidLen = SsidLen; - } - - COPY_MAC_ADDR(&pAd->PortCfg.Bssid, &Bssid); - AsicSetBssid(pAd, &pAd->PortCfg.Bssid); - - pAd->PortCfg.BssType = BssType; - pAd->PortCfg.BeaconPeriod = BeaconPeriod; - pAd->PortCfg.Channel = Channel; - - // filter out non-supported rates - { - int i; - pAd->PortCfg.SupportedRatesLen = 0; - for (i=0;iPortCfg.PhyMode == PHY_11B) && - (Rate == 2 || Rate == 4 || Rate == 11 || Rate == 22)) - { - ///DBGPRINT(RT_DEBUG_TRACE, ("SYNC - Supported Rate[%d] = 0x%02x\n",pAd->PortCfg.SupportedRatesLen, Rates[i])); - pAd->PortCfg.SupportedRates[pAd->PortCfg.SupportedRatesLen] = Rates[i]; - pAd->PortCfg.SupportedRatesLen ++; - } - else if ((Rate == 2 || Rate == 4 || Rate == 11 || Rate == 22) || - (Rate == 12 || Rate == 18 || Rate == 24 || Rate == 36) || - (Rate == 48 || Rate == 72 || Rate == 96 || Rate == 108)) - { - // DBGPRINT(RT_DEBUG_TRACE, ("SYNC - Supported Rate[%d] = 0x%02x\n",pAd->PortCfg.SupportedRatesLen, Rates[i])); - pAd->PortCfg.SupportedRates[pAd->PortCfg.SupportedRatesLen] = Rates[i]; - pAd->PortCfg.SupportedRatesLen ++; - } - } - } - - // Copy AP's supported rate to portcfg for creating assoication request - // Also filter out not supported rate - // Supported rate - { - int i; - pAd->PortCfg.SupRateLen = 0; - for (i = 0; i < SupRateLen; i++) - { - UCHAR Rate = SupRate[i] & 0x7f; - if ((pAd->PortCfg.PhyMode == PHY_11B) && - (Rate == 2 || Rate == 4 || Rate == 11 || Rate == 22)) - { - pAd->PortCfg.SupRate[pAd->PortCfg.SupRateLen] = SupRate[i]; - pAd->PortCfg.SupRateLen ++; - } - else if ((Rate == 2 || Rate == 4 || Rate == 11 || Rate == 22) || - (Rate == 12 || Rate == 18 || Rate == 24 || Rate == 36) || - (Rate == 48 || Rate == 72 || Rate == 96 || Rate == 108)) - { - pAd->PortCfg.SupRate[pAd->PortCfg.SupRateLen] = SupRate[i]; - pAd->PortCfg.SupRateLen ++; - } - } - } - - // Copy AP's supported rate to portcfg for creating assoication request - // Also filter out not supported rate - // Extended rate - if (ExtendedRateIeExist == TRUE) - { - int i; - pAd->PortCfg.ExtRateLen = 0; - for (i = 0; i < ExtRateLen; i++) - { - UCHAR Rate = ExtRate[i] & 0x7f; - if ((pAd->PortCfg.PhyMode == PHY_11B) && - (Rate == 2 || Rate == 4 || Rate == 11 || Rate == 22)) - { - pAd->PortCfg.ExtRate[pAd->PortCfg.ExtRateLen] = ExtRate[i]; - pAd->PortCfg.ExtRateLen ++; - } - else if ((Rate == 2 || Rate == 4 || Rate == 11 || Rate == 22) || - (Rate == 12 || Rate == 18 || Rate == 24 || Rate == 36) || - (Rate == 48 || Rate == 72 || Rate == 96 || Rate == 108)) - { - pAd->PortCfg.ExtRate[pAd->PortCfg.ExtRateLen] = ExtRate[i]; - pAd->PortCfg.ExtRateLen ++; - } - } - } - else - { - pAd->PortCfg.ExtRateLen = 0; - } - - DBGPRINT(RT_DEBUG_TRACE, "SYNC - AP's SupportedRatesLen=%d, set STA's SupportedRateLen=%d\n", - RatesLen, pAd->PortCfg.SupportedRatesLen); - - // Mask out unnecessary capability information - CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; - - // Check for 802.11g information, if 802.11 b/g mixed mode. - // We can't support its short preamble for now. - pAd->PortCfg.CapabilityInfo = CapabilityInfo; - - if ((BssType == BSS_INDEP) && (CAP_IS_IBSS_ON(CapabilityInfo))) - { - pAd->PortCfg.AtimWin = AtimWin; - } - else if (BssType == BSS_INFRA) - { - pAd->PortCfg.CfpPeriod = Cf.CfpPeriod; - pAd->PortCfg.CfpMaxDuration = Cf.CfpMaxDuration; - pAd->PortCfg.CfpDurRemain = Cf.CfpDurRemaining; - pAd->PortCfg.CfpCount = Cf.CfpCount; - pAd->PortCfg.CfpPeriod = Cf.CfpPeriod; - - AsicEnableBssSync(pAd); - } - - pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; - MlmeCntlConfirm(pAd, MT2_JOIN_CONF, MLME_SUCCESS); - } - // not to me BEACON, ignored - } - // sanity check fail, ignore this frame -} - -/* - ========================================================================== - Description: - receive BEACON from peer - ========================================================================== - */ -VOID PeerBeacon( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MACADDR Bssid, Addr2; - CHAR Ssid[MAX_LEN_OF_SSID]; - CF_PARM CfParm; - UCHAR SsidLen, MessageToMe=0, BssType, Channel, Rates[MAX_LEN_OF_SUPPORTED_RATES]; - UCHAR RatesLen, DtimCount=0, DtimPeriod=0, BcastFlag=0, Legacy; - USHORT CapabilityInfo, AtimWin, BeaconPeriod; - LARGE_INTEGER TimeStamp; - BOOLEAN CfExist = FALSE; - USHORT TbttNumToNextWakeUp; - BOOLEAN ExtendedRateIeExist; - UCHAR Erp; - UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES], ExtRate[MAX_LEN_OF_SUPPORTED_RATES]; - UCHAR SupRateLen, ExtRateLen; - - // New for WPA security suites - UCHAR VarIE[MAX_VIE_LEN]; // Total VIE length = MAX_VIE_LEN - -5 - NDIS_802_11_VARIABLE_IEs *pVIE = NULL; - - if (!INFRA_ON(pAd) && !ADHOC_ON(pAd)) - return; - - // Init Variable IE structure - pVIE = (PNDIS_802_11_VARIABLE_IEs) VarIE; - pVIE->Length = 0; - if (PeerBeaconAndProbeRspSanity(pAd, - Elem->Msg, - Elem->MsgLen, - &Addr2, - &Bssid, - Ssid, - &SsidLen, - &BssType, - &BeaconPeriod, - &Channel, - &TimeStamp, - &CfExist, - &CfParm, - &AtimWin, - &CapabilityInfo, - Rates, - &RatesLen, - &ExtendedRateIeExist, - &Erp, - &DtimCount, - &DtimPeriod, - &BcastFlag, - &MessageToMe, - &Legacy, - SupRate, - &SupRateLen, - ExtRate, - &ExtRateLen, - pVIE)) - { - BOOLEAN is_my_bssid, is_my_ssid; - ULONG Bssidx, Now; - BSS_ENTRY *pBss; - - is_my_bssid = (MAC_ADDR_EQUAL(&Bssid, &pAd->PortCfg.Bssid) ? TRUE : FALSE); - is_my_ssid = (((pAd->PortCfg.SsidLen == SsidLen) && RTMPEqualMemory(Ssid, pAd->PortCfg.Ssid, (ULONG) SsidLen)) ? TRUE : FALSE); - // Mask out unnecessary capability information - CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; - - // ignore BEACON not for my SSID - if ((! is_my_ssid) && (! is_my_bssid)) - return; - - // - // Housekeeping "SsidBssTab" table for later-on ROAMing usage. - // - Bssidx = BssTableSearch(&pAd->Mlme.CntlAux.SsidBssTab, &Bssid); - if (Bssidx == BSS_NOT_FOUND) - { - // Return immediately when in transition process when changing association - // Found this bug when doing WHQL ad-hoc test case - if (pAd->PortCfg.SsidLen != pAd->Mlme.CntlAux.SsidLen) - return; - if (!RTMPEqualMemory(pAd->PortCfg.Ssid, pAd->Mlme.CntlAux.Ssid, pAd->PortCfg.SsidLen)) - return; - - // discover new AP of this network, create BSS entry - Bssidx = BssTableSetEntry(pAd, &pAd->Mlme.CntlAux.SsidBssTab, &Bssid, Ssid, SsidLen, - BssType, BeaconPeriod, CfExist, &CfParm, AtimWin, CapabilityInfo, - Rates, RatesLen, ExtendedRateIeExist, Channel, Elem->Rssi, TimeStamp, pVIE); - - if (Bssidx == BSS_NOT_FOUND) // return if BSS table full - return; - - DBGPRINT(RT_DEBUG_TRACE, "SYNC - New AP added to SsidBssTab[%d], RSSI=%d, MAC=%02x:%02x:%02x:%02x:%02x:%02x\n", - Bssidx, Elem->Rssi, Bssid.Octet[0], Bssid.Octet[1], Bssid.Octet[2], - Bssid.Octet[3], Bssid.Octet[4], Bssid.Octet[5]); - } - - // if the ssid matched & bssid unmatched, we should select the bssid with large value. - // This might happened when two STA start at the same time - if (is_my_ssid && (! is_my_bssid) && ADHOC_ON(pAd)) - { - INT i; - // Add to safe guard adhoc wep status mismatch - if (pAd->PortCfg.WepStatus != pAd->Mlme.CntlAux.SsidBssTab.BssEntry[Bssidx].WepStatus) - return; - - // link down the one with smaller BSSID value. - for (i = 0; i < 6; i++) - { - if (Bssid.Octet[i] > pAd->PortCfg.Bssid.Octet[i]) - { - AsicDisableSync(pAd); - memcpy(&pAd->PortCfg.Bssid, &Bssid, 6); - AsicSetBssid(pAd, &pAd->PortCfg.Bssid); - MakeIbssBeacon(pAd); - AsicEnableIbssSync(pAd); - break; - } - } - } - - DBGPRINT(RT_DEBUG_INFO, "SYNC - PeerBeacon from %02x:%02x:%02x:%02x:%02x:%02x - Dtim=%d/%d, Rssi=%02x\n", - Bssid.Octet[0], Bssid.Octet[1], Bssid.Octet[2], - Bssid.Octet[3], Bssid.Octet[4], Bssid.Octet[5], - DtimCount, DtimPeriod, Elem->Rssi); - - Now = jiffies; - pBss = &pAd->Mlme.CntlAux.SsidBssTab.BssEntry[Bssidx]; - pBss->Rssi = Elem->Rssi; // lastest RSSI - pBss->LastBeaconRxTime = Now; // last RX timestamp - - // - // BEACON from my BSSID - either IBSS or INFRA network - // - if (is_my_bssid) - { - // 2002/12/06 - patch Abocom AP bug, which forgets to set "Privacy" bit in - // AssocRsp even though this bit is ON in Beacon. So we update according - // to following Beacon frame. - // pAd->PortCfg.PrivacyInvoked = CAP_IS_PRIVACY_ON(CapabilityInfo); - - pAd->PortCfg.LastBeaconRxTime = Now; -#if 1 - // at least one 11b peer joined. downgrade the MaxTxRate to 11Mbps - // after last 11b peer left for several seconds, we'll auto switch back to 11G rate - // in MlmePeriodicExec() - if (ADHOC_ON(pAd) && (RatesLen <= 4)) - { - // this timestamp is for MlmePeriodicExec() to check if all 11B peers have left - pAd->PortCfg.Last11bBeaconRxTime = Now; - - if (pAd->PortCfg.MaxTxRate > RATE_11) - { - DBGPRINT(RT_DEBUG_TRACE, "SYNC - 11b peer joined. down-grade to 11b TX rates \n"); - memcpy(pAd->PortCfg.SupportedRates, Rates, MAX_LEN_OF_SUPPORTED_RATES); - pAd->PortCfg.SupportedRatesLen = RatesLen; - MlmeUpdateTxRates(pAd, FALSE); - MakeIbssBeacon(pAd); // supported rates changed - } - } -#endif - // check if RSSI reaches threshold - pAd->PortCfg.LastRssi = (pAd->PortCfg.LastRssi + Elem->Rssi) / 2; - pAd->PortCfg.AvgRssi = (pAd->PortCfg.AvgRssi * 7 + Elem->Rssi) >> 3; - if ((pAd->PortCfg.RssiTriggerMode == RSSI_TRIGGERED_UPON_BELOW_THRESHOLD) && - (pAd->PortCfg.LastRssi < pAd->PortCfg.RssiTrigger)) - { - // NDIS_802_11_RSSI Dbm = pAd->PortCfg.LastRssi - RSSI_TO_DBM_OFFSET; - // DBGPRINT(RT_DEBUG_TRACE, "SYNC - NdisMIndicateStatus *** RSSI %d dBm, less than threshold %d dBm\n", - // Dbm, pAd->PortCfg.RssiTrigger - RSSI_TO_DBM_OFFSET); - } - else if ((pAd->PortCfg.RssiTriggerMode == RSSI_TRIGGERED_UPON_EXCCEED_THRESHOLD) && - (pAd->PortCfg.LastRssi > pAd->PortCfg.RssiTrigger)) - { - // NDIS_802_11_RSSI Dbm = pAd->PortCfg.LastRssi - RSSI_TO_DBM_OFFSET; - // DBGPRINT(RT_DEBUG_TRACE, "SYNC - NdisMIndicateStatus *** RSSI %d dBm, greater than threshold %d dBm\n", - // Dbm, pAd->PortCfg.RssiTrigger - RSSI_TO_DBM_OFFSET); - } - - if (INFRA_ON(pAd)) // && (pAd->PortCfg.PhyMode == PHY_11BG_MIXED)) - { - BOOLEAN bUseShortSlot, bUseBGProtection; - - // decide to use/change to - - // 1. long slot (20 us) or short slot (9 us) time - // 2. turn on/off RTS/CTS and/or CTS-to-self protection - // 3. short preamble - bUseShortSlot = (pAd->PortCfg.UseShortSlotTime == TRUE) && CAP_IS_SHORT_SLOT_TIME(CapabilityInfo); - if (bUseShortSlot != pAd->PortCfg.ShortSlotInUsed) - AsicSetSlotTime(pAd, bUseShortSlot); - - bUseBGProtection = (pAd->PortCfg.UseBGProtection == 1) || // always use - ((pAd->PortCfg.UseBGProtection == 0) && ERP_IS_USE_PROTECTION(Erp)); - if (bUseBGProtection != pAd->PortCfg.BGProtectionInUsed) - { - pAd->PortCfg.BGProtectionInUsed = bUseBGProtection; - DBGPRINT(RT_DEBUG_TRACE, "SYNC - AP changed B/G protection to %d\n", bUseBGProtection); - } - - if ((pAd->PortCfg.TxPreambleInUsed == Rt802_11PreambleShort) && ERP_IS_USE_BARKER_PREAMBLE(Erp)) - { - MlmeSetTxPreamble(pAd, Rt802_11PreambleLong); - DBGPRINT(RT_DEBUG_TRACE, "SYNC - AP forced to use LONG preamble\n"); - } - } - - // only INFRASTRUCTURE mode support power-saving feature - if (INFRA_ON(pAd) && (pAd->PortCfg.Psm == PWR_SAVE)) - { - // 1. AP has backlogged unicast-to-me frame, stay AWAKE, send PSPOLL - // 2. AP has backlogged broadcast/multicast frame and we want those frames, stay AWAKE - // 3. we have outgoing frames in TxRing or PrioRing, better stay AWAKE - // 4. Psm change to PWR_SAVE, but AP not been informed yet, we better stay AWAKE - // 5. otherwise, put PHY back to sleep to save battery. - if (MessageToMe) - { - DBGPRINT(RT_DEBUG_TRACE, "SYNC - AP backlog unicast-to-me, stay AWAKE, send PSPOLL\n"); - EnqueuePsPoll(pAd); - } - else if (BcastFlag && (DtimCount == 0) && pAd->PortCfg.RecvDtim) - { - DBGPRINT(RT_DEBUG_TRACE, "SYNC - AP backlog broadcast/multicast, stay AWAKE\n"); - } - else if ((RTMPFreeDescriptorRequest(pAd, TX_RING, TX_RING_SIZE) != NDIS_STATUS_SUCCESS) || - (RTMPFreeDescriptorRequest(pAd, PRIO_RING, PRIO_RING_SIZE) != NDIS_STATUS_SUCCESS)) - { - DBGPRINT(RT_DEBUG_TRACE, "SYNC - outgoing frame in TxRing/PrioRing, stay AWAKE\n"); - } - else - { - USHORT NextDtim = DtimCount; - - if (NextDtim == 0) - NextDtim = DtimPeriod; - - TbttNumToNextWakeUp = pAd->PortCfg.DefaultListenCount; - if (pAd->PortCfg.RecvDtim && (TbttNumToNextWakeUp > NextDtim)) - TbttNumToNextWakeUp = NextDtim; - - DBGPRINT(RT_DEBUG_TRACE, "SYNC - PHY sleeps for %d Tbcn, Dtim=%d/%d\n", TbttNumToNextWakeUp, DtimCount, DtimPeriod); - AsicSleepThenAutoWakeup(pAd, TbttNumToNextWakeUp); - } - } - -#ifndef SINGLE_ADHOC_LINKUP - // At least another peer in this IBSS, declare MediaState as CONNECTED - if (ADHOC_ON(pAd) && (pAd->MediaState == NdisMediaStateDisconnected)) - { - pAd->MediaState = NdisMediaStateConnected; - - // 2003/03/12 - john - // Make sure this entry in "PortCfg.BssTab" table, thus complies to Microsoft's policy that - // "site survey" result should always include the current connected network. - // - Bssidx = BssTableSearch(&pAd->PortCfg.BssTab, &Bssid); - if (Bssidx == BSS_NOT_FOUND) - { - Bssidx = BssTableSetEntry(pAd, &pAd->PortCfg.BssTab, &Bssid, Ssid, SsidLen, - BssType, BeaconPeriod, CfExist, &CfParm, AtimWin, CapabilityInfo, - Rates, RatesLen, ExtendedRateIeExist, Channel, Elem->Rssi, TimeStamp, pVIE); - } - } -#endif - } - // not my BSSID, ignore it - } - // sanity check fail, ignore this frame -} - -/* - ========================================================================== - Description: - Receive PROBE REQ from remote peer when operating in IBSS mode - ========================================================================== - */ -VOID PeerProbeReqAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MACADDR Addr2; - CHAR Ssid[MAX_LEN_OF_SSID]; - UCHAR SsidLen; - MACHDR ProbeRspHdr; - NDIS_STATUS NStatus; - UCHAR *OutBuffer = NULL; - ULONG FrameLen = 0; - LARGE_INTEGER FakeTimestamp; - UCHAR SsidIe = IE_SSID, DsIe = IE_DS_PARM, IbssIe = IE_IBSS_PARM, SuppIe = IE_SUPP_RATES, - DsLen = 1, IbssLen = 2; - UCHAR SupportedRatesLen; - UCHAR SupportedRates[MAX_LEN_OF_SUPPORTED_RATES]; - UCHAR ExtRateIe = IE_EXT_SUPP_RATES, ExtRatesLen; - UCHAR ErpIe[3] = {IE_ERP, 1, 0}; - - if (! ADHOC_ON(pAd)) - return; - - if (PeerProbeReqSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, Ssid, &SsidLen)) //, Rates, &RatesLen)) - { - if ((SsidLen == 0) || RTMPEqualMemory(Ssid, pAd->PortCfg.Ssid, (ULONG) SsidLen)) - { - CSR15_STRUC Csr15; - - // we should respond a ProbeRsp only when we're the last BEACON transmitter - // in this ADHOC network. - RTMP_IO_READ32(pAd, CSR15, &Csr15.word); - if (Csr15.field.BeaconSent == 0) - { - DBGPRINT(RT_DEBUG_INFO, "SYNC - NOT last BEACON sender, no PROBE_RSP to %02x:%02x:%02x:%02x:%02x:%02x...\n", - Addr2.Octet[0],Addr2.Octet[1],Addr2.Octet[2],Addr2.Octet[3],Addr2.Octet[4],Addr2.Octet[5] ); - return; - } - - // 2003-12-10 802.11g WIFI spec disallow OFDM rates in 802.11g ADHOC mode - // make sure 1,2,5.5,11 are the firt 4 rates in PortCfg.SupportedRates[] array - if ((pAd->PortCfg.PhyMode == PHY_11BG_MIXED) && (pAd->PortCfg.AdhocMode == 0)) - { - int i; - SupportedRatesLen=0; - for (i=0;iPortCfg.SupportedRatesLen;i++) - { - switch (pAd->PortCfg.SupportedRates[i] & 0x7f) - { - case 2: - case 4: - case 11: - case 22: - SupportedRates[SupportedRatesLen] = pAd->PortCfg.SupportedRates[i]; - SupportedRatesLen ++; - break; - default: - break; - } - } - // error handling - should never happen - if (SupportedRatesLen != 4) - { - SupportedRatesLen = 4; - SupportedRates[0] = 0x82; - SupportedRates[1] = 0x84; - SupportedRates[2] = 0x8b; - SupportedRates[3] = 0x96; - } - } - else - { - SupportedRatesLen = pAd->PortCfg.SupportedRatesLen; - memcpy(SupportedRates, pAd->PortCfg.SupportedRates, SupportedRatesLen); - } - - // allocate and send out ProbeRsp frame - NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if (NStatus != NDIS_STATUS_SUCCESS) - return; - - pAd->PortCfg.AtimWin = 0; // ?????? - DBGPRINT(RT_DEBUG_TRACE, "SYNC - Send PROBE_RSP to %02x:%02x:%02x:%02x:%02x:%02x...\n", - Addr2.Octet[0],Addr2.Octet[1],Addr2.Octet[2],Addr2.Octet[3],Addr2.Octet[4],Addr2.Octet[5] ); - MgtMacHeaderInit(pAd, &ProbeRspHdr, SUBTYPE_PROBE_RSP, 0, &Addr2, &pAd->PortCfg.Bssid); - - if (SupportedRatesLen <= 8) - { - MakeOutgoingFrame(OutBuffer, &FrameLen, - MAC_HDR_LEN, &ProbeRspHdr, - TIMESTAMP_LEN, &FakeTimestamp, - 2, &pAd->PortCfg.BeaconPeriod, - 2, &pAd->PortCfg.CapabilityInfo, - 1, &SsidIe, - 1, &pAd->PortCfg.SsidLen, - pAd->PortCfg.SsidLen, pAd->PortCfg.Ssid, - 1, &SuppIe, - 1, &SupportedRatesLen, - SupportedRatesLen, SupportedRates, - 1, &DsIe, - 1, &DsLen, - 1, &pAd->PortCfg.Channel, - 1, &IbssIe, - 1, &IbssLen, - 2, &pAd->PortCfg.AtimWin, - END_OF_ARGS); - } - else - { - ExtRatesLen = SupportedRatesLen - 8; - SupportedRatesLen = 8; - MakeOutgoingFrame(OutBuffer, &FrameLen, - MAC_HDR_LEN, &ProbeRspHdr, - TIMESTAMP_LEN, &FakeTimestamp, - 2, &pAd->PortCfg.BeaconPeriod, - 2, &pAd->PortCfg.CapabilityInfo, - 1, &SsidIe, - 1, &pAd->PortCfg.SsidLen, - pAd->PortCfg.SsidLen, pAd->PortCfg.Ssid, - 1, &SuppIe, - 1, &SupportedRatesLen, - SupportedRatesLen, SupportedRates, - 1, &DsIe, - 1, &DsLen, - 1, &pAd->PortCfg.Channel, - 1, &IbssIe, - 1, &IbssLen, - 2, &pAd->PortCfg.AtimWin, - 3, ErpIe, - 1, &ExtRateIe, - 1, &ExtRatesLen, - ExtRatesLen, &SupportedRates[SupportedRatesLen], - END_OF_ARGS); - } - // If adhoc secruity is set for WPA-None, append the cipher suite IE - if (pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) - { - ULONG tmp; - UCHAR WpaIe = IE_WPA; - - if (pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) // Tkip - { - MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, - 1, &WpaIe, - 1, &CipherSuiteWpaNoneTkipLen, - CipherSuiteWpaNoneTkipLen, &CipherSuiteWpaNoneTkip[0], - END_OF_ARGS); - FrameLen += tmp; - } - else if (pAd->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) // Aes - { - MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, - 1, &WpaIe, - 1, &CipherSuiteWpaNoneAesLen, - CipherSuiteWpaNoneAesLen, &CipherSuiteWpaNoneAes[0], - END_OF_ARGS); - FrameLen += tmp; - } - } - MiniportMMRequest(pAd, OutBuffer, FrameLen); - } - } -} - -VOID BeaconTimeoutAtJoinAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - DBGPRINT(RT_DEBUG_TRACE, "SYNC - BeaconTimeoutAtJoinAction\n"); - pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; - MlmeCntlConfirm(pAd, MT2_JOIN_CONF, MLME_REJ_TIMEOUT); -} - -/* - ========================================================================== - Description: - Scan timeout procedure. basically add channel index by 1 and rescan - ========================================================================== - */ -VOID ScanTimeoutAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - pAd->Mlme.SyncAux.Channel = NextChannel(pAd, pAd->Mlme.SyncAux.Channel); - ScanNextChannel(pAd); -} - -/* - ========================================================================== - Description: - Scan next channel - ========================================================================== - */ -VOID ScanNextChannel( - IN PRTMP_ADAPTER pAd) -{ - MACHDR Hdr; - UCHAR SsidIe = IE_SSID, SuppRateIe = IE_SUPP_RATES; - VOID *OutBuffer = NULL; - VOID *OutBuffer2 = NULL; - NDIS_STATUS NStatus; - ULONG FrameLen = 0; - UCHAR SsidLen = 0; - - if (pAd->Mlme.SyncAux.Channel == 0) - { - DBGPRINT(RT_DEBUG_INFO, "SYNC - End of SCAN, restore to channel %d\n",pAd->PortCfg.Channel); - AsicSwitchChannel(pAd, pAd->PortCfg.Channel); - AsicLockChannel(pAd, pAd->PortCfg.Channel); - - pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; - MlmeCntlConfirm(pAd, MT2_SCAN_CONF, MLME_SUCCESS); - } - else - { - AsicSwitchChannel(pAd, pAd->Mlme.SyncAux.Channel); - - // Total SCAN time still limits within 3 sec (DDK constraint). - // TODO: We need more intelligent rules here to further improve out-of-service issue. - // e.g. temporary stop copying NDIS packet to TxRing until SCAN complete -// if (INFRA_ON(pAd) || ADHOC_ON(pAd)) - - // We need to shorten active scan time in order for WZC connect issue - if (pAd->Mlme.SyncAux.ScanType == SCAN_ACTIVE) - RTMPSetTimer(pAd, &pAd->Mlme.SyncAux.ScanTimer, ACTIVE_SCAN_TIME); - else if (pAd->PortCfg.PhyMode == PHY_11ABG_MIXED) - RTMPSetTimer(pAd, &pAd->Mlme.SyncAux.ScanTimer, MIN_CHANNEL_TIME); - else - RTMPSetTimer(pAd, &pAd->Mlme.SyncAux.ScanTimer, MAX_CHANNEL_TIME); - - MgtMacHeaderInit(pAd, &Hdr, SUBTYPE_PROBE_REQ, 0, &pAd->PortCfg.Broadcast, &pAd->PortCfg.Broadcast); - // There is no need to send broadcast probe request if active scan is in effect. - // The same rulr should apply to passive scan also. - if (pAd->Mlme.SyncAux.ScanType == SCAN_PASSIVE) - { - // Send the first probe request with empty SSID - NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if (NStatus != NDIS_STATUS_SUCCESS) - { - DBGPRINT(RT_DEBUG_INFO, "SYNC - ScanNextChannel() allocate memory fail\n"); - pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; - MlmeCntlConfirm(pAd, MT2_SCAN_CONF, MLME_FAIL_NO_RESOURCE); - return; - } - - DBGPRINT(RT_DEBUG_INFO, "SYNC - send passive ProbeReq @ channel=%d...\n", pAd->Mlme.SyncAux.Channel); - SsidLen = 0; - MakeOutgoingFrame(OutBuffer, &FrameLen, - sizeof(MACHDR), (UCHAR*)&Hdr, - 1, &SsidIe, - 1, &SsidLen, - 1, &SuppRateIe, - 1, &pAd->PortCfg.SupportedRatesLen, - pAd->PortCfg.SupportedRatesLen, pAd->PortCfg.SupportedRates, - END_OF_ARGS); - - MiniportMMRequest(pAd, OutBuffer, FrameLen); - } - else if (pAd->Mlme.SyncAux.ScanType == SCAN_ACTIVE) - { - // Allocate another for probe scan with SSID - NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer2); //Get an unused nonpaged memory - if (NStatus != NDIS_STATUS_SUCCESS) - { - DBGPRINT(RT_DEBUG_TRACE, "SYNC - ScanNextChannel() allocate memory fail\n"); - pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; - MlmeCntlConfirm(pAd, MT2_SCAN_CONF, MLME_FAIL_NO_RESOURCE); - return; - } - // make another probe scan with SSID from mlme.cntlaux.ssid - SsidLen = pAd->PortCfg.SsidLen; - MakeOutgoingFrame(OutBuffer2, &FrameLen, - sizeof(MACHDR), &Hdr, - 1, &SsidIe, - 1, &SsidLen, - SsidLen, pAd->PortCfg.Ssid, - 1, &SuppRateIe, - 1, &pAd->PortCfg.SupportedRatesLen, - pAd->PortCfg.SupportedRatesLen, pAd->PortCfg.SupportedRates, - END_OF_ARGS); - - MiniportMMRequest(pAd, OutBuffer2, FrameLen); - - DBGPRINT(RT_DEBUG_INFO, "SYNC - send active ProbeReq @ channel=%d with essid=%s\n", pAd->Mlme.SyncAux.Channel, pAd->PortCfg.Ssid); - } - - pAd->Mlme.SyncMachine.CurrState = SCAN_LISTEN; - } -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID InvalidStateWhenScan( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - DBGPRINT(RT_DEBUG_TRACE, "AYNC - InvalidStateWhenScan(state=%d). Reset SYNC machine\n", pAd->Mlme.SyncMachine.CurrState); - pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; - MlmeCntlConfirm(pAd, MT2_SCAN_CONF, MLME_STATE_MACHINE_REJECT); -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID InvalidStateWhenJoin( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - DBGPRINT(RT_DEBUG_TRACE, "InvalidStateWhenJoin(state=%d). Reset SYNC machine\n", pAd->Mlme.SyncMachine.CurrState); - pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; - MlmeCntlConfirm(pAd, MT2_JOIN_CONF, MLME_STATE_MACHINE_REJECT); -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID InvalidStateWhenStart( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - DBGPRINT(RT_DEBUG_TRACE, "InvalidStateWhenStart(state=%d). Reset SYNC machine\n", pAd->Mlme.SyncMachine.CurrState); - pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; - MlmeCntlConfirm(pAd, MT2_START_CONF, MLME_STATE_MACHINE_REJECT); -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID EnqueuePsPoll( - IN PRTMP_ADAPTER pAd) -{ - NDIS_STATUS NState; - PSPOLL_FRAME *PsFr; - - DBGPRINT(RT_DEBUG_TRACE, "SYNC - send PsPoll ...\n"); - - NState = MlmeAllocateMemory(pAd, (PVOID)&PsFr); //Get an unused nonpaged memory - if (NState == NDIS_STATUS_SUCCESS) - { - memcpy((VOID *)PsFr, (VOID *)&pAd->Mlme.PsFr, sizeof(PSPOLL_FRAME)); - MiniportMMRequest(pAd, (VOID *)PsFr, sizeof(PSPOLL_FRAME)); - } -} - -// 2003-04-17 john -// driver force send out a BEACON frame to cover ADHOC mode BEACON starving issue -// that is, in ADHOC mode, driver guarantee itself can send out at least a BEACON -// per a specified duration, even the peer's clock is faster than us and win all the -// hardware-based BEACON TX oppertunity. -// we may remove this software feature once 2560 IC fix this problem in ASIC. -VOID EnqueueBeaconFrame( - IN PRTMP_ADAPTER pAd) -{ - NDIS_STATUS NState; - PTXD_STRUC pTxD = (PTXD_STRUC)pAd->BeaconRing.va_addr; - CHAR *pBeacon; - LARGE_INTEGER Tsf; - - NState = MlmeAllocateMemory(pAd, (PVOID)&pBeacon); //Get an unused nonpaged memory - if (NState == NDIS_STATUS_SUCCESS) - { - DBGPRINT(RT_DEBUG_TRACE, "SYNC - driver sent BEACON (len=%d)...\n",pTxD->DataByteCnt); - RTMP_IO_READ32(pAd, CSR17, &Tsf.vv.HighPart); - RTMP_IO_READ32(pAd, CSR16, &Tsf.vv.LowPart); - memcpy(pBeacon, pAd->BeaconRing.va_data_addr, pTxD->DataByteCnt); - memcpy(pBeacon + MAC_HDR_LEN, &Tsf, TIMESTAMP_LEN); - MiniportMMRequest(pAd, (VOID *)pBeacon, pTxD->DataByteCnt); - } -} - -/* - ========================================================================== - Description: - Send out a NULL frame to AP. The prpose is to inform AP this client - current PSM bit. - NOTE: - This routine should only be used in infrastructure mode. - ========================================================================== - */ -VOID EnqueueNullFrame( - IN PRTMP_ADAPTER pAd, - IN UCHAR TxRate) -{ - NDIS_STATUS NState; - MACHDR *NullFr; - - // since TxRate may change, we have to change Duration each time - pAd->Mlme.NullFr.Duration = RTMPCalcDuration(pAd, TxRate, 14); - NState = MlmeAllocateMemory(pAd, (PVOID)&NullFr); //Get an unused nonpaged memory - if (NState == NDIS_STATUS_SUCCESS) - { - memcpy((VOID *)NullFr, (VOID *)&pAd->Mlme.NullFr, sizeof(MACHDR)); - RTMPSendNullFrame(pAd, (VOID *)NullFr, sizeof(MACHDR), TxRate); - } -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID EnqueueProbeRequest( - IN PRTMP_ADAPTER pAd) -{ - NDIS_STATUS NState; - UCHAR SsidIe = IE_SSID, SuppRateIe = IE_SUPP_RATES; - VOID *OutBuffer; - ULONG FrameLen = 0; - MACHDR Hdr; - - DBGPRINT(RT_DEBUG_TRACE, "force out a ProbeRequest ...\n"); - - NState = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if (NState == NDIS_STATUS_SUCCESS) - { - MgtMacHeaderInit(pAd, &Hdr, SUBTYPE_PROBE_REQ, 0, &pAd->PortCfg.Broadcast, &pAd->PortCfg.Broadcast); - - // this ProbeRequest explicitly specify SSID to reduce unwanted ProbeResponse - MakeOutgoingFrame(OutBuffer, &FrameLen, - sizeof(MACHDR), &Hdr, - 1, &SsidIe, - 1, &pAd->PortCfg.SsidLen, - pAd->PortCfg.SsidLen, pAd->PortCfg.Ssid, - 1, &SuppRateIe, - 1, &pAd->PortCfg.SupportedRatesLen, - pAd->PortCfg.SupportedRatesLen, pAd->PortCfg.SupportedRates, - END_OF_ARGS); - MiniportMMRequest(pAd, OutBuffer, FrameLen); - } -} - -/* - ========================================================================== - Description: - Update PortCfg->ChannelList[] according to 1) Country Region 2) RF IC type, - and 3) PHY-mode user selected. - The outcome is used by driver when doing site survey. - ========================================================================== - */ -VOID BuildChannelList( - IN PRTMP_ADAPTER pAd) -{ - UCHAR i, index = 0; - memset(pAd->PortCfg.ChannelList, 0, MAX_LEN_OF_CHANNELS); - - // if not 11a-only mode, channel list starts from 2.4Ghz band - if (pAd->PortCfg.PhyMode != PHY_11A) -{ - switch (pAd->PortCfg.CountryRegion) - { - case REGION_FCC: // 1 - 11 - memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_FCC, sizeof(Ra24Ghz_FCC)); - index += sizeof(Ra24Ghz_FCC); - break; - case REGION_IC: // 1 -11 - memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_IC, sizeof(Ra24Ghz_IC)); - index += sizeof(Ra24Ghz_IC); - break; - case REGION_ISRAEL: // 3 - 9 - memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_ISRAEL, sizeof(Ra24Ghz_ISRAEL)); - index += sizeof(Ra24Ghz_ISRAEL); - break; - case REGION_ETSI: // 1 - 13 - memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_ESTI, sizeof(Ra24Ghz_ESTI)); - index += sizeof(Ra24Ghz_ESTI); - break; - case REGION_SPAIN: // 10 - 11 - memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_SPAIN, sizeof(Ra24Ghz_SPAIN)); - index += sizeof(Ra24Ghz_SPAIN); - break; - case REGION_FRANCE: // 10 -13 - memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_FRANCE, sizeof(Ra24Ghz_FRANCE)); - index += sizeof(Ra24Ghz_FRANCE); - break; - case REGION_MKK: // 14 - memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_MKK, sizeof(Ra24Ghz_MKK)); - index += sizeof(Ra24Ghz_MKK); - break; - case REGION_MKK1: // 1 - 14 - memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_MKK1, sizeof(Ra24Ghz_MKK1)); - index += sizeof(Ra24Ghz_MKK1); - break; - default: // Error. should never happen - break; - } - } - - if ((pAd->PortCfg.PhyMode == PHY_11A) || (pAd->PortCfg.PhyMode == PHY_11ABG_MIXED)) - { -#if 0 - switch (pAd->PortCfg.CountryRegion) - { - case REGION_FCC: // UNII <36,40,44,48,52,56,60,64> <149,153,157,161> - case REGION_IC: // UNII <36,40,44,48,52,56,60,64> <149,153,157,161> - case REGION_ISRAEL: // UNII <36,40,44,48,52,56,60,64> <149,153,157,161> - memcpy(&pAd->PortCfg.ChannelList[index], Ra5Ghz_UNII, sizeof(Ra5Ghz_UNII)); - index += sizeof(Ra5Ghz_UNII); - break; - case REGION_ETSI: // HiperLAN2 <36,40,44,48,52,56,60,64> <100,104,108,112,116,120,124,128,132,136,140> - case REGION_SPAIN: // HiperLAN2 <36,40,44,48,52,56,60,64> <100,104,108,112,116,120,124,128,132,136,140> - case REGION_FRANCE: // HiperLAN2 <36,40,44,48,52,56,60,64> <100,104,108,112,116,120,124,128,132,136,140> - memcpy(&pAd->PortCfg.ChannelList[index], Ra5Ghz_HyperLAN2, sizeof(Ra5Ghz_HyperLAN2)); - index += sizeof(Ra5Ghz_HyperLAN2); - break; - case REGION_MKK: // Japan MMAC <34,38,42,46> - case REGION_MKK1: // Japan MMAC <34,38,42,46> - memcpy(&pAd->PortCfg.ChannelList[index], Ra5Ghz_MMAC, sizeof(Ra5Ghz_MMAC)); - index += sizeof(Ra5Ghz_MMAC); - break; - default: // Error. should never happen - break; - } -#else - // 2003-10-05 john - use UNII temoparaily for all regulation domains for easy test untill - // RF guys confirm the supported channel plans - memcpy(&pAd->PortCfg.ChannelList[index], Ra5Ghz_UNII, sizeof(Ra5Ghz_UNII)); - index += sizeof(Ra5Ghz_UNII); -#endif - } - - pAd->PortCfg.ChannelListNum = index; - DBGPRINT(RT_DEBUG_TRACE,"country code=%d, RFIC=%d, PHY mode=%d, support %d channels\n", - pAd->PortCfg.CountryRegion, pAd->PortCfg.RfType, pAd->PortCfg.PhyMode, pAd->PortCfg.ChannelListNum); - for (i=0;iPortCfg.ChannelList[i]); - } -} - -/* - ========================================================================== - Description: - This routine return the first channel number according to the country - code selection and RF IC selection (signal band or dual band). It is called - whenever driver need to start a site survey of all supported channels. - Return: - ch - the first channel number of current country code setting - ========================================================================== - */ -UCHAR FirstChannel( - IN PRTMP_ADAPTER pAd) -{ - return pAd->PortCfg.ChannelList[0]; -} - -/* - ========================================================================== - Description: - This routine returns the next channel number. This routine is called - during driver need to start a site survey of all supported channels. - Return: - next_channel - the next channel number valid in current country code setting. - Note: - return 0 if no more next channel - ========================================================================== - */ -UCHAR NextChannel( - IN PRTMP_ADAPTER pAd, - IN UCHAR channel) -{ - int i; - UCHAR next_channel = 0; - - for (i = 0; i < (pAd->PortCfg.ChannelListNum - 1); i++) - if (channel == pAd->PortCfg.ChannelList[i]) - { - next_channel = pAd->PortCfg.ChannelList[i+1]; - break; - } - return next_channel; -} - +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: sync.c + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * MarkW 8th Dec 04 Baseline code + * MarkW 10th Dec 04 Rolled in Ralink 1.4.5.0 +* MarkW 5th Jun 05 Fix no-SSID broadcasting assoc. + ***************************************************************************/ + +#include "rt_config.h" + +// 2.4 Ghz channel plan +UCHAR Ra24Ghz_FCC[] = {1,2,3,4,5,6,7,8,9,10,11}; +UCHAR Ra24Ghz_IC[] = {1,2,3,4,5,6,7,8,9,10,11}; +UCHAR Ra24Ghz_ESTI[]= {1,2,3,4,5,6,7,8,9,10,11,12,13}; +UCHAR Ra24Ghz_SPAIN[] = {10,11}; +UCHAR Ra24Ghz_FRANCE[] = {10,11,12,13}; +UCHAR Ra24Ghz_MKK[] = {14}; +UCHAR Ra24Ghz_MKK1[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14}; +UCHAR Ra24Ghz_ISRAEL[] = {3,4,5,6,7,8,9}; + +// 5 Ghz channel plan +UCHAR Ra5Ghz_UNII[] = {36,40,44,48,52,56,60,64, 149,153,157,161}; +UCHAR Ra5Ghz_MMAC[] = {34,38,42,46}; +UCHAR Ra5Ghz_HyperLAN2[] = {36,40,44,48,52,56,60,64, 100,104,108,112,116,120,124,128,132,136,140}; + +extern UCHAR CipherSuiteWpaNoneTkip[]; +extern UCHAR CipherSuiteWpaNoneTkipLen; + +extern UCHAR CipherSuiteWpaNoneAes[]; +extern UCHAR CipherSuiteWpaNoneAesLen; + +/* + ========================================================================== + Description: + The sync state machine, + Parameters: + Sm - pointer to the state machine + Note: + the state machine looks like the following + + Column 1-2 + SYNC_IDLE JOIN_WAIT_BEACON + MT2_MLME_SCAN_REQ mlme_scan_req_action invalid_state_when_scan + MT2_MLME_JOIN_REQ mlme_join_req_action invalid_state_when_join + MT2_MLME_START_REQ mlme_start_req_action invalid_state_when_start + MT2_PEER_BEACON peer_beacon peer_beacon_at_join_wait_beacon_action + MT2_PEER_PROBE_RSP peer_beacon drop + MT2_PEER_ATIM drop drop + MT2_SCAN_TIMEOUT Drop Drop + MT2_BEACON_TIMEOUT Drop beacon_timeout_at_join_wait_beacon_action + MT2_ATIM_TIMEOUT Drop Drop + MT2_PEER_PROBE_REQ ???? drop + + column 3 + SCAN_LISTEN + MT2_MLME_SCAN_REQ invalid_state_when_scan + MT2_MLME_JOIN_REQ invalid_state_when_join + MT2_MLME_START_REQ invalid_state_when_start + MT2_PEER_BEACON peer_beacon_at_scan_action + MT2_PEER_PROBE_RSP peer_probe_rsp_at_scan_action + MT2_PEER_ATIM drop + MT2_SCAN_TIMEOUT scan_timeout_action + MT2_BEACON_TIMEOUT Drop + MT2_ATIM_TIMEOUT Drop + MT2_PEER_PROBE_REQ drop + ========================================================================== + */ +VOID SyncStateMachineInit( + IN PRTMP_ADAPTER pAd, + IN STATE_MACHINE *Sm, + OUT STATE_MACHINE_FUNC Trans[]) +{ + StateMachineInit(Sm, (STATE_MACHINE_FUNC*)Trans, MAX_SYNC_STATE, MAX_SYNC_MSG, (STATE_MACHINE_FUNC)Drop, SYNC_IDLE, SYNC_MACHINE_BASE); + + // column 1 + StateMachineSetAction(Sm, SYNC_IDLE, MT2_MLME_SCAN_REQ, (STATE_MACHINE_FUNC)MlmeScanReqAction); + StateMachineSetAction(Sm, SYNC_IDLE, MT2_MLME_JOIN_REQ, (STATE_MACHINE_FUNC)MlmeJoinReqAction); + StateMachineSetAction(Sm, SYNC_IDLE, MT2_MLME_START_REQ, (STATE_MACHINE_FUNC)MlmeStartReqAction); + StateMachineSetAction(Sm, SYNC_IDLE, MT2_PEER_BEACON, (STATE_MACHINE_FUNC)PeerBeacon); +// StateMachineSetAction(Sm, SYNC_IDLE, MT2_PEER_PROBE_RSP, (STATE_MACHINE_FUNC)PeerBeacon); + StateMachineSetAction(Sm, SYNC_IDLE, MT2_PEER_PROBE_REQ, (STATE_MACHINE_FUNC)PeerProbeReqAction); + + //column 2 + StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_MLME_SCAN_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenScan); + StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_MLME_JOIN_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenJoin); + StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_MLME_START_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenStart); + StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_PEER_BEACON, (STATE_MACHINE_FUNC)PeerBeaconAtJoinAction); + StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_BEACON_TIMEOUT, (STATE_MACHINE_FUNC)BeaconTimeoutAtJoinAction); + + // column 3 + StateMachineSetAction(Sm, SCAN_LISTEN, MT2_MLME_SCAN_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenScan); + StateMachineSetAction(Sm, SCAN_LISTEN, MT2_MLME_JOIN_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenJoin); + StateMachineSetAction(Sm, SCAN_LISTEN, MT2_MLME_START_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenStart); + StateMachineSetAction(Sm, SCAN_LISTEN, MT2_PEER_BEACON, (STATE_MACHINE_FUNC)PeerBeaconAtScanAction); + StateMachineSetAction(Sm, SCAN_LISTEN, MT2_PEER_PROBE_RSP, (STATE_MACHINE_FUNC)PeerBeaconAtScanAction); + StateMachineSetAction(Sm, SCAN_LISTEN, MT2_SCAN_TIMEOUT, (STATE_MACHINE_FUNC)ScanTimeoutAction); + + // timer init + RTMPInitTimer(pAd, &pAd->Mlme.SyncAux.BeaconTimer, BeaconTimeout); + RTMPInitTimer(pAd, &pAd->Mlme.SyncAux.ScanTimer, ScanTimeout); +} + +/* + ========================================================================== + Description: + Becaon timeout handler, executed in timer thread + ========================================================================== + */ +VOID BeaconTimeout( + IN unsigned long data) +{ + RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; + + DBGPRINT(RT_DEBUG_TRACE,"SYNC - BeaconTimeout\n"); + MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_BEACON_TIMEOUT, 0, NULL); + MlmeHandler(pAd); +} + +/* + ========================================================================== + Description: + ATIM timeout handler, executed in timer thread + ========================================================================== + */ +VOID AtimTimeout( + IN unsigned long data) +{ + RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; + + DBGPRINT(RT_DEBUG_TRACE,"SYNC - AtimTimeout \n"); + MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_ATIM_TIMEOUT, 0, NULL); + MlmeHandler(pAd); +} + +/* + ========================================================================== + Description: + Scan timeout handler, executed in timer thread + ========================================================================== + */ +VOID ScanTimeout( + IN unsigned long data) +{ + RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; + + DBGPRINT(RT_DEBUG_INFO,"SYNC - Scan Timeout \n"); + MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_SCAN_TIMEOUT, 0, NULL); + MlmeHandler(pAd); +} + +/* + ========================================================================== + Description: + MLME SCAN req state machine procedure + ========================================================================== + */ +VOID MlmeScanReqAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + UCHAR Ssid[MAX_LEN_OF_SSID], SsidLen, ScanType, BssType; + ULONG Now; + + // Suspend MSDU transmission here + RTMPSuspendMsduTransmission(pAd); + + // first check the parameter sanity + if (MlmeScanReqSanity(pAd, + Elem->Msg, + Elem->MsgLen, + &BssType, + Ssid, + &SsidLen, + &ScanType)) + { + DBGPRINT(RT_DEBUG_TRACE, "SYNC - MlmeScanReqAction\n"); + Now = jiffies; + pAd->PortCfg.LastScanTime = Now; + // reset all the timers + RTMPCancelTimer(&pAd->Mlme.SyncAux.BeaconTimer); + RTMPCancelTimer(&pAd->Mlme.SyncAux.ScanTimer); + + // record desired BSS parameters + pAd->Mlme.SyncAux.BssType = BssType; + pAd->Mlme.SyncAux.ScanType = ScanType; + pAd->Mlme.SyncAux.SsidLen = SsidLen; + memcpy(pAd->Mlme.SyncAux.Ssid, Ssid, SsidLen); + + // start from the first channel + pAd->Mlme.SyncAux.Channel = FirstChannel(pAd); + ScanNextChannel(pAd); + } + else + { + printk(KERN_ERR DRV_NAME "SYNC - MlmeScanReqAction() sanity check fail. BUG!!!\n"); + pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; + MlmeCntlConfirm(pAd, MT2_SCAN_CONF, MLME_INVALID_FORMAT); + } +} + +/* + ========================================================================== + Description: + MLME JOIN req state machine procedure + ========================================================================== + */ +VOID MlmeJoinReqAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + BSS_ENTRY *pBss; + MLME_JOIN_REQ_STRUCT *Info = (MLME_JOIN_REQ_STRUCT *)(Elem->Msg); + + DBGPRINT(RT_DEBUG_TRACE, "SYNC - MlmeJoinReqAction(BSS #%d)\n", Info->BssIdx); + + // reset all the timers + RTMPCancelTimer(&pAd->Mlme.SyncAux.ScanTimer); + RTMPCancelTimer(&pAd->Mlme.SyncAux.BeaconTimer); + + pBss = &pAd->Mlme.CntlAux.SsidBssTab.BssEntry[Info->BssIdx]; + + // record the desired SSID & BSSID we're waiting for + COPY_MAC_ADDR(&pAd->Mlme.SyncAux.Bssid, &pBss->Bssid); + memcpy(pAd->Mlme.SyncAux.Ssid, pBss->Ssid, pBss->SsidLen); + pAd->Mlme.SyncAux.SsidLen = pBss->SsidLen; + + // switch channel and waiting for beacon timer + AsicSwitchChannel(pAd, pBss->Channel); + AsicLockChannel(pAd, pBss->Channel); + DBGPRINT(RT_DEBUG_TRACE, "SYNC - Switch to channel %d, SSID %s \n", pBss->Channel, pAd->Mlme.SyncAux.Ssid); + DBGPRINT(RT_DEBUG_TRACE, "SYNC - Wait BEACON from %02x:%02x:%02x:%02x:%02x:%02x ...\n", + pAd->Mlme.SyncAux.Bssid.Octet[0], pAd->Mlme.SyncAux.Bssid.Octet[1], + pAd->Mlme.SyncAux.Bssid.Octet[2], pAd->Mlme.SyncAux.Bssid.Octet[3], + pAd->Mlme.SyncAux.Bssid.Octet[4], pAd->Mlme.SyncAux.Bssid.Octet[5]); + RTMPSetTimer(pAd, &pAd->Mlme.SyncAux.BeaconTimer, JOIN_TIMEOUT); + + pAd->Mlme.SyncMachine.CurrState = JOIN_WAIT_BEACON; +} + +/* + ========================================================================== + Description: + MLME START Request state machine procedure, starting an IBSS + ========================================================================== + */ +VOID MlmeStartReqAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + UCHAR Ssid[MAX_LEN_OF_SSID], SsidLen; + + // New for WPA security suites + UCHAR VarIE[MAX_VIE_LEN]; // Total VIE length = MAX_VIE_LEN - -5 + NDIS_802_11_VARIABLE_IEs *pVIE = NULL; + LARGE_INTEGER TimeStamp; + BOOLEAN Privacy; +#ifdef SINGLE_ADHOC_LINKUP + ULONG Bssidx; + BOOLEAN CfExist = FALSE; + CF_PARM CfParm; +#endif + + // Init Variable IE structure + pVIE = (PNDIS_802_11_VARIABLE_IEs) VarIE; + pVIE->Length = 0; + TimeStamp.vv.LowPart = 0; + TimeStamp.vv.HighPart = 0; + + if (MlmeStartReqSanity(pAd, Elem->Msg, Elem->MsgLen, Ssid, &SsidLen)) + { + // reset all the timers + RTMPCancelTimer(&pAd->Mlme.SyncAux.ScanTimer); + RTMPCancelTimer(&pAd->Mlme.SyncAux.BeaconTimer); + + // PortCfg.PrivacyInvoked should have been set via OID_802_11_WEP_STATUS. + // pAd->PortCfg.PrivacyInvoked = FALSE; + + memcpy(pAd->PortCfg.Ssid, Ssid, SsidLen); + pAd->PortCfg.SsidLen = SsidLen; + pAd->PortCfg.BssType = BSS_INDEP; + Privacy = (pAd->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) || + (pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) || + (pAd->PortCfg.WepStatus == Ndis802_11Encryption3Enabled); + pAd->PortCfg.CapabilityInfo = CAP_GENERATE(0,1,0,0,Privacy, (pAd->PortCfg.WindowsTxPreamble == Rt802_11PreambleShort)); + pAd->PortCfg.BeaconPeriod = pAd->PortCfg.IbssConfig.BeaconPeriod; + pAd->PortCfg.AtimWin = pAd->PortCfg.IbssConfig.AtimWin; + pAd->PortCfg.Channel = pAd->PortCfg.IbssConfig.Channel; + if ((pAd->PortCfg.PhyMode == PHY_11ABG_MIXED) && (pAd->PortCfg.Channel > 14)) + { + // no 1,2,5.5,11 Mbps when in 5Ghz band + pAd->PortCfg.SupportedRatesLen = pAd->PortCfg.IbssConfig.SupportedRatesLen - 4; + memset(pAd->PortCfg.SupportedRates, 0, MAX_LEN_OF_SUPPORTED_RATES); + memcpy(pAd->PortCfg.SupportedRates, &pAd->PortCfg.IbssConfig.SupportedRates[4], MAX_LEN_OF_SUPPORTED_RATES - 4); + } + else + { + pAd->PortCfg.SupportedRatesLen = pAd->PortCfg.IbssConfig.SupportedRatesLen; + memcpy(pAd->PortCfg.SupportedRates, pAd->PortCfg.IbssConfig.SupportedRates, MAX_LEN_OF_SUPPORTED_RATES); + } +// pAd->PortCfg.Pss = PWR_ACTIVE; + + // generate a radom number as BSSID + MacAddrRandomBssid(pAd, &pAd->PortCfg.Bssid); + AsicSetBssid(pAd, &pAd->PortCfg.Bssid); + AsicSwitchChannel(pAd, pAd->PortCfg.Channel); + AsicLockChannel(pAd, pAd->PortCfg.Channel); + + DBGPRINT(RT_DEBUG_TRACE, "SYNC - MlmeStartReqAction(ch= %d,supported rate len= %d)\n", + pAd->PortCfg.Channel, pAd->PortCfg.SupportedRatesLen); + +#ifdef SINGLE_ADHOC_LINKUP + // Add itself as the entry within BSS table + Bssidx = BssTableSearch(&pAd->PortCfg.BssTab, &pAd->PortCfg.Bssid); + if (Bssidx == BSS_NOT_FOUND) + { + Bssidx = BssTableSetEntry(pAd, &pAd->PortCfg.BssTab, &pAd->PortCfg.Bssid, + Ssid, SsidLen, pAd->PortCfg.BssType, pAd->PortCfg.BeaconPeriod, + CfExist, &CfParm, pAd->PortCfg.AtimWin, pAd->PortCfg.CapabilityInfo, + pAd->PortCfg.SupportedRates, pAd->PortCfg.SupportedRatesLen, TRUE, + pAd->PortCfg.Channel, Elem->Rssi, TimeStamp, pVIE); + } +#endif + + pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; + MlmeCntlConfirm(pAd, MT2_START_CONF, (USHORT)MLME_SUCCESS); + } + else + { + printk(KERN_ERR DRV_NAME "SYNC - MlmeStartReqAction() sanity check fail. BUG!!!\n"); + pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; + MlmeCntlConfirm(pAd, MT2_START_CONF, MLME_INVALID_FORMAT); + } +} + +/* + ========================================================================== + Description: + peer sends beacon back when scanning + ========================================================================== + */ +VOID PeerBeaconAtScanAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MACADDR Bssid, Addr2; + UCHAR Ssid[MAX_LEN_OF_SSID], BssType, Channel, Rates[MAX_LEN_OF_SUPPORTED_RATES], RatesLen, + SsidLen, DtimCount, DtimPeriod, BcastFlag, MessageToMe, Legacy; + CF_PARM CfParm; + USHORT BeaconPeriod, AtimWin, CapabilityInfo; + MACFRAME *Fr; + LARGE_INTEGER TimeStamp; + BOOLEAN CfExist = FALSE; + BOOLEAN ExtendedRateIeExist; + UCHAR Erp; + UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES], ExtRate[MAX_LEN_OF_SUPPORTED_RATES]; + UCHAR SupRateLen, ExtRateLen; + + // New for WPA security suites + UCHAR VarIE[MAX_VIE_LEN]; // Total VIE length = MAX_VIE_LEN - -5 + NDIS_802_11_VARIABLE_IEs *pVIE = NULL; + + // NdisFillMemory(Ssid, MAX_LEN_OF_SSID, 0x00); + Fr = (MACFRAME *) Elem->Msg; + // Init Variable IE structure + pVIE = (PNDIS_802_11_VARIABLE_IEs) VarIE; + pVIE->Length = 0; + if (PeerBeaconAndProbeRspSanity(pAd, + Elem->Msg, + Elem->MsgLen, + &Addr2, + &Bssid, Ssid, + &SsidLen, + &BssType, + &BeaconPeriod, + &Channel, + &TimeStamp, + &CfExist, + &CfParm, + &AtimWin, + &CapabilityInfo, + Rates, + &RatesLen, + &ExtendedRateIeExist, + &Erp, + &DtimCount, + &DtimPeriod, + &BcastFlag, + &MessageToMe, + &Legacy, + SupRate, + &SupRateLen, + ExtRate, + &ExtRateLen, + pVIE)) + { + ULONG Idx; + UCHAR Rssi = 0; + UCHAR Noise = 0; + + // This correct im-proper RSSI indication during SITE SURVEY issue. + // Always report bigger RSSI during SCANNING when receiving multiple BEACONs from the same AP. + // This case happens because BEACONs come from adjacent channels, so RSSI become weaker as we + // switch to more far away channels. + Idx = BssTableSearch(&pAd->PortCfg.BssTab, &Bssid); + if (Idx != BSS_NOT_FOUND) + { + Rssi = pAd->PortCfg.BssTab.BssEntry[Idx].Rssi; + Noise = pAd->PortCfg.BssTab.BssEntry[Idx].Noise; + } + if (Elem->Rssi > Rssi) + { + Rssi = Elem->Rssi; + Noise = Elem->Noise; + } + + + DBGPRINT(RT_DEBUG_INFO, "SYNC - PeerBeaconAtScanAction (Subtype=%d, SsidLen=%d, Ssid=%s)\n", Fr->Hdr.SubType, SsidLen,Ssid); + + // Mask out unnecessary capability information + CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; + BssTableSetEntry(pAd, &pAd->PortCfg.BssTab, &Bssid, Ssid, SsidLen, BssType, + BeaconPeriod, CfExist, &CfParm, AtimWin, CapabilityInfo, Rates, + RatesLen, ExtendedRateIeExist, Channel, Rssi, Noise, TimeStamp, pVIE); + } + // sanity check fail, ignored +} + +/* + ========================================================================== + Description: + When waiting joining the (I)BSS, beacon received from external + ========================================================================== + */ +VOID PeerBeaconAtJoinAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MACADDR Bssid, Addr2; + UCHAR Ssid[MAX_LEN_OF_SSID], SsidLen, BssType, Channel, RatesLen, MessageToMe, + Rates[MAX_LEN_OF_SUPPORTED_RATES], DtimCount, DtimPeriod, BcastFlag, Legacy; + LARGE_INTEGER TimeStamp; + USHORT BeaconPeriod, AtimWin, CapabilityInfo; + CF_PARM Cf; + BOOLEAN CfExist = FALSE, ExtendedRateIeExist; + UCHAR Erp; + UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES], ExtRate[MAX_LEN_OF_SUPPORTED_RATES]; + UCHAR SupRateLen, ExtRateLen; + + // New for WPA security suites + UCHAR VarIE[MAX_VIE_LEN]; // Total VIE length = MAX_VIE_LEN - -5 + NDIS_802_11_VARIABLE_IEs *pVIE = NULL; + + // Init Variable IE structure + pVIE = (PNDIS_802_11_VARIABLE_IEs) VarIE; + pVIE->Length = 0; + if (PeerBeaconAndProbeRspSanity(pAd, + Elem->Msg, + Elem->MsgLen, + &Addr2, + &Bssid, + Ssid, + &SsidLen, + &BssType, + &BeaconPeriod, + &Channel, + &TimeStamp, + &CfExist, + &Cf, + &AtimWin, + &CapabilityInfo, + Rates, + &RatesLen, + &ExtendedRateIeExist, + &Erp, + &DtimCount, + &DtimPeriod, + &BcastFlag, + &MessageToMe, + &Legacy, + SupRate, + &SupRateLen, + ExtRate, + &ExtRateLen, + pVIE)) + { + // Disqualify 11b only adhoc when we are in 11g only adhoc mode + if ((BssType == BSS_INDEP) && (pAd->PortCfg.AdhocMode == 2) && (RatesLen < 12)) + return; + + if (MAC_ADDR_EQUAL(&pAd->Mlme.SyncAux.Bssid, &Bssid)) + { + DBGPRINT(RT_DEBUG_TRACE, "SYNC - receive desired BEACON at JoinWaitBeacon...\n"); + RTMPCancelTimer(&pAd->Mlme.SyncAux.BeaconTimer); + + // Update RSSI to prevent No signal display when cards first initialized + pAd->PortCfg.LastRssi = Elem->Rssi; + pAd->PortCfg.AvgRssi = Elem->Rssi; + + if (pAd->Mlme.SyncAux.SsidLen > 0) + { + memcpy(pAd->PortCfg.Ssid, pAd->Mlme.SyncAux.Ssid, pAd->Mlme.SyncAux.SsidLen); + pAd->PortCfg.SsidLen = pAd->Mlme.SyncAux.SsidLen; + } + else + { + memcpy(pAd->PortCfg.Ssid, Ssid, SsidLen); + pAd->PortCfg.SsidLen = SsidLen; + } + + COPY_MAC_ADDR(&pAd->PortCfg.Bssid, &Bssid); + AsicSetBssid(pAd, &pAd->PortCfg.Bssid); + + pAd->PortCfg.BssType = BssType; + pAd->PortCfg.BeaconPeriod = BeaconPeriod; + pAd->PortCfg.Channel = Channel; + + // filter out non-supported rates + { + int i; + pAd->PortCfg.SupportedRatesLen = 0; + for (i=0;iPortCfg.PhyMode == PHY_11B) && + (Rate == 2 || Rate == 4 || Rate == 11 || Rate == 22)) + { + ///DBGPRINT(RT_DEBUG_TRACE, ("SYNC - Supported Rate[%d] = 0x%02x\n",pAd->PortCfg.SupportedRatesLen, Rates[i])); + pAd->PortCfg.SupportedRates[pAd->PortCfg.SupportedRatesLen] = Rates[i]; + pAd->PortCfg.SupportedRatesLen ++; + } + else if ((Rate == 2 || Rate == 4 || Rate == 11 || Rate == 22) || + (Rate == 12 || Rate == 18 || Rate == 24 || Rate == 36) || + (Rate == 48 || Rate == 72 || Rate == 96 || Rate == 108)) + { + // DBGPRINT(RT_DEBUG_TRACE, ("SYNC - Supported Rate[%d] = 0x%02x\n",pAd->PortCfg.SupportedRatesLen, Rates[i])); + pAd->PortCfg.SupportedRates[pAd->PortCfg.SupportedRatesLen] = Rates[i]; + pAd->PortCfg.SupportedRatesLen ++; + } + } + } + + // Copy AP's supported rate to portcfg for creating assoication request + // Also filter out not supported rate + // Supported rate + { + int i; + pAd->PortCfg.SupRateLen = 0; + for (i = 0; i < SupRateLen; i++) + { + UCHAR Rate = SupRate[i] & 0x7f; + if ((pAd->PortCfg.PhyMode == PHY_11B) && + (Rate == 2 || Rate == 4 || Rate == 11 || Rate == 22)) + { + pAd->PortCfg.SupRate[pAd->PortCfg.SupRateLen] = SupRate[i]; + pAd->PortCfg.SupRateLen ++; + } + else if ((Rate == 2 || Rate == 4 || Rate == 11 || Rate == 22) || + (Rate == 12 || Rate == 18 || Rate == 24 || Rate == 36) || + (Rate == 48 || Rate == 72 || Rate == 96 || Rate == 108)) + { + pAd->PortCfg.SupRate[pAd->PortCfg.SupRateLen] = SupRate[i]; + pAd->PortCfg.SupRateLen ++; + } + } + } + + // Copy AP's supported rate to portcfg for creating assoication request + // Also filter out not supported rate + // Extended rate + if (ExtendedRateIeExist == TRUE) + { + int i; + pAd->PortCfg.ExtRateLen = 0; + for (i = 0; i < ExtRateLen; i++) + { + UCHAR Rate = ExtRate[i] & 0x7f; + if ((pAd->PortCfg.PhyMode == PHY_11B) && + (Rate == 2 || Rate == 4 || Rate == 11 || Rate == 22)) + { + pAd->PortCfg.ExtRate[pAd->PortCfg.ExtRateLen] = ExtRate[i]; + pAd->PortCfg.ExtRateLen ++; + } + else if ((Rate == 2 || Rate == 4 || Rate == 11 || Rate == 22) || + (Rate == 12 || Rate == 18 || Rate == 24 || Rate == 36) || + (Rate == 48 || Rate == 72 || Rate == 96 || Rate == 108)) + { + pAd->PortCfg.ExtRate[pAd->PortCfg.ExtRateLen] = ExtRate[i]; + pAd->PortCfg.ExtRateLen ++; + } + } + } + else + { + pAd->PortCfg.ExtRateLen = 0; + } + + DBGPRINT(RT_DEBUG_TRACE, "SYNC - AP's SupportedRatesLen=%d, set STA's SupportedRateLen=%d\n", + RatesLen, pAd->PortCfg.SupportedRatesLen); + + // Mask out unnecessary capability information + CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; + + // Check for 802.11g information, if 802.11 b/g mixed mode. + // We can't support its short preamble for now. + pAd->PortCfg.CapabilityInfo = CapabilityInfo; + + if ((BssType == BSS_INDEP) && (CAP_IS_IBSS_ON(CapabilityInfo))) + { + pAd->PortCfg.AtimWin = AtimWin; + } + else if (BssType == BSS_INFRA) + { + pAd->PortCfg.CfpPeriod = Cf.CfpPeriod; + pAd->PortCfg.CfpMaxDuration = Cf.CfpMaxDuration; + pAd->PortCfg.CfpDurRemain = Cf.CfpDurRemaining; + pAd->PortCfg.CfpCount = Cf.CfpCount; + pAd->PortCfg.CfpPeriod = Cf.CfpPeriod; + + AsicEnableBssSync(pAd); + } + + pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; + MlmeCntlConfirm(pAd, MT2_JOIN_CONF, MLME_SUCCESS); + } + // not to me BEACON, ignored + } + // sanity check fail, ignore this frame +} + +/* + ========================================================================== + Description: + receive BEACON from peer + ========================================================================== + */ +VOID PeerBeacon( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MACADDR Bssid, Addr2; + CHAR Ssid[MAX_LEN_OF_SSID]; + CF_PARM CfParm; + UCHAR SsidLen, MessageToMe=0, BssType, Channel, Rates[MAX_LEN_OF_SUPPORTED_RATES]; + UCHAR RatesLen, DtimCount=0, DtimPeriod=0, BcastFlag=0, Legacy; + USHORT CapabilityInfo, AtimWin, BeaconPeriod; + LARGE_INTEGER TimeStamp; + BOOLEAN CfExist = FALSE; + USHORT TbttNumToNextWakeUp; + BOOLEAN ExtendedRateIeExist; + UCHAR Erp; + UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES], ExtRate[MAX_LEN_OF_SUPPORTED_RATES]; + UCHAR SupRateLen, ExtRateLen; + + // New for WPA security suites + UCHAR VarIE[MAX_VIE_LEN]; // Total VIE length = MAX_VIE_LEN - -5 + NDIS_802_11_VARIABLE_IEs *pVIE = NULL; + + if (!INFRA_ON(pAd) && !ADHOC_ON(pAd)) + return; + + // Init Variable IE structure + pVIE = (PNDIS_802_11_VARIABLE_IEs) VarIE; + pVIE->Length = 0; + if (PeerBeaconAndProbeRspSanity(pAd, + Elem->Msg, + Elem->MsgLen, + &Addr2, + &Bssid, + Ssid, + &SsidLen, + &BssType, + &BeaconPeriod, + &Channel, + &TimeStamp, + &CfExist, + &CfParm, + &AtimWin, + &CapabilityInfo, + Rates, + &RatesLen, + &ExtendedRateIeExist, + &Erp, + &DtimCount, + &DtimPeriod, + &BcastFlag, + &MessageToMe, + &Legacy, + SupRate, + &SupRateLen, + ExtRate, + &ExtRateLen, + pVIE)) + { + BOOLEAN is_my_bssid, is_my_ssid; + ULONG Bssidx, Now; + BSS_ENTRY *pBss; + + is_my_bssid = (MAC_ADDR_EQUAL(&Bssid, &pAd->PortCfg.Bssid) ? TRUE : FALSE); + is_my_ssid = (((pAd->PortCfg.SsidLen == SsidLen) && RTMPEqualMemory(Ssid, pAd->PortCfg.Ssid, (ULONG) SsidLen)) ? TRUE : FALSE); + // Mask out unnecessary capability information + CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; + + // ignore BEACON not for my SSID + if ((! is_my_ssid) && (! is_my_bssid)) + return; + + // + // Housekeeping "SsidBssTab" table for later-on ROAMing usage. + // + Bssidx = BssTableSearch(&pAd->Mlme.CntlAux.SsidBssTab, &Bssid); + if (Bssidx == BSS_NOT_FOUND) + { + // Return immediately when in transition process when changing association + // Found this bug when doing WHQL ad-hoc test case + if (pAd->PortCfg.SsidLen != pAd->Mlme.CntlAux.SsidLen) + return; + if (!RTMPEqualMemory(pAd->PortCfg.Ssid, pAd->Mlme.CntlAux.Ssid, pAd->PortCfg.SsidLen)) + return; + + // discover new AP of this network, create BSS entry + Bssidx = BssTableSetEntry(pAd, &pAd->Mlme.CntlAux.SsidBssTab, &Bssid, Ssid, SsidLen, + BssType, BeaconPeriod, CfExist, &CfParm, AtimWin, CapabilityInfo, + Rates, RatesLen, ExtendedRateIeExist, Channel, Elem->Rssi, Elem->Noise, TimeStamp, pVIE); + + if (Bssidx == BSS_NOT_FOUND) // return if BSS table full + return; + + DBGPRINT(RT_DEBUG_TRACE, "SYNC - New AP added to SsidBssTab[%d], RSSI=%d, MAC=%02x:%02x:%02x:%02x:%02x:%02x\n", + Bssidx, Elem->Rssi, Bssid.Octet[0], Bssid.Octet[1], Bssid.Octet[2], + Bssid.Octet[3], Bssid.Octet[4], Bssid.Octet[5]); + } + + // if the ssid matched & bssid unmatched, we should select the bssid with large value. + // This might happened when two STA start at the same time + if (is_my_ssid && (! is_my_bssid) && ADHOC_ON(pAd)) + { + INT i; + // Add to safe guard adhoc wep status mismatch + if (pAd->PortCfg.WepStatus != pAd->Mlme.CntlAux.SsidBssTab.BssEntry[Bssidx].WepStatus) + return; + + // link down the one with smaller BSSID value. + for (i = 0; i < 6; i++) + { + if (Bssid.Octet[i] > pAd->PortCfg.Bssid.Octet[i]) + { + AsicDisableSync(pAd); + memcpy(&pAd->PortCfg.Bssid, &Bssid, 6); + AsicSetBssid(pAd, &pAd->PortCfg.Bssid); + MakeIbssBeacon(pAd); + AsicEnableIbssSync(pAd); + break; + } + } + } + + DBGPRINT(RT_DEBUG_INFO, "SYNC - PeerBeacon from %02x:%02x:%02x:%02x:%02x:%02x - Dtim=%d/%d, Rssi=%02x\n", + Bssid.Octet[0], Bssid.Octet[1], Bssid.Octet[2], + Bssid.Octet[3], Bssid.Octet[4], Bssid.Octet[5], + DtimCount, DtimPeriod, Elem->Rssi); + + Now = jiffies; + pBss = &pAd->Mlme.CntlAux.SsidBssTab.BssEntry[Bssidx]; + pBss->Rssi = Elem->Rssi; // lastest RSSI + pBss->LastBeaconRxTime = Now; // last RX timestamp + + // + // BEACON from my BSSID - either IBSS or INFRA network + // + if (is_my_bssid) + { + // 2002/12/06 - patch Abocom AP bug, which forgets to set "Privacy" bit in + // AssocRsp even though this bit is ON in Beacon. So we update according + // to following Beacon frame. + // pAd->PortCfg.PrivacyInvoked = CAP_IS_PRIVACY_ON(CapabilityInfo); + + pAd->PortCfg.LastBeaconRxTime = Now; +#if 1 + // at least one 11b peer joined. downgrade the MaxTxRate to 11Mbps + // after last 11b peer left for several seconds, we'll auto switch back to 11G rate + // in MlmePeriodicExec() + if (ADHOC_ON(pAd) && (RatesLen <= 4)) + { + // this timestamp is for MlmePeriodicExec() to check if all 11B peers have left + pAd->PortCfg.Last11bBeaconRxTime = Now; + + if (pAd->PortCfg.MaxTxRate > RATE_11) + { + DBGPRINT(RT_DEBUG_TRACE, "SYNC - 11b peer joined. down-grade to 11b TX rates \n"); + memcpy(pAd->PortCfg.SupportedRates, Rates, MAX_LEN_OF_SUPPORTED_RATES); + pAd->PortCfg.SupportedRatesLen = RatesLen; + MlmeUpdateTxRates(pAd, FALSE); + MakeIbssBeacon(pAd); // supported rates changed + } + } +#endif + // check if RSSI reaches threshold + pAd->PortCfg.LastRssi = (pAd->PortCfg.LastRssi + Elem->Rssi) / 2; + pAd->PortCfg.AvgRssi = (pAd->PortCfg.AvgRssi * 7 + Elem->Rssi) >> 3; + if ((pAd->PortCfg.RssiTriggerMode == RSSI_TRIGGERED_UPON_BELOW_THRESHOLD) && + (pAd->PortCfg.LastRssi < pAd->PortCfg.RssiTrigger)) + { + // NDIS_802_11_RSSI Dbm = pAd->PortCfg.LastRssi - RSSI_TO_DBM_OFFSET; + // DBGPRINT(RT_DEBUG_TRACE, "SYNC - NdisMIndicateStatus *** RSSI %d dBm, less than threshold %d dBm\n", + // Dbm, pAd->PortCfg.RssiTrigger - RSSI_TO_DBM_OFFSET); + } + else if ((pAd->PortCfg.RssiTriggerMode == RSSI_TRIGGERED_UPON_EXCCEED_THRESHOLD) && + (pAd->PortCfg.LastRssi > pAd->PortCfg.RssiTrigger)) + { + // NDIS_802_11_RSSI Dbm = pAd->PortCfg.LastRssi - RSSI_TO_DBM_OFFSET; + // DBGPRINT(RT_DEBUG_TRACE, "SYNC - NdisMIndicateStatus *** RSSI %d dBm, greater than threshold %d dBm\n", + // Dbm, pAd->PortCfg.RssiTrigger - RSSI_TO_DBM_OFFSET); + } + + if (INFRA_ON(pAd)) // && (pAd->PortCfg.PhyMode == PHY_11BG_MIXED)) + { + BOOLEAN bUseShortSlot, bUseBGProtection; + + // decide to use/change to - + // 1. long slot (20 us) or short slot (9 us) time + // 2. turn on/off RTS/CTS and/or CTS-to-self protection + // 3. short preamble + bUseShortSlot = (pAd->PortCfg.UseShortSlotTime == TRUE) && CAP_IS_SHORT_SLOT_TIME(CapabilityInfo); + if (bUseShortSlot != pAd->PortCfg.ShortSlotInUsed) + AsicSetSlotTime(pAd, bUseShortSlot); + + bUseBGProtection = (pAd->PortCfg.UseBGProtection == 1) || // always use + ((pAd->PortCfg.UseBGProtection == 0) && ERP_IS_USE_PROTECTION(Erp)); + if (bUseBGProtection != pAd->PortCfg.BGProtectionInUsed) + { + pAd->PortCfg.BGProtectionInUsed = bUseBGProtection; + DBGPRINT(RT_DEBUG_TRACE, "SYNC - AP changed B/G protection to %d\n", bUseBGProtection); + } + + if ((pAd->PortCfg.TxPreambleInUsed == Rt802_11PreambleShort) && ERP_IS_USE_BARKER_PREAMBLE(Erp)) + { + MlmeSetTxPreamble(pAd, Rt802_11PreambleLong); + DBGPRINT(RT_DEBUG_TRACE, "SYNC - AP forced to use LONG preamble\n"); + } + } + + // only INFRASTRUCTURE mode support power-saving feature + if (INFRA_ON(pAd) && (pAd->PortCfg.Psm == PWR_SAVE)) + { + // 1. AP has backlogged unicast-to-me frame, stay AWAKE, send PSPOLL + // 2. AP has backlogged broadcast/multicast frame and we want those frames, stay AWAKE + // 3. we have outgoing frames in TxRing or PrioRing, better stay AWAKE + // 4. Psm change to PWR_SAVE, but AP not been informed yet, we better stay AWAKE + // 5. otherwise, put PHY back to sleep to save battery. + if (MessageToMe) + { + DBGPRINT(RT_DEBUG_TRACE, "SYNC - AP backlog unicast-to-me, stay AWAKE, send PSPOLL\n"); + EnqueuePsPoll(pAd); + } + else if (BcastFlag && (DtimCount == 0) && pAd->PortCfg.RecvDtim) + { + DBGPRINT(RT_DEBUG_TRACE, "SYNC - AP backlog broadcast/multicast, stay AWAKE\n"); + } + else if ((RTMPFreeDescriptorRequest(pAd, TX_RING, TX_RING_SIZE) != NDIS_STATUS_SUCCESS) || + (RTMPFreeDescriptorRequest(pAd, PRIO_RING, PRIO_RING_SIZE) != NDIS_STATUS_SUCCESS)) + { + DBGPRINT(RT_DEBUG_TRACE, "SYNC - outgoing frame in TxRing/PrioRing, stay AWAKE\n"); + } + else + { + USHORT NextDtim = DtimCount; + + if (NextDtim == 0) + NextDtim = DtimPeriod; + + TbttNumToNextWakeUp = pAd->PortCfg.DefaultListenCount; + if (pAd->PortCfg.RecvDtim && (TbttNumToNextWakeUp > NextDtim)) + TbttNumToNextWakeUp = NextDtim; + + DBGPRINT(RT_DEBUG_TRACE, "SYNC - PHY sleeps for %d Tbcn, Dtim=%d/%d\n", TbttNumToNextWakeUp, DtimCount, DtimPeriod); + AsicSleepThenAutoWakeup(pAd, TbttNumToNextWakeUp); + } + } + +#ifndef SINGLE_ADHOC_LINKUP + // At least another peer in this IBSS, declare MediaState as CONNECTED + if (ADHOC_ON(pAd) && (pAd->MediaState == NdisMediaStateDisconnected)) + { + pAd->MediaState = NdisMediaStateConnected; + + // 2003/03/12 - john + // Make sure this entry in "PortCfg.BssTab" table, thus complies to Microsoft's policy that + // "site survey" result should always include the current connected network. + // + Bssidx = BssTableSearch(&pAd->PortCfg.BssTab, &Bssid); + if (Bssidx == BSS_NOT_FOUND) + { + Bssidx = BssTableSetEntry(pAd, &pAd->PortCfg.BssTab, &Bssid, Ssid, SsidLen, + BssType, BeaconPeriod, CfExist, &CfParm, AtimWin, CapabilityInfo, + Rates, RatesLen, ExtendedRateIeExist, Channel, Elem->Rssi, Elem->Noise, TimeStamp, pVIE); + } + } +#endif + } + // not my BSSID, ignore it + } + // sanity check fail, ignore this frame +} + +/* + ========================================================================== + Description: + Receive PROBE REQ from remote peer when operating in IBSS mode + ========================================================================== + */ +VOID PeerProbeReqAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MACADDR Addr2; + CHAR Ssid[MAX_LEN_OF_SSID]; + UCHAR SsidLen; + MACHDR ProbeRspHdr; + NDIS_STATUS NStatus; + UCHAR *OutBuffer = NULL; + ULONG FrameLen = 0; + LARGE_INTEGER FakeTimestamp; + UCHAR SsidIe = IE_SSID, DsIe = IE_DS_PARM, IbssIe = IE_IBSS_PARM, SuppIe = IE_SUPP_RATES, + DsLen = 1, IbssLen = 2; + UCHAR SupportedRatesLen; + UCHAR SupportedRates[MAX_LEN_OF_SUPPORTED_RATES]; + UCHAR ExtRateIe = IE_EXT_SUPP_RATES, ExtRatesLen; + UCHAR ErpIe[3] = {IE_ERP, 1, 0}; + + if (! ADHOC_ON(pAd)) + return; + + if (PeerProbeReqSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, Ssid, &SsidLen)) //, Rates, &RatesLen)) + { + if ((SsidLen == 0) || RTMPEqualMemory(Ssid, pAd->PortCfg.Ssid, (ULONG) SsidLen)) + { + CSR15_STRUC Csr15; + + // we should respond a ProbeRsp only when we're the last BEACON transmitter + // in this ADHOC network. + RTMP_IO_READ32(pAd, CSR15, &Csr15.word); + if (Csr15.field.BeaconSent == 0) + { + DBGPRINT(RT_DEBUG_INFO, "SYNC - NOT last BEACON sender, no PROBE_RSP to %02x:%02x:%02x:%02x:%02x:%02x...\n", + Addr2.Octet[0],Addr2.Octet[1],Addr2.Octet[2],Addr2.Octet[3],Addr2.Octet[4],Addr2.Octet[5] ); + return; + } + + // 2003-12-10 802.11g WIFI spec disallow OFDM rates in 802.11g ADHOC mode + // make sure 1,2,5.5,11 are the firt 4 rates in PortCfg.SupportedRates[] array + if ((pAd->PortCfg.PhyMode == PHY_11BG_MIXED) && (pAd->PortCfg.AdhocMode == 0)) + { + int i; + SupportedRatesLen=0; + for (i=0;iPortCfg.SupportedRatesLen;i++) + { + switch (pAd->PortCfg.SupportedRates[i] & 0x7f) + { + case 2: + case 4: + case 11: + case 22: + SupportedRates[SupportedRatesLen] = pAd->PortCfg.SupportedRates[i]; + SupportedRatesLen ++; + break; + default: + break; + } + } + // error handling - should never happen + if (SupportedRatesLen != 4) + { + SupportedRatesLen = 4; + SupportedRates[0] = 0x82; + SupportedRates[1] = 0x84; + SupportedRates[2] = 0x8b; + SupportedRates[3] = 0x96; + } + } + else + { + SupportedRatesLen = pAd->PortCfg.SupportedRatesLen; + memcpy(SupportedRates, pAd->PortCfg.SupportedRates, SupportedRatesLen); + } + + // allocate and send out ProbeRsp frame + NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if (NStatus != NDIS_STATUS_SUCCESS) + return; + + pAd->PortCfg.AtimWin = 0; // ?????? + DBGPRINT(RT_DEBUG_TRACE, "SYNC - Send PROBE_RSP to %02x:%02x:%02x:%02x:%02x:%02x...\n", + Addr2.Octet[0],Addr2.Octet[1],Addr2.Octet[2],Addr2.Octet[3],Addr2.Octet[4],Addr2.Octet[5] ); + MgtMacHeaderInit(pAd, &ProbeRspHdr, SUBTYPE_PROBE_RSP, 0, &Addr2, &pAd->PortCfg.Bssid); + + if (SupportedRatesLen <= 8) + { + MakeOutgoingFrame(OutBuffer, &FrameLen, + MAC_HDR_LEN, &ProbeRspHdr, + TIMESTAMP_LEN, &FakeTimestamp, + 2, &pAd->PortCfg.BeaconPeriod, + 2, &pAd->PortCfg.CapabilityInfo, + 1, &SsidIe, + 1, &pAd->PortCfg.SsidLen, + pAd->PortCfg.SsidLen, pAd->PortCfg.Ssid, + 1, &SuppIe, + 1, &SupportedRatesLen, + SupportedRatesLen, SupportedRates, + 1, &DsIe, + 1, &DsLen, + 1, &pAd->PortCfg.Channel, + 1, &IbssIe, + 1, &IbssLen, + 2, &pAd->PortCfg.AtimWin, + END_OF_ARGS); + } + else + { + ExtRatesLen = SupportedRatesLen - 8; + SupportedRatesLen = 8; + MakeOutgoingFrame(OutBuffer, &FrameLen, + MAC_HDR_LEN, &ProbeRspHdr, + TIMESTAMP_LEN, &FakeTimestamp, + 2, &pAd->PortCfg.BeaconPeriod, + 2, &pAd->PortCfg.CapabilityInfo, + 1, &SsidIe, + 1, &pAd->PortCfg.SsidLen, + pAd->PortCfg.SsidLen, pAd->PortCfg.Ssid, + 1, &SuppIe, + 1, &SupportedRatesLen, + SupportedRatesLen, SupportedRates, + 1, &DsIe, + 1, &DsLen, + 1, &pAd->PortCfg.Channel, + 1, &IbssIe, + 1, &IbssLen, + 2, &pAd->PortCfg.AtimWin, + 3, ErpIe, + 1, &ExtRateIe, + 1, &ExtRatesLen, + ExtRatesLen, &SupportedRates[SupportedRatesLen], + END_OF_ARGS); + } + // If adhoc secruity is set for WPA-None, append the cipher suite IE + if (pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) + { + ULONG tmp; + UCHAR WpaIe = IE_WPA; + + if (pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) // Tkip + { + MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, + 1, &WpaIe, + 1, &CipherSuiteWpaNoneTkipLen, + CipherSuiteWpaNoneTkipLen, &CipherSuiteWpaNoneTkip[0], + END_OF_ARGS); + FrameLen += tmp; + } + else if (pAd->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) // Aes + { + MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, + 1, &WpaIe, + 1, &CipherSuiteWpaNoneAesLen, + CipherSuiteWpaNoneAesLen, &CipherSuiteWpaNoneAes[0], + END_OF_ARGS); + FrameLen += tmp; + } + } + MiniportMMRequest(pAd, OutBuffer, FrameLen); + } + } +} + +VOID BeaconTimeoutAtJoinAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + DBGPRINT(RT_DEBUG_TRACE, "SYNC - BeaconTimeoutAtJoinAction\n"); + pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; + MlmeCntlConfirm(pAd, MT2_JOIN_CONF, MLME_REJ_TIMEOUT); +} + +/* + ========================================================================== + Description: + Scan timeout procedure. basically add channel index by 1 and rescan + ========================================================================== + */ +VOID ScanTimeoutAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + pAd->Mlme.SyncAux.Channel = NextChannel(pAd, pAd->Mlme.SyncAux.Channel); + ScanNextChannel(pAd); +} + +/* + ========================================================================== + Description: + Scan next channel + ========================================================================== + */ +VOID ScanNextChannel( + IN PRTMP_ADAPTER pAd) +{ + MACHDR Hdr; + UCHAR SsidIe = IE_SSID, SuppRateIe = IE_SUPP_RATES; + VOID *OutBuffer = NULL; + VOID *OutBuffer2 = NULL; + NDIS_STATUS NStatus; + ULONG FrameLen = 0; + UCHAR SsidLen = 0; + + if (pAd->Mlme.SyncAux.Channel == 0) + { + DBGPRINT(RT_DEBUG_INFO, "SYNC - End of SCAN, restore to channel %d\n",pAd->PortCfg.Channel); + AsicSwitchChannel(pAd, pAd->PortCfg.Channel); + AsicLockChannel(pAd, pAd->PortCfg.Channel); + + pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; + MlmeCntlConfirm(pAd, MT2_SCAN_CONF, MLME_SUCCESS); + } + else + { + AsicSwitchChannel(pAd, pAd->Mlme.SyncAux.Channel); + + // Total SCAN time still limits within 3 sec (DDK constraint). + // TODO: We need more intelligent rules here to further improve out-of-service issue. + // e.g. temporary stop copying NDIS packet to TxRing until SCAN complete +// if (INFRA_ON(pAd) || ADHOC_ON(pAd)) + + // We need to shorten active scan time in order for WZC connect issue + if (pAd->Mlme.SyncAux.ScanType == SCAN_ACTIVE) + RTMPSetTimer(pAd, &pAd->Mlme.SyncAux.ScanTimer, ACTIVE_SCAN_TIME); + else if (pAd->PortCfg.PhyMode == PHY_11ABG_MIXED) + RTMPSetTimer(pAd, &pAd->Mlme.SyncAux.ScanTimer, MIN_CHANNEL_TIME); + else + RTMPSetTimer(pAd, &pAd->Mlme.SyncAux.ScanTimer, MAX_CHANNEL_TIME); + + MgtMacHeaderInit(pAd, &Hdr, SUBTYPE_PROBE_REQ, 0, &pAd->PortCfg.Broadcast, &pAd->PortCfg.Broadcast); + // There is no need to send broadcast probe request if active scan is in effect. + // The same rulr should apply to passive scan also. + if (pAd->Mlme.SyncAux.ScanType == SCAN_PASSIVE) + { + // Send the first probe request with empty SSID + NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if (NStatus != NDIS_STATUS_SUCCESS) + { + DBGPRINT(RT_DEBUG_INFO, "SYNC - ScanNextChannel() allocate memory fail\n"); + pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; + MlmeCntlConfirm(pAd, MT2_SCAN_CONF, MLME_FAIL_NO_RESOURCE); + return; + } + + DBGPRINT(RT_DEBUG_INFO, "SYNC - send passive ProbeReq @ channel=%d...\n", pAd->Mlme.SyncAux.Channel); + SsidLen = 0; + MakeOutgoingFrame(OutBuffer, &FrameLen, + sizeof(MACHDR), (UCHAR*)&Hdr, + 1, &SsidIe, + 1, &SsidLen, + 1, &SuppRateIe, + 1, &pAd->PortCfg.SupportedRatesLen, + pAd->PortCfg.SupportedRatesLen, pAd->PortCfg.SupportedRates, + END_OF_ARGS); + + MiniportMMRequest(pAd, OutBuffer, FrameLen); + } + else if (pAd->Mlme.SyncAux.ScanType == SCAN_ACTIVE) + { + // Allocate another for probe scan with SSID + NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer2); //Get an unused nonpaged memory + if (NStatus != NDIS_STATUS_SUCCESS) + { + DBGPRINT(RT_DEBUG_TRACE, "SYNC - ScanNextChannel() allocate memory fail\n"); + pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; + MlmeCntlConfirm(pAd, MT2_SCAN_CONF, MLME_FAIL_NO_RESOURCE); + return; + } + // make another probe scan with SSID from mlme.cntlaux.ssid + SsidLen = pAd->PortCfg.SsidLen; + MakeOutgoingFrame(OutBuffer2, &FrameLen, + sizeof(MACHDR), &Hdr, + 1, &SsidIe, + 1, &SsidLen, + SsidLen, pAd->PortCfg.Ssid, + 1, &SuppRateIe, + 1, &pAd->PortCfg.SupportedRatesLen, + pAd->PortCfg.SupportedRatesLen, pAd->PortCfg.SupportedRates, + END_OF_ARGS); + + MiniportMMRequest(pAd, OutBuffer2, FrameLen); + + DBGPRINT(RT_DEBUG_INFO, "SYNC - send active ProbeReq @ channel=%d with essid=%s\n", pAd->Mlme.SyncAux.Channel, pAd->PortCfg.Ssid); + } + + pAd->Mlme.SyncMachine.CurrState = SCAN_LISTEN; + } +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID InvalidStateWhenScan( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + DBGPRINT(RT_DEBUG_TRACE, "AYNC - InvalidStateWhenScan(state=%d). Reset SYNC machine\n", pAd->Mlme.SyncMachine.CurrState); + pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; + MlmeCntlConfirm(pAd, MT2_SCAN_CONF, MLME_STATE_MACHINE_REJECT); +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID InvalidStateWhenJoin( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + DBGPRINT(RT_DEBUG_TRACE, "InvalidStateWhenJoin(state=%d). Reset SYNC machine\n", pAd->Mlme.SyncMachine.CurrState); + pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; + MlmeCntlConfirm(pAd, MT2_JOIN_CONF, MLME_STATE_MACHINE_REJECT); +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID InvalidStateWhenStart( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + DBGPRINT(RT_DEBUG_TRACE, "InvalidStateWhenStart(state=%d). Reset SYNC machine\n", pAd->Mlme.SyncMachine.CurrState); + pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; + MlmeCntlConfirm(pAd, MT2_START_CONF, MLME_STATE_MACHINE_REJECT); +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID EnqueuePsPoll( + IN PRTMP_ADAPTER pAd) +{ + NDIS_STATUS NState; + PSPOLL_FRAME *PsFr; + + DBGPRINT(RT_DEBUG_TRACE, "SYNC - send PsPoll ...\n"); + + NState = MlmeAllocateMemory(pAd, (PVOID)&PsFr); //Get an unused nonpaged memory + if (NState == NDIS_STATUS_SUCCESS) + { + memcpy((VOID *)PsFr, (VOID *)&pAd->Mlme.PsFr, sizeof(PSPOLL_FRAME)); + MiniportMMRequest(pAd, (VOID *)PsFr, sizeof(PSPOLL_FRAME)); + } +} + +// 2003-04-17 john +// driver force send out a BEACON frame to cover ADHOC mode BEACON starving issue +// that is, in ADHOC mode, driver guarantee itself can send out at least a BEACON +// per a specified duration, even the peer's clock is faster than us and win all the +// hardware-based BEACON TX oppertunity. +// we may remove this software feature once 2560 IC fix this problem in ASIC. +VOID EnqueueBeaconFrame( + IN PRTMP_ADAPTER pAd) +{ + NDIS_STATUS NState; + PTXD_STRUC pTxD = (PTXD_STRUC)pAd->BeaconRing.va_addr; + CHAR *pBeacon; + LARGE_INTEGER Tsf; + + NState = MlmeAllocateMemory(pAd, (PVOID)&pBeacon); //Get an unused nonpaged memory + if (NState == NDIS_STATUS_SUCCESS) + { + DBGPRINT(RT_DEBUG_TRACE, "SYNC - driver sent BEACON (len=%d)...\n",pTxD->DataByteCnt); + RTMP_IO_READ32(pAd, CSR17, &Tsf.vv.HighPart); + RTMP_IO_READ32(pAd, CSR16, &Tsf.vv.LowPart); + memcpy(pBeacon, pAd->BeaconRing.va_data_addr, pTxD->DataByteCnt); + memcpy(pBeacon + MAC_HDR_LEN, &Tsf, TIMESTAMP_LEN); + MiniportMMRequest(pAd, (VOID *)pBeacon, pTxD->DataByteCnt); + } +} + +/* + ========================================================================== + Description: + Send out a NULL frame to AP. The prpose is to inform AP this client + current PSM bit. + NOTE: + This routine should only be used in infrastructure mode. + ========================================================================== + */ +VOID EnqueueNullFrame( + IN PRTMP_ADAPTER pAd, + IN UCHAR TxRate) +{ + NDIS_STATUS NState; + MACHDR *NullFr; + + // since TxRate may change, we have to change Duration each time + pAd->Mlme.NullFr.Duration = RTMPCalcDuration(pAd, TxRate, 14); + NState = MlmeAllocateMemory(pAd, (PVOID)&NullFr); //Get an unused nonpaged memory + if (NState == NDIS_STATUS_SUCCESS) + { + memcpy((VOID *)NullFr, (VOID *)&pAd->Mlme.NullFr, sizeof(MACHDR)); + RTMPSendNullFrame(pAd, (VOID *)NullFr, sizeof(MACHDR), TxRate); + } +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID EnqueueProbeRequest( + IN PRTMP_ADAPTER pAd) +{ + NDIS_STATUS NState; + UCHAR SsidIe = IE_SSID, SuppRateIe = IE_SUPP_RATES; + VOID *OutBuffer; + ULONG FrameLen = 0; + MACHDR Hdr; + + DBGPRINT(RT_DEBUG_TRACE, "force out a ProbeRequest ...\n"); + + NState = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if (NState == NDIS_STATUS_SUCCESS) + { + MgtMacHeaderInit(pAd, &Hdr, SUBTYPE_PROBE_REQ, 0, &pAd->PortCfg.Broadcast, &pAd->PortCfg.Broadcast); + + // this ProbeRequest explicitly specify SSID to reduce unwanted ProbeResponse + MakeOutgoingFrame(OutBuffer, &FrameLen, + sizeof(MACHDR), &Hdr, + 1, &SsidIe, + 1, &pAd->PortCfg.SsidLen, + pAd->PortCfg.SsidLen, pAd->PortCfg.Ssid, + 1, &SuppRateIe, + 1, &pAd->PortCfg.SupportedRatesLen, + pAd->PortCfg.SupportedRatesLen, pAd->PortCfg.SupportedRates, + END_OF_ARGS); + MiniportMMRequest(pAd, OutBuffer, FrameLen); + } +} + +/* + ========================================================================== + Description: + Update PortCfg->ChannelList[] according to 1) Country Region 2) RF IC type, + and 3) PHY-mode user selected. + The outcome is used by driver when doing site survey. + ========================================================================== + */ +VOID BuildChannelList( + IN PRTMP_ADAPTER pAd) +{ + UCHAR i, index = 0; + memset(pAd->PortCfg.ChannelList, 0, MAX_LEN_OF_CHANNELS); + + // if not 11a-only mode, channel list starts from 2.4Ghz band + if (pAd->PortCfg.PhyMode != PHY_11A) +{ + switch (pAd->PortCfg.CountryRegion) + { + case REGION_FCC: // 1 - 11 + memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_FCC, sizeof(Ra24Ghz_FCC)); + index += sizeof(Ra24Ghz_FCC); + break; + case REGION_IC: // 1 -11 + memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_IC, sizeof(Ra24Ghz_IC)); + index += sizeof(Ra24Ghz_IC); + break; + case REGION_ISRAEL: // 3 - 9 + memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_ISRAEL, sizeof(Ra24Ghz_ISRAEL)); + index += sizeof(Ra24Ghz_ISRAEL); + break; + case REGION_ETSI: // 1 - 13 + memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_ESTI, sizeof(Ra24Ghz_ESTI)); + index += sizeof(Ra24Ghz_ESTI); + break; + case REGION_SPAIN: // 10 - 11 + memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_SPAIN, sizeof(Ra24Ghz_SPAIN)); + index += sizeof(Ra24Ghz_SPAIN); + break; + case REGION_FRANCE: // 10 -13 + memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_FRANCE, sizeof(Ra24Ghz_FRANCE)); + index += sizeof(Ra24Ghz_FRANCE); + break; + case REGION_MKK: // 14 + memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_MKK, sizeof(Ra24Ghz_MKK)); + index += sizeof(Ra24Ghz_MKK); + break; + case REGION_MKK1: // 1 - 14 + memcpy(&pAd->PortCfg.ChannelList[index], Ra24Ghz_MKK1, sizeof(Ra24Ghz_MKK1)); + index += sizeof(Ra24Ghz_MKK1); + break; + default: // Error. should never happen + break; + } + } + + if ((pAd->PortCfg.PhyMode == PHY_11A) || (pAd->PortCfg.PhyMode == PHY_11ABG_MIXED)) + { +#if 0 + switch (pAd->PortCfg.CountryRegion) + { + case REGION_FCC: // UNII <36,40,44,48,52,56,60,64> <149,153,157,161> + case REGION_IC: // UNII <36,40,44,48,52,56,60,64> <149,153,157,161> + case REGION_ISRAEL: // UNII <36,40,44,48,52,56,60,64> <149,153,157,161> + memcpy(&pAd->PortCfg.ChannelList[index], Ra5Ghz_UNII, sizeof(Ra5Ghz_UNII)); + index += sizeof(Ra5Ghz_UNII); + break; + case REGION_ETSI: // HiperLAN2 <36,40,44,48,52,56,60,64> <100,104,108,112,116,120,124,128,132,136,140> + case REGION_SPAIN: // HiperLAN2 <36,40,44,48,52,56,60,64> <100,104,108,112,116,120,124,128,132,136,140> + case REGION_FRANCE: // HiperLAN2 <36,40,44,48,52,56,60,64> <100,104,108,112,116,120,124,128,132,136,140> + memcpy(&pAd->PortCfg.ChannelList[index], Ra5Ghz_HyperLAN2, sizeof(Ra5Ghz_HyperLAN2)); + index += sizeof(Ra5Ghz_HyperLAN2); + break; + case REGION_MKK: // Japan MMAC <34,38,42,46> + case REGION_MKK1: // Japan MMAC <34,38,42,46> + memcpy(&pAd->PortCfg.ChannelList[index], Ra5Ghz_MMAC, sizeof(Ra5Ghz_MMAC)); + index += sizeof(Ra5Ghz_MMAC); + break; + default: // Error. should never happen + break; + } +#else + // 2003-10-05 john - use UNII temoparaily for all regulation domains for easy test untill + // RF guys confirm the supported channel plans + memcpy(&pAd->PortCfg.ChannelList[index], Ra5Ghz_UNII, sizeof(Ra5Ghz_UNII)); + index += sizeof(Ra5Ghz_UNII); +#endif + } + + pAd->PortCfg.ChannelListNum = index; + DBGPRINT(RT_DEBUG_TRACE,"country code=%d, RFIC=%d, PHY mode=%d, support %d channels\n", + pAd->PortCfg.CountryRegion, pAd->PortCfg.RfType, pAd->PortCfg.PhyMode, pAd->PortCfg.ChannelListNum); + for (i=0;iPortCfg.ChannelList[i]); + } +} + +/* + ========================================================================== + Description: + This routine return the first channel number according to the country + code selection and RF IC selection (signal band or dual band). It is called + whenever driver need to start a site survey of all supported channels. + Return: + ch - the first channel number of current country code setting + ========================================================================== + */ +UCHAR FirstChannel( + IN PRTMP_ADAPTER pAd) +{ + return pAd->PortCfg.ChannelList[0]; +} + +/* + ========================================================================== + Description: + This routine returns the next channel number. This routine is called + during driver need to start a site survey of all supported channels. + Return: + next_channel - the next channel number valid in current country code setting. + Note: + return 0 if no more next channel + ========================================================================== + */ +UCHAR NextChannel( + IN PRTMP_ADAPTER pAd, + IN UCHAR channel) +{ + int i; + UCHAR next_channel = 0; + + for (i = 0; i < (pAd->PortCfg.ChannelListNum - 1); i++) + if (channel == pAd->PortCfg.ChannelList[i]) + { + next_channel = pAd->PortCfg.ChannelList[i+1]; + break; + } + return next_channel; +} + --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/eeprom.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/eeprom.c @@ -1,237 +1,237 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: eeprom.c - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * MarkW 8th Dec 04 Baseline code - ***************************************************************************/ - -#include "rt_config.h" - -VOID RaiseClock( - IN PRTMP_ADAPTER pAd, - IN ULONG *x) -{ - *x = *x | EESK; - RTMP_IO_WRITE32(pAd, CSR21, *x); - udelay(1); -} - -VOID LowerClock( - IN PRTMP_ADAPTER pAd, - IN ULONG *x) -{ - *x = *x & ~EESK; - RTMP_IO_WRITE32(pAd, CSR21, *x); - udelay(1); -} - -USHORT ShiftInBits( - IN PRTMP_ADAPTER pAd) -{ - ULONG x,i; - USHORT data=0; - - RTMP_IO_READ32(pAd, CSR21, &x); - - x &= ~( EEDO | EEDI); - - for(i=0; i<16; i++) - { - data = data << 1; - RaiseClock(pAd, &x); - - RTMP_IO_READ32(pAd, CSR21, &x); - - x &= ~(EEDI); - if(x & EEDO) - data |= 1; - - LowerClock(pAd, &x); - } - - return data; -} - -VOID ShiftOutBits( - IN PRTMP_ADAPTER pAd, - IN USHORT data, - IN USHORT count) -{ - ULONG x,mask; - - mask = 0x01 << (count - 1); - RTMP_IO_READ32(pAd, CSR21, &x); - - x &= ~(EEDO | EEDI); - - do - { - x &= ~EEDI; - if(data & mask) x |= EEDI; - - RTMP_IO_WRITE32(pAd, CSR21, x); - - RaiseClock(pAd, &x); - LowerClock(pAd, &x); - - mask = mask >> 1; - } while(mask); - - x &= ~EEDI; - RTMP_IO_WRITE32(pAd, CSR21, x); -} - -VOID EEpromCleanup( - IN PRTMP_ADAPTER pAd) -{ - ULONG x; - - RTMP_IO_READ32(pAd, CSR21, &x); - - x &= ~(EECS | EEDI); - RTMP_IO_WRITE32(pAd, CSR21, x); - - RaiseClock(pAd, &x); - LowerClock(pAd, &x); -} - -VOID EWEN( - IN PRTMP_ADAPTER pAd) -{ - ULONG x; - - // reset bits and set EECS - RTMP_IO_READ32(pAd, CSR21, &x); - x &= ~(EEDI | EEDO | EESK); - x |= EECS; - RTMP_IO_WRITE32(pAd, CSR21, x); - - // kick a pulse - RaiseClock(pAd, &x); - LowerClock(pAd, &x); - - // output the read_opcode and six pulse in that order - ShiftOutBits(pAd, EEPROM_EWEN_OPCODE, 5); - ShiftOutBits(pAd, 0, 6); - - EEpromCleanup(pAd); -} - -VOID EWDS( - IN PRTMP_ADAPTER pAd) -{ - ULONG x; - - // reset bits and set EECS - RTMP_IO_READ32(pAd, CSR21, &x); - x &= ~(EEDI | EEDO | EESK); - x |= EECS; - RTMP_IO_WRITE32(pAd, CSR21, x); - - // kick a pulse - RaiseClock(pAd, &x); - LowerClock(pAd, &x); - - // output the read_opcode and six pulse in that order - ShiftOutBits(pAd, EEPROM_EWDS_OPCODE, 5); - ShiftOutBits(pAd, 0, 6); - - EEpromCleanup(pAd); -} - -USHORT RTMP_EEPROM_READ16( - IN PRTMP_ADAPTER pAd, - IN USHORT Offset) -{ - ULONG x; - USHORT data; - - Offset /= 2; - // reset bits and set EECS - RTMP_IO_READ32(pAd, CSR21, &x); - x &= ~(EEDI | EEDO | EESK); - x |= EECS; - RTMP_IO_WRITE32(pAd, CSR21, x); - - // kick a pulse - RaiseClock(pAd, &x); - LowerClock(pAd, &x); - - // output the read_opcode and register number in that order - ShiftOutBits(pAd, EEPROM_READ_OPCODE, 3); - ShiftOutBits(pAd, Offset, pAd->EEPROMAddressNum); - - // Now read the data (16 bits) in from the selected EEPROM word - data = ShiftInBits(pAd); - - EEpromCleanup(pAd); - - return data; -} //ReadEEprom - -VOID RTMP_EEPROM_WRITE16( - IN PRTMP_ADAPTER pAd, - IN USHORT Offset, - IN USHORT Data) -{ - ULONG i, x; - - Offset /= 2; - - EWEN(pAd); - - // reset bits and set EECS - RTMP_IO_READ32(pAd, CSR21, &x); - x &= ~(EEDI | EEDO | EESK); - x |= EECS; - RTMP_IO_WRITE32(pAd, CSR21, x); - - // kick a pulse - RaiseClock(pAd, &x); - LowerClock(pAd, &x); - - // output the read_opcode ,register number and data in that order - ShiftOutBits(pAd, EEPROM_WRITE_OPCODE, 3); - ShiftOutBits(pAd, Offset, pAd->EEPROMAddressNum); - ShiftOutBits(pAd, Data, 16); // 16-bit access - - // read DO status - RTMP_IO_READ32(pAd, CSR21, &x); - - EEpromCleanup(pAd); - - for(i=0; i<10; i++) - udelay(1000); //delay for twp(MAX)=10ms - - EWDS(pAd); - - EEpromCleanup(pAd); -} - - +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: eeprom.c + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * MarkW 8th Dec 04 Baseline code + ***************************************************************************/ + +#include "rt_config.h" + +VOID RaiseClock( + IN PRTMP_ADAPTER pAd, + IN ULONG *x) +{ + *x = *x | EESK; + RTMP_IO_WRITE32(pAd, CSR21, *x); + udelay(1); +} + +VOID LowerClock( + IN PRTMP_ADAPTER pAd, + IN ULONG *x) +{ + *x = *x & ~EESK; + RTMP_IO_WRITE32(pAd, CSR21, *x); + udelay(1); +} + +USHORT ShiftInBits( + IN PRTMP_ADAPTER pAd) +{ + ULONG x,i; + USHORT data=0; + + RTMP_IO_READ32(pAd, CSR21, &x); + + x &= ~( EEDO | EEDI); + + for(i=0; i<16; i++) + { + data = data << 1; + RaiseClock(pAd, &x); + + RTMP_IO_READ32(pAd, CSR21, &x); + + x &= ~(EEDI); + if(x & EEDO) + data |= 1; + + LowerClock(pAd, &x); + } + + return data; +} + +VOID ShiftOutBits( + IN PRTMP_ADAPTER pAd, + IN USHORT data, + IN USHORT count) +{ + ULONG x,mask; + + mask = 0x01 << (count - 1); + RTMP_IO_READ32(pAd, CSR21, &x); + + x &= ~(EEDO | EEDI); + + do + { + x &= ~EEDI; + if(data & mask) x |= EEDI; + + RTMP_IO_WRITE32(pAd, CSR21, x); + + RaiseClock(pAd, &x); + LowerClock(pAd, &x); + + mask = mask >> 1; + } while(mask); + + x &= ~EEDI; + RTMP_IO_WRITE32(pAd, CSR21, x); +} + +VOID EEpromCleanup( + IN PRTMP_ADAPTER pAd) +{ + ULONG x; + + RTMP_IO_READ32(pAd, CSR21, &x); + + x &= ~(EECS | EEDI); + RTMP_IO_WRITE32(pAd, CSR21, x); + + RaiseClock(pAd, &x); + LowerClock(pAd, &x); +} + +VOID EWEN( + IN PRTMP_ADAPTER pAd) +{ + ULONG x; + + // reset bits and set EECS + RTMP_IO_READ32(pAd, CSR21, &x); + x &= ~(EEDI | EEDO | EESK); + x |= EECS; + RTMP_IO_WRITE32(pAd, CSR21, x); + + // kick a pulse + RaiseClock(pAd, &x); + LowerClock(pAd, &x); + + // output the read_opcode and six pulse in that order + ShiftOutBits(pAd, EEPROM_EWEN_OPCODE, 5); + ShiftOutBits(pAd, 0, 6); + + EEpromCleanup(pAd); +} + +VOID EWDS( + IN PRTMP_ADAPTER pAd) +{ + ULONG x; + + // reset bits and set EECS + RTMP_IO_READ32(pAd, CSR21, &x); + x &= ~(EEDI | EEDO | EESK); + x |= EECS; + RTMP_IO_WRITE32(pAd, CSR21, x); + + // kick a pulse + RaiseClock(pAd, &x); + LowerClock(pAd, &x); + + // output the read_opcode and six pulse in that order + ShiftOutBits(pAd, EEPROM_EWDS_OPCODE, 5); + ShiftOutBits(pAd, 0, 6); + + EEpromCleanup(pAd); +} + +USHORT RTMP_EEPROM_READ16( + IN PRTMP_ADAPTER pAd, + IN USHORT Offset) +{ + ULONG x; + USHORT data; + + Offset /= 2; + // reset bits and set EECS + RTMP_IO_READ32(pAd, CSR21, &x); + x &= ~(EEDI | EEDO | EESK); + x |= EECS; + RTMP_IO_WRITE32(pAd, CSR21, x); + + // kick a pulse + RaiseClock(pAd, &x); + LowerClock(pAd, &x); + + // output the read_opcode and register number in that order + ShiftOutBits(pAd, EEPROM_READ_OPCODE, 3); + ShiftOutBits(pAd, Offset, pAd->EEPROMAddressNum); + + // Now read the data (16 bits) in from the selected EEPROM word + data = ShiftInBits(pAd); + + EEpromCleanup(pAd); + + return data; +} //ReadEEprom + +VOID RTMP_EEPROM_WRITE16( + IN PRTMP_ADAPTER pAd, + IN USHORT Offset, + IN USHORT Data) +{ + ULONG i, x; + + Offset /= 2; + + EWEN(pAd); + + // reset bits and set EECS + RTMP_IO_READ32(pAd, CSR21, &x); + x &= ~(EEDI | EEDO | EESK); + x |= EECS; + RTMP_IO_WRITE32(pAd, CSR21, x); + + // kick a pulse + RaiseClock(pAd, &x); + LowerClock(pAd, &x); + + // output the read_opcode ,register number and data in that order + ShiftOutBits(pAd, EEPROM_WRITE_OPCODE, 3); + ShiftOutBits(pAd, Offset, pAd->EEPROMAddressNum); + ShiftOutBits(pAd, Data, 16); // 16-bit access + + // read DO status + RTMP_IO_READ32(pAd, CSR21, &x); + + EEpromCleanup(pAd); + + for(i=0; i<10; i++) + udelay(1000); //delay for twp(MAX)=10ms + + EWDS(pAd); + + EEpromCleanup(pAd); +} + + --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/rtmp_wep.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/rtmp_wep.c @@ -1,441 +1,441 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: rtmp_wep.c - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * PaulW 28th Sep 02 Initial code - * MarkW 8th Dec 04 Baseline code - ***************************************************************************/ - -#include "rt_config.h" - -ULONG FCSTAB_32[256] = -{ - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, - 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, - 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, - 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, - 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, - 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, - 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, - 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, - 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, - 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, - 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, - 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, - 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, - 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, - 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, - 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, - 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, - 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, - 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, - 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, - 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, - 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, - 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, - 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, - 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, - 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, - 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, - 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, - 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, - 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, - 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, - 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, - 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, - 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, - 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, - 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, - 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, - 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, - 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, - 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, - 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, - 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, - 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, - 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, - 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, - 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, - 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, - 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, - 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, - 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, - 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, - 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, - 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, - 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, - 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, - 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, - 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, - 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, - 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, - 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, - 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, - 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d -}; - -UCHAR WEPKEY[] = { - //IV - 0x00, 0x11, 0x22, - //WEP KEY - 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC - }; - - -/* - ======================================================================== - - Routine Description: - Init WEP function. - - Arguments: - pAdapter Pointer to our adapter - pKey Pointer to the WEP KEY - KeyId WEP Key ID - KeyLen the length of WEP KEY - pDest Pointer to the destination which Encryption data will store in. - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPInitWepEngine( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pKey, - IN UCHAR KeyId, - IN UCHAR KeyLen, - IN OUT PUCHAR pDest) -{ - UINT i; - - pAdapter->PrivateInfo.FCSCRC32 = PPPINITFCS32; //Init crc32. - memcpy(WEPKEY + 3, pKey, KeyLen); - - for(i = 0; i < 3; i++) - WEPKEY[i] = RandomByte(pAdapter); //Call mlme RandomByte() function. - ARCFOUR_INIT(&pAdapter->PrivateInfo.WEPCONTEXT, WEPKEY, KeyLen + 3); //INIT SBOX, KEYLEN+3(IV) - - memcpy(pDest, WEPKEY, 3); //Append Init Vector - *(pDest+3) = (KeyId << 6); //Append KEYID - -} - -/* - ======================================================================== - - Routine Description: - Encrypt transimitted data - - Arguments: - pAdapter Pointer to our adapter - pSrc Pointer to the transimitted source data that will be encrypt - pDest Pointer to the destination where entryption data will be store in. - Len Indicate the length of the source data - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPEncryptData( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pSrc, - IN PUCHAR pDest, - IN UINT Len) -{ - pAdapter->PrivateInfo.FCSCRC32 = RTMP_CALC_FCS32(pAdapter->PrivateInfo.FCSCRC32, pSrc, Len); - ARCFOUR_ENCRYPT(&pAdapter->PrivateInfo.WEPCONTEXT, pDest, pSrc, Len); -} - -/* - ======================================================================== - - Routine Description: - Decrypt received data - - Arguments: - pAdapter Pointer to our adapter - pSrc Pointer to the received data - Len the length of the received data - - Return Value: - TRUE Decrypt WEP data success - FALSE Decrypt WEP data failed - - Note: - - ======================================================================== -*/ -BOOLEAN RTMPDecryptData( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pSrc, - IN UINT Len) -{ - ULONG trailfcs; - ULONG crc32; - UCHAR KeyIdx; - - memcpy(WEPKEY, pSrc, 3); //Get WEP IV - - KeyIdx = (*(pSrc + 3) & 0xc0) >> 6; - if (pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen == 0) - return (FALSE); - - memcpy(WEPKEY + 3, pAdapter->PortCfg.SharedKey[KeyIdx].Key, pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen); - ARCFOUR_INIT(&pAdapter->PrivateInfo.WEPCONTEXT, WEPKEY, pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen + 3); - ARCFOUR_DECRYPT(&pAdapter->PrivateInfo.WEPCONTEXT, pSrc, pSrc + 4, Len - 4); - memcpy(&trailfcs, pSrc + Len - 8, 4); - crc32 = RTMP_CALC_FCS32(PPPINITFCS32, pSrc, Len - 8); //Skip last 4 bytes(FCS). - crc32 ^= 0xffffffff; /* complement */ -#ifndef BIG_ENDIAN - if(crc32 != trailfcs) -#else - if(crc32 != SWAP32(trailfcs)) -#endif - { - DBGPRINT(RT_DEBUG_TRACE, "! WEP Data CRC Error !\n"); //CRC error. - return (FALSE); - } - return (TRUE); -} - -/* - ======================================================================== - - Routine Description: - The Stream Cipher Encryption Algorithm "ARCFOUR" initialize - - Arguments: - Ctx Pointer to ARCFOUR CONTEXT (SBOX) - pKey Pointer to the WEP KEY - KeyLen Indicate the length fo the WEP KEY - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID ARCFOUR_INIT( - IN PARCFOURCONTEXT Ctx, - IN PUCHAR pKey, - IN UINT KeyLen) -{ - UCHAR t, u; - UINT keyindex; - UINT stateindex; - PUCHAR state; - UINT counter; - - state = Ctx->STATE; - Ctx->X = 0; - Ctx->Y = 0; - for (counter = 0; counter < 256; counter++) - state[counter] = (UCHAR)counter; - keyindex = 0; - stateindex = 0; - for (counter = 0; counter < 256; counter++) - { - t = state[counter]; - stateindex = (stateindex + pKey[keyindex] + t) & 0xff; - u = state[stateindex]; - state[stateindex] = t; - state[counter] = u; - if (++keyindex >= KeyLen) - keyindex = 0; - } -} - -/* - ======================================================================== - - Routine Description: - Get bytes from ARCFOUR CONTEXT (S-BOX) - - Arguments: - Ctx Pointer to ARCFOUR CONTEXT (SBOX) - - Return Value: - UCHAR - the value of the ARCFOUR CONTEXT (S-BOX) - - Note: - - ======================================================================== -*/ -UCHAR ARCFOUR_BYTE( - IN PARCFOURCONTEXT Ctx) -{ - UINT x; - UINT y; - UCHAR sx, sy; - PUCHAR state; - - state = Ctx->STATE; - x = (Ctx->X + 1) & 0xff; - sx = state[x]; - y = (sx + Ctx->Y) & 0xff; - sy = state[y]; - Ctx->X = x; - Ctx->Y = y; - state[y] = sx; - state[x] = sy; - - return(state[(sx + sy) & 0xff]); - -} - -/* - ======================================================================== - - Routine Description: - The Stream Cipher Decryption Algorithm - - Arguments: - Ctx Pointer to ARCFOUR CONTEXT (SBOX) - pDest Pointer to the Destination - pSrc Pointer to the Source data - Len Indicate the length of the Source data - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID ARCFOUR_DECRYPT( - IN PARCFOURCONTEXT Ctx, - IN PUCHAR pDest, - IN PUCHAR pSrc, - IN UINT Len) -{ - UINT i; - - for (i = 0; i < Len; i++) - pDest[i] = pSrc[i] ^ ARCFOUR_BYTE(Ctx); -} - -/* - ======================================================================== - - Routine Description: - The Stream Cipher Encryption Algorithm - - Arguments: - Ctx Pointer to ARCFOUR CONTEXT (SBOX) - pDest Pointer to the Destination - pSrc Pointer to the Source data - Len Indicate the length of the Source dta - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID ARCFOUR_ENCRYPT( - IN PARCFOURCONTEXT Ctx, - IN PUCHAR pDest, - IN PUCHAR pSrc, - IN UINT Len) -{ - UINT i; - - for (i = 0; i < Len; i++) - pDest[i] = pSrc[i] ^ ARCFOUR_BYTE(Ctx); -} - -/* - ======================================================================== - - Routine Description: - Calculate a new FCS given the current FCS and the new data. - - Arguments: - Fcs the original FCS value - Cp pointer to the data which will be calculate the FCS - Len the length of the data - - Return Value: - ULONG - FCS 32 bits - - Note: - - ======================================================================== -*/ -ULONG RTMP_CALC_FCS32( - IN ULONG Fcs, - IN PUCHAR Cp, - IN INT Len) -{ - while (Len--) - Fcs = (((Fcs) >> 8) ^ FCSTAB_32[((Fcs) ^ (*Cp++)) & 0xff]); - - return (Fcs); -} - - -/* - ======================================================================== - - Routine Description: - Get last FCS and encrypt it to the destination - - Arguments: - pDest Pointer to the Destination - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPSetICV( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pDest) -{ - pAdapter->PrivateInfo.FCSCRC32 ^= 0xffffffff; /* complement */ - -#ifdef BIG_ENDIAN - pAdapter->PrivateInfo.FCSCRC32 = SWAP32(pAdapter->PrivateInfo.FCSCRC32); -#endif - - ARCFOUR_ENCRYPT(&pAdapter->PrivateInfo.WEPCONTEXT, pDest, (PUCHAR) &pAdapter->PrivateInfo.FCSCRC32, 4); -} - +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: rtmp_wep.c + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * PaulW 28th Sep 02 Initial code + * MarkW 8th Dec 04 Baseline code + ***************************************************************************/ + +#include "rt_config.h" + +ULONG FCSTAB_32[256] = +{ + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, + 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, + 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, + 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, + 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, + 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, + 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, + 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, + 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, + 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, + 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, + 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, + 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, + 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, + 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, + 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, + 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, + 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, + 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, + 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, + 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, + 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, + 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, + 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, + 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, + 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, + 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, + 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, + 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, + 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, + 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, + 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, + 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, + 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, + 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, + 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, + 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, + 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, + 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, + 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, + 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, + 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, + 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, + 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, + 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, + 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d +}; + +UCHAR WEPKEY[] = { + //IV + 0x00, 0x11, 0x22, + //WEP KEY + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC + }; + + +/* + ======================================================================== + + Routine Description: + Init WEP function. + + Arguments: + pAdapter Pointer to our adapter + pKey Pointer to the WEP KEY + KeyId WEP Key ID + KeyLen the length of WEP KEY + pDest Pointer to the destination which Encryption data will store in. + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPInitWepEngine( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pKey, + IN UCHAR KeyId, + IN UCHAR KeyLen, + IN OUT PUCHAR pDest) +{ + UINT i; + + pAdapter->PrivateInfo.FCSCRC32 = PPPINITFCS32; //Init crc32. + memcpy(WEPKEY + 3, pKey, KeyLen); + + for(i = 0; i < 3; i++) + WEPKEY[i] = RandomByte(pAdapter); //Call mlme RandomByte() function. + ARCFOUR_INIT(&pAdapter->PrivateInfo.WEPCONTEXT, WEPKEY, KeyLen + 3); //INIT SBOX, KEYLEN+3(IV) + + memcpy(pDest, WEPKEY, 3); //Append Init Vector + *(pDest+3) = (KeyId << 6); //Append KEYID + +} + +/* + ======================================================================== + + Routine Description: + Encrypt transimitted data + + Arguments: + pAdapter Pointer to our adapter + pSrc Pointer to the transimitted source data that will be encrypt + pDest Pointer to the destination where entryption data will be store in. + Len Indicate the length of the source data + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPEncryptData( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pSrc, + IN PUCHAR pDest, + IN UINT Len) +{ + pAdapter->PrivateInfo.FCSCRC32 = RTMP_CALC_FCS32(pAdapter->PrivateInfo.FCSCRC32, pSrc, Len); + ARCFOUR_ENCRYPT(&pAdapter->PrivateInfo.WEPCONTEXT, pDest, pSrc, Len); +} + +/* + ======================================================================== + + Routine Description: + Decrypt received data + + Arguments: + pAdapter Pointer to our adapter + pSrc Pointer to the received data + Len the length of the received data + + Return Value: + TRUE Decrypt WEP data success + FALSE Decrypt WEP data failed + + Note: + + ======================================================================== +*/ +BOOLEAN RTMPDecryptData( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pSrc, + IN UINT Len) +{ + ULONG trailfcs; + ULONG crc32; + UCHAR KeyIdx; + + memcpy(WEPKEY, pSrc, 3); //Get WEP IV + + KeyIdx = (*(pSrc + 3) & 0xc0) >> 6; + if (pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen == 0) + return (FALSE); + + memcpy(WEPKEY + 3, pAdapter->PortCfg.SharedKey[KeyIdx].Key, pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen); + ARCFOUR_INIT(&pAdapter->PrivateInfo.WEPCONTEXT, WEPKEY, pAdapter->PortCfg.SharedKey[KeyIdx].KeyLen + 3); + ARCFOUR_DECRYPT(&pAdapter->PrivateInfo.WEPCONTEXT, pSrc, pSrc + 4, Len - 4); + memcpy(&trailfcs, pSrc + Len - 8, 4); + crc32 = RTMP_CALC_FCS32(PPPINITFCS32, pSrc, Len - 8); //Skip last 4 bytes(FCS). + crc32 ^= 0xffffffff; /* complement */ +#ifndef BIG_ENDIAN + if(crc32 != trailfcs) +#else + if(crc32 != SWAP32(trailfcs)) +#endif + { + DBGPRINT(RT_DEBUG_TRACE, "! WEP Data CRC Error !\n"); //CRC error. + return (FALSE); + } + return (TRUE); +} + +/* + ======================================================================== + + Routine Description: + The Stream Cipher Encryption Algorithm "ARCFOUR" initialize + + Arguments: + Ctx Pointer to ARCFOUR CONTEXT (SBOX) + pKey Pointer to the WEP KEY + KeyLen Indicate the length fo the WEP KEY + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID ARCFOUR_INIT( + IN PARCFOURCONTEXT Ctx, + IN PUCHAR pKey, + IN UINT KeyLen) +{ + UCHAR t, u; + UINT keyindex; + UINT stateindex; + PUCHAR state; + UINT counter; + + state = Ctx->STATE; + Ctx->X = 0; + Ctx->Y = 0; + for (counter = 0; counter < 256; counter++) + state[counter] = (UCHAR)counter; + keyindex = 0; + stateindex = 0; + for (counter = 0; counter < 256; counter++) + { + t = state[counter]; + stateindex = (stateindex + pKey[keyindex] + t) & 0xff; + u = state[stateindex]; + state[stateindex] = t; + state[counter] = u; + if (++keyindex >= KeyLen) + keyindex = 0; + } +} + +/* + ======================================================================== + + Routine Description: + Get bytes from ARCFOUR CONTEXT (S-BOX) + + Arguments: + Ctx Pointer to ARCFOUR CONTEXT (SBOX) + + Return Value: + UCHAR - the value of the ARCFOUR CONTEXT (S-BOX) + + Note: + + ======================================================================== +*/ +UCHAR ARCFOUR_BYTE( + IN PARCFOURCONTEXT Ctx) +{ + UINT x; + UINT y; + UCHAR sx, sy; + PUCHAR state; + + state = Ctx->STATE; + x = (Ctx->X + 1) & 0xff; + sx = state[x]; + y = (sx + Ctx->Y) & 0xff; + sy = state[y]; + Ctx->X = x; + Ctx->Y = y; + state[y] = sx; + state[x] = sy; + + return(state[(sx + sy) & 0xff]); + +} + +/* + ======================================================================== + + Routine Description: + The Stream Cipher Decryption Algorithm + + Arguments: + Ctx Pointer to ARCFOUR CONTEXT (SBOX) + pDest Pointer to the Destination + pSrc Pointer to the Source data + Len Indicate the length of the Source data + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID ARCFOUR_DECRYPT( + IN PARCFOURCONTEXT Ctx, + IN PUCHAR pDest, + IN PUCHAR pSrc, + IN UINT Len) +{ + UINT i; + + for (i = 0; i < Len; i++) + pDest[i] = pSrc[i] ^ ARCFOUR_BYTE(Ctx); +} + +/* + ======================================================================== + + Routine Description: + The Stream Cipher Encryption Algorithm + + Arguments: + Ctx Pointer to ARCFOUR CONTEXT (SBOX) + pDest Pointer to the Destination + pSrc Pointer to the Source data + Len Indicate the length of the Source dta + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID ARCFOUR_ENCRYPT( + IN PARCFOURCONTEXT Ctx, + IN PUCHAR pDest, + IN PUCHAR pSrc, + IN UINT Len) +{ + UINT i; + + for (i = 0; i < Len; i++) + pDest[i] = pSrc[i] ^ ARCFOUR_BYTE(Ctx); +} + +/* + ======================================================================== + + Routine Description: + Calculate a new FCS given the current FCS and the new data. + + Arguments: + Fcs the original FCS value + Cp pointer to the data which will be calculate the FCS + Len the length of the data + + Return Value: + ULONG - FCS 32 bits + + Note: + + ======================================================================== +*/ +ULONG RTMP_CALC_FCS32( + IN ULONG Fcs, + IN PUCHAR Cp, + IN INT Len) +{ + while (Len--) + Fcs = (((Fcs) >> 8) ^ FCSTAB_32[((Fcs) ^ (*Cp++)) & 0xff]); + + return (Fcs); +} + + +/* + ======================================================================== + + Routine Description: + Get last FCS and encrypt it to the destination + + Arguments: + pDest Pointer to the Destination + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPSetICV( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pDest) +{ + pAdapter->PrivateInfo.FCSCRC32 ^= 0xffffffff; /* complement */ + +#ifdef BIG_ENDIAN + pAdapter->PrivateInfo.FCSCRC32 = SWAP32(pAdapter->PrivateInfo.FCSCRC32); +#endif + + ARCFOUR_ENCRYPT(&pAdapter->PrivateInfo.WEPCONTEXT, pDest, (PUCHAR) &pAdapter->PrivateInfo.FCSCRC32, 4); +} + --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/oid.h +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/oid.h @@ -1,504 +1,502 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: oid.h - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * MarkW 8th Dec 04 Baseline code - * RobinC 10th Dec 04 RFMON Support - ***************************************************************************/ - -#ifndef _OID_H_ -#define _OID_H_ - -#if WIRELESS_EXT <= 11 -#ifndef SIOCDEVPRIVATE -#define SIOCDEVPRIVATE 0x8BE0 -#endif -#define SIOCIWFIRSTPRIV SIOCDEVPRIVATE -#endif - -#define RT_PRIV_IOCTL SIOCIWFIRSTPRIV + 0x01 -#define RTPRIV_IOCTL_SET SIOCIWFIRSTPRIV + 0x02 - -// -// IEEE 802.11 OIDs -// - -// Ralink defined OIDs -#define RT_PRIV_IOCTL SIOCIWFIRSTPRIV + 0x01 -#define RTPRIV_IOCTL_SET SIOCIWFIRSTPRIV + 0x02 - -#define RTPRIV_IOCTL_BBP SIOCIWFIRSTPRIV + 0x03 -#define RTPRIV_IOCTL_MAC SIOCIWFIRSTPRIV + 0x05 -#define RTPRIV_IOCTL_E2P SIOCIWFIRSTPRIV + 0x07 -#define RTPRIV_IOCTL_MONITOR SIOCIWFIRSTPRIV + 0x0D - -#define OID_GET_SET_TOGGLE 0x8000 - -#define OID_802_11_BSSID 0x0101 -#define OID_802_11_SSID 0x0102 -#define OID_802_11_NETWORK_TYPES_SUPPORTED 0x0103 -#define OID_802_11_NETWORK_TYPE_IN_USE 0x0104 -#define OID_802_11_TX_POWER_LEVEL 0x0105 -#define OID_802_11_RSSI 0x0106 -#define OID_802_11_RSSI_TRIGGER 0x0107 -#define OID_802_11_INFRASTRUCTURE_MODE 0x0108 -#define OID_802_11_FRAGMENTATION_THRESHOLD 0x0109 -#define OID_802_11_RTS_THRESHOLD 0x010A -#define OID_802_11_NUMBER_OF_ANTENNAS 0x010B -#define OID_802_11_RX_ANTENNA_SELECTED 0x010C -#define OID_802_11_TX_ANTENNA_SELECTED 0x010D -#define OID_802_11_SUPPORTED_RATES 0x010E -#define OID_802_11_DESIRED_RATES 0x010F -#define OID_802_11_CONFIGURATION 0x0110 -#define OID_802_11_STATISTICS 0x0111 -#define OID_802_11_ADD_WEP 0x0112 -#define OID_802_11_REMOVE_WEP 0x0113 -#define OID_802_11_DISASSOCIATE 0x0114 -#define OID_802_11_POWER_MODE 0x0115 -#define OID_802_11_BSSID_LIST 0x0116 -#define OID_802_11_AUTHENTICATION_MODE 0x0117 -#define OID_802_11_PRIVACY_FILTER 0x0118 -#define OID_802_11_BSSID_LIST_SCAN 0x0119 -#define OID_802_11_WEP_STATUS 0x011A -// Renamed to reflect better the extended set of encryption status -#define OID_802_11_ENCRYPTION_STATUS OID_802_11_WEP_STATUS -#define OID_802_11_RELOAD_DEFAULTS 0x011B -// Added to allow key mapping and default keys -#define OID_802_11_ADD_KEY 0x011C -#define OID_802_11_REMOVE_KEY 0x011D -#define OID_802_11_ASSOCIATION_INFORMATION 0x011E -#define OID_802_11_TEST 0x011F - -#define OID_802_3_CURRENT_ADDRESS 0x0120 -#define OID_GEN_RCV_OK 0x0121 -#define OID_GEN_RCV_NO_BUFFER 0x0122 -#define OID_GEN_MEDIA_CONNECT_STATUS 0x0123 - -#define RT_OID_DEVICE_NAME 0x0200 -#define RT_OID_802_11_PREAMBLE 0x0201 -#define RT_OID_802_11_LINK_STATUS 0x0202 -#define RT_OID_802_11_RESET_COUNTERS 0x0203 -#define RT_OID_802_11_AC_CAM 0x0204 -#ifdef RT2500_DBG -#define RT_OID_802_11_HARDWARE_REGISTER 0x0205 -#endif -#define RT_OID_802_11_RACONFIG 0x0206 -#define RT_OID_802_11_COUNTRY_REGION 0x0207 -#define RT_OID_802_11_RADIO 0x0208 -#define RT_OID_802_11_RX_AGC_VGC_TUNING 0x0209 -#define RT_OID_802_11_EVENT_TABLE 0x0210 -#define RT_OID_802_11_MAC_TABLE 0x0211 -#define RT_OID_802_11_PHY_MODE 0x0212 -#define RT_OID_802_11_TX_PACKET_BURST 0x0213 -#define RT_OID_802_11_TURBO_MODE 0x0214 -#define RT_OID_802_11_AP_CONFIG 0x0215 -#define RT_OID_802_11_ACL 0x0216 -#define RT_OID_802_11_STA_CONFIG 0x0217 -#define RT_OID_VERSION_INFO 0x0218 - -#define RT_OID_802_11_WDS 0x0219 -#define RT_OID_802_11_RADIUS_DATA 0x0220 -#define RT_OID_802_11_WPA_REKEY 0x0221 - -#define RT_OID_802_11_ADD_WPA 0x0222 - -#define RT_OID_802_11_QUERY_EEPROM_VERSION 0x0223 - -// -// IEEE 802.11 Structures and definitions -// -// new types for Media Specific Indications - -#define NDIS_802_11_LENGTH_SSID 32 -#define NDIS_802_11_LENGTH_RATES 8 -#define NDIS_802_11_LENGTH_RATES_EX 16 - -typedef enum _NDIS_802_11_STATUS_TYPE -{ - Ndis802_11StatusType_Authentication, - Ndis802_11StatusTypeMax // not a real type, defined as an upper bound -} NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE; - -typedef UCHAR NDIS_802_11_MAC_ADDRESS[6]; - -typedef struct _NDIS_802_11_STATUS_INDICATION -{ - NDIS_802_11_STATUS_TYPE StatusType; -} NDIS_802_11_STATUS_INDICATION, *PNDIS_802_11_STATUS_INDICATION; - -// mask for authentication/integrity fields -#define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS 0x0f - -#define NDIS_802_11_AUTH_REQUEST_REAUTH 0x01 -#define NDIS_802_11_AUTH_REQUEST_KEYUPDATE 0x02 -#define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR 0x06 -#define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR 0x0E - -typedef struct _NDIS_802_11_AUTHENTICATION_REQUEST -{ - ULONG Length; // Length of structure - NDIS_802_11_MAC_ADDRESS Bssid; - ULONG Flags; -} NDIS_802_11_AUTHENTICATION_REQUEST, *PNDIS_802_11_AUTHENTICATION_REQUEST; - -// Added new types for OFDM 5G and 2.4G -typedef enum _NDIS_802_11_NETWORK_TYPE -{ - Ndis802_11FH, - Ndis802_11DS, - Ndis802_11OFDM5, - Ndis802_11OFDM24, - Ndis802_11NetworkTypeMax // not a real type, defined as an upper bound -} NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE; - -typedef struct PACKED _NDIS_802_11_NETWORK_TYPE_LIST -{ - ULONG NumberOfItems; // in list below, at least 1 - NDIS_802_11_NETWORK_TYPE NetworkType [1]; -} NDIS_802_11_NETWORK_TYPE_LIST, *PNDIS_802_11_NETWORK_TYPE_LIST; - -typedef enum _NDIS_802_11_POWER_MODE -{ - Ndis802_11PowerModeCAM, - Ndis802_11PowerModeMAX_PSP, - Ndis802_11PowerModeFast_PSP, - Ndis802_11PowerModeMax // not a real mode, defined as an upper bound -} NDIS_802_11_POWER_MODE, *PNDIS_802_11_POWER_MODE; - -typedef ULONG NDIS_802_11_TX_POWER_LEVEL; // in milliwatts - -// -// Received Signal Strength Indication -// -typedef LONG NDIS_802_11_RSSI; // in dBm - -typedef struct _NDIS_802_11_CONFIGURATION_FH -{ - ULONG Length; // Length of structure - ULONG HopPattern; // As defined by 802.11, MSB set - ULONG HopSet; // to one if non-802.11 - ULONG DwellTime; // units are Kusec -} NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH; - -typedef struct _NDIS_802_11_CONFIGURATION -{ - ULONG Length; // Length of structure - ULONG BeaconPeriod; // units are Kusec - ULONG ATIMWindow; // units are Kusec - ULONG DSConfig; // Frequency, units are kHz - NDIS_802_11_CONFIGURATION_FH FHConfig; -} NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION; - -typedef struct _NDIS_802_11_STATISTICS -{ - ULONG Length; // Length of structure - LARGE_INTEGER TransmittedFragmentCount; - LARGE_INTEGER MulticastTransmittedFrameCount; - LARGE_INTEGER FailedCount; - LARGE_INTEGER RetryCount; - LARGE_INTEGER MultipleRetryCount; - LARGE_INTEGER RTSSuccessCount; - LARGE_INTEGER RTSFailureCount; - LARGE_INTEGER ACKFailureCount; - LARGE_INTEGER FrameDuplicateCount; - LARGE_INTEGER ReceivedFragmentCount; - LARGE_INTEGER MulticastReceivedFrameCount; - LARGE_INTEGER FCSErrorCount; -} NDIS_802_11_STATISTICS, *PNDIS_802_11_STATISTICS; - -typedef ULONG NDIS_802_11_KEY_INDEX; -typedef ULONGLONG NDIS_802_11_KEY_RSC; - -// Key mapping keys require a BSSID -typedef struct _NDIS_802_11_KEY -{ - ULONG Length; // Length of this structure - ULONG KeyIndex; - ULONG KeyLength; // length of key in bytes - NDIS_802_11_MAC_ADDRESS BSSID; - NDIS_802_11_KEY_RSC KeyRSC; - UCHAR KeyMaterial[1]; // variable length depending on above field -} NDIS_802_11_KEY, *PNDIS_802_11_KEY; - -typedef struct _NDIS_802_11_REMOVE_KEY -{ - ULONG Length; // Length of this structure - ULONG KeyIndex; - NDIS_802_11_MAC_ADDRESS BSSID; -} NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY; - -typedef struct PACKED _NDIS_802_11_WEP -{ - ULONG Length; // Length of this structure - ULONG KeyIndex; // 0 is the per-client key, 1-N are the - // global keys - ULONG KeyLength; // length of key in bytes - UCHAR KeyMaterial[1];// variable length depending on above field -} NDIS_802_11_WEP, *PNDIS_802_11_WEP; - - -typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE -{ - Ndis802_11IBSS, - Ndis802_11Infrastructure, - Ndis802_11AutoUnknown, - Ndis802_11Monitor, - Ndis802_11InfrastructureMax // Not a real value, defined as upper bound -} NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE; - -// Add new authentication modes -typedef enum _NDIS_802_11_AUTHENTICATION_MODE -{ - Ndis802_11AuthModeOpen, - Ndis802_11AuthModeShared, - Ndis802_11AuthModeAutoSwitch, - Ndis802_11AuthModeWPA, - Ndis802_11AuthModeWPAPSK, - Ndis802_11AuthModeWPANone, - Ndis802_11AuthModeMax // Not a real mode, defined as upper bound -} NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE; - -typedef UCHAR NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES]; // Set of 8 data rates -typedef UCHAR NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX]; // Set of 16 data rates - -typedef struct PACKED _NDIS_802_11_SSID -{ - ULONG SsidLength; // length of SSID field below, in bytes; - // this can be zero. - UCHAR Ssid[NDIS_802_11_LENGTH_SSID]; // SSID information field -} NDIS_802_11_SSID, *PNDIS_802_11_SSID; - - -typedef struct PACKED _NDIS_WLAN_BSSID -{ - ULONG Length; // Length of this structure - NDIS_802_11_MAC_ADDRESS MacAddress; // BSSID - UCHAR Reserved[2]; - NDIS_802_11_SSID Ssid; // SSID - ULONG Privacy; // WEP encryption requirement - NDIS_802_11_RSSI Rssi; // receive signal - // strength in dBm - NDIS_802_11_NETWORK_TYPE NetworkTypeInUse; - NDIS_802_11_CONFIGURATION Configuration; - NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode; - NDIS_802_11_RATES SupportedRates; -} NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID; - -typedef struct PACKED _NDIS_802_11_BSSID_LIST -{ - ULONG NumberOfItems; // in list below, at least 1 - NDIS_WLAN_BSSID Bssid[1]; -} NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST; - -// Added Capabilities, IELength and IEs for each BSSID -typedef struct _NDIS_WLAN_BSSID_EX -{ - ULONG Length; // Length of this structure - NDIS_802_11_MAC_ADDRESS MacAddress; // BSSID - UCHAR Reserved[2]; - NDIS_802_11_SSID Ssid; // SSID - ULONG Privacy; // WEP encryption requirement - NDIS_802_11_RSSI Rssi; // receive signal - // strength in dBm - NDIS_802_11_NETWORK_TYPE NetworkTypeInUse; - NDIS_802_11_CONFIGURATION Configuration; - NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode; - NDIS_802_11_RATES_EX SupportedRates; - ULONG IELength; - UCHAR IEs[1]; -} NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX; - -typedef struct _NDIS_802_11_BSSID_LIST_EX -{ - ULONG NumberOfItems; // in list below, at least 1 - NDIS_WLAN_BSSID_EX Bssid[1]; -} NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX; - -typedef struct _NDIS_802_11_FIXED_IEs -{ - UCHAR Timestamp[8]; - USHORT BeaconInterval; - USHORT Capabilities; -} NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs; - -typedef struct _NDIS_802_11_VARIABLE_IEs -{ - UCHAR ElementID; - UCHAR Length; // Number of bytes in data field - UCHAR data[1]; -} NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs; - -typedef ULONG NDIS_802_11_FRAGMENTATION_THRESHOLD; - -typedef ULONG NDIS_802_11_RTS_THRESHOLD; - -typedef ULONG NDIS_802_11_ANTENNA; - -typedef enum _NDIS_802_11_PRIVACY_FILTER -{ - Ndis802_11PrivFilterAcceptAll, - Ndis802_11PrivFilter8021xWEP -} NDIS_802_11_PRIVACY_FILTER, *PNDIS_802_11_PRIVACY_FILTER; - -// Added new encryption types -// Also aliased typedef to new name -typedef enum _NDIS_802_11_WEP_STATUS -{ - Ndis802_11WEPEnabled, - Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled, - Ndis802_11WEPDisabled, - Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled, - Ndis802_11WEPKeyAbsent, - Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent, - Ndis802_11WEPNotSupported, - Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported, - Ndis802_11Encryption2Enabled, - Ndis802_11Encryption2KeyAbsent, - Ndis802_11Encryption3Enabled, - Ndis802_11Encryption3KeyAbsent -} NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS, - NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS; - -typedef enum _NDIS_802_11_RELOAD_DEFAULTS -{ - Ndis802_11ReloadWEPKeys -} NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS; - -#define NDIS_802_11_AI_REQFI_CAPABILITIES 1 -#define NDIS_802_11_AI_REQFI_LISTENINTERVAL 2 -#define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS 4 - -#define NDIS_802_11_AI_RESFI_CAPABILITIES 1 -#define NDIS_802_11_AI_RESFI_STATUSCODE 2 -#define NDIS_802_11_AI_RESFI_ASSOCIATIONID 4 - -typedef struct _NDIS_802_11_AI_REQFI -{ - USHORT Capabilities; - USHORT ListenInterval; - NDIS_802_11_MAC_ADDRESS CurrentAPAddress; -} NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI; - -typedef struct _NDIS_802_11_AI_RESFI -{ - USHORT Capabilities; - USHORT StatusCode; - USHORT AssociationId; -} NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI; - -typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION -{ - ULONG Length; - USHORT AvailableRequestFixedIEs; - NDIS_802_11_AI_REQFI RequestFixedIEs; - ULONG RequestIELength; - ULONG OffsetRequestIEs; - USHORT AvailableResponseFixedIEs; - NDIS_802_11_AI_RESFI ResponseFixedIEs; - ULONG ResponseIELength; - ULONG OffsetResponseIEs; -} NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION; - -typedef struct _NDIS_802_11_AUTHENTICATION_EVENT -{ - NDIS_802_11_STATUS_INDICATION Status; - NDIS_802_11_AUTHENTICATION_REQUEST Request[1]; -} NDIS_802_11_AUTHENTICATION_EVENT, *PNDIS_802_11_AUTHENTICATION_EVENT; - -typedef struct _NDIS_802_11_TEST -{ - ULONG Length; - ULONG Type; - union - { - NDIS_802_11_AUTHENTICATION_EVENT AuthenticationEvent; - NDIS_802_11_RSSI RssiTrigger; - }tt; -} NDIS_802_11_TEST, *PNDIS_802_11_TEST; - -typedef enum _RT_802_11_PREAMBLE { - Rt802_11PreambleLong, - Rt802_11PreambleShort, - Rt802_11PreambleAuto -} RT_802_11_PREAMBLE, *PRT_802_11_PREAMBLE; - -typedef enum _RT_802_11_PHY_MODE { - PHY_11BG_MIXED, - PHY_11B, - PHY_11A, - PHY_11ABG_MIXED -} RT_802_11_PHY_MODE; - -// put all proprietery for-query objects here to reduce # of Query_OID -typedef struct _RT_802_11_LINK_STATUS { - ULONG CurrTxRate; // in units of 0.5Mbps - ULONG ChannelQuality; // 0..100 % - ULONG TxByteCount; // both ok and fail - ULONG RxByteCount; // both ok and fail -} RT_802_11_LINK_STATUS, *PRT_802_11_LINK_STATUS; - -// structure for query/set hardware register - MAC, BBP, RF register -typedef struct _RT_802_11_HARDWARE_REGISTER { - ULONG HardwareType; // 0:MAC, 1:BBP, 2:RF register - ULONG Offset; // Q/S register offset addr - ULONG Data; // R/W data buffer -} RT_802_11_HARDWARE_REGISTER, *PRT_802_11_HARDWARE_REGISTER; - -// structure to tune BBP R17 "RX AGC VGC init" -typedef struct _RT_802_11_RX_AGC_VGC_TUNING { - UCHAR FalseCcaLowerThreshold; // 0-255, def 10 - UCHAR FalseCcaUpperThreshold; // 0-255, def 100 - UCHAR VgcDelta; // R17 +-= VgcDelta whenever flase CCA over UpprThreshold - // or lower than LowerThresholdupper threshold - UCHAR VgcUpperBound; // max value of R17 -} RT_802_11_RX_AGC_VGC_TUNING, *PRT_802_11_RX_AGC_VGC_TUNING; - -// structure to query/set STA_CONFIG -typedef struct _RT_802_11_STA_CONFIG { - ULONG EnableTxBurst; // 0-disable, 1-enable - ULONG EnableTurboRate; // 0-disable, 1-enable 72/100mbps turbo rate - ULONG UseBGProtection; // 0-AUTO, 1-always ON, 2-always OFF - ULONG UseShortSlotTime; // 0-no use, 1-use 9-us short slot time when applicable - ULONG AdhocMode; // 0-11b rates only (WIFI spec), 1 - allow OFDM rates - ULONG HwRadioStatus; // 0-OFF, 1-ON, default is 1, Read-Only - ULONG Rsv1; // must be 0 - ULONG SystemErrorBitmap; // ignore upon SET, return system error upon QUERY -} RT_802_11_STA_CONFIG, *PRT_802_11_STA_CONFIG; - -typedef struct PACKED _RT_VERSION_INFO{ - UCHAR DriverVersionW; - UCHAR DriverVersionX; - UCHAR DriverVersionY; - UCHAR DriverVersionZ; - UINT DriverBuildYear; - UINT DriverBuildMonth; - UINT DriverBuildDay; -} RT_VERSION_INFO, *PRT_VERSION_INFO; - -#endif +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: oid.h + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * MarkW 8th Dec 04 Baseline code + * RobinC 10th Dec 04 RFMON Support + ***************************************************************************/ + +#ifndef _OID_H_ +#define _OID_H_ + +#if WIRELESS_EXT <= 11 +#ifndef SIOCDEVPRIVATE +#define SIOCDEVPRIVATE 0x8BE0 +#endif +#define SIOCIWFIRSTPRIV SIOCDEVPRIVATE +#endif + +#define RT_PRIV_IOCTL SIOCIWFIRSTPRIV + 0x01 +#define RTPRIV_IOCTL_SET SIOCIWFIRSTPRIV + 0x02 + +// +// IEEE 802.11 OIDs +// + +// Ralink defined OIDs +#define RT_PRIV_IOCTL SIOCIWFIRSTPRIV + 0x01 +#define RTPRIV_IOCTL_SET SIOCIWFIRSTPRIV + 0x02 + +#define RTPRIV_IOCTL_BBP SIOCIWFIRSTPRIV + 0x03 +#define RTPRIV_IOCTL_MAC SIOCIWFIRSTPRIV + 0x05 +#define RTPRIV_IOCTL_E2P SIOCIWFIRSTPRIV + 0x07 +#define RTPRIV_IOCTL_RFMONTX SIOCIWFIRSTPRIV + 0x0D + +#define OID_GET_SET_TOGGLE 0x8000 + +#define OID_802_11_BSSID 0x0101 +#define OID_802_11_SSID 0x0102 +#define OID_802_11_NETWORK_TYPES_SUPPORTED 0x0103 +#define OID_802_11_NETWORK_TYPE_IN_USE 0x0104 +#define OID_802_11_TX_POWER_LEVEL 0x0105 +#define OID_802_11_RSSI 0x0106 +#define OID_802_11_RSSI_TRIGGER 0x0107 +#define OID_802_11_INFRASTRUCTURE_MODE 0x0108 +#define OID_802_11_FRAGMENTATION_THRESHOLD 0x0109 +#define OID_802_11_RTS_THRESHOLD 0x010A +#define OID_802_11_NUMBER_OF_ANTENNAS 0x010B +#define OID_802_11_RX_ANTENNA_SELECTED 0x010C +#define OID_802_11_TX_ANTENNA_SELECTED 0x010D +#define OID_802_11_SUPPORTED_RATES 0x010E +#define OID_802_11_DESIRED_RATES 0x010F +#define OID_802_11_CONFIGURATION 0x0110 +#define OID_802_11_STATISTICS 0x0111 +#define OID_802_11_ADD_WEP 0x0112 +#define OID_802_11_REMOVE_WEP 0x0113 +#define OID_802_11_DISASSOCIATE 0x0114 +#define OID_802_11_POWER_MODE 0x0115 +#define OID_802_11_BSSID_LIST 0x0116 +#define OID_802_11_AUTHENTICATION_MODE 0x0117 +#define OID_802_11_PRIVACY_FILTER 0x0118 +#define OID_802_11_BSSID_LIST_SCAN 0x0119 +#define OID_802_11_WEP_STATUS 0x011A +// Renamed to reflect better the extended set of encryption status +#define OID_802_11_ENCRYPTION_STATUS OID_802_11_WEP_STATUS +#define OID_802_11_RELOAD_DEFAULTS 0x011B +// Added to allow key mapping and default keys +#define OID_802_11_ADD_KEY 0x011C +#define OID_802_11_REMOVE_KEY 0x011D +#define OID_802_11_ASSOCIATION_INFORMATION 0x011E +#define OID_802_11_TEST 0x011F + +#define OID_802_3_CURRENT_ADDRESS 0x0120 +#define OID_GEN_RCV_OK 0x0121 +#define OID_GEN_RCV_NO_BUFFER 0x0122 +#define OID_GEN_MEDIA_CONNECT_STATUS 0x0123 + +#define RT_OID_DEVICE_NAME 0x0200 +#define RT_OID_802_11_PREAMBLE 0x0201 +#define RT_OID_802_11_LINK_STATUS 0x0202 +#define RT_OID_802_11_RESET_COUNTERS 0x0203 +#define RT_OID_802_11_AC_CAM 0x0204 +#define RT_OID_802_11_HARDWARE_REGISTER 0x0205 +#define RT_OID_802_11_RACONFIG 0x0206 +#define RT_OID_802_11_COUNTRY_REGION 0x0207 +#define RT_OID_802_11_RADIO 0x0208 +#define RT_OID_802_11_RX_AGC_VGC_TUNING 0x0209 +#define RT_OID_802_11_EVENT_TABLE 0x0210 +#define RT_OID_802_11_MAC_TABLE 0x0211 +#define RT_OID_802_11_PHY_MODE 0x0212 +#define RT_OID_802_11_TX_PACKET_BURST 0x0213 +#define RT_OID_802_11_TURBO_MODE 0x0214 +#define RT_OID_802_11_AP_CONFIG 0x0215 +#define RT_OID_802_11_ACL 0x0216 +#define RT_OID_802_11_STA_CONFIG 0x0217 +#define RT_OID_VERSION_INFO 0x0218 + +#define RT_OID_802_11_WDS 0x0219 +#define RT_OID_802_11_RADIUS_DATA 0x0220 +#define RT_OID_802_11_WPA_REKEY 0x0221 + +#define RT_OID_802_11_ADD_WPA 0x0222 + +#define RT_OID_802_11_QUERY_EEPROM_VERSION 0x0223 + +// +// IEEE 802.11 Structures and definitions +// +// new types for Media Specific Indications + +#define NDIS_802_11_LENGTH_SSID 32 +#define NDIS_802_11_LENGTH_RATES 8 +#define NDIS_802_11_LENGTH_RATES_EX 16 + +typedef enum _NDIS_802_11_STATUS_TYPE +{ + Ndis802_11StatusType_Authentication, + Ndis802_11StatusTypeMax // not a real type, defined as an upper bound +} NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE; + +typedef UCHAR NDIS_802_11_MAC_ADDRESS[6]; + +typedef struct _NDIS_802_11_STATUS_INDICATION +{ + NDIS_802_11_STATUS_TYPE StatusType; +} NDIS_802_11_STATUS_INDICATION, *PNDIS_802_11_STATUS_INDICATION; + +// mask for authentication/integrity fields +#define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS 0x0f + +#define NDIS_802_11_AUTH_REQUEST_REAUTH 0x01 +#define NDIS_802_11_AUTH_REQUEST_KEYUPDATE 0x02 +#define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR 0x06 +#define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR 0x0E + +typedef struct _NDIS_802_11_AUTHENTICATION_REQUEST +{ + ULONG Length; // Length of structure + NDIS_802_11_MAC_ADDRESS Bssid; + ULONG Flags; +} NDIS_802_11_AUTHENTICATION_REQUEST, *PNDIS_802_11_AUTHENTICATION_REQUEST; + +// Added new types for OFDM 5G and 2.4G +typedef enum _NDIS_802_11_NETWORK_TYPE +{ + Ndis802_11FH, + Ndis802_11DS, + Ndis802_11OFDM5, + Ndis802_11OFDM24, + Ndis802_11NetworkTypeMax // not a real type, defined as an upper bound +} NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE; + +typedef struct PACKED _NDIS_802_11_NETWORK_TYPE_LIST +{ + ULONG NumberOfItems; // in list below, at least 1 + NDIS_802_11_NETWORK_TYPE NetworkType [1]; +} NDIS_802_11_NETWORK_TYPE_LIST, *PNDIS_802_11_NETWORK_TYPE_LIST; + +typedef enum _NDIS_802_11_POWER_MODE +{ + Ndis802_11PowerModeCAM, + Ndis802_11PowerModeMAX_PSP, + Ndis802_11PowerModeFast_PSP, + Ndis802_11PowerModeMax // not a real mode, defined as an upper bound +} NDIS_802_11_POWER_MODE, *PNDIS_802_11_POWER_MODE; + +typedef ULONG NDIS_802_11_TX_POWER_LEVEL; // in milliwatts + +// +// Received Signal Strength Indication +// +typedef LONG NDIS_802_11_RSSI; // in dBm + +typedef struct _NDIS_802_11_CONFIGURATION_FH +{ + ULONG Length; // Length of structure + ULONG HopPattern; // As defined by 802.11, MSB set + ULONG HopSet; // to one if non-802.11 + ULONG DwellTime; // units are Kusec +} NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH; + +typedef struct _NDIS_802_11_CONFIGURATION +{ + ULONG Length; // Length of structure + ULONG BeaconPeriod; // units are Kusec + ULONG ATIMWindow; // units are Kusec + ULONG DSConfig; // Frequency, units are kHz + NDIS_802_11_CONFIGURATION_FH FHConfig; +} NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION; + +typedef struct _NDIS_802_11_STATISTICS +{ + ULONG Length; // Length of structure + LARGE_INTEGER TransmittedFragmentCount; + LARGE_INTEGER MulticastTransmittedFrameCount; + LARGE_INTEGER FailedCount; + LARGE_INTEGER RetryCount; + LARGE_INTEGER MultipleRetryCount; + LARGE_INTEGER RTSSuccessCount; + LARGE_INTEGER RTSFailureCount; + LARGE_INTEGER ACKFailureCount; + LARGE_INTEGER FrameDuplicateCount; + LARGE_INTEGER ReceivedFragmentCount; + LARGE_INTEGER MulticastReceivedFrameCount; + LARGE_INTEGER FCSErrorCount; +} NDIS_802_11_STATISTICS, *PNDIS_802_11_STATISTICS; + +typedef ULONG NDIS_802_11_KEY_INDEX; +typedef ULONGLONG NDIS_802_11_KEY_RSC; + +// Key mapping keys require a BSSID +typedef struct _NDIS_802_11_KEY +{ + ULONG Length; // Length of this structure + ULONG KeyIndex; + ULONG KeyLength; // length of key in bytes + NDIS_802_11_MAC_ADDRESS BSSID; + NDIS_802_11_KEY_RSC KeyRSC; + UCHAR KeyMaterial[1]; // variable length depending on above field +} NDIS_802_11_KEY, *PNDIS_802_11_KEY; + +typedef struct _NDIS_802_11_REMOVE_KEY +{ + ULONG Length; // Length of this structure + ULONG KeyIndex; + NDIS_802_11_MAC_ADDRESS BSSID; +} NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY; + +typedef struct PACKED _NDIS_802_11_WEP +{ + ULONG Length; // Length of this structure + ULONG KeyIndex; // 0 is the per-client key, 1-N are the + // global keys + ULONG KeyLength; // length of key in bytes + UCHAR KeyMaterial[1];// variable length depending on above field +} NDIS_802_11_WEP, *PNDIS_802_11_WEP; + + +typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE +{ + Ndis802_11IBSS, + Ndis802_11Infrastructure, + Ndis802_11AutoUnknown, + Ndis802_11Monitor, + Ndis802_11InfrastructureMax // Not a real value, defined as upper bound +} NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE; + +// Add new authentication modes +typedef enum _NDIS_802_11_AUTHENTICATION_MODE +{ + Ndis802_11AuthModeOpen, + Ndis802_11AuthModeShared, + Ndis802_11AuthModeAutoSwitch, + Ndis802_11AuthModeWPA, + Ndis802_11AuthModeWPAPSK, + Ndis802_11AuthModeWPANone, + Ndis802_11AuthModeMax // Not a real mode, defined as upper bound +} NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE; + +typedef UCHAR NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES]; // Set of 8 data rates +typedef UCHAR NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX]; // Set of 16 data rates + +typedef struct PACKED _NDIS_802_11_SSID +{ + ULONG SsidLength; // length of SSID field below, in bytes; + // this can be zero. + UCHAR Ssid[NDIS_802_11_LENGTH_SSID]; // SSID information field +} NDIS_802_11_SSID, *PNDIS_802_11_SSID; + + +typedef struct PACKED _NDIS_WLAN_BSSID +{ + ULONG Length; // Length of this structure + NDIS_802_11_MAC_ADDRESS MacAddress; // BSSID + UCHAR Reserved[2]; + NDIS_802_11_SSID Ssid; // SSID + ULONG Privacy; // WEP encryption requirement + NDIS_802_11_RSSI Rssi; // receive signal + // strength in dBm + NDIS_802_11_NETWORK_TYPE NetworkTypeInUse; + NDIS_802_11_CONFIGURATION Configuration; + NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode; + NDIS_802_11_RATES SupportedRates; +} NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID; + +typedef struct PACKED _NDIS_802_11_BSSID_LIST +{ + ULONG NumberOfItems; // in list below, at least 1 + NDIS_WLAN_BSSID Bssid[1]; +} NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST; + +// Added Capabilities, IELength and IEs for each BSSID +typedef struct _NDIS_WLAN_BSSID_EX +{ + ULONG Length; // Length of this structure + NDIS_802_11_MAC_ADDRESS MacAddress; // BSSID + UCHAR Reserved[2]; + NDIS_802_11_SSID Ssid; // SSID + ULONG Privacy; // WEP encryption requirement + NDIS_802_11_RSSI Rssi; // receive signal + // strength in dBm + NDIS_802_11_NETWORK_TYPE NetworkTypeInUse; + NDIS_802_11_CONFIGURATION Configuration; + NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode; + NDIS_802_11_RATES_EX SupportedRates; + ULONG IELength; + UCHAR IEs[1]; +} NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX; + +typedef struct _NDIS_802_11_BSSID_LIST_EX +{ + ULONG NumberOfItems; // in list below, at least 1 + NDIS_WLAN_BSSID_EX Bssid[1]; +} NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX; + +typedef struct _NDIS_802_11_FIXED_IEs +{ + UCHAR Timestamp[8]; + USHORT BeaconInterval; + USHORT Capabilities; +} NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs; + +typedef struct _NDIS_802_11_VARIABLE_IEs +{ + UCHAR ElementID; + UCHAR Length; // Number of bytes in data field + UCHAR data[1]; +} NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs; + +typedef ULONG NDIS_802_11_FRAGMENTATION_THRESHOLD; + +typedef ULONG NDIS_802_11_RTS_THRESHOLD; + +typedef ULONG NDIS_802_11_ANTENNA; + +typedef enum _NDIS_802_11_PRIVACY_FILTER +{ + Ndis802_11PrivFilterAcceptAll, + Ndis802_11PrivFilter8021xWEP +} NDIS_802_11_PRIVACY_FILTER, *PNDIS_802_11_PRIVACY_FILTER; + +// Added new encryption types +// Also aliased typedef to new name +typedef enum _NDIS_802_11_WEP_STATUS +{ + Ndis802_11WEPEnabled, + Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled, + Ndis802_11WEPDisabled, + Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled, + Ndis802_11WEPKeyAbsent, + Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent, + Ndis802_11WEPNotSupported, + Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported, + Ndis802_11Encryption2Enabled, + Ndis802_11Encryption2KeyAbsent, + Ndis802_11Encryption3Enabled, + Ndis802_11Encryption3KeyAbsent +} NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS, + NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS; + +typedef enum _NDIS_802_11_RELOAD_DEFAULTS +{ + Ndis802_11ReloadWEPKeys +} NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS; + +#define NDIS_802_11_AI_REQFI_CAPABILITIES 1 +#define NDIS_802_11_AI_REQFI_LISTENINTERVAL 2 +#define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS 4 + +#define NDIS_802_11_AI_RESFI_CAPABILITIES 1 +#define NDIS_802_11_AI_RESFI_STATUSCODE 2 +#define NDIS_802_11_AI_RESFI_ASSOCIATIONID 4 + +typedef struct _NDIS_802_11_AI_REQFI +{ + USHORT Capabilities; + USHORT ListenInterval; + NDIS_802_11_MAC_ADDRESS CurrentAPAddress; +} NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI; + +typedef struct _NDIS_802_11_AI_RESFI +{ + USHORT Capabilities; + USHORT StatusCode; + USHORT AssociationId; +} NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI; + +typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION +{ + ULONG Length; + USHORT AvailableRequestFixedIEs; + NDIS_802_11_AI_REQFI RequestFixedIEs; + ULONG RequestIELength; + ULONG OffsetRequestIEs; + USHORT AvailableResponseFixedIEs; + NDIS_802_11_AI_RESFI ResponseFixedIEs; + ULONG ResponseIELength; + ULONG OffsetResponseIEs; +} NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION; + +typedef struct _NDIS_802_11_AUTHENTICATION_EVENT +{ + NDIS_802_11_STATUS_INDICATION Status; + NDIS_802_11_AUTHENTICATION_REQUEST Request[1]; +} NDIS_802_11_AUTHENTICATION_EVENT, *PNDIS_802_11_AUTHENTICATION_EVENT; + +typedef struct _NDIS_802_11_TEST +{ + ULONG Length; + ULONG Type; + union + { + NDIS_802_11_AUTHENTICATION_EVENT AuthenticationEvent; + NDIS_802_11_RSSI RssiTrigger; + }tt; +} NDIS_802_11_TEST, *PNDIS_802_11_TEST; + +typedef enum _RT_802_11_PREAMBLE { + Rt802_11PreambleLong, + Rt802_11PreambleShort, + Rt802_11PreambleAuto +} RT_802_11_PREAMBLE, *PRT_802_11_PREAMBLE; + +typedef enum _RT_802_11_PHY_MODE { + PHY_11BG_MIXED, + PHY_11B, + PHY_11A, + PHY_11ABG_MIXED +} RT_802_11_PHY_MODE; + +// put all proprietery for-query objects here to reduce # of Query_OID +typedef struct _RT_802_11_LINK_STATUS { + ULONG CurrTxRate; // in units of 0.5Mbps + ULONG ChannelQuality; // 0..100 % + ULONG TxByteCount; // both ok and fail + ULONG RxByteCount; // both ok and fail +} RT_802_11_LINK_STATUS, *PRT_802_11_LINK_STATUS; + +// structure for query/set hardware register - MAC, BBP, RF register +typedef struct _RT_802_11_HARDWARE_REGISTER { + ULONG HardwareType; // 0:MAC, 1:BBP, 2:RF register + ULONG Offset; // Q/S register offset addr + ULONG Data; // R/W data buffer +} RT_802_11_HARDWARE_REGISTER, *PRT_802_11_HARDWARE_REGISTER; + +// structure to tune BBP R17 "RX AGC VGC init" +typedef struct _RT_802_11_RX_AGC_VGC_TUNING { + UCHAR FalseCcaLowerThreshold; // 0-255, def 10 + UCHAR FalseCcaUpperThreshold; // 0-255, def 100 + UCHAR VgcDelta; // R17 +-= VgcDelta whenever flase CCA over UpprThreshold + // or lower than LowerThresholdupper threshold + UCHAR VgcUpperBound; // max value of R17 +} RT_802_11_RX_AGC_VGC_TUNING, *PRT_802_11_RX_AGC_VGC_TUNING; + +// structure to query/set STA_CONFIG +typedef struct _RT_802_11_STA_CONFIG { + ULONG EnableTxBurst; // 0-disable, 1-enable + ULONG EnableTurboRate; // 0-disable, 1-enable 72/100mbps turbo rate + ULONG UseBGProtection; // 0-AUTO, 1-always ON, 2-always OFF + ULONG UseShortSlotTime; // 0-no use, 1-use 9-us short slot time when applicable + ULONG AdhocMode; // 0-11b rates only (WIFI spec), 1 - allow OFDM rates + ULONG HwRadioStatus; // 0-OFF, 1-ON, default is 1, Read-Only + ULONG Rsv1; // must be 0 + ULONG SystemErrorBitmap; // ignore upon SET, return system error upon QUERY +} RT_802_11_STA_CONFIG, *PRT_802_11_STA_CONFIG; + +typedef struct PACKED _RT_VERSION_INFO{ + UCHAR DriverVersionW; + UCHAR DriverVersionX; + UCHAR DriverVersionY; + UCHAR DriverVersionZ; + UINT DriverBuildYear; + UINT DriverBuildMonth; + UINT DriverBuildDay; +} RT_VERSION_INFO, *PRT_VERSION_INFO; + +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/md5.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/md5.c @@ -1,1200 +1,1200 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - * This MD5 code is based on code from Dynamics -- HUT Mobile IP * - * Copyright (C) 1998-2001, Dynamics group * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: md5.c - * - * Abstract: contain MD5 and AES cipher algorithm - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * JanL 28th Oct 03 Initial code - * MarkW 8th Dec 04 Baseline code - ***************************************************************************/ - -#include "rt_config.h" - -/** - * md5_mac: - * @key: pointer to the key used for MAC generation - * @key_len: length of the key in bytes - * @data: pointer to the data area for which the MAC is generated - * @data_len: length of the data in bytes - * @mac: pointer to the buffer holding space for the MAC; the buffer should - * have space for 128-bit (16 bytes) MD5 hash value - * - * md5_mac() determines the message authentication code by using secure hash - * MD5(key | data | key). - */ -void md5_mac(u8 *key, size_t key_len, u8 *data, size_t data_len, u8 *mac) -{ - MD5_CTX context; - - MD5Init(&context); - MD5Update(&context, key, key_len); - MD5Update(&context, data, data_len); - MD5Update(&context, key, key_len); - MD5Final(mac, &context); -} - -/** - * hmac_md5: - * @key: pointer to the key used for MAC generation - * @key_len: length of the key in bytes - * @data: pointer to the data area for which the MAC is generated - * @data_len: length of the data in bytes - * @mac: pointer to the buffer holding space for the MAC; the buffer should - * have space for 128-bit (16 bytes) MD5 hash value - * - * hmac_md5() determines the message authentication code using HMAC-MD5. - * This implementation is based on the sample code presented in RFC 2104. - */ -void hmac_md5(u8 *key, size_t key_len, u8 *data, size_t data_len, u8 *mac) -{ - MD5_CTX context; - u8 k_ipad[65]; /* inner padding - key XORd with ipad */ - u8 k_opad[65]; /* outer padding - key XORd with opad */ - u8 tk[16]; - int i; - - //assert(key != NULL && data != NULL && mac != NULL); - - /* if key is longer than 64 bytes reset it to key = MD5(key) */ - if (key_len > 64) { - MD5_CTX ttcontext; - - MD5Init(&ttcontext); - MD5Update(&ttcontext, key, key_len); - MD5Final(tk, &ttcontext); - //key=(PUCHAR)ttcontext.buf; - key = tk; - key_len = 16; - } - - /* the HMAC_MD5 transform looks like: - * - * MD5(K XOR opad, MD5(K XOR ipad, text)) - * - * where K is an n byte key - * ipad is the byte 0x36 repeated 64 times - * opad is the byte 0x5c repeated 64 times - * and text is the data being protected */ - - /* start out by storing key in pads */ - memset(k_ipad, 0, sizeof(k_ipad)); - memset(k_opad, 0, sizeof(k_opad)); - //assert(key_len < sizeof(k_ipad)); - memcpy(k_ipad, key, key_len); - memcpy(k_opad, key, key_len); - - /* XOR key with ipad and opad values */ - for (i = 0; i < 64; i++) { - k_ipad[i] ^= 0x36; - k_opad[i] ^= 0x5c; - } - - /* perform inner MD5 */ - MD5Init(&context); /* init context for 1st pass */ - MD5Update(&context, k_ipad, 64); /* start with inner pad */ - MD5Update(&context, data, data_len); /* then text of datagram */ - MD5Final(mac, &context); /* finish up 1st pass */ - - /* perform outer MD5 */ - MD5Init(&context); /* init context for 2nd pass */ - MD5Update(&context, k_opad, 64); /* start with outer pad */ - MD5Update(&context, mac, 16); /* then results of 1st hash */ - MD5Final(mac, &context); /* finish up 2nd pass */ -} - - -/* ===== start - public domain MD5 implementation ===== */ -/* - * This code implements the MD5 message-digest algorithm. - * The algorithm is due to Ron Rivest. This code was - * written by Colin Plumb in 1993, no copyright is claimed. - * This code is in the public domain; do with it what you wish. - * - * Equivalent code is available from RSA Data Security, Inc. - * This code has been tested against that, and is equivalent, - * except that you don't need to include two pages of legalese - * with every copy. - * - * To compute the message digest of a chunk of bytes, declare an - * MD5Context structure, pass it to MD5Init, call MD5Update as - * needed on buffers full of bytes, and then call MD5Final, which - * will fill a supplied 16-byte array with the digest. - */ - -#ifndef BIG_ENDIAN -#define byteReverse(buf, len) /* Nothing */ -#else -void byteReverse(unsigned char *buf, unsigned longs); -void byteReverse(unsigned char *buf, unsigned longs) -{ - do { - *(ULONG *)buf = SWAP32(*(ULONG *)buf); - buf += 4; - } while (--longs); -} -#endif - -/* - * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious - * initialization constants. - */ -void MD5Init(struct MD5Context *ctx) -{ - ctx->buf[0] = 0x67452301; - ctx->buf[1] = 0xefcdab89; - ctx->buf[2] = 0x98badcfe; - ctx->buf[3] = 0x10325476; - - ctx->bits[0] = 0; - ctx->bits[1] = 0; -} - -/* - * Update context to reflect the concatenation of another buffer full - * of bytes. - */ -void MD5Update(struct MD5Context *ctx, unsigned char *buf, unsigned len) -{ - u32 t; - - /* Update bitcount */ - - t = ctx->bits[0]; - if ((ctx->bits[0] = t + ((u32) len << 3)) < t) - ctx->bits[1]++; /* Carry from low to high */ - ctx->bits[1] += len >> 29; - - t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */ - - /* Handle any leading odd-sized chunks */ - - if (t) { - unsigned char *p = (unsigned char *) ctx->in + t; - - t = 64 - t; - if (len < t) { - memcpy(p, buf, len); - return; - } - memcpy(p, buf, t); - byteReverse(ctx->in, 16); - MD5Transform(ctx->buf, (u32 *) ctx->in); - buf += t; - len -= t; - } - /* Process data in 64-byte chunks */ - - while (len >= 64) { - memcpy(ctx->in, buf, 64); - byteReverse(ctx->in, 16); - MD5Transform(ctx->buf, (u32 *) ctx->in); - buf += 64; - len -= 64; - } - - /* Handle any remaining bytes of data. */ - - memcpy(ctx->in, buf, len); -} - -/* - * Final wrapup - pad to 64-byte boundary with the bit pattern - * 1 0* (64-bit count of bits processed, MSB-first) - */ -void MD5Final(unsigned char digest[16], struct MD5Context *ctx) -{ - unsigned count; - unsigned char *p; - - /* Compute number of bytes mod 64 */ - count = (ctx->bits[0] >> 3) & 0x3F; - - /* Set the first char of padding to 0x80. This is safe since there is - always at least one byte free */ - p = ctx->in + count; - *p++ = 0x80; - - /* Bytes of padding needed to make 64 bytes */ - count = 64 - 1 - count; - - /* Pad out to 56 mod 64 */ - if (count < 8) { - /* Two lots of padding: Pad the first block to 64 bytes */ - memset(p, 0, count); - byteReverse(ctx->in, 16); - MD5Transform(ctx->buf, (u32 *) ctx->in); - - /* Now fill the next block with 56 bytes */ - memset(ctx->in, 0, 56); - } else { - /* Pad block to 56 bytes */ - memset(p, 0, count - 8); - } - byteReverse(ctx->in, 14); - - /* Append length in bits and transform */ - ((u32 *) ctx->in)[14] = ctx->bits[0]; - ((u32 *) ctx->in)[15] = ctx->bits[1]; - - MD5Transform(ctx->buf, (u32 *) ctx->in); - byteReverse((unsigned char *) ctx->buf, 4); - memcpy(digest, ctx->buf, 16); - memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ -} - -//#ifndef ASM_MD5 -#if 1 - -/* The four core functions - F1 is optimized somewhat */ - -/* #define F1(x, y, z) (x & y | ~x & z) */ -#define F1(x, y, z) (z ^ (x & (y ^ z))) -#define F2(x, y, z) F1(z, x, y) -#define F3(x, y, z) (x ^ y ^ z) -#define F4(x, y, z) (y ^ (x | ~z)) - -/* This is the central step in the MD5 algorithm. */ -#define MD5STEP(f, w, x, y, z, data, s) \ - ( w += f(x, y, z) + data, w =( w<>(32-s))&0xffffffff, w += x ) - -/* - * The core of the MD5 algorithm, this alters an existing MD5 hash to - * reflect the addition of 16 longwords of new data. MD5Update blocks - * the data and converts bytes into longwords for this routine. - */ -void MD5Transform(u32 buf[4], u32 in[16]) -{ - register u32 a, b, c, d; - - a = buf[0]; - b = buf[1]; - c = buf[2]; - d = buf[3]; - - MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); - MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); - MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); - MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); - MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); - MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); - MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); - MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); - MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); - MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); - MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); - MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); - MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); - MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); - MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); - MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); - - MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); - MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); - MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); - MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); - MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); - MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); - MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); - MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); - MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); - MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); - MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); - MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); - MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); - MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); - MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); - MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); - - MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); - MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); - MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); - MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); - MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); - MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); - MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); - MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); - MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); - MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); - MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); - MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); - MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); - MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); - MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); - MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); - - MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); - MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); - MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); - MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); - MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); - MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); - MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); - MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); - MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); - MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); - MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); - MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); - MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); - MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); - MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); - MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); - - buf[0] += a; - buf[1] += b; - buf[2] += c; - buf[3] += d; -} -#endif - -void SHAInit(SHA_CTX *ctx) { - int i; - - ctx->lenW = 0; - ctx->sizeHi = ctx->sizeLo = 0; - - /* Initialize H with the magic constants (see FIPS180 for constants) - */ - ctx->H[0] = 0x67452301L; - ctx->H[1] = 0xefcdab89L; - ctx->H[2] = 0x98badcfeL; - ctx->H[3] = 0x10325476L; - ctx->H[4] = 0xc3d2e1f0L; - - for (i = 0; i < 80; i++) - ctx->W[i] = 0; - } - -#define SHA_ROTL(X,n) ((((X) << (n)) | ((X) >> (32-(n)))) & 0xffffffffL) - -void SHAHashBlock(SHA_CTX *ctx) { - int t; - unsigned long A,B,C,D,E,TEMP; - - for (t = 16; t <= 79; t++) - ctx->W[t] = SHA_ROTL(ctx->W[t-3] ^ ctx->W[t-8] ^ ctx->W[t-14] ^ ctx->W[t-16], 1); - - A = ctx->H[0]; - B = ctx->H[1]; - C = ctx->H[2]; - D = ctx->H[3]; - E = ctx->H[4]; - - for (t = 0; t <= 19; t++) { - TEMP = (SHA_ROTL(A,5) + (((C^D)&B)^D) + E + ctx->W[t] + 0x5a827999L) & 0xffffffffL; - E = D; D = C; C = SHA_ROTL(B, 30); B = A; A = TEMP; - } - for (t = 20; t <= 39; t++) { - TEMP = (SHA_ROTL(A,5) + (B^C^D) + E + ctx->W[t] + 0x6ed9eba1L) & 0xffffffffL; - E = D; D = C; C = SHA_ROTL(B, 30); B = A; A = TEMP; - } - for (t = 40; t <= 59; t++) { - TEMP = (SHA_ROTL(A,5) + ((B&C)|(D&(B|C))) + E + ctx->W[t] + 0x8f1bbcdcL) & 0xffffffffL; - E = D; D = C; C = SHA_ROTL(B, 30); B = A; A = TEMP; - } - for (t = 60; t <= 79; t++) { - TEMP = (SHA_ROTL(A,5) + (B^C^D) + E + ctx->W[t] + 0xca62c1d6L) & 0xffffffffL; - E = D; D = C; C = SHA_ROTL(B, 30); B = A; A = TEMP; - } - - ctx->H[0] += A; - ctx->H[1] += B; - ctx->H[2] += C; - ctx->H[3] += D; - ctx->H[4] += E; -} - -void SHAUpdate(SHA_CTX *ctx, unsigned char *dataIn, int len) -{ - int i; - - /* Read the data into W and process blocks as they get full - */ - for (i = 0; i < len; i++) { - ctx->W[ctx->lenW / 4] <<= 8; - ctx->W[ctx->lenW / 4] |= (unsigned long)dataIn[i]; - if ((++ctx->lenW) % 64 == 0) { - SHAHashBlock(ctx); - ctx->lenW = 0; - } - ctx->sizeLo += 8; - ctx->sizeHi += (ctx->sizeLo < 8); - } -} - - -void SHAFinal(SHA_CTX *ctx, unsigned char hashout[20]) { - unsigned char pad0x80 = 0x80; - unsigned char pad0x00 = 0x00; - unsigned char padlen[8]; - int i; - - /* Pad with a binary 1 (e.g. 0x80), then zeroes, then length - */ - padlen[0] = (unsigned char)((ctx->sizeHi >> 24) & 255); - padlen[1] = (unsigned char)((ctx->sizeHi >> 16) & 255); - padlen[2] = (unsigned char)((ctx->sizeHi >> 8) & 255); - padlen[3] = (unsigned char)((ctx->sizeHi >> 0) & 255); - padlen[4] = (unsigned char)((ctx->sizeLo >> 24) & 255); - padlen[5] = (unsigned char)((ctx->sizeLo >> 16) & 255); - padlen[6] = (unsigned char)((ctx->sizeLo >> 8) & 255); - padlen[7] = (unsigned char)((ctx->sizeLo >> 0) & 255); - SHAUpdate(ctx, &pad0x80, 1); - while (ctx->lenW != 56) - SHAUpdate(ctx, &pad0x00, 1); - SHAUpdate(ctx, padlen, 8); - - /* Output hash - */ - for (i = 0; i < 20; i++) { - hashout[i] = (unsigned char)(ctx->H[i / 4] >> 24); - ctx->H[i / 4] <<= 8; - } - - /* - * Re-initialize the context (also zeroizes contents) - */ - SHAInit(ctx); -} - -/* forward S-box */ - -static uint32 FSb[256] = -{ - 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, - 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, - 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, - 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, - 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, - 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, - 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, - 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75, - 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, - 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, - 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, - 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, - 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, - 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, - 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, - 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, - 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, - 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, - 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, - 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB, - 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, - 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, - 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, - 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, - 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, - 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, - 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, - 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, - 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, - 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, - 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, - 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16 -}; - -/* forward table */ - -#define FT \ -\ - V(C6,63,63,A5), V(F8,7C,7C,84), V(EE,77,77,99), V(F6,7B,7B,8D), \ - V(FF,F2,F2,0D), V(D6,6B,6B,BD), V(DE,6F,6F,B1), V(91,C5,C5,54), \ - V(60,30,30,50), V(02,01,01,03), V(CE,67,67,A9), V(56,2B,2B,7D), \ - V(E7,FE,FE,19), V(B5,D7,D7,62), V(4D,AB,AB,E6), V(EC,76,76,9A), \ - V(8F,CA,CA,45), V(1F,82,82,9D), V(89,C9,C9,40), V(FA,7D,7D,87), \ - V(EF,FA,FA,15), V(B2,59,59,EB), V(8E,47,47,C9), V(FB,F0,F0,0B), \ - V(41,AD,AD,EC), V(B3,D4,D4,67), V(5F,A2,A2,FD), V(45,AF,AF,EA), \ - V(23,9C,9C,BF), V(53,A4,A4,F7), V(E4,72,72,96), V(9B,C0,C0,5B), \ - V(75,B7,B7,C2), V(E1,FD,FD,1C), V(3D,93,93,AE), V(4C,26,26,6A), \ - V(6C,36,36,5A), V(7E,3F,3F,41), V(F5,F7,F7,02), V(83,CC,CC,4F), \ - V(68,34,34,5C), V(51,A5,A5,F4), V(D1,E5,E5,34), V(F9,F1,F1,08), \ - V(E2,71,71,93), V(AB,D8,D8,73), V(62,31,31,53), V(2A,15,15,3F), \ - V(08,04,04,0C), V(95,C7,C7,52), V(46,23,23,65), V(9D,C3,C3,5E), \ - V(30,18,18,28), V(37,96,96,A1), V(0A,05,05,0F), V(2F,9A,9A,B5), \ - V(0E,07,07,09), V(24,12,12,36), V(1B,80,80,9B), V(DF,E2,E2,3D), \ - V(CD,EB,EB,26), V(4E,27,27,69), V(7F,B2,B2,CD), V(EA,75,75,9F), \ - V(12,09,09,1B), V(1D,83,83,9E), V(58,2C,2C,74), V(34,1A,1A,2E), \ - V(36,1B,1B,2D), V(DC,6E,6E,B2), V(B4,5A,5A,EE), V(5B,A0,A0,FB), \ - V(A4,52,52,F6), V(76,3B,3B,4D), V(B7,D6,D6,61), V(7D,B3,B3,CE), \ - V(52,29,29,7B), V(DD,E3,E3,3E), V(5E,2F,2F,71), V(13,84,84,97), \ - V(A6,53,53,F5), V(B9,D1,D1,68), V(00,00,00,00), V(C1,ED,ED,2C), \ - V(40,20,20,60), V(E3,FC,FC,1F), V(79,B1,B1,C8), V(B6,5B,5B,ED), \ - V(D4,6A,6A,BE), V(8D,CB,CB,46), V(67,BE,BE,D9), V(72,39,39,4B), \ - V(94,4A,4A,DE), V(98,4C,4C,D4), V(B0,58,58,E8), V(85,CF,CF,4A), \ - V(BB,D0,D0,6B), V(C5,EF,EF,2A), V(4F,AA,AA,E5), V(ED,FB,FB,16), \ - V(86,43,43,C5), V(9A,4D,4D,D7), V(66,33,33,55), V(11,85,85,94), \ - V(8A,45,45,CF), V(E9,F9,F9,10), V(04,02,02,06), V(FE,7F,7F,81), \ - V(A0,50,50,F0), V(78,3C,3C,44), V(25,9F,9F,BA), V(4B,A8,A8,E3), \ - V(A2,51,51,F3), V(5D,A3,A3,FE), V(80,40,40,C0), V(05,8F,8F,8A), \ - V(3F,92,92,AD), V(21,9D,9D,BC), V(70,38,38,48), V(F1,F5,F5,04), \ - V(63,BC,BC,DF), V(77,B6,B6,C1), V(AF,DA,DA,75), V(42,21,21,63), \ - V(20,10,10,30), V(E5,FF,FF,1A), V(FD,F3,F3,0E), V(BF,D2,D2,6D), \ - V(81,CD,CD,4C), V(18,0C,0C,14), V(26,13,13,35), V(C3,EC,EC,2F), \ - V(BE,5F,5F,E1), V(35,97,97,A2), V(88,44,44,CC), V(2E,17,17,39), \ - V(93,C4,C4,57), V(55,A7,A7,F2), V(FC,7E,7E,82), V(7A,3D,3D,47), \ - V(C8,64,64,AC), V(BA,5D,5D,E7), V(32,19,19,2B), V(E6,73,73,95), \ - V(C0,60,60,A0), V(19,81,81,98), V(9E,4F,4F,D1), V(A3,DC,DC,7F), \ - V(44,22,22,66), V(54,2A,2A,7E), V(3B,90,90,AB), V(0B,88,88,83), \ - V(8C,46,46,CA), V(C7,EE,EE,29), V(6B,B8,B8,D3), V(28,14,14,3C), \ - V(A7,DE,DE,79), V(BC,5E,5E,E2), V(16,0B,0B,1D), V(AD,DB,DB,76), \ - V(DB,E0,E0,3B), V(64,32,32,56), V(74,3A,3A,4E), V(14,0A,0A,1E), \ - V(92,49,49,DB), V(0C,06,06,0A), V(48,24,24,6C), V(B8,5C,5C,E4), \ - V(9F,C2,C2,5D), V(BD,D3,D3,6E), V(43,AC,AC,EF), V(C4,62,62,A6), \ - V(39,91,91,A8), V(31,95,95,A4), V(D3,E4,E4,37), V(F2,79,79,8B), \ - V(D5,E7,E7,32), V(8B,C8,C8,43), V(6E,37,37,59), V(DA,6D,6D,B7), \ - V(01,8D,8D,8C), V(B1,D5,D5,64), V(9C,4E,4E,D2), V(49,A9,A9,E0), \ - V(D8,6C,6C,B4), V(AC,56,56,FA), V(F3,F4,F4,07), V(CF,EA,EA,25), \ - V(CA,65,65,AF), V(F4,7A,7A,8E), V(47,AE,AE,E9), V(10,08,08,18), \ - V(6F,BA,BA,D5), V(F0,78,78,88), V(4A,25,25,6F), V(5C,2E,2E,72), \ - V(38,1C,1C,24), V(57,A6,A6,F1), V(73,B4,B4,C7), V(97,C6,C6,51), \ - V(CB,E8,E8,23), V(A1,DD,DD,7C), V(E8,74,74,9C), V(3E,1F,1F,21), \ - V(96,4B,4B,DD), V(61,BD,BD,DC), V(0D,8B,8B,86), V(0F,8A,8A,85), \ - V(E0,70,70,90), V(7C,3E,3E,42), V(71,B5,B5,C4), V(CC,66,66,AA), \ - V(90,48,48,D8), V(06,03,03,05), V(F7,F6,F6,01), V(1C,0E,0E,12), \ - V(C2,61,61,A3), V(6A,35,35,5F), V(AE,57,57,F9), V(69,B9,B9,D0), \ - V(17,86,86,91), V(99,C1,C1,58), V(3A,1D,1D,27), V(27,9E,9E,B9), \ - V(D9,E1,E1,38), V(EB,F8,F8,13), V(2B,98,98,B3), V(22,11,11,33), \ - V(D2,69,69,BB), V(A9,D9,D9,70), V(07,8E,8E,89), V(33,94,94,A7), \ - V(2D,9B,9B,B6), V(3C,1E,1E,22), V(15,87,87,92), V(C9,E9,E9,20), \ - V(87,CE,CE,49), V(AA,55,55,FF), V(50,28,28,78), V(A5,DF,DF,7A), \ - V(03,8C,8C,8F), V(59,A1,A1,F8), V(09,89,89,80), V(1A,0D,0D,17), \ - V(65,BF,BF,DA), V(D7,E6,E6,31), V(84,42,42,C6), V(D0,68,68,B8), \ - V(82,41,41,C3), V(29,99,99,B0), V(5A,2D,2D,77), V(1E,0F,0F,11), \ - V(7B,B0,B0,CB), V(A8,54,54,FC), V(6D,BB,BB,D6), V(2C,16,16,3A) - -#define V(a,b,c,d) 0x##a##b##c##d -static uint32 FT0[256] = { FT }; -#undef V - -#define V(a,b,c,d) 0x##d##a##b##c -static uint32 FT1[256] = { FT }; -#undef V - -#define V(a,b,c,d) 0x##c##d##a##b -static uint32 FT2[256] = { FT }; -#undef V - -#define V(a,b,c,d) 0x##b##c##d##a -static uint32 FT3[256] = { FT }; -#undef V - -#undef FT - -/* reverse S-box */ - -static uint32 RSb[256] = -{ - 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, - 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB, - 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, - 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, - 0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D, - 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, - 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, - 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25, - 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, - 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, - 0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, - 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, - 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, - 0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06, - 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, - 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, - 0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, - 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, - 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, - 0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E, - 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, - 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, - 0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20, - 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, - 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, - 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F, - 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, - 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, - 0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, - 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, - 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, - 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D -}; - -/* reverse table */ - -#define RT \ -\ - V(51,F4,A7,50), V(7E,41,65,53), V(1A,17,A4,C3), V(3A,27,5E,96), \ - V(3B,AB,6B,CB), V(1F,9D,45,F1), V(AC,FA,58,AB), V(4B,E3,03,93), \ - V(20,30,FA,55), V(AD,76,6D,F6), V(88,CC,76,91), V(F5,02,4C,25), \ - V(4F,E5,D7,FC), V(C5,2A,CB,D7), V(26,35,44,80), V(B5,62,A3,8F), \ - V(DE,B1,5A,49), V(25,BA,1B,67), V(45,EA,0E,98), V(5D,FE,C0,E1), \ - V(C3,2F,75,02), V(81,4C,F0,12), V(8D,46,97,A3), V(6B,D3,F9,C6), \ - V(03,8F,5F,E7), V(15,92,9C,95), V(BF,6D,7A,EB), V(95,52,59,DA), \ - V(D4,BE,83,2D), V(58,74,21,D3), V(49,E0,69,29), V(8E,C9,C8,44), \ - V(75,C2,89,6A), V(F4,8E,79,78), V(99,58,3E,6B), V(27,B9,71,DD), \ - V(BE,E1,4F,B6), V(F0,88,AD,17), V(C9,20,AC,66), V(7D,CE,3A,B4), \ - V(63,DF,4A,18), V(E5,1A,31,82), V(97,51,33,60), V(62,53,7F,45), \ - V(B1,64,77,E0), V(BB,6B,AE,84), V(FE,81,A0,1C), V(F9,08,2B,94), \ - V(70,48,68,58), V(8F,45,FD,19), V(94,DE,6C,87), V(52,7B,F8,B7), \ - V(AB,73,D3,23), V(72,4B,02,E2), V(E3,1F,8F,57), V(66,55,AB,2A), \ - V(B2,EB,28,07), V(2F,B5,C2,03), V(86,C5,7B,9A), V(D3,37,08,A5), \ - V(30,28,87,F2), V(23,BF,A5,B2), V(02,03,6A,BA), V(ED,16,82,5C), \ - V(8A,CF,1C,2B), V(A7,79,B4,92), V(F3,07,F2,F0), V(4E,69,E2,A1), \ - V(65,DA,F4,CD), V(06,05,BE,D5), V(D1,34,62,1F), V(C4,A6,FE,8A), \ - V(34,2E,53,9D), V(A2,F3,55,A0), V(05,8A,E1,32), V(A4,F6,EB,75), \ - V(0B,83,EC,39), V(40,60,EF,AA), V(5E,71,9F,06), V(BD,6E,10,51), \ - V(3E,21,8A,F9), V(96,DD,06,3D), V(DD,3E,05,AE), V(4D,E6,BD,46), \ - V(91,54,8D,B5), V(71,C4,5D,05), V(04,06,D4,6F), V(60,50,15,FF), \ - V(19,98,FB,24), V(D6,BD,E9,97), V(89,40,43,CC), V(67,D9,9E,77), \ - V(B0,E8,42,BD), V(07,89,8B,88), V(E7,19,5B,38), V(79,C8,EE,DB), \ - V(A1,7C,0A,47), V(7C,42,0F,E9), V(F8,84,1E,C9), V(00,00,00,00), \ - V(09,80,86,83), V(32,2B,ED,48), V(1E,11,70,AC), V(6C,5A,72,4E), \ - V(FD,0E,FF,FB), V(0F,85,38,56), V(3D,AE,D5,1E), V(36,2D,39,27), \ - V(0A,0F,D9,64), V(68,5C,A6,21), V(9B,5B,54,D1), V(24,36,2E,3A), \ - V(0C,0A,67,B1), V(93,57,E7,0F), V(B4,EE,96,D2), V(1B,9B,91,9E), \ - V(80,C0,C5,4F), V(61,DC,20,A2), V(5A,77,4B,69), V(1C,12,1A,16), \ - V(E2,93,BA,0A), V(C0,A0,2A,E5), V(3C,22,E0,43), V(12,1B,17,1D), \ - V(0E,09,0D,0B), V(F2,8B,C7,AD), V(2D,B6,A8,B9), V(14,1E,A9,C8), \ - V(57,F1,19,85), V(AF,75,07,4C), V(EE,99,DD,BB), V(A3,7F,60,FD), \ - V(F7,01,26,9F), V(5C,72,F5,BC), V(44,66,3B,C5), V(5B,FB,7E,34), \ - V(8B,43,29,76), V(CB,23,C6,DC), V(B6,ED,FC,68), V(B8,E4,F1,63), \ - V(D7,31,DC,CA), V(42,63,85,10), V(13,97,22,40), V(84,C6,11,20), \ - V(85,4A,24,7D), V(D2,BB,3D,F8), V(AE,F9,32,11), V(C7,29,A1,6D), \ - V(1D,9E,2F,4B), V(DC,B2,30,F3), V(0D,86,52,EC), V(77,C1,E3,D0), \ - V(2B,B3,16,6C), V(A9,70,B9,99), V(11,94,48,FA), V(47,E9,64,22), \ - V(A8,FC,8C,C4), V(A0,F0,3F,1A), V(56,7D,2C,D8), V(22,33,90,EF), \ - V(87,49,4E,C7), V(D9,38,D1,C1), V(8C,CA,A2,FE), V(98,D4,0B,36), \ - V(A6,F5,81,CF), V(A5,7A,DE,28), V(DA,B7,8E,26), V(3F,AD,BF,A4), \ - V(2C,3A,9D,E4), V(50,78,92,0D), V(6A,5F,CC,9B), V(54,7E,46,62), \ - V(F6,8D,13,C2), V(90,D8,B8,E8), V(2E,39,F7,5E), V(82,C3,AF,F5), \ - V(9F,5D,80,BE), V(69,D0,93,7C), V(6F,D5,2D,A9), V(CF,25,12,B3), \ - V(C8,AC,99,3B), V(10,18,7D,A7), V(E8,9C,63,6E), V(DB,3B,BB,7B), \ - V(CD,26,78,09), V(6E,59,18,F4), V(EC,9A,B7,01), V(83,4F,9A,A8), \ - V(E6,95,6E,65), V(AA,FF,E6,7E), V(21,BC,CF,08), V(EF,15,E8,E6), \ - V(BA,E7,9B,D9), V(4A,6F,36,CE), V(EA,9F,09,D4), V(29,B0,7C,D6), \ - V(31,A4,B2,AF), V(2A,3F,23,31), V(C6,A5,94,30), V(35,A2,66,C0), \ - V(74,4E,BC,37), V(FC,82,CA,A6), V(E0,90,D0,B0), V(33,A7,D8,15), \ - V(F1,04,98,4A), V(41,EC,DA,F7), V(7F,CD,50,0E), V(17,91,F6,2F), \ - V(76,4D,D6,8D), V(43,EF,B0,4D), V(CC,AA,4D,54), V(E4,96,04,DF), \ - V(9E,D1,B5,E3), V(4C,6A,88,1B), V(C1,2C,1F,B8), V(46,65,51,7F), \ - V(9D,5E,EA,04), V(01,8C,35,5D), V(FA,87,74,73), V(FB,0B,41,2E), \ - V(B3,67,1D,5A), V(92,DB,D2,52), V(E9,10,56,33), V(6D,D6,47,13), \ - V(9A,D7,61,8C), V(37,A1,0C,7A), V(59,F8,14,8E), V(EB,13,3C,89), \ - V(CE,A9,27,EE), V(B7,61,C9,35), V(E1,1C,E5,ED), V(7A,47,B1,3C), \ - V(9C,D2,DF,59), V(55,F2,73,3F), V(18,14,CE,79), V(73,C7,37,BF), \ - V(53,F7,CD,EA), V(5F,FD,AA,5B), V(DF,3D,6F,14), V(78,44,DB,86), \ - V(CA,AF,F3,81), V(B9,68,C4,3E), V(38,24,34,2C), V(C2,A3,40,5F), \ - V(16,1D,C3,72), V(BC,E2,25,0C), V(28,3C,49,8B), V(FF,0D,95,41), \ - V(39,A8,01,71), V(08,0C,B3,DE), V(D8,B4,E4,9C), V(64,56,C1,90), \ - V(7B,CB,84,61), V(D5,32,B6,70), V(48,6C,5C,74), V(D0,B8,57,42) - -#define V(a,b,c,d) 0x##a##b##c##d -static uint32 RT0[256] = { RT }; -#undef V - -#define V(a,b,c,d) 0x##d##a##b##c -static uint32 RT1[256] = { RT }; -#undef V - -#define V(a,b,c,d) 0x##c##d##a##b -static uint32 RT2[256] = { RT }; -#undef V - -#define V(a,b,c,d) 0x##b##c##d##a -static uint32 RT3[256] = { RT }; -#undef V - -#undef RT - -/* round constants */ - -static uint32 RCON[10] = -{ - 0x01000000, 0x02000000, 0x04000000, 0x08000000, - 0x10000000, 0x20000000, 0x40000000, 0x80000000, - 0x1B000000, 0x36000000 -}; - -/* key schedule tables */ - -static int KT_init = 1; - -static uint32 KT0[256]; -static uint32 KT1[256]; -static uint32 KT2[256]; -static uint32 KT3[256]; - -/* platform-independant 32-bit integer manipulation macros */ - -#define GET_UINT32(n,b,i) \ -{ \ - (n) = ( (uint32) (b)[(i) ] << 24 ) \ - | ( (uint32) (b)[(i) + 1] << 16 ) \ - | ( (uint32) (b)[(i) + 2] << 8 ) \ - | ( (uint32) (b)[(i) + 3] ); \ -} - -#define PUT_UINT32(n,b,i) \ -{ \ - (b)[(i) ] = (uint8) ( (n) >> 24 ); \ - (b)[(i) + 1] = (uint8) ( (n) >> 16 ); \ - (b)[(i) + 2] = (uint8) ( (n) >> 8 ); \ - (b)[(i) + 3] = (uint8) ( (n) ); \ -} - -/* AES key scheduling routine */ - -int aes_set_key( aes_context *ctx, uint8 *key, int nbits ) -{ - int i; - uint32 *RK, *SK; - - switch( nbits ) - { - case 128: ctx->nr = 10; break; - case 192: ctx->nr = 12; break; - case 256: ctx->nr = 14; break; - default : return( 1 ); - } - - RK = ctx->erk; - - for( i = 0; i < (nbits >> 5); i++ ) - { - GET_UINT32( RK[i], key, i * 4 ); - } - - /* setup encryption round keys */ - - switch( nbits ) - { - case 128: - - for( i = 0; i < 10; i++, RK += 4 ) - { - RK[4] = RK[0] ^ RCON[i] ^ - ( FSb[ (uint8) ( RK[3] >> 16 ) ] << 24 ) ^ - ( FSb[ (uint8) ( RK[3] >> 8 ) ] << 16 ) ^ - ( FSb[ (uint8) ( RK[3] ) ] << 8 ) ^ - ( FSb[ (uint8) ( RK[3] >> 24 ) ] ); - - RK[5] = RK[1] ^ RK[4]; - RK[6] = RK[2] ^ RK[5]; - RK[7] = RK[3] ^ RK[6]; - } - break; - - case 192: - - for( i = 0; i < 8; i++, RK += 6 ) - { - RK[6] = RK[0] ^ RCON[i] ^ - ( FSb[ (uint8) ( RK[5] >> 16 ) ] << 24 ) ^ - ( FSb[ (uint8) ( RK[5] >> 8 ) ] << 16 ) ^ - ( FSb[ (uint8) ( RK[5] ) ] << 8 ) ^ - ( FSb[ (uint8) ( RK[5] >> 24 ) ] ); - - RK[7] = RK[1] ^ RK[6]; - RK[8] = RK[2] ^ RK[7]; - RK[9] = RK[3] ^ RK[8]; - RK[10] = RK[4] ^ RK[9]; - RK[11] = RK[5] ^ RK[10]; - } - break; - - case 256: - - for( i = 0; i < 7; i++, RK += 8 ) - { - RK[8] = RK[0] ^ RCON[i] ^ - ( FSb[ (uint8) ( RK[7] >> 16 ) ] << 24 ) ^ - ( FSb[ (uint8) ( RK[7] >> 8 ) ] << 16 ) ^ - ( FSb[ (uint8) ( RK[7] ) ] << 8 ) ^ - ( FSb[ (uint8) ( RK[7] >> 24 ) ] ); - - RK[9] = RK[1] ^ RK[8]; - RK[10] = RK[2] ^ RK[9]; - RK[11] = RK[3] ^ RK[10]; - - RK[12] = RK[4] ^ - ( FSb[ (uint8) ( RK[11] >> 24 ) ] << 24 ) ^ - ( FSb[ (uint8) ( RK[11] >> 16 ) ] << 16 ) ^ - ( FSb[ (uint8) ( RK[11] >> 8 ) ] << 8 ) ^ - ( FSb[ (uint8) ( RK[11] ) ] ); - - RK[13] = RK[5] ^ RK[12]; - RK[14] = RK[6] ^ RK[13]; - RK[15] = RK[7] ^ RK[14]; - } - break; - } - - /* setup decryption round keys */ - - if( KT_init ) - { - for( i = 0; i < 256; i++ ) - { - KT0[i] = RT0[ FSb[i] ]; - KT1[i] = RT1[ FSb[i] ]; - KT2[i] = RT2[ FSb[i] ]; - KT3[i] = RT3[ FSb[i] ]; - } - - KT_init = 0; - } - - SK = ctx->drk; - - *SK++ = *RK++; - *SK++ = *RK++; - *SK++ = *RK++; - *SK++ = *RK++; - - for( i = 1; i < ctx->nr; i++ ) - { - RK -= 8; - - *SK++ = KT0[ (uint8) ( *RK >> 24 ) ] ^ - KT1[ (uint8) ( *RK >> 16 ) ] ^ - KT2[ (uint8) ( *RK >> 8 ) ] ^ - KT3[ (uint8) ( *RK ) ]; RK++; - - *SK++ = KT0[ (uint8) ( *RK >> 24 ) ] ^ - KT1[ (uint8) ( *RK >> 16 ) ] ^ - KT2[ (uint8) ( *RK >> 8 ) ] ^ - KT3[ (uint8) ( *RK ) ]; RK++; - - *SK++ = KT0[ (uint8) ( *RK >> 24 ) ] ^ - KT1[ (uint8) ( *RK >> 16 ) ] ^ - KT2[ (uint8) ( *RK >> 8 ) ] ^ - KT3[ (uint8) ( *RK ) ]; RK++; - - *SK++ = KT0[ (uint8) ( *RK >> 24 ) ] ^ - KT1[ (uint8) ( *RK >> 16 ) ] ^ - KT2[ (uint8) ( *RK >> 8 ) ] ^ - KT3[ (uint8) ( *RK ) ]; RK++; - } - - RK -= 8; - - *SK++ = *RK++; - *SK++ = *RK++; - *SK++ = *RK++; - *SK++ = *RK++; - - return( 0 ); -} - -/* AES 128-bit block encryption routine */ - -void aes_encrypt(aes_context *ctx, uint8 input[16], uint8 output[16] ) -{ - uint32 *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; - - RK = ctx->erk; - GET_UINT32( X0, input, 0 ); X0 ^= RK[0]; - GET_UINT32( X1, input, 4 ); X1 ^= RK[1]; - GET_UINT32( X2, input, 8 ); X2 ^= RK[2]; - GET_UINT32( X3, input, 12 ); X3 ^= RK[3]; - -#define AES_FROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ -{ \ - RK += 4; \ - \ - X0 = RK[0] ^ FT0[ (uint8) ( Y0 >> 24 ) ] ^ \ - FT1[ (uint8) ( Y1 >> 16 ) ] ^ \ - FT2[ (uint8) ( Y2 >> 8 ) ] ^ \ - FT3[ (uint8) ( Y3 ) ]; \ - \ - X1 = RK[1] ^ FT0[ (uint8) ( Y1 >> 24 ) ] ^ \ - FT1[ (uint8) ( Y2 >> 16 ) ] ^ \ - FT2[ (uint8) ( Y3 >> 8 ) ] ^ \ - FT3[ (uint8) ( Y0 ) ]; \ - \ - X2 = RK[2] ^ FT0[ (uint8) ( Y2 >> 24 ) ] ^ \ - FT1[ (uint8) ( Y3 >> 16 ) ] ^ \ - FT2[ (uint8) ( Y0 >> 8 ) ] ^ \ - FT3[ (uint8) ( Y1 ) ]; \ - \ - X3 = RK[3] ^ FT0[ (uint8) ( Y3 >> 24 ) ] ^ \ - FT1[ (uint8) ( Y0 >> 16 ) ] ^ \ - FT2[ (uint8) ( Y1 >> 8 ) ] ^ \ - FT3[ (uint8) ( Y2 ) ]; \ -} - - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 1 */ - AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 2 */ - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 3 */ - AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 4 */ - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 5 */ - AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 6 */ - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 7 */ - AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 8 */ - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 9 */ - - if( ctx->nr > 10 ) - { - AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 10 */ - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 11 */ - } - - if( ctx->nr > 12 ) - { - AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 12 */ - AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 13 */ - } - - /* last round */ - - RK += 4; - - X0 = RK[0] ^ ( FSb[ (uint8) ( Y0 >> 24 ) ] << 24 ) ^ - ( FSb[ (uint8) ( Y1 >> 16 ) ] << 16 ) ^ - ( FSb[ (uint8) ( Y2 >> 8 ) ] << 8 ) ^ - ( FSb[ (uint8) ( Y3 ) ] ); - - X1 = RK[1] ^ ( FSb[ (uint8) ( Y1 >> 24 ) ] << 24 ) ^ - ( FSb[ (uint8) ( Y2 >> 16 ) ] << 16 ) ^ - ( FSb[ (uint8) ( Y3 >> 8 ) ] << 8 ) ^ - ( FSb[ (uint8) ( Y0 ) ] ); - - X2 = RK[2] ^ ( FSb[ (uint8) ( Y2 >> 24 ) ] << 24 ) ^ - ( FSb[ (uint8) ( Y3 >> 16 ) ] << 16 ) ^ - ( FSb[ (uint8) ( Y0 >> 8 ) ] << 8 ) ^ - ( FSb[ (uint8) ( Y1 ) ] ); - - X3 = RK[3] ^ ( FSb[ (uint8) ( Y3 >> 24 ) ] << 24 ) ^ - ( FSb[ (uint8) ( Y0 >> 16 ) ] << 16 ) ^ - ( FSb[ (uint8) ( Y1 >> 8 ) ] << 8 ) ^ - ( FSb[ (uint8) ( Y2 ) ] ); - - PUT_UINT32( X0, output, 0 ); - PUT_UINT32( X1, output, 4 ); - PUT_UINT32( X2, output, 8 ); - PUT_UINT32( X3, output, 12 ); -} - -/* AES 128-bit block decryption routine */ - -void aes_decrypt( aes_context *ctx, uint8 input[16], uint8 output[16] ) -{ - uint32 *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; - - RK = ctx->drk; - - GET_UINT32( X0, input, 0 ); X0 ^= RK[0]; - GET_UINT32( X1, input, 4 ); X1 ^= RK[1]; - GET_UINT32( X2, input, 8 ); X2 ^= RK[2]; - GET_UINT32( X3, input, 12 ); X3 ^= RK[3]; - -#define AES_RROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ -{ \ - RK += 4; \ - \ - X0 = RK[0] ^ RT0[ (uint8) ( Y0 >> 24 ) ] ^ \ - RT1[ (uint8) ( Y3 >> 16 ) ] ^ \ - RT2[ (uint8) ( Y2 >> 8 ) ] ^ \ - RT3[ (uint8) ( Y1 ) ]; \ - \ - X1 = RK[1] ^ RT0[ (uint8) ( Y1 >> 24 ) ] ^ \ - RT1[ (uint8) ( Y0 >> 16 ) ] ^ \ - RT2[ (uint8) ( Y3 >> 8 ) ] ^ \ - RT3[ (uint8) ( Y2 ) ]; \ - \ - X2 = RK[2] ^ RT0[ (uint8) ( Y2 >> 24 ) ] ^ \ - RT1[ (uint8) ( Y1 >> 16 ) ] ^ \ - RT2[ (uint8) ( Y0 >> 8 ) ] ^ \ - RT3[ (uint8) ( Y3 ) ]; \ - \ - X3 = RK[3] ^ RT0[ (uint8) ( Y3 >> 24 ) ] ^ \ - RT1[ (uint8) ( Y2 >> 16 ) ] ^ \ - RT2[ (uint8) ( Y1 >> 8 ) ] ^ \ - RT3[ (uint8) ( Y0 ) ]; \ -} - - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 1 */ - AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 2 */ - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 3 */ - AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 4 */ - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 5 */ - AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 6 */ - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 7 */ - AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 8 */ - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 9 */ - - if( ctx->nr > 10 ) - { - AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 10 */ - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 11 */ - } - - if( ctx->nr > 12 ) - { - AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 12 */ - AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 13 */ - } - - /* last round */ - - RK += 4; - - X0 = RK[0] ^ ( RSb[ (uint8) ( Y0 >> 24 ) ] << 24 ) ^ - ( RSb[ (uint8) ( Y3 >> 16 ) ] << 16 ) ^ - ( RSb[ (uint8) ( Y2 >> 8 ) ] << 8 ) ^ - ( RSb[ (uint8) ( Y1 ) ] ); - - X1 = RK[1] ^ ( RSb[ (uint8) ( Y1 >> 24 ) ] << 24 ) ^ - ( RSb[ (uint8) ( Y0 >> 16 ) ] << 16 ) ^ - ( RSb[ (uint8) ( Y3 >> 8 ) ] << 8 ) ^ - ( RSb[ (uint8) ( Y2 ) ] ); - - X2 = RK[2] ^ ( RSb[ (uint8) ( Y2 >> 24 ) ] << 24 ) ^ - ( RSb[ (uint8) ( Y1 >> 16 ) ] << 16 ) ^ - ( RSb[ (uint8) ( Y0 >> 8 ) ] << 8 ) ^ - ( RSb[ (uint8) ( Y3 ) ] ); - - X3 = RK[3] ^ ( RSb[ (uint8) ( Y3 >> 24 ) ] << 24 ) ^ - ( RSb[ (uint8) ( Y2 >> 16 ) ] << 16 ) ^ - ( RSb[ (uint8) ( Y1 >> 8 ) ] << 8 ) ^ - ( RSb[ (uint8) ( Y0 ) ] ); - - PUT_UINT32( X0, output, 0 ); - PUT_UINT32( X1, output, 4 ); - PUT_UINT32( X2, output, 8 ); - PUT_UINT32( X3, output, 12 ); -} - -void hmac_sha1(unsigned char *text, int text_len, unsigned char *key, int key_len, unsigned char *digest) -{ - SHA_CTX context; - unsigned char k_ipad[65]; /* inner padding - key XORd with ipad */ - unsigned char k_opad[65]; /* outer padding - key XORd with opad */ - int i; - - /* if key is longer than 64 bytes reset it to key=SHA1(key) */ - if (key_len > 64) - { - SHA_CTX tctx; - - SHAInit(&tctx); - SHAUpdate(&tctx, key, key_len); - SHAFinal(&tctx, key); - - key_len = 20; - } - - /* - * the HMAC_SHA1 transform looks like: - * - * SHA1(K XOR opad, SHA1(K XOR ipad, text)) - * - * where K is an n byte key - * ipad is the byte 0x36 repeated 64 times - * opad is the byte 0x5c repeated 64 times - * and text is the data being protected - */ - - /* start out by storing key in pads */ - memset(k_ipad, 0, sizeof k_ipad); - memset(k_opad, 0, sizeof k_opad); - memcpy(k_ipad, key, key_len); - memcpy(k_opad, key, key_len); - - /* XOR key with ipad and opad values */ - for (i = 0; i < 64; i++) - { - k_ipad[i] ^= 0x36; - k_opad[i] ^= 0x5c; - } - - /* perform inner SHA1*/ - SHAInit(&context); /* init context for 1st pass */ - SHAUpdate(&context, k_ipad, 64); /* start with inner pad */ - SHAUpdate(&context, text, text_len); /* then text of datagram */ - SHAFinal(&context, digest); /* finish up 1st pass */ - - /* perform outer SHA1 */ - SHAInit(&context); /* init context for 2nd pass */ - SHAUpdate(&context, k_opad, 64); /* start with outer pad */ - SHAUpdate(&context, digest, 20); /* then results of 1st hash */ - SHAFinal(&context, digest); /* finish up 2nd pass */ -} - -/* -* F(P, S, c, i) = U1 xor U2 xor ... Uc -* U1 = PRF(P, S || Int(i)) -* U2 = PRF(P, U1) -* Uc = PRF(P, Uc-1) -*/ - -void F(char *password, unsigned char *ssid, int ssidlength, int iterations, int count, unsigned char *output) -{ - unsigned char digest[36], digest1[SHA_DIGEST_LEN]; - int i, j; - - /* U1 = PRF(P, S || int(i)) */ - memcpy(digest, ssid, ssidlength); - digest[ssidlength] = (unsigned char)((count>>24) & 0xff); - digest[ssidlength+1] = (unsigned char)((count>>16) & 0xff); - digest[ssidlength+2] = (unsigned char)((count>>8) & 0xff); - digest[ssidlength+3] = (unsigned char)(count & 0xff); - hmac_sha1(digest, ssidlength+4, (unsigned char*) password, (int) strlen(password), digest1); // for WPA update - - /* output = U1 */ - memcpy(output, digest1, SHA_DIGEST_LEN); - - for (i = 1; i < iterations; i++) - { - /* Un = PRF(P, Un-1) */ - hmac_sha1(digest1, SHA_DIGEST_LEN, (unsigned char*) password, (int) strlen(password), digest); // for WPA update - memcpy(digest1, digest, SHA_DIGEST_LEN); - - /* output = output xor Un */ - for (j = 0; j < SHA_DIGEST_LEN; j++) - { - output[j] ^= digest[j]; - } - } -} -/* -* password - ascii string up to 63 characters in length -* ssid - octet string up to 32 octets -* ssidlength - length of ssid in octets -* output must be 40 octets in length and outputs 256 bits of key -*/ -int PasswordHash(char *password, unsigned char *ssid, int ssidlength, unsigned char *output) -{ - if ((strlen(password) > 63) || (ssidlength > 32)) - return 0; - - F(password, ssid, ssidlength, 4096, 1, output); - F(password, ssid, ssidlength, 4096, 2, &output[SHA_DIGEST_LEN]); - return 1; -} +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + * This MD5 code is based on code from Dynamics -- HUT Mobile IP * + * Copyright (C) 1998-2001, Dynamics group * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: md5.c + * + * Abstract: contain MD5 and AES cipher algorithm + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * JanL 28th Oct 03 Initial code + * MarkW 8th Dec 04 Baseline code + ***************************************************************************/ + +#include "rt_config.h" + +/** + * md5_mac: + * @key: pointer to the key used for MAC generation + * @key_len: length of the key in bytes + * @data: pointer to the data area for which the MAC is generated + * @data_len: length of the data in bytes + * @mac: pointer to the buffer holding space for the MAC; the buffer should + * have space for 128-bit (16 bytes) MD5 hash value + * + * md5_mac() determines the message authentication code by using secure hash + * MD5(key | data | key). + */ +void md5_mac(u8 *key, size_t key_len, u8 *data, size_t data_len, u8 *mac) +{ + MD5_CTX context; + + MD5Init(&context); + MD5Update(&context, key, key_len); + MD5Update(&context, data, data_len); + MD5Update(&context, key, key_len); + MD5Final(mac, &context); +} + +/** + * hmac_md5: + * @key: pointer to the key used for MAC generation + * @key_len: length of the key in bytes + * @data: pointer to the data area for which the MAC is generated + * @data_len: length of the data in bytes + * @mac: pointer to the buffer holding space for the MAC; the buffer should + * have space for 128-bit (16 bytes) MD5 hash value + * + * hmac_md5() determines the message authentication code using HMAC-MD5. + * This implementation is based on the sample code presented in RFC 2104. + */ +void hmac_md5(u8 *key, size_t key_len, u8 *data, size_t data_len, u8 *mac) +{ + MD5_CTX context; + u8 k_ipad[65]; /* inner padding - key XORd with ipad */ + u8 k_opad[65]; /* outer padding - key XORd with opad */ + u8 tk[16]; + int i; + + //assert(key != NULL && data != NULL && mac != NULL); + + /* if key is longer than 64 bytes reset it to key = MD5(key) */ + if (key_len > 64) { + MD5_CTX ttcontext; + + MD5Init(&ttcontext); + MD5Update(&ttcontext, key, key_len); + MD5Final(tk, &ttcontext); + //key=(PUCHAR)ttcontext.buf; + key = tk; + key_len = 16; + } + + /* the HMAC_MD5 transform looks like: + * + * MD5(K XOR opad, MD5(K XOR ipad, text)) + * + * where K is an n byte key + * ipad is the byte 0x36 repeated 64 times + * opad is the byte 0x5c repeated 64 times + * and text is the data being protected */ + + /* start out by storing key in pads */ + memset(k_ipad, 0, sizeof(k_ipad)); + memset(k_opad, 0, sizeof(k_opad)); + //assert(key_len < sizeof(k_ipad)); + memcpy(k_ipad, key, key_len); + memcpy(k_opad, key, key_len); + + /* XOR key with ipad and opad values */ + for (i = 0; i < 64; i++) { + k_ipad[i] ^= 0x36; + k_opad[i] ^= 0x5c; + } + + /* perform inner MD5 */ + MD5Init(&context); /* init context for 1st pass */ + MD5Update(&context, k_ipad, 64); /* start with inner pad */ + MD5Update(&context, data, data_len); /* then text of datagram */ + MD5Final(mac, &context); /* finish up 1st pass */ + + /* perform outer MD5 */ + MD5Init(&context); /* init context for 2nd pass */ + MD5Update(&context, k_opad, 64); /* start with outer pad */ + MD5Update(&context, mac, 16); /* then results of 1st hash */ + MD5Final(mac, &context); /* finish up 2nd pass */ +} + + +/* ===== start - public domain MD5 implementation ===== */ +/* + * This code implements the MD5 message-digest algorithm. + * The algorithm is due to Ron Rivest. This code was + * written by Colin Plumb in 1993, no copyright is claimed. + * This code is in the public domain; do with it what you wish. + * + * Equivalent code is available from RSA Data Security, Inc. + * This code has been tested against that, and is equivalent, + * except that you don't need to include two pages of legalese + * with every copy. + * + * To compute the message digest of a chunk of bytes, declare an + * MD5Context structure, pass it to MD5Init, call MD5Update as + * needed on buffers full of bytes, and then call MD5Final, which + * will fill a supplied 16-byte array with the digest. + */ + +#ifndef BIG_ENDIAN +#define byteReverse(buf, len) /* Nothing */ +#else +void byteReverse(unsigned char *buf, unsigned longs); +void byteReverse(unsigned char *buf, unsigned longs) +{ + do { + *(ULONG *)buf = SWAP32(*(ULONG *)buf); + buf += 4; + } while (--longs); +} +#endif + +/* + * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious + * initialization constants. + */ +void MD5Init(struct MD5Context *ctx) +{ + ctx->buf[0] = 0x67452301; + ctx->buf[1] = 0xefcdab89; + ctx->buf[2] = 0x98badcfe; + ctx->buf[3] = 0x10325476; + + ctx->bits[0] = 0; + ctx->bits[1] = 0; +} + +/* + * Update context to reflect the concatenation of another buffer full + * of bytes. + */ +void MD5Update(struct MD5Context *ctx, unsigned char *buf, unsigned len) +{ + u32 t; + + /* Update bitcount */ + + t = ctx->bits[0]; + if ((ctx->bits[0] = t + ((u32) len << 3)) < t) + ctx->bits[1]++; /* Carry from low to high */ + ctx->bits[1] += len >> 29; + + t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */ + + /* Handle any leading odd-sized chunks */ + + if (t) { + unsigned char *p = (unsigned char *) ctx->in + t; + + t = 64 - t; + if (len < t) { + memcpy(p, buf, len); + return; + } + memcpy(p, buf, t); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (u32 *) ctx->in); + buf += t; + len -= t; + } + /* Process data in 64-byte chunks */ + + while (len >= 64) { + memcpy(ctx->in, buf, 64); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (u32 *) ctx->in); + buf += 64; + len -= 64; + } + + /* Handle any remaining bytes of data. */ + + memcpy(ctx->in, buf, len); +} + +/* + * Final wrapup - pad to 64-byte boundary with the bit pattern + * 1 0* (64-bit count of bits processed, MSB-first) + */ +void MD5Final(unsigned char digest[16], struct MD5Context *ctx) +{ + unsigned count; + unsigned char *p; + + /* Compute number of bytes mod 64 */ + count = (ctx->bits[0] >> 3) & 0x3F; + + /* Set the first char of padding to 0x80. This is safe since there is + always at least one byte free */ + p = ctx->in + count; + *p++ = 0x80; + + /* Bytes of padding needed to make 64 bytes */ + count = 64 - 1 - count; + + /* Pad out to 56 mod 64 */ + if (count < 8) { + /* Two lots of padding: Pad the first block to 64 bytes */ + memset(p, 0, count); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (u32 *) ctx->in); + + /* Now fill the next block with 56 bytes */ + memset(ctx->in, 0, 56); + } else { + /* Pad block to 56 bytes */ + memset(p, 0, count - 8); + } + byteReverse(ctx->in, 14); + + /* Append length in bits and transform */ + ((u32 *) ctx->in)[14] = ctx->bits[0]; + ((u32 *) ctx->in)[15] = ctx->bits[1]; + + MD5Transform(ctx->buf, (u32 *) ctx->in); + byteReverse((unsigned char *) ctx->buf, 4); + memcpy(digest, ctx->buf, 16); + memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ +} + +//#ifndef ASM_MD5 +#if 1 + +/* The four core functions - F1 is optimized somewhat */ + +/* #define F1(x, y, z) (x & y | ~x & z) */ +#define F1(x, y, z) (z ^ (x & (y ^ z))) +#define F2(x, y, z) F1(z, x, y) +#define F3(x, y, z) (x ^ y ^ z) +#define F4(x, y, z) (y ^ (x | ~z)) + +/* This is the central step in the MD5 algorithm. */ +#define MD5STEP(f, w, x, y, z, data, s) \ + ( w += f(x, y, z) + data, w =( w<>(32-s))&0xffffffff, w += x ) + +/* + * The core of the MD5 algorithm, this alters an existing MD5 hash to + * reflect the addition of 16 longwords of new data. MD5Update blocks + * the data and converts bytes into longwords for this routine. + */ +void MD5Transform(u32 buf[4], u32 in[16]) +{ + register u32 a, b, c, d; + + a = buf[0]; + b = buf[1]; + c = buf[2]; + d = buf[3]; + + MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); + MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); + MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); + MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); + MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); + MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); + MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); + MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); + MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); + MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); + MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); + MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); + MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); + MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); + MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); + MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); + + MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); + MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); + MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); + MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); + MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); + MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); + MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); + MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); + MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); + MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); + MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); + MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); + MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); + MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); + MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); + MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); + + MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); + MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); + MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); + MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); + MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); + MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); + MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); + MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); + MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); + MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); + MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); + MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); + MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); + MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); + MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); + MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); + + MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); + MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); + MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); + MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); + MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); + MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); + MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); + MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); + MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); + MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); + MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); + MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); + MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); + MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); + MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); + MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); + + buf[0] += a; + buf[1] += b; + buf[2] += c; + buf[3] += d; +} +#endif + +void SHAInit(SHA_CTX *ctx) { + int i; + + ctx->lenW = 0; + ctx->sizeHi = ctx->sizeLo = 0; + + /* Initialize H with the magic constants (see FIPS180 for constants) + */ + ctx->H[0] = 0x67452301L; + ctx->H[1] = 0xefcdab89L; + ctx->H[2] = 0x98badcfeL; + ctx->H[3] = 0x10325476L; + ctx->H[4] = 0xc3d2e1f0L; + + for (i = 0; i < 80; i++) + ctx->W[i] = 0; + } + +#define SHA_ROTL(X,n) ((((X) << (n)) | ((X) >> (32-(n)))) & 0xffffffffL) + +void SHAHashBlock(SHA_CTX *ctx) { + int t; + unsigned long A,B,C,D,E,TEMP; + + for (t = 16; t <= 79; t++) + ctx->W[t] = SHA_ROTL(ctx->W[t-3] ^ ctx->W[t-8] ^ ctx->W[t-14] ^ ctx->W[t-16], 1); + + A = ctx->H[0]; + B = ctx->H[1]; + C = ctx->H[2]; + D = ctx->H[3]; + E = ctx->H[4]; + + for (t = 0; t <= 19; t++) { + TEMP = (SHA_ROTL(A,5) + (((C^D)&B)^D) + E + ctx->W[t] + 0x5a827999L) & 0xffffffffL; + E = D; D = C; C = SHA_ROTL(B, 30); B = A; A = TEMP; + } + for (t = 20; t <= 39; t++) { + TEMP = (SHA_ROTL(A,5) + (B^C^D) + E + ctx->W[t] + 0x6ed9eba1L) & 0xffffffffL; + E = D; D = C; C = SHA_ROTL(B, 30); B = A; A = TEMP; + } + for (t = 40; t <= 59; t++) { + TEMP = (SHA_ROTL(A,5) + ((B&C)|(D&(B|C))) + E + ctx->W[t] + 0x8f1bbcdcL) & 0xffffffffL; + E = D; D = C; C = SHA_ROTL(B, 30); B = A; A = TEMP; + } + for (t = 60; t <= 79; t++) { + TEMP = (SHA_ROTL(A,5) + (B^C^D) + E + ctx->W[t] + 0xca62c1d6L) & 0xffffffffL; + E = D; D = C; C = SHA_ROTL(B, 30); B = A; A = TEMP; + } + + ctx->H[0] += A; + ctx->H[1] += B; + ctx->H[2] += C; + ctx->H[3] += D; + ctx->H[4] += E; +} + +void SHAUpdate(SHA_CTX *ctx, unsigned char *dataIn, int len) +{ + int i; + + /* Read the data into W and process blocks as they get full + */ + for (i = 0; i < len; i++) { + ctx->W[ctx->lenW / 4] <<= 8; + ctx->W[ctx->lenW / 4] |= (unsigned long)dataIn[i]; + if ((++ctx->lenW) % 64 == 0) { + SHAHashBlock(ctx); + ctx->lenW = 0; + } + ctx->sizeLo += 8; + ctx->sizeHi += (ctx->sizeLo < 8); + } +} + + +void SHAFinal(SHA_CTX *ctx, unsigned char hashout[20]) { + unsigned char pad0x80 = 0x80; + unsigned char pad0x00 = 0x00; + unsigned char padlen[8]; + int i; + + /* Pad with a binary 1 (e.g. 0x80), then zeroes, then length + */ + padlen[0] = (unsigned char)((ctx->sizeHi >> 24) & 255); + padlen[1] = (unsigned char)((ctx->sizeHi >> 16) & 255); + padlen[2] = (unsigned char)((ctx->sizeHi >> 8) & 255); + padlen[3] = (unsigned char)((ctx->sizeHi >> 0) & 255); + padlen[4] = (unsigned char)((ctx->sizeLo >> 24) & 255); + padlen[5] = (unsigned char)((ctx->sizeLo >> 16) & 255); + padlen[6] = (unsigned char)((ctx->sizeLo >> 8) & 255); + padlen[7] = (unsigned char)((ctx->sizeLo >> 0) & 255); + SHAUpdate(ctx, &pad0x80, 1); + while (ctx->lenW != 56) + SHAUpdate(ctx, &pad0x00, 1); + SHAUpdate(ctx, padlen, 8); + + /* Output hash + */ + for (i = 0; i < 20; i++) { + hashout[i] = (unsigned char)(ctx->H[i / 4] >> 24); + ctx->H[i / 4] <<= 8; + } + + /* + * Re-initialize the context (also zeroizes contents) + */ + SHAInit(ctx); +} + +/* forward S-box */ + +static uint32 FSb[256] = +{ + 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, + 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, + 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, + 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, + 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, + 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, + 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, + 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75, + 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, + 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, + 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, + 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, + 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, + 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, + 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, + 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, + 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, + 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, + 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, + 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB, + 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, + 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, + 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, + 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, + 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, + 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, + 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, + 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, + 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, + 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, + 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, + 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16 +}; + +/* forward table */ + +#define FT \ +\ + V(C6,63,63,A5), V(F8,7C,7C,84), V(EE,77,77,99), V(F6,7B,7B,8D), \ + V(FF,F2,F2,0D), V(D6,6B,6B,BD), V(DE,6F,6F,B1), V(91,C5,C5,54), \ + V(60,30,30,50), V(02,01,01,03), V(CE,67,67,A9), V(56,2B,2B,7D), \ + V(E7,FE,FE,19), V(B5,D7,D7,62), V(4D,AB,AB,E6), V(EC,76,76,9A), \ + V(8F,CA,CA,45), V(1F,82,82,9D), V(89,C9,C9,40), V(FA,7D,7D,87), \ + V(EF,FA,FA,15), V(B2,59,59,EB), V(8E,47,47,C9), V(FB,F0,F0,0B), \ + V(41,AD,AD,EC), V(B3,D4,D4,67), V(5F,A2,A2,FD), V(45,AF,AF,EA), \ + V(23,9C,9C,BF), V(53,A4,A4,F7), V(E4,72,72,96), V(9B,C0,C0,5B), \ + V(75,B7,B7,C2), V(E1,FD,FD,1C), V(3D,93,93,AE), V(4C,26,26,6A), \ + V(6C,36,36,5A), V(7E,3F,3F,41), V(F5,F7,F7,02), V(83,CC,CC,4F), \ + V(68,34,34,5C), V(51,A5,A5,F4), V(D1,E5,E5,34), V(F9,F1,F1,08), \ + V(E2,71,71,93), V(AB,D8,D8,73), V(62,31,31,53), V(2A,15,15,3F), \ + V(08,04,04,0C), V(95,C7,C7,52), V(46,23,23,65), V(9D,C3,C3,5E), \ + V(30,18,18,28), V(37,96,96,A1), V(0A,05,05,0F), V(2F,9A,9A,B5), \ + V(0E,07,07,09), V(24,12,12,36), V(1B,80,80,9B), V(DF,E2,E2,3D), \ + V(CD,EB,EB,26), V(4E,27,27,69), V(7F,B2,B2,CD), V(EA,75,75,9F), \ + V(12,09,09,1B), V(1D,83,83,9E), V(58,2C,2C,74), V(34,1A,1A,2E), \ + V(36,1B,1B,2D), V(DC,6E,6E,B2), V(B4,5A,5A,EE), V(5B,A0,A0,FB), \ + V(A4,52,52,F6), V(76,3B,3B,4D), V(B7,D6,D6,61), V(7D,B3,B3,CE), \ + V(52,29,29,7B), V(DD,E3,E3,3E), V(5E,2F,2F,71), V(13,84,84,97), \ + V(A6,53,53,F5), V(B9,D1,D1,68), V(00,00,00,00), V(C1,ED,ED,2C), \ + V(40,20,20,60), V(E3,FC,FC,1F), V(79,B1,B1,C8), V(B6,5B,5B,ED), \ + V(D4,6A,6A,BE), V(8D,CB,CB,46), V(67,BE,BE,D9), V(72,39,39,4B), \ + V(94,4A,4A,DE), V(98,4C,4C,D4), V(B0,58,58,E8), V(85,CF,CF,4A), \ + V(BB,D0,D0,6B), V(C5,EF,EF,2A), V(4F,AA,AA,E5), V(ED,FB,FB,16), \ + V(86,43,43,C5), V(9A,4D,4D,D7), V(66,33,33,55), V(11,85,85,94), \ + V(8A,45,45,CF), V(E9,F9,F9,10), V(04,02,02,06), V(FE,7F,7F,81), \ + V(A0,50,50,F0), V(78,3C,3C,44), V(25,9F,9F,BA), V(4B,A8,A8,E3), \ + V(A2,51,51,F3), V(5D,A3,A3,FE), V(80,40,40,C0), V(05,8F,8F,8A), \ + V(3F,92,92,AD), V(21,9D,9D,BC), V(70,38,38,48), V(F1,F5,F5,04), \ + V(63,BC,BC,DF), V(77,B6,B6,C1), V(AF,DA,DA,75), V(42,21,21,63), \ + V(20,10,10,30), V(E5,FF,FF,1A), V(FD,F3,F3,0E), V(BF,D2,D2,6D), \ + V(81,CD,CD,4C), V(18,0C,0C,14), V(26,13,13,35), V(C3,EC,EC,2F), \ + V(BE,5F,5F,E1), V(35,97,97,A2), V(88,44,44,CC), V(2E,17,17,39), \ + V(93,C4,C4,57), V(55,A7,A7,F2), V(FC,7E,7E,82), V(7A,3D,3D,47), \ + V(C8,64,64,AC), V(BA,5D,5D,E7), V(32,19,19,2B), V(E6,73,73,95), \ + V(C0,60,60,A0), V(19,81,81,98), V(9E,4F,4F,D1), V(A3,DC,DC,7F), \ + V(44,22,22,66), V(54,2A,2A,7E), V(3B,90,90,AB), V(0B,88,88,83), \ + V(8C,46,46,CA), V(C7,EE,EE,29), V(6B,B8,B8,D3), V(28,14,14,3C), \ + V(A7,DE,DE,79), V(BC,5E,5E,E2), V(16,0B,0B,1D), V(AD,DB,DB,76), \ + V(DB,E0,E0,3B), V(64,32,32,56), V(74,3A,3A,4E), V(14,0A,0A,1E), \ + V(92,49,49,DB), V(0C,06,06,0A), V(48,24,24,6C), V(B8,5C,5C,E4), \ + V(9F,C2,C2,5D), V(BD,D3,D3,6E), V(43,AC,AC,EF), V(C4,62,62,A6), \ + V(39,91,91,A8), V(31,95,95,A4), V(D3,E4,E4,37), V(F2,79,79,8B), \ + V(D5,E7,E7,32), V(8B,C8,C8,43), V(6E,37,37,59), V(DA,6D,6D,B7), \ + V(01,8D,8D,8C), V(B1,D5,D5,64), V(9C,4E,4E,D2), V(49,A9,A9,E0), \ + V(D8,6C,6C,B4), V(AC,56,56,FA), V(F3,F4,F4,07), V(CF,EA,EA,25), \ + V(CA,65,65,AF), V(F4,7A,7A,8E), V(47,AE,AE,E9), V(10,08,08,18), \ + V(6F,BA,BA,D5), V(F0,78,78,88), V(4A,25,25,6F), V(5C,2E,2E,72), \ + V(38,1C,1C,24), V(57,A6,A6,F1), V(73,B4,B4,C7), V(97,C6,C6,51), \ + V(CB,E8,E8,23), V(A1,DD,DD,7C), V(E8,74,74,9C), V(3E,1F,1F,21), \ + V(96,4B,4B,DD), V(61,BD,BD,DC), V(0D,8B,8B,86), V(0F,8A,8A,85), \ + V(E0,70,70,90), V(7C,3E,3E,42), V(71,B5,B5,C4), V(CC,66,66,AA), \ + V(90,48,48,D8), V(06,03,03,05), V(F7,F6,F6,01), V(1C,0E,0E,12), \ + V(C2,61,61,A3), V(6A,35,35,5F), V(AE,57,57,F9), V(69,B9,B9,D0), \ + V(17,86,86,91), V(99,C1,C1,58), V(3A,1D,1D,27), V(27,9E,9E,B9), \ + V(D9,E1,E1,38), V(EB,F8,F8,13), V(2B,98,98,B3), V(22,11,11,33), \ + V(D2,69,69,BB), V(A9,D9,D9,70), V(07,8E,8E,89), V(33,94,94,A7), \ + V(2D,9B,9B,B6), V(3C,1E,1E,22), V(15,87,87,92), V(C9,E9,E9,20), \ + V(87,CE,CE,49), V(AA,55,55,FF), V(50,28,28,78), V(A5,DF,DF,7A), \ + V(03,8C,8C,8F), V(59,A1,A1,F8), V(09,89,89,80), V(1A,0D,0D,17), \ + V(65,BF,BF,DA), V(D7,E6,E6,31), V(84,42,42,C6), V(D0,68,68,B8), \ + V(82,41,41,C3), V(29,99,99,B0), V(5A,2D,2D,77), V(1E,0F,0F,11), \ + V(7B,B0,B0,CB), V(A8,54,54,FC), V(6D,BB,BB,D6), V(2C,16,16,3A) + +#define V(a,b,c,d) 0x##a##b##c##d +static uint32 FT0[256] = { FT }; +#undef V + +#define V(a,b,c,d) 0x##d##a##b##c +static uint32 FT1[256] = { FT }; +#undef V + +#define V(a,b,c,d) 0x##c##d##a##b +static uint32 FT2[256] = { FT }; +#undef V + +#define V(a,b,c,d) 0x##b##c##d##a +static uint32 FT3[256] = { FT }; +#undef V + +#undef FT + +/* reverse S-box */ + +static uint32 RSb[256] = +{ + 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, + 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB, + 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, + 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, + 0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D, + 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, + 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, + 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25, + 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, + 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, + 0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, + 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, + 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, + 0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06, + 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, + 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, + 0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, + 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, + 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, + 0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E, + 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, + 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, + 0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20, + 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, + 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, + 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F, + 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, + 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, + 0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, + 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, + 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D +}; + +/* reverse table */ + +#define RT \ +\ + V(51,F4,A7,50), V(7E,41,65,53), V(1A,17,A4,C3), V(3A,27,5E,96), \ + V(3B,AB,6B,CB), V(1F,9D,45,F1), V(AC,FA,58,AB), V(4B,E3,03,93), \ + V(20,30,FA,55), V(AD,76,6D,F6), V(88,CC,76,91), V(F5,02,4C,25), \ + V(4F,E5,D7,FC), V(C5,2A,CB,D7), V(26,35,44,80), V(B5,62,A3,8F), \ + V(DE,B1,5A,49), V(25,BA,1B,67), V(45,EA,0E,98), V(5D,FE,C0,E1), \ + V(C3,2F,75,02), V(81,4C,F0,12), V(8D,46,97,A3), V(6B,D3,F9,C6), \ + V(03,8F,5F,E7), V(15,92,9C,95), V(BF,6D,7A,EB), V(95,52,59,DA), \ + V(D4,BE,83,2D), V(58,74,21,D3), V(49,E0,69,29), V(8E,C9,C8,44), \ + V(75,C2,89,6A), V(F4,8E,79,78), V(99,58,3E,6B), V(27,B9,71,DD), \ + V(BE,E1,4F,B6), V(F0,88,AD,17), V(C9,20,AC,66), V(7D,CE,3A,B4), \ + V(63,DF,4A,18), V(E5,1A,31,82), V(97,51,33,60), V(62,53,7F,45), \ + V(B1,64,77,E0), V(BB,6B,AE,84), V(FE,81,A0,1C), V(F9,08,2B,94), \ + V(70,48,68,58), V(8F,45,FD,19), V(94,DE,6C,87), V(52,7B,F8,B7), \ + V(AB,73,D3,23), V(72,4B,02,E2), V(E3,1F,8F,57), V(66,55,AB,2A), \ + V(B2,EB,28,07), V(2F,B5,C2,03), V(86,C5,7B,9A), V(D3,37,08,A5), \ + V(30,28,87,F2), V(23,BF,A5,B2), V(02,03,6A,BA), V(ED,16,82,5C), \ + V(8A,CF,1C,2B), V(A7,79,B4,92), V(F3,07,F2,F0), V(4E,69,E2,A1), \ + V(65,DA,F4,CD), V(06,05,BE,D5), V(D1,34,62,1F), V(C4,A6,FE,8A), \ + V(34,2E,53,9D), V(A2,F3,55,A0), V(05,8A,E1,32), V(A4,F6,EB,75), \ + V(0B,83,EC,39), V(40,60,EF,AA), V(5E,71,9F,06), V(BD,6E,10,51), \ + V(3E,21,8A,F9), V(96,DD,06,3D), V(DD,3E,05,AE), V(4D,E6,BD,46), \ + V(91,54,8D,B5), V(71,C4,5D,05), V(04,06,D4,6F), V(60,50,15,FF), \ + V(19,98,FB,24), V(D6,BD,E9,97), V(89,40,43,CC), V(67,D9,9E,77), \ + V(B0,E8,42,BD), V(07,89,8B,88), V(E7,19,5B,38), V(79,C8,EE,DB), \ + V(A1,7C,0A,47), V(7C,42,0F,E9), V(F8,84,1E,C9), V(00,00,00,00), \ + V(09,80,86,83), V(32,2B,ED,48), V(1E,11,70,AC), V(6C,5A,72,4E), \ + V(FD,0E,FF,FB), V(0F,85,38,56), V(3D,AE,D5,1E), V(36,2D,39,27), \ + V(0A,0F,D9,64), V(68,5C,A6,21), V(9B,5B,54,D1), V(24,36,2E,3A), \ + V(0C,0A,67,B1), V(93,57,E7,0F), V(B4,EE,96,D2), V(1B,9B,91,9E), \ + V(80,C0,C5,4F), V(61,DC,20,A2), V(5A,77,4B,69), V(1C,12,1A,16), \ + V(E2,93,BA,0A), V(C0,A0,2A,E5), V(3C,22,E0,43), V(12,1B,17,1D), \ + V(0E,09,0D,0B), V(F2,8B,C7,AD), V(2D,B6,A8,B9), V(14,1E,A9,C8), \ + V(57,F1,19,85), V(AF,75,07,4C), V(EE,99,DD,BB), V(A3,7F,60,FD), \ + V(F7,01,26,9F), V(5C,72,F5,BC), V(44,66,3B,C5), V(5B,FB,7E,34), \ + V(8B,43,29,76), V(CB,23,C6,DC), V(B6,ED,FC,68), V(B8,E4,F1,63), \ + V(D7,31,DC,CA), V(42,63,85,10), V(13,97,22,40), V(84,C6,11,20), \ + V(85,4A,24,7D), V(D2,BB,3D,F8), V(AE,F9,32,11), V(C7,29,A1,6D), \ + V(1D,9E,2F,4B), V(DC,B2,30,F3), V(0D,86,52,EC), V(77,C1,E3,D0), \ + V(2B,B3,16,6C), V(A9,70,B9,99), V(11,94,48,FA), V(47,E9,64,22), \ + V(A8,FC,8C,C4), V(A0,F0,3F,1A), V(56,7D,2C,D8), V(22,33,90,EF), \ + V(87,49,4E,C7), V(D9,38,D1,C1), V(8C,CA,A2,FE), V(98,D4,0B,36), \ + V(A6,F5,81,CF), V(A5,7A,DE,28), V(DA,B7,8E,26), V(3F,AD,BF,A4), \ + V(2C,3A,9D,E4), V(50,78,92,0D), V(6A,5F,CC,9B), V(54,7E,46,62), \ + V(F6,8D,13,C2), V(90,D8,B8,E8), V(2E,39,F7,5E), V(82,C3,AF,F5), \ + V(9F,5D,80,BE), V(69,D0,93,7C), V(6F,D5,2D,A9), V(CF,25,12,B3), \ + V(C8,AC,99,3B), V(10,18,7D,A7), V(E8,9C,63,6E), V(DB,3B,BB,7B), \ + V(CD,26,78,09), V(6E,59,18,F4), V(EC,9A,B7,01), V(83,4F,9A,A8), \ + V(E6,95,6E,65), V(AA,FF,E6,7E), V(21,BC,CF,08), V(EF,15,E8,E6), \ + V(BA,E7,9B,D9), V(4A,6F,36,CE), V(EA,9F,09,D4), V(29,B0,7C,D6), \ + V(31,A4,B2,AF), V(2A,3F,23,31), V(C6,A5,94,30), V(35,A2,66,C0), \ + V(74,4E,BC,37), V(FC,82,CA,A6), V(E0,90,D0,B0), V(33,A7,D8,15), \ + V(F1,04,98,4A), V(41,EC,DA,F7), V(7F,CD,50,0E), V(17,91,F6,2F), \ + V(76,4D,D6,8D), V(43,EF,B0,4D), V(CC,AA,4D,54), V(E4,96,04,DF), \ + V(9E,D1,B5,E3), V(4C,6A,88,1B), V(C1,2C,1F,B8), V(46,65,51,7F), \ + V(9D,5E,EA,04), V(01,8C,35,5D), V(FA,87,74,73), V(FB,0B,41,2E), \ + V(B3,67,1D,5A), V(92,DB,D2,52), V(E9,10,56,33), V(6D,D6,47,13), \ + V(9A,D7,61,8C), V(37,A1,0C,7A), V(59,F8,14,8E), V(EB,13,3C,89), \ + V(CE,A9,27,EE), V(B7,61,C9,35), V(E1,1C,E5,ED), V(7A,47,B1,3C), \ + V(9C,D2,DF,59), V(55,F2,73,3F), V(18,14,CE,79), V(73,C7,37,BF), \ + V(53,F7,CD,EA), V(5F,FD,AA,5B), V(DF,3D,6F,14), V(78,44,DB,86), \ + V(CA,AF,F3,81), V(B9,68,C4,3E), V(38,24,34,2C), V(C2,A3,40,5F), \ + V(16,1D,C3,72), V(BC,E2,25,0C), V(28,3C,49,8B), V(FF,0D,95,41), \ + V(39,A8,01,71), V(08,0C,B3,DE), V(D8,B4,E4,9C), V(64,56,C1,90), \ + V(7B,CB,84,61), V(D5,32,B6,70), V(48,6C,5C,74), V(D0,B8,57,42) + +#define V(a,b,c,d) 0x##a##b##c##d +static uint32 RT0[256] = { RT }; +#undef V + +#define V(a,b,c,d) 0x##d##a##b##c +static uint32 RT1[256] = { RT }; +#undef V + +#define V(a,b,c,d) 0x##c##d##a##b +static uint32 RT2[256] = { RT }; +#undef V + +#define V(a,b,c,d) 0x##b##c##d##a +static uint32 RT3[256] = { RT }; +#undef V + +#undef RT + +/* round constants */ + +static uint32 RCON[10] = +{ + 0x01000000, 0x02000000, 0x04000000, 0x08000000, + 0x10000000, 0x20000000, 0x40000000, 0x80000000, + 0x1B000000, 0x36000000 +}; + +/* key schedule tables */ + +static int KT_init = 1; + +static uint32 KT0[256]; +static uint32 KT1[256]; +static uint32 KT2[256]; +static uint32 KT3[256]; + +/* platform-independant 32-bit integer manipulation macros */ + +#define GET_UINT32(n,b,i) \ +{ \ + (n) = ( (uint32) (b)[(i) ] << 24 ) \ + | ( (uint32) (b)[(i) + 1] << 16 ) \ + | ( (uint32) (b)[(i) + 2] << 8 ) \ + | ( (uint32) (b)[(i) + 3] ); \ +} + +#define PUT_UINT32(n,b,i) \ +{ \ + (b)[(i) ] = (uint8) ( (n) >> 24 ); \ + (b)[(i) + 1] = (uint8) ( (n) >> 16 ); \ + (b)[(i) + 2] = (uint8) ( (n) >> 8 ); \ + (b)[(i) + 3] = (uint8) ( (n) ); \ +} + +/* AES key scheduling routine */ + +int aes_set_key( aes_context *ctx, uint8 *key, int nbits ) +{ + int i; + uint32 *RK, *SK; + + switch( nbits ) + { + case 128: ctx->nr = 10; break; + case 192: ctx->nr = 12; break; + case 256: ctx->nr = 14; break; + default : return( 1 ); + } + + RK = ctx->erk; + + for( i = 0; i < (nbits >> 5); i++ ) + { + GET_UINT32( RK[i], key, i * 4 ); + } + + /* setup encryption round keys */ + + switch( nbits ) + { + case 128: + + for( i = 0; i < 10; i++, RK += 4 ) + { + RK[4] = RK[0] ^ RCON[i] ^ + ( FSb[ (uint8) ( RK[3] >> 16 ) ] << 24 ) ^ + ( FSb[ (uint8) ( RK[3] >> 8 ) ] << 16 ) ^ + ( FSb[ (uint8) ( RK[3] ) ] << 8 ) ^ + ( FSb[ (uint8) ( RK[3] >> 24 ) ] ); + + RK[5] = RK[1] ^ RK[4]; + RK[6] = RK[2] ^ RK[5]; + RK[7] = RK[3] ^ RK[6]; + } + break; + + case 192: + + for( i = 0; i < 8; i++, RK += 6 ) + { + RK[6] = RK[0] ^ RCON[i] ^ + ( FSb[ (uint8) ( RK[5] >> 16 ) ] << 24 ) ^ + ( FSb[ (uint8) ( RK[5] >> 8 ) ] << 16 ) ^ + ( FSb[ (uint8) ( RK[5] ) ] << 8 ) ^ + ( FSb[ (uint8) ( RK[5] >> 24 ) ] ); + + RK[7] = RK[1] ^ RK[6]; + RK[8] = RK[2] ^ RK[7]; + RK[9] = RK[3] ^ RK[8]; + RK[10] = RK[4] ^ RK[9]; + RK[11] = RK[5] ^ RK[10]; + } + break; + + case 256: + + for( i = 0; i < 7; i++, RK += 8 ) + { + RK[8] = RK[0] ^ RCON[i] ^ + ( FSb[ (uint8) ( RK[7] >> 16 ) ] << 24 ) ^ + ( FSb[ (uint8) ( RK[7] >> 8 ) ] << 16 ) ^ + ( FSb[ (uint8) ( RK[7] ) ] << 8 ) ^ + ( FSb[ (uint8) ( RK[7] >> 24 ) ] ); + + RK[9] = RK[1] ^ RK[8]; + RK[10] = RK[2] ^ RK[9]; + RK[11] = RK[3] ^ RK[10]; + + RK[12] = RK[4] ^ + ( FSb[ (uint8) ( RK[11] >> 24 ) ] << 24 ) ^ + ( FSb[ (uint8) ( RK[11] >> 16 ) ] << 16 ) ^ + ( FSb[ (uint8) ( RK[11] >> 8 ) ] << 8 ) ^ + ( FSb[ (uint8) ( RK[11] ) ] ); + + RK[13] = RK[5] ^ RK[12]; + RK[14] = RK[6] ^ RK[13]; + RK[15] = RK[7] ^ RK[14]; + } + break; + } + + /* setup decryption round keys */ + + if( KT_init ) + { + for( i = 0; i < 256; i++ ) + { + KT0[i] = RT0[ FSb[i] ]; + KT1[i] = RT1[ FSb[i] ]; + KT2[i] = RT2[ FSb[i] ]; + KT3[i] = RT3[ FSb[i] ]; + } + + KT_init = 0; + } + + SK = ctx->drk; + + *SK++ = *RK++; + *SK++ = *RK++; + *SK++ = *RK++; + *SK++ = *RK++; + + for( i = 1; i < ctx->nr; i++ ) + { + RK -= 8; + + *SK++ = KT0[ (uint8) ( *RK >> 24 ) ] ^ + KT1[ (uint8) ( *RK >> 16 ) ] ^ + KT2[ (uint8) ( *RK >> 8 ) ] ^ + KT3[ (uint8) ( *RK ) ]; RK++; + + *SK++ = KT0[ (uint8) ( *RK >> 24 ) ] ^ + KT1[ (uint8) ( *RK >> 16 ) ] ^ + KT2[ (uint8) ( *RK >> 8 ) ] ^ + KT3[ (uint8) ( *RK ) ]; RK++; + + *SK++ = KT0[ (uint8) ( *RK >> 24 ) ] ^ + KT1[ (uint8) ( *RK >> 16 ) ] ^ + KT2[ (uint8) ( *RK >> 8 ) ] ^ + KT3[ (uint8) ( *RK ) ]; RK++; + + *SK++ = KT0[ (uint8) ( *RK >> 24 ) ] ^ + KT1[ (uint8) ( *RK >> 16 ) ] ^ + KT2[ (uint8) ( *RK >> 8 ) ] ^ + KT3[ (uint8) ( *RK ) ]; RK++; + } + + RK -= 8; + + *SK++ = *RK++; + *SK++ = *RK++; + *SK++ = *RK++; + *SK++ = *RK++; + + return( 0 ); +} + +/* AES 128-bit block encryption routine */ + +void aes_encrypt(aes_context *ctx, uint8 input[16], uint8 output[16] ) +{ + uint32 *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; + + RK = ctx->erk; + GET_UINT32( X0, input, 0 ); X0 ^= RK[0]; + GET_UINT32( X1, input, 4 ); X1 ^= RK[1]; + GET_UINT32( X2, input, 8 ); X2 ^= RK[2]; + GET_UINT32( X3, input, 12 ); X3 ^= RK[3]; + +#define AES_FROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ +{ \ + RK += 4; \ + \ + X0 = RK[0] ^ FT0[ (uint8) ( Y0 >> 24 ) ] ^ \ + FT1[ (uint8) ( Y1 >> 16 ) ] ^ \ + FT2[ (uint8) ( Y2 >> 8 ) ] ^ \ + FT3[ (uint8) ( Y3 ) ]; \ + \ + X1 = RK[1] ^ FT0[ (uint8) ( Y1 >> 24 ) ] ^ \ + FT1[ (uint8) ( Y2 >> 16 ) ] ^ \ + FT2[ (uint8) ( Y3 >> 8 ) ] ^ \ + FT3[ (uint8) ( Y0 ) ]; \ + \ + X2 = RK[2] ^ FT0[ (uint8) ( Y2 >> 24 ) ] ^ \ + FT1[ (uint8) ( Y3 >> 16 ) ] ^ \ + FT2[ (uint8) ( Y0 >> 8 ) ] ^ \ + FT3[ (uint8) ( Y1 ) ]; \ + \ + X3 = RK[3] ^ FT0[ (uint8) ( Y3 >> 24 ) ] ^ \ + FT1[ (uint8) ( Y0 >> 16 ) ] ^ \ + FT2[ (uint8) ( Y1 >> 8 ) ] ^ \ + FT3[ (uint8) ( Y2 ) ]; \ +} + + AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 1 */ + AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 2 */ + AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 3 */ + AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 4 */ + AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 5 */ + AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 6 */ + AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 7 */ + AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 8 */ + AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 9 */ + + if( ctx->nr > 10 ) + { + AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 10 */ + AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 11 */ + } + + if( ctx->nr > 12 ) + { + AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 12 */ + AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 13 */ + } + + /* last round */ + + RK += 4; + + X0 = RK[0] ^ ( FSb[ (uint8) ( Y0 >> 24 ) ] << 24 ) ^ + ( FSb[ (uint8) ( Y1 >> 16 ) ] << 16 ) ^ + ( FSb[ (uint8) ( Y2 >> 8 ) ] << 8 ) ^ + ( FSb[ (uint8) ( Y3 ) ] ); + + X1 = RK[1] ^ ( FSb[ (uint8) ( Y1 >> 24 ) ] << 24 ) ^ + ( FSb[ (uint8) ( Y2 >> 16 ) ] << 16 ) ^ + ( FSb[ (uint8) ( Y3 >> 8 ) ] << 8 ) ^ + ( FSb[ (uint8) ( Y0 ) ] ); + + X2 = RK[2] ^ ( FSb[ (uint8) ( Y2 >> 24 ) ] << 24 ) ^ + ( FSb[ (uint8) ( Y3 >> 16 ) ] << 16 ) ^ + ( FSb[ (uint8) ( Y0 >> 8 ) ] << 8 ) ^ + ( FSb[ (uint8) ( Y1 ) ] ); + + X3 = RK[3] ^ ( FSb[ (uint8) ( Y3 >> 24 ) ] << 24 ) ^ + ( FSb[ (uint8) ( Y0 >> 16 ) ] << 16 ) ^ + ( FSb[ (uint8) ( Y1 >> 8 ) ] << 8 ) ^ + ( FSb[ (uint8) ( Y2 ) ] ); + + PUT_UINT32( X0, output, 0 ); + PUT_UINT32( X1, output, 4 ); + PUT_UINT32( X2, output, 8 ); + PUT_UINT32( X3, output, 12 ); +} + +/* AES 128-bit block decryption routine */ + +void aes_decrypt( aes_context *ctx, uint8 input[16], uint8 output[16] ) +{ + uint32 *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3; + + RK = ctx->drk; + + GET_UINT32( X0, input, 0 ); X0 ^= RK[0]; + GET_UINT32( X1, input, 4 ); X1 ^= RK[1]; + GET_UINT32( X2, input, 8 ); X2 ^= RK[2]; + GET_UINT32( X3, input, 12 ); X3 ^= RK[3]; + +#define AES_RROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ +{ \ + RK += 4; \ + \ + X0 = RK[0] ^ RT0[ (uint8) ( Y0 >> 24 ) ] ^ \ + RT1[ (uint8) ( Y3 >> 16 ) ] ^ \ + RT2[ (uint8) ( Y2 >> 8 ) ] ^ \ + RT3[ (uint8) ( Y1 ) ]; \ + \ + X1 = RK[1] ^ RT0[ (uint8) ( Y1 >> 24 ) ] ^ \ + RT1[ (uint8) ( Y0 >> 16 ) ] ^ \ + RT2[ (uint8) ( Y3 >> 8 ) ] ^ \ + RT3[ (uint8) ( Y2 ) ]; \ + \ + X2 = RK[2] ^ RT0[ (uint8) ( Y2 >> 24 ) ] ^ \ + RT1[ (uint8) ( Y1 >> 16 ) ] ^ \ + RT2[ (uint8) ( Y0 >> 8 ) ] ^ \ + RT3[ (uint8) ( Y3 ) ]; \ + \ + X3 = RK[3] ^ RT0[ (uint8) ( Y3 >> 24 ) ] ^ \ + RT1[ (uint8) ( Y2 >> 16 ) ] ^ \ + RT2[ (uint8) ( Y1 >> 8 ) ] ^ \ + RT3[ (uint8) ( Y0 ) ]; \ +} + + AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 1 */ + AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 2 */ + AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 3 */ + AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 4 */ + AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 5 */ + AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 6 */ + AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 7 */ + AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 8 */ + AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 9 */ + + if( ctx->nr > 10 ) + { + AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 10 */ + AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 11 */ + } + + if( ctx->nr > 12 ) + { + AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 ); /* round 12 */ + AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 ); /* round 13 */ + } + + /* last round */ + + RK += 4; + + X0 = RK[0] ^ ( RSb[ (uint8) ( Y0 >> 24 ) ] << 24 ) ^ + ( RSb[ (uint8) ( Y3 >> 16 ) ] << 16 ) ^ + ( RSb[ (uint8) ( Y2 >> 8 ) ] << 8 ) ^ + ( RSb[ (uint8) ( Y1 ) ] ); + + X1 = RK[1] ^ ( RSb[ (uint8) ( Y1 >> 24 ) ] << 24 ) ^ + ( RSb[ (uint8) ( Y0 >> 16 ) ] << 16 ) ^ + ( RSb[ (uint8) ( Y3 >> 8 ) ] << 8 ) ^ + ( RSb[ (uint8) ( Y2 ) ] ); + + X2 = RK[2] ^ ( RSb[ (uint8) ( Y2 >> 24 ) ] << 24 ) ^ + ( RSb[ (uint8) ( Y1 >> 16 ) ] << 16 ) ^ + ( RSb[ (uint8) ( Y0 >> 8 ) ] << 8 ) ^ + ( RSb[ (uint8) ( Y3 ) ] ); + + X3 = RK[3] ^ ( RSb[ (uint8) ( Y3 >> 24 ) ] << 24 ) ^ + ( RSb[ (uint8) ( Y2 >> 16 ) ] << 16 ) ^ + ( RSb[ (uint8) ( Y1 >> 8 ) ] << 8 ) ^ + ( RSb[ (uint8) ( Y0 ) ] ); + + PUT_UINT32( X0, output, 0 ); + PUT_UINT32( X1, output, 4 ); + PUT_UINT32( X2, output, 8 ); + PUT_UINT32( X3, output, 12 ); +} + +void hmac_sha1(unsigned char *text, int text_len, unsigned char *key, int key_len, unsigned char *digest) +{ + SHA_CTX context; + unsigned char k_ipad[65]; /* inner padding - key XORd with ipad */ + unsigned char k_opad[65]; /* outer padding - key XORd with opad */ + int i; + + /* if key is longer than 64 bytes reset it to key=SHA1(key) */ + if (key_len > 64) + { + SHA_CTX tctx; + + SHAInit(&tctx); + SHAUpdate(&tctx, key, key_len); + SHAFinal(&tctx, key); + + key_len = 20; + } + + /* + * the HMAC_SHA1 transform looks like: + * + * SHA1(K XOR opad, SHA1(K XOR ipad, text)) + * + * where K is an n byte key + * ipad is the byte 0x36 repeated 64 times + * opad is the byte 0x5c repeated 64 times + * and text is the data being protected + */ + + /* start out by storing key in pads */ + memset(k_ipad, 0, sizeof k_ipad); + memset(k_opad, 0, sizeof k_opad); + memcpy(k_ipad, key, key_len); + memcpy(k_opad, key, key_len); + + /* XOR key with ipad and opad values */ + for (i = 0; i < 64; i++) + { + k_ipad[i] ^= 0x36; + k_opad[i] ^= 0x5c; + } + + /* perform inner SHA1*/ + SHAInit(&context); /* init context for 1st pass */ + SHAUpdate(&context, k_ipad, 64); /* start with inner pad */ + SHAUpdate(&context, text, text_len); /* then text of datagram */ + SHAFinal(&context, digest); /* finish up 1st pass */ + + /* perform outer SHA1 */ + SHAInit(&context); /* init context for 2nd pass */ + SHAUpdate(&context, k_opad, 64); /* start with outer pad */ + SHAUpdate(&context, digest, 20); /* then results of 1st hash */ + SHAFinal(&context, digest); /* finish up 2nd pass */ +} + +/* +* F(P, S, c, i) = U1 xor U2 xor ... Uc +* U1 = PRF(P, S || Int(i)) +* U2 = PRF(P, U1) +* Uc = PRF(P, Uc-1) +*/ + +void F(char *password, unsigned char *ssid, int ssidlength, int iterations, int count, unsigned char *output) +{ + unsigned char digest[36], digest1[SHA_DIGEST_LEN]; + int i, j; + + /* U1 = PRF(P, S || int(i)) */ + memcpy(digest, ssid, ssidlength); + digest[ssidlength] = (unsigned char)((count>>24) & 0xff); + digest[ssidlength+1] = (unsigned char)((count>>16) & 0xff); + digest[ssidlength+2] = (unsigned char)((count>>8) & 0xff); + digest[ssidlength+3] = (unsigned char)(count & 0xff); + hmac_sha1(digest, ssidlength+4, (unsigned char*) password, (int) strlen(password), digest1); // for WPA update + + /* output = U1 */ + memcpy(output, digest1, SHA_DIGEST_LEN); + + for (i = 1; i < iterations; i++) + { + /* Un = PRF(P, Un-1) */ + hmac_sha1(digest1, SHA_DIGEST_LEN, (unsigned char*) password, (int) strlen(password), digest); // for WPA update + memcpy(digest1, digest, SHA_DIGEST_LEN); + + /* output = output xor Un */ + for (j = 0; j < SHA_DIGEST_LEN; j++) + { + output[j] ^= digest[j]; + } + } +} +/* +* password - ascii string up to 63 characters in length +* ssid - octet string up to 32 octets +* ssidlength - length of ssid in octets +* output must be 40 octets in length and outputs 256 bits of key +*/ +int PasswordHash(char *password, unsigned char *ssid, int ssidlength, unsigned char *output) +{ + if ((strlen(password) > 63) || (ssidlength > 32)) + return 0; + + F(password, ssid, ssidlength, 4096, 1, output); + F(password, ssid, ssidlength, 4096, 2, &output[SHA_DIGEST_LEN]); + return 1; +} --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/auth_rsp.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/auth_rsp.c @@ -1,162 +1,162 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: auth_rsp.c - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * MarkW 8th Dec 04 Baseline code - ***************************************************************************/ - -#include "rt_config.h" - -/* - ========================================================================== - Description: - authentication state machine init procedure - Parameters: - Sm - the state machine - Note: - the state machine looks like the following - - AUTH_RSP_IDLE AUTH_RSP_WAIT_CHAL - MT2_AUTH_CHALLENGE_TIMEOUT auth_rsp_challenge_timeout_action auth_rsp_challenge_timeout_action - MT2_PEER_AUTH_ODD peer_auth_at_auth_rsp_idle_action peer_auth_at_auth_rsp_wait_action - MT2_PEER_DEAUTH peer_deauth_action peer_deauth_action - ========================================================================== - */ -VOID AuthRspStateMachineInit( - IN PRTMP_ADAPTER pAd, - IN PSTATE_MACHINE Sm, - IN STATE_MACHINE_FUNC Trans[]) -{ - ULONG NOW; - - StateMachineInit(Sm, (STATE_MACHINE_FUNC*)Trans, MAX_AUTH_RSP_STATE, MAX_AUTH_RSP_MSG, (STATE_MACHINE_FUNC)Drop, AUTH_RSP_IDLE, AUTH_RSP_MACHINE_BASE); - - // column 1 -// StateMachineSetAction(Sm, AUTH_RSP_IDLE, MT2_AUTH_CHALLENGEG_TIMEOUT, (STATE_MACHINE_FUNC)AuthRspChallengeTimeoutAction); -// StateMachineSetAction(Sm, AUTH_RSP_IDLE, MT2_PEER_AUTH_ODD, (STATE_MACHINE_FUNC)PeerAuthAtAuthRspIdleAction); - StateMachineSetAction(Sm, AUTH_RSP_IDLE, MT2_PEER_DEAUTH, (STATE_MACHINE_FUNC)PeerDeauthAction); - - // column 2 -// StateMachineSetAction(Sm, AUTH_RSP_WAIT_CHAL, MT2_PEER_AUTH_ODD, (STATE_MACHINE_FUNC)PeerAuthAtAuthRspWaitAction); -// StateMachineSetAction(Sm, AUTH_RSP_WAIT_CHAL, MT2_AUTH_CHALLENGE_TIMEOUT, (STATE_MACHINE_FUNC)AuthRspChallengeTimeoutAction); - StateMachineSetAction(Sm, AUTH_RSP_WAIT_CHAL, MT2_PEER_DEAUTH, (STATE_MACHINE_FUNC)PeerDeauthAction); - - // initialize timer - RTMPInitTimer(pAd, &pAd->Mlme.AuthRspAux.AuthRspTimer, AuthRspChallengeTimeout); - - // initialize the random number generator - NOW = jiffies; - LfsrInit(pAd, NOW); -} - - -/* - ========================================================================== - Description: - challenge time out, called by timer thread - ========================================================================== - */ -VOID AuthRspChallengeTimeout( - IN unsigned long data) -{ - RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; - - DBGPRINT(RT_DEBUG_TRACE,"AUTH_RSP - AuthRspChallengeTimeout \n"); - MlmeEnqueue(&pAd->Mlme.Queue, AUTH_RSP_STATE_MACHINE, MT2_AUTH_CHALLENGE_TIMEOUT, 0, NULL); - MlmeHandler(pAd); -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID PeerAuthSimpleRspGenAndSend( - IN PRTMP_ADAPTER pAd, - IN PMACHDR Hdr, - IN USHORT Alg, - IN USHORT Seq, - IN USHORT Reason, - IN USHORT Status) -{ - MACHDR AuthHdr; - UINT FrameLen = 0; - UCHAR *OutBuffer = NULL; - NDIS_STATUS NStatus; - - NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if (NStatus != NDIS_STATUS_SUCCESS) - return; - - if (Reason == MLME_SUCCESS) - { - DBGPRINT(RT_DEBUG_TRACE, "Send AUTH response (seq#2)...\n"); - MgtMacHeaderInit(pAd, &AuthHdr, SUBTYPE_AUTH, 0, &Hdr->Addr2, &pAd->PortCfg.Bssid); - MakeOutgoingFrame(OutBuffer, &FrameLen, - sizeof(MACHDR), &AuthHdr, - 2, &Alg, - 2, &Seq, - 2, &Reason, - END_OF_ARGS); - MiniportMMRequest(pAd, OutBuffer, FrameLen); - } - else - { - MlmeFreeMemory(pAd, OutBuffer); - DBGPRINT(RT_DEBUG_TRACE, "Peer AUTH fail...\n"); - } -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID PeerDeauthAction( - IN PRTMP_ADAPTER pAd, - IN PMLME_QUEUE_ELEM Elem) -{ - MACADDR Addr2; - USHORT Reason; - - if (PeerDeauthSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, &Reason)) - { - if (INFRA_ON(pAd) && MAC_ADDR_EQUAL(&Addr2, &pAd->PortCfg.Bssid)) - { - RTMPCancelTimer(&pAd->Mlme.AuthRspAux.AuthRspTimer); - DBGPRINT(RT_DEBUG_TRACE,"AUTH_RSP - receive DE-AUTH from our AP, reason = %d\n", Reason); - LinkDown(pAd); - } - } - else - { - DBGPRINT(RT_DEBUG_TRACE,"AUTH_RSP - PeerDeauthAction() sanity check fail\n"); - } -} - +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: auth_rsp.c + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * MarkW 8th Dec 04 Baseline code + ***************************************************************************/ + +#include "rt_config.h" + +/* + ========================================================================== + Description: + authentication state machine init procedure + Parameters: + Sm - the state machine + Note: + the state machine looks like the following + + AUTH_RSP_IDLE AUTH_RSP_WAIT_CHAL + MT2_AUTH_CHALLENGE_TIMEOUT auth_rsp_challenge_timeout_action auth_rsp_challenge_timeout_action + MT2_PEER_AUTH_ODD peer_auth_at_auth_rsp_idle_action peer_auth_at_auth_rsp_wait_action + MT2_PEER_DEAUTH peer_deauth_action peer_deauth_action + ========================================================================== + */ +VOID AuthRspStateMachineInit( + IN PRTMP_ADAPTER pAd, + IN PSTATE_MACHINE Sm, + IN STATE_MACHINE_FUNC Trans[]) +{ + ULONG NOW; + + StateMachineInit(Sm, (STATE_MACHINE_FUNC*)Trans, MAX_AUTH_RSP_STATE, MAX_AUTH_RSP_MSG, (STATE_MACHINE_FUNC)Drop, AUTH_RSP_IDLE, AUTH_RSP_MACHINE_BASE); + + // column 1 +// StateMachineSetAction(Sm, AUTH_RSP_IDLE, MT2_AUTH_CHALLENGEG_TIMEOUT, (STATE_MACHINE_FUNC)AuthRspChallengeTimeoutAction); +// StateMachineSetAction(Sm, AUTH_RSP_IDLE, MT2_PEER_AUTH_ODD, (STATE_MACHINE_FUNC)PeerAuthAtAuthRspIdleAction); + StateMachineSetAction(Sm, AUTH_RSP_IDLE, MT2_PEER_DEAUTH, (STATE_MACHINE_FUNC)PeerDeauthAction); + + // column 2 +// StateMachineSetAction(Sm, AUTH_RSP_WAIT_CHAL, MT2_PEER_AUTH_ODD, (STATE_MACHINE_FUNC)PeerAuthAtAuthRspWaitAction); +// StateMachineSetAction(Sm, AUTH_RSP_WAIT_CHAL, MT2_AUTH_CHALLENGE_TIMEOUT, (STATE_MACHINE_FUNC)AuthRspChallengeTimeoutAction); + StateMachineSetAction(Sm, AUTH_RSP_WAIT_CHAL, MT2_PEER_DEAUTH, (STATE_MACHINE_FUNC)PeerDeauthAction); + + // initialize timer + RTMPInitTimer(pAd, &pAd->Mlme.AuthRspAux.AuthRspTimer, AuthRspChallengeTimeout); + + // initialize the random number generator + NOW = jiffies; + LfsrInit(pAd, NOW); +} + + +/* + ========================================================================== + Description: + challenge time out, called by timer thread + ========================================================================== + */ +VOID AuthRspChallengeTimeout( + IN unsigned long data) +{ + RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; + + DBGPRINT(RT_DEBUG_TRACE,"AUTH_RSP - AuthRspChallengeTimeout \n"); + MlmeEnqueue(&pAd->Mlme.Queue, AUTH_RSP_STATE_MACHINE, MT2_AUTH_CHALLENGE_TIMEOUT, 0, NULL); + MlmeHandler(pAd); +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID PeerAuthSimpleRspGenAndSend( + IN PRTMP_ADAPTER pAd, + IN PMACHDR Hdr, + IN USHORT Alg, + IN USHORT Seq, + IN USHORT Reason, + IN USHORT Status) +{ + MACHDR AuthHdr; + UINT FrameLen = 0; + UCHAR *OutBuffer = NULL; + NDIS_STATUS NStatus; + + NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if (NStatus != NDIS_STATUS_SUCCESS) + return; + + if (Reason == MLME_SUCCESS) + { + DBGPRINT(RT_DEBUG_TRACE, "Send AUTH response (seq#2)...\n"); + MgtMacHeaderInit(pAd, &AuthHdr, SUBTYPE_AUTH, 0, &Hdr->Addr2, &pAd->PortCfg.Bssid); + MakeOutgoingFrame(OutBuffer, &FrameLen, + sizeof(MACHDR), &AuthHdr, + 2, &Alg, + 2, &Seq, + 2, &Reason, + END_OF_ARGS); + MiniportMMRequest(pAd, OutBuffer, FrameLen); + } + else + { + MlmeFreeMemory(pAd, OutBuffer); + DBGPRINT(RT_DEBUG_TRACE, "Peer AUTH fail...\n"); + } +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID PeerDeauthAction( + IN PRTMP_ADAPTER pAd, + IN PMLME_QUEUE_ELEM Elem) +{ + MACADDR Addr2; + USHORT Reason; + + if (PeerDeauthSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, &Reason)) + { + if (INFRA_ON(pAd) && MAC_ADDR_EQUAL(&Addr2, &pAd->PortCfg.Bssid)) + { + RTMPCancelTimer(&pAd->Mlme.AuthRspAux.AuthRspTimer); + DBGPRINT(RT_DEBUG_TRACE,"AUTH_RSP - receive DE-AUTH from our AP, reason = %d\n", Reason); + LinkDown(pAd); + } + } + else + { + DBGPRINT(RT_DEBUG_TRACE,"AUTH_RSP - PeerDeauthAction() sanity check fail\n"); + } +} + --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/rtmp_main.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/rtmp_main.c @@ -1,913 +1,1019 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: rtmp_main.c - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * PaulL 25th Nov 02 Initial code - * MarkW 8th Dec 04 Baseline code - * MarkW (rt2400) 8th Dec 04 Promisc mode support - * Flavio (rt2400) 8th Dec 04 Elegant irqreturn_t handling - * Flavio (rt2400) 8th Dec 04 Remove local alloc_netdev - * Flavio (rt2400) 8th Dec 04 Extra debug at init time - * Ivo (rt2400) 15th Dec 04 Debug Level Switching - * RobinC 16th Dec 04 support ifpreup scripts - * RobinC 17th Dec 04 Link quality reporting - * MarkW 31st Jan 05 sysfs support for HAL/NetworkMan - * Bruno 31st Jan 05 Network device name module param - * GertjanW 13th Feb 05 Shared IRQ handling fixes - * MeelisR 2nd Mar 05 PCI management fixes - * MichalL 5th Mar 05 BitKeeper slot_name fix - * Tor Petterson 19th Apr 05 Power management: Suspend and Resume - * MarkW 15th Jul 05 Disable File Config under 4KSTACK - * IvD 15th Jul 05 Support File Config with 4KSTACK - ***************************************************************************/ - -#include "rt_config.h" - -unsigned long IrqFlags; - -// Global static variable, Debug level flag -// Don't hide this behind debug define. There should be as little difference between debug and no-debug as possible. -int debug = 0; /* Default is off. */ -MODULE_PARM(debug, "i"); -MODULE_PARM_DESC(debug, "Enable level: accepted values: 1 to switch debug on, 0 to switch debug off."); - -static char *ifname = NULL ; -MODULE_PARM(ifname, "s"); -MODULE_PARM_DESC(ifname, "Network device name (default ra%d)"); - -// Following information will be show when you run 'modinfo' -MODULE_AUTHOR("http://rt2x00.serialmonkey.com"); -MODULE_DESCRIPTION("Ralink RT2500 802.11g WLAN driver " DRV_VERSION " " DRV_RELDATE); - -MODULE_LICENSE("GPL"); - -extern const struct iw_handler_def rt2500_iw_handler_def; - -static INT __devinit RT2500_init_one ( - IN struct pci_dev *pPci_Dev, - IN const struct pci_device_id *ent) -{ - INT rc; - - // wake up and enable device - if (pci_enable_device (pPci_Dev)) - { - rc = -EIO; - } - else - { - rc = RT2500_probe(pPci_Dev, ent); - if (rc) - pci_disable_device(pPci_Dev); - } - return rc; -} - -// -// PCI device probe & initialization function -// -INT __devinit RT2500_probe( - IN struct pci_dev *pPci_Dev, - IN const struct pci_device_id *ent) -{ - struct net_device *net_dev; - RTMP_ADAPTER *pAd; - CHAR *print_name; - INT chip_id = (int) ent->driver_data; - unsigned long csr_addr; - CSR3_STRUC StaMacReg0; - CSR4_STRUC StaMacReg1; - INT Status = -ENODEV; - - printk("%s %s %s http://rt2x00.serialmonkey.com\n", KERN_INFO DRV_NAME, DRV_VERSION, DRV_RELDATE); - - print_name = pPci_Dev ? pci_name(pPci_Dev) : "rt2500"; - - // alloc_etherdev() will set net_dev->name - net_dev = alloc_etherdev(sizeof(RTMP_ADAPTER)); - if (net_dev == NULL) - { - DBGPRINT(RT_DEBUG_TRACE, "init_ethernet failed\n"); - goto err_out; - } - - SET_MODULE_OWNER(net_dev); - - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) - SET_NETDEV_DEV(net_dev, &(pPci_Dev->dev)); - #endif - - if (pci_request_regions(pPci_Dev, print_name)) - goto err_out_free_netdev; - - // Interrupt IRQ number - net_dev->irq = pPci_Dev->irq; - - // map physical address to virtual address for accessing register - csr_addr = (unsigned long) ioremap(pci_resource_start(pPci_Dev, 0), pci_resource_len(pPci_Dev, 0)); - if (!csr_addr) - { - DBGPRINT(RT_DEBUG_TRACE, "ioremap failed for device %s, region 0x%X @ 0x%lX\n", - print_name, (ULONG)pci_resource_len(pPci_Dev, 0), pci_resource_start(pPci_Dev, 0)); - goto err_out_free_res; - } - - // Save CSR virtual address and irq to device structure - net_dev->base_addr = (unsigned long)csr_addr; - pAd = net_dev->priv; - pAd->CSRBaseAddress = net_dev->base_addr; - pAd->net_dev = net_dev; - - // Set DMA master - pci_set_master(pPci_Dev); - - // Read MAC address - NICReadAdapterInfo(pAd); - - RTMP_IO_READ32(pAd, CSR3, &StaMacReg0.word); - RTMP_IO_READ32(pAd, CSR4, &StaMacReg1.word); - net_dev->dev_addr[0] = StaMacReg0.field.Byte0; - net_dev->dev_addr[1] = StaMacReg0.field.Byte1; - net_dev->dev_addr[2] = StaMacReg0.field.Byte2; - net_dev->dev_addr[3] = StaMacReg0.field.Byte3; - net_dev->dev_addr[4] = StaMacReg1.field.Byte4; - net_dev->dev_addr[5] = StaMacReg1.field.Byte5; - - pAd->chip_id = chip_id; - pAd->pPci_Dev = pPci_Dev; - - // The chip-specific entries in the device structure. - net_dev->open = RT2500_open; - net_dev->hard_start_xmit = RTMPSendPackets; - net_dev->stop = RT2500_close; - net_dev->get_stats = RT2500_get_ether_stats; - -#if WIRELESS_EXT >= 12 - net_dev->get_wireless_stats = RT2500_get_wireless_stats; - net_dev->wireless_handlers = (struct iw_handler_def *) &rt2500_iw_handler_def; -#endif - - net_dev->set_multicast_list = RT2500_set_rx_mode; - net_dev->do_ioctl = RT2500_ioctl; - net_dev->set_mac_address = rt2500_set_mac_address; - - - // register_netdev() will call dev_alloc_name() for us - // TODO: Remove the following line to keep the default eth%d name - if (ifname == NULL) - strcpy(net_dev->name, "ra%d"); - else - strncpy(net_dev->name, ifname, IFNAMSIZ); - - // Register this device - Status = register_netdev(net_dev); - if (Status) - goto err_out_unmap; - - DBGPRINT(RT_DEBUG_TRACE, "%s: at 0x%lx, VA 0x%lx, IRQ %d. \n", - net_dev->name, pci_resource_start(pPci_Dev, 0), (unsigned long)csr_addr, pPci_Dev->irq); - - // Set driver data - pci_set_drvdata(pPci_Dev, net_dev); - - // moved to here by RobinC so if-preup can work - // When driver now loads it is loaded up with "factory" defaults - // All this occurs while the net iface is down - // iwconfig can then be used to configure card BEFORE - // ifconfig ra0 up is applied. - // Note the RT2500STA.dat file will still overwrite settings - // but it is useful for the settings iwconfig doesn't let you at - PortCfgInit(pAd); - - // Build channel list for default physical mode - BuildChannelList(pAd); - - return 0; - -err_out_unmap: - iounmap((void *)csr_addr); -err_out_free_res: - pci_release_regions(pPci_Dev); -err_out_free_netdev: - kfree (net_dev); -err_out: - return Status; -} - -INT RT2500_open( - IN struct net_device *net_dev) -{ - PRTMP_ADAPTER pAd = net_dev->priv; - INT status = NDIS_STATUS_SUCCESS; - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) - if (!try_module_get(THIS_MODULE)) - { - DBGPRINT(RT_DEBUG_ERROR, "%s: cannot reserve module\n", __FUNCTION__); - return -1; - } -#else - MOD_INC_USE_COUNT; -#endif - - // Enable RF Tuning timer - RTMPInitTimer(pAd, &pAd->PortCfg.RfTuningTimer, AsicRfTuningExec); - - // 1. Allocate DMA descriptors & buffers - status = RTMPAllocDMAMemory(pAd); - if (status != NDIS_STATUS_SUCCESS) - goto out_module_put; - - // 2. request interrupt - // Disable interrupts here which is as soon as possible - // This statement should never be true. We might consider to remove it later - if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE)) - { - NICDisableInterrupt(pAd); - } - - status = request_irq(pAd->pPci_Dev->irq, &RTMPIsr, SA_SHIRQ, net_dev->name, net_dev); - if (status) - { - RTMPFreeDMAMemory(pAd); - goto out_module_put; - } - RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE); - - // 3. Read MAC address - //NICReadAdapterInfo(pAd); - - DBGPRINT(RT_DEBUG_TRACE, "%s: RT2500_open() irq %d. MAC = %02x:%02x:%02x:%02x:%02x:%02x \n", - net_dev->name, pAd->pPci_Dev->irq, pAd->CurrentAddress[0], pAd->CurrentAddress[1], pAd->CurrentAddress[2], - pAd->CurrentAddress[3], pAd->CurrentAddress[4], pAd->CurrentAddress[5]); - - NICInitTransmit(pAd); - - // load in data from RT2500STA.dat file - // note this will TRASH any preup settings applied - // if the parameter exists in the file - RTMPReadParametersFromFile(pAd); - - // initialize MLME - status = MlmeInit(pAd); - - // Initialize Mlme Memory Handler - // Allocate 20 nonpaged memory pool which size are MAX_LEN_OF_MLME_BUFFER for use - status = MlmeInitMemoryHandler(pAd, 20, MAX_LEN_OF_MLME_BUFFER); - - if(status != NDIS_STATUS_SUCCESS) - { - free_irq(net_dev->irq, net_dev); - RTMPFreeDMAMemory(pAd); - goto out_module_put; - } - - // Initialize Asics - NICInitializeAdapter(pAd); - - NICReadEEPROMParameters(pAd); - - NICInitAsicFromEEPROM(pAd); - - // 2nd stage hardware initialization after all parameters are acquired from - // Registry or E2PROM - RTMPSetPhyMode(pAd, PHY_11BG_MIXED); - - // Set the timer to check for link beat. -/* RTMPInitTimer(pAd, &pAd->timer, RT2500_timer); - RTMPSetTimer(pAd, &pAd->timer, DEBUG_TASK_DELAY);*/ - - // Enable interrupt - NICEnableInterrupt(pAd); - - // Start net interface tx /rx - netif_start_queue(net_dev); - - netif_carrier_on(net_dev); - netif_wake_queue(net_dev); - - return 0; - -out_module_put: -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) - module_put(THIS_MODULE); -#else - MOD_DEC_USE_COUNT; -#endif - - return status; -} - -VOID RT2500_timer( - IN unsigned long data) -{ - RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; - -// NICCheckForHang(pAd); - - RTMPSetTimer(pAd, &pAd->timer, DEBUG_TASK_DELAY); -} - -/* - ======================================================================== - - Routine Description: - hard_start_xmit handler - - Arguments: - skb point to sk_buf which upper layer transmit - net_dev point to net_dev - Return Value: - None - - Note: - - ======================================================================== -*/ -INT RTMPSendPackets( - IN struct sk_buff *skb, - IN struct net_device *net_dev) -{ - NDIS_STATUS Status = NDIS_STATUS_SUCCESS; - PRTMP_ADAPTER pAdapter = net_dev->priv; - - DBGPRINT(RT_DEBUG_INFO, "<==== RTMPSendPackets\n"); - - if (pAdapter->PortCfg.BssType == BSS_MONITOR) - { - dev_kfree_skb_irq(skb); - return 0; - } - - // Drop packets if no associations - if (!INFRA_ON(pAdapter) && !ADHOC_ON(pAdapter)) - { - // Drop send request since there are no physical connection yet - // Check the association status for infrastructure mode - // And Mibss for Ad-hoc mode setup - dev_kfree_skb_irq(skb); - } - else - { - // This function has to manage NdisSendComplete return call within its routine - // NdisSendComplete will acknowledge upper layer in two steps. - // 1. Within Packet Enqueue, set the NDIS_STATUS_PENDING - // 2. Within TxRingTxDone / PrioRingTxDone call NdisSendComplete with final status - // initial skb->data_len=0, we will use this variable to store data size when fragment(in TKIP) - // and skb->len is actual data len - skb->data_len = skb->len; - Status = RTMPSendPacket(pAdapter,skb); - - if (Status != NDIS_STATUS_SUCCESS) - { - // Errors before enqueue stage - dev_kfree_skb_irq(skb); - } - } - - // Dequeue one frame from SendTxWait queue and process it - // There are two place calling dequeue for TX ring. - // 1. Here, right after queueing the frame. - // 2. At the end of TxRingTxDone service routine. - if ((!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) && - (!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF)) && - (!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RESET_IN_PROGRESS))) - { - //RTMPDeQueuePacket(pAdapter, &pAdapter->TxSwQueue0); - // Call dequeue without selected queue, let the subroutine select the right priority - // Tx software queue - RTMPDeQueuePacket(pAdapter); - } - - return 0; -} - -/* - ======================================================================== - - Routine Description: - Interrupt handler - - Arguments: - irq interrupt line - dev_instance Pointer to net_device - rgs store process's context before entering ISR, - this parameter is just for debug purpose. - - Return Value: - VOID - - Note: - - ======================================================================== -*/ -irqreturn_t RTMPIsr( - IN INT irq, - IN VOID *dev_instance, - IN struct pt_regs *rgs) -{ - struct net_device *net_dev = dev_instance; - PRTMP_ADAPTER pAdapter = net_dev->priv; - INTSRC_STRUC IntSource; - int ret = 0; - - DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleInterrupt\n"); - - // 1. Disable interrupt - if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE) && RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_ACTIVE)) - { - NICDisableInterrupt(pAdapter); - } - - // - // Get the interrupt sources & saved to local variable - // - // RTMP_IO_READ32(pAdapter, CSR7, &IntSource); - RTMP_IO_READ32(pAdapter, CSR7, &IntSource.word); - RTMP_IO_WRITE32(pAdapter, CSR7, IntSource.word); - - // - // Handle interrupt, walk through all bits - // Should start from highest priority interrupt - // The priority can be adjust by altering processing if statement - // - // If required spinlock, each interrupt service routine has to acquire - // and release itself. - // - if (IntSource.field.TbcnExpire) - { - DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleTbcnInterrupt\n"); - RTMPHandleTbcnInterrupt(pAdapter); - ret = 1; - } - - if (IntSource.field.TwakeExpire) - { - DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleTwakeupInterrupt\n"); - RTMPHandleTwakeupInterrupt(pAdapter); - ret = 1; - } - - if (IntSource.field.TatimwExpire) - { - DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleTatimInterrupt\n"); - // RTMPHandleTatimInterrupt(pAdapter); - ret = 1; - } - - if (IntSource.field.EncryptionDone) - { - DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleEncryptionDoneInterrupt\n"); - RTMPHandleEncryptionDoneInterrupt(pAdapter); - ret = 1; - } - - if (IntSource.field.TxRingTxDone) - { - DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleTxRingTxDoneInterrupt\n"); - RTMPHandleTxRingTxDoneInterrupt(pAdapter); - ret = 1; - } - - if (IntSource.field.AtimRingTxDone) - { - DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleAtimRingTxDoneInterrupt\n"); - RTMPHandleAtimRingTxDoneInterrupt(pAdapter); - ret = 1; - } - - if (IntSource.field.PrioRingTxDone) - { - DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandlePrioRingTxDoneInterrupt\n"); - RTMPHandlePrioRingTxDoneInterrupt(pAdapter); - ret = 1; - } - - if (IntSource.field.DecryptionDone) - { - DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleDecryptionDoneInterrupt\n"); - RTMPHandleDecryptionDoneInterrupt(pAdapter); - ret = 1; - } - - if (IntSource.field.RxDone) - { - DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleRxDoneInterrupt\n"); - RTMPHandleRxDoneInterrupt(pAdapter); - RTMPHandleEncryptionDoneInterrupt(pAdapter); - ret = 1; - } - - // Do nothing if Reset in progress - if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RESET_IN_PROGRESS)) - { - ret = 1; - goto out; - } - - // - // Re-enable the interrupt (disabled in RTMPIsr) - // - NICEnableInterrupt(pAdapter); - - DBGPRINT(RT_DEBUG_INFO, "<==== RTMPHandleInterrupt\n"); -out: - if(ret) - return IRQ_RETVAL(IRQ_HANDLED); - else - return IRQ_RETVAL(IRQ_NONE); -} - -int rt2500_set_mac_address(struct net_device *net_dev, void *addr) -{ - RTMP_ADAPTER *pAd = net_dev->priv; - struct sockaddr *mac = (struct sockaddr*) addr; - u32 set_mac; - - if(netif_running(net_dev)) - return -EBUSY; - - if(!is_valid_ether_addr(&mac->sa_data[0])) - return -EINVAL; - -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,20)) - BUG_ON(net_dev->addr_len != ETH_ALEN); -#endif - - memcpy(net_dev->dev_addr, mac->sa_data, ETH_ALEN); - memcpy(pAd->CurrentAddress, mac->sa_data, ETH_ALEN); - - memset(&set_mac, 0x00, sizeof(INT)); - set_mac = (net_dev->dev_addr[0]) | - (net_dev->dev_addr[1] << 8) | - (net_dev->dev_addr[2] << 16) | - (net_dev->dev_addr[3] << 24); - - RTMP_IO_WRITE32(pAd, CSR3, set_mac); - - memset(&set_mac, 0x00, sizeof(INT)); - set_mac = (net_dev->dev_addr[4]) | - (net_dev->dev_addr[5] << 8); - - RTMP_IO_WRITE32(pAd, CSR4, set_mac); - - printk(KERN_INFO "***rt2x00***: Info - Mac address changed to: %02x:%02x:%02x:%02x:%02x:%02x.\n", net_dev->dev_addr[0], net_dev->dev_addr[1], net_dev->dev_addr[2], net_dev->dev_addr[3], net_dev->dev_addr[4], net_dev->dev_addr[5]); - - return 0; -} - - -#if WIRELESS_EXT >= 12 -/* - ======================================================================== - - Routine Description: - get wireless statistics - - Arguments: - net_dev Pointer to net_device - - Return Value: - struct iw_statistics - - Note: - This function will be called when query /proc - - ======================================================================== -*/ -struct iw_statistics *RT2500_get_wireless_stats( - IN struct net_device *net_dev) -{ - RTMP_ADAPTER *pAd = net_dev->priv; - - // TODO: All elements are zero before be implemented - - pAd->iw_stats.status = 0; // Status - device dependent for now - - pAd->iw_stats.qual.qual = pAd->Mlme.ChannelQuality;//pAd->Mlme.RoamCqi; // link quality (%retries, SNR, %missed beacons or better...) - pAd->iw_stats.qual.level = pAd->PortCfg.LastRssi - RSSI_TO_DBM_OFFSET; // signal level (dBm) - - pAd->iw_stats.qual.noise = (pAd->PortCfg.LastR17Value > BBP_R17_DYNAMIC_UP_BOUND) ? BBP_R17_DYNAMIC_UP_BOUND : ((ULONG) pAd->PortCfg.LastR17Value); // // noise level (dBm) - pAd->iw_stats.qual.updated = 3; // Flags to know if updated - - pAd->iw_stats.discard.nwid = 0; // Rx : Wrong nwid/essid - pAd->iw_stats.miss.beacon = 0; // Missed beacons/superframe - - // pAd->iw_stats.discard.code, discard.fragment, discard.retries, discard.misc has counted in other place - - return &pAd->iw_stats; -} -#endif - -/* - ======================================================================== - - Routine Description: - return ethernet statistics counter - - Arguments: - net_dev Pointer to net_device - - Return Value: - net_device_stats* - - Note: - - ======================================================================== -*/ -struct net_device_stats *RT2500_get_ether_stats( - IN struct net_device *net_dev) -{ - RTMP_ADAPTER *pAd = net_dev->priv; - - DBGPRINT(RT_DEBUG_INFO, "RT2500_get_ether_stats --->\n"); - - pAd->stats.rx_packets = pAd->WlanCounters.ReceivedFragmentCount.vv.LowPart; // total packets received - pAd->stats.tx_packets = pAd->WlanCounters.TransmittedFragmentCount.vv.LowPart; // total packets transmitted - - pAd->stats.rx_bytes= pAd->RalinkCounters.ReceivedByteCount; // total bytes received - pAd->stats.tx_bytes = pAd->RalinkCounters.TransmittedByteCount; // total bytes transmitted - - pAd->stats.rx_errors = pAd->Counters.RxErrors; // bad packets received - pAd->stats.tx_errors = pAd->Counters.TxErrors; // packet transmit problems - - pAd->stats.rx_dropped = pAd->Counters.RxNoBuffer; // no space in linux buffers - pAd->stats.tx_dropped = pAd->WlanCounters.FailedCount.vv.LowPart; // no space available in linux - - pAd->stats.multicast = pAd->WlanCounters.MulticastReceivedFrameCount.vv.LowPart; // multicast packets received - pAd->stats.collisions = pAd->Counters.OneCollision + pAd->Counters.MoreCollisions; // Collision packets - - pAd->stats.rx_length_errors = 0; - pAd->stats.rx_over_errors = pAd->Counters.RxNoBuffer; // receiver ring buff overflow - pAd->stats.rx_crc_errors = 0;//pAd->WlanCounters.FCSErrorCount; // recved pkt with crc error - pAd->stats.rx_frame_errors = pAd->Counters.RcvAlignmentErrors; // recv'd frame alignment error - pAd->stats.rx_fifo_errors = pAd->Counters.RxNoBuffer; // recv'r fifo overrun - pAd->stats.rx_missed_errors = 0; // receiver missed packet - - // detailed tx_errors - pAd->stats.tx_aborted_errors = 0; - pAd->stats.tx_carrier_errors = 0; - pAd->stats.tx_fifo_errors = 0; - pAd->stats.tx_heartbeat_errors = 0; - pAd->stats.tx_window_errors = 0; - - // for cslip etc - pAd->stats.rx_compressed = 0; - pAd->stats.tx_compressed = 0; - - return &pAd->stats; -} - -/* - ======================================================================== - - Routine Description: - Set to filter multicast list - - Arguments: - net_dev Pointer to net_device - - Return Value: - VOID - - Note: - - ======================================================================== -*/ -VOID RT2500_set_rx_mode( - IN struct net_device *net_dev) -{ - RTMP_ADAPTER *pAd; - pAd = net_dev->priv; - if (net_dev->flags&IFF_PROMISC) - { - pAd->bAcceptPromiscuous = TRUE; - RTMP_IO_WRITE32(pAd, RXCSR0, 0x6e); - DBGPRINT(RT_DEBUG_TRACE,"rt2500 acknowledge PROMISC on\n"); - } - else - { - pAd->bAcceptPromiscuous = FALSE; - RTMP_IO_WRITE32(pAd, RXCSR0, 0x7e); - DBGPRINT(RT_DEBUG_TRACE, "rt2500 acknowledge PROMISC off\n"); - } - -} - -// -// Close driver function -// -INT RT2500_close( - IN struct net_device *net_dev) -{ - RTMP_ADAPTER *pAd = net_dev->priv; - // LONG ioaddr = net_dev->base_addr; - - DBGPRINT(RT_DEBUG_TRACE, "%s: ===> RT2500_close\n", net_dev->name); - - LinkDown(pAd); - - // Stop Mlme state machine - RTMPCancelTimer(&pAd->PortCfg.RfTuningTimer); - MlmeHalt(pAd); - - netif_stop_queue(net_dev); - netif_carrier_off(net_dev); - - // Shut down monitor timer task - //RTMPCancelTimer(&pAd->timer); - - if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE)) - { - NICDisableInterrupt(pAd); - } - - // Disable Rx, register value supposed will remain after reset - NICIssueReset(pAd); - - // Free IRQ - if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE)) - { - // Deregister interrupt function - free_irq(net_dev->irq, net_dev); - RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE); - } - - // Free Ring buffers - RTMPFreeDMAMemory(pAd); - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) - module_put(THIS_MODULE); -#else - MOD_DEC_USE_COUNT; -#endif - - return 0; -} - -// -// Remove driver function -// -static VOID __devexit RT2500_remove_one( - IN struct pci_dev *pPci_Dev) -{ - struct net_device *net_dev = pci_get_drvdata(pPci_Dev); - // RTMP_ADAPTER *pAd = net_dev->priv; - - // Unregister network device - unregister_netdev(net_dev); - - // Unmap CSR base address - iounmap((void *)(net_dev->base_addr)); - - // release memory regions - pci_release_regions(pPci_Dev); - - // disable the device - pci_disable_device(pPci_Dev); - - // Free pre-allocated net_device memory - kfree(net_dev); -} - -// -// prepare for software suspend -// -#ifdef CONFIG_PM -#ifndef pm_message_t -#define pm_message_t u32 -#endif - -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,9)) -static u32 suspend_buffer[16]; -#define rt2x00_save_state(__pci) pci_save_state(__pci, suspend_buffer) -#define rt2x00_restore_state(__pci) pci_restore_state(__pci, suspend_buffer) -#else /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,8)) */ -#define rt2x00_save_state(__pci) pci_save_state(__pci) -#define rt2x00_restore_state(__pci) pci_restore_state(__pci) -#endif /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,8)) */ - -static int rt2500_suspend(struct pci_dev *pdev, pm_message_t state) -{ - struct net_device *dev = pci_get_drvdata(pdev); - PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) dev->priv; - - printk(KERN_NOTICE "%s: got suspend request (state %d)\n", - dev->name, state); - - rt2x00_save_state(pdev); - - NICDisableInterrupt(pAdapter); - MlmeHalt(pAdapter); - - netif_stop_queue(dev); - netif_device_detach(dev); - - return 0; -} - -// -// reactivate after software suspend -// -static int rt2500_resume(struct pci_dev *pdev) -{ - struct net_device *dev = pci_get_drvdata(pdev); - PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) dev->priv; - int status; - - pci_enable_device(pdev); - - printk(KERN_NOTICE "%s: got resume request\n", dev->name); - - rt2x00_restore_state(pdev); - - NICInitTransmit(pAdapter); - status = MlmeInit(pAdapter); - status = MlmeInitMemoryHandler(pAdapter, 20, MAX_LEN_OF_MLME_BUFFER); - NICInitializeAdapter(pAdapter); - NICEnableInterrupt(pAdapter); - - netif_device_attach(dev); - netif_start_queue(dev); - - return 0; -} - -#endif /* CONFIG_PM */ - -// -// Ralink PCI device table, include all supported chipsets -// -static struct pci_device_id rt2500_pci_tbl[] __devinitdata = -{ - {0x1814, 0x0201, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RT2560A}, - {0,} /* terminate list */ -}; -MODULE_DEVICE_TABLE(pci, rt2500_pci_tbl); - -// -// Our PCI driver structure -// -static struct pci_driver rt2500_driver = -{ - name: "rt2500", - id_table: rt2500_pci_tbl, - probe: RT2500_init_one, -#ifdef CONFIG_PM - suspend: rt2500_suspend, - resume: rt2500_resume, -#endif /* CONFIG_PM */ -#if LINUX_VERSION_CODE >= 0x20412 || BIG_ENDIAN == TRUE || RTMP_EMBEDDED == TRUE - remove: __devexit_p(RT2500_remove_one), -#else - remove: __devexit(RT2500_remove_one), -#endif -}; - -// ======================================================================= -// LOAD / UNLOAD sections -// ======================================================================= -// -// Driver module load function -// -static INT __init rt2500_init_module(VOID) -{ - return pci_module_init(&rt2500_driver); -} - -// -// Driver module unload function -// -static VOID __exit rt2500_cleanup_module(VOID) -{ - pci_unregister_driver(&rt2500_driver); -} - -module_init(rt2500_init_module); -module_exit(rt2500_cleanup_module); +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: rtmp_main.c + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * PaulL 25th Nov 02 Initial code + * MarkW 8th Dec 04 Baseline code + * MarkW (rt2400) 8th Dec 04 Promisc mode support + * Flavio (rt2400) 8th Dec 04 Elegant irqreturn_t handling + * Flavio (rt2400) 8th Dec 04 Remove local alloc_netdev + * Flavio (rt2400) 8th Dec 04 Extra debug at init time + * Ivo (rt2400) 15th Dec 04 Debug Level Switching + * RobinC 16th Dec 04 support ifpreup scripts + * RobinC 17th Dec 04 Link quality reporting + * MarkW 31st Jan 05 sysfs support for HAL/NetworkMan + * Bruno 31st Jan 05 Network device name module param + * GertjanW 13th Feb 05 Shared IRQ handling fixes + * MeelisR 2nd Mar 05 PCI management fixes + * MichalL 5th Mar 05 BitKeeper slot_name fix + * Tor Petterson 19th Apr 05 Power management: Suspend and Resume + * MarkW 15th Jul 05 Disable File Config under 4KSTACK + * IvD 15th Jul 05 Support File Config with 4KSTACK + ***************************************************************************/ + +#include "rt_config.h" + +unsigned long IrqFlags; + +// Global static variable, Debug level flag +// Don't hide this behind debug define. There should be as little difference between debug and no-debug as possible. +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) +int debug = 0; /* Default is off. */ +MODULE_PARM(debug, "i"); +MODULE_PARM_DESC(debug, "Enable level: accepted values: 1 to switch debug on, 0 to switch debug off."); + +static char *ifname = NULL ; +MODULE_PARM(ifname, "s"); +MODULE_PARM_DESC(ifname, "Network device name (default ra%d)"); +#else +int debug = 0; /* Default is off. */ +module_param(debug, int, 0); +MODULE_PARM_DESC(debug, "Enable level: accepted values: 1 to switch debug on, 0 to switch debug off."); + +static char *ifname = NULL ; +module_param(ifname, charp, 0); +MODULE_PARM_DESC(ifname, "Network device name (default ra%d)"); +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) */ + +// Following information will be show when you run 'modinfo' +MODULE_AUTHOR("http://rt2x00.serialmonkey.com"); +MODULE_DESCRIPTION("Ralink RT2500 802.11g WLAN driver " DRV_VERSION " " DRV_RELDATE); + +MODULE_LICENSE("GPL"); + +extern const struct iw_handler_def rt2500_iw_handler_def; + +/* + * Register layout information. + */ +#define CSR_REG_BASE 0x0000 +#define CSR_REG_SIZE 0x0174 +#define EEPROM_BASE 0x0000 +#define EEPROM_SIZE 0x01ff + +static void +rt2x00_get_drvinfo(struct net_device *net_dev, + struct ethtool_drvinfo *drvinfo) +{ + PRTMP_ADAPTER pAd = net_dev->priv; + + strcpy(drvinfo->driver, NIC_DEVICE_NAME); + strcpy(drvinfo->version, DRV_VERSION); + strcpy(drvinfo->bus_info, pci_name(pAd->pPci_Dev)); +} + +static int +rt2x00_get_regs_len(struct net_device *net_dev) +{ + return CSR_REG_SIZE; +} + +static void +rt2x00_get_regs(struct net_device *net_dev, + struct ethtool_regs *regs, void *data) +{ + PRTMP_ADAPTER pAd = net_dev->priv; + unsigned int counter; + + regs->len = CSR_REG_SIZE; + + for (counter = 0; counter < CSR_REG_SIZE; counter += sizeof(u32)) { + RTMP_IO_READ32(pAd, CSR_REG_BASE + counter, (u32*)data); + data += sizeof(u32); + } +} + +static int +rt2x00_get_eeprom_len(struct net_device *net_dev) +{ + return EEPROM_SIZE; +} + +static int +rt2x00_get_eeprom(struct net_device *net_dev, + struct ethtool_eeprom *eeprom, u8 *data) +{ + PRTMP_ADAPTER pAd = net_dev->priv; + unsigned int counter; + + for (counter = eeprom->offset; counter < eeprom->len; counter += sizeof(u16)) { + u16 value = RTMP_EEPROM_READ16(pAd, CSR_REG_BASE + counter); + memcpy(data, &value, sizeof(u16)); + data += sizeof(u16); + } + + return 0; +} + +static struct ethtool_ops rt2x00_ethtool_ops = { + .get_drvinfo = rt2x00_get_drvinfo, + .get_regs_len = rt2x00_get_regs_len, + .get_regs = rt2x00_get_regs, + .get_link = ethtool_op_get_link, + .get_eeprom_len = rt2x00_get_eeprom_len, + .get_eeprom = rt2x00_get_eeprom, +}; + +static INT __devinit RT2500_init_one ( + IN struct pci_dev *pPci_Dev, + IN const struct pci_device_id *ent) +{ + INT rc; + + // wake up and enable device + if (pci_enable_device (pPci_Dev)) + { + rc = -EIO; + } + else + { + rc = RT2500_probe(pPci_Dev, ent); + if (rc) + pci_disable_device(pPci_Dev); + } + return rc; +} + +// +// PCI device probe & initialization function +// +INT __devinit RT2500_probe( + IN struct pci_dev *pPci_Dev, + IN const struct pci_device_id *ent) +{ + struct net_device *net_dev; + RTMP_ADAPTER *pAd; + CHAR *print_name; + INT chip_id = (int) ent->driver_data; + unsigned long csr_addr; + CSR3_STRUC StaMacReg0; + CSR4_STRUC StaMacReg1; + INT Status = -ENODEV; + + printk("%s %s %s http://rt2x00.serialmonkey.com\n", KERN_INFO DRV_NAME, DRV_VERSION, DRV_RELDATE); + + print_name = pPci_Dev ? pci_name(pPci_Dev) : "rt2500"; + + // alloc_etherdev() will set net_dev->name + net_dev = alloc_etherdev(sizeof(RTMP_ADAPTER)); + if (net_dev == NULL) + { + DBGPRINT(RT_DEBUG_TRACE, "init_ethernet failed\n"); + goto err_out; + } + + SET_MODULE_OWNER(net_dev); + SET_ETHTOOL_OPS(net_dev, &rt2x00_ethtool_ops); + + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) + SET_NETDEV_DEV(net_dev, &(pPci_Dev->dev)); + #endif + + if (pci_request_regions(pPci_Dev, print_name)) + goto err_out_free_netdev; + + // Interrupt IRQ number + net_dev->irq = pPci_Dev->irq; + + // map physical address to virtual address for accessing register + csr_addr = (unsigned long) ioremap(pci_resource_start(pPci_Dev, 0), pci_resource_len(pPci_Dev, 0)); + if (!csr_addr) + { + DBGPRINT(RT_DEBUG_TRACE, "ioremap failed for device %s, region 0x%X @ 0x%lX\n", + print_name, (ULONG)pci_resource_len(pPci_Dev, 0), pci_resource_start(pPci_Dev, 0)); + goto err_out_free_res; + } + + // Save CSR virtual address and irq to device structure + net_dev->base_addr = (unsigned long)csr_addr; + pAd = net_dev->priv; + pAd->CSRBaseAddress = net_dev->base_addr; + pAd->net_dev = net_dev; + + // Set DMA master + pci_set_master(pPci_Dev); + + // Read MAC address + NICReadAdapterInfo(pAd); + + RTMP_IO_READ32(pAd, CSR3, &StaMacReg0.word); + RTMP_IO_READ32(pAd, CSR4, &StaMacReg1.word); + net_dev->dev_addr[0] = StaMacReg0.field.Byte0; + net_dev->dev_addr[1] = StaMacReg0.field.Byte1; + net_dev->dev_addr[2] = StaMacReg0.field.Byte2; + net_dev->dev_addr[3] = StaMacReg0.field.Byte3; + net_dev->dev_addr[4] = StaMacReg1.field.Byte4; + net_dev->dev_addr[5] = StaMacReg1.field.Byte5; + + pAd->chip_id = chip_id; + pAd->pPci_Dev = pPci_Dev; + + // The chip-specific entries in the device structure. + net_dev->open = RT2500_open; + net_dev->hard_start_xmit = RTMPSendPackets; + net_dev->stop = RT2500_close; + net_dev->get_stats = RT2500_get_ether_stats; + +#if WIRELESS_EXT >= 12 +#if WIRELESS_EXT < 17 + net_dev->get_wireless_stats = RT2500_get_wireless_stats; +#endif + net_dev->wireless_handlers = (struct iw_handler_def *) &rt2500_iw_handler_def; +#endif + + net_dev->set_multicast_list = RT2500_set_rx_mode; + net_dev->do_ioctl = RT2500_ioctl; + net_dev->set_mac_address = rt2500_set_mac_address; + + + // register_netdev() will call dev_alloc_name() for us + // TODO: Remove the following line to keep the default eth%d name + if (ifname == NULL) + strcpy(net_dev->name, "ra%d"); + else + strncpy(net_dev->name, ifname, IFNAMSIZ); + + // Enable RF Tuning timer + RTMPInitTimer(pAd, &pAd->PortCfg.RfTuningTimer, AsicRfTuningExec); + + // Register this device + Status = register_netdev(net_dev); + if (Status) + goto err_out_unmap; + + // Allocate DMA descriptors & buffers + Status = RTMPAllocDMAMemory(pAd); + if (Status != NDIS_STATUS_SUCCESS) + goto err_out_unmap; + + DBGPRINT(RT_DEBUG_TRACE, "%s: at 0x%lx, VA 0x%lx, IRQ %d. \n", + net_dev->name, pci_resource_start(pPci_Dev, 0), (unsigned long)csr_addr, pPci_Dev->irq); + + // Set driver data + pci_set_drvdata(pPci_Dev, net_dev); + + // moved to here by RobinC so if-preup can work + // When driver now loads it is loaded up with "factory" defaults + // All this occurs while the net iface is down + // iwconfig can then be used to configure card BEFORE + // ifconfig ra0 up is applied. + // Note the RT2500STA.dat file will still overwrite settings + // but it is useful for the settings iwconfig doesn't let you at + PortCfgInit(pAd); + + MlmeQueueInit(&pAd->Mlme.Queue); // (never fails) + + // Build channel list for default physical mode + BuildChannelList(pAd); + + return 0; + +err_out_unmap: + iounmap((void *)csr_addr); +err_out_free_res: + pci_release_regions(pPci_Dev); +err_out_free_netdev: + kfree (net_dev); +err_out: + return Status; +} + +INT RT2500_open( + IN struct net_device *net_dev) +{ + PRTMP_ADAPTER pAd = net_dev->priv; + INT status = NDIS_STATUS_SUCCESS; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) + if (!try_module_get(THIS_MODULE)) + { + DBGPRINT(RT_DEBUG_ERROR, "%s: cannot reserve module\n", __FUNCTION__); + return -1; + } +#else + MOD_INC_USE_COUNT; +#endif + + // 2. request interrupt + // Disable interrupts here which is as soon as possible + // This statement should never be true. We might consider to remove it later + if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE)) + { + NICDisableInterrupt(pAd); + } + + status = request_irq(pAd->pPci_Dev->irq, &RTMPIsr, SA_SHIRQ, net_dev->name, net_dev); + if (status) + { + goto out_module_put; + } + RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE); + + // 3. Read MAC address + //NICReadAdapterInfo(pAd); + + DBGPRINT(RT_DEBUG_TRACE, "%s: RT2500_open() irq %d. MAC = %02x:%02x:%02x:%02x:%02x:%02x \n", + net_dev->name, pAd->pPci_Dev->irq, pAd->CurrentAddress[0], pAd->CurrentAddress[1], pAd->CurrentAddress[2], + pAd->CurrentAddress[3], pAd->CurrentAddress[4], pAd->CurrentAddress[5]); + + NICInitTransmit(pAd); + + // load in data from RT2500STA.dat file + // note this will TRASH any preup settings applied + // if the parameter exists in the file + RTMPReadParametersFromFile(pAd); + + // initialize MLME + status = MlmeInit(pAd); + + // Initialize Mlme Memory Handler + // Allocate 20 nonpaged memory pool which size are MAX_LEN_OF_MLME_BUFFER for use + status = MlmeInitMemoryHandler(pAd, 20, MAX_LEN_OF_MLME_BUFFER); + + if(status != NDIS_STATUS_SUCCESS) + { + free_irq(net_dev->irq, net_dev); + goto out_module_put; + } + + // Initialize Asics + NICInitializeAdapter(pAd); + + NICReadEEPROMParameters(pAd); + + NICInitAsicFromEEPROM(pAd); + + // 2nd stage hardware initialization after all parameters are acquired from + // Registry or E2PROM + RTMPSetPhyMode(pAd, PHY_11BG_MIXED); + + // Set the timer to check for link beat. +/* RTMPInitTimer(pAd, &pAd->timer, RT2500_timer); + RTMPSetTimer(pAd, &pAd->timer, DEBUG_TASK_DELAY);*/ + + // Enable interrupt + NICEnableInterrupt(pAd); + + // Start net interface tx /rx + netif_start_queue(net_dev); + + netif_carrier_on(net_dev); + netif_wake_queue(net_dev); + + return 0; + +out_module_put: +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) + module_put(THIS_MODULE); +#else + MOD_DEC_USE_COUNT; +#endif + + return status; +} + +VOID RT2500_timer( + IN unsigned long data) +{ + RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; + +// NICCheckForHang(pAd); + + RTMPSetTimer(pAd, &pAd->timer, DEBUG_TASK_DELAY); +} + +/* + ======================================================================== + + Routine Description: + hard_start_xmit handler + + Arguments: + skb point to sk_buf which upper layer transmit + net_dev point to net_dev + Return Value: + None + + Note: + + ======================================================================== +*/ +INT RTMPSendPackets( + IN struct sk_buff *skb, + IN struct net_device *net_dev) +{ + NDIS_STATUS Status = NDIS_STATUS_SUCCESS; + PRTMP_ADAPTER pAdapter = net_dev->priv; + + DBGPRINT(RT_DEBUG_INFO, "<==== RTMPSendPackets\n"); + + if (pAdapter->PortCfg.BssType == BSS_MONITOR && pAdapter->PortCfg.MallowRFMONTx != TRUE) + { + dev_kfree_skb_irq(skb); + return 0; + } + + // Drop packets if no associations + if ( pAdapter->PortCfg.BssType != BSS_MONITOR && + !INFRA_ON(pAdapter) && !ADHOC_ON(pAdapter)) + { + // Drop send request since there are no physical connection yet + // Check the association status for infrastructure mode + // And Mibss for Ad-hoc mode setup + dev_kfree_skb_irq(skb); + } + else + { + // This function has to manage NdisSendComplete return call within its routine + // NdisSendComplete will acknowledge upper layer in two steps. + // 1. Within Packet Enqueue, set the NDIS_STATUS_PENDING + // 2. Within TxRingTxDone / PrioRingTxDone call NdisSendComplete with final status + // initial skb->data_len=0, we will use this variable to store data size when fragment(in TKIP) + // and skb->len is actual data len + skb->data_len = skb->len; + Status = RTMPSendPacket(pAdapter,skb); + + if (Status != NDIS_STATUS_SUCCESS) + { + // Errors before enqueue stage + dev_kfree_skb_irq(skb); + } + } + + // Dequeue one frame from SendTxWait queue and process it + // There are two place calling dequeue for TX ring. + // 1. Here, right after queueing the frame. + // 2. At the end of TxRingTxDone service routine. + if ((!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) && + (!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF)) && + (!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RESET_IN_PROGRESS))) + { + //RTMPDeQueuePacket(pAdapter, &pAdapter->TxSwQueue0); + // Call dequeue without selected queue, let the subroutine select the right priority + // Tx software queue + RTMPDeQueuePacket(pAdapter); + } + + return 0; +} + +/* + ======================================================================== + + Routine Description: + Interrupt handler + + Arguments: + irq interrupt line + dev_instance Pointer to net_device + rgs store process's context before entering ISR, + this parameter is just for debug purpose. + + Return Value: + VOID + + Note: + + ======================================================================== +*/ +irqreturn_t RTMPIsr( + IN INT irq, + IN VOID *dev_instance, + IN struct pt_regs *rgs) +{ + struct net_device *net_dev = dev_instance; + PRTMP_ADAPTER pAdapter = net_dev->priv; + INTSRC_STRUC IntSource; + int ret = 0; + + DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleInterrupt\n"); + + // 1. Disable interrupt + if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE) && RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_ACTIVE)) + { + NICDisableInterrupt(pAdapter); + } + + // + // Get the interrupt sources & saved to local variable + // + // RTMP_IO_READ32(pAdapter, CSR7, &IntSource); + RTMP_IO_READ32(pAdapter, CSR7, &IntSource.word); + RTMP_IO_WRITE32(pAdapter, CSR7, IntSource.word); + + // + // Handle interrupt, walk through all bits + // Should start from highest priority interrupt + // The priority can be adjust by altering processing if statement + // + // If required spinlock, each interrupt service routine has to acquire + // and release itself. + // + if (IntSource.field.TbcnExpire) + { + DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleTbcnInterrupt\n"); + RTMPHandleTbcnInterrupt(pAdapter); + ret = 1; + } + + if (IntSource.field.TwakeExpire) + { + DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleTwakeupInterrupt\n"); + RTMPHandleTwakeupInterrupt(pAdapter); + ret = 1; + } + + if (IntSource.field.TatimwExpire) + { + DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleTatimInterrupt\n"); + // RTMPHandleTatimInterrupt(pAdapter); + ret = 1; + } + + if (IntSource.field.EncryptionDone) + { + DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleEncryptionDoneInterrupt\n"); + RTMPHandleEncryptionDoneInterrupt(pAdapter); + ret = 1; + } + + if (IntSource.field.TxRingTxDone) + { + DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleTxRingTxDoneInterrupt\n"); + RTMPHandleTxRingTxDoneInterrupt(pAdapter); + ret = 1; + } + + if (IntSource.field.AtimRingTxDone) + { + DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleAtimRingTxDoneInterrupt\n"); + RTMPHandleAtimRingTxDoneInterrupt(pAdapter); + ret = 1; + } + + if (IntSource.field.PrioRingTxDone) + { + DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandlePrioRingTxDoneInterrupt\n"); + RTMPHandlePrioRingTxDoneInterrupt(pAdapter); + ret = 1; + } + + if (IntSource.field.DecryptionDone) + { + DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleDecryptionDoneInterrupt\n"); + RTMPHandleDecryptionDoneInterrupt(pAdapter); + ret = 1; + } + + if (IntSource.field.RxDone) + { + DBGPRINT(RT_DEBUG_INFO, "====> RTMPHandleRxDoneInterrupt\n"); + RTMPHandleRxDoneInterrupt(pAdapter); + RTMPHandleEncryptionDoneInterrupt(pAdapter); + ret = 1; + } + + // Do nothing if Reset in progress + if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_RESET_IN_PROGRESS)) + { + ret = 1; + goto out; + } + + // + // Re-enable the interrupt (disabled in RTMPIsr) + // + NICEnableInterrupt(pAdapter); + + DBGPRINT(RT_DEBUG_INFO, "<==== RTMPHandleInterrupt\n"); +out: + if(ret) + return IRQ_RETVAL(IRQ_HANDLED); + else + return IRQ_RETVAL(IRQ_NONE); +} + +int rt2500_set_mac_address(struct net_device *net_dev, void *addr) +{ + RTMP_ADAPTER *pAd = net_dev->priv; + struct sockaddr *mac = (struct sockaddr*) addr; + u32 set_mac; + + if(netif_running(net_dev)) + return -EBUSY; + + if(!is_valid_ether_addr(&mac->sa_data[0])) + return -EINVAL; + +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,20)) + BUG_ON(net_dev->addr_len != ETH_ALEN); +#endif + + memcpy(net_dev->dev_addr, mac->sa_data, ETH_ALEN); + memcpy(pAd->CurrentAddress, mac->sa_data, ETH_ALEN); + + memset(&set_mac, 0x00, sizeof(INT)); + set_mac = (net_dev->dev_addr[0]) | + (net_dev->dev_addr[1] << 8) | + (net_dev->dev_addr[2] << 16) | + (net_dev->dev_addr[3] << 24); + + RTMP_IO_WRITE32(pAd, CSR3, set_mac); + + memset(&set_mac, 0x00, sizeof(INT)); + set_mac = (net_dev->dev_addr[4]) | + (net_dev->dev_addr[5] << 8); + + RTMP_IO_WRITE32(pAd, CSR4, set_mac); + + printk(KERN_INFO "***rt2x00***: Info - Mac address changed to: %02x:%02x:%02x:%02x:%02x:%02x.\n", net_dev->dev_addr[0], net_dev->dev_addr[1], net_dev->dev_addr[2], net_dev->dev_addr[3], net_dev->dev_addr[4], net_dev->dev_addr[5]); + + return 0; +} + + +#if WIRELESS_EXT >= 12 +/* + ======================================================================== + + Routine Description: + get wireless statistics + + Arguments: + net_dev Pointer to net_device + + Return Value: + struct iw_statistics + + Note: + This function will be called when query /proc + + ======================================================================== +*/ +struct iw_statistics *RT2500_get_wireless_stats( + IN struct net_device *net_dev) +{ + RTMP_ADAPTER *pAd = net_dev->priv; + + // TODO: All elements are zero before be implemented + + pAd->iw_stats.status = 0; // Status - device dependent for now + + pAd->iw_stats.qual.qual = pAd->Mlme.ChannelQuality;//pAd->Mlme.RoamCqi; // link quality (%retries, SNR, %missed beacons or better...) + pAd->iw_stats.qual.level = pAd->PortCfg.LastRssi - RSSI_TO_DBM_OFFSET; // signal level (dBm) + + pAd->iw_stats.qual.noise = (pAd->PortCfg.LastR17Value > BBP_R17_DYNAMIC_UP_BOUND) ? BBP_R17_DYNAMIC_UP_BOUND : ((ULONG) pAd->PortCfg.LastR17Value); // // noise level (dBm) + pAd->iw_stats.qual.updated = 3; // Flags to know if updated + + pAd->iw_stats.discard.nwid = 0; // Rx : Wrong nwid/essid + pAd->iw_stats.miss.beacon = 0; // Missed beacons/superframe + + // pAd->iw_stats.discard.code, discard.fragment, discard.retries, discard.misc has counted in other place + + return &pAd->iw_stats; +} +#endif + +/* + ======================================================================== + + Routine Description: + return ethernet statistics counter + + Arguments: + net_dev Pointer to net_device + + Return Value: + net_device_stats* + + Note: + + ======================================================================== +*/ +struct net_device_stats *RT2500_get_ether_stats( + IN struct net_device *net_dev) +{ + RTMP_ADAPTER *pAd = net_dev->priv; + + DBGPRINT(RT_DEBUG_INFO, "RT2500_get_ether_stats --->\n"); + + pAd->stats.rx_packets = pAd->WlanCounters.ReceivedFragmentCount.vv.LowPart; // total packets received + pAd->stats.tx_packets = pAd->WlanCounters.TransmittedFragmentCount.vv.LowPart; // total packets transmitted + + pAd->stats.rx_bytes= pAd->RalinkCounters.ReceivedByteCount; // total bytes received + pAd->stats.tx_bytes = pAd->RalinkCounters.TransmittedByteCount; // total bytes transmitted + + pAd->stats.rx_errors = pAd->Counters.RxErrors; // bad packets received + pAd->stats.tx_errors = pAd->Counters.TxErrors; // packet transmit problems + + pAd->stats.rx_dropped = pAd->Counters.RxNoBuffer; // no space in linux buffers + pAd->stats.tx_dropped = pAd->WlanCounters.FailedCount.vv.LowPart; // no space available in linux + + pAd->stats.multicast = pAd->WlanCounters.MulticastReceivedFrameCount.vv.LowPart; // multicast packets received + pAd->stats.collisions = pAd->Counters.OneCollision + pAd->Counters.MoreCollisions; // Collision packets + + pAd->stats.rx_length_errors = 0; + pAd->stats.rx_over_errors = pAd->Counters.RxNoBuffer; // receiver ring buff overflow + pAd->stats.rx_crc_errors = 0;//pAd->WlanCounters.FCSErrorCount; // recved pkt with crc error + pAd->stats.rx_frame_errors = pAd->Counters.RcvAlignmentErrors; // recv'd frame alignment error + pAd->stats.rx_fifo_errors = pAd->Counters.RxNoBuffer; // recv'r fifo overrun + pAd->stats.rx_missed_errors = 0; // receiver missed packet + + // detailed tx_errors + pAd->stats.tx_aborted_errors = 0; + pAd->stats.tx_carrier_errors = 0; + pAd->stats.tx_fifo_errors = 0; + pAd->stats.tx_heartbeat_errors = 0; + pAd->stats.tx_window_errors = 0; + + // for cslip etc + pAd->stats.rx_compressed = 0; + pAd->stats.tx_compressed = 0; + + return &pAd->stats; +} + +/* + ======================================================================== + + Routine Description: + Set to filter multicast list + + Arguments: + net_dev Pointer to net_device + + Return Value: + VOID + + Note: + + ======================================================================== +*/ +VOID RT2500_set_rx_mode( + IN struct net_device *net_dev) +{ + RTMP_ADAPTER *pAd; + pAd = net_dev->priv; + if (pAd->PortCfg.BssType == BSS_MONITOR) + { + RTMP_IO_WRITE32(pAd, RXCSR0, 0x46); + DBGPRINT(RT_DEBUG_TRACE,"rt2500 acknowledge MONITOR on\n"); + } + else if (net_dev->flags&IFF_PROMISC) + { + pAd->bAcceptPromiscuous = TRUE; + RTMP_IO_WRITE32(pAd, RXCSR0, 0x6e); + DBGPRINT(RT_DEBUG_TRACE,"rt2500 acknowledge PROMISC on\n"); + } + else + { + pAd->bAcceptPromiscuous = FALSE; + RTMP_IO_WRITE32(pAd, RXCSR0, 0x7e); + DBGPRINT(RT_DEBUG_TRACE, "rt2500 acknowledge MONITOR/PROMISC off\n"); + } + +} + +// +// Close driver function +// +INT RT2500_close( + IN struct net_device *net_dev) +{ + RTMP_ADAPTER *pAd = net_dev->priv; + // LONG ioaddr = net_dev->base_addr; + + DBGPRINT(RT_DEBUG_TRACE, "%s: ===> RT2500_close\n", net_dev->name); + + LinkDown(pAd); + + // Stop Mlme state machine + RTMPCancelTimer(&pAd->PortCfg.RfTuningTimer); + MlmeHalt(pAd); + + netif_stop_queue(net_dev); + netif_carrier_off(net_dev); + + // Shut down monitor timer task + //RTMPCancelTimer(&pAd->timer); + + if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE)) + { + NICDisableInterrupt(pAd); + } + + // Disable Rx, register value supposed will remain after reset + NICIssueReset(pAd); + + // Free IRQ + if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE)) + { + // Deregister interrupt function + free_irq(net_dev->irq, net_dev); + RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE); + } + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) + module_put(THIS_MODULE); +#else + MOD_DEC_USE_COUNT; +#endif + + return 0; +} + +// +// Remove driver function +// +static VOID __devexit RT2500_remove_one( + IN struct pci_dev *pPci_Dev) +{ + struct net_device *net_dev = pci_get_drvdata(pPci_Dev); + // RTMP_ADAPTER *pAd = net_dev->priv; + + // Free Ring buffers + RTMPFreeDMAMemory(net_dev->priv); + + // Unregister network device + unregister_netdev(net_dev); + + // Unmap CSR base address + iounmap((void *)(net_dev->base_addr)); + + // release memory regions + pci_release_regions(pPci_Dev); + + // disable the device + pci_disable_device(pPci_Dev); + + // Free pre-allocated net_device memory + kfree(net_dev); +} + +// +// prepare for software suspend +// +#ifdef CONFIG_PM +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)) +#ifndef pm_message_t +#define pm_message_t u32 +#endif +#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)) */ + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,9)) +static u32 suspend_buffer[16]; +#define rt2x00_save_state(__pci) pci_save_state(__pci, suspend_buffer) +#define rt2x00_restore_state(__pci) pci_restore_state(__pci, suspend_buffer) +#else /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,8)) */ +#define rt2x00_save_state(__pci) pci_save_state(__pci) +#define rt2x00_restore_state(__pci) pci_restore_state(__pci) +#endif /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,8)) */ + +static int rt2500_suspend(struct pci_dev *pdev, pm_message_t state) +{ + struct net_device *dev = pci_get_drvdata(pdev); + PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) dev->priv; + + + if(pAdapter->PortCfg.bRadio) + MlmeRadioOff(pAdapter); + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)) + printk(KERN_NOTICE "%s: got suspend request (state %d)\n", + dev->name, state); +#else + printk(KERN_NOTICE "%s: got suspend request (event %d)\n", + dev->name, state.event); +#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)) */ + + rt2x00_save_state(pdev); + + NICDisableInterrupt(pAdapter); + MlmeHalt(pAdapter); + + netif_stop_queue(dev); + netif_device_detach(dev); + + return 0; +} + +// +// reactivate after software suspend +// +static int rt2500_resume(struct pci_dev *pdev) +{ + struct net_device *dev = pci_get_drvdata(pdev); + PRTMP_ADAPTER pAdapter = (PRTMP_ADAPTER) dev->priv; + int status; + + pci_enable_device(pdev); + + printk(KERN_NOTICE "%s: got resume request\n", dev->name); + + rt2x00_restore_state(pdev); + + NICInitTransmit(pAdapter); + status = MlmeInit(pAdapter); + status = MlmeInitMemoryHandler(pAdapter, 20, MAX_LEN_OF_MLME_BUFFER); + NICInitializeAdapter(pAdapter); + NICEnableInterrupt(pAdapter); + + if(pAdapter->PortCfg.bRadio) + MlmeRadioOn(pAdapter); + else + MlmeRadioOff(pAdapter); + + netif_device_attach(dev); + netif_start_queue(dev); + + return 0; +} + +#endif /* CONFIG_PM */ + +// +// Ralink PCI device table, include all supported chipsets +// +static struct pci_device_id rt2500_pci_tbl[] __devinitdata = +{ + {0x1814, 0x0201, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RT2560A}, + {0,} /* terminate list */ +}; +MODULE_DEVICE_TABLE(pci, rt2500_pci_tbl); + +// +// Our PCI driver structure +// +static struct pci_driver rt2500_driver = +{ + name: "rt2500", + id_table: rt2500_pci_tbl, + probe: RT2500_init_one, +#ifdef CONFIG_PM + suspend: rt2500_suspend, + resume: rt2500_resume, +#endif /* CONFIG_PM */ +#if LINUX_VERSION_CODE >= 0x20412 || BIG_ENDIAN == TRUE || RTMP_EMBEDDED == TRUE + remove: __devexit_p(RT2500_remove_one), +#else + remove: __devexit(RT2500_remove_one), +#endif +}; + +// ======================================================================= +// LOAD / UNLOAD sections +// ======================================================================= +// +// Driver module load function +// +static INT __init rt2500_init_module(VOID) +{ + return pci_module_init(&rt2500_driver); +} + +// +// Driver module unload function +// +static VOID __exit rt2500_cleanup_module(VOID) +{ + pci_unregister_driver(&rt2500_driver); +} + +module_init(rt2500_init_module); +module_exit(rt2500_cleanup_module); --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/connect.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/connect.c @@ -1,1335 +1,1335 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: connect.c - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * MarkW 8th Dec 04 Baseline code - * Ivo (rt2400) 15th Dec 04 Timing ESSID set - ***************************************************************************/ - -#include "rt_config.h" - -UCHAR CipherSuiteWpaNoneTkip[] = { - 0x00, 0x50, 0xf2, 0x01, // oui - 0x01, 0x00, // Version - 0x00, 0x50, 0xf2, 0x02, // Multicast - 0x01, 0x00, // Number of unicast - 0x00, 0x50, 0xf2, 0x00, // unicast - 0x01, 0x00, // number of authentication method - 0x00, 0x50, 0xf2, 0x00 // authentication - }; -UCHAR CipherSuiteWpaNoneTkipLen = (sizeof(CipherSuiteWpaNoneTkip) / sizeof(UCHAR)); - -UCHAR CipherSuiteWpaNoneAes[] = { - 0x00, 0x50, 0xf2, 0x01, // oui - 0x01, 0x00, // Version - 0x00, 0x50, 0xf2, 0x04, // Multicast - 0x01, 0x00, // Number of unicast - 0x00, 0x50, 0xf2, 0x00, // unicast - 0x01, 0x00, // number of authentication method - 0x00, 0x50, 0xf2, 0x00 // authentication - }; -UCHAR CipherSuiteWpaNoneAesLen = (sizeof(CipherSuiteWpaNoneAes) / sizeof(UCHAR)); - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID MlmeCntlInit( - IN PRTMP_ADAPTER pAd, - IN STATE_MACHINE *S, - OUT STATE_MACHINE_FUNC Trans[]) -{ - // Control state machine differs from other state machines, the interface - // follows the standard interface - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID MlmeCntlMachinePerformAction( - IN PRTMP_ADAPTER pAd, - IN STATE_MACHINE *S, - IN MLME_QUEUE_ELEM *Elem) -{ - switch (Elem->MsgType) - { - case OID_802_11_SSID: - CntlOidSsidProc(pAd, Elem); - return; - case OID_802_11_BSSID: - CntlOidRTBssidProc(pAd, Elem); - return; - case OID_802_11_BSSID_LIST_SCAN: - CntlOidScanProc(pAd, Elem); - return; - } - - switch(pAd->Mlme.CntlMachine.CurrState) - { - case CNTL_IDLE: - CntlIdleProc(pAd, Elem); - break; - case CNTL_WAIT_DISASSOC: - CntlWaitDisassocProc(pAd, Elem); - break; - case CNTL_WAIT_JOIN: - CntlWaitJoinProc(pAd, Elem); - break; - - // CNTL_WAIT_REASSOC is the only state in CNTL machine that does - // not triggered directly or indirectly by "RTMPSetInformation(OID_xxx)". - // Therefore not protected by NDIS's "only one outstanding OID request" - // rule. Which means NDIS may SET OID in the middle of ROAMing attempts. - // Current approach is to block new SET request at RTMPSetInformation() - // when CntlMachine.CurrState is not CNTL_IDLE - case CNTL_WAIT_REASSOC: - CntlWaitReassocProc(pAd, Elem); - break; - - case CNTL_WAIT_START: - CntlWaitStartProc(pAd, Elem); - break; - case CNTL_WAIT_AUTH: - CntlWaitAuthProc(pAd, Elem); - break; - case CNTL_WAIT_AUTH2: - CntlWaitAuthProc2(pAd, Elem); - break; - case CNTL_WAIT_ASSOC: - CntlWaitAssocProc(pAd, Elem); - break; - - case CNTL_WAIT_OID_LIST_SCAN: - if(Elem->MsgType == MT2_SCAN_CONF) - { - // Resume TxRing after SCANING complete. We hope the out-of-service time - // won't be too long to let upper layer time-out the waiting frames - RTMPResumeMsduTransmission(pAd); - if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) - { - } - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; - } - if (pAd->MediaState == NdisMediaStateDisconnected) - MlmeAutoReconnectLastSSID(pAd); - break; - - case CNTL_WAIT_OID_DISASSOC: - if (Elem->MsgType == MT2_DISASSOC_CONF) - { - LinkDown(pAd); - - if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) - { - } - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; - } - break; - - default: - printk(KERN_ERR DRV_NAME "CNTL - Illegal message type(=%d)", Elem->MsgType); - break; - } -} - - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID CntlIdleProc( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MLME_DISASSOC_REQ_STRUCT DisassocReq; - - if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF)) - { - if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) - { - pAd->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; - } - return; - } - - switch(Elem->MsgType) - { - case OID_802_11_DISASSOCIATE: - DisassocParmFill(pAd, &DisassocReq, &pAd->PortCfg.Bssid, REASON_DISASSOC_STA_LEAVING); - MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq); - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_DISASSOC; - // Set the control aux SSID to prevent it reconnect to old SSID - // Since calling this indicate user don't want to connect to that SSID anymore. - pAd->Mlme.CntlAux.SsidLen = 32; - memset(pAd->Mlme.CntlAux.Ssid, 0x00, pAd->Mlme.CntlAux.SsidLen); - break; - - case MT2_MLME_ROAMING_REQ: - CntlMlmeRoamingProc(pAd, Elem); - break; - - default: - DBGPRINT(RT_DEBUG_TRACE, "CNTL - Illegal message in CntlIdleProc(MsgType=%d)\n",Elem->MsgType); - break; - } -} - -VOID CntlOidScanProc( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MLME_SCAN_REQ_STRUCT ScanReq; - CHAR BroadSsid[MAX_LEN_OF_SSID]; - ULONG BssIdx = BSS_NOT_FOUND; - BSS_ENTRY CurrBss; - - DBGPRINT(RT_DEBUG_INFO, "CNTL - SCAN starts\n"); - - // temporarily recover BBP from short-distance-low-sensibility mode during SCAN - // for best SCANNING reult; - AsicRestoreBbpSensibility(pAd); - - // record current BSS if network is connected. - // 2003-2-13 do not include current IBSS if this is the only STA in this IBSS. - if (pAd->MediaState == NdisMediaStateConnected) // if (INFRA_ON(pAd) || ADHOC_ON(pAd)) - { - BssIdx = BssTableSearch(&pAd->PortCfg.BssTab, &pAd->PortCfg.Bssid); - if (BssIdx != BSS_NOT_FOUND) - { - memcpy(&CurrBss, &pAd->PortCfg.BssTab.BssEntry[BssIdx], sizeof(BSS_ENTRY)); - - // 2003-2-20 reset this RSSI to a low value but not zero. In normal case, the coming SCAN - // should return a correct RSSI to overwrite this. If no BEEACON received after SCAN, - // at least we still report a "greater than 0" RSSI since we claim it's CONNECTED. - CurrBss.Rssi = 18; // about -82 dB - } - } - - // clean up previous SCAN result, add current BSS back to table if any - BssTableInit(&pAd->PortCfg.BssTab); - if (BssIdx != BSS_NOT_FOUND) - { - // DDK Note: If the NIC is associated with a particular BSSID and SSID - // that are not contained in the list of BSSIDs generated by this scan, the - // BSSID description of the currently associated BSSID and SSID should be - // appended to the list of BSSIDs in the NIC's database. - // To ensure this, we append this BSS as the first entry in SCAN result - memcpy(&pAd->PortCfg.BssTab.BssEntry[0], &CurrBss, sizeof(BSS_ENTRY)); - pAd->PortCfg.BssTab.BssNr = 1; - } - - BroadSsid[0] = '\0'; - ScanParmFill(pAd, &ScanReq, BroadSsid, 0, BSS_ANY, SCAN_PASSIVE); - MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ, - sizeof(MLME_SCAN_REQ_STRUCT), &ScanReq); - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN; -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID CntlOidSsidProc( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM * Elem) -{ - NDIS_802_11_SSID *OidSsid = (NDIS_802_11_SSID *)Elem->Msg; - MLME_DISASSOC_REQ_STRUCT DisassocReq; - ULONG Now; - - // Step 0. - // record the desired SSID and all matching BSSes into CntlAux.SsidBssTab for - // later-on iteration. Sort by RSSI order - memcpy(pAd->Mlme.CntlAux.Ssid, OidSsid->Ssid, OidSsid->SsidLength); - pAd->Mlme.CntlAux.SsidLen = (UCHAR)OidSsid->SsidLength; - BssTableSsidSort(pAd, &pAd->Mlme.CntlAux.SsidBssTab, pAd->Mlme.CntlAux.Ssid, pAd->Mlme.CntlAux.SsidLen); - pAd->Mlme.CntlAux.BssIdx = 0; - DBGPRINT(RT_DEBUG_INFO, "CNTL - %d BSS match the desire SSID %s\n",pAd->Mlme.CntlAux.SsidBssTab.BssNr, pAd->Mlme.CntlAux.Ssid); - - Now = jiffies; - - if ((pAd->MediaState == NdisMediaStateConnected) && - MAC_ADDR_EQUAL(&pAd->PortCfg.Bssid, &pAd->Mlme.CntlAux.SsidBssTab.BssEntry[0].Bssid)) - { - if (((pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPA) || (pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPAPSK)) && - (pAd->PortCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED)) - { - // For WPA, WPA-PSK, if the 1x port is not secured, we have to redo - // connection process - DBGPRINT(RT_DEBUG_TRACE, "CNTL - disassociate with current AP...\n"); - DisassocParmFill(pAd, &DisassocReq, &pAd->PortCfg.Bssid, REASON_DISASSOC_STA_LEAVING); - MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, - sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq); - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC; - } - else if (pAd->bConfigChanged == TRUE) - { - // Config has changed, we have to reconnect the same AP - DBGPRINT(RT_DEBUG_TRACE, "CNTL - disassociate with current AP Because config changed...\n"); - DisassocParmFill(pAd, &DisassocReq, &pAd->PortCfg.Bssid, REASON_DISASSOC_STA_LEAVING); - MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, - sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq); - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC; - } - else - { - // We only check if same to the BSSID with highest RSSI. - // If roaming of same SSID required, we still do the reconnection. - // same BSSID, go back to idle state directly - DBGPRINT(RT_DEBUG_TRACE, "CNTL - already with this BSSID. ignore this SET_SSID request\n"); - if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) - { - } - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; - } - } - else if (INFRA_ON(pAd)) - { - // case 1. active association existent - // roaming is done within miniport driver, nothing to do with configuration - // utility. so upon a new SET(OID_802_11_SSID) is received, we just - // disassociate with the current (or previous) associated AP, if any, - // then perform a new association with this new SSID, no matter the - // new/old SSID are the same or npt. - DBGPRINT(RT_DEBUG_TRACE, "CNTL - disassociate with current AP...\n"); - DisassocParmFill(pAd, &DisassocReq, &pAd->PortCfg.Bssid, REASON_DISASSOC_STA_LEAVING); - MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, - sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq); - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC; - } - else - { - if (ADHOC_ON(pAd)) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - drop current ADHOC\n"); - LinkDown(pAd); - pAd->MediaState = NdisMediaStateDisconnected; - DBGPRINT(RT_DEBUG_TRACE, "NDIS_STATUS_MEDIA_DISCONNECT Event C!\n"); - } - - if ((pAd->Mlme.CntlAux.SsidBssTab.BssNr==0) && (pAd->PortCfg.AutoReconnect == TRUE) && (pAd->PortCfg.BssType == BSS_INFRA)) - { - MLME_SCAN_REQ_STRUCT ScanReq; - - DBGPRINT(RT_DEBUG_TRACE, "CNTL - No matching BSS, start a new scan\n"); - // BroadSsid[0] = '\0'; - ScanParmFill(pAd, &ScanReq, pAd->Mlme.CntlAux.Ssid, pAd->Mlme.CntlAux.SsidLen, BSS_ANY, SCAN_ACTIVE); - MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ, sizeof(MLME_SCAN_REQ_STRUCT), &ScanReq); - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN; - // Reset Missed scan number - pAd->PortCfg.IgnoredScanNumber = 0; - pAd->PortCfg.LastScanTime = Now; - } - else - { - IterateOnBssTab(pAd); - } - } -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID CntlOidRTBssidProc( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM * Elem) -{ - ULONG BssIdx; - MACADDR *pOidBssid = (MACADDR *)Elem->Msg; - MLME_DISASSOC_REQ_STRUCT DisassocReq; - MLME_JOIN_REQ_STRUCT JoinReq; - - COPY_MAC_ADDR(&pAd->Mlme.CntlAux.Bssid, pOidBssid); - BssIdx = BssTableSearch(&pAd->PortCfg.BssTab, pOidBssid); - - if (BssIdx == BSS_NOT_FOUND) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - BSSID not found. reply NDIS_STATUS_NOT_ACCEPTED\n"); - if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) - { - - } - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; - return; - } - - // copy the matched BSS entry from PortCfg.BssTab to CntlAux.SsidBssTab - pAd->Mlme.CntlAux.BssIdx = 0; - pAd->Mlme.CntlAux.SsidBssTab.BssNr = 1; - memcpy(&pAd->Mlme.CntlAux.SsidBssTab.BssEntry[0], &pAd->PortCfg.BssTab.BssEntry[BssIdx], sizeof(BSS_ENTRY)); - - // Add SSID into Mlme.CntlAux for site surey joining hidden SSID - pAd->Mlme.CntlAux.SsidLen = pAd->Mlme.CntlAux.SsidBssTab.BssEntry[0].SsidLen; - memcpy(pAd->Mlme.CntlAux.Ssid, pAd->Mlme.CntlAux.SsidBssTab.BssEntry[0].Ssid, pAd->Mlme.CntlAux.SsidLen); - - // 2002-11-26 skip the following checking. i.e. if user wants to re-connect to same AP - // we just follow normal procedure. The reason of user doing this may because he/she changed - // AP to another channel, but we still received BEACON from it thus don't claim Link Down. - // Since user knows he's chnged AP channel, he'll re-connect again. By skipping the following - // checking, we'll disassociate then re-do normal association with this AP at the new channel. - // 2003-1-6 Re-enable this feature based on microsoft requirement which prefer not to re-do - // connection when setting the same BSSID. - if ( (pAd->MediaState == NdisMediaStateConnected) && //(INFRA_ON(pAd) || ADHOC_ON(pAd)) && - MAC_ADDR_EQUAL(&pAd->PortCfg.Bssid, pOidBssid)) - { - // same BSSID, go back to idle state directly - DBGPRINT(RT_DEBUG_TRACE, "CNTL - already in this BSSID. ignore this SET_BSSID request\n"); - if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) - { - } - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; - } - else - { - if (INFRA_ON(pAd)) - { - // disassoc from current AP first - DBGPRINT(RT_DEBUG_TRACE, "CNTL - disassociate with current AP ...\n"); - DisassocParmFill(pAd, &DisassocReq, &pAd->PortCfg.Bssid, REASON_DISASSOC_STA_LEAVING); - MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, - sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq); - - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC; - } - else - { - if (ADHOC_ON(pAd)) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - drop current ADHOC\n"); - LinkDown(pAd); - pAd->MediaState = NdisMediaStateDisconnected; - DBGPRINT(RT_DEBUG_TRACE, "NDIS_STATUS_MEDIA_DISCONNECT Event C!\n"); - } - - // No active association, join the BSS immediately - DBGPRINT(RT_DEBUG_TRACE, "CNTL - joining %02x:%02x:%02x:%02x:%02x:%02x ...\n", - pOidBssid->Octet[0],pOidBssid->Octet[1],pOidBssid->Octet[2], - pOidBssid->Octet[3],pOidBssid->Octet[4],pOidBssid->Octet[5]); - JoinParmFill(pAd, &JoinReq, pAd->Mlme.CntlAux.BssIdx); - MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_MLME_JOIN_REQ, sizeof(MLME_JOIN_REQ_STRUCT), &JoinReq); - - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_JOIN; - } - } -} - -// Roaming is the only external request triggering CNTL state machine -// despite of other "SET OID" operation. All "SET OID" related oerations -// happen in sequence, because no other SET OID will be sent to this device -// until the the previous SET operation is complete (successful o failed). -// So, how do we quarantee this ROAMING request won't corrupt other "SET OID"? -// or been corrupted by other "SET OID"? -VOID CntlMlmeRoamingProc( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - // TODO: - // AP in different channel may show lower RSSI than actual value?? - // should we add a weighting factor to compensate it? - DBGPRINT(RT_DEBUG_TRACE,"CNTL - Roaming in CntlAux.RoamTab...\n"); - BssTableSortByRssi(&pAd->Mlme.CntlAux.RoamTab); - pAd->Mlme.CntlAux.RoamIdx=0; - IterateOnBssTab2(pAd); - -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID CntlWaitDisassocProc( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MLME_START_REQ_STRUCT StartReq; - - if (Elem->MsgType == MT2_DISASSOC_CONF) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - Dis-associate successful\n"); - LinkDown(pAd); - - // case 1. no matching BSS, and user wants ADHOC, so we just start a new one - if ((pAd->Mlme.CntlAux.SsidBssTab.BssNr==0) && (pAd->PortCfg.BssType == BSS_INDEP)) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - No matching BSS, start a new ADHOC (Ssid=%s)...\n",pAd->Mlme.CntlAux.Ssid); - StartParmFill(pAd, &StartReq, pAd->Mlme.CntlAux.Ssid, pAd->Mlme.CntlAux.SsidLen); - MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_MLME_START_REQ, sizeof(MLME_START_REQ_STRUCT), &StartReq); - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_START; - } - // case 2. try each matched BSS - else - { - IterateOnBssTab(pAd); - } - } -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID CntlWaitJoinProc( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - USHORT Reason; - MLME_AUTH_REQ_STRUCT AuthReq; - - if (Elem->MsgType == MT2_JOIN_CONF) - { - memcpy(&Reason, Elem->Msg, sizeof(USHORT)); - if (Reason == MLME_SUCCESS) - { - // 1. joined an IBSS, we are pretty much done here - if (pAd->PortCfg.BssType == BSS_INDEP) - { - LinkUp(pAd, BSS_INDEP); - if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) - { - } - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; - } - // 2. joined a new INFRA network, start from authentication - else - { - // either Ndis802_11AuthModeShared or Ndis802_11AuthModeAutoSwitch, try shared key first - if ((pAd->PortCfg.AuthMode == Ndis802_11AuthModeShared) || - (pAd->PortCfg.AuthMode == Ndis802_11AuthModeAutoSwitch)) - { - AuthParmFill(pAd, &AuthReq, &pAd->PortCfg.Bssid, Ndis802_11AuthModeShared); - } - else - { - AuthParmFill(pAd, &AuthReq, &pAd->PortCfg.Bssid, Ndis802_11AuthModeOpen); - } - MlmeEnqueue(&pAd->Mlme.Queue, AUTH_STATE_MACHINE, MT2_MLME_AUTH_REQ, - sizeof(MLME_AUTH_REQ_STRUCT), &AuthReq); - - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_AUTH; - } - } - else - { - // 3. failed, try next BSS - pAd->Mlme.CntlAux.BssIdx++; - IterateOnBssTab(pAd); - } - } -} - - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID CntlWaitStartProc( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - USHORT Result; - - if (Elem->MsgType == MT2_START_CONF) - { - memcpy(&Result, Elem->Msg, sizeof(USHORT)); - if (Result == MLME_SUCCESS) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - We have started a new ADHOC network\n"); - DBGPRINT(RT_DEBUG_TRACE, "CNTL - BSSID %02x:%02x:%02x:%02x:%02x:%02x ...\n", - pAd->PortCfg.Bssid.Octet[0], - pAd->PortCfg.Bssid.Octet[1], - pAd->PortCfg.Bssid.Octet[2], - pAd->PortCfg.Bssid.Octet[3], - pAd->PortCfg.Bssid.Octet[4], - pAd->PortCfg.Bssid.Octet[5]); - LinkUp(pAd, BSS_INDEP); - if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) - { - } - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - Start FAIL. BUG!!!!!\n"); - if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) - { - } - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; - } - } -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID CntlWaitAuthProc( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - USHORT Reason; - MLME_ASSOC_REQ_STRUCT AssocReq; - MLME_AUTH_REQ_STRUCT AuthReq; - - if (Elem->MsgType == MT2_AUTH_CONF) - { - memcpy(&Reason, Elem->Msg, sizeof(USHORT)); - if (Reason == MLME_SUCCESS) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - AUTH OK\n"); - AssocParmFill(pAd, &AssocReq, &pAd->PortCfg.Bssid, pAd->PortCfg.CapabilityInfo, - ASSOC_TIMEOUT, pAd->PortCfg.DefaultListenCount); - MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_ASSOC_REQ, - sizeof(MLME_ASSOC_REQ_STRUCT), &AssocReq); - - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_ASSOC; - } - else - { - // This fail may because of the AP already keep us in its MAC table without - // ageing-out. The previous authentication attempt must have let it remove us. - // so try Authentication again may help. For D-Link DWL-900AP+ compatibility. - DBGPRINT(RT_DEBUG_TRACE, "CNTL - AUTH FAIL, try again...\n"); - if ((pAd->PortCfg.AuthMode == Ndis802_11AuthModeShared) || - (pAd->PortCfg.AuthMode == Ndis802_11AuthModeAutoSwitch)) - { - // either Ndis802_11AuthModeShared or Ndis802_11AuthModeAutoSwitch, try shared key first - AuthParmFill(pAd, &AuthReq, &pAd->PortCfg.Bssid, Ndis802_11AuthModeShared); - } - else - { - AuthParmFill(pAd, &AuthReq, &pAd->PortCfg.Bssid, Ndis802_11AuthModeOpen); - } - - MlmeEnqueue(&pAd->Mlme.Queue, AUTH_STATE_MACHINE, MT2_MLME_AUTH_REQ, - sizeof(MLME_AUTH_REQ_STRUCT), &AuthReq); - - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_AUTH2; - } - } -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID CntlWaitAuthProc2( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - USHORT Reason; - MLME_ASSOC_REQ_STRUCT AssocReq; - MLME_AUTH_REQ_STRUCT AuthReq; - - if (Elem->MsgType == MT2_AUTH_CONF) - { - memcpy(&Reason, Elem->Msg, sizeof(USHORT)); - if (Reason == MLME_SUCCESS) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - AUTH OK\n"); - AssocParmFill(pAd, &AssocReq, &pAd->PortCfg.Bssid, pAd->PortCfg.CapabilityInfo, - ASSOC_TIMEOUT, pAd->PortCfg.DefaultListenCount); - MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_ASSOC_REQ, - sizeof(MLME_ASSOC_REQ_STRUCT), &AssocReq); - - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_ASSOC; - } - else - { - if ((pAd->PortCfg.AuthMode == Ndis802_11AuthModeAutoSwitch) && - (pAd->Mlme.AuthAux.Alg == Ndis802_11AuthModeShared)) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - AUTH FAIL, try OPEN system...\n"); - AuthParmFill(pAd, &AuthReq, &pAd->PortCfg.Bssid, Ndis802_11AuthModeOpen); - MlmeEnqueue(&pAd->Mlme.Queue, AUTH_STATE_MACHINE, MT2_MLME_AUTH_REQ, - sizeof(MLME_AUTH_REQ_STRUCT), &AuthReq); - - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_AUTH2; - } - else - { - // not success, try next BSS - DBGPRINT(RT_DEBUG_TRACE, "CNTL - AUTH FAIL, give up; try next BSS\n"); - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; //??????? - pAd->Mlme.CntlAux.BssIdx++; - IterateOnBssTab(pAd); - } - } - } -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID CntlWaitAssocProc( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - USHORT Reason; - - if (Elem->MsgType == MT2_ASSOC_CONF) - { - memcpy(&Reason, Elem->Msg, sizeof(USHORT)); - if (Reason == MLME_SUCCESS) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - Association successful on BSS #%d\n",pAd->Mlme.CntlAux.BssIdx); - LinkUp(pAd, BSS_INFRA); - if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) - { - } - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; - } - else - { - // not success, try next BSS - DBGPRINT(RT_DEBUG_TRACE, "CNTL - Association fails on BSS #%d\n",pAd->Mlme.CntlAux.BssIdx); - pAd->Mlme.CntlAux.BssIdx++; - IterateOnBssTab(pAd); - } - } -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID CntlWaitReassocProc( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - USHORT Result; - - if (Elem->MsgType == MT2_REASSOC_CONF) - { - memcpy(&Result, Elem->Msg, sizeof(USHORT)); - if (Result == MLME_SUCCESS) - { - BSS_ENTRY *pBss = &pAd->Mlme.CntlAux.RoamTab.BssEntry[pAd->Mlme.CntlAux.RoamIdx]; - - // COPY_MAC_ADDR(&pAd->PortCfg.Bssid, &pBss->Bssid); - // AsicSetBssid(pAd, &pAd->PortCfg.Bssid); - - // The following steps are supposed to be done after JOIN in normal procedure - // But since this RE-ASSOC skips the JOIN procedure, we have to do it after - // RE-ASSOC succeeds. If RE-ASSOC fails, then stay at original AP without any change - pAd->PortCfg.BeaconPeriod = pBss->BeaconPeriod; - pAd->PortCfg.Channel = pBss->Channel; - // The security setting should always follow upper layer definition, not from frame - //pAd->PortCfg.PrivacyInvoked = CAP_IS_PRIVACY_ON(pBss->CapabilityInfo); - pAd->PortCfg.SupportedRatesLen = pBss->RatesLen; - memcpy(pAd->PortCfg.SupportedRates, pBss->Rates, pBss->RatesLen); - - // Check for 802.11g information, if 802.11 b /g mixed mode. - pAd->PortCfg.CapabilityInfo = pBss->CapabilityInfo; - - pAd->PortCfg.CfpPeriod = pBss->CfpPeriod; - pAd->PortCfg.CfpMaxDuration = pBss->CfpMaxDuration; - pAd->PortCfg.CfpDurRemain = pBss->CfpDurRemaining; - pAd->PortCfg.CfpCount = pBss->CfpCount; - - // - // NDIS requires a new Link UP indication but no Link Down for RE-ASSOC - // - DBGPRINT(RT_DEBUG_TRACE, "CNTL - Re-assocition successful on BSS #%d\n", pAd->Mlme.CntlAux.RoamIdx); - LinkUp(pAd, BSS_INFRA); - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; - } - else - { - // reassoc failed, try to pick next BSS in the BSS Table - DBGPRINT(RT_DEBUG_TRACE, "CNTL - Re-assocition fails on BSS #%d\n", pAd->Mlme.CntlAux.RoamIdx); - pAd->Mlme.CntlAux.RoamIdx++; - IterateOnBssTab2(pAd); - } - } -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID LinkUp( - IN PRTMP_ADAPTER pAd, - IN UCHAR BssType) -{ - ULONG Now; - - DBGPRINT(RT_DEBUG_TRACE, "CNTL - !!! LINK UP !!!\n"); - MlmeUpdateTxRates(pAd, TRUE); - memcpy(&pAd->Mlme.PrevWlanCounters, &pAd->WlanCounters, sizeof(COUNTER_802_11)); - memset(&pAd->DrsCounters, 0, sizeof(COUNTER_DRS)); - - Now = jiffies; - pAd->PortCfg.LastBeaconRxTime = Now; // last RX timestamp - - if ((pAd->PortCfg.WindowsTxPreamble != Rt802_11PreambleLong) && - CAP_IS_SHORT_PREAMBLE_ON(pAd->PortCfg.CapabilityInfo)) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - !!! Set to short preamble!!!\n"); - MlmeSetTxPreamble(pAd, Rt802_11PreambleShort); - } - - pAd->PortCfg.BssType = BssType; - if (BssType == BSS_INDEP) - { - pAd->PortCfg.Mibss = TRUE; - pAd->PortCfg.Massoc = FALSE; - MakeIbssBeacon(pAd); - AsicEnableIbssSync(pAd); - -#ifdef SINGLE_ADHOC_LINKUP - // Although this did not follow microsoft's recommendation. - //Change based on customer's request - pAd->MediaState = NdisMediaStateConnected; -#endif - - // Clear Key information when driver change to WPA-None mode - // which did not have any key set -#if 0 - if (pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) - { - INT i; - - for (i = 0; i < PAIRWISE_KEY_NO; i++) - { - pAd->PortCfg.PairwiseKey[i].KeyLen = 0; - } - - for (i = 0; i < GROUP_KEY_NO; i++) - { - pAd->PortCfg.GroupKey[i].KeyLen = 0; - } - } -#endif - } - else // BSS_INFRA - { - pAd->PortCfg.Massoc = TRUE; - pAd->PortCfg.Mibss = FALSE; - - // NOTE: - // the decision of using "short slot time" or not may change dynamically due to - // new STA association to the AP. so we have to decide that upon parsing BEACON, not here - - // NOTE: - // the decision to use "RTC/CTS" or "CTS-to-self" protection or not may change dynamically - // due to new STA association to the AP. so we have to decide that upon parsing BEACON, not here - - ComposePsPoll(pAd); - ComposeNullFrame(pAd); - AsicEnableBssSync(pAd); - - // only INFRASTRUCTURE mode need to indicate connectivity immediately; ADHOC mode - // should wait until at least 2 active nodes in this BSSID. - pAd->MediaState = NdisMediaStateConnected; - } - - DBGPRINT(RT_DEBUG_TRACE, "NDIS_STATUS_MEDIA_CONNECT Event B!\n"); - - if (pAd->PortCfg.LedMode != LED_MODE_SINGLE) - { - ASIC_LED_ACT_ON(pAd); - } - - AsicSetSlotTime(pAd, FALSE); - pAd->Mlme.PeriodicRound = 0; - // Reset config flag - pAd->bConfigChanged = FALSE; -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID LinkDown( - IN PRTMP_ADAPTER pAd) -{ - DBGPRINT(RT_DEBUG_TRACE, "CNTL - !!! LINK DOWN !!!\n"); - - if (ADHOC_ON(pAd)) // Adhoc mode link down - { - pAd->PortCfg.Mibss = FALSE; - -#ifdef SINGLE_ADHOC_LINKUP - pAd->MediaState = NdisMediaStateDisconnected; - // clean up previous SCAN result, add current BSS back to table if any - BssTableDeleteEntry(&pAd->PortCfg.BssTab, &(pAd->PortCfg.Bssid)); -#else - if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF)) - { - pAd->MediaState = NdisMediaStateDisconnected; - // clean up previous SCAN result, add current BSS back to table if any - BssTableDeleteEntry(&pAd->PortCfg.BssTab, &(pAd->PortCfg.Bssid)); - } -#endif - } - else// Infra structure mode - { - pAd->PortCfg.Massoc = FALSE; - pAd->MediaState = NdisMediaStateDisconnected; - DBGPRINT(RT_DEBUG_TRACE, "NDIS_STATUS_MEDIA_DISCONNECT Event A!\n"); - BssTableDeleteEntry(&pAd->PortCfg.BssTab, &(pAd->PortCfg.Bssid)); - - // restore back to - - // 1. long slot (20 us) or short slot (9 us) time - // 2. turn on/off RTS/CTS and/or CTS-to-self protection - // 3. short preamble - if (pAd->PortCfg.BGProtectionInUsed == TRUE) - { - pAd->PortCfg.BGProtectionInUsed = FALSE; - DBGPRINT(RT_DEBUG_TRACE, "Link down - turn off B/G protection\n"); - } - - } - - AsicSetSlotTime(pAd, FALSE); - AsicRestoreBbpSensibility(pAd); - - if (pAd->PortCfg.WindowsTxPreamble == Rt802_11PreambleShort) - MlmeSetTxPreamble(pAd, Rt802_11PreambleShort); - else - MlmeSetTxPreamble(pAd, Rt802_11PreambleLong); - - if ((pAd->PortCfg.LedMode != LED_MODE_SINGLE) && (pAd->PortCfg.LedMode != LED_MODE_ASUS)) - { - ASIC_LED_ACT_OFF(pAd); - } - else if ((pAd->PortCfg.LedMode == LED_MODE_ASUS) && (pAd->PortCfg.bRadio == TRUE)) - { - RTMP_IO_WRITE32(pAd, LEDCSR, 0x0002461E); - } - AsicDisableSync(pAd); - pAd->Mlme.PeriodicRound = 0; - - // Remove PortCfg Information after link down - memset(&(pAd->PortCfg.Bssid), 0, ETH_ALEN); - //memset(pAd->PortCfg.Ssid, 0, MAX_LEN_OF_SSID); - //pAd->PortCfg.SsidLen = 0; - - // Reset WPA-PSK state. Only reset when supplicant enabled - if (pAd->PortCfg.WpaState != SS_NOTUSE) - { - pAd->PortCfg.WpaState = SS_START; - // Clear Replay counter - memset(pAd->PortCfg.ReplayCounter, 0, 8); - } - - // Remove all WPA keys after link down - //RTMPWPARemoveAllKeys(pAd); - // 802.1x port control - pAd->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED; - pAd->PortCfg.MicErrCnt = 0; -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID MlmeCntlConfirm( - IN PRTMP_ADAPTER pAd, - IN ULONG MsgType, - IN USHORT Msg) -{ - MlmeEnqueue(&pAd->Mlme.Queue, MLME_CNTL_STATE_MACHINE, MsgType, sizeof(USHORT), &Msg); -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID IterateOnBssTab( - IN PRTMP_ADAPTER pAd) -{ - MLME_START_REQ_STRUCT StartReq; - MLME_JOIN_REQ_STRUCT JoinReq; - ULONG BssIdx; - - BssIdx = pAd->Mlme.CntlAux.BssIdx; - if (BssIdx < pAd->Mlme.CntlAux.SsidBssTab.BssNr) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - Trying BSSID %02x:%02x:%02x:%02x:%02x:%02x ...\n", - pAd->Mlme.CntlAux.SsidBssTab.BssEntry[BssIdx].Bssid.Octet[0], - pAd->Mlme.CntlAux.SsidBssTab.BssEntry[BssIdx].Bssid.Octet[1], - pAd->Mlme.CntlAux.SsidBssTab.BssEntry[BssIdx].Bssid.Octet[2], - pAd->Mlme.CntlAux.SsidBssTab.BssEntry[BssIdx].Bssid.Octet[3], - pAd->Mlme.CntlAux.SsidBssTab.BssEntry[BssIdx].Bssid.Octet[4], - pAd->Mlme.CntlAux.SsidBssTab.BssEntry[BssIdx].Bssid.Octet[5]); - JoinParmFill(pAd, &JoinReq, BssIdx); - MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_MLME_JOIN_REQ, sizeof(MLME_JOIN_REQ_STRUCT), - &JoinReq); - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_JOIN; - } - else if (pAd->PortCfg.BssType == BSS_INDEP) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - All BSS fail; start a new ADHOC (Ssid=%s)...\n",pAd->Mlme.CntlAux.Ssid); - StartParmFill(pAd, &StartReq, pAd->Mlme.CntlAux.Ssid, (UCHAR)pAd->Mlme.CntlAux.SsidLen); - MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_MLME_START_REQ, sizeof(MLME_START_REQ_STRUCT), &StartReq); - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_START; - } - else // no more BSS - { - if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - All BSS fail; reply NDIS_STATUS_NOT_ACCEPTED\n"); - } - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; - } -} - -// for re-association only -VOID IterateOnBssTab2( - IN PRTMP_ADAPTER pAd) -{ - MLME_REASSOC_REQ_STRUCT ReassocReq; - ULONG BssIdx; - BSS_ENTRY *pBss; - - BssIdx = pAd->Mlme.CntlAux.RoamIdx; - pBss = &pAd->Mlme.CntlAux.RoamTab.BssEntry[BssIdx]; - - if (BssIdx < pAd->Mlme.CntlAux.RoamTab.BssNr) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - try BSS #%d %02x:%02x:%02x:%02x:%02x:%02x ...\n", - BssIdx, pBss->Bssid.Octet[0],pBss->Bssid.Octet[1],pBss->Bssid.Octet[2], - pBss->Bssid.Octet[3],pBss->Bssid.Octet[4],pBss->Bssid.Octet[5]); - - AsicSwitchChannel(pAd, pBss->Channel); - AsicLockChannel(pAd, pBss->Channel); - - // reassociate message has the same structure as associate message - AssocParmFill(pAd, &ReassocReq, &pBss->Bssid, pBss->CapabilityInfo, - ASSOC_TIMEOUT, pAd->PortCfg.DefaultListenCount); - MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_REASSOC_REQ, - sizeof(MLME_REASSOC_REQ_STRUCT), &ReassocReq); - - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_REASSOC; - } - else // no more BSS - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - All roaming failed, stay with original AP\n"); - AsicSwitchChannel(pAd, pAd->PortCfg.Channel); - AsicLockChannel(pAd, pAd->PortCfg.Channel); - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; - } -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID JoinParmFill( - IN PRTMP_ADAPTER pAd, - IN OUT MLME_JOIN_REQ_STRUCT *JoinReq, - IN ULONG BssIdx) -{ - JoinReq->BssIdx = BssIdx; -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID AssocParmFill( - IN PRTMP_ADAPTER pAd, - IN OUT MLME_ASSOC_REQ_STRUCT *AssocReq, - IN MACADDR *Addr, - IN USHORT CapabilityInfo, - IN ULONG Timeout, - IN USHORT ListenIntv) -{ - COPY_MAC_ADDR(&AssocReq->Addr, Addr); - // Add mask to support 802.11b mode only - AssocReq->CapabilityInfo = CapabilityInfo & 0xfff3; // not cf-pollable, not cf-poll-request - AssocReq->Timeout = Timeout; - AssocReq->ListenIntv = ListenIntv; -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID ScanParmFill( - IN PRTMP_ADAPTER pAd, - IN OUT MLME_SCAN_REQ_STRUCT *ScanReq, - IN CHAR Ssid[], - IN UCHAR SsidLen, - IN UCHAR BssType, - IN UCHAR ScanType) -{ - ScanReq->SsidLen = SsidLen; - memcpy(ScanReq->Ssid, Ssid, SsidLen); - ScanReq->BssType = BssType; - ScanReq->ScanType = ScanType; -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID DisassocParmFill( - IN PRTMP_ADAPTER pAd, - IN OUT MLME_DISASSOC_REQ_STRUCT *DisassocReq, - IN MACADDR *Addr, - IN USHORT Reason) -{ - COPY_MAC_ADDR(&DisassocReq->Addr, Addr); - DisassocReq->Reason = Reason; -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID StartParmFill( - IN PRTMP_ADAPTER pAd, - IN OUT MLME_START_REQ_STRUCT *StartReq, - IN CHAR Ssid[], - IN UCHAR SsidLen) -{ - memcpy(StartReq->Ssid, Ssid, SsidLen); - StartReq->SsidLen = SsidLen; -} - -/* - ========================================================================== - Description: - ========================================================================== -*/ -VOID AuthParmFill( - IN PRTMP_ADAPTER pAd, - IN OUT MLME_AUTH_REQ_STRUCT *AuthReq, - IN MACADDR *Addr, - IN USHORT Alg) -{ - COPY_MAC_ADDR(&AuthReq->Addr, Addr); - AuthReq->Alg = Alg; - AuthReq->Timeout = AUTH_TIMEOUT; -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID ComposePsPoll( - IN PRTMP_ADAPTER pAd) -{ - memset(&pAd->Mlme.PsFr, 0, sizeof(PSPOLL_FRAME)); - pAd->Mlme.PsFr.Type = BTYPE_CNTL; - pAd->Mlme.PsFr.SubType = SUBTYPE_PS_POLL; - pAd->Mlme.PsFr.Aid = pAd->PortCfg.Aid | 0xC000; - COPY_MAC_ADDR(&(pAd->Mlme.PsFr.Bssid), &pAd->PortCfg.Bssid); - COPY_MAC_ADDR(&(pAd->Mlme.PsFr.Ta), &(pAd->CurrentAddress)); -} - -VOID ComposeNullFrame( - IN PRTMP_ADAPTER pAd) -{ - MgtMacHeaderInit(pAd, &pAd->Mlme.NullFr, SUBTYPE_NULL_FUNC, 1, &pAd->PortCfg.Bssid, &pAd->PortCfg.Bssid); - pAd->Mlme.NullFr.Duration = 0; - pAd->Mlme.NullFr.Type = BTYPE_DATA; -} - -/* - ========================================================================== - Description: - Pre-build a BEACON frame in the shared memory - ========================================================================== -*/ -ULONG MakeIbssBeacon( - IN PRTMP_ADAPTER pAd) -{ - UCHAR SsidIe = IE_SSID, DsIe = IE_DS_PARM, IbssIe = IE_IBSS_PARM, SuppIe = IE_SUPP_RATES, - DsLen = 1, IbssLen = 2; - UCHAR ExtRateIe = IE_EXT_SUPP_RATES, ExtRatesLen; - UCHAR ErpIe[3] = {IE_ERP, 1, 0x04}; - MACHDR BcnHdr; - USHORT CapabilityInfo; - LARGE_INTEGER FakeTimestamp; - ULONG FrameLen; - PTXD_STRUC pTxD = (PTXD_STRUC)pAd->BeaconRing.va_addr; - CHAR *pBeaconFrame = (CHAR *)pAd->BeaconRing.va_data_addr; - UCHAR SupportedRatesLen; - UCHAR SupportedRates[MAX_LEN_OF_SUPPORTED_RATES]; - BOOLEAN Privacy; - - // 2003-12-10 802.11g WIFI spec disallow OFDM rates in 802.11g ADHOC mode - // make sure 1,2,5.5,11 are the firt 4 rates in PortCfg.SupportedRates[] array - if ((pAd->PortCfg.PhyMode == PHY_11BG_MIXED) && (pAd->PortCfg.AdhocMode == 0)) - { - int i; - SupportedRatesLen=0; - for (i=0;iPortCfg.SupportedRatesLen;i++) - { - switch (pAd->PortCfg.SupportedRates[i] & 0x7f) - { - case 2: - case 4: - case 11: - case 22: - SupportedRates[SupportedRatesLen] = pAd->PortCfg.SupportedRates[i]; - SupportedRatesLen ++; - break; - default: - break; - } - } - // error handling - should never happen - if (SupportedRatesLen != 4) - { - SupportedRatesLen = 4; - SupportedRates[0] = 0x82; - SupportedRates[1] = 0x84; - SupportedRates[2] = 0x8b; - SupportedRates[3] = 0x96; - } - } - else - { - SupportedRatesLen = pAd->PortCfg.SupportedRatesLen; - memcpy(SupportedRates, pAd->PortCfg.SupportedRates, SupportedRatesLen); - } - - pAd->PortCfg.AtimWin = 0; // ?????? - - // compose IBSS beacon frame - MgtMacHeaderInit(pAd, &BcnHdr, SUBTYPE_BEACON, 0, &pAd->PortCfg.Broadcast, &pAd->PortCfg.Bssid); - Privacy = (pAd->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) || - (pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) || - (pAd->PortCfg.WepStatus == Ndis802_11Encryption3Enabled); - CapabilityInfo = CAP_GENERATE(0, 1, 0, 0, Privacy, (pAd->PortCfg.WindowsTxPreamble == Rt802_11PreambleShort)); - if (SupportedRatesLen <= 8) - { - MakeOutgoingFrame(pBeaconFrame, &FrameLen, - MAC_HDR_LEN, &BcnHdr, - TIMESTAMP_LEN, &FakeTimestamp, - 2, &pAd->PortCfg.BeaconPeriod, - 2, &CapabilityInfo, - 1, &SsidIe, - 1, &pAd->PortCfg.SsidLen, - pAd->PortCfg.SsidLen, pAd->PortCfg.Ssid, - 1, &SuppIe, - 1, &SupportedRatesLen, - SupportedRatesLen, SupportedRates, - 1, &DsIe, - 1, &DsLen, - 1, &pAd->PortCfg.Channel, - 1, &IbssIe, - 1, &IbssLen, - 2, &pAd->PortCfg.AtimWin, - END_OF_ARGS); - } - else - { - ExtRatesLen = SupportedRatesLen - 8; - SupportedRatesLen = 8; - MakeOutgoingFrame(pBeaconFrame, &FrameLen, - MAC_HDR_LEN, &BcnHdr, - TIMESTAMP_LEN, &FakeTimestamp, - 2, &pAd->PortCfg.BeaconPeriod, - 2, &CapabilityInfo, - 1, &SsidIe, - 1, &pAd->PortCfg.SsidLen, - pAd->PortCfg.SsidLen, pAd->PortCfg.Ssid, - 1, &SuppIe, - 1, &SupportedRatesLen, - SupportedRatesLen, SupportedRates, - 1, &DsIe, - 1, &DsLen, - 1, &pAd->PortCfg.Channel, - 1, &IbssIe, - 1, &IbssLen, - 2, &pAd->PortCfg.AtimWin, - 3, ErpIe, - 1, &ExtRateIe, - 1, &ExtRatesLen, - ExtRatesLen, &SupportedRates[SupportedRatesLen], - END_OF_ARGS); - } - // If adhoc secruity is set for WPA-None, append the cipher suite IE - if (pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) - { - ULONG tmp; - UCHAR WpaIe = IE_WPA; - - if (pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) // Tkip - { - MakeOutgoingFrame(pBeaconFrame + FrameLen, &tmp, - 1, &WpaIe, - 1, &CipherSuiteWpaNoneTkipLen, - CipherSuiteWpaNoneTkipLen, &CipherSuiteWpaNoneTkip[0], - END_OF_ARGS); - FrameLen += tmp; - } - else if (pAd->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) // Aes - { - MakeOutgoingFrame(pBeaconFrame + FrameLen, &tmp, - 1, &WpaIe, - 1, &CipherSuiteWpaNoneAesLen, - CipherSuiteWpaNoneAesLen, &CipherSuiteWpaNoneAes[0], - END_OF_ARGS); - FrameLen += tmp; - } - } -#ifdef BIG_ENDIAN - RTMPFrameEndianChange(pAd, pBeaconFrame, DIR_WRITE, FALSE); -#endif - - RTMPWriteTxDescriptor(pTxD, FALSE, CIPHER_NONE, FALSE, FALSE, TRUE, SHORT_RETRY, IFS_NEW_BACKOFF, - pAd->PortCfg.MlmeRate, 4, FrameLen, pAd->PortCfg.TxPreambleInUsed, 0); - - DBGPRINT(RT_DEBUG_TRACE, "MakeIbssBeacon (len=%d)\n", FrameLen); - return FrameLen; -} - - +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: connect.c + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * MarkW 8th Dec 04 Baseline code + * Ivo (rt2400) 15th Dec 04 Timing ESSID set + ***************************************************************************/ + +#include "rt_config.h" + +UCHAR CipherSuiteWpaNoneTkip[] = { + 0x00, 0x50, 0xf2, 0x01, // oui + 0x01, 0x00, // Version + 0x00, 0x50, 0xf2, 0x02, // Multicast + 0x01, 0x00, // Number of unicast + 0x00, 0x50, 0xf2, 0x00, // unicast + 0x01, 0x00, // number of authentication method + 0x00, 0x50, 0xf2, 0x00 // authentication + }; +UCHAR CipherSuiteWpaNoneTkipLen = (sizeof(CipherSuiteWpaNoneTkip) / sizeof(UCHAR)); + +UCHAR CipherSuiteWpaNoneAes[] = { + 0x00, 0x50, 0xf2, 0x01, // oui + 0x01, 0x00, // Version + 0x00, 0x50, 0xf2, 0x04, // Multicast + 0x01, 0x00, // Number of unicast + 0x00, 0x50, 0xf2, 0x00, // unicast + 0x01, 0x00, // number of authentication method + 0x00, 0x50, 0xf2, 0x00 // authentication + }; +UCHAR CipherSuiteWpaNoneAesLen = (sizeof(CipherSuiteWpaNoneAes) / sizeof(UCHAR)); + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID MlmeCntlInit( + IN PRTMP_ADAPTER pAd, + IN STATE_MACHINE *S, + OUT STATE_MACHINE_FUNC Trans[]) +{ + // Control state machine differs from other state machines, the interface + // follows the standard interface + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID MlmeCntlMachinePerformAction( + IN PRTMP_ADAPTER pAd, + IN STATE_MACHINE *S, + IN MLME_QUEUE_ELEM *Elem) +{ + switch (Elem->MsgType) + { + case OID_802_11_SSID: + CntlOidSsidProc(pAd, Elem); + return; + case OID_802_11_BSSID: + CntlOidRTBssidProc(pAd, Elem); + return; + case OID_802_11_BSSID_LIST_SCAN: + CntlOidScanProc(pAd, Elem); + return; + } + + switch(pAd->Mlme.CntlMachine.CurrState) + { + case CNTL_IDLE: + CntlIdleProc(pAd, Elem); + break; + case CNTL_WAIT_DISASSOC: + CntlWaitDisassocProc(pAd, Elem); + break; + case CNTL_WAIT_JOIN: + CntlWaitJoinProc(pAd, Elem); + break; + + // CNTL_WAIT_REASSOC is the only state in CNTL machine that does + // not triggered directly or indirectly by "RTMPSetInformation(OID_xxx)". + // Therefore not protected by NDIS's "only one outstanding OID request" + // rule. Which means NDIS may SET OID in the middle of ROAMing attempts. + // Current approach is to block new SET request at RTMPSetInformation() + // when CntlMachine.CurrState is not CNTL_IDLE + case CNTL_WAIT_REASSOC: + CntlWaitReassocProc(pAd, Elem); + break; + + case CNTL_WAIT_START: + CntlWaitStartProc(pAd, Elem); + break; + case CNTL_WAIT_AUTH: + CntlWaitAuthProc(pAd, Elem); + break; + case CNTL_WAIT_AUTH2: + CntlWaitAuthProc2(pAd, Elem); + break; + case CNTL_WAIT_ASSOC: + CntlWaitAssocProc(pAd, Elem); + break; + + case CNTL_WAIT_OID_LIST_SCAN: + if(Elem->MsgType == MT2_SCAN_CONF) + { + // Resume TxRing after SCANING complete. We hope the out-of-service time + // won't be too long to let upper layer time-out the waiting frames + RTMPResumeMsduTransmission(pAd); + if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) + { + } + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; + } + if (pAd->MediaState == NdisMediaStateDisconnected) + MlmeAutoReconnectLastSSID(pAd); + break; + + case CNTL_WAIT_OID_DISASSOC: + if (Elem->MsgType == MT2_DISASSOC_CONF) + { + LinkDown(pAd); + + if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) + { + } + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; + } + break; + + default: + printk(KERN_ERR DRV_NAME "CNTL - Illegal message type(=%d)", Elem->MsgType); + break; + } +} + + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID CntlIdleProc( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MLME_DISASSOC_REQ_STRUCT DisassocReq; + + if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF)) + { + if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) + { + pAd->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; + } + return; + } + + switch(Elem->MsgType) + { + case OID_802_11_DISASSOCIATE: + DisassocParmFill(pAd, &DisassocReq, &pAd->PortCfg.Bssid, REASON_DISASSOC_STA_LEAVING); + MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq); + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_DISASSOC; + // Set the control aux SSID to prevent it reconnect to old SSID + // Since calling this indicate user don't want to connect to that SSID anymore. + pAd->Mlme.CntlAux.SsidLen = 32; + memset(pAd->Mlme.CntlAux.Ssid, 0x00, pAd->Mlme.CntlAux.SsidLen); + break; + + case MT2_MLME_ROAMING_REQ: + CntlMlmeRoamingProc(pAd, Elem); + break; + + default: + DBGPRINT(RT_DEBUG_TRACE, "CNTL - Illegal message in CntlIdleProc(MsgType=%d)\n",Elem->MsgType); + break; + } +} + +VOID CntlOidScanProc( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MLME_SCAN_REQ_STRUCT ScanReq; + CHAR BroadSsid[MAX_LEN_OF_SSID]; + ULONG BssIdx = BSS_NOT_FOUND; + BSS_ENTRY CurrBss; + + DBGPRINT(RT_DEBUG_INFO, "CNTL - SCAN starts\n"); + + // temporarily recover BBP from short-distance-low-sensibility mode during SCAN + // for best SCANNING reult; + AsicRestoreBbpSensibility(pAd); + + // record current BSS if network is connected. + // 2003-2-13 do not include current IBSS if this is the only STA in this IBSS. + if (pAd->MediaState == NdisMediaStateConnected) // if (INFRA_ON(pAd) || ADHOC_ON(pAd)) + { + BssIdx = BssTableSearch(&pAd->PortCfg.BssTab, &pAd->PortCfg.Bssid); + if (BssIdx != BSS_NOT_FOUND) + { + memcpy(&CurrBss, &pAd->PortCfg.BssTab.BssEntry[BssIdx], sizeof(BSS_ENTRY)); + + // 2003-2-20 reset this RSSI to a low value but not zero. In normal case, the coming SCAN + // should return a correct RSSI to overwrite this. If no BEEACON received after SCAN, + // at least we still report a "greater than 0" RSSI since we claim it's CONNECTED. + CurrBss.Rssi = 18; // about -82 dB + } + } + + // clean up previous SCAN result, add current BSS back to table if any + BssTableInit(&pAd->PortCfg.BssTab); + if (BssIdx != BSS_NOT_FOUND) + { + // DDK Note: If the NIC is associated with a particular BSSID and SSID + // that are not contained in the list of BSSIDs generated by this scan, the + // BSSID description of the currently associated BSSID and SSID should be + // appended to the list of BSSIDs in the NIC's database. + // To ensure this, we append this BSS as the first entry in SCAN result + memcpy(&pAd->PortCfg.BssTab.BssEntry[0], &CurrBss, sizeof(BSS_ENTRY)); + pAd->PortCfg.BssTab.BssNr = 1; + } + + BroadSsid[0] = '\0'; + ScanParmFill(pAd, &ScanReq, BroadSsid, 0, BSS_ANY, SCAN_PASSIVE); + MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ, + sizeof(MLME_SCAN_REQ_STRUCT), &ScanReq); + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN; +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID CntlOidSsidProc( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM * Elem) +{ + NDIS_802_11_SSID *OidSsid = (NDIS_802_11_SSID *)Elem->Msg; + MLME_DISASSOC_REQ_STRUCT DisassocReq; + ULONG Now; + + // Step 0. + // record the desired SSID and all matching BSSes into CntlAux.SsidBssTab for + // later-on iteration. Sort by RSSI order + memcpy(pAd->Mlme.CntlAux.Ssid, OidSsid->Ssid, OidSsid->SsidLength); + pAd->Mlme.CntlAux.SsidLen = (UCHAR)OidSsid->SsidLength; + BssTableSsidSort(pAd, &pAd->Mlme.CntlAux.SsidBssTab, pAd->Mlme.CntlAux.Ssid, pAd->Mlme.CntlAux.SsidLen); + pAd->Mlme.CntlAux.BssIdx = 0; + DBGPRINT(RT_DEBUG_INFO, "CNTL - %d BSS match the desire SSID %s\n",pAd->Mlme.CntlAux.SsidBssTab.BssNr, pAd->Mlme.CntlAux.Ssid); + + Now = jiffies; + + if ((pAd->MediaState == NdisMediaStateConnected) && + MAC_ADDR_EQUAL(&pAd->PortCfg.Bssid, &pAd->Mlme.CntlAux.SsidBssTab.BssEntry[0].Bssid)) + { + if (((pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPA) || (pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPAPSK)) && + (pAd->PortCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED)) + { + // For WPA, WPA-PSK, if the 1x port is not secured, we have to redo + // connection process + DBGPRINT(RT_DEBUG_TRACE, "CNTL - disassociate with current AP...\n"); + DisassocParmFill(pAd, &DisassocReq, &pAd->PortCfg.Bssid, REASON_DISASSOC_STA_LEAVING); + MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, + sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq); + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC; + } + else if (pAd->bConfigChanged == TRUE) + { + // Config has changed, we have to reconnect the same AP + DBGPRINT(RT_DEBUG_TRACE, "CNTL - disassociate with current AP Because config changed...\n"); + DisassocParmFill(pAd, &DisassocReq, &pAd->PortCfg.Bssid, REASON_DISASSOC_STA_LEAVING); + MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, + sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq); + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC; + } + else + { + // We only check if same to the BSSID with highest RSSI. + // If roaming of same SSID required, we still do the reconnection. + // same BSSID, go back to idle state directly + DBGPRINT(RT_DEBUG_TRACE, "CNTL - already with this BSSID. ignore this SET_SSID request\n"); + if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) + { + } + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; + } + } + else if (INFRA_ON(pAd)) + { + // case 1. active association existent + // roaming is done within miniport driver, nothing to do with configuration + // utility. so upon a new SET(OID_802_11_SSID) is received, we just + // disassociate with the current (or previous) associated AP, if any, + // then perform a new association with this new SSID, no matter the + // new/old SSID are the same or npt. + DBGPRINT(RT_DEBUG_TRACE, "CNTL - disassociate with current AP...\n"); + DisassocParmFill(pAd, &DisassocReq, &pAd->PortCfg.Bssid, REASON_DISASSOC_STA_LEAVING); + MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, + sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq); + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC; + } + else + { + if (ADHOC_ON(pAd)) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - drop current ADHOC\n"); + LinkDown(pAd); + pAd->MediaState = NdisMediaStateDisconnected; + DBGPRINT(RT_DEBUG_TRACE, "NDIS_STATUS_MEDIA_DISCONNECT Event C!\n"); + } + + if ((pAd->Mlme.CntlAux.SsidBssTab.BssNr==0) && (pAd->PortCfg.AutoReconnect == TRUE) && (pAd->PortCfg.BssType == BSS_INFRA)) + { + MLME_SCAN_REQ_STRUCT ScanReq; + + DBGPRINT(RT_DEBUG_TRACE, "CNTL - No matching BSS, start a new scan\n"); + // BroadSsid[0] = '\0'; + ScanParmFill(pAd, &ScanReq, pAd->Mlme.CntlAux.Ssid, pAd->Mlme.CntlAux.SsidLen, BSS_ANY, SCAN_ACTIVE); + MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ, sizeof(MLME_SCAN_REQ_STRUCT), &ScanReq); + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN; + // Reset Missed scan number + pAd->PortCfg.IgnoredScanNumber = 0; + pAd->PortCfg.LastScanTime = Now; + } + else + { + IterateOnBssTab(pAd); + } + } +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID CntlOidRTBssidProc( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM * Elem) +{ + ULONG BssIdx; + MACADDR *pOidBssid = (MACADDR *)Elem->Msg; + MLME_DISASSOC_REQ_STRUCT DisassocReq; + MLME_JOIN_REQ_STRUCT JoinReq; + + COPY_MAC_ADDR(&pAd->Mlme.CntlAux.Bssid, pOidBssid); + BssIdx = BssTableSearch(&pAd->PortCfg.BssTab, pOidBssid); + + if (BssIdx == BSS_NOT_FOUND) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - BSSID not found. reply NDIS_STATUS_NOT_ACCEPTED\n"); + if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) + { + + } + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; + return; + } + + // copy the matched BSS entry from PortCfg.BssTab to CntlAux.SsidBssTab + pAd->Mlme.CntlAux.BssIdx = 0; + pAd->Mlme.CntlAux.SsidBssTab.BssNr = 1; + memcpy(&pAd->Mlme.CntlAux.SsidBssTab.BssEntry[0], &pAd->PortCfg.BssTab.BssEntry[BssIdx], sizeof(BSS_ENTRY)); + + // Add SSID into Mlme.CntlAux for site surey joining hidden SSID + pAd->Mlme.CntlAux.SsidLen = pAd->Mlme.CntlAux.SsidBssTab.BssEntry[0].SsidLen; + memcpy(pAd->Mlme.CntlAux.Ssid, pAd->Mlme.CntlAux.SsidBssTab.BssEntry[0].Ssid, pAd->Mlme.CntlAux.SsidLen); + + // 2002-11-26 skip the following checking. i.e. if user wants to re-connect to same AP + // we just follow normal procedure. The reason of user doing this may because he/she changed + // AP to another channel, but we still received BEACON from it thus don't claim Link Down. + // Since user knows he's chnged AP channel, he'll re-connect again. By skipping the following + // checking, we'll disassociate then re-do normal association with this AP at the new channel. + // 2003-1-6 Re-enable this feature based on microsoft requirement which prefer not to re-do + // connection when setting the same BSSID. + if ( (pAd->MediaState == NdisMediaStateConnected) && //(INFRA_ON(pAd) || ADHOC_ON(pAd)) && + MAC_ADDR_EQUAL(&pAd->PortCfg.Bssid, pOidBssid)) + { + // same BSSID, go back to idle state directly + DBGPRINT(RT_DEBUG_TRACE, "CNTL - already in this BSSID. ignore this SET_BSSID request\n"); + if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) + { + } + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; + } + else + { + if (INFRA_ON(pAd)) + { + // disassoc from current AP first + DBGPRINT(RT_DEBUG_TRACE, "CNTL - disassociate with current AP ...\n"); + DisassocParmFill(pAd, &DisassocReq, &pAd->PortCfg.Bssid, REASON_DISASSOC_STA_LEAVING); + MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, + sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq); + + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC; + } + else + { + if (ADHOC_ON(pAd)) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - drop current ADHOC\n"); + LinkDown(pAd); + pAd->MediaState = NdisMediaStateDisconnected; + DBGPRINT(RT_DEBUG_TRACE, "NDIS_STATUS_MEDIA_DISCONNECT Event C!\n"); + } + + // No active association, join the BSS immediately + DBGPRINT(RT_DEBUG_TRACE, "CNTL - joining %02x:%02x:%02x:%02x:%02x:%02x ...\n", + pOidBssid->Octet[0],pOidBssid->Octet[1],pOidBssid->Octet[2], + pOidBssid->Octet[3],pOidBssid->Octet[4],pOidBssid->Octet[5]); + JoinParmFill(pAd, &JoinReq, pAd->Mlme.CntlAux.BssIdx); + MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_MLME_JOIN_REQ, sizeof(MLME_JOIN_REQ_STRUCT), &JoinReq); + + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_JOIN; + } + } +} + +// Roaming is the only external request triggering CNTL state machine +// despite of other "SET OID" operation. All "SET OID" related oerations +// happen in sequence, because no other SET OID will be sent to this device +// until the the previous SET operation is complete (successful o failed). +// So, how do we quarantee this ROAMING request won't corrupt other "SET OID"? +// or been corrupted by other "SET OID"? +VOID CntlMlmeRoamingProc( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + // TODO: + // AP in different channel may show lower RSSI than actual value?? + // should we add a weighting factor to compensate it? + DBGPRINT(RT_DEBUG_TRACE,"CNTL - Roaming in CntlAux.RoamTab...\n"); + BssTableSortByRssi(&pAd->Mlme.CntlAux.RoamTab); + pAd->Mlme.CntlAux.RoamIdx=0; + IterateOnBssTab2(pAd); + +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID CntlWaitDisassocProc( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MLME_START_REQ_STRUCT StartReq; + + if (Elem->MsgType == MT2_DISASSOC_CONF) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - Dis-associate successful\n"); + LinkDown(pAd); + + // case 1. no matching BSS, and user wants ADHOC, so we just start a new one + if ((pAd->Mlme.CntlAux.SsidBssTab.BssNr==0) && (pAd->PortCfg.BssType == BSS_INDEP)) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - No matching BSS, start a new ADHOC (Ssid=%s)...\n",pAd->Mlme.CntlAux.Ssid); + StartParmFill(pAd, &StartReq, pAd->Mlme.CntlAux.Ssid, pAd->Mlme.CntlAux.SsidLen); + MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_MLME_START_REQ, sizeof(MLME_START_REQ_STRUCT), &StartReq); + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_START; + } + // case 2. try each matched BSS + else + { + IterateOnBssTab(pAd); + } + } +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID CntlWaitJoinProc( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + USHORT Reason; + MLME_AUTH_REQ_STRUCT AuthReq; + + if (Elem->MsgType == MT2_JOIN_CONF) + { + memcpy(&Reason, Elem->Msg, sizeof(USHORT)); + if (Reason == MLME_SUCCESS) + { + // 1. joined an IBSS, we are pretty much done here + if (pAd->PortCfg.BssType == BSS_INDEP) + { + LinkUp(pAd, BSS_INDEP); + if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) + { + } + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; + } + // 2. joined a new INFRA network, start from authentication + else + { + // either Ndis802_11AuthModeShared or Ndis802_11AuthModeAutoSwitch, try shared key first + if ((pAd->PortCfg.AuthMode == Ndis802_11AuthModeShared) || + (pAd->PortCfg.AuthMode == Ndis802_11AuthModeAutoSwitch)) + { + AuthParmFill(pAd, &AuthReq, &pAd->PortCfg.Bssid, Ndis802_11AuthModeShared); + } + else + { + AuthParmFill(pAd, &AuthReq, &pAd->PortCfg.Bssid, Ndis802_11AuthModeOpen); + } + MlmeEnqueue(&pAd->Mlme.Queue, AUTH_STATE_MACHINE, MT2_MLME_AUTH_REQ, + sizeof(MLME_AUTH_REQ_STRUCT), &AuthReq); + + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_AUTH; + } + } + else + { + // 3. failed, try next BSS + pAd->Mlme.CntlAux.BssIdx++; + IterateOnBssTab(pAd); + } + } +} + + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID CntlWaitStartProc( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + USHORT Result; + + if (Elem->MsgType == MT2_START_CONF) + { + memcpy(&Result, Elem->Msg, sizeof(USHORT)); + if (Result == MLME_SUCCESS) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - We have started a new ADHOC network\n"); + DBGPRINT(RT_DEBUG_TRACE, "CNTL - BSSID %02x:%02x:%02x:%02x:%02x:%02x ...\n", + pAd->PortCfg.Bssid.Octet[0], + pAd->PortCfg.Bssid.Octet[1], + pAd->PortCfg.Bssid.Octet[2], + pAd->PortCfg.Bssid.Octet[3], + pAd->PortCfg.Bssid.Octet[4], + pAd->PortCfg.Bssid.Octet[5]); + LinkUp(pAd, BSS_INDEP); + if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) + { + } + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - Start FAIL. BUG!!!!!\n"); + if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) + { + } + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; + } + } +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID CntlWaitAuthProc( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + USHORT Reason; + MLME_ASSOC_REQ_STRUCT AssocReq; + MLME_AUTH_REQ_STRUCT AuthReq; + + if (Elem->MsgType == MT2_AUTH_CONF) + { + memcpy(&Reason, Elem->Msg, sizeof(USHORT)); + if (Reason == MLME_SUCCESS) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - AUTH OK\n"); + AssocParmFill(pAd, &AssocReq, &pAd->PortCfg.Bssid, pAd->PortCfg.CapabilityInfo, + ASSOC_TIMEOUT, pAd->PortCfg.DefaultListenCount); + MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_ASSOC_REQ, + sizeof(MLME_ASSOC_REQ_STRUCT), &AssocReq); + + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_ASSOC; + } + else + { + // This fail may because of the AP already keep us in its MAC table without + // ageing-out. The previous authentication attempt must have let it remove us. + // so try Authentication again may help. For D-Link DWL-900AP+ compatibility. + DBGPRINT(RT_DEBUG_TRACE, "CNTL - AUTH FAIL, try again...\n"); + if ((pAd->PortCfg.AuthMode == Ndis802_11AuthModeShared) || + (pAd->PortCfg.AuthMode == Ndis802_11AuthModeAutoSwitch)) + { + // either Ndis802_11AuthModeShared or Ndis802_11AuthModeAutoSwitch, try shared key first + AuthParmFill(pAd, &AuthReq, &pAd->PortCfg.Bssid, Ndis802_11AuthModeShared); + } + else + { + AuthParmFill(pAd, &AuthReq, &pAd->PortCfg.Bssid, Ndis802_11AuthModeOpen); + } + + MlmeEnqueue(&pAd->Mlme.Queue, AUTH_STATE_MACHINE, MT2_MLME_AUTH_REQ, + sizeof(MLME_AUTH_REQ_STRUCT), &AuthReq); + + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_AUTH2; + } + } +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID CntlWaitAuthProc2( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + USHORT Reason; + MLME_ASSOC_REQ_STRUCT AssocReq; + MLME_AUTH_REQ_STRUCT AuthReq; + + if (Elem->MsgType == MT2_AUTH_CONF) + { + memcpy(&Reason, Elem->Msg, sizeof(USHORT)); + if (Reason == MLME_SUCCESS) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - AUTH OK\n"); + AssocParmFill(pAd, &AssocReq, &pAd->PortCfg.Bssid, pAd->PortCfg.CapabilityInfo, + ASSOC_TIMEOUT, pAd->PortCfg.DefaultListenCount); + MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_ASSOC_REQ, + sizeof(MLME_ASSOC_REQ_STRUCT), &AssocReq); + + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_ASSOC; + } + else + { + if ((pAd->PortCfg.AuthMode == Ndis802_11AuthModeAutoSwitch) && + (pAd->Mlme.AuthAux.Alg == Ndis802_11AuthModeShared)) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - AUTH FAIL, try OPEN system...\n"); + AuthParmFill(pAd, &AuthReq, &pAd->PortCfg.Bssid, Ndis802_11AuthModeOpen); + MlmeEnqueue(&pAd->Mlme.Queue, AUTH_STATE_MACHINE, MT2_MLME_AUTH_REQ, + sizeof(MLME_AUTH_REQ_STRUCT), &AuthReq); + + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_AUTH2; + } + else + { + // not success, try next BSS + DBGPRINT(RT_DEBUG_TRACE, "CNTL - AUTH FAIL, give up; try next BSS\n"); + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; //??????? + pAd->Mlme.CntlAux.BssIdx++; + IterateOnBssTab(pAd); + } + } + } +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID CntlWaitAssocProc( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + USHORT Reason; + + if (Elem->MsgType == MT2_ASSOC_CONF) + { + memcpy(&Reason, Elem->Msg, sizeof(USHORT)); + if (Reason == MLME_SUCCESS) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - Association successful on BSS #%d\n",pAd->Mlme.CntlAux.BssIdx); + LinkUp(pAd, BSS_INFRA); + if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) + { + } + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; + } + else + { + // not success, try next BSS + DBGPRINT(RT_DEBUG_TRACE, "CNTL - Association fails on BSS #%d\n",pAd->Mlme.CntlAux.BssIdx); + pAd->Mlme.CntlAux.BssIdx++; + IterateOnBssTab(pAd); + } + } +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID CntlWaitReassocProc( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + USHORT Result; + + if (Elem->MsgType == MT2_REASSOC_CONF) + { + memcpy(&Result, Elem->Msg, sizeof(USHORT)); + if (Result == MLME_SUCCESS) + { + BSS_ENTRY *pBss = &pAd->Mlme.CntlAux.RoamTab.BssEntry[pAd->Mlme.CntlAux.RoamIdx]; + + // COPY_MAC_ADDR(&pAd->PortCfg.Bssid, &pBss->Bssid); + // AsicSetBssid(pAd, &pAd->PortCfg.Bssid); + + // The following steps are supposed to be done after JOIN in normal procedure + // But since this RE-ASSOC skips the JOIN procedure, we have to do it after + // RE-ASSOC succeeds. If RE-ASSOC fails, then stay at original AP without any change + pAd->PortCfg.BeaconPeriod = pBss->BeaconPeriod; + pAd->PortCfg.Channel = pBss->Channel; + // The security setting should always follow upper layer definition, not from frame + //pAd->PortCfg.PrivacyInvoked = CAP_IS_PRIVACY_ON(pBss->CapabilityInfo); + pAd->PortCfg.SupportedRatesLen = pBss->RatesLen; + memcpy(pAd->PortCfg.SupportedRates, pBss->Rates, pBss->RatesLen); + + // Check for 802.11g information, if 802.11 b /g mixed mode. + pAd->PortCfg.CapabilityInfo = pBss->CapabilityInfo; + + pAd->PortCfg.CfpPeriod = pBss->CfpPeriod; + pAd->PortCfg.CfpMaxDuration = pBss->CfpMaxDuration; + pAd->PortCfg.CfpDurRemain = pBss->CfpDurRemaining; + pAd->PortCfg.CfpCount = pBss->CfpCount; + + // + // NDIS requires a new Link UP indication but no Link Down for RE-ASSOC + // + DBGPRINT(RT_DEBUG_TRACE, "CNTL - Re-assocition successful on BSS #%d\n", pAd->Mlme.CntlAux.RoamIdx); + LinkUp(pAd, BSS_INFRA); + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; + } + else + { + // reassoc failed, try to pick next BSS in the BSS Table + DBGPRINT(RT_DEBUG_TRACE, "CNTL - Re-assocition fails on BSS #%d\n", pAd->Mlme.CntlAux.RoamIdx); + pAd->Mlme.CntlAux.RoamIdx++; + IterateOnBssTab2(pAd); + } + } +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID LinkUp( + IN PRTMP_ADAPTER pAd, + IN UCHAR BssType) +{ + ULONG Now; + + DBGPRINT(RT_DEBUG_TRACE, "CNTL - !!! LINK UP !!!\n"); + MlmeUpdateTxRates(pAd, TRUE); + memcpy(&pAd->Mlme.PrevWlanCounters, &pAd->WlanCounters, sizeof(COUNTER_802_11)); + memset(&pAd->DrsCounters, 0, sizeof(COUNTER_DRS)); + + Now = jiffies; + pAd->PortCfg.LastBeaconRxTime = Now; // last RX timestamp + + if ((pAd->PortCfg.WindowsTxPreamble != Rt802_11PreambleLong) && + CAP_IS_SHORT_PREAMBLE_ON(pAd->PortCfg.CapabilityInfo)) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - !!! Set to short preamble!!!\n"); + MlmeSetTxPreamble(pAd, Rt802_11PreambleShort); + } + + pAd->PortCfg.BssType = BssType; + if (BssType == BSS_INDEP) + { + pAd->PortCfg.Mibss = TRUE; + pAd->PortCfg.Massoc = FALSE; + MakeIbssBeacon(pAd); + AsicEnableIbssSync(pAd); + +#ifdef SINGLE_ADHOC_LINKUP + // Although this did not follow microsoft's recommendation. + //Change based on customer's request + pAd->MediaState = NdisMediaStateConnected; +#endif + + // Clear Key information when driver change to WPA-None mode + // which did not have any key set +#if 0 + if (pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) + { + INT i; + + for (i = 0; i < PAIRWISE_KEY_NO; i++) + { + pAd->PortCfg.PairwiseKey[i].KeyLen = 0; + } + + for (i = 0; i < GROUP_KEY_NO; i++) + { + pAd->PortCfg.GroupKey[i].KeyLen = 0; + } + } +#endif + } + else // BSS_INFRA + { + pAd->PortCfg.Massoc = TRUE; + pAd->PortCfg.Mibss = FALSE; + + // NOTE: + // the decision of using "short slot time" or not may change dynamically due to + // new STA association to the AP. so we have to decide that upon parsing BEACON, not here + + // NOTE: + // the decision to use "RTC/CTS" or "CTS-to-self" protection or not may change dynamically + // due to new STA association to the AP. so we have to decide that upon parsing BEACON, not here + + ComposePsPoll(pAd); + ComposeNullFrame(pAd); + AsicEnableBssSync(pAd); + + // only INFRASTRUCTURE mode need to indicate connectivity immediately; ADHOC mode + // should wait until at least 2 active nodes in this BSSID. + pAd->MediaState = NdisMediaStateConnected; + } + + DBGPRINT(RT_DEBUG_TRACE, "NDIS_STATUS_MEDIA_CONNECT Event B!\n"); + + if (pAd->PortCfg.LedMode != LED_MODE_SINGLE) + { + ASIC_LED_ACT_ON(pAd); + } + + AsicSetSlotTime(pAd, FALSE); + pAd->Mlme.PeriodicRound = 0; + // Reset config flag + pAd->bConfigChanged = FALSE; +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID LinkDown( + IN PRTMP_ADAPTER pAd) +{ + DBGPRINT(RT_DEBUG_TRACE, "CNTL - !!! LINK DOWN !!!\n"); + + if (ADHOC_ON(pAd)) // Adhoc mode link down + { + pAd->PortCfg.Mibss = FALSE; + +#ifdef SINGLE_ADHOC_LINKUP + pAd->MediaState = NdisMediaStateDisconnected; + // clean up previous SCAN result, add current BSS back to table if any + BssTableDeleteEntry(&pAd->PortCfg.BssTab, &(pAd->PortCfg.Bssid)); +#else + if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF)) + { + pAd->MediaState = NdisMediaStateDisconnected; + // clean up previous SCAN result, add current BSS back to table if any + BssTableDeleteEntry(&pAd->PortCfg.BssTab, &(pAd->PortCfg.Bssid)); + } +#endif + } + else// Infra structure mode + { + pAd->PortCfg.Massoc = FALSE; + pAd->MediaState = NdisMediaStateDisconnected; + DBGPRINT(RT_DEBUG_TRACE, "NDIS_STATUS_MEDIA_DISCONNECT Event A!\n"); + BssTableDeleteEntry(&pAd->PortCfg.BssTab, &(pAd->PortCfg.Bssid)); + + // restore back to - + // 1. long slot (20 us) or short slot (9 us) time + // 2. turn on/off RTS/CTS and/or CTS-to-self protection + // 3. short preamble + if (pAd->PortCfg.BGProtectionInUsed == TRUE) + { + pAd->PortCfg.BGProtectionInUsed = FALSE; + DBGPRINT(RT_DEBUG_TRACE, "Link down - turn off B/G protection\n"); + } + + } + + AsicSetSlotTime(pAd, FALSE); + AsicRestoreBbpSensibility(pAd); + + if (pAd->PortCfg.WindowsTxPreamble == Rt802_11PreambleShort) + MlmeSetTxPreamble(pAd, Rt802_11PreambleShort); + else + MlmeSetTxPreamble(pAd, Rt802_11PreambleLong); + + if ((pAd->PortCfg.LedMode != LED_MODE_SINGLE) && (pAd->PortCfg.LedMode != LED_MODE_ASUS)) + { + ASIC_LED_ACT_OFF(pAd); + } + else if ((pAd->PortCfg.LedMode == LED_MODE_ASUS) && (pAd->PortCfg.bRadio == TRUE)) + { + RTMP_IO_WRITE32(pAd, LEDCSR, 0x0002461E); + } + AsicDisableSync(pAd); + pAd->Mlme.PeriodicRound = 0; + + // Remove PortCfg Information after link down + memset(&(pAd->PortCfg.Bssid), 0, ETH_ALEN); + //memset(pAd->PortCfg.Ssid, 0, MAX_LEN_OF_SSID); + //pAd->PortCfg.SsidLen = 0; + + // Reset WPA-PSK state. Only reset when supplicant enabled + if (pAd->PortCfg.WpaState != SS_NOTUSE) + { + pAd->PortCfg.WpaState = SS_START; + // Clear Replay counter + memset(pAd->PortCfg.ReplayCounter, 0, 8); + } + + // Remove all WPA keys after link down + //RTMPWPARemoveAllKeys(pAd); + // 802.1x port control + pAd->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED; + pAd->PortCfg.MicErrCnt = 0; +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID MlmeCntlConfirm( + IN PRTMP_ADAPTER pAd, + IN ULONG MsgType, + IN USHORT Msg) +{ + MlmeEnqueue(&pAd->Mlme.Queue, MLME_CNTL_STATE_MACHINE, MsgType, sizeof(USHORT), &Msg); +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID IterateOnBssTab( + IN PRTMP_ADAPTER pAd) +{ + MLME_START_REQ_STRUCT StartReq; + MLME_JOIN_REQ_STRUCT JoinReq; + ULONG BssIdx; + + BssIdx = pAd->Mlme.CntlAux.BssIdx; + if (BssIdx < pAd->Mlme.CntlAux.SsidBssTab.BssNr) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - Trying BSSID %02x:%02x:%02x:%02x:%02x:%02x ...\n", + pAd->Mlme.CntlAux.SsidBssTab.BssEntry[BssIdx].Bssid.Octet[0], + pAd->Mlme.CntlAux.SsidBssTab.BssEntry[BssIdx].Bssid.Octet[1], + pAd->Mlme.CntlAux.SsidBssTab.BssEntry[BssIdx].Bssid.Octet[2], + pAd->Mlme.CntlAux.SsidBssTab.BssEntry[BssIdx].Bssid.Octet[3], + pAd->Mlme.CntlAux.SsidBssTab.BssEntry[BssIdx].Bssid.Octet[4], + pAd->Mlme.CntlAux.SsidBssTab.BssEntry[BssIdx].Bssid.Octet[5]); + JoinParmFill(pAd, &JoinReq, BssIdx); + MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_MLME_JOIN_REQ, sizeof(MLME_JOIN_REQ_STRUCT), + &JoinReq); + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_JOIN; + } + else if (pAd->PortCfg.BssType == BSS_INDEP) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - All BSS fail; start a new ADHOC (Ssid=%s)...\n",pAd->Mlme.CntlAux.Ssid); + StartParmFill(pAd, &StartReq, pAd->Mlme.CntlAux.Ssid, (UCHAR)pAd->Mlme.CntlAux.SsidLen); + MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_MLME_START_REQ, sizeof(MLME_START_REQ_STRUCT), &StartReq); + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_START; + } + else // no more BSS + { + if (pAd->Mlme.CntlAux.CurrReqIsFromNdis) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - All BSS fail; reply NDIS_STATUS_NOT_ACCEPTED\n"); + } + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; + } +} + +// for re-association only +VOID IterateOnBssTab2( + IN PRTMP_ADAPTER pAd) +{ + MLME_REASSOC_REQ_STRUCT ReassocReq; + ULONG BssIdx; + BSS_ENTRY *pBss; + + BssIdx = pAd->Mlme.CntlAux.RoamIdx; + pBss = &pAd->Mlme.CntlAux.RoamTab.BssEntry[BssIdx]; + + if (BssIdx < pAd->Mlme.CntlAux.RoamTab.BssNr) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - try BSS #%d %02x:%02x:%02x:%02x:%02x:%02x ...\n", + BssIdx, pBss->Bssid.Octet[0],pBss->Bssid.Octet[1],pBss->Bssid.Octet[2], + pBss->Bssid.Octet[3],pBss->Bssid.Octet[4],pBss->Bssid.Octet[5]); + + AsicSwitchChannel(pAd, pBss->Channel); + AsicLockChannel(pAd, pBss->Channel); + + // reassociate message has the same structure as associate message + AssocParmFill(pAd, &ReassocReq, &pBss->Bssid, pBss->CapabilityInfo, + ASSOC_TIMEOUT, pAd->PortCfg.DefaultListenCount); + MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_REASSOC_REQ, + sizeof(MLME_REASSOC_REQ_STRUCT), &ReassocReq); + + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_REASSOC; + } + else // no more BSS + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - All roaming failed, stay with original AP\n"); + AsicSwitchChannel(pAd, pAd->PortCfg.Channel); + AsicLockChannel(pAd, pAd->PortCfg.Channel); + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; + } +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID JoinParmFill( + IN PRTMP_ADAPTER pAd, + IN OUT MLME_JOIN_REQ_STRUCT *JoinReq, + IN ULONG BssIdx) +{ + JoinReq->BssIdx = BssIdx; +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID AssocParmFill( + IN PRTMP_ADAPTER pAd, + IN OUT MLME_ASSOC_REQ_STRUCT *AssocReq, + IN MACADDR *Addr, + IN USHORT CapabilityInfo, + IN ULONG Timeout, + IN USHORT ListenIntv) +{ + COPY_MAC_ADDR(&AssocReq->Addr, Addr); + // Add mask to support 802.11b mode only + AssocReq->CapabilityInfo = CapabilityInfo & 0xfff3; // not cf-pollable, not cf-poll-request + AssocReq->Timeout = Timeout; + AssocReq->ListenIntv = ListenIntv; +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID ScanParmFill( + IN PRTMP_ADAPTER pAd, + IN OUT MLME_SCAN_REQ_STRUCT *ScanReq, + IN CHAR Ssid[], + IN UCHAR SsidLen, + IN UCHAR BssType, + IN UCHAR ScanType) +{ + ScanReq->SsidLen = SsidLen; + memcpy(ScanReq->Ssid, Ssid, SsidLen); + ScanReq->BssType = BssType; + ScanReq->ScanType = ScanType; +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID DisassocParmFill( + IN PRTMP_ADAPTER pAd, + IN OUT MLME_DISASSOC_REQ_STRUCT *DisassocReq, + IN MACADDR *Addr, + IN USHORT Reason) +{ + COPY_MAC_ADDR(&DisassocReq->Addr, Addr); + DisassocReq->Reason = Reason; +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID StartParmFill( + IN PRTMP_ADAPTER pAd, + IN OUT MLME_START_REQ_STRUCT *StartReq, + IN CHAR Ssid[], + IN UCHAR SsidLen) +{ + memcpy(StartReq->Ssid, Ssid, SsidLen); + StartReq->SsidLen = SsidLen; +} + +/* + ========================================================================== + Description: + ========================================================================== +*/ +VOID AuthParmFill( + IN PRTMP_ADAPTER pAd, + IN OUT MLME_AUTH_REQ_STRUCT *AuthReq, + IN MACADDR *Addr, + IN USHORT Alg) +{ + COPY_MAC_ADDR(&AuthReq->Addr, Addr); + AuthReq->Alg = Alg; + AuthReq->Timeout = AUTH_TIMEOUT; +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID ComposePsPoll( + IN PRTMP_ADAPTER pAd) +{ + memset(&pAd->Mlme.PsFr, 0, sizeof(PSPOLL_FRAME)); + pAd->Mlme.PsFr.Type = BTYPE_CNTL; + pAd->Mlme.PsFr.SubType = SUBTYPE_PS_POLL; + pAd->Mlme.PsFr.Aid = pAd->PortCfg.Aid | 0xC000; + COPY_MAC_ADDR(&(pAd->Mlme.PsFr.Bssid), &pAd->PortCfg.Bssid); + COPY_MAC_ADDR(&(pAd->Mlme.PsFr.Ta), &(pAd->CurrentAddress)); +} + +VOID ComposeNullFrame( + IN PRTMP_ADAPTER pAd) +{ + MgtMacHeaderInit(pAd, &pAd->Mlme.NullFr, SUBTYPE_NULL_FUNC, 1, &pAd->PortCfg.Bssid, &pAd->PortCfg.Bssid); + pAd->Mlme.NullFr.Duration = 0; + pAd->Mlme.NullFr.Type = BTYPE_DATA; +} + +/* + ========================================================================== + Description: + Pre-build a BEACON frame in the shared memory + ========================================================================== +*/ +ULONG MakeIbssBeacon( + IN PRTMP_ADAPTER pAd) +{ + UCHAR SsidIe = IE_SSID, DsIe = IE_DS_PARM, IbssIe = IE_IBSS_PARM, SuppIe = IE_SUPP_RATES, + DsLen = 1, IbssLen = 2; + UCHAR ExtRateIe = IE_EXT_SUPP_RATES, ExtRatesLen; + UCHAR ErpIe[3] = {IE_ERP, 1, 0x04}; + MACHDR BcnHdr; + USHORT CapabilityInfo; + LARGE_INTEGER FakeTimestamp; + ULONG FrameLen; + PTXD_STRUC pTxD = (PTXD_STRUC)pAd->BeaconRing.va_addr; + CHAR *pBeaconFrame = (CHAR *)pAd->BeaconRing.va_data_addr; + UCHAR SupportedRatesLen; + UCHAR SupportedRates[MAX_LEN_OF_SUPPORTED_RATES]; + BOOLEAN Privacy; + + // 2003-12-10 802.11g WIFI spec disallow OFDM rates in 802.11g ADHOC mode + // make sure 1,2,5.5,11 are the firt 4 rates in PortCfg.SupportedRates[] array + if ((pAd->PortCfg.PhyMode == PHY_11BG_MIXED) && (pAd->PortCfg.AdhocMode == 0)) + { + int i; + SupportedRatesLen=0; + for (i=0;iPortCfg.SupportedRatesLen;i++) + { + switch (pAd->PortCfg.SupportedRates[i] & 0x7f) + { + case 2: + case 4: + case 11: + case 22: + SupportedRates[SupportedRatesLen] = pAd->PortCfg.SupportedRates[i]; + SupportedRatesLen ++; + break; + default: + break; + } + } + // error handling - should never happen + if (SupportedRatesLen != 4) + { + SupportedRatesLen = 4; + SupportedRates[0] = 0x82; + SupportedRates[1] = 0x84; + SupportedRates[2] = 0x8b; + SupportedRates[3] = 0x96; + } + } + else + { + SupportedRatesLen = pAd->PortCfg.SupportedRatesLen; + memcpy(SupportedRates, pAd->PortCfg.SupportedRates, SupportedRatesLen); + } + + pAd->PortCfg.AtimWin = 0; // ?????? + + // compose IBSS beacon frame + MgtMacHeaderInit(pAd, &BcnHdr, SUBTYPE_BEACON, 0, &pAd->PortCfg.Broadcast, &pAd->PortCfg.Bssid); + Privacy = (pAd->PortCfg.WepStatus == Ndis802_11Encryption1Enabled) || + (pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) || + (pAd->PortCfg.WepStatus == Ndis802_11Encryption3Enabled); + CapabilityInfo = CAP_GENERATE(0, 1, 0, 0, Privacy, (pAd->PortCfg.WindowsTxPreamble == Rt802_11PreambleShort)); + if (SupportedRatesLen <= 8) + { + MakeOutgoingFrame(pBeaconFrame, &FrameLen, + MAC_HDR_LEN, &BcnHdr, + TIMESTAMP_LEN, &FakeTimestamp, + 2, &pAd->PortCfg.BeaconPeriod, + 2, &CapabilityInfo, + 1, &SsidIe, + 1, &pAd->PortCfg.SsidLen, + pAd->PortCfg.SsidLen, pAd->PortCfg.Ssid, + 1, &SuppIe, + 1, &SupportedRatesLen, + SupportedRatesLen, SupportedRates, + 1, &DsIe, + 1, &DsLen, + 1, &pAd->PortCfg.Channel, + 1, &IbssIe, + 1, &IbssLen, + 2, &pAd->PortCfg.AtimWin, + END_OF_ARGS); + } + else + { + ExtRatesLen = SupportedRatesLen - 8; + SupportedRatesLen = 8; + MakeOutgoingFrame(pBeaconFrame, &FrameLen, + MAC_HDR_LEN, &BcnHdr, + TIMESTAMP_LEN, &FakeTimestamp, + 2, &pAd->PortCfg.BeaconPeriod, + 2, &CapabilityInfo, + 1, &SsidIe, + 1, &pAd->PortCfg.SsidLen, + pAd->PortCfg.SsidLen, pAd->PortCfg.Ssid, + 1, &SuppIe, + 1, &SupportedRatesLen, + SupportedRatesLen, SupportedRates, + 1, &DsIe, + 1, &DsLen, + 1, &pAd->PortCfg.Channel, + 1, &IbssIe, + 1, &IbssLen, + 2, &pAd->PortCfg.AtimWin, + 3, ErpIe, + 1, &ExtRateIe, + 1, &ExtRatesLen, + ExtRatesLen, &SupportedRates[SupportedRatesLen], + END_OF_ARGS); + } + // If adhoc secruity is set for WPA-None, append the cipher suite IE + if (pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPANone) + { + ULONG tmp; + UCHAR WpaIe = IE_WPA; + + if (pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) // Tkip + { + MakeOutgoingFrame(pBeaconFrame + FrameLen, &tmp, + 1, &WpaIe, + 1, &CipherSuiteWpaNoneTkipLen, + CipherSuiteWpaNoneTkipLen, &CipherSuiteWpaNoneTkip[0], + END_OF_ARGS); + FrameLen += tmp; + } + else if (pAd->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) // Aes + { + MakeOutgoingFrame(pBeaconFrame + FrameLen, &tmp, + 1, &WpaIe, + 1, &CipherSuiteWpaNoneAesLen, + CipherSuiteWpaNoneAesLen, &CipherSuiteWpaNoneAes[0], + END_OF_ARGS); + FrameLen += tmp; + } + } +#ifdef BIG_ENDIAN + RTMPFrameEndianChange(pAd, pBeaconFrame, DIR_WRITE, FALSE); +#endif + + RTMPWriteTxDescriptor(pTxD, FALSE, CIPHER_NONE, FALSE, FALSE, TRUE, SHORT_RETRY, IFS_NEW_BACKOFF, + pAd->PortCfg.MlmeRate, 4, FrameLen, pAd->PortCfg.TxPreambleInUsed, 0); + + DBGPRINT(RT_DEBUG_TRACE, "MakeIbssBeacon (len=%d)\n", FrameLen); + return FrameLen; +} + + --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/wpa.h +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/wpa.h @@ -1,158 +1,158 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: wpa.h - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * MarkW 8th Dec 04 Baseline code - ***************************************************************************/ - -#ifndef __WPA_H__ -#define __WPA_H__ - -//Messages for the wpa state machine, -#define WPA_MACHINE_BASE 21 -#define EAP_MSG_TYPE_EAPPacket 21 -#define EAP_MSG_TYPE_EAPOLStart 22 -#define EAP_MSG_TYPE_EAPOLLogoff 23 -#define EAP_MSG_TYPE_EAPOLKey 24 -#define EAP_MSG_TYPE_EAPOLASFAlert 25 -#define MAX_WPA_PSK_MSG 5 - -// WpaPsk EAPOL Key descripter frame format related length -#define LEN_KEY_DESC_NONCE 32 -#define LEN_KEY_DESC_IV 16 -#define LEN_KEY_DESC_RSC 8 -#define LEN_KEY_DESC_ID 8 -#define LEN_KEY_DESC_REPLAY 8 -#define LEN_KEY_DESC_MIC 16 - -//EPA VERSION -#define EAPOL_VER 1 -#define DESC_TYPE_TKIP 1 -#define DESC_TYPE_AES 2 -#define RSN_KEY_DESC 0xfe - -#define LEN_MASTER_KEY 32 - -// EAPOL EK, MK -#define LEN_EAP_EK 16 -#define LEN_EAP_MICK 16 -#define LEN_EAP_KEY ((LEN_EAP_EK)+(LEN_EAP_MICK)) -// TKIP key related -#define LEN_TKIP_EK 16 -#define LEN_TKIP_RXMICK 8 -#define LEN_TKIP_TXMICK 8 -#define LEN_AES_EK 16 -#define LEN_AES_KEY LEN_AES_EK -#define LEN_TKIP_KEY ((LEN_TKIP_EK)+(LEN_TKIP_RXMICK)+(LEN_TKIP_TXMICK)) -#define TKIP_AP_TXMICK_OFFSET ((LEN_EAP_KEY)+(LEN_TKIP_EK)) -#define TKIP_AP_RXMICK_OFFSET (TKIP_AP_TXMICK_OFFSET+LEN_TKIP_TXMICK) -#define TKIP_GTK_LENGTH ((LEN_TKIP_EK)+(LEN_TKIP_RXMICK)+(LEN_TKIP_TXMICK)) -#define LEN_PTK ((LEN_EAP_KEY)+(LEN_TKIP_KEY)) -#define MAX_LEN_OF_RSNIE 48 - -//EAP Packet Type -#define EAPPacket 0 -#define EAPOLStart 1 -#define EAPOLLogoff 2 -#define EAPOLKey 3 -#define EAPOLASFAlert 4 -#define EAPTtypeMax 5 - -#define EAPOL_MSG_INVALID 0 -#define EAPOL_PAIR_MSG_1 1 -#define EAPOL_PAIR_MSG_3 2 -#define EAPOL_GROUP_MSG_1 3 - -// EAPOL Key Information definition within Key descriptor format -typedef struct PACKED _KEY_INFO -{ -#ifdef BIG_ENDIAN - UCHAR KeyAck:1; - UCHAR Install:1; - UCHAR KeyIndex:2; - UCHAR KeyType:1; - UCHAR KeyDescVer:3; - UCHAR Rsvd:3; - UCHAR DL:1; - UCHAR Request:1; - UCHAR Error:1; - UCHAR Secure:1; - UCHAR KeyMic:1; -#else - UCHAR KeyMic:1; - UCHAR Secure:1; - UCHAR Error:1; - UCHAR Request:1; - UCHAR DL:1; - UCHAR Rsvd:3; - UCHAR KeyDescVer:3; - UCHAR KeyType:1; - UCHAR KeyIndex:2; - UCHAR Install:1; - UCHAR KeyAck:1; -#endif -} KEY_INFO, *PKEY_INFO; - -// EAPOL Key descriptor format -typedef struct PACKED _KEY_DESCRIPTER -{ - UCHAR Type; - KEY_INFO KeyInfo; - UCHAR KeyLength[2]; - UCHAR ReplayCounter[LEN_KEY_DESC_REPLAY]; - UCHAR KeyNonce[LEN_KEY_DESC_NONCE]; - UCHAR KeyIv[LEN_KEY_DESC_IV]; - UCHAR KeyRsc[LEN_KEY_DESC_RSC]; - UCHAR KeyId[LEN_KEY_DESC_ID]; - UCHAR KeyMic[LEN_KEY_DESC_MIC]; - UCHAR KeyDataLen[2]; - UCHAR KeyData[MAX_LEN_OF_RSNIE]; -} KEY_DESCRIPTER, *PKEY_DESCRIPTER; - -typedef struct PACKED _EAPOL_PACKET -{ - UCHAR Version; - UCHAR Type; - UCHAR Len[2]; - KEY_DESCRIPTER KeyDesc; -} EAPOL_PACKET, *PEAPOL_PACKET; - -// For supplicant state machine states. 802.11i Draft 4.1, p. 97 -// We simplified it -typedef enum _WpaState -{ - SS_NOTUSE, // 0 - SS_START, // 1 - SS_WAIT_MSG_3, // 2 - SS_WAIT_GROUP, // 3 - SS_FINISH, // 4 - SS_KEYUPDATE, // 5 -} WPA_STATE; - -#endif +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: wpa.h + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * MarkW 8th Dec 04 Baseline code + ***************************************************************************/ + +#ifndef __WPA_H__ +#define __WPA_H__ + +//Messages for the wpa state machine, +#define WPA_MACHINE_BASE 21 +#define EAP_MSG_TYPE_EAPPacket 21 +#define EAP_MSG_TYPE_EAPOLStart 22 +#define EAP_MSG_TYPE_EAPOLLogoff 23 +#define EAP_MSG_TYPE_EAPOLKey 24 +#define EAP_MSG_TYPE_EAPOLASFAlert 25 +#define MAX_WPA_PSK_MSG 5 + +// WpaPsk EAPOL Key descripter frame format related length +#define LEN_KEY_DESC_NONCE 32 +#define LEN_KEY_DESC_IV 16 +#define LEN_KEY_DESC_RSC 8 +#define LEN_KEY_DESC_ID 8 +#define LEN_KEY_DESC_REPLAY 8 +#define LEN_KEY_DESC_MIC 16 + +//EPA VERSION +#define EAPOL_VER 1 +#define DESC_TYPE_TKIP 1 +#define DESC_TYPE_AES 2 +#define RSN_KEY_DESC 0xfe + +#define LEN_MASTER_KEY 32 + +// EAPOL EK, MK +#define LEN_EAP_EK 16 +#define LEN_EAP_MICK 16 +#define LEN_EAP_KEY ((LEN_EAP_EK)+(LEN_EAP_MICK)) +// TKIP key related +#define LEN_TKIP_EK 16 +#define LEN_TKIP_RXMICK 8 +#define LEN_TKIP_TXMICK 8 +#define LEN_AES_EK 16 +#define LEN_AES_KEY LEN_AES_EK +#define LEN_TKIP_KEY ((LEN_TKIP_EK)+(LEN_TKIP_RXMICK)+(LEN_TKIP_TXMICK)) +#define TKIP_AP_TXMICK_OFFSET ((LEN_EAP_KEY)+(LEN_TKIP_EK)) +#define TKIP_AP_RXMICK_OFFSET (TKIP_AP_TXMICK_OFFSET+LEN_TKIP_TXMICK) +#define TKIP_GTK_LENGTH ((LEN_TKIP_EK)+(LEN_TKIP_RXMICK)+(LEN_TKIP_TXMICK)) +#define LEN_PTK ((LEN_EAP_KEY)+(LEN_TKIP_KEY)) +#define MAX_LEN_OF_RSNIE 48 + +//EAP Packet Type +#define EAPPacket 0 +#define EAPOLStart 1 +#define EAPOLLogoff 2 +#define EAPOLKey 3 +#define EAPOLASFAlert 4 +#define EAPTtypeMax 5 + +#define EAPOL_MSG_INVALID 0 +#define EAPOL_PAIR_MSG_1 1 +#define EAPOL_PAIR_MSG_3 2 +#define EAPOL_GROUP_MSG_1 3 + +// EAPOL Key Information definition within Key descriptor format +typedef struct PACKED _KEY_INFO +{ +#ifdef BIG_ENDIAN + UCHAR KeyAck:1; + UCHAR Install:1; + UCHAR KeyIndex:2; + UCHAR KeyType:1; + UCHAR KeyDescVer:3; + UCHAR Rsvd:3; + UCHAR DL:1; + UCHAR Request:1; + UCHAR Error:1; + UCHAR Secure:1; + UCHAR KeyMic:1; +#else + UCHAR KeyMic:1; + UCHAR Secure:1; + UCHAR Error:1; + UCHAR Request:1; + UCHAR DL:1; + UCHAR Rsvd:3; + UCHAR KeyDescVer:3; + UCHAR KeyType:1; + UCHAR KeyIndex:2; + UCHAR Install:1; + UCHAR KeyAck:1; +#endif +} KEY_INFO, *PKEY_INFO; + +// EAPOL Key descriptor format +typedef struct PACKED _KEY_DESCRIPTER +{ + UCHAR Type; + KEY_INFO KeyInfo; + UCHAR KeyLength[2]; + UCHAR ReplayCounter[LEN_KEY_DESC_REPLAY]; + UCHAR KeyNonce[LEN_KEY_DESC_NONCE]; + UCHAR KeyIv[LEN_KEY_DESC_IV]; + UCHAR KeyRsc[LEN_KEY_DESC_RSC]; + UCHAR KeyId[LEN_KEY_DESC_ID]; + UCHAR KeyMic[LEN_KEY_DESC_MIC]; + UCHAR KeyDataLen[2]; + UCHAR KeyData[MAX_LEN_OF_RSNIE]; +} KEY_DESCRIPTER, *PKEY_DESCRIPTER; + +typedef struct PACKED _EAPOL_PACKET +{ + UCHAR Version; + UCHAR Type; + UCHAR Len[2]; + KEY_DESCRIPTER KeyDesc; +} EAPOL_PACKET, *PEAPOL_PACKET; + +// For supplicant state machine states. 802.11i Draft 4.1, p. 97 +// We simplified it +typedef enum _WpaState +{ + SS_NOTUSE, // 0 + SS_START, // 1 + SS_WAIT_MSG_3, // 2 + SS_WAIT_GROUP, // 3 + SS_FINISH, // 4 + SS_KEYUPDATE, // 5 +} WPA_STATE; + +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/mlme.h +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/mlme.h @@ -1,502 +1,504 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: mlme.h - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * John 28th Aug 03 Initial code - * MarkW 8th Dec 04 Baseline code - ***************************************************************************/ - -#ifndef __MLME_H__ -#define __MLME_H__ - -#include "oid.h" - -// maximum supported capability information - -// ESS, IBSS, Privacy, Short Preamble, Short Slot -#define SUPPORTED_CAPABILITY_INFO 0x0433 - -#define END_OF_ARGS -1 -#define LFSR_MASK 0x80000057 -#define TBTT_PRELOAD_TIME 384 // usec. LomgPreamble + 24-byte at 1Mbps -#define MLME_TASK_EXEC_INTV 1000 // 1 sec - -#define BEACON_LOST_TIME (4*HZ) // 2048 msec = 2 sec - -//#define AUTH_KEY_TIMEOUT 500 // unit: msec -//#define AUTH_OPEN_TIMEOUT 200 // unit: msec -#define AUTH_TIMEOUT 300 // unit: msec -#define ASSOC_TIMEOUT 300 // unit: msec -#define JOIN_TIMEOUT 2000 // unit: msec -#define MIN_CHANNEL_TIME 110 // unit: msec, for dual band scan -#define MAX_CHANNEL_TIME 140 // unit: msec, for single band scan -#define ACTIVE_SCAN_TIME 30 // Active scan waiting for probe response time -#define CW_MIN_IN_BITS 3 // actual CwMin = 2^CW_MIN_IN_BITS - 1 = 7 -#define CW_MAX_IN_BITS 8 // actual CwMax = 2^CW_MAX_IN_BITS - 1 = 255 - -#define RSSI_TO_DBM_OFFSET 120 // for RT2530 RSSI-115 = dBm -#define RSSI_FOR_MID_TX_POWER 55 // -55 db is considered mid-distance -#define RSSI_FOR_LOW_TX_POWER 45 // -45 db is considered very short distance and - // eligible to use a lower TX power -#define RSSI_FOR_LOWEST_TX_POWER 30 -#define MID_TX_POWER_DELTA 0 // -3 db from full TX power upon mid-distance to AP -#define LOW_TX_POWER_DELTA 3 // -8 db from full TX power upon very short distance -#define LOWEST_TX_POWER_DELTA 6 // -12 db from full TX power upon shortest distance - -#define RSSI_TRIGGERED_UPON_BELOW_THRESHOLD 0 -#define RSSI_TRIGGERED_UPON_EXCCEED_THRESHOLD 1 -#define RSSI_THRESHOLD_FOR_ROAMING 25 -#define RSSI_DELTA 5 - -// Channel Quality Indication -//#define CQI_GOOD_THRESHOLD 70 // >= this threshold means channel quality GOOD -//#define CQI_FAIR_THRESHOLD 50 // >= this threshold means channel quality FAIR -//#define CQI_POOR_THRESHOLD 30 // >= this threshold means channel quality POOR - // < this threshold means channel quality really BAD, link down -#define CQI_IS_GOOD(cqi) ((cqi) >= 50) -#define CQI_IS_FAIR(cqi) (((cqi) >= 20) && ((cqi) < 50)) // (((cqi) >= 50) && ((cqi) < 70)) -#define CQI_IS_POOR(cqi) (((cqi) >= 5) && ((cqi) < 20)) // (((cqi) >= 25) && ((cqi) < 50)) -#define CQI_IS_BAD(cqi) ((cqi) < 5) // ((cqi) < 25) - -// weighting factor to calculate Channel quality, total should be 100% -#define RSSI_WEIGHTING 40 -#define TX_WEIGHTING 40 -#define RX_WEIGHTING 20 - -// prime number closest to 256 -//#define HASH_TABLE_SIZE 191 //191 is another prime -// Only allows 32 entries in the table -#define MAC_TABLE_MAX_CAPACITY 32 - -#define MAC_ENTRY_NOT_USED 0xff -#define CONTENT_NOT_AVAIL 0xaa - -// 10 minute of age out -#define MAC_TABLE_AGE_OUT_TIME 0xffffff - -#define MAC_ADDR_HASH_ERROR 0xfffffffe -#define MAC_TABLE_UNKNOWN_INDEX 0xff -#define MAC_TABLE_ADDR_NOT_IN 0xfffffffd - -#define PEER_KEY_NOT_USED 0 -#define PEER_KEY_64_BIT 64 -#define PEER_KEY_128_BIT 128 - -#define PEER_KEY_64BIT_LEN 8 -#define PEER_KEY_128BIT_LEN 16 - -#define MAX_LEN_OF_BSS_TABLE 64 -#define BSS_NOT_FOUND 0xFFFFFFFF - -#define MAX_LEN_OF_MLME_QUEUE 10 - -//! assoc state-machine states -#define ASSOC_IDLE 0 -#define ASSOC_WAIT_RSP 1 -#define REASSOC_WAIT_RSP 2 -#define DISASSOC_WAIT_RSP 3 -#define MAX_ASSOC_STATE 4 - -#define ASSOC_FUNC_SIZE 44 // 4-state * 12-event - -//authentication state machine -#define AUTH_REQ_IDLE 0 -#define AUTH_WAIT_SEQ2 1 -#define AUTH_WAIT_SEQ4 2 -#define MAX_AUTH_STATE 3 - -#define AUTH_FUNC_SIZE 15 // 3-state * 5-event - -#define AUTH_RSP_IDLE 0 -#define AUTH_RSP_WAIT_CHAL 1 -#define MAX_AUTH_RSP_STATE 2 - -#define AUTH_RSP_FUNC_SIZE 6 // 2-state * 3-event - -// SYNC state machine -#define SYNC_IDLE 0 // merge NO_BSS,IBSS_IDLE,IBSS_ACTIVE and BSS in to 1 state -#define JOIN_WAIT_BEACON 1 -#define SCAN_LISTEN 2 -#define MAX_SYNC_STATE 3 - -#define SYNC_FUNC_SIZE 30 // 3-state * 10-event - -#define SCAN_PASSIVE 18 -#define SCAN_ACTIVE 19 - -//WPA State machine -#define WPA_PSK_IDLE 0 -#define MAX_WPA_PSK_STATE 1 -#define WPA_PSK_FUNC_SIZE 5 - -// Control state machine -#define CNTL_IDLE 100 -#define CNTL_WAIT_DISASSOC 101 -#define CNTL_WAIT_JOIN 102 -#define CNTL_WAIT_REASSOC 103 -#define CNTL_WAIT_START 104 -#define CNTL_WAIT_AUTH 105 -#define CNTL_WAIT_ASSOC 106 -#define CNTL_WAIT_AUTH2 107 -#define CNTL_WAIT_OID_LIST_SCAN 108 -#define CNTL_WAIT_OID_DISASSOC 109 - -//#define BSS_TABLE_EMPTY(x) ((x).BssNr == 0) -#define CapabilityInfoGen(Ess,Ibss,Cfp,CfpReq,Priv) ((Ess) ? 0x0001 : 0x0000) | ((Ibss) ? 0x0002 : 0x0000) | ((Cfp) ? 0x0004 : 0x0000) | ((CfpReq) ? 0x0008 : 0x0000) | ((Priv) ? 0x0010: 0x0000) - -#define MAC_ADDR_IS_GROUP(Addr) ((((Addr).Octet[0]) & 0x01) != 0) -#define MAC_ADDR_HASH(Addr) ((Addr).Octet[0] ^ (Addr).Octet[1] ^ (Addr).Octet[2] ^ (Addr).Octet[3] ^ (Addr).Octet[4] ^ (Addr).Octet[5]) -#define MAC_ADDR_HASH_INDEX(Addr) (MAC_ADDR_HASH(Addr) % HASH_TABLE_SIZE) -#define MAC_ADDR_EQUAL(pAddr1,pAddr2) (memcmp((pAddr1), (pAddr2), ETH_ALEN) == 0) -#define COPY_MAC_ADDR(Addr1, Addr2) memcpy((Addr1), (Addr2), ETH_ALEN) -//#define MAKE_BROADCAST_ADDR(Addr) memset(&Addr, 0xff, ETH_ALEN) - -// LED Control -// assoiation ON. one LED ON. another blinking when TX, OFF when idle -#define ASIC_LED_ACT_ON(pAdapter) RTMP_IO_WRITE32(pAdapter, LEDCSR, 0x0003461E) -// no association, both LED off -#define ASIC_LED_ACT_OFF(pAdapter) RTMP_IO_WRITE32(pAdapter, LEDCSR, 0x0000461E) -//#define ASIC_LED_LINK_UP(pAdapter) RTMP_IO_WRITE32(pAdapter, LEDCSR, 0x00011E46) -//#define ASIC_LED_LINK_DOWN(pAdapter) RTMP_IO_WRITE32(pAdapter, LEDCSR, 0x00001E46) - -#define CAP_IS_ESS_ON(x) (((x) & 0x0001) != 0) -#define CAP_IS_IBSS_ON(x) (((x) & 0x0002) != 0) -#define CAP_IS_CF_POLLABLE_ON(x) (((x) & 0x0004) != 0) -#define CAP_IS_CF_POLL_REQ_ON(x) (((x) & 0x0008) != 0) -#define CAP_IS_PRIVACY_ON(x) (((x) & 0x0010) != 0) - -// 802.11G capability features -#define CAP_IS_SHORT_PREAMBLE_ON(x) (((x) & 0x0020) != 0) -#define CAP_IS_PBCC_ON(x) (((x) & 0x0040) != 0) -#define CAP_IS_AGILITY_ON(x) (((x) & 0x0080) != 0) -#define CAP_IS_EXT_RATE_PBCC_ON(x) (((x) & 0x0100) != 0) -//#define CAP_IS_CCK_OFDM_ON(x) (((x) & 0x0200) != 0) -#define CAP_IS_QOS(x) (((x) & 0x0200) != 0) // defined in 802.11e d4.3 -#define CAP_IS_SHORT_SLOT_TIME(x) (((x) & 0x0400) != 0) -#define CAP_IS_APSD(x) (((x) & 0x0800) != 0) // defined in 802.11e d4.3 -#define CAP_IS_Q_ACK(x) (((x) & 0x1000) != 0) // defined in 802.11e d4.3 -#define CAP_IS_DSSS_OFDM(x) (((x) & 0x2000) != 0) -#define CAP_IS_BLOCK_ACK(x) (((x) & 0x4000) != 0) // defined in 802.11e d4.3 - -#define CAP_GENERATE(ess,ibss,cfp,cfpreq,priv,prea) ((ess) ? 0x0001 : 0x0000) | ((ibss) ? 0x0002 : 0x0000) | ((cfp) ? 0x0004 : 0x0000) | ((cfpreq) ? 0x0008 : 0x0000) | ((priv) ? 0x0010 : 0x0000) | ((prea) ? 0x0020 : 0x0000) - -#define ERP_IS_NON_ERP_PRESENT(x) (((x) & 0x01) != 0) // define in 802.11g -#define ERP_IS_USE_PROTECTION(x) (((x) & 0x02) != 0) // define in 802.11g -#define ERP_IS_USE_BARKER_PREAMBLE(x) (((x) & 0x04) != 0) // define in 802.11g - -#define TX_FER_TOO_HIGH(TxFER) ((TxFER) > 15) // consider rate down if FER>15% -#define TX_FER_VERY_LOW(TxFER) ((TxFER) < 7) // consider rate up if FER<7% -#define FAIR_FER 10 // any value between TOO_HIGH and VERY_LOW -#define DRS_TX_QUALITY_WORST_BOUND 3 -#define DRS_PENALTY 8 - -// Ralink timer control block -typedef struct _RALINK_TIMER_STRUCT { - struct timer_list TimerObj; // Ndis Timer object - ULONG TimerValue; // Timer value in milliseconds - BOOLEAN State; // True if timer cancelled - BOOLEAN Repeat; // True if periodic timer -} RALINK_TIMER_STRUCT, *PRALINK_TIMER_STRUCT; - -// Mac Address data structure -typedef struct PACKED _MACADDR { - UCHAR Octet[ETH_ALEN]; -} MACADDR, *PMACADDR; - -// Mac Frame Header -typedef struct PACKED _MACHDR { - // 2-byte Frame Control. NOTE: bit field assigned from LSB first -#ifdef BIG_ENDIAN - USHORT Order:1; - USHORT Wep:1; - USHORT MoreData:1; - USHORT PwrMgmt:1; - USHORT Retry:1; - USHORT MoreFrag:1; - USHORT Frds:1; - USHORT Tods:1; - USHORT SubType:4; - USHORT Type:2; - USHORT Ver:2; -#else - USHORT Ver:2; - USHORT Type:2; - USHORT SubType:4; - USHORT Tods:1; - USHORT Frds:1; - USHORT MoreFrag:1; - USHORT Retry:1; - USHORT PwrMgmt:1; - USHORT MoreData:1; - USHORT Wep:1; - USHORT Order:1; -#endif - - USHORT Duration; - MACADDR Addr1; - MACADDR Addr2; - MACADDR Addr3; - -#ifdef BIG_ENDIAN - USHORT Seq:12; - USHORT Frag:4; -#else - USHORT Frag:4; - USHORT Seq:12; -#endif -} MACHDR, *PMACHDR; - -typedef struct PACKED _MACFRAME { - MACHDR Hdr; - CHAR Octet[1]; -} MACFRAME, *PMACFRAME; - -typedef struct PACKED _PSPOLL_FRAME { - USHORT Ver:2; - USHORT Type:2; - USHORT SubType:4; - USHORT Tods:1; - USHORT Frds:1; - USHORT MoreFrag:1; - USHORT Retry:1; - USHORT PwrMgmt:1; - USHORT MoreData:1; - USHORT Wep:1; - USHORT Order:1; - - USHORT Aid; - MACADDR Bssid; - MACADDR Ta; -} PSPOLL_FRAME; - -// -// Contention-free parameter (without ID and Length) -// -typedef struct PACKED _CF_PARM { - UCHAR CfpCount; - UCHAR CfpPeriod; - USHORT CfpMaxDuration; - USHORT CfpDurRemaining; -} CF_PARM, *PCF_PARM; - - -typedef struct PACKED _BSS_ENTRY{ - MACADDR Bssid; - UCHAR Channel; - UCHAR BssType; - USHORT AtimWin; - USHORT BeaconPeriod; - - UCHAR Rates[MAX_LEN_OF_SUPPORTED_RATES]; - UCHAR RatesLen; - BOOLEAN ExtendedRateIeExist; // records if this AP use EXTENDED_SUPPORTED_RATES IE - UCHAR Rssi; - UCHAR Privacy; // Indicate security function ON/OFF. Don't mess up with auth mode. - UCHAR Hidden; - - USHORT DtimPeriod; - USHORT CapabilityInfo; - - USHORT CfpCount; - USHORT CfpPeriod; - USHORT CfpMaxDuration; - USHORT CfpDurRemaining; - UCHAR SsidLen; - CHAR Ssid[MAX_LEN_OF_SSID]; - - ULONG LastBeaconRxTime; // OS's timestamp - - // New for microsoft WPA support - NDIS_802_11_FIXED_IEs FixIEs; - NDIS_802_11_WEP_STATUS WepStatus; - UCHAR VarIELen; // Length of next VIE include EID & Length - UCHAR VarIEs[MAX_VIE_LEN]; -} BSS_ENTRY, *PBSS_ENTRY; - -typedef struct { - UCHAR BssNr; - BSS_ENTRY BssEntry[MAX_LEN_OF_BSS_TABLE]; -} BSS_TABLE, *PBSS_TABLE; - -typedef struct PACKED _MLME_QUEUE_ELEM { - ULONG Machine; - ULONG MsgType; - ULONG MsgLen; - LARGE_INTEGER TimeStamp; - UCHAR Msg[MAX_LEN_OF_MLME_BUFFER]; - UCHAR Rssi; - UCHAR Channel; - BOOLEAN Occupied; -} MLME_QUEUE_ELEM, *PMLME_QUEUE_ELEM; - -typedef struct PACKED _MLME_QUEUE { - ULONG Num; - ULONG Head; - ULONG Tail; - spinlock_t Lock; - MLME_QUEUE_ELEM Entry[MAX_LEN_OF_MLME_QUEUE]; -} MLME_QUEUE, *PMLME_QUEUE; - -typedef VOID (*STATE_MACHINE_FUNC)(VOID *Adaptor, MLME_QUEUE_ELEM *Elem); - -typedef struct PACKED _STATE_MACHINE { - ULONG Base; - ULONG NrState; - ULONG NrMsg; - ULONG CurrState; - STATE_MACHINE_FUNC *TransFunc; -} STATE_MACHINE, *PSTATE_MACHINE; - -// CNTL State Machine Aux data structure -typedef struct _CNTL_AUX { - UCHAR Ssid[MAX_LEN_OF_SSID]; - UCHAR SsidLen; - MACADDR Bssid; - BSS_TABLE SsidBssTab; // AP list for the same SSID - BSS_TABLE RoamTab; // AP list eligible for roaming - ULONG BssIdx; - ULONG RoamIdx; - BOOLEAN CurrReqIsFromNdis; // TRUE - then we should call NdisMSetInformationComplete() - // FALSE - req is from driver itself. - // no NdisMSetInformationComplete() is required -} CNTL_AUX, *PCNTL_AUX; - -// ASSOC State Machine Aux data structure -typedef struct _ASSOC_AUX { - MACADDR Addr; - USHORT CapabilityInfo; - USHORT ListenIntv; - CHAR Ssid[MAX_LEN_OF_SSID]; - UCHAR SsidLen; - RALINK_TIMER_STRUCT AssocTimer, ReassocTimer, DisassocTimer; -} ASSOC_AUX, *PASSOC_AUX; - -// AUTH State Machine Aux data structure -typedef struct _AUTH_AUX { - MACADDR Addr; - USHORT Alg; - RALINK_TIMER_STRUCT AuthTimer; -} AUTH_AUX, *PAUTH_AUX; - -// AUTH-RSP State Machine Aux data structure -typedef struct PACKED _AUTH_RSP_AUX { - MACADDR Addr; - USHORT Alg; - CHAR Challenge[CIPHER_TEXT_LEN]; - RALINK_TIMER_STRUCT AuthRspTimer; -} AUTH_RSP_AUX, *PAUTH_RSP_AUX; - -// SYNC State Machine Aux data structure -typedef struct _SYNC_AUX { - MACADDR Addr; - MACADDR Bssid; - UCHAR BssType; - UCHAR SsidLen; - CHAR Ssid[MAX_LEN_OF_SSID]; - UCHAR ScanType; - UCHAR Channel; - RALINK_TIMER_STRUCT BeaconTimer, ScanTimer; -} SYNC_AUX; - - // assoc struct is equal to reassoc -typedef struct PACKED _MLME_ASSOC_REQ_STRUCT{ - MACADDR Addr; - USHORT CapabilityInfo; - USHORT ListenIntv; - ULONG Timeout; -} MLME_ASSOC_REQ_STRUCT, *PMLME_ASSOC_REQ_STRUCT, MLME_REASSOC_REQ_STRUCT, *PMLME_REASSOC_REQ_STRUCT; - -typedef struct PACKED _MLME_DISASSOC_REQ_STRUCT{ - MACADDR Addr; - USHORT Reason; -} MLME_DISASSOC_REQ_STRUCT, *PMLME_DISASSOC_REQ_STRUCT; - -typedef struct PACKED _MLME_AUTH_REQ_STRUCT { - MACADDR Addr; - USHORT Alg; - ULONG Timeout; -} MLME_AUTH_REQ_STRUCT, *PMLME_AUTH_REQ_STRUCT; - -typedef struct PACKED _MLME_DEAUTH_REQ_STRUCT { - MACADDR Addr; - USHORT Reason; -} MLME_DEAUTH_REQ_STRUCT, *PMLME_DEAUTH_REQ_STRUCT; - -//typedef struct _MLME_AUTH_IND_STRUCT { -// MACADDR Addr; -// USHORT Alg; -//} MLME_AUTH_IND_STRUCT, *PMLME_AUTH_IND_STRUCT; - -//typedef struct _CLS2ERR_STRUCT { -// MACADDR Addr; -//} CLS2ERR_STRUCT, *PCLS2ERR_STRUCT; - -typedef struct PACKED _MLME_JOIN_REQ_STRUCT{ - ULONG BssIdx; -} MLME_JOIN_REQ_STRUCT; - -typedef struct PACKED _MLME_SCAN_REQ_STRUCT { - MACADDR Bssid; - UCHAR BssType; - UCHAR ScanType; - UCHAR SsidLen; - CHAR Ssid[MAX_LEN_OF_SSID]; -} MLME_SCAN_REQ_STRUCT, *PMLME_SCAN_REQ_STRUCT; - -typedef struct PACKED _MLME_START_REQ_STRUCT { - CHAR Ssid[MAX_LEN_OF_SSID]; - UCHAR SsidLen; -} MLME_START_REQ_STRUCT, *PMLME_START_REQ_STRUCT; - -typedef struct PACKED _ARC4_CONTEXT { - UCHAR x, y, State[256], Key[16]; // 128 bits key -} ARC4_CONTEXT, *PARC4_CONTEXT; - -typedef struct PACKED _BEACON_EID_STRUCT { - UCHAR Eid; - UCHAR Len; - CHAR Octet[1]; -} BEACON_EID_STRUCT,*PBEACON_EID_STRUCT; - -// New for WPA cipher suite -typedef struct PACKED _RSN_EID_STRUCT { - UCHAR Eid; - UCHAR Length; - UCHAR Oui[4]; - USHORT Version; - UCHAR Multicast[4]; - USHORT Count; - struct { - UCHAR Oui[4]; - } Unicast[1]; -} RSN_EID_STRUCT, *PRSN_EID_STRUCT; - -extern UCHAR RateIdToMbps[]; -extern USHORT RateIdTo500Kbps[]; - -#endif // MLME_H__ +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: mlme.h + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * John 28th Aug 03 Initial code + * MarkW 8th Dec 04 Baseline code + ***************************************************************************/ + +#ifndef __MLME_H__ +#define __MLME_H__ + +#include "oid.h" + +// maximum supported capability information - +// ESS, IBSS, Privacy, Short Preamble, Short Slot +#define SUPPORTED_CAPABILITY_INFO 0x0433 + +#define END_OF_ARGS -1 +#define LFSR_MASK 0x80000057 +#define TBTT_PRELOAD_TIME 384 // usec. LomgPreamble + 24-byte at 1Mbps +#define MLME_TASK_EXEC_INTV 1000 // 1 sec + +#define BEACON_LOST_TIME (4*HZ) // 2048 msec = 2 sec + +//#define AUTH_KEY_TIMEOUT 500 // unit: msec +//#define AUTH_OPEN_TIMEOUT 200 // unit: msec +#define AUTH_TIMEOUT 300 // unit: msec +#define ASSOC_TIMEOUT 300 // unit: msec +#define JOIN_TIMEOUT 2000 // unit: msec +#define MIN_CHANNEL_TIME 110 // unit: msec, for dual band scan +#define MAX_CHANNEL_TIME 140 // unit: msec, for single band scan +#define ACTIVE_SCAN_TIME 30 // Active scan waiting for probe response time +#define CW_MIN_IN_BITS 3 // actual CwMin = 2^CW_MIN_IN_BITS - 1 = 7 +#define CW_MAX_IN_BITS 8 // actual CwMax = 2^CW_MAX_IN_BITS - 1 = 255 + +#define RSSI_TO_DBM_OFFSET 120 // for RT2530 RSSI-115 = dBm +#define RSSI_FOR_MID_TX_POWER 55 // -55 db is considered mid-distance +#define RSSI_FOR_LOW_TX_POWER 45 // -45 db is considered very short distance and + // eligible to use a lower TX power +#define RSSI_FOR_LOWEST_TX_POWER 30 +#define MID_TX_POWER_DELTA 0 // -3 db from full TX power upon mid-distance to AP +#define LOW_TX_POWER_DELTA 3 // -8 db from full TX power upon very short distance +#define LOWEST_TX_POWER_DELTA 6 // -12 db from full TX power upon shortest distance + +#define RSSI_TRIGGERED_UPON_BELOW_THRESHOLD 0 +#define RSSI_TRIGGERED_UPON_EXCCEED_THRESHOLD 1 +#define RSSI_THRESHOLD_FOR_ROAMING 25 +#define RSSI_DELTA 5 + +// Channel Quality Indication +//#define CQI_GOOD_THRESHOLD 70 // >= this threshold means channel quality GOOD +//#define CQI_FAIR_THRESHOLD 50 // >= this threshold means channel quality FAIR +//#define CQI_POOR_THRESHOLD 30 // >= this threshold means channel quality POOR + // < this threshold means channel quality really BAD, link down +#define CQI_IS_GOOD(cqi) ((cqi) >= 50) +#define CQI_IS_FAIR(cqi) (((cqi) >= 20) && ((cqi) < 50)) // (((cqi) >= 50) && ((cqi) < 70)) +#define CQI_IS_POOR(cqi) (((cqi) >= 5) && ((cqi) < 20)) // (((cqi) >= 25) && ((cqi) < 50)) +#define CQI_IS_BAD(cqi) ((cqi) < 5) // ((cqi) < 25) + +// weighting factor to calculate Channel quality, total should be 100% +#define RSSI_WEIGHTING 40 +#define TX_WEIGHTING 40 +#define RX_WEIGHTING 20 + +// prime number closest to 256 +//#define HASH_TABLE_SIZE 191 //191 is another prime +// Only allows 32 entries in the table +#define MAC_TABLE_MAX_CAPACITY 32 + +#define MAC_ENTRY_NOT_USED 0xff +#define CONTENT_NOT_AVAIL 0xaa + +// 10 minute of age out +#define MAC_TABLE_AGE_OUT_TIME 0xffffff + +#define MAC_ADDR_HASH_ERROR 0xfffffffe +#define MAC_TABLE_UNKNOWN_INDEX 0xff +#define MAC_TABLE_ADDR_NOT_IN 0xfffffffd + +#define PEER_KEY_NOT_USED 0 +#define PEER_KEY_64_BIT 64 +#define PEER_KEY_128_BIT 128 + +#define PEER_KEY_64BIT_LEN 8 +#define PEER_KEY_128BIT_LEN 16 + +#define MAX_LEN_OF_BSS_TABLE 64 +#define BSS_NOT_FOUND 0xFFFFFFFF + +#define MAX_LEN_OF_MLME_QUEUE 10 + +//! assoc state-machine states +#define ASSOC_IDLE 0 +#define ASSOC_WAIT_RSP 1 +#define REASSOC_WAIT_RSP 2 +#define DISASSOC_WAIT_RSP 3 +#define MAX_ASSOC_STATE 4 + +#define ASSOC_FUNC_SIZE 44 // 4-state * 12-event + +//authentication state machine +#define AUTH_REQ_IDLE 0 +#define AUTH_WAIT_SEQ2 1 +#define AUTH_WAIT_SEQ4 2 +#define MAX_AUTH_STATE 3 + +#define AUTH_FUNC_SIZE 15 // 3-state * 5-event + +#define AUTH_RSP_IDLE 0 +#define AUTH_RSP_WAIT_CHAL 1 +#define MAX_AUTH_RSP_STATE 2 + +#define AUTH_RSP_FUNC_SIZE 6 // 2-state * 3-event + +// SYNC state machine +#define SYNC_IDLE 0 // merge NO_BSS,IBSS_IDLE,IBSS_ACTIVE and BSS in to 1 state +#define JOIN_WAIT_BEACON 1 +#define SCAN_LISTEN 2 +#define MAX_SYNC_STATE 3 + +#define SYNC_FUNC_SIZE 30 // 3-state * 10-event + +#define SCAN_PASSIVE 18 +#define SCAN_ACTIVE 19 + +//WPA State machine +#define WPA_PSK_IDLE 0 +#define MAX_WPA_PSK_STATE 1 +#define WPA_PSK_FUNC_SIZE 5 + +// Control state machine +#define CNTL_IDLE 100 +#define CNTL_WAIT_DISASSOC 101 +#define CNTL_WAIT_JOIN 102 +#define CNTL_WAIT_REASSOC 103 +#define CNTL_WAIT_START 104 +#define CNTL_WAIT_AUTH 105 +#define CNTL_WAIT_ASSOC 106 +#define CNTL_WAIT_AUTH2 107 +#define CNTL_WAIT_OID_LIST_SCAN 108 +#define CNTL_WAIT_OID_DISASSOC 109 + +//#define BSS_TABLE_EMPTY(x) ((x).BssNr == 0) +#define CapabilityInfoGen(Ess,Ibss,Cfp,CfpReq,Priv) ((Ess) ? 0x0001 : 0x0000) | ((Ibss) ? 0x0002 : 0x0000) | ((Cfp) ? 0x0004 : 0x0000) | ((CfpReq) ? 0x0008 : 0x0000) | ((Priv) ? 0x0010: 0x0000) + +#define MAC_ADDR_IS_GROUP(Addr) ((((Addr).Octet[0]) & 0x01) != 0) +#define MAC_ADDR_HASH(Addr) ((Addr).Octet[0] ^ (Addr).Octet[1] ^ (Addr).Octet[2] ^ (Addr).Octet[3] ^ (Addr).Octet[4] ^ (Addr).Octet[5]) +#define MAC_ADDR_HASH_INDEX(Addr) (MAC_ADDR_HASH(Addr) % HASH_TABLE_SIZE) +#define MAC_ADDR_EQUAL(pAddr1,pAddr2) (memcmp((pAddr1), (pAddr2), ETH_ALEN) == 0) +#define COPY_MAC_ADDR(Addr1, Addr2) memcpy((Addr1), (Addr2), ETH_ALEN) +//#define MAKE_BROADCAST_ADDR(Addr) memset(&Addr, 0xff, ETH_ALEN) + +// LED Control +// assoiation ON. one LED ON. another blinking when TX, OFF when idle +#define ASIC_LED_ACT_ON(pAdapter) RTMP_IO_WRITE32(pAdapter, LEDCSR, 0x0003461E) +// no association, both LED off +#define ASIC_LED_ACT_OFF(pAdapter) RTMP_IO_WRITE32(pAdapter, LEDCSR, 0x0000461E) +//#define ASIC_LED_LINK_UP(pAdapter) RTMP_IO_WRITE32(pAdapter, LEDCSR, 0x00011E46) +//#define ASIC_LED_LINK_DOWN(pAdapter) RTMP_IO_WRITE32(pAdapter, LEDCSR, 0x00001E46) + +#define CAP_IS_ESS_ON(x) (((x) & 0x0001) != 0) +#define CAP_IS_IBSS_ON(x) (((x) & 0x0002) != 0) +#define CAP_IS_CF_POLLABLE_ON(x) (((x) & 0x0004) != 0) +#define CAP_IS_CF_POLL_REQ_ON(x) (((x) & 0x0008) != 0) +#define CAP_IS_PRIVACY_ON(x) (((x) & 0x0010) != 0) + +// 802.11G capability features +#define CAP_IS_SHORT_PREAMBLE_ON(x) (((x) & 0x0020) != 0) +#define CAP_IS_PBCC_ON(x) (((x) & 0x0040) != 0) +#define CAP_IS_AGILITY_ON(x) (((x) & 0x0080) != 0) +#define CAP_IS_EXT_RATE_PBCC_ON(x) (((x) & 0x0100) != 0) +//#define CAP_IS_CCK_OFDM_ON(x) (((x) & 0x0200) != 0) +#define CAP_IS_QOS(x) (((x) & 0x0200) != 0) // defined in 802.11e d4.3 +#define CAP_IS_SHORT_SLOT_TIME(x) (((x) & 0x0400) != 0) +#define CAP_IS_APSD(x) (((x) & 0x0800) != 0) // defined in 802.11e d4.3 +#define CAP_IS_Q_ACK(x) (((x) & 0x1000) != 0) // defined in 802.11e d4.3 +#define CAP_IS_DSSS_OFDM(x) (((x) & 0x2000) != 0) +#define CAP_IS_BLOCK_ACK(x) (((x) & 0x4000) != 0) // defined in 802.11e d4.3 + +#define CAP_GENERATE(ess,ibss,cfp,cfpreq,priv,prea) ((ess) ? 0x0001 : 0x0000) | ((ibss) ? 0x0002 : 0x0000) | ((cfp) ? 0x0004 : 0x0000) | ((cfpreq) ? 0x0008 : 0x0000) | ((priv) ? 0x0010 : 0x0000) | ((prea) ? 0x0020 : 0x0000) + +#define ERP_IS_NON_ERP_PRESENT(x) (((x) & 0x01) != 0) // define in 802.11g +#define ERP_IS_USE_PROTECTION(x) (((x) & 0x02) != 0) // define in 802.11g +#define ERP_IS_USE_BARKER_PREAMBLE(x) (((x) & 0x04) != 0) // define in 802.11g + +#define TX_FER_TOO_HIGH(TxFER) ((TxFER) > 15) // consider rate down if FER>15% +#define TX_FER_VERY_LOW(TxFER) ((TxFER) < 7) // consider rate up if FER<7% +#define FAIR_FER 10 // any value between TOO_HIGH and VERY_LOW +#define DRS_TX_QUALITY_WORST_BOUND 3 +#define DRS_PENALTY 8 + +// Ralink timer control block +typedef struct _RALINK_TIMER_STRUCT { + struct timer_list TimerObj; // Ndis Timer object + ULONG TimerValue; // Timer value in milliseconds + BOOLEAN State; // True if timer cancelled + BOOLEAN Repeat; // True if periodic timer +} RALINK_TIMER_STRUCT, *PRALINK_TIMER_STRUCT; + +// Mac Address data structure +typedef struct PACKED _MACADDR { + UCHAR Octet[ETH_ALEN]; +} MACADDR, *PMACADDR; + +// Mac Frame Header +typedef struct PACKED _MACHDR { + // 2-byte Frame Control. NOTE: bit field assigned from LSB first +#ifdef BIG_ENDIAN + USHORT Order:1; + USHORT Wep:1; + USHORT MoreData:1; + USHORT PwrMgmt:1; + USHORT Retry:1; + USHORT MoreFrag:1; + USHORT Frds:1; + USHORT Tods:1; + USHORT SubType:4; + USHORT Type:2; + USHORT Ver:2; +#else + USHORT Ver:2; + USHORT Type:2; + USHORT SubType:4; + USHORT Tods:1; + USHORT Frds:1; + USHORT MoreFrag:1; + USHORT Retry:1; + USHORT PwrMgmt:1; + USHORT MoreData:1; + USHORT Wep:1; + USHORT Order:1; +#endif + + USHORT Duration; + MACADDR Addr1; + MACADDR Addr2; + MACADDR Addr3; + +#ifdef BIG_ENDIAN + USHORT Seq:12; + USHORT Frag:4; +#else + USHORT Frag:4; + USHORT Seq:12; +#endif +} MACHDR, *PMACHDR; + +typedef struct PACKED _MACFRAME { + MACHDR Hdr; + CHAR Octet[1]; +} MACFRAME, *PMACFRAME; + +typedef struct PACKED _PSPOLL_FRAME { + USHORT Ver:2; + USHORT Type:2; + USHORT SubType:4; + USHORT Tods:1; + USHORT Frds:1; + USHORT MoreFrag:1; + USHORT Retry:1; + USHORT PwrMgmt:1; + USHORT MoreData:1; + USHORT Wep:1; + USHORT Order:1; + + USHORT Aid; + MACADDR Bssid; + MACADDR Ta; +} PSPOLL_FRAME; + +// +// Contention-free parameter (without ID and Length) +// +typedef struct PACKED _CF_PARM { + UCHAR CfpCount; + UCHAR CfpPeriod; + USHORT CfpMaxDuration; + USHORT CfpDurRemaining; +} CF_PARM, *PCF_PARM; + + +typedef struct PACKED _BSS_ENTRY{ + MACADDR Bssid; + UCHAR Channel; + UCHAR BssType; + USHORT AtimWin; + USHORT BeaconPeriod; + + UCHAR Rates[MAX_LEN_OF_SUPPORTED_RATES]; + UCHAR RatesLen; + BOOLEAN ExtendedRateIeExist; // records if this AP use EXTENDED_SUPPORTED_RATES IE + UCHAR Rssi; + UCHAR Noise; + UCHAR Privacy; // Indicate security function ON/OFF. Don't mess up with auth mode. + UCHAR Hidden; + + USHORT DtimPeriod; + USHORT CapabilityInfo; + + USHORT CfpCount; + USHORT CfpPeriod; + USHORT CfpMaxDuration; + USHORT CfpDurRemaining; + UCHAR SsidLen; + CHAR Ssid[MAX_LEN_OF_SSID]; + + ULONG LastBeaconRxTime; // OS's timestamp + + // New for microsoft WPA support + NDIS_802_11_FIXED_IEs FixIEs; + NDIS_802_11_WEP_STATUS WepStatus; + UCHAR VarIELen; // Length of next VIE include EID & Length + UCHAR VarIEs[MAX_VIE_LEN]; +} BSS_ENTRY, *PBSS_ENTRY; + +typedef struct { + UCHAR BssNr; + BSS_ENTRY BssEntry[MAX_LEN_OF_BSS_TABLE]; +} BSS_TABLE, *PBSS_TABLE; + +typedef struct PACKED _MLME_QUEUE_ELEM { + ULONG Machine; + ULONG MsgType; + ULONG MsgLen; + LARGE_INTEGER TimeStamp; + UCHAR Msg[MAX_LEN_OF_MLME_BUFFER]; + UCHAR Rssi; + UCHAR Noise; + UCHAR Channel; + BOOLEAN Occupied; +} MLME_QUEUE_ELEM, *PMLME_QUEUE_ELEM; + +typedef struct PACKED _MLME_QUEUE { + ULONG Num; + ULONG Head; + ULONG Tail; + spinlock_t Lock; + MLME_QUEUE_ELEM Entry[MAX_LEN_OF_MLME_QUEUE]; +} MLME_QUEUE, *PMLME_QUEUE; + +typedef VOID (*STATE_MACHINE_FUNC)(VOID *Adaptor, MLME_QUEUE_ELEM *Elem); + +typedef struct PACKED _STATE_MACHINE { + ULONG Base; + ULONG NrState; + ULONG NrMsg; + ULONG CurrState; + STATE_MACHINE_FUNC *TransFunc; +} STATE_MACHINE, *PSTATE_MACHINE; + +// CNTL State Machine Aux data structure +typedef struct _CNTL_AUX { + UCHAR Ssid[MAX_LEN_OF_SSID]; + UCHAR SsidLen; + MACADDR Bssid; + BSS_TABLE SsidBssTab; // AP list for the same SSID + BSS_TABLE RoamTab; // AP list eligible for roaming + ULONG BssIdx; + ULONG RoamIdx; + BOOLEAN CurrReqIsFromNdis; // TRUE - then we should call NdisMSetInformationComplete() + // FALSE - req is from driver itself. + // no NdisMSetInformationComplete() is required +} CNTL_AUX, *PCNTL_AUX; + +// ASSOC State Machine Aux data structure +typedef struct _ASSOC_AUX { + MACADDR Addr; + USHORT CapabilityInfo; + USHORT ListenIntv; + CHAR Ssid[MAX_LEN_OF_SSID]; + UCHAR SsidLen; + RALINK_TIMER_STRUCT AssocTimer, ReassocTimer, DisassocTimer; +} ASSOC_AUX, *PASSOC_AUX; + +// AUTH State Machine Aux data structure +typedef struct _AUTH_AUX { + MACADDR Addr; + USHORT Alg; + RALINK_TIMER_STRUCT AuthTimer; +} AUTH_AUX, *PAUTH_AUX; + +// AUTH-RSP State Machine Aux data structure +typedef struct PACKED _AUTH_RSP_AUX { + MACADDR Addr; + USHORT Alg; + CHAR Challenge[CIPHER_TEXT_LEN]; + RALINK_TIMER_STRUCT AuthRspTimer; +} AUTH_RSP_AUX, *PAUTH_RSP_AUX; + +// SYNC State Machine Aux data structure +typedef struct _SYNC_AUX { + MACADDR Addr; + MACADDR Bssid; + UCHAR BssType; + UCHAR SsidLen; + CHAR Ssid[MAX_LEN_OF_SSID]; + UCHAR ScanType; + UCHAR Channel; + RALINK_TIMER_STRUCT BeaconTimer, ScanTimer; +} SYNC_AUX; + + // assoc struct is equal to reassoc +typedef struct PACKED _MLME_ASSOC_REQ_STRUCT{ + MACADDR Addr; + USHORT CapabilityInfo; + USHORT ListenIntv; + ULONG Timeout; +} MLME_ASSOC_REQ_STRUCT, *PMLME_ASSOC_REQ_STRUCT, MLME_REASSOC_REQ_STRUCT, *PMLME_REASSOC_REQ_STRUCT; + +typedef struct PACKED _MLME_DISASSOC_REQ_STRUCT{ + MACADDR Addr; + USHORT Reason; +} MLME_DISASSOC_REQ_STRUCT, *PMLME_DISASSOC_REQ_STRUCT; + +typedef struct PACKED _MLME_AUTH_REQ_STRUCT { + MACADDR Addr; + USHORT Alg; + ULONG Timeout; +} MLME_AUTH_REQ_STRUCT, *PMLME_AUTH_REQ_STRUCT; + +typedef struct PACKED _MLME_DEAUTH_REQ_STRUCT { + MACADDR Addr; + USHORT Reason; +} MLME_DEAUTH_REQ_STRUCT, *PMLME_DEAUTH_REQ_STRUCT; + +//typedef struct _MLME_AUTH_IND_STRUCT { +// MACADDR Addr; +// USHORT Alg; +//} MLME_AUTH_IND_STRUCT, *PMLME_AUTH_IND_STRUCT; + +//typedef struct _CLS2ERR_STRUCT { +// MACADDR Addr; +//} CLS2ERR_STRUCT, *PCLS2ERR_STRUCT; + +typedef struct PACKED _MLME_JOIN_REQ_STRUCT{ + ULONG BssIdx; +} MLME_JOIN_REQ_STRUCT; + +typedef struct PACKED _MLME_SCAN_REQ_STRUCT { + MACADDR Bssid; + UCHAR BssType; + UCHAR ScanType; + UCHAR SsidLen; + CHAR Ssid[MAX_LEN_OF_SSID]; +} MLME_SCAN_REQ_STRUCT, *PMLME_SCAN_REQ_STRUCT; + +typedef struct PACKED _MLME_START_REQ_STRUCT { + CHAR Ssid[MAX_LEN_OF_SSID]; + UCHAR SsidLen; +} MLME_START_REQ_STRUCT, *PMLME_START_REQ_STRUCT; + +typedef struct PACKED _ARC4_CONTEXT { + UCHAR x, y, State[256], Key[16]; // 128 bits key +} ARC4_CONTEXT, *PARC4_CONTEXT; + +typedef struct PACKED _BEACON_EID_STRUCT { + UCHAR Eid; + UCHAR Len; + CHAR Octet[1]; +} BEACON_EID_STRUCT,*PBEACON_EID_STRUCT; + +// New for WPA cipher suite +typedef struct PACKED _RSN_EID_STRUCT { + UCHAR Eid; + UCHAR Length; + UCHAR Oui[4]; + USHORT Version; + UCHAR Multicast[4]; + USHORT Count; + struct { + UCHAR Oui[4]; + } Unicast[1]; +} RSN_EID_STRUCT, *PRSN_EID_STRUCT; + +extern UCHAR RateIdToMbps[]; +extern USHORT RateIdTo500Kbps[]; + +#endif // MLME_H__ --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/rtmp.h +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/rtmp.h @@ -1,2542 +1,2622 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: rt_config.h - * - * Abstract: Central header file for all includes - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * RoryC 21st Dec 02 Initial code - * MarkW 8th Dec 04 Baseline code - * MarkW (rt2400) 8th Dec 04 Promisc mode support - * Flavio (rt2400) 8th Dec 04 Elegant irqreturn_t handling - * RobinC 10th Dec 04 RFMON Support - * MarkW 10th Dec 04 Rolled in Ralink 1.4.5.0 - * MarkW (rt2400) 15th Dec 04 Spinlock fix - * Ivo (rt2400) 15th Dec 04 Debug level switching - * GregorG 29th Mar 05 Big endian fixes - ***************************************************************************/ - -#ifndef __RTMP_H__ -#define __RTMP_H__ - -#include "mlme.h" -#include "oid.h" -#include "wpa.h" - -#ifndef IRQ_HANDLED -/* For 2.6.x compatability */ -typedef void irqreturn_t; -#define IRQ_NONE -#define IRQ_HANDLED -#define IRQ_RETVAL(x) -#endif - -#ifndef pci_name -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) -#define pci_name(__pPci_Dev) (__pPci_Dev)->dev.bus_id -#else /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) */ -#define pci_name(__pPci_Dev) (__pPci_Dev)->slot_name -#endif /*(LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) */ -#endif /* pci_name */ - -// -// Defines the state of the LAN media -// -typedef enum _NDIS_MEDIA_STATE -{ - NdisMediaStateConnected, - NdisMediaStateDisconnected -} NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE; - -// -// MACRO for debugging information -// -extern int debug; -#ifdef RT2500_DBG -#define DBGPRINT(Level, fmt, args...) \ - if(debug){printk(Level DRV_NAME ": " fmt, ## args);} -#else -#define DBGPRINT(Level, fmt, args...) \ - while(0){} -#endif - -// -// spin_lock enhanced for Nested spin lock -// - -extern unsigned long IrqFlags; - -// Assert MACRO to make sure program running -// -#undef ASSERT -#define ASSERT(x) \ -{ \ - if (!(x)) \ - { \ - printk(KERN_WARNING __FILE__ ":%d assert " #x "failed\n", __LINE__); \ - } \ -} - -// -// Macros for flag and ref count operations -// -#define RTMP_SET_FLAG(_M, _F) ((_M)->Flags |= (_F)) -#define RTMP_CLEAR_FLAG(_M, _F) ((_M)->Flags &= ~(_F)) -#define RTMP_CLEAR_FLAGS(_M) ((_M)->Flags = 0) -#define RTMP_TEST_FLAG(_M, _F) (((_M)->Flags & (_F)) != 0) -#define RTMP_TEST_FLAGS(_M, _F) (((_M)->Flags & (_F)) == (_F)) - -#define RTMP_INC_RCV_REF(_A) ((_A)->RcvRefCount++) -#define RTMP_DEC_RCV_REF(_A) ((_A)->RcvRefCount--) -#define RTMP_GET_RCV_REF(_A) ((_A)->RcvRefCount) - -#define RTMP_INC_SEND_REF(_A) ((_A)->SendRefCount++) -#define RTMP_DEC_SEND_REF(_A) ((_A)->SendRefCount--) -#define RTMP_GET_SEND_REF(_A) ((_A)->SendRefCount) - -#define NdisEqualMemory(Source1, Source2, Length) RTMPEqualMemory(Source1, Source2, Length) - -// -// MACRO for 32-bit PCI register read / write -// -// Usage : RTMP_IO_READ32( -// PRTMP_ADAPTER pAdapter, -// ULONG Register_Offset, -// PULONG pValue) -// -// RTMP_IO_WRITE32( -// PRTMP_ADAPTER pAdapter, -// ULONG Register_Offset, -// ULONG Value) -// -#ifdef RTMP_EMBEDDED -#define RTMP_IO_READ32(_A, _R, _pV) (*_pV = PCIMemRead32(__mem_pci(_A->CSRBaseAddress+_R))) -#define RTMP_IO_WRITE32(_A, _R, _V) (PCIMemWrite32(__mem_pci(_A->CSRBaseAddress+_R),_V)) -#else -#define RTMP_IO_READ32(_A, _R, _pV) (*_pV = readl( (void*) (_A->CSRBaseAddress + _R) ) ) -#define RTMP_IO_WRITE32(_A, _R, _V) (writel(_V, (void*) (_A->CSRBaseAddress + _R) ) ) -#endif - -// -// BBP & RF are using indirect access. Before write any value into it. -// We have to make sure there is no outstanding command pending via checking busy bit. -// -#define MAX_BUSY_COUNT 10 // Nunber of retry before failing access BBP & RF indirect register -// -#define RTMP_BBP_IO_WRITE32(_A, _V) \ -{ \ - BBPCSR_STRUC Value; \ - ULONG BusyCnt = 0; \ - do { \ - RTMP_IO_READ32(_A, BBPCSR, &Value.word); \ - if (Value.field.Busy == IDLE) \ - break; \ - BusyCnt++; \ - } while (BusyCnt < MAX_BUSY_COUNT); \ - if (BusyCnt < MAX_BUSY_COUNT) \ - { \ - RTMP_IO_WRITE32(_A, BBPCSR, _V); \ - } \ -} -// -#define RTMP_RF_IO_WRITE32(_A, _V) \ -{ \ - RFCSR_STRUC Value; \ - ULONG BusyCnt = 0; \ - do { \ - RTMP_IO_READ32(_A, RFCSR, &(Value.word)); \ - if (Value.field.Busy == IDLE) \ - break; \ - BusyCnt++; \ - } while (BusyCnt < MAX_BUSY_COUNT); \ - if (BusyCnt < MAX_BUSY_COUNT) \ - { \ - RTMP_IO_WRITE32(_A, RFCSR, _V); \ - } \ -} -// -#define RTMP_BBP_IO_READ32(_A, _pV) \ -{ \ - BBPCSR_STRUC Value; \ - ULONG BusyCnt = 0; \ - RTMP_BBP_IO_WRITE32(_A, *(_pV)); \ - do { \ - RTMP_IO_READ32(_A, BBPCSR, &Value.word);\ - if (Value.field.Busy == IDLE) \ - break; \ - BusyCnt++; \ - } while (BusyCnt < MAX_BUSY_COUNT); \ - if (BusyCnt == MAX_BUSY_COUNT) \ - *(_pV) = 0xff; \ - else \ - *(_pV) = Value.field.Value; \ -} -// Read BBP register by register's ID -#define RTMP_BBP_IO_READ32_BY_REG_ID(_A, _I, _pV) \ -{ \ - BBPCSR_STRUC BbpCsr; \ - BbpCsr.word = 0; \ - BbpCsr.field.WriteControl = 0; \ - BbpCsr.field.Busy = 1; \ - BbpCsr.field.RegNum = _I; \ - RTMP_BBP_IO_READ32(_A, &BbpCsr.word); \ - *(_pV) = (UCHAR) BbpCsr.field.Value; \ -} -// Write BBP register by register's ID & value -#define RTMP_BBP_IO_WRITE32_BY_REG_ID(_A, _I, _V) \ -{ \ - BBPCSR_STRUC BbpCsr; \ - BbpCsr.word = 0; \ - BbpCsr.field.WriteControl = 1; \ - BbpCsr.field.Busy = 1; \ - BbpCsr.field.Value = _V; \ - BbpCsr.field.RegNum = _I; \ - RTMP_BBP_IO_WRITE32(_A, BbpCsr.word); \ - (_A)->PortCfg.BbpWriteLatch[_I] = _V; \ -} - - -// -// Some utility macros -// -#ifndef min -#define min(_a, _b) (((_a) < (_b)) ? (_a) : (_b)) -#endif - -#ifndef max -#define max(_a, _b) (((_a) > (_b)) ? (_a) : (_b)) -#endif - -#define INC_COUNTER(Val) (Val.QuadPart++) - -#define INFRA_ON(_p) (((_p)->PortCfg.Massoc) == TRUE) // Check Massoc -#define ADHOC_ON(_p) (((_p)->PortCfg.Mibss) == TRUE) // check Mibss -#define RTMP_SET_PACKET_FRAGMENTS(_p, number) ((_p)->cb[10] = number) -#define RTMP_GET_PACKET_FRAGMENTS(_p) ((_p)->cb[10]) -#define RTMP_SET_PACKET_RTS(_p, number) ((_p)->cb[11] = number) -#define RTMP_GET_PACKET_RTS(_p) ((_p)->cb[11]) - -#define MAKE_802_3_HEADER(_p, _pMac1, _pMac2, _pType) \ -{ \ - memcpy(_p, _pMac1, ETH_ALEN); \ - memcpy((_p + ETH_ALEN), _pMac2, ETH_ALEN); \ - memcpy((_p + ETH_ALEN * 2), _pType, LENGTH_802_3_TYPE); \ -} - -// if pData has no LLC/SNAP (neither RFC1042 nor Bridge tunnel), keep it that way. -// else if the received frame is LLC/SNAP-encaped IPX or APPLETALK, preserve the LLC/SNAP field in the result Ethernet frame -// else remove the LLC/SNAP field from the result Ethernet frame -// Note: -// _pData & _DataSize may be altered (remove 8-byte LLC/SNAP) by this MACRO -#define CONVERT_TO_802_3(_p8023hdr, _pDA, _pSA, _pData, _DataSize) \ -{ \ - char LLC_Len[2]; \ - \ - if ((!RTMPEqualMemory(SNAP_802_1H, _pData, 6)) && \ - (!RTMPEqualMemory(SNAP_BRIDGE_TUNNEL, _pData, 6))) \ - { \ - LLC_Len[0] = (UCHAR)(_DataSize / 256); \ - LLC_Len[1] = (UCHAR)(_DataSize % 256); \ - MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, LLC_Len); \ - } \ - else \ - { \ - PUCHAR pProto = _pData + 6; \ - \ - if ((RTMPEqualMemory(IPX, pProto, 2) || RTMPEqualMemory(APPLE_TALK, pProto, 2)) && \ - RTMPEqualMemory(SNAP_802_1H, _pData, 6)) \ - { \ - LLC_Len[0] = (UCHAR)(_DataSize / 256); \ - LLC_Len[1] = (UCHAR)(_DataSize % 256); \ - MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, LLC_Len); \ - } \ - else \ - { \ - MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, pProto); \ - _DataSize -= LENGTH_802_1_H; \ - _pData += LENGTH_802_1_H; \ - } \ - } \ -} - -// -// Register set pair for initialzation register set definition -// -typedef struct _RTMP_REG_PAIR -{ - ULONG Register; - ULONG Value; -} RTMP_REG_PAIR, *PRTMP_REG_PAIR; - -// -// Register set pair for initialzation register set definition -// -typedef struct _RTMP_RF_REGS -{ - UCHAR Channel; - ULONG R1; - ULONG R2; - ULONG R3; - ULONG R4; -} RTMP_RF_REGS, *PRTMP_RF_REGS; - -// -// Statistic counter structure -// -typedef struct _COUNTER_802_3 -{ - // General Stats - ULONG GoodTransmits; - ULONG GoodReceives; - ULONG TxErrors; - ULONG RxErrors; - ULONG RxNoBuffer; - - // Ethernet Stats - ULONG RcvAlignmentErrors; - ULONG OneCollision; - ULONG MoreCollisions; - -} COUNTER_802_3, *PCOUNTER_802_3; - -typedef struct _COUNTER_802_11 { - ULONG Length; - LARGE_INTEGER TransmittedFragmentCount; - LARGE_INTEGER MulticastTransmittedFrameCount; - LARGE_INTEGER FailedCount; - LARGE_INTEGER RetryCount; - LARGE_INTEGER MultipleRetryCount; - LARGE_INTEGER RTSSuccessCount; - LARGE_INTEGER RTSFailureCount; - LARGE_INTEGER ACKFailureCount; - LARGE_INTEGER FrameDuplicateCount; - LARGE_INTEGER ReceivedFragmentCount; - LARGE_INTEGER MulticastReceivedFrameCount; - LARGE_INTEGER FCSErrorCount; -} COUNTER_802_11, *PCOUNTER_802_11; - -typedef struct _COUNTER_RALINK { - ULONG TransmittedByteCount; // both successful and failure, used to calculate TX throughput - ULONG ReceivedByteCount; // both CRC okay and CRC error, used to calculate RX throughput - ULONG BeenDisassociatedCount; - ULONG BadCQIAutoRecoveryCount; - ULONG PoorCQIRoamingCount; - ULONG MgmtRingFullCount; - ULONG RxCount; - ULONG DecryptCount; - ULONG RxRingErrCount; - ULONG EncryptCount; - ULONG KickTxCount; - ULONG TxRingErrCount; - LARGE_INTEGER RealFcsErrCount; -} COUNTER_RALINK, *PCOUNTER_RALINK; - -typedef struct _COUNTER_DRS { - // to record the each TX rate's quality. 0 is best, the bigger the worse. - USHORT TxQuality[MAX_LEN_OF_SUPPORTED_RATES]; - UCHAR PER[MAX_LEN_OF_SUPPORTED_RATES]; - USHORT OneSecTxOkCount; - USHORT OneSecTxRetryOkCount; - USHORT OneSecTxFailCount; - UCHAR TxRateUpPenalty; // extra # of second penalty due to last unstable condition - ULONG CurrTxRateStableTime; // # of second in current TX rate - BOOLEAN fNoisyEnvironment; - UCHAR LastSecTxRateChangeAction; // 0: no change, 1:rate UP, 2:rate down -} COUNTER_DRS, *PCOUNTER_DRS; - -// -// Arcfour Structure Added by PaulWu -// -typedef struct PACKED _ARCFOUR -{ - UINT X; - UINT Y; - UCHAR STATE[256]; -} ARCFOURCONTEXT, *PARCFOURCONTEXT; - -// Shared key data structure -typedef struct _WEP_KEY { - UCHAR KeyLen; // Key length for each key, 0: entry is invalid - UCHAR Key[MAX_LEN_OF_KEY]; // right now we implement 4 keys, 128 bits max -} WEP_KEY, *PWEP_KEY; - -// Shared key data structure -typedef struct _WPA_KEY { - UCHAR KeyLen; // Key length for each key, 0: entry is invalid - UCHAR Key[16]; // right now we implement 4 keys, 128 bits max - UCHAR RxMic[8]; - UCHAR TxMic[8]; - NDIS_802_11_MAC_ADDRESS BssId; // For pairwise key only - UCHAR TxTsc[6]; // 48bit TSC value - UCHAR RxTsc[6]; // 48bit TSC value - UCHAR Type; // Indicate Pairwise / Group -} WPA_KEY, *PWPA_KEY; - -#if 0 -typedef struct _IV_CONTROL_ -{ - union - { - struct - { - UCHAR rc0; - UCHAR rc1; - UCHAR rc2; - - union - { - struct - { -#ifdef BIG_ENDIAN - UCHAR KeyID:2; - UCHAR ExtIV:1; - UCHAR Rsvd:5; -#else - UCHAR Rsvd:5; - UCHAR ExtIV:1; - UCHAR KeyID:2; -#endif - } field; - UCHAR Byte; - } CONTROL; - } field; - - ULONG word; - } IV16; - - ULONG IV32; -} TKIP_IV, *PTKIP_IV; -#endif - -typedef struct _IV_CONTROL_ -{ - union - { - struct - { -#ifdef BIG_ENDIAN - ULONG KeyID:2; - ULONG ExtIV:1; - ULONG Rsvd:5; - ULONG rc2:8; - ULONG rc1:8; - ULONG rc0:8; -#else - ULONG rc0:8; - ULONG rc1:8; - ULONG rc2:8; - ULONG Rsvd:5; - ULONG ExtIV:1; - ULONG KeyID:2; -#endif - }field; - ULONG word; - }IV16; - - ULONG IV32; -} TKIP_IV, *PTKIP_IV; - -// configuration to be used when this STA starts a new ADHOC network -typedef struct _IBSS_CONFIG { - USHORT BeaconPeriod; - USHORT AtimWin; - UCHAR Channel; - UCHAR SupportedRates[MAX_LEN_OF_SUPPORTED_RATES]; // Supported rates - UCHAR SupportedRatesLen; -} IBSS_CONFIG, *PIBSS_CONFIG; - -typedef struct _LED_CONTROL { - BOOLEAN fOdd; - BOOLEAN fRxActivity; - RALINK_TIMER_STRUCT BlinkTimer; // 50 ms periodic timer - ULONG LastLedCsr; -} LED_CONTROL; - -typedef struct _BBP_TUNING_STRUCT { - BOOLEAN Enable; - UCHAR FalseCcaCountUpperBound; // 100 per sec - UCHAR FalseCcaCountLowerBound; // 10 per sec - UCHAR R17LowerBound; // specified in E2PROM - UCHAR R17UpperBound; // 0x68 according to David Tung - UCHAR CurrentR17Value; -} BBP_TUNING, *PBBP_TUNING; - -typedef struct _SOFT_RX_ANT_DIVERSITY_STRUCT { - BOOLEAN PrimaryInUsed; - BOOLEAN FirstPktArrivedWhenEvaluate; - UCHAR PrimaryRxAnt; // 0:Ant-A, 1:Ant-B - UCHAR SecondaryRxAnt; // 0:Ant-A, 1:Ant-B - UCHAR CurrentRxAnt; // 0:Ant-A, 1:Ant-B - USHORT AvgRssi[2]; // AvgRssi[0]:Ant-A, AvgRssi[1]:Ant-B - ULONG RcvPktNumWhenEvaluate; - RALINK_TIMER_STRUCT RxAntDiversityTimer; -} SOFT_RX_ANT_DIVERSITY, *PSOFT_RX_ANT_DIVERSITY; - -typedef struct _STA_WITH_ETHER_BRIDGE_STRUCT { - BOOLEAN Enable; - MACADDR EtherMacAddr; -} STA_WITH_ETHER_BRIDGE, *PSTA_WITH_ETHER_BRIDGE; - -// PortConfig -typedef struct _PORT_CONFIG { - - // MIB:ieee802dot11.dot11smt(1).dot11StationConfigTable(1) - USHORT CapabilityInfo; - USHORT Psm; // power management mode (PWR_ACTIVE|PWR_SAVE) - USHORT BeaconPeriod; // in units of TU - - USHORT CfpMaxDuration; - USHORT CfpDurRemain; - USHORT CfpCount; - USHORT CfpPeriod; - - USHORT DisassocReason; - MACADDR DisassocSta; - USHORT DeauthReason; - MACADDR DeauthSta; - USHORT AuthFailReason; - MACADDR AuthFailSta; - - NDIS_802_11_AUTHENTICATION_MODE AuthMode; // This should match to whatever microsoft defined - NDIS_802_11_WEP_STATUS WepStatus; - - // MIB:ieee802dot11.dot11smt(1).dot11WEPDefaultKeysTable(3) - WEP_KEY SharedKey[SHARE_KEY_NO]; // Keep for backward compatiable - WPA_KEY PairwiseKey[PAIRWISE_KEY_NO]; - WPA_KEY GroupKey[GROUP_KEY_NO]; - WPA_KEY PskKey; // WPA PSK mode PMK - UCHAR PTK[64]; - - // WPA 802.1x port control, WPA_802_1X_PORT_SECURED, WPA_802_1X_PORT_NOT_SECURED - UCHAR PortSecured; - - // For WPA countermeasures - ULONG LastMicErrorTime; // record last MIC error time - ULONG MicErrCnt; // Should be 0, 1, 2, then reset to zero (after disassoiciation). - BOOLEAN bBlockAssoc; // Block associate attempt for 60 seconds after counter measure occurred. - // For WPA-PSK supplicant state - WPA_STATE WpaState; // Default is SS_NOTUSE and handled by microsoft 802.1x - UCHAR ReplayCounter[8]; - UCHAR ANonce[32]; // ANonce for WPA-PSK from aurhenticator - UCHAR SNonce[32]; // SNonce for WPA-PSK - - // MIB:ieee802dot11.dot11smt(1).dot11WEPKeyMappingsTable(4) - // not implemented yet - - // MIB:ieee802dot11.dot11smt(1).dot11PrivacyTable(5) - UCHAR DefaultKeyId; - NDIS_802_11_PRIVACY_FILTER PrivacyFilter; // PrivacyFilter enum for 802.1X - - // MIB:ieee802dot11.dot11mac(2).dot11OperationTable(1) - USHORT RtsThreshold; // in units of BYTE - USHORT FragmentThreshold; - BOOLEAN bFragmentZeroDisable; // Microsoft use 0 as disable - - // MIB:ieee802dot11.dot11phy(4).dot11PhyAntennaTable(2) - UCHAR CurrentTxAntenna; - UCHAR CurrentRxAntenna; - UCHAR NumberOfAntenna; - - // MIB:ieee802dot11.dot11phy(4).dot11PhyTxPowerTable(3) - UCHAR CurrentTxPowerLevelIndex; //default&other value=MaxPower,1=MinPower,2=1*MaxPower/4,3=2*MaxPower/4,4=3*MaxPower/4, - UCHAR TxPower; - UCHAR TxRate; // RATE_1, RATE_2, RATE_5_5, RATE_11, ... - BOOLEAN EnableAutoRateSwitching; // 1 - enable auto rate switching; 0 - disable - ULONG TxPowerPercentage; // 0~100 % - - // MIB:ieee802dot11.dot11phy(4).dot11PhyDSSSTable(5) - UCHAR Channel; // current (I)BSS channel used in the station - UCHAR CountryRegion; // Enum of country region, 0:FCC, 1:IC, 2:ETSI, 3:SPAIN, 4:France, 5:MKK, 6:MKK1, 7:Israel - - // MIB:ieee802dot11.dot11phy(4).dot11AntennasListTable(8) - BOOLEAN AntennaSupportTx; - BOOLEAN AntennaSupportRx; - BOOLEAN AntennaSupportDiversityRx; - - // Use user changed MAC - BOOLEAN bLocalAdminMAC; - - // MIB:ieee802dot11.dot11phy(4).dot11SupportedDataRatesTxTable(9) - // MIB:ieee802dot11.dot11phy(4).dot11SupportedDataRatesRxTable(10) - UCHAR SupportedRates[MAX_LEN_OF_SUPPORTED_RATES]; // Supported rates - UCHAR SupportedRatesLen; - UCHAR ExpectedACKRate[MAX_LEN_OF_SUPPORTED_RATES]; - // Copy supported rate from desired AP's beacon. We are trying to match - // AP's supported and extended rate settings. - UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES]; - UCHAR ExtRate[MAX_LEN_OF_SUPPORTED_RATES]; - UCHAR SupRateLen; - UCHAR ExtRateLen; - - // - // other parameters not defined in standard MIB - // - UCHAR DesiredRates[MAX_LEN_OF_SUPPORTED_RATES]; // OID_802_11_DESIRED_RATES - UCHAR MaxDesiredRate; - USHORT RecvDtim; - MACADDR Bssid; - MACADDR Broadcast; // FF:FF:FF:FF:FF:FF - USHORT Pss; // current power saving status (PWR_SAVE|PWR_ACTIVE) - UCHAR RssiTrigger; - UCHAR RssiTriggerMode; // RSSI_TRIGGERED_UPON_BELOW_THRESHOLD or RSSI_TRIGGERED_UPON_EXCCEED_THRESHOLD - UCHAR LastRssi; // last received BEACON's RSSI - SHORT LastAvgRssi; // last - USHORT AvgRssi; // last 8 BEACON's average RSSI - USHORT AtimWin; // in kusec; IBSS parameter set element - USHORT Aid; // association ID - UCHAR RtsRate; // RATE_xxx - UCHAR MlmeRate; // RATE_xxx, used to send MLME frames - UCHAR MaxTxRate; // RATE_xxx - USHORT DefaultListenCount; // default listen count; - UCHAR BssType; // BSS_INFRA or BSS_INDEP - - UCHAR SsidLen; // the actual ssid length in used - CHAR Ssid[MAX_LEN_OF_SSID]; // NOT NULL-terminated - - BSS_TABLE BssTab; // BSS Table - - // global variables mXXXX used in MAC protocol state machines - BOOLEAN Mibss; - BOOLEAN Massoc; - BOOLEAN Mauth; - - // PHY specification - UCHAR PhyMode; // PHY_11A, PHY_11B, PHY_11BG_MIXED, PHY_ABG_MIXED - USHORT Dsifs; // in units of usec - - ULONG WindowsPowerMode; // Power mode for AC power - ULONG WindowsBatteryPowerMode; // Power mode for battery if exists - BOOLEAN WindowsACCAMEnable; // Enable CAM power mode when AC on - ULONG PacketFilter; // Packet filter for receiving - BOOLEAN AutoReconnect; // Set to TRUE when setting OID_802_11_SSID with no matching BSSID - - ULONG WindowsTxPreamble; // Rt802_11PreambleLong, Rt802_11PreambleShort, Rt802_11PreambleAuto - - UCHAR ChannelTxPower[MAX_LEN_OF_CHANNELS]; // Store Tx power value for all channels. - UCHAR ChannelTssiRef[MAX_LEN_OF_CHANNELS]; // Store Tssi Reference value for all channels. - UCHAR ChannelTssiDelta; // Store Tx TSSI delta increment / decrement value - BOOLEAN bAutoTxAgc; - UCHAR ChannelList[MAX_LEN_OF_CHANNELS]; // list all supported channels for site survey - UCHAR ChannelListNum; // number of channel in ChannelList[] - BOOLEAN bShowHiddenSSID; - - // configuration to be used when this STA starts a new ADHOC network - IBSS_CONFIG IbssConfig; - - ULONG LastBeaconRxTime; // OS's timestamp of the last BEACON RX time - ULONG Last11bBeaconRxTime; // OS's timestamp of the last 11B BEACON RX time - ULONG LastScanTime; // Record last scan time for issue BSSID_SCAN_LIST - ULONG IgnoredScanNumber; // Ignored BSSID_SCAN_LIST requests - BOOLEAN bSwRadio; // Software controlled Radio On/Off, TRUE: On - BOOLEAN bHwRadio; // Hardware controlled Radio On/Off, TRUE: On - BOOLEAN bRadio; // Radio state, And of Sw & Hw radio state - BOOLEAN bHardwareRadio; // Hardware controlled Radio enabled - - LED_CONTROL LedCntl; - UCHAR RfType; - UCHAR LedMode; - RALINK_TIMER_STRUCT RfTuningTimer; - STA_WITH_ETHER_BRIDGE StaWithEtherBridge; - - // New for WPA, windows want us to to keep association information and - // Fixed IEs from last association response - NDIS_802_11_ASSOCIATION_INFORMATION AssocInfo; -// NDIS_802_11_FIXED_IEs FixIEs; - UCHAR ReqVarIELen; // Length of next VIE include EID & Length - UCHAR ReqVarIEs[MAX_VIE_LEN]; - UCHAR ResVarIELen; // Length of next VIE include EID & Length - UCHAR ResVarIEs[MAX_VIE_LEN]; - - // the following fields are user setting from UI - ULONG EnableTurboRate; // 0: disable, 1: enable 72/100 Mbps whenever applicable - ULONG EnableTxBurst; // 0: disable, 1: enable TX PACKET BURST - ULONG UseBGProtection; // 0: auto, 1: always use, 2: always not use - ULONG UseShortSlotTime; // 0: disable, 1: enable 9us short slot time if AP supports - ULONG AdhocMode; // 0:WIFI mode (11b rates only), 1:allow OFDM rates - - // this flag is the result calculated from UI settings and AP's ERP/Capability - ULONG BGProtectionInUsed; // 0: not in-used, 1: in-used - ULONG ShortSlotInUsed; // 0: not in-used, 1: in-used - USHORT TxPreambleInUsed; // Rt802_11PreambleLong, Rt802_11PreambleShort - - // PCI clock adjustment round - UCHAR PciAdjustmentRound; - - // latch th latest RF programming value here since RF IC doesn't support READ operation - RTMP_RF_REGS LatchRfRegs; - - BOOLEAN BbpTuningEnable; - UCHAR VgcLowerBound; - RT_802_11_RX_AGC_VGC_TUNING BbpTuning; - - UCHAR LastR17Value; - - // New for RSSI to dbm veriable - UCHAR RssiToDbm; // EEPROM 0x7c - - - ULONG SystemErrorBitmap; // b0: E2PROM version error - - // This soft Rx Antenna Diversity mechanism is used only when user set - // RX Antenna = DIVERSITY ON - SOFT_RX_ANT_DIVERSITY RxAnt; - - ULONG Rt2560Version; // MAC/BBP serial interface issue solved after ver.D - ULONG EepromVersion; // byte 0: version, byte 1: revision, byte 2~3: unused - UCHAR BbpWriteLatch[100]; // record last BBP register value written via BBP_IO_WRITE -// ULONG CurrTxRateStableTime; // # of second in current TX rate - ULONG NumOfAvgRssiSample;// UCHAR TxRateUpPenalty; // extra # of second penalty due to last unstable condition -} PORT_CONFIG, *PPORT_CONFIG; - -typedef struct _MLME_MEMORY_STRUCT { - PVOID AllocVa; //Pointer to the base virtual address of the allocated memory - struct _MLME_MEMORY_STRUCT *Next; //Pointer to the next virtual address of the allocated memory -} MLME_MEMORY_STRUCT, *PMLME_MEMORY_STRUCT; - -typedef struct _MLME_MEMORY_HANDLER { - BOOLEAN MemRunning; //The flag of the Mlme memory handler's status - UINT MemoryCount; //Total nonpaged system-space memory not size - UINT InUseCount; //Nonpaged system-space memory in used counts - UINT UnUseCount; //Nonpaged system-space memory available counts - UINT PendingCount; //Nonpaged system-space memory for free counts - PMLME_MEMORY_STRUCT pInUseHead; //Pointer to the first nonpaed memory not used - PMLME_MEMORY_STRUCT pInUseTail; //Pointer to the last nonpaged memory not used - PMLME_MEMORY_STRUCT pUnUseHead; //Pointer to the first nonpaged memory in used - PMLME_MEMORY_STRUCT pUnUseTail; //Pointer to the last nonpaged memory in used - PULONG MemFreePending[MAX_MLME_HANDLER_MEMORY]; //an array to keep pending free-memory's pointer (32bits) -} MLME_MEMORY_HANDLER, *PMLME_MEMORY_HANDLER; - -typedef struct _MLME_STRUCT { - STATE_MACHINE CntlMachine, AssocMachine, AuthMachine, AuthRspMachine, SyncMachine, WpaPskMachine; - STATE_MACHINE_FUNC CntlFunc[CNTL_FUNC_SIZE], AssocFunc[ASSOC_FUNC_SIZE]; - STATE_MACHINE_FUNC AuthFunc[AUTH_FUNC_SIZE], AuthRspFunc[AUTH_RSP_FUNC_SIZE]; - STATE_MACHINE_FUNC SyncFunc[SYNC_FUNC_SIZE], WpaPskFunc[WPA_PSK_FUNC_SIZE]; - - ASSOC_AUX AssocAux; - AUTH_AUX AuthAux; - AUTH_RSP_AUX AuthRspAux; - SYNC_AUX SyncAux; - CNTL_AUX CntlAux; - - COUNTER_802_11 PrevWlanCounters; - ULONG ChannelQuality; // 0..100, Channel Quality Indication for Roaming - - BOOLEAN Running; - spinlock_t TaskLock; - MLME_QUEUE Queue; - - UINT ShiftReg; - PSPOLL_FRAME PsFr; - MACHDR NullFr; - - RALINK_TIMER_STRUCT PeriodicTimer; - ULONG PeriodicRound; - ULONG PrevTxCnt; - - MLME_MEMORY_HANDLER MemHandler; //The handler of the nonpaged memory inside MLME -} MLME_STRUCT, *PMLME_STRUCT; - -// -// Management ring buffer format -// -typedef struct _MGMT_STRUC { - BOOLEAN Valid; - PUCHAR pBuffer; - ULONG Length; -} MGMT_STRUC, *PMGMT_STRUC; - -// -// P802.11 Frame control field, 16 bit -// -typedef struct PACKED _FRAME_CONTROL { -#ifdef BIG_ENDIAN - USHORT Order:1; - USHORT Wep:1; - USHORT MoreData:1; - USHORT PwrMgt:1; - USHORT Retry:1; - USHORT MoreFrag:1; - USHORT FrDs:1; - USHORT ToDs:1; - USHORT Subtype:4; - USHORT Type:2; - USHORT Ver:2; -#else - USHORT Ver:2; // Protocol version - USHORT Type:2; // MSDU type - USHORT Subtype:4; // MSDU subtype - USHORT ToDs:1; // To DS indication - USHORT FrDs:1; // From DS indication - USHORT MoreFrag:1; // More fragment bit - USHORT Retry:1; // Retry status bit - USHORT PwrMgt:1; // Power management bit - USHORT MoreData:1; // More data bit - USHORT Wep:1; // Wep data - USHORT Order:1; // Strict order expected -#endif -} FRAME_CONTROL, *PFRAME_CONTROL; - -// -// P802.11 intermediate header format -// -typedef struct PACKED _CONTROL_HEADER { - FRAME_CONTROL Frame; // Frame control structure - USHORT Duration; // Duration value - MACADDR Addr1; // Address 1 field - MACADDR Addr2; // Address 2 field -} CONTROL_HEADER, *PCONTROL_HEADER; - -// -// P802.11 header format -// -typedef struct PACKED _HEADER_802_11 { - CONTROL_HEADER Controlhead; - MACADDR Addr3; // Address 3 field -#ifdef BIG_ENDIAN - USHORT Sequence:12; // Sequence number - USHORT Frag:4; // Fragment number -#else - USHORT Frag:4; // Fragment number - USHORT Sequence:12; // Sequence number -#endif -} HEADER_802_11, *PHEADER_802_11; - -// -// Receive Tuple Cache Format -// -typedef struct PACKED _TUPLE_CACHE { - BOOLEAN Valid; - MACADDR MAC; - USHORT Sequence; - USHORT Frag; -} TUPLE_CACHE, *PTUPLE_CACHE; - -// -// Fragment Frame structure -// -typedef struct PACKED _FRAGMENT_FRAME { - UCHAR Header802_3[14]; - UCHAR Header_LLC[8]; - UCHAR Buffer[LENGTH_802_3 + MAX_FRAME_SIZE]; - ULONG RxSize; - USHORT Sequence; - USHORT LastFrag; - ULONG Flags; // Some extra frame information. bit 0: LLC presented -} FRAGMENT_FRAME, *PFRAGMENT_FRAME; - -// -// Tkip Key structure which RC4 key & MIC calculation -// -typedef struct PACKED _TKIP_KEY_INFO { - UINT nBytesInM; // # bytes in M for MICKEY - ULONG IV16; - ULONG IV32; - ULONG K0; // for MICKEY Low - ULONG K1; // for MICKEY Hig - ULONG L; // Current state for MICKEY - ULONG R; // Current state for MICKEY - ULONG M; // Message accumulator for MICKEY - UCHAR RC4KEY[16]; - UCHAR MIC[8]; -} TKIP_KEY_INFO, *PTKIP_KEY_INFO; - -// -// Private / Misc data, counters for driver internal use -// -typedef struct __PRIVATE_STRUC { - ULONG SystemResetCnt; // System reset counter - ULONG TxRingFullCnt; // Tx ring full occurrance number - ULONG ResetCountDown; // Count down before issue reset, patch for RT2430 - ULONG CCAErrCnt; // CCA error count, for debug purpose, might move to global counter - ULONG PhyRxErrCnt; // PHY Rx error count, for debug purpose, might move to global counter - ULONG PhyTxErrCnt; // PHY Tx error count, for debug purpose, might move to global counter - // Variables for WEP encryption / decryption in rtmp_wep.c - ULONG FCSCRC32; - ULONG RxSetCnt; - ULONG DecryptCnt; - ARCFOURCONTEXT WEPCONTEXT; - // Tkip stuff - TKIP_KEY_INFO Tx; - TKIP_KEY_INFO Rx; -} PRIVATE_STRUC, *PPRIVATE_STRUC; - -// -// All DMA ring formats -// -struct ring_desc { - // Descriptor size & dma address - u32 size; - void *va_addr; - dma_addr_t pa_addr; - // Dma buffer size and address for real transfer - u32 data_size; - void *va_data_addr; - dma_addr_t pa_data_addr; - UCHAR FrameType; // Type of frame in ring buffer -}; - -#ifdef RALINK_ATE -typedef struct _ATE_INFO { - UCHAR Mode; - UCHAR TxPower; - UCHAR Addr1[6]; - UCHAR Addr2[6]; - UCHAR Addr3[6]; - UCHAR Channel; - ULONG TxLength; - ULONG TxCount; - ULONG TxDoneCount; - ULONG TxRate; -} ATE_INFO, *PATE_INFO; -#endif //#ifdef RALINK_ATE - -// -// The miniport adapter structure -// -typedef struct _RTMP_ADAPTER -{ - char nickn[IW_ESSID_MAX_SIZE+1]; // nickname, only used in the iwconfig i/f - int chip_id; - - unsigned long CSRBaseAddress; // PCI MMIO Base Address, all access will use - // NdisReadRegisterXx or NdisWriteRegisterXx - - // configuration - UCHAR PermanentAddress[ETH_ALEN]; // Factory default MAC address - UCHAR CurrentAddress[ETH_ALEN]; // User changed MAC address - - UCHAR EEPROMAddressNum; // 93c46=6 93c66=8 - USHORT EEPROMDefaultValue[NUM_EEPROM_BBP_PARMS]; - - // resource for DMA operation - struct ring_desc TxRing[TX_RING_SIZE]; // Tx Ring - struct ring_desc AtimRing[ATIM_RING_SIZE]; // Atim Ring - struct ring_desc PrioRing[PRIO_RING_SIZE]; // Priority Ring - struct ring_desc RxRing[RX_RING_SIZE]; // Rx Ring - struct ring_desc BeaconRing; // Beacon Ring, only one - - MGMT_STRUC MgmtRing[MGMT_RING_SIZE]; // management ring size - - ULONG CurRxIndex; // Next RxD read pointer - ULONG CurDecryptIndex; // Next RxD decrypt read pointer - ULONG CurTxIndex; // Next TxD write pointer - ULONG CurEncryptIndex; // Next TxD encrypt write pointer - ULONG CurAtimIndex; // Next AtimD write pointer - ULONG CurPrioIndex; // Next PrioD write pointer - ULONG PushMgmtIndex; // Next SW management ring index - ULONG PopMgmtIndex; // Next SW management ring index - ULONG MgmtQueueSize; // Number of Mgmt request stored in MgmtRing - ULONG NextEncryptDoneIndex; - ULONG NextTxDoneIndex; - ULONG NextAtimDoneIndex; - ULONG NextPrioDoneIndex; - ULONG NextDecryptDoneIndex; - - // 802.3 multicast support - ULONG NumberOfMcAddresses; // Number of mcast entry exists - UCHAR McastTable[MAX_MCAST_LIST_SIZE][ETH_ALEN]; // Mcast list - //flags - ULONG Flags; // Represent current device status - - // Tx software priority queue list, 802.1q priority information mapped as. - // 0,1 -> queue0, 2,3 -> queue1, 4,5 -> queue2, 6,7 -> queue3 - struct sk_buff_head TxSwQueue0; // Tx software priority queue 0 mapped to 0.1 - struct sk_buff_head TxSwQueue1; // Tx software priority queue 1 mapped to 2.3 - struct sk_buff_head TxSwQueue2; // Tx software priority queue 2 mapped to 4.5 - struct sk_buff_head TxSwQueue3; - - USHORT Sequence; // Current sequence number - - TUPLE_CACHE TupleCache[MAX_CLIENT]; // Maximum number of tuple caches, only useful in Ad-Hoc - UCHAR TupleCacheLastUpdateIndex; // 0..MAX_CLIENT-1 - FRAGMENT_FRAME FragFrame; // Frame storage for fragment frame - - // For MiniportTransferData - PUCHAR pRxData; // Pointer to current RxRing offset / fragment frame offset - - // Counters for 802.3 & generic. - // Add 802.11 specific counters later - COUNTER_802_3 Counters; // 802.3 counters - COUNTER_802_11 WlanCounters; // 802.11 MIB counters - COUNTER_RALINK RalinkCounters; // Ralink propriety counters - COUNTER_DRS DrsCounters; // counters for Dynamic Rate Switching - - NDIS_MEDIA_STATE MediaState; - - PRIVATE_STRUC PrivateInfo; // Private information & counters - - // SpinLocks - spinlock_t TxRingLock; // Tx Ring spinlock - spinlock_t PrioRingLock; // Prio Ring spinlock - spinlock_t AtimRingLock; // Atim Ring spinlock - spinlock_t RxRingLock; // Rx Ring spinlock - spinlock_t TxSwQueueLock; // SendTxWaitQueue spinlock - spinlock_t MemLock; // Memory handler spinlock - -// Boolean control for packet filter - BOOLEAN bAcceptDirect; - BOOLEAN bAcceptMulticast; - BOOLEAN bAcceptBroadcast; - BOOLEAN bAcceptAllMulticast; - BOOLEAN bAcceptPromiscuous; - - // Control to check Tx hang - BOOLEAN bTxBusy; - //PQUEUE_ENTRY FirstEntryInQueue; // The first packet in Tx queue - - // Control disconnect / connect event generation - ULONG LinkDownTime; - ULONG LastRxRate; - UCHAR LastSsidLen; // the actual ssid length in used - CHAR LastSsid[MAX_LEN_OF_SSID]; // NOT NULL-terminated - MACADDR LastBssid; - BOOLEAN bConfigChanged; - - PORT_CONFIG PortCfg; - MLME_STRUCT Mlme; - - struct pci_dev *pPci_Dev; - struct net_device *net_dev; - - RALINK_TIMER_STRUCT timer; // Periodic Media monitoring timer. - - BOOLEAN bNetDeviceStopQueue; - BOOLEAN NeedSwapToLittleEndian; - -#if WIRELESS_EXT >= 12 - struct iw_statistics iw_stats; -#endif - struct net_device_stats stats; - -#ifdef RALINK_ATE - ATE_INFO ate; -#endif //#ifdef RALINK_ATE -} RTMP_ADAPTER, *PRTMP_ADAPTER; - -// -// SHA context -// -typedef struct _SHA_CTX -{ - ULONG H[5]; - ULONG W[80]; - INT lenW; - ULONG sizeHi, sizeLo; -} SHA_CTX; - -// -// Enable & Disable NIC interrupt via writing interrupt mask register -// Since it use ADAPTER structure, it have to be put after structure definition. -// -static inline VOID NICDisableInterrupt( - IN PRTMP_ADAPTER pAd) -{ - RTMP_IO_WRITE32(pAd, CSR8, 0xFFFF); - RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE); -} - -static inline VOID NICEnableInterrupt( - IN PRTMP_ADAPTER pAd) -{ - // 0xFF37 : Txdone & Rxdone, 0xFF07: Txdonw, Rxdone, PrioDone, AtimDone, - RTMP_IO_WRITE32(pAd, CSR8, 0xFE14); - RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE); -} - -BOOLEAN NICCheckForHang( - IN PRTMP_ADAPTER pAd); - - -INT RT2500_close( - IN struct net_device *net_dev); - -irqreturn_t RTMPIsr( - IN INT irq, - IN VOID *dev_instance, - IN struct pt_regs *rgs); - -VOID RT2500_timer( - IN unsigned long data); - -INT RT2500_open( - IN struct net_device *net_dev); - -INT RTMPSendPackets( - IN struct sk_buff *skb, - IN struct net_device *net_dev); - -INT RT2500_probe( - IN struct pci_dev *pPci_Dev, - IN const struct pci_device_id *ent); - -INT RT2500_ioctl( - IN struct net_device *net_dev, - IN OUT struct ifreq *rq, - IN INT cmd); - -VOID RTMPRingCleanUp( - IN PRTMP_ADAPTER pAdapter, - IN UCHAR RingType); - -#if WIRELESS_EXT >= 12 -struct iw_statistics *RT2500_get_wireless_stats( - IN struct net_device *net_dev); -#endif - -struct net_device_stats *RT2500_get_ether_stats( - IN struct net_device *net_dev); - -VOID RT2500_set_rx_mode( - IN struct net_device *net_dev); - -NDIS_STATUS RTMPAllocDMAMemory( - IN PRTMP_ADAPTER pAd); - -VOID RTMPFreeDMAMemory( - IN PRTMP_ADAPTER pAd); - -VOID NICReadEEPROMParameters( - IN PRTMP_ADAPTER pAdapter); - -VOID NICInitAsicFromEEPROM( - IN PRTMP_ADAPTER pAdapter); - -VOID NICInitTransmit( - IN PRTMP_ADAPTER pAdapter); - -NDIS_STATUS NICReadAdapterInfo( - IN PRTMP_ADAPTER pAdapter); - -VOID NICInitializeAdapter( - IN PRTMP_ADAPTER pAdapter); - -VOID NICInitializeAsic( - IN PRTMP_ADAPTER pAdapter); - -VOID NICIssueReset( - IN PRTMP_ADAPTER pAdapter); - -VOID PortCfgInit( - IN PRTMP_ADAPTER pAdapter); - -VOID NICResetFromError( - IN PRTMP_ADAPTER pAdapter); - -PUCHAR RTMPFindSection( - IN PCHAR buffer, - IN PCHAR section); - -INT RTMPIsFindSection( - IN PUCHAR ptr, - IN PUCHAR buffer); - -INT RTMPGetKeyParameter( - IN PUCHAR section, - IN PCHAR key, - OUT PCHAR dest, - IN INT destsize, - IN PCHAR buffer); - -VOID RTMPReadParametersFromFile( - IN PRTMP_ADAPTER pAd); - -#define RTMPEqualMemory(p1,p2,n) (memcmp((p1),(p2),(n)) == 0) - -ULONG RTMPCompareMemory( - IN PVOID pSrc1, - IN PVOID pSrc2, - IN ULONG Length); - -void AtoH(char * src, UCHAR * dest, int destlen); -UCHAR BtoH(char ch); - -VOID RTMPInitTimer( - IN PRTMP_ADAPTER pAdapter, - IN PRALINK_TIMER_STRUCT pTimer, - IN PVOID pTimerFunc); - -VOID RTMPSetTimer( - IN PRTMP_ADAPTER pAdapter, - IN PRALINK_TIMER_STRUCT pTimer, - IN ULONG Value); - -VOID RTMPCancelTimer( - IN PRALINK_TIMER_STRUCT pTimer); - -// -// Private routines in rtmp_data.c -// -VOID RTMPHandleRxDoneInterrupt( - IN PRTMP_ADAPTER pAdapter); - -VOID RTMPHandleTxRingTxDoneInterrupt( - IN PRTMP_ADAPTER pAdapter); - -VOID RTMPHandlePrioRingTxDoneInterrupt( - IN PRTMP_ADAPTER pAdapter); - -VOID RTMPHandleAtimRingTxDoneInterrupt( - IN PRTMP_ADAPTER pAdapter); - -VOID RTMPHandleTbcnInterrupt( - IN PRTMP_ADAPTER pAdapter); - -VOID RTMPHandleTwakeupInterrupt( - IN PRTMP_ADAPTER pAdapter); - -VOID RTMPHandleDecryptionDoneInterrupt( - IN PRTMP_ADAPTER pAdapter); - -VOID RTMPHandleEncryptionDoneInterrupt( - IN PRTMP_ADAPTER pAdapter); - -VOID RTMPHardTransmitDone( - IN PRTMP_ADAPTER pAdapter, - IN PTXD_STRUC pTxD, - IN UCHAR FrameType); - -NDIS_STATUS RTMPSendPacket( - IN PRTMP_ADAPTER pAdapter, - IN struct sk_buff *skb); - -//VOID RTMPDeQueuePacket( -// IN PRTMP_ADAPTER pAdapter, -// IN PQUEUE_HEADER pQueue); - -VOID RTMPDeQueuePacket( - IN PRTMP_ADAPTER pAdapter); - -NDIS_STATUS RTMPHardEncrypt( - IN PRTMP_ADAPTER pAdapter, - IN struct sk_buff *skb, - IN UCHAR NumberRequired, - IN ULONG EnableTxBurst, - IN UCHAR AccessCategory); - -NDIS_STATUS RTMPHardTransmit( - IN PRTMP_ADAPTER pAdapter, - IN struct sk_buff *skb, - IN UCHAR NumberRequired); - -NDIS_STATUS RTMPFreeDescriptorRequest( - IN PRTMP_ADAPTER pAdapter, - IN UCHAR RingType, - IN UCHAR NumberRequired); - -VOID MlmeHardTransmit( - IN PRTMP_ADAPTER pAdapter, - IN PVOID pBuffer, - IN ULONG Length); - -USHORT RTMPCalcDuration( - IN PRTMP_ADAPTER pAdapter, - IN UCHAR Rate, - IN ULONG Size); - -VOID RTMPWriteTxDescriptor( - IN PTXD_STRUC pTxD, - IN BOOLEAN DoEncrypt, - IN UCHAR CipherAlg, - IN BOOLEAN Ack, - IN BOOLEAN Fragment, - IN BOOLEAN InsTimestamp, - IN UCHAR RetryMode, - IN UCHAR Ifs, - IN UINT Rate, - IN UCHAR Service, - IN ULONG Length, - IN USHORT TxPreamble, - IN UCHAR AccessCategory); - -BOOLEAN RTMPSearchTupleCache( - IN PRTMP_ADAPTER pAdapter, - IN PHEADER_802_11 pHeader); - -VOID RTMPUpdateTupleCache( - IN PRTMP_ADAPTER pAdapter, - IN PHEADER_802_11 pHeader); - -VOID RTMPSuspendMsduTransmission( - IN PRTMP_ADAPTER pAdapter); - -VOID RTMPResumeMsduTransmission( - IN PRTMP_ADAPTER pAdapter); - -NDIS_STATUS MiniportMMRequest( - IN PRTMP_ADAPTER pAdapter, - IN PVOID pBuffer, - IN ULONG Length); - -VOID RTMPSendNullFrame( - IN PRTMP_ADAPTER pAdapter, - IN PVOID pBuffer, - IN ULONG Length, - IN UCHAR TxRate); - -NDIS_STATUS RTMPApplyPacketFilter( - IN PRTMP_ADAPTER pAdapter, - IN PRXD_STRUC pRxD, - IN PHEADER_802_11 pHeader); - -struct sk_buff_head* RTMPCheckTxSwQueue( - IN PRTMP_ADAPTER pAdapter, - OUT UCHAR *AccessCategory); - -VOID RTMPReportMicError( - IN PRTMP_ADAPTER pAdapter, - IN PWPA_KEY pWpaKey); -// -// Private routines in rtmp_wep.c -// -VOID RTMPInitWepEngine( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pKey, - IN UCHAR KeyId, - IN UCHAR KeyLen, - IN PUCHAR pDest); - -VOID RTMPEncryptData( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pSrc, - IN PUCHAR pDest, - IN UINT Len); - -BOOLEAN RTMPDecryptData( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pSrc, - IN UINT Len); - -VOID RTMPSetICV( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pDest); - -VOID ARCFOUR_INIT( - IN PARCFOURCONTEXT Ctx, - IN PUCHAR pKey, - IN UINT KeyLen); - -UCHAR ARCFOUR_BYTE( - IN PARCFOURCONTEXT Ctx); - -VOID ARCFOUR_DECRYPT( - IN PARCFOURCONTEXT Ctx, - IN PUCHAR pDest, - IN PUCHAR pSrc, - IN UINT Len); - -VOID ARCFOUR_ENCRYPT( - IN PARCFOURCONTEXT Ctx, - IN PUCHAR pDest, - IN PUCHAR pSrc, - IN UINT Len); - -ULONG RTMP_CALC_FCS32( - IN ULONG Fcs, - IN PUCHAR Cp, - IN INT Len); - -// -// MLME routines -// -//VOID Arc4Init(ARC4_CONTEXT *Ctx, UCHAR *Key, ULONG KeyLen); -//UCHAR Arc4Byte(ARC4_CONTEXT *Ctx); -//VOID Arc4Cipher(ARC4_CONTEXT *Ctx, UCHAR *Dest, UCHAR *Src, ULONG Len); - -// Asic/RF/BBP related functions - -VOID AsicAdjustTxPower( - IN PRTMP_ADAPTER pAd); - -VOID AsicSwitchChannel( - IN PRTMP_ADAPTER pAdapter, - IN UCHAR Channel); - -VOID AsicLockChannel( - IN PRTMP_ADAPTER pAd, - IN UCHAR Channel) ; - -VOID AsicRfTuningExec( - IN unsigned long data); - -VOID AsicSleepThenAutoWakeup( - IN PRTMP_ADAPTER pAdapter, - IN USHORT TbttNumToNextWakeUp); - -VOID AsicForceSleep( - IN PRTMP_ADAPTER pAdapter); - -VOID AsicForceWakeup( - IN PRTMP_ADAPTER pAdapter); - -VOID AsicSetBssid( - IN PRTMP_ADAPTER pAdapter, - IN MACADDR *Bssid); - -VOID AsicDisableSync( - IN PRTMP_ADAPTER pAdapter); - -VOID AsicEnableBssSync( - IN PRTMP_ADAPTER pAdapter); - -VOID AsicEnableIbssSync( - IN PRTMP_ADAPTER pAdapter); - -VOID AsicLedPeriodicExec( - IN unsigned long data); - -VOID AsicSetRxAnt( - IN PRTMP_ADAPTER pAd); - -VOID AsicEvaluateSecondaryRxAnt( - IN PRTMP_ADAPTER pAd); - -VOID AsicRxAntEvalTimeout( - IN unsigned long data); - -VOID AsicSetSlotTime( - IN PRTMP_ADAPTER pAd, - IN BOOLEAN UseShortSlotTime); - -VOID AsicAdjustUsec( - IN PRTMP_ADAPTER pAd); - -VOID AsicBbpTuning( - IN PRTMP_ADAPTER pAd); - -VOID AsicRestoreBbpSensibility( - IN PRTMP_ADAPTER pAd); - -VOID MacAddrRandomBssid( - IN PRTMP_ADAPTER pAdapter, - OUT PMACADDR Addr); - -VOID MgtMacHeaderInit( - IN PRTMP_ADAPTER pAdapter, - IN OUT PMACHDR Hdr, - IN UCHAR Subtype, - IN UCHAR ToDs, -// IN UCHAR AddrType, - IN PMACADDR Ds, - IN PMACADDR Bssid); - -VOID MlmeRadioOff( - IN PRTMP_ADAPTER pAd); - -VOID MlmeRadioOn( - IN PRTMP_ADAPTER pAd); - -VOID BssTableInit( - IN BSS_TABLE *Tab); - -ULONG BssTableSearch( - IN BSS_TABLE *Tab, - IN PMACADDR Bssid); - -VOID BssTableDeleteEntry( - IN OUT BSS_TABLE *Tab, - IN PMACADDR Bssid); - -VOID BssEntrySet( - IN PRTMP_ADAPTER pAdapter, - OUT BSS_ENTRY *Bss, - IN MACADDR *Bssid, - IN CHAR Ssid[], - IN UCHAR SsidLen, - IN UCHAR BssType, - IN USHORT BeaconPeriod, - IN BOOLEAN CfExist, - IN CF_PARM *CfParm, - IN USHORT AtimWin, - IN USHORT CapabilityInfo, - IN UCHAR Rates[], - IN UCHAR RatesLen, - IN BOOLEAN ExtendedRateIeExist, - IN UCHAR Channel, - IN UCHAR Rssi, - IN LARGE_INTEGER TimeStamp, - IN PNDIS_802_11_VARIABLE_IEs pVIE); - -ULONG BssTableSetEntry( - IN PRTMP_ADAPTER pAdapter, - OUT BSS_TABLE *Tab, - IN MACADDR *Bssid, - IN CHAR Ssid[], - IN UCHAR SsidLen, - IN UCHAR BssType, - IN USHORT BeaconPeriod, - IN BOOLEAN CfExist, - IN CF_PARM *CfParm, - IN USHORT AtimWin, - IN USHORT CapabilityInfo, - IN UCHAR Rates[], - IN UCHAR RatesLen, - IN BOOLEAN ExtendedRateIeExist, - IN UCHAR Channel, - IN UCHAR Rssi, - IN LARGE_INTEGER TimeStamp, - IN PNDIS_802_11_VARIABLE_IEs pVIE); - -VOID BssTableSsidSort( - IN PRTMP_ADAPTER pAd, - OUT BSS_TABLE *OutTab, - IN CHAR Ssid[], - IN UCHAR SsidLen); - -VOID BssTableSortByRssi( - IN OUT BSS_TABLE *OutTab); - -NDIS_802_11_WEP_STATUS BssCipherParse( - IN PUCHAR pCipher); - -NDIS_STATUS MlmeQueueInit( - IN MLME_QUEUE *Queue); - -VOID MlmeQueueDestroy( - IN MLME_QUEUE *Queue); - -BOOLEAN MlmeEnqueue( - OUT MLME_QUEUE *Queue, - IN ULONG Machine, - IN ULONG MsgType, - IN ULONG MsgLen, - IN VOID *Msg); - -BOOLEAN MlmeEnqueueForRecv( - IN PRTMP_ADAPTER pAdapter, - OUT MLME_QUEUE *Queue, - IN ULONG TimeStampHigh, - IN ULONG TimeStampLow, - IN UCHAR Rssi, - IN ULONG MsgLen, - IN PVOID Msg); - -BOOLEAN MlmeDequeue( - IN MLME_QUEUE *Queue, - OUT MLME_QUEUE_ELEM **Elem); - -VOID MlmeRestartStateMachine( - IN PRTMP_ADAPTER pAd); - -BOOLEAN MlmeQueueEmpty( - IN MLME_QUEUE *Queue); - -BOOLEAN MlmeQueueFull( - IN MLME_QUEUE *Queue); - -BOOLEAN MsgTypeSubst( - IN MACFRAME *Fr, - OUT INT *Machine, - OUT INT *MsgType); - -VOID StateMachineInit( - IN STATE_MACHINE *Sm, - IN STATE_MACHINE_FUNC Trans[], - IN ULONG StNr, - IN ULONG MsgNr, - IN STATE_MACHINE_FUNC DefFunc, - IN ULONG InitState, - IN ULONG Base); - -VOID StateMachineSetAction( - IN STATE_MACHINE *S, - IN ULONG St, - ULONG Msg, - IN STATE_MACHINE_FUNC F); - -VOID StateMachinePerformAction( - IN PRTMP_ADAPTER pAdapter, - IN STATE_MACHINE *S, - IN MLME_QUEUE_ELEM *Elem); - -VOID Drop( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID StateMachineDestroy( - IN STATE_MACHINE *Sm); - -VOID AssocStateMachineInit( - IN PRTMP_ADAPTER pAdapter, - IN STATE_MACHINE *Sm, - OUT STATE_MACHINE_FUNC Trans[]); - -VOID ReassocTimeout( - IN unsigned long data); - -VOID AssocTimeout( - IN unsigned long data); - -VOID DisassocTimeout( - IN unsigned long data); - -//---------------------------------------------- -VOID MlmeDisassocReqAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID MlmeAssocReqAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID MlmeReassocReqAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID MlmeDisassocReqAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID PeerAssocRspAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID PeerReassocRspAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID PeerDisassocAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID DisassocTimeoutAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID AssocTimeoutAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID ReassocTimeoutAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID Cls3errAction( - IN PRTMP_ADAPTER pAdapter, - IN PMACADDR pAddr); - -VOID InvalidStateWhenAssoc( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID InvalidStateWhenReassoc( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID InvalidStateWhenDisassociate( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID ComposePsPoll( - IN PRTMP_ADAPTER pAdapter); - -VOID ComposeNullFrame( - IN PRTMP_ADAPTER pAdapter); - -VOID AssocPostProc( - IN PRTMP_ADAPTER pAdapter, - IN MACADDR *Addr2, - IN USHORT CapabilityInfo, - IN USHORT Aid, - IN UCHAR Rates[], - IN UCHAR RatesLen, - IN BOOLEAN ExtendedRateIeExist); - -VOID AuthStateMachineInit( - IN PRTMP_ADAPTER pAdapter, - IN PSTATE_MACHINE sm, - OUT STATE_MACHINE_FUNC Trans[]); - -VOID AuthTimeout( - IN unsigned long data); - -VOID MlmeAuthReqAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID PeerAuthRspAtSeq2Action( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID PeerAuthRspAtSeq4Action( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID AuthTimeoutAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID Cls2errAction( - IN PRTMP_ADAPTER pAdapter, - IN PMACADDR pAddr); - -VOID MlmeDeauthReqAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID InvalidStateWhenAuth( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -//VOID MlmeDeauthReqProc( -// IN PRTMP_ADAPTER pAdapter, -// IN MACADDR *Addr, -// IN USHORT Reason); - -//============================================= - -VOID AuthRspStateMachineInit( - IN PRTMP_ADAPTER pAdapter, - IN PSTATE_MACHINE Sm, - IN STATE_MACHINE_FUNC Trans[]); - - -VOID AuthRspChallengeTimeout( - IN unsigned long data); - -VOID AuthRspChallengeTimeoutAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID PeerAuthAtAuthRspIdleAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID PeerAuthAtAuthRspWaitAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID PeerDeauthAction( - IN PRTMP_ADAPTER pAdaptor, - IN MLME_QUEUE_ELEM *Elem); - -VOID PeerAuthSimpleRspGenAndSend( - IN PRTMP_ADAPTER pAdapter, - IN PMACHDR Hdr, - IN USHORT Alg, - IN USHORT Seq, - IN USHORT Reason, - IN USHORT Status); - -//======================================== - -VOID SyncStateMachineInit( - IN PRTMP_ADAPTER pAdapter, - IN STATE_MACHINE *Sm, - OUT STATE_MACHINE_FUNC Trans[]); - -VOID BeaconTimeout( - IN unsigned long data); - -VOID AtimTimeout( - IN unsigned long data); - -VOID ScanTimeout( - IN unsigned long data); - -VOID MlmeScanReqAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID InvalidStateWhenScan( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID InvalidStateWhenJoin( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID InvalidStateWhenStart( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID PeerBeacon( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID EnqueueProbeRequest( - IN PRTMP_ADAPTER pAd); - -//========================================= - -VOID MlmeCntlInit( - IN PRTMP_ADAPTER pAdapter, - IN STATE_MACHINE *S, - OUT STATE_MACHINE_FUNC Trans[]); - -VOID MlmeCntlMachinePerformAction( - IN PRTMP_ADAPTER pAdapter, - IN STATE_MACHINE *S, - IN MLME_QUEUE_ELEM *Elem); - -VOID CntlIdleProc( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID CntlOidScanProc( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID CntlOidSsidProc( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM * Elem); - -VOID CntlOidRTBssidProc( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID CntlMlmeRoamingProc( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID CntlWaitDisassocProc( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID CntlWaitJoinProc( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID CntlWaitReassocProc( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID CntlWaitStartProc( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID CntlWaitAuthProc( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID CntlWaitAuthProc2( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID CntlWaitAssocProc( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID LinkUp( - IN PRTMP_ADAPTER pAdapter, - IN UCHAR BssType); - -VOID LinkDown( - IN PRTMP_ADAPTER pAdapter); - -VOID MlmeCntlConfirm( - IN PRTMP_ADAPTER pAdapter, - IN ULONG MsgType, - IN USHORT Msg); - -VOID IterateOnBssTab( - IN PRTMP_ADAPTER pAdapter); - -VOID IterateOnBssTab2( - IN PRTMP_ADAPTER pAdapter);; - -VOID JoinParmFill( - IN PRTMP_ADAPTER pAdapter, - IN OUT MLME_JOIN_REQ_STRUCT *JoinReq, - IN ULONG BssIdx); - -VOID AssocParmFill( - IN PRTMP_ADAPTER pAdapter, - IN OUT MLME_ASSOC_REQ_STRUCT *AssocReq, - IN MACADDR *Addr, - IN USHORT CapabilityInfo, - IN ULONG Timeout, - IN USHORT ListenIntv); - -VOID ScanParmFill( - IN PRTMP_ADAPTER pAdapter, - IN OUT MLME_SCAN_REQ_STRUCT *ScanReq, - IN CHAR Ssid[], - IN UCHAR SsidLen, - IN UCHAR BssType, - IN UCHAR ScanType); - -VOID DisassocParmFill( - IN PRTMP_ADAPTER pAdapter, - IN OUT MLME_DISASSOC_REQ_STRUCT *DisassocReq, - IN MACADDR *Addr, - IN USHORT Reason); - -VOID StartParmFill( - IN PRTMP_ADAPTER pAdapter, - IN OUT MLME_START_REQ_STRUCT *StartReq, - IN CHAR Ssid[], - IN UCHAR SsidLen); - -VOID AuthParmFill( - IN PRTMP_ADAPTER pAdapter, - IN OUT MLME_AUTH_REQ_STRUCT *AuthReq, - IN MACADDR *Addr, - IN USHORT Alg); - -VOID EnqueuePsPoll( - IN PRTMP_ADAPTER pAdapter); - -VOID EnqueueBeaconFrame( - IN PRTMP_ADAPTER pAdapter); - -VOID EnqueueNullFrame( - IN PRTMP_ADAPTER pAdapter, - IN UCHAR TxRate); - -VOID MlmeJoinReqAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID MlmeScanReqAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID MlmeStartReqAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID ScanTimeoutAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID BeaconTimeoutAtJoinAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID PeerBeaconAtScanAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID PeerBeaconAtJoinAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID PeerBeacon( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID PeerProbeReqAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem); - -VOID ScanNextChannel( - IN PRTMP_ADAPTER pAdapter); - -ULONG MakeIbssBeacon( - IN PRTMP_ADAPTER pAdapter); - -BOOLEAN MlmeScanReqSanity( - IN PRTMP_ADAPTER pAdapter, - IN VOID *Msg, - IN ULONG MsgLen, - OUT UCHAR *BssType, - OUT CHAR ssid[], - OUT UCHAR *SsidLen, - OUT UCHAR *ScanType); - -BOOLEAN PeerBeaconAndProbeRspSanity( - IN PRTMP_ADAPTER pAdapter, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *Addr2, - OUT MACADDR *Bssid, - OUT CHAR Ssid[], - OUT UCHAR *SsidLen, - OUT UCHAR *BssType, - OUT USHORT *BeaconPeriod, - OUT UCHAR *Channel, - OUT LARGE_INTEGER *Timestamp, - OUT BOOLEAN *CfExist, - OUT CF_PARM *Cf, - OUT USHORT *AtimWin, - OUT USHORT *CapabilityInfo, - OUT UCHAR Rate[], - OUT UCHAR *RateLen, - OUT BOOLEAN *ExtendedRateIeExist, - OUT UCHAR *Erp, - OUT UCHAR *DtimCount, - OUT UCHAR *DtimPeriod, - OUT UCHAR *BcastFlag, - OUT UCHAR *MessageToMe, - OUT UCHAR *Legacy, - OUT UCHAR SupRate[], - OUT UCHAR *SupRateLen, - OUT UCHAR ExtRate[], - OUT UCHAR *ExtRateLen, - OUT PNDIS_802_11_VARIABLE_IEs pVIE); - -//BOOLEAN JoinParmSanity( -// IN PRTMP_ADAPTER pAdapter, -// IN VOID *Msg, -// IN ULONG MsgLen, -// OUT ULONG *BssIdx, -// OUT UCHAR SupportedRates[], -// OUT UCHAR *SupportedRatesLen); - -BOOLEAN MlmeAssocReqSanity( - IN PRTMP_ADAPTER pAdapter, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *ApAddr, - OUT USHORT *CapabilityInfo, - OUT ULONG *Timeout, - OUT USHORT *ListenIntv); - -BOOLEAN MlmeAuthReqSanity( - IN PRTMP_ADAPTER pAdapter, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *Addr, - OUT ULONG *Timeout, - OUT USHORT *Alg); - -BOOLEAN MlmeStartReqSanity( - IN PRTMP_ADAPTER pAdapter, - IN VOID *Msg, - IN ULONG MsgLen, - OUT CHAR Ssid[], - OUT UCHAR *Ssidlen); - -BOOLEAN PeerAuthSanity( - IN PRTMP_ADAPTER pAdapter, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *Addr, - OUT USHORT *Alg, - OUT USHORT *Seq, - OUT USHORT *Status, - OUT CHAR ChlgText[]); - -BOOLEAN PeerAssocRspSanity( - IN PRTMP_ADAPTER pAdapter, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *Addr2, - OUT USHORT *CapabilityInfo, - OUT USHORT *Status, - OUT USHORT *Aid, - OUT UCHAR Rates[], - OUT UCHAR *RatesLen, - OUT BOOLEAN *ExtendedRateIeExist); - -BOOLEAN PeerDisassocSanity( - IN PRTMP_ADAPTER pAdapter, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *Addr2, - OUT USHORT *Reason); - -BOOLEAN PeerDeauthSanity( - IN PRTMP_ADAPTER pAdapter, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *Addr2, - OUT USHORT *Reason); - -BOOLEAN PeerProbeReqSanity( - IN PRTMP_ADAPTER pAdapter, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *Addr2, - OUT CHAR Ssid[], - OUT UCHAR *SsidLen); -// OUT UCHAR Rates[], -// OUT UCHAR *RatesLen); - -BOOLEAN GetTimBit( - IN CHAR *Ptr, - IN USHORT Aid, - OUT UCHAR *TimLen, - OUT UCHAR *BcastFlag, - OUT UCHAR *DtimCount, - OUT UCHAR *DtimPeriod, - OUT UCHAR *MessageToMe); - -BOOLEAN GetLegacy( - IN CHAR *Ptr, - OUT UCHAR *Legacy); - -ULONG MakeOutgoingFrame( - OUT CHAR *Buffer, - OUT ULONG *Length, ...); - -VOID LfsrInit( - IN PRTMP_ADAPTER pAdapter, - IN ULONG Seed); - -UCHAR RandomByte( - IN PRTMP_ADAPTER pAdapter); - -VOID MlmePeriodicExec( - IN unsigned long data); - -VOID MlmeAutoScan( - IN PRTMP_ADAPTER pAdapter); - -VOID MlmeAutoRecoverNetwork( - IN PRTMP_ADAPTER pAdapter); - -VOID MlmeAutoReconnectLastSSID( - IN PRTMP_ADAPTER pAdapter); - -VOID MlmeCheckForRoaming( - IN PRTMP_ADAPTER pAdapter, - IN ULONG Now32); - -VOID MlmeCheckDynamicTxRateSwitching( - IN PRTMP_ADAPTER pAd); - -VOID MlmeCheckChannelQuality( - IN PRTMP_ADAPTER pAdapter, - IN ULONG Now); - -VOID MlmeCheckForPsmChange( - IN PRTMP_ADAPTER pAdapter, - IN ULONG Now32); - -VOID MlmeSetPsmBit( - IN PRTMP_ADAPTER pAdapter, - IN USHORT psm); - -VOID MlmeSetTxPreamble( - IN PRTMP_ADAPTER pAdapter, - IN USHORT TxPreamble); - -VOID MlmeUpdateTxRates( - IN PRTMP_ADAPTER pAdapter, - IN BOOLEAN bLinkUp); - -NDIS_STATUS MlmeInit( - IN PRTMP_ADAPTER pAdapter); - -VOID MlmeHandler( - IN PRTMP_ADAPTER pAdapter); - -VOID MlmeHalt( - IN PRTMP_ADAPTER pAdapter); - -NDIS_STATUS MlmeInitMemoryHandler( - IN PRTMP_ADAPTER pAd, - IN UINT Number, - IN UINT Size); - -NDIS_STATUS MlmeAllocateMemory( - IN PRTMP_ADAPTER pAd, - OUT PVOID *AllocVa); - -VOID MlmeFreeMemory( - IN PRTMP_ADAPTER pAd, - IN PVOID AllocVa); - -VOID MlmeFreeMemoryHandler( - IN PRTMP_ADAPTER pAd); - -VOID BuildChannelList( - IN PRTMP_ADAPTER pAdapter); - -UCHAR FirstChannel( - IN PRTMP_ADAPTER pAdapter); - -UCHAR NextChannel( - IN PRTMP_ADAPTER pAdapter, - IN UCHAR channel); - -VOID RaiseClock( - IN PRTMP_ADAPTER pAd, - IN ULONG *x); - -VOID LowerClock( - IN PRTMP_ADAPTER pAd, - IN ULONG *x); - -USHORT ShiftInBits( - IN PRTMP_ADAPTER pAd); - -VOID ShiftOutBits( - IN PRTMP_ADAPTER pAd, - IN USHORT data, - IN USHORT count); - -VOID EEpromCleanup( - IN PRTMP_ADAPTER pAd); - -VOID EWDS( - IN PRTMP_ADAPTER pAd); - -VOID EWEN( - IN PRTMP_ADAPTER pAd); - -USHORT RTMP_EEPROM_READ16( - IN PRTMP_ADAPTER pAd, - IN USHORT Offset); - -VOID RTMP_EEPROM_WRITE16( - IN PRTMP_ADAPTER pAd, - IN USHORT Offset, - IN USHORT Data); - -UCHAR ChannelSanity( - IN PRTMP_ADAPTER pAd, - IN UCHAR channel); - -// -// Prototypes of function definition in rtmp_tkip.c -// -VOID RTMPInitTkipEngine( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pTKey, - IN UCHAR KeyId, - IN PUCHAR pTA, - IN PUCHAR pMICKey, - IN PUCHAR pTSC, - OUT PULONG pIV16, - OUT PULONG pIV32); - -VOID RTMPInitMICEngine( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pKey, - IN PUCHAR pDA, - IN PUCHAR pSA, - IN PUCHAR pMICKey); - -BOOLEAN RTMPTkipCompareMICValue( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pSrc, - IN PUCHAR pDA, - IN PUCHAR pSA, - IN PUCHAR pMICKey, - IN UINT Len); - -VOID RTMPCalculateMICValue( - IN PRTMP_ADAPTER pAdapter, - IN struct sk_buff *skb, - IN PUCHAR pEncap, - IN INT LenEncap, - IN PWPA_KEY pWpaKey); - -BOOLEAN RTMPTkipCompareMICValueWithLLC( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pLLC, - IN PUCHAR pSrc, - IN PUCHAR pDA, - IN PUCHAR pSA, - IN PUCHAR pMICKey, - IN UINT Len); - -VOID RTMPTkipAppend( - IN PTKIP_KEY_INFO pTkip, - IN PUCHAR pSrc, - IN UINT nBytes); - -VOID RTMPTkipGetMIC( - IN PTKIP_KEY_INFO pTkip); - -NDIS_STATUS RTMPWPAAddKeyProc( - IN PRTMP_ADAPTER pAdapter, - IN PVOID pBuf); - -NDIS_STATUS RTMPWPARemoveKeyProc( - IN PRTMP_ADAPTER pAdapter, - IN PVOID pBuf); - -VOID RTMPWPARemoveAllKeys( - IN PRTMP_ADAPTER pAdapter); - -VOID RTMPSetPhyMode( - IN PRTMP_ADAPTER pAdapter, - IN ULONG phymode); - -VOID RTMPSetDesiredRates( - IN PRTMP_ADAPTER pAdapter, - IN LONG Rates); - -INT RTMPSetInformation( - IN PRTMP_ADAPTER pAdapter, - IN OUT struct ifreq *rq, - IN INT cmd); - -INT RTMPQueryInformation( - IN PRTMP_ADAPTER pAdapter, - IN OUT struct ifreq *rq, - IN INT cmd); - -// -// Prototypes of function definition for *iwpriv* in rtmp_info.c -// -INT Set_CountryRegion_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_SSID_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_WirelessMode_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_TxRate_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_AdhocModeRate_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_Channel_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR - arg); - -#ifdef RT2500_DBG -INT Set_Debug_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); -#endif - -INT Set_BGProtection_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_TxPreamble_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_StaWithEtherBridge_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_RTSThreshold_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_FragThreshold_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_TxBurst_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_TurboRate_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_NetworkType_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_AuthMode_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_EncrypType_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_DefaultKeyID_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_Key1_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_Key2_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_Key3_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_Key4_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_WPAPSK_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_WPANONE_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -VOID RTMPIoctlBBP( - IN PRTMP_ADAPTER pAdapter, - IN struct iwreq *wrq); - -VOID RTMPIoctlMAC( - IN PRTMP_ADAPTER pAdapter, - IN struct iwreq *wrq); - -#ifdef RALINK_ATE -VOID RTMPIoctlE2PROM( - IN PRTMP_ADAPTER pAdapter, - IN struct iwreq *wrq); -#endif - -// -// prototype in wpa.c -// -BOOLEAN WpaMsgTypeSubst( - IN UCHAR EAPType, - OUT ULONG *MsgType); - -VOID WpaPskStateMachineInit( - IN PRTMP_ADAPTER pAd, - IN STATE_MACHINE *S, - OUT STATE_MACHINE_FUNC Trans[]); - -VOID WpaEAPOLKeyAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID WpaPairMsg1Action( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID WpaPairMsg3Action( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID WpaGroupMsg1Action( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem); - -VOID WpaMacHeaderInit( - IN PRTMP_ADAPTER pAd, - IN OUT PHEADER_802_11 Hdr, - IN UCHAR wep, - IN PMACADDR pAddr1); - -VOID WpaHardEncrypt( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pPacket, - IN ULONG Len); - -VOID HMAC_SHA1( - IN UCHAR *text, - IN UINT text_len, - IN UCHAR *key, - IN UINT key_len, - IN UCHAR *digest); - -VOID PRF( - IN UCHAR *key, - IN INT key_len, - IN UCHAR *prefix, - IN INT prefix_len, - IN UCHAR *data, - IN INT data_len, - OUT UCHAR *output, - IN INT len); - -VOID WpaCountPTK( - IN UCHAR *PMK, - IN UCHAR *ANonce, - IN UCHAR *AA, - IN UCHAR *SNonce, - IN UCHAR *SA, - OUT UCHAR *output, - IN UINT len); - -VOID GenRandom( - IN PRTMP_ADAPTER pAd, - OUT UCHAR *random); - -VOID AES_GTK_KEY_UNWRAP( - IN UCHAR *key, - OUT UCHAR *plaintext, - IN UCHAR *ciphertext); - -ULONG RTMPTkipGetUInt32( - IN PUCHAR pMICKey); - -char * rtstrstr( - IN const char * s1, - IN const char * s2); - -#ifdef RALINK_ATE -INT Set_ATE_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_ATE_DA_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_ATE_SA_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_ATE_BSSID_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_ATE_CHANNEL_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_ATE_TX_POWER_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_ATE_TX_LENGTH_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_ATE_TX_COUNT_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -INT Set_ATE_TX_RATE_Proc( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR arg); - -VOID RTMPStationStop( - IN PRTMP_ADAPTER pAd); - -VOID RTMPStationStart( - IN PRTMP_ADAPTER pAd); - -#endif //#ifdef RALINK_ATE - -int rt2500_set_mac_address(struct net_device *net_dev, void *addr); - -#ifdef BIG_ENDIAN -VOID RTMPFrameEndianChange( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pData, - IN ULONG Dir, - IN BOOLEAN FromRxDoneInt); - -VOID RTMPDescriptorEndianChange( - IN PUCHAR pData, - IN ULONG DescriptorType); -#endif - -#endif // __RTMP_H__ +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: rt_config.h + * + * Abstract: Central header file for all includes + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * RoryC 21st Dec 02 Initial code + * MarkW 8th Dec 04 Baseline code + * MarkW (rt2400) 8th Dec 04 Promisc mode support + * Flavio (rt2400) 8th Dec 04 Elegant irqreturn_t handling + * RobinC 10th Dec 04 RFMON Support + * MarkW 10th Dec 04 Rolled in Ralink 1.4.5.0 + * MarkW (rt2400) 15th Dec 04 Spinlock fix + * Ivo (rt2400) 15th Dec 04 Debug level switching + * GregorG 29th Mar 05 Big endian fixes + ***************************************************************************/ + +#ifndef __RTMP_H__ +#define __RTMP_H__ + +#include "mlme.h" +#include "oid.h" +#include "wpa.h" + +#ifndef IRQ_HANDLED +/* For 2.6.x compatability */ +typedef void irqreturn_t; +#define IRQ_NONE +#define IRQ_HANDLED +#define IRQ_RETVAL(x) +#endif + +#ifndef pci_name +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) +#define pci_name(__pPci_Dev) (__pPci_Dev)->dev.bus_id +#else /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) */ +#define pci_name(__pPci_Dev) (__pPci_Dev)->slot_name +#endif /*(LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) */ +#endif /* pci_name */ + + +// Krellan: Limit range of user TxPower settings from -31 to +0 dBm. +// We could accept -31 to +31 dBm, relative to 0 dBm which is defined +// as the EEPROM's recommended power setting. +// Raw power settings out of 0-31 range are always clamped later. +// This would allow all possible raw power settings to be exercised, +// from 0-31, no matter what the scaled dBm range from EEPROM +// ends up becoming. +// This would be for testing only, under controlled conditions. +#define MIN_TXPOWER_DBM (-31) +#define MAX_TXPOWER_DBM (0) + + +// +// Defines the state of the LAN media +// +typedef enum _NDIS_MEDIA_STATE +{ + NdisMediaStateConnected, + NdisMediaStateDisconnected +} NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE; + +// +// MACRO for debugging information +// +extern int debug; +#ifdef RT2500_DBG +#define DBGPRINT(Level, fmt, args...) \ + if(debug){printk(Level DRV_NAME ": " fmt, ## args);} +#else +#define DBGPRINT(Level, fmt, args...) \ + while(0){} +#endif + +// +// spin_lock enhanced for Nested spin lock +// + +extern unsigned long IrqFlags; + +// Assert MACRO to make sure program running +// +#undef ASSERT +#define ASSERT(x) \ +{ \ + if (!(x)) \ + { \ + printk(KERN_WARNING __FILE__ ":%d assert " #x "failed\n", __LINE__); \ + } \ +} + +// +// Macros for flag and ref count operations +// +#define RTMP_SET_FLAG(_M, _F) ((_M)->Flags |= (_F)) +#define RTMP_CLEAR_FLAG(_M, _F) ((_M)->Flags &= ~(_F)) +#define RTMP_CLEAR_FLAGS(_M) ((_M)->Flags = 0) +#define RTMP_TEST_FLAG(_M, _F) (((_M)->Flags & (_F)) != 0) +#define RTMP_TEST_FLAGS(_M, _F) (((_M)->Flags & (_F)) == (_F)) + +#define RTMP_INC_RCV_REF(_A) ((_A)->RcvRefCount++) +#define RTMP_DEC_RCV_REF(_A) ((_A)->RcvRefCount--) +#define RTMP_GET_RCV_REF(_A) ((_A)->RcvRefCount) + +#define RTMP_INC_SEND_REF(_A) ((_A)->SendRefCount++) +#define RTMP_DEC_SEND_REF(_A) ((_A)->SendRefCount--) +#define RTMP_GET_SEND_REF(_A) ((_A)->SendRefCount) + +#define NdisEqualMemory(Source1, Source2, Length) RTMPEqualMemory(Source1, Source2, Length) + +// +// MACRO for 32-bit PCI register read / write +// +// Usage : RTMP_IO_READ32( +// PRTMP_ADAPTER pAdapter, +// ULONG Register_Offset, +// PULONG pValue) +// +// RTMP_IO_WRITE32( +// PRTMP_ADAPTER pAdapter, +// ULONG Register_Offset, +// ULONG Value) +// +#ifdef RTMP_EMBEDDED +#define RTMP_IO_READ32(_A, _R, _pV) (*_pV = PCIMemRead32(__mem_pci(_A->CSRBaseAddress+_R))) +#define RTMP_IO_WRITE32(_A, _R, _V) (PCIMemWrite32(__mem_pci(_A->CSRBaseAddress+_R),_V)) +#else +#define RTMP_IO_READ32(_A, _R, _pV) (*_pV = readl( (void*) (_A->CSRBaseAddress + _R) ) ) +#define RTMP_IO_WRITE32(_A, _R, _V) (writel(_V, (void*) (_A->CSRBaseAddress + _R) ) ) +#endif + +// +// BBP & RF are using indirect access. Before write any value into it. +// We have to make sure there is no outstanding command pending via checking busy bit. +// +#define MAX_BUSY_COUNT 10 // Nunber of retry before failing access BBP & RF indirect register +// +#define RTMP_BBP_IO_WRITE32(_A, _V) \ +{ \ + BBPCSR_STRUC Value; \ + ULONG BusyCnt = 0; \ + do { \ + RTMP_IO_READ32(_A, BBPCSR, &Value.word); \ + if (Value.field.Busy == IDLE) \ + break; \ + BusyCnt++; \ + } while (BusyCnt < MAX_BUSY_COUNT); \ + if (BusyCnt < MAX_BUSY_COUNT) \ + { \ + RTMP_IO_WRITE32(_A, BBPCSR, _V); \ + } \ +} +// +#define RTMP_RF_IO_WRITE32(_A, _V) \ +{ \ + RFCSR_STRUC Value; \ + ULONG BusyCnt = 0; \ + do { \ + RTMP_IO_READ32(_A, RFCSR, &(Value.word)); \ + if (Value.field.Busy == IDLE) \ + break; \ + BusyCnt++; \ + } while (BusyCnt < MAX_BUSY_COUNT); \ + if (BusyCnt < MAX_BUSY_COUNT) \ + { \ + RTMP_IO_WRITE32(_A, RFCSR, _V); \ + } \ +} +// +#define RTMP_BBP_IO_READ32(_A, _pV) \ +{ \ + BBPCSR_STRUC Value; \ + ULONG BusyCnt = 0; \ + RTMP_BBP_IO_WRITE32(_A, *(_pV)); \ + do { \ + RTMP_IO_READ32(_A, BBPCSR, &Value.word);\ + if (Value.field.Busy == IDLE) \ + break; \ + BusyCnt++; \ + } while (BusyCnt < MAX_BUSY_COUNT); \ + if (BusyCnt == MAX_BUSY_COUNT) \ + *(_pV) = 0xff; \ + else \ + *(_pV) = Value.field.Value; \ +} +// Read BBP register by register's ID +#define RTMP_BBP_IO_READ32_BY_REG_ID(_A, _I, _pV) \ +{ \ + BBPCSR_STRUC BbpCsr; \ + BbpCsr.word = 0; \ + BbpCsr.field.WriteControl = 0; \ + BbpCsr.field.Busy = 1; \ + BbpCsr.field.RegNum = _I; \ + RTMP_BBP_IO_READ32(_A, &BbpCsr.word); \ + *(_pV) = (UCHAR) BbpCsr.field.Value; \ +} +// Write BBP register by register's ID & value +#define RTMP_BBP_IO_WRITE32_BY_REG_ID(_A, _I, _V) \ +{ \ + BBPCSR_STRUC BbpCsr; \ + BbpCsr.word = 0; \ + BbpCsr.field.WriteControl = 1; \ + BbpCsr.field.Busy = 1; \ + BbpCsr.field.Value = _V; \ + BbpCsr.field.RegNum = _I; \ + RTMP_BBP_IO_WRITE32(_A, BbpCsr.word); \ + (_A)->PortCfg.BbpWriteLatch[_I] = _V; \ +} + + +// +// Some utility macros +// +#ifndef min +#define min(_a, _b) (((_a) < (_b)) ? (_a) : (_b)) +#endif + +#ifndef max +#define max(_a, _b) (((_a) > (_b)) ? (_a) : (_b)) +#endif + +#define INC_COUNTER(Val) (Val.QuadPart++) + +#define INFRA_ON(_p) (((_p)->PortCfg.Massoc) == TRUE) // Check Massoc +#define ADHOC_ON(_p) (((_p)->PortCfg.Mibss) == TRUE) // check Mibss +#define RTMP_SET_PACKET_FRAGMENTS(_p, number) ((_p)->cb[10] = number) +#define RTMP_GET_PACKET_FRAGMENTS(_p) ((_p)->cb[10]) +#define RTMP_SET_PACKET_RTS(_p, number) ((_p)->cb[11] = number) +#define RTMP_GET_PACKET_RTS(_p) ((_p)->cb[11]) + +#define MAKE_802_3_HEADER(_p, _pMac1, _pMac2, _pType) \ +{ \ + memcpy(_p, _pMac1, ETH_ALEN); \ + memcpy((_p + ETH_ALEN), _pMac2, ETH_ALEN); \ + memcpy((_p + ETH_ALEN * 2), _pType, LENGTH_802_3_TYPE); \ +} + +// if pData has no LLC/SNAP (neither RFC1042 nor Bridge tunnel), keep it that way. +// else if the received frame is LLC/SNAP-encaped IPX or APPLETALK, preserve the LLC/SNAP field in the result Ethernet frame +// else remove the LLC/SNAP field from the result Ethernet frame +// Note: +// _pData & _DataSize may be altered (remove 8-byte LLC/SNAP) by this MACRO +#define CONVERT_TO_802_3(_p8023hdr, _pDA, _pSA, _pData, _DataSize) \ +{ \ + char LLC_Len[2]; \ + \ + if ((!RTMPEqualMemory(SNAP_802_1H, _pData, 6)) && \ + (!RTMPEqualMemory(SNAP_BRIDGE_TUNNEL, _pData, 6))) \ + { \ + LLC_Len[0] = (UCHAR)(_DataSize / 256); \ + LLC_Len[1] = (UCHAR)(_DataSize % 256); \ + MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, LLC_Len); \ + } \ + else \ + { \ + PUCHAR pProto = _pData + 6; \ + \ + if ((RTMPEqualMemory(IPX, pProto, 2) || RTMPEqualMemory(APPLE_TALK, pProto, 2)) && \ + RTMPEqualMemory(SNAP_802_1H, _pData, 6)) \ + { \ + LLC_Len[0] = (UCHAR)(_DataSize / 256); \ + LLC_Len[1] = (UCHAR)(_DataSize % 256); \ + MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, LLC_Len); \ + } \ + else \ + { \ + MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, pProto); \ + _DataSize -= LENGTH_802_1_H; \ + _pData += LENGTH_802_1_H; \ + } \ + } \ +} + +// +// Register set pair for initialzation register set definition +// +typedef struct _RTMP_REG_PAIR +{ + ULONG Register; + ULONG Value; +} RTMP_REG_PAIR, *PRTMP_REG_PAIR; + +// +// Register set pair for initialzation register set definition +// +typedef struct _RTMP_RF_REGS +{ + UCHAR Channel; + ULONG R1; + ULONG R2; + ULONG R3; + ULONG R4; +} RTMP_RF_REGS, *PRTMP_RF_REGS; + +// +// Statistic counter structure +// +typedef struct _COUNTER_802_3 +{ + // General Stats + ULONG GoodTransmits; + ULONG GoodReceives; + ULONG TxErrors; + ULONG RxErrors; + ULONG RxNoBuffer; + + // Ethernet Stats + ULONG RcvAlignmentErrors; + ULONG OneCollision; + ULONG MoreCollisions; + +} COUNTER_802_3, *PCOUNTER_802_3; + +typedef struct _COUNTER_802_11 { + ULONG Length; + LARGE_INTEGER TransmittedFragmentCount; + LARGE_INTEGER MulticastTransmittedFrameCount; + LARGE_INTEGER FailedCount; + LARGE_INTEGER RetryCount; + LARGE_INTEGER MultipleRetryCount; + LARGE_INTEGER RTSSuccessCount; + LARGE_INTEGER RTSFailureCount; + LARGE_INTEGER ACKFailureCount; + LARGE_INTEGER FrameDuplicateCount; + LARGE_INTEGER ReceivedFragmentCount; + LARGE_INTEGER MulticastReceivedFrameCount; + LARGE_INTEGER FCSErrorCount; +} COUNTER_802_11, *PCOUNTER_802_11; + +typedef struct _COUNTER_RALINK { + ULONG TransmittedByteCount; // both successful and failure, used to calculate TX throughput + ULONG ReceivedByteCount; // both CRC okay and CRC error, used to calculate RX throughput + ULONG BeenDisassociatedCount; + ULONG BadCQIAutoRecoveryCount; + ULONG PoorCQIRoamingCount; + ULONG MgmtRingFullCount; + ULONG RxCount; + ULONG DecryptCount; + ULONG RxRingErrCount; + ULONG EncryptCount; + ULONG KickTxCount; + ULONG TxRingErrCount; + LARGE_INTEGER RealFcsErrCount; +} COUNTER_RALINK, *PCOUNTER_RALINK; + +typedef struct _COUNTER_DRS { + // to record the each TX rate's quality. 0 is best, the bigger the worse. + USHORT TxQuality[MAX_LEN_OF_SUPPORTED_RATES]; + UCHAR PER[MAX_LEN_OF_SUPPORTED_RATES]; + USHORT OneSecTxOkCount; + USHORT OneSecTxRetryOkCount; + USHORT OneSecTxFailCount; + UCHAR TxRateUpPenalty; // extra # of second penalty due to last unstable condition + ULONG CurrTxRateStableTime; // # of second in current TX rate + BOOLEAN fNoisyEnvironment; + UCHAR LastSecTxRateChangeAction; // 0: no change, 1:rate UP, 2:rate down +} COUNTER_DRS, *PCOUNTER_DRS; + +// +// Arcfour Structure Added by PaulWu +// +typedef struct PACKED _ARCFOUR +{ + UINT X; + UINT Y; + UCHAR STATE[256]; +} ARCFOURCONTEXT, *PARCFOURCONTEXT; + +// Shared key data structure +typedef struct _WEP_KEY { + UCHAR KeyLen; // Key length for each key, 0: entry is invalid + UCHAR Key[MAX_LEN_OF_KEY]; // right now we implement 4 keys, 128 bits max +} WEP_KEY, *PWEP_KEY; + +// Shared key data structure +typedef struct _WPA_KEY { + UCHAR KeyLen; // Key length for each key, 0: entry is invalid + UCHAR Key[16]; // right now we implement 4 keys, 128 bits max + UCHAR RxMic[8]; + UCHAR TxMic[8]; + NDIS_802_11_MAC_ADDRESS BssId; // For pairwise key only + UCHAR TxTsc[6]; // 48bit TSC value + UCHAR RxTsc[6]; // 48bit TSC value + UCHAR Type; // Indicate Pairwise / Group +} WPA_KEY, *PWPA_KEY; + +#if 0 +typedef struct _IV_CONTROL_ +{ + union + { + struct + { + UCHAR rc0; + UCHAR rc1; + UCHAR rc2; + + union + { + struct + { +#ifdef BIG_ENDIAN + UCHAR KeyID:2; + UCHAR ExtIV:1; + UCHAR Rsvd:5; +#else + UCHAR Rsvd:5; + UCHAR ExtIV:1; + UCHAR KeyID:2; +#endif + } field; + UCHAR Byte; + } CONTROL; + } field; + + ULONG word; + } IV16; + + ULONG IV32; +} TKIP_IV, *PTKIP_IV; +#endif + +typedef struct _IV_CONTROL_ +{ + union + { + struct + { +#ifdef BIG_ENDIAN + ULONG KeyID:2; + ULONG ExtIV:1; + ULONG Rsvd:5; + ULONG rc2:8; + ULONG rc1:8; + ULONG rc0:8; +#else + ULONG rc0:8; + ULONG rc1:8; + ULONG rc2:8; + ULONG Rsvd:5; + ULONG ExtIV:1; + ULONG KeyID:2; +#endif + }field; + ULONG word; + }IV16; + + ULONG IV32; +} TKIP_IV, *PTKIP_IV; + +// configuration to be used when this STA starts a new ADHOC network +typedef struct _IBSS_CONFIG { + USHORT BeaconPeriod; + USHORT AtimWin; + UCHAR Channel; + UCHAR SupportedRates[MAX_LEN_OF_SUPPORTED_RATES]; // Supported rates + UCHAR SupportedRatesLen; +} IBSS_CONFIG, *PIBSS_CONFIG; + +typedef struct _LED_CONTROL { + BOOLEAN fOdd; + BOOLEAN fRxActivity; + RALINK_TIMER_STRUCT BlinkTimer; // 50 ms periodic timer + ULONG LastLedCsr; +} LED_CONTROL; + +typedef struct _BBP_TUNING_STRUCT { + BOOLEAN Enable; + UCHAR FalseCcaCountUpperBound; // 100 per sec + UCHAR FalseCcaCountLowerBound; // 10 per sec + UCHAR R17LowerBound; // specified in E2PROM + UCHAR R17UpperBound; // 0x68 according to David Tung + UCHAR CurrentR17Value; +} BBP_TUNING, *PBBP_TUNING; + +typedef struct _SOFT_RX_ANT_DIVERSITY_STRUCT { + BOOLEAN PrimaryInUsed; + BOOLEAN FirstPktArrivedWhenEvaluate; + UCHAR PrimaryRxAnt; // 0:Ant-A, 1:Ant-B + UCHAR SecondaryRxAnt; // 0:Ant-A, 1:Ant-B + UCHAR CurrentRxAnt; // 0:Ant-A, 1:Ant-B + USHORT AvgRssi[2]; // AvgRssi[0]:Ant-A, AvgRssi[1]:Ant-B + ULONG RcvPktNumWhenEvaluate; + RALINK_TIMER_STRUCT RxAntDiversityTimer; +} SOFT_RX_ANT_DIVERSITY, *PSOFT_RX_ANT_DIVERSITY; + +typedef struct _STA_WITH_ETHER_BRIDGE_STRUCT { + BOOLEAN Enable; + MACADDR EtherMacAddr; +} STA_WITH_ETHER_BRIDGE, *PSTA_WITH_ETHER_BRIDGE; + +// PortConfig +typedef struct _PORT_CONFIG { + + // MIB:ieee802dot11.dot11smt(1).dot11StationConfigTable(1) + USHORT CapabilityInfo; + USHORT Psm; // power management mode (PWR_ACTIVE|PWR_SAVE) + USHORT BeaconPeriod; // in units of TU + + USHORT CfpMaxDuration; + USHORT CfpDurRemain; + USHORT CfpCount; + USHORT CfpPeriod; + + USHORT DisassocReason; + MACADDR DisassocSta; + USHORT DeauthReason; + MACADDR DeauthSta; + USHORT AuthFailReason; + MACADDR AuthFailSta; + + NDIS_802_11_AUTHENTICATION_MODE AuthMode; // This should match to whatever microsoft defined + NDIS_802_11_WEP_STATUS WepStatus; + + // MIB:ieee802dot11.dot11smt(1).dot11WEPDefaultKeysTable(3) + WEP_KEY SharedKey[SHARE_KEY_NO]; // Keep for backward compatiable + WPA_KEY PairwiseKey[PAIRWISE_KEY_NO]; + WPA_KEY GroupKey[GROUP_KEY_NO]; + WPA_KEY PskKey; // WPA PSK mode PMK + UCHAR PTK[64]; + + // WPA 802.1x port control, WPA_802_1X_PORT_SECURED, WPA_802_1X_PORT_NOT_SECURED + UCHAR PortSecured; + + // For WPA countermeasures + ULONG LastMicErrorTime; // record last MIC error time + ULONG MicErrCnt; // Should be 0, 1, 2, then reset to zero (after disassoiciation). + BOOLEAN bBlockAssoc; // Block associate attempt for 60 seconds after counter measure occurred. + // For WPA-PSK supplicant state + WPA_STATE WpaState; // Default is SS_NOTUSE and handled by microsoft 802.1x + UCHAR ReplayCounter[8]; + UCHAR ANonce[32]; // ANonce for WPA-PSK from aurhenticator + UCHAR SNonce[32]; // SNonce for WPA-PSK + + // MIB:ieee802dot11.dot11smt(1).dot11WEPKeyMappingsTable(4) + // not implemented yet + + // MIB:ieee802dot11.dot11smt(1).dot11PrivacyTable(5) + UCHAR DefaultKeyId; + NDIS_802_11_PRIVACY_FILTER PrivacyFilter; // PrivacyFilter enum for 802.1X + + // MIB:ieee802dot11.dot11mac(2).dot11OperationTable(1) + USHORT RtsThreshold; // in units of BYTE + USHORT FragmentThreshold; + BOOLEAN bFragmentZeroDisable; // Microsoft use 0 as disable + + // MIB:ieee802dot11.dot11phy(4).dot11PhyAntennaTable(2) + UCHAR CurrentTxAntenna; + UCHAR CurrentRxAntenna; + UCHAR NumberOfAntenna; + + // MIB:ieee802dot11.dot11phy(4).dot11PhyTxPowerTable(3) + UCHAR CurrentTxPowerLevelIndex; //default&other value=MaxPower,1=MinPower,2=1*MaxPower/4,3=2*MaxPower/4,4=3*MaxPower/4, + UCHAR TxPower; + UCHAR TxRate; // RATE_1, RATE_2, RATE_5_5, RATE_11, ... + BOOLEAN EnableAutoRateSwitching; // 1 - enable auto rate switching; 0 - disable + // Krellan: Now using this instead of TxPowerPercentage + UCHAR TxPowerDriver; // Driver's last TxPower setting written to hardware, in raw units + int TxPowerUser; // User's desired fixed TxPower setting, in dBm + BOOLEAN TxPowerAuto; // 1 - enable auto TxPower; 0 - fixed + + // MIB:ieee802dot11.dot11phy(4).dot11PhyDSSSTable(5) + UCHAR Channel; // current (I)BSS channel used in the station + UCHAR CountryRegion; // Enum of country region, 0:FCC, 1:IC, 2:ETSI, 3:SPAIN, 4:France, 5:MKK, 6:MKK1, 7:Israel + + // MIB:ieee802dot11.dot11phy(4).dot11AntennasListTable(8) + BOOLEAN AntennaSupportTx; + BOOLEAN AntennaSupportRx; + BOOLEAN AntennaSupportDiversityRx; + + // Use user changed MAC + BOOLEAN bLocalAdminMAC; + + // MIB:ieee802dot11.dot11phy(4).dot11SupportedDataRatesTxTable(9) + // MIB:ieee802dot11.dot11phy(4).dot11SupportedDataRatesRxTable(10) + UCHAR SupportedRates[MAX_LEN_OF_SUPPORTED_RATES]; // Supported rates + UCHAR SupportedRatesLen; + UCHAR ExpectedACKRate[MAX_LEN_OF_SUPPORTED_RATES]; + // Copy supported rate from desired AP's beacon. We are trying to match + // AP's supported and extended rate settings. + UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES]; + UCHAR ExtRate[MAX_LEN_OF_SUPPORTED_RATES]; + UCHAR SupRateLen; + UCHAR ExtRateLen; + + // + // other parameters not defined in standard MIB + // + UCHAR DesiredRates[MAX_LEN_OF_SUPPORTED_RATES]; // OID_802_11_DESIRED_RATES + UCHAR MaxDesiredRate; + USHORT RecvDtim; + MACADDR Bssid; + MACADDR Broadcast; // FF:FF:FF:FF:FF:FF + USHORT Pss; // current power saving status (PWR_SAVE|PWR_ACTIVE) + UCHAR RssiTrigger; + UCHAR RssiTriggerMode; // RSSI_TRIGGERED_UPON_BELOW_THRESHOLD or RSSI_TRIGGERED_UPON_EXCCEED_THRESHOLD + UCHAR LastRssi; // last received BEACON's RSSI + SHORT LastAvgRssi; // last + USHORT AvgRssi; // last 8 BEACON's average RSSI + USHORT AtimWin; // in kusec; IBSS parameter set element + USHORT Aid; // association ID + UCHAR RtsRate; // RATE_xxx + UCHAR MlmeRate; // RATE_xxx, used to send MLME frames + UCHAR MaxTxRate; // RATE_xxx + USHORT DefaultListenCount; // default listen count; + UCHAR BssType; // BSS_INFRA or BSS_INDEP + + UCHAR SsidLen; // the actual ssid length in used + CHAR Ssid[MAX_LEN_OF_SSID]; // NOT NULL-terminated + + BSS_TABLE BssTab; // BSS Table + + // global variables mXXXX used in MAC protocol state machines + BOOLEAN Mibss; + BOOLEAN Massoc; + BOOLEAN Mauth; + + // RFMON logic flags + BOOLEAN MallowRFMONTx; + + // PHY specification + UCHAR PhyMode; // PHY_11A, PHY_11B, PHY_11BG_MIXED, PHY_ABG_MIXED + USHORT Dsifs; // in units of usec + + ULONG WindowsPowerMode; // Power mode for AC power + ULONG WindowsBatteryPowerMode; // Power mode for battery if exists + BOOLEAN WindowsACCAMEnable; // Enable CAM power mode when AC on + ULONG PacketFilter; // Packet filter for receiving + BOOLEAN AutoReconnect; // Set to TRUE when setting OID_802_11_SSID with no matching BSSID + + ULONG WindowsTxPreamble; // Rt802_11PreambleLong, Rt802_11PreambleShort, Rt802_11PreambleAuto + + UCHAR ChannelTxPower[MAX_LEN_OF_CHANNELS]; // Store Tx power value for all channels. + UCHAR ChannelTssiRef[MAX_LEN_OF_CHANNELS]; // Store Tssi Reference value for all channels. + UCHAR ChannelTssiDelta; // Store Tx TSSI delta increment / decrement value + BOOLEAN bAutoTxAgc; + UCHAR ChannelList[MAX_LEN_OF_CHANNELS]; // list all supported channels for site survey + UCHAR ChannelListNum; // number of channel in ChannelList[] + BOOLEAN bShowHiddenSSID; + + // configuration to be used when this STA starts a new ADHOC network + IBSS_CONFIG IbssConfig; + + ULONG LastBeaconRxTime; // OS's timestamp of the last BEACON RX time + ULONG Last11bBeaconRxTime; // OS's timestamp of the last 11B BEACON RX time + ULONG LastScanTime; // Record last scan time for issue BSSID_SCAN_LIST + ULONG IgnoredScanNumber; // Ignored BSSID_SCAN_LIST requests + BOOLEAN bSwRadio; // Software controlled Radio On/Off, TRUE: On + BOOLEAN bHwRadio; // Hardware controlled Radio On/Off, TRUE: On + BOOLEAN bRadio; // Radio state, And of Sw & Hw radio state + BOOLEAN bHardwareRadio; // Hardware controlled Radio enabled + + LED_CONTROL LedCntl; + UCHAR RfType; + UCHAR LedMode; + RALINK_TIMER_STRUCT RfTuningTimer; + STA_WITH_ETHER_BRIDGE StaWithEtherBridge; + + // New for WPA, windows want us to to keep association information and + // Fixed IEs from last association response + NDIS_802_11_ASSOCIATION_INFORMATION AssocInfo; +// NDIS_802_11_FIXED_IEs FixIEs; + UCHAR ReqVarIELen; // Length of next VIE include EID & Length + UCHAR ReqVarIEs[MAX_VIE_LEN]; + UCHAR ResVarIELen; // Length of next VIE include EID & Length + UCHAR ResVarIEs[MAX_VIE_LEN]; + + // the following fields are user setting from UI + ULONG EnableTurboRate; // 0: disable, 1: enable 72/100 Mbps whenever applicable + ULONG EnableTxBurst; // 0: disable, 1: enable TX PACKET BURST + ULONG UseBGProtection; // 0: auto, 1: always use, 2: always not use + ULONG UseShortSlotTime; // 0: disable, 1: enable 9us short slot time if AP supports + ULONG AdhocMode; // 0:WIFI mode (11b rates only), 1:allow OFDM rates + + // this flag is the result calculated from UI settings and AP's ERP/Capability + ULONG BGProtectionInUsed; // 0: not in-used, 1: in-used + ULONG ShortSlotInUsed; // 0: not in-used, 1: in-used + USHORT TxPreambleInUsed; // Rt802_11PreambleLong, Rt802_11PreambleShort + + // PCI clock adjustment round + UCHAR PciAdjustmentRound; + + // latch th latest RF programming value here since RF IC doesn't support READ operation + RTMP_RF_REGS LatchRfRegs; + + BOOLEAN BbpTuningEnable; + UCHAR VgcLowerBound; + RT_802_11_RX_AGC_VGC_TUNING BbpTuning; + + UCHAR LastR17Value; + + // New for RSSI to dbm veriable + UCHAR RssiToDbm; // EEPROM 0x7c + + + ULONG SystemErrorBitmap; // b0: E2PROM version error + + // This soft Rx Antenna Diversity mechanism is used only when user set + // RX Antenna = DIVERSITY ON + SOFT_RX_ANT_DIVERSITY RxAnt; + + ULONG Rt2560Version; // MAC/BBP serial interface issue solved after ver.D + ULONG EepromVersion; // byte 0: version, byte 1: revision, byte 2~3: unused + UCHAR BbpWriteLatch[100]; // record last BBP register value written via BBP_IO_WRITE +// ULONG CurrTxRateStableTime; // # of second in current TX rate + ULONG NumOfAvgRssiSample;// UCHAR TxRateUpPenalty; // extra # of second penalty due to last unstable condition +} PORT_CONFIG, *PPORT_CONFIG; + +typedef struct _MLME_MEMORY_STRUCT { + PVOID AllocVa; //Pointer to the base virtual address of the allocated memory + struct _MLME_MEMORY_STRUCT *Next; //Pointer to the next virtual address of the allocated memory +} MLME_MEMORY_STRUCT, *PMLME_MEMORY_STRUCT; + +typedef struct _MLME_MEMORY_HANDLER { + BOOLEAN MemRunning; //The flag of the Mlme memory handler's status + UINT MemoryCount; //Total nonpaged system-space memory not size + UINT InUseCount; //Nonpaged system-space memory in used counts + UINT UnUseCount; //Nonpaged system-space memory available counts + UINT PendingCount; //Nonpaged system-space memory for free counts + PMLME_MEMORY_STRUCT pInUseHead; //Pointer to the first nonpaed memory not used + PMLME_MEMORY_STRUCT pInUseTail; //Pointer to the last nonpaged memory not used + PMLME_MEMORY_STRUCT pUnUseHead; //Pointer to the first nonpaged memory in used + PMLME_MEMORY_STRUCT pUnUseTail; //Pointer to the last nonpaged memory in used + PULONG MemFreePending[MAX_MLME_HANDLER_MEMORY]; //an array to keep pending free-memory's pointer (32bits) +} MLME_MEMORY_HANDLER, *PMLME_MEMORY_HANDLER; + +typedef struct _MLME_STRUCT { + STATE_MACHINE CntlMachine, AssocMachine, AuthMachine, AuthRspMachine, SyncMachine, WpaPskMachine; + STATE_MACHINE_FUNC CntlFunc[CNTL_FUNC_SIZE], AssocFunc[ASSOC_FUNC_SIZE]; + STATE_MACHINE_FUNC AuthFunc[AUTH_FUNC_SIZE], AuthRspFunc[AUTH_RSP_FUNC_SIZE]; + STATE_MACHINE_FUNC SyncFunc[SYNC_FUNC_SIZE], WpaPskFunc[WPA_PSK_FUNC_SIZE]; + + ASSOC_AUX AssocAux; + AUTH_AUX AuthAux; + AUTH_RSP_AUX AuthRspAux; + SYNC_AUX SyncAux; + CNTL_AUX CntlAux; + + COUNTER_802_11 PrevWlanCounters; + ULONG ChannelQuality; // 0..100, Channel Quality Indication for Roaming + + BOOLEAN Running; + spinlock_t TaskLock; + MLME_QUEUE Queue; + + UINT ShiftReg; + PSPOLL_FRAME PsFr; + MACHDR NullFr; + + RALINK_TIMER_STRUCT PeriodicTimer; + ULONG PeriodicRound; + ULONG PrevTxCnt; + + MLME_MEMORY_HANDLER MemHandler; //The handler of the nonpaged memory inside MLME +} MLME_STRUCT, *PMLME_STRUCT; + +// +// Management ring buffer format +// +typedef struct _MGMT_STRUC { + BOOLEAN Valid; + PUCHAR pBuffer; + ULONG Length; +} MGMT_STRUC, *PMGMT_STRUC; + +// +// P802.11 Frame control field, 16 bit +// +typedef struct PACKED _FRAME_CONTROL { +#ifdef BIG_ENDIAN + USHORT Order:1; + USHORT Wep:1; + USHORT MoreData:1; + USHORT PwrMgt:1; + USHORT Retry:1; + USHORT MoreFrag:1; + USHORT FrDs:1; + USHORT ToDs:1; + USHORT Subtype:4; + USHORT Type:2; + USHORT Ver:2; +#else + USHORT Ver:2; // Protocol version + USHORT Type:2; // MSDU type + USHORT Subtype:4; // MSDU subtype + USHORT ToDs:1; // To DS indication + USHORT FrDs:1; // From DS indication + USHORT MoreFrag:1; // More fragment bit + USHORT Retry:1; // Retry status bit + USHORT PwrMgt:1; // Power management bit + USHORT MoreData:1; // More data bit + USHORT Wep:1; // Wep data + USHORT Order:1; // Strict order expected +#endif +} FRAME_CONTROL, *PFRAME_CONTROL; + +// +// P802.11 intermediate header format +// +typedef struct PACKED _CONTROL_HEADER { + FRAME_CONTROL Frame; // Frame control structure + USHORT Duration; // Duration value + MACADDR Addr1; // Address 1 field + MACADDR Addr2; // Address 2 field +} CONTROL_HEADER, *PCONTROL_HEADER; + +// +// P802.11 header format +// +typedef struct PACKED _HEADER_802_11 { + CONTROL_HEADER Controlhead; + MACADDR Addr3; // Address 3 field +#ifdef BIG_ENDIAN + USHORT Sequence:12; // Sequence number + USHORT Frag:4; // Fragment number +#else + USHORT Frag:4; // Fragment number + USHORT Sequence:12; // Sequence number +#endif +} HEADER_802_11, *PHEADER_802_11; + +// +// Receive Tuple Cache Format +// +typedef struct PACKED _TUPLE_CACHE { + BOOLEAN Valid; + MACADDR MAC; + USHORT Sequence; + USHORT Frag; +} TUPLE_CACHE, *PTUPLE_CACHE; + +// +// Fragment Frame structure +// +typedef struct PACKED _FRAGMENT_FRAME { + UCHAR Header802_3[14]; + UCHAR Header_LLC[8]; + UCHAR Buffer[LENGTH_802_3 + MAX_FRAME_SIZE]; + ULONG RxSize; + USHORT Sequence; + USHORT LastFrag; + ULONG Flags; // Some extra frame information. bit 0: LLC presented +} FRAGMENT_FRAME, *PFRAGMENT_FRAME; + +// +// Tkip Key structure which RC4 key & MIC calculation +// +typedef struct PACKED _TKIP_KEY_INFO { + UINT nBytesInM; // # bytes in M for MICKEY + ULONG IV16; + ULONG IV32; + ULONG K0; // for MICKEY Low + ULONG K1; // for MICKEY Hig + ULONG L; // Current state for MICKEY + ULONG R; // Current state for MICKEY + ULONG M; // Message accumulator for MICKEY + UCHAR RC4KEY[16]; + UCHAR MIC[8]; +} TKIP_KEY_INFO, *PTKIP_KEY_INFO; + +// +// Private / Misc data, counters for driver internal use +// +typedef struct __PRIVATE_STRUC { + ULONG SystemResetCnt; // System reset counter + ULONG TxRingFullCnt; // Tx ring full occurrance number + ULONG ResetCountDown; // Count down before issue reset, patch for RT2430 + ULONG CCAErrCnt; // CCA error count, for debug purpose, might move to global counter + ULONG PhyRxErrCnt; // PHY Rx error count, for debug purpose, might move to global counter + ULONG PhyTxErrCnt; // PHY Tx error count, for debug purpose, might move to global counter + // Variables for WEP encryption / decryption in rtmp_wep.c + ULONG FCSCRC32; + ULONG RxSetCnt; + ULONG DecryptCnt; + ARCFOURCONTEXT WEPCONTEXT; + // Tkip stuff + TKIP_KEY_INFO Tx; + TKIP_KEY_INFO Rx; +} PRIVATE_STRUC, *PPRIVATE_STRUC; + +// +// All DMA ring formats +// +struct ring_desc { + // Descriptor size & dma address + u32 size; + void *va_addr; + dma_addr_t pa_addr; + // Dma buffer size and address for real transfer + u32 data_size; + void *va_data_addr; + dma_addr_t pa_data_addr; + UCHAR FrameType; // Type of frame in ring buffer +}; + +#ifdef RALINK_ATE +typedef struct _ATE_INFO { + UCHAR Mode; + UCHAR TxPower; + UCHAR Addr1[6]; + UCHAR Addr2[6]; + UCHAR Addr3[6]; + UCHAR Channel; + ULONG TxLength; + ULONG TxCount; + ULONG TxDoneCount; + ULONG TxRate; +} ATE_INFO, *PATE_INFO; +#endif //#ifdef RALINK_ATE + +// +// The miniport adapter structure +// +typedef struct _RTMP_ADAPTER +{ + char nickn[IW_ESSID_MAX_SIZE+1]; // nickname, only used in the iwconfig i/f + int chip_id; + + unsigned long CSRBaseAddress; // PCI MMIO Base Address, all access will use + // NdisReadRegisterXx or NdisWriteRegisterXx + + // configuration + UCHAR PermanentAddress[ETH_ALEN]; // Factory default MAC address + UCHAR CurrentAddress[ETH_ALEN]; // User changed MAC address + + UCHAR EEPROMAddressNum; // 93c46=6 93c66=8 + USHORT EEPROMDefaultValue[NUM_EEPROM_BBP_PARMS]; + + // resource for DMA operation + struct ring_desc TxRing[TX_RING_SIZE]; // Tx Ring + struct ring_desc AtimRing[ATIM_RING_SIZE]; // Atim Ring + struct ring_desc PrioRing[PRIO_RING_SIZE]; // Priority Ring + struct ring_desc RxRing[RX_RING_SIZE]; // Rx Ring + struct ring_desc BeaconRing; // Beacon Ring, only one + + MGMT_STRUC MgmtRing[MGMT_RING_SIZE]; // management ring size + + ULONG CurRxIndex; // Next RxD read pointer + ULONG CurDecryptIndex; // Next RxD decrypt read pointer + ULONG CurTxIndex; // Next TxD write pointer + ULONG CurEncryptIndex; // Next TxD encrypt write pointer + ULONG CurAtimIndex; // Next AtimD write pointer + ULONG CurPrioIndex; // Next PrioD write pointer + ULONG PushMgmtIndex; // Next SW management ring index + ULONG PopMgmtIndex; // Next SW management ring index + ULONG MgmtQueueSize; // Number of Mgmt request stored in MgmtRing + ULONG NextEncryptDoneIndex; + ULONG NextTxDoneIndex; + ULONG NextAtimDoneIndex; + ULONG NextPrioDoneIndex; + ULONG NextDecryptDoneIndex; + + // 802.3 multicast support + ULONG NumberOfMcAddresses; // Number of mcast entry exists + UCHAR McastTable[MAX_MCAST_LIST_SIZE][ETH_ALEN]; // Mcast list + //flags + ULONG Flags; // Represent current device status + + // Tx software priority queue list, 802.1q priority information mapped as. + // 0,1 -> queue0, 2,3 -> queue1, 4,5 -> queue2, 6,7 -> queue3 + struct sk_buff_head TxSwQueue0; // Tx software priority queue 0 mapped to 0.1 + struct sk_buff_head TxSwQueue1; // Tx software priority queue 1 mapped to 2.3 + struct sk_buff_head TxSwQueue2; // Tx software priority queue 2 mapped to 4.5 + struct sk_buff_head TxSwQueue3; + + USHORT Sequence; // Current sequence number + + TUPLE_CACHE TupleCache[MAX_CLIENT]; // Maximum number of tuple caches, only useful in Ad-Hoc + UCHAR TupleCacheLastUpdateIndex; // 0..MAX_CLIENT-1 + FRAGMENT_FRAME FragFrame; // Frame storage for fragment frame + + // For MiniportTransferData + PUCHAR pRxData; // Pointer to current RxRing offset / fragment frame offset + + // Counters for 802.3 & generic. + // Add 802.11 specific counters later + COUNTER_802_3 Counters; // 802.3 counters + COUNTER_802_11 WlanCounters; // 802.11 MIB counters + COUNTER_RALINK RalinkCounters; // Ralink propriety counters + COUNTER_DRS DrsCounters; // counters for Dynamic Rate Switching + + NDIS_MEDIA_STATE MediaState; + + PRIVATE_STRUC PrivateInfo; // Private information & counters + + // SpinLocks + spinlock_t TxRingLock; // Tx Ring spinlock + spinlock_t PrioRingLock; // Prio Ring spinlock + spinlock_t AtimRingLock; // Atim Ring spinlock + spinlock_t RxRingLock; // Rx Ring spinlock + spinlock_t TxSwQueueLock; // SendTxWaitQueue spinlock + spinlock_t MemLock; // Memory handler spinlock + +// Boolean control for packet filter + BOOLEAN bAcceptDirect; + BOOLEAN bAcceptMulticast; + BOOLEAN bAcceptBroadcast; + BOOLEAN bAcceptAllMulticast; + BOOLEAN bAcceptPromiscuous; + + // Control to check Tx hang + BOOLEAN bTxBusy; + //PQUEUE_ENTRY FirstEntryInQueue; // The first packet in Tx queue + + // Control disconnect / connect event generation + ULONG LinkDownTime; + ULONG LastRxRate; + UCHAR LastSsidLen; // the actual ssid length in used + CHAR LastSsid[MAX_LEN_OF_SSID]; // NOT NULL-terminated + MACADDR LastBssid; + BOOLEAN bConfigChanged; + + PORT_CONFIG PortCfg; + MLME_STRUCT Mlme; + + struct pci_dev *pPci_Dev; + struct net_device *net_dev; + + RALINK_TIMER_STRUCT timer; // Periodic Media monitoring timer. + + BOOLEAN bNetDeviceStopQueue; + BOOLEAN NeedSwapToLittleEndian; + +#if WIRELESS_EXT >= 12 + struct iw_statistics iw_stats; +#endif + struct net_device_stats stats; + +#ifdef RALINK_ATE + ATE_INFO ate; +#endif //#ifdef RALINK_ATE + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) + struct work_struct mlme_work; +#endif +} RTMP_ADAPTER, *PRTMP_ADAPTER; + +// +// SHA context +// +typedef struct _SHA_CTX +{ + ULONG H[5]; + ULONG W[80]; + INT lenW; + ULONG sizeHi, sizeLo; +} SHA_CTX; + +// +// Enable & Disable NIC interrupt via writing interrupt mask register +// Since it use ADAPTER structure, it have to be put after structure definition. +// +static inline VOID NICDisableInterrupt( + IN PRTMP_ADAPTER pAd) +{ + RTMP_IO_WRITE32(pAd, CSR8, 0xFFFF); + RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE); +} + +static inline VOID NICEnableInterrupt( + IN PRTMP_ADAPTER pAd) +{ + // 0xFF37 : Txdone & Rxdone, 0xFF07: Txdonw, Rxdone, PrioDone, AtimDone, + RTMP_IO_WRITE32(pAd, CSR8, 0xFE14); + RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE); +} + +BOOLEAN NICCheckForHang( + IN PRTMP_ADAPTER pAd); + + +INT RT2500_close( + IN struct net_device *net_dev); + +irqreturn_t RTMPIsr( + IN INT irq, + IN VOID *dev_instance, + IN struct pt_regs *rgs); + +VOID RT2500_timer( + IN unsigned long data); + +INT RT2500_open( + IN struct net_device *net_dev); + +INT RTMPSendPackets( + IN struct sk_buff *skb, + IN struct net_device *net_dev); + +INT RT2500_probe( + IN struct pci_dev *pPci_Dev, + IN const struct pci_device_id *ent); + +INT RT2500_ioctl( + IN struct net_device *net_dev, + IN OUT struct ifreq *rq, + IN INT cmd); + +VOID RTMPRingCleanUp( + IN PRTMP_ADAPTER pAdapter, + IN UCHAR RingType); + +#if WIRELESS_EXT >= 12 +struct iw_statistics *RT2500_get_wireless_stats( + IN struct net_device *net_dev); +#endif + +struct net_device_stats *RT2500_get_ether_stats( + IN struct net_device *net_dev); + +VOID RT2500_set_rx_mode( + IN struct net_device *net_dev); + +NDIS_STATUS RTMPAllocDMAMemory( + IN PRTMP_ADAPTER pAd); + +VOID RTMPFreeDMAMemory( + IN PRTMP_ADAPTER pAd); + +VOID NICReadEEPROMParameters( + IN PRTMP_ADAPTER pAdapter); + +VOID NICInitAsicFromEEPROM( + IN PRTMP_ADAPTER pAdapter); + +VOID NICInitTransmit( + IN PRTMP_ADAPTER pAdapter); + +NDIS_STATUS NICReadAdapterInfo( + IN PRTMP_ADAPTER pAdapter); + +VOID NICInitializeAdapter( + IN PRTMP_ADAPTER pAdapter); + +VOID NICInitializeAsic( + IN PRTMP_ADAPTER pAdapter); + +VOID NICIssueReset( + IN PRTMP_ADAPTER pAdapter); + +VOID PortCfgInit( + IN PRTMP_ADAPTER pAdapter); + +VOID NICResetFromError( + IN PRTMP_ADAPTER pAdapter); + +PUCHAR RTMPFindSection( + IN PCHAR buffer, + IN PCHAR section); + +INT RTMPIsFindSection( + IN PUCHAR ptr, + IN PUCHAR buffer); + +INT RTMPGetKeyParameter( + IN PUCHAR section, + IN PCHAR key, + OUT PCHAR dest, + IN INT destsize, + IN PCHAR buffer); + +VOID RTMPReadParametersFromFile( + IN PRTMP_ADAPTER pAd); + +#define RTMPEqualMemory(p1,p2,n) (memcmp((p1),(p2),(n)) == 0) + +ULONG RTMPCompareMemory( + IN PVOID pSrc1, + IN PVOID pSrc2, + IN ULONG Length); + +void AtoH(char * src, UCHAR * dest, int destlen); +UCHAR BtoH(char ch); + +VOID RTMPInitTimer( + IN PRTMP_ADAPTER pAdapter, + IN PRALINK_TIMER_STRUCT pTimer, + IN PVOID pTimerFunc); + +VOID RTMPSetTimer( + IN PRTMP_ADAPTER pAdapter, + IN PRALINK_TIMER_STRUCT pTimer, + IN ULONG Value); + +VOID RTMPCancelTimer( + IN PRALINK_TIMER_STRUCT pTimer); + +// +// Private routines in rtmp_data.c +// +VOID RTMPHandleRxDoneInterrupt( + IN PRTMP_ADAPTER pAdapter); + +VOID RTMPHandleTxRingTxDoneInterrupt( + IN PRTMP_ADAPTER pAdapter); + +VOID RTMPHandlePrioRingTxDoneInterrupt( + IN PRTMP_ADAPTER pAdapter); + +VOID RTMPHandleAtimRingTxDoneInterrupt( + IN PRTMP_ADAPTER pAdapter); + +VOID RTMPHandleTbcnInterrupt( + IN PRTMP_ADAPTER pAdapter); + +VOID RTMPHandleTwakeupInterrupt( + IN PRTMP_ADAPTER pAdapter); + +VOID RTMPHandleDecryptionDoneInterrupt( + IN PRTMP_ADAPTER pAdapter); + +VOID RTMPHandleEncryptionDoneInterrupt( + IN PRTMP_ADAPTER pAdapter); + +VOID RTMPHardTransmitDone( + IN PRTMP_ADAPTER pAdapter, + IN PTXD_STRUC pTxD, + IN UCHAR FrameType); + +NDIS_STATUS RTMPSendPacket( + IN PRTMP_ADAPTER pAdapter, + IN struct sk_buff *skb); + +//VOID RTMPDeQueuePacket( +// IN PRTMP_ADAPTER pAdapter, +// IN PQUEUE_HEADER pQueue); + +VOID RTMPDeQueuePacket( + IN PRTMP_ADAPTER pAdapter); + +NDIS_STATUS RTMPHardEncrypt( + IN PRTMP_ADAPTER pAdapter, + IN struct sk_buff *skb, + IN UCHAR NumberRequired, + IN ULONG EnableTxBurst, + IN UCHAR AccessCategory); + +NDIS_STATUS RTMPHardTransmit( + IN PRTMP_ADAPTER pAdapter, + IN struct sk_buff *skb, + IN UCHAR NumberRequired); + +NDIS_STATUS RTMPFreeDescriptorRequest( + IN PRTMP_ADAPTER pAdapter, + IN UCHAR RingType, + IN UCHAR NumberRequired); + +VOID MlmeHardTransmit( + IN PRTMP_ADAPTER pAdapter, + IN PVOID pBuffer, + IN ULONG Length); + +USHORT RTMPCalcDuration( + IN PRTMP_ADAPTER pAdapter, + IN UCHAR Rate, + IN ULONG Size); + +VOID RTMPWriteTxDescriptor( + IN PTXD_STRUC pTxD, + IN BOOLEAN DoEncrypt, + IN UCHAR CipherAlg, + IN BOOLEAN Ack, + IN BOOLEAN Fragment, + IN BOOLEAN InsTimestamp, + IN UCHAR RetryMode, + IN UCHAR Ifs, + IN UINT Rate, + IN UCHAR Service, + IN ULONG Length, + IN USHORT TxPreamble, + IN UCHAR AccessCategory); + +BOOLEAN RTMPSearchTupleCache( + IN PRTMP_ADAPTER pAdapter, + IN PHEADER_802_11 pHeader); + +VOID RTMPUpdateTupleCache( + IN PRTMP_ADAPTER pAdapter, + IN PHEADER_802_11 pHeader); + +VOID RTMPSuspendMsduTransmission( + IN PRTMP_ADAPTER pAdapter); + +VOID RTMPResumeMsduTransmission( + IN PRTMP_ADAPTER pAdapter); + +NDIS_STATUS MiniportMMRequest( + IN PRTMP_ADAPTER pAdapter, + IN PVOID pBuffer, + IN ULONG Length); + +VOID RTMPSendNullFrame( + IN PRTMP_ADAPTER pAdapter, + IN PVOID pBuffer, + IN ULONG Length, + IN UCHAR TxRate); + +NDIS_STATUS RTMPApplyPacketFilter( + IN PRTMP_ADAPTER pAdapter, + IN PRXD_STRUC pRxD, + IN PHEADER_802_11 pHeader); + +struct sk_buff_head* RTMPCheckTxSwQueue( + IN PRTMP_ADAPTER pAdapter, + OUT UCHAR *AccessCategory); + +VOID RTMPReportMicError( + IN PRTMP_ADAPTER pAdapter, + IN PWPA_KEY pWpaKey); +// +// Private routines in rtmp_wep.c +// +VOID RTMPInitWepEngine( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pKey, + IN UCHAR KeyId, + IN UCHAR KeyLen, + IN PUCHAR pDest); + +VOID RTMPEncryptData( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pSrc, + IN PUCHAR pDest, + IN UINT Len); + +BOOLEAN RTMPDecryptData( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pSrc, + IN UINT Len); + +VOID RTMPSetICV( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pDest); + +VOID ARCFOUR_INIT( + IN PARCFOURCONTEXT Ctx, + IN PUCHAR pKey, + IN UINT KeyLen); + +UCHAR ARCFOUR_BYTE( + IN PARCFOURCONTEXT Ctx); + +VOID ARCFOUR_DECRYPT( + IN PARCFOURCONTEXT Ctx, + IN PUCHAR pDest, + IN PUCHAR pSrc, + IN UINT Len); + +VOID ARCFOUR_ENCRYPT( + IN PARCFOURCONTEXT Ctx, + IN PUCHAR pDest, + IN PUCHAR pSrc, + IN UINT Len); + +ULONG RTMP_CALC_FCS32( + IN ULONG Fcs, + IN PUCHAR Cp, + IN INT Len); + +// +// MLME routines +// +//VOID Arc4Init(ARC4_CONTEXT *Ctx, UCHAR *Key, ULONG KeyLen); +//UCHAR Arc4Byte(ARC4_CONTEXT *Ctx); +//VOID Arc4Cipher(ARC4_CONTEXT *Ctx, UCHAR *Dest, UCHAR *Src, ULONG Len); + +// Asic/RF/BBP related functions + +VOID AsicAdjustTxPower( + IN PRTMP_ADAPTER pAd); + +VOID AsicSwitchChannel( + IN PRTMP_ADAPTER pAdapter, + IN UCHAR Channel); + +VOID AsicLockChannel( + IN PRTMP_ADAPTER pAd, + IN UCHAR Channel) ; + +VOID AsicRfTuningExec( + IN unsigned long data); + +VOID AsicSleepThenAutoWakeup( + IN PRTMP_ADAPTER pAdapter, + IN USHORT TbttNumToNextWakeUp); + +VOID AsicForceSleep( + IN PRTMP_ADAPTER pAdapter); + +VOID AsicForceWakeup( + IN PRTMP_ADAPTER pAdapter); + +VOID AsicSetBssid( + IN PRTMP_ADAPTER pAdapter, + IN MACADDR *Bssid); + +VOID AsicDisableSync( + IN PRTMP_ADAPTER pAdapter); + +VOID AsicEnableBssSync( + IN PRTMP_ADAPTER pAdapter); + +VOID AsicEnableIbssSync( + IN PRTMP_ADAPTER pAdapter); + +VOID AsicLedPeriodicExec( + IN unsigned long data); + +VOID AsicSetRxAnt( + IN PRTMP_ADAPTER pAd); + +VOID AsicEvaluateSecondaryRxAnt( + IN PRTMP_ADAPTER pAd); + +VOID AsicRxAntEvalTimeout( + IN unsigned long data); + +VOID AsicSetSlotTime( + IN PRTMP_ADAPTER pAd, + IN BOOLEAN UseShortSlotTime); + +VOID AsicAdjustUsec( + IN PRTMP_ADAPTER pAd); + +VOID AsicBbpTuning( + IN PRTMP_ADAPTER pAd); + +VOID AsicRestoreBbpSensibility( + IN PRTMP_ADAPTER pAd); + +VOID MacAddrRandomBssid( + IN PRTMP_ADAPTER pAdapter, + OUT PMACADDR Addr); + +VOID MgtMacHeaderInit( + IN PRTMP_ADAPTER pAdapter, + IN OUT PMACHDR Hdr, + IN UCHAR Subtype, + IN UCHAR ToDs, +// IN UCHAR AddrType, + IN PMACADDR Ds, + IN PMACADDR Bssid); + +VOID MlmeRadioOff( + IN PRTMP_ADAPTER pAd); + +VOID MlmeRadioOn( + IN PRTMP_ADAPTER pAd); + +VOID BssTableInit( + IN BSS_TABLE *Tab); + +ULONG BssTableSearch( + IN BSS_TABLE *Tab, + IN PMACADDR Bssid); + +VOID BssTableDeleteEntry( + IN OUT BSS_TABLE *Tab, + IN PMACADDR Bssid); + +VOID BssEntrySet( + IN PRTMP_ADAPTER pAdapter, + OUT BSS_ENTRY *Bss, + IN MACADDR *Bssid, + IN CHAR Ssid[], + IN UCHAR SsidLen, + IN UCHAR BssType, + IN USHORT BeaconPeriod, + IN BOOLEAN CfExist, + IN CF_PARM *CfParm, + IN USHORT AtimWin, + IN USHORT CapabilityInfo, + IN UCHAR Rates[], + IN UCHAR RatesLen, + IN BOOLEAN ExtendedRateIeExist, + IN UCHAR Channel, + IN UCHAR Rssi, + IN UCHAR Noise, + IN LARGE_INTEGER TimeStamp, + IN PNDIS_802_11_VARIABLE_IEs pVIE); + +ULONG BssTableSetEntry( + IN PRTMP_ADAPTER pAdapter, + OUT BSS_TABLE *Tab, + IN MACADDR *Bssid, + IN CHAR Ssid[], + IN UCHAR SsidLen, + IN UCHAR BssType, + IN USHORT BeaconPeriod, + IN BOOLEAN CfExist, + IN CF_PARM *CfParm, + IN USHORT AtimWin, + IN USHORT CapabilityInfo, + IN UCHAR Rates[], + IN UCHAR RatesLen, + IN BOOLEAN ExtendedRateIeExist, + IN UCHAR Channel, + IN UCHAR Rssi, + IN UCHAR Noise, + IN LARGE_INTEGER TimeStamp, + IN PNDIS_802_11_VARIABLE_IEs pVIE); + +VOID BssTableSsidSort( + IN PRTMP_ADAPTER pAd, + OUT BSS_TABLE *OutTab, + IN CHAR Ssid[], + IN UCHAR SsidLen); + +VOID BssTableSortByRssi( + IN OUT BSS_TABLE *OutTab); + +NDIS_802_11_WEP_STATUS BssCipherParse( + IN PUCHAR pCipher); + +NDIS_STATUS MlmeQueueInit( + IN MLME_QUEUE *Queue); + +VOID MlmeQueueDestroy( + IN MLME_QUEUE *Queue); + +BOOLEAN MlmeEnqueue( + OUT MLME_QUEUE *Queue, + IN ULONG Machine, + IN ULONG MsgType, + IN ULONG MsgLen, + IN VOID *Msg); + +BOOLEAN MlmeEnqueueForRecv( + IN PRTMP_ADAPTER pAdapter, + OUT MLME_QUEUE *Queue, + IN ULONG TimeStampHigh, + IN ULONG TimeStampLow, + IN UCHAR Rssi, + IN UCHAR Noise, + IN ULONG MsgLen, + IN PVOID Msg); + +BOOLEAN MlmeDequeue( + IN MLME_QUEUE *Queue, + OUT MLME_QUEUE_ELEM **Elem); + +VOID MlmeRestartStateMachine( + IN PRTMP_ADAPTER pAd); + +BOOLEAN MlmeQueueEmpty( + IN MLME_QUEUE *Queue); + +BOOLEAN MlmeQueueFull( + IN MLME_QUEUE *Queue); + +BOOLEAN MsgTypeSubst( + IN MACFRAME *Fr, + OUT INT *Machine, + OUT INT *MsgType); + +VOID StateMachineInit( + IN STATE_MACHINE *Sm, + IN STATE_MACHINE_FUNC Trans[], + IN ULONG StNr, + IN ULONG MsgNr, + IN STATE_MACHINE_FUNC DefFunc, + IN ULONG InitState, + IN ULONG Base); + +VOID StateMachineSetAction( + IN STATE_MACHINE *S, + IN ULONG St, + ULONG Msg, + IN STATE_MACHINE_FUNC F); + +VOID StateMachinePerformAction( + IN PRTMP_ADAPTER pAdapter, + IN STATE_MACHINE *S, + IN MLME_QUEUE_ELEM *Elem); + +VOID Drop( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID StateMachineDestroy( + IN STATE_MACHINE *Sm); + +VOID AssocStateMachineInit( + IN PRTMP_ADAPTER pAdapter, + IN STATE_MACHINE *Sm, + OUT STATE_MACHINE_FUNC Trans[]); + +VOID ReassocTimeout( + IN unsigned long data); + +VOID AssocTimeout( + IN unsigned long data); + +VOID DisassocTimeout( + IN unsigned long data); + +//---------------------------------------------- +VOID MlmeDisassocReqAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID MlmeAssocReqAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID MlmeReassocReqAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID MlmeDisassocReqAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID PeerAssocRspAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID PeerReassocRspAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID PeerDisassocAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID DisassocTimeoutAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID AssocTimeoutAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID ReassocTimeoutAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID Cls3errAction( + IN PRTMP_ADAPTER pAdapter, + IN PMACADDR pAddr); + +VOID InvalidStateWhenAssoc( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID InvalidStateWhenReassoc( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID InvalidStateWhenDisassociate( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID ComposePsPoll( + IN PRTMP_ADAPTER pAdapter); + +VOID ComposeNullFrame( + IN PRTMP_ADAPTER pAdapter); + +VOID AssocPostProc( + IN PRTMP_ADAPTER pAdapter, + IN MACADDR *Addr2, + IN USHORT CapabilityInfo, + IN USHORT Aid, + IN UCHAR Rates[], + IN UCHAR RatesLen, + IN BOOLEAN ExtendedRateIeExist); + +VOID AuthStateMachineInit( + IN PRTMP_ADAPTER pAdapter, + IN PSTATE_MACHINE sm, + OUT STATE_MACHINE_FUNC Trans[]); + +VOID AuthTimeout( + IN unsigned long data); + +VOID MlmeAuthReqAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID PeerAuthRspAtSeq2Action( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID PeerAuthRspAtSeq4Action( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID AuthTimeoutAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID Cls2errAction( + IN PRTMP_ADAPTER pAdapter, + IN PMACADDR pAddr); + +VOID MlmeDeauthReqAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID InvalidStateWhenAuth( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +//VOID MlmeDeauthReqProc( +// IN PRTMP_ADAPTER pAdapter, +// IN MACADDR *Addr, +// IN USHORT Reason); + +//============================================= + +VOID AuthRspStateMachineInit( + IN PRTMP_ADAPTER pAdapter, + IN PSTATE_MACHINE Sm, + IN STATE_MACHINE_FUNC Trans[]); + + +VOID AuthRspChallengeTimeout( + IN unsigned long data); + +VOID AuthRspChallengeTimeoutAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID PeerAuthAtAuthRspIdleAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID PeerAuthAtAuthRspWaitAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID PeerDeauthAction( + IN PRTMP_ADAPTER pAdaptor, + IN MLME_QUEUE_ELEM *Elem); + +VOID PeerAuthSimpleRspGenAndSend( + IN PRTMP_ADAPTER pAdapter, + IN PMACHDR Hdr, + IN USHORT Alg, + IN USHORT Seq, + IN USHORT Reason, + IN USHORT Status); + +//======================================== + +VOID SyncStateMachineInit( + IN PRTMP_ADAPTER pAdapter, + IN STATE_MACHINE *Sm, + OUT STATE_MACHINE_FUNC Trans[]); + +VOID BeaconTimeout( + IN unsigned long data); + +VOID AtimTimeout( + IN unsigned long data); + +VOID ScanTimeout( + IN unsigned long data); + +VOID MlmeScanReqAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID InvalidStateWhenScan( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID InvalidStateWhenJoin( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID InvalidStateWhenStart( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID PeerBeacon( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID EnqueueProbeRequest( + IN PRTMP_ADAPTER pAd); + +//========================================= + +VOID MlmeCntlInit( + IN PRTMP_ADAPTER pAdapter, + IN STATE_MACHINE *S, + OUT STATE_MACHINE_FUNC Trans[]); + +VOID MlmeCntlMachinePerformAction( + IN PRTMP_ADAPTER pAdapter, + IN STATE_MACHINE *S, + IN MLME_QUEUE_ELEM *Elem); + +VOID CntlIdleProc( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID CntlOidScanProc( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID CntlOidSsidProc( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM * Elem); + +VOID CntlOidRTBssidProc( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID CntlMlmeRoamingProc( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID CntlWaitDisassocProc( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID CntlWaitJoinProc( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID CntlWaitReassocProc( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID CntlWaitStartProc( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID CntlWaitAuthProc( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID CntlWaitAuthProc2( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID CntlWaitAssocProc( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID LinkUp( + IN PRTMP_ADAPTER pAdapter, + IN UCHAR BssType); + +VOID LinkDown( + IN PRTMP_ADAPTER pAdapter); + +VOID MlmeCntlConfirm( + IN PRTMP_ADAPTER pAdapter, + IN ULONG MsgType, + IN USHORT Msg); + +VOID IterateOnBssTab( + IN PRTMP_ADAPTER pAdapter); + +VOID IterateOnBssTab2( + IN PRTMP_ADAPTER pAdapter);; + +VOID JoinParmFill( + IN PRTMP_ADAPTER pAdapter, + IN OUT MLME_JOIN_REQ_STRUCT *JoinReq, + IN ULONG BssIdx); + +VOID AssocParmFill( + IN PRTMP_ADAPTER pAdapter, + IN OUT MLME_ASSOC_REQ_STRUCT *AssocReq, + IN MACADDR *Addr, + IN USHORT CapabilityInfo, + IN ULONG Timeout, + IN USHORT ListenIntv); + +VOID ScanParmFill( + IN PRTMP_ADAPTER pAdapter, + IN OUT MLME_SCAN_REQ_STRUCT *ScanReq, + IN CHAR Ssid[], + IN UCHAR SsidLen, + IN UCHAR BssType, + IN UCHAR ScanType); + +VOID DisassocParmFill( + IN PRTMP_ADAPTER pAdapter, + IN OUT MLME_DISASSOC_REQ_STRUCT *DisassocReq, + IN MACADDR *Addr, + IN USHORT Reason); + +VOID StartParmFill( + IN PRTMP_ADAPTER pAdapter, + IN OUT MLME_START_REQ_STRUCT *StartReq, + IN CHAR Ssid[], + IN UCHAR SsidLen); + +VOID AuthParmFill( + IN PRTMP_ADAPTER pAdapter, + IN OUT MLME_AUTH_REQ_STRUCT *AuthReq, + IN MACADDR *Addr, + IN USHORT Alg); + +VOID EnqueuePsPoll( + IN PRTMP_ADAPTER pAdapter); + +VOID EnqueueBeaconFrame( + IN PRTMP_ADAPTER pAdapter); + +VOID EnqueueNullFrame( + IN PRTMP_ADAPTER pAdapter, + IN UCHAR TxRate); + +VOID MlmeJoinReqAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID MlmeScanReqAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID MlmeStartReqAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID ScanTimeoutAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID BeaconTimeoutAtJoinAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID PeerBeaconAtScanAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID PeerBeaconAtJoinAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID PeerBeacon( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID PeerProbeReqAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem); + +VOID ScanNextChannel( + IN PRTMP_ADAPTER pAdapter); + +ULONG MakeIbssBeacon( + IN PRTMP_ADAPTER pAdapter); + +BOOLEAN MlmeScanReqSanity( + IN PRTMP_ADAPTER pAdapter, + IN VOID *Msg, + IN ULONG MsgLen, + OUT UCHAR *BssType, + OUT CHAR ssid[], + OUT UCHAR *SsidLen, + OUT UCHAR *ScanType); + +BOOLEAN PeerBeaconAndProbeRspSanity( + IN PRTMP_ADAPTER pAdapter, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *Addr2, + OUT MACADDR *Bssid, + OUT CHAR Ssid[], + OUT UCHAR *SsidLen, + OUT UCHAR *BssType, + OUT USHORT *BeaconPeriod, + OUT UCHAR *Channel, + OUT LARGE_INTEGER *Timestamp, + OUT BOOLEAN *CfExist, + OUT CF_PARM *Cf, + OUT USHORT *AtimWin, + OUT USHORT *CapabilityInfo, + OUT UCHAR Rate[], + OUT UCHAR *RateLen, + OUT BOOLEAN *ExtendedRateIeExist, + OUT UCHAR *Erp, + OUT UCHAR *DtimCount, + OUT UCHAR *DtimPeriod, + OUT UCHAR *BcastFlag, + OUT UCHAR *MessageToMe, + OUT UCHAR *Legacy, + OUT UCHAR SupRate[], + OUT UCHAR *SupRateLen, + OUT UCHAR ExtRate[], + OUT UCHAR *ExtRateLen, + OUT PNDIS_802_11_VARIABLE_IEs pVIE); + +//BOOLEAN JoinParmSanity( +// IN PRTMP_ADAPTER pAdapter, +// IN VOID *Msg, +// IN ULONG MsgLen, +// OUT ULONG *BssIdx, +// OUT UCHAR SupportedRates[], +// OUT UCHAR *SupportedRatesLen); + +BOOLEAN MlmeAssocReqSanity( + IN PRTMP_ADAPTER pAdapter, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *ApAddr, + OUT USHORT *CapabilityInfo, + OUT ULONG *Timeout, + OUT USHORT *ListenIntv); + +BOOLEAN MlmeAuthReqSanity( + IN PRTMP_ADAPTER pAdapter, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *Addr, + OUT ULONG *Timeout, + OUT USHORT *Alg); + +BOOLEAN MlmeStartReqSanity( + IN PRTMP_ADAPTER pAdapter, + IN VOID *Msg, + IN ULONG MsgLen, + OUT CHAR Ssid[], + OUT UCHAR *Ssidlen); + +BOOLEAN PeerAuthSanity( + IN PRTMP_ADAPTER pAdapter, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *Addr, + OUT USHORT *Alg, + OUT USHORT *Seq, + OUT USHORT *Status, + OUT CHAR ChlgText[]); + +BOOLEAN PeerAssocRspSanity( + IN PRTMP_ADAPTER pAdapter, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *Addr2, + OUT USHORT *CapabilityInfo, + OUT USHORT *Status, + OUT USHORT *Aid, + OUT UCHAR Rates[], + OUT UCHAR *RatesLen, + OUT BOOLEAN *ExtendedRateIeExist); + +BOOLEAN PeerDisassocSanity( + IN PRTMP_ADAPTER pAdapter, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *Addr2, + OUT USHORT *Reason); + +BOOLEAN PeerDeauthSanity( + IN PRTMP_ADAPTER pAdapter, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *Addr2, + OUT USHORT *Reason); + +BOOLEAN PeerProbeReqSanity( + IN PRTMP_ADAPTER pAdapter, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *Addr2, + OUT CHAR Ssid[], + OUT UCHAR *SsidLen); +// OUT UCHAR Rates[], +// OUT UCHAR *RatesLen); + +BOOLEAN GetTimBit( + IN CHAR *Ptr, + IN USHORT Aid, + OUT UCHAR *TimLen, + OUT UCHAR *BcastFlag, + OUT UCHAR *DtimCount, + OUT UCHAR *DtimPeriod, + OUT UCHAR *MessageToMe); + +BOOLEAN GetLegacy( + IN CHAR *Ptr, + OUT UCHAR *Legacy); + +ULONG MakeOutgoingFrame( + OUT CHAR *Buffer, + OUT ULONG *Length, ...); + +VOID LfsrInit( + IN PRTMP_ADAPTER pAdapter, + IN ULONG Seed); + +UCHAR RandomByte( + IN PRTMP_ADAPTER pAdapter); + +VOID MlmePeriodicExec( + IN unsigned long data); + +VOID MlmeAutoScan( + IN PRTMP_ADAPTER pAdapter); + +VOID MlmeAutoRecoverNetwork( + IN PRTMP_ADAPTER pAdapter); + +VOID MlmeAutoReconnectLastSSID( + IN PRTMP_ADAPTER pAdapter); + +VOID MlmeCheckForRoaming( + IN PRTMP_ADAPTER pAdapter, + IN ULONG Now32); + +VOID MlmeCheckDynamicTxRateSwitching( + IN PRTMP_ADAPTER pAd); + +VOID MlmeCheckChannelQuality( + IN PRTMP_ADAPTER pAdapter, + IN ULONG Now); + +VOID MlmeCheckForPsmChange( + IN PRTMP_ADAPTER pAdapter, + IN ULONG Now32); + +VOID MlmeSetPsmBit( + IN PRTMP_ADAPTER pAdapter, + IN USHORT psm); + +VOID MlmeSetTxPreamble( + IN PRTMP_ADAPTER pAdapter, + IN USHORT TxPreamble); + +VOID MlmeUpdateTxRates( + IN PRTMP_ADAPTER pAdapter, + IN BOOLEAN bLinkUp); + +NDIS_STATUS MlmeInit( + IN PRTMP_ADAPTER pAdapter); + +VOID MlmeHandler( + IN PRTMP_ADAPTER pAdapter); + +VOID MlmeHalt( + IN PRTMP_ADAPTER pAdapter); + +NDIS_STATUS MlmeInitMemoryHandler( + IN PRTMP_ADAPTER pAd, + IN UINT Number, + IN UINT Size); + +NDIS_STATUS MlmeAllocateMemory( + IN PRTMP_ADAPTER pAd, + OUT PVOID *AllocVa); + +VOID MlmeFreeMemory( + IN PRTMP_ADAPTER pAd, + IN PVOID AllocVa); + +VOID MlmeFreeMemoryHandler( + IN PRTMP_ADAPTER pAd); + +VOID BuildChannelList( + IN PRTMP_ADAPTER pAdapter); + +UCHAR FirstChannel( + IN PRTMP_ADAPTER pAdapter); + +UCHAR NextChannel( + IN PRTMP_ADAPTER pAdapter, + IN UCHAR channel); + +VOID RaiseClock( + IN PRTMP_ADAPTER pAd, + IN ULONG *x); + +VOID LowerClock( + IN PRTMP_ADAPTER pAd, + IN ULONG *x); + +USHORT ShiftInBits( + IN PRTMP_ADAPTER pAd); + +VOID ShiftOutBits( + IN PRTMP_ADAPTER pAd, + IN USHORT data, + IN USHORT count); + +VOID EEpromCleanup( + IN PRTMP_ADAPTER pAd); + +VOID EWDS( + IN PRTMP_ADAPTER pAd); + +VOID EWEN( + IN PRTMP_ADAPTER pAd); + +USHORT RTMP_EEPROM_READ16( + IN PRTMP_ADAPTER pAd, + IN USHORT Offset); + +VOID RTMP_EEPROM_WRITE16( + IN PRTMP_ADAPTER pAd, + IN USHORT Offset, + IN USHORT Data); + +UCHAR ChannelSanity( + IN PRTMP_ADAPTER pAd, + IN UCHAR channel); + +// +// Prototypes of function definition in rtmp_tkip.c +// +VOID RTMPInitTkipEngine( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pTKey, + IN UCHAR KeyId, + IN PUCHAR pTA, + IN PUCHAR pMICKey, + IN PUCHAR pTSC, + OUT PULONG pIV16, + OUT PULONG pIV32); + +VOID RTMPInitMICEngine( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pKey, + IN PUCHAR pDA, + IN PUCHAR pSA, + IN PUCHAR pMICKey); + +BOOLEAN RTMPTkipCompareMICValue( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pSrc, + IN PUCHAR pDA, + IN PUCHAR pSA, + IN PUCHAR pMICKey, + IN UINT Len); + +VOID RTMPCalculateMICValue( + IN PRTMP_ADAPTER pAdapter, + IN struct sk_buff *skb, + IN PUCHAR pEncap, + IN INT LenEncap, + IN PWPA_KEY pWpaKey); + +BOOLEAN RTMPTkipCompareMICValueWithLLC( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pLLC, + IN PUCHAR pSrc, + IN PUCHAR pDA, + IN PUCHAR pSA, + IN PUCHAR pMICKey, + IN UINT Len); + +VOID RTMPTkipAppend( + IN PTKIP_KEY_INFO pTkip, + IN PUCHAR pSrc, + IN UINT nBytes); + +VOID RTMPTkipGetMIC( + IN PTKIP_KEY_INFO pTkip); + +NDIS_STATUS RTMPWPAAddKeyProc( + IN PRTMP_ADAPTER pAdapter, + IN PVOID pBuf); + +NDIS_STATUS RTMPWPARemoveKeyProc( + IN PRTMP_ADAPTER pAdapter, + IN PVOID pBuf); + +VOID RTMPWPARemoveAllKeys( + IN PRTMP_ADAPTER pAdapter); + +VOID RTMPSetPhyMode( + IN PRTMP_ADAPTER pAdapter, + IN ULONG phymode); + +VOID RTMPSetDesiredRates( + IN PRTMP_ADAPTER pAdapter, + IN LONG Rates); + +INT RTMPSetInformation( + IN PRTMP_ADAPTER pAdapter, + IN OUT struct ifreq *rq, + IN INT cmd); + +INT RTMPQueryInformation( + IN PRTMP_ADAPTER pAdapter, + IN OUT struct ifreq *rq, + IN INT cmd); + +// +// Prototypes of function definition for *iwpriv* in rtmp_info.c +// +INT Set_CountryRegion_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_SSID_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_WirelessMode_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_TxRate_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_AdhocModeRate_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_Channel_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR + arg); + +#ifdef RT2500_DBG +INT Set_Debug_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); +#endif + +INT Set_BGProtection_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_TxPreamble_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_StaWithEtherBridge_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_RTSThreshold_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_FragThreshold_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_TxBurst_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_TurboRate_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_NetworkType_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_AuthMode_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_EncrypType_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_DefaultKeyID_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_Key1_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_Key2_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_Key3_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_Key4_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_WPAPSK_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_WPANONE_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +VOID RTMPIoctlBBP( + IN PRTMP_ADAPTER pAdapter, + IN struct iwreq *wrq); + +VOID RTMPIoctlMAC( + IN PRTMP_ADAPTER pAdapter, + IN struct iwreq *wrq); + +#ifdef RALINK_ATE +VOID RTMPIoctlE2PROM( + IN PRTMP_ADAPTER pAdapter, + IN struct iwreq *wrq); +#endif + +int RTMPIoctlRFMONTX( + IN OUT PRTMP_ADAPTER pAdapter, + IN struct iwreq *wrq); + +// +// prototype in wpa.c +// +BOOLEAN WpaMsgTypeSubst( + IN UCHAR EAPType, + OUT ULONG *MsgType); + +VOID WpaPskStateMachineInit( + IN PRTMP_ADAPTER pAd, + IN STATE_MACHINE *S, + OUT STATE_MACHINE_FUNC Trans[]); + +VOID WpaEAPOLKeyAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID WpaPairMsg1Action( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID WpaPairMsg3Action( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID WpaGroupMsg1Action( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem); + +VOID WpaMacHeaderInit( + IN PRTMP_ADAPTER pAd, + IN OUT PHEADER_802_11 Hdr, + IN UCHAR wep, + IN PMACADDR pAddr1); + +VOID WpaHardEncrypt( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pPacket, + IN ULONG Len); + +VOID HMAC_SHA1( + IN UCHAR *text, + IN UINT text_len, + IN UCHAR *key, + IN UINT key_len, + IN UCHAR *digest); + +VOID PRF( + IN UCHAR *key, + IN INT key_len, + IN UCHAR *prefix, + IN INT prefix_len, + IN UCHAR *data, + IN INT data_len, + OUT UCHAR *output, + IN INT len); + +VOID WpaCountPTK( + IN UCHAR *PMK, + IN UCHAR *ANonce, + IN UCHAR *AA, + IN UCHAR *SNonce, + IN UCHAR *SA, + OUT UCHAR *output, + IN UINT len); + +VOID GenRandom( + IN PRTMP_ADAPTER pAd, + OUT UCHAR *random); + +VOID AES_GTK_KEY_UNWRAP( + IN UCHAR *key, + OUT UCHAR *plaintext, + IN UCHAR *ciphertext); + +ULONG RTMPTkipGetUInt32( + IN PUCHAR pMICKey); + +char * rtstrstr( + IN const char * s1, + IN const char * s2); + +#ifdef RALINK_ATE +INT Set_ATE_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_ATE_DA_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_ATE_SA_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_ATE_BSSID_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_ATE_CHANNEL_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_ATE_TX_POWER_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_ATE_TX_LENGTH_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_ATE_TX_COUNT_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +INT Set_ATE_TX_RATE_Proc( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR arg); + +VOID RTMPStationStop( + IN PRTMP_ADAPTER pAd); + +VOID RTMPStationStart( + IN PRTMP_ADAPTER pAd); + +#endif //#ifdef RALINK_ATE + +int rt2500_set_mac_address(struct net_device *net_dev, void *addr); + +#ifdef BIG_ENDIAN +VOID RTMPFrameEndianChange( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pData, + IN ULONG Dir, + IN BOOLEAN FromRxDoneInt); + +VOID RTMPDescriptorEndianChange( + IN PUCHAR pData, + IN ULONG DescriptorType); +#endif + +#ifndef _PRISMHEADER +#define _PRISMHEADER + +enum { + DIDmsg_lnxind_wlansniffrm = 0x00000044, + DIDmsg_lnxind_wlansniffrm_hosttime = 0x00010044, + DIDmsg_lnxind_wlansniffrm_mactime = 0x00020044, + DIDmsg_lnxind_wlansniffrm_channel = 0x00030044, + DIDmsg_lnxind_wlansniffrm_rssi = 0x00040044, + DIDmsg_lnxind_wlansniffrm_sq = 0x00050044, + DIDmsg_lnxind_wlansniffrm_signal = 0x00060044, + DIDmsg_lnxind_wlansniffrm_noise = 0x00070044, + DIDmsg_lnxind_wlansniffrm_rate = 0x00080044, + DIDmsg_lnxind_wlansniffrm_istx = 0x00090044, + DIDmsg_lnxind_wlansniffrm_frmlen = 0x000A0044 +}; +enum { + P80211ENUM_msgitem_status_no_value = 0x00 +}; +enum { + P80211ENUM_truth_false = 0x00, + P80211ENUM_truth_true = 0x01 +}; + +typedef struct { + u_int32_t did; + u_int16_t status; + u_int16_t len; + u_int32_t data; +} p80211item_uint32_t; + +typedef struct { + u_int32_t msgcode; + u_int32_t msglen; +#define WLAN_DEVNAMELEN_MAX 16 + u_int8_t devname[WLAN_DEVNAMELEN_MAX]; + p80211item_uint32_t hosttime; + p80211item_uint32_t mactime; + p80211item_uint32_t channel; + p80211item_uint32_t rssi; + p80211item_uint32_t sq; + p80211item_uint32_t signal; + p80211item_uint32_t noise; + p80211item_uint32_t rate; + p80211item_uint32_t istx; + p80211item_uint32_t frmlen; +} wlan_ng_prism2_header; + +#endif + +#endif // __RTMP_H__ --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/rtmp_def.h +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/rtmp_def.h @@ -1,571 +1,571 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: rtmp_def.h - * - * Abstract: Miniport related definition header - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * PaulL 1st Aug 02 Initial code - * MarkW 8th Dec 04 Baseline code - ***************************************************************************/ - -#ifndef __RTMP_DEF_H__ -#define __RTMP_DEF_H__ - -// -// Debug information verbosity: lower values indicate higher urgency -// -#define RT_DEBUG_ERROR KERN_ERR -#define RT_DEBUG_WARN KERN_WARNING -#define RT_DEBUG_TRACE KERN_NOTICE -#define RT_DEBUG_INFO KERN_INFO -#define RT_DEBUG_LOUD KERN_DEBUG - -// -// update the driver version number every time you release a new driver -// The high word is the major version. The low word is the minor version. -// -#define NIC_VENDOR_DRIVER_VERSION 0x00010001 - -// -// NDIS media type, current is ethernet, change if native wireless supported -// -#define NIC_PCI_HDR_LENGTH 0xe2 -#define NIC_MAX_PACKET_SIZE 2304 -#define NIC_HEADER_SIZE 14 - -// -// interface type, we use PCI -// - -// -// buffer size passed in NdisMQueryAdapterResources -// We should only need three adapter resources (IO, interrupt and memory), -// Some devices get extra resources, so have room for 10 resources -// - -// -// IO space length -// - -// -// Entry number for each DMA descriptor ring -// -#define TX_RING_SIZE 48 -#define ATIM_RING_SIZE 4 -#define PRIO_RING_SIZE 16 // 8 -#define RX_RING_SIZE 32 -#define BEACON_RING_SIZE 1 -#define DESCRIPTOR_REQUIRED ((TX_RING_SIZE) + (ATIM_RING_SIZE) + (PRIO_RING_SIZE) + (RX_RING_SIZE) + (BEACON_RING_SIZE)) -#define OTHER_DESC_REQUIRED ((ATIM_RING_SIZE) + (PRIO_RING_SIZE) + (RX_RING_SIZE) + (BEACON_RING_SIZE)) -#define MGMT_RING_SIZE 32 -#define RING_DESCRIPTOR_SIZE 48 -#define TX_BUFFER_SIZE 2048 -#define PRIO_BUFFER_SIZE 1024 // 2048 -#define RX_BUFFER_SIZE 2048 -#define ATIM_BUFFER_SIZE 512 -#define BEACON_BUFFER_SIZE 2048 -#define MAX_FRAME_SIZE 2346 // Maximum 802.11 frame size -#define ALLOC_RX_PACKET_POOL (RX_RING_SIZE) -#define ALLOC_RX_BUFFER_POOL (ALLOC_RX_PACKET_POOL) -#define TX_RING 0xa -#define ATIM_RING 0xb -#define PRIO_RING 0xc -#define RX_RING 0xd -#define MAX_TX_PROCESS 4 -#define MAX_RX_PROCESS 4 -#define MAX_CLIENT 4 -#define MAX_MCAST_LIST_SIZE 32 - -// RTMP_ADAPTER flags -#define fRTMP_ADAPTER_MAP_REGISTER 0x00000001 -#define fRTMP_ADAPTER_INTERRUPT_IN_USE 0x00000002 -#define fRTMP_ADAPTER_HARDWARE_ERROR 0x00000004 -#define fRTMP_ADAPTER_MLME_INITIALIZED 0x00000008 -#define fRTMP_ADAPTER_SEND_PACKET_ERROR 0x00000010 -#define fRTMP_ADAPTER_RECEIVE_PACKET_ERROR 0x00000020 -#define fRTMP_ADAPTER_HALT_IN_PROGRESS 0x00000040 -#define fRTMP_ADAPTER_RESET_IN_PROGRESS 0x00000080 -#define fRTMP_ADAPTER_REMOVE_IN_PROGRESS 0x00000100 -#define fRTMP_ADAPTER_TX_RING_ALLOCATED 0x00000200 -#define fRTMP_ADAPTER_ATIM_RING_ALLOCATED 0x00000400 -#define fRTMP_ADAPTER_PRIO_RING_ALLOCATED 0x00000800 -#define fRTMP_ADAPTER_RX_RING_ALLOCATED 0x00001000 -#define fRTMP_ADAPTER_INTERRUPT_ACTIVE 0x00002000 -#define fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS 0x00004000 -#define fRTMP_ADAPTER_MEDIA_STATE_CHANGE 0x00008000 -#define fRTMP_ADAPTER_MEDIA_STATE_PENDING 0x00010000 -#define fRTMP_ADAPTER_RADIO_OFF 0x00020000 -#define fRTMP_ADAPTER_NIC_NOT_EXIST 0x02000000 - -// Lock bit for accessing different ring buffers -#define fRTMP_ADAPTER_TX_RING_BUSY 0x80000000 -#define fRTMP_ADAPTER_PRIO_RING_BUSY 0x40000000 -#define fRTMP_ADAPTER_ATIM_RING_BUSY 0x20000000 -#define fRTMP_ADAPTER_RX_RING_BUSY 0x10000000 - -// Lock bit for accessing different queue -#define fRTMP_ADAPTER_TX_QUEUE_BUSY 0x08000000 -#define fRTMP_ADAPTER_PRIO_QUEUE_BUSY 0x04000000 - -// -// Error code section -// -// NDIS_ERROR_CODE_ADAPTER_NOT_FOUND -#define ERRLOG_READ_PCI_SLOT_FAILED 0x00000101L -#define ERRLOG_WRITE_PCI_SLOT_FAILED 0x00000102L -#define ERRLOG_VENDOR_DEVICE_NOMATCH 0x00000103L - -// NDIS_ERROR_CODE_ADAPTER_DISABLED -#define ERRLOG_BUS_MASTER_DISABLED 0x00000201L - -// NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION -#define ERRLOG_INVALID_SPEED_DUPLEX 0x00000301L -#define ERRLOG_SET_SECONDARY_FAILED 0x00000302L - -// NDIS_ERROR_CODE_OUT_OF_RESOURCES -#define ERRLOG_OUT_OF_MEMORY 0x00000401L -#define ERRLOG_OUT_OF_SHARED_MEMORY 0x00000402L -#define ERRLOG_OUT_OF_MAP_REGISTERS 0x00000403L -#define ERRLOG_OUT_OF_BUFFER_POOL 0x00000404L -#define ERRLOG_OUT_OF_NDIS_BUFFER 0x00000405L -#define ERRLOG_OUT_OF_PACKET_POOL 0x00000406L -#define ERRLOG_OUT_OF_NDIS_PACKET 0x00000407L -#define ERRLOG_OUT_OF_LOOKASIDE_MEMORY 0x00000408L - -// NDIS_ERROR_CODE_HARDWARE_FAILURE -#define ERRLOG_SELFTEST_FAILED 0x00000501L -#define ERRLOG_INITIALIZE_ADAPTER 0x00000502L -#define ERRLOG_REMOVE_MINIPORT 0x00000503L - -// NDIS_ERROR_CODE_RESOURCE_CONFLICT -#define ERRLOG_MAP_IO_SPACE 0x00000601L -#define ERRLOG_QUERY_ADAPTER_RESOURCES 0x00000602L -#define ERRLOG_NO_IO_RESOURCE 0x00000603L -#define ERRLOG_NO_INTERRUPT_RESOURCE 0x00000604L -#define ERRLOG_NO_MEMORY_RESOURCE 0x00000605L - - - -//============================================================ -// Length definitions -#define PEER_KEY_NO 2 -#define CRC_LEN 4 -#define TIMESTAMP_LEN 8 -#define MAX_LEN_OF_SUPPORTED_RATES 12 // 1, 2, 5.5, 11, 6, 9, 12, 18, 24, 36, 48, 54 -#define MAX_NUM_OF_POWER_LEVEL 8 -#define MAX_NUM_OF_DOMAIN 8 -#define MAX_LEN_OF_KEY 32 // 32 octets == 256 bits, Redefine for WPA -#define MAX_LEN_OF_CHANNELS 42 // 14 channels @2.4G + 12@UNII + 4 @MMAC + 11 @HiperLAN2 + 1 as NULL termination -#define MAX_LEN_OF_PEER_KEY 16 -#define MAC_HDR_LEN 24 -#define MAX_LEN_OF_MANUFACTURE_ID 32 -#define MAX_LEN_OF_PRODUCT_ID 32 -#define MAX_LEN_OF_MAC_TABLE 32 -#define MAX_LEN_OF_SSID 32 -#define CIPHER_TEXT_LEN 128 -#define HASH_TABLE_SIZE 256 -#define MAX_LEN_OF_MLME_BUFFER 1024 -#define MAX_FRAME_LEN 2338 -#define MAX_VIE_LEN 128 // New for WPA cipher suite variable IE sizes. -#define MAX_MLME_HANDLER_MEMORY 20 //each them cantains MAX_LEN_OF_MLME_BUFFER size -#define MAX_INI_BUFFER_SIZE 1024 - -#define MAX_TX_POWER_LEVEL 100 /* mW */ -#define MAX_RSSI_TRIGGER -10 /* dBm */ -#define MIN_RSSI_TRIGGER -200 /* dBm */ -#define MAX_FRAG_THRESHOLD 2346 /* byte count */ -#define MIN_FRAG_THRESHOLD 256 /* byte count */ -#define MAX_RTS_THRESHOLD 2347 /* byte count */ - -// key related definitions -#define SHARE_KEY_NO 4 -#define MAX_LEN_OF_SHARE_KEY 16 -#define PAIRWISE_KEY_NO 4 -#define GROUP_KEY_NO 4 - -// power status related definitions -#define PWR_ACTIVE 0 -#define PWR_SAVE 1 -#define PWR_UNKNOWN 2 - -// Auth and Assoc mode related definitions -#define AUTH_MODE 0x10 -#define ASSOC_MODE 0x20 - -#define AUTH_MODE_OPEN 0x00 -#define AUTH_MODE_SHARED 0x01 -#define AUTH_MODE_AUTO_SWITCH 0x03 -#define AUTH_MODE_DEAUTH 0x04 -#define AUTH_MODE_UPLAYER 0x05 // reserved for 802.11i use - -#define ASSOC_MODE_DISASSOC 0x04 -#define ASSOC_MODE_ASSOC 0x05 - -// BSS Type definitions -#define BSS_INDEP 0 // = Ndis802_11IBSS -#define BSS_INFRA 1 // = Ndis802_11Infrastructure -#define BSS_ANY 2 // = Ndis802_11AutoUnknown -#define BSS_MONITOR 3 // = Ndis802_11Monitor -// #define BSS_UNKNOWN 0xff - - -// WEP related definitions -// #define WEP_DISABLE 0 -// #define WEP_ENABLE 1 -// #define WEP_KEY_ABSENT 2 -// #define WEP_NOT_SUPPORTED 3 - -// value of FrameDesc.priority -// #define PRIO_CONTENTION 0 -// #define PRIO_CONTENTION_FREE 1 - -// value of auth_algorithm in Authentication frame body - -// Reason code definitions -#define REASON_RESERVED 0 -#define REASON_UNSPECIFY 1 -#define REASON_NO_LONGER_VALID 2 -#define REASON_DEAUTH_STA_LEAVING 3 -#define REASON_DISASSOC_INACTIVE 4 -#define REASON_DISASSPC_AP_UNABLE 5 -#define REASON_CLS2ERR 6 -#define REASON_CLS3ERR 7 -#define REASON_DISASSOC_STA_LEAVING 8 -#define REASON_STA_REQ_ASSOC_NOT_AUTH 9 -#define REASON_INVALID_IE 13 -#define REASON_MIC_FAILURE 14 -#define REASON_4_WAY_HANDSHAKE_TIMEOUT 15 -#define REASON_GROUP_KEY_UPDATE_TIMEOUT 16 - -// Status code definitions -#define MLME_SUCCESS 0 -#define MLME_UNSPECIFY_FAIL 1 -#define MLME_CANNOT_SUPPORT_CAP 10 -#define MLME_REASSOC_DENY_ASSOC_EXIST 11 -#define MLME_ASSOC_DENY_OUT_SCOPE 12 -#define MLME_ALG_NOT_SUPPORT 13 -#define MLME_SEQ_NR_OUT_OF_SEQUENCE 14 -#define MLME_REJ_CHALLENGE_FAILURE 15 -#define MLME_REJ_TIMEOUT 16 -#define MLME_ASSOC_REJ_UNABLE_HANDLE_STA 17 -#define MLME_ASSOC_REJ_DATA_RATE 18 - -#define MLME_ASSOC_REJ_NO_EXT_RATE 22 -#define MLME_ASSOC_REJ_NO_EXT_RATE_PBCC 23 -#define MLME_ASSOC_REJ_NO_CCK_OFDM 24 - -#define MLME_INVALID_FORMAT 0x51 -#define MLME_FAIL_NO_RESOURCE 0x52 -#define MLME_STATE_MACHINE_REJECT 0x53 -#define MLME_MAC_TABLE_FAIL 0x54 - -//IE code -#define IE_SSID 0 -#define IE_SUPP_RATES 1 -#define IE_FH_PARM 2 -#define IE_DS_PARM 3 -#define IE_CF_PARM 4 -#define IE_TIM 5 -#define IE_IBSS_PARM 6 -#define IE_COUNTRY 7 // 802.11d -#define IE_802_11D_REQUEST 10 // 802.11d -#define IE_CHALLENGE_TEXT 16 -#define IE_POWER_CONSTRAINT 32 // 802.11h d3.3 -#define IE_POWER_CAPABILITY 33 // 802.11h d3.3 -#define IE_TPC_REQUEST 34 // 802.11h d3.3 -#define IE_TPC_REPORT 35 // 802.11h d3.3 -#define IE_SUPP_CHANNELS 36 // 802.11h d3.3 -#define IE_CHANNEL_SWITCH_ANNOUNCEMENT 37 // 802.11h d3.3 -#define IE_MEASUREMENT_REQUEST 38 // 802.11h d3.3 -#define IE_MEASUREMENT_REPORT 39 // 802.11h d3.3 -#define IE_QUIET 40 // 802.11h d3.3 -#define IE_IBSS_DFS 41 // 802.11h d3.3 -#define IE_ERP 42 // 802.11g -#define IE_EXT_SUPP_RATES 50 // 802.11g -#define IE_WPA 221 // WPA -#define IE_RSN 48 // 802.11i d3.0 - -#define CNTL_FUNC_SIZE 1 - -// Message type for the MLME state machine -// Messages for Associate state machine -#define ASSOC_MACHINE_BASE 0 - -#define MT2_MLME_ASSOC_REQ 0 -#define MT2_MLME_REASSOC_REQ 1 -#define MT2_MLME_DISASSOC_REQ 2 -#define MT2_PEER_DISASSOC_REQ 3 -#define MT2_PEER_ASSOC_REQ 4 -#define MT2_PEER_ASSOC_RSP 5 -#define MT2_PEER_REASSOC_REQ 6 -#define MT2_PEER_REASSOC_RSP 7 -//#define MT2_CLS3ERR 8 -#define MT2_DISASSOC_TIMEOUT 8 -#define MT2_ASSOC_TIMEOUT 9 -#define MT2_REASSOC_TIMEOUT 10 - -#define MAX_ASSOC_MSG 11 - -// Messages for Authentication state machine -#define AUTH_MACHINE_BASE 11 - -#define MT2_MLME_AUTH_REQ 11 -//#define MT2_MLME_DEAUTH_REQ 12 -//#define MT2_CLS2ERR 13 -#define MT2_PEER_AUTH_EVEN 14 -#define MT2_AUTH_TIMEOUT 15 - -#define MAX_AUTH_MSG 5 - -// Messages for authentication response state machine -#define AUTH_RSP_MACHINE_BASE 16 - -#define MT2_AUTH_CHALLENGE_TIMEOUT 16 -#define MT2_PEER_AUTH_ODD 17 -#define MT2_PEER_DEAUTH 18 - -#define MAX_AUTH_RSP_MSG 3 - -// Messages for the sync state machine -#define SYNC_MACHINE_BASE 19 - -#define MT2_MLME_SCAN_REQ 19 -#define MT2_MLME_JOIN_REQ 20 -#define MT2_MLME_START_REQ 21 -#define MT2_PEER_BEACON 22 -#define MT2_PEER_PROBE_RSP 23 -#define MT2_PEER_ATIM 24 -#define MT2_SCAN_TIMEOUT 25 -#define MT2_BEACON_TIMEOUT 26 -#define MT2_ATIM_TIMEOUT 27 -#define MT2_PEER_PROBE_REQ 28 - -#define MAX_SYNC_MSG 10 - -// MIB access -#define MT2_GET_REQ 31 -#define MT2_SET_REQ 32 -#define MT2_RESET_REQ 33 - -// Confirm message -#define MT2_ASSOC_CONF 34 -#define MT2_AUTH_CONF 35 -#define MT2_DEAUTH_CONF 36 -#define MT2_DISASSOC_CONF 37 -#define MT2_REASSOC_CONF 38 -#define MT2_PWR_MGMT_CONF 39 -#define MT2_JOIN_CONF 40 -#define MT2_SCAN_CONF 41 -#define MT2_START_CONF 42 -#define MT2_GET_CONF 43 -#define MT2_SET_CONF 44 -#define MT2_RESET_CONF 45 - -// Indication message -#define MT2_DEAUTH_IND 46 -#define MT2_ASSOC_IND 47 -#define MT2_DISASSOC_IND 48 -#define MT2_REASSOC_IND 49 -#define MT2_AUTH_IND 50 - -#define MT2_SCAN_END_CONF 51 // For scan end -#define MT2_MLME_ROAMING_REQ 52 - -/* #define TXSTATUS_SUCCESS 0 */ -/* #define TXSTATUS_FAIL_RETRY_LIMIT 1 */ -/* #define TXSTATUS_EXCESSIVE_LENGTH 2 */ -/* #define TXSTATUS_NON_NULL_SOURCE_ROUTE 3 */ -/* #define TXSTATUS_UNSUPPORTED_PRIORITY 4 */ -/* #define TXSTATUS_UNSUPPORTED_SERVICE 5 */ -/* #define TXSTATUS_UNAVAILABLE_PRIORITY 6 // CF with no PC available; down-grade to contention */ -/* #define TXSTATUS_UNAVAILABLE_SERVICE 7 // strictly-ordered but STA isn't active */ -/* #define TXSTATUS_FAIL_LIFE_TIME 8 */ -/* #define TXSTATUS_FAIL_NOBSS 9 */ -/* #define TXSTATUS_FAIL_NULL_KEY 10 */ - -// value domain of MacHdr.tyte, which is b3..b2 of the 1st-byte of MAC header -#define BTYPE_MGMT 0 // 00 -#define BTYPE_CNTL 1 // 01 -#define BTYPE_DATA 2 // 10 - -// value domain of MacHdr.subtype, which is b7..4 of the 1st-byte of MAC header -// Management frame -#define SUBTYPE_ASSOC_REQ 0 -#define SUBTYPE_ASSOC_RSP 1 -#define SUBTYPE_REASSOC_REQ 2 -#define SUBTYPE_REASSOC_RSP 3 -#define SUBTYPE_PROBE_REQ 4 -#define SUBTYPE_PROBE_RSP 5 -#define SUBTYPE_BEACON 8 -#define SUBTYPE_ATIM 9 -#define SUBTYPE_DISASSOC 10 -#define SUBTYPE_AUTH 11 -#define SUBTYPE_DEAUTH 12 -#define SUBTYPE_ACTION 13 - -// Control Frame -#define SUBTYPE_BLOCK_ACK_REQ 8 -#define SUBTYPE_BLOCK_ACK 9 -#define SUBTYPE_PS_POLL 10 -#define SUBTYPE_RTS 11 // 1011 -#define SUBTYPE_CTS 12 // 1100 -#define SUBTYPE_ACK 13 // 1101 -#define SUBTYPE_CFEND 14 -#define SUBTYPE_CFEND_CFACK 15 - -// Data Frame -#define SUBTYPE_DATA 0 -#define SUBTYPE_DATA_CFACK 1 -#define SUBTYPE_DATA_CFPOLL 2 -#define SUBTYPE_DATA_CFACK_CFPOLL 3 -#define SUBTYPE_NULL_FUNC 4 -#define SUBTYPE_CFACK 5 // 0101 -#define SUBTYPE_CFPOLL 6 -#define SUBTYPE_CFACK_CFPOLL 7 -#define SUBTYPE_QDATA 8 -#define SUBTYPE_QDATA_CFACK 9 -#define SUBTYPE_QDATA_CFPOLL 10 -#define SUBTYPE_QDATA_CFACK_CFPOLL 11 -#define SUBTYPE_QOS_NULL 12 -#define SUBTYPE_QOS_CFACK 13 -#define SUBTYPE_QOS_CFPOLL 14 -#define SUBTYPE_QOS_CFACK_CFPOLL 15 - -#define ASSOC_STATE_MACHINE 1 -#define AUTH_STATE_MACHINE 2 -#define AUTH_RSP_STATE_MACHINE 3 -#define SYNC_STATE_MACHINE 4 -#define MLME_CNTL_STATE_MACHINE 5 -#define WPA_PSK_STATE_MACHINE 6 - -// -// rtmp_data.c use these definition -// -#define LENGTH_802_11 24 -#define LENGTH_802_11_AND_H 30 -#define LENGTH_802_11_CRC_H 34 -#define LENGTH_802_11_CRC 28 -#define LENGTH_802_3 14 -#define LENGTH_802_3_TYPE 2 -#define LENGTH_802_1_H 8 -#define LENGTH_EAPOL_H 4 -#define LENGTH_CRC 4 -#define MAX_SEQ_NUMBER 0x0fff - -#define SUCCESS_WITHOUT_RETRY 0 -#define SUCCESS_WITH_RETRY 1 -#define FAIL_RETRY_LIMIT 2 -#define FAIL_INVALID 3 -#define FAIL_OTHER 4 - -#define RATE_1 0 -#define RATE_2 1 -#define RATE_5_5 2 -#define RATE_11 3 -#define RATE_6 4 // OFDM -#define RATE_9 5 // OFDM -#define RATE_12 6 // OFDM -#define RATE_18 7 // OFDM -#define RATE_24 8 // OFDM -#define RATE_36 9 // OFDM -#define RATE_48 10 // OFDM -#define RATE_54 11 // OFDM -#define RATE_72 12 -#define RATE_100 13 -#define RATE_FIRST_OFDM_RATE RATE_6 -#define RATE_AUTO_SWITCH 255 // for PortCfg.FixedTxRate only - -#define IFS_BACKOFF 0 -#define IFS_SIFS 1 -#define IFS_NEW_BACKOFF 2 -#define IFS_NONE 3 - -#define LONG_RETRY 1 -#define SHORT_RETRY 0 - -// Country Region definition -#define REGION_MIN 0 -#define REGION_FCC 0 // 1-11 -#define REGION_IC 1 // 1-11 -#define REGION_ETSI 2 // 1-13 -#define REGION_SPAIN 3 // 10-11 -#define REGION_FRANCE 4 // 10-13 -#define REGION_MKK 5 // 14 -#define REGION_MKK1 6 // 1-14 -#define REGION_ISRAEL 7 // 3-9 -#define REGION_MAX REGION_ISRAEL - -#define CIPHER_NONE 0 -#define CIPHER_WEP64 1 -#define CIPHER_WEP128 2 -#define CIPHER_TKIP 3 -#define CIPHER_AES 4 - -// Stall execution time for ndisdpracquires[inlock in miniportReset function -#define WAIT_TIME_FOR_SPINLOCK 10 // usec - -// value domain for pAdapter->PortCfg.RfType -#define RFIC_2522 0 -#define RFIC_2523 1 -#define RFIC_2524 2 -#define RFIC_2525 3 -#define RFIC_2525E 4 -#define RFIC_5222 16 - -// value domain for pAdapter->PortCfg.LedMode and E2PROM -#define LED_MODE_DEFAULT 0 -#define LED_MODE_TXRX_ACTIVITY 1 -#define LED_MODE_SINGLE 2 // Single LED mode, driver lid the LED as soon as driver up & enable tx activity right away -#define LED_MODE_ASUS 3 // Two LED modes, bit 16 acts as LED_MODE_SINGLE, bit 17 acts as RADIO status. - -// RC4 init value, used fro WEP & TKIP -#define PPPINITFCS32 0xffffffff /* Initial FCS value */ - -// 802.1X controlled port definition -#define WPA_802_1X_PORT_SECURED 1 -#define WPA_802_1X_PORT_NOT_SECURED 2 - -#define PAIRWISE_KEY 1 -#define GROUP_KEY 2 - -#ifdef BIG_ENDIAN -#define DIR_READ 0 -#define DIR_WRITE 1 -#define TYPE_TXD 0 -#define TYPE_RXD 1 -#endif - -#ifdef RALINK_ATE -#define ATE_STASTOP 0 // Stop Station -#define ATE_STASTART 1 // Start Station -#define ATE_TXCONT 2 // Continuous Transmit -#define ATE_TXCARR 3 // Transmit Carrier -#define ATE_TXFRAME 4 // Transmit Frames -#define ATE_RXFRAME 5 // Receive Frames -#endif //#ifdef RALINK_ATE - -#endif // __RTMP_DEF_H__ +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: rtmp_def.h + * + * Abstract: Miniport related definition header + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * PaulL 1st Aug 02 Initial code + * MarkW 8th Dec 04 Baseline code + ***************************************************************************/ + +#ifndef __RTMP_DEF_H__ +#define __RTMP_DEF_H__ + +// +// Debug information verbosity: lower values indicate higher urgency +// +#define RT_DEBUG_ERROR KERN_ERR +#define RT_DEBUG_WARN KERN_WARNING +#define RT_DEBUG_TRACE KERN_NOTICE +#define RT_DEBUG_INFO KERN_INFO +#define RT_DEBUG_LOUD KERN_DEBUG + +// +// update the driver version number every time you release a new driver +// The high word is the major version. The low word is the minor version. +// +#define NIC_VENDOR_DRIVER_VERSION 0x00010001 + +// +// NDIS media type, current is ethernet, change if native wireless supported +// +#define NIC_PCI_HDR_LENGTH 0xe2 +#define NIC_MAX_PACKET_SIZE 2304 +#define NIC_HEADER_SIZE 14 + +// +// interface type, we use PCI +// + +// +// buffer size passed in NdisMQueryAdapterResources +// We should only need three adapter resources (IO, interrupt and memory), +// Some devices get extra resources, so have room for 10 resources +// + +// +// IO space length +// + +// +// Entry number for each DMA descriptor ring +// +#define TX_RING_SIZE 48 +#define ATIM_RING_SIZE 4 +#define PRIO_RING_SIZE 16 // 8 +#define RX_RING_SIZE 32 +#define BEACON_RING_SIZE 1 +#define DESCRIPTOR_REQUIRED ((TX_RING_SIZE) + (ATIM_RING_SIZE) + (PRIO_RING_SIZE) + (RX_RING_SIZE) + (BEACON_RING_SIZE)) +#define OTHER_DESC_REQUIRED ((ATIM_RING_SIZE) + (PRIO_RING_SIZE) + (RX_RING_SIZE) + (BEACON_RING_SIZE)) +#define MGMT_RING_SIZE 32 +#define RING_DESCRIPTOR_SIZE 48 +#define TX_BUFFER_SIZE 2048 +#define PRIO_BUFFER_SIZE 1024 // 2048 +#define RX_BUFFER_SIZE 2048 +#define ATIM_BUFFER_SIZE 512 +#define BEACON_BUFFER_SIZE 2048 +#define MAX_FRAME_SIZE 2346 // Maximum 802.11 frame size +#define ALLOC_RX_PACKET_POOL (RX_RING_SIZE) +#define ALLOC_RX_BUFFER_POOL (ALLOC_RX_PACKET_POOL) +#define TX_RING 0xa +#define ATIM_RING 0xb +#define PRIO_RING 0xc +#define RX_RING 0xd +#define MAX_TX_PROCESS 4 +#define MAX_RX_PROCESS 4 +#define MAX_CLIENT 4 +#define MAX_MCAST_LIST_SIZE 32 + +// RTMP_ADAPTER flags +#define fRTMP_ADAPTER_MAP_REGISTER 0x00000001 +#define fRTMP_ADAPTER_INTERRUPT_IN_USE 0x00000002 +#define fRTMP_ADAPTER_HARDWARE_ERROR 0x00000004 +#define fRTMP_ADAPTER_MLME_INITIALIZED 0x00000008 +#define fRTMP_ADAPTER_SEND_PACKET_ERROR 0x00000010 +#define fRTMP_ADAPTER_RECEIVE_PACKET_ERROR 0x00000020 +#define fRTMP_ADAPTER_HALT_IN_PROGRESS 0x00000040 +#define fRTMP_ADAPTER_RESET_IN_PROGRESS 0x00000080 +#define fRTMP_ADAPTER_REMOVE_IN_PROGRESS 0x00000100 +#define fRTMP_ADAPTER_TX_RING_ALLOCATED 0x00000200 +#define fRTMP_ADAPTER_ATIM_RING_ALLOCATED 0x00000400 +#define fRTMP_ADAPTER_PRIO_RING_ALLOCATED 0x00000800 +#define fRTMP_ADAPTER_RX_RING_ALLOCATED 0x00001000 +#define fRTMP_ADAPTER_INTERRUPT_ACTIVE 0x00002000 +#define fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS 0x00004000 +#define fRTMP_ADAPTER_MEDIA_STATE_CHANGE 0x00008000 +#define fRTMP_ADAPTER_MEDIA_STATE_PENDING 0x00010000 +#define fRTMP_ADAPTER_RADIO_OFF 0x00020000 +#define fRTMP_ADAPTER_NIC_NOT_EXIST 0x02000000 + +// Lock bit for accessing different ring buffers +#define fRTMP_ADAPTER_TX_RING_BUSY 0x80000000 +#define fRTMP_ADAPTER_PRIO_RING_BUSY 0x40000000 +#define fRTMP_ADAPTER_ATIM_RING_BUSY 0x20000000 +#define fRTMP_ADAPTER_RX_RING_BUSY 0x10000000 + +// Lock bit for accessing different queue +#define fRTMP_ADAPTER_TX_QUEUE_BUSY 0x08000000 +#define fRTMP_ADAPTER_PRIO_QUEUE_BUSY 0x04000000 + +// +// Error code section +// +// NDIS_ERROR_CODE_ADAPTER_NOT_FOUND +#define ERRLOG_READ_PCI_SLOT_FAILED 0x00000101L +#define ERRLOG_WRITE_PCI_SLOT_FAILED 0x00000102L +#define ERRLOG_VENDOR_DEVICE_NOMATCH 0x00000103L + +// NDIS_ERROR_CODE_ADAPTER_DISABLED +#define ERRLOG_BUS_MASTER_DISABLED 0x00000201L + +// NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION +#define ERRLOG_INVALID_SPEED_DUPLEX 0x00000301L +#define ERRLOG_SET_SECONDARY_FAILED 0x00000302L + +// NDIS_ERROR_CODE_OUT_OF_RESOURCES +#define ERRLOG_OUT_OF_MEMORY 0x00000401L +#define ERRLOG_OUT_OF_SHARED_MEMORY 0x00000402L +#define ERRLOG_OUT_OF_MAP_REGISTERS 0x00000403L +#define ERRLOG_OUT_OF_BUFFER_POOL 0x00000404L +#define ERRLOG_OUT_OF_NDIS_BUFFER 0x00000405L +#define ERRLOG_OUT_OF_PACKET_POOL 0x00000406L +#define ERRLOG_OUT_OF_NDIS_PACKET 0x00000407L +#define ERRLOG_OUT_OF_LOOKASIDE_MEMORY 0x00000408L + +// NDIS_ERROR_CODE_HARDWARE_FAILURE +#define ERRLOG_SELFTEST_FAILED 0x00000501L +#define ERRLOG_INITIALIZE_ADAPTER 0x00000502L +#define ERRLOG_REMOVE_MINIPORT 0x00000503L + +// NDIS_ERROR_CODE_RESOURCE_CONFLICT +#define ERRLOG_MAP_IO_SPACE 0x00000601L +#define ERRLOG_QUERY_ADAPTER_RESOURCES 0x00000602L +#define ERRLOG_NO_IO_RESOURCE 0x00000603L +#define ERRLOG_NO_INTERRUPT_RESOURCE 0x00000604L +#define ERRLOG_NO_MEMORY_RESOURCE 0x00000605L + + + +//============================================================ +// Length definitions +#define PEER_KEY_NO 2 +#define CRC_LEN 4 +#define TIMESTAMP_LEN 8 +#define MAX_LEN_OF_SUPPORTED_RATES 12 // 1, 2, 5.5, 11, 6, 9, 12, 18, 24, 36, 48, 54 +#define MAX_NUM_OF_POWER_LEVEL 8 +#define MAX_NUM_OF_DOMAIN 8 +#define MAX_LEN_OF_KEY 32 // 32 octets == 256 bits, Redefine for WPA +#define MAX_LEN_OF_CHANNELS 42 // 14 channels @2.4G + 12@UNII + 4 @MMAC + 11 @HiperLAN2 + 1 as NULL termination +#define MAX_LEN_OF_PEER_KEY 16 +#define MAC_HDR_LEN 24 +#define MAX_LEN_OF_MANUFACTURE_ID 32 +#define MAX_LEN_OF_PRODUCT_ID 32 +#define MAX_LEN_OF_MAC_TABLE 32 +#define MAX_LEN_OF_SSID 32 +#define CIPHER_TEXT_LEN 128 +#define HASH_TABLE_SIZE 256 +#define MAX_LEN_OF_MLME_BUFFER 1024 +#define MAX_FRAME_LEN 2338 +#define MAX_VIE_LEN 128 // New for WPA cipher suite variable IE sizes. +#define MAX_MLME_HANDLER_MEMORY 20 //each them cantains MAX_LEN_OF_MLME_BUFFER size +#define MAX_INI_BUFFER_SIZE 1024 + +#define MAX_TX_POWER_LEVEL 100 /* mW */ +#define MAX_RSSI_TRIGGER -10 /* dBm */ +#define MIN_RSSI_TRIGGER -200 /* dBm */ +#define MAX_FRAG_THRESHOLD 2346 /* byte count */ +#define MIN_FRAG_THRESHOLD 256 /* byte count */ +#define MAX_RTS_THRESHOLD 2347 /* byte count */ + +// key related definitions +#define SHARE_KEY_NO 4 +#define MAX_LEN_OF_SHARE_KEY 16 +#define PAIRWISE_KEY_NO 4 +#define GROUP_KEY_NO 4 + +// power status related definitions +#define PWR_ACTIVE 0 +#define PWR_SAVE 1 +#define PWR_UNKNOWN 2 + +// Auth and Assoc mode related definitions +#define AUTH_MODE 0x10 +#define ASSOC_MODE 0x20 + +#define AUTH_MODE_OPEN 0x00 +#define AUTH_MODE_SHARED 0x01 +#define AUTH_MODE_AUTO_SWITCH 0x03 +#define AUTH_MODE_DEAUTH 0x04 +#define AUTH_MODE_UPLAYER 0x05 // reserved for 802.11i use + +#define ASSOC_MODE_DISASSOC 0x04 +#define ASSOC_MODE_ASSOC 0x05 + +// BSS Type definitions +#define BSS_INDEP 0 // = Ndis802_11IBSS +#define BSS_INFRA 1 // = Ndis802_11Infrastructure +#define BSS_ANY 2 // = Ndis802_11AutoUnknown +#define BSS_MONITOR 3 // = Ndis802_11Monitor +// #define BSS_UNKNOWN 0xff + + +// WEP related definitions +// #define WEP_DISABLE 0 +// #define WEP_ENABLE 1 +// #define WEP_KEY_ABSENT 2 +// #define WEP_NOT_SUPPORTED 3 + +// value of FrameDesc.priority +// #define PRIO_CONTENTION 0 +// #define PRIO_CONTENTION_FREE 1 + +// value of auth_algorithm in Authentication frame body + +// Reason code definitions +#define REASON_RESERVED 0 +#define REASON_UNSPECIFY 1 +#define REASON_NO_LONGER_VALID 2 +#define REASON_DEAUTH_STA_LEAVING 3 +#define REASON_DISASSOC_INACTIVE 4 +#define REASON_DISASSPC_AP_UNABLE 5 +#define REASON_CLS2ERR 6 +#define REASON_CLS3ERR 7 +#define REASON_DISASSOC_STA_LEAVING 8 +#define REASON_STA_REQ_ASSOC_NOT_AUTH 9 +#define REASON_INVALID_IE 13 +#define REASON_MIC_FAILURE 14 +#define REASON_4_WAY_HANDSHAKE_TIMEOUT 15 +#define REASON_GROUP_KEY_UPDATE_TIMEOUT 16 + +// Status code definitions +#define MLME_SUCCESS 0 +#define MLME_UNSPECIFY_FAIL 1 +#define MLME_CANNOT_SUPPORT_CAP 10 +#define MLME_REASSOC_DENY_ASSOC_EXIST 11 +#define MLME_ASSOC_DENY_OUT_SCOPE 12 +#define MLME_ALG_NOT_SUPPORT 13 +#define MLME_SEQ_NR_OUT_OF_SEQUENCE 14 +#define MLME_REJ_CHALLENGE_FAILURE 15 +#define MLME_REJ_TIMEOUT 16 +#define MLME_ASSOC_REJ_UNABLE_HANDLE_STA 17 +#define MLME_ASSOC_REJ_DATA_RATE 18 + +#define MLME_ASSOC_REJ_NO_EXT_RATE 22 +#define MLME_ASSOC_REJ_NO_EXT_RATE_PBCC 23 +#define MLME_ASSOC_REJ_NO_CCK_OFDM 24 + +#define MLME_INVALID_FORMAT 0x51 +#define MLME_FAIL_NO_RESOURCE 0x52 +#define MLME_STATE_MACHINE_REJECT 0x53 +#define MLME_MAC_TABLE_FAIL 0x54 + +//IE code +#define IE_SSID 0 +#define IE_SUPP_RATES 1 +#define IE_FH_PARM 2 +#define IE_DS_PARM 3 +#define IE_CF_PARM 4 +#define IE_TIM 5 +#define IE_IBSS_PARM 6 +#define IE_COUNTRY 7 // 802.11d +#define IE_802_11D_REQUEST 10 // 802.11d +#define IE_CHALLENGE_TEXT 16 +#define IE_POWER_CONSTRAINT 32 // 802.11h d3.3 +#define IE_POWER_CAPABILITY 33 // 802.11h d3.3 +#define IE_TPC_REQUEST 34 // 802.11h d3.3 +#define IE_TPC_REPORT 35 // 802.11h d3.3 +#define IE_SUPP_CHANNELS 36 // 802.11h d3.3 +#define IE_CHANNEL_SWITCH_ANNOUNCEMENT 37 // 802.11h d3.3 +#define IE_MEASUREMENT_REQUEST 38 // 802.11h d3.3 +#define IE_MEASUREMENT_REPORT 39 // 802.11h d3.3 +#define IE_QUIET 40 // 802.11h d3.3 +#define IE_IBSS_DFS 41 // 802.11h d3.3 +#define IE_ERP 42 // 802.11g +#define IE_EXT_SUPP_RATES 50 // 802.11g +#define IE_WPA 221 // WPA +#define IE_RSN 48 // 802.11i d3.0 + +#define CNTL_FUNC_SIZE 1 + +// Message type for the MLME state machine +// Messages for Associate state machine +#define ASSOC_MACHINE_BASE 0 + +#define MT2_MLME_ASSOC_REQ 0 +#define MT2_MLME_REASSOC_REQ 1 +#define MT2_MLME_DISASSOC_REQ 2 +#define MT2_PEER_DISASSOC_REQ 3 +#define MT2_PEER_ASSOC_REQ 4 +#define MT2_PEER_ASSOC_RSP 5 +#define MT2_PEER_REASSOC_REQ 6 +#define MT2_PEER_REASSOC_RSP 7 +//#define MT2_CLS3ERR 8 +#define MT2_DISASSOC_TIMEOUT 8 +#define MT2_ASSOC_TIMEOUT 9 +#define MT2_REASSOC_TIMEOUT 10 + +#define MAX_ASSOC_MSG 11 + +// Messages for Authentication state machine +#define AUTH_MACHINE_BASE 11 + +#define MT2_MLME_AUTH_REQ 11 +//#define MT2_MLME_DEAUTH_REQ 12 +//#define MT2_CLS2ERR 13 +#define MT2_PEER_AUTH_EVEN 14 +#define MT2_AUTH_TIMEOUT 15 + +#define MAX_AUTH_MSG 5 + +// Messages for authentication response state machine +#define AUTH_RSP_MACHINE_BASE 16 + +#define MT2_AUTH_CHALLENGE_TIMEOUT 16 +#define MT2_PEER_AUTH_ODD 17 +#define MT2_PEER_DEAUTH 18 + +#define MAX_AUTH_RSP_MSG 3 + +// Messages for the sync state machine +#define SYNC_MACHINE_BASE 19 + +#define MT2_MLME_SCAN_REQ 19 +#define MT2_MLME_JOIN_REQ 20 +#define MT2_MLME_START_REQ 21 +#define MT2_PEER_BEACON 22 +#define MT2_PEER_PROBE_RSP 23 +#define MT2_PEER_ATIM 24 +#define MT2_SCAN_TIMEOUT 25 +#define MT2_BEACON_TIMEOUT 26 +#define MT2_ATIM_TIMEOUT 27 +#define MT2_PEER_PROBE_REQ 28 + +#define MAX_SYNC_MSG 10 + +// MIB access +#define MT2_GET_REQ 31 +#define MT2_SET_REQ 32 +#define MT2_RESET_REQ 33 + +// Confirm message +#define MT2_ASSOC_CONF 34 +#define MT2_AUTH_CONF 35 +#define MT2_DEAUTH_CONF 36 +#define MT2_DISASSOC_CONF 37 +#define MT2_REASSOC_CONF 38 +#define MT2_PWR_MGMT_CONF 39 +#define MT2_JOIN_CONF 40 +#define MT2_SCAN_CONF 41 +#define MT2_START_CONF 42 +#define MT2_GET_CONF 43 +#define MT2_SET_CONF 44 +#define MT2_RESET_CONF 45 + +// Indication message +#define MT2_DEAUTH_IND 46 +#define MT2_ASSOC_IND 47 +#define MT2_DISASSOC_IND 48 +#define MT2_REASSOC_IND 49 +#define MT2_AUTH_IND 50 + +#define MT2_SCAN_END_CONF 51 // For scan end +#define MT2_MLME_ROAMING_REQ 52 + +/* #define TXSTATUS_SUCCESS 0 */ +/* #define TXSTATUS_FAIL_RETRY_LIMIT 1 */ +/* #define TXSTATUS_EXCESSIVE_LENGTH 2 */ +/* #define TXSTATUS_NON_NULL_SOURCE_ROUTE 3 */ +/* #define TXSTATUS_UNSUPPORTED_PRIORITY 4 */ +/* #define TXSTATUS_UNSUPPORTED_SERVICE 5 */ +/* #define TXSTATUS_UNAVAILABLE_PRIORITY 6 // CF with no PC available; down-grade to contention */ +/* #define TXSTATUS_UNAVAILABLE_SERVICE 7 // strictly-ordered but STA isn't active */ +/* #define TXSTATUS_FAIL_LIFE_TIME 8 */ +/* #define TXSTATUS_FAIL_NOBSS 9 */ +/* #define TXSTATUS_FAIL_NULL_KEY 10 */ + +// value domain of MacHdr.tyte, which is b3..b2 of the 1st-byte of MAC header +#define BTYPE_MGMT 0 // 00 +#define BTYPE_CNTL 1 // 01 +#define BTYPE_DATA 2 // 10 + +// value domain of MacHdr.subtype, which is b7..4 of the 1st-byte of MAC header +// Management frame +#define SUBTYPE_ASSOC_REQ 0 +#define SUBTYPE_ASSOC_RSP 1 +#define SUBTYPE_REASSOC_REQ 2 +#define SUBTYPE_REASSOC_RSP 3 +#define SUBTYPE_PROBE_REQ 4 +#define SUBTYPE_PROBE_RSP 5 +#define SUBTYPE_BEACON 8 +#define SUBTYPE_ATIM 9 +#define SUBTYPE_DISASSOC 10 +#define SUBTYPE_AUTH 11 +#define SUBTYPE_DEAUTH 12 +#define SUBTYPE_ACTION 13 + +// Control Frame +#define SUBTYPE_BLOCK_ACK_REQ 8 +#define SUBTYPE_BLOCK_ACK 9 +#define SUBTYPE_PS_POLL 10 +#define SUBTYPE_RTS 11 // 1011 +#define SUBTYPE_CTS 12 // 1100 +#define SUBTYPE_ACK 13 // 1101 +#define SUBTYPE_CFEND 14 +#define SUBTYPE_CFEND_CFACK 15 + +// Data Frame +#define SUBTYPE_DATA 0 +#define SUBTYPE_DATA_CFACK 1 +#define SUBTYPE_DATA_CFPOLL 2 +#define SUBTYPE_DATA_CFACK_CFPOLL 3 +#define SUBTYPE_NULL_FUNC 4 +#define SUBTYPE_CFACK 5 // 0101 +#define SUBTYPE_CFPOLL 6 +#define SUBTYPE_CFACK_CFPOLL 7 +#define SUBTYPE_QDATA 8 +#define SUBTYPE_QDATA_CFACK 9 +#define SUBTYPE_QDATA_CFPOLL 10 +#define SUBTYPE_QDATA_CFACK_CFPOLL 11 +#define SUBTYPE_QOS_NULL 12 +#define SUBTYPE_QOS_CFACK 13 +#define SUBTYPE_QOS_CFPOLL 14 +#define SUBTYPE_QOS_CFACK_CFPOLL 15 + +#define ASSOC_STATE_MACHINE 1 +#define AUTH_STATE_MACHINE 2 +#define AUTH_RSP_STATE_MACHINE 3 +#define SYNC_STATE_MACHINE 4 +#define MLME_CNTL_STATE_MACHINE 5 +#define WPA_PSK_STATE_MACHINE 6 + +// +// rtmp_data.c use these definition +// +#define LENGTH_802_11 24 +#define LENGTH_802_11_AND_H 30 +#define LENGTH_802_11_CRC_H 34 +#define LENGTH_802_11_CRC 28 +#define LENGTH_802_3 14 +#define LENGTH_802_3_TYPE 2 +#define LENGTH_802_1_H 8 +#define LENGTH_EAPOL_H 4 +#define LENGTH_CRC 4 +#define MAX_SEQ_NUMBER 0x0fff + +#define SUCCESS_WITHOUT_RETRY 0 +#define SUCCESS_WITH_RETRY 1 +#define FAIL_RETRY_LIMIT 2 +#define FAIL_INVALID 3 +#define FAIL_OTHER 4 + +#define RATE_1 0 +#define RATE_2 1 +#define RATE_5_5 2 +#define RATE_11 3 +#define RATE_6 4 // OFDM +#define RATE_9 5 // OFDM +#define RATE_12 6 // OFDM +#define RATE_18 7 // OFDM +#define RATE_24 8 // OFDM +#define RATE_36 9 // OFDM +#define RATE_48 10 // OFDM +#define RATE_54 11 // OFDM +#define RATE_72 12 +#define RATE_100 13 +#define RATE_FIRST_OFDM_RATE RATE_6 +#define RATE_AUTO_SWITCH 255 // for PortCfg.FixedTxRate only + +#define IFS_BACKOFF 0 +#define IFS_SIFS 1 +#define IFS_NEW_BACKOFF 2 +#define IFS_NONE 3 + +#define LONG_RETRY 1 +#define SHORT_RETRY 0 + +// Country Region definition +#define REGION_MIN 0 +#define REGION_FCC 0 // 1-11 +#define REGION_IC 1 // 1-11 +#define REGION_ETSI 2 // 1-13 +#define REGION_SPAIN 3 // 10-11 +#define REGION_FRANCE 4 // 10-13 +#define REGION_MKK 5 // 14 +#define REGION_MKK1 6 // 1-14 +#define REGION_ISRAEL 7 // 3-9 +#define REGION_MAX REGION_ISRAEL + +#define CIPHER_NONE 0 +#define CIPHER_WEP64 1 +#define CIPHER_WEP128 2 +#define CIPHER_TKIP 3 +#define CIPHER_AES 4 + +// Stall execution time for ndisdpracquires[inlock in miniportReset function +#define WAIT_TIME_FOR_SPINLOCK 10 // usec + +// value domain for pAdapter->PortCfg.RfType +#define RFIC_2522 0 +#define RFIC_2523 1 +#define RFIC_2524 2 +#define RFIC_2525 3 +#define RFIC_2525E 4 +#define RFIC_5222 16 + +// value domain for pAdapter->PortCfg.LedMode and E2PROM +#define LED_MODE_DEFAULT 0 +#define LED_MODE_TXRX_ACTIVITY 1 +#define LED_MODE_SINGLE 2 // Single LED mode, driver lid the LED as soon as driver up & enable tx activity right away +#define LED_MODE_ASUS 3 // Two LED modes, bit 16 acts as LED_MODE_SINGLE, bit 17 acts as RADIO status. + +// RC4 init value, used fro WEP & TKIP +#define PPPINITFCS32 0xffffffff /* Initial FCS value */ + +// 802.1X controlled port definition +#define WPA_802_1X_PORT_SECURED 1 +#define WPA_802_1X_PORT_NOT_SECURED 2 + +#define PAIRWISE_KEY 1 +#define GROUP_KEY 2 + +#ifdef BIG_ENDIAN +#define DIR_READ 0 +#define DIR_WRITE 1 +#define TYPE_TXD 0 +#define TYPE_RXD 1 +#endif + +#ifdef RALINK_ATE +#define ATE_STASTOP 0 // Stop Station +#define ATE_STASTART 1 // Start Station +#define ATE_TXCONT 2 // Continuous Transmit +#define ATE_TXCARR 3 // Transmit Carrier +#define ATE_TXFRAME 4 // Transmit Frames +#define ATE_RXFRAME 5 // Receive Frames +#endif //#ifdef RALINK_ATE + +#endif // __RTMP_DEF_H__ --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/auth.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/auth.c @@ -1,407 +1,407 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: auth.c - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * MarkW 8th Dec 04 Baseline code - ***************************************************************************/ - -#include "rt_config.h" - -/* - ========================================================================== - Description: - authenticate state machine init, including state transition and timer init - Parameters: - Sm - pointer to the auth state machine - Note: - The state machine looks like this - - AUTH_REQ_IDLE AUTH_WAIT_SEQ2 AUTH_WAIT_SEQ4 - MT2_MLME_AUTH_REQ mlme_auth_req_action invalid_state_when_auth invalid_state_when_auth - MT2_MLME_DEAUTH_REQ mlme_deauth_req_action mlme_deauth_req_action mlme_deauth_req_action - MT2_CLS2ERR cls2err_action cls2err_action cls2err_action - MT2_PEER_AUTH_EVEN drop peer_auth_even_at_seq2_action peer_auth_even_at_seq4_action - MT2_AUTH_TIMEOUT Drop auth_timeout_action auth_timeout_action - ========================================================================== - */ - -void AuthStateMachineInit( - IN PRTMP_ADAPTER pAd, - IN STATE_MACHINE *Sm, - OUT STATE_MACHINE_FUNC Trans[]) -{ - StateMachineInit(Sm, (STATE_MACHINE_FUNC*)Trans, MAX_AUTH_STATE, MAX_AUTH_MSG, (STATE_MACHINE_FUNC)Drop, AUTH_REQ_IDLE, AUTH_MACHINE_BASE); - - // the first column - StateMachineSetAction(Sm, AUTH_REQ_IDLE, MT2_MLME_AUTH_REQ, (STATE_MACHINE_FUNC)MlmeAuthReqAction); -// StateMachineSetAction(Sm, AUTH_REQ_IDLE, MT2_MLME_DEAUTH_REQ, (STATE_MACHINE_FUNC)MlmeDeauthReqAction); -// StateMachineSetAction(Sm, AUTH_REQ_IDLE, MT2_CLS2ERR, (STATE_MACHINE_FUNC)Cls2errAction); - - // the second column - StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_MLME_AUTH_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAuth); -// StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_MLME_DEAUTH_REQ, (STATE_MACHINE_FUNC)MlmeDeauthReqAction); -// StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_CLS2ERR, (STATE_MACHINE_FUNC)Cls2errAction); - StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_PEER_AUTH_EVEN, (STATE_MACHINE_FUNC)PeerAuthRspAtSeq2Action); - StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_AUTH_TIMEOUT, (STATE_MACHINE_FUNC)AuthTimeoutAction); - - // the third column - StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_MLME_AUTH_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAuth); -// StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_MLME_DEAUTH_REQ, (STATE_MACHINE_FUNC)MlmeDeauthReqAction); -// StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_CLS2ERR, (STATE_MACHINE_FUNC)Cls2errAction); - StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_PEER_AUTH_EVEN, (STATE_MACHINE_FUNC)PeerAuthRspAtSeq4Action); - StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_AUTH_TIMEOUT, (STATE_MACHINE_FUNC)AuthTimeoutAction); - - RTMPInitTimer(pAd, &pAd->Mlme.AuthAux.AuthTimer, AuthTimeout); -} - -/* - ========================================================================== - Description: - function to be executed at timer thread when auth timer expires - ========================================================================== - */ -VOID AuthTimeout( - IN unsigned long data) -{ - RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; - - DBGPRINT(RT_DEBUG_TRACE,"AUTH - AuthTimeout\n"); - MlmeEnqueue(&pAd->Mlme.Queue, AUTH_STATE_MACHINE, MT2_AUTH_TIMEOUT, 0, NULL); - MlmeHandler(pAd); -} - - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID MlmeAuthReqAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MACADDR Addr; - USHORT Alg, Seq, Status; - ULONG Timeout; - MACHDR AuthHdr; - NDIS_STATUS NStatus; - UCHAR *OutBuffer = NULL; - ULONG FrameLen = 0; - - // Block all authentication request durning WPA block period - if (pAd->PortCfg.bBlockAssoc == TRUE) - { - DBGPRINT(RT_DEBUG_TRACE, "AUTH - Block Auth request durning WPA block period!\n"); - pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; - MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_STATE_MACHINE_REJECT); - } - else if(MlmeAuthReqSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr, &Timeout, &Alg)) - { - // reset timer - RTMPCancelTimer(&pAd->Mlme.AuthAux.AuthTimer); - pAd->Mlme.AuthAux.Addr = Addr; - pAd->Mlme.AuthAux.Alg = Alg; - pAd->PortCfg.Mauth = FALSE; - Seq = 1; - Status = MLME_SUCCESS; - - NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if(NStatus != NDIS_STATUS_SUCCESS) - { - DBGPRINT(RT_DEBUG_TRACE, "AUTH - MlmeAuthReqAction() allocate memory failed\n"); - pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; - MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_FAIL_NO_RESOURCE); - return; - } - - DBGPRINT(RT_DEBUG_TRACE, "AUTH - Send AUTH request seq#1 (Alg=%d)...\n", Alg); - MgtMacHeaderInit(pAd, &AuthHdr, SUBTYPE_AUTH, 0, &Addr, &pAd->PortCfg.Bssid); - MakeOutgoingFrame(OutBuffer, &FrameLen, - MAC_HDR_LEN, &AuthHdr, - 2, &Alg, - 2, &Seq, - 2, &Status, - END_OF_ARGS); - MiniportMMRequest(pAd, OutBuffer, FrameLen); - - RTMPSetTimer(pAd, &pAd->Mlme.AuthAux.AuthTimer, Timeout); - pAd->Mlme.AuthMachine.CurrState = AUTH_WAIT_SEQ2; - } - else - { - printk(KERN_ERR DRV_NAME "AUTH - MlmeAuthReqAction() sanity check failed. BUG!!!!!\n"); - pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; - MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_INVALID_FORMAT); - } -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID PeerAuthRspAtSeq2Action( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MACADDR Addr2; - USHORT Seq, Status, RemoteStatus, Alg; - UCHAR ChlgText[CIPHER_TEXT_LEN]; - UCHAR CyperChlgText[CIPHER_TEXT_LEN + 8 + 8]; - UCHAR Element[2]; - MACHDR AuthHdr; - UCHAR *OutBuffer = NULL; - NDIS_STATUS NStatus; - ULONG FrameLen = 0; - - if (PeerAuthSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, &Alg, &Seq, &Status, ChlgText)) - { - if (MAC_ADDR_EQUAL(&pAd->Mlme.AuthAux.Addr, &Addr2) && Seq == 2) - { - DBGPRINT(RT_DEBUG_TRACE, "AUTH - Receive AUTH_RSP seq#2 to me (Alg=%d, Status=%d)\n", Alg, Status); - RTMPCancelTimer(&pAd->Mlme.AuthAux.AuthTimer); - - if (Status == MLME_SUCCESS) - { - if (pAd->Mlme.AuthAux.Alg == Ndis802_11AuthModeOpen) - { - pAd->PortCfg.Mauth = TRUE; - pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; - MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_SUCCESS); - } - else - { - // 2. shared key, need to be challenged - Seq++; - RemoteStatus = MLME_SUCCESS; - NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if(NStatus != NDIS_STATUS_SUCCESS) - { - DBGPRINT(RT_DEBUG_TRACE, "AUTH - PeerAuthRspAtSeq2Action() allocate memory fail\n"); - pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; - MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_FAIL_NO_RESOURCE); - return; - } - - DBGPRINT(RT_DEBUG_TRACE, "AUTH - Send AUTH request seq#3...\n"); - MgtMacHeaderInit(pAd, &AuthHdr, SUBTYPE_AUTH, 0, &Addr2, &pAd->PortCfg.Bssid); - AuthHdr.Wep = 1; - // Encrypt challenge text & auth information - RTMPInitWepEngine( - pAd, - pAd->PortCfg.SharedKey[pAd->PortCfg.DefaultKeyId].Key, - pAd->PortCfg.DefaultKeyId, - pAd->PortCfg.SharedKey[pAd->PortCfg.DefaultKeyId].KeyLen, - CyperChlgText); -#ifdef BIG_ENDIAN - Alg = SWAP16(*(USHORT *)&Alg); - Seq = SWAP16(*(USHORT *)&Seq); - RemoteStatus= SWAP16(*(USHORT *)&RemoteStatus); - pAd->NeedSwapToLittleEndian = FALSE; -#endif - RTMPEncryptData(pAd, (PUCHAR) &Alg, CyperChlgText + 4, 2); - RTMPEncryptData(pAd, (PUCHAR) &Seq, CyperChlgText + 6, 2); - RTMPEncryptData(pAd, (PUCHAR) &RemoteStatus, CyperChlgText + 8, 2); - - Element[0] = 16; - Element[1] = 128; - RTMPEncryptData(pAd, Element, CyperChlgText + 10, 2); - RTMPEncryptData(pAd, ChlgText, CyperChlgText + 12, 128); - RTMPSetICV(pAd, CyperChlgText + 140); - MakeOutgoingFrame(OutBuffer, &FrameLen, - MAC_HDR_LEN, &AuthHdr, - CIPHER_TEXT_LEN + 16, CyperChlgText, - END_OF_ARGS); - MiniportMMRequest(pAd, OutBuffer, FrameLen); -#ifdef BIG_ENDIAN - pAd->NeedSwapToLittleEndian = TRUE; -#endif - RTMPSetTimer(pAd, &pAd->Mlme.AuthAux.AuthTimer, AUTH_TIMEOUT); - pAd->Mlme.AuthMachine.CurrState = AUTH_WAIT_SEQ4; - } - } - else - { - pAd->PortCfg.AuthFailReason = Status; - COPY_MAC_ADDR(&pAd->PortCfg.AuthFailSta, &Addr2); - pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; - MlmeCntlConfirm(pAd, MT2_AUTH_CONF, Status); - } - } - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "AUTH - PeerAuthSanity() sanity check fail\n"); - } -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID PeerAuthRspAtSeq4Action( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MACADDR Addr2; - USHORT Alg, Seq, Status; - CHAR ChlgText[CIPHER_TEXT_LEN]; - - if(PeerAuthSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, &Alg, &Seq, &Status, ChlgText)) - { - if(MAC_ADDR_EQUAL(&(pAd->Mlme.AuthAux.Addr), &Addr2) && Seq == 4) - { - DBGPRINT(RT_DEBUG_TRACE, "AUTH - Receive AUTH_RSP seq#4 to me\n"); - RTMPCancelTimer(&pAd->Mlme.AuthAux.AuthTimer); - - if(Status == MLME_SUCCESS) - { - pAd->PortCfg.Mauth = TRUE; - } - else - { - pAd->PortCfg.AuthFailReason = Status; - pAd->PortCfg.AuthFailSta = Addr2; - } - - pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; - MlmeCntlConfirm(pAd, MT2_AUTH_CONF, Status); - } - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "AUTH - PeerAuthRspAtSeq4Action() sanity check fail\n"); - } -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID MlmeDeauthReqAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MLME_DEAUTH_REQ_STRUCT *Info; - MACHDR Hdr; - UCHAR *OutBuffer = NULL; - NDIS_STATUS NStatus; - ULONG FrameLen = 0; - - Info = (MLME_DEAUTH_REQ_STRUCT *)Elem->Msg; - - NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if (NStatus != NDIS_STATUS_SUCCESS) - { - DBGPRINT(RT_DEBUG_TRACE, "AUTH - MlmeDeauthReqAction() allocate memory fail\n"); - pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; - MlmeCntlConfirm(pAd, MT2_DEAUTH_CONF, MLME_FAIL_NO_RESOURCE); - return; - } - - DBGPRINT(RT_DEBUG_TRACE, "AUTH - Send DE-AUTH request...\n"); - MgtMacHeaderInit(pAd, &Hdr, SUBTYPE_DEAUTH, 0, &Info->Addr, &pAd->PortCfg.Bssid); - MakeOutgoingFrame(OutBuffer, &FrameLen, - sizeof(MACHDR), &Hdr, - 2, &Info->Reason, - END_OF_ARGS); - MiniportMMRequest(pAd, OutBuffer, FrameLen); - - pAd->PortCfg.DeauthReason = Info->Reason; - COPY_MAC_ADDR(&pAd->PortCfg.DeauthSta, &Info->Addr); - pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; - MlmeCntlConfirm(pAd, MT2_DEAUTH_CONF, MLME_SUCCESS); -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID AuthTimeoutAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - DBGPRINT(RT_DEBUG_TRACE, "AUTH - AuthTimeoutAction\n"); - pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; - MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_REJ_TIMEOUT); -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID InvalidStateWhenAuth( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - DBGPRINT(RT_DEBUG_TRACE, "AUTH - InvalidStateWhenAuth (state=%d), reset AUTH state machine\n", pAd->Mlme.AuthMachine.CurrState); - pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; - MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_STATE_MACHINE_REJECT); -} - -/* - ========================================================================== - Description: - Some STA/AP - Note: - This action should never trigger AUTH state transition, therefore we - separate it from AUTH state machine, and make it as a standalone service - ========================================================================== - */ -VOID Cls2errAction( - IN PRTMP_ADAPTER pAd, - IN PMACADDR pAddr) -{ - MACHDR Hdr; - UCHAR *OutBuffer = NULL; - NDIS_STATUS NStatus; - ULONG FrameLen = 0; - USHORT Reason = REASON_CLS2ERR; - - NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if (NStatus != NDIS_STATUS_SUCCESS) - return; - - DBGPRINT(RT_DEBUG_TRACE, "AUTH - Class 2 error, Send DEAUTH frame...\n"); - MgtMacHeaderInit(pAd, &Hdr, SUBTYPE_DEAUTH, 0, pAddr, &pAd->PortCfg.Bssid); - MakeOutgoingFrame(OutBuffer, &FrameLen, - sizeof(MACHDR), &Hdr, - 2, &Reason, - END_OF_ARGS); - MiniportMMRequest(pAd, OutBuffer, FrameLen); - - pAd->PortCfg.DeauthReason = Reason; - COPY_MAC_ADDR(&pAd->PortCfg.DeauthSta, pAddr); -} - - +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: auth.c + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * MarkW 8th Dec 04 Baseline code + ***************************************************************************/ + +#include "rt_config.h" + +/* + ========================================================================== + Description: + authenticate state machine init, including state transition and timer init + Parameters: + Sm - pointer to the auth state machine + Note: + The state machine looks like this + + AUTH_REQ_IDLE AUTH_WAIT_SEQ2 AUTH_WAIT_SEQ4 + MT2_MLME_AUTH_REQ mlme_auth_req_action invalid_state_when_auth invalid_state_when_auth + MT2_MLME_DEAUTH_REQ mlme_deauth_req_action mlme_deauth_req_action mlme_deauth_req_action + MT2_CLS2ERR cls2err_action cls2err_action cls2err_action + MT2_PEER_AUTH_EVEN drop peer_auth_even_at_seq2_action peer_auth_even_at_seq4_action + MT2_AUTH_TIMEOUT Drop auth_timeout_action auth_timeout_action + ========================================================================== + */ + +void AuthStateMachineInit( + IN PRTMP_ADAPTER pAd, + IN STATE_MACHINE *Sm, + OUT STATE_MACHINE_FUNC Trans[]) +{ + StateMachineInit(Sm, (STATE_MACHINE_FUNC*)Trans, MAX_AUTH_STATE, MAX_AUTH_MSG, (STATE_MACHINE_FUNC)Drop, AUTH_REQ_IDLE, AUTH_MACHINE_BASE); + + // the first column + StateMachineSetAction(Sm, AUTH_REQ_IDLE, MT2_MLME_AUTH_REQ, (STATE_MACHINE_FUNC)MlmeAuthReqAction); +// StateMachineSetAction(Sm, AUTH_REQ_IDLE, MT2_MLME_DEAUTH_REQ, (STATE_MACHINE_FUNC)MlmeDeauthReqAction); +// StateMachineSetAction(Sm, AUTH_REQ_IDLE, MT2_CLS2ERR, (STATE_MACHINE_FUNC)Cls2errAction); + + // the second column + StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_MLME_AUTH_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAuth); +// StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_MLME_DEAUTH_REQ, (STATE_MACHINE_FUNC)MlmeDeauthReqAction); +// StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_CLS2ERR, (STATE_MACHINE_FUNC)Cls2errAction); + StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_PEER_AUTH_EVEN, (STATE_MACHINE_FUNC)PeerAuthRspAtSeq2Action); + StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_AUTH_TIMEOUT, (STATE_MACHINE_FUNC)AuthTimeoutAction); + + // the third column + StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_MLME_AUTH_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAuth); +// StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_MLME_DEAUTH_REQ, (STATE_MACHINE_FUNC)MlmeDeauthReqAction); +// StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_CLS2ERR, (STATE_MACHINE_FUNC)Cls2errAction); + StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_PEER_AUTH_EVEN, (STATE_MACHINE_FUNC)PeerAuthRspAtSeq4Action); + StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_AUTH_TIMEOUT, (STATE_MACHINE_FUNC)AuthTimeoutAction); + + RTMPInitTimer(pAd, &pAd->Mlme.AuthAux.AuthTimer, AuthTimeout); +} + +/* + ========================================================================== + Description: + function to be executed at timer thread when auth timer expires + ========================================================================== + */ +VOID AuthTimeout( + IN unsigned long data) +{ + RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; + + DBGPRINT(RT_DEBUG_TRACE,"AUTH - AuthTimeout\n"); + MlmeEnqueue(&pAd->Mlme.Queue, AUTH_STATE_MACHINE, MT2_AUTH_TIMEOUT, 0, NULL); + MlmeHandler(pAd); +} + + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID MlmeAuthReqAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MACADDR Addr; + USHORT Alg, Seq, Status; + ULONG Timeout; + MACHDR AuthHdr; + NDIS_STATUS NStatus; + UCHAR *OutBuffer = NULL; + ULONG FrameLen = 0; + + // Block all authentication request durning WPA block period + if (pAd->PortCfg.bBlockAssoc == TRUE) + { + DBGPRINT(RT_DEBUG_TRACE, "AUTH - Block Auth request durning WPA block period!\n"); + pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; + MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_STATE_MACHINE_REJECT); + } + else if(MlmeAuthReqSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr, &Timeout, &Alg)) + { + // reset timer + RTMPCancelTimer(&pAd->Mlme.AuthAux.AuthTimer); + pAd->Mlme.AuthAux.Addr = Addr; + pAd->Mlme.AuthAux.Alg = Alg; + pAd->PortCfg.Mauth = FALSE; + Seq = 1; + Status = MLME_SUCCESS; + + NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if(NStatus != NDIS_STATUS_SUCCESS) + { + DBGPRINT(RT_DEBUG_TRACE, "AUTH - MlmeAuthReqAction() allocate memory failed\n"); + pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; + MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_FAIL_NO_RESOURCE); + return; + } + + DBGPRINT(RT_DEBUG_TRACE, "AUTH - Send AUTH request seq#1 (Alg=%d)...\n", Alg); + MgtMacHeaderInit(pAd, &AuthHdr, SUBTYPE_AUTH, 0, &Addr, &pAd->PortCfg.Bssid); + MakeOutgoingFrame(OutBuffer, &FrameLen, + MAC_HDR_LEN, &AuthHdr, + 2, &Alg, + 2, &Seq, + 2, &Status, + END_OF_ARGS); + MiniportMMRequest(pAd, OutBuffer, FrameLen); + + RTMPSetTimer(pAd, &pAd->Mlme.AuthAux.AuthTimer, Timeout); + pAd->Mlme.AuthMachine.CurrState = AUTH_WAIT_SEQ2; + } + else + { + printk(KERN_ERR DRV_NAME "AUTH - MlmeAuthReqAction() sanity check failed. BUG!!!!!\n"); + pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; + MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_INVALID_FORMAT); + } +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID PeerAuthRspAtSeq2Action( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MACADDR Addr2; + USHORT Seq, Status, RemoteStatus, Alg; + UCHAR ChlgText[CIPHER_TEXT_LEN]; + UCHAR CyperChlgText[CIPHER_TEXT_LEN + 8 + 8]; + UCHAR Element[2]; + MACHDR AuthHdr; + UCHAR *OutBuffer = NULL; + NDIS_STATUS NStatus; + ULONG FrameLen = 0; + + if (PeerAuthSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, &Alg, &Seq, &Status, ChlgText)) + { + if (MAC_ADDR_EQUAL(&pAd->Mlme.AuthAux.Addr, &Addr2) && Seq == 2) + { + DBGPRINT(RT_DEBUG_TRACE, "AUTH - Receive AUTH_RSP seq#2 to me (Alg=%d, Status=%d)\n", Alg, Status); + RTMPCancelTimer(&pAd->Mlme.AuthAux.AuthTimer); + + if (Status == MLME_SUCCESS) + { + if (pAd->Mlme.AuthAux.Alg == Ndis802_11AuthModeOpen) + { + pAd->PortCfg.Mauth = TRUE; + pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; + MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_SUCCESS); + } + else + { + // 2. shared key, need to be challenged + Seq++; + RemoteStatus = MLME_SUCCESS; + NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if(NStatus != NDIS_STATUS_SUCCESS) + { + DBGPRINT(RT_DEBUG_TRACE, "AUTH - PeerAuthRspAtSeq2Action() allocate memory fail\n"); + pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; + MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_FAIL_NO_RESOURCE); + return; + } + + DBGPRINT(RT_DEBUG_TRACE, "AUTH - Send AUTH request seq#3...\n"); + MgtMacHeaderInit(pAd, &AuthHdr, SUBTYPE_AUTH, 0, &Addr2, &pAd->PortCfg.Bssid); + AuthHdr.Wep = 1; + // Encrypt challenge text & auth information + RTMPInitWepEngine( + pAd, + pAd->PortCfg.SharedKey[pAd->PortCfg.DefaultKeyId].Key, + pAd->PortCfg.DefaultKeyId, + pAd->PortCfg.SharedKey[pAd->PortCfg.DefaultKeyId].KeyLen, + CyperChlgText); +#ifdef BIG_ENDIAN + Alg = SWAP16(*(USHORT *)&Alg); + Seq = SWAP16(*(USHORT *)&Seq); + RemoteStatus= SWAP16(*(USHORT *)&RemoteStatus); + pAd->NeedSwapToLittleEndian = FALSE; +#endif + RTMPEncryptData(pAd, (PUCHAR) &Alg, CyperChlgText + 4, 2); + RTMPEncryptData(pAd, (PUCHAR) &Seq, CyperChlgText + 6, 2); + RTMPEncryptData(pAd, (PUCHAR) &RemoteStatus, CyperChlgText + 8, 2); + + Element[0] = 16; + Element[1] = 128; + RTMPEncryptData(pAd, Element, CyperChlgText + 10, 2); + RTMPEncryptData(pAd, ChlgText, CyperChlgText + 12, 128); + RTMPSetICV(pAd, CyperChlgText + 140); + MakeOutgoingFrame(OutBuffer, &FrameLen, + MAC_HDR_LEN, &AuthHdr, + CIPHER_TEXT_LEN + 16, CyperChlgText, + END_OF_ARGS); + MiniportMMRequest(pAd, OutBuffer, FrameLen); +#ifdef BIG_ENDIAN + pAd->NeedSwapToLittleEndian = TRUE; +#endif + RTMPSetTimer(pAd, &pAd->Mlme.AuthAux.AuthTimer, AUTH_TIMEOUT); + pAd->Mlme.AuthMachine.CurrState = AUTH_WAIT_SEQ4; + } + } + else + { + pAd->PortCfg.AuthFailReason = Status; + COPY_MAC_ADDR(&pAd->PortCfg.AuthFailSta, &Addr2); + pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; + MlmeCntlConfirm(pAd, MT2_AUTH_CONF, Status); + } + } + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "AUTH - PeerAuthSanity() sanity check fail\n"); + } +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID PeerAuthRspAtSeq4Action( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MACADDR Addr2; + USHORT Alg, Seq, Status; + CHAR ChlgText[CIPHER_TEXT_LEN]; + + if(PeerAuthSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, &Alg, &Seq, &Status, ChlgText)) + { + if(MAC_ADDR_EQUAL(&(pAd->Mlme.AuthAux.Addr), &Addr2) && Seq == 4) + { + DBGPRINT(RT_DEBUG_TRACE, "AUTH - Receive AUTH_RSP seq#4 to me\n"); + RTMPCancelTimer(&pAd->Mlme.AuthAux.AuthTimer); + + if(Status == MLME_SUCCESS) + { + pAd->PortCfg.Mauth = TRUE; + } + else + { + pAd->PortCfg.AuthFailReason = Status; + pAd->PortCfg.AuthFailSta = Addr2; + } + + pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; + MlmeCntlConfirm(pAd, MT2_AUTH_CONF, Status); + } + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "AUTH - PeerAuthRspAtSeq4Action() sanity check fail\n"); + } +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID MlmeDeauthReqAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MLME_DEAUTH_REQ_STRUCT *Info; + MACHDR Hdr; + UCHAR *OutBuffer = NULL; + NDIS_STATUS NStatus; + ULONG FrameLen = 0; + + Info = (MLME_DEAUTH_REQ_STRUCT *)Elem->Msg; + + NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if (NStatus != NDIS_STATUS_SUCCESS) + { + DBGPRINT(RT_DEBUG_TRACE, "AUTH - MlmeDeauthReqAction() allocate memory fail\n"); + pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; + MlmeCntlConfirm(pAd, MT2_DEAUTH_CONF, MLME_FAIL_NO_RESOURCE); + return; + } + + DBGPRINT(RT_DEBUG_TRACE, "AUTH - Send DE-AUTH request...\n"); + MgtMacHeaderInit(pAd, &Hdr, SUBTYPE_DEAUTH, 0, &Info->Addr, &pAd->PortCfg.Bssid); + MakeOutgoingFrame(OutBuffer, &FrameLen, + sizeof(MACHDR), &Hdr, + 2, &Info->Reason, + END_OF_ARGS); + MiniportMMRequest(pAd, OutBuffer, FrameLen); + + pAd->PortCfg.DeauthReason = Info->Reason; + COPY_MAC_ADDR(&pAd->PortCfg.DeauthSta, &Info->Addr); + pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; + MlmeCntlConfirm(pAd, MT2_DEAUTH_CONF, MLME_SUCCESS); +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID AuthTimeoutAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + DBGPRINT(RT_DEBUG_TRACE, "AUTH - AuthTimeoutAction\n"); + pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; + MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_REJ_TIMEOUT); +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID InvalidStateWhenAuth( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + DBGPRINT(RT_DEBUG_TRACE, "AUTH - InvalidStateWhenAuth (state=%d), reset AUTH state machine\n", pAd->Mlme.AuthMachine.CurrState); + pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; + MlmeCntlConfirm(pAd, MT2_AUTH_CONF, MLME_STATE_MACHINE_REJECT); +} + +/* + ========================================================================== + Description: + Some STA/AP + Note: + This action should never trigger AUTH state transition, therefore we + separate it from AUTH state machine, and make it as a standalone service + ========================================================================== + */ +VOID Cls2errAction( + IN PRTMP_ADAPTER pAd, + IN PMACADDR pAddr) +{ + MACHDR Hdr; + UCHAR *OutBuffer = NULL; + NDIS_STATUS NStatus; + ULONG FrameLen = 0; + USHORT Reason = REASON_CLS2ERR; + + NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if (NStatus != NDIS_STATUS_SUCCESS) + return; + + DBGPRINT(RT_DEBUG_TRACE, "AUTH - Class 2 error, Send DEAUTH frame...\n"); + MgtMacHeaderInit(pAd, &Hdr, SUBTYPE_DEAUTH, 0, pAddr, &pAd->PortCfg.Bssid); + MakeOutgoingFrame(OutBuffer, &FrameLen, + sizeof(MACHDR), &Hdr, + 2, &Reason, + END_OF_ARGS); + MiniportMMRequest(pAd, OutBuffer, FrameLen); + + pAd->PortCfg.DeauthReason = Reason; + COPY_MAC_ADDR(&pAd->PortCfg.DeauthSta, pAddr); +} + + --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/mlme.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/mlme.c @@ -1,4081 +1,4091 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: mlme.c - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * MarkW 8th Dec 04 Baseline code - * MarkW 8th Dec 04 kmalloc ATOMIC fixes - * RobinC 10th Dec 04 RFMON Support - * MarkW 10th Dec 04 Rolled in Ralink 1.4.5.0 - * Ivo (rt2400) 15th Dec 04 Uninitialised timer - * MarkW 17th Dec 04 Monitor mode through iwconfig - * BrunoH 3rd Feb 04 Fix for 802.11b adhoc association - * JohnC 19th Mar 04 Fixes for quality reporting - * MarkW 13th Jun 05 Fix to allow adhoc network creation - ***************************************************************************/ - -#include "rt_config.h" -#include - -// e.g. RssiSafeLevelForTxRate[RATE_36]" means if the current RSSI is greater than -// this value, then it's quaranteed capable of operating in 36 mbps TX rate in -// clean environment. -// TxRate: 1 2 5.5 11 6 9 12 18 24 36 48 54 72 100 -CHAR RssiSafeLevelForTxRate[] ={ -92, -91, -90, -87, -88, -86, -85, -83, -81, -78, -72, -71, -40, -40 }; - - // 1 2 5.5 11 -UCHAR Phy11BNextRateDownward[] = {RATE_1, RATE_1, RATE_2, RATE_5_5}; -UCHAR Phy11BNextRateUpward[] = {RATE_2, RATE_5_5, RATE_11, RATE_11}; - - // 1 2 5.5 11 6 9 12 18 24 36 48 54 -UCHAR Phy11BGNextRateDownward[]= {RATE_1, RATE_1, RATE_2, RATE_5_5,RATE_11, RATE_6, RATE_11, RATE_12, RATE_18, RATE_24, RATE_36, RATE_48}; -UCHAR Phy11BGNextRateUpward[] = {RATE_2, RATE_5_5, RATE_11, RATE_12, RATE_9, RATE_12, RATE_18, RATE_24, RATE_36, RATE_48, RATE_54, RATE_54}; - - // 1 2 5.5 11 6 9 12 18 24 36 48 54 -UCHAR Phy11ANextRateDownward[] = {RATE_6, RATE_6, RATE_6, RATE_6, RATE_6, RATE_6, RATE_9, RATE_12, RATE_18, RATE_24, RATE_36, RATE_48}; -UCHAR Phy11ANextRateUpward[] = {RATE_9, RATE_9, RATE_9, RATE_9, RATE_9, RATE_12, RATE_18, RATE_24, RATE_36, RATE_48, RATE_54, RATE_54}; - -// 2560D and after has implemented ASIC-based OFDM rate switching, but not -// 2560C and before. thus software use different PER for rate switching -// RATE_1, 2, 5.5, 11, 6, 9, 12, 18, 24, 36, 48, 54 -USHORT NewRateUpPER[] = { 40, 40, 35, 20, 20, 20, 20, 16, 10, 16, 10, 6 }; // in percentage -USHORT NewRateDownPER[] = { 50, 50, 45, 45, 35, 35, 35, 35, 25, 25, 25, 13 }; // in percentage - -USHORT OldRateUpPER[] = { 40, 40, 40, 40, 30, 30, 30, 30, 20, 20, 10, 10 }; // in percentage -USHORT OldRateDownPER[] = { 45, 45, 45, 45, 35, 35, 35, 35, 25, 25, 25, 12 }; // in percentage - -UCHAR RateIdToMbps[] = { 1, 2, 5, 11, 6, 9, 12, 18, 24, 36, 48, 54, 72, 100}; -USHORT RateIdTo500Kbps[] = { 2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108, 144, 200}; - -RTMP_RF_REGS RF2522RegTable[] = { -// ch R1 R2 R3(TX0~4=0) R4 - {1, 0x94002050, 0x940c1fda, 0x94000101, 0}, - {2, 0x94002050, 0x940c1fee, 0x94000101, 0}, - {3, 0x94002050, 0x940c2002, 0x94000101, 0}, - {4, 0x94002050, 0x940c2016, 0x94000101, 0}, - {5, 0x94002050, 0x940c202a, 0x94000101, 0}, - {6, 0x94002050, 0x940c203e, 0x94000101, 0}, - {7, 0x94002050, 0x940c2052, 0x94000101, 0}, - {8, 0x94002050, 0x940c2066, 0x94000101, 0}, - {9, 0x94002050, 0x940c207a, 0x94000101, 0}, - {10, 0x94002050, 0x940c208e, 0x94000101, 0}, - {11, 0x94002050, 0x940c20a2, 0x94000101, 0}, - {12, 0x94002050, 0x940c20b6, 0x94000101, 0}, - {13, 0x94002050, 0x940c20ca, 0x94000101, 0}, - {14, 0x94002050, 0x940c20fa, 0x94000101, 0} -}; -#define NUM_OF_2522_CHNL (sizeof(RF2522RegTable) / sizeof(RTMP_RF_REGS)) - -RTMP_RF_REGS RF2523RegTable[] = { -// ch R1 R2 R3(TX0~4=0) R4 - {1, 0x94022010, 0x94000c9e, 0x940e0111, 0x94000a1b}, - {2, 0x94022010, 0x94000ca2, 0x940e0111, 0x94000a1b}, - {3, 0x94022010, 0x94000ca6, 0x940e0111, 0x94000a1b}, - {4, 0x94022010, 0x94000caa, 0x940e0111, 0x94000a1b}, - {5, 0x94022010, 0x94000cae, 0x940e0111, 0x94000a1b}, - {6, 0x94022010, 0x94000cb2, 0x940e0111, 0x94000a1b}, - {7, 0x94022010, 0x94000cb6, 0x940e0111, 0x94000a1b}, - {8, 0x94022010, 0x94000cba, 0x940e0111, 0x94000a1b}, - {9, 0x94022010, 0x94000cbe, 0x940e0111, 0x94000a1b}, - {10, 0x94022010, 0x94000d02, 0x940e0111, 0x94000a1b}, - {11, 0x94022010, 0x94000d06, 0x940e0111, 0x94000a1b}, - {12, 0x94022010, 0x94000d0a, 0x940e0111, 0x94000a1b}, - {13, 0x94022010, 0x94000d0e, 0x940e0111, 0x94000a1b}, - {14, 0x94022010, 0x94000d1a, 0x940e0111, 0x94000a03} -#if 0 - {1, 0x94022050, 0x940c1fda, 0x940e8101, 0}, - {2, 0x94022050, 0x940c1fee, 0x940e8101, 0}, - {3, 0x94022050, 0x940c2002, 0x940e8101, 0}, - {4, 0x94022050, 0x940c2016, 0x940e8101, 0}, - {5, 0x94022050, 0x940c202a, 0x940e8101, 0}, - {6, 0x94022050, 0x940c203e, 0x940e8101, 0}, - {7, 0x94022050, 0x940c2052, 0x940e8101, 0}, - {8, 0x94022050, 0x940c2066, 0x940e8101, 0}, - {9, 0x94022050, 0x940c207a, 0x940e8101, 0}, - {10, 0x94022050, 0x940c208e, 0x940e8101, 0}, - {11, 0x94022050, 0x940c20a2, 0x940e8101, 0}, - {12, 0x94022050, 0x940c20b6, 0x940e8101, 0}, - {13, 0x94022050, 0x940c20ca, 0x940e8101, 0}, - {14, 0x94022050, 0x940c20fa, 0x940e8101, 0} -#endif -}; -#define NUM_OF_2523_CHNL (sizeof(RF2523RegTable) / sizeof(RTMP_RF_REGS)) - -RTMP_RF_REGS RF2524RegTable[] = { -// ch R1 R2 R3(TX0~4=0) R4 - {1, 0x94032020, 0x94000c9e, 0x94000101, 0x94000a1b}, - {2, 0x94032020, 0x94000ca2, 0x94000101, 0x94000a1b}, - {3, 0x94032020, 0x94000ca6, 0x94000101, 0x94000a1b}, - {4, 0x94032020, 0x94000caa, 0x94000101, 0x94000a1b}, - {5, 0x94032020, 0x94000cae, 0x94000101, 0x94000a1b}, - {6, 0x94032020, 0x94000cb2, 0x94000101, 0x94000a1b}, - {7, 0x94032020, 0x94000cb6, 0x94000101, 0x94000a1b}, - {8, 0x94032020, 0x94000cba, 0x94000101, 0x94000a1b}, - {9, 0x94032020, 0x94000cbe, 0x94000101, 0x94000a1b}, - {10, 0x94032020, 0x94000d02, 0x94000101, 0x94000a1b}, - {11, 0x94032020, 0x94000d06, 0x94000101, 0x94000a1b}, - {12, 0x94032020, 0x94000d0a, 0x94000101, 0x94000a1b}, - {13, 0x94032020, 0x94000d0e, 0x94000101, 0x94000a1b}, - {14, 0x94032020, 0x94000d1a, 0x94000101, 0x94000a03} -}; -#define NUM_OF_2524_CHNL (sizeof(RF2524RegTable) / sizeof(RTMP_RF_REGS)) - -RTMP_RF_REGS RF2525RegTable[] = { -// ch R1 R2 R3(TX0~4=0) R4 - {1, 0x94022020, 0x94080c9e, 0x94060111, 0x94000a1b}, // {1, 0x94022010, 0x9408062e, 0x94060111, 0x94000a23}, - {2, 0x94022020, 0x94080ca2, 0x94060111, 0x94000a1b}, - {3, 0x94022020, 0x94080ca6, 0x94060111, 0x94000a1b}, - {4, 0x94022020, 0x94080caa, 0x94060111, 0x94000a1b}, - {5, 0x94022020, 0x94080cae, 0x94060111, 0x94000a1b}, - {6, 0x94022020, 0x94080cb2, 0x94060111, 0x94000a1b}, - {7, 0x94022020, 0x94080cb6, 0x94060111, 0x94000a1b}, - {8, 0x94022020, 0x94080cba, 0x94060111, 0x94000a1b}, - {9, 0x94022020, 0x94080cbe, 0x94060111, 0x94000a1b}, - {10, 0x94022020, 0x94080d02, 0x94060111, 0x94000a1b}, - {11, 0x94022020, 0x94080d06, 0x94060111, 0x94000a1b}, // {11, 0x94022010, 0x94080682, 0x94060111, 0x94000a23}, - {12, 0x94022020, 0x94080d0a, 0x94060111, 0x94000a1b}, - {13, 0x94022020, 0x94080d0e, 0x94060111, 0x94000a1b}, // {13, 0x94022010, 0x94080686, 0x94060111, 0x94000a23}, - {14, 0x94022020, 0x94080d1a, 0x94060111, 0x94000a03} -}; -#define NUM_OF_2525_CHNL (sizeof(RF2525RegTable) / sizeof(RTMP_RF_REGS)) - -RTMP_RF_REGS RF2525HBOffsetRegTable[] = { - {1, 0x94022020, 0x94080cbe, 0x94060111, 0x94000a1b}, - {2, 0x94022020, 0x94080d02, 0x94060111, 0x94000a1b}, - {3, 0x94022020, 0x94080d06, 0x94060111, 0x94000a1b}, - {4, 0x94022020, 0x94080d0a, 0x94060111, 0x94000a1b}, - {5, 0x94022020, 0x94080d0e, 0x94060111, 0x94000a1b}, - {6, 0x94022020, 0x94080d12, 0x94060111, 0x94000a1b}, - {7, 0x94022020, 0x94080d16, 0x94060111, 0x94000a1b}, - {8, 0x94022020, 0x94080d1a, 0x94060111, 0x94000a1b}, - {9, 0x94022020, 0x94080d1e, 0x94060111, 0x94000a1b}, - {10, 0x94022020, 0x94080d22, 0x94060111, 0x94000a1b}, - {11, 0x94022020, 0x94080d26, 0x94060111, 0x94000a1b}, - {12, 0x94022020, 0x94080d2a, 0x94060111, 0x94000a1b}, - {13, 0x94022020, 0x94080d2e, 0x94060111, 0x94000a1b}, - {14, 0x94022020, 0x94080d3a, 0x94060111, 0x94000a03} -}; - -RTMP_RF_REGS RF2525eRegTable[] = { -#if 1 -// using 5 Mhz reference clock -// ch R1 R2 R3(TX0~4=0) R4 - {1, 0x94022020, 0x94081136, 0x94060111, 0x94000a0b}, - {2, 0x94022020, 0x9408113a, 0x94060111, 0x94000a0b}, - {3, 0x94022020, 0x9408113e, 0x94060111, 0x94000a0b}, - {4, 0x94022020, 0x94081182, 0x94060111, 0x94000a0b}, - {5, 0x94022020, 0x94081186, 0x94060111, 0x94000a0b}, - {6, 0x94022020, 0x9408118a, 0x94060111, 0x94000a0b}, - {7, 0x94022020, 0x9408118e, 0x94060111, 0x94000a0b}, - {8, 0x94022020, 0x94081192, 0x94060111, 0x94000a0b}, - {9, 0x94022020, 0x94081196, 0x94060111, 0x94000a0b}, - {10, 0x94022020, 0x9408119a, 0x94060111, 0x94000a0b}, - {11, 0x94022020, 0x9408119e, 0x94060111, 0x94000a0b}, - {12, 0x94022020, 0x940811a2, 0x94060111, 0x94000a0b}, - {13, 0x94022020, 0x940811a6, 0x94060111, 0x94000a0b}, - {14, 0x94022020, 0x940811ae, 0x94060111, 0x94000a1b} -#else -// using 10 Mhz reference clock -// ch R1 R2 R3(TX0~4=0) R4 - {1, 0x94022010, 0x9408089a, 0x94060111, 0x94000a1b}, - {2, 0x94022010, 0x9408089e, 0x94060111, 0x94000a07}, - {3, 0x94022010, 0x9408089e, 0x94060111, 0x94000a1b}, - {4, 0x94022010, 0x940808a2, 0x94060111, 0x94000a07}, - {5, 0x94022010, 0x940808a2, 0x94060111, 0x94000a1b}, - {6, 0x94022010, 0x940808a6, 0x94060111, 0x94000a07}, - {7, 0x94022010, 0x940808a6, 0x94060111, 0x94000a1b}, - {8, 0x94022010, 0x940808aa, 0x94060111, 0x94000a07}, - {9, 0x94022010, 0x940808aa, 0x94060111, 0x94000a1b}, - {10, 0x94022010, 0x940808ae, 0x94060111, 0x94000a07}, - {11, 0x94022010, 0x940808ae, 0x94060111, 0x94000a1b}, - {12, 0x94022010, 0x940808b2, 0x94060111, 0x94000a07}, - {13, 0x94022010, 0x940808b2, 0x94060111, 0x94000a1b}, - {14, 0x94022010, 0x940808b6, 0x94060111, 0x94000a23} -#endif -}; -#define NUM_OF_2525E_CHNL (sizeof(RF2525eRegTable) / sizeof(RTMP_RF_REGS)) - -RTMP_RF_REGS RF5222RegTable[] = { -// ch R1 R2 R3(TX0~4=0) R4 - {1, 0x94022020, 0x94001136, 0x94000101, 0x94000a0b}, - {2, 0x94022020, 0x9400113a, 0x94000101, 0x94000a0b}, - {3, 0x94022020, 0x9400113e, 0x94000101, 0x94000a0b}, - {4, 0x94022020, 0x94001182, 0x94000101, 0x94000a0b}, - {5, 0x94022020, 0x94001186, 0x94000101, 0x94000a0b}, - {6, 0x94022020, 0x9400118a, 0x94000101, 0x94000a0b}, - {7, 0x94022020, 0x9400118e, 0x94000101, 0x94000a0b}, - {8, 0x94022020, 0x94001192, 0x94000101, 0x94000a0b}, - {9, 0x94022020, 0x94001196, 0x94000101, 0x94000a0b}, - {10, 0x94022020, 0x9400119a, 0x94000101, 0x94000a0b}, - {11, 0x94022020, 0x9400119e, 0x94000101, 0x94000a0b}, - {12, 0x94022020, 0x940011a2, 0x94000101, 0x94000a0b}, - {13, 0x94022020, 0x940011a6, 0x94000101, 0x94000a0b}, - {14, 0x94022020, 0x940011ae, 0x94000101, 0x94000a1b}, - - // still lack of MMAC(Japan) ch 34,38,42,46 - - {36, 0x94022010, 0x94018896, 0x94000101, 0x94000a1f}, - {40, 0x94022010, 0x9401889a, 0x94000101, 0x94000a1f}, - {44, 0x94022010, 0x9401889e, 0x94000101, 0x94000a1f}, - {48, 0x94022010, 0x940188a2, 0x94000101, 0x94000a1f}, - {52, 0x94022010, 0x940188a6, 0x94000101, 0x94000a1f}, - {66, 0x94022010, 0x940188aa, 0x94000101, 0x94000a1f}, - {60, 0x94022010, 0x940188ae, 0x94000101, 0x94000a1f}, - {64, 0x94022010, 0x940188b2, 0x94000101, 0x94000a1f}, - - {100, 0x94022010, 0x94008802, 0x94000101, 0x94000a0f}, - {104, 0x94022010, 0x94008806, 0x94000101, 0x94000a0f}, - {108, 0x94022010, 0x9400880a, 0x94000101, 0x94000a0f}, - {112, 0x94022010, 0x9400880e, 0x94000101, 0x94000a0f}, - {116, 0x94022010, 0x94008812, 0x94000101, 0x94000a0f}, - {120, 0x94022010, 0x94008816, 0x94000101, 0x94000a0f}, - {124, 0x94022010, 0x9400881a, 0x94000101, 0x94000a0f}, - {128, 0x94022010, 0x9400881e, 0x94000101, 0x94000a0f}, - {132, 0x94022010, 0x94008822, 0x94000101, 0x94000a0f}, - {136, 0x94022010, 0x94008826, 0x94000101, 0x94000a0f}, - {140, 0x94022010, 0x9400882a, 0x94000101, 0x94000a0f}, - - {149, 0x94022020, 0x940090a6, 0x94000101, 0x94000a07}, - {153, 0x94022020, 0x940090ae, 0x94000101, 0x94000a07}, - {157, 0x94022020, 0x940090b6, 0x94000101, 0x94000a07}, - {161, 0x94022020, 0x940090be, 0x94000101, 0x94000a07} -}; -#define NUM_OF_5222_CHNL (sizeof(RF5222RegTable) / sizeof(RTMP_RF_REGS)) - -/* - ========================================================================== - Description: - initialize the MLME task and its data structure (queue, spinlock, - timer, state machines). - Return: - always return NDIS_STATUS_SUCCESS - ========================================================================== -*/ -NDIS_STATUS MlmeInit( - IN PRTMP_ADAPTER pAd) -{ - NDIS_STATUS Status = NDIS_STATUS_SUCCESS; - - if(RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_MLME_INITIALIZED)) - return Status; - - DBGPRINT(RT_DEBUG_TRACE, "--> MLME Initialize\n"); - - do - { - Status = MlmeQueueInit(&pAd->Mlme.Queue); - if(Status != NDIS_STATUS_SUCCESS) - { - break; - } - - pAd->Mlme.Running = FALSE; - spin_lock_init(&pAd->Mlme.TaskLock); - - // initialize the two tables - // MacTableInit(pAd); - BssTableInit(&pAd->PortCfg.BssTab); - - // init state machines - ASSERT(ASSOC_FUNC_SIZE == MAX_ASSOC_MSG * MAX_ASSOC_STATE); - AssocStateMachineInit(pAd, &pAd->Mlme.AssocMachine, pAd->Mlme.AssocFunc); - - ASSERT(AUTH_FUNC_SIZE == MAX_AUTH_MSG * MAX_AUTH_STATE); - AuthStateMachineInit(pAd, &pAd->Mlme.AuthMachine, pAd->Mlme.AuthFunc); - - ASSERT(AUTH_RSP_FUNC_SIZE == MAX_AUTH_RSP_MSG * MAX_AUTH_RSP_STATE); - AuthRspStateMachineInit(pAd, &pAd->Mlme.AuthRspMachine, pAd->Mlme.AuthRspFunc); - - ASSERT(SYNC_FUNC_SIZE == MAX_SYNC_MSG * MAX_SYNC_STATE); - SyncStateMachineInit(pAd, &pAd->Mlme.SyncMachine, pAd->Mlme.SyncFunc); - - ASSERT(WPA_PSK_FUNC_SIZE == MAX_WPA_PSK_MSG * MAX_WPA_PSK_STATE); - WpaPskStateMachineInit(pAd,&pAd->Mlme.WpaPskMachine,pAd->Mlme.WpaPskFunc); - - // Since we are using switch/case to implement it, the init is different from the above - // state machine init - MlmeCntlInit(pAd, &pAd->Mlme.CntlMachine, NULL); - - // Init mlme periodic timer - RTMPInitTimer(pAd, &pAd->Mlme.PeriodicTimer, MlmePeriodicExec); - // Set mlme periodic timer - RTMPSetTimer(pAd, &pAd->Mlme.PeriodicTimer, MLME_TASK_EXEC_INTV); - - RTMPInitTimer(pAd, &pAd->PortCfg.LedCntl.BlinkTimer, AsicLedPeriodicExec); - if (pAd->PortCfg.LedMode == LED_MODE_TXRX_ACTIVITY) - { - // Set blink timer - RTMPSetTimer(pAd, &pAd->PortCfg.LedCntl.BlinkTimer, 70); - } - - // software-based RX Antenna diversity - RTMPInitTimer(pAd, &pAd->PortCfg.RxAnt.RxAntDiversityTimer, AsicRxAntEvalTimeout); - } while (FALSE); - - RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_MLME_INITIALIZED); - - DBGPRINT(RT_DEBUG_TRACE, "<-- MLME Initialize\n"); - - return Status; -} - - -/* - ========================================================================== - Description: - main loop of the MLME - Pre: - Mlme has to be initialized, and there are something inside the queue - Note: - This function is invoked from MPSetInformation and MPReceive; - This task guarantee only one MlmeHandler will run. - ========================================================================== - */ -VOID MlmeHandler( - IN PRTMP_ADAPTER pAd) -{ - MLME_QUEUE_ELEM *Elem = NULL; - - // Only accept MLME and Frame from peer side, no other (control/data) frame should - // get into this state machine - - spin_lock(&pAd->Mlme.TaskLock); - if(pAd->Mlme.Running) - { - spin_unlock(&pAd->Mlme.TaskLock); - return; - } - else - { - pAd->Mlme.Running = TRUE; - } - spin_unlock(&pAd->Mlme.TaskLock); - - while (!MlmeQueueEmpty(&pAd->Mlme.Queue)) - { - //From message type, determine which state machine I should drive - if (MlmeDequeue(&pAd->Mlme.Queue, &Elem) && pAd->PortCfg.BssType != BSS_MONITOR) - { - // if dequeue success - switch (Elem->Machine) - { - case ASSOC_STATE_MACHINE: - StateMachinePerformAction(pAd, &pAd->Mlme.AssocMachine, Elem); - break; - case AUTH_STATE_MACHINE: - StateMachinePerformAction(pAd, &pAd->Mlme.AuthMachine, Elem); - break; - case AUTH_RSP_STATE_MACHINE: - StateMachinePerformAction(pAd, &pAd->Mlme.AuthRspMachine, Elem); - break; - case SYNC_STATE_MACHINE: - StateMachinePerformAction(pAd, &pAd->Mlme.SyncMachine, Elem); - break; - case MLME_CNTL_STATE_MACHINE: - MlmeCntlMachinePerformAction(pAd, &pAd->Mlme.CntlMachine, Elem); - break; - case WPA_PSK_STATE_MACHINE: - StateMachinePerformAction(pAd, &pAd->Mlme.WpaPskMachine, Elem); - break; - default: - DBGPRINT(RT_DEBUG_TRACE, "ERROR: Illegal machine in MlmeHandler()\n"); - break; - } // end of switch - - // free MLME element - Elem->Occupied = FALSE; - Elem->MsgLen = 0; - - } - else - { - printk(KERN_ERR DRV_NAME "ERROR: empty Elem in MlmeQueue\n"); - } - } - - spin_lock(&pAd->Mlme.TaskLock); - pAd->Mlme.Running = FALSE; - spin_unlock(&pAd->Mlme.TaskLock); -} - -/* - ========================================================================== - Description: - Destructor of MLME (Destroy queue, state machine, spin lock and timer) - Parameters: - Adapter - NIC Adapter pointer - Post: - The MLME task will no longer work properly - ========================================================================== - */ -VOID MlmeHalt( - IN PRTMP_ADAPTER pAd) -{ - MLME_DISASSOC_REQ_STRUCT DisReq; - MLME_QUEUE_ELEM MsgElem; - - if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_MLME_INITIALIZED)) - return; - - DBGPRINT(RT_DEBUG_TRACE, "==> MlmeHalt\n"); - - if (INFRA_ON(pAd) && !RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST)) - { - COPY_MAC_ADDR(&DisReq.Addr, &pAd->PortCfg.Bssid); - DisReq.Reason = REASON_DISASSOC_STA_LEAVING; - - MsgElem.Machine = ASSOC_STATE_MACHINE; - MsgElem.MsgType = MT2_MLME_DISASSOC_REQ; - MsgElem.MsgLen = sizeof(MLME_DISASSOC_REQ_STRUCT); - memcpy(MsgElem.Msg, &DisReq, sizeof(MLME_DISASSOC_REQ_STRUCT)); - - MlmeDisassocReqAction(pAd, &MsgElem); - - udelay(1000); - } - - if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST)) - { - // disable BEACON generation and other BEACON related hardware timers - AsicDisableSync(pAd); - } - - // Cancel pending timers - RTMPCancelTimer(&pAd->Mlme.AssocAux.AssocTimer); - RTMPCancelTimer(&pAd->Mlme.AssocAux.ReassocTimer); - RTMPCancelTimer(&pAd->Mlme.AssocAux.DisassocTimer); - RTMPCancelTimer(&pAd->Mlme.AuthAux.AuthTimer); - RTMPCancelTimer(&pAd->Mlme.AuthRspAux.AuthRspTimer); - RTMPCancelTimer(&pAd->Mlme.SyncAux.BeaconTimer); - RTMPCancelTimer(&pAd->Mlme.SyncAux.ScanTimer); - RTMPCancelTimer(&pAd->Mlme.PeriodicTimer); - // RTMPCancelTimer(&pAd->PortCfg.MacTab.AgedOutTimer); - - if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST)) - { - RTMPCancelTimer(&pAd->PortCfg.LedCntl.BlinkTimer); - ASIC_LED_ACT_OFF(pAd); - } - - RTMPCancelTimer(&pAd->PortCfg.RxAnt.RxAntDiversityTimer); - udelay(1000); - - MlmeQueueDestroy(&pAd->Mlme.Queue); - StateMachineDestroy(&pAd->Mlme.AssocMachine); - StateMachineDestroy(&pAd->Mlme.AuthMachine); - StateMachineDestroy(&pAd->Mlme.AuthRspMachine); - StateMachineDestroy(&pAd->Mlme.SyncMachine); - // StateMachineDestroy(&pAd->Mlme.CntlMachine); - //NdisFreeSpinLock(&pAd->Mlme.Queue.Lock); - //NdisFreeSpinLock(&pAd->Mlme.TaskLock); - // NdisFreeSpinLock(&pAd->PortCfg.MacTab.Lock); - - MlmeFreeMemoryHandler(pAd); //Free MLME memory handler - - RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_MLME_INITIALIZED); - - DBGPRINT(RT_DEBUG_TRACE, "<== MlmeHalt\n"); -} - -/* - ========================================================================== - Description: - This routine is executed periodically to - - 1. Decide if it's a right time to turn on PwrMgmt bit of all - outgoiing frames - 2. Calculate ChannelQuality based on statistics of the last - period, so that TX rate won't toggling very frequently between a - successful TX and a failed TX. - 3. If the calculated ChannelQuality indicated current connection not - healthy, then a ROAMing attempt is tried here. - ========================================================================== - */ -#define ADHOC_BEACON_LOST_TIME (10*HZ) // 4 sec -VOID MlmePeriodicExec( - IN unsigned long data) -{ - RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; - ULONG Now32; - CSR15_STRUC Csr15; - - if (pAd->PortCfg.BssType == BSS_MONITOR) - { - RTMPSetTimer(pAd, &pAd->Mlme.PeriodicTimer, MLME_TASK_EXEC_INTV); - return; - } - - if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF)) - { - RTMPSetTimer(pAd, &pAd->Mlme.PeriodicTimer, MLME_TASK_EXEC_INTV); - return; - } - - if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RESET_IN_PROGRESS)) - { - RTMPSetTimer(pAd, &pAd->Mlme.PeriodicTimer, MLME_TASK_EXEC_INTV); - return; - } - - // check every 2 second. If rcv-beacon less than 5 in the past 2 second, then AvgRSSI is no longer a - // valid indication of the distance between this AP and its clients. - if (pAd->MediaState == NdisMediaStateConnected) - { - if (pAd->PortCfg.NumOfAvgRssiSample < 3) - { - pAd->PortCfg.RxAnt.AvgRssi[0] = (-95 + 120) << 3; // reset Ant-A's RSSI history - pAd->PortCfg.RxAnt.AvgRssi[1] = (-95 + 120) << 3; // reset Ant-B's RSSI history - pAd->PortCfg.AvgRssi = pAd->PortCfg.LastR17Value; - DBGPRINT(RT_DEBUG_TRACE, "MlmePeriodicExec: no traffic, reset Avg RSSI= %d dbm\n", pAd->PortCfg.AvgRssi); - } - else - pAd->PortCfg.NumOfAvgRssiSample = 0; - } - - Now32 = jiffies; - - if (pAd->RalinkCounters.MgmtRingFullCount >= 2) - { - RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_HARDWARE_ERROR); - } - else - { - pAd->RalinkCounters.MgmtRingFullCount = 0; - } - - if ((pAd->PortCfg.bBlockAssoc == TRUE) && (pAd->PortCfg.LastMicErrorTime + (60 * HZ) < Now32)) - { - pAd->PortCfg.bBlockAssoc = FALSE; - } - - // if Rx Antenna is DIVERSITY ON, then perform Software-based diversity evaluation - if ((pAd->PortCfg.CurrentRxAntenna == 0xff) && (pAd->Mlme.PeriodicRound % 2 == 1)) - { - SHORT realavgrssi = (pAd->PortCfg.RxAnt.AvgRssi[pAd->PortCfg.RxAnt.PrimaryRxAnt] >> 3) - pAd->PortCfg.RssiToDbm; - DBGPRINT(RT_DEBUG_TRACE, "MlmePeriodicExec:(%d), Primary AvgRssi(%d), LastAvgRssi(%d)\n", pAd->PortCfg.RxAnt.PrimaryRxAnt, realavgrssi, pAd->PortCfg.LastAvgRssi); - DBGPRINT(RT_DEBUG_TRACE, "Primary AvgRssi(%d), Second AvgRssi(%d)\n", pAd->PortCfg.RxAnt.AvgRssi[pAd->PortCfg.RxAnt.PrimaryRxAnt], pAd->PortCfg.RxAnt.AvgRssi[pAd->PortCfg.RxAnt.SecondaryRxAnt]); - if ((realavgrssi > pAd->PortCfg.LastAvgRssi + 5) || (realavgrssi < pAd->PortCfg.LastAvgRssi - 5)) - { - //DBGPRINT(RT_DEBUG_TRACE, ("AsicEvaluateSecondaryRxAnt ===> start evaluate second antenna!!!\n")); - pAd->PortCfg.LastAvgRssi = realavgrssi; - AsicEvaluateSecondaryRxAnt(pAd); - } - } - - -#ifndef WIFI_TEST - // danamic tune BBP R17 to find a balance between sensibility and noise isolation - // 2003-12-05 For 2560C and before, to avoid collision with MAC ASIC, limit - // BBP R17 tuning to be within 20 seconds after LINK UP. 2560D (R0=4) and - // after can always enable R17 tuning - if (pAd->PortCfg.Rt2560Version >= RT2560_VER_D) - AsicBbpTuning(pAd); - else if ((pAd->MediaState == NdisMediaStateConnected) && (pAd->Mlme.PeriodicRound <= 20)) - AsicBbpTuning(pAd); -#endif - - if (pAd->MediaState == NdisMediaStateConnected) - { - // update channel quality for Roaming and UI LinkQuality display - MlmeCheckChannelQuality(pAd, Now32); -#if 0 - // periodic VCO tuning when there's no traffic. - // RF guys suspected VCO will shift away upon temperature change along the time - if (((pAd->Mlme.PeriodicRound % 16) == 2) && - ((pAd->DrsCounters.OneSecTxOkCount + pAd->DrsCounters.OneSecTxRetryOkCount)==0)) - { - DBGPRINT(RT_DEBUG_TRACE,("Periodic VCO tuning...\n")); - AsicSwitchChannel(pAd, pAd->PortCfg.Channel); - AsicLockChannel(pAd, pAd->PortCfg.Channel); - } -#endif - // perform dynamic tx rate switching based on past TX history - MlmeCheckDynamicTxRateSwitching(pAd); - } - - AsicAdjustTxPower(pAd); - - if (INFRA_ON(pAd)) - { - // Is PSM bit consistent with user power management policy? - // This is the only place that will set PSM bit ON. - MlmeCheckForPsmChange(pAd, Now32); - - // Check for EAPOL frame sent after MIC countermeasures - if (pAd->PortCfg.MicErrCnt >= 3) - { - MLME_DISASSOC_REQ_STRUCT DisassocReq; - - // disassoc from current AP first - DBGPRINT(RT_DEBUG_TRACE, "MLME - disassociate with current AP after sending second continuous EAPOL frame\n"); - DisassocParmFill(pAd, &DisassocReq, &pAd->PortCfg.Bssid, REASON_MIC_FAILURE); - MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, - sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq); - - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC; - pAd->PortCfg.bBlockAssoc = TRUE; - } - - else - { - // send out a NULL frame every 10 sec. for what??? inform "PwrMgmt" bit? - if ((pAd->Mlme.PeriodicRound % 10) == 8) - EnqueueNullFrame(pAd, pAd->PortCfg.TxRate); - - if (CQI_IS_BAD(pAd->Mlme.ChannelQuality)) - { - pAd->RalinkCounters.BadCQIAutoRecoveryCount ++; - DBGPRINT(RT_DEBUG_TRACE, "MMCHK - Bad CQI. Auto Recovery attempt #%d\n", pAd->RalinkCounters.BadCQIAutoRecoveryCount); - MlmeAutoReconnectLastSSID(pAd); - } - - else if (CQI_IS_FAIR(pAd->Mlme.ChannelQuality) || CQI_IS_POOR(pAd->Mlme.ChannelQuality)) - { - // perform aggresive roaming only when SECURITY OFF or WEP64/128; - // WPA and WPA-PSK has no aggresive roaming because re-negotiation - // between 802.1x supplicant and authenticator/AAA server is required - // but can't be guaranteed. - if (pAd->PortCfg.AuthMode < Ndis802_11AuthModeWPA) - MlmeCheckForRoaming(pAd, Now32); - } - } - } - else if (ADHOC_ON(pAd)) - { - if ((pAd->Mlme.PeriodicRound % 2) == 1) - { - // So that even when ASIC's BEACONgen engine been blocked - // by peer's BEACON due to slower system clock, this STA still can send out - // minimum BEACON to tell the peer I'm alive. - // drawback is that this BEACON won't well align at TBTT boundary. - RTMP_IO_READ32(pAd, CSR15, &Csr15.word); // read-n-clear "BcnSent" bit - if (Csr15.field.BeaconSent == 0) - EnqueueBeaconFrame(pAd); // software send BEACON - } - else - { - // if all 11b peers leave this BSS more than 5 seconds, update Tx rate - if ((pAd->PortCfg.Channel <= 14) && - (pAd->PortCfg.MaxTxRate <= RATE_11) && - (pAd->PortCfg.MaxDesiredRate > RATE_11) && - ((pAd->PortCfg.Last11bBeaconRxTime + (5 * HZ)) < Now32)) - { - DBGPRINT(RT_DEBUG_TRACE, "last 11B peer left, update Tx rates\n"); - memcpy(pAd->PortCfg.SupportedRates, pAd->PortCfg.IbssConfig.SupportedRates, MAX_LEN_OF_SUPPORTED_RATES); - pAd->PortCfg.SupportedRatesLen = pAd->PortCfg.IbssConfig.SupportedRatesLen; - MlmeUpdateTxRates(pAd, FALSE); - MakeIbssBeacon(pAd); // supported rates changed - } - } - -#ifndef SINGLE_ADHOC_LINKUP - // If all peers leave, and this STA becomes the last one in this IBSS, then change MediaState - // to DISCONNECTED. But still holding this IBSS (i.e. sending BEACON) so that other STAs can - // join later. - if ((pAd->PortCfg.LastBeaconRxTime + ADHOC_BEACON_LOST_TIME < Now32) && - (pAd->MediaState == NdisMediaStateConnected)) - { - DBGPRINT(RT_DEBUG_TRACE, "MMCHK - excessive BEACON lost, last STA in this IBSS, MediaState=Disconnected\n"); - - pAd->MediaState = NdisMediaStateDisconnected; - // clean up previous SCAN result, add current BSS back to table if any - BssTableDeleteEntry(&pAd->PortCfg.BssTab, &(pAd->PortCfg.Bssid)); - - pAd->PortCfg.LastScanTime = Now32; - } -#endif - - } - else - { - DBGPRINT(RT_DEBUG_INFO, "MLME periodic exec, no association so far\n"); - if (pAd->PortCfg.AutoReconnect == TRUE) - { - if ((pAd->PortCfg.BssTab.BssNr==0) && (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE)) - { - MLME_SCAN_REQ_STRUCT ScanReq; - - if ((pAd->PortCfg.LastScanTime + 10 * HZ) < Now32) - { - DBGPRINT(RT_DEBUG_TRACE, "CNTL - No matching BSS, start a new scan\n"); - // BroadSsid[0] = '\0'; - ScanParmFill(pAd, &ScanReq, pAd->Mlme.CntlAux.Ssid, pAd->Mlme.CntlAux.SsidLen, BSS_ANY, SCAN_ACTIVE); - MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ, sizeof(MLME_SCAN_REQ_STRUCT), &ScanReq); - pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN; - // Reset Missed scan number - pAd->PortCfg.IgnoredScanNumber = 0; - pAd->PortCfg.LastScanTime = Now32; - } - else if (pAd->PortCfg.BssType == BSS_INDEP) // Quit the forever scan when in a very clean room - MlmeAutoRecoverNetwork(pAd); - //MlmeAutoReconnectLastSSID(pAd); - } - else if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE) - { - if ((pAd->Mlme.PeriodicRound % 10) == 7) - { - if ((pAd->PortCfg.LastScanTime + 10 * HZ) < Now32) - { - MlmeAutoScan(pAd); - pAd->PortCfg.LastScanTime = Now32; - } - } - else - MlmeAutoReconnectLastSSID(pAd); - - DBGPRINT(RT_DEBUG_INFO, "pAd->PortCfg.AutoReconnect is TRUE\n"); - } - } - } - pAd->Mlme.PeriodicRound ++; - MlmeHandler(pAd); - - if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE)) - NICCheckForHang(pAd); - - RTMPSetTimer(pAd, &pAd->Mlme.PeriodicTimer, MLME_TASK_EXEC_INTV); -} - -VOID MlmeAutoScan( - IN PRTMP_ADAPTER pAd) -{ - // check CntlMachine.CurrState to avoid collision with NDIS SetOID request - if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE) - { - DBGPRINT(RT_DEBUG_TRACE, "MMCHK - Driver auto scan\n"); - - // tell CNTL state machine NOT to call NdisMSetInformationComplete() after completing - // this request, because this request is initiated by driver itself. - pAd->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; - - MlmeEnqueue(&pAd->Mlme.Queue, - MLME_CNTL_STATE_MACHINE, - OID_802_11_BSSID_LIST_SCAN, - 0, - NULL); - MlmeHandler(pAd); - } -} - -VOID MlmeAutoRecoverNetwork( - IN PRTMP_ADAPTER pAd) -{ - // check CntlMachine.CurrState to avoid collision with NDIS SetOID request - if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE) - { - NDIS_802_11_SSID OidSsid; - OidSsid.SsidLength = pAd->PortCfg.SsidLen; - memcpy(OidSsid.Ssid, pAd->PortCfg.Ssid, pAd->PortCfg.SsidLen); - - DBGPRINT(RT_DEBUG_TRACE, "MMCHK - Driver auto recovering network - %s\n", pAd->PortCfg.Ssid); - - // tell CNTL state machine NOT to call NdisMSetInformationComplete() after completing - // this request, because this request is initiated by driver itself. - pAd->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; - - MlmeEnqueue(&pAd->Mlme.Queue, - MLME_CNTL_STATE_MACHINE, - OID_802_11_SSID, - sizeof(NDIS_802_11_SSID), - &OidSsid); - MlmeHandler(pAd); - } - -} - -VOID MlmeAutoReconnectLastSSID( - IN PRTMP_ADAPTER pAd) -{ - // check CntlMachine.CurrState to avoid collision with NDIS SetOID request - if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE) - { - NDIS_802_11_SSID OidSsid; - OidSsid.SsidLength = pAd->Mlme.CntlAux.SsidLen; - memcpy(OidSsid.Ssid, pAd->Mlme.CntlAux.Ssid, pAd->Mlme.CntlAux.SsidLen); - - DBGPRINT(RT_DEBUG_TRACE, "Driver auto reconnect to last OID_802_11_SSID setting - %s\n", pAd->Mlme.CntlAux.Ssid); - - // We will only try this attemp once, therefore change the AutoReconnect flag afterwards. - pAd->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; - - MlmeEnqueue(&pAd->Mlme.Queue, - MLME_CNTL_STATE_MACHINE, - OID_802_11_SSID, - sizeof(NDIS_802_11_SSID), - &OidSsid); - MlmeHandler(pAd); - } -} - -/* - ========================================================================== - Description: - This routine checks if there're other APs out there capable for - roaming. Caller should call this routine only when Massoc=TRUE and - channel quality is below CQI_GOOD_THRESHOLD. - Output: - ========================================================================== - */ -VOID MlmeCheckForRoaming( - IN PRTMP_ADAPTER pAd, - IN ULONG Now32) -{ - USHORT i; - BSS_TABLE *pBssTab = &pAd->Mlme.CntlAux.SsidBssTab; - BSS_TABLE *pRoamTab = &pAd->Mlme.CntlAux.RoamTab; - BSS_ENTRY *pBss; - - // put all roaming candidates into RoamTab, and sort in RSSI order - BssTableInit(pRoamTab); - for (i = 0; i < pBssTab->BssNr; i++) - { - pBss = &pBssTab->BssEntry[i]; - - if ((pBssTab->BssEntry[i].LastBeaconRxTime + BEACON_LOST_TIME) < Now32) - continue; // AP disappear - if (pBss->Rssi <= RSSI_THRESHOLD_FOR_ROAMING) - continue; // RSSI too weak. forget it. - if (MAC_ADDR_EQUAL(&pBssTab->BssEntry[i].Bssid, &pAd->PortCfg.Bssid)) - continue; // skip current AP - if (CQI_IS_FAIR(pAd->Mlme.ChannelQuality) && (pAd->PortCfg.LastRssi + RSSI_DELTA > pBss->Rssi)) - continue; // we're still okay, only AP with stronger RSSI is eligible for roaming - - // AP passing all above rules is put into roaming candidate table - memcpy(&pRoamTab->BssEntry[pRoamTab->BssNr], pBss, sizeof(BSS_ENTRY)); - pRoamTab->BssNr += 1; - } - - if (pRoamTab->BssNr > 0) - { - // check CntlMachine.CurrState to avoid collision with NDIS SetOID request - if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE) - { - // tell CNTL state machine NOT to call NdisMSetInformationComplete() after completing - // this request, because this request is initiated by driver itself, not from NDIS. - pAd->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; - - pAd->RalinkCounters.PoorCQIRoamingCount ++; - DBGPRINT(RT_DEBUG_TRACE, "MMCHK - Roaming attempt #%d\n", pAd->RalinkCounters.PoorCQIRoamingCount); - MlmeEnqueue(&pAd->Mlme.Queue, MLME_CNTL_STATE_MACHINE, MT2_MLME_ROAMING_REQ, 0, NULL); - MlmeHandler(pAd); - } - } - -} - -/* - ========================================================================== - Description: - This routine calculates TxPER, RxPER of the past N-sec period. And - according to the calculation result, ChannelQuality is calculated here - to decide if current AP is still doing the job. - - If ChannelQuality is not good, a ROAMing attempt may be tried later. - Output: - PortCfg.ChannelQuality - 0..100 - ========================================================================== - */ -VOID MlmeCheckChannelQuality( - IN PRTMP_ADAPTER pAd, - IN ULONG Now32) -{ - ULONG TxFailCnt, TxOkCnt, TxRetryCnt, TxCnt; - ULONG RxFailCnt, RxOkCnt, RxCnt, Cnt0, OldFcsCount; - static ULONG TxPER = 0, TxPRR = 0, RxPER = 0; - - // - // monitor TX counters change for the past period - // - TxFailCnt = pAd->WlanCounters.FailedCount.vv.LowPart - - pAd->Mlme.PrevWlanCounters.FailedCount.vv.LowPart; - TxRetryCnt = pAd->WlanCounters.RetryCount.vv.LowPart - - pAd->Mlme.PrevWlanCounters.RetryCount.vv.LowPart; - TxOkCnt = pAd->WlanCounters.TransmittedFragmentCount.vv.LowPart - - pAd->Mlme.PrevWlanCounters.TransmittedFragmentCount.vv.LowPart; - TxCnt = TxOkCnt + TxFailCnt; - - if (TxCnt > 5) // if too few TX samples, skip TX related statistics - { - TxPER = (TxFailCnt * 100) / TxCnt; - TxPRR = ((TxRetryCnt + TxFailCnt) * 100) / TxCnt; - } - - // - // calculate RX PER - // - - // Update FCS counters - RTMP_IO_READ32(pAd, CNT0, &Cnt0); - OldFcsCount= pAd->WlanCounters.FCSErrorCount.vv.LowPart; - pAd->WlanCounters.FCSErrorCount.vv.LowPart += ((Cnt0 & 0x0000ffff) >> 7); - if (pAd->WlanCounters.FCSErrorCount.vv.LowPart < OldFcsCount) - pAd->WlanCounters.FCSErrorCount.vv.HighPart++; - - // Add FCS error count to private counters - OldFcsCount = pAd->RalinkCounters.RealFcsErrCount.vv.LowPart; - pAd->RalinkCounters.RealFcsErrCount.vv.LowPart += Cnt0; - if (pAd->RalinkCounters.RealFcsErrCount.vv.LowPart < OldFcsCount) - pAd->RalinkCounters.RealFcsErrCount.vv.HighPart++; - - RxOkCnt = pAd->WlanCounters.ReceivedFragmentCount.vv.LowPart - - pAd->Mlme.PrevWlanCounters.ReceivedFragmentCount.vv.LowPart; - RxFailCnt = pAd->RalinkCounters.RealFcsErrCount.vv.LowPart - - pAd->Mlme.PrevWlanCounters.FCSErrorCount.vv.LowPart; - RxCnt = RxOkCnt + RxFailCnt; - - if (RxCnt > 5) - RxPER = (RxFailCnt * 100) / RxCnt; -//printk("!! WiFi: Ok: %d, Fail: %d, PER: %d\n", RxOkCnt, RxFailCnt, RxPER); - // - // decide ChannelQuality based on: 1)last BEACON received time, 2)last RSSI, 3)TxPER, and 4)RxPER - // - // This value also decides when all roaming fails (or no roaming candidates at - // all), should this STA stay with original AP, or a LinkDown signal - // is indicated to NDIS - // - if (INFRA_ON(pAd) && - (pAd->PortCfg.LastBeaconRxTime + BEACON_LOST_TIME < Now32)) // BEACON starving? - { - // Ignore lost beacon when NIC in reset state - // Ignore lost beacon if traffic still goes well - if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RESET_IN_PROGRESS) && (TxOkCnt < 2)) - { - DBGPRINT(RT_DEBUG_TRACE, "BEACON lost for more than %d sec with TxOkCnt=%d, let CQI = 0\n", BEACON_LOST_TIME/HZ, TxOkCnt); - pAd->Mlme.ChannelQuality = 0; - // Lost AP, send disconnect & link down event - LinkDown(pAd); - } - } - else - { - // ChannelQuality = W1*RSSI + W2*TxPRR + W3*RxPER (RSSI 0..100), (TxPER 100..0), (RxPER 100..0) - pAd->Mlme.ChannelQuality = (RSSI_WEIGHTING * pAd->PortCfg.LastRssi + - TX_WEIGHTING * (100 - TxPRR) + - RX_WEIGHTING* (100 - RxPER)) / 100; - if (pAd->Mlme.ChannelQuality >= 100) - pAd->Mlme.ChannelQuality = 100; - } - - // latch current WLAN counters for next check-for-roaming usage - memcpy(&pAd->Mlme.PrevWlanCounters, &pAd->WlanCounters, sizeof(COUNTER_802_11)); - // make sure copy the real FCS counts into previous mlme counter structure. - pAd->Mlme.PrevWlanCounters.FCSErrorCount = pAd->RalinkCounters.RealFcsErrCount; - - DBGPRINT(RT_DEBUG_INFO, "MMCHK - CQI= %d, (Tx Fail=%d/Retry=%d/Total=%d, Rx Fail=%d/Total=%d, RSSI=%d dbm)\n", - pAd->Mlme.ChannelQuality, TxFailCnt, TxRetryCnt, TxCnt, RxFailCnt, RxCnt, pAd->PortCfg.LastRssi - pAd->PortCfg.RssiToDbm); - -} - -/* - ========================================================================== - Description: - This routine calculates the acumulated TxPER of eaxh TxRate. And - according to the calculation result, change PortCfg.TxRate which - is the stable TX Rate we expect the Radio situation could sustained. - - PortCfg.TxRate will change dynamically within {RATE_1/RATE_6, MaxTxRate} - Output: - PortCfg.TxRate - - NOTE: - call this routine every second - ========================================================================== - */ -VOID MlmeCheckDynamicTxRateSwitching( - IN PRTMP_ADAPTER pAd) -{ - UCHAR UpRate, DownRate, CurrRate; - USHORT TxTotalCnt = pAd->DrsCounters.OneSecTxOkCount + pAd->DrsCounters.OneSecTxRetryOkCount + pAd->DrsCounters.OneSecTxFailCount; - USHORT TxErrorRatio; - BOOLEAN fUpgradeQuality = FALSE; - USHORT *pRateUpPER, *pRateDownPER; - - pAd->DrsCounters.CurrTxRateStableTime ++; - CurrRate = pAd->PortCfg.TxRate; - do - { - if (pAd->PortCfg.EnableAutoRateSwitching == FALSE) - break; - - // if no traffic in the past 1-sec period, don't change TX rate, - // but clear all bad history. because the bad history may affect the next - // Chariot throughput test - if (TxTotalCnt == 0) - { - pAd->DrsCounters.TxRateUpPenalty = 0; - memset(pAd->DrsCounters.TxQuality, 0, MAX_LEN_OF_SUPPORTED_RATES); - memset(pAd->DrsCounters.PER, 0, MAX_LEN_OF_SUPPORTED_RATES); - break; - } - - // decide the next upgrade rate and downgrade rate, if any - if (pAd->PortCfg.PhyMode == PHY_11BG_MIXED) - { - UpRate = Phy11BGNextRateUpward[CurrRate]; - DownRate = Phy11BGNextRateDownward[CurrRate]; - } - else if (pAd->PortCfg.PhyMode == PHY_11B) - { - UpRate = Phy11BNextRateUpward[CurrRate]; - DownRate = Phy11BNextRateDownward[CurrRate]; - } - else if (pAd->PortCfg.PhyMode == PHY_11A) - { - UpRate = Phy11ANextRateUpward[CurrRate]; - DownRate = Phy11ANextRateDownward[CurrRate]; - } - else // PHY_11ABG_MIXED - { - if (pAd->PortCfg.Channel > 14) - { - UpRate = Phy11ANextRateUpward[CurrRate]; - DownRate = Phy11ANextRateDownward[CurrRate]; - } - else - { - UpRate = Phy11BGNextRateUpward[CurrRate]; - DownRate = Phy11BGNextRateDownward[CurrRate]; - } - } - - if (UpRate > pAd->PortCfg.MaxTxRate) - UpRate = pAd->PortCfg.MaxTxRate; - - // decide TX quality based on Tx PER when enough samples are available - if (TxTotalCnt > 15) - { - TxErrorRatio = ((pAd->DrsCounters.OneSecTxRetryOkCount + pAd->DrsCounters.OneSecTxFailCount) *100) / TxTotalCnt; - - // 2560D and after has implemented ASIC-based OFDM rate switching, - // but not 2560C & before. thus software use different PER for rate switching - if (pAd->PortCfg.Rt2560Version >= RT2560_VER_D) - { - pRateUpPER = &NewRateUpPER[0]; - pRateDownPER = &NewRateDownPER[0]; - } - else - { - pRateUpPER = &OldRateUpPER[0]; - pRateDownPER = &OldRateDownPER[0]; - } - - // downgrade TX quality if PER >= Rate-Down threshold - if (TxErrorRatio >= pRateDownPER[CurrRate]) - { - pAd->DrsCounters.TxQuality[CurrRate] = DRS_TX_QUALITY_WORST_BOUND; - } - // upgrade TX quality if PER <= Rate-Up threshold - else if (TxErrorRatio <= pRateUpPER[CurrRate]) - { - fUpgradeQuality = TRUE; - if (pAd->DrsCounters.TxQuality[CurrRate]) - pAd->DrsCounters.TxQuality[CurrRate] --; // quality very good in CurrRate - - if (pAd->DrsCounters.TxRateUpPenalty) - pAd->DrsCounters.TxRateUpPenalty --; - else if (pAd->DrsCounters.TxQuality[UpRate]) - pAd->DrsCounters.TxQuality[UpRate] --; // may improve next UP rate's quality - } - - } - - // if not enough TX samples, decide by heuristic rules - else - { - TxErrorRatio = 0; - - // Downgrade TX quality upon any TX failure in the past second - if (pAd->DrsCounters.OneSecTxFailCount) - { - if ((pAd->DrsCounters.OneSecTxFailCount <= 1) && - (pAd->DrsCounters.OneSecTxOkCount + pAd->DrsCounters.OneSecTxRetryOkCount)) - { - pAd->DrsCounters.TxQuality[CurrRate] += 2; // degrade quality - if (pAd->DrsCounters.TxQuality[CurrRate] > DRS_TX_QUALITY_WORST_BOUND) - pAd->DrsCounters.TxQuality[CurrRate] = DRS_TX_QUALITY_WORST_BOUND; - } - else // more than 2 failure, or no TX ok cases - { - pAd->DrsCounters.TxQuality[CurrRate] = DRS_TX_QUALITY_WORST_BOUND; - } - } - // upgrade TX quality if - - // 1. no TX failure but do have TX ok case, and - // 2. there's more one-time-ok cases than retry-ok cases in the past second - else if ((pAd->DrsCounters.OneSecTxOkCount > pAd->DrsCounters.OneSecTxRetryOkCount)) - { - fUpgradeQuality = TRUE; - if (pAd->DrsCounters.TxQuality[CurrRate]) - pAd->DrsCounters.TxQuality[CurrRate] --; // quality very good in CurrRate - - if (pAd->DrsCounters.TxRateUpPenalty) - pAd->DrsCounters.TxRateUpPenalty --; - else if (pAd->DrsCounters.TxQuality[UpRate]) - pAd->DrsCounters.TxQuality[UpRate] --; // may improve next UP rate's quality - } - } - - pAd->DrsCounters.PER[CurrRate] = (UCHAR)TxErrorRatio; - - if (pAd->DrsCounters.fNoisyEnvironment) - { - DBGPRINT(RT_DEBUG_TRACE,"DRS(noisy):"); - } - else - { - DBGPRINT(RT_DEBUG_TRACE,"DRS:"); - } - DBGPRINT(RT_DEBUG_TRACE, "Qty[%d]=%d PER=%d%% %d-sec, Qty[%d]=%d, Pty=%d\n", - RateIdToMbps[CurrRate], pAd->DrsCounters.TxQuality[CurrRate], - TxErrorRatio, - pAd->DrsCounters.CurrTxRateStableTime, - RateIdToMbps[UpRate], pAd->DrsCounters.TxQuality[UpRate], - pAd->DrsCounters.TxRateUpPenalty); - - // 2004-3-13 special case: Claim noisy environment - // decide if there was a false "rate down" in the past 2 sec due to noisy - // environment. if so, we would rather switch back to the higher TX rate. - // criteria - - // 1. there's a higher rate available, AND - // 2. there was a rate-down happened, AND - // 3. current rate has 75% > PER > 20%, AND - // 4. comparing to UpRate, current rate didn't improve PER more than 5 % - if ((UpRate != CurrRate) && - (pAd->DrsCounters.LastSecTxRateChangeAction == 2) && - (TxTotalCnt > 15) && // this line is to prevent the case that not enough TX sample causing PER=0% - (pAd->DrsCounters.PER[CurrRate] < 75) && - ((pAd->DrsCounters.PER[CurrRate] > 20) || (pAd->DrsCounters.fNoisyEnvironment)) && - ((pAd->DrsCounters.PER[CurrRate]+5) > pAd->DrsCounters.PER[UpRate])) - { - // we believe this is a noisy environment. better stay at UpRate - DBGPRINT(RT_DEBUG_TRACE,"DRS: #### enter Noisy environment ####\n"); - pAd->DrsCounters.fNoisyEnvironment = TRUE; - - // 2004-3-14 when claiming noisy environment, we're not only switch back - // to UpRate, but can be more aggressive to use one more rate up - UpRate++; -// if (UpRate>RATE_54) UpRate=RATE_54; - if ((UpRate==RATE_6) || (UpRate==RATE_9)) UpRate=RATE_12; - if (UpRate > pAd->PortCfg.MaxTxRate) - UpRate = pAd->PortCfg.MaxTxRate; - pAd->PortCfg.TxRate = UpRate; - break; - } - - // 2004-3-12 special case: Leave noisy environment - // The interference has gone suddenly. reset TX rate to - // the theoritical value according to RSSI. Criteria - - // 1. it's currently in noisy environment - // 2. PER drops to be below 12% - if ((pAd->DrsCounters.fNoisyEnvironment == TRUE) && - (TxTotalCnt > 15) && (pAd->DrsCounters.PER[CurrRate] <= 12)) - { - UCHAR JumpUpRate; - - pAd->DrsCounters.fNoisyEnvironment = FALSE; - for (JumpUpRate = RATE_54; JumpUpRate > RATE_1; JumpUpRate--) - { - if (pAd->PortCfg.AvgRssi > (RssiSafeLevelForTxRate[JumpUpRate] + pAd->PortCfg.RssiToDbm)) - - break; - } - - if (JumpUpRate > pAd->PortCfg.MaxTxRate) - JumpUpRate = pAd->PortCfg.MaxTxRate; - - DBGPRINT(RT_DEBUG_TRACE,"DRS: #### leave Noisy environment ####, RSSI=%d, JumpUpRate=%d\n", - - pAd->PortCfg.AvgRssi - RSSI_TO_DBM_OFFSET, RateIdToMbps[JumpUpRate]); - - - if (JumpUpRate > CurrRate) - { - pAd->PortCfg.TxRate = JumpUpRate; - break; - } - } - - // we're going to upgrade CurrRate to UpRate at next few seconds, - // but before that, we'd better try a NULL frame @ UpRate and - // see if UpRate is stable or not. If this NULL frame fails, it will - // downgrade TxQuality[CurrRate], so that STA won't switch to - // to UpRate in the next second - // 2004-04-07 requested by David Tung - sent test frames only in OFDM rates - if (fUpgradeQuality && - INFRA_ON(pAd) && - (UpRate != CurrRate) && - (UpRate > RATE_11) && - (pAd->DrsCounters.TxQuality[CurrRate] <= 1) && - (pAd->DrsCounters.TxQuality[UpRate] <= 1)) - { - DBGPRINT(RT_DEBUG_TRACE,"DRS: 2 NULL frames at UpRate = %d Mbps\n",RateIdToMbps[UpRate]); - EnqueueNullFrame(pAd, UpRate); - EnqueueNullFrame(pAd, UpRate); - } - - // perform DRS - consider TxRate Down first, then rate up. - // 1. rate down, if current TX rate's quality is not good - // 2. rate up, if UPRate's quality is very good - if ((pAd->DrsCounters.TxQuality[CurrRate] >= DRS_TX_QUALITY_WORST_BOUND) && - (CurrRate != DownRate)) - { -#ifdef WIFI_TEST - if (DownRate <= RATE_2) break; // never goes lower than 5.5 Mbps TX rate -#endif - pAd->PortCfg.TxRate = DownRate; - } - else if ((pAd->DrsCounters.TxQuality[CurrRate] <= 0) && - (pAd->DrsCounters.TxQuality[UpRate] <=0) && - (CurrRate != UpRate)) - { - pAd->PortCfg.TxRate = UpRate; - } - - }while (FALSE); - - - // if rate-up happen, clear all bad history of all TX rates - if (pAd->PortCfg.TxRate > CurrRate) - { - DBGPRINT(RT_DEBUG_TRACE,"DRS: ++TX rate from %d to %d Mbps\n", RateIdToMbps[CurrRate],RateIdToMbps[pAd->PortCfg.TxRate]); - pAd->DrsCounters.CurrTxRateStableTime = 0; - pAd->DrsCounters.TxRateUpPenalty = 0; - pAd->DrsCounters.LastSecTxRateChangeAction = 1; // rate UP - memset(pAd->DrsCounters.TxQuality, 0, MAX_LEN_OF_SUPPORTED_RATES); - memset(pAd->DrsCounters.PER, 0, MAX_LEN_OF_SUPPORTED_RATES); - } - // if rate-down happen, only clear DownRate's bad history - else if (pAd->PortCfg.TxRate < CurrRate) - { - DBGPRINT(RT_DEBUG_TRACE,"DRS: --TX rate from %d to %d Mbps\n", RateIdToMbps[CurrRate],RateIdToMbps[pAd->PortCfg.TxRate]); - // shorter stable time require more penalty in next rate UP criteria - if (pAd->DrsCounters.CurrTxRateStableTime < 4) // less then 4 sec - pAd->DrsCounters.TxRateUpPenalty = DRS_PENALTY; // add 8 sec penalty - else if (pAd->DrsCounters.CurrTxRateStableTime < 8) // less then 8 sec - pAd->DrsCounters.TxRateUpPenalty = 2; // add 2 sec penalty - else // >= 8 sec - pAd->DrsCounters.TxRateUpPenalty = 0; // no penalty - - pAd->DrsCounters.CurrTxRateStableTime = 0; - pAd->DrsCounters.LastSecTxRateChangeAction = 2; // rate DOWN - pAd->DrsCounters.TxQuality[pAd->PortCfg.TxRate] = 0; - pAd->DrsCounters.PER[pAd->PortCfg.TxRate] = 0; - } - else - pAd->DrsCounters.LastSecTxRateChangeAction = 0; // rate no change - - // reset all OneSecxxx counters - pAd->DrsCounters.OneSecTxFailCount = 0; - pAd->DrsCounters.OneSecTxOkCount = 0; - pAd->DrsCounters.OneSecTxRetryOkCount = 0; -} - -/* - ========================================================================== - Description: - This routine is executed periodically inside MlmePeriodicExec() after - association with an AP. - It checks if PortCfg.Psm is consistent with user policy (recorded in - PortCfg.WindowsPowerMode). If not, enforce user policy. However, - there're some conditions to consider: - 1. we don't support power-saving in ADHOC mode, so Psm=PWR_ACTIVE all - the time when Mibss==TRUE - 2. When Massoc==TRUE (INFRA mode), Psm should not be switch to PWR_SAVE - if outgoing traffic available in TxRing or PrioRing. - Output: - 1. change pAd->PortCfg.Psm to PWR_SAVE or leave it untouched - ========================================================================== - */ -VOID MlmeCheckForPsmChange( - IN PRTMP_ADAPTER pAd, - IN ULONG Now32) -{ - ULONG PowerMode; - // condition - - // 1. Psm maybe ON only happen in INFRASTRUCTURE mode - // 2. user wants either MAX_PSP or FAST_PSP - // 3. but current psm is not in PWR_SAVE - // 4. CNTL state machine is not doing SCANning - // 5. no TX SUCCESS event for the past period - PowerMode = pAd->PortCfg.WindowsPowerMode; - - if (INFRA_ON(pAd) && - (PowerMode != Ndis802_11PowerModeCAM) && - (pAd->PortCfg.Psm == PWR_ACTIVE) && - (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE) && - (pAd->WlanCounters.TransmittedFragmentCount.vv.LowPart == pAd->Mlme.PrevTxCnt)) - { - MlmeSetPsmBit(pAd, PWR_SAVE); - EnqueueNullFrame(pAd, pAd->PortCfg.TxRate); - } - - // latch current count for next-time comparison - pAd->Mlme.PrevTxCnt = pAd->WlanCounters.TransmittedFragmentCount.vv.LowPart; - -} - -VOID MlmeSetPsmBit( - IN PRTMP_ADAPTER pAd, - IN USHORT psm) -{ - TXCSR7_STRUC txcsr7; - - txcsr7.word = 0; - pAd->PortCfg.Psm = psm; - - DBGPRINT(RT_DEBUG_TRACE, "MMCHK - change PSM bit to %d <<<\n", psm); - if (psm == PWR_SAVE) - { - txcsr7.field.ARPowerManage = 1; - RTMP_IO_WRITE32(pAd, TXCSR7, txcsr7.word); - } - else - { - txcsr7.field.ARPowerManage = 0; - RTMP_IO_WRITE32(pAd, TXCSR7, txcsr7.word); - } -} - -VOID MlmeSetTxPreamble( - IN PRTMP_ADAPTER pAd, - IN USHORT TxPreamble) -{ - ULONG Plcp1MCsr = 0x00700400; // 0x13c, ACK/CTS PLCP at 1 Mbps - ULONG Plcp2MCsr = 0x00380401; // 0x140, ACK/CTS PLCP at 2 Mbps - ULONG Plcp5MCsr = 0x00150402; // 0x144, ACK/CTS PLCP at 5.5 Mbps - ULONG Plcp11MCsr = 0x000b8403; // 0x148, ACK/CTS PLCP at 11 Mbps - - if (TxPreamble == Rt802_11PreambleShort) - { - DBGPRINT(RT_DEBUG_TRACE, "MlmeSetTxPreamble (= SHORT PREAMBLE)\n"); -// Plcp1MCsr |= 0x00000008; // 1Mbps should always use long preamble - Plcp2MCsr |= 0x00000008; - Plcp5MCsr |= 0x00000008; - Plcp11MCsr |= 0x00000008; - pAd->PortCfg.TxPreambleInUsed = Rt802_11PreambleShort; - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "MlmeSetTxPreamble (= LONG PREAMBLE)\n"); - pAd->PortCfg.TxPreambleInUsed = Rt802_11PreambleLong; - } - - RTMP_IO_WRITE32(pAd, PLCP1MCSR, Plcp1MCsr); - RTMP_IO_WRITE32(pAd, PLCP2MCSR, Plcp2MCsr); - RTMP_IO_WRITE32(pAd, PLCP5MCSR, Plcp5MCsr); - RTMP_IO_WRITE32(pAd, PLCP11MCSR, Plcp11MCsr); -} - -VOID MlmeUpdateTxRates( - IN PRTMP_ADAPTER pAd, - IN BOOLEAN bLinkUp) -{ - int i, num; - UCHAR Rate, MaxDesire = RATE_1, MaxSupport = RATE_1; - ULONG BasicRateBitmap = 0; - UCHAR CurrBasicRate = RATE_1; - - // find max desired rate - num = 0; - for (i=0; iPortCfg.DesiredRates[i] & 0x7f) - { - case 2: Rate = RATE_1; num++; break; - case 4: Rate = RATE_2; num++; break; - case 11: Rate = RATE_5_5; num++; break; - case 22: Rate = RATE_11; num++; break; - case 12: Rate = RATE_6; num++; break; - case 18: Rate = RATE_9; num++; break; - case 24: Rate = RATE_12; num++; break; - case 36: Rate = RATE_18; num++; break; - case 48: Rate = RATE_24; num++; break; - case 72: Rate = RATE_36; num++; break; - case 96: Rate = RATE_48; num++; break; - case 108: Rate = RATE_54; num++; break; - default: Rate = RATE_1; break; - } - if (MaxDesire < Rate) MaxDesire = Rate; - } - - // 2003-12-10 802.11g WIFI spec disallow OFDM rates in 802.11g ADHOC mode - if ((pAd->PortCfg.BssType == BSS_INDEP) && - (pAd->PortCfg.PhyMode == PHY_11BG_MIXED) && - (pAd->PortCfg.AdhocMode == 0) && - (MaxDesire > RATE_11)) - MaxDesire = RATE_11; - - pAd->PortCfg.MaxDesiredRate = MaxDesire; - - // Auto rate switching is enabled only if more than one DESIRED RATES are - // specified; otherwise disabled - if (num <= 1) - pAd->PortCfg.EnableAutoRateSwitching = FALSE; - else - pAd->PortCfg.EnableAutoRateSwitching = TRUE; - - // find max supported rate - for (i=0; iPortCfg.SupportedRatesLen; i++) - { - switch (pAd->PortCfg.SupportedRates[i] & 0x7f) - { - case 2: Rate = RATE_1; - if (pAd->PortCfg.SupportedRates[i] & 0x80) - BasicRateBitmap |= 0x0001; - break; - case 4: Rate = RATE_2; - if (pAd->PortCfg.SupportedRates[i] & 0x80) - BasicRateBitmap |= 0x0002; - break; - case 11: - Rate = RATE_5_5; - if (pAd->PortCfg.SupportedRates[i] & 0x80) - BasicRateBitmap |= 0x0004; - break; - case 22: - Rate = RATE_11; - if (pAd->PortCfg.SupportedRates[i] & 0x80) - BasicRateBitmap |= 0x0008; - break; - case 12: - Rate = RATE_6; -// if (pAd->PortCfg.SupportedRates[i] & 0x80) - BasicRateBitmap |= 0x0010; - break; - case 18: - Rate = RATE_9; - if (pAd->PortCfg.SupportedRates[i] & 0x80) - BasicRateBitmap |= 0x0020; - break; - case 24: - Rate = RATE_12; -// if (pAd->PortCfg.SupportedRates[i] & 0x80) - BasicRateBitmap |= 0x0040; - break; - case 36: - Rate = RATE_18; - if (pAd->PortCfg.SupportedRates[i] & 0x80) - BasicRateBitmap |= 0x0080; - break; - case 48: - Rate = RATE_24; -// if (pAd->PortCfg.SupportedRates[i] & 0x80) - BasicRateBitmap |= 0x0100; - break; - case 72: - Rate = RATE_36; - if (pAd->PortCfg.SupportedRates[i] & 0x80) - BasicRateBitmap |= 0x0200; - break; - case 96: - Rate = RATE_48; - if (pAd->PortCfg.SupportedRates[i] & 0x80) - BasicRateBitmap |= 0x0400; - break; - case 108: - Rate = RATE_54; - if (pAd->PortCfg.SupportedRates[i] & 0x80) - BasicRateBitmap |= 0x0800; - break; - default: - Rate = RATE_1; - break; - } - if (MaxSupport < Rate) MaxSupport = Rate; - } - RTMP_IO_WRITE32(pAd, ARCSR1, BasicRateBitmap); - - // calculate the expected ACK rate for each TX rate. This info is used to caculate - // the DURATION field of outgoing unicast DATA/MGMT frame - for (i=0; iPortCfg.ExpectedACKRate[i] = CurrBasicRate; - DBGPRINT(RT_DEBUG_INFO,"Expected ACK rate[%d] = %d Mbps\n", RateIdToMbps[i], RateIdToMbps[CurrBasicRate]); - } - - // max tx rate = min {max desire rate, max supported rate} - if (MaxSupport < MaxDesire) - pAd->PortCfg.MaxTxRate = MaxSupport; - else - pAd->PortCfg.MaxTxRate = MaxDesire; - - // 2003-07-31 john - 2500 doesn't have good sensitivity at high OFDM rates. to increase the success - // ratio of initial DHCP packet exchange, TX rate starts from a lower rate depending - // on average RSSI - // 1. RSSI >= -70db, start at 54 Mbps (short distance) - // 2. -70 > RSSI >= -75, start at 24 Mbps (mid distance) - // 3. -75 > RSSI, start at 11 Mbps (long distance) - if (pAd->PortCfg.EnableAutoRateSwitching) - { - if (pAd->PortCfg.Channel > 14) - pAd->PortCfg.TxRate = RATE_6; // 802.11a - else - { - short dbm = pAd->PortCfg.AvgRssi - pAd->PortCfg.RssiToDbm; - if (bLinkUp == TRUE && pAd->PortCfg.MaxTxRate >= RATE_24) - pAd->PortCfg.TxRate = RATE_24; - else - pAd->PortCfg.TxRate = pAd->PortCfg.MaxTxRate; - if (dbm < -75) - pAd->PortCfg.TxRate = RATE_11; - else if ((dbm < -70) && (pAd->PortCfg.TxRate > RATE_24)) - pAd->PortCfg.TxRate = RATE_24; - DBGPRINT(RT_DEBUG_TRACE, " MlmeUpdateTxRates (Rssi=%d, init TX rate = %d Mbps)\n", dbm, RateIdToMbps[pAd->PortCfg.TxRate]); - } - } - else - pAd->PortCfg.TxRate = pAd->PortCfg.MaxTxRate; - - switch (pAd->PortCfg.PhyMode) { - case PHY_11BG_MIXED: - case PHY_11B: - pAd->PortCfg.MlmeRate = RATE_2; -#ifdef WIFI_TEST - pAd->PortCfg.RtsRate = RATE_11; -#else - pAd->PortCfg.RtsRate = RATE_2; -#endif - break; - case PHY_11A: - pAd->PortCfg.MlmeRate = RATE_6; - pAd->PortCfg.RtsRate = RATE_6; - break; - case PHY_11ABG_MIXED: - if (pAd->PortCfg.Channel <= 14) - { - pAd->PortCfg.MlmeRate = RATE_2; - pAd->PortCfg.RtsRate = RATE_2; - } - else - { - pAd->PortCfg.MlmeRate = RATE_6; - pAd->PortCfg.RtsRate = RATE_6; - } - break; - default: // error - pAd->PortCfg.MlmeRate = RATE_2; - pAd->PortCfg.RtsRate = RATE_2; - break; - } - - DBGPRINT(RT_DEBUG_TRACE, " MlmeUpdateTxRates (MaxDesire=%d, MaxSupport=%d, MaxTxRate=%d, Rate Switching =%d)\n", - RateIdToMbps[MaxDesire], RateIdToMbps[MaxSupport], RateIdToMbps[pAd->PortCfg.MaxTxRate], pAd->PortCfg.EnableAutoRateSwitching); - DBGPRINT(RT_DEBUG_TRACE, " MlmeUpdateTxRates (TxRate=%d, RtsRate=%d, BasicRateBitmap=0x%04x)\n", - RateIdToMbps[pAd->PortCfg.TxRate], RateIdToMbps[pAd->PortCfg.RtsRate], BasicRateBitmap); -} - -VOID MlmeRadioOff( - IN PRTMP_ADAPTER pAd) -{ - // Set Radio off flag - RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF); - - // Link down first if any association exists - if (INFRA_ON(pAd) || ADHOC_ON(pAd)) - LinkDown(pAd); - - // Abort Tx - RTMP_IO_WRITE32(pAd, TXCSR0, 0x08); - // Disable Rx - RTMP_IO_WRITE32(pAd, RXCSR0, 0x01); - // Turn off radio - RTMP_IO_WRITE32(pAd, PWRCSR0, 0x00000000); - - if (pAd->PortCfg.LedMode == LED_MODE_ASUS) - { - ASIC_LED_ACT_OFF(pAd); - } - - // Clean up old bss table - BssTableInit(&pAd->PortCfg.BssTab); -} - -VOID MlmeRadioOn( - IN PRTMP_ADAPTER pAd) -{ - // Turn on radio - RTMP_IO_WRITE32(pAd, PWRCSR0, 0x3f3b3100); - - // Abort Tx - RTMP_IO_WRITE32(pAd, TXCSR0, 0x08); - // Disable Rx - RTMP_IO_WRITE32(pAd, RXCSR0, 0x01); - - RTMPRingCleanUp(pAd, TX_RING); - RTMPRingCleanUp(pAd, PRIO_RING); - RTMPRingCleanUp(pAd, RX_RING); - - NICResetFromError(pAd); - // Clear Radio off flag - RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF); - - if (pAd->PortCfg.LedMode == LED_MODE_ASUS) - { - RTMP_IO_WRITE32(pAd, LEDCSR, 0x0002461E); - } -} - -// =========================================================================================== -// bss_table.c -// =========================================================================================== - - -/*! \brief initialize BSS table - * \param p_tab pointer to the table - * \return none - * \pre - * \post - */ -VOID BssTableInit( - IN BSS_TABLE *Tab) -{ - int i; - - Tab->BssNr = 0; - for (i = 0; i < MAX_LEN_OF_BSS_TABLE; i++) - { - memset(&Tab->BssEntry[i], 0, sizeof(BSS_ENTRY)); - } -} - -/*! \brief search the BSS table by SSID - * \param p_tab pointer to the bss table - * \param ssid SSID string - * \return index of the table, BSS_NOT_FOUND if not in the table - * \pre - * \post - * \note search by sequential search - */ -ULONG BssTableSearch( - IN BSS_TABLE *Tab, - IN PMACADDR Bssid) -{ - UCHAR i; - - for (i = 0; i < Tab->BssNr; i++) - { - //printf("comparing %s and %s\n", p_tab->bss[i].ssid, ssid); - if (MAC_ADDR_EQUAL(&(Tab->BssEntry[i].Bssid), Bssid)) - { - return i; - } - } - return (ULONG)BSS_NOT_FOUND; -} - -VOID BssTableDeleteEntry( - IN OUT BSS_TABLE *Tab, - IN PMACADDR Bssid) -{ - UCHAR i, j; - - for (i = 0; i < Tab->BssNr; i++) - { - //printf("comparing %s and %s\n", p_tab->bss[i].ssid, ssid); - if (MAC_ADDR_EQUAL(&(Tab->BssEntry[i].Bssid), Bssid)) - { - for (j = i; j < Tab->BssNr - 1; j++) - { - memcpy(&(Tab->BssEntry[j]), &(Tab->BssEntry[j + 1]), sizeof(BSS_ENTRY)); - } - Tab->BssNr -= 1; - return; - } - } -} - -UCHAR ZeroSsid[32] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; -/*! \brief - * \param - * \return - * \pre - * \post - */ -VOID BssEntrySet( - IN PRTMP_ADAPTER pAd, - OUT BSS_ENTRY *pBss, - IN MACADDR *pBssid, - IN CHAR Ssid[], - IN UCHAR SsidLen, - IN UCHAR BssType, - IN USHORT BeaconPeriod, - IN BOOLEAN CfExist, - IN CF_PARM *pCfParm, - IN USHORT AtimWin, - IN USHORT CapabilityInfo, - IN UCHAR Rates[], - IN UCHAR RatesLen, - IN BOOLEAN ExtendedRateIeExist, - IN UCHAR Channel, - IN UCHAR Rssi, - IN LARGE_INTEGER TimeStamp, - IN PNDIS_802_11_VARIABLE_IEs pVIE) -{ - COPY_MAC_ADDR(&pBss->Bssid, pBssid); - // Default Hidden SSID to be TRUE, it will be turned to FALSE after coping SSID - pBss->Hidden = 1; - if (SsidLen > 0) - { - // For hidden SSID AP, it might send beacon with SSID len equal to 0 - // Or send beacon /probe response with SSID len matching real SSID length, - // but SSID is all zero. such as "00-00-00-00" with length 4. - // We have to prevent this case overwrite correct table - if (NdisEqualMemory(Ssid, ZeroSsid, SsidLen) == 0) - { - memcpy(pBss->Ssid, Ssid, SsidLen); - pBss->SsidLen = SsidLen; - pBss->Hidden = 0; - } - } - pBss->BssType = BssType; - pBss->BeaconPeriod = BeaconPeriod; - if (BssType == BSS_INFRA) - { - if (CfExist) - { - pBss->CfpCount = pCfParm->CfpCount; - pBss->CfpPeriod = pCfParm->CfpPeriod; - pBss->CfpMaxDuration = pCfParm->CfpMaxDuration; - pBss->CfpDurRemaining = pCfParm->CfpDurRemaining; - } - } - else - { - pBss->AtimWin = AtimWin; - } - - pBss->CapabilityInfo = CapabilityInfo; - // The privacy bit indicate security is ON, it maight be WEP, TKIP or AES - // Combine with AuthMode, they will decide the connection methods. - pBss->Privacy = CAP_IS_PRIVACY_ON(pBss->CapabilityInfo); - memcpy(pBss->Rates, Rates, RatesLen); - pBss->RatesLen = RatesLen; - pBss->ExtendedRateIeExist = ExtendedRateIeExist; - pBss->Channel = Channel; - pBss->Rssi = Rssi; - - // New for microsoft Fixed IEs - memcpy(pBss->FixIEs.Timestamp, &TimeStamp, 8); - pBss->FixIEs.BeaconInterval = BeaconPeriod; - pBss->FixIEs.Capabilities = CapabilityInfo; - - // New for microsoft Variable IEs - if (pVIE->Length != 0) - { - pBss->VarIELen = pVIE->Length + 2; - memcpy(pBss->VarIEs, pVIE, pBss->VarIELen); - pBss->WepStatus = BssCipherParse(pBss->VarIEs); - } - else - { - pBss->VarIELen = 0; - // No SSN ID, if security is on, this is WEP algorithm - if (pBss->Privacy) - pBss->WepStatus = Ndis802_11WEPEnabled; - // No SSN ID, security is also off. - else - pBss->WepStatus = Ndis802_11WEPDisabled; - } -} - -/*! - * \brief insert an entry into the bss table - * \param p_tab The BSS table - * \param Bssid BSSID - * \param ssid SSID - * \param ssid_len Length of SSID - * \param bss_type - * \param beacon_period - * \param timestamp - * \param p_cf - * \param atim_win - * \param cap - * \param rates - * \param rates_len - * \param channel_idx - * \return none - * \pre - * \post - * \note If SSID is identical, the old entry will be replaced by the new one - */ -ULONG BssTableSetEntry( - IN PRTMP_ADAPTER pAd, - OUT BSS_TABLE *Tab, - IN MACADDR *Bssid, - IN CHAR Ssid[], - IN UCHAR SsidLen, - IN UCHAR BssType, - IN USHORT BeaconPeriod, - IN BOOLEAN CfExist, - IN CF_PARM *CfParm, - IN USHORT AtimWin, - IN USHORT CapabilityInfo, - IN UCHAR Rates[], - IN UCHAR RatesLen, - IN BOOLEAN ExtendedRateIeExist, - IN UCHAR ChannelNo, - IN UCHAR Rssi, - IN LARGE_INTEGER TimeStamp, - IN PNDIS_802_11_VARIABLE_IEs pVIE) -{ - ULONG Idx; - - Idx = BssTableSearch(Tab, Bssid); - if (Idx == BSS_NOT_FOUND) - { - if (Tab->BssNr >= MAX_LEN_OF_BSS_TABLE) - return BSS_NOT_FOUND; - - Idx = Tab->BssNr; - BssEntrySet(pAd, &Tab->BssEntry[Idx], Bssid, Ssid, SsidLen, BssType, BeaconPeriod, - CfExist, CfParm, AtimWin, CapabilityInfo, Rates, RatesLen, ExtendedRateIeExist, - ChannelNo, Rssi, TimeStamp, pVIE); - Tab->BssNr++; - } - else - { - BssEntrySet(pAd, &Tab->BssEntry[Idx], Bssid, Ssid, SsidLen, BssType, BeaconPeriod, - CfExist, CfParm, AtimWin, CapabilityInfo, Rates, RatesLen, ExtendedRateIeExist, - ChannelNo, Rssi, TimeStamp, pVIE); - } - - return Idx; -} - -VOID BssTableSsidSort( - IN PRTMP_ADAPTER pAd, - OUT BSS_TABLE *OutTab, - IN CHAR Ssid[], - IN UCHAR SsidLen) -{ - INT i; - BssTableInit(OutTab); - - for (i = 0; i < pAd->PortCfg.BssTab.BssNr; i++) - { - BSS_ENTRY *pInBss = &pAd->PortCfg.BssTab.BssEntry[i]; - - if ((pInBss->BssType == pAd->PortCfg.BssType) && - ((pInBss->SsidLen==SsidLen) && RTMPEqualMemory(pInBss->Ssid, Ssid, (ULONG) SsidLen))) - { - BSS_ENTRY *pOutBss = &OutTab->BssEntry[OutTab->BssNr]; - - // Bss Type matched, SSID matched. - // We will check wepstatus for qualification Bss - if (pAd->PortCfg.WepStatus != pInBss->WepStatus) - continue; - - // Since the AP is using hidden SSID, and we are trying to connect to ANY - // It definitely will fail. So, skip it. - // CCX also require not even try to connect it!! - if (SsidLen == 0) - continue; - - // copy matching BSS from InTab to OutTab - memcpy(pOutBss, pInBss, sizeof(BSS_ENTRY)); - - OutTab->BssNr++; - } - else if ((pInBss->BssType == pAd->PortCfg.BssType) && (SsidLen == 0)) - { - BSS_ENTRY *pOutBss = &OutTab->BssEntry[OutTab->BssNr]; - - // Bss Type matched, SSID matched. - // We will check wepstatus for qualification Bss - if (pAd->PortCfg.WepStatus != pInBss->WepStatus) - continue; - - // copy matching BSS from InTab to OutTab - memcpy(pOutBss, pInBss, sizeof(BSS_ENTRY)); - - OutTab->BssNr++; - } -#if 0 - else if ((pInBss->BssType == pAd->PortCfg.BssType) && (pInBss->SsidLen == 0)) - { - // Add for hidden SSID. But we have to verify the security suite too. - BSS_ENTRY *pOutBss = &OutTab->BssEntry[OutTab->BssNr]; - - // Bss Type matched, SSID matched. - // We will check wepstatus for qualification Bss - if (pAd->PortCfg.WepStatus != pInBss->WepStatus) - continue; - - // copy matching BSS from InTab to OutTab - memcpy(pOutBss, pInBss, sizeof(BSS_ENTRY)); - - OutTab->BssNr++; - } -#endif - if (OutTab->BssNr >= MAX_LEN_OF_BSS_TABLE) - break; - - } - - BssTableSortByRssi(OutTab); -} - -VOID BssTableSortByRssi( - IN OUT BSS_TABLE *OutTab) -{ - INT i, j; - BSS_ENTRY TmpBss; - - for (i = 0; i < OutTab->BssNr - 1; i++) - { - for (j = i+1; j < OutTab->BssNr; j++) - { - if (OutTab->BssEntry[j].Rssi > OutTab->BssEntry[i].Rssi) - { - memcpy(&TmpBss, &OutTab->BssEntry[j], sizeof(BSS_ENTRY)); - memcpy(&OutTab->BssEntry[j], &OutTab->BssEntry[i], sizeof(BSS_ENTRY)); - memcpy(&OutTab->BssEntry[i], &TmpBss, sizeof(BSS_ENTRY)); - } - } - } -} - -NDIS_802_11_WEP_STATUS BssCipherParse( - IN PUCHAR pCipher) -{ - PBEACON_EID_STRUCT pEid; - PUCHAR pTmp; - - pEid = (PBEACON_EID_STRUCT) pCipher; - - // Double check sanity information, although it should be done at peer beacon sanity check already. - if (pEid->Eid != IE_WPA) - return (Ndis802_11WEPDisabled); - - // Double check Var IE length, it must be no less than 0x16 - if (pEid->Len < 0x16) - return (Ndis802_11WEPDisabled); - - // Skip OUI, version, and multicast suite - // This part should be improved in the future when AP supported multiple cipher suite. - // For now, it's OK since almost all APs have fixed cipher suite supported. - pTmp = (PUCHAR) pEid->Octet; - pTmp += 9; - - if (*pTmp == 4) // AES - return (Ndis802_11Encryption3Enabled); - else if (*pTmp == 2) // TKIP - return (Ndis802_11Encryption2Enabled); - - return (Ndis802_11WEPDisabled); -} - -// =========================================================================================== -// mac_table.c -// =========================================================================================== - -/*! \brief generates a random mac address value for IBSS BSSID - * \param Addr the bssid location - * \return none - * \pre - * \post - */ -VOID MacAddrRandomBssid( - IN PRTMP_ADAPTER pAd, - OUT MACADDR *Addr) -{ - INT i; - - for (i = 0; i < ETH_ALEN; i++) - { - Addr->Octet[i] = RandomByte(pAd); - } - - Addr->Octet[0] = (Addr->Octet[0] & 0xfe) | 0x02; // the first 2 bits must be 01xxxxxxxx -} - -/*! \brief init the management mac frame header - * \param p_hdr mac header - * \param subtype subtype of the frame - * \param p_ds destination address, don't care if it is a broadcast address - * \return none - * \pre the station has the following information in the pAd->PortCfg - * - bssid - * - station address - * \post - * \note this function initializes the following field - */ -VOID MgtMacHeaderInit( - IN PRTMP_ADAPTER pAd, - IN OUT PMACHDR Hdr, - IN UCHAR Subtype, - IN UCHAR ToDs, - IN PMACADDR Ds, - IN PMACADDR Bssid) -{ - memset(Hdr, 0, sizeof(MACHDR)); - Hdr->Type = BTYPE_MGMT; - Hdr->SubType = Subtype; - Hdr->Tods = ToDs; - COPY_MAC_ADDR(&Hdr->Addr1, Ds); - COPY_MAC_ADDR(&Hdr->Addr2, &pAd->CurrentAddress); - COPY_MAC_ADDR(&Hdr->Addr3, Bssid); -} - -// =========================================================================================== -// mem_mgmt.c -// =========================================================================================== - -/*!*************************************************************************** - * This routine build an outgoing frame, and fill all information specified - * in argument list to the frame body. The actual frame size is the summation - * of all arguments. - * input params: - * Buffer - pointer to a pre-allocated memory segment - * args - a list of pairs. - * NOTE NOTE NOTE!!!! the last argument must be NULL, otherwise this - * function will FAIL!!! - * return: - * Size of the buffer - * usage: - * MakeOutgoingFrame(Buffer, output_length, 2, &fc, 2, &dur, 6, p_addr1, 6,p_addr2, END_OF_ARGS); - ****************************************************************************/ -ULONG MakeOutgoingFrame( - OUT CHAR *Buffer, - OUT ULONG *FrameLen, ...) -{ - CHAR *p; - int leng; - ULONG TotLeng; - va_list Args; - - // calculates the total length - TotLeng = 0; - va_start(Args, FrameLen); - do - { - leng = va_arg(Args, int); - if (leng == END_OF_ARGS) - { - break; - } - p = va_arg(Args, PVOID); - memcpy(&Buffer[TotLeng], p, leng); - TotLeng = TotLeng + leng; - } while(TRUE); - - va_end(Args); /* clean up */ - *FrameLen = TotLeng; - return TotLeng; -} - -// =========================================================================================== -// mlme_queue.c -// =========================================================================================== - -/*! \brief Initialize The MLME Queue, used by MLME Functions - * \param *Queue The MLME Queue - * \return Always Return NDIS_STATE_SUCCESS in this implementation - * \pre - * \post - * \note Because this is done only once (at the init stage), no need to be locked - */ -NDIS_STATUS MlmeQueueInit( - IN MLME_QUEUE *Queue) -{ - INT i; - - spin_lock_init(&Queue->Lock); - - Queue->Num = 0; - Queue->Head = 0; - Queue->Tail = 0; - - for (i = 0; i < MAX_LEN_OF_MLME_QUEUE; i++) - { - Queue->Entry[i].Occupied = FALSE; - Queue->Entry[i].MsgLen = 0; - memset(Queue->Entry[i].Msg, 0, MAX_LEN_OF_MLME_BUFFER); - } - - return NDIS_STATUS_SUCCESS; -} - - -/*! \brief Enqueue a message for other threads, if they want to send messages to MLME thread - * \param *Queue The MLME Queue - * \param Machine The State Machine Id - * \param MsgType The Message Type - * \param MsgLen The Message length - * \param *Msg The message pointer - * \return TRUE if enqueue is successful, FALSE if the queue is full - * \pre - * \post - * \note The message has to be initialized - */ -BOOLEAN MlmeEnqueue( - OUT MLME_QUEUE *Queue, - IN ULONG Machine, - IN ULONG MsgType, - IN ULONG MsgLen, - IN VOID *Msg) -{ - INT Tail; - - // First check the size, it MUST not exceed the mlme queue size - if (MsgLen > MAX_LEN_OF_MLME_BUFFER) - { - DBGPRINT(RT_DEBUG_ERROR, "MlmeEnqueueForRecv mlme frame too large, size = %d \n", MsgLen); - return FALSE; - } - - if (MlmeQueueFull(Queue)) - { - printk(KERN_ERR DRV_NAME "MlmeEnqueue full, msg dropped and may corrupt MLME\n"); - return FALSE; - } - - spin_lock(&(Queue->Lock)); - Tail = Queue->Tail; - Queue->Tail++; - Queue->Num++; - if (Queue->Tail == MAX_LEN_OF_MLME_QUEUE) - { - Queue->Tail = 0; - } - DBGPRINT(RT_DEBUG_INFO, "MlmeEnqueue, num=%d\n",Queue->Num); - - Queue->Entry[Tail].Occupied = TRUE; - Queue->Entry[Tail].Machine = Machine; - Queue->Entry[Tail].MsgType = MsgType; - Queue->Entry[Tail].MsgLen = MsgLen; - memcpy(Queue->Entry[Tail].Msg, Msg, MsgLen); - spin_unlock(&(Queue->Lock)); - return TRUE; -} - -/*! \brief This function is used when Recv gets a MLME message - * \param *Queue The MLME Queue - * \param TimeStampHigh The upper 32 bit of timestamp - * \param TimeStampLow The lower 32 bit of timestamp - * \param Rssi The receiving RSSI strength - * \param MsgLen The length of the message - * \param *Msg The message pointer - * \return TRUE if everything ok, FALSE otherwise (like Queue Full) - * \pre - * \post - */ -BOOLEAN MlmeEnqueueForRecv( - IN PRTMP_ADAPTER pAd, - OUT MLME_QUEUE *Queue, - IN ULONG TimeStampHigh, - IN ULONG TimeStampLow, - IN UCHAR Rssi, - IN ULONG MsgLen, - IN VOID *Msg) -{ - INT Tail, Machine; - MACFRAME *Fr = (MACFRAME *)Msg; - ULONG MsgType; - - // First check the size, it MUST not exceed the mlme queue size - if (MsgLen > MAX_LEN_OF_MLME_BUFFER) - { - DBGPRINT(RT_DEBUG_ERROR, "MlmeEnqueueForRecv mlme frame too large, size = %d \n", MsgLen); - return FALSE; - } - - if (MlmeQueueFull(Queue)) - { - DBGPRINT(RT_DEBUG_ERROR, "MlmeEnqueueForRecv (queue full error) \n"); - return FALSE; - } - - if (!MsgTypeSubst(Fr, &Machine, &MsgType)) - { - DBGPRINT(RT_DEBUG_ERROR, "MlmeEnqueueForRecv (drop mgmt->subtype=%d)\n",Fr->Hdr.SubType); - return FALSE; - } - - // OK, we got all the informations, it is time to put things into queue - spin_lock(&(Queue->Lock)); - Tail = Queue->Tail; - Queue->Tail++; - Queue->Num++; - if (Queue->Tail == MAX_LEN_OF_MLME_QUEUE) - { - Queue->Tail = 0; - } - - DBGPRINT(RT_DEBUG_INFO, "MlmeEnqueueForRecv, num=%d\n",Queue->Num); - - Queue->Entry[Tail].Occupied = TRUE; - Queue->Entry[Tail].Machine = Machine; - Queue->Entry[Tail].MsgType = MsgType; - Queue->Entry[Tail].MsgLen = MsgLen; - Queue->Entry[Tail].TimeStamp.vv.LowPart = TimeStampLow; - Queue->Entry[Tail].TimeStamp.vv.HighPart = TimeStampHigh; - Queue->Entry[Tail].Rssi = Rssi; - memcpy(Queue->Entry[Tail].Msg, Msg, MsgLen); - spin_unlock(&(Queue->Lock)); - - MlmeHandler(pAd); - - return TRUE; -} - -/*! \brief Dequeue a message from the MLME Queue - * \param *Queue The MLME Queue - * \param *Elem The message dequeued from MLME Queue - * \return TRUE if the Elem contains something, FALSE otherwise - * \pre - * \post - */ -BOOLEAN MlmeDequeue( - IN MLME_QUEUE *Queue, - OUT MLME_QUEUE_ELEM **Elem) -{ - spin_lock(&(Queue->Lock)); - *Elem = &(Queue->Entry[Queue->Head]); - Queue->Num--; - Queue->Head++; - if (Queue->Head == MAX_LEN_OF_MLME_QUEUE) - { - Queue->Head = 0; - } - spin_unlock(&(Queue->Lock)); - DBGPRINT(RT_DEBUG_INFO, "MlmeDequeue, num=%d\n",Queue->Num); - - return TRUE; -} - -VOID MlmeRestartStateMachine( - IN PRTMP_ADAPTER pAd) -{ - MLME_QUEUE_ELEM *Elem = NULL; - - if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_MLME_INITIALIZED)){ - DBGPRINT(RT_DEBUG_INFO, "MLME not yet initialized...\n"); - if(MlmeInit(pAd)) - DBGPRINT(RT_DEBUG_ERROR, "Failure to initialize mlme.\n"); - // Continue the reset procedure... - } - - spin_lock(&pAd->Mlme.TaskLock); - if(pAd->Mlme.Running) - { - spin_unlock(&pAd->Mlme.TaskLock); - return; - } - else - { - pAd->Mlme.Running = TRUE; - } - spin_unlock(&pAd->Mlme.TaskLock); - - // Remove all Mlme queues elements - while (!MlmeQueueEmpty(&pAd->Mlme.Queue)) - { - //From message type, determine which state machine I should drive - if (MlmeDequeue(&pAd->Mlme.Queue, &Elem)) - { - // free MLME element - Elem->Occupied = FALSE; - Elem->MsgLen = 0; - - } - else { - DBGPRINT(RT_DEBUG_ERROR, "ERROR: empty Elem in MlmeQueue\n"); - } - } - - // Cancel all timer events - // Be careful to cancel new added timer - RTMPCancelTimer(&pAd->Mlme.AssocAux.AssocTimer); - RTMPCancelTimer(&pAd->Mlme.AssocAux.ReassocTimer); - RTMPCancelTimer(&pAd->Mlme.AssocAux.DisassocTimer); - RTMPCancelTimer(&pAd->Mlme.AuthAux.AuthTimer); - RTMPCancelTimer(&pAd->Mlme.AuthRspAux.AuthRspTimer); - RTMPCancelTimer(&pAd->Mlme.SyncAux.BeaconTimer); - RTMPCancelTimer(&pAd->Mlme.SyncAux.ScanTimer); - RTMPCancelTimer(&pAd->PortCfg.RfTuningTimer); - - // Change back to original channel in case of doing scan - AsicSwitchChannel(pAd, pAd->PortCfg.Channel); - AsicLockChannel(pAd, pAd->PortCfg.Channel); - - // Resume MSDU which is turned off durning scan - RTMPResumeMsduTransmission(pAd); - - // Set all state machines back IDLE - pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; - pAd->Mlme.AuthRspMachine.CurrState = AUTH_RSP_IDLE; - pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; - - // Remove running state - spin_lock(&pAd->Mlme.TaskLock); - pAd->Mlme.Running = FALSE; - spin_unlock(&pAd->Mlme.TaskLock); -} - -/*! \brief test if the MLME Queue is empty - * \param *Queue The MLME Queue - * \return TRUE if the Queue is empty, FALSE otherwise - * \pre - * \post - */ -BOOLEAN MlmeQueueEmpty( - IN MLME_QUEUE *Queue) -{ - BOOLEAN Ans; - - spin_lock(&(Queue->Lock)); - Ans = (Queue->Num == 0); - spin_unlock(&(Queue->Lock)); - - return Ans; -} - -/*! \brief test if the MLME Queue is full - * \param *Queue The MLME Queue - * \return TRUE if the Queue is empty, FALSE otherwise - * \pre - * \post - */ -BOOLEAN MlmeQueueFull( - IN MLME_QUEUE *Queue) -{ - BOOLEAN Ans; - - spin_lock(&(Queue->Lock)); - Ans = (Queue->Num == MAX_LEN_OF_MLME_QUEUE); - spin_unlock(&(Queue->Lock)); - - return Ans; -} - -/*! \brief The destructor of MLME Queue - * \param - * \return - * \pre - * \post - * \note Clear Mlme Queue, Set Queue->Num to Zero. - */ -VOID MlmeQueueDestroy( - IN MLME_QUEUE *Queue) -{ - spin_lock(&(Queue->Lock)); - Queue->Num = 0; - Queue->Head = 0; - Queue->Tail = 0; - spin_unlock(&(Queue->Lock)); -} - -/*! \brief To substitute the message type if the message is coming from external - * \param *Fr The frame received - * \param *Machine The state machine - * \param *MsgType the message type for the state machine - * \return TRUE if the substitution is successful, FALSE otherwise - * \pre - * \post - */ -BOOLEAN MsgTypeSubst( - IN MACFRAME *Fr, - OUT INT *Machine, - OUT INT *MsgType) -{ - USHORT Seq; - UCHAR EAPType; - - // The only data type will pass to this function is EAPOL frame - if (Fr->Hdr.Type == BTYPE_DATA) - { - *Machine = WPA_PSK_STATE_MACHINE; - EAPType = *((UCHAR*)Fr + LENGTH_802_11 + LENGTH_802_1_H + 1); - return(WpaMsgTypeSubst(EAPType, MsgType)); - } - - switch (Fr->Hdr.SubType) - { - case SUBTYPE_ASSOC_REQ: - *Machine = ASSOC_STATE_MACHINE; - *MsgType = MT2_PEER_ASSOC_REQ; - break; - case SUBTYPE_ASSOC_RSP: - *Machine = ASSOC_STATE_MACHINE; - *MsgType = MT2_PEER_ASSOC_RSP; - break; - case SUBTYPE_REASSOC_REQ: - *Machine = ASSOC_STATE_MACHINE; - *MsgType = MT2_PEER_REASSOC_REQ; - break; - case SUBTYPE_REASSOC_RSP: - *Machine = ASSOC_STATE_MACHINE; - *MsgType = MT2_PEER_REASSOC_RSP; - break; - case SUBTYPE_PROBE_REQ: - *Machine = SYNC_STATE_MACHINE; - *MsgType = MT2_PEER_PROBE_REQ; - break; - case SUBTYPE_PROBE_RSP: - *Machine = SYNC_STATE_MACHINE; - *MsgType = MT2_PEER_PROBE_RSP; - break; - case SUBTYPE_BEACON: - *Machine = SYNC_STATE_MACHINE; - *MsgType = MT2_PEER_BEACON; - break; - case SUBTYPE_ATIM: - *Machine = SYNC_STATE_MACHINE; - *MsgType = MT2_PEER_ATIM; - break; - case SUBTYPE_DISASSOC: - *Machine = ASSOC_STATE_MACHINE; - *MsgType = MT2_PEER_DISASSOC_REQ; - break; - case SUBTYPE_AUTH: - // get the sequence number from payload 24 Mac Header + 2 bytes algorithm - memcpy(&Seq, &Fr->Octet[2], sizeof(USHORT)); - if (Seq == 1 || Seq == 3) - { - *Machine = AUTH_RSP_STATE_MACHINE; - *MsgType = MT2_PEER_AUTH_ODD; - } - else if (Seq == 2 || Seq == 4) - { - *Machine = AUTH_STATE_MACHINE; - *MsgType = MT2_PEER_AUTH_EVEN; - } - else - { - return FALSE; - } - break; - case SUBTYPE_DEAUTH: - *Machine = AUTH_RSP_STATE_MACHINE; - *MsgType = MT2_PEER_DEAUTH; - break; - default: - return FALSE; - break; - } - - return TRUE; -} - -// =========================================================================================== -// state_machine.c -// =========================================================================================== - -/*! \brief Initialize the state machine. - * \param *S pointer to the state machine - * \param Trans State machine transition function - * \param StNr number of states - * \param MsgNr number of messages - * \param DefFunc default function, when there is invalid state/message combination - * \param InitState initial state of the state machine - * \param Base StateMachine base, internal use only - * \pre p_sm should be a legal pointer - * \post - */ - -VOID StateMachineInit( - IN STATE_MACHINE *S, - IN STATE_MACHINE_FUNC Trans[], - IN ULONG StNr, - IN ULONG MsgNr, - IN STATE_MACHINE_FUNC DefFunc, - IN ULONG InitState, - IN ULONG Base) -{ - ULONG i, j; - - // set number of states and messages - S->NrState = StNr; - S->NrMsg = MsgNr; - S->Base = Base; - - S->TransFunc = Trans; - - // init all state transition to default function - for (i = 0; i < StNr; i++) - { - for (j = 0; j < MsgNr; j++) - { - S->TransFunc[i * MsgNr + j] = DefFunc; - } - } - - // set the starting state - S->CurrState = InitState; - -} - -/*! \brief This function fills in the function pointer into the cell in the state machine - * \param *S pointer to the state machine - * \param St state - * \param Msg incoming message - * \param f the function to be executed when (state, message) combination occurs at the state machine - * \pre *S should be a legal pointer to the state machine, st, msg, should be all within the range, Base should be set in the initial state - * \post - */ -VOID StateMachineSetAction( - IN STATE_MACHINE *S, - IN ULONG St, - IN ULONG Msg, - IN STATE_MACHINE_FUNC Func) -{ - ULONG MsgIdx; - - MsgIdx = Msg - S->Base; - - if (St < S->NrState && MsgIdx < S->NrMsg) - { - // boundary checking before setting the action - S->TransFunc[St * S->NrMsg + MsgIdx] = Func; - } -} - -/*! \brief The destructor of the state machine - * \param *S the statemachine - * \note doing nothing at this moment, may need to do something if the implementation changed - */ -VOID -StateMachineDestroy(IN STATE_MACHINE *S) -{ -} - -/*! \brief This function does the state transition - * \param *Adapter the NIC adapter pointer - * \param *S the state machine - * \param *Elem the message to be executed - * \return None - */ -VOID StateMachinePerformAction( - IN PRTMP_ADAPTER pAd, - IN STATE_MACHINE *S, - IN MLME_QUEUE_ELEM *Elem) -{ - (*(S->TransFunc[S->CurrState * S->NrMsg + Elem->MsgType - S->Base]))(pAd, Elem); -} - -/* - ========================================================================== - Description: - The drop function, when machine executes this, the message is simply - ignored. This function does nothing, the message is freed in - StateMachinePerformAction() - ========================================================================== - */ -VOID Drop( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ -#if 0 - if ((Elem->MsgType == MT2_PEER_BEACON) || - (Elem->MsgType == MT2_PEER_PROBE_REQ) || - (Elem->MsgType == MT2_PEER_PROBE_RSP)) - ; - else - { - DBGPRINT(RT_DEBUG_TRACE, ("Warn:>>Drop Msg=%d<<\n",Elem->MsgType)); - } -#endif -} - -// =========================================================================================== -// lfsr.c -// =========================================================================================== - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID LfsrInit( - IN PRTMP_ADAPTER pAd, - IN ULONG Seed) -{ - if (Seed == 0) - pAd->Mlme.ShiftReg = 1; - else - pAd->Mlme.ShiftReg = Seed; -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -UCHAR RandomByte( - IN PRTMP_ADAPTER pAd) -{ - ULONG i; - UCHAR R, Result; - - R = 0; - - for (i = 0; i < 8; i++) - { - if (pAd->Mlme.ShiftReg & 0x00000001) - { - pAd->Mlme.ShiftReg = ((pAd->Mlme.ShiftReg ^ LFSR_MASK) >> 1) | 0x80000000; - Result = 1; - } - else - { - pAd->Mlme.ShiftReg = pAd->Mlme.ShiftReg >> 1; - Result = 0; - } - R = (R << 1) | Result; - } - - return R; -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID AsicSwitchChannel( - IN PRTMP_ADAPTER pAd, - IN UCHAR Channel) -{ - ULONG R3; - UCHAR index; - - // TODO: need to update E2PROM format to add 802.11a channel's TX power calibration values - if (Channel <= 14) - R3 = pAd->PortCfg.ChannelTxPower[Channel - 1]; - else - R3 = pAd->PortCfg.ChannelTxPower[0]; - - if (R3 > 31) R3 = 31; - - // E2PROM setting is calibrated for maximum TX power (i.e. 100%) - // We lower TX power here according to the percentage specified from UI - if (pAd->PortCfg.TxPowerPercentage > 90) // 91 ~ 100%, treat as 100% in terms of mW - ; - else if (pAd->PortCfg.TxPowerPercentage > 60) // 61 ~ 90%, treat as 75% in terms of mW - R3 -= 1; - else if (pAd->PortCfg.TxPowerPercentage > 30) // 31 ~ 60%, treat as 50% in terms of mW - R3 -= 3; - else if (pAd->PortCfg.TxPowerPercentage > 15) // 16 ~ 30%, treat as 25% in terms of mW - R3 -= 6; - else if (pAd->PortCfg.TxPowerPercentage > 9) // 10 ~ 15%, treat as 12.5% in terms of mW - R3 -= 9; - else // 0 ~ 9 %, treat as 6.25% in terms of mW - R3 -= 12; - - R3 = R3 << 9; // shift TX power control to correct RF R3 bit position - - switch (pAd->PortCfg.RfType) - { - case RFIC_2522: - for (index = 0; index < NUM_OF_2522_CHNL; index++) - { - if (Channel == RF2522RegTable[index].Channel) - { - R3 = R3 | RF2522RegTable[index].R3; // set TX power - RTMP_RF_IO_WRITE32(pAd, RF2522RegTable[index].R1); - RTMP_RF_IO_WRITE32(pAd, RF2522RegTable[index].R2); - RTMP_RF_IO_WRITE32(pAd, R3); - pAd->PortCfg.LatchRfRegs.Channel = Channel; - pAd->PortCfg.LatchRfRegs.R1 = RF2522RegTable[index].R1; - pAd->PortCfg.LatchRfRegs.R2 = RF2522RegTable[index].R2; - pAd->PortCfg.LatchRfRegs.R3 = R3; - pAd->PortCfg.LatchRfRegs.R4 = RF2522RegTable[index].R4; - break; - } - } - break; - - case RFIC_2523: - for (index = 0; index < NUM_OF_2523_CHNL; index++) - { - if (Channel == RF2523RegTable[index].Channel) - { - R3 = R3 | RF2523RegTable[index].R3; // set TX power - RTMP_RF_IO_WRITE32(pAd, RF2523RegTable[index].R1); - RTMP_RF_IO_WRITE32(pAd, RF2523RegTable[index].R2); - RTMP_RF_IO_WRITE32(pAd, R3); - RTMP_RF_IO_WRITE32(pAd, RF2523RegTable[index].R4); - pAd->PortCfg.LatchRfRegs.Channel = Channel; - pAd->PortCfg.LatchRfRegs.R1 = RF2523RegTable[index].R1; - pAd->PortCfg.LatchRfRegs.R2 = RF2523RegTable[index].R2; - pAd->PortCfg.LatchRfRegs.R3 = R3; - pAd->PortCfg.LatchRfRegs.R4 = RF2523RegTable[index].R4; - break; - } - } - break; - - case RFIC_2524: - for (index = 0; index < NUM_OF_2524_CHNL; index++) - { - if (Channel == RF2524RegTable[index].Channel) - { - R3 = R3 | RF2524RegTable[index].R3; // set TX power - RTMP_RF_IO_WRITE32(pAd, RF2524RegTable[index].R1); - RTMP_RF_IO_WRITE32(pAd, RF2524RegTable[index].R2); - RTMP_RF_IO_WRITE32(pAd, R3); - RTMP_RF_IO_WRITE32(pAd, RF2524RegTable[index].R4); - pAd->PortCfg.LatchRfRegs.Channel = Channel; - pAd->PortCfg.LatchRfRegs.R1 = RF2524RegTable[index].R1; - pAd->PortCfg.LatchRfRegs.R2 = RF2524RegTable[index].R2; - pAd->PortCfg.LatchRfRegs.R3 = R3; - pAd->PortCfg.LatchRfRegs.R4 = RF2524RegTable[index].R4; - break; - } - } - break; - - case RFIC_2525: - for (index = 0; index < NUM_OF_2525_CHNL; index++) - { - if (Channel == RF2525RegTable[index].Channel) - { - // Tx power should based on the real channel value - R3 = R3 | RF2525RegTable[index].R3; // set TX power - // Set the channel to half band higher - 8 channels - // The addition is based on Gary and Sheng's request - RTMP_RF_IO_WRITE32(pAd, RF2525HBOffsetRegTable[index].R1); - RTMP_RF_IO_WRITE32(pAd, RF2525HBOffsetRegTable[index].R2); - RTMP_RF_IO_WRITE32(pAd, R3); - RTMP_RF_IO_WRITE32(pAd, RF2525HBOffsetRegTable[index].R4); - // Chnage to teh connect channel - RTMP_RF_IO_WRITE32(pAd, RF2525RegTable[index].R1); - RTMP_RF_IO_WRITE32(pAd, RF2525RegTable[index].R2); - RTMP_RF_IO_WRITE32(pAd, R3); - RTMP_RF_IO_WRITE32(pAd, RF2525RegTable[index].R4); - pAd->PortCfg.LatchRfRegs.Channel = Channel; - pAd->PortCfg.LatchRfRegs.R1 = RF2525RegTable[index].R1; - pAd->PortCfg.LatchRfRegs.R2 = RF2525RegTable[index].R2; - pAd->PortCfg.LatchRfRegs.R3 = R3; - pAd->PortCfg.LatchRfRegs.R4 = RF2525RegTable[index].R4; - break; - } - } - break; - - case RFIC_2525E: - for (index = 0; index < NUM_OF_2525E_CHNL; index++) - { - if (Channel == RF2525eRegTable[index].Channel) - { - R3 = R3 | RF2525eRegTable[index].R3; // set TX power - RTMP_RF_IO_WRITE32(pAd, RF2525eRegTable[index].R1); - RTMP_RF_IO_WRITE32(pAd, RF2525eRegTable[index].R2); - RTMP_RF_IO_WRITE32(pAd, R3); - RTMP_RF_IO_WRITE32(pAd, RF2525eRegTable[index].R4); - pAd->PortCfg.LatchRfRegs.Channel = Channel; - pAd->PortCfg.LatchRfRegs.R1 = RF2525eRegTable[index].R1; - pAd->PortCfg.LatchRfRegs.R2 = RF2525eRegTable[index].R2; - pAd->PortCfg.LatchRfRegs.R3 = R3; - pAd->PortCfg.LatchRfRegs.R4 = RF2525eRegTable[index].R4; - break; - } - } - break; - - case RFIC_5222: - for (index = 0; index < NUM_OF_5222_CHNL; index++) - { - if (Channel == RF5222RegTable[index].Channel) - { - R3 = R3 | RF5222RegTable[index].R3; // set TX power - RTMP_RF_IO_WRITE32(pAd, RF5222RegTable[index].R1); - RTMP_RF_IO_WRITE32(pAd, RF5222RegTable[index].R2); - RTMP_RF_IO_WRITE32(pAd, R3); - RTMP_RF_IO_WRITE32(pAd, RF5222RegTable[index].R4); - pAd->PortCfg.LatchRfRegs.Channel = Channel; - pAd->PortCfg.LatchRfRegs.R1 = RF5222RegTable[index].R1; - pAd->PortCfg.LatchRfRegs.R2 = RF5222RegTable[index].R2; - pAd->PortCfg.LatchRfRegs.R3 = R3; - pAd->PortCfg.LatchRfRegs.R4 = RF5222RegTable[index].R4; - break; - } - } - break; - - default: - break; - } - - DBGPRINT(RT_DEBUG_INFO, "AsicSwitchChannel(RF=%d) to #%d, TXPwr=%d, R1=0x%08x, R2=0x%08x, R3=0x%08x, R4=0x%08x\n", - pAd->PortCfg.RfType, - pAd->PortCfg.LatchRfRegs.Channel, - pAd->PortCfg.TxPower, - pAd->PortCfg.LatchRfRegs.R1, - pAd->PortCfg.LatchRfRegs.R2, - pAd->PortCfg.LatchRfRegs.R3, - pAd->PortCfg.LatchRfRegs.R4); -} - -/* - ========================================================================== - Description: - This function is required for 2421 only, and should not be used during - site survey. It's only required after NIC decided to stay at a channel - for a longer period. - When this function is called, it's always after AsicSwitchChannel(). - ========================================================================== - */ -VOID AsicLockChannel( - IN PRTMP_ADAPTER pAd, - IN UCHAR Channel) -{ - UCHAR r70; - ULONG FcsCnt; - - RTMPCancelTimer(&pAd->PortCfg.RfTuningTimer); - RTMPSetTimer(pAd, &pAd->PortCfg.RfTuningTimer, 1000/HZ); // 1 msec timer to turn OFF RF auto tuning - - RTMP_BBP_IO_READ32_BY_REG_ID(pAd, 70, &r70); - if (Channel == 14) - r70 = 0x4E; //set r70 to 0x4E instead of r70 |= 0x08; for turn on Japan filter bit - else - r70 = 0x46; //set r70 to 0x46 instead of r70 &= 0xf7; for turn off Japan filter bit - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 70, r70); - - // Clear false CRC durning switch channel - RTMP_IO_READ32(pAd, CNT0, &FcsCnt); -} - -VOID AsicRfTuningExec( - IN unsigned long data) -{ - RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; - - switch (pAd->PortCfg.RfType) - { - case RFIC_2522: - case RFIC_2524: - case RFIC_2525: - case RFIC_5222: - case RFIC_2525E: - pAd->PortCfg.LatchRfRegs.R1 &= 0xfffdffff; // RF R1.bit17 "tune_en1" OFF - pAd->PortCfg.LatchRfRegs.R3 &= 0xfffffeff; // RF R3.bit8 "tune_en2" OFF - RTMP_RF_IO_WRITE32(pAd, pAd->PortCfg.LatchRfRegs.R1); - RTMP_RF_IO_WRITE32(pAd, pAd->PortCfg.LatchRfRegs.R3); - DBGPRINT(RT_DEBUG_INFO, "AsicRfTuningExec(R1=0x%x,R3=0x%x)\n",pAd->PortCfg.LatchRfRegs.R1,pAd->PortCfg.LatchRfRegs.R3); - break; - - case RFIC_2523: - pAd->PortCfg.LatchRfRegs.R3 &= 0xfffffeff; // RF R3.bit8 "tune_en2" OFF - RTMP_RF_IO_WRITE32(pAd, pAd->PortCfg.LatchRfRegs.R3); - DBGPRINT(RT_DEBUG_INFO, "AsicRfTuningExec(R3=0x%x)\n",pAd->PortCfg.LatchRfRegs.R3); - break; - - default: - break; - } -} - -/* - ========================================================================== - Description: - Gives CCK TX rate 2 more dB TX power. - This routine works only in LINK UP in INFRASTRUCTURE mode. - - calculate desired Tx power in RF R3.Tx0~5, should consider - - 1. TxPowerPercentage - 2. auto calibration based on TSSI feedback - 3. extra 2 db for CCK - 4. -10 db upon very-short distance (AvgRSSI >= -40db) to AP - ========================================================================== - */ -VOID AsicAdjustTxPower( - IN PRTMP_ADAPTER pAd) -{ - ULONG R3, Channel, CurrTxPwr; - - if ((pAd->PortCfg.Channel >= 1) && (pAd->PortCfg.Channel <= 14)) - Channel = pAd->PortCfg.Channel; - else - Channel = 1; // don't have calibration info for 11A, temporarily use Channel 1 - - // get TX Power base from E2PROM - R3 = pAd->PortCfg.ChannelTxPower[Channel - 1]; - if (R3 > 31) R3 = 31; - - // E2PROM setting is calibrated for maximum TX power (i.e. 100%) - // We lower TX power here according to the percentage specified from UI - if (pAd->PortCfg.TxPowerPercentage == 0xffffffff) // AUTO TX POWER control - { - // only INFRASTRUCTURE mode and 100% TX power need furthur calibration - if (pAd->MediaState == NdisMediaStateConnected) - { - // low TX power upon very-short distance to AP to solve some vendor's AP RX problem - // in this case, no TSSI compensation is required. - - if ((pAd->DrsCounters.fNoisyEnvironment == FALSE) && - (pAd->PortCfg.AvgRssi > (pAd->PortCfg.RssiToDbm - RSSI_FOR_LOWEST_TX_POWER))) - R3 -= LOWEST_TX_POWER_DELTA; - else if ((pAd->DrsCounters.fNoisyEnvironment == FALSE) && - (pAd->PortCfg.AvgRssi > (pAd->PortCfg.RssiToDbm - RSSI_FOR_LOW_TX_POWER))) - R3 -= LOW_TX_POWER_DELTA; - - - // 2004-03-16 give OFDM rates lower than 48 mbps 2 more DB - else if ((pAd->PortCfg.TxRate <= RATE_36) && (pAd->PortCfg.TxRate > RATE_11)) - { - R3 +=2; - if (R3 > 31) R3 = 31; - } - - // 2 exclusive rules applied on CCK rates only - - // 1. always plus 2 db for CCK - // 2. adjust TX Power based on TSSI - else if (pAd->PortCfg.TxRate <= RATE_11) - { - // if "auto calibration based on TSSI" is not required, then - // always give CCK 2 more db - if (pAd->PortCfg.bAutoTxAgc == FALSE) - { - R3 += 2; // plus 2 db - if (R3 > 31) R3 = 31; - } - - // Auto calibrate Tx AGC if bAutoTxAgc is TRUE and TX rate is CCK, - // because E2PROM's TSSI reference is valid only in CCK range. - else - { - UCHAR R1,TxPowerRef, TssiRef; - - R3 = (pAd->PortCfg.LatchRfRegs.R3 >> 9) & 0x0000001f; - if (pAd->Mlme.PeriodicRound % 4 == 0) // every 4 second - { - TxPowerRef = pAd->PortCfg.ChannelTxPower[Channel - 1]; - TssiRef = pAd->PortCfg.ChannelTssiRef[Channel - 1]; - RTMP_BBP_IO_READ32_BY_REG_ID(pAd, BBP_Tx_Tssi, &R1); - if ((TssiRef >= (R1 + pAd->PortCfg.ChannelTssiDelta)) || - (TssiRef <= (R1 - pAd->PortCfg.ChannelTssiDelta))) - { - // Need R3 adjustment. However, we have to make sure there is only - // plus / minus 5 variation allowed - if (TssiRef > R1) - { - R3 = (R3 < (ULONG) (TxPowerRef + 5)) ? (R3 + 1) : R3; - if (R3 > 31) - R3 = 31; - DBGPRINT(RT_DEBUG_INFO,"TSSI(R1)=%d, ++TxPwr=%d\n", R1, R3); - } - else - { - R3 = (R3 > (ULONG) (TxPowerRef - 5)) ? (R3 - 1) : R3; - DBGPRINT(RT_DEBUG_INFO,"TSSI(R1)=%d, --TxPwr=%d\n", R1, R3); - } - } - } - } - } - - } - } - else // fixed AUTO TX power - { - if (pAd->PortCfg.TxPowerPercentage > 90) // 91 ~ 100%, treat as 100% in terms of mW - ; - else if (pAd->PortCfg.TxPowerPercentage > 60) // 61 ~ 90%, treat as 75% in terms of mW - R3 -= 1; - else if (pAd->PortCfg.TxPowerPercentage > 30) // 31 ~ 60%, treat as 50% in terms of mW - R3 -= 3; - else if (pAd->PortCfg.TxPowerPercentage > 15) // 16 ~ 30%, treat as 25% in terms of mW - R3 -= 6; - else if (pAd->PortCfg.TxPowerPercentage > 9) // 10 ~ 15%, treat as 12.5% in terms of mW - R3 -= 9; - else // 0 ~ 9 %, treat as MIN(~3%) in terms of mW - R3 -= 12; - if (R3 > 31) R3 = 0; // negative value, set as minimum 0 - - // 2004-03-16 give TX rates <= 36 mbps 2 more DB - if (pAd->PortCfg.TxRate <= RATE_36) - { - R3 +=2; - if (R3 > 31) R3 = 31; - } - } - - // compare the desired R3.TxPwr value with current R3, if not equal - // set new R3.TxPwr - CurrTxPwr = (pAd->PortCfg.LatchRfRegs.R3 >> 9) & 0x0000001f; - if (CurrTxPwr != R3) - { - CurrTxPwr = R3; - R3 = (pAd->PortCfg.LatchRfRegs.R3 & 0xffffc1ff) | (R3 << 9); - RTMP_RF_IO_WRITE32(pAd, R3); - pAd->PortCfg.LatchRfRegs.R3 = R3; - } - DBGPRINT(RT_DEBUG_INFO, "AsicAdjustTxPower = %d, AvgRssi = %d\n", - CurrTxPwr, pAd->PortCfg.AvgRssi - pAd->PortCfg.RssiToDbm); - -} - -/* - ========================================================================== - Description: - put PHY to sleep here, and set next wakeup timer - ========================================================================== - */ -VOID AsicSleepThenAutoWakeup( - IN PRTMP_ADAPTER pAd, - IN USHORT TbttNumToNextWakeUp) -{ - CSR20_STRUC Csr20; - PWRCSR1_STRUC Pwrcsr1; - - // we have decided to SLEEP, so at least do it for a BEACON period. - if (TbttNumToNextWakeUp==0) - TbttNumToNextWakeUp=1; - - // PWRCSR0 remains untouched - - // set CSR20 for next wakeup - Csr20.word = 0; - Csr20.field.NumBcnBeforeWakeup = TbttNumToNextWakeUp - 1; - Csr20.field.DelayAfterBcn = (pAd->PortCfg.BeaconPeriod - 20) << 4; // 20 TU ahead of desired TBTT - Csr20.field.AutoWake = 1; - RTMP_IO_WRITE32(pAd, CSR20, Csr20.word); - - // set PWRCSR1 to put PHY into SLEEP state - Pwrcsr1.word = 0; - Pwrcsr1.field.PutToSleep = 1; - Pwrcsr1.field.BbpDesireState = 1; // 01:SLEEP - Pwrcsr1.field.RfDesireState = 1; // 01:SLEEP - RTMP_IO_WRITE32(pAd, PWRCSR1, Pwrcsr1.word); - pAd->PortCfg.Pss = PWR_SAVE; -} - -/* - ========================================================================== - Description: - AsicForceWakeup() is used whenever manual wakeup is required - AsicForceSleep() should only be used when Massoc==FALSE. When - Massoc==TRUE, we should use AsicSleepThenAutoWakeup() instead. - ========================================================================== - */ -VOID AsicForceSleep( - IN PRTMP_ADAPTER pAd) -{ - PWRCSR1_STRUC Pwrcsr1; - - if (pAd->PortCfg.Pss == PWR_ACTIVE) - { - DBGPRINT(RT_DEBUG_TRACE, ">>>AsicForceSleep<<<\n"); - Pwrcsr1.word = 0; - Pwrcsr1.field.RfDesireState = 1; // 01:SLEEP state - Pwrcsr1.field.BbpDesireState = 1; // 01:SLEEP state - Pwrcsr1.field.SetState = 1; - RTMP_IO_WRITE32(pAd, PWRCSR1, Pwrcsr1.word); - pAd->PortCfg.Pss = PWR_SAVE; - } -} - -VOID AsicForceWakeup( - IN PRTMP_ADAPTER pAd) -{ - CSR20_STRUC Csr20; - PWRCSR1_STRUC Pwrcsr1; - - if (pAd->PortCfg.Pss == PWR_SAVE) - { - DBGPRINT(RT_DEBUG_TRACE, ">>>AsicForceWakeup<<<\n"); - - // 2003-12-19 turn OFF auto wakeup first - Csr20.word = 0; - Csr20.field.AutoWake = 0; - RTMP_IO_WRITE32(pAd, CSR20, Csr20.word); - - Pwrcsr1.word = 0; - Pwrcsr1.field.RfDesireState = 3; // 11:AWAKE state - Pwrcsr1.field.BbpDesireState = 3; // 11:AWAKE state - Pwrcsr1.field.SetState = 1; - RTMP_IO_WRITE32(pAd, PWRCSR1, Pwrcsr1.word); - pAd->PortCfg.Pss = PWR_ACTIVE; - } -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID AsicSetBssid( - IN PRTMP_ADAPTER pAd, - IN MACADDR *Bssid) -{ - ULONG Addr4; - - Addr4 = (ULONG)(Bssid->Octet[0]) | - (ULONG)(Bssid->Octet[1] << 8) | - (ULONG)(Bssid->Octet[2] << 16) | - (ULONG)(Bssid->Octet[3] << 24); - RTMP_IO_WRITE32(pAd, CSR5, Addr4); - - Addr4 = (ULONG)(Bssid->Octet[4]) | (ULONG)(Bssid->Octet[5] << 8); - RTMP_IO_WRITE32(pAd, CSR6, Addr4); -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID AsicDisableSync( - IN PRTMP_ADAPTER pAd) -{ - // TIMECSR_STRUC TimeCsr; - DBGPRINT(RT_DEBUG_TRACE, "--->Disable TSF synchronization\n"); -#if 1 - // 2003-12-20 disable TSF and Tbcn while NIC in power-saving have side effect - // that NIC will never wakes up because TSF stops and no more TBTT interrupts - RTMP_IO_WRITE32(pAd, CSR14, 0x00000009); -#else - RTMP_IO_WRITE32(pAd, CSR14, 0x00000000); -#endif - -#if 0 - RTMP_IO_READ32(pAd, TIMECSR, &TimeCsr.word); - - // restore to 33 PCI-tick-per-Usec. for 2560a only where PCI-clock is used as TSF timing source - if (TimeCsr.field.UsCnt != 0x21) - { - TimeCsr.field.UsCnt = 0x21; - RTMP_IO_WRITE32(pAd, TIMECSR, TimeCsr.word); - } -#endif -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID AsicEnableBssSync( - IN PRTMP_ADAPTER pAd) -{ - CSR12_STRUC Csr12; - CSR13_STRUC Csr13; - CSR14_STRUC Csr14; - BCNCSR1_STRUC Bcncsr1; - BOOLEAN IsApPc; - - DBGPRINT(RT_DEBUG_TRACE, "--->AsicEnableBssSync(INFRA mode)\n"); - - RTMP_IO_WRITE32(pAd, CSR14, 0x00000000); - - Csr12.word = 0; - Csr12.field.BeaconInterval = pAd->PortCfg.BeaconPeriod << 4; // ASIC register in units of 1/16 TU - Csr12.field.CfpMaxDuration = pAd->PortCfg.CfpMaxDuration << 4; // ASIC register in units of 1/16 TU - RTMP_IO_WRITE32(pAd, CSR12, Csr12.word); - - Csr13.word = 0; - Csr13.field.CfpPeriod = pAd->PortCfg.CfpDurRemain << 4; // ASIC register in units of 1/16 TU - RTMP_IO_WRITE32(pAd, CSR13, Csr13.word); - - Bcncsr1.word = 0; - Bcncsr1.field.Preload = TBTT_PRELOAD_TIME; // we guess TBTT is 2 TU ahead of BEACON-RxEnd time - Bcncsr1.field.BeaconCwMin = 5; - RTMP_IO_WRITE32(pAd, BCNCSR1, Bcncsr1.word); - - IsApPc = (CAP_IS_CF_POLLABLE_ON(pAd->PortCfg.CapabilityInfo) && - CAP_IS_CF_POLL_REQ_ON(pAd->PortCfg.CapabilityInfo)); - IsApPc = FALSE; // TODO: not support so far - - Csr14.word = 0; - Csr14.field.TsfCount = 1; - Csr14.field.TsfSync = 1; // sync TSF in INFRASTRUCTURE mode - if (IsApPc) - { - Csr14.field.CfpCntPreload = pAd->PortCfg.CfpCount; - Csr14.field.Tcfp = 1; - } - Csr14.field.BeaconGen = 0; -// Csr14.field.TbcnPreload = (pAd->PortCfg.BeaconPeriod - 30) << 4; // TODO: ???? 1 TU ??? - Csr14.field.Tbcn = 1; - RTMP_IO_WRITE32(pAd, CSR14, Csr14.word); - -} - -/* - ========================================================================== - Description: - Note: - BEACON frame in shared memory should be built ok before this routine - can be called. Otherwise, a garbage frame maybe transmitted out every - Beacon period. - ========================================================================== - */ -VOID AsicEnableIbssSync( - IN PRTMP_ADAPTER pAd) -{ - CSR12_STRUC Csr12; - CSR13_STRUC Csr13; - CSR14_STRUC Csr14; - // BCNCSR_STRUC Bcncsr; - BCNCSR1_STRUC Bcncsr1; - - DBGPRINT(RT_DEBUG_TRACE, "--->AsicEnableIbssSync(ADHOC mode)\n"); - - RTMP_IO_WRITE32(pAd, CSR14, 0x00000000); - - Csr12.word = 0; - Csr12.field.BeaconInterval = pAd->PortCfg.BeaconPeriod << 4; // ASIC register in units of 1/16 TU - RTMP_IO_WRITE32(pAd, CSR12, Csr12.word); - - Csr13.word = 0; - Csr13.field.AtimwDuration = pAd->PortCfg.AtimWin << 4; // ASIC register in units of 1/16 TU - RTMP_IO_WRITE32(pAd, CSR13, Csr13.word); - - Bcncsr1.word = 0; - if ((pAd->PortCfg.PhyMode == PHY_11B) || (pAd->PortCfg.PhyMode == PHY_11BG_MIXED)) - { - Bcncsr1.field.BeaconCwMin = 5; - Bcncsr1.field.Preload = 1024; // 192 + ((MAC_HDR_LEN << 4) / RateIdTo500Kbps[pAd->PortCfg.MlmeRate]); - } - else - { - Bcncsr1.field.BeaconCwMin = 6; - Bcncsr1.field.Preload = 700; // 24 + ((MAC_HDR_LEN << 4) / RateIdTo500Kbps[pAd->PortCfg.MlmeRate]); - } - RTMP_IO_WRITE32(pAd, BCNCSR1, Bcncsr1.word); - - Csr14.word = 0; - Csr14.field.TsfCount = 1; - Csr14.field.TsfSync = 2; // sync TSF in IBSS mode - Csr14.field.Tbcn = 1; - Csr14.field.BeaconGen = 1; - RTMP_IO_WRITE32(pAd, CSR14, Csr14.word); -} - -VOID AsicLedPeriodicExec( - IN unsigned long data) -{ - RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; - ULONG LedCsr = 0x0000461E; // 0x0000461E; - - pAd->PortCfg.LedCntl.fOdd = ! pAd->PortCfg.LedCntl.fOdd; - - if (INFRA_ON(pAd) || ADHOC_ON(pAd)) - LedCsr |= 0x00010000; // enable hardwired TX activity LED - if (pAd->PortCfg.LedCntl.fOdd && pAd->PortCfg.LedCntl.fRxActivity) - LedCsr |= 0x00020000; // turn on software-based RX activity LED - pAd->PortCfg.LedCntl.fRxActivity = FALSE; - - if (LedCsr != pAd->PortCfg.LedCntl.LastLedCsr) - { -// DBGPRINT(RT_DEBUG_TRACE, ("AsicLedPeriodicExec(%8x)\n",LedCsr)); - pAd->PortCfg.LedCntl.LastLedCsr = LedCsr; - RTMP_IO_WRITE32(pAd, LEDCSR, LedCsr); - } - - RTMPSetTimer(pAd, &pAd->PortCfg.LedCntl.BlinkTimer, 70); -} - -// pAd->PortCfg.CurrentRxAntenna -// 0xff: diversity, 0:antenna A, 1:antenna B -VOID AsicSetRxAnt( - IN PRTMP_ADAPTER pAd) -{ - UCHAR RxValue, TxValue; - ULONG Bbpcsr1; - - RTMPCancelTimer(&pAd->PortCfg.RxAnt.RxAntDiversityTimer); - pAd->PortCfg.RxAnt.AvgRssi[0] = (-95 + 120) << 3; // reset Ant-A's RSSI history - pAd->PortCfg.RxAnt.AvgRssi[1] = (-95 + 120) << 3; // reset Ant-B's RSSI history - - pAd->PortCfg.RxAnt.PrimaryInUsed = TRUE; - - if (pAd->PortCfg.CurrentRxAntenna == 0xff) // Diversity - { - pAd->PortCfg.RxAnt.PrimaryRxAnt = 1; // assume ant-B - pAd->PortCfg.RxAnt.SecondaryRxAnt = 0; // assume ant-A - } - else if (pAd->PortCfg.CurrentRxAntenna == 0) // ant-A - { - pAd->PortCfg.RxAnt.PrimaryRxAnt = 0; // assume ant-A - pAd->PortCfg.RxAnt.SecondaryRxAnt = 1; // assume ant-B - } - else // ant-B - { - pAd->PortCfg.RxAnt.PrimaryRxAnt = 1; // assume ant-B - pAd->PortCfg.RxAnt.SecondaryRxAnt = 0; // assume ant-A - } - - DBGPRINT(RT_DEBUG_TRACE,"AntDiv - set RxAnt=%d, primary=%d, second=%d\n", - pAd->PortCfg.CurrentRxAntenna, pAd->PortCfg.RxAnt.PrimaryRxAnt, pAd->PortCfg.RxAnt.SecondaryRxAnt); - - // use primary antenna - RTMP_IO_READ32(pAd, BBPCSR1, &Bbpcsr1); - TxValue = pAd->PortCfg.BbpWriteLatch[BBP_Tx_Configure]; - RxValue = pAd->PortCfg.BbpWriteLatch[BBP_Rx_Configure]; - if (pAd->PortCfg.RxAnt.PrimaryRxAnt == 0) // ant-A - { - TxValue = (TxValue & 0xFC) | 0x00; - RxValue = 0x1c; - Bbpcsr1 = (Bbpcsr1 & 0xFFFCFFFC) | 0x00000000; - } - else // ant-B - { - TxValue = (TxValue & 0xFC) | 0x02; - RxValue = 0x1e; - Bbpcsr1 = (Bbpcsr1 & 0xFFFCFFFC) | 0x00020002; - } - RTMP_IO_WRITE32(pAd, BBPCSR1, Bbpcsr1); - //RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, BBP_Tx_Configure, TxValue); - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, BBP_Rx_Configure, RxValue); - -} - -// switch to secondary RxAnt for a while to collect it's average RSSI -// also set a timeout routine to DO the actual evaluation. If evaluation -// result shows a much better RSSI using secondary RxAnt, then a official -// RX antenna switch is performed. -VOID AsicEvaluateSecondaryRxAnt( - IN PRTMP_ADAPTER pAd) -{ - UCHAR RxValue, TxValue; - ULONG Bbpcsr1; - - if (pAd->PortCfg.CurrentRxAntenna != 0xff) - return; - - pAd->PortCfg.RxAnt.PrimaryInUsed = FALSE; - pAd->PortCfg.RxAnt.FirstPktArrivedWhenEvaluate = FALSE; - pAd->PortCfg.RxAnt.RcvPktNumWhenEvaluate = 0; - -// pAd->PortCfg.RxAnt.AvgRssi[pAd->PortCfg.RxAnt.SecondaryRxAnt] = 0; - - DBGPRINT(RT_DEBUG_TRACE,"AntDiv - evaluate Ant #%d\n", pAd->PortCfg.RxAnt.SecondaryRxAnt); - - // temporarily switch to secondary antenna - RxValue = pAd->PortCfg.BbpWriteLatch[BBP_Rx_Configure]; - TxValue = pAd->PortCfg.BbpWriteLatch[BBP_Tx_Configure]; - RTMP_IO_READ32(pAd, BBPCSR1, &Bbpcsr1); - - if (pAd->PortCfg.RxAnt.SecondaryRxAnt == 0) // ant-A - { - TxValue = (TxValue & 0xFC) | 0x00; - RxValue = 0x1c; - Bbpcsr1 = (Bbpcsr1 & 0xFFFCFFFC) | 0x00000000; - } - else // ant-B - { - TxValue = (TxValue & 0xFC) | 0x02; - RxValue = 0x1e; - Bbpcsr1 = (Bbpcsr1 & 0xFFFCFFFC) | 0x00020002; - } - RTMP_IO_WRITE32(pAd, BBPCSR1, Bbpcsr1); - //RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, BBP_Tx_Configure, TxValue); - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, BBP_Rx_Configure, RxValue); - - // a one-shot timer to end the evalution - if (pAd->MediaState == NdisMediaStateConnected) - RTMPSetTimer(pAd, &pAd->PortCfg.RxAnt.RxAntDiversityTimer, 150); - else - RTMPSetTimer(pAd, &pAd->PortCfg.RxAnt.RxAntDiversityTimer, 300); -} - -// this timeout routine collect AvgRssi[SecondaryRxAnt] and decide if -// SecondaryRxAnt is much better than PrimaryRxAnt -VOID AsicRxAntEvalTimeout( - IN unsigned long data) -{ - RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; - - - DBGPRINT(RT_DEBUG_TRACE,"AntDiv - AsicRxAntEvalTimeout, \n"); - // Do nothing if the driver is starting halt state. - // This might happen when timer already been fired before cancel timer with mlmehalt - if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS)) - return; - - if (pAd->PortCfg.RxAnt.PrimaryInUsed == TRUE) - - return; - - // 1-db or more will we consider to switch antenna - if ((pAd->PortCfg.RxAnt.RcvPktNumWhenEvaluate != 0) && (pAd->PortCfg.RxAnt.AvgRssi[pAd->PortCfg.RxAnt.SecondaryRxAnt] >= - (pAd->PortCfg.RxAnt.AvgRssi[pAd->PortCfg.RxAnt.PrimaryRxAnt]))) - - { - UCHAR temp; - // secondary antenna is much better than primary, switch RX antenna - temp = pAd->PortCfg.RxAnt.PrimaryRxAnt; - pAd->PortCfg.RxAnt.PrimaryRxAnt = pAd->PortCfg.RxAnt.SecondaryRxAnt; - pAd->PortCfg.RxAnt.SecondaryRxAnt = temp; - pAd->PortCfg.LastAvgRssi = (pAd->PortCfg.RxAnt.AvgRssi[pAd->PortCfg.RxAnt.SecondaryRxAnt] >> 3) - pAd->PortCfg.RssiToDbm; - - DBGPRINT(RT_DEBUG_TRACE,"AntDiv - Switch to Ant #%d, RSSI[0,1]=<%d, %d>\n", - pAd->PortCfg.RxAnt.PrimaryRxAnt, pAd->PortCfg.RxAnt.AvgRssi[0], pAd->PortCfg.RxAnt.AvgRssi[1]); - } - else - { - UCHAR RxValue, TxValue; - ULONG Bbpcsr1; - - // end of evaluation, swicth back to primary antenna - RxValue = pAd->PortCfg.BbpWriteLatch[BBP_Rx_Configure]; - TxValue = pAd->PortCfg.BbpWriteLatch[BBP_Tx_Configure]; - RTMP_IO_READ32(pAd, BBPCSR1, &Bbpcsr1); - if (pAd->PortCfg.RxAnt.PrimaryRxAnt == 0) // ant-A - { - TxValue = (TxValue & 0xFC) | 0x00; - RxValue = 0x1c; - Bbpcsr1 = (Bbpcsr1 & 0xFFFCFFFC) | 0x00000000; - } - else // ant-B - { - TxValue = (TxValue & 0xFC) | 0x02; - RxValue = 0x1e; - Bbpcsr1 = (Bbpcsr1 & 0xFFFCFFFC) | 0x00020002; - } - RTMP_IO_WRITE32(pAd, BBPCSR1, Bbpcsr1); - //RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, BBP_Tx_Configure, TxValue); - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, BBP_Rx_Configure, RxValue); - DBGPRINT(RT_DEBUG_TRACE,"AntDiv - remain Ant #%d, RSSI[0,1]=<%d, %d>, RcvPktNumWhenEvaluate=%d\n", - pAd->PortCfg.RxAnt.PrimaryRxAnt, (pAd->PortCfg.RxAnt.AvgRssi[0] >> 3) - pAd->PortCfg.RssiToDbm, (pAd->PortCfg.RxAnt.AvgRssi[1] >> 3) - pAd->PortCfg.RssiToDbm, pAd->PortCfg.RxAnt.RcvPktNumWhenEvaluate); - - } - -// pAd->PortCfg.RxAnt.AvgRssi[0] = 0; // reset Ant-A's RSSI history -// pAd->PortCfg.RxAnt.AvgRssi[1] = 0; // reset Ant-B's RSSI history - pAd->PortCfg.RxAnt.PrimaryInUsed = TRUE; - pAd->PortCfg.RxAnt.FirstPktArrivedWhenEvaluate = TRUE; -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -VOID AsicSetSlotTime( - IN PRTMP_ADAPTER pAd, - IN BOOLEAN UseShortSlotTime) -{ - CSR11_STRUC Csr11; - CSR18_STRUC Csr18; - CSR19_STRUC Csr19; - UCHAR PhyMode; - - pAd->PortCfg.ShortSlotInUsed = UseShortSlotTime; - - PhyMode = pAd->PortCfg.PhyMode; - if (PhyMode == PHY_11ABG_MIXED) - { - if (pAd->PortCfg.Channel <=14) - PhyMode = PHY_11BG_MIXED; - else - PhyMode = PHY_11A; - } - - RTMP_IO_READ32(pAd, CSR11, &Csr11.word); - if (PhyMode == PHY_11A) - Csr11.field.SlotTime = 9; - else - Csr11.field.SlotTime = (UseShortSlotTime)? 9 : 20; - RTMP_IO_WRITE32(pAd, CSR11, Csr11.word); - - RTMP_IO_READ32(pAd, CSR18, &Csr18.word); - Csr18.field.PIFS = Csr18.field.SIFS + Csr11.field.SlotTime; - RTMP_IO_WRITE32(pAd, CSR18, Csr18.word); - - Csr19.word = 0; - Csr19.field.DIFS = Csr18.field.PIFS + Csr11.field.SlotTime; - if (PhyMode == PHY_11B) - Csr19.field.EIFS = 364; // SIFS + ACK @1Mbps - else - Csr19.field.EIFS = 60; // roughly = SIFS + ACK @6Mbps - RTMP_IO_WRITE32(pAd, CSR19, Csr19.word); - -#if 1 - // force using short SLOT time for FAE to demo performance only - if (pAd->PortCfg.EnableTxBurst == 1) - Csr11.field.SlotTime = 9; - RTMP_IO_WRITE32(pAd, CSR11, Csr11.word); -#endif - - DBGPRINT(RT_DEBUG_TRACE, "AsicSetSlotTime(=%d us, CSR18=0x%08x, CSR19=0x%08x)\n", - Csr11.field.SlotTime, Csr18.word, Csr19.word); -} - -/* - ========================================================================== - Description: - This routine is used for 2560a only where 2560a still use non-accurate - PCI-clock as TSF 1-usec source. we have to dynamically change tick-per-usec - to avoid ADHOC synchronization issue with SYMBOL 11b card - ========================================================================== - */ -VOID AsicAdjustUsec( - IN PRTMP_ADAPTER pAd) -{ - TIMECSR_STRUC TimeCsr; - UCHAR TickPerUsec = 20; - pAd->PortCfg.PciAdjustmentRound = (pAd->PortCfg.PciAdjustmentRound+1) & 0x03; - - RTMP_IO_READ32(pAd, TIMECSR, &TimeCsr.word); - if (pAd->PortCfg.PciAdjustmentRound == 0) - TickPerUsec = 0x21; - else if (pAd->PortCfg.PciAdjustmentRound == 1) - TickPerUsec = 0x21; - else if (pAd->PortCfg.PciAdjustmentRound == 2) - TickPerUsec = 0x20; - else - TickPerUsec = 0x21; - - if (TimeCsr.field.UsCnt!= TickPerUsec) - { - TimeCsr.field.UsCnt= TickPerUsec; - RTMP_IO_WRITE32(pAd, TIMECSR, TimeCsr.word); - DBGPRINT(RT_DEBUG_INFO, "AsicAdjustUsec - change TIMECSR=0x%08x)\n",TimeCsr.word); - } -} - -/* - ========================================================================== - Description: - danamic tune BBP R17 to find a balance between sensibility and - noise isolation - ========================================================================== - */ -VOID AsicBbpTuning( - IN PRTMP_ADAPTER pAd) -{ - ULONG Value; - UCHAR R17; - ULONG FalseCcaUpperThreshold = pAd->PortCfg.BbpTuning.FalseCcaUpperThreshold << 7; - int dbm = pAd->PortCfg.AvgRssi - pAd->PortCfg.RssiToDbm; - - if ((! pAd->PortCfg.BbpTuningEnable) || (pAd->PortCfg.BbpTuning.VgcDelta==0)) - return; - - R17 = pAd->PortCfg.BbpWriteLatch[17]; - - if ((pAd->PortCfg.Rt2560Version >= RT2560_VER_D) && - (pAd->MediaState == NdisMediaStateConnected)) - { - // Rule 0. - // when RSSI is too weak, many signals will become false CCA thus affect R17 tuning. - // so in this case, just stop R17 tuning (be sure R17 remains in range) - if ((dbm < -80) && (pAd->Mlme.PeriodicRound > 20)) - { - if (R17 >= BBP_R17_MID_SENSIBILITY) - { - R17 = pAd->PortCfg.LastR17Value; - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 17, R17); - } - DBGPRINT(RT_DEBUG_INFO, "RSSI = %d dbm, stop R17 at 0x%x\n", dbm, R17); - return; - } - // Rule 1. "special big-R17 for short-distance" when not SCANNING - else if ((dbm >= RSSI_FOR_LOW_SENSIBILITY) && - (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE)) - { - if (R17 != BBP_R17_LOW_SENSIBILITY) - { - R17 = BBP_R17_LOW_SENSIBILITY; - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 17, R17); - } - DBGPRINT(RT_DEBUG_INFO, "RSSI = %d dbm, fixed R17 at 0x%x\n", dbm, R17); - return; - } - // Rule 2. "special mid-R17 for mid-distance" when not SCANNING - else if ((dbm >= RSSI_FOR_MID_SENSIBILITY) && - (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE)) - { - if (R17 != BBP_R17_MID_SENSIBILITY) - { - R17 = BBP_R17_MID_SENSIBILITY; - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 17, R17); - } - DBGPRINT(RT_DEBUG_INFO, "RSSI = %d dbm, fixed R17 at 0x%x\n", dbm, R17); - return; - } - // Rule 3. leave "short or mid-distance" condition, restore R17 to the - // dynamic tuning range - else if (R17 >= BBP_R17_MID_SENSIBILITY) - { - R17 = pAd->PortCfg.LastR17Value; - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 17, R17); - DBGPRINT(RT_DEBUG_INFO, "RSSI = %d dbm, restore R17 to 0x%x\n", dbm, R17); - return; - } - } - - // Rule 3. otherwise, R17 is currenly in dyanmic tuning range: . - // Keep dynamic tuning based on False CCA conter - - RTMP_IO_READ32(pAd, CNT3, &Value); - pAd->PrivateInfo.CCAErrCnt = (Value & 0x0000ffff); - DBGPRINT(RT_DEBUG_INFO, "CCA flase alarm = %d, Avg RSSI= %d dbm\n", - pAd->PrivateInfo.CCAErrCnt, dbm); - - if ((pAd->PrivateInfo.CCAErrCnt > FalseCcaUpperThreshold) && - (R17 < pAd->PortCfg.BbpTuning.VgcUpperBound)) - { - R17 += pAd->PortCfg.BbpTuning.VgcDelta; - pAd->PortCfg.LastR17Value = R17; - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 17, R17); - DBGPRINT(RT_DEBUG_INFO, "++R17= 0x%x\n", R17); - } - else if ((pAd->PrivateInfo.CCAErrCnt < pAd->PortCfg.BbpTuning.FalseCcaLowerThreshold) && - (R17 > pAd->PortCfg.VgcLowerBound)) - { - R17 -= pAd->PortCfg.BbpTuning.VgcDelta; - pAd->PortCfg.LastR17Value = R17; - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 17, R17); - DBGPRINT(RT_DEBUG_INFO, "--R17= 0x%x\n", R17); - } -} - -// stop and restore R17 value upon SITE-SURVEY and LINK-DOWN -VOID AsicRestoreBbpSensibility( - IN PRTMP_ADAPTER pAd) -{ - UCHAR R17; - - R17 = pAd->PortCfg.BbpWriteLatch[17]; - if (R17 >= BBP_R17_MID_SENSIBILITY) - { - R17 = pAd->PortCfg.LastR17Value; - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 17, R17); - DBGPRINT(RT_DEBUG_TRACE, "AsicRestoreBbpSensibility(set R17= 0x%x)\n", R17); - } -} - -/* - ======================================================================== - - Routine Description: - Mlme free the in-used nonpaged memory, - move it to the unused memory link list - - Arguments: - pAd Pointer to our adapter - AllocVa Pointer to the base virtual address for free - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID MlmeFreeMemory( - IN PRTMP_ADAPTER pAd, - IN PVOID AllocVa) -{ - PMLME_MEMORY_STRUCT pPrevious = NULL; - PMLME_MEMORY_STRUCT pMlmeMemoryStruct = NULL; - UINT Index = 0; - BOOLEAN bIsFound = FALSE; - - DBGPRINT(RT_DEBUG_INFO, "==> MlmeFreeMemory\n"); - spin_lock(&pAd->MemLock); - if (pAd->Mlme.MemHandler.MemRunning) - { - //Mlme memory handler is busy. - //Move it to the Pending array for later free - pAd->Mlme.MemHandler.MemFreePending[pAd->Mlme.MemHandler.PendingCount++] = (PULONG) AllocVa; - - DBGPRINT(RT_DEBUG_INFO, "Mlme memory Handler Busy!! move free memory to pending list [IN:%d][UN:%d][Pending:%d]\n", - pAd->Mlme.MemHandler.InUseCount, pAd->Mlme.MemHandler.UnUseCount, pAd->Mlme.MemHandler.PendingCount); - DBGPRINT(RT_DEBUG_INFO, "<== MlmeFreeMemory\n"); - spin_unlock(&pAd->MemLock); - return; - } - else - { - pAd->Mlme.MemHandler.MemRunning = TRUE; - spin_unlock(&pAd->MemLock); - } - - //First check is there have to free memory in the pAd->Mlme.MemHandler.MemFreePending. - while (pAd->Mlme.MemHandler.PendingCount > 0) - { - pPrevious = NULL; - pMlmeMemoryStruct = pAd->Mlme.MemHandler.pInUseHead; - while (pMlmeMemoryStruct) - { - if (pMlmeMemoryStruct->AllocVa == (PVOID) pAd->Mlme.MemHandler.MemFreePending[Index]) - { - //Found virtual address in the in-used link list - //Remove it from the memory in-used link list, and move it to the unused link list - if (pPrevious == NULL) - { - pAd->Mlme.MemHandler.pInUseHead = pAd->Mlme.MemHandler.pInUseHead->Next; - // - // Update pInUseTail pointer, if this is an Empty list - // - if (pAd->Mlme.MemHandler.pInUseHead == NULL) - pAd->Mlme.MemHandler.pInUseTail = NULL; - } - else - { - pPrevious->Next = pMlmeMemoryStruct->Next; - // - // Update pInUseTail pointer, if move the pInUserTail to Unused link list. - // move the pInuseTail to his previous. - // - if (pMlmeMemoryStruct->Next == NULL) - { - // - // This pMlmeMemoryStruct is the one pInUseTail, since it's next pointer is NULL. - // Then we need to update pInUseTail. - // - pAd->Mlme.MemHandler.pInUseTail = pPrevious; - } - } - - if ((pAd->Mlme.MemHandler.pUnUseHead == NULL)) - { //No head, add it as head - pMlmeMemoryStruct->Next = NULL; - pAd->Mlme.MemHandler.pUnUseHead = pMlmeMemoryStruct; - pAd->Mlme.MemHandler.pUnUseTail = pAd->Mlme.MemHandler.pUnUseHead; - } - else - { - //Append it to the tail in pAd->Mlme.MemHandler.pUnUseTail - pMlmeMemoryStruct->Next = NULL; - pAd->Mlme.MemHandler.pUnUseTail->Next = pMlmeMemoryStruct; - pAd->Mlme.MemHandler.pUnUseTail = pAd->Mlme.MemHandler.pUnUseTail->Next; - } - pAd->Mlme.MemHandler.MemFreePending[Index++] = NULL; - pAd->Mlme.MemHandler.PendingCount--; - pAd->Mlme.MemHandler.UnUseCount++; - pAd->Mlme.MemHandler.InUseCount--; - bIsFound = TRUE; - break; - } - else - { - pPrevious = pMlmeMemoryStruct; - pMlmeMemoryStruct = pMlmeMemoryStruct->Next; - } - } - - if (!bIsFound) - { - //This shoult not be happened! Just in case! - DBGPRINT(RT_DEBUG_INFO, "Free memory faild!! memory corruption on [Va:0x%lu] not found in In-Used link list [IN:%d][UN:%d][Pending:%d]\n", - (unsigned long)pAd->Mlme.MemHandler.MemFreePending[pAd->Mlme.MemHandler.PendingCount], - pAd->Mlme.MemHandler.InUseCount, pAd->Mlme.MemHandler.UnUseCount, pAd->Mlme.MemHandler.PendingCount); - //lost a memory - pAd->Mlme.MemHandler.MemFreePending[Index++] = NULL; - pAd->Mlme.MemHandler.PendingCount--; - } - } - - pPrevious = NULL; - pMlmeMemoryStruct = pAd->Mlme.MemHandler.pInUseHead; - while (pMlmeMemoryStruct) - { - if (pMlmeMemoryStruct->AllocVa == AllocVa) - { - //Found virtual address in the in-used link list - //Remove it from the memory in-used link list, and move it to the unused link list - if (pPrevious == NULL) - { - pAd->Mlme.MemHandler.pInUseHead = pAd->Mlme.MemHandler.pInUseHead->Next; - // - // Update pInUseTail pointer, if this is an Empty list - // - if (pAd->Mlme.MemHandler.pInUseHead == NULL) - pAd->Mlme.MemHandler.pInUseTail = NULL; - } - else - { - pPrevious->Next = pMlmeMemoryStruct->Next; - // - // Update pInUseTail pointer, if move the pInUserTail to Unused link list. - // move the pInuseTail to his previous. - // - if (pMlmeMemoryStruct->Next == NULL) - { - // - // This pMlmeMemoryStruct is the one pInUseTail, since it's next pointer is NULL. - // Then we need to update pInUseTail. - // - pAd->Mlme.MemHandler.pInUseTail = pPrevious; - } - } - - if (pAd->Mlme.MemHandler.pUnUseHead == NULL) - { - pMlmeMemoryStruct->Next = NULL; - pAd->Mlme.MemHandler.pUnUseHead = pMlmeMemoryStruct; - pAd->Mlme.MemHandler.pUnUseTail = pMlmeMemoryStruct; - } - else - { - pMlmeMemoryStruct->Next = NULL; - pAd->Mlme.MemHandler.pUnUseTail->Next = pMlmeMemoryStruct; - pAd->Mlme.MemHandler.pUnUseTail = pMlmeMemoryStruct; - } - - pAd->Mlme.MemHandler.InUseCount--; - pAd->Mlme.MemHandler.UnUseCount++; - DBGPRINT(RT_DEBUG_INFO, "MlmeFreeMemory Add it to the Unused memory link List[pMlmeMemoryStruct=0x%lu][VA=0x%lu]\n", (unsigned long)pMlmeMemoryStruct, (unsigned long)pMlmeMemoryStruct->AllocVa); - break; - } - pPrevious = pMlmeMemoryStruct; - pMlmeMemoryStruct = pMlmeMemoryStruct->Next; - } - - spin_lock(&pAd->MemLock); - pAd->Mlme.MemHandler.MemRunning = FALSE; - spin_unlock(&pAd->MemLock); - - DBGPRINT(RT_DEBUG_INFO, "<== MlmeFreeMemory [IN:%d][UN:%d][Pending:%d]\n", - pAd->Mlme.MemHandler.InUseCount, pAd->Mlme.MemHandler.UnUseCount, pAd->Mlme.MemHandler.PendingCount); -} - -/* - ======================================================================== - - Routine Description: - Get an unused nonpaged system-space memory for use - - Arguments: - pAd Pointer to our adapter - AllocVa Pointer to the base virtual address for later use - - Return Value: - NDIS_STATUS_SUCCESS - NDIS_STATUS_FAILURE - NDIS_STATUS_RESOURCES - - Note: - - ======================================================================== -*/ -NDIS_STATUS MlmeAllocateMemory( - IN PRTMP_ADAPTER pAd, - OUT PVOID *AllocVa) -{ - NDIS_STATUS Status = NDIS_STATUS_SUCCESS; - PMLME_MEMORY_STRUCT pMlmeMemoryStruct = NULL; - - DBGPRINT(RT_DEBUG_INFO, "==> MlmeAllocateMemory\n"); - spin_lock(&pAd->MemLock); - if (pAd->Mlme.MemHandler.MemRunning) - { - DBGPRINT(RT_DEBUG_INFO, "Mlme memory Handler Busy!!, MlmeAllocateMemory failed!!\n"); - Status = NDIS_STATUS_FAILURE; - DBGPRINT(RT_DEBUG_INFO, "<== MlmeAllocateMemory\n"); - spin_unlock(&pAd->MemLock); - return (Status); - } - else - { - pAd->Mlme.MemHandler.MemRunning = TRUE; - spin_unlock(&pAd->MemLock); - } - - if (pAd->Mlme.MemHandler.pUnUseHead == NULL) - { //There are no available memory for caller use - Status = NDIS_STATUS_RESOURCES; - spin_lock(&pAd->MemLock); - pAd->Mlme.MemHandler.MemRunning = FALSE; - spin_unlock(&pAd->MemLock); - DBGPRINT(RT_DEBUG_INFO, "MlmeAllocateMemory, failed!! (There are no available memory in list)\n"); - DBGPRINT(RT_DEBUG_INFO, "<== MlmeAllocateMemory\n"); - return (Status); - } - - pMlmeMemoryStruct = pAd->Mlme.MemHandler.pUnUseHead; - *AllocVa = pMlmeMemoryStruct->AllocVa; //Saved porint to Pointer the base virtual address of the nonpaged memory for caller use. - //Unused memory point to next available - pAd->Mlme.MemHandler.pUnUseHead = pAd->Mlme.MemHandler.pUnUseHead->Next; - pAd->Mlme.MemHandler.UnUseCount--; - - //Append the unused memory link list to the in-used link list tail - if (pAd->Mlme.MemHandler.pInUseHead == NULL) - {//no head, so current Item assign to In-use Head. - pAd->Mlme.MemHandler.pInUseHead = pMlmeMemoryStruct; - pAd->Mlme.MemHandler.pInUseHead->Next = NULL; - pAd->Mlme.MemHandler.pInUseTail = pAd->Mlme.MemHandler.pInUseHead; - } - else - { - pMlmeMemoryStruct->Next = NULL; - pAd->Mlme.MemHandler.pInUseTail->Next = pMlmeMemoryStruct; - pAd->Mlme.MemHandler.pInUseTail = pAd->Mlme.MemHandler.pInUseTail->Next; - } - pAd->Mlme.MemHandler.InUseCount++; - spin_lock(&pAd->MemLock); - pAd->Mlme.MemHandler.MemRunning = FALSE; - spin_unlock(&pAd->MemLock); - DBGPRINT(RT_DEBUG_INFO, "MlmeAllocateMemory [pMlmeMemoryStruct=0x%lu][VA=0x%lu]\n", (unsigned long)pMlmeMemoryStruct, (unsigned long)pMlmeMemoryStruct->AllocVa); - DBGPRINT(RT_DEBUG_INFO, "<== MlmeAllocateMemory[IN:%d][UN:%d][Pending:%d]\n", - pAd->Mlme.MemHandler.InUseCount, pAd->Mlme.MemHandler.UnUseCount, pAd->Mlme.MemHandler.PendingCount); - - return (Status); -} - -/* - ======================================================================== - - Routine Description: - Allocates resident (nonpaged) system-space memory for MLME send frames - - Arguments: - pAd Pointer to our adapter - Number Total nonpaged memory for use - Size Each nonpaged memory size - - Return Value: - NDIS_STATUS_SUCCESS - NDIS_STATUS_RESOURCES - - Note: - - ======================================================================== -*/ -NDIS_STATUS MlmeInitMemoryHandler( - IN PRTMP_ADAPTER pAd, - IN UINT Number, - IN UINT Size) -{ - PMLME_MEMORY_STRUCT Current = NULL; - NDIS_STATUS Status = NDIS_STATUS_SUCCESS; - UINT i; - - DBGPRINT(RT_DEBUG_INFO, "==> MlmeInitMemory\n"); - pAd->Mlme.MemHandler.MemoryCount = 0; - pAd->Mlme.MemHandler.pInUseHead = NULL; - pAd->Mlme.MemHandler.pInUseTail = NULL; - pAd->Mlme.MemHandler.pUnUseHead = NULL; - pAd->Mlme.MemHandler.pUnUseTail = NULL; - pAd->Mlme.MemHandler.MemRunning = FALSE; - - //initial the memory free-pending array all to NULL; - for (i = 0; i < MAX_MLME_HANDLER_MEMORY; i++) - pAd->Mlme.MemHandler.MemFreePending[i] = NULL; - - // - // Available nonpaged memory counts MAX_MLME_HANDLER_MEMORY - // - if (Number > MAX_MLME_HANDLER_MEMORY) - Number = MAX_MLME_HANDLER_MEMORY; - - for (i = 0; i < Number; i++) - { - //Allocate a nonpaged memory for link list use. - Current = kmalloc(sizeof(MLME_MEMORY_STRUCT), GFP_ATOMIC); - if (Current == NULL) - { - Status = NDIS_STATUS_RESOURCES; - break; - } - - //Allocate a nonpaged memory for mlme use, Current->AllocVa is VirtualAddress pointer - Current->AllocVa = kmalloc(Size, GFP_ATOMIC); - if (Current->AllocVa == NULL) - { - Status = NDIS_STATUS_RESOURCES; - //Free the nonpaged memory of the current link list - kfree((VOID *)Current); - break; - } - memset(Current->AllocVa, 0, Size); - - pAd->Mlme.MemHandler.MemoryCount++; - - //build up the link list - if (pAd->Mlme.MemHandler.pUnUseHead != NULL) - { - Current->Next = pAd->Mlme.MemHandler.pUnUseHead; - pAd->Mlme.MemHandler.pUnUseHead = Current; - } - else - { - Current->Next = NULL; - pAd->Mlme.MemHandler.pUnUseHead = Current; - } - - if (pAd->Mlme.MemHandler.pUnUseTail == NULL) - pAd->Mlme.MemHandler.pUnUseTail = Current; - - } - - if (pAd->Mlme.MemHandler.MemoryCount < Number) - { - Status = NDIS_STATUS_RESOURCES; - DBGPRINT(RT_DEBUG_TRACE, "MlmeInitMemory Initial failed [Require=%d, available=%d]\n", Number, pAd->Mlme.MemHandler.MemoryCount); - } - - pAd->Mlme.MemHandler.InUseCount = 0; - pAd->Mlme.MemHandler.UnUseCount = Number; - pAd->Mlme.MemHandler.PendingCount = 0; - DBGPRINT(RT_DEBUG_INFO, "<== MlmeInitMemory\n"); - return (Status); -} - -/* - ======================================================================== - - Routine Description: - Free Mlme memory handler (link list, nonpaged memory, spin lock) - - Arguments: - pAd Pointer to our adapter - - Return Value: - None - ======================================================================== -*/ -VOID MlmeFreeMemoryHandler( - IN PRTMP_ADAPTER pAd) -{ - PMLME_MEMORY_STRUCT pMlmeMemoryStruct = NULL; - - //Free nonpaged memory, free it in the *In-used* link list. - while (pAd->Mlme.MemHandler.pInUseHead != NULL) - { - pMlmeMemoryStruct = pAd->Mlme.MemHandler.pInUseHead; - pAd->Mlme.MemHandler.pInUseHead = pAd->Mlme.MemHandler.pInUseHead->Next; - //Free the virtual address in AllocVa which size is MAX_LEN_OF_MLME_BUFFER - kfree(pMlmeMemoryStruct->AllocVa); - //Free the link list item self - kfree(pMlmeMemoryStruct); - } - - //Free nonpaged memory, free it in the *Unused* link list. - while (pAd->Mlme.MemHandler.pUnUseHead != NULL) - { - pMlmeMemoryStruct = pAd->Mlme.MemHandler.pUnUseHead; - pAd->Mlme.MemHandler.pUnUseHead = pAd->Mlme.MemHandler.pUnUseHead->Next; - //Free the virtual address in AllocVa which size is MAX_LEN_OF_MLME_BUFFER - kfree(pMlmeMemoryStruct->AllocVa); - //Free the link list item self - kfree(pMlmeMemoryStruct); - } -} - +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: mlme.c + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * MarkW 8th Dec 04 Baseline code + * MarkW 8th Dec 04 kmalloc ATOMIC fixes + * RobinC 10th Dec 04 RFMON Support + * MarkW 10th Dec 04 Rolled in Ralink 1.4.5.0 + * Ivo (rt2400) 15th Dec 04 Uninitialised timer + * MarkW 17th Dec 04 Monitor mode through iwconfig + * BrunoH 3rd Feb 04 Fix for 802.11b adhoc association + * JohnC 19th Mar 04 Fixes for quality reporting + * MarkW 13th Jun 05 Fix to allow adhoc network creation + ***************************************************************************/ + +#include "rt_config.h" +#include + +// e.g. RssiSafeLevelForTxRate[RATE_36]" means if the current RSSI is greater than +// this value, then it's quaranteed capable of operating in 36 mbps TX rate in +// clean environment. +// TxRate: 1 2 5.5 11 6 9 12 18 24 36 48 54 72 100 +CHAR RssiSafeLevelForTxRate[] ={ -92, -91, -90, -87, -88, -86, -85, -83, -81, -78, -72, -71, -40, -40 }; + + // 1 2 5.5 11 +UCHAR Phy11BNextRateDownward[] = {RATE_1, RATE_1, RATE_2, RATE_5_5}; +UCHAR Phy11BNextRateUpward[] = {RATE_2, RATE_5_5, RATE_11, RATE_11}; + + // 1 2 5.5 11 6 9 12 18 24 36 48 54 +UCHAR Phy11BGNextRateDownward[]= {RATE_1, RATE_1, RATE_2, RATE_5_5,RATE_11, RATE_6, RATE_11, RATE_12, RATE_18, RATE_24, RATE_36, RATE_48}; +UCHAR Phy11BGNextRateUpward[] = {RATE_2, RATE_5_5, RATE_11, RATE_12, RATE_9, RATE_12, RATE_18, RATE_24, RATE_36, RATE_48, RATE_54, RATE_54}; + + // 1 2 5.5 11 6 9 12 18 24 36 48 54 +UCHAR Phy11ANextRateDownward[] = {RATE_6, RATE_6, RATE_6, RATE_6, RATE_6, RATE_6, RATE_9, RATE_12, RATE_18, RATE_24, RATE_36, RATE_48}; +UCHAR Phy11ANextRateUpward[] = {RATE_9, RATE_9, RATE_9, RATE_9, RATE_9, RATE_12, RATE_18, RATE_24, RATE_36, RATE_48, RATE_54, RATE_54}; + +// 2560D and after has implemented ASIC-based OFDM rate switching, but not +// 2560C and before. thus software use different PER for rate switching +// RATE_1, 2, 5.5, 11, 6, 9, 12, 18, 24, 36, 48, 54 +USHORT NewRateUpPER[] = { 40, 40, 35, 20, 20, 20, 20, 16, 10, 16, 10, 6 }; // in percentage +USHORT NewRateDownPER[] = { 50, 50, 45, 45, 35, 35, 35, 35, 25, 25, 25, 13 }; // in percentage + +USHORT OldRateUpPER[] = { 40, 40, 40, 40, 30, 30, 30, 30, 20, 20, 10, 10 }; // in percentage +USHORT OldRateDownPER[] = { 45, 45, 45, 45, 35, 35, 35, 35, 25, 25, 25, 12 }; // in percentage + +UCHAR RateIdToMbps[] = { 1, 2, 5, 11, 6, 9, 12, 18, 24, 36, 48, 54, 72, 100}; +USHORT RateIdTo500Kbps[] = { 2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108, 144, 200}; + +RTMP_RF_REGS RF2522RegTable[] = { +// ch R1 R2 R3(TX0~4=0) R4 + {1, 0x94002050, 0x940c1fda, 0x94000101, 0}, + {2, 0x94002050, 0x940c1fee, 0x94000101, 0}, + {3, 0x94002050, 0x940c2002, 0x94000101, 0}, + {4, 0x94002050, 0x940c2016, 0x94000101, 0}, + {5, 0x94002050, 0x940c202a, 0x94000101, 0}, + {6, 0x94002050, 0x940c203e, 0x94000101, 0}, + {7, 0x94002050, 0x940c2052, 0x94000101, 0}, + {8, 0x94002050, 0x940c2066, 0x94000101, 0}, + {9, 0x94002050, 0x940c207a, 0x94000101, 0}, + {10, 0x94002050, 0x940c208e, 0x94000101, 0}, + {11, 0x94002050, 0x940c20a2, 0x94000101, 0}, + {12, 0x94002050, 0x940c20b6, 0x94000101, 0}, + {13, 0x94002050, 0x940c20ca, 0x94000101, 0}, + {14, 0x94002050, 0x940c20fa, 0x94000101, 0} +}; +#define NUM_OF_2522_CHNL (sizeof(RF2522RegTable) / sizeof(RTMP_RF_REGS)) + +RTMP_RF_REGS RF2523RegTable[] = { +// ch R1 R2 R3(TX0~4=0) R4 + {1, 0x94022010, 0x94000c9e, 0x940e0111, 0x94000a1b}, + {2, 0x94022010, 0x94000ca2, 0x940e0111, 0x94000a1b}, + {3, 0x94022010, 0x94000ca6, 0x940e0111, 0x94000a1b}, + {4, 0x94022010, 0x94000caa, 0x940e0111, 0x94000a1b}, + {5, 0x94022010, 0x94000cae, 0x940e0111, 0x94000a1b}, + {6, 0x94022010, 0x94000cb2, 0x940e0111, 0x94000a1b}, + {7, 0x94022010, 0x94000cb6, 0x940e0111, 0x94000a1b}, + {8, 0x94022010, 0x94000cba, 0x940e0111, 0x94000a1b}, + {9, 0x94022010, 0x94000cbe, 0x940e0111, 0x94000a1b}, + {10, 0x94022010, 0x94000d02, 0x940e0111, 0x94000a1b}, + {11, 0x94022010, 0x94000d06, 0x940e0111, 0x94000a1b}, + {12, 0x94022010, 0x94000d0a, 0x940e0111, 0x94000a1b}, + {13, 0x94022010, 0x94000d0e, 0x940e0111, 0x94000a1b}, + {14, 0x94022010, 0x94000d1a, 0x940e0111, 0x94000a03} +#if 0 + {1, 0x94022050, 0x940c1fda, 0x940e8101, 0}, + {2, 0x94022050, 0x940c1fee, 0x940e8101, 0}, + {3, 0x94022050, 0x940c2002, 0x940e8101, 0}, + {4, 0x94022050, 0x940c2016, 0x940e8101, 0}, + {5, 0x94022050, 0x940c202a, 0x940e8101, 0}, + {6, 0x94022050, 0x940c203e, 0x940e8101, 0}, + {7, 0x94022050, 0x940c2052, 0x940e8101, 0}, + {8, 0x94022050, 0x940c2066, 0x940e8101, 0}, + {9, 0x94022050, 0x940c207a, 0x940e8101, 0}, + {10, 0x94022050, 0x940c208e, 0x940e8101, 0}, + {11, 0x94022050, 0x940c20a2, 0x940e8101, 0}, + {12, 0x94022050, 0x940c20b6, 0x940e8101, 0}, + {13, 0x94022050, 0x940c20ca, 0x940e8101, 0}, + {14, 0x94022050, 0x940c20fa, 0x940e8101, 0} +#endif +}; +#define NUM_OF_2523_CHNL (sizeof(RF2523RegTable) / sizeof(RTMP_RF_REGS)) + +RTMP_RF_REGS RF2524RegTable[] = { +// ch R1 R2 R3(TX0~4=0) R4 + {1, 0x94032020, 0x94000c9e, 0x94000101, 0x94000a1b}, + {2, 0x94032020, 0x94000ca2, 0x94000101, 0x94000a1b}, + {3, 0x94032020, 0x94000ca6, 0x94000101, 0x94000a1b}, + {4, 0x94032020, 0x94000caa, 0x94000101, 0x94000a1b}, + {5, 0x94032020, 0x94000cae, 0x94000101, 0x94000a1b}, + {6, 0x94032020, 0x94000cb2, 0x94000101, 0x94000a1b}, + {7, 0x94032020, 0x94000cb6, 0x94000101, 0x94000a1b}, + {8, 0x94032020, 0x94000cba, 0x94000101, 0x94000a1b}, + {9, 0x94032020, 0x94000cbe, 0x94000101, 0x94000a1b}, + {10, 0x94032020, 0x94000d02, 0x94000101, 0x94000a1b}, + {11, 0x94032020, 0x94000d06, 0x94000101, 0x94000a1b}, + {12, 0x94032020, 0x94000d0a, 0x94000101, 0x94000a1b}, + {13, 0x94032020, 0x94000d0e, 0x94000101, 0x94000a1b}, + {14, 0x94032020, 0x94000d1a, 0x94000101, 0x94000a03} +}; +#define NUM_OF_2524_CHNL (sizeof(RF2524RegTable) / sizeof(RTMP_RF_REGS)) + +RTMP_RF_REGS RF2525RegTable[] = { +// ch R1 R2 R3(TX0~4=0) R4 + {1, 0x94022020, 0x94080c9e, 0x94060111, 0x94000a1b}, // {1, 0x94022010, 0x9408062e, 0x94060111, 0x94000a23}, + {2, 0x94022020, 0x94080ca2, 0x94060111, 0x94000a1b}, + {3, 0x94022020, 0x94080ca6, 0x94060111, 0x94000a1b}, + {4, 0x94022020, 0x94080caa, 0x94060111, 0x94000a1b}, + {5, 0x94022020, 0x94080cae, 0x94060111, 0x94000a1b}, + {6, 0x94022020, 0x94080cb2, 0x94060111, 0x94000a1b}, + {7, 0x94022020, 0x94080cb6, 0x94060111, 0x94000a1b}, + {8, 0x94022020, 0x94080cba, 0x94060111, 0x94000a1b}, + {9, 0x94022020, 0x94080cbe, 0x94060111, 0x94000a1b}, + {10, 0x94022020, 0x94080d02, 0x94060111, 0x94000a1b}, + {11, 0x94022020, 0x94080d06, 0x94060111, 0x94000a1b}, // {11, 0x94022010, 0x94080682, 0x94060111, 0x94000a23}, + {12, 0x94022020, 0x94080d0a, 0x94060111, 0x94000a1b}, + {13, 0x94022020, 0x94080d0e, 0x94060111, 0x94000a1b}, // {13, 0x94022010, 0x94080686, 0x94060111, 0x94000a23}, + {14, 0x94022020, 0x94080d1a, 0x94060111, 0x94000a03} +}; +#define NUM_OF_2525_CHNL (sizeof(RF2525RegTable) / sizeof(RTMP_RF_REGS)) + +RTMP_RF_REGS RF2525HBOffsetRegTable[] = { + {1, 0x94022020, 0x94080cbe, 0x94060111, 0x94000a1b}, + {2, 0x94022020, 0x94080d02, 0x94060111, 0x94000a1b}, + {3, 0x94022020, 0x94080d06, 0x94060111, 0x94000a1b}, + {4, 0x94022020, 0x94080d0a, 0x94060111, 0x94000a1b}, + {5, 0x94022020, 0x94080d0e, 0x94060111, 0x94000a1b}, + {6, 0x94022020, 0x94080d12, 0x94060111, 0x94000a1b}, + {7, 0x94022020, 0x94080d16, 0x94060111, 0x94000a1b}, + {8, 0x94022020, 0x94080d1a, 0x94060111, 0x94000a1b}, + {9, 0x94022020, 0x94080d1e, 0x94060111, 0x94000a1b}, + {10, 0x94022020, 0x94080d22, 0x94060111, 0x94000a1b}, + {11, 0x94022020, 0x94080d26, 0x94060111, 0x94000a1b}, + {12, 0x94022020, 0x94080d2a, 0x94060111, 0x94000a1b}, + {13, 0x94022020, 0x94080d2e, 0x94060111, 0x94000a1b}, + {14, 0x94022020, 0x94080d3a, 0x94060111, 0x94000a03} +}; + +RTMP_RF_REGS RF2525eRegTable[] = { +#if 1 +// using 5 Mhz reference clock +// ch R1 R2 R3(TX0~4=0) R4 + {1, 0x94022020, 0x94081136, 0x94060111, 0x94000a0b}, + {2, 0x94022020, 0x9408113a, 0x94060111, 0x94000a0b}, + {3, 0x94022020, 0x9408113e, 0x94060111, 0x94000a0b}, + {4, 0x94022020, 0x94081182, 0x94060111, 0x94000a0b}, + {5, 0x94022020, 0x94081186, 0x94060111, 0x94000a0b}, + {6, 0x94022020, 0x9408118a, 0x94060111, 0x94000a0b}, + {7, 0x94022020, 0x9408118e, 0x94060111, 0x94000a0b}, + {8, 0x94022020, 0x94081192, 0x94060111, 0x94000a0b}, + {9, 0x94022020, 0x94081196, 0x94060111, 0x94000a0b}, + {10, 0x94022020, 0x9408119a, 0x94060111, 0x94000a0b}, + {11, 0x94022020, 0x9408119e, 0x94060111, 0x94000a0b}, + {12, 0x94022020, 0x940811a2, 0x94060111, 0x94000a0b}, + {13, 0x94022020, 0x940811a6, 0x94060111, 0x94000a0b}, + {14, 0x94022020, 0x940811ae, 0x94060111, 0x94000a1b} +#else +// using 10 Mhz reference clock +// ch R1 R2 R3(TX0~4=0) R4 + {1, 0x94022010, 0x9408089a, 0x94060111, 0x94000a1b}, + {2, 0x94022010, 0x9408089e, 0x94060111, 0x94000a07}, + {3, 0x94022010, 0x9408089e, 0x94060111, 0x94000a1b}, + {4, 0x94022010, 0x940808a2, 0x94060111, 0x94000a07}, + {5, 0x94022010, 0x940808a2, 0x94060111, 0x94000a1b}, + {6, 0x94022010, 0x940808a6, 0x94060111, 0x94000a07}, + {7, 0x94022010, 0x940808a6, 0x94060111, 0x94000a1b}, + {8, 0x94022010, 0x940808aa, 0x94060111, 0x94000a07}, + {9, 0x94022010, 0x940808aa, 0x94060111, 0x94000a1b}, + {10, 0x94022010, 0x940808ae, 0x94060111, 0x94000a07}, + {11, 0x94022010, 0x940808ae, 0x94060111, 0x94000a1b}, + {12, 0x94022010, 0x940808b2, 0x94060111, 0x94000a07}, + {13, 0x94022010, 0x940808b2, 0x94060111, 0x94000a1b}, + {14, 0x94022010, 0x940808b6, 0x94060111, 0x94000a23} +#endif +}; +#define NUM_OF_2525E_CHNL (sizeof(RF2525eRegTable) / sizeof(RTMP_RF_REGS)) + +RTMP_RF_REGS RF5222RegTable[] = { +// ch R1 R2 R3(TX0~4=0) R4 + {1, 0x94022020, 0x94001136, 0x94000101, 0x94000a0b}, + {2, 0x94022020, 0x9400113a, 0x94000101, 0x94000a0b}, + {3, 0x94022020, 0x9400113e, 0x94000101, 0x94000a0b}, + {4, 0x94022020, 0x94001182, 0x94000101, 0x94000a0b}, + {5, 0x94022020, 0x94001186, 0x94000101, 0x94000a0b}, + {6, 0x94022020, 0x9400118a, 0x94000101, 0x94000a0b}, + {7, 0x94022020, 0x9400118e, 0x94000101, 0x94000a0b}, + {8, 0x94022020, 0x94001192, 0x94000101, 0x94000a0b}, + {9, 0x94022020, 0x94001196, 0x94000101, 0x94000a0b}, + {10, 0x94022020, 0x9400119a, 0x94000101, 0x94000a0b}, + {11, 0x94022020, 0x9400119e, 0x94000101, 0x94000a0b}, + {12, 0x94022020, 0x940011a2, 0x94000101, 0x94000a0b}, + {13, 0x94022020, 0x940011a6, 0x94000101, 0x94000a0b}, + {14, 0x94022020, 0x940011ae, 0x94000101, 0x94000a1b}, + + // still lack of MMAC(Japan) ch 34,38,42,46 + + {36, 0x94022010, 0x94018896, 0x94000101, 0x94000a1f}, + {40, 0x94022010, 0x9401889a, 0x94000101, 0x94000a1f}, + {44, 0x94022010, 0x9401889e, 0x94000101, 0x94000a1f}, + {48, 0x94022010, 0x940188a2, 0x94000101, 0x94000a1f}, + {52, 0x94022010, 0x940188a6, 0x94000101, 0x94000a1f}, + {66, 0x94022010, 0x940188aa, 0x94000101, 0x94000a1f}, + {60, 0x94022010, 0x940188ae, 0x94000101, 0x94000a1f}, + {64, 0x94022010, 0x940188b2, 0x94000101, 0x94000a1f}, + + {100, 0x94022010, 0x94008802, 0x94000101, 0x94000a0f}, + {104, 0x94022010, 0x94008806, 0x94000101, 0x94000a0f}, + {108, 0x94022010, 0x9400880a, 0x94000101, 0x94000a0f}, + {112, 0x94022010, 0x9400880e, 0x94000101, 0x94000a0f}, + {116, 0x94022010, 0x94008812, 0x94000101, 0x94000a0f}, + {120, 0x94022010, 0x94008816, 0x94000101, 0x94000a0f}, + {124, 0x94022010, 0x9400881a, 0x94000101, 0x94000a0f}, + {128, 0x94022010, 0x9400881e, 0x94000101, 0x94000a0f}, + {132, 0x94022010, 0x94008822, 0x94000101, 0x94000a0f}, + {136, 0x94022010, 0x94008826, 0x94000101, 0x94000a0f}, + {140, 0x94022010, 0x9400882a, 0x94000101, 0x94000a0f}, + + {149, 0x94022020, 0x940090a6, 0x94000101, 0x94000a07}, + {153, 0x94022020, 0x940090ae, 0x94000101, 0x94000a07}, + {157, 0x94022020, 0x940090b6, 0x94000101, 0x94000a07}, + {161, 0x94022020, 0x940090be, 0x94000101, 0x94000a07} +}; +#define NUM_OF_5222_CHNL (sizeof(RF5222RegTable) / sizeof(RTMP_RF_REGS)) + +/* + ========================================================================== + Description: + initialize the MLME task and its data structure (queue, spinlock, + timer, state machines). + Return: + always return NDIS_STATUS_SUCCESS + ========================================================================== +*/ +NDIS_STATUS MlmeInit( + IN PRTMP_ADAPTER pAd) +{ + NDIS_STATUS Status = NDIS_STATUS_SUCCESS; + + if(RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_MLME_INITIALIZED)) + return Status; + + DBGPRINT(RT_DEBUG_TRACE, "--> MLME Initialize\n"); + + do + { + pAd->Mlme.Running = FALSE; + spin_lock_init(&pAd->Mlme.TaskLock); + + // initialize the two tables + // MacTableInit(pAd); + BssTableInit(&pAd->PortCfg.BssTab); + + // init state machines + ASSERT(ASSOC_FUNC_SIZE == MAX_ASSOC_MSG * MAX_ASSOC_STATE); + AssocStateMachineInit(pAd, &pAd->Mlme.AssocMachine, pAd->Mlme.AssocFunc); + + ASSERT(AUTH_FUNC_SIZE == MAX_AUTH_MSG * MAX_AUTH_STATE); + AuthStateMachineInit(pAd, &pAd->Mlme.AuthMachine, pAd->Mlme.AuthFunc); + + ASSERT(AUTH_RSP_FUNC_SIZE == MAX_AUTH_RSP_MSG * MAX_AUTH_RSP_STATE); + AuthRspStateMachineInit(pAd, &pAd->Mlme.AuthRspMachine, pAd->Mlme.AuthRspFunc); + + ASSERT(SYNC_FUNC_SIZE == MAX_SYNC_MSG * MAX_SYNC_STATE); + SyncStateMachineInit(pAd, &pAd->Mlme.SyncMachine, pAd->Mlme.SyncFunc); + + ASSERT(WPA_PSK_FUNC_SIZE == MAX_WPA_PSK_MSG * MAX_WPA_PSK_STATE); + WpaPskStateMachineInit(pAd,&pAd->Mlme.WpaPskMachine,pAd->Mlme.WpaPskFunc); + + // Since we are using switch/case to implement it, the init is different from the above + // state machine init + MlmeCntlInit(pAd, &pAd->Mlme.CntlMachine, NULL); + + // Init mlme periodic timer + RTMPInitTimer(pAd, &pAd->Mlme.PeriodicTimer, MlmePeriodicExec); + // Set mlme periodic timer + RTMPSetTimer(pAd, &pAd->Mlme.PeriodicTimer, MLME_TASK_EXEC_INTV); + + RTMPInitTimer(pAd, &pAd->PortCfg.LedCntl.BlinkTimer, AsicLedPeriodicExec); + if (pAd->PortCfg.LedMode == LED_MODE_TXRX_ACTIVITY) + { + // Set blink timer + RTMPSetTimer(pAd, &pAd->PortCfg.LedCntl.BlinkTimer, 70); + } + + // software-based RX Antenna diversity + RTMPInitTimer(pAd, &pAd->PortCfg.RxAnt.RxAntDiversityTimer, AsicRxAntEvalTimeout); + } while (FALSE); + + RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_MLME_INITIALIZED); + + DBGPRINT(RT_DEBUG_TRACE, "<-- MLME Initialize\n"); + + return Status; +} + + +/* + ========================================================================== + Description: + main loop of the MLME + Pre: + Mlme has to be initialized, and there are something inside the queue + Note: + This function is invoked from MPSetInformation and MPReceive; + This task guarantee only one MlmeHandler will run. + ========================================================================== + */ +VOID MlmeHandler( + IN PRTMP_ADAPTER pAd) +{ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) + schedule_work(&pAd->mlme_work); +} + +VOID MlmeWork(void *vpAd) +{ + PRTMP_ADAPTER pAd = vpAd; +#endif + MLME_QUEUE_ELEM *Elem = NULL; + unsigned long flags; + int loops = 0; + + // Only accept MLME and Frame from peer side, no other (control/data) frame should + // get into this state machine + + spin_lock_irqsave(&pAd->Mlme.TaskLock,flags); + if(pAd->Mlme.Running) + { + spin_unlock_irqrestore(&pAd->Mlme.TaskLock,flags); + return; + } + else + { + pAd->Mlme.Running = TRUE; + } + spin_unlock_irqrestore(&pAd->Mlme.TaskLock,flags); + + while (MlmeDequeue(&pAd->Mlme.Queue, &Elem)) + { + //From message type, determine which state machine I should drive + if (pAd->PortCfg.BssType != BSS_MONITOR) + { + // if dequeue success + switch (Elem->Machine) + { + case ASSOC_STATE_MACHINE: + StateMachinePerformAction(pAd, &pAd->Mlme.AssocMachine, Elem); + break; + case AUTH_STATE_MACHINE: + StateMachinePerformAction(pAd, &pAd->Mlme.AuthMachine, Elem); + break; + case AUTH_RSP_STATE_MACHINE: + StateMachinePerformAction(pAd, &pAd->Mlme.AuthRspMachine, Elem); + break; + case SYNC_STATE_MACHINE: + StateMachinePerformAction(pAd, &pAd->Mlme.SyncMachine, Elem); + break; + case MLME_CNTL_STATE_MACHINE: + MlmeCntlMachinePerformAction(pAd, &pAd->Mlme.CntlMachine, Elem); + break; + case WPA_PSK_STATE_MACHINE: + StateMachinePerformAction(pAd, &pAd->Mlme.WpaPskMachine, Elem); + break; + default: + DBGPRINT(RT_DEBUG_TRACE, "ERROR: Illegal machine in MlmeHandler()\n"); + break; + } // end of switch + + // free MLME element + Elem->Occupied = FALSE; + Elem->MsgLen = 0; + + } + else + { + printk(KERN_ERR DRV_NAME "ERROR: empty Elem in MlmeQueue\n"); + } + loops++; + if (loops > 50) + /* something wrong - avoid locking up the computer solid */ + break; + } + + spin_lock_irqsave(&pAd->Mlme.TaskLock,flags); + pAd->Mlme.Running = FALSE; + spin_unlock_irqrestore(&pAd->Mlme.TaskLock,flags); +} + +/* + ========================================================================== + Description: + Destructor of MLME (Destroy queue, state machine, spin lock and timer) + Parameters: + Adapter - NIC Adapter pointer + Post: + The MLME task will no longer work properly + ========================================================================== + */ +VOID MlmeHalt( + IN PRTMP_ADAPTER pAd) +{ + MLME_DISASSOC_REQ_STRUCT DisReq; + MLME_QUEUE_ELEM *MsgElem; + + if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_MLME_INITIALIZED)) + return; + + MsgElem = kmalloc(sizeof(MLME_QUEUE_ELEM), GFP_KERNEL); + if(!MsgElem) + return; + + DBGPRINT(RT_DEBUG_TRACE, "==> MlmeHalt\n"); + + if (INFRA_ON(pAd) && !RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST)) + { + COPY_MAC_ADDR(&DisReq.Addr, &pAd->PortCfg.Bssid); + DisReq.Reason = REASON_DISASSOC_STA_LEAVING; + + MsgElem->Machine = ASSOC_STATE_MACHINE; + MsgElem->MsgType = MT2_MLME_DISASSOC_REQ; + MsgElem->MsgLen = sizeof(MLME_DISASSOC_REQ_STRUCT); + memcpy(MsgElem->Msg, &DisReq, sizeof(MLME_DISASSOC_REQ_STRUCT)); + + MlmeDisassocReqAction(pAd, MsgElem); + + udelay(1000); + } + + if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST)) + { + // disable BEACON generation and other BEACON related hardware timers + AsicDisableSync(pAd); + } + + // Cancel pending timers + RTMPCancelTimer(&pAd->Mlme.AssocAux.AssocTimer); + RTMPCancelTimer(&pAd->Mlme.AssocAux.ReassocTimer); + RTMPCancelTimer(&pAd->Mlme.AssocAux.DisassocTimer); + RTMPCancelTimer(&pAd->Mlme.AuthAux.AuthTimer); + RTMPCancelTimer(&pAd->Mlme.AuthRspAux.AuthRspTimer); + RTMPCancelTimer(&pAd->Mlme.SyncAux.BeaconTimer); + RTMPCancelTimer(&pAd->Mlme.SyncAux.ScanTimer); + RTMPCancelTimer(&pAd->Mlme.PeriodicTimer); + // RTMPCancelTimer(&pAd->PortCfg.MacTab.AgedOutTimer); + + if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST)) + { + RTMPCancelTimer(&pAd->PortCfg.LedCntl.BlinkTimer); + ASIC_LED_ACT_OFF(pAd); + } + + RTMPCancelTimer(&pAd->PortCfg.RxAnt.RxAntDiversityTimer); + udelay(1000); + + MlmeQueueDestroy(&pAd->Mlme.Queue); + StateMachineDestroy(&pAd->Mlme.AssocMachine); + StateMachineDestroy(&pAd->Mlme.AuthMachine); + StateMachineDestroy(&pAd->Mlme.AuthRspMachine); + StateMachineDestroy(&pAd->Mlme.SyncMachine); + // StateMachineDestroy(&pAd->Mlme.CntlMachine); + //NdisFreeSpinLock(&pAd->Mlme.Queue.Lock); + //NdisFreeSpinLock(&pAd->Mlme.TaskLock); + // NdisFreeSpinLock(&pAd->PortCfg.MacTab.Lock); + + MlmeFreeMemoryHandler(pAd); //Free MLME memory handler + + RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_MLME_INITIALIZED); + + DBGPRINT(RT_DEBUG_TRACE, "<== MlmeHalt\n"); + kfree(MsgElem); +} + +/* + ========================================================================== + Description: + This routine is executed periodically to - + 1. Decide if it's a right time to turn on PwrMgmt bit of all + outgoiing frames + 2. Calculate ChannelQuality based on statistics of the last + period, so that TX rate won't toggling very frequently between a + successful TX and a failed TX. + 3. If the calculated ChannelQuality indicated current connection not + healthy, then a ROAMing attempt is tried here. + ========================================================================== + */ +#define ADHOC_BEACON_LOST_TIME (10*HZ) // 4 sec +VOID MlmePeriodicExec( + IN unsigned long data) +{ + RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; + ULONG Now32; + CSR15_STRUC Csr15; + + if (pAd->PortCfg.BssType == BSS_MONITOR) + { + RTMPSetTimer(pAd, &pAd->Mlme.PeriodicTimer, MLME_TASK_EXEC_INTV); + return; + } + + if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF)) + { + RTMPSetTimer(pAd, &pAd->Mlme.PeriodicTimer, MLME_TASK_EXEC_INTV); + return; + } + + if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RESET_IN_PROGRESS)) + { + RTMPSetTimer(pAd, &pAd->Mlme.PeriodicTimer, MLME_TASK_EXEC_INTV); + return; + } + + // check every 2 second. If rcv-beacon less than 5 in the past 2 second, then AvgRSSI is no longer a + // valid indication of the distance between this AP and its clients. + if (pAd->MediaState == NdisMediaStateConnected) + { + if (pAd->PortCfg.NumOfAvgRssiSample < 3) + { + pAd->PortCfg.RxAnt.AvgRssi[0] = (-95 + 120) << 3; // reset Ant-A's RSSI history + pAd->PortCfg.RxAnt.AvgRssi[1] = (-95 + 120) << 3; // reset Ant-B's RSSI history + pAd->PortCfg.AvgRssi = pAd->PortCfg.LastR17Value; + DBGPRINT(RT_DEBUG_TRACE, "MlmePeriodicExec: no traffic, reset Avg RSSI= %d dbm\n", pAd->PortCfg.AvgRssi); + } + else + pAd->PortCfg.NumOfAvgRssiSample = 0; + } + + Now32 = jiffies; + + if (pAd->RalinkCounters.MgmtRingFullCount >= 2) + { + RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_HARDWARE_ERROR); + } + else + { + pAd->RalinkCounters.MgmtRingFullCount = 0; + } + + if ((pAd->PortCfg.bBlockAssoc == TRUE) && (pAd->PortCfg.LastMicErrorTime + (60 * HZ) < Now32)) + { + pAd->PortCfg.bBlockAssoc = FALSE; + } + + // if Rx Antenna is DIVERSITY ON, then perform Software-based diversity evaluation + if ((pAd->PortCfg.CurrentRxAntenna == 0xff) && (pAd->Mlme.PeriodicRound % 2 == 1)) + { + SHORT realavgrssi = (pAd->PortCfg.RxAnt.AvgRssi[pAd->PortCfg.RxAnt.PrimaryRxAnt] >> 3) - pAd->PortCfg.RssiToDbm; + DBGPRINT(RT_DEBUG_TRACE, "MlmePeriodicExec:(%d), Primary AvgRssi(%d), LastAvgRssi(%d)\n", pAd->PortCfg.RxAnt.PrimaryRxAnt, realavgrssi, pAd->PortCfg.LastAvgRssi); + DBGPRINT(RT_DEBUG_TRACE, "Primary AvgRssi(%d), Second AvgRssi(%d)\n", pAd->PortCfg.RxAnt.AvgRssi[pAd->PortCfg.RxAnt.PrimaryRxAnt], pAd->PortCfg.RxAnt.AvgRssi[pAd->PortCfg.RxAnt.SecondaryRxAnt]); + if ((realavgrssi > pAd->PortCfg.LastAvgRssi + 5) || (realavgrssi < pAd->PortCfg.LastAvgRssi - 5)) + { + //DBGPRINT(RT_DEBUG_TRACE, ("AsicEvaluateSecondaryRxAnt ===> start evaluate second antenna!!!\n")); + pAd->PortCfg.LastAvgRssi = realavgrssi; + AsicEvaluateSecondaryRxAnt(pAd); + } + } + + +#ifndef WIFI_TEST + // danamic tune BBP R17 to find a balance between sensibility and noise isolation + // 2003-12-05 For 2560C and before, to avoid collision with MAC ASIC, limit + // BBP R17 tuning to be within 20 seconds after LINK UP. 2560D (R0=4) and + // after can always enable R17 tuning + if (pAd->PortCfg.Rt2560Version >= RT2560_VER_D) + AsicBbpTuning(pAd); + else if ((pAd->MediaState == NdisMediaStateConnected) && (pAd->Mlme.PeriodicRound <= 20)) + AsicBbpTuning(pAd); +#endif + + if (pAd->MediaState == NdisMediaStateConnected) + { + // update channel quality for Roaming and UI LinkQuality display + MlmeCheckChannelQuality(pAd, Now32); +#if 0 + // periodic VCO tuning when there's no traffic. + // RF guys suspected VCO will shift away upon temperature change along the time + if (((pAd->Mlme.PeriodicRound % 16) == 2) && + ((pAd->DrsCounters.OneSecTxOkCount + pAd->DrsCounters.OneSecTxRetryOkCount)==0)) + { + DBGPRINT(RT_DEBUG_TRACE,("Periodic VCO tuning...\n")); + AsicSwitchChannel(pAd, pAd->PortCfg.Channel); + AsicLockChannel(pAd, pAd->PortCfg.Channel); + } +#endif + // perform dynamic tx rate switching based on past TX history + MlmeCheckDynamicTxRateSwitching(pAd); + } + + AsicAdjustTxPower(pAd); + + if (INFRA_ON(pAd)) + { + // Is PSM bit consistent with user power management policy? + // This is the only place that will set PSM bit ON. + MlmeCheckForPsmChange(pAd, Now32); + + // Check for EAPOL frame sent after MIC countermeasures + if (pAd->PortCfg.MicErrCnt >= 3) + { + MLME_DISASSOC_REQ_STRUCT DisassocReq; + + // disassoc from current AP first + DBGPRINT(RT_DEBUG_TRACE, "MLME - disassociate with current AP after sending second continuous EAPOL frame\n"); + DisassocParmFill(pAd, &DisassocReq, &pAd->PortCfg.Bssid, REASON_MIC_FAILURE); + MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, + sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq); + + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC; + pAd->PortCfg.bBlockAssoc = TRUE; + } + + else + { + // send out a NULL frame every 10 sec. for what??? inform "PwrMgmt" bit? + if ((pAd->Mlme.PeriodicRound % 10) == 8) + EnqueueNullFrame(pAd, pAd->PortCfg.TxRate); + + if (CQI_IS_BAD(pAd->Mlme.ChannelQuality)) + { + pAd->RalinkCounters.BadCQIAutoRecoveryCount ++; + DBGPRINT(RT_DEBUG_TRACE, "MMCHK - Bad CQI. Auto Recovery attempt #%d\n", pAd->RalinkCounters.BadCQIAutoRecoveryCount); + MlmeAutoReconnectLastSSID(pAd); + } + + else if (CQI_IS_FAIR(pAd->Mlme.ChannelQuality) || CQI_IS_POOR(pAd->Mlme.ChannelQuality)) + { + // perform aggresive roaming only when SECURITY OFF or WEP64/128; + // WPA and WPA-PSK has no aggresive roaming because re-negotiation + // between 802.1x supplicant and authenticator/AAA server is required + // but can't be guaranteed. + if (pAd->PortCfg.AuthMode < Ndis802_11AuthModeWPA) + MlmeCheckForRoaming(pAd, Now32); + } + } + } + else if (ADHOC_ON(pAd)) + { + if ((pAd->Mlme.PeriodicRound % 2) == 1) + { + // So that even when ASIC's BEACONgen engine been blocked + // by peer's BEACON due to slower system clock, this STA still can send out + // minimum BEACON to tell the peer I'm alive. + // drawback is that this BEACON won't well align at TBTT boundary. + RTMP_IO_READ32(pAd, CSR15, &Csr15.word); // read-n-clear "BcnSent" bit + if (Csr15.field.BeaconSent == 0) + EnqueueBeaconFrame(pAd); // software send BEACON + } + else + { + // if all 11b peers leave this BSS more than 5 seconds, update Tx rate + if ((pAd->PortCfg.Channel <= 14) && + (pAd->PortCfg.MaxTxRate <= RATE_11) && + (pAd->PortCfg.MaxDesiredRate > RATE_11) && + ((pAd->PortCfg.Last11bBeaconRxTime + (5 * HZ)) < Now32)) + { + DBGPRINT(RT_DEBUG_TRACE, "last 11B peer left, update Tx rates\n"); + memcpy(pAd->PortCfg.SupportedRates, pAd->PortCfg.IbssConfig.SupportedRates, MAX_LEN_OF_SUPPORTED_RATES); + pAd->PortCfg.SupportedRatesLen = pAd->PortCfg.IbssConfig.SupportedRatesLen; + MlmeUpdateTxRates(pAd, FALSE); + MakeIbssBeacon(pAd); // supported rates changed + } + } + +#ifndef SINGLE_ADHOC_LINKUP + // If all peers leave, and this STA becomes the last one in this IBSS, then change MediaState + // to DISCONNECTED. But still holding this IBSS (i.e. sending BEACON) so that other STAs can + // join later. + if ((pAd->PortCfg.LastBeaconRxTime + ADHOC_BEACON_LOST_TIME < Now32) && + (pAd->MediaState == NdisMediaStateConnected)) + { + DBGPRINT(RT_DEBUG_TRACE, "MMCHK - excessive BEACON lost, last STA in this IBSS, MediaState=Disconnected\n"); + + pAd->MediaState = NdisMediaStateDisconnected; + // clean up previous SCAN result, add current BSS back to table if any + BssTableDeleteEntry(&pAd->PortCfg.BssTab, &(pAd->PortCfg.Bssid)); + + pAd->PortCfg.LastScanTime = Now32; + } +#endif + + } + else + { + DBGPRINT(RT_DEBUG_INFO, "MLME periodic exec, no association so far\n"); + if (pAd->PortCfg.AutoReconnect == TRUE) + { + if ((pAd->PortCfg.BssTab.BssNr==0) && (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE)) + { + MLME_SCAN_REQ_STRUCT ScanReq; + + if ((pAd->PortCfg.LastScanTime + 10 * HZ) < Now32) + { + DBGPRINT(RT_DEBUG_TRACE, "CNTL - No matching BSS, start a new scan\n"); + // BroadSsid[0] = '\0'; + ScanParmFill(pAd, &ScanReq, pAd->Mlme.CntlAux.Ssid, pAd->Mlme.CntlAux.SsidLen, BSS_ANY, SCAN_ACTIVE); + MlmeEnqueue(&pAd->Mlme.Queue, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ, sizeof(MLME_SCAN_REQ_STRUCT), &ScanReq); + pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN; + // Reset Missed scan number + pAd->PortCfg.IgnoredScanNumber = 0; + pAd->PortCfg.LastScanTime = Now32; + } + else if (pAd->PortCfg.BssType == BSS_INDEP) // Quit the forever scan when in a very clean room + MlmeAutoRecoverNetwork(pAd); + //MlmeAutoReconnectLastSSID(pAd); + } + else if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE) + { + if ((pAd->Mlme.PeriodicRound % 10) == 7) + { + if ((pAd->PortCfg.LastScanTime + 10 * HZ) < Now32) + { + MlmeAutoScan(pAd); + pAd->PortCfg.LastScanTime = Now32; + } + } + else + MlmeAutoReconnectLastSSID(pAd); + + DBGPRINT(RT_DEBUG_INFO, "pAd->PortCfg.AutoReconnect is TRUE\n"); + } + } + } + pAd->Mlme.PeriodicRound ++; + MlmeHandler(pAd); + + if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE)) + NICCheckForHang(pAd); + + RTMPSetTimer(pAd, &pAd->Mlme.PeriodicTimer, MLME_TASK_EXEC_INTV); +} + +VOID MlmeAutoScan( + IN PRTMP_ADAPTER pAd) +{ + // check CntlMachine.CurrState to avoid collision with NDIS SetOID request + if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE) + { + DBGPRINT(RT_DEBUG_TRACE, "MMCHK - Driver auto scan\n"); + + // tell CNTL state machine NOT to call NdisMSetInformationComplete() after completing + // this request, because this request is initiated by driver itself. + pAd->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; + + MlmeEnqueue(&pAd->Mlme.Queue, + MLME_CNTL_STATE_MACHINE, + OID_802_11_BSSID_LIST_SCAN, + 0, + NULL); + MlmeHandler(pAd); + } +} + +VOID MlmeAutoRecoverNetwork( + IN PRTMP_ADAPTER pAd) +{ + // check CntlMachine.CurrState to avoid collision with NDIS SetOID request + if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE) + { + NDIS_802_11_SSID OidSsid; + OidSsid.SsidLength = pAd->PortCfg.SsidLen; + memcpy(OidSsid.Ssid, pAd->PortCfg.Ssid, pAd->PortCfg.SsidLen); + + DBGPRINT(RT_DEBUG_TRACE, "MMCHK - Driver auto recovering network - %s\n", pAd->PortCfg.Ssid); + + // tell CNTL state machine NOT to call NdisMSetInformationComplete() after completing + // this request, because this request is initiated by driver itself. + pAd->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; + + MlmeEnqueue(&pAd->Mlme.Queue, + MLME_CNTL_STATE_MACHINE, + OID_802_11_SSID, + sizeof(NDIS_802_11_SSID), + &OidSsid); + MlmeHandler(pAd); + } + +} + +VOID MlmeAutoReconnectLastSSID( + IN PRTMP_ADAPTER pAd) +{ + // check CntlMachine.CurrState to avoid collision with NDIS SetOID request + if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE) + { + NDIS_802_11_SSID OidSsid; + OidSsid.SsidLength = pAd->Mlme.CntlAux.SsidLen; + memcpy(OidSsid.Ssid, pAd->Mlme.CntlAux.Ssid, pAd->Mlme.CntlAux.SsidLen); + + DBGPRINT(RT_DEBUG_TRACE, "Driver auto reconnect to last OID_802_11_SSID setting - %s\n", pAd->Mlme.CntlAux.Ssid); + + // We will only try this attemp once, therefore change the AutoReconnect flag afterwards. + pAd->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; + + MlmeEnqueue(&pAd->Mlme.Queue, + MLME_CNTL_STATE_MACHINE, + OID_802_11_SSID, + sizeof(NDIS_802_11_SSID), + &OidSsid); + MlmeHandler(pAd); + } +} + +/* + ========================================================================== + Description: + This routine checks if there're other APs out there capable for + roaming. Caller should call this routine only when Massoc=TRUE and + channel quality is below CQI_GOOD_THRESHOLD. + Output: + ========================================================================== + */ +VOID MlmeCheckForRoaming( + IN PRTMP_ADAPTER pAd, + IN ULONG Now32) +{ + USHORT i; + BSS_TABLE *pBssTab = &pAd->Mlme.CntlAux.SsidBssTab; + BSS_TABLE *pRoamTab = &pAd->Mlme.CntlAux.RoamTab; + BSS_ENTRY *pBss; + + // put all roaming candidates into RoamTab, and sort in RSSI order + BssTableInit(pRoamTab); + for (i = 0; i < pBssTab->BssNr; i++) + { + pBss = &pBssTab->BssEntry[i]; + + if ((pBssTab->BssEntry[i].LastBeaconRxTime + BEACON_LOST_TIME) < Now32) + continue; // AP disappear + if (pBss->Rssi <= RSSI_THRESHOLD_FOR_ROAMING) + continue; // RSSI too weak. forget it. + if (MAC_ADDR_EQUAL(&pBssTab->BssEntry[i].Bssid, &pAd->PortCfg.Bssid)) + continue; // skip current AP + if (CQI_IS_FAIR(pAd->Mlme.ChannelQuality) && (pAd->PortCfg.LastRssi + RSSI_DELTA > pBss->Rssi)) + continue; // we're still okay, only AP with stronger RSSI is eligible for roaming + + // AP passing all above rules is put into roaming candidate table + memcpy(&pRoamTab->BssEntry[pRoamTab->BssNr], pBss, sizeof(BSS_ENTRY)); + pRoamTab->BssNr += 1; + } + + if (pRoamTab->BssNr > 0) + { + // check CntlMachine.CurrState to avoid collision with NDIS SetOID request + if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE) + { + // tell CNTL state machine NOT to call NdisMSetInformationComplete() after completing + // this request, because this request is initiated by driver itself, not from NDIS. + pAd->Mlme.CntlAux.CurrReqIsFromNdis = FALSE; + + pAd->RalinkCounters.PoorCQIRoamingCount ++; + DBGPRINT(RT_DEBUG_TRACE, "MMCHK - Roaming attempt #%d\n", pAd->RalinkCounters.PoorCQIRoamingCount); + MlmeEnqueue(&pAd->Mlme.Queue, MLME_CNTL_STATE_MACHINE, MT2_MLME_ROAMING_REQ, 0, NULL); + MlmeHandler(pAd); + } + } + +} + +/* + ========================================================================== + Description: + This routine calculates TxPER, RxPER of the past N-sec period. And + according to the calculation result, ChannelQuality is calculated here + to decide if current AP is still doing the job. + + If ChannelQuality is not good, a ROAMing attempt may be tried later. + Output: + PortCfg.ChannelQuality - 0..100 + ========================================================================== + */ +VOID MlmeCheckChannelQuality( + IN PRTMP_ADAPTER pAd, + IN ULONG Now32) +{ + ULONG TxFailCnt, TxOkCnt, TxRetryCnt, TxCnt; + ULONG RxFailCnt, RxOkCnt, RxCnt, Cnt0, OldFcsCount; + static ULONG TxPER = 0, TxPRR = 0, RxPER = 0; + + // + // monitor TX counters change for the past period + // + TxFailCnt = pAd->WlanCounters.FailedCount.vv.LowPart - + pAd->Mlme.PrevWlanCounters.FailedCount.vv.LowPart; + TxRetryCnt = pAd->WlanCounters.RetryCount.vv.LowPart - + pAd->Mlme.PrevWlanCounters.RetryCount.vv.LowPart; + TxOkCnt = pAd->WlanCounters.TransmittedFragmentCount.vv.LowPart - + pAd->Mlme.PrevWlanCounters.TransmittedFragmentCount.vv.LowPart; + TxCnt = TxOkCnt + TxFailCnt; + + if (TxCnt > 5) // if too few TX samples, skip TX related statistics + { + TxPER = (TxFailCnt * 100) / TxCnt; + TxPRR = ((TxRetryCnt + TxFailCnt) * 100) / TxCnt; + } + + // + // calculate RX PER + // + + // Update FCS counters + RTMP_IO_READ32(pAd, CNT0, &Cnt0); + OldFcsCount= pAd->WlanCounters.FCSErrorCount.vv.LowPart; + pAd->WlanCounters.FCSErrorCount.vv.LowPart += ((Cnt0 & 0x0000ffff) >> 7); + if (pAd->WlanCounters.FCSErrorCount.vv.LowPart < OldFcsCount) + pAd->WlanCounters.FCSErrorCount.vv.HighPart++; + + // Add FCS error count to private counters + OldFcsCount = pAd->RalinkCounters.RealFcsErrCount.vv.LowPart; + pAd->RalinkCounters.RealFcsErrCount.vv.LowPart += Cnt0; + if (pAd->RalinkCounters.RealFcsErrCount.vv.LowPart < OldFcsCount) + pAd->RalinkCounters.RealFcsErrCount.vv.HighPart++; + + RxOkCnt = pAd->WlanCounters.ReceivedFragmentCount.vv.LowPart - + pAd->Mlme.PrevWlanCounters.ReceivedFragmentCount.vv.LowPart; + RxFailCnt = pAd->RalinkCounters.RealFcsErrCount.vv.LowPart - + pAd->Mlme.PrevWlanCounters.FCSErrorCount.vv.LowPart; + RxCnt = RxOkCnt + RxFailCnt; + + if (RxCnt > 5) + RxPER = (RxFailCnt * 100) / RxCnt; +//printk("!! WiFi: Ok: %d, Fail: %d, PER: %d\n", RxOkCnt, RxFailCnt, RxPER); + // + // decide ChannelQuality based on: 1)last BEACON received time, 2)last RSSI, 3)TxPER, and 4)RxPER + // + // This value also decides when all roaming fails (or no roaming candidates at + // all), should this STA stay with original AP, or a LinkDown signal + // is indicated to NDIS + // + if (INFRA_ON(pAd) && + (pAd->PortCfg.LastBeaconRxTime + BEACON_LOST_TIME < Now32)) // BEACON starving? + { + // Ignore lost beacon when NIC in reset state + // Ignore lost beacon if traffic still goes well + if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RESET_IN_PROGRESS) && (TxOkCnt < 2)) + { + DBGPRINT(RT_DEBUG_TRACE, "BEACON lost for more than %d sec with TxOkCnt=%d, let CQI = 0\n", BEACON_LOST_TIME/HZ, TxOkCnt); + pAd->Mlme.ChannelQuality = 0; + // Lost AP, send disconnect & link down event + LinkDown(pAd); + } + } + else + { + // ChannelQuality = W1*RSSI + W2*TxPRR + W3*RxPER (RSSI 0..100), (TxPER 100..0), (RxPER 100..0) + pAd->Mlme.ChannelQuality = (RSSI_WEIGHTING * pAd->PortCfg.LastRssi + + TX_WEIGHTING * (100 - TxPRR) + + RX_WEIGHTING* (100 - RxPER)) / 100; + if (pAd->Mlme.ChannelQuality >= 100) + pAd->Mlme.ChannelQuality = 100; + } + + // latch current WLAN counters for next check-for-roaming usage + memcpy(&pAd->Mlme.PrevWlanCounters, &pAd->WlanCounters, sizeof(COUNTER_802_11)); + // make sure copy the real FCS counts into previous mlme counter structure. + pAd->Mlme.PrevWlanCounters.FCSErrorCount = pAd->RalinkCounters.RealFcsErrCount; + + DBGPRINT(RT_DEBUG_INFO, "MMCHK - CQI= %d, (Tx Fail=%d/Retry=%d/Total=%d, Rx Fail=%d/Total=%d, RSSI=%d dbm)\n", + pAd->Mlme.ChannelQuality, TxFailCnt, TxRetryCnt, TxCnt, RxFailCnt, RxCnt, pAd->PortCfg.LastRssi - pAd->PortCfg.RssiToDbm); + +} + +/* + ========================================================================== + Description: + This routine calculates the acumulated TxPER of eaxh TxRate. And + according to the calculation result, change PortCfg.TxRate which + is the stable TX Rate we expect the Radio situation could sustained. + + PortCfg.TxRate will change dynamically within {RATE_1/RATE_6, MaxTxRate} + Output: + PortCfg.TxRate - + NOTE: + call this routine every second + ========================================================================== + */ +VOID MlmeCheckDynamicTxRateSwitching( + IN PRTMP_ADAPTER pAd) +{ + UCHAR UpRate, DownRate, CurrRate; + USHORT TxTotalCnt = pAd->DrsCounters.OneSecTxOkCount + pAd->DrsCounters.OneSecTxRetryOkCount + pAd->DrsCounters.OneSecTxFailCount; + USHORT TxErrorRatio; + BOOLEAN fUpgradeQuality = FALSE; + USHORT *pRateUpPER, *pRateDownPER; + + pAd->DrsCounters.CurrTxRateStableTime ++; + CurrRate = pAd->PortCfg.TxRate; + do + { + if (pAd->PortCfg.EnableAutoRateSwitching == FALSE) + break; + + // if no traffic in the past 1-sec period, don't change TX rate, + // but clear all bad history. because the bad history may affect the next + // Chariot throughput test + if (TxTotalCnt == 0) + { + pAd->DrsCounters.TxRateUpPenalty = 0; + memset(pAd->DrsCounters.TxQuality, 0, MAX_LEN_OF_SUPPORTED_RATES); + memset(pAd->DrsCounters.PER, 0, MAX_LEN_OF_SUPPORTED_RATES); + break; + } + + // decide the next upgrade rate and downgrade rate, if any + if (pAd->PortCfg.PhyMode == PHY_11BG_MIXED) + { + UpRate = Phy11BGNextRateUpward[CurrRate]; + DownRate = Phy11BGNextRateDownward[CurrRate]; + } + else if (pAd->PortCfg.PhyMode == PHY_11B) + { + UpRate = Phy11BNextRateUpward[CurrRate]; + DownRate = Phy11BNextRateDownward[CurrRate]; + } + else if (pAd->PortCfg.PhyMode == PHY_11A) + { + UpRate = Phy11ANextRateUpward[CurrRate]; + DownRate = Phy11ANextRateDownward[CurrRate]; + } + else // PHY_11ABG_MIXED + { + if (pAd->PortCfg.Channel > 14) + { + UpRate = Phy11ANextRateUpward[CurrRate]; + DownRate = Phy11ANextRateDownward[CurrRate]; + } + else + { + UpRate = Phy11BGNextRateUpward[CurrRate]; + DownRate = Phy11BGNextRateDownward[CurrRate]; + } + } + + if (UpRate > pAd->PortCfg.MaxTxRate) + UpRate = pAd->PortCfg.MaxTxRate; + + // decide TX quality based on Tx PER when enough samples are available + if (TxTotalCnt > 15) + { + TxErrorRatio = ((pAd->DrsCounters.OneSecTxRetryOkCount + pAd->DrsCounters.OneSecTxFailCount) *100) / TxTotalCnt; + + // 2560D and after has implemented ASIC-based OFDM rate switching, + // but not 2560C & before. thus software use different PER for rate switching + if (pAd->PortCfg.Rt2560Version >= RT2560_VER_D) + { + pRateUpPER = &NewRateUpPER[0]; + pRateDownPER = &NewRateDownPER[0]; + } + else + { + pRateUpPER = &OldRateUpPER[0]; + pRateDownPER = &OldRateDownPER[0]; + } + + // downgrade TX quality if PER >= Rate-Down threshold + if (TxErrorRatio >= pRateDownPER[CurrRate]) + { + pAd->DrsCounters.TxQuality[CurrRate] = DRS_TX_QUALITY_WORST_BOUND; + } + // upgrade TX quality if PER <= Rate-Up threshold + else if (TxErrorRatio <= pRateUpPER[CurrRate]) + { + fUpgradeQuality = TRUE; + if (pAd->DrsCounters.TxQuality[CurrRate]) + pAd->DrsCounters.TxQuality[CurrRate] --; // quality very good in CurrRate + + if (pAd->DrsCounters.TxRateUpPenalty) + pAd->DrsCounters.TxRateUpPenalty --; + else if (pAd->DrsCounters.TxQuality[UpRate]) + pAd->DrsCounters.TxQuality[UpRate] --; // may improve next UP rate's quality + } + + } + + // if not enough TX samples, decide by heuristic rules + else + { + TxErrorRatio = 0; + + // Downgrade TX quality upon any TX failure in the past second + if (pAd->DrsCounters.OneSecTxFailCount) + { + if ((pAd->DrsCounters.OneSecTxFailCount <= 1) && + (pAd->DrsCounters.OneSecTxOkCount + pAd->DrsCounters.OneSecTxRetryOkCount)) + { + pAd->DrsCounters.TxQuality[CurrRate] += 2; // degrade quality + if (pAd->DrsCounters.TxQuality[CurrRate] > DRS_TX_QUALITY_WORST_BOUND) + pAd->DrsCounters.TxQuality[CurrRate] = DRS_TX_QUALITY_WORST_BOUND; + } + else // more than 2 failure, or no TX ok cases + { + pAd->DrsCounters.TxQuality[CurrRate] = DRS_TX_QUALITY_WORST_BOUND; + } + } + // upgrade TX quality if - + // 1. no TX failure but do have TX ok case, and + // 2. there's more one-time-ok cases than retry-ok cases in the past second + else if ((pAd->DrsCounters.OneSecTxOkCount > pAd->DrsCounters.OneSecTxRetryOkCount)) + { + fUpgradeQuality = TRUE; + if (pAd->DrsCounters.TxQuality[CurrRate]) + pAd->DrsCounters.TxQuality[CurrRate] --; // quality very good in CurrRate + + if (pAd->DrsCounters.TxRateUpPenalty) + pAd->DrsCounters.TxRateUpPenalty --; + else if (pAd->DrsCounters.TxQuality[UpRate]) + pAd->DrsCounters.TxQuality[UpRate] --; // may improve next UP rate's quality + } + } + + pAd->DrsCounters.PER[CurrRate] = (UCHAR)TxErrorRatio; + + if (pAd->DrsCounters.fNoisyEnvironment) + { + DBGPRINT(RT_DEBUG_TRACE,"DRS(noisy):"); + } + else + { + DBGPRINT(RT_DEBUG_TRACE,"DRS:"); + } + DBGPRINT(RT_DEBUG_TRACE, "Qty[%d]=%d PER=%d%% %d-sec, Qty[%d]=%d, Pty=%d\n", + RateIdToMbps[CurrRate], pAd->DrsCounters.TxQuality[CurrRate], + TxErrorRatio, + pAd->DrsCounters.CurrTxRateStableTime, + RateIdToMbps[UpRate], pAd->DrsCounters.TxQuality[UpRate], + pAd->DrsCounters.TxRateUpPenalty); + + // 2004-3-13 special case: Claim noisy environment + // decide if there was a false "rate down" in the past 2 sec due to noisy + // environment. if so, we would rather switch back to the higher TX rate. + // criteria - + // 1. there's a higher rate available, AND + // 2. there was a rate-down happened, AND + // 3. current rate has 75% > PER > 20%, AND + // 4. comparing to UpRate, current rate didn't improve PER more than 5 % + if ((UpRate != CurrRate) && + (pAd->DrsCounters.LastSecTxRateChangeAction == 2) && + (TxTotalCnt > 15) && // this line is to prevent the case that not enough TX sample causing PER=0% + (pAd->DrsCounters.PER[CurrRate] < 75) && + ((pAd->DrsCounters.PER[CurrRate] > 20) || (pAd->DrsCounters.fNoisyEnvironment)) && + ((pAd->DrsCounters.PER[CurrRate]+5) > pAd->DrsCounters.PER[UpRate])) + { + // we believe this is a noisy environment. better stay at UpRate + DBGPRINT(RT_DEBUG_TRACE,"DRS: #### enter Noisy environment ####\n"); + pAd->DrsCounters.fNoisyEnvironment = TRUE; + + // 2004-3-14 when claiming noisy environment, we're not only switch back + // to UpRate, but can be more aggressive to use one more rate up + UpRate++; +// if (UpRate>RATE_54) UpRate=RATE_54; + if ((UpRate==RATE_6) || (UpRate==RATE_9)) UpRate=RATE_12; + if (UpRate > pAd->PortCfg.MaxTxRate) + UpRate = pAd->PortCfg.MaxTxRate; + pAd->PortCfg.TxRate = UpRate; + break; + } + + // 2004-3-12 special case: Leave noisy environment + // The interference has gone suddenly. reset TX rate to + // the theoritical value according to RSSI. Criteria - + // 1. it's currently in noisy environment + // 2. PER drops to be below 12% + if ((pAd->DrsCounters.fNoisyEnvironment == TRUE) && + (TxTotalCnt > 15) && (pAd->DrsCounters.PER[CurrRate] <= 12)) + { + UCHAR JumpUpRate; + + pAd->DrsCounters.fNoisyEnvironment = FALSE; + for (JumpUpRate = RATE_54; JumpUpRate > RATE_1; JumpUpRate--) + { + if (pAd->PortCfg.AvgRssi > (RssiSafeLevelForTxRate[JumpUpRate] + pAd->PortCfg.RssiToDbm)) + + break; + } + + if (JumpUpRate > pAd->PortCfg.MaxTxRate) + JumpUpRate = pAd->PortCfg.MaxTxRate; + + DBGPRINT(RT_DEBUG_TRACE,"DRS: #### leave Noisy environment ####, RSSI=%d, JumpUpRate=%d\n", + + pAd->PortCfg.AvgRssi - RSSI_TO_DBM_OFFSET, RateIdToMbps[JumpUpRate]); + + + if (JumpUpRate > CurrRate) + { + pAd->PortCfg.TxRate = JumpUpRate; + break; + } + } + + // we're going to upgrade CurrRate to UpRate at next few seconds, + // but before that, we'd better try a NULL frame @ UpRate and + // see if UpRate is stable or not. If this NULL frame fails, it will + // downgrade TxQuality[CurrRate], so that STA won't switch to + // to UpRate in the next second + // 2004-04-07 requested by David Tung - sent test frames only in OFDM rates + if (fUpgradeQuality && + INFRA_ON(pAd) && + (UpRate != CurrRate) && + (UpRate > RATE_11) && + (pAd->DrsCounters.TxQuality[CurrRate] <= 1) && + (pAd->DrsCounters.TxQuality[UpRate] <= 1)) + { + DBGPRINT(RT_DEBUG_TRACE,"DRS: 2 NULL frames at UpRate = %d Mbps\n",RateIdToMbps[UpRate]); + EnqueueNullFrame(pAd, UpRate); + EnqueueNullFrame(pAd, UpRate); + } + + // perform DRS - consider TxRate Down first, then rate up. + // 1. rate down, if current TX rate's quality is not good + // 2. rate up, if UPRate's quality is very good + if ((pAd->DrsCounters.TxQuality[CurrRate] >= DRS_TX_QUALITY_WORST_BOUND) && + (CurrRate != DownRate)) + { +#ifdef WIFI_TEST + if (DownRate <= RATE_2) break; // never goes lower than 5.5 Mbps TX rate +#endif + pAd->PortCfg.TxRate = DownRate; + } + else if ((pAd->DrsCounters.TxQuality[CurrRate] <= 0) && + (pAd->DrsCounters.TxQuality[UpRate] <=0) && + (CurrRate != UpRate)) + { + pAd->PortCfg.TxRate = UpRate; + } + + }while (FALSE); + + + // if rate-up happen, clear all bad history of all TX rates + if (pAd->PortCfg.TxRate > CurrRate) + { + DBGPRINT(RT_DEBUG_TRACE,"DRS: ++TX rate from %d to %d Mbps\n", RateIdToMbps[CurrRate],RateIdToMbps[pAd->PortCfg.TxRate]); + pAd->DrsCounters.CurrTxRateStableTime = 0; + pAd->DrsCounters.TxRateUpPenalty = 0; + pAd->DrsCounters.LastSecTxRateChangeAction = 1; // rate UP + memset(pAd->DrsCounters.TxQuality, 0, MAX_LEN_OF_SUPPORTED_RATES); + memset(pAd->DrsCounters.PER, 0, MAX_LEN_OF_SUPPORTED_RATES); + } + // if rate-down happen, only clear DownRate's bad history + else if (pAd->PortCfg.TxRate < CurrRate) + { + DBGPRINT(RT_DEBUG_TRACE,"DRS: --TX rate from %d to %d Mbps\n", RateIdToMbps[CurrRate],RateIdToMbps[pAd->PortCfg.TxRate]); + // shorter stable time require more penalty in next rate UP criteria + if (pAd->DrsCounters.CurrTxRateStableTime < 4) // less then 4 sec + pAd->DrsCounters.TxRateUpPenalty = DRS_PENALTY; // add 8 sec penalty + else if (pAd->DrsCounters.CurrTxRateStableTime < 8) // less then 8 sec + pAd->DrsCounters.TxRateUpPenalty = 2; // add 2 sec penalty + else // >= 8 sec + pAd->DrsCounters.TxRateUpPenalty = 0; // no penalty + + pAd->DrsCounters.CurrTxRateStableTime = 0; + pAd->DrsCounters.LastSecTxRateChangeAction = 2; // rate DOWN + pAd->DrsCounters.TxQuality[pAd->PortCfg.TxRate] = 0; + pAd->DrsCounters.PER[pAd->PortCfg.TxRate] = 0; + } + else + pAd->DrsCounters.LastSecTxRateChangeAction = 0; // rate no change + + // reset all OneSecxxx counters + pAd->DrsCounters.OneSecTxFailCount = 0; + pAd->DrsCounters.OneSecTxOkCount = 0; + pAd->DrsCounters.OneSecTxRetryOkCount = 0; +} + +/* + ========================================================================== + Description: + This routine is executed periodically inside MlmePeriodicExec() after + association with an AP. + It checks if PortCfg.Psm is consistent with user policy (recorded in + PortCfg.WindowsPowerMode). If not, enforce user policy. However, + there're some conditions to consider: + 1. we don't support power-saving in ADHOC mode, so Psm=PWR_ACTIVE all + the time when Mibss==TRUE + 2. When Massoc==TRUE (INFRA mode), Psm should not be switch to PWR_SAVE + if outgoing traffic available in TxRing or PrioRing. + Output: + 1. change pAd->PortCfg.Psm to PWR_SAVE or leave it untouched + ========================================================================== + */ +VOID MlmeCheckForPsmChange( + IN PRTMP_ADAPTER pAd, + IN ULONG Now32) +{ + ULONG PowerMode; + // condition - + // 1. Psm maybe ON only happen in INFRASTRUCTURE mode + // 2. user wants either MAX_PSP or FAST_PSP + // 3. but current psm is not in PWR_SAVE + // 4. CNTL state machine is not doing SCANning + // 5. no TX SUCCESS event for the past period + PowerMode = pAd->PortCfg.WindowsPowerMode; + + if (INFRA_ON(pAd) && + (PowerMode != Ndis802_11PowerModeCAM) && + (pAd->PortCfg.Psm == PWR_ACTIVE) && + (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE) && + (pAd->WlanCounters.TransmittedFragmentCount.vv.LowPart == pAd->Mlme.PrevTxCnt)) + { + MlmeSetPsmBit(pAd, PWR_SAVE); + EnqueueNullFrame(pAd, pAd->PortCfg.TxRate); + } + + // latch current count for next-time comparison + pAd->Mlme.PrevTxCnt = pAd->WlanCounters.TransmittedFragmentCount.vv.LowPart; + +} + +VOID MlmeSetPsmBit( + IN PRTMP_ADAPTER pAd, + IN USHORT psm) +{ + TXCSR7_STRUC txcsr7; + + txcsr7.word = 0; + pAd->PortCfg.Psm = psm; + + DBGPRINT(RT_DEBUG_TRACE, "MMCHK - change PSM bit to %d <<<\n", psm); + if (psm == PWR_SAVE) + { + txcsr7.field.ARPowerManage = 1; + RTMP_IO_WRITE32(pAd, TXCSR7, txcsr7.word); + } + else + { + txcsr7.field.ARPowerManage = 0; + RTMP_IO_WRITE32(pAd, TXCSR7, txcsr7.word); + } +} + +VOID MlmeSetTxPreamble( + IN PRTMP_ADAPTER pAd, + IN USHORT TxPreamble) +{ + ULONG Plcp1MCsr = 0x00700400; // 0x13c, ACK/CTS PLCP at 1 Mbps + ULONG Plcp2MCsr = 0x00380401; // 0x140, ACK/CTS PLCP at 2 Mbps + ULONG Plcp5MCsr = 0x00150402; // 0x144, ACK/CTS PLCP at 5.5 Mbps + ULONG Plcp11MCsr = 0x000b8403; // 0x148, ACK/CTS PLCP at 11 Mbps + + if (TxPreamble == Rt802_11PreambleShort) + { + DBGPRINT(RT_DEBUG_TRACE, "MlmeSetTxPreamble (= SHORT PREAMBLE)\n"); +// Plcp1MCsr |= 0x00000008; // 1Mbps should always use long preamble + Plcp2MCsr |= 0x00000008; + Plcp5MCsr |= 0x00000008; + Plcp11MCsr |= 0x00000008; + pAd->PortCfg.TxPreambleInUsed = Rt802_11PreambleShort; + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "MlmeSetTxPreamble (= LONG PREAMBLE)\n"); + pAd->PortCfg.TxPreambleInUsed = Rt802_11PreambleLong; + } + + RTMP_IO_WRITE32(pAd, PLCP1MCSR, Plcp1MCsr); + RTMP_IO_WRITE32(pAd, PLCP2MCSR, Plcp2MCsr); + RTMP_IO_WRITE32(pAd, PLCP5MCSR, Plcp5MCsr); + RTMP_IO_WRITE32(pAd, PLCP11MCSR, Plcp11MCsr); +} + +VOID MlmeUpdateTxRates( + IN PRTMP_ADAPTER pAd, + IN BOOLEAN bLinkUp) +{ + int i, num; + UCHAR Rate, MaxDesire = RATE_1, MaxSupport = RATE_1; + ULONG BasicRateBitmap = 0; + UCHAR CurrBasicRate = RATE_1; + + // find max desired rate + num = 0; + for (i=0; iPortCfg.DesiredRates[i] & 0x7f) + { + case 2: Rate = RATE_1; num++; break; + case 4: Rate = RATE_2; num++; break; + case 11: Rate = RATE_5_5; num++; break; + case 22: Rate = RATE_11; num++; break; + case 12: Rate = RATE_6; num++; break; + case 18: Rate = RATE_9; num++; break; + case 24: Rate = RATE_12; num++; break; + case 36: Rate = RATE_18; num++; break; + case 48: Rate = RATE_24; num++; break; + case 72: Rate = RATE_36; num++; break; + case 96: Rate = RATE_48; num++; break; + case 108: Rate = RATE_54; num++; break; + default: Rate = RATE_1; break; + } + if (MaxDesire < Rate) MaxDesire = Rate; + } + + // 2003-12-10 802.11g WIFI spec disallow OFDM rates in 802.11g ADHOC mode + if ((pAd->PortCfg.BssType == BSS_INDEP) && + (pAd->PortCfg.PhyMode == PHY_11BG_MIXED) && + (pAd->PortCfg.AdhocMode == 0) && + (MaxDesire > RATE_11)) + MaxDesire = RATE_11; + + pAd->PortCfg.MaxDesiredRate = MaxDesire; + + // Auto rate switching is enabled only if more than one DESIRED RATES are + // specified; otherwise disabled + if (num <= 1) + pAd->PortCfg.EnableAutoRateSwitching = FALSE; + else + pAd->PortCfg.EnableAutoRateSwitching = TRUE; + + // find max supported rate + for (i=0; iPortCfg.SupportedRatesLen; i++) + { + switch (pAd->PortCfg.SupportedRates[i] & 0x7f) + { + case 2: Rate = RATE_1; + if (pAd->PortCfg.SupportedRates[i] & 0x80) + BasicRateBitmap |= 0x0001; + break; + case 4: Rate = RATE_2; + if (pAd->PortCfg.SupportedRates[i] & 0x80) + BasicRateBitmap |= 0x0002; + break; + case 11: + Rate = RATE_5_5; + if (pAd->PortCfg.SupportedRates[i] & 0x80) + BasicRateBitmap |= 0x0004; + break; + case 22: + Rate = RATE_11; + if (pAd->PortCfg.SupportedRates[i] & 0x80) + BasicRateBitmap |= 0x0008; + break; + case 12: + Rate = RATE_6; +// if (pAd->PortCfg.SupportedRates[i] & 0x80) + BasicRateBitmap |= 0x0010; + break; + case 18: + Rate = RATE_9; + if (pAd->PortCfg.SupportedRates[i] & 0x80) + BasicRateBitmap |= 0x0020; + break; + case 24: + Rate = RATE_12; +// if (pAd->PortCfg.SupportedRates[i] & 0x80) + BasicRateBitmap |= 0x0040; + break; + case 36: + Rate = RATE_18; + if (pAd->PortCfg.SupportedRates[i] & 0x80) + BasicRateBitmap |= 0x0080; + break; + case 48: + Rate = RATE_24; +// if (pAd->PortCfg.SupportedRates[i] & 0x80) + BasicRateBitmap |= 0x0100; + break; + case 72: + Rate = RATE_36; + if (pAd->PortCfg.SupportedRates[i] & 0x80) + BasicRateBitmap |= 0x0200; + break; + case 96: + Rate = RATE_48; + if (pAd->PortCfg.SupportedRates[i] & 0x80) + BasicRateBitmap |= 0x0400; + break; + case 108: + Rate = RATE_54; + if (pAd->PortCfg.SupportedRates[i] & 0x80) + BasicRateBitmap |= 0x0800; + break; + default: + Rate = RATE_1; + break; + } + if (MaxSupport < Rate) MaxSupport = Rate; + } + RTMP_IO_WRITE32(pAd, ARCSR1, BasicRateBitmap); + + // calculate the expected ACK rate for each TX rate. This info is used to caculate + // the DURATION field of outgoing unicast DATA/MGMT frame + for (i=0; iPortCfg.ExpectedACKRate[i] = CurrBasicRate; + DBGPRINT(RT_DEBUG_INFO,"Expected ACK rate[%d] = %d Mbps\n", RateIdToMbps[i], RateIdToMbps[CurrBasicRate]); + } + + // max tx rate = min {max desire rate, max supported rate} + if (MaxSupport < MaxDesire) + pAd->PortCfg.MaxTxRate = MaxSupport; + else + pAd->PortCfg.MaxTxRate = MaxDesire; + + // 2003-07-31 john - 2500 doesn't have good sensitivity at high OFDM rates. to increase the success + // ratio of initial DHCP packet exchange, TX rate starts from a lower rate depending + // on average RSSI + // 1. RSSI >= -70db, start at 54 Mbps (short distance) + // 2. -70 > RSSI >= -75, start at 24 Mbps (mid distance) + // 3. -75 > RSSI, start at 11 Mbps (long distance) + if (pAd->PortCfg.EnableAutoRateSwitching) + { + if (pAd->PortCfg.Channel > 14) + pAd->PortCfg.TxRate = RATE_6; // 802.11a + else + { + short dbm = pAd->PortCfg.AvgRssi - pAd->PortCfg.RssiToDbm; + if (bLinkUp == TRUE && pAd->PortCfg.MaxTxRate >= RATE_24) + pAd->PortCfg.TxRate = RATE_24; + else + pAd->PortCfg.TxRate = pAd->PortCfg.MaxTxRate; + if (dbm < -75) + pAd->PortCfg.TxRate = RATE_11; + else if ((dbm < -70) && (pAd->PortCfg.TxRate > RATE_24)) + pAd->PortCfg.TxRate = RATE_24; + DBGPRINT(RT_DEBUG_TRACE, " MlmeUpdateTxRates (Rssi=%d, init TX rate = %d Mbps)\n", dbm, RateIdToMbps[pAd->PortCfg.TxRate]); + } + } + else + pAd->PortCfg.TxRate = pAd->PortCfg.MaxTxRate; + + switch (pAd->PortCfg.PhyMode) { + case PHY_11BG_MIXED: + case PHY_11B: + pAd->PortCfg.MlmeRate = RATE_2; +#ifdef WIFI_TEST + pAd->PortCfg.RtsRate = RATE_11; +#else + pAd->PortCfg.RtsRate = RATE_2; +#endif + break; + case PHY_11A: + pAd->PortCfg.MlmeRate = RATE_6; + pAd->PortCfg.RtsRate = RATE_6; + break; + case PHY_11ABG_MIXED: + if (pAd->PortCfg.Channel <= 14) + { + pAd->PortCfg.MlmeRate = RATE_2; + pAd->PortCfg.RtsRate = RATE_2; + } + else + { + pAd->PortCfg.MlmeRate = RATE_6; + pAd->PortCfg.RtsRate = RATE_6; + } + break; + default: // error + pAd->PortCfg.MlmeRate = RATE_2; + pAd->PortCfg.RtsRate = RATE_2; + break; + } + + DBGPRINT(RT_DEBUG_TRACE, " MlmeUpdateTxRates (MaxDesire=%d, MaxSupport=%d, MaxTxRate=%d, Rate Switching =%d)\n", + RateIdToMbps[MaxDesire], RateIdToMbps[MaxSupport], RateIdToMbps[pAd->PortCfg.MaxTxRate], pAd->PortCfg.EnableAutoRateSwitching); + DBGPRINT(RT_DEBUG_TRACE, " MlmeUpdateTxRates (TxRate=%d, RtsRate=%d, BasicRateBitmap=0x%04x)\n", + RateIdToMbps[pAd->PortCfg.TxRate], RateIdToMbps[pAd->PortCfg.RtsRate], BasicRateBitmap); +} + +VOID MlmeRadioOff( + IN PRTMP_ADAPTER pAd) +{ + // Set Radio off flag + RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF); + + // Link down first if any association exists + if (INFRA_ON(pAd) || ADHOC_ON(pAd)) + LinkDown(pAd); + + // Abort Tx + RTMP_IO_WRITE32(pAd, TXCSR0, 0x08); + // Disable Rx + RTMP_IO_WRITE32(pAd, RXCSR0, 0x01); + // Turn off radio + RTMP_IO_WRITE32(pAd, PWRCSR0, 0x00000000); + + if (pAd->PortCfg.LedMode == LED_MODE_ASUS) + { + ASIC_LED_ACT_OFF(pAd); + } + + // Clean up old bss table + BssTableInit(&pAd->PortCfg.BssTab); +} + +VOID MlmeRadioOn( + IN PRTMP_ADAPTER pAd) +{ + // Turn on radio + RTMP_IO_WRITE32(pAd, PWRCSR0, 0x3f3b3100); + + // Abort Tx + RTMP_IO_WRITE32(pAd, TXCSR0, 0x08); + // Disable Rx + RTMP_IO_WRITE32(pAd, RXCSR0, 0x01); + + RTMPRingCleanUp(pAd, TX_RING); + RTMPRingCleanUp(pAd, PRIO_RING); + RTMPRingCleanUp(pAd, RX_RING); + + NICResetFromError(pAd); + // Clear Radio off flag + RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF); + + if (pAd->PortCfg.LedMode == LED_MODE_ASUS) + { + RTMP_IO_WRITE32(pAd, LEDCSR, 0x0002461E); + } +} + +// =========================================================================================== +// bss_table.c +// =========================================================================================== + + +/*! \brief initialize BSS table + * \param p_tab pointer to the table + * \return none + * \pre + * \post + */ +VOID BssTableInit( + IN BSS_TABLE *Tab) +{ + int i; + + Tab->BssNr = 0; + for (i = 0; i < MAX_LEN_OF_BSS_TABLE; i++) + { + memset(&Tab->BssEntry[i], 0, sizeof(BSS_ENTRY)); + } +} + +/*! \brief search the BSS table by SSID + * \param p_tab pointer to the bss table + * \param ssid SSID string + * \return index of the table, BSS_NOT_FOUND if not in the table + * \pre + * \post + * \note search by sequential search + */ +ULONG BssTableSearch( + IN BSS_TABLE *Tab, + IN PMACADDR Bssid) +{ + UCHAR i; + + for (i = 0; i < Tab->BssNr; i++) + { + //printf("comparing %s and %s\n", p_tab->bss[i].ssid, ssid); + if (MAC_ADDR_EQUAL(&(Tab->BssEntry[i].Bssid), Bssid)) + { + return i; + } + } + return (ULONG)BSS_NOT_FOUND; +} + +VOID BssTableDeleteEntry( + IN OUT BSS_TABLE *Tab, + IN PMACADDR Bssid) +{ + UCHAR i, j; + + for (i = 0; i < Tab->BssNr; i++) + { + //printf("comparing %s and %s\n", p_tab->bss[i].ssid, ssid); + if (MAC_ADDR_EQUAL(&(Tab->BssEntry[i].Bssid), Bssid)) + { + for (j = i; j < Tab->BssNr - 1; j++) + { + memcpy(&(Tab->BssEntry[j]), &(Tab->BssEntry[j + 1]), sizeof(BSS_ENTRY)); + } + Tab->BssNr -= 1; + return; + } + } +} + +UCHAR ZeroSsid[32] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +/*! \brief + * \param + * \return + * \pre + * \post + */ +VOID BssEntrySet( + IN PRTMP_ADAPTER pAd, + OUT BSS_ENTRY *pBss, + IN MACADDR *pBssid, + IN CHAR Ssid[], + IN UCHAR SsidLen, + IN UCHAR BssType, + IN USHORT BeaconPeriod, + IN BOOLEAN CfExist, + IN CF_PARM *pCfParm, + IN USHORT AtimWin, + IN USHORT CapabilityInfo, + IN UCHAR Rates[], + IN UCHAR RatesLen, + IN BOOLEAN ExtendedRateIeExist, + IN UCHAR Channel, + IN UCHAR Rssi, + IN UCHAR Noise, + IN LARGE_INTEGER TimeStamp, + IN PNDIS_802_11_VARIABLE_IEs pVIE) +{ + COPY_MAC_ADDR(&pBss->Bssid, pBssid); + // Default Hidden SSID to be TRUE, it will be turned to FALSE after coping SSID + pBss->Hidden = 1; + if (SsidLen > 0) + { + // For hidden SSID AP, it might send beacon with SSID len equal to 0 + // Or send beacon /probe response with SSID len matching real SSID length, + // but SSID is all zero. such as "00-00-00-00" with length 4. + // We have to prevent this case overwrite correct table + if (NdisEqualMemory(Ssid, ZeroSsid, SsidLen) == 0) + { + memcpy(pBss->Ssid, Ssid, SsidLen); + pBss->SsidLen = SsidLen; + pBss->Hidden = 0; + } + } + pBss->BssType = BssType; + pBss->BeaconPeriod = BeaconPeriod; + if (BssType == BSS_INFRA) + { + if (CfExist) + { + pBss->CfpCount = pCfParm->CfpCount; + pBss->CfpPeriod = pCfParm->CfpPeriod; + pBss->CfpMaxDuration = pCfParm->CfpMaxDuration; + pBss->CfpDurRemaining = pCfParm->CfpDurRemaining; + } + } + else + { + pBss->AtimWin = AtimWin; + } + + pBss->CapabilityInfo = CapabilityInfo; + // The privacy bit indicate security is ON, it maight be WEP, TKIP or AES + // Combine with AuthMode, they will decide the connection methods. + pBss->Privacy = CAP_IS_PRIVACY_ON(pBss->CapabilityInfo); + memcpy(pBss->Rates, Rates, RatesLen); + pBss->RatesLen = RatesLen; + pBss->ExtendedRateIeExist = ExtendedRateIeExist; + pBss->Channel = Channel; + pBss->Rssi = Rssi; + pBss->Noise = Noise; + + // New for microsoft Fixed IEs + memcpy(pBss->FixIEs.Timestamp, &TimeStamp, 8); + pBss->FixIEs.BeaconInterval = BeaconPeriod; + pBss->FixIEs.Capabilities = CapabilityInfo; + + // New for microsoft Variable IEs + if (pVIE->Length != 0) + { + pBss->VarIELen = pVIE->Length + 2; + memcpy(pBss->VarIEs, pVIE, pBss->VarIELen); + pBss->WepStatus = BssCipherParse(pBss->VarIEs); + } + else + { + pBss->VarIELen = 0; + // No SSN ID, if security is on, this is WEP algorithm + if (pBss->Privacy) + pBss->WepStatus = Ndis802_11WEPEnabled; + // No SSN ID, security is also off. + else + pBss->WepStatus = Ndis802_11WEPDisabled; + } +} + +/*! + * \brief insert an entry into the bss table + * \param p_tab The BSS table + * \param Bssid BSSID + * \param ssid SSID + * \param ssid_len Length of SSID + * \param bss_type + * \param beacon_period + * \param timestamp + * \param p_cf + * \param atim_win + * \param cap + * \param rates + * \param rates_len + * \param channel_idx + * \return none + * \pre + * \post + * \note If SSID is identical, the old entry will be replaced by the new one + */ +ULONG BssTableSetEntry( + IN PRTMP_ADAPTER pAd, + OUT BSS_TABLE *Tab, + IN MACADDR *Bssid, + IN CHAR Ssid[], + IN UCHAR SsidLen, + IN UCHAR BssType, + IN USHORT BeaconPeriod, + IN BOOLEAN CfExist, + IN CF_PARM *CfParm, + IN USHORT AtimWin, + IN USHORT CapabilityInfo, + IN UCHAR Rates[], + IN UCHAR RatesLen, + IN BOOLEAN ExtendedRateIeExist, + IN UCHAR ChannelNo, + IN UCHAR Rssi, + IN UCHAR Noise, + IN LARGE_INTEGER TimeStamp, + IN PNDIS_802_11_VARIABLE_IEs pVIE) +{ + ULONG Idx; + Idx = BssTableSearch(Tab, Bssid); + if (Idx == BSS_NOT_FOUND) + { + if (Tab->BssNr >= MAX_LEN_OF_BSS_TABLE) + return BSS_NOT_FOUND; + + Idx = Tab->BssNr; + BssEntrySet(pAd, &Tab->BssEntry[Idx], Bssid, Ssid, SsidLen, BssType, BeaconPeriod, + CfExist, CfParm, AtimWin, CapabilityInfo, Rates, RatesLen, ExtendedRateIeExist, + ChannelNo, Rssi, Noise, TimeStamp, pVIE); + Tab->BssNr++; + } + else + { + BssEntrySet(pAd, &Tab->BssEntry[Idx], Bssid, Ssid, SsidLen, BssType, BeaconPeriod, + CfExist, CfParm, AtimWin, CapabilityInfo, Rates, RatesLen, ExtendedRateIeExist, + ChannelNo, Rssi, Noise, TimeStamp, pVIE); + } + + return Idx; +} + +VOID BssTableSsidSort( + IN PRTMP_ADAPTER pAd, + OUT BSS_TABLE *OutTab, + IN CHAR Ssid[], + IN UCHAR SsidLen) +{ + INT i; + BssTableInit(OutTab); + + for (i = 0; i < pAd->PortCfg.BssTab.BssNr; i++) + { + BSS_ENTRY *pInBss = &pAd->PortCfg.BssTab.BssEntry[i]; + + if ((pInBss->BssType == pAd->PortCfg.BssType) && + ((pInBss->SsidLen==SsidLen) && RTMPEqualMemory(pInBss->Ssid, Ssid, (ULONG) SsidLen))) + { + BSS_ENTRY *pOutBss = &OutTab->BssEntry[OutTab->BssNr]; + + // Bss Type matched, SSID matched. + // We will check wepstatus for qualification Bss + if (pAd->PortCfg.WepStatus != pInBss->WepStatus) + continue; + + // Since the AP is using hidden SSID, and we are trying to connect to ANY + // It definitely will fail. So, skip it. + // CCX also require not even try to connect it!! + if (SsidLen == 0) + continue; + + // copy matching BSS from InTab to OutTab + memcpy(pOutBss, pInBss, sizeof(BSS_ENTRY)); + + OutTab->BssNr++; + } + else if ((pInBss->BssType == pAd->PortCfg.BssType) && (SsidLen == 0)) + { + BSS_ENTRY *pOutBss = &OutTab->BssEntry[OutTab->BssNr]; + + // Bss Type matched, SSID matched. + // We will check wepstatus for qualification Bss + if (pAd->PortCfg.WepStatus != pInBss->WepStatus) + continue; + + // copy matching BSS from InTab to OutTab + memcpy(pOutBss, pInBss, sizeof(BSS_ENTRY)); + + OutTab->BssNr++; + } +#if 0 + else if ((pInBss->BssType == pAd->PortCfg.BssType) && (pInBss->SsidLen == 0)) + { + // Add for hidden SSID. But we have to verify the security suite too. + BSS_ENTRY *pOutBss = &OutTab->BssEntry[OutTab->BssNr]; + + // Bss Type matched, SSID matched. + // We will check wepstatus for qualification Bss + if (pAd->PortCfg.WepStatus != pInBss->WepStatus) + continue; + + // copy matching BSS from InTab to OutTab + memcpy(pOutBss, pInBss, sizeof(BSS_ENTRY)); + + OutTab->BssNr++; + } +#endif + if (OutTab->BssNr >= MAX_LEN_OF_BSS_TABLE) + break; + + } + + BssTableSortByRssi(OutTab); +} + +VOID BssTableSortByRssi( + IN OUT BSS_TABLE *OutTab) +{ + INT i, j; + BSS_ENTRY TmpBss; + + for (i = 0; i < OutTab->BssNr - 1; i++) + { + for (j = i+1; j < OutTab->BssNr; j++) + { + if (OutTab->BssEntry[j].Rssi > OutTab->BssEntry[i].Rssi) + { + memcpy(&TmpBss, &OutTab->BssEntry[j], sizeof(BSS_ENTRY)); + memcpy(&OutTab->BssEntry[j], &OutTab->BssEntry[i], sizeof(BSS_ENTRY)); + memcpy(&OutTab->BssEntry[i], &TmpBss, sizeof(BSS_ENTRY)); + } + } + } +} + +NDIS_802_11_WEP_STATUS BssCipherParse( + IN PUCHAR pCipher) +{ + PBEACON_EID_STRUCT pEid; + PUCHAR pTmp; + + pEid = (PBEACON_EID_STRUCT) pCipher; + + // Double check sanity information, although it should be done at peer beacon sanity check already. + if (pEid->Eid != IE_WPA) + return (Ndis802_11WEPDisabled); + + // Double check Var IE length, it must be no less than 0x16 + if (pEid->Len < 0x16) + return (Ndis802_11WEPDisabled); + + // Skip OUI, version, and multicast suite + // This part should be improved in the future when AP supported multiple cipher suite. + // For now, it's OK since almost all APs have fixed cipher suite supported. + pTmp = (PUCHAR) pEid->Octet; + pTmp += 9; + + if (*pTmp == 4) // AES + return (Ndis802_11Encryption3Enabled); + else if (*pTmp == 2) // TKIP + return (Ndis802_11Encryption2Enabled); + + return (Ndis802_11WEPDisabled); +} + +// =========================================================================================== +// mac_table.c +// =========================================================================================== + +/*! \brief generates a random mac address value for IBSS BSSID + * \param Addr the bssid location + * \return none + * \pre + * \post + */ +VOID MacAddrRandomBssid( + IN PRTMP_ADAPTER pAd, + OUT MACADDR *Addr) +{ + INT i; + + for (i = 0; i < ETH_ALEN; i++) + { + Addr->Octet[i] = RandomByte(pAd); + } + + Addr->Octet[0] = (Addr->Octet[0] & 0xfe) | 0x02; // the first 2 bits must be 01xxxxxxxx +} + +/*! \brief init the management mac frame header + * \param p_hdr mac header + * \param subtype subtype of the frame + * \param p_ds destination address, don't care if it is a broadcast address + * \return none + * \pre the station has the following information in the pAd->PortCfg + * - bssid + * - station address + * \post + * \note this function initializes the following field + */ +VOID MgtMacHeaderInit( + IN PRTMP_ADAPTER pAd, + IN OUT PMACHDR Hdr, + IN UCHAR Subtype, + IN UCHAR ToDs, + IN PMACADDR Ds, + IN PMACADDR Bssid) +{ + memset(Hdr, 0, sizeof(MACHDR)); + Hdr->Type = BTYPE_MGMT; + Hdr->SubType = Subtype; + Hdr->Tods = ToDs; + COPY_MAC_ADDR(&Hdr->Addr1, Ds); + COPY_MAC_ADDR(&Hdr->Addr2, &pAd->CurrentAddress); + COPY_MAC_ADDR(&Hdr->Addr3, Bssid); +} + +// =========================================================================================== +// mem_mgmt.c +// =========================================================================================== + +/*!*************************************************************************** + * This routine build an outgoing frame, and fill all information specified + * in argument list to the frame body. The actual frame size is the summation + * of all arguments. + * input params: + * Buffer - pointer to a pre-allocated memory segment + * args - a list of pairs. + * NOTE NOTE NOTE!!!! the last argument must be NULL, otherwise this + * function will FAIL!!! + * return: + * Size of the buffer + * usage: + * MakeOutgoingFrame(Buffer, output_length, 2, &fc, 2, &dur, 6, p_addr1, 6,p_addr2, END_OF_ARGS); + ****************************************************************************/ +ULONG MakeOutgoingFrame( + OUT CHAR *Buffer, + OUT ULONG *FrameLen, ...) +{ + CHAR *p; + int leng; + ULONG TotLeng; + va_list Args; + + // calculates the total length + TotLeng = 0; + va_start(Args, FrameLen); + do + { + leng = va_arg(Args, int); + if (leng == END_OF_ARGS) + { + break; + } + p = va_arg(Args, PVOID); + memcpy(&Buffer[TotLeng], p, leng); + TotLeng = TotLeng + leng; + } while(TRUE); + + va_end(Args); /* clean up */ + *FrameLen = TotLeng; + return TotLeng; +} + +// =========================================================================================== +// mlme_queue.c +// =========================================================================================== + +/*! \brief Initialize The MLME Queue, used by MLME Functions + * \param *Queue The MLME Queue + * \return Always Return NDIS_STATE_SUCCESS in this implementation + * \pre + * \post + * \note Because this is done only once (at the init stage), no need to be locked + */ +NDIS_STATUS MlmeQueueInit( + IN MLME_QUEUE *Queue) +{ + INT i; + + spin_lock_init(&Queue->Lock); + + Queue->Num = 0; + Queue->Head = 0; + Queue->Tail = 0; + + for (i = 0; i < MAX_LEN_OF_MLME_QUEUE; i++) + { + Queue->Entry[i].Occupied = FALSE; + Queue->Entry[i].MsgLen = 0; + memset(Queue->Entry[i].Msg, 0, MAX_LEN_OF_MLME_BUFFER); + } + + return NDIS_STATUS_SUCCESS; +} + + +/*! \brief Enqueue a message for other threads, if they want to send messages to MLME thread + * \param *Queue The MLME Queue + * \param Machine The State Machine Id + * \param MsgType The Message Type + * \param MsgLen The Message length + * \param *Msg The message pointer + * \return TRUE if enqueue is successful, FALSE if the queue is full + * \pre + * \post + * \note The message has to be initialized + */ +BOOLEAN MlmeEnqueue( + OUT MLME_QUEUE *Queue, + IN ULONG Machine, + IN ULONG MsgType, + IN ULONG MsgLen, + IN VOID *Msg) +{ + INT Tail; + unsigned long flags; + // First check the size, it MUST not exceed the mlme queue size + if (MsgLen > MAX_LEN_OF_MLME_BUFFER) + { + DBGPRINT(RT_DEBUG_ERROR, "MlmeEnqueueForRecv mlme frame too large, size = %d \n", MsgLen); + return FALSE; + } + + spin_lock_irqsave(&(Queue->Lock), flags); + if (MlmeQueueFull(Queue)) + { + printk(KERN_ERR DRV_NAME "MlmeEnqueue full, msg dropped and may corrupt MLME\n"); + spin_unlock_irqrestore(&(Queue->Lock), flags); + return FALSE; + } + + Tail = Queue->Tail; + Queue->Tail++; + Queue->Num++; + if (Queue->Tail == MAX_LEN_OF_MLME_QUEUE) + { + Queue->Tail = 0; + } + DBGPRINT(RT_DEBUG_INFO, "MlmeEnqueue, num=%d\n",Queue->Num); + + Queue->Entry[Tail].Occupied = TRUE; + Queue->Entry[Tail].Machine = Machine; + Queue->Entry[Tail].MsgType = MsgType; + Queue->Entry[Tail].MsgLen = MsgLen; + memcpy(Queue->Entry[Tail].Msg, Msg, MsgLen); + spin_unlock_irqrestore(&(Queue->Lock), flags); + return TRUE; +} + +/*! \brief This function is used when Recv gets a MLME message + * \param *Queue The MLME Queue + * \param TimeStampHigh The upper 32 bit of timestamp + * \param TimeStampLow The lower 32 bit of timestamp + * \param Rssi The receiving RSSI strength + * \param MsgLen The length of the message + * \param *Msg The message pointer + * \return TRUE if everything ok, FALSE otherwise (like Queue Full) + * \pre + * \post + */ +BOOLEAN MlmeEnqueueForRecv( + IN PRTMP_ADAPTER pAd, + OUT MLME_QUEUE *Queue, + IN ULONG TimeStampHigh, + IN ULONG TimeStampLow, + IN UCHAR Rssi, + IN UCHAR Noise, + IN ULONG MsgLen, + IN VOID *Msg) +{ + INT Tail, Machine; + MACFRAME *Fr = (MACFRAME *)Msg; + ULONG MsgType; + unsigned long flags; + + // First check the size, it MUST not exceed the mlme queue size + if (MsgLen > MAX_LEN_OF_MLME_BUFFER) + { + DBGPRINT(RT_DEBUG_ERROR, "MlmeEnqueueForRecv mlme frame too large, size = %d \n", MsgLen); + return FALSE; + } + + + if (!MsgTypeSubst(Fr, &Machine, &MsgType)) + { + DBGPRINT(RT_DEBUG_ERROR, "MlmeEnqueueForRecv (drop mgmt->subtype=%d)\n",Fr->Hdr.SubType); + return FALSE; + } + + spin_lock_irqsave(&(Queue->Lock), flags); + if (MlmeQueueFull(Queue)) + { + DBGPRINT(RT_DEBUG_ERROR, "MlmeEnqueueForRecv (queue full error) \n"); + spin_unlock_irqrestore(&(Queue->Lock), flags); + return FALSE; + } + + // OK, we got all the informations, it is time to put things into queue + Tail = Queue->Tail; + Queue->Tail++; + Queue->Num++; + if (Queue->Tail == MAX_LEN_OF_MLME_QUEUE) + { + Queue->Tail = 0; + } + + DBGPRINT(RT_DEBUG_INFO, "MlmeEnqueueForRecv, num=%d\n",Queue->Num); + + Queue->Entry[Tail].Occupied = TRUE; + Queue->Entry[Tail].Machine = Machine; + Queue->Entry[Tail].MsgType = MsgType; + Queue->Entry[Tail].MsgLen = MsgLen; + Queue->Entry[Tail].TimeStamp.vv.LowPart = TimeStampLow; + Queue->Entry[Tail].TimeStamp.vv.HighPart = TimeStampHigh; + Queue->Entry[Tail].Rssi = Rssi; + Queue->Entry[Tail].Noise = (Noise > BBP_R17_DYNAMIC_UP_BOUND) ? BBP_R17_DYNAMIC_UP_BOUND : ((ULONG) Noise); + memcpy(Queue->Entry[Tail].Msg, Msg, MsgLen); + spin_unlock_irqrestore(&(Queue->Lock), flags); + + MlmeHandler(pAd); + + return TRUE; +} + +/*! \brief Dequeue a message from the MLME Queue + * \param *Queue The MLME Queue + * \param *Elem The message dequeued from MLME Queue + * \return TRUE if the Elem contains something, FALSE otherwise + * \pre + * \post + */ +BOOLEAN MlmeDequeue( + IN MLME_QUEUE *Queue, + OUT MLME_QUEUE_ELEM **Elem) +{ + unsigned long flags; + spin_lock_irqsave(&(Queue->Lock), flags); + if (Queue->Num == 0) { + spin_unlock_irqrestore(&(Queue->Lock),flags); + return FALSE; + } + *Elem = &(Queue->Entry[Queue->Head]); + Queue->Num--; + Queue->Head++; + if (Queue->Head == MAX_LEN_OF_MLME_QUEUE) + { + Queue->Head = 0; + } + spin_unlock_irqrestore(&(Queue->Lock), flags); + DBGPRINT(RT_DEBUG_INFO, "MlmeDequeue, num=%d\n",Queue->Num); + + return TRUE; +} + +VOID MlmeRestartStateMachine( + IN PRTMP_ADAPTER pAd) +{ + MLME_QUEUE_ELEM *Elem = NULL; + unsigned long flags; + + if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_MLME_INITIALIZED)){ + DBGPRINT(RT_DEBUG_INFO, "MLME not yet initialized...\n"); + if(MlmeInit(pAd)) + DBGPRINT(RT_DEBUG_ERROR, "Failure to initialize mlme.\n"); + // Continue the reset procedure... + } + + spin_lock_irqsave(&pAd->Mlme.TaskLock, flags); + if(pAd->Mlme.Running) + { + spin_unlock_irqrestore(&pAd->Mlme.TaskLock, flags); + return; + } + else + { + pAd->Mlme.Running = TRUE; + } + spin_unlock_irqrestore(&pAd->Mlme.TaskLock, flags); + + // Remove all Mlme queues elements + while (MlmeDequeue(&pAd->Mlme.Queue, &Elem)) + { + //From message type, determine which state machine I should drive + + // free MLME element + Elem->Occupied = FALSE; + Elem->MsgLen = 0; + + } + + // Cancel all timer events + // Be careful to cancel new added timer + RTMPCancelTimer(&pAd->Mlme.AssocAux.AssocTimer); + RTMPCancelTimer(&pAd->Mlme.AssocAux.ReassocTimer); + RTMPCancelTimer(&pAd->Mlme.AssocAux.DisassocTimer); + RTMPCancelTimer(&pAd->Mlme.AuthAux.AuthTimer); + RTMPCancelTimer(&pAd->Mlme.AuthRspAux.AuthRspTimer); + RTMPCancelTimer(&pAd->Mlme.SyncAux.BeaconTimer); + RTMPCancelTimer(&pAd->Mlme.SyncAux.ScanTimer); + RTMPCancelTimer(&pAd->PortCfg.RfTuningTimer); + + // Change back to original channel in case of doing scan + AsicSwitchChannel(pAd, pAd->PortCfg.Channel); + AsicLockChannel(pAd, pAd->PortCfg.Channel); + + // Resume MSDU which is turned off durning scan + RTMPResumeMsduTransmission(pAd); + + // Set all state machines back IDLE + pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE; + pAd->Mlme.AuthRspMachine.CurrState = AUTH_RSP_IDLE; + pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE; + + // Remove running state + spin_lock_irqsave(&pAd->Mlme.TaskLock, flags); + pAd->Mlme.Running = FALSE; + spin_unlock_irqrestore(&pAd->Mlme.TaskLock, flags); +} + +/*! \brief test if the MLME Queue is empty + * \param *Queue The MLME Queue + * \return TRUE if the Queue is empty, FALSE otherwise + * \pre + * \post + */ +BOOLEAN MlmeQueueEmpty( + IN MLME_QUEUE *Queue) +{ + BOOLEAN Ans; + + Ans = (Queue->Num == 0); + + return Ans; +} + +/*! \brief test if the MLME Queue is full + * \param *Queue The MLME Queue + * \return TRUE if the Queue is empty, FALSE otherwise + * \pre + * \post + */ +BOOLEAN MlmeQueueFull( + IN MLME_QUEUE *Queue) +{ + BOOLEAN Ans; + + Ans = (Queue->Num == MAX_LEN_OF_MLME_QUEUE); + + return Ans; +} + +/*! \brief The destructor of MLME Queue + * \param + * \return + * \pre + * \post + * \note Clear Mlme Queue, Set Queue->Num to Zero. + */ +VOID MlmeQueueDestroy( + IN MLME_QUEUE *Queue) +{ + unsigned long flags; + spin_lock_irqsave(&(Queue->Lock), flags); + Queue->Num = 0; + Queue->Head = 0; + Queue->Tail = 0; + spin_unlock_irqrestore(&(Queue->Lock), flags); +} + +/*! \brief To substitute the message type if the message is coming from external + * \param *Fr The frame received + * \param *Machine The state machine + * \param *MsgType the message type for the state machine + * \return TRUE if the substitution is successful, FALSE otherwise + * \pre + * \post + */ +BOOLEAN MsgTypeSubst( + IN MACFRAME *Fr, + OUT INT *Machine, + OUT INT *MsgType) +{ + USHORT Seq; + UCHAR EAPType; + + // The only data type will pass to this function is EAPOL frame + if (Fr->Hdr.Type == BTYPE_DATA) + { + *Machine = WPA_PSK_STATE_MACHINE; + EAPType = *((UCHAR*)Fr + LENGTH_802_11 + LENGTH_802_1_H + 1); + return(WpaMsgTypeSubst(EAPType, MsgType)); + } + + switch (Fr->Hdr.SubType) + { + case SUBTYPE_ASSOC_REQ: + *Machine = ASSOC_STATE_MACHINE; + *MsgType = MT2_PEER_ASSOC_REQ; + break; + case SUBTYPE_ASSOC_RSP: + *Machine = ASSOC_STATE_MACHINE; + *MsgType = MT2_PEER_ASSOC_RSP; + break; + case SUBTYPE_REASSOC_REQ: + *Machine = ASSOC_STATE_MACHINE; + *MsgType = MT2_PEER_REASSOC_REQ; + break; + case SUBTYPE_REASSOC_RSP: + *Machine = ASSOC_STATE_MACHINE; + *MsgType = MT2_PEER_REASSOC_RSP; + break; + case SUBTYPE_PROBE_REQ: + *Machine = SYNC_STATE_MACHINE; + *MsgType = MT2_PEER_PROBE_REQ; + break; + case SUBTYPE_PROBE_RSP: + *Machine = SYNC_STATE_MACHINE; + *MsgType = MT2_PEER_PROBE_RSP; + break; + case SUBTYPE_BEACON: + *Machine = SYNC_STATE_MACHINE; + *MsgType = MT2_PEER_BEACON; + break; + case SUBTYPE_ATIM: + *Machine = SYNC_STATE_MACHINE; + *MsgType = MT2_PEER_ATIM; + break; + case SUBTYPE_DISASSOC: + *Machine = ASSOC_STATE_MACHINE; + *MsgType = MT2_PEER_DISASSOC_REQ; + break; + case SUBTYPE_AUTH: + // get the sequence number from payload 24 Mac Header + 2 bytes algorithm + memcpy(&Seq, &Fr->Octet[2], sizeof(USHORT)); + if (Seq == 1 || Seq == 3) + { + *Machine = AUTH_RSP_STATE_MACHINE; + *MsgType = MT2_PEER_AUTH_ODD; + } + else if (Seq == 2 || Seq == 4) + { + *Machine = AUTH_STATE_MACHINE; + *MsgType = MT2_PEER_AUTH_EVEN; + } + else + { + return FALSE; + } + break; + case SUBTYPE_DEAUTH: + *Machine = AUTH_RSP_STATE_MACHINE; + *MsgType = MT2_PEER_DEAUTH; + break; + default: + return FALSE; + break; + } + + return TRUE; +} + +// =========================================================================================== +// state_machine.c +// =========================================================================================== + +/*! \brief Initialize the state machine. + * \param *S pointer to the state machine + * \param Trans State machine transition function + * \param StNr number of states + * \param MsgNr number of messages + * \param DefFunc default function, when there is invalid state/message combination + * \param InitState initial state of the state machine + * \param Base StateMachine base, internal use only + * \pre p_sm should be a legal pointer + * \post + */ + +VOID StateMachineInit( + IN STATE_MACHINE *S, + IN STATE_MACHINE_FUNC Trans[], + IN ULONG StNr, + IN ULONG MsgNr, + IN STATE_MACHINE_FUNC DefFunc, + IN ULONG InitState, + IN ULONG Base) +{ + ULONG i, j; + + // set number of states and messages + S->NrState = StNr; + S->NrMsg = MsgNr; + S->Base = Base; + + S->TransFunc = Trans; + + // init all state transition to default function + for (i = 0; i < StNr; i++) + { + for (j = 0; j < MsgNr; j++) + { + S->TransFunc[i * MsgNr + j] = DefFunc; + } + } + + // set the starting state + S->CurrState = InitState; + +} + +/*! \brief This function fills in the function pointer into the cell in the state machine + * \param *S pointer to the state machine + * \param St state + * \param Msg incoming message + * \param f the function to be executed when (state, message) combination occurs at the state machine + * \pre *S should be a legal pointer to the state machine, st, msg, should be all within the range, Base should be set in the initial state + * \post + */ +VOID StateMachineSetAction( + IN STATE_MACHINE *S, + IN ULONG St, + IN ULONG Msg, + IN STATE_MACHINE_FUNC Func) +{ + ULONG MsgIdx; + + MsgIdx = Msg - S->Base; + + if (St < S->NrState && MsgIdx < S->NrMsg) + { + // boundary checking before setting the action + S->TransFunc[St * S->NrMsg + MsgIdx] = Func; + } +} + +/*! \brief The destructor of the state machine + * \param *S the statemachine + * \note doing nothing at this moment, may need to do something if the implementation changed + */ +VOID +StateMachineDestroy(IN STATE_MACHINE *S) +{ +} + +/*! \brief This function does the state transition + * \param *Adapter the NIC adapter pointer + * \param *S the state machine + * \param *Elem the message to be executed + * \return None + */ +VOID StateMachinePerformAction( + IN PRTMP_ADAPTER pAd, + IN STATE_MACHINE *S, + IN MLME_QUEUE_ELEM *Elem) +{ + (*(S->TransFunc[S->CurrState * S->NrMsg + Elem->MsgType - S->Base]))(pAd, Elem); +} + +/* + ========================================================================== + Description: + The drop function, when machine executes this, the message is simply + ignored. This function does nothing, the message is freed in + StateMachinePerformAction() + ========================================================================== + */ +VOID Drop( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ +#if 0 + if ((Elem->MsgType == MT2_PEER_BEACON) || + (Elem->MsgType == MT2_PEER_PROBE_REQ) || + (Elem->MsgType == MT2_PEER_PROBE_RSP)) + ; + else + { + DBGPRINT(RT_DEBUG_TRACE, ("Warn:>>Drop Msg=%d<<\n",Elem->MsgType)); + } +#endif +} + +// =========================================================================================== +// lfsr.c +// =========================================================================================== + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID LfsrInit( + IN PRTMP_ADAPTER pAd, + IN ULONG Seed) +{ + if (Seed == 0) + pAd->Mlme.ShiftReg = 1; + else + pAd->Mlme.ShiftReg = Seed; +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +UCHAR RandomByte( + IN PRTMP_ADAPTER pAd) +{ + ULONG i; + UCHAR R, Result; + + R = 0; + + for (i = 0; i < 8; i++) + { + if (pAd->Mlme.ShiftReg & 0x00000001) + { + pAd->Mlme.ShiftReg = ((pAd->Mlme.ShiftReg ^ LFSR_MASK) >> 1) | 0x80000000; + Result = 1; + } + else + { + pAd->Mlme.ShiftReg = pAd->Mlme.ShiftReg >> 1; + Result = 0; + } + R = (R << 1) | Result; + } + + return R; +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID AsicSwitchChannel( + IN PRTMP_ADAPTER pAd, + IN UCHAR Channel) +{ + ULONG R3; + UCHAR index; + int Value; + + // TODO: need to update E2PROM format to add 802.11a channel's TX power calibration values + if (Channel <= 14) + R3 = pAd->PortCfg.ChannelTxPower[Channel - 1]; + else + R3 = pAd->PortCfg.ChannelTxPower[0]; + + if (R3 > 31) R3 = 31; + + // E2PROM setting is calibrated for maximum TX power (i.e. 100%) + // We adjust TX power here according to the dBm specified from UI + // Krellan: Arbitrarily defining the recommended EEPROM value as 0 dBm, + // using signed number to get the dBm math right. + // Even if user has selected automatic TxPower level adjustment, + // driver starts the user's fixed settings as a base to adjust from. + Value = R3 + pAd->PortCfg.TxPowerUser; + Value = (Value > 31) ? 31 : Value; + Value = (Value < 0) ? 0 : Value; + R3 = Value; + + // Krellan: Save value for readout to user + pAd->PortCfg.TxPowerDriver = R3; + + R3 = R3 << 9; // shift TX power control to correct RF R3 bit position + + switch (pAd->PortCfg.RfType) + { + case RFIC_2522: + for (index = 0; index < NUM_OF_2522_CHNL; index++) + { + if (Channel == RF2522RegTable[index].Channel) + { + R3 = R3 | RF2522RegTable[index].R3; // set TX power + RTMP_RF_IO_WRITE32(pAd, RF2522RegTable[index].R1); + RTMP_RF_IO_WRITE32(pAd, RF2522RegTable[index].R2); + RTMP_RF_IO_WRITE32(pAd, R3); + pAd->PortCfg.LatchRfRegs.Channel = Channel; + pAd->PortCfg.LatchRfRegs.R1 = RF2522RegTable[index].R1; + pAd->PortCfg.LatchRfRegs.R2 = RF2522RegTable[index].R2; + pAd->PortCfg.LatchRfRegs.R3 = R3; + pAd->PortCfg.LatchRfRegs.R4 = RF2522RegTable[index].R4; + break; + } + } + break; + + case RFIC_2523: + for (index = 0; index < NUM_OF_2523_CHNL; index++) + { + if (Channel == RF2523RegTable[index].Channel) + { + R3 = R3 | RF2523RegTable[index].R3; // set TX power + RTMP_RF_IO_WRITE32(pAd, RF2523RegTable[index].R1); + RTMP_RF_IO_WRITE32(pAd, RF2523RegTable[index].R2); + RTMP_RF_IO_WRITE32(pAd, R3); + RTMP_RF_IO_WRITE32(pAd, RF2523RegTable[index].R4); + pAd->PortCfg.LatchRfRegs.Channel = Channel; + pAd->PortCfg.LatchRfRegs.R1 = RF2523RegTable[index].R1; + pAd->PortCfg.LatchRfRegs.R2 = RF2523RegTable[index].R2; + pAd->PortCfg.LatchRfRegs.R3 = R3; + pAd->PortCfg.LatchRfRegs.R4 = RF2523RegTable[index].R4; + break; + } + } + break; + + case RFIC_2524: + for (index = 0; index < NUM_OF_2524_CHNL; index++) + { + if (Channel == RF2524RegTable[index].Channel) + { + R3 = R3 | RF2524RegTable[index].R3; // set TX power + RTMP_RF_IO_WRITE32(pAd, RF2524RegTable[index].R1); + RTMP_RF_IO_WRITE32(pAd, RF2524RegTable[index].R2); + RTMP_RF_IO_WRITE32(pAd, R3); + RTMP_RF_IO_WRITE32(pAd, RF2524RegTable[index].R4); + pAd->PortCfg.LatchRfRegs.Channel = Channel; + pAd->PortCfg.LatchRfRegs.R1 = RF2524RegTable[index].R1; + pAd->PortCfg.LatchRfRegs.R2 = RF2524RegTable[index].R2; + pAd->PortCfg.LatchRfRegs.R3 = R3; + pAd->PortCfg.LatchRfRegs.R4 = RF2524RegTable[index].R4; + break; + } + } + break; + + case RFIC_2525: + for (index = 0; index < NUM_OF_2525_CHNL; index++) + { + if (Channel == RF2525RegTable[index].Channel) + { + // Tx power should based on the real channel value + R3 = R3 | RF2525RegTable[index].R3; // set TX power + // Set the channel to half band higher - 8 channels + // The addition is based on Gary and Sheng's request + RTMP_RF_IO_WRITE32(pAd, RF2525HBOffsetRegTable[index].R1); + RTMP_RF_IO_WRITE32(pAd, RF2525HBOffsetRegTable[index].R2); + RTMP_RF_IO_WRITE32(pAd, R3); + RTMP_RF_IO_WRITE32(pAd, RF2525HBOffsetRegTable[index].R4); + // Chnage to teh connect channel + RTMP_RF_IO_WRITE32(pAd, RF2525RegTable[index].R1); + RTMP_RF_IO_WRITE32(pAd, RF2525RegTable[index].R2); + RTMP_RF_IO_WRITE32(pAd, R3); + RTMP_RF_IO_WRITE32(pAd, RF2525RegTable[index].R4); + pAd->PortCfg.LatchRfRegs.Channel = Channel; + pAd->PortCfg.LatchRfRegs.R1 = RF2525RegTable[index].R1; + pAd->PortCfg.LatchRfRegs.R2 = RF2525RegTable[index].R2; + pAd->PortCfg.LatchRfRegs.R3 = R3; + pAd->PortCfg.LatchRfRegs.R4 = RF2525RegTable[index].R4; + break; + } + } + break; + + case RFIC_2525E: + for (index = 0; index < NUM_OF_2525E_CHNL; index++) + { + if (Channel == RF2525eRegTable[index].Channel) + { + R3 = R3 | RF2525eRegTable[index].R3; // set TX power + RTMP_RF_IO_WRITE32(pAd, RF2525eRegTable[index].R1); + RTMP_RF_IO_WRITE32(pAd, RF2525eRegTable[index].R2); + RTMP_RF_IO_WRITE32(pAd, R3); + RTMP_RF_IO_WRITE32(pAd, RF2525eRegTable[index].R4); + pAd->PortCfg.LatchRfRegs.Channel = Channel; + pAd->PortCfg.LatchRfRegs.R1 = RF2525eRegTable[index].R1; + pAd->PortCfg.LatchRfRegs.R2 = RF2525eRegTable[index].R2; + pAd->PortCfg.LatchRfRegs.R3 = R3; + pAd->PortCfg.LatchRfRegs.R4 = RF2525eRegTable[index].R4; + break; + } + } + break; + + case RFIC_5222: + for (index = 0; index < NUM_OF_5222_CHNL; index++) + { + if (Channel == RF5222RegTable[index].Channel) + { + R3 = R3 | RF5222RegTable[index].R3; // set TX power + RTMP_RF_IO_WRITE32(pAd, RF5222RegTable[index].R1); + RTMP_RF_IO_WRITE32(pAd, RF5222RegTable[index].R2); + RTMP_RF_IO_WRITE32(pAd, R3); + RTMP_RF_IO_WRITE32(pAd, RF5222RegTable[index].R4); + pAd->PortCfg.LatchRfRegs.Channel = Channel; + pAd->PortCfg.LatchRfRegs.R1 = RF5222RegTable[index].R1; + pAd->PortCfg.LatchRfRegs.R2 = RF5222RegTable[index].R2; + pAd->PortCfg.LatchRfRegs.R3 = R3; + pAd->PortCfg.LatchRfRegs.R4 = RF5222RegTable[index].R4; + break; + } + } + break; + + default: + break; + } + + DBGPRINT(RT_DEBUG_INFO, "AsicSwitchChannel(RF=%d) to #%d, TXPwr=%d, R1=0x%08x, R2=0x%08x, R3=0x%08x, R4=0x%08x\n", + pAd->PortCfg.RfType, + pAd->PortCfg.LatchRfRegs.Channel, + pAd->PortCfg.TxPower, + pAd->PortCfg.LatchRfRegs.R1, + pAd->PortCfg.LatchRfRegs.R2, + pAd->PortCfg.LatchRfRegs.R3, + pAd->PortCfg.LatchRfRegs.R4); +} + +/* + ========================================================================== + Description: + This function is required for 2421 only, and should not be used during + site survey. It's only required after NIC decided to stay at a channel + for a longer period. + When this function is called, it's always after AsicSwitchChannel(). + ========================================================================== + */ +VOID AsicLockChannel( + IN PRTMP_ADAPTER pAd, + IN UCHAR Channel) +{ + UCHAR r70; + ULONG FcsCnt; + + RTMPCancelTimer(&pAd->PortCfg.RfTuningTimer); + RTMPSetTimer(pAd, &pAd->PortCfg.RfTuningTimer, 1000/HZ); // 1 msec timer to turn OFF RF auto tuning + + RTMP_BBP_IO_READ32_BY_REG_ID(pAd, 70, &r70); + if (Channel == 14) + r70 = 0x4E; //set r70 to 0x4E instead of r70 |= 0x08; for turn on Japan filter bit + else + r70 = 0x46; //set r70 to 0x46 instead of r70 &= 0xf7; for turn off Japan filter bit + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 70, r70); + + // Clear false CRC durning switch channel + RTMP_IO_READ32(pAd, CNT0, &FcsCnt); +} + +VOID AsicRfTuningExec( + IN unsigned long data) +{ + RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; + + switch (pAd->PortCfg.RfType) + { + case RFIC_2522: + case RFIC_2524: + case RFIC_2525: + case RFIC_5222: + case RFIC_2525E: + pAd->PortCfg.LatchRfRegs.R1 &= 0xfffdffff; // RF R1.bit17 "tune_en1" OFF + pAd->PortCfg.LatchRfRegs.R3 &= 0xfffffeff; // RF R3.bit8 "tune_en2" OFF + RTMP_RF_IO_WRITE32(pAd, pAd->PortCfg.LatchRfRegs.R1); + RTMP_RF_IO_WRITE32(pAd, pAd->PortCfg.LatchRfRegs.R3); + DBGPRINT(RT_DEBUG_INFO, "AsicRfTuningExec(R1=0x%x,R3=0x%x)\n",pAd->PortCfg.LatchRfRegs.R1,pAd->PortCfg.LatchRfRegs.R3); + break; + + case RFIC_2523: + pAd->PortCfg.LatchRfRegs.R3 &= 0xfffffeff; // RF R3.bit8 "tune_en2" OFF + RTMP_RF_IO_WRITE32(pAd, pAd->PortCfg.LatchRfRegs.R3); + DBGPRINT(RT_DEBUG_INFO, "AsicRfTuningExec(R3=0x%x)\n",pAd->PortCfg.LatchRfRegs.R3); + break; + + default: + break; + } +} + +/* + ========================================================================== + Description: + Gives CCK TX rate 2 more dB TX power. + This routine works only in LINK UP in INFRASTRUCTURE mode. + + calculate desired Tx power in RF R3.Tx0~5, should consider - + 1. TxPowerPercentage + 2. auto calibration based on TSSI feedback + 3. extra 2 db for CCK + 4. -10 db upon very-short distance (AvgRSSI >= -40db) to AP + ========================================================================== + */ +VOID AsicAdjustTxPower( + IN PRTMP_ADAPTER pAd) +{ + ULONG R3, Channel, CurrTxPwr; + int Value; + + if ((pAd->PortCfg.Channel >= 1) && (pAd->PortCfg.Channel <= 14)) + Channel = pAd->PortCfg.Channel; + else + Channel = 1; // don't have calibration info for 11A, temporarily use Channel 1 + + // get TX Power base from E2PROM + R3 = pAd->PortCfg.ChannelTxPower[Channel - 1]; + if (R3 > 31) R3 = 31; + + // Krellan: Same as in AsicSwitchChannel() above + Value = R3 + pAd->PortCfg.TxPowerUser; + Value = (Value > 31) ? 31 : Value; + Value = (Value < 0) ? 0 : Value; + R3 = Value; + + // E2PROM setting is calibrated for maximum TX power (i.e. 100%) + // We lower TX power here according to the percentage specified from UI + if (pAd->PortCfg.TxPowerAuto == TRUE) // AUTO TX POWER control + { + // only INFRASTRUCTURE mode and 100% TX power need furthur calibration + if (pAd->MediaState == NdisMediaStateConnected) + { + // low TX power upon very-short distance to AP to solve some vendor's AP RX problem + // in this case, no TSSI compensation is required. + + if ((pAd->DrsCounters.fNoisyEnvironment == FALSE) && + (pAd->PortCfg.AvgRssi > (pAd->PortCfg.RssiToDbm - RSSI_FOR_LOWEST_TX_POWER))) + R3 -= LOWEST_TX_POWER_DELTA; + else if ((pAd->DrsCounters.fNoisyEnvironment == FALSE) && + (pAd->PortCfg.AvgRssi > (pAd->PortCfg.RssiToDbm - RSSI_FOR_LOW_TX_POWER))) + R3 -= LOW_TX_POWER_DELTA; + + + // 2004-03-16 give OFDM rates lower than 48 mbps 2 more DB + else if ((pAd->PortCfg.TxRate <= RATE_36) && (pAd->PortCfg.TxRate > RATE_11)) + { + R3 +=2; + if (R3 > 31) R3 = 31; + } + + // 2 exclusive rules applied on CCK rates only - + // 1. always plus 2 db for CCK + // 2. adjust TX Power based on TSSI + else if (pAd->PortCfg.TxRate <= RATE_11) + { + // if "auto calibration based on TSSI" is not required, then + // always give CCK 2 more db + if (pAd->PortCfg.bAutoTxAgc == FALSE) + { + R3 += 2; // plus 2 db + if (R3 > 31) R3 = 31; + } + + // Auto calibrate Tx AGC if bAutoTxAgc is TRUE and TX rate is CCK, + // because E2PROM's TSSI reference is valid only in CCK range. + else + { + UCHAR R1,TxPowerRef, TssiRef; + + R3 = (pAd->PortCfg.LatchRfRegs.R3 >> 9) & 0x0000001f; + if (pAd->Mlme.PeriodicRound % 4 == 0) // every 4 second + { + TxPowerRef = pAd->PortCfg.ChannelTxPower[Channel - 1]; + TssiRef = pAd->PortCfg.ChannelTssiRef[Channel - 1]; + RTMP_BBP_IO_READ32_BY_REG_ID(pAd, BBP_Tx_Tssi, &R1); + if ((TssiRef >= (R1 + pAd->PortCfg.ChannelTssiDelta)) || + (TssiRef <= (R1 - pAd->PortCfg.ChannelTssiDelta))) + { + // Need R3 adjustment. However, we have to make sure there is only + // plus / minus 5 variation allowed + if (TssiRef > R1) + { + R3 = (R3 < (ULONG) (TxPowerRef + 5)) ? (R3 + 1) : R3; + if (R3 > 31) + R3 = 31; + DBGPRINT(RT_DEBUG_INFO,"TSSI(R1)=%d, ++TxPwr=%d\n", R1, R3); + } + else + { + R3 = (R3 > (ULONG) (TxPowerRef - 5)) ? (R3 - 1) : R3; + DBGPRINT(RT_DEBUG_INFO,"TSSI(R1)=%d, --TxPwr=%d\n", R1, R3); + } + } + } + } + } + + } + } + else // fixed AUTO TX power + { + // 2004-03-16 give TX rates <= 36 mbps 2 more DB + if (pAd->PortCfg.TxRate <= RATE_36) + { + R3 +=2; + if (R3 > 31) R3 = 31; + } + } + + // Krellan: Save value for readout to user + pAd->PortCfg.TxPowerDriver = R3; + + // compare the desired R3.TxPwr value with current R3, if not equal + // set new R3.TxPwr + CurrTxPwr = (pAd->PortCfg.LatchRfRegs.R3 >> 9) & 0x0000001f; + if (CurrTxPwr != R3) + { + CurrTxPwr = R3; + R3 = (pAd->PortCfg.LatchRfRegs.R3 & 0xffffc1ff) | (R3 << 9); + RTMP_RF_IO_WRITE32(pAd, R3); + pAd->PortCfg.LatchRfRegs.R3 = R3; + } + DBGPRINT(RT_DEBUG_INFO, "AsicAdjustTxPower = %d, AvgRssi = %d\n", + CurrTxPwr, pAd->PortCfg.AvgRssi - pAd->PortCfg.RssiToDbm); + +} + +/* + ========================================================================== + Description: + put PHY to sleep here, and set next wakeup timer + ========================================================================== + */ +VOID AsicSleepThenAutoWakeup( + IN PRTMP_ADAPTER pAd, + IN USHORT TbttNumToNextWakeUp) +{ + CSR20_STRUC Csr20; + PWRCSR1_STRUC Pwrcsr1; + + // we have decided to SLEEP, so at least do it for a BEACON period. + if (TbttNumToNextWakeUp==0) + TbttNumToNextWakeUp=1; + + // PWRCSR0 remains untouched + + // set CSR20 for next wakeup + Csr20.word = 0; + Csr20.field.NumBcnBeforeWakeup = TbttNumToNextWakeUp - 1; + Csr20.field.DelayAfterBcn = (pAd->PortCfg.BeaconPeriod - 20) << 4; // 20 TU ahead of desired TBTT + Csr20.field.AutoWake = 1; + RTMP_IO_WRITE32(pAd, CSR20, Csr20.word); + + // set PWRCSR1 to put PHY into SLEEP state + Pwrcsr1.word = 0; + Pwrcsr1.field.PutToSleep = 1; + Pwrcsr1.field.BbpDesireState = 1; // 01:SLEEP + Pwrcsr1.field.RfDesireState = 1; // 01:SLEEP + RTMP_IO_WRITE32(pAd, PWRCSR1, Pwrcsr1.word); + pAd->PortCfg.Pss = PWR_SAVE; +} + +/* + ========================================================================== + Description: + AsicForceWakeup() is used whenever manual wakeup is required + AsicForceSleep() should only be used when Massoc==FALSE. When + Massoc==TRUE, we should use AsicSleepThenAutoWakeup() instead. + ========================================================================== + */ +VOID AsicForceSleep( + IN PRTMP_ADAPTER pAd) +{ + PWRCSR1_STRUC Pwrcsr1; + + if (pAd->PortCfg.Pss == PWR_ACTIVE) + { + DBGPRINT(RT_DEBUG_TRACE, ">>>AsicForceSleep<<<\n"); + Pwrcsr1.word = 0; + Pwrcsr1.field.RfDesireState = 1; // 01:SLEEP state + Pwrcsr1.field.BbpDesireState = 1; // 01:SLEEP state + Pwrcsr1.field.SetState = 1; + RTMP_IO_WRITE32(pAd, PWRCSR1, Pwrcsr1.word); + pAd->PortCfg.Pss = PWR_SAVE; + } +} + +VOID AsicForceWakeup( + IN PRTMP_ADAPTER pAd) +{ + CSR20_STRUC Csr20; + PWRCSR1_STRUC Pwrcsr1; + + if (pAd->PortCfg.Pss == PWR_SAVE) + { + DBGPRINT(RT_DEBUG_TRACE, ">>>AsicForceWakeup<<<\n"); + + // 2003-12-19 turn OFF auto wakeup first + Csr20.word = 0; + Csr20.field.AutoWake = 0; + RTMP_IO_WRITE32(pAd, CSR20, Csr20.word); + + Pwrcsr1.word = 0; + Pwrcsr1.field.RfDesireState = 3; // 11:AWAKE state + Pwrcsr1.field.BbpDesireState = 3; // 11:AWAKE state + Pwrcsr1.field.SetState = 1; + RTMP_IO_WRITE32(pAd, PWRCSR1, Pwrcsr1.word); + pAd->PortCfg.Pss = PWR_ACTIVE; + } +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID AsicSetBssid( + IN PRTMP_ADAPTER pAd, + IN MACADDR *Bssid) +{ + ULONG Addr4; + + Addr4 = (ULONG)(Bssid->Octet[0]) | + (ULONG)(Bssid->Octet[1] << 8) | + (ULONG)(Bssid->Octet[2] << 16) | + (ULONG)(Bssid->Octet[3] << 24); + RTMP_IO_WRITE32(pAd, CSR5, Addr4); + + Addr4 = (ULONG)(Bssid->Octet[4]) | (ULONG)(Bssid->Octet[5] << 8); + RTMP_IO_WRITE32(pAd, CSR6, Addr4); +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID AsicDisableSync( + IN PRTMP_ADAPTER pAd) +{ + // TIMECSR_STRUC TimeCsr; + DBGPRINT(RT_DEBUG_TRACE, "--->Disable TSF synchronization\n"); +#if 1 + // 2003-12-20 disable TSF and Tbcn while NIC in power-saving have side effect + // that NIC will never wakes up because TSF stops and no more TBTT interrupts + RTMP_IO_WRITE32(pAd, CSR14, 0x00000009); +#else + RTMP_IO_WRITE32(pAd, CSR14, 0x00000000); +#endif + +#if 0 + RTMP_IO_READ32(pAd, TIMECSR, &TimeCsr.word); + + // restore to 33 PCI-tick-per-Usec. for 2560a only where PCI-clock is used as TSF timing source + if (TimeCsr.field.UsCnt != 0x21) + { + TimeCsr.field.UsCnt = 0x21; + RTMP_IO_WRITE32(pAd, TIMECSR, TimeCsr.word); + } +#endif +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID AsicEnableBssSync( + IN PRTMP_ADAPTER pAd) +{ + CSR12_STRUC Csr12; + CSR13_STRUC Csr13; + CSR14_STRUC Csr14; + BCNCSR1_STRUC Bcncsr1; + BOOLEAN IsApPc; + + DBGPRINT(RT_DEBUG_TRACE, "--->AsicEnableBssSync(INFRA mode)\n"); + + RTMP_IO_WRITE32(pAd, CSR14, 0x00000000); + + Csr12.word = 0; + Csr12.field.BeaconInterval = pAd->PortCfg.BeaconPeriod << 4; // ASIC register in units of 1/16 TU + Csr12.field.CfpMaxDuration = pAd->PortCfg.CfpMaxDuration << 4; // ASIC register in units of 1/16 TU + RTMP_IO_WRITE32(pAd, CSR12, Csr12.word); + + Csr13.word = 0; + Csr13.field.CfpPeriod = pAd->PortCfg.CfpDurRemain << 4; // ASIC register in units of 1/16 TU + RTMP_IO_WRITE32(pAd, CSR13, Csr13.word); + + Bcncsr1.word = 0; + Bcncsr1.field.Preload = TBTT_PRELOAD_TIME; // we guess TBTT is 2 TU ahead of BEACON-RxEnd time + Bcncsr1.field.BeaconCwMin = 5; + RTMP_IO_WRITE32(pAd, BCNCSR1, Bcncsr1.word); + + IsApPc = (CAP_IS_CF_POLLABLE_ON(pAd->PortCfg.CapabilityInfo) && + CAP_IS_CF_POLL_REQ_ON(pAd->PortCfg.CapabilityInfo)); + IsApPc = FALSE; // TODO: not support so far + + Csr14.word = 0; + Csr14.field.TsfCount = 1; + Csr14.field.TsfSync = 1; // sync TSF in INFRASTRUCTURE mode + if (IsApPc) + { + Csr14.field.CfpCntPreload = pAd->PortCfg.CfpCount; + Csr14.field.Tcfp = 1; + } + Csr14.field.BeaconGen = 0; +// Csr14.field.TbcnPreload = (pAd->PortCfg.BeaconPeriod - 30) << 4; // TODO: ???? 1 TU ??? + Csr14.field.Tbcn = 1; + RTMP_IO_WRITE32(pAd, CSR14, Csr14.word); + +} + +/* + ========================================================================== + Description: + Note: + BEACON frame in shared memory should be built ok before this routine + can be called. Otherwise, a garbage frame maybe transmitted out every + Beacon period. + ========================================================================== + */ +VOID AsicEnableIbssSync( + IN PRTMP_ADAPTER pAd) +{ + CSR12_STRUC Csr12; + CSR13_STRUC Csr13; + CSR14_STRUC Csr14; + // BCNCSR_STRUC Bcncsr; + BCNCSR1_STRUC Bcncsr1; + + DBGPRINT(RT_DEBUG_TRACE, "--->AsicEnableIbssSync(ADHOC mode)\n"); + + RTMP_IO_WRITE32(pAd, CSR14, 0x00000000); + + Csr12.word = 0; + Csr12.field.BeaconInterval = pAd->PortCfg.BeaconPeriod << 4; // ASIC register in units of 1/16 TU + RTMP_IO_WRITE32(pAd, CSR12, Csr12.word); + + Csr13.word = 0; + Csr13.field.AtimwDuration = pAd->PortCfg.AtimWin << 4; // ASIC register in units of 1/16 TU + RTMP_IO_WRITE32(pAd, CSR13, Csr13.word); + + Bcncsr1.word = 0; + if ((pAd->PortCfg.PhyMode == PHY_11B) || (pAd->PortCfg.PhyMode == PHY_11BG_MIXED)) + { + Bcncsr1.field.BeaconCwMin = 5; + Bcncsr1.field.Preload = 1024; // 192 + ((MAC_HDR_LEN << 4) / RateIdTo500Kbps[pAd->PortCfg.MlmeRate]); + } + else + { + Bcncsr1.field.BeaconCwMin = 6; + Bcncsr1.field.Preload = 700; // 24 + ((MAC_HDR_LEN << 4) / RateIdTo500Kbps[pAd->PortCfg.MlmeRate]); + } + RTMP_IO_WRITE32(pAd, BCNCSR1, Bcncsr1.word); + + Csr14.word = 0; + Csr14.field.TsfCount = 1; + Csr14.field.TsfSync = 2; // sync TSF in IBSS mode + Csr14.field.Tbcn = 1; + Csr14.field.BeaconGen = 1; + RTMP_IO_WRITE32(pAd, CSR14, Csr14.word); +} + +VOID AsicLedPeriodicExec( + IN unsigned long data) +{ + RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; + ULONG LedCsr = 0x0000461E; // 0x0000461E; + + pAd->PortCfg.LedCntl.fOdd = ! pAd->PortCfg.LedCntl.fOdd; + + if (INFRA_ON(pAd) || ADHOC_ON(pAd)) + LedCsr |= 0x00010000; // enable hardwired TX activity LED + if (pAd->PortCfg.LedCntl.fOdd && pAd->PortCfg.LedCntl.fRxActivity) + LedCsr |= 0x00020000; // turn on software-based RX activity LED + pAd->PortCfg.LedCntl.fRxActivity = FALSE; + + if (LedCsr != pAd->PortCfg.LedCntl.LastLedCsr) + { +// DBGPRINT(RT_DEBUG_TRACE, ("AsicLedPeriodicExec(%8x)\n",LedCsr)); + pAd->PortCfg.LedCntl.LastLedCsr = LedCsr; + RTMP_IO_WRITE32(pAd, LEDCSR, LedCsr); + } + + RTMPSetTimer(pAd, &pAd->PortCfg.LedCntl.BlinkTimer, 70); +} + +// pAd->PortCfg.CurrentRxAntenna +// 0xff: diversity, 0:antenna A, 1:antenna B +VOID AsicSetRxAnt( + IN PRTMP_ADAPTER pAd) +{ + UCHAR RxValue, TxValue; + ULONG Bbpcsr1; + + RTMPCancelTimer(&pAd->PortCfg.RxAnt.RxAntDiversityTimer); + pAd->PortCfg.RxAnt.AvgRssi[0] = (-95 + 120) << 3; // reset Ant-A's RSSI history + pAd->PortCfg.RxAnt.AvgRssi[1] = (-95 + 120) << 3; // reset Ant-B's RSSI history + + pAd->PortCfg.RxAnt.PrimaryInUsed = TRUE; + + if (pAd->PortCfg.CurrentRxAntenna == 0xff) // Diversity + { + pAd->PortCfg.RxAnt.PrimaryRxAnt = 1; // assume ant-B + pAd->PortCfg.RxAnt.SecondaryRxAnt = 0; // assume ant-A + } + else if (pAd->PortCfg.CurrentRxAntenna == 0) // ant-A + { + pAd->PortCfg.RxAnt.PrimaryRxAnt = 0; // assume ant-A + pAd->PortCfg.RxAnt.SecondaryRxAnt = 1; // assume ant-B + } + else // ant-B + { + pAd->PortCfg.RxAnt.PrimaryRxAnt = 1; // assume ant-B + pAd->PortCfg.RxAnt.SecondaryRxAnt = 0; // assume ant-A + } + + DBGPRINT(RT_DEBUG_TRACE,"AntDiv - set RxAnt=%d, primary=%d, second=%d\n", + pAd->PortCfg.CurrentRxAntenna, pAd->PortCfg.RxAnt.PrimaryRxAnt, pAd->PortCfg.RxAnt.SecondaryRxAnt); + + // use primary antenna + RTMP_IO_READ32(pAd, BBPCSR1, &Bbpcsr1); + TxValue = pAd->PortCfg.BbpWriteLatch[BBP_Tx_Configure]; + RxValue = pAd->PortCfg.BbpWriteLatch[BBP_Rx_Configure]; + if (pAd->PortCfg.RxAnt.PrimaryRxAnt == 0) // ant-A + { + TxValue = (TxValue & 0xFC) | 0x00; + RxValue = 0x1c; + Bbpcsr1 = (Bbpcsr1 & 0xFFFCFFFC) | 0x00000000; + } + else // ant-B + { + TxValue = (TxValue & 0xFC) | 0x02; + RxValue = 0x1e; + Bbpcsr1 = (Bbpcsr1 & 0xFFFCFFFC) | 0x00020002; + } + RTMP_IO_WRITE32(pAd, BBPCSR1, Bbpcsr1); + //RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, BBP_Tx_Configure, TxValue); + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, BBP_Rx_Configure, RxValue); + +} + +// switch to secondary RxAnt for a while to collect it's average RSSI +// also set a timeout routine to DO the actual evaluation. If evaluation +// result shows a much better RSSI using secondary RxAnt, then a official +// RX antenna switch is performed. +VOID AsicEvaluateSecondaryRxAnt( + IN PRTMP_ADAPTER pAd) +{ + UCHAR RxValue, TxValue; + ULONG Bbpcsr1; + + if (pAd->PortCfg.CurrentRxAntenna != 0xff) + return; + + pAd->PortCfg.RxAnt.PrimaryInUsed = FALSE; + pAd->PortCfg.RxAnt.FirstPktArrivedWhenEvaluate = FALSE; + pAd->PortCfg.RxAnt.RcvPktNumWhenEvaluate = 0; + +// pAd->PortCfg.RxAnt.AvgRssi[pAd->PortCfg.RxAnt.SecondaryRxAnt] = 0; + + DBGPRINT(RT_DEBUG_TRACE,"AntDiv - evaluate Ant #%d\n", pAd->PortCfg.RxAnt.SecondaryRxAnt); + + // temporarily switch to secondary antenna + RxValue = pAd->PortCfg.BbpWriteLatch[BBP_Rx_Configure]; + TxValue = pAd->PortCfg.BbpWriteLatch[BBP_Tx_Configure]; + RTMP_IO_READ32(pAd, BBPCSR1, &Bbpcsr1); + + if (pAd->PortCfg.RxAnt.SecondaryRxAnt == 0) // ant-A + { + TxValue = (TxValue & 0xFC) | 0x00; + RxValue = 0x1c; + Bbpcsr1 = (Bbpcsr1 & 0xFFFCFFFC) | 0x00000000; + } + else // ant-B + { + TxValue = (TxValue & 0xFC) | 0x02; + RxValue = 0x1e; + Bbpcsr1 = (Bbpcsr1 & 0xFFFCFFFC) | 0x00020002; + } + RTMP_IO_WRITE32(pAd, BBPCSR1, Bbpcsr1); + //RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, BBP_Tx_Configure, TxValue); + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, BBP_Rx_Configure, RxValue); + + // a one-shot timer to end the evalution + if (pAd->MediaState == NdisMediaStateConnected) + RTMPSetTimer(pAd, &pAd->PortCfg.RxAnt.RxAntDiversityTimer, 150); + else + RTMPSetTimer(pAd, &pAd->PortCfg.RxAnt.RxAntDiversityTimer, 300); +} + +// this timeout routine collect AvgRssi[SecondaryRxAnt] and decide if +// SecondaryRxAnt is much better than PrimaryRxAnt +VOID AsicRxAntEvalTimeout( + IN unsigned long data) +{ + RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; + + + DBGPRINT(RT_DEBUG_TRACE,"AntDiv - AsicRxAntEvalTimeout, \n"); + // Do nothing if the driver is starting halt state. + // This might happen when timer already been fired before cancel timer with mlmehalt + if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS)) + return; + + if (pAd->PortCfg.RxAnt.PrimaryInUsed == TRUE) + + return; + + // 1-db or more will we consider to switch antenna + if ((pAd->PortCfg.RxAnt.RcvPktNumWhenEvaluate != 0) && (pAd->PortCfg.RxAnt.AvgRssi[pAd->PortCfg.RxAnt.SecondaryRxAnt] >= + (pAd->PortCfg.RxAnt.AvgRssi[pAd->PortCfg.RxAnt.PrimaryRxAnt]))) + + { + UCHAR temp; + // secondary antenna is much better than primary, switch RX antenna + temp = pAd->PortCfg.RxAnt.PrimaryRxAnt; + pAd->PortCfg.RxAnt.PrimaryRxAnt = pAd->PortCfg.RxAnt.SecondaryRxAnt; + pAd->PortCfg.RxAnt.SecondaryRxAnt = temp; + pAd->PortCfg.LastAvgRssi = (pAd->PortCfg.RxAnt.AvgRssi[pAd->PortCfg.RxAnt.SecondaryRxAnt] >> 3) - pAd->PortCfg.RssiToDbm; + + DBGPRINT(RT_DEBUG_TRACE,"AntDiv - Switch to Ant #%d, RSSI[0,1]=<%d, %d>\n", + pAd->PortCfg.RxAnt.PrimaryRxAnt, pAd->PortCfg.RxAnt.AvgRssi[0], pAd->PortCfg.RxAnt.AvgRssi[1]); + } + else + { + UCHAR RxValue, TxValue; + ULONG Bbpcsr1; + + // end of evaluation, swicth back to primary antenna + RxValue = pAd->PortCfg.BbpWriteLatch[BBP_Rx_Configure]; + TxValue = pAd->PortCfg.BbpWriteLatch[BBP_Tx_Configure]; + RTMP_IO_READ32(pAd, BBPCSR1, &Bbpcsr1); + if (pAd->PortCfg.RxAnt.PrimaryRxAnt == 0) // ant-A + { + TxValue = (TxValue & 0xFC) | 0x00; + RxValue = 0x1c; + Bbpcsr1 = (Bbpcsr1 & 0xFFFCFFFC) | 0x00000000; + } + else // ant-B + { + TxValue = (TxValue & 0xFC) | 0x02; + RxValue = 0x1e; + Bbpcsr1 = (Bbpcsr1 & 0xFFFCFFFC) | 0x00020002; + } + RTMP_IO_WRITE32(pAd, BBPCSR1, Bbpcsr1); + //RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, BBP_Tx_Configure, TxValue); + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, BBP_Rx_Configure, RxValue); + DBGPRINT(RT_DEBUG_TRACE,"AntDiv - remain Ant #%d, RSSI[0,1]=<%d, %d>, RcvPktNumWhenEvaluate=%d\n", + pAd->PortCfg.RxAnt.PrimaryRxAnt, (pAd->PortCfg.RxAnt.AvgRssi[0] >> 3) - pAd->PortCfg.RssiToDbm, (pAd->PortCfg.RxAnt.AvgRssi[1] >> 3) - pAd->PortCfg.RssiToDbm, pAd->PortCfg.RxAnt.RcvPktNumWhenEvaluate); + + } + +// pAd->PortCfg.RxAnt.AvgRssi[0] = 0; // reset Ant-A's RSSI history +// pAd->PortCfg.RxAnt.AvgRssi[1] = 0; // reset Ant-B's RSSI history + pAd->PortCfg.RxAnt.PrimaryInUsed = TRUE; + pAd->PortCfg.RxAnt.FirstPktArrivedWhenEvaluate = TRUE; +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +VOID AsicSetSlotTime( + IN PRTMP_ADAPTER pAd, + IN BOOLEAN UseShortSlotTime) +{ + CSR11_STRUC Csr11; + CSR18_STRUC Csr18; + CSR19_STRUC Csr19; + UCHAR PhyMode; + + pAd->PortCfg.ShortSlotInUsed = UseShortSlotTime; + + PhyMode = pAd->PortCfg.PhyMode; + if (PhyMode == PHY_11ABG_MIXED) + { + if (pAd->PortCfg.Channel <=14) + PhyMode = PHY_11BG_MIXED; + else + PhyMode = PHY_11A; + } + + RTMP_IO_READ32(pAd, CSR11, &Csr11.word); + if (PhyMode == PHY_11A) + Csr11.field.SlotTime = 9; + else + Csr11.field.SlotTime = (UseShortSlotTime)? 9 : 20; + RTMP_IO_WRITE32(pAd, CSR11, Csr11.word); + + RTMP_IO_READ32(pAd, CSR18, &Csr18.word); + Csr18.field.PIFS = Csr18.field.SIFS + Csr11.field.SlotTime; + RTMP_IO_WRITE32(pAd, CSR18, Csr18.word); + + Csr19.word = 0; + Csr19.field.DIFS = Csr18.field.PIFS + Csr11.field.SlotTime; + if (PhyMode == PHY_11B) + Csr19.field.EIFS = 364; // SIFS + ACK @1Mbps + else + Csr19.field.EIFS = 60; // roughly = SIFS + ACK @6Mbps + RTMP_IO_WRITE32(pAd, CSR19, Csr19.word); + +#if 1 + // force using short SLOT time for FAE to demo performance only + if (pAd->PortCfg.EnableTxBurst == 1) + Csr11.field.SlotTime = 9; + RTMP_IO_WRITE32(pAd, CSR11, Csr11.word); +#endif + + DBGPRINT(RT_DEBUG_TRACE, "AsicSetSlotTime(=%d us, CSR18=0x%08x, CSR19=0x%08x)\n", + Csr11.field.SlotTime, Csr18.word, Csr19.word); +} + +/* + ========================================================================== + Description: + This routine is used for 2560a only where 2560a still use non-accurate + PCI-clock as TSF 1-usec source. we have to dynamically change tick-per-usec + to avoid ADHOC synchronization issue with SYMBOL 11b card + ========================================================================== + */ +VOID AsicAdjustUsec( + IN PRTMP_ADAPTER pAd) +{ + TIMECSR_STRUC TimeCsr; + UCHAR TickPerUsec = 20; + pAd->PortCfg.PciAdjustmentRound = (pAd->PortCfg.PciAdjustmentRound+1) & 0x03; + + RTMP_IO_READ32(pAd, TIMECSR, &TimeCsr.word); + if (pAd->PortCfg.PciAdjustmentRound == 0) + TickPerUsec = 0x21; + else if (pAd->PortCfg.PciAdjustmentRound == 1) + TickPerUsec = 0x21; + else if (pAd->PortCfg.PciAdjustmentRound == 2) + TickPerUsec = 0x20; + else + TickPerUsec = 0x21; + + if (TimeCsr.field.UsCnt!= TickPerUsec) + { + TimeCsr.field.UsCnt= TickPerUsec; + RTMP_IO_WRITE32(pAd, TIMECSR, TimeCsr.word); + DBGPRINT(RT_DEBUG_INFO, "AsicAdjustUsec - change TIMECSR=0x%08x)\n",TimeCsr.word); + } +} + +/* + ========================================================================== + Description: + danamic tune BBP R17 to find a balance between sensibility and + noise isolation + ========================================================================== + */ +VOID AsicBbpTuning( + IN PRTMP_ADAPTER pAd) +{ + ULONG Value; + UCHAR R17; + ULONG FalseCcaUpperThreshold = pAd->PortCfg.BbpTuning.FalseCcaUpperThreshold << 7; + int dbm = pAd->PortCfg.AvgRssi - pAd->PortCfg.RssiToDbm; + + if ((! pAd->PortCfg.BbpTuningEnable) || (pAd->PortCfg.BbpTuning.VgcDelta==0)) + return; + + R17 = pAd->PortCfg.BbpWriteLatch[17]; + + if ((pAd->PortCfg.Rt2560Version >= RT2560_VER_D) && + (pAd->MediaState == NdisMediaStateConnected)) + { + // Rule 0. + // when RSSI is too weak, many signals will become false CCA thus affect R17 tuning. + // so in this case, just stop R17 tuning (be sure R17 remains in range) + if ((dbm < -80) && (pAd->Mlme.PeriodicRound > 20)) + { + if (R17 >= BBP_R17_MID_SENSIBILITY) + { + R17 = pAd->PortCfg.LastR17Value; + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 17, R17); + } + DBGPRINT(RT_DEBUG_INFO, "RSSI = %d dbm, stop R17 at 0x%x\n", dbm, R17); + return; + } + // Rule 1. "special big-R17 for short-distance" when not SCANNING + else if ((dbm >= RSSI_FOR_LOW_SENSIBILITY) && + (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE)) + { + if (R17 != BBP_R17_LOW_SENSIBILITY) + { + R17 = BBP_R17_LOW_SENSIBILITY; + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 17, R17); + } + DBGPRINT(RT_DEBUG_INFO, "RSSI = %d dbm, fixed R17 at 0x%x\n", dbm, R17); + return; + } + // Rule 2. "special mid-R17 for mid-distance" when not SCANNING + else if ((dbm >= RSSI_FOR_MID_SENSIBILITY) && + (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE)) + { + if (R17 != BBP_R17_MID_SENSIBILITY) + { + R17 = BBP_R17_MID_SENSIBILITY; + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 17, R17); + } + DBGPRINT(RT_DEBUG_INFO, "RSSI = %d dbm, fixed R17 at 0x%x\n", dbm, R17); + return; + } + // Rule 3. leave "short or mid-distance" condition, restore R17 to the + // dynamic tuning range + else if (R17 >= BBP_R17_MID_SENSIBILITY) + { + R17 = pAd->PortCfg.LastR17Value; + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 17, R17); + DBGPRINT(RT_DEBUG_INFO, "RSSI = %d dbm, restore R17 to 0x%x\n", dbm, R17); + return; + } + } + + // Rule 3. otherwise, R17 is currenly in dyanmic tuning range: . + // Keep dynamic tuning based on False CCA conter + + RTMP_IO_READ32(pAd, CNT3, &Value); + pAd->PrivateInfo.CCAErrCnt = (Value & 0x0000ffff); + DBGPRINT(RT_DEBUG_INFO, "CCA flase alarm = %d, Avg RSSI= %d dbm\n", + pAd->PrivateInfo.CCAErrCnt, dbm); + + if ((pAd->PrivateInfo.CCAErrCnt > FalseCcaUpperThreshold) && + (R17 < pAd->PortCfg.BbpTuning.VgcUpperBound)) + { + R17 += pAd->PortCfg.BbpTuning.VgcDelta; + pAd->PortCfg.LastR17Value = R17; + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 17, R17); + DBGPRINT(RT_DEBUG_INFO, "++R17= 0x%x\n", R17); + } + else if ((pAd->PrivateInfo.CCAErrCnt < pAd->PortCfg.BbpTuning.FalseCcaLowerThreshold) && + (R17 > pAd->PortCfg.VgcLowerBound)) + { + R17 -= pAd->PortCfg.BbpTuning.VgcDelta; + pAd->PortCfg.LastR17Value = R17; + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 17, R17); + DBGPRINT(RT_DEBUG_INFO, "--R17= 0x%x\n", R17); + } +} + +// stop and restore R17 value upon SITE-SURVEY and LINK-DOWN +VOID AsicRestoreBbpSensibility( + IN PRTMP_ADAPTER pAd) +{ + UCHAR R17; + + R17 = pAd->PortCfg.BbpWriteLatch[17]; + if (R17 >= BBP_R17_MID_SENSIBILITY) + { + R17 = pAd->PortCfg.LastR17Value; + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAd, 17, R17); + DBGPRINT(RT_DEBUG_TRACE, "AsicRestoreBbpSensibility(set R17= 0x%x)\n", R17); + } +} + +/* + ======================================================================== + + Routine Description: + Mlme free the in-used nonpaged memory, + move it to the unused memory link list + + Arguments: + pAd Pointer to our adapter + AllocVa Pointer to the base virtual address for free + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID MlmeFreeMemory( + IN PRTMP_ADAPTER pAd, + IN PVOID AllocVa) +{ + PMLME_MEMORY_STRUCT pPrevious = NULL; + PMLME_MEMORY_STRUCT pMlmeMemoryStruct = NULL; + UINT Index = 0; + BOOLEAN bIsFound = FALSE; + + DBGPRINT(RT_DEBUG_INFO, "==> MlmeFreeMemory\n"); + spin_lock(&pAd->MemLock); + if (pAd->Mlme.MemHandler.MemRunning) + { + //Mlme memory handler is busy. + //Move it to the Pending array for later free + pAd->Mlme.MemHandler.MemFreePending[pAd->Mlme.MemHandler.PendingCount++] = (PULONG) AllocVa; + + DBGPRINT(RT_DEBUG_INFO, "Mlme memory Handler Busy!! move free memory to pending list [IN:%d][UN:%d][Pending:%d]\n", + pAd->Mlme.MemHandler.InUseCount, pAd->Mlme.MemHandler.UnUseCount, pAd->Mlme.MemHandler.PendingCount); + DBGPRINT(RT_DEBUG_INFO, "<== MlmeFreeMemory\n"); + spin_unlock(&pAd->MemLock); + return; + } + else + { + pAd->Mlme.MemHandler.MemRunning = TRUE; + } + + //First check is there have to free memory in the pAd->Mlme.MemHandler.MemFreePending. + while (pAd->Mlme.MemHandler.PendingCount > 0) + { + pPrevious = NULL; + pMlmeMemoryStruct = pAd->Mlme.MemHandler.pInUseHead; + while (pMlmeMemoryStruct) + { + if (pMlmeMemoryStruct->AllocVa == (PVOID) pAd->Mlme.MemHandler.MemFreePending[Index]) + { + //Found virtual address in the in-used link list + //Remove it from the memory in-used link list, and move it to the unused link list + if (pPrevious == NULL) + { + pAd->Mlme.MemHandler.pInUseHead = pAd->Mlme.MemHandler.pInUseHead->Next; + // + // Update pInUseTail pointer, if this is an Empty list + // + if (pAd->Mlme.MemHandler.pInUseHead == NULL) + pAd->Mlme.MemHandler.pInUseTail = NULL; + } + else + { + pPrevious->Next = pMlmeMemoryStruct->Next; + // + // Update pInUseTail pointer, if move the pInUserTail to Unused link list. + // move the pInuseTail to his previous. + // + if (pMlmeMemoryStruct->Next == NULL) + { + // + // This pMlmeMemoryStruct is the one pInUseTail, since it's next pointer is NULL. + // Then we need to update pInUseTail. + // + pAd->Mlme.MemHandler.pInUseTail = pPrevious; + } + } + + if ((pAd->Mlme.MemHandler.pUnUseHead == NULL)) + { //No head, add it as head + pMlmeMemoryStruct->Next = NULL; + pAd->Mlme.MemHandler.pUnUseHead = pMlmeMemoryStruct; + pAd->Mlme.MemHandler.pUnUseTail = pAd->Mlme.MemHandler.pUnUseHead; + } + else + { + //Append it to the tail in pAd->Mlme.MemHandler.pUnUseTail + pMlmeMemoryStruct->Next = NULL; + pAd->Mlme.MemHandler.pUnUseTail->Next = pMlmeMemoryStruct; + pAd->Mlme.MemHandler.pUnUseTail = pAd->Mlme.MemHandler.pUnUseTail->Next; + } + pAd->Mlme.MemHandler.MemFreePending[Index++] = NULL; + pAd->Mlme.MemHandler.PendingCount--; + pAd->Mlme.MemHandler.UnUseCount++; + pAd->Mlme.MemHandler.InUseCount--; + bIsFound = TRUE; + break; + } + else + { + pPrevious = pMlmeMemoryStruct; + pMlmeMemoryStruct = pMlmeMemoryStruct->Next; + } + } + + if (!bIsFound) + { + //This shoult not be happened! Just in case! + DBGPRINT(RT_DEBUG_INFO, "Free memory faild!! memory corruption on [Va:0x%lu] not found in In-Used link list [IN:%d][UN:%d][Pending:%d]\n", + (unsigned long)pAd->Mlme.MemHandler.MemFreePending[pAd->Mlme.MemHandler.PendingCount], + pAd->Mlme.MemHandler.InUseCount, pAd->Mlme.MemHandler.UnUseCount, pAd->Mlme.MemHandler.PendingCount); + //lost a memory + pAd->Mlme.MemHandler.MemFreePending[Index++] = NULL; + pAd->Mlme.MemHandler.PendingCount--; + } + } + + pPrevious = NULL; + pMlmeMemoryStruct = pAd->Mlme.MemHandler.pInUseHead; + while (pMlmeMemoryStruct) + { + if (pMlmeMemoryStruct->AllocVa == AllocVa) + { + //Found virtual address in the in-used link list + //Remove it from the memory in-used link list, and move it to the unused link list + if (pPrevious == NULL) + { + pAd->Mlme.MemHandler.pInUseHead = pAd->Mlme.MemHandler.pInUseHead->Next; + // + // Update pInUseTail pointer, if this is an Empty list + // + if (pAd->Mlme.MemHandler.pInUseHead == NULL) + pAd->Mlme.MemHandler.pInUseTail = NULL; + } + else + { + pPrevious->Next = pMlmeMemoryStruct->Next; + // + // Update pInUseTail pointer, if move the pInUserTail to Unused link list. + // move the pInuseTail to his previous. + // + if (pMlmeMemoryStruct->Next == NULL) + { + // + // This pMlmeMemoryStruct is the one pInUseTail, since it's next pointer is NULL. + // Then we need to update pInUseTail. + // + pAd->Mlme.MemHandler.pInUseTail = pPrevious; + } + } + + if (pAd->Mlme.MemHandler.pUnUseHead == NULL) + { + pMlmeMemoryStruct->Next = NULL; + pAd->Mlme.MemHandler.pUnUseHead = pMlmeMemoryStruct; + pAd->Mlme.MemHandler.pUnUseTail = pMlmeMemoryStruct; + } + else + { + pMlmeMemoryStruct->Next = NULL; + pAd->Mlme.MemHandler.pUnUseTail->Next = pMlmeMemoryStruct; + pAd->Mlme.MemHandler.pUnUseTail = pMlmeMemoryStruct; + } + + pAd->Mlme.MemHandler.InUseCount--; + pAd->Mlme.MemHandler.UnUseCount++; + DBGPRINT(RT_DEBUG_INFO, "MlmeFreeMemory Add it to the Unused memory link List[pMlmeMemoryStruct=0x%lu][VA=0x%lu]\n", (unsigned long)pMlmeMemoryStruct, (unsigned long)pMlmeMemoryStruct->AllocVa); + break; + } + pPrevious = pMlmeMemoryStruct; + pMlmeMemoryStruct = pMlmeMemoryStruct->Next; + } + + pAd->Mlme.MemHandler.MemRunning = FALSE; + spin_unlock(&pAd->MemLock); + + DBGPRINT(RT_DEBUG_INFO, "<== MlmeFreeMemory [IN:%d][UN:%d][Pending:%d]\n", + pAd->Mlme.MemHandler.InUseCount, pAd->Mlme.MemHandler.UnUseCount, pAd->Mlme.MemHandler.PendingCount); +} + +/* + ======================================================================== + + Routine Description: + Get an unused nonpaged system-space memory for use + + Arguments: + pAd Pointer to our adapter + AllocVa Pointer to the base virtual address for later use + + Return Value: + NDIS_STATUS_SUCCESS + NDIS_STATUS_FAILURE + NDIS_STATUS_RESOURCES + + Note: + + ======================================================================== +*/ +NDIS_STATUS MlmeAllocateMemory( + IN PRTMP_ADAPTER pAd, + OUT PVOID *AllocVa) +{ + NDIS_STATUS Status = NDIS_STATUS_SUCCESS; + PMLME_MEMORY_STRUCT pMlmeMemoryStruct = NULL; + + DBGPRINT(RT_DEBUG_INFO, "==> MlmeAllocateMemory\n"); + spin_lock(&pAd->MemLock); + if (pAd->Mlme.MemHandler.MemRunning) + { + DBGPRINT(RT_DEBUG_INFO, "Mlme memory Handler Busy!!, MlmeAllocateMemory failed!!\n"); + Status = NDIS_STATUS_FAILURE; + DBGPRINT(RT_DEBUG_INFO, "<== MlmeAllocateMemory\n"); + spin_unlock(&pAd->MemLock); + return (Status); + } + else + { + pAd->Mlme.MemHandler.MemRunning = TRUE; + } + + if (pAd->Mlme.MemHandler.pUnUseHead == NULL) + { //There are no available memory for caller use + Status = NDIS_STATUS_RESOURCES; + pAd->Mlme.MemHandler.MemRunning = FALSE; + spin_unlock(&pAd->MemLock); + DBGPRINT(RT_DEBUG_INFO, "MlmeAllocateMemory, failed!! (There are no available memory in list)\n"); + DBGPRINT(RT_DEBUG_INFO, "<== MlmeAllocateMemory\n"); + return (Status); + } + + pMlmeMemoryStruct = pAd->Mlme.MemHandler.pUnUseHead; + *AllocVa = pMlmeMemoryStruct->AllocVa; //Saved porint to Pointer the base virtual address of the nonpaged memory for caller use. + //Unused memory point to next available + pAd->Mlme.MemHandler.pUnUseHead = pAd->Mlme.MemHandler.pUnUseHead->Next; + pAd->Mlme.MemHandler.UnUseCount--; + + //Append the unused memory link list to the in-used link list tail + if (pAd->Mlme.MemHandler.pInUseHead == NULL) + {//no head, so current Item assign to In-use Head. + pAd->Mlme.MemHandler.pInUseHead = pMlmeMemoryStruct; + pAd->Mlme.MemHandler.pInUseHead->Next = NULL; + pAd->Mlme.MemHandler.pInUseTail = pAd->Mlme.MemHandler.pInUseHead; + } + else + { + pMlmeMemoryStruct->Next = NULL; + pAd->Mlme.MemHandler.pInUseTail->Next = pMlmeMemoryStruct; + pAd->Mlme.MemHandler.pInUseTail = pAd->Mlme.MemHandler.pInUseTail->Next; + } + pAd->Mlme.MemHandler.InUseCount++; + pAd->Mlme.MemHandler.MemRunning = FALSE; + spin_unlock(&pAd->MemLock); + DBGPRINT(RT_DEBUG_INFO, "MlmeAllocateMemory [pMlmeMemoryStruct=0x%lu][VA=0x%lu]\n", (unsigned long)pMlmeMemoryStruct, (unsigned long)pMlmeMemoryStruct->AllocVa); + DBGPRINT(RT_DEBUG_INFO, "<== MlmeAllocateMemory[IN:%d][UN:%d][Pending:%d]\n", + pAd->Mlme.MemHandler.InUseCount, pAd->Mlme.MemHandler.UnUseCount, pAd->Mlme.MemHandler.PendingCount); + + return (Status); +} + +/* + ======================================================================== + + Routine Description: + Allocates resident (nonpaged) system-space memory for MLME send frames + + Arguments: + pAd Pointer to our adapter + Number Total nonpaged memory for use + Size Each nonpaged memory size + + Return Value: + NDIS_STATUS_SUCCESS + NDIS_STATUS_RESOURCES + + Note: + + ======================================================================== +*/ +NDIS_STATUS MlmeInitMemoryHandler( + IN PRTMP_ADAPTER pAd, + IN UINT Number, + IN UINT Size) +{ + PMLME_MEMORY_STRUCT Current = NULL; + NDIS_STATUS Status = NDIS_STATUS_SUCCESS; + UINT i; + + DBGPRINT(RT_DEBUG_INFO, "==> MlmeInitMemory\n"); + pAd->Mlme.MemHandler.MemoryCount = 0; + pAd->Mlme.MemHandler.pInUseHead = NULL; + pAd->Mlme.MemHandler.pInUseTail = NULL; + pAd->Mlme.MemHandler.pUnUseHead = NULL; + pAd->Mlme.MemHandler.pUnUseTail = NULL; + pAd->Mlme.MemHandler.MemRunning = FALSE; + + //initial the memory free-pending array all to NULL; + for (i = 0; i < MAX_MLME_HANDLER_MEMORY; i++) + pAd->Mlme.MemHandler.MemFreePending[i] = NULL; + + // + // Available nonpaged memory counts MAX_MLME_HANDLER_MEMORY + // + if (Number > MAX_MLME_HANDLER_MEMORY) + Number = MAX_MLME_HANDLER_MEMORY; + + for (i = 0; i < Number; i++) + { + //Allocate a nonpaged memory for link list use. + Current = kmalloc(sizeof(MLME_MEMORY_STRUCT), GFP_ATOMIC); + if (Current == NULL) + { + Status = NDIS_STATUS_RESOURCES; + break; + } + + //Allocate a nonpaged memory for mlme use, Current->AllocVa is VirtualAddress pointer + Current->AllocVa = kmalloc(Size, GFP_ATOMIC); + if (Current->AllocVa == NULL) + { + Status = NDIS_STATUS_RESOURCES; + //Free the nonpaged memory of the current link list + kfree((VOID *)Current); + break; + } + memset(Current->AllocVa, 0, Size); + + pAd->Mlme.MemHandler.MemoryCount++; + + //build up the link list + if (pAd->Mlme.MemHandler.pUnUseHead != NULL) + { + Current->Next = pAd->Mlme.MemHandler.pUnUseHead; + pAd->Mlme.MemHandler.pUnUseHead = Current; + } + else + { + Current->Next = NULL; + pAd->Mlme.MemHandler.pUnUseHead = Current; + } + + if (pAd->Mlme.MemHandler.pUnUseTail == NULL) + pAd->Mlme.MemHandler.pUnUseTail = Current; + + } + + if (pAd->Mlme.MemHandler.MemoryCount < Number) + { + Status = NDIS_STATUS_RESOURCES; + DBGPRINT(RT_DEBUG_TRACE, "MlmeInitMemory Initial failed [Require=%d, available=%d]\n", Number, pAd->Mlme.MemHandler.MemoryCount); + } + + pAd->Mlme.MemHandler.InUseCount = 0; + pAd->Mlme.MemHandler.UnUseCount = Number; + pAd->Mlme.MemHandler.PendingCount = 0; + DBGPRINT(RT_DEBUG_INFO, "<== MlmeInitMemory\n"); + return (Status); +} + +/* + ======================================================================== + + Routine Description: + Free Mlme memory handler (link list, nonpaged memory, spin lock) + + Arguments: + pAd Pointer to our adapter + + Return Value: + None + ======================================================================== +*/ +VOID MlmeFreeMemoryHandler( + IN PRTMP_ADAPTER pAd) +{ + PMLME_MEMORY_STRUCT pMlmeMemoryStruct = NULL; + + //Free nonpaged memory, free it in the *In-used* link list. + while (pAd->Mlme.MemHandler.pInUseHead != NULL) + { + pMlmeMemoryStruct = pAd->Mlme.MemHandler.pInUseHead; + pAd->Mlme.MemHandler.pInUseHead = pAd->Mlme.MemHandler.pInUseHead->Next; + //Free the virtual address in AllocVa which size is MAX_LEN_OF_MLME_BUFFER + kfree(pMlmeMemoryStruct->AllocVa); + //Free the link list item self + kfree(pMlmeMemoryStruct); + } + + //Free nonpaged memory, free it in the *Unused* link list. + while (pAd->Mlme.MemHandler.pUnUseHead != NULL) + { + pMlmeMemoryStruct = pAd->Mlme.MemHandler.pUnUseHead; + pAd->Mlme.MemHandler.pUnUseHead = pAd->Mlme.MemHandler.pUnUseHead->Next; + //Free the virtual address in AllocVa which size is MAX_LEN_OF_MLME_BUFFER + kfree(pMlmeMemoryStruct->AllocVa); + //Free the link list item self + kfree(pMlmeMemoryStruct); + } +} + --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/sanity.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/sanity.c @@ -1,831 +1,831 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: sanity.c - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * MarkW 8th Dec 04 Baseline code - ***************************************************************************/ - -#include "rt_config.h" - -UCHAR WPA_OUI[] = {0x00, 0x50, 0xf2, 0x01}; - -/* - ========================================================================== - Description: - MLME message sanity check - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== - */ -BOOLEAN MlmeScanReqSanity( - IN PRTMP_ADAPTER pAd, - IN VOID *Msg, - IN ULONG MsgLen, - OUT UCHAR *BssType, - OUT CHAR Ssid[], - OUT UCHAR *SsidLen, - OUT UCHAR *ScanType) -{ - MLME_SCAN_REQ_STRUCT *Info; - - Info = (MLME_SCAN_REQ_STRUCT *)(Msg); - *BssType = Info->BssType; - *SsidLen = Info->SsidLen; - memcpy(Ssid, Info->Ssid, *SsidLen); - *ScanType = Info->ScanType; - - if ((*BssType == BSS_INFRA || *BssType == BSS_INDEP || *BssType == BSS_ANY) && - (*ScanType == SCAN_ACTIVE || *ScanType == SCAN_PASSIVE)) - return TRUE; - else - { - DBGPRINT(RT_DEBUG_TRACE, "MlmeScanReqSanity fail - wrong BssType or ScanType\n"); - return FALSE; - } -} - -/* - ========================================================================== - Description: - MLME message sanity check - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== - */ -BOOLEAN MlmeStartReqSanity( - IN PRTMP_ADAPTER pAd, - IN VOID *Msg, - IN ULONG MsgLen, - OUT CHAR Ssid[], - OUT UCHAR *SsidLen) -{ - MLME_START_REQ_STRUCT *Info; - - Info = (MLME_START_REQ_STRUCT *)(Msg); - - if (Info->SsidLen > MAX_LEN_OF_SSID) - { - DBGPRINT(RT_DEBUG_TRACE, "MlmeStartReqSanity fail - wrong SSID length\n"); - return FALSE; - } - - *SsidLen = Info->SsidLen; - memcpy(Ssid, Info->Ssid, *SsidLen); - - return TRUE; -} - -/* - ========================================================================== - Description: - MLME message sanity check - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== - */ -BOOLEAN MlmeAssocReqSanity( - IN PRTMP_ADAPTER pAd, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *ApAddr, - OUT USHORT *CapabilityInfo, - OUT ULONG *Timeout, - OUT USHORT *ListenIntv) -{ - MLME_ASSOC_REQ_STRUCT *Info; - - Info = (MLME_ASSOC_REQ_STRUCT *)Msg; - *Timeout = Info->Timeout; // timeout - COPY_MAC_ADDR(ApAddr, &Info->Addr); // AP address - *CapabilityInfo = Info->CapabilityInfo; // capability info - *ListenIntv = Info->ListenIntv; - - return TRUE; -} - -/* - ========================================================================== - Description: - MLME message sanity check - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== - */ -BOOLEAN MlmeAuthReqSanity( - IN PRTMP_ADAPTER pAd, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *Addr, - OUT ULONG *Timeout, - OUT USHORT *Alg) -{ - MLME_AUTH_REQ_STRUCT *Info; - - Info = (MLME_AUTH_REQ_STRUCT *)Msg; - COPY_MAC_ADDR(Addr, &Info->Addr); - *Timeout = Info->Timeout; - *Alg = Info->Alg; - - if ((*Alg == Ndis802_11AuthModeShared || *Alg == Ndis802_11AuthModeOpen) && !MAC_ADDR_IS_GROUP(*Addr)) - { - return TRUE; - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "MlmeAuthReqSanity fail - wrong algorithm\n"); - return FALSE; - } -} - -/* - ========================================================================== - Description: - MLME message sanity check - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== - */ -BOOLEAN PeerAssocRspSanity( - IN PRTMP_ADAPTER pAd, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *Addr2, - OUT USHORT *CapabilityInfo, - OUT USHORT *Status, - OUT USHORT *Aid, - OUT UCHAR Rates[], - OUT UCHAR *RatesLen, - OUT BOOLEAN *ExtendedRateIeExist) -{ - CHAR IeType, *Ptr; - MACFRAME *Fr = (MACFRAME *)Msg; - PBEACON_EID_STRUCT eid_ptr; - - COPY_MAC_ADDR(Addr2, &Fr->Hdr.Addr2); - Ptr = Fr->Octet; - - memcpy(CapabilityInfo, &Fr->Octet[0], 2); - memcpy(Status, &Fr->Octet[2], 2); - // Mask out unnecessary capability information - *CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; - - if (*Status == MLME_SUCCESS) - { - memcpy(Aid, &Fr->Octet[4], 2); - *Aid = (*Aid) & 0x3fff; // AID is low 14-bit - - // -- get supported rates from payload and advance the pointer - IeType = Fr->Octet[6]; - *RatesLen = Fr->Octet[7]; - if ((IeType != IE_SUPP_RATES) || (*RatesLen > MAX_LEN_OF_SUPPORTED_RATES)) - { - DBGPRINT(RT_DEBUG_TRACE, "PeerAssocRspSanity fail - wrong SupportedRates IE\n"); - return FALSE; - } - else - memcpy(Rates, &Fr->Octet[8], *RatesLen); - - // many AP implement proprietary IEs in non-standard order, we'd better - // tolerate mis-ordered IEs to get best compatibility - *ExtendedRateIeExist = FALSE; - eid_ptr = (PBEACON_EID_STRUCT) &Fr->Octet[8 + (*RatesLen)]; - - // get variable fields from payload and advance the pointer - while (((UCHAR*)eid_ptr + eid_ptr->Len + 1) < ((UCHAR*)Fr + MsgLen)) - { - switch (eid_ptr->Eid) - { - case IE_EXT_SUPP_RATES: - *ExtendedRateIeExist = TRUE; - if ((*RatesLen + eid_ptr->Len) <= MAX_LEN_OF_SUPPORTED_RATES) - { - memcpy(&Rates[*RatesLen], eid_ptr->Octet, eid_ptr->Len); - *RatesLen = (*RatesLen) + eid_ptr->Len; - } - else - { - memcpy(&Rates[*RatesLen], eid_ptr->Octet, MAX_LEN_OF_SUPPORTED_RATES - (*RatesLen)); - *RatesLen = MAX_LEN_OF_SUPPORTED_RATES; - } - break; - default: - DBGPRINT(RT_DEBUG_TRACE, "PeerAssocRspSanity - ignore unrecognized EID = %d\n", eid_ptr->Eid); - break; - } - - eid_ptr = (PBEACON_EID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len); - } - - } - - return TRUE; -} - -/* - ========================================================================== - Description: - MLME message sanity check - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== - */ -BOOLEAN PeerDisassocSanity( - IN PRTMP_ADAPTER pAd, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *Addr2, - OUT USHORT *Reason) -{ - MACFRAME *Fr = (MACFRAME *)Msg; - - COPY_MAC_ADDR(Addr2, &Fr->Hdr.Addr2); - memcpy(Reason, &Fr->Octet[0], 2); - - return TRUE; -} - -/* - ========================================================================== - Description: - MLME message sanity check - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== - */ -BOOLEAN PeerDeauthSanity( - IN PRTMP_ADAPTER pAd, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *Addr2, - OUT USHORT *Reason) -{ - MACFRAME *Fr = (MACFRAME *)Msg; - - COPY_MAC_ADDR(Addr2, &Fr->Hdr.Addr2); - memcpy(Reason, &Fr->Octet[0], 2); - - return TRUE; -} - -/* - ========================================================================== - Description: - MLME message sanity check - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== - */ -BOOLEAN PeerAuthSanity( - IN PRTMP_ADAPTER pAd, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *Addr, - OUT USHORT *Alg, - OUT USHORT *Seq, - OUT USHORT *Status, - CHAR *ChlgText) -{ - MACFRAME *Fr = (MACFRAME *)Msg; - - COPY_MAC_ADDR(Addr, &Fr->Hdr.Addr2); - memcpy(Alg, &Fr->Octet[0], 2); - memcpy(Seq, &Fr->Octet[2], 2); - memcpy(Status, &Fr->Octet[4], 2); - - if (*Alg == Ndis802_11AuthModeOpen) - { - if (*Seq == 1 || *Seq == 2) - { - return TRUE; - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "PeerAuthSanity fail - wrong Seg#\n"); - return FALSE; - } - } - else if (*Alg == Ndis802_11AuthModeShared) - { - if (*Seq == 1 || *Seq == 4) - { - return TRUE; - } - else if (*Seq == 2 || *Seq == 3) - { - memcpy(ChlgText, &Fr->Octet[8], CIPHER_TEXT_LEN); - return TRUE; - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "PeerAuthSanity fail - wrong Seg#\n"); - return FALSE; - } - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "PeerAuthSanity fail - wrong algorithm\n"); - return FALSE; - } -} - -/* - ========================================================================== - Description: - MLME message sanity check - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== - */ -BOOLEAN PeerProbeReqSanity( - IN PRTMP_ADAPTER pAd, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *Addr2, - OUT CHAR Ssid[], - OUT UCHAR *SsidLen) -// OUT UCHAR Rates[], -// OUT UCHAR *RatesLen) -{ - UCHAR Idx; - UCHAR RateLen; - CHAR IeType; - MACFRAME *Fr = (MACFRAME *)Msg; - - COPY_MAC_ADDR(Addr2, &Fr->Hdr.Addr2); - - if ((Fr->Octet[0] != IE_SSID) || (Fr->Octet[1] > MAX_LEN_OF_SSID)) - { - DBGPRINT(RT_DEBUG_TRACE, "PeerProbeReqSanity fail - wrong SSID IE(Type=%d,Len=%d)\n",Fr->Octet[0],Fr->Octet[1]); - return FALSE; - } - - *SsidLen = Fr->Octet[1]; - memcpy(Ssid, &Fr->Octet[2], *SsidLen); - -#if 1 - Idx = *SsidLen + 2; - - // -- get supported rates from payload and advance the pointer - IeType = Fr->Octet[Idx]; - RateLen = Fr->Octet[Idx + 1]; - if (IeType != IE_SUPP_RATES) - { - DBGPRINT(RT_DEBUG_TRACE, "PeerProbeReqSanity fail - wrong SupportRates IE(Type=%d,Len=%d)\n",Fr->Octet[Idx],Fr->Octet[Idx+1]); - return FALSE; - } - else - { - if ((pAd->PortCfg.AdhocMode == 2) && (RateLen < 8)) - return (FALSE); - } -#endif - return TRUE; -} - -/* - ========================================================================== - Description: - MLME message sanity check - Return: - TRUE if all parameters are OK, FALSE otherwise - ========================================================================== - */ -BOOLEAN PeerBeaconAndProbeRspSanity( - IN PRTMP_ADAPTER pAd, - IN VOID *Msg, - IN ULONG MsgLen, - OUT MACADDR *Addr2, - OUT MACADDR *Bssid, - OUT CHAR Ssid[], - OUT UCHAR *SsidLen, - OUT UCHAR *BssType, - OUT USHORT *BeaconPeriod, - OUT UCHAR *Channel, - OUT LARGE_INTEGER *Timestamp, - OUT BOOLEAN *CfExist, - OUT CF_PARM *CfParm, - OUT USHORT *AtimWin, - OUT USHORT *CapabilityInfo, - OUT UCHAR Rate[], - OUT UCHAR *RateLen, - OUT BOOLEAN *ExtendedRateIeExist, - OUT UCHAR *Erp, - OUT UCHAR *DtimCount, - OUT UCHAR *DtimPeriod, - OUT UCHAR *BcastFlag, - OUT UCHAR *MessageToMe, - OUT UCHAR *Legacy, - OUT UCHAR SupRate[], - OUT UCHAR *SupRateLen, - OUT UCHAR ExtRate[], - OUT UCHAR *ExtRateLen, - OUT PNDIS_802_11_VARIABLE_IEs pVIE) -{ - CHAR *Ptr, TimLen; - MACFRAME *Fr; - PBEACON_EID_STRUCT eid_ptr; - UCHAR SubType; - UCHAR Sanity; - - // Add for 3 necessary EID field check - Sanity = 0; - - *ExtendedRateIeExist = FALSE; - *Erp = 0; - - Fr = (MACFRAME *)Msg; - - // get subtype from header - SubType = (UCHAR)Fr->Hdr.SubType; - - // get Addr2 and BSSID from header - COPY_MAC_ADDR(Addr2, &Fr->Hdr.Addr2); - COPY_MAC_ADDR(Bssid, &Fr->Hdr.Addr3); - - Ptr = Fr->Octet; - - // get timestamp from payload and advance the pointer - memcpy(Timestamp, Ptr, TIMESTAMP_LEN); - Ptr += TIMESTAMP_LEN; - - // get beacon interval from payload and advance the pointer - memcpy(BeaconPeriod, Ptr, 2); - Ptr += 2; - - // get capability info from payload and advance the pointer - memcpy(CapabilityInfo, Ptr, 2); - Ptr += 2; - if (CAP_IS_ESS_ON(*CapabilityInfo)) - { - *BssType = BSS_INFRA; - } - else - { - *BssType = BSS_INDEP; - } - - // Mask out unnecessary capability information - *CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; - - eid_ptr = (PBEACON_EID_STRUCT) Ptr; - - // get variable fields from payload and advance the pointer - while(((UCHAR*)eid_ptr + eid_ptr->Len + 1) < ((UCHAR*)Fr + MsgLen)) - { - switch(eid_ptr->Eid) - { - case IE_SSID: - // Already has one SSID EID in this beacon, ignore the second one - if (Sanity & 0x1) - break; - if(eid_ptr->Len <= MAX_LEN_OF_SSID) - { - memcpy(Ssid, eid_ptr->Octet, eid_ptr->Len); - memset(Ssid + eid_ptr->Len,0,1); - *SsidLen = eid_ptr->Len; - Sanity |= 0x1; - //DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - ESSID=%s Len=%d\n",Ssid,eid_ptr->Len); - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_SSID (len=%d)\n",eid_ptr->Len); - return FALSE; - } - break; - - case IE_SUPP_RATES: - if(eid_ptr->Len <= MAX_LEN_OF_SUPPORTED_RATES) - { - int index; - UCHAR rate, i; - PUCHAR eid_rate; - - i = 0; - eid_rate = eid_ptr->Octet; - for (index = 0; index < eid_ptr->Len; index++) - { - rate = eid_rate[index] & 0x7f; // Mask out basic rate set bit - if ((rate == 2) || (rate == 4) || (rate == 11) || (rate == 22) || - (rate == 12) || (rate == 18) || (rate == 24) || (rate == 36) || - (rate == 48) || (rate == 72) || (rate == 96) || (rate == 108)) - Rate[i++] = eid_rate[index]; // Save rate with basic rate set bit if exists - } - *RateLen = i; - Sanity |= 0x2; - - // Copy supported rate from desired AP's beacon. We are trying to match - // AP's supported and extended rate settings. - memcpy(SupRate, eid_ptr->Octet, eid_ptr->Len); - *SupRateLen = eid_ptr->Len; - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_SUPP_RATES (len=%d)\n",eid_ptr->Len); - return FALSE; - } - break; - - case IE_FH_PARM: - DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity(IE_FH_PARM) \n"); - break; - - case IE_DS_PARM: - if(eid_ptr->Len == 1) - { - *Channel = *eid_ptr->Octet; - if (ChannelSanity(pAd, *Channel) == 0) - { - DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_DS_PARM (ch=%d)\n",*Channel); - return FALSE; - } - Sanity |= 0x4; - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_DS_PARM (len=%d)\n",eid_ptr->Len); - return FALSE; - } - break; - - case IE_CF_PARM: - if(eid_ptr->Len == 6) - { - *CfExist = TRUE; - memcpy(CfParm, eid_ptr->Octet, eid_ptr->Len); - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_CF_PARM\n"); - return FALSE; - } - break; - - case IE_IBSS_PARM: - if(eid_ptr->Len == 2) - { - memcpy(AtimWin, eid_ptr->Octet, eid_ptr->Len); - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_IBSS_PARM\n"); - return FALSE; - } - break; - - case IE_TIM: - if(INFRA_ON(pAd) && SubType == SUBTYPE_BEACON) - { - GetTimBit((PUCHAR)eid_ptr, pAd->PortCfg.Aid, &TimLen, BcastFlag, DtimCount, DtimPeriod, MessageToMe); - } - break; - - // New for WPA - case IE_WPA: - // Check the OUI version, filter out non-standard usage - if (RTMPEqualMemory(eid_ptr->Octet, WPA_OUI, 4)) - { - // Copy to pVIE which will report to microsoft bssid list. - pVIE->ElementID = eid_ptr->Eid; - pVIE->Length = eid_ptr->Len; - memcpy(pVIE->data, eid_ptr->Octet, eid_ptr->Len); - } - DBGPRINT(RT_DEBUG_INFO, "PeerBeaconAndProbeRspSanity - Receive IE_WPA\n"); - break; - - case IE_EXT_SUPP_RATES: - // concatenate all extended rates to Rates[] and RateLen - *ExtendedRateIeExist = TRUE; - if (eid_ptr->Len <= MAX_LEN_OF_SUPPORTED_RATES) - { - int index; - UCHAR rate, i; - PUCHAR eid_rate; - - i = *RateLen; - eid_rate = eid_ptr->Octet; - for (index = 0; index < eid_ptr->Len; index++) - { - rate = eid_rate[index] & 0x7f; // Mask out basic rate set bit - if ((rate == 2) || (rate == 4) || (rate == 11) || (rate == 22) || - (rate == 12) || (rate == 18) || (rate == 24) || (rate == 36) || - (rate == 48) || (rate == 72) || (rate == 96) || (rate == 108)) - Rate[i++] = eid_rate[index]; // Save rate with basic rate set bit if exists - - if (i >= MAX_LEN_OF_SUPPORTED_RATES) - break; - } - *RateLen = i; - // Copy extended rate from desired AP's beacon. We are trying to match - // AP's supported and extended rate settings. - memcpy(ExtRate, eid_ptr->Octet, eid_ptr->Len); - *ExtRateLen = eid_ptr->Len; - } - break; - - case IE_ERP: - if (eid_ptr->Len == 1) - { - *Erp = (UCHAR)eid_ptr->Octet[0]; - } - break; - - default: - DBGPRINT(RT_DEBUG_INFO, "PeerBeaconAndProbeRspSanity - unrecognized EID = %d\n", eid_ptr->Eid); - break; - } - - eid_ptr = (PBEACON_EID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len); - } - - - // in 802.11a band, AP may skip this DS IE in their BEACON - if ((pAd->PortCfg.Channel > 14) && ((Sanity & 0x04)==0)) - { - *Channel = pAd->PortCfg.Channel; - Sanity |= 0x04; - } - - if (Sanity != 0x7) - { - DBGPRINT(RT_DEBUG_WARN, "PeerBeaconAndProbeRspSanity - missing field, Sanity=0x%02x\n", Sanity); - return FALSE; - } - else - { - return TRUE; - } - -} - -/* - ========================================================================== - Description: - ========================================================================== - */ -BOOLEAN GetTimBit( - IN CHAR *Ptr, - IN USHORT Aid, - OUT UCHAR *TimLen, - OUT UCHAR *BcastFlag, - OUT UCHAR *DtimCount, - OUT UCHAR *DtimPeriod, - OUT UCHAR *MessageToMe) -{ - UCHAR BitCntl, N1, N2, MyByte, MyBit; - CHAR *IdxPtr; - - IdxPtr = Ptr; - - IdxPtr ++; - *TimLen = *IdxPtr; - - // get DTIM Count from TIM element - IdxPtr ++; - *DtimCount = *IdxPtr; - - // get DTIM Period from TIM element - IdxPtr++; - *DtimPeriod = *IdxPtr; - - // get Bitmap Control from TIM element - IdxPtr++; - BitCntl = *IdxPtr; - - if ((*DtimCount == 0) && (BitCntl & 0x01)) - *BcastFlag = TRUE; - else - *BcastFlag = FALSE; - -#if 1 - // Parse Partial Virtual Bitmap from TIM element - N1 = BitCntl & 0xfe; // N1 is the first bitmap byte# - N2 = *TimLen - 4 + N1; // N2 is the last bitmap byte# - - if ((Aid < (N1 << 3)) || (Aid >= ((N2 + 1) << 3))) - *MessageToMe = FALSE; - else - { - MyByte = (Aid >> 3) - N1; // my byte position in the bitmap byte-stream - MyBit = Aid % 16 - ((MyByte & 0x01)? 8:0); - - IdxPtr += (MyByte + 1); - - //if (*IdxPtr) - // DBGPRINT(RT_DEBUG_WARN, ("TIM bitmap = 0x%02x\n", *IdxPtr)); - - if (*IdxPtr & (0x01 << MyBit)) - *MessageToMe = TRUE; - else - *MessageToMe = FALSE; - } -#else - *MessageToMe = FALSE; -#endif - - return TRUE; -} - - -/*! - * \brief Get legacy bit, right now for 11b it is always 0 - * \param - * \return TRUE if the parameters are OK, FALSE otherwise. Always return TRUE - * \pre - * \post - */ -BOOLEAN GetLegacy( - IN CHAR *Ptr, - OUT UCHAR *Legacy) -{ - *Legacy = 0; - return TRUE; -} - -UCHAR ChannelSanity( - IN PRTMP_ADAPTER pAd, - IN UCHAR channel) -{ - UCHAR index; - - for (index = 0; index < pAd->PortCfg.ChannelListNum; index ++) - { - if (channel == pAd->PortCfg.ChannelList[index]) - return 1; - } - return 0; - -#if 0 - switch (pAd->PortCfg.CountryRegion) - { - case REGION_FCC: // 1 - 11 - if ((channel > 0) && (channel < 12)) - return 1; - break; - - case REGION_IC: // 1 -11 - if ((channel > 0) && (channel < 12)) - return 1; - break; - - case REGION_ETSI: // 1 - 13 - if ((channel > 0) && (channel < 14)) - return 1; - break; - - case REGION_SPAIN: // 10 - 11 - if ((channel > 9) && (channel < 12)) - return 1; - break; - - case REGION_FRANCE: // 10 -13 - if ((channel > 9) && (channel < 14)) - return 1; - break; - - case REGION_MKK: // 14 - if (channel == 14) - return 1; - break; - - case REGION_MKK1: // 1 - 14 - if ((channel > 0) && (channel < 15)) - return 1; - break; - - case REGION_ISRAEL: // 3 - 9 - if ((channel > 2) && (channel < 10)) - return 1; - break; - - default: // Error - return 0; - } - return (0); -#endif -} +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: sanity.c + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * MarkW 8th Dec 04 Baseline code + ***************************************************************************/ + +#include "rt_config.h" + +UCHAR WPA_OUI[] = {0x00, 0x50, 0xf2, 0x01}; + +/* + ========================================================================== + Description: + MLME message sanity check + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== + */ +BOOLEAN MlmeScanReqSanity( + IN PRTMP_ADAPTER pAd, + IN VOID *Msg, + IN ULONG MsgLen, + OUT UCHAR *BssType, + OUT CHAR Ssid[], + OUT UCHAR *SsidLen, + OUT UCHAR *ScanType) +{ + MLME_SCAN_REQ_STRUCT *Info; + + Info = (MLME_SCAN_REQ_STRUCT *)(Msg); + *BssType = Info->BssType; + *SsidLen = Info->SsidLen; + memcpy(Ssid, Info->Ssid, *SsidLen); + *ScanType = Info->ScanType; + + if ((*BssType == BSS_INFRA || *BssType == BSS_INDEP || *BssType == BSS_ANY) && + (*ScanType == SCAN_ACTIVE || *ScanType == SCAN_PASSIVE)) + return TRUE; + else + { + DBGPRINT(RT_DEBUG_TRACE, "MlmeScanReqSanity fail - wrong BssType or ScanType\n"); + return FALSE; + } +} + +/* + ========================================================================== + Description: + MLME message sanity check + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== + */ +BOOLEAN MlmeStartReqSanity( + IN PRTMP_ADAPTER pAd, + IN VOID *Msg, + IN ULONG MsgLen, + OUT CHAR Ssid[], + OUT UCHAR *SsidLen) +{ + MLME_START_REQ_STRUCT *Info; + + Info = (MLME_START_REQ_STRUCT *)(Msg); + + if (Info->SsidLen > MAX_LEN_OF_SSID) + { + DBGPRINT(RT_DEBUG_TRACE, "MlmeStartReqSanity fail - wrong SSID length\n"); + return FALSE; + } + + *SsidLen = Info->SsidLen; + memcpy(Ssid, Info->Ssid, *SsidLen); + + return TRUE; +} + +/* + ========================================================================== + Description: + MLME message sanity check + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== + */ +BOOLEAN MlmeAssocReqSanity( + IN PRTMP_ADAPTER pAd, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *ApAddr, + OUT USHORT *CapabilityInfo, + OUT ULONG *Timeout, + OUT USHORT *ListenIntv) +{ + MLME_ASSOC_REQ_STRUCT *Info; + + Info = (MLME_ASSOC_REQ_STRUCT *)Msg; + *Timeout = Info->Timeout; // timeout + COPY_MAC_ADDR(ApAddr, &Info->Addr); // AP address + *CapabilityInfo = Info->CapabilityInfo; // capability info + *ListenIntv = Info->ListenIntv; + + return TRUE; +} + +/* + ========================================================================== + Description: + MLME message sanity check + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== + */ +BOOLEAN MlmeAuthReqSanity( + IN PRTMP_ADAPTER pAd, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *Addr, + OUT ULONG *Timeout, + OUT USHORT *Alg) +{ + MLME_AUTH_REQ_STRUCT *Info; + + Info = (MLME_AUTH_REQ_STRUCT *)Msg; + COPY_MAC_ADDR(Addr, &Info->Addr); + *Timeout = Info->Timeout; + *Alg = Info->Alg; + + if ((*Alg == Ndis802_11AuthModeShared || *Alg == Ndis802_11AuthModeOpen) && !MAC_ADDR_IS_GROUP(*Addr)) + { + return TRUE; + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "MlmeAuthReqSanity fail - wrong algorithm\n"); + return FALSE; + } +} + +/* + ========================================================================== + Description: + MLME message sanity check + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== + */ +BOOLEAN PeerAssocRspSanity( + IN PRTMP_ADAPTER pAd, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *Addr2, + OUT USHORT *CapabilityInfo, + OUT USHORT *Status, + OUT USHORT *Aid, + OUT UCHAR Rates[], + OUT UCHAR *RatesLen, + OUT BOOLEAN *ExtendedRateIeExist) +{ + CHAR IeType, *Ptr; + MACFRAME *Fr = (MACFRAME *)Msg; + PBEACON_EID_STRUCT eid_ptr; + + COPY_MAC_ADDR(Addr2, &Fr->Hdr.Addr2); + Ptr = Fr->Octet; + + memcpy(CapabilityInfo, &Fr->Octet[0], 2); + memcpy(Status, &Fr->Octet[2], 2); + // Mask out unnecessary capability information + *CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; + + if (*Status == MLME_SUCCESS) + { + memcpy(Aid, &Fr->Octet[4], 2); + *Aid = (*Aid) & 0x3fff; // AID is low 14-bit + + // -- get supported rates from payload and advance the pointer + IeType = Fr->Octet[6]; + *RatesLen = Fr->Octet[7]; + if ((IeType != IE_SUPP_RATES) || (*RatesLen > MAX_LEN_OF_SUPPORTED_RATES)) + { + DBGPRINT(RT_DEBUG_TRACE, "PeerAssocRspSanity fail - wrong SupportedRates IE\n"); + return FALSE; + } + else + memcpy(Rates, &Fr->Octet[8], *RatesLen); + + // many AP implement proprietary IEs in non-standard order, we'd better + // tolerate mis-ordered IEs to get best compatibility + *ExtendedRateIeExist = FALSE; + eid_ptr = (PBEACON_EID_STRUCT) &Fr->Octet[8 + (*RatesLen)]; + + // get variable fields from payload and advance the pointer + while (((UCHAR*)eid_ptr + eid_ptr->Len + 1) < ((UCHAR*)Fr + MsgLen)) + { + switch (eid_ptr->Eid) + { + case IE_EXT_SUPP_RATES: + *ExtendedRateIeExist = TRUE; + if ((*RatesLen + eid_ptr->Len) <= MAX_LEN_OF_SUPPORTED_RATES) + { + memcpy(&Rates[*RatesLen], eid_ptr->Octet, eid_ptr->Len); + *RatesLen = (*RatesLen) + eid_ptr->Len; + } + else + { + memcpy(&Rates[*RatesLen], eid_ptr->Octet, MAX_LEN_OF_SUPPORTED_RATES - (*RatesLen)); + *RatesLen = MAX_LEN_OF_SUPPORTED_RATES; + } + break; + default: + DBGPRINT(RT_DEBUG_TRACE, "PeerAssocRspSanity - ignore unrecognized EID = %d\n", eid_ptr->Eid); + break; + } + + eid_ptr = (PBEACON_EID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len); + } + + } + + return TRUE; +} + +/* + ========================================================================== + Description: + MLME message sanity check + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== + */ +BOOLEAN PeerDisassocSanity( + IN PRTMP_ADAPTER pAd, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *Addr2, + OUT USHORT *Reason) +{ + MACFRAME *Fr = (MACFRAME *)Msg; + + COPY_MAC_ADDR(Addr2, &Fr->Hdr.Addr2); + memcpy(Reason, &Fr->Octet[0], 2); + + return TRUE; +} + +/* + ========================================================================== + Description: + MLME message sanity check + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== + */ +BOOLEAN PeerDeauthSanity( + IN PRTMP_ADAPTER pAd, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *Addr2, + OUT USHORT *Reason) +{ + MACFRAME *Fr = (MACFRAME *)Msg; + + COPY_MAC_ADDR(Addr2, &Fr->Hdr.Addr2); + memcpy(Reason, &Fr->Octet[0], 2); + + return TRUE; +} + +/* + ========================================================================== + Description: + MLME message sanity check + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== + */ +BOOLEAN PeerAuthSanity( + IN PRTMP_ADAPTER pAd, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *Addr, + OUT USHORT *Alg, + OUT USHORT *Seq, + OUT USHORT *Status, + CHAR *ChlgText) +{ + MACFRAME *Fr = (MACFRAME *)Msg; + + COPY_MAC_ADDR(Addr, &Fr->Hdr.Addr2); + memcpy(Alg, &Fr->Octet[0], 2); + memcpy(Seq, &Fr->Octet[2], 2); + memcpy(Status, &Fr->Octet[4], 2); + + if (*Alg == Ndis802_11AuthModeOpen) + { + if (*Seq == 1 || *Seq == 2) + { + return TRUE; + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "PeerAuthSanity fail - wrong Seg#\n"); + return FALSE; + } + } + else if (*Alg == Ndis802_11AuthModeShared) + { + if (*Seq == 1 || *Seq == 4) + { + return TRUE; + } + else if (*Seq == 2 || *Seq == 3) + { + memcpy(ChlgText, &Fr->Octet[8], CIPHER_TEXT_LEN); + return TRUE; + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "PeerAuthSanity fail - wrong Seg#\n"); + return FALSE; + } + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "PeerAuthSanity fail - wrong algorithm\n"); + return FALSE; + } +} + +/* + ========================================================================== + Description: + MLME message sanity check + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== + */ +BOOLEAN PeerProbeReqSanity( + IN PRTMP_ADAPTER pAd, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *Addr2, + OUT CHAR Ssid[], + OUT UCHAR *SsidLen) +// OUT UCHAR Rates[], +// OUT UCHAR *RatesLen) +{ + UCHAR Idx; + UCHAR RateLen; + CHAR IeType; + MACFRAME *Fr = (MACFRAME *)Msg; + + COPY_MAC_ADDR(Addr2, &Fr->Hdr.Addr2); + + if ((Fr->Octet[0] != IE_SSID) || (Fr->Octet[1] > MAX_LEN_OF_SSID)) + { + DBGPRINT(RT_DEBUG_TRACE, "PeerProbeReqSanity fail - wrong SSID IE(Type=%d,Len=%d)\n",Fr->Octet[0],Fr->Octet[1]); + return FALSE; + } + + *SsidLen = Fr->Octet[1]; + memcpy(Ssid, &Fr->Octet[2], *SsidLen); + +#if 1 + Idx = *SsidLen + 2; + + // -- get supported rates from payload and advance the pointer + IeType = Fr->Octet[Idx]; + RateLen = Fr->Octet[Idx + 1]; + if (IeType != IE_SUPP_RATES) + { + DBGPRINT(RT_DEBUG_TRACE, "PeerProbeReqSanity fail - wrong SupportRates IE(Type=%d,Len=%d)\n",Fr->Octet[Idx],Fr->Octet[Idx+1]); + return FALSE; + } + else + { + if ((pAd->PortCfg.AdhocMode == 2) && (RateLen < 8)) + return (FALSE); + } +#endif + return TRUE; +} + +/* + ========================================================================== + Description: + MLME message sanity check + Return: + TRUE if all parameters are OK, FALSE otherwise + ========================================================================== + */ +BOOLEAN PeerBeaconAndProbeRspSanity( + IN PRTMP_ADAPTER pAd, + IN VOID *Msg, + IN ULONG MsgLen, + OUT MACADDR *Addr2, + OUT MACADDR *Bssid, + OUT CHAR Ssid[], + OUT UCHAR *SsidLen, + OUT UCHAR *BssType, + OUT USHORT *BeaconPeriod, + OUT UCHAR *Channel, + OUT LARGE_INTEGER *Timestamp, + OUT BOOLEAN *CfExist, + OUT CF_PARM *CfParm, + OUT USHORT *AtimWin, + OUT USHORT *CapabilityInfo, + OUT UCHAR Rate[], + OUT UCHAR *RateLen, + OUT BOOLEAN *ExtendedRateIeExist, + OUT UCHAR *Erp, + OUT UCHAR *DtimCount, + OUT UCHAR *DtimPeriod, + OUT UCHAR *BcastFlag, + OUT UCHAR *MessageToMe, + OUT UCHAR *Legacy, + OUT UCHAR SupRate[], + OUT UCHAR *SupRateLen, + OUT UCHAR ExtRate[], + OUT UCHAR *ExtRateLen, + OUT PNDIS_802_11_VARIABLE_IEs pVIE) +{ + CHAR *Ptr, TimLen; + MACFRAME *Fr; + PBEACON_EID_STRUCT eid_ptr; + UCHAR SubType; + UCHAR Sanity; + + // Add for 3 necessary EID field check + Sanity = 0; + + *ExtendedRateIeExist = FALSE; + *Erp = 0; + + Fr = (MACFRAME *)Msg; + + // get subtype from header + SubType = (UCHAR)Fr->Hdr.SubType; + + // get Addr2 and BSSID from header + COPY_MAC_ADDR(Addr2, &Fr->Hdr.Addr2); + COPY_MAC_ADDR(Bssid, &Fr->Hdr.Addr3); + + Ptr = Fr->Octet; + + // get timestamp from payload and advance the pointer + memcpy(Timestamp, Ptr, TIMESTAMP_LEN); + Ptr += TIMESTAMP_LEN; + + // get beacon interval from payload and advance the pointer + memcpy(BeaconPeriod, Ptr, 2); + Ptr += 2; + + // get capability info from payload and advance the pointer + memcpy(CapabilityInfo, Ptr, 2); + Ptr += 2; + if (CAP_IS_ESS_ON(*CapabilityInfo)) + { + *BssType = BSS_INFRA; + } + else + { + *BssType = BSS_INDEP; + } + + // Mask out unnecessary capability information + *CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; + + eid_ptr = (PBEACON_EID_STRUCT) Ptr; + + // get variable fields from payload and advance the pointer + while(((UCHAR*)eid_ptr + eid_ptr->Len + 1) < ((UCHAR*)Fr + MsgLen)) + { + switch(eid_ptr->Eid) + { + case IE_SSID: + // Already has one SSID EID in this beacon, ignore the second one + if (Sanity & 0x1) + break; + if(eid_ptr->Len <= MAX_LEN_OF_SSID) + { + memcpy(Ssid, eid_ptr->Octet, eid_ptr->Len); + memset(Ssid + eid_ptr->Len,0,1); + *SsidLen = eid_ptr->Len; + Sanity |= 0x1; + //DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - ESSID=%s Len=%d\n",Ssid,eid_ptr->Len); + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_SSID (len=%d)\n",eid_ptr->Len); + return FALSE; + } + break; + + case IE_SUPP_RATES: + if(eid_ptr->Len <= MAX_LEN_OF_SUPPORTED_RATES) + { + int index; + UCHAR rate, i; + PUCHAR eid_rate; + + i = 0; + eid_rate = eid_ptr->Octet; + for (index = 0; index < eid_ptr->Len; index++) + { + rate = eid_rate[index] & 0x7f; // Mask out basic rate set bit + if ((rate == 2) || (rate == 4) || (rate == 11) || (rate == 22) || + (rate == 12) || (rate == 18) || (rate == 24) || (rate == 36) || + (rate == 48) || (rate == 72) || (rate == 96) || (rate == 108)) + Rate[i++] = eid_rate[index]; // Save rate with basic rate set bit if exists + } + *RateLen = i; + Sanity |= 0x2; + + // Copy supported rate from desired AP's beacon. We are trying to match + // AP's supported and extended rate settings. + memcpy(SupRate, eid_ptr->Octet, eid_ptr->Len); + *SupRateLen = eid_ptr->Len; + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_SUPP_RATES (len=%d)\n",eid_ptr->Len); + return FALSE; + } + break; + + case IE_FH_PARM: + DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity(IE_FH_PARM) \n"); + break; + + case IE_DS_PARM: + if(eid_ptr->Len == 1) + { + *Channel = *eid_ptr->Octet; + if (ChannelSanity(pAd, *Channel) == 0) + { + DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_DS_PARM (ch=%d)\n",*Channel); + return FALSE; + } + Sanity |= 0x4; + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_DS_PARM (len=%d)\n",eid_ptr->Len); + return FALSE; + } + break; + + case IE_CF_PARM: + if(eid_ptr->Len == 6) + { + *CfExist = TRUE; + memcpy(CfParm, eid_ptr->Octet, eid_ptr->Len); + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_CF_PARM\n"); + return FALSE; + } + break; + + case IE_IBSS_PARM: + if(eid_ptr->Len == 2) + { + memcpy(AtimWin, eid_ptr->Octet, eid_ptr->Len); + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "PeerBeaconAndProbeRspSanity - wrong IE_IBSS_PARM\n"); + return FALSE; + } + break; + + case IE_TIM: + if(INFRA_ON(pAd) && SubType == SUBTYPE_BEACON) + { + GetTimBit((PUCHAR)eid_ptr, pAd->PortCfg.Aid, &TimLen, BcastFlag, DtimCount, DtimPeriod, MessageToMe); + } + break; + + // New for WPA + case IE_WPA: + // Check the OUI version, filter out non-standard usage + if (RTMPEqualMemory(eid_ptr->Octet, WPA_OUI, 4)) + { + // Copy to pVIE which will report to microsoft bssid list. + pVIE->ElementID = eid_ptr->Eid; + pVIE->Length = eid_ptr->Len; + memcpy(pVIE->data, eid_ptr->Octet, eid_ptr->Len); + } + DBGPRINT(RT_DEBUG_INFO, "PeerBeaconAndProbeRspSanity - Receive IE_WPA\n"); + break; + + case IE_EXT_SUPP_RATES: + // concatenate all extended rates to Rates[] and RateLen + *ExtendedRateIeExist = TRUE; + if (eid_ptr->Len <= MAX_LEN_OF_SUPPORTED_RATES) + { + int index; + UCHAR rate, i; + PUCHAR eid_rate; + + i = *RateLen; + eid_rate = eid_ptr->Octet; + for (index = 0; index < eid_ptr->Len; index++) + { + rate = eid_rate[index] & 0x7f; // Mask out basic rate set bit + if ((rate == 2) || (rate == 4) || (rate == 11) || (rate == 22) || + (rate == 12) || (rate == 18) || (rate == 24) || (rate == 36) || + (rate == 48) || (rate == 72) || (rate == 96) || (rate == 108)) + Rate[i++] = eid_rate[index]; // Save rate with basic rate set bit if exists + + if (i >= MAX_LEN_OF_SUPPORTED_RATES) + break; + } + *RateLen = i; + // Copy extended rate from desired AP's beacon. We are trying to match + // AP's supported and extended rate settings. + memcpy(ExtRate, eid_ptr->Octet, eid_ptr->Len); + *ExtRateLen = eid_ptr->Len; + } + break; + + case IE_ERP: + if (eid_ptr->Len == 1) + { + *Erp = (UCHAR)eid_ptr->Octet[0]; + } + break; + + default: + DBGPRINT(RT_DEBUG_INFO, "PeerBeaconAndProbeRspSanity - unrecognized EID = %d\n", eid_ptr->Eid); + break; + } + + eid_ptr = (PBEACON_EID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len); + } + + + // in 802.11a band, AP may skip this DS IE in their BEACON + if ((pAd->PortCfg.Channel > 14) && ((Sanity & 0x04)==0)) + { + *Channel = pAd->PortCfg.Channel; + Sanity |= 0x04; + } + + if (Sanity != 0x7) + { + DBGPRINT(RT_DEBUG_WARN, "PeerBeaconAndProbeRspSanity - missing field, Sanity=0x%02x\n", Sanity); + return FALSE; + } + else + { + return TRUE; + } + +} + +/* + ========================================================================== + Description: + ========================================================================== + */ +BOOLEAN GetTimBit( + IN CHAR *Ptr, + IN USHORT Aid, + OUT UCHAR *TimLen, + OUT UCHAR *BcastFlag, + OUT UCHAR *DtimCount, + OUT UCHAR *DtimPeriod, + OUT UCHAR *MessageToMe) +{ + UCHAR BitCntl, N1, N2, MyByte, MyBit; + CHAR *IdxPtr; + + IdxPtr = Ptr; + + IdxPtr ++; + *TimLen = *IdxPtr; + + // get DTIM Count from TIM element + IdxPtr ++; + *DtimCount = *IdxPtr; + + // get DTIM Period from TIM element + IdxPtr++; + *DtimPeriod = *IdxPtr; + + // get Bitmap Control from TIM element + IdxPtr++; + BitCntl = *IdxPtr; + + if ((*DtimCount == 0) && (BitCntl & 0x01)) + *BcastFlag = TRUE; + else + *BcastFlag = FALSE; + +#if 1 + // Parse Partial Virtual Bitmap from TIM element + N1 = BitCntl & 0xfe; // N1 is the first bitmap byte# + N2 = *TimLen - 4 + N1; // N2 is the last bitmap byte# + + if ((Aid < (N1 << 3)) || (Aid >= ((N2 + 1) << 3))) + *MessageToMe = FALSE; + else + { + MyByte = (Aid >> 3) - N1; // my byte position in the bitmap byte-stream + MyBit = Aid % 16 - ((MyByte & 0x01)? 8:0); + + IdxPtr += (MyByte + 1); + + //if (*IdxPtr) + // DBGPRINT(RT_DEBUG_WARN, ("TIM bitmap = 0x%02x\n", *IdxPtr)); + + if (*IdxPtr & (0x01 << MyBit)) + *MessageToMe = TRUE; + else + *MessageToMe = FALSE; + } +#else + *MessageToMe = FALSE; +#endif + + return TRUE; +} + + +/*! + * \brief Get legacy bit, right now for 11b it is always 0 + * \param + * \return TRUE if the parameters are OK, FALSE otherwise. Always return TRUE + * \pre + * \post + */ +BOOLEAN GetLegacy( + IN CHAR *Ptr, + OUT UCHAR *Legacy) +{ + *Legacy = 0; + return TRUE; +} + +UCHAR ChannelSanity( + IN PRTMP_ADAPTER pAd, + IN UCHAR channel) +{ + UCHAR index; + + for (index = 0; index < pAd->PortCfg.ChannelListNum; index ++) + { + if (channel == pAd->PortCfg.ChannelList[index]) + return 1; + } + return 0; + +#if 0 + switch (pAd->PortCfg.CountryRegion) + { + case REGION_FCC: // 1 - 11 + if ((channel > 0) && (channel < 12)) + return 1; + break; + + case REGION_IC: // 1 -11 + if ((channel > 0) && (channel < 12)) + return 1; + break; + + case REGION_ETSI: // 1 - 13 + if ((channel > 0) && (channel < 14)) + return 1; + break; + + case REGION_SPAIN: // 10 - 11 + if ((channel > 9) && (channel < 12)) + return 1; + break; + + case REGION_FRANCE: // 10 -13 + if ((channel > 9) && (channel < 14)) + return 1; + break; + + case REGION_MKK: // 14 + if (channel == 14) + return 1; + break; + + case REGION_MKK1: // 1 - 14 + if ((channel > 0) && (channel < 15)) + return 1; + break; + + case REGION_ISRAEL: // 3 - 9 + if ((channel > 2) && (channel < 10)) + return 1; + break; + + default: // Error + return 0; + } + return (0); +#endif +} --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/md5.h +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/md5.h @@ -1,94 +1,94 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - * This MD5 code is based on code from Dynamics -- HUT Mobile IP * - * Copyright (C) 1998-2001, Dynamics group * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: md5.h - * - * Abstract: contain MD5 and AES cipher algorithm - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * MarkW 8th Dec 04 Baseline code - ***************************************************************************/ - -#ifndef MD5_H -#define MD5_H - -#define MD5_MAC_LEN 16 -#define SHA_DIGEST_LEN 20 - -struct MD5Context { - u32 buf[4]; - u32 bits[2]; - u8 in[64]; -}; - -void MD5Init(struct MD5Context *context); -void MD5Update(struct MD5Context *context, unsigned char *buf, unsigned len); -void MD5Final(unsigned char digest[16], struct MD5Context *context); -void MD5Transform(u32 buf[4], u32 in[16]); - -typedef struct MD5Context MD5_CTX; - - -void md5_mac(u8 *key, size_t key_len, u8 *data, size_t data_len, u8 *mac); -void hmac_md5(u8 *key, size_t key_len, u8 *data, size_t data_len, u8 *mac); - -#endif /* MD5_H */ - -#ifndef _AES_H -#define _AES_H - -#ifndef uint8 -#define uint8 unsigned char -#endif - -#ifndef uint32 -#define uint32 unsigned long int -#endif - -typedef struct -{ - uint32 erk[64]; /* encryption round keys */ - uint32 drk[64]; /* decryption round keys */ - int nr; /* number of rounds */ -} -aes_context; - -int aes_set_key( aes_context *ctx, uint8 *key, int nbits ); -void aes_encrypt( aes_context *ctx, uint8 input[16], uint8 output[16] ); -void aes_decrypt( aes_context *ctx, uint8 input[16], uint8 output[16] ); - - -void SHAInit(SHA_CTX *ctx); -void SHAUpdate(SHA_CTX *ctx, unsigned char *dataIn, int len); -void SHAFinal(SHA_CTX *ctx, unsigned char hashout[20]); -void SHAHashBlock(SHA_CTX *ctx); -void hmac_sha1(unsigned char *text, int text_len, unsigned char *key, int key_len, unsigned char *digest); -void F(char *password, unsigned char *ssid, int ssidlength, int iterations, int count, unsigned char *output); -int PasswordHash(char *password, unsigned char *ssid, int ssidlength, unsigned char *output); - -#endif /* aes.h */ - +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + * This MD5 code is based on code from Dynamics -- HUT Mobile IP * + * Copyright (C) 1998-2001, Dynamics group * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: md5.h + * + * Abstract: contain MD5 and AES cipher algorithm + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * MarkW 8th Dec 04 Baseline code + ***************************************************************************/ + +#ifndef MD5_H +#define MD5_H + +#define MD5_MAC_LEN 16 +#define SHA_DIGEST_LEN 20 + +struct MD5Context { + u32 buf[4]; + u32 bits[2]; + u8 in[64]; +}; + +void MD5Init(struct MD5Context *context); +void MD5Update(struct MD5Context *context, unsigned char *buf, unsigned len); +void MD5Final(unsigned char digest[16], struct MD5Context *context); +void MD5Transform(u32 buf[4], u32 in[16]); + +typedef struct MD5Context MD5_CTX; + + +void md5_mac(u8 *key, size_t key_len, u8 *data, size_t data_len, u8 *mac); +void hmac_md5(u8 *key, size_t key_len, u8 *data, size_t data_len, u8 *mac); + +#endif /* MD5_H */ + +#ifndef _AES_H +#define _AES_H + +#ifndef uint8 +#define uint8 unsigned char +#endif + +#ifndef uint32 +#define uint32 unsigned long int +#endif + +typedef struct +{ + uint32 erk[64]; /* encryption round keys */ + uint32 drk[64]; /* decryption round keys */ + int nr; /* number of rounds */ +} +aes_context; + +int aes_set_key( aes_context *ctx, uint8 *key, int nbits ); +void aes_encrypt( aes_context *ctx, uint8 input[16], uint8 output[16] ); +void aes_decrypt( aes_context *ctx, uint8 input[16], uint8 output[16] ); + + +void SHAInit(SHA_CTX *ctx); +void SHAUpdate(SHA_CTX *ctx, unsigned char *dataIn, int len); +void SHAFinal(SHA_CTX *ctx, unsigned char hashout[20]); +void SHAHashBlock(SHA_CTX *ctx); +void hmac_sha1(unsigned char *text, int text_len, unsigned char *key, int key_len, unsigned char *digest); +void F(char *password, unsigned char *ssid, int ssidlength, int iterations, int count, unsigned char *output); +int PasswordHash(char *password, unsigned char *ssid, int ssidlength, unsigned char *output); + +#endif /* aes.h */ + --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/assoc.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/assoc.c @@ -1,893 +1,893 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: assoc.c - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * MarkW 8th Dec 04 Baseline code - * MarkW 5th Jun 05 Fix no-SSID broadcasting assoc. - ***************************************************************************/ - -#include "rt_config.h" - -UCHAR CipherSuiteWpaTkip[] = { - 0x00, 0x50, 0xf2, 0x01, // oui - 0x01, 0x00, // Version - 0x00, 0x50, 0xf2, 0x02, // Multicast - 0x01, 0x00, // Number of unicast - 0x00, 0x50, 0xf2, 0x02, // unicast - 0x01, 0x00, // number of authentication method - 0x00, 0x50, 0xf2, 0x01 // authentication - }; -UCHAR CipherSuiteWpaTkipLen = (sizeof(CipherSuiteWpaTkip) / sizeof(UCHAR)); - -UCHAR CipherSuiteWpaAes[] = { - 0x00, 0x50, 0xf2, 0x01, // oui - 0x01, 0x00, // Version - 0x00, 0x50, 0xf2, 0x04, // Multicast - 0x01, 0x00, // Number of unicast - 0x00, 0x50, 0xf2, 0x04, // unicast - 0x01, 0x00, // number of authentication method - 0x00, 0x50, 0xf2, 0x01 // authentication - }; -UCHAR CipherSuiteWpaAesLen = (sizeof(CipherSuiteWpaAes) / sizeof(UCHAR)); - -UCHAR CipherSuiteWpaPskTkip[] = { - 0x00, 0x50, 0xf2, 0x01, // oui - 0x01, 0x00, // Version - 0x00, 0x50, 0xf2, 0x02, // Multicast - 0x01, 0x00, // Number of unicast - 0x00, 0x50, 0xf2, 0x02, // unicast - 0x01, 0x00, // number of authentication method - 0x00, 0x50, 0xf2, 0x02 // authentication - }; -UCHAR CipherSuiteWpaPskTkipLen = (sizeof(CipherSuiteWpaPskTkip) / sizeof(UCHAR)); - -UCHAR CipherSuiteWpaPskAes[] = { - 0x00, 0x50, 0xf2, 0x01, // oui - 0x01, 0x00, // Version - 0x00, 0x50, 0xf2, 0x04, // Multicast - 0x01, 0x00, // Number of unicast - 0x00, 0x50, 0xf2, 0x04, // unicast - 0x01, 0x00, // number of authentication method - 0x00, 0x50, 0xf2, 0x02 // authentication - }; -UCHAR CipherSuiteWpaPskAesLen = (sizeof(CipherSuiteWpaPskAes) / sizeof(UCHAR)); - -/* - ========================================================================== - Description: - association state machine init, including state transition and timer init - Parameters: - S - pointer to the association state machine - Note: - The state machine looks like the following - - ASSOC_IDLE ASSOC_WAIT_RSP REASSOC_WAIT_RSP DISASSOC_WAIT_RSP - MT2_MLME_ASSOC_REQ mlme_assoc_req_action invalid_state_when_assoc invalid_state_when_assoc invalid_state_when_assoc - MT2_MLME_REASSOC_REQ mlme_reassoc_req_action invalid_state_when_reassoc invalid_state_when_reassoc invalid_state_when_reassoc - MT2_MLME_DISASSOC_REQ mlme_disassoc_req_action mlme_disassoc_req_action mlme_disassoc_req_action mlme_disassoc_req_action - MT2_PEER_DISASSOC_REQ peer_disassoc_action peer_disassoc_action peer_disassoc_action peer_disassoc_action - MT2_PEER_ASSOC_REQ drop drop drop drop - MT2_PEER_ASSOC_RSP drop peer_assoc_rsp_action drop drop - MT2_PEER_REASSOC_REQ drop drop drop drop - MT2_PEER_REASSOC_RSP drop drop peer_reassoc_rsp_action drop - MT2_CLS3ERR cls3err_action cls3err_action cls3err_action cls3err_action - MT2_ASSOC_TIMEOUT timer_nop assoc_timeout_action timer_nop timer_nop - MT2_REASSOC_TIMEOUT timer_nop timer_nop reassoc_timeout_action timer_nop - MT2_DISASSOC_TIMEOUT timer_nop timer_nop timer_nop disassoc_timeout_action - ========================================================================== - */ -VOID AssocStateMachineInit( - IN PRTMP_ADAPTER pAd, - IN STATE_MACHINE *S, - OUT STATE_MACHINE_FUNC Trans[]) -{ - StateMachineInit(S, (STATE_MACHINE_FUNC*)Trans, MAX_ASSOC_STATE, MAX_ASSOC_MSG, (STATE_MACHINE_FUNC)Drop, ASSOC_IDLE, ASSOC_MACHINE_BASE); - - // first column - StateMachineSetAction(S, ASSOC_IDLE, MT2_MLME_ASSOC_REQ, (STATE_MACHINE_FUNC)MlmeAssocReqAction); - StateMachineSetAction(S, ASSOC_IDLE, MT2_MLME_REASSOC_REQ, (STATE_MACHINE_FUNC)MlmeReassocReqAction); - StateMachineSetAction(S, ASSOC_IDLE, MT2_MLME_DISASSOC_REQ, (STATE_MACHINE_FUNC)MlmeDisassocReqAction); - StateMachineSetAction(S, ASSOC_IDLE, MT2_PEER_DISASSOC_REQ, (STATE_MACHINE_FUNC)PeerDisassocAction); -// StateMachineSetAction(S, ASSOC_IDLE, MT2_CLS3ERR, (STATE_MACHINE_FUNC)Cls3errAction); - - // second column - StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_MLME_ASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAssoc); - StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_MLME_REASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenReassoc); - StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_MLME_DISASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenDisassociate); - StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_PEER_DISASSOC_REQ, (STATE_MACHINE_FUNC)PeerDisassocAction); - StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_PEER_ASSOC_RSP, (STATE_MACHINE_FUNC)PeerAssocRspAction); -// StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_CLS3ERR, (STATE_MACHINE_FUNC)Cls3errAction); - StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_ASSOC_TIMEOUT, (STATE_MACHINE_FUNC)AssocTimeoutAction); - - // third column - StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_MLME_ASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAssoc); - StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_MLME_REASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenReassoc); - StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_MLME_DISASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenDisassociate); - StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_PEER_DISASSOC_REQ, (STATE_MACHINE_FUNC)PeerDisassocAction); - StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_PEER_REASSOC_RSP, (STATE_MACHINE_FUNC)PeerReassocRspAction); -// StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_CLS3ERR, (STATE_MACHINE_FUNC)Cls3errAction); - StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_REASSOC_TIMEOUT, (STATE_MACHINE_FUNC)ReassocTimeoutAction); - - // fourth column - StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_MLME_ASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAssoc); - StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_MLME_REASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenReassoc); - StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_MLME_DISASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenDisassociate); - StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_PEER_DISASSOC_REQ, (STATE_MACHINE_FUNC)PeerDisassocAction); -// StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_CLS3ERR, (STATE_MACHINE_FUNC)Cls3errAction); - StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_DISASSOC_TIMEOUT, (STATE_MACHINE_FUNC)DisassocTimeoutAction); - - // initialize the timer - RTMPInitTimer(pAd, &pAd->Mlme.AssocAux.AssocTimer, AssocTimeout); - RTMPInitTimer(pAd, &pAd->Mlme.AssocAux.ReassocTimer, ReassocTimeout); - RTMPInitTimer(pAd, &pAd->Mlme.AssocAux.DisassocTimer, DisassocTimeout); -} - -/* - ========================================================================== - Description: - Association timeout procedure. After association timeout, this function - will be called and it will put a message into the MLME queue - Parameters: - Standard timer parameters - ========================================================================== - */ -VOID AssocTimeout( - IN unsigned long data) -{ - RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; - DBGPRINT(RT_DEBUG_TRACE,"ASSOC - enqueue MT2_ASSOC_TIMEOUT \n"); - MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_ASSOC_TIMEOUT, 0, NULL); - MlmeHandler(pAd); -} - -/* - ========================================================================== - Description: - Reassociation timeout procedure. After reassociation timeout, this - function will be called and put a message into the MLME queue - Parameters: - Standard timer parameters - ========================================================================== - */ -VOID ReassocTimeout( - IN unsigned long data) -{ - RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; - DBGPRINT(RT_DEBUG_TRACE,"ASSOC - enqueue MT2_REASSOC_TIMEOUT \n"); - MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_REASSOC_TIMEOUT, 0, NULL); - MlmeHandler(pAd); -} - -/* - ========================================================================== - Description: - Disassociation timeout procedure. After disassociation timeout, this - function will be called and put a message into the MLME queue - Parameters: - Standard timer parameters - ========================================================================== - */ -VOID DisassocTimeout( - IN unsigned long data) -{ - RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; - DBGPRINT(RT_DEBUG_TRACE,"ASSOC - enqueue MT2_DISASSOC_TIMEOUT \n"); - MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_DISASSOC_TIMEOUT, 0, NULL); - MlmeHandler(pAd); -} - -/* - ========================================================================== - Description: - mlme assoc req handling procedure - Parameters: - Adapter - Adapter pointer - Elem - MLME Queue Element - Pre: - the station has been authenticated and the following information is stored in the config - -# SSID - -# supported rates and their length - -# listen interval (Adapter->PortCfg.default_listen_count) - -# Transmit power (Adapter->PortCfg.tx_power) - Post : - -# An association request frame is generated and sent to the air - -# Association timer starts - -# Association state -> ASSOC_WAIT_RSP - ========================================================================== - */ -VOID MlmeAssocReqAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MACADDR ApAddr; - MACHDR AssocHdr; - UCHAR SsidIe = IE_SSID, RateIe = IE_SUPP_RATES,WpaIe = IE_WPA, ExtRateIe = IE_EXT_SUPP_RATES; - USHORT ListenIntv; - ULONG Timeout; - USHORT CapabilityInfo; - UCHAR *OutBuffer = NULL; - NDIS_STATUS NStatus; - ULONG FrameLen = 0; - ULONG tmp; - UCHAR VarIesOffset; - - // Block all authentication request durning WPA block period - if (pAd->PortCfg.bBlockAssoc == TRUE) - { - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - Block Assoc request durning WPA block period!\n"); - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_ASSOC_CONF, MLME_STATE_MACHINE_REJECT); - } - // check sanity first - else if (MlmeAssocReqSanity(pAd, Elem->Msg, Elem->MsgLen, &ApAddr, &CapabilityInfo, &Timeout, &ListenIntv)) - { - RTMPCancelTimer(&pAd->Mlme.AssocAux.AssocTimer); - COPY_MAC_ADDR(&pAd->Mlme.AssocAux.Addr, &ApAddr); - // Mask out unnecessary capability information - CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; // pAd->PortCfg.SupportedCapabilityInfo; - pAd->Mlme.AssocAux.CapabilityInfo = CapabilityInfo; - pAd->Mlme.AssocAux.ListenIntv = ListenIntv; - - NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if (NStatus != NDIS_STATUS_SUCCESS) - { - DBGPRINT(RT_DEBUG_TRACE,"ASSOC - MlmeAssocReqAction() allocate memory failed \n"); - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_ASSOC_CONF, MLME_FAIL_NO_RESOURCE); - return; - } - - // Add by James 03/06/27 - pAd->PortCfg.AssocInfo.Length = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION); //+ sizeof(NDIS_802_11_FIXED_IEs); // Filled in assoc request - pAd->PortCfg.AssocInfo.AvailableRequestFixedIEs = - NDIS_802_11_AI_REQFI_CAPABILITIES | NDIS_802_11_AI_REQFI_LISTENINTERVAL | NDIS_802_11_AI_REQFI_CURRENTAPADDRESS; - pAd->PortCfg.AssocInfo.RequestFixedIEs.Capabilities = CapabilityInfo; - pAd->PortCfg.AssocInfo.RequestFixedIEs.ListenInterval = ListenIntv; - memcpy(pAd->PortCfg.AssocInfo.RequestFixedIEs.CurrentAPAddress, &AssocHdr, sizeof(NDIS_802_11_MAC_ADDRESS)); - pAd->PortCfg.AssocInfo.OffsetRequestIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION); // No request Variables IEs - - // First add SSID - VarIesOffset = 0; - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &SsidIe, 1); - VarIesOffset += 1; - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &pAd->PortCfg.SsidLen, 1); - VarIesOffset += 1; - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, pAd->PortCfg.Ssid, pAd->PortCfg.SsidLen); - VarIesOffset += pAd->PortCfg.SsidLen; - - // Second add Supported rates - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &RateIe, 1); - VarIesOffset += 1; - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &pAd->PortCfg.SupportedRatesLen, 1); - VarIesOffset += 1; - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, pAd->PortCfg.SupportedRates, pAd->PortCfg.SupportedRatesLen); - VarIesOffset += pAd->PortCfg.SupportedRatesLen; - // End Add by James - - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - Send ASSOC request...\n"); - MgtMacHeaderInit(pAd, &AssocHdr, SUBTYPE_ASSOC_REQ, 0, &ApAddr, &ApAddr); - - // Build basic frame first - MakeOutgoingFrame(OutBuffer, &FrameLen, - sizeof(MACHDR), &AssocHdr, - 2, &CapabilityInfo, - 2, &ListenIntv, - 1, &SsidIe, - 1, &pAd->Mlme.SyncAux.SsidLen, - pAd->PortCfg.SsidLen, pAd->Mlme.SyncAux.Ssid, - 1, &RateIe, - 1, &pAd->PortCfg.SupRateLen, - pAd->PortCfg.SupRateLen, pAd->PortCfg.SupRate, - END_OF_ARGS); - if (pAd->PortCfg.ExtRateLen != 0) - { - MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, - 1, &ExtRateIe, - 1, &pAd->PortCfg.ExtRateLen, - pAd->PortCfg.ExtRateLen, pAd->PortCfg.ExtRate, - END_OF_ARGS); - FrameLen += tmp; - } - - if ((pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPA) && (pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled)) - { - MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, - 1, &WpaIe, - 1, &CipherSuiteWpaTkipLen, - CipherSuiteWpaTkipLen, &CipherSuiteWpaTkip[0], - END_OF_ARGS); - FrameLen += tmp; - - // Add by James 03/06/27 - // Third add RSN - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &WpaIe, 1); - VarIesOffset += 1; - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &CipherSuiteWpaTkipLen, 1); - VarIesOffset += 1; - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, CipherSuiteWpaTkip, CipherSuiteWpaTkipLen); - VarIesOffset += CipherSuiteWpaTkipLen; - - // Set Variable IEs Length - pAd->PortCfg.ReqVarIELen = VarIesOffset; - pAd->PortCfg.AssocInfo.RequestIELength = VarIesOffset; - - // OffsetResponseIEs follow ReqVarIE - pAd->PortCfg.AssocInfo.OffsetResponseIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION) + pAd->PortCfg.ReqVarIELen; - // End Add by James - } - - else if ((pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPA) && (pAd->PortCfg.WepStatus == Ndis802_11Encryption3Enabled)) - { - MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, - 1, &WpaIe, - 1, &CipherSuiteWpaAesLen, - CipherSuiteWpaAesLen, &CipherSuiteWpaAes[0], - END_OF_ARGS); - FrameLen += tmp; - - // Add by James 03/06/27 - // Third add RSN - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &WpaIe, 1); - VarIesOffset += 1; - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &CipherSuiteWpaAesLen, 1); - VarIesOffset += 1; - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, CipherSuiteWpaAes, CipherSuiteWpaAesLen); - VarIesOffset += CipherSuiteWpaAesLen; - - // Set Variable IEs Length - pAd->PortCfg.ReqVarIELen = VarIesOffset; - pAd->PortCfg.AssocInfo.RequestIELength = VarIesOffset; - - // OffsetResponseIEs follow ReqVarIE - pAd->PortCfg.AssocInfo.OffsetResponseIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION) + pAd->PortCfg.ReqVarIELen; - // End Add by James - } - else if ((pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPAPSK) && (pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled)) - { - MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, - 1, &WpaIe, - 1, &CipherSuiteWpaPskTkipLen, - CipherSuiteWpaPskTkipLen, &CipherSuiteWpaPskTkip[0], - END_OF_ARGS); - FrameLen += tmp; - - // Add by James 03/06/27 - // Third add RSN - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &WpaIe, 1); - VarIesOffset += 1; - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &CipherSuiteWpaPskTkipLen, 1); - VarIesOffset += 1; - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, CipherSuiteWpaPskTkip, CipherSuiteWpaPskTkipLen); - VarIesOffset += CipherSuiteWpaPskTkipLen; - - // Set Variable IEs Length - pAd->PortCfg.ReqVarIELen = VarIesOffset; - pAd->PortCfg.AssocInfo.RequestIELength = VarIesOffset; - - // OffsetResponseIEs follow ReqVarIE - pAd->PortCfg.AssocInfo.OffsetResponseIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION) + pAd->PortCfg.ReqVarIELen; - // End Add by James - } - else if ((pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPAPSK) && (pAd->PortCfg.WepStatus == Ndis802_11Encryption3Enabled)) - { - MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, - 1, &WpaIe, - 1, &CipherSuiteWpaPskAesLen, - CipherSuiteWpaPskAesLen, &CipherSuiteWpaPskAes[0], - END_OF_ARGS); - FrameLen += tmp; - - // Add by James 03/06/27 - // Third add RSN - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &WpaIe, 1); - VarIesOffset += 1; - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &CipherSuiteWpaPskAesLen, 1); - VarIesOffset += 1; - memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, CipherSuiteWpaPskAes, CipherSuiteWpaPskAesLen); - VarIesOffset += CipherSuiteWpaPskAesLen; - - // Set Variable IEs Length - pAd->PortCfg.ReqVarIELen = VarIesOffset; - pAd->PortCfg.AssocInfo.RequestIELength = VarIesOffset; - - // OffsetResponseIEs follow ReqVarIE - pAd->PortCfg.AssocInfo.OffsetResponseIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION) + pAd->PortCfg.ReqVarIELen; - // End Add by James - } - else - { - // Add by James 03/06/27 - // Set Variable IEs Length - pAd->PortCfg.ReqVarIELen = VarIesOffset; - pAd->PortCfg.AssocInfo.RequestIELength = VarIesOffset; - - // OffsetResponseIEs follow ReqVarIE - pAd->PortCfg.AssocInfo.OffsetResponseIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION) + pAd->PortCfg.ReqVarIELen; - // End Add by James - } - MiniportMMRequest(pAd, OutBuffer, FrameLen); - - RTMPSetTimer(pAd, &pAd->Mlme.AssocAux.AssocTimer, Timeout); - pAd->Mlme.AssocMachine.CurrState = ASSOC_WAIT_RSP; - } - else - { - DBGPRINT(RT_DEBUG_TRACE,"ASSOC - MlmeAssocReqAction() sanity check failed. BUG!!!!!! \n"); - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_ASSOC_CONF, MLME_INVALID_FORMAT); - } - -} - -/* - ========================================================================== - Description: - mlme reassoc req handling procedure - Parameters: - Elem - - Pre: - -# SSID (Adapter->PortCfg.ssid[]) - -# BSSID (AP address, Adapter->PortCfg.bssid) - -# Supported rates (Adapter->PortCfg.supported_rates[]) - -# Supported rates length (Adapter->PortCfg.supported_rates_len) - -# Tx power (Adapter->PortCfg.tx_power) - ========================================================================== - */ -VOID MlmeReassocReqAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MACADDR ApAddr; - MACHDR ReassocHdr; - UCHAR SsidIe = IE_SSID, RateIe = IE_SUPP_RATES, ExtRateIe = IE_EXT_SUPP_RATES; - USHORT CapabilityInfo, ListenIntv; - ULONG Timeout; - ULONG FrameLen = 0; - NDIS_STATUS NStatus; - ULONG tmp; - UCHAR *OutBuffer = NULL; - - // Block all authentication request durning WPA block period - if (pAd->PortCfg.bBlockAssoc == TRUE) - { - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - Block ReAssoc request durning WPA block period!\n"); - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_ASSOC_CONF, MLME_STATE_MACHINE_REJECT); - } - // the parameters are the same as the association - else if(MlmeAssocReqSanity(pAd, Elem->Msg, Elem->MsgLen, &ApAddr, &CapabilityInfo, &Timeout, &ListenIntv)) - { - RTMPCancelTimer(&pAd->Mlme.AssocAux.ReassocTimer); - - NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if(NStatus != NDIS_STATUS_SUCCESS) - { - DBGPRINT(RT_DEBUG_TRACE,"ASSOC - MlmeReassocReqAction() allocate memory failed \n"); - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_REASSOC_CONF, MLME_FAIL_NO_RESOURCE); - return; - } - - // Mask out unnecessary capability information - CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; // pAd->PortCfg.SupportedCapabilityInfo; - pAd->Mlme.AssocAux.CapabilityInfo = CapabilityInfo; - COPY_MAC_ADDR(&pAd->Mlme.AssocAux.Addr, &ApAddr); - pAd->Mlme.AssocAux.ListenIntv = ListenIntv; - - // make frame, use bssid as the AP address?? - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - Send RE-ASSOC request...\n"); - MgtMacHeaderInit(pAd, &ReassocHdr, SUBTYPE_REASSOC_REQ, 0, &ApAddr, &ApAddr); - MakeOutgoingFrame(OutBuffer, &FrameLen, - sizeof(MACHDR), &ReassocHdr, - 2, &CapabilityInfo, - 2, &ListenIntv, - ETH_ALEN, &pAd->PortCfg.Bssid, - 1, &SsidIe, - 1, &pAd->PortCfg.SsidLen, - pAd->PortCfg.SsidLen, pAd->PortCfg.Ssid, - 1, &RateIe, - 1, &pAd->PortCfg.SupRateLen, - pAd->PortCfg.SupRateLen, pAd->PortCfg.SupRate, - END_OF_ARGS); - if (pAd->PortCfg.ExtRateLen != 0) - { - MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, - 1, &ExtRateIe, - 1, &pAd->PortCfg.ExtRateLen, - pAd->PortCfg.ExtRateLen, pAd->PortCfg.ExtRate, - END_OF_ARGS); - FrameLen += tmp; - } - MiniportMMRequest(pAd, OutBuffer, FrameLen); - - RTMPSetTimer(pAd, &pAd->Mlme.AssocAux.ReassocTimer, Timeout); /* in mSec */ - pAd->Mlme.AssocMachine.CurrState = REASSOC_WAIT_RSP; - } - else - { - DBGPRINT(RT_DEBUG_TRACE,"ASSOC - MlmeReassocReqAction() sanity check failed. BUG!!!! \n"); - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_REASSOC_CONF, MLME_INVALID_FORMAT); - } -} - -/* - ========================================================================== - Description: - Upper layer issues disassoc request - Parameters: - Elem - - ========================================================================== - */ -VOID MlmeDisassocReqAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MLME_DISASSOC_REQ_STRUCT *DisassocReq; - MACHDR DisassocHdr; - CHAR *OutBuffer = NULL; - ULONG FrameLen = 0; - NDIS_STATUS NStatus; - ULONG Timeout = 0; - - // skip sanity check - DisassocReq = (MLME_DISASSOC_REQ_STRUCT *)(Elem->Msg); - - NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if (NStatus != NDIS_STATUS_SUCCESS) - { - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - MlmeDisassocReqAction() allocate memory failed\n"); - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_DISASSOC_CONF, MLME_FAIL_NO_RESOURCE); - return; - } - - RTMPCancelTimer(&pAd->Mlme.AssocAux.DisassocTimer); - - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - Send DISASSOC request\n"); - MgtMacHeaderInit(pAd, &DisassocHdr, SUBTYPE_DISASSOC, 0, &pAd->PortCfg.Bssid, &pAd->PortCfg.Bssid); - MakeOutgoingFrame(OutBuffer, &FrameLen, - sizeof(MACHDR), &DisassocHdr, - 2, &DisassocReq->Reason, - END_OF_ARGS); - MiniportMMRequest(pAd, OutBuffer, FrameLen); - memset(&(pAd->PortCfg.Bssid), 0, ETH_ALEN); - - pAd->PortCfg.DisassocReason = REASON_DISASSOC_STA_LEAVING; - COPY_MAC_ADDR(&pAd->PortCfg.DisassocSta, &DisassocReq->Addr); - - RTMPSetTimer(pAd, &pAd->Mlme.AssocAux.DisassocTimer, Timeout); /* in mSec */ - pAd->Mlme.AssocMachine.CurrState = DISASSOC_WAIT_RSP; -} - -/* - ========================================================================== - Description: - peer sends assoc rsp back - Parameters: - Elme - MLME message containing the received frame - ========================================================================== - */ -VOID PeerAssocRspAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - USHORT CapabilityInfo, Status, Aid; - UCHAR Rates[MAX_LEN_OF_SUPPORTED_RATES], RatesLen; - MACADDR Addr2; - BOOLEAN ExtendedRateIeExist; - - if (PeerAssocRspSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, &CapabilityInfo, &Status, &Aid, Rates, &RatesLen, &ExtendedRateIeExist)) - { - // The frame is for me ? - if(MAC_ADDR_EQUAL(&Addr2, &pAd->Mlme.AssocAux.Addr)) - { - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - receive ASSOC_RSP to me (status=%d)\n", Status); - RTMPCancelTimer(&pAd->Mlme.AssocAux.AssocTimer); - if(Status == MLME_SUCCESS) - { - // go to procedure listed on page 376 - // Mask out unnecessary capability information - CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; // pAd->PortCfg.SupportedCapabilityInfo; - AssocPostProc(pAd, &Addr2, CapabilityInfo, Aid, Rates, RatesLen, ExtendedRateIeExist); - } - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_ASSOC_CONF, Status); - } - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - PeerAssocRspAction() sanity check fail\n"); - } -} - -/* - ========================================================================== - Description: - peer sends reassoc rsp - Parametrs: - Elem - MLME message cntaining the received frame - ========================================================================== - */ -VOID PeerReassocRspAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - USHORT CapabilityInfo; - USHORT Status; - USHORT Aid; - UCHAR Rates[MAX_LEN_OF_SUPPORTED_RATES]; - UCHAR RatesLen; - MACADDR Addr2; - BOOLEAN ExtendedRateIeExist; - - if(PeerAssocRspSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, &CapabilityInfo, &Status, &Aid, Rates, &RatesLen, &ExtendedRateIeExist)) - { - if(MAC_ADDR_EQUAL(&Addr2, &pAd->Mlme.AssocAux.Addr)) // The frame is for me ? - { - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - receive REASSOC_RSP to me (status=%d)\n", Status); - RTMPCancelTimer(&pAd->Mlme.AssocAux.ReassocTimer); - - if(Status == MLME_SUCCESS) - { - // Mask out unnecessary capability information - CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; // pAd->PortCfg.SupportedCapabilityInfo; - // go to procedure listed on page 376 - AssocPostProc(pAd, &Addr2, CapabilityInfo, Aid, Rates, RatesLen, ExtendedRateIeExist); - } - - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_REASSOC_CONF, Status); - } - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - PeerReassocRspAction() sanity check fail\n"); - } -} - -/* - ========================================================================== - Description: - procedures on IEEE 802.11/1999 p.376 - Parametrs: - ========================================================================== - */ -VOID AssocPostProc( - IN PRTMP_ADAPTER pAd, - IN PMACADDR Addr2, - IN USHORT CapabilityInfo, - IN USHORT Aid, - IN UCHAR Rates[], - IN UCHAR RatesLen, - IN BOOLEAN ExtendedRateIeExist) -{ - ULONG Idx; - UCHAR RateIe = IE_SUPP_RATES; - UCHAR VarIesOffset; - - // 2003/12/11 - skip the following because experiment show that we can not - // trust the "privacy" bit in AssocRsp. We can only trust "Privacy" bit specified in - // BEACON and ProbeRsp. - // pAd->PortCfg.PrivacyInvoked = CAP_IS_PRIVACY_ON(CapabilityInfo); - - pAd->PortCfg.Aid = Aid; - memcpy(pAd->PortCfg.SupportedRates, Rates, RatesLen); - pAd->PortCfg.SupportedRatesLen = RatesLen; - COPY_MAC_ADDR(&pAd->PortCfg.Bssid, Addr2); - AsicSetBssid(pAd, &pAd->PortCfg.Bssid); - - // set listen interval - pAd->PortCfg.DefaultListenCount = pAd->Mlme.AssocAux.ListenIntv; -// pAd->PortCfg.CurrListenCount = pAd->Mlme.AssocAux.ListenIntv; - - // Set New WPA information - Idx = BssTableSearch(&pAd->PortCfg.BssTab, Addr2); - if (Idx == BSS_NOT_FOUND) - { - DBGPRINT(RT_DEBUG_ERROR, "ASSOC - Can't find BSS after receiving Assoc response\n"); - } - else - { - // Mod by James to fix OID_802_11_ASSOCIATION_INFORMATION - pAd->PortCfg.AssocInfo.Length = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION); //+ sizeof(NDIS_802_11_FIXED_IEs); // Filled in assoc request - pAd->PortCfg.AssocInfo.AvailableResponseFixedIEs = - NDIS_802_11_AI_RESFI_CAPABILITIES | NDIS_802_11_AI_RESFI_STATUSCODE | NDIS_802_11_AI_RESFI_ASSOCIATIONID; - pAd->PortCfg.AssocInfo.ResponseFixedIEs.Capabilities = CapabilityInfo; - pAd->PortCfg.AssocInfo.ResponseFixedIEs.StatusCode = MLME_SUCCESS; // Should be success, add failed later - pAd->PortCfg.AssocInfo.ResponseFixedIEs.AssociationId = Aid; - - // Copy BSS VarIEs to PortCfg associnfo structure. - // First add Supported rates - VarIesOffset = 0; - memcpy(pAd->PortCfg.ResVarIEs + VarIesOffset, &RateIe, 1); - VarIesOffset += 1; - memcpy(pAd->PortCfg.ResVarIEs + VarIesOffset, &RatesLen, 1); - VarIesOffset += 1; - memcpy(pAd->PortCfg.ResVarIEs + VarIesOffset, Rates, RatesLen); - VarIesOffset += RatesLen; - - // Second add RSN - memcpy(pAd->PortCfg.ResVarIEs + VarIesOffset, pAd->PortCfg.BssTab.BssEntry[Idx].VarIEs, pAd->PortCfg.BssTab.BssEntry[Idx].VarIELen); - VarIesOffset += pAd->PortCfg.BssTab.BssEntry[Idx].VarIELen; - - // Set Variable IEs Length - pAd->PortCfg.ResVarIELen = VarIesOffset; - pAd->PortCfg.AssocInfo.ResponseIELength = VarIesOffset; - // End Mod by James - } -} - -/* - ========================================================================== - Description: - left part of IEEE 802.11/1999 p.374 - Parameters: - Elem - MLME message containing the received frame - ========================================================================== - */ -VOID PeerDisassocAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - MACADDR Addr2; - USHORT Reason; - - if(PeerDisassocSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, &Reason)) - { - if (INFRA_ON(pAd) && MAC_ADDR_EQUAL(&pAd->PortCfg.Bssid, &Addr2)) - { - LinkDown(pAd); - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - - pAd->RalinkCounters.BeenDisassociatedCount ++; - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - Disassociated by AP, Auto Recovery attempt #%d\n", pAd->RalinkCounters.BeenDisassociatedCount); - MlmeAutoReconnectLastSSID(pAd); - } - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - PeerDisassocAction() sanity check fail\n"); - } -} - -/* - ========================================================================== - Description: - what the state machine will do after assoc timeout - Parameters: - Elme - - ========================================================================== - */ -VOID AssocTimeoutAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - AssocTimeoutAction\n"); - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_ASSOC_CONF, MLME_REJ_TIMEOUT); -} - -/* - ========================================================================== - Description: - what the state machine will do after reassoc timeout - ========================================================================== - */ -VOID ReassocTimeoutAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - ReassocTimeoutAction\n"); - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_REASSOC_CONF, MLME_REJ_TIMEOUT); -} - -/* - ========================================================================== - Description: - what the state machine will do after disassoc timeout - ========================================================================== - */ -VOID DisassocTimeoutAction( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - DisassocTimeoutAction\n"); - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_DISASSOC_CONF, MLME_SUCCESS); -} - -VOID InvalidStateWhenAssoc( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - InvalidStateWhenAssoc(state=%d), reset ASSOC state machine\n", - pAd->Mlme.AssocMachine.CurrState); - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_ASSOC_CONF, MLME_STATE_MACHINE_REJECT); -} - -VOID InvalidStateWhenReassoc( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - InvalidStateWhenReassoc(state=%d), reset ASSOC state machine\n", - pAd->Mlme.AssocMachine.CurrState); - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_REASSOC_CONF, MLME_STATE_MACHINE_REJECT); -} - -VOID InvalidStateWhenDisassociate( - IN PRTMP_ADAPTER pAd, - IN MLME_QUEUE_ELEM *Elem) -{ - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - InvalidStateWhenDisassoc(state=%d), reset ASSOC state machine\n", - pAd->Mlme.AssocMachine.CurrState); - pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; - MlmeCntlConfirm(pAd, MT2_DISASSOC_CONF, MLME_STATE_MACHINE_REJECT); -} - -/* - ========================================================================== - Description: - right part of IEEE 802.11/1999 page 374 - Note: - This event should never cause ASSOC state machine perform state - transition, and has no relationship with CNTL machine. So we separate - this routine as a service outside of ASSOC state transition table. - ========================================================================== - */ -VOID Cls3errAction( - IN PRTMP_ADAPTER pAd, - IN PMACADDR pAddr) -{ - MACHDR DisassocHdr; - CHAR *OutBuffer = NULL; - ULONG FrameLen = 0; - NDIS_STATUS NStatus; - USHORT Reason = REASON_CLS3ERR; - - NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if (NStatus != NDIS_STATUS_SUCCESS) - return; - - DBGPRINT(RT_DEBUG_TRACE, "ASSOC - Class 3 Error, Send DISASSOC frame\n"); - MgtMacHeaderInit(pAd, &DisassocHdr, SUBTYPE_DISASSOC, 0, pAddr, &pAd->PortCfg.Bssid); - MakeOutgoingFrame(OutBuffer, &FrameLen, - sizeof(MACHDR), &DisassocHdr, - 2, &Reason, - END_OF_ARGS); - MiniportMMRequest(pAd, OutBuffer, FrameLen); - - pAd->PortCfg.DisassocReason = REASON_CLS3ERR; - COPY_MAC_ADDR(&pAd->PortCfg.DisassocSta, pAddr); -} - - +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: assoc.c + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * MarkW 8th Dec 04 Baseline code + * MarkW 5th Jun 05 Fix no-SSID broadcasting assoc. + ***************************************************************************/ + +#include "rt_config.h" + +UCHAR CipherSuiteWpaTkip[] = { + 0x00, 0x50, 0xf2, 0x01, // oui + 0x01, 0x00, // Version + 0x00, 0x50, 0xf2, 0x02, // Multicast + 0x01, 0x00, // Number of unicast + 0x00, 0x50, 0xf2, 0x02, // unicast + 0x01, 0x00, // number of authentication method + 0x00, 0x50, 0xf2, 0x01 // authentication + }; +UCHAR CipherSuiteWpaTkipLen = (sizeof(CipherSuiteWpaTkip) / sizeof(UCHAR)); + +UCHAR CipherSuiteWpaAes[] = { + 0x00, 0x50, 0xf2, 0x01, // oui + 0x01, 0x00, // Version + 0x00, 0x50, 0xf2, 0x04, // Multicast + 0x01, 0x00, // Number of unicast + 0x00, 0x50, 0xf2, 0x04, // unicast + 0x01, 0x00, // number of authentication method + 0x00, 0x50, 0xf2, 0x01 // authentication + }; +UCHAR CipherSuiteWpaAesLen = (sizeof(CipherSuiteWpaAes) / sizeof(UCHAR)); + +UCHAR CipherSuiteWpaPskTkip[] = { + 0x00, 0x50, 0xf2, 0x01, // oui + 0x01, 0x00, // Version + 0x00, 0x50, 0xf2, 0x02, // Multicast + 0x01, 0x00, // Number of unicast + 0x00, 0x50, 0xf2, 0x02, // unicast + 0x01, 0x00, // number of authentication method + 0x00, 0x50, 0xf2, 0x02 // authentication + }; +UCHAR CipherSuiteWpaPskTkipLen = (sizeof(CipherSuiteWpaPskTkip) / sizeof(UCHAR)); + +UCHAR CipherSuiteWpaPskAes[] = { + 0x00, 0x50, 0xf2, 0x01, // oui + 0x01, 0x00, // Version + 0x00, 0x50, 0xf2, 0x04, // Multicast + 0x01, 0x00, // Number of unicast + 0x00, 0x50, 0xf2, 0x04, // unicast + 0x01, 0x00, // number of authentication method + 0x00, 0x50, 0xf2, 0x02 // authentication + }; +UCHAR CipherSuiteWpaPskAesLen = (sizeof(CipherSuiteWpaPskAes) / sizeof(UCHAR)); + +/* + ========================================================================== + Description: + association state machine init, including state transition and timer init + Parameters: + S - pointer to the association state machine + Note: + The state machine looks like the following + + ASSOC_IDLE ASSOC_WAIT_RSP REASSOC_WAIT_RSP DISASSOC_WAIT_RSP + MT2_MLME_ASSOC_REQ mlme_assoc_req_action invalid_state_when_assoc invalid_state_when_assoc invalid_state_when_assoc + MT2_MLME_REASSOC_REQ mlme_reassoc_req_action invalid_state_when_reassoc invalid_state_when_reassoc invalid_state_when_reassoc + MT2_MLME_DISASSOC_REQ mlme_disassoc_req_action mlme_disassoc_req_action mlme_disassoc_req_action mlme_disassoc_req_action + MT2_PEER_DISASSOC_REQ peer_disassoc_action peer_disassoc_action peer_disassoc_action peer_disassoc_action + MT2_PEER_ASSOC_REQ drop drop drop drop + MT2_PEER_ASSOC_RSP drop peer_assoc_rsp_action drop drop + MT2_PEER_REASSOC_REQ drop drop drop drop + MT2_PEER_REASSOC_RSP drop drop peer_reassoc_rsp_action drop + MT2_CLS3ERR cls3err_action cls3err_action cls3err_action cls3err_action + MT2_ASSOC_TIMEOUT timer_nop assoc_timeout_action timer_nop timer_nop + MT2_REASSOC_TIMEOUT timer_nop timer_nop reassoc_timeout_action timer_nop + MT2_DISASSOC_TIMEOUT timer_nop timer_nop timer_nop disassoc_timeout_action + ========================================================================== + */ +VOID AssocStateMachineInit( + IN PRTMP_ADAPTER pAd, + IN STATE_MACHINE *S, + OUT STATE_MACHINE_FUNC Trans[]) +{ + StateMachineInit(S, (STATE_MACHINE_FUNC*)Trans, MAX_ASSOC_STATE, MAX_ASSOC_MSG, (STATE_MACHINE_FUNC)Drop, ASSOC_IDLE, ASSOC_MACHINE_BASE); + + // first column + StateMachineSetAction(S, ASSOC_IDLE, MT2_MLME_ASSOC_REQ, (STATE_MACHINE_FUNC)MlmeAssocReqAction); + StateMachineSetAction(S, ASSOC_IDLE, MT2_MLME_REASSOC_REQ, (STATE_MACHINE_FUNC)MlmeReassocReqAction); + StateMachineSetAction(S, ASSOC_IDLE, MT2_MLME_DISASSOC_REQ, (STATE_MACHINE_FUNC)MlmeDisassocReqAction); + StateMachineSetAction(S, ASSOC_IDLE, MT2_PEER_DISASSOC_REQ, (STATE_MACHINE_FUNC)PeerDisassocAction); +// StateMachineSetAction(S, ASSOC_IDLE, MT2_CLS3ERR, (STATE_MACHINE_FUNC)Cls3errAction); + + // second column + StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_MLME_ASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAssoc); + StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_MLME_REASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenReassoc); + StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_MLME_DISASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenDisassociate); + StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_PEER_DISASSOC_REQ, (STATE_MACHINE_FUNC)PeerDisassocAction); + StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_PEER_ASSOC_RSP, (STATE_MACHINE_FUNC)PeerAssocRspAction); +// StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_CLS3ERR, (STATE_MACHINE_FUNC)Cls3errAction); + StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_ASSOC_TIMEOUT, (STATE_MACHINE_FUNC)AssocTimeoutAction); + + // third column + StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_MLME_ASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAssoc); + StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_MLME_REASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenReassoc); + StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_MLME_DISASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenDisassociate); + StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_PEER_DISASSOC_REQ, (STATE_MACHINE_FUNC)PeerDisassocAction); + StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_PEER_REASSOC_RSP, (STATE_MACHINE_FUNC)PeerReassocRspAction); +// StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_CLS3ERR, (STATE_MACHINE_FUNC)Cls3errAction); + StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_REASSOC_TIMEOUT, (STATE_MACHINE_FUNC)ReassocTimeoutAction); + + // fourth column + StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_MLME_ASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAssoc); + StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_MLME_REASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenReassoc); + StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_MLME_DISASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenDisassociate); + StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_PEER_DISASSOC_REQ, (STATE_MACHINE_FUNC)PeerDisassocAction); +// StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_CLS3ERR, (STATE_MACHINE_FUNC)Cls3errAction); + StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_DISASSOC_TIMEOUT, (STATE_MACHINE_FUNC)DisassocTimeoutAction); + + // initialize the timer + RTMPInitTimer(pAd, &pAd->Mlme.AssocAux.AssocTimer, AssocTimeout); + RTMPInitTimer(pAd, &pAd->Mlme.AssocAux.ReassocTimer, ReassocTimeout); + RTMPInitTimer(pAd, &pAd->Mlme.AssocAux.DisassocTimer, DisassocTimeout); +} + +/* + ========================================================================== + Description: + Association timeout procedure. After association timeout, this function + will be called and it will put a message into the MLME queue + Parameters: + Standard timer parameters + ========================================================================== + */ +VOID AssocTimeout( + IN unsigned long data) +{ + RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; + DBGPRINT(RT_DEBUG_TRACE,"ASSOC - enqueue MT2_ASSOC_TIMEOUT \n"); + MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_ASSOC_TIMEOUT, 0, NULL); + MlmeHandler(pAd); +} + +/* + ========================================================================== + Description: + Reassociation timeout procedure. After reassociation timeout, this + function will be called and put a message into the MLME queue + Parameters: + Standard timer parameters + ========================================================================== + */ +VOID ReassocTimeout( + IN unsigned long data) +{ + RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; + DBGPRINT(RT_DEBUG_TRACE,"ASSOC - enqueue MT2_REASSOC_TIMEOUT \n"); + MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_REASSOC_TIMEOUT, 0, NULL); + MlmeHandler(pAd); +} + +/* + ========================================================================== + Description: + Disassociation timeout procedure. After disassociation timeout, this + function will be called and put a message into the MLME queue + Parameters: + Standard timer parameters + ========================================================================== + */ +VOID DisassocTimeout( + IN unsigned long data) +{ + RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)data; + DBGPRINT(RT_DEBUG_TRACE,"ASSOC - enqueue MT2_DISASSOC_TIMEOUT \n"); + MlmeEnqueue(&pAd->Mlme.Queue, ASSOC_STATE_MACHINE, MT2_DISASSOC_TIMEOUT, 0, NULL); + MlmeHandler(pAd); +} + +/* + ========================================================================== + Description: + mlme assoc req handling procedure + Parameters: + Adapter - Adapter pointer + Elem - MLME Queue Element + Pre: + the station has been authenticated and the following information is stored in the config + -# SSID + -# supported rates and their length + -# listen interval (Adapter->PortCfg.default_listen_count) + -# Transmit power (Adapter->PortCfg.tx_power) + Post : + -# An association request frame is generated and sent to the air + -# Association timer starts + -# Association state -> ASSOC_WAIT_RSP + ========================================================================== + */ +VOID MlmeAssocReqAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MACADDR ApAddr; + MACHDR AssocHdr; + UCHAR SsidIe = IE_SSID, RateIe = IE_SUPP_RATES,WpaIe = IE_WPA, ExtRateIe = IE_EXT_SUPP_RATES; + USHORT ListenIntv; + ULONG Timeout; + USHORT CapabilityInfo; + UCHAR *OutBuffer = NULL; + NDIS_STATUS NStatus; + ULONG FrameLen = 0; + ULONG tmp; + UCHAR VarIesOffset; + + // Block all authentication request durning WPA block period + if (pAd->PortCfg.bBlockAssoc == TRUE) + { + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - Block Assoc request durning WPA block period!\n"); + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_ASSOC_CONF, MLME_STATE_MACHINE_REJECT); + } + // check sanity first + else if (MlmeAssocReqSanity(pAd, Elem->Msg, Elem->MsgLen, &ApAddr, &CapabilityInfo, &Timeout, &ListenIntv)) + { + RTMPCancelTimer(&pAd->Mlme.AssocAux.AssocTimer); + COPY_MAC_ADDR(&pAd->Mlme.AssocAux.Addr, &ApAddr); + // Mask out unnecessary capability information + CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; // pAd->PortCfg.SupportedCapabilityInfo; + pAd->Mlme.AssocAux.CapabilityInfo = CapabilityInfo; + pAd->Mlme.AssocAux.ListenIntv = ListenIntv; + + NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if (NStatus != NDIS_STATUS_SUCCESS) + { + DBGPRINT(RT_DEBUG_TRACE,"ASSOC - MlmeAssocReqAction() allocate memory failed \n"); + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_ASSOC_CONF, MLME_FAIL_NO_RESOURCE); + return; + } + + // Add by James 03/06/27 + pAd->PortCfg.AssocInfo.Length = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION); //+ sizeof(NDIS_802_11_FIXED_IEs); // Filled in assoc request + pAd->PortCfg.AssocInfo.AvailableRequestFixedIEs = + NDIS_802_11_AI_REQFI_CAPABILITIES | NDIS_802_11_AI_REQFI_LISTENINTERVAL | NDIS_802_11_AI_REQFI_CURRENTAPADDRESS; + pAd->PortCfg.AssocInfo.RequestFixedIEs.Capabilities = CapabilityInfo; + pAd->PortCfg.AssocInfo.RequestFixedIEs.ListenInterval = ListenIntv; + memcpy(pAd->PortCfg.AssocInfo.RequestFixedIEs.CurrentAPAddress, &AssocHdr, sizeof(NDIS_802_11_MAC_ADDRESS)); + pAd->PortCfg.AssocInfo.OffsetRequestIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION); // No request Variables IEs + + // First add SSID + VarIesOffset = 0; + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &SsidIe, 1); + VarIesOffset += 1; + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &pAd->PortCfg.SsidLen, 1); + VarIesOffset += 1; + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, pAd->PortCfg.Ssid, pAd->PortCfg.SsidLen); + VarIesOffset += pAd->PortCfg.SsidLen; + + // Second add Supported rates + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &RateIe, 1); + VarIesOffset += 1; + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &pAd->PortCfg.SupportedRatesLen, 1); + VarIesOffset += 1; + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, pAd->PortCfg.SupportedRates, pAd->PortCfg.SupportedRatesLen); + VarIesOffset += pAd->PortCfg.SupportedRatesLen; + // End Add by James + + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - Send ASSOC request...\n"); + MgtMacHeaderInit(pAd, &AssocHdr, SUBTYPE_ASSOC_REQ, 0, &ApAddr, &ApAddr); + + // Build basic frame first + MakeOutgoingFrame(OutBuffer, &FrameLen, + sizeof(MACHDR), &AssocHdr, + 2, &CapabilityInfo, + 2, &ListenIntv, + 1, &SsidIe, + 1, &pAd->Mlme.SyncAux.SsidLen, + pAd->Mlme.SyncAux.SsidLen, pAd->Mlme.SyncAux.Ssid, + 1, &RateIe, + 1, &pAd->PortCfg.SupRateLen, + pAd->PortCfg.SupRateLen, pAd->PortCfg.SupRate, + END_OF_ARGS); + if (pAd->PortCfg.ExtRateLen != 0) + { + MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, + 1, &ExtRateIe, + 1, &pAd->PortCfg.ExtRateLen, + pAd->PortCfg.ExtRateLen, pAd->PortCfg.ExtRate, + END_OF_ARGS); + FrameLen += tmp; + } + + if ((pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPA) && (pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled)) + { + MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, + 1, &WpaIe, + 1, &CipherSuiteWpaTkipLen, + CipherSuiteWpaTkipLen, &CipherSuiteWpaTkip[0], + END_OF_ARGS); + FrameLen += tmp; + + // Add by James 03/06/27 + // Third add RSN + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &WpaIe, 1); + VarIesOffset += 1; + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &CipherSuiteWpaTkipLen, 1); + VarIesOffset += 1; + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, CipherSuiteWpaTkip, CipherSuiteWpaTkipLen); + VarIesOffset += CipherSuiteWpaTkipLen; + + // Set Variable IEs Length + pAd->PortCfg.ReqVarIELen = VarIesOffset; + pAd->PortCfg.AssocInfo.RequestIELength = VarIesOffset; + + // OffsetResponseIEs follow ReqVarIE + pAd->PortCfg.AssocInfo.OffsetResponseIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION) + pAd->PortCfg.ReqVarIELen; + // End Add by James + } + + else if ((pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPA) && (pAd->PortCfg.WepStatus == Ndis802_11Encryption3Enabled)) + { + MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, + 1, &WpaIe, + 1, &CipherSuiteWpaAesLen, + CipherSuiteWpaAesLen, &CipherSuiteWpaAes[0], + END_OF_ARGS); + FrameLen += tmp; + + // Add by James 03/06/27 + // Third add RSN + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &WpaIe, 1); + VarIesOffset += 1; + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &CipherSuiteWpaAesLen, 1); + VarIesOffset += 1; + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, CipherSuiteWpaAes, CipherSuiteWpaAesLen); + VarIesOffset += CipherSuiteWpaAesLen; + + // Set Variable IEs Length + pAd->PortCfg.ReqVarIELen = VarIesOffset; + pAd->PortCfg.AssocInfo.RequestIELength = VarIesOffset; + + // OffsetResponseIEs follow ReqVarIE + pAd->PortCfg.AssocInfo.OffsetResponseIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION) + pAd->PortCfg.ReqVarIELen; + // End Add by James + } + else if ((pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPAPSK) && (pAd->PortCfg.WepStatus == Ndis802_11Encryption2Enabled)) + { + MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, + 1, &WpaIe, + 1, &CipherSuiteWpaPskTkipLen, + CipherSuiteWpaPskTkipLen, &CipherSuiteWpaPskTkip[0], + END_OF_ARGS); + FrameLen += tmp; + + // Add by James 03/06/27 + // Third add RSN + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &WpaIe, 1); + VarIesOffset += 1; + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &CipherSuiteWpaPskTkipLen, 1); + VarIesOffset += 1; + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, CipherSuiteWpaPskTkip, CipherSuiteWpaPskTkipLen); + VarIesOffset += CipherSuiteWpaPskTkipLen; + + // Set Variable IEs Length + pAd->PortCfg.ReqVarIELen = VarIesOffset; + pAd->PortCfg.AssocInfo.RequestIELength = VarIesOffset; + + // OffsetResponseIEs follow ReqVarIE + pAd->PortCfg.AssocInfo.OffsetResponseIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION) + pAd->PortCfg.ReqVarIELen; + // End Add by James + } + else if ((pAd->PortCfg.AuthMode == Ndis802_11AuthModeWPAPSK) && (pAd->PortCfg.WepStatus == Ndis802_11Encryption3Enabled)) + { + MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, + 1, &WpaIe, + 1, &CipherSuiteWpaPskAesLen, + CipherSuiteWpaPskAesLen, &CipherSuiteWpaPskAes[0], + END_OF_ARGS); + FrameLen += tmp; + + // Add by James 03/06/27 + // Third add RSN + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &WpaIe, 1); + VarIesOffset += 1; + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, &CipherSuiteWpaPskAesLen, 1); + VarIesOffset += 1; + memcpy(pAd->PortCfg.ReqVarIEs + VarIesOffset, CipherSuiteWpaPskAes, CipherSuiteWpaPskAesLen); + VarIesOffset += CipherSuiteWpaPskAesLen; + + // Set Variable IEs Length + pAd->PortCfg.ReqVarIELen = VarIesOffset; + pAd->PortCfg.AssocInfo.RequestIELength = VarIesOffset; + + // OffsetResponseIEs follow ReqVarIE + pAd->PortCfg.AssocInfo.OffsetResponseIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION) + pAd->PortCfg.ReqVarIELen; + // End Add by James + } + else + { + // Add by James 03/06/27 + // Set Variable IEs Length + pAd->PortCfg.ReqVarIELen = VarIesOffset; + pAd->PortCfg.AssocInfo.RequestIELength = VarIesOffset; + + // OffsetResponseIEs follow ReqVarIE + pAd->PortCfg.AssocInfo.OffsetResponseIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION) + pAd->PortCfg.ReqVarIELen; + // End Add by James + } + MiniportMMRequest(pAd, OutBuffer, FrameLen); + + RTMPSetTimer(pAd, &pAd->Mlme.AssocAux.AssocTimer, Timeout); + pAd->Mlme.AssocMachine.CurrState = ASSOC_WAIT_RSP; + } + else + { + DBGPRINT(RT_DEBUG_TRACE,"ASSOC - MlmeAssocReqAction() sanity check failed. BUG!!!!!! \n"); + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_ASSOC_CONF, MLME_INVALID_FORMAT); + } + +} + +/* + ========================================================================== + Description: + mlme reassoc req handling procedure + Parameters: + Elem - + Pre: + -# SSID (Adapter->PortCfg.ssid[]) + -# BSSID (AP address, Adapter->PortCfg.bssid) + -# Supported rates (Adapter->PortCfg.supported_rates[]) + -# Supported rates length (Adapter->PortCfg.supported_rates_len) + -# Tx power (Adapter->PortCfg.tx_power) + ========================================================================== + */ +VOID MlmeReassocReqAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MACADDR ApAddr; + MACHDR ReassocHdr; + UCHAR SsidIe = IE_SSID, RateIe = IE_SUPP_RATES, ExtRateIe = IE_EXT_SUPP_RATES; + USHORT CapabilityInfo, ListenIntv; + ULONG Timeout; + ULONG FrameLen = 0; + NDIS_STATUS NStatus; + ULONG tmp; + UCHAR *OutBuffer = NULL; + + // Block all authentication request durning WPA block period + if (pAd->PortCfg.bBlockAssoc == TRUE) + { + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - Block ReAssoc request durning WPA block period!\n"); + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_ASSOC_CONF, MLME_STATE_MACHINE_REJECT); + } + // the parameters are the same as the association + else if(MlmeAssocReqSanity(pAd, Elem->Msg, Elem->MsgLen, &ApAddr, &CapabilityInfo, &Timeout, &ListenIntv)) + { + RTMPCancelTimer(&pAd->Mlme.AssocAux.ReassocTimer); + + NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if(NStatus != NDIS_STATUS_SUCCESS) + { + DBGPRINT(RT_DEBUG_TRACE,"ASSOC - MlmeReassocReqAction() allocate memory failed \n"); + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_REASSOC_CONF, MLME_FAIL_NO_RESOURCE); + return; + } + + // Mask out unnecessary capability information + CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; // pAd->PortCfg.SupportedCapabilityInfo; + pAd->Mlme.AssocAux.CapabilityInfo = CapabilityInfo; + COPY_MAC_ADDR(&pAd->Mlme.AssocAux.Addr, &ApAddr); + pAd->Mlme.AssocAux.ListenIntv = ListenIntv; + + // make frame, use bssid as the AP address?? + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - Send RE-ASSOC request...\n"); + MgtMacHeaderInit(pAd, &ReassocHdr, SUBTYPE_REASSOC_REQ, 0, &ApAddr, &ApAddr); + MakeOutgoingFrame(OutBuffer, &FrameLen, + sizeof(MACHDR), &ReassocHdr, + 2, &CapabilityInfo, + 2, &ListenIntv, + ETH_ALEN, &pAd->PortCfg.Bssid, + 1, &SsidIe, + 1, &pAd->PortCfg.SsidLen, + pAd->PortCfg.SsidLen, pAd->PortCfg.Ssid, + 1, &RateIe, + 1, &pAd->PortCfg.SupRateLen, + pAd->PortCfg.SupRateLen, pAd->PortCfg.SupRate, + END_OF_ARGS); + if (pAd->PortCfg.ExtRateLen != 0) + { + MakeOutgoingFrame(OutBuffer + FrameLen, &tmp, + 1, &ExtRateIe, + 1, &pAd->PortCfg.ExtRateLen, + pAd->PortCfg.ExtRateLen, pAd->PortCfg.ExtRate, + END_OF_ARGS); + FrameLen += tmp; + } + MiniportMMRequest(pAd, OutBuffer, FrameLen); + + RTMPSetTimer(pAd, &pAd->Mlme.AssocAux.ReassocTimer, Timeout); /* in mSec */ + pAd->Mlme.AssocMachine.CurrState = REASSOC_WAIT_RSP; + } + else + { + DBGPRINT(RT_DEBUG_TRACE,"ASSOC - MlmeReassocReqAction() sanity check failed. BUG!!!! \n"); + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_REASSOC_CONF, MLME_INVALID_FORMAT); + } +} + +/* + ========================================================================== + Description: + Upper layer issues disassoc request + Parameters: + Elem - + ========================================================================== + */ +VOID MlmeDisassocReqAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MLME_DISASSOC_REQ_STRUCT *DisassocReq; + MACHDR DisassocHdr; + CHAR *OutBuffer = NULL; + ULONG FrameLen = 0; + NDIS_STATUS NStatus; + ULONG Timeout = 0; + + // skip sanity check + DisassocReq = (MLME_DISASSOC_REQ_STRUCT *)(Elem->Msg); + + NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if (NStatus != NDIS_STATUS_SUCCESS) + { + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - MlmeDisassocReqAction() allocate memory failed\n"); + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_DISASSOC_CONF, MLME_FAIL_NO_RESOURCE); + return; + } + + RTMPCancelTimer(&pAd->Mlme.AssocAux.DisassocTimer); + + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - Send DISASSOC request\n"); + MgtMacHeaderInit(pAd, &DisassocHdr, SUBTYPE_DISASSOC, 0, &pAd->PortCfg.Bssid, &pAd->PortCfg.Bssid); + MakeOutgoingFrame(OutBuffer, &FrameLen, + sizeof(MACHDR), &DisassocHdr, + 2, &DisassocReq->Reason, + END_OF_ARGS); + MiniportMMRequest(pAd, OutBuffer, FrameLen); + memset(&(pAd->PortCfg.Bssid), 0, ETH_ALEN); + + pAd->PortCfg.DisassocReason = REASON_DISASSOC_STA_LEAVING; + COPY_MAC_ADDR(&pAd->PortCfg.DisassocSta, &DisassocReq->Addr); + + RTMPSetTimer(pAd, &pAd->Mlme.AssocAux.DisassocTimer, Timeout); /* in mSec */ + pAd->Mlme.AssocMachine.CurrState = DISASSOC_WAIT_RSP; +} + +/* + ========================================================================== + Description: + peer sends assoc rsp back + Parameters: + Elme - MLME message containing the received frame + ========================================================================== + */ +VOID PeerAssocRspAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + USHORT CapabilityInfo, Status, Aid; + UCHAR Rates[MAX_LEN_OF_SUPPORTED_RATES], RatesLen; + MACADDR Addr2; + BOOLEAN ExtendedRateIeExist; + + if (PeerAssocRspSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, &CapabilityInfo, &Status, &Aid, Rates, &RatesLen, &ExtendedRateIeExist)) + { + // The frame is for me ? + if(MAC_ADDR_EQUAL(&Addr2, &pAd->Mlme.AssocAux.Addr)) + { + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - receive ASSOC_RSP to me (status=%d)\n", Status); + RTMPCancelTimer(&pAd->Mlme.AssocAux.AssocTimer); + if(Status == MLME_SUCCESS) + { + // go to procedure listed on page 376 + // Mask out unnecessary capability information + CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; // pAd->PortCfg.SupportedCapabilityInfo; + AssocPostProc(pAd, &Addr2, CapabilityInfo, Aid, Rates, RatesLen, ExtendedRateIeExist); + } + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_ASSOC_CONF, Status); + } + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - PeerAssocRspAction() sanity check fail\n"); + } +} + +/* + ========================================================================== + Description: + peer sends reassoc rsp + Parametrs: + Elem - MLME message cntaining the received frame + ========================================================================== + */ +VOID PeerReassocRspAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + USHORT CapabilityInfo; + USHORT Status; + USHORT Aid; + UCHAR Rates[MAX_LEN_OF_SUPPORTED_RATES]; + UCHAR RatesLen; + MACADDR Addr2; + BOOLEAN ExtendedRateIeExist; + + if(PeerAssocRspSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, &CapabilityInfo, &Status, &Aid, Rates, &RatesLen, &ExtendedRateIeExist)) + { + if(MAC_ADDR_EQUAL(&Addr2, &pAd->Mlme.AssocAux.Addr)) // The frame is for me ? + { + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - receive REASSOC_RSP to me (status=%d)\n", Status); + RTMPCancelTimer(&pAd->Mlme.AssocAux.ReassocTimer); + + if(Status == MLME_SUCCESS) + { + // Mask out unnecessary capability information + CapabilityInfo &= SUPPORTED_CAPABILITY_INFO; // pAd->PortCfg.SupportedCapabilityInfo; + // go to procedure listed on page 376 + AssocPostProc(pAd, &Addr2, CapabilityInfo, Aid, Rates, RatesLen, ExtendedRateIeExist); + } + + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_REASSOC_CONF, Status); + } + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - PeerReassocRspAction() sanity check fail\n"); + } +} + +/* + ========================================================================== + Description: + procedures on IEEE 802.11/1999 p.376 + Parametrs: + ========================================================================== + */ +VOID AssocPostProc( + IN PRTMP_ADAPTER pAd, + IN PMACADDR Addr2, + IN USHORT CapabilityInfo, + IN USHORT Aid, + IN UCHAR Rates[], + IN UCHAR RatesLen, + IN BOOLEAN ExtendedRateIeExist) +{ + ULONG Idx; + UCHAR RateIe = IE_SUPP_RATES; + UCHAR VarIesOffset; + + // 2003/12/11 - skip the following because experiment show that we can not + // trust the "privacy" bit in AssocRsp. We can only trust "Privacy" bit specified in + // BEACON and ProbeRsp. + // pAd->PortCfg.PrivacyInvoked = CAP_IS_PRIVACY_ON(CapabilityInfo); + + pAd->PortCfg.Aid = Aid; + memcpy(pAd->PortCfg.SupportedRates, Rates, RatesLen); + pAd->PortCfg.SupportedRatesLen = RatesLen; + COPY_MAC_ADDR(&pAd->PortCfg.Bssid, Addr2); + AsicSetBssid(pAd, &pAd->PortCfg.Bssid); + + // set listen interval + pAd->PortCfg.DefaultListenCount = pAd->Mlme.AssocAux.ListenIntv; +// pAd->PortCfg.CurrListenCount = pAd->Mlme.AssocAux.ListenIntv; + + // Set New WPA information + Idx = BssTableSearch(&pAd->PortCfg.BssTab, Addr2); + if (Idx == BSS_NOT_FOUND) + { + DBGPRINT(RT_DEBUG_ERROR, "ASSOC - Can't find BSS after receiving Assoc response\n"); + } + else + { + // Mod by James to fix OID_802_11_ASSOCIATION_INFORMATION + pAd->PortCfg.AssocInfo.Length = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION); //+ sizeof(NDIS_802_11_FIXED_IEs); // Filled in assoc request + pAd->PortCfg.AssocInfo.AvailableResponseFixedIEs = + NDIS_802_11_AI_RESFI_CAPABILITIES | NDIS_802_11_AI_RESFI_STATUSCODE | NDIS_802_11_AI_RESFI_ASSOCIATIONID; + pAd->PortCfg.AssocInfo.ResponseFixedIEs.Capabilities = CapabilityInfo; + pAd->PortCfg.AssocInfo.ResponseFixedIEs.StatusCode = MLME_SUCCESS; // Should be success, add failed later + pAd->PortCfg.AssocInfo.ResponseFixedIEs.AssociationId = Aid; + + // Copy BSS VarIEs to PortCfg associnfo structure. + // First add Supported rates + VarIesOffset = 0; + memcpy(pAd->PortCfg.ResVarIEs + VarIesOffset, &RateIe, 1); + VarIesOffset += 1; + memcpy(pAd->PortCfg.ResVarIEs + VarIesOffset, &RatesLen, 1); + VarIesOffset += 1; + memcpy(pAd->PortCfg.ResVarIEs + VarIesOffset, Rates, RatesLen); + VarIesOffset += RatesLen; + + // Second add RSN + memcpy(pAd->PortCfg.ResVarIEs + VarIesOffset, pAd->PortCfg.BssTab.BssEntry[Idx].VarIEs, pAd->PortCfg.BssTab.BssEntry[Idx].VarIELen); + VarIesOffset += pAd->PortCfg.BssTab.BssEntry[Idx].VarIELen; + + // Set Variable IEs Length + pAd->PortCfg.ResVarIELen = VarIesOffset; + pAd->PortCfg.AssocInfo.ResponseIELength = VarIesOffset; + // End Mod by James + } +} + +/* + ========================================================================== + Description: + left part of IEEE 802.11/1999 p.374 + Parameters: + Elem - MLME message containing the received frame + ========================================================================== + */ +VOID PeerDisassocAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + MACADDR Addr2; + USHORT Reason; + + if(PeerDisassocSanity(pAd, Elem->Msg, Elem->MsgLen, &Addr2, &Reason)) + { + if (INFRA_ON(pAd) && MAC_ADDR_EQUAL(&pAd->PortCfg.Bssid, &Addr2)) + { + LinkDown(pAd); + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + + pAd->RalinkCounters.BeenDisassociatedCount ++; + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - Disassociated by AP, Auto Recovery attempt #%d\n", pAd->RalinkCounters.BeenDisassociatedCount); + MlmeAutoReconnectLastSSID(pAd); + } + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - PeerDisassocAction() sanity check fail\n"); + } +} + +/* + ========================================================================== + Description: + what the state machine will do after assoc timeout + Parameters: + Elme - + ========================================================================== + */ +VOID AssocTimeoutAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - AssocTimeoutAction\n"); + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_ASSOC_CONF, MLME_REJ_TIMEOUT); +} + +/* + ========================================================================== + Description: + what the state machine will do after reassoc timeout + ========================================================================== + */ +VOID ReassocTimeoutAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - ReassocTimeoutAction\n"); + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_REASSOC_CONF, MLME_REJ_TIMEOUT); +} + +/* + ========================================================================== + Description: + what the state machine will do after disassoc timeout + ========================================================================== + */ +VOID DisassocTimeoutAction( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - DisassocTimeoutAction\n"); + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_DISASSOC_CONF, MLME_SUCCESS); +} + +VOID InvalidStateWhenAssoc( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - InvalidStateWhenAssoc(state=%d), reset ASSOC state machine\n", + pAd->Mlme.AssocMachine.CurrState); + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_ASSOC_CONF, MLME_STATE_MACHINE_REJECT); +} + +VOID InvalidStateWhenReassoc( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - InvalidStateWhenReassoc(state=%d), reset ASSOC state machine\n", + pAd->Mlme.AssocMachine.CurrState); + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_REASSOC_CONF, MLME_STATE_MACHINE_REJECT); +} + +VOID InvalidStateWhenDisassociate( + IN PRTMP_ADAPTER pAd, + IN MLME_QUEUE_ELEM *Elem) +{ + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - InvalidStateWhenDisassoc(state=%d), reset ASSOC state machine\n", + pAd->Mlme.AssocMachine.CurrState); + pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE; + MlmeCntlConfirm(pAd, MT2_DISASSOC_CONF, MLME_STATE_MACHINE_REJECT); +} + +/* + ========================================================================== + Description: + right part of IEEE 802.11/1999 page 374 + Note: + This event should never cause ASSOC state machine perform state + transition, and has no relationship with CNTL machine. So we separate + this routine as a service outside of ASSOC state transition table. + ========================================================================== + */ +VOID Cls3errAction( + IN PRTMP_ADAPTER pAd, + IN PMACADDR pAddr) +{ + MACHDR DisassocHdr; + CHAR *OutBuffer = NULL; + ULONG FrameLen = 0; + NDIS_STATUS NStatus; + USHORT Reason = REASON_CLS3ERR; + + NStatus = MlmeAllocateMemory(pAd, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if (NStatus != NDIS_STATUS_SUCCESS) + return; + + DBGPRINT(RT_DEBUG_TRACE, "ASSOC - Class 3 Error, Send DISASSOC frame\n"); + MgtMacHeaderInit(pAd, &DisassocHdr, SUBTYPE_DISASSOC, 0, pAddr, &pAd->PortCfg.Bssid); + MakeOutgoingFrame(OutBuffer, &FrameLen, + sizeof(MACHDR), &DisassocHdr, + 2, &Reason, + END_OF_ARGS); + MiniportMMRequest(pAd, OutBuffer, FrameLen); + + pAd->PortCfg.DisassocReason = REASON_CLS3ERR; + COPY_MAC_ADDR(&pAd->PortCfg.DisassocSta, pAddr); +} + + --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/wpa.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/wpa.c @@ -1,1416 +1,1416 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: wpa.c - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * JanL 22nd Jul 03 Initial code - * PaulL 28th Nov 03 Modify for supplicant - * MarkW 8th Dec 04 Baseline code - ***************************************************************************/ - -#include "rt_config.h" - -UCHAR CipherWpaPskTkip[] = { - 0xDD, 0x16, // RSN IE - 0x00, 0x50, 0xf2, 0x01, // oui - 0x01, 0x00, // Version - 0x00, 0x50, 0xf2, 0x02, // Multicast - 0x01, 0x00, // Number of unicast - 0x00, 0x50, 0xf2, 0x02, // unicast - 0x01, 0x00, // number of authentication method - 0x00, 0x50, 0xf2, 0x02 // authentication - }; -UCHAR CipherWpaPskTkipLen = (sizeof(CipherWpaPskTkip) / sizeof(UCHAR)); - -UCHAR CipherWpaPskAes[] = { - 0xDD, 0x16, // RSN IE - 0x00, 0x50, 0xf2, 0x01, // oui - 0x01, 0x00, // Version - 0x00, 0x50, 0xf2, 0x04, // Multicast - 0x01, 0x00, // Number of unicast - 0x00, 0x50, 0xf2, 0x04, // unicast - 0x01, 0x00, // number of authentication method - 0x00, 0x50, 0xf2, 0x02 // authentication - }; -UCHAR CipherWpaPskAesLen = (sizeof(CipherWpaPskAes) / sizeof(UCHAR)); - -/* - ======================================================================== - - Routine Description: - Classify WPA EAP message type - - Arguments: - EAPType Value of EAP message type - MsgType Internal Message definition for MLME state machine - - Return Value: - TRUE Found appropriate message type - FALSE No appropriate message type - - Note: - All these constants are defined in wpa.h - For supplicant, there is only EAPOL Key message avaliable - - ======================================================================== -*/ -BOOLEAN WpaMsgTypeSubst( - IN UCHAR EAPType, - OUT ULONG *MsgType) -{ - switch (EAPType) - { - case EAPPacket: - *MsgType = EAP_MSG_TYPE_EAPPacket; - break; - case EAPOLStart: - *MsgType = EAP_MSG_TYPE_EAPOLStart; - break; - case EAPOLLogoff: - *MsgType = EAP_MSG_TYPE_EAPOLLogoff; - break; - case EAPOLKey: - *MsgType = EAP_MSG_TYPE_EAPOLKey; - break; - case EAPOLASFAlert: - *MsgType = EAP_MSG_TYPE_EAPOLASFAlert; - break; - default: - DBGPRINT(RT_DEBUG_INFO, "WpaMsgTypeSubst : return FALSE; \n"); - return FALSE; - } - return TRUE; -} - -/* - ========================================================================== - Description: - association state machine init, including state transition and timer init - Parameters: - S - pointer to the association state machine - ========================================================================== - */ -VOID WpaPskStateMachineInit( - IN PRTMP_ADAPTER pAd, - IN STATE_MACHINE *S, - OUT STATE_MACHINE_FUNC Trans[]) -{ - StateMachineInit(S, (STATE_MACHINE_FUNC*)Trans, MAX_WPA_PSK_STATE, MAX_WPA_PSK_MSG, (STATE_MACHINE_FUNC)Drop, WPA_PSK_IDLE, WPA_MACHINE_BASE); - StateMachineSetAction(S, WPA_PSK_IDLE, EAP_MSG_TYPE_EAPOLKey, (STATE_MACHINE_FUNC)WpaEAPOLKeyAction); -} - -/* - ========================================================================== - Description: - This is state machine function. - When receiving EAPOL packets which is for 802.1x key management. - Use both in WPA, and WPAPSK case. - In this function, further dispatch to different functions according to the received packet. 3 categories are : - 1. normal 4-way pairwisekey and 2-way groupkey handshake - 2. MIC error (Countermeasures attack) report packet from STA. - 3. Request for pairwise/group key update from STA - Return: - ========================================================================== -*/ -VOID WpaEAPOLKeyAction( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem) -{ - INT MsgType; - UCHAR ZeroReplay[LEN_KEY_DESC_REPLAY]; - PKEY_DESCRIPTER pKeyDesc; - - DBGPRINT(RT_DEBUG_TRACE, "-----> WpaEAPOLKeyAction\n"); - // Get 802.11 header first - pKeyDesc = (PKEY_DESCRIPTER) &Elem->Msg[(LENGTH_802_11 + LENGTH_802_1_H + LENGTH_EAPOL_H)]; - -#ifdef BIG_ENDIAN - *(USHORT *)((UCHAR *)pKeyDesc+1) = SWAP16(*(USHORT *)((UCHAR *)pKeyDesc+1)); -#endif - // Sanity check, this should only happen in WPA-PSK mode - if (pAdapter->PortCfg.AuthMode != Ndis802_11AuthModeWPAPSK) - return; - - // 0. Debug print all bit information - DBGPRINT(RT_DEBUG_INFO, "KeyInfo Key Description Version %d\n", pKeyDesc->KeyInfo.KeyDescVer); - DBGPRINT(RT_DEBUG_INFO, "KeyInfo Key Type %d\n", pKeyDesc->KeyInfo.KeyType); - DBGPRINT(RT_DEBUG_INFO, "KeyInfo Key Index %d\n", pKeyDesc->KeyInfo.KeyIndex); - DBGPRINT(RT_DEBUG_INFO, "KeyInfo Install %d\n", pKeyDesc->KeyInfo.Install); - DBGPRINT(RT_DEBUG_INFO, "KeyInfo Key Ack %d\n", pKeyDesc->KeyInfo.KeyAck); - DBGPRINT(RT_DEBUG_INFO, "KeyInfo Key MIC %d\n", pKeyDesc->KeyInfo.KeyMic); - DBGPRINT(RT_DEBUG_INFO, "KeyInfo Secure %d\n", pKeyDesc->KeyInfo.Secure); - DBGPRINT(RT_DEBUG_INFO, "KeyInfo Error %d\n", pKeyDesc->KeyInfo.Error); - DBGPRINT(RT_DEBUG_INFO, "KeyInfo Request %d\n", pKeyDesc->KeyInfo.Request); - DBGPRINT(RT_DEBUG_INFO, "KeyInfo DL %d\n", pKeyDesc->KeyInfo.DL); - - // 1. Check EAPOL frame version and type - if ((Elem->Msg[LENGTH_802_11+LENGTH_802_1_H] != EAPOL_VER) || (pKeyDesc->Type != RSN_KEY_DESC)) - { - DBGPRINT(RT_DEBUG_ERROR, " Key descripter does not match with WPA rule \n"); - return; - } - - // 2.Check Version for AES & TKIP - if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) && (pKeyDesc->KeyInfo.KeyDescVer != DESC_TYPE_AES)) - { - DBGPRINT(RT_DEBUG_ERROR, " Key descripter version not match AES \n"); - return; - } - else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pKeyDesc->KeyInfo.KeyDescVer != DESC_TYPE_TKIP)) - { - DBGPRINT(RT_DEBUG_ERROR, " Key descripter version not match TKIP \n"); - return; - } - - // First validate replay counter, only accept message with larger replay counter - // Let equal pass, some AP start with all zero replay counter - memset(ZeroReplay, 0, LEN_KEY_DESC_REPLAY); - if ((RTMPCompareMemory(pKeyDesc->ReplayCounter, pAdapter->PortCfg.ReplayCounter, LEN_KEY_DESC_REPLAY) != 1) && - (RTMPCompareMemory(pKeyDesc->ReplayCounter, ZeroReplay, LEN_KEY_DESC_REPLAY) != 0)) - return; - - // Classify message Type, either pairwise message 1, 3, or group message 1 for supplicant - MsgType = EAPOL_MSG_INVALID; - if ((pKeyDesc->KeyInfo.KeyType == 1) && - (pKeyDesc->KeyInfo.KeyIndex == 0) && - (pKeyDesc->KeyInfo.KeyAck == 1) && - (pKeyDesc->KeyInfo.KeyMic == 0) && - (pKeyDesc->KeyInfo.Secure == 0) && - (pKeyDesc->KeyInfo.Error == 0) && - (pKeyDesc->KeyInfo.Request == 0)) - { - MsgType = EAPOL_PAIR_MSG_1; - DBGPRINT(RT_DEBUG_TRACE, "Receive EAPOL Key Pairwise Message 1\n"); - } - else if ((pKeyDesc->KeyInfo.KeyType == 1) && - (pKeyDesc->KeyInfo.KeyIndex == 0) && - (pKeyDesc->KeyInfo.KeyAck == 1) && - (pKeyDesc->KeyInfo.KeyMic == 1) && - (pKeyDesc->KeyInfo.Secure == 0) && - (pKeyDesc->KeyInfo.Error == 0) && - (pKeyDesc->KeyInfo.Request == 0)) - { - MsgType = EAPOL_PAIR_MSG_3; - DBGPRINT(RT_DEBUG_TRACE, "Receive EAPOL Key Pairwise Message 3\n"); - } - else if ((pKeyDesc->KeyInfo.KeyType == 0) && - (pKeyDesc->KeyInfo.KeyIndex != 0) && - (pKeyDesc->KeyInfo.KeyAck == 1) && - (pKeyDesc->KeyInfo.KeyMic == 1) && - (pKeyDesc->KeyInfo.Secure == 1) && - (pKeyDesc->KeyInfo.Error == 0) && - (pKeyDesc->KeyInfo.Request == 0)) - { - MsgType = EAPOL_GROUP_MSG_1; - DBGPRINT(RT_DEBUG_TRACE, "Receive EAPOL Key Group Message 1\n"); - } - -#ifdef BIG_ENDIAN - *(USHORT *)((UCHAR *)pKeyDesc+1) = SWAP16(*(USHORT *)((UCHAR *)pKeyDesc+1)); -#endif - - // We will assume link is up (assoc suceess and port not secured). - // All state has to be able to process message from previous state - switch (pAdapter->PortCfg.WpaState) - { - case SS_START: - if (MsgType == EAPOL_PAIR_MSG_1) - { - WpaPairMsg1Action(pAdapter, Elem); - pAdapter->PortCfg.WpaState = SS_WAIT_MSG_3; - } - break; - - case SS_WAIT_MSG_3: - if (MsgType == EAPOL_PAIR_MSG_1) - { - WpaPairMsg1Action(pAdapter, Elem); - pAdapter->PortCfg.WpaState = SS_WAIT_MSG_3; - } - else if (MsgType == EAPOL_PAIR_MSG_3) - { - WpaPairMsg3Action(pAdapter, Elem); - pAdapter->PortCfg.WpaState = SS_WAIT_GROUP; - } - break; - - case SS_WAIT_GROUP: // When doing group key exchange - case SS_FINISH: // This happened when update group key - if (MsgType == EAPOL_PAIR_MSG_1) - { - WpaPairMsg1Action(pAdapter, Elem); - pAdapter->PortCfg.WpaState = SS_WAIT_MSG_3; - // Reset port secured variable - pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED; - } - else if (MsgType == EAPOL_PAIR_MSG_3) - { - WpaPairMsg3Action(pAdapter, Elem); - pAdapter->PortCfg.WpaState = SS_WAIT_GROUP; - // Reset port secured variable - pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED; - } - else if (MsgType == EAPOL_GROUP_MSG_1) - { - WpaGroupMsg1Action(pAdapter, Elem); - pAdapter->PortCfg.WpaState = SS_FINISH; - } - break; - - default: - break; - } - - DBGPRINT(RT_DEBUG_TRACE, "<----- WpaEAPOLKeyAction\n"); -} - -/* - ======================================================================== - - Routine Description: - Process Pairwise key 4-way handshaking - - Arguments: - pAdapter Pointer to our adapter - Elem Message body - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID WpaPairMsg1Action( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem) -{ - PHEADER_802_11 pHeader; - UCHAR PTK[80]; - UCHAR *OutBuffer = NULL; - HEADER_802_11 Header_802_11; - NDIS_STATUS NStatus; - UCHAR AckRate = RATE_2; - USHORT AckDuration = 0; - ULONG FrameLen = 0; - UCHAR EAPHEAD[8] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00,0x88,0x8e}; - PEAPOL_PACKET pMsg1; - EAPOL_PACKET Packet; - UCHAR Mic[16]; - - DBGPRINT(RT_DEBUG_TRACE, "WpaPairMsg1Action ----->\n"); - - pHeader = (PHEADER_802_11) Elem->Msg; - - // Save Data Length to pDesc for receiving packet, then put in outgoing frame Data Len fields. - pMsg1 = (PEAPOL_PACKET) &Elem->Msg[LENGTH_802_11 + LENGTH_802_1_H]; - - // Process message 1 from authenticator - // Key must be Pairwise key, already verified at callee. - // 1. Save Replay counter, it will use to verify message 3 and construct message 2 - memcpy(pAdapter->PortCfg.ReplayCounter, pMsg1->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY); - - // 2. Save ANonce - memcpy(pAdapter->PortCfg.ANonce, pMsg1->KeyDesc.KeyNonce, LEN_KEY_DESC_NONCE); - - // TSNonce <--- SNonce - // Generate random SNonce - GenRandom(pAdapter, pAdapter->PortCfg.SNonce); - - // TPTK <--- Calc PTK(ANonce, TSNonce) - WpaCountPTK(pAdapter->PortCfg.PskKey.Key, - pAdapter->PortCfg.ANonce, - pAdapter->PortCfg.Bssid.Octet, - pAdapter->PortCfg.SNonce, - pAdapter->CurrentAddress, - PTK, - LEN_PTK); - - // Save key to PTK entry - memcpy(pAdapter->PortCfg.PTK, PTK, LEN_PTK); - - // ===================================== - // Use Priority Ring & MiniportMMRequest - // ===================================== - pAdapter->Sequence = ((pAdapter->Sequence) + 1) & (MAX_SEQ_NUMBER); - WpaMacHeaderInit(pAdapter, &Header_802_11, 0, &pAdapter->PortCfg.Bssid); - - // ACK size is 14 include CRC, and its rate is based on real time information - AckRate = pAdapter->PortCfg.ExpectedACKRate[pAdapter->PortCfg.TxRate]; - AckDuration = RTMPCalcDuration(pAdapter, AckRate, 14); - Header_802_11.Controlhead.Duration = pAdapter->PortCfg.Dsifs + AckDuration; - - // Zero message 2 body - memset(&Packet, 0, sizeof(Packet)); - Packet.Version = EAPOL_VER; - Packet.Type = EAPOLKey; - // - // Message 2 as EAPOL-Key(0,1,0,0,0,P,0,SNonce,MIC,RSN IE) - // - Packet.KeyDesc.Type = RSN_KEY_DESC; - // 1. Key descriptor version and appropriate RSN IE - if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) - { - Packet.KeyDesc.KeyInfo.KeyDescVer = 2; - Packet.KeyDesc.KeyDataLen[1] = CipherWpaPskAesLen; - memcpy(Packet.KeyDesc.KeyData, CipherWpaPskAes, CipherWpaPskAesLen); - } - else // TKIP - { - Packet.KeyDesc.KeyInfo.KeyDescVer = 1; - Packet.KeyDesc.KeyDataLen[1] = CipherWpaPskTkipLen; - memcpy(Packet.KeyDesc.KeyData, CipherWpaPskTkip, CipherWpaPskTkipLen); - } - // Update packet length after decide Key data payload - Packet.Len[1] = sizeof(KEY_DESCRIPTER) - MAX_LEN_OF_RSNIE + Packet.KeyDesc.KeyDataLen[1]; - - // 2. Key Type PeerKey - Packet.KeyDesc.KeyInfo.KeyType = 1; - - // 3. KeyMic field presented - Packet.KeyDesc.KeyInfo.KeyMic = 1; - - // 4. Fill SNonce - memcpy(Packet.KeyDesc.KeyNonce, pAdapter->PortCfg.SNonce, LEN_KEY_DESC_NONCE); - - // 5. Key Replay Count - memcpy(Packet.KeyDesc.ReplayCounter, pAdapter->PortCfg.ReplayCounter, LEN_KEY_DESC_REPLAY); - -#ifdef BIG_ENDIAN - *(USHORT *)(&(Packet.KeyDesc.KeyInfo)) = SWAP16(*(USHORT *)(&(Packet.KeyDesc.KeyInfo))); -#endif - - // Send EAPOL(0, 1, 0, 0, 0, K, 0, TSNonce, 0, MIC(TPTK), 0) - // Out buffer for transmitting message 2 - NStatus = MlmeAllocateMemory(pAdapter, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if (NStatus != NDIS_STATUS_SUCCESS) - return; - - // Prepare EAPOL frame for MIC calculation - // Be careful, only EAPOL frame is counted for MIC calculation - MakeOutgoingFrame(OutBuffer, &FrameLen, - Packet.Len[1] + 4, &Packet, - END_OF_ARGS); - - // 5. Prepare and Fill MIC value - memset(Mic, 0, sizeof(Mic)); - if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) - { - // AES - UCHAR digest[80]; - - HMAC_SHA1(OutBuffer, FrameLen, PTK, LEN_EAP_MICK, digest); - memcpy(Mic, digest, LEN_KEY_DESC_MIC); - } - else - { - INT i; - DBGPRINT(RT_DEBUG_INFO, " PMK = "); - for (i = 0; i < 16; i++) - DBGPRINT(RT_DEBUG_INFO, "%2x-", pAdapter->PortCfg.PskKey.Key[i]); - - DBGPRINT(RT_DEBUG_INFO, "\n PTK = "); - for (i = 0; i < 64; i++) - DBGPRINT(RT_DEBUG_INFO, "%2x-", pAdapter->PortCfg.PTK[i]); - DBGPRINT(RT_DEBUG_INFO, "\n FrameLen = %d\n", FrameLen); - - hmac_md5(PTK, LEN_EAP_MICK, OutBuffer, FrameLen, Mic); - } - memcpy(Packet.KeyDesc.KeyMic, Mic, LEN_KEY_DESC_MIC); - - FrameLen = 0; - // Make Transmitting frame - MakeOutgoingFrame(OutBuffer, &FrameLen, sizeof(MACHDR), &Header_802_11, - sizeof(EAPHEAD), EAPHEAD, - Packet.Len[1] + 4, &Packet, - END_OF_ARGS); - - // Send using priority queue - MiniportMMRequest(pAdapter, OutBuffer, FrameLen); - - DBGPRINT(RT_DEBUG_TRACE, "WpaPairMsg1Action <-----\n"); -} - -/* - ======================================================================== - - Routine Description: - Process Pairwise key 4-way handshaking - - Arguments: - pAdapter Pointer to our adapter - Elem Message body - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID WpaPairMsg3Action( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem) -{ - PHEADER_802_11 pHeader; - UCHAR *OutBuffer = NULL; - HEADER_802_11 Header_802_11; - NDIS_STATUS NStatus; - UCHAR AckRate = RATE_2; - USHORT AckDuration = 0; - ULONG FrameLen = 0; - UCHAR EAPHEAD[8] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00,0x88,0x8e}; - EAPOL_PACKET Packet; - PEAPOL_PACKET pMsg3; - PUCHAR pTmp; - UCHAR Mic[16], OldMic[16]; - NDIS_802_11_KEY PeerKey; - - - DBGPRINT(RT_DEBUG_TRACE, "WpaPairMsg3Action ----->\n"); - - pHeader = (PHEADER_802_11) Elem->Msg; - - // Process message 3 frame. - pMsg3 = (PEAPOL_PACKET) &Elem->Msg[LENGTH_802_11 + LENGTH_802_1_H]; - -#ifdef BIG_ENDIAN - *(USHORT *)(&(pMsg3->KeyDesc.KeyInfo)) = SWAP16(*(USHORT *)(&(pMsg3->KeyDesc.KeyInfo))); -#endif - - // 1. Verify RSN IE & cipher type match - if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) - { - if (pMsg3->KeyDesc.KeyInfo.KeyDescVer != 2) - return; - pTmp = (PUCHAR) &CipherWpaPskAes; - } - else // TKIP - { - if (pMsg3->KeyDesc.KeyInfo.KeyDescVer != 1) - return; - pTmp = (PUCHAR) &CipherWpaPskTkip; - } - - // Fix compatibility issue, when AP append nonsense data after auth mode with different size. - // We should qualify this kind of RSN as acceptable - if (!NdisEqualMemory((PUCHAR) &pMsg3->KeyDesc.KeyData[2], pTmp + 2, CipherWpaPskTkipLen - 2)) - { - DBGPRINT(RT_DEBUG_ERROR, " RSN IE mismatched msg 3 of 4-way handshake!!!!!!!!!! \n"); - return; - } - else - DBGPRINT(RT_DEBUG_TRACE, " RSN IE matched in msg 3 of 4-way handshake!!!!!!!!!! \n"); - -#ifdef BIG_ENDIAN - *(USHORT *)(&(pMsg3->KeyDesc.KeyInfo)) = SWAP16(*(USHORT *)(&(pMsg3->KeyDesc.KeyInfo))); -#endif - - // 2. Check MIC value - // Save the MIC and replace with zero - memcpy(OldMic, pMsg3->KeyDesc.KeyMic, LEN_KEY_DESC_MIC); - memset(pMsg3->KeyDesc.KeyMic, 0, LEN_KEY_DESC_MIC); - if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) - { - // AES - UCHAR digest[80]; - - HMAC_SHA1((PUCHAR) pMsg3, pMsg3->Len[1] + 4, pAdapter->PortCfg.PTK, LEN_EAP_MICK, digest); - memcpy(Mic, digest, LEN_KEY_DESC_MIC); - } - else - { - hmac_md5(pAdapter->PortCfg.PTK, LEN_EAP_MICK, (PUCHAR) pMsg3, pMsg3->Len[1] + 4, Mic); - } - - if (!NdisEqualMemory(OldMic, Mic, LEN_KEY_DESC_MIC)) - { - DBGPRINT(RT_DEBUG_ERROR, " MIC Different in msg 3 of 4-way handshake!!!!!!!!!! \n"); - return; - } - else - DBGPRINT(RT_DEBUG_TRACE, " MIC VALID in msg 3 of 4-way handshake!!!!!!!!!! \n"); - - // 3. Check Replay Counter, it has to be larger than last one. No need to be exact one larger - if (RTMPCompareMemory(pMsg3->KeyDesc.ReplayCounter, pAdapter->PortCfg.ReplayCounter, LEN_KEY_DESC_REPLAY) != 1) - return; - - // Update new replay counter - memcpy(pAdapter->PortCfg.ReplayCounter, pMsg3->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY); - - // 4. Double check ANonce - if (!NdisEqualMemory(pAdapter->PortCfg.ANonce, pMsg3->KeyDesc.KeyNonce, LEN_KEY_DESC_NONCE)) - return; - - // 5. Construct Message 4 - // ===================================== - // Use Priority Ring & MiniportMMRequest - // ===================================== - pAdapter->Sequence = ((pAdapter->Sequence) + 1) & (MAX_SEQ_NUMBER); - WpaMacHeaderInit(pAdapter, &Header_802_11, 0, &pAdapter->PortCfg.Bssid); - - // ACK size is 14 include CRC, and its rate is based on real time information - AckRate = pAdapter->PortCfg.ExpectedACKRate[pAdapter->PortCfg.TxRate]; - AckDuration = RTMPCalcDuration(pAdapter, AckRate, 14); - Header_802_11.Controlhead.Duration = pAdapter->PortCfg.Dsifs + AckDuration; - - // Zero message 4 body - memset(&Packet, 0, sizeof(Packet)); - Packet.Version = EAPOL_VER; - Packet.Type = EAPOLKey; - Packet.Len[1] = sizeof(KEY_DESCRIPTER) - MAX_LEN_OF_RSNIE; // No data field - - // - // Message 4 as EAPOL-Key(0,1,0,0,0,P,0,0,MIC,0) - // - Packet.KeyDesc.Type = RSN_KEY_DESC; - -#ifdef BIG_ENDIAN - *(USHORT *)(&(pMsg3->KeyDesc.KeyInfo)) = SWAP16(*(USHORT *)(&(pMsg3->KeyDesc.KeyInfo))); -#endif - - // Key descriptor version and appropriate RSN IE - Packet.KeyDesc.KeyInfo.KeyDescVer = pMsg3->KeyDesc.KeyInfo.KeyDescVer; - - // Key Type PeerKey - Packet.KeyDesc.KeyInfo.KeyType = 1; - - // KeyMic field presented - Packet.KeyDesc.KeyInfo.KeyMic = 1; - - // Key Replay count - memcpy(Packet.KeyDesc.ReplayCounter, pMsg3->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY); -#ifdef BIG_ENDIAN - *(USHORT *)&Packet.KeyDesc.KeyInfo = SWAP16(*(USHORT *)&Packet.KeyDesc.KeyInfo); -#endif - - // Out buffer for transmitting message 4 - NStatus = MlmeAllocateMemory(pAdapter, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if (NStatus != NDIS_STATUS_SUCCESS) - return; - - // Prepare EAPOL frame for MIC calculation - // Be careful, only EAPOL frame is counted for MIC calculation - MakeOutgoingFrame(OutBuffer, &FrameLen, - Packet.Len[1] + 4, &Packet, - END_OF_ARGS); - - // Prepare and Fill MIC value - memset(Mic, 0, sizeof(Mic)); - if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) - { - // AES - UCHAR digest[80]; - - HMAC_SHA1(OutBuffer, FrameLen, pAdapter->PortCfg.PTK, LEN_EAP_MICK, digest); - memcpy(Mic, digest, LEN_KEY_DESC_MIC); - } - else - { - hmac_md5(pAdapter->PortCfg.PTK, LEN_EAP_MICK, OutBuffer, FrameLen, Mic); - } - memcpy(Packet.KeyDesc.KeyMic, Mic, LEN_KEY_DESC_MIC); - - FrameLen = 0; - - // Make Transmitting frame - MakeOutgoingFrame(OutBuffer, &FrameLen, sizeof(MACHDR), &Header_802_11, - sizeof(EAPHEAD), EAPHEAD, - Packet.Len[1] + 4, &Packet, - END_OF_ARGS); - - // 6. Send Message 4 to authenticator - // Send using priority queue - MiniportMMRequest(pAdapter, OutBuffer, FrameLen); - - // 7. Update PTK - memset(&PeerKey, 0, sizeof(PeerKey)); - PeerKey.Length = sizeof(PeerKey); - PeerKey.KeyIndex = 0xe0000000; - PeerKey.KeyLength = 16; - memcpy(PeerKey.BSSID, pAdapter->PortCfg.Bssid.Octet, 6); - memcpy(&PeerKey.KeyRSC, pMsg3->KeyDesc.KeyRsc, LEN_KEY_DESC_RSC); - memcpy(PeerKey.KeyMaterial, &pAdapter->PortCfg.PTK[32], 32); - // Call Add peer key function - RTMPWPAAddKeyProc(pAdapter, &PeerKey); - - DBGPRINT(RT_DEBUG_TRACE, "WpaPairMsg3Action <-----\n"); -} - - -/* - ======================================================================== - - Routine Description: - Process Group key 2-way handshaking - - Arguments: - pAdapter Pointer to our adapter - Elem Message body - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID WpaGroupMsg1Action( - IN PRTMP_ADAPTER pAdapter, - IN MLME_QUEUE_ELEM *Elem) -{ - PHEADER_802_11 pHeader; - UCHAR *OutBuffer = NULL; - HEADER_802_11 Header_802_11; - NDIS_STATUS NStatus; - UCHAR AckRate = RATE_2; - USHORT AckDuration = 0; - ULONG FrameLen = 0; - UCHAR EAPHEAD[8] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00,0x88,0x8e}; - EAPOL_PACKET Packet; - PEAPOL_PACKET pGroup; - UCHAR Mic[16], OldMic[16]; - UCHAR GTK[32], Key[32]; - NDIS_802_11_KEY GroupKey; - - - DBGPRINT(RT_DEBUG_TRACE, "WpaGroupMsg1Action ----->\n"); - - pHeader = (PHEADER_802_11) Elem->Msg; - - // Process Group message 1 frame. - pGroup = (PEAPOL_PACKET) &Elem->Msg[LENGTH_802_11 + LENGTH_802_1_H]; - - // 1. Verify Replay counter - // Check Replay Counter, it has to be larger than last one. No need to be exact one larger - if (RTMPCompareMemory(pGroup->KeyDesc.ReplayCounter, pAdapter->PortCfg.ReplayCounter, LEN_KEY_DESC_REPLAY) != 1) - return; - - // Update new replay counter - memcpy(pAdapter->PortCfg.ReplayCounter, pGroup->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY); - - // 2. Verify MIC is valid - // Save the MIC and replace with zero - memcpy(OldMic, pGroup->KeyDesc.KeyMic, LEN_KEY_DESC_MIC); - memset(pGroup->KeyDesc.KeyMic, 0, LEN_KEY_DESC_MIC); - if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) - { - // AES - UCHAR digest[80]; - - HMAC_SHA1((PUCHAR) pGroup, pGroup->Len[1] + 4, pAdapter->PortCfg.PTK, LEN_EAP_MICK, digest); - memcpy(Mic, digest, LEN_KEY_DESC_MIC); - } - else - { - hmac_md5(pAdapter->PortCfg.PTK, LEN_EAP_MICK, (PUCHAR) pGroup, pGroup->Len[1] + 4, Mic); - } - - if (!NdisEqualMemory(OldMic, Mic, LEN_KEY_DESC_MIC)) - { - DBGPRINT(RT_DEBUG_ERROR, " MIC Different in group msg 1 of 2-way handshake!!!!!!!!!! \n"); - return; - } - else - DBGPRINT(RT_DEBUG_TRACE, " MIC VALID in group msg 1 of 2-way handshake!!!!!!!!!! \n"); - -#ifdef BIG_ENDIAN - *(USHORT *)(&(pGroup->KeyDesc.KeyInfo)) = SWAP16(*(USHORT *)(&(pGroup->KeyDesc.KeyInfo))); -#endif - - // 3. Decrypt GTK from Key Data - if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) - { - if (pGroup->KeyDesc.KeyInfo.KeyDescVer != 2) - return; - // Decrypt AES GTK - AES_GTK_KEY_UNWRAP(&pAdapter->PortCfg.PTK[16], GTK, pGroup->KeyDesc.KeyData); - } - else // TKIP - { - INT i; - - if (pGroup->KeyDesc.KeyInfo.KeyDescVer != 1) - return; - // Decrypt TKIP GTK - // Construct 32 bytes RC4 Key - memcpy(Key, pGroup->KeyDesc.KeyIv, 16); - memcpy(&Key[16], &pAdapter->PortCfg.PTK[16], 16); - ARCFOUR_INIT(&pAdapter->PrivateInfo.WEPCONTEXT, Key, 32); - //discard first 256 bytes - for (i = 0; i < 256; i++) - ARCFOUR_BYTE(&pAdapter->PrivateInfo.WEPCONTEXT); - // Decrypt GTK. Becareful, there is no ICV to check the result is correct or not - ARCFOUR_DECRYPT(&pAdapter->PrivateInfo.WEPCONTEXT, GTK, pGroup->KeyDesc.KeyData, 32); - } - - // 4. Construct Group Message 2 - pAdapter->Sequence = ((pAdapter->Sequence) + 1) & (MAX_SEQ_NUMBER); - WpaMacHeaderInit(pAdapter, &Header_802_11, 1, &pAdapter->PortCfg.Bssid); - - // ACK size is 14 include CRC, and its rate is based on real time information - AckRate = pAdapter->PortCfg.ExpectedACKRate[pAdapter->PortCfg.TxRate]; - AckDuration = RTMPCalcDuration(pAdapter, AckRate, 14); - Header_802_11.Controlhead.Duration = pAdapter->PortCfg.Dsifs + AckDuration; - - // Zero Group message 1 body - memset(&Packet, 0, sizeof(Packet)); - Packet.Version = EAPOL_VER; - Packet.Type = EAPOLKey; - Packet.Len[1] = sizeof(KEY_DESCRIPTER) - MAX_LEN_OF_RSNIE; // No data field - - // - // Group Message 2 as EAPOL-Key(1,0,0,0,G,0,0,MIC,0) - // - Packet.KeyDesc.Type = RSN_KEY_DESC; - - // Key descriptor version and appropriate RSN IE - Packet.KeyDesc.KeyInfo.KeyDescVer = pGroup->KeyDesc.KeyInfo.KeyDescVer; - - // Key Type Group key - Packet.KeyDesc.KeyInfo.KeyType = 0; - - // KeyMic field presented - Packet.KeyDesc.KeyInfo.KeyMic = 1; - - // Secure bit is 1 - Packet.KeyDesc.KeyInfo.Secure = 1; - - // Key Replay count - memcpy(Packet.KeyDesc.ReplayCounter, pGroup->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY); - -#ifdef BIG_ENDIAN - *(USHORT *)(&(Packet.KeyDesc.KeyInfo)) = SWAP16(*(USHORT *)(&(Packet.KeyDesc.KeyInfo))); -#endif - - // Out buffer for transmitting group message 2 - NStatus = MlmeAllocateMemory(pAdapter, (PVOID)&OutBuffer); //Get an unused nonpaged memory - if (NStatus != NDIS_STATUS_SUCCESS) - return; - - // Prepare EAPOL frame for MIC calculation - // Be careful, only EAPOL frame is counted for MIC calculation - MakeOutgoingFrame(OutBuffer, &FrameLen, - Packet.Len[1] + 4, &Packet, - END_OF_ARGS); - - // Prepare and Fill MIC value - memset(Mic, 0, sizeof(Mic)); - if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) - { - // AES - UCHAR digest[80]; - - HMAC_SHA1(OutBuffer, FrameLen, pAdapter->PortCfg.PTK, LEN_EAP_MICK, digest); - memcpy(Mic, digest, LEN_KEY_DESC_MIC); - } - else - { - INT i; - DBGPRINT(RT_DEBUG_INFO, "PTK = "); - for (i = 0; i < 64; i++) - DBGPRINT(RT_DEBUG_INFO, "%2x-", pAdapter->PortCfg.PTK[i]); - DBGPRINT(RT_DEBUG_INFO, "\n FrameLen = %d\n", FrameLen); - - hmac_md5(pAdapter->PortCfg.PTK, LEN_EAP_MICK, OutBuffer, FrameLen, Mic); - } - memcpy(Packet.KeyDesc.KeyMic, Mic, LEN_KEY_DESC_MIC); - - FrameLen = 0; - // Make Transmitting frame - MakeOutgoingFrame(OutBuffer, &FrameLen, sizeof(MACHDR), &Header_802_11, - sizeof(EAPHEAD), EAPHEAD, - Packet.Len[1] + 4, &Packet, - END_OF_ARGS); - - // 5. Copy frame to Tx ring and prepare for encryption - WpaHardEncrypt(pAdapter, OutBuffer, FrameLen); - - // 6 Free allocated memory - MlmeFreeMemory(pAdapter, OutBuffer); - - // 6. Update GTK - memset(&GroupKey, 0, sizeof(GroupKey)); - GroupKey.Length = sizeof(GroupKey); - GroupKey.KeyIndex = 0x20000000 | pGroup->KeyDesc.KeyInfo.KeyIndex; - GroupKey.KeyLength = 16; - memcpy(GroupKey.BSSID, pAdapter->PortCfg.Bssid.Octet, 6); - memcpy(GroupKey.KeyMaterial, GTK, 32); - // Call Add peer key function - RTMPWPAAddKeyProc(pAdapter, &GroupKey); - - DBGPRINT(RT_DEBUG_TRACE, "WpaGroupMsg1Action <-----\n"); -} -/* - ======================================================================== - - Routine Description: - Init WPA MAC header - - Arguments: - pAdapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID WpaMacHeaderInit( - IN PRTMP_ADAPTER pAd, - IN OUT PHEADER_802_11 Hdr, - IN UCHAR wep, - IN PMACADDR pAddr1) -{ - memset(Hdr, 0, sizeof(HEADER_802_11)); - Hdr->Controlhead.Frame.Type = BTYPE_DATA; - Hdr->Controlhead.Frame.ToDs = 1; - if (wep == 1) - Hdr->Controlhead.Frame.Wep = 1; - - // Addr1: DA, Addr2: BSSID, Addr3: SA - COPY_MAC_ADDR(&Hdr->Controlhead.Addr1, pAddr1); - COPY_MAC_ADDR(&Hdr->Controlhead.Addr2, &pAd->CurrentAddress); - COPY_MAC_ADDR(&Hdr->Addr3, &pAd->PortCfg.Bssid); - Hdr->Sequence = pAd->Sequence; -} - -/* - ======================================================================== - - Routine Description: - Copy frame from waiting queue into relative ring buffer and set - appropriate ASIC register to kick hardware encryption before really - sent out to air. - - Arguments: - pAdapter Pointer to our adapter - PNDIS_PACKET Pointer to outgoing Ndis frame - NumberOfFrag Number of fragment required - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID WpaHardEncrypt( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pPacket, - IN ULONG Len) -{ - UCHAR FrameGap; - PUCHAR pDest; - PUCHAR pSrc; - UCHAR CipherAlg = CIPHER_NONE; - PTXD_STRUC pTxD; -#ifdef BIG_ENDIAN - TXD_STRUC TxD; - PTXD_STRUC pDestTxD; - PUCHAR pOriginDest; -#endif - ULONG Iv16; - ULONG Iv32; - PWPA_KEY pWpaKey; - UCHAR RetryMode = SHORT_RETRY; - static UCHAR Priority[4] = {"\x00\x00\x00\x00"}; - - // Make sure Tx ring resource won't be used by other threads - spin_lock(&pAdapter->TxRingLock); - - FrameGap = IFS_BACKOFF; // Default frame gap mode - - // outgoing frame always wakeup PHY to prevent frame lost and - // turn off PSM bit to improve performance - if (pAdapter->PortCfg.Psm == PWR_SAVE) - { - MlmeSetPsmBit(pAdapter, PWR_ACTIVE); - } - AsicForceWakeup(pAdapter); - - pAdapter->TxRing[pAdapter->CurEncryptIndex].FrameType = BTYPE_DATA; - - pSrc = pPacket; // Point to start of MSDU - - pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.PairwiseKey[0]; - pWpaKey->Type = PAIRWISE_KEY; - if (pWpaKey == NULL) - { - // No pairwise key, this should not happen - spin_unlock(&pAdapter->TxRingLock); - return; - } - - // Get the Tx Ring descriptor & Dma Buffer address - pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; -#ifndef BIG_ENDIAN - pTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; -#else - pOriginDest = pDest; - pDestTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; - TxD = *pDestTxD; - pTxD = &TxD; - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); -#endif - - if ((pTxD->Owner == DESC_OWN_NIC) || (pTxD->CipherOwn == DESC_OWN_NIC)) - { - // Descriptor owned by NIC. No descriptor avaliable - // This should not happen since caller guaranteed. - // Make sure to release Tx ring resource - pAdapter->RalinkCounters.TxRingErrCount++; - spin_unlock(&pAdapter->TxRingLock); - return; - } - if (pTxD->Valid == TRUE) - { - // Ndis packet of last round did not cleared. - // This should not happen since caller guaranteed. - // Make sure to release Tx ring resource - pTxD->Valid = FALSE; - -#ifdef BIG_ENDIAN - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pDestTxD = TxD; -#endif - - pAdapter->RalinkCounters.TxRingErrCount++; - spin_unlock(&pAdapter->TxRingLock); - return; - } - - // Copy whole frame to Tx ring buffer - memcpy(pDest, pPacket, Len); - pDest += Len; - - if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) - { - INT i; - - i = 0; - // Prepare 8 bytes TKIP encapsulation for MPDU - { - TKIP_IV tkipIv; - - tkipIv.IV16.field.rc0 = *(pWpaKey->TxTsc + 1); - tkipIv.IV16.field.rc1 = (tkipIv.IV16.field.rc0 | 0x20) & 0x7f; - tkipIv.IV16.field.rc2 = *pWpaKey->TxTsc; - tkipIv.IV16.field.Rsvd = 0; - tkipIv.IV16.field.ExtIV = 1; // 0: non-extended IV, 1: an extended IV - tkipIv.IV16.field.KeyID = 0; - tkipIv.IV32 = *(PULONG)(pWpaKey->TxTsc + 2); - - pTxD->Iv = tkipIv.IV16.word; - - *((PUCHAR) &pTxD->Eiv) = *((PUCHAR) &tkipIv.IV32 + 3); - *((PUCHAR) &pTxD->Eiv + 1) = *((PUCHAR) &tkipIv.IV32 + 2); - *((PUCHAR) &pTxD->Eiv + 2) = *((PUCHAR) &tkipIv.IV32 + 1); - *((PUCHAR) &pTxD->Eiv + 3) = *((PUCHAR) &tkipIv.IV32); - } - - // Increase TxTsc value for next transmission - while (++pWpaKey->TxTsc[i] == 0x0) - { - i++; - if (i == 6) - break; - } - - // Set IV offset - pTxD->IvOffset = LENGTH_802_11; - - // Copy TKey - memcpy(pTxD->Key, pWpaKey->Key, 16); - - // Set Cipher suite - CipherAlg = CIPHER_TKIP; - - // Calculate MIC value - // Init MIC value calculation and reset the message - pAdapter->PrivateInfo.Tx.L = RTMPTkipGetUInt32(pWpaKey->TxMic); - pAdapter->PrivateInfo.Tx.R = RTMPTkipGetUInt32(pWpaKey->TxMic + 4); - pAdapter->PrivateInfo.Tx.nBytesInM = 0; - pAdapter->PrivateInfo.Tx.M = 0; - - // DA & SA field - RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pSrc + 4, 12); - - // Priority + 3 bytes of 0 - RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, Priority, 4); - - pSrc += LENGTH_802_11; - RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pSrc, Len - LENGTH_802_11); - RTMPTkipGetMIC(&pAdapter->PrivateInfo.Tx); - // Append MIC - memcpy(pDest, pAdapter->PrivateInfo.Tx.MIC, 8); - Len += 8; - // IV + EIV + ICV which ASIC added after encryption done - Len += 12; - } - else if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) - { - INT i; - PUCHAR pTmp; - - i = 0; - pTmp = (PUCHAR) &Iv16; - *pTmp = pWpaKey->TxTsc[0]; - *(pTmp + 1) = pWpaKey->TxTsc[1]; - *(pTmp + 2) = 0; - *(pTmp + 3) = 0x20; - - Iv32 = *(PULONG)(&pWpaKey->TxTsc[2]); - - // Increase TxTsc value for next transmission - while (++pWpaKey->TxTsc[i] == 0x0) - { - i++; - if (i == 6) - break; - } - - // Copy IV - memcpy(&pTxD->Iv, &Iv16, 4); - - // Copy EIV - memcpy(&pTxD->Eiv, &Iv32, 4); - - // Set IV offset - pTxD->IvOffset = LENGTH_802_11; - - // Copy TKey - memcpy(pTxD->Key, pWpaKey->Key, 16); - - // Set Cipher suite - CipherAlg = CIPHER_AES; - - // IV + EIV + HW MIC - Len += 16; - } - -#ifdef BIG_ENDIAN - RTMPFrameEndianChange(pAdapter, pOriginDest, DIR_WRITE, FALSE); - RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); - *pDestTxD = TxD; - pTxD = pDestTxD; -#endif - - RTMPWriteTxDescriptor(pTxD, TRUE, CipherAlg, TRUE, FALSE, FALSE, RetryMode, FrameGap, - pAdapter->PortCfg.TxRate, 4, Len, pAdapter->PortCfg.TxPreambleInUsed, 0); - - // Increase & maintain Tx Ring Index - pAdapter->CurEncryptIndex++; - if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) - { - pAdapter->CurEncryptIndex = 0; - } - pAdapter->RalinkCounters.EncryptCount++; - - // Kick Encrypt Control Register at the end of all ring buffer preparation - RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); - - // Make sure to release Tx ring resource - spin_unlock(&pAdapter->TxRingLock); -} - -/* - ======================================================================== - - Routine Description: - SHA1 function - - Arguments: - - Return Value: - - Note: - - ======================================================================== -*/ -VOID HMAC_SHA1( - IN UCHAR *text, - IN UINT text_len, - IN UCHAR *key, - IN UINT key_len, - IN UCHAR *digest) -{ - SHA_CTX context; - UCHAR k_ipad[65]; /* inner padding - key XORd with ipad */ - UCHAR k_opad[65]; /* outer padding - key XORd with opad */ - INT i; - - // if key is longer than 64 bytes reset it to key=SHA1(key) - if (key_len > 64) - { - SHA_CTX tctx; - SHAInit(&tctx); - SHAUpdate(&tctx, key, key_len); - SHAFinal(&tctx, key); - key_len = 20; - } - memset(k_ipad, 0, sizeof(k_ipad)); - memset(k_opad, 0, sizeof(k_opad)); - memcpy(k_ipad, key, key_len); - memcpy(k_opad, key, key_len); - - // XOR key with ipad and opad values - for (i = 0; i < 64; i++) - { - k_ipad[i] ^= 0x36; - k_opad[i] ^= 0x5c; - } - - // perform inner SHA1 - SHAInit(&context); /* init context for 1st pass */ - SHAUpdate(&context, k_ipad, 64); /* start with inner pad */ - SHAUpdate(&context, text, text_len); /* then text of datagram */ - SHAFinal(&context, digest); /* finish up 1st pass */ - - //perform outer SHA1 - SHAInit(&context); /* init context for 2nd pass */ - SHAUpdate(&context, k_opad, 64); /* start with outer pad */ - SHAUpdate(&context, digest, 20); /* then results of 1st hash */ - SHAFinal(&context, digest); /* finish up 2nd pass */ -} - -/* - ======================================================================== - - Routine Description: - PRF function - - Arguments: - - Return Value: - - Note: - 802.1i Annex F.9 - - ======================================================================== -*/ -VOID PRF( - IN UCHAR *key, - IN INT key_len, - IN UCHAR *prefix, - IN INT prefix_len, - IN UCHAR *data, - IN INT data_len, - OUT UCHAR *output, - IN INT len) -{ - INT i; - UCHAR input[1024]; - INT currentindex = 0; - INT total_len; - - memcpy(input, prefix, prefix_len); - input[prefix_len] = 0; - memcpy(&input[prefix_len + 1], data, data_len); - total_len = prefix_len + 1 + data_len; - input[total_len] = 0; - total_len++; - for (i = 0; i < (len + 19) / 20; i++) - { - HMAC_SHA1(input, total_len, key, key_len, &output[currentindex]); - currentindex += 20; - input[total_len - 1]++; - } -} - -/* - ======================================================================== - - Routine Description: - Count TPTK from PMK - - Arguments: - - Return Value: - Output Store the TPTK - - Note: - - ======================================================================== -*/ -VOID WpaCountPTK( - IN UCHAR *PMK, - IN UCHAR *ANonce, - IN UCHAR *AA, - IN UCHAR *SNonce, - IN UCHAR *SA, - OUT UCHAR *output, - IN UINT len) -{ - UCHAR concatenation[76]; - UINT CurrPos = 0; - UCHAR temp[32]; - UCHAR Prefix[] = {'P', 'a', 'i', 'r', 'w', 'i', 's', 'e', ' ', 'k', 'e', 'y', ' ', - 'e', 'x', 'p', 'a', 'n', 's', 'i', 'o', 'n'}; - - memset(temp, 0, sizeof(temp)); - - // Get smaller address - if (RTMPCompareMemory(SA, AA, 6) == 1) - memcpy(concatenation, AA, 6); - else - memcpy(concatenation, SA, 6); - CurrPos += 6; - - // Get larger address - if (RTMPCompareMemory(SA, AA, 6) == 1) - memcpy(&concatenation[CurrPos], SA, 6); - else - memcpy(&concatenation[CurrPos], AA, 6); - CurrPos += 6; - - // Get smaller address - if (RTMPCompareMemory(ANonce, SNonce, 32) == 1) - memcpy(&concatenation[CurrPos], SNonce, 32); - else - memcpy(&concatenation[CurrPos], ANonce, 32); - CurrPos += 32; - - // Get larger address - if (RTMPCompareMemory(ANonce, SNonce, 32) == 1) - memcpy(&concatenation[CurrPos], ANonce, 32); - else - memcpy(&concatenation[CurrPos], SNonce, 32); - CurrPos += 32; - - PRF(PMK, LEN_MASTER_KEY, Prefix, 22, concatenation, 76 , output, len); -} - -/* - ======================================================================== - - Routine Description: - Misc function to Generate random number - - Arguments: - - Return Value: - - Note: - 802.1i Annex F.9 - - ======================================================================== -*/ -VOID GenRandom( - IN PRTMP_ADAPTER pAd, - OUT UCHAR *random) -{ - INT i, curr; - UCHAR local[80], KeyCounter[32]; - UCHAR result[80]; - ULONG CurrentTime; - UCHAR prefix[] = {'I', 'n', 'i', 't', ' ', 'C', 'o', 'u', 'n', 't', 'e', 'r'}; - - memset(result, 0, 80); - memset(local, 0, 80); - memset(KeyCounter, 0, 32); - memcpy(local, pAd->CurrentAddress, ETH_ALEN); - - for (i = 0; i < 32; i++) - { - curr = ETH_ALEN; - CurrentTime = jiffies; - memcpy(local, pAd->CurrentAddress, ETH_ALEN); - curr += ETH_ALEN; - memcpy(&local[curr], &CurrentTime, sizeof(CurrentTime)); - curr += sizeof(CurrentTime); - memcpy(&local[curr], result, 32); - curr += 32; - memcpy(&local[curr], &i, 2); - curr += 2; - PRF(KeyCounter, 32, prefix,12, local, curr, result, 32); - } - memcpy(random, result, 32); -} - -/* - ======================================================================== - - Routine Description: - Misc function to decrypt AES body - - Arguments: - - Return Value: - - Note: - This function references to RFC 3394 for aes key unwrap algorithm. - - ======================================================================== -*/ -VOID AES_GTK_KEY_UNWRAP( - IN UCHAR *key, - OUT UCHAR *plaintext, - IN UCHAR *ciphertext) -{ - UCHAR A[8], BIN[16], BOUT[16]; - UCHAR R1[8],R2[8]; - UCHAR xor; - INT num_blocks = 2; - INT j; - aes_context aesctx; - - // Initialize - // A = C[0] - memcpy(A, ciphertext, 8); - // R1 = C1 - memcpy(R1, &ciphertext[8], 8); - // R2 = C2 - memcpy(R2, &ciphertext[16], 8); - - aes_set_key(&aesctx, key, 128); - - for (j = 5; j >= 0; j--) - { - xor = num_blocks * j + 2; - memcpy(BIN, A, 8); - BIN[7] = A[7] ^ xor; - memcpy(&BIN[8], R2, 8); - aes_decrypt(&aesctx, BIN, BOUT); - memcpy(A, &BOUT[0], 8); - memcpy(R2, &BOUT[8], 8); - - xor = num_blocks * j + 1; - memcpy(BIN, A, 8); - BIN[7] = A[7] ^ xor; - memcpy(&BIN[8], R1, 8); - aes_decrypt(&aesctx, BIN, BOUT); - memcpy(A, &BOUT[0], 8); - memcpy(R1, &BOUT[8], 8); - } - - // OUTPUT - memcpy(&plaintext[0], R1, 8); - memcpy(&plaintext[8], R2, 8); -} +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: wpa.c + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * JanL 22nd Jul 03 Initial code + * PaulL 28th Nov 03 Modify for supplicant + * MarkW 8th Dec 04 Baseline code + ***************************************************************************/ + +#include "rt_config.h" + +UCHAR CipherWpaPskTkip[] = { + 0xDD, 0x16, // RSN IE + 0x00, 0x50, 0xf2, 0x01, // oui + 0x01, 0x00, // Version + 0x00, 0x50, 0xf2, 0x02, // Multicast + 0x01, 0x00, // Number of unicast + 0x00, 0x50, 0xf2, 0x02, // unicast + 0x01, 0x00, // number of authentication method + 0x00, 0x50, 0xf2, 0x02 // authentication + }; +UCHAR CipherWpaPskTkipLen = (sizeof(CipherWpaPskTkip) / sizeof(UCHAR)); + +UCHAR CipherWpaPskAes[] = { + 0xDD, 0x16, // RSN IE + 0x00, 0x50, 0xf2, 0x01, // oui + 0x01, 0x00, // Version + 0x00, 0x50, 0xf2, 0x04, // Multicast + 0x01, 0x00, // Number of unicast + 0x00, 0x50, 0xf2, 0x04, // unicast + 0x01, 0x00, // number of authentication method + 0x00, 0x50, 0xf2, 0x02 // authentication + }; +UCHAR CipherWpaPskAesLen = (sizeof(CipherWpaPskAes) / sizeof(UCHAR)); + +/* + ======================================================================== + + Routine Description: + Classify WPA EAP message type + + Arguments: + EAPType Value of EAP message type + MsgType Internal Message definition for MLME state machine + + Return Value: + TRUE Found appropriate message type + FALSE No appropriate message type + + Note: + All these constants are defined in wpa.h + For supplicant, there is only EAPOL Key message avaliable + + ======================================================================== +*/ +BOOLEAN WpaMsgTypeSubst( + IN UCHAR EAPType, + OUT ULONG *MsgType) +{ + switch (EAPType) + { + case EAPPacket: + *MsgType = EAP_MSG_TYPE_EAPPacket; + break; + case EAPOLStart: + *MsgType = EAP_MSG_TYPE_EAPOLStart; + break; + case EAPOLLogoff: + *MsgType = EAP_MSG_TYPE_EAPOLLogoff; + break; + case EAPOLKey: + *MsgType = EAP_MSG_TYPE_EAPOLKey; + break; + case EAPOLASFAlert: + *MsgType = EAP_MSG_TYPE_EAPOLASFAlert; + break; + default: + DBGPRINT(RT_DEBUG_INFO, "WpaMsgTypeSubst : return FALSE; \n"); + return FALSE; + } + return TRUE; +} + +/* + ========================================================================== + Description: + association state machine init, including state transition and timer init + Parameters: + S - pointer to the association state machine + ========================================================================== + */ +VOID WpaPskStateMachineInit( + IN PRTMP_ADAPTER pAd, + IN STATE_MACHINE *S, + OUT STATE_MACHINE_FUNC Trans[]) +{ + StateMachineInit(S, (STATE_MACHINE_FUNC*)Trans, MAX_WPA_PSK_STATE, MAX_WPA_PSK_MSG, (STATE_MACHINE_FUNC)Drop, WPA_PSK_IDLE, WPA_MACHINE_BASE); + StateMachineSetAction(S, WPA_PSK_IDLE, EAP_MSG_TYPE_EAPOLKey, (STATE_MACHINE_FUNC)WpaEAPOLKeyAction); +} + +/* + ========================================================================== + Description: + This is state machine function. + When receiving EAPOL packets which is for 802.1x key management. + Use both in WPA, and WPAPSK case. + In this function, further dispatch to different functions according to the received packet. 3 categories are : + 1. normal 4-way pairwisekey and 2-way groupkey handshake + 2. MIC error (Countermeasures attack) report packet from STA. + 3. Request for pairwise/group key update from STA + Return: + ========================================================================== +*/ +VOID WpaEAPOLKeyAction( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem) +{ + INT MsgType; + UCHAR ZeroReplay[LEN_KEY_DESC_REPLAY]; + PKEY_DESCRIPTER pKeyDesc; + + DBGPRINT(RT_DEBUG_TRACE, "-----> WpaEAPOLKeyAction\n"); + // Get 802.11 header first + pKeyDesc = (PKEY_DESCRIPTER) &Elem->Msg[(LENGTH_802_11 + LENGTH_802_1_H + LENGTH_EAPOL_H)]; + +#ifdef BIG_ENDIAN + *(USHORT *)((UCHAR *)pKeyDesc+1) = SWAP16(*(USHORT *)((UCHAR *)pKeyDesc+1)); +#endif + // Sanity check, this should only happen in WPA-PSK mode + if (pAdapter->PortCfg.AuthMode != Ndis802_11AuthModeWPAPSK) + return; + + // 0. Debug print all bit information + DBGPRINT(RT_DEBUG_INFO, "KeyInfo Key Description Version %d\n", pKeyDesc->KeyInfo.KeyDescVer); + DBGPRINT(RT_DEBUG_INFO, "KeyInfo Key Type %d\n", pKeyDesc->KeyInfo.KeyType); + DBGPRINT(RT_DEBUG_INFO, "KeyInfo Key Index %d\n", pKeyDesc->KeyInfo.KeyIndex); + DBGPRINT(RT_DEBUG_INFO, "KeyInfo Install %d\n", pKeyDesc->KeyInfo.Install); + DBGPRINT(RT_DEBUG_INFO, "KeyInfo Key Ack %d\n", pKeyDesc->KeyInfo.KeyAck); + DBGPRINT(RT_DEBUG_INFO, "KeyInfo Key MIC %d\n", pKeyDesc->KeyInfo.KeyMic); + DBGPRINT(RT_DEBUG_INFO, "KeyInfo Secure %d\n", pKeyDesc->KeyInfo.Secure); + DBGPRINT(RT_DEBUG_INFO, "KeyInfo Error %d\n", pKeyDesc->KeyInfo.Error); + DBGPRINT(RT_DEBUG_INFO, "KeyInfo Request %d\n", pKeyDesc->KeyInfo.Request); + DBGPRINT(RT_DEBUG_INFO, "KeyInfo DL %d\n", pKeyDesc->KeyInfo.DL); + + // 1. Check EAPOL frame version and type + if ((Elem->Msg[LENGTH_802_11+LENGTH_802_1_H] != EAPOL_VER) || (pKeyDesc->Type != RSN_KEY_DESC)) + { + DBGPRINT(RT_DEBUG_ERROR, " Key descripter does not match with WPA rule \n"); + return; + } + + // 2.Check Version for AES & TKIP + if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) && (pKeyDesc->KeyInfo.KeyDescVer != DESC_TYPE_AES)) + { + DBGPRINT(RT_DEBUG_ERROR, " Key descripter version not match AES \n"); + return; + } + else if ((pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) && (pKeyDesc->KeyInfo.KeyDescVer != DESC_TYPE_TKIP)) + { + DBGPRINT(RT_DEBUG_ERROR, " Key descripter version not match TKIP \n"); + return; + } + + // First validate replay counter, only accept message with larger replay counter + // Let equal pass, some AP start with all zero replay counter + memset(ZeroReplay, 0, LEN_KEY_DESC_REPLAY); + if ((RTMPCompareMemory(pKeyDesc->ReplayCounter, pAdapter->PortCfg.ReplayCounter, LEN_KEY_DESC_REPLAY) != 1) && + (RTMPCompareMemory(pKeyDesc->ReplayCounter, ZeroReplay, LEN_KEY_DESC_REPLAY) != 0)) + return; + + // Classify message Type, either pairwise message 1, 3, or group message 1 for supplicant + MsgType = EAPOL_MSG_INVALID; + if ((pKeyDesc->KeyInfo.KeyType == 1) && + (pKeyDesc->KeyInfo.KeyIndex == 0) && + (pKeyDesc->KeyInfo.KeyAck == 1) && + (pKeyDesc->KeyInfo.KeyMic == 0) && + (pKeyDesc->KeyInfo.Secure == 0) && + (pKeyDesc->KeyInfo.Error == 0) && + (pKeyDesc->KeyInfo.Request == 0)) + { + MsgType = EAPOL_PAIR_MSG_1; + DBGPRINT(RT_DEBUG_TRACE, "Receive EAPOL Key Pairwise Message 1\n"); + } + else if ((pKeyDesc->KeyInfo.KeyType == 1) && + (pKeyDesc->KeyInfo.KeyIndex == 0) && + (pKeyDesc->KeyInfo.KeyAck == 1) && + (pKeyDesc->KeyInfo.KeyMic == 1) && + (pKeyDesc->KeyInfo.Secure == 0) && + (pKeyDesc->KeyInfo.Error == 0) && + (pKeyDesc->KeyInfo.Request == 0)) + { + MsgType = EAPOL_PAIR_MSG_3; + DBGPRINT(RT_DEBUG_TRACE, "Receive EAPOL Key Pairwise Message 3\n"); + } + else if ((pKeyDesc->KeyInfo.KeyType == 0) && + (pKeyDesc->KeyInfo.KeyIndex != 0) && + (pKeyDesc->KeyInfo.KeyAck == 1) && + (pKeyDesc->KeyInfo.KeyMic == 1) && + (pKeyDesc->KeyInfo.Secure == 1) && + (pKeyDesc->KeyInfo.Error == 0) && + (pKeyDesc->KeyInfo.Request == 0)) + { + MsgType = EAPOL_GROUP_MSG_1; + DBGPRINT(RT_DEBUG_TRACE, "Receive EAPOL Key Group Message 1\n"); + } + +#ifdef BIG_ENDIAN + *(USHORT *)((UCHAR *)pKeyDesc+1) = SWAP16(*(USHORT *)((UCHAR *)pKeyDesc+1)); +#endif + + // We will assume link is up (assoc suceess and port not secured). + // All state has to be able to process message from previous state + switch (pAdapter->PortCfg.WpaState) + { + case SS_START: + if (MsgType == EAPOL_PAIR_MSG_1) + { + WpaPairMsg1Action(pAdapter, Elem); + pAdapter->PortCfg.WpaState = SS_WAIT_MSG_3; + } + break; + + case SS_WAIT_MSG_3: + if (MsgType == EAPOL_PAIR_MSG_1) + { + WpaPairMsg1Action(pAdapter, Elem); + pAdapter->PortCfg.WpaState = SS_WAIT_MSG_3; + } + else if (MsgType == EAPOL_PAIR_MSG_3) + { + WpaPairMsg3Action(pAdapter, Elem); + pAdapter->PortCfg.WpaState = SS_WAIT_GROUP; + } + break; + + case SS_WAIT_GROUP: // When doing group key exchange + case SS_FINISH: // This happened when update group key + if (MsgType == EAPOL_PAIR_MSG_1) + { + WpaPairMsg1Action(pAdapter, Elem); + pAdapter->PortCfg.WpaState = SS_WAIT_MSG_3; + // Reset port secured variable + pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED; + } + else if (MsgType == EAPOL_PAIR_MSG_3) + { + WpaPairMsg3Action(pAdapter, Elem); + pAdapter->PortCfg.WpaState = SS_WAIT_GROUP; + // Reset port secured variable + pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED; + } + else if (MsgType == EAPOL_GROUP_MSG_1) + { + WpaGroupMsg1Action(pAdapter, Elem); + pAdapter->PortCfg.WpaState = SS_FINISH; + } + break; + + default: + break; + } + + DBGPRINT(RT_DEBUG_TRACE, "<----- WpaEAPOLKeyAction\n"); +} + +/* + ======================================================================== + + Routine Description: + Process Pairwise key 4-way handshaking + + Arguments: + pAdapter Pointer to our adapter + Elem Message body + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID WpaPairMsg1Action( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem) +{ + PHEADER_802_11 pHeader; + UCHAR PTK[80]; + UCHAR *OutBuffer = NULL; + HEADER_802_11 Header_802_11; + NDIS_STATUS NStatus; + UCHAR AckRate = RATE_2; + USHORT AckDuration = 0; + ULONG FrameLen = 0; + UCHAR EAPHEAD[8] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00,0x88,0x8e}; + PEAPOL_PACKET pMsg1; + EAPOL_PACKET Packet; + UCHAR Mic[16]; + + DBGPRINT(RT_DEBUG_TRACE, "WpaPairMsg1Action ----->\n"); + + pHeader = (PHEADER_802_11) Elem->Msg; + + // Save Data Length to pDesc for receiving packet, then put in outgoing frame Data Len fields. + pMsg1 = (PEAPOL_PACKET) &Elem->Msg[LENGTH_802_11 + LENGTH_802_1_H]; + + // Process message 1 from authenticator + // Key must be Pairwise key, already verified at callee. + // 1. Save Replay counter, it will use to verify message 3 and construct message 2 + memcpy(pAdapter->PortCfg.ReplayCounter, pMsg1->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY); + + // 2. Save ANonce + memcpy(pAdapter->PortCfg.ANonce, pMsg1->KeyDesc.KeyNonce, LEN_KEY_DESC_NONCE); + + // TSNonce <--- SNonce + // Generate random SNonce + GenRandom(pAdapter, pAdapter->PortCfg.SNonce); + + // TPTK <--- Calc PTK(ANonce, TSNonce) + WpaCountPTK(pAdapter->PortCfg.PskKey.Key, + pAdapter->PortCfg.ANonce, + pAdapter->PortCfg.Bssid.Octet, + pAdapter->PortCfg.SNonce, + pAdapter->CurrentAddress, + PTK, + LEN_PTK); + + // Save key to PTK entry + memcpy(pAdapter->PortCfg.PTK, PTK, LEN_PTK); + + // ===================================== + // Use Priority Ring & MiniportMMRequest + // ===================================== + pAdapter->Sequence = ((pAdapter->Sequence) + 1) & (MAX_SEQ_NUMBER); + WpaMacHeaderInit(pAdapter, &Header_802_11, 0, &pAdapter->PortCfg.Bssid); + + // ACK size is 14 include CRC, and its rate is based on real time information + AckRate = pAdapter->PortCfg.ExpectedACKRate[pAdapter->PortCfg.TxRate]; + AckDuration = RTMPCalcDuration(pAdapter, AckRate, 14); + Header_802_11.Controlhead.Duration = pAdapter->PortCfg.Dsifs + AckDuration; + + // Zero message 2 body + memset(&Packet, 0, sizeof(Packet)); + Packet.Version = EAPOL_VER; + Packet.Type = EAPOLKey; + // + // Message 2 as EAPOL-Key(0,1,0,0,0,P,0,SNonce,MIC,RSN IE) + // + Packet.KeyDesc.Type = RSN_KEY_DESC; + // 1. Key descriptor version and appropriate RSN IE + if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) + { + Packet.KeyDesc.KeyInfo.KeyDescVer = 2; + Packet.KeyDesc.KeyDataLen[1] = CipherWpaPskAesLen; + memcpy(Packet.KeyDesc.KeyData, CipherWpaPskAes, CipherWpaPskAesLen); + } + else // TKIP + { + Packet.KeyDesc.KeyInfo.KeyDescVer = 1; + Packet.KeyDesc.KeyDataLen[1] = CipherWpaPskTkipLen; + memcpy(Packet.KeyDesc.KeyData, CipherWpaPskTkip, CipherWpaPskTkipLen); + } + // Update packet length after decide Key data payload + Packet.Len[1] = sizeof(KEY_DESCRIPTER) - MAX_LEN_OF_RSNIE + Packet.KeyDesc.KeyDataLen[1]; + + // 2. Key Type PeerKey + Packet.KeyDesc.KeyInfo.KeyType = 1; + + // 3. KeyMic field presented + Packet.KeyDesc.KeyInfo.KeyMic = 1; + + // 4. Fill SNonce + memcpy(Packet.KeyDesc.KeyNonce, pAdapter->PortCfg.SNonce, LEN_KEY_DESC_NONCE); + + // 5. Key Replay Count + memcpy(Packet.KeyDesc.ReplayCounter, pAdapter->PortCfg.ReplayCounter, LEN_KEY_DESC_REPLAY); + +#ifdef BIG_ENDIAN + *(USHORT *)(&(Packet.KeyDesc.KeyInfo)) = SWAP16(*(USHORT *)(&(Packet.KeyDesc.KeyInfo))); +#endif + + // Send EAPOL(0, 1, 0, 0, 0, K, 0, TSNonce, 0, MIC(TPTK), 0) + // Out buffer for transmitting message 2 + NStatus = MlmeAllocateMemory(pAdapter, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if (NStatus != NDIS_STATUS_SUCCESS) + return; + + // Prepare EAPOL frame for MIC calculation + // Be careful, only EAPOL frame is counted for MIC calculation + MakeOutgoingFrame(OutBuffer, &FrameLen, + Packet.Len[1] + 4, &Packet, + END_OF_ARGS); + + // 5. Prepare and Fill MIC value + memset(Mic, 0, sizeof(Mic)); + if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) + { + // AES + UCHAR digest[80]; + + HMAC_SHA1(OutBuffer, FrameLen, PTK, LEN_EAP_MICK, digest); + memcpy(Mic, digest, LEN_KEY_DESC_MIC); + } + else + { + INT i; + DBGPRINT(RT_DEBUG_INFO, " PMK = "); + for (i = 0; i < 16; i++) + DBGPRINT(RT_DEBUG_INFO, "%2x-", pAdapter->PortCfg.PskKey.Key[i]); + + DBGPRINT(RT_DEBUG_INFO, "\n PTK = "); + for (i = 0; i < 64; i++) + DBGPRINT(RT_DEBUG_INFO, "%2x-", pAdapter->PortCfg.PTK[i]); + DBGPRINT(RT_DEBUG_INFO, "\n FrameLen = %d\n", FrameLen); + + hmac_md5(PTK, LEN_EAP_MICK, OutBuffer, FrameLen, Mic); + } + memcpy(Packet.KeyDesc.KeyMic, Mic, LEN_KEY_DESC_MIC); + + FrameLen = 0; + // Make Transmitting frame + MakeOutgoingFrame(OutBuffer, &FrameLen, sizeof(MACHDR), &Header_802_11, + sizeof(EAPHEAD), EAPHEAD, + Packet.Len[1] + 4, &Packet, + END_OF_ARGS); + + // Send using priority queue + MiniportMMRequest(pAdapter, OutBuffer, FrameLen); + + DBGPRINT(RT_DEBUG_TRACE, "WpaPairMsg1Action <-----\n"); +} + +/* + ======================================================================== + + Routine Description: + Process Pairwise key 4-way handshaking + + Arguments: + pAdapter Pointer to our adapter + Elem Message body + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID WpaPairMsg3Action( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem) +{ + PHEADER_802_11 pHeader; + UCHAR *OutBuffer = NULL; + HEADER_802_11 Header_802_11; + NDIS_STATUS NStatus; + UCHAR AckRate = RATE_2; + USHORT AckDuration = 0; + ULONG FrameLen = 0; + UCHAR EAPHEAD[8] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00,0x88,0x8e}; + EAPOL_PACKET Packet; + PEAPOL_PACKET pMsg3; + PUCHAR pTmp; + UCHAR Mic[16], OldMic[16]; + NDIS_802_11_KEY PeerKey; + + + DBGPRINT(RT_DEBUG_TRACE, "WpaPairMsg3Action ----->\n"); + + pHeader = (PHEADER_802_11) Elem->Msg; + + // Process message 3 frame. + pMsg3 = (PEAPOL_PACKET) &Elem->Msg[LENGTH_802_11 + LENGTH_802_1_H]; + +#ifdef BIG_ENDIAN + *(USHORT *)(&(pMsg3->KeyDesc.KeyInfo)) = SWAP16(*(USHORT *)(&(pMsg3->KeyDesc.KeyInfo))); +#endif + + // 1. Verify RSN IE & cipher type match + if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) + { + if (pMsg3->KeyDesc.KeyInfo.KeyDescVer != 2) + return; + pTmp = (PUCHAR) &CipherWpaPskAes; + } + else // TKIP + { + if (pMsg3->KeyDesc.KeyInfo.KeyDescVer != 1) + return; + pTmp = (PUCHAR) &CipherWpaPskTkip; + } + + // Fix compatibility issue, when AP append nonsense data after auth mode with different size. + // We should qualify this kind of RSN as acceptable + if (!NdisEqualMemory((PUCHAR) &pMsg3->KeyDesc.KeyData[2], pTmp + 2, CipherWpaPskTkipLen - 2)) + { + DBGPRINT(RT_DEBUG_ERROR, " RSN IE mismatched msg 3 of 4-way handshake!!!!!!!!!! \n"); + return; + } + else + DBGPRINT(RT_DEBUG_TRACE, " RSN IE matched in msg 3 of 4-way handshake!!!!!!!!!! \n"); + +#ifdef BIG_ENDIAN + *(USHORT *)(&(pMsg3->KeyDesc.KeyInfo)) = SWAP16(*(USHORT *)(&(pMsg3->KeyDesc.KeyInfo))); +#endif + + // 2. Check MIC value + // Save the MIC and replace with zero + memcpy(OldMic, pMsg3->KeyDesc.KeyMic, LEN_KEY_DESC_MIC); + memset(pMsg3->KeyDesc.KeyMic, 0, LEN_KEY_DESC_MIC); + if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) + { + // AES + UCHAR digest[80]; + + HMAC_SHA1((PUCHAR) pMsg3, pMsg3->Len[1] + 4, pAdapter->PortCfg.PTK, LEN_EAP_MICK, digest); + memcpy(Mic, digest, LEN_KEY_DESC_MIC); + } + else + { + hmac_md5(pAdapter->PortCfg.PTK, LEN_EAP_MICK, (PUCHAR) pMsg3, pMsg3->Len[1] + 4, Mic); + } + + if (!NdisEqualMemory(OldMic, Mic, LEN_KEY_DESC_MIC)) + { + DBGPRINT(RT_DEBUG_ERROR, " MIC Different in msg 3 of 4-way handshake!!!!!!!!!! \n"); + return; + } + else + DBGPRINT(RT_DEBUG_TRACE, " MIC VALID in msg 3 of 4-way handshake!!!!!!!!!! \n"); + + // 3. Check Replay Counter, it has to be larger than last one. No need to be exact one larger + if (RTMPCompareMemory(pMsg3->KeyDesc.ReplayCounter, pAdapter->PortCfg.ReplayCounter, LEN_KEY_DESC_REPLAY) != 1) + return; + + // Update new replay counter + memcpy(pAdapter->PortCfg.ReplayCounter, pMsg3->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY); + + // 4. Double check ANonce + if (!NdisEqualMemory(pAdapter->PortCfg.ANonce, pMsg3->KeyDesc.KeyNonce, LEN_KEY_DESC_NONCE)) + return; + + // 5. Construct Message 4 + // ===================================== + // Use Priority Ring & MiniportMMRequest + // ===================================== + pAdapter->Sequence = ((pAdapter->Sequence) + 1) & (MAX_SEQ_NUMBER); + WpaMacHeaderInit(pAdapter, &Header_802_11, 0, &pAdapter->PortCfg.Bssid); + + // ACK size is 14 include CRC, and its rate is based on real time information + AckRate = pAdapter->PortCfg.ExpectedACKRate[pAdapter->PortCfg.TxRate]; + AckDuration = RTMPCalcDuration(pAdapter, AckRate, 14); + Header_802_11.Controlhead.Duration = pAdapter->PortCfg.Dsifs + AckDuration; + + // Zero message 4 body + memset(&Packet, 0, sizeof(Packet)); + Packet.Version = EAPOL_VER; + Packet.Type = EAPOLKey; + Packet.Len[1] = sizeof(KEY_DESCRIPTER) - MAX_LEN_OF_RSNIE; // No data field + + // + // Message 4 as EAPOL-Key(0,1,0,0,0,P,0,0,MIC,0) + // + Packet.KeyDesc.Type = RSN_KEY_DESC; + +#ifdef BIG_ENDIAN + *(USHORT *)(&(pMsg3->KeyDesc.KeyInfo)) = SWAP16(*(USHORT *)(&(pMsg3->KeyDesc.KeyInfo))); +#endif + + // Key descriptor version and appropriate RSN IE + Packet.KeyDesc.KeyInfo.KeyDescVer = pMsg3->KeyDesc.KeyInfo.KeyDescVer; + + // Key Type PeerKey + Packet.KeyDesc.KeyInfo.KeyType = 1; + + // KeyMic field presented + Packet.KeyDesc.KeyInfo.KeyMic = 1; + + // Key Replay count + memcpy(Packet.KeyDesc.ReplayCounter, pMsg3->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY); +#ifdef BIG_ENDIAN + *(USHORT *)&Packet.KeyDesc.KeyInfo = SWAP16(*(USHORT *)&Packet.KeyDesc.KeyInfo); +#endif + + // Out buffer for transmitting message 4 + NStatus = MlmeAllocateMemory(pAdapter, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if (NStatus != NDIS_STATUS_SUCCESS) + return; + + // Prepare EAPOL frame for MIC calculation + // Be careful, only EAPOL frame is counted for MIC calculation + MakeOutgoingFrame(OutBuffer, &FrameLen, + Packet.Len[1] + 4, &Packet, + END_OF_ARGS); + + // Prepare and Fill MIC value + memset(Mic, 0, sizeof(Mic)); + if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) + { + // AES + UCHAR digest[80]; + + HMAC_SHA1(OutBuffer, FrameLen, pAdapter->PortCfg.PTK, LEN_EAP_MICK, digest); + memcpy(Mic, digest, LEN_KEY_DESC_MIC); + } + else + { + hmac_md5(pAdapter->PortCfg.PTK, LEN_EAP_MICK, OutBuffer, FrameLen, Mic); + } + memcpy(Packet.KeyDesc.KeyMic, Mic, LEN_KEY_DESC_MIC); + + FrameLen = 0; + + // Make Transmitting frame + MakeOutgoingFrame(OutBuffer, &FrameLen, sizeof(MACHDR), &Header_802_11, + sizeof(EAPHEAD), EAPHEAD, + Packet.Len[1] + 4, &Packet, + END_OF_ARGS); + + // 6. Send Message 4 to authenticator + // Send using priority queue + MiniportMMRequest(pAdapter, OutBuffer, FrameLen); + + // 7. Update PTK + memset(&PeerKey, 0, sizeof(PeerKey)); + PeerKey.Length = sizeof(PeerKey); + PeerKey.KeyIndex = 0xe0000000; + PeerKey.KeyLength = 16; + memcpy(PeerKey.BSSID, pAdapter->PortCfg.Bssid.Octet, 6); + memcpy(&PeerKey.KeyRSC, pMsg3->KeyDesc.KeyRsc, LEN_KEY_DESC_RSC); + memcpy(PeerKey.KeyMaterial, &pAdapter->PortCfg.PTK[32], 32); + // Call Add peer key function + RTMPWPAAddKeyProc(pAdapter, &PeerKey); + + DBGPRINT(RT_DEBUG_TRACE, "WpaPairMsg3Action <-----\n"); +} + + +/* + ======================================================================== + + Routine Description: + Process Group key 2-way handshaking + + Arguments: + pAdapter Pointer to our adapter + Elem Message body + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID WpaGroupMsg1Action( + IN PRTMP_ADAPTER pAdapter, + IN MLME_QUEUE_ELEM *Elem) +{ + PHEADER_802_11 pHeader; + UCHAR *OutBuffer = NULL; + HEADER_802_11 Header_802_11; + NDIS_STATUS NStatus; + UCHAR AckRate = RATE_2; + USHORT AckDuration = 0; + ULONG FrameLen = 0; + UCHAR EAPHEAD[8] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00,0x88,0x8e}; + EAPOL_PACKET Packet; + PEAPOL_PACKET pGroup; + UCHAR Mic[16], OldMic[16]; + UCHAR GTK[32], Key[32]; + NDIS_802_11_KEY GroupKey; + + + DBGPRINT(RT_DEBUG_TRACE, "WpaGroupMsg1Action ----->\n"); + + pHeader = (PHEADER_802_11) Elem->Msg; + + // Process Group message 1 frame. + pGroup = (PEAPOL_PACKET) &Elem->Msg[LENGTH_802_11 + LENGTH_802_1_H]; + + // 1. Verify Replay counter + // Check Replay Counter, it has to be larger than last one. No need to be exact one larger + if (RTMPCompareMemory(pGroup->KeyDesc.ReplayCounter, pAdapter->PortCfg.ReplayCounter, LEN_KEY_DESC_REPLAY) != 1) + return; + + // Update new replay counter + memcpy(pAdapter->PortCfg.ReplayCounter, pGroup->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY); + + // 2. Verify MIC is valid + // Save the MIC and replace with zero + memcpy(OldMic, pGroup->KeyDesc.KeyMic, LEN_KEY_DESC_MIC); + memset(pGroup->KeyDesc.KeyMic, 0, LEN_KEY_DESC_MIC); + if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) + { + // AES + UCHAR digest[80]; + + HMAC_SHA1((PUCHAR) pGroup, pGroup->Len[1] + 4, pAdapter->PortCfg.PTK, LEN_EAP_MICK, digest); + memcpy(Mic, digest, LEN_KEY_DESC_MIC); + } + else + { + hmac_md5(pAdapter->PortCfg.PTK, LEN_EAP_MICK, (PUCHAR) pGroup, pGroup->Len[1] + 4, Mic); + } + + if (!NdisEqualMemory(OldMic, Mic, LEN_KEY_DESC_MIC)) + { + DBGPRINT(RT_DEBUG_ERROR, " MIC Different in group msg 1 of 2-way handshake!!!!!!!!!! \n"); + return; + } + else + DBGPRINT(RT_DEBUG_TRACE, " MIC VALID in group msg 1 of 2-way handshake!!!!!!!!!! \n"); + +#ifdef BIG_ENDIAN + *(USHORT *)(&(pGroup->KeyDesc.KeyInfo)) = SWAP16(*(USHORT *)(&(pGroup->KeyDesc.KeyInfo))); +#endif + + // 3. Decrypt GTK from Key Data + if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) + { + if (pGroup->KeyDesc.KeyInfo.KeyDescVer != 2) + return; + // Decrypt AES GTK + AES_GTK_KEY_UNWRAP(&pAdapter->PortCfg.PTK[16], GTK, pGroup->KeyDesc.KeyData); + } + else // TKIP + { + INT i; + + if (pGroup->KeyDesc.KeyInfo.KeyDescVer != 1) + return; + // Decrypt TKIP GTK + // Construct 32 bytes RC4 Key + memcpy(Key, pGroup->KeyDesc.KeyIv, 16); + memcpy(&Key[16], &pAdapter->PortCfg.PTK[16], 16); + ARCFOUR_INIT(&pAdapter->PrivateInfo.WEPCONTEXT, Key, 32); + //discard first 256 bytes + for (i = 0; i < 256; i++) + ARCFOUR_BYTE(&pAdapter->PrivateInfo.WEPCONTEXT); + // Decrypt GTK. Becareful, there is no ICV to check the result is correct or not + ARCFOUR_DECRYPT(&pAdapter->PrivateInfo.WEPCONTEXT, GTK, pGroup->KeyDesc.KeyData, 32); + } + + // 4. Construct Group Message 2 + pAdapter->Sequence = ((pAdapter->Sequence) + 1) & (MAX_SEQ_NUMBER); + WpaMacHeaderInit(pAdapter, &Header_802_11, 1, &pAdapter->PortCfg.Bssid); + + // ACK size is 14 include CRC, and its rate is based on real time information + AckRate = pAdapter->PortCfg.ExpectedACKRate[pAdapter->PortCfg.TxRate]; + AckDuration = RTMPCalcDuration(pAdapter, AckRate, 14); + Header_802_11.Controlhead.Duration = pAdapter->PortCfg.Dsifs + AckDuration; + + // Zero Group message 1 body + memset(&Packet, 0, sizeof(Packet)); + Packet.Version = EAPOL_VER; + Packet.Type = EAPOLKey; + Packet.Len[1] = sizeof(KEY_DESCRIPTER) - MAX_LEN_OF_RSNIE; // No data field + + // + // Group Message 2 as EAPOL-Key(1,0,0,0,G,0,0,MIC,0) + // + Packet.KeyDesc.Type = RSN_KEY_DESC; + + // Key descriptor version and appropriate RSN IE + Packet.KeyDesc.KeyInfo.KeyDescVer = pGroup->KeyDesc.KeyInfo.KeyDescVer; + + // Key Type Group key + Packet.KeyDesc.KeyInfo.KeyType = 0; + + // KeyMic field presented + Packet.KeyDesc.KeyInfo.KeyMic = 1; + + // Secure bit is 1 + Packet.KeyDesc.KeyInfo.Secure = 1; + + // Key Replay count + memcpy(Packet.KeyDesc.ReplayCounter, pGroup->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY); + +#ifdef BIG_ENDIAN + *(USHORT *)(&(Packet.KeyDesc.KeyInfo)) = SWAP16(*(USHORT *)(&(Packet.KeyDesc.KeyInfo))); +#endif + + // Out buffer for transmitting group message 2 + NStatus = MlmeAllocateMemory(pAdapter, (PVOID)&OutBuffer); //Get an unused nonpaged memory + if (NStatus != NDIS_STATUS_SUCCESS) + return; + + // Prepare EAPOL frame for MIC calculation + // Be careful, only EAPOL frame is counted for MIC calculation + MakeOutgoingFrame(OutBuffer, &FrameLen, + Packet.Len[1] + 4, &Packet, + END_OF_ARGS); + + // Prepare and Fill MIC value + memset(Mic, 0, sizeof(Mic)); + if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) + { + // AES + UCHAR digest[80]; + + HMAC_SHA1(OutBuffer, FrameLen, pAdapter->PortCfg.PTK, LEN_EAP_MICK, digest); + memcpy(Mic, digest, LEN_KEY_DESC_MIC); + } + else + { + INT i; + DBGPRINT(RT_DEBUG_INFO, "PTK = "); + for (i = 0; i < 64; i++) + DBGPRINT(RT_DEBUG_INFO, "%2x-", pAdapter->PortCfg.PTK[i]); + DBGPRINT(RT_DEBUG_INFO, "\n FrameLen = %d\n", FrameLen); + + hmac_md5(pAdapter->PortCfg.PTK, LEN_EAP_MICK, OutBuffer, FrameLen, Mic); + } + memcpy(Packet.KeyDesc.KeyMic, Mic, LEN_KEY_DESC_MIC); + + FrameLen = 0; + // Make Transmitting frame + MakeOutgoingFrame(OutBuffer, &FrameLen, sizeof(MACHDR), &Header_802_11, + sizeof(EAPHEAD), EAPHEAD, + Packet.Len[1] + 4, &Packet, + END_OF_ARGS); + + // 5. Copy frame to Tx ring and prepare for encryption + WpaHardEncrypt(pAdapter, OutBuffer, FrameLen); + + // 6 Free allocated memory + MlmeFreeMemory(pAdapter, OutBuffer); + + // 6. Update GTK + memset(&GroupKey, 0, sizeof(GroupKey)); + GroupKey.Length = sizeof(GroupKey); + GroupKey.KeyIndex = 0x20000000 | pGroup->KeyDesc.KeyInfo.KeyIndex; + GroupKey.KeyLength = 16; + memcpy(GroupKey.BSSID, pAdapter->PortCfg.Bssid.Octet, 6); + memcpy(GroupKey.KeyMaterial, GTK, 32); + // Call Add peer key function + RTMPWPAAddKeyProc(pAdapter, &GroupKey); + + DBGPRINT(RT_DEBUG_TRACE, "WpaGroupMsg1Action <-----\n"); +} +/* + ======================================================================== + + Routine Description: + Init WPA MAC header + + Arguments: + pAdapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID WpaMacHeaderInit( + IN PRTMP_ADAPTER pAd, + IN OUT PHEADER_802_11 Hdr, + IN UCHAR wep, + IN PMACADDR pAddr1) +{ + memset(Hdr, 0, sizeof(HEADER_802_11)); + Hdr->Controlhead.Frame.Type = BTYPE_DATA; + Hdr->Controlhead.Frame.ToDs = 1; + if (wep == 1) + Hdr->Controlhead.Frame.Wep = 1; + + // Addr1: DA, Addr2: BSSID, Addr3: SA + COPY_MAC_ADDR(&Hdr->Controlhead.Addr1, pAddr1); + COPY_MAC_ADDR(&Hdr->Controlhead.Addr2, &pAd->CurrentAddress); + COPY_MAC_ADDR(&Hdr->Addr3, &pAd->PortCfg.Bssid); + Hdr->Sequence = pAd->Sequence; +} + +/* + ======================================================================== + + Routine Description: + Copy frame from waiting queue into relative ring buffer and set + appropriate ASIC register to kick hardware encryption before really + sent out to air. + + Arguments: + pAdapter Pointer to our adapter + PNDIS_PACKET Pointer to outgoing Ndis frame + NumberOfFrag Number of fragment required + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID WpaHardEncrypt( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pPacket, + IN ULONG Len) +{ + UCHAR FrameGap; + PUCHAR pDest; + PUCHAR pSrc; + UCHAR CipherAlg = CIPHER_NONE; + PTXD_STRUC pTxD; +#ifdef BIG_ENDIAN + TXD_STRUC TxD; + PTXD_STRUC pDestTxD; + PUCHAR pOriginDest; +#endif + ULONG Iv16; + ULONG Iv32; + PWPA_KEY pWpaKey; + UCHAR RetryMode = SHORT_RETRY; + static UCHAR Priority[4] = {"\x00\x00\x00\x00"}; + + // Make sure Tx ring resource won't be used by other threads + spin_lock_irq(&pAdapter->TxRingLock); + + FrameGap = IFS_BACKOFF; // Default frame gap mode + + // outgoing frame always wakeup PHY to prevent frame lost and + // turn off PSM bit to improve performance + if (pAdapter->PortCfg.Psm == PWR_SAVE) + { + MlmeSetPsmBit(pAdapter, PWR_ACTIVE); + } + AsicForceWakeup(pAdapter); + + pAdapter->TxRing[pAdapter->CurEncryptIndex].FrameType = BTYPE_DATA; + + pSrc = pPacket; // Point to start of MSDU + + pWpaKey = (PWPA_KEY) &pAdapter->PortCfg.PairwiseKey[0]; + pWpaKey->Type = PAIRWISE_KEY; + if (pWpaKey == NULL) + { + // No pairwise key, this should not happen + spin_unlock_irq(&pAdapter->TxRingLock); + return; + } + + // Get the Tx Ring descriptor & Dma Buffer address + pDest = (PUCHAR) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_data_addr; +#ifndef BIG_ENDIAN + pTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; +#else + pOriginDest = pDest; + pDestTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->CurEncryptIndex].va_addr; + TxD = *pDestTxD; + pTxD = &TxD; + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); +#endif + + if ((pTxD->Owner == DESC_OWN_NIC) || (pTxD->CipherOwn == DESC_OWN_NIC)) + { + // Descriptor owned by NIC. No descriptor avaliable + // This should not happen since caller guaranteed. + // Make sure to release Tx ring resource + pAdapter->RalinkCounters.TxRingErrCount++; + spin_unlock_irq(&pAdapter->TxRingLock); + return; + } + if (pTxD->Valid == TRUE) + { + // Ndis packet of last round did not cleared. + // This should not happen since caller guaranteed. + // Make sure to release Tx ring resource + pTxD->Valid = FALSE; + +#ifdef BIG_ENDIAN + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pDestTxD = TxD; +#endif + + pAdapter->RalinkCounters.TxRingErrCount++; + spin_unlock_irq(&pAdapter->TxRingLock); + return; + } + + // Copy whole frame to Tx ring buffer + memcpy(pDest, pPacket, Len); + pDest += Len; + + if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption2Enabled) + { + INT i; + + i = 0; + // Prepare 8 bytes TKIP encapsulation for MPDU + { + TKIP_IV tkipIv; + + tkipIv.IV16.field.rc0 = *(pWpaKey->TxTsc + 1); + tkipIv.IV16.field.rc1 = (tkipIv.IV16.field.rc0 | 0x20) & 0x7f; + tkipIv.IV16.field.rc2 = *pWpaKey->TxTsc; + tkipIv.IV16.field.Rsvd = 0; + tkipIv.IV16.field.ExtIV = 1; // 0: non-extended IV, 1: an extended IV + tkipIv.IV16.field.KeyID = 0; + tkipIv.IV32 = *(PULONG)(pWpaKey->TxTsc + 2); + + pTxD->Iv = tkipIv.IV16.word; + + *((PUCHAR) &pTxD->Eiv) = *((PUCHAR) &tkipIv.IV32 + 3); + *((PUCHAR) &pTxD->Eiv + 1) = *((PUCHAR) &tkipIv.IV32 + 2); + *((PUCHAR) &pTxD->Eiv + 2) = *((PUCHAR) &tkipIv.IV32 + 1); + *((PUCHAR) &pTxD->Eiv + 3) = *((PUCHAR) &tkipIv.IV32); + } + + // Increase TxTsc value for next transmission + while (++pWpaKey->TxTsc[i] == 0x0) + { + i++; + if (i == 6) + break; + } + + // Set IV offset + pTxD->IvOffset = LENGTH_802_11; + + // Copy TKey + memcpy(pTxD->Key, pWpaKey->Key, 16); + + // Set Cipher suite + CipherAlg = CIPHER_TKIP; + + // Calculate MIC value + // Init MIC value calculation and reset the message + pAdapter->PrivateInfo.Tx.L = RTMPTkipGetUInt32(pWpaKey->TxMic); + pAdapter->PrivateInfo.Tx.R = RTMPTkipGetUInt32(pWpaKey->TxMic + 4); + pAdapter->PrivateInfo.Tx.nBytesInM = 0; + pAdapter->PrivateInfo.Tx.M = 0; + + // DA & SA field + RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pSrc + 4, 12); + + // Priority + 3 bytes of 0 + RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, Priority, 4); + + pSrc += LENGTH_802_11; + RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pSrc, Len - LENGTH_802_11); + RTMPTkipGetMIC(&pAdapter->PrivateInfo.Tx); + // Append MIC + memcpy(pDest, pAdapter->PrivateInfo.Tx.MIC, 8); + Len += 8; + // IV + EIV + ICV which ASIC added after encryption done + Len += 12; + } + else if (pAdapter->PortCfg.WepStatus == Ndis802_11Encryption3Enabled) + { + INT i; + PUCHAR pTmp; + + i = 0; + pTmp = (PUCHAR) &Iv16; + *pTmp = pWpaKey->TxTsc[0]; + *(pTmp + 1) = pWpaKey->TxTsc[1]; + *(pTmp + 2) = 0; + *(pTmp + 3) = 0x20; + + Iv32 = *(PULONG)(&pWpaKey->TxTsc[2]); + + // Increase TxTsc value for next transmission + while (++pWpaKey->TxTsc[i] == 0x0) + { + i++; + if (i == 6) + break; + } + + // Copy IV + memcpy(&pTxD->Iv, &Iv16, 4); + + // Copy EIV + memcpy(&pTxD->Eiv, &Iv32, 4); + + // Set IV offset + pTxD->IvOffset = LENGTH_802_11; + + // Copy TKey + memcpy(pTxD->Key, pWpaKey->Key, 16); + + // Set Cipher suite + CipherAlg = CIPHER_AES; + + // IV + EIV + HW MIC + Len += 16; + } + +#ifdef BIG_ENDIAN + RTMPFrameEndianChange(pAdapter, pOriginDest, DIR_WRITE, FALSE); + RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD); + *pDestTxD = TxD; + pTxD = pDestTxD; +#endif + + RTMPWriteTxDescriptor(pTxD, TRUE, CipherAlg, TRUE, FALSE, FALSE, RetryMode, FrameGap, + pAdapter->PortCfg.TxRate, 4, Len, pAdapter->PortCfg.TxPreambleInUsed, 0); + + // Increase & maintain Tx Ring Index + pAdapter->CurEncryptIndex++; + if (pAdapter->CurEncryptIndex >= TX_RING_SIZE) + { + pAdapter->CurEncryptIndex = 0; + } + pAdapter->RalinkCounters.EncryptCount++; + + // Kick Encrypt Control Register at the end of all ring buffer preparation + RTMP_IO_WRITE32(pAdapter, SECCSR1, 0x1); + + // Make sure to release Tx ring resource + spin_unlock_irq(&pAdapter->TxRingLock); +} + +/* + ======================================================================== + + Routine Description: + SHA1 function + + Arguments: + + Return Value: + + Note: + + ======================================================================== +*/ +VOID HMAC_SHA1( + IN UCHAR *text, + IN UINT text_len, + IN UCHAR *key, + IN UINT key_len, + IN UCHAR *digest) +{ + SHA_CTX context; + UCHAR k_ipad[65]; /* inner padding - key XORd with ipad */ + UCHAR k_opad[65]; /* outer padding - key XORd with opad */ + INT i; + + // if key is longer than 64 bytes reset it to key=SHA1(key) + if (key_len > 64) + { + SHA_CTX tctx; + SHAInit(&tctx); + SHAUpdate(&tctx, key, key_len); + SHAFinal(&tctx, key); + key_len = 20; + } + memset(k_ipad, 0, sizeof(k_ipad)); + memset(k_opad, 0, sizeof(k_opad)); + memcpy(k_ipad, key, key_len); + memcpy(k_opad, key, key_len); + + // XOR key with ipad and opad values + for (i = 0; i < 64; i++) + { + k_ipad[i] ^= 0x36; + k_opad[i] ^= 0x5c; + } + + // perform inner SHA1 + SHAInit(&context); /* init context for 1st pass */ + SHAUpdate(&context, k_ipad, 64); /* start with inner pad */ + SHAUpdate(&context, text, text_len); /* then text of datagram */ + SHAFinal(&context, digest); /* finish up 1st pass */ + + //perform outer SHA1 + SHAInit(&context); /* init context for 2nd pass */ + SHAUpdate(&context, k_opad, 64); /* start with outer pad */ + SHAUpdate(&context, digest, 20); /* then results of 1st hash */ + SHAFinal(&context, digest); /* finish up 2nd pass */ +} + +/* + ======================================================================== + + Routine Description: + PRF function + + Arguments: + + Return Value: + + Note: + 802.1i Annex F.9 + + ======================================================================== +*/ +VOID PRF( + IN UCHAR *key, + IN INT key_len, + IN UCHAR *prefix, + IN INT prefix_len, + IN UCHAR *data, + IN INT data_len, + OUT UCHAR *output, + IN INT len) +{ + INT i; + UCHAR input[1024]; + INT currentindex = 0; + INT total_len; + + memcpy(input, prefix, prefix_len); + input[prefix_len] = 0; + memcpy(&input[prefix_len + 1], data, data_len); + total_len = prefix_len + 1 + data_len; + input[total_len] = 0; + total_len++; + for (i = 0; i < (len + 19) / 20; i++) + { + HMAC_SHA1(input, total_len, key, key_len, &output[currentindex]); + currentindex += 20; + input[total_len - 1]++; + } +} + +/* + ======================================================================== + + Routine Description: + Count TPTK from PMK + + Arguments: + + Return Value: + Output Store the TPTK + + Note: + + ======================================================================== +*/ +VOID WpaCountPTK( + IN UCHAR *PMK, + IN UCHAR *ANonce, + IN UCHAR *AA, + IN UCHAR *SNonce, + IN UCHAR *SA, + OUT UCHAR *output, + IN UINT len) +{ + UCHAR concatenation[76]; + UINT CurrPos = 0; + UCHAR temp[32]; + UCHAR Prefix[] = {'P', 'a', 'i', 'r', 'w', 'i', 's', 'e', ' ', 'k', 'e', 'y', ' ', + 'e', 'x', 'p', 'a', 'n', 's', 'i', 'o', 'n'}; + + memset(temp, 0, sizeof(temp)); + + // Get smaller address + if (RTMPCompareMemory(SA, AA, 6) == 1) + memcpy(concatenation, AA, 6); + else + memcpy(concatenation, SA, 6); + CurrPos += 6; + + // Get larger address + if (RTMPCompareMemory(SA, AA, 6) == 1) + memcpy(&concatenation[CurrPos], SA, 6); + else + memcpy(&concatenation[CurrPos], AA, 6); + CurrPos += 6; + + // Get smaller address + if (RTMPCompareMemory(ANonce, SNonce, 32) == 1) + memcpy(&concatenation[CurrPos], SNonce, 32); + else + memcpy(&concatenation[CurrPos], ANonce, 32); + CurrPos += 32; + + // Get larger address + if (RTMPCompareMemory(ANonce, SNonce, 32) == 1) + memcpy(&concatenation[CurrPos], ANonce, 32); + else + memcpy(&concatenation[CurrPos], SNonce, 32); + CurrPos += 32; + + PRF(PMK, LEN_MASTER_KEY, Prefix, 22, concatenation, 76 , output, len); +} + +/* + ======================================================================== + + Routine Description: + Misc function to Generate random number + + Arguments: + + Return Value: + + Note: + 802.1i Annex F.9 + + ======================================================================== +*/ +VOID GenRandom( + IN PRTMP_ADAPTER pAd, + OUT UCHAR *random) +{ + INT i, curr; + UCHAR local[80], KeyCounter[32]; + UCHAR result[80]; + ULONG CurrentTime; + UCHAR prefix[] = {'I', 'n', 'i', 't', ' ', 'C', 'o', 'u', 'n', 't', 'e', 'r'}; + + memset(result, 0, 80); + memset(local, 0, 80); + memset(KeyCounter, 0, 32); + memcpy(local, pAd->CurrentAddress, ETH_ALEN); + + for (i = 0; i < 32; i++) + { + curr = ETH_ALEN; + CurrentTime = jiffies; + memcpy(local, pAd->CurrentAddress, ETH_ALEN); + curr += ETH_ALEN; + memcpy(&local[curr], &CurrentTime, sizeof(CurrentTime)); + curr += sizeof(CurrentTime); + memcpy(&local[curr], result, 32); + curr += 32; + memcpy(&local[curr], &i, 2); + curr += 2; + PRF(KeyCounter, 32, prefix,12, local, curr, result, 32); + } + memcpy(random, result, 32); +} + +/* + ======================================================================== + + Routine Description: + Misc function to decrypt AES body + + Arguments: + + Return Value: + + Note: + This function references to RFC 3394 for aes key unwrap algorithm. + + ======================================================================== +*/ +VOID AES_GTK_KEY_UNWRAP( + IN UCHAR *key, + OUT UCHAR *plaintext, + IN UCHAR *ciphertext) +{ + UCHAR A[8], BIN[16], BOUT[16]; + UCHAR R1[8],R2[8]; + UCHAR xor; + INT num_blocks = 2; + INT j; + aes_context aesctx; + + // Initialize + // A = C[0] + memcpy(A, ciphertext, 8); + // R1 = C1 + memcpy(R1, &ciphertext[8], 8); + // R2 = C2 + memcpy(R2, &ciphertext[16], 8); + + aes_set_key(&aesctx, key, 128); + + for (j = 5; j >= 0; j--) + { + xor = num_blocks * j + 2; + memcpy(BIN, A, 8); + BIN[7] = A[7] ^ xor; + memcpy(&BIN[8], R2, 8); + aes_decrypt(&aesctx, BIN, BOUT); + memcpy(A, &BOUT[0], 8); + memcpy(R2, &BOUT[8], 8); + + xor = num_blocks * j + 1; + memcpy(BIN, A, 8); + BIN[7] = A[7] ^ xor; + memcpy(&BIN[8], R1, 8); + aes_decrypt(&aesctx, BIN, BOUT); + memcpy(A, &BOUT[0], 8); + memcpy(R1, &BOUT[8], 8); + } + + // OUTPUT + memcpy(&plaintext[0], R1, 8); + memcpy(&plaintext[8], R2, 8); +} --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/rt2560.h +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/rt2560.h @@ -1,1520 +1,1520 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: rt2560.h - * - * Abstract: RT2560 ASIC related definition & structures - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * MarkW 8th Dec 04 Baseline code - * MarkW 10th Dec 04 Rolled in Ralink 1.4.5.0 - ***************************************************************************/ - -#ifndef __RT2560_H__ -#define __RT2560_H__ - -// -// Control/Status Registers (CSR) -// -#define CSR0 0x0000 // ASIC revision number -#define CSR1 0x0004 // System control register -#define CSR2 0x0008 // System admin status register (invalid) -#define CSR3 0x000C // STA MAC address register 0 -#define CSR4 0x0010 // STA MAC address register 1 -#define CSR5 0x0014 // BSSID register 0 -#define CSR6 0x0018 // BSSID register 1 -#define CSR7 0x001C // Interrupt source register -#define CSR8 0x0020 // Interrupt mask register -#define CSR9 0x0024 // Maximum frame length register -#define CSR11 0x002C // Back-off control register -#define CSR12 0x0030 // Synchronization configuration register 0 -#define CSR13 0x0034 // Synchronization configuration register 1 -#define CSR14 0x0038 // Synchronization control register -#define CSR15 0x003C // Synchronization status register -#define CSR16 0x0040 // TSF timer register 0 -#define CSR17 0x0044 // TSF timer register 1 -#define CSR18 0x0048 // IFS timer register 0 -#define CSR19 0x004C // IFS timer register 1 -#define CSR20 0x0050 // WakeUp register -#define CSR21 0x0054 // EEPROM control register -#define CSR22 0x0058 // CFP Control Register - -// Security coprocessor registers -#define SECCSR0 0x0028 // WEP control register -#define SECCSR1 0x0158 // WEP control register -#define SECCSR3 0x00fc // AES control register - -// Transmit related CSRs -#define TXCSR0 0x0060 // TX cintrol register -#define TXCSR1 0x0064 // TX configuration register -#define TXCSR2 0x0068 // TX descriptor configuratioon register -#define TXCSR3 0x006C // TX Ring Base address register -#define TXCSR4 0x0070 // Atim Ring Base address register -#define TXCSR5 0x0074 // Prio Ring Base address register -#define TXCSR6 0x0078 // Beacon base address -#define TXCSR7 0x007C // AutoResponder Control Register -#define TXCSR8 0x0098 // CCK TX BBP registers -#define TXCSR9 0x0094 // OFDM TX BBP registers - -// Receive related CSRs -#define RXCSR0 0x0080 // RX control register -#define RXCSR1 0x0084 // RX descriptorconfiguration register -#define RXCSR2 0x0088 // RX Ring base address register -#define RXCSR3 0x0090 // BBP ID register 0 -//#define RXCSR4 0x0094 // BBP ID register 1 -//#define ARCSR0 0x0098 // Auto responder PLCP config register 1 -#define ARCSR1 0x009C // Auto responder PLCP config register 1 - -// PCI control CSRs -#define PCICSR 0x008C // PCI control register - -// -// Alias to all ring base registers. Easier to understand constant definition -// within codes. -// -#define RX_RING_BASE_REG (RXCSR2) -#define TX_RING_BASE_REG (TXCSR3) -#define ATIM_RING_BASE_REG (TXCSR4) -#define PRIO_RING_BASE_REG (TXCSR5) -#define BEACON_BASE_REG (TXCSR6) - -// Statistic Register -#define CNT0 0x00A0 // Dot11 FCS error count -#define CNT1 0x00AC // Dot11 PLCP error count -#define CNT2 0x00B0 // Dot11 long error count -#define CNT3 0x00B8 // Dot11 CCA false alarm count -#define CNT4 0x00BC // Dot11 Rx FIFO overflow count -#define CNT5 0x00C0 // Dot11 Tx FIFO underrun count - -// Baseband Control Register -#define PWRCSR0 0x00C4 -#define PSCSR0 0x00C8 -#define PSCSR1 0x00CC -#define PSCSR2 0x00D0 -#define PSCSR3 0x00D4 -#define PWRCSR1 0x00D8 -#define TIMECSR 0x00DC -#define MACCSR0 0x00E0 -#define MACCSR1 0x00E4 -#define RALINKCSR 0x00E8 // Ralink Auto-reset register -#define BCNCSR 0x00EC - -// BBP/RF/IF Control Register -#define BBPCSR 0x00F0 -#define RFCSR 0x00F4 -#define LEDCSR 0x00F8 - -// ASIC pointer information -#define RXPTR 0x0100 // Current RX ring address -#define TXPTR 0x0104 // Current Tx ring address -#define PRIPTR 0x0108 // Current Priority ring address -#define ATIMPTR 0x010c // Current ATIM ring address - -// some others -#define TXACKCSR0 0x0110 // TX ACK timeout -#define ACKCNT0 0x0114 // TX ACK timeout count -#define ACKCNT1 0x0118 // RX ACK timeout count - -// GPIO and others -#define GPIOCSR 0x0120 // GPIO direction & in/out -#define FIFOCSR0 0x0128 // TX FIFO pointer -#define FIFOCSR1 0x012C // RX FIFO pointer -#define BCNCSR1 0x0130 // Tx BEACON offset time, unit: 1 usec -#define MACCSR2 0x0134 // TX_PE to RX_PE delay time, unit: 1 PCI clock cycle -#define TESTCSR 0x0138 // TEST mode selection register - -#define PLCP1MCSR 0x013c // 1 Mbps ACK/CTS PLCP -#define PLCP2MCSR 0x0140 // 2 Mbps ACK/CTS PLCP -#define PLCP5MCSR 0x0144 // 5.5 Mbps ACK/CTS PLCP -#define PLCP11MCSR 0x0148 // 11 Mbps ACK/CTS PLCP - -#define ARTCSR0 0x014c // ACK/CTS payload consumed time for 1/2/5.5/11 mbps -#define ARTCSR1 0x0150 // OFDM ACK/CTS payload consumed time for 6/9/12/18 mbps -#define ARTCSR2 0x0154 // OFDM ACK/CTS payload consumed time for 24/36/48/54 mbps -#define SECCSR1 0x0158 // security control register -#define BBPCSR1 0x015c // BBP TX configuration - -#define DBANDCSR0 0x0160 // Dual band configuration register 0 -#define DBANDCSR1 0x0164 // Dual band configuration register 1 -#define BBPPCSR 0x0168 // BBP pin control register -#define DBGSEL0 0x016c // MAC special debug mode selection register 0 -#define DBGSEL1 0x0170 // MAC special debug mode selection register 1 -#define BISTCSR 0x0174 // BBP BIST register - -#define MCAST0 0x0178 // multicast filter register 0 -#define MCAST1 0x017c // multicast filter register 1 - -#define UARTCSR0 0x0180 // UART1 TX register -#define UARTCSR1 0x0184 // UART1 RX register -#define UARTCSR3 0x0188 // UART1 frame control register -#define UARTCSR4 0x018c // UART1 buffer control register -#define UART2CSR0 0x0190 // UART2 TX register -#define UART2CSR1 0x0194 // UART2 RX register -#define UART2CSR3 0x0198 // UART2 frame control register -#define UART2CSR4 0x019c // UART2 buffer control register - -#define TIMECSR2 0x00a8 -#define TIMECSR3 0x00b4 - -// -// Tx / Rx / Prio / Atim ring descriptor definition -// -#define DESC_OWN_HOST 0 -#define DESC_OWN_NIC 1 -#define DESC_VALID_TRUE 1 -#define DESC_VALID_FALSE 0 - -// -// BBP & RF definition -// -#define BUSY 1 -#define IDLE 0 - -#define BBP_Version 0x00 -#define BBP_Tx_Configure 2 // R2 -#define BBP_Tx_Tssi 1 // R1 -#define BBP_Rx_Configure 14 // R14 - -#define PHY_TR_SWITCH_TIME 5 // usec - -#define RT2560_VER_B 2 -#define RT2560_VER_C 3 -#define RT2560_VER_D 4 -#define BBP_R17_LOW_SENSIBILITY 0x50 -#define BBP_R17_MID_SENSIBILITY 0x41 -#define BBP_R17_DYNAMIC_UP_BOUND 0x40 -#define RSSI_FOR_LOW_SENSIBILITY -58 -#define RSSI_FOR_MID_SENSIBILITY -74 -//#define RSSI_HIGH_WATERMARK -53 -//#define RSSI_LOW_WATERMARK -58 - -//------------------------------------------------------------------------- -// EEPROM definition -//------------------------------------------------------------------------- -#define EEDO 0x10 -#define EEDI 0x08 -#define EECS 0x04 -#define EESK 0x02 -#define EERL 0x01 - -#define EEPROM_WRITE_OPCODE 0x05 -#define EEPROM_READ_OPCODE 0x06 -#define EEPROM_EWDS_OPCODE 0x10 -#define EEPROM_EWEN_OPCODE 0x13 - -#define NUM_EEPROM_BBP_PARMS 19 -#define NUM_EEPROM_TX_PARMS 7 -#define EEPROM_BBP_BASE_OFFSET 0x20 // 0x16 -#define EEPROM_TX_PWR_OFFSET 0x46 // 0x3c -#define EEPROM_TSSI_REF_OFFSET 0x54 -#define EEPROM_TSSI_DELTA_OFFSET 0x24 -#define EEPROM_CALIBRATE_OFFSET 0x7c -#define EEPROM_VERSION_OFFSET 0x7e -#define VALID_EEPROM_VERSION 1 - -// ================================================================================= -// TX / RX ring descriptor format -// ================================================================================= - -// -// TX descriptor format, Tx ring, Atim ring & Priority Ring -// -typedef struct _TXD_STRUC { - // Word 0 -#ifdef BIG_ENDIAN - ULONG CipherAlg:3; - ULONG Rsv1:1; //RTS:1; - ULONG DataByteCnt:12; - ULONG RetryMd:1; - ULONG IFS:2; - ULONG CipherOwn:1; - ULONG Ofdm:1; - ULONG Timestamp:1; - ULONG ACK:1; - ULONG MoreFrag:1; // More fragment following this tx ring - ULONG RetryCount:3; // Retry result - ULONG TxResult:3; // Filled by MAC ASIC - ULONG Valid:1; // Entry valid bit - ULONG Owner:1; // Descriptor owner bit -#else - ULONG Owner:1; // Descriptor owner bit - ULONG Valid:1; // Entry valid bit - ULONG TxResult:3; // Filled by MAC ASIC - ULONG RetryCount:3; // Retry result - ULONG MoreFrag:1; // More fragment following this tx ring - ULONG ACK:1; - ULONG Timestamp:1; - ULONG Ofdm:1; - ULONG CipherOwn:1; - ULONG IFS:2; - ULONG RetryMd:1; - ULONG DataByteCnt:12; - ULONG Rsv1:1; //RTS:1; - ULONG CipherAlg:3; -#endif - - // Word 1 - ULONG BufferAddressPa; - - // Word 2 -#ifdef BIG_ENDIAN - ULONG Rsv2:16; - ULONG CWmax:4; - ULONG CWmin:4; - ULONG Aifs:2; - ULONG IvOffset:6; -#else - ULONG IvOffset:6; - ULONG Aifs:2; - ULONG CWmin:4; - ULONG CWmax:4; - ULONG Rsv2:16; -#endif - - // Word 3 - ULONG PlcpSignal:8; - ULONG PlcpService:8; - ULONG PlcpLengthLow:8; - ULONG PlcpLengthHigh:8; - - // Word 4 - ULONG Iv; - - // Word 5 - ULONG Eiv; - - // Word 6-9 - UCHAR Key[16]; - - // Word 10 - 11 Reserved, not necessary to put into the structure. -#ifdef BIG_ENDIAN - ULONG Rsv3:24; - ULONG TxRate:7; // for software use to track per-rate TX result, RATE_1, ... - ULONG RTS:1; -#else - ULONG RTS:1; - ULONG TxRate:7; // software use only. keep record of the Tx rate, RATE_1,... - ULONG Rsv3:24; -#endif -} TXD_STRUC, *PTXD_STRUC; - -// -// Rx descriptor format, Rx Ring -// -typedef struct _RXD_STRUC { - // Word 0 -#ifdef BIG_ENDIAN - ULONG CipherAlg:3; - ULONG Rsv1:1; // Drop:1; // Drop this frame after NULL cipher operation - ULONG DataByteCnt:12; - ULONG IvOffset:6; - ULONG IcvError:1; - ULONG CipherOwner:1; - ULONG PhyErr:1; - ULONG Ofdm:1; - ULONG Crc:1; - ULONG MyBss:1; - ULONG Bcast:1; - ULONG Mcast:1; - ULONG U2M:1; - ULONG Owner:1; -#else - ULONG Owner:1; - ULONG U2M:1; - ULONG Mcast:1; - ULONG Bcast:1; - ULONG MyBss:1; - ULONG Crc:1; - ULONG Ofdm:1; - ULONG PhyErr:1; - ULONG CipherOwner:1; - ULONG IcvError:1; - ULONG IvOffset:6; - ULONG DataByteCnt:12; - ULONG Rsv1:1; // Drop:1; // Drop this frame after NULL cipher operation - ULONG CipherAlg:3; -#endif - - // Word 1 - ULONG BufferAddressPa; - - // Word 2 - 3 - UCHAR BBR0; - UCHAR BBR1; // suppose to read back RSSI - UCHAR TA[6]; - - // Word 4 - ULONG Iv; - - // Word 5 - ULONG Eiv; - - // Word 6-9 - UCHAR Key[16]; - - // Word 10 - 11 Reserved, not necessary to put into the structure. -#ifdef BIG_ENDIAN - ULONG Rsv2:31; - ULONG Drop:1; -#else - ULONG Drop:1; - ULONG Rsv2:31; -#endif -} RXD_STRUC, *PRXD_STRUC; - -// ================================================================================= -// CSR Registers -// ================================================================================= - -// -// CSR1: System control register -// -typedef union _CSR1_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd1:29; - ULONG HostReady:1; // Host is ready after initialization, 1: ready - ULONG BbpReset:1; // Hardware reset BBP - ULONG SoftReset:1; // Software reset bit, 1: reset, 0: normal -#else - ULONG SoftReset:1; // Software reset bit, 1: reset, 0: normal - ULONG BbpReset:1; // Hardware reset BBP - ULONG HostReady:1; // Host is ready after initialization, 1: ready - ULONG Rsvd1:29; -#endif - } field; - ULONG word; -} CSR1_STRUC, *PCSR1_STRUC; - -// -// CSR3: STA MAC register 0 -// -typedef union _CSR3_STRUC { - struct { -#ifdef BIG_ENDIAN - UCHAR Byte3; // MAC address byte 3 - UCHAR Byte2; // MAC address byte 2 - UCHAR Byte1; // MAC address byte 1 - UCHAR Byte0; // MAC address byte 0 -#else - UCHAR Byte0; // MAC address byte 0 - UCHAR Byte1; // MAC address byte 1 - UCHAR Byte2; // MAC address byte 2 - UCHAR Byte3; // MAC address byte 3 -#endif - } field; - ULONG word; -} CSR3_STRUC, *PCSR3_STRUC; - -// -// CSR4: STA MAC register 1 -// -typedef union _CSR4_STRUC { - struct { -#ifdef BIG_ENDIAN - UCHAR Rsvd1; - UCHAR Rsvd0; - UCHAR Byte5; // MAC address byte 5 - UCHAR Byte4; // MAC address byte 4 -#else - UCHAR Byte4; // MAC address byte 4 - UCHAR Byte5; // MAC address byte 5 - UCHAR Rsvd0; - UCHAR Rsvd1; -#endif - } field; - ULONG word; -} CSR4_STRUC, *PCSR4_STRUC; - -// -// CSR5: BSSID register 0 -// -typedef union _CSR5_STRUC { - struct { -#ifdef BIG_ENDIAN - UCHAR Byte3; // BSSID byte 3 - UCHAR Byte2; // BSSID byte 2 - UCHAR Byte1; // BSSID byte 1 - UCHAR Byte0; // BSSID byte 0 -#else - UCHAR Byte0; // BSSID byte 0 - UCHAR Byte1; // BSSID byte 1 - UCHAR Byte2; // BSSID byte 2 - UCHAR Byte3; // BSSID byte 3 -#endif - } field; - ULONG word; -} CSR5_STRUC, *PCSR5_STRUC; - -// -// CSR6: BSSID register 1 -// -typedef union _CSR6_STRUC { - struct { -#ifdef BIG_ENDIAN - UCHAR Rsvd1; - UCHAR Rsvd0; - UCHAR Byte5; // BSSID byte 5 - UCHAR Byte4; // BSSID byte 4 -#else - UCHAR Byte4; // BSSID byte 4 - UCHAR Byte5; // BSSID byte 5 - UCHAR Rsvd0; - UCHAR Rsvd1; -#endif - } field; - ULONG word; -} CSR6_STRUC, *PCSR6_STRUC; - -// -// CSR7: Interrupt source register -// Write one to clear corresponding bit -// -typedef union _CSR7_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:12; - ULONG Timecsr3Expired:1; // TIMECSR3 hardware timer expired (for 802.1H quiet period) - ULONG Uart2RxBufferError:1; // UART2 RX buffer error - ULONG Uart2TxBufferError:1; // UART2 TX buffer error - ULONG Uart2IdleThreshold:1; // UART2 IDLE over threshold - ULONG Uart2RxThreshold:1; // UART2 RX reaches threshold - ULONG Uart2TxThreshold:1; // UART2 TX reaches threshold - ULONG UartRxBufferError:1; // UART1 RX buffer error - ULONG UartTxBufferError:1; // UART1 TX buffer error - ULONG UartIdleThreshold:1; // UART1 IDLE over threshold - ULONG UartRxThreshold:1; // UART1 RX reaches threshold - ULONG UartTxThreshold:1; // UART1 TX reaches threshold - ULONG EncryptionDone:1; // Encryption done interrupt - ULONG DecryptionDone:1; // Decryption done interrupt - ULONG RxDone:1; // Receive done interrupt - ULONG PrioRingTxDone:1; // Priority ring transmit done interrupt - ULONG AtimRingTxDone:1; // Atim ring transmit done interrupt - ULONG TxRingTxDone:1; // Tx ring transmit done interrupt - ULONG TatimwExpire:1; // Timer of atim window expired interrupt - ULONG TwakeExpire:1; // Wakeup timer expired interrupt - ULONG TbcnExpire:1; // Beacon timer expired interrupt -#else - ULONG TbcnExpire:1; // Beacon timer expired interrupt - ULONG TwakeExpire:1; // Wakeup timer expired interrupt - ULONG TatimwExpire:1; // Timer of atim window expired interrupt - ULONG TxRingTxDone:1; // Tx ring transmit done interrupt - ULONG AtimRingTxDone:1; // Atim ring transmit done interrupt - ULONG PrioRingTxDone:1; // Priority ring transmit done interrupt - ULONG RxDone:1; // Receive done interrupt - ULONG DecryptionDone:1; // Decryption done interrupt - ULONG EncryptionDone:1; // Encryption done interrupt - ULONG UartTxThreshold:1; // UART1 TX reaches threshold - ULONG UartRxThreshold:1; // UART1 RX reaches threshold - ULONG UartIdleThreshold:1; // UART1 IDLE over threshold - ULONG UartTxBufferError:1; // UART1 TX buffer error - ULONG UartRxBufferError:1; // UART1 RX buffer error - ULONG Uart2TxThreshold:1; // UART2 TX reaches threshold - ULONG Uart2RxThreshold:1; // UART2 RX reaches threshold - ULONG Uart2IdleThreshold:1; // UART2 IDLE over threshold - ULONG Uart2TxBufferError:1; // UART2 TX buffer error - ULONG Uart2RxBufferError:1; // UART2 RX buffer error - ULONG Timecsr3Expired:1; // TIMECSR3 hardware timer expired (for 802.1H quiet period) - ULONG Rsvd:12; -#endif - } field; - ULONG word; -} CSR7_STRUC, *PCSR7_STRUC, INTSRC_STRUC, *PINTSRC_STRUC; - -// -// CSR8: Interrupt Mask register -// Write one to mask off interrupt -// -typedef union _CSR8_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:12; - ULONG Timecsr3Expired:1; // TIMECSR3 hardware timer expired (for 802.1H quiet period) - ULONG Uart2RxBufferError:1; // UART2 RX buffer error - ULONG Uart2TxBufferError:1; // UART2 TX buffer error - ULONG Uart2IdleThreshold:1; // UART2 IDLE over threshold - ULONG Uart2RxThreshold:1; // UART2 RX reaches threshold - ULONG Uart2TxThreshold:1; // UART2 TX reaches threshold - ULONG UartRxBufferError:1; // UART1 RX buffer error - ULONG UartTxBufferError:1; // UART1 TX buffer error - ULONG UartIdleThreshold:1; // UART1 IDLE over threshold - ULONG UartRxThreshold:1; // UART1 RX reaches threshold - ULONG UartTxThreshold:1; // UART1 TX reaches threshold - ULONG EncryptionDone:1; // Encryption done interrupt - ULONG DecryptionDone:1; // Decryption done interrupt - ULONG RxDone:1; // Receive done interrupt mask - ULONG PrioRingTxDone:1; // Priority ring transmit done interrupt mask - ULONG AtimRingTxDone:1; // Atim ring transmit done interrupt mask - ULONG TxRingTxDone:1; // Tx ring transmit done interrupt mask - ULONG TatimwExpire:1; // Timer of atim window expired interrupt mask - ULONG TwakeExpire:1; // Wakeup timer expired interrupt mask - ULONG TbcnExpire:1; // Beacon timer expired interrupt mask -#else - ULONG TbcnExpire:1; // Beacon timer expired interrupt mask - ULONG TwakeExpire:1; // Wakeup timer expired interrupt mask - ULONG TatimwExpire:1; // Timer of atim window expired interrupt mask - ULONG TxRingTxDone:1; // Tx ring transmit done interrupt mask - ULONG AtimRingTxDone:1; // Atim ring transmit done interrupt mask - ULONG PrioRingTxDone:1; // Priority ring transmit done interrupt mask - ULONG RxDone:1; // Receive done interrupt mask - ULONG DecryptionDone:1; // Decryption done interrupt - ULONG EncryptionDone:1; // Encryption done interrupt - ULONG UartTxThreshold:1; // UART1 TX reaches threshold - ULONG UartRxThreshold:1; // UART1 RX reaches threshold - ULONG UartIdleThreshold:1; // UART1 IDLE over threshold - ULONG UartTxBufferError:1; // UART1 TX buffer error - ULONG UartRxBufferError:1; // UART1 RX buffer error - ULONG Uart2TxThreshold:1; // UART2 TX reaches threshold - ULONG Uart2RxThreshold:1; // UART2 RX reaches threshold - ULONG Uart2IdleThreshold:1; // UART2 IDLE over threshold - ULONG Uart2TxBufferError:1; // UART2 TX buffer error - ULONG Uart2RxBufferError:1; // UART2 RX buffer error - ULONG Timecsr3Expired:1; // TIMECSR3 hardware timer expired (for 802.1H quiet period) - ULONG Rsvd:12; -#endif - } field; - ULONG word; -} CSR8_STRUC, *PCSR8_STRUC, INTMSK_STRUC, *PINTMSK_STRUC; - -// -// CSR9: Maximum frame length register -// -typedef union _CSR9_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd1:20; - ULONG MaxFrameUnit:5; // Maximum frame legth in 128B unit, default is 12 = 0xC. - ULONG Rsvd0:7; -#else - ULONG Rsvd0:7; - ULONG MaxFrameUnit:5; // Maximum frame legth in 128B unit, default is 12 = 0xC. - ULONG Rsvd1:20; -#endif - } field; - ULONG word; -} CSR9_STRUC, *PCSR9_STRUC; - -// -// SECCSR0: WEP control register -// -typedef union _SECCSR0_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG DescAddress:30; // Descriptor physical address of frame in one-shot-mode. - ULONG OneShotMode:1; // 1: One shot only mode, 0: ring mode - ULONG KickDecypt:1; // Kick decryption engine, self-clear -#else - ULONG KickDecypt:1; // Kick decryption engine, self-clear - ULONG OneShotMode:1; // 1: One shot only mode, 0: ring mode - ULONG DescAddress:30; // Descriptor physical address of frame in one-shot-mode. -#endif - } field; - ULONG word; -} SECCSR0_STRUC, *PSECCSR0_STRUC; - -// -// SECCSR1: WEP control register -// -typedef union _SECCSR1_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG DescAddress:30; // Descriptor physical address of frame in one-shot-mode. - ULONG OneShotMode:1; // 1: One shot only mode, 0: ring mode - ULONG KickEncypt:1; // Kick encryption engine, self-clear -#else - ULONG KickEncypt:1; // Kick encryption engine, self-clear - ULONG OneShotMode:1; // 1: One shot only mode, 0: ring mode - ULONG DescAddress:30; // Descriptor physical address of frame in one-shot-mode. -#endif - } field; - ULONG word; -} SECCSR1_STRUC, *PSECCSR1_STRUC; - -// -// CSR11: Back-Off control register -// -typedef union _CSR11_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG ShortRetry:8; // Short retry count - ULONG LongRetry:8; // Long retry count - ULONG Rsvd:2; - ULONG CWSelect:1; // 1: CWmin/CWmax select from register, 0: select from TxD - ULONG SlotTime:5; // Slot time, default is 20us for 802.11B - ULONG CWMax:4; // Bit for Cwmax, default Cwmax is 1023 (2^10 - 1). - ULONG CWMin:4; // Bit for Cwmin. default Cwmin is 31 (2^5 - 1). -#else - ULONG CWMin:4; // Bit for Cwmin. default Cwmin is 31 (2^5 - 1). - ULONG CWMax:4; // Bit for Cwmax, default Cwmax is 1023 (2^10 - 1). - ULONG SlotTime:5; // Slot time, default is 20us for 802.11B - ULONG CWSelect:1; // 1: CWmin/Cwmax select from register, 0:select from TxD - ULONG Rsvd:2; - ULONG LongRetry:8; // Long retry count - ULONG ShortRetry:8; // Short retry count -#endif - } field; - ULONG word; -} CSR11_STRUC, *PCSR11_STRUC; - -// -// CSR12: Synchronization configuration register 0 -// All uint in 1/16 TU -// -typedef union _CSR12_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG CfpMaxDuration:16; // Beacon interval, default is 100 TU - ULONG BeaconInterval:16; // CFP maximum duration, default is 100 TU -#else - ULONG BeaconInterval:16; // CFP maximum duration, default is 100 TU - ULONG CfpMaxDuration:16; // Beacon interval, default is 100 TU -#endif - } field; - ULONG word; -} CSR12_STRUC, *PCSR12_STRUC; - -// -// CSR13: Synchronization configuration register 1 -// All uint in 1/16 TU -// -typedef union _CSR13_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:8; - ULONG CfpPeriod:8; // CFP period, default is 0 TU - ULONG AtimwDuration:16; // ATIM window duration, default is 10 TU -#else - ULONG AtimwDuration:16; // ATIM window duration, default is 10 TU - ULONG CfpPeriod:8; // CFP period, default is 0 TU - ULONG Rsvd:8; -#endif - } field; - ULONG word; -} CSR13_STRUC, *PCSR13_STRUC; - -// -// CSR14: Synchronization control register -// -typedef union _CSR14_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG TbcnPreload:16; // Tbcn preload value - ULONG CfpCntPreload:8; // Cfp count preload value - ULONG Rsvd:1; - ULONG BeaconGen:1; // Enable beacon generator - ULONG Tatimw:1; // Enable Tatimw & ATIM window switching - ULONG Tcfp:1; // Enable Tcfp & CFP / CP switching - ULONG Tbcn:1; // Enable Tbcn with reload value - ULONG TsfSync:2; // Enable TSF sync, 00: disable, 01: infra mode, 10: ad-hoc mode - ULONG TsfCount:1; // Enable TSF auto counting -#else - ULONG TsfCount:1; // Enable TSF auto counting - ULONG TsfSync:2; // Enable TSF sync, 00: disable, 01: infra mode, 10: ad-hoc mode - ULONG Tbcn:1; // Enable Tbcn with reload value - ULONG Tcfp:1; // Enable Tcfp & CFP / CP switching - ULONG Tatimw:1; // Enable Tatimw & ATIM window switching - ULONG BeaconGen:1; // Enable beacon generator - ULONG Rsvd:1; - ULONG CfpCntPreload:8; // Cfp count preload value - ULONG TbcnPreload:16; // Tbcn preload value -#endif - } field; - ULONG word; -} CSR14_STRUC, *PCSR14_STRUC; - -// -// CSR15: Synchronization status register -// -typedef union _CSR15_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:29; - ULONG BeaconSent:1; // Beacon sent - ULONG Atimw:1; // Atim window period - ULONG Cfp:1; // CFP period -#else - ULONG Cfp:1; // CFP period - ULONG Atimw:1; // Atim window period - ULONG BeaconSent:1; // Beacon sent - ULONG Rsvd:29; -#endif - } field; - ULONG word; -} CSR15_STRUC, *PCSR15_STRUC; - -// -// CSR18: IFS Timer register 0 -// -typedef union _CSR18_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd1:7; - ULONG PIFS:9; // PIFS, default is 30 TU - ULONG Rsvd0:7; - ULONG SIFS:9; // SIFS, default is 10 TU -#else - ULONG SIFS:9; // SIFS, default is 10 TU - ULONG Rsvd0:7; - ULONG PIFS:9; // PIFS, default is 30 TU - ULONG Rsvd1:7; -#endif - } field; - ULONG word; -} CSR18_STRUC, *PCSR18_STRUC; - -// -// CSR19: IFS Timer register 1 -// -typedef union _CSR19_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG EIFS:16; // EIFS, default is 364 TU - ULONG DIFS:16; // DIFS, default is 50 TU -#else - ULONG DIFS:16; // DIFS, default is 50 TU - ULONG EIFS:16; // EIFS, default is 364 TU -#endif - } field; - ULONG word; -} CSR19_STRUC, *PCSR19_STRUC; - -// -// CSR20: Wakeup timer register -// -typedef union _CSR20_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:7; - ULONG AutoWake:1; // Enable auto wakeup / sleep mechanism - ULONG NumBcnBeforeWakeup:8; // Number of beacon before wakeup - ULONG DelayAfterBcn:16; // Delay after Tbcn expired in units of 1/16 TU -#else - ULONG DelayAfterBcn:16; // Delay after Tbcn expired in units of 1/16 TU - ULONG NumBcnBeforeWakeup:8; // Number of beacon before wakeup - ULONG AutoWake:1; // Enable auto wakeup / sleep mechanism - ULONG Rsvd:7; -#endif - } field; - ULONG word; -} CSR20_STRUC, *PCSR20_STRUC; - -// -// CSR21: EEPROM control register -// -typedef union _CSR21_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:26; - ULONG Type:1; // 1: 93C46, 0:93C66 - ULONG EepromDO:1; - ULONG EepromDI:1; - ULONG EepromCS:1; - ULONG EepromSK:1; - ULONG Reload:1; // Reload EEPROM content, write one to reload, self-cleared. -#else - ULONG Reload:1; // Reload EEPROM content, write one to reload, self-cleared. - ULONG EepromSK:1; - ULONG EepromCS:1; - ULONG EepromDI:1; - ULONG EepromDO:1; - ULONG Type:1; // 1: 93C46, 0:93C66 - ULONG Rsvd:26; -#endif - } field; - ULONG word; -} CSR21_STRUC, *PCSR21_STRUC; - -// -// CSR22: CFP control register -// -typedef union _CSR22_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:15; - ULONG ReloadCfpDurRemain:1; // Reload CFP duration remain, write one to reload, self-cleared - ULONG CfpDurRemain:16; // CFP duration remain, in units of TU -#else - ULONG CfpDurRemain:16; // CFP duration remain, in units of TU - ULONG ReloadCfpDurRemain:1; // Reload CFP duration remain, write one to reload, self-cleared - ULONG Rsvd:15; -#endif - } field; - ULONG word; -} CSR22_STRUC, *PCSR22_STRUC; - -// ================================================================================= -// TX / RX Registers -// ================================================================================= - -// -// TXCSR0 <0x0060> : TX Control Register -// -typedef union _TXCSR0_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:28; - ULONG Abort:1; // Abort all transmit related ring operation - ULONG KickPrio:1; // Kick priority ring - ULONG KickAtim:1; // Kick ATIM ring - ULONG KickTx:1; // Kick Tx ring -#else - ULONG KickTx:1; // Kick Tx ring - ULONG KickAtim:1; // Kick ATIM ring - ULONG KickPrio:1; // Kick priority ring - ULONG Abort:1; // Abort all transmit related ring operation - ULONG Rsvd:28; -#endif - } field; - ULONG word; -} TXCSR0_STRUC, *PTXCSR0_STRUC; - -// -// TXCSR1 <0x0064> : TX Configuration Register -// -typedef union _TXCSR1_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Reserved:7; - ULONG AutoResponder:1; // enable auto responder which include ACK & CTS - ULONG TsFOffset:6; // Insert Tsf offset - ULONG AckConsumeTime:9; // ACK consume time, default = SIFS + ACKtime @ 1Mbps - ULONG AckTimeOut:9; // Ack timeout, default = SIFS + 2*SLOT_ACKtime @ 1Mbps -#else - ULONG AckTimeOut:9; // Ack timeout, default = SIFS + 2*SLOT_ACKtime @ 1Mbps - ULONG AckConsumeTime:9; // ACK consume time, default = SIFS + ACKtime @ 1Mbps - ULONG TsFOffset:6; // Insert Tsf offset - ULONG AutoResponder:1; // enable auto responder which include ACK & CTS - ULONG Reserved:7; -#endif - } field; - ULONG word; -} TXCSR1_STRUC, *PTXCSR1_STRUC; - -// -// TXCSR2: Tx descriptor configuration register -// -typedef union _TXCSR2_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG NumPrioD:8; // Number of PriorityD in ring - ULONG NumAtimD:8; // Number of AtimD in ring - ULONG NumTxD:8; // Number of TxD in ring - ULONG TxDSize:8; // Tx descriptor size, default is 48 -#else - ULONG TxDSize:8; // Tx descriptor size, default is 48 - ULONG NumTxD:8; // Number of TxD in ring - ULONG NumAtimD:8; // Number of AtimD in ring - ULONG NumPrioD:8; // Number of PriorityD in ring -#endif - } field; - ULONG word; -} TXCSR2_STRUC, *PTXCSR2_STRUC; - -// -// TXCSR7: Auto responder control register -// -typedef union _TXCSR7_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:31; - ULONG ARPowerManage:1; // Auto responder power management bit -#else - ULONG ARPowerManage:1; // Auto responder power management bit - ULONG Rsvd:31; -#endif - } field; - ULONG word; -} TXCSR7_STRUC, *PTXCSR7_STRUC; - -// -// TXCSR8: CCK Tx BBP register -// -typedef union _TXCSR8_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG CckLenHigh:8; // BBP length high byte address for CCK - ULONG CckLenLow:8; // BBP length low byte address for CCK - ULONG CckService:8; // BBP service field address for CCK - ULONG CckSignal:8; // BBP signal field address for CCK -#else - ULONG CckSignal:8; // BBP signal field address for CCK - ULONG CckService:8; // BBP service field address for CCK - ULONG CckLenLow:8; // BBP length low byte address for CCK - ULONG CckLenHigh:8; // BBP length high byte address for CCK -#endif - } field; - ULONG word; -} TXCSR8_STRUC, *PTXCSR8_STRUC; - -// -// TXCSR9: OFDM Tx BBP register -// -typedef union _TXCSR9_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG OfdmLenHigh:8; // BBP length high byte address for OFDM - ULONG OfdmLenLow:8; // BBP length low byte address for OFDM - ULONG OfdmService:8; // BBP service field address for OFDM - ULONG OfdmRate:8; // BBP rate field address for OFDM -#else - ULONG OfdmRate:8; // BBP rate field address for OFDM - ULONG OfdmService:8; // BBP service field address for OFDM - ULONG OfdmLenLow:8; // BBP length low byte address for OFDM - ULONG OfdmLenHigh:8; // BBP length high byte address for OFDM -#endif - } field; - ULONG word; -} TXCSR9_STRUC, *PTXCSR9_STRUC; - -// -// RXCSR0 <0x0080> : RX Control Register -// -typedef union _RXCSR0_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Reserved:20; - ULONG EnableQos:1; // 1: accept QOS data frame format and parse the QOS field - ULONG DropBcast:1; // Drop broadcast frames - ULONG DropMcast:1; // Drop multicast frames - ULONG PassPlcp:1; // Pass all receive packet with 4 bytes PLCP attached - ULONG PassCRC:1; // Pass all receive packet to host with CRC attached - ULONG DropVersionErr:1; // Drop version error frame - ULONG DropToDs:1; // Drop fram ToDs bit is true - ULONG DropNotToMe:1; // Drop not to me unicast frame - ULONG DropControl:1; // Drop control frame - ULONG DropPhysical:1; // Drop physical error - ULONG DropCRC:1; // Drop CRC error - ULONG DisableRx:1; // Disable Rx engine -#else - ULONG DisableRx:1; // Disable Rx engine - ULONG DropCRC:1; // Drop CRC error - ULONG DropPhysical:1; // Drop physical error - ULONG DropControl:1; // Drop control frame - ULONG DropNotToMe:1; // Drop not to me unicast frame - ULONG DropToDs:1; // Drop fram ToDs bit is true - ULONG DropVersionErr:1; // Drop version error frame - ULONG PassCRC:1; // Pass all receive packet to host with CRC attached - ULONG PassPlcp:1; // Pass all receive packet with 4 bytes PLCP attached - ULONG DropMcast:1; // Drop multicast frames - ULONG DropBcast:1; // Drop broadcast frames - ULONG EnableQos:1; // 1: accept QOS data frame format and parse the QOS field - ULONG Reserved:20; -#endif - } field; - ULONG word; -} RXCSR0_STRUC, *PRXCSR0_STRUC; - -// -// RXCSR1: RX descriptor configuration register -// -typedef union _RXCSR1_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:16; - ULONG NumRxD:8; // Number of RxD in ring. - ULONG RxDSize:8; // Rx descriptor size, default is 32B. -#else - ULONG RxDSize:8; // Rx descriptor size, default is 32B. - ULONG NumRxD:8; // Number of RxD in ring. - ULONG Rsvd:16; -#endif - } field; - ULONG word; -} RXCSR1_STRUC, *PRXCSR1_STRUC; - -// -// RXCSR3: BBP ID register for Rx operation -// -typedef union _RXCSR3_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG ValidBbp3:1; // BBP register 3 ID is valid or not - ULONG IdBbp3:7; // BBP register 3 ID - ULONG ValidBbp2:1; // BBP register 2 ID is valid or not - ULONG IdBbp2:7; // BBP register 2 ID - ULONG ValidBbp1:1; // BBP register 1 ID is valid or not - ULONG IdBbp1:7; // BBP register 1 ID - ULONG ValidBbp0:1; // BBP register 0 ID is valid or not - ULONG IdBbp0:7; // BBP register 0 ID -#else - ULONG IdBbp0:7; // BBP register 0 ID - ULONG ValidBbp0:1; // BBP register 0 ID is valid or not - ULONG IdBbp1:7; // BBP register 1 ID - ULONG ValidBbp1:1; // BBP register 1 ID is valid or not - ULONG IdBbp2:7; // BBP register 2 ID - ULONG ValidBbp2:1; // BBP register 2 ID is valid or not - ULONG IdBbp3:7; // BBP register 3 ID - ULONG ValidBbp3:1; // BBP register 3 ID is valid or not -#endif - } field; - ULONG word; -} RXCSR3_STRUC, *PRXCSR3_STRUC; -#if 0 -// -// RXCSR4: BBP ID register for Rx operation -// -typedef union _RXCSR4_STRUC { - struct { - ULONG IdBbp4:7; // BBP register 4 ID - ULONG ValidBbp4:1; // BBP register 4 ID is valid or not - ULONG IdBbp5:7; // BBP register 5 ID - ULONG ValidBbp5:1; // BBP register 5 ID is valid or not - ULONG Rsvd:16; - } field; - ULONG word; -} RXCSR4_STRUC, *PRXCSR4_STRUC; - -// -// ARCSR0: Auto Responder PLCP value register 0 -// -typedef union _ARCSR0_STRUC { - struct { - ULONG ArBbpData0:8; // Auto responder BBP register 0 data - ULONG ArBbpId0:8; // Auto responder BBP register 0 Id - ULONG ArBbpData1:8; // Auto responder BBP register 1 data - ULONG ArBbpId1:8; // Auto responder BBP register 1 Id - } field; - ULONG word; -} ARCSR0_STRUC, *PARCSR0_STRUC; - -// -// ARCSR0: Auto Responder PLCP value register 1 -// -typedef union _ARCSR1_STRUC { - struct { - ULONG ArBbpData2:8; // Auto responder BBP register 2 data - ULONG ArBbpId2:8; // Auto responder BBP register 2 Id - ULONG ArBbpData3:8; // Auto responder BBP register 3 data - ULONG ArBbpId3:8; // Auto responder BBP register 3 Id - } field; - ULONG word; -} ARCSR1_STRUC, *PARCSR1_STRUC; -#endif -// ================================================================================= -// Miscellaneous Registers -// ================================================================================= - -// -// PCISR: PCI control register -// -typedef union _PCICSR_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:22; - ULONG WriteInvalid:1; // Enable memory write & invalid - ULONG ReadMultiple:1; // Enable memory read multiple - ULONG EnableClk:1; // Enable CLK_RUN, PCI clock can't going down to non-operational - ULONG BurstLength:2; // PCI burst length - // 01: 8DW, 10: 16DW, 11:32DW, default 00: 4DW - ULONG TxThreshold:2; // Tx threshold in DW to start PCI access - // 01: 1DW, 10: 4DW, 11: store & forward, default 00: 0DW - ULONG RxThreshold:2; // Rx threshold in DW to start PCI access - // 01: 8DW, 10: 4DW, 11: 32DW, default 00: 16DW - ULONG BigEndian:1; // 1: big endian, 0: little endian -#else - ULONG BigEndian:1; // 1: big endian, 0: little endian - ULONG RxThreshold:2; // Rx threshold in DW to start PCI access - // 01: 8DW, 10: 4DW, 11: 32DW, default 00: 16DW - ULONG TxThreshold:2; // Tx threshold in DW to start PCI access - // 01: 1DW, 10: 4DW, 11: store & forward, default 00: 0DW - ULONG BurstLength:2; // PCI burst length - // 01: 8DW, 10: 16DW, 11:32DW, default 00: 4DW - ULONG EnableClk:1; // Enable CLK_RUN, PCI clock can't going down to non-operational - ULONG ReadMultiple:1; // Enable memory read multiple - ULONG WriteInvalid:1; // Enable memory write & invalid - ULONG Rsvd:22; -#endif - } field; - ULONG word; -} PCICSR_STRUC, *PPCICSR_STRUC; - -// -// PWRCSR0: Power mode configuration register -// Driver did not control it for now. - -// -// PSCSR0: Power saving delay time register 0 -// Driver did not control it for now. - -// -// PSCSR1: Power saving delay time register 1 -// Driver did not control it for now. - -// -// PSCSR2: Power saving delay time register 2 -// Driver did not control it for now. - -// -// PSCSR3: Power saving delay time register 3 -// Driver did not control it for now. - -// -// PWRCSR1: Manual power control / status register -// -typedef union _PWRCSR1_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:22; - ULONG PutToSleep:1; - ULONG RfCurrState:2; - ULONG BbpCurrState:2; - ULONG RfDesireState:2; - ULONG BbpDesireState:2; - ULONG SetState:1; -#else - ULONG SetState:1; - ULONG BbpDesireState:2; - ULONG RfDesireState:2; - ULONG BbpCurrState:2; - ULONG RfCurrState:2; - ULONG PutToSleep:1; - ULONG Rsvd:22; -#endif - } field; - ULONG word; -} PWRCSR1_STRUC, *PPWRCSR1_STRUC; - -// -// TIMECSR: Timer control register -// -typedef union _TIMECSR_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:13; - ULONG BeaconExpect:3; // Beacon expect window - ULONG Us64Cnt:8; // 64 us timer count in units of 1 us timer - ULONG UsCnt:8; // 1 us timer count in units of clock cycles -#else - ULONG UsCnt:8; // 1 us timer count in units of clock cycles - ULONG Us64Cnt:8; // 64 us timer count in units of 1 us timer - ULONG BeaconExpect:3; // Beacon expect window - ULONG Rsvd:13; -#endif - } field; - ULONG word; -} TIMECSR_STRUC, *PTIMECSR_STRUC; - -// -// MACCSR0: MAC configuration register 0 -// - -// -// MACCSR1: MAC configuration register 1 -// -typedef union _MACCSR1_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:24; - ULONG IntersilIF:1; // Intersil IF calibration pin - ULONG LoopBack:2; // Loopback mode. 00: normal, 01: internal, 10: external, 11:rsvd. - ULONG AutoRxBbp:1; // Auto Rx logic access BBP control register - ULONG AutoTxBbp:1; // Auto Tx logic access BBP control register - ULONG BbpRxResetMode:1; // Ralink BBP RX reset mode - ULONG OneShotRxMode:1; // Enable one-shot Rx mode for debugging - ULONG KickRx:1; // Kick one-shot Rx in one-shot Rx mode -#else - ULONG KickRx:1; // Kick one-shot Rx in one-shot Rx mode - ULONG OneShotRxMode:1; // Enable one-shot Rx mode for debugging - ULONG BbpRxResetMode:1; // Ralink BBP RX reset mode - ULONG AutoTxBbp:1; // Auto Tx logic access BBP control register - ULONG AutoRxBbp:1; // Auto Rx logic access BBP control register - ULONG LoopBack:2; // Loopback mode. 00: normal, 01: internal, 10: external, 11:rsvd. - ULONG IntersilIF:1; // Intersil IF calibration pin - ULONG Rsvd:24; -#endif - } field; - ULONG word; -} MACCSR1_STRUC, *PMACCSR1_STRUC; - -// -// RALINKCSR: Ralink Rx auto-reset BBCR -// -typedef union _RALINKCSR_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG ArBbpValid1:1; // Auto reset BBP register 1 is valid - ULONG ArBbpId1:7; // Auto reset BBP register 1 Id - ULONG ArBbpData1:8; // Auto reset BBP register 1 data - ULONG ArBbpValid0:1; // Auto reset BBP register 0 is valid - ULONG ArBbpId0:7; // Auto reset BBP register 0 Id - ULONG ArBbpData0:8; // Auto reset BBP register 0 data -#else - ULONG ArBbpData0:8; // Auto reset BBP register 0 data - ULONG ArBbpId0:7; // Auto reset BBP register 0 Id - ULONG ArBbpValid0:1; // Auto reset BBP register 0 is valid - ULONG ArBbpData1:8; // Auto reset BBP register 1 data - ULONG ArBbpId1:7; // Auto reset BBP register 1 Id - ULONG ArBbpValid1:1; // Auto reset BBP register 1 is valid -#endif - } field; - ULONG word; -} RALINKCSR_STRUC, *PRALINKCSR_STRUC; - -// -// BCNCSR: Beacon interval control register -// -typedef union _BCNCSR_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:16; - ULONG Plus:1; // plus or minus delta time value - ULONG Mode:2; // please refer to ASIC specs. - ULONG NumBcn:8; // Delta time value or number of beacon according to mode - ULONG DeltaTime:4; // The delta time value - ULONG Change:1; // Write one to change beacon interval -#else - ULONG Change:1; // Write one to change beacon interval - ULONG DeltaTime:4; // The delta time value - ULONG NumBcn:8; // Delta time value or number of beacon according to mode - ULONG Mode:2; // please refer to ASIC specs. - ULONG Plus:1; // plus or minus delta time value - ULONG Rsvd:16; -#endif - } field; - ULONG word; -} BCNCSR_STRUC, *PBCNCSR_STRUC; - -// -// BBPCSR: BBP serial control register -// -typedef union _BBPCSR_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:15; - ULONG WriteControl:1; // 1: Write BBP, 0: Read BBP - ULONG Busy:1; // 1: ASIC is busy execute BBP programming. - ULONG RegNum:7; // Selected BBP register - ULONG Value:8; // Register value to program into BBP -#else - ULONG Value:8; // Register value to program into BBP - ULONG RegNum:7; // Selected BBP register - ULONG Busy:1; // 1: ASIC is busy execute BBP programming. - ULONG WriteControl:1; // 1: Write BBP, 0: Read BBP - ULONG Rsvd:15; -#endif - } field; - ULONG word; -} BBPCSR_STRUC, *PBBPCSR_STRUC; - -// -// RFCSR: RF serial control register -// -typedef union _RFCSR_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Busy:1; // 1: ASIC is busy execute RF programming. - ULONG PLL_LD:1; // RF PLL_LD status - ULONG IFSelect:1; // 1: select IF to program, 0: select RF to program - ULONG NumberOfBits:5; // Number of bits used in RFRegValue (I:20, RFMD:22) - ULONG RFRegValue:24; // Register value (include register id) serial out to RF/IF chip. -#else - ULONG RFRegValue:24; // Register value (include register id) serial out to RF/IF chip. - ULONG NumberOfBits:5; // Number of bits used in RFRegValue (I:20, RFMD:22) - ULONG IFSelect:1; // 1: select IF to program, 0: select RF to program - ULONG PLL_LD:1; // RF PLL_LD status - ULONG Busy:1; // 1: ASIC is busy execute RF programming. -#endif - } field; - ULONG word; -} RFCSR_STRUC, *PRFCSR_STRUC; - -// -// LEDCSR: LED control register -// -typedef union _LEDCSR_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:11; - ULONG LedADefault:1; // LED A default value for "enable" state. 0: LED ON, 1: LED OFF - ULONG LedBPolarity:1; // 0: active low, 1: active high - ULONG LedAPolarity:1; // 0: active low, 1: active high - ULONG LedB:1; // controlled by software, 1: ON, 0: OFF - ULONG LedA:1; // indicate TX activity, 1: enable, 0: disable - ULONG OffPeriod:8; // Off period, default 30ms - ULONG OnPeriod:8; // On period, default 70ms -#else - ULONG OnPeriod:8; // On period, default 70ms - ULONG OffPeriod:8; // Off period, default 30ms - ULONG LedA:1; // indicate TX activity, 1: enable, 0: disable - ULONG LedB:1; // controlled by software, 1: ON, 0: OFF - ULONG LedAPolarity:1; // 0: active low, 1: active high - ULONG LedBPolarity:1; // 0: active low, 1: active high - ULONG LedADefault:1; // LED A default value for "enable" state. 0: LED ON, 1: LED OFF - ULONG Rsvd:11; -#endif - } field; - ULONG word; -} LEDCSR_STRUC, *PLEDCSR_STRUC; - -// -// GPIOCSR: GPIO control register -// -typedef union _GPIOCSR_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:16; - ULONG Dir7:1; - ULONG Dir6:1; - ULONG Dir5:1; - ULONG Dir4:1; - ULONG Dir3:1; - ULONG Dir2:1; - ULONG Dir1:1; - ULONG Dir0:1; - ULONG Bit7:1; - ULONG Bit6:1; - ULONG Bit5:1; - ULONG Bit4:1; - ULONG Bit3:1; - ULONG Bit2:1; - ULONG Bit1:1; - ULONG Bit0:1; -#else - ULONG Bit0:1; - ULONG Bit1:1; - ULONG Bit2:1; - ULONG Bit3:1; - ULONG Bit4:1; - ULONG Bit5:1; - ULONG Bit6:1; - ULONG Bit7:1; - ULONG Dir0:1; - ULONG Dir1:1; - ULONG Dir2:1; - ULONG Dir3:1; - ULONG Dir4:1; - ULONG Dir5:1; - ULONG Dir6:1; - ULONG Dir7:1; - ULONG Rsvd:16; -#endif - } field; - ULONG word; -} GPIOCSR_STRUC, *PGPIOCSR_STRUC; - -// -// BCNCSR1: Tx BEACON offset time control register -// -typedef union _BCNCSR1_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:12; - ULONG BeaconCwMin:4; // 2^CwMin - ULONG Preload:16; // in units of usec -#else - ULONG Preload:16; // in units of usec - ULONG BeaconCwMin:4; // 2^CwMin - ULONG Rsvd:12; -#endif - } field; - ULONG word; -} BCNCSR1_STRUC, *PBCNCSR1_STRUC; - -// -// MACCSR2: TX_PE to RX_PE turn-around time control register -// -typedef union _MACCSR2_STRUC { - struct { -#ifdef BIG_ENDIAN - ULONG Rsvd:24; - ULONG Delay:8; // in units of PCI clock cycle -#else - ULONG Delay:8; // in units of PCI clock cycle - ULONG Rsvd:24; -#endif - } field; - ULONG word; -} MACCSR2_STRUC, *PMACCSR2_STRUC; - -// -// EEPROM antenna select format -// -typedef union _EEPROM_ANTENNA_STRUC { - struct { -#ifdef BIG_ENDIAN - USHORT RfType:5; // see E2PROM document for RF IC selection - USHORT HardwareRadioControl:1; // 1: Hardware controlled radio enabled, Read GPIO0 required. - USHORT DynamicTxAgcControl:1; - USHORT LedMode:3; // 0-default mode, 1:TX/RX activity mode, 2: Single LED (didn't care about link), 3: reserved - USHORT RxDefaultAntenna:2; // default of antenna, 0: diversity, 1:antenna-A, 2:antenna-B reserved (default = 0) - USHORT TxDefaultAntenna:2; // default of antenna, 0: diversity, 1:antenna-A, 2:antenna-B reserved (default = 0) - USHORT NumOfAntenna:2; // Number of antenna -#else - USHORT NumOfAntenna:2; // Number of antenna - USHORT TxDefaultAntenna:2; // default of antenna, 0: diversity, 1:antenna-A, 2:antenna-B reserved (default = 0) - USHORT RxDefaultAntenna:2; // default of antenna, 0: diversity, 1:antenna-A, 2:antenna-B reserved (default = 0) - USHORT LedMode:3; // 0-default mode, 1:TX/RX activity mode, 2: Single LED (didn't care about link), 3: reserved - USHORT DynamicTxAgcControl:1; - USHORT HardwareRadioControl:1; // 1: Hardware controlled radio enabled, Read GPIO0 required. - USHORT RfType:5; // see E2PROM document for RF IC selection -#endif - } field; - USHORT word; -} EEPROM_ANTENNA_STRUC, *PEEPROM_ANTENNA_STRUC; - -typedef union _EEPROM_NIC_CINFIG2_STRUC { - struct { -#ifdef BIG_ENDIAN - USHORT Rsv:12; // must be 0 - USHORT CckTxPower:2; // CCK TX power compensation - USHORT DynamicBbpTuning:1; // !!! NOTE: 0 - enable, 1 - disable - USHORT CardbusAcceleration:1; // !!! NOTE: 0 - enable, 1 - disable -#else - USHORT CardbusAcceleration:1; // !!! NOTE: 0 - enable, 1 - disable - USHORT DynamicBbpTuning:1; // !!! NOTE: 0 - enable, 1 - disable - USHORT CckTxPower:2; // CCK TX power compensation - USHORT Rsv:12; // must be 0 -#endif - } field; - USHORT word; -} EEPROM_NIC_CONFIG2_STRUC, *PEEPROM_NIC_CONFIG2_STRUC; - -typedef union _EEPROM_TX_PWR_STRUC { - struct { -#ifdef BIG_ENDIAN - UCHAR Byte1; // High Byte - UCHAR Byte0; // Low Byte -#else - UCHAR Byte0; // Low Byte - UCHAR Byte1; // High Byte -#endif - } field; - USHORT word; -} EEPROM_TX_PWR_STRUC, *PEEPROM_TX_PWR_STRUC; - -typedef union _EEPROM_VERSION_STRUC { - struct { -#ifdef BIG_ENDIAN - UCHAR Version; // High Byte - UCHAR FaeReleaseNumber; // Low Byte -#else - UCHAR FaeReleaseNumber; // Low Byte - UCHAR Version; // High Byte -#endif - } field; - USHORT word; -} EEPROM_VERSION_STRUC, *PEEPROM_VERSION_STRUC; - -#endif // __RT2560_H__ +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: rt2560.h + * + * Abstract: RT2560 ASIC related definition & structures + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * MarkW 8th Dec 04 Baseline code + * MarkW 10th Dec 04 Rolled in Ralink 1.4.5.0 + ***************************************************************************/ + +#ifndef __RT2560_H__ +#define __RT2560_H__ + +// +// Control/Status Registers (CSR) +// +#define CSR0 0x0000 // ASIC revision number +#define CSR1 0x0004 // System control register +#define CSR2 0x0008 // System admin status register (invalid) +#define CSR3 0x000C // STA MAC address register 0 +#define CSR4 0x0010 // STA MAC address register 1 +#define CSR5 0x0014 // BSSID register 0 +#define CSR6 0x0018 // BSSID register 1 +#define CSR7 0x001C // Interrupt source register +#define CSR8 0x0020 // Interrupt mask register +#define CSR9 0x0024 // Maximum frame length register +#define CSR11 0x002C // Back-off control register +#define CSR12 0x0030 // Synchronization configuration register 0 +#define CSR13 0x0034 // Synchronization configuration register 1 +#define CSR14 0x0038 // Synchronization control register +#define CSR15 0x003C // Synchronization status register +#define CSR16 0x0040 // TSF timer register 0 +#define CSR17 0x0044 // TSF timer register 1 +#define CSR18 0x0048 // IFS timer register 0 +#define CSR19 0x004C // IFS timer register 1 +#define CSR20 0x0050 // WakeUp register +#define CSR21 0x0054 // EEPROM control register +#define CSR22 0x0058 // CFP Control Register + +// Security coprocessor registers +#define SECCSR0 0x0028 // WEP control register +#define SECCSR1 0x0158 // WEP control register +#define SECCSR3 0x00fc // AES control register + +// Transmit related CSRs +#define TXCSR0 0x0060 // TX cintrol register +#define TXCSR1 0x0064 // TX configuration register +#define TXCSR2 0x0068 // TX descriptor configuratioon register +#define TXCSR3 0x006C // TX Ring Base address register +#define TXCSR4 0x0070 // Atim Ring Base address register +#define TXCSR5 0x0074 // Prio Ring Base address register +#define TXCSR6 0x0078 // Beacon base address +#define TXCSR7 0x007C // AutoResponder Control Register +#define TXCSR8 0x0098 // CCK TX BBP registers +#define TXCSR9 0x0094 // OFDM TX BBP registers + +// Receive related CSRs +#define RXCSR0 0x0080 // RX control register +#define RXCSR1 0x0084 // RX descriptorconfiguration register +#define RXCSR2 0x0088 // RX Ring base address register +#define RXCSR3 0x0090 // BBP ID register 0 +//#define RXCSR4 0x0094 // BBP ID register 1 +//#define ARCSR0 0x0098 // Auto responder PLCP config register 1 +#define ARCSR1 0x009C // Auto responder PLCP config register 1 + +// PCI control CSRs +#define PCICSR 0x008C // PCI control register + +// +// Alias to all ring base registers. Easier to understand constant definition +// within codes. +// +#define RX_RING_BASE_REG (RXCSR2) +#define TX_RING_BASE_REG (TXCSR3) +#define ATIM_RING_BASE_REG (TXCSR4) +#define PRIO_RING_BASE_REG (TXCSR5) +#define BEACON_BASE_REG (TXCSR6) + +// Statistic Register +#define CNT0 0x00A0 // Dot11 FCS error count +#define CNT1 0x00AC // Dot11 PLCP error count +#define CNT2 0x00B0 // Dot11 long error count +#define CNT3 0x00B8 // Dot11 CCA false alarm count +#define CNT4 0x00BC // Dot11 Rx FIFO overflow count +#define CNT5 0x00C0 // Dot11 Tx FIFO underrun count + +// Baseband Control Register +#define PWRCSR0 0x00C4 +#define PSCSR0 0x00C8 +#define PSCSR1 0x00CC +#define PSCSR2 0x00D0 +#define PSCSR3 0x00D4 +#define PWRCSR1 0x00D8 +#define TIMECSR 0x00DC +#define MACCSR0 0x00E0 +#define MACCSR1 0x00E4 +#define RALINKCSR 0x00E8 // Ralink Auto-reset register +#define BCNCSR 0x00EC + +// BBP/RF/IF Control Register +#define BBPCSR 0x00F0 +#define RFCSR 0x00F4 +#define LEDCSR 0x00F8 + +// ASIC pointer information +#define RXPTR 0x0100 // Current RX ring address +#define TXPTR 0x0104 // Current Tx ring address +#define PRIPTR 0x0108 // Current Priority ring address +#define ATIMPTR 0x010c // Current ATIM ring address + +// some others +#define TXACKCSR0 0x0110 // TX ACK timeout +#define ACKCNT0 0x0114 // TX ACK timeout count +#define ACKCNT1 0x0118 // RX ACK timeout count + +// GPIO and others +#define GPIOCSR 0x0120 // GPIO direction & in/out +#define FIFOCSR0 0x0128 // TX FIFO pointer +#define FIFOCSR1 0x012C // RX FIFO pointer +#define BCNCSR1 0x0130 // Tx BEACON offset time, unit: 1 usec +#define MACCSR2 0x0134 // TX_PE to RX_PE delay time, unit: 1 PCI clock cycle +#define TESTCSR 0x0138 // TEST mode selection register + +#define PLCP1MCSR 0x013c // 1 Mbps ACK/CTS PLCP +#define PLCP2MCSR 0x0140 // 2 Mbps ACK/CTS PLCP +#define PLCP5MCSR 0x0144 // 5.5 Mbps ACK/CTS PLCP +#define PLCP11MCSR 0x0148 // 11 Mbps ACK/CTS PLCP + +#define ARTCSR0 0x014c // ACK/CTS payload consumed time for 1/2/5.5/11 mbps +#define ARTCSR1 0x0150 // OFDM ACK/CTS payload consumed time for 6/9/12/18 mbps +#define ARTCSR2 0x0154 // OFDM ACK/CTS payload consumed time for 24/36/48/54 mbps +#define SECCSR1 0x0158 // security control register +#define BBPCSR1 0x015c // BBP TX configuration + +#define DBANDCSR0 0x0160 // Dual band configuration register 0 +#define DBANDCSR1 0x0164 // Dual band configuration register 1 +#define BBPPCSR 0x0168 // BBP pin control register +#define DBGSEL0 0x016c // MAC special debug mode selection register 0 +#define DBGSEL1 0x0170 // MAC special debug mode selection register 1 +#define BISTCSR 0x0174 // BBP BIST register + +#define MCAST0 0x0178 // multicast filter register 0 +#define MCAST1 0x017c // multicast filter register 1 + +#define UARTCSR0 0x0180 // UART1 TX register +#define UARTCSR1 0x0184 // UART1 RX register +#define UARTCSR3 0x0188 // UART1 frame control register +#define UARTCSR4 0x018c // UART1 buffer control register +#define UART2CSR0 0x0190 // UART2 TX register +#define UART2CSR1 0x0194 // UART2 RX register +#define UART2CSR3 0x0198 // UART2 frame control register +#define UART2CSR4 0x019c // UART2 buffer control register + +#define TIMECSR2 0x00a8 +#define TIMECSR3 0x00b4 + +// +// Tx / Rx / Prio / Atim ring descriptor definition +// +#define DESC_OWN_HOST 0 +#define DESC_OWN_NIC 1 +#define DESC_VALID_TRUE 1 +#define DESC_VALID_FALSE 0 + +// +// BBP & RF definition +// +#define BUSY 1 +#define IDLE 0 + +#define BBP_Version 0x00 +#define BBP_Tx_Configure 2 // R2 +#define BBP_Tx_Tssi 1 // R1 +#define BBP_Rx_Configure 14 // R14 + +#define PHY_TR_SWITCH_TIME 5 // usec + +#define RT2560_VER_B 2 +#define RT2560_VER_C 3 +#define RT2560_VER_D 4 +#define BBP_R17_LOW_SENSIBILITY 0x50 +#define BBP_R17_MID_SENSIBILITY 0x41 +#define BBP_R17_DYNAMIC_UP_BOUND 0x40 +#define RSSI_FOR_LOW_SENSIBILITY -58 +#define RSSI_FOR_MID_SENSIBILITY -74 +//#define RSSI_HIGH_WATERMARK -53 +//#define RSSI_LOW_WATERMARK -58 + +//------------------------------------------------------------------------- +// EEPROM definition +//------------------------------------------------------------------------- +#define EEDO 0x10 +#define EEDI 0x08 +#define EECS 0x04 +#define EESK 0x02 +#define EERL 0x01 + +#define EEPROM_WRITE_OPCODE 0x05 +#define EEPROM_READ_OPCODE 0x06 +#define EEPROM_EWDS_OPCODE 0x10 +#define EEPROM_EWEN_OPCODE 0x13 + +#define NUM_EEPROM_BBP_PARMS 19 +#define NUM_EEPROM_TX_PARMS 7 +#define EEPROM_BBP_BASE_OFFSET 0x20 // 0x16 +#define EEPROM_TX_PWR_OFFSET 0x46 // 0x3c +#define EEPROM_TSSI_REF_OFFSET 0x54 +#define EEPROM_TSSI_DELTA_OFFSET 0x24 +#define EEPROM_CALIBRATE_OFFSET 0x7c +#define EEPROM_VERSION_OFFSET 0x7e +#define VALID_EEPROM_VERSION 1 + +// ================================================================================= +// TX / RX ring descriptor format +// ================================================================================= + +// +// TX descriptor format, Tx ring, Atim ring & Priority Ring +// +typedef struct _TXD_STRUC { + // Word 0 +#ifdef BIG_ENDIAN + ULONG CipherAlg:3; + ULONG Rsv1:1; //RTS:1; + ULONG DataByteCnt:12; + ULONG RetryMd:1; + ULONG IFS:2; + ULONG CipherOwn:1; + ULONG Ofdm:1; + ULONG Timestamp:1; + ULONG ACK:1; + ULONG MoreFrag:1; // More fragment following this tx ring + ULONG RetryCount:3; // Retry result + ULONG TxResult:3; // Filled by MAC ASIC + ULONG Valid:1; // Entry valid bit + ULONG Owner:1; // Descriptor owner bit +#else + ULONG Owner:1; // Descriptor owner bit + ULONG Valid:1; // Entry valid bit + ULONG TxResult:3; // Filled by MAC ASIC + ULONG RetryCount:3; // Retry result + ULONG MoreFrag:1; // More fragment following this tx ring + ULONG ACK:1; + ULONG Timestamp:1; + ULONG Ofdm:1; + ULONG CipherOwn:1; + ULONG IFS:2; + ULONG RetryMd:1; + ULONG DataByteCnt:12; + ULONG Rsv1:1; //RTS:1; + ULONG CipherAlg:3; +#endif + + // Word 1 + ULONG BufferAddressPa; + + // Word 2 +#ifdef BIG_ENDIAN + ULONG Rsv2:16; + ULONG CWmax:4; + ULONG CWmin:4; + ULONG Aifs:2; + ULONG IvOffset:6; +#else + ULONG IvOffset:6; + ULONG Aifs:2; + ULONG CWmin:4; + ULONG CWmax:4; + ULONG Rsv2:16; +#endif + + // Word 3 + ULONG PlcpSignal:8; + ULONG PlcpService:8; + ULONG PlcpLengthLow:8; + ULONG PlcpLengthHigh:8; + + // Word 4 + ULONG Iv; + + // Word 5 + ULONG Eiv; + + // Word 6-9 + UCHAR Key[16]; + + // Word 10 - 11 Reserved, not necessary to put into the structure. +#ifdef BIG_ENDIAN + ULONG Rsv3:24; + ULONG TxRate:7; // for software use to track per-rate TX result, RATE_1, ... + ULONG RTS:1; +#else + ULONG RTS:1; + ULONG TxRate:7; // software use only. keep record of the Tx rate, RATE_1,... + ULONG Rsv3:24; +#endif +} TXD_STRUC, *PTXD_STRUC; + +// +// Rx descriptor format, Rx Ring +// +typedef struct _RXD_STRUC { + // Word 0 +#ifdef BIG_ENDIAN + ULONG CipherAlg:3; + ULONG Rsv1:1; // Drop:1; // Drop this frame after NULL cipher operation + ULONG DataByteCnt:12; + ULONG IvOffset:6; + ULONG IcvError:1; + ULONG CipherOwner:1; + ULONG PhyErr:1; + ULONG Ofdm:1; + ULONG Crc:1; + ULONG MyBss:1; + ULONG Bcast:1; + ULONG Mcast:1; + ULONG U2M:1; + ULONG Owner:1; +#else + ULONG Owner:1; + ULONG U2M:1; + ULONG Mcast:1; + ULONG Bcast:1; + ULONG MyBss:1; + ULONG Crc:1; + ULONG Ofdm:1; + ULONG PhyErr:1; + ULONG CipherOwner:1; + ULONG IcvError:1; + ULONG IvOffset:6; + ULONG DataByteCnt:12; + ULONG Rsv1:1; // Drop:1; // Drop this frame after NULL cipher operation + ULONG CipherAlg:3; +#endif + + // Word 1 + ULONG BufferAddressPa; + + // Word 2 - 3 + UCHAR BBR0; + UCHAR BBR1; // suppose to read back RSSI + UCHAR TA[6]; + + // Word 4 + ULONG Iv; + + // Word 5 + ULONG Eiv; + + // Word 6-9 + UCHAR Key[16]; + + // Word 10 - 11 Reserved, not necessary to put into the structure. +#ifdef BIG_ENDIAN + ULONG Rsv2:31; + ULONG Drop:1; +#else + ULONG Drop:1; + ULONG Rsv2:31; +#endif +} RXD_STRUC, *PRXD_STRUC; + +// ================================================================================= +// CSR Registers +// ================================================================================= + +// +// CSR1: System control register +// +typedef union _CSR1_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd1:29; + ULONG HostReady:1; // Host is ready after initialization, 1: ready + ULONG BbpReset:1; // Hardware reset BBP + ULONG SoftReset:1; // Software reset bit, 1: reset, 0: normal +#else + ULONG SoftReset:1; // Software reset bit, 1: reset, 0: normal + ULONG BbpReset:1; // Hardware reset BBP + ULONG HostReady:1; // Host is ready after initialization, 1: ready + ULONG Rsvd1:29; +#endif + } field; + ULONG word; +} CSR1_STRUC, *PCSR1_STRUC; + +// +// CSR3: STA MAC register 0 +// +typedef union _CSR3_STRUC { + struct { +#ifdef BIG_ENDIAN + UCHAR Byte3; // MAC address byte 3 + UCHAR Byte2; // MAC address byte 2 + UCHAR Byte1; // MAC address byte 1 + UCHAR Byte0; // MAC address byte 0 +#else + UCHAR Byte0; // MAC address byte 0 + UCHAR Byte1; // MAC address byte 1 + UCHAR Byte2; // MAC address byte 2 + UCHAR Byte3; // MAC address byte 3 +#endif + } field; + ULONG word; +} CSR3_STRUC, *PCSR3_STRUC; + +// +// CSR4: STA MAC register 1 +// +typedef union _CSR4_STRUC { + struct { +#ifdef BIG_ENDIAN + UCHAR Rsvd1; + UCHAR Rsvd0; + UCHAR Byte5; // MAC address byte 5 + UCHAR Byte4; // MAC address byte 4 +#else + UCHAR Byte4; // MAC address byte 4 + UCHAR Byte5; // MAC address byte 5 + UCHAR Rsvd0; + UCHAR Rsvd1; +#endif + } field; + ULONG word; +} CSR4_STRUC, *PCSR4_STRUC; + +// +// CSR5: BSSID register 0 +// +typedef union _CSR5_STRUC { + struct { +#ifdef BIG_ENDIAN + UCHAR Byte3; // BSSID byte 3 + UCHAR Byte2; // BSSID byte 2 + UCHAR Byte1; // BSSID byte 1 + UCHAR Byte0; // BSSID byte 0 +#else + UCHAR Byte0; // BSSID byte 0 + UCHAR Byte1; // BSSID byte 1 + UCHAR Byte2; // BSSID byte 2 + UCHAR Byte3; // BSSID byte 3 +#endif + } field; + ULONG word; +} CSR5_STRUC, *PCSR5_STRUC; + +// +// CSR6: BSSID register 1 +// +typedef union _CSR6_STRUC { + struct { +#ifdef BIG_ENDIAN + UCHAR Rsvd1; + UCHAR Rsvd0; + UCHAR Byte5; // BSSID byte 5 + UCHAR Byte4; // BSSID byte 4 +#else + UCHAR Byte4; // BSSID byte 4 + UCHAR Byte5; // BSSID byte 5 + UCHAR Rsvd0; + UCHAR Rsvd1; +#endif + } field; + ULONG word; +} CSR6_STRUC, *PCSR6_STRUC; + +// +// CSR7: Interrupt source register +// Write one to clear corresponding bit +// +typedef union _CSR7_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:12; + ULONG Timecsr3Expired:1; // TIMECSR3 hardware timer expired (for 802.1H quiet period) + ULONG Uart2RxBufferError:1; // UART2 RX buffer error + ULONG Uart2TxBufferError:1; // UART2 TX buffer error + ULONG Uart2IdleThreshold:1; // UART2 IDLE over threshold + ULONG Uart2RxThreshold:1; // UART2 RX reaches threshold + ULONG Uart2TxThreshold:1; // UART2 TX reaches threshold + ULONG UartRxBufferError:1; // UART1 RX buffer error + ULONG UartTxBufferError:1; // UART1 TX buffer error + ULONG UartIdleThreshold:1; // UART1 IDLE over threshold + ULONG UartRxThreshold:1; // UART1 RX reaches threshold + ULONG UartTxThreshold:1; // UART1 TX reaches threshold + ULONG EncryptionDone:1; // Encryption done interrupt + ULONG DecryptionDone:1; // Decryption done interrupt + ULONG RxDone:1; // Receive done interrupt + ULONG PrioRingTxDone:1; // Priority ring transmit done interrupt + ULONG AtimRingTxDone:1; // Atim ring transmit done interrupt + ULONG TxRingTxDone:1; // Tx ring transmit done interrupt + ULONG TatimwExpire:1; // Timer of atim window expired interrupt + ULONG TwakeExpire:1; // Wakeup timer expired interrupt + ULONG TbcnExpire:1; // Beacon timer expired interrupt +#else + ULONG TbcnExpire:1; // Beacon timer expired interrupt + ULONG TwakeExpire:1; // Wakeup timer expired interrupt + ULONG TatimwExpire:1; // Timer of atim window expired interrupt + ULONG TxRingTxDone:1; // Tx ring transmit done interrupt + ULONG AtimRingTxDone:1; // Atim ring transmit done interrupt + ULONG PrioRingTxDone:1; // Priority ring transmit done interrupt + ULONG RxDone:1; // Receive done interrupt + ULONG DecryptionDone:1; // Decryption done interrupt + ULONG EncryptionDone:1; // Encryption done interrupt + ULONG UartTxThreshold:1; // UART1 TX reaches threshold + ULONG UartRxThreshold:1; // UART1 RX reaches threshold + ULONG UartIdleThreshold:1; // UART1 IDLE over threshold + ULONG UartTxBufferError:1; // UART1 TX buffer error + ULONG UartRxBufferError:1; // UART1 RX buffer error + ULONG Uart2TxThreshold:1; // UART2 TX reaches threshold + ULONG Uart2RxThreshold:1; // UART2 RX reaches threshold + ULONG Uart2IdleThreshold:1; // UART2 IDLE over threshold + ULONG Uart2TxBufferError:1; // UART2 TX buffer error + ULONG Uart2RxBufferError:1; // UART2 RX buffer error + ULONG Timecsr3Expired:1; // TIMECSR3 hardware timer expired (for 802.1H quiet period) + ULONG Rsvd:12; +#endif + } field; + ULONG word; +} CSR7_STRUC, *PCSR7_STRUC, INTSRC_STRUC, *PINTSRC_STRUC; + +// +// CSR8: Interrupt Mask register +// Write one to mask off interrupt +// +typedef union _CSR8_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:12; + ULONG Timecsr3Expired:1; // TIMECSR3 hardware timer expired (for 802.1H quiet period) + ULONG Uart2RxBufferError:1; // UART2 RX buffer error + ULONG Uart2TxBufferError:1; // UART2 TX buffer error + ULONG Uart2IdleThreshold:1; // UART2 IDLE over threshold + ULONG Uart2RxThreshold:1; // UART2 RX reaches threshold + ULONG Uart2TxThreshold:1; // UART2 TX reaches threshold + ULONG UartRxBufferError:1; // UART1 RX buffer error + ULONG UartTxBufferError:1; // UART1 TX buffer error + ULONG UartIdleThreshold:1; // UART1 IDLE over threshold + ULONG UartRxThreshold:1; // UART1 RX reaches threshold + ULONG UartTxThreshold:1; // UART1 TX reaches threshold + ULONG EncryptionDone:1; // Encryption done interrupt + ULONG DecryptionDone:1; // Decryption done interrupt + ULONG RxDone:1; // Receive done interrupt mask + ULONG PrioRingTxDone:1; // Priority ring transmit done interrupt mask + ULONG AtimRingTxDone:1; // Atim ring transmit done interrupt mask + ULONG TxRingTxDone:1; // Tx ring transmit done interrupt mask + ULONG TatimwExpire:1; // Timer of atim window expired interrupt mask + ULONG TwakeExpire:1; // Wakeup timer expired interrupt mask + ULONG TbcnExpire:1; // Beacon timer expired interrupt mask +#else + ULONG TbcnExpire:1; // Beacon timer expired interrupt mask + ULONG TwakeExpire:1; // Wakeup timer expired interrupt mask + ULONG TatimwExpire:1; // Timer of atim window expired interrupt mask + ULONG TxRingTxDone:1; // Tx ring transmit done interrupt mask + ULONG AtimRingTxDone:1; // Atim ring transmit done interrupt mask + ULONG PrioRingTxDone:1; // Priority ring transmit done interrupt mask + ULONG RxDone:1; // Receive done interrupt mask + ULONG DecryptionDone:1; // Decryption done interrupt + ULONG EncryptionDone:1; // Encryption done interrupt + ULONG UartTxThreshold:1; // UART1 TX reaches threshold + ULONG UartRxThreshold:1; // UART1 RX reaches threshold + ULONG UartIdleThreshold:1; // UART1 IDLE over threshold + ULONG UartTxBufferError:1; // UART1 TX buffer error + ULONG UartRxBufferError:1; // UART1 RX buffer error + ULONG Uart2TxThreshold:1; // UART2 TX reaches threshold + ULONG Uart2RxThreshold:1; // UART2 RX reaches threshold + ULONG Uart2IdleThreshold:1; // UART2 IDLE over threshold + ULONG Uart2TxBufferError:1; // UART2 TX buffer error + ULONG Uart2RxBufferError:1; // UART2 RX buffer error + ULONG Timecsr3Expired:1; // TIMECSR3 hardware timer expired (for 802.1H quiet period) + ULONG Rsvd:12; +#endif + } field; + ULONG word; +} CSR8_STRUC, *PCSR8_STRUC, INTMSK_STRUC, *PINTMSK_STRUC; + +// +// CSR9: Maximum frame length register +// +typedef union _CSR9_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd1:20; + ULONG MaxFrameUnit:5; // Maximum frame legth in 128B unit, default is 12 = 0xC. + ULONG Rsvd0:7; +#else + ULONG Rsvd0:7; + ULONG MaxFrameUnit:5; // Maximum frame legth in 128B unit, default is 12 = 0xC. + ULONG Rsvd1:20; +#endif + } field; + ULONG word; +} CSR9_STRUC, *PCSR9_STRUC; + +// +// SECCSR0: WEP control register +// +typedef union _SECCSR0_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG DescAddress:30; // Descriptor physical address of frame in one-shot-mode. + ULONG OneShotMode:1; // 1: One shot only mode, 0: ring mode + ULONG KickDecypt:1; // Kick decryption engine, self-clear +#else + ULONG KickDecypt:1; // Kick decryption engine, self-clear + ULONG OneShotMode:1; // 1: One shot only mode, 0: ring mode + ULONG DescAddress:30; // Descriptor physical address of frame in one-shot-mode. +#endif + } field; + ULONG word; +} SECCSR0_STRUC, *PSECCSR0_STRUC; + +// +// SECCSR1: WEP control register +// +typedef union _SECCSR1_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG DescAddress:30; // Descriptor physical address of frame in one-shot-mode. + ULONG OneShotMode:1; // 1: One shot only mode, 0: ring mode + ULONG KickEncypt:1; // Kick encryption engine, self-clear +#else + ULONG KickEncypt:1; // Kick encryption engine, self-clear + ULONG OneShotMode:1; // 1: One shot only mode, 0: ring mode + ULONG DescAddress:30; // Descriptor physical address of frame in one-shot-mode. +#endif + } field; + ULONG word; +} SECCSR1_STRUC, *PSECCSR1_STRUC; + +// +// CSR11: Back-Off control register +// +typedef union _CSR11_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG ShortRetry:8; // Short retry count + ULONG LongRetry:8; // Long retry count + ULONG Rsvd:2; + ULONG CWSelect:1; // 1: CWmin/CWmax select from register, 0: select from TxD + ULONG SlotTime:5; // Slot time, default is 20us for 802.11B + ULONG CWMax:4; // Bit for Cwmax, default Cwmax is 1023 (2^10 - 1). + ULONG CWMin:4; // Bit for Cwmin. default Cwmin is 31 (2^5 - 1). +#else + ULONG CWMin:4; // Bit for Cwmin. default Cwmin is 31 (2^5 - 1). + ULONG CWMax:4; // Bit for Cwmax, default Cwmax is 1023 (2^10 - 1). + ULONG SlotTime:5; // Slot time, default is 20us for 802.11B + ULONG CWSelect:1; // 1: CWmin/Cwmax select from register, 0:select from TxD + ULONG Rsvd:2; + ULONG LongRetry:8; // Long retry count + ULONG ShortRetry:8; // Short retry count +#endif + } field; + ULONG word; +} CSR11_STRUC, *PCSR11_STRUC; + +// +// CSR12: Synchronization configuration register 0 +// All uint in 1/16 TU +// +typedef union _CSR12_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG CfpMaxDuration:16; // Beacon interval, default is 100 TU + ULONG BeaconInterval:16; // CFP maximum duration, default is 100 TU +#else + ULONG BeaconInterval:16; // CFP maximum duration, default is 100 TU + ULONG CfpMaxDuration:16; // Beacon interval, default is 100 TU +#endif + } field; + ULONG word; +} CSR12_STRUC, *PCSR12_STRUC; + +// +// CSR13: Synchronization configuration register 1 +// All uint in 1/16 TU +// +typedef union _CSR13_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:8; + ULONG CfpPeriod:8; // CFP period, default is 0 TU + ULONG AtimwDuration:16; // ATIM window duration, default is 10 TU +#else + ULONG AtimwDuration:16; // ATIM window duration, default is 10 TU + ULONG CfpPeriod:8; // CFP period, default is 0 TU + ULONG Rsvd:8; +#endif + } field; + ULONG word; +} CSR13_STRUC, *PCSR13_STRUC; + +// +// CSR14: Synchronization control register +// +typedef union _CSR14_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG TbcnPreload:16; // Tbcn preload value + ULONG CfpCntPreload:8; // Cfp count preload value + ULONG Rsvd:1; + ULONG BeaconGen:1; // Enable beacon generator + ULONG Tatimw:1; // Enable Tatimw & ATIM window switching + ULONG Tcfp:1; // Enable Tcfp & CFP / CP switching + ULONG Tbcn:1; // Enable Tbcn with reload value + ULONG TsfSync:2; // Enable TSF sync, 00: disable, 01: infra mode, 10: ad-hoc mode + ULONG TsfCount:1; // Enable TSF auto counting +#else + ULONG TsfCount:1; // Enable TSF auto counting + ULONG TsfSync:2; // Enable TSF sync, 00: disable, 01: infra mode, 10: ad-hoc mode + ULONG Tbcn:1; // Enable Tbcn with reload value + ULONG Tcfp:1; // Enable Tcfp & CFP / CP switching + ULONG Tatimw:1; // Enable Tatimw & ATIM window switching + ULONG BeaconGen:1; // Enable beacon generator + ULONG Rsvd:1; + ULONG CfpCntPreload:8; // Cfp count preload value + ULONG TbcnPreload:16; // Tbcn preload value +#endif + } field; + ULONG word; +} CSR14_STRUC, *PCSR14_STRUC; + +// +// CSR15: Synchronization status register +// +typedef union _CSR15_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:29; + ULONG BeaconSent:1; // Beacon sent + ULONG Atimw:1; // Atim window period + ULONG Cfp:1; // CFP period +#else + ULONG Cfp:1; // CFP period + ULONG Atimw:1; // Atim window period + ULONG BeaconSent:1; // Beacon sent + ULONG Rsvd:29; +#endif + } field; + ULONG word; +} CSR15_STRUC, *PCSR15_STRUC; + +// +// CSR18: IFS Timer register 0 +// +typedef union _CSR18_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd1:7; + ULONG PIFS:9; // PIFS, default is 30 TU + ULONG Rsvd0:7; + ULONG SIFS:9; // SIFS, default is 10 TU +#else + ULONG SIFS:9; // SIFS, default is 10 TU + ULONG Rsvd0:7; + ULONG PIFS:9; // PIFS, default is 30 TU + ULONG Rsvd1:7; +#endif + } field; + ULONG word; +} CSR18_STRUC, *PCSR18_STRUC; + +// +// CSR19: IFS Timer register 1 +// +typedef union _CSR19_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG EIFS:16; // EIFS, default is 364 TU + ULONG DIFS:16; // DIFS, default is 50 TU +#else + ULONG DIFS:16; // DIFS, default is 50 TU + ULONG EIFS:16; // EIFS, default is 364 TU +#endif + } field; + ULONG word; +} CSR19_STRUC, *PCSR19_STRUC; + +// +// CSR20: Wakeup timer register +// +typedef union _CSR20_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:7; + ULONG AutoWake:1; // Enable auto wakeup / sleep mechanism + ULONG NumBcnBeforeWakeup:8; // Number of beacon before wakeup + ULONG DelayAfterBcn:16; // Delay after Tbcn expired in units of 1/16 TU +#else + ULONG DelayAfterBcn:16; // Delay after Tbcn expired in units of 1/16 TU + ULONG NumBcnBeforeWakeup:8; // Number of beacon before wakeup + ULONG AutoWake:1; // Enable auto wakeup / sleep mechanism + ULONG Rsvd:7; +#endif + } field; + ULONG word; +} CSR20_STRUC, *PCSR20_STRUC; + +// +// CSR21: EEPROM control register +// +typedef union _CSR21_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:26; + ULONG Type:1; // 1: 93C46, 0:93C66 + ULONG EepromDO:1; + ULONG EepromDI:1; + ULONG EepromCS:1; + ULONG EepromSK:1; + ULONG Reload:1; // Reload EEPROM content, write one to reload, self-cleared. +#else + ULONG Reload:1; // Reload EEPROM content, write one to reload, self-cleared. + ULONG EepromSK:1; + ULONG EepromCS:1; + ULONG EepromDI:1; + ULONG EepromDO:1; + ULONG Type:1; // 1: 93C46, 0:93C66 + ULONG Rsvd:26; +#endif + } field; + ULONG word; +} CSR21_STRUC, *PCSR21_STRUC; + +// +// CSR22: CFP control register +// +typedef union _CSR22_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:15; + ULONG ReloadCfpDurRemain:1; // Reload CFP duration remain, write one to reload, self-cleared + ULONG CfpDurRemain:16; // CFP duration remain, in units of TU +#else + ULONG CfpDurRemain:16; // CFP duration remain, in units of TU + ULONG ReloadCfpDurRemain:1; // Reload CFP duration remain, write one to reload, self-cleared + ULONG Rsvd:15; +#endif + } field; + ULONG word; +} CSR22_STRUC, *PCSR22_STRUC; + +// ================================================================================= +// TX / RX Registers +// ================================================================================= + +// +// TXCSR0 <0x0060> : TX Control Register +// +typedef union _TXCSR0_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:28; + ULONG Abort:1; // Abort all transmit related ring operation + ULONG KickPrio:1; // Kick priority ring + ULONG KickAtim:1; // Kick ATIM ring + ULONG KickTx:1; // Kick Tx ring +#else + ULONG KickTx:1; // Kick Tx ring + ULONG KickAtim:1; // Kick ATIM ring + ULONG KickPrio:1; // Kick priority ring + ULONG Abort:1; // Abort all transmit related ring operation + ULONG Rsvd:28; +#endif + } field; + ULONG word; +} TXCSR0_STRUC, *PTXCSR0_STRUC; + +// +// TXCSR1 <0x0064> : TX Configuration Register +// +typedef union _TXCSR1_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Reserved:7; + ULONG AutoResponder:1; // enable auto responder which include ACK & CTS + ULONG TsFOffset:6; // Insert Tsf offset + ULONG AckConsumeTime:9; // ACK consume time, default = SIFS + ACKtime @ 1Mbps + ULONG AckTimeOut:9; // Ack timeout, default = SIFS + 2*SLOT_ACKtime @ 1Mbps +#else + ULONG AckTimeOut:9; // Ack timeout, default = SIFS + 2*SLOT_ACKtime @ 1Mbps + ULONG AckConsumeTime:9; // ACK consume time, default = SIFS + ACKtime @ 1Mbps + ULONG TsFOffset:6; // Insert Tsf offset + ULONG AutoResponder:1; // enable auto responder which include ACK & CTS + ULONG Reserved:7; +#endif + } field; + ULONG word; +} TXCSR1_STRUC, *PTXCSR1_STRUC; + +// +// TXCSR2: Tx descriptor configuration register +// +typedef union _TXCSR2_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG NumPrioD:8; // Number of PriorityD in ring + ULONG NumAtimD:8; // Number of AtimD in ring + ULONG NumTxD:8; // Number of TxD in ring + ULONG TxDSize:8; // Tx descriptor size, default is 48 +#else + ULONG TxDSize:8; // Tx descriptor size, default is 48 + ULONG NumTxD:8; // Number of TxD in ring + ULONG NumAtimD:8; // Number of AtimD in ring + ULONG NumPrioD:8; // Number of PriorityD in ring +#endif + } field; + ULONG word; +} TXCSR2_STRUC, *PTXCSR2_STRUC; + +// +// TXCSR7: Auto responder control register +// +typedef union _TXCSR7_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:31; + ULONG ARPowerManage:1; // Auto responder power management bit +#else + ULONG ARPowerManage:1; // Auto responder power management bit + ULONG Rsvd:31; +#endif + } field; + ULONG word; +} TXCSR7_STRUC, *PTXCSR7_STRUC; + +// +// TXCSR8: CCK Tx BBP register +// +typedef union _TXCSR8_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG CckLenHigh:8; // BBP length high byte address for CCK + ULONG CckLenLow:8; // BBP length low byte address for CCK + ULONG CckService:8; // BBP service field address for CCK + ULONG CckSignal:8; // BBP signal field address for CCK +#else + ULONG CckSignal:8; // BBP signal field address for CCK + ULONG CckService:8; // BBP service field address for CCK + ULONG CckLenLow:8; // BBP length low byte address for CCK + ULONG CckLenHigh:8; // BBP length high byte address for CCK +#endif + } field; + ULONG word; +} TXCSR8_STRUC, *PTXCSR8_STRUC; + +// +// TXCSR9: OFDM Tx BBP register +// +typedef union _TXCSR9_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG OfdmLenHigh:8; // BBP length high byte address for OFDM + ULONG OfdmLenLow:8; // BBP length low byte address for OFDM + ULONG OfdmService:8; // BBP service field address for OFDM + ULONG OfdmRate:8; // BBP rate field address for OFDM +#else + ULONG OfdmRate:8; // BBP rate field address for OFDM + ULONG OfdmService:8; // BBP service field address for OFDM + ULONG OfdmLenLow:8; // BBP length low byte address for OFDM + ULONG OfdmLenHigh:8; // BBP length high byte address for OFDM +#endif + } field; + ULONG word; +} TXCSR9_STRUC, *PTXCSR9_STRUC; + +// +// RXCSR0 <0x0080> : RX Control Register +// +typedef union _RXCSR0_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Reserved:20; + ULONG EnableQos:1; // 1: accept QOS data frame format and parse the QOS field + ULONG DropBcast:1; // Drop broadcast frames + ULONG DropMcast:1; // Drop multicast frames + ULONG PassPlcp:1; // Pass all receive packet with 4 bytes PLCP attached + ULONG PassCRC:1; // Pass all receive packet to host with CRC attached + ULONG DropVersionErr:1; // Drop version error frame + ULONG DropToDs:1; // Drop fram ToDs bit is true + ULONG DropNotToMe:1; // Drop not to me unicast frame + ULONG DropControl:1; // Drop control frame + ULONG DropPhysical:1; // Drop physical error + ULONG DropCRC:1; // Drop CRC error + ULONG DisableRx:1; // Disable Rx engine +#else + ULONG DisableRx:1; // Disable Rx engine + ULONG DropCRC:1; // Drop CRC error + ULONG DropPhysical:1; // Drop physical error + ULONG DropControl:1; // Drop control frame + ULONG DropNotToMe:1; // Drop not to me unicast frame + ULONG DropToDs:1; // Drop fram ToDs bit is true + ULONG DropVersionErr:1; // Drop version error frame + ULONG PassCRC:1; // Pass all receive packet to host with CRC attached + ULONG PassPlcp:1; // Pass all receive packet with 4 bytes PLCP attached + ULONG DropMcast:1; // Drop multicast frames + ULONG DropBcast:1; // Drop broadcast frames + ULONG EnableQos:1; // 1: accept QOS data frame format and parse the QOS field + ULONG Reserved:20; +#endif + } field; + ULONG word; +} RXCSR0_STRUC, *PRXCSR0_STRUC; + +// +// RXCSR1: RX descriptor configuration register +// +typedef union _RXCSR1_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:16; + ULONG NumRxD:8; // Number of RxD in ring. + ULONG RxDSize:8; // Rx descriptor size, default is 32B. +#else + ULONG RxDSize:8; // Rx descriptor size, default is 32B. + ULONG NumRxD:8; // Number of RxD in ring. + ULONG Rsvd:16; +#endif + } field; + ULONG word; +} RXCSR1_STRUC, *PRXCSR1_STRUC; + +// +// RXCSR3: BBP ID register for Rx operation +// +typedef union _RXCSR3_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG ValidBbp3:1; // BBP register 3 ID is valid or not + ULONG IdBbp3:7; // BBP register 3 ID + ULONG ValidBbp2:1; // BBP register 2 ID is valid or not + ULONG IdBbp2:7; // BBP register 2 ID + ULONG ValidBbp1:1; // BBP register 1 ID is valid or not + ULONG IdBbp1:7; // BBP register 1 ID + ULONG ValidBbp0:1; // BBP register 0 ID is valid or not + ULONG IdBbp0:7; // BBP register 0 ID +#else + ULONG IdBbp0:7; // BBP register 0 ID + ULONG ValidBbp0:1; // BBP register 0 ID is valid or not + ULONG IdBbp1:7; // BBP register 1 ID + ULONG ValidBbp1:1; // BBP register 1 ID is valid or not + ULONG IdBbp2:7; // BBP register 2 ID + ULONG ValidBbp2:1; // BBP register 2 ID is valid or not + ULONG IdBbp3:7; // BBP register 3 ID + ULONG ValidBbp3:1; // BBP register 3 ID is valid or not +#endif + } field; + ULONG word; +} RXCSR3_STRUC, *PRXCSR3_STRUC; +#if 0 +// +// RXCSR4: BBP ID register for Rx operation +// +typedef union _RXCSR4_STRUC { + struct { + ULONG IdBbp4:7; // BBP register 4 ID + ULONG ValidBbp4:1; // BBP register 4 ID is valid or not + ULONG IdBbp5:7; // BBP register 5 ID + ULONG ValidBbp5:1; // BBP register 5 ID is valid or not + ULONG Rsvd:16; + } field; + ULONG word; +} RXCSR4_STRUC, *PRXCSR4_STRUC; + +// +// ARCSR0: Auto Responder PLCP value register 0 +// +typedef union _ARCSR0_STRUC { + struct { + ULONG ArBbpData0:8; // Auto responder BBP register 0 data + ULONG ArBbpId0:8; // Auto responder BBP register 0 Id + ULONG ArBbpData1:8; // Auto responder BBP register 1 data + ULONG ArBbpId1:8; // Auto responder BBP register 1 Id + } field; + ULONG word; +} ARCSR0_STRUC, *PARCSR0_STRUC; + +// +// ARCSR0: Auto Responder PLCP value register 1 +// +typedef union _ARCSR1_STRUC { + struct { + ULONG ArBbpData2:8; // Auto responder BBP register 2 data + ULONG ArBbpId2:8; // Auto responder BBP register 2 Id + ULONG ArBbpData3:8; // Auto responder BBP register 3 data + ULONG ArBbpId3:8; // Auto responder BBP register 3 Id + } field; + ULONG word; +} ARCSR1_STRUC, *PARCSR1_STRUC; +#endif +// ================================================================================= +// Miscellaneous Registers +// ================================================================================= + +// +// PCISR: PCI control register +// +typedef union _PCICSR_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:22; + ULONG WriteInvalid:1; // Enable memory write & invalid + ULONG ReadMultiple:1; // Enable memory read multiple + ULONG EnableClk:1; // Enable CLK_RUN, PCI clock can't going down to non-operational + ULONG BurstLength:2; // PCI burst length + // 01: 8DW, 10: 16DW, 11:32DW, default 00: 4DW + ULONG TxThreshold:2; // Tx threshold in DW to start PCI access + // 01: 1DW, 10: 4DW, 11: store & forward, default 00: 0DW + ULONG RxThreshold:2; // Rx threshold in DW to start PCI access + // 01: 8DW, 10: 4DW, 11: 32DW, default 00: 16DW + ULONG BigEndian:1; // 1: big endian, 0: little endian +#else + ULONG BigEndian:1; // 1: big endian, 0: little endian + ULONG RxThreshold:2; // Rx threshold in DW to start PCI access + // 01: 8DW, 10: 4DW, 11: 32DW, default 00: 16DW + ULONG TxThreshold:2; // Tx threshold in DW to start PCI access + // 01: 1DW, 10: 4DW, 11: store & forward, default 00: 0DW + ULONG BurstLength:2; // PCI burst length + // 01: 8DW, 10: 16DW, 11:32DW, default 00: 4DW + ULONG EnableClk:1; // Enable CLK_RUN, PCI clock can't going down to non-operational + ULONG ReadMultiple:1; // Enable memory read multiple + ULONG WriteInvalid:1; // Enable memory write & invalid + ULONG Rsvd:22; +#endif + } field; + ULONG word; +} PCICSR_STRUC, *PPCICSR_STRUC; + +// +// PWRCSR0: Power mode configuration register +// Driver did not control it for now. + +// +// PSCSR0: Power saving delay time register 0 +// Driver did not control it for now. + +// +// PSCSR1: Power saving delay time register 1 +// Driver did not control it for now. + +// +// PSCSR2: Power saving delay time register 2 +// Driver did not control it for now. + +// +// PSCSR3: Power saving delay time register 3 +// Driver did not control it for now. + +// +// PWRCSR1: Manual power control / status register +// +typedef union _PWRCSR1_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:22; + ULONG PutToSleep:1; + ULONG RfCurrState:2; + ULONG BbpCurrState:2; + ULONG RfDesireState:2; + ULONG BbpDesireState:2; + ULONG SetState:1; +#else + ULONG SetState:1; + ULONG BbpDesireState:2; + ULONG RfDesireState:2; + ULONG BbpCurrState:2; + ULONG RfCurrState:2; + ULONG PutToSleep:1; + ULONG Rsvd:22; +#endif + } field; + ULONG word; +} PWRCSR1_STRUC, *PPWRCSR1_STRUC; + +// +// TIMECSR: Timer control register +// +typedef union _TIMECSR_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:13; + ULONG BeaconExpect:3; // Beacon expect window + ULONG Us64Cnt:8; // 64 us timer count in units of 1 us timer + ULONG UsCnt:8; // 1 us timer count in units of clock cycles +#else + ULONG UsCnt:8; // 1 us timer count in units of clock cycles + ULONG Us64Cnt:8; // 64 us timer count in units of 1 us timer + ULONG BeaconExpect:3; // Beacon expect window + ULONG Rsvd:13; +#endif + } field; + ULONG word; +} TIMECSR_STRUC, *PTIMECSR_STRUC; + +// +// MACCSR0: MAC configuration register 0 +// + +// +// MACCSR1: MAC configuration register 1 +// +typedef union _MACCSR1_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:24; + ULONG IntersilIF:1; // Intersil IF calibration pin + ULONG LoopBack:2; // Loopback mode. 00: normal, 01: internal, 10: external, 11:rsvd. + ULONG AutoRxBbp:1; // Auto Rx logic access BBP control register + ULONG AutoTxBbp:1; // Auto Tx logic access BBP control register + ULONG BbpRxResetMode:1; // Ralink BBP RX reset mode + ULONG OneShotRxMode:1; // Enable one-shot Rx mode for debugging + ULONG KickRx:1; // Kick one-shot Rx in one-shot Rx mode +#else + ULONG KickRx:1; // Kick one-shot Rx in one-shot Rx mode + ULONG OneShotRxMode:1; // Enable one-shot Rx mode for debugging + ULONG BbpRxResetMode:1; // Ralink BBP RX reset mode + ULONG AutoTxBbp:1; // Auto Tx logic access BBP control register + ULONG AutoRxBbp:1; // Auto Rx logic access BBP control register + ULONG LoopBack:2; // Loopback mode. 00: normal, 01: internal, 10: external, 11:rsvd. + ULONG IntersilIF:1; // Intersil IF calibration pin + ULONG Rsvd:24; +#endif + } field; + ULONG word; +} MACCSR1_STRUC, *PMACCSR1_STRUC; + +// +// RALINKCSR: Ralink Rx auto-reset BBCR +// +typedef union _RALINKCSR_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG ArBbpValid1:1; // Auto reset BBP register 1 is valid + ULONG ArBbpId1:7; // Auto reset BBP register 1 Id + ULONG ArBbpData1:8; // Auto reset BBP register 1 data + ULONG ArBbpValid0:1; // Auto reset BBP register 0 is valid + ULONG ArBbpId0:7; // Auto reset BBP register 0 Id + ULONG ArBbpData0:8; // Auto reset BBP register 0 data +#else + ULONG ArBbpData0:8; // Auto reset BBP register 0 data + ULONG ArBbpId0:7; // Auto reset BBP register 0 Id + ULONG ArBbpValid0:1; // Auto reset BBP register 0 is valid + ULONG ArBbpData1:8; // Auto reset BBP register 1 data + ULONG ArBbpId1:7; // Auto reset BBP register 1 Id + ULONG ArBbpValid1:1; // Auto reset BBP register 1 is valid +#endif + } field; + ULONG word; +} RALINKCSR_STRUC, *PRALINKCSR_STRUC; + +// +// BCNCSR: Beacon interval control register +// +typedef union _BCNCSR_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:16; + ULONG Plus:1; // plus or minus delta time value + ULONG Mode:2; // please refer to ASIC specs. + ULONG NumBcn:8; // Delta time value or number of beacon according to mode + ULONG DeltaTime:4; // The delta time value + ULONG Change:1; // Write one to change beacon interval +#else + ULONG Change:1; // Write one to change beacon interval + ULONG DeltaTime:4; // The delta time value + ULONG NumBcn:8; // Delta time value or number of beacon according to mode + ULONG Mode:2; // please refer to ASIC specs. + ULONG Plus:1; // plus or minus delta time value + ULONG Rsvd:16; +#endif + } field; + ULONG word; +} BCNCSR_STRUC, *PBCNCSR_STRUC; + +// +// BBPCSR: BBP serial control register +// +typedef union _BBPCSR_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:15; + ULONG WriteControl:1; // 1: Write BBP, 0: Read BBP + ULONG Busy:1; // 1: ASIC is busy execute BBP programming. + ULONG RegNum:7; // Selected BBP register + ULONG Value:8; // Register value to program into BBP +#else + ULONG Value:8; // Register value to program into BBP + ULONG RegNum:7; // Selected BBP register + ULONG Busy:1; // 1: ASIC is busy execute BBP programming. + ULONG WriteControl:1; // 1: Write BBP, 0: Read BBP + ULONG Rsvd:15; +#endif + } field; + ULONG word; +} BBPCSR_STRUC, *PBBPCSR_STRUC; + +// +// RFCSR: RF serial control register +// +typedef union _RFCSR_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Busy:1; // 1: ASIC is busy execute RF programming. + ULONG PLL_LD:1; // RF PLL_LD status + ULONG IFSelect:1; // 1: select IF to program, 0: select RF to program + ULONG NumberOfBits:5; // Number of bits used in RFRegValue (I:20, RFMD:22) + ULONG RFRegValue:24; // Register value (include register id) serial out to RF/IF chip. +#else + ULONG RFRegValue:24; // Register value (include register id) serial out to RF/IF chip. + ULONG NumberOfBits:5; // Number of bits used in RFRegValue (I:20, RFMD:22) + ULONG IFSelect:1; // 1: select IF to program, 0: select RF to program + ULONG PLL_LD:1; // RF PLL_LD status + ULONG Busy:1; // 1: ASIC is busy execute RF programming. +#endif + } field; + ULONG word; +} RFCSR_STRUC, *PRFCSR_STRUC; + +// +// LEDCSR: LED control register +// +typedef union _LEDCSR_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:11; + ULONG LedADefault:1; // LED A default value for "enable" state. 0: LED ON, 1: LED OFF + ULONG LedBPolarity:1; // 0: active low, 1: active high + ULONG LedAPolarity:1; // 0: active low, 1: active high + ULONG LedB:1; // controlled by software, 1: ON, 0: OFF + ULONG LedA:1; // indicate TX activity, 1: enable, 0: disable + ULONG OffPeriod:8; // Off period, default 30ms + ULONG OnPeriod:8; // On period, default 70ms +#else + ULONG OnPeriod:8; // On period, default 70ms + ULONG OffPeriod:8; // Off period, default 30ms + ULONG LedA:1; // indicate TX activity, 1: enable, 0: disable + ULONG LedB:1; // controlled by software, 1: ON, 0: OFF + ULONG LedAPolarity:1; // 0: active low, 1: active high + ULONG LedBPolarity:1; // 0: active low, 1: active high + ULONG LedADefault:1; // LED A default value for "enable" state. 0: LED ON, 1: LED OFF + ULONG Rsvd:11; +#endif + } field; + ULONG word; +} LEDCSR_STRUC, *PLEDCSR_STRUC; + +// +// GPIOCSR: GPIO control register +// +typedef union _GPIOCSR_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:16; + ULONG Dir7:1; + ULONG Dir6:1; + ULONG Dir5:1; + ULONG Dir4:1; + ULONG Dir3:1; + ULONG Dir2:1; + ULONG Dir1:1; + ULONG Dir0:1; + ULONG Bit7:1; + ULONG Bit6:1; + ULONG Bit5:1; + ULONG Bit4:1; + ULONG Bit3:1; + ULONG Bit2:1; + ULONG Bit1:1; + ULONG Bit0:1; +#else + ULONG Bit0:1; + ULONG Bit1:1; + ULONG Bit2:1; + ULONG Bit3:1; + ULONG Bit4:1; + ULONG Bit5:1; + ULONG Bit6:1; + ULONG Bit7:1; + ULONG Dir0:1; + ULONG Dir1:1; + ULONG Dir2:1; + ULONG Dir3:1; + ULONG Dir4:1; + ULONG Dir5:1; + ULONG Dir6:1; + ULONG Dir7:1; + ULONG Rsvd:16; +#endif + } field; + ULONG word; +} GPIOCSR_STRUC, *PGPIOCSR_STRUC; + +// +// BCNCSR1: Tx BEACON offset time control register +// +typedef union _BCNCSR1_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:12; + ULONG BeaconCwMin:4; // 2^CwMin + ULONG Preload:16; // in units of usec +#else + ULONG Preload:16; // in units of usec + ULONG BeaconCwMin:4; // 2^CwMin + ULONG Rsvd:12; +#endif + } field; + ULONG word; +} BCNCSR1_STRUC, *PBCNCSR1_STRUC; + +// +// MACCSR2: TX_PE to RX_PE turn-around time control register +// +typedef union _MACCSR2_STRUC { + struct { +#ifdef BIG_ENDIAN + ULONG Rsvd:24; + ULONG Delay:8; // in units of PCI clock cycle +#else + ULONG Delay:8; // in units of PCI clock cycle + ULONG Rsvd:24; +#endif + } field; + ULONG word; +} MACCSR2_STRUC, *PMACCSR2_STRUC; + +// +// EEPROM antenna select format +// +typedef union _EEPROM_ANTENNA_STRUC { + struct { +#ifdef BIG_ENDIAN + USHORT RfType:5; // see E2PROM document for RF IC selection + USHORT HardwareRadioControl:1; // 1: Hardware controlled radio enabled, Read GPIO0 required. + USHORT DynamicTxAgcControl:1; + USHORT LedMode:3; // 0-default mode, 1:TX/RX activity mode, 2: Single LED (didn't care about link), 3: reserved + USHORT RxDefaultAntenna:2; // default of antenna, 0: diversity, 1:antenna-A, 2:antenna-B reserved (default = 0) + USHORT TxDefaultAntenna:2; // default of antenna, 0: diversity, 1:antenna-A, 2:antenna-B reserved (default = 0) + USHORT NumOfAntenna:2; // Number of antenna +#else + USHORT NumOfAntenna:2; // Number of antenna + USHORT TxDefaultAntenna:2; // default of antenna, 0: diversity, 1:antenna-A, 2:antenna-B reserved (default = 0) + USHORT RxDefaultAntenna:2; // default of antenna, 0: diversity, 1:antenna-A, 2:antenna-B reserved (default = 0) + USHORT LedMode:3; // 0-default mode, 1:TX/RX activity mode, 2: Single LED (didn't care about link), 3: reserved + USHORT DynamicTxAgcControl:1; + USHORT HardwareRadioControl:1; // 1: Hardware controlled radio enabled, Read GPIO0 required. + USHORT RfType:5; // see E2PROM document for RF IC selection +#endif + } field; + USHORT word; +} EEPROM_ANTENNA_STRUC, *PEEPROM_ANTENNA_STRUC; + +typedef union _EEPROM_NIC_CINFIG2_STRUC { + struct { +#ifdef BIG_ENDIAN + USHORT Rsv:12; // must be 0 + USHORT CckTxPower:2; // CCK TX power compensation + USHORT DynamicBbpTuning:1; // !!! NOTE: 0 - enable, 1 - disable + USHORT CardbusAcceleration:1; // !!! NOTE: 0 - enable, 1 - disable +#else + USHORT CardbusAcceleration:1; // !!! NOTE: 0 - enable, 1 - disable + USHORT DynamicBbpTuning:1; // !!! NOTE: 0 - enable, 1 - disable + USHORT CckTxPower:2; // CCK TX power compensation + USHORT Rsv:12; // must be 0 +#endif + } field; + USHORT word; +} EEPROM_NIC_CONFIG2_STRUC, *PEEPROM_NIC_CONFIG2_STRUC; + +typedef union _EEPROM_TX_PWR_STRUC { + struct { +#ifdef BIG_ENDIAN + UCHAR Byte1; // High Byte + UCHAR Byte0; // Low Byte +#else + UCHAR Byte0; // Low Byte + UCHAR Byte1; // High Byte +#endif + } field; + USHORT word; +} EEPROM_TX_PWR_STRUC, *PEEPROM_TX_PWR_STRUC; + +typedef union _EEPROM_VERSION_STRUC { + struct { +#ifdef BIG_ENDIAN + UCHAR Version; // High Byte + UCHAR FaeReleaseNumber; // Low Byte +#else + UCHAR FaeReleaseNumber; // Low Byte + UCHAR Version; // High Byte +#endif + } field; + USHORT word; +} EEPROM_VERSION_STRUC, *PEEPROM_VERSION_STRUC; + +#endif // __RT2560_H__ --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/rtmp_type.h +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/rtmp_type.h @@ -1,109 +1,109 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: rtmp_type.h - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * PaulL 2md Jan 03 Initial code - * MarkW 8th Dec 04 Baseline code - ***************************************************************************/ - -#ifndef __RTMP_TYPE_H__ -#define __RTMP_TYPE_H__ - -typedef unsigned short UINT16; -typedef unsigned long UINT32; -typedef unsigned long long UINT64; - -#define PACKED __attribute__ ((packed)) - -// Endian byte swapping codes -#ifdef BIG_ENDIAN - -#define SWAP16(x) \ - ((UINT16)( \ - (((UINT16)(x) & (UINT16) 0x00ffU) << 8) | \ - (((UINT16)(x) & (UINT16) 0xff00U) >> 8) )) - -#define SWAP32(x) \ - ((UINT32)( \ - (((UINT32)(x) & (UINT32) 0x000000ffUL) << 24) | \ - (((UINT32)(x) & (UINT32) 0x0000ff00UL) << 8) | \ - (((UINT32)(x) & (UINT32) 0x00ff0000UL) >> 8) | \ - (((UINT32)(x) & (UINT32) 0xff000000UL) >> 24) )) - -#define SWAP64(x) \ - ((UINT64)( \ - (UINT64)(((UINT64)(x) & (UINT64) 0x00000000000000ffULL) << 56) | \ - (UINT64)(((UINT64)(x) & (UINT64) 0x000000000000ff00ULL) << 40) | \ - (UINT64)(((UINT64)(x) & (UINT64) 0x0000000000ff0000ULL) << 24) | \ - (UINT64)(((UINT64)(x) & (UINT64) 0x00000000ff000000ULL) << 8) | \ - (UINT64)(((UINT64)(x) & (UINT64) 0x000000ff00000000ULL) >> 8) | \ - (UINT64)(((UINT64)(x) & (UINT64) 0x0000ff0000000000ULL) >> 24) | \ - (UINT64)(((UINT64)(x) & (UINT64) 0x00ff000000000000ULL) >> 40) | \ - (UINT64)(((UINT64)(x) & (UINT64) 0xff00000000000000ULL) >> 56) )) -#else - -#define SWAP16(x) -#define SWAP32(x) -#define SWAP64(x) -#endif - -#ifdef BIG_ENDIAN - -#define cpu2le64(x) SWAP64((x)) -#define le2cpu64(x) SWAP64((x)) -#define cpu2le32(x) SWAP32((x)) -#define le2cpu32(x) SWAP32((x)) -#define cpu2le16(x) SWAP16((x)) -#define le2cpu16(x) SWAP16((x)) -#define cpu2be64(x) ((UINT64)(x)) -#define be2cpu64(x) ((UINT64)(x)) -#define cpu2be32(x) ((UINT32)(x)) -#define be2cpu32(x) ((UINT32)(x)) -#define cpu2be16(x) ((UINT16)(x)) -#define be2cpu16(x) ((UINT16)(x)) - -#else // Little_Endian - -#define cpu2le64(x) ((UINT64)(x)) -#define le2cpu64(x) ((UINT64)(x)) -#define cpu2le32(x) ((UINT32)(x)) -#define le2cpu32(x) ((UINT32)(x)) -#define cpu2le16(x) ((UINT16)(x)) -#define le2cpu16(x) ((UINT16)(x)) -#define cpu2be64(x) SWAP64((x)) -#define be2cpu64(x) SWAP64((x)) -#define cpu2be32(x) SWAP32((x)) -#define be2cpu32(x) SWAP32((x)) -#define cpu2be16(x) SWAP16((x)) -#define be2cpu16(x) SWAP16((x)) - -#endif // BIG_ENDIAN - -#endif // __RTMP_TYPE_H__ - +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: rtmp_type.h + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * PaulL 2md Jan 03 Initial code + * MarkW 8th Dec 04 Baseline code + ***************************************************************************/ + +#ifndef __RTMP_TYPE_H__ +#define __RTMP_TYPE_H__ + +typedef unsigned short UINT16; +typedef unsigned long UINT32; +typedef unsigned long long UINT64; + +#define PACKED __attribute__ ((packed)) + +// Endian byte swapping codes +#ifdef BIG_ENDIAN + +#define SWAP16(x) \ + ((UINT16)( \ + (((UINT16)(x) & (UINT16) 0x00ffU) << 8) | \ + (((UINT16)(x) & (UINT16) 0xff00U) >> 8) )) + +#define SWAP32(x) \ + ((UINT32)( \ + (((UINT32)(x) & (UINT32) 0x000000ffUL) << 24) | \ + (((UINT32)(x) & (UINT32) 0x0000ff00UL) << 8) | \ + (((UINT32)(x) & (UINT32) 0x00ff0000UL) >> 8) | \ + (((UINT32)(x) & (UINT32) 0xff000000UL) >> 24) )) + +#define SWAP64(x) \ + ((UINT64)( \ + (UINT64)(((UINT64)(x) & (UINT64) 0x00000000000000ffULL) << 56) | \ + (UINT64)(((UINT64)(x) & (UINT64) 0x000000000000ff00ULL) << 40) | \ + (UINT64)(((UINT64)(x) & (UINT64) 0x0000000000ff0000ULL) << 24) | \ + (UINT64)(((UINT64)(x) & (UINT64) 0x00000000ff000000ULL) << 8) | \ + (UINT64)(((UINT64)(x) & (UINT64) 0x000000ff00000000ULL) >> 8) | \ + (UINT64)(((UINT64)(x) & (UINT64) 0x0000ff0000000000ULL) >> 24) | \ + (UINT64)(((UINT64)(x) & (UINT64) 0x00ff000000000000ULL) >> 40) | \ + (UINT64)(((UINT64)(x) & (UINT64) 0xff00000000000000ULL) >> 56) )) +#else + +#define SWAP16(x) +#define SWAP32(x) +#define SWAP64(x) +#endif + +#ifdef BIG_ENDIAN + +#define cpu2le64(x) SWAP64((x)) +#define le2cpu64(x) SWAP64((x)) +#define cpu2le32(x) SWAP32((x)) +#define le2cpu32(x) SWAP32((x)) +#define cpu2le16(x) SWAP16((x)) +#define le2cpu16(x) SWAP16((x)) +#define cpu2be64(x) ((UINT64)(x)) +#define be2cpu64(x) ((UINT64)(x)) +#define cpu2be32(x) ((UINT32)(x)) +#define be2cpu32(x) ((UINT32)(x)) +#define cpu2be16(x) ((UINT16)(x)) +#define be2cpu16(x) ((UINT16)(x)) + +#else // Little_Endian + +#define cpu2le64(x) ((UINT64)(x)) +#define le2cpu64(x) ((UINT64)(x)) +#define cpu2le32(x) ((UINT32)(x)) +#define le2cpu32(x) ((UINT32)(x)) +#define cpu2le16(x) ((UINT16)(x)) +#define le2cpu16(x) ((UINT16)(x)) +#define cpu2be64(x) SWAP64((x)) +#define be2cpu64(x) SWAP64((x)) +#define cpu2be32(x) SWAP32((x)) +#define be2cpu32(x) SWAP32((x)) +#define cpu2be16(x) SWAP16((x)) +#define be2cpu16(x) SWAP16((x)) + +#endif // BIG_ENDIAN + +#endif // __RTMP_TYPE_H__ + --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/rtmp_tkip.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/rtmp_tkip.c @@ -1,461 +1,461 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: rtmp_tkip.c - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * PaulW 25th Feb 02 Initial code - * MarkW 8th Dec 04 Baseline code - ***************************************************************************/ - -#include "rt_config.h" - -// Rotation functions on 32 bit values -#define ROL32( A, n ) ( ((A) << (n)) | ( ((A)>>(32-(n))) ) ) -#define ROR32( A, n ) ROL32( (A), 32-(n) ) - -/* - ======================================================================== - - Routine Description: - Convert from UCHAR[] to ULONG in a portable way - - Arguments: - pMICKey pointer to MIC Key - - Return Value: - None - - Note: - - ======================================================================== -*/ -ULONG RTMPTkipGetUInt32( - IN PUCHAR pMICKey) -{ - ULONG res = 0; - int i; - - for (i = 0; i < 4; i++) - { - res |= (*pMICKey++) << (8 * i); - } - - return res; -} - -/* - ======================================================================== - - Routine Description: - Convert from ULONG to UCHAR[] in a portable way - - Arguments: - pDst pointer to destination for convert ULONG to UCHAR[] - val the value for convert - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPTkipPutUInt32( - IN OUT PUCHAR pDst, - IN ULONG val) -{ - int i; - - for(i = 0; i < 4; i++) - { - *pDst++ = (UCHAR) val; - val >>= 8; - } -} - -/* - ======================================================================== - - Routine Description: - Calculate the MIC Value. - - Arguments: - pAdapter Pointer to our adapter - pSrc Pointer to source data for Calculate MIC Value - Len Indicate the length of the source data - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPTkipAppend( - IN PTKIP_KEY_INFO pTkip, - IN PUCHAR pSrc, - IN UINT nBytes) -{ - register ULONG M, L, R, nBytesInM; - - // load data from memory to register - L = pTkip->L; - R = pTkip->R; - nBytesInM = pTkip->nBytesInM; - M = pTkip->M; - - // Alignment case - if((nBytesInM == 0) && ((((unsigned long)pSrc) & 0x3) == 0)) - { - while(nBytes >= 4) - { -#ifdef BIG_ENDIAN - M = SWAP32(*(ULONG *)pSrc); -#else - M = *(ULONG *)pSrc; -#endif - pSrc += 4; - nBytes -= 4; - - L ^= M; - R ^= ROL32( L, 17 ); - L += R; - R ^= ((L & 0xff00ff00) >> 8) | ((L & 0x00ff00ff) << 8); - L += R; - R ^= ROL32( L, 3 ); - L += R; - R ^= ROR32( L, 2 ); - L += R; - } - nBytesInM = 0; - M = 0; - - while(nBytes > 0) - { - M |= (*pSrc << (8* nBytesInM)); - - nBytesInM++; - pSrc++; - nBytes--; - - if( nBytesInM >= 4 ) - { - L ^= M; - R ^= ROL32( L, 17 ); - L += R; - R ^= ((L & 0xff00ff00) >> 8) | ((L & 0x00ff00ff) << 8); - L += R; - R ^= ROL32( L, 3 ); - L += R; - R ^= ROR32( L, 2 ); - L += R; - // Clear the buffer - M = 0; - nBytesInM = 0; - } - } - } - else - { // misAlignment case - while(nBytes > 0) - { - M |= (*pSrc << (8* nBytesInM)); - nBytesInM++; - - pSrc++; - nBytes--; - - if( nBytesInM >= 4 ) - { - L ^= M; - R ^= ROL32( L, 17 ); - L += R; - R ^= ((L & 0xff00ff00) >> 8) | ((L & 0x00ff00ff) << 8); - L += R; - R ^= ROL32( L, 3 ); - L += R; - R ^= ROR32( L, 2 ); - L += R; - // Clear the buffer - M = 0; - nBytesInM = 0; - } - } - } - - // load data from register to memory - pTkip->M = M; - pTkip->nBytesInM = nBytesInM; - pTkip->L = L; - pTkip->R = R; -} - -/* - ======================================================================== - - Routine Description: - Get the MIC Value. - - Arguments: - pAdapter Pointer to our adapter - - Return Value: - None - - Note: - the MIC Value is store in pAdapter->PrivateInfo.MIC - ======================================================================== -*/ -VOID RTMPTkipGetMIC( - IN PTKIP_KEY_INFO pTkip) -{ - static unsigned char Last[] = {"\x5a\x00\x00\x00\x00\x00\x00\x00"}; - - // Append the minimum padding - RTMPTkipAppend(pTkip, Last, 8 - pTkip->nBytesInM); - - // The appendByte function has already computed the result. - RTMPTkipPutUInt32(pTkip->MIC, pTkip->L); - RTMPTkipPutUInt32(pTkip->MIC + 4, pTkip->R); -} - -/* - ======================================================================== - - Routine Description: - Compare MIC value of received MSDU - - Arguments: - pAdapter Pointer to our adapter - pSrc Pointer to the received Plain text data - pDA Pointer to DA address - pSA Pointer to SA address - pMICKey pointer to MIC Key - Len the length of the received plain text data exclude MIC value - - Return Value: - TRUE MIC value matched - FALSE MIC value mismatched - - Note: - - ======================================================================== -*/ -BOOLEAN RTMPTkipCompareMICValue( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pSrc, - IN PUCHAR pDA, - IN PUCHAR pSA, - IN PUCHAR pMICKey, - IN UINT Len) -{ - static UCHAR Priority[4] = {"\x00\x00\x00\x00"}; - - // Init MIC value calculation and reset the message - pAdapter->PrivateInfo.Rx.L = RTMPTkipGetUInt32(pMICKey); - pAdapter->PrivateInfo.Rx.R = RTMPTkipGetUInt32(pMICKey + 4); - pAdapter->PrivateInfo.Rx.nBytesInM = 0; - pAdapter->PrivateInfo.Rx.M = 0; - - // DA - RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pDA, 6); - // SA - RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pSA, 6); - // Priority + 3 bytes of 0 - RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, Priority, 4); - - // Calculate MIC value from plain text data - RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pSrc, Len); - - // Get MIC value from decrypted plain data - RTMPTkipGetMIC(&pAdapter->PrivateInfo.Rx); - - // Move MIC value from MSDU, this steps should move to data path. - // Since the MIC value might cross MPDUs. - if(!NdisEqualMemory(pAdapter->PrivateInfo.Rx.MIC, pSrc + Len, 8)) - { - INT i; - - DBGPRINT(RT_DEBUG_ERROR, "! TKIP MIC Error !\n"); //MIC error. - DBGPRINT(RT_DEBUG_INFO, "Orig MIC value ="); //MIC error. - for (i = 0; i < 8; i++) - { - DBGPRINT(RT_DEBUG_INFO, "%02x:", *(UCHAR*)(pSrc + Len + i)); //MIC error. - } - DBGPRINT(RT_DEBUG_INFO, "\n"); //MIC error. - DBGPRINT(RT_DEBUG_INFO, "Calculated MIC value ="); //MIC error. - for (i = 0; i < 8; i++) - { - DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PrivateInfo.Rx.MIC[i]); //MIC error. - } - DBGPRINT(RT_DEBUG_INFO, "\n"); //MIC error. - return (FALSE); - } - return (TRUE); -} - -/* - ======================================================================== - - Routine Description: - Compare MIC value of received MSDU - - Arguments: - pAdapter Pointer to our adapter - pLLC LLC header - pSrc Pointer to the received Plain text data - pDA Pointer to DA address - pSA Pointer to SA address - pMICKey pointer to MIC Key - Len the length of the received plain text data exclude MIC value - - Return Value: - TRUE MIC value matched - FALSE MIC value mismatched - - Note: - - ======================================================================== -*/ -BOOLEAN RTMPTkipCompareMICValueWithLLC( - IN PRTMP_ADAPTER pAdapter, - IN PUCHAR pLLC, - IN PUCHAR pSrc, - IN PUCHAR pDA, - IN PUCHAR pSA, - IN PUCHAR pMICKey, - IN UINT Len) -{ - static UCHAR Priority[4] = {"\x00\x00\x00\x00"}; - - // Init MIC value calculation and reset the message - pAdapter->PrivateInfo.Rx.L = RTMPTkipGetUInt32(pMICKey); - pAdapter->PrivateInfo.Rx.R = RTMPTkipGetUInt32(pMICKey + 4); - pAdapter->PrivateInfo.Rx.nBytesInM = 0; - pAdapter->PrivateInfo.Rx.M = 0; - - // DA - RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pDA, 6); - // SA - RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pSA, 6); - // Priority + 3 bytes of 0 - RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, Priority, 4); - - // Start with LLC header - RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pLLC, 8); - - // Calculate MIC value from plain text data - RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pSrc, Len); - - // Get MIC value from decrypted plain data - RTMPTkipGetMIC(&pAdapter->PrivateInfo.Rx); - - // Move MIC value from MSDU, this steps should move to data path. - // Since the MIC value might cross MPDUs. - if(!NdisEqualMemory(pAdapter->PrivateInfo.Rx.MIC, pSrc + Len, 8)) - { - INT i; - - DBGPRINT(RT_DEBUG_ERROR, "! TKIP MIC Error !\n"); //MIC error. - DBGPRINT(RT_DEBUG_INFO, "Orig MIC value ="); //MIC error. - for (i = 0; i < 8; i++) - { - DBGPRINT(RT_DEBUG_INFO, "%02x:", *(UCHAR *)(pSrc + Len + i)); //MIC error. - } - - DBGPRINT(RT_DEBUG_INFO, "\n"); //MIC error. - DBGPRINT(RT_DEBUG_INFO, "Calculated MIC value ="); //MIC error. - for (i = 0; i < 8; i++) - { - DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PrivateInfo.Rx.MIC[i]); //MIC error. - } - - DBGPRINT(RT_DEBUG_INFO, "\n"); //MIC error. - return (FALSE); - } - return (TRUE); -} - -/* - ======================================================================== - - Routine Description: - Copy frame from waiting queue into relative ring buffer and set - appropriate ASIC register to kick hardware transmit function - - Arguments: - pAdapter Pointer to our adapter - PNDIS_PACKET Pointer to Ndis Packet for MIC calculation - pEncap Pointer to LLC encap data - LenEncap Total encap length, might be 0 which indicates no encap - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPCalculateMICValue( - IN PRTMP_ADAPTER pAdapter, - IN struct sk_buff *skb, - IN PUCHAR pEncap, - IN INT LenEncap, - IN PWPA_KEY pWpaKey) -{ - PUCHAR pSrc; - static UCHAR Priority[4] = {"\x00\x00\x00\x00"}; - - pSrc = (PUCHAR) skb->data; - - // Init MIC value calculation and reset the message - pAdapter->PrivateInfo.Tx.L = RTMPTkipGetUInt32(pWpaKey->TxMic); - pAdapter->PrivateInfo.Tx.R = RTMPTkipGetUInt32(pWpaKey->TxMic + 4); - pAdapter->PrivateInfo.Tx.nBytesInM = 0; - pAdapter->PrivateInfo.Tx.M = 0; - - // DA & SA field - RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pSrc, 12); - - // Priority + 3 bytes of 0 - RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, Priority, 4); - - if (LenEncap > 0) - { - // LLC encapsulation - RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pEncap, LenEncap); - // Protocol Type - RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pSrc + 12, skb->len - 12); - } - else - RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pSrc + 14, skb->len - 14); - - // Compute the final MIC Value - RTMPTkipGetMIC(&pAdapter->PrivateInfo.Tx); -} - +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: rtmp_tkip.c + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * PaulW 25th Feb 02 Initial code + * MarkW 8th Dec 04 Baseline code + ***************************************************************************/ + +#include "rt_config.h" + +// Rotation functions on 32 bit values +#define ROL32( A, n ) ( ((A) << (n)) | ( ((A)>>(32-(n))) ) ) +#define ROR32( A, n ) ROL32( (A), 32-(n) ) + +/* + ======================================================================== + + Routine Description: + Convert from UCHAR[] to ULONG in a portable way + + Arguments: + pMICKey pointer to MIC Key + + Return Value: + None + + Note: + + ======================================================================== +*/ +ULONG RTMPTkipGetUInt32( + IN PUCHAR pMICKey) +{ + ULONG res = 0; + int i; + + for (i = 0; i < 4; i++) + { + res |= (*pMICKey++) << (8 * i); + } + + return res; +} + +/* + ======================================================================== + + Routine Description: + Convert from ULONG to UCHAR[] in a portable way + + Arguments: + pDst pointer to destination for convert ULONG to UCHAR[] + val the value for convert + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPTkipPutUInt32( + IN OUT PUCHAR pDst, + IN ULONG val) +{ + int i; + + for(i = 0; i < 4; i++) + { + *pDst++ = (UCHAR) val; + val >>= 8; + } +} + +/* + ======================================================================== + + Routine Description: + Calculate the MIC Value. + + Arguments: + pAdapter Pointer to our adapter + pSrc Pointer to source data for Calculate MIC Value + Len Indicate the length of the source data + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPTkipAppend( + IN PTKIP_KEY_INFO pTkip, + IN PUCHAR pSrc, + IN UINT nBytes) +{ + register ULONG M, L, R, nBytesInM; + + // load data from memory to register + L = pTkip->L; + R = pTkip->R; + nBytesInM = pTkip->nBytesInM; + M = pTkip->M; + + // Alignment case + if((nBytesInM == 0) && ((((unsigned long)pSrc) & 0x3) == 0)) + { + while(nBytes >= 4) + { +#ifdef BIG_ENDIAN + M = SWAP32(*(ULONG *)pSrc); +#else + M = *(ULONG *)pSrc; +#endif + pSrc += 4; + nBytes -= 4; + + L ^= M; + R ^= ROL32( L, 17 ); + L += R; + R ^= ((L & 0xff00ff00) >> 8) | ((L & 0x00ff00ff) << 8); + L += R; + R ^= ROL32( L, 3 ); + L += R; + R ^= ROR32( L, 2 ); + L += R; + } + nBytesInM = 0; + M = 0; + + while(nBytes > 0) + { + M |= (*pSrc << (8* nBytesInM)); + + nBytesInM++; + pSrc++; + nBytes--; + + if( nBytesInM >= 4 ) + { + L ^= M; + R ^= ROL32( L, 17 ); + L += R; + R ^= ((L & 0xff00ff00) >> 8) | ((L & 0x00ff00ff) << 8); + L += R; + R ^= ROL32( L, 3 ); + L += R; + R ^= ROR32( L, 2 ); + L += R; + // Clear the buffer + M = 0; + nBytesInM = 0; + } + } + } + else + { // misAlignment case + while(nBytes > 0) + { + M |= (*pSrc << (8* nBytesInM)); + nBytesInM++; + + pSrc++; + nBytes--; + + if( nBytesInM >= 4 ) + { + L ^= M; + R ^= ROL32( L, 17 ); + L += R; + R ^= ((L & 0xff00ff00) >> 8) | ((L & 0x00ff00ff) << 8); + L += R; + R ^= ROL32( L, 3 ); + L += R; + R ^= ROR32( L, 2 ); + L += R; + // Clear the buffer + M = 0; + nBytesInM = 0; + } + } + } + + // load data from register to memory + pTkip->M = M; + pTkip->nBytesInM = nBytesInM; + pTkip->L = L; + pTkip->R = R; +} + +/* + ======================================================================== + + Routine Description: + Get the MIC Value. + + Arguments: + pAdapter Pointer to our adapter + + Return Value: + None + + Note: + the MIC Value is store in pAdapter->PrivateInfo.MIC + ======================================================================== +*/ +VOID RTMPTkipGetMIC( + IN PTKIP_KEY_INFO pTkip) +{ + static unsigned char Last[] = {"\x5a\x00\x00\x00\x00\x00\x00\x00"}; + + // Append the minimum padding + RTMPTkipAppend(pTkip, Last, 8 - pTkip->nBytesInM); + + // The appendByte function has already computed the result. + RTMPTkipPutUInt32(pTkip->MIC, pTkip->L); + RTMPTkipPutUInt32(pTkip->MIC + 4, pTkip->R); +} + +/* + ======================================================================== + + Routine Description: + Compare MIC value of received MSDU + + Arguments: + pAdapter Pointer to our adapter + pSrc Pointer to the received Plain text data + pDA Pointer to DA address + pSA Pointer to SA address + pMICKey pointer to MIC Key + Len the length of the received plain text data exclude MIC value + + Return Value: + TRUE MIC value matched + FALSE MIC value mismatched + + Note: + + ======================================================================== +*/ +BOOLEAN RTMPTkipCompareMICValue( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pSrc, + IN PUCHAR pDA, + IN PUCHAR pSA, + IN PUCHAR pMICKey, + IN UINT Len) +{ + static UCHAR Priority[4] = {"\x00\x00\x00\x00"}; + + // Init MIC value calculation and reset the message + pAdapter->PrivateInfo.Rx.L = RTMPTkipGetUInt32(pMICKey); + pAdapter->PrivateInfo.Rx.R = RTMPTkipGetUInt32(pMICKey + 4); + pAdapter->PrivateInfo.Rx.nBytesInM = 0; + pAdapter->PrivateInfo.Rx.M = 0; + + // DA + RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pDA, 6); + // SA + RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pSA, 6); + // Priority + 3 bytes of 0 + RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, Priority, 4); + + // Calculate MIC value from plain text data + RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pSrc, Len); + + // Get MIC value from decrypted plain data + RTMPTkipGetMIC(&pAdapter->PrivateInfo.Rx); + + // Move MIC value from MSDU, this steps should move to data path. + // Since the MIC value might cross MPDUs. + if(!NdisEqualMemory(pAdapter->PrivateInfo.Rx.MIC, pSrc + Len, 8)) + { + INT i; + + DBGPRINT(RT_DEBUG_ERROR, "! TKIP MIC Error !\n"); //MIC error. + DBGPRINT(RT_DEBUG_INFO, "Orig MIC value ="); //MIC error. + for (i = 0; i < 8; i++) + { + DBGPRINT(RT_DEBUG_INFO, "%02x:", *(UCHAR*)(pSrc + Len + i)); //MIC error. + } + DBGPRINT(RT_DEBUG_INFO, "\n"); //MIC error. + DBGPRINT(RT_DEBUG_INFO, "Calculated MIC value ="); //MIC error. + for (i = 0; i < 8; i++) + { + DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PrivateInfo.Rx.MIC[i]); //MIC error. + } + DBGPRINT(RT_DEBUG_INFO, "\n"); //MIC error. + return (FALSE); + } + return (TRUE); +} + +/* + ======================================================================== + + Routine Description: + Compare MIC value of received MSDU + + Arguments: + pAdapter Pointer to our adapter + pLLC LLC header + pSrc Pointer to the received Plain text data + pDA Pointer to DA address + pSA Pointer to SA address + pMICKey pointer to MIC Key + Len the length of the received plain text data exclude MIC value + + Return Value: + TRUE MIC value matched + FALSE MIC value mismatched + + Note: + + ======================================================================== +*/ +BOOLEAN RTMPTkipCompareMICValueWithLLC( + IN PRTMP_ADAPTER pAdapter, + IN PUCHAR pLLC, + IN PUCHAR pSrc, + IN PUCHAR pDA, + IN PUCHAR pSA, + IN PUCHAR pMICKey, + IN UINT Len) +{ + static UCHAR Priority[4] = {"\x00\x00\x00\x00"}; + + // Init MIC value calculation and reset the message + pAdapter->PrivateInfo.Rx.L = RTMPTkipGetUInt32(pMICKey); + pAdapter->PrivateInfo.Rx.R = RTMPTkipGetUInt32(pMICKey + 4); + pAdapter->PrivateInfo.Rx.nBytesInM = 0; + pAdapter->PrivateInfo.Rx.M = 0; + + // DA + RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pDA, 6); + // SA + RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pSA, 6); + // Priority + 3 bytes of 0 + RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, Priority, 4); + + // Start with LLC header + RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pLLC, 8); + + // Calculate MIC value from plain text data + RTMPTkipAppend(&pAdapter->PrivateInfo.Rx, pSrc, Len); + + // Get MIC value from decrypted plain data + RTMPTkipGetMIC(&pAdapter->PrivateInfo.Rx); + + // Move MIC value from MSDU, this steps should move to data path. + // Since the MIC value might cross MPDUs. + if(!NdisEqualMemory(pAdapter->PrivateInfo.Rx.MIC, pSrc + Len, 8)) + { + INT i; + + DBGPRINT(RT_DEBUG_ERROR, "! TKIP MIC Error !\n"); //MIC error. + DBGPRINT(RT_DEBUG_INFO, "Orig MIC value ="); //MIC error. + for (i = 0; i < 8; i++) + { + DBGPRINT(RT_DEBUG_INFO, "%02x:", *(UCHAR *)(pSrc + Len + i)); //MIC error. + } + + DBGPRINT(RT_DEBUG_INFO, "\n"); //MIC error. + DBGPRINT(RT_DEBUG_INFO, "Calculated MIC value ="); //MIC error. + for (i = 0; i < 8; i++) + { + DBGPRINT(RT_DEBUG_INFO, "%02x:", pAdapter->PrivateInfo.Rx.MIC[i]); //MIC error. + } + + DBGPRINT(RT_DEBUG_INFO, "\n"); //MIC error. + return (FALSE); + } + return (TRUE); +} + +/* + ======================================================================== + + Routine Description: + Copy frame from waiting queue into relative ring buffer and set + appropriate ASIC register to kick hardware transmit function + + Arguments: + pAdapter Pointer to our adapter + PNDIS_PACKET Pointer to Ndis Packet for MIC calculation + pEncap Pointer to LLC encap data + LenEncap Total encap length, might be 0 which indicates no encap + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPCalculateMICValue( + IN PRTMP_ADAPTER pAdapter, + IN struct sk_buff *skb, + IN PUCHAR pEncap, + IN INT LenEncap, + IN PWPA_KEY pWpaKey) +{ + PUCHAR pSrc; + static UCHAR Priority[4] = {"\x00\x00\x00\x00"}; + + pSrc = (PUCHAR) skb->data; + + // Init MIC value calculation and reset the message + pAdapter->PrivateInfo.Tx.L = RTMPTkipGetUInt32(pWpaKey->TxMic); + pAdapter->PrivateInfo.Tx.R = RTMPTkipGetUInt32(pWpaKey->TxMic + 4); + pAdapter->PrivateInfo.Tx.nBytesInM = 0; + pAdapter->PrivateInfo.Tx.M = 0; + + // DA & SA field + RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pSrc, 12); + + // Priority + 3 bytes of 0 + RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, Priority, 4); + + if (LenEncap > 0) + { + // LLC encapsulation + RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pEncap, LenEncap); + // Protocol Type + RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pSrc + 12, skb->len - 12); + } + else + RTMPTkipAppend(&pAdapter->PrivateInfo.Tx, pSrc + 14, skb->len - 14); + + // Compute the final MIC Value + RTMPTkipGetMIC(&pAdapter->PrivateInfo.Tx); +} + --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/rt2500/rtmp_init.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/rt2500/rtmp_init.c @@ -1,2406 +1,2452 @@ -/*************************************************************************** - * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * - ***************************************************************************/ - - /*************************************************************************** - * Module Name: rtmp_init.c - * - * Abstract: - * - * Revision History: - * Who When What - * -------- ----------- ----------------------------- - * PaulL 1st Aug 02 Initial code - * MarkW 8th Dec 04 Baseline code - * MarkW (rt2400) 8th Dec 04 Promisc mode support - * MarkW 10th Dec 04 Rolled in Ralink 1.4.5.0 - * LuisCorreia 15th Feb 05 Added Yann's patch for radio hw - * MarkW 12th Jul 05 Disabled all but CAM Power modes - ***************************************************************************/ - -#include "rt_config.h" - -// -// BBP register initialization set -// -ULONG BBPRegTable[] = { - 0x00018302, // R03 - 0x00018419, // R04 - 0x00018E1C, // R14 - 0x00018F30, // R15 - 0x000190ac, // R16 - 0x00019148, // R17 - 0x00019218, // R18 - 0x000193ff, // R19 - 0x0001941E, // R20 - 0x00019508, // R21 - 0x00019608, // R22 - 0x00019708, // R23 - 0x00019870, // R24 - 0x00019940, // R25 - 0x00019A08, // R26 - 0x00019B23, // R27 - 0x00019E10, // R30 - 0x00019F2B, // R31 - 0x0001A0B9, // R32 - 0x0001A212, // R34 - 0x0001A350, // R35 - 0x0001A7c4, // R39 - 0x0001A802, // R40 - 0x0001A960, // R41 - 0x0001B510, // R53 - 0x0001B618, // R54 - 0x0001B808, // R56 - 0x0001B910, // R57 - 0x0001BA08, // R58 - 0x0001BD6d, // R61 - 0x0001BE10, // R62 -}; - -// -// MAC register initialization sets -// -RTMP_REG_PAIR MACRegTable[] = { - {PSCSR0, 0x00020002}, // 0xc8 - {PSCSR1, 0x00000002}, // 0xcc -// {PSCSR2, 0x00023f20}, // 0xd0 - {PSCSR2, 0x00020002}, // 0xd0 - {PSCSR3, 0x00000002}, // 0xd4 - {TIMECSR, 0x00003f21}, // 0xDC, to slower down our 1-us tick - {CSR9, 0x00000780}, // 0x24 - {CSR11, 0x07041483}, // 0x2C, lrc=7, src=4, slot=20us, CWmax=2^8, CWmax=2^3 - {CSR18, 0x00140000}, // SIFS=10us - TR switch time, PIFS=SIFS+20us - {CSR19, 0x016C0028}, // DIFS=SIFS+2*20us, EIFS=364us - {CNT3, 0x00000000}, // Backoff_CCA_Th, RX_&_TX_CCA_Th - - {TXCSR1, 0x07614562}, // 0x64, ACK as 1Mb time - {TXCSR8, 0x8c8d8b8a}, // 0x98, CCK TX BBP register ID - //{TXCSR9, 0x86870885}, // 0x94, OFDM TX BBP register ID - - {ARCSR1, 0x0000000f}, // 0x9c, Basic rate set bitmap - {PLCP1MCSR, 0x00700400}, // 0x13c, ACK/CTS PLCP at 1 Mbps - {PLCP2MCSR, 0x00380401}, // 0x140, ACK/CTS PLCP at 2 Mbps - {PLCP5MCSR, 0x00150402}, // 0x144, ACK/CTS PLCP at 5.5 Mbps - {PLCP11MCSR,0x000b8403}, // 0x148, ACK/CTS PLCP at 11 Mbps - - {ARTCSR0, 0x7038140a}, // 0x14c, ACK/CTS payload consumed time for 1/2/5.5/11 mbps - {ARTCSR1, 0x1d21252d}, // 0x150, alexsu : OFDM ACK/CTS payload consumed time for 18/12/9/6 mbps - {ARTCSR2, 0x1919191d}, // 0x154, alexsu : OFDM ACK/CTS payload consumed time for 54/48/36/24 mbps - - {RXCSR0, 0xffffffff}, // 0x80 - {RXCSR3, 0xb3aab3af}, // 0x90. RT2530 BBP 51:RSSI, R42:OFDM rate, R47:CCK SIGNAL - {PCICSR, 0x000003b8}, // 0x8c, alexsu : PCI control register - {PWRCSR0, 0x3f3b3100}, // 0xC4 - {GPIOCSR, 0x0000ff00}, // 0x120, GPIO default value - {TESTCSR, 0x000000f0}, // 0x138, Test CSR, make sure it's running at normal mode - {PWRCSR1, 0x000001ff}, // 0xd8 - {MACCSR0, 0x00213223}, // 0xE0, Enable Tx dribble mode - 2003/10/22:Gary - {MACCSR1, 0x00235518}, // 0xE4, Disable Rx Reset, tx dribble count, 2x30x16 = 960n, - {MACCSR2, 0x00000040}, // 0x0134, 64*33ns = 2us - {RALINKCSR, 0x9a009a11}, // 0xE8 - {CSR7, 0xffffffff}, // 0x1C, Clear all pending interrupt source - {LEDCSR, 0x00001E46}, // default both LEDs off - {BBPCSR1, 0x82188200}, // for 2560+2522 - {TXACKCSR0, 0x00000020}, // 0x110, TX ACK timeout in usec - {SECCSR3, 0x0000e78f}, // AES, mask off more data bit for MIC calculation -}; - -#define NUM_BBP_REG_PARMS (sizeof(BBPRegTable) / sizeof(ULONG)) -#define NUM_MAC_REG_PARMS (sizeof(MACRegTable) / sizeof(RTMP_REG_PAIR)) - -/* - ======================================================================== - - Routine Description: - Allocate all DMA releated resources - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -NDIS_STATUS RTMPAllocDMAMemory( - IN PRTMP_ADAPTER pAd) -{ - INT index; - VOID *ring; // VA of ring descriptor - VOID *ring_data; // VA of DMA data buffer - dma_addr_t ring_dma; // PA of ring descriptor - dma_addr_t ring_data_dma; // PA of DMA data buffer - PTXD_STRUC pTxD; // Tx type ring descriptor - PRXD_STRUC pRxD; // Rx type ring descriptor - - DBGPRINT(RT_DEBUG_INFO, "--> RTMPAllocDMAMemory\n"); - - // 1. Allocate Tx Ring DMA descriptor and buffer memory - // Allocate Ring descriptors DMA block - ring = pci_alloc_consistent(pAd->pPci_Dev, (TX_RING_SIZE * RING_DESCRIPTOR_SIZE), &ring_dma); - if (!ring) { - printk(KERN_ERR DRV_NAME "Could not allocate DMA ring descriptor memory.\n"); - goto err_out_allocate_txring; - } - - // Zero init ring descriptors - memset(ring, 0, (TX_RING_SIZE * RING_DESCRIPTOR_SIZE)); - - // Allocate Ring data DMA blocks - ring_data = pci_alloc_consistent(pAd->pPci_Dev, (TX_RING_SIZE * TX_BUFFER_SIZE), &ring_data_dma); - - // If failed, release ring descriptors DMA block & exit - if (!ring_data) { - pci_free_consistent(pAd->pPci_Dev, (TX_RING_SIZE * RING_DESCRIPTOR_SIZE), ring, ring_dma); - printk(KERN_ERR DRV_NAME "Could not allocate DMA ring buffer memory.\n"); - goto err_out_allocate_txring; - } - - // Start with Tx ring & DMA buffer - for (index = 0; index < TX_RING_SIZE; index++) - { - // Init Tx Ring Size, Va, Pa variables - pAd->TxRing[index].size = RING_DESCRIPTOR_SIZE; - pAd->TxRing[index].va_addr = ring; - pAd->TxRing[index].pa_addr = ring_dma; - ring += RING_DESCRIPTOR_SIZE; - ring_dma += RING_DESCRIPTOR_SIZE; - - // Init Tx DMA buffer - pAd->TxRing[index].data_size = TX_BUFFER_SIZE; - pAd->TxRing[index].va_data_addr = ring_data; - pAd->TxRing[index].pa_data_addr = ring_data_dma; - ring_data += TX_BUFFER_SIZE; - ring_data_dma += TX_BUFFER_SIZE; - - // Write TxD buffer address & allocated buffer length - pTxD = (PTXD_STRUC) pAd->TxRing[index].va_addr; -#ifndef BIG_ENDIAN - pTxD->BufferAddressPa = pAd->TxRing[index].pa_data_addr; -#else - pTxD->BufferAddressPa = SWAP32(pAd->TxRing[index].pa_data_addr); -#endif - - DBGPRINT(RT_DEBUG_INFO, "TxRing[%d] va = 0x%lu, pa = 0x%x, size = 0x%x\n", - index, (unsigned long)pAd->TxRing[index].va_addr, (UINT)pAd->TxRing[index].pa_addr, pAd->TxRing[index].size); - DBGPRINT(RT_DEBUG_INFO, "TxRing[%d] va_data = 0x%lu, pa_data = 0x%x, size = 0x%x\n", - index, (unsigned long)pAd->TxRing[index].va_data_addr, (UINT)pAd->TxRing[index].pa_data_addr, pAd->TxRing[index].data_size); - } - - // 2. Allocate Prio Ring DMA descriptor and buffer memory - // Allocate Ring descriptors DMA block - ring = pci_alloc_consistent(pAd->pPci_Dev, (PRIO_RING_SIZE * RING_DESCRIPTOR_SIZE), &ring_dma); - if (!ring) { - DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring descriptor memory.\n"); - goto err_out_allocate_prioring; - } - - // Zero init ring descriptors - memset(ring, 0, (PRIO_RING_SIZE * RING_DESCRIPTOR_SIZE)); - - // Allocate Ring data DMA blocks - ring_data = pci_alloc_consistent(pAd->pPci_Dev, (PRIO_RING_SIZE * PRIO_BUFFER_SIZE), &ring_data_dma); - - // If failed, release ring descriptors DMA block & exit - if (!ring_data) { - pci_free_consistent(pAd->pPci_Dev, (PRIO_RING_SIZE * RING_DESCRIPTOR_SIZE), ring, ring_dma); - DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring buffer memory.\n"); - goto err_out_allocate_prioring; - } - - // Second with Prio ring & DMA buffer - for (index = 0; index < PRIO_RING_SIZE; index++) - { - // Init Prio Ring Size, Va, Pa variables - pAd->PrioRing[index].size = RING_DESCRIPTOR_SIZE; - pAd->PrioRing[index].va_addr = ring; - pAd->PrioRing[index].pa_addr = ring_dma; - ring += RING_DESCRIPTOR_SIZE; - ring_dma += RING_DESCRIPTOR_SIZE; - - // Init Prio DMA buffer - pAd->PrioRing[index].data_size = PRIO_BUFFER_SIZE; - pAd->PrioRing[index].va_data_addr = ring_data; - pAd->PrioRing[index].pa_data_addr = ring_data_dma; - ring_data += PRIO_BUFFER_SIZE; - ring_data_dma += PRIO_BUFFER_SIZE; - - // Write TxD buffer address & allocated buffer length for priority ring - pTxD = (PTXD_STRUC) pAd->PrioRing[index].va_addr; -#ifndef BIG_ENDIAN - pTxD->BufferAddressPa = pAd->PrioRing[index].pa_data_addr; -#else - pTxD->BufferAddressPa = SWAP32(pAd->PrioRing[index].pa_data_addr); -#endif - - DBGPRINT(RT_DEBUG_INFO, "PrioRing[%d] va = 0x%lu, pa = 0x%x, size = 0x%x\n", - index, (unsigned long)pAd->PrioRing[index].va_addr, (UINT)pAd->PrioRing[index].pa_addr, pAd->PrioRing[index].size); - DBGPRINT(RT_DEBUG_INFO, "PrioRing[%d] va_data = 0x%lu, pa_data = 0x%x, size = 0x%x\n", - index, (unsigned long)pAd->PrioRing[index].va_data_addr, (UINT)pAd->PrioRing[index].pa_data_addr, pAd->PrioRing[index].data_size); - } - - // 3. Allocate Atim Ring DMA descriptor and buffer memory - // Allocate Ring descriptors DMA block - ring = pci_alloc_consistent(pAd->pPci_Dev, (ATIM_RING_SIZE * RING_DESCRIPTOR_SIZE), &ring_dma); - if (!ring) { - DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring descriptor memory.\n"); - goto err_out_allocate_atimring; - } - - // Zero init ring descriptors - memset(ring, 0, (ATIM_RING_SIZE * RING_DESCRIPTOR_SIZE)); - - // Allocate Ring data DMA blocks - ring_data = pci_alloc_consistent(pAd->pPci_Dev, (ATIM_RING_SIZE * ATIM_BUFFER_SIZE), &ring_data_dma); - - // If failed, release ring descriptors DMA block & exit - if (!ring_data) { - pci_free_consistent(pAd->pPci_Dev, (ATIM_RING_SIZE * RING_DESCRIPTOR_SIZE), ring, ring_dma); - DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring buffer memory.\n"); - goto err_out_allocate_atimring; - } - - // Atim ring & DMA buffer - for (index = 0; index < ATIM_RING_SIZE; index++) - { - // Init Atim Ring Size, Va, Pa variables - pAd->AtimRing[index].size = RING_DESCRIPTOR_SIZE; - pAd->AtimRing[index].va_addr = ring; - pAd->AtimRing[index].pa_addr = ring_dma; - ring += RING_DESCRIPTOR_SIZE; - ring_dma += RING_DESCRIPTOR_SIZE; - - // Init Atim DMA buffer - pAd->AtimRing[index].data_size = ATIM_BUFFER_SIZE; - pAd->AtimRing[index].va_data_addr = ring_data; - pAd->AtimRing[index].pa_data_addr = ring_data_dma; - ring_data += ATIM_BUFFER_SIZE; - ring_data_dma += ATIM_BUFFER_SIZE; - - // Write TxD buffer address & allocated buffer length - pTxD = (PTXD_STRUC) pAd->AtimRing[index].va_addr; -#ifndef BIG_ENDIAN - pTxD->BufferAddressPa = pAd->AtimRing[index].pa_data_addr; -#else - pTxD->BufferAddressPa = SWAP32(pAd->AtimRing[index].pa_data_addr); -#endif - - DBGPRINT(RT_DEBUG_INFO, "AtimRing[%d] va = 0x%lu, pa = 0x%x, size = 0x%x\n", - index, (unsigned long)pAd->AtimRing[index].va_addr, (UINT)pAd->AtimRing[index].pa_addr, pAd->AtimRing[index].size); - DBGPRINT(RT_DEBUG_INFO, "AtimRing[%d] va_data = 0x%lu, pa_data = 0x%x, size = 0x%x\n", - index, (unsigned long)pAd->AtimRing[index].va_data_addr, (UINT)pAd->AtimRing[index].pa_data_addr, pAd->AtimRing[index].data_size); - } - - // 4. Allocate Rx Ring DMA descriptor and buffer memory - // Allocate Ring descriptors DMA block - ring = pci_alloc_consistent(pAd->pPci_Dev, (RX_RING_SIZE * RING_DESCRIPTOR_SIZE), &ring_dma); - if (!ring) { - DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring descriptor memory.\n"); - goto err_out_allocate_rxring; - } - - // Zero init ring descriptors - memset(ring, 0, (RX_RING_SIZE * RING_DESCRIPTOR_SIZE)); - - // Allocate Ring data DMA blocks - ring_data = pci_alloc_consistent(pAd->pPci_Dev, (RX_RING_SIZE * RX_BUFFER_SIZE), &ring_data_dma); - - // If failed, release ring descriptors DMA block & exit - if (!ring_data) { - pci_free_consistent(pAd->pPci_Dev, (RX_RING_SIZE * RING_DESCRIPTOR_SIZE), ring, ring_dma); - DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring buffer memory.\n"); - goto err_out_allocate_rxring; - } - - // Rx ring & DMA buffer - for (index = 0; index < RX_RING_SIZE; index++) - { - // Init Rx Ring Size, Va, Pa variables - pAd->RxRing[index].size = RING_DESCRIPTOR_SIZE; - pAd->RxRing[index].va_addr = ring; - pAd->RxRing[index].pa_addr = ring_dma; - ring += RING_DESCRIPTOR_SIZE; - ring_dma += RING_DESCRIPTOR_SIZE; - - // Init Rx DMA buffer - pAd->RxRing[index].data_size = RX_BUFFER_SIZE; - pAd->RxRing[index].va_data_addr = ring_data; - pAd->RxRing[index].pa_data_addr = ring_data_dma; - ring_data += RX_BUFFER_SIZE; - ring_data_dma += RX_BUFFER_SIZE; - - // Write RxD buffer address & allocated buffer length - pRxD = (PRXD_STRUC) pAd->RxRing[index].va_addr; -#ifndef BIG_ENDIAN - pRxD->BufferAddressPa = pAd->RxRing[index].pa_data_addr; -#else - pRxD->BufferAddressPa = SWAP32(pAd->RxRing[index].pa_data_addr); -#endif - // Rx owner bit assign to NIC immediately - pRxD->Owner = DESC_OWN_NIC; - -#ifdef BIG_ENDIAN - RTMPDescriptorEndianChange((PUCHAR)pRxD, TYPE_RXD); -#endif - - DBGPRINT(RT_DEBUG_INFO, "RxRing[%d] va = 0x%lu, pa = 0x%x, size = 0x%x\n", - index, (unsigned long)pAd->RxRing[index].va_addr, (UINT)pAd->RxRing[index].pa_addr, pAd->RxRing[index].size); - DBGPRINT(RT_DEBUG_INFO, "RxRing[%d] va_data = 0x%lu, pa_data = 0x%x, size = 0x%x\n", - index, (unsigned long)pAd->RxRing[index].va_data_addr, (UINT)pAd->RxRing[index].pa_data_addr, pAd->RxRing[index].data_size); - } - - // 5. Allocate Beacon Ring DMA descriptor and buffer memory - // Init Beacon Ring Size, Va, Pa variables - ring = pci_alloc_consistent(pAd->pPci_Dev, RING_DESCRIPTOR_SIZE, &ring_dma); - if (!ring) { - DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring descriptor memory.\n"); - goto err_out_allocate_beaconring; - } - - // Zero init ring descriptors - memset(ring, 0, (RING_DESCRIPTOR_SIZE)); - - // Allocate Ring data DMA blocks - ring_data = pci_alloc_consistent(pAd->pPci_Dev, BEACON_BUFFER_SIZE, &ring_data_dma); - - // If failed, release ring descriptors DMA block & exit - if (!ring_data) { - pci_free_consistent(pAd->pPci_Dev, RING_DESCRIPTOR_SIZE, ring, ring_dma); - DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring buffer memory.\n"); - goto err_out_allocate_beaconring; - } - - pAd->BeaconRing.size = RING_DESCRIPTOR_SIZE; - pAd->BeaconRing.va_addr = ring; - pAd->BeaconRing.pa_addr = ring_dma; - - // Init Beacon DMA buffer - pAd->BeaconRing.data_size = BEACON_BUFFER_SIZE; - pAd->BeaconRing.va_data_addr = ring_data; - pAd->BeaconRing.pa_data_addr = ring_data_dma; - - // Write RxD buffer address & allocated buffer length - pTxD = (PTXD_STRUC) pAd->BeaconRing.va_addr; -#ifndef BIG_ENDIAN - pTxD->BufferAddressPa = pAd->BeaconRing.pa_data_addr; -#else - pTxD->BufferAddressPa = SWAP32(pAd->BeaconRing.pa_data_addr); -#endif - - DBGPRINT(RT_DEBUG_INFO, "BeaconRing va = 0x%lu, pa = 0x%x, size = 0x%x\n", - (unsigned long)pAd->BeaconRing.va_addr, (UINT)pAd->BeaconRing.pa_addr, pAd->BeaconRing.size); - DBGPRINT(RT_DEBUG_INFO, "BeaconRing va_data = 0x%lu, pa_data = 0x%x, size = 0x%x\n", - (unsigned long)pAd->BeaconRing.va_data_addr, (UINT)pAd->BeaconRing.pa_data_addr, pAd->BeaconRing.data_size); - - DBGPRINT(RT_DEBUG_INFO, "<-- RTMPAllocDMAMemory\n"); - return NDIS_STATUS_SUCCESS; - - -err_out_allocate_beaconring: - // Free data DMA blocks first, the start address is the same as TxRing first DMA data block - pci_free_consistent(pAd->pPci_Dev, (RX_RING_SIZE * RX_BUFFER_SIZE), - pAd->RxRing[0].va_data_addr, pAd->RxRing[0].pa_data_addr); - // Free ring descriptor second, the start address is the same as TxRing first elment - pci_free_consistent(pAd->pPci_Dev, (RX_RING_SIZE * RING_DESCRIPTOR_SIZE), - pAd->RxRing[0].va_addr, pAd->RxRing[0].pa_addr); -err_out_allocate_rxring: - // Free data DMA blocks first, the start address is the same as TxRing first DMA data block - pci_free_consistent(pAd->pPci_Dev, (ATIM_RING_SIZE * ATIM_BUFFER_SIZE), - pAd->AtimRing[0].va_data_addr, pAd->AtimRing[0].pa_data_addr); - // Free ring descriptor second, the start address is the same as TxRing first elment - pci_free_consistent(pAd->pPci_Dev, (ATIM_RING_SIZE * RING_DESCRIPTOR_SIZE), - pAd->AtimRing[0].va_addr, pAd->AtimRing[0].pa_addr); -err_out_allocate_atimring: - // Free data DMA blocks first, the start address is the same as TxRing first DMA data block - pci_free_consistent(pAd->pPci_Dev, (PRIO_RING_SIZE * PRIO_BUFFER_SIZE), - pAd->PrioRing[0].va_data_addr, pAd->PrioRing[0].pa_data_addr); - // Free ring descriptor second, the start address is the same as TxRing first elment - pci_free_consistent(pAd->pPci_Dev, (PRIO_RING_SIZE * RING_DESCRIPTOR_SIZE), - pAd->PrioRing[0].va_addr, pAd->PrioRing[0].pa_addr); -err_out_allocate_prioring: - // Free data DMA blocks first, the start address is the same as TxRing first DMA data block - pci_free_consistent(pAd->pPci_Dev, (TX_RING_SIZE * TX_BUFFER_SIZE), - pAd->TxRing[0].va_data_addr, pAd->TxRing[0].pa_data_addr); - // Free ring descriptor second, the start address is the same as TxRing first elment - pci_free_consistent(pAd->pPci_Dev, (TX_RING_SIZE * RING_DESCRIPTOR_SIZE), - pAd->TxRing[0].va_addr, pAd->TxRing[0].pa_addr); -err_out_allocate_txring: - DBGPRINT(RT_DEBUG_ERROR, "<-- RTMPAllocDMAMemory (memory not allocate successfully!)\n"); - - return -ENOMEM; -} - -/* - ======================================================================== - - Routine Description: - Free all DMA memory. - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPFreeDMAMemory( - IN PRTMP_ADAPTER pAd) -{ - DBGPRINT(RT_DEBUG_INFO, "--> RTMPFreeDMAMemory\n"); - - // Free data DMA blocks first, the start address is the same as TxRing first DMA data block - pci_free_consistent(pAd->pPci_Dev, (TX_RING_SIZE * TX_BUFFER_SIZE), - pAd->TxRing[0].va_data_addr, pAd->TxRing[0].pa_data_addr); - // Free ring descriptor second, the start address is the same as TxRing first elment - pci_free_consistent(pAd->pPci_Dev, (TX_RING_SIZE * RING_DESCRIPTOR_SIZE), - pAd->TxRing[0].va_addr, pAd->TxRing[0].pa_addr); - - // Free data DMA blocks first, the start address is the same as TxRing first DMA data block - pci_free_consistent(pAd->pPci_Dev, (PRIO_RING_SIZE * PRIO_BUFFER_SIZE), - pAd->PrioRing[0].va_data_addr, pAd->PrioRing[0].pa_data_addr); - // Free ring descriptor second, the start address is the same as TxRing first elment - pci_free_consistent(pAd->pPci_Dev, (PRIO_RING_SIZE * RING_DESCRIPTOR_SIZE), - pAd->PrioRing[0].va_addr, pAd->PrioRing[0].pa_addr); - - // Free data DMA blocks first, the start address is the same as TxRing first DMA data block - pci_free_consistent(pAd->pPci_Dev, (ATIM_RING_SIZE * ATIM_BUFFER_SIZE), - pAd->AtimRing[0].va_data_addr, pAd->AtimRing[0].pa_data_addr); - // Free ring descriptor second, the start address is the same as TxRing first elment - pci_free_consistent(pAd->pPci_Dev, (ATIM_RING_SIZE * RING_DESCRIPTOR_SIZE), - pAd->AtimRing[0].va_addr, pAd->AtimRing[0].pa_addr); - - // Free data DMA blocks first, the start address is the same as TxRing first DMA data block - pci_free_consistent(pAd->pPci_Dev, (RX_RING_SIZE * RX_BUFFER_SIZE), - pAd->RxRing[0].va_data_addr, pAd->RxRing[0].pa_data_addr); - // Free ring descriptor second, the start address is the same as TxRing first elment - pci_free_consistent(pAd->pPci_Dev, (RX_RING_SIZE * RING_DESCRIPTOR_SIZE), - pAd->RxRing[0].va_addr, pAd->RxRing[0].pa_addr); - - // Free data DMA blocks first, the start address is the same as TxRing first DMA data block - pci_free_consistent(pAd->pPci_Dev, (BEACON_RING_SIZE * BEACON_BUFFER_SIZE), - pAd->BeaconRing.va_data_addr, pAd->BeaconRing.pa_data_addr); - // Free ring descriptor second, the start address is the same as TxRing first elment - pci_free_consistent(pAd->pPci_Dev, (BEACON_RING_SIZE * RING_DESCRIPTOR_SIZE), - pAd->BeaconRing.va_addr, pAd->BeaconRing.pa_addr); - -} - -/* - ======================================================================== - - Routine Description: - Initialize transmit data structures - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - Initialize all transmit releated private buffer, include those define - in RTMP_ADAPTER structure and all private data structures. - - ======================================================================== -*/ -VOID NICInitTransmit( - IN PRTMP_ADAPTER pAdapter) -{ - DBGPRINT(RT_DEBUG_TRACE, "--> NICInitTransmit\n"); - - // Initialize all Transmit releated queues - skb_queue_head_init(&pAdapter->TxSwQueue0); - skb_queue_head_init(&pAdapter->TxSwQueue1); - skb_queue_head_init(&pAdapter->TxSwQueue2); - skb_queue_head_init(&pAdapter->TxSwQueue3); - - // Init Ring index pointer - pAdapter->CurRxIndex = 0; - pAdapter->CurDecryptIndex = 0; - pAdapter->CurTxIndex = 0; - pAdapter->CurEncryptIndex = 0; - pAdapter->CurAtimIndex = 0; - pAdapter->CurPrioIndex = 0; - pAdapter->NextEncryptDoneIndex = 0; - pAdapter->NextTxDoneIndex = 0; - pAdapter->NextAtimDoneIndex = 0; - pAdapter->NextPrioDoneIndex = 0; - pAdapter->NextDecryptDoneIndex = 0; - pAdapter->PushMgmtIndex = 0; - pAdapter->PopMgmtIndex = 0; - pAdapter->MgmtQueueSize = 0; - - pAdapter->PrivateInfo.TxRingFullCnt = 0; - - DBGPRINT(RT_DEBUG_TRACE, "<-- NICInitTransmit\n"); -} - -/* - ======================================================================== - - Routine Description: - Read additional information from EEPROM, such as MAC address - - Arguments: - Adapter Pointer to our adapter - - Return Value: - NDIS_STATUS_SUCCESS - NDIS_STATUS_FAILURE - - Note: - - ======================================================================== -*/ -NDIS_STATUS NICReadAdapterInfo( - IN PRTMP_ADAPTER pAd) -{ - CSR3_STRUC StaMacReg0; - CSR4_STRUC StaMacReg1; - NDIS_STATUS Status = NDIS_STATUS_SUCCESS; - - // - // Read MAC address from CSR3 & CSR4, these CSRs reflects real value - // stored with EEPROM. - // - RTMP_IO_READ32(pAd, CSR3, &StaMacReg0.word); - RTMP_IO_READ32(pAd, CSR4, &StaMacReg1.word); - // Set Current address - pAd->CurrentAddress[0] = StaMacReg0.field.Byte0; - pAd->CurrentAddress[1] = StaMacReg0.field.Byte1; - pAd->CurrentAddress[2] = StaMacReg0.field.Byte2; - pAd->CurrentAddress[3] = StaMacReg0.field.Byte3; - pAd->CurrentAddress[4] = StaMacReg1.field.Byte4; - pAd->CurrentAddress[5] = StaMacReg1.field.Byte5; - pAd->PermanentAddress[0] = StaMacReg0.field.Byte0; - pAd->PermanentAddress[1] = StaMacReg0.field.Byte1; - pAd->PermanentAddress[2] = StaMacReg0.field.Byte2; - pAd->PermanentAddress[3] = StaMacReg0.field.Byte3; - pAd->PermanentAddress[4] = StaMacReg1.field.Byte4; - pAd->PermanentAddress[5] = StaMacReg1.field.Byte5; - - return Status; -} - -/* - ======================================================================== - - Routine Description: - Read initial parameters from EEPROM - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID NICReadEEPROMParameters( - IN PRTMP_ADAPTER pAdapter) -{ - ULONG data; - USHORT i, value; - UCHAR TmpPhy; - EEPROM_TX_PWR_STRUC Power; - EEPROM_VERSION_STRUC Version; - EEPROM_ANTENNA_STRUC Antenna; - - DBGPRINT(RT_DEBUG_TRACE, "--> NICReadEEPROMParameters\n"); - - // Init EEPROM Address Number, before access EEPROM; if 93c46, EEPROMAddressNum=6, else if 93c66, EEPROMAddressNum=8 - RTMP_IO_READ32(pAdapter, CSR21, &data); - - if(data & 0x20) - pAdapter->EEPROMAddressNum = 6; - else - pAdapter->EEPROMAddressNum = 8; - - // if E2PROM version mismatch with driver's expectation, then skip - // all subsequent E2RPOM retieval and set a system error bit to notify GUI - Version.word = RTMP_EEPROM_READ16(pAdapter, EEPROM_VERSION_OFFSET); - if (Version.field.Version != VALID_EEPROM_VERSION) - { - DBGPRINT(RT_DEBUG_ERROR, "WRONG E2PROM VERSION %d, should be %d\n",Version.field.Version, VALID_EEPROM_VERSION); - pAdapter->PortCfg.SystemErrorBitmap |= 0x00000001; - return; - } - - // Read BBP default value from EEPROM and store to array(EEPROMDefaultValue) in pAdapter - for(i = 0; i < NUM_EEPROM_BBP_PARMS; i++) - { - value = RTMP_EEPROM_READ16(pAdapter, EEPROM_BBP_BASE_OFFSET + i*2); - - pAdapter->EEPROMDefaultValue[i] = value; - } - -#if 1 - // We have to parse NIC configuration 0 at here. - // If TSSI did not have preloaded value, it should reset the TxAutoAgc to false - // Therefore, we have to read TxAutoAgc control beforehand. - // Read Tx AGC control bit - Antenna.word = pAdapter->EEPROMDefaultValue[0]; - if (Antenna.field.DynamicTxAgcControl == 1) - pAdapter->PortCfg.bAutoTxAgc = TRUE; - else - pAdapter->PortCfg.bAutoTxAgc = FALSE; - - // Read Tx power value for all 14 channels - // Value from 1 - 0x7f. Default value is 24. - for (i = 0; i < NUM_EEPROM_TX_PARMS; i++) - { - Power.word = RTMP_EEPROM_READ16(pAdapter, EEPROM_TX_PWR_OFFSET + i*2); - pAdapter->PortCfg.ChannelTxPower[i * 2] = ((Power.field.Byte0 > 32) ? 24 : Power.field.Byte0); - pAdapter->PortCfg.ChannelTxPower[i * 2 + 1] = ((Power.field.Byte1 > 32) ? 24 : Power.field.Byte1); - } - - // Read Tx TSSI reference value, OK to reuse Power data structure - for (i = 0; i < NUM_EEPROM_TX_PARMS; i++) - { - Power.word = RTMP_EEPROM_READ16(pAdapter, EEPROM_TSSI_REF_OFFSET + i * 2); - pAdapter->PortCfg.ChannelTssiRef[i * 2] = Power.field.Byte0; - pAdapter->PortCfg.ChannelTssiRef[i * 2 + 1] = Power.field.Byte1; - // Disable TxAgc if the value is not right - if ((pAdapter->PortCfg.ChannelTssiRef[i * 2] == 0xff) || - (pAdapter->PortCfg.ChannelTssiRef[i * 2 + 1] == 0xff)) - pAdapter->PortCfg.bAutoTxAgc = FALSE; - } - - // Tx Tssi delta offset 0x24 - Power.word = RTMP_EEPROM_READ16(pAdapter, EEPROM_TSSI_DELTA_OFFSET); - pAdapter->PortCfg.ChannelTssiDelta = Power.field.Byte0; - -#endif - - //CountryRegion byte offset = 0x35 - value = pAdapter->EEPROMDefaultValue[2] >> 8; - if ((value <= 7)) - { - pAdapter->PortCfg.CountryRegion = (UCHAR) value; - TmpPhy = pAdapter->PortCfg.PhyMode; - pAdapter->PortCfg.PhyMode = 0xff; - RTMPSetPhyMode(pAdapter, TmpPhy); - } - - // Read new Calibrated CV value, reuse the power variable - Power.word = RTMP_EEPROM_READ16(pAdapter, EEPROM_CALIBRATE_OFFSET); - if (Power.field.Byte0 == 0xff) - { - //pAdapter->PortCfg.R17Dec = 0; - pAdapter->PortCfg.RssiToDbm = 0x79; - } - else - { - //pAdapter->PortCfg.R17Dec = 0x79 - Power.field.Byte0; - pAdapter->PortCfg.RssiToDbm = Power.field.Byte0; - } - - - DBGPRINT(RT_DEBUG_TRACE, "<-- NICReadEEPROMParameters\n"); -} - -/* - ======================================================================== - - Routine Description: - Set default value from EEPROM - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID NICInitAsicFromEEPROM( - IN PRTMP_ADAPTER pAdapter) -{ - ULONG data, BbpCsr1; - USHORT i, value; - UCHAR TxValue,RxValue; - EEPROM_ANTENNA_STRUC Antenna; - EEPROM_NIC_CONFIG2_STRUC NicConfig2; - - DBGPRINT(RT_DEBUG_TRACE, "--> NICInitAsicFromEEPROM\n"); - - for(i = 3; i < NUM_EEPROM_BBP_PARMS; i++) - { - value = pAdapter->EEPROMDefaultValue[i]; - - if((value != 0xFFFF) && (value != 0)) - { - data = value | 0x18000; - RTMP_BBP_IO_WRITE32(pAdapter, data); - } - } - - Antenna.word = pAdapter->EEPROMDefaultValue[0]; - DBGPRINT(RT_DEBUG_TRACE, "--> Antenna.word = 0x%x\n",pAdapter->EEPROMDefaultValue[0]); - - if ((Antenna.word == 0xFFFF) || (Antenna.field.TxDefaultAntenna > 2) || (Antenna.field.RxDefaultAntenna > 2)) - { - DBGPRINT(RT_DEBUG_TRACE, "E2PROM error(=0x%04x), hard code as 0x0002\n", Antenna.word); - Antenna.word = 0x0002; - } - - pAdapter->PortCfg.NumberOfAntenna = 2; // (UCHAR)Antenna.field.NumOfAntenna; - pAdapter->PortCfg.CurrentTxAntenna = (UCHAR)Antenna.field.TxDefaultAntenna; - pAdapter->PortCfg.CurrentRxAntenna = (UCHAR)Antenna.field.RxDefaultAntenna; - pAdapter->PortCfg.RfType = (UCHAR) Antenna.field.RfType; - - RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, BBP_Tx_Configure, &TxValue); - RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, BBP_Rx_Configure, &RxValue); - RTMP_IO_READ32(pAdapter, BBPCSR1, &BbpCsr1); - - // Tx antenna select - if(Antenna.field.TxDefaultAntenna == 1) // Antenna A - { - TxValue = (TxValue & 0xFC) | 0x00; - BbpCsr1 = (BbpCsr1 & 0xFFFCFFFC) | 0x00000000; - } - else if(Antenna.field.TxDefaultAntenna == 2) // Antenna B - { - TxValue = (TxValue & 0xFC) | 0x02; - BbpCsr1 = (BbpCsr1 & 0xFFFCFFFC) | 0x00020002; - } - else // diverity - start from Antenna B - { - TxValue = (TxValue & 0xFC) | 0x02; - BbpCsr1 = (BbpCsr1 & 0xFFFCFFFC) | 0x00020002; - } - - // Rx antenna select - if(Antenna.field.RxDefaultAntenna == 1) // Antenna A - RxValue = (RxValue & 0xFC) | 0x00; - else if(Antenna.field.RxDefaultAntenna == 2) // Antenna B - RxValue = (RxValue & 0xFC) | 0x02; - else // Antenna Diversity - RxValue = (RxValue & 0xFC) | 0x02; - - // RT5222 needs special treatment to swap TX I/Q - if (pAdapter->PortCfg.RfType == RFIC_5222) - { - BbpCsr1 |= 0x00040004; - TxValue |= 0x04; // TX I/Q flip - } - // RT2525E need to flip TX I/Q but not RX I/Q - else if (pAdapter->PortCfg.RfType == RFIC_2525E) - { - BbpCsr1 |= 0x00040004; - TxValue |= 0x04; // TX I/Q flip - RxValue &= 0xfb; // RX I/Q no flip - } - - // Change to match microsoft definition, 0xff: diversity, 0: A, 1: B - pAdapter->PortCfg.CurrentTxAntenna--; - pAdapter->PortCfg.CurrentRxAntenna--; - - RTMP_IO_WRITE32(pAdapter, BBPCSR1, BbpCsr1); - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, BBP_Tx_Configure, TxValue); - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, BBP_Rx_Configure, RxValue); - - // 2003-12-16 software-based RX antenna diversity - // pAdapter->PortCfg.CurrentRxAntenna = 0xff; // Diversity ON - AsicSetRxAnt(pAdapter); - - if (Antenna.field.LedMode == LED_MODE_TXRX_ACTIVITY) - pAdapter->PortCfg.LedMode = LED_MODE_TXRX_ACTIVITY; - else if (Antenna.field.LedMode == LED_MODE_SINGLE) - { - pAdapter->PortCfg.LedMode = LED_MODE_SINGLE; - ASIC_LED_ACT_ON(pAdapter); - } - else if (Antenna.field.LedMode == LED_MODE_ASUS) - { - pAdapter->PortCfg.LedMode = LED_MODE_ASUS; - RTMP_IO_WRITE32(pAdapter, LEDCSR, 0x0002461E); - } - else - pAdapter->PortCfg.LedMode = LED_MODE_DEFAULT; - - // Read Hardware controlled Radio state enable bit - if (0 && Antenna.field.HardwareRadioControl == 1) - { - pAdapter->PortCfg.bHardwareRadio = TRUE; - - // Read GPIO pin0 as Hardware controlled radio state - RTMP_IO_READ32(pAdapter, GPIOCSR, &data); - if ((data & 0x01) == 0) - { - pAdapter->PortCfg.bHwRadio = FALSE; - pAdapter->PortCfg.bRadio = FALSE; - RTMP_IO_WRITE32(pAdapter, PWRCSR0, 0x00000000); - RTMP_SET_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF); - if (pAdapter->PortCfg.LedMode == LED_MODE_ASUS) - { - // Turn bit 17 for Radio OFF - RTMP_IO_WRITE32(pAdapter, LEDCSR, 0x0000461E); - } - } - } - else - pAdapter->PortCfg.bHardwareRadio = FALSE; - - NicConfig2.word = pAdapter->EEPROMDefaultValue[1]; - if (NicConfig2.word == 0xffff) - NicConfig2.word = 0; // empty E2PROM, use default - - // for dynamic BBP R17:RX sensibility tuning - { - UCHAR r17; - RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, 17, &r17); - pAdapter->PortCfg.BbpTuningEnable = (NicConfig2.field.DynamicBbpTuning==0)? 1:0; - pAdapter->PortCfg.VgcLowerBound = r17; - - // 2004-3-4 per David's request, R7 starts at upper bound - pAdapter->PortCfg.BbpTuning.VgcUpperBound = BBP_R17_DYNAMIC_UP_BOUND; - r17 = pAdapter->PortCfg.BbpTuning.VgcUpperBound; - pAdapter->PortCfg.LastR17Value = r17; - RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, 17, r17); - - // 2004-2-2 per David's request, lower R17 low-bound for very good quality NIC - pAdapter->PortCfg.VgcLowerBound -= 6; - DBGPRINT(RT_DEBUG_TRACE,"R17 tuning enable=%d, R17=0x%02x, range=<0x%02x, 0x%02x>\n", - pAdapter->PortCfg.BbpTuningEnable, r17, pAdapter->PortCfg.VgcLowerBound, pAdapter->PortCfg.BbpTuning.VgcUpperBound); - } - - DBGPRINT(RT_DEBUG_TRACE, "RF IC=%d, LED mode=%d\n", pAdapter->PortCfg.RfType, pAdapter->PortCfg.LedMode); - - DBGPRINT(RT_DEBUG_TRACE, "<-- NICInitAsicFromEEPROM\n"); -} - -void NICInitializeAdapter(IN PRTMP_ADAPTER pAdapter) -{ - TXCSR2_STRUC TxCSR2; - RXCSR1_STRUC RxCSR1; - ULONG Value; - - DBGPRINT(RT_DEBUG_TRACE, "--> NICInitializeAdapter\n"); - - // Init spin locks - spin_lock_init(&pAdapter->TxRingLock); - spin_lock_init(&pAdapter->PrioRingLock); - spin_lock_init(&pAdapter->AtimRingLock); - spin_lock_init(&pAdapter->RxRingLock); - spin_lock_init(&pAdapter->TxSwQueueLock); - spin_lock_init(&pAdapter->MemLock); - - // Write TXCSR2 register - TxCSR2.field.TxDSize = RING_DESCRIPTOR_SIZE; - TxCSR2.field.NumTxD = TX_RING_SIZE; - TxCSR2.field.NumAtimD = ATIM_RING_SIZE; - TxCSR2.field.NumPrioD = PRIO_RING_SIZE; - RTMP_IO_WRITE32(pAdapter, TXCSR2, TxCSR2.word); - - // Write TXCSR3 register - Value = pAdapter->TxRing[0].pa_addr; - RTMP_IO_WRITE32(pAdapter, TX_RING_BASE_REG, Value); - - // Write TXCSR4 register - Value = pAdapter->PrioRing[0].pa_addr; - RTMP_IO_WRITE32(pAdapter, PRIO_RING_BASE_REG, Value); - - // Write TXCSR5 register - Value = pAdapter->AtimRing[0].pa_addr; - RTMP_IO_WRITE32(pAdapter, ATIM_RING_BASE_REG, Value); - - // Write TXCSR6 register - Value = pAdapter->BeaconRing.pa_addr; - RTMP_IO_WRITE32(pAdapter, BEACON_BASE_REG, Value); - - // Write RXCSR1 register - RxCSR1.field.RxDSize = RING_DESCRIPTOR_SIZE; - RxCSR1.field.NumRxD = RX_RING_SIZE; - RTMP_IO_WRITE32(pAdapter, RXCSR1, RxCSR1.word); - - // Write RXCSR2 register - Value = pAdapter->RxRing[0].pa_addr; - RTMP_IO_WRITE32(pAdapter, RX_RING_BASE_REG, Value); - - // Write CSR1 for host ready - // Move Host reay to end of ASIC initialization - // to ensure no Rx will perform before ASIC init - // RTMP_IO_WRITE32(pAdapter, CSR1, 0x4); - - // Initialze ASIC for TX & Rx operation - NICInitializeAsic(pAdapter); - - DBGPRINT(RT_DEBUG_TRACE, "<-- NICInitializeAdapter\n"); -} - -void NICInitializeAsic(IN PRTMP_ADAPTER pAdapter) -{ - ULONG Index; - UCHAR Value = 0xff; - - DBGPRINT(RT_DEBUG_TRACE, "--> NICInitializeAsic\n"); - - // Initialize MAC register to default value - for (Index = 0; Index < NUM_MAC_REG_PARMS; Index++) - { - RTMP_IO_WRITE32(pAdapter, MACRegTable[Index].Register, MACRegTable[Index].Value); - } - - // Set Host ready before kicking Rx - RTMP_IO_WRITE32(pAdapter, CSR1, 0x1); // reset MAC state machine, requested by Kevin 2003-2-11 - RTMP_IO_WRITE32(pAdapter, CSR1, 0x4); - - // Read BBP register, make sure BBP is up and running before write new data - Index = 0; - while (((Value == 0xff) || (Value == 0x00)) && Index < 10) - { - RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, BBP_Version, &Value); - mdelay(1); - Index++; - } - if(Index >= 10){ - DBGPRINT(RT_DEBUG_TRACE, "BBP register was never ready!\n"); - return; - } - - // Initialize BBP register to default value - for (Index = 0; Index < NUM_BBP_REG_PARMS; Index++) - { - RTMP_BBP_IO_WRITE32(pAdapter, BBPRegTable[Index]); - } - - // Initialize RF register to default value - AsicSwitchChannel(pAdapter, pAdapter->PortCfg.Channel); - AsicLockChannel(pAdapter, pAdapter->PortCfg.Channel); - - // Add radio off control - if (pAdapter->PortCfg.bRadio == FALSE) - { - RTMP_IO_WRITE32(pAdapter, PWRCSR0, 0x00000000); - RTMP_SET_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF); - } - - // Kick Rx - if (pAdapter->bAcceptPromiscuous == TRUE) - { - // Register bits with "drop unicast not to me disabled" - RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x6e); - } - else - { - // Standard default register bits. - RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x7e); - } - - // Clear old FCS jitter before init ASIC - RTMP_IO_READ32(pAdapter, CNT0, &Index); - // Clear old Rx FIFO error jitter before init ASIC - RTMP_IO_READ32(pAdapter, CNT4, &Index); - - pAdapter->MediaState=NdisMediaStateDisconnected; - - DBGPRINT(RT_DEBUG_TRACE, "<-- NICInitializeAsic\n"); -} - -/* - ======================================================================== - - Routine Description: - Reset NIC Asics - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - Reset NIC to initial state AS IS system boot up time. - - ======================================================================== -*/ -VOID NICIssueReset( - IN PRTMP_ADAPTER pAdapter) -{ - CSR3_STRUC StaMacReg0; - CSR4_STRUC StaMacReg1; - - DBGPRINT(RT_DEBUG_TRACE, "--> NICIssueReset\n"); - - // Abort Tx, prevent ASIC from writing to Host memory - RTMP_IO_WRITE32(pAdapter, TXCSR0, 0x08); - - // Disable Rx, register value supposed will remain after reset - RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x01); - - if (pAdapter->PortCfg.bLocalAdminMAC) - { - // Write Back Permanent MAC address to CSR3 & CSR4 - StaMacReg0.field.Byte0 = pAdapter->PermanentAddress[0]; - StaMacReg0.field.Byte1 = pAdapter->PermanentAddress[1]; - StaMacReg0.field.Byte2 = pAdapter->PermanentAddress[2]; - StaMacReg0.field.Byte3 = pAdapter->PermanentAddress[3]; - StaMacReg1.field.Byte4 = pAdapter->PermanentAddress[4]; - StaMacReg1.field.Byte5 = pAdapter->PermanentAddress[5]; - RTMP_IO_WRITE32(pAdapter, CSR3, StaMacReg0.word); - RTMP_IO_WRITE32(pAdapter, CSR4, StaMacReg1.word); - } - - // Issue reset and clear from reset state - RTMP_IO_WRITE32(pAdapter, CSR1, 0x01); - RTMP_IO_WRITE32(pAdapter, CSR1, 0x00); - - DBGPRINT(RT_DEBUG_TRACE, "<-- NICIssueReset\n"); -} - -/* - ======================================================================== - - Routine Description: - Check ASIC registers and find any reason the system might hang - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - - - ======================================================================== -*/ -BOOLEAN NICCheckForHang( - IN PRTMP_ADAPTER pAd) -{ - // garbage collection -// if ((pAd->RalinkCounters.EncryptCount - pAd->RalinkCounters.TxDoneCount) == TX_RING_SIZE) -// { -// DBGPRINT(RT_DEBUG_WARNING,"\nNICCheckForHang --- Garbage Collection!!!\n\n"); -// } - - { - RTMPHandleTxRingTxDoneInterrupt(pAd); - RTMPHandleEncryptionDoneInterrupt(pAd); - } - - return (FALSE); -} - -/* - ======================================================================== - - Routine Description: - Reset NIC from error - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - Reset NIC from error state - - ======================================================================== -*/ -VOID NICResetFromError( - IN PRTMP_ADAPTER pAdapter) -{ - // Reset BBP (according to alex, reset ASIC will force reset BBP - // Therefore, skip the reset BBP - // RTMP_IO_WRITE32(pAdapter, CSR1, 0x2); - // Release BBP reset - // RTMP_IO_WRITE32(pAdapter, CSR1, 0x0); - - RTMP_IO_WRITE32(pAdapter, CSR1, 0x1); - // Remove ASIC from reset state - RTMP_IO_WRITE32(pAdapter, CSR1, 0x0); - - // Init send data structures and related parameters - NICInitTransmit(pAdapter); - - NICInitializeAdapter(pAdapter); - NICInitAsicFromEEPROM(pAdapter); - - // Switch to current channel, since during reset process, the connection should remains on. - AsicSwitchChannel(pAdapter, pAdapter->PortCfg.Channel); - AsicLockChannel(pAdapter, pAdapter->PortCfg.Channel); -} -/* - ======================================================================== - - Routine Description: - Verify section is valid for Get key parameter. - - Arguments: - buffer Pointer to the buffer to start find the key section - ptr pointer to section - - Return Value: - TRUE Success - FALSE Fail - ======================================================================== -*/ -INT RTMPIsFindSection( - IN PUCHAR ptr, - IN PUCHAR buffer) -{ - if(ptr == buffer) - return TRUE; - else if (ptr > buffer) - { - while (ptr > buffer) - { - ptr--; - if( *ptr == 0x0a) - return TRUE; - else if( (*ptr == ' ') || (*ptr == '\t')) - continue; - else - return FALSE; - } - return TRUE; - } - - return FALSE; -} -/* - ======================================================================== - - Routine Description: - Find key section for Get key parameter. - - Arguments: - buffer Pointer to the buffer to start find the key section - section the key of the secion to be find - - Return Value: - NULL Fail - Others Success - ======================================================================== -*/ -PUCHAR RTMPFindSection( - IN PCHAR buffer, - IN PCHAR section) -{ - CHAR temp_buf[255]; - PUCHAR ptr; - - strcpy(temp_buf, "["); /* and the opening bracket [ */ - strcat(temp_buf, section); - strcat(temp_buf, "]"); - - if((ptr = rtstrstr(buffer, temp_buf)) != NULL) - { - if(RTMPIsFindSection(ptr, buffer)) - return (ptr+strlen("\n")); - else - return NULL; - } - else - return NULL; -} - /** - * strstr - Find the first substring in a %NUL terminated string - * @s1: The string to be searched - * @s2: The string to search for - */ -char * rtstrstr(const char * s1,const char * s2) -{ - int l1, l2; - - l2 = strlen(s2); - if (!l2) - return (char *) s1; - l1 = strlen(s1); - while (l1 >= l2) { - l1--; - if (!memcmp(s1,s2,l2)) - return (char *) s1; - s1++; - } - return NULL; -} -/* - ======================================================================== - - Routine Description: - Get key parameter. - - Arguments: - section the key of the secion - key Pointer to key string - dest Pointer to destination - destsize The datasize of the destination - buffer Pointer to the buffer to start find the key - - Return Value: - TRUE Success - FALSE Fail - - Note: - This routine get the value with the matched key (case case-sensitive) - ======================================================================== -*/ -INT RTMPGetKeyParameter( - IN PUCHAR section, - IN PCHAR key, - OUT PCHAR dest, - IN INT destsize, - IN PCHAR buffer) -{ - char temp_buf1[600]; - char temp_buf2[600]; - char *start_ptr; - char *end_ptr; - char *ptr; - char *too_far_ptr; - char *offset; - int len; - - //find section - if((offset = RTMPFindSection(buffer, section)) == NULL) - return (FALSE); - - strcpy(temp_buf1, "\n"); - strcat(temp_buf1, key); - strcat(temp_buf1, "="); - - //search key - if((start_ptr=rtstrstr(offset, temp_buf1))==NULL) - return FALSE; - - start_ptr+=strlen("\n"); - if((too_far_ptr=rtstrstr(offset+1, "["))==NULL) - too_far_ptr=offset+strlen(offset); - - if((end_ptr=rtstrstr(start_ptr, "\n"))==NULL) - end_ptr=start_ptr+strlen(start_ptr); - - if (too_far_ptr Error %ld opening %s\n", -PTR_ERR(srcf),src); - } - else - { - /* The object must have a read method */ - if (srcf->f_op && srcf->f_op->read) - { - memset(buffer, 0x00, MAX_INI_BUFFER_SIZE); - retval=srcf->f_op->read(srcf, buffer, MAX_INI_BUFFER_SIZE, &srcf->f_pos); - if (retval < 0) - { - DBGPRINT(RT_DEBUG_TRACE, "--> Read %s error %d\n", src, -retval); - } - else - { - // set file parameter to portcfg - //CountryRegion - if (RTMPGetKeyParameter("Default", "CountryRegion", tmpbuf, 255, buffer)) - { - ulInfo = simple_strtol(tmpbuf, 0, 10); - if ((ulInfo >= REGION_MIN) && (ulInfo <= REGION_MAX) ) - { - pAd->PortCfg.CountryRegion = (UCHAR) ulInfo; - DBGPRINT(RT_DEBUG_TRACE, "%s::(CountryRegion=%d)\n", __FUNCTION__, pAd->PortCfg.CountryRegion); - } - } - //SSID - memset(tmpbuf, 0x00, 255); - if (RTMPGetKeyParameter("Default", "SSID", tmpbuf, 32, buffer)) - { - pAd->PortCfg.SsidLen = (UCHAR) strlen(tmpbuf); - memcpy(pAd->PortCfg.Ssid, tmpbuf, pAd->PortCfg.SsidLen); - - pAd->Mlme.CntlAux.SsidLen = pAd->PortCfg.SsidLen; - memcpy(pAd->Mlme.CntlAux.Ssid, tmpbuf, pAd->Mlme.CntlAux.SsidLen); - - DBGPRINT(RT_DEBUG_TRACE, "%s::(SSID=%s Len=%d)\n", __FUNCTION__, tmpbuf, pAd->PortCfg.SsidLen); - } - //NetworkType - if (RTMPGetKeyParameter("Default", "NetworkType", tmpbuf, 255, buffer)) - { - pAd->bConfigChanged = TRUE; - if (strcmp(tmpbuf, "Adhoc") == 0) - pAd->PortCfg.BssType = BSS_INDEP; - else //Default Infrastructure mode - pAd->PortCfg.BssType = BSS_INFRA; - // Reset Ralink supplicant to not use, it will be set to start when UI set PMK key - pAd->PortCfg.WpaState = SS_NOTUSE; - DBGPRINT(RT_DEBUG_TRACE, "%s::(NetworkType=%d)\n", __FUNCTION__, pAd->PortCfg.BssType); - } - //WirelessMode - if (RTMPGetKeyParameter("Default", "WirelessMode", tmpbuf, 10, buffer)) - { - ulInfo = simple_strtol(tmpbuf, 0, 10); - if ((ulInfo == PHY_11BG_MIXED) || (ulInfo == PHY_11B) || - (ulInfo == PHY_11A) || (ulInfo == PHY_11ABG_MIXED)) - { - RTMPSetPhyMode(pAd, ulInfo); - DBGPRINT(RT_DEBUG_TRACE, "%s::(WirelessMode=%d)\n", __FUNCTION__, ulInfo); - } - } - //TxRate - if (RTMPGetKeyParameter("Default", "TxRate", tmpbuf, 10, buffer)) - { - ulInfo = simple_strtol(tmpbuf, 0, 10); - { - if (ulInfo == 0) - RTMPSetDesiredRates(pAd, -1); - else - RTMPSetDesiredRates(pAd, (LONG) (rate_mapping[ulInfo-1] * 1000000)); - - DBGPRINT(RT_DEBUG_TRACE, "%s::(TxRate=%d)\n", __FUNCTION__, ulInfo); - } - } - //Channel - if (RTMPGetKeyParameter("Default", "Channel", tmpbuf, 10, buffer)) - { - Channel = (UCHAR) simple_strtol(tmpbuf, 0, 10); - if (ChannelSanity(pAd, Channel) == TRUE) - { - pAd->PortCfg.Channel = Channel; - // If default profile in Registry is an ADHOC network, driver should use the specified channel - // number when starting IBSS the first time, because RaConfig is passive and will not set this - // via OID_802_11_CONFIGURATION upon driver bootup. - pAd->PortCfg.IbssConfig.Channel = pAd->PortCfg.Channel; - DBGPRINT(RT_DEBUG_TRACE, "%s::(Channel=%d)\n", __FUNCTION__, Channel); - } - } - //BGProtection - if (RTMPGetKeyParameter("Default", "BGProtection", tmpbuf, 10, buffer)) - { - switch (simple_strtol(tmpbuf, 0, 10)) - { - case 1: //Always On - pAd->PortCfg.UseBGProtection = 1; - break; - case 2: //Always OFF - pAd->PortCfg.UseBGProtection = 2; - break; - case 0: //AUTO - default: - pAd->PortCfg.UseBGProtection = 0; - break; - } - DBGPRINT(RT_DEBUG_TRACE, "%s::(BGProtection=%d)\n", __FUNCTION__, pAd->PortCfg.UseBGProtection); - } - //StaWithEtherBridge - if (RTMPGetKeyParameter("Default", "StaWithEtherBridge", tmpbuf, 10, buffer)) - { - switch (simple_strtol(tmpbuf, 0, 10)) - { - case 0: //Off - pAd->PortCfg.StaWithEtherBridge.Enable = FALSE; - break; - case 1: //On - pAd->PortCfg.StaWithEtherBridge.Enable = TRUE; - break; - default: - pAd->PortCfg.StaWithEtherBridge.Enable = FALSE; - break; - } - DBGPRINT(RT_DEBUG_TRACE, "%s::(StaWithEtherBridge=%d)\n", __FUNCTION__, pAd->PortCfg.StaWithEtherBridge.Enable); - } - //TxPreamble - if (RTMPGetKeyParameter("Default", "TxPreamble", tmpbuf, 10, buffer)) - { - Preamble = simple_strtol(tmpbuf, 0, 10); - switch (Preamble) - { - case Rt802_11PreambleShort: - pAd->PortCfg.WindowsTxPreamble = Preamble; - MlmeSetTxPreamble(pAd, Rt802_11PreambleShort); - break; - case Rt802_11PreambleLong: - case Rt802_11PreambleAuto: - default: - // if user wants AUTO, initialize to LONG here, then change according to AP's - // capability upon association. - pAd->PortCfg.WindowsTxPreamble = Preamble; - MlmeSetTxPreamble(pAd, Rt802_11PreambleLong); - } - DBGPRINT(RT_DEBUG_TRACE, "%s::(TxPreamble=%d)\n", __FUNCTION__, Preamble); - } - //RTSThreshold - if (RTMPGetKeyParameter("Default", "RTSThreshold", tmpbuf, 10, buffer)) - { - ulInfo = simple_strtol(tmpbuf, 0, 10); - - if((ulInfo > 0) && (ulInfo <= MAX_RTS_THRESHOLD)) - pAd->PortCfg.RtsThreshold = (USHORT)ulInfo; - else - pAd->PortCfg.RtsThreshold = MAX_RTS_THRESHOLD; - - DBGPRINT(RT_DEBUG_TRACE, "%s::(RTSThreshold=%d)\n", __FUNCTION__, pAd->PortCfg.RtsThreshold); - } - //FragThreshold - if (RTMPGetKeyParameter("Default", "FragThreshold", tmpbuf, 10, buffer)) - { - ulInfo = simple_strtol(tmpbuf, 0, 10); - - if ( (ulInfo >= MIN_FRAG_THRESHOLD) && (ulInfo <= MAX_FRAG_THRESHOLD)) - pAd->PortCfg.FragmentThreshold = (USHORT)ulInfo; - else - pAd->PortCfg.FragmentThreshold = MAX_FRAG_THRESHOLD; - - if (pAd->PortCfg.FragmentThreshold == MAX_FRAG_THRESHOLD) - pAd->PortCfg.bFragmentZeroDisable = TRUE; - else - pAd->PortCfg.bFragmentZeroDisable = FALSE; - - DBGPRINT(RT_DEBUG_TRACE, "%s::(FragThreshold=%d)\n", __FUNCTION__, ulInfo); - } - //AdhocOfdm - if (RTMPGetKeyParameter("Default", "AdhocOfdm", tmpbuf, 10, buffer)) - { - ulInfo = simple_strtol(tmpbuf, 0, 10); - - if (ulInfo == 1) - pAd->PortCfg.AdhocMode = 1; - else - pAd->PortCfg.AdhocMode = 0; - - DBGPRINT(RT_DEBUG_TRACE, "%s::(AdhocOfdm=%d)\n", __FUNCTION__, pAd->PortCfg.AdhocMode); - } - //TxBurst - if (RTMPGetKeyParameter("Default", "TxBurst", tmpbuf, 10, buffer)) - { - ulInfo = simple_strtol(tmpbuf, 0, 10); - - if (ulInfo == 1) - pAd->PortCfg.EnableTxBurst = TRUE; - else - pAd->PortCfg.EnableTxBurst = FALSE; - - DBGPRINT(RT_DEBUG_TRACE, "%s::(TxBurst=%d)\n", __FUNCTION__, pAd->PortCfg.EnableTxBurst); - } - //TurboRate - if (RTMPGetKeyParameter("Default", "TurboRate", tmpbuf, 10, buffer)) - { - ulInfo = simple_strtol(tmpbuf, 0, 10); - - if (ulInfo == 1) - pAd->PortCfg.EnableTurboRate = TRUE; - else - pAd->PortCfg.EnableTurboRate = FALSE; - - DBGPRINT(RT_DEBUG_TRACE, "%s::(TurboRate=%d)\n", __FUNCTION__, pAd->PortCfg.EnableTurboRate); - } - //ShortSlot - if (RTMPGetKeyParameter("Default", "ShortSlot", tmpbuf, 10, buffer)) - { - ulInfo = simple_strtol(tmpbuf, 0, 10); - - if (ulInfo == 1) - pAd->PortCfg.UseShortSlotTime = TRUE; - else - pAd->PortCfg.UseShortSlotTime = FALSE; - - DBGPRINT(RT_DEBUG_TRACE, "%s::(ShortSlot=%d)\n", __FUNCTION__, pAd->PortCfg.UseShortSlotTime); - } - //POWER_MODE - if (RTMPGetKeyParameter("Default", "PSMode", tmpbuf, 10, buffer)) - { - if (pAd->PortCfg.BssType == BSS_INFRA) - { - if ((strcmp(tmpbuf, "MAX_PSP") == 0) || (strcmp(tmpbuf, "max_psp") == 0)) - { - DBGPRINT(RT_DEBUG_INFO, "MAX_PSP power mode not available - defaulting to CAM\n"); - } - else if ((strcmp(tmpbuf, "Fast_PSP") == 0) || (strcmp(tmpbuf, "fast_psp") == 0) - || (strcmp(tmpbuf, "FAST_PSP") == 0)) - { - DBGPRINT(RT_DEBUG_INFO, "FAST_PSP power mode not available - defaulting to CAM\n"); - } - - //Default Ndis802_11PowerModeCAM - // clear PSM bit immediately - MlmeSetPsmBit(pAd, PWR_ACTIVE); - pAd->PortCfg.RecvDtim = TRUE; - if (pAd->PortCfg.WindowsACCAMEnable == FALSE) - pAd->PortCfg.WindowsPowerMode = Ndis802_11PowerModeCAM; - pAd->PortCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeCAM; - DBGPRINT(RT_DEBUG_TRACE, "%s::(PSMode=%d)\n", __FUNCTION__, pAd->PortCfg.WindowsPowerMode); - } - } - //AuthMode - if (RTMPGetKeyParameter("Default", "AuthMode", tmpbuf, 10, buffer)) - { - if ((strcmp(tmpbuf, "SHARED") == 0) || (strcmp(tmpbuf, "shared") == 0)) - pAd->PortCfg.AuthMode = Ndis802_11AuthModeShared; - else if ((strcmp(tmpbuf, "WPAPSK") == 0) || (strcmp(tmpbuf, "wpapsk") == 0)) - pAd->PortCfg.AuthMode = Ndis802_11AuthModeWPAPSK; - else if ((strcmp(tmpbuf, "AUTO") == 0) || (strcmp(tmpbuf, "auto") == 0)) - pAd->PortCfg.AuthMode = Ndis802_11AuthModeAutoSwitch; - else if ((strcmp(tmpbuf, "WPANONE") == 0) || (strcmp(tmpbuf, "wpanone") == 0)) - pAd->PortCfg.AuthMode = Ndis802_11AuthModeWPANone; - else - pAd->PortCfg.AuthMode = Ndis802_11AuthModeOpen; - - pAd->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED; - DBGPRINT(RT_DEBUG_TRACE, "%s::(AuthMode=%d)\n", __FUNCTION__, pAd->PortCfg.AuthMode); - } - //EncrypType - if (RTMPGetKeyParameter("Default", "EncrypType", tmpbuf, 10, buffer)) - { - if ((strcmp(tmpbuf, "WEP") == 0) || (strcmp(tmpbuf, "wep") == 0)) - pAd->PortCfg.WepStatus = Ndis802_11WEPEnabled; - else if ((strcmp(tmpbuf, "TKIP") == 0) || (strcmp(tmpbuf, "tkip") == 0)) - pAd->PortCfg.WepStatus = Ndis802_11Encryption2Enabled; - else if ((strcmp(tmpbuf, "AES") == 0) || (strcmp(tmpbuf, "aes") == 0)) - pAd->PortCfg.WepStatus = Ndis802_11Encryption3Enabled; - else - pAd->PortCfg.WepStatus = Ndis802_11WEPDisabled; - - DBGPRINT(RT_DEBUG_TRACE, "%s::(EncrypType=%d)\n", __FUNCTION__, pAd->PortCfg.WepStatus); - } - //WPAPSK_KEY - if (RTMPGetKeyParameter("Default", "WPAPSK", tmpbuf, 255, buffer)) - { - if ((strlen(tmpbuf) >= 8) && (strlen(tmpbuf) < 64)) - { - PasswordHash((char *)tmpbuf, pAd->PortCfg.Ssid, pAd->PortCfg.SsidLen, keyMaterial); - memcpy(pAd->PortCfg.PskKey.Key, keyMaterial, 32); - // Use RaConfig as PSK agent. - // Start STA supplicant state machine - pAd->PortCfg.WpaState = SS_START; -#if 0 - DBGPRINT(RT_DEBUG_TRACE, "%s WPAPSK Key => \n", __FUNCTION__); - for (i = 0; i < 32; i++) - { - DBGPRINT(RT_DEBUG_TRACE, "%02x:", pAd->PortCfg.PskKey.Key[i]); - if (i%16 == 15) - DBGPRINT(RT_DEBUG_TRACE, "\n"); - } - DBGPRINT(RT_DEBUG_TRACE, "\n"); -#endif - } - } - else if (strlen(tmpbuf) == 64) - { - AtoH(tmpbuf, pAd->PortCfg.PskKey.Key, 32); - pAd->PortCfg.WpaState = SS_START; - } - //DefaultKeyID - if (RTMPGetKeyParameter("Default", "DefaultKeyID", tmpbuf, 10, buffer)) - { - ulInfo = simple_strtol(tmpbuf, 0, 10); - if((ulInfo >= 1 ) && (ulInfo <= 4)) - pAd->PortCfg.DefaultKeyId = (UCHAR) (ulInfo - 1 ); - else - pAd->PortCfg.DefaultKeyId = 0; - - DBGPRINT(RT_DEBUG_TRACE, "%s::(DefaultKeyID=%d)\n", __FUNCTION__, pAd->PortCfg.DefaultKeyId); - } - //Key1Str - if (RTMPGetKeyParameter("Default", "Key1Str", tmpbuf, 26, buffer)) - { - KeyLen = strlen(tmpbuf); - switch (KeyLen) - { - case 0: - pAd->PortCfg.SharedKey[0].KeyLen = 0; - break; - case 5: //wep 40 Ascii type - pAd->PortCfg.SharedKey[0].KeyLen = KeyLen; - memcpy(pAd->PortCfg.SharedKey[0].Key, tmpbuf, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key1=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); - case 10: //wep 40 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(tmpbuf+i)) ) - { - bIsHex = FALSE; - break; - } - } - - if (bIsHex) - { - pAd->PortCfg.SharedKey[0].KeyLen = KeyLen / 2 ; - AtoH(tmpbuf, pAd->PortCfg.SharedKey[0].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key1=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); - } - break; - case 13: //wep 104 Ascii type - pAd->PortCfg.SharedKey[0].KeyLen = KeyLen; - memcpy(pAd->PortCfg.SharedKey[0].Key, tmpbuf, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key1=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); - break; - case 26: //wep 104 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(tmpbuf+i)) ) - { - bIsHex = FALSE; - break; - } - } - - if (bIsHex) - { - pAd->PortCfg.SharedKey[0].KeyLen = KeyLen / 2 ; - AtoH(tmpbuf, pAd->PortCfg.SharedKey[0].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key1=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); - } - break; - default: - pAd->PortCfg.SharedKey[0].KeyLen = 0; - DBGPRINT(RT_DEBUG_TRACE, "%s::Invalid Key (=%s)\n", __FUNCTION__, tmpbuf); - } - } - //Key2Str - if (RTMPGetKeyParameter("Default", "Key2Str", tmpbuf, 26, buffer)) - { - KeyLen = strlen(tmpbuf); - switch (KeyLen) - { - case 0: - pAd->PortCfg.SharedKey[1].KeyLen = 0; - break; - case 5: //wep 40 Ascii type - pAd->PortCfg.SharedKey[1].KeyLen = KeyLen; - memcpy(pAd->PortCfg.SharedKey[1].Key, tmpbuf, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key2=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); - case 10: //wep 40 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(tmpbuf+i)) ) - { - bIsHex = FALSE; - break; - } - } - - if (bIsHex) - { - pAd->PortCfg.SharedKey[1].KeyLen = KeyLen / 2 ; - AtoH(tmpbuf, pAd->PortCfg.SharedKey[1].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key2=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); - } - break; - case 13: //wep 104 Ascii type - pAd->PortCfg.SharedKey[1].KeyLen = KeyLen; - memcpy(pAd->PortCfg.SharedKey[1].Key, tmpbuf, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key2=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); - break; - case 26: //wep 104 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(tmpbuf+i)) ) - { - bIsHex = FALSE; - break; - } - } - - if (bIsHex) - { - pAd->PortCfg.SharedKey[1].KeyLen = KeyLen / 2 ; - AtoH(tmpbuf, pAd->PortCfg.SharedKey[1].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key2=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); - } - break; - default: - pAd->PortCfg.SharedKey[1].KeyLen = 0; - DBGPRINT(RT_DEBUG_TRACE, "%s::Invalid argument (=%s)\n", __FUNCTION__, tmpbuf); - } - } - //Key3Str - if (RTMPGetKeyParameter("Default", "Key3Str", tmpbuf, 26, buffer)) - { - KeyLen = strlen(tmpbuf); - switch (KeyLen) - { - case 0: - pAd->PortCfg.SharedKey[2].KeyLen = 0; - break; - case 5: //wep 40 Ascii type - pAd->PortCfg.SharedKey[2].KeyLen = KeyLen; - memcpy(pAd->PortCfg.SharedKey[2].Key, tmpbuf, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key3=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); - case 10: //wep 40 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(tmpbuf+i)) ) - { - bIsHex = FALSE; - break; - } - } - - if (bIsHex) - { - pAd->PortCfg.SharedKey[2].KeyLen = KeyLen / 2 ; - AtoH(tmpbuf, pAd->PortCfg.SharedKey[2].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key3=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); - } - break; - case 13: //wep 104 Ascii type - pAd->PortCfg.SharedKey[2].KeyLen = KeyLen; - memcpy(pAd->PortCfg.SharedKey[2].Key, tmpbuf, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key3=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); - break; - case 26: //wep 104 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(tmpbuf+i)) ) - { - bIsHex = FALSE; - break; - } - } - - if (bIsHex) - { - pAd->PortCfg.SharedKey[2].KeyLen = KeyLen / 2 ; - AtoH(tmpbuf, pAd->PortCfg.SharedKey[2].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key3=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); - } - break; - default: - pAd->PortCfg.SharedKey[2].KeyLen = 0; - DBGPRINT(RT_DEBUG_TRACE, "%s::Invalid argument (=%s)\n", __FUNCTION__, tmpbuf); - } - } - //Key4Str - if (RTMPGetKeyParameter("Default", "Key4Str", tmpbuf, 26, buffer)) - { - KeyLen = strlen(tmpbuf); - switch (KeyLen) - { - case 0: - pAd->PortCfg.SharedKey[3].KeyLen = 0; - break; - case 5: //wep 40 Ascii type - pAd->PortCfg.SharedKey[3].KeyLen = KeyLen; - memcpy(pAd->PortCfg.SharedKey[3].Key, tmpbuf, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key4=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); - case 10: //wep 40 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(tmpbuf+i)) ) - { - bIsHex = FALSE; - break; - } - } - - if (bIsHex) - { - pAd->PortCfg.SharedKey[3].KeyLen = KeyLen / 2 ; - AtoH(tmpbuf, pAd->PortCfg.SharedKey[3].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key4=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); - } - break; - case 13: //wep 104 Ascii type - pAd->PortCfg.SharedKey[3].KeyLen = KeyLen; - memcpy(pAd->PortCfg.SharedKey[3].Key, tmpbuf, KeyLen); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key4=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); - break; - case 26: //wep 104 Hex type - for(i=0; i < KeyLen; i++) - { - if( !isxdigit(*(tmpbuf+i)) ) - { - bIsHex = FALSE; - break; - } - } - - if (bIsHex) - { - pAd->PortCfg.SharedKey[3].KeyLen = KeyLen / 2 ; - AtoH(tmpbuf, pAd->PortCfg.SharedKey[3].Key, KeyLen / 2); - DBGPRINT(RT_DEBUG_TRACE, "%s::(Key4=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); - } - break; - default: - pAd->PortCfg.SharedKey[3].KeyLen = 0; - DBGPRINT(RT_DEBUG_TRACE, "%s::Invalid argument (=%s)\n", __FUNCTION__, tmpbuf); - } - } - } - } - else - { - DBGPRINT(RT_DEBUG_TRACE, "--> %s does not have a write method\n", src); - } - - retval=filp_close(srcf,NULL); - if (retval) - { - DBGPRINT(RT_DEBUG_TRACE, "--> Error %d closing %s\n", -retval, src); - } - } - } //if (src && *src) - - set_fs(orgfs); - current->fsuid = orgfsuid; - current->fsgid = orgfsgid; -} -/* - ======================================================================== - - Routine Description: - Reset NIC Asics - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - Reset NIC to initial state AS IS system boot up time. - - ======================================================================== -*/ -VOID RTMPRingCleanUp( - IN PRTMP_ADAPTER pAdapter, - IN UCHAR RingType) -{ - ULONG Count; - PTXD_STRUC pTxD; - PRXD_STRUC pRxD; - PMGMT_STRUC pMgmt; - - Count = 0; - switch (RingType) - { - case TX_RING: - // We have to clean all descriptos in case some error happened with reset - do - { - pTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->NextTxDoneIndex].va_addr; - - pTxD->Owner = DESC_OWN_HOST; - pTxD->Valid = FALSE; - - pAdapter->NextTxDoneIndex++; - Count++; - if (pAdapter->NextTxDoneIndex >= TX_RING_SIZE) - { - pAdapter->NextTxDoneIndex = 0; - } - - } while (Count < TX_RING_SIZE); // We have to scan all TX ring - - // Check for packet in send tx wait waiting queue - skb_queue_purge(&pAdapter->TxSwQueue0); - skb_queue_purge(&pAdapter->TxSwQueue1); - skb_queue_purge(&pAdapter->TxSwQueue2); - skb_queue_purge(&pAdapter->TxSwQueue3); - - case PRIO_RING: - // We have to clean all descriptos in case some error happened with reset - do - { - pTxD = (PTXD_STRUC) pAdapter->PrioRing[pAdapter->NextPrioDoneIndex].va_addr; - - // We just re-claim these ring spaces. - pTxD->Owner = DESC_OWN_HOST; - pTxD->Valid = FALSE; - - pAdapter->NextPrioDoneIndex++; - Count++; - if (pAdapter->NextPrioDoneIndex >= PRIO_RING_SIZE) - { - pAdapter->NextPrioDoneIndex = 0; - } - - } while (Count < PRIO_RING_SIZE); // We have to scan all Priority Ring - - // Clear managemt buffer ring - while ((pAdapter->PushMgmtIndex != pAdapter->PopMgmtIndex) || (pAdapter->MgmtQueueSize != 0)) - { - pMgmt = (PMGMT_STRUC) &pAdapter->MgmtRing[pAdapter->PopMgmtIndex]; - if (pMgmt->Valid == TRUE) - { - MlmeFreeMemory(pAdapter, pMgmt->pBuffer); - pMgmt->Valid = FALSE; - pAdapter->PopMgmtIndex++; - pAdapter->MgmtQueueSize--; - if (pAdapter->PopMgmtIndex >= MGMT_RING_SIZE) - { - pAdapter->PopMgmtIndex = 0; - } - } - } - pAdapter->RalinkCounters.MgmtRingFullCount = 0; - break; - - case RX_RING: - // We have to clean all descriptos in case some error happened with reset - do - { - pRxD = (PRXD_STRUC) pAdapter->RxRing[pAdapter->CurRxIndex].va_addr; - - // Re-initial Rx ring cell to owned by NIC. - pRxD->Owner = DESC_OWN_NIC; - - pAdapter->CurRxIndex++; - Count++; - if (pAdapter->CurRxIndex >= RX_RING_SIZE) - { - pAdapter->CurRxIndex = 0; - } - - } while (Count < RX_RING_SIZE); // We have to scan all Rx Ring - break; - - default: - break; - - } -} - -/* - ======================================================================== - - Routine Description: - Compare two memory block - - Arguments: - pSrc1 Pointer to first memory address - pSrc2 Pointer to second memory addres - - Return Value: - 0: memory is equal - 1: pSrc1 memory is larger - 2: pSrc2 memory is larger - - Note: - - ======================================================================== -*/ -ULONG RTMPCompareMemory( - IN PVOID pSrc1, - IN PVOID pSrc2, - IN ULONG Length) -{ - PUCHAR pMem1; - PUCHAR pMem2; - ULONG Index = 0; - - pMem1 = (PUCHAR) pSrc1; - pMem2 = (PUCHAR) pSrc2; - - for (Index = 0; Index < Length; Index++) - { - if (pMem1[Index] > pMem2[Index]) - return (1); - else if (pMem1[Index] < pMem2[Index]) - return (2); - } - - // Equal - return (0); -} - -/* - ======================================================================== - - Routine Description: - Initialize port configuration structure - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID PortCfgInit( - IN PRTMP_ADAPTER pAdapter) -{ - UINT i; - - DBGPRINT(RT_DEBUG_TRACE, "--> PortCfgInit\n"); - - pAdapter->PortCfg.UseBGProtection = 0; // 0: AUTO - - pAdapter->PortCfg.CapabilityInfo = 0x0000; - pAdapter->PortCfg.Psm = PWR_ACTIVE; - pAdapter->PortCfg.BeaconPeriod = 100; // in mSec - - pAdapter->PortCfg.CfpMaxDuration = 0; // never mind, decided by AP later - pAdapter->PortCfg.CfpDurRemain = 0; // never mind, decided by AP later - pAdapter->PortCfg.CfpCount = 0; // never mind, decided by AP later - pAdapter->PortCfg.CfpPeriod = 0; // never mind, decided by AP later - pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeOpen; - - for(i = 0; i < SHARE_KEY_NO; i++) { - pAdapter->PortCfg.SharedKey[i].KeyLen = 0; - } - - for(i = 0; i < PAIRWISE_KEY_NO; i++) { - pAdapter->PortCfg.PairwiseKey[i].KeyLen = 0; - } - - for(i = 0; i < GROUP_KEY_NO; i++) { - pAdapter->PortCfg.GroupKey[i].KeyLen = 0; - } - - pAdapter->PortCfg.WepStatus = Ndis802_11EncryptionDisabled; - pAdapter->PortCfg.DefaultKeyId = 0; - pAdapter->PortCfg.PrivacyFilter = Ndis802_11PrivFilterAcceptAll; - - // 802.1x port control - pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED; - pAdapter->PortCfg.LastMicErrorTime = 0; - pAdapter->PortCfg.MicErrCnt = 0; - pAdapter->PortCfg.bBlockAssoc = FALSE; - pAdapter->PortCfg.WpaState = SS_NOTUSE; - - pAdapter->PortCfg.RtsThreshold = 2347; - pAdapter->PortCfg.FragmentThreshold = 2346; - pAdapter->PortCfg.bFragmentZeroDisable = FALSE; - - pAdapter->PortCfg.CurrentTxAntenna = 0xff; // diversity - pAdapter->PortCfg.CurrentRxAntenna = 0xff; // diversity - pAdapter->PortCfg.NumberOfAntenna = 2; - -// pAdapter->PortCfg.TxPowerLevel[0] = 100; -// pAdapter->PortCfg.NumOfTxPowerLevel = 1; - pAdapter->PortCfg.TxPower = 100; //mW - pAdapter->PortCfg.TxPowerPercentage = 0xffffffff; // AUTO - - pAdapter->PortCfg.AntennaSupportTx = TRUE; - pAdapter->PortCfg.AntennaSupportRx = TRUE; - pAdapter->PortCfg.AntennaSupportDiversityRx = TRUE; - - pAdapter->PortCfg.RecvDtim = TRUE; - memset(&pAdapter->PortCfg.Bssid, 0, ETH_ALEN); - memset(&pAdapter->PortCfg.Broadcast, 0xff, ETH_ALEN); - pAdapter->PortCfg.Pss = PWR_ACTIVE; - pAdapter->PortCfg.RssiTrigger = 0; - pAdapter->PortCfg.LastRssi = 0; - pAdapter->PortCfg.LastAvgRssi = -95 + RSSI_TO_DBM_OFFSET;// default -95dm - pAdapter->PortCfg.AvgRssi = 0; - pAdapter->PortCfg.RssiTriggerMode = RSSI_TRIGGERED_UPON_BELOW_THRESHOLD; - pAdapter->PortCfg.AtimWin = 0; - pAdapter->PortCfg.Channel = 1; - - pAdapter->PortCfg.Aid = 1; - - pAdapter->PortCfg.DefaultListenCount = 3;//default listen count; - pAdapter->PortCfg.BssType = BSS_INFRA; // BSS_INFRA or BSS_INDEP - - pAdapter->PortCfg.AdhocMode = 0; - - pAdapter->PortCfg.SsidLen = 0; - memset(pAdapter->PortCfg.Ssid, 0, MAX_LEN_OF_SSID); // NOT NULL-terminated - - // global variables mXXXX used in MAC protocol state machines - pAdapter->PortCfg.Mibss = FALSE; - pAdapter->PortCfg.Massoc = FALSE; - pAdapter->PortCfg.Mauth = FALSE; - - // PHY specification - pAdapter->PortCfg.PhyMode = 0xff; -// RTMPSetPhyMode(pAdapter, PHY_11BG_MIXED); // default in 11BG mixed mode -// pAdapter->PortCfg.Channel = FirstChannel(pAdapter); - pAdapter->PortCfg.Dsifs = 10; // in units of usec - pAdapter->PortCfg.TxPreambleInUsed = Rt802_11PreambleLong; // use Long preamble on TX by defaut - - // user desired power mode - pAdapter->PortCfg.WindowsPowerMode = Ndis802_11PowerModeCAM; // Ndis802_11PowerModeFast_PSP; - pAdapter->PortCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeCAM; // Ndis802_11PowerModeFast_PSP; - pAdapter->PortCfg.WindowsTxPreamble = Rt802_11PreambleAuto; // use Long preamble on TX by defaut - pAdapter->PortCfg.WindowsACCAMEnable = FALSE; -// pAdapter->PortCfg.PacketFilter = NDIS_PACKET_TYPE_ALL_MULTICAST | NDIS_PACKET_TYPE_DIRECTED | NDIS_PACKET_TYPE_BROADCAST; - pAdapter->bAcceptDirect = TRUE; - pAdapter->bAcceptMulticast = FALSE; - pAdapter->bAcceptBroadcast = TRUE; - pAdapter->bAcceptAllMulticast = TRUE; - - // parameters to be used when this STA starts a new ADHOC network - pAdapter->PortCfg.IbssConfig.BeaconPeriod = 100; - pAdapter->PortCfg.IbssConfig.AtimWin = 0; - pAdapter->PortCfg.IbssConfig.Channel = 1; - pAdapter->PortCfg.RfType = RFIC_2525; - pAdapter->PortCfg.LedMode = LED_MODE_DEFAULT; - - pAdapter->PortCfg.IgnoredScanNumber = 0; - pAdapter->bTxBusy = FALSE; - - pAdapter->PortCfg.bHwRadio = TRUE; - pAdapter->PortCfg.bSwRadio = TRUE; - pAdapter->PortCfg.bRadio = TRUE; - pAdapter->PortCfg.bHardwareRadio = FALSE; // Default is OFF - pAdapter->PortCfg.bAutoTxAgc = FALSE; // Default is OFF - pAdapter->PortCfg.bShowHiddenSSID = FALSE; - - // Nitro mode control - pAdapter->PortCfg.EnableTxBurst = 0; - pAdapter->PortCfg.AutoReconnect = TRUE; - - // Save the init time as last scan time, the system should do scan after 2 seconds. - pAdapter->PortCfg.LastScanTime = 0; - - // Default Config change flag - pAdapter->bConfigChanged = FALSE; - - pAdapter->PortCfg.bLocalAdminMAC = TRUE; - - pAdapter->NeedSwapToLittleEndian = TRUE; - - // dynamic BBP R17:sensibity tuning to overcome background noise - pAdapter->PortCfg.BbpTuningEnable = TRUE; // overwritten by E2PROM setting - pAdapter->PortCfg.VgcLowerBound = 0x38; // overwritten by E2PROM setting - pAdapter->PortCfg.BbpTuning.FalseCcaLowerThreshold = 100; - pAdapter->PortCfg.BbpTuning.FalseCcaUpperThreshold = 4; // unit 128, 4*128 = 512 - pAdapter->PortCfg.BbpTuning.VgcDelta = 1; - pAdapter->PortCfg.BbpTuning.VgcUpperBound = BBP_R17_DYNAMIC_UP_BOUND; - - pAdapter->PortCfg.StaWithEtherBridge.Enable = FALSE; - memset(&pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr, 0xff, ETH_ALEN); - -#ifdef RALINK_ATE - memset(&pAdapter->ate, 0, sizeof(ATE_INFO)); - pAdapter->ate.Mode = ATE_STASTART; - pAdapter->ate.TxCount = TX_RING_SIZE; - pAdapter->ate.TxLength = PRIO_BUFFER_SIZE; - pAdapter->ate.TxRate = RATE_11; - pAdapter->ate.Channel = 1; - memcpy(&pAdapter->ate.Addr1,"001122334455", ETH_ALEN); - memcpy(&pAdapter->ate.Addr2,"001122334455", ETH_ALEN); - memcpy(&pAdapter->ate.Addr3,"001122334455", ETH_ALEN); -#endif //#ifdef RALINK_ATE - - RTMP_IO_READ32(pAdapter, 0, &pAdapter->PortCfg.Rt2560Version); - - DBGPRINT(RT_DEBUG_TRACE, "<-- PortCfgInit\n"); -} - -UCHAR BtoH(char ch) -{ - if (ch >= '0' && ch <= '9') return (ch - '0'); // Handle numerals - if (ch >= 'A' && ch <= 'F') return (ch - 'A' + 0xA); // Handle capitol hex digits - if (ch >= 'a' && ch <= 'f') return (ch - 'a' + 0xA); // Handle small hex digits - return(255); -} - -// -// FUNCTION: AtoH(char *, UCHAR *, int) -// -// PURPOSE: Converts ascii string to network order hex -// -// PARAMETERS: -// src - pointer to input ascii string -// dest - pointer to output hex -// destlen - size of dest -// -// COMMENTS: -// -// 2 ascii bytes make a hex byte so must put 1st ascii byte of pair -// into upper nibble and 2nd ascii byte of pair into lower nibble. -// - -void AtoH(char * src, UCHAR * dest, int destlen) -{ - char *srcptr; - PUCHAR destTemp; - - srcptr = src; - destTemp = (PUCHAR) dest; - - while(destlen--) - { - *destTemp = BtoH(*srcptr++) << 4; // Put 1st ascii byte in upper nibble. - *destTemp += BtoH(*srcptr++); // Add 2nd ascii byte to above. - destTemp++; - } -} - -/* - ======================================================================== - - Routine Description: - Init timer objects - - Arguments: - pAdapter Pointer to our adapter - pTimer Timer structure - pTimerFunc Function to execute when timer expired - Repeat Ture for period timer - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPInitTimer( - IN PRTMP_ADAPTER pAdapter, - IN PRALINK_TIMER_STRUCT pTimer, - IN PVOID pTimerFunc) -{ - pTimer->State = FALSE; - init_timer(&pTimer->TimerObj); - pTimer->TimerObj.data = (unsigned long)pAdapter; - pTimer->TimerObj.function = pTimerFunc; -} - -/* - ======================================================================== - - Routine Description: - Init timer objects - - Arguments: - pTimer Timer structure - Value Timer value in milliseconds - - Return Value: - None - - Note: - - ======================================================================== -*/ -VOID RTMPSetTimer( - IN PRTMP_ADAPTER pAdapter, - IN PRALINK_TIMER_STRUCT pTimer, - IN ULONG Value) -{ - pTimer->TimerValue = Value; - pTimer->State = FALSE; - pTimer->TimerObj.expires = jiffies + (Value * HZ)/1000; - add_timer(&pTimer->TimerObj); -} - -/* - ======================================================================== - - Routine Description: - Cancel timer objects - - Arguments: - Adapter Pointer to our adapter - - Return Value: - None - - Note: - Reset NIC to initial state AS IS system boot up time. - - ======================================================================== -*/ -VOID RTMPCancelTimer( - IN PRALINK_TIMER_STRUCT pTimer) -{ -#if 0 //(LINUX_VERSION_CODE > KERNEL_VERSION(2,4,27)) - del_timer_sync(&pTimer->TimerObj); -#else - del_timer(&pTimer->TimerObj); -#endif -} - +/*************************************************************************** + * RT2400/RT2500 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * + ***************************************************************************/ + + /*************************************************************************** + * Module Name: rtmp_init.c + * + * Abstract: + * + * Revision History: + * Who When What + * -------- ----------- ----------------------------- + * PaulL 1st Aug 02 Initial code + * MarkW 8th Dec 04 Baseline code + * MarkW (rt2400) 8th Dec 04 Promisc mode support + * MarkW 10th Dec 04 Rolled in Ralink 1.4.5.0 + * LuisCorreia 15th Feb 05 Added Yann's patch for radio hw + * MarkW 12th Jul 05 Disabled all but CAM Power modes + ***************************************************************************/ + +#include "rt_config.h" + +// +// BBP register initialization set +// +ULONG BBPRegTable[] = { + 0x00018302, // R03 + 0x00018419, // R04 + 0x00018E1C, // R14 + 0x00018F30, // R15 + 0x000190ac, // R16 + 0x00019148, // R17 + 0x00019218, // R18 + 0x000193ff, // R19 + 0x0001941E, // R20 + 0x00019508, // R21 + 0x00019608, // R22 + 0x00019708, // R23 + 0x00019870, // R24 + 0x00019940, // R25 + 0x00019A08, // R26 + 0x00019B23, // R27 + 0x00019E10, // R30 + 0x00019F2B, // R31 + 0x0001A0B9, // R32 + 0x0001A212, // R34 + 0x0001A350, // R35 + 0x0001A7c4, // R39 + 0x0001A802, // R40 + 0x0001A960, // R41 + 0x0001B510, // R53 + 0x0001B618, // R54 + 0x0001B808, // R56 + 0x0001B910, // R57 + 0x0001BA08, // R58 + 0x0001BD6d, // R61 + 0x0001BE10, // R62 +}; + +// +// MAC register initialization sets +// +RTMP_REG_PAIR MACRegTable[] = { + {PSCSR0, 0x00020002}, // 0xc8 + {PSCSR1, 0x00000002}, // 0xcc +// {PSCSR2, 0x00023f20}, // 0xd0 + {PSCSR2, 0x00020002}, // 0xd0 + {PSCSR3, 0x00000002}, // 0xd4 + {TIMECSR, 0x00003f21}, // 0xDC, to slower down our 1-us tick + {CSR9, 0x00000780}, // 0x24 + {CSR11, 0x07041483}, // 0x2C, lrc=7, src=4, slot=20us, CWmax=2^8, CWmax=2^3 + {CSR18, 0x00140000}, // SIFS=10us - TR switch time, PIFS=SIFS+20us + {CSR19, 0x016C0028}, // DIFS=SIFS+2*20us, EIFS=364us + {CNT3, 0x00000000}, // Backoff_CCA_Th, RX_&_TX_CCA_Th + + {TXCSR1, 0x07614562}, // 0x64, ACK as 1Mb time + {TXCSR8, 0x8c8d8b8a}, // 0x98, CCK TX BBP register ID + //{TXCSR9, 0x86870885}, // 0x94, OFDM TX BBP register ID + + {ARCSR1, 0x0000000f}, // 0x9c, Basic rate set bitmap + {PLCP1MCSR, 0x00700400}, // 0x13c, ACK/CTS PLCP at 1 Mbps + {PLCP2MCSR, 0x00380401}, // 0x140, ACK/CTS PLCP at 2 Mbps + {PLCP5MCSR, 0x00150402}, // 0x144, ACK/CTS PLCP at 5.5 Mbps + {PLCP11MCSR,0x000b8403}, // 0x148, ACK/CTS PLCP at 11 Mbps + + {ARTCSR0, 0x7038140a}, // 0x14c, ACK/CTS payload consumed time for 1/2/5.5/11 mbps + {ARTCSR1, 0x1d21252d}, // 0x150, alexsu : OFDM ACK/CTS payload consumed time for 18/12/9/6 mbps + {ARTCSR2, 0x1919191d}, // 0x154, alexsu : OFDM ACK/CTS payload consumed time for 54/48/36/24 mbps + + {RXCSR0, 0xffffffff}, // 0x80 + {RXCSR3, 0xb3aab3af}, // 0x90. RT2530 BBP 51:RSSI, R42:OFDM rate, R47:CCK SIGNAL + {PCICSR, 0x000003b8}, // 0x8c, alexsu : PCI control register + {PWRCSR0, 0x3f3b3100}, // 0xC4 + {GPIOCSR, 0x0000ff00}, // 0x120, GPIO default value + {TESTCSR, 0x000000f0}, // 0x138, Test CSR, make sure it's running at normal mode + {PWRCSR1, 0x000001ff}, // 0xd8 + {MACCSR0, 0x00213223}, // 0xE0, Enable Tx dribble mode - 2003/10/22:Gary + {MACCSR1, 0x00235518}, // 0xE4, Disable Rx Reset, tx dribble count, 2x30x16 = 960n, + {MACCSR2, 0x00000040}, // 0x0134, 64*33ns = 2us + {RALINKCSR, 0x9a009a11}, // 0xE8 + {CSR7, 0xffffffff}, // 0x1C, Clear all pending interrupt source + {LEDCSR, 0x00001E46}, // default both LEDs off + {BBPCSR1, 0x82188200}, // for 2560+2522 + {TXACKCSR0, 0x00000020}, // 0x110, TX ACK timeout in usec + {SECCSR3, 0x0000e78f}, // AES, mask off more data bit for MIC calculation +}; + +#define NUM_BBP_REG_PARMS (sizeof(BBPRegTable) / sizeof(ULONG)) +#define NUM_MAC_REG_PARMS (sizeof(MACRegTable) / sizeof(RTMP_REG_PAIR)) + +/* + ======================================================================== + + Routine Description: + Allocate all DMA releated resources + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +NDIS_STATUS RTMPAllocDMAMemory( + IN PRTMP_ADAPTER pAd) +{ + INT index; + VOID *ring; // VA of ring descriptor + VOID *ring_data; // VA of DMA data buffer + dma_addr_t ring_dma; // PA of ring descriptor + dma_addr_t ring_data_dma; // PA of DMA data buffer + PTXD_STRUC pTxD; // Tx type ring descriptor + PRXD_STRUC pRxD; // Rx type ring descriptor + + DBGPRINT(RT_DEBUG_INFO, "--> RTMPAllocDMAMemory\n"); + + // 1. Allocate Tx Ring DMA descriptor and buffer memory + // Allocate Ring descriptors DMA block + ring = pci_alloc_consistent(pAd->pPci_Dev, (TX_RING_SIZE * RING_DESCRIPTOR_SIZE), &ring_dma); + if (!ring) { + printk(KERN_ERR DRV_NAME "Could not allocate DMA ring descriptor memory.\n"); + goto err_out_allocate_txring; + } + + // Zero init ring descriptors + memset(ring, 0, (TX_RING_SIZE * RING_DESCRIPTOR_SIZE)); + + // Allocate Ring data DMA blocks + ring_data = pci_alloc_consistent(pAd->pPci_Dev, (TX_RING_SIZE * TX_BUFFER_SIZE), &ring_data_dma); + + // If failed, release ring descriptors DMA block & exit + if (!ring_data) { + pci_free_consistent(pAd->pPci_Dev, (TX_RING_SIZE * RING_DESCRIPTOR_SIZE), ring, ring_dma); + printk(KERN_ERR DRV_NAME "Could not allocate DMA ring buffer memory.\n"); + goto err_out_allocate_txring; + } + + // Start with Tx ring & DMA buffer + for (index = 0; index < TX_RING_SIZE; index++) + { + // Init Tx Ring Size, Va, Pa variables + pAd->TxRing[index].size = RING_DESCRIPTOR_SIZE; + pAd->TxRing[index].va_addr = ring; + pAd->TxRing[index].pa_addr = ring_dma; + ring += RING_DESCRIPTOR_SIZE; + ring_dma += RING_DESCRIPTOR_SIZE; + + // Init Tx DMA buffer + pAd->TxRing[index].data_size = TX_BUFFER_SIZE; + pAd->TxRing[index].va_data_addr = ring_data; + pAd->TxRing[index].pa_data_addr = ring_data_dma; + ring_data += TX_BUFFER_SIZE; + ring_data_dma += TX_BUFFER_SIZE; + + // Write TxD buffer address & allocated buffer length + pTxD = (PTXD_STRUC) pAd->TxRing[index].va_addr; +#ifndef BIG_ENDIAN + pTxD->BufferAddressPa = pAd->TxRing[index].pa_data_addr; +#else + pTxD->BufferAddressPa = SWAP32(pAd->TxRing[index].pa_data_addr); +#endif + + DBGPRINT(RT_DEBUG_INFO, "TxRing[%d] va = 0x%lu, pa = 0x%x, size = 0x%x\n", + index, (unsigned long)pAd->TxRing[index].va_addr, (UINT)pAd->TxRing[index].pa_addr, pAd->TxRing[index].size); + DBGPRINT(RT_DEBUG_INFO, "TxRing[%d] va_data = 0x%lu, pa_data = 0x%x, size = 0x%x\n", + index, (unsigned long)pAd->TxRing[index].va_data_addr, (UINT)pAd->TxRing[index].pa_data_addr, pAd->TxRing[index].data_size); + } + + // 2. Allocate Prio Ring DMA descriptor and buffer memory + // Allocate Ring descriptors DMA block + ring = pci_alloc_consistent(pAd->pPci_Dev, (PRIO_RING_SIZE * RING_DESCRIPTOR_SIZE), &ring_dma); + if (!ring) { + DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring descriptor memory.\n"); + goto err_out_allocate_prioring; + } + + // Zero init ring descriptors + memset(ring, 0, (PRIO_RING_SIZE * RING_DESCRIPTOR_SIZE)); + + // Allocate Ring data DMA blocks + ring_data = pci_alloc_consistent(pAd->pPci_Dev, (PRIO_RING_SIZE * PRIO_BUFFER_SIZE), &ring_data_dma); + + // If failed, release ring descriptors DMA block & exit + if (!ring_data) { + pci_free_consistent(pAd->pPci_Dev, (PRIO_RING_SIZE * RING_DESCRIPTOR_SIZE), ring, ring_dma); + DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring buffer memory.\n"); + goto err_out_allocate_prioring; + } + + // Second with Prio ring & DMA buffer + for (index = 0; index < PRIO_RING_SIZE; index++) + { + // Init Prio Ring Size, Va, Pa variables + pAd->PrioRing[index].size = RING_DESCRIPTOR_SIZE; + pAd->PrioRing[index].va_addr = ring; + pAd->PrioRing[index].pa_addr = ring_dma; + ring += RING_DESCRIPTOR_SIZE; + ring_dma += RING_DESCRIPTOR_SIZE; + + // Init Prio DMA buffer + pAd->PrioRing[index].data_size = PRIO_BUFFER_SIZE; + pAd->PrioRing[index].va_data_addr = ring_data; + pAd->PrioRing[index].pa_data_addr = ring_data_dma; + ring_data += PRIO_BUFFER_SIZE; + ring_data_dma += PRIO_BUFFER_SIZE; + + // Write TxD buffer address & allocated buffer length for priority ring + pTxD = (PTXD_STRUC) pAd->PrioRing[index].va_addr; +#ifndef BIG_ENDIAN + pTxD->BufferAddressPa = pAd->PrioRing[index].pa_data_addr; +#else + pTxD->BufferAddressPa = SWAP32(pAd->PrioRing[index].pa_data_addr); +#endif + + DBGPRINT(RT_DEBUG_INFO, "PrioRing[%d] va = 0x%lu, pa = 0x%x, size = 0x%x\n", + index, (unsigned long)pAd->PrioRing[index].va_addr, (UINT)pAd->PrioRing[index].pa_addr, pAd->PrioRing[index].size); + DBGPRINT(RT_DEBUG_INFO, "PrioRing[%d] va_data = 0x%lu, pa_data = 0x%x, size = 0x%x\n", + index, (unsigned long)pAd->PrioRing[index].va_data_addr, (UINT)pAd->PrioRing[index].pa_data_addr, pAd->PrioRing[index].data_size); + } + + // 3. Allocate Atim Ring DMA descriptor and buffer memory + // Allocate Ring descriptors DMA block + ring = pci_alloc_consistent(pAd->pPci_Dev, (ATIM_RING_SIZE * RING_DESCRIPTOR_SIZE), &ring_dma); + if (!ring) { + DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring descriptor memory.\n"); + goto err_out_allocate_atimring; + } + + // Zero init ring descriptors + memset(ring, 0, (ATIM_RING_SIZE * RING_DESCRIPTOR_SIZE)); + + // Allocate Ring data DMA blocks + ring_data = pci_alloc_consistent(pAd->pPci_Dev, (ATIM_RING_SIZE * ATIM_BUFFER_SIZE), &ring_data_dma); + + // If failed, release ring descriptors DMA block & exit + if (!ring_data) { + pci_free_consistent(pAd->pPci_Dev, (ATIM_RING_SIZE * RING_DESCRIPTOR_SIZE), ring, ring_dma); + DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring buffer memory.\n"); + goto err_out_allocate_atimring; + } + + // Atim ring & DMA buffer + for (index = 0; index < ATIM_RING_SIZE; index++) + { + // Init Atim Ring Size, Va, Pa variables + pAd->AtimRing[index].size = RING_DESCRIPTOR_SIZE; + pAd->AtimRing[index].va_addr = ring; + pAd->AtimRing[index].pa_addr = ring_dma; + ring += RING_DESCRIPTOR_SIZE; + ring_dma += RING_DESCRIPTOR_SIZE; + + // Init Atim DMA buffer + pAd->AtimRing[index].data_size = ATIM_BUFFER_SIZE; + pAd->AtimRing[index].va_data_addr = ring_data; + pAd->AtimRing[index].pa_data_addr = ring_data_dma; + ring_data += ATIM_BUFFER_SIZE; + ring_data_dma += ATIM_BUFFER_SIZE; + + // Write TxD buffer address & allocated buffer length + pTxD = (PTXD_STRUC) pAd->AtimRing[index].va_addr; +#ifndef BIG_ENDIAN + pTxD->BufferAddressPa = pAd->AtimRing[index].pa_data_addr; +#else + pTxD->BufferAddressPa = SWAP32(pAd->AtimRing[index].pa_data_addr); +#endif + + DBGPRINT(RT_DEBUG_INFO, "AtimRing[%d] va = 0x%lu, pa = 0x%x, size = 0x%x\n", + index, (unsigned long)pAd->AtimRing[index].va_addr, (UINT)pAd->AtimRing[index].pa_addr, pAd->AtimRing[index].size); + DBGPRINT(RT_DEBUG_INFO, "AtimRing[%d] va_data = 0x%lu, pa_data = 0x%x, size = 0x%x\n", + index, (unsigned long)pAd->AtimRing[index].va_data_addr, (UINT)pAd->AtimRing[index].pa_data_addr, pAd->AtimRing[index].data_size); + } + + // 4. Allocate Rx Ring DMA descriptor and buffer memory + // Allocate Ring descriptors DMA block + ring = pci_alloc_consistent(pAd->pPci_Dev, (RX_RING_SIZE * RING_DESCRIPTOR_SIZE), &ring_dma); + if (!ring) { + DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring descriptor memory.\n"); + goto err_out_allocate_rxring; + } + + // Zero init ring descriptors + memset(ring, 0, (RX_RING_SIZE * RING_DESCRIPTOR_SIZE)); + + // Allocate Ring data DMA blocks + ring_data = pci_alloc_consistent(pAd->pPci_Dev, (RX_RING_SIZE * RX_BUFFER_SIZE), &ring_data_dma); + + // If failed, release ring descriptors DMA block & exit + if (!ring_data) { + pci_free_consistent(pAd->pPci_Dev, (RX_RING_SIZE * RING_DESCRIPTOR_SIZE), ring, ring_dma); + DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring buffer memory.\n"); + goto err_out_allocate_rxring; + } + + // Rx ring & DMA buffer + for (index = 0; index < RX_RING_SIZE; index++) + { + // Init Rx Ring Size, Va, Pa variables + pAd->RxRing[index].size = RING_DESCRIPTOR_SIZE; + pAd->RxRing[index].va_addr = ring; + pAd->RxRing[index].pa_addr = ring_dma; + ring += RING_DESCRIPTOR_SIZE; + ring_dma += RING_DESCRIPTOR_SIZE; + + // Init Rx DMA buffer + pAd->RxRing[index].data_size = RX_BUFFER_SIZE; + pAd->RxRing[index].va_data_addr = ring_data; + pAd->RxRing[index].pa_data_addr = ring_data_dma; + ring_data += RX_BUFFER_SIZE; + ring_data_dma += RX_BUFFER_SIZE; + + // Write RxD buffer address & allocated buffer length + pRxD = (PRXD_STRUC) pAd->RxRing[index].va_addr; +#ifndef BIG_ENDIAN + pRxD->BufferAddressPa = pAd->RxRing[index].pa_data_addr; +#else + pRxD->BufferAddressPa = SWAP32(pAd->RxRing[index].pa_data_addr); +#endif + // Rx owner bit assign to NIC immediately + pRxD->Owner = DESC_OWN_NIC; + +#ifdef BIG_ENDIAN + RTMPDescriptorEndianChange((PUCHAR)pRxD, TYPE_RXD); +#endif + + DBGPRINT(RT_DEBUG_INFO, "RxRing[%d] va = 0x%lu, pa = 0x%x, size = 0x%x\n", + index, (unsigned long)pAd->RxRing[index].va_addr, (UINT)pAd->RxRing[index].pa_addr, pAd->RxRing[index].size); + DBGPRINT(RT_DEBUG_INFO, "RxRing[%d] va_data = 0x%lu, pa_data = 0x%x, size = 0x%x\n", + index, (unsigned long)pAd->RxRing[index].va_data_addr, (UINT)pAd->RxRing[index].pa_data_addr, pAd->RxRing[index].data_size); + } + + // 5. Allocate Beacon Ring DMA descriptor and buffer memory + // Init Beacon Ring Size, Va, Pa variables + ring = pci_alloc_consistent(pAd->pPci_Dev, RING_DESCRIPTOR_SIZE, &ring_dma); + if (!ring) { + DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring descriptor memory.\n"); + goto err_out_allocate_beaconring; + } + + // Zero init ring descriptors + memset(ring, 0, (RING_DESCRIPTOR_SIZE)); + + // Allocate Ring data DMA blocks + ring_data = pci_alloc_consistent(pAd->pPci_Dev, BEACON_BUFFER_SIZE, &ring_data_dma); + + // If failed, release ring descriptors DMA block & exit + if (!ring_data) { + pci_free_consistent(pAd->pPci_Dev, RING_DESCRIPTOR_SIZE, ring, ring_dma); + DBGPRINT(RT_DEBUG_ERROR, "Could not allocate DMA ring buffer memory.\n"); + goto err_out_allocate_beaconring; + } + + pAd->BeaconRing.size = RING_DESCRIPTOR_SIZE; + pAd->BeaconRing.va_addr = ring; + pAd->BeaconRing.pa_addr = ring_dma; + + // Init Beacon DMA buffer + pAd->BeaconRing.data_size = BEACON_BUFFER_SIZE; + pAd->BeaconRing.va_data_addr = ring_data; + pAd->BeaconRing.pa_data_addr = ring_data_dma; + + // Write RxD buffer address & allocated buffer length + pTxD = (PTXD_STRUC) pAd->BeaconRing.va_addr; +#ifndef BIG_ENDIAN + pTxD->BufferAddressPa = pAd->BeaconRing.pa_data_addr; +#else + pTxD->BufferAddressPa = SWAP32(pAd->BeaconRing.pa_data_addr); +#endif + + DBGPRINT(RT_DEBUG_INFO, "BeaconRing va = 0x%lu, pa = 0x%x, size = 0x%x\n", + (unsigned long)pAd->BeaconRing.va_addr, (UINT)pAd->BeaconRing.pa_addr, pAd->BeaconRing.size); + DBGPRINT(RT_DEBUG_INFO, "BeaconRing va_data = 0x%lu, pa_data = 0x%x, size = 0x%x\n", + (unsigned long)pAd->BeaconRing.va_data_addr, (UINT)pAd->BeaconRing.pa_data_addr, pAd->BeaconRing.data_size); + + DBGPRINT(RT_DEBUG_INFO, "<-- RTMPAllocDMAMemory\n"); + return NDIS_STATUS_SUCCESS; + + +err_out_allocate_beaconring: + // Free data DMA blocks first, the start address is the same as TxRing first DMA data block + pci_free_consistent(pAd->pPci_Dev, (RX_RING_SIZE * RX_BUFFER_SIZE), + pAd->RxRing[0].va_data_addr, pAd->RxRing[0].pa_data_addr); + // Free ring descriptor second, the start address is the same as TxRing first elment + pci_free_consistent(pAd->pPci_Dev, (RX_RING_SIZE * RING_DESCRIPTOR_SIZE), + pAd->RxRing[0].va_addr, pAd->RxRing[0].pa_addr); +err_out_allocate_rxring: + // Free data DMA blocks first, the start address is the same as TxRing first DMA data block + pci_free_consistent(pAd->pPci_Dev, (ATIM_RING_SIZE * ATIM_BUFFER_SIZE), + pAd->AtimRing[0].va_data_addr, pAd->AtimRing[0].pa_data_addr); + // Free ring descriptor second, the start address is the same as TxRing first elment + pci_free_consistent(pAd->pPci_Dev, (ATIM_RING_SIZE * RING_DESCRIPTOR_SIZE), + pAd->AtimRing[0].va_addr, pAd->AtimRing[0].pa_addr); +err_out_allocate_atimring: + // Free data DMA blocks first, the start address is the same as TxRing first DMA data block + pci_free_consistent(pAd->pPci_Dev, (PRIO_RING_SIZE * PRIO_BUFFER_SIZE), + pAd->PrioRing[0].va_data_addr, pAd->PrioRing[0].pa_data_addr); + // Free ring descriptor second, the start address is the same as TxRing first elment + pci_free_consistent(pAd->pPci_Dev, (PRIO_RING_SIZE * RING_DESCRIPTOR_SIZE), + pAd->PrioRing[0].va_addr, pAd->PrioRing[0].pa_addr); +err_out_allocate_prioring: + // Free data DMA blocks first, the start address is the same as TxRing first DMA data block + pci_free_consistent(pAd->pPci_Dev, (TX_RING_SIZE * TX_BUFFER_SIZE), + pAd->TxRing[0].va_data_addr, pAd->TxRing[0].pa_data_addr); + // Free ring descriptor second, the start address is the same as TxRing first elment + pci_free_consistent(pAd->pPci_Dev, (TX_RING_SIZE * RING_DESCRIPTOR_SIZE), + pAd->TxRing[0].va_addr, pAd->TxRing[0].pa_addr); +err_out_allocate_txring: + DBGPRINT(RT_DEBUG_ERROR, "<-- RTMPAllocDMAMemory (memory not allocate successfully!)\n"); + + return -ENOMEM; +} + +/* + ======================================================================== + + Routine Description: + Free all DMA memory. + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPFreeDMAMemory( + IN PRTMP_ADAPTER pAd) +{ + DBGPRINT(RT_DEBUG_INFO, "--> RTMPFreeDMAMemory\n"); + + // Free data DMA blocks first, the start address is the same as TxRing first DMA data block + pci_free_consistent(pAd->pPci_Dev, (TX_RING_SIZE * TX_BUFFER_SIZE), + pAd->TxRing[0].va_data_addr, pAd->TxRing[0].pa_data_addr); + // Free ring descriptor second, the start address is the same as TxRing first elment + pci_free_consistent(pAd->pPci_Dev, (TX_RING_SIZE * RING_DESCRIPTOR_SIZE), + pAd->TxRing[0].va_addr, pAd->TxRing[0].pa_addr); + + // Free data DMA blocks first, the start address is the same as TxRing first DMA data block + pci_free_consistent(pAd->pPci_Dev, (PRIO_RING_SIZE * PRIO_BUFFER_SIZE), + pAd->PrioRing[0].va_data_addr, pAd->PrioRing[0].pa_data_addr); + // Free ring descriptor second, the start address is the same as TxRing first elment + pci_free_consistent(pAd->pPci_Dev, (PRIO_RING_SIZE * RING_DESCRIPTOR_SIZE), + pAd->PrioRing[0].va_addr, pAd->PrioRing[0].pa_addr); + + // Free data DMA blocks first, the start address is the same as TxRing first DMA data block + pci_free_consistent(pAd->pPci_Dev, (ATIM_RING_SIZE * ATIM_BUFFER_SIZE), + pAd->AtimRing[0].va_data_addr, pAd->AtimRing[0].pa_data_addr); + // Free ring descriptor second, the start address is the same as TxRing first elment + pci_free_consistent(pAd->pPci_Dev, (ATIM_RING_SIZE * RING_DESCRIPTOR_SIZE), + pAd->AtimRing[0].va_addr, pAd->AtimRing[0].pa_addr); + + // Free data DMA blocks first, the start address is the same as TxRing first DMA data block + pci_free_consistent(pAd->pPci_Dev, (RX_RING_SIZE * RX_BUFFER_SIZE), + pAd->RxRing[0].va_data_addr, pAd->RxRing[0].pa_data_addr); + // Free ring descriptor second, the start address is the same as TxRing first elment + pci_free_consistent(pAd->pPci_Dev, (RX_RING_SIZE * RING_DESCRIPTOR_SIZE), + pAd->RxRing[0].va_addr, pAd->RxRing[0].pa_addr); + + // Free data DMA blocks first, the start address is the same as TxRing first DMA data block + pci_free_consistent(pAd->pPci_Dev, (BEACON_RING_SIZE * BEACON_BUFFER_SIZE), + pAd->BeaconRing.va_data_addr, pAd->BeaconRing.pa_data_addr); + // Free ring descriptor second, the start address is the same as TxRing first elment + pci_free_consistent(pAd->pPci_Dev, (BEACON_RING_SIZE * RING_DESCRIPTOR_SIZE), + pAd->BeaconRing.va_addr, pAd->BeaconRing.pa_addr); + +} + +/* + ======================================================================== + + Routine Description: + Initialize transmit data structures + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + Initialize all transmit releated private buffer, include those define + in RTMP_ADAPTER structure and all private data structures. + + ======================================================================== +*/ +VOID NICInitTransmit( + IN PRTMP_ADAPTER pAdapter) +{ + DBGPRINT(RT_DEBUG_TRACE, "--> NICInitTransmit\n"); + + // Initialize all Transmit releated queues + skb_queue_head_init(&pAdapter->TxSwQueue0); + skb_queue_head_init(&pAdapter->TxSwQueue1); + skb_queue_head_init(&pAdapter->TxSwQueue2); + skb_queue_head_init(&pAdapter->TxSwQueue3); + + // Init Ring index pointer + pAdapter->CurRxIndex = 0; + pAdapter->CurDecryptIndex = 0; + pAdapter->CurTxIndex = 0; + pAdapter->CurEncryptIndex = 0; + pAdapter->CurAtimIndex = 0; + pAdapter->CurPrioIndex = 0; + pAdapter->NextEncryptDoneIndex = 0; + pAdapter->NextTxDoneIndex = 0; + pAdapter->NextAtimDoneIndex = 0; + pAdapter->NextPrioDoneIndex = 0; + pAdapter->NextDecryptDoneIndex = 0; + pAdapter->PushMgmtIndex = 0; + pAdapter->PopMgmtIndex = 0; + pAdapter->MgmtQueueSize = 0; + + pAdapter->PrivateInfo.TxRingFullCnt = 0; + + DBGPRINT(RT_DEBUG_TRACE, "<-- NICInitTransmit\n"); +} + +/* + ======================================================================== + + Routine Description: + Read additional information from EEPROM, such as MAC address + + Arguments: + Adapter Pointer to our adapter + + Return Value: + NDIS_STATUS_SUCCESS + NDIS_STATUS_FAILURE + + Note: + + ======================================================================== +*/ +NDIS_STATUS NICReadAdapterInfo( + IN PRTMP_ADAPTER pAd) +{ + CSR3_STRUC StaMacReg0; + CSR4_STRUC StaMacReg1; + NDIS_STATUS Status = NDIS_STATUS_SUCCESS; + + // + // Read MAC address from CSR3 & CSR4, these CSRs reflects real value + // stored with EEPROM. + // + RTMP_IO_READ32(pAd, CSR3, &StaMacReg0.word); + RTMP_IO_READ32(pAd, CSR4, &StaMacReg1.word); + // Set Current address + pAd->CurrentAddress[0] = StaMacReg0.field.Byte0; + pAd->CurrentAddress[1] = StaMacReg0.field.Byte1; + pAd->CurrentAddress[2] = StaMacReg0.field.Byte2; + pAd->CurrentAddress[3] = StaMacReg0.field.Byte3; + pAd->CurrentAddress[4] = StaMacReg1.field.Byte4; + pAd->CurrentAddress[5] = StaMacReg1.field.Byte5; + pAd->PermanentAddress[0] = StaMacReg0.field.Byte0; + pAd->PermanentAddress[1] = StaMacReg0.field.Byte1; + pAd->PermanentAddress[2] = StaMacReg0.field.Byte2; + pAd->PermanentAddress[3] = StaMacReg0.field.Byte3; + pAd->PermanentAddress[4] = StaMacReg1.field.Byte4; + pAd->PermanentAddress[5] = StaMacReg1.field.Byte5; + + return Status; +} + +/* + ======================================================================== + + Routine Description: + Read initial parameters from EEPROM + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID NICReadEEPROMParameters( + IN PRTMP_ADAPTER pAdapter) +{ + ULONG data; + USHORT i, value; + UCHAR TmpPhy; + EEPROM_TX_PWR_STRUC Power; + EEPROM_VERSION_STRUC Version; + EEPROM_ANTENNA_STRUC Antenna; + + DBGPRINT(RT_DEBUG_TRACE, "--> NICReadEEPROMParameters\n"); + + // Init EEPROM Address Number, before access EEPROM; if 93c46, EEPROMAddressNum=6, else if 93c66, EEPROMAddressNum=8 + RTMP_IO_READ32(pAdapter, CSR21, &data); + + if(data & 0x20) + pAdapter->EEPROMAddressNum = 6; + else + pAdapter->EEPROMAddressNum = 8; + + // if E2PROM version mismatch with driver's expectation, then skip + // all subsequent E2RPOM retieval and set a system error bit to notify GUI + Version.word = RTMP_EEPROM_READ16(pAdapter, EEPROM_VERSION_OFFSET); + if (Version.field.Version != VALID_EEPROM_VERSION) + { + DBGPRINT(RT_DEBUG_ERROR, "WRONG E2PROM VERSION %d, should be %d\n",Version.field.Version, VALID_EEPROM_VERSION); + pAdapter->PortCfg.SystemErrorBitmap |= 0x00000001; + return; + } + + // Read BBP default value from EEPROM and store to array(EEPROMDefaultValue) in pAdapter + for(i = 0; i < NUM_EEPROM_BBP_PARMS; i++) + { + value = RTMP_EEPROM_READ16(pAdapter, EEPROM_BBP_BASE_OFFSET + i*2); + + pAdapter->EEPROMDefaultValue[i] = value; + } + +#if 1 + // We have to parse NIC configuration 0 at here. + // If TSSI did not have preloaded value, it should reset the TxAutoAgc to false + // Therefore, we have to read TxAutoAgc control beforehand. + // Read Tx AGC control bit + Antenna.word = pAdapter->EEPROMDefaultValue[0]; + if (Antenna.field.DynamicTxAgcControl == 1) + pAdapter->PortCfg.bAutoTxAgc = TRUE; + else + pAdapter->PortCfg.bAutoTxAgc = FALSE; + + // Read Tx power value for all 14 channels + // Value from 0 - 31. Default value is 24. + // Krellan: Log values read from EEPROM, to aid troubleshooting + printk(KERN_DEBUG DRV_NAME " EEPROM:"); + for (i = 0; i < NUM_EEPROM_TX_PARMS; i++) + { + printk("%3d%3d", (i * 2) + 1, (i * 2) + 2); + } + printk(" Channel\n"); + printk(KERN_DEBUG DRV_NAME " EEPROM:"); + for (i = 0; i < NUM_EEPROM_TX_PARMS; i++) + { + UCHAR by0; + UCHAR by1; + Power.word = RTMP_EEPROM_READ16(pAdapter, EEPROM_TX_PWR_OFFSET + i*2); + by0 = Power.field.Byte0; + by1 = Power.field.Byte1; + pAdapter->PortCfg.ChannelTxPower[i * 2] = ((by0 > 32) ? 24 : by0); + pAdapter->PortCfg.ChannelTxPower[i * 2 + 1] = ((by1 > 32) ? 24 : by1); + // Krellan: This is the theoretical max dBm value possible (raw + // power 31), which will most likely be a small positive number + // of dBm, since we scale a user setting of 0 dBm to correspond + // to exactly the recommended value from the EEPROM, a raw + // power value usually just a little bit under the max of 31. + printk("%3d%3d", 31 - ((int)by0), 31 - ((int)by1)); + } + printk(" dBm Maximum\n"); + + // Read Tx TSSI reference value, OK to reuse Power data structure + for (i = 0; i < NUM_EEPROM_TX_PARMS; i++) + { + Power.word = RTMP_EEPROM_READ16(pAdapter, EEPROM_TSSI_REF_OFFSET + i * 2); + pAdapter->PortCfg.ChannelTssiRef[i * 2] = Power.field.Byte0; + pAdapter->PortCfg.ChannelTssiRef[i * 2 + 1] = Power.field.Byte1; + // Disable TxAgc if the value is not right + if ((pAdapter->PortCfg.ChannelTssiRef[i * 2] == 0xff) || + (pAdapter->PortCfg.ChannelTssiRef[i * 2 + 1] == 0xff)) + pAdapter->PortCfg.bAutoTxAgc = FALSE; + } + + // Tx Tssi delta offset 0x24 + Power.word = RTMP_EEPROM_READ16(pAdapter, EEPROM_TSSI_DELTA_OFFSET); + pAdapter->PortCfg.ChannelTssiDelta = Power.field.Byte0; + +#endif + + //CountryRegion byte offset = 0x35 + value = pAdapter->EEPROMDefaultValue[2] >> 8; + if ((value <= 7)) + { + pAdapter->PortCfg.CountryRegion = (UCHAR) value; + TmpPhy = pAdapter->PortCfg.PhyMode; + pAdapter->PortCfg.PhyMode = 0xff; + RTMPSetPhyMode(pAdapter, TmpPhy); + } + + // Read new Calibrated CV value, reuse the power variable + Power.word = RTMP_EEPROM_READ16(pAdapter, EEPROM_CALIBRATE_OFFSET); + if (Power.field.Byte0 == 0xff) + { + //pAdapter->PortCfg.R17Dec = 0; + pAdapter->PortCfg.RssiToDbm = 0x79; + } + else + { + //pAdapter->PortCfg.R17Dec = 0x79 - Power.field.Byte0; + pAdapter->PortCfg.RssiToDbm = Power.field.Byte0; + } + + + DBGPRINT(RT_DEBUG_TRACE, "<-- NICReadEEPROMParameters\n"); +} + +/* + ======================================================================== + + Routine Description: + Set default value from EEPROM + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID NICInitAsicFromEEPROM( + IN PRTMP_ADAPTER pAdapter) +{ + ULONG data, BbpCsr1; + USHORT i, value; + UCHAR TxValue,RxValue; + EEPROM_ANTENNA_STRUC Antenna; + EEPROM_NIC_CONFIG2_STRUC NicConfig2; + + DBGPRINT(RT_DEBUG_TRACE, "--> NICInitAsicFromEEPROM\n"); + + for(i = 3; i < NUM_EEPROM_BBP_PARMS; i++) + { + value = pAdapter->EEPROMDefaultValue[i]; + + if((value != 0xFFFF) && (value != 0)) + { + data = value | 0x18000; + RTMP_BBP_IO_WRITE32(pAdapter, data); + } + } + + Antenna.word = pAdapter->EEPROMDefaultValue[0]; + DBGPRINT(RT_DEBUG_TRACE, "--> Antenna.word = 0x%x\n",pAdapter->EEPROMDefaultValue[0]); + + if ((Antenna.word == 0xFFFF) || (Antenna.field.TxDefaultAntenna > 2) || (Antenna.field.RxDefaultAntenna > 2)) + { + DBGPRINT(RT_DEBUG_TRACE, "E2PROM error(=0x%04x), hard code as 0x0002\n", Antenna.word); + Antenna.word = 0x0002; + } + + pAdapter->PortCfg.NumberOfAntenna = 2; // (UCHAR)Antenna.field.NumOfAntenna; + pAdapter->PortCfg.CurrentTxAntenna = (UCHAR)Antenna.field.TxDefaultAntenna; + pAdapter->PortCfg.CurrentRxAntenna = (UCHAR)Antenna.field.RxDefaultAntenna; + pAdapter->PortCfg.RfType = (UCHAR) Antenna.field.RfType; + + RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, BBP_Tx_Configure, &TxValue); + RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, BBP_Rx_Configure, &RxValue); + RTMP_IO_READ32(pAdapter, BBPCSR1, &BbpCsr1); + + // Tx antenna select + if(Antenna.field.TxDefaultAntenna == 1) // Antenna A + { + TxValue = (TxValue & 0xFC) | 0x00; + BbpCsr1 = (BbpCsr1 & 0xFFFCFFFC) | 0x00000000; + } + else if(Antenna.field.TxDefaultAntenna == 2) // Antenna B + { + TxValue = (TxValue & 0xFC) | 0x02; + BbpCsr1 = (BbpCsr1 & 0xFFFCFFFC) | 0x00020002; + } + else // diverity - start from Antenna B + { + TxValue = (TxValue & 0xFC) | 0x02; + BbpCsr1 = (BbpCsr1 & 0xFFFCFFFC) | 0x00020002; + } + + // Rx antenna select + if(Antenna.field.RxDefaultAntenna == 1) // Antenna A + RxValue = (RxValue & 0xFC) | 0x00; + else if(Antenna.field.RxDefaultAntenna == 2) // Antenna B + RxValue = (RxValue & 0xFC) | 0x02; + else // Antenna Diversity + RxValue = (RxValue & 0xFC) | 0x02; + + // RT5222 needs special treatment to swap TX I/Q + if (pAdapter->PortCfg.RfType == RFIC_5222) + { + BbpCsr1 |= 0x00040004; + TxValue |= 0x04; // TX I/Q flip + } + // RT2525E need to flip TX I/Q but not RX I/Q + else if (pAdapter->PortCfg.RfType == RFIC_2525E) + { + BbpCsr1 |= 0x00040004; + TxValue |= 0x04; // TX I/Q flip + RxValue &= 0xfb; // RX I/Q no flip + } + + // Change to match microsoft definition, 0xff: diversity, 0: A, 1: B + pAdapter->PortCfg.CurrentTxAntenna--; + pAdapter->PortCfg.CurrentRxAntenna--; + + RTMP_IO_WRITE32(pAdapter, BBPCSR1, BbpCsr1); + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, BBP_Tx_Configure, TxValue); + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, BBP_Rx_Configure, RxValue); + + // 2003-12-16 software-based RX antenna diversity + // pAdapter->PortCfg.CurrentRxAntenna = 0xff; // Diversity ON + AsicSetRxAnt(pAdapter); + + if (Antenna.field.LedMode == LED_MODE_TXRX_ACTIVITY) + pAdapter->PortCfg.LedMode = LED_MODE_TXRX_ACTIVITY; + else if (Antenna.field.LedMode == LED_MODE_SINGLE) + { + pAdapter->PortCfg.LedMode = LED_MODE_SINGLE; + ASIC_LED_ACT_ON(pAdapter); + } + else if (Antenna.field.LedMode == LED_MODE_ASUS) + { + pAdapter->PortCfg.LedMode = LED_MODE_ASUS; + RTMP_IO_WRITE32(pAdapter, LEDCSR, 0x0002461E); + } + else + pAdapter->PortCfg.LedMode = LED_MODE_DEFAULT; + + // Read Hardware controlled Radio state enable bit + if (0 && Antenna.field.HardwareRadioControl == 1) + { + pAdapter->PortCfg.bHardwareRadio = TRUE; + + // Read GPIO pin0 as Hardware controlled radio state + RTMP_IO_READ32(pAdapter, GPIOCSR, &data); + if ((data & 0x01) == 0) + { + pAdapter->PortCfg.bHwRadio = FALSE; + pAdapter->PortCfg.bRadio = FALSE; + RTMP_IO_WRITE32(pAdapter, PWRCSR0, 0x00000000); + RTMP_SET_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF); + if (pAdapter->PortCfg.LedMode == LED_MODE_ASUS) + { + // Turn bit 17 for Radio OFF + RTMP_IO_WRITE32(pAdapter, LEDCSR, 0x0000461E); + } + } + } + else + pAdapter->PortCfg.bHardwareRadio = FALSE; + + NicConfig2.word = pAdapter->EEPROMDefaultValue[1]; + if (NicConfig2.word == 0xffff) + NicConfig2.word = 0; // empty E2PROM, use default + + // for dynamic BBP R17:RX sensibility tuning + { + UCHAR r17; + RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, 17, &r17); + pAdapter->PortCfg.BbpTuningEnable = (NicConfig2.field.DynamicBbpTuning==0)? 1:0; + pAdapter->PortCfg.VgcLowerBound = r17; + + // 2004-3-4 per David's request, R7 starts at upper bound + pAdapter->PortCfg.BbpTuning.VgcUpperBound = BBP_R17_DYNAMIC_UP_BOUND; + r17 = pAdapter->PortCfg.BbpTuning.VgcUpperBound; + pAdapter->PortCfg.LastR17Value = r17; + RTMP_BBP_IO_WRITE32_BY_REG_ID(pAdapter, 17, r17); + + // 2004-2-2 per David's request, lower R17 low-bound for very good quality NIC + pAdapter->PortCfg.VgcLowerBound -= 6; + DBGPRINT(RT_DEBUG_TRACE,"R17 tuning enable=%d, R17=0x%02x, range=<0x%02x, 0x%02x>\n", + pAdapter->PortCfg.BbpTuningEnable, r17, pAdapter->PortCfg.VgcLowerBound, pAdapter->PortCfg.BbpTuning.VgcUpperBound); + } + + DBGPRINT(RT_DEBUG_TRACE, "RF IC=%d, LED mode=%d\n", pAdapter->PortCfg.RfType, pAdapter->PortCfg.LedMode); + + DBGPRINT(RT_DEBUG_TRACE, "<-- NICInitAsicFromEEPROM\n"); +} + +extern VOID MlmeWork(void *vpAd); + +void NICInitializeAdapter(IN PRTMP_ADAPTER pAdapter) +{ + TXCSR2_STRUC TxCSR2; + RXCSR1_STRUC RxCSR1; + ULONG Value; + + DBGPRINT(RT_DEBUG_TRACE, "--> NICInitializeAdapter\n"); + + // Init spin locks + spin_lock_init(&pAdapter->TxRingLock); + spin_lock_init(&pAdapter->PrioRingLock); + spin_lock_init(&pAdapter->AtimRingLock); + spin_lock_init(&pAdapter->RxRingLock); + spin_lock_init(&pAdapter->TxSwQueueLock); + spin_lock_init(&pAdapter->MemLock); + + // Write TXCSR2 register + TxCSR2.field.TxDSize = RING_DESCRIPTOR_SIZE; + TxCSR2.field.NumTxD = TX_RING_SIZE; + TxCSR2.field.NumAtimD = ATIM_RING_SIZE; + TxCSR2.field.NumPrioD = PRIO_RING_SIZE; + RTMP_IO_WRITE32(pAdapter, TXCSR2, TxCSR2.word); + + // Write TXCSR3 register + Value = pAdapter->TxRing[0].pa_addr; + RTMP_IO_WRITE32(pAdapter, TX_RING_BASE_REG, Value); + + // Write TXCSR4 register + Value = pAdapter->PrioRing[0].pa_addr; + RTMP_IO_WRITE32(pAdapter, PRIO_RING_BASE_REG, Value); + + // Write TXCSR5 register + Value = pAdapter->AtimRing[0].pa_addr; + RTMP_IO_WRITE32(pAdapter, ATIM_RING_BASE_REG, Value); + + // Write TXCSR6 register + Value = pAdapter->BeaconRing.pa_addr; + RTMP_IO_WRITE32(pAdapter, BEACON_BASE_REG, Value); + + // Write RXCSR1 register + RxCSR1.field.RxDSize = RING_DESCRIPTOR_SIZE; + RxCSR1.field.NumRxD = RX_RING_SIZE; + RTMP_IO_WRITE32(pAdapter, RXCSR1, RxCSR1.word); + + // Write RXCSR2 register + Value = pAdapter->RxRing[0].pa_addr; + RTMP_IO_WRITE32(pAdapter, RX_RING_BASE_REG, Value); + + // Write CSR1 for host ready + // Move Host reay to end of ASIC initialization + // to ensure no Rx will perform before ASIC init + // RTMP_IO_WRITE32(pAdapter, CSR1, 0x4); + + // Initialze ASIC for TX & Rx operation + NICInitializeAsic(pAdapter); + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) + INIT_WORK(&pAdapter->mlme_work, MlmeWork, (void*)pAdapter); +#endif + DBGPRINT(RT_DEBUG_TRACE, "<-- NICInitializeAdapter\n"); +} + +void NICInitializeAsic(IN PRTMP_ADAPTER pAdapter) +{ + ULONG Index; + UCHAR Value = 0xff; + + DBGPRINT(RT_DEBUG_TRACE, "--> NICInitializeAsic\n"); + + // Initialize MAC register to default value + for (Index = 0; Index < NUM_MAC_REG_PARMS; Index++) + { + RTMP_IO_WRITE32(pAdapter, MACRegTable[Index].Register, MACRegTable[Index].Value); + } + + // Set Host ready before kicking Rx + RTMP_IO_WRITE32(pAdapter, CSR1, 0x1); // reset MAC state machine, requested by Kevin 2003-2-11 + RTMP_IO_WRITE32(pAdapter, CSR1, 0x4); + + // Read BBP register, make sure BBP is up and running before write new data + Index = 0; + while (((Value == 0xff) || (Value == 0x00)) && Index < 10) + { + RTMP_BBP_IO_READ32_BY_REG_ID(pAdapter, BBP_Version, &Value); + mdelay(1); + Index++; + } + if(Index >= 10){ + DBGPRINT(RT_DEBUG_TRACE, "BBP register was never ready!\n"); + return; + } + + // Initialize BBP register to default value + for (Index = 0; Index < NUM_BBP_REG_PARMS; Index++) + { + RTMP_BBP_IO_WRITE32(pAdapter, BBPRegTable[Index]); + } + + // Initialize RF register to default value + AsicSwitchChannel(pAdapter, pAdapter->PortCfg.Channel); + AsicLockChannel(pAdapter, pAdapter->PortCfg.Channel); + + // Add radio off control + if (pAdapter->PortCfg.bRadio == FALSE) + { + RTMP_IO_WRITE32(pAdapter, PWRCSR0, 0x00000000); + RTMP_SET_FLAG(pAdapter, fRTMP_ADAPTER_RADIO_OFF); + } + + // Kick Rx + if (pAdapter->PortCfg.BssType == BSS_MONITOR) + { + // Register bits to receive everything + RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x46); + } + else if (pAdapter->bAcceptPromiscuous == TRUE) + { + // Register bits with "drop unicast not to me disabled" + RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x6e); + } + else + { + // Standard default register bits. + RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x7e); + } + + // Clear old FCS jitter before init ASIC + RTMP_IO_READ32(pAdapter, CNT0, &Index); + // Clear old Rx FIFO error jitter before init ASIC + RTMP_IO_READ32(pAdapter, CNT4, &Index); + + pAdapter->MediaState=NdisMediaStateDisconnected; + + DBGPRINT(RT_DEBUG_TRACE, "<-- NICInitializeAsic\n"); +} + +/* + ======================================================================== + + Routine Description: + Reset NIC Asics + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + Reset NIC to initial state AS IS system boot up time. + + ======================================================================== +*/ +VOID NICIssueReset( + IN PRTMP_ADAPTER pAdapter) +{ + CSR3_STRUC StaMacReg0; + CSR4_STRUC StaMacReg1; + + DBGPRINT(RT_DEBUG_TRACE, "--> NICIssueReset\n"); + + // Abort Tx, prevent ASIC from writing to Host memory + RTMP_IO_WRITE32(pAdapter, TXCSR0, 0x08); + + // Disable Rx, register value supposed will remain after reset + RTMP_IO_WRITE32(pAdapter, RXCSR0, 0x01); + + if (pAdapter->PortCfg.bLocalAdminMAC) + { + // Write Back Permanent MAC address to CSR3 & CSR4 + StaMacReg0.field.Byte0 = pAdapter->PermanentAddress[0]; + StaMacReg0.field.Byte1 = pAdapter->PermanentAddress[1]; + StaMacReg0.field.Byte2 = pAdapter->PermanentAddress[2]; + StaMacReg0.field.Byte3 = pAdapter->PermanentAddress[3]; + StaMacReg1.field.Byte4 = pAdapter->PermanentAddress[4]; + StaMacReg1.field.Byte5 = pAdapter->PermanentAddress[5]; + RTMP_IO_WRITE32(pAdapter, CSR3, StaMacReg0.word); + RTMP_IO_WRITE32(pAdapter, CSR4, StaMacReg1.word); + } + + // Issue reset and clear from reset state + RTMP_IO_WRITE32(pAdapter, CSR1, 0x01); + RTMP_IO_WRITE32(pAdapter, CSR1, 0x00); + + DBGPRINT(RT_DEBUG_TRACE, "<-- NICIssueReset\n"); +} + +/* + ======================================================================== + + Routine Description: + Check ASIC registers and find any reason the system might hang + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + + + ======================================================================== +*/ +BOOLEAN NICCheckForHang( + IN PRTMP_ADAPTER pAd) +{ + // garbage collection +// if ((pAd->RalinkCounters.EncryptCount - pAd->RalinkCounters.TxDoneCount) == TX_RING_SIZE) +// { +// DBGPRINT(RT_DEBUG_WARNING,"\nNICCheckForHang --- Garbage Collection!!!\n\n"); +// } + + { + RTMPHandleTxRingTxDoneInterrupt(pAd); + RTMPHandleEncryptionDoneInterrupt(pAd); + } + + return (FALSE); +} + +/* + ======================================================================== + + Routine Description: + Reset NIC from error + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + Reset NIC from error state + + ======================================================================== +*/ +VOID NICResetFromError( + IN PRTMP_ADAPTER pAdapter) +{ + // Reset BBP (according to alex, reset ASIC will force reset BBP + // Therefore, skip the reset BBP + // RTMP_IO_WRITE32(pAdapter, CSR1, 0x2); + // Release BBP reset + // RTMP_IO_WRITE32(pAdapter, CSR1, 0x0); + + RTMP_IO_WRITE32(pAdapter, CSR1, 0x1); + // Remove ASIC from reset state + RTMP_IO_WRITE32(pAdapter, CSR1, 0x0); + + // Init send data structures and related parameters + NICInitTransmit(pAdapter); + + NICInitializeAdapter(pAdapter); + NICInitAsicFromEEPROM(pAdapter); + + // Switch to current channel, since during reset process, the connection should remains on. + AsicSwitchChannel(pAdapter, pAdapter->PortCfg.Channel); + AsicLockChannel(pAdapter, pAdapter->PortCfg.Channel); +} +/* + ======================================================================== + + Routine Description: + Verify section is valid for Get key parameter. + + Arguments: + buffer Pointer to the buffer to start find the key section + ptr pointer to section + + Return Value: + TRUE Success + FALSE Fail + ======================================================================== +*/ +INT RTMPIsFindSection( + IN PUCHAR ptr, + IN PUCHAR buffer) +{ + if(ptr == buffer) + return TRUE; + else if (ptr > buffer) + { + while (ptr > buffer) + { + ptr--; + if( *ptr == 0x0a) + return TRUE; + else if( (*ptr == ' ') || (*ptr == '\t')) + continue; + else + return FALSE; + } + return TRUE; + } + + return FALSE; +} +/* + ======================================================================== + + Routine Description: + Find key section for Get key parameter. + + Arguments: + buffer Pointer to the buffer to start find the key section + section the key of the secion to be find + + Return Value: + NULL Fail + Others Success + ======================================================================== +*/ +PUCHAR RTMPFindSection( + IN PCHAR buffer, + IN PCHAR section) +{ + CHAR temp_buf[255]; + PUCHAR ptr; + + strcpy(temp_buf, "["); /* and the opening bracket [ */ + strcat(temp_buf, section); + strcat(temp_buf, "]"); + + if((ptr = rtstrstr(buffer, temp_buf)) != NULL) + { + if(RTMPIsFindSection(ptr, buffer)) + return (ptr+strlen("\n")); + else + return NULL; + } + else + return NULL; +} + /** + * strstr - Find the first substring in a %NUL terminated string + * @s1: The string to be searched + * @s2: The string to search for + */ +char * rtstrstr(const char * s1,const char * s2) +{ + int l1, l2; + + l2 = strlen(s2); + if (!l2) + return (char *) s1; + l1 = strlen(s1); + while (l1 >= l2) { + l1--; + if (!memcmp(s1,s2,l2)) + return (char *) s1; + s1++; + } + return NULL; +} +/* + ======================================================================== + + Routine Description: + Get key parameter. + + Arguments: + section the key of the secion + key Pointer to key string + dest Pointer to destination + destsize The datasize of the destination + buffer Pointer to the buffer to start find the key + + Return Value: + TRUE Success + FALSE Fail + + Note: + This routine get the value with the matched key (case case-sensitive) + ======================================================================== +*/ +INT RTMPGetKeyParameter( + IN PUCHAR section, + IN PCHAR key, + OUT PCHAR dest, + IN INT destsize, + IN PCHAR buffer) +{ + char *temp_buf1; + char *temp_buf2; + char *start_ptr; + char *end_ptr; + char *ptr; + char *too_far_ptr; + char *offset; + int len; + + temp_buf1 = kmalloc(600, GFP_KERNEL); + temp_buf2 = kmalloc(600, GFP_KERNEL); + + //find section + if((offset = RTMPFindSection(buffer, section)) == NULL) + return (FALSE); + + strcpy(temp_buf1, "\n"); + strcat(temp_buf1, key); + strcat(temp_buf1, "="); + + //search key + if((start_ptr=rtstrstr(offset, temp_buf1))==NULL) + goto fail; + + start_ptr+=strlen("\n"); + if((too_far_ptr=rtstrstr(offset+1, "["))==NULL) + too_far_ptr=offset+strlen(offset); + + if((end_ptr=rtstrstr(start_ptr, "\n"))==NULL) + end_ptr=start_ptr+strlen(start_ptr); + + if (too_far_ptr Error %ld opening %s\n", -PTR_ERR(srcf),src); + } + else + { + /* The object must have a read method */ + if (srcf->f_op && srcf->f_op->read) + { + memset(buffer, 0x00, MAX_INI_BUFFER_SIZE); + retval=srcf->f_op->read(srcf, buffer, MAX_INI_BUFFER_SIZE, &srcf->f_pos); + if (retval < 0) + { + DBGPRINT(RT_DEBUG_TRACE, "--> Read %s error %d\n", src, -retval); + } + else + { + // set file parameter to portcfg + //CountryRegion + if (RTMPGetKeyParameter("Default", "CountryRegion", tmpbuf, 255, buffer)) + { + ulInfo = simple_strtol(tmpbuf, 0, 10); + if ((ulInfo >= REGION_MIN) && (ulInfo <= REGION_MAX) ) + { + pAd->PortCfg.CountryRegion = (UCHAR) ulInfo; + DBGPRINT(RT_DEBUG_TRACE, "%s::(CountryRegion=%d)\n", __FUNCTION__, pAd->PortCfg.CountryRegion); + } + } + //SSID + memset(tmpbuf, 0x00, 255); + if (RTMPGetKeyParameter("Default", "SSID", tmpbuf, 32, buffer)) + { + pAd->PortCfg.SsidLen = (UCHAR) strlen(tmpbuf); + memcpy(pAd->PortCfg.Ssid, tmpbuf, pAd->PortCfg.SsidLen); + + pAd->Mlme.CntlAux.SsidLen = pAd->PortCfg.SsidLen; + memcpy(pAd->Mlme.CntlAux.Ssid, tmpbuf, pAd->Mlme.CntlAux.SsidLen); + + DBGPRINT(RT_DEBUG_TRACE, "%s::(SSID=%s Len=%d)\n", __FUNCTION__, tmpbuf, pAd->PortCfg.SsidLen); + } + //NetworkType + if (RTMPGetKeyParameter("Default", "NetworkType", tmpbuf, 255, buffer)) + { + pAd->bConfigChanged = TRUE; + if (strcmp(tmpbuf, "Adhoc") == 0) + pAd->PortCfg.BssType = BSS_INDEP; + else //Default Infrastructure mode + pAd->PortCfg.BssType = BSS_INFRA; + // Reset Ralink supplicant to not use, it will be set to start when UI set PMK key + pAd->PortCfg.WpaState = SS_NOTUSE; + DBGPRINT(RT_DEBUG_TRACE, "%s::(NetworkType=%d)\n", __FUNCTION__, pAd->PortCfg.BssType); + } + //WirelessMode + if (RTMPGetKeyParameter("Default", "WirelessMode", tmpbuf, 10, buffer)) + { + ulInfo = simple_strtol(tmpbuf, 0, 10); + if ((ulInfo == PHY_11BG_MIXED) || (ulInfo == PHY_11B) || + (ulInfo == PHY_11A) || (ulInfo == PHY_11ABG_MIXED)) + { + RTMPSetPhyMode(pAd, ulInfo); + DBGPRINT(RT_DEBUG_TRACE, "%s::(WirelessMode=%d)\n", __FUNCTION__, ulInfo); + } + } + //TxRate + if (RTMPGetKeyParameter("Default", "TxRate", tmpbuf, 10, buffer)) + { + ulInfo = simple_strtol(tmpbuf, 0, 10); + { + if (ulInfo == 0) + RTMPSetDesiredRates(pAd, -1); + else + RTMPSetDesiredRates(pAd, (LONG) (rate_mapping[ulInfo-1] * 1000000)); + + DBGPRINT(RT_DEBUG_TRACE, "%s::(TxRate=%d)\n", __FUNCTION__, ulInfo); + } + } + //Channel + if (RTMPGetKeyParameter("Default", "Channel", tmpbuf, 10, buffer)) + { + Channel = (UCHAR) simple_strtol(tmpbuf, 0, 10); + if (ChannelSanity(pAd, Channel) == TRUE) + { + pAd->PortCfg.Channel = Channel; + // If default profile in Registry is an ADHOC network, driver should use the specified channel + // number when starting IBSS the first time, because RaConfig is passive and will not set this + // via OID_802_11_CONFIGURATION upon driver bootup. + pAd->PortCfg.IbssConfig.Channel = pAd->PortCfg.Channel; + DBGPRINT(RT_DEBUG_TRACE, "%s::(Channel=%d)\n", __FUNCTION__, Channel); + } + } + //BGProtection + if (RTMPGetKeyParameter("Default", "BGProtection", tmpbuf, 10, buffer)) + { + switch (simple_strtol(tmpbuf, 0, 10)) + { + case 1: //Always On + pAd->PortCfg.UseBGProtection = 1; + break; + case 2: //Always OFF + pAd->PortCfg.UseBGProtection = 2; + break; + case 0: //AUTO + default: + pAd->PortCfg.UseBGProtection = 0; + break; + } + DBGPRINT(RT_DEBUG_TRACE, "%s::(BGProtection=%d)\n", __FUNCTION__, pAd->PortCfg.UseBGProtection); + } + //StaWithEtherBridge + if (RTMPGetKeyParameter("Default", "StaWithEtherBridge", tmpbuf, 10, buffer)) + { + switch (simple_strtol(tmpbuf, 0, 10)) + { + case 0: //Off + pAd->PortCfg.StaWithEtherBridge.Enable = FALSE; + break; + case 1: //On + pAd->PortCfg.StaWithEtherBridge.Enable = TRUE; + break; + default: + pAd->PortCfg.StaWithEtherBridge.Enable = FALSE; + break; + } + DBGPRINT(RT_DEBUG_TRACE, "%s::(StaWithEtherBridge=%d)\n", __FUNCTION__, pAd->PortCfg.StaWithEtherBridge.Enable); + } + //TxPreamble + if (RTMPGetKeyParameter("Default", "TxPreamble", tmpbuf, 10, buffer)) + { + Preamble = simple_strtol(tmpbuf, 0, 10); + switch (Preamble) + { + case Rt802_11PreambleShort: + pAd->PortCfg.WindowsTxPreamble = Preamble; + MlmeSetTxPreamble(pAd, Rt802_11PreambleShort); + break; + case Rt802_11PreambleLong: + case Rt802_11PreambleAuto: + default: + // if user wants AUTO, initialize to LONG here, then change according to AP's + // capability upon association. + pAd->PortCfg.WindowsTxPreamble = Preamble; + MlmeSetTxPreamble(pAd, Rt802_11PreambleLong); + } + DBGPRINT(RT_DEBUG_TRACE, "%s::(TxPreamble=%d)\n", __FUNCTION__, Preamble); + } + //RTSThreshold + if (RTMPGetKeyParameter("Default", "RTSThreshold", tmpbuf, 10, buffer)) + { + ulInfo = simple_strtol(tmpbuf, 0, 10); + + if((ulInfo > 0) && (ulInfo <= MAX_RTS_THRESHOLD)) + pAd->PortCfg.RtsThreshold = (USHORT)ulInfo; + else + pAd->PortCfg.RtsThreshold = MAX_RTS_THRESHOLD; + + DBGPRINT(RT_DEBUG_TRACE, "%s::(RTSThreshold=%d)\n", __FUNCTION__, pAd->PortCfg.RtsThreshold); + } + //FragThreshold + if (RTMPGetKeyParameter("Default", "FragThreshold", tmpbuf, 10, buffer)) + { + ulInfo = simple_strtol(tmpbuf, 0, 10); + + if ( (ulInfo >= MIN_FRAG_THRESHOLD) && (ulInfo <= MAX_FRAG_THRESHOLD)) + pAd->PortCfg.FragmentThreshold = (USHORT)ulInfo; + else + pAd->PortCfg.FragmentThreshold = MAX_FRAG_THRESHOLD; + + if (pAd->PortCfg.FragmentThreshold == MAX_FRAG_THRESHOLD) + pAd->PortCfg.bFragmentZeroDisable = TRUE; + else + pAd->PortCfg.bFragmentZeroDisable = FALSE; + + DBGPRINT(RT_DEBUG_TRACE, "%s::(FragThreshold=%d)\n", __FUNCTION__, ulInfo); + } + //AdhocOfdm + if (RTMPGetKeyParameter("Default", "AdhocOfdm", tmpbuf, 10, buffer)) + { + ulInfo = simple_strtol(tmpbuf, 0, 10); + + if (ulInfo == 1) + pAd->PortCfg.AdhocMode = 1; + else + pAd->PortCfg.AdhocMode = 0; + + DBGPRINT(RT_DEBUG_TRACE, "%s::(AdhocOfdm=%d)\n", __FUNCTION__, pAd->PortCfg.AdhocMode); + } + //TxBurst + if (RTMPGetKeyParameter("Default", "TxBurst", tmpbuf, 10, buffer)) + { + ulInfo = simple_strtol(tmpbuf, 0, 10); + + if (ulInfo == 1) + pAd->PortCfg.EnableTxBurst = TRUE; + else + pAd->PortCfg.EnableTxBurst = FALSE; + + DBGPRINT(RT_DEBUG_TRACE, "%s::(TxBurst=%d)\n", __FUNCTION__, pAd->PortCfg.EnableTxBurst); + } + //TurboRate + if (RTMPGetKeyParameter("Default", "TurboRate", tmpbuf, 10, buffer)) + { + ulInfo = simple_strtol(tmpbuf, 0, 10); + + if (ulInfo == 1) + pAd->PortCfg.EnableTurboRate = TRUE; + else + pAd->PortCfg.EnableTurboRate = FALSE; + + DBGPRINT(RT_DEBUG_TRACE, "%s::(TurboRate=%d)\n", __FUNCTION__, pAd->PortCfg.EnableTurboRate); + } + //ShortSlot + if (RTMPGetKeyParameter("Default", "ShortSlot", tmpbuf, 10, buffer)) + { + ulInfo = simple_strtol(tmpbuf, 0, 10); + + if (ulInfo == 1) + pAd->PortCfg.UseShortSlotTime = TRUE; + else + pAd->PortCfg.UseShortSlotTime = FALSE; + + DBGPRINT(RT_DEBUG_TRACE, "%s::(ShortSlot=%d)\n", __FUNCTION__, pAd->PortCfg.UseShortSlotTime); + } + //POWER_MODE + if (RTMPGetKeyParameter("Default", "PSMode", tmpbuf, 10, buffer)) + { + if (pAd->PortCfg.BssType == BSS_INFRA) + { + if ((strcmp(tmpbuf, "MAX_PSP") == 0) || (strcmp(tmpbuf, "max_psp") == 0)) + { + DBGPRINT(RT_DEBUG_INFO, "MAX_PSP power mode not available - defaulting to CAM\n"); + } + else if ((strcmp(tmpbuf, "Fast_PSP") == 0) || (strcmp(tmpbuf, "fast_psp") == 0) + || (strcmp(tmpbuf, "FAST_PSP") == 0)) + { + DBGPRINT(RT_DEBUG_INFO, "FAST_PSP power mode not available - defaulting to CAM\n"); + } + + //Default Ndis802_11PowerModeCAM + // clear PSM bit immediately + MlmeSetPsmBit(pAd, PWR_ACTIVE); + pAd->PortCfg.RecvDtim = TRUE; + if (pAd->PortCfg.WindowsACCAMEnable == FALSE) + pAd->PortCfg.WindowsPowerMode = Ndis802_11PowerModeCAM; + pAd->PortCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeCAM; + DBGPRINT(RT_DEBUG_TRACE, "%s::(PSMode=%d)\n", __FUNCTION__, pAd->PortCfg.WindowsPowerMode); + } + } + //AuthMode + if (RTMPGetKeyParameter("Default", "AuthMode", tmpbuf, 10, buffer)) + { + if ((strcmp(tmpbuf, "SHARED") == 0) || (strcmp(tmpbuf, "shared") == 0)) + pAd->PortCfg.AuthMode = Ndis802_11AuthModeShared; + else if ((strcmp(tmpbuf, "WPAPSK") == 0) || (strcmp(tmpbuf, "wpapsk") == 0)) + pAd->PortCfg.AuthMode = Ndis802_11AuthModeWPAPSK; + else if ((strcmp(tmpbuf, "AUTO") == 0) || (strcmp(tmpbuf, "auto") == 0)) + pAd->PortCfg.AuthMode = Ndis802_11AuthModeAutoSwitch; + else if ((strcmp(tmpbuf, "WPANONE") == 0) || (strcmp(tmpbuf, "wpanone") == 0)) + pAd->PortCfg.AuthMode = Ndis802_11AuthModeWPANone; + else + pAd->PortCfg.AuthMode = Ndis802_11AuthModeOpen; + + pAd->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED; + DBGPRINT(RT_DEBUG_TRACE, "%s::(AuthMode=%d)\n", __FUNCTION__, pAd->PortCfg.AuthMode); + } + //EncrypType + if (RTMPGetKeyParameter("Default", "EncrypType", tmpbuf, 10, buffer)) + { + if ((strcmp(tmpbuf, "WEP") == 0) || (strcmp(tmpbuf, "wep") == 0)) + pAd->PortCfg.WepStatus = Ndis802_11WEPEnabled; + else if ((strcmp(tmpbuf, "TKIP") == 0) || (strcmp(tmpbuf, "tkip") == 0)) + pAd->PortCfg.WepStatus = Ndis802_11Encryption2Enabled; + else if ((strcmp(tmpbuf, "AES") == 0) || (strcmp(tmpbuf, "aes") == 0)) + pAd->PortCfg.WepStatus = Ndis802_11Encryption3Enabled; + else + pAd->PortCfg.WepStatus = Ndis802_11WEPDisabled; + + DBGPRINT(RT_DEBUG_TRACE, "%s::(EncrypType=%d)\n", __FUNCTION__, pAd->PortCfg.WepStatus); + } + //WPAPSK_KEY + if (RTMPGetKeyParameter("Default", "WPAPSK", tmpbuf, 255, buffer)) + { + if ((strlen(tmpbuf) >= 8) && (strlen(tmpbuf) < 64)) + { + PasswordHash((char *)tmpbuf, pAd->PortCfg.Ssid, pAd->PortCfg.SsidLen, keyMaterial); + memcpy(pAd->PortCfg.PskKey.Key, keyMaterial, 32); + // Use RaConfig as PSK agent. + // Start STA supplicant state machine + pAd->PortCfg.WpaState = SS_START; +#if 0 + DBGPRINT(RT_DEBUG_TRACE, "%s WPAPSK Key => \n", __FUNCTION__); + for (i = 0; i < 32; i++) + { + DBGPRINT(RT_DEBUG_TRACE, "%02x:", pAd->PortCfg.PskKey.Key[i]); + if (i%16 == 15) + DBGPRINT(RT_DEBUG_TRACE, "\n"); + } + DBGPRINT(RT_DEBUG_TRACE, "\n"); +#endif + } + } + else if (strlen(tmpbuf) == 64) + { + AtoH(tmpbuf, pAd->PortCfg.PskKey.Key, 32); + pAd->PortCfg.WpaState = SS_START; + } + //DefaultKeyID + if (RTMPGetKeyParameter("Default", "DefaultKeyID", tmpbuf, 10, buffer)) + { + ulInfo = simple_strtol(tmpbuf, 0, 10); + if((ulInfo >= 1 ) && (ulInfo <= 4)) + pAd->PortCfg.DefaultKeyId = (UCHAR) (ulInfo - 1 ); + else + pAd->PortCfg.DefaultKeyId = 0; + + DBGPRINT(RT_DEBUG_TRACE, "%s::(DefaultKeyID=%d)\n", __FUNCTION__, pAd->PortCfg.DefaultKeyId); + } + //Key1Str + if (RTMPGetKeyParameter("Default", "Key1Str", tmpbuf, 26, buffer)) + { + KeyLen = strlen(tmpbuf); + switch (KeyLen) + { + case 0: + pAd->PortCfg.SharedKey[0].KeyLen = 0; + break; + case 5: //wep 40 Ascii type + pAd->PortCfg.SharedKey[0].KeyLen = KeyLen; + memcpy(pAd->PortCfg.SharedKey[0].Key, tmpbuf, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key1=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); + case 10: //wep 40 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(tmpbuf+i)) ) + { + bIsHex = FALSE; + break; + } + } + + if (bIsHex) + { + pAd->PortCfg.SharedKey[0].KeyLen = KeyLen / 2 ; + AtoH(tmpbuf, pAd->PortCfg.SharedKey[0].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key1=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); + } + break; + case 13: //wep 104 Ascii type + pAd->PortCfg.SharedKey[0].KeyLen = KeyLen; + memcpy(pAd->PortCfg.SharedKey[0].Key, tmpbuf, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key1=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); + break; + case 26: //wep 104 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(tmpbuf+i)) ) + { + bIsHex = FALSE; + break; + } + } + + if (bIsHex) + { + pAd->PortCfg.SharedKey[0].KeyLen = KeyLen / 2 ; + AtoH(tmpbuf, pAd->PortCfg.SharedKey[0].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key1=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); + } + break; + default: + pAd->PortCfg.SharedKey[0].KeyLen = 0; + DBGPRINT(RT_DEBUG_TRACE, "%s::Invalid Key (=%s)\n", __FUNCTION__, tmpbuf); + } + } + //Key2Str + if (RTMPGetKeyParameter("Default", "Key2Str", tmpbuf, 26, buffer)) + { + KeyLen = strlen(tmpbuf); + switch (KeyLen) + { + case 0: + pAd->PortCfg.SharedKey[1].KeyLen = 0; + break; + case 5: //wep 40 Ascii type + pAd->PortCfg.SharedKey[1].KeyLen = KeyLen; + memcpy(pAd->PortCfg.SharedKey[1].Key, tmpbuf, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key2=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); + case 10: //wep 40 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(tmpbuf+i)) ) + { + bIsHex = FALSE; + break; + } + } + + if (bIsHex) + { + pAd->PortCfg.SharedKey[1].KeyLen = KeyLen / 2 ; + AtoH(tmpbuf, pAd->PortCfg.SharedKey[1].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key2=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); + } + break; + case 13: //wep 104 Ascii type + pAd->PortCfg.SharedKey[1].KeyLen = KeyLen; + memcpy(pAd->PortCfg.SharedKey[1].Key, tmpbuf, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key2=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); + break; + case 26: //wep 104 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(tmpbuf+i)) ) + { + bIsHex = FALSE; + break; + } + } + + if (bIsHex) + { + pAd->PortCfg.SharedKey[1].KeyLen = KeyLen / 2 ; + AtoH(tmpbuf, pAd->PortCfg.SharedKey[1].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key2=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); + } + break; + default: + pAd->PortCfg.SharedKey[1].KeyLen = 0; + DBGPRINT(RT_DEBUG_TRACE, "%s::Invalid argument (=%s)\n", __FUNCTION__, tmpbuf); + } + } + //Key3Str + if (RTMPGetKeyParameter("Default", "Key3Str", tmpbuf, 26, buffer)) + { + KeyLen = strlen(tmpbuf); + switch (KeyLen) + { + case 0: + pAd->PortCfg.SharedKey[2].KeyLen = 0; + break; + case 5: //wep 40 Ascii type + pAd->PortCfg.SharedKey[2].KeyLen = KeyLen; + memcpy(pAd->PortCfg.SharedKey[2].Key, tmpbuf, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key3=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); + case 10: //wep 40 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(tmpbuf+i)) ) + { + bIsHex = FALSE; + break; + } + } + + if (bIsHex) + { + pAd->PortCfg.SharedKey[2].KeyLen = KeyLen / 2 ; + AtoH(tmpbuf, pAd->PortCfg.SharedKey[2].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key3=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); + } + break; + case 13: //wep 104 Ascii type + pAd->PortCfg.SharedKey[2].KeyLen = KeyLen; + memcpy(pAd->PortCfg.SharedKey[2].Key, tmpbuf, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key3=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); + break; + case 26: //wep 104 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(tmpbuf+i)) ) + { + bIsHex = FALSE; + break; + } + } + + if (bIsHex) + { + pAd->PortCfg.SharedKey[2].KeyLen = KeyLen / 2 ; + AtoH(tmpbuf, pAd->PortCfg.SharedKey[2].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key3=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); + } + break; + default: + pAd->PortCfg.SharedKey[2].KeyLen = 0; + DBGPRINT(RT_DEBUG_TRACE, "%s::Invalid argument (=%s)\n", __FUNCTION__, tmpbuf); + } + } + //Key4Str + if (RTMPGetKeyParameter("Default", "Key4Str", tmpbuf, 26, buffer)) + { + KeyLen = strlen(tmpbuf); + switch (KeyLen) + { + case 0: + pAd->PortCfg.SharedKey[3].KeyLen = 0; + break; + case 5: //wep 40 Ascii type + pAd->PortCfg.SharedKey[3].KeyLen = KeyLen; + memcpy(pAd->PortCfg.SharedKey[3].Key, tmpbuf, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key4=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); + case 10: //wep 40 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(tmpbuf+i)) ) + { + bIsHex = FALSE; + break; + } + } + + if (bIsHex) + { + pAd->PortCfg.SharedKey[3].KeyLen = KeyLen / 2 ; + AtoH(tmpbuf, pAd->PortCfg.SharedKey[3].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key4=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); + } + break; + case 13: //wep 104 Ascii type + pAd->PortCfg.SharedKey[3].KeyLen = KeyLen; + memcpy(pAd->PortCfg.SharedKey[3].Key, tmpbuf, KeyLen); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key4=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Ascii"); + break; + case 26: //wep 104 Hex type + for(i=0; i < KeyLen; i++) + { + if( !isxdigit(*(tmpbuf+i)) ) + { + bIsHex = FALSE; + break; + } + } + + if (bIsHex) + { + pAd->PortCfg.SharedKey[3].KeyLen = KeyLen / 2 ; + AtoH(tmpbuf, pAd->PortCfg.SharedKey[3].Key, KeyLen / 2); + DBGPRINT(RT_DEBUG_TRACE, "%s::(Key4=%s and type=%s)\n", __FUNCTION__, tmpbuf, "Hex"); + } + break; + default: + pAd->PortCfg.SharedKey[3].KeyLen = 0; + DBGPRINT(RT_DEBUG_TRACE, "%s::Invalid argument (=%s)\n", __FUNCTION__, tmpbuf); + } + } + } + } + else + { + DBGPRINT(RT_DEBUG_TRACE, "--> %s does not have a write method\n", src); + } + + retval=filp_close(srcf,NULL); + if (retval) + { + DBGPRINT(RT_DEBUG_TRACE, "--> Error %d closing %s\n", -retval, src); + } + } + } //if (src && *src) + + set_fs(orgfs); + current->fsuid = orgfsuid; + current->fsgid = orgfsgid; + kfree(buffer); +} +/* + ======================================================================== + + Routine Description: + Reset NIC Asics + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + Reset NIC to initial state AS IS system boot up time. + + ======================================================================== +*/ +VOID RTMPRingCleanUp( + IN PRTMP_ADAPTER pAdapter, + IN UCHAR RingType) +{ + ULONG Count; + PTXD_STRUC pTxD; + PRXD_STRUC pRxD; + PMGMT_STRUC pMgmt; + + Count = 0; + switch (RingType) + { + case TX_RING: + // We have to clean all descriptos in case some error happened with reset + do + { + pTxD = (PTXD_STRUC) pAdapter->TxRing[pAdapter->NextTxDoneIndex].va_addr; + + pTxD->Owner = DESC_OWN_HOST; + pTxD->Valid = FALSE; + + pAdapter->NextTxDoneIndex++; + Count++; + if (pAdapter->NextTxDoneIndex >= TX_RING_SIZE) + { + pAdapter->NextTxDoneIndex = 0; + } + + } while (Count < TX_RING_SIZE); // We have to scan all TX ring + + // Check for packet in send tx wait waiting queue + skb_queue_purge(&pAdapter->TxSwQueue0); + skb_queue_purge(&pAdapter->TxSwQueue1); + skb_queue_purge(&pAdapter->TxSwQueue2); + skb_queue_purge(&pAdapter->TxSwQueue3); + + case PRIO_RING: + // We have to clean all descriptos in case some error happened with reset + do + { + pTxD = (PTXD_STRUC) pAdapter->PrioRing[pAdapter->NextPrioDoneIndex].va_addr; + + // We just re-claim these ring spaces. + pTxD->Owner = DESC_OWN_HOST; + pTxD->Valid = FALSE; + + pAdapter->NextPrioDoneIndex++; + Count++; + if (pAdapter->NextPrioDoneIndex >= PRIO_RING_SIZE) + { + pAdapter->NextPrioDoneIndex = 0; + } + + } while (Count < PRIO_RING_SIZE); // We have to scan all Priority Ring + + // Clear managemt buffer ring + while ((pAdapter->PushMgmtIndex != pAdapter->PopMgmtIndex) || (pAdapter->MgmtQueueSize != 0)) + { + pMgmt = (PMGMT_STRUC) &pAdapter->MgmtRing[pAdapter->PopMgmtIndex]; + if (pMgmt->Valid == TRUE) + { + MlmeFreeMemory(pAdapter, pMgmt->pBuffer); + pMgmt->Valid = FALSE; + pAdapter->PopMgmtIndex++; + pAdapter->MgmtQueueSize--; + if (pAdapter->PopMgmtIndex >= MGMT_RING_SIZE) + { + pAdapter->PopMgmtIndex = 0; + } + } + } + pAdapter->RalinkCounters.MgmtRingFullCount = 0; + break; + + case RX_RING: + // We have to clean all descriptos in case some error happened with reset + do + { + pRxD = (PRXD_STRUC) pAdapter->RxRing[pAdapter->CurRxIndex].va_addr; + + // Re-initial Rx ring cell to owned by NIC. + pRxD->Owner = DESC_OWN_NIC; + + pAdapter->CurRxIndex++; + Count++; + if (pAdapter->CurRxIndex >= RX_RING_SIZE) + { + pAdapter->CurRxIndex = 0; + } + + } while (Count < RX_RING_SIZE); // We have to scan all Rx Ring + break; + + default: + break; + + } +} + +/* + ======================================================================== + + Routine Description: + Compare two memory block + + Arguments: + pSrc1 Pointer to first memory address + pSrc2 Pointer to second memory addres + + Return Value: + 0: memory is equal + 1: pSrc1 memory is larger + 2: pSrc2 memory is larger + + Note: + + ======================================================================== +*/ +ULONG RTMPCompareMemory( + IN PVOID pSrc1, + IN PVOID pSrc2, + IN ULONG Length) +{ + PUCHAR pMem1; + PUCHAR pMem2; + ULONG Index = 0; + + pMem1 = (PUCHAR) pSrc1; + pMem2 = (PUCHAR) pSrc2; + + for (Index = 0; Index < Length; Index++) + { + if (pMem1[Index] > pMem2[Index]) + return (1); + else if (pMem1[Index] < pMem2[Index]) + return (2); + } + + // Equal + return (0); +} + +/* + ======================================================================== + + Routine Description: + Initialize port configuration structure + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID PortCfgInit( + IN PRTMP_ADAPTER pAdapter) +{ + UINT i; + + DBGPRINT(RT_DEBUG_TRACE, "--> PortCfgInit\n"); + + pAdapter->PortCfg.UseBGProtection = 0; // 0: AUTO + + pAdapter->PortCfg.CapabilityInfo = 0x0000; + pAdapter->PortCfg.Psm = PWR_ACTIVE; + pAdapter->PortCfg.BeaconPeriod = 100; // in mSec + + pAdapter->PortCfg.CfpMaxDuration = 0; // never mind, decided by AP later + pAdapter->PortCfg.CfpDurRemain = 0; // never mind, decided by AP later + pAdapter->PortCfg.CfpCount = 0; // never mind, decided by AP later + pAdapter->PortCfg.CfpPeriod = 0; // never mind, decided by AP later + pAdapter->PortCfg.AuthMode = Ndis802_11AuthModeOpen; + + for(i = 0; i < SHARE_KEY_NO; i++) { + pAdapter->PortCfg.SharedKey[i].KeyLen = 0; + } + + for(i = 0; i < PAIRWISE_KEY_NO; i++) { + pAdapter->PortCfg.PairwiseKey[i].KeyLen = 0; + } + + for(i = 0; i < GROUP_KEY_NO; i++) { + pAdapter->PortCfg.GroupKey[i].KeyLen = 0; + } + + pAdapter->PortCfg.WepStatus = Ndis802_11EncryptionDisabled; + pAdapter->PortCfg.DefaultKeyId = 0; + pAdapter->PortCfg.PrivacyFilter = Ndis802_11PrivFilterAcceptAll; + + // 802.1x port control + pAdapter->PortCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED; + pAdapter->PortCfg.LastMicErrorTime = 0; + pAdapter->PortCfg.MicErrCnt = 0; + pAdapter->PortCfg.bBlockAssoc = FALSE; + pAdapter->PortCfg.WpaState = SS_NOTUSE; + + pAdapter->PortCfg.RtsThreshold = 2347; + pAdapter->PortCfg.FragmentThreshold = 2346; + pAdapter->PortCfg.bFragmentZeroDisable = FALSE; + + pAdapter->PortCfg.CurrentTxAntenna = 0xff; // diversity + pAdapter->PortCfg.CurrentRxAntenna = 0xff; // diversity + pAdapter->PortCfg.NumberOfAntenna = 2; + +// pAdapter->PortCfg.TxPowerLevel[0] = 100; +// pAdapter->PortCfg.NumOfTxPowerLevel = 1; + pAdapter->PortCfg.TxPower = 100; //mW + // Krellan: Init to automatic settings, starting at 0 dBm + pAdapter->PortCfg.TxPowerDriver = 0; + pAdapter->PortCfg.TxPowerUser = 0; + pAdapter->PortCfg.TxPowerAuto = TRUE; + + pAdapter->PortCfg.AntennaSupportTx = TRUE; + pAdapter->PortCfg.AntennaSupportRx = TRUE; + pAdapter->PortCfg.AntennaSupportDiversityRx = TRUE; + + pAdapter->PortCfg.RecvDtim = TRUE; + memset(&pAdapter->PortCfg.Bssid, 0, ETH_ALEN); + memset(&pAdapter->PortCfg.Broadcast, 0xff, ETH_ALEN); + pAdapter->PortCfg.Pss = PWR_ACTIVE; + pAdapter->PortCfg.RssiTrigger = 0; + pAdapter->PortCfg.LastRssi = 0; + pAdapter->PortCfg.LastAvgRssi = -95 + RSSI_TO_DBM_OFFSET;// default -95dm + pAdapter->PortCfg.AvgRssi = 0; + pAdapter->PortCfg.RssiTriggerMode = RSSI_TRIGGERED_UPON_BELOW_THRESHOLD; + pAdapter->PortCfg.AtimWin = 0; + pAdapter->PortCfg.Channel = 1; + + pAdapter->PortCfg.Aid = 1; + + pAdapter->PortCfg.DefaultListenCount = 3;//default listen count; + pAdapter->PortCfg.BssType = BSS_INFRA; // BSS_INFRA or BSS_INDEP + + pAdapter->PortCfg.AdhocMode = 0; + + pAdapter->PortCfg.SsidLen = 0; + memset(pAdapter->PortCfg.Ssid, 0, MAX_LEN_OF_SSID); // NOT NULL-terminated + + // global variables mXXXX used in MAC protocol state machines + pAdapter->PortCfg.Mibss = FALSE; + pAdapter->PortCfg.Massoc = FALSE; + pAdapter->PortCfg.Mauth = FALSE; + pAdapter->PortCfg.MallowRFMONTx = FALSE; + + // PHY specification + pAdapter->PortCfg.PhyMode = 0xff; +// RTMPSetPhyMode(pAdapter, PHY_11BG_MIXED); // default in 11BG mixed mode +// pAdapter->PortCfg.Channel = FirstChannel(pAdapter); + pAdapter->PortCfg.Dsifs = 10; // in units of usec + pAdapter->PortCfg.TxPreambleInUsed = Rt802_11PreambleLong; // use Long preamble on TX by defaut + + // user desired power mode + pAdapter->PortCfg.WindowsPowerMode = Ndis802_11PowerModeCAM; // Ndis802_11PowerModeFast_PSP; + pAdapter->PortCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeCAM; // Ndis802_11PowerModeFast_PSP; + pAdapter->PortCfg.WindowsTxPreamble = Rt802_11PreambleAuto; // use Long preamble on TX by defaut + pAdapter->PortCfg.WindowsACCAMEnable = FALSE; +// pAdapter->PortCfg.PacketFilter = NDIS_PACKET_TYPE_ALL_MULTICAST | NDIS_PACKET_TYPE_DIRECTED | NDIS_PACKET_TYPE_BROADCAST; + pAdapter->bAcceptDirect = TRUE; + pAdapter->bAcceptMulticast = FALSE; + pAdapter->bAcceptBroadcast = TRUE; + pAdapter->bAcceptAllMulticast = TRUE; + + // parameters to be used when this STA starts a new ADHOC network + pAdapter->PortCfg.IbssConfig.BeaconPeriod = 100; + pAdapter->PortCfg.IbssConfig.AtimWin = 0; + pAdapter->PortCfg.IbssConfig.Channel = 1; + pAdapter->PortCfg.RfType = RFIC_2525; + pAdapter->PortCfg.LedMode = LED_MODE_DEFAULT; + + pAdapter->PortCfg.IgnoredScanNumber = 0; + pAdapter->bTxBusy = FALSE; + + pAdapter->PortCfg.bHwRadio = TRUE; + pAdapter->PortCfg.bSwRadio = TRUE; + pAdapter->PortCfg.bRadio = TRUE; + pAdapter->PortCfg.bHardwareRadio = FALSE; // Default is OFF + pAdapter->PortCfg.bAutoTxAgc = FALSE; // Default is OFF + pAdapter->PortCfg.bShowHiddenSSID = FALSE; + + // Nitro mode control + pAdapter->PortCfg.EnableTxBurst = 0; + pAdapter->PortCfg.AutoReconnect = TRUE; + + // Save the init time as last scan time, the system should do scan after 2 seconds. + pAdapter->PortCfg.LastScanTime = 0; + + // Default Config change flag + pAdapter->bConfigChanged = FALSE; + + pAdapter->PortCfg.bLocalAdminMAC = TRUE; + + pAdapter->NeedSwapToLittleEndian = TRUE; + + // dynamic BBP R17:sensibity tuning to overcome background noise + pAdapter->PortCfg.BbpTuningEnable = TRUE; // overwritten by E2PROM setting + pAdapter->PortCfg.VgcLowerBound = 0x38; // overwritten by E2PROM setting + pAdapter->PortCfg.BbpTuning.FalseCcaLowerThreshold = 100; + pAdapter->PortCfg.BbpTuning.FalseCcaUpperThreshold = 4; // unit 128, 4*128 = 512 + pAdapter->PortCfg.BbpTuning.VgcDelta = 1; + pAdapter->PortCfg.BbpTuning.VgcUpperBound = BBP_R17_DYNAMIC_UP_BOUND; + + pAdapter->PortCfg.StaWithEtherBridge.Enable = FALSE; + memset(&pAdapter->PortCfg.StaWithEtherBridge.EtherMacAddr, 0xff, ETH_ALEN); + +#ifdef RALINK_ATE + memset(&pAdapter->ate, 0, sizeof(ATE_INFO)); + pAdapter->ate.Mode = ATE_STASTART; + pAdapter->ate.TxCount = TX_RING_SIZE; + pAdapter->ate.TxLength = PRIO_BUFFER_SIZE; + pAdapter->ate.TxRate = RATE_11; + pAdapter->ate.Channel = 1; + memcpy(&pAdapter->ate.Addr1,"001122334455", ETH_ALEN); + memcpy(&pAdapter->ate.Addr2,"001122334455", ETH_ALEN); + memcpy(&pAdapter->ate.Addr3,"001122334455", ETH_ALEN); +#endif //#ifdef RALINK_ATE + + RTMP_IO_READ32(pAdapter, 0, &pAdapter->PortCfg.Rt2560Version); + + DBGPRINT(RT_DEBUG_TRACE, "<-- PortCfgInit\n"); +} + +UCHAR BtoH(char ch) +{ + if (ch >= '0' && ch <= '9') return (ch - '0'); // Handle numerals + if (ch >= 'A' && ch <= 'F') return (ch - 'A' + 0xA); // Handle capitol hex digits + if (ch >= 'a' && ch <= 'f') return (ch - 'a' + 0xA); // Handle small hex digits + return(255); +} + +// +// FUNCTION: AtoH(char *, UCHAR *, int) +// +// PURPOSE: Converts ascii string to network order hex +// +// PARAMETERS: +// src - pointer to input ascii string +// dest - pointer to output hex +// destlen - size of dest +// +// COMMENTS: +// +// 2 ascii bytes make a hex byte so must put 1st ascii byte of pair +// into upper nibble and 2nd ascii byte of pair into lower nibble. +// + +void AtoH(char * src, UCHAR * dest, int destlen) +{ + char *srcptr; + PUCHAR destTemp; + + srcptr = src; + destTemp = (PUCHAR) dest; + + while(destlen--) + { + *destTemp = BtoH(*srcptr++) << 4; // Put 1st ascii byte in upper nibble. + *destTemp += BtoH(*srcptr++); // Add 2nd ascii byte to above. + destTemp++; + } +} + +/* + ======================================================================== + + Routine Description: + Init timer objects + + Arguments: + pAdapter Pointer to our adapter + pTimer Timer structure + pTimerFunc Function to execute when timer expired + Repeat Ture for period timer + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPInitTimer( + IN PRTMP_ADAPTER pAdapter, + IN PRALINK_TIMER_STRUCT pTimer, + IN PVOID pTimerFunc) +{ + pTimer->State = FALSE; + init_timer(&pTimer->TimerObj); + pTimer->TimerObj.data = (unsigned long)pAdapter; + pTimer->TimerObj.function = pTimerFunc; +} + +/* + ======================================================================== + + Routine Description: + Init timer objects + + Arguments: + pTimer Timer structure + Value Timer value in milliseconds + + Return Value: + None + + Note: + + ======================================================================== +*/ +VOID RTMPSetTimer( + IN PRTMP_ADAPTER pAdapter, + IN PRALINK_TIMER_STRUCT pTimer, + IN ULONG Value) +{ + pTimer->TimerValue = Value; + pTimer->State = FALSE; + pTimer->TimerObj.expires = jiffies + (Value * HZ)/1000; + add_timer(&pTimer->TimerObj); +} + +/* + ======================================================================== + + Routine Description: + Cancel timer objects + + Arguments: + Adapter Pointer to our adapter + + Return Value: + None + + Note: + Reset NIC to initial state AS IS system boot up time. + + ======================================================================== +*/ +VOID RTMPCancelTimer( + IN PRALINK_TIMER_STRUCT pTimer) +{ +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,27)) + del_timer_sync(&pTimer->TimerObj); +#else + del_timer(&pTimer->TimerObj); +#endif +} + --- linux-source-2.6.15-2.6.15.orig/drivers/net/wireless/prism54/islpci_hotplug.c +++ linux-source-2.6.15-2.6.15/drivers/net/wireless/prism54/islpci_hotplug.c @@ -52,13 +52,11 @@ /* 3COM 3CRWE154G72 Wireless LAN adapter */ /* disabled, use new driver! */ -#if 0 { 0x10b7, 0x6001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, -#endif /* Intersil PRISM Indigo Wireless LAN adapter */ { --- linux-source-2.6.15-2.6.15.orig/drivers/net/ppp_async.c +++ linux-source-2.6.15-2.6.15/drivers/net/ppp_async.c @@ -157,6 +157,9 @@ struct asyncppp *ap; int err; + if (!tty->driver->write) + return -EOPNOTSUPP; + err = -ENOMEM; ap = kmalloc(sizeof(*ap), GFP_KERNEL); if (ap == 0) --- linux-source-2.6.15-2.6.15.orig/drivers/net/hamradio/6pack.c +++ linux-source-2.6.15-2.6.15/drivers/net/hamradio/6pack.c @@ -607,6 +607,8 @@ if (!capable(CAP_NET_ADMIN)) return -EPERM; + if (!tty->driver->write) + return -EOPNOTSUPP; dev = alloc_netdev(sizeof(struct sixpack), "sp%d", sp_setup); if (!dev) { --- linux-source-2.6.15-2.6.15.orig/drivers/net/hamradio/mkiss.c +++ linux-source-2.6.15-2.6.15/drivers/net/hamradio/mkiss.c @@ -531,6 +531,7 @@ static int ax_xmit(struct sk_buff *skb, struct net_device *dev) { struct mkiss *ax = netdev_priv(dev); + int cib = 0; if (!netif_running(dev)) { printk(KERN_ERR "mkiss: %s: xmit call when iface is down\n", dev->name); @@ -546,10 +547,11 @@ /* 20 sec timeout not reached */ return 1; } + if (ax->tty->driver->chars_in_buffer) + cib = ax->tty->driver->chars_in_buffer(ax->tty); printk(KERN_ERR "mkiss: %s: transmit timed out, %s?\n", dev->name, - (ax->tty->driver->chars_in_buffer(ax->tty) || ax->xleft) ? - "bad line quality" : "driver error"); + cib || ax->xleft ? "bad line quality" : "driver error"); ax->xleft = 0; clear_bit(TTY_DO_WRITE_WAKEUP, &ax->tty->flags); @@ -737,6 +739,8 @@ if (!capable(CAP_NET_ADMIN)) return -EPERM; + if (!tty->driver->write) + return -EOPNOTSUPP; dev = alloc_netdev(sizeof(struct mkiss), "ax%d", ax_setup); if (!dev) { --- linux-source-2.6.15-2.6.15.orig/drivers/net/tulip/tulip_core.c +++ linux-source-2.6.15-2.6.15/drivers/net/tulip/tulip_core.c @@ -223,8 +223,13 @@ { 0x1259, 0xa120, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, { 0x11F6, 0x9881, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMPEX9881 }, { 0x8086, 0x0039, PCI_ANY_ID, PCI_ANY_ID, 0, 0, I21145 }, + /* dmfe module seems to handle these better. See: + * https://launchpad.net/bugs/48287 + * XXX: Only on non-sparc. FIX THIS IN EDGY */ +#ifdef __sparc__ { 0x1282, 0x9100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DM910X }, { 0x1282, 0x9102, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DM910X }, +#endif { 0x1113, 0x1216, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, { 0x1113, 0x1217, PCI_ANY_ID, PCI_ANY_ID, 0, 0, MX98715 }, { 0x1113, 0x9511, PCI_ANY_ID, PCI_ANY_ID, 0, 0, COMET }, --- linux-source-2.6.15-2.6.15.orig/drivers/net/pcmcia/com20020_cs.c +++ linux-source-2.6.15-2.6.15/drivers/net/pcmcia/com20020_cs.c @@ -479,6 +479,7 @@ static struct pcmcia_device_id com20020_ids[] = { PCMCIA_DEVICE_PROD_ID12("Contemporary Control Systems, Inc.", "PCM20 Arcnet Adapter", 0x59991666, 0x95dfffaf), + PCMCIA_DEVICE_PROD_ID12("SoHar AG", "SH ARC PCMCIA", 0xf8991729, 0x69dff0c7), PCMCIA_DEVICE_NULL }; MODULE_DEVICE_TABLE(pcmcia, com20020_ids); --- linux-source-2.6.15-2.6.15.orig/drivers/net/sundance.c +++ linux-source-2.6.15-2.6.15/drivers/net/sundance.c @@ -287,6 +287,7 @@ {0x1186, 0x1002, 0x1186, 0x1040, 0, 0, 3}, {0x1186, 0x1002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4}, {0x13F0, 0x0201, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 5}, + {0x13F0, 0x0200, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 6}, {0,} }; MODULE_DEVICE_TABLE(pci, sundance_pci_tbl); @@ -305,6 +306,7 @@ {"D-Link DFE-530TXS FAST Ethernet Adapter"}, {"D-Link DL10050-based FAST Ethernet Adapter"}, {"Sundance Technology Alta"}, + {"IC Plus Corporation IP100A FAST Ethernet Adapter"}, {NULL,}, /* 0 terminated list. */ }; --- linux-source-2.6.15-2.6.15.orig/drivers/net/wan/x25_asy.c +++ linux-source-2.6.15-2.6.15/drivers/net/wan/x25_asy.c @@ -283,6 +283,10 @@ static void x25_asy_timeout(struct net_device *dev) { struct x25_asy *sl = (struct x25_asy*)(dev->priv); + int cib = 0; + + if (sl->tty->driver->chars_in_buffer) + cib = sl->tty->driver->chars_in_buffer(sl->tty); spin_lock(&sl->lock); if (netif_queue_stopped(dev)) { @@ -290,8 +294,7 @@ * 14 Oct 1994 Dmitry Gorodchanin. */ printk(KERN_WARNING "%s: transmit timed out, %s?\n", dev->name, - (sl->tty->driver->chars_in_buffer(sl->tty) || sl->xleft) ? - "bad line quality" : "driver error"); + (cib || sl->xleft) ? "bad line quality" : "driver error"); sl->xleft = 0; sl->tty->flags &= ~(1 << TTY_DO_WRITE_WAKEUP); x25_asy_unlock(sl); @@ -566,6 +569,9 @@ return -EEXIST; } + if (!tty->driver->write) + return -EOPNOTSUPP; + /* OK. Find a free X.25 channel to use. */ if ((sl = x25_asy_alloc()) == NULL) { return -ENFILE; --- linux-source-2.6.15-2.6.15.orig/drivers/char/random.c +++ linux-source-2.6.15-2.6.15/drivers/char/random.c @@ -691,9 +691,14 @@ if (r->pull && r->entropy_count < nbytes * 8 && r->entropy_count < r->poolinfo->POOLBITS) { - int bytes = max_t(int, random_read_wakeup_thresh / 8, - min_t(int, nbytes, sizeof(tmp))); + /* If we're limited, always leave two wakeup worth's BITS */ int rsvd = r->limit ? 0 : random_read_wakeup_thresh/4; + int bytes = nbytes; + + /* pull at least as many as BYTES as wakeup BITS */ + bytes = max_t(int, bytes, random_read_wakeup_thresh / 8); + /* but never more than the buffer size */ + bytes = min_t(int, bytes, sizeof(tmp)); DEBUG_ENT("going to reseed %s with %d bits " "(%d of %d requested)\n", @@ -758,7 +763,7 @@ static void extract_buf(struct entropy_store *r, __u8 *out) { - int i, x; + int i; __u32 data[16], buf[5 + SHA_WORKSPACE_WORDS]; sha_init(buf); @@ -770,9 +775,11 @@ * attempts to find previous ouputs), unless the hash * function can be inverted. */ - for (i = 0, x = 0; i < r->poolinfo->poolwords; i += 16, x+=2) { - sha_transform(buf, (__u8 *)r->pool+i, buf + 5); - add_entropy_words(r, &buf[x % 5], 1); + for (i = 0; i < r->poolinfo->poolwords; i += 16) { + /* hash blocks of 16 words = 512 bits */ + sha_transform(buf, (__u8 *)(r->pool + i), buf + 5); + /* feed back portion of the resulting hash */ + add_entropy_words(r, &buf[i % 5], 1); } /* @@ -780,7 +787,7 @@ * portion of the pool while mixing, and hash one * final time. */ - __add_entropy_words(r, &buf[x % 5], 1, data); + __add_entropy_words(r, &buf[i % 5], 1, data); sha_transform(buf, (__u8 *)data, buf + 5); /* @@ -1018,37 +1025,44 @@ return mask; } -static ssize_t -random_write(struct file * file, const char __user * buffer, - size_t count, loff_t *ppos) +static int +write_pool(struct entropy_store *r, const char __user *buffer, size_t count) { - int ret = 0; size_t bytes; __u32 buf[16]; const char __user *p = buffer; - size_t c = count; - while (c > 0) { - bytes = min(c, sizeof(buf)); + while (count > 0) { + bytes = min(count, sizeof(buf)); + if (copy_from_user(&buf, p, bytes)) + return -EFAULT; - bytes -= copy_from_user(&buf, p, bytes); - if (!bytes) { - ret = -EFAULT; - break; - } - c -= bytes; + count -= bytes; p += bytes; - add_entropy_words(&input_pool, buf, (bytes + 3) / 4); - } - if (p == buffer) { - return (ssize_t)ret; - } else { - struct inode *inode = file->f_dentry->d_inode; - inode->i_mtime = current_fs_time(inode->i_sb); - mark_inode_dirty(inode); - return (ssize_t)(p - buffer); + add_entropy_words(r, buf, (bytes + 3) / 4); } + + return 0; +} + +static ssize_t +random_write(struct file * file, const char __user * buffer, + size_t count, loff_t *ppos) +{ + size_t ret; + struct inode *inode = file->f_dentry->d_inode; + + ret = write_pool(&blocking_pool, buffer, count); + if (ret) + return ret; + ret = write_pool(&nonblocking_pool, buffer, count); + if (ret) + return ret; + + inode->i_mtime = current_fs_time(inode->i_sb); + mark_inode_dirty(inode); + return (ssize_t)count; } static int @@ -1087,8 +1101,8 @@ return -EINVAL; if (get_user(size, p++)) return -EFAULT; - retval = random_write(file, (const char __user *) p, - size, &file->f_pos); + retval = write_pool(&input_pool, (const char __user *)p, + size); if (retval < 0) return retval; credit_entropy_store(&input_pool, ent_count); --- linux-source-2.6.15-2.6.15.orig/drivers/char/agp/via-agp.c +++ linux-source-2.6.15-2.6.15/drivers/char/agp/via-agp.c @@ -376,7 +376,11 @@ .device_id = PCI_DEVICE_ID_VIA_P4M800CE, .chipset_name = "P4M800CE", }, - + /* PT880ULTRA */ + { + .device_id = PCI_DEVICE_ID_VIA_PT880ULTRA, + .chipset_name = "PT880ULTRA", + }, { }, /* dummy final entry, always present */ }; --- linux-source-2.6.15-2.6.15.orig/drivers/char/moxa.c +++ linux-source-2.6.15-2.6.15/drivers/char/moxa.c @@ -1668,7 +1668,7 @@ if(copy_from_user(&dltmp, argp, sizeof(struct dl_str))) return -EFAULT; - if(dltmp.cardno < 0 || dltmp.cardno >= MAX_BOARDS) + if(dltmp.cardno < 0 || dltmp.cardno >= MAX_BOARDS || dltmp.len < 0) return -EINVAL; switch(cmd) @@ -2777,6 +2777,8 @@ void __iomem *baseAddr; int i; + if(len < 0 || len > sizeof(moxaBuff)) + return -EINVAL; if(copy_from_user(moxaBuff, tmp, len)) return -EFAULT; baseAddr = moxaBaseAddr[cardno]; @@ -2824,7 +2826,7 @@ void __iomem *baseAddr; int i; - if(len > sizeof(moxaBuff)) + if(len < 0 || len > sizeof(moxaBuff)) return -EINVAL; if(copy_from_user(moxaBuff, tmp, len)) return -EFAULT; @@ -2844,6 +2846,8 @@ void __iomem *baseAddr, *ofsAddr; int retval, port, i; + if(len < 0 || len > sizeof(moxaBuff)) + return -EINVAL; if(copy_from_user(moxaBuff, tmp, len)) return -EFAULT; baseAddr = moxaBaseAddr[cardno]; --- linux-source-2.6.15-2.6.15.orig/drivers/char/pcmcia/cm4040_cs.c +++ linux-source-2.6.15-2.6.15/drivers/char/pcmcia/cm4040_cs.c @@ -273,6 +273,7 @@ DEBUGP(6, dev, "BytesToRead=%lu\n", bytes_to_read); min_bytes_to_read = min(count, bytes_to_read + 5); + min_bytes_to_read = min_t(size_t, min_bytes_to_read, READ_WRITE_BUFFER_SIZE); DEBUGP(6, dev, "Min=%lu\n", min_bytes_to_read); @@ -340,7 +341,7 @@ return 0; } - if (count < 5) { + if ((count < 5) || (count > READ_WRITE_BUFFER_SIZE)) { DEBUGP(2, dev, "<- cm4040_write buffersize=%Zd < 5\n", count); return -EIO; } --- linux-source-2.6.15-2.6.15.orig/drivers/char/drm/drm_vm.c +++ linux-source-2.6.15-2.6.15/drivers/char/drm/drm_vm.c @@ -479,6 +479,7 @@ vma->vm_ops = &drm_vm_dma_ops; vma->vm_flags |= VM_RESERVED; /* Don't swap */ + vma->vm_flags |= VM_DONTEXPAND; vma->vm_file = filp; /* Needed for drm_vm_open() */ drm_vm_open(vma); @@ -655,6 +656,7 @@ return -EINVAL; /* This should never happen. */ } vma->vm_flags |= VM_RESERVED; /* Don't swap */ + vma->vm_flags |= VM_DONTEXPAND; vma->vm_file = filp; /* Needed for drm_vm_open() */ drm_vm_open(vma); --- linux-source-2.6.15-2.6.15.orig/drivers/char/drm/drm_pciids.h +++ linux-source-2.6.15-2.6.15/drivers/char/drm/drm_pciids.h @@ -18,13 +18,13 @@ {0x1002, 0x4149, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R350}, \ {0x1002, 0x414A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R350}, \ {0x1002, 0x414B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R350}, \ - {0x1002, 0x4150, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350}, \ - {0x1002, 0x4151, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350}, \ - {0x1002, 0x4152, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350}, \ - {0x1002, 0x4153, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350}, \ - {0x1002, 0x4154, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350}, \ - {0x1002, 0x4155, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350}, \ - {0x1002, 0x4156, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350}, \ + {0x1002, 0x4150, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_NEW_MEMMAP}, \ + {0x1002, 0x4151, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_NEW_MEMMAP}, \ + {0x1002, 0x4152, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_NEW_MEMMAP}, \ + {0x1002, 0x4153, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_NEW_MEMMAP}, \ + {0x1002, 0x4154, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_NEW_MEMMAP}, \ + {0x1002, 0x4155, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_NEW_MEMMAP}, \ + {0x1002, 0x4156, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_NEW_MEMMAP}, \ {0x1002, 0x4237, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS200|CHIP_IS_IGP}, \ {0x1002, 0x4242, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R200}, \ {0x1002, 0x4243, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R200}, \ @@ -62,12 +62,12 @@ {0x1002, 0x4E49, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R350}, \ {0x1002, 0x4E4A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R350}, \ {0x1002, 0x4E4B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R350}, \ - {0x1002, 0x4E50, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_IS_MOBILITY}, \ - {0x1002, 0x4E51, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_IS_MOBILITY}, \ - {0x1002, 0x4E52, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_IS_MOBILITY}, \ - {0x1002, 0x4E53, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_IS_MOBILITY}, \ - {0x1002, 0x4E54, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_IS_MOBILITY}, \ - {0x1002, 0x4E56, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_IS_MOBILITY}, \ + {0x1002, 0x4E50, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_IS_MOBILITY|CHIP_NEW_MEMMAP}, \ + {0x1002, 0x4E51, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_IS_MOBILITY|CHIP_NEW_MEMMAP}, \ + {0x1002, 0x4E52, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_IS_MOBILITY|CHIP_NEW_MEMMAP}, \ + {0x1002, 0x4E53, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_IS_MOBILITY|CHIP_NEW_MEMMAP}, \ + {0x1002, 0x4E54, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_IS_MOBILITY|CHIP_NEW_MEMMAP}, \ + {0x1002, 0x4E56, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV350|CHIP_IS_MOBILITY|CHIP_NEW_MEMMAP}, \ {0x1002, 0x5144, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R100|CHIP_SINGLE_CRTC}, \ {0x1002, 0x5145, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R100|CHIP_SINGLE_CRTC}, \ {0x1002, 0x5146, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R100|CHIP_SINGLE_CRTC}, \ @@ -227,6 +227,9 @@ {0x1106, 0x3122, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ {0x1106, 0x7205, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ {0x1106, 0x3108, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ + {0x1106, 0x3157, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ + {0x1106, 0x3344, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ + {0x1106, 0x7204, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, \ {0, 0, 0} #define i810_PCI_IDS \ --- linux-source-2.6.15-2.6.15.orig/drivers/media/dvb/dvb-core/dvb_net.c +++ linux-source-2.6.15-2.6.15/drivers/media/dvb/dvb-core/dvb_net.c @@ -492,7 +492,8 @@ } else priv->ule_dbit = 0; - if (priv->ule_sndu_len > 32763) { + if (priv->ule_sndu_len > 32763 || + priv->ule_sndu_len < ((priv->ule_dbit) ? 4 : 4 + ETH_ALEN)) { printk(KERN_WARNING "%lu: Invalid ULE SNDU length %u. " "Resyncing.\n", priv->ts_count, priv->ule_sndu_len); priv->ule_sndu_len = 0; --- linux-source-2.6.15-2.6.15.orig/drivers/media/video/cx88/cx88-dvb.c +++ linux-source-2.6.15-2.6.15/drivers/media/video/cx88/cx88-dvb.c @@ -342,7 +342,7 @@ &dev->core->i2c_adap); break; case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS: - dev->core->pll_addr = 0x61; + dev->core->pll_addr = 0x60; dev->core->pll_desc = &dvb_pll_thomson_dtt7579; dev->dvb.frontend = mt352_attach(&dvico_fusionhdtv, &dev->core->i2c_adap); --- linux-source-2.6.15-2.6.15.orig/drivers/usb/storage/unusual_devs.h +++ linux-source-2.6.15-2.6.15/drivers/usb/storage/unusual_devs.h @@ -612,6 +612,16 @@ US_SC_DEVICE, US_PR_DEVICE, NULL, US_FL_FIX_CAPACITY ), +/* + * Reported by DaMoGan + * This particular productId is the 60Gig Video iPod + */ +UNUSUAL_DEV( 0x05ac, 0x1209, 0x0000, 0x9999, + "Apple", + "iPod", + US_SC_DEVICE, US_PR_DEVICE, NULL, + US_FL_FIX_CAPACITY ), + /* * Reported by Tyson Vinson * This particular productId is the iPod Nano @@ -1111,6 +1121,15 @@ US_SC_DEVICE, US_PR_DEVICE, NULL, US_FL_IGNORE_RESIDUE ), +/* patch submitted by Davide Perini + * and Renato Perini + */ +UNUSUAL_DEV( 0x22b8, 0x3010, 0x0001, 0x0001, + "Motorola", + "RAZR V3x", + US_SC_DEVICE, US_PR_DEVICE, NULL, + US_FL_FIX_CAPACITY | US_FL_IGNORE_RESIDUE ), + /* Reported by Radovan Garabik */ UNUSUAL_DEV( 0x2735, 0x100b, 0x0000, 0x9999, "MPIO", --- linux-source-2.6.15-2.6.15.orig/drivers/usb/serial/ftdi_sio.c +++ linux-source-2.6.15-2.6.15/drivers/usb/serial/ftdi_sio.c @@ -524,11 +524,17 @@ spinlock_t rx_lock; /* spinlock for receive state */ struct work_struct rx_work; int rx_processed; + unsigned long rx_bytes; __u16 interface; /* FT2232C port interface (0 for FT232/245) */ int force_baud; /* if non-zero, force the baud rate to this value */ int force_rtscts; /* if non-zero, force RTS-CTS to always be enabled */ + + spinlock_t tx_lock; /* spinlock for transmit state */ + unsigned long tx_bytes; + unsigned long tx_outstanding_bytes; + unsigned long tx_outstanding_urbs; }; /* Used for TIOCMIWAIT */ @@ -602,6 +608,9 @@ #define HIGH 1 #define LOW 0 +/* number of outstanding urbs to prevent userspace DoS from happening */ +#define URB_UPPER_LIMIT 42 + /* * *************************************************************************** * Utlity functions @@ -1133,6 +1142,7 @@ memset(priv, 0, sizeof(*priv)); spin_lock_init(&priv->rx_lock); + spin_lock_init(&priv->tx_lock); init_waitqueue_head(&priv->delta_msr_wait); /* This will push the characters through immediately rather than queue a task to deliver them */ @@ -1248,8 +1258,15 @@ dbg("%s", __FUNCTION__); + spin_lock_irqsave(&priv->tx_lock, flags); + priv->tx_bytes = 0; + spin_unlock_irqrestore(&priv->tx_lock, flags); + spin_lock_irqsave(&priv->rx_lock, flags); + priv->rx_bytes = 0; + spin_unlock_irqrestore(&priv->rx_lock, flags); - port->tty->low_latency = (priv->flags & ASYNC_LOW_LATENCY) ? 1 : 0; + if (port->tty) + port->tty->low_latency = (priv->flags & ASYNC_LOW_LATENCY) ? 1 : 0; /* No error checking for this (will get errors later anyway) */ /* See ftdi_sio.h for description of what is reset */ @@ -1349,6 +1366,7 @@ int data_offset ; /* will be 1 for the SIO and 0 otherwise */ int status; int transfer_size; + unsigned long flags; dbg("%s port %d, %d bytes", __FUNCTION__, port->number, count); @@ -1356,6 +1374,13 @@ dbg("write request of 0 bytes"); return 0; } + spin_lock_irqsave(&priv->tx_lock, flags); + if (priv->tx_outstanding_urbs > URB_UPPER_LIMIT) { + spin_unlock_irqrestore(&priv->tx_lock, flags); + dbg("%s - write limit hit\n", __FUNCTION__); + return 0; + } + spin_unlock_irqrestore(&priv->tx_lock, flags); data_offset = priv->write_offset; dbg("data_offset set to %d",data_offset); @@ -1422,6 +1447,12 @@ err("%s - failed submitting write urb, error %d", __FUNCTION__, status); count = status; kfree (buffer); + } else { + spin_lock_irqsave(&priv->tx_lock, flags); + ++priv->tx_outstanding_urbs; + priv->tx_outstanding_bytes += count; + priv->tx_bytes += count; + spin_unlock_irqrestore(&priv->tx_lock, flags); } /* we are done with this urb, so let the host driver @@ -1437,7 +1468,11 @@ static void ftdi_write_bulk_callback (struct urb *urb, struct pt_regs *regs) { + unsigned long flags; struct usb_serial_port *port = (struct usb_serial_port *)urb->context; + struct ftdi_private *priv; + int data_offset; /* will be 1 for the SIO and 0 otherwise */ + unsigned long countback; /* free up the transfer buffer, as usb_free_urb() does not do this */ kfree (urb->transfer_buffer); @@ -1449,34 +1484,67 @@ return; } + priv = usb_get_serial_port_data(port); + if (!priv) { + dbg("%s - bad port private data pointer - exiting", __FUNCTION__); + return; + } + /* account for transferred data */ + countback = urb->actual_length; + data_offset = priv->write_offset; + if (data_offset > 0) { + /* Subtract the control bytes */ + countback -= (data_offset * ((countback + (PKTSZ - 1)) / PKTSZ)); + } + spin_lock_irqsave(&priv->tx_lock, flags); + --priv->tx_outstanding_urbs; + priv->tx_outstanding_bytes -= countback; + spin_unlock_irqrestore(&priv->tx_lock, flags); + schedule_work(&port->work); } /* ftdi_write_bulk_callback */ static int ftdi_write_room( struct usb_serial_port *port ) { + struct ftdi_private *priv = usb_get_serial_port_data(port); + int room; + unsigned long flags; + dbg("%s - port %d", __FUNCTION__, port->number); - /* - * We really can take anything the user throws at us - * but let's pick a nice big number to tell the tty - * layer that we have lots of free space - */ - return 2048; + spin_lock_irqsave(&priv->tx_lock, flags); + if (priv->tx_outstanding_urbs < URB_UPPER_LIMIT) { + /* + * We really can take anything the user throws at us + * but let's pick a nice big number to tell the tty + * layer that we have lots of free space + */ + room = 2048; + } else { + room = 0; + } + spin_unlock_irqrestore(&priv->tx_lock, flags); + return room; } /* ftdi_write_room */ static int ftdi_chars_in_buffer (struct usb_serial_port *port) { /* ftdi_chars_in_buffer */ + struct ftdi_private *priv = usb_get_serial_port_data(port); + int buffered; + unsigned long flags; + dbg("%s - port %d", __FUNCTION__, port->number); - /* - * We can't really account for how much data we - * have sent out, but hasn't made it through to the - * device, so just tell the tty layer that everything - * is flushed. - */ - return 0; + spin_lock_irqsave(&priv->tx_lock, flags); + buffered = (int)priv->tx_outstanding_bytes; + spin_unlock_irqrestore(&priv->tx_lock, flags); + if (buffered < 0) { + err("%s outstanding tx bytes is negative!", __FUNCTION__); + buffered = 0; + } + return buffered; } /* ftdi_chars_in_buffer */ @@ -1486,6 +1554,8 @@ struct usb_serial_port *port = (struct usb_serial_port *)urb->context; struct tty_struct *tty; struct ftdi_private *priv; + unsigned long countread; + unsigned long flags; if (urb->number_of_packets > 0) { err("%s transfer_buffer_length %d actual_length %d number of packets %d",__FUNCTION__, @@ -1520,6 +1590,13 @@ return; } + /* count data bytes, but not status bytes */ + countread = urb->actual_length; + countread -= 2 * ((countread + (PKTSZ - 1)) / PKTSZ); + spin_lock_irqsave(&priv->rx_lock, flags); + priv->rx_bytes += countread; + spin_unlock_irqrestore(&priv->rx_lock, flags); + ftdi_process_read(port); } /* ftdi_read_bulk_callback */ --- linux-source-2.6.15-2.6.15.orig/drivers/usb/serial/usb-serial.c +++ linux-source-2.6.15-2.6.15/drivers/usb/serial/usb-serial.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include "usb-serial.h" #include "pl2303.h" @@ -40,6 +41,8 @@ #define DRIVER_AUTHOR "Greg Kroah-Hartman, greg@kroah.com, http://www.kroah.com/linux/" #define DRIVER_DESC "USB Serial Driver core" +static void port_free(struct usb_serial_port *port); + /* Driver structure we register with the USB core */ static struct usb_driver usb_serial_driver = { .owner = THIS_MODULE, @@ -146,18 +149,7 @@ port = serial->port[i]; if (!port) continue; - usb_kill_urb(port->read_urb); - usb_free_urb(port->read_urb); - usb_kill_urb(port->write_urb); - usb_free_urb(port->write_urb); - usb_kill_urb(port->interrupt_in_urb); - usb_free_urb(port->interrupt_in_urb); - usb_kill_urb(port->interrupt_out_urb); - usb_free_urb(port->interrupt_out_urb); - kfree(port->bulk_in_buffer); - kfree(port->bulk_out_buffer); - kfree(port->interrupt_in_buffer); - kfree(port->interrupt_out_buffer); + port_free(port); } } @@ -189,6 +181,9 @@ portNumber = tty->index - serial->minor; port = serial->port[portNumber]; + if (down_interruptible(&port->sem)) + return -ERESTARTSYS; + ++port->open_count; if (port->open_count == 1) { @@ -203,7 +198,7 @@ * safe because we are called with BKL held */ if (!try_module_get(serial->type->driver.owner)) { retval = -ENODEV; - goto bailout_kref_put; + goto bailout_mutex_unlock; } /* only call the device specific open if this @@ -213,13 +208,16 @@ goto bailout_module_put; } + up(&port->sem); return 0; bailout_module_put: module_put(serial->type->driver.owner); +bailout_mutex_unlock: + port->open_count = 0; + up(&port->sem); bailout_kref_put: kref_put(&serial->kref, destroy_serial); - port->open_count = 0; return retval; } @@ -232,8 +230,11 @@ dbg("%s - port %d", __FUNCTION__, port->number); - if (port->open_count == 0) - return; + down(&port->sem); + + if (port->open_count == 0) { + goto out; + } --port->open_count; if (port->open_count == 0) { @@ -251,6 +252,8 @@ } kref_put(&port->serial->kref, destroy_serial); +out: + up(&port->sem); } static int serial_write (struct tty_struct * tty, const unsigned char *buf, int count) @@ -500,6 +503,11 @@ struct usb_serial_port *port = to_usb_serial_port(dev); dbg ("%s - %s", __FUNCTION__, dev->bus_id); + port_free(port); +} + +static void port_free(struct usb_serial_port *port) +{ usb_kill_urb(port->read_urb); usb_free_urb(port->read_urb); usb_kill_urb(port->write_urb); @@ -512,6 +520,7 @@ kfree(port->bulk_out_buffer); kfree(port->interrupt_in_buffer); kfree(port->interrupt_out_buffer); + flush_scheduled_work(); /* port->work */ kfree(port); } @@ -742,6 +751,7 @@ port->number = i + serial->minor; port->serial = serial; spin_lock_init(&port->lock); + sema_init(&port->sem, 1); INIT_WORK(&port->work, usb_serial_port_softint, port); serial->port[i] = port; } --- linux-source-2.6.15-2.6.15.orig/drivers/usb/serial/option.c +++ linux-source-2.6.15-2.6.15/drivers/usb/serial/option.c @@ -76,12 +76,14 @@ #define OPTION_VENDOR_ID 0x0AF0 #define HUAWEI_VENDOR_ID 0x12D1 #define AUDIOVOX_VENDOR_ID 0x0F3D +#define ANYDATA_VENDOR_ID 0x16d5 -#define OPTION_PRODUCT_OLD 0x5000 -#define OPTION_PRODUCT_FUSION 0x6000 -#define OPTION_PRODUCT_FUSION2 0x6300 -#define HUAWEI_PRODUCT_E600 0x1001 -#define AUDIOVOX_PRODUCT_AIRCARD 0x0112 +#define OPTION_PRODUCT_OLD 0x5000 +#define OPTION_PRODUCT_FUSION 0x6000 +#define OPTION_PRODUCT_FUSION2 0x6300 +#define HUAWEI_PRODUCT_E600 0x1001 +#define AUDIOVOX_PRODUCT_AIRCARD 0x0112 +#define ANYDATA_PRODUCT_ID 0x6501 static struct usb_device_id option_ids[] = { { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_OLD) }, @@ -89,6 +91,7 @@ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_FUSION2) }, { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, { USB_DEVICE(AUDIOVOX_VENDOR_ID, AUDIOVOX_PRODUCT_AIRCARD) }, + { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ID) }, { } /* Terminating entry */ }; --- linux-source-2.6.15-2.6.15.orig/drivers/usb/serial/usb-serial.h +++ linux-source-2.6.15-2.6.15/drivers/usb/serial/usb-serial.h @@ -16,6 +16,7 @@ #include #include +#include #define SERIAL_TTY_MAJOR 188 /* Nice legal number now */ #define SERIAL_TTY_MINORS 255 /* loads of devices :) */ @@ -30,6 +31,8 @@ * @serial: pointer back to the struct usb_serial owner of this port. * @tty: pointer to the corresponding tty for this port. * @lock: spinlock to grab when updating portions of this structure. + * @sem: semaphore used to synchronize serial_open() and serial_close() + * access for this port * @number: the number of the port (the minor number). * @interrupt_in_buffer: pointer to the interrupt in buffer for this port. * @interrupt_in_urb: pointer to the interrupt in struct urb for this port. @@ -60,6 +63,7 @@ struct usb_serial * serial; struct tty_struct * tty; spinlock_t lock; + struct semaphore sem; unsigned char number; unsigned char * interrupt_in_buffer; --- linux-source-2.6.15-2.6.15.orig/drivers/usb/core/hub.c +++ linux-source-2.6.15-2.6.15/drivers/usb/core/hub.c @@ -431,15 +431,22 @@ { int port1; unsigned pgood_delay = hub->descriptor->bPwrOn2PwrGood * 2; - u16 wHubCharacteristics = le16_to_cpu(hub->descriptor->wHubCharacteristics); + u16 wHubCharacteristics = + le16_to_cpu(hub->descriptor->wHubCharacteristics); - /* if hub supports power switching, enable power on each port */ - if ((wHubCharacteristics & HUB_CHAR_LPSM) < 2) { + /* Enable power on each port. Some hubs have reserved values + * of LPSM (> 2) in their descriptors, even though they are + * USB 2.0 hubs. Some hubs do not implement port-power switching + * but only emulate it. In all cases, the ports won't work + * unless we send these messages to the hub. + */ + if ((wHubCharacteristics & HUB_CHAR_LPSM) < 2) dev_dbg(hub->intfdev, "enabling power on all ports\n"); - for (port1 = 1; port1 <= hub->descriptor->bNbrPorts; port1++) - set_port_feature(hub->hdev, port1, - USB_PORT_FEAT_POWER); - } + else + dev_dbg(hub->intfdev, "trying to enable port power on " + "non-switchable hub\n"); + for (port1 = 1; port1 <= hub->descriptor->bNbrPorts; port1++) + set_port_feature(hub->hdev, port1, USB_PORT_FEAT_POWER); /* Wait at least 100 msec for power to become stable */ msleep(max(pgood_delay, (unsigned) 100)); @@ -2210,12 +2217,9 @@ continue; } - /* Use a short timeout the first time through, - * so that recalcitrant full-speed devices with - * 8- or 16-byte ep0-maxpackets won't slow things - * down tremendously by NAKing the unexpectedly - * early status stage. Also, retry on all errors; - * some devices are flakey. + /* Retry on all errors; some devices are flakey. + * 255 is for WUSB devices, we actually need to use + * 512 (WUSB1.0[4.8.1]). */ for (j = 0; j < 3; ++j) { buf->bMaxPacketSize0 = 0; @@ -2223,7 +2227,7 @@ USB_REQ_GET_DESCRIPTOR, USB_DIR_IN, USB_DT_DEVICE << 8, 0, buf, GET_DESCRIPTOR_BUFSIZE, - (i ? USB_CTRL_GET_TIMEOUT : 1000)); + USB_CTRL_GET_TIMEOUT); switch (buf->bMaxPacketSize0) { case 8: case 16: case 32: case 64: if (buf->bDescriptorType == @@ -2754,9 +2758,11 @@ } if (portchange & USB_PORT_STAT_C_OVERCURRENT) { - dev_err (hub_dev, - "over-current change on port %d\n", - i); + if (printk_ratelimit()) + dev_err (hub_dev, + "over-current change on port %d\n", + i); + clear_port_feature(hdev, i, USB_PORT_FEAT_C_OVER_CURRENT); hub_power_on(hub); --- linux-source-2.6.15-2.6.15.orig/drivers/usb/gadget/rndis.c +++ linux-source-2.6.15-2.6.15/drivers/usb/gadget/rndis.c @@ -853,11 +853,14 @@ // DEBUG("%s: OID = %08X\n", __FUNCTION__, cpu_to_le32(buf->OID)); if (!rndis_per_dev_params [configNr].dev) return -ENOTSUPP; - /* - * we need more memory: - * oid_supported_list is the largest answer + /* + * we need more memory: + * gen_ndis_query_resp expects enough space for + * rndis_query_cmplt_type followed by data. + * oid_supported_list is the largest data reply */ - r = rndis_add_response (configNr, sizeof (oid_supported_list)); + r = rndis_add_response (configNr, + sizeof (oid_supported_list) + sizeof(rndis_query_cmplt_type)); if (!r) return -ENOMEM; resp = (rndis_query_cmplt_type *) r->buf; --- linux-source-2.6.15-2.6.15.orig/drivers/usb/input/hid.h +++ linux-source-2.6.15-2.6.15/drivers/usb/input/hid.h @@ -39,6 +39,13 @@ #define USB_INTERFACE_CLASS_HID 3 /* + * USB HID interface subclass and protocol codes + */ +#define USB_INTERFACE_SUBCLASS_BOOT 1 +#define USB_INTERFACE_PROTOCOL_KEYBOARD 1 +#define USB_INTERFACE_PROTOCOL_MOUSE 2 + +/* * HID class requests */ --- linux-source-2.6.15-2.6.15.orig/drivers/usb/input/Kconfig +++ linux-source-2.6.15-2.6.15/drivers/usb/input/Kconfig @@ -40,7 +40,7 @@ config USB_HIDINPUT_POWERBOOK bool "Enable support for iBook/PowerBook special keys" default n - depends on USB_HIDINPUT && PPC + depends on USB_HIDINPUT help Say Y here if you want support for the special keys (Fn, Numlock) on Apple iBooks and PowerBooks. --- linux-source-2.6.15-2.6.15.orig/drivers/usb/input/hid-core.c +++ linux-source-2.6.15-2.6.15/drivers/usb/input/hid-core.c @@ -1601,6 +1601,8 @@ { USB_VENDOR_ID_APPLE, 0x0214, HID_QUIRK_POWERBOOK_HAS_FN }, { USB_VENDOR_ID_APPLE, 0x0215, HID_QUIRK_POWERBOOK_HAS_FN }, { USB_VENDOR_ID_APPLE, 0x0216, HID_QUIRK_POWERBOOK_HAS_FN }, + { USB_VENDOR_ID_APPLE, 0x0217, HID_QUIRK_POWERBOOK_HAS_FN }, + { USB_VENDOR_ID_APPLE, 0x0218, HID_QUIRK_POWERBOOK_HAS_FN }, { USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_POWERBOOK_HAS_FN }, { USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_POWERBOOK_HAS_FN }, @@ -1665,6 +1667,14 @@ (hid_blacklist[n].idProduct == le16_to_cpu(dev->descriptor.idProduct))) quirks = hid_blacklist[n].quirks; + /* Many keyboards and mice don't like to be polled for report. + * so we will always set the HID_QUIRK_NOGET flag for them. */ + if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT) { + if (interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_KEYBOARD || + interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE) + quirks |= HID_QUIRK_NOGET; + } + if (quirks & HID_QUIRK_IGNORE) return NULL; --- linux-source-2.6.15-2.6.15.orig/drivers/usb/input/ati_remote.c +++ linux-source-2.6.15-2.6.15/drivers/usb/input/ati_remote.c @@ -148,15 +148,13 @@ /* Acceleration curve for directional control pad */ static char accel[] = { 1, 2, 4, 6, 9, 13, 20 }; -/* Duplicate event filtering time. - * Sequential, identical KIND_FILTERED inputs with less than - * FILTER_TIME jiffies between them are considered as repeat - * events. The hardware generates 5 events for the first keypress - * and we have to take this into account for an accurate repeat - * behaviour. - * (HZ / 20) == 50 ms and works well for me. +/* + * Duplicate event filtering time. Sequential, identical KIND_FILTERED + * inputs with less than FILTER_TIME_MS between them are considered as + * repeat events. The hardware generates 5 events for the first keypress + * and we have to take this into account for an accurate repeat behaviour. */ -#define FILTER_TIME (HZ / 20) +#define FILTER_TIME_MS 51 static DECLARE_MUTEX(disconnect_sem); @@ -472,7 +470,7 @@ /* Filter duplicate events which happen "too close" together. */ if ((ati_remote->old_data[0] == data[1]) && (ati_remote->old_data[1] == data[2]) && - ((ati_remote->old_jiffies + FILTER_TIME) > jiffies)) { + ((ati_remote->old_jiffies + msecs_to_jiffies(FILTER_TIME_MS)) > jiffies)) { ati_remote->repeat_count++; } else { ati_remote->repeat_count = 0; --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zd1205.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zd1205.h @@ -1,27 +1,3 @@ -/* $Id: zd1205.h,v 1.12 2005/08/14 11:17:08 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZD1205_H_ #define _ZD1205_H_ @@ -32,7 +8,11 @@ #include #include #include -#include + +#ifdef HOST_IF_USB + #include +#endif + #include #include #include @@ -59,306 +39,329 @@ #include #include #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) -#include + #include #endif + #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -#include + #include #endif #include "zdcompat.h" #include "zdequates.h" #include "zdapi.h" +#include "zydas_common.h" -#define fTX_PWR_CTRL 1 -#define fZD1211_LOOPBACK 1 -#define fDUMP_LOOPBACK_DATA 0 -#define fLOAD_BOOTCODE 1 -#define fPROG_FLASH 1 -#define fPROG_FLASH_BY_FW 1 -#define fDRV_UPDATE_EEP 1 +#include "zd1211_wext.h" +#ifdef HOST_IF_USB +#define fANT_DIVERSITY 0 +#define fTX_PWR_CTRL 1 +#define fZD1211_LOOPBACK 1 +#define fDUMP_LOOPBACK_DATA (0 && fZD1211_LOOPBACK) +#define fLOAD_BOOTCODE 1 +#define fPROG_FLASH (1 && fWRITE_WORD_REG) +#define fPROG_FLASH_BY_FW (1 && fPROG_FLASH) +#define fDRV_WRITE_RF_REG (1 && fWRITE_WORD_REG) +#define fMERGE_RX_FRAME (ENHANCE_RX && fDRV_WRITE_RF_REG) +#define fDRV_UPDATE_EEP (1 && fWRITE_WORD_REG) +//#define fQuickPhySet 0 //(fREAD_MUL_REG && fWRITE_WORD_REG) +#endif enum zd1205_device_type { - ZD_1202 = 1, - ZD_1205, + ZD_1202 = 1, + ZD_1205, }; -#define ASOC_RSP 0x10 -#define REASOC_RSP 0x30 -#define PROBE_RSP 0x50 -#define DISASOC 0xA0 -#define AUTH 0xB0 -#define DEAUTH 0xC0 -#define DATA 0x08 -#define PS_POLL 0xA4 -#define MANAGEMENT 0x00 -#define PROBE_REQ 0x40 -#define BEACON 0x80 -#define ACK 0xD4 -#define CONTROL 0x04 -#define NULL_FUNCTION 0x48 -#define LB_DATA 0x88 -#define VLAN_SIZE 4 +#define ASOC_RSP 0x10 +#define REASOC_RSP 0x30 +#define PROBE_RSP 0x50 +#define DISASOC 0xA0 +#define AUTH 0xB0 +#define DEAUTH 0xC0 +#define DATA 0x08 +#define PS_POLL 0xA4 +#define MANAGEMENT 0x00 +#define PROBE_REQ 0x40 +#define BEACON 0x80 +#define ACK 0xD4 +#define CONTROL 0x04 +#define NULL_FUNCTION 0x48 +#define LB_DATA 0x88 + +#define VLAN_SIZE 4 #define CHKSUM_SIZE 2 #define false (0) #define true (1) + + /************************************************************************** ** Register Offset Definitions *************************************************************************** */ -#define ZD1205_CR0 0x0000 -#define ZD1205_CR1 0x0004 -#define ZD1205_CR2 0x0008 -#define ZD1205_CR3 0x000C -#define ZD1205_CR5 0x0010 -#define ZD1205_CR6 0x0014 -#define ZD1205_CR7 0x0018 -#define ZD1205_CR8 0x001C -#define ZD1205_CR4 0x0020 -#define ZD1205_CR9 0x0024 -#define ZD1205_CR10 0x0028 -#define ZD1205_CR11 0x002C -#define ZD1205_CR12 0x0030 -#define ZD1205_CR13 0x0034 -#define ZD1205_CR14 0x0038 -#define ZD1205_CR15 0x003C -#define ZD1205_CR16 0x0040 -#define ZD1205_CR17 0x0044 -#define ZD1205_CR18 0x0048 -#define ZD1205_CR19 0x004C -#define ZD1205_CR20 0x0050 -#define ZD1205_CR21 0x0054 -#define ZD1205_CR22 0x0058 -#define ZD1205_CR23 0x005C -#define ZD1205_CR24 0x0060 -#define ZD1205_CR25 0x0064 -#define ZD1205_CR26 0x0068 -#define ZD1205_CR27 0x006C -#define ZD1205_CR28 0x0070 -#define ZD1205_CR29 0x0074 -#define ZD1205_CR30 0x0078 -#define ZD1205_CR31 0x007C -#define ZD1205_CR32 0x0080 -#define ZD1205_CR33 0x0084 -#define ZD1205_CR34 0x0088 -#define ZD1205_CR35 0x008C -#define ZD1205_CR36 0x0090 -#define ZD1205_CR37 0x0094 -#define ZD1205_CR38 0x0098 -#define ZD1205_CR39 0x009C -#define ZD1205_CR40 0x00A0 -#define ZD1205_CR41 0x00A4 -#define ZD1205_CR42 0x00A8 -#define ZD1205_CR43 0x00AC -#define ZD1205_CR44 0x00B0 -#define ZD1205_CR45 0x00B4 -#define ZD1205_CR46 0x00B8 -#define ZD1205_CR47 0x00BC -#define ZD1205_CR48 0x00C0 -#define ZD1205_CR49 0x00C4 -#define ZD1205_CR50 0x00C8 -#define ZD1205_CR51 0x00CC -#define ZD1205_CR52 0x00D0 -#define ZD1205_CR53 0x00D4 -#define ZD1205_CR54 0x00D8 -#define ZD1205_CR55 0x00DC -#define ZD1205_CR56 0x00E0 -#define ZD1205_CR57 0x00E4 -#define ZD1205_CR58 0x00E8 -#define ZD1205_CR59 0x00EC -#define ZD1205_CR60 0x00F0 -#define ZD1205_CR61 0x00F4 -#define ZD1205_CR62 0x00F8 -#define ZD1205_CR63 0x00FC -#define ZD1205_CR64 0x0100 -#define ZD1205_CR65 0x0104 -#define ZD1205_CR66 0x0108 -#define ZD1205_CR67 0x010C -#define ZD1205_CR68 0x0110 -#define ZD1205_CR69 0x0114 -#define ZD1205_CR70 0x0118 -#define ZD1205_CR71 0x011C -#define ZD1205_CR72 0x0120 -#define ZD1205_CR73 0x0124 -#define ZD1205_CR74 0x0128 -#define ZD1205_CR75 0x012C -#define ZD1205_CR76 0x0130 -#define ZD1205_CR77 0x0134 -#define ZD1205_CR78 0x0138 -#define ZD1205_CR79 0x013C -#define ZD1205_CR80 0x0140 -#define ZD1205_CR81 0x0144 -#define ZD1205_CR82 0x0148 -#define ZD1205_CR83 0x014C -#define ZD1205_CR84 0x0150 -#define ZD1205_CR85 0x0154 -#define ZD1205_CR86 0x0158 -#define ZD1205_CR87 0x015C -#define ZD1205_CR88 0x0160 -#define ZD1205_CR89 0x0164 -#define ZD1205_CR90 0x0168 -#define ZD1205_CR91 0x016C -#define ZD1205_CR92 0x0170 -#define ZD1205_CR93 0x0174 -#define ZD1205_CR94 0x0178 -#define ZD1205_CR95 0x017C -#define ZD1205_CR96 0x0180 -#define ZD1205_CR97 0x0184 -#define ZD1205_CR98 0x0188 -#define ZD1205_CR99 0x018C -#define ZD1205_CR100 0x0190 -#define ZD1205_CR101 0x0194 -#define ZD1205_CR102 0x0198 -#define ZD1205_CR103 0x019C -#define ZD1205_CR104 0x01A0 -#define ZD1205_CR105 0x01A4 -#define ZD1205_CR106 0x01A8 -#define ZD1205_CR107 0x01AC -#define ZD1205_CR108 0x01B0 -#define ZD1205_CR109 0x01B4 -#define ZD1205_CR110 0x01B8 -#define ZD1205_CR111 0x01BC -#define ZD1205_CR112 0x01C0 -#define ZD1205_CR113 0x01C4 -#define ZD1205_CR114 0x01C8 -#define ZD1205_CR115 0x01CC -#define ZD1205_CR116 0x01D0 -#define ZD1205_CR117 0x01D4 -#define ZD1205_CR118 0x01D8 -#define ZD1205_CR119 0x01EC -#define ZD1205_CR120 0x01E0 -#define ZD1205_CR121 0x01E4 -#define ZD1205_CR122 0x01E8 -#define ZD1205_CR123 0x01EC -#define ZD1205_CR124 0x01F0 -#define ZD1205_CR125 0x01F4 -#define ZD1205_CR126 0x01F8 -#define ZD1205_CR127 0x01FC -#define ZD1205_CR128 0x0200 -#define ZD1205_CR129 0x0204 -#define ZD1205_CR130 0x0208 -#define ZD1205_CR131 0x020C -#define ZD1205_CR132 0x0210 -#define ZD1205_CR133 0x0214 -#define ZD1205_CR134 0x0218 -#define ZD1205_CR135 0x021C -#define ZD1205_CR136 0x0220 -#define ZD1205_CR137 0x0224 -#define ZD1205_CR138 0x0228 -#define ZD1205_CR139 0x022C -#define ZD1205_CR140 0x0230 -#define ZD1205_CR141 0x0234 -#define ZD1205_CR142 0x0238 -#define ZD1205_CR143 0x023C -#define ZD1205_CR144 0x0240 -#define ZD1205_CR145 0x0244 -#define ZD1205_CR146 0x0248 -#define ZD1205_CR147 0x024C -#define ZD1205_CR148 0x0250 -#define ZD1205_CR149 0x0254 -#define ZD1205_CR150 0x0258 -#define ZD1205_CR151 0x025C -#define ZD1205_CR152 0x0260 -#define ZD1205_CR153 0x0264 -#define ZD1205_CR154 0x0268 -#define ZD1205_CR155 0x026C -#define ZD1205_CR156 0x0270 -#define ZD1205_CR157 0x0274 -#define ZD1205_CR158 0x0278 -#define ZD1205_CR159 0x027C -#define ZD1205_CR160 0x0280 -#define ZD1205_CR161 0x0284 -#define ZD1205_CR162 0x0288 -#define ZD1205_CR163 0x028C -#define ZD1205_CR164 0x0290 -#define ZD1205_CR165 0x0294 -#define ZD1205_CR166 0x0298 -#define ZD1205_CR167 0x029C -#define ZD1205_CR168 0x02A0 -#define ZD1205_CR169 0x02A4 -#define ZD1205_CR170 0x02A8 -#define ZD1205_CR171 0x02AC -#define ZD1205_CR172 0x02B0 -#define ZD1205_CR173 0x02B4 -#define ZD1205_CR174 0x02B8 -#define ZD1205_CR175 0x02BC -#define ZD1205_CR176 0x02C0 -#define ZD1205_CR177 0x02C4 -#define ZD1205_CR178 0x02C8 -#define ZD1205_CR179 0x02CC -#define ZD1205_CR180 0x02D0 -#define ZD1205_CR181 0x02D4 -#define ZD1205_CR182 0x02D8 -#define ZD1205_CR183 0x02DC -#define ZD1205_CR184 0x02E0 -#define ZD1205_CR185 0x02E4 -#define ZD1205_CR186 0x02E8 -#define ZD1205_CR187 0x02EC -#define ZD1205_CR188 0x02F0 -#define ZD1205_CR189 0x02F4 -#define ZD1205_CR190 0x02F8 -#define ZD1205_CR191 0x02FC -#define ZD1205_CR192 0x0300 -#define ZD1205_CR193 0x0304 -#define ZD1205_CR194 0x0308 -#define ZD1205_CR195 0x030C -#define ZD1205_CR196 0x0310 -#define ZD1205_CR197 0x0314 -#define ZD1205_CR198 0x0318 -#define ZD1205_CR199 0x031C -#define ZD1205_CR200 0x0320 -#define ZD1205_CR201 0x0324 -#define ZD1205_CR202 0x0328 -#define ZD1205_CR203 0x032C -#define ZD1205_CR204 0x0330 -#define ZD1205_CR205 0x0334 -#define ZD1205_CR206 0x0338 -#define ZD1205_CR207 0x033C -#define ZD1205_CR208 0x0340 -#define ZD1205_CR209 0x0344 -#define ZD1205_CR210 0x0348 -#define ZD1205_CR211 0x034C -#define ZD1205_CR212 0x0350 -#define ZD1205_CR213 0x0354 -#define ZD1205_CR214 0x0358 -#define ZD1205_CR215 0x035C -#define ZD1205_CR216 0x0360 -#define ZD1205_CR217 0x0364 -#define ZD1205_CR218 0x0368 -#define ZD1205_CR219 0x036C -#define ZD1205_CR220 0x0370 -#define ZD1205_CR221 0x0374 -#define ZD1205_CR222 0x0378 -#define ZD1205_CR223 0x037C -#define ZD1205_CR224 0x0380 -#define ZD1205_CR225 0x0384 -#define ZD1205_CR226 0x0388 -#define ZD1205_CR227 0x038C -#define ZD1205_CR228 0x0390 -#define ZD1205_CR229 0x0394 -#define ZD1205_CR230 0x0398 -#define ZD1205_CR231 0x039C -#define ZD1205_CR232 0x03A0 -#define ZD1205_CR233 0x03A4 -#define ZD1205_CR234 0x03A8 -#define ZD1205_CR235 0x03AC -#define ZD1205_CR236 0x03B0 - -#define ZD1205_CR240 0x03C0 -#define ZD1205_CR241 0x03C4 -#define ZD1205_CR242 0x03C8 -#define ZD1205_CR243 0x03CC -#define ZD1205_CR244 0x03D0 -#define ZD1205_CR245 0x03D4 - -#define ZD1205_CR251 0x03EC -#define ZD1205_CR252 0x03F0 -#define ZD1205_CR253 0x03F4 -#define ZD1205_CR254 0x03F8 -#define ZD1205_CR255 0x03FC +#define ZD1205_CR0 0x0000 +#define ZD1205_CR1 0x0004 +#define ZD1205_CR2 0x0008 +#define ZD1205_CR3 0x000C +#define ZD1205_CR5 0x0010 +#define ZD1205_CR6 0x0014 +#define ZD1205_CR7 0x0018 +#define ZD1205_CR8 0x001C +#define ZD1205_CR4 0x0020 +#define ZD1205_CR9 0x0024 +#define ZD1205_CR10 0x0028 +#define ZD1205_CR11 0x002C +#define ZD1205_CR12 0x0030 +#define ZD1205_CR13 0x0034 +#define ZD1205_CR14 0x0038 +#define ZD1205_CR15 0x003C +#define ZD1205_CR16 0x0040 +#define ZD1205_CR17 0x0044 +#define ZD1205_CR18 0x0048 +#define ZD1205_CR19 0x004C +#define ZD1205_CR20 0x0050 +#define ZD1205_CR21 0x0054 +#define ZD1205_CR22 0x0058 +#define ZD1205_CR23 0x005C + + + +#define ZD1205_CR24 0x0060 +#define ZD1205_CR25 0x0064 +#define ZD1205_CR26 0x0068 +#define ZD1205_CR27 0x006C +#define ZD1205_CR28 0x0070 +#define ZD1205_CR29 0x0074 +#define ZD1205_CR30 0x0078 +#define ZD1205_CR31 0x007C +#define ZD1205_CR32 0x0080 +#define ZD1205_CR33 0x0084 +#define ZD1205_CR34 0x0088 +#define ZD1205_CR35 0x008C +#define ZD1205_CR36 0x0090 +#define ZD1205_CR37 0x0094 +#define ZD1205_CR38 0x0098 +#define ZD1205_CR39 0x009C +#define ZD1205_CR40 0x00A0 +#define ZD1205_CR41 0x00A4 +#define ZD1205_CR42 0x00A8 +#define ZD1205_CR43 0x00AC +#define ZD1205_CR44 0x00B0 +#define ZD1205_CR45 0x00B4 +#define ZD1205_CR46 0x00B8 +#define ZD1205_CR47 0x00BC +#define ZD1205_CR48 0x00C0 +#define ZD1205_CR49 0x00C4 + +#define ZD1205_CR50 0x00C8 +#define ZD1205_CR51 0x00CC +#define ZD1205_CR52 0x00D0 +#define ZD1205_CR53 0x00D4 +#define ZD1205_CR54 0x00D8 +#define ZD1205_CR55 0x00DC +#define ZD1205_CR56 0x00E0 +#define ZD1205_CR57 0x00E4 +#define ZD1205_CR58 0x00E8 +#define ZD1205_CR59 0x00EC +#define ZD1205_CR60 0x00F0 +#define ZD1205_CR61 0x00F4 +#define ZD1205_CR62 0x00F8 +#define ZD1205_CR63 0x00FC +#define ZD1205_CR64 0x0100 +#define ZD1205_CR65 0x0104 +#define ZD1205_CR66 0x0108 +#define ZD1205_CR67 0x010C +#define ZD1205_CR68 0x0110 +#define ZD1205_CR69 0x0114 +#define ZD1205_CR70 0x0118 +#define ZD1205_CR71 0x011C +#define ZD1205_CR72 0x0120 +#define ZD1205_CR73 0x0124 +#define ZD1205_CR74 0x0128 +#define ZD1205_CR75 0x012C +#define ZD1205_CR76 0x0130 +#define ZD1205_CR77 0x0134 +#define ZD1205_CR78 0x0138 +#define ZD1205_CR79 0x013C +#define ZD1205_CR80 0x0140 +#define ZD1205_CR81 0x0144 +#define ZD1205_CR82 0x0148 +#define ZD1205_CR83 0x014C +#define ZD1205_CR84 0x0150 +#define ZD1205_CR85 0x0154 +#define ZD1205_CR86 0x0158 +#define ZD1205_CR87 0x015C +#define ZD1205_CR88 0x0160 +#define ZD1205_CR89 0x0164 + +#define ZD1205_CR90 0x0168 +#define ZD1205_CR91 0x016C +#define ZD1205_CR92 0x0170 +#define ZD1205_CR93 0x0174 +#define ZD1205_CR94 0x0178 +#define ZD1205_CR95 0x017C +#define ZD1205_CR96 0x0180 +#define ZD1205_CR97 0x0184 +#define ZD1205_CR98 0x0188 +#define ZD1205_CR99 0x018C +#define ZD1205_CR100 0x0190 +#define ZD1205_CR101 0x0194 +#define ZD1205_CR102 0x0198 +#define ZD1205_CR103 0x019C +#define ZD1205_CR104 0x01A0 +#define ZD1205_CR105 0x01A4 +#define ZD1205_CR106 0x01A8 +#define ZD1205_CR107 0x01AC +#define ZD1205_CR108 0x01B0 +#define ZD1205_CR109 0x01B4 +#define ZD1205_CR110 0x01B8 +#define ZD1205_CR111 0x01BC +#define ZD1205_CR112 0x01C0 +#define ZD1205_CR113 0x01C4 +#define ZD1205_CR114 0x01C8 +#define ZD1205_CR115 0x01CC +#define ZD1205_CR116 0x01D0 +#define ZD1205_CR117 0x01D4 +#define ZD1205_CR118 0x01D8 +#define ZD1205_CR119 0x01EC +#define ZD1205_CR120 0x01E0 +#define ZD1205_CR121 0x01E4 +#define ZD1205_CR122 0x01E8 +#define ZD1205_CR123 0x01EC +#define ZD1205_CR124 0x01F0 +#define ZD1205_CR125 0x01F4 +#define ZD1205_CR126 0x01F8 +#define ZD1205_CR127 0x01FC +#define ZD1205_CR128 0x0200 +#define ZD1205_CR129 0x0204 +#define ZD1205_CR130 0x0208 +#define ZD1205_CR131 0x020C +#define ZD1205_CR132 0x0210 +#define ZD1205_CR133 0x0214 +#define ZD1205_CR134 0x0218 +#define ZD1205_CR135 0x021C +#define ZD1205_CR136 0x0220 +#define ZD1205_CR137 0x0224 +#define ZD1205_CR138 0x0228 +#define ZD1205_CR139 0x022C +#define ZD1205_CR140 0x0230 +#define ZD1205_CR141 0x0234 +#define ZD1205_CR142 0x0238 +#define ZD1205_CR143 0x023C +#define ZD1205_CR144 0x0240 +#define ZD1205_CR145 0x0244 +#define ZD1205_CR146 0x0248 +#define ZD1205_CR147 0x024C +#define ZD1205_CR148 0x0250 +#define ZD1205_CR149 0x0254 +#define ZD1205_CR150 0x0258 +#define ZD1205_CR151 0x025C +#define ZD1205_CR152 0x0260 +#define ZD1205_CR153 0x0264 +#define ZD1205_CR154 0x0268 +#define ZD1205_CR155 0x026C +#define ZD1205_CR156 0x0270 +#define ZD1205_CR157 0x0274 +#define ZD1205_CR158 0x0278 +#define ZD1205_CR159 0x027C +#define ZD1205_CR160 0x0280 +#define ZD1205_CR161 0x0284 +#define ZD1205_CR162 0x0288 +#define ZD1205_CR163 0x028C +#define ZD1205_CR164 0x0290 +#define ZD1205_CR165 0x0294 + + + +#define ZD1205_CR166 0x0298 +#define ZD1205_CR167 0x029C +#define ZD1205_CR168 0x02A0 +#define ZD1205_CR169 0x02A4 +#define ZD1205_CR170 0x02A8 +#define ZD1205_CR171 0x02AC +#define ZD1205_CR172 0x02B0 +#define ZD1205_CR173 0x02B4 +#define ZD1205_CR174 0x02B8 +#define ZD1205_CR175 0x02BC +#define ZD1205_CR176 0x02C0 +#define ZD1205_CR177 0x02C4 +#define ZD1205_CR178 0x02C8 +#define ZD1205_CR179 0x02CC +#define ZD1205_CR180 0x02D0 +#define ZD1205_CR181 0x02D4 +#define ZD1205_CR182 0x02D8 +#define ZD1205_CR183 0x02DC +#define ZD1205_CR184 0x02E0 +#define ZD1205_CR185 0x02E4 +#define ZD1205_CR186 0x02E8 +#define ZD1205_CR187 0x02EC +#define ZD1205_CR188 0x02F0 +#define ZD1205_CR189 0x02F4 +#define ZD1205_CR190 0x02F8 +#define ZD1205_CR191 0x02FC +#define ZD1205_CR192 0x0300 +#define ZD1205_CR193 0x0304 +#define ZD1205_CR194 0x0308 +#define ZD1205_CR195 0x030C +#define ZD1205_CR196 0x0310 +#define ZD1205_CR197 0x0314 +#define ZD1205_CR198 0x0318 +#define ZD1205_CR199 0x031C +#define ZD1205_CR200 0x0320 +#define ZD1205_CR201 0x0324 +#define ZD1205_CR202 0x0328 +#define ZD1205_CR203 0x032C +#define ZD1205_CR204 0x0330 +#define ZD1205_CR205 0x0334 +#define ZD1205_CR206 0x0338 +#define ZD1205_CR207 0x033C +#define ZD1205_CR208 0x0340 +#define ZD1205_CR209 0x0344 +#define ZD1205_CR210 0x0348 +#define ZD1205_CR211 0x034C +#define ZD1205_CR212 0x0350 +#define ZD1205_CR213 0x0354 +#define ZD1205_CR214 0x0358 +#define ZD1205_CR215 0x035C +#define ZD1205_CR216 0x0360 +#define ZD1205_CR217 0x0364 +#define ZD1205_CR218 0x0368 +#define ZD1205_CR219 0x036C +#define ZD1205_CR220 0x0370 +#define ZD1205_CR221 0x0374 + +#define ZD1205_CR222 0x0378 +#define ZD1205_CR223 0x037C +#define ZD1205_CR224 0x0380 +#define ZD1205_CR225 0x0384 +#define ZD1205_CR226 0x0388 +#define ZD1205_CR227 0x038C +#define ZD1205_CR228 0x0390 +#define ZD1205_CR229 0x0394 +#define ZD1205_CR230 0x0398 +#define ZD1205_CR231 0x039C + +#define ZD1205_CR232 0x03A0 +#define ZD1205_CR233 0x03A4 +#define ZD1205_CR234 0x03A8 +#define ZD1205_CR235 0x03AC +#define ZD1205_CR236 0x03B0 + +#define ZD1205_CR240 0x03C0 +#define ZD1205_CR241 0x03C4 +#define ZD1205_CR242 0x03C8 +#define ZD1205_CR243 0x03CC +#define ZD1205_CR244 0x03D0 +#define ZD1205_CR245 0x03D4 + +#define ZD1205_CR251 0x03EC +#define ZD1205_CR252 0x03F0 +#define ZD1205_CR253 0x03F4 +#define ZD1205_CR254 0x03F8 +#define ZD1205_CR255 0x03FC + #define ZD1205_PHY_END 0x03fc #define RF_IF_CLK 0x0400 @@ -370,27 +373,46 @@ #define GPI_EN 0x0418 #define RADIO_PD 0x042C #define RF2948_PD 0x042C -#define rLED_CTRL 0x0644 -#define LED2 BIT_8 // Note: this is really LED1 -#define LED1 BIT_9 // Note: this is really LED2 + +#ifndef HOST_IF_USB + #define LED1 0x0430 + #define LED2 0x0434 +#else + #define rLED_CTRL 0x0644 + #define LED2 BIT_8 // Note: this is really LED1 + #define LED1 BIT_9 // Note: this is really LED2 +#endif + + #define EnablePSManualAGC 0x043C // 1: enable #define CONFIGPhilips 0x0440 #define SA2400_SER_AP 0x0444 #define I2C_WRITE 0x0444 // Same as SA2400_SER_AP (for compatible with ZD1201) #define SA2400_SER_RP 0x0448 + #define RADIO_PE 0x0458 #define RstBusMaster 0x045C #define RFCFG 0x0464 + #define HSTSCHG 0x046C + #define PHY_ON 0x0474 #define RX_DELAY 0x0478 #define RX_PE_DELAY 0x047C + + #define GPIO_1 0x0490 #define GPIO_2 0x0494 + + #define EncryBufMux 0x04A8 + + #define PS_Ctrl 0x0500 + #define ADDA_MBIAS_WarmTime 0x0508 + #define InterruptCtrl 0x0510 #define TSF_LowPart 0x0514 #define TSF_HighPart 0x0518 @@ -410,30 +432,37 @@ #define GroupHash_P1 0x0624 #define GroupHash_P2 0x0628 #define WEPTxIV 0x062C + #define BasicRateTbl 0x0630 #define MandatoryRateTbl 0x0634 #define RTS_CTS_Rate 0x0638 + #define Wep_Protect 0x063C #define RX_THRESHOLD 0x0640 #define TX_PE_CTRL 0x0644 #if defined(AMAC) -#define AfterPNP 0x0648 + #define AfterPNP 0x0648 #endif #if defined(OFDM) -#define AckTime80211 0x0658 + #define AckTime80211 0x0658 #endif #define Rx_OFFSET 0x065c + #define PHYDelay 0x066C #define BCNFIFO 0x0670 #define SnifferOn 0x0674 -#define EncryType 0x0678 +#define EncryptionType 0x0678 #define RetryMAX 0x067C #define CtlReg1 0x0680 //Bit0: IBSS mode - //Bit1: PwrMgt mode +//Bit1: PwrMgt mode +//Bit2-4 : Highest basic Rate +//Bit5: Lock bit +//Bit6: PLCP weight select +//Bit7: PLCP switch #define DeviceState 0x0684 #define UnderrunCnt 0x0688 #define Rx_Filter 0x068c @@ -446,12 +475,15 @@ #define CRC16Cnt 0x06A8 #define DecrypErr_UNI 0x06AC #define RxFIFOOverrun 0x06B0 + #define DecrypErr_Mul 0x06BC + #define NAV_CNT 0x06C4 #define NAV_CCA 0x06C8 #define RetryCnt 0x06CC #define ReadTcbAddress 0x06E8 + #define ReadRfdAddress 0x06EC #define CWmin_CWmax 0x06F0 #define TotalTxFrm 0x06F4 @@ -462,64 +494,79 @@ #define CAM_ROLL_TB_HIGH 0x0708 #define CAM_ADDRESS 0x070C #define CAM_DATA 0x0710 -#define DECRY_ERR_FLG_LOW 0x0714 -#define DECRY_ERR_FLG_HIGH 0x0718 -#define CAM_DEBUG 0x0728 -#define CAM_STATUS 0x072c +#define DECRY_ERR_FLG_LOW 0x0714 +#define DECRY_ERR_FLG_HIGH 0x0718 #define WEPKey0 0x0720 #define WEPKey1 0x0724 #define WEPKey2 0x0728 #define WEPKey3 0x072C -#define WEPKey4 0x0730 -#define WEPKey5 0x0734 -#define WEPKey6 0x0738 -#define WEPKey7 0x073C -#define WEPKey8 0x0740 -#define WEPKey9 0x0744 -#define WEPKey10 0x0748 -#define WEPKey11 0x074C -#define WEPKey12 0x0750 -#define WEPKey13 0x0754 -#define WEPKey14 0x0758 -#define WEPKey15 0x075c -#define TKIP_MODE 0x0760 - -#define Dbg_FIFO_Rd 0x0800 -#define Dbg_Select 0x0804 -#define FIFO_Length 0x0808 - -//#define RF_Mode 0x080C - -#define RSSI_MGC 0x0810 -#define PON 0x0818 -#define Rx_ON 0x081C -#define Tx_ON 0x0820 -#define CHIP_EN 0x0824 -#define LO_SW 0x0828 -#define TxRx_SW 0x082C -#define S_MD 0x0830 +#define CAM_DEBUG 0x0728 +#define CAM_STATUS 0x072c +#define WEPKey4 0x0730 +#define WEPKey5 0x0734 +#define WEPKey6 0x0738 +#define WEPKey7 0x073C +#define WEPKey8 0x0740 +#define WEPKey9 0x0744 +#define WEPKey10 0x0748 +#define WEPKey11 0x074C +#define WEPKey12 0x0750 +#define WEPKey13 0x0754 +#define WEPKey14 0x0758 +#define WEPKey15 0x075c +#define TKIP_MODE 0x0760 + +#define Dbg_FIFO_Rd 0x0800 +#define Dbg_Select 0x0804 +#define FIFO_Length 0x0808 + + +//#define RF_Mode 0x080C + +#define RSSI_MGC 0x0810 + +#define PON 0x0818 +#define Rx_ON 0x081C +#define Tx_ON 0x0820 +#define CHIP_EN 0x0824 +#define LO_SW 0x0828 +#define TxRx_SW 0x082C +#define S_MD 0x0830 #define USB_DEBUG_PORT 0x0888 // EEPROM Memmory Map Region -#define E2P_SUBID 0x0900 -#define E2P_POD 0x0904 +#define E2P_SUBID 0x0900 +#define E2P_POD 0x0904 #define E2P_MACADDR_P1 0x0908 #define E2P_MACADDR_P2 0x090C +#ifndef HOST_IF_USB +#define E2P_PWR_CAL_VALUE 0x0910 + +#define E2P_PWR_INT_VALUE 0x0920 + +#define E2P_ALLOWED_CHANNEL 0x0930 +#define E2P_PHY_REG 0x0934 + +#define E2P_REGION_CODE 0x0960 +#define E2P_FEATURE_BITMAP 0x0964 +#endif + //------------------------------------------------------------------------- // Command Block (CB) Field Definitions //------------------------------------------------------------------------- //- RFD Command Bits -#define RFD_EL_BIT BIT_0 // RFD EL Bit +#define RFD_EL_BIT BIT_0 // RFD EL Bit //- CB Command Word -#define CB_S_BIT 0x1 // CB Suspend Bit +#define CB_S_BIT 0x1 // CB Suspend Bit //- CB Status Word -#define CB_STATUS_COMPLETE 0x1234 // CB Complete Bit +#define CB_STATUS_COMPLETE 0x1234 // CB Complete Bit + +#define RFD_STATUS_COMPLETE 0x1234 //0x34120000 // RFD Complete Bit -#define RFD_STATUS_COMPLETE 0x1234 //0x34120000 // RFD Complete Bit /************************************************************************** ** MAC Register Bit Definitions @@ -554,531 +601,681 @@ #define DBG_MSG_SHOW 0x1 #define DBG_MSG_HIDE 0x0 -#define RFD_POINTER(skb, macp) ((zd1205_RFD_t *) (((unsigned char *)((skb)->data))-((macp)->rfd_size))) + +#define RFD_POINTER(skb, macp) ((zd1205_RFD_t *) (((unsigned char *)((skb)->data))-((macp)->rfd_size))) #define SKB_RFD_STATUS(skb, macp) ((RFD_POINTER((skb),(macp)))->CbStatus) + /************************************************************************** ** Descriptor Data Structure ***************************************************************************/ -struct driver_stats { - struct net_device_stats net_stats; +struct driver_stats +{ + struct net_device_stats net_stats; +/* ath_desc: added iw_get_stats */ #ifdef CONFIG_NET_WIRELESS - struct iw_statistics iw_stats; + struct iw_statistics iw_stats; #endif - unsigned long tx_late_col; - unsigned long tx_ok_defrd; - unsigned long tx_one_retry; - unsigned long tx_mt_one_retry; - unsigned long rcv_cdt_frames; - unsigned long xmt_fc_pkts; - unsigned long rcv_fc_pkts; - unsigned long rcv_fc_unsupported; - unsigned long xmt_tco_pkts; - unsigned long rcv_tco_pkts; + unsigned long tx_late_col; + unsigned long tx_ok_defrd; + unsigned long tx_one_retry; + unsigned long tx_mt_one_retry; + unsigned long rcv_cdt_frames; + unsigned long xmt_fc_pkts; + unsigned long rcv_fc_pkts; + unsigned long rcv_fc_unsupported; + unsigned long xmt_tco_pkts; + unsigned long rcv_tco_pkts; - unsigned long rx_intr_pkts; + unsigned long rx_intr_pkts; }; //------------------------------------------------------------------------- // Transmit Command Block (TxCB) //------------------------------------------------------------------------- -typedef struct zd1205_HwTCB_s { - u32 CbStatus; // Block status - u32 CbCommand; // Block command - u32 NextCbPhyAddrLowPart; // Next TCB address(low part) - u32 NextCbPhyAddrHighPart; // Next TCB address(high part) - u32 TxCbFirstTbdAddrLowPart; // First TBD address(low part) - u32 TxCbFirstTbdAddrHighPart; // First TBD address(high part) - u32 TxCbTbdNumber; // Number of TBDs for this TCB -} zd1205_HwTCB_t; +typedef struct zd1205_HwTCB_s +{ + u32 CbStatus; // Bolck status + u32 CbCommand; // Block command +/* ath_desc: AMD64 support */ +#ifndef __LP64__ + u32 NextCbPhyAddrLowPart; // Next TCB address(low part) + u32 NextCbPhyAddrHighPart; // Next TCB address(high part) + u32 TxCbFirstTbdAddrLowPart; // First TBD address(low part) + u32 TxCbFirstTbdAddrHighPart; // First TBD address(high part) +#else + u64 NextCbPhyAddr; // Next TCB address + u64 TxCbFirstTbdAddr; // First TBD address +#endif + u32 TxCbTbdNumber; // Number of TBDs for this TCB +} +zd1205_HwTCB_t; //------------------------------------------------------------------------- // Transmit Buffer Descriptor (TBD) //------------------------------------------------------------------------- -typedef struct zd1205_TBD_s { - u32 TbdBufferAddrLowPart; // Physical Transmit Buffer Address - u32 TbdBufferAddrHighPart; // Physical Transmit Buffer Address - u32 TbdCount; // Data length - u32 PrvFragLen; -} zd1205_TBD_t; +typedef struct zd1205_TBD_s +{ +#ifndef __LP64__ + u32 TbdBufferAddrLowPart; // Physical Transmit Buffer Address + u32 TbdBufferAddrHighPart; // Physical Transmit Buffer Address +#else + u64 TbdBufferAddr; +#endif + u32 TbdCount; // Data length +#ifdef HOST_IF_USB + + u32 PrvFragLen; +#endif +} +zd1205_TBD_t; //------------------------------------------------------------------------- // Receive Frame Descriptor (RFD) //------------------------------------------------------------------------- -typedef struct zd1205_RFD_s { - u32 CbStatus; // Block status - u32 ActualCount; // Rx buffer length - u32 CbCommand; // Block command - u32 MaxSize; // - u32 NextCbPhyAddrLowPart; // Next RFD address(low part) - u32 NextCbPhyAddrHighPart; // Next RFD address(high part) - u8 RxBuffer[MAX_WLAN_SIZE];// Rx buffer - u32 Pad[2]; // Pad to 16 bytes alignment - easy view for debug -} __attribute__ ((__packed__)) zd1205_RFD_t; - -typedef struct zd1205_Ctrl_Set_s { - u8 CtrlSetting[40]; -} zd1205_Ctrl_Set_t; +struct zd1205_RFD_s +{ + u32 CbStatus; // Bolck status + u32 ActualCount; // Rx buffer length + u32 CbCommand; // Block command + u32 MaxSize; // +#ifndef __LP64__ + u32 NextCbPhyAddrLowPart; // Next RFD address(low part) + u32 NextCbPhyAddrHighPart; // Next RFD address(high part) +#else + u64 NextCbPhyAddr; // Next RFD address +#endif + u8 RxBuffer[MAX_WLAN_SIZE]; // Rx buffer + u32 Pad[2]; // Pad to 16 bytes alignment - easy view for debug +} __attribute__ ((__packed__)); +typedef struct zd1205_RFD_s zd1205_RFD_t; + -typedef struct zd1205_Header_s { - u8 MacHeader[32]; +typedef struct zd1205_Ctrl_Set_s +{ + u8 CtrlSetting[40]; +} +zd1205_Ctrl_Set_t; -} zd1205_Header_t; +typedef struct zd1205_Header_s +{ + u8 MacHeader[32]; + +} +zd1205_Header_t; //------------------------------------------------------------------------- // ZD1205SwTcb -- Software Transmit Control Block. This structure contains // all of the variables that are related to a specific Transmit Control // block (TCB) //------------------------------------------------------------------------- +typedef struct zd1205_SwTcb_s +{ + // Link to the next SwTcb in the list + struct zd1205_SwTcb_s *next; + struct sk_buff *skb; + + // physical and virtual pointers to the hardware TCB + zd1205_HwTCB_t *pTcb; + unsigned long TcbPhys; + + // Physical and virtual pointers to the TBD array for this TCB + zd1205_TBD_t *pFirstTbd; + unsigned long FirstTbdPhys; + + zd1205_Ctrl_Set_t *pHwCtrlPtr; + unsigned long HwCtrlPhys; + + zd1205_Header_t *pHwHeaderPtr; + unsigned long HwHeaderPhys; + u32 TcbCount; + u8 LastFrag; + u8 MsgID; + u8 FrameType; + u8 Rate; + u16 aid; + u8 bIntraBss; + //u8 encryType; + +#ifdef HOST_IF_USB + + u8 bHasCompleteBeforeSend; + u8 bHasBeenDelayedBefore; +#endif + + u8 CalMIC[MIC_LNG+1]; + u8 MIC_Start; + u8 MIC_Len; + u32 LengthDiff; +} +zd1205_SwTcb_t; -typedef struct zd1205_SwTcb_s { - // Link to the next SwTcb in the list - struct zd1205_SwTcb_s *next; - struct sk_buff *skb; - - // physical and virtual pointers to the hardware TCB - zd1205_HwTCB_t *pTcb; - dma_addr_t TcbPhys; - - // Physical and virtual pointers to the TBD array for this TCB - zd1205_TBD_t *pFirstTbd; - dma_addr_t FirstTbdPhys; - - zd1205_Ctrl_Set_t *pHwCtrlPtr; - dma_addr_t HwCtrlPhys; - - zd1205_Header_t *pHwHeaderPtr; - dma_addr_t HwHeaderPhys; - u32 TcbCount; - u8 LastFrag; - u8 MsgID; - u8 FrameType; - u8 Rate; - u16 aid; - u8 bIntraBss; - //u8 encryType; - u8 bHasCompleteBeforeSend; - u8 bHasBeenDelayedBefore; -} zd1205_SwTcb_t; typedef struct SwTcbQ_s { - zd1205_SwTcb_t *first; /* first zd1205_SwTcb_t in Q */ - zd1205_SwTcb_t *last; /* last zd1205_SwTcb_t in Q */ - u16 count; /* number of zd1205_SwTcb_t in Q */ -} zd1205_SwTcbQ_t; + zd1205_SwTcb_t *first; /* first zd1205_SwTcb_t in Q */ + zd1205_SwTcb_t *last; /* last zd1205_SwTcb_t in Q */ + u16 count; /* number of zd1205_SwTcb_t in Q */ +} +zd1205_SwTcbQ_t; //- Wireless 24-byte Header -typedef struct wla_Header_s { - u8 FrameCtrl[2]; - u8 Duration[2]; - u8 DA[6]; - u8 BSSID[6]; - u8 SA[6]; - u8 SeqCtrl[2]; -} wla_Header_t; +typedef struct wla_Header_s +{ + u8 FrameCtrl[2]; + u8 Duration[2]; + u8 DA[6]; + u8 BSSID[6]; + u8 SA[6]; + u8 SeqCtrl[2]; +} +wla_Header_t; +struct hostap_ieee80211_hdr +{ + u16 frame_control; + u16 duration_id; + u8 addr1[6]; + u8 addr2[6]; + u8 addr3[6]; + u16 seq_ctrl; + u8 addr4[6]; +} +__attribute__ ((packed)); //from station -typedef struct plcp_wla_Header_s { - u8 PlcpHdr[PLCP_HEADER]; - u8 FrameCtrl[2]; - u8 Duration[2]; - u8 Address1[6]; - u8 Address2[6]; - u8 Address3[6]; - u8 SeqCtrl[2]; -} plcp_wla_Header_t; - -typedef struct ctrl_Set_parm_s { - u8 Rate; - u8 Preamble; - u8 encryType; - u8 vapId; - //u8 bHwAppendMic; - u32 CurrFragLen; - u32 NextFragLen; -} ctrl_Set_parm_t; - -typedef struct tuple_s { - u8 ta[6]; //TA (Address 2) - u16 sn; - u8 fn; - u8 full; -} tuple_t; - -typedef struct tuple_Cache_s { - tuple_t cache[TUPLE_CACHE_SIZE]; - u8 freeTpi; -} tuple_Cache_t; - -typedef struct defrag_Mpdu_s { - u8 ta[6]; - u8 inUse; - u8 fn; - u32 eol; - u16 sn; - void *buf; - void *dataStart; -} defrag_Mpdu_t; - -typedef struct defrag_Array_s { - defrag_Mpdu_t mpdu[MAX_DEFRAG_NUM]; -} defrag_Array_t; +typedef struct plcp_wla_Header_s +{ + u8 PlcpHdr[PLCP_HEADER]; //Oh! shit!!! + u8 FrameCtrl[2]; + u8 Duration[2]; + u8 Address1[6]; + u8 Address2[6]; + u8 Address3[6]; + u8 SeqCtrl[2]; +} +plcp_wla_Header_t; + +typedef struct ctrl_Set_parm_s +{ + u8 Rate; + u8 Preamble; + u8 encryType; + u8 vapId; + //u8 bHwAppendMic; + u32 CurrFragLen; + u32 NextFragLen; +} +ctrl_Set_parm_t; + +typedef struct tuple_s +{ + u8 ta[6]; //TA (Address 2) + u16 sn; + u8 fn; + u8 full; +} +tuple_t; + +typedef struct tuple_Cache_s +{ + tuple_t cache[TUPLE_CACHE_SIZE]; + u8 freeTpi; +} +tuple_Cache_t; + +typedef struct defrag_Mpdu_s +{ + u8 ta[6]; + u8 inUse; + u8 fn; + u32 eol; + u16 sn; + void *buf; + void *dataStart; +} +defrag_Mpdu_t; + + +typedef struct defrag_Array_s +{ + defrag_Mpdu_t mpdu[MAX_DEFRAG_NUM]; +} +defrag_Array_t; /*Rx skb holding structure*/ -struct rx_list_elem { - struct list_head list_elem; - dma_addr_t dma_addr; - struct sk_buff *skb; - u32 UnFinishFrmLen; -}__attribute__ ((__packed__)); +struct rx_list_elem +{ + struct list_head list_elem; + dma_addr_t dma_addr; + struct sk_buff *skb; +#ifdef HOST_IF_USB + + u32 UnFinishFrmLen; +#endif +} +__attribute__ ((__packed__)); + #define ZD1211_MAX_MTU 2400 #define MAX_EPINT_BUFFER 64 - -#define NUM_TCB 64//32 +#define NUM_TCB 64//32 #define NUM_TBD_PER_TCB (2+MAX_SKB_FRAGS) //3 -#define NUM_TBD (NUM_TCB * NUM_TBD_PER_TCB) -#define NUM_RFD 32 -#define ZD1205_INT_MASK CFG_NEXT_BCN_EN | DTIM_NOTIFY_EN | WAKE_UP_EN +#define NUM_TBD (NUM_TCB * NUM_TBD_PER_TCB) +#define NUM_RFD 32 +#ifdef HOST_IF_USB +// #define ZD1205_INT_MASK CFG_NEXT_BCN_EN | DTIM_NOTIFY_EN | WAKE_UP_EN +#define ZD1205_INT_MASK 0x4F0000 +#else + #define ZD1205_INT_MASK TX_COMPLETE_EN | RX_COMPLETE_EN | RETRY_FAIL_EN | CFG_NEXT_BCN_EN | DTIM_NOTIFY_EN | WAKE_UP_EN | BUS_ABORT_EN +#endif #define TX_RING_BYTES (NUM_TCB * (sizeof(zd1205_HwTCB_t) + sizeof(zd1205_Ctrl_Set_t) + sizeof(zd1205_Header_t)))+ (NUM_TBD * sizeof(zd1205_TBD_t)) #define ZD1205_REGS_SIZE 4096 -#define ZD_RX_OFFSET 0x00 +#define ZD_RX_OFFSET 0x03 -struct zdap_ioctl { - u16 cmd; /* Command to run */ - u32 addr; /* Length of the data buffer */ - u32 value; /* Pointer to the data buffer */ - u8 data[0x100]; +struct zdap_ioctl +{ + u16 cmd; /* Command to run */ + u32 addr; /* Length of the data buffer */ + u32 value; /* Pointer to the data buffer */ + u8 data[0x100]; }; -struct zd1205_private { - //linux used - struct net_device *device; - struct usb_device *usb; - int dev_index; - struct urb *ctrl_urb, *rx_urb, *tx_urb, *intr_urb, *reg_urb; - struct urb *read_urb, *write_urb; /* tmp urb pointer for rx_tasklet, tx_tasklet */ - wait_queue_head_t regSet_wait; - wait_queue_head_t iorwRsp_wait; - wait_queue_head_t term_wait; - struct semaphore ps_sem; - struct semaphore bcn_sem; - struct semaphore reg_sem; - struct semaphore config_sem; - struct usb_interface *interface; /* the interface for this device */ - spinlock_t intr_lock; - spinlock_t rx_pool_lock; - u8 tx_buff[ZD1211_MAX_MTU]; - u8 IntEPBuffer[MAX_EPINT_BUFFER]; - u8 IntEPBuffer2[MAX_EPINT_BUFFER]; - u8 IntEPBuffer3[MAX_EPINT_BUFFER]; - u8 num_interrupt_in; - u8 num_interrupt_out; - u8 num_bulk_in; - u8 num_bulk_out; - u8 in_interval; - u8 out_interval; - u8 ep4isIntOut; - u8 cmd_end; - u8 read_end; - u16 wMaxPacketSize; +struct zd1205_private +{ + //linux used + struct net_device *device; + +#ifdef HOST_IF_USB + + struct usb_device *usb; + int dev_index; + struct urb *ctrl_urb, *rx_urb, *tx_urb, *intr_urb, *reg_urb; + struct urb *read_urb, *write_urb; /* tmp urb pointer for rx_tasklet, tx_tasklet */ + wait_queue_head_t regSet_wait; + wait_queue_head_t iorwRsp_wait; + wait_queue_head_t term_wait; + wait_queue_head_t msdelay; + struct semaphore ps_sem; + struct semaphore bcn_sem; + struct semaphore reg_sem; + struct semaphore config_sem; + struct usb_interface *interface; /* the interface for this device */ + spinlock_t intr_lock; + spinlock_t rx_pool_lock; + u8 tx_buff[ZD1211_MAX_MTU]; +#if 1//(LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + + u8 IntEPBuffer[MAX_EPINT_BUFFER]; +#else + + u8 *IntEPBuffer; + dma_addr_t IntBufferHandle; +#endif + + u8 IntEPBuffer2[MAX_EPINT_BUFFER]; + u8 IntEPBuffer3[MAX_EPINT_BUFFER]; + u8 num_interrupt_in; + u8 num_interrupt_out; + u8 num_bulk_in; + u8 num_bulk_out; + u8 in_interval; + u8 out_interval; + u8 ep4isIntOut; + u8 cmd_end; + u8 read_end; + u16 wMaxPacketSize; #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - unsigned int flags; - unsigned int kevent_flags; + + unsigned int flags; + unsigned int kevent_flags; +#else + + unsigned long flags; + unsigned long kevent_flags; +#endif + + int release; /* release number */ + int total_rx_cnt; + int end; + u32 usbTxCnt; + u32 usbTxCompCnt; + struct rx_list_elem **rx_struct_array; + struct tasklet_struct zd1211_rx_tasklet; + struct tasklet_struct zd1211_tx_tasklet; + struct tasklet_struct rx_buff_tasklet; + struct work_struct scan_tout_event; + + struct work_struct kevent; + struct zdap_ioctl zdreq; + /* ath_desc: support for unpatched wpasupplicant */ + struct iw_mlme mlme_req; + struct ifreq ifreq; + struct zydas_wlan_param zd_wpa_req; + int ifcmd; + + //debug counter + u32 regWaitRCompCnt; + u32 regWaitWCompCnt; + u32 regRWCompCnt; + u32 regWaitRspCnt; + u32 regRspCompCnt; + u32 regUnCompCnt; + u32 regRdSleepCnt; #else - unsigned long flags; - unsigned long kevent_flags; + + struct pci_dev *pdev; #endif - int release; /* release number */ - int total_rx_cnt; - int end; - u32 usbTxCnt; - u32 usbTxCompCnt; - struct rx_list_elem **rx_struct_array; - struct tasklet_struct zd1211_rx_tasklet; - struct tasklet_struct zd1211_tx_tasklet; - struct tasklet_struct rx_buff_tasklet; - struct work_struct kevent; - struct zdap_ioctl zdreq; - struct ifreq ifreq; - int ifcmd; - //debug counter - u32 regWaitRCompCnt; - u32 regWaitWCompCnt; - u32 regRWCompCnt; - u32 regWaitRspCnt; - u32 regRspCompCnt; - u32 regUnCompCnt; - u32 regRdSleepCnt; - - struct driver_stats drv_stats; - struct timer_list watchdog_timer; /* watchdog timer id */ - struct timer_list tm_chal_id; - struct timer_list tm_scan_id; - struct timer_list tm_auth_id; - struct timer_list tm_asoc_id; - struct timer_list tm_hking_id; - struct timer_list tm_mgt_id; - char ifname[IFNAMSIZ]; - spinlock_t bd_lock; /* board lock */ - spinlock_t bd_non_tx_lock; /* Non transmit command lock */ - spinlock_t q_lock; - spinlock_t cs_lock; - spinlock_t conf_lock; - int using_dac; - struct tasklet_struct zd1205_tasklet; - struct tasklet_struct zd1205_ps_tasklet; - struct tasklet_struct zd1205_tx_tasklet; - - struct proc_dir_entry *proc_parent; - struct list_head active_rx_list; /* list of rx buffers */ - struct list_head rx_struct_pool; /* pool of rx buffer struct headers */ - u16 rfd_size; - u8 rev_id; /* adapter PCI revision ID */ - u8 sniffer_on; - int skb_req; /* number of skbs neede by the adapter */ - rwlock_t isolate_lock; - int driver_isolated; - char *cable_status; - void *regp; - u8 macAdr[8]; - u8 mcastAdr[8]; - u32 intrMask; - - zd1205_SwTcbQ_t *freeTxQ; - zd1205_SwTcbQ_t *activeTxQ; - - u32 txCachedSize; - u8 *txCached; - - u16 dtimCount; - u8 numTcb; - u16 numTbd; - u8 numRfd; - u8 numTbdPerTcb; - u32 rxOffset; - - card_Setting_t cardSetting; - u8 BSSID[8]; - u32 dbg_flag; - - //debug counter - u32 bcnCnt; - u32 dtimCnt; - u32 txCmpCnt; - u32 rxCnt; - u32 retryFailCnt; - - u32 txCnt; - u32 txIdleCnt; - u32 rxIdleCnt; - u32 rxDupCnt; - - u32 DriverDiscardedFrmCauseByMulticastList; - u32 DriverDiscardedFrmCauseByFrmCtrl; - u32 DriverReceivedFrm; - u32 DriverRxMgtFrmCnt; - u32 ErrLongFrmCnt; - u32 ErrShortFrmCnt; - - u32 ErrToHostFrmCnt; - u32 ErrZeroLenFrmCnt; - u32 ArFreeFailCnt; - u32 ArSearchFailCnt; - u32 ArAgedCnt; - - u32 DropFirstFragCnt; - u32 rxNeedFragCnt; - u32 rxCompFragCnt; - u32 AllocSkbFailCnt; - u32 txQueToUpCnt; - u32 txQueSetCnt; - u32 sleepCnt; - u32 wakeupCnt; - - //HMAC counter - u32 hwTotalRxFrm; - u32 hwCRC32Cnt; - u32 hwCRC16Cnt; - u32 hwDecrypErr_UNI; - u32 hwDecrypErr_Mul; - u32 hwRxFIFOOverrun; - u32 hwTotalTxFrm; - u32 hwUnderrunCnt; - - u32 hwRetryCnt; - u32 TxStartTime; - u32 HMAC_TxTimeout; - - u8 bTraceSetPoint; - u8 bEnableTxPwrCtrl; - u8 TxOFDMCnt; - u8 TxOFDMType; - u8 TxPwrCCK; - u8 TxPwrOFDM; // 6M - 36M - - u8 bFixedRate; - u8 bDataTrafficLight; - u8 NoBcnDetectedCnt; - u8 LinkTimer; - u32 LinkLEDn; - u32 LinkLED_OnDur; - u32 LinkLED_OffDur; - u32 DataLED; - - u16 AddrEntryTable; - u8 bAllowAccessRegister; - U8 FlashType; - u16 ReadRegCount; - u16 SetPoint; - u8 dtim_notify_en; - u8 config_next_bcn_en; - u32 invalid_frame_good_crc; - u8 bGkInstalled; - u8 rxSignalQuality; - u8 rxSignalStrength; - u8 rxSignalQualityIndB; - u8 rxSignalQuality1; - u8 rxSignalQuality2; - u16 EepSetPoint[14]; - u16 SetPointOFDM[3][14];//JWEI 2003/12/31 - u32 RegionCode; - u32 RF_Mode; - u8 MaxTxPwrSet; - u8 MinTxPwrSet; - u8 bss_index; - bss_info_t BSSInfo[BSS_INFO_NUM]; - tuple_Cache_t cache; - - defrag_Array_t defragArray; - rxInfo_t rxInfo; - - // added for STA - atomic_t DoNotSleep; - u8 bSurpriseRemoved; - u8 bAssoc; - u8 PwrState; - u8 SuggestionMode; - u8 bPSMSupported; - u8 bAPAlive; - u8 BSS_Members; - u8 Notification; - u8 WorseSQThr; - u8 bIBSS_Wakeup_Dest; - u8 bFrmRxed1; - u8 bAnyActivity; - u8 NiceSQThr; - u8 NiceSQThr_OFDM; - u8 bEnableSwAntennaDiv; - u8 Ant_MonitorDur1; - u8 Ant_MonitorDur2; - u8 CR138Flag; - u8 MulticastAddr[194]; // the first byte is the number of multicast addresses - u32 TotalTxDataFrmBytes; - - u32 TotalRxDataFrmBytes; - u32 txMulticastFrm; - u32 txMulticastOctets; - u32 txUnicastFrm; - u32 txUnicastOctets; - u32 NormalBackoff; - u32 UrgentBackoff; - u32 LooseBackoff; - u32 Acc_Num_OFDM; - u32 Acc_SQ_OFDM; - u32 Bcn_Acc_Num; - u32 Bcn_Acc_SQ; - u32 CheckForHangLoop; - u16 SequenceNum; - u16 iv16; - u32 iv32; - u32 Acc_Num; - u32 Acc_SQ; - u32 GroupHashP1; - u32 GroupHashP2; - u32 PSThreshhold; - u8 rxDecryType; - u32 rx11bDataFrame; - u32 rxOFDMDataFrame; - + + struct driver_stats drv_stats; +#if ZDCONF_WE_STAT_SUPPORT == 1 + + struct iw_statistics iwstats; +#elif !defined(ZDCONF_WE_STAT_SUPPORT) + #error "Undefine ZDCONF_WE_STAT_SUPPORT" +#endif + + struct timer_list watchdog_timer; /* watchdog timer id */ + struct timer_list tm_chal_id; + struct timer_list tm_scan_id; + struct timer_list tm_auth_id; + struct timer_list tm_asoc_id; + struct timer_list tm_hking_id; + struct timer_list tm_mgt_id; + char ifname[IFNAMSIZ]; + spinlock_t bd_lock; /* board lock */ + spinlock_t bd_non_tx_lock; /* Non transmit command lock */ + spinlock_t q_lock; + spinlock_t cs_lock; + spinlock_t conf_lock; + int using_dac; + struct tasklet_struct zd1205_tasklet; + struct tasklet_struct zd1205_ps_tasklet; + struct tasklet_struct zd1205_tx_tasklet; + struct proc_dir_entry *proc_parent; + struct list_head active_rx_list; /* list of rx buffers */ + struct list_head rx_struct_pool; /* pool of rx buffer struct headers */ + u16 rfd_size; + u8 rev_id; /* adapter PCI revision ID */ + u8 sniffer_on; + int skb_req; /* number of skbs neede by the adapter */ + + rwlock_t isolate_lock; + + int driver_isolated; + char *cable_status; + void *regp; + u8 macAdr[8]; + u8 mcastAdr[8]; + u32 intrMask; + zd1205_SwTcbQ_t *freeTxQ; + zd1205_SwTcbQ_t *activeTxQ; + u32 txCachedSize; + u8 *txCached; + u16 dtimCount; + u8 numTcb; + u16 numTbd; + u8 numRfd; + u8 numTbdPerTcb; + u32 rxOffset; + u32 debugflag; + card_Setting_t cardSetting; + u8 BSSID[8]; + u32 dbg_flag; + + //debug counter + u32 bcnCnt; + u32 dtimCnt; + u32 txCmpCnt; + u32 rxCnt; + u32 retryFailCnt; + u32 txCnt; + u32 txIdleCnt; + u32 rxIdleCnt; + u32 rxDupCnt; + + u32 DriverDiscardedFrmCauseByMulticastList; + u32 DriverDiscardedFrmCauseByFrmCtrl; + u32 DriverReceivedFrm; + u32 DriverRxMgtFrmCnt; + u32 ErrLongFrmCnt; + u32 ErrShortFrmCnt; + + u32 ErrToHostFrmCnt; + u32 ErrZeroLenFrmCnt; + u32 ArFreeFailCnt; + u32 ArSearchFailCnt; + u32 ArAgedCnt; + + u32 DropFirstFragCnt; + u32 rxNeedFragCnt; + u32 rxCompFragCnt; + u32 AllocSkbFailCnt; + u32 txQueToUpCnt; + u32 txQueSetCnt; + u32 sleepCnt; + u32 wakeupCnt; + + //HMAC counter + u32 hwTotalRxFrm; + u32 hwCRC32Cnt; + u32 hwCRC16Cnt; + u32 hwDecrypErr_UNI; + u32 hwDecrypErr_Mul; + u32 hwRxFIFOOverrun; + u32 hwTotalTxFrm; + u32 hwUnderrunCnt; + + u32 hwRetryCnt; + u32 TxStartTime; + u32 HMAC_TxTimeout; + + u8 bTraceSetPoint; + u8 bEnableTxPwrCtrl; + u8 TxOFDMCnt; + u8 TxOFDMType; + u8 TxPwrCCK; + u8 TxPwrOFDM; // 6M - 36M + u8 bFixedRate; + u8 bDataTrafficLight; + u8 NoBcnDetectedCnt; + u8 LinkTimer; + u32 LinkLEDn; + u32 LinkLED_OnDur; + u32 LinkLED_OffDur; + u32 DataLED; + + u16 AddrEntryTable; + u8 bAllowAccessRegister; + U8 FlashType; + u16 ReadRegCount; + u16 SetPoint; + u8 dtim_notify_en; + u8 config_next_bcn_en; + + u32 invalid_frame_good_crc; + u8 bGkInstalled; + u8 rxSignalQuality; + + u8 rxSignalStrength; + u8 rxSignalQualityIndB; + u8 rxSignalQuality1; + u8 rxSignalQuality2; + u16 EepSetPoint[14]; + u16 SetPointOFDM[3][14];//JWEI 2003/12/31 + u32 RegionCode; + u32 RF_Mode; + u8 PA_Type; + u8 MaxTxPwrSet; + u8 MinTxPwrSet; + u8 bss_index; + bss_info_t BSSInfo[BSS_INFO_NUM]; + tuple_Cache_t cache; + + defrag_Array_t defragArray; + rxInfo_t rxInfo; + + //added for STA + atomic_t DoNotSleep; + u8 bSurpriseRemoved; + u8 bAssoc; + u8 PwrState; + u8 SuggestionMode; + u8 bPSMSupported; + u8 bAPAlive; + u8 BSS_Members; + u8 Notification; + u8 WorseSQThr; + u8 bIBSS_Wakeup_Dest; + u8 bFrmRxed1; + u8 bAnyActivity; + u8 NiceSQThr; + u8 NiceSQThr_OFDM; + u8 bEnableSwAntennaDiv; + u8 Ant_MonitorDur1; + u8 Ant_MonitorDur2; + u8 CR138Flag; + u8 MulticastAddr[194]; // the first byte is the number of multicast addresses + u32 TotalTxDataFrmBytes; + + u32 TotalRxDataFrmBytes; + u32 txMulticastFrm; + u32 txMulticastOctets; + u32 txUnicastFrm; + u32 txUnicastOctets; + u32 NormalBackoff; + u32 UrgentBackoff; + u32 LooseBackoff; + u32 Acc_Num_OFDM; + u32 Acc_SQ_OFDM; + u32 Bcn_Acc_Num; + u32 Bcn_Acc_SQ; + u32 CheckForHangLoop; + u16 SequenceNum; + u16 iv16; + u32 iv32; + u32 Acc_Num; + u32 Acc_SQ; + u32 GroupHashP1; + u32 GroupHashP2; + u32 PSThreshhold; + u8 rxDecryType; + u32 rx11bDataFrame; + u32 rxOFDMDataFrame; + #ifdef OFDM - u8 bTxBurstEnable; - int TxBurstCount; + + u8 bTxBurstEnable; + int TxBurstCount; +#endif + +#ifdef HOST_IF_USB + + u32 USBCSRAddress; + u8 bUSBDeveiceAttached; + u8 bUSBDeveiceResetting; + u8 bHandleNonRxTxRunning; + u32 REG_6e4_Add; + u32 Continue2Rx; + u8 LastZDContinuousTxRate; + u32 WaitLenInfoCnt; + u32 CompLenInfoCnt; + u32 NoMergedRxCnt; + u8 bFlashable; #endif - u32 USBCSRAddress; - u8 bUSBDeveiceAttached; - u8 bUSBDeveiceResetting; - u8 bHandleNonRxTxRunning; - u32 REG_6e4_Add; - u32 Continue2Rx; - u32 WaitLenInfoCnt; - u32 CompLenInfoCnt; - u32 NoMergedRxCnt; - u8 bFlashable; - u8 bDisableTx; - u8 PHYSettingFlag; - u8 PHYTestIndex; - u8 PHYTestTimer; - u8 PHYTestTimerCount; - u8 PHYTestRssiBound; - u8 PHYTestRssi; - u8 PHYLowPower; - u8 IPCFlag; - u8 AdapterMaxRate; - u8 PHYFreOFDMframe; - u8 EnableTxPwrCtrl; - u32 PHYTestTotal; - u32 TrafficBound; - u32 DriverRxFrmCnt; - u64 rxDataPerSec; - u64 txDataPerSec; - u32 txUnCachedSize; - dma_addr_t txUnCachedPhys; - void *txUnCached; + u8 bDisableTx; + u8 PHYSettingFlag; + u8 PHYTestIndex; + u8 PHYTestTimer; + u8 PHYTestTimerCount; + u8 PHYTestRssiBound; + u8 PHYTestRssi; + u8 PHYLowPower; + u8 IPCFlag; + u8 AdapterMaxRate; + + u8 PHYFreOFDMframe; + u8 EnableTxPwrCtrl; + + u32 PHYTestTotal; + u32 TrafficBound; + u32 DriverRxFrmCnt; + u64 rxDataPerSec; + u64 txDataPerSec; + + u32 txUnCachedSize; + dma_addr_t txUnCachedPhys; + void *txUnCached; + //Modified for Supplicant + int bDefaultIbssMacMode; + u32 bOLBC; + u32 nOLBC_CounterInSec; + }; typedef struct zd1205_private zd1205_private_t; -struct usb_eth_dev { - char *name; - __u16 vendor; - __u16 device; - __u32 private; /* LSB is gpio reset value */ + +struct usb_eth_dev +{ + char *name; + __u16 vendor; + + __u16 device; + __u32 private; /* LSB is gpio reset value */ }; -#define ZD_IOCTL_REG_READ 0x01 -#define ZD_IOCTL_REG_WRITE 0x02 -#define ZD_IOCTL_MEM_DUMP 0x03 -#define ZD_IOCTL_RATE 0x04 -#define ZD_IOCTL_SNIFFER 0x05 -#define ZD_IOCTL_CAM_DUMP 0x06 -#define ZD_IOCTL_DUMP_PHY 0x07 -#define ZD_IOCTL_CARD_SETTING 0x08 -#define ZD_IOCTL_HASH_DUMP 0x09 -#define ZD_IOCTL_RFD_DUMP 0x0A -#define ZD_IOCTL_MEM_READ 0x0B -#define ZD_IOCTL_MEM_WRITE 0x0C +#define ZD_IOCTL_REG_READ 0x01 +#define ZD_IOCTL_REG_WRITE 0x02 +#define ZD_IOCTL_MEM_DUMP 0x03 +#define ZD_IOCTL_RATE 0x04 +#define ZD_IOCTL_SNIFFER 0x05 +#define ZD_IOCTL_CAM_DUMP 0x06 +#define ZD_IOCTL_DUMP_PHY 0x07 +#define ZD_IOCTL_CARD_SETTING 0x08 +#define ZD_IOCTL_HASH_DUMP 0x09 +#define ZD_IOCTL_RFD_DUMP 0x0A +#define ZD_IOCTL_MEM_READ 0x0B +#define ZD_IOCTL_MEM_WRITE 0x0C //for STA -#define ZD_IOCTL_TX_RATE 0x0D -#define ZD_IOCTL_EEPROM 0x0E +#define ZD_IOCTL_TX_RATE 0x0D +#define ZD_IOCTL_EEPROM 0x0E + +//for debug purposes +#define ZD_IOCTL_BCN 0x10 +#define ZD_IOCTL_REG_READ16 0x11 +#define ZD_IOCTL_REG_WRITE16 0x12 + +//for CAM Test +#define ZD_IOCTL_CAM_READ 0x13 +#define ZD_IOCTL_CAM_WRITE 0x14 +#define ZD_IOCTL_CAM_RESET 0x15 +#define ZD_IOCTL_READ_PHY 0x16 +#define ZD_IOCTL_WRITE_PHY 0x17 +#define ZD_IOCTL_CONT_TX 0x18 +#define ZD_IOCTL_SET_MIC_CNT_ENABLE 0x19 +#define ZD_IOCTL_GET_MIC_CNT_ENABLE 0x1A +#define ZD_IOCTL_DEBUG_FLAG 0x21 #define ZDAPIOCTL SIOCDEVPRIVATE + /************************************************************************** ** Function Declarations *************************************************************************** */ void zd1205_sleep_reset(struct zd1205_private *macp); +void update_beacon_interval(struct zd1205_private *macp, int val); void zd1205_sw_reset(struct zd1205_private *macp); void zd1205_watchdog_cb(struct net_device *); void zd1205_dump_data(char *info, u8 *data, u32 data_len); void zd1205_init_card_setting(struct zd1205_private *macp); -void zd1205_load_card_setting(struct zd1205_private *macp, u8 bInit); -void zd1205_save_card_setting(struct zd1205_private *macp); +/* ath: loading/saving files from kernel is a hack */ +//void zd1205_load_card_setting(struct zd1205_private *macp, u8 bInit); +//void zd1205_save_card_setting(struct zd1205_private *macp); zd1205_SwTcb_t * zd1205_first_txq(struct zd1205_private *macp, zd1205_SwTcbQ_t *Q); +/* ath: gcc4 needs inline function bodies in the declaration */ u32 zd_readl(u32 offset); void zd_writel(u32 value, u32 offset); void zd1205_disable_int(void); @@ -1087,15 +1284,17 @@ void zd1205_unlock(struct zd1205_private *macp); void zd1205_device_reset(struct zd1205_private *macp); void zd1205_config_wep_keys(struct zd1205_private *macp); +void zd1205_config_dyn_key(u8 DynKeyMode, u8 *pkey, int idx); struct sk_buff* zd1205_prepare_tx_data(struct zd1205_private *macp, u16 bodyLen); void zd1205_tx_test(struct zd1205_private *macp, u16 size); void zd1205_qlast_txq(struct zd1205_private *macp, zd1205_SwTcbQ_t *Q, zd1205_SwTcb_t *signal); int zd1205_DestPowerSave(struct zd1205_private *macp, u8 *pDestAddr); int zd1205_found1(struct pci_dev *pcid, const struct pci_device_id *ent); void zd1205_remove1(struct pci_dev *pcid); +BOOLEAN a_OSC_get_cal_int( u8 ch, u32 rate, u8 *intValue, u8 *calValue); void zd1205_tx_isr(struct zd1205_private *); u32 zd1205_rx_isr(struct zd1205_private *macp); -void zd1205_clear_structs(struct net_device *dev); +void zd1205_clear_structs(struct net_device *dev); unsigned char zd1205_init(struct zd1205_private *); int zd1205_open(struct net_device *); int zd1205_close(struct net_device *); @@ -1112,7 +1311,15 @@ int zd1205_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd); int zd1205_xmit_frame(struct sk_buff *skb, struct net_device *dev); struct net_device_stats *zd1205_get_stats(struct net_device *); +void hostap_michael_mic_failure(struct zd1205_private *macp, + struct hostap_ieee80211_hdr *hdr, int keyidx); +#ifndef HOST_IF_USB + +void zd1205_start_ru(struct zd1205_private *); +#else + struct rx_list_elem *zd1205_start_ru(struct zd1205_private *); +#endif void zd1205_process_wakeup(struct zd1205_private *macp); void zd1205_connect_mon(struct zd1205_private *macp); @@ -1120,5 +1327,14 @@ void zd1205_house_keeping(struct zd1205_private *macp); void zd1211_set_multicast(struct zd1205_private *macp); int zd1205_dis_connect(struct zd1205_private *macp); +void ChangeMacMode(u8 MAC_Mode, u8 Channel); void zd1205_alloc_skbs(struct zd1205_private *macp); +const int zd1211_mlme(struct zd1205_private *macp); +#if ZDCONF_WE_STAT_SUPPORT == 1 + +struct iw_statistics * zd1205_iw_getstats(struct net_device *dev); +#elif !defined(ZDCONF_WE_STAT_SUPPORT) + #error "Undefine ZDCONF_WE_STAT_SUPPORT" +#endif #endif /* _ZD1205_H_ */ + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdtkipseed.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdtkipseed.h @@ -1,45 +1,58 @@ -/* $Id: zdtkipseed.h,v 1.5 2005/03/27 20:47:39 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZDTKIPSEED_H_ #define _ZDTKIPSEED_H_ -#define Mk16(A, B) ((A<<8)+B) -#define Lo8(v16) ((U8)( (v16) & 0xFF)) -#define Hi8(v16) ((U8)(((v16)>>8) & 0xFF)) + +#define Mk16(A, B) ((A<<8)+B) + +#define Lo8(v16) ((U8)( (v16) & 0xFF)) +#define Hi8(v16) ((U8)(((v16)>>8) & 0xFF)) + //variable. -typedef struct _Seedvar { - U8 TK[16]; // Key - U8 TA[6]; - U16 TTAK[5]; - U16 ppk[6]; - U16 IV16, iv16tmp; - U32 IV32, iv32tmp; -}Seedvar, *PSeedvar; +typedef struct _Seedvar +{ + U8 TK[16]; // Key + U8 TA[6]; + U16 TTAK[5]; // TTAK + U16 ppk[6]; + U16 IV16, iv16tmp; + U32 IV32, iv32tmp; +} +Seedvar, *PSeedvar; #define Tx 0 #define Rx 1 +#if defined(PHY_1202) + +void Tkip_Init(U8 *key, U8 *ta, Seedvar *Seed, U8 *initiv); +void Tkip_clear(Seedvar *Seed); + +// set key and TA +void Tkip_setkey(U8 *key, U8 *ta, Seedvar *Seed); + +// phase1 key mixing function +char Tkip_phase1_key_mix(U32 IV32, Seedvar *Seed); + +// phase2 key mixing function +char Tkip_phase2_key_mix(U16 IV16, Seedvar *Seed); + +// get generated seeds +void Tkip_getseeds(U16 IV16, U8 *RC4Key, Seedvar *Seed); + +// update stored IV. +void Tkip_updateiv(Seedvar *Seed); + + +/************************************************************/ +/* tkip_sbox() */ +/* Returns a 16 bit value from a 64K entry table. The Table */ +/* is synthesized from two 256 entry byte wide tables. */ +/************************************************************/ +unsigned int tkip_sbox(unsigned int index); + +// rotate right by 1 bit. +unsigned int rotr1(unsigned int a); + +#endif #endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdsm.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdsm.h @@ -1,96 +1,92 @@ -/* $Id: zdsm.h,v 1.7 2005/03/27 20:47:39 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef __ZDSM_H__ #define __ZDSM_H__ +#include "zdos.h" #include "zdsorts.h" -typedef struct FrmInfo_s { - MacAddr_t Sta; //for Disassoc/Deauth STA - ReasonCode rCode; //for Disassoc/Deauth Reason Code - U8 fTot; //total frag no. - U32 eol; //timestamp for age (PsQ) - FrmDesc_t *frmDesc; // -} FrmInfo_t; - -typedef struct Signal_s { - struct Signal_s *pNext; - U8 id; - U8 block; - U8 vapId; //virtual AP id - U8 bDataFrm; //data frame - void *buf; //buffer - FrmInfo_t frmInfo; -} Signal_t ; - -typedef struct SignalQ_s { - Signal_t *first; - Signal_t *last; - U8 cnt; -} SignalQ_t; - -#define BLOCK_SYNCH 0x01 -#define BLOCK_AUTH_REQ 0x02 -#define BLOCK_AUTH_RSP 0x03 -#define BLOCK_ASOC 0x04 + +typedef struct FrmInfo_s +{ + MacAddr_t Sta; //for Disassoc/Deauth STA + ReasonCode rCode; //for Disassoc/Deauth Reason Code + U8 fTot; //total frag no. + U32 eol; //timestamp for age (PsQ) + FrmDesc_t *frmDesc; // +} +FrmInfo_t; + + +typedef struct Signal_s +{ + struct Signal_s *pNext; + U8 id; + U8 block; + U8 vapId; //virtual AP id + U8 bDataFrm; //data frame + void *buf; //buffer + FrmInfo_t frmInfo; +} +Signal_t ; + + +typedef struct SignalQ_s +{ + Signal_t *first; + Signal_t *last; + U8 cnt; +} +SignalQ_t; + + +#define BLOCK_SYNCH 0x01 +#define BLOCK_AUTH_REQ 0x02 +#define BLOCK_AUTH_RSP 0x03 +#define BLOCK_ASOC 0x04 + //Auth_Req block, 3 state, 4 signals -#define STE_AUTH_REQ_IDLE 0x00 -#define STE_WAIT_AUTH_SEQ2 0x01 -#define STE_WAIT_AUTH_SEQ4 0x02 - -#define SIG_DEAUTH_REQ 0x01 -#define SIG_AUTH_REQ 0x02 -#define SIG_AUTH_EVEN 0x03 -#define SIG_TO_AUTH 0x04 +#define STE_AUTH_REQ_IDLE 0x00 +#define STE_WAIT_AUTH_SEQ2 0x01 +#define STE_WAIT_AUTH_SEQ4 0x02 + + +#define SIG_DEAUTH_REQ 0x01 +#define SIG_AUTH_REQ 0x02 +#define SIG_AUTH_EVEN 0x03 +#define SIG_TO_AUTH 0x04 + //Asoc_Svc block, 1 state, 9 signals -#define SIG_DISASSOC 0x01 -#define SIG_ASSOC 0x02 -#define SIG_REASSOC 0x03 -#define SIG_DIASSOC_REQ 0x04 -#define SIG_ASSOC_REQ 0x05 -#define SIG_REASSOC_REQ 0x06 -#define SIG_ASSOC_RSP 0x07 -#define SIG_REASSOC_RSP 0x08 -#define SIG_TO_ASOC 0x09 +#define SIG_DISASSOC 0x01 +#define SIG_ASSOC 0x02 +#define SIG_REASSOC 0x03 +#define SIG_DIASSOC_REQ 0x04 +#define SIG_ASSOC_REQ 0x05 +#define SIG_REASSOC_REQ 0x06 +#define SIG_ASSOC_RSP 0x07 +#define SIG_REASSOC_RSP 0x08 +#define SIG_TO_ASOC 0x09 + + +#define STE_ASOC_IDLE 0x00 + +#define STE_WAIT_ASOC_RSP 0x01 -#define STE_ASOC_IDLE 0x00 -#define STE_WAIT_ASOC_RSP 0x01 //Auth_Rsp block, 2 state, 3 signals -#define STE_AUTH_RSP_IDLE 0x00 -#define STE_AUTH_RSP_WAIT_CRSP 0x01 +#define STE_AUTH_RSP_IDLE 0x00 +#define STE_AUTH_RSP_WAIT_CRSP 0x01 + + +#define SIG_AUTH_ODD 0x01 +#define SIG_DEAUTH 0x02 +#define SIG_TO_CHAL 0x03 -#define SIG_AUTH_ODD 0x01 -#define SIG_DEAUTH 0x02 -#define SIG_TO_CHAL 0x03 //Synch block, 1 state, 3 signals -#define SIG_PROBE 0x01 -#define SIG_PROBE_REQ 0x02 -#define SIQ_PROBE_RSP_BEACON 0x03 +#define SIG_PROBE 0x01 +#define SIG_PROBE_REQ 0x02 +#define SIQ_PROBE_RSP_BEACON 0x03 #endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/WS11UPhm.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/WS11UPhm.h @@ -1,162 +1,327 @@ +#ifdef ZD1211 ={ -0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0x1E, 0xEE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, -0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0x93, 0xEE, 0x41, 0xEE, 0x98, 0x9A, 0xB0, 0xF7, 0x02, 0x00, 0x1F, 0xEC, -0x00, 0x00, 0xB2, 0xF8, 0x4D, 0x00, 0xA0, 0xEC, 0x00, 0x00, 0x89, 0xF7, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xD8, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, -0x40, 0xF0, 0xAE, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x64, 0xEF, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xF0, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, -0x17, 0xF7, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x3C, 0xF5, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xEB, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, -0x12, 0xF7, 0xA0, 0x90, 0x98, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x42, 0x02, 0xC1, 0x92, 0x03, 0x96, 0x1B, 0xD7, 0x2A, 0x86, -0x1A, 0xD5, 0x2B, 0x86, 0x09, 0xA3, 0x00, 0x80, 0x19, 0xD3, 0x2C, 0x86, 0x00, 0xEE, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x01, 0xD4, 0x42, 0x02, 0xC1, 0x96, 0x0A, 0x65, 0xC0, 0x7A, -0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC4, 0xD2, 0xC5, 0x98, 0x1C, 0xD9, 0x2A, 0x86, 0x01, 0x98, 0x1C, 0xD9, 0x2B, 0x86, 0x1B, 0xD7, 0x2C, 0x86, 0x00, 0xEE, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, -0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xE5, 0xEE, 0x11, 0x93, 0xB4, 0xF7, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xEE, 0x40, 0xF1, -0x40, 0x92, 0x19, 0xD3, 0xB4, 0xF7, 0xC5, 0x92, 0x41, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x40, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x0F, 0x9F, 0x95, 0xF8, 0x0F, 0x9F, 0x99, 0xEE, 0x42, 0x42, 0x02, 0x5E, -0x0F, 0x9F, 0x99, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0xB4, 0xF7, 0x09, 0x93, 0xA3, 0xF7, 0x19, 0xD3, 0x91, 0xEC, 0x40, 0xF0, 0x59, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0F, 0x9F, -0x99, 0xEE, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, -0x09, 0x93, 0xA3, 0xF7, 0x19, 0xD3, 0x91, 0xEC, 0x40, 0xF0, 0x59, 0xF2, 0x40, 0xF0, 0xD8, 0xF3, 0x11, 0x93, 0x04, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xE3, 0xEE, 0x40, 0x92, 0x19, 0xD3, -0x04, 0xEC, 0x40, 0xF0, 0x32, 0xF2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFD, 0x19, 0xD3, 0x44, 0x96, 0x40, 0xF0, 0x0B, 0xF7, -0x6E, 0x92, 0x19, 0xD3, 0x05, 0x84, 0x40, 0xF0, 0xC4, 0xEE, 0x4B, 0x62, 0x0A, 0x95, 0x2E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x2B, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x00, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, -0x2F, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x34, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x39, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x3E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x43, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x48, 0xEE, -0xD1, 0xD4, 0x0B, 0x97, 0x4D, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x4E, 0xEE, 0xC1, 0xD4, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x43, 0xF1, 0x09, 0x93, 0x01, 0x3F, -0x19, 0xD3, 0xC0, 0x85, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFC, 0x19, 0xD3, 0x44, 0x96, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x03, 0x96, -0x41, 0x02, 0x03, 0x99, 0xC4, 0x94, 0x42, 0x04, 0xC1, 0x04, 0xC2, 0x94, 0xC3, 0xD4, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x93, 0xEC, 0x13, 0x97, -0x94, 0xEC, 0x1B, 0xD7, 0x02, 0x80, 0x11, 0x93, 0x98, 0xEC, 0x19, 0xD3, 0x7C, 0x96, 0x0B, 0x97, 0xA0, 0x00, 0x1B, 0xD7, 0x6E, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, -0xFF, 0xBF, 0x11, 0xA3, 0x99, 0xEC, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, -0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x14, 0x99, 0x03, 0x80, 0x0C, 0xB3, 0x00, 0x10, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x91, 0xF0, -0x11, 0x93, 0x9E, 0xEC, 0x41, 0x02, 0x19, 0xD3, 0x9E, 0xEC, 0x11, 0x93, 0xB2, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x84, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, -0x00, 0x04, 0xC2, 0xD2, 0x0F, 0x9F, 0xAB, 0xF0, 0x11, 0x93, 0x93, 0xEC, 0x02, 0xD2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD0, 0xEF, 0x41, 0x92, 0x19, 0xD3, 0x93, 0xEC, 0x19, 0xD3, 0x9E, 0xEC, -0x12, 0x95, 0x02, 0x80, 0x1A, 0xD5, 0x94, 0xEC, 0x13, 0x97, 0x7C, 0x96, 0x1B, 0xD7, 0x98, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x00, 0x40, 0x19, 0xD3, 0x99, 0xEC, -0x09, 0x63, 0x00, 0x40, 0xC2, 0xD2, 0x02, 0x94, 0x1A, 0xD5, 0x7C, 0x96, 0x0C, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB0, 0xEF, 0x0C, 0xB3, 0xFF, 0x07, 0x0F, 0x9F, 0xB4, 0xEF, -0x11, 0x93, 0x06, 0x80, 0x09, 0xB3, 0xFF, 0x07, 0x09, 0x03, 0x00, 0xA0, 0x19, 0xD3, 0x96, 0xEC, 0x40, 0x98, 0x0B, 0x97, 0x9B, 0xEC, 0x04, 0x95, 0x03, 0x05, 0x14, 0x03, 0x96, 0xEC, 0x46, 0x02, -0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x08, 0x42, 0x48, 0x02, 0x9E, 0x0F, 0x9F, 0xBB, 0xEF, 0x11, 0x93, 0x96, 0xEC, 0xC1, 0x92, 0xC5, 0xD2, 0x5F, 0xB2, 0x19, 0xD3, 0x9A, 0xEC, 0x0F, 0x9F, 0xD3, 0xEF, -0x13, 0x97, 0x97, 0xEC, 0xC5, 0xD6, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE9, 0xEF, 0x11, 0x93, 0xB8, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xB8, 0xF7, -0x11, 0x93, 0xB7, 0xF7, 0x09, 0xA3, 0x00, 0x10, 0x19, 0xD3, 0xB7, 0xF7, 0x40, 0x98, 0x1C, 0xD9, 0x9A, 0xEC, 0x12, 0x95, 0x9A, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x86, 0xF0, 0x0A, 0xB3, -0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x07, 0xF0, 0x0A, 0xB3, 0x07, 0x00, 0x09, 0x05, 0xA8, 0xEC, 0xC2, 0x94, 0x01, 0xD4, 0x09, 0x03, 0xA0, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x9A, 0xEC, -0xC5, 0x94, 0x0A, 0xB5, 0x00, 0xFF, 0x01, 0xA5, 0xC5, 0xD4, 0x0F, 0x9F, 0x13, 0xF0, 0x0A, 0x05, 0xFF, 0xFF, 0x0A, 0x03, 0xB0, 0xEC, 0xC1, 0x92, 0x01, 0xD2, 0x1A, 0xD5, 0x9A, 0xEC, 0xC5, 0x96, -0x0B, 0x07, 0xFF, 0xFF, 0xC5, 0xD6, 0x11, 0x93, 0x96, 0xEC, 0xC5, 0x98, 0xC1, 0xD8, 0x11, 0x93, 0x96, 0xEC, 0x09, 0x05, 0x0B, 0x00, 0x03, 0xD4, 0xC2, 0x96, 0x06, 0xD6, 0x7B, 0x95, 0x7A, 0x95, -0x4C, 0x02, 0xC1, 0x92, 0x59, 0x93, 0x59, 0x93, 0x01, 0xA5, 0x01, 0x98, 0x0C, 0xF5, 0x7B, 0x93, 0x09, 0x09, 0x01, 0x00, 0x06, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x04, 0xD2, 0x5C, 0x93, 0x59, 0x93, -0x04, 0x94, 0x01, 0xA5, 0x03, 0x96, 0xC3, 0xD4, 0x11, 0x93, 0x96, 0xEC, 0x4C, 0x02, 0x05, 0xD2, 0xC1, 0x92, 0x09, 0xB3, 0x00, 0xFF, 0x7C, 0x95, 0x7A, 0x95, 0x02, 0xA3, 0x05, 0x98, 0xC4, 0xD2, -0x12, 0x95, 0x96, 0xEC, 0x45, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2, 0x12, 0x95, 0x9A, 0xEC, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5B, 0xF0, -0x12, 0x95, 0x96, 0xEC, 0x4A, 0x04, 0x02, 0x99, 0xC4, 0x92, 0x01, 0x98, 0x0C, 0xF3, 0x7B, 0x93, 0x41, 0x02, 0x0F, 0x9F, 0x7C, 0xF0, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x7D, 0xF0, 0x11, 0x93, -0x96, 0xEC, 0x42, 0x02, 0x0A, 0x05, 0xFF, 0xFF, 0xC1, 0xD4, 0x11, 0x93, 0x96, 0xEC, 0x4A, 0x02, 0x12, 0x95, 0x60, 0x96, 0xC1, 0xD4, 0x12, 0x95, 0x96, 0xEC, 0x4B, 0x04, 0x02, 0x97, 0xC3, 0x92, -0x09, 0xB3, 0x1F, 0xFF, 0xC2, 0xD2, 0x12, 0x95, 0x96, 0xEC, 0x4B, 0x04, 0x11, 0x93, 0x62, 0x96, 0x41, 0x93, 0x59, 0x93, 0x02, 0x99, 0xC4, 0xA2, 0xC2, 0xD2, 0xC5, 0x92, 0x19, 0xD3, 0x97, 0xEC, -0x0A, 0x95, 0x0C, 0x02, 0x1A, 0xD5, 0x02, 0x80, 0x0F, 0x9F, 0xAB, 0xF0, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x04, 0xC2, 0xD2, 0x40, 0xF0, 0x39, 0xEF, 0x0F, 0x9F, -0xAB, 0xF0, 0x11, 0x93, 0x93, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xA0, 0xF0, 0x40, 0xF0, 0x39, 0xEF, 0x11, 0x93, 0x94, 0xEC, 0x44, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF0, -0x48, 0x98, 0x1C, 0xD9, 0x02, 0x80, 0x11, 0x93, 0x91, 0xEC, 0x41, 0x22, 0x0A, 0x95, 0xAB, 0xF0, 0x88, 0xD4, 0x88, 0xDC, 0x91, 0x9A, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x11, 0x93, 0x04, 0x82, 0x48, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC2, 0xF0, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xFE, 0xC2, 0xD2, 0x41, 0x92, -0x19, 0xD3, 0xB7, 0xEC, 0x11, 0x93, 0x04, 0x82, 0x43, 0xB2, 0x12, 0x95, 0x03, 0x82, 0x02, 0xB3, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE9, 0xF0, 0x0A, 0xB3, 0x00, 0xFF, 0x48, 0xA2, 0x19, 0xD3, -0x03, 0x82, 0x40, 0xF0, 0xE5, 0xF3, 0x11, 0x93, 0xB7, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xE9, 0xF0, 0x11, 0x93, 0x07, 0x82, 0x11, 0x43, 0x03, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xE9, 0xF0, -0x11, 0x93, 0x03, 0x82, 0x09, 0xA3, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x40, 0x96, 0x1B, 0xD7, 0xB7, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x20, 0xBC, 0xC8, 0xD2, 0x40, 0xF0, 0x42, 0xF1, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, -0x05, 0x00, 0x05, 0x94, 0x41, 0x02, 0xC1, 0x92, 0x01, 0x97, 0xC3, 0x96, 0xC2, 0xD6, 0x0A, 0x45, 0x00, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0x3F, 0xF1, 0xC1, 0x92, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0x3F, 0xF1, 0x11, 0x93, 0xB8, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x3F, 0xF1, 0x41, 0x98, 0x1C, 0xD9, 0xB8, 0xEC, 0x12, 0x95, 0x02, 0x80, 0x01, 0xD4, 0x40, 0xF0, 0x50, 0xF2, -0x0B, 0x67, 0xFD, 0x7D, 0x03, 0x99, 0xC4, 0x92, 0x0C, 0x99, 0x20, 0x03, 0x1C, 0xD9, 0x06, 0x82, 0x41, 0x98, 0x1C, 0xD9, 0x02, 0x82, 0x42, 0x98, 0x1C, 0xD9, 0x05, 0x82, 0x0C, 0x69, 0x80, 0x7F, -0x1C, 0xD9, 0x00, 0xB0, 0x09, 0xA3, 0x00, 0x01, 0xC3, 0xD2, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x3D, 0xF1, 0x42, 0xA4, 0x1A, 0xD5, 0x02, 0x80, 0x42, 0x00, -0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, 0x60, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x4F, 0xF1, 0x40, 0xF0, 0x55, 0xF7, 0xC5, 0x94, -0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x58, 0xF1, 0x40, 0xF0, 0x67, 0xF5, 0xC5, 0x96, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x61, 0xF1, 0x40, 0xF0, -0xA1, 0xF4, 0xC5, 0x94, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC2, 0xF1, 0x13, 0x97, 0x21, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, -0x73, 0xF1, 0x40, 0xF0, 0x62, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x7C, 0xF1, 0x40, 0xF0, 0x6C, 0xFB, 0x01, 0x96, 0x0B, 0xB3, 0x01, 0x00, 0x40, 0x42, -0x02, 0x4E, 0x0F, 0x9F, 0x9C, 0xF1, 0x40, 0xF0, 0xB0, 0xFA, 0x41, 0x92, 0x19, 0xD3, 0xB1, 0xF7, 0x11, 0x93, 0x03, 0xEC, 0x09, 0x43, 0x40, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0x92, 0xF1, 0x40, 0x94, -0x1A, 0xD5, 0xB1, 0xF7, 0x11, 0x93, 0x00, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA5, 0xF1, 0x40, 0xF0, 0x32, 0xF2, 0x0F, 0x9F, 0xA5, 0xF1, 0x01, 0x96, 0x0B, 0xB3, 0x08, 0x00, 0x40, 0x42, -0x02, 0x4E, 0x0F, 0x9F, 0xA5, 0xF1, 0x40, 0xF0, 0x7C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAE, 0xF1, 0x40, 0xF0, 0x87, 0xFB, 0x11, 0x93, 0x10, 0xEC, -0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB9, 0xF1, 0x44, 0x96, 0x1B, 0xD7, 0x0B, 0xBC, 0x0F, 0x9F, 0xBF, 0xF1, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xBF, 0xF1, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, -0x19, 0xD3, 0x10, 0xEC, 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x0C, 0xF2, 0x13, 0x97, 0x28, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0xD4, 0xF1, 0x40, 0xF0, 0x38, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE7, 0xF1, 0x40, 0xF0, 0xC4, 0xEE, 0x40, 0xF0, 0x8F, 0xFB, 0x40, 0xF0, -0x15, 0xF2, 0x40, 0x96, 0x1B, 0xD7, 0x00, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0xB4, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x03, 0xF2, 0x40, 0xF0, 0x9E, 0xFB, -0x09, 0x63, 0x00, 0x44, 0x01, 0x97, 0xC3, 0x94, 0x48, 0xA4, 0xC1, 0xD4, 0x00, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, -0x41, 0x92, 0x19, 0xD3, 0xB4, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x0C, 0xF2, 0x40, 0xF0, 0xAE, 0xFB, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, -0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, -0x44, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, -0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, -0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x02, 0x80, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x09, 0x19, 0xD3, 0x02, 0x80, -0x40, 0xF0, 0x50, 0xF2, 0x40, 0x92, 0x19, 0xD3, 0x93, 0xEC, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x40, 0xF0, 0x7F, 0xF4, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x7F, 0xF2, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x8C, 0xF2, 0x40, 0xF0, -0x8E, 0xF2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x8C, 0xF2, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x11, 0x93, 0xF1, 0xBD, 0x19, 0xD3, 0xB5, 0xEC, 0x11, 0x93, 0xB3, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xA6, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0x07, -0x07, 0x00, 0xC1, 0xD6, 0x0A, 0x05, 0x00, 0xA0, 0x1A, 0xD5, 0x95, 0xEC, 0x11, 0x93, 0xB5, 0xEC, 0x19, 0xD3, 0x01, 0x80, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x41, 0xA2, 0xC2, 0xD2, -0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x13, 0x97, 0xB3, 0xEC, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x26, 0xF3, 0x12, 0x95, 0x95, 0xEC, 0x0A, 0x03, -0x07, 0x00, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x95, 0xEC, 0x09, 0x05, 0x01, 0x00, 0x48, 0x02, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x95, 0xEC, 0x4E, 0x02, 0xC1, 0x94, 0xC5, 0xD6, 0xC5, 0x92, -0x11, 0x07, 0x95, 0xEC, 0x0B, 0x03, 0x0F, 0x00, 0xC1, 0x98, 0x46, 0x06, 0x7A, 0x93, 0x79, 0x93, 0x5C, 0x95, 0x5A, 0x95, 0x02, 0xA3, 0xC3, 0xD2, 0x04, 0x95, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, -0x42, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xCF, 0xF2, 0x11, 0x93, 0x95, 0xEC, 0x09, 0x05, 0x05, 0x00, 0x41, 0x02, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x95, 0xEC, 0xC1, 0x92, 0x09, 0xB5, 0x1F, 0x00, -0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0xFC, 0xF2, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0xFD, 0xF2, 0x0A, 0x05, 0xFF, 0xFF, 0x0F, 0x9F, 0xFD, 0xF2, 0x43, 0x94, 0x11, 0x93, 0x95, 0xEC, 0x42, 0x02, -0xC1, 0xD4, 0x11, 0x93, 0x95, 0xEC, 0x49, 0x02, 0xC1, 0x92, 0x19, 0xD3, 0xB3, 0xEC, 0x09, 0x05, 0xF2, 0xFF, 0x1A, 0xD5, 0x92, 0xEC, 0x09, 0x43, 0xD0, 0x07, 0x02, 0x9E, 0x0F, 0x9F, 0x26, 0xF3, -0x11, 0x93, 0xB8, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xB8, 0xF7, 0x11, 0x93, 0xB7, 0xF7, 0x09, 0xA3, 0x40, 0x00, 0x19, 0xD3, 0xB7, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, -0xB4, 0xEC, 0x40, 0x96, 0x1B, 0xD7, 0xB3, 0xEC, 0x0F, 0x9F, 0x8C, 0xF3, 0x11, 0x93, 0x92, 0xEC, 0x12, 0x95, 0xB5, 0xEC, 0x02, 0x43, 0x02, 0x8E, 0x0F, 0x9F, 0x74, 0xF3, 0x02, 0x0E, 0x0F, 0x9F, -0x47, 0xF3, 0x11, 0x93, 0xB8, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xB8, 0xF7, 0x11, 0x93, 0xB7, 0xF7, 0x09, 0xA3, 0x80, 0x00, 0x19, 0xD3, 0xB7, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, -0x1A, 0xD5, 0xB4, 0xEC, 0x40, 0x96, 0x1B, 0xD7, 0xB3, 0xEC, 0x0F, 0x9F, 0x8C, 0xF3, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x59, 0xF3, 0x11, 0x93, -0xB8, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x59, 0xF3, 0x40, 0xF0, 0xA0, 0xF3, 0x0F, 0x9F, 0x8E, 0xF3, 0x41, 0x92, 0xC8, 0xD2, 0x0A, 0x95, 0x91, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x2A, 0xEF, -0x42, 0x00, 0x11, 0x93, 0xB8, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6C, 0xF3, 0x42, 0x96, 0x1B, 0xD7, 0xB8, 0xEC, 0x0F, 0x9F, 0x8E, 0xF3, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, -0x42, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x8E, 0xF3, 0x12, 0x45, 0x03, 0xEC, 0x02, 0x4E, 0x0F, 0x9F, 0x86, 0xF3, 0x11, 0x93, 0xB8, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xB8, 0xF7, 0x11, 0x93, 0xB7, 0xF7, -0x09, 0xA3, 0x00, 0x08, 0x19, 0xD3, 0xB7, 0xF7, 0x1A, 0xD5, 0x92, 0xEC, 0x11, 0x93, 0x92, 0xEC, 0x19, 0x25, 0x92, 0xEC, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x41, 0x00, 0x88, 0x98, -0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xA0, 0xF3, 0x40, 0x92, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xB3, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB0, 0xF3, 0x0A, 0x65, 0xBC, 0x69, 0x02, 0x97, 0xC3, 0x92, 0x09, 0x83, 0x00, 0x02, 0xC2, 0xD2, -0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xC3, 0xF3, 0x11, 0x93, 0xB8, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xB8, 0xF7, 0x11, 0x93, 0xB7, 0xF7, 0x09, 0xA3, -0x00, 0x20, 0x19, 0xD3, 0xB7, 0xF7, 0x11, 0x93, 0xB4, 0xEC, 0x19, 0xD3, 0x04, 0x80, 0x12, 0x95, 0xB3, 0xEC, 0x1A, 0xD5, 0x05, 0x80, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, -0xB4, 0xEC, 0x40, 0x94, 0x1A, 0xD5, 0xB3, 0xEC, 0x19, 0xD3, 0xF2, 0xBD, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x20, 0x03, 0x19, 0xD3, 0x06, 0x82, 0x09, 0x93, -0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x13, 0x97, 0x01, 0x82, 0x40, 0x92, 0xC5, 0xD2, 0x12, 0x95, 0x04, 0x82, 0x0A, 0xB3, -0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5B, 0xF4, 0x0A, 0xA3, 0x02, 0x00, 0x19, 0xD3, 0x04, 0x82, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x0F, 0xF4, 0x41, 0x96, 0xC5, 0xD6, -0x0A, 0x65, 0xBD, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0x0F, 0x9F, 0x41, 0xF4, 0x43, 0x46, -0x02, 0x9E, 0x0F, 0x9F, 0x42, 0xF4, 0x4F, 0x98, 0x0B, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x1B, 0xF4, 0x47, 0x98, 0x11, 0x93, 0xB6, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, -0x3C, 0xF4, 0x12, 0x95, 0x00, 0x82, 0x0A, 0x05, 0xFF, 0xAF, 0x01, 0xD4, 0xC8, 0xD8, 0x41, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0x6A, 0xF7, 0x42, 0x00, 0x01, 0x96, 0xC3, 0x94, 0x01, 0xB5, 0x40, 0x44, -0x02, 0x4E, 0x0F, 0x9F, 0x3C, 0xF4, 0x02, 0x92, 0x50, 0x92, 0x19, 0xD3, 0xA2, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0xA2, 0xBC, 0x0F, 0x9F, 0x42, 0xF4, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, -0x48, 0xA2, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0xB6, 0xEC, 0x11, 0x93, 0xB7, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x56, 0xF4, 0x13, 0x97, 0x00, 0x82, 0x1B, 0xD7, 0x02, 0x82, 0x0A, 0x65, -0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0xB7, 0xEC, 0x0F, 0x9F, 0x5E, 0xF4, 0xC5, 0x96, 0x1B, 0xD7, 0xB6, 0xEC, 0xC5, 0x92, 0x40, 0x42, -0x02, 0x5E, 0x0F, 0x9F, 0x6A, 0xF4, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, -0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0x42, 0x02, 0xC1, 0x96, 0xC2, 0x92, 0x03, 0x22, 0x40, 0x42, 0x02, 0xAE, 0x0F, 0x9F, 0x7D, 0xF4, 0x03, 0x03, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, -0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x03, 0x80, 0x0A, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x9B, 0xF4, 0x0A, 0xB7, 0x00, 0x08, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x9E, 0xF4, -0x11, 0x93, 0x03, 0xEC, 0x41, 0x02, 0x09, 0xB3, 0xFE, 0xFF, 0x12, 0x95, 0x07, 0x80, 0x01, 0x45, 0x02, 0x8E, 0x0F, 0x9F, 0x9E, 0xF4, 0x41, 0x92, 0x0F, 0x9F, 0x9F, 0xF4, 0x40, 0x92, 0x88, 0x98, -0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x13, 0x97, 0x6E, 0xEC, 0x0B, 0x47, 0xA0, 0x00, -0x02, 0x5E, 0x0F, 0x9F, 0xCA, 0xF4, 0x09, 0x63, 0x08, 0x43, 0x0A, 0x65, 0xFF, 0x5F, 0x01, 0x99, 0xC4, 0xD4, 0x0A, 0x95, 0x9A, 0xEC, 0xD2, 0x96, 0x1B, 0xD7, 0xFA, 0xBC, 0xD2, 0x96, 0xC4, 0xD6, -0xD2, 0x98, 0x1C, 0xD9, 0xFA, 0xBC, 0xD2, 0x96, 0xC1, 0xD6, 0xC2, 0x94, 0x1A, 0xD5, 0xFA, 0xBC, 0x0F, 0x9F, 0x08, 0xF5, 0x0C, 0x69, 0xFF, 0x6F, 0x1C, 0xD9, 0xF8, 0xBC, 0x0B, 0x47, 0x10, 0x95, -0x02, 0x5E, 0x0F, 0x9F, 0xE2, 0xF4, 0x0A, 0x95, 0x6F, 0xEC, 0x09, 0x63, 0x06, 0x43, 0x01, 0x99, 0xC4, 0xD6, 0xD2, 0x96, 0x1B, 0xD7, 0xF8, 0xBC, 0x0C, 0x69, 0xEE, 0x6A, 0xC1, 0xD8, 0xC2, 0x94, -0x1A, 0xD5, 0xF8, 0xBC, 0x40, 0x92, 0xC5, 0xD2, 0x11, 0x43, 0xB9, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0x05, 0xF5, 0xC5, 0x94, 0x0A, 0x03, 0x71, 0xEC, 0xC1, 0x94, 0x1A, 0xD5, 0xFA, 0xBC, 0x11, 0x93, -0xB8, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF7, 0xF4, 0x0A, 0x95, 0x6F, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x7F, 0xF7, 0x19, 0xD3, 0xF8, 0xBC, 0x41, 0x00, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, -0x13, 0x47, 0xB9, 0xEC, 0x02, 0x1E, 0x0F, 0x9F, 0xE9, 0xF4, 0x40, 0x98, 0x1C, 0xD9, 0xFA, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0x19, 0xD3, 0xB9, 0xEC, 0x0A, 0x65, 0x52, 0x43, 0x02, 0x97, -0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, -0x01, 0x00, 0x06, 0x92, 0x01, 0xD2, 0x0A, 0x65, 0xF0, 0x6A, 0x0B, 0x97, 0x6F, 0xEC, 0x02, 0x99, 0xC4, 0x98, 0xD3, 0xD8, 0x02, 0xD6, 0x0A, 0x03, 0x02, 0x00, 0x01, 0x97, 0xC3, 0x98, 0x02, 0x96, -0xC3, 0xD8, 0x01, 0x96, 0xC1, 0xD6, 0x1A, 0xD5, 0x6E, 0xEC, 0xC5, 0x98, 0x14, 0x99, 0x6F, 0xEC, 0xC2, 0xD8, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, -0xC8, 0xD2, 0x40, 0xF0, 0x1D, 0xF5, 0x41, 0x00, 0x11, 0x93, 0xB8, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x57, 0xF5, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x54, 0xF5, 0x0A, 0x65, 0xFE, 0x7F, -0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0xB8, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, -0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x63, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xAF, 0xBC, 0x47, 0xB2, 0x59, 0x95, 0x5A, 0x95, -0x12, 0xA5, 0xBF, 0xBC, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x79, 0xF5, 0x41, 0x04, 0x05, 0x93, 0x40, 0x96, 0x20, 0xD6, 0x62, 0x97, 0x0F, 0x9F, 0x88, 0xF5, 0x14, 0x99, -0xFC, 0xBC, 0xD1, 0xD8, 0x14, 0x99, 0xFE, 0xBC, 0xD1, 0xD8, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x20, 0x98, 0x03, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0x7F, 0xF5, 0xC5, 0x92, 0x62, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0xA5, 0xF5, 0x02, 0x8E, 0x0F, 0x9F, 0x9B, 0xF5, 0x61, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC9, 0xF5, 0x0F, 0x9F, 0x01, 0xF6, 0x63, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xEC, 0xF5, 0x64, 0x42, -0x02, 0x4E, 0x0F, 0x9F, 0xF7, 0xF5, 0x0F, 0x9F, 0x01, 0xF6, 0x0D, 0x03, 0x01, 0x00, 0x0C, 0x99, 0x71, 0xEC, 0x0B, 0x05, 0xFF, 0xFF, 0x40, 0x96, 0x0F, 0x9F, 0xB2, 0xF5, 0xD1, 0x96, 0xD4, 0xD6, -0x20, 0x96, 0x41, 0x06, 0x20, 0xD6, 0x02, 0x47, 0x02, 0x1E, 0x0F, 0x9F, 0xAE, 0xF5, 0x1A, 0xD5, 0xB9, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, -0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0F, 0x9F, 0x01, 0xF6, 0x0A, 0x03, 0xFE, 0xFF, 0x61, 0x95, 0x40, 0x98, 0x20, 0xD8, 0x02, 0x49, 0x02, 0x0E, -0x0F, 0x9F, 0x01, 0xF6, 0x0D, 0x03, 0x01, 0x00, 0x21, 0xD2, 0x20, 0x92, 0x05, 0x03, 0x42, 0x02, 0xC8, 0xD2, 0x21, 0x96, 0xC3, 0x92, 0x42, 0x06, 0x21, 0xD6, 0xC8, 0xD2, 0x22, 0xD4, 0x40, 0xF0, -0xFB, 0xF0, 0x42, 0x00, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x22, 0x94, 0x02, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0xD5, 0xF5, 0x0F, 0x9F, 0x01, 0xF6, 0x0D, 0x03, 0x03, 0x00, 0xC8, 0xD2, 0x02, 0x92, -0xC8, 0xD2, 0x01, 0x96, 0xC8, 0xD6, 0x40, 0xF0, 0x04, 0xF6, 0x0F, 0x9F, 0x00, 0xF6, 0x01, 0x98, 0xC8, 0xD8, 0x0D, 0x03, 0x03, 0x00, 0xC8, 0xD2, 0x02, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0xA4, 0xF6, -0x43, 0x00, 0x63, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x45, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x08, 0x00, 0x08, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x03, 0xD4, -0x42, 0x02, 0xC1, 0x92, 0x01, 0xD2, 0x02, 0x97, 0xC5, 0x94, 0x0A, 0x83, 0xFF, 0xFF, 0x11, 0xB3, 0x2C, 0x93, 0x09, 0xB3, 0xFB, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x03, 0x92, 0x40, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0x37, 0xF6, 0x01, 0x94, 0xD2, 0x92, 0x19, 0xD3, 0x2C, 0x93, 0x01, 0xD4, 0x02, 0x94, 0x12, 0x95, 0x2C, 0x93, 0x44, 0xA4, 0x1A, 0xD5, 0x2C, 0x93, 0x0A, 0xB5, 0xFB, 0xFF, 0x1A, 0xD5, -0x2C, 0x93, 0x0B, 0x07, 0xFF, 0xFF, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x22, 0xF6, 0x09, 0x63, 0xD4, 0x6C, 0x01, 0x95, 0xC2, 0x96, 0xC5, 0x94, 0x02, 0xA7, 0xC1, 0xD6, 0x03, 0x92, 0x54, 0x42, -0x02, 0x5E, 0x0F, 0x9F, 0x47, 0xF6, 0x0A, 0x83, 0xFF, 0xFF, 0x1B, 0xB3, 0x2C, 0x93, 0x45, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x04, 0x00, -0x04, 0x94, 0xC5, 0xD4, 0x41, 0x02, 0xC1, 0x92, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x74, 0xF6, 0x09, 0x63, 0xD4, 0x6C, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0xB5, 0xFD, 0xFF, 0xC3, 0xD4, 0x0B, 0x97, -0xAA, 0x00, 0x1B, 0xD7, 0x55, 0x05, 0x00, 0xEE, 0x42, 0xA4, 0x01, 0x97, 0xC3, 0xD4, 0x0B, 0x97, 0x55, 0x00, 0x1B, 0xD7, 0xAA, 0x02, 0x00, 0xEE, 0x0A, 0xB5, 0xFD, 0xFF, 0xC1, 0xD4, 0xC5, 0x92, -0x19, 0xD3, 0x55, 0x05, 0x0F, 0x9F, 0x7D, 0xF6, 0x0A, 0x65, 0xD4, 0x6C, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0xC5, 0x92, 0xC0, 0xD3, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0x01, 0xD2, 0x40, 0x98, 0x0F, 0x9F, 0x8A, 0xF6, 0x41, 0x08, 0x0C, 0x49, 0xFE, 0x7F, 0x02, 0x8E, 0x0F, 0x9F, 0xA1, 0xF6, 0xC5, 0x94, -0x01, 0x96, 0xC3, 0x94, 0x1A, 0xD5, 0x9F, 0xEC, 0x12, 0x95, 0x9F, 0xEC, 0x0A, 0xB5, 0x40, 0x00, 0x1A, 0xD5, 0x9F, 0xEC, 0xC3, 0x92, 0x09, 0xB3, 0x40, 0x00, 0x01, 0x45, 0x02, 0x5E, 0x0F, 0x9F, -0x89, 0xF6, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x44, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x07, 0x00, 0x07, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x01, 0xD4, -0x42, 0x02, 0xC1, 0x92, 0x02, 0xD2, 0x79, 0x93, 0x79, 0x93, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD9, 0xF6, 0x03, 0xD2, 0x40, 0x96, 0xC8, 0xD6, 0x09, 0x93, 0xA0, 0x00, 0xC8, 0xD2, 0x40, 0xF0, -0x4A, 0xF6, 0x02, 0x94, 0x1A, 0xD5, 0x2C, 0x93, 0xC5, 0x94, 0x03, 0x96, 0x03, 0x05, 0x01, 0x92, 0x03, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0xC5, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0x80, 0xF6, 0x43, 0x00, -0x03, 0x94, 0x41, 0x04, 0x03, 0xD4, 0x4F, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0xBA, 0xF6, 0x0F, 0x9F, 0x01, 0xF7, 0x41, 0x96, 0xC8, 0xD6, 0x09, 0x93, 0xE8, 0x00, 0xC8, 0xD2, 0x40, 0xF0, 0x4A, 0xF6, -0x41, 0x94, 0xC8, 0xD4, 0x4F, 0x96, 0xC8, 0xD6, 0x40, 0xF0, 0x4A, 0xF6, 0x02, 0x92, 0x19, 0xD3, 0x2C, 0x93, 0x40, 0x94, 0x03, 0xD4, 0x44, 0x00, 0xC5, 0x94, 0x03, 0x96, 0x03, 0x05, 0x01, 0x92, -0x03, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x03, 0xD6, 0x4F, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xEC, 0xF6, 0x41, 0x92, 0xC8, 0xD2, 0x0A, 0x95, 0xD0, 0x00, 0xC8, 0xD4, 0x40, 0xF0, 0x4A, 0xF6, -0x42, 0x00, 0x0A, 0x65, 0xD4, 0x6C, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0x44, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xB1, 0xFE, -0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x40, 0xF0, 0x7F, 0xF4, -0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x28, 0xF7, 0x40, 0xF0, 0x8E, 0xF2, 0x0F, 0x9F, 0x36, 0xF7, 0x40, 0x96, 0xC8, 0xD6, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x0A, 0x65, -0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, -0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x2D, 0xBC, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, -0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x11, 0x93, 0x03, 0xEC, -0x19, 0xD3, 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x43, 0xA2, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x92, 0x04, 0x96, 0x0D, 0x5E, -0x50, 0x46, 0x02, 0x0E, 0x40, 0x92, 0x09, 0xEE, 0x44, 0x46, 0x04, 0x0E, 0x59, 0x93, 0x44, 0x26, 0x04, 0x5E, 0x46, 0xEE, 0x41, 0x93, 0x41, 0x26, 0x43, 0x4E, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, -0x08, 0x0B, 0x01, 0x00, 0x03, 0x94, 0x1A, 0xD5, 0x86, 0xF7, 0x11, 0x93, 0x00, 0x90, 0x88, 0x98, 0x90, 0x9A, 0x1D, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, -0x1B, 0x00, 0x16, 0x00, 0x21, 0x00, 0x12, 0x00, 0x09, 0x00, 0x13, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x21, 0x00, 0x2D, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF2, 0xA9, 0xF7, 0x00, 0x00, 0x6E, 0xF2, 0xA9, 0xF7, 0x00, 0x00, 0xB3, 0xF2, 0xA6, 0xF7, 0xAD, 0xF7, 0x00, 0x00, 0x91, 0xF3, 0xA9, 0xF7, -0x30, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; + 0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0x1E, 0xEE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, + 0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0x93, 0xEE, 0x41, 0xEE, 0x98, 0x9A, 0xD1, 0xF7, 0x02, 0x00, 0x1F, 0xEC, + 0x00, 0x00, 0xB2, 0xF8, 0x4D, 0x00, 0xA0, 0xEC, 0x00, 0x00, 0xAA, 0xF7, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xD8, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, + 0x40, 0xF0, 0xB4, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x64, 0xEF, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xF6, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, + 0x38, 0xF7, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x30, 0xF5, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xF1, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, + 0x33, 0xF7, 0xA0, 0x90, 0x98, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x42, 0x02, 0xC1, 0x92, 0x03, 0x96, 0x1B, 0xD7, 0x2A, 0x86, + 0x1A, 0xD5, 0x2B, 0x86, 0x09, 0xA3, 0x00, 0x80, 0x19, 0xD3, 0x2C, 0x86, 0x00, 0xEE, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x01, 0xD4, 0x42, 0x02, 0xC1, 0x96, 0x0A, 0x65, 0xC0, 0x7A, + 0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC4, 0xD2, 0xC5, 0x98, 0x1C, 0xD9, 0x2A, 0x86, 0x01, 0x98, 0x1C, 0xD9, 0x2B, 0x86, 0x1B, 0xD7, 0x2C, 0x86, 0x00, 0xEE, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, + 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xE5, 0xEE, 0x11, 0x93, 0xD5, 0xF7, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xEE, 0x40, 0xF1, + 0x40, 0x92, 0x19, 0xD3, 0xD5, 0xF7, 0xC5, 0x92, 0x41, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x40, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x0F, 0x9F, 0x95, 0xF8, 0x0F, 0x9F, 0x99, 0xEE, 0x42, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0x99, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0xD5, 0xF7, 0x09, 0x93, 0xC4, 0xF7, 0x19, 0xD3, 0x91, 0xEC, 0x40, 0xF0, 0x5F, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0F, 0x9F, + 0x99, 0xEE, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, + 0x09, 0x93, 0xC4, 0xF7, 0x19, 0xD3, 0x91, 0xEC, 0x40, 0xF0, 0x5F, 0xF2, 0x40, 0xF0, 0xDE, 0xF3, 0x11, 0x93, 0x04, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xE3, 0xEE, 0x40, 0x92, 0x19, 0xD3, + 0x04, 0xEC, 0x40, 0xF0, 0x38, 0xF2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFD, 0x19, 0xD3, 0x44, 0x96, 0x40, 0xF0, 0x2C, 0xF7, + 0x6E, 0x92, 0x19, 0xD3, 0x05, 0x84, 0x40, 0xF0, 0xC4, 0xEE, 0x4B, 0x62, 0x0A, 0x95, 0x2E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x2B, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x00, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, + 0x2F, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x34, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x39, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x3E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x43, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x48, 0xEE, + 0xD1, 0xD4, 0x0B, 0x97, 0x4D, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x4E, 0xEE, 0xC1, 0xD4, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x43, 0xF1, 0x09, 0x93, 0x01, 0x3F, + 0x19, 0xD3, 0xC0, 0x85, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFC, 0x19, 0xD3, 0x44, 0x96, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x03, 0x96, + 0x41, 0x02, 0x03, 0x99, 0xC4, 0x94, 0x42, 0x04, 0xC1, 0x04, 0xC2, 0x94, 0xC3, 0xD4, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x93, 0xEC, 0x13, 0x97, + 0x94, 0xEC, 0x1B, 0xD7, 0x02, 0x80, 0x11, 0x93, 0x98, 0xEC, 0x19, 0xD3, 0x7C, 0x96, 0x0B, 0x97, 0xA0, 0x00, 0x1B, 0xD7, 0x6E, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, + 0xFF, 0xBF, 0x11, 0xA3, 0x99, 0xEC, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, + 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x14, 0x99, 0x03, 0x80, 0x0C, 0xB3, 0x00, 0x10, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x97, 0xF0, + 0x11, 0x93, 0x9E, 0xEC, 0x41, 0x02, 0x19, 0xD3, 0x9E, 0xEC, 0x11, 0x93, 0xD3, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x84, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, + 0x00, 0x04, 0xC2, 0xD2, 0x0F, 0x9F, 0xB1, 0xF0, 0x11, 0x93, 0x93, 0xEC, 0x02, 0xD2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD0, 0xEF, 0x41, 0x92, 0x19, 0xD3, 0x93, 0xEC, 0x19, 0xD3, 0x9E, 0xEC, + 0x12, 0x95, 0x02, 0x80, 0x1A, 0xD5, 0x94, 0xEC, 0x13, 0x97, 0x7C, 0x96, 0x1B, 0xD7, 0x98, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x00, 0x40, 0x19, 0xD3, 0x99, 0xEC, + 0x09, 0x63, 0x00, 0x40, 0xC2, 0xD2, 0x02, 0x94, 0x1A, 0xD5, 0x7C, 0x96, 0x0C, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB0, 0xEF, 0x0C, 0xB3, 0xFF, 0x07, 0x0F, 0x9F, 0xB4, 0xEF, + 0x11, 0x93, 0x06, 0x80, 0x09, 0xB3, 0xFF, 0x07, 0x09, 0x03, 0x00, 0xA0, 0x19, 0xD3, 0x96, 0xEC, 0x40, 0x98, 0x0B, 0x97, 0x9B, 0xEC, 0x04, 0x95, 0x03, 0x05, 0x14, 0x03, 0x96, 0xEC, 0x46, 0x02, + 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x08, 0x42, 0x48, 0x02, 0x9E, 0x0F, 0x9F, 0xBB, 0xEF, 0x11, 0x93, 0x96, 0xEC, 0xC1, 0x92, 0xC5, 0xD2, 0x5F, 0xB2, 0x19, 0xD3, 0x9A, 0xEC, 0x0F, 0x9F, 0xD3, 0xEF, + 0x13, 0x97, 0x97, 0xEC, 0xC5, 0xD6, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE9, 0xEF, 0x11, 0x93, 0xDA, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xDA, 0xF7, + 0x11, 0x93, 0xD9, 0xF7, 0x09, 0xA3, 0x00, 0x10, 0x19, 0xD3, 0xD9, 0xF7, 0x40, 0x98, 0x1C, 0xD9, 0x9A, 0xEC, 0x12, 0x95, 0x9A, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x86, 0xF0, 0x0A, 0xB3, + 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x07, 0xF0, 0x0A, 0xB3, 0x07, 0x00, 0x09, 0x05, 0xA8, 0xEC, 0xC2, 0x94, 0x01, 0xD4, 0x09, 0x03, 0xA0, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x9A, 0xEC, + 0xC5, 0x94, 0x0A, 0xB5, 0x00, 0xFF, 0x01, 0xA5, 0xC5, 0xD4, 0x0F, 0x9F, 0x13, 0xF0, 0x0A, 0x05, 0xFF, 0xFF, 0x0A, 0x03, 0xB0, 0xEC, 0xC1, 0x92, 0x01, 0xD2, 0x1A, 0xD5, 0x9A, 0xEC, 0xC5, 0x96, + 0x0B, 0x07, 0xFF, 0xFF, 0xC5, 0xD6, 0x11, 0x93, 0x96, 0xEC, 0xC5, 0x98, 0xC1, 0xD8, 0x11, 0x93, 0x96, 0xEC, 0x09, 0x05, 0x0B, 0x00, 0x03, 0xD4, 0xC2, 0x96, 0x06, 0xD6, 0x7B, 0x95, 0x7A, 0x95, + 0x4C, 0x02, 0xC1, 0x92, 0x59, 0x93, 0x59, 0x93, 0x01, 0xA5, 0x01, 0x98, 0x0C, 0xF5, 0x7B, 0x93, 0x09, 0x09, 0x01, 0x00, 0x06, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x04, 0xD2, 0x5C, 0x93, 0x59, 0x93, + 0x04, 0x94, 0x01, 0xA5, 0x03, 0x96, 0xC3, 0xD4, 0x11, 0x93, 0x96, 0xEC, 0x4C, 0x02, 0x05, 0xD2, 0xC1, 0x92, 0x09, 0xB3, 0x00, 0xFF, 0x7C, 0x95, 0x7A, 0x95, 0x02, 0xA3, 0x05, 0x98, 0xC4, 0xD2, + 0x12, 0x95, 0x96, 0xEC, 0x45, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2, 0x12, 0x95, 0x9A, 0xEC, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5B, 0xF0, + 0x12, 0x95, 0x96, 0xEC, 0x4A, 0x04, 0x02, 0x99, 0xC4, 0x92, 0x01, 0x98, 0x0C, 0xF3, 0x7B, 0x93, 0x41, 0x02, 0x0F, 0x9F, 0x7C, 0xF0, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x7D, 0xF0, 0x11, 0x93, + 0x96, 0xEC, 0x42, 0x02, 0x0A, 0x05, 0xFF, 0xFF, 0xC1, 0xD4, 0x11, 0x93, 0x96, 0xEC, 0x4A, 0x02, 0x12, 0x95, 0x60, 0x96, 0xC1, 0xD4, 0x12, 0x95, 0x96, 0xEC, 0x4B, 0x04, 0x02, 0x97, 0xC3, 0x92, + 0x09, 0xB3, 0x1F, 0xFF, 0xC2, 0xD2, 0x12, 0x95, 0x96, 0xEC, 0x4B, 0x04, 0x11, 0x93, 0x62, 0x96, 0x41, 0x93, 0x59, 0x93, 0x02, 0x99, 0xC4, 0xA2, 0xC2, 0xD2, 0xC5, 0x92, 0x19, 0xD3, 0x97, 0xEC, + 0x0A, 0x95, 0x0C, 0x02, 0x1A, 0xD5, 0x02, 0x80, 0x0F, 0x9F, 0xB1, 0xF0, 0x09, 0x63, 0xFE, 0x7F, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0xA5, 0x00, 0x04, 0xC1, 0xD4, 0x11, 0x93, 0x9E, 0xEC, 0x09, 0xA3, + 0x00, 0x01, 0x19, 0xD3, 0x9E, 0xEC, 0x40, 0xF0, 0x39, 0xEF, 0x0F, 0x9F, 0xB1, 0xF0, 0x11, 0x93, 0x93, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xA6, 0xF0, 0x40, 0xF0, 0x39, 0xEF, 0x11, 0x93, + 0x94, 0xEC, 0x44, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB1, 0xF0, 0x48, 0x98, 0x1C, 0xD9, 0x02, 0x80, 0x11, 0x93, 0x91, 0xEC, 0x41, 0x22, 0x0A, 0x95, 0xB1, 0xF0, 0x88, 0xD4, 0x88, 0xDC, + 0x91, 0x9A, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x04, 0x82, 0x48, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC8, 0xF0, 0x0A, 0x65, 0xFD, 0x7D, + 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xFE, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0xB7, 0xEC, 0x11, 0x93, 0x04, 0x82, 0x43, 0xB2, 0x12, 0x95, 0x03, 0x82, 0x02, 0xB3, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0xEF, 0xF0, 0x0A, 0xB3, 0x00, 0xFF, 0x48, 0xA2, 0x19, 0xD3, 0x03, 0x82, 0x40, 0xF0, 0xEB, 0xF3, 0x11, 0x93, 0xB7, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xEF, 0xF0, 0x11, 0x93, + 0x07, 0x82, 0x11, 0x43, 0x03, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xEF, 0xF0, 0x11, 0x93, 0x03, 0x82, 0x09, 0xA3, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x40, 0x96, 0x1B, 0xD7, 0xB7, 0xEC, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x20, 0xBC, 0xC8, 0xD2, 0x40, 0xF0, 0x48, 0xF1, 0x41, 0x00, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0x41, 0x02, 0xC1, 0x92, 0x01, 0x97, 0xC3, 0x96, 0xC2, 0xD6, 0x0A, 0x45, 0x00, 0x95, 0x02, 0x5E, + 0x0F, 0x9F, 0x45, 0xF1, 0xC1, 0x92, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x45, 0xF1, 0x11, 0x93, 0xB8, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x45, 0xF1, 0x41, 0x98, 0x1C, 0xD9, + 0xB8, 0xEC, 0x12, 0x95, 0x02, 0x80, 0x01, 0xD4, 0x40, 0xF0, 0x56, 0xF2, 0x0B, 0x67, 0xFD, 0x7D, 0x03, 0x99, 0xC4, 0x92, 0x0C, 0x99, 0x96, 0x03, 0x1C, 0xD9, 0x06, 0x82, 0x41, 0x98, 0x1C, 0xD9, + 0x02, 0x82, 0x42, 0x98, 0x1C, 0xD9, 0x05, 0x82, 0x0C, 0x69, 0x80, 0x7F, 0x1C, 0xD9, 0x00, 0xB0, 0x09, 0xA3, 0x00, 0x01, 0xC3, 0xD2, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x43, 0xF1, 0x42, 0xA4, 0x1A, 0xD5, 0x02, 0x80, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, 0x60, 0xB2, 0x40, 0x42, + 0x02, 0x4E, 0x0F, 0x9F, 0x55, 0xF1, 0x40, 0xF0, 0x76, 0xF7, 0xC5, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5E, 0xF1, 0x40, 0xF0, 0x5B, 0xF5, 0xC5, 0x96, 0x0B, 0xB3, + 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x67, 0xF1, 0x40, 0xF0, 0x95, 0xF4, 0xC5, 0x94, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC8, 0xF1, 0x13, 0x97, 0x21, 0xBC, + 0x01, 0xD6, 0x0B, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x79, 0xF1, 0x40, 0xF0, 0x62, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x82, 0xF1, + 0x40, 0xF0, 0x6C, 0xFB, 0x01, 0x96, 0x0B, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA2, 0xF1, 0x40, 0xF0, 0xB0, 0xFA, 0x41, 0x92, 0x19, 0xD3, 0xD2, 0xF7, 0x11, 0x93, 0x03, 0xEC, + 0x09, 0x43, 0x40, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0x98, 0xF1, 0x40, 0x94, 0x1A, 0xD5, 0xD2, 0xF7, 0x11, 0x93, 0x00, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF1, 0x40, 0xF0, 0x38, 0xF2, + 0x0F, 0x9F, 0xAB, 0xF1, 0x01, 0x96, 0x0B, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF1, 0x40, 0xF0, 0x7C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0xB4, 0xF1, 0x40, 0xF0, 0x87, 0xFB, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xBF, 0xF1, 0x44, 0x96, 0x1B, 0xD7, 0x0B, 0xBC, 0x0F, 0x9F, 0xC5, 0xF1, 0x41, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0xC5, 0xF1, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xF2, 0x13, 0x97, + 0x28, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xDA, 0xF1, 0x40, 0xF0, 0x59, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0xED, 0xF1, 0x40, 0xF0, 0xC4, 0xEE, 0x40, 0xF0, 0x8F, 0xFB, 0x40, 0xF0, 0x1B, 0xF2, 0x40, 0x96, 0x1B, 0xD7, 0x00, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0xD5, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x09, 0xF2, 0x40, 0xF0, 0x9E, 0xFB, 0x09, 0x63, 0x00, 0x44, 0x01, 0x97, 0xC3, 0x94, 0x48, 0xA4, 0xC1, 0xD4, 0x00, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, + 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, 0x41, 0x92, 0x19, 0xD3, 0xD5, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xF2, + 0x40, 0xF0, 0xAE, 0xFB, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, + 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, + 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, + 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, + 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x02, 0x80, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x09, 0x19, 0xD3, 0x02, 0x80, 0x40, 0xF0, 0x56, 0xF2, 0x40, 0x92, 0x19, 0xD3, 0x93, 0xEC, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, + 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0x73, 0xF4, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x85, 0xF2, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, + 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x92, 0xF2, 0x40, 0xF0, 0x94, 0xF2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x92, 0xF2, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, + 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xF1, 0xBD, 0x19, 0xD3, 0xB5, 0xEC, 0x11, 0x93, 0xB3, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, + 0xAC, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0x07, 0x07, 0x00, 0xC1, 0xD6, 0x0A, 0x05, 0x00, 0xA0, 0x1A, 0xD5, 0x95, 0xEC, 0x11, 0x93, 0xB5, 0xEC, 0x19, 0xD3, 0x01, 0x80, + 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x13, 0x97, 0xB3, 0xEC, 0x40, 0x46, + 0x02, 0x5E, 0x0F, 0x9F, 0x2C, 0xF3, 0x12, 0x95, 0x95, 0xEC, 0x0A, 0x03, 0x07, 0x00, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x95, 0xEC, 0x09, 0x05, 0x01, 0x00, 0x48, 0x02, 0xC1, 0x92, 0xC2, 0xD2, + 0x11, 0x93, 0x95, 0xEC, 0x4E, 0x02, 0xC1, 0x94, 0xC5, 0xD6, 0xC5, 0x92, 0x11, 0x07, 0x95, 0xEC, 0x0B, 0x03, 0x0F, 0x00, 0xC1, 0x98, 0x46, 0x06, 0x7A, 0x93, 0x79, 0x93, 0x5C, 0x95, 0x5A, 0x95, + 0x02, 0xA3, 0xC3, 0xD2, 0x04, 0x95, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x42, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xD5, 0xF2, 0x11, 0x93, 0x95, 0xEC, 0x09, 0x05, 0x05, 0x00, 0x41, 0x02, 0xC1, 0x92, + 0xC2, 0xD2, 0x11, 0x93, 0x95, 0xEC, 0xC1, 0x92, 0x09, 0xB5, 0x1F, 0x00, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x02, 0xF3, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x03, 0xF3, 0x0A, 0x05, 0xFF, 0xFF, + 0x0F, 0x9F, 0x03, 0xF3, 0x43, 0x94, 0x11, 0x93, 0x95, 0xEC, 0x42, 0x02, 0xC1, 0xD4, 0x11, 0x93, 0x95, 0xEC, 0x49, 0x02, 0xC1, 0x92, 0x19, 0xD3, 0xB3, 0xEC, 0x09, 0x05, 0xF2, 0xFF, 0x1A, 0xD5, + 0x92, 0xEC, 0x09, 0x43, 0xD0, 0x07, 0x02, 0x9E, 0x0F, 0x9F, 0x2C, 0xF3, 0x11, 0x93, 0xDA, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xDA, 0xF7, 0x11, 0x93, 0xD9, 0xF7, 0x09, 0xA3, 0x40, 0x00, 0x19, 0xD3, + 0xD9, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0xB4, 0xEC, 0x40, 0x96, 0x1B, 0xD7, 0xB3, 0xEC, 0x0F, 0x9F, 0x92, 0xF3, 0x11, 0x93, 0x92, 0xEC, 0x12, 0x95, 0xB5, 0xEC, + 0x02, 0x43, 0x02, 0x8E, 0x0F, 0x9F, 0x7A, 0xF3, 0x02, 0x0E, 0x0F, 0x9F, 0x4D, 0xF3, 0x11, 0x93, 0xDA, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xDA, 0xF7, 0x11, 0x93, 0xD9, 0xF7, 0x09, 0xA3, 0x80, 0x00, + 0x19, 0xD3, 0xD9, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0xB4, 0xEC, 0x40, 0x96, 0x1B, 0xD7, 0xB3, 0xEC, 0x0F, 0x9F, 0x92, 0xF3, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, + 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5F, 0xF3, 0x11, 0x93, 0xB8, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x5F, 0xF3, 0x40, 0xF0, 0xA6, 0xF3, 0x0F, 0x9F, 0x94, 0xF3, 0x41, 0x92, + 0xC8, 0xD2, 0x0A, 0x95, 0x91, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x11, 0x93, 0xB8, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x72, 0xF3, 0x42, 0x96, 0x1B, 0xD7, 0xB8, 0xEC, + 0x0F, 0x9F, 0x94, 0xF3, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x94, 0xF3, 0x12, 0x45, 0x03, 0xEC, 0x02, 0x4E, 0x0F, 0x9F, 0x8C, 0xF3, 0x11, 0x93, + 0xDA, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xDA, 0xF7, 0x11, 0x93, 0xD9, 0xF7, 0x09, 0xA3, 0x00, 0x08, 0x19, 0xD3, 0xD9, 0xF7, 0x1A, 0xD5, 0x92, 0xEC, 0x11, 0x93, 0x92, 0xEC, 0x19, 0x25, 0x92, 0xEC, + 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xA6, 0xF3, 0x40, 0x92, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, + 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xD4, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB6, 0xF3, 0x0A, 0x65, + 0xBC, 0x69, 0x02, 0x97, 0xC3, 0x92, 0x09, 0x83, 0x00, 0x02, 0xC2, 0xD2, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xC9, 0xF3, 0x11, 0x93, 0xDA, 0xF7, + 0x41, 0x02, 0x19, 0xD3, 0xDA, 0xF7, 0x11, 0x93, 0xD9, 0xF7, 0x09, 0xA3, 0x00, 0x20, 0x19, 0xD3, 0xD9, 0xF7, 0x11, 0x93, 0xB4, 0xEC, 0x19, 0xD3, 0x04, 0x80, 0x12, 0x95, 0xB3, 0xEC, 0x1A, 0xD5, + 0x05, 0x80, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0xB4, 0xEC, 0x40, 0x94, 0x1A, 0xD5, 0xB3, 0xEC, 0x19, 0xD3, 0xF2, 0xBD, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x09, 0x93, 0x96, 0x03, 0x19, 0xD3, 0x06, 0x82, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x13, 0x97, + 0x01, 0x82, 0x40, 0x92, 0xC5, 0xD2, 0x12, 0x95, 0x04, 0x82, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x61, 0xF4, 0x0A, 0xA3, 0x02, 0x00, 0x19, 0xD3, 0x04, 0x82, 0x41, 0xB2, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x15, 0xF4, 0x41, 0x96, 0xC5, 0xD6, 0x0A, 0x65, 0xBD, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, + 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0x0F, 0x9F, 0x47, 0xF4, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0x48, 0xF4, 0x4F, 0x98, 0x0B, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x21, 0xF4, + 0x47, 0x98, 0x11, 0x93, 0xB6, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x42, 0xF4, 0x12, 0x95, 0x00, 0x82, 0x0A, 0x05, 0xFF, 0xAF, 0x01, 0xD4, 0xC8, 0xD8, 0x41, 0x92, 0xC8, 0xD2, 0x40, 0xF0, + 0x8B, 0xF7, 0x42, 0x00, 0x01, 0x96, 0xC3, 0x94, 0x01, 0xB5, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x42, 0xF4, 0x02, 0x92, 0x50, 0x92, 0x19, 0xD3, 0xA2, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0xA2, 0xBC, + 0x0F, 0x9F, 0x48, 0xF4, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0xB6, 0xEC, 0x11, 0x93, 0xB7, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, + 0x5C, 0xF4, 0x13, 0x97, 0x00, 0x82, 0x1B, 0xD7, 0x02, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0xB7, 0xEC, 0x0F, 0x9F, + 0x64, 0xF4, 0xC5, 0x96, 0x1B, 0xD7, 0xB6, 0xEC, 0xC5, 0x92, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x70, 0xF4, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, + 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x03, 0x80, 0x0A, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x8F, 0xF4, 0x0A, 0xB7, 0x00, 0x08, + 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x92, 0xF4, 0x11, 0x93, 0x03, 0xEC, 0x41, 0x02, 0x09, 0xB3, 0xFE, 0xFF, 0x12, 0x95, 0x07, 0x80, 0x01, 0x45, 0x02, 0x8E, 0x0F, 0x9F, 0x92, 0xF4, 0x41, 0x92, + 0x0F, 0x9F, 0x93, 0xF4, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, + 0x13, 0x97, 0x6E, 0xEC, 0x0B, 0x47, 0xA0, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0xBE, 0xF4, 0x09, 0x63, 0x08, 0x43, 0x0A, 0x65, 0xFF, 0x5F, 0x01, 0x99, 0xC4, 0xD4, 0x0A, 0x95, 0x9A, 0xEC, 0xD2, 0x96, + 0x1B, 0xD7, 0xFA, 0xBC, 0xD2, 0x96, 0xC4, 0xD6, 0xD2, 0x98, 0x1C, 0xD9, 0xFA, 0xBC, 0xD2, 0x96, 0xC1, 0xD6, 0xC2, 0x94, 0x1A, 0xD5, 0xFA, 0xBC, 0x0F, 0x9F, 0xFC, 0xF4, 0x0C, 0x69, 0xFF, 0x6F, + 0x1C, 0xD9, 0xF8, 0xBC, 0x0B, 0x47, 0x10, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0xD6, 0xF4, 0x0A, 0x95, 0x6F, 0xEC, 0x09, 0x63, 0x06, 0x43, 0x01, 0x99, 0xC4, 0xD6, 0xD2, 0x96, 0x1B, 0xD7, 0xF8, 0xBC, + 0x0C, 0x69, 0xEE, 0x6A, 0xC1, 0xD8, 0xC2, 0x94, 0x1A, 0xD5, 0xF8, 0xBC, 0x40, 0x92, 0xC5, 0xD2, 0x11, 0x43, 0xB9, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xF9, 0xF4, 0xC5, 0x94, 0x0A, 0x03, 0x71, 0xEC, + 0xC1, 0x94, 0x1A, 0xD5, 0xFA, 0xBC, 0x11, 0x93, 0xB8, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xEB, 0xF4, 0x0A, 0x95, 0x6F, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0xA0, 0xF7, 0x19, 0xD3, 0xF8, 0xBC, + 0x41, 0x00, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x13, 0x47, 0xB9, 0xEC, 0x02, 0x1E, 0x0F, 0x9F, 0xDD, 0xF4, 0x40, 0x98, 0x1C, 0xD9, 0xFA, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0x19, 0xD3, + 0xB9, 0xEC, 0x0A, 0x65, 0x52, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x41, 0x00, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x06, 0x92, 0x01, 0xD2, 0x0A, 0x65, 0xF0, 0x6A, 0x0B, 0x97, 0x6F, 0xEC, 0x02, 0x99, 0xC4, 0x98, 0xD3, 0xD8, 0x02, 0xD6, 0x0A, 0x03, + 0x02, 0x00, 0x01, 0x97, 0xC3, 0x98, 0x02, 0x96, 0xC3, 0xD8, 0x01, 0x96, 0xC1, 0xD6, 0x1A, 0xD5, 0x6E, 0xEC, 0xC5, 0x98, 0x14, 0x99, 0x6F, 0xEC, 0xC2, 0xD8, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0x11, 0xF5, 0x41, 0x00, 0x11, 0x93, 0xB8, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x4B, 0xF5, 0x42, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0x48, 0xF5, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0xB8, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, + 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x63, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, + 0xAF, 0xBC, 0x47, 0xB2, 0x59, 0x95, 0x5A, 0x95, 0x12, 0xA5, 0xBF, 0xBC, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6D, 0xF5, 0x41, 0x04, 0x05, 0x93, 0x40, 0x96, 0x20, 0xD6, + 0x62, 0x97, 0x0F, 0x9F, 0x7C, 0xF5, 0x14, 0x99, 0xFC, 0xBC, 0xD1, 0xD8, 0x14, 0x99, 0xFE, 0xBC, 0xD1, 0xD8, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x20, 0x98, 0x03, 0x49, 0x02, 0x1E, 0x0F, 0x9F, + 0x73, 0xF5, 0xC5, 0x92, 0x62, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x99, 0xF5, 0x02, 0x8E, 0x0F, 0x9F, 0x8F, 0xF5, 0x61, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xBD, 0xF5, 0x0F, 0x9F, 0xF5, 0xF5, 0x63, 0x42, + 0x02, 0x4E, 0x0F, 0x9F, 0xE0, 0xF5, 0x64, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xEB, 0xF5, 0x0F, 0x9F, 0xF5, 0xF5, 0x0D, 0x03, 0x01, 0x00, 0x0C, 0x99, 0x71, 0xEC, 0x0B, 0x05, 0xFF, 0xFF, 0x40, 0x96, + 0x0F, 0x9F, 0xA6, 0xF5, 0xD1, 0x96, 0xD4, 0xD6, 0x20, 0x96, 0x41, 0x06, 0x20, 0xD6, 0x02, 0x47, 0x02, 0x1E, 0x0F, 0x9F, 0xA2, 0xF5, 0x1A, 0xD5, 0xB9, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x99, + 0xC4, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0F, 0x9F, 0xF5, 0xF5, 0x0A, 0x03, 0xFE, 0xFF, 0x61, 0x95, + 0x40, 0x98, 0x20, 0xD8, 0x02, 0x49, 0x02, 0x0E, 0x0F, 0x9F, 0xF5, 0xF5, 0x0D, 0x03, 0x01, 0x00, 0x21, 0xD2, 0x20, 0x92, 0x05, 0x03, 0x42, 0x02, 0xC8, 0xD2, 0x21, 0x96, 0xC3, 0x92, 0x42, 0x06, + 0x21, 0xD6, 0xC8, 0xD2, 0x22, 0xD4, 0x40, 0xF0, 0x01, 0xF1, 0x42, 0x00, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x22, 0x94, 0x02, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0xC9, 0xF5, 0x0F, 0x9F, 0xF5, 0xF5, + 0x0D, 0x03, 0x03, 0x00, 0xC8, 0xD2, 0x02, 0x92, 0xC8, 0xD2, 0x01, 0x96, 0xC8, 0xD6, 0x40, 0xF0, 0xF8, 0xF5, 0x0F, 0x9F, 0xF4, 0xF5, 0x01, 0x98, 0xC8, 0xD8, 0x0D, 0x03, 0x03, 0x00, 0xC8, 0xD2, + 0x02, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0x98, 0xF6, 0x43, 0x00, 0x63, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x45, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x08, 0x00, 0x08, 0x94, 0xC5, 0xD4, + 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x03, 0xD4, 0x42, 0x02, 0xC1, 0x92, 0x01, 0xD2, 0x02, 0x97, 0xC5, 0x94, 0x0A, 0x83, 0xFF, 0xFF, 0x11, 0xB3, 0x2C, 0x93, 0x09, 0xB3, 0xFB, 0xFF, 0x19, 0xD3, + 0x2C, 0x93, 0x03, 0x92, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x2B, 0xF6, 0x01, 0x94, 0xD2, 0x92, 0x19, 0xD3, 0x2C, 0x93, 0x01, 0xD4, 0x02, 0x94, 0x12, 0x95, 0x2C, 0x93, 0x44, 0xA4, 0x1A, 0xD5, + 0x2C, 0x93, 0x0A, 0xB5, 0xFB, 0xFF, 0x1A, 0xD5, 0x2C, 0x93, 0x0B, 0x07, 0xFF, 0xFF, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x16, 0xF6, 0x09, 0x63, 0xD4, 0x6C, 0x01, 0x95, 0xC2, 0x96, 0xC5, 0x94, + 0x02, 0xA7, 0xC1, 0xD6, 0x03, 0x92, 0x54, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x3B, 0xF6, 0x0A, 0x83, 0xFF, 0xFF, 0x1B, 0xB3, 0x2C, 0x93, 0x45, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, + 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x04, 0x00, 0x04, 0x94, 0xC5, 0xD4, 0x41, 0x02, 0xC1, 0x92, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x68, 0xF6, 0x09, 0x63, 0xD4, 0x6C, 0x01, 0x97, 0xC3, 0x94, + 0x0A, 0xB5, 0xFD, 0xFF, 0xC3, 0xD4, 0x0B, 0x97, 0xAA, 0x00, 0x1B, 0xD7, 0x55, 0x05, 0x00, 0xEE, 0x42, 0xA4, 0x01, 0x97, 0xC3, 0xD4, 0x0B, 0x97, 0x55, 0x00, 0x1B, 0xD7, 0xAA, 0x02, 0x00, 0xEE, + 0x0A, 0xB5, 0xFD, 0xFF, 0xC1, 0xD4, 0xC5, 0x92, 0x19, 0xD3, 0x55, 0x05, 0x0F, 0x9F, 0x71, 0xF6, 0x0A, 0x65, 0xD4, 0x6C, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0xC5, 0x92, + 0xC0, 0xD3, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0x01, 0xD2, 0x40, 0x98, 0x0F, 0x9F, 0x7E, 0xF6, 0x41, 0x08, 0x0C, 0x49, 0xFE, 0x7F, + 0x02, 0x8E, 0x0F, 0x9F, 0x95, 0xF6, 0xC5, 0x94, 0x01, 0x96, 0xC3, 0x94, 0x1A, 0xD5, 0x9F, 0xEC, 0x12, 0x95, 0x9F, 0xEC, 0x0A, 0xB5, 0x40, 0x00, 0x1A, 0xD5, 0x9F, 0xEC, 0xC3, 0x92, 0x09, 0xB3, + 0x40, 0x00, 0x01, 0x45, 0x02, 0x5E, 0x0F, 0x9F, 0x7D, 0xF6, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x44, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x07, 0x00, 0x07, 0x94, 0xC5, 0xD4, + 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x01, 0xD4, 0x42, 0x02, 0xC1, 0x92, 0x02, 0xD2, 0x79, 0x95, 0x7A, 0x95, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xFA, 0xF6, 0x11, 0x93, 0xD6, 0xF7, 0x42, 0x42, + 0x02, 0x4E, 0x0F, 0x9F, 0xB6, 0xF6, 0x41, 0x96, 0x1B, 0xD7, 0xD6, 0xF7, 0x03, 0xD4, 0x40, 0x92, 0xC8, 0xD2, 0x0A, 0x95, 0xA0, 0x00, 0xC8, 0xD4, 0x40, 0xF0, 0x3E, 0xF6, 0x02, 0x96, 0x1B, 0xD7, + 0x2C, 0x93, 0xC5, 0x94, 0x03, 0x92, 0x01, 0x05, 0x01, 0x92, 0x03, 0x96, 0x03, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0xC5, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0x74, 0xF6, 0x43, 0x00, 0x03, 0x94, 0x41, 0x04, + 0x03, 0xD4, 0x4F, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0xB7, 0xF6, 0x40, 0x96, 0x03, 0xD6, 0xC5, 0x92, 0xC1, 0x94, 0x0A, 0xB5, 0xFF, 0x00, 0x01, 0x96, 0xC3, 0x92, 0x0F, 0x9F, 0xEF, 0xF6, 0x03, 0x94, + 0x41, 0x04, 0x03, 0xD4, 0x4F, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x22, 0xF7, 0xC5, 0x92, 0x02, 0x03, 0xC1, 0x94, 0x0A, 0xB5, 0xFF, 0x00, 0x01, 0x92, 0x03, 0x96, 0x03, 0x03, 0xC1, 0x92, 0x09, 0xB3, + 0xFF, 0x00, 0x01, 0x45, 0x02, 0x4E, 0x0F, 0x9F, 0xDF, 0xF6, 0x42, 0x92, 0x19, 0xD3, 0xD6, 0xF7, 0x0F, 0x9F, 0x22, 0xF7, 0x41, 0x94, 0xC8, 0xD4, 0x0B, 0x97, 0xE8, 0x00, 0xC8, 0xD6, 0x40, 0xF0, + 0x3E, 0xF6, 0x41, 0x92, 0xC8, 0xD2, 0x4F, 0x94, 0xC8, 0xD4, 0x40, 0xF0, 0x3E, 0xF6, 0x02, 0x96, 0x1B, 0xD7, 0x2C, 0x93, 0x40, 0x92, 0x03, 0xD2, 0x44, 0x00, 0xC5, 0x94, 0x03, 0x96, 0x03, 0x05, + 0x01, 0x92, 0x03, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x03, 0xD6, 0x4F, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0x0D, 0xF7, 0x41, 0x92, 0xC8, 0xD2, 0x0A, 0x95, 0xD0, 0x00, 0xC8, 0xD4, 0x40, 0xF0, + 0x3E, 0xF6, 0x42, 0x00, 0x0A, 0x65, 0xD4, 0x6C, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0x44, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, + 0xB1, 0xFE, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x40, 0xF0, + 0x73, 0xF4, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF7, 0x40, 0xF0, 0x94, 0xF2, 0x0F, 0x9F, 0x57, 0xF7, 0x40, 0x96, 0xC8, 0xD6, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, + 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, + 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x2D, 0xBC, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, + 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x11, 0x93, + 0x03, 0xEC, 0x19, 0xD3, 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x43, 0xA2, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x92, 0x04, 0x96, + 0x0D, 0x5E, 0x50, 0x46, 0x02, 0x0E, 0x40, 0x92, 0x09, 0xEE, 0x44, 0x46, 0x04, 0x0E, 0x59, 0x93, 0x44, 0x26, 0x04, 0x5E, 0x46, 0xEE, 0x41, 0x93, 0x41, 0x26, 0x43, 0x4E, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x94, 0x1A, 0xD5, 0xA7, 0xF7, 0x11, 0x93, 0x00, 0x90, 0x88, 0x98, 0x90, 0x9A, 0x1D, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x1A, 0x00, 0x1B, 0x00, 0x16, 0x00, 0x21, 0x00, 0x12, 0x00, 0x09, 0x00, 0x13, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x21, 0x00, 0x2D, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xF2, 0xCA, 0xF7, 0x00, 0x00, 0x74, 0xF2, 0xCA, 0xF7, 0x00, 0x00, 0xB9, 0xF2, 0xC7, 0xF7, 0xCE, 0xF7, 0x00, 0x00, 0x97, 0xF3, + 0xCA, 0xF7, 0x05, 0x46, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; +#elif defined(ZD1211B) +={ + 0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0x1E, 0xEE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, + 0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0x93, 0xEE, 0x41, 0xEE, 0x98, 0x9A, 0x25, 0xF7, 0x02, 0x00, 0x1F, 0xEC, + 0x00, 0x00, 0xB2, 0xF8, 0x4D, 0x00, 0x9A, 0xEC, 0x00, 0x00, 0x1E, 0xF7, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xD8, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, + 0x40, 0xF0, 0x5A, 0xEF, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x39, 0xEF, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x9C, 0xEF, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, + 0x9D, 0xF6, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xBE, 0xF3, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x97, 0xEF, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, + 0x98, 0xF6, 0xA0, 0x90, 0x98, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x42, 0x02, 0xC1, 0x92, 0x03, 0x96, 0x1B, 0xD7, 0x2A, 0x86, + 0x1A, 0xD5, 0x2B, 0x86, 0x09, 0xA3, 0x00, 0x80, 0x19, 0xD3, 0x2C, 0x86, 0x00, 0xEE, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x01, 0xD4, 0x42, 0x02, 0xC1, 0x96, 0x0A, 0x65, 0xC0, 0x7A, + 0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC4, 0xD2, 0xC5, 0x98, 0x1C, 0xD9, 0x2A, 0x86, 0x01, 0x98, 0x1C, 0xD9, 0x2B, 0x86, 0x1B, 0xD7, 0x2C, 0x86, 0x00, 0xEE, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, + 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xE5, 0xEE, 0x11, 0x93, 0x29, 0xF7, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xEE, 0x40, 0xF1, + 0x40, 0x92, 0x19, 0xD3, 0x29, 0xF7, 0xC5, 0x92, 0x41, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x40, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x0F, 0x9F, 0x95, 0xF8, 0x0F, 0x9F, 0x99, 0xEE, 0x42, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0x99, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0x29, 0xF7, 0x09, 0x93, 0x33, 0xF7, 0x19, 0xD3, 0x96, 0xEC, 0x40, 0xF0, 0x0C, 0xF1, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0F, 0x9F, + 0x99, 0xEE, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, + 0x09, 0x93, 0x33, 0xF7, 0x19, 0xD3, 0x96, 0xEC, 0x40, 0xF0, 0x0C, 0xF1, 0x40, 0xF0, 0x89, 0xF2, 0x11, 0x93, 0x04, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xE3, 0xEE, 0x40, 0x92, 0x19, 0xD3, + 0x04, 0xEC, 0x40, 0xF0, 0xE5, 0xF0, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFD, 0x19, 0xD3, 0x44, 0x96, 0x40, 0xF0, 0x91, 0xF6, + 0x6E, 0x92, 0x19, 0xD3, 0x05, 0x84, 0x40, 0xF0, 0xC4, 0xEE, 0x4B, 0x62, 0x0A, 0x95, 0x2E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x2B, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x00, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, + 0x2F, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x34, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x39, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x3E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x43, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x48, 0xEE, + 0xD1, 0xD4, 0x0B, 0x97, 0x4D, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x4E, 0xEE, 0xC1, 0xD4, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x43, 0xF1, 0x09, 0x93, 0x01, 0x3F, + 0x19, 0xD3, 0xC0, 0x85, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFC, 0x19, 0xD3, 0x44, 0x96, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x03, 0x96, + 0x41, 0x02, 0x03, 0x99, 0xC4, 0x94, 0x42, 0x04, 0xC1, 0x04, 0xC2, 0x94, 0xC3, 0xD4, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x10, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x4D, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x04, 0xC2, 0xD2, 0x0F, 0x9F, 0x58, 0xEF, 0x48, 0x92, 0x19, 0xD3, 0x02, 0x80, + 0x11, 0x93, 0x96, 0xEC, 0x41, 0x22, 0x0A, 0x95, 0x58, 0xEF, 0x88, 0xD4, 0x88, 0xDC, 0x91, 0x9A, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x04, 0x82, 0x48, 0xB2, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6E, 0xEF, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xFE, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0x9E, 0xEC, 0x11, 0x93, 0x04, 0x82, + 0x43, 0xB2, 0x12, 0x95, 0x03, 0x82, 0x02, 0xB3, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x95, 0xEF, 0x0A, 0xB3, 0x00, 0xFF, 0x48, 0xA2, 0x19, 0xD3, 0x03, 0x82, 0x40, 0xF0, 0x96, 0xF2, 0x11, 0x93, + 0x9E, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x95, 0xEF, 0x11, 0x93, 0x07, 0x82, 0x11, 0x43, 0x03, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0x95, 0xEF, 0x11, 0x93, 0x03, 0x82, 0x09, 0xA3, 0x00, 0x01, + 0x19, 0xD3, 0x03, 0x82, 0x40, 0x96, 0x1B, 0xD7, 0x9E, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, + 0x20, 0xBC, 0xC8, 0xD2, 0x40, 0xF0, 0xF5, 0xEF, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x06, 0x00, 0x06, 0x94, 0xC5, 0xD4, 0x41, 0x02, + 0xC1, 0x92, 0x01, 0xD2, 0xC1, 0x98, 0xC8, 0xD8, 0xC8, 0xD4, 0x40, 0xF0, 0xFA, 0xF6, 0x42, 0x00, 0xC5, 0x92, 0x09, 0x43, 0x00, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0xF2, 0xEF, 0x01, 0x94, 0xC2, 0x92, + 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF2, 0xEF, 0x11, 0x93, 0x9F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xF2, 0xEF, 0x41, 0x98, 0x1C, 0xD9, 0x9F, 0xEC, 0x12, 0x95, 0x02, 0x80, + 0x02, 0xD4, 0x40, 0xF0, 0x03, 0xF1, 0x0B, 0x67, 0xFD, 0x7D, 0x03, 0x99, 0xC4, 0x92, 0x0C, 0x99, 0x96, 0x03, 0x1C, 0xD9, 0x06, 0x82, 0x41, 0x98, 0x1C, 0xD9, 0x02, 0x82, 0x42, 0x98, 0x1C, 0xD9, + 0x05, 0x82, 0x0C, 0x69, 0x80, 0x7F, 0x1C, 0xD9, 0x00, 0xB0, 0x09, 0xA3, 0x00, 0x01, 0xC3, 0xD2, 0x02, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF0, 0xEF, 0x42, 0xA4, + 0x1A, 0xD5, 0x02, 0x80, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, 0x60, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x02, 0xF0, + 0x40, 0xF0, 0xDB, 0xF6, 0xC5, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x0B, 0xF0, 0x40, 0xF0, 0xE9, 0xF3, 0xC5, 0x96, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x14, 0xF0, 0x40, 0xF0, 0x40, 0xF3, 0xC5, 0x94, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x75, 0xF0, 0x13, 0x97, 0x21, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x02, 0x00, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x26, 0xF0, 0x40, 0xF0, 0x62, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x2F, 0xF0, 0x40, 0xF0, 0x6C, 0xFB, 0x01, 0x96, + 0x0B, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x4F, 0xF0, 0x40, 0xF0, 0xB0, 0xFA, 0x41, 0x92, 0x19, 0xD3, 0x26, 0xF7, 0x11, 0x93, 0x03, 0xEC, 0x09, 0x43, 0x40, 0x00, 0x02, 0x5E, + 0x0F, 0x9F, 0x45, 0xF0, 0x40, 0x94, 0x1A, 0xD5, 0x26, 0xF7, 0x11, 0x93, 0x00, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x58, 0xF0, 0x40, 0xF0, 0xE5, 0xF0, 0x0F, 0x9F, 0x58, 0xF0, 0x01, 0x96, + 0x0B, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x58, 0xF0, 0x40, 0xF0, 0x7C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x61, 0xF0, 0x40, 0xF0, + 0x87, 0xFB, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x6C, 0xF0, 0x44, 0x96, 0x1B, 0xD7, 0x0B, 0xBC, 0x0F, 0x9F, 0x72, 0xF0, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x72, 0xF0, + 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xBF, 0xF0, 0x13, 0x97, 0x28, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, + 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x87, 0xF0, 0x40, 0xF0, 0xBE, 0xF6, 0x01, 0x94, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x9A, 0xF0, 0x40, 0xF0, 0xC4, 0xEE, + 0x40, 0xF0, 0x8F, 0xFB, 0x40, 0xF0, 0xC8, 0xF0, 0x40, 0x96, 0x1B, 0xD7, 0x00, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0x29, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0xB6, 0xF0, 0x40, 0xF0, 0x9E, 0xFB, 0x09, 0x63, 0x00, 0x44, 0x01, 0x97, 0xC3, 0x94, 0x48, 0xA4, 0xC1, 0xD4, 0x00, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, + 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, 0x41, 0x92, 0x19, 0xD3, 0x29, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xBF, 0xF0, 0x40, 0xF0, 0xAE, 0xFB, 0x0A, 0x65, + 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, + 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, + 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, + 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, + 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x02, 0x80, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, + 0x00, 0x09, 0x19, 0xD3, 0x02, 0x80, 0x40, 0xF0, 0x03, 0xF1, 0x40, 0x92, 0xC8, 0xD2, 0x09, 0x93, 0x96, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0x1E, 0xF3, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x30, 0xF1, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x3D, 0xF1, + 0x40, 0xF0, 0x3F, 0xF1, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x3D, 0xF1, 0xC8, 0xD2, 0x09, 0x93, 0x96, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xF1, 0xBD, 0x19, 0xD3, 0x9C, 0xEC, 0x11, 0x93, 0x9A, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x57, 0xF1, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x94, + 0x0A, 0x07, 0x07, 0x00, 0xC1, 0xD6, 0x0A, 0x05, 0x00, 0xA0, 0x1A, 0xD5, 0x98, 0xEC, 0x11, 0x93, 0x9C, 0xEC, 0x19, 0xD3, 0x01, 0x80, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x41, 0xA2, + 0xC2, 0xD2, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x13, 0x97, 0x9A, 0xEC, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0xD7, 0xF1, 0x12, 0x95, 0x98, 0xEC, + 0x0A, 0x03, 0x07, 0x00, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x98, 0xEC, 0x09, 0x05, 0x01, 0x00, 0x48, 0x02, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x98, 0xEC, 0x4E, 0x02, 0xC1, 0x94, 0xC5, 0xD6, + 0xC5, 0x92, 0x11, 0x07, 0x98, 0xEC, 0x0B, 0x03, 0x0F, 0x00, 0xC1, 0x98, 0x46, 0x06, 0x7A, 0x93, 0x79, 0x93, 0x5C, 0x95, 0x5A, 0x95, 0x02, 0xA3, 0xC3, 0xD2, 0x04, 0x95, 0xC5, 0x96, 0x41, 0x06, + 0xC5, 0xD6, 0x42, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0x80, 0xF1, 0x11, 0x93, 0x98, 0xEC, 0x09, 0x05, 0x05, 0x00, 0x41, 0x02, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x98, 0xEC, 0xC1, 0x92, 0x09, 0xB5, + 0x1F, 0x00, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0xAD, 0xF1, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0xAE, 0xF1, 0x0A, 0x05, 0xFF, 0xFF, 0x0F, 0x9F, 0xAE, 0xF1, 0x43, 0x94, 0x11, 0x93, 0x98, 0xEC, + 0x42, 0x02, 0xC1, 0xD4, 0x11, 0x93, 0x98, 0xEC, 0x49, 0x02, 0xC1, 0x92, 0x19, 0xD3, 0x9A, 0xEC, 0x09, 0x05, 0xF2, 0xFF, 0x1A, 0xD5, 0x97, 0xEC, 0x09, 0x43, 0xD0, 0x07, 0x02, 0x9E, 0x0F, 0x9F, + 0xD7, 0xF1, 0x11, 0x93, 0x2F, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0x2F, 0xF7, 0x11, 0x93, 0x2E, 0xF7, 0x09, 0xA3, 0x40, 0x00, 0x19, 0xD3, 0x2E, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, + 0x1A, 0xD5, 0x9B, 0xEC, 0x40, 0x96, 0x1B, 0xD7, 0x9A, 0xEC, 0x0F, 0x9F, 0x3D, 0xF2, 0x11, 0x93, 0x97, 0xEC, 0x12, 0x95, 0x9C, 0xEC, 0x02, 0x43, 0x02, 0x8E, 0x0F, 0x9F, 0x25, 0xF2, 0x02, 0x0E, + 0x0F, 0x9F, 0xF8, 0xF1, 0x11, 0x93, 0x2F, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0x2F, 0xF7, 0x11, 0x93, 0x2E, 0xF7, 0x09, 0xA3, 0x80, 0x00, 0x19, 0xD3, 0x2E, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, + 0xC2, 0x94, 0x1A, 0xD5, 0x9B, 0xEC, 0x40, 0x96, 0x1B, 0xD7, 0x9A, 0xEC, 0x0F, 0x9F, 0x3D, 0xF2, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x0A, 0xF2, + 0x11, 0x93, 0x9F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x0A, 0xF2, 0x40, 0xF0, 0x51, 0xF2, 0x0F, 0x9F, 0x3F, 0xF2, 0x41, 0x92, 0xC8, 0xD2, 0x0A, 0x95, 0x96, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, + 0x2A, 0xEF, 0x42, 0x00, 0x11, 0x93, 0x9F, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x1D, 0xF2, 0x42, 0x96, 0x1B, 0xD7, 0x9F, 0xEC, 0x0F, 0x9F, 0x3F, 0xF2, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, + 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x3F, 0xF2, 0x12, 0x45, 0x03, 0xEC, 0x02, 0x4E, 0x0F, 0x9F, 0x37, 0xF2, 0x11, 0x93, 0x2F, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0x2F, 0xF7, 0x11, 0x93, + 0x2E, 0xF7, 0x09, 0xA3, 0x00, 0x08, 0x19, 0xD3, 0x2E, 0xF7, 0x1A, 0xD5, 0x97, 0xEC, 0x11, 0x93, 0x97, 0xEC, 0x19, 0x25, 0x97, 0xEC, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x41, 0x00, + 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0x51, 0xF2, 0x40, 0x92, 0xC8, 0xD2, 0x09, 0x93, 0x96, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x28, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x61, 0xF2, 0x0A, 0x65, 0xBC, 0x69, 0x02, 0x97, 0xC3, 0x92, 0x09, 0x83, 0x00, 0x02, + 0xC2, 0xD2, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x74, 0xF2, 0x11, 0x93, 0x2F, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0x2F, 0xF7, 0x11, 0x93, 0x2E, 0xF7, + 0x09, 0xA3, 0x00, 0x20, 0x19, 0xD3, 0x2E, 0xF7, 0x11, 0x93, 0x9B, 0xEC, 0x19, 0xD3, 0x04, 0x80, 0x12, 0x95, 0x9A, 0xEC, 0x1A, 0xD5, 0x05, 0x80, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x96, + 0x1B, 0xD7, 0x9B, 0xEC, 0x40, 0x94, 0x1A, 0xD5, 0x9A, 0xEC, 0x19, 0xD3, 0xF2, 0xBD, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x96, 0x03, 0x19, 0xD3, 0x06, 0x82, + 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x13, 0x97, 0x01, 0x82, 0x40, 0x92, 0xC5, 0xD2, 0x12, 0x95, 0x04, 0x82, + 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x0C, 0xF3, 0x0A, 0xA3, 0x02, 0x00, 0x19, 0xD3, 0x04, 0x82, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC0, 0xF2, 0x41, 0x96, + 0xC5, 0xD6, 0x0A, 0x65, 0xBD, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0x0F, 0x9F, 0xF2, 0xF2, + 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xF3, 0xF2, 0x4F, 0x98, 0x0B, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xCC, 0xF2, 0x47, 0x98, 0x11, 0x93, 0x9D, 0xEC, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0xED, 0xF2, 0x12, 0x95, 0x00, 0x82, 0x0A, 0x05, 0xFF, 0xAF, 0x01, 0xD4, 0xC8, 0xD8, 0x41, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0x09, 0xF7, 0x42, 0x00, 0x01, 0x96, 0xC3, 0x94, 0x01, 0xB5, + 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0xED, 0xF2, 0x02, 0x92, 0x50, 0x92, 0x19, 0xD3, 0xA2, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0xA2, 0xBC, 0x0F, 0x9F, 0xF3, 0xF2, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, + 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0x9D, 0xEC, 0x11, 0x93, 0x9E, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x07, 0xF3, 0x13, 0x97, 0x00, 0x82, 0x1B, 0xD7, 0x02, 0x82, + 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x9E, 0xEC, 0x0F, 0x9F, 0x0F, 0xF3, 0xC5, 0x96, 0x1B, 0xD7, 0x9D, 0xEC, 0xC5, 0x92, + 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x1B, 0xF3, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x12, 0x95, 0x03, 0x80, 0x0A, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x3A, 0xF3, 0x0A, 0xB7, 0x00, 0x08, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x3D, 0xF3, 0x11, 0x93, + 0x03, 0xEC, 0x41, 0x02, 0x09, 0xB3, 0xFE, 0xFF, 0x12, 0x95, 0x07, 0x80, 0x01, 0x45, 0x02, 0x8E, 0x0F, 0x9F, 0x3D, 0xF3, 0x41, 0x92, 0x0F, 0x9F, 0x3E, 0xF3, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0C, 0x69, 0xFF, 0x6F, 0x1C, 0xD9, 0xF8, 0xBC, 0x13, 0x97, + 0x6E, 0xEC, 0x0B, 0x47, 0x10, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0x65, 0xF3, 0x0A, 0x95, 0x6F, 0xEC, 0x09, 0x63, 0x06, 0x43, 0x01, 0x99, 0xC4, 0xD6, 0xD2, 0x96, 0x1B, 0xD7, 0xF8, 0xBC, 0x0C, 0x69, + 0xEE, 0x6A, 0xC1, 0xD8, 0xC2, 0x94, 0x1A, 0xD5, 0xF8, 0xBC, 0x40, 0x92, 0xC5, 0xD2, 0x11, 0x43, 0xA0, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0x88, 0xF3, 0xC5, 0x94, 0x0A, 0x03, 0x71, 0xEC, 0xC1, 0x94, + 0x1A, 0xD5, 0xFA, 0xBC, 0x11, 0x93, 0x9F, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x7A, 0xF3, 0x0A, 0x95, 0x6F, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0xF0, 0xF6, 0x19, 0xD3, 0xF8, 0xBC, 0x41, 0x00, + 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x13, 0x47, 0xA0, 0xEC, 0x02, 0x1E, 0x0F, 0x9F, 0x6C, 0xF3, 0x40, 0x92, 0x19, 0xD3, 0xFA, 0xBC, 0x19, 0xD3, 0x6E, 0xEC, 0x19, 0xD3, 0xA0, 0xEC, 0x0A, 0x65, + 0x52, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x06, 0x92, 0x01, 0xD2, 0x0A, 0x65, 0xF0, 0x6A, 0x0B, 0x97, 0x6F, 0xEC, 0x02, 0x99, 0xC4, 0x98, 0xD3, 0xD8, 0x02, 0xD6, 0x0A, 0x03, 0x02, 0x00, 0x01, 0x97, + 0xC3, 0x98, 0x02, 0x96, 0xC3, 0xD8, 0x01, 0x96, 0xC1, 0xD6, 0x1A, 0xD5, 0x6E, 0xEC, 0xC5, 0x98, 0x14, 0x99, 0x6F, 0xEC, 0xC2, 0xD8, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x40, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0x9F, 0xF3, 0x41, 0x00, 0x11, 0x93, 0x9F, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xD9, 0xF3, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD6, 0xF3, + 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x9F, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, + 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x6E, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xAF, 0xBC, 0x47, 0xB2, + 0x59, 0x95, 0x5A, 0x95, 0x12, 0xA5, 0xBF, 0xBC, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xFB, 0xF3, 0x41, 0x04, 0x05, 0x93, 0x40, 0x96, 0x20, 0xD6, 0x62, 0x97, 0x0F, 0x9F, + 0x0A, 0xF4, 0x14, 0x99, 0xFC, 0xBC, 0xD1, 0xD8, 0x14, 0x99, 0xFE, 0xBC, 0xD1, 0xD8, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x20, 0x98, 0x03, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0x01, 0xF4, 0xC5, 0x92, + 0x64, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF8, 0xF4, 0x02, 0x8E, 0x0F, 0x9F, 0x24, 0xF4, 0x62, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x3D, 0xF4, 0x02, 0x8E, 0x0F, 0x9F, 0xEC, 0xF4, 0x61, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0xC9, 0xF4, 0x0F, 0x9F, 0x5A, 0xF5, 0x68, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5A, 0xF4, 0x02, 0x8E, 0x0F, 0x9F, 0x31, 0xF4, 0x65, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x04, 0xF5, 0x0F, 0x9F, + 0x5A, 0xF5, 0x09, 0x43, 0x28, 0x01, 0x02, 0x4E, 0x0F, 0x9F, 0x53, 0xF4, 0x09, 0x43, 0x28, 0x02, 0x02, 0x4E, 0x0F, 0x9F, 0x8E, 0xF4, 0x0F, 0x9F, 0x5A, 0xF5, 0x0D, 0x03, 0x01, 0x00, 0x0C, 0x99, + 0x71, 0xEC, 0x0B, 0x05, 0xFF, 0xFF, 0x40, 0x96, 0x0F, 0x9F, 0x4A, 0xF4, 0xD1, 0x96, 0xD4, 0xD6, 0x20, 0x96, 0x41, 0x06, 0x20, 0xD6, 0x02, 0x47, 0x02, 0x1E, 0x0F, 0x9F, 0x46, 0xF4, 0x1A, 0xD5, + 0xA0, 0xEC, 0x0F, 0x9F, 0xB9, 0xF4, 0x0C, 0x69, 0x00, 0x08, 0x1C, 0xD9, 0x6D, 0xEC, 0x40, 0x92, 0x19, 0xD3, 0x6C, 0xEC, 0x40, 0x94, 0x20, 0xD4, 0x11, 0x93, 0x6D, 0xEC, 0x09, 0x43, 0xF4, 0xFF, + 0x02, 0x8E, 0x0F, 0x9F, 0x5A, 0xF5, 0x0D, 0x07, 0x02, 0x00, 0x2A, 0xD6, 0x0D, 0x09, 0x01, 0x00, 0x04, 0x93, 0xC1, 0x94, 0x42, 0x08, 0x0A, 0xB5, 0xFF, 0x00, 0x2A, 0x96, 0xC3, 0x92, 0x42, 0x06, + 0x2A, 0xD6, 0x59, 0x93, 0x59, 0x93, 0x01, 0xA5, 0x11, 0x93, 0x6D, 0xEC, 0xC1, 0xD4, 0x12, 0x95, 0x6D, 0xEC, 0x11, 0x93, 0x6C, 0xEC, 0xD2, 0x82, 0x19, 0xD3, 0x6C, 0xEC, 0x1A, 0xD5, 0x6D, 0xEC, + 0x20, 0x96, 0x42, 0x06, 0x20, 0xD6, 0x47, 0x46, 0x02, 0x8E, 0x0F, 0x9F, 0x5A, 0xF5, 0x0A, 0x45, 0xF4, 0xFF, 0x02, 0x9E, 0x0F, 0x9F, 0x68, 0xF4, 0x0F, 0x9F, 0x5A, 0xF5, 0x11, 0x93, 0x6C, 0xEC, + 0x09, 0xB5, 0xFF, 0x00, 0x79, 0x93, 0x79, 0x93, 0x01, 0x85, 0x1A, 0xD5, 0x6C, 0xEC, 0x01, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xB3, 0xF4, 0x6F, 0x98, 0x1C, 0xD9, 0x05, 0x84, 0x40, 0xF1, 0x09, 0x93, + 0xF7, 0x07, 0xC8, 0xD2, 0x0A, 0x65, 0x00, 0x08, 0xC8, 0xD4, 0x40, 0x96, 0xC8, 0xD6, 0x40, 0xF0, 0x53, 0xEE, 0x43, 0xF1, 0x6D, 0x98, 0x1C, 0xD9, 0x05, 0x84, 0x41, 0x92, 0x19, 0xD3, 0x71, 0xEC, + 0x43, 0x00, 0x0F, 0x9F, 0xB6, 0xF4, 0x40, 0x94, 0x1A, 0xD5, 0x71, 0xEC, 0x41, 0x96, 0x1B, 0xD7, 0xA0, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, + 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0F, 0x9F, 0x5A, 0xF5, 0x0A, 0x03, 0xFE, 0xFF, 0x61, 0x95, 0x40, 0x98, 0x20, 0xD8, 0x02, 0x49, 0x02, 0x0E, + 0x0F, 0x9F, 0x5A, 0xF5, 0x0D, 0x03, 0x01, 0x00, 0x29, 0xD2, 0x20, 0x92, 0x05, 0x03, 0x42, 0x02, 0xC8, 0xD2, 0x29, 0x96, 0xC3, 0x92, 0x42, 0x06, 0x29, 0xD6, 0xC8, 0xD2, 0x2B, 0xD4, 0x40, 0xF0, + 0xA7, 0xEF, 0x42, 0x00, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x2B, 0x94, 0x02, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0xD5, 0xF4, 0x0F, 0x9F, 0x5A, 0xF5, 0x0D, 0x03, 0x03, 0x00, 0xC8, 0xD2, 0x02, 0x92, + 0xC8, 0xD2, 0x01, 0x94, 0xC8, 0xD4, 0x40, 0xF0, 0x5D, 0xF5, 0x43, 0x00, 0x0F, 0x9F, 0x5A, 0xF5, 0x01, 0x96, 0xC8, 0xD6, 0x0D, 0x03, 0x03, 0x00, 0xC8, 0xD2, 0x02, 0x98, 0xC8, 0xD8, 0x40, 0xF0, + 0xFD, 0xF5, 0x43, 0x00, 0x0F, 0x9F, 0x5A, 0xF5, 0x40, 0x92, 0x40, 0x94, 0x19, 0xD3, 0x2B, 0xF7, 0x1A, 0xD5, 0x2C, 0xF7, 0x01, 0x92, 0x19, 0xD3, 0x6D, 0xEC, 0x40, 0x94, 0x20, 0xD4, 0x02, 0x92, + 0x01, 0x45, 0x02, 0x0E, 0x0F, 0x9F, 0x5A, 0xF5, 0x21, 0xD2, 0x13, 0x97, 0x6D, 0xEC, 0x22, 0xD6, 0xC3, 0x92, 0x09, 0xB5, 0xFF, 0x00, 0x02, 0x97, 0x40, 0x98, 0x79, 0x93, 0x79, 0x93, 0x2C, 0xD2, + 0x40, 0x94, 0x23, 0xD2, 0x24, 0xD4, 0x23, 0x92, 0x03, 0x03, 0x01, 0x95, 0x25, 0xD4, 0x41, 0x94, 0x03, 0x43, 0x02, 0x1E, 0x0F, 0x9F, 0x2D, 0xF5, 0x40, 0x94, 0x24, 0x92, 0x04, 0x03, 0x02, 0x03, + 0x26, 0xD2, 0x11, 0x93, 0x2B, 0xF7, 0x12, 0x95, 0x2C, 0xF7, 0x27, 0xD2, 0x28, 0xD4, 0x25, 0x92, 0x27, 0x94, 0x02, 0x03, 0x01, 0x97, 0x41, 0x94, 0x2D, 0xD4, 0x27, 0x94, 0x02, 0x43, 0x02, 0x1E, + 0x0F, 0x9F, 0x44, 0xF5, 0x40, 0x92, 0x2D, 0xD2, 0x26, 0x92, 0x28, 0x94, 0x02, 0x03, 0x01, 0x99, 0x2D, 0x94, 0x02, 0x09, 0x1B, 0xD7, 0x2B, 0xF7, 0x1C, 0xD9, 0x2C, 0xF7, 0x22, 0x96, 0x0B, 0x03, + 0x01, 0x00, 0x19, 0xD3, 0x6D, 0xEC, 0x20, 0x98, 0x41, 0x08, 0x20, 0xD8, 0x21, 0x48, 0x02, 0x1E, 0x0F, 0x9F, 0x15, 0xF5, 0x6E, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x45, 0x20, 0x08, 0x0B, + 0x01, 0x00, 0x0D, 0x03, 0x08, 0x00, 0x08, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x03, 0xD4, 0x42, 0x02, 0xC1, 0x92, 0x01, 0xD2, 0x02, 0x97, 0xC5, 0x94, 0x0A, 0x83, 0xFF, 0xFF, + 0x11, 0xB3, 0x2C, 0x93, 0x09, 0xB3, 0xFB, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x03, 0x92, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x90, 0xF5, 0x01, 0x94, 0xD2, 0x92, 0x19, 0xD3, 0x2C, 0x93, 0x01, 0xD4, + 0x02, 0x94, 0x12, 0x95, 0x2C, 0x93, 0x44, 0xA4, 0x1A, 0xD5, 0x2C, 0x93, 0x0A, 0xB5, 0xFB, 0xFF, 0x1A, 0xD5, 0x2C, 0x93, 0x0B, 0x07, 0xFF, 0xFF, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x7B, 0xF5, + 0x09, 0x63, 0xD4, 0x6C, 0x01, 0x95, 0xC2, 0x96, 0xC5, 0x94, 0x02, 0xA7, 0xC1, 0xD6, 0x03, 0x92, 0x54, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xA0, 0xF5, 0x0A, 0x83, 0xFF, 0xFF, 0x1B, 0xB3, 0x2C, 0x93, + 0x45, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x04, 0x00, 0x04, 0x94, 0xC5, 0xD4, 0x41, 0x02, 0xC1, 0x92, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, + 0xCD, 0xF5, 0x09, 0x63, 0xD4, 0x6C, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0xB5, 0xFD, 0xFF, 0xC3, 0xD4, 0x0B, 0x97, 0xAA, 0x00, 0x1B, 0xD7, 0x55, 0x05, 0x00, 0xEE, 0x42, 0xA4, 0x01, 0x97, 0xC3, 0xD4, + 0x0B, 0x97, 0x55, 0x00, 0x1B, 0xD7, 0xAA, 0x02, 0x00, 0xEE, 0x0A, 0xB5, 0xFD, 0xFF, 0xC1, 0xD4, 0xC5, 0x92, 0x19, 0xD3, 0x55, 0x05, 0x0F, 0x9F, 0xD6, 0xF5, 0x0A, 0x65, 0xD4, 0x6C, 0x02, 0x97, + 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0xC5, 0x92, 0xC0, 0xD3, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0x01, 0xD2, 0x40, 0x98, + 0x0F, 0x9F, 0xE3, 0xF5, 0x41, 0x08, 0x0C, 0x49, 0xFE, 0x7F, 0x02, 0x8E, 0x0F, 0x9F, 0xFA, 0xF5, 0xC5, 0x94, 0x01, 0x96, 0xC3, 0x94, 0x1A, 0xD5, 0x99, 0xEC, 0x12, 0x95, 0x99, 0xEC, 0x0A, 0xB5, + 0x40, 0x00, 0x1A, 0xD5, 0x99, 0xEC, 0xC3, 0x92, 0x09, 0xB3, 0x40, 0x00, 0x01, 0x45, 0x02, 0x5E, 0x0F, 0x9F, 0xE2, 0xF5, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x44, 0x20, 0x08, 0x0B, + 0x01, 0x00, 0x0D, 0x03, 0x07, 0x00, 0x07, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x01, 0xD4, 0x42, 0x02, 0xC1, 0x92, 0x02, 0xD2, 0x79, 0x95, 0x7A, 0x95, 0x40, 0x44, 0x02, 0x5E, + 0x0F, 0x9F, 0x5F, 0xF6, 0x11, 0x93, 0x2B, 0xF7, 0x42, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x1B, 0xF6, 0x41, 0x96, 0x1B, 0xD7, 0x2B, 0xF7, 0x03, 0xD4, 0x40, 0x92, 0xC8, 0xD2, 0x0A, 0x95, 0xA0, 0x00, + 0xC8, 0xD4, 0x40, 0xF0, 0xA3, 0xF5, 0x02, 0x96, 0x1B, 0xD7, 0x2C, 0x93, 0xC5, 0x94, 0x03, 0x92, 0x01, 0x05, 0x01, 0x92, 0x03, 0x96, 0x03, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0xC5, 0x92, 0xC8, 0xD2, + 0x40, 0xF0, 0xD9, 0xF5, 0x43, 0x00, 0x03, 0x94, 0x41, 0x04, 0x03, 0xD4, 0x4F, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0x1C, 0xF6, 0x40, 0x96, 0x03, 0xD6, 0xC5, 0x92, 0xC1, 0x94, 0x0A, 0xB5, 0xFF, 0x00, + 0x01, 0x96, 0xC3, 0x92, 0x0F, 0x9F, 0x54, 0xF6, 0x03, 0x94, 0x41, 0x04, 0x03, 0xD4, 0x4F, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x87, 0xF6, 0xC5, 0x92, 0x02, 0x03, 0xC1, 0x94, 0x0A, 0xB5, 0xFF, 0x00, + 0x01, 0x92, 0x03, 0x96, 0x03, 0x03, 0xC1, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x01, 0x45, 0x02, 0x4E, 0x0F, 0x9F, 0x44, 0xF6, 0x42, 0x92, 0x19, 0xD3, 0x2B, 0xF7, 0x0F, 0x9F, 0x87, 0xF6, 0x41, 0x94, + 0xC8, 0xD4, 0x0B, 0x97, 0xE8, 0x00, 0xC8, 0xD6, 0x40, 0xF0, 0xA3, 0xF5, 0x41, 0x92, 0xC8, 0xD2, 0x4F, 0x94, 0xC8, 0xD4, 0x40, 0xF0, 0xA3, 0xF5, 0x02, 0x96, 0x1B, 0xD7, 0x2C, 0x93, 0x40, 0x92, + 0x03, 0xD2, 0x44, 0x00, 0xC5, 0x94, 0x03, 0x96, 0x03, 0x05, 0x01, 0x92, 0x03, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x03, 0xD6, 0x4F, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0x72, 0xF6, 0x41, 0x92, + 0xC8, 0xD2, 0x0A, 0x95, 0xD0, 0x00, 0xC8, 0xD4, 0x40, 0xF0, 0xA3, 0xF5, 0x42, 0x00, 0x0A, 0x65, 0xD4, 0x6C, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0x44, 0x00, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xB1, 0xFE, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, + 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x40, 0xF0, 0x1E, 0xF3, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xF6, 0x40, 0xF0, 0x3F, 0xF1, 0x0F, 0x9F, 0xBC, 0xF6, 0x40, 0x96, 0xC8, 0xD6, + 0x09, 0x93, 0x96, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x40, 0x92, + 0x19, 0xD3, 0x2D, 0xBC, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xEA, 0x43, + 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x11, 0x93, 0x03, 0xEC, 0x19, 0xD3, 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x43, 0xA2, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x94, 0x1A, 0xD5, 0xF7, 0xF6, 0x11, 0x93, 0x00, 0x90, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x07, + 0x01, 0x00, 0xC3, 0x94, 0xC1, 0x96, 0x1B, 0xD7, 0x06, 0xF7, 0x1A, 0xD5, 0x00, 0x90, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x92, 0x04, 0x96, 0x0D, 0x5E, 0x50, 0x46, + 0x02, 0x0E, 0x40, 0x92, 0x09, 0xEE, 0x44, 0x46, 0x04, 0x0E, 0x59, 0x93, 0x44, 0x26, 0x04, 0x5E, 0x46, 0xEE, 0x41, 0x93, 0x41, 0x26, 0x43, 0x4E, 0x88, 0x98, 0x90, 0x9A, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x48, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xF1, 0x39, 0xF7, 0x00, 0x00, 0x1F, 0xF1, 0x39, 0xF7, 0x00, 0x00, 0x64, 0xF1, 0x36, 0xF7, 0x3D, 0xF7, 0x00, 0x00, 0x42, 0xF2, 0x39, 0xF7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdinlinef.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdinlinef.h @@ -1,614 +1,756 @@ -/* $Id: zdinlinef.h,v 1.10 2005/03/27 20:47:38 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZD_INLINEF_H #define _ZD_INLINEF_H #include "zd1205.h" +#include "zdglobal.h" +#include "zddebug.h" +#define write_str(a,b) extern zd_80211Obj_t dot11Obj; #if defined(OFDM) + +extern u8 OfdmRateTbl_11A[12]; + extern u8 OfdmRateTbl[12]; #endif -__inline void Cal_Us_Service(u8 TxRate, u16 Len, u16 *pLenInUs, u8 *pService) + +__inline void +Cal_Us_Service( + u8 TxRate, + u16 Len, + u16 *pLenInUs, + u8 *pService +) { - u32 Remainder; - u32 Delta; + u32 Remainder; + u32 Delta; #if defined(OFDM) - *(pService) = 0x00; + + *(pService) = 0x00; #endif - switch(TxRate) { - case RATE_1M: /* 1M bps */ - *(pLenInUs) = Len << 3; - break; - - case RATE_2M: /* 2M bps */ - *(pLenInUs) = Len << 2; - break; - - case RATE_5M: /* 5.5M bps */ - *(pLenInUs) = (u16)(((u32)Len << 4)/11); - Remainder = (((u32)Len << 4) % 11); - if (Remainder) - *(pLenInUs) += 1; - break; - - case RATE_11M: /* 11M bps */ - *(pLenInUs) = (u16)(((u32)Len << 3)/11); - Remainder = (((u32)Len << 3) % 11); - Delta = 11 - Remainder; - if (Remainder) { - *(pLenInUs) += 1; - if (Delta >= 8) { - *(pService) |= BIT_7; - } - } - break; + switch(TxRate) { + case RATE_1M: /* 1M bps */ + *(pLenInUs) = Len << 3; + break; + + case RATE_2M: /* 2M bps */ + *(pLenInUs) = Len << 2; + break; + + case RATE_5M: /* 5.5M bps */ + *(pLenInUs) = (u16)(((u32)Len << 4)/11); + Remainder = (((u32)Len << 4) % 11); + if ( Remainder ) { + *(pLenInUs) += 1; + } + break; + + case RATE_11M: /* 11M bps */ + *(pLenInUs) = (u16)(((u32)Len << 3)/11); + Remainder = (((u32)Len << 3) % 11); + Delta = 11 - Remainder; + if ( Remainder ) { + *(pLenInUs) += 1; + if ( Delta >= 8 ) { + *(pService) |= BIT_7; + } + } + break; #if !(defined(GCCK) && defined(OFDM)) - case RATE_16M: /* 16.5M bps */ - *(pLenInUs) = (u16)(((u32)Len << 4)/33); - Remainder = (((u32)Len << 4) % 33); - Delta = 33 - Remainder; - if (Remainder) { - *(pLenInUs) += 1; - if (Delta < 16) { - } else if ((Delta >= 16) && (Delta < 32)) { - *(pService) |= BIT_7; - } else if (Delta >= 32) { - *(pService) |= BIT_6; - } - } - break; - - case RATE_22M: /* 22M bps */ - *(pLenInUs) = (u16)(((u32)Len << 2)/11); - Remainder = (((u32)Len << 2) % 11); - Delta = 11 - Remainder; - if (Remainder) { - *(pLenInUs) += 1; - if ( Delta < 4 ) { - } else if ((Delta >= 4) && (Delta < 8)) { - *(pService) |= BIT_7; - } else if (Delta >= 8) { - *(pService) |= BIT_6; - } - } - break; - - case RATE_27M: // 27.5 bps - *(pLenInUs) = (u16)(((u32)Len << 4)/55); - Remainder = (((u32)Len << 4) % 55); - Delta = 55 - Remainder; - if (Remainder) { - *(pLenInUs) += 1; - if ( Delta < 16 ) { - } else if ((Delta >= 16) && (Delta < 32)) { - *(pService) |= BIT_7; - } else if ((Delta >= 32) && (Delta < 48)) { - *(pService) |= BIT_6; - } else if (Delta >= 48) { - *(pService) |= (BIT_6 | BIT_7); - } - } - break; - - case RATE_33M: // 33M bps - *(pLenInUs) = (u16)(((u32)Len << 3)/33); - Remainder = (((u32)Len << 3) % 33); - Delta = 33 - Remainder; - if (Remainder) { - *(pLenInUs) += 1; - if (Delta < 8) { - } else if ((Delta >= 8) && (Delta < 16)) { - *(pService) |= BIT_7; - } else if ((Delta >= 16) && (Delta < 24)) { - *(pService) |= BIT_6; - } else if ((Delta >= 24) && (Delta < 32)) { - *(pService) |= (BIT_6 | BIT_7); - } else if (Delta >= 32) { - *(pService) |= BIT_5; - } - } - break; - - case RATE_38M: // 38.5M bps - *(pLenInUs) = (u16)(((u32)Len << 4)/77); - Remainder = (((u32)Len << 4) % 77); - Delta = 77 - Remainder; - if (Remainder) { - *(pLenInUs) += 1; - if (Delta < 16) { - } else if ((Delta >= 16) && (Delta < 32)) { - *(pService) |= BIT_7; - } else if ((Delta >= 32) && (Delta < 48)) { - *(pService) |= BIT_6; - } else if ((Delta >= 48) && (Delta < 64)) { - *(pService) |= (BIT_6 | BIT_7); - } else if (Delta >= 64) { - *(pService) |= BIT_5; - } - } - break; - - case RATE_44M: // 44M bps - *(pLenInUs) = (u16)(((u32)Len << 1)/11); - Remainder = (((u32)Len << 1) % 11); - Delta = 11 - Remainder; - if (Remainder) { - *(pLenInUs) += 1; - if (Delta < 2) { - } else if ((Delta >= 2) && (Delta < 4)) { - *(pService) |= BIT_7; - } else if ((Delta >= 4) && (Delta < 6)) { - *(pService) |= BIT_6; - } else if ((Delta >= 6) && (Delta < 8)) { - *(pService) |= (BIT_6 | BIT_7); - } else if ((Delta >= 8) && (Delta < 10)) { - *(pService) |= BIT_5; - } else if (Delta >= 10) { - *(pService) |= (BIT_5 | BIT_7); - } - } - break; - - case RATE_49M: // 49.5M bps - *(pLenInUs) = (u16)(((u32)Len << 4)/99); - Remainder = (((u32)Len << 4) % 99); - Delta = 99 - Remainder; - if (Remainder) { - *(pLenInUs) += 1; - if (Delta < 16) { - } else if ((Delta >= 16) && (Delta < 32)) { - *(pService) |= BIT_7; - } else if ((Delta >= 32) && (Delta < 48)) { - *(pService) |= BIT_6; - } else if ((Delta >= 48) && (Delta < 64)) { - *(pService) |= (BIT_6 | BIT_7); - } else if ((Delta >= 64) && (Delta < 80)) { - *(pService) |= BIT_5; - } else if ((Delta >= 80) && (Delta < 96)) { - *(pService) |= (BIT_5 | BIT_7); - } else if (Delta >= 96) { - *(pService) |= (BIT_5 | BIT_6); - } - } - break; - - case RATE_55M: // 55M bps - *(pLenInUs) = (u16)(((u32)Len << 3)/55); - Remainder = (((u32)Len << 3) % 55); - Delta = 55 - Remainder; - if (Remainder) { - *(pLenInUs) += 1; - if (Delta < 8) { - } else if ((Delta >= 8) && (Delta < 16)) { - *(pService) |= BIT_7; - } else if ((Delta >= 16) && (Delta < 24)) { - *(pService) |= BIT_6; - } else if ((Delta >= 24) && (Delta < 32)) { - *(pService) |= (BIT_6 | BIT_7); - } else if ((Delta >= 32) && (Delta < 40)) { - *(pService) |= BIT_5; - } else if ((Delta >= 40) && (Delta < 48)) { - *(pService) |= (BIT_5 | BIT_7); - } else if (Delta >= 48) { - *(pService) |= (BIT_5 | BIT_6); - } - } - break; - - case RATE_60M: // 60.5M bps - *(pLenInUs) = (u16)(((u32)Len << 4)/121); - Remainder = (((u32)Len << 4) % 121); - Delta = 121 - Remainder; - if (Remainder) { - *(pLenInUs) += 1; - if (Delta < 16) { - } else if ((Delta >= 16) && (Delta < 32)) { - *(pService) |= BIT_7; - } else if ((Delta >= 32) && (Delta < 48)) { - *(pService) |= BIT_6; - } else if ((Delta >= 48) && (Delta < 64)) { - *(pService) |= (BIT_6 | BIT_7); - } else if ((Delta >= 64) && (Delta < 80)) { - *(pService) |= BIT_5; - } else if ((Delta >= 80) && (Delta < 96)) { - *(pService) |= (BIT_5 | BIT_7); - } else if ((Delta >= 96) && (Delta < 112)) { - *(pService) |= (BIT_5 | BIT_6); - } else if (Delta >= 112) { - *(pService) |= (BIT_5 | BIT_6 | BIT_7); - } - } - break; - - case 13: /* 8.25M bps */ - *(pLenInUs) = (u16)(((u32)Len * 32)/33); - Remainder = (((u32)Len * 32) % 33); - Delta = 33 - Remainder; - if (Remainder) { - *(pLenInUs) += 1; - if (Delta < 32) { - } else { - *(pService) |= BIT_7; - } - } - break; + + case RATE_16M: // 16.5M bps + *(pLenInUs) = (u16)(((u32)Len << 4)/33); + Remainder = (((u32)Len << 4) % 33); + Delta = 33 - Remainder; + if ( Remainder ) { + *(pLenInUs) += 1; + if ( Delta < 16 ) {} + else if ( (Delta >= 16) && (Delta < 32) ) { + *(pService) |= BIT_7; + } else if ( Delta >= 32 ) { + *(pService) |= BIT_6; + } + } + break; + + case RATE_22M: // 22M bps + *(pLenInUs) = (u16)(((u32)Len << 2)/11); + Remainder = (((u32)Len << 2) % 11); + Delta = 11 - Remainder; + if ( Remainder ) { + *(pLenInUs) += 1; + if ( Delta < 4 ) {} + else if ( (Delta >= 4) && (Delta < 8) ) { + *(pService) |= BIT_7; + } else if ( Delta >= 8 ) { + *(pService) |= BIT_6; + } + } + break; + + + + case RATE_27M: // 27.5 bps + *(pLenInUs) = (u16)(((u32)Len << 4)/55); + Remainder = (((u32)Len << 4) % 55); + Delta = 55 - Remainder; + if ( Remainder ) { + *(pLenInUs) += 1; + if ( Delta < 16 ) {} + else if ( (Delta >= 16) && (Delta < 32) ) { + *(pService) |= BIT_7; + + } + else if ( (Delta >= 32) && (Delta < 48) ) { + *(pService) |= BIT_6; + } else if ( Delta >= 48 ) { + *(pService) |= (BIT_6 | BIT_7); + } + } + break; + + case RATE_33M: // 33M bps + *(pLenInUs) = (u16)(((u32)Len << 3)/33); + Remainder = (((u32)Len << 3) % 33); + Delta = 33 - Remainder; + if ( Remainder ) { + *(pLenInUs) += 1; + if ( Delta < 8 ) {} + else if ( (Delta >= 8) && (Delta < 16) ) { + *(pService) |= BIT_7; + } else if ( (Delta >= 16) && (Delta < 24) ) { + *(pService) |= BIT_6; + } else if ( (Delta >= 24) && (Delta < 32) ) { + *(pService) |= (BIT_6 | BIT_7); + } else if ( Delta >= 32 ) { + *(pService) |= BIT_5; + } + } + break; + + case RATE_38M: // 38.5M bps + *(pLenInUs) = (u16)(((u32)Len << 4)/77); + Remainder = (((u32)Len << 4) % 77); + Delta = 77 - Remainder; + if ( Remainder ) { + *(pLenInUs) += 1; + if ( Delta < 16 ) {} + else if ( (Delta >= 16) && (Delta < 32) ) { + *(pService) |= BIT_7; + + + } else if ( (Delta >= 32) && (Delta < 48) ) { + *(pService) |= BIT_6; + } else if ( (Delta >= 48) && (Delta < 64) ) { + *(pService) |= (BIT_6 | BIT_7); + } else if ( Delta >= 64) { + *(pService) |= BIT_5; + } + } + break; + + case RATE_44M: // 44M bps + *(pLenInUs) = (u16)(((u32)Len << 1)/11); + Remainder = (((u32)Len << 1) % 11); + Delta = 11 - Remainder; + if ( Remainder ) { + *(pLenInUs) += 1; + if ( Delta < 2 ) {} + else if ( (Delta >= 2) && (Delta < 4) ) { + *(pService) |= BIT_7; + } else if ( (Delta >= 4) && (Delta < 6) ) { + *(pService) |= BIT_6; + } else if ( (Delta >= 6) && (Delta < 8) ) { + *(pService) |= (BIT_6 | BIT_7); + } else if ( (Delta >= 8) && (Delta < 10) ) { + *(pService) |= BIT_5; + } else if ( Delta >= 10 ) { + *(pService) |= (BIT_5 | BIT_7); + } + } + break; + + case RATE_49M: // 49.5M bps + *(pLenInUs) = (u16)(((u32)Len << 4)/99); + Remainder = (((u32)Len << 4) % 99); + Delta = 99 - Remainder; + if ( Remainder ) { + *(pLenInUs) += 1; + if ( Delta < 16 ) {} + else if ( (Delta >= 16) && (Delta < 32) ) { + *(pService) |= BIT_7; + } else if ( (Delta >= 32) && (Delta < 48) ) { + *(pService) |= BIT_6; + } else if ( (Delta >= 48) && (Delta < 64) ) { + *(pService) |= (BIT_6 | BIT_7); + } + + else if ( (Delta >= 64) && (Delta < 80) ) { + *(pService) |= BIT_5; + } else if ( (Delta >= 80) && (Delta < 96) ) { + *(pService) |= (BIT_5 | BIT_7); + } else if ( Delta >= 96 ) { + *(pService) |= (BIT_5 | BIT_6); + } + } + break; + + case RATE_55M: // 55M bps + *(pLenInUs) = (u16)(((u32)Len << 3)/55); + Remainder = (((u32)Len << 3) % 55); + Delta = 55 - Remainder; + if ( Remainder ) { + *(pLenInUs) += 1; + if ( Delta < 8 ) {} + else if ( (Delta >= 8) && (Delta < 16) ) { + *(pService) |= BIT_7; + } else if ( (Delta >= 16) && (Delta < 24) ) { + *(pService) |= BIT_6; + } else if ( (Delta >= 24) && (Delta < 32) ) { + *(pService) |= (BIT_6 | BIT_7); + } else if ( (Delta >= 32) && (Delta < 40) ) { + *(pService) |= BIT_5; + } else if ( (Delta >= 40) && (Delta < 48) ) { + *(pService) |= (BIT_5 | BIT_7); + } else if ( Delta >= 48 ) { + *(pService) |= (BIT_5 | BIT_6); + } + } + break; + + case RATE_60M: // 60.5M bps + *(pLenInUs) = (u16)(((u32)Len << 4)/121); + Remainder = (((u32)Len << 4) % 121); + Delta = 121 - Remainder; + if ( Remainder ) { + *(pLenInUs) += 1; + if ( Delta < 16 ) {} + else if ( (Delta >= 16) && (Delta < 32) ) { + *(pService) |= BIT_7; + } else if ( (Delta >= 32) && (Delta < 48) ) { + *(pService) |= BIT_6; + } else if ( (Delta >= 48) && (Delta < 64) ) { + *(pService) |= (BIT_6 | BIT_7); + } else if ( (Delta >= 64) && (Delta < 80) ) { + *(pService) |= BIT_5; + } else if ( (Delta >= 80) && (Delta < 96) ) { + *(pService) |= (BIT_5 | BIT_7); + } else if ( (Delta >= 96) && (Delta < 112) ) { + *(pService) |= (BIT_5 | BIT_6); + } else if ( Delta >= 112 ) { + *(pService) |= (BIT_5 | BIT_6 | BIT_7); + } + } + break; + + case 13: // 8.25M bps + *(pLenInUs) = (u16)(((u32)Len * 32)/33); + Remainder = (((u32)Len * 32) % 33); + Delta = 33 - Remainder; + if ( Remainder ) { + *(pLenInUs) += 1; + if (Delta < 32) {} + else { + *(pService) |= BIT_7; + } + } + + break; #else - case RATE_6M: // 6M - *(pLenInUs) = (u16)(((u32)Len << 3)/6); - break; - - case RATE_9M: // 9M - *(pLenInUs) = (u16)(((u32)Len << 3)/9); - break; - - case RATE_12M: // 12M - *(pLenInUs) = (u16)(((u32)Len << 3)/12); - break; - - case RATE_18M: // 18M - *(pLenInUs) = (u16)(((u32)Len << 3)/18); - break; - - case RATE_24M: // 24M - *(pLenInUs) = (u16)(((u32)Len << 3)/24); - break; - - case RATE_36M: // 36M - *(pLenInUs) = (u16)(((u32)Len << 3)/36); - break; - - case RATE_48M: // 48M - *(pLenInUs) = (u16)(((u32)Len << 3)/48); - break; - - case RATE_54M: // 54M - *(pLenInUs) = (u16)(((u32)Len << 3)/54); - break; -#endif - default: - printk(KERN_ERR "zd1205: Invalid RF module parameter\n"); - } + + case RATE_6M: // 6M + *(pLenInUs) = (u16)(((u32)Len << 3)/6); + break; + + case RATE_9M: // 9M + *(pLenInUs) = (u16)(((u32)Len << 3)/9); + break; + + case RATE_12M: // 12M + *(pLenInUs) = (u16)(((u32)Len << 3)/12); + break; + + case RATE_18M: // 18M + *(pLenInUs) = (u16)(((u32)Len << 3)/18); + break; + + case RATE_24M: // 24M + *(pLenInUs) = (u16)(((u32)Len << 3)/24); + break; + + case RATE_36M: // 36M + *(pLenInUs) = (u16)(((u32)Len << 3)/36); + + break; + + case RATE_48M: // 48M + *(pLenInUs) = (u16)(((u32)Len << 3)/48); + break; + + case RATE_54M: // 54M + *(pLenInUs) = (u16)(((u32)Len << 3)/54); + break; +#endif + + default: + printk(KERN_ERR "zd1205: Invalid RF module parameter\n"); + + } } -#define CTRL_SIZE 25 -__inline unsigned long Cfg_CtrlSetting(struct zd1205_private *macp, zd1205_SwTcb_t *pSwTcb, wla_Header_t *pWlaHdr, ctrl_Set_parm_t *pSetParms) +char DbgStr100[]="TKIP:"; +char DbgStr101[]="CtrlSetting"; +char DbgStr102[]="EncryType"; +#define CTRL_SIZE 25 +__inline unsigned long +Cfg_CtrlSetting( + struct zd1205_private *macp, + zd1205_SwTcb_t *pSwTcb, + wla_Header_t *pWlaHdr, + ctrl_Set_parm_t *pSetParms +) { - zd1205_Ctrl_Set_t *pCtrlSet = pSwTcb->pHwCtrlPtr; - u8 tmp; - u16 Len = 0; - u16 NextLen = 0; - u16 LenInUs; - u16 NextLenInUs; - u8 Service; - u8 TxRate; - u8 Rate = pSetParms->Rate; - u8 Preamble = pSetParms->Preamble; - u32 CurrFragLen = pSetParms->CurrFragLen; - u32 NextFragLen = pSetParms->NextFragLen; - u8 encryType = pSetParms->encryType; - //u8 vapId = pSetParms->vapId; - u8 bMgtFrame = 0; - u8 bGroupAddr = 0; - u8 EnCipher = ((pWlaHdr->FrameCtrl[1] & ENCRY_BIT) ? 1 : 0); - u16 FragNum = (pWlaHdr->SeqCtrl[0] & 0x0F); - card_Setting_t *pCardSetting = &macp->cardSetting; - u16 FrameType = pWlaHdr->FrameCtrl[0]; - u8 bBurst = 0; - - if (Rate > macp->AdapterMaxRate) - Rate = macp->AdapterMaxRate; - - if ((FrameType & 0x0c) == MANAGEMENT) { - bMgtFrame = 1; - Rate = dot11Obj.BasicRate; - } - - if (bMgtFrame) { - if ((FrameType == PROBE_RSP) || (FrameType == PROBE_REQ)) { - // Ensure Site-Survey smooth - Rate = RATE_1M; - Preamble = 0; - } - } - - if (FrameType == PS_POLL) { - // For compatibility with D-Link AP - Rate = RATE_1M; - Preamble = 0; - } - - if ((Rate == RATE_1M) && (Preamble == 1)) { //1M && short preamble - Rate = RATE_2M; - } - - if (macp->bFixedRate) { - if (!bMgtFrame) - Rate = pCardSetting->FixedRate; - } + zd1205_Ctrl_Set_t *pCtrlSet = pSwTcb->pHwCtrlPtr; + u8 tmp; + u16 Len = 0; + u16 NextLen = 0; + u16 LenInUs = 0; + u16 NextLenInUs = 0; + u8 Service; + u8 TxRate; + u8 Rate = pSetParms->Rate; + u8 Preamble = pSetParms->Preamble; + u32 CurrFragLen = pSetParms->CurrFragLen; + u32 NextFragLen = pSetParms->NextFragLen; + u8 encryType = pSetParms->encryType; + //u8 vapId = pSetParms->vapId; + u8 bMgtFrame = 0; + u8 bGroupAddr = 0; + u8 EnCipher = ((pWlaHdr->FrameCtrl[1] & ENCRY_BIT) ? 1 : 0); + u16 FragNum = (pWlaHdr->SeqCtrl[0] & 0x0F); + card_Setting_t *pCardSettting = &macp->cardSetting; + u16 FrameType = pWlaHdr->FrameCtrl[0]; + u8 bBusrt = 0; +#ifdef ZD1211B + + u8 LengthDiff=0; +#endif + + memset(pCtrlSet,0,sizeof(zd1205_Ctrl_Set_t)); + + if (Rate > macp->AdapterMaxRate) + Rate = macp->AdapterMaxRate; + + if ((FrameType & 0x0c) == MANAGEMENT) + { + bMgtFrame = 1; + Rate = dot11Obj.BasicRate; + } + if ((FrameType & 0x0c) == DATA) + { + write_str(DbgStr101, EnCipher); + } + if (bMgtFrame) + { + if ((FrameType == PROBE_RSP) || (FrameType == PROBE_REQ)) { + // Ensure Site-Survey smooth + if(PURE_A_MODE != pCardSettting->MacMode) { + Rate = RATE_1M; + Preamble = 0; + } else if(PURE_A_MODE == pCardSettting->MacMode) { + Rate = RATE_6M; + Preamble =1; + } + + } + } + + if (FrameType == PS_POLL) + { + // For compatibility with D-Link AP + if(PURE_A_MODE != pCardSettting->MacMode) { + Rate = RATE_1M; + Preamble = 0; + } else if(PURE_A_MODE == pCardSettting->MacMode) { + Rate = RATE_6M; + Preamble = 1; + } + + } + + if ((Rate == RATE_1M) && (Preamble == 1)) + { //1M && short preamble + Rate = RATE_2M; + } + + if (macp->bFixedRate) + { + if (!bMgtFrame) + Rate = pCardSettting->FixedRate; + } + + pSwTcb->Rate = Rate; + //FPRINT_V("zdinline Rate", Rate); - pSwTcb->Rate = Rate; - //FPRINT_V("zdinline Rate", Rate); +#if !defined(OFDM) -#if !defined(OFDM) - pCtrlSet->CtrlSetting[0] = (Rate | (Preamble << 5)); + pCtrlSet->CtrlSetting[0] = (Rate | (Preamble << 5)); #else - if (Rate < RATE_6M) { //CCK frame - pCtrlSet->CtrlSetting[0] = (Rate | (Preamble << 5)); + + if (Rate < RATE_6M) + { //CCK frame + pCtrlSet->CtrlSetting[0] = (Rate | (Preamble << 5)); + //``JWEI 2003/12/22 #if fTX_PWR_CTRL - if ((macp->TxOFDMCnt > 0) && (macp->TxOFDMCnt < cTX_SENT_LEN)) - macp->TxOFDMCnt --; - macp->TxPwrCCK ++; + + if ((macp->TxOFDMCnt > 0) && (macp->TxOFDMCnt < cTX_SENT_LEN)) + macp->TxOFDMCnt --; + macp->TxPwrCCK ++; #endif - } else { + + } else + { #if fTX_PWR_CTRL - macp->TxPwrOFDM ++; - macp->TxOFDMCnt ++; - if (Rate == RATE_48M) { - if (macp->TxOFDMType != cTX_48M) - macp->TxOFDMCnt = 0; - macp->TxOFDMType = cTX_48M; - } else if (Rate == RATE_54M) { - if (macp->TxOFDMType != cTX_54M) - macp->TxOFDMCnt = 0; - macp->TxOFDMType = cTX_54M; - } else { - if (macp->TxOFDMType != cTX_OFDM) - macp->TxOFDMCnt = 0; - macp->TxOFDMType = cTX_OFDM; - } -#endif - pCtrlSet->CtrlSetting[0] = OfdmRateTbl[Rate]; - } -#endif - - TxRate = Rate; - - //keep current Tx rate - pCardSetting->CurrTxRate = TxRate; - - /* Length in byte */ - if (EnCipher) { - if (!pCardSetting->SwCipher) { - switch(encryType) { - case WEP64: - case WEP128: - case WEP256: - Len = CurrFragLen + 36; /* Header(24) + CRC32(4) + IV(4) + ICV(4) */ - NextLen = NextFragLen + 36; - break; - - case TKIP: - Len = CurrFragLen + 40; /* Header(24) + CRC32(4) + IV(4) + EIV(4) + ICV(4) */ - NextLen = NextFragLen + 40; - break; - - case AES: - Len = CurrFragLen + 44; /* Header(24) + CRC32(4) + IV(4) + ExtendedIV(4) + MIC(8) */ - NextLen = NextFragLen + 44; - FPRINT("AES Encryption"); - FPRINT_V("Len", Len); - break; - - default: - printk(KERN_DEBUG "error encryType = %x\n", encryType); - break; - } - } else { //use software encryption - if (pCardSetting->DynKeyMode == DYN_KEY_TKIP) { - if ((pWlaHdr->DA[0] & BIT_0) && (pCardSetting->WpaBcKeyLen != 32)) { //multicast - Len = CurrFragLen + 32; // Header(24) + CRC32(4) + IV(4), ICV was packed under payload - NextLen = NextFragLen + 32; - } else { - Len = CurrFragLen + 36; // Header(24) + CRC32(4) + IV(4) + ExtendIV(4), ICV was packed under payload - NextLen = NextFragLen + 36; - } - } else { - Len = CurrFragLen + 32; // Header(24) + CRC32(4) + IV(4), ICV was packed under payload - NextLen = NextFragLen + 32; - } - } - } else { // no cipher - Len = CurrFragLen + 28; /* Header(24) + CRC32(4) */ - NextLen = NextFragLen + 28; - } - - /* Correct some exceptions */ - if (FrameType == PS_POLL) { - Len = CurrFragLen + 20; // Header(16) + CRC32(4) - } - - /* Correct some exceptions */ - if (NextFragLen == 0) - NextLen = 0; - pCtrlSet->CtrlSetting[1] = (u8)Len; /* low byte */ - pCtrlSet->CtrlSetting[2] = (u8)(Len >> 8);/* high byte */ - - /* TCB physical address */ - pCtrlSet->CtrlSetting[3] = (u8)(pSwTcb->TcbPhys); - pCtrlSet->CtrlSetting[4] = (u8)(pSwTcb->TcbPhys >> 8); - pCtrlSet->CtrlSetting[5] = (u8)(pSwTcb->TcbPhys >> 16); - pCtrlSet->CtrlSetting[6] = (u8)(pSwTcb->TcbPhys >> 24); - - pCtrlSet->CtrlSetting[7] = 0x00; - pCtrlSet->CtrlSetting[8] = 0x00; - pCtrlSet->CtrlSetting[9] = 0x00; - pCtrlSet->CtrlSetting[10] = 0x00; - - /* Misc */ - tmp = 0; - if (!FragNum) { - tmp |= BIT_0; - - if (macp->bTxBurstEnable) { - if (macp->activeTxQ->count > 0) { - // AT LEAST one packet in ActiveChainList - macp->TxBurstCount++; - if (macp->TxBurstCount == 3) // only 3 packets - macp->TxBurstCount = 0; - } else { - // recount again, next packet will back off - macp->TxBurstCount = 0; - } - - // burst mode - if (macp->TxBurstCount == 0) { - tmp |= BIT_0; //need back off - } else { - tmp &= ~BIT_0; //burst, no need back off - bBurst = 1; - - pCtrlSet->CtrlSetting[0] |= BIT_7; - } - } - } - - if (pWlaHdr->DA[0] & BIT_0) { /* Multicast */ - bGroupAddr = 1; - tmp |= BIT_1; - } - - //if (bMgtFrame) { - // tmp |= BIT_3; - //} - - if (FrameType == PS_POLL) //AP don't send PS_POLL - tmp |= BIT_2; - - if (Len > pCardSetting->RTSThreshold) { - if ((!bMgtFrame) && (!bGroupAddr)) - tmp |= BIT_5; - } - + macp->TxPwrOFDM ++; + macp->TxOFDMCnt ++; + if (Rate == RATE_48M) { + if (macp->TxOFDMType != cTX_48M) + macp->TxOFDMCnt = 0; + macp->TxOFDMType = cTX_48M; + } else if (Rate == RATE_54M) { + if (macp->TxOFDMType != cTX_54M) + macp->TxOFDMCnt = 0; + macp->TxOFDMType = cTX_54M; + } else { + if (macp->TxOFDMType != cTX_OFDM) + macp->TxOFDMCnt = 0; + macp->TxOFDMType = cTX_OFDM; + } +#endif + + if(PURE_A_MODE != pCardSettting->MacMode) + pCtrlSet->CtrlSetting[0] = OfdmRateTbl[Rate]; + else if(PURE_A_MODE == pCardSettting->MacMode) { + pCtrlSet->CtrlSetting[0] = OfdmRateTbl_11A[Rate]; + } + + } +#endif + + TxRate = Rate; + + //keep current Tx rate + pCardSettting->CurrTxRate = TxRate; + + /* Length in byte */ + if (EnCipher) + { + if (!pCardSettting->SwCipher) { + write_str(DbgStr102, encryType); + switch(encryType) { + case WEP64: + case WEP128: + case WEP256: + Len = CurrFragLen + 36; /* Header(24) + CRC32(4) + IV(4) + ICV(4) */ + NextLen = NextFragLen + 36; +#ifdef ZD1211B + + LengthDiff=17; +#endif + + break; + + case TKIP: + write_str(DbgStr100, CurrFragLen); + Len = CurrFragLen + 40; /* Header(24) + CRC32(4) + IV(4) + EIV(4) + ICV(4) */ + NextLen = NextFragLen + 40; +#ifdef ZD1211B + + LengthDiff=17; +#endif + + break; + + case AES: + Len = CurrFragLen + 44; /* Header(24) + CRC32(4) + IV(4) + ExtendedIV(4) + MIC(8) */ + NextLen = NextFragLen + 44; +#ifdef ZD1211B + + LengthDiff=13; +#endif + //FPRINT_V("Len", Len); + break; + + default: + printk(KERN_DEBUG "error encryType = %x\n", encryType); + break; + } + } else { //use software encryption + if (pCardSettting->DynKeyMode == DYN_KEY_TKIP) { + if ((pWlaHdr->DA[0] & BIT_0) && (pCardSettting->WpaBcKeyLen != 32)) { //multicast + Len = CurrFragLen + 32; // Header(24) + CRC32(4) + IV(4), ICV was packed under payload + + NextLen = NextFragLen + 32; + } else { + Len = CurrFragLen + 36; // Header(24) + CRC32(4) + IV(4) + ExtendIV(4), ICV was packed under payload + NextLen = NextFragLen + 36; + } + } else { + Len = CurrFragLen + 32; // Header(24) + CRC32(4) + IV(4), ICV was packed under payload + NextLen = NextFragLen + 32; + } + } + } else + { // no cipher + Len = CurrFragLen + 28; /* Header(24) + CRC32(4) */ + NextLen = NextFragLen + 28; +#ifdef ZD1211B + + LengthDiff=21; +#endif + + } + + /* Corret some exceptions */ + if (FrameType == PS_POLL) + { + Len = CurrFragLen + 20; // Header(16) + CRC32(4) + } + + /* Corret some exceptions */ + if (NextFragLen == 0) + NextLen = 0; + + pCtrlSet->CtrlSetting[1] = (u8)Len; /* low byte */ + pCtrlSet->CtrlSetting[2] = (u8)(Len >> 8); /* high byte */ + + /* TCB physical address */ + pCtrlSet->CtrlSetting[3] = (u8)(pSwTcb->TcbPhys); + pCtrlSet->CtrlSetting[4] = (u8)(pSwTcb->TcbPhys >> 8); + pCtrlSet->CtrlSetting[5] = (u8)(pSwTcb->TcbPhys >> 16); + pCtrlSet->CtrlSetting[6] = (u8)(pSwTcb->TcbPhys >> 24); + + pCtrlSet->CtrlSetting[7] = 0x00; + pCtrlSet->CtrlSetting[8] = 0x00; + pCtrlSet->CtrlSetting[9] = 0x00; + pCtrlSet->CtrlSetting[10] = 0x00; + + /* Misc */ + tmp = 0; + if (!FragNum) + { + tmp |= BIT_0; + + if (macp->bTxBurstEnable) { + if (macp->activeTxQ->count > 0) { + // AT LEAST one packet in ActiveChainList + macp->TxBurstCount++; + if (macp->TxBurstCount == 3) // only 3 packets + macp->TxBurstCount = 0; + } else { + // recount again, next packet will back off + macp->TxBurstCount = 0; + } + + // burst mode + if (macp->TxBurstCount == 0) { + tmp |= BIT_0; //need back off + } else { + tmp &= ~BIT_0; //burst, no need back off + bBusrt = 1; + + pCtrlSet->CtrlSetting[0] |= BIT_7; + } + } + } + + if (pWlaHdr->DA[0] & BIT_0) + { /* Multicast */ + bGroupAddr = 1; + tmp |= BIT_1; + } + + //if (bMgtFrame){ + // tmp |= BIT_3; + //} + + if (FrameType == PS_POLL) //AP don't send PS_POLL + tmp |= BIT_2; + + +#ifndef HOST_IF_USB + + if ((pCardSettting->BssType == INDEPENDENT_BSS) && (!bMgtFrame)) + { + if (zd1205_DestPowerSave(macp, &pWlaHdr->DA[0])) { + tmp |= BIT_4; + } + } +#endif + + if (Len > pCardSettting->RTSThreshold) + { + if ((!bMgtFrame) && (!bGroupAddr)) { + if(PURE_A_MODE != macp->cardSetting.MacMode) + tmp |= BIT_5; + else if(PURE_A_MODE == macp->cardSetting.MacMode) + tmp |= BIT_7; + } + } + #if (defined(GCCK) && defined(OFDM)) - if (TxRate > RATE_11M) { - if (tmp & BIT_5) { - // need to send RTS or CTS, in OFDM only send CTS, in CCK send RTS - tmp &= ~BIT_5; - tmp |= BIT_7; - } else if (dot11Obj.ConfigFlag & ENABLE_PROTECTION_SET) { - // id SelfCTS on, force send CTS when OFDM - tmp |= BIT_7; - } - } -#endif - if ((EnCipher) && (!pCardSetting->SwCipher)) { - tmp |= BIT_6; - } - - if ((macp->bTxBurstEnable)) { - if (!bBurst) - // bBurst off, this is the first one, force send CTS - tmp |= BIT_7; - else - // bBurst on, this is the burst one, no need CTS - tmp &= ~BIT_7; - } - - pCtrlSet->CtrlSetting[11] = tmp; - - /* Address1 */ - pCtrlSet->CtrlSetting[12] = pWlaHdr->DA[0]; - pCtrlSet->CtrlSetting[13] = pWlaHdr->DA[1]; - pCtrlSet->CtrlSetting[14] = pWlaHdr->DA[2]; - pCtrlSet->CtrlSetting[15] = pWlaHdr->DA[3]; - pCtrlSet->CtrlSetting[16] = pWlaHdr->DA[4]; - pCtrlSet->CtrlSetting[17] = pWlaHdr->DA[5]; - - if (FrameType == DATA) { - macp->TotalTxDataFrmBytes += Len; - if (pCtrlSet->CtrlSetting[12] & BIT_0) { - macp->txMulticastFrm ++; - macp->txMulticastOctets += CurrFragLen; - } else { - macp->txUnicastFrm ++; - macp->txUnicastOctets += CurrFragLen; - macp->txDataPerSec += CurrFragLen; - } - } - - /* NextLen */ - if (NextLen) { - pCtrlSet->CtrlSetting[18] = (u8)NextLen; - pCtrlSet->CtrlSetting[19] = (u8)(NextLen >> 8); - } - - /* LenInUs */ - Cal_Us_Service(TxRate, Len, &LenInUs, &Service); - - if (macp->bTxBurstEnable) - if (!bBurst) - LenInUs = LenInUs * 4; - pCtrlSet->CtrlSetting[20] = (u8)LenInUs; - pCtrlSet->CtrlSetting[21] = (u8)(LenInUs >> 8); + if (TxRate > RATE_11M && PURE_A_MODE != macp->cardSetting.MacMode) + { + + if (tmp & BIT_5) { + // need to send RTS or CTS, in OFDM only send CTS, in CCK send RTS + tmp &= ~BIT_5; + tmp |= BIT_7; + } + //else if ((dot11Obj.ConfigFlag & ENABLE_PROTECTION_SET) && dot11Obj.bDisProtection==0) + else if ((dot11Obj.ConfigFlag & ENABLE_PROTECTION_SET)) { + // id SelfCTS on, force send CTS when OFDM + tmp |= BIT_7; + } + } +#endif + + if ((EnCipher) && (!pCardSettting->SwCipher)) + { + tmp |= BIT_6; + } + + + if ((macp->bTxBurstEnable)) + { + if (!bBusrt) + // bBusrt off, this is the first one, force send CTS + tmp |= BIT_7; + else + // bBusrt on, this is the burst one, no need CTS + tmp &= ~BIT_7; + } + + pCtrlSet->CtrlSetting[11] = tmp; + + /* Address1 */ + pCtrlSet->CtrlSetting[12] = pWlaHdr->DA[0]; + pCtrlSet->CtrlSetting[13] = pWlaHdr->DA[1]; + pCtrlSet->CtrlSetting[14] = pWlaHdr->DA[2]; + pCtrlSet->CtrlSetting[15] = pWlaHdr->DA[3]; + pCtrlSet->CtrlSetting[16] = pWlaHdr->DA[4]; + pCtrlSet->CtrlSetting[17] = pWlaHdr->DA[5]; + + if (FrameType == DATA) + { + macp->TotalTxDataFrmBytes += Len; + if (pCtrlSet->CtrlSetting[12] & BIT_0) { + macp->txMulticastFrm ++; + macp->txMulticastOctets += CurrFragLen; + } else { + macp->txUnicastFrm ++; + macp->txUnicastOctets += CurrFragLen; + macp->txDataPerSec += CurrFragLen; + } + + } + + /* NextLen */ +#ifdef ZD1211 + if (NextLen) + { + pCtrlSet->CtrlSetting[18] = (u8)NextLen; + pCtrlSet->CtrlSetting[19] = (u8)(NextLen >> 8); + } +#elif defined(ZD1211B) + pSwTcb->LengthDiff = LengthDiff; +#endif + + /* LenInUs */ + Cal_Us_Service(TxRate, Len, &LenInUs, &Service); + + if (macp->bTxBurstEnable) + if (!bBusrt) + LenInUs = LenInUs * 4; - /* Service */ + pCtrlSet->CtrlSetting[20] = (u8)LenInUs; + pCtrlSet->CtrlSetting[21] = (u8)(LenInUs >> 8); + + /* Service */ #if !(defined(GCCK) && defined(OFDM)) - pCtrlSet->CtrlSetting[22] = Service; + + pCtrlSet->CtrlSetting[22] = Service; #else - if (Rate < RATE_6M) { - pCtrlSet->CtrlSetting[22] = Service; - } else { - pCtrlSet->CtrlSetting[22] = 0; - } + + if (Rate < RATE_6M) + { + pCtrlSet->CtrlSetting[22] = Service; + } else + { + pCtrlSet->CtrlSetting[22] = 0; + } #endif - if (NextLen == 0) { - NextLenInUs = 0; - } else { - Cal_Us_Service(TxRate, NextLen, &NextLenInUs, &Service); - pCtrlSet->CtrlSetting[23] = (u8)NextLenInUs; - pCtrlSet->CtrlSetting[24] = (u8)(NextLenInUs >> 8); + if (NextLen == 0) + { + NextLenInUs = 0; + } else + { + Cal_Us_Service(TxRate, NextLen, &NextLenInUs, &Service); + pCtrlSet->CtrlSetting[23] = (u8)NextLenInUs; + pCtrlSet->CtrlSetting[24] = (u8)(NextLenInUs >> 8); + #ifdef OFDM - // NextLen - // backup NextLen, because OFDM use these 2 bytes as total length, - // so we backup here for Retry fail use. - pCtrlSet->CtrlSetting[26] = (u8)NextLen; - pCtrlSet->CtrlSetting[27] = (u8)(NextLen >> 8); + // NextLen + // backup NextLen, because OFDM use these 2 bytes as total length, + // so we backup here for Retry fail use. + pCtrlSet->CtrlSetting[26] = (u8)NextLen; + pCtrlSet->CtrlSetting[27] = (u8)(NextLen >> 8); #endif - } - return(CTRL_SIZE); + + } + + return(CTRL_SIZE); } + #define LOW8(v16) ((u8)( (v16) & 0xFF)) -#define HIGH8(v16) ((u8)(((v16)>>8) & 0xFF)) +#define HIGH8(v16) ((u8)(((v16)>>8) & 0xFF)) +__inline u8 +ABS(u8 N1, u8 N2) +{ + s16 Result; + + Result = N1-N2; + if(Result < 0 ) + Result *= -1; + return (u8)Result; + +} -__inline u32 Cfg_MacHeader(struct zd1205_private *macp, zd1205_SwTcb_t *pSwTcb, wla_Header_t *pWlaHdr, u8 hdrLen) +__inline u32 +Cfg_MacHeader( + struct zd1205_private *macp, + zd1205_SwTcb_t *pSwTcb, + wla_Header_t *pWlaHdr, + u8 hdrLen +) { - zd1205_Header_t *pHdr; - u8 HdrLen; + zd1205_Header_t *pHdr; + u8 HdrLen; + + pHdr = pSwTcb->pHwHeaderPtr; - pHdr = pSwTcb->pHwHeaderPtr; - HdrLen = hdrLen; - memcpy(&pHdr->MacHeader[0], (u8 *)pWlaHdr, hdrLen); + HdrLen = hdrLen; + memcpy(&pHdr->MacHeader[0], (u8 *)pWlaHdr, hdrLen); - return(HdrLen); + return(HdrLen); } + #endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/menu_drv_macro.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/menu_drv_macro.h @@ -0,0 +1,22 @@ +#ifndef __MENU_DRV_MACRO_H +#define __MENU_DRV_MACRO_H + +#define RDPhy 1 +#define WRPhy 2 +#define RDMAC 3 +#define WRMAC 4 +#define RDCNT 5 +#define BUF_LEN 2048 + +#define T_bcnCnt 0 +#define T_dtimCnt 1 +#define T_txCmpCnt 2 +#define T_rxCnt 3 +#define T_retryFailCnt 4 +#define T_txCnt 5 +#define T_txIdleCnt 6 +#define T_rxIdleCnt 7 +#define T_rxDupCnt 8 + +#define ZD_MENU_DBG ZDAPIOCTL+4 +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zddebug2.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zddebug2.h @@ -0,0 +1,17 @@ +#ifndef _ZD_DEBUG2_ +#define _ZD_DEBUG2_ + +#include +#include +#include +#include +#include "zd1205.h" +#include "zdsorts.h" +#include "zdutils.h" + + + +int zd1205_zd_dbg2_ioctl(struct zd1205_private *macp, struct zdap_ioctl *zdreq,u32 *ret); + + +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdversion.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdversion.h @@ -1,30 +1,6 @@ -/* $Id: zdversion.h,v 1.11 2005/03/17 17:27:51 akw Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZD_VERSION_H_ #define _ZD_VERSION_H_ -#define DRIVER_VERSION "20050315" +#define VERSIONID "2.5.0.0" #endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdpmfilter.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdpmfilter.h @@ -1,27 +1,3 @@ -/* $Id: zdpmfilter.h,v 1.3 2005/03/17 09:15:16 akw Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZDPMFILTER_H #define _ZDPMFILTER_H --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/WS11Ub.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/WS11Ub.h @@ -1,128 +1,259 @@ +#ifdef ZD1211 ={ -0x00, 0xF0, 0x66, 0xFE, 0x67, 0xFE, 0x68, 0xFE, 0x69, 0xFE, 0x6A, 0xFE, 0x6B, 0xFE, 0x6C, 0xFE, 0x6D, 0xFE, 0x09, 0x63, 0xD6, 0x79, 0x57, 0x94, 0xD1, 0xD4, 0x0A, 0x95, 0x17, 0xF8, 0xD1, 0xD4, -0x0A, 0x95, 0xD2, 0x07, 0x00, 0xEE, 0xC1, 0xD4, 0x00, 0xEE, 0x0F, 0x9F, 0x95, 0xF8, 0x30, 0x43, 0x10, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x66, 0x66, 0x66, 0x00, 0x00, 0x6A, 0x6A, -0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xFF, 0x07, -0x00, 0x00, 0x12, 0x01, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0x40, 0xCE, 0x0A, 0x11, 0x12, 0x30, 0x43, 0x10, 0x20, 0x00, 0x01, 0x04, 0x03, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x52, -0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0x4A, 0x4A, -0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0x42, 0x42, -0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0x0C, 0x03, -0x5A, 0x00, 0x79, 0x00, 0x44, 0x00, 0x41, 0x00, 0x53, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0x03, 0x55, 0x00, 0x53, 0x00, 0x42, 0x00, 0x32, 0x00, 0x2E, 0x00, -0x30, 0x00, 0x20, 0x00, 0x57, 0x00, 0x4C, 0x00, 0x41, 0x00, 0x4E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0xC7, 0xFE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, -0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, 0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0xE0, 0xFE, -0x41, 0xEE, 0x98, 0x9A, 0x09, 0x02, 0x2E, 0x00, 0x01, 0x01, 0x00, 0x80, 0xFA, 0x09, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x01, 0x02, 0x00, 0x02, 0x00, 0x07, 0x05, 0x82, -0x02, 0x00, 0x02, 0x00, 0x07, 0x05, 0x83, 0x03, 0x40, 0x00, 0x01, 0x07, 0x05, 0x04, 0x03, 0x40, 0x00, 0x01, 0x09, 0x02, 0x2E, 0x00, 0x01, 0x01, 0x00, 0x80, 0xFA, 0x09, 0x04, 0x00, 0x00, 0x04, -0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x01, 0x02, 0x40, 0x00, 0x00, 0x07, 0x05, 0x82, 0x02, 0x40, 0x00, 0x00, 0x07, 0x05, 0x83, 0x03, 0x40, 0x00, 0x01, 0x07, 0x05, 0x04, 0x02, 0x40, 0x00, 0x00, -0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, -0xEE, 0xEE, 0xEE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFC, 0x7E, 0xBF, 0xDF, 0xFB, 0xFD, 0xFB, 0xFD, 0xCA, 0xFB, -0xCE, 0xFB, 0x12, 0xFC, 0xD2, 0xFB, 0x12, 0xFC, 0xD6, 0xFB, 0xE0, 0xFB, 0x12, 0xFC, 0xEA, 0xFB, 0xF4, 0xFB, 0xFE, 0xFB, 0x08, 0xFC, 0xE7, 0xFC, 0xEB, 0xFC, 0xF6, 0xFC, 0x35, 0xFD, 0x35, 0xFD, -0x20, 0xFD, 0x2B, 0xFD, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0x81, 0xF9, 0x11, 0x93, 0x01, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, -0x81, 0xF9, 0x11, 0x93, 0x02, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x81, 0xF9, 0x4F, 0x96, 0x1B, 0xD7, 0x30, 0xBC, 0x1A, 0xD5, 0x80, 0xBC, 0x0C, 0x99, 0x86, 0x00, 0x1C, 0xD9, 0x90, 0xBC, -0x46, 0x94, 0x0C, 0x69, 0x6F, 0x43, 0x01, 0x97, 0xD4, 0xD4, 0x0B, 0x07, 0xFF, 0xFF, 0x40, 0x46, 0x02, 0x3E, 0x0F, 0x9F, 0x34, 0xF9, 0x42, 0x96, 0x1B, 0xD7, 0x61, 0xBC, 0x40, 0x92, 0x19, 0xD3, -0x60, 0xBC, 0x0A, 0x65, 0xBF, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC4, 0xD2, 0x0A, 0x95, 0xF2, 0x00, 0x1A, 0xD5, 0x31, 0xBC, 0x52, 0x98, 0x1C, 0xD9, 0x82, 0xBC, 0x09, 0x93, -0x82, 0x00, 0x19, 0xD3, 0x92, 0xBC, 0x40, 0x94, 0x1A, 0xD5, 0x42, 0xBC, 0x0B, 0xA3, 0x20, 0x00, 0x19, 0xD3, 0x43, 0xBC, 0x0B, 0x97, 0xFE, 0x00, 0x1B, 0xD7, 0x32, 0xBC, 0x53, 0x98, 0x1C, 0xD9, -0x8E, 0xBC, 0x09, 0x93, 0x83, 0x00, 0x19, 0xD3, 0x9E, 0xBC, 0x0A, 0x95, 0x40, 0x00, 0x1A, 0xD5, 0x44, 0xBC, 0x60, 0x96, 0x1B, 0xD7, 0x45, 0xBC, 0x0C, 0x99, 0xFF, 0x00, 0x1C, 0xD9, 0x33, 0xBC, -0x44, 0x96, 0x1B, 0xD7, 0x8F, 0xBC, 0x19, 0xD3, 0x9F, 0xBC, 0x40, 0x98, 0x1C, 0xD9, 0x67, 0xBC, 0x1A, 0xD5, 0x66, 0xBC, 0x0A, 0x65, 0xB9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x9F, 0xFF, -0xC3, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xEE, 0xF9, 0x11, 0x93, 0x01, 0xEC, 0x40, 0x42, 0x02, 0x5E, -0x0F, 0x9F, 0xEE, 0xF9, 0x11, 0x93, 0x02, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xEE, 0xF9, 0x4F, 0x96, 0x1B, 0xD7, 0x30, 0xBC, 0x1A, 0xD5, 0x80, 0xBC, 0x0A, 0x95, 0x86, 0x00, 0x1A, 0xD5, -0x90, 0xBC, 0x46, 0x94, 0x0B, 0x67, 0x6F, 0x43, 0xD3, 0xD4, 0x09, 0x03, 0xFF, 0xFF, 0x40, 0x42, 0x02, 0x3E, 0x0F, 0x9F, 0xA4, 0xF9, 0x40, 0x96, 0x1B, 0xD7, 0x61, 0xBC, 0x0C, 0x99, 0x40, 0x00, -0x1C, 0xD9, 0x60, 0xBC, 0x0A, 0x65, 0xBF, 0x43, 0xC2, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC2, 0xD2, 0x0A, 0x95, 0xF2, 0x00, 0x1A, 0xD5, 0x31, 0xBC, 0x52, 0x96, 0x1B, 0xD7, 0x82, 0xBC, 0x09, 0x93, -0x82, 0x00, 0x19, 0xD3, 0x92, 0xBC, 0x1C, 0xD9, 0x42, 0xBC, 0x40, 0x94, 0x0A, 0xA7, 0x20, 0x00, 0x1B, 0xD7, 0x43, 0xBC, 0x0A, 0x95, 0xFE, 0x00, 0x1A, 0xD5, 0x32, 0xBC, 0x53, 0x94, 0x1A, 0xD5, -0x8E, 0xBC, 0x0A, 0x95, 0x83, 0x00, 0x1A, 0xD5, 0x9E, 0xBC, 0x1C, 0xD9, 0x44, 0xBC, 0x1B, 0xD7, 0x45, 0xBC, 0x0B, 0x97, 0xFF, 0x00, 0x1B, 0xD7, 0x33, 0xBC, 0x44, 0x94, 0x1A, 0xD5, 0x8F, 0xBC, -0x19, 0xD3, 0x9F, 0xBC, 0x40, 0x96, 0x1B, 0xD7, 0x67, 0xBC, 0x1C, 0xD9, 0x66, 0xBC, 0x0A, 0x65, 0xB9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC3, 0xD2, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x95, 0x09, 0xEC, 0x02, 0x97, 0xC3, 0x92, 0x71, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x37, 0xFA, 0x02, 0x8E, 0x0F, 0x9F, 0x04, 0xFA, 0x70, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0x0A, 0xFA, 0x0F, 0x9F, 0x5F, 0xFA, 0x72, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x29, 0xFA, 0x0F, 0x9F, 0x5F, 0xFA, 0x0A, 0x03, 0x03, 0x00, 0xC1, 0x96, 0x1B, 0xD7, 0x0E, 0xEC, 0x0A, 0x03, -0x01, 0x00, 0xC1, 0x94, 0x1A, 0xD5, 0x0D, 0xEC, 0x0A, 0x45, 0xFF, 0xED, 0x02, 0x8E, 0x0F, 0x9F, 0x24, 0xFA, 0x0B, 0x03, 0x01, 0x00, 0x61, 0x93, 0x11, 0x03, 0x4D, 0xEC, 0x19, 0xD3, 0x4D, 0xEC, -0x0A, 0x03, 0x00, 0xDE, 0x19, 0xD3, 0x0D, 0xEC, 0x42, 0x98, 0x1C, 0xD9, 0x11, 0xEC, 0x0F, 0x9F, 0x5F, 0xFA, 0x0A, 0x03, 0x03, 0x00, 0xC1, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x0A, 0x03, 0x01, 0x00, -0xC1, 0x92, 0x19, 0xD3, 0x0D, 0xEC, 0x40, 0xF0, 0xF8, 0xFD, 0x0F, 0x9F, 0x5F, 0xFA, 0x41, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x94, 0x1A, 0xD5, 0xF0, 0xBD, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, -0x19, 0xD3, 0x10, 0xEC, 0x12, 0x95, 0x4D, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x5D, 0xFA, 0x02, 0x43, 0x02, 0x0E, 0x0F, 0x9F, 0x58, 0xFA, 0x0B, 0x97, 0x00, 0x10, 0x0A, 0x65, 0x00, 0x12, -0xD2, 0x98, 0xD3, 0xD8, 0x41, 0x02, 0x11, 0x43, 0x4D, 0xEC, 0x02, 0x1E, 0x0F, 0x9F, 0x50, 0xFA, 0x40, 0x92, 0x19, 0xD3, 0x4D, 0xEC, 0x0F, 0x9F, 0x5F, 0xFA, 0x0F, 0x9F, 0x00, 0xEE, 0x88, 0x98, -0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0x09, 0x93, 0xFF, 0x00, 0x19, 0xD3, 0x12, 0xBC, -0x19, 0xD3, 0x13, 0xBC, 0x19, 0xD3, 0x14, 0xBC, 0x19, 0xD3, 0x16, 0xBC, 0x19, 0xD3, 0x17, 0xBC, 0x0C, 0x69, 0x00, 0x44, 0x04, 0x93, 0xC1, 0x94, 0x0A, 0xB5, 0xEF, 0xFF, 0xC5, 0xD4, 0x41, 0x94, -0x1A, 0xD5, 0x02, 0xBC, 0x0B, 0x67, 0xEF, 0x43, 0x03, 0x95, 0xC2, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC3, 0xD2, 0xC5, 0x96, 0x0B, 0xA5, 0x20, 0x00, 0xC4, 0xD4, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x19, 0xD3, 0x11, 0xEC, 0x19, 0xD3, 0x00, 0xEC, 0x19, 0xD3, 0x01, 0xEC, 0x19, 0xD3, 0x02, 0xEC, 0x19, 0xD3, -0x0F, 0xEC, 0x19, 0xD3, 0x10, 0xEC, 0x19, 0xD3, 0x1C, 0xEC, 0x40, 0xF0, 0x61, 0xFA, 0x40, 0x92, 0x19, 0xD3, 0x08, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x12, 0xEC, 0x41, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x13, 0xFB, 0x41, 0x94, 0x1A, 0xD5, 0x12, 0xEC, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, -0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xEA, 0xFA, 0x09, 0x93, 0x00, 0x02, 0x19, 0xD3, 0x03, 0xEC, 0x09, 0x93, 0x31, 0xF8, 0x19, 0xD3, 0x13, 0xEC, 0x02, 0x97, 0x01, 0x99, 0x03, 0x95, -0x09, 0x93, 0x16, 0xEC, 0x01, 0x05, 0x03, 0x93, 0x04, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xCF, 0xFA, 0x11, 0x93, 0x39, 0xF8, 0x79, 0x93, 0x79, 0x93, -0x19, 0xD3, 0x1A, 0xEC, 0x09, 0x93, 0x1F, 0xEC, 0x19, 0xD3, 0x14, 0xEC, 0x09, 0x93, 0x36, 0xEC, 0x0F, 0x9F, 0x0D, 0xFB, 0x09, 0x93, 0x40, 0x00, 0x19, 0xD3, 0x03, 0xEC, 0x09, 0x93, 0x31, 0xF8, -0x19, 0xD3, 0x13, 0xEC, 0x02, 0x97, 0x01, 0x99, 0x03, 0x95, 0x09, 0x93, 0x16, 0xEC, 0x01, 0x05, 0x03, 0x93, 0x04, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, -0xF4, 0xFA, 0x11, 0x93, 0x39, 0xF8, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x1A, 0xEC, 0x09, 0x93, 0x36, 0xEC, 0x19, 0xD3, 0x14, 0xEC, 0x09, 0x93, 0x1F, 0xEC, 0x19, 0xD3, 0x15, 0xEC, 0x09, 0x93, -0x0A, 0x06, 0x19, 0xD3, 0x16, 0xEC, 0x13, 0x97, 0x0C, 0xBC, 0x0B, 0xB3, 0x80, 0x00, 0x0A, 0x95, 0x06, 0xEC, 0xD2, 0xD2, 0x0B, 0xB3, 0x60, 0x00, 0xC2, 0xD2, 0x09, 0x93, 0x06, 0xEC, 0x09, 0x05, -0x02, 0x00, 0x0B, 0xB3, 0x03, 0x00, 0xC2, 0xD2, 0xC5, 0x92, 0x11, 0x93, 0x0E, 0xBC, 0x19, 0xD3, 0x09, 0xEC, 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, -0x0A, 0xEC, 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, 0x0B, 0xEC, 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, -0x0C, 0xEC, 0x11, 0x93, 0x07, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x56, 0xFB, 0x09, 0x43, 0x40, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0x5C, 0xFB, 0x11, 0x93, 0x1B, 0xEC, 0x41, 0x22, 0x0A, 0x95, -0x54, 0xFB, 0x88, 0xD4, 0x88, 0xDC, 0x91, 0x9A, 0x0F, 0x9F, 0x5F, 0xFB, 0x40, 0xF0, 0xBE, 0xFB, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x5F, 0xFB, 0x42, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x41, 0x00, -0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xF8, 0xFD, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, -0x11, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x77, 0xFB, 0x40, 0xF0, 0x43, 0xFE, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, -0x19, 0xD3, 0x11, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0x0B, 0xBC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x44, 0x92, 0x19, 0xD3, 0x0B, 0xBC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, -0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x12, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x09, 0x93, 0x70, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xF7, 0xFF, 0xC2, 0xD2, 0x09, 0x93, 0x6D, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x11, 0x93, 0x09, 0xEC, 0x4B, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x12, 0xFC, 0x09, 0x03, 0xFF, 0xF8, 0xC1, 0x9E, 0x40, 0xF0, 0x15, 0xFC, 0x0F, 0x9F, 0x13, 0xFC, 0x40, 0xF0, 0x2B, 0xFC, -0x0F, 0x9F, 0x13, 0xFC, 0x40, 0xF0, 0x3F, 0xFC, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0xB7, 0xFC, 0x0F, 0x9F, 0x13, 0xFC, -0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0xCB, 0xFC, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, -0x40, 0xF0, 0x47, 0xFD, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0x56, 0xFD, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, -0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0x97, 0xFD, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0xBD, 0xFD, -0x0F, 0x9F, 0x13, 0xFC, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x08, 0xEC, 0x4F, 0xB2, 0x09, 0x03, 0x1C, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, -0x40, 0x92, 0x19, 0xD3, 0x0E, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, -0x41, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x3C, 0xFC, 0x40, 0x92, 0x19, 0xD3, 0x1E, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0x3D, 0xFC, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, -0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x0A, 0xEC, 0x01, 0x95, 0xC2, 0x96, 0x41, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0x58, 0xFC, 0x02, 0x1E, 0x0F, 0x9F, 0x53, 0xFC, 0x42, 0x46, 0x02, 0x4E, 0x0F, 0x9F, -0x62, 0xFC, 0x0F, 0x9F, 0xA9, 0xFC, 0x41, 0x96, 0x1B, 0xD7, 0x10, 0xEC, 0x0F, 0x9F, 0xAC, 0xFC, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x1B, 0xD7, 0x10, 0xEC, -0x0F, 0x9F, 0xAC, 0xFC, 0x41, 0x02, 0xC1, 0x92, 0x79, 0x93, 0x79, 0x93, 0x44, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x81, 0xFC, 0x02, 0x9E, 0x0F, 0x9F, 0x73, 0xFC, 0x45, 0x42, 0x02, 0x4E, 0x0F, 0x9F, -0xAC, 0xFC, 0x0F, 0x9F, 0xA9, 0xFC, 0x41, 0x42, 0x02, 0x1E, 0x0F, 0x9F, 0xA9, 0xFC, 0x09, 0x03, 0x4D, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x08, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, -0xAC, 0xFC, 0x0A, 0x65, 0xF8, 0x43, 0x50, 0x98, 0x02, 0x97, 0xC3, 0xD8, 0x09, 0x63, 0xF5, 0x43, 0x41, 0x98, 0x01, 0x97, 0xC3, 0xD8, 0x40, 0x94, 0x02, 0x93, 0x0C, 0x99, 0x51, 0xEC, 0x04, 0x03, -0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0x0C, 0xBC, 0xC1, 0x92, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x0E, 0xBC, 0x41, 0x04, 0x5A, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0x8C, 0xFC, 0x0C, 0x99, 0x7E, 0x00, -0x1C, 0xD9, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x19, 0xD3, 0x0B, 0xBC, 0x0F, 0x9F, 0xAC, 0xFC, 0x40, 0x92, 0x0F, 0x9F, 0xB5, 0xFC, 0x11, 0x93, 0x10, 0xEC, 0x41, 0x42, 0x02, 0x5E, -0x0F, 0x9F, 0xB4, 0xFC, 0x19, 0xD3, 0x1E, 0xEC, 0x41, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, 0x09, 0x43, 0xFF, 0x00, 0x02, 0x8E, 0x0F, 0x9F, -0xC8, 0xFC, 0x19, 0xD3, 0x01, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0xC9, 0xFC, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x14, 0xEC, -0x0A, 0x95, 0x09, 0x02, 0xC1, 0xD4, 0x11, 0x93, 0x15, 0xEC, 0x0B, 0x97, 0x09, 0x07, 0xC1, 0xD6, 0x0A, 0x95, 0x0A, 0xEC, 0x02, 0x97, 0xC3, 0x92, 0x79, 0x93, 0x79, 0x93, 0x09, 0x03, 0xFF, 0xFF, -0x46, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x35, 0xFD, 0x09, 0x03, 0x0B, 0xF9, 0xC1, 0x9E, 0x11, 0x93, 0x13, 0xEC, 0x0F, 0x9F, 0x22, 0xFD, 0xC2, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x40, 0x42, 0x02, 0x5E, -0x0F, 0x9F, 0x35, 0xFD, 0x11, 0x93, 0x14, 0xEC, 0x0F, 0x9F, 0x2D, 0xFD, 0xC2, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x50, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xFD, 0x02, 0x8E, 0x0F, 0x9F, 0x06, 0xFD, -0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x0C, 0xFD, 0x0F, 0x9F, 0x35, 0xFD, 0x60, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x18, 0xFD, 0x0F, 0x9F, 0x35, 0xFD, 0x09, 0x93, 0x3A, 0xF8, 0x19, 0xD3, 0x0D, 0xEC, -0x0F, 0x9F, 0x1C, 0xFD, 0x0A, 0x95, 0x6F, 0xF8, 0x1A, 0xD5, 0x0D, 0xEC, 0x0F, 0x9F, 0x1C, 0xFD, 0x0B, 0x97, 0x7A, 0xF8, 0x1B, 0xD7, 0x0D, 0xEC, 0x11, 0x93, 0x0D, 0xEC, 0x0F, 0x9F, 0x24, 0xFD, -0x09, 0x93, 0x16, 0xEC, 0x19, 0xD3, 0x0D, 0xEC, 0xC1, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x19, 0xD3, 0x0E, 0xEC, 0x0F, 0x9F, 0x38, 0xFD, 0x11, 0x93, 0x15, 0xEC, 0x19, 0xD3, 0x0D, 0xEC, 0x41, 0x02, -0xC1, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x0F, 0x9F, 0x38, 0xFD, 0x40, 0x92, 0x0F, 0x9F, 0x45, 0xFD, 0x11, 0x93, 0x0E, 0xEC, 0x12, 0x95, 0x0C, 0xEC, 0x02, 0x43, 0x02, 0x9E, 0x0F, 0x9F, 0x42, 0xFD, -0x1A, 0xD5, 0x0E, 0xEC, 0x40, 0xF0, 0xF8, 0xFD, 0x41, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x00, 0xEC, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, -0xF0, 0xBD, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, 0x09, 0xB5, 0xFF, 0x00, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, -0x6C, 0xFD, 0x1A, 0xD5, 0x00, 0xEC, 0x0A, 0x65, 0xFF, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x7F, 0xFF, 0xC2, 0xD2, 0x0F, 0x9F, 0x92, 0xFD, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, -0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x81, 0xFD, 0x41, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0x7B, 0xFD, 0x40, 0x92, 0x0F, 0x9F, 0x95, 0xFD, 0x1A, 0xD5, 0x00, 0xEC, 0x40, 0xF0, 0x12, 0xF9, 0x0F, 0x9F, -0x89, 0xFD, 0x41, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x95, 0xFD, 0x1A, 0xD5, 0x00, 0xEC, 0x40, 0xF0, 0x83, 0xF9, 0x0A, 0x65, 0xFF, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, -0x40, 0xF0, 0x90, 0xFE, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x01, 0xBC, 0x09, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0xBB, 0xFD, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xFD, 0x11, 0x93, 0x0B, 0xEC, 0x41, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0xB1, 0xFD, 0x40, 0x92, 0x0F, 0x9F, -0xBB, 0xFD, 0x11, 0x93, 0x02, 0xEC, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x1A, 0xD5, 0x10, 0xEC, 0x02, 0x93, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, -0x11, 0x93, 0x01, 0xBC, 0x09, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF5, 0xFD, 0x13, 0x97, 0x0B, 0xEC, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0xF5, 0xFD, 0x11, 0x93, 0x0A, 0xEC, -0x09, 0xB5, 0xFF, 0x00, 0x11, 0x93, 0x14, 0xEC, 0x46, 0x02, 0xC1, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x01, 0x45, 0x02, 0x5E, 0x0F, 0x9F, 0xF5, 0xFD, 0x1B, 0xD7, 0x01, 0xEC, 0x1A, 0xD5, 0x02, 0xEC, -0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xEC, 0xFD, 0x40, 0xF0, 0x12, 0xF9, 0x0F, 0x9F, 0xEE, 0xFD, 0x40, 0xF0, 0x83, 0xF9, 0x40, 0xF0, 0x90, 0xFE, -0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0xF6, 0xFD, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x0E, 0xEC, 0x09, 0x93, 0x40, 0x00, -0x7F, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x05, 0xFE, 0x02, 0x93, 0x1A, 0x23, 0x0E, 0xEC, 0x40, 0x98, 0x61, 0x95, 0x02, 0xD4, 0x09, 0xB7, 0x01, 0x00, 0xC5, 0xD6, 0x43, 0xB2, 0x01, 0xD2, 0x0F, 0x9F, -0x1F, 0xFE, 0x12, 0x95, 0x0D, 0xEC, 0x02, 0x93, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0xD2, 0x92, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x0E, 0xBC, 0x1A, 0xD5, 0x0D, 0xEC, 0x41, 0x08, 0x02, 0x48, -0x02, 0x1E, 0x0F, 0x9F, 0x11, 0xFE, 0xC5, 0x94, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x2D, 0xFE, 0x11, 0x93, 0x0D, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0x01, 0x96, 0x40, 0x46, 0x02, 0x4E, -0x0F, 0x9F, 0x35, 0xFE, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x11, 0x93, 0x0E, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x40, 0xFE, 0x19, 0xD3, 0x11, 0xEC, 0x41, 0x94, 0x1A, 0xD5, 0x10, 0xEC, -0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0E, 0xEC, 0x0A, 0x95, 0x40, 0x00, 0x7F, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x50, 0xFE, 0x01, 0x95, -0x19, 0x25, 0x0E, 0xEC, 0x40, 0x98, 0x0A, 0x03, 0x01, 0x00, 0x01, 0xD2, 0x43, 0xB4, 0xC5, 0xD4, 0x0F, 0x9F, 0x74, 0xFE, 0x11, 0x93, 0x0D, 0xEC, 0x12, 0x95, 0x0C, 0xBC, 0xC1, 0xD4, 0x12, 0x95, -0x0D, 0xEC, 0x11, 0x93, 0x0E, 0xBC, 0x59, 0x93, 0x59, 0x93, 0x02, 0x97, 0xC3, 0x02, 0xC2, 0xD2, 0x11, 0x93, 0x05, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x73, 0xFE, 0x11, 0x93, 0x0D, 0xEC, -0x41, 0x02, 0x19, 0xD3, 0x0D, 0xEC, 0x41, 0x08, 0x01, 0x94, 0x62, 0x93, 0x01, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0x5A, 0xFE, 0xC5, 0x96, 0x40, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0x82, 0xFE, 0x41, 0x92, -0x19, 0xD3, 0xF0, 0xBD, 0x11, 0x93, 0x0E, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x8D, 0xFE, 0x19, 0xD3, 0x11, 0xEC, 0x41, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x41, 0x96, 0x0A, 0x65, 0xBF, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xEF, 0xFF, 0xC4, 0xD2, 0x42, 0x04, 0x41, 0x06, 0x4A, 0x46, 0x02, 0x9E, 0x0F, 0x9F, -0x96, 0xFE, 0x41, 0x96, 0x0A, 0x65, 0x9F, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xEF, 0xFF, 0xC4, 0xD2, 0x42, 0x04, 0x41, 0x06, 0x4A, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xA4, 0xFE, 0x88, 0x98, -0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x08, 0x14, 0x19, 0xD3, 0x01, 0x84, 0x0A, 0x65, 0xFE, 0x7B, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xE0, 0xC2, 0xD2, 0x0A, 0x65, -0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x01, 0x00, 0x1F, 0xEC, 0x00, 0x00, 0xB2, 0xF8, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x00, 0x00, 0xF0, 0xF9, -0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x02, 0x19, 0xD3, 0x44, 0x96, 0x09, 0x63, 0x80, 0x69, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0xB5, 0x7F, 0xFF, 0xC1, 0xD4, 0x55, 0x92, -0x19, 0xD3, 0x2C, 0x90, 0x0B, 0x97, 0xFE, 0x00, 0x1B, 0xD7, 0x40, 0x85, 0x40, 0xF0, 0x99, 0xFF, 0xC5, 0x92, 0x40, 0x92, 0x00, 0xEE, 0x41, 0x02, 0x70, 0x42, 0x44, 0x8E, 0x11, 0x93, 0x04, 0xEC, -0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x09, 0xFF, 0x40, 0x96, 0x1B, 0xD7, 0x04, 0xEC, 0x0F, 0x9F, 0x00, 0xEE, 0x09, 0x93, 0x4F, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x40, 0xF0, 0x90, 0xFA, 0x0B, 0x97, -0xDE, 0xFE, 0x1B, 0xD7, 0x1B, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0x05, 0xEC, 0x11, 0x93, 0x20, 0xBC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x16, 0xFF, 0xC8, 0xD2, 0x40, 0xF0, 0x25, 0xFF, 0x41, 0x00, -0x0F, 0x9F, 0x16, 0xFF, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x73, 0xFF, -0x12, 0x95, 0x21, 0xBC, 0x01, 0xD4, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x3B, 0xFF, 0x40, 0xF0, 0x62, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0x44, 0xFF, 0x40, 0xF0, 0x6C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x4F, 0xFF, 0x40, 0xF0, 0xB0, 0xFA, 0x0F, 0x9F, 0x58, 0xFF, 0x01, 0x94, -0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x58, 0xFF, 0x40, 0xF0, 0x7C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x61, 0xFF, 0x40, 0xF0, -0x87, 0xFB, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x6A, 0xFF, 0x44, 0x92, 0x0F, 0x9F, 0x6E, 0xFF, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x70, 0xFF, 0x19, 0xD3, 0x0B, 0xBC, -0x40, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x96, 0xFF, 0x11, 0x93, 0x28, 0xBC, 0x01, 0xD2, 0x42, 0xB2, 0x40, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0x84, 0xFF, 0x40, 0xF0, 0x8F, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x8D, 0xFF, 0x40, 0xF0, 0x9E, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, -0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x96, 0xFF, 0x40, 0xF0, 0xAE, 0xFB, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xB1, 0xFE, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; + 0x00, 0xF0, 0x66, 0xFE, 0x67, 0xFE, 0x68, 0xFE, 0x69, 0xFE, 0x6A, 0xFE, 0x6B, 0xFE, 0x6C, 0xFE, 0x6D, 0xFE, 0x09, 0x63, 0xD6, 0x79, 0x57, 0x94, 0xD1, 0xD4, 0x0A, 0x95, 0x17, 0xF8, 0xD1, 0xD4, + 0x0A, 0x95, 0xD2, 0x07, 0x00, 0xEE, 0xC1, 0xD4, 0x00, 0xEE, 0x0F, 0x9F, 0x95, 0xF8, 0x30, 0x43, 0x10, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x66, 0x66, 0x66, 0x00, 0x00, 0x6A, 0x6A, + 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xFF, 0x07, + 0x00, 0x00, 0x12, 0x01, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0x40, 0xCE, 0x0A, 0x11, 0x12, 0x30, 0x43, 0x10, 0x20, 0x00, 0x01, 0x04, 0x03, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x52, + 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0x4A, 0x4A, + 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0x42, 0x42, + 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0x0C, 0x03, + 0x5A, 0x00, 0x79, 0x00, 0x44, 0x00, 0x41, 0x00, 0x53, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0x03, 0x55, 0x00, 0x53, 0x00, 0x42, 0x00, 0x32, 0x00, 0x2E, 0x00, + 0x30, 0x00, 0x20, 0x00, 0x57, 0x00, 0x4C, 0x00, 0x41, 0x00, 0x4E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0xC7, 0xFE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, + 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, 0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0xE0, 0xFE, + 0x41, 0xEE, 0x98, 0x9A, 0x09, 0x02, 0x2E, 0x00, 0x01, 0x01, 0x00, 0x80, 0xFA, 0x09, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x01, 0x02, 0x00, 0x02, 0x00, 0x07, 0x05, 0x82, + 0x02, 0x00, 0x02, 0x00, 0x07, 0x05, 0x83, 0x03, 0x40, 0x00, 0x01, 0x07, 0x05, 0x04, 0x03, 0x40, 0x00, 0x01, 0x09, 0x02, 0x2E, 0x00, 0x01, 0x01, 0x00, 0x80, 0xFA, 0x09, 0x04, 0x00, 0x00, 0x04, + 0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x01, 0x02, 0x40, 0x00, 0x00, 0x07, 0x05, 0x82, 0x02, 0x40, 0x00, 0x00, 0x07, 0x05, 0x83, 0x03, 0x40, 0x00, 0x01, 0x07, 0x05, 0x04, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, + 0xEE, 0xEE, 0xEE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFC, 0x7E, 0xBF, 0xDF, 0xFB, 0xFD, 0xFB, 0xFD, 0xCA, 0xFB, + 0xCE, 0xFB, 0x12, 0xFC, 0xD2, 0xFB, 0x12, 0xFC, 0xD6, 0xFB, 0xE0, 0xFB, 0x12, 0xFC, 0xEA, 0xFB, 0xF4, 0xFB, 0xFE, 0xFB, 0x08, 0xFC, 0xE7, 0xFC, 0xEB, 0xFC, 0xF6, 0xFC, 0x35, 0xFD, 0x35, 0xFD, + 0x20, 0xFD, 0x2B, 0xFD, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0x81, 0xF9, 0x11, 0x93, 0x01, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, + 0x81, 0xF9, 0x11, 0x93, 0x02, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x81, 0xF9, 0x4F, 0x96, 0x1B, 0xD7, 0x30, 0xBC, 0x1A, 0xD5, 0x80, 0xBC, 0x0C, 0x99, 0x86, 0x00, 0x1C, 0xD9, 0x90, 0xBC, + 0x46, 0x94, 0x0C, 0x69, 0x6F, 0x43, 0x01, 0x97, 0xD4, 0xD4, 0x0B, 0x07, 0xFF, 0xFF, 0x40, 0x46, 0x02, 0x3E, 0x0F, 0x9F, 0x34, 0xF9, 0x42, 0x96, 0x1B, 0xD7, 0x61, 0xBC, 0x40, 0x92, 0x19, 0xD3, + 0x60, 0xBC, 0x0A, 0x65, 0xBF, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC4, 0xD2, 0x0A, 0x95, 0xF2, 0x00, 0x1A, 0xD5, 0x31, 0xBC, 0x52, 0x98, 0x1C, 0xD9, 0x82, 0xBC, 0x09, 0x93, + 0x82, 0x00, 0x19, 0xD3, 0x92, 0xBC, 0x40, 0x94, 0x1A, 0xD5, 0x42, 0xBC, 0x0B, 0xA3, 0x20, 0x00, 0x19, 0xD3, 0x43, 0xBC, 0x0B, 0x97, 0xFE, 0x00, 0x1B, 0xD7, 0x32, 0xBC, 0x53, 0x98, 0x1C, 0xD9, + 0x8E, 0xBC, 0x09, 0x93, 0x83, 0x00, 0x19, 0xD3, 0x9E, 0xBC, 0x0A, 0x95, 0x40, 0x00, 0x1A, 0xD5, 0x44, 0xBC, 0x60, 0x96, 0x1B, 0xD7, 0x45, 0xBC, 0x0C, 0x99, 0xFF, 0x00, 0x1C, 0xD9, 0x33, 0xBC, + 0x44, 0x96, 0x1B, 0xD7, 0x8F, 0xBC, 0x19, 0xD3, 0x9F, 0xBC, 0x40, 0x98, 0x1C, 0xD9, 0x67, 0xBC, 0x1A, 0xD5, 0x66, 0xBC, 0x0A, 0x65, 0xB9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x9F, 0xFF, + 0xC3, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xEE, 0xF9, 0x11, 0x93, 0x01, 0xEC, 0x40, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0xEE, 0xF9, 0x11, 0x93, 0x02, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xEE, 0xF9, 0x4F, 0x96, 0x1B, 0xD7, 0x30, 0xBC, 0x1A, 0xD5, 0x80, 0xBC, 0x0A, 0x95, 0x86, 0x00, 0x1A, 0xD5, + 0x90, 0xBC, 0x46, 0x94, 0x0B, 0x67, 0x6F, 0x43, 0xD3, 0xD4, 0x09, 0x03, 0xFF, 0xFF, 0x40, 0x42, 0x02, 0x3E, 0x0F, 0x9F, 0xA4, 0xF9, 0x40, 0x96, 0x1B, 0xD7, 0x61, 0xBC, 0x0C, 0x99, 0x40, 0x00, + 0x1C, 0xD9, 0x60, 0xBC, 0x0A, 0x65, 0xBF, 0x43, 0xC2, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC2, 0xD2, 0x0A, 0x95, 0xF2, 0x00, 0x1A, 0xD5, 0x31, 0xBC, 0x52, 0x96, 0x1B, 0xD7, 0x82, 0xBC, 0x09, 0x93, + 0x82, 0x00, 0x19, 0xD3, 0x92, 0xBC, 0x1C, 0xD9, 0x42, 0xBC, 0x40, 0x94, 0x0A, 0xA7, 0x20, 0x00, 0x1B, 0xD7, 0x43, 0xBC, 0x0A, 0x95, 0xFE, 0x00, 0x1A, 0xD5, 0x32, 0xBC, 0x53, 0x94, 0x1A, 0xD5, + 0x8E, 0xBC, 0x0A, 0x95, 0x83, 0x00, 0x1A, 0xD5, 0x9E, 0xBC, 0x1C, 0xD9, 0x44, 0xBC, 0x1B, 0xD7, 0x45, 0xBC, 0x0B, 0x97, 0xFF, 0x00, 0x1B, 0xD7, 0x33, 0xBC, 0x44, 0x94, 0x1A, 0xD5, 0x8F, 0xBC, + 0x19, 0xD3, 0x9F, 0xBC, 0x40, 0x96, 0x1B, 0xD7, 0x67, 0xBC, 0x1C, 0xD9, 0x66, 0xBC, 0x0A, 0x65, 0xB9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC3, 0xD2, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x95, 0x09, 0xEC, 0x02, 0x97, 0xC3, 0x92, 0x71, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x37, 0xFA, 0x02, 0x8E, 0x0F, 0x9F, 0x04, 0xFA, 0x70, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x0A, 0xFA, 0x0F, 0x9F, 0x5F, 0xFA, 0x72, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x29, 0xFA, 0x0F, 0x9F, 0x5F, 0xFA, 0x0A, 0x03, 0x03, 0x00, 0xC1, 0x96, 0x1B, 0xD7, 0x0E, 0xEC, 0x0A, 0x03, + 0x01, 0x00, 0xC1, 0x94, 0x1A, 0xD5, 0x0D, 0xEC, 0x0A, 0x45, 0xFF, 0xED, 0x02, 0x8E, 0x0F, 0x9F, 0x24, 0xFA, 0x0B, 0x03, 0x01, 0x00, 0x61, 0x93, 0x11, 0x03, 0x4D, 0xEC, 0x19, 0xD3, 0x4D, 0xEC, + 0x0A, 0x03, 0x00, 0xDE, 0x19, 0xD3, 0x0D, 0xEC, 0x42, 0x98, 0x1C, 0xD9, 0x11, 0xEC, 0x0F, 0x9F, 0x5F, 0xFA, 0x0A, 0x03, 0x03, 0x00, 0xC1, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x0A, 0x03, 0x01, 0x00, + 0xC1, 0x92, 0x19, 0xD3, 0x0D, 0xEC, 0x40, 0xF0, 0xF8, 0xFD, 0x0F, 0x9F, 0x5F, 0xFA, 0x41, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x94, 0x1A, 0xD5, 0xF0, 0xBD, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, + 0x19, 0xD3, 0x10, 0xEC, 0x12, 0x95, 0x4D, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x5D, 0xFA, 0x02, 0x43, 0x02, 0x0E, 0x0F, 0x9F, 0x58, 0xFA, 0x0B, 0x97, 0x00, 0x10, 0x0A, 0x65, 0x00, 0x12, + 0xD2, 0x98, 0xD3, 0xD8, 0x41, 0x02, 0x11, 0x43, 0x4D, 0xEC, 0x02, 0x1E, 0x0F, 0x9F, 0x50, 0xFA, 0x40, 0x92, 0x19, 0xD3, 0x4D, 0xEC, 0x0F, 0x9F, 0x5F, 0xFA, 0x0F, 0x9F, 0x00, 0xEE, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0x09, 0x93, 0xFF, 0x00, 0x19, 0xD3, 0x12, 0xBC, + 0x19, 0xD3, 0x13, 0xBC, 0x19, 0xD3, 0x14, 0xBC, 0x19, 0xD3, 0x16, 0xBC, 0x19, 0xD3, 0x17, 0xBC, 0x0C, 0x69, 0x00, 0x44, 0x04, 0x93, 0xC1, 0x94, 0x0A, 0xB5, 0xEF, 0xFF, 0xC5, 0xD4, 0x41, 0x94, + 0x1A, 0xD5, 0x02, 0xBC, 0x0B, 0x67, 0xEF, 0x43, 0x03, 0x95, 0xC2, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC3, 0xD2, 0xC5, 0x96, 0x0B, 0xA5, 0x20, 0x00, 0xC4, 0xD4, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x19, 0xD3, 0x11, 0xEC, 0x19, 0xD3, 0x00, 0xEC, 0x19, 0xD3, 0x01, 0xEC, 0x19, 0xD3, 0x02, 0xEC, 0x19, 0xD3, + 0x0F, 0xEC, 0x19, 0xD3, 0x10, 0xEC, 0x19, 0xD3, 0x1C, 0xEC, 0x40, 0xF0, 0x61, 0xFA, 0x40, 0x92, 0x19, 0xD3, 0x08, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x12, 0xEC, 0x41, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x13, 0xFB, 0x41, 0x94, 0x1A, 0xD5, 0x12, 0xEC, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, + 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xEA, 0xFA, 0x09, 0x93, 0x00, 0x02, 0x19, 0xD3, 0x03, 0xEC, 0x09, 0x93, 0x31, 0xF8, 0x19, 0xD3, 0x13, 0xEC, 0x02, 0x97, 0x01, 0x99, 0x03, 0x95, + 0x09, 0x93, 0x16, 0xEC, 0x01, 0x05, 0x03, 0x93, 0x04, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xCF, 0xFA, 0x11, 0x93, 0x39, 0xF8, 0x79, 0x93, 0x79, 0x93, + 0x19, 0xD3, 0x1A, 0xEC, 0x09, 0x93, 0x1F, 0xEC, 0x19, 0xD3, 0x14, 0xEC, 0x09, 0x93, 0x36, 0xEC, 0x0F, 0x9F, 0x0D, 0xFB, 0x09, 0x93, 0x40, 0x00, 0x19, 0xD3, 0x03, 0xEC, 0x09, 0x93, 0x31, 0xF8, + 0x19, 0xD3, 0x13, 0xEC, 0x02, 0x97, 0x01, 0x99, 0x03, 0x95, 0x09, 0x93, 0x16, 0xEC, 0x01, 0x05, 0x03, 0x93, 0x04, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, + 0xF4, 0xFA, 0x11, 0x93, 0x39, 0xF8, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x1A, 0xEC, 0x09, 0x93, 0x36, 0xEC, 0x19, 0xD3, 0x14, 0xEC, 0x09, 0x93, 0x1F, 0xEC, 0x19, 0xD3, 0x15, 0xEC, 0x09, 0x93, + 0x0A, 0x06, 0x19, 0xD3, 0x16, 0xEC, 0x13, 0x97, 0x0C, 0xBC, 0x0B, 0xB3, 0x80, 0x00, 0x0A, 0x95, 0x06, 0xEC, 0xD2, 0xD2, 0x0B, 0xB3, 0x60, 0x00, 0xC2, 0xD2, 0x09, 0x93, 0x06, 0xEC, 0x09, 0x05, + 0x02, 0x00, 0x0B, 0xB3, 0x03, 0x00, 0xC2, 0xD2, 0xC5, 0x92, 0x11, 0x93, 0x0E, 0xBC, 0x19, 0xD3, 0x09, 0xEC, 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, + 0x0A, 0xEC, 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, 0x0B, 0xEC, 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, + 0x0C, 0xEC, 0x11, 0x93, 0x07, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x56, 0xFB, 0x09, 0x43, 0x40, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0x5C, 0xFB, 0x11, 0x93, 0x1B, 0xEC, 0x41, 0x22, 0x0A, 0x95, + 0x54, 0xFB, 0x88, 0xD4, 0x88, 0xDC, 0x91, 0x9A, 0x0F, 0x9F, 0x5F, 0xFB, 0x40, 0xF0, 0xBE, 0xFB, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x5F, 0xFB, 0x42, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x41, 0x00, + 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xF8, 0xFD, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, + 0x11, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x77, 0xFB, 0x40, 0xF0, 0x43, 0xFE, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, + 0x19, 0xD3, 0x11, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0x0B, 0xBC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x44, 0x92, 0x19, 0xD3, 0x0B, 0xBC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x12, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x09, 0x93, 0x70, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xF7, 0xFF, 0xC2, 0xD2, 0x09, 0x93, 0x6D, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x11, 0x93, 0x09, 0xEC, 0x4B, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x12, 0xFC, 0x09, 0x03, 0xFF, 0xF8, 0xC1, 0x9E, 0x40, 0xF0, 0x15, 0xFC, 0x0F, 0x9F, 0x13, 0xFC, 0x40, 0xF0, 0x2B, 0xFC, + 0x0F, 0x9F, 0x13, 0xFC, 0x40, 0xF0, 0x3F, 0xFC, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0xB7, 0xFC, 0x0F, 0x9F, 0x13, 0xFC, + 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0xCB, 0xFC, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, + 0x40, 0xF0, 0x47, 0xFD, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0x56, 0xFD, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, + 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0x97, 0xFD, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0xBD, 0xFD, + 0x0F, 0x9F, 0x13, 0xFC, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x08, 0xEC, 0x4F, 0xB2, 0x09, 0x03, 0x1C, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, + 0x40, 0x92, 0x19, 0xD3, 0x0E, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, + 0x41, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x3C, 0xFC, 0x40, 0x92, 0x19, 0xD3, 0x1E, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0x3D, 0xFC, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x0A, 0xEC, 0x01, 0x95, 0xC2, 0x96, 0x41, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0x58, 0xFC, 0x02, 0x1E, 0x0F, 0x9F, 0x53, 0xFC, 0x42, 0x46, 0x02, 0x4E, 0x0F, 0x9F, + 0x62, 0xFC, 0x0F, 0x9F, 0xA9, 0xFC, 0x41, 0x96, 0x1B, 0xD7, 0x10, 0xEC, 0x0F, 0x9F, 0xAC, 0xFC, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x1B, 0xD7, 0x10, 0xEC, + 0x0F, 0x9F, 0xAC, 0xFC, 0x41, 0x02, 0xC1, 0x92, 0x79, 0x93, 0x79, 0x93, 0x44, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x81, 0xFC, 0x02, 0x9E, 0x0F, 0x9F, 0x73, 0xFC, 0x45, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0xAC, 0xFC, 0x0F, 0x9F, 0xA9, 0xFC, 0x41, 0x42, 0x02, 0x1E, 0x0F, 0x9F, 0xA9, 0xFC, 0x09, 0x03, 0x4D, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x08, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, + 0xAC, 0xFC, 0x0A, 0x65, 0xF8, 0x43, 0x50, 0x98, 0x02, 0x97, 0xC3, 0xD8, 0x09, 0x63, 0xF5, 0x43, 0x41, 0x98, 0x01, 0x97, 0xC3, 0xD8, 0x40, 0x94, 0x02, 0x93, 0x0C, 0x99, 0x51, 0xEC, 0x04, 0x03, + 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0x0C, 0xBC, 0xC1, 0x92, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x0E, 0xBC, 0x41, 0x04, 0x5A, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0x8C, 0xFC, 0x0C, 0x99, 0x7E, 0x00, + 0x1C, 0xD9, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x19, 0xD3, 0x0B, 0xBC, 0x0F, 0x9F, 0xAC, 0xFC, 0x40, 0x92, 0x0F, 0x9F, 0xB5, 0xFC, 0x11, 0x93, 0x10, 0xEC, 0x41, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0xB4, 0xFC, 0x19, 0xD3, 0x1E, 0xEC, 0x41, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, 0x09, 0x43, 0xFF, 0x00, 0x02, 0x8E, 0x0F, 0x9F, + 0xC8, 0xFC, 0x19, 0xD3, 0x01, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0xC9, 0xFC, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x14, 0xEC, + 0x0A, 0x95, 0x09, 0x02, 0xC1, 0xD4, 0x11, 0x93, 0x15, 0xEC, 0x0B, 0x97, 0x09, 0x07, 0xC1, 0xD6, 0x0A, 0x95, 0x0A, 0xEC, 0x02, 0x97, 0xC3, 0x92, 0x79, 0x93, 0x79, 0x93, 0x09, 0x03, 0xFF, 0xFF, + 0x46, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x35, 0xFD, 0x09, 0x03, 0x0B, 0xF9, 0xC1, 0x9E, 0x11, 0x93, 0x13, 0xEC, 0x0F, 0x9F, 0x22, 0xFD, 0xC2, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x40, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0x35, 0xFD, 0x11, 0x93, 0x14, 0xEC, 0x0F, 0x9F, 0x2D, 0xFD, 0xC2, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x50, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xFD, 0x02, 0x8E, 0x0F, 0x9F, 0x06, 0xFD, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x0C, 0xFD, 0x0F, 0x9F, 0x35, 0xFD, 0x60, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x18, 0xFD, 0x0F, 0x9F, 0x35, 0xFD, 0x09, 0x93, 0x3A, 0xF8, 0x19, 0xD3, 0x0D, 0xEC, + 0x0F, 0x9F, 0x1C, 0xFD, 0x0A, 0x95, 0x6F, 0xF8, 0x1A, 0xD5, 0x0D, 0xEC, 0x0F, 0x9F, 0x1C, 0xFD, 0x0B, 0x97, 0x7A, 0xF8, 0x1B, 0xD7, 0x0D, 0xEC, 0x11, 0x93, 0x0D, 0xEC, 0x0F, 0x9F, 0x24, 0xFD, + 0x09, 0x93, 0x16, 0xEC, 0x19, 0xD3, 0x0D, 0xEC, 0xC1, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x19, 0xD3, 0x0E, 0xEC, 0x0F, 0x9F, 0x38, 0xFD, 0x11, 0x93, 0x15, 0xEC, 0x19, 0xD3, 0x0D, 0xEC, 0x41, 0x02, + 0xC1, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x0F, 0x9F, 0x38, 0xFD, 0x40, 0x92, 0x0F, 0x9F, 0x45, 0xFD, 0x11, 0x93, 0x0E, 0xEC, 0x12, 0x95, 0x0C, 0xEC, 0x02, 0x43, 0x02, 0x9E, 0x0F, 0x9F, 0x42, 0xFD, + 0x1A, 0xD5, 0x0E, 0xEC, 0x40, 0xF0, 0xF8, 0xFD, 0x41, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x00, 0xEC, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, + 0xF0, 0xBD, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, 0x09, 0xB5, 0xFF, 0x00, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, + 0x6C, 0xFD, 0x1A, 0xD5, 0x00, 0xEC, 0x0A, 0x65, 0xFF, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x7F, 0xFF, 0xC2, 0xD2, 0x0F, 0x9F, 0x92, 0xFD, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x81, 0xFD, 0x41, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0x7B, 0xFD, 0x40, 0x92, 0x0F, 0x9F, 0x95, 0xFD, 0x1A, 0xD5, 0x00, 0xEC, 0x40, 0xF0, 0x12, 0xF9, 0x0F, 0x9F, + 0x89, 0xFD, 0x41, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x95, 0xFD, 0x1A, 0xD5, 0x00, 0xEC, 0x40, 0xF0, 0x83, 0xF9, 0x0A, 0x65, 0xFF, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, + 0x40, 0xF0, 0x90, 0xFE, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x01, 0xBC, 0x09, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0xBB, 0xFD, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xFD, 0x11, 0x93, 0x0B, 0xEC, 0x41, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0xB1, 0xFD, 0x40, 0x92, 0x0F, 0x9F, + 0xBB, 0xFD, 0x11, 0x93, 0x02, 0xEC, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x1A, 0xD5, 0x10, 0xEC, 0x02, 0x93, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, + 0x11, 0x93, 0x01, 0xBC, 0x09, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF5, 0xFD, 0x13, 0x97, 0x0B, 0xEC, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0xF5, 0xFD, 0x11, 0x93, 0x0A, 0xEC, + 0x09, 0xB5, 0xFF, 0x00, 0x11, 0x93, 0x14, 0xEC, 0x46, 0x02, 0xC1, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x01, 0x45, 0x02, 0x5E, 0x0F, 0x9F, 0xF5, 0xFD, 0x1B, 0xD7, 0x01, 0xEC, 0x1A, 0xD5, 0x02, 0xEC, + 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xEC, 0xFD, 0x40, 0xF0, 0x12, 0xF9, 0x0F, 0x9F, 0xEE, 0xFD, 0x40, 0xF0, 0x83, 0xF9, 0x40, 0xF0, 0x90, 0xFE, + 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0xF6, 0xFD, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x0E, 0xEC, 0x09, 0x93, 0x40, 0x00, + 0x7F, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x05, 0xFE, 0x02, 0x93, 0x1A, 0x23, 0x0E, 0xEC, 0x40, 0x98, 0x61, 0x95, 0x02, 0xD4, 0x09, 0xB7, 0x01, 0x00, 0xC5, 0xD6, 0x43, 0xB2, 0x01, 0xD2, 0x0F, 0x9F, + 0x1F, 0xFE, 0x12, 0x95, 0x0D, 0xEC, 0x02, 0x93, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0xD2, 0x92, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x0E, 0xBC, 0x1A, 0xD5, 0x0D, 0xEC, 0x41, 0x08, 0x02, 0x48, + 0x02, 0x1E, 0x0F, 0x9F, 0x11, 0xFE, 0xC5, 0x94, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x2D, 0xFE, 0x11, 0x93, 0x0D, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0x01, 0x96, 0x40, 0x46, 0x02, 0x4E, + 0x0F, 0x9F, 0x35, 0xFE, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x11, 0x93, 0x0E, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x40, 0xFE, 0x19, 0xD3, 0x11, 0xEC, 0x41, 0x94, 0x1A, 0xD5, 0x10, 0xEC, + 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0E, 0xEC, 0x0A, 0x95, 0x40, 0x00, 0x7F, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x50, 0xFE, 0x01, 0x95, + 0x19, 0x25, 0x0E, 0xEC, 0x40, 0x98, 0x0A, 0x03, 0x01, 0x00, 0x01, 0xD2, 0x43, 0xB4, 0xC5, 0xD4, 0x0F, 0x9F, 0x74, 0xFE, 0x11, 0x93, 0x0D, 0xEC, 0x12, 0x95, 0x0C, 0xBC, 0xC1, 0xD4, 0x12, 0x95, + 0x0D, 0xEC, 0x11, 0x93, 0x0E, 0xBC, 0x59, 0x93, 0x59, 0x93, 0x02, 0x97, 0xC3, 0x02, 0xC2, 0xD2, 0x11, 0x93, 0x05, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x73, 0xFE, 0x11, 0x93, 0x0D, 0xEC, + 0x41, 0x02, 0x19, 0xD3, 0x0D, 0xEC, 0x41, 0x08, 0x01, 0x94, 0x62, 0x93, 0x01, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0x5A, 0xFE, 0xC5, 0x96, 0x40, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0x82, 0xFE, 0x41, 0x92, + 0x19, 0xD3, 0xF0, 0xBD, 0x11, 0x93, 0x0E, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x8D, 0xFE, 0x19, 0xD3, 0x11, 0xEC, 0x41, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x41, 0x96, 0x0A, 0x65, 0xBF, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xEF, 0xFF, 0xC4, 0xD2, 0x42, 0x04, 0x41, 0x06, 0x4A, 0x46, 0x02, 0x9E, 0x0F, 0x9F, + 0x96, 0xFE, 0x41, 0x96, 0x0A, 0x65, 0x9F, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xEF, 0xFF, 0xC4, 0xD2, 0x42, 0x04, 0x41, 0x06, 0x4A, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xA4, 0xFE, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x08, 0x14, 0x19, 0xD3, 0x01, 0x84, 0x0A, 0x65, 0xFE, 0x7B, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xE0, 0xC2, 0xD2, 0x0A, 0x65, + 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x01, 0x00, 0x1F, 0xEC, 0x00, 0x00, 0xB2, 0xF8, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x00, 0x00, 0xF0, 0xF9, + 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x02, 0x19, 0xD3, 0x44, 0x96, 0x09, 0x63, 0x80, 0x69, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0xB5, 0x7F, 0xFF, 0xC1, 0xD4, 0x55, 0x92, + 0x19, 0xD3, 0x2C, 0x90, 0x0B, 0x97, 0xFE, 0x00, 0x1B, 0xD7, 0x40, 0x85, 0x40, 0xF0, 0x99, 0xFF, 0xC5, 0x92, 0x40, 0x92, 0x00, 0xEE, 0x41, 0x02, 0x70, 0x42, 0x44, 0x8E, 0x11, 0x93, 0x04, 0xEC, + 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x09, 0xFF, 0x40, 0x96, 0x1B, 0xD7, 0x04, 0xEC, 0x0F, 0x9F, 0x00, 0xEE, 0x09, 0x93, 0x4F, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x40, 0xF0, 0x90, 0xFA, 0x0B, 0x97, + 0xDE, 0xFE, 0x1B, 0xD7, 0x1B, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0x05, 0xEC, 0x11, 0x93, 0x20, 0xBC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x16, 0xFF, 0xC8, 0xD2, 0x40, 0xF0, 0x25, 0xFF, 0x41, 0x00, + 0x0F, 0x9F, 0x16, 0xFF, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x73, 0xFF, + 0x12, 0x95, 0x21, 0xBC, 0x01, 0xD4, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x3B, 0xFF, 0x40, 0xF0, 0x62, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x44, 0xFF, 0x40, 0xF0, 0x6C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x4F, 0xFF, 0x40, 0xF0, 0xB0, 0xFA, 0x0F, 0x9F, 0x58, 0xFF, 0x01, 0x94, + 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x58, 0xFF, 0x40, 0xF0, 0x7C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x61, 0xFF, 0x40, 0xF0, + 0x87, 0xFB, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x6A, 0xFF, 0x44, 0x92, 0x0F, 0x9F, 0x6E, 0xFF, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x70, 0xFF, 0x19, 0xD3, 0x0B, 0xBC, + 0x40, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x96, 0xFF, 0x11, 0x93, 0x28, 0xBC, 0x01, 0xD2, 0x42, 0xB2, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x84, 0xFF, 0x40, 0xF0, 0x8F, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x8D, 0xFF, 0x40, 0xF0, 0x9E, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x96, 0xFF, 0x40, 0xF0, 0xAE, 0xFB, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xB1, 0xFE, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; +#elif defined(ZD1211B) +={ + 0x00, 0xF0, 0x66, 0xFE, 0x67, 0xFE, 0x68, 0xFE, 0x69, 0xFE, 0x6A, 0xFE, 0x6B, 0xFE, 0x6C, 0xFE, 0x6D, 0xFE, 0x09, 0x63, 0xD6, 0x79, 0x57, 0x94, 0xD1, 0xD4, 0x0A, 0x95, 0x17, 0xF8, 0xD1, 0xD4, + 0x0A, 0x95, 0xD2, 0x07, 0x00, 0xEE, 0xC1, 0xD4, 0x00, 0xEE, 0x0F, 0x9F, 0x95, 0xF8, 0x10, 0x48, 0x10, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x66, 0x66, 0x66, 0x00, 0x00, 0x6A, 0x6A, + 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xFF, 0x07, + 0x00, 0x00, 0x12, 0x01, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0x40, 0xCE, 0x0A, 0x11, 0x12, 0x10, 0x48, 0x10, 0x20, 0x00, 0x01, 0x04, 0x03, 0x09, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x52, + 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0x4A, 0x4A, + 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0x42, 0x42, + 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0x0C, 0x03, + 0x5A, 0x00, 0x79, 0x00, 0x44, 0x00, 0x41, 0x00, 0x53, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0x03, 0x55, 0x00, 0x53, 0x00, 0x42, 0x00, 0x32, 0x00, 0x2E, 0x00, + 0x30, 0x00, 0x20, 0x00, 0x57, 0x00, 0x4C, 0x00, 0x41, 0x00, 0x4E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0xC7, 0xFE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, + 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, 0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0xE0, 0xFE, + 0x41, 0xEE, 0x98, 0x9A, 0x09, 0x02, 0x2E, 0x00, 0x01, 0x01, 0x00, 0x80, 0xFA, 0x09, 0x04, 0x00, 0x00, 0x04, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x01, 0x02, 0x00, 0x02, 0x00, 0x07, 0x05, 0x82, + 0x02, 0x00, 0x02, 0x00, 0x07, 0x05, 0x83, 0x03, 0x40, 0x00, 0x01, 0x07, 0x05, 0x04, 0x03, 0x40, 0x00, 0x01, 0x09, 0x02, 0x2E, 0x00, 0x01, 0x01, 0x00, 0x80, 0xFA, 0x09, 0x04, 0x00, 0x00, 0x04, + 0xFF, 0x00, 0x00, 0x00, 0x07, 0x05, 0x01, 0x02, 0x40, 0x00, 0x00, 0x07, 0x05, 0x82, 0x02, 0x40, 0x00, 0x00, 0x07, 0x05, 0x83, 0x03, 0x40, 0x00, 0x01, 0x07, 0x05, 0x04, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, + 0xEE, 0xEE, 0xEE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFC, 0x7E, 0xBF, 0xDF, 0xFB, 0xFD, 0xFB, 0xFD, 0xCA, 0xFB, + 0xCE, 0xFB, 0x12, 0xFC, 0xD2, 0xFB, 0x12, 0xFC, 0xD6, 0xFB, 0xE0, 0xFB, 0x12, 0xFC, 0xEA, 0xFB, 0xF4, 0xFB, 0xFE, 0xFB, 0x08, 0xFC, 0xE7, 0xFC, 0xEB, 0xFC, 0xF6, 0xFC, 0x35, 0xFD, 0x35, 0xFD, + 0x20, 0xFD, 0x2B, 0xFD, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0x81, 0xF9, 0x11, 0x93, 0x01, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, + 0x81, 0xF9, 0x11, 0x93, 0x02, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x81, 0xF9, 0x4F, 0x96, 0x1B, 0xD7, 0x30, 0xBC, 0x1A, 0xD5, 0x80, 0xBC, 0x0C, 0x99, 0x86, 0x00, 0x1C, 0xD9, 0x90, 0xBC, + 0x46, 0x94, 0x0C, 0x69, 0x6F, 0x43, 0x01, 0x97, 0xD4, 0xD4, 0x0B, 0x07, 0xFF, 0xFF, 0x40, 0x46, 0x02, 0x3E, 0x0F, 0x9F, 0x34, 0xF9, 0x42, 0x96, 0x1B, 0xD7, 0x61, 0xBC, 0x40, 0x92, 0x19, 0xD3, + 0x60, 0xBC, 0x0A, 0x65, 0xBF, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC4, 0xD2, 0x0A, 0x95, 0xF2, 0x00, 0x1A, 0xD5, 0x31, 0xBC, 0x52, 0x98, 0x1C, 0xD9, 0x82, 0xBC, 0x09, 0x93, + 0x82, 0x00, 0x19, 0xD3, 0x92, 0xBC, 0x40, 0x94, 0x1A, 0xD5, 0x42, 0xBC, 0x0B, 0xA3, 0x20, 0x00, 0x19, 0xD3, 0x43, 0xBC, 0x0B, 0x97, 0xFE, 0x00, 0x1B, 0xD7, 0x32, 0xBC, 0x53, 0x98, 0x1C, 0xD9, + 0x8E, 0xBC, 0x09, 0x93, 0x83, 0x00, 0x19, 0xD3, 0x9E, 0xBC, 0x0A, 0x95, 0x40, 0x00, 0x1A, 0xD5, 0x44, 0xBC, 0x60, 0x96, 0x1B, 0xD7, 0x45, 0xBC, 0x0C, 0x99, 0xFF, 0x00, 0x1C, 0xD9, 0x33, 0xBC, + 0x44, 0x96, 0x1B, 0xD7, 0x8F, 0xBC, 0x19, 0xD3, 0x9F, 0xBC, 0x40, 0x98, 0x1C, 0xD9, 0x67, 0xBC, 0x1A, 0xD5, 0x66, 0xBC, 0x0A, 0x65, 0xB9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x9F, 0xFF, + 0xC3, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xEE, 0xF9, 0x11, 0x93, 0x01, 0xEC, 0x40, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0xEE, 0xF9, 0x11, 0x93, 0x02, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xEE, 0xF9, 0x4F, 0x96, 0x1B, 0xD7, 0x30, 0xBC, 0x1A, 0xD5, 0x80, 0xBC, 0x0A, 0x95, 0x86, 0x00, 0x1A, 0xD5, + 0x90, 0xBC, 0x46, 0x94, 0x0B, 0x67, 0x6F, 0x43, 0xD3, 0xD4, 0x09, 0x03, 0xFF, 0xFF, 0x40, 0x42, 0x02, 0x3E, 0x0F, 0x9F, 0xA4, 0xF9, 0x40, 0x96, 0x1B, 0xD7, 0x61, 0xBC, 0x0C, 0x99, 0x40, 0x00, + 0x1C, 0xD9, 0x60, 0xBC, 0x0A, 0x65, 0xBF, 0x43, 0xC2, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC2, 0xD2, 0x0A, 0x95, 0xF2, 0x00, 0x1A, 0xD5, 0x31, 0xBC, 0x52, 0x96, 0x1B, 0xD7, 0x82, 0xBC, 0x09, 0x93, + 0x82, 0x00, 0x19, 0xD3, 0x92, 0xBC, 0x1C, 0xD9, 0x42, 0xBC, 0x40, 0x94, 0x0A, 0xA7, 0x20, 0x00, 0x1B, 0xD7, 0x43, 0xBC, 0x0A, 0x95, 0xFE, 0x00, 0x1A, 0xD5, 0x32, 0xBC, 0x53, 0x94, 0x1A, 0xD5, + 0x8E, 0xBC, 0x0A, 0x95, 0x83, 0x00, 0x1A, 0xD5, 0x9E, 0xBC, 0x1C, 0xD9, 0x44, 0xBC, 0x1B, 0xD7, 0x45, 0xBC, 0x0B, 0x97, 0xFF, 0x00, 0x1B, 0xD7, 0x33, 0xBC, 0x44, 0x94, 0x1A, 0xD5, 0x8F, 0xBC, + 0x19, 0xD3, 0x9F, 0xBC, 0x40, 0x96, 0x1B, 0xD7, 0x67, 0xBC, 0x1C, 0xD9, 0x66, 0xBC, 0x0A, 0x65, 0xB9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC3, 0xD2, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x95, 0x09, 0xEC, 0x02, 0x97, 0xC3, 0x92, 0x71, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x37, 0xFA, 0x02, 0x8E, 0x0F, 0x9F, 0x04, 0xFA, 0x70, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x0A, 0xFA, 0x0F, 0x9F, 0x5F, 0xFA, 0x72, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x29, 0xFA, 0x0F, 0x9F, 0x5F, 0xFA, 0x0A, 0x03, 0x03, 0x00, 0xC1, 0x96, 0x1B, 0xD7, 0x0E, 0xEC, 0x0A, 0x03, + 0x01, 0x00, 0xC1, 0x94, 0x1A, 0xD5, 0x0D, 0xEC, 0x0A, 0x45, 0xFF, 0xED, 0x02, 0x8E, 0x0F, 0x9F, 0x24, 0xFA, 0x0B, 0x03, 0x01, 0x00, 0x61, 0x93, 0x11, 0x03, 0x4D, 0xEC, 0x19, 0xD3, 0x4D, 0xEC, + 0x0A, 0x03, 0x00, 0xDE, 0x19, 0xD3, 0x0D, 0xEC, 0x42, 0x98, 0x1C, 0xD9, 0x11, 0xEC, 0x0F, 0x9F, 0x5F, 0xFA, 0x0A, 0x03, 0x03, 0x00, 0xC1, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x0A, 0x03, 0x01, 0x00, + 0xC1, 0x92, 0x19, 0xD3, 0x0D, 0xEC, 0x40, 0xF0, 0xF8, 0xFD, 0x0F, 0x9F, 0x5F, 0xFA, 0x41, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x94, 0x1A, 0xD5, 0xF0, 0xBD, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, + 0x19, 0xD3, 0x10, 0xEC, 0x12, 0x95, 0x4D, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x5D, 0xFA, 0x02, 0x43, 0x02, 0x0E, 0x0F, 0x9F, 0x58, 0xFA, 0x0B, 0x97, 0x00, 0x10, 0x0A, 0x65, 0x00, 0x12, + 0xD2, 0x98, 0xD3, 0xD8, 0x41, 0x02, 0x11, 0x43, 0x4D, 0xEC, 0x02, 0x1E, 0x0F, 0x9F, 0x50, 0xFA, 0x40, 0x92, 0x19, 0xD3, 0x4D, 0xEC, 0x0F, 0x9F, 0x5F, 0xFA, 0x0F, 0x9F, 0x00, 0xEE, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0x09, 0x93, 0xFF, 0x00, 0x19, 0xD3, 0x12, 0xBC, + 0x19, 0xD3, 0x13, 0xBC, 0x19, 0xD3, 0x14, 0xBC, 0x19, 0xD3, 0x16, 0xBC, 0x19, 0xD3, 0x17, 0xBC, 0x0C, 0x69, 0x00, 0x44, 0x04, 0x93, 0xC1, 0x94, 0x0A, 0xB5, 0xEF, 0xFF, 0xC5, 0xD4, 0x41, 0x94, + 0x1A, 0xD5, 0x02, 0xBC, 0x0B, 0x67, 0xEF, 0x43, 0x03, 0x95, 0xC2, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC3, 0xD2, 0xC5, 0x96, 0x0B, 0xA5, 0x20, 0x00, 0xC4, 0xD4, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x19, 0xD3, 0x11, 0xEC, 0x19, 0xD3, 0x00, 0xEC, 0x19, 0xD3, 0x01, 0xEC, 0x19, 0xD3, 0x02, 0xEC, 0x19, 0xD3, + 0x0F, 0xEC, 0x19, 0xD3, 0x10, 0xEC, 0x19, 0xD3, 0x1C, 0xEC, 0x40, 0xF0, 0x61, 0xFA, 0x40, 0x92, 0x19, 0xD3, 0x08, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x12, 0xEC, 0x41, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x13, 0xFB, 0x41, 0x94, 0x1A, 0xD5, 0x12, 0xEC, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, + 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xEA, 0xFA, 0x09, 0x93, 0x00, 0x02, 0x19, 0xD3, 0x03, 0xEC, 0x09, 0x93, 0x31, 0xF8, 0x19, 0xD3, 0x13, 0xEC, 0x02, 0x97, 0x01, 0x99, 0x03, 0x95, + 0x09, 0x93, 0x16, 0xEC, 0x01, 0x05, 0x03, 0x93, 0x04, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xCF, 0xFA, 0x11, 0x93, 0x39, 0xF8, 0x79, 0x93, 0x79, 0x93, + 0x19, 0xD3, 0x1A, 0xEC, 0x09, 0x93, 0x1F, 0xEC, 0x19, 0xD3, 0x14, 0xEC, 0x09, 0x93, 0x36, 0xEC, 0x0F, 0x9F, 0x0D, 0xFB, 0x09, 0x93, 0x40, 0x00, 0x19, 0xD3, 0x03, 0xEC, 0x09, 0x93, 0x31, 0xF8, + 0x19, 0xD3, 0x13, 0xEC, 0x02, 0x97, 0x01, 0x99, 0x03, 0x95, 0x09, 0x93, 0x16, 0xEC, 0x01, 0x05, 0x03, 0x93, 0x04, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, + 0xF4, 0xFA, 0x11, 0x93, 0x39, 0xF8, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x1A, 0xEC, 0x09, 0x93, 0x36, 0xEC, 0x19, 0xD3, 0x14, 0xEC, 0x09, 0x93, 0x1F, 0xEC, 0x19, 0xD3, 0x15, 0xEC, 0x09, 0x93, + 0x0A, 0x06, 0x19, 0xD3, 0x16, 0xEC, 0x13, 0x97, 0x0C, 0xBC, 0x0B, 0xB3, 0x80, 0x00, 0x0A, 0x95, 0x06, 0xEC, 0xD2, 0xD2, 0x0B, 0xB3, 0x60, 0x00, 0xC2, 0xD2, 0x09, 0x93, 0x06, 0xEC, 0x09, 0x05, + 0x02, 0x00, 0x0B, 0xB3, 0x03, 0x00, 0xC2, 0xD2, 0xC5, 0x92, 0x11, 0x93, 0x0E, 0xBC, 0x19, 0xD3, 0x09, 0xEC, 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, + 0x0A, 0xEC, 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, 0x0B, 0xEC, 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, + 0x0C, 0xEC, 0x11, 0x93, 0x07, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x56, 0xFB, 0x09, 0x43, 0x40, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0x5C, 0xFB, 0x11, 0x93, 0x1B, 0xEC, 0x41, 0x22, 0x0A, 0x95, + 0x54, 0xFB, 0x88, 0xD4, 0x88, 0xDC, 0x91, 0x9A, 0x0F, 0x9F, 0x5F, 0xFB, 0x40, 0xF0, 0xBE, 0xFB, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x5F, 0xFB, 0x42, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x41, 0x00, + 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xF8, 0xFD, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, + 0x11, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x77, 0xFB, 0x40, 0xF0, 0x43, 0xFE, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, + 0x19, 0xD3, 0x11, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0x0B, 0xBC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x44, 0x92, 0x19, 0xD3, 0x0B, 0xBC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x12, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x09, 0x93, 0x70, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xF7, 0xFF, 0xC2, 0xD2, 0x09, 0x93, 0x6D, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x11, 0x93, 0x09, 0xEC, 0x4B, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x12, 0xFC, 0x09, 0x03, 0xFF, 0xF8, 0xC1, 0x9E, 0x40, 0xF0, 0x15, 0xFC, 0x0F, 0x9F, 0x13, 0xFC, 0x40, 0xF0, 0x2B, 0xFC, + 0x0F, 0x9F, 0x13, 0xFC, 0x40, 0xF0, 0x3F, 0xFC, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0xB7, 0xFC, 0x0F, 0x9F, 0x13, 0xFC, + 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0xCB, 0xFC, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, + 0x40, 0xF0, 0x47, 0xFD, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0x56, 0xFD, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, + 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0x97, 0xFD, 0x0F, 0x9F, 0x13, 0xFC, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x12, 0xFC, 0x40, 0xF0, 0xBD, 0xFD, + 0x0F, 0x9F, 0x13, 0xFC, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x08, 0xEC, 0x4F, 0xB2, 0x09, 0x03, 0x1C, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, + 0x40, 0x92, 0x19, 0xD3, 0x0E, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, + 0x41, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x3C, 0xFC, 0x40, 0x92, 0x19, 0xD3, 0x1E, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0x3D, 0xFC, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x0A, 0xEC, 0x01, 0x95, 0xC2, 0x96, 0x41, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0x58, 0xFC, 0x02, 0x1E, 0x0F, 0x9F, 0x53, 0xFC, 0x42, 0x46, 0x02, 0x4E, 0x0F, 0x9F, + 0x62, 0xFC, 0x0F, 0x9F, 0xA9, 0xFC, 0x41, 0x96, 0x1B, 0xD7, 0x10, 0xEC, 0x0F, 0x9F, 0xAC, 0xFC, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x1B, 0xD7, 0x10, 0xEC, + 0x0F, 0x9F, 0xAC, 0xFC, 0x41, 0x02, 0xC1, 0x92, 0x79, 0x93, 0x79, 0x93, 0x44, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x81, 0xFC, 0x02, 0x9E, 0x0F, 0x9F, 0x73, 0xFC, 0x45, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0xAC, 0xFC, 0x0F, 0x9F, 0xA9, 0xFC, 0x41, 0x42, 0x02, 0x1E, 0x0F, 0x9F, 0xA9, 0xFC, 0x09, 0x03, 0x4D, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x08, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, + 0xAC, 0xFC, 0x0A, 0x65, 0xF8, 0x43, 0x50, 0x98, 0x02, 0x97, 0xC3, 0xD8, 0x09, 0x63, 0xF5, 0x43, 0x41, 0x98, 0x01, 0x97, 0xC3, 0xD8, 0x40, 0x94, 0x02, 0x93, 0x0C, 0x99, 0x51, 0xEC, 0x04, 0x03, + 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0x0C, 0xBC, 0xC1, 0x92, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x0E, 0xBC, 0x41, 0x04, 0x5A, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0x8C, 0xFC, 0x0C, 0x99, 0x7E, 0x00, + 0x1C, 0xD9, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x19, 0xD3, 0x0B, 0xBC, 0x0F, 0x9F, 0xAC, 0xFC, 0x40, 0x92, 0x0F, 0x9F, 0xB5, 0xFC, 0x11, 0x93, 0x10, 0xEC, 0x41, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0xB4, 0xFC, 0x19, 0xD3, 0x1E, 0xEC, 0x41, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, 0x09, 0x43, 0xFF, 0x00, 0x02, 0x8E, 0x0F, 0x9F, + 0xC8, 0xFC, 0x19, 0xD3, 0x01, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0xC9, 0xFC, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x14, 0xEC, + 0x0A, 0x95, 0x09, 0x02, 0xC1, 0xD4, 0x11, 0x93, 0x15, 0xEC, 0x0B, 0x97, 0x09, 0x07, 0xC1, 0xD6, 0x0A, 0x95, 0x0A, 0xEC, 0x02, 0x97, 0xC3, 0x92, 0x79, 0x93, 0x79, 0x93, 0x09, 0x03, 0xFF, 0xFF, + 0x46, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x35, 0xFD, 0x09, 0x03, 0x0B, 0xF9, 0xC1, 0x9E, 0x11, 0x93, 0x13, 0xEC, 0x0F, 0x9F, 0x22, 0xFD, 0xC2, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x40, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0x35, 0xFD, 0x11, 0x93, 0x14, 0xEC, 0x0F, 0x9F, 0x2D, 0xFD, 0xC2, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x50, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xFD, 0x02, 0x8E, 0x0F, 0x9F, 0x06, 0xFD, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x0C, 0xFD, 0x0F, 0x9F, 0x35, 0xFD, 0x60, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x18, 0xFD, 0x0F, 0x9F, 0x35, 0xFD, 0x09, 0x93, 0x3A, 0xF8, 0x19, 0xD3, 0x0D, 0xEC, + 0x0F, 0x9F, 0x1C, 0xFD, 0x0A, 0x95, 0x6F, 0xF8, 0x1A, 0xD5, 0x0D, 0xEC, 0x0F, 0x9F, 0x1C, 0xFD, 0x0B, 0x97, 0x7A, 0xF8, 0x1B, 0xD7, 0x0D, 0xEC, 0x11, 0x93, 0x0D, 0xEC, 0x0F, 0x9F, 0x24, 0xFD, + 0x09, 0x93, 0x16, 0xEC, 0x19, 0xD3, 0x0D, 0xEC, 0xC1, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x19, 0xD3, 0x0E, 0xEC, 0x0F, 0x9F, 0x38, 0xFD, 0x11, 0x93, 0x15, 0xEC, 0x19, 0xD3, 0x0D, 0xEC, 0x41, 0x02, + 0xC1, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x0F, 0x9F, 0x38, 0xFD, 0x40, 0x92, 0x0F, 0x9F, 0x45, 0xFD, 0x11, 0x93, 0x0E, 0xEC, 0x12, 0x95, 0x0C, 0xEC, 0x02, 0x43, 0x02, 0x9E, 0x0F, 0x9F, 0x42, 0xFD, + 0x1A, 0xD5, 0x0E, 0xEC, 0x40, 0xF0, 0xF8, 0xFD, 0x41, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x00, 0xEC, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, + 0xF0, 0xBD, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, 0x09, 0xB5, 0xFF, 0x00, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, + 0x6C, 0xFD, 0x1A, 0xD5, 0x00, 0xEC, 0x0A, 0x65, 0xFF, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x7F, 0xFF, 0xC2, 0xD2, 0x0F, 0x9F, 0x92, 0xFD, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x81, 0xFD, 0x41, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0x7B, 0xFD, 0x40, 0x92, 0x0F, 0x9F, 0x95, 0xFD, 0x1A, 0xD5, 0x00, 0xEC, 0x40, 0xF0, 0x12, 0xF9, 0x0F, 0x9F, + 0x89, 0xFD, 0x41, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x95, 0xFD, 0x1A, 0xD5, 0x00, 0xEC, 0x40, 0xF0, 0x83, 0xF9, 0x0A, 0x65, 0xFF, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, + 0x40, 0xF0, 0x90, 0xFE, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x01, 0xBC, 0x09, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0xBB, 0xFD, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xFD, 0x11, 0x93, 0x0B, 0xEC, 0x41, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0xB1, 0xFD, 0x40, 0x92, 0x0F, 0x9F, + 0xBB, 0xFD, 0x11, 0x93, 0x02, 0xEC, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x1A, 0xD5, 0x10, 0xEC, 0x02, 0x93, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, + 0x11, 0x93, 0x01, 0xBC, 0x09, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF5, 0xFD, 0x13, 0x97, 0x0B, 0xEC, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0xF5, 0xFD, 0x11, 0x93, 0x0A, 0xEC, + 0x09, 0xB5, 0xFF, 0x00, 0x11, 0x93, 0x14, 0xEC, 0x46, 0x02, 0xC1, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x01, 0x45, 0x02, 0x5E, 0x0F, 0x9F, 0xF5, 0xFD, 0x1B, 0xD7, 0x01, 0xEC, 0x1A, 0xD5, 0x02, 0xEC, + 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xEC, 0xFD, 0x40, 0xF0, 0x12, 0xF9, 0x0F, 0x9F, 0xEE, 0xFD, 0x40, 0xF0, 0x83, 0xF9, 0x40, 0xF0, 0x90, 0xFE, + 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0xF6, 0xFD, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x0E, 0xEC, 0x09, 0x93, 0x40, 0x00, + 0x7F, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x05, 0xFE, 0x02, 0x93, 0x1A, 0x23, 0x0E, 0xEC, 0x40, 0x98, 0x61, 0x95, 0x02, 0xD4, 0x09, 0xB7, 0x01, 0x00, 0xC5, 0xD6, 0x43, 0xB2, 0x01, 0xD2, 0x0F, 0x9F, + 0x1F, 0xFE, 0x12, 0x95, 0x0D, 0xEC, 0x02, 0x93, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0xD2, 0x92, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x0E, 0xBC, 0x1A, 0xD5, 0x0D, 0xEC, 0x41, 0x08, 0x02, 0x48, + 0x02, 0x1E, 0x0F, 0x9F, 0x11, 0xFE, 0xC5, 0x94, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x2D, 0xFE, 0x11, 0x93, 0x0D, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0x01, 0x96, 0x40, 0x46, 0x02, 0x4E, + 0x0F, 0x9F, 0x35, 0xFE, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x11, 0x93, 0x0E, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x40, 0xFE, 0x19, 0xD3, 0x11, 0xEC, 0x41, 0x94, 0x1A, 0xD5, 0x10, 0xEC, + 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0E, 0xEC, 0x0A, 0x95, 0x40, 0x00, 0x7F, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x50, 0xFE, 0x01, 0x95, + 0x19, 0x25, 0x0E, 0xEC, 0x40, 0x98, 0x0A, 0x03, 0x01, 0x00, 0x01, 0xD2, 0x43, 0xB4, 0xC5, 0xD4, 0x0F, 0x9F, 0x74, 0xFE, 0x11, 0x93, 0x0D, 0xEC, 0x12, 0x95, 0x0C, 0xBC, 0xC1, 0xD4, 0x12, 0x95, + 0x0D, 0xEC, 0x11, 0x93, 0x0E, 0xBC, 0x59, 0x93, 0x59, 0x93, 0x02, 0x97, 0xC3, 0x02, 0xC2, 0xD2, 0x11, 0x93, 0x05, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x73, 0xFE, 0x11, 0x93, 0x0D, 0xEC, + 0x41, 0x02, 0x19, 0xD3, 0x0D, 0xEC, 0x41, 0x08, 0x01, 0x94, 0x62, 0x93, 0x01, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0x5A, 0xFE, 0xC5, 0x96, 0x40, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0x82, 0xFE, 0x41, 0x92, + 0x19, 0xD3, 0xF0, 0xBD, 0x11, 0x93, 0x0E, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x8D, 0xFE, 0x19, 0xD3, 0x11, 0xEC, 0x41, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x41, 0x96, 0x0A, 0x65, 0xBF, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xEF, 0xFF, 0xC4, 0xD2, 0x42, 0x04, 0x41, 0x06, 0x4A, 0x46, 0x02, 0x9E, 0x0F, 0x9F, + 0x96, 0xFE, 0x41, 0x96, 0x0A, 0x65, 0x9F, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xEF, 0xFF, 0xC4, 0xD2, 0x42, 0x04, 0x41, 0x06, 0x4A, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xA4, 0xFE, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x08, 0x14, 0x19, 0xD3, 0x01, 0x84, 0x0A, 0x65, 0xFE, 0x7B, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xE0, 0xC2, 0xD2, 0x0A, 0x65, + 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x01, 0x00, 0x1F, 0xEC, 0x00, 0x00, 0xB2, 0xF8, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x00, 0x00, 0xF0, 0xF9, + 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x44, 0x96, 0x12, 0x95, 0x1A, 0xF8, 0x0A, 0xB3, 0x00, 0x01, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF7, 0xFE, 0x62, 0x93, + 0x79, 0x93, 0x79, 0x93, 0x43, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xFD, 0xFE, 0x11, 0x93, 0x44, 0x96, 0x09, 0xA3, 0x00, 0x02, 0x19, 0xD3, 0x44, 0x96, 0x09, 0x63, 0x80, 0x69, 0x01, 0x97, + 0xC3, 0x94, 0x0A, 0xB5, 0x7F, 0xFF, 0xC1, 0xD4, 0x11, 0x93, 0x19, 0xF8, 0x4F, 0xB2, 0x4D, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x10, 0xFF, 0x55, 0x92, 0x19, 0xD3, 0x2C, 0x90, 0x0F, 0x9F, 0x16, 0xFF, + 0x44, 0x96, 0x1B, 0xD7, 0x2C, 0x90, 0x6F, 0x92, 0x19, 0xD3, 0xEC, 0x93, 0x0B, 0x97, 0xFE, 0x00, 0x1B, 0xD7, 0x40, 0x85, 0x40, 0xF0, 0xBD, 0xFF, 0xC5, 0x92, 0x40, 0x92, 0x00, 0xEE, 0x41, 0x02, + 0x70, 0x42, 0x44, 0x8E, 0x11, 0x93, 0x04, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x2D, 0xFF, 0x40, 0x96, 0x1B, 0xD7, 0x04, 0xEC, 0x0F, 0x9F, 0x00, 0xEE, 0x09, 0x93, 0x4F, 0x00, 0x19, 0xD3, + 0x05, 0x84, 0x40, 0xF0, 0x90, 0xFA, 0x0B, 0x97, 0xDE, 0xFE, 0x1B, 0xD7, 0x1B, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0x05, 0xEC, 0x11, 0x93, 0x20, 0xBC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x3A, 0xFF, + 0xC8, 0xD2, 0x40, 0xF0, 0x49, 0xFF, 0x41, 0x00, 0x0F, 0x9F, 0x3A, 0xFF, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, 0x41, 0xB2, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x97, 0xFF, 0x12, 0x95, 0x21, 0xBC, 0x01, 0xD4, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5F, 0xFF, 0x40, 0xF0, 0x62, 0xFB, 0x01, 0x94, + 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x68, 0xFF, 0x40, 0xF0, 0x6C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x73, 0xFF, 0x40, 0xF0, + 0xB0, 0xFA, 0x0F, 0x9F, 0x7C, 0xFF, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x7C, 0xFF, 0x40, 0xF0, 0x7C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, + 0x02, 0x4E, 0x0F, 0x9F, 0x85, 0xFF, 0x40, 0xF0, 0x87, 0xFB, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x8E, 0xFF, 0x44, 0x92, 0x0F, 0x9F, 0x92, 0xFF, 0x41, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0x94, 0xFF, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xBA, 0xFF, 0x11, 0x93, 0x28, 0xBC, + 0x01, 0xD2, 0x42, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA8, 0xFF, 0x40, 0xF0, 0x8F, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB1, 0xFF, 0x40, 0xF0, + 0x9E, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xBA, 0xFF, 0x40, 0xF0, 0xAE, 0xFB, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, + 0x40, 0xF0, 0xB1, 0xFE, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdsorts.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdsorts.h @@ -1,276 +1,311 @@ -/* $Id: zdsorts.h,v 1.8 2005/03/27 20:47:39 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef __ZDSORTS_H__ #define __ZDSORTS_H__ #include "zdtkipseed.h" #include "zdmic.h" -#define MAX_MSDU_LNG 1600 // only payload -#define MAC_HDR_LNG 24 // 802.11, not include A4 -#define WEP_ADD_LNG 8 // 4 for IV, 4 for ICV -#define WDS_ADD_LNG 6 // for Address 4 +#define MAX_MSDU_LNG 1600// only payload +#define MAC_HDR_LNG 24 // 802.11, not include A4 +#define WEP_ADD_LNG 8 // 4 for IV, 4 for ICV +#define WDS_ADD_LNG 6 // for Address 4 #define IV_LNG 4 #define EIV_LNG 4 #define ICV_LNG 4 #define CRC_LNG 4 #define MIC_LNG 8 -#define MIN_FRAG_LNG 256 -#define MAX_FRAG_NUM (MAX_MSDU_LNG / (MIN_FRAG_LNG - MAC_HDR_LNG - CRC_LNG)) + +#define MIN_FRAG_LNG 256 +#define MAX_FRAG_NUM (MAX_MSDU_LNG / (MIN_FRAG_LNG - MAC_HDR_LNG - CRC_LNG)) + + #define MAX_AID 32 #define MAX_RECORD (MAX_AID + 1) -#define BURST_NUM 64 // 32 -#define TXQ_THRESHOLD 48 -#define MCQ_THRESHOLD 15 -#define CHAL_TEXT_LEN 128 -#define IDLE_TIMEOUT (10*60*100) // 10 min -#define RISE_RATE_THRESHOLD 4 +#define BURST_NUM 64//32 +#define TXQ_THRESHOLD 48 +#define MCQ_THRESHOLD 15 +#define CHAL_TEXT_LEN 128 +#ifndef HOST_IF_USB + #define IDLE_TIMEOUT (10*60*1000*1000) //10 min +#else + #define IDLE_TIMEOUT (10*60*100) //10 min +#endif + +#define RISE_RATE_THRESHOLD 4 #define HIGH_RISE_RATE_THRESHOLD 0xff -#define AGE_HASH_PERIOD (10*60) // 10 min -#define LONG_PREAMBLE 0 -#define SHORT_PREAMBLE 1 -#define OPEN_SYSTEM 0 +#define AGE_HASH_PERIOD (10*60) //10 min + +#define LONG_PREAMBLE 0 +#define SHORT_PREAMBLE 1 + +#define OPEN_SYSTEM 0 #define SHARE_KEY 1 #define NULL_AUTH 2 -#define WEP_NOT_USED 0 + + +#define WEP_NOT_USED 0 #define AES_USED 4 #define WEP64_USED 1 #define WEP128_USED 5 #define TKIP_USED 2 #define WEP256_USED 6 + + #define TO_DS_BIT 0x01 #define FROM_DS_BIT 0x02 -#define MORE_FRAG_BIT 0x04 +#define MORE_FRAG_BIT 0x04 + #define PW_SAVE_BIT 0x10 -#define MORE_DATA_BIT 0x20 +#define MORE_DATA_BIT 0x20 #define WEP_BIT 0x40 #define ORDER_BIT 0x80 + #define EIV_BIT 0x20 -#define NON_ERP_PRESENT 0x01 -#define USE_PROTECTION 0x02 -#define BARKER_PREAMBLE 0x04 +#define KEYID_MASK 0xC0 +#define NON_ERP_PRESENT 0x01 +#define USE_PROTECTION 0x02 +#define BARKER_PREAMBLE 0x04 //register 0xD40 #define MIC_BUSY 0x01 -typedef enum { - PSMODE_STA_ACTIVE, - PSMODE_POWER_SAVE + +typedef enum +{ + PSMODE_STA_ACTIVE, + PSMODE_POWER_SAVE } PsMode; -typedef enum { - STATION_STATE_NOT_AUTH, - STATION_STATE_AUTH_OPEN, - STATION_STATE_AUTH_KEY, - STATION_STATE_ASOC, - STATION_STATE_DIS_ASOC + +typedef enum +{ + STATION_STATE_NOT_AUTH, + STATION_STATE_AUTH_OPEN, + STATION_STATE_AUTH_KEY, + STATION_STATE_ASOC, + STATION_STATE_DIS_ASOC } StationState; -typedef struct { - U8 mac[6]; -} MacAddr_t; - -typedef enum { - EID_SSID = 0, - EID_SUPRATES, - EID_FHPARMS, - EID_DSPARMS, - EID_CFPARMS, - EID_TIM, - EID_IBPARMS, - EID_COUNTRY, - EID_CTEXT = 0x10, - EID_ERP = 0x2A, - EID_EXT_RATES = 0x32, - EID_WPA = 0xDD + +typedef struct +{ + U8 mac[6]; +} +MacAddr_t; + + +typedef enum +{ + EID_SSID = 0, + EID_SUPRATES, + EID_FHPARMS, + EID_DSPARMS, + EID_CFPARMS, + EID_TIM, + EID_IBPARMS, + EID_COUNTRY, + EID_CTEXT = 0x10, + EID_ERP = 0x2A, + EID_RSN = 0x30, + EID_EXT_RATES = 0x32, + EID_WPA = 0xDD, } ElementID; -typedef struct { - U8 buf[34]; //Max SSID Length = 32 -} Element; - -typedef enum { - CAP_ESS = 0x01, - CAP_IBSS = 0x02, - CAP_POLLABLE = 0x04, - CAP_POLLREQ = 0x08, - CAP_PRIVACY = 0x10, - CAP_SHORT_PREAMBLE = 0x20, - CAP_PBCC_ENABLE = 0x40, - CAP_SHORT_SLOT_TIME = 0x0400, - CAP_DSSS_OFDM_BIT = 0x2000 +typedef struct +{ + U8 buf[34+1]; //Max SSID Length = 32 +} +Element; + + +typedef enum +{ + CAP_ESS = 0x01, + CAP_IBSS = 0x02, + CAP_POLLABLE = 0x04, + CAP_POLLREQ = 0x08, + CAP_PRIVACY = 0x10, + CAP_SHORT_PREAMBLE = 0x20, + CAP_PBCC_ENABLE = 0x40, + CAP_SHORT_SLOT_TIME = 0x0400, + CAP_DSSS_OFDM_BIT = 0x2000 } Capability; -typedef enum { - RC_UNSPEC_REASON = 1, - RC_AUTH_NOT_VALID, - RC_DEAUTH_LEAVE_BSS, - RC_INACTIVITY, - RC_AP_OVERLOAD, - RC_CLASS2_ERROR, - RC_CLASS3_ERROR, - RC_DISAS_LEAVE_CSS, - RC_ASOC_NOT_AUTH, - RC_INVALID_IE = 13, - RC_MIC_FAIL, - RC_4WAY_SHAKE_TIMEOUT, - RC_GKEY_UPDATE_TIMEOUT, - RC_IE_IMCOMPABILITY, - RC_MC_CIPHER_INVALID, - RC_UNI_CIPHER_INVALID, - RC_AKMP_INVALID, - RC_UNSUP_RSNE_VERSION, - RC_INVALID_RSNE_CAP, - RC_8021X_AUTH_FAIL + +typedef enum +{ + RC_UNSPEC_REASON = 1, + RC_AUTH_NOT_VALID, + RC_DEAUTH_LEAVE_BSS, + RC_INACTIVITY, + RC_AP_OVERLOAD, + RC_CLASS2_ERROR, + RC_CLASS3_ERROR, + RC_DISAS_LEAVE_CSS, + RC_ASOC_NOT_AUTH, + RC_INVALID_IE = 13, + RC_MIC_FAIL, + RC_4WAY_SHAKE_TIMEOUT, + RC_GKEY_UPDATE_TIMEOUT, + RC_IE_IMCOMPABILITY, + RC_MC_CIPHER_INVALID, + RC_UNI_CIPHER_INVALID, + RC_AKMP_INVALID, + RC_UNSUP_RSNE_VERSION, + RC_INVALID_RSNE_CAP, + RC_8021X_AUTH_FAIL } ReasonCode; -typedef enum { - SC_SUCCESSFUL = 0, - SC_UNSPEC_FAILURE, - SC_UNSUP_CAP = 10, - SC_REASOC_NO_ASOC, - SC_FAIL_OTHER, - SC_UNSUPT_ALG, - SC_AUTH_OUT_OF_SEQ, - SC_CHAL_FAIL, - SC_AUTH_TIMEOUT, - SC_AP_FULL, - SC_UNSUP_RATES, - SC_UNSUP_SHORT_SLOT_TIME = 25, - SC_UNSUP_ER_PBCC = 26, - SC_UNSUP_DSSS_OFDM = 27 + +typedef enum +{ + SC_SUCCESSFUL = 0, + SC_UNSPEC_FAILURE, + SC_UNSUP_CAP = 10, + SC_REASOC_NO_ASOC, + SC_FAIL_OTHER, + SC_UNSUPT_ALG, + SC_AUTH_OUT_OF_SEQ, + SC_CHAL_FAIL, + SC_AUTH_TIMEOUT, + SC_AP_FULL, + SC_UNSUP_RATES, + SC_UNSUP_SHORT_SLOT_TIME = 25, + SC_UNSUP_ER_PBCC = 26, + SC_UNSUP_DSSS_OFDM = 27 } StatusCode; -typedef enum { - ST_ASOC_REQ = 0x00, - ST_ASOC_RSP = 0x10, - ST_REASOC_REQ = 0x20, - ST_REASOC_RSP = 0x30, - ST_PROBE_REQ = 0x40, - ST_PROBE_RSP = 0x50, - ST_BEACON = 0x80, - ST_ATIM = 0x90, - ST_DISASOC = 0xA0, - ST_AUTH = 0xB0, - ST_DEAUTH = 0xC0, - ST_PS_POLL = 0xA4, - ST_RTS = 0xB4, - ST_CTS = 0xC4, - ST_ACK = 0xD4, - ST_CFEND = 0xE4, - ST_CFEND_ACK = 0xF4, - ST_DATA = 0x08, - ST_DATA_ACK = 0x18, - ST_DATA_POLL = 0x28, - ST_DATA_POLL_ACK = 0x38, - ST_NULL_FRAME = 0x48 + +typedef enum +{ + ST_ASOC_REQ = 0x00, + ST_ASOC_RSP = 0x10, + ST_REASOC_REQ = 0x20, + ST_REASOC_RSP = 0x30, + ST_PROBE_REQ = 0x40, + ST_PROBE_RSP = 0x50, + ST_BEACON = 0x80, + ST_ATIM = 0x90, + ST_DISASOC = 0xA0, + ST_AUTH = 0xB0, + ST_DEAUTH = 0xC0, + ST_PS_POLL = 0xA4, + ST_RTS = 0xB4, + ST_CTS = 0xC4, + ST_ACK = 0xD4, + ST_CFEND = 0xE4, + ST_CFEND_ACK = 0xF4, + ST_DATA = 0x08, + ST_DATA_ACK = 0x18, + ST_DATA_POLL = 0x28, + ST_DATA_POLL_ACK= 0x38, + ST_NULL_FRAME = 0x48 } TypeSubtype; -typedef struct TrafficMap_s { - U8 t[(MAX_AID/8)+1]; -} TrafficMap_t; - -#define RATEARRAY_NUM 16 -typedef struct Hash_s { - struct Hash_s *pNext; - U8 mac[6]; - StationState asoc; - StationState auth; - PsMode psm; - U16 aid; - BOOLEAN bValid; - BOOLEAN bErpSta; - BOOLEAN bJustRiseRate; - U8 lsInterval; - U8 RxRate;//entry; - U8 encryMode; - U8 keyLength; - U8 pkInstalled; - U8 ZydasMode; - U8 AlreadyIn; - U8 MaxRate; - U8 CurrTxRate; - U8 ContSuccFrames; - U8 Preamble; - U8 KeyId; - U16 iv16; - U32 iv32; - U32 ttl; - U32 SuccessFrames; - U32 FailedFrames; - U8 RateArray[RATEARRAY_NUM];// this array is the rate adaption table - U8 RateArrayCount; - U8 SupportRateArray[RATEARRAY_NUM]; - U8 SupportRateArrayCount; - U8 RiseConditionCount; - U8 DownConditionCount; - U8 keyContent[16]; - U8 wepIv[4]; - U8 vapId; - Seedvar TxSeed; - Seedvar RxSeed; - MICvar TxMicKey; - MICvar RxMicKey; -} Hash_t; - -typedef struct Frame_s { - U16 HdrLen; - U16 bodyLen; - U8 header[32]; // include IV, eIV - U8 *body; - void *fragBuf; -} Frame_t; - -typedef struct FrmDesc_s { - struct FrmDesc_s *pNext; - U8 buffer[160]; // use mbuf to send boradcast - Frame_t mpdu[MAX_FRAG_NUM]; // for fragment - BOOLEAN bValid; - U8 ConfigSet; - U8 signalStrength; - U8 signalQuality; - Hash_t *pHash; - //U8 HwMicPhys[12]; // MIC valuse(8). MIC status(4) -} FrmDesc_t; - -#define MAX_COUNTRY_INFO_SIZE 50 -typedef struct BssInfo_s { - MacAddr_t bssid; - U16 bcnInterval; - U16 cap; - Element ssid; - Element supRates; - Element Phpm; - Element IbssParms; - Element erp; - Element extRates; - Element country; - U8 signalStrength; - U8 signalQuality; - U8 apMode; - U16 basicRateMap; - U16 supRateMap; -} BssInfo_t; +typedef struct TrafficMap_s +{ + U8 t[(MAX_AID/8)+1]; +} +TrafficMap_t; + + +#define RATEARRAY_NUM 16 +typedef struct Hash_s +{ + struct Hash_s *pNext; + U8 mac[6]; + StationState asoc; + StationState auth; + PsMode psm; + U16 aid; + BOOLEAN bValid; + BOOLEAN bErpSta; + BOOLEAN bJustRiseRate; + U8 lsInterval; + U8 RxRate;//entry; + U8 encryMode; + U8 keyLength; + U8 pkInstalled; + U8 ZydasMode; + U8 AlreadyIn; + U8 MaxRate; + U8 CurrTxRate; + U8 ContSuccFrames; + U8 Preamble; + U8 KeyId; + U16 iv16; + U32 iv32; + U32 ttl; + U32 SuccessFrames; + U32 FailedFrames; + U8 RateArray[RATEARRAY_NUM];// this array is the rate adaption table + U8 RateArrayCount; + U8 SupportRateArray[RATEARRAY_NUM]; + U8 SupportRateArrayCount; + U8 RiseConditionCount; + U8 DownConditionCount; + U8 keyContent[16]; + U8 wepIv[4]; + U8 vapId; + Seedvar TxSeed; + Seedvar RxSeed; + MICvar TxMicKey; + MICvar RxMicKey; +#ifdef HOSTAPD_SUPPORT + + Element WPAIE; #endif +} +Hash_t; + + +typedef struct Frame_s +{ + U16 HdrLen; + U16 bodyLen; + U8 header[32]; //include IV, eIV + U8 *body; + void *fragBuf; +} +Frame_t; + +typedef struct FrmDesc_s +{ + struct FrmDesc_s *pNext; + U8 buffer[160]; //use mbuf to send boradcast + Frame_t mpdu[MAX_FRAG_NUM]; //for fragment + BOOLEAN bValid; + U8 ConfigSet; + U8 signalStrength; + U8 signalQuality; + U8 CalMIC[MIC_LNG+1]; //1~8 for MIC, 9==TRUE ,if used. + Hash_t *pHash; + //U8 HwMicPhys[12]; // MIC valuse(8). MIC status(4) +} +FrmDesc_t; + +#define MAX_COUNTRY_INFO_SIZE 50 +typedef struct BssInfo_s +{ + MacAddr_t bssid; + U16 bcnInterval; + U16 cap; + Element ssid; + Element supRates; + Element Phpm; + Element IbssParms; + Element erp; + Element extRates; + Element country; + U8 signalStrength; + U8 signalQuality; + U8 apMode; + U16 basicRateMap; + U16 supRateMap; + U8 WPAIe[128]; + U8 RSNIe[128]; + +} +BssInfo_t; + +#endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zd1211-main.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zd1211-main.c @@ -1,2393 +1,3460 @@ -/* $Id: zd1211.c,v 1.21 2005/03/27 20:47:35 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +/* src/zd1211.c +* +* +* +* Copyright (C) 2004 ZyDAS Inc. All Rights Reserved. +* -------------------------------------------------------------------- +* +* +* +* The contents of this file are subject to the Mozilla Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/MPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* Alternatively, the contents of this file may be used under the +* terms of the GNU Public License version 2 (the "GPL"), in which +* case the provisions of the GPL are applicable instead of the +* above. If you wish to allow the use of your version of this file +* only under the terms of the GPL and not to allow others to use +* your version of this file under the MPL, indicate your decision +* by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL. If you do not delete +* the provisions above, a recipient may use your version of this +* file under either the MPL or the GPL. +* +* -------------------------------------------------------------------- */ #include #include #include #include + #include "zddebug.h" #include "zdhw.h" #include "zd1211.h" #include "zdcompat.h" -#include "zd1205.h" u8 WS11UPh[] -#include "WS11UPhR.h" +#if fMERGE_RX_FRAME + #include "WS11UPhR.h" u8 WS11UPhm[] #include "WS11UPhm.h" +#else + #include "WS11UPhm.h" +#endif + u8 WS11Ur[] #include "WS11Ur.h" + u8 WS11Ub[] #include "WS11Ub.h" -u8 WS11Ur2[(0xEE00 - 0xEC00) * 2] = { 0x0F, 0x9F, 0x00, 0xEE }; // JMP 0xEE00 + +u8 WS11Ur2[(0xEE00 - 0xEC00) * 2] = { 0x0F, 0x9F, 0x00, 0xEE }; // JMP 0xEE00 + extern zd_80211Obj_t dot11Obj; extern struct net_device *g_dev; -//Use usb_kill_urb() instead of usb_unlink_urb() in 2.6.8+ +/* ath_desc: use usb_kill_urb() instead of usb_unlink_urb() in 2.6.8+ */ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,8) -# define USB_URB(u) usb_kill_urb(u) +# define ZD_USB_KILL_URB(u) usb_kill_urb(u) #else -# define USB_URB(u) usb_unlink_urb(u) +# define ZD_USB_KILL_URB(u) usb_unlink_urb(u) +#endif + +/* ath_desc: URB_ASYNC_UNLINK has been removed in Linux 2.6.14 */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,14) +# define URB_ASYNC_UNLINK 0 #endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) /* tune me! */ -# define SUBMIT_URB(u,f) usb_submit_urb(u,f) -# define USB_ALLOC_URB(u,f) usb_alloc_urb(u,f) +# define SUBMIT_URB(u,f) usb_submit_urb(u,f) +# define USB_ALLOC_URB(u,f) usb_alloc_urb(u,f) #else -# define SUBMIT_URB(u,f) usb_submit_urb(u) -# define USB_ALLOC_URB(u,f) usb_alloc_urb(u) +# define SUBMIT_URB(u,f) usb_submit_urb(u) +# define USB_ALLOC_URB(u,f) usb_alloc_urb(u) #endif + inline void zd1211_DumpErrorCode(struct zd1205_private *macp, int err) { - switch (err) { + switch (err) + { #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - case USB_ST_CRC: - ZD1211DEBUG(0, "USB_ST_CRC\n"); - break; - - //case USB_ST_BITSTUFF: - // ZD1211DEBUG(0, "USB_ST_BITSTUFF\n"); - // break; - - //case USB_ST_NORESPONSE: - // ZD1211DEBUG(0, "USB_ST_NORESPONSE\n"); - // break; - - case USB_ST_DATAOVERRUN: - ZD1211DEBUG(0, "USB_ST_DATAOVERRUN\n"); - break; - - case USB_ST_DATAUNDERRUN: - ZD1211DEBUG(0, "USB_ST_DATAUNDERRUN\n"); - break; - - case USB_ST_BUFFEROVERRUN: - ZD1211DEBUG(0, "USB_ST_BUFFEROVERRUN\n"); - break; - - case USB_ST_BUFFERUNDERRUN: - ZD1211DEBUG(0, "USB_ST_BUFFERUNDERRUN\n"); - break; - - case USB_ST_INTERNALERROR: - ZD1211DEBUG(0, "USB_ST_INTERNALERROR\n"); - break; - - //case USB_ST_SHORT_PACKET: - // ZD1211DEBUG(0, "USB_ST_SHORT_PACKET\n"); - // break; - - case USB_ST_PARTIAL_ERROR: - ZD1211DEBUG(0, "USB_ST_PARTIAL_ERROR\n"); - break; - - case USB_ST_URB_KILLED: - ZD1211DEBUG(0, "USB_ST_URB_KILLED\n"); - break; - - case USB_ST_URB_PENDING: - ZD1211DEBUG(0, "USB_ST_URB_PENDING\n"); - break; - - case USB_ST_REMOVED: - ZD1211DEBUG(0, "USB_ST_REMOVED\n"); - break; - - case USB_ST_TIMEOUT: - ZD1211DEBUG(0, "USB_ST_TIMEOUT\n"); - break; - - case USB_ST_NOTSUPPORTED: - ZD1211DEBUG(0, "USB_ST_NOTSUPPORTED\n"); - break; - - case USB_ST_BANDWIDTH_ERROR: - ZD1211DEBUG(0, "USB_ST_BANDWIDTH_ERROR\n"); - break; - - case USB_ST_URB_INVALID_ERROR: - ZD1211DEBUG(0, "USB_ST_URB_INVALID_ERROR\n"); - break; - - case USB_ST_URB_REQUEST_ERROR: - ZD1211DEBUG(0, "USB_ST_URB_REQUEST_ERROR\n"); - break; - - case USB_ST_STALL: - ZD1211DEBUG(0, "USB_ST_STALL\n"); - break; - - case -ENOMEM: - ZD1211DEBUG(0, "ENOMEM\n"); - break; -#endif - - default: - printk("USB ST Code = %d\n", err); - break; - } + case USB_ST_CRC: + ZD1211DEBUG(0, "USB_ST_CRC\n"); + break; + + //case USB_ST_BITSTUFF: + //ZD1211DEBUG(0, "USB_ST_BITSTUFF\n"); + //break; + + //case USB_ST_NORESPONSE: + //ZD1211DEBUG(0, "USB_ST_NORESPONSE\n"); + //break; + + case USB_ST_DATAOVERRUN: + ZD1211DEBUG(0, "USB_ST_DATAOVERRUN\n"); + break; + + case USB_ST_DATAUNDERRUN: + ZD1211DEBUG(0, "USB_ST_DATAUNDERRUN\n"); + break; + + case USB_ST_BUFFEROVERRUN: + ZD1211DEBUG(0, "USB_ST_BUFFEROVERRUN\n"); + break; + + case USB_ST_BUFFERUNDERRUN: + ZD1211DEBUG(0, "USB_ST_BUFFERUNDERRUN\n"); + break; + + case USB_ST_INTERNALERROR: + ZD1211DEBUG(0, "USB_ST_INTERNALERROR\n"); + break; + + //case USB_ST_SHORT_PACKET: + //ZD1211DEBUG(0, "USB_ST_SHORT_PACKET\n"); + //break; + + case USB_ST_PARTIAL_ERROR: + ZD1211DEBUG(0, "USB_ST_PARTIAL_ERROR\n"); + break; + + case USB_ST_URB_KILLED: + ZD1211DEBUG(0, "USB_ST_URB_KILLED\n"); + break; + + case USB_ST_URB_PENDING: + ZD1211DEBUG(0, "USB_ST_URB_PENDING\n"); + break; + + case USB_ST_REMOVED: + ZD1211DEBUG(0, "USB_ST_REMOVED\n"); + break; + + case USB_ST_TIMEOUT: + ZD1211DEBUG(0, "USB_ST_TIMEOUT\n"); + break; + + case USB_ST_NOTSUPPORTED: + ZD1211DEBUG(0, "USB_ST_NOTSUPPORTED\n"); + break; + + + + + + case USB_ST_BANDWIDTH_ERROR: + ZD1211DEBUG(0, "USB_ST_BANDWIDTH_ERROR\n"); + break; + + case USB_ST_URB_INVALID_ERROR: + ZD1211DEBUG(0, "USB_ST_URB_INVALID_ERROR\n"); + break; + + case USB_ST_URB_REQUEST_ERROR: + ZD1211DEBUG(0, "USB_ST_URB_REQUEST_ERROR\n"); + break; + + case USB_ST_STALL: + ZD1211DEBUG(0, "USB_ST_STALL\n"); + break; + + case -ENOMEM: + ZD1211DEBUG(0, "ENOMEM\n"); + break; +#endif + + default: + ZD1211DEBUG(0, "USB ST Code = %d\n",err); + + break; + } + /* ath_desc: reenable iwpriv dbg_flag */ + /* ath_old: macp->dbg_flag=0; */ + /* do not reset dbg_flag on USB error */ + } + void zd1211_DumpReadMultipleReg(struct zd1205_private *macp, u16 adr0) { - u16 ReadAddr[cMAX_MULTI_READ_REG_NUM]; - u16 ReadData[cMAX_MULTI_READ_REG_NUM]; - u16 ReadIndex = 0; + u16 ReadAddr[cMAX_MULTI_READ_REG_NUM]; + u16 ReadData[cMAX_MULTI_READ_REG_NUM]; + u16 ReadIndex = 0; + + FPRINT_V("adr0", adr0); + + for (ReadIndex = 0; ReadIndex < cMAX_MULTI_READ_REG_NUM;) - FPRINT_V("adr0", adr0); - for (ReadIndex = 0; ReadIndex < cMAX_MULTI_READ_REG_NUM;) - mFILL_READ_REGISTER(adr0++); - zd1211_USB_PACKAGE_READ_REGISTER(ReadAddr, ReadData, ReadIndex, false); + mFILL_READ_REGISTER(adr0++); - for (ReadIndex = 0; ReadIndex < 8; ReadIndex ++) - printk("%04X, ", ReadData[ReadIndex]); + zd1211_USB_PACKAGE_READ_REGISTER(ReadAddr, ReadData, ReadIndex, false); - printk("\n"); - printk(" "); + for (ReadIndex = 0; ReadIndex < 8; ReadIndex ++) + printk("%04X, ", ReadData[ReadIndex]); - for (; ReadIndex < cMAX_MULTI_READ_REG_NUM; ReadIndex ++) - printk("%04X, ", ReadData[ReadIndex]); - printk("\n"); + printk("\n"); + printk(" "); + + for (; ReadIndex < cMAX_MULTI_READ_REG_NUM; ReadIndex ++) + printk("%04X, ", ReadData[ReadIndex]); + printk("\n"); } + + // len0: in word, adr: word offset void zd1211_WriteEEPROM(struct zd1205_private *macp, u16 rom_adr, u16 ram_adr, u16 len0) { - u32 tmpvalue; - u16 WriteAddr[cMAX_MULTI_WRITE_REG_NUM]; - u16 WriteData[cMAX_MULTI_WRITE_REG_NUM]; - u16 WriteIndex = 0; - - tmpvalue = zd1211_readl(ZD1211_CLOCK_CTRL, false); - mFILL_WRITE_REGISTER(ZD1211_CLOCK_CTRL, mSET_BIT((u16) tmpvalue, bZD1211_CLOCK_EEPROM)); - mFILL_WRITE_REGISTER(UMAC_EPROM_ROM_ADDR, rom_adr); - mFILL_WRITE_REGISTER(UMAC_EPROM_RAM_ADDR, ram_adr); - mFILL_WRITE_REGISTER(UMAC_EPROM_DMA_LEN_DIR, bmEPROM_XFER_DIR | len0); - mFILL_WRITE_REGISTER(ZD1211_CLOCK_CTRL, mCLR_BIT((u16) tmpvalue, bZD1211_CLOCK_EEPROM)); - zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); + u32 tmpvalue; + u16 WriteAddr[cMAX_MULTI_WRITE_REG_NUM]; + u16 WriteData[cMAX_MULTI_WRITE_REG_NUM]; + u16 WriteIndex = 0; + + tmpvalue = zd1211_readl(ZD1211_CLOCK_CTRL, false); + mFILL_WRITE_REGISTER(ZD1211_CLOCK_CTRL, mSET_BIT((u16) tmpvalue, bZD1211_CLOCK_EEPROM)); + mFILL_WRITE_REGISTER(UMAC_EPROM_ROM_ADDR, rom_adr); + mFILL_WRITE_REGISTER(UMAC_EPROM_RAM_ADDR, ram_adr); + mFILL_WRITE_REGISTER(UMAC_EPROM_DMA_LEN_DIR, bmEPROM_XFER_DIR | len0); + mFILL_WRITE_REGISTER(ZD1211_CLOCK_CTRL, mCLR_BIT((u16) tmpvalue, bZD1211_CLOCK_EEPROM)); + zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); } + +#if fMERGE_RX_FRAME int zd1211_ChangeToFlashAble(struct zd1205_private *macp) { - u32 tmpvalue; - - if (!macp->bFlashable) { - int LoadRet; - zd_writel(0x01, FW_SOFT_RESET); - macp->bDisableTx = 1; - //USB_StopTxEP(macp); - - macp->bAllowAccessRegister = 0; - - LoadRet = zd1211_LoadUSBSpecCode(macp, WS11UPhm, - sizeof(WS11UPhm), cFIRMWARE_START_ADDR, true); - if (LoadRet) { - FPRINT("Load WS11UPhm fail"); - return 1; - } - - ZD1211DEBUG(0, "Load WS11UPhm Done\n"); - - //macp->bAllowAccessRegister = 1; - macp->bFlashable = 1; - - // Must get this information before any register write - tmpvalue = zd1211_readl(cADDR_ENTRY_TABLE, FALSE); - macp->AddrEntryTable = (u16) tmpvalue; - } - return 0; -} - -int zd1211_UpdateBootCode(struct zd1205_private *macp, u16 *pCheckSum, u16 *pEEPROMData, u32 EEPROMLen) -{ - u32 i; - //int ret; - u16 WriteAddr[cMAX_MULTI_WRITE_REG_NUM]; - u16 WriteData[cMAX_MULTI_WRITE_REG_NUM]; - u16 WriteIndex = 0; - u16 ROMBufAdr = cBOOTCODE_START_ADDR; - ZD1211DEBUG(0, "UpdateBootCode\n"); - - for (i=0; i= cINT_VECT_ADDR) { - FPRINT("Exceed max address"); - break; - } - mFILL_WRITE_REGISTER(ROMBufAdr ++,pEEPROMData[WriteIndex * 2] | (pEEPROMData[WriteIndex * 2 + 1] << 8)); - } - - if (WriteIndex) - zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); - - if (ROMBufAdr >= cINT_VECT_ADDR) { - FPRINT("Exceed max address1"); - return 0; - } - - pEEPROMData += WRITE_WORD_TO_EEPROM_PER_TIME; - } - - if (EEPROMLen % (2*WRITE_WORD_TO_EEPROM_PER_TIME)) { - for (WriteIndex = 0; WriteIndex < (EEPROMLen % (2 * WRITE_WORD_TO_EEPROM_PER_TIME)) / 2;) { - if (ROMBufAdr >= cINT_VECT_ADDR) { - FPRINT("Exceed max address2"); - break; - } - mFILL_WRITE_REGISTER(ROMBufAdr ++,pEEPROMData[WriteIndex * 2] | (pEEPROMData[WriteIndex * 2 + 1] << 8)); - } - if (WriteIndex) - zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); - } - return 0; -} - -int zd1211_USB_Write_EEPROM(struct zd1205_private *macp, u16 *pEEPROMData, u32 EEPROMLen) -{ - u16 CheckSum = 0; - int ret; - - ZD1211DEBUG(0, "USB_Write_EEPROM\n"); - macp->bDisableTx = 1; - - //USB_StopTxEP(macp); - - ret = zd1211_UpdateBootCode(macp, &CheckSum, pEEPROMData, EEPROMLen); - if (ret != 0) - return ret; - - zd1211_WriteEEPROM(macp, 0, cBOOTCODE_START_ADDR, cEEPROM_SIZE - cLOAD_VECT_LEN); - //macp->bDisableTx = 0; - return 0; + u32 tmpvalue; + + if (!macp->bFlashable) + { + int LoadRet; + + zd_writel(0x01, FW_SOFT_RESET); + + macp->bDisableTx = 1; + //USB_StopTxEP(macp); + + macp->bAllowAccessRegister = 0; + + LoadRet = zd1211_LoadUSBSpecCode(macp, WS11UPhm, sizeof(WS11UPhm), + cFIRMWARE_START_ADDR, true); + if (LoadRet) { + FPRINT("Load WS11UPhm fail"); + return 1; + } + + ZD1211DEBUG(0, "Load WS11UPhm Done\n"); + + //macp->bAllowAccessRegister = 1; + macp->bFlashable = 1; + +#if fWRITE_WORD_REG || fREAD_MUL_REG + // Must get this information before any register write + tmpvalue = zd1211_readl(cADDR_ENTRY_TABLE, FALSE); + macp->AddrEntryTable = (u16) tmpvalue; +#endif + + } + + return 0; +} +#endif + + +int zd1211_UpdateBootCode(struct zd1205_private *macp, u16 *pCheckSum, u16 *pEEPROMData, + u32 EEPROMLen) +{ + u32 i; + //int ret; + u16 WriteAddr[cMAX_MULTI_WRITE_REG_NUM]; + u16 WriteData[cMAX_MULTI_WRITE_REG_NUM]; + u16 WriteIndex = 0; + u16 ROMBufAdr = cBOOTCODE_START_ADDR; + + ZD1211DEBUG(0, "UpdateBootCode\n"); + + for (i=0; i= cINT_VECT_ADDR) { + FPRINT("Exceed max address"); + break; + } + /* ath: fixed ambiguous statement */ + WriteValue = pEEPROMData[WriteIndex * 2] | (pEEPROMData[WriteIndex * 2 + 1] << 8); + mFILL_WRITE_REGISTER(ROMBufAdr ++, WriteValue); + } + + if (WriteIndex) + zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); + + if (ROMBufAdr >= cINT_VECT_ADDR) { + FPRINT("Exceed max address1"); + return 0; + } + + pEEPROMData += WRITE_WORD_TO_EEPROM_PER_TIME; + } + + if (EEPROMLen % (2*WRITE_WORD_TO_EEPROM_PER_TIME)) + { + for (WriteIndex = 0; WriteIndex < (EEPROMLen % (2 * WRITE_WORD_TO_EEPROM_PER_TIME)) / 2;) { + u16 WriteValue; + if (ROMBufAdr >= cINT_VECT_ADDR) { + FPRINT("Exceed max address2"); + break; + } + /* ath: fixed ambiguous statement */ + WriteValue = pEEPROMData[WriteIndex * 2] | (pEEPROMData[WriteIndex * 2 + 1] << 8); + mFILL_WRITE_REGISTER(ROMBufAdr ++, WriteValue); + + } + + if (WriteIndex) + zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); + } + + return 0; +} + + + + +int zd1211_USB_Write_EEPROM(struct zd1205_private *macp, u16 *pEEPROMData, u32 EEPROMLen) //in bytes +{ + u16 CheckSum = 0; + int ret; + + ZD1211DEBUG(0, "USB_Write_EEPROM\n"); + + macp->bDisableTx = 1; + + //USB_StopTxEP(macp); + + ret = zd1211_UpdateBootCode(macp, &CheckSum, pEEPROMData, EEPROMLen); + if (ret != 0) + return ret; + + zd1211_WriteEEPROM(macp, 0, cBOOTCODE_START_ADDR, cEEPROM_SIZE - cLOAD_VECT_LEN); + //macp->bDisableTx = 0; + + return 0; + } + + int zd1211_USB_WRITE_EEPROM_DATA(struct zd1205_private *macp, PUSB_EEPROM_DATA pData, int DataLen) { - int ret; - u8 *pBuffer; - //int memflags = GFP_KERNEL; - ZD1211DEBUG(0, "USB_WRITE_EEPROM_DATA\n"); - - if (!macp->bUSBDeveiceAttached) - return 1; - - down(&macp->reg_sem); - - pBuffer = kmalloc(DataLen, GFP_KERNEL); - if (!pBuffer) { - up(&macp->reg_sem); - return -ENOMEM; - } else - memcpy(pBuffer, (u8 *)pData, DataLen); - - if (macp->ep4isIntOut) { - usb_fill_int_urb(macp->reg_urb, macp->usb,usb_sndintpipe(macp->usb, EP_REG_OUT),pBuffer, DataLen, zd1211_reg_cb, macp, 1); - } else { - usb_fill_bulk_urb(macp->reg_urb, macp->usb,usb_sndbulkpipe(macp->usb, EP_REG_OUT),pBuffer, DataLen,zd1211_reg_cb, macp); - } - /* macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK; */ - - if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) { - printk(KERN_ERR "zd1211: failed reg_urb\n"); - zd1211_DumpErrorCode(macp, ret); - goto out; - } - wait_event(macp->regSet_wait, test_bit(ZD1211_CMD_FINISH, &macp->flags)); - clear_bit(ZD1211_CMD_FINISH, &macp->flags); + int ret; + u8 *pBuffer; + //int memflags = GFP_KERNEL; + + ZD1211DEBUG(0, "USB_WRITE_EEPROM_DATA\n"); + + if (!macp->bUSBDeveiceAttached) + { + return 1; + } + + down(&macp->reg_sem); + + pBuffer = kmalloc(DataLen, GFP_KERNEL); + + if (!pBuffer) + { + up(&macp->reg_sem); + return -ENOMEM; + } else + memcpy(pBuffer, (u8 *)pData, DataLen); + + if (macp->ep4isIntOut) + usb_fill_int_urb(macp->reg_urb, macp->usb, + usb_sndintpipe(macp->usb, EP_REG_OUT), + pBuffer, DataLen, + zd1211_reg_cb, macp, 1); + else + usb_fill_bulk_urb(macp->reg_urb, macp->usb, + usb_sndbulkpipe(macp->usb, EP_REG_OUT), + pBuffer, DataLen, + zd1211_reg_cb, macp); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)) + + macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK; +#endif + + if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) + { + printk(KERN_ERR "zd1211: failed reg_urb\n"); + zd1211_DumpErrorCode(macp, ret); + goto out; + } + + wait_event(macp->regSet_wait, test_bit(ZD1211_CMD_FINISH, &macp->flags)); + clear_bit(ZD1211_CMD_FINISH, &macp->flags); out: - kfree(pBuffer); - up(&macp->reg_sem); - return ret; + kfree(pBuffer); + up(&macp->reg_sem); + return ret; } #if fPROG_FLASH_BY_FW int zd1211_USB_ProgramFlash(struct zd1205_private *macp, u16 *Value, u16 RegCount) { - u8 *pRegBuffer = NULL; - int ret; - u16 size = sizeof(USB_WRITE_REG); - u16 bufSize; - int ii; - int memflags = GFP_KERNEL; - ZD1211DEBUG(0, "USB_ProgramFlash\n"); - if ((RegCount == 0) || (!macp->bUSBDeveiceAttached)) - return 0; - down(&macp->reg_sem); - pRegBuffer = kmalloc(size, GFP_KERNEL); - if (!pRegBuffer) { - up(&macp->reg_sem); - return -ENOMEM; - } else - memset(pRegBuffer, 0x0, size); - - ((PUSB_WRITE_REG)pRegBuffer)->RequestID = cpu_to_le16(REGID_PROG_FLSH); - ((PUSB_SET_RF) pRegBuffer)->Value = cpu_to_le16(Value[0]); - ((PUSB_SET_RF) pRegBuffer)->Index = cpu_to_le16(Value[1]); - - for (ii = 2; ii < RegCount; ii ++) - ((PUSB_SET_RF)pRegBuffer)->Data[ii - 2] = cpu_to_le16(Value[ii]); - bufSize = sizeof(u16) * (1+RegCount); - - if (macp->ep4isIntOut) { - usb_fill_int_urb(macp->reg_urb, macp->usb,usb_sndintpipe(macp->usb, EP_REG_OUT),pRegBuffer, bufSize,zd1211_reg_cb, macp, 1); - } else { - usb_fill_bulk_urb(macp->reg_urb, macp->usb,usb_sndbulkpipe(macp->usb, EP_REG_OUT),pRegBuffer, bufSize,zd1211_reg_cb, macp); - } - /* macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK; */ - if ((ret = SUBMIT_URB(macp->reg_urb, memflags))) { - printk(KERN_ERR "zd1211: failed reg_urb\n"); - zd1211_DumpErrorCode(macp, ret); - goto out; - } - wait_event(macp->regSet_wait, test_bit(ZD1211_CMD_FINISH, &macp->flags)); - clear_bit(ZD1211_CMD_FINISH, &macp->flags); + u8 *pRegBuffer = NULL; + + int ret; + u16 size = sizeof(USB_WRITE_REG); + + u16 bufSize; + int ii; + + ZD1211DEBUG(0, "USB_ProgramFlash\n"); + + if ((RegCount == 0) || (!macp->bUSBDeveiceAttached)) + return 0; + + down(&macp->reg_sem); + pRegBuffer = kmalloc(size, GFP_KERNEL); + + if (!pRegBuffer) + { + up(&macp->reg_sem); + return -ENOMEM; + } else + memset(pRegBuffer, 0x0, size); + + /* ath_desc: bigendian support */ + ((PUSB_WRITE_REG)pRegBuffer)->RequestID = cpu_to_le16(REGID_PROG_FLSH); + ((PUSB_SET_RF) pRegBuffer)->Value = cpu_to_le16(Value[0]); + ((PUSB_SET_RF) pRegBuffer)->Index = cpu_to_le16(Value[1]); + + for (ii = 2; ii < RegCount; ii ++) + ((PUSB_SET_RF)pRegBuffer)->Data[ii - 2] = cpu_to_le16(Value[ii]); + + bufSize = sizeof(u16) * (1+RegCount); + + if (macp->ep4isIntOut) + usb_fill_int_urb(macp->reg_urb, macp->usb, + usb_sndintpipe(macp->usb, EP_REG_OUT), + pRegBuffer, bufSize, + zd1211_reg_cb, macp, 1); + else + usb_fill_bulk_urb(macp->reg_urb, macp->usb, + usb_sndbulkpipe(macp->usb, EP_REG_OUT), + pRegBuffer, bufSize, + zd1211_reg_cb, macp); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)) + + macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK; +#endif + + if ((ret = SUBMIT_URB(macp->reg_urb, GFP_KERNEL))) + { + printk(KERN_ERR "zd1211: failed reg_urb\n"); + zd1211_DumpErrorCode(macp, ret); + goto out; + } + + wait_event(macp->regSet_wait, test_bit(ZD1211_CMD_FINISH, &macp->flags)); + clear_bit(ZD1211_CMD_FINISH, &macp->flags); out: - kfree(pRegBuffer); - up(&macp->reg_sem); - return ret; + kfree(pRegBuffer); + up(&macp->reg_sem); + return ret; } #endif + // return 0: success int zd1211_USB_PACKAGE_READ_REGISTER(u16 *Address, u16 *pValue, u16 RegCount, u8 bAddUSBCSRAddress) { - struct zd1205_private *macp = g_dev->priv; - u8 *pRegBuffer = NULL; - int ret = 0; - u16 size = sizeof(USB_READ_REG_REQ); - u16 bufSize; - int i, ii; - //int memflags = GFP_KERNEL; + struct zd1205_private *macp = g_dev->priv; + u8 *pRegBuffer = NULL; + int ret = 0; + u16 size = sizeof(USB_READ_REG_REQ); + u16 bufSize; + int ii; + //int memflags = GFP_KERNEL; #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - if (in_interrupt()) { + + if (in_interrupt()) { +#else + + if (in_atomic()) { +#endif + printk(KERN_ERR "********zd1211_USB_PACKAGE_READ_REGISTER in_interrupt*********\n"); + return 0; + } + down(&macp->reg_sem); + + if ((RegCount == 0) || (!macp->bUSBDeveiceAttached) || (!test_bit(ZD1211_RUNNING, &macp->flags))) { + up(&macp->reg_sem); + return 0; + } + + pRegBuffer = kmalloc(size, GFP_KERNEL); + + if (!pRegBuffer) { + up(&macp->reg_sem); + return -ENOMEM; + } else + memset(pRegBuffer, 0x0, size); + + ((PUSB_READ_REG_REQ)pRegBuffer)->RequestID = cpu_to_le16(REGID_READ); + + for (ii = 0; ii < RegCount; ii ++) { + if ((Address[ii] & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_HOST) + Address[ii] = Address[ii] - USB_BASE_ADDR_HOST + macp->AddrEntryTable; + else if ((Address[ii] & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_EEPROM) + Address[ii] = ((Address[ii] - USB_BASE_ADDR_EEPROM) / 2) + cFIRMWARE_EEPROM_OFFSET; + //0x9900 //0xF817 + ((PUSB_READ_REG_REQ) pRegBuffer)->Address[ii] = cpu_to_le16(Address[ii]); + } + + bufSize = sizeof(u16) * (1+RegCount); + + if (macp->ep4isIntOut) + usb_fill_int_urb(macp->reg_urb, macp->usb, + usb_sndintpipe(macp->usb, EP_REG_OUT), + pRegBuffer, bufSize, + zd1211_reg_cb, macp, 1); + else + usb_fill_bulk_urb(macp->reg_urb, macp->usb, + usb_sndbulkpipe(macp->usb, EP_REG_OUT), + pRegBuffer, bufSize, + zd1211_reg_cb, macp); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)) + + macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK; +#endif + + if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) { + printk(KERN_ERR "zd1211: failed reg_urb\n"); + zd1211_DumpErrorCode(macp, ret); + up(&macp->reg_sem); + kfree(pRegBuffer); + return ret; + } + + //wait command complete + macp->regWaitRCompCnt++; + //printk(KERN_ERR "before wait 4\n"); + wait_event(macp->regSet_wait, test_bit(ZD1211_CMD_FINISH, &macp->flags)); + //printk(KERN_ERR "after wait 4\n"); + macp->regRWCompCnt++; + + clear_bit(ZD1211_CMD_FINISH, &macp->flags); + kfree(pRegBuffer); + + if (ret != 0) + goto out; + + //wait response complete + macp->regWaitRspCnt++; + +#if 0//(LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) + + if (wait_event_interruptible_timeout(macp->iorwRsp_wait, test_bit(ZD1211_REQ_COMP, &macp->flags), HZ/2)) { //use it, we may can't wake up + + //interrupt by a signal + memset(macp->IntEPBuffer, 0, MAX_EPINT_BUFFER); + macp->regUnCompCnt++; + ret = -ERESTARTSYS; + goto out; + } else + macp->regRspCompCnt++; +#else +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) + + interruptible_sleep_on_timeout(&macp->iorwRsp_wait, 1); //magic delay #else - if (in_atomic()) { + + interruptible_sleep_on_timeout(&macp->iorwRsp_wait, 1); //magic delay #endif - FPRINT("********zd1211_USB_PACKAGE_READ_REGISTER in_interrupt*********"); - return 0; - } - down(&macp->reg_sem); - if ((RegCount == 0) || (!macp->bUSBDeveiceAttached) || (!test_bit(ZD1211_RUNNING, &macp->flags))) { - up(&macp->reg_sem); - return 0; - } - - pRegBuffer = kmalloc(size, GFP_KERNEL); - if (!pRegBuffer) { - up(&macp->reg_sem); - return -ENOMEM; - } else - memset(pRegBuffer, 0x0, size); - ((PUSB_READ_REG_REQ)pRegBuffer)->RequestID = cpu_to_le16(REGID_READ); - - for (ii = 0; ii < RegCount; ii ++) { - if ((Address[ii] & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_HOST) { - Address[ii] = Address[ii] - USB_BASE_ADDR_HOST + macp->AddrEntryTable; - } else if ((Address[ii] & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_EEPROM) - Address[ii] = ((Address[ii] - USB_BASE_ADDR_EEPROM) / 2) + cFIRMWARE_EEPROM_OFFSET; - //0x9900 //0xF817 - ((PUSB_READ_REG_REQ) pRegBuffer)->Address[ii] = cpu_to_le16(Address[ii]); - } - bufSize = sizeof(u16) * (1+RegCount); - - if (macp->ep4isIntOut) { - usb_fill_int_urb(macp->reg_urb, macp->usb,usb_sndintpipe(macp->usb, EP_REG_OUT),pRegBuffer, bufSize, zd1211_reg_cb, macp, 1); - } else { - usb_fill_bulk_urb(macp->reg_urb, macp->usb,usb_sndbulkpipe(macp->usb, EP_REG_OUT),pRegBuffer, bufSize,zd1211_reg_cb, macp); - } - /* macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK; */ - - if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) { - printk(KERN_ERR "zd1211: failed reg_urb\n"); - zd1211_DumpErrorCode(macp, ret); - up(&macp->reg_sem); - kfree(pRegBuffer); - return ret; - } - - //wait command complete - macp->regWaitRCompCnt++; - wait_event(macp->regSet_wait, test_bit(ZD1211_CMD_FINISH, &macp->flags)); - macp->regRWCompCnt++; - - clear_bit(ZD1211_CMD_FINISH, &macp->flags); - kfree(pRegBuffer); - - if (ret != 0) - goto out; - - //wait response complete - macp->regWaitRspCnt++; - - interruptible_sleep_on_timeout(&macp->iorwRsp_wait, HZ/40); //magic delay - if (!test_bit(ZD1211_REQ_COMP, &macp->flags)) { - // check if Rsp has completed, race condition may happen, - macp->regRdSleepCnt++; - // we waste time_out time - interruptible_sleep_on_timeout(&macp->iorwRsp_wait, HZ/2); - } - - // wake up, check if timeout or ompleted - if (test_bit(ZD1211_REQ_COMP, &macp->flags)) - macp->regRspCompCnt++; - else { - memset(macp->IntEPBuffer, 0x0, MAX_EPINT_BUFFER); - macp->regUnCompCnt++; - goto out; - } - - // Get data - if ((macp->ReadRegCount == 0) || (macp->ReadRegCount > MAX_EPINT_BUFFER)) { - ret = 1; - } else { - for (ii = 0; ii < (macp->ReadRegCount-2) / 4; ii++) { - pValue[ii] = le16_to_cpu(*((u16 *) macp->IntEPBuffer2 + 1 + ii * 2 + 1)); - } - ret = 0; - } + + //interruptible_sleep_on_timeout(&macp->iorwRsp_wait, HZ/40); //magic delay + if (!test_bit(ZD1211_REQ_COMP, &macp->flags)) { + //check if Rsp has completed, race condition may happen, + macp->regRdSleepCnt++; + //we waste time_out time + //printk(KERN_ERR "before wait 2\n"); + interruptible_sleep_on_timeout(&macp->iorwRsp_wait, HZ/10); + //wake up, check if timeout or ompleted + + } + if (test_bit(ZD1211_REQ_COMP, &macp->flags)) + macp->regRspCompCnt++; + else { + memset(macp->IntEPBuffer, 0x0, MAX_EPINT_BUFFER); + macp->regUnCompCnt++; + ret = -1; + goto out; + } +#endif + + // Get data + if ((macp->ReadRegCount == 0) || (macp->ReadRegCount > MAX_EPINT_BUFFER)) { + ret = 1; + } else { + for (ii = 0; ii < (macp->ReadRegCount-2) / 4; ii++) { + pValue[ii] = cpu_to_le16(*((u16 *) macp->IntEPBuffer2 + 1 + ii * 2 + 1)); + } + ret = 0; + } + out: - clear_bit(ZD1211_REQ_COMP, &macp->flags); - up(&macp->reg_sem); - return ret; -} - -u32 zd1211_readl(u32 Address, u8 bAddUSBCSRAddress) -{ - struct zd1205_private *macp = g_dev->priv; - u16 ReadAddr[2]; - u16 ReadData[2]; - int bRet = 1; - u32 value; - int count = 0; - - if (bAddUSBCSRAddress) { - Address += macp->USBCSRAddress; - if ((Address & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_HOST) - ReadAddr[1] = (u16) Address + 1; - else - ReadAddr[1] = (u16) Address + 2; - } else - ReadAddr[1] = (u16) Address + 1; - ReadAddr[0] = (u16) Address; // Read Low Word first - - while (bRet != 0) { - bRet = zd1211_USB_PACKAGE_READ_REGISTER(ReadAddr, ReadData, 2, false); - count++; - if (count > 5) { - FPRINT("zd1211_readl failed"); - break; - } - } - value = (((u32) ReadData[1]) << 16) + ReadData[0]; - return value; + clear_bit(ZD1211_REQ_COMP, &macp->flags); + up(&macp->reg_sem); + return ret; +} + +u32 zd1211_readl(u32 Address, u8 bAddUSBCSRAddress) { + struct zd1205_private *macp = g_dev->priv; + + u16 ReadAddr[2]; + u16 ReadData[2]; + int bRet = 1; + u32 value; + int count = 0; + + if (bAddUSBCSRAddress) { + Address += macp->USBCSRAddress; + + if ((Address & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_HOST) + ReadAddr[1] = (u16) Address + 1; + else + ReadAddr[1] = (u16) Address + 2; + } else + ReadAddr[1] = (u16) Address + 1; + + ReadAddr[0] = (u16) Address; // Read Low Word first + + while (bRet != 0) { + bRet = zd1211_USB_PACKAGE_READ_REGISTER(ReadAddr, ReadData, 2, false); + count++; + + if (count > 5) { + printk(KERN_ERR "1211_readl failed for 5 attempts...Very Serious"); + break; + } + } + + value = (((u32) ReadData[1]) << 16) + ReadData[0]; + return value; } //return 0: success -int zd1211_USB_PACKAGE_WRITE_REGISTER(u16 *Address, u16 *Value, u16 RegCount, u8 bAddUSBCSRAddress) -{ - struct zd1205_private *macp = g_dev->priv; - u8 *pRegBuffer = NULL; - int ret; - u16 size = sizeof(USB_WRITE_REG); - u16 bufSize; - int i; - int memflags = GFP_KERNEL; +int zd1211_USB_PACKAGE_WRITE_REGISTER(u16 *Address, u16 *Value, u16 RegCount, u8 bAddUSBCSRAddress) { + struct zd1205_private *macp = g_dev->priv; + u8 *pRegBuffer = NULL; + int ret; + u16 size = sizeof(USB_WRITE_REG); + u16 bufSize; + int i; + #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - if (in_interrupt()) { + + if (in_interrupt()) { #else - if (in_atomic()) { + if (in_atomic()) { #endif - FPRINT("********zd1211_USB_PACKAGE_WRITE_REGISTER in_interrupt*********"); - return 0; - } - down(&macp->reg_sem); - - if ((RegCount == 0) || (!macp->bUSBDeveiceAttached) || !test_bit(ZD1211_RUNNING, &macp->flags)) { - up(&macp->reg_sem); - return 0; - } - - pRegBuffer = kmalloc(size, GFP_KERNEL); - if (!pRegBuffer) { - up(&macp->reg_sem); - return -ENOMEM; - } else - memset(pRegBuffer, 0x0, size); - - ((PUSB_WRITE_REG)pRegBuffer)->RequestID = cpu_to_le16(REGID_WRITE); - - if (RegCount > cMIN_MULTI_WRITE_REG_NUM) { - for (i=cMIN_MULTI_WRITE_REG_NUM; iUSBCSRAddress; - if ((Address[i] & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_HOST) { - Address[i] = Address[i] - USB_BASE_ADDR_HOST + macp->AddrEntryTable; - } else if ((Address[i] & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_EEPROM) - Address[i] = ((Address[i] - USB_BASE_ADDR_EEPROM) / 2) + cFIRMWARE_EEPROM_OFFSET; - - ((PUSB_WRITE_REG)pRegBuffer)->WritePackage[i].Address = cpu_to_le16(Address[i]); - ((PUSB_WRITE_REG)pRegBuffer)->WritePackage[i].WriteData_low = cpu_to_le16(Value[i]); - } - } - - bufSize = sizeof(u16) * (1+RegCount*2); - - if (macp->ep4isIntOut) { - usb_fill_int_urb(macp->reg_urb, macp->usb,usb_sndintpipe(macp->usb, EP_REG_OUT),pRegBuffer, bufSize, zd1211_reg_cb, macp, 1); - } else { - usb_fill_bulk_urb(macp->reg_urb, macp->usb,usb_sndbulkpipe(macp->usb, EP_REG_OUT),pRegBuffer, bufSize,zd1211_reg_cb, macp); - } - - /* macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK; */ - if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) { - printk(KERN_ERR "zd1211: failed reg_urb\n"); - zd1211_DumpErrorCode(macp, ret); - goto out; - } - - macp->regWaitWCompCnt++; - wait_event(macp->regSet_wait, test_bit(ZD1211_CMD_FINISH, &macp->flags)); - macp->regRWCompCnt++; - clear_bit(ZD1211_CMD_FINISH, &macp->flags); + FPRINT("********zd1211_USB_PACKAGE_WRITE_REGISTER in_interrupt*********"); + return 0; + } + + down(&macp->reg_sem); + + if ((RegCount == 0) || (!macp->bUSBDeveiceAttached) || !test_bit(ZD1211_RUNNING, &macp->flags)) { + up(&macp->reg_sem); + return 0; + } + + pRegBuffer = kmalloc(size, GFP_KERNEL); + if (!pRegBuffer) { + up(&macp->reg_sem); + return -ENOMEM; + } else + memset(pRegBuffer, 0x0, size); + + ((PUSB_WRITE_REG)pRegBuffer)->RequestID = cpu_to_le16(REGID_WRITE); + + if (RegCount > cMIN_MULTI_WRITE_REG_NUM) { + for (i=cMIN_MULTI_WRITE_REG_NUM; iUSBCSRAddress; + + if ((Address[i] & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_HOST) + Address[i] = Address[i] - USB_BASE_ADDR_HOST + macp->AddrEntryTable; + else if ((Address[i] & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_EEPROM) + Address[i] = ((Address[i] - USB_BASE_ADDR_EEPROM) / 2) + cFIRMWARE_EEPROM_OFFSET; + + ((PUSB_WRITE_REG)pRegBuffer)->WritePackage[i].Address = cpu_to_le16(Address[i]); + ((PUSB_WRITE_REG)pRegBuffer)->WritePackage[i].WriteData_low = cpu_to_le16(Value[i]); + } + } + + bufSize = sizeof(u16) * (1+RegCount*2); + + if (macp->ep4isIntOut) + usb_fill_int_urb(macp->reg_urb, macp->usb, + usb_sndintpipe(macp->usb, EP_REG_OUT), + pRegBuffer, bufSize, + zd1211_reg_cb, macp, 1); + else + usb_fill_bulk_urb(macp->reg_urb, macp->usb, + usb_sndbulkpipe(macp->usb, EP_REG_OUT), + pRegBuffer, bufSize, + zd1211_reg_cb, macp); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)) + + macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK; +#endif + + if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) { + printk(KERN_ERR "zd1211: failed reg_urb\n"); + zd1211_DumpErrorCode(macp, ret); + goto out; + } + + macp->regWaitWCompCnt++; + wait_event(macp->regSet_wait, test_bit(ZD1211_CMD_FINISH, &macp->flags)); + + macp->regRWCompCnt++; + clear_bit(ZD1211_CMD_FINISH, &macp->flags); out: - kfree(pRegBuffer); - up(&macp->reg_sem); - return ret; -} - -int zd1211_WriteMultiRegister(u16 *Address, u16 *Value, u16 RegCount, u8 bAddUSBCSRAddress) -{ - int ret = 1; - int count = 0; - while (ret != 0) { - ret = zd1211_USB_PACKAGE_WRITE_REGISTER(Address, Value, RegCount, bAddUSBCSRAddress); - count++; - if (count > 5) { - FPRINT("zd1211_WriteMultiRegister failed"); - break; - } - } - return ret; + kfree(pRegBuffer); + up(&macp->reg_sem); + return ret; +} + +int zd1211_WriteMultiRegister(u16 *Address, u16 *Value, u16 RegCount, u8 bAddUSBCSRAddress) { + int ret = 1; + int count = 0; + + while (ret != 0) { + ret = zd1211_USB_PACKAGE_WRITE_REGISTER(Address, Value, RegCount, bAddUSBCSRAddress); + + count++; + if (count > 5) { + FPRINT("zd1211_WriteMultiRegister failed"); + break; + } + } + + return ret; } + //return 0: success -int zd1211_writel(u32 Address, u32 Value, u8 bAddUSBCSRAddress) -{ - struct zd1205_private *macp = g_dev->priv; +int zd1211_writel(u32 Address, u32 Value, u8 bAddUSBCSRAddress) { + struct zd1205_private *macp = g_dev->priv; #ifdef fQuickPhySet - u8 bIsPhyReg = 0; -#endif - u16 WriteAddr[6]; - u16 WriteData[6]; - int ret = 1; - int count = 0; -#ifdef fQuickPhySet - if (bAddUSBCSRAddress && (Address > ZD1205_CR0) && (Address < ZD1205_PHY_END)) - bIsPhyReg = 1; + u8 bIsPhyReg = 0; #endif + + u16 WriteAddr[6]; + u16 WriteData[6]; + int ret = 1; + int count = 0; + #ifdef fQuickPhySet - if (bIsPhyReg) { - u32 tmpvalue; - tmpvalue = zd_readl(CtlReg1); - tmpvalue &= ~0x80; - if (((macp->USBCSRAddress+CtlReg1) & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_HOST) { - WriteAddr[0] = (u16) (macp->USBCSRAddress+CtlReg1) + 1; - } else { - // must write High word first - WriteAddr[0] = (u16) (macp->USBCSRAddress+CtlReg1) + 2; - } - WriteData[0] = (u16) (tmpvalue >> 16); - WriteAddr[1] = (u16) (macp->USBCSRAddress+CtlReg1); - WriteData[1] = (u16) (tmpvalue & 0xFFFF); - - if (bAddUSBCSRAddress) { - Address += (u16) (macp->USBCSRAddress); - if ((Address & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_HOST) - WriteAddr[2] = (u16) Address + 1; - else - WriteAddr[2] = (u16) Address + 2; // must write High word first - } else - WriteAddr[2] = (u16) Address + 1; - - WriteData[2] = (u16) (Value >> 16); - WriteAddr[3] = (u16) Address; - WriteData[3] = (u16) (Value & 0xFFFF); - - tmpvalue |= 0x80; - - if (((macp->USBCSRAddress+CtlReg1) & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_HOST) { - WriteAddr[4] = (u16) (macp->USBCSRAddress+CtlReg1) + 1; - } else - WriteAddr[4] = (u16) (macp->USBCSRAddress+CtlReg1) + 2;// must write High word first - - WriteData[4] = (u16) (tmpvalue >> 16); - WriteAddr[5] = (u16) (macp->USBCSRAddress+CtlReg1); - WriteData[5] = (u16) (tmpvalue & 0xFFFF); - - return zd1211_USB_PACKAGE_WRITE_REGISTER(WriteAddr, WriteData, 6, false); - } else { -#endif - if (bAddUSBCSRAddress) { - Address += macp->USBCSRAddress; - if ((Address & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_HOST) - WriteAddr[0] = (u16) Address + 1; - else - WriteAddr[0] = (u16) Address + 2; // must write High word first - } else - WriteAddr[0] = (u16) Address + 1; - WriteAddr[1] = (u16) Address; - WriteData[0] = (u16) (Value >> 16); - WriteData[1] = (u16) (Value & 0xFFFF); - - while (ret != 0) { - ret = zd1211_USB_PACKAGE_WRITE_REGISTER(WriteAddr, WriteData, 2, false); - count++; - if (count > 5) { - FPRINT("zd1211_writel failed"); - break; - } - } -#ifdef fQuickPhySet - } + + if (bAddUSBCSRAddress && (Address <= ZD1205_PHY_END)) + + bIsPhyReg = 1; #endif - return ret; -} -void zd1211_StrongSignalDect(struct zd1205_private *macp) -{ - u32 tmpvalue; - if ((macp->PHYTestTimerCount >= macp->PHYTestTimer) && - (macp->PHYTestTimer) && (macp->PHYLowPower & BIT_0) && - (!dot11Obj.bContinueTx) && (macp->bAssoc)) { - macp->PHYTestTimerCount = 0; - if (macp->RF_Mode == RFMD_RF) { - if ((macp->PHYTestRssi >= macp->PHYTestRssiBound) && ((!dot11Obj.CR122Flag) || (dot11Obj.CR122Flag == 2))) { - LockPhyReg(&dot11Obj); - zd_writel(0xff, ZD1205_CR122); - - if ((macp->PHYLowPower & BIT_1)&&((!dot11Obj.CR31Flag) || (dot11Obj.CR31Flag == 2))) { - macp->bTraceSetPoint = 0; - tmpvalue = dot11Obj.IntValue[dot11Obj.Channel-1] - cPWR_STRONG_SIG_DROP; - zd_writel(tmpvalue, ZD1205_CR31); - dot11Obj.CR31Flag = 1; - } - UnLockPhyReg(&dot11Obj); - dot11Obj.CR122Flag = 1; - } else if ((macp->PHYTestRssi < macp->PHYTestRssiBound) && ((dot11Obj.CR122Flag) || (dot11Obj.CR122Flag == 2))) { - LockPhyReg(&dot11Obj); - zd_writel(0x00, ZD1205_CR122); - UnLockPhyReg(&dot11Obj); - if ((macp->PHYLowPower & BIT_1) && ((dot11Obj.CR31Flag) || (dot11Obj.CR31Flag == 2))) { - macp->bTraceSetPoint = 1; - HW_UpdateIntegrationValue(&dot11Obj, dot11Obj.Channel); - dot11Obj.CR31Flag = 0; - } - dot11Obj.CR122Flag = 0; - } - } else if (macp->RF_Mode == AL2230_RF) { - if ((macp->PHYTestRssi >= macp->PHYTestRssiBound)&&((!dot11Obj.CR203Flag) || (dot11Obj.CR203Flag == 2))) { - LockPhyReg(&dot11Obj); - zd_writel(0x0a, ZD1205_CR203); - if ((macp->PHYLowPower & BIT_1)&&((!dot11Obj.CR31Flag) || (dot11Obj.CR31Flag == 2))) { - macp->bTraceSetPoint = 0; - tmpvalue = dot11Obj.IntValue[dot11Obj.Channel-1] - cPWR_STRONG_SIG_DROP; - zd_writel(tmpvalue, ZD1205_CR31); - dot11Obj.CR31Flag = 1; - } - - UnLockPhyReg(&dot11Obj); - dot11Obj.CR203Flag = 1; - } else if ((macp->PHYTestRssi < macp->PHYTestRssiBound)&&((dot11Obj.CR203Flag) || (dot11Obj.CR203Flag == 2))) { - LockPhyReg(&dot11Obj); - zd_writel(0x06, ZD1205_CR203); - UnLockPhyReg(&dot11Obj); - if ((macp->PHYLowPower & BIT_1)&&((dot11Obj.CR31Flag) || (dot11Obj.CR31Flag == 2))) { - macp->bTraceSetPoint = 1; - HW_UpdateIntegrationValue(&dot11Obj, dot11Obj.Channel); - dot11Obj.CR31Flag = 0; - } - dot11Obj.CR203Flag = 0; - } - } - } else { - macp->PHYTestTimerCount++; - } -} - -/* - * Housekeeping Every 0.5 s - */ -void zd1211_TxCalibration(struct zd1205_private *macp) -{ - static u32 loop = 0; - static u16 TrackingLoop = 0; - static u32 accumulate = 0; - u8 setpoint; - u16 channel; - u32 average = 0; - u32 tmpvalue; - static u16 TrackingCnt = 0; - static u32 accumulate_OFDM = 0; - static u16 TrackingCnt_OFDM = 0; - u8 PreTxOFDMType = cTX_CCK; - loop++; +#ifdef fQuickPhySet -#if fTX_PWR_CTRL - if ((loop % 64) == 0) { - if (macp->bTraceSetPoint) { - LockPhyReg(&dot11Obj); - if (TrackingLoop == TRACKING_NUM) { - TrackingLoop = 0; - if (TrackingCnt) { - average = (u32) (accumulate / TrackingCnt); - channel = dot11Obj.Channel; - setpoint = macp->EepSetPoint[channel-1]; - if (macp->EnableTxPwrCtrl) { - if (average < (u32) (setpoint - cPWR_CTRL_GUARD)) - zd1205_IncreaseTxPower(macp, cTX_CCK); - else if (average > setpoint) - zd1205_DecreaseTxPower(macp, cTX_CCK); - } - accumulate = 0; - TrackingCnt = 0; - } - if (TrackingCnt_OFDM) { - average = (u32) (accumulate_OFDM / TrackingCnt_OFDM); - channel = dot11Obj.Channel; - setpoint = macp->SetPointOFDM[macp->TxOFDMType - cTX_OFDM][channel - 1]; - - if (macp->EnableTxPwrCtrl) { - if (average < (u32) (setpoint - cPWR_CTRL_GUARD)) - zd1205_IncreaseTxPower(macp, cTX_OFDM); - else if (average > setpoint) - zd1205_DecreaseTxPower(macp, cTX_OFDM); - } - accumulate_OFDM = 0; - TrackingCnt_OFDM = 0; - } - } else { - TrackingLoop ++; - tmpvalue = zd_readl(rLED_CTRL); - if (tmpvalue & BIT_0) { // Continuous Tx - if (tmpvalue & BIT_2) { // Tx OFDM - macp->TxPwrOFDM ++; - macp->TxOFDMCnt = cTX_SENT_LEN + 1; - tmpvalue = zd_readl(ZD1205_CR132); - tmpvalue &= 0xFF; - macp->TxOFDMType = cTX_OFDM; - if (tmpvalue == 0xC) - macp->TxOFDMType = cTX_54M; - else if (tmpvalue == 0x8) - macp->TxOFDMType = cTX_48M; - } else - macp->TxPwrCCK ++; // Tx CCK - } - if (macp->TxPwrCCK) { // New sent after last read - tmpvalue = zd_readl(ZD1205_CR58); - tmpvalue &= 0xFF; - accumulate += tmpvalue; - TrackingCnt ++; - macp->TxPwrCCK = 0; - } - if (macp->TxPwrOFDM) { - if (macp->TxOFDMCnt > cTX_SENT_LEN) { // make sure Tx by HMAC (for UMAC) - tmpvalue = zd_readl(ZD1205_CR57); - tmpvalue &= 0xFF; - accumulate_OFDM += tmpvalue; - TrackingCnt_OFDM ++; - PreTxOFDMType = macp->TxOFDMType; - } else { - if (PreTxOFDMType != macp->TxOFDMType) { - accumulate_OFDM = 0; - TrackingCnt_OFDM = 0; - } - } - macp->TxPwrOFDM = 0; - } - } - UnLockPhyReg(&dot11Obj); - } - } -#endif -} - -/* - * Housekeeping Every 1s - */ -void zd1211_CheckWithIPC(struct zd1205_private *macp) -{ - static u32 loop = 0; - u8 BssType = macp->cardSetting.BssType; - loop++; - if ((loop % 10) == 0) { - // bypass the weak signal in BSS and AP mode - if ((macp->bAssoc) && (macp->PHYTestRssi <= 0x18) && ((BssType == INDEPENDENT_BSS) || (BssType == PSEUDO_IBSS))) { - if (!macp->CR138Flag) { - LockPhyReg(&dot11Obj); - zd_writel(0xa8, ZD1205_CR138); - UnLockPhyReg(&dot11Obj); - macp->CR138Flag = 1; - } - } else if (macp->CR138Flag) { - LockPhyReg(&dot11Obj); - zd_writel(0x28, ZD1205_CR138); - UnLockPhyReg(&dot11Obj); - macp->CR138Flag = 0; - } - if (macp->LinkLEDn == LED2) - iLED_OFF(macp, LED1); - if (!macp->bAssoc) { - macp->LinkTimer ++; - if ((macp->LinkTimer == 1) && (macp->LinkLED_OnDur != 0)) { - iLED_ON(macp, macp->LinkLEDn); - } - if (macp->LinkTimer == (macp->LinkLED_OnDur + 1)) { - iLED_OFF(macp, macp->LinkLEDn); - } - if (macp->LinkTimer >= (macp->LinkLED_OnDur + macp->LinkLED_OffDur)) - macp->LinkTimer = 0; - } - } // end of (loop % 10) -} + if (bIsPhyReg) { + u32 tmpvalue; -// Switch to another antenna -void zd1211_SwitchAntenna(struct zd1205_private *macp) -{ - u32 tmpvalue; - LockPhyReg(&dot11Obj); - tmpvalue = zd_readl(ZD1205_CR10); - tmpvalue ^= BIT_1; - zd_writel(tmpvalue, ZD1205_CR10); - tmpvalue = zd_readl(ZD1205_CR9); - tmpvalue ^= BIT_2; - zd_writel(tmpvalue, ZD1205_CR9); - UnLockPhyReg(&dot11Obj); -} + tmpvalue = zd_readl(CtlReg1); + tmpvalue &= ~0x80; + { + if (((macp->USBCSRAddress+CtlReg1) & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_HOST) + WriteAddr[0] = (u16) (macp->USBCSRAddress+CtlReg1) + 1; + else + + // must write High word first + WriteAddr[0] = (u16) (macp->USBCSRAddress+CtlReg1) + 2; + } + WriteData[0] = (u16) (tmpvalue >> 16); + + WriteAddr[1] = (u16) (macp->USBCSRAddress+CtlReg1); + + WriteData[1] = (u16) (tmpvalue & 0xFFFF); + + if (bAddUSBCSRAddress) { + Address += (u16) (macp->USBCSRAddress); + if ((Address & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_HOST) + WriteAddr[2] = (u16) Address + 1; + else + // must write High word first + WriteAddr[2] = (u16) Address + 2; + } else + WriteAddr[2] = (u16) Address + 1; + + WriteData[2] = (u16) (Value >> 16); + WriteAddr[3] = (u16) Address; + + WriteData[3] = (u16) (Value & 0xFFFF); + + + tmpvalue |= 0x80; + { + + if (((macp->USBCSRAddress+CtlReg1) & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_HOST) + + WriteAddr[4] = (u16) (macp->USBCSRAddress+CtlReg1) + 1; + else + // must write High word first + WriteAddr[4] = (u16) (macp->USBCSRAddress+CtlReg1) + 2; + } + WriteData[4] = (u16) (tmpvalue >> 16); + WriteAddr[5] = (u16) (macp->USBCSRAddress+CtlReg1); + WriteData[5] = (u16) (tmpvalue & 0xFFFF); + + return zd1211_USB_PACKAGE_WRITE_REGISTER(WriteAddr, WriteData, 6, false); + } else { +#endif + if (bAddUSBCSRAddress) { + Address += macp->USBCSRAddress; + if ((Address & BASE_ADDR_MASK_HOST) == USB_BASE_ADDR_HOST) + WriteAddr[0] = (u16) Address + 1; + else + // must write High word first + WriteAddr[0] = (u16) Address + 2; + } else + WriteAddr[0] = (u16) Address + 1; + + WriteAddr[1] = (u16) Address; + WriteData[0] = (u16) (Value >> 16); + WriteData[1] = (u16) (Value & 0xFFFF); + + + while (ret != 0) { + ret = zd1211_USB_PACKAGE_WRITE_REGISTER(WriteAddr, WriteData, 2, false); + count++; + if (count > 5) { + + printk(KERN_ERR "zd1211_writel failed for 5 attempts\n"); + break; + } + } -//----------------------------------------------------------------------------- -#if fPROG_FLASH -// 1:Intel Flash; 0: MXIC, Winbond, AMD, Atmel... -#define cFLASH_MXIC 0 -#define cFLASH_INTEL 1 - -u16 zd1211_SetHighAddr(struct zd1205_private *macp, u16 high_addr) -{ - u16 tmp_cr203; - u16 WriteAddr[cMAX_MULTI_WRITE_REG_NUM]; - u16 WriteData[cMAX_MULTI_WRITE_REG_NUM]; - u16 WriteIndex = 0; - tmp_cr203 = ((high_addr << 1) & ~mMASK(2)) + (high_addr & mBIT(0)); - - if (macp->FlashType == cFLASH_INTEL) { - mFILL_WRITE_REGISTER(rLED_CTRL, 0); - if (mTEST_BIT(high_addr, 7)) mFILL_WRITE_REGISTER(rLED_CTRL, LED2); - } - - mFILL_WRITE_REGISTER(ZD1205_CR203, tmp_cr203); - zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, true); - return tmp_cr203; -} +#ifdef fQuickPhySet -/* abs_addr: in word */ -u16 zd1211_SetAbsAddr(struct zd1205_private *macp, u32 abs_addr, u16 *get_cr203) -{ - static u16 pre_high_addr = 0, pre_cr203 = 0; - u16 high_addr; + } +#endif - high_addr = (u16) (abs_addr >> 14); - if (pre_high_addr != high_addr) { - pre_cr203 = zd1211_SetHighAddr(macp, high_addr); - pre_high_addr = high_addr; - } - - if (get_cr203 != NULL) - *get_cr203 = pre_cr203; - return ((u16) (abs_addr & mMASK(14))); -} - -void zd1211_FlashCmdWrite(struct zd1205_private *macp, u8 Cmd) -{ - u32 tmpvalue; - u16 WriteAddr[cMAX_MULTI_WRITE_REG_NUM]; - u16 WriteData[cMAX_MULTI_WRITE_REG_NUM]; - u16 WriteIndex = 0; - - tmpvalue = zd1211_readl(ZD1205_CR203, true); - if (macp->FlashType == cFLASH_MXIC) { - mFLASH_WRITE_EVEN_ADDR(0xAAA, 0xAA, tmpvalue); - mFLASH_WRITE_ODD_ADDR(0x555, 0x55, tmpvalue); - mFLASH_WRITE_EVEN_ADDR(0xAAA, Cmd, tmpvalue); - } else - mFLASH_WRITE_EVEN_ADDR(0, Cmd, tmpvalue); - zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); -} - -void zd1211_FlashResetCmd(struct zd1205_private *macp) -{ - if (macp->FlashType == cFLASH_MXIC) - zd1211_writel(0, 0xF0, false); - else - zd1211_FlashCmdWrite(macp, 0xFF); -} - -void zd1211_InitHighAddr(struct zd1205_private *macp) -{ - u16 WriteAddr[cMAX_MULTI_WRITE_REG_NUM]; - u16 WriteData[cMAX_MULTI_WRITE_REG_NUM]; - u16 WriteIndex = 0; - - mFILL_WRITE_REGISTER(UMAC_WAIT_STATE, 0x022); // 25ns * 2 - mFILL_WRITE_REGISTER(ZD1205_CR11 + (u16) (macp->USBCSRAddress), 0x15); - // Use AntSel to control VPEN for Intel Flash - mFILL_WRITE_REGISTER(ZD1205_CR10 + (u16) (macp->USBCSRAddress), 0x82); - mFILL_WRITE_REGISTER(ZD1205_CR9 + (u16) (macp->USBCSRAddress), 0x24); - mFILL_WRITE_REGISTER(ZD1205_CR204 + (u16) (macp->USBCSRAddress), 0x7C); - mFILL_WRITE_REGISTER(ZD1205_CR203 + (u16) (macp->USBCSRAddress), 0); - zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); - if (macp->FlashType == 0xFF) { - u32 tmpvalue; - macp->FlashType = cFLASH_INTEL; - zd1211_FlashCmdWrite(macp, 0x90); // Read Chip ID - tmpvalue = zd1211_readl(0, false); - if ((tmpvalue & 0xFFFF) != 0x8989) - macp->FlashType = cFLASH_MXIC; // Intel Manufacture Code - } - zd1211_SetAbsAddr(macp, 0, NULL); - zd1211_FlashResetCmd(macp); + return ret; } -/* Top: 8k byte / sector ==> 0 - 0x1000 (word address) */ -/* ==> sec0 address = 0; sec1 address = 0x1000 ... */ -void zd1211_FlashSecErase(struct zd1205_private *macp, u16 Sec0) -{ - u32 tmpvalue; - u16 WriteAddr[cMAX_MULTI_WRITE_REG_NUM]; - u16 WriteData[cMAX_MULTI_WRITE_REG_NUM]; - u16 WriteIndex = 0; - - LockPhyReg(&dot11Obj); - tmpvalue = zd1211_readl(ZD1205_CR203, true); - if (macp->FlashType == cFLASH_MXIC) { - zd1211_FlashCmdWrite(macp, 0x80); - mFLASH_WRITE_EVEN_ADDR(0xAAA, 0xAA, tmpvalue); - mFLASH_WRITE_ODD_ADDR(0x555, 0x55, tmpvalue); - mFLASH_WRITE_EVEN_ADDR(Sec0 << 1, 0x30, tmpvalue); - } else { - mFLASH_SET_EVEN_ADDR(tmpvalue); - mFILL_WRITE_REGISTER(Sec0, 0x20); - mFILL_WRITE_REGISTER(Sec0, 0xD0); - } - - zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); - UnLockPhyReg(&dot11Obj); -} - -void zd1211_EraseFlash(struct zd1205_private *macp) -{ - u32 ii; - u32 tmpvalue; - u16 low_addr, jj; - - macp->bDisableTx = 1; - // USB_StopTxEP(Adapter); - LockPhyReg(&dot11Obj); - macp->bAllowAccessRegister = 0; - zd1211_InitHighAddr(macp); - - if (macp->FlashType == cFLASH_MXIC) { - zd1211_FlashCmdWrite(macp, 0x80); - zd1211_FlashCmdWrite(macp, 0x10); - } else { - for (ii = 0; ii < 0x400000L; ii += 0x10000L) { - low_addr = zd1211_SetAbsAddr(macp, ii, NULL); - zd1211_FlashSecErase(macp, low_addr); - for (jj = 0; jj < 100; jj ++) { - tmpvalue = zd1211_readl(0, false); - if (tmpvalue & 0x8000) - break; - mdelay(10); // Sleep 10ms - } - } - } - // macp->bAllowAccessRegister = 1; - UnLockPhyReg(&dot11Obj); - // macp->bDisableTx = 0; -} -#if !fPROG_FLASH_BY_FW -void FlashProgram(struct zd1205_private *macp, u16 addr0, u8 *pbuf, u16 tmpvalue) -{ - u16 WriteAddr[cMAX_MULTI_WRITE_REG_NUM]; - u16 WriteData[cMAX_MULTI_WRITE_REG_NUM]; - u16 WriteIndex = 0; - u16 jj; - - if (macp->FlashType == cFLASH_MXIC) { - for (jj = 0; jj < 16; jj ++) { - WriteIndex = 0; - mFLASH_SET_EVEN_ADDR(tmpvalue); - zd1211_FlashCmdWrite(macp, 0xA0); - mFILL_WRITE_REGISTER(addr0 + jj, pbuf[jj * 2]); - zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); - } - - for (jj = 0; jj < 16; jj ++) { - WriteIndex = 0; - mFLASH_SET_ODD_ADDR(tmpvalue); - zd1211_FlashCmdWrite(macp, 0xA0); - mFILL_WRITE_REGISTER(addr0 + jj, pbuf[jj * 2 + 1]); - - if (jj == 15) { // Read Word Addr - mFLASH_SET_EVEN_ADDR(tmpvalue); - } - - zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); - } - } else { - mFLASH_SET_EVEN_ADDR(tmpvalue); - mFILL_WRITE_REGISTER(addr0, 0xE8); - mFILL_WRITE_REGISTER(addr0, 0x0F); - for (jj = 0; jj < 8; jj ++) - mFILL_WRITE_REGISTER(addr0 + jj, pbuf[jj * 2]); - zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); - - WriteIndex = 0; - for (jj = 8; jj < 16; jj ++) - mFILL_WRITE_REGISTER(addr0 + jj, pbuf[jj * 2]); - mFILL_WRITE_REGISTER(0, 0xD0); - zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); - - WriteIndex = 0; - mFLASH_SET_ODD_ADDR(tmpvalue); - mFILL_WRITE_REGISTER(addr0, 0xE8); - mFILL_WRITE_REGISTER(addr0, 0x0F); - for (jj = 0; jj < 8; jj ++) { - mFILL_WRITE_REGISTER(addr0 + jj, pbuf[jj * 2 + 1]); - } - zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); - - WriteIndex = 0; - for (jj = 8; jj < 16; jj ++) { - mFILL_WRITE_REGISTER(addr0 + jj, pbuf[jj * 2 + 1]); - } - mFILL_WRITE_REGISTER(0, 0xD0); - zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); - } -} -#endif - -int zd1211_ProgFlash(struct zd1205_private *macp, u32 StartAddr, u32 BufLenInBytes, u8 *pDownloadBuffer) -{ - int i; - u32 ii; - u16 low_addr, jj; - int chk_flg = 1; - u16 tmpvalue; -#if fPROG_FLASH_BY_FW - u16 WriteData[cMAX_MULTI_RF_REG_NUM]; - u16 WriteIndex = 0; -#endif -#if fVERIFY_FLASH - u16 ReadAddr[cMAX_MULTI_READ_REG_NUM]; - u16 ReadData[cMAX_MULTI_READ_REG_NUM]; - u16 ReadIndex = 0; - u16 chk_cnt = 0; -#endif - - macp->bDisableTx = 1; - // USB_StopTxEP(Adapter); - LockPhyReg(&dot11Obj); - macp->bAllowAccessRegister = 0; - zd1211_InitHighAddr(macp); - - StartAddr /= 2; // Convert Byte Addr to Word Addr - - for (ii = 0; ii < BufLenInBytes / 2; ii += 16) { - if (macp->FlashType == cFLASH_MXIC) { - if ((ii + StartAddr) >= 0x200000) - break; // 2M Word = 4M Byte - } else { - if ((ii + StartAddr) >= 0x400000) - break; // 4M Word = 8M Byte - } +void zd1211_StrongSignalDect(struct zd1205_private *macp) { + u32 tmpvalue; - low_addr = zd1211_SetAbsAddr(macp, ii + StartAddr, &tmpvalue); + if ( (macp->PHYTestTimerCount >= macp->PHYTestTimer)&& + (macp->PHYTestTimer) && (macp->PHYLowPower & BIT_0) && + (!dot11Obj.bContinueTx) && -#if fPROG_FLASH_BY_FW - WriteIndex = 0; - tmpvalue &= 0x00FF; - tmpvalue |= ((macp->FlashType) << 8); - mFILL_RF_REGISTER(mCLR_BIT((tmpvalue), bmFLASH_A0)); - mFILL_RF_REGISTER(low_addr); - for (jj = 0; jj < 16; jj ++) - mFILL_RF_REGISTER((u16) pDownloadBuffer[(ii + jj) * 2]); - zd1211_USB_ProgramFlash(macp, WriteData, WriteIndex); + (macp->bAssoc)) + { + macp->PHYTestTimerCount = 0; + if (macp->RF_Mode == RFMD_RF) { + if ( (macp->PHYTestRssi >= macp->PHYTestRssiBound) && - WriteIndex = 0; - mFILL_RF_REGISTER(mSET_BIT((tmpvalue), bmFLASH_A0)); - mFILL_RF_REGISTER(low_addr); + ((!dot11Obj.CR122Flag) || (dot11Obj.CR122Flag == 2))) { + LockPhyReg(&dot11Obj); + zd_writel(0xff, ZD1205_CR122); - for (jj = 0; jj < 16; jj ++) - mFILL_RF_REGISTER((u16) pDownloadBuffer[(ii + jj) * 2 + 1]); + if ( (macp->PHYLowPower & BIT_1)&& + ((!dot11Obj.CR31Flag) || (dot11Obj.CR31Flag == 2)) ) { - for (i=0; i<5; i++) { - if (zd1211_USB_ProgramFlash(macp, WriteData, WriteIndex)) break; - } -#else - zd1211_FlashProgram(macp, low_addr, pDownloadBuffer + 2 * ii, tmpvalue); -#endif - } - // macp->bAllowAccessRegister = 1; - UnLockPhyReg(&dot11Obj); - // macp->bDisableTx = 0; + macp->bTraceSetPoint = 0; - return chk_flg; -} -#endif + tmpvalue = dot11Obj.IntValue[dot11Obj.Channel-1] - cPWR_STRONG_SIG_DROP; -int zd1211_USB_SET_RF_REG(u16 *InputValue, int bIs3683A) -{ - struct zd1205_private *macp = g_dev->priv; - u8 *pRegBuffer = NULL; - int ret; - u16 size = sizeof(USB_SET_RF); - u16 bufSize; - u32 S_bit_cnt = dot11Obj.S_bit_cnt; - u16 i; - int memflags = GFP_KERNEL; + zd_writel(tmpvalue, ZD1205_CR31); -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - if (in_interrupt()) { -#else - if (in_atomic()) { -#endif - FPRINT("********zd1211_USB_SET_RF_REG in_interrupt*********"); - return 0; - } - - down(&macp->reg_sem); - - if (!(macp->bUSBDeveiceAttached)) { - up(&macp->reg_sem); - return 0; - } - - pRegBuffer = kmalloc(size, GFP_KERNEL); - if (!pRegBuffer) { - up(&macp->reg_sem); - return -ENOMEM; - } else - memset(pRegBuffer, 0x0, size); - - ((PUSB_SET_RF)pRegBuffer)->RequestID = cpu_to_le16(REGID_RFOFDMSET); - - if (bIs3683A) - ((PUSB_SET_RF)pRegBuffer)->Value = cpu_to_le16(1); - else - ((PUSB_SET_RF)pRegBuffer)->Value = cpu_to_le16(2); - - ((PUSB_SET_RF)pRegBuffer)->Index = cpu_to_le16((u16)S_bit_cnt); - - for (i = 0; i < S_bit_cnt; i ++) - ((PUSB_SET_RF)pRegBuffer)->Data[i] = cpu_to_le16(InputValue[i]); - bufSize = sizeof(u16) * (3+S_bit_cnt); - - if (macp->ep4isIntOut) - usb_fill_int_urb(macp->reg_urb, macp->usb, - usb_sndintpipe(macp->usb, EP_REG_OUT), - pRegBuffer, bufSize, - zd1211_reg_cb, macp, 1); - else - usb_fill_bulk_urb(macp->reg_urb, macp->usb, - usb_sndbulkpipe(macp->usb, EP_REG_OUT), - pRegBuffer, bufSize, - zd1211_reg_cb, macp); - - /* macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK; */ - - if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) { - printk(KERN_ERR "zd1211: failed rf reg_urb\n"); - zd1211_DumpErrorCode(macp, ret); - goto out; - } - - macp->regWaitWCompCnt++; - wait_event(macp->regSet_wait, test_bit(ZD1211_CMD_FINISH, &macp->flags)); - macp->regRWCompCnt++; - clear_bit(ZD1211_CMD_FINISH, &macp->flags); + dot11Obj.CR31Flag = 1; + } -out: - kfree(pRegBuffer); - up(&macp->reg_sem); - return ret; -} -#define bmZD_IF_LE 1 -#define bmZD_RF_CLK 2 -#define bmZD_RF_DATA 3 -void HW_Set_IF_Synthesizer(zd_80211Obj_t *pObj, U32 InputValue) -{ - u32 S_bit_cnt; - u32 tmpvalue; - u16 WriteData[cMAX_MULTI_RF_REG_NUM]; - u16 WriteIndex = 0; + UnLockPhyReg(&dot11Obj); - S_bit_cnt = pObj->S_bit_cnt; + dot11Obj.CR122Flag = 1; - InputValue = InputValue << (31 - S_bit_cnt); + } else if ( (macp->PHYTestRssi < macp->PHYTestRssiBound) && + ((dot11Obj.CR122Flag) || (dot11Obj.CR122Flag == 2)) ) { + LockPhyReg(&dot11Obj); + zd_writel(0x00, ZD1205_CR122); + UnLockPhyReg(&dot11Obj); - //to avoid un-necessary register read/write - //LockPhyReg(pObj); - tmpvalue = zd_readl(ZD_CR203); - tmpvalue = mCLR_BIT(tmpvalue, bmZD_IF_LE); + if ( (macp->PHYLowPower & BIT_1) && - // Configure RF by Software - tmpvalue = mCLR_BIT(tmpvalue, bmZD_RF_CLK); + ((dot11Obj.CR31Flag) || (dot11Obj.CR31Flag == 2)) ) { + macp->bTraceSetPoint = 1; - while (S_bit_cnt) { - InputValue = InputValue << 1; + HW_UpdateIntegrationValue(&dot11Obj, dot11Obj.Channel, macp->cardSetting.MacMode); - if (InputValue & 0x80000000) { - tmpvalue = mSET_BIT(tmpvalue, bmZD_RF_DATA); - mFILL_RF_REGISTER((u16) tmpvalue); - } else { - tmpvalue = mCLR_BIT(tmpvalue, bmZD_RF_DATA); - mFILL_RF_REGISTER((u16) tmpvalue); - } + dot11Obj.CR31Flag = 0; - if (WriteIndex >= cMAX_MULTI_RF_REG_NUM) { - FPRINT_V("S_bit_cnt over range! ", (u32)pObj->S_bit_cnt); - break; - } + } - S_bit_cnt --; - } - zd1211_USB_SET_RF_REG(WriteData, 0); - //UnLockPhyReg(pObj); -} + dot11Obj.CR122Flag = 0; + } -static void zd1211_tx_timeout(struct net_device *dev) -{ - struct zd1205_private *macp = dev->priv; - if (!macp) - return; + } else if((macp->RF_Mode == AL2230_RF) || (macp->RF_Mode == AL2230S_RF)) { + if ( (macp->PHYTestRssi >= macp->PHYTestRssiBound)&& + ((!dot11Obj.CR203Flag) || (dot11Obj.CR203Flag == 2)) ) { - printk("%s: Tx timed out.\n", dev->name); - /* macp->tx_urb->transfer_flags |= URB_ASYNC_UNLINK; */ - USB_URB(macp->tx_urb); -} + LockPhyReg(&dot11Obj); -int zd1211_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) -{ - struct zd1205_private *macp = dev->priv; - memcpy(&macp->ifreq, ifr, sizeof(struct ifreq)); - macp->ifcmd = cmd; - defer_kevent(macp, KEVENT_STD_IOCTL); - return 0; -} + zd_writel(0x0a, ZD1205_CR203); + if ( (macp->PHYLowPower & BIT_1)&& + ((!dot11Obj.CR31Flag) || (dot11Obj.CR31Flag == 2)) ) { -#define ZD1211_TX_TIMEOUT (HZ*10) -#define ZD1211_MTU 1500 -#ifdef CONFIG_NET_WIRELESS -extern struct iw_handler_def p80211wext_handler_def; -extern struct iw_statistics *zd1205wext_iw_get_stats(struct net_device *); -#endif -u8 zd1211_InitSetup(struct net_device *dev, struct zd1205_private *macp) -{ - int res; - int memflags = GFP_KERNEL; - ZENTER(1); - - init_MUTEX(&macp->ps_sem); - init_MUTEX(&macp->reg_sem); - init_MUTEX(&macp->bcn_sem); - init_MUTEX(&macp->config_sem); - - spin_lock_init(&(macp->intr_lock)); - spin_lock_init(&(macp->q_lock)); - spin_lock_init(&(macp->cs_lock)); - - INIT_WORK(&macp->kevent, kevent, macp); - - macp->numTcb = NUM_TCB; - macp->numTbd = NUM_TBD; - macp->numRfd = NUM_RFD; - macp->numTbdPerTcb = NUM_TBD_PER_TCB; - macp->rxOffset = ZD_RX_OFFSET; - macp->rfd_size = 24; // form CbStatus to NextCbPhyAddrHighPart - - init_timer(&macp->watchdog_timer); - macp->watchdog_timer.data = (unsigned long) dev; - macp->watchdog_timer.function = (void *) &zd1205_watchdog_cb; - - init_timer(&macp->tm_hking_id); - macp->tm_hking_id.data = (unsigned long) dev; - macp->tm_hking_id.function = (void *) &HKeepingCB; - - init_timer(&macp->tm_mgt_id); - macp->tm_mgt_id.data = (unsigned long) dev; - macp->tm_mgt_id.function = (void *) &zd1205_mgt_mon_cb; - macp->USBCSRAddress = 0x9000; - dot11Obj.reg = macp->regp = (void *)macp->USBCSRAddress; + macp->bTraceSetPoint = 0; - macp->in_interval = 10; + tmpvalue = dot11Obj.IntValue[dot11Obj.Channel-1] - cPWR_STRONG_SIG_DROP; + zd_writel(tmpvalue, ZD1205_CR31); + dot11Obj.CR31Flag = 1; + } -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - usb_fill_int_urb(macp->intr_urb, macp->usb, - usb_rcvintpipe(macp->usb, EP_INT_IN), - macp->IntEPBuffer, MAX_EPINT_BUFFER, - zd1211_intr_cb, macp, macp->in_interval); -#else //fake it - usb_fill_bulk_urb(macp->intr_urb, macp->usb, - usb_rcvbulkpipe(macp->usb, EP_INT_IN), - macp->IntEPBuffer, MAX_EPINT_BUFFER, - zd1211_intr_cb, macp); -#endif - - /* macp->intr_urb->transfer_flags |= URB_ASYNC_UNLINK; */ - - if ((res = SUBMIT_URB(macp->intr_urb, GFP_KERNEL))) { - printk(KERN_ERR "zd1211: failed intr_urb\n"); - zd1211_DumpErrorCode(macp, res); - return false; - } - - zd1205_init(macp); - - dev->open = zd1205_open; - dev->stop = zd1205_close; - dev->watchdog_timeo = ZD1211_TX_TIMEOUT; - dev->do_ioctl = zd1205_ioctl; + UnLockPhyReg(&dot11Obj); + dot11Obj.CR203Flag = 1; + } else if ( (macp->PHYTestRssi < macp->PHYTestRssiBound)&& + ((dot11Obj.CR203Flag) || (dot11Obj.CR203Flag == 2)) ) { + LockPhyReg(&dot11Obj); + zd_writel(0x06, ZD1205_CR203); + UnLockPhyReg(&dot11Obj); -#if WIRELESS_EXT > 12 - dev->wireless_handlers = (struct iw_handler_def *)&p80211wext_handler_def; - dev->get_wireless_stats = &zd1205wext_iw_get_stats; -#endif - dev->hard_start_xmit = zd1205_xmit_frame; - dev->set_multicast_list = zd1205_set_multi; - dev->get_stats = zd1205_get_stats; - dev->mtu = ZD1211_MTU; - dev->set_mac_address = zd1205_set_mac; - dev->tx_timeout = &zd1211_tx_timeout; - //dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM; - dev->flags |= IFF_MULTICAST; - //memcpy(macp->ifname, dev->name, IFNAMSIZ); - //macp->ifname[IFNAMSIZ-1] = 0; - ZEXIT(1); - return true; -} + if ( (macp->PHYLowPower & BIT_1)&& + ((dot11Obj.CR31Flag) || (dot11Obj.CR31Flag == 2)) ) { -int zd1211_alloc_all_urbs(struct zd1205_private *macp) -{ - struct usb_interface *interface = macp->interface; -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - struct usb_interface_descriptor *iface_desc = &interface->altsetting[0]; -#else - struct usb_host_interface *iface_desc = &interface->altsetting[0]; -#endif - struct usb_endpoint_descriptor *endpoint; - struct usb_endpoint_descriptor *interrupt_in_endpoint[MAX_NUM_PORTS]; - struct usb_endpoint_descriptor *interrupt_out_endpoint[MAX_NUM_PORTS]; - struct usb_endpoint_descriptor *bulk_in_endpoint[MAX_NUM_PORTS]; - struct usb_endpoint_descriptor *bulk_out_endpoint[MAX_NUM_PORTS]; - u8 num_bulk_in = 0; - u8 num_bulk_out = 0; - u8 num_interrupt_in = 0; - u8 num_interrupt_out = 0; - int i; - - /* descriptor matches, let's find the endpoints needed */ - /* check out the endpoints */ - //ZD1211DEBUG(2, "bNumEndpoints = %d\n", iface_desc->bNumEndpoints); -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - for (i = 0; i < iface_desc->bNumEndpoints; ++i) { - endpoint = &iface_desc->endpoint[i]; -#else - for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) { - endpoint = &iface_desc->endpoint[i].desc; -#endif - if ((endpoint->bEndpointAddress & 0x80) && - ((endpoint->bmAttributes & 3)==0x02)) { - /* we found a bulk in endpoint */ - bulk_in_endpoint[num_bulk_in] = endpoint; - ++num_bulk_in; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)) - macp->wMaxPacketSize = le16_to_cpu(endpoint->wMaxPacketSize); - ZD1211DEBUG(0, "bulk in: wMaxPacketSize = %x\n", le16_to_cpu(endpoint->wMaxPacketSize)); -#else - macp->wMaxPacketSize = endpoint->wMaxPacketSize; - ZD1211DEBUG(0, "bulk in: wMaxPacketSize = %x\n", endpoint->wMaxPacketSize); -#endif - } + macp->bTraceSetPoint = 1; - if (((endpoint->bEndpointAddress & 0x80) == 0x00) && - ((endpoint->bmAttributes & 3) == 0x02)) { - /* we found a bulk out endpoint */ - bulk_out_endpoint[num_bulk_out] = endpoint; - ++num_bulk_out; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)) - ZD1211DEBUG(0, "bulk out: wMaxPacketSize = %x\n", le16_to_cpu(endpoint->wMaxPacketSize)); -#else - ZD1211DEBUG(0, "bulk out: wMaxPacketSize = %x\n", endpoint->wMaxPacketSize); -#endif - } - if ((endpoint->bEndpointAddress & 0x80) && - ((endpoint->bmAttributes & 3) == 0x03)) { - /* we found a interrupt in endpoint */ - interrupt_in_endpoint[num_interrupt_in] = endpoint; - ++num_interrupt_in; - macp->in_interval = endpoint->bInterval; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)) - ZD1211DEBUG(0, "interrupt in: wMaxPacketSize = %x\n", le16_to_cpu(endpoint->wMaxPacketSize)); -#else - ZD1211DEBUG(0, "interrupt in: wMaxPacketSize = %x\n", endpoint->wMaxPacketSize); -#endif - ZD1211DEBUG(0, "interrupt in: int_interval = %d\n", endpoint->bInterval); - } + HW_UpdateIntegrationValue(&dot11Obj, dot11Obj.Channel, macp->cardSetting.MacMode); + dot11Obj.CR31Flag = 0; + } - if (((endpoint->bEndpointAddress & 0x80) == 0x00) && - ((endpoint->bmAttributes & 3) == 0x03)) { - /* we found a interrupt out endpoint */ - interrupt_out_endpoint[num_interrupt_out] = endpoint; - ++num_interrupt_out; - macp->ep4isIntOut = 0;//1; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)) - ZD1211DEBUG(0, "interrupt out: wMaxPacketSize = %x\n", le16_to_cpu(endpoint->wMaxPacketSize)); -#else - ZD1211DEBUG(0, "interrupt out: wMaxPacketSize = %x\n", endpoint->wMaxPacketSize); -#endif - macp->out_interval = endpoint->bInterval; - } - } - - macp->num_bulk_in = num_bulk_in; - macp->num_bulk_out = num_bulk_out; - macp->num_interrupt_in = num_interrupt_in; - macp->num_interrupt_out = num_interrupt_out; - - macp->rx_urb = USB_ALLOC_URB(0, GFP_KERNEL); - if (!macp->rx_urb) - return 0; - - macp->tx_urb = USB_ALLOC_URB(0, GFP_KERNEL); - if (!macp->tx_urb) { - usb_free_urb(macp->rx_urb); - return 0; - } - - macp->intr_urb = USB_ALLOC_URB(0, GFP_KERNEL); - if (!macp->intr_urb) { - usb_free_urb(macp->rx_urb); - usb_free_urb(macp->tx_urb); - return 0; - } - - macp->ctrl_urb = USB_ALLOC_URB(0, GFP_KERNEL); - if (!macp->ctrl_urb) { - usb_free_urb(macp->rx_urb); - usb_free_urb(macp->tx_urb); - usb_free_urb(macp->intr_urb); - return 0; - } - - macp->reg_urb = USB_ALLOC_URB(0, GFP_KERNEL); - if (!macp->reg_urb) { - usb_free_urb(macp->rx_urb); - usb_free_urb(macp->tx_urb); - usb_free_urb(macp->intr_urb); - usb_free_urb(macp->ctrl_urb); - return 0; - } - return 1; -} -void zd1211_free_all_urbs(struct zd1205_private *macp) -{ - if (macp->rx_urb) - usb_free_urb(macp->rx_urb); - if (macp->tx_urb) - usb_free_urb(macp->tx_urb); - if (macp->intr_urb) - usb_free_urb(macp->intr_urb); - if (macp->ctrl_urb) - usb_free_urb(macp->ctrl_urb); - if (macp->reg_urb) - usb_free_urb(macp->reg_urb); -} + dot11Obj.CR203Flag = 0; + } + } + } else + { + macp->PHYTestTimerCount++; -void zd1211_unlink_all_urbs(struct zd1205_private *macp) -{ - USB_URB(macp->rx_urb); - USB_URB(macp->tx_urb); - USB_URB(macp->ctrl_urb); - USB_URB(macp->reg_urb); - if (test_bit(ZD1211_UNPLUG, &macp->flags)) - USB_URB(macp->intr_urb); + } } -#define MAX_RX_MERGE_PACKET_NUM 3 -void zd1211_rx_isr(unsigned long parm) -{ - struct zd1205_private *macp = (struct zd1205_private *)parm; - struct urb *urb = macp->read_urb; - struct rx_list_elem *rx_struct; - struct rx_list_elem *rx_struct_array[MAX_RX_MERGE_PACKET_NUM]; - int total_rx_struct = 1, rx_array_cnt = 0; - int i; - u32 TotalLength = urb->actual_length; - u8 *pRxBuffer; - u32 tmpLen = 0; - u16 last_pkt_len; - struct sk_buff *skb; - zd1205_RFD_t *rfd = NULL; - - spin_lock(&macp->intr_lock); - ZD1211DEBUG(2, "actual_length = %x\n", urb->actual_length); - - rx_struct = list_entry(macp->active_rx_list.next, - struct rx_list_elem, list_elem); - - skb = rx_struct->skb; - rfd = RFD_POINTER(skb, macp); - pRxBuffer = &rfd->RxBuffer[macp->rxOffset]; - - if (rx_struct->UnFinishFrmLen) { - TotalLength += rx_struct->UnFinishFrmLen; - rx_struct->UnFinishFrmLen = 0; - macp->CompLenInfoCnt++; - ZD1211DEBUG(0, "Got Rx Frames Length Info!!\n"); - } - - last_pkt_len = TotalLength & (macp->wMaxPacketSize - 1); - - if (last_pkt_len <= (macp->wMaxPacketSize - 4)) { - if (le16_to_cpu(((u16 *) pRxBuffer)[TotalLength / sizeof(u16) - 1]) == 0x697E) { - total_rx_struct = 3; - //ZD1211DEBUG(0, "Got merged Rx Frames!!\n"); - //zd1205_dump_data("pRxBuffer", (u8 *)pRxBuffer, TotalLength); - macp->Continue2Rx++; - } else - macp->NoMergedRxCnt++; - //ZD1211DEBUG(3, "last_pkt_len = %x\n", last_pkt_len); - //zd1205_dump_data("pRxBuffer", (u8 *)pRxBuffer, TotalLength); - for (i=0; i 1) { - CurFrmLen = le16_to_cpu(((u16 *) pRxBuffer)[TotalLength / sizeof(u16) + i - 4]); - // ZD1211DEBUG(2, "[RX] CurFrmLen = %x\n", CurFrmLen); - } else - CurFrmLen = TotalLength; - if (CurFrmLen == 0) - break; - rx_struct_array[i] = list_entry(macp->active_rx_list.next, - struct rx_list_elem, list_elem); - list_del(&(rx_struct_array[i]->list_elem)); - rx_array_cnt++; - ZD1211DEBUG(2, "CurFrmLen = %x\n", CurFrmLen); - skb = rx_struct_array[i]->skb; - rfd = RFD_POINTER(skb, macp); - - rfd->CbStatus = cpu_to_le32(RFD_STATUS_COMPLETE); - rfd->ActualCount = cpu_to_le32(CurFrmLen); - - if (i > 0) { - memcpy(&rfd->RxBuffer[macp->rxOffset],pRxBuffer + tmpLen,CurFrmLen); - } - - tmpLen += (CurFrmLen & ~0x03); - if (CurFrmLen & 0x03) - tmpLen += 4; - } - } else { - // last_pkt_len = 509, 510, 511 - // wait next Rx - ZD1211DEBUG(0, "Wait Rx Frames Length Info!!\n"); - //ZD1211DEBUG(2, "last_pkt_len = %x\n", last_pkt_len); - macp->WaitLenInfoCnt++; - rx_struct->UnFinishFrmLen = ((TotalLength / macp->wMaxPacketSize) + 1) - * (macp->wMaxPacketSize); - // zd1205_dump_data("pRxBuffer", (u8 *)pRxBuffer, TotalLength); - } - zd1211_submit_rx_urb(macp); - - if (!rx_struct->UnFinishFrmLen) { - macp->total_rx_cnt = rx_array_cnt; - macp->rx_struct_array = rx_struct_array; - zd1205_rx_isr(macp); - } - - if (dot11Obj.QueueFlag & MGT_QUEUE_SET) { - defer_kevent(macp, KEVENT_PROCESS_SIGNAL); - } - spin_unlock(&macp->intr_lock); -} -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -void zd1211_rx_comp_cb(struct urb *urb) -#else -void zd1211_rx_comp_cb(struct urb *urb, struct pt_regs *regs) -#endif -{ - struct zd1205_private *macp = urb->context; - if ((!macp) || !test_bit(ZD1211_RUNNING, &macp->flags)) - return; - if (!netif_device_present(macp->device)) - return; - if (urb->status != 0) { - zd1211_DumpErrorCode(macp, urb->status); - if ((urb->status != -ENOENT) && - (urb->status != -ECONNRESET) && - (urb->status != -ESHUTDOWN)) { - // printk("nonzero read bulk status received: %d\n", urb->status); -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - if (urb->status == USB_ST_INTERNALERROR) - return; -#else - if (urb->status == -EPIPE) { - printk("nonzero read bulk status received: -EPIPE\n"); - return; - } - if (urb->status == -EPROTO) { - printk("nonzero read bulk status received: -EPROTO\n"); - return; - } -#endif - zd1211_submit_rx_urb(macp); - return; - } - return; - } - if (urb->actual_length == 0) { - FPRINT("Got Length = 0"); - zd1211_submit_rx_urb(macp); - return; - } - macp->read_urb = urb; - zd1211_rx_isr((unsigned long) macp); -} +//================================================================ +// Housekeeping Every 0.5 s +//================================================================ -//callback function for interrupt or response -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -void zd1211_intr_cb(struct urb *urb) -#else -void zd1211_intr_cb(struct urb *urb, struct pt_regs *regs) -#endif -{ - struct zd1205_private *macp = urb->context; - u16 intNum; - int status; - u32 actual_length = urb->actual_length; - - if (!macp) - return; - - spin_lock(&macp->intr_lock); - - if (urb->status != 0) { - zd1211_DumpErrorCode(macp, urb->status); - if (urb->status == -ENODEV) { //device was removed - FPRINT("Device was removed!!!"); - macp->bUSBDeveiceAttached = 0; - wake_up(&macp->regSet_wait); - wake_up_interruptible(&macp->iorwRsp_wait); - - spin_unlock(&macp->intr_lock); - return; - } - - switch (urb->status) { - case -ECONNRESET: - case -ENOENT: - case -ESHUTDOWN: -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) - case -EPROTO: -#endif - macp->bUSBDeveiceAttached = 0; - FPRINT("Device was down!!!"); -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) - spin_unlock(&macp->intr_lock); - return; -#endif - break; - default: - printk("nonzero intr status received: %d\n", urb->status); - break; - } - } else { - if (macp->IntEPBuffer[0] != 0x01) - FPRINT("Got unknown packet"); - - switch (macp->IntEPBuffer[1]) { - case EPINT_IORDRsp: - // this is USB_READ_REGISTER response - macp->ReadRegCount = (u16)actual_length; - - //intNum = *(u16 *)(macp->IntEPBuffer+2); - intNum = macp->IntEPBuffer[2] + (((u16)macp->IntEPBuffer[3]) << 8); - - if (intNum == (InterruptCtrl | macp->USBCSRAddress)) { - // Handle non-RxTx interrupt - if (macp->bHandleNonRxTxRunning) { - printk("Impossible, interrupt happen!!!!! %x\n", intNum); - break; - } - // disable non-RxTx interrupt - // No need to disable interrupt, firmware will do it. - macp->bHandleNonRxTxRunning = 1; - memcpy(macp->IntEPBuffer3, macp->IntEPBuffer, MAX_EPINT_BUFFER); - defer_kevent(macp, KEVENT_NON_TX_RX_INT); - } else { - // handle read register - memcpy(macp->IntEPBuffer2, macp->IntEPBuffer, MAX_EPINT_BUFFER); - set_bit(ZD1211_REQ_COMP, &macp->flags); - wake_up_interruptible(&macp->iorwRsp_wait); - } - break; - - case EPINT_RetryFial_Event: { - u8 *pMacAddr = macp->IntEPBuffer + 4; - // u8 NewRate = (u8)(*(u16 *)(macp->IntEPBuffer + 2)); - u8 NewRate = (u8)macp->IntEPBuffer[2]; - u16 aid; -#if fTX_PWR_CTRL - if (macp->TxOFDMType >= cTX_48M) - macp->TxOFDMCnt = 0; -#endif - - if (macp->IntEPBuffer[10] & BIT_0) - macp->bIBSS_Wakeup_Dest = 1; - // ZD1211DEBUG(2, "Retry Failed!!!\n"); - // ZD1211DEBUG(2, "NewRate = %x\n", NewRate); - aid = zd_AidLookUp(pMacAddr); - zd_EventNotify(EVENT_TX_COMPLETE, ZD_RETRY_FAILED, 0xff, (U32)aid); - macp->retryFailCnt += le16_to_cpu(*(u16 *)(macp->IntEPBuffer + 10)); - break; - } - default: - FPRINT("Got Unknown interrupt!!!"); - break; - } - } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) - //memset(macp->IntEPBuffer, 0x0, MAX_EPINT_BUFFER); +void zd1211_TxCalibration(struct zd1205_private *macp) { + static u32 loop = 0; - //use bulk instead of interrupt in - usb_fill_bulk_urb(macp->intr_urb, macp->usb, - usb_rcvbulkpipe(macp->usb, EP_INT_IN), - macp->IntEPBuffer, MAX_EPINT_BUFFER, - zd1211_intr_cb, macp); + static u16 TrackingLoop = 0; + static u32 accumulate = 0; + u8 setpoint; + u16 channel; + u32 average = 0; + u32 tmpvalue; + static u16 TrackingCnt = 0; + static u32 accumulate_OFDM = 0; + static u16 TrackingCnt_OFDM = 0; + u8 PreTxOFDMType = cTX_CCK; - /* macp->intr_urb->transfer_flags |= URB_ASYNC_UNLINK; */ - status = SUBMIT_URB(macp->intr_urb, GFP_ATOMIC); + loop++; - if (status) - FPRINT("Can't resubmit interrupt urb!!!"); -#endif - spin_unlock(&macp->intr_lock); - return; -} +#if fTX_PWR_CTRL -//callback function for register get/set -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -void zd1211_reg_cb(struct urb *urb) -#else -void zd1211_reg_cb(struct urb *urb, struct pt_regs *regs) + if ((loop % 64) == 0) + { + if (macp->bTraceSetPoint) { + + + LockPhyReg(&dot11Obj); + if (TrackingLoop == TRACKING_NUM) { + TrackingLoop = 0; + + + if (TrackingCnt && PURE_A_MODE != macp->cardSetting.MacMode ) { + average = (u32) (accumulate / TrackingCnt); + channel = dot11Obj.Channel; + setpoint = macp->EepSetPoint[channel-1]; + if (macp->EnableTxPwrCtrl) { + if (average < (u32) (setpoint - cPWR_CTRL_GUARD)) + zd1205_IncreaseTxPower(macp, cTX_CCK); + else if (average > setpoint) + + zd1205_DecreaseTxPower(macp, cTX_CCK); + } + accumulate = 0; + TrackingCnt = 0; + } + + if (TrackingCnt_OFDM) { + average = (u32) (accumulate_OFDM / TrackingCnt_OFDM); + channel = dot11Obj.Channel; + if(PURE_A_MODE != macp->cardSetting.MacMode) { + setpoint = macp->SetPointOFDM[macp->TxOFDMType - cTX_OFDM][channel - 1]; + } else if (PURE_A_MODE == macp->cardSetting.MacMode) { + u8 UselessInt;//Only for store return Integration value that we don't need + int ret; + ret = a_OSC_get_cal_int( + channel, + macp->cardSetting.LastSentTxRate , + &UselessInt, &setpoint); + if(0 != ret) + printk("a_OSC_get_cal_int can't found the channel\n"); + } + //printk("Enter TrackingCnt_OFDM(CH:%d)(SET:%d)(avg:%d)\n",channel,setpoint,average); + if (macp->EnableTxPwrCtrl) { + if (average < (u32) (setpoint - cPWR_CTRL_GUARD)) + zd1205_IncreaseTxPower(macp, cTX_OFDM); + else if (average > setpoint) + zd1205_DecreaseTxPower(macp, cTX_OFDM); + } + accumulate_OFDM = 0; + TrackingCnt_OFDM = 0; + } + } else { + + TrackingLoop ++; + tmpvalue = zd_readl(rLED_CTRL); + if (tmpvalue & BIT_0) { // Continuous Tx + if (tmpvalue & BIT_2) { // Tx OFDM + + macp->TxPwrOFDM ++; + macp->TxOFDMCnt = cTX_SENT_LEN + 1; + tmpvalue = zd_readl(ZD1205_CR132); + tmpvalue &= 0xFF; + macp->TxOFDMType = cTX_OFDM; + if (tmpvalue == 0xC) + macp->TxOFDMType = cTX_54M; + + else if (tmpvalue == 0x8) + + + + macp->TxOFDMType = cTX_48M; + } else + macp->TxPwrCCK ++; // Tx CCK + } + + if (macp->TxPwrCCK) { // New sent after last read + tmpvalue = zd_readl(ZD1205_CR58); + tmpvalue &= 0xFF; + accumulate += tmpvalue; + TrackingCnt ++; + + macp->TxPwrCCK = 0; + + } + + + if (macp->TxPwrOFDM) { + if (macp->TxOFDMCnt > cTX_SENT_LEN) { // make sure Tx by HMAC (for UMAC) + tmpvalue = zd_readl(ZD1205_CR57); + tmpvalue &= 0xFF; + accumulate_OFDM += tmpvalue; + TrackingCnt_OFDM ++; + PreTxOFDMType = macp->TxOFDMType; + } else { + if (PreTxOFDMType != macp->TxOFDMType) { + + accumulate_OFDM = 0; + TrackingCnt_OFDM = 0; + } + + } + macp->TxPwrOFDM = 0; + } + } + UnLockPhyReg(&dot11Obj); + } + } + + +#endif + +} + + +//================================================================ +// Housekeeping Every 1s + + +//================================================================ +void zd1211_CheckWithIPC(struct zd1205_private *macp) { + static u32 loop = 0; + u8 BssType = macp->cardSetting.BssType; + + loop++; + + if ((loop % 10) == 0) + { + // bypass the weak signal in BSS and AP mode + if ( (macp->bAssoc) && + (macp->PHYTestRssi <= 0x18) && + ((BssType == INDEPENDENT_BSS) || + (BssType == PSEUDO_IBSS)) ) { + if (!macp->CR138Flag) { + + LockPhyReg(&dot11Obj); + zd_writel(0xa8, ZD1205_CR138); + + + UnLockPhyReg(&dot11Obj); + macp->CR138Flag = 1; + } + } + else if (macp->CR138Flag) { + LockPhyReg(&dot11Obj); + zd_writel(0x28, ZD1205_CR138); + UnLockPhyReg(&dot11Obj); + macp->CR138Flag = 0; + } + +#if 0 + // solve the throughput problem when communicate with the IPC card + if ( ((macp->rxDataPerSec + macp->txDataPerSec) > 50000) && + + (macp->RF_Mode == RFMD_RF) && + (BssType != PSEUDO_IBSS) && + (macp->IPCFlag != 4) ) { + + + if ( (macp->rxDataPerSec > 3*macp->txDataPerSec) && + (macp->PHYTestRssi <= 0x24) ) { + if ((!macp->IPCFlag) || (macp->IPCFlag!=1)) { + LockPhyReg(&dot11Obj); + zd_writel(0x0a, ZD1205_CR87); + zd_writel(0x04, ZD1205_CR89); + UnLockPhyReg(&dot11Obj); + macp->AdapterMaxRate = 8; // MAX = 24M + macp->IPCFlag = 1; + } + } else if ( 3*macp->rxDataPerSec < macp->txDataPerSec ) { + if ((!macp->IPCFlag) || (macp->IPCFlag != 3)) { + LockPhyReg(&dot11Obj); + zd_writel(0x2A, ZD1205_CR87); + zd_writel(0x24, ZD1205_CR89); + UnLockPhyReg(&dot11Obj); + macp->AdapterMaxRate = 0x0B; // MAX = 54M + + macp->IPCFlag = 3; + } + } else { + if ((!macp->IPCFlag) || (macp->IPCFlag != 2)) { + LockPhyReg(&dot11Obj); + zd_writel(0x10, ZD1205_CR87); + zd_writel(0x0C, ZD1205_CR89); + UnLockPhyReg(&dot11Obj); + macp->AdapterMaxRate = 9; // MAX = 36M + macp->IPCFlag = 2; + + } + } + + } else if ((macp->RF_Mode == RFMD_RF) && + + (BssType == PSEUDO_IBSS) && + (macp->IPCFlag != 4)) { + if ((!macp->IPCFlag) || (macp->IPCFlag != 3)) { + LockPhyReg(&dot11Obj); + zd_writel(0x2A, ZD1205_CR87); + zd_writel(0x24, ZD1205_CR89); + UnLockPhyReg(&dot11Obj); + macp->AdapterMaxRate = 0x0B; // MAX = 54M + macp->IPCFlag = 3; + } + } + + else if ((macp->RF_Mode == RFMD_RF) && + (macp->IPCFlag != 4) ) { + if ( (!macp->IPCFlag) || (macp->IPCFlag != 2)) { + LockPhyReg(&dot11Obj); + zd_writel(0x10, ZD1205_CR87); + zd_writel(0x0C, ZD1205_CR89); + + UnLockPhyReg(&dot11Obj); + macp->AdapterMaxRate = 9; // MAX = 36M + macp->IPCFlag = 2; + } + } + + macp->rxDataPerSec = 0; + macp->txDataPerSec = 0; +#endif + + if (macp->LinkLEDn == LED2) + iLED_OFF(macp, LED1); + + if (!macp->bAssoc) { + macp->LinkTimer ++; + + if ((macp->LinkTimer == 1) && (macp->LinkLED_OnDur != 0)) { + iLED_ON(macp, macp->LinkLEDn); + + } + + if (macp->LinkTimer == (macp->LinkLED_OnDur + 1)) { + iLED_OFF(macp, macp->LinkLEDn); + } + + + if (macp->LinkTimer >= (macp->LinkLED_OnDur + macp->LinkLED_OffDur)) + macp->LinkTimer = 0; + } + +#if 0 + if (dot11Obj.PhyTest & BIT_8) { + + u32 tmpvalue; + LockPhyReg(&dot11Obj); + tmpvalue = zd_readl(ZD1205_CR122); + if ((tmpvalue & 0xFF) != 0xFF) + zd_writel(0xFF, ZD1205_CR122); + + else + zd_writel(0x00, ZD1205_CR122); + UnLockPhyReg(&dot11Obj); + } #endif -{ - struct zd1205_private *macp = urb->context; - set_bit(ZD1211_CMD_FINISH, &macp->flags); - wake_up(&macp->regSet_wait); + + }// end of (loop % 10) } -void zd1211_handle_non_tx_rx(struct zd1205_private *macp) -{ - u32 intr_status; - // in current design, no need to use spinlock - intr_status = le16_to_cpu(*(u16 *)(macp->IntEPBuffer3+4)); - // ZD1211DEBUG(2, "intr_status = %x\n", intr_status); - - if (!intr_status) - return; - if (intr_status & WAKE_UP) { - ZD1211DEBUG(1, "WAKE_UP\n"); - down(&macp->ps_sem); - - if (dot11Obj.bDeviceInSleep) - zd1205_process_wakeup(macp); - up(&macp->ps_sem); - } - if (intr_status & CFG_NEXT_BCN) { - //ZD1211DEBUG(2, "CFG_NEXT_BCN\n"); - if (macp->config_next_bcn_en) { - macp->bcnCnt++; - down(&macp->bcn_sem); - zd_EventNotify(EVENT_TBCN, 0, 0, 0); - up(&macp->bcn_sem); - - if (macp->cardSetting.BssType == INDEPENDENT_BSS) { - macp->bFrmRxed1 = 0; - } else if (macp->cardSetting.BssType == AP_BSS) { - if (macp->dtimCount == 0) - macp->dtimCount = macp->cardSetting.DtimPeriod; - macp->dtimCount--; - } - } - } - if (intr_status & DTIM_NOTIFY) { - ZD1211DEBUG(2, "DTIM_NOTIFY\n"); - if (macp->dtim_notify_en) { - macp->dtimCnt++; - zd_EventNotify(EVENT_DTIM_NOTIFY, 0, 0, 0); - } - } - macp->bHandleNonRxTxRunning = 0; - - // enable non-RxTx interrupt - zd1205_enable_int(); - return; -} +// Switch to another antenna +void zd1211_SwitchAntenna(struct zd1205_private *macp) { + u32 tmpvalue; -int zd1211_submit_rx_urb(struct zd1205_private *macp) -{ - struct rx_list_elem *rx_struct = NULL; - u8 *rx_buff = NULL; - u32 bufLen = MAX_WLAN_SIZE; - int res; - //int memflags = GFP_KERNEL; - - rx_struct = zd1205_start_ru(macp); - if (!rx_struct) - return 1; - - if (rx_struct->UnFinishFrmLen) { - rx_buff = (u8 *)(rx_struct->dma_addr)+ (rx_struct->UnFinishFrmLen); - bufLen -= (rx_struct->UnFinishFrmLen); - } else - rx_buff = (u8 *)(rx_struct->dma_addr); - - usb_fill_bulk_urb(macp->rx_urb, macp->usb, - usb_rcvbulkpipe(macp->usb, EP_DATA_IN), - rx_buff, bufLen, zd1211_rx_comp_cb, macp); - - /* macp->rx_urb->transfer_flags |= URB_ASYNC_UNLINK; */ - if ((res = SUBMIT_URB(macp->rx_urb, GFP_ATOMIC))) { - printk(KERN_ERR "zd1211: failed rx_urb\n"); - zd1211_DumpErrorCode(macp, res); - } - return 0; -} + LockPhyReg(&dot11Obj); -void zd1211_tx_isr(unsigned long parm) -{ - struct zd1205_private *macp = (struct zd1205_private *)parm; - zd1205_SwTcb_t *sw_tcb; - ZENTER(3); - - spin_lock(&macp->intr_lock); - sw_tcb = macp->activeTxQ->first; - if (sw_tcb) - sw_tcb->pTcb->CbStatus = cpu_to_le32(CB_STATUS_COMPLETE); - zd1205_tx_isr(macp); - spin_unlock(&macp->intr_lock); - ZEXIT(3); + tmpvalue = zd_readl(ZD1205_CR10); + tmpvalue ^= BIT_1; + zd_writel(tmpvalue, ZD1205_CR10); + + tmpvalue = zd_readl(ZD1205_CR9); + tmpvalue ^= BIT_2; + zd_writel(tmpvalue, ZD1205_CR9); + + UnLockPhyReg(&dot11Obj); } -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -void zd1211_tx_comp_cb(struct urb *urb) -#else -void zd1211_tx_comp_cb(struct urb *urb, struct pt_regs *regs) -#endif -{ - struct zd1205_private *macp = urb->context; - if ((!macp) || !test_bit(ZD1211_RUNNING, &macp->flags)) - return; - if (!netif_device_present(macp->device)) - return; - if (urb->status) { - printk("Tx status %d", urb->status); - zd1211_DumpErrorCode(macp, urb->status); - } - macp->usbTxCompCnt++; - clear_bit(ZD1211_TX_BUSY, &macp->flags); - macp->TxStartTime = 0; - macp->write_urb = urb; - zd1211_tx_isr((unsigned long) macp); - return; +//----------------------------------------------------------------------------- +#if fPROG_FLASH +// 1:Intel Flash; 0: MXIC, Winbond, AMD, Atmel... +#define cFLASH_MXIC 0 +#define cFLASH_INTEL 1 + +u16 zd1211_SetHighAddr(struct zd1205_private *macp, u16 high_addr) { + u16 tmp_cr203; + u16 WriteAddr[cMAX_MULTI_WRITE_REG_NUM]; + u16 WriteData[cMAX_MULTI_WRITE_REG_NUM]; + u16 WriteIndex = 0; + + tmp_cr203 = ((high_addr << 1) & ~mMASK(2)) + (high_addr & mBIT(0)); + + if (macp->FlashType == cFLASH_INTEL) + { + mFILL_WRITE_REGISTER(rLED_CTRL, 0); + if (mTEST_BIT(high_addr, 7)) + mFILL_WRITE_REGISTER(rLED_CTRL, LED2); + } + + + mFILL_WRITE_REGISTER(ZD1205_CR203, tmp_cr203); + zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, true); + return tmp_cr203; } -// return send_length -int zd1211_submit_tx_urb(struct zd1205_private *macp) + +/* abs_addr: in word */ +u16 zd1211_SetAbsAddr(struct zd1205_private *macp, u32 abs_addr, u16 *get_cr203) { - u8 *dst = macp->tx_buff; - u32 TotalLength = 0; + static u16 pre_high_addr = 0, pre_cr203 = 0; - zd1205_Ctrl_Set_t *pCtrlSet; - zd1205_TBD_t *Tbd; - zd1205_SwTcb_t *sw_tcb; - int res; - //int memflags = GFP_KERNEL; - - if (!macp->activeTxQ->count) - return 0; - - if (test_bit(ZD1211_TX_BUSY, &macp->flags)) - return 0; - - ZENTER(3); - - sw_tcb = macp->activeTxQ->first; - pCtrlSet = sw_tcb->pHwCtrlPtr; - Tbd = sw_tcb->pFirstTbd; - - // We skip TCB address, Address 1, NextLength = 16 bytes, add 2 bytes for total length - memcpy(dst, (u8 *)(pCtrlSet), 3); - dst += 3; - TotalLength += 3; - memcpy(dst, (u8 *)(pCtrlSet)+(3+8),1); // 8 means: skip TCB address - - dst += 1; - TotalLength += 1; - dst += 2; // reserve 2 bytes for total length - TotalLength += 2; - memcpy(dst, (u8 *)(pCtrlSet)+(3+8+1+6+2),5);// 6:skip address 1, 2:skip next length - - dst += 5; - TotalLength += 5; - ZD1211DEBUG(2, "Tx Ctrl Length = %x\n", TotalLength); - Tbd++; - //Mac Header - memcpy(dst, (u8 *)le32_to_cpu(Tbd->TbdBufferAddrLowPart), le32_to_cpu(Tbd->TbdCount)); - ZD1211DEBUG(2, "MAC Header Length = %x\n", Tbd->TbdCount); - dst += le32_to_cpu(Tbd->TbdCount); - TotalLength += le32_to_cpu(Tbd->TbdCount); - Tbd++; - //MAC Body - memcpy(dst, (u8 *)le32_to_cpu(Tbd->TbdBufferAddrLowPart), le32_to_cpu(Tbd->TbdCount)); - ZD1211DEBUG(2, "Tx DATA Length = %x\n", Tbd->TbdCount); - dst += le32_to_cpu(Tbd->TbdCount); - TotalLength += le32_to_cpu(Tbd->TbdCount); - Tbd++; - ZD1211DEBUG(2, "TotalLength = %x\n", TotalLength); - // write down total length - *((u16 *)(macp->tx_buff+4)) = cpu_to_le16((u16)TotalLength + 14); - ZD1211DEBUG(2, "macp->tx_buff+4 = %x\n", *((u16 *)(macp->tx_buff+4))); - - usb_fill_bulk_urb(macp->tx_urb, macp->usb, - usb_sndbulkpipe(macp->usb, EP_DATA_OUT), - macp->tx_buff, TotalLength,zd1211_tx_comp_cb, macp); - - macp->tx_urb->transfer_buffer_length = TotalLength; - /* macp->tx_urb->transfer_flags |= URB_ASYNC_UNLINK; */ - res = SUBMIT_URB(macp->tx_urb, GFP_ATOMIC); - if (res) { - printk("error in tx submit urb: %d", res); - zd1211_DumpErrorCode(macp, res); - goto err; - } - macp->usbTxCnt++; - set_bit(ZD1211_TX_BUSY, &macp->flags); - ZEXIT(3); - return TotalLength; -err: - return 0; -} + u16 high_addr; -void zd1211_disable_net_traffic(struct zd1205_private *macp) -{ - // When suspend, call this - if (macp->RF_Mode == AL2230_RF) - HW_Set_IF_Synthesizer(&dot11Obj, 0x71687); - - LockPhyReg(&dot11Obj); - zd_writel(0xFF, ZD_CR252); - zd_writel(0xc, ZD_CR253); - zd_writel(0x3, ZD_CR255); - UnLockPhyReg(&dot11Obj); - - zd_writel(0x0, BCNInterval); + high_addr = (u16) (abs_addr >> 14); + if (pre_high_addr != high_addr) + { + pre_cr203 = zd1211_SetHighAddr(macp, high_addr); + pre_high_addr = high_addr; + } - // Turn off LEDs - zd_writel(0x0, rLED_CTRL); - // Turn off MAC - zd_writel(0x3, PS_Ctrl); + if (get_cr203 != NULL) + *get_cr203 = pre_cr203; - dot11Obj.PhyTest = 0; - macp->LinkTimer = 0; + return ((u16) (abs_addr & mMASK(14))); } -int zd1211_GetUSBSpecData(struct zd1205_private *macp, u8 *pBuffer, - u32 uImgLength, u16 uCodeOfst) -{ - u32 uCurLength; - int result = 0; - u8 *image, *ptr; - u32 uploadLength = uImgLength; - image = kmalloc(uImgLength, GFP_KERNEL); - ptr = image; - while (uImgLength > 0) { - uCurLength = uImgLength; - if (uCurLength > 60) - uCurLength = 60; - - // Get data from device - result = usb_control_msg(macp->usb, usb_rcvctrlpipe(macp->usb, 0), - FIRMWARE_READ_DATA, USB_DIR_IN | 0x40, - uCodeOfst, 0, image, uCurLength, 1000 * HZ); - - // ZD1211DEBUG(3, "result = %d\n", result); - if (result < 0) { - printk(KERN_ERR "zd1211: usb_rcvctrlpipe 1 fail: %02X\n", result); - goto exit; - } - - uImgLength -= uCurLength; - image += uCurLength; - uCodeOfst += (u16) (uCurLength / 2); // in Words (16 bit) - result = 0; - } +void zd1211_FlashCmdWrite(struct zd1205_private *macp, u8 Cmd) { + u32 tmpvalue; + u16 WriteAddr[cMAX_MULTI_WRITE_REG_NUM]; + u16 WriteData[cMAX_MULTI_WRITE_REG_NUM]; + u16 WriteIndex = 0; - image -= uploadLength; //move to buffer head - memcpy(pBuffer, image, uploadLength); + tmpvalue = zd1211_readl(ZD1205_CR203, true); + if (macp->FlashType == cFLASH_MXIC) + { + mFLASH_WRITE_EVEN_ADDR(0xAAA, 0xAA, tmpvalue); + mFLASH_WRITE_ODD_ADDR(0x555, 0x55, tmpvalue); + mFLASH_WRITE_EVEN_ADDR(0xAAA, Cmd, tmpvalue); + } else -exit: - // kfree(image); - kfree(ptr); - return result; + mFLASH_WRITE_EVEN_ADDR(0, Cmd, tmpvalue); + zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); } -//return 0: success, others: fail -int zd1211_LoadUSBSpecCode(struct zd1205_private *macp, u8 *pBuffer, u32 uImgLength, - u16 uCodeOfst, u8 bReboot) -{ - u8 ret; - int result = 0; - u8 *image, *ptr; - - ZD1211DEBUG(1, "uImgLength = %x\n", uImgLength); - image = kmalloc(uImgLength, GFP_KERNEL); - ptr = image; - memcpy(image, pBuffer, uImgLength); - - while (uImgLength > 0) { - /* Originally uImgLength was checkedto be > 4096 which is was way too much. - * This was noted and changed to be 512 as suggested by Chris Brooks. - */ - int translen = (uImgLength > 512) ? 512 : uImgLength; - ZD1211DEBUG(1, "translen = %x\n", translen); - ZD1211DEBUG(1, "uCodeOfst = %x\n", uCodeOfst); - - result = usb_control_msg(macp->usb, usb_sndctrlpipe(macp->usb, 0), - FIRMWARE_DOWNLOAD, USB_DIR_OUT | 0x40, - uCodeOfst, 0, image, translen, HZ); - - ZD1211DEBUG(1, "result = %x\n", result); - - if (result < 0) { - printk(KERN_ERR "zd1211: usb_control_msg 1 fail: %02X\n", result); - goto exit; - } - /* We should update stuff using result here, _NOT_ translen - * noted by Chris Brooks - */ - uImgLength -= result; - image += result; - uCodeOfst += (u16) (result / 2); // in Word (16 bit) - result = 0; - } - - if (bReboot) { - result = usb_control_msg(macp->usb, usb_rcvctrlpipe(macp->usb, 0), - FIRMWARE_CONFIRM, USB_DIR_IN | 0x40, 0, 0, - &ret, sizeof(ret), 1000 * HZ); - if (result < 0) { - printk(KERN_ERR "zd1211: usb_control_msg 2 fail: %02X\n", result); - goto exit; - } - ZD1211DEBUG(1, "FIRMWARE_CONFIRM = %x\n", ret); - if (ret & 0x80) { - FPRINT("USB Download Boot code error"); - goto exit; - } else { - ZD1211DEBUG(0, "USB Download Boot code success\n"); - } - result = 0; - } -exit: - //kfree(image); - kfree(ptr); - return result; +void zd1211_FlashResetCmd(struct zd1205_private *macp) { + if (macp->FlashType == cFLASH_MXIC) + zd1211_writel(0, 0xF0, false); + else + zd1211_FlashCmdWrite(macp, 0xFF); } + + +void zd1211_InitHighAddr(struct zd1205_private *macp) { + u16 WriteAddr[cMAX_MULTI_WRITE_REG_NUM]; + + u16 WriteData[cMAX_MULTI_WRITE_REG_NUM]; + u16 WriteIndex = 0; + + mFILL_WRITE_REGISTER(UMAC_WAIT_STATE, 0x022); // 25ns * 2 + mFILL_WRITE_REGISTER(ZD1205_CR11 + (u16) (macp->USBCSRAddress), 0x15); + // Use AntSel to control VPEN for Intel Flash + mFILL_WRITE_REGISTER(ZD1205_CR10 + (u16) (macp->USBCSRAddress), 0x82); + + mFILL_WRITE_REGISTER(ZD1205_CR9 + (u16) (macp->USBCSRAddress), 0x24); + mFILL_WRITE_REGISTER(ZD1205_CR204 + (u16) (macp->USBCSRAddress), 0x7C); + mFILL_WRITE_REGISTER(ZD1205_CR203 + (u16) (macp->USBCSRAddress), 0); + zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); + if (macp->FlashType == 0xFF) + { + u32 tmpvalue; + + + macp->FlashType = cFLASH_INTEL; + zd1211_FlashCmdWrite(macp, 0x90); // Read Chip ID + + tmpvalue = zd1211_readl(0, false); + if ((tmpvalue & 0xFFFF) != 0x8989) // Intel Manufacture Code + macp->FlashType = cFLASH_MXIC; + } + zd1211_SetAbsAddr(macp, 0, NULL); + zd1211_FlashResetCmd(macp); + + +} + + +/* Top: 8k byte / sector ==> 0 - 0x1000 (word address) */ +/* ==> sec0 address = 0; sec1 address = 0x1000 ... */ +void zd1211_FlashSecErase(struct zd1205_private *macp, u16 Sec0) { + u32 tmpvalue; + u16 WriteAddr[cMAX_MULTI_WRITE_REG_NUM]; + u16 WriteData[cMAX_MULTI_WRITE_REG_NUM]; + u16 WriteIndex = 0; + + LockPhyReg(&dot11Obj); + tmpvalue = zd1211_readl(ZD1205_CR203, true); + if (macp->FlashType == cFLASH_MXIC) + { + zd1211_FlashCmdWrite(macp, 0x80); + mFLASH_WRITE_EVEN_ADDR(0xAAA, 0xAA, tmpvalue); + mFLASH_WRITE_ODD_ADDR(0x555, 0x55, tmpvalue); + mFLASH_WRITE_EVEN_ADDR(Sec0 << 1, 0x30, tmpvalue); + } else + { + mFLASH_SET_EVEN_ADDR(tmpvalue); + mFILL_WRITE_REGISTER(Sec0, 0x20); + + mFILL_WRITE_REGISTER(Sec0, 0xD0); + } + + zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); + UnLockPhyReg(&dot11Obj); +} + + + + + +void zd1211_EraseFlash(struct zd1205_private *macp) { + u32 ii; + u32 tmpvalue; + u16 low_addr, jj; + + macp->bDisableTx = 1; + //USB_StopTxEP(Adapter); + LockPhyReg(&dot11Obj); + macp->bAllowAccessRegister = 0; + + + zd1211_InitHighAddr(macp); + + if (macp->FlashType == cFLASH_MXIC) + + { + zd1211_FlashCmdWrite(macp, 0x80); + zd1211_FlashCmdWrite(macp, 0x10); + } else + { + for (ii = 0; ii < 0x400000L; ii += 0x10000L) { + low_addr = zd1211_SetAbsAddr(macp, ii, NULL); + zd1211_FlashSecErase(macp, low_addr); + for (jj = 0; jj < 100; jj ++) { + tmpvalue = zd1211_readl(0, false); + if (tmpvalue & 0x8000) + break; + + mdelay(10); // Sleep 10ms + } + } + + } + + + //macp->bAllowAccessRegister = 1; + + + + UnLockPhyReg(&dot11Obj); + + //macp->bDisableTx = 0; +} + + +#if !fPROG_FLASH_BY_FW +void FlashProgram(struct zd1205_private *macp, u16 addr0, u8 *pbuf, u16 tmpvalue) { + u16 WriteAddr[cMAX_MULTI_WRITE_REG_NUM]; + u16 WriteData[cMAX_MULTI_WRITE_REG_NUM]; + u16 WriteIndex = 0; + u16 jj; + + if (macp->FlashType == cFLASH_MXIC) + { + for (jj = 0; jj < 16; jj ++) { + WriteIndex = 0; + mFLASH_SET_EVEN_ADDR(tmpvalue); + zd1211_FlashCmdWrite(macp, 0xA0); + mFILL_WRITE_REGISTER(addr0 + jj, pbuf[jj * 2]); + zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false; + } + + for (jj = 0; jj < 16; jj ++) { + WriteIndex = 0; + mFLASH_SET_ODD_ADDR(tmpvalue); + zd1211_FlashCmdWrite(macp, 0xA0); + mFILL_WRITE_REGISTER(addr0 + jj, pbuf[jj * 2 + 1]); + + if (jj == 15) { + // Read Word Addr + + mFLASH_SET_EVEN_ADDR(tmpvalue); + } + + zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); + } + } else + { + mFLASH_SET_EVEN_ADDR(tmpvalue); + mFILL_WRITE_REGISTER(addr0, 0xE8); + mFILL_WRITE_REGISTER(addr0, 0x0F); + for (jj = 0; jj < 8; jj ++) + mFILL_WRITE_REGISTER(addr0 + jj, pbuf[jj * 2]); + zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); + + + WriteIndex = 0; + for (jj = 8; jj < 16; jj ++) + + mFILL_WRITE_REGISTER(addr0 + jj, pbuf[jj * 2]); + + mFILL_WRITE_REGISTER(0, 0xD0); + zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); + + WriteIndex = 0; + mFLASH_SET_ODD_ADDR(tmpvalue); + mFILL_WRITE_REGISTER(addr0, 0xE8); + mFILL_WRITE_REGISTER(addr0, 0x0F); + for (jj = 0; jj < 8; jj ++) + mFILL_WRITE_REGISTER(addr0 + jj, pbuf[jj * 2 + 1]); + zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); + + WriteIndex = 0; + for (jj = 8; jj < 16; jj ++) + mFILL_WRITE_REGISTER(addr0 + jj, pbuf[jj * 2 + 1]); + mFILL_WRITE_REGISTER(0, 0xD0); + zd1211_WriteMultiRegister(WriteAddr, WriteData, WriteIndex, false); + } + + } +#endif + + + + int zd1211_ProgFlash(struct zd1205_private *macp, u32 StartAddr, + u32 BufLenInBytes, u8 *pDownloadBuffer) { + int i; + u32 ii; + u16 low_addr, jj; + int chk_flg = 1; + u16 tmpvalue; +#if fPROG_FLASH_BY_FW + + u16 WriteData[cMAX_MULTI_RF_REG_NUM]; + u16 WriteIndex = 0; +#endif + +#if fVERIFY_FLASH + + u16 ReadAddr[cMAX_MULTI_READ_REG_NUM]; + u16 ReadData[cMAX_MULTI_READ_REG_NUM]; + u16 ReadIndex = 0; + u16 chk_cnt = 0; +#endif + + macp->bDisableTx = 1; + //USB_StopTxEP(Adapter); + + LockPhyReg(&dot11Obj); + macp->bAllowAccessRegister = 0; + + zd1211_InitHighAddr(macp); + StartAddr /= 2; // Convert Byte Addr to Word Addr + + for (ii = 0; ii < BufLenInBytes / 2; ii += 16) + { + if (macp->FlashType == cFLASH_MXIC) { + if ((ii + StartAddr) >= 0x200000) // 2M Word = 4M Byte + break; + } else { + if ((ii + StartAddr) >= 0x400000) // 4M Word = 8M Byte + break; + } + + low_addr = zd1211_SetAbsAddr(macp, ii + StartAddr, &tmpvalue); + +#if fPROG_FLASH_BY_FW + + WriteIndex = 0; + tmpvalue &= 0x00FF; + tmpvalue |= ((macp->FlashType) << 8); + mFILL_RF_REGISTER(mCLR_BIT((tmpvalue), bmFLASH_A0)); + mFILL_RF_REGISTER(low_addr); + + for (jj = 0; jj < 16; jj ++) + mFILL_RF_REGISTER((u16) pDownloadBuffer[(ii + jj) * 2]); + + zd1211_USB_ProgramFlash(macp, WriteData, WriteIndex); + WriteIndex = 0; + mFILL_RF_REGISTER(mSET_BIT((tmpvalue), bmFLASH_A0)); + mFILL_RF_REGISTER(low_addr); + + for (jj = 0; jj < 16; jj ++) + mFILL_RF_REGISTER((u16) pDownloadBuffer[(ii + jj) * 2 + 1]); + + for (i=0; i<5; i++) { + if (zd1211_USB_ProgramFlash(macp, WriteData, WriteIndex)) + break; + } +#else + zd1211_FlashProgram(macp, low_addr, pDownloadBuffer + 2 * ii, tmpvalue); +#endif + + } + + //macp->bAllowAccessRegister = 1; + UnLockPhyReg(&dot11Obj); + //macp->bDisableTx = 0; + + return chk_flg; + } + +#endif + + int zd1211_USB_SET_RF_REG(u16 *InputValue, int bIs3683A) { + struct zd1205_private *macp = g_dev->priv; + + u8 *pRegBuffer = NULL; + int ret; + u16 size = sizeof(USB_SET_RF); + u16 bufSize; + u32 S_bit_cnt = dot11Obj.S_bit_cnt; + u16 i; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + + if (in_interrupt()) { +#else + if (in_atomic()) { +#endif + FPRINT("********zd1211_USB_SET_RF_REG in_interrupt*********"); + return 0; + } + + down(&macp->reg_sem); + + if (!(macp->bUSBDeveiceAttached)) { + up(&macp->reg_sem); + return 0; + } + + pRegBuffer = kmalloc(size, GFP_KERNEL); + + if (!pRegBuffer) { + up(&macp->reg_sem); + return -ENOMEM; + } else + memset(pRegBuffer, 0x0, size); + + ((PUSB_SET_RF)pRegBuffer)->RequestID = cpu_to_le16(REGID_RFOFDMSET); + + if (bIs3683A) + ((PUSB_SET_RF)pRegBuffer)->Value = cpu_to_le16(1); + else + ((PUSB_SET_RF)pRegBuffer)->Value = cpu_to_le16(2); + + ((PUSB_SET_RF)pRegBuffer)->Index = cpu_to_le16((u16)S_bit_cnt); + + for (i = 0; i < S_bit_cnt; i ++) + ((PUSB_SET_RF)pRegBuffer)->Data[i] = cpu_to_le16(InputValue[i]); + + bufSize = sizeof(u16) * (3+S_bit_cnt); + + if (macp->ep4isIntOut) + usb_fill_int_urb(macp->reg_urb, macp->usb, + usb_sndintpipe(macp->usb, EP_REG_OUT), + pRegBuffer, bufSize, + zd1211_reg_cb, macp, 1); + else + usb_fill_bulk_urb(macp->reg_urb, macp->usb, + usb_sndbulkpipe(macp->usb, EP_REG_OUT), + pRegBuffer, bufSize, + zd1211_reg_cb, macp); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)) + + macp->reg_urb->transfer_flags |= URB_ASYNC_UNLINK; +#endif + + if ((ret = SUBMIT_URB(macp->reg_urb, GFP_ATOMIC))) { + printk(KERN_ERR "zd1211: failed rf reg_urb\n"); + zd1211_DumpErrorCode(macp, ret); + goto out; + } + + macp->regWaitWCompCnt++; + wait_event(macp->regSet_wait, test_bit(ZD1211_CMD_FINISH, &macp->flags)); + macp->regRWCompCnt++; + clear_bit(ZD1211_CMD_FINISH, &macp->flags); + + out: + kfree(pRegBuffer); + up(&macp->reg_sem); + return ret; + } + +#define bmZD_IF_LE 1 +#define bmZD_RF_CLK 2 +#define bmZD_RF_DATA 3 + void + HW_Set_IF_Synthesizer(zd_80211Obj_t *pObj, U32 InputValue) { + u32 S_bit_cnt; + u32 tmpvalue; + u16 WriteData[cMAX_MULTI_RF_REG_NUM]; + u16 WriteIndex = 0; + + S_bit_cnt = pObj->S_bit_cnt; + InputValue = InputValue << (31 - S_bit_cnt); + + //to avoid un-necessary register read/write + //LockPhyReg(pObj); + tmpvalue = zd_readl(ZD_CR203); + tmpvalue = mCLR_BIT(tmpvalue, bmZD_IF_LE); + + // Configure RF by Software + tmpvalue = mCLR_BIT(tmpvalue, bmZD_RF_CLK); + + while (S_bit_cnt) { + InputValue = InputValue << 1; + + if (InputValue & 0x80000000) { + tmpvalue = mSET_BIT(tmpvalue, bmZD_RF_DATA); + mFILL_RF_REGISTER((u16) tmpvalue); + } else { + tmpvalue = mCLR_BIT(tmpvalue, bmZD_RF_DATA); + mFILL_RF_REGISTER((u16) tmpvalue); + } + + if (WriteIndex >= cMAX_MULTI_RF_REG_NUM) { + FPRINT_V("S_bit_cnt over range! ", (u32)pObj->S_bit_cnt); + break; + } + + S_bit_cnt --; + } + + zd1211_USB_SET_RF_REG(WriteData, 0); + //UnLockPhyReg(pObj); + } + + /* ath_desc: Defer tx kill_urb on Linux 2.6.8+ */ + static void zd1211_kill_tx_urb(void *_macp) { + struct zd1205_private *macp = (struct zd1205_private *)_macp; + ZENTER(1); + macp->tx_urb->transfer_flags |= URB_ASYNC_UNLINK; + ZD_USB_KILL_URB(macp->tx_urb); + } + + static void zd1211_tx_timeout(struct net_device *dev) { + struct zd1205_private *macp = dev->priv; + + if (!macp) + return; + + /* ath_desc: added Tx timeout reset */ + printk("%s: Tx timed out, trying reset\n", dev->name); + macp->drv_stats.net_stats.tx_carrier_errors++; + dev->trans_start = jiffies; + defer_kevent(macp, KEVENT_UPDATE_SETTING); + /* ath: On Linux 2.6.8+ usb_kill_urb() cannot be called from an interrupt context, so defer it */ + defer_kevent(macp, KEVENT_KILL_TX_URB); + } + + int zd1211_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) { + struct zd1205_private *macp = dev->priv; + + memcpy(&macp->ifreq, ifr, sizeof(struct ifreq)); + macp->ifcmd = cmd; + defer_kevent(macp, KEVENT_STD_IOCTL); + return 0; + } + +#define ZD1211_TX_TIMEOUT (HZ*10) +#define ZD1211_MTU 1500 + extern struct iw_handler_def p80211wext_handler_def; + +/* ath_desc: added iw_get_stats */ +#ifdef CONFIG_NET_WIRELESS +extern struct iw_statistics *zd1205wext_iw_get_stats(struct net_device *); +#endif + + +u8 zd1211_InitSetup(struct net_device *dev, struct zd1205_private *macp) { + int res; + + //return true; //for debug + ZENTER(1); + + init_MUTEX(&macp->ps_sem); + init_MUTEX(&macp->reg_sem); + init_MUTEX(&macp->bcn_sem); + init_MUTEX(&macp->config_sem); + + spin_lock_init(&(macp->intr_lock)); + spin_lock_init(&(macp->q_lock)); + spin_lock_init(&(macp->cs_lock)); + + INIT_WORK(&macp->kevent, kevent, macp); + INIT_WORK(&macp->scan_tout_event, kevent, macp); + + macp->numTcb = NUM_TCB; + macp->numTbd = NUM_TBD; + macp->numRfd = NUM_RFD; + macp->numTbdPerTcb = NUM_TBD_PER_TCB; + macp->rxOffset = ZD_RX_OFFSET; + macp->rfd_size = 24; // form CbStatus to NextCbPhyAddrHighPart + + init_timer(&macp->watchdog_timer); + macp->watchdog_timer.data = (unsigned long) dev; + + macp->watchdog_timer.function = (void *) &zd1205_watchdog_cb; + + init_timer(&macp->tm_hking_id); + macp->tm_hking_id.data = (unsigned long) dev; + macp->tm_hking_id.function = (void *) &HKeepingCB; + + init_timer(&macp->tm_mgt_id); + macp->tm_mgt_id.data = (unsigned long) dev; + macp->tm_mgt_id.function = (void *) &zd1205_mgt_mon_cb; + + /* ath_desc: AMD64 support */ + macp->USBCSRAddress = 0x9000; + dot11Obj.reg = macp->regp=(void *)0x9000; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + + macp->in_interval = 10; +#else + + macp->in_interval = 10; +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + + usb_fill_int_urb(macp->intr_urb, macp->usb, + usb_rcvintpipe(macp->usb, EP_INT_IN), + macp->IntEPBuffer, MAX_EPINT_BUFFER, + zd1211_intr_cb, macp, macp->in_interval); +#else //fake it + + usb_fill_bulk_urb(macp->intr_urb, macp->usb, + usb_rcvbulkpipe(macp->usb, EP_INT_IN), + macp->IntEPBuffer, MAX_EPINT_BUFFER, + zd1211_intr_cb, macp); +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)) + + macp->intr_urb->transfer_flags |= URB_ASYNC_UNLINK; +#endif +#if 0 + + macp->intr_urb->transfer_dma = macp->IntBufferHandle; + macp->intr_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; +#endif + + if ((res = SUBMIT_URB(macp->intr_urb, GFP_KERNEL))) + { + printk(KERN_ERR "zd1211: failed intr_urb\n"); + zd1211_DumpErrorCode(macp, res); + return false; + } + zd1205_init(macp); + + dev->open = zd1205_open; + dev->stop = zd1205_close; + dev->watchdog_timeo = ZD1211_TX_TIMEOUT; + dev->do_ioctl = zd1205_ioctl; + +#if WIRELESS_EXT > 12 + + dev->wireless_handlers = (struct iw_handler_def *)&p80211wext_handler_def; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10) + /* ath_desc: added iw_get_stats */ + /* ath: using p80211wext_handler_def.get_wireless_stats in 2.6.10+ */ + dev->get_wireless_stats = &zd1205wext_iw_get_stats; +#endif +#endif + + dev->hard_start_xmit = zd1205_xmit_frame; + dev->set_multicast_list = zd1205_set_multi; + dev->get_stats = zd1205_get_stats; +#if ZDCONF_WE_STAT_SUPPORT == 1 + + dev->get_wireless_stats = zd1205_iw_getstats; +#elif !defined(ZDCONF_WE_STAT_SUPPORT) + #error "Undefine ZDCONF_WE_STAT_SUPPORT" +#endif + + dev->mtu = ZD1211_MTU; + dev->set_mac_address = zd1205_set_mac; + dev->tx_timeout = &zd1211_tx_timeout; + + //dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM; + dev->flags |= IFF_MULTICAST; + + //memcpy(macp->ifname, dev->name, IFNAMSIZ); + //macp->ifname[IFNAMSIZ-1] = 0; + + ZEXIT(1); + return true; +} + +int zd1211_alloc_all_urbs(struct zd1205_private *macp) { + struct usb_interface *interface = macp->interface; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + + struct usb_interface_descriptor *iface_desc = &interface->altsetting[0]; +#else + + struct usb_host_interface *iface_desc = &interface->altsetting[0]; +#endif + + struct usb_endpoint_descriptor *endpoint; + struct usb_endpoint_descriptor *interrupt_in_endpoint[MAX_NUM_PORTS]; + struct usb_endpoint_descriptor *interrupt_out_endpoint[MAX_NUM_PORTS]; + struct usb_endpoint_descriptor *bulk_in_endpoint[MAX_NUM_PORTS]; + + struct usb_endpoint_descriptor *bulk_out_endpoint[MAX_NUM_PORTS]; + + u8 num_bulk_in = 0; + u8 num_bulk_out = 0; + + u8 num_interrupt_in = 0; + u8 num_interrupt_out = 0; + + int i; + + + /* descriptor matches, let's find the endpoints needed */ + /* check out the endpoints */ + //ZD1211DEBUG(2, "bNumEndpoints = %d\n", iface_desc->bNumEndpoints); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + + for (i = 0; i < iface_desc->bNumEndpoints; ++i) + { + + endpoint = &iface_desc->endpoint[i]; +#else + + for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) { + endpoint = &iface_desc->endpoint[i].desc; +#endif + + if ((endpoint->bEndpointAddress & 0x80) && + + + ((endpoint->bmAttributes & 3) == 0x02)) { + + /* we found a bulk in endpoint */ + bulk_in_endpoint[num_bulk_in] = endpoint; + ++num_bulk_in; + + +/* ath: USB config fields are le16 on kernels >= 2.6.11 only */ +/* ath: see Greg Kroah-Hartman, http://kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.11-rc1 */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)) + macp->wMaxPacketSize = le16_to_cpu(endpoint->wMaxPacketSize); + ZD1211DEBUG(0, "bulk in: wMaxPacketSize = %x\n", le16_to_cpu(endpoint->wMaxPacketSize)); +#else + macp->wMaxPacketSize = endpoint->wMaxPacketSize; + ZD1211DEBUG(0, "bulk in: wMaxPacketSize = %x\n", endpoint->wMaxPacketSize); +#endif + } + + + + if (((endpoint->bEndpointAddress & 0x80) == 0x00) && + ((endpoint->bmAttributes & 3) == 0x02)) { + /* we found a bulk out endpoint */ + bulk_out_endpoint[num_bulk_out] = endpoint; + ++num_bulk_out; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)) + ZD1211DEBUG(0, "bulk out: wMaxPacketSize = %x\n", le16_to_cpu(endpoint->wMaxPacketSize)); +#else + ZD1211DEBUG(0, "bulk out: wMaxPacketSize = %x\n", endpoint->wMaxPacketSize); +#endif + + } + + if ((endpoint->bEndpointAddress & 0x80) && + + + ((endpoint->bmAttributes & 3) == 0x03)) { + /* we found a interrupt in endpoint */ + interrupt_in_endpoint[num_interrupt_in] = endpoint; + ++num_interrupt_in; + macp->in_interval = endpoint->bInterval; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)) + ZD1211DEBUG(0, "interrupt in: wMaxPacketSize = %x\n", le16_to_cpu(endpoint->wMaxPacketSize)); +#else + ZD1211DEBUG(0, "interrupt in: wMaxPacketSize = %x\n", endpoint->wMaxPacketSize); +#endif + + ZD1211DEBUG(0, "interrupt in: int_interval = %d\n", endpoint->bInterval); + + } + + if (((endpoint->bEndpointAddress & 0x80) == 0x00) && + ((endpoint->bmAttributes & 3) == 0x03)) { + /* we found a interrupt out endpoint */ + interrupt_out_endpoint[num_interrupt_out] = endpoint; + ++num_interrupt_out; + macp->ep4isIntOut = 0;//1; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)) + ZD1211DEBUG(0, "interrupt out: wMaxPacketSize = %x\n", le16_to_cpu(endpoint->wMaxPacketSize)); +#else + ZD1211DEBUG(0, "interrupt out: wMaxPacketSize = %x\n", endpoint->wMaxPacketSize); +#endif + macp->out_interval = endpoint->bInterval; + } + } + + + macp->num_bulk_in = num_bulk_in; + macp->num_bulk_out = num_bulk_out; + macp->num_interrupt_in = num_interrupt_in; + + macp->num_interrupt_out = num_interrupt_out; + + + macp->rx_urb = USB_ALLOC_URB(0, GFP_KERNEL); + if (!macp->rx_urb) + return 0; + + macp->tx_urb = USB_ALLOC_URB(0, GFP_KERNEL); + if (!macp->tx_urb) { + usb_free_urb(macp->rx_urb); + return 0; + } + + + macp->intr_urb = USB_ALLOC_URB(0, GFP_KERNEL); + if (!macp->intr_urb) { + + usb_free_urb(macp->rx_urb); + usb_free_urb(macp->tx_urb); + return 0; + } + + macp->ctrl_urb = USB_ALLOC_URB(0, GFP_KERNEL); + if (!macp->ctrl_urb) { + usb_free_urb(macp->rx_urb); + usb_free_urb(macp->tx_urb); + usb_free_urb(macp->intr_urb); + return 0; + + + } + + + macp->reg_urb = USB_ALLOC_URB(0, GFP_KERNEL); + if (!macp->reg_urb) { + usb_free_urb(macp->rx_urb); + usb_free_urb(macp->tx_urb); + usb_free_urb(macp->intr_urb); + usb_free_urb(macp->ctrl_urb); + return 0; + } + +#if 0//(LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) + #if 1 + macp->IntEPBuffer = kmalloc(MAX_EPINT_BUFFER, GFP_KERNEL); + +#else //always failed? why??? + + macp->IntEPBuffer = usb_buffer_alloc(macp->device, + MAX_EPINT_BUFFER, + GFP_KERNEL, + &macp->IntBufferHandle); +#endif + + if (!macp->IntEPBuffer) { + FPRINT("usb_buffer_alloc failed"); + usb_free_urb(macp->rx_urb); + usb_free_urb(macp->tx_urb); + usb_free_urb(macp->intr_urb); + usb_free_urb(macp->ctrl_urb); + + usb_free_urb(macp->reg_urb); + return 0; + } +#endif + + return 1; +} + + + + +void zd1211_free_all_urbs(struct zd1205_private *macp) + +{ + + + if (macp->rx_urb) + usb_free_urb(macp->rx_urb); + if (macp->tx_urb) + + usb_free_urb(macp->tx_urb); + if (macp->intr_urb) + + usb_free_urb(macp->intr_urb); + if (macp->ctrl_urb) + usb_free_urb(macp->ctrl_urb); + if (macp->reg_urb) + usb_free_urb(macp->reg_urb); + +#if 0//(LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) + + if (macp->IntEPBuffer) +#if 1 + + kfree(macp->IntEPBuffer); +#else + + usb_buffer_free(macp->device, + MAX_EPINT_BUFFER, + (void *)macp->IntEPBuffer, + + macp->IntBufferHandle); +#endif +#endif +} + + +void zd1211_unlink_all_urbs(struct zd1205_private *macp) +{ + if (macp->rx_urb) { + macp->rx_urb->transfer_flags &= ~URB_ASYNC_UNLINK; + ZD_USB_KILL_URB(macp->rx_urb); + } + if (macp->tx_urb) { + macp->tx_urb->transfer_flags &= ~URB_ASYNC_UNLINK; + ZD_USB_KILL_URB(macp->tx_urb); + } + if (macp->ctrl_urb) { + macp->ctrl_urb->transfer_flags &= ~URB_ASYNC_UNLINK; + ZD_USB_KILL_URB(macp->ctrl_urb); + } + if (macp->reg_urb) { + macp->reg_urb->transfer_flags &= ~URB_ASYNC_UNLINK; + ZD_USB_KILL_URB(macp->reg_urb); + } + if (test_bit(ZD1211_UNPLUG, &macp->flags) && macp->intr_urb) { + macp->intr_urb->transfer_flags &= ~URB_ASYNC_UNLINK; + ZD_USB_KILL_URB(macp->intr_urb); + } +} + +#define MAX_RX_MERGE_PACKET_NUM 3 +void zd1211_rx_isr(unsigned long parm) +{ + struct zd1205_private *macp = (struct zd1205_private *)parm; + struct urb *urb = macp->read_urb; + struct rx_list_elem *rx_struct; +#if fMERGE_RX_FRAME + + struct rx_list_elem *rx_struct_array[MAX_RX_MERGE_PACKET_NUM]; + int total_rx_struct = 1, rx_array_cnt = 0; + int i; + u32 tmpLen = 0; + u16 last_pkt_len; +#endif + + u32 TotalLength = urb->actual_length; + u8 *pRxBuffer; + struct sk_buff *skb; + zd1205_RFD_t *rfd = NULL; + + spin_lock(&macp->intr_lock); + + ZD1211DEBUG(4, "actual_length = %x\n", urb->actual_length); + rx_struct = list_entry(macp->active_rx_list.next, + struct rx_list_elem, list_elem); + + skb = rx_struct->skb; + rfd = RFD_POINTER(skb, macp); + pRxBuffer = &rfd->RxBuffer[macp->rxOffset]; + +#if 0 + //for debug only + zd1205_dump_data("pRxBuffer", (u8 *)pRxBuffer, TotalLength); + //zd1211_submit_rx_urb(macp); + //return; +#endif + +#if fMERGE_RX_FRAME + + if (rx_struct->UnFinishFrmLen) { + TotalLength += rx_struct->UnFinishFrmLen; + rx_struct->UnFinishFrmLen = 0; + macp->CompLenInfoCnt++; + //ZD1211DEBUG(0, "Got Rx Frames Length Info!!\n"); + } + + last_pkt_len = TotalLength & (macp->wMaxPacketSize - 1); + + if (last_pkt_len <= (macp->wMaxPacketSize - 4)) { + if (le16_to_cpu(((u16 *) pRxBuffer)[TotalLength / sizeof(u16) - 1]) == 0x697E) { + total_rx_struct = 3; + //ZD1211DEBUG(0, "Got merged Rx Frames!!\n"); + //zd1205_dump_data("pRxBuffer", (u8 *)pRxBuffer, TotalLength); + macp->Continue2Rx++; + } else + macp->NoMergedRxCnt++; + + //ZD1211DEBUG(3, "last_pkt_len = %x\n", last_pkt_len); + //zd1205_dump_data("pRxBuffer", (u8 *)pRxBuffer, TotalLength); + + for (i=0; i 1) { + CurFrmLen = cpu_to_le16(((u16 *) pRxBuffer)[TotalLength / sizeof(u16) + i - 4]); + //ZD1211DEBUG(2, "CurFrmLen = %x\n", CurFrmLen); + } else + CurFrmLen = TotalLength; + + if (CurFrmLen == 0) { + break; + } + + rx_struct_array[i] = list_entry(macp->active_rx_list.next, + struct rx_list_elem, list_elem); + list_del(&(rx_struct_array[i]->list_elem)); + rx_array_cnt++; + + ZD1211DEBUG(2, "CurFrmLen = %x\n", CurFrmLen); + + skb = rx_struct_array[i]->skb; + rfd = RFD_POINTER(skb, macp); + + rfd->CbStatus = cpu_to_le32(RFD_STATUS_COMPLETE); + rfd->ActualCount = cpu_to_le32(CurFrmLen); + + if (i > 0) { + memcpy(&rfd->RxBuffer[macp->rxOffset], + pRxBuffer + tmpLen, + CurFrmLen); + } + + tmpLen += (CurFrmLen & ~0x03); + + if (CurFrmLen & 0x03) + tmpLen += 4; + rfd->ActualCount = cpu_to_le32(CurFrmLen + macp->rxOffset); + } + } else { + // last_pkt_len = 509, 510, 511 + // wait next Rx + //ZD1211DEBUG(0, "Wait Rx Frames Length Info!!\n"); + //ZD1211DEBUG(2, "last_pkt_len = %x\n", last_pkt_len); + macp->WaitLenInfoCnt++; + rx_struct->UnFinishFrmLen = ((TotalLength / macp->wMaxPacketSize) + 1) + * (macp->wMaxPacketSize); + //zd1205_dump_data("pRxBuffer", (u8 *)pRxBuffer, TotalLength); + } + + + zd1211_submit_rx_urb(macp); + + if (!rx_struct->UnFinishFrmLen) { + macp->total_rx_cnt = rx_array_cnt; + macp->rx_struct_array = rx_struct_array; + zd1205_rx_isr(macp); + } + + +#else + rfd->CbStatus = cpu_to_le32(RFD_STATUS_COMPLETE); + rfd->ActualCount = cpu_to_le32(TotalLength + macp->rxOffset); + zd1205_rx_isr(macp); +#endif + + if (dot11Obj.QueueFlag & MGT_QUEUE_SET) + defer_kevent(macp, KEVENT_PROCESS_SIGNAL); + spin_unlock(&macp->intr_lock); +} + + + + + + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) +void zd1211_rx_comp_cb(struct urb *urb) +#else +void zd1211_rx_comp_cb(struct urb *urb, struct pt_regs *regs) +#endif + + + + +{ + struct zd1205_private *macp = urb->context; + + + + if ((!macp) || !test_bit(ZD1211_RUNNING, &macp->flags)) + + return; + + + if (!netif_device_present(macp->device)) + return; + + if (urb->status != 0) + { + zd1211_DumpErrorCode(macp, urb->status); + if ((urb->status != -ENOENT) && + + (urb->status != -ECONNRESET) && + + (urb->status != -ESHUTDOWN)) { + //printk("nonzero read bulk status received: %d\n", urb->status); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + if (urb->status == USB_ST_INTERNALERROR) + + return; + +#else + + if (urb->status == -EPIPE) { + printk("nonzero read bulk status received: -EPIPE\n"); + return; + } + + if (urb->status == -EPROTO) { + printk("nonzero read bulk status received: -EPROTO\n"); + return; + } + + + +#endif + + + zd1211_submit_rx_urb(macp); + return; + } + return; + + } + + + if (urb->actual_length == 0) + { + FPRINT("Got Length = 0"); + + zd1211_submit_rx_urb(macp); + return; + } + + + macp->read_urb = urb; + zd1211_rx_isr((unsigned long) macp); + +} + + + + + +//callback function for interrupt or response +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) +void zd1211_intr_cb(struct urb *urb) +#else +void zd1211_intr_cb(struct urb *urb, struct pt_regs *regs) +#endif +{ + struct zd1205_private *macp = urb->context; + u16 intNum; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) + int status; +#endif + u32 actual_length = urb->actual_length; + + if (!macp) + return; + + spin_lock(&macp->intr_lock); + + if (urb->status != 0) + { + zd1211_DumpErrorCode(macp, urb->status); + + if (urb->status == -ENODEV) { //device was removed + FPRINT("Device was removed!!!"); + macp->bUSBDeveiceAttached = 0; + + wake_up(&macp->regSet_wait); + wake_up_interruptible(&macp->iorwRsp_wait); + + spin_unlock(&macp->intr_lock); + return; + } + + switch (urb->status) { + case -ECONNRESET: + case -ENOENT: + case -ESHUTDOWN: +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) + + case -EPROTO: +#endif + + macp->bUSBDeveiceAttached = 0; + FPRINT("Device was down!!!"); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) + + spin_unlock(&macp->intr_lock); + return; +#endif + + break; + + default: + //printk("nonzero intr status received: %d\n", urb->status); + break; + } + + } else + { + if (macp->IntEPBuffer[0] != 0x01) + FPRINT("Got unknown packet"); + + switch (macp->IntEPBuffer[1]) { + case EPINT_IORDRsp: + + // this is USB_READ_REGISTER response + macp->ReadRegCount = (u16)actual_length; + + intNum = le16_to_cpu(*(u16 *)(macp->IntEPBuffer+2)); + //intNum = macp->IntEPBuffer[2] + (((u16)macp->IntEPBuffer[3]) << 8); + + if (intNum == (InterruptCtrl | macp->USBCSRAddress)) { + // Handle non-RxTx interrupt + if (macp->bHandleNonRxTxRunning) { + printk("Impossible, interrupt happen!!!!! %x\n", intNum); + break; + } + + // disable non-RxTx interrupt + // No needed to diable interrupt, firmware will do it. + macp->bHandleNonRxTxRunning = 1; + memcpy(macp->IntEPBuffer3, macp->IntEPBuffer, MAX_EPINT_BUFFER); + defer_kevent(macp, KEVENT_NON_TX_RX_INT); + + } else { + // handle read register + memcpy(macp->IntEPBuffer2, macp->IntEPBuffer, MAX_EPINT_BUFFER); + set_bit(ZD1211_REQ_COMP, &macp->flags); + wake_up_interruptible(&macp->iorwRsp_wait); + } + break; + + case EPINT_RetryFial_Event: { + u8 *pMacAddr = macp->IntEPBuffer + 4; + /* ath: not endian safe! u8 NewRate = (u8)(*(u16 *)(macp->IntEPBuffer + 2)); */ + //u8 NewRate = macp->IntEPBuffer[2]; + u16 aid; + +#if fTX_PWR_CTRL + + if (macp->TxOFDMType >= cTX_48M) + macp->TxOFDMCnt = 0; +#endif + + if ( macp->IntEPBuffer[10] & BIT_0 ) + + macp->bIBSS_Wakeup_Dest = 1; + + + //ZD1211DEBUG(2, "Retry Failed!!!\n"); + //ZD1211DEBUG(2, "NewRate = %x\n", NewRate); + aid = zd_AidLookUp(pMacAddr); + zd_EventNotify(EVENT_TX_COMPLETE, ZD_RETRY_FAILED, 0xff, (U32)aid); + macp->retryFailCnt += le16_to_cpu(*(u16 *)(macp->IntEPBuffer + 10)); + break; + + } + + + default: + FPRINT("Got Unknown interrupt!!!"); + break; + } + + } + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) +#if 1 + //memset(macp->IntEPBuffer, 0x0, MAX_EPINT_BUFFER); + + //use bulk instead of interrupt in + usb_fill_bulk_urb(macp->intr_urb, macp->usb, + usb_rcvbulkpipe(macp->usb, EP_INT_IN), + macp->IntEPBuffer, MAX_EPINT_BUFFER, + zd1211_intr_cb, macp); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)) + + macp->intr_urb->transfer_flags |= URB_ASYNC_UNLINK; +#endif + + status = SUBMIT_URB(macp->intr_urb, GFP_ATOMIC); +#else + + status = SUBMIT_URB(urb, GFP_ATOMIC); +#endif + + if (status) + FPRINT("Can't resubmit interrupt urb!!!"); +#endif + + spin_unlock(&macp->intr_lock); + + return; +} + + +//callback function for register get/set +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) +void zd1211_reg_cb(struct urb *urb) +#else +void zd1211_reg_cb(struct urb *urb, struct pt_regs *regs) +#endif +{ + struct zd1205_private *macp = urb->context; + set_bit(ZD1211_CMD_FINISH, &macp->flags); + wake_up(&macp->regSet_wait); +} + +void zd1211_handle_non_tx_rx(struct zd1205_private *macp) +{ + u32 intr_status; + // in current design, no need to use spinlock + + intr_status = le16_to_cpu(*(u16 *)(macp->IntEPBuffer3+4)); + //ZD1211DEBUG(2, "intr_status = %x\n", intr_status); + + if (!intr_status) + return; + + if (intr_status & WAKE_UP) + { + ZD1211DEBUG(1, "WAKE_UP\n"); + //printk(KERN_ERR "befor1 : %lu\n", jiffies); + down(&macp->ps_sem); + //printk(KERN_ERR "before2: %lu\n", jiffies); + if (dot11Obj.bDeviceInSleep) { + zd1205_process_wakeup(macp); + } + + //printk(KERN_ERR "after2: %lu\n", jiffies); + up(&macp->ps_sem); + //printk(KERN_ERR "after1: %lu\n", jiffies); + + } + + if (intr_status & CFG_NEXT_BCN) + { + //ZD1211DEBUG(2, "CFG_NEXT_BCN\n"); + if (macp->config_next_bcn_en) { + if (macp->cardSetting.BssType == AP_BSS) + goto done; + + macp->bcnCnt++; + down(&macp->bcn_sem); + zd_EventNotify(EVENT_TBCN, 0, 0, 0); + up(&macp->bcn_sem); + + if (macp->cardSetting.BssType == INDEPENDENT_BSS) { + macp->bFrmRxed1 = 0; + } +#if 0 + else if (macp->cardSetting.BssType == AP_BSS) { + if (macp->dtimCount == 0) + macp->dtimCount = macp->cardSetting.DtimPeriod; + macp->dtimCount--; + } +#endif + + } + } + + if (intr_status & DTIM_NOTIFY) + { + ZD1211DEBUG(2, "DTIM_NOTIFY\n"); + if (macp->dtim_notify_en) { + macp->dtimCnt++; + zd_EventNotify(EVENT_DTIM_NOTIFY, 0, 0, 0); + } + } + +done: + macp->bHandleNonRxTxRunning = 0; + + // enable non-RxTx interrupt + zd1205_enable_int(); + return; +} + +int zd1211_submit_rx_urb(struct zd1205_private *macp) +{ + struct rx_list_elem *rx_struct = NULL; + u8 *rx_buff = NULL; + u32 bufLen = MAX_WLAN_SIZE - macp->rxOffset; + int res; + //int memflags = GFP_KERNEL; + + + + rx_struct = zd1205_start_ru(macp); + + if (!rx_struct) + return 1; + +#if fMERGE_RX_FRAME + + if (rx_struct->UnFinishFrmLen) + { + rx_buff = (u8 *)(rx_struct->dma_addr)+ macp->rxOffset + (rx_struct->UnFinishFrmLen); + bufLen -= (rx_struct->UnFinishFrmLen); + } else + rx_buff = (u8 *)(rx_struct->dma_addr) + macp->rxOffset; + + +#else + + rx_buff = (u8 *)(rx_struct->dma_addr) + macp->rxOffset; +#endif + + + usb_fill_bulk_urb(macp->rx_urb, macp->usb, + usb_rcvbulkpipe(macp->usb, EP_DATA_IN), + rx_buff, bufLen, + + zd1211_rx_comp_cb, macp); + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)) + + macp->rx_urb->transfer_flags |= URB_ASYNC_UNLINK; +#endif + + if ((res = SUBMIT_URB(macp->rx_urb, GFP_ATOMIC))) + { + printk(KERN_ERR "zd1211: failed rx_urb\n"); + zd1211_DumpErrorCode(macp, res); + } + + + + return 0; +} + + + +void zd1211_tx_isr(unsigned long parm) +{ + struct zd1205_private *macp = (struct zd1205_private *)parm; + zd1205_SwTcb_t *sw_tcb; + + ZENTER(3); + + spin_lock(&macp->intr_lock); + + + sw_tcb = macp->activeTxQ->first; + if (sw_tcb) + sw_tcb->pTcb->CbStatus = cpu_to_le32(CB_STATUS_COMPLETE); + + zd1205_tx_isr(macp); + +#if 0 + + if (dot11Obj.QueueFlag & TX_QUEUE_SET) { + macp->txQueSetCnt++; + + tasklet_schedule(&macp->zd1205_tx_tasklet); + } +#endif + + + spin_unlock(&macp->intr_lock); + + ZEXIT(3); + +} + + + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) +void zd1211_tx_comp_cb(struct urb *urb) +#else +void zd1211_tx_comp_cb(struct urb *urb, struct pt_regs *regs) + +#endif +{ + struct zd1205_private *macp = urb->context; + + + if ((!macp) || !test_bit(ZD1211_RUNNING, &macp->flags)) + { + printk(KERN_ERR "macp is NULL or macp.flags.ZD1211_RUNNING\n"); + return; + } + + if (!netif_device_present(macp->device)) + { + printk(KERN_ERR "netif_device_present return NULL\n"); + return; + } + + if (urb->status) + { + /* ath_desc: fix printks */ + printk(KERN_ERR "Tx status: %d\n", urb->status); + zd1211_DumpErrorCode(macp, urb->status); + } + + macp->usbTxCompCnt++; + clear_bit(ZD1211_TX_BUSY, &macp->flags); + + macp->TxStartTime = 0; + + macp->write_urb = urb; + + zd1211_tx_isr((unsigned long) macp); + + return; +} + + + + + + +// return send_length +int zd1211_submit_tx_urb(struct zd1205_private *macp,BOOLEAN LastFrag) +{ + u8 *dst = macp->tx_buff; + + + u32 TotalLength = 0; + + zd1205_Ctrl_Set_t *pCtrlSet; + zd1205_TBD_t *Tbd; + zd1205_SwTcb_t *sw_tcb; + int res; + //int memflags = GFP_KERNEL; + + + + if (!macp->activeTxQ->count) + { + return 0; + + } + + if (test_bit(ZD1211_TX_BUSY, &macp->flags)) + return 0; + + ZENTER(3); + + sw_tcb = macp->activeTxQ->first; + pCtrlSet = sw_tcb->pHwCtrlPtr; + Tbd = sw_tcb->pFirstTbd; + + // We skip TCB address, Address 1, NextLength = 16 bytes, add 2 bytes for total length + //pCtrlSet->CtrlSetting[23]=0; + //pCtrlSet->CtrlSetting[24]=0; + + memcpy(dst, (u8 *)(pCtrlSet), 3); + dst += 3; + + TotalLength += 3; + + memcpy(dst, (u8 *)(pCtrlSet)+(3+8), // 8 mean skip TCB address + + 1); // misc + + dst += 1; + + + TotalLength += 1; + + + dst += 2; // reserver 2 bytes for total length + + TotalLength += 2; + + + + memcpy(dst, (u8 *)(pCtrlSet)+(3+8+1+6+2), // 6:skip address 1, 2:skip next length + 5); + + dst += 5; + + TotalLength += 5; + + ZD1211DEBUG(2, "Tx Ctrl Length = %x\n", TotalLength); + + Tbd++; + + /* ath_desc: removed "Non-Zero Duration" debug output */ + #if 0 + //Mac Header + if(*(u8 *)(le32_to_cpu(Tbd->TbdBufferAddrLowPart)+2)!=0) + { + if(macp->bPSMSupported != 1) + *(u16 *)(le32_to_cpu(Tbd->TbdBufferAddrLowPart)+2)=0; + //printk("Non-Zero Duration,%d\n",*(u16 *)(le32_to_cpu(Tbd->TbdBufferAddrLowPart)+2)); + //printk("\n OK\n"); + } else if(*(u8 *)(le32_to_cpu(Tbd->TbdBufferAddrLowPart)+3)!=0) + { + if(macp->bPSMSupported != 1) + *(u16 *)(le32_to_cpu(Tbd->TbdBufferAddrLowPart)+2)=0; + //printk("Non-Zero Duration,%d\n",*(u16 *)(le32_to_cpu(Tbd->TbdBufferAddrLowPart)+2)); + //printk("\n OK\n"); + } + #endif + + +#ifndef __LP64__ + memcpy(dst, (u8 *)le32_to_cpu(Tbd->TbdBufferAddrLowPart), le32_to_cpu(Tbd->TbdCount)); + +#else + memcpy(dst, (u8 *)le64_to_cpu(Tbd->TbdBufferAddr), le32_to_cpu(Tbd->TbdCount)); +#endif + ZD1211DEBUG(2, "MAC Header Length = %x\n", le32_to_cpu(Tbd->TbdCount)); + dst += le32_to_cpu(Tbd->TbdCount); + + TotalLength += le32_to_cpu(Tbd->TbdCount); + + Tbd++; + + //MAC Body +#ifndef __LP64__ + memcpy(dst, (u8 *)le32_to_cpu(Tbd->TbdBufferAddrLowPart), le32_to_cpu(Tbd->TbdCount)); + +#else + memcpy(dst, (u8 *)le64_to_cpu(Tbd->TbdBufferAddr), le32_to_cpu(Tbd->TbdCount)); +#endif + ZD1211DEBUG(2, "Tx DATA Length = %x\n", le32_to_cpu(Tbd->TbdCount)); + dst += le32_to_cpu(Tbd->TbdCount); + + + TotalLength += le32_to_cpu(Tbd->TbdCount); + Tbd++; + + ZD1211DEBUG(2, "TotalLength = %x\n", TotalLength); + + if(LastFrag == TRUE) + { + memcpy(dst-sw_tcb->MIC_Len,sw_tcb->CalMIC+sw_tcb->MIC_Start,sw_tcb->MIC_Len); + + } + + + + // write down total length +#ifdef ZD1211 + *((u16 *)(macp->tx_buff+4)) = cpu_to_le16((u16)TotalLength + 14); +#elif defined(ZD1211B) + + *((u16 *)(macp->tx_buff+4)) = cpu_to_le16(sw_tcb->LengthDiff); +#endif + + ZD1211DEBUG(2, "macp->tx_buff+4 = %x\n", le16_to_cpu(*((u16 *)(macp->tx_buff+4)))); + + + usb_fill_bulk_urb(macp->tx_urb, macp->usb, + usb_sndbulkpipe(macp->usb, EP_DATA_OUT), + macp->tx_buff, TotalLength, + zd1211_tx_comp_cb, macp); + + + + macp->tx_urb->transfer_buffer_length = TotalLength; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)) + + macp->tx_urb->transfer_flags |= URB_ASYNC_UNLINK; +#endif + + res = SUBMIT_URB(macp->tx_urb, GFP_ATOMIC); + if (res) + { + + printk("error in tx submit urb: %d", res); + zd1211_DumpErrorCode(macp, res); + goto err; + } + + macp->usbTxCnt++; + + set_bit(ZD1211_TX_BUSY, &macp->flags); + + + + + ZEXIT(3); + + return TotalLength; + + + +err: + return 0; +} + + + +void zd1211_disable_net_traffic(struct zd1205_private *macp) +{ + + // When suspend, call this + if ( (macp->RF_Mode == AL2230_RF) || (macp->RF_Mode == AL2230S_RF) ) + HW_Set_IF_Synthesizer(&dot11Obj, 0x71687); + + LockPhyReg(&dot11Obj); + zd_writel(0xFF, ZD_CR252); + zd_writel(0xc, ZD_CR253); + + + + zd_writel(0x3, ZD_CR255); + UnLockPhyReg(&dot11Obj); + + + zd_writel(0x0, BCNInterval); + // Turn off LEDs + + zd_writel(0x0, rLED_CTRL); + + // turn of MAC + zd_writel(0x3, PS_Ctrl); + + + + + dot11Obj.PhyTest = 0; + macp->LinkTimer = 0; + + +} + + +#if 0 +int zd1211_DownLoadUSBCode(struct zd1205_private *macp, u8* filename, void *ptr, u16 uCodeOfst) +{ + int ifp; + long bcount; + mm_segment_t fs; + + struct stat file_info; + + size_t* file_length; + + u8 *buffer; + + //FPRINT("DownLoadUSBCode"); + + // Open the code file + + // for file opening temporarily tell the kernel I am not a user for + // memory management segment access + + fs = get_fs(); + set_fs(KERNEL_DS); + + + // open the file with the firmware for uploading + + if (ifp = open(filename, O_RDONLY, 0 ), ifp < 0) + { + // error opening the file + FPRINT("ERROR: File opening did not success"); + set_fs(fs); + return -1; + } + + + + + /* Get information about the file. */ + fstat (ifp, &file_info); + file_length = file_info.st_size; + + + buffer = kmalloc(file_length, GFP_ATOMIC); + + /* Read the file into the buffer. */ + bcount = read(ifp, buffer, file_length); + + if (bcount != file_length) + FPRINT("read failed"); + + + + // close the file + + + + close(ifp); + + // switch back the segment setting + + set_fs(fs); + + + + ret = zd1211_LoadUSBSpecCode(macp, buffer, file_length, uCodeOfst, true); + + + + kfree(buffer); + + + + + return ret; + + +} +#endif +void ZD1211_WriteMultiRegister(u16 *Address, u16 *Value, u16 RegCount, BOOLEAN AddUSBCSRAddress) +{ + int count = 0; + u8 ret = 0xff; + + while (ret != 0) { + ret = zd1211_USB_PACKAGE_WRITE_REGISTER(Address, Value, RegCount, AddUSBCSRAddress); + count++; + + if (count > 5) { + printk("ZD1211_WriteMultiRegister failed!!\n"); + break; + } + } +} +void ZD1211_WRITE_MULTI_REG(u16 *pAddress, u16 *pValue, u16 *pRegCount) +{ + u16 TotalRegCount = *pRegCount; + u16* pWriteAddr = pAddress; + u16* pWriteData = pValue; + + while (TotalRegCount > cMAX_MULTI_WRITE_REG_NUM) { + ZD1211_WriteMultiRegister(pWriteAddr, pWriteData, cMAX_MULTI_WRITE_REG_NUM, true); + + TotalRegCount -= cMAX_MULTI_WRITE_REG_NUM; + pWriteAddr += cMAX_MULTI_WRITE_REG_NUM; + pWriteData += cMAX_MULTI_WRITE_REG_NUM; + } + + if (TotalRegCount) + ZD1211_WriteMultiRegister(pWriteAddr, pWriteData, TotalRegCount, true); + + *pRegCount = 0; + + +} +int zd1211_GetUSBSpecData(struct zd1205_private *macp, u8 *pBuffer, + u32 uImgLength, u16 uCodeOfst) + +{ + u32 uCurLength; + int result = 0; + u8 *image, *ptr; + u32 uploadLength = uImgLength; + + + image = kmalloc(uImgLength, GFP_KERNEL); + ptr = image; + + while (uImgLength > 0) + { + uCurLength = uImgLength; + if (uCurLength > 60) + uCurLength = 60; + + // Get data from device + result = usb_control_msg(macp->usb, usb_rcvctrlpipe(macp->usb, 0), + FIRMWARE_READ_DATA, USB_DIR_IN | 0x40, uCodeOfst, 0, + + + + image, uCurLength, 1000 * HZ); + + //ZD1211DEBUG(3, "result = %d\n", result); + if (result < 0) { + printk(KERN_ERR "zd1211: usb_rcvctrlpipe 1 fail: %02X\n", result); + goto exit; + } + + + + + /* ath_desc: fix update of uImgLength */ + uImgLength -= result; + image += result; + + uCodeOfst += (u16) (result / 2); // in Word (16 bit) + result = 0; + + } + + image -= uploadLength; //move to buffer head + + memcpy(pBuffer, image, uploadLength); + + +exit: + //kfree(image); + kfree(ptr); + + return result ; +} + + + + + + + + +//return 0: success, others: fail +int zd1211_LoadUSBSpecCode(struct zd1205_private *macp, u8 *pBuffer, u32 uImgLength, + u16 uCodeOfst, u8 bReboot) +{ + u8 ret; + int result = 0; + u8 *image, *ptr; + + + ZD1211DEBUG(1, "uImgLength = %x\n", uImgLength); + image = kmalloc(uImgLength, GFP_KERNEL); + ptr = image; + memcpy(image, pBuffer, uImgLength); + + + while (uImgLength > 0) + { + int translen = (uImgLength > 4096) ? 4096 : uImgLength; + + ZD1211DEBUG(1, "translen = %x\n", translen); + ZD1211DEBUG(1, "uCodeOfst = %x\n", uCodeOfst); + + + result = usb_control_msg(macp->usb, usb_sndctrlpipe(macp->usb, 0), + FIRMWARE_DOWNLOAD, USB_DIR_OUT | 0x40, uCodeOfst, 0, + + image, translen, HZ); + + + ZD1211DEBUG(1, "result = %x\n", result); + + + if (result < 0) { + printk(KERN_ERR "zd1211: usb_control_msg 1 fail: %02X\n", result); + goto exit; + } + + + uImgLength -= translen; + image += translen; + + + uCodeOfst += (u16) (translen / 2); // in Word (16 bit) + result = 0; + } + + + + if (bReboot) + { + result = usb_control_msg(macp->usb, usb_rcvctrlpipe(macp->usb, 0), + FIRMWARE_CONFIRM, USB_DIR_IN | 0x40, 0, 0, + &ret, sizeof(ret), 1000 * HZ); + if (result < 0) { + + + printk(KERN_ERR "zd1211: usb_control_msg 2 fail: %02X\n", result); + + + + goto exit; + + + } + + //ZD1211DEBUG(2, "result = %x\n", result); + + ZD1211DEBUG(1, "FIRMWARE_CONFIRM = %x\n", ret); + + + + if (ret & 0x80) { + FPRINT("USB Download Boot code error"); + + goto exit; + } else { + ZD1211DEBUG(0, "USB Download Boot code success\n"); + } + + result = 0; + + } + + + + + +exit: + //kfree(image); + kfree(ptr); + return result; + +} + + + + + int zd1211_Download_IncludeFile(struct zd1205_private *macp) + { - int ret; - u16 EEPVer; - EEPVer = WS11Ub[cEPDATA_OFFSET * 2] + (WS11Ub[cEPDATA_OFFSET * 2 + 1] << 8); - printk(KERN_NOTICE "EEPROM Version = %x\n", EEPVer); - -/* FIXME: The "if" chunk below seems to be just breaking stuff. Sometimes it - * uploads all the firmwares but it only seems to introduce more problems and - * it doesn't seem to solve any as the right(?) firmware is always uploaded - * after that... It is staying here just for future reference. - * - - if (macp->release != EEPVer) { - ZD1211DEBUG(0, "macp->release != EEPVer\n"); - if (macp->release <= 0x4312) - ret = zd1211_LoadUSBSpecCode(macp, WS11Ur2, sizeof(WS11Ur2), - cFIRMWARE_OLD_ADDR, false); - - ret = zd1211_LoadUSBSpecCode(macp, WS11Ur, sizeof(WS11Ur), - cFIRMWARE_START_ADDR, true); - if (ret != 0) { - FPRINT("Loading WS11Ur failed.\n"); - return ret; - } - - ret = zd1211_LoadUSBSpecCode(macp, WS11Ub + (cEPDATA_OFFSET * 2) + (E2P_END - E2P_SUBID), - sizeof(WS11Ub) - (cEPDATA_OFFSET * 2) - (E2P_END - E2P_SUBID), - cFIRMWARE_EEPROM_OFFSET + (E2P_END - E2P_SUBID) / 2, - true); - if (ret != 0) { - FPRINT("Loading WS11Ub failed.\n"); - return ret; - } - - if (macp->release == 0x0101) - ret = zd1211_GetUSBSpecData(macp, WS11Ub + (cEPDATA_OFFSET * 2), - (E2P_END - E2P_SUBID), - cBOOTCODE_START_ADDR); - else - ret = zd1211_GetUSBSpecData(macp, WS11Ub + (cEPDATA_OFFSET * 2), - (E2P_END - E2P_SUBID), - cFIRMWARE_EEPROM_OFFSET); - if (ret != 0) { - FPRINT("Reading EEPROM data failed.\n"); - return ret; - } - - WS11Ub[(cEPDATA_OFFSET * 2) + (E2P_DEVICE_VER - E2P_SUBID)] = EEPVer & 0xFF; - WS11Ub[(cEPDATA_OFFSET * 2) + (E2P_DEVICE_VER - E2P_SUBID) + 1] = EEPVer >> 8; - - ret = zd1211_LoadUSBSpecCode(macp, WS11Ub, - (E2P_END - E2P_SUBID) + (cEPDATA_OFFSET * 2), - cBOOTCODE_START_ADDR, false); - - if (ret != 0) { - FPRINT("Writing EEPROM data failed.\n"); - return ret; - } - } - - * FIXME: End of weird "if" chunk - */ - - // for single RX - ret = zd1211_LoadUSBSpecCode(macp, WS11UPh, sizeof(WS11UPh), cFIRMWARE_START_ADDR, true); - if (ret != 0) { - FPRINT("Loading WS11UPh failed.\n"); - return ret; - } - return 0; + int ret; + u16 EEPVer; + + //return 0; //for debug + + EEPVer = WS11Ub[cEPDATA_OFFSET * 2] + (WS11Ub[cEPDATA_OFFSET * 2 + 1] << 8); + printk(KERN_NOTICE "EEPORM Ver = %x\n", EEPVer); + +/* ath_desc: removed superfluous firmware downloading routine */ +/* ath_msgsubj: [zd1211-devs] FW download wierdness (zd1211.c) */ +/* ath_msgdate: 2005-03-20 20:25 */ +/* ath: superfluous routine removed. */ + + //for single RX + ret = zd1211_LoadUSBSpecCode(macp, WS11UPh, sizeof(WS11UPh), cFIRMWARE_START_ADDR, true); + + if (ret != 0) + { + + FPRINT("Load WS11UPh fail\n"); + return ret; + } + + return 0; } // tasklet (work deferred from completions, in_irq) or timer void defer_kevent(struct zd1205_private *macp, int flag) { - ZENTER(4); - set_bit(flag, &macp->kevent_flags); - if (!schedule_work(&macp->kevent)) { - ZD1211DEBUG(4, "schedule_task failed, flag = %x\n", flag); - } - ZEXIT(4); + + ZENTER(4); + + if (!macp->bUSBDeveiceAttached) + { + return; + } + // if (macp->kevent_flags != 0) + // printk("macp->kevent_flags=%08x\n",macp->kevent_flags); + set_bit(flag, &macp->kevent_flags); + if (flag == KEVENT_SCAN_TIMEOUT) + { + if(!schedule_work(&macp->scan_tout_event)) { + ZD1211DEBUG(4, "schedule_task failed, flag = %x\n", flag); + if(!schedule_work(&macp->scan_tout_event)) { + dot11Obj.bChScanning = FALSE; + } + printk("******* Schedule task fail *********\n"); + } + ZEXIT(4); + return; + } + + + + if (!schedule_work(&macp->kevent)) + { + ZD1211DEBUG(4, "schedule_task failed, flag = %x\n", flag); + } + + ZEXIT(4); + } void kevent(void *data) { - struct zd1205_private *macp = (struct zd1205_private *) data; - // non tx rx interrupt - if (test_bit(KEVENT_NON_TX_RX_INT, &macp->kevent_flags)) { - zd1211_handle_non_tx_rx(macp); - clear_bit(KEVENT_NON_TX_RX_INT, &macp->kevent_flags); - } - // scan timeout - if (test_bit(KEVENT_SCAN_TIMEOUT, &macp->kevent_flags)) { - //FPRINT("scan"); - zd_EventNotify(EVENT_SCAN_TIMEOUT, 0, 0, 0); - clear_bit(KEVENT_SCAN_TIMEOUT, &macp->kevent_flags); - } - // mgt_mon timeout - if (test_bit(KEVENT_MGT_MON_TIMEOUT, &macp->kevent_flags)) { - //FPRINT("connect_mon"); - zd1205_connect_mon(macp); - clear_bit(KEVENT_MGT_MON_TIMEOUT, &macp->kevent_flags); - } - - // house keeping timeout - if (test_bit(KEVENT_HOUSE_KEEPING, &macp->kevent_flags)) { - zd1205_house_keeping(macp); - clear_bit(KEVENT_HOUSE_KEEPING, &macp->kevent_flags); - } - - // watchdog timeout - if (test_bit(KEVENT_WATCH_DOG, &macp->kevent_flags)) { - zd1205_watchdog(macp); - clear_bit(KEVENT_WATCH_DOG, &macp->kevent_flags); - } - - // auth timeout - if (test_bit(KEVENT_AUTH_TIMEOUT, &macp->kevent_flags)) { - zd_EventNotify(EVENT_AUTH_TIMEOUT, 0, 0, 0); - clear_bit(KEVENT_AUTH_TIMEOUT, &macp->kevent_flags); - } - - // associate timeout - if (test_bit(KEVENT_ASOC_TIMEOUT, &macp->kevent_flags)) { - zd_EventNotify(EVENT_ASOC_TIMEOUT, 0, 0, 0); - clear_bit(KEVENT_ASOC_TIMEOUT, &macp->kevent_flags); - } - - // challenge timeout - if (test_bit(KEVENT_TCHAL_TIMEOUT, &macp->kevent_flags)) { - zd_EventNotify(EVENT_TCHAL_TIMEOUT, 0, 0, 0); - clear_bit(KEVENT_TCHAL_TIMEOUT, &macp->kevent_flags); - } - - // zd_ioctl - if (test_bit(KEVENT_ZD_IOCTL, &macp->kevent_flags)) { - zd1205_zd_dbg_ioctl(macp, &macp->zdreq); - clear_bit(KEVENT_ZD_IOCTL, &macp->kevent_flags); - } - - //use protection - if (test_bit(KEVENT_EN_PROTECTION, &macp->kevent_flags)) { - zd_EventNotify(EVENT_ENABLE_PROTECTION, 1, 0, 0); - clear_bit(KEVENT_EN_PROTECTION, &macp->kevent_flags); - } - - // disable protection - if (test_bit(KEVENT_DIS_PROTECTION, &macp->kevent_flags)) { - zd_EventNotify(EVENT_ENABLE_PROTECTION, 0, 0, 0); - clear_bit(KEVENT_DIS_PROTECTION, &macp->kevent_flags); - } - - //update card setting - if (test_bit(KEVENT_UPDATE_SETTING, &macp->kevent_flags)) { - clear_bit(KEVENT_UPDATE_SETTING, &macp->kevent_flags); - zd_UpdateCardSetting(&macp->cardSetting); - } - - // set multicast - if (test_bit(KEVENT_SET_MULTICAST, &macp->kevent_flags)) { - zd1211_set_multicast(macp); - clear_bit(KEVENT_SET_MULTICAST, &macp->kevent_flags); - } - - // process signal - if (test_bit(KEVENT_PROCESS_SIGNAL, &macp->kevent_flags)) { - zd_SigProcess(); - clear_bit(KEVENT_PROCESS_SIGNAL, &macp->kevent_flags); - } - - // enable barker preamble - if (test_bit(KEVENT_EN_BARKER, &macp->kevent_flags)) { - zd_EventNotify(EVENT_ENABLE_BARKER, 1, 0, 0); - clear_bit(KEVENT_EN_BARKER, &macp->kevent_flags); - } - - // disable barker preamble - if (test_bit(KEVENT_DIS_BARKER, &macp->kevent_flags)) { - zd_EventNotify(EVENT_ENABLE_BARKER, 0, 0, 0); - clear_bit(KEVENT_DIS_BARKER, &macp->kevent_flags); - } - - // enable short slot - if (test_bit(KEVENT_EN_SHORT_SLOT, &macp->kevent_flags)) { - zd_EventNotify(EVENT_SHORT_SLOT, 1, 0, 0); - clear_bit(KEVENT_EN_SHORT_SLOT, &macp->kevent_flags); - } - - // disable short slot - if (test_bit(KEVENT_DIS_SHORT_SLOT, &macp->kevent_flags)) { - zd_EventNotify(EVENT_SHORT_SLOT, 0, 0, 0); - clear_bit(KEVENT_DIS_SHORT_SLOT, &macp->kevent_flags); - } - - // disable short slot - if (test_bit(KEVENT_DIS_CONNECT, &macp->kevent_flags)) { - if (!zd1205_dis_connect(macp)) { - zd_CmdProcess(CMD_DIS_CONNECT, 0, 0); - macp->NoBcnDetectedCnt = 0; - } - clear_bit(KEVENT_DIS_CONNECT, &macp->kevent_flags); - } - - // std_ioctl - if (test_bit(KEVENT_STD_IOCTL, &macp->kevent_flags)) { - zd1205_ioctl(macp->device, &macp->ifreq, macp->ifcmd); - clear_bit(KEVENT_STD_IOCTL, &macp->kevent_flags); - } - - if (test_bit(KEVENT_REGISTER_NET, &macp->kevent_flags)) { - register_netdev(macp->device); - clear_bit(KEVENT_REGISTER_NET, &macp->kevent_flags); - } + struct zd1205_private *macp = (struct zd1205_private *) data; + if (!macp->bUSBDeveiceAttached) { + return; + } + + //non tx rx interrupt + if (test_bit(KEVENT_NON_TX_RX_INT, &macp->kevent_flags)) { + zd1211_handle_non_tx_rx(macp); + clear_bit(KEVENT_NON_TX_RX_INT, &macp->kevent_flags); + } + + //scan timeout + if (test_bit(KEVENT_SCAN_TIMEOUT, &macp->kevent_flags)) { + //FPRINT("scan"); + zd_EventNotify(EVENT_SCAN_TIMEOUT, 0, 0, 0); + clear_bit(KEVENT_SCAN_TIMEOUT, &macp->kevent_flags); + } + + //mgt_mon timeout + if (test_bit(KEVENT_MGT_MON_TIMEOUT, &macp->kevent_flags)) { + //FPRINT("connect_mon"); + zd1205_connect_mon(macp); + clear_bit(KEVENT_MGT_MON_TIMEOUT, &macp->kevent_flags); + } + + //house keeping timeout + if (test_bit(KEVENT_HOUSE_KEEPING, &macp->kevent_flags)) { + zd1205_house_keeping(macp); + clear_bit(KEVENT_HOUSE_KEEPING, &macp->kevent_flags); + } + + //watchdog timeout + if (test_bit(KEVENT_WATCH_DOG, &macp->kevent_flags)) { + zd1205_watchdog(macp); + clear_bit(KEVENT_WATCH_DOG, &macp->kevent_flags); + } + + //auth timeout + if (test_bit(KEVENT_AUTH_TIMEOUT, &macp->kevent_flags)) { + zd_EventNotify(EVENT_AUTH_TIMEOUT, 0, 0, 0); + clear_bit(KEVENT_AUTH_TIMEOUT, &macp->kevent_flags); + } + + //associate timeout + if (test_bit(KEVENT_ASOC_TIMEOUT, &macp->kevent_flags)) { + zd_EventNotify(EVENT_ASOC_TIMEOUT, 0, 0, 0); + clear_bit(KEVENT_ASOC_TIMEOUT, &macp->kevent_flags); + } + + //challenge timeout + if (test_bit(KEVENT_TCHAL_TIMEOUT, &macp->kevent_flags)) { + zd_EventNotify(EVENT_TCHAL_TIMEOUT, 0, 0, 0); + clear_bit(KEVENT_TCHAL_TIMEOUT, &macp->kevent_flags); + } + + //zd_ioctl + if (test_bit(KEVENT_ZD_IOCTL, &macp->kevent_flags)) { + //FPRINT("ioctl"); + zd1205_zd_dbg_ioctl(macp, &macp->zdreq); + clear_bit(KEVENT_ZD_IOCTL, &macp->kevent_flags); + } +/* ath_desc: support for unpatched wpasupplicant */ + //MLME ioctl handling + if (test_bit(KEVENT_ZD_MLME_IOCTL, &macp->kevent_flags)) { + zd1211_mlme(macp); + clear_bit(KEVENT_ZD_MLME_IOCTL, &macp->kevent_flags); + } + + //use protection + if (test_bit(KEVENT_EN_PROTECTION, &macp->kevent_flags)) { + zd_EventNotify(EVENT_ENABLE_PROTECTION, 1, 0, 0); + clear_bit(KEVENT_EN_PROTECTION, &macp->kevent_flags); + } + + //disable protection + if (test_bit(KEVENT_DIS_PROTECTION, &macp->kevent_flags)) { + zd_EventNotify(EVENT_ENABLE_PROTECTION, 0, 0, 0); + clear_bit(KEVENT_DIS_PROTECTION, &macp->kevent_flags); + } + + //update card setting + if (test_bit(KEVENT_UPDATE_SETTING, &macp->kevent_flags)) { + zd_UpdateCardSetting(&macp->cardSetting); + clear_bit(KEVENT_UPDATE_SETTING, &macp->kevent_flags); + } + + //set multicast + if (test_bit(KEVENT_SET_MULTICAST, &macp->kevent_flags)) { + zd1211_set_multicast(macp); + clear_bit(KEVENT_SET_MULTICAST, &macp->kevent_flags); + } + + //process signal + if (test_bit(KEVENT_PROCESS_SIGNAL, &macp->kevent_flags)) { + zd_SigProcess(); + clear_bit(KEVENT_PROCESS_SIGNAL, &macp->kevent_flags); + } + + //enable barker preamble + if (test_bit(KEVENT_EN_BARKER, &macp->kevent_flags)) { + zd_EventNotify(EVENT_ENABLE_BARKER, 1, 0, 0); + clear_bit(KEVENT_EN_BARKER, &macp->kevent_flags); + } + + //disable barker preamble + if (test_bit(KEVENT_DIS_BARKER, &macp->kevent_flags)) { + zd_EventNotify(EVENT_ENABLE_BARKER, 0, 0, 0); + clear_bit(KEVENT_DIS_BARKER, &macp->kevent_flags); + } + + //enable short slot + if (test_bit(KEVENT_EN_SHORT_SLOT, &macp->kevent_flags)) { + zd_EventNotify(EVENT_SHORT_SLOT, 1, 0, 0); + clear_bit(KEVENT_EN_SHORT_SLOT, &macp->kevent_flags); + } + + //disable short slot + if (test_bit(KEVENT_DIS_SHORT_SLOT, &macp->kevent_flags)) { + zd_EventNotify(EVENT_SHORT_SLOT, 0, 0, 0); + clear_bit(KEVENT_DIS_SHORT_SLOT, &macp->kevent_flags); + } + + //disable short slot + if (test_bit(KEVENT_DIS_CONNECT, &macp->kevent_flags)) { + if (!zd1205_dis_connect(macp)) { + zd_CmdProcess(CMD_DIS_CONNECT, 0, 0); + macp->NoBcnDetectedCnt = 0; + } + clear_bit(KEVENT_DIS_CONNECT, &macp->kevent_flags); + } + + //std_ioctl + if (test_bit(KEVENT_STD_IOCTL, &macp->kevent_flags)) { + //FPRINT("ioctl"); + zd1205_ioctl(macp->device, &macp->ifreq, macp->ifcmd); + clear_bit(KEVENT_STD_IOCTL, &macp->kevent_flags); + } + + // kill tx urb (usb_kill_urb cannot be called from interrupt) + if (test_bit(KEVENT_KILL_TX_URB, &macp->kevent_flags)) { + zd1211_kill_tx_urb(macp); + clear_bit(KEVENT_KILL_TX_URB, &macp->kevent_flags); + } + + if (test_bit(KEVENT_REGISTER_NET, &macp->kevent_flags)) { + register_netdev(macp->device); + clear_bit(KEVENT_REGISTER_NET, &macp->kevent_flags); + } } void zd1211_alloc_rx(unsigned long parm) { - struct zd1205_private *macp = (struct zd1205_private *) parm; - unsigned long flags; + struct zd1205_private *macp = (struct zd1205_private *) parm; + unsigned long flags; - spin_lock_irqsave(&macp->rx_pool_lock, flags); - zd1205_alloc_skbs(macp); - spin_unlock_irqrestore(&macp->rx_pool_lock, flags); + spin_lock_irqsave(&macp->rx_pool_lock, flags); + zd1205_alloc_skbs(macp); + spin_unlock_irqrestore(&macp->rx_pool_lock, flags); } + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdmmrx.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdmmrx.c @@ -1,172 +1,200 @@ -/* $Id: zdmmrx.c,v 1.8 2005/03/27 20:47:39 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +#ifndef __ZDMMRX_C__ +#define __ZDMMRX_C__ #include "zd80211.h" + void RxPsPoll(Frame_t *rdu) { - U16 aid; - U8 vapId = 0; - Hash_t *pHash; - MacAddr_t *sta; - //PSDEBUG("RxPsPoll"); - - aid = durId(rdu) & 0x3FFF; - sta = addr2(rdu); - if (isGroup(sta)) - return; - - if ((aid > MAX_AID) || (aid == 0)) { - zd_SendClass3ErrorFrame(sta, vapId); - return; - } else { - pHash = sstByAid[aid]; - if (pHash->asoc == STATION_STATE_ASOC) - PsPolled(sta, aid); - else - zd_SendClass3ErrorFrame(sta, vapId); - } + U16 aid; + U8 vapId = 0; + Hash_t *pHash; + MacAddr_t *sta; + + //PSDEBUG("RxPsPoll"); + + aid = durId(rdu) & 0x3FFF; + sta = addr2(rdu); + if (isGroup(sta)) + return; + + if ((aid > MAX_AID) || (aid == 0)) { + zd_SendClass3ErrorFrame(sta, vapId); + return; + } else { + pHash = sstByAid[aid]; + if (pHash->asoc == STATION_STATE_ASOC) + PsPolled(sta, aid); + else + zd_SendClass3ErrorFrame(sta, vapId); + } } BOOLEAN RxMgtMpdu(Signal_t *signal) { - StationState sas, sau; - FrmDesc_t *pfrmDesc; - Frame_t *rdu; - U8 FrmType; - U16 authSeq = 0; - - ZDEBUG("MgtRxMpdu"); - pfrmDesc = signal->frmInfo.frmDesc; - rdu = pfrmDesc->mpdu; - FrmType = frmType(rdu); - ZDEBUG_V("FrmType", FrmType); - switch (FrmType) { - case ST_PROBE_REQ: - signal->id = SIG_PROBE; - signal->block = BLOCK_SYNCH; - goto rx_indicate; - - case ST_DEAUTH: - if (isGroup(addr1(rdu))) - goto rx_release; - else { - signal->id = SIG_DEAUTH; - signal->block = BLOCK_AUTH_RSP; - goto rx_indicate; - } - - case ST_AUTH: - if (isGroup(addr1(rdu))) - goto rx_release; - else { - authSeq = authSeqNum(rdu); - if ((authSeq == 1) || ((authSeq == 3) && wepBit(rdu))) { //Seqence 1 or 3 - signal->id = SIG_AUTH_ODD; - signal->block = BLOCK_AUTH_RSP; - goto rx_indicate; - } else if ((authSeq == 2) || (authSeq == 4)) { //Seqence 2 or 4 - signal->id = SIG_AUTH_EVEN; - signal->block = BLOCK_AUTH_REQ; - goto rx_indicate; - } else { - goto rx_release; - } - } - - case ST_DISASOC: - SsInquiry(addr2(rdu), &sas, &sau); - if(sau == STATION_STATE_NOT_AUTH) { - goto class2_err; - } else { - signal->id = SIG_DISASSOC; - signal->block = BLOCK_ASOC; - goto rx_indicate; - } - - case ST_ASOC_REQ: - SsInquiry(addr2(rdu), &sas, &sau); - if (sau == STATION_STATE_NOT_AUTH) { - goto class2_err; - } else { - signal->id = SIG_ASSOC; - signal->block = BLOCK_ASOC; - goto rx_indicate; - } - - case ST_REASOC_REQ: - SsInquiry(addr2(rdu), &sas, &sau); - if (sau == STATION_STATE_NOT_AUTH) { - goto class2_err; - } else { - signal->id = SIG_REASSOC; - signal->block = BLOCK_ASOC; - goto rx_indicate; - } - - case ST_BEACON: - case ST_PROBE_RSP: - if (mBssType == AP_BSS) - goto rx_release; - signal->id = SIQ_PROBE_RSP_BEACON; - signal->block = BLOCK_SYNCH; - goto rx_indicate; - - case ST_ASOC_RSP: - if (mBssType == AP_BSS) - goto rx_release; - signal->id = SIG_ASSOC_RSP; - signal->block = BLOCK_ASOC; - goto rx_indicate; - - case ST_REASOC_RSP: - if (mBssType == AP_BSS) - goto rx_release; - signal->id = SIG_REASSOC_RSP; - signal->block = BLOCK_ASOC; - goto rx_indicate; - - default: - goto rx_release; - } + StationState sas, sau; + FrmDesc_t *pfrmDesc; + Frame_t *rdu; + U8 FrmType; + U16 authSeq = 0; + + ZDEBUG("MgtRxMpdu"); + pfrmDesc = signal->frmInfo.frmDesc; + rdu = pfrmDesc->mpdu; + FrmType = frmType(rdu); + ZDEBUG_V("FrmType", FrmType); + + switch (FrmType) { + case ST_PROBE_REQ: + signal->id = SIG_PROBE; + signal->block = BLOCK_SYNCH; + goto rx_indicate; + + case ST_DEAUTH: + if (isGroup(addr1(rdu))) + goto rx_release; + else { + if ((memcmp(&mBssId.mac[0],addr2(rdu),6)==0 && mBssType==INFRASTRUCTURE_BSS)) { +#ifdef WPA_DEBUG + printk(KERN_ERR "Rx Deauth,Reason:%u\n",reason(rdu)); +#endif + + signal->id = SIG_DEAUTH; + signal->block = BLOCK_AUTH_RSP; + goto rx_indicate; + } else if ((memcmp(&mBssId.mac[0],addr1(rdu),6)==0 && mBssType==AP_BSS)) { +#ifdef WPA_DEBUG + u8 *pCh=(u8*)addr2(rdu); + u8 i; + printk(KERN_ERR "Rx Deauth from station:"); + for (i=0; i<6; i++) { + printk("%02X ", *pCh++); + } + printk("\n"); +#endif + + signal->id = SIG_DEAUTH; + signal->block = BLOCK_AUTH_RSP; + goto rx_indicate; + } else { +#ifdef WPA_DEBUG + u8 *pCh=(u8*)addr2(rdu); + u8 i; + printk(KERN_ERR "Rx Deauth from unknown station:"); + for (i=0; i<6; i++) { + printk("%02X ", *pCh++); + } + printk("\n"); +#endif + + goto rx_release; + } + + } + + + case ST_AUTH: + if (isGroup(addr1(rdu))) + goto rx_release; + else { + authSeq = authSeqNum(rdu); + if ((authSeq == 1) || ((authSeq == 3) && wepBit(rdu))) { //Seqence 1 or 3 + signal->id = SIG_AUTH_ODD; + signal->block = BLOCK_AUTH_RSP; + goto rx_indicate; + } else if ((authSeq == 2) || (authSeq == 4)) { //Seqence 2 or 4 + signal->id = SIG_AUTH_EVEN; + signal->block = BLOCK_AUTH_REQ; + goto rx_indicate; + } else { + goto rx_release; + } + } + + case ST_DISASOC: + SsInquiry(addr2(rdu), &sas, &sau); + if ((memcmp(&mBssId.mac[0],addr2(rdu),6)==0 && mBssType==INFRASTRUCTURE_BSS)) { +#ifdef WPA_DEBUG + printk(KERN_ERR "Rx DeAssoc,Reason:%u\n",reason(rdu)); +#endif + + } + if(sau == STATION_STATE_NOT_AUTH) { + goto class2_err; + } else { + signal->id = SIG_DISASSOC; + signal->block = BLOCK_ASOC; + goto rx_indicate; + } + + case ST_ASOC_REQ: + SsInquiry(addr2(rdu), &sas, &sau); + if (sau == STATION_STATE_NOT_AUTH) { + goto class2_err; + } else { + signal->id = SIG_ASSOC; + signal->block = BLOCK_ASOC; + goto rx_indicate; + } + + case ST_REASOC_REQ: + SsInquiry(addr2(rdu), &sas, &sau); + if (sau == STATION_STATE_NOT_AUTH) { + goto class2_err; + } else { + signal->id = SIG_REASSOC; + signal->block = BLOCK_ASOC; + goto rx_indicate; + } + + case ST_BEACON: + case ST_PROBE_RSP: + if (mBssType == AP_BSS) + goto rx_release; + + signal->id = SIQ_PROBE_RSP_BEACON; + signal->block = BLOCK_SYNCH; + goto rx_indicate; + + case ST_ASOC_RSP: + if (mBssType == AP_BSS) + goto rx_release; + + signal->id = SIG_ASSOC_RSP; + signal->block = BLOCK_ASOC; + goto rx_indicate; + + case ST_REASOC_RSP: + if (mBssType == AP_BSS) + goto rx_release; + + signal->id = SIG_REASSOC_RSP; + signal->block = BLOCK_ASOC; + goto rx_indicate; + + default: + goto rx_release; + } + rx_release: - ZDEBUG("goto rx_release"); - return FALSE; + ZDEBUG("goto rx_release"); + return FALSE; -rx_indicate: - signal->frmInfo.frmDesc = pfrmDesc; - sigEnque(pMgtQ, (signal)); - return TRUE; +rx_indicate: + signal->frmInfo.frmDesc = pfrmDesc; + sigEnque(pMgtQ, (signal)); + return TRUE; class2_err: - ZDEBUG("goto class2_err"); - signal->id = SIG_DEAUTH_REQ; - signal->block = BLOCK_AUTH_REQ; - memcpy((U8 *)&signal->frmInfo.Sta, (U8 *)(addr2(rdu)), 6); - signal->frmInfo.rCode = RC_CLASS2_ERROR; - freeFdesc(pfrmDesc); - sigEnque(pMgtQ, (signal)); - return TRUE; + ZDEBUG("goto class2_err"); + signal->id = SIG_DEAUTH_REQ; + signal->block = BLOCK_AUTH_REQ; + memcpy((U8 *)&signal->frmInfo.Sta, (U8 *)(addr2(rdu)), 6); + signal->frmInfo.rCode = RC_CLASS2_ERROR; + freeFdesc(pfrmDesc); + sigEnque(pMgtQ, (signal)); + return TRUE; } + +#endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdequates.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdequates.h @@ -1,164 +1,188 @@ -/* $Id: zdequates.h,v 1.9 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +/**************************************************************************** +** COPYRIGHT (C) 2002 ZYDAS CORPORATION ** +** HTTP://WWW.ZYDAS.COM.TW/ ** +****************************************************************************/ #ifndef _ZDEQUATES_H #define _ZDEQUATES_H + //------------------------------------------------------------------------- // Ethernet Frame_t Sizes //------------------------------------------------------------------------- -#define ETHERNET_ADDRESS_LENGTH 6 -#define ETHERNET_HEADER_SIZE 14 -#define MINIMUM_ETHERNET_PACKET_SIZE 60 -#define MAXIMUM_ETHERNET_PACKET_SIZE 1514 -#define MAX_WLAN_SIZE 4800 -#define ZD_MAX_WLAN_SIZE 4800 -#define WLAN_HEADER 24 -#define CRC32_LEN 4 -#define IV_SIZE 4 -#define ICV_SIZE 4 - -#define PLCP_HEADER 5 -#define EXTRA_INFO_LEN 5 //8 for ZD1212 - -#define EXTEND_IV_LEN 4 -#define MIC_LENGTH 8 -#define WDS_ADD_HEADER 6 -#define EAPOL_TYPE 0x888e - -#define BCN_INTERVAL_OFFSET 8 -#define CAP_OFFSET 10 -#define SSID_OFFSET 12 -#define NUM_SUPPORTED_RATE 32 - -#define BSS_INFO_NUM 64 - -#define TUPLE_CACHE_SIZE 16 -#define MAX_DEFRAG_NUM 8 -#define MAX_RX_TIMEOUT (100) - -#define MAXIM2_MAX_TX_PWR_SET 0x7F -#define MAXIM2_MIN_TX_PWR_SET 0x0 -#define RFMD_MAX_TX_PWR_SET 0xF0 -#define RFMD_MIN_TX_PWR_SET 0x60 - -#define GCT_MAX_TX_PWR_SET 0x3f -#define GCT_MIN_TX_PWR_SET 0x0 +#define ETHERNET_ADDRESS_LENGTH 6 +#define ETHERNET_HEADER_SIZE 14 +#define MINIMUM_ETHERNET_PACKET_SIZE 60 +#define MAXIMUM_ETHERNET_PACKET_SIZE 1514 +#if 1//fMERGE_RX_FRAME + #define MAX_WLAN_SIZE 4800 + #define ZD_MAX_WLAN_SIZE 4800 +#else + #define MAX_WLAN_SIZE 2432 + #define ZD_MAX_WLAN_SIZE 1600 +#endif + +#define WLAN_HEADER 24 +#define CRC32_LEN 4 +#define IV_SIZE 4 +#define ICV_SIZE 4 + +#if defined(HOST_IF_USB) +#define PLCP_HEADER 5 +#define EXTRA_INFO_LEN 5 //8 for ZD1212 +#else + + +#define PLCP_HEADER 4 +#define EXTRA_INFO_LEN 4 +#endif + +#define EXTEND_IV_LEN 4 +#define MIC_LENGTH 8 +#define WDS_ADD_HEADER 6 +#define EAPOL_TYPE 0x888e + +#define BCN_INTERVAL_OFFSET 8 +#define CAP_OFFSET 10 +#define SSID_OFFSET 12 +#define NUM_SUPPORTED_RATE 32 + +#define BSS_INFO_NUM 64 + +#define TUPLE_CACHE_SIZE 16 +#define MAX_DEFRAG_NUM 8 + + +#if defined(HOST_IF_USB) + #define MAX_RX_TIMEOUT (100) +#else + #define MAX_RX_TIMEOUT (512*10*1000) +#endif -#define AL2210_MAX_TX_PWR_SET 0xff -#define AL2210_MIN_TX_PWR_SET 0x80 +#define MAXIM2_MAX_TX_PWR_SET 0x7F +#define MAXIM2_MIN_TX_PWR_SET 0x0 +#define RFMD_MAX_TX_PWR_SET 0xF0 +#define RFMD_MIN_TX_PWR_SET 0x60 + +#define GCT_MAX_TX_PWR_SET 0x3f +#define GCT_MIN_TX_PWR_SET 0x0 -#define MAX_TX_PWR_READING 0xf0 -#define MIN_TX_PWR_READING 0x30 +#define AL2210_MAX_TX_PWR_SET 0xff +#define AL2210_MIN_TX_PWR_SET 0x80 + +#define MAX_TX_PWR_READING 0xf0 +#define MIN_TX_PWR_READING 0x30 + +#define AL2230_MAX_TX_PWR_SET (0x7F-1) +#define AL2230_MIN_TX_PWR_SET (0x00+1) -#define AL2230_MAX_TX_PWR_SET (0x7F-1) -#define AL2230_MIN_TX_PWR_SET (0x00+1) #define TRACKING_NUM 20//10 + //for USB -#define cTX_CCK 1 -#define cTX_OFDM 2 // 6M - 36M -#define cTX_48M 3 -#define cTX_54M 4 -#define cPWR_CTRL_GUARD 4 // CR57: 4 -> 0.5 dB -#define cPWR_INT_VALUE_GUARD 8 // CR31: 4 -> 1 dB; 8 -> 2 dB -#define cPWR_STRONG_SIG_DROP (0x18 - cPWR_INT_VALUE_GUARD) - -#define cLBTEST_COUNT 1000 -#define cLBTEST_PATN 0x55 - -#define cMAX_MULTI_WRITE_REG_NUM 15 -#define cMIN_MULTI_WRITE_REG_NUM 0 -#define cMAX_MULTI_RF_REG_NUM 28 -#define cMAX_MULTI_READ_REG_NUM 15 +#define cTX_CCK 1 +#define cTX_OFDM 2 // 6M - 36M +#define cTX_48M 3 +#define cTX_54M 4 +#define cPWR_CTRL_GUARD 4 // CR57: 4 -> 0.5 dB +#define cPWR_INT_VALUE_GUARD 8 // CR31: 4 -> 1 dB; 8 -> 2 dB +#define cPWR_STRONG_SIG_DROP (0x18 - cPWR_INT_VALUE_GUARD) + + +#define cLBTEST_COUNT 1000 +#define cLBTEST_PATN 0x55 + + +#define cMAX_MULTI_WRITE_REG_NUM 15 +#define cMIN_MULTI_WRITE_REG_NUM 0 +#define cMAX_MULTI_RF_REG_NUM 28 +#define cMAX_MULTI_READ_REG_NUM 15 + /* Firmware Interface */ -#define cTX_QUEUE_LEN 4 +#define cTX_QUEUE_LEN 4 // make sure already Tx by HMAC (for UMAC System) // 1.Host->UMAC, 2.In UMAC Queue, 3.HMAC Sent -#define cTX_SENT_LEN (cTX_QUEUE_LEN + 2) -#define cFIRMWARE_OLD_ADDR 0xEC00 -#define cFIRMWARE_START_ADDR 0xEE00 -#define cFIRMWARE_EXT_CODE 0x1000 -#define cADDR_ENTRY_TABLE (cFIRMWARE_START_ADDR + 0x1D) -#define cBOOTCODE_START_ADDR 0xF800 -#define cINT_VECT_ADDR 0xFFF5 -#define cEEPROM_SIZE 0x800 // 2k word (4k byte) +#define cTX_SENT_LEN (cTX_QUEUE_LEN + 2) +#define cFIRMWARE_OLD_ADDR 0xEC00 +#define cFIRMWARE_START_ADDR 0xEE00 +#define cFIRMWARE_EXT_CODE 0x1000 +#define cADDR_ENTRY_TABLE (cFIRMWARE_START_ADDR + 0x1D) +#define cBOOTCODE_START_ADDR 0xF800 +#define cINT_VECT_ADDR 0xFFF5 +#define cEEPROM_SIZE 0x800 // 2k word (4k byte) + // in word (16 bit width) -#define cLOAD_CODE_LEN 0xE -#define cLOAD_VECT_LEN (0x10000 - 0xFFF7) -#define cEPDATA_OFFSET (cLOAD_CODE_LEN + cLOAD_VECT_LEN) -#define USB_BASE_ADDR_EEPROM 0x9900 -#define USB_BASE_ADDR_HOST 0x9B00 -#define BASE_ADDR_MASK_HOST (~0x00FF) -#define cFIRMWARE_EEPROM_OFFSET (cBOOTCODE_START_ADDR + cEPDATA_OFFSET) +#define cLOAD_CODE_LEN 0xE +#define cLOAD_VECT_LEN (0x10000 - 0xFFF7) +#define cEPDATA_OFFSET (cLOAD_CODE_LEN + cLOAD_VECT_LEN) +#define USB_BASE_ADDR_EEPROM 0x9900 +#ifdef ZD1211B + #define USB_BASE_ADDR_HOST 0x9F00 +#elif defined(ZD1211) + #define USB_BASE_ADDR_HOST 0x9B00 +#else + #error "***** You Need To Specified ZD1211 or ZD1211B *****" +#endif +#define BASE_ADDR_MASK_HOST (~0x00FF) +#define cFIRMWARE_EEPROM_OFFSET (cBOOTCODE_START_ADDR + cEPDATA_OFFSET) //end of USB + // For Rate Adaption -#define FALL_RATE 0x0 -#define RISE_RATE 0x1 +#define FALL_RATE 0x0 +#define RISE_RATE 0x1 -#define PS_CAM 0x0 -#define PS_PSM 0x1 +#define PS_CAM 0x0 +#define PS_PSM 0x1 -#define ACC_1 0x0 -#define ACC_2 0x1 +#define ACC_1 0x0 +#define ACC_2 0x1 // MAC_PA_STATE #define MAC_INI 0x0 #define MAC_OPERATION 0x1 +#define MAC_PS_OPERATION 0x1 +#define MAC_PS_SLEEP 0x2 + + // RF TYPE #define UW2451_RF 0x2 #define uChip_RF 0x3 #define AL2230_RF 0x4 -#define AL2210MPVB_RF 0x4 +#define AL2210MPVB_RF 0x4 +#define AL7230B_RF 0x5 //a,b,g RF #define THETA_RF 0x6 #define AL2210_RF 0x7 -#define MAXIM_NEW_RF 0x8 +#define MAXIM_NEW_RF 0x8 #define GCT_RF 0x9 -#define PV2000_RF 0xA +#define AL2230S_RF 0xA #define RALINK_RF 0xB #define INTERSIL_RF 0xC #define RFMD_RF 0xD -#define MAXIM_NEW_RF2 0xE + + +#define MAXIM_NEW_RF2 0xE #define PHILIPS_RF 0xF + + #define ELEID_SSID 0 -#define ELEID_SUPRATES 1 -#define ELEID_DSPARMS 3 + + +#define ELEID_SUPRATES 1 +#define ELEID_DSPARMS 3 #define ELEID_TIM 5 -#define ELEID_ERP_INFO 42 -#define ELEID_EXT_RATES 50 +#define ELEID_ERP_INFO 42 +#define ELEID_EXT_RATES 50 //------------------------------------------------------------------------- //- Miscellaneous Equates //------------------------------------------------------------------------- #ifndef FALSE -#define FALSE 0 -#define TRUE 1 +#define FALSE 0 +#define TRUE 1 #endif #define DRIVER_NULL ((u32)0xffffffff) @@ -166,206 +190,219 @@ //------------------------------------------------------------------------- // Bit Mask definitions //------------------------------------------------------------------------- -#define BIT_0 0x0001 -#define BIT_1 0x0002 -#define BIT_2 0x0004 -#define BIT_3 0x0008 -#define BIT_4 0x0010 -#define BIT_5 0x0020 -#define BIT_6 0x0040 -#define BIT_7 0x0080 -#define BIT_8 0x0100 -#define BIT_9 0x0200 -#define BIT_10 0x0400 -#define BIT_11 0x0800 -#define BIT_12 0x1000 -#define BIT_13 0x2000 -#define BIT_14 0x4000 -#define BIT_15 0x8000 -#define BIT_16 0x00010000 -#define BIT_17 0x00020000 -#define BIT_18 0x00040000 -#define BIT_19 0x00080000 -#define BIT_20 0x00100000 -#define BIT_21 0x00200000 -#define BIT_22 0x00400000 -#define BIT_23 0x00800000 -#define BIT_24 0x01000000 -#define BIT_25 0x02000000 -#define BIT_26 0x04000000 -#define BIT_27 0x08000000 -#define BIT_28 0x10000000 -#define BIT_29 0x20000000 -#define BIT_30 0x40000000 -#define BIT_31 0x80000000 - -#define BIT_0_1 0x0003 -#define BIT_0_2 0x0007 -#define BIT_0_3 0x000F -#define BIT_0_4 0x001F -#define BIT_0_5 0x003F -#define BIT_0_6 0x007F -#define BIT_0_7 0x00FF -#define BIT_0_8 0x01FF -#define BIT_0_13 0x3FFF -#define BIT_0_15 0xFFFF -#define BIT_1_2 0x0006 -#define BIT_1_3 0x000E -#define BIT_2_5 0x003C -#define BIT_3_4 0x0018 -#define BIT_4_5 0x0030 -#define BIT_4_6 0x0070 -#define BIT_4_7 0x00F0 -#define BIT_5_7 0x00E0 -#define BIT_5_9 0x03E0 -#define BIT_5_12 0x1FE0 -#define BIT_5_15 0xFFE0 -#define BIT_6_7 0x00c0 -#define BIT_7_11 0x0F80 -#define BIT_8_10 0x0700 -#define BIT_9_13 0x3E00 -#define BIT_12_15 0xF000 - -#define BIT_16_20 0x001F0000 -#define BIT_21_25 0x03E00000 -#define BIT_26_27 0x0C000000 +#define BIT_0 0x0001 +#define BIT_1 0x0002 +#define BIT_2 0x0004 +#define BIT_3 0x0008 +#define BIT_4 0x0010 +#define BIT_5 0x0020 +#define BIT_6 0x0040 +#define BIT_7 0x0080 +#define BIT_8 0x0100 +#define BIT_9 0x0200 +#define BIT_10 0x0400 +#define BIT_11 0x0800 +#define BIT_12 0x1000 +#define BIT_13 0x2000 +#define BIT_14 0x4000 +#define BIT_15 0x8000 +#define BIT_16 0x00010000 +#define BIT_17 0x00020000 +#define BIT_18 0x00040000 +#define BIT_19 0x00080000 +#define BIT_20 0x00100000 +#define BIT_21 0x00200000 +#define BIT_22 0x00400000 +#define BIT_23 0x00800000 +#define BIT_24 0x01000000 +#define BIT_25 0x02000000 +#define BIT_26 0x04000000 +#define BIT_27 0x08000000 +#define BIT_28 0x10000000 +#define BIT_29 0x20000000 +#define BIT_30 0x40000000 +#define BIT_31 0x80000000 + +#define BIT_0_1 0x0003 +#define BIT_0_2 0x0007 +#define BIT_0_3 0x000F +#define BIT_0_4 0x001F +#define BIT_0_5 0x003F +#define BIT_0_6 0x007F +#define BIT_0_7 0x00FF +#define BIT_0_8 0x01FF +#define BIT_0_13 0x3FFF +#define BIT_0_15 0xFFFF +#define BIT_1_2 0x0006 +#define BIT_1_3 0x000E +#define BIT_2_5 0x003C +#define BIT_3_4 0x0018 +#define BIT_4_5 0x0030 +#define BIT_4_6 0x0070 +#define BIT_4_7 0x00F0 +#define BIT_5_7 0x00E0 +#define BIT_5_9 0x03E0 +#define BIT_5_12 0x1FE0 +#define BIT_5_15 0xFFE0 +#define BIT_6_7 0x00c0 +#define BIT_7_11 0x0F80 +#define BIT_8_10 0x0700 +#define BIT_9_13 0x3E00 +#define BIT_12_15 0xF000 + +#define BIT_16_20 0x001F0000 +#define BIT_21_25 0x03E00000 +#define BIT_26_27 0x0C000000 + +#define RANDOM 0x0 +#define INCREMENT 0x1 + -#define RANDOM 0x0 -#define INCREMENT 0x1 // Device Bus-Master (Tx) state -#define TX_IDLE 0x00 -#define TX_READ_TBD 0x01 -#define TX_READ_DATA0 0x02 -#define TX_READ_DATA1 0x03 -#define TX_CHK_TBD_CNT 0x04 -#define TX_READ_TCB 0x05 -#define TX_CHK_TCB 0x06 -#define TX_WAIT_DATA 0x07 -#define TX_RETRYFAILURE 0x08 -#define TX_REDOWNLOAD 0x09 +#define TX_IDLE 0x00 +#define TX_READ_TBD 0x01 +#define TX_READ_DATA0 0x02 +#define TX_READ_DATA1 0x03 +#define TX_CHK_TBD_CNT 0x04 +#define TX_READ_TCB 0x05 +#define TX_CHK_TCB 0x06 +#define TX_WAIT_DATA 0x07 +#define TX_RETRYFAILURE 0x08 +#define TX_REDOWNLOAD 0x09 // Device Bus-Master (Rx) state -#define RX_IDLE 0x00 -#define RX_WAIT_DATA 0x10 -#define RX_DATA0 0x20 -#define RX_DATA1 0x30 -#define RX_READ_RCB 0x50 -#define RX_CHK_RCB 0x60 -#define RX_WAIT_STS 0x70 -#define RX_FRM_ERR 0x80 -#define RX_CHK_DATA 0x90 - -#define MAX_SSID_LEN 32 - -#define HOST_PEND BIT_31 -#define CAM_WRITE BIT_31 -#define MAC_LENGTH 6 -#define MIC_FINISH BIT_0 +#define RX_IDLE 0x00 +#define RX_WAIT_DATA 0x10 +#define RX_DATA0 0x20 +#define RX_DATA1 0x30 +#define RX_READ_RCB 0x50 + +#define RX_CHK_RCB 0x60 +#define RX_WAIT_STS 0x70 +#define RX_FRM_ERR 0x80 +#define RX_CHK_DATA 0x90 + + +#define MAX_SSID_LEN 32 + +#define HOST_PEND BIT_31 +#define CAM_WRITE BIT_31 +#define MAC_LENGTH 6 +#define RX_MIC_ERROR_IND BIT_4 // Bit4 of ExtraInfo[6], its Bit3-Bit0 indicates the encryption type. +#define RX_HW_MIC_ENABLE BIT_25 // The subfield of ZD_SnifferOn + +#define MIC_FINISH BIT_0 + +#define RX_MIC_ERROR_IND BIT_4 +#define HW_MIC_ENABLE BIT_25 -#define RX_MIC_ERROR_IND BIT_4 -#define HW_MIC_ENABLE BIT_25 enum Frame_Control_Bit { - TO_DS = BIT_0, - FROM_DS = BIT_1, - MORE_FRAG = BIT_2, - RETRY_BIT = BIT_3, - PWR_BIT = BIT_4, - MORE_DATA = BIT_5, - ENCRY_BIT = BIT_6, - ODER_BIT = BIT_7 + TO_DS = BIT_0, + FROM_DS = BIT_1, + MORE_FRAG = BIT_2, + RETRY_BIT = BIT_3, + PWR_BIT = BIT_4, + MORE_DATA = BIT_5, + ENCRY_BIT = BIT_6, + ODER_BIT = BIT_7 + }; -#define MAX_USER 40 -#define MAX_KEY_LENGTH 16 + + +#define MAX_USER 40 +#define MAX_KEY_LENGTH 16 #define ENCRY_TYPE_START_ADDR 60 -#define DEFAULT_ENCRY_TYPE 65 -#define KEY_START_ADDR 66 -#define STA_KEY_START_ADDR 386 -#define COUNTER_START_ADDR 418 +#define DEFAULT_ENCRY_TYPE 65 +#define KEY_START_ADDR 66 +#define STA_KEY_START_ADDR 386 +#define COUNTER_START_ADDR 418 #define STA_COUNTER_START_ADDR 423 -#define EXTENDED_IV BIT_5 -#define QoS_DATA BIT_7 -#define TO_DS_FROM_DS BIT_0_1 - -#define AP_MODE BIT_24 -#define IBSS_MODE BIT_25 -#define POWER_MNT BIT_26 -#define STA_PS BIT_27 - -#define NON_ERP_PRESENT_BIT BIT_0 - -#define USE_PROTECTION_BIT BIT_1 -#define BARKER_PREAMBLE_BIT BIT_2 - -#define HOST_BIG_ENDIAN BIT_0 - -#define MEMBER_ZD1202 BIT_0 -#define MEMBER_OTHERS BIT_1 -#define BEACON_TIME 1 -#define REG_MAX_WAIT 500 +#define EXTENDED_IV BIT_5 +#define QoS_DATA BIT_7 +#define TO_DS_FROM_DS BIT_0_1 + +#define AP_MODE BIT_24 +#define IBSS_MODE BIT_25 +#define POWER_MNT BIT_26 +#define STA_PS BIT_27 + +#define NON_ERP_PRESENT_BIT BIT_0 + +#define USE_PROTECTION_BIT BIT_1 +#define BARKER_PREAMBLE_BIT BIT_2 + +#define HOST_BIG_ENDIAN BIT_0 + +#define MEMBER_ZD1202 BIT_0 +#define MEMBER_OTHERS BIT_1 +#define BEACON_TIME 1 +#define REG_MAX_WAIT 500 //for UART support /* * These are the definitions for the Line Control Register */ -#define UART_LCR_SBC BIT_6 /* Set break control */ -#define UART_LCR_DLAB BIT_7 /* Divisor latch access bit */ +#define UART_LCR_SBC BIT_6 /* Set break control */ +#define UART_LCR_DLAB BIT_7 /* Divisor latch access bit */ /* * These are the definitions for the Line Status Register */ -#define UART_LSR_DR BIT_0 /* Receiver data ready */ -#define UART_LSR_OE BIT_1 /* Overrun error indicator */ -#define UART_LSR_BI BIT_4 /* Break interrupt indicator */ -#define UART_LSR_THRE BIT_5 /* Transmit-hold-register empty */ -#define UART_LSR_TEMT BIT_6 /* Transmitter empty */ +#define UART_LSR_DR BIT_0 /* Receiver data ready */ +#define UART_LSR_OE BIT_1 /* Overrun error indicator */ +#define UART_LSR_BI BIT_4 /* Break interrupt indicator */ +#define UART_LSR_THRE BIT_5 /* Transmit-hold-register empty */ +#define UART_LSR_TEMT BIT_6 /* Transmitter empty */ /* * These are the definitions for the Interrupt Identification Register */ -#define UART_IIR_ID_MASK 0x0E /* Mask for the interrupt ID */ -#define UART_IIR_MSI 0x00 /* Modem status interrupt */ -#define UART_IIR_NO_INT BIT_0 /* No interrupts pending */ -#define UART_IIR_THRI BIT_1 /* Transmitter holding register empty */ -#define UART_IIR_RDI BIT_2 /* Receiver data interrupt */ -#define UART_IIR_RLSI 0x06 /* Receiver line status interrupt */ -#define UART_IIR_RX_TIMEOUT 0x0C /* Rx timeout interrupt */ +#define UART_IIR_ID_MASK 0x0E /* Mask for the interrupt ID */ +#define UART_IIR_MSI 0x00 /* Modem status interrupt */ +#define UART_IIR_NO_INT BIT_0 /* No interrupts pending */ +#define UART_IIR_THRI BIT_1 /* Transmitter holding register empty */ +#define UART_IIR_RDI BIT_2 /* Receiver data interrupt */ +#define UART_IIR_RLSI 0x06 /* Receiver line status interrupt */ +#define UART_IIR_RX_TIMEOUT 0x0C /* Rx timeout interrupt */ /* + + * These are the definitions for the Interrupt Enable Register */ -#define UART_IER_RDI BIT_0 /* Enable receiver data interrupt */ -#define UART_IER_THRI BIT_1 /* Enable Transmitter holding register int. */ -#define UART_IER_RLSI BIT_2 /* Enable receiver line status interrupt */ -#define UART_IER_MSI BIT_3 /* Enable Modem status interrupt */ +#define UART_IER_RDI BIT_0 /* Enable receiver data interrupt */ +#define UART_IER_THRI BIT_1 /* Enable Transmitter holding register int. */ +#define UART_IER_RLSI BIT_2 /* Enable receiver line status interrupt */ +#define UART_IER_MSI BIT_3 /* Enable Modem status interrupt */ /* * These are the definitions for the Modem Control Register */ -#define UART_MCR_DTR BIT_0 /* DTR complement */ -#define UART_MCR_RTS BIT_1 /* RTS complement */ -#define UART_MCR_TAFC BIT_5 /* Tx auto flow control */ -#define UART_MCR_RAFC BIT_6 /* Rx auot flow control */ +#define UART_MCR_DTR BIT_0 /* DTR complement */ +#define UART_MCR_RTS BIT_1 /* RTS complement */ +#define UART_MCR_TAFC BIT_5 /* Tx auto flow control */ +#define UART_MCR_RAFC BIT_6 /* Rx auot flow control */ /* * These are the definitions for the Modem Status Register */ -#define UART_MSR_DCTS BIT_0 /* Delta CTS */ -#define UART_MSR_DDCD BIT_3 /* Delta DCD */ -#define UART_MSR_CTS BIT_4 /* Clear to Send */ -#define UART_MSR_DCD BIT_7 /* Data Carrier Detect */ -#define UART_MSR_ANY_DELTA 0x09 /* Any of the delta bits! */ +#define UART_MSR_DCTS BIT_0 /* Delta CTS */ +#define UART_MSR_DDCD BIT_3 /* Delta DCD */ +#define UART_MSR_CTS BIT_4 /* Clear to Send */ +#define UART_MSR_DCD BIT_7 /* Data Carrier Detect */ +#define UART_MSR_ANY_DELTA 0x09 /* Any of the delta bits! */ /* * These are the definitions for the FIFO Control Register * */ -#define UART_FCR_CLEAR_RCVR BIT_1 /* Clear the RCVR FIFO */ -#define UART_FCR_CLEAR_XMIT BIT_2 /* Clear the XMIT FIFO */ +#define UART_FCR_CLEAR_RCVR BIT_1 /* Clear the RCVR FIFO */ +#define UART_FCR_CLEAR_XMIT BIT_2 /* Clear the XMIT FIFO */ #define UART_FCR_TX_TRIGGER_1 0x00 /* Mask for tx trigger set at 1 */ #define UART_FCR_TX_TRIGGER_2 0x10 /* Mask for tx trigger set at 2 */ #define UART_FCR_TX_TRIGGER_4 0x20 /* Mask for tx trigger set at 4 */ @@ -375,6 +412,7 @@ #define UART_FCR_RX_TRIGGER_8 0x80 /* Mask for rx trigger set at 8 */ #define UART_FCR_RX_TRIGGER_14 0xC0 /* Mask for rx trigger set at 14 */ + //Extra Control register #define UART_ECR_BREAK_LEN_11_BAUD 0x00 /* Break length 11 baud clocks */ #define UART_ECR_BREAK_LEN_12_BAUD 0x01 /* Break length 12 baud clocks */ @@ -389,30 +427,33 @@ #define UART_ECR_ENABLE BIT_7 /* UART enable */ //Baud rate definition -#define BAUD_RATE_2400 0xBF -#define BAUD_RATE_4800 0x5F -#define BAUD_RATE_9600 0x2F -#define BAUD_RATE_19200 0x17 -#define BAUD_RATE_38400 0x0B -#define BAUD_RATE_57600 0x07 -#define BAUD_RATE_115200 0x03 -#define BAUD_RATE_230400 0x01 -#define BAUD_RATE_460800 0x00 +#define BAUD_RATE_2400 0xBF +#define BAUD_RATE_4800 0x5F +#define BAUD_RATE_9600 0x2F +#define BAUD_RATE_19200 0x17 +#define BAUD_RATE_38400 0x0B +#define BAUD_RATE_57600 0x07 +#define BAUD_RATE_115200 0x03 +#define BAUD_RATE_230400 0x01 +#define BAUD_RATE_460800 0x00 // for EEPROM support -#define EEPROM_BASE_ADDRESS 0x900 -#define EEPROM_WRITE_ACCESS BIT_15 -#define EEPROM_BUSY_FLAG BIT_15 -#define EEPROM_ACCESS_WRITE 0x01 -#define EEPROM_ACCESS_READ 0x00 - -#define mBIT(b) (1 << (b)) -#define mMASK(w) (mBIT(w) - 1) -#define mSET_MASK(a, b) ((a) | (b)) -#define mCLR_MASK(a, b) ((a) & (~(b))) -#define mSET_BIT(a, b) mSET_MASK(a, mBIT(b)) -#define mCLR_BIT(a, b) mCLR_MASK(a, mBIT(b)) -#define mCHK_BIT1(a, b) ((a) & mBIT(b)) -#define mTEST_BIT(a, b) mCHK_BIT1(a, b) +#define EEPROM_BASE_ADDRESS 0x900 +#define EEPROM_WRITE_ACCESS BIT_15 +#define EEPROM_BUSY_FLAG BIT_15 +#define EEPROM_ACCESS_WRITE 0x01 +#define EEPROM_ACCESS_READ 0x00 + + +#define mBIT(b) (1 << (b)) +#define mMASK(w) (mBIT(w) - 1) +#define mSET_MASK(a, b) ((a) | (b)) +#define mCLR_MASK(a, b) ((a) & (~(b))) +#define mSET_BIT(a, b) mSET_MASK(a, mBIT(b)) +#define mCLR_BIT(a, b) mCLR_MASK(a, mBIT(b)) +#define mCHK_BIT1(a, b) ((a) & mBIT(b)) +#define mTEST_BIT(a, b) mCHK_BIT1(a, b) + + +#endif // _EQUATES_H -#endif // _EQUATES_H --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdasocsvc.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdasocsvc.c @@ -1,533 +1,592 @@ -/* $Id: zdasocsvc.c,v 1.10 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +#ifndef __ZDASOCSVC_C__ +#define __ZDASOCSVC_C__ #include "zd80211.h" +#include "zd1205.h" U8 AsocState = STE_ASOC_IDLE; static MacAddr_t AsSta; +extern struct net_device *g_dev; -BOOLEAN Disasoc(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - Frame_t *rdu; - MacAddr_t Sta; - ReasonCode Rsn; - U8 vapId = 0; - - //ZDEBUG("Disasoc"); - //FPRINT("Disasoc"); - pfrmDesc = signal->frmInfo.frmDesc; - rdu = pfrmDesc->mpdu; - memcpy((U8 *)&Sta, (U8 *)(addr2(rdu)), 6); - Rsn = (ReasonCode)(reason(rdu)); - - if (mBssType == INFRASTRUCTURE_BSS) { - if ((!mAssoc) || (memcmp(&Sta, (U8*)&mBssId, 6) != 0)) { //Not for this BSSID - //discard this packet - freeFdesc(pfrmDesc); - return TRUE; - } else { - freeFdesc(pfrmDesc); - UpdateStaStatus(&Sta, STATION_STATE_DIS_ASOC, vapId); - pdot11Obj->StatusNotify(STA_DISASSOCIATED, (U8 *)&Sta); - mAssoc = FALSE; - memset((U8 *)&mBssId, 0, 6); - mRequestFlag |= DIS_CONNECT_SET; - return TRUE; - } - } else if (mBssType == AP_BSS) { - if (memcmp(addr1(rdu), (U8*)&mBssId, 6)) { //Not for this BSSID - freeFdesc(pfrmDesc); - return TRUE; - } - - UpdateStaStatus(&Sta, STATION_STATE_DIS_ASOC, vapId); - freeFdesc(pfrmDesc); - - //here to handle disassoc ind. - pdot11Obj->StatusNotify(STA_DISASSOCIATED, (U8 *)&Sta); - return TRUE; - } else { - freeFdesc(pfrmDesc); - return TRUE; - } + +BOOLEAN Disasoc(Signal_t *signal) +{ + FrmDesc_t *pfrmDesc; + Frame_t *rdu; + MacAddr_t Sta; + ReasonCode Rsn; + U8 vapId = 0; + + //ZDEBUG("Disasoc"); + //FPRINT("Disasoc"); + pfrmDesc = signal->frmInfo.frmDesc; + rdu = pfrmDesc->mpdu; + memcpy((U8 *)&Sta, (U8 *)(addr2(rdu)), 6); // Get the address of the transmitter. + Rsn = (ReasonCode)(reason(rdu)); + + if (mBssType == INFRASTRUCTURE_BSS) {// This frame should be come from the associated AP. + if ((!mAssoc) || (memcmp(&Sta, (U8*)&mBssId, 6) != 0)) { //Not for this BSSID + //discard this packet + freeFdesc(pfrmDesc); + return TRUE; + } else { + freeFdesc(pfrmDesc); + UpdateStaStatus(&Sta, STATION_STATE_DIS_ASOC, vapId); + pdot11Obj->StatusNotify(STA_DISASSOCIATED, (U8 *)&Sta); + mAssoc = FALSE; + memset((U8 *)&mBssId, 0, 6); + printk(KERN_ERR "Rx Disasoc from AP(Rsn:%d),set DIS_CONNECT_SET\n",Rsn); + mRequestFlag |= DIS_CONNECT_SET; + return TRUE; + } + } else if (mBssType == AP_BSS) { + if (memcmp(addr1(rdu), (U8*)&mBssId, 6)) { //Not for this BSSID + freeFdesc(pfrmDesc); + return TRUE; + } + UpdateStaStatus(&Sta, STATION_STATE_DIS_ASOC, vapId); + freeFdesc(pfrmDesc); + //here to handle disassoc ind. + pdot11Obj->StatusNotify(STA_DISASSOCIATED, (U8 *)&Sta); + return TRUE; + } else { + freeFdesc(pfrmDesc); + return TRUE; + } } + BOOLEAN DisasocReq(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - MacAddr_t Sta; - ReasonCode Rsn = RC_UNSPEC_REASON; - U8 vapId = 0; - - //ZDEBUG("DisasocReq"); - //FPRINT("DisasocReq"); - - memcpy((U8 *)&Sta, (U8 *)&signal->frmInfo.Sta, 6); - Rsn = signal->frmInfo.rCode; - pdot11Obj->StatusNotify(STA_DISASSOCIATED, (U8 *)&Sta); - - vapId = signal->vapId; - UpdateStaStatus(&Sta, STATION_STATE_DIS_ASOC, vapId); - - pfrmDesc = allocFdesc(); - if(!pfrmDesc) { - sigEnque(pMgtQ, (signal)); - return FALSE; - } - - mkDisAssoc_DeAuthFrm(pfrmDesc, ST_DISASOC, &Sta, Rsn, vapId); - sendMgtFrame(signal, pfrmDesc); - - if (mBssType == INFRASTRUCTURE_BSS) { - if (memcmp((U8 *)&mBssId, (U8 *)&Sta, 6) == 0) { // my AP - mAssoc = FALSE; - memset((U8 *)&mBssId, 0, 6); - } - } - - return FALSE; + FrmDesc_t *pfrmDesc; + MacAddr_t Sta; + ReasonCode Rsn = RC_UNSPEC_REASON; + U8 vapId = 0; + + //ZDEBUG("DisasocReq"); + //FPRINT("DisasocReq"); + + memcpy((U8 *)&Sta, (U8 *)&signal->frmInfo.Sta, 6); + Rsn = signal->frmInfo.rCode; + pdot11Obj->StatusNotify(STA_DISASSOCIATED, (U8 *)&Sta); + + vapId = signal->vapId; + UpdateStaStatus(&Sta, STATION_STATE_DIS_ASOC, vapId); + + pfrmDesc = allocFdesc(); + if(!pfrmDesc) { + sigEnque(pMgtQ, (signal)); + return FALSE; + } + + mkDisAssoc_DeAuthFrm(pfrmDesc, ST_DISASOC, &Sta, Rsn, vapId); + sendMgtFrame(signal, pfrmDesc); + + if (mBssType == INFRASTRUCTURE_BSS) { + if (memcmp((U8 *)&mBssId, (U8 *)&Sta, 6) == 0) { // my AP + mAssoc = FALSE; + memset((U8 *)&mBssId, 0, 6); + } + } + + return FALSE; } + BOOLEAN Re_Asociate(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - Frame_t *rdu; - MacAddr_t Sta; - U16 aid = 0; - StatusCode asStatus; - U8 lsInterval; - Element WPA; - Element asSsid; - Element asRates; - Element extRates; - U16 cap; - U8 ZydasMode = 0; - int i; - U8 tmpMaxRate = 0x02; - U8 MaxRate; - U16 notifyStatus = STA_ASOC_REQ; - U16 notifyStatus1 = STA_ASSOCIATED; - TypeSubtype type = ST_ASOC_RSP; - U8 Preamble = 0; - U8 HigestBasicRate = 0; - U8 vapId = 0; - U8 Len; - Element *pExtRate = NULL; - - BOOLEAN bErpSta = TRUE; - pExtRate = &mExtRates; - - ZDEBUG("Re_Asociate"); - pfrmDesc = signal->frmInfo.frmDesc; - - if (mBssType == INFRASTRUCTURE_BSS) { - freeFdesc(pfrmDesc); - return TRUE; - } else if (mBssType == AP_BSS) { - rdu = pfrmDesc->mpdu; - lsInterval = listenInt(pfrmDesc->mpdu); - //FPRINT_V("lsInterval", lsInterval); - cap = cap(rdu); - memcpy((U8 *)&Sta, (U8 *)addr2(rdu), 6); - - if ((isGroup(addr2(rdu))) || (!getElem(rdu, EID_SSID, &asSsid)) - || (!getElem(rdu, EID_SUPRATES, &asRates))) { - freeFdesc(pfrmDesc); - return TRUE; - } - - if ((eLen(&asSsid) != eLen(&dot11DesiredSsid) || - memcmp(&asSsid, &dot11DesiredSsid, eLen(&dot11DesiredSsid)+2) != 0)) { - freeFdesc(pfrmDesc); - return TRUE; - } - - //check capability - if (cap & CAP_SHORT_PREAMBLE) { - if (mPreambleType == LONG_PREAMBLE) { //we are long preamble, and STA is short preamble capability - freeFdesc(pfrmDesc); - return TRUE; - } else - Preamble = 1; - } else { - Preamble = 0; - } - - // Privacy not match - if (cap & CAP_PRIVACY) { - if (!mPrivacyInvoked) { - freeFdesc(pfrmDesc); - return TRUE; - } - } else { - if (mPrivacyInvoked) { - freeFdesc(pfrmDesc); - return TRUE; - } - } - - //check supported rates - Len = eLen(&asRates); - for (i=0; i tmpMaxRate ) { - tmpMaxRate = (asRates.buf[2+i] & 0x7f); - if (asRates.buf[2+i] & 0x80) - HigestBasicRate = asRates.buf[2+i]; - } - - if (((asRates.buf[2+i] & 0x7f) == 0x21) && (!(cap & CAP_PBCC_ENABLE))) { //Zydas 16.5M - ZydasMode = 1; - mZyDasModeClient = TRUE; - //FPRINT("ZydasMode"); - } - } - - if (!getElem(rdu, EID_EXT_RATES, &extRates)) { - void *reg = pdot11Obj->reg; - // 11b STA - //FPRINT("11b STA"); - if (mMacMode == PURE_G_MODE) { // don't support b only sta - MaxRate = RateConvert((tmpMaxRate & 0x7f)); - //MaxBasicRate = RateConvert((HigestBasicRate & 0x7f)); - if (MaxRate < pdot11Obj->BasicRate) { - //FPRINT_V("MaxRate", MaxRate); - //FPRINT_V("pdot11Obj->BasicRate", pdot11Obj->BasicRate); - asStatus = SC_UNSUP_RATES; - goto check_failed; - } - } - bErpSta = FALSE; - pdot11Obj->ConfigFlag |= NON_ERP_PRESENT_SET; - pdot11Obj->ConfigFlag &= ~SHORT_SLOT_TIME_SET; - mCap &= ~CAP_SHORT_SLOT_TIME; - pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_NORMAL_SLOT); - } else { //11g STA - if (mMacMode != PURE_B_MODE) { - Len = eLen(&extRates); - for (i=0; i tmpMaxRate ) { - tmpMaxRate = (extRates.buf[2+i] & 0x7f); - } - } - bErpSta = TRUE; - //FPRINT("11g STA"); - } else { - FPRINT("Pure B mode don't support G sta"); - asStatus = SC_UNSUP_RATES; - goto check_failed; - } - } - - MaxRate = RateConvert((tmpMaxRate & 0x7f)); - - if (MaxRate > mMaxTxRate) - MaxRate = mMaxTxRate; - - if (signal->id == SIG_REASSOC) - notifyStatus = STA_REASOC_REQ; - - if (!pdot11Obj->StatusNotify(notifyStatus, (U8 *)&Sta)) { //Accept it - if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) { - if (getElem(rdu, EID_WPA, &WPA)) { - //zd1205_OctetDump("AssocRequest = ", asRdu->body, asRdu->bodyLen); - //zd1205_OctetDump("AssocRequest WPA_IE = ", &WPA.buf[2], WPA.buf[1]); - - if (pdot11Obj->AssocRequest((U8 *)&Sta, rdu->body, rdu->bodyLen)) { //reject - asStatus = SC_UNSPEC_FAILURE; - goto check_failed; - //we need reason code here - } - } else{ - asStatus = SC_UNSPEC_FAILURE; - goto wpa_check_failed; - } - } - -wpa_check_ok: - if (!UpdateStaStatus(&Sta, STATION_STATE_ASOC, vapId)) { - asStatus = SC_AP_FULL; - } else{ - AssocInfoUpdate(&Sta, MaxRate, lsInterval, ZydasMode, Preamble, bErpSta, vapId); - aid = AIdLookup(&Sta); - asStatus = SC_SUCCESSFUL; - if (signal->id == SIG_REASSOC) - notifyStatus1 = STA_REASSOCIATED; - pdot11Obj->StatusNotify(notifyStatus1, (U8 *)&Sta); - - if (mMacMode != PURE_B_MODE) { - if (pdot11Obj->ConfigFlag & NON_ERP_PRESENT_SET) { - U32 tmpValue; - void *reg = pdot11Obj->reg; - - // force enabled protection mode for debug - mErp.buf[2] |= (NON_ERP_PRESENT | USE_PROTECTION); - tmpValue = pdot11Obj->GetReg(reg, ZD_RTS_CTS_Rate); - tmpValue &= ~CTS_MOD_TYPE_OFDM; - tmpValue |= CTS_RATE_11M; - pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, tmpValue); - - if (Preamble == 0) { //long preamble - mErp.buf[2] |= BARKER_PREAMBLE; - tmpValue = pdot11Obj->GetReg(reg, ZD_RTS_CTS_Rate); - tmpValue &= ~NON_BARKER_PMB_SET; - tmpValue |= CTS_RATE_11M; - pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, tmpValue); - //FPRINT("Enable Barker Preamble"); - } - pdot11Obj->ConfigFlag |= ENABLE_PROTECTION_SET; - //FPRINT("Enable Protection Mode"); - } - } - } - } else { -wpa_check_failed: - asStatus = SC_UNSPEC_FAILURE; - } - - aid |= 0xC000; - if (aid != 0xC000) { - FPRINT_V("Aid", aid); - FPRINT_V("MaxRate", MaxRate); - } - + struct zd1205_private *macp=g_dev->priv; + Hash_t *pHash; + FrmDesc_t *pfrmDesc; + Frame_t *rdu; + MacAddr_t Sta; + U16 aid = 0; + StatusCode asStatus; + U8 lsInterval; + Element WPA; + Element asSsid; + Element asRates; + Element extRates; + U16 cap; + U8 ZydasMode = 0; + int i; + U8 tmpMaxRate = 0x02; + U8 MaxRate; + U16 notifyStatus = STA_ASOC_REQ; + U16 notifyStatus1 = STA_ASSOCIATED; + TypeSubtype type = ST_ASOC_RSP; + U8 Preamble = 0; + U8 HigestBasicRate = 0; + U8 vapId = 0; + U8 Len; + Element *pExtRate = NULL; + + BOOLEAN bErpSta = TRUE; + pExtRate = &mExtRates; + + ZDEBUG("Re_Asociate"); + pfrmDesc = signal->frmInfo.frmDesc; + + if (mBssType == INFRASTRUCTURE_BSS) { + freeFdesc(pfrmDesc); + return TRUE; + } else if (mBssType == AP_BSS) { + rdu = pfrmDesc->mpdu; + lsInterval = listenInt(pfrmDesc->mpdu); + //FPRINT_V("lsInterval", lsInterval); + cap = cap(rdu); + memcpy((U8 *)&Sta, (U8 *)addr2(rdu), 6); + + if ((isGroup(addr2(rdu))) || (!getElem(rdu, EID_SSID, &asSsid)) + || (!getElem(rdu, EID_SUPRATES, &asRates))) { + freeFdesc(pfrmDesc); + return TRUE; + } + + if ((eLen(&asSsid) != eLen(&dot11DesiredSsid) || + memcmp(&asSsid, &dot11DesiredSsid, eLen(&dot11DesiredSsid)+2) != 0)) { + freeFdesc(pfrmDesc); + return TRUE; + } + + //check capability + if (cap & CAP_SHORT_PREAMBLE) { + if (mPreambleType == LONG_PREAMBLE) { //we are long preamble, and STA is short preamble capability + freeFdesc(pfrmDesc); + return TRUE; + } else + Preamble = 1; + } else { + Preamble = 0; + } + + + // Privacy not match + if (cap & CAP_PRIVACY) { + if (!mPrivacyInvoked && macp->cardSetting.WPAIeLen==0) { + //if (!mPrivacyInvoked){ + freeFdesc(pfrmDesc); + return TRUE; + } + } else { + if (mPrivacyInvoked) { + freeFdesc(pfrmDesc); + return TRUE; + } + } + + //check short slot time +#if 0//defined(OFDM) + if (mMacMode != PURE_B_MODE) + { + if (cap & CAP_SHORT_SLOT_TIME) { + if (!(mCap & CAP_SHORT_SLOT_TIME)) { + FPRINT("CAP_SHORT_SLOT_TIME not match!!"); + freeFdesc(pfrmDesc); + return TRUE; + } + } else { + if (mCap & CAP_SHORT_SLOT_TIME) { + asStatus = (StatusCode)SC_UNSUP_SHORT_SLOT_TIME; + goto check_failed; + } + } + } + + FPRINT_V("cap", cap); +#endif + + + //check supported rates + Len = eLen(&asRates); + for (i=0; i tmpMaxRate ) { + tmpMaxRate = (asRates.buf[2+i] & 0x7f); + if (asRates.buf[2+i] & 0x80) + HigestBasicRate = asRates.buf[2+i]; + } + + if (((asRates.buf[2+i] & 0x7f) == 0x21) && (!(cap & CAP_PBCC_ENABLE))) { //Zydas 16.5M + ZydasMode = 1; + mZyDasModeClient = TRUE; + //FPRINT("ZydasMode"); + } + } + + if (!getElem(rdu, EID_EXT_RATES, &extRates)) { + void *reg = pdot11Obj->reg; + // 11b STA + //FPRINT("11b STA"); + if (mMacMode == PURE_G_MODE) { // don't support b only sta + MaxRate = RateConvert((tmpMaxRate & 0x7f)); + //MaxBasicRate = RateConvert((HigestBasicRate & 0x7f)); + if (MaxRate < pdot11Obj->BasicRate) { + //FPRINT_V("MaxRate", MaxRate); + //FPRINT_V("pdot11Obj->BasicRate", pdot11Obj->BasicRate); + asStatus = SC_UNSUP_RATES; + goto check_failed; + } + } + bErpSta = FALSE; + pdot11Obj->ConfigFlag |= NON_ERP_PRESENT_SET; + pdot11Obj->ConfigFlag &= ~SHORT_SLOT_TIME_SET; + mCap &= ~CAP_SHORT_SLOT_TIME; + pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_NORMAL_SLOT); + if(PURE_A_MODE == mMacMode) { + pdot11Obj->ConfigFlag &= ~NON_ERP_PRESENT_SET; + pdot11Obj->ConfigFlag |= SHORT_SLOT_TIME_SET; + mCap |= CAP_SHORT_SLOT_TIME; + pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_SHORT_SLOT); + } + + } else { //11g STA + if (mMacMode != PURE_B_MODE && mMacMode != PURE_A_MODE) { + + Len = eLen(&extRates); + for (i=0; i tmpMaxRate ) { + tmpMaxRate = (extRates.buf[2+i] & 0x7f); + } + } + bErpSta = TRUE; + //FPRINT("11g STA"); + } else { + FPRINT("Pure B mode don't support G sta"); + asStatus = SC_UNSUP_RATES; + goto check_failed; + } + } + + MaxRate = RateConvert((tmpMaxRate & 0x7f)); + + if (MaxRate > mMaxTxRate) + MaxRate = mMaxTxRate; + + if (signal->id == SIG_REASSOC) + notifyStatus = STA_REASOC_REQ; + + if (!pdot11Obj->StatusNotify(notifyStatus, (U8 *)&Sta)) { //Accept it + //if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)){ + if (macp->cardSetting.WPAIeLen) { + if (getElem(rdu, EID_WPA, &WPA)||getElem(rdu,EID_RSN,&WPA)) { + //zd1205_OctetDump("AssocRequest = ", asRdu->body, asRdu->bodyLen); + //zd1205_OctetDump("AssocRequest WPA_IE = ", &WPA.buf[2], WPA.buf[1]); + if (pdot11Obj->AssocRequest) { + if (pdot11Obj->AssocRequest((U8 *)&Sta, rdu->body, rdu->bodyLen)) { //reject + asStatus = SC_UNSPEC_FAILURE; + goto check_failed; + //we need reason code here + } + } + } else { + asStatus = SC_UNSPEC_FAILURE; + goto wpa_check_failed; + } + } + + //wpa_check_ok: + if (!UpdateStaStatus(&Sta, STATION_STATE_ASOC, vapId)) { + asStatus = SC_AP_FULL; + } else { + AssocInfoUpdate(&Sta, MaxRate, lsInterval, ZydasMode, Preamble, bErpSta, vapId); + aid = AIdLookup(&Sta); + printk(KERN_DEBUG "Re_Asoc: aid=%d\n", aid); + pHash = HashSearch(&Sta); + if (pHash != NULL) { + if (!pHash->AlreadyIn) { + pHash->AlreadyIn=1; + mCurrConnUser++; + if (bErpSta == FALSE) { + printk(KERN_DEBUG "Increment mNumBOnlySta\n"); + mNumBOnlySta++; + } + } + } + + asStatus = SC_SUCCESSFUL; + if (signal->id == SIG_REASSOC) + notifyStatus1 = STA_REASSOCIATED; + pdot11Obj->StatusNotify(notifyStatus1, (U8 *)&Sta); + + if (mMacMode != PURE_B_MODE && mMacMode != PURE_A_MODE) { + if (pdot11Obj->ConfigFlag & NON_ERP_PRESENT_SET) { + U32 tmpValue; + void *reg = pdot11Obj->reg; + + // force enabled protection mode for debug + mErp.buf[2] |= (NON_ERP_PRESENT | USE_PROTECTION); + tmpValue = pdot11Obj->GetReg(reg, ZD_RTS_CTS_Rate); + tmpValue &= ~CTS_MOD_TYPE_OFDM; + tmpValue |= CTS_RATE_11M; + pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, tmpValue); + + if (Preamble == 0) { //long preamble + mErp.buf[2] |= BARKER_PREAMBLE; + tmpValue = pdot11Obj->GetReg(reg, ZD_RTS_CTS_Rate); + tmpValue &= ~NON_BARKER_PMB_SET; + tmpValue |= CTS_RATE_11M; + pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, tmpValue); + //FPRINT("Enable Barker Preamble"); + } + pdot11Obj->ConfigFlag |= ENABLE_PROTECTION_SET; + //FPRINT("Enable Protection Mode"); + } + } + + } + } else { + //wpa_check_failed: + asStatus = SC_UNSPEC_FAILURE; + } +wpa_check_failed: + + aid |= 0xC000; + if (aid != 0xC000) { + FPRINT_V("Aid", aid); + FPRINT_V("MaxRate", MaxRate); + } + check_failed: - if (signal->id == SIG_REASSOC) - type = ST_REASOC_RSP; - mkRe_AsocRspFrm(pfrmDesc, type, &Sta, mCap, asStatus, aid, &mBrates, pExtRate, vapId); - sendMgtFrame(signal, pfrmDesc); - - return FALSE; - } else { - freeFdesc(pfrmDesc); - return TRUE; - } + if (signal->id == SIG_REASSOC) + type = ST_REASOC_RSP; + mkRe_AsocRspFrm(pfrmDesc, type, &Sta, mCap, asStatus, aid, &mBrates, pExtRate, vapId); + sendMgtFrame(signal, pfrmDesc); + + return FALSE; + } else { + freeFdesc(pfrmDesc); + return TRUE; + } } BOOLEAN Re_AsocReq(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - U8 vapId = 0; - TypeSubtype subType = ST_ASOC_REQ; - Element *pExtRate = NULL; - - FPRINT("Re_AsocReq"); - - pfrmDesc = allocFdesc(); - if(!pfrmDesc) { - sigEnque(pMgtQ, (signal)); - return FALSE; - } - - if (signal->id == SIG_REASSOC_REQ) { - subType = ST_REASOC_REQ; - } - - pExtRate = &mExtRates; - - memcpy((U8 *)&AsSta, (U8 *)&mBssId, 6); - mkRe_AsocReqFrm(pfrmDesc, subType, &mBssId, mCap, mListenInterval, - &mOldAP, &mSsid, &mBrates, pExtRate, NULL, vapId); - - pdot11Obj->StartTimer(ASOC_TIMEOUT, DO_ASOC); - AsocState = STE_WAIT_ASOC_RSP; - return sendMgtFrame(signal, pfrmDesc); + FrmDesc_t *pfrmDesc; + U8 vapId = 0; + TypeSubtype subType = ST_ASOC_REQ; + Element *pExtRate = NULL; + + FPRINT("Re_AsocReq"); + if (memcmp(zeroMacAddress, (u8*)&mBssId, 6)==0) { + sigEnque(pMgtQ, (signal)); + return FALSE; + } + + pfrmDesc = allocFdesc(); + if(!pfrmDesc) { + sigEnque(pMgtQ, (signal)); + return FALSE; + } + + + if (signal->id == SIG_REASSOC_REQ) { + subType = ST_REASOC_REQ; + } + + pExtRate = &mExtRates; + + memcpy((U8 *)&AsSta, (U8 *)&mBssId, 6); + + mkRe_AsocReqFrm(pfrmDesc, subType, &mBssId, mCap, mListenInterval, + &mOldAP, &mSsid, &mBrates, pExtRate, &mWPAIe, vapId); + + pdot11Obj->StartTimer(ASOC_TIMEOUT, DO_ASOC); + AsocState = STE_WAIT_ASOC_RSP; + return sendMgtFrame(signal, pfrmDesc); } BOOLEAN Re_AsocRsp(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - Frame_t *rdu; - U8 vapId = 0; - MacAddr_t Sta; - U16 status; - - //ZDEBUG("Re_AsocRsp"); - FPRINT("Re_AsocRsp"); - - pfrmDesc = signal->frmInfo.frmDesc; - rdu = pfrmDesc->mpdu; - - memcpy((U8 *)&Sta, (U8 *)addr2(rdu), 6); - if (memcmp(&AsSta, &Sta, 6) != 0) { - //FPRINT("Not for my Assoc AP"); - goto asoc_release; - } - - pdot11Obj->StopTimer(DO_ASOC); - AsocState = STE_ASOC_IDLE; - - status = status(rdu); - if (status == SC_SUCCESSFUL) { - U8 Len; - U8 tmpMaxRate = 0x02; - U8 ZydasMode = 0; - U8 Preamble = 0; - U8 MaxRate; - BOOLEAN bErpSta = FALSE; - int i; - U8 HigestBasicRate = 0; - - UpdateStaStatus(&Sta, STATION_STATE_ASOC, vapId); - mAPCap = cap(rdu); - - //check capability - if (mAPCap & CAP_SHORT_PREAMBLE) { - Preamble = 1; - } else { - Preamble = 0; - } - - mAid = (aid(rdu) & 0x3FFF); - getElem(rdu, EID_SUPRATES, &mAPBrates); - //zd1205_dump_data("mAPBrates", &mAPBrates.buf[2], mAPBrates.buf[1]); - - if (getElem(rdu, EID_EXT_RATES, &mAPErates)) { - //zd1205_dump_data("mAPErates", &mAPErates.buf[2], mAPErates.buf[1]); - } - - memcpy((U8 *)&mBssId, (U8 *)addr2(rdu), 6); - mAssoc = TRUE; - - //update supported rates - HW_SetSupportedRate(pdot11Obj, (U8 *)&mAPBrates); - HW_SetSupportedRate(pdot11Obj, (U8 *)&mAPErates); - - Len = eLen(&mAPBrates); - for (i=0; i tmpMaxRate ) { - tmpMaxRate = (mAPBrates.buf[2+i] & 0x7f); - if (mAPBrates.buf[2+i] & 0x80) - HigestBasicRate = mAPBrates.buf[2+i]; - } - - if (((mAPBrates.buf[2+i] & 0x7f) == 0x21) && (!(mAPCap & CAP_PBCC_ENABLE))) { //Zydas 16.5M - ZydasMode = 1; - } - } - - Len = eLen(&mAPErates); - for (i=0; i tmpMaxRate ) { - tmpMaxRate = (mAPErates.buf[2+i] & 0x7f); - if (mAPErates.buf[2+i] & 0x80) - HigestBasicRate = mAPErates.buf[2+i]; - } - } - - //FPRINT_V("tmpMaxRate", tmpMaxRate); - //FPRINT_V("mMaxTxRate", mMaxTxRate); - MaxRate = RateConvert((tmpMaxRate & 0x7f)); - //FPRINT_V("MaxRate", MaxRate); - if (MaxRate > mMaxTxRate) - MaxRate = mMaxTxRate; - - AssocInfoUpdate(&mBssId, MaxRate, mAid, ZydasMode, Preamble, bErpSta, vapId); - - pdot11Obj->StatusNotify(STA_ASSOCIATED, (U8 *)&mBssId); - pdot11Obj->Aid = mAid; - mConnRetryCnt = 0; - FPRINT_V("Aid", mAid); - FPRINT_V("MaxRate", MaxRate); - } else { - FPRINT("Asoc Failed!!!"); - FPRINT_V("Status Code", status); - } + Hash_t *pHash; + FrmDesc_t *pfrmDesc; + Frame_t *rdu; + U8 vapId = 0; + MacAddr_t Sta; + U16 status; + + //ZDEBUG("Re_AsocRsp"); + FPRINT("Re_AsocRsp"); + + pfrmDesc = signal->frmInfo.frmDesc; + rdu = pfrmDesc->mpdu; + + memcpy((U8 *)&Sta, (U8 *)addr2(rdu), 6); + if (memcmp(&AsSta, &Sta, 6) != 0) { + //FPRINT("Not for my Assoc AP"); + goto asoc_release; + } + + pdot11Obj->StopTimer(DO_ASOC); + AsocState = STE_ASOC_IDLE; + + + status = status(rdu); + if (status == SC_SUCCESSFUL) { + U8 Len; + U8 tmpMaxRate = 0x02; + U8 ZydasMode = 0; + U8 Preamble = 0; + U8 MaxRate; + BOOLEAN bErpSta = FALSE; + int i; + U8 HigestBasicRate = 0; + + UpdateStaStatus(&Sta, STATION_STATE_ASOC, vapId); + pHash = HashSearch(&Sta); + if (pHash != NULL) { + if (!pHash->AlreadyIn) { + pHash->AlreadyIn=1; + mCurrConnUser++; + } + } + + mAPCap = cap(rdu); + + //check capability + if (mAPCap & CAP_SHORT_PREAMBLE) { + Preamble = 1; + } else { + Preamble = 0; + } + + mAid = (aid(rdu) & 0x3FFF); + getElem(rdu, EID_SUPRATES, &mAPBrates); + //zd1205_dump_data("mAPBrates", &mAPBrates.buf[2], mAPBrates.buf[1]); + + if (getElem(rdu, EID_EXT_RATES, &mAPErates)) { + //zd1205_dump_data("mAPErates", &mAPErates.buf[2], mAPErates.buf[1]); + } + + memcpy((U8 *)&mBssId, (U8 *)addr2(rdu), 6); + mAssoc = TRUE; + + //update supported rates + HW_SetSupportedRate(pdot11Obj, (U8 *)&mAPBrates); + HW_SetSupportedRate(pdot11Obj, (U8 *)&mAPErates); + + Len = eLen(&mAPBrates); + for (i=0; i tmpMaxRate ) { + tmpMaxRate = (mAPBrates.buf[2+i] & 0x7f); + if (mAPBrates.buf[2+i] & 0x80) + HigestBasicRate = mAPBrates.buf[2+i]; + } + + if (((mAPBrates.buf[2+i] & 0x7f) == 0x21) && (!(mAPCap & CAP_PBCC_ENABLE))) { //Zydas 16.5M + ZydasMode = 1; + } + } + + + Len = eLen(&mAPErates); + for (i=0; i tmpMaxRate ) { + tmpMaxRate = (mAPErates.buf[2+i] & 0x7f); + if (mAPErates.buf[2+i] & 0x80) + HigestBasicRate = mAPErates.buf[2+i]; + } + } + + //FPRINT_V("tmpMaxRate", tmpMaxRate); + //FPRINT_V("mMaxTxRate", mMaxTxRate); + MaxRate = RateConvert((tmpMaxRate & 0x7f)); + //FPRINT_V("MaxRate", MaxRate); + if (MaxRate > mMaxTxRate) + MaxRate = mMaxTxRate; + memset(mAPBrates.buf, 0, sizeof(Element)); + memset(mAPErates.buf, 0, sizeof(Element)); + AssocInfoUpdate(&mBssId, MaxRate, mAid, ZydasMode, Preamble, bErpSta, vapId); + + pdot11Obj->StatusNotify(STA_ASSOCIATED, (U8 *)&mBssId); + pdot11Obj->Aid = mAid; + mConnRetryCnt = 0; + + FPRINT_V("Aid", mAid); + FPRINT_V("MaxRate", MaxRate); + } else { + FPRINT("Asoc Failed!!!"); + FPRINT_V("Status Code", status); + } asoc_release: - freeFdesc(pfrmDesc); - return TRUE; + freeFdesc(pfrmDesc); + return TRUE; } + BOOLEAN AsocTimeOut(Signal_t *signal) { - U8 vapId = 0; - FPRINT("AsocTimeOut"); - - if (AsocState == STE_WAIT_ASOC_RSP) { - AsocState = STE_ASOC_IDLE; - UpdateStaStatus(&mBssId, STATION_STATE_DIS_ASOC, vapId); - } - - mRequestFlag |= CONNECT_TOUT_SET; - return FALSE; + U8 vapId = 0; + FPRINT("AsocTimeOut"); + + if (AsocState == STE_WAIT_ASOC_RSP) { + AsocState = STE_ASOC_IDLE; + UpdateStaStatus(&mBssId, STATION_STATE_DIS_ASOC, vapId); + } + + mRequestFlag |= CONNECT_TOUT_SET; + return FALSE; } + BOOLEAN AsocEntry(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - - if (AsocState == STE_ASOC_IDLE) { - switch(signal->id) { - case SIG_DIASSOC_REQ: - return DisasocReq(signal); - - case SIG_DISASSOC: - return Disasoc(signal); - - case SIG_ASSOC: - case SIG_REASSOC: - return Re_Asociate(signal); - - case SIG_ASSOC_REQ: - case SIG_REASSOC_REQ: - return Re_AsocReq(signal); - - default: - goto asoc_discard; - } - } else if (AsocState == STE_WAIT_ASOC_RSP) { - switch(signal->id) { - case SIG_DIASSOC_REQ: - return DisasocReq(signal); - - case SIG_DISASSOC: - return Disasoc(signal); - - case SIG_ASSOC: - case SIG_REASSOC: - return Re_Asociate(signal); - - case SIG_ASSOC_REQ: - case SIG_REASSOC_REQ: - return Re_AsocReq(signal); - - case SIG_ASSOC_RSP: - case SIG_REASSOC_RSP: - return Re_AsocRsp(signal); - - case SIG_TO_ASOC: - return AsocTimeOut(signal); - - default: - goto asoc_discard; - } - } else - goto asoc_discard; - + FrmDesc_t *pfrmDesc; + + if (AsocState == STE_ASOC_IDLE) { + switch(signal->id) { + case SIG_DIASSOC_REQ: + return DisasocReq(signal); + + case SIG_DISASSOC: + return Disasoc(signal); + + case SIG_ASSOC: + case SIG_REASSOC: + return Re_Asociate(signal); + + case SIG_ASSOC_REQ: + case SIG_REASSOC_REQ: + return Re_AsocReq(signal); + + default: + goto asoc_discard; + } + } else if (AsocState == STE_WAIT_ASOC_RSP) { + switch(signal->id) { + case SIG_DIASSOC_REQ: + return DisasocReq(signal); + + case SIG_DISASSOC: + return Disasoc(signal); + + case SIG_ASSOC: + case SIG_REASSOC: + return Re_Asociate(signal); + + case SIG_ASSOC_REQ: + case SIG_REASSOC_REQ: + return Re_AsocReq(signal); + + case SIG_ASSOC_RSP: + case SIG_REASSOC_RSP: + return Re_AsocRsp(signal); + + case SIG_TO_ASOC: + + return AsocTimeOut(signal); + + default: + goto asoc_discard; + } + } else + goto asoc_discard; + asoc_discard: - pfrmDesc = signal->frmInfo.frmDesc; - freeFdesc(pfrmDesc); - return TRUE; + pfrmDesc = signal->frmInfo.frmDesc; + freeFdesc(pfrmDesc); + return TRUE; } + +#endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdpci_pcmcia.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdpci_pcmcia.h @@ -0,0 +1,18 @@ +#ifndef _ZDPCI_PCMCIA_H +#define _ZDPCI_PCMCIA_H + + +#ifndef DRIVER_NAME +#define DRIVER_NAME "zd1205_cb" +#endif + + +dev_node_t *zdpci_attach( dev_locator_t * ); +void zdpci_suspend( dev_node_t * ); +void zdpci_resume( dev_node_t * ); +void zdpci_detach( dev_node_t * ); +int init_module( void ); +void cleanup_module( void ); + + +#endif // _ZDPCI_PCMCIA_H --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/Makefile +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/Makefile @@ -1,16 +1,20 @@ +EXTRA_CFLAGS += -DZDCONF_WE_STAT_SUPPORT=1 +EXTRA_CFLAGS += -DHOST_IF_USB +EXTRA_CFLAGS += -DAMAC +EXTRA_CFLAGS += -DGCCK +EXTRA_CFLAGS += -DOFDM +EXTRA_CFLAGS += -DHOSTAPD_SUPPORT +EXTRA_CFLAGS += -DUSE_EP4_SET_REG +EXTRA_CFLAGS += -DDOWNLOADFIRMWARE +EXTRA_CFLAGS += -DfTX_GAIN_OFDM=0 +EXTRA_CFLAGS += -DfNEW_CODE_MAP=1 +EXTRA_CFLAGS += -DfWRITE_WORD_REG=1 +EXTRA_CFLAGS += -DfREAD_MUL_REG=1 +EXTRA_CFLAGS += -DENHANCE_RX=1 +EXTRA_CFLAGS += -DZD1211 + zd1211-objs := zd1205.o zdasocsvc.o zdauthreq.o zdauthrsp.o zdmmrx.o zdshared.o \ - zdhci.o zdglobal.o zdencrypt.o zdpmfilter.o zdpsmon.o zdsynch.o \ - zdbuf.o zdhw.o zddebug.o zdtkipseed.o zdmic.o zdusb.o zd1211-main.o + zdhci.o zdglobal.o zdencrypt.o zdpmfilter.o zdpsmon.o zdsynch.o zdbuf.o \ + zd1205_proc.o zdhw.o zddebug.o zdtkipseed.o zdmic.o zdusb.o zd1211-main.o obj-$(CONFIG_USB_ZD1211) += zd1211.o - -targets := zddevlist.h - -CFLAGS += -DAMAC -DGCCK -DOFDM -DUSE_EP4_SET_REG -DfTX_GAIN_OFDM=0 - -quiet_cmd_devlist = DEVLIST $@ - cmd_devlist = awk -f $(srctree)/$(src)/zddevlist.awk < $< > $@ - -$(src)/zdusb.c: $(obj)/zddevlist.h -$(obj)/zddevlist.h: $(src)/zddevlist - $(call if_changed,devlist) --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdmic.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdmic.c @@ -1,161 +1,193 @@ -/* $Id: zdmic.c,v 1.8 2005/03/27 20:47:38 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #include "zd80211.h" +// +// Michael.cpp Reference implementation for Michael +// +// Copyright (c) 2001 by MacFergus BV +// All rights reserved, +// + -// Convert from U8[] to U32 in a portable way U32 getUInt32(U8 *p) +// Convert from U8[] to U32 in a portable way { - U32 res = 0; - int i; + U32 res = 0; + int i; + + for( i=0; i<4; i++ ) + { + res |= (*p++) << (8*i); + } - for ( i=0; i<4; i++ ) { - res |= (*p++) << (8*i); - } - return res; + return res; } -// Convert from U32 to U8[] in a portable way + void putUInt32(U8 *p, U32 val) +// Convert from U32 to U8[] in a portable way { - int i; + int i; - for(i=0; i<4; i++) { - *p++ = (U8)(val & 0xff); - val >>= 8; - } + for(i=0; i<4; i++) + { + *p++ = (U8)(val & 0xff); + val >>= 8; + } } -/* Initial variable required by MIC computation */ + +/***********************************************************************/ +/* */ +/* FUNCTION DESCRIPTION MICclear */ +/* Initial variable require by MIC computation */ +/* */ +/* AUTHOR */ +/* Liam,Hwu ZyDAS Technology Corporation */ +/* */ +/***********************************************************************/ void MICclear(MICvar *MIC) { - // Reset the state to the empty message. - MIC->L = MIC->K0; - MIC->R = MIC->K1; - MIC->nBytesInM = 0; - MIC->M = 0; + // Reset the state to the empty message. + MIC->L = MIC->K0; + MIC->R = MIC->K1; + MIC->nBytesInM = 0; + MIC->M = 0; } -/* Set MIC key (Tx or Rx) */ + +/***********************************************************************/ +/* */ +/* FUNCTION DESCRIPTION MICsetKey */ +/* Set MIC key (Tx or Rx) */ +/* */ +/* AUTHOR */ +/* Liam,Hwu ZyDAS Technology Corporation */ +/* */ +/***********************************************************************/ void MICsetKey(U8 *key, MICvar *MIC) { - // Set the key - MIC->K0 = getUInt32(key); - MIC->K1 = getUInt32(key + 4); - // and reset the message - MICclear(MIC); + // Set the key + MIC->K0 = getUInt32(key); + MIC->K1 = getUInt32(key + 4); + if (MIC) { +#ifdef WPA_DEBUG + printk(KERN_ERR "mic->K0= %08x K1=%08x\n", (unsigned)MIC->K0,(unsigned)MIC->K1); +#endif + } else + printk(KERN_ERR "pMic is NULL\n"); + // and reset the message + MICclear(MIC); } -/* Compute MIC for adding a single byte */ + +/***********************************************************************/ +/* */ +/* FUNCTION DESCRIPTION MICappendByte */ +/* Compute MIC for adding a single byte */ +/* */ +/* AUTHOR */ +/* Liam,Hwu ZyDAS Technology Corporation */ +/* */ +/***********************************************************************/ void MICappendByte(U8 b, MICvar *MIC) { - register int nBytesInM = MIC->nBytesInM; - register U32 M = MIC->M; + register int nBytesInM = MIC->nBytesInM; + register U32 M = MIC->M; + + // Append the byte to our word-sized buffer + M |= b << (8* nBytesInM); + nBytesInM ++; + + // Process the word if it is full. + if (nBytesInM > 3) { + register U32 L = MIC->L; + register U32 R = MIC->R; + + L ^= M; + R ^= ROL32(L, 17); + L += R; + R ^= ((L & 0xff00ff00) >> 8) | ((L & 0x00ff00ff) << 8); + L += R; + R ^= ROL32(L, 3); + L += R; + R ^= ROR32(L, 2); + L += R; + + MIC->L = L; + MIC->R = R; + + // Clear the buffer + M = 0; + nBytesInM = 0; + } - // Append the byte to our word-sized buffer - M |= b << (8* nBytesInM); - nBytesInM ++; - - // Process the word if it is full. - if (nBytesInM > 3) { - register U32 L = MIC->L; - register U32 R = MIC->R; - L ^= M; - R ^= ROL32(L, 17); - L += R; - R ^= ((L & 0xff00ff00) >> 8) | ((L & 0x00ff00ff) << 8); - L += R; - R ^= ROL32(L, 3); - L += R; - R ^= ROR32(L, 2); - L += R; - - MIC->L = L; - MIC->R = R; - - // Clear the buffer - M = 0; - nBytesInM = 0; - } + MIC->M = M; + MIC->nBytesInM = nBytesInM; - MIC->M = M; - MIC->nBytesInM = nBytesInM; } + void MICappendArr(U8 *pb, MICvar *MIC, U32 Size) { - int i; - U8 *pB = pb; - - // Append the byte to our word-sized buffer - for (i=0; iM |= *pB << (8 * MIC->nBytesInM); - MIC->nBytesInM++; - - // Process the word if it is full. - if (MIC->nBytesInM >= 4) { - MIC->L ^= MIC->M; - MIC->R ^= ROL32(MIC->L, 17); - MIC->L += MIC->R; - MIC->R ^= ((MIC->L & 0xff00ff00) >> 8) | ((MIC->L & 0x00ff00ff) << 8); - MIC->L += MIC->R; - MIC->R ^= ROL32(MIC->L, 3); - MIC->L += MIC->R; - MIC->R ^= ROR32(MIC->L, 2); - MIC->L += MIC->R; - - // Clear the buffer - MIC->M = 0; - MIC->nBytesInM = 0; - } - pB++; - } + int i; + U8 *pB = pb; + // Append the byte to our word-sized buffer + + for (i=0; iM |= *pB << (8 * MIC->nBytesInM); + MIC->nBytesInM++; + + // Process the word if it is full. + if(MIC->nBytesInM >= 4) { + MIC->L ^= MIC->M; + MIC->R ^= ROL32(MIC->L, 17); + MIC->L += MIC->R; + MIC->R ^= ((MIC->L & 0xff00ff00) >> 8) | ((MIC->L & 0x00ff00ff) << 8); + MIC->L += MIC->R; + MIC->R ^= ROL32(MIC->L, 3); + MIC->L += MIC->R; + MIC->R ^= ROR32(MIC->L, 2); + MIC->L += MIC->R; + + // Clear the buffer + MIC->M = 0; + MIC->nBytesInM = 0; + } + pB++; + } } -/* Compute MIC for adding a single byte */ -U8 MicTailPadding[]={0x5a, 0, 0, 0, 0, 0, 0, 0, 0}; + +/***********************************************************************/ +/* */ +/* FUNCTION DESCRIPTION MICappendByte */ +/* Compute MIC for adding a single byte */ +/* */ +/* AUTHOR */ +/* Liam,Hwu ZyDAS Technology Corporation */ +/* */ +/***********************************************************************/ +U8 MicTailPadding[]={0x5a, 0, 0, 0, 0, 0, 0, 0, 0}; void MICgetMIC(U8 *dst, MICvar *MIC) { - // Append the minimum padding - //MICappendArr(MicTailPadding, MIC, 5+((4 -((MIC->nBytesInM+5) & 3)) & 3)); + // Append the minimum padding + //MICappendArr(MicTailPadding, MIC, 5+((4 -((MIC->nBytesInM+5) & 3)) & 3)); - MICappendByte(0x5a, MIC); - MICappendByte(0, MIC); - MICappendByte(0, MIC); - MICappendByte(0, MIC); - MICappendByte(0, MIC); - - // and then zeroes until the length is a multiple of 4 - while( MIC->nBytesInM != 0 ) { - MICappendByte(0, MIC); - } - - // The appendByte function has already computed the result. - putUInt32(dst, MIC->L); - putUInt32(dst+4, MIC->R); + MICappendByte(0x5a, MIC); + MICappendByte(0, MIC); + MICappendByte(0, MIC); + MICappendByte(0, MIC); + MICappendByte(0, MIC); + + // and then zeroes until the length is a multiple of 4 + while( MIC->nBytesInM != 0 ) { + MICappendByte(0, MIC); + } + + // The appendByte function has already computed the result. + putUInt32(dst, MIC->L); + putUInt32(dst+4, MIC->R); - // Reset to the empty message. - MICclear(MIC); + // Reset to the empty message. + MICclear(MIC); } --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdhci.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdhci.h @@ -1,27 +1,3 @@ -/* $Id: zdhci.h,v 1.6 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZDHCI_H_ #define _ZDHCI_H_ #include "zdapi.h" @@ -30,4 +6,9 @@ void zd_SendClass3ErrorFrame(MacAddr_t *sta, U8 vapId); U8 zd_CheckTotalQueCnt(void); void zd_EnableProtection(U8 protect); +//BOOLEAN zd_ChooseAP(void); +BOOLEAN zd_ChooseAP(BOOLEAN bUseBssid); +extern void zd1205_dump_data(char *info, u8 *data, u32 data_len); +BOOLEAN zd_CmdDeauth(MacAddr_t *sta, U8 rCode); +BOOLEAN zd_CmdDisasoc(MacAddr_t *sta, U8 rCode); #endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdos.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdos.h @@ -0,0 +1,9 @@ +#ifndef __ZDOS_H__ +#define __ZDOS_H__ + +#include +#include +#include +#include + +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdusb.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdusb.h @@ -1,37 +1,22 @@ -/* $Id: zdusb.h,v 1.13 2005/04/15 22:34:32 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZDUSB_H #define _ZDUSB_H #ifndef DRIVER_NAME -#define DRIVER_NAME "zd1211" + #ifdef ZD1211 + #define DRIVER_NAME "zd1211" + #elif defined(ZD1211B) + #define DRIVER_NAME "ZD1211B" + #endif #endif -#define DRIVER_AUTHOR "Willig, Yang, Zviskov et al." -#define DRIVER_DESC "ZD1211 802.11b/g USB WLAN driver" -#define DRIVER_URL "http://zd1211.sourceforge.net/" -#define DRIVER_LICENSE "GPL" +/* Define these values to match your device */ +#define VENDOR_ZYDAS 0x0ACE //ZyDAS +#define PRODUCT_1211 0x1211 +#define PRODUCT_A211 0xa211 +#define VENDOR_ZYXEL 0x0586 //ZyXEL +#define PRODUCT_G220 0x3401 +#define VENDOR_3COM 0x6891 +#define PRODUCT_A727 0xA727 +#define PRODUCT_G220F 0x3402 #endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdpmfilter.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdpmfilter.c @@ -1,33 +1,15 @@ -/* $Id: zdpmfilter.c,v 1.13 2005/03/27 20:47:39 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +#ifndef __ZDPMFILTER_C__ +#define __ZDPMFILTER_C__ #include "zd80211.h" +#include "zd1205.h" +#include "zddebug.h" +extern struct net_device *g_dev; +#define DBG_USE_SERIAL_WRITE 0 void AgePsQ(U16 aid); BOOLEAN TxSend(Signal_t *signal, FrmDesc_t *pfrmDesc); - +#define write_str(a,b) U8 usedID = 0; U8 TimBitMap[(MAX_AID/8)+2]; Signal_t *txRequest[BURST_NUM]; @@ -36,862 +18,1026 @@ //make tim for beacon frame void mkTim(Element *tim, TrafficMap_t *trf, U8 dtc, U8 dtp, U16 aidLo, U16 aidHi, BOOLEAN bc) { - int i; - U8 *map = (U8*)trf->t; - U16 N1 = 0; - U16 N2 = 0; - U8 index = 0; - - tim->buf[0] = EID_TIM; - tim->buf[2] = dtc; - tim->buf[3] = dtp; - - // Calculate N1 - for (i=0; i<=(aidHi/8); i++) { - if (map[i] != 0) { - break; - } - } - - if (i>0) { - // N1 is the largest even number - N1 = (U16)(i & ~0x01); - } - - // Calculate N2 - for (i=(aidHi/8); i>=0; i--) { - if (map[i] != 0) { - break; - } - } - - if (i>0) { - N2 = (U16)i; - } - - // Fill the content - if (N2==0) { - tim->buf[4] = 0; - tim->buf[5] = map[0]; - tim->buf[1] = 4; - } else { - tim->buf[4] = (U8)N1; - for (i=N1; i<=N2; i++) { - tim->buf[5+index++] = map[i]; - } - tim->buf[1] = N2-N1+4; - } - - if (bc) { - tim->buf[4] |= 0x01; - } -} - -void TxCompleted(U32 result, U8 retID, U16 aid) -{ // in isr routine - Signal_t *signal; - FrmInfo_t *pfrmInfo; - FrmDesc_t *pfrmDesc; - void *buf; - Hash_t *pHash = NULL; - U8 bIntraBss = 0; - - if ((result != ZD_TX_CONFIRM) && (retID == 0xff)) { - pHash = sstByAid[aid]; - if (!pHash) - return; - else - pHash->FailedFrames++; - return; - } - - signal = txRequest[retID]; - pfrmInfo = &signal->frmInfo; - pfrmDesc = pfrmInfo->frmDesc; - - buf = signal->buf; - if (pfrmDesc) - bIntraBss = (pfrmDesc->ConfigSet & INTRA_BSS_SET); - - pHash = sstByAid[aid]; - if (!pHash) - goto no_rate_info; - - if (result == ZD_TX_CONFIRM) { - //for rate adaption - pHash->SuccessFrames++; - } else - pHash->FailedFrames++; //retry failed + int i; + U8 *map = (U8*)trf->t; + U16 N1 = 0; + U16 N2 = 0; + U8 index = 0; + + tim->buf[0] = EID_TIM; + tim->buf[2] = dtc; + tim->buf[3] = dtp; + + // Calculate N1 + for (i=0; i<=(aidHi/8); i++) { + if (map[i] != 0) { + break; + } + } + + if (i>0) { + // N1 is the largest even number + N1 = (U16)(i & ~0x01); + } + + // Calculate N2 + for (i=(aidHi/8); i>=0; i--) { + if (map[i] != 0) { + break; + } + } + + if (i>0) { + N2 = (U16)i; + } + + // Fill the content + if (N2==0) { + tim->buf[4] = 0; + tim->buf[5] = map[0]; + tim->buf[1] = 4; + } else { + tim->buf[4] = (U8)N1; + for (i=N1; i<=N2; i++) { + tim->buf[5+index++] = map[i]; + } + tim->buf[1] = N2-N1+4; + } + + if (bc) { + tim->buf[4] |= 0x01; + } +} + + +void TxCompleted(U32 result, U8 retID, U16 aid) //in isr routine +{ + Signal_t *signal; + FrmInfo_t *pfrmInfo; + FrmDesc_t *pfrmDesc; + void *buf; + Hash_t *pHash = NULL; + U8 bIntraBss = 0; + +#ifdef HOST_IF_USB + + if ((result != ZD_TX_CONFIRM) && (retID == 0xff)) + { + pHash = sstByAid[aid]; + if (!pHash) + return; + else + pHash->FailedFrames++; + + return; + } +#endif + + signal = txRequest[retID]; + if (signal == NULL) + { + printk(KERN_ERR "TxCompleted: input signal is NULL\n"); + return; + } + pfrmInfo = &signal->frmInfo; + pfrmDesc = pfrmInfo->frmDesc; + + buf = signal->buf; + if (pfrmDesc) + bIntraBss = (pfrmDesc->ConfigSet & INTRA_BSS_SET); + + //if (aid) + { + pHash = sstByAid[aid]; + if (!pHash) + goto no_rate_info; + + if (result == ZD_TX_CONFIRM) + { + //for rate adaption + pHash->SuccessFrames++; + } else //retry failed + pHash->FailedFrames++; + + } + no_rate_info: - if (pfrmDesc) - freeFdesc(pfrmDesc); - pdot11Obj->ReleaseBuffer(buf); - freeSignal(signal); - txRequest[retID] = NULL; - - if ((buf) && (!bIntraBss)) { // upper layer data - pdot11Obj->TxCompleted(); - } + if (pfrmDesc) + freeFdesc(pfrmDesc); + pdot11Obj->ReleaseBuffer(buf); + freeSignal(signal); + txRequest[retID] = NULL; + + if ((buf) && (!bIntraBss)) + { //upper layer data + pdot11Obj->TxCompleted(); + } } + +char DbgStr1[]="Tx ProbReq"; +char DbgStr2[]="Tx Auth"; +char DbgStr3[]="Tx Data"; +char DbgStr4[]="msg4"; +char DbgStr5[]="msg5"; +char DbgStr6[]="msg6"; +char DbgStr7[]="msg7"; +char DbgStr8[]="msg8"; +char DbgStr9[]="msg9"; +char DbgStr10[]="msg10"; +char DbgStr11[]="msg11"; + +char DbgStr12[]="msg12"; BOOLEAN TxSend(Signal_t *signal, FrmDesc_t *pfrmDesc) { - FrmInfo_t *pfrmInfo; - U32 nextBodyLen; - fragInfo_t fragInfo; - int i; - U8 bIntraBss = 0; - Frame_t *pf; - Frame_t *nextPf; - U32 flags; - Hash_t *pHash = NULL; - U32 icv = 0xFFFFFFFFL; - U32 *tmpiv = NULL; - U8 WepKeyLen = 0; - U8 *pWepKey = NULL; - U8 *pIv = NULL; - U8 KeyId = 5; - U8 RC4Key[16]; - U32 iv32 = 0; - BOOLEAN bExtIV = FALSE; - U8 EncryType; - BOOLEAN bGroupAddr = FALSE; - U8 bWep = 0; - U8 vapId = 0; - U8 Num; - U8 bDataFrm = signal->bDataFrm; - U8 KeyInstalled = 0; - //U8 bDataFrm; - - ZDEBUG("TxSend"); - - txRequest[usedID] = signal; - pfrmInfo = &signal->frmInfo; - bIntraBss = (pfrmDesc->ConfigSet & INTRA_BSS_SET); - - //bDataFrm = pfrmDesc->bDataFrm; - pf = pfrmDesc->mpdu; - - //for PS-POLL handling - if (pfrmDesc->ConfigSet & PS_POLL_SET) { - fragInfo.rate = RATE_1M; - fragInfo.preamble = mPreambleType; - fragInfo.aid = 0; - fragInfo.macHdr[0] = &pf->header[0]; - fragInfo.macBody[0] = pf->body; - fragInfo.bodyLen[0] = 0; - fragInfo.nextBodyLen[0] = 0; - fragInfo.msgID = usedID; - fragInfo.totalFrag = 1; - fragInfo.hdrLen = pf->HdrLen; - fragInfo.encryType = WEP_NOT_USED; - fragInfo.vapId = vapId; - fragInfo.bIntraBss = bIntraBss; - fragInfo.buf = signal->buf; - goto just_send; - } - - pHash = pfrmDesc->pHash; - bWep = wepBit(pf); - EncryType = mKeyFormat; - - if (isGroup(addr1(pf))) { - bGroupAddr = TRUE; - fragInfo.rate = pdot11Obj->BasicRate; - fragInfo.aid = 0; - fragInfo.preamble = 0; - - if ((mSwCipher) && (bWep)) { - if ((mDynKeyMode == DYN_KEY_WEP64) || (mDynKeyMode == DYN_KEY_WEP128) || (mDynKeyMode == DYN_KEY_WEP256)) { - WepKeyLen = mBcKeyLen; - pWepKey = &mBcKeyVector[0]; - pIv = &mBcIv[1]; - KeyId = mBcKeyId; - tmpiv = (U32 *)mBcIv; - } - } - - if (bWep) { - if ((mDynKeyMode == DYN_KEY_WEP64) || (mDynKeyMode == DYN_KEY_WEP128) || (mDynKeyMode == DYN_KEY_WEP256)) { - if (mDynKeyMode == DYN_KEY_WEP64) - EncryType = WEP64_USED; - else if (mDynKeyMode == DYN_KEY_WEP128) - EncryType = WEP128_USED; - else - EncryType = WEP256_USED; - pIv = &mBcIv[1]; - KeyId = mBcKeyId; - tmpiv = (U32 *)mBcIv; - } - } - } else { // unicast frame - if (!pHash) { - // Should be Probe Response frame - fragInfo.rate = pdot11Obj->BasicRate; - //FPRINT_V("pHash = 0; fragInfo.rate", fragInfo.rate); - fragInfo.aid = 0; - fragInfo.preamble = 0; - } else { - fragInfo.rate = pHash->CurrTxRate; - //FPRINT_V("pHash != 0 fragInfo.rate", fragInfo.rate); - fragInfo.aid = (U16)pHash->aid; - fragInfo.preamble = pHash->Preamble; - if (mBssType == AP_BSS) - EncryType = pHash->encryMode; - - //get pairwise key - if (bWep) { - if ((mDynKeyMode == DYN_KEY_WEP64) || (mDynKeyMode == DYN_KEY_WEP128) || (mDynKeyMode == DYN_KEY_WEP256)) { - pIv = &pHash->wepIv[1]; - KeyId = pHash->KeyId; - tmpiv = (U32 *)pHash->wepIv; - } - } - } - } - - if (bWep) { - if (mDynKeyMode == 0) { // static 4 keys, wep64, 128 or 256 - pIv = &mWepIv[1]; - KeyId = mKeyId; - tmpiv = (U32 *)mWepIv; - EncryType = mKeyFormat; - } - } - - Num = pfrmInfo->fTot; - //FPRINT_V("Tx fTot", pfrmInfo->fTot); - for (i=0; impdu[i]; - if (Num == 1) { - nextBodyLen = 0; - if (!bDataFrm) { //Management frame - bIntraBss = 0; - if (frmType(pf) == ST_PROBE_RSP) { - U32 loTm, hiTm; - HW_GetTsf(pdot11Obj, &loTm, &hiTm); - setTs(pf, loTm, hiTm); - } - } - } else { - if (Num != (i+1)) { - nextPf = &pfrmDesc->mpdu[i+1]; - nextBodyLen = nextPf->bodyLen; - } else - nextBodyLen = 0; - } - - //prepare frag information - fragInfo.macHdr[i] = &pf->header[0]; - fragInfo.macBody[i] = pf->body; - fragInfo.bodyLen[i] = pf->bodyLen; - fragInfo.nextBodyLen[i] = nextBodyLen; - - if (bWep) { - if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) { - if (bGroupAddr) { - KeyInstalled = mGkInstalled; - if (mDynKeyMode == DYN_KEY_TKIP) { - if ((mGkInstalled) && (mWpaBcKeyLen == 32)) { - mIv16++; - if (mIv16 == 0) - mIv32++; - pIv[0] = Hi8(mIv16); - pIv[1] = (Hi8(mIv16) | 0x20) & 0x7f; - pIv[2] = Lo8(mIv16); - KeyId = mWpaBcKeyId; - iv32 = mIv32; - bExtIV = TRUE; - EncryType = TKIP_USED; - } else { //for mixed-mode support - pIv = &mBcIv[1]; - KeyId = mWpaBcKeyId; - tmpiv = (U32 *)mBcIv; - EncryType = WEP64_USED; - } - } else if (mDynKeyMode == DYN_KEY_AES) { - if (mGkInstalled) { - mIv16++; - if (mIv16 == 0) - mIv32++; - pIv[0] = Lo8(mIv16); - pIv[1] = Hi8(mIv16); - pIv[2] = 0; - KeyId = mWpaBcKeyId; - iv32 = mIv32; - bExtIV = TRUE; - EncryType = AES_USED; - } - } - } else { //unicast - KeyInstalled = pHash->pkInstalled; - if ((pHash) && (pHash->pkInstalled)) { - pHash->iv16++; - if (pHash->iv16 == 0) - pHash->iv32++; - if (mDynKeyMode == DYN_KEY_TKIP) { - pIv[0] = Hi8(pHash->iv16); - pIv[1] = (Hi8(pHash->iv16) | 0x20) & 0x7f; - pIv[2] = Lo8(pHash->iv16); - } else if (mDynKeyMode == DYN_KEY_AES) { - //FPRINT("DYN_KEY_AES"); - pIv[0] = Lo8(pHash->iv16); - pIv[1] = Hi8(pHash->iv16); - pIv[2] = 0; - } - KeyId = pHash->KeyId; - iv32 = pHash->iv32; - bExtIV = TRUE; - } - } - } // end of ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) - fragInfo.macHdr[i][MAC_HDR_LNG] = pIv[0]; - fragInfo.macHdr[i][MAC_HDR_LNG+1] = pIv[1]; - fragInfo.macHdr[i][MAC_HDR_LNG+2] = pIv[2]; - fragInfo.macHdr[i][MAC_HDR_LNG+3] = KeyId << 6; - *tmpiv = (((*tmpiv) & 0x00FFFFFF) + 1) | ((*tmpiv) & 0xFF000000); - if (bExtIV) { - fragInfo.macHdr[i][MAC_HDR_LNG+3] |= 0x20; - fragInfo.macHdr[i][MAC_HDR_LNG+4] = (U8)(iv32); - fragInfo.macHdr[i][MAC_HDR_LNG+5] = (U8)(iv32 >> 8); - fragInfo.macHdr[i][MAC_HDR_LNG+6] = (U8)(iv32 >> 16); - fragInfo.macHdr[i][MAC_HDR_LNG+7] = (U8)(iv32 >> 24); - } - } - } - - fragInfo.msgID = usedID; - fragInfo.bIntraBss = bIntraBss; - fragInfo.buf = signal->buf; - fragInfo.totalFrag = Num; - fragInfo.hdrLen = MAC_HDR_LNG; - - if (bWep) { - fragInfo.hdrLen += IV_LNG; - if (bExtIV) { - fragInfo.hdrLen += EIV_LNG; - } - } - - fragInfo.encryType = EncryType; - //if (mAssoc) - //FPRINT_V("EncryType", fragInfo.encryType); - //fragInfo.vapId = vapId; - - if (fragInfo.encryType == TKIP) { - //fragInfo.keyInstalled = KeyInstalled; - //fragInfo.bWaitingMIC = pfrmDesc->bWaitingMIC; - //fragInfo.bSwCalcMIC = pfrmDesc->bSwCalcMIC; - //fragInfo.HwMicPhys = (U32)pfrmDesc->HwMicPhys; - } + FrmInfo_t *pfrmInfo; + U32 nextBodyLen; + fragInfo_t fragInfo; + int i; + U8 bIntraBss = 0; + Frame_t *pf; + Frame_t *nextPf; + U32 flags; + Hash_t *pHash = NULL; + U32 *tmpiv = NULL; + //U8 WepKeyLen = 0; + //U8 *pWepKey = NULL; + U8 tmp4pIv[8]; + U8 *pIv = tmp4pIv; + U8 KeyId = 5; + U32 iv32 = 0; + BOOLEAN bExtIV = FALSE; + U8 EncryType; + BOOLEAN bGroupAddr = FALSE; + U8 bWep = 0; + U8 vapId = 0; + U8 Num; + U8 bDataFrm = signal->bDataFrm; + //U8 KeyInstalled = 0; + + ZDEBUG("TxSend"); + + + //txRequest[usedID] = signal; + memcpy(fragInfo.CalSwMic, pfrmDesc->CalMIC, MIC_LNG+1); + pfrmInfo = &signal->frmInfo; + bIntraBss = (pfrmDesc->ConfigSet & INTRA_BSS_SET); + + pf = pfrmDesc->mpdu; + + //for PS-POLL handling + if (pfrmDesc->ConfigSet & PS_POLL_SET) { + if(mMacMode != PURE_A_MODE) { + fragInfo.rate = RATE_1M; + fragInfo.preamble = mPreambleType; + } else if(mMacMode == PURE_A_MODE) { + fragInfo.rate = RATE_6M; + fragInfo.preamble = SHORT_PREAMBLE; //802.11A frame must + } + + fragInfo.aid = 0; + fragInfo.macHdr[0] = &pf->header[0]; + fragInfo.macBody[0] = pf->body; + fragInfo.bodyLen[0] = 0; + fragInfo.nextBodyLen[0] = 0; + //fragInfo.msgID = usedID; + fragInfo.totalFrag = 1; + fragInfo.hdrLen = pf->HdrLen; + fragInfo.encryType = WEP_NOT_USED; + fragInfo.vapId = vapId; + fragInfo.bIntraBss = bIntraBss; + fragInfo.buf = signal->buf; + goto just_send; + } + + pHash = pfrmDesc->pHash; + bWep = wepBit(pf); + EncryType = mKeyFormat; + + /* if ((pf->header[0] & 0xFC) == 0x40) + { //Probe Req, for debugging purpose. + if (pf->body[0]==0) + { + if (pf->body[1] == 0) + printk(KERN_ERR "Probe Request with Broadcase ssid\n"); + else + printk(KERN_ERR "Probe Request with ssid=%s",&pf->body[2]); + } + } + else if ((pf->header[0] & 0xFC) == 0xB0) + { + //printk(KERN_ERR "Tx Auth\n"); + //serial_printf(" Tx Auth\n"); + } + else if ((pf->header[0] & 0xFC) == 0x08) + { + //printk(KERN_ERR "Tx Data,keyMode=%d\n",mDynKeyMode); + //serial_printf("Tx Data,keyMode=%d\n",mDynKeyMode); + } */ + if (isGroup(addr1(pf))) { + bGroupAddr = TRUE; + fragInfo.rate = pdot11Obj->BasicRate; + fragInfo.aid = 0; + if(PURE_A_MODE != mMacMode) + fragInfo.preamble = 0; + else + fragInfo.preamble = 1; + + /*if ((mSwCipher) && (bWep)){ + if ((mDynKeyMode == DYN_KEY_WEP64) || (mDynKeyMode == DYN_KEY_WEP128)){ + WepKeyLen = mBcKeyLen; + pWepKey = &mBcKeyVector[0]; + pIv = &mBcIv[1]; + KeyId = mBcKeyId; + tmpiv = (U32 *)mBcIv; + } + }*/ /* The software encryption is always disabled.*/ + + if (bWep) {// For 802.1x dynamic key mode + if ((mDynKeyMode == DYN_KEY_WEP64) || (mDynKeyMode == DYN_KEY_WEP128)) { + if (mDynKeyMode == DYN_KEY_WEP64) + EncryType = WEP64_USED; + else + EncryType = WEP128_USED; + pIv = &mBcIv[1]; + KeyId = mBcKeyId; + tmpiv = (U32 *)mBcIv; + } + } + + } else { // unicast frame + if (!pHash) { + // Should be Probe Response frame + fragInfo.rate = pdot11Obj->BasicRate; + //FPRINT_V("pHash = 0; fragInfo.rate", fragInfo.rate); + fragInfo.aid = 0; + if(mMacMode != PURE_A_MODE) + fragInfo.preamble = 0; + else + fragInfo.preamble = 1; + + } else { + fragInfo.rate = pHash->CurrTxRate; + + //FPRINT_V("pHash != 0 fragInfo.rate", fragInfo.rate); + fragInfo.aid = (U16)pHash->aid; + fragInfo.preamble = pHash->Preamble; + + //if (mBssType == AP_BSS) + { + EncryType = pHash->encryMode; + } + + //get pairwise key + if (bWep) { + if ((mDynKeyMode == DYN_KEY_WEP64) || (mDynKeyMode == DYN_KEY_WEP128)) { + pIv = &pHash->wepIv[1]; + KeyId = pHash->KeyId; + tmpiv = (U32 *)pHash->wepIv; + } + } + } + } + + if (bWep) { + if (mDynKeyMode == 0) { // static 4 keys, wep64, 128 or 256 + pIv = &mWepIv[1]; + KeyId = mKeyId; + tmpiv = (U32 *)mWepIv; + EncryType = mKeyFormat; + } + } + + Num = pfrmInfo->fTot; + //FPRINT_V("Tx fTot", pfrmInfo->fTot); + for (i=0; impdu[i]; + if (Num == 1) { + nextBodyLen = 0; + if (!bDataFrm) { //Management frame + bIntraBss = 0; + if (frmType(pf) == ST_PROBE_RSP) + { + U32 loTm, hiTm; + HW_GetTsf(pdot11Obj, &loTm, &hiTm); + setTs(pf, loTm, hiTm); + } + } + } else { + if (Num != (i+1)) { + nextPf = &pfrmDesc->mpdu[i+1]; + nextBodyLen = nextPf->bodyLen; + } else { + nextBodyLen = 0; + } + } + + //prepare frag information + fragInfo.macHdr[i] = &pf->header[0]; + fragInfo.macBody[i] = pf->body; + fragInfo.bodyLen[i] = pf->bodyLen; + fragInfo.nextBodyLen[i] = nextBodyLen; + + if (bWep) {// Encryption is needed. + if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) {// WPA encryption mode. + if (bGroupAddr) { + if (mGkInstalled) { + switch(mWpaBcKeyLen) { + case 32:// Group TKIP + mIv16++; + if (mIv16 == 0) + mIv32++; + pIv[0] = Hi8(mIv16); + pIv[1] = (Hi8(mIv16) | 0x20) & 0x7f; + pIv[2] = Lo8(mIv16); + KeyId = mWpaBcKeyId; + iv32 = mIv32; + bExtIV = TRUE; + EncryType = TKIP_USED; + break; + case 5: // Group WEP64 + pIv = &mBcIv[1]; + KeyId = mWpaBcKeyId; + tmpiv = (U32 *)mBcIv; + EncryType = WEP64_USED; + break; + case 13: // Group WEP128 + pIv = &mBcIv[1]; + KeyId = mWpaBcKeyId; + tmpiv = (U32 *)mBcIv; + EncryType = WEP128_USED; + break; + case 16:// Group AES + mIv16++; + if (mIv16 == 0) + mIv32++; + pIv[0] = Lo8(mIv16); + pIv[1] = Hi8(mIv16); + pIv[2] = 0; + KeyId = mWpaBcKeyId; + iv32 = mIv32; + bExtIV = TRUE; + EncryType = AES_USED; + break; + default: // Group key Len error + bWep=FALSE; + fragInfo.macHdr[i][1] &= ~WEP_BIT; + break; + } + } else {// Group key was not installed yet. + bWep=FALSE; + fragInfo.macHdr[i][1] &= ~WEP_BIT; + } + }//endof group frame. + else { //unicast + //printk(KERN_ERR "send unicast packet,pkeyinstalled:%d\n",pHash->pkInstalled); + //KeyInstalled = pHash->pkInstalled; + if ((pHash) && (pHash->pkInstalled)) { + pHash->iv16++; + if (pHash->iv16 == 0) + pHash->iv32++; + if (EncryType == TKIP_USED) { + pIv[0] = Hi8(pHash->iv16); + pIv[1] = (Hi8(pHash->iv16) | 0x20) & 0x7f; + pIv[2] = Lo8(pHash->iv16); + } else if (EncryType == AES_USED) { + pIv[0] = Lo8(pHash->iv16); + pIv[1] = Hi8(pHash->iv16); + pIv[2] = 0; + } + KeyId = pHash->KeyId; + iv32 = pHash->iv32; + bExtIV = TRUE; + } else {// No key has been installed before. + bWep=FALSE; + fragInfo.macHdr[i][1] &= ~WEP_BIT; + } + } + } // end of ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) + fragInfo.macHdr[i][MAC_HDR_LNG] = pIv[0]; + fragInfo.macHdr[i][MAC_HDR_LNG+1] = pIv[1]; + fragInfo.macHdr[i][MAC_HDR_LNG+2] = pIv[2]; + fragInfo.macHdr[i][MAC_HDR_LNG+3] = KeyId << 6; + //if (mDynKeyMode != DYN_KEY_TKIP && mDynKeyMode != DYN_KEY_AES) + if (EncryType == WEP64_USED || EncryType == WEP128_USED) + *tmpiv = (((*tmpiv) & 0x00FFFFFF) + 1) | ((*tmpiv) & 0xFF000000); + + if (bExtIV) { + fragInfo.macHdr[i][MAC_HDR_LNG+3] |= 0x20; + fragInfo.macHdr[i][MAC_HDR_LNG+4] = (U8)(iv32); + fragInfo.macHdr[i][MAC_HDR_LNG+5] = (U8)(iv32 >> 8); + fragInfo.macHdr[i][MAC_HDR_LNG+6] = (U8)(iv32 >> 16); + fragInfo.macHdr[i][MAC_HDR_LNG+7] = (U8)(iv32 >> 24); + } + } + + } + + //fragInfo.msgID = usedID; + fragInfo.bIntraBss = bIntraBss; + fragInfo.buf = signal->buf; + fragInfo.totalFrag = Num; + fragInfo.hdrLen = MAC_HDR_LNG; + + if (bWep) { + fragInfo.hdrLen += IV_LNG; + if (bExtIV) { + fragInfo.hdrLen += EIV_LNG; + } + fragInfo.encryType = EncryType; + } else + fragInfo.encryType=WEP_NOT_USED; + + //if (mAssoc) + //FPRINT_V("EncryType", fragInfo.encryType); + //fragInfo.vapId = vapId; + + //if (fragInfo.encryType == TKIP) + { + //fragInfo.bWaitingMIC = pfrmDesc->bWaitingMIC; + //fragInfo.bSwCalcMIC = pfrmDesc->bSwCalcMIC; + //fragInfo.HwMicPhys = (U32)pfrmDesc->HwMicPhys; + } just_send: - flags = pdot11Obj->EnterCS(); - pdot11Obj->SetupNextSend(&fragInfo); - usedID++; - if (usedID > (BURST_NUM -1)) - usedID = 0; - pdot11Obj->ExitCS(flags); + flags = pdot11Obj->EnterCS(); + // The following 5 lines must be protected by a critical section. + fragInfo.msgID = usedID; + txRequest[usedID] = signal; + usedID++; + if (usedID > (BURST_NUM -1)) + usedID = 0; + pdot11Obj->SetupNextSend(&fragInfo); // No need protection in CardBus - return FALSE; + pdot11Obj->ExitCS(flags); + + return FALSE; } void FlushQ(SignalQ_t *Q) { - Signal_t *signal; - FrmInfo_t *pfrmInfo; - FrmDesc_t *pfrmDesc; - - while ((signal = sigDeque(Q)) != NULL) { - pfrmInfo = &signal->frmInfo; - pfrmDesc = pfrmInfo->frmDesc; - pdot11Obj->ReleaseBuffer(signal->buf); - freeFdesc(pfrmDesc); - freeSignal(signal); - } + Signal_t *signal; + FrmInfo_t *pfrmInfo; + FrmDesc_t *pfrmDesc; + + while((signal = sigDeque(Q)) != NULL) { + pfrmInfo = &signal->frmInfo; + pfrmDesc = pfrmInfo->frmDesc; + pdot11Obj->ReleaseBuffer(signal->buf); + freeFdesc(pfrmDesc); + freeSignal(signal); + } } + void TimMapSet(U8 *map, U16 aid, BOOLEAN flag) { - U8 mask, index; - if ((aid == 0) || (aid > MAX_AID)) - return; - index = aid / 8; - mask = 0x01 << (aid % 8); - if (flag) - map[index] |= mask; - else - map[index] &= ~mask; + U8 mask, index; + + + if ((aid == 0) || (aid > MAX_AID)) + return; + + index = aid / 8; + mask = 0x01 << (aid % 8); + + if (flag) + map[index] |= mask; + else + map[index] &= ~mask; } + + BOOLEAN CleanupTxQ(void) { - Signal_t *signal; - FrmInfo_t *pfrmInfo; - FrmDesc_t *pfrmDesc; - - //PSDEBUG("CleanupTxQ"); - if (pTxQ->cnt > 0) { - signal = pTxQ->first; - if (!signal) - return FALSE; - - pfrmInfo = &signal->frmInfo; - pfrmDesc = pfrmInfo->frmDesc; - - if (!pdot11Obj->CheckTCBAvail(pfrmInfo->fTot)) - return FALSE; - - signal = sigDeque(pTxQ); - goto send_PduReq; - } - - return FALSE; + Signal_t *signal; + FrmInfo_t *pfrmInfo; + FrmDesc_t *pfrmDesc; + + //PSDEBUG("CleanupTxQ"); + if (pTxQ->cnt > 0) { + signal = pTxQ->first; + if (!signal) + return FALSE; + + pfrmInfo = &signal->frmInfo; + pfrmDesc = pfrmInfo->frmDesc; + + if (!pdot11Obj->CheckTCBAvail(pfrmInfo->fTot)) + return FALSE; + + signal = sigDeque(pTxQ); + goto send_PduReq; + } + + return FALSE; + send_PduReq: - TxSend(signal, pfrmDesc); - return TRUE; + TxSend(signal, pfrmDesc); + return TRUE; } + + BOOLEAN CleanupAwakeQ(void) { - Signal_t *signal; - FrmInfo_t *pfrmInfo; - FrmDesc_t *pfrmDesc; - - //PSDEBUG("CleanupAwakeQ"); - if (pAwakeQ->cnt > 0) { - signal = pAwakeQ->first; - if (!signal) - return FALSE; - - pfrmInfo = &signal->frmInfo; - - pfrmDesc = pfrmInfo->frmDesc; - if (!pdot11Obj->CheckTCBAvail(pfrmInfo->fTot)) - return FALSE; - - signal = sigDeque(pAwakeQ); - //PSDEBUG("===== Queue out awakeQ"); - //PSDEBUG_V("pAwakeQ->cnt", pAwakeQ->cnt); - goto send_PduReq; - } - - return FALSE; + Signal_t *signal; + FrmInfo_t *pfrmInfo; + FrmDesc_t *pfrmDesc; + + //PSDEBUG("CleanupAwakeQ"); + if (pAwakeQ->cnt > 0) { + signal = pAwakeQ->first; + if (!signal) + return FALSE; + + pfrmInfo = &signal->frmInfo; + + pfrmDesc = pfrmInfo->frmDesc; + if (!pdot11Obj->CheckTCBAvail(pfrmInfo->fTot)) + return FALSE; + + signal = sigDeque(pAwakeQ); + //PSDEBUG("===== Queue out awakeQ"); + //PSDEBUG_V("pAwakeQ->cnt", pAwakeQ->cnt); + goto send_PduReq; + } + + return FALSE; + send_PduReq: - TxSend(signal, pfrmDesc); - return TRUE; + TxSend(signal, pfrmDesc); + return TRUE; } + void AgePsQ(U16 aid) { - Signal_t *psSignal; - U16 interval; - FrmDesc_t *pfrmDesc; - U32 eol; - FrmInfo_t *pfrmInfo; - - if ((aid == 0) || (aid > MAX_AID)) - return; // Invalid AID - - while (pPsQ[aid]->cnt) { - interval = sstByAid[aid]->lsInterval; - if (interval == 0) - interval = 1; - - psSignal = pPsQ[aid]->first; - - if (!psSignal) - break; - - pfrmInfo = &psSignal->frmInfo; - eol = pfrmInfo->eol; - if ((HW_GetNow(pdot11Obj) - eol) < (2*interval*mBeaconPeriod/10)) //10ms - break; - - if ((HW_GetNow(pdot11Obj) - eol) < (100)) //10ms - break; - //Data life time-out - psSignal = sigDeque(pPsQ[aid]); - if (!psSignal) - break; - - PSDEBUG_V("*****Data life time-out, AID", aid); - pfrmDesc = pfrmInfo->frmDesc; - - freeFdesc(pfrmDesc); - pdot11Obj->ReleaseBuffer(psSignal->buf); - freeSignal(psSignal); - } + Signal_t *psSignal; + U16 interval; + FrmDesc_t *pfrmDesc; + U32 eol; + FrmInfo_t *pfrmInfo; + + if ((aid == 0) || (aid > MAX_AID)) //Invalid AID + return; + + + while (pPsQ[aid]->cnt) { + interval = sstByAid[aid]->lsInterval; + if (interval == 0) + interval = 1; - if (!pPsQ[aid]->cnt) - TimMapSet(TimBitMap, aid, FALSE); + psSignal = pPsQ[aid]->first; - return; + if (!psSignal) + break; + + pfrmInfo = &psSignal->frmInfo; + eol = pfrmInfo->eol; +#ifndef HOST_IF_USB + + if ((HW_GetNow(pdot11Obj) - eol) < (2*interval*mBeaconPeriod*1024)) //us + break; + + if ((HW_GetNow(pdot11Obj) - eol) < (1024*1024)) //us + break; +#else + + if ((HW_GetNow(pdot11Obj) - eol) < (2*interval*mBeaconPeriod/10)) //10ms + break; + + if ((HW_GetNow(pdot11Obj) - eol) < (100)) //10ms + break; +#endif + //Data life time-out + psSignal = sigDeque(pPsQ[aid]); + if (!psSignal) + break; + + PSDEBUG_V("*****Data life time-out, AID", aid); + pfrmDesc = pfrmInfo->frmDesc; + + freeFdesc(pfrmDesc); + pdot11Obj->ReleaseBuffer(psSignal->buf); + freeSignal(psSignal); + } + + + if (!pPsQ[aid]->cnt) + TimMapSet(TimBitMap, aid, FALSE); + + return; } + void PsPolled(MacAddr_t *sta, U16 aid) { - Signal_t *signal; - FrmInfo_t *pfrmInfo; - FrmDesc_t *pfrmDesc; - Frame_t *frame; - int i; - U8 Num; - - //PSDEBUG("PsPolled"); - - signal = sigDeque(pPsQ[aid]); - if (!signal) { - PSDEBUG("No Queue data for PS-POLL!!!"); - TimMapSet(TimBitMap, aid, FALSE); - return; - } else { - - PSDEBUG_V("Queue out psQ, AID ", aid); - PSDEBUG_V("cnt ", pPsQ[aid]->cnt); - pfrmInfo = &signal->frmInfo; - pfrmDesc = pfrmInfo->frmDesc; - - Num = pfrmInfo->fTot; - for (i=0; impdu[i]; - //PSDEBUG_V("pfrmInfo ", (U32)pfrmInfo); - //PSDEBUG_V("eol ", (U32)pfrmInfo->eol); - PSDEBUG_V("pfrmDesc ", (U32)pfrmDesc); - //PSDEBUG_V("frame ", (U32)frame); - if (!pPsQ[aid]->cnt) { - frame->header[1] &= ~MORE_DATA_BIT; - PSDEBUG("More bit 0"); - } else { - frame->header[1] |= MORE_DATA_BIT; - PSDEBUG("More bit 1"); - } - PSDEBUG_V("bodyLen ", frame->bodyLen); - } - - if (!pdot11Obj->CheckTCBAvail(Num)) { - PSDEBUG("*****Fail to send out!!!"); - PSDEBUG_V("Queue in psQ, AID", aid); - sigEnqueFirst(pPsQ[aid], signal); - return; - } else - sigEnque(pTxQ, signal); - return; - } + Signal_t *signal; + FrmInfo_t *pfrmInfo; + FrmDesc_t *pfrmDesc; + Frame_t *frame; + int i; + U8 Num; + + //PSDEBUG("PsPolled"); + + signal = sigDeque(pPsQ[aid]); + if (!signal) { + PSDEBUG("No Queue data for PS-POLL!!!"); + TimMapSet(TimBitMap, aid, FALSE); + return; + } else { + + PSDEBUG_V("Queue out psQ, AID ", aid); + PSDEBUG_V("cnt ", pPsQ[aid]->cnt); + pfrmInfo = &signal->frmInfo; + pfrmDesc = pfrmInfo->frmDesc; + + Num = pfrmInfo->fTot; + for (i=0; impdu[i]; + //PSDEBUG_V("pfrmInfo ", (U32)pfrmInfo); + //PSDEBUG_V("eol ", (U32)pfrmInfo->eol); + PSDEBUG_V("pfrmDesc ", (U32)pfrmDesc); + //PSDEBUG_V("frame ", (U32)frame); + if (!pPsQ[aid]->cnt) { + frame->header[1] &= ~MORE_DATA_BIT; + PSDEBUG("More bit 0"); + } else { + frame->header[1] |= MORE_DATA_BIT; + PSDEBUG("More bit 1"); + } + + PSDEBUG_V("bodyLen ", frame->bodyLen); + } + + + if (!pdot11Obj->CheckTCBAvail(Num)) { + PSDEBUG("*****Fail to send out!!!"); + PSDEBUG_V("Queue in psQ, AID", aid); + sigEnqueFirst(pPsQ[aid], signal); + return; + } else + sigEnque(pTxQ, signal); + return; + } } + void StaWakeup(MacAddr_t *sta) { - U16 aid; - Signal_t *signal; + U16 aid; + Signal_t *signal; - aid = AIdLookup(sta); - if ((aid == 0) || (aid > MAX_AID)) - return; - - while((signal = sigDeque(pPsQ[aid])) != NULL) { - sigEnque(pTxQ, signal); - } + aid = AIdLookup(sta); + if ((aid == 0) || (aid > MAX_AID)) + return; + + while((signal = sigDeque(pPsQ[aid])) != NULL) { + sigEnque(pTxQ, signal); + } } + void InitPMFilterQ(void) { - U8 i; - static BOOLEAN bFirstTime = TRUE; + U8 i; + static BOOLEAN bFirstTime = TRUE; + + if (bFirstTime) { + bFirstTime = FALSE; + for (i=0; i < MAX_RECORD; i++) { + pPsQ[i] = &psQ[i]; + initSigQue(pPsQ[i]); + } + pTxQ = &txQ; + pAwakeQ = &awakeQ; + initSigQue(pTxQ); + initSigQue(pAwakeQ); + } else { + for (i=0; i < MAX_RECORD; i++) + FlushQ(pPsQ[i]); + FlushQ(pTxQ); + FlushQ(pAwakeQ); + } - if (bFirstTime) { - bFirstTime = FALSE; - for (i=0; i < MAX_RECORD; i++) { - pPsQ[i] = &psQ[i]; - initSigQue(pPsQ[i]); - } - pTxQ = &txQ; - pAwakeQ = &awakeQ; - initSigQue(pTxQ); - initSigQue(pAwakeQ); - } else { - for (i=0; i < MAX_RECORD; i++) - FlushQ(pPsQ[i]); - FlushQ(pTxQ); - FlushQ(pAwakeQ); - } - - memset(TimBitMap, 0, sizeof(TimBitMap)); + memset(TimBitMap, 0, sizeof(TimBitMap)); } + void ConfigBcnFIFO(void) { - int i, j; - BOOLEAN bcst = FALSE; - Signal_t *signal; - U8 tim[256]; - U8 Beacon[256]; - U16 BcnIndex = 0; - U8 Len; - - //FPRINT("ConfigBcnFIFO"); - - if (mBssType == AP_BSS) { - if (mPsStaCnt > 0) { - HW_SetSTA_PS(pdot11Obj, 1); - for (i=1; i < (MAX_AID+1); i++) { - AgePsQ(i); - if (pPsQ[i]->cnt) { - TimMapSet(TimBitMap, i, TRUE); - PSDEBUG_V("TimMapSet Aid", i); - } - } - } else { - HW_SetSTA_PS(pdot11Obj, 0); - //send McQ - if (pPsQ[0]->cnt) { - while(1) { - signal = sigDeque(pPsQ[0]); - if (!signal) - break; - - sigEnque(pTxQ, signal); - } - } - } - } - - /* make beacon frame */ - /* Frame control */ - Beacon[BcnIndex++] = 0x80; - Beacon[BcnIndex++] = 0x00; - - /* Duration HMAC will fill this field */ - Beacon[BcnIndex++] = 0x00; - Beacon[BcnIndex++] = 0x00; - - /* Address1 */ - Beacon[BcnIndex++] = 0xff; - Beacon[BcnIndex++] = 0xff; - Beacon[BcnIndex++] = 0xff; - Beacon[BcnIndex++] = 0xff; - Beacon[BcnIndex++] = 0xff; - Beacon[BcnIndex++] = 0xff; - - /* Address2 */ - for (j=0; j<6; j++) - //Beacon[BcnIndex++] = mBssId.mac[j]; - Beacon[BcnIndex++] = dot11MacAddress.mac[j]; - - /* Address3 */ - for (j=0; j<6; j++) - Beacon[BcnIndex++] = mBssId.mac[j]; - - /* Sequence control HMAC will fill this field */ - //Beacon[BcnIndex++] = 0x00; - //Beacon[BcnIndex++] = 0x00; - BcnIndex += 2; - - /* Timestamp HMAC will fill this field */ - //for (j=0; j<8; j++) - //Beacon[BcnIndex++] = 0x00; - BcnIndex += 8; - - /* BeaconInterval */ - Beacon[BcnIndex++] = mBeaconPeriod; - Beacon[BcnIndex++] = mBeaconPeriod >> 8; - - /* Capability */ - Beacon[BcnIndex++] = mCap; - Beacon[BcnIndex++] = mCap >> 8; - - /* SSID */ - Len = eLen(&mSsid)+2; - for (j=0; j> 8; - } - - /* Tim */ - //if ((mDtimCount == 0) && (pPsQ[0]->cnt > 0)) { //dtim and buffer for mc - if (mBssType == AP_BSS) { - if ((mDtimCount == 0) && mcBuffered) { - bcst = TRUE; - } - - mkTim((Element*)tim, (TrafficMap_t *)&TimBitMap, mDtimCount, mDtimPeriod, 1, MAX_AID, bcst); - Len = tim[1]+2; - for (j=0; jpriv; + Signal_t *signal; + U8 tim[256]; + U8 Beacon[256]; + U16 BcnIndex = 0; + U8 Len; + + //FPRINT("ConfigBcnFIFO"); + + if (mBssType == AP_BSS) { + if (mPsStaCnt > 0) { + HW_SetSTA_PS(pdot11Obj, 1); + for (i=1; i < (MAX_AID+1); i++) { + AgePsQ(i); + if (pPsQ[i]->cnt) { + TimMapSet(TimBitMap, i, TRUE); + PSDEBUG_V("TimMapSet Aid", i); + } + } + } else { + HW_SetSTA_PS(pdot11Obj, 0); + //send McQ + if (pPsQ[0]->cnt) { + while(1) { + signal = sigDeque(pPsQ[0]); + if (!signal) + break; + + sigEnque(pTxQ, signal); + } + } + } + } + + /* make beacon frame */ + /* Frame control */ + Beacon[BcnIndex++] = 0x80; + Beacon[BcnIndex++] = 0x00; + + /* Duration HMAC will fill this field */ + Beacon[BcnIndex++] = 0x00; + Beacon[BcnIndex++] = 0x00; + + /* Address1 */ + Beacon[BcnIndex++] = 0xff; + Beacon[BcnIndex++] = 0xff; + Beacon[BcnIndex++] = 0xff; + Beacon[BcnIndex++] = 0xff; + Beacon[BcnIndex++] = 0xff; + Beacon[BcnIndex++] = 0xff; + + /* Address2 */ + for (j=0; j<6; j++) + //Beacon[BcnIndex++] = mBssId.mac[j]; + Beacon[BcnIndex++] = dot11MacAddress.mac[j]; + + /* Address3 */ + for (j=0; j<6; j++) + + Beacon[BcnIndex++] = mBssId.mac[j]; + + /* Sequence control HMAC will fill this field */ + //Beacon[BcnIndex++] = 0x00; + //Beacon[BcnIndex++] = 0x00; + BcnIndex += 2; + + /* Timestamp HMAC will fill this field */ + //for (j=0; j<8; j++) + //Beacon[BcnIndex++] = 0x00; + BcnIndex += 8; + + /* BeaconInterval */ + Beacon[BcnIndex++] = mBeaconPeriod; + Beacon[BcnIndex++] = mBeaconPeriod >> 8; + + /* Display the Capability */ + if(pdot11Obj->dbg_cmd & DBG_CMD_BEACON) + printk(KERN_ERR "mCap: 0x%04x\n", mCap); + + /* Capability */ + Beacon[BcnIndex++] = mCap; + Beacon[BcnIndex++] = mCap >> 8; + + /* SSID */ + Len = eLen(&mSsid)+2; + for (j=0; j> 8; + } + + /* Tim */ + //if ((mDtimCount == 0) && (pPsQ[0]->cnt > 0)){ //dtim and buffer for mc + if (mBssType == AP_BSS) { + if ((mDtimCount == 0) && mcBuffered) { + bcst = TRUE; + } + + mkTim((Element*)tim, (TrafficMap_t *)&TimBitMap, mDtimCount, mDtimPeriod, 1, MAX_AID, bcst); + Len = tim[1]+2; + for (j=0; jbDisProtection==1) + {//Disable protection + Beacon[BcnIndex] &= ~USE_PROTECTION; + }*/ + BcnIndex++; + + //Extended supported rates + Len = mExtRates.buf[1]+2; + ; + for (j=0; jcardSetting.WPAIeLen; + if (Len) { + memcpy(&Beacon[BcnIndex], &mWPAIe, Len); + BcnIndex += Len; + } + + /* CRC32 HMAC will calucate this value */ + //for (j=0; j<4; j++) + // Beacon[BcnIndex++] = 0x00; + BcnIndex += 4; + + + HW_SetBeaconFIFO(pdot11Obj, &Beacon[0], BcnIndex); + memset(TimBitMap, 0, sizeof(TimBitMap)); } + void SendMcPkt(void) { - Signal_t *signal; + Signal_t *signal; - while(pPsQ[0]->cnt > 0) { - signal = pPsQ[0]->first; - if (!signal) - break; - - signal = sigDeque(pPsQ[0]); - //PSDEBUG("Queue in awakeQ"); - sigEnque(pAwakeQ, signal); - //PSDEBUG_V("pAwakeQ->cnt", pAwakeQ->cnt); - } - - if (pAwakeQ->cnt > 0) { - mcBuffered = TRUE; - } else - mcBuffered = FALSE; + while(pPsQ[0]->cnt > 0) { + signal = pPsQ[0]->first; + if (!signal) + break; + + signal = sigDeque(pPsQ[0]); + //PSDEBUG("Queue in awakeQ"); + sigEnque(pAwakeQ, signal); + //PSDEBUG_V("pAwakeQ->cnt", pAwakeQ->cnt); + } + + if (pAwakeQ->cnt > 0) { + mcBuffered = TRUE; + } else + mcBuffered = FALSE; } + void ResetPMFilter(void) { - int i; + int i; + + for (i=0; ifrmInfo; - frame = pfrmDesc->mpdu; - pHash = pfrmDesc->pHash; - Num = pfrmInfo->fTot; - - if (!signal->bDataFrm) { - //if (!pfrmDesc->bDataFrm) { - goto direct_send; - } - - if (!isGroup(addr1(frame))) { //unicast - PsMode dpsm; - U16 aid; - - if (mBssType != AP_BSS) - goto direct_send; - - //PsInquiry(addr1(frame), &dpsm, &aid); - dpsm = pHash->psm; - aid = pHash->aid; - - if ((dpsm == PSMODE_POWER_SAVE) && (aid > 0) && (aid <(MAX_AID+1))) { - AgePsQ(aid); - if (zd_CheckTotalQueCnt() > TXQ_THRESHOLD) { - PSDEBUG("*****Drop PS packet*****"); - freeFdesc(pfrmDesc); - pdot11Obj->ReleaseBuffer(signal->buf); - freeSignal(signal); - return FALSE; - } else { - //for (i=0; impdu[i]), 1); - // pfrmDesc->mpdu[i].header[i] |= MORE_DATA_BIT; - //} - pfrmInfo->eol = HW_GetNow(pdot11Obj); //Set timestamp - - sigEnque(pPsQ[aid], signal); //Queue in PS Queue - PSDEBUG_V("Queue in PS Queue, AID ", aid); - PSDEBUG_V("cnt ", pPsQ[aid]->cnt); - //PSDEBUG_V("pfrmInfo ", (U32)pfrmInfo); - //PSDEBUG_V("eol ", (U32)pfrmInfo->eol); - PSDEBUG_V("pfrmDesc ", (U32)pfrmDesc); - //PSDEBUG_V("frame ", (U32)frame); - PSDEBUG_V("bodyLen ", frame->bodyLen); - TimMapSet(TimBitMap, aid, TRUE); - return FALSE; - } - } else { - goto direct_send; - } - } else { //group address - if ((orderBit(frame) == 0) && (mPsStaCnt > 0)) { - if ((zd_CheckTotalQueCnt() > TXQ_THRESHOLD) || (pPsQ[0]->cnt > MCQ_THRESHOLD)) { - PSDEBUG("*****Drop MC packet*****"); - freeFdesc(pfrmDesc); - pdot11Obj->ReleaseBuffer(signal->buf); - freeSignal(signal); - return FALSE; - } else { - for (i=0; impdu[i].header[i] |= MORE_DATA_BIT; - } - sigEnque(pPsQ[0], signal); // psQ[0] is for mcQ - //PSDEBUG("+++++ Queue in mcQ"); - //PSDEBUG_V("mcQ->cnt", pPsQ[0]->cnt); - return FALSE; - } - } else { - goto direct_send; - } - } + FrmInfo_t *pfrmInfo; + Frame_t *frame; + int i; + Hash_t *pHash; + U8 Num; + + //PSDEBUG("SendPkt"); + pfrmInfo = &signal->frmInfo; + frame = pfrmDesc->mpdu; + pHash = pfrmDesc->pHash; + Num = pfrmInfo->fTot; + + if (!signal->bDataFrm) { + //if (!pfrmDesc->bDataFrm){ + goto direct_send; + } + + if (!isGroup(addr1(frame))) { //unicast + PsMode dpsm; + U16 aid; + + /* ath_desc: fix AP_BSS crash */ + if ((mBssType != AP_BSS) || (!pHash)) + goto direct_send; + + //PsInquiry(addr1(frame), &dpsm, &aid); + dpsm = pHash->psm; + aid = pHash->aid; + + if ((dpsm == PSMODE_POWER_SAVE) && (aid > 0) && (aid <(MAX_AID+1))) { + AgePsQ(aid); + + if (zd_CheckTotalQueCnt() > TXQ_THRESHOLD) { + PSDEBUG("*****Drop PS packet*****"); + freeFdesc(pfrmDesc); + pdot11Obj->ReleaseBuffer(signal->buf); + freeSignal(signal); + return FALSE; + } else { + //for (i=0; impdu[i]), 1); + // pfrmDesc->mpdu[i].header[i] |= MORE_DATA_BIT; + //} + pfrmInfo->eol = HW_GetNow(pdot11Obj); //Set timestamp + + sigEnque(pPsQ[aid], signal); //Queue in PS Queue + PSDEBUG_V("Queue in PS Queue, AID ", aid); + PSDEBUG_V("cnt ", pPsQ[aid]->cnt); + //PSDEBUG_V("pfrmInfo ", (U32)pfrmInfo); + //PSDEBUG_V("eol ", (U32)pfrmInfo->eol); + PSDEBUG_V("pfrmDesc ", (U32)pfrmDesc); + //PSDEBUG_V("frame ", (U32)frame); + PSDEBUG_V("bodyLen ", frame->bodyLen); + TimMapSet(TimBitMap, aid, TRUE); + return FALSE; + } + } else { + goto direct_send; + } + } else { //group address + if ((orderBit(frame) == 0) && (mPsStaCnt > 0)) { + if ((zd_CheckTotalQueCnt() > TXQ_THRESHOLD) || (pPsQ[0]->cnt > MCQ_THRESHOLD)) { + PSDEBUG("*****Drop MC packet*****"); + freeFdesc(pfrmDesc); + pdot11Obj->ReleaseBuffer(signal->buf); + freeSignal(signal); + return FALSE; + } else { + for (i=0; impdu[i].header[1] |= MORE_DATA_BIT; + } + + sigEnque(pPsQ[0], signal); // psQ[0] is for mcQ + //PSDEBUG("+++++ Queue in mcQ"); + //PSDEBUG_V("mcQ->cnt", pPsQ[0]->cnt); + return FALSE; + } + } else { + goto direct_send; + } + } + direct_send: - if (!bImmediate) { - sigEnque(pTxQ, signal); - return FALSE; - } else { - if (!pdot11Obj->CheckTCBAvail(Num)) { - freeSignal(signal); - freeFdesc(pfrmDesc); - return TRUE; - // PSDEBUG("Queue in TxQ"); - // PSDEBUG_V("Cnt of TxQ", pTxQ->cnt); - } - return TxSend(signal, pfrmDesc); //14 us - } + if (!bImmediate) { + sigEnque(pTxQ, signal); + return FALSE; + } else { + if (!pdot11Obj->CheckTCBAvail(Num)) { +#if 1 //727 + /* ath_desc: fix mem leak */ + freeFdesc(pfrmDesc); + pdot11Obj->ReleaseBuffer(signal->buf); + freeSignal(signal); + return TRUE; +#else + + sigEnque(pTxQ, signal); + return FALSE; +#endif + //PSDEBUG("Queue in TxQ"); + //PSDEBUG_V("Cnt of TxQ", pTxQ->cnt); + } + return TxSend(signal, pfrmDesc); //14 us + } } + +#endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdmic.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdmic.h @@ -1,60 +1,71 @@ -/* $Id: zdmic.h,v 1.8 2005/03/27 20:47:38 sagamore Exp $ - * Header file required for TKIP MIC - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +/* + $Id: zdmic.h,v 1.1.1.1 2005/11/25 08:04:38 mzcai Exp $ +*/ +/***********************************************************************/ +/* Copyright 2003 by ZyDAS Technology Corporation */ +/* */ +/***********************************************************************/ +/***********************************************************************/ +/* */ +/* FILE DESCRIPTION MIChael.h */ +/* Header file required for TKIP MIC */ +/* */ +/* ROUTINES */ +/* XXX */ +/* */ +/* NOTES */ +/* XXX */ +/* */ +/* MAINTAINER */ +/* Liam,Hwu ZyDAS Technology Corporation 2003 */ +/* */ +/***********************************************************************/ #ifndef _ZDMIC_H_ #define _ZDMIC_H_ + // Rotation functions on 32 bit values -#define ROL32(A, n) (((A) << (n)) | (((A)>>(32-(n))) & ((1UL << (n)) - 1 ))) +#define ROL32(A, n) \ + ( ((A) << (n)) | ( ((A)>>(32-(n))) & ( (1UL << (n)) - 1 ) ) ) + #define ROR32(A, n) ROL32( (A), 32-(n) ) -typedef struct { - U32 K0, K1; // Key - U32 L, R; // Current state - U32 M; // Message accumulator (single word) - int nBytesInM; // # bytes in M -} MICvar; // variable for MIC -// Clear the internal message, +//variable. +typedef struct +{ + U32 K0, K1; // Key + U32 L, R; // Current state + U32 M; // Message accumulator (single word) + int nBytesInM; // # bytes in M +} +MICvar; // variable for MIC + + +// Clear the internal message, // resets the object to the state just after construction. void MICclear(MICvar *MIC); + // Set the key to a new value void MICsetKey(U8 *key, MICvar *MIC); + // Get the MIC result. Destination should accept 8 bytes of result. // This also resets the message to empty. + void MICgetMIC(U8 *dst, MICvar *MIC); + // Add a single byte to the internal message void MICappendByte(U8 b, MICvar *MIC); void MICappendArr(U8 *pb, MICvar *MIC, U32 Size); + // Get U32 from 4 bytes LSByte first U32 getUInt32(U8 *p); + // Put U32 into 4 bytes LSByte first void putUInt32(U8 *p, U32 val); --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdpsmon.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdpsmon.h @@ -1,30 +1,7 @@ -/* $Id: zdpsmon.h,v 1.4 2005/03/17 09:15:16 akw Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZDPSMON_H_ #define _ZDPSMON_H_ + void ResetPSMonitor(void); void SsInquiry(MacAddr_t *sta, StationState *sst, StationState *asst); void AssocInfoUpdate(MacAddr_t *sta, U8 MaxRate, U8 lsInterval, U8 ZydasMode, U8 Preamble, BOOLEAN bErpSta, U8 vapId); @@ -32,6 +9,7 @@ BOOLEAN AgeHashTbl(void); BOOLEAN UpdateStaStatus(MacAddr_t *sta, StationState staSte, U8 vapId); int zd_SetKeyInfo(U8 *addr, U8 encryMode, U8 keyLength, U8 KeyId, U8 *pKeyContent); +int zd_SetKeyContext(U8 *addr, U8 encryMode, U8 keyLength, U8 KeyId, U8 *pKeyContent); Hash_t *HashSearch(MacAddr_t *pMac); Hash_t *RxInfoIndicate(MacAddr_t *sta, PsMode psm, U8 rate); void RxInfoUpdate(Hash_t *pHash, PsMode psm, U8 rate); --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdshared.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdshared.c @@ -1,597 +1,773 @@ -/* $Id: zdshared.c,v 1.10 2005/03/27 20:47:39 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +#ifndef __ZDSHARED_C__ +#define __ZDSHARED_C__ #include "zd80211.h" +#include "zddebug.h" #include "zd1205.h" +extern struct net_device *g_dev; void mkFragment(Signal_t *signal, FrmDesc_t *pfrmDesc, U8 *pEthHdr) { - Frame_t *mpdu, *curMpdu; - FrmInfo_t *pfrmInfo; - BOOLEAN bWep; - U16 pdusize; - U8 *pBody; - U16 len; - U8 fn; - U8 *pByte; - int i; - Hash_t *pHash; - MICvar *pTxMicKey = NULL; - U8 KeyInstalled = 0; - U8 vapId = 0; - U8 Num; - U8 bDataFrm = signal->bDataFrm; - //U8 bDataFrm = pfrmDesc->bDataFrm; - U16 HdrLen; - - ZDEBUG("mkFragment"); - pfrmInfo = &signal->frmInfo; - pfrmInfo->frmDesc = pfrmDesc; //make connection for signal and frmDesc - //PSDEBUG_V("mkFrag pfrmDesc", (U32)pfrmInfo->frmDesc); - mpdu = pfrmDesc->mpdu; - vapId = signal->vapId; - - if (mDynKeyMode == DYN_KEY_TKIP) { - if (bDataFrm) { - if (isGroup(addr1(mpdu))) { - KeyInstalled = mGkInstalled; - - if (mDynKeyMode == DYN_KEY_TKIP) { - pTxMicKey = &mBcMicKey; - if (mWpaBcKeyLen != 32) // Not TKIP, don't make MIC - KeyInstalled = 0; - } - } else { //unicast - pHash = HashSearch(addr1(mpdu)); - if (!pHash) { - FPRINT("HashSearch2 failed !!!"); - zd1205_dump_data("addr1 = ", (U8 *)addr1(mpdu), 6); - KeyInstalled = 0; - } else { - if (mDynKeyMode == DYN_KEY_TKIP) - pTxMicKey = &pHash->TxMicKey; - KeyInstalled = pHash->pkInstalled; - } - } - - if ((KeyInstalled) && (mDynKeyMode == DYN_KEY_TKIP)) { - U16 len = mpdu->bodyLen; - - // calculate and append MIC to payload before fragmentation - MICclear(pTxMicKey); - - pByte = &mpdu->header[4]; - for(i=0; i<6; i++) { //for DA - MICappendByte(*pByte++, pTxMicKey); - } - - pByte = &mpdu->header[16]; - for(i=0; i<6; i++) { //for SA - MICappendByte(*pByte++, pTxMicKey); - } - - MICappendByte(0, pTxMicKey); - MICappendByte(0, pTxMicKey); - MICappendByte(0, pTxMicKey); - MICappendByte(0, pTxMicKey); - - pByte = mpdu->body; - for (i=0; ibodyLen += MIC_LNG; - } - } - } - - bWep = mPrivacyInvoked; - if ((!bDataFrm) && (!(pfrmDesc->ConfigSet & FORCE_WEP_SET))) { - bWep = FALSE; - } else { - if (pfrmDesc->ConfigSet & EAPOL_FRAME_SET) - bWep = FALSE; - } - - if (KeyInstalled) // After pairwise key installed, even Eapol frame need to be encrypted - bWep = TRUE; - - pfrmInfo->eol = 0; - - pdusize = mFragThreshold; - if ((!isGroup(addr1(mpdu))) && (mpdu->HdrLen + mpdu->bodyLen + CRC_LNG > pdusize)) { //Need fragment - pdusize -= mpdu->HdrLen + CRC_LNG; - pfrmInfo->fTot = (mpdu->bodyLen + (pdusize-1)) / pdusize; - if (pfrmInfo->fTot == 0) - pfrmInfo->fTot = 1; - } else { - pdusize = mpdu->bodyLen; - pfrmInfo->fTot = 1; - } - - curMpdu = mpdu; - pBody = mpdu->body; - len = mpdu->bodyLen; - Num = pfrmInfo->fTot; - HdrLen = mpdu->HdrLen; - - for (fn=0; fnmpdu[fn]; - memcpy(&curMpdu->header[0], &mpdu->header[0], HdrLen); //make header - curMpdu->HdrLen = HdrLen; - curMpdu->body = pBody; - } - curMpdu->header[22] = ((curMpdu->header[22] & 0xF0) | fn); - - if (fn == (Num - 1)) { - curMpdu->bodyLen = len; - curMpdu->header[1] &= ~MORE_FRAG_BIT; - } else { - curMpdu->bodyLen = pdusize; - pBody += pdusize; - len -= pdusize; - curMpdu->header[1] |= MORE_FRAG_BIT; - } - - if (bWep) - curMpdu->header[1] |= WEP_BIT; - } -} + struct zd1205_private *macp=g_dev->priv; + Frame_t *mpdu, *curMpdu; + FrmInfo_t *pfrmInfo; + BOOLEAN bWep; + U16 pdusize; + U8 *pBody; + U16 len; + U8 fn; + U8 *pByte; + int i; + Hash_t *pHash; + MICvar *pTxMicKey = NULL; + U8 KeyInstalled = 0; + U8 vapId = 0; + U8 Num; + U8 bDataFrm = signal->bDataFrm; + //U8 bDataFrm = pfrmDesc->bDataFrm; + U16 HdrLen; + + ZDEBUG("mkFragment"); + pfrmDesc->CalMIC[MIC_LNG]=FALSE; + pfrmInfo = &signal->frmInfo; + pfrmInfo->frmDesc = pfrmDesc; //make connection for signal and frmDesc + //PSDEBUG_V("mkFrag pfrmDesc", (U32)pfrmInfo->frmDesc); + mpdu = pfrmDesc->mpdu; + vapId = signal->vapId; +#if 0 + + if (mDynKeyMode == DYN_KEY_TKIP || mDynKeyMode == DYN_KEY_AES) { + if (bDataFrm) { + if (isGroup(addr1(mpdu))) { + KeyInstalled = mGkInstalled; + + if (mDynKeyMode == DYN_KEY_TKIP) { + pTxMicKey = &mBcMicKey; + if (mWpaBcKeyLen != 32) // Not TKIP, don't make MIC + KeyInstalled = 0; + } + } else { //unicast + pHash = HashSearch(addr1(mpdu)); + if (!pHash) { + FPRINT("HashSearch2 failed !!!"); + zd1205_dump_data("addr1 = ", (U8 *)addr1(mpdu), 6); + KeyInstalled = 0; + } else { + if (mDynKeyMode == DYN_KEY_TKIP) + pTxMicKey = &pHash->TxMicKey; + KeyInstalled = pHash->pkInstalled; + } + } -BOOLEAN sendMgtFrame(Signal_t *signal, FrmDesc_t *pfrmDesc) -{ - ZDEBUG("sendMgtFrame"); - pfrmDesc->ConfigSet &= ~INTRA_BSS_SET; - pfrmDesc->ConfigSet &= ~EAPOL_FRAME_SET; - pfrmDesc->pHash = NULL; - pdot11Obj->ReleaseBuffer(signal->buf); - signal->buf = NULL; - signal->bDataFrm = 0; - //pfrmDesc->bDataFrm = 0; - mkFragment(signal, pfrmDesc, NULL); - return SendPkt(signal, pfrmDesc, TRUE); -} - -BOOLEAN getElem(Frame_t *frame, ElementID eleID, Element *elem) -{ - U8 k = 0; //offset bytes to first element - U8 n = 0; //num. of element - U8 pos; //current position - U8 len; - - switch (frmType(frame)) { - case ST_PROBE_REQ: - k = 0; - n = 4; - if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) - n++; - break; - - case ST_ASOC_REQ: - k = 4; - n = 4; - if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) - n++; - break; - - case ST_REASOC_REQ: - k = 10; - n = 4; - if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) - n++; - break; - - case ST_AUTH: - k = 6; - n = 1; - break; - - case ST_BEACON: - case ST_PROBE_RSP: - k = 12; - n = 6; - - if (mBssType == INDEPENDENT_BSS) - n++; - if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) - n++; - n++; //for country info - break; - - case ST_ASOC_RSP: - case ST_REASOC_RSP: - k = 6; - n = 2; - - if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) - n++; - break; - - default: - elem->buf[1] = 0; - return FALSE; - } - - while (n--) { - pos = frame->body[k]; - len = frame->body[k+1] + 2; - if ((pos == eleID) && (len < 33)) { //match - memcpy((U8 *)elem, &frame->body[k], len); - return TRUE; - } else { - k += len; - } - } - elem->buf[1] = 0; //set element length to zero - return FALSE; -} - -void mkAuthFrm(FrmDesc_t* pfrmDesc, MacAddr_t *addr1, U16 Alg, U16 Seq, - U16 Status, U8 *pChalng, U8 vapId) -{ - U8 *body; - U16 len; - Frame_t *pf = pfrmDesc->mpdu; - - setFrameType(pf, ST_AUTH); - pf->body = pfrmDesc->buffer; - body = pf->body; - setAddr1(pf, addr1); - setAddr2(pf, &dot11MacAddress); - setAddr3(pf, &mBssId); - pf->HdrLen = MAC_HDR_LNG; - - body[0] = Alg & 0xff; //AuthAlg - body[1] = (Alg & 0xff00) >> 8; - body[2] = Seq & 0xff; //AuthSeq - body[3] = (Seq & 0xff00) >> 8; - body[4] = Status & 0xff; //Status - body[5] = (Status & 0xff00) >> 8; - len = 6; - - if ((Alg == SHARE_KEY) && ((Seq == 2)|| (Seq == 3)) && (pChalng)) { - body[len] = EID_CTEXT; - body[len+1] = CHAL_TEXT_LEN; - memcpy(&body[len+2], pChalng, CHAL_TEXT_LEN); - len += (2+CHAL_TEXT_LEN); - } - - pf->bodyLen = len; -} - -void mkRe_AsocRspFrm(FrmDesc_t* pfrmDesc, TypeSubtype subType, MacAddr_t *addr1, - U16 Cap, U16 Status, U16 Aid, Element *pSupRates, Element *pExtRates, U8 vapId) -{ - U8 *body; - U8 elemLen; - U16 len; - Frame_t *pf = pfrmDesc->mpdu; - - setFrameType(pf, subType); - pf->body = pfrmDesc->buffer; - body = pf->body; - setAddr1(pf, addr1); - setAddr2(pf, &dot11MacAddress); - setAddr3(pf, &mBssId); - pf->HdrLen = MAC_HDR_LNG; - - body[0] = Cap & 0xff; //Cap - body[1] = (Cap & 0xff00) >> 8; - body[2] = Status & 0xff; //Status - body[3] = (Status & 0xff00) >> 8; - body[4] = Aid & 0xff; //AID - body[5] = (Aid & 0xff00) >> 8; - len = 6; - - elemLen = pSupRates->buf[1]+2; - memcpy(&body[len], (U8 *)pSupRates, elemLen); //Support Rates - len += elemLen; - - if ((mMacMode != PURE_B_MODE) && (pExtRates)) { - elemLen = pExtRates->buf[1]+2; - memcpy(&body[len], (U8 *)pExtRates, elemLen); //Extended rates - len += elemLen; - } - - pf->bodyLen = len; -} - -void mkProbeRspFrm(FrmDesc_t* pfrmDesc, MacAddr_t *addr1, U16 BcnInterval, - U16 Cap, Element *pSsid, Element *pSupRates, Element *pDsParms, - Element *pExtRates, Element *pWpa, U8 vapId) -{ - U8 *body; - U8 elemLen; - U16 len; - Frame_t *pf = pfrmDesc->mpdu; - - setFrameType(pf, ST_PROBE_RSP); - pf->body = pfrmDesc->buffer; - body = pf->body; - setAddr1(pf, addr1); - setAddr2(pf, &dot11MacAddress); - setAddr3(pf, &mBssId); - pf->HdrLen = MAC_HDR_LNG; - - body[8] = BcnInterval & 0xff; //BcnPeriod - body[9] = (BcnInterval & 0xff00) >> 8; - body[10] = Cap & 0xff; //Cap - body[11] = (Cap & 0xff00) >> 8; - - len = 12; - elemLen = pSsid->buf[1]+2; - memcpy(&body[len], (U8 *)pSsid, elemLen); //SSID - len += elemLen; - - elemLen = pSupRates->buf[1]+2; - - memcpy(&body[len], (U8 *)pSupRates, elemLen); //Suported rates - len += elemLen; - - elemLen = pDsParms->buf[1]+2; - memcpy(&body[len], (U8 *)pDsParms, elemLen); //Extended rates - len += elemLen; - - if ((mMacMode != PURE_B_MODE) && (pExtRates)) { - elemLen = pExtRates->buf[1]+2; - memcpy(&body[len], (U8 *)pExtRates, elemLen); //Extended rates - len += elemLen; - } - - if (((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) && (pWpa)) { - elemLen = pWpa->buf[1]+2; - memcpy(&body[len], (U8 *)pWpa, elemLen); //WPA IE - len += elemLen; - } - - pf->bodyLen = len; -} - -void mkDisAssoc_DeAuthFrm(FrmDesc_t* pfrmDesc, TypeSubtype subType, MacAddr_t *addr1, - U16 Reason, U8 vapId) -{ - U8 *body; - Frame_t *pf = pfrmDesc->mpdu; - - setFrameType(pf, subType); - pf->body = pfrmDesc->buffer; - body = pf->body; - setAddr1(pf, addr1); - setAddr2(pf, &dot11MacAddress); - setAddr3(pf, &mBssId); - pf->HdrLen = MAC_HDR_LNG; - - body[0] = Reason & 0xff; //Reason Code - body[1] = (Reason & 0xff00) >> 8; - - pf->bodyLen = 2; -} - -void sendProbeRspFrm(MacAddr_t *addr1, U16 BcnInterval, U16 Cap, - Element *pSsid, Element *pSupRates, Element *pDsParms, - Element *pExtRates, Element *pWpa, U8 vapId) -{ - Signal_t *signal; - FrmDesc_t *pfrmDesc; - - if ((signal = allocSignal()) == NULL) - return; - - if ((pfrmDesc = allocFdesc()) == NULL) { - freeSignal(signal); - return; - } - - mkProbeRspFrm(pfrmDesc, addr1, BcnInterval, Cap, pSsid, pSupRates, pDsParms, - pExtRates, pWpa, vapId); - sendMgtFrame(signal, pfrmDesc); -} + if ((KeyInstalled) && (mDynKeyMode == DYN_KEY_TKIP)) { +#endif + // The following section is used for TKIP-MIC append. + if (bDataFrm) { + if (macp->cardSetting.WPAIeLen) // WPA is supported for now. + { + if (isGroup(addr1(mpdu))) + {// Prepare to send the BC/MC packet. + KeyInstalled=mGkInstalled; + if (KeyInstalled) { + if(mWpaBcKeyLen == 32) + pTxMicKey = &mBcMicKey; + } else + FPRINT("MkFrag: No Group key installed\n"); + } else + {// Prepare to send the UC packet. + pHash = HashSearch(addr1(mpdu)); + KeyInstalled=pHash->pkInstalled; + if (!pHash) { + FPRINT("HashSearch2 failed !!!"); + zd1205_dump_data("addr1 = ", (U8 *)addr1(mpdu), 6); + } else if(KeyInstalled) { + //if (pHash->keyLength==32) + if (pHash->encryMode == TKIP) + pTxMicKey = &pHash->TxMicKey; + } else { + FPRINT("MkFrag: Can't find Pairwise key\n"); + } + } + + if (pTxMicKey != NULL) + { // This section is used for TKIP-MIC append. + + U16 len = mpdu->bodyLen; + + // calculate and append MIC to payload before fragmentation + MICclear(pTxMicKey); + + + if(mBssType == AP_BSS || mBssType==INDEPENDENT_BSS) + pByte = &mpdu->header[4]; //DA=Addr1 + else //if (mBssType == INFRASTRUCTURE_BSS) + pByte = &mpdu->header[16];//DA=Addr3 + for(i=0; i<6; i++) { //for DA + MICappendByte(*pByte++, pTxMicKey); + } + + if(mBssType == INFRASTRUCTURE_BSS || mBssType==INDEPENDENT_BSS) + pByte = &mpdu->header[10]; //SA=Addr2 + else //if (mBssType == AP_BSS) + pByte = &mpdu->header[16]; + for(i=0; i<6; i++) { //for SA + MICappendByte(*pByte++, pTxMicKey); + } + + MICappendByte(0, pTxMicKey); + MICappendByte(0, pTxMicKey); + MICappendByte(0, pTxMicKey); + MICappendByte(0, pTxMicKey); + + pByte = mpdu->body; + for (i=0; iCalMIC, pTxMicKey); + pfrmDesc->CalMIC[MIC_LNG]=TRUE; + //zd1205_dump_data("add sw mic:",(u8*)pfrmDesc->CalMIC, 8); + mpdu->bodyLen += MIC_LNG; + } + } + } + + bWep = mPrivacyInvoked; + if ((!bDataFrm) && (!(pfrmDesc->ConfigSet & FORCE_WEP_SET))) { + bWep = FALSE; + } else { + if (pfrmDesc->ConfigSet & EAPOL_FRAME_SET) + bWep = FALSE; + } + + if (KeyInstalled) // After pairwise key installed, even Eapol frame need to be encrypted + { + bWep = TRUE; + } else { + if (bDataFrm && !mKeyFormat && bWep) { + printk(KERN_DEBUG "chkpnt 001\n"); + bWep = FALSE; + } + } + + pfrmInfo->eol = 0; + + pdusize = mFragThreshold; + if ((!isGroup(addr1(mpdu))) && (mpdu->HdrLen + mpdu->bodyLen + CRC_LNG > pdusize)) { //Need fragment + pdusize -= mpdu->HdrLen + CRC_LNG; + pfrmInfo->fTot = (mpdu->bodyLen + (pdusize-1)) / pdusize; + if (pfrmInfo->fTot == 0) + pfrmInfo->fTot = 1; + } else { + pdusize = mpdu->bodyLen; + pfrmInfo->fTot = 1; + } + + curMpdu = mpdu; + pBody = mpdu->body; + len = mpdu->bodyLen; + Num = pfrmInfo->fTot; + HdrLen = mpdu->HdrLen; + + for (fn=0; fnmpdu[fn]; + memcpy(&curMpdu->header[0], &mpdu->header[0], HdrLen); //make header + curMpdu->HdrLen = HdrLen; + curMpdu->body = pBody; + } + curMpdu->header[22] = ((curMpdu->header[22] & 0xF0) | fn); + + if (fn == (Num - 1)) { + curMpdu->bodyLen = len; + curMpdu->header[1] &= ~MORE_FRAG_BIT; + } else { + curMpdu->bodyLen = pdusize; + pBody += pdusize; + len -= pdusize; + curMpdu->header[1] |= MORE_FRAG_BIT; + } + + if (bWep) + curMpdu->header[1] |= WEP_BIT; + } + } + + + BOOLEAN sendMgtFrame(Signal_t *signal, FrmDesc_t *pfrmDesc) { + // ZDEBUG("sendMgtFrame"); + pfrmDesc->ConfigSet &= ~INTRA_BSS_SET; + pfrmDesc->ConfigSet &= ~EAPOL_FRAME_SET; + pfrmDesc->pHash = NULL; + pdot11Obj->ReleaseBuffer(signal->buf); + signal->buf = NULL; + signal->bDataFrm = 0; + //pfrmDesc->bDataFrm = 0; + mkFragment(signal, pfrmDesc, NULL); + return SendPkt(signal, pfrmDesc, TRUE); + } +#if 0 + BOOLEAN getElem(Frame_t *frame, ElementID eleID, Element *elem) { + U8 k = 0; //offset bytes to first element + U8 n = 0; //num. of element + + + U8 pos; //current position + U8 len; + U8 max_len=34; + switch (frmType(frame)) { + case ST_PROBE_REQ: + k = 0; + n = 4; + if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) + n++; + break; + + case ST_ASOC_REQ: + + k = 4; + n = 4; + if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) + n++; + break; + + case ST_REASOC_REQ: + k = 10; + n = 4; + if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) + n++; + break; + + case ST_AUTH: + k = 6; + n = 1; + max_len=130; + break; + + case ST_BEACON: + case ST_PROBE_RSP: + k = 12; + n = 6; + + if (mBssType == INDEPENDENT_BSS) + n++; + if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) + n++; + n++; //for country info + break; + + case ST_ASOC_RSP: + case ST_REASOC_RSP: + k = 6; + n = 2; + + if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) + n++; + break; + + default: + elem->buf[1] = 0; + return FALSE; + } + + //while(n--){ + while(k < frame->bodyLen) { + pos = frame->body[k]; + len = frame->body[k+1] + 2; + + if ((pos == eleID) && (len <= max_len)) { //match + if (eleID == EID_WPA) //Valid WPA IE + { + if (len > 20) + { + memcpy((U8 *)elem, &frame->body[k], len); + return TRUE; + } else + k += len; + } else { + memcpy((U8 *)elem, &frame->body[k], len); + return TRUE; + } + } else { + k += len; + } + } + + elem->buf[1] = 0; //set element length to zero + return FALSE; + } +#endif + BOOLEAN getElem(Frame_t *frame, ElementID eleID, Element *elem) { + U8 k = 0; //offset bytes to first element + U8 pos; //current position + U8 len; + U8 max_len = 130; + + switch (frmType(frame)) { + case ST_PROBE_REQ: + k = 0; + break; + + case ST_ASOC_REQ: + k = 4; + break; + + case ST_REASOC_REQ: + k = 10; + break; + + case ST_AUTH: + k = 6; + break; + + case ST_BEACON: + case ST_PROBE_RSP: + k = 12; + break; + + case ST_ASOC_RSP: + case ST_REASOC_RSP: + k = 6; + break; + + default: + elem->buf[1] = 0; + return FALSE; + } + + //jxiao + while (k < frame->bodyLen) { + pos=frame->body[k]; + len=frame->body[k+1]+2; + if ((pos==eleID) && (len <= max_len)) { + if (eleID == EID_WPA)//The WMM and WPA use the same Element ID. + { + if (len > 20) + { + u8 WPA_OUI[4]={0x00, 0x50, 0xF2, 0x01}; + //u8 WMM_OUI[4]={0x00, 0x50, 0xF2, 0x02}; + if (memcmp (WPA_OUI, (u8*)&frame->body[k+2], 4)==0) { + memcpy((U8 *)elem, &frame->body[k], len); + return TRUE; + } + //else if (memcmp (WMM_OUI, (u8*)&frame->body[k+2], 4)==0) + //{ + // memcpy((U8 *)&elem->buf[0]+128, &frame->body[k], len); + //return TRUE; + //} + else + k += len; + } else + k += len; + } else { + memcpy((U8 *)elem, &frame->body[k], len); + return TRUE; + } + } else { + k += len; + } + } + elem->buf[1]=0; + return FALSE; + } + + void mkAuthFrm(FrmDesc_t* pfrmDesc, MacAddr_t *addr1, U16 Alg, U16 Seq, + U16 Status, U8 *pChalng, U8 vapId) { + U8 *body; + U16 len; + Frame_t *pf = pfrmDesc->mpdu; + + setFrameType(pf, ST_AUTH); + pf->body = pfrmDesc->buffer; + body = pf->body; + setAddr1(pf, addr1); + setAddr2(pf, &dot11MacAddress); + setAddr3(pf, &mBssId); + pf->HdrLen = MAC_HDR_LNG; + + body[0] = Alg & 0xff; //AuthAlg + body[1] = (Alg & 0xff00) >> 8; + body[2] = Seq & 0xff; //AuthSeq + body[3] = (Seq & 0xff00) >> 8; + body[4] = Status & 0xff; //Status + body[5] = (Status & 0xff00) >> 8; + len = 6; + + if ((Alg == SHARE_KEY) && ((Seq == 2)|| (Seq == 3)) && (pChalng)) { + body[len] = EID_CTEXT; + body[len+1] = CHAL_TEXT_LEN; + memcpy(&body[len+2], pChalng, CHAL_TEXT_LEN); + len += (2+CHAL_TEXT_LEN); + } + + pf->bodyLen = len; + } + + void mkRe_AsocRspFrm(FrmDesc_t* pfrmDesc, TypeSubtype subType, MacAddr_t *addr1, + U16 Cap, U16 Status, U16 Aid, Element *pSupRates, Element *pExtRates, U8 vapId) { + U8 *body; + U8 elemLen; + U16 len; + Frame_t *pf = pfrmDesc->mpdu; + + setFrameType(pf, subType); + pf->body = pfrmDesc->buffer; + body = pf->body; + setAddr1(pf, addr1); + setAddr2(pf, &dot11MacAddress); + setAddr3(pf, &mBssId); + pf->HdrLen = MAC_HDR_LNG; + + body[0] = Cap & 0xff; //Cap + body[1] = (Cap & 0xff00) >> 8; + body[2] = Status & 0xff; //Status + body[3] = (Status & 0xff00) >> 8; + body[4] = Aid & 0xff; //AID + body[5] = (Aid & 0xff00) >> 8; + len = 6; + + elemLen = pSupRates->buf[1]+2; + memcpy(&body[len], (U8 *)pSupRates, elemLen); //Support Rates + len += elemLen; + + if ((mMacMode != PURE_B_MODE) && (PURE_A_MODE != mMacMode) && (pExtRates)) { + elemLen = pExtRates->buf[1]+2; + memcpy(&body[len], (U8 *)pExtRates, elemLen); //Extended rates + len += elemLen; + } + + pf->bodyLen = len; + + } + + + void mkProbeRspFrm(FrmDesc_t* pfrmDesc, MacAddr_t *addr1, U16 BcnInterval, + U16 Cap, Element *pSsid, Element *pSupRates, Element *pDsParms, + Element *pExtRates, Element *pWpa, U8 vapId) + { + struct zd1205_private *macp=g_dev->priv; + + U8 *body; + U8 elemLen; + U16 len; + Frame_t *pf = pfrmDesc->mpdu; + + setFrameType(pf, ST_PROBE_RSP); + pf->body = pfrmDesc->buffer; + body = pf->body; + setAddr1(pf, addr1); + setAddr2(pf, &dot11MacAddress); + setAddr3(pf, &mBssId); + pf->HdrLen = MAC_HDR_LNG; + + body[8] = BcnInterval & 0xff; //BcnPeriod + body[9] = (BcnInterval & 0xff00) >> 8; + body[10] = Cap & 0xff; //Cap + body[11] = (Cap & 0xff00) >> 8; + + len = 12; + elemLen = pSsid->buf[1]+2; + memcpy(&body[len], (U8 *)pSsid, elemLen); //SSID + len += elemLen; + + elemLen = pSupRates->buf[1]+2; + + memcpy(&body[len], (U8 *)pSupRates, elemLen); //Suported rates + len += elemLen; + + elemLen = pDsParms->buf[1]+2; + memcpy(&body[len], (U8 *)pDsParms, elemLen); //Extended rates + len += elemLen; + + if ((mMacMode != PURE_B_MODE)&& (mMacMode != PURE_A_MODE) && (pExtRates)) { + elemLen = pExtRates->buf[1]+2; + memcpy(&body[len], (U8 *)pExtRates, elemLen); //Extended rates + len += elemLen; + } +#if 0 + if (((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) && (pWpa)) { + elemLen = pWpa->buf[1]+2; + memcpy(&body[len], (U8 *)pWpa, elemLen); //WPA IE + len += elemLen; + } +#endif + //if (((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) && (pWpa)){ + if (macp->cardSetting.WPAIeLen) { + //elemLen = pWpa->buf[1]+2; + //memcpy(&body[len], (U8 *)pWpa, elemLen); //WPA IE + memcpy(&body[len], macp->cardSetting.WPAIe, macp->cardSetting.WPAIeLen); + len += macp->cardSetting.WPAIeLen; + } + + pf->bodyLen = len; + } + + + void mkDisAssoc_DeAuthFrm(FrmDesc_t* pfrmDesc, TypeSubtype subType, MacAddr_t *addr1, + U16 Reason, U8 vapId) { + U8 *body; + Frame_t *pf = pfrmDesc->mpdu; + + setFrameType(pf, subType); + pf->body = pfrmDesc->buffer; + body = pf->body; + setAddr1(pf, addr1); + setAddr2(pf, &dot11MacAddress); + setAddr3(pf, &mBssId); + pf->HdrLen = MAC_HDR_LNG; + + body[0] = Reason & 0xff; //Reason Code + body[1] = (Reason & 0xff00) >> 8; + + pf->bodyLen = 2; + } + + + void sendProbeRspFrm(MacAddr_t *addr1, U16 BcnInterval, U16 Cap, + Element *pSsid, Element *pSupRates, Element *pDsParms, + Element *pExtRates, Element *pWpa, U8 vapId) { + Signal_t *signal; + FrmDesc_t *pfrmDesc; + + if ((signal = allocSignal()) == NULL) + return; + + if ((pfrmDesc = allocFdesc()) == NULL) { + freeSignal(signal); + return; + } + + mkProbeRspFrm(pfrmDesc, addr1, BcnInterval, Cap, pSsid, pSupRates, pDsParms, + pExtRates, pWpa, vapId); + sendMgtFrame(signal, pfrmDesc); + } + + + void mkProbeReqFrm(FrmDesc_t* pfrmDesc, MacAddr_t *addr1, Element *pSsid, Element *pSupRates, + Element *pExtRates, Element *pWpa, U8 vapId) { + U8 *body; + U8 elemLen; + U16 len; + Frame_t *pf = pfrmDesc->mpdu; + + setFrameType(pf, ST_PROBE_REQ); + pf->body = pfrmDesc->buffer; + body = pf->body; + setAddr1(pf, addr1); + setAddr2(pf, &dot11MacAddress); + setAddr3(pf, &dot11BCAddress); + pf->HdrLen = MAC_HDR_LNG; + + len = 0; + if (pSsid->buf[1] > 0) { + elemLen = pSsid->buf[1]+2; + + memcpy(&body[len], (U8 *)pSsid, elemLen); //Extended rates + len += elemLen; + } else { + body[0] = pSsid->buf[0]; + body[1] = 0; //broadcast SSID + len += 2; + } + + elemLen = pSupRates->buf[1]+2; + memcpy(&body[len], (U8 *)pSupRates, elemLen); //Extended rates + len += elemLen; + + if ((mMacMode != PURE_A_MODE) && (mMacMode != PURE_B_MODE) && (pExtRates)) { + elemLen = pExtRates->buf[1]+2; + memcpy(&body[len], (U8 *)pExtRates, elemLen); //Extended rates + len += elemLen; + } + + if ((mDynKeyMode == DYN_KEY_TKIP) && (pWpa)) { + elemLen = pWpa->buf[1]+2; + memcpy(&body[len], (U8 *)pWpa, elemLen); //WPA IE + len += elemLen; + } + + pf->bodyLen = len; + } + + + void mkRe_AsocReqFrm(FrmDesc_t* pfrmDesc, TypeSubtype subType, MacAddr_t *addr1, + U16 Cap, U16 LisInterval, MacAddr_t *oldAP, Element *pSsid, Element *pSupRates, + Element *pExtRates, Element *pWpa, U8 vapId) + { + U8 *body; + U8 elemLen; + U16 len; + Frame_t *pf = pfrmDesc->mpdu; + + setFrameType(pf, subType); + pf->body = pfrmDesc->buffer; + body = pf->body; + setAddr1(pf, addr1); + setAddr2(pf, &dot11MacAddress); + setAddr3(pf, &mBssId); + pf->HdrLen = MAC_HDR_LNG; + + body[0] = Cap & 0xff; //Cap + body[1] = (Cap & 0xff00) >> 8; + body[2] = LisInterval & 0xff; //LisInterval + body[3] = (LisInterval & 0xff00) >> 8; + len = 4; + + if (subType == ST_REASOC_REQ) { + memcpy(&body[4], oldAP, 6); + len = 10; + } + + elemLen = pSsid->buf[1]+2; + memcpy(&body[len], (U8 *)pSsid, elemLen); //SSID + len += elemLen; -void mkProbeReqFrm(FrmDesc_t* pfrmDesc, MacAddr_t *addr1, Element *pSsid, Element *pSupRates, - Element *pExtRates, Element *pWpa, U8 vapId) -{ - U8 *body; - U8 elemLen; - U16 len; - Frame_t *pf = pfrmDesc->mpdu; - - pf->header[2] = pf->header[3] = 0; // Initialize them to something? - setFrameType(pf, ST_PROBE_REQ); - pf->body = pfrmDesc->buffer; - body = pf->body; - setAddr1(pf, addr1); - setAddr2(pf, &dot11MacAddress); - setAddr3(pf, &dot11BCAddress); - pf->HdrLen = MAC_HDR_LNG; - - len = 0; - if (pSsid->buf[1] > 0) { - elemLen = pSsid->buf[1]+2; - - memcpy(&body[len], (U8 *)pSsid, elemLen); //Extended rates - len += elemLen; - } else { - body[0] = pSsid->buf[0]; - body[1] = 0; //broadcast SSID - len += 2; - } - - elemLen = pSupRates->buf[1]+2; - memcpy(&body[len], (U8 *)pSupRates, elemLen); //Extended rates - len += elemLen; - - if ((mMacMode != PURE_B_MODE) && (pExtRates)) { - elemLen = pExtRates->buf[1]+2; - memcpy(&body[len], (U8 *)pExtRates, elemLen); //Extended rates - len += elemLen; - } - - if ((mDynKeyMode == DYN_KEY_TKIP) && (pWpa)) { - elemLen = pWpa->buf[1]+2; - memcpy(&body[len], (U8 *)pWpa, elemLen); //WPA IE - len += elemLen; - } - - pf->bodyLen = len; -} - -void mkRe_AsocReqFrm(FrmDesc_t* pfrmDesc, TypeSubtype subType, MacAddr_t *addr1, - U16 Cap, U16 LisInterval, MacAddr_t *oldAP, Element *pSsid, - Element *pSupRates, Element *pExtRates, Element *pWpa, U8 vapId) -{ - U8 *body; - U8 elemLen; - U16 len; - Frame_t *pf = pfrmDesc->mpdu; - - setFrameType(pf, subType); - pf->body = pfrmDesc->buffer; - body = pf->body; - setAddr1(pf, addr1); - setAddr2(pf, &dot11MacAddress); - setAddr3(pf, &mBssId); - pf->HdrLen = MAC_HDR_LNG; - - body[0] = Cap & 0xff; //Cap - body[1] = (Cap & 0xff00) >> 8; - body[2] = LisInterval & 0xff; //LisInterval - body[3] = (LisInterval & 0xff00) >> 8; - len = 4; - - if (subType == ST_REASOC_REQ) { - memcpy(&body[4], oldAP, 6); - len = 10; - } - - elemLen = pSsid->buf[1]+2; - memcpy(&body[len], (U8 *)pSsid, elemLen); //SSID - len += elemLen; - - elemLen = pSupRates->buf[1]+2; - memcpy(&body[len], (U8 *)pSupRates, elemLen); //Support Rates - len += elemLen; - - if ((mMacMode != PURE_B_MODE) && (pExtRates)) { - elemLen = pExtRates->buf[1]+2; - memcpy(&body[len], (U8 *)pExtRates, elemLen); //Extended rates - len += elemLen; - } +#ifdef DEBUG_DUMP_ASSOC_REQ - pf->bodyLen = len; -} + zd1205_dump_data("SSID element:", (U8*) &body[len-elemLen], elemLen); +#endif -BOOLEAN sendPsPollFrame(Signal_t *signal, FrmDesc_t *pfrmDesc, MacAddr_t *addr1, U16 aid) -{ - FrmInfo_t *pfrmInfo; - Frame_t *pf = pfrmDesc->mpdu; + elemLen = pSupRates->buf[1]+2; + memcpy(&body[len], (U8 *)pSupRates, elemLen); //Support Rates + len += elemLen; +#ifdef DEBUG_DUMP_ASSOC_REQ - setFrameType(pf, ST_PS_POLL); - setAid(pf, aid); - setAddr1(pf, addr1); - setAddr2(pf, &dot11MacAddress); - pf->HdrLen = 16; - pf->bodyLen = 0; - - pfrmDesc->ConfigSet |= PS_POLL_SET; - pfrmDesc->ConfigSet &= ~INTRA_BSS_SET; - pfrmDesc->ConfigSet &= ~EAPOL_FRAME_SET; - pfrmDesc->pHash = NULL; - signal->buf = NULL; - signal->bDataFrm = 0; - //pfrmDesc->bDataFrm = 0; - - pfrmInfo = &signal->frmInfo; - pfrmInfo->frmDesc = pfrmDesc; //make connection for signal and frmDesc - return SendPkt(signal, pfrmDesc, TRUE); -} + zd1205_dump_data("SupportedRate element:", (U8*) &body[len-elemLen], elemLen); +#endif -BOOLEAN sendNullDataFrame(Signal_t *signal, FrmDesc_t *pfrmDesc, MacAddr_t *addr1) -{ - Frame_t *pf = pfrmDesc->mpdu; + if ((mMacMode != PURE_B_MODE) && (mMacMode != PURE_A_MODE)&& (pExtRates)) { + elemLen = pExtRates->buf[1]+2; + memcpy(&body[len], (U8 *)pExtRates, elemLen); //Extended rates + len += elemLen; + } + + // WPA IE + if (pWpa->buf[1] != 0) { + elemLen = pWpa->buf[1]+2; + memcpy(&body[len], (U8 *)pWpa, elemLen); // WPA IE + len += elemLen; + } + + pf->bodyLen = len; + } + + BOOLEAN sendPsPollFrame(Signal_t *signal, FrmDesc_t *pfrmDesc, MacAddr_t *addr1, U16 aid) { + FrmInfo_t *pfrmInfo; + Frame_t *pf = pfrmDesc->mpdu; + + setFrameType(pf, ST_PS_POLL); + setAid(pf, aid); + setAddr1(pf, addr1); + setAddr2(pf, &dot11MacAddress); + pf->HdrLen = 16; + pf->bodyLen = 0; + + pfrmDesc->ConfigSet |= PS_POLL_SET; + pfrmDesc->ConfigSet &= ~INTRA_BSS_SET; + pfrmDesc->ConfigSet &= ~EAPOL_FRAME_SET; + pfrmDesc->pHash = NULL; + signal->buf = NULL; + signal->bDataFrm = 0; + //pfrmDesc->bDataFrm = 0; + + pfrmInfo = &signal->frmInfo; + pfrmInfo->frmDesc = pfrmDesc; //make connection for signal and frmDesc + return SendPkt(signal, pfrmDesc, TRUE); + } + + + BOOLEAN sendNullDataFrame(Signal_t *signal, FrmDesc_t *pfrmDesc, MacAddr_t *addr1) { + Frame_t *pf = pfrmDesc->mpdu; + + setFrameType(pf, ST_NULL_FRAME); + pf->header[1] = TO_DS_BIT; + + if (mPwrState) { + pf->header[1] |= PW_SAVE_BIT; + } else + pf->header[1] &= ~PW_SAVE_BIT; + + setAddr1(pf, addr1); + setAddr2(pf, &dot11MacAddress); + setAddr3(pf, &mBssId); + pf->HdrLen = MAC_HDR_LNG; + pf->bodyLen = 0; + + pfrmDesc->ConfigSet &= ~INTRA_BSS_SET; + pfrmDesc->ConfigSet &= ~EAPOL_FRAME_SET; + pfrmDesc->pHash = NULL; + signal->buf = NULL; + signal->bDataFrm = 1; + + //pfrmDesc->bDataFrm = 0; + mkFragment(signal, pfrmDesc, NULL); + return SendPkt(signal, pfrmDesc, TRUE); + } - setFrameType(pf, ST_NULL_FRAME); - pf->header[1] = TO_DS_BIT; - if (mPwrState) { - pf->header[1] |= PW_SAVE_BIT; - } else - pf->header[1] &= ~PW_SAVE_BIT; - - setAddr1(pf, addr1); - setAddr2(pf, &dot11MacAddress); - setAddr3(pf, &mBssId); - pf->HdrLen = MAC_HDR_LNG; - pf->bodyLen = 0; - - pfrmDesc->ConfigSet &= ~INTRA_BSS_SET; - pfrmDesc->ConfigSet &= ~EAPOL_FRAME_SET; - pfrmDesc->pHash = NULL; - signal->buf = NULL; - signal->bDataFrm = 1; - - //pfrmDesc->bDataFrm = 0; - mkFragment(signal, pfrmDesc, NULL); - return SendPkt(signal, pfrmDesc, TRUE); -} -U8 RateConvert(U8 rate) -{ + U8 RateConvert(U8 rate) { #if defined(OFDM) - switch (rate) { - case 2: return 0; // 1M - case 4: return 1; // 2M - case 11: return 2; // 5.5M - case 22: return 3; // 11M - case 12: return 4; // 6M - case 18: return 5; // 9M - case 24: return 6; // 12M - case 36: return 7; // 18M - case 48: return 8; // 24M - case 72: return 9; // 36M - case 96: return 0xa; // 48M - case 108: return 0xb; // 54M - } + switch (rate) { + case 2 : + return 0; // 1M + case 4 : + return 1; // 2M + case 11 : + return 2; // 5.5M + case 22 : + return 3; // 11M + case 12 : + return 4; // 6M + case 18 : + return 5; // 9M + case 24 : + return 6; // 12M + case 36 : + return 7; // 18M + case 48 : + return 8; // 24M + case 72 : + return 9; // 36M + case 96 : + return 0xa; // 48M + case 108: + return 0xb; // 54M + } #else - switch (rate) { - case 2: return 0; // 1M - case 4: return 1; // 2M - case 11: return 2; // 5.5M - case 22: return 3; // 11M - case 33: return 4; // 16.5M - case 44: return 5; // 22M - case 55: return 6; // 27.5M + switch (rate) { + case 2 : + return 0; // 1M + case 4 : + return 1; // 2M + case 11 : + return 2; // 5.5M + case 22 : + return 3; // 11M + case 33 : + return 4; // 16.5M + case 44 : + return 5; // 22M + case 55 : + return 6; // 27.5M #if defined(ECCK_60_5) - case 66: return 7; // 33M - case 77: return 8; // 38.5M - case 88: return 9; // 44M - case 99: return 10; // 49.5M - case 110: return 11; // 55M - case 121: return 12; // 60.5M + + case 66 : + return 7; // 33M + case 77 : + return 8; // 38.5M + case 88 : + return 9; // 44M + case 99 : + return 10; // 49.5M + case 110: + return 11; // 55M + case 121: + return 12; // 60.5M #endif - } + + } +#endif + + return 3; // 11M + } #endif - return 3; // 11M -} --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdpsmon.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdpsmon.c @@ -1,32 +1,10 @@ -/* $Id: zdpsmon.c,v 1.10 2005/03/27 20:47:39 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +#ifndef __ZDPSMON_C__ +#define __ZDPSMON_C__ #include "zd80211.h" -#include "zd1205.h" +#include "zddebug.h" -#define GetEntry(pMac) (((pMac->mac[3]) ^ (pMac->mac[4]) ^ (pMac->mac[5])) & (MAX_AID-1)) +#define GetEntry(pMac) (((pMac->mac[3]) ^ (pMac->mac[4]) ^ (pMac->mac[5])) & (MAX_AID-1)) Hash_t *FreeHashList; Hash_t HashBuf[MAX_RECORD]; @@ -34,711 +12,1034 @@ Hash_t *sstByAid[MAX_RECORD]; U32 freeHashCount; +extern void zd1205_config_dyn_key(u8 DynKeyMode, u8 *pkey, int idx); Hash_t *HashInsert(MacAddr_t *pMac); void CleanupHash(Hash_t *hash) { - memset(hash->mac, 0, 6); - hash->asoc = STATION_STATE_DIS_ASOC; - hash->auth = STATION_STATE_NOT_AUTH; - hash->psm = PSMODE_STA_ACTIVE; - hash->encryMode = WEP_NOT_USED; - hash->ZydasMode = 0; - hash->pkInstalled = 0; - hash->AlreadyIn = 0; - hash->ContSuccFrames = 0; - hash->ttl = 0; - hash->bValid = FALSE; - hash->Preamble = 0; - hash->keyLength = 0; - hash->KeyId = 0; - memset(hash->wepIv, 0, 4); - memset(&hash->TxSeed, 0, sizeof(Seedvar)); - memset(&hash->RxSeed, 0, sizeof(Seedvar)); - memset(&hash->TxMicKey, 0, sizeof(MICvar)); - memset(&hash->RxMicKey, 0, sizeof(MICvar)); - hash->SuccessFrames = 0; - hash->FailedFrames = 0; - hash->bJustRiseRate = FALSE; - hash->RiseConditionCount = 0; - hash->DownConditionCount = 0; - hash->vapId = 0; + memset(hash->mac, 0, 6); + hash->asoc = STATION_STATE_DIS_ASOC; + hash->auth = STATION_STATE_NOT_AUTH; + hash->psm = PSMODE_STA_ACTIVE; + hash->encryMode = WEP_NOT_USED; + hash->ZydasMode = 0; + hash->pkInstalled = 0; + hash->AlreadyIn = 0; + hash->ContSuccFrames = 0; + hash->ttl = 0; + hash->bValid = FALSE; + hash->Preamble = 0; + hash->keyLength = 0; + hash->KeyId = 0; + memset(hash->wepIv, 0, 4); + memset(&hash->TxSeed, 0, sizeof(Seedvar)); + memset(&hash->RxSeed, 0, sizeof(Seedvar)); + memset(&hash->TxMicKey, 0, sizeof(MICvar)); + memset(&hash->RxMicKey, 0, sizeof(MICvar)); + hash->SuccessFrames = 0; + hash->FailedFrames = 0; + hash->bJustRiseRate = FALSE; + hash->RiseConditionCount = 0; + hash->DownConditionCount = 0; + hash->vapId = 0; #if defined(OFDM) - hash->bErpSta = TRUE; + + hash->bErpSta = TRUE; #else - hash->bErpSta = FALSE; -#endif + + hash->bErpSta = FALSE; +#endif } + void CleanupKeyInfo(Hash_t *hash) { - hash->encryMode = WEP_NOT_USED; - hash->pkInstalled = 0; - hash->keyLength = 0; - hash->KeyId = 0; - memset(hash->wepIv, 0, 4); - memset(&hash->TxSeed, 0, sizeof(Seedvar)); - memset(&hash->RxSeed, 0, sizeof(Seedvar)); - memset(&hash->TxMicKey, 0, sizeof(MICvar)); - memset(&hash->RxMicKey, 0, sizeof(MICvar)); + hash->encryMode = WEP_NOT_USED; + hash->pkInstalled = 0; + hash->keyLength = 0; + hash->KeyId = 0; + memset(hash->wepIv, 0, 4); + memset(&hash->TxSeed, 0, sizeof(Seedvar)); + memset(&hash->RxSeed, 0, sizeof(Seedvar)); + memset(&hash->TxMicKey, 0, sizeof(MICvar)); + memset(&hash->RxMicKey, 0, sizeof(MICvar)); } + void initHashBuf(void) { - int i; + int i; - freeHashCount = MAX_RECORD; + freeHashCount = MAX_RECORD; - for (i=0; iEnterCS(); - if (FreeHashList != NULL) { - hash = FreeHashList; - FreeHashList = FreeHashList->pNext; - hash->pNext = NULL; - freeHashCount--; - } - pdot11Obj->ExitCS(flags); - return hash; + Hash_t *hash = NULL; + /* ath_desc: AMD64 support */ + unsigned long flags; + + //HSDEBUG("*****allocHashBuf*****"); + flags = pdot11Obj->EnterCS(); + if (FreeHashList != NULL) { + hash = FreeHashList; + FreeHashList = FreeHashList->pNext; + hash->pNext = NULL; + freeHashCount--; + } + pdot11Obj->ExitCS(flags); + return hash; } + + void freeHashBuf(Hash_t *hash) { - U32 flags; - - //HSDEBUG("*****freeHashBuf*****"); - flags = pdot11Obj->EnterCS(); - if (hash->AlreadyIn) { - if (mCurrConnUser > 0) - mCurrConnUser--; - } - - if (hash->psm == PSMODE_POWER_SAVE) { - if (mPsStaCnt > 0) - mPsStaCnt--; - } + unsigned long flags; + + //HSDEBUG("*****freeHashBuf*****"); + flags = pdot11Obj->EnterCS(); + if (hash->AlreadyIn) { + if (mCurrConnUser > 0) + mCurrConnUser--; + if (hash->bErpSta == FALSE && mNumBOnlySta > 0) { + mNumBOnlySta--; + if (mNumBOnlySta==0) { + pdot11Obj->ConfigFlag &= ~NON_ERP_PRESENT_SET; + mErp.buf[2] &= ~NON_ERP_PRESENT; + } + } + } + + if (hash->psm == PSMODE_POWER_SAVE) { + if (mPsStaCnt > 0) + mPsStaCnt--; + } #if defined(AMAC) - HW_CAM_ClearRollTbl(pdot11Obj, hash->aid); + HW_CAM_ClearRollTbl(pdot11Obj, hash->aid); #endif - - CleanupHash(hash); - hash->pNext = FreeHashList; - FreeHashList = hash; - freeHashCount++; - pdot11Obj->ExitCS(flags); + + CleanupHash(hash); + hash->pNext = FreeHashList; + FreeHashList = hash; + freeHashCount++; + pdot11Obj->ExitCS(flags); } + void InitHashTbl(void) { - int i; - - for (i=0; iEnterCS(); - if (HashTbl[entry] == NULL) { - goto exit; - } else { - hash = HashTbl[entry]; - do { - if (memcmp(hash->mac, (U8 *)pMac, 6) == 0) { - //HSDEBUG("Search got one"); - goto exit; - } else - hash = hash->pNext; - } while (hash != NULL); - } - + U8 entry; + Hash_t *hash = NULL; + unsigned long flags; + + if (mBssType == INFRASTRUCTURE_BSS) { + if (memcmp(&mBssId, pMac, 6) != 0) { + return NULL; + } else + return sstByAid[0]; + } + + //HSDEBUG("HashSearch"); + entry = GetEntry(pMac); + flags = pdot11Obj->EnterCS(); + if (HashTbl[entry] == NULL) { + goto exit; + } else { + hash = HashTbl[entry]; + do { + if (memcmp(hash->mac, (U8 *)pMac, 6) == 0) { + //HSDEBUG("Search got one"); + goto exit; + } else + hash = hash->pNext; + + } while(hash != NULL); + } + exit: - pdot11Obj->ExitCS(flags); - if (hash) { - } else - ;//HSDEBUG("Search no one"); + pdot11Obj->ExitCS(flags); + if (hash) { +#if 0 + printf("macaddr = %02x:%02x:%02x:%02x:%02x:%02x\n", + hash->mac[0], hash->mac[1], hash->mac[2], + hash->mac[3], hash->mac[4], hash->mac[5]); + printf("asoc = %x\n", hash->asoc); + printf("auth = %x\n", hash->auth); + printf("psm = %x\n", hash->psm); + printf("aid = %x\n", hash->aid); + printf("lsInterval = %x\n", hash->lsInterval); +#endif + + } else + ;//HSDEBUG("Search no one"); - return hash; + return hash; } + + + + + Hash_t *HashInsert(MacAddr_t *pMac) { - U8 entry; - Hash_t *hash; - U32 flags; - - HSDEBUG("HashInsert"); - - if (mBssType == INFRASTRUCTURE_BSS) { - hash = sstByAid[0]; - memcpy(hash->mac, (U8 *)pMac, 6); - hash->ttl = HW_GetNow(pdot11Obj); - hash->bValid = TRUE; - return hash; - } - - hash = allocHashBuf(); - if (!hash) { - HSDEBUG("No free one"); - //Age Hash table - AgeHashTbl(); - return NULL; // no free one - } else { - entry = GetEntry(pMac); - HSDEBUG_V("entry", entry); - - if (HashTbl[entry] == NULL) { //entry is null - HashTbl[entry] = hash; - HSDEBUG("Entry is null"); - } else { //insert list head - flags = pdot11Obj->EnterCS(); - hash->pNext = HashTbl[entry]; - HashTbl[entry] = hash; - pdot11Obj->ExitCS(flags); - HSDEBUG("Insert to list head"); - } - - memcpy(hash->mac, (U8 *)pMac, 6); - hash->ttl = HW_GetNow(pdot11Obj); - hash->bValid = TRUE; - return hash; - } + U8 entry; + Hash_t *hash; + unsigned long flags; + + HSDEBUG("HashInsert"); + + if (mBssType == INFRASTRUCTURE_BSS) { + hash = sstByAid[0]; + memcpy(hash->mac, (U8 *)pMac, 6); + hash->ttl = HW_GetNow(pdot11Obj); + hash->bValid = TRUE; + return hash; + } + + hash = allocHashBuf(); + if (!hash) { + HSDEBUG("No free one"); + //Age Hash table + AgeHashTbl(); + return NULL; // no free one + } else { + entry = GetEntry(pMac); + HSDEBUG_V("entry", entry); + + if (HashTbl[entry] == NULL) { //entry is null + HashTbl[entry] = hash; + HSDEBUG("Entry is null"); + } else { //insert list head + flags = pdot11Obj->EnterCS(); + hash->pNext = HashTbl[entry]; + HashTbl[entry] = hash; + pdot11Obj->ExitCS(flags); + HSDEBUG("Insert to list head"); + } + + memcpy(hash->mac, (U8 *)pMac, 6); + hash->ttl = HW_GetNow(pdot11Obj); + hash->bValid = TRUE; + return hash; + } } + BOOLEAN AgeHashTbl(void) { - U32 now, ttl, idleTime; - U8 entry, firstLayer; - int i; - MacAddr_t *pMac; - Hash_t *hash, *preHash = NULL; - BOOLEAN ret = FALSE; - - HSDEBUG("*****AgeHashTbl*****"); - now = HW_GetNow(pdot11Obj); - - for (i=1; i<(MAX_AID+1); i++) { - ttl = sstByAid[i]->ttl; - if (now > ttl) - idleTime = now - ttl; - else - idleTime = (0xffffffff - ttl) + now; - - if (sstByAid[i]->bValid) { - if (idleTime > IDLE_TIMEOUT ) { - HSDEBUG("*****Age one*****"); - HSDEBUG_V("aid", i); - HSDEBUG_V("now", now); - HSDEBUG_V("ttl", ttl); - HSDEBUG_V("idleTime", idleTime); - - pMac = (MacAddr_t *)&sstByAid[i]->mac[0]; - entry = GetEntry(pMac); - HSDEBUG_V("entry", entry); - hash = HashTbl[entry]; - firstLayer = 1; - do { - if (hash == sstByAid[i]) { - if (firstLayer == 1) { - HSDEBUG("*****firstLayer*****"); - if (hash->pNext != NULL) - HashTbl[entry] = hash->pNext; - else - HashTbl[entry] = NULL; - } else { - HSDEBUG("*****Not firstLayer*****"); - preHash->pNext = hash->pNext; - } - zd_CmdProcess(CMD_DISASOC, &hash->mac[0], ZD_INACTIVITY); - freeHashBuf(hash); - break; - } else { - preHash = hash; - hash = hash->pNext; - firstLayer = 0; - } - } while (hash != NULL); - ret = TRUE; - } else { - if (sstByAid[i]->ZydasMode == 1) - mZyDasModeClient = TRUE; - - if (sstByAid[i]->bErpSta == FALSE) { - pdot11Obj->ConfigFlag |= NON_ERP_PRESENT_SET; - pdot11Obj->ConfigFlag |= ENABLE_PROTECTION_SET; - if (sstByAid[i]->Preamble == 0) { //long preamble - pdot11Obj->ConfigFlag |= BARKER_PREAMBLE_SET; - } - } - } - } - } + U32 now, ttl, idleTime; + U8 entry, firstLayer; + + int i; + MacAddr_t *pMac; + Hash_t *hash, *preHash = NULL; + BOOLEAN ret = FALSE; + + HSDEBUG("*****AgeHashTbl*****"); + now = HW_GetNow(pdot11Obj); + + for (i=1; i<(MAX_AID+1); i++) { + ttl = sstByAid[i]->ttl; + if (now > ttl) + idleTime = now - ttl; + else + idleTime = (0xffffffff - ttl) + now; + + + if (sstByAid[i]->bValid) { + if (idleTime > IDLE_TIMEOUT ) { + HSDEBUG("*****Age one*****"); + HSDEBUG_V("aid", i); + HSDEBUG_V("now", now); + HSDEBUG_V("ttl", ttl); + HSDEBUG_V("idleTime", idleTime); + + pMac = (MacAddr_t *)&sstByAid[i]->mac[0]; + entry = GetEntry(pMac); + HSDEBUG_V("entry", entry); + hash = HashTbl[entry]; + firstLayer = 1; + do { + if (hash == sstByAid[i]) { + if (firstLayer == 1) { + HSDEBUG("*****firstLayer*****"); + if (hash->pNext != NULL) + HashTbl[entry] = hash->pNext; + else + HashTbl[entry] = NULL; + } else { + HSDEBUG("*****Not firstLayer*****"); + preHash->pNext = hash->pNext; + } + zd_CmdProcess(CMD_DISASOC, &hash->mac[0], ZD_INACTIVITY); + freeHashBuf(hash); + break; + } else { + preHash = hash; + hash = hash->pNext; + firstLayer = 0; + } + } while(hash != NULL); + ret = TRUE; + } else { + if (sstByAid[i]->ZydasMode == 1) + mZyDasModeClient = TRUE; + + if (sstByAid[i]->bErpSta == FALSE && mMacMode != PURE_A_MODE) { + pdot11Obj->ConfigFlag |= NON_ERP_PRESENT_SET; + pdot11Obj->ConfigFlag |= ENABLE_PROTECTION_SET; + if (sstByAid[i]->Preamble == 0) { //long preamble + pdot11Obj->ConfigFlag |= BARKER_PREAMBLE_SET; + } + } + } + } - //HSDEBUG_V("ret", ret); - return ret; + } + + //HSDEBUG_V("ret", ret); + return ret; } - + + void ResetPSMonitor(void) { - ZDEBUG("ResetPSMonitor"); - initHashBuf(); - InitHashTbl(); - mPsStaCnt = 0; + ZDEBUG("ResetPSMonitor"); + initHashBuf(); + InitHashTbl(); + mPsStaCnt = 0; } + Hash_t *RxInfoIndicate(MacAddr_t *sta, PsMode psm, U8 rate) { - Hash_t *pHash; - - ZDEBUG("RxInfoIndicate"); - - //if (isGroup(sta)) - //return NULL; - - pHash = HashSearch(sta); - if (!pHash) { - if (mBssType == PSEUDO_IBSS) { - pHash = HashInsert(sta); - if (!pHash) - return NULL; - else { - pHash->asoc = STATION_STATE_ASOC; - zd1205_dump_data(" HashInsert macAddr = ", (U8 *)&pHash->mac[0], 6); - goto updateInfo; - } - } else - return NULL; - } else { - PsMode oldPsm = pHash->psm; - StationState asoc = pHash->asoc; + Hash_t *pHash; + + ZDEBUG("RxInfoIndicate"); + + //if (isGroup(sta)) + //return NULL; + pHash = HashSearch(sta); + if (!pHash) { + if (mBssType == PSEUDO_IBSS) { + pHash = HashInsert(sta); + if (!pHash) + return NULL; + else { + pHash->asoc = STATION_STATE_ASOC; + zd1205_dump_data(" HashInsert macAddr = ", (U8 *)&pHash->mac[0], 6); + goto updateInfo; + } + } else + return NULL; + } else { updateInfo: - if (rate > pHash->MaxRate) - pHash->MaxRate = rate; + if (rate > pHash->MaxRate) + pHash->MaxRate = rate; - pHash->RxRate = rate; - pHash->ttl = HW_GetNow(pdot11Obj); + pHash->RxRate = rate; + pHash->ttl = HW_GetNow(pdot11Obj); - if (mBssType == AP_BSS) { - if (psm == PSMODE_STA_ACTIVE) { - if (oldPsm == PSMODE_POWER_SAVE) { - StaWakeup(sta); - if (asoc == STATION_STATE_ASOC) { - if (mPsStaCnt >0) { - mPsStaCnt--; - } - } - } - } else { - if (oldPsm == PSMODE_STA_ACTIVE) { - if (asoc == STATION_STATE_ASOC) { - if (mPsStaCnt < MAX_AID) { - mPsStaCnt++; - } - } - } else if (oldPsm == PSMODE_POWER_SAVE) { - if (asoc == STATION_STATE_ASOC) { - if (mPsStaCnt == 0) - mPsStaCnt++; - } - } - } - } - pHash->psm = psm; - } + if (mBssType == AP_BSS) { + PsMode oldPsm = pHash->psm; + StationState asoc = pHash->asoc; + + if (psm == PSMODE_STA_ACTIVE) { + if (oldPsm == PSMODE_POWER_SAVE) { + StaWakeup(sta); + if (asoc == STATION_STATE_ASOC) { + if (mPsStaCnt >0) { + mPsStaCnt--; + } + } + } + } else { + if (oldPsm == PSMODE_STA_ACTIVE) { + if (asoc == STATION_STATE_ASOC) { + if (mPsStaCnt < MAX_AID) { + mPsStaCnt++; + } + } + } else if (oldPsm == PSMODE_POWER_SAVE) { + if (asoc == STATION_STATE_ASOC) { + if (mPsStaCnt == 0) + mPsStaCnt++; + } + } + } + } - return pHash; + pHash->psm = psm; + } + + return pHash; } + void RxInfoUpdate(Hash_t *pHash, PsMode psm, U8 rate) { - PsMode oldPsm = pHash->psm; - StationState asoc = pHash->asoc; + PsMode oldPsm = pHash->psm; + StationState asoc = pHash->asoc; + + if (rate > pHash->MaxRate) + pHash->MaxRate = rate; - if (rate > pHash->MaxRate) - pHash->MaxRate = rate; + pHash->RxRate = rate; + pHash->ttl = HW_GetNow(pdot11Obj); - pHash->RxRate = rate; - pHash->ttl = HW_GetNow(pdot11Obj); + if (psm == PSMODE_STA_ACTIVE) { + if (oldPsm == PSMODE_POWER_SAVE) { + StaWakeup((MacAddr_t *)pHash->mac); + if (asoc == STATION_STATE_ASOC) { + if (mPsStaCnt >0) { + mPsStaCnt--; + } + } + } + } else { + if (oldPsm == PSMODE_STA_ACTIVE) { + if (asoc == STATION_STATE_ASOC) { + if (mPsStaCnt < MAX_AID) { + mPsStaCnt++; + } + } + } else if (oldPsm == PSMODE_POWER_SAVE) { + if (asoc == STATION_STATE_ASOC) { + if (mPsStaCnt == 0) + mPsStaCnt++; + } - if (psm == PSMODE_STA_ACTIVE) { - if (oldPsm == PSMODE_POWER_SAVE) { - StaWakeup((MacAddr_t *)pHash->mac); - if (asoc == STATION_STATE_ASOC) { - if (mPsStaCnt >0) { - mPsStaCnt--; - } - } - } - } else { - if (oldPsm == PSMODE_STA_ACTIVE) { - if (asoc == STATION_STATE_ASOC) { - if (mPsStaCnt < MAX_AID) { - mPsStaCnt++; - } - } - } else if (oldPsm == PSMODE_POWER_SAVE) { - if (asoc == STATION_STATE_ASOC) { - if (mPsStaCnt == 0) - mPsStaCnt++; - } - } - } - - pHash->psm = psm; + } + } + + + pHash->psm = psm; } + BOOLEAN UpdateStaStatus(MacAddr_t *sta, StationState staSte, U8 vapId) { - Hash_t *pHash; - - ZDEBUG("UpdateStaStatus"); - - if (mBssType == AP_BSS) { - pHash = HashSearch(sta); - if (pHash) - goto UpdateStatus; - else { - if ((STATION_STATE_AUTH_OPEN == staSte) || (STATION_STATE_AUTH_KEY == staSte)) { - if ((mCurrConnUser + 1) > mLimitedUser) { - //AgeHashTbl(); - return FALSE; - } else { - pHash = HashInsert(sta); - if (!pHash) - return FALSE; - } - } else - return FALSE; - } - } else if (mBssType == INFRASTRUCTURE_BSS) { - if ((STATION_STATE_AUTH_OPEN == staSte) || (STATION_STATE_AUTH_KEY == staSte)) { - CleanupHash(sstByAid[0]); - pHash = HashInsert(sta); - } else { - pHash = sstByAid[0]; //use aid = 0 to store AP's info - } - } else if (mBssType == INDEPENDENT_BSS) { - pHash = HashSearch(sta); - if (pHash) - goto UpdateStatus; - else { - pHash = HashInsert(sta); - if (!pHash) - return FALSE; - else - zd1205_dump_data(" HashInsert macAddr = ", (U8 *)&pHash->mac[0], 6); - } - } else - return FALSE; + Hash_t *pHash; + + ZDEBUG("UpdateStaStatus"); + + if (mBssType == AP_BSS) { + pHash = HashSearch(sta); + if (pHash) + goto UpdateStatus; + else { + if ((STATION_STATE_AUTH_OPEN == staSte) || (STATION_STATE_AUTH_KEY == staSte)) { + if ((mCurrConnUser + 1) > mLimitedUser) { + //AgeHashTbl(); + return FALSE; + } else { + pHash = HashInsert(sta); + if (!pHash) + return FALSE; + } + } else + return FALSE; + } + } else if (mBssType == INFRASTRUCTURE_BSS) { + if ((STATION_STATE_AUTH_OPEN == staSte) || (STATION_STATE_AUTH_KEY == staSte)) { + CleanupHash(sstByAid[0]); + pHash = HashInsert(sta); + } else { + pHash = sstByAid[0]; //use aid = 0 to store AP's info + } + } else if (mBssType == INDEPENDENT_BSS) { + pHash = HashSearch(sta); + if (pHash) + goto UpdateStatus; + else { + pHash = HashInsert(sta); + if (!pHash) + return FALSE; + else + zd1205_dump_data(" HashInsert macAddr = ", (U8 *)&pHash->mac[0], 6); + } + } else + return FALSE; UpdateStatus: - switch(staSte) { - case STATION_STATE_AUTH_OPEN: - case STATION_STATE_AUTH_KEY: - pHash->auth = staSte; - break; - - case STATION_STATE_ASOC: - if (mBssType == AP_BSS) { - if (((mCurrConnUser + 1) > mLimitedUser) && (!pHash->AlreadyIn)) { - return FALSE; - } - - if (pHash->psm == PSMODE_POWER_SAVE) { - if (mPsStaCnt > 0) { - mPsStaCnt--; - } - } - - pHash->asoc = STATION_STATE_ASOC; - if (!pHash->AlreadyIn) { - pHash->AlreadyIn = 1; - mCurrConnUser++; - } - } else { - pHash->asoc = STATION_STATE_ASOC; - } - - if (mBssType != INDEPENDENT_BSS) - CleanupKeyInfo(pHash); - - memcpy(&pdot11Obj->CurrSsid[0], (U8 *)&mSsid, mSsid.buf[1]+2); - break; - - case STATION_STATE_NOT_AUTH: - case STATION_STATE_DIS_ASOC: - if (mBssType == AP_BSS) { - if (pHash->asoc == STATION_STATE_ASOC) { - if (pHash->psm == PSMODE_POWER_SAVE) { - FlushQ(pPsQ[pHash->aid]); - if (mPsStaCnt > 0) { - mPsStaCnt--; - if (mPsStaCnt == 0) { - FlushQ(pAwakeQ); - FlushQ(pPsQ[0]); - } - } - } - if (pHash->AlreadyIn) { - pHash->AlreadyIn = 0; - mCurrConnUser--; - } - } - } - - pHash->auth = STATION_STATE_NOT_AUTH; - pHash->asoc = STATION_STATE_DIS_ASOC; - CleanupKeyInfo(pHash); - //for Rx-Retry filter - HW_CAM_ClearRollTbl(pdot11Obj, pHash->aid); - break; - } + switch(staSte) { + case STATION_STATE_AUTH_OPEN: + case STATION_STATE_AUTH_KEY: + pHash->auth = staSte; + break; + + case STATION_STATE_ASOC: + if (mBssType == AP_BSS) { + if (((mCurrConnUser + 1) > mLimitedUser) && (!pHash->AlreadyIn)) { + return FALSE; + } + + if (pHash->psm == PSMODE_POWER_SAVE) { + if (mPsStaCnt > 0) { + mPsStaCnt--; + } + + } + + pHash->asoc = STATION_STATE_ASOC; + /*if (!pHash->AlreadyIn){ + pHash->AlreadyIn = 1; + mCurrConnUser++; + }*/ + } else { + pHash->asoc = STATION_STATE_ASOC; + } + + if (mBssType != INDEPENDENT_BSS) + CleanupKeyInfo(pHash); + + memcpy(&pdot11Obj->CurrSsid[0], (U8 *)&mSsid, mSsid.buf[1]+2); + break; + + case STATION_STATE_NOT_AUTH: + case STATION_STATE_DIS_ASOC: + if (mBssType == AP_BSS) { + if (pHash->asoc == STATION_STATE_ASOC) { + if (pHash->psm == PSMODE_POWER_SAVE) { + FlushQ(pPsQ[pHash->aid]); + if (mPsStaCnt > 0) { + mPsStaCnt--; + if (mPsStaCnt == 0) { + FlushQ(pAwakeQ); + FlushQ(pPsQ[0]); + } + } + } + /*if (pHash->AlreadyIn){ + pHash->AlreadyIn = 0; + mCurrConnUser--; + }*/ + } + } + + pHash->auth = STATION_STATE_NOT_AUTH; + pHash->asoc = STATION_STATE_DIS_ASOC; + CleanupKeyInfo(pHash); + //for Rx-Retry filter + HW_CAM_ClearRollTbl(pdot11Obj, pHash->aid); + { + MacAddr_t *pMac; + Hash_t *sta_info; + U8 entry; + pMac = (MacAddr_t *) pHash->mac; + entry = GetEntry(pMac); + sta_info=HashTbl[entry]; + if (sta_info) { + if (memcmp(sta_info->mac, pHash->mac, 6)==0) { + HashTbl[entry]=sta_info->pNext; + freeHashBuf(pHash); + } else { + while (sta_info->pNext != NULL && memcmp(sta_info->pNext->mac, pHash->mac, 6) != 0) + sta_info = sta_info->pNext; + if (sta_info->pNext != NULL) { + Hash_t *sta_info1; + sta_info1 = sta_info->pNext; + sta_info->pNext = sta_info->pNext->pNext; + freeHashBuf(sta_info1); + } else { + printk(KERN_DEBUG "Could not remove STA:" MACSTR "\n", MAC2STR(pHash->mac)); + } + } + } + } + + break; - return TRUE; + } + + return TRUE; } + void SsInquiry(MacAddr_t *sta, StationState *sst, StationState *asst) { - ZDEBUG("SsInquiry"); - if (isGroup(sta)) { - *asst = STATION_STATE_NOT_AUTH; - *sst = STATION_STATE_DIS_ASOC; - } else { - Hash_t *pHash; - pHash = HashSearch(sta); - - if (!pHash) { - *asst = STATION_STATE_NOT_AUTH; - *sst = STATION_STATE_DIS_ASOC; - } else { - *asst = pHash->auth; - if ((*asst == STATION_STATE_AUTH_OPEN) || (*asst == STATION_STATE_AUTH_KEY)) - *sst = pHash->asoc; - else - *sst = STATION_STATE_DIS_ASOC; - } - } + ZDEBUG("SsInquiry"); + if (isGroup(sta)) { + *asst = STATION_STATE_NOT_AUTH; + *sst = STATION_STATE_DIS_ASOC; + } else { + Hash_t *pHash; + pHash = HashSearch(sta); + + if (!pHash) { + *asst = STATION_STATE_NOT_AUTH; + *sst = STATION_STATE_DIS_ASOC; + } else { + *asst = pHash->auth; + if ((*asst == STATION_STATE_AUTH_OPEN) || (*asst == STATION_STATE_AUTH_KEY)) + *sst = pHash->asoc; + else + *sst = STATION_STATE_DIS_ASOC; + } + } + } + U16 AIdLookup(MacAddr_t *sta) { - Hash_t *pHash; - - ZDEBUG("AIdLookup"); - pHash = HashSearch(sta); - if (!pHash) - return (U16)0; - else - return pHash->aid; + Hash_t *pHash; + + ZDEBUG("AIdLookup"); + pHash = HashSearch(sta); + if (!pHash) + return (U16)0; + else + return pHash->aid; } + void AssocInfoUpdate(MacAddr_t *sta, U8 MaxRate, U8 lsInterval, U8 ZydasMode, U8 Preamble, BOOLEAN bErpSta, U8 vapId) { - Hash_t *pHash; - - ZDEBUG("AssocInfoUpdate"); - if (isGroup(sta)) - return; - - pHash = HashSearch(sta); - if (!pHash) - return; - else{ - pHash->MaxRate = MaxRate; - pHash->CurrTxRate = MaxRate; - pHash->lsInterval = lsInterval; - pHash->ZydasMode = ZydasMode; - pHash->Preamble = Preamble; - pHash->bErpSta = bErpSta; - pHash->vapId = vapId; - } + Hash_t *pHash; + + ZDEBUG("AssocInfoUpdate"); + if (isGroup(sta)) + return; + + pHash = HashSearch(sta); + if (!pHash) + return; + else { + pHash->MaxRate = MaxRate; + pHash->CurrTxRate = MaxRate; + pHash->lsInterval = lsInterval; + pHash->ZydasMode = ZydasMode; + pHash->Preamble = Preamble; + pHash->bErpSta = bErpSta; + pHash->vapId = vapId; + } } int zd_SetKeyInfo(U8 *addr, U8 encryMode, U8 keyLength, U8 KeyId, U8 *pKeyContent) { - Hash_t *pHash; - MacAddr_t *sta = (MacAddr_t *)addr; - U8 KeyRsc[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - U8 bcAddr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; - U16 aid; - - ZDEBUG("SetKeyInfo"); - if (isGroup(sta)) { - mWpaBcKeyLen = keyLength; - - mWpaBcKeyId = KeyId; - if (encryMode == TKIP) { - //only vaild for Tx - if (mWpaBcKeyLen == 32) { -#if defined(AMAC) - if (mOperationMode != CAM_AP_VAP) { - //Tmep key(16), Tx Mic Key(8), Rx Mic Key(8) - HW_ConfigDynaKey(pdot11Obj, 0, &bcAddr[0], pKeyContent, 32, encryMode); - } else { - HW_ConfigDynaKey(pdot11Obj, CAM_VAP_START_AID, (U8 *)&dot11MacAddress, pKeyContent, 32, encryMode); - } -#else - Tkip_Init(pKeyContent, (U8 *)&dot11MacAddress, &mBcSeed, KeyRsc); //temp key -#endif - MICsetKey(&pKeyContent[16], &mBcMicKey); //Tx Mic key - } else { - // mixed mode or WEP group key -#if defined(AMAC) - if (mOperationMode != CAM_AP_VAP) { - HW_ConfigDynaKey(pdot11Obj, 0, &bcAddr[0], pKeyContent, 5, WEP64); - } else - HW_ConfigDynaKey(pdot11Obj, CAM_VAP_START_AID, (U8 *)&dot11MacAddress, pKeyContent, 5, WEP64); -#else - memcpy(&mBcKeyVector[0], pKeyContent, keyLength); -#endif - } - mGkInstalled = 1; - return 0; - } else if (encryMode == AES) { - if (mOperationMode != CAM_AP_VAP) { - HW_ConfigDynaKey(pdot11Obj, 0, &bcAddr[0], pKeyContent, 16, encryMode); - } else { - HW_ConfigDynaKey(pdot11Obj, CAM_VAP_START_AID, (U8 *)&dot11MacAddress, pKeyContent, 16, encryMode); - } - mGkInstalled = 1; - return 0; - } else { - return -1; - } - } - - pHash = HashSearch(sta); - if (!pHash) - return -1; - else { - pHash->encryMode = encryMode; - aid = pHash->aid; - if (encryMode == TKIP) { - //pHash->keyLength = 16; -#if defined(AMAC) - HW_ConfigDynaKey(pdot11Obj, aid, addr, pKeyContent, 32, encryMode); -#else - Tkip_Init(pKeyContent, (U8 *)&dot11MacAddress, &pHash->TxSeed, KeyRsc); - Tkip_Init(pKeyContent, addr, &pHash->RxSeed, KeyRsc); -#endif - MICsetKey(&pKeyContent[16], &pHash->TxMicKey); - MICsetKey(&pKeyContent[24], &pHash->RxMicKey); - pHash->KeyId = KeyId; - pHash->pkInstalled = 1; - } else if (encryMode == AES) { - HW_ConfigDynaKey(pdot11Obj, aid, addr, pKeyContent, 16, encryMode); - pHash->KeyId = KeyId; - pHash->pkInstalled = 1; - } else { - pHash->keyLength = keyLength; - pHash->KeyId = KeyId; -#if defined(AMAC) - HW_ConfigDynaKey(pdot11Obj, aid, addr, pKeyContent, keyLength, encryMode); -#else - memcpy(&pHash->keyContent[0], pKeyContent, keyLength); -#endif - } - return 0; - } + Hash_t *pHash; + MacAddr_t *sta = (MacAddr_t *)addr; + U8 bcAddr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + U8 ZeroAddr[6]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + U16 aid; + U8 change_enc = 0; + + if (isGroup(sta)) { + change_enc = 1; + if (keyLength == 0) { + WPADEBUG("Clear Group key RollTbl (aid0)\n"); + HW_CAM_ClearRollTbl(pdot11Obj, 0);//Clear group key.(aid0) + } else if (encryMode == WEP64 || encryMode == WEP128) { + + if (mWpaBcKeyLen == keyLength && mGkInstalled == 1) + change_enc = 0; // Nonfirst time group key update. + mWpaBcKeyLen = keyLength; + mBcKeyId = KeyId;// We tell KeyLength to hdwr by encryMode, while, the key ID is set by the driver when transmit packet. + + if (mOperationMode != CAM_AP_VAP) { + HW_ConfigDynaKey(pdot11Obj, 32, &bcAddr[0], pKeyContent, keyLength, encryMode, change_enc); + // Also set default key for Multicast case to avoid Tx-underrun. + HW_CAM_Write(pdot11Obj, DEFAULT_ENCRY_TYPE, encryMode); + HW_ConfigStatKey(pdot11Obj, pKeyContent, keyLength, STA_KEY_START_ADDR+(KeyId * 8)); + } else + HW_ConfigDynaKey(pdot11Obj, CAM_VAP_START_AID, (U8 *)&dot11MacAddress, pKeyContent, keyLength, encryMode,change_enc); + + mGkInstalled = 1; + return 0; + } else if (encryMode == TKIP) { + //only vaild for Tx + if (mWpaBcKeyLen == keyLength && mGkInstalled==1)//Non-First time group key update. + change_enc = 0; + + mWpaBcKeyLen = keyLength; + mWpaBcKeyId = KeyId; + if (mWpaBcKeyLen == 32) { + if (mOperationMode != CAM_AP_VAP) { + //Tmep key(16), Tx Mic Key(8), Rx Mic Key(8) + HW_ConfigDynaKey(pdot11Obj, 32, &bcAddr[0], pKeyContent, keyLength, encryMode, change_enc); + // Also set default key for Multicast case to avoid Tx-underrun. + //if ((mDebugFlag & BIT_1)==0) + { + HW_CAM_Write(pdot11Obj, DEFAULT_ENCRY_TYPE, encryMode); + HW_ConfigStatKey(pdot11Obj, pKeyContent, keyLength, STA_KEY_START_ADDR+(KeyId * 8)); + } + } else { + HW_ConfigDynaKey(pdot11Obj, CAM_VAP_START_AID, (U8 *)&dot11MacAddress, pKeyContent, keyLength, encryMode, change_enc); + } + if (mBssType == INFRASTRUCTURE_BSS) + MICsetKey(&pKeyContent[24], &mBcMicKey); //Tx Mic key + else + MICsetKey(&pKeyContent[16], &mBcMicKey);// For Infra-STA mode. + } + mGkInstalled = 1; + return 0; + } else if (encryMode == AES) { + if (mWpaBcKeyLen == keyLength && mGkInstalled == 1)//Non-First time group key update. + change_enc = 0; + mWpaBcKeyLen = keyLength; + mWpaBcKeyId = KeyId; + if (mWpaBcKeyLen == 16) { + if (mOperationMode != CAM_AP_VAP) { + HW_ConfigDynaKey(pdot11Obj, 32, &bcAddr[0], pKeyContent, keyLength, encryMode, change_enc); + // Also set default key for Multicast case to avoid Tx-underrun. + HW_CAM_Write(pdot11Obj, DEFAULT_ENCRY_TYPE, encryMode); + HW_ConfigStatKey(pdot11Obj, pKeyContent, keyLength, STA_KEY_START_ADDR+(KeyId * 8)); + } else { + HW_ConfigDynaKey(pdot11Obj, CAM_VAP_START_AID, (U8 *)&dot11MacAddress, pKeyContent, keyLength, encryMode, change_enc); + } + } + mGkInstalled = 1; + return 0; + } else { + return -1; + } + }// End of Group key setting. + + // Start of Pairwise key setting. + pHash = HashSearch(sta); + if (!pHash) { + if (!memcmp(&sta->mac[0], ZeroAddr, 6)) { + int i; + HW_CAM_ResetRollTbl(pdot11Obj); + if (mGkInstalled) { + HW_CAM_UpdateRollTbl(pdot11Obj,0);//ReEnable group key. + } + if (mBssType != INFRASTRUCTURE_BSS) {//AP mode. + WPADEBUG("clear all tx key\n"); + for (i=0; iaid); + sstByAid[0]->pkInstalled=0; + } + } + return -1; + } else { + pHash->keyLength = keyLength; + if (pHash->encryMode != encryMode) + change_enc = 1; + pHash->encryMode = encryMode; + aid = pHash->aid; + + if (encryMode != NO_WEP) + WPADEBUG("********* Set key%s for aid:%d\n",DbgStrEncryType[encryMode & 7],aid); + else + WPADEBUG("********* Clear key for aid:%d\n",aid); + if (encryMode == NO_WEP) {// Clear pairwise key + pHash->pkInstalled = 0; + if (mBssType == INFRASTRUCTURE_BSS) + HW_CAM_ClearRollTbl(pdot11Obj, 8); + else + HW_CAM_ClearRollTbl(pdot11Obj, aid); + } else if (encryMode == TKIP) { + if (mBssType == INFRASTRUCTURE_BSS) { + // zd1205_dump_data("key:", (u8*)pKeyContent, 32); + HW_ConfigDynaKey(pdot11Obj, 8, addr, pKeyContent, 32, encryMode, change_enc); + } else + HW_ConfigDynaKey(pdot11Obj, aid, addr, pKeyContent, 32, encryMode, change_enc); + + MICsetKey(&pKeyContent[16], &pHash->TxMicKey); + MICsetKey(&pKeyContent[24], &pHash->RxMicKey); + pHash->KeyId = KeyId; + pHash->pkInstalled = 1; + } else //if (encryMode == AES) + { + if (mBssType == INFRASTRUCTURE_BSS) { + WPADEBUG("********* setAESkey\n"); + HW_ConfigDynaKey(pdot11Obj, 8, addr, pKeyContent, keyLength, encryMode, change_enc); + } else + HW_ConfigDynaKey(pdot11Obj, aid, addr, pKeyContent, keyLength, encryMode, change_enc); + pHash->KeyId = KeyId; + pHash->pkInstalled = 1; + } + return 0; + } } BOOLEAN zd_GetKeyInfo(U8 *addr, U8 *encryMode, U8 *keyLength, U8 *pKeyContent) { - Hash_t *pHash; - MacAddr_t *sta = (MacAddr_t *)addr; - - ZDEBUG("zd_GetKeyInfo"); - if (isGroup(sta)) { - return FALSE; - } - - pHash = HashSearch(sta); - if (!pHash) { - *encryMode = 0; - *keyLength = 0; - return FALSE; - } else { - *encryMode = pHash->encryMode; - *keyLength = pHash->keyLength; - memcpy(pKeyContent, &pHash->keyContent[0], pHash->keyLength); - return TRUE; - } -} - -BOOLEAN zd_CheckIvSeq(U8 aid, U16 iv16, U32 iv32) { - Hash_t *pHash = NULL; - U16 oldIv16; - U32 oldIv32; - - ZDEBUG("zd_CheckIvSeq"); - - if (mDynKeyMode != DYN_KEY_TKIP) { - FPRINT("Not in DYN_KEY_TKIP mode"); - return FALSE; - } - - pHash = sstByAid[aid]; - if (!pHash) { - FPRINT("zd_CheckIvSeq failed"); - return FALSE; - } else { - if (pHash->pkInstalled == 0) { - FPRINT("pkInstalled == 0"); - return FALSE; - } - - oldIv16 = pHash->RxSeed.IV16; - oldIv32 = pHash->RxSeed.IV32; - - if ((oldIv16 == iv16) && (oldIv32 == iv32)) { - // iv out of sequence - FPRINT("iv out of sequence"); - FPRINT_V("iv16", iv16); - FPRINT_V("iv32", iv32); - return FALSE; - } - - pHash->RxSeed.IV16 = iv16; - pHash->RxSeed.IV32 = iv32; - return TRUE; - } + Hash_t *pHash; + MacAddr_t *sta = (MacAddr_t *)addr; + + ZDEBUG("zd_GetKeyInfo"); + if (isGroup(sta)) { + return FALSE; + } + + pHash = HashSearch(sta); + if (!pHash) { + *encryMode = 0; + *keyLength = 0; + return FALSE; + } else { + *encryMode = pHash->encryMode; + *keyLength = pHash->keyLength; + memcpy(pKeyContent, &pHash->keyContent[0], pHash->keyLength); + return TRUE; + } +} + +/** + * zd_SetKeyContext - Set Key context to CAM (used for WPA/WPA2) + * @addr: MAC address of AP we associated with + * @encryMode: Encryption mode + * @keyLength: Length of key context + * @keyId: Key index + * @pKeyContent: Context of key + */ +#if 0 + +int zd_SetKeyContext(U8 *addr, U8 encryMode, U8 keyLength, U8 KeyId, U8 *pKeyContent) +{ + Hash_t *pHash; + + if (isGroup(addr)) { + mWpaBcKeyLen = keyLength; + mWpaBcKeyId = KeyId; + + if (encryMode == DYN_KEY_TKIP) { + if (keyLength == 32) { + zd1205_config_dyn_key(encryMode, pKeyContent, KeyId); + MICsetKey(&pKeyContent[24], &mBcMicKey); + } + + mGkInstalled = 1; + return 0; + } else if (encryMode == DYN_KEY_AES) { + printk(KERN_ERR "***** set group key ID: %d\n",KeyId); + zd1205_config_dyn_key(encryMode, pKeyContent, KeyId); + mGkInstalled = 1; + return 0; + } else { + WPADEBUG("zd_SetKeyContext: encryMode: %d not support\n", encryMode); + return -1; + } + + } + + pHash = HashSearch((MacAddr_t*)addr); + + if(!pHash) { + WPADEBUG("Can't find AP's MAC address in the hash table\n"); + return -1; + } else { + pHash->encryMode = encryMode; + + if (encryMode == DYN_KEY_TKIP) { + zd1205_config_dyn_key(encryMode, pKeyContent, KeyId); + + MICsetKey(&pKeyContent[16], &pHash->TxMicKey); + MICsetKey(&pKeyContent[24], &pHash->RxMicKey); + pHash->KeyId = KeyId; + pHash->pkInstalled = 1; + } else if (encryMode == DYN_KEY_AES) { + zd1205_config_dyn_key(encryMode, pKeyContent, KeyId); + pHash->KeyId = KeyId; + pHash->pkInstalled = 1; + } + else { + WPADEBUG("zd_SetKeyContext: encryMode: %d not support\n", encryMode); + } + } + + return 0; } +#endif + +#if defined(PHY_1202) +int zd_GetKeyInfo_ext(U8 *addr, U8 *encryMode, U8 *keyLength, U8 *pKeyContent, U16 iv16, U32 iv32) +{ + Hash_t *pHash; + MacAddr_t *sta = (MacAddr_t *)addr; + + ZDEBUG("zd_GetKeyInfo_ext"); + if (isGroup(sta)) { + return -1; + } + + if (mDynKeyMode != DYN_KEY_TKIP) + return -1; + + pHash = HashSearch(sta); + if (!pHash) { + *encryMode = 0; + *keyLength = 0; + return -1; + } else { + if (pHash->pkInstalled == 0) + return -2; + + if ((iv16 == pHash->RxSeed.IV16) && (iv32 == pHash->RxSeed.IV32)) { + // iv out of sequence + //FPRINT_V("iv16", iv16); + //FPRINT_V("iv32", iv32); + //return -3; + } + + *encryMode = pHash->encryMode; + *keyLength = pHash->keyLength; + //do key mixing + Tkip_phase1_key_mix(iv32, &pHash->RxSeed); + Tkip_phase2_key_mix(iv16, &pHash->RxSeed); + Tkip_getseeds(iv16, pKeyContent, &pHash->RxSeed); + pHash->RxSeed.IV16 = iv16; + pHash->RxSeed.IV32 = iv32; + return pHash->aid; + } +} + + +int zd_SetTsc(U8 *addr, U8 KeyId, U8 direction, U32 tscHigh, U16 tscLow) +{ + Hash_t *pHash; + MacAddr_t *sta = (MacAddr_t *)addr; + + ZDEBUG("zd_SetTsc"); + if (isGroup(sta)) { + return -1; + } + + pHash = HashSearch(sta); + if (!pHash) + return -1; + else { + pHash->KeyId = KeyId; + if (direction == 0) { //Tx + pHash->TxSeed.IV16 = tscLow; + pHash->TxSeed.IV32 = tscHigh; + } else if (direction == 1) { //Rx + pHash->RxSeed.IV16 = tscLow; + pHash->RxSeed.IV32 = tscHigh; + } + return 0; + } +} + + +int zd_GetTsc(U8 *addr, U8 KeyId, U8 direction, U32 *tscHigh, U16 *tscLow) +{ + Hash_t *pHash; + MacAddr_t *sta = (MacAddr_t *)addr; + + ZDEBUG("zd_GetTsc"); + if (isGroup(sta)) { + return -1; + } + + pHash = HashSearch(sta); + if (!pHash) + return -1; + else { + if (direction == 0) { //Tx + *tscLow = pHash->TxSeed.IV16; + *tscHigh = pHash->TxSeed.IV32; + } else if (direction == 1) { //Rx + *tscLow = pHash->RxSeed.IV16; + *tscHigh = pHash->RxSeed.IV32; + } + return 0; + } +} +#endif + + +BOOLEAN zd_CheckIvSeq(U8 aid, U16 iv16, U32 iv32) +{ + Hash_t *pHash = NULL; + U16 oldIv16; + U32 oldIv32; + + + ZDEBUG("zd_CheckIvSeq"); + + if (mDynKeyMode != DYN_KEY_TKIP) { + FPRINT("Not in DYN_KEY_TKIP mode"); + return FALSE; + } + + pHash = sstByAid[aid]; + if (!pHash) { + FPRINT("zd_CheckIvSeq failed"); + return FALSE; + } else { + if (pHash->pkInstalled == 0) { + FPRINT("pkInstalled == 0"); + return FALSE; + } + + oldIv16 = pHash->RxSeed.IV16; + oldIv32 = pHash->RxSeed.IV32; + +#if 1 + + if ((oldIv16 == iv16) && (oldIv32 == iv32)) { + // iv out of sequence + FPRINT("iv out of sequence"); + FPRINT_V("iv16", iv16); + FPRINT_V("iv32", iv32); + return FALSE; + } + +#else //If fifo overrun, this will failed + if (iv32 == oldIv32) { + if (iv16 != oldIv16+1) { + // iv out of sequence + FPRINT("iv out of sequence"); + FPRINT_V("iv16", iv16); + FPRINT_V("iv32", iv32); + return FALSE; + } + } else { + if ((iv16 != 0) || (oldIv16 != 0xffff)) { + // iv out of sequence + FPRINT("iv out of sequence"); + FPRINT_V("iv16", iv16); + FPRINT_V("iv32", iv32); + return FALSE; + } + } +#endif + + pHash->RxSeed.IV16 = iv16; + pHash->RxSeed.IV32 = iv32; + return TRUE; + } +} + + +#endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdhci.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdhci.c @@ -1,2172 +1,2760 @@ -/* $Id: zdhci.c,v 1.14 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - +#ifndef _ZDHCI_C_ +#define _ZDHCI_C_ #include "zd80211.h" #include "zdhci.h" #include "zdequates.h" #include "zd1205.h" +#include "zddebug.h" + +#define MAX_CHANNEL_ALLOW 13 BOOLEAN zd_PseudoIbssConnect(void); -U8 zd_Snap_Header[6] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00}; -U8 zd_SnapBridgeTunnel[6] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0xF8}; -#define MAX_CHANNEL_ALLOW 13 + +static U8 zd_Snap_Header[6] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00}; +static U8 zd_SnapBridgeTunnel[6] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0xF8}; +static U8 zd_Snap_Apple_Type[] = {0xAA,0xAA,0x03,0x08,0x00,0x07,0x80,0x9b}; +static U8 zd_Snap_Apple_AARP[] = {0xAA,0xAA,0x03,0x00,0x00,0x00,0x80,0xf3}; + +extern struct net_device *g_dev; zd_80211Obj_t *pdot11Obj = 0; + +extern const U16 dot11A_Channel[]; +extern const U16 dot11A_Channel_Amount; +extern void ChangeMacMode(u8 MAC_Mode,u8 Channel); + U16 CurrScanCH = 1; BOOLEAN zd_SendPkt(U8 *pEthHdr, U8 *pBody, U32 bodyLen, void *buf, U8 bEapol, void *pHash) { - Signal_t *signal; - FrmDesc_t *pfrmDesc; - Frame_t *frame; - U8 vapId = 0; - //FPRINT("zd_SendPkt"); - if (mPsStaCnt) { - if (zd_CheckTotalQueCnt() > TXQ_THRESHOLD) { - //FPRINT("Drop Tx packet"); - return FALSE; - } - } - - signal = allocSignal(); - if (!signal) { - FPRINT("zd_SendPkt out of signal"); - FPRINT_V("freeSignalCount", freeSignalCount); - return FALSE; - } - - pfrmDesc = allocFdesc(); - if (!pfrmDesc) { - freeSignal(signal); - FPRINT("zd_SendPkt out of description"); - FPRINT_V("freeFdescCount", freeFdescCount); - return FALSE; - } - - frame = pfrmDesc->mpdu; - /* FrameControl(2) Duration/ID(2) A1(6) A2(6) A3(6) Seq(2) A4/LLCHdr(6) LLCHdr(6) */ - if (mBssType == AP_BSS) { - memcpy((char *)&(frame->header[4]), (char *)&(pEthHdr[0]), 6); /* Set DA to A1 */ - memcpy((char *)&(frame->header[16]), (char *)&(pEthHdr[6]), 6); /* Set SA to A3 */ - frame->header[1] = FROM_DS_BIT; - } else if (mBssType == INFRASTRUCTURE_BSS) { - memcpy((char *)&(frame->header[4]), (char *)&mBssId, 6); /* Set BSSID to A1 */ - memcpy((char *)&(frame->header[16]), (char *)&(pEthHdr[0]), 6); /* Set DA to A3 */ - frame->header[1] = TO_DS_BIT; - if (mPwrState) { - frame->header[1] |= PW_SAVE_BIT; - } else { - frame->header[1] &= ~PW_SAVE_BIT; - } - } else if ((mBssType == INDEPENDENT_BSS) || (mBssType == PSEUDO_IBSS)) { - memcpy((char *)&(frame->header[4]), (char *)&(pEthHdr[0]), 6); /* Set DA to A1 */ - memcpy((char *)&(frame->header[16]), (char *)&mBssId, 6); /* Set Bssid to A3 */ - frame->header[1] = 0; - } - - frame->bodyLen = bodyLen; - frame->body = pBody; - signal->buf = buf; - signal->vapId = vapId; - pfrmDesc->ConfigSet &= ~INTRA_BSS_SET; - frame->HdrLen = MAC_HDR_LNG; - frame->header[0] = ST_DATA; - setAddr2(frame, &dot11MacAddress); - if (bEapol) { - pfrmDesc->ConfigSet |= EAPOL_FRAME_SET; - } else { - pfrmDesc->ConfigSet &= ~EAPOL_FRAME_SET; - } - - signal->bDataFrm = 1; - //pfrmDesc->bDataFrm = 1; - pfrmDesc->pHash = (Hash_t *)pHash; - mkFragment(signal, pfrmDesc, pEthHdr); //10 us - if (SendPkt(signal, pfrmDesc, TRUE)) //4727 - return FALSE; - else - return TRUE; + Signal_t *signal; + FrmDesc_t *pfrmDesc; + Frame_t *frame; + U8 vapId = 0; + //FPRINT("zd_SendPkt"); + if (mPsStaCnt) { + if (zd_CheckTotalQueCnt() > TXQ_THRESHOLD) { + //FPRINT("Drop Tx packet"); + return FALSE; + } + } + + signal = allocSignal(); + + if (!signal) { + FPRINT("zd_SendPkt out of signal"); + FPRINT_V("freeSignalCount", freeSignalCount); + return FALSE; + } + + pfrmDesc = allocFdesc(); + + if (!pfrmDesc) { + freeSignal(signal); + FPRINT("zd_SendPkt out of description"); + FPRINT_V("freeFdescCount", freeFdescCount); + return FALSE; + } + + frame = pfrmDesc->mpdu; + /* FrameControl(2) Duration/ID(2) A1(6) A2(6) A3(6) Seq(2) A4/LLCHdr(6) LLCHdr(6) */ + if (mBssType == AP_BSS) { + memcpy((char *)&(frame->header[4]), (char *)&(pEthHdr[0]), 6); /* Set DA to A1 */ + memcpy((char *)&(frame->header[16]), (char *)&(pEthHdr[6]), 6); /* Set SA to A3 */ + frame->header[1] = FROM_DS_BIT; + } else if (mBssType == INFRASTRUCTURE_BSS) { + memcpy((char *)&(frame->header[4]), (char *)&mBssId, 6); /* Set BSSID to A1 */ + memcpy((char *)&(frame->header[16]), (char *)&(pEthHdr[0]), 6); /* Set DA to A3 */ + frame->header[1] = TO_DS_BIT; + if (mPwrState) { + frame->header[1] |= PW_SAVE_BIT; + } else + frame->header[1] &= ~PW_SAVE_BIT; + } else if ((mBssType == INDEPENDENT_BSS) || (mBssType == PSEUDO_IBSS)) { + memcpy((char *)&(frame->header[4]), (char *)&(pEthHdr[0]), 6); /* Set DA to A1 */ + memcpy((char *)&(frame->header[16]), (char *)&mBssId, 6); /* Set Bssid to A3 */ + frame->header[1] = 0; + } + + frame->bodyLen = bodyLen; + frame->body = pBody; + signal->buf = buf; + signal->vapId = vapId; + pfrmDesc->ConfigSet &= ~INTRA_BSS_SET; + frame->HdrLen = MAC_HDR_LNG; + frame->header[0] = ST_DATA; + setAddr2(frame, &dot11MacAddress); + + if (bEapol) { + pfrmDesc->ConfigSet |= EAPOL_FRAME_SET; + } else + pfrmDesc->ConfigSet &= ~EAPOL_FRAME_SET; + + signal->bDataFrm = 1; + //pfrmDesc->bDataFrm = 1; + pfrmDesc->pHash = (Hash_t *)pHash; + if (pHash == NULL && !(pEthHdr[0]&BIT_0) ) + printk(KERN_ERR "===== ==== ===pHash is NULL in zd_SendPkt\n"); + mkFragment(signal, pfrmDesc, pEthHdr); //10 us +#if 0 + //force free for debug only + zd1205_dump_data("header", (u8 *)&frame->header[0], frame->HdrLen); + zd1205_dump_data("body", (u8 *)frame->body, frame->bodyLen); + freeSignal(signal); + freeFdesc(pfrmDesc); + return TRUE; +#endif + +#if 1 + + if (SendPkt(signal, pfrmDesc, TRUE)) //4727 + return FALSE; + else + return TRUE; +#else + + SendPkt(signal, pfrmDesc, TRUE); + return TRUE; +#endif } #define LP_FORWARD 0 #define BC_FORWARD 1 -#define BSS_FORWARD 2 +#define BSS_FORWARD 2 void zd_WirelessForward(U8 *pHdr, U8 *pBody, U32 len, void *buf, U8 mode, void *pHash, U8 *pEthHdr) { - Signal_t *signal; - FrmDesc_t *pfrmDesc; - Frame_t *frame; - U8 vapId = 0; - //FPRINT("zd_WirelessForward"); - - if (mPsStaCnt) { - if (zd_CheckTotalQueCnt() > TXQ_THRESHOLD) { - //FPRINT("Drop Intra-BSS packet"); - pdot11Obj->ReleaseBuffer(buf); - return; - } - } - - signal = allocSignal(); - if (!signal) { - FPRINT("zd_WirelessForward out of signal"); - FPRINT_V("freeSignalCount", freeSignalCount); - pdot11Obj->ReleaseBuffer(buf); - return; - } - - pfrmDesc = allocFdesc(); - if (!pfrmDesc) { - freeSignal(signal); - FPRINT("zd_WirelessForward out of description"); - FPRINT_V("freeFdescCount", freeFdescCount); - pdot11Obj->ReleaseBuffer(buf); - return; - } - - frame = pfrmDesc->mpdu; - /* FrameControl(2) Duration/ID(2) A1(6) A2(6) A3(6) Seq(2) A4/LLCHdr(6) LLCHdr(6) */ - memcpy((char *)&(frame->header[4]), (char *)&(pHdr[16]), 6); /* Set DA to A1 */ - memcpy((char *)&(frame->header[16]), (char *)&(pHdr[10]), 6); /* Set SA to A3 */ - - frame->bodyLen = len; - frame->body = pBody; - signal->buf = buf; - signal->vapId = vapId; - - if (mode == LP_FORWARD) { - memcpy((char *)&(frame->header[4]), (char *)&(pHdr[10]), 6); /* Set DA to A1 */ - memcpy((char *)&(frame->header[16]), (char *)&dot11MacAddress, 6); /* Set SA to A3 */ - frame->body[6] = 0x38; - frame->body[7] = 0x39; - } - - pfrmDesc->ConfigSet |= INTRA_BSS_SET; - pfrmDesc->ConfigSet &= ~EAPOL_FRAME_SET; - signal->bDataFrm = 1; - //pfrmDesc->bDataFrm = 1; - frame->HdrLen = MAC_HDR_LNG; - frame->header[0] = ST_DATA; - frame->header[1] = FROM_DS_BIT; - setAddr2(frame, &dot11MacAddress); - pfrmDesc->pHash = (Hash_t *)pHash; - mkFragment(signal, pfrmDesc, pEthHdr); - SendPkt(signal, pfrmDesc, FALSE); - return; + Signal_t *signal; + FrmDesc_t *pfrmDesc; + Frame_t *frame; + U8 vapId = 0; + //FPRINT("zd_WirelessForward"); + + if (mPsStaCnt) { + if (zd_CheckTotalQueCnt() > TXQ_THRESHOLD) { + //FPRINT("Drop Intra-BSS packet"); + pdot11Obj->ReleaseBuffer(buf); + return; + } + } + + signal = allocSignal(); + if (!signal) { + FPRINT("zd_WirelessForward out of signal"); + FPRINT_V("freeSignalCount", freeSignalCount); + pdot11Obj->ReleaseBuffer(buf); + return; + } + + pfrmDesc = allocFdesc(); + if (!pfrmDesc) { + freeSignal(signal); + FPRINT("zd_WirelessForward out of description"); + FPRINT_V("freeFdescCount", freeFdescCount); + pdot11Obj->ReleaseBuffer(buf); + return; + } + + frame = pfrmDesc->mpdu; + /* FrameControl(2) Duration/ID(2) A1(6) A2(6) A3(6) Seq(2) A4/LLCHdr(6) LLCHdr(6) */ + memcpy((char *)&(frame->header[4]), (char *)&(pHdr[16]), 6); /* Set DA to A1 */ + memcpy((char *)&(frame->header[16]), (char *)&(pHdr[10]), 6); /* Set SA to A3 */ + + frame->bodyLen = len; + frame->body = pBody; + signal->buf = buf; + signal->vapId = vapId; + + if (mode == LP_FORWARD) { + memcpy((char *)&(frame->header[4]), (char *)&(pHdr[10]), 6); /* Set DA to A1 */ + memcpy((char *)&(frame->header[16]), (char *)&dot11MacAddress, 6); /* Set SA to A3 */ + frame->body[6] = 0x38; + frame->body[7] = 0x39; + } + + pfrmDesc->ConfigSet |= INTRA_BSS_SET; + pfrmDesc->ConfigSet &= ~EAPOL_FRAME_SET; + signal->bDataFrm = 1; + //pfrmDesc->bDataFrm = 1; + frame->HdrLen = MAC_HDR_LNG; + frame->header[0] = ST_DATA; + frame->header[1] = FROM_DS_BIT; + setAddr2(frame, &dot11MacAddress); + pfrmDesc->pHash = (Hash_t *)pHash; + mkFragment(signal, pfrmDesc, pEthHdr); + SendPkt(signal, pfrmDesc, FALSE); + return; +} + +void zd_SendDeauthFrame(U8 *sta, U8 ReasonCode) +{ + Signal_t *signal; + + printk(KERN_ERR "SendDeauthFrame with ReasonCode=%u\n",ReasonCode); + if ((mBssType == INDEPENDENT_BSS) || (mBssType == PSEUDO_IBSS)) + return; + + if ((signal = allocSignal()) == NULL) + return; + signal->id = SIG_DEAUTH_REQ; + signal->block = BLOCK_AUTH_REQ; + signal->vapId = 0; + memcpy(&signal->frmInfo.Sta, sta, 6); + signal->frmInfo.rCode = ReasonCode; + sigEnque(pMgtQ, (signal)); + + return; } void zd_SendClass2ErrorFrame(MacAddr_t *sta, U8 vapId) { - Signal_t *signal; - - //FPRINT("zd_sendClass2ErrorFrame"); - - if ((mBssType == INDEPENDENT_BSS) || (mBssType == PSEUDO_IBSS)) - return; - - if ((signal = allocSignal()) == NULL) - return; - signal->id = SIG_DEAUTH_REQ; - signal->block = BLOCK_AUTH_REQ; - signal->vapId = vapId; - memcpy(&signal->frmInfo.Sta, sta, 6); - signal->frmInfo.rCode = RC_CLASS2_ERROR; - sigEnque(pMgtQ, (signal)); - - return; + Signal_t *signal; + + //FPRINT("zd_sendClass2ErrorFrame"); + + if ((mBssType == INDEPENDENT_BSS) || (mBssType == PSEUDO_IBSS)) + return; + + if ((signal = allocSignal()) == NULL) + return; + signal->id = SIG_DEAUTH_REQ; + signal->block = BLOCK_AUTH_REQ; + signal->vapId = vapId; + memcpy(&signal->frmInfo.Sta, sta, 6); + signal->frmInfo.rCode = RC_CLASS2_ERROR; + sigEnque(pMgtQ, (signal)); + + return; } void zd_SendClass3ErrorFrame(MacAddr_t *sta, U8 vapId) { - Signal_t *signal; - - //FPRINT("zd_SendClass3ErrorFrame"); - if ((mBssType == INDEPENDENT_BSS) || (mBssType == PSEUDO_IBSS)) - return; - - if ((signal = allocSignal()) == NULL) - return; - - signal->id = SIG_DIASSOC_REQ; - signal->block = BLOCK_ASOC; - signal->vapId = vapId; - memcpy(&signal->frmInfo.Sta, sta, 6); - signal->frmInfo.rCode = RC_CLASS3_ERROR; - sigEnque(pMgtQ, (signal)); - - return; + Signal_t *signal; + + //FPRINT("zd_SendClass3ErrorFrame"); + if ((mBssType == INDEPENDENT_BSS) || (mBssType == PSEUDO_IBSS)) + return; + + if ((signal = allocSignal()) == NULL) + return; + + signal->id = SIG_DIASSOC_REQ; + signal->block = BLOCK_ASOC; + signal->vapId = vapId; + memcpy(&signal->frmInfo.Sta, sta, 6); + signal->frmInfo.rCode = RC_CLASS3_ERROR; + sigEnque(pMgtQ, (signal)); + + return; } #define MIC_HEADER_LEN 16 BOOLEAN zd_CheckMic(U8 *pHdr, U8 *pBody, U32 bodyLen, Hash_t *pHash, U8 *pEthHdr) { - MICvar *pRxMicKey; - U8 PkInstalled = 0; - U8 *pByte; - U8 CalMic[8]; - int i = 0; - U8 *pIV = pHdr + 24; - - if (pIV[3] & EIV_BIT) { - //zd1205_dump_data("IV = ", pIV, 8); - //zd1205_dump_data("MIC K0= ", (U8 *)&pRxMicKey->K0, 4); - //zd1205_dump_data("MIC K1= ", (U8 *)&pRxMicKey->K1, 4); - pRxMicKey = &pHash->RxMicKey; - - PkInstalled = pHash->pkInstalled; - - if (PkInstalled) { - U32 Len = bodyLen - MIC_LNG; - //Software MIC Calculation, HW MIC failed - MICclear(pRxMicKey); - - pByte = pEthHdr; - for (i=0; ipkInstalled)) + pRxMicKey = &pHash->RxMicKey; + else + return FALSE; + } + + //zd1205_dump_data("IV = ", pIV, 8); + //zd1205_dump_data("MIC K0= ", (U8 *)&pRxMicKey->K0, 4); + //zd1205_dump_data("MIC K1= ", (U8 *)&pRxMicKey->K1, 4); + //pRxMicKey = &pHash->RxMicKey; + + //PkInstalled = pHash->pkInstalled; + + if (1) { + U32 Len = bodyLen - MIC_LNG; +#if 0 + + void *reg = pdot11Obj->reg; + U32 BolckLen = 0; + U32 tmpValue = 0; + U32 BlockNum = 2; + U32 MicLow, MicHigh; + U32 MicStatus = 0; + U32 HwMicStatus = 0; + register int j = 0; + U32 RxMicWrBackAddr = (U32)pEthHdr + MIC_HEADER_LEN; + U32 HwMicHighPhys = RxMicWrBackAddr + 4; + U32 HwMicStatusPhys = HwMicHighPhys + 4; + + //FPRINT("************* RX MIC ****************"); + + //reser HW MIC status + memset(RxMicWrBackAddr, 0x11, 12); + + //wait last MIC finish, then start this one + MicStatus = pdot11Obj->GetReg(reg, ZD_MIC_STATUS); + while (MicStatus & MIC_BUSY) { + pdot11Obj->DelayUs(1); + MicStatus = pdot11Obj->GetReg(reg, ZD_MIC_STATUS); + j++; + if (j>1000) { + bMicFinish = FALSE; + //FPRINT("Rx MIC can't start !!!"); + //FPRINT_V("MicStatus", MicStatus); + zdCnt.RxMicNoStart++; + break; + } + } + + //set mic key + pdot11Obj->SetReg(reg, ZD_MIC_KEY_LOW, pRxMicKey->K0); + pdot11Obj->SetReg(reg, ZD_MIC_KEY_HIGH, pRxMicKey->K1); + + //set 802.3 header + pdot11Obj->SetReg(reg, ZD_MIC_START_ADDR0, (U32)pEthHdr); + pdot11Obj->SetReg(reg, ZD_MIC_BLOCK0_LEN, MIC_HEADER_LEN); + + //set mac body + pdot11Obj->SetReg(reg, ZD_MIC_START_ADDR1, (U32)pBody); + pdot11Obj->SetReg(reg, ZD_MIC_BLOCK1_LEN, Len); + + //set write back address + pdot11Obj->SetReg(reg, ZD_MIC_WRITE_BACK_ADDRS, (U32)RxMicWrBackAddr); + + BolckLen = MIC_HEADER_LEN + Len; + tmpValue = (BlockNum | (BolckLen << 16)); + pdot11Obj->SetReg(reg, ZD_MIC_TOTAL_BLOCK_NUM, tmpValue); + + // busy waiting MIC finish + j= 0; + /* ath_desc: bigendian support */ + /* ath: replaced zd_le32_to_cpu by le32_to_cpu */ + HwMicStatus = le32_to_cpu(*(U32 *)(HwMicStatusPhys)); + while (HwMicStatus != HW_MIC_FINISH) { + pdot11Obj->DelayUs(1); + HwMicStatus = le32_to_cpu(*(U32 *)(HwMicStatusPhys)); + j++; + if (j>1000) { + bMicFinish = FALSE; + //FPRINT("Rx MIC not finish !!!"); + //FPRINT_V("HwMicStatus", HwMicStatus); + zdCnt.RxMicNoFinish++; + break; + } + } + + MicLow = le32_to_cpu (*(U32 *)RxMicWrBackAddr); + MicHigh = le32_to_cpu (*(U32 *)(HwMicHighPhys)); + + pByte = pBody + Len; //point to MIC start + CalMic[0] = (U8) MicLow; + CalMic[1] = (U8) (MicLow >> 8); + CalMic[2] = (U8) (MicLow >> 16); + CalMic[3] = (U8) (MicLow >> 24); + CalMic[4] = (U8) MicHigh; + CalMic[5] = (U8) (MicHigh >> 8); + CalMic[6] = (U8) (MicHigh >> 16); + CalMic[7] = (U8) (MicHigh >> 24); +#else + //Software MIC Calculation, HW MIC failed + MICclear(pRxMicKey); + + //pByte = pEthHdr; + if (mBssType == INFRASTRUCTURE_BSS || + mBssType == INDEPENDENT_BSS) + pByte = &pHdr[4]; // DA = Addr1 + else //if (mBssType == AP_BSS) + pByte = &pHdr[16]; //DA = Addr3 + + for (i=0; i<6; i++) { + MICappendByte(*pByte++, pRxMicKey); + } + if (mBssType == AP_BSS || + mBssType == INDEPENDENT_BSS) + pByte = &pHdr[10]; // SA=Addr2 + else // if (mBssType == INFRASTRUCTURE_BSS) + pByte = &pHdr[16]; // SA=Addr3 + for (i=0; i<6; i++) { + MICappendByte(*pByte++, pRxMicKey); + } + MICappendByte(0,pRxMicKey);//priority + MICappendByte(0,pRxMicKey);//3 zeros + MICappendByte(0,pRxMicKey); + MICappendByte(0,pRxMicKey); + + pByte = pBody; + for (i=0; iMIC_CNT && memcmp(CalMic, pByte, MIC_LNG) != 0) { + zd1205_dump_data("pHdr = ", pHdr, 32); + //FPRINT_V("Body Addr", (U32)pBody); + zd1205_dump_data("pBody = ", pBody, bodyLen+16); + zd1205_dump_data("CalMic = ", CalMic, 8); + zd1205_dump_data("ReceMic = ", pByte, 8); + + printk(KERN_ERR "SW MIC Check fail\n"); + hostap_michael_mic_failure((struct zd1205_private *)g_dev->priv, (struct hostap_ieee80211_hdr *)pHdr, pIV[3] & KEYID_MASK); + //pdot11Obj->MicFailure(&pEthHdr[6]); + return FALSE; + } else { + //FPRINT("***** MIC success *****"); + //printk(KERN_ERR "SW MIC check OK\n"); + return TRUE; + } + } + } + + return FALSE; } void zd_ReceivePkt(U8 *pHdr, U32 hdrLen, U8 *pBody, U32 bodyLen, void *buf, U8 *pEthHdr, rxInfo_t *pRxInfo) { - Signal_t *pRxSignal; - FrmDesc_t *pRxFdesc; - Frame_t *pRxFrame; - MacAddr_t *pDa, *pSa; - StationState sas; - PsMode psm = PSMODE_STA_ACTIVE; - U32 dataLen; - U8 *pData; - U8 mode; - U16 Type = 0; - void *bcBuf; - U8 *pBcData; - Hash_t *pHash; - U8 vapId = 0; - U8 rate = pRxInfo->rate; - U8 bDataFrm = pRxInfo->bDataFrm; - U8 SaIndex = pRxInfo->SaIndex; - U8 signalStrength = pRxInfo->signalStrength; - U8 signalQuality = pRxInfo->signalQuality; - U8 bSwCheckMIC = 1;//pRxInfo->bSwCheckMIC; - - ZDEBUG("zd_ReceivePkt"); - - if (mBssType == AP_BSS) { - pDa = (MacAddr_t *)&pHdr[16]; //A3 - pSa = (MacAddr_t *)&pHdr[10]; //A2 - if (bDataFrm) { - //don't care PS Bit in authenticate, (Re)assoicate and Probe Reguest frame - psm = (PsMode)((pHdr[1] & PW_SAVE_BIT) ? PSMODE_POWER_SAVE : PSMODE_STA_ACTIVE); - } - if (SaIndex == 0) - pHash = RxInfoIndicate(pSa, psm, rate); //12us update ps and rate information - else { - pHash = sstByAid[SaIndex]; - if (pHash) - RxInfoUpdate(pHash, psm, rate); - } - } else if (mBssType == INFRASTRUCTURE_BSS) { - pDa = (MacAddr_t *)&pHdr[4]; //A1 will be my MAC - //pSa = (MacAddr_t *)&pHdr[16]; //A3 - pSa = (MacAddr_t *)&pHdr[10]; //A2 for Asoc status check - pHash = sstByAid[0]; - } else { // INDEPENDENT_BSS or PSEUDO_IBSS - pDa = (MacAddr_t *)&pHdr[4]; //A1 - pSa = (MacAddr_t *)&pHdr[10]; //A2 - pHash = RxInfoIndicate(pSa, 0, rate); - } - - if (bDataFrm) { - if (!bodyLen) - goto rx_release; - - if (!pHash) { - zd_SendClass2ErrorFrame(pSa, vapId); - goto rx_release; - } else { - sas = pHash->asoc; - //if (sas == STATION_STATE_DIS_ASOC) { - if (sas != STATION_STATE_ASOC) { - zd_SendClass3ErrorFrame(pSa, vapId); - goto rx_release; - } - } - - if (sas == STATION_STATE_ASOC) { //association station - if (mBssType == AP_BSS) { - if (isGroup(pDa)) { - if (mDynKeyMode == DYN_KEY_TKIP) { - if (!pHash->pkInstalled) - goto rx_release; - else if (!mGkInstalled) - goto rx_release; - else if ((pHdr[1] & WEP_BIT) && (hdrLen == 32)) { - if (bSwCheckMIC) { - if (!zd_CheckMic(pHdr, pBody, bodyLen, pHash, pEthHdr)) { - goto rx_release; - } else { - bodyLen -= MIC_LNG; //remove MIC - } - } - } - } - } - if (mCurrConnUser > 1) { - mode = BC_FORWARD; - bcBuf = pdot11Obj->AllocBuffer(bodyLen, &pBcData); - if (bcBuf) { - memcpy(pBcData, pBody, bodyLen); - zd_WirelessForward(pHdr, pBcData, bodyLen, bcBuf, mode, NULL, pEthHdr); - } - } - goto rx_ind; - } else { - void *pTxHash = NULL; - if (mBlockBSS) { //discard IntraBSS packet - goto rx_release; - } - zd_QueryStaTable((U8 *)pDa, &pTxHash); //Automatic wireless forwarding - - if (pTxHash) { - if (bSwCheckMIC) { - if ((mDynKeyMode == DYN_KEY_TKIP) && (pHdr[1] & WEP_BIT) && (hdrLen == 32)) { - if (!zd_CheckMic(pHdr, pBody, bodyLen, pHash, pEthHdr)) { - goto rx_release; - } else - bodyLen -= MIC_LNG; //remove MIC - } - } - mode = BSS_FORWARD; - zd_WirelessForward(pHdr, pBody, bodyLen, buf, mode, pTxHash, pEthHdr); - - return; - } - } - - // mic check - if (bSwCheckMIC) { - if ((mDynKeyMode == DYN_KEY_TKIP) && (pHdr[1] & WEP_BIT) && (hdrLen == 32)) { - if (!zd_CheckMic(pHdr, pBody, bodyLen, pHash, pEthHdr)) { - goto rx_release; - } else{ - bodyLen -= MIC_LNG; //remove MIC - } - } - } + Signal_t *pRxSignal; + FrmDesc_t *pRxFdesc; + Frame_t *pRxFrame; + MacAddr_t *pDa, *pSa; + StationState sas; + PsMode psm = PSMODE_STA_ACTIVE; + U32 dataLen; + U8 *pData; + U8 mode; + void *bcBuf; + U8 *pBcData; + Hash_t *pHash; + U8 vapId = 0; + U8 rate = pRxInfo->rate; + U8 bDataFrm = pRxInfo->bDataFrm; + U8 SaIndex = pRxInfo->SaIndex; + U8 signalStrength = pRxInfo->signalStrength; + U8 signalQuality = pRxInfo->signalQuality; + U8 bSwCheckMIC = pRxInfo->bSwCheckMIC; + + ZDEBUG("zd_ReceivePkt"); + + + if (mBssType == AP_BSS) { + pDa = (MacAddr_t *)&pHdr[16]; //A3 + pSa = (MacAddr_t *)&pHdr[10]; //A2 + if (bDataFrm) { + //don't care PS Bit in authenticate, (Re)assoicate and Probe Reguest frame + psm = (PsMode)((pHdr[1] & PW_SAVE_BIT) ? PSMODE_POWER_SAVE : PSMODE_STA_ACTIVE); + } + if (SaIndex == 0) + pHash = RxInfoIndicate(pSa, psm, rate); //12us update ps and rate information + else { + pHash = sstByAid[SaIndex]; + if (pHash) + RxInfoUpdate(pHash, psm, rate); + } + } else if (mBssType == INFRASTRUCTURE_BSS) { + pDa = (MacAddr_t *)&pHdr[4]; //A1 will be my MAC + //pSa = (MacAddr_t *)&pHdr[16]; //A3 + pSa = (MacAddr_t *)&pHdr[10]; //A2 for Asoc status check + pHash = sstByAid[0]; + } else { // INDEPENDENT_BSS or PSEUDO_IBSS + pDa = (MacAddr_t *)&pHdr[4]; //A1 + pSa = (MacAddr_t *)&pHdr[10]; //A2 + pHash = RxInfoIndicate(pSa, 0, rate); + } + + + if (bDataFrm) { + if (!bodyLen) + goto rx_release; + + if (!pHash) { + zd_SendClass2ErrorFrame(pSa, vapId); + goto rx_release; + } else { + sas = pHash->asoc; + if ((sas != STATION_STATE_ASOC) && (mBssType == AP_BSS)) { + //if (sas != STATION_STATE_ASOC){ + zd_SendClass3ErrorFrame(pSa, vapId); + printk(KERN_ERR "Class3ErrFrm:%02X %02X %02X %02X %02X %02X\n",pSa->mac[0],pSa->mac[1],pSa->mac[2],pSa->mac[3],pSa->mac[4],pSa->mac[5]); + goto rx_release; + } + } + + if (sas == STATION_STATE_ASOC) { //association station + if (mBssType == AP_BSS) { + if (isGroup(pDa)) { + if (pHash->keyLength == 32) { + //if (mDynKeyMode == DYN_KEY_TKIP){ + if (!pHash->pkInstalled) + goto rx_release; + else if (!mGkInstalled) + goto rx_release; + else if ((pHdr[1] & WEP_BIT) && (hdrLen == 32)) { + if (bSwCheckMIC) { + if (!zd_CheckMic(pHdr, pBody, bodyLen, pHash, pEthHdr)) { + goto rx_release; + } else { + bodyLen -= MIC_LNG; //remove MIC + } + } + } + } + if (mCurrConnUser > 1) { + mode = BC_FORWARD; + bcBuf = pdot11Obj->AllocBuffer(bodyLen, &pBcData); + if (bcBuf) { + memcpy(pBcData, pBody, bodyLen); + zd_WirelessForward(pHdr, pBcData, bodyLen, bcBuf, mode, NULL, pEthHdr); + } + } + goto rx_ind; + } else { + void *pTxHash = NULL; + + if (mBlockBSS) { //discard IntraBSS packet + goto rx_release; + } + + zd_QueryStaTable((U8 *)pDa, &pTxHash); //Automatic wireless forwarding + + if (pTxHash) { + if (bSwCheckMIC) { + if ((pHash->keyLength==32) && (pHdr[1] & WEP_BIT) && (hdrLen == 32)) { + + if (!zd_CheckMic(pHdr, pBody, bodyLen, pHash, pEthHdr)) { + goto rx_release; + } else + bodyLen -= MIC_LNG; //remove MIC + } + } + + mode = BSS_FORWARD; + zd_WirelessForward(pHdr, pBody, bodyLen, buf, mode, pTxHash, pEthHdr); + return; + } + } + } + // mic check + if (bSwCheckMIC) // For TKIP, always use sw-mic check. + { + //if ((pHash->keyLength==32) && (pHdr[1] & WEP_BIT) && (hdrLen == 32)) + { + if (!zd_CheckMic(pHdr, pBody, bodyLen, pHash, pEthHdr)) + {// sw-mic check failed, discard this packet. + goto rx_release; + } else + {// sw-mic check ok, remove MIC + bodyLen -= MIC_LNG; + } + } + } rx_ind: - if ((bodyLen > 5 ) && (memcmp(pBody, zd_Snap_Header, 6) == 0 - || memcmp(pBody, zd_SnapBridgeTunnel, 6) == 0)) { - pData = pBody - 6; - dataLen = bodyLen + 6; /* Plus DA, SA*/ - } else { - pData = pBody - 14; - dataLen = bodyLen + 14; /* Plus DA, SA and TypeLen */ - pData[12] = (bodyLen>>8) & 0xFF; - pData[13] = bodyLen & 0xFF; - } - - memcpy(pData, pEthHdr, 6); /* Set DA */ - memcpy(pData+6, pEthHdr+6, 6); /* Set SA */ - //if (Type == 0x888e) - //zd1205_dump_data("pData = ", pData, dataLen); - - pdot11Obj->RxInd(pData, dataLen, buf); - return; - } - } else { //Mgt Frame - pRxSignal = allocSignal(); - if (!pRxSignal) { - FPRINT("zd_ReceivePkt out of signal"); - FPRINT_V("freeSignalCount", freeSignalCount); - goto rx_release; - } - - pRxFdesc = allocFdesc(); - if (!pRxFdesc) { - FPRINT("zd_ReceivePkt out of description"); - FPRINT_V("freeFdescCount", freeFdescCount); - freeSignal(pRxSignal); - goto rx_release; - } else { - //pRxFdesc->bDataFrm = bDataFrm; - pRxFdesc->signalStrength = signalStrength; - pRxFdesc->signalQuality = signalQuality; - pRxFrame = pRxFdesc->mpdu; - pRxFrame->HdrLen = hdrLen; - pRxFrame->bodyLen = bodyLen; - memcpy(pRxFrame->header, pHdr, hdrLen); - pRxFrame->body = pBody; - pRxSignal->buf = buf; - pRxSignal->vapId = vapId; - pRxSignal->frmInfo.frmDesc = pRxFdesc; - if (!RxMgtMpdu(pRxSignal)) { - freeSignal(pRxSignal); - freeFdesc(pRxFdesc); - pdot11Obj->ReleaseBuffer(buf); - } - return; - } - } - -rx_release: - pdot11Obj->ReleaseBuffer(buf); - return; -} + //If Typelen field is not used for len + if(memcmp(pBody,zd_Snap_Apple_AARP,8)==0 || memcmp(pBody,zd_Snap_Apple_Type,8)==0) { + pData = pBody - 14; + dataLen = bodyLen + 14; /* Plus DA, SA and TypeLen */ + pData[12] = (bodyLen>>8) & 0xFF; + pData[13] = bodyLen & 0xFF; + + } else if ((bodyLen > 5 ) && (memcmp(pBody, zd_Snap_Header, 6) == 0 + || memcmp(pBody, zd_SnapBridgeTunnel, 6) == 0)) { + + pData = pBody - 6; + dataLen = bodyLen + 6; /* Plus DA, SA*/ + } else { + pData = pBody - 14; + dataLen = bodyLen + 14; /* Plus DA, SA and TypeLen */ + pData[12] = (bodyLen>>8) & 0xFF; + pData[13] = bodyLen & 0xFF; + } + memcpy(pData, pEthHdr, 6); /* Set DA */ + memcpy(pData+6, pEthHdr+6, 6); /* Set SA */ + //if (Type == 0x888e) + //zd1205_dump_data("pData = ", pData, dataLen); + pdot11Obj->RxInd(pData, dataLen, buf); + return; + } + } else { //Mgt Frame + pRxSignal = allocSignal(); + if (!pRxSignal) { + FPRINT("zd_ReceivePkt out of signal"); + FPRINT_V("freeSignalCount", freeSignalCount); + goto rx_release; + } + + pRxFdesc = allocFdesc(); + if (!pRxFdesc) { + FPRINT("zd_ReceivePkt out of description"); + FPRINT_V("freeFdescCount", freeFdescCount); + freeSignal(pRxSignal); + goto rx_release; + } else { + //pRxFdesc->bDataFrm = bDataFrm; + pRxFdesc->signalStrength = signalStrength; + pRxFdesc->signalQuality = signalQuality; + pRxFrame = pRxFdesc->mpdu; + pRxFrame->HdrLen = hdrLen; + pRxFrame->bodyLen = bodyLen; + memcpy(pRxFrame->header, pHdr, hdrLen); + pRxFrame->body = pBody; + pRxSignal->buf = buf; + pRxSignal->vapId = vapId; + pRxSignal->frmInfo.frmDesc = pRxFdesc; + if (!RxMgtMpdu(pRxSignal)) { + freeSignal(pRxSignal); + freeFdesc(pRxFdesc); + pdot11Obj->ReleaseBuffer(buf); + } + return; + } + } + +rx_release: + pdot11Obj->ReleaseBuffer(buf); + return; +} void zd_InitWepData(void) { - mWepIv[0] = 0; - mWepIv[1] = 0; - mWepIv[2] = 0; - mWepIv[3] = 0; - mBcIv[0] = 0; - mBcIv[1] = 0; - mBcIv[2] = 0; - mBcIv[3] = 0; + mWepIv[0] = 0; + mWepIv[1] = 0; + mWepIv[2] = 0; + mWepIv[3] = 0; + mBcIv[0] = 0; + mBcIv[1] = 0; + mBcIv[2] = 0; + mBcIv[3] = 0; } void zd_Release_80211_Buffer(void) { - releaseSignalBuf(); - releaseFdescBuf(); + releaseSignalBuf(); + releaseFdescBuf(); } //Cmd Functions BOOLEAN zd_Reset80211(zd_80211Obj_t * pObj) + { - pdot11Obj = pObj; - - initSignalBuf(); - initFdescBuf(); - ResetPSMonitor(); - ResetPMFilter(); - zd_InitWepData(); - return TRUE; + pdot11Obj = pObj; + + initSignalBuf(); + initFdescBuf(); + ResetPSMonitor(); + ResetPMFilter(); + zd_InitWepData(); + mBssCnt=0; + return TRUE; } BOOLEAN zd_HandlePsPoll(U8 *pHdr) { - Frame_t psPollFrame; + Frame_t psPollFrame; - //PSDEBUG("zd_HandlePsPoll"); - psPollFrame.HdrLen = 16; - psPollFrame.bodyLen = 0; - memcpy(&psPollFrame.header[0], pHdr, 16); - RxPsPoll(&psPollFrame); - return TRUE; + //PSDEBUG("zd_HandlePsPoll"); + psPollFrame.HdrLen = 16; + psPollFrame.bodyLen = 0; + memcpy(&psPollFrame.header[0], pHdr, 16); + RxPsPoll(&psPollFrame); + return TRUE; } BOOLEAN zd_StartAP(void) { - void *reg = pdot11Obj->reg; + void *reg = pdot11Obj->reg; - HW_SetRfChannel(pdot11Obj, mRfChannel, 1); + HW_SetRfChannel(pdot11Obj, mRfChannel, 1, mMacMode); #if defined(AMAC) - pdot11Obj->SetReg(reg, ZD_BasicRateTbl, 0); + + pdot11Obj->SetReg(reg, ZD_BasicRateTbl, 0); #endif - HW_SetSupportedRate(pdot11Obj, (U8 *)&mBrates); -#if defined(OFDM) - HW_SetSupportedRate(pdot11Obj, (U8 *)&mExtRates); + HW_SetSupportedRate(pdot11Obj, (U8 *)&mBrates); + +#if defined(OFDM) + + if(PURE_A_MODE != mMacMode) + HW_SetSupportedRate(pdot11Obj, (U8 *)&mExtRates); + #endif - ConfigBcnFIFO(); - HW_EnableBeacon(pdot11Obj, mBeaconPeriod, mDtimPeriod, AP_BSS); - HW_RadioOnOff(pdot11Obj, mRadioOn); - return TRUE; + + /* Set CAM_MODE to AP Mode */ + pdot11Obj->SetReg(reg, ZD_CAM_MODE, CAM_AP); + + ConfigBcnFIFO(); + HW_EnableBeacon(pdot11Obj, mBeaconPeriod, mDtimPeriod, AP_BSS); + HW_RadioOnOff(pdot11Obj, mRadioOn); + return TRUE; } BOOLEAN zd_ProbeReq(void) { - Signal_t *signal; + Signal_t *signal; + //FPRINT("zd_ProbeReq"); + + if ((signal = allocSignal()) == NULL) { + return FALSE; + } + signal->vapId=0; + signal->id = SIG_PROBE_REQ; + signal->block = BLOCK_SYNCH; + sigEnque(pMgtQ, (signal)); + zd_SigProcess(); + + return TRUE; +} +BOOLEAN zd_ScanReq(void) +{ + Signal_t *signal; + if ((signal = allocSignal()) == NULL) { + return FALSE; + } + signal->vapId=0x12; //This member is not used in zd1211, we can use it to carry additional information, 0x1234 indicates we don't want to start a scantimer after sending a Probe Request frame. + + signal->id = SIG_PROBE_REQ; + signal->block = BLOCK_SYNCH; + sigEnque(pMgtQ, (signal)); + zd_SigProcess(); + return TRUE; +} +#if 0 +void zd_ScanEnd() +{ + void *reg=pdot11Obj->reg; + if (mBssType == AP_BSS) + pdot11Obj->SetReg(reg, ZD_Rx_Filter, AP_RX_FILTER); + else + pdot11Obj->SetReg(reg, ZD_Rx_Filter, STA_RX_FILTER); + if (mAssoc) { + // printk("HW_SetRfChannel:%s(%d)\n",__FILE__,__LINE__); + HW_SetRfChannel(pdot11Obj, mRfChannel, 1,mMacMode); + } + + mBssCnt=mBssNum; + pdot11Obj->ConfigFlag &= ((~ACTIVE_CHANNEL_SCAN_SET) & (~JUST_CHANNEL_SCAN)); +} +void zd_ScanBegin(void) +{ + void *reg=pdot11Obj->reg; + mBssNum=0; + pdot11Obj->ConfigFlag |= (ACTIVE_CHANNEL_SCAN_SET | JUST_CHANNEL_SCAN); + pdot11Obj->SetReg(reg, ZD_Rx_Filter, (BIT_5|BIT_8)); +} +void zd_CmdScanReq(u16 channel) +{ + if(mMacMode != PURE_A_MODE) { + // printk("HW_SetRfChannel:%s(%d)\n",__FILE__,__LINE__); + HW_SetRfChannel(pdot11Obj, channel, 1,mMacMode); + } else { + // printk("HW_SetRfChannel:%s(%d)\n",__FILE__,__LINE__); + HW_SetRfChannel(pdot11Obj,dot11A_Channel[channel-1],1 ,mMacMode); + } - //FPRINT("zd_ProbeReq"); - - if ((signal = allocSignal()) == NULL) { - return FALSE; - } - - signal->id = SIG_PROBE_REQ; - signal->block = BLOCK_SYNCH; - sigEnque(pMgtQ, (signal)); - zd_SigProcess(); - - return TRUE; -} + zd_ScanReq(); + return; + +} +#endif BOOLEAN zd_CmdProbeReq(U8 bWithSSID) { - void *reg = pdot11Obj->reg; + void *reg = pdot11Obj->reg; - //FPRINT("zd_CmdProbeReq"); - if (pdot11Obj->bChScanning) { - FPRINT("Channel is under scanning...."); - if (mRequestFlag & CHANNEL_SCAN_SET) - mRequestFlag &= ~CHANNEL_SCAN_SET; - return FALSE; - } - - pdot11Obj->SetReg(reg, ZD_Rx_Filter, (BIT_5|BIT_8)); //only accept beacon and ProbeRsp frame - pdot11Obj->ConfigFlag |= ACTIVE_CHANNEL_SCAN_SET; - - mBssNum = 0; - HW_SetRfChannel(pdot11Obj, CurrScanCH, 1); - zd_ProbeReq(); - - if (mRequestFlag & CHANNEL_SCAN_SET) - mRequestFlag &= ~CHANNEL_SCAN_SET; - pdot11Obj->bChScanning = 1; + //FPRINT("zd_CmdProbeReq"); + if (pdot11Obj->bChScanning) { + FPRINT("Channel is under scanning...."); + + if (mRequestFlag & CHANNEL_SCAN_SET) + mRequestFlag &= ~CHANNEL_SCAN_SET; + return FALSE; + } + pdot11Obj->bChScanning=1; + + pdot11Obj->SetReg(reg, ZD_Rx_Filter, (BIT_5|BIT_8)); //only accept beacon and ProbeRsp frame + pdot11Obj->ConfigFlag |= ACTIVE_CHANNEL_SCAN_SET; + + mBssNum = 0; + if(mMacMode != PURE_A_MODE) { + // printk("HW_SetRfChannel:%s(%d)\n",__FILE__,__LINE__); + HW_SetRfChannel(pdot11Obj, CurrScanCH, 1,mMacMode); + } else { + // printk("HW_SetRfChannel:%s(%d)\n",__FILE__,__LINE__); + HW_SetRfChannel(pdot11Obj, dot11A_Channel[CurrScanCH-1], 1,mMacMode); + } - return TRUE; + zd_ProbeReq(); + + if (mRequestFlag & CHANNEL_SCAN_SET) + mRequestFlag &= ~CHANNEL_SCAN_SET; + + //pdot11Obj->bChScanning = 1; + return TRUE; } BOOLEAN zd_StartSTA(BOOLEAN bEnable) { - //FPRINT("zd_StartSTA"); - HW_SetSupportedRate(pdot11Obj, (U8 *)&mBrates); - HW_RadioOnOff(pdot11Obj, mRadioOn); - if (mBssType == PSEUDO_IBSS) { - zd_PseudoIbssConnect(); - } else { - pdot11Obj->ConfigFlag |= SCAN_AND_CONNECT_SET; - mRequestFlag |= CHANNEL_SCAN_SET; - } - return TRUE; + void *reg = pdot11Obj->reg; + //FPRINT("zd_StartSTA"); + HW_SetSupportedRate(pdot11Obj, (U8 *)&mBrates); + HW_RadioOnOff(pdot11Obj, mRadioOn); + + + if (mBssType == INFRASTRUCTURE_BSS) + pdot11Obj->SetReg(reg, ZD_CAM_MODE, CAM_STA); + else + pdot11Obj->SetReg(reg, ZD_CAM_MODE, CAM_IBSS); + if (mBssType == PSEUDO_IBSS) { + zd_PseudoIbssConnect(); + } else { + //if (!bEnable) + { + pdot11Obj->ConfigFlag |= SCAN_AND_CONNECT_SET; + mRequestFlag |= CHANNEL_SCAN_SET; + } + } + + return TRUE; } BOOLEAN zd_CmdDisasoc(MacAddr_t *sta, U8 rCode) { - Signal_t *signal; - //FPRINT("zd_CmdDisasoc"); - - //if (isGroup(sta)) - // return FALSE; - - if ((signal = allocSignal()) == NULL) - return FALSE; - - signal->id = SIG_DIASSOC_REQ; - signal->block = BLOCK_ASOC; - if (mBssType == INFRASTRUCTURE_BSS) { - memcpy(&signal->frmInfo.Sta, (U8 *)&mBssId, 6); - } else { - memcpy(&signal->frmInfo.Sta, sta, 6); - } - signal->frmInfo.rCode = (ReasonCode)rCode; - sigEnque(pMgtQ, (signal)); - - return TRUE; + Signal_t *signal; + //FPRINT("zd_CmdDisasoc"); + + //if (isGroup(sta)) + // return FALSE; + + if ((signal = allocSignal()) == NULL) + return FALSE; + + signal->id = SIG_DIASSOC_REQ; + signal->block = BLOCK_ASOC; + if (mBssType == INFRASTRUCTURE_BSS) { + memcpy(&signal->frmInfo.Sta, (U8 *)&mBssId, 6); + } else { + memcpy(&signal->frmInfo.Sta, sta, 6); + } + signal->frmInfo.rCode = (ReasonCode)rCode; + sigEnque(pMgtQ, (signal)); + + return TRUE; } BOOLEAN zd_CmdDeauth(MacAddr_t *sta, U8 rCode) { - Signal_t *signal; - - if ((signal = allocSignal()) == NULL) - return FALSE; - - signal->id = SIG_DEAUTH_REQ; - signal->block = BLOCK_AUTH_REQ; - memcpy(&signal->frmInfo.Sta, sta, 6); - signal->frmInfo.rCode = (ReasonCode)rCode; - sigEnque(pMgtQ, (signal)); - - return TRUE; + Signal_t *signal; + + if ((signal = allocSignal()) == NULL) + return FALSE; + + signal->id = SIG_DEAUTH_REQ; + signal->block = BLOCK_AUTH_REQ; + memcpy(&signal->frmInfo.Sta, sta, 6); + signal->frmInfo.rCode = (ReasonCode)rCode; + sigEnque(pMgtQ, (signal)); + + return TRUE; } BOOLEAN zd_PassiveScan(void) { - void *reg = pdot11Obj->reg; - - //FPRINT("zd_PassiveScan"); - - if (pdot11Obj->ConfigFlag & PASSIVE_CHANNEL_SCAN_SET) - return FALSE; - - pdot11Obj->ConfigFlag |= PASSIVE_CHANNEL_SCAN_SET; - pdot11Obj->SetReg(reg, ZD_Rx_Filter, 0x100); //only accept beacon frame - HW_SetRfChannel(pdot11Obj, CurrScanCH, 1); - pdot11Obj->StartTimer(SCAN_TIMEOUT, DO_SCAN); - - return TRUE; + void *reg = pdot11Obj->reg; + + //FPRINT("zd_PassiveScan"); + + if (pdot11Obj->ConfigFlag & PASSIVE_CHANNEL_SCAN_SET) + return FALSE; + + pdot11Obj->ConfigFlag |= PASSIVE_CHANNEL_SCAN_SET; + pdot11Obj->SetReg(reg, ZD_Rx_Filter, 0x100); //only accept beacon frame + if(mMacMode != PURE_A_MODE) { + // printk("HW_SetRfChannel:%s(%d)\n",__FILE__,__LINE__); + HW_SetRfChannel(pdot11Obj, CurrScanCH, 1,mMacMode); + } else { + // printk("HW_SetRfChannel:%s(%d)\n",__FILE__,__LINE__); + HW_SetRfChannel(pdot11Obj,dot11A_Channel[CurrScanCH-1],1 ,mMacMode); + } + + pdot11Obj->StartTimer(SCAN_TIMEOUT, DO_SCAN); + + return TRUE; } BOOLEAN zd_DisasocAll(U8 rCode) { - int i; - MacAddr_t *sta; - if (mBssType == AP_BSS) { - for (i=1; i<(MAX_AID+1); i++) { - if (sstByAid[i]->asoc == STATION_STATE_ASOC) { - sta = (MacAddr_t *)&sstByAid[i]->mac[0]; - zd_CmdDisasoc(sta, rCode); - } - } - - FlushQ(pTxQ); - } else if (mBssType == INFRASTRUCTURE_BSS) { - if (mAssoc) - zd_CmdDisasoc(&mBssId, rCode); - } + int i; + MacAddr_t *sta; + if (mBssType == AP_BSS) { + for (i=1; i<(MAX_AID+1); i++) { + if (sstByAid[i]->asoc == STATION_STATE_ASOC) { + sta = (MacAddr_t *)&sstByAid[i]->mac[0]; + zd_CmdDisasoc(sta, rCode); + } + } + + FlushQ(pTxQ); + } else if (mBssType == INFRASTRUCTURE_BSS) { + if (mAssoc) + zd_CmdDisasoc(&mBssId, rCode); + } + return TRUE; + +} + +BOOLEAN zd_ChooseAP(BOOLEAN bUseBssid) +{ + U8 i; + U16 cap; + U16 quality = 10000; + BOOLEAN found = FALSE; + + mBssIndex = 0xff; + for (i=0; iIsUSB2_0) { //host is usb 1.1 + if (mBssInfo[i].apMode == PURE_G_AP) + continue; + } + + if (cap & CAP_ESS) { + if (mBssInfo[i].signalQuality < quality ) { + quality = mBssInfo[i].signalQuality; + mBssIndex = i; + //FPRINT_V("cap", cap); + } + } + + //break; + } + } + if (mBssIndex< mBssCnt) { + found = TRUE; + //FPRINT_V("Desired AP Found, Bss Index", mBssIndex); + if (pdot11Obj->ConfigFlag & SCAN_AND_CONNECT_SET) { + //printk("zd_ChooseAP: set mRequestFlag.BSS_CONNECT_SET\n"); + mRequestFlag |= BSS_CONNECT_SET; + pdot11Obj->ConfigFlag &= ~SCAN_AND_CONNECT_SET; + } + } else { + //printk(" \n"); + //printk(KERN_ERR "****** Can't find desiredSSID:"); + //for (i=0; ipriv; - MacAddr_t *pBssid; - Element *pSsid = NULL; - U32 tmpvalue; - void *reg = pdot11Obj->reg; - //FPRINT("zd_InfraConnect"); - if (mBssNum == 0) - return FALSE; - - if ((signal = allocSignal()) == NULL) - return FALSE; - - //Disable IBSS mode - tmpvalue = pdot11Obj->GetReg(reg, ZD_BCNInterval); - tmpvalue &= ~BIT_25; - pdot11Obj->SetReg(reg, ZD_BCNInterval, tmpvalue); - mCap |= BIT_0; - mCap &= ~BIT_1; - - mBssIndex = index; - //update beacon interval - HW_UpdateBcnInterval(pdot11Obj, mBssInfo[index].bcnInterval); - - pSsid = &mBssInfo[index].ssid; - memcpy((U8 *)&mSsid, (U8 *)pSsid, pSsid->buf[1]+2); - pBssid = &mBssInfo[index].bssid; - memcpy((U8 *)&mBssId, (U8 *)pBssid, 6); - - //update Bssid - pdot11Obj->SetReg(reg, ZD_BSSID_P1, zd_cpu_to_le32(*(U32 *)&mBssId.mac[0])); - pdot11Obj->SetReg(reg, ZD_BSSID_P2, zd_cpu_to_le32(*(U32 *)&mBssId.mac[4])); - - mRfChannel = mBssInfo[index].Phpm.buf[2]; - HW_SetRfChannel(pdot11Obj, mRfChannel, 1); - - signal->id = SIG_AUTH_REQ; - signal->block = BLOCK_AUTH_REQ; - memcpy(&signal->frmInfo.Sta, (U8 *)&mBssId, 6); - sigEnque(pMgtQ, (signal)); - - if (mRequestFlag & CONNECT_TOUT_SET) - mRequestFlag &= ~CONNECT_TOUT_SET; - if (mRequestFlag & BSS_CONNECT_SET) - mRequestFlag &= ~BSS_CONNECT_SET; + MacAddr_t *pBssid; + Element *pSsid = NULL; + U32 tmpvalue; + BOOLEAN bChooseAPResult; + void *reg = pdot11Obj->reg; + //FPRINT("zd_InfraConnect"); + if (mBssNum == 0) + return FALSE; + + if ((signal = allocSignal()) == NULL) + return FALSE; + if(mCounterMeasureState) { + mRequestFlag &= ~BSS_CONNECT_SET; + return FALSE; + } + // look up global scan result table according to desired ssid, + // because mBssInfo order may be different from macp->BSSInfo[]. + /*if (mBssCnt) + { + U8 ssidLength; + for(i=0; iGetReg(reg, ZD_BCNInterval); + tmpvalue &= ~BIT_25; + pdot11Obj->SetReg(reg, ZD_BCNInterval, tmpvalue); + mCap |= BIT_0; + mCap &= ~BIT_1; + + // For IBSS Connect + if (mBssInfo[index].cap & CAP_IBSS) { + } + //mBssIndex = index; + //update beacon interval + HW_UpdateBcnInterval(pdot11Obj, mBssInfo[mBssIndex].bcnInterval); + + pSsid = &mBssInfo[mBssIndex].ssid; + memcpy((U8 *)&mSsid, (U8 *)pSsid, pSsid->buf[1]+2); + pBssid = &mBssInfo[mBssIndex].bssid; + memcpy((U8 *)&mBssId, (U8 *)pBssid, 6); + + //update Bssid + pdot11Obj->SetReg(reg, ZD_BSSID_P1, cpu_to_le32(*(U32 *)&mBssId.mac[0])); + pdot11Obj->SetReg(reg, ZD_BSSID_P2, cpu_to_le32(*(U32 *)&mBssId.mac[4])); + // Update channel number contained in the DS Parameter Set element of the received probe response or beacon frame. + mRfChannel = mBssInfo[mBssIndex].Phpm.buf[2]; + + if(PURE_A_AP == mBssInfo[mBssIndex].apMode) { + ChangeMacMode(PURE_A_MODE,mRfChannel); + zd_UpdateCardSetting(&(macp->cardSetting)); + pdot11Obj->DelayUs(1000); + HW_SetRfChannel(pdot11Obj, mRfChannel, 1, PURE_A_MODE); + + } else { + if(PURE_A_MODE == mMacMode) + mMacMode = MIXED_MODE; + ChangeMacMode(mMacMode,mRfChannel); + zd_UpdateCardSetting(&(macp->cardSetting)); + pdot11Obj->DelayUs(1000); + HW_SetRfChannel(pdot11Obj, mRfChannel, 1, MIXED_MODE); + } + + signal->id = SIG_AUTH_REQ; + signal->block = BLOCK_AUTH_REQ; + memcpy(&signal->frmInfo.Sta, (U8 *)&mBssId, 6); + sigEnque(pMgtQ, (signal)); + + if (mRequestFlag & CONNECT_TOUT_SET) + mRequestFlag &= ~CONNECT_TOUT_SET; + if (mRequestFlag & BSS_CONNECT_SET) + mRequestFlag &= ~BSS_CONNECT_SET; - return TRUE; + return TRUE; } BOOLEAN zd_IbssConnect(void) { - int i; - U8 Length; - BOOLEAN bBSSFound = FALSE; - MacAddr_t *pBssid; - BssInfo_t *pBssInfo; - void *reg = pdot11Obj->reg; - U32 tmpvalue; - //FPRINT("zd_IbssConnect"); -#if defined(OFDM) - pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_NORMAL_SLOT); - // not to use short slot time - mCap &= ~BIT_10; - pdot11Obj->ConfigFlag &= ~SHORT_SLOT_TIME_SET; - if (mMacMode == PURE_G_MODE) { - // not use protection mechanism - pdot11Obj->ConfigFlag &= ~ENABLE_PROTECTION_SET; - } else { - // force use protection mechanism - pdot11Obj->ConfigFlag |= ENABLE_PROTECTION_SET; - } -#endif - - // Recover the EIFS to 0x200. - // We need not use SleepResetDevice. In IBSS mode, we can easily - // get others traffic. (not less of Rx-Frame) - pdot11Obj->SetReg(reg, ZD_IFS_Value, 0x5200032); - if (mATIMWindow != 0) { - // Do not set macp->PwrState = PSM, otherwise - // throughput with Cirrus card (in PS mode) will down. - //macp->PwrState = PSM; - // PwrMgt = 1 - tmpvalue = pdot11Obj->GetReg(reg, ZD_BCNInterval); - tmpvalue |= BIT_26; - pdot11Obj->SetReg(reg, ZD_BCNInterval, tmpvalue); - } else { - //macp->PwrState = CAM; - // PwrMgt = 0; - tmpvalue = pdot11Obj->GetReg(reg, ZD_BCNInterval); - tmpvalue &= ~BIT_26; - pdot11Obj->SetReg(reg, ZD_BCNInterval, tmpvalue); - } - - mCap &= ~BIT_0; - mCap |= BIT_1; - - if (mBssCnt) { // IBSS found - for (i=0; iPhpm.buf[2]; - HW_SetRfChannel(pdot11Obj, mRfChannel, 1); - //FPRINT_V("mRfChannel", mRfChannel); - - pBssid = &pBssInfo->bssid; - memcpy((U8 *)&mBssId, (U8 *)pBssid, 6); - //zd1205_dump_data("mBssId = ", (U8 *)&mBssId, 6); - - //update Bssid - pdot11Obj->SetReg(reg, ZD_BSSID_P1, zd_cpu_to_le32(*(U32 *)&mBssId.mac[0])); - pdot11Obj->SetReg(reg, ZD_BSSID_P2, zd_cpu_to_le32(*(U32 *)&mBssId.mac[4])); - - //update beacon interval - mBeaconPeriod = pBssInfo->bcnInterval; - HW_UpdateBcnInterval(pdot11Obj, mBeaconPeriod); - //FPRINT_V("mBeaconPeriod", mBeaconPeriod); - - //update supported rated - memcpy((U8 *)&mBrates, (U8 *)&pBssInfo->supRates, pBssInfo->supRates.buf[1]+2); - HW_SetSupportedRate(pdot11Obj, (U8 *)&mBrates); - //zd1205_dump_data("mBrates = ", (U8 *)&mBrates, mBrates.buf[1]+2); + struct zd1205_private *macp=g_dev->priv; + int i; + U8 Length; + BOOLEAN bBSSFound = FALSE; + MacAddr_t *pBssid; + BssInfo_t *pBssInfo; + void *reg = pdot11Obj->reg; + U32 tmpvalue; + //FPRINT("zd_IbssConnect"); +#if defined(OFDM) + + pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_NORMAL_SLOT); + // not to use short slot time + mCap &= ~BIT_10; + pdot11Obj->ConfigFlag &= ~SHORT_SLOT_TIME_SET; + + if (mMacMode == PURE_G_MODE) { + // not use protection mechanism + pdot11Obj->ConfigFlag &= ~ENABLE_PROTECTION_SET; + } else if(mMacMode != PURE_A_MODE) { + // force use protection mechanism + pdot11Obj->ConfigFlag |= ENABLE_PROTECTION_SET; + } + +#endif + + + // Recover the EIFS to 0x200. + // We need not use SleepResetDevice. In IBSS mode, we can easily + // get others traffic. (not less of Rx-Frame) + pdot11Obj->SetReg(reg, ZD_IFS_Value, 0x5200032); + if (mATIMWindow != 0) { + // Do not set macp->PwrState = PSM, otherwise + // throughput with Cirrus card (in PS mode) will down. + //macp->PwrState = PSM; + // PwrMgt = 1 + tmpvalue = pdot11Obj->GetReg(reg, ZD_BCNInterval); + tmpvalue |= BIT_26; + pdot11Obj->SetReg(reg, ZD_BCNInterval, tmpvalue); + } else { + //macp->PwrState = CAM; + // PwrMgt = 0; + tmpvalue = pdot11Obj->GetReg(reg, ZD_BCNInterval); + tmpvalue &= ~BIT_26; + pdot11Obj->SetReg(reg, ZD_BCNInterval, tmpvalue); + } + + + mCap &= ~BIT_0; + mCap |= BIT_1; + + if (mBssCnt) { // IBSS found + for (i=0; icardSetting.Channel = mRfChannel = pBssInfo->Phpm.buf[2]; + mPhpm.buf[2]=mRfChannel; + if(PURE_A_AP == mBssInfo[mBssIndex].apMode) { + ChangeMacMode(PURE_A_MODE, mRfChannel); + HW_SetRfChannel(pdot11Obj, mRfChannel, 1, PURE_A_MODE); + + } else { + ChangeMacMode(MIXED_MODE,mRfChannel); + HW_SetRfChannel(pdot11Obj, mRfChannel, 1, MIXED_MODE); + } + + + //FPRINT_V("mRfChannel", mRfChannel); + + pBssid = &pBssInfo->bssid; + memcpy((U8 *)&mBssId, (U8 *)pBssid, 6); + //zd1205_dump_data("mBssId = ", (U8 *)&mBssId, 6); + + //update Bssid + pdot11Obj->SetReg(reg, ZD_BSSID_P1, cpu_to_le32(*(U32 *)&mBssId.mac[0])); + pdot11Obj->SetReg(reg, ZD_BSSID_P2, cpu_to_le32(*(U32 *)&mBssId.mac[4])); + + //update beacon interval + mBeaconPeriod = pBssInfo->bcnInterval; + HW_UpdateBcnInterval(pdot11Obj, mBeaconPeriod); + //FPRINT_V("mBeaconPeriod", mBeaconPeriod); + + //update supported rated + memcpy((U8 *)&mBrates, (U8 *)&pBssInfo->supRates, pBssInfo->supRates.buf[1]+2); + HW_SetSupportedRate(pdot11Obj, (U8 *)&mBrates); + //zd1205_dump_data("mBrates = ", (U8 *)&mBrates, mBrates.buf[1]+2); #if defined(OFDM) - if (mMacMode != PURE_B_MODE) { - if (pBssInfo->extRates.buf[0] == EID_EXT_RATES) { - memcpy((U8 *)&mExtRates, (U8 *)&pBssInfo->extRates, pBssInfo->extRates.buf[1]+2); - HW_SetSupportedRate(pdot11Obj, (U8 *)&mExtRates); - //zd1205_dump_data("mExtRates = ", (U8 *)&mExtRates, mExtRates.buf[1]+2); - } - } -#endif - //update ATIM Window - mATIMWindow = pBssInfo->IbssParms.buf[2] + (((U16)pBssInfo->IbssParms.buf[3]) << 8); - memcpy((U8 *)&mIbssParms, (U8 *)&pBssInfo->IbssParms, pBssInfo->IbssParms.buf[1]+2); - HW_UpdateATIMWindow(pdot11Obj, mATIMWindow); - //FPRINT_V("mATIMWindow", mATIMWindow); - - ConfigBcnFIFO(); - HW_EnableBeacon(pdot11Obj, mBeaconPeriod, 0, INDEPENDENT_BSS); - HW_RadioOnOff(pdot11Obj, mRadioOn); - mRequestFlag &= ~IBSS_CONNECT_SET; - - mAssoc = TRUE; - memcpy(&pdot11Obj->CurrSsid[0], (U8 *)&mSsid, mSsid.buf[1]+2); - pdot11Obj->StatusNotify(STA_ASSOCIATED, (U8 *)&mBssId); - return TRUE; - } - } else { - if (!(pdot11Obj->ConfigFlag & IBSS_CHANNEL_SCAN_SET)) { - pdot11Obj->ConfigFlag |= IBSS_CHANNEL_SCAN_SET; - zd_CmdProbeReq(1); - } - return FALSE; - } - - if (!bBSSFound) { - //FPRINT("IBSS not found, create it !!!"); - /****************************************************/ - /* We generate an IBSS */ - /****************************************************/ - U32 seed = pdot11Obj->GetReg(reg, ZD_TSF_LowPart); - mBssIndex = 0xff; - //generate random BSSID - mBssId.mac[0] = (U8)((pdot11Obj->Rand(seed) & ~0x3) | 0x2); // I/G = 0, U/L = 1 - mBssId.mac[1] = (U8)pdot11Obj->Rand(seed); - mBssId.mac[2] = (U8)pdot11Obj->Rand(seed); - mBssId.mac[3] = (U8)pdot11Obj->Rand(seed); - mBssId.mac[4] = (U8)pdot11Obj->Rand(seed); - mBssId.mac[5] = (U8)pdot11Obj->Rand(seed); - //zd1205_dump_data("mBssId = ", (U8 *)&mBssId, 6); - //update Bssid - pdot11Obj->SetReg(reg, ZD_BSSID_P1, zd_cpu_to_le32(*(U32 *)&mBssId.mac[0])); - pdot11Obj->SetReg(reg, ZD_BSSID_P2, zd_cpu_to_le32(*(U32 *)&mBssId.mac[4])); - HW_SetRfChannel(pdot11Obj, mRfChannel, 1); - //FPRINT_V("mRfChannel", mRfChannel); - - //update beacon interval - HW_UpdateBcnInterval(pdot11Obj, mBeaconPeriod); - //FPRINT_V("mBeaconPeriod", mBeaconPeriod); - - //update supported rated - HW_SetSupportedRate(pdot11Obj, (U8 *)&mBrates); - //zd1205_dump_data("mBrates = ", (U8 *)&mBrates, mBrates.buf[1]+2); + + if (mMacMode != PURE_B_MODE && mMacMode != PURE_A_MODE) { + if (pBssInfo->extRates.buf[0] == EID_EXT_RATES) { + memcpy((U8 *)&mExtRates, (U8 *)&pBssInfo->extRates, pBssInfo->extRates.buf[1]+2); + HW_SetSupportedRate(pdot11Obj, (U8 *)&mExtRates); + //zd1205_dump_data("mExtRates = ", (U8 *)&mExtRates, mExtRates.buf[1]+2); + } + } +#endif + //update ATIM Window + mATIMWindow = pBssInfo->IbssParms.buf[2] + (((U16)pBssInfo->IbssParms.buf[3]) << 8); + memcpy((U8 *)&mIbssParms, (U8 *)&pBssInfo->IbssParms, pBssInfo->IbssParms.buf[1]+2); + HW_UpdateATIMWindow(pdot11Obj, mATIMWindow); + //FPRINT_V("mATIMWindow", mATIMWindow); + + ConfigBcnFIFO(); + HW_EnableBeacon(pdot11Obj, mBeaconPeriod, 0, INDEPENDENT_BSS); + HW_RadioOnOff(pdot11Obj, mRadioOn); + mRequestFlag &= ~IBSS_CONNECT_SET; + //Modified for Continuous Reconnect to an existing IBSS + //When use a existing IBSS SSID + mRequestFlag &= ~CHANNEL_SCAN_SET; + + + mAssoc = TRUE; + memcpy(&pdot11Obj->CurrSsid[0], (U8 *)&mSsid, mSsid.buf[1]+2); + pdot11Obj->StatusNotify(STA_ASSOCIATED, (U8 *)&mBssId); + return TRUE; + } + } else { + if (!(pdot11Obj->ConfigFlag & IBSS_CHANNEL_SCAN_SET)) { + pdot11Obj->ConfigFlag |= IBSS_CHANNEL_SCAN_SET; + zd_CmdProbeReq(1); + } + return FALSE; + } + + if (!bBSSFound) { + //FPRINT("IBSS not found, create it !!!"); + /****************************************************/ + /* We generate an IBSS */ + /****************************************************/ + U32 seed = pdot11Obj->GetReg(reg, ZD_TSF_LowPart); + mBssIndex = 0xff; + //generate random BSSID + mBssId.mac[0] = (U8)((pdot11Obj->Rand(seed) & ~0x3) | 0x2); // I/G = 0, U/L = 1 + mBssId.mac[1] = (U8)pdot11Obj->Rand(seed); + mBssId.mac[2] = (U8)pdot11Obj->Rand(seed); + mBssId.mac[3] = (U8)pdot11Obj->Rand(seed); + mBssId.mac[4] = (U8)pdot11Obj->Rand(seed); + mBssId.mac[5] = (U8)pdot11Obj->Rand(seed); + //zd1205_dump_data("mBssId = ", (U8 *)&mBssId, 6); + //update Bssid + pdot11Obj->SetReg(reg, ZD_BSSID_P1, cpu_to_le32(*(U32 *)&mBssId.mac[0])); + pdot11Obj->SetReg(reg, ZD_BSSID_P2, cpu_to_le32(*(U32 *)&mBssId.mac[4])); + HW_SetRfChannel(pdot11Obj, mRfChannel, 1, mMacMode); + //FPRINT_V("mRfChannel", mRfChannel); + + //update beacon interval + HW_UpdateBcnInterval(pdot11Obj, mBeaconPeriod); + //FPRINT_V("mBeaconPeriod", mBeaconPeriod); + + //update supported rated + HW_SetSupportedRate(pdot11Obj, (U8 *)&mBrates); + //zd1205_dump_data("mBrates = ", (U8 *)&mBrates, mBrates.buf[1]+2); #if defined(OFDM) - if (pdot11Obj->IsUSB2_0 ) { - HW_SetSupportedRate(pdot11Obj, (U8 *)&mExtRates); - //zd1205_dump_data("mExtRates = ", (U8 *)&mExtRates, mExtRates.buf[1]+2); - } -#endif - - //update ATIM Window - HW_UpdateATIMWindow(pdot11Obj, mATIMWindow); - //FPRINT_V("mATIMWindow", mATIMWindow); - - ConfigBcnFIFO(); - HW_EnableBeacon(pdot11Obj, mBeaconPeriod, 0, INDEPENDENT_BSS); - HW_RadioOnOff(pdot11Obj, mRadioOn); - mRequestFlag &= ~IBSS_CONNECT_SET; - mAssoc = TRUE; - memcpy(&pdot11Obj->CurrSsid[0], (U8 *)&mSsid, mSsid.buf[1]+2); - pdot11Obj->StatusNotify(STA_ASSOCIATED, (U8 *)&mBssId); - return TRUE; - } - - return FALSE; + + if(mMacMode != PURE_A_MODE && mMacMode != PURE_B_MODE) + if (pdot11Obj->IsUSB2_0) + HW_SetSupportedRate(pdot11Obj, (U8 *)&mExtRates); + + //zd1205_dump_data("mExtRates = ", (U8 *)&mExtRates, mExtRates.buf[1]+2); +#endif + //update ATIM Window + HW_UpdateATIMWindow(pdot11Obj, mATIMWindow); + //FPRINT_V("mATIMWindow", mATIMWindow); + + ConfigBcnFIFO(); + HW_EnableBeacon(pdot11Obj, mBeaconPeriod, 0, INDEPENDENT_BSS); + HW_RadioOnOff(pdot11Obj, mRadioOn); + mRequestFlag &= ~IBSS_CONNECT_SET; + mAssoc = TRUE; + memcpy(&pdot11Obj->CurrSsid[0], (U8 *)&mSsid, mSsid.buf[1]+2); + pdot11Obj->StatusNotify(STA_ASSOCIATED, (U8 *)&mBssId); + return TRUE; + } + return FALSE; } void zd_ResetDevice(void) { - int i_state; - U16 BeaconInterval = 0x2; - U32 tmpvalue; - void *reg = pdot11Obj->reg; - // Device will reset after 1ms - HW_UpdateBcnInterval(pdot11Obj, BeaconInterval); - pdot11Obj->SetReg(reg, ZD_Pre_TBTT, 0x1); - //++ Ensure the following is an atomic operation. - - tmpvalue = pdot11Obj->GetReg(reg, ZD_PS_Ctrl); - pdot11Obj->SetReg(reg, ZD_PS_Ctrl, (tmpvalue | BIT_0)); - pdot11Obj->bDeviceInSleep = 1; -} - -void zd_ChooseAP(void) -{ - U8 i; - U16 cap; - U16 quality = 10000; - mRequestFlag &= ~BSS_CONNECT_SET; - barrier(); - mBssIndex = 0xff; - for (i=0; iIsUSB2_0) { //host is usb 1.1 - if (mBssInfo[i].apMode == PURE_G_AP) - continue; - } - - if (cap & CAP_ESS) { - if (mBssInfo[i].signalQuality < quality ) { - quality = mBssInfo[i].signalQuality; - mBssIndex = i; - //FPRINT_V("cap", cap); - } - } - - //break; - } - } - if (mBssIndex< mBssCnt) { - //FPRINT_V("Desired AP Found, Bss Index", mBssIndex); - if (pdot11Obj->ConfigFlag & SCAN_AND_CONNECT_SET) { - mRequestFlag |= BSS_CONNECT_SET; - pdot11Obj->ConfigFlag &= ~SCAN_AND_CONNECT_SET; - } - } else { - printk(" \n"); - FPRINT("****** Can't find desired AP !!!!"); - for (i=0; ireg; + // Device will reset after 1ms + HW_UpdateBcnInterval(pdot11Obj, BeaconInterval); + pdot11Obj->SetReg(reg, ZD_Pre_TBTT, 0x1); + //++ Ensure the following is an atomic operation. +#ifndef HOST_IF_USB + + i_state = pdot11Obj->EnterCS(); +#endif + + tmpvalue = pdot11Obj->GetReg(reg, ZD_PS_Ctrl); + pdot11Obj->SetReg(reg, ZD_PS_Ctrl, (tmpvalue | BIT_0)); + pdot11Obj->bDeviceInSleep = 1; + +#ifndef HOST_IF_USB + + pdot11Obj->ExitCS(i_state); + // Delay 1ms to ensure device had been reset + pdot11Obj->DelayUs(1000); +#endif + } BOOLEAN zd_PseudoIbssConnect(void) { - void *reg = pdot11Obj->reg; - U8 IBSS_BSSID[6]; - memset(IBSS_BSSID, 0, 6); - //++ - // Set EIFS=0x32 to prevent chamber low Tx-throughput (sometimes) - // problem. In chamber environment, almost no Rx-frame, once - // we detect a CRC16/CRC32 error frame, we adopt EIFS, because of - // less of RX-frame, it's less posibility to change EIFS to DIFS - // by FA (Frame Analyzer), and therefore damage the Tx-Throughput. - // We must use SleepResetDevice to trigger FA to adpot 0x32. - pdot11Obj->SetReg(reg, ZD_IFS_Value, 0x5032032); - zd_ResetDevice(); - - //update Bssid - pdot11Obj->SetReg(reg, ZD_BSSID_P1, zd_cpu_to_le32(*(U32 *)&IBSS_BSSID[0])); - pdot11Obj->SetReg(reg, ZD_BSSID_P2, zd_cpu_to_le32(*(U32 *)&IBSS_BSSID[4])); - HW_SetRfChannel(pdot11Obj, mRfChannel, 1); - mAssoc = TRUE; - pdot11Obj->StatusNotify(STA_ASSOCIATED, (U8 *)IBSS_BSSID); - - return TRUE; -} - -BOOLEAN zd_CmdConnect(U8 index) -{ - if (mBssType == INFRASTRUCTURE_BSS) { - return zd_InfraConnect(index-1); - } else if (mBssType == INDEPENDENT_BSS) { - return zd_IbssConnect(); - } else if (mBssType == PSEUDO_IBSS) { - return zd_PseudoIbssConnect(); - } - - return TRUE; + void *reg = pdot11Obj->reg; + U8 IBSS_BSSID[6]; + memset(IBSS_BSSID, 0, 6); + //++ + // Set EIFS=0x32 to prevent chamber low Tx-throughput (sometimes) + // problem. In chamber environment, almost no Rx-frame, once + // we detect a CRC16/CRC32 error frame, we adopt EIFS, because of + // less of RX-frame, it's less posibility to change EIFS to DIFS + // by FA (Frame Analyzer), and therefore damage the Tx-Throughput. + // We must use SleepResetDevice to trigger FA to adpot 0x32. + pdot11Obj->SetReg(reg, ZD_IFS_Value, 0x5032032); + zd_ResetDevice(); + + //update Bssid + pdot11Obj->SetReg(reg, ZD_BSSID_P1, cpu_to_le32(*(U32 *)&IBSS_BSSID[0])); + pdot11Obj->SetReg(reg, ZD_BSSID_P2, cpu_to_le32(*(U32 *)&IBSS_BSSID[4])); + HW_SetRfChannel(pdot11Obj, mRfChannel, 1, mMacMode); + mAssoc = TRUE; + pdot11Obj->StatusNotify(STA_ASSOCIATED, (U8 *)IBSS_BSSID); + + return TRUE; +} + + + +BOOLEAN zd_CmdConnect(U8 index, U8 bssType) +{ + if (bssType == INFRASTRUCTURE_BSS) { + //printk(KERN_ERR "Build Infra-Type BSS\n"); + return zd_InfraConnect(index-1); + } else if (bssType==INDEPENDENT_BSS) { + //printk(KERN_ERR "Build IBSS\n"); + return zd_IbssConnect(); + } else if (bssType == PSEUDO_IBSS) + return zd_PseudoIbssConnect(); + + + return TRUE; } BOOLEAN zd_CmdDisConnect(void) { - mAssoc = FALSE; - mRequestFlag |= DIS_CONNECT_SET; - - return TRUE; + mAssoc = FALSE; + mRequestFlag |= DIS_CONNECT_SET; + + return TRUE; } + BOOLEAN zd_CmdRoaming(void) { - mAssoc = FALSE; - mRequestFlag |= ROAMING_SET; + if ((mRequestFlag & ROAMING_SET) || pdot11Obj->bChScanning || (pdot11Obj->ConfigFlag & SCAN_AND_CONNECT_SET)) + return FALSE; + - return TRUE; + mAssoc = FALSE; + mRequestFlag |= ROAMING_SET; + + return TRUE; } + BOOLEAN zd_CmdFlushQ(void) { - if (pdot11Obj->QueueFlag & TX_QUEUE_SET) { - FlushQ(pTxQ); - } else if (pdot11Obj->QueueFlag & MGT_QUEUE_SET) { - FlushQ(pMgtQ); - } else if (pdot11Obj->QueueFlag & AWAKE_QUEUE_SET) { - FlushQ(pAwakeQ); - } + if (pdot11Obj->QueueFlag & TX_QUEUE_SET) { + FlushQ(pTxQ); + } else if (pdot11Obj->QueueFlag & MGT_QUEUE_SET) { + FlushQ(pMgtQ); + } else if (pdot11Obj->QueueFlag & AWAKE_QUEUE_SET) { + FlushQ(pAwakeQ); + } - return TRUE; + return TRUE; } - + BOOLEAN zd_CmdProcess(U16 CmdId, void *parm1, U32 parm2) { - BOOLEAN status = FALSE; - - switch(CmdId) { - case CMD_RESET_80211: - status = zd_Reset80211((zd_80211Obj_t *)parm1); - break; - - case CMD_ENABLE: - if (mBssType == AP_BSS) - status = zd_StartAP(); - else { - if (!mIfaceOpened) { - status = zd_StartSTA(1); - mIfaceOpened = TRUE; - } else { - pdot11Obj->ConfigFlag |= SCAN_AND_CONNECT_SET; - zd_ChooseAP(); - } - } - break; - - case CMD_DISASOC: //IAPP cth - status = zd_CmdDisasoc((MacAddr_t*)parm1, (U8)parm2); - break; - - case CMD_DEAUTH://MAC filter cth - status = zd_CmdDeauth((MacAddr_t*)parm1, (U8)parm2); - break; - - case CMD_PS_POLL: - //PSDEBUG("CMD_PS_POLL"); - status = zd_HandlePsPoll((U8 *)parm1); - break; - - case CMD_PASSIVE_SCAN: - status = zd_PassiveScan(); - break; - - case CMD_DISASOC_ALL: - status = zd_DisasocAll((U8)parm2); - break; - - case CMD_CONNECT: - status = zd_CmdConnect((U8)parm2); - break; - - case CMD_PROBE_REQ: - //FPRINT("CMD_PROBE_REQ"); - status = zd_CmdProbeReq((U8)parm2); - pdot11Obj->ConfigFlag |= JUST_CHANNEL_SCAN; - break; - - case CMD_DIS_CONNECT: - status = zd_CmdDisConnect(); - break; - - case CMD_FLUSH_QUEUE: - status = zd_CmdFlushQ(); - break; - - case CMD_ROAMING: - status = zd_CmdRoaming(); - break; - - default: - status = FALSE; - break; - } - - return status; + BOOLEAN status = TRUE; + + switch(CmdId) { + case CMD_RESET_80211: + status = zd_Reset80211((zd_80211Obj_t *)parm1); + break; + + case CMD_ENABLE: + if (mBssType == AP_BSS) + status = zd_StartAP(); + else { + if ((pdot11Obj->ConfigFlag & SCAN_AND_CONNECT_SET)||(mRequestFlag & CHANNEL_SCAN_SET)) { + // printk("Scan and connect is underGoing\n"); + break; + } else if (!mIfaceOpened) { + status = zd_StartSTA(1); + mIfaceOpened = TRUE; + } else { + pdot11Obj->ConfigFlag |= SCAN_AND_CONNECT_SET; + zd_ChooseAP(0); + } + } + + break; + + case CMD_DISASOC: //IAPP cth + status = zd_CmdDisasoc((MacAddr_t*)parm1, (U8)parm2); + break; + + case CMD_DEAUTH://MAC filter cth + status = zd_CmdDeauth((MacAddr_t*)parm1, (U8)parm2); + break; + + case CMD_PS_POLL: + //PSDEBUG("CMD_PS_POLL"); + status = zd_HandlePsPoll((U8 *)parm1); + break; + + case CMD_PASSIVE_SCAN: + status = zd_PassiveScan(); + break; + + case CMD_DISASOC_ALL: + status = zd_DisasocAll((U8)parm2); + break; + + case CMD_CONNECT: { + U8 *pBsstype=(U8*)parm1; + status = zd_CmdConnect((U8)parm2,*pBsstype); + } + break; + + case CMD_PROBE_REQ: + //FPRINT("CMD_PROBE_REQ"); + status = zd_CmdProbeReq((U8)parm2); + pdot11Obj->ConfigFlag |= JUST_CHANNEL_SCAN; + break; + + case CMD_DIS_CONNECT: + status = zd_CmdDisConnect(); + break; + + case CMD_FLUSH_QUEUE: + status = zd_CmdFlushQ(); + break; + + case CMD_ROAMING: + status = zd_CmdRoaming(); + break; + + default: + status = FALSE; + break; + } + + return status; } //Event Nofify Functions void zd_NextBcn(void) { - if (mBssType == AP_BSS) { - if (mDtimCount == 0) - mDtimCount = mDtimPeriod; - mDtimCount--; - } - ConfigBcnFIFO(); - - if (pTxQ->cnt) - pdot11Obj->QueueFlag |= TX_QUEUE_SET; - - return; + if (mBssType == AP_BSS) { + if (mDtimCount == 0) + mDtimCount = mDtimPeriod; + mDtimCount--; + } + + ConfigBcnFIFO(); + + if (pTxQ->cnt) + pdot11Obj->QueueFlag |= TX_QUEUE_SET; + return; } void zd_DtimNotify(void) { - SendMcPkt(); - return; + SendMcPkt(); + return; } extern BOOLEAN Tchal_WaitChalRsp(Signal_t *signal); void zd_SendTChalMsg(void) { - Tchal_WaitChalRsp(NULL); - return; + Tchal_WaitChalRsp(NULL); + return; } extern BOOLEAN AuthTimeOut(Signal_t *signal); void zd_SendTAuthMsg(void) { - AuthTimeOut(NULL); - return; + AuthTimeOut(NULL); + return; } extern BOOLEAN AsocTimeOut(Signal_t *signal); void zd_SendTAsocMsg(void) { - AsocTimeOut(NULL); - return; + AsocTimeOut(NULL); + return; } + void zd_SwitchNextCH(void) { - void *reg = pdot11Obj->reg; - int i_state; - U32 tmp; - FPRINT("zd_SwitchNextCH"); - - if (CurrScanCH > MAX_CHANNEL_ALLOW) { - U8 i, j; - U16 cap; - - if (mBssType == AP_BSS) { - pdot11Obj->SetReg(reg, ZD_Rx_Filter, AP_RX_FILTER); - } else { - pdot11Obj->SetReg(reg, ZD_Rx_Filter, STA_RX_FILTER); - } - - if (pdot11Obj->ConfigFlag & PASSIVE_CHANNEL_SCAN_SET) - pdot11Obj->ConfigFlag &= ~PASSIVE_CHANNEL_SCAN_SET; - - if (pdot11Obj->ConfigFlag & IBSS_CHANNEL_SCAN_SET) { - pdot11Obj->ConfigFlag &= ~IBSS_CHANNEL_SCAN_SET; - //mRequestFlag |= IBSS_CONNECT_SET; - } - CurrScanCH = 1; - pdot11Obj->bChScanning = 0; + void *reg = pdot11Obj->reg; + static u8 LastScanMacMode; + static u8 ScanAround = 0; + //static u8 ScanWait = 0; + static u8 initMAC_Mode = 0xff; + + if(initMAC_Mode == 0xff) + initMAC_Mode = mMacMode; + //FPRINT("zd_SwitchNextCH"); + + if ((PURE_A_MODE != mMacMode && CurrScanCH > MAX_CHANNEL_ALLOW) || + (PURE_A_MODE == mMacMode && CurrScanCH > dot11A_Channel_Amount - 1) + //In 11a, channel array index 0 is also meaningful. + ) { //Scan Finish... +#ifdef HMAC_DEBUG + U8 i, j; + U16 cap; +#endif - if (pdot11Obj->ConfigFlag & ACTIVE_CHANNEL_SCAN_SET) { + if (mBssType == AP_BSS) + pdot11Obj->SetReg(reg, ZD_Rx_Filter, AP_RX_FILTER); + else + pdot11Obj->SetReg(reg, ZD_Rx_Filter, STA_RX_FILTER); + + if (pdot11Obj->ConfigFlag & PASSIVE_CHANNEL_SCAN_SET) + pdot11Obj->ConfigFlag &= ~PASSIVE_CHANNEL_SCAN_SET; + + if (pdot11Obj->ConfigFlag & IBSS_CHANNEL_SCAN_SET) { + pdot11Obj->ConfigFlag &= ~IBSS_CHANNEL_SCAN_SET; + //mRequestFlag |= IBSS_CONNECT_SET; + } + + CurrScanCH = 1; + pdot11Obj->bChScanning = 0; + ScanAround=0; + + if (pdot11Obj->ConfigFlag & ACTIVE_CHANNEL_SCAN_SET) { #ifdef HMAC_DEBUG - printk("\nSSID BSSID CH Signal Mode Basic-Rates Ext-Rates b/g AP"); - printk("\n------------------------------------------------------------------------------------"); - for (i=0; iConfigFlag &= ~ACTIVE_CHANNEL_SCAN_SET; - mBssCnt = mBssNum; - } - - if (pdot11Obj->ConfigFlag & JUST_CHANNEL_SCAN) { - pdot11Obj->ConfigFlag &= ~JUST_CHANNEL_SCAN; - if (mAssoc) - HW_SetRfChannel(pdot11Obj, mRfChannel, 1); - } else { - if (mBssType == INFRASTRUCTURE_BSS) - zd_ChooseAP(); - else if (mBssType == INDEPENDENT_BSS) - zd_IbssConnect(); - } - if (pdot11Obj->ConfigFlag & SCAN_AND_CONNECT_SET) { - pdot11Obj->ConfigFlag &= ~SCAN_AND_CONNECT_SET; - } - - return; - } - CurrScanCH++; - HW_SetRfChannel(pdot11Obj, CurrScanCH, 1); - //for debug - //pdot11Obj->SetReg(reg, ZD_USB_DEBUG_PORT, 0x22222222); - - if (pdot11Obj->ConfigFlag & PASSIVE_CHANNEL_SCAN_SET) - pdot11Obj->StartTimer(SCAN_TIMEOUT, DO_SCAN); - - if (pdot11Obj->ConfigFlag & ACTIVE_CHANNEL_SCAN_SET) - zd_ProbeReq(); - return; + printk("\nSSID BSSID CH Signal Mode Basic-Rates Ext-Rates b/g AP"); + printk("\n------------------------------------------------------------------------------------"); + for (i=0; iConfigFlag &= ~ACTIVE_CHANNEL_SCAN_SET; + mBssCnt = mBssNum; + }//End of ACTIVE_CHANNEL_SCAN_SET + + if (pdot11Obj->ConfigFlag & JUST_CHANNEL_SCAN) { + pdot11Obj->ConfigFlag &= ~JUST_CHANNEL_SCAN; + + if (mAssoc) + HW_SetRfChannel(pdot11Obj, mRfChannel, 1, initMAC_Mode); + } else { + if (mBssType == INFRASTRUCTURE_BSS) + zd_ChooseAP(0); + else if (mBssType == INDEPENDENT_BSS) + zd_IbssConnect(); + } + + if (pdot11Obj->ConfigFlag & SCAN_AND_CONNECT_SET) { + pdot11Obj->ConfigFlag &= ~SCAN_AND_CONNECT_SET; + } + initMAC_Mode = 0xff; + return; + }//End of (CurrentScannedChannel > MAX_CHANNEL_ALLOW) + + CurrScanCH++; + if(mMacMode != PURE_A_MODE && CurrScanCH <= MAX_CHANNEL_ALLOW + 1) { + //printk("HW_SetRfChannel:%s(%d)\n",__FILE__,__LINE__); + HW_SetRfChannel(pdot11Obj, CurrScanCH, 1,mMacMode); + LastScanMacMode = mMacMode; + } else if(mMacMode == PURE_A_MODE && CurrScanCH<=dot11A_Channel_Amount) { + //printk("HW_SetRfChannel:%s(%d)\n",__FILE__,__LINE__); + HW_SetRfChannel(pdot11Obj, dot11A_Channel[CurrScanCH-1],1, mMacMode); + LastScanMacMode = mMacMode; + } + if(PURE_A_MODE != LastScanMacMode && CurrScanCH > MAX_CHANNEL_ALLOW && ScanAround <1) { + if(pdot11Obj->rfMode == AL7230B_RF) { + mMacMode = PURE_A_MODE; + CurrScanCH = 1; + ChangeMacMode(PURE_A_MODE,dot11A_Channel[CurrScanCH-1]); + pdot11Obj->DelayUs(1000); + HW_SetRfChannel(pdot11Obj, dot11A_Channel[CurrScanCH-1],0,mMacMode); + ScanAround ++; + } + + + } else if(ScanAround < 1 &&PURE_A_MODE == LastScanMacMode && CurrScanCH > dot11A_Channel_Amount - 1) { + ScanAround ++; + CurrScanCH = 1; + mMacMode = MIXED_MODE; + ChangeMacMode(MIXED_MODE, CurrScanCH); + pdot11Obj->DelayUs(1000); + HW_SetRfChannel(pdot11Obj, CurrScanCH, 0,mMacMode); + } + + + //for debug + //pdot11Obj->SetReg(reg, ZD_USB_DEBUG_PORT, 0x22222222); + + if (pdot11Obj->ConfigFlag & PASSIVE_CHANNEL_SCAN_SET) + pdot11Obj->StartTimer(SCAN_TIMEOUT, DO_SCAN); + + if (pdot11Obj->ConfigFlag & ACTIVE_CHANNEL_SCAN_SET) + zd_ProbeReq(); + + return; } void zd_UpdateCurrTxRate(U8 rate, U16 aid) { - Hash_t *pHash; - - if (mBssType == INFRASTRUCTURE_BSS) { - pHash = sstByAid[0]; - pHash->CurrTxRate = rate; - } else { - if (aid) { - pHash = sstByAid[aid]; + Hash_t *pHash; + if (mBssType == INFRASTRUCTURE_BSS) { + pHash = sstByAid[0]; + pHash->CurrTxRate = rate; + } else { + if (aid) { + pHash = sstByAid[aid]; #if !defined(OFDM) - pHash->CurrTxRate = rate; -#else - if (rate < pHash->CurrTxRate) { //Retry Failed happened - pHash->FailedFrames++; - //FPRINT_V("FailedFrames", pHash->FailedFrames); - } -#endif - } - } + + pHash->CurrTxRate = rate; +#else + + if (rate < pHash->CurrTxRate) { //Retry Failed happened + pHash->FailedFrames++; + //FPRINT_V("FailedFrames", pHash->FailedFrames); + } +#endif + + } + } } void zd_EnableProtection(U8 protect) { - U32 tmpValue; - void *reg = pdot11Obj->reg; - - if (protect) { - //FPRINT("zd_EnableProtection"); - pdot11Obj->ConfigFlag |= ENABLE_PROTECTION_SET; - mErp.buf[2] |= USE_PROTECTION; - tmpValue = pdot11Obj->GetReg(reg, ZD_RTS_CTS_Rate); - tmpValue &= ~CTS_MOD_TYPE_OFDM; - tmpValue |= CTS_RATE_11M; - pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, tmpValue); - } else { - //FPRINT("zd_DisableProtection"); - pdot11Obj->ConfigFlag &= ~ENABLE_PROTECTION_SET; - mErp.buf[2] &= ~USE_PROTECTION; - - //pdot11Obj->ConfigFlag &= ~SHORT_SLOT_TIME_SET; - mCap |= CAP_SHORT_SLOT_TIME; - pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_SHORT_SLOT); - } + U32 tmpValue; + void *reg = pdot11Obj->reg; + + if (protect) { + //FPRINT("zd_EnableProtection"); + pdot11Obj->ConfigFlag |= ENABLE_PROTECTION_SET; + mErp.buf[2] |= USE_PROTECTION; + tmpValue = pdot11Obj->GetReg(reg, ZD_RTS_CTS_Rate); + tmpValue &= ~CTS_MOD_TYPE_OFDM; + tmpValue |= CTS_RATE_11M; + pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, tmpValue); + } else { + //FPRINT("zd_DisableProtection"); + pdot11Obj->ConfigFlag &= ~ENABLE_PROTECTION_SET; + mErp.buf[2] &= ~USE_PROTECTION; + + //pdot11Obj->ConfigFlag &= ~SHORT_SLOT_TIME_SET; + mCap |= CAP_SHORT_SLOT_TIME; + pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_SHORT_SLOT); + } } void zd_EnableBarker(U8 barker) { - void *reg = pdot11Obj->reg; - if (barker) { - //FPRINT("zd_EnableBarker"); - pdot11Obj->ConfigFlag |= BARKER_PREAMBLE_SET; - mErp.buf[2] |= BARKER_PREAMBLE; - pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, 0x30000); - } else { - //FPRINT("zd_DisableBarker"); - pdot11Obj->ConfigFlag &= ~BARKER_PREAMBLE_SET; - mErp.buf[2] &= ~BARKER_PREAMBLE; - pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, 0x30000); - } + void *reg = pdot11Obj->reg; + if (barker) { + //FPRINT("zd_EnableBarker"); + pdot11Obj->ConfigFlag |= BARKER_PREAMBLE_SET; + mErp.buf[2] |= BARKER_PREAMBLE; + pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, 0x30000); + } else { + //FPRINT("zd_DisableBarker"); + pdot11Obj->ConfigFlag &= ~BARKER_PREAMBLE_SET; + mErp.buf[2] &= ~BARKER_PREAMBLE; + pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, 0x30000); + + } + if(PURE_A_MODE == mMacMode) //Use Slowest rate when CTS/RTS,MZCai + pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate,0x01090109); + else + pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, 0x30000); + } void zd_EnableShortSlot(U8 slot) { - void *reg = pdot11Obj->reg; - if (slot) { - //FPRINT("zd_EnableShortSlot"); - pdot11Obj->ConfigFlag |= SHORT_SLOT_TIME_SET; - pdot11Obj->SetReg(reg, ZD_IFS_Value, 0x547c00a); - pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_NORMAL_SLOT); - } else { - //FPRINT("zd_DisableShortSlot"); - pdot11Obj->ConfigFlag &= ~SHORT_SLOT_TIME_SET; - pdot11Obj->SetReg(reg, ZD_IFS_Value, 0x547c032); - pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_LONG_SLOT); - } + void *reg = pdot11Obj->reg; + if (slot) { + //FPRINT("zd_EnableShortSlot"); + pdot11Obj->ConfigFlag |= SHORT_SLOT_TIME_SET; + pdot11Obj->SetReg(reg, ZD_IFS_Value, 0x547c00a); + pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_NORMAL_SLOT); + } else { + //FPRINT("zd_DisableShortSlot"); + pdot11Obj->ConfigFlag &= ~SHORT_SLOT_TIME_SET; + pdot11Obj->SetReg(reg, ZD_IFS_Value, 0x547c032); + pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_LONG_SLOT); + } } void zd_PsChange(U8 PwrState) { - //FPRINT("zd_PsChange"); - - mPwrState = PwrState; - mRequestFlag |= PS_CHANGE_SET; - return; + //FPRINT("zd_PsChange"); + + mPwrState = PwrState; + mRequestFlag |= PS_CHANGE_SET; + return; } void zd_EventNotify(U16 EventId, U32 parm1, U32 parm2, U32 parm3) { - switch(EventId) { - case EVENT_TBCN: - zd_NextBcn(); - break; - - case EVENT_DTIM_NOTIFY: - zd_DtimNotify(); - break; - - case EVENT_TX_COMPLETE: - TxCompleted(parm1, (U8)parm2, (U16)parm3); - break; - - case EVENT_TCHAL_TIMEOUT: - zd_SendTChalMsg(); - break; - - case EVENT_SCAN_TIMEOUT: - zd_SwitchNextCH(); - break; - - case EVENT_UPDATE_TX_RATE: - zd_UpdateCurrTxRate((U8)parm1, (U16)parm2); - break; - - case EVENT_SW_RESET: - //zd_SwReset(); - break; - - case EVENT_BUF_RELEASE: - zd_Release_80211_Buffer(); - break; - - case EVENT_AUTH_TIMEOUT: - zd_SendTAuthMsg(); - break; - - case EVENT_ASOC_TIMEOUT: - zd_SendTAsocMsg(); - break; - - case EVENT_PS_CHANGE: - zd_PsChange((U8)parm1); - break; - - case EVENT_MORE_DATA: - mRequestFlag |= PS_POLL_SET; - break; - - case EVENT_ENABLE_PROTECTION: - zd_EnableProtection((U8)parm1); - break; - - case EVENT_ENABLE_BARKER: - zd_EnableBarker((U8)parm1); - break; - - case EVENT_SHORT_SLOT: - zd_EnableShortSlot((U8)parm1); - break; - - default: - break; - } + //struct zd1205_private *macp = g_dev->priv; + + + switch(EventId) { + case EVENT_TBCN: + zd_NextBcn(); + break; + + case EVENT_DTIM_NOTIFY: + zd_DtimNotify(); + break; + + case EVENT_TX_COMPLETE: + TxCompleted(parm1, (U8)parm2, (U16)parm3); + break; + + case EVENT_TCHAL_TIMEOUT: + zd_SendTChalMsg(); + break; + + case EVENT_SCAN_TIMEOUT: + zd_SwitchNextCH(); + break; + + case EVENT_UPDATE_TX_RATE: + zd_UpdateCurrTxRate((U8)parm1, (U16)parm2); + break; + + case EVENT_SW_RESET: + //zd_SwReset(); + break; + + case EVENT_BUF_RELEASE: + zd_Release_80211_Buffer(); + break; + + case EVENT_AUTH_TIMEOUT: + zd_SendTAuthMsg(); + break; + + case EVENT_ASOC_TIMEOUT: + zd_SendTAsocMsg(); + break; + + case EVENT_PS_CHANGE: + zd_PsChange((U8)parm1); + break; - return; + case EVENT_MORE_DATA: + mRequestFlag |= PS_POLL_SET; + break; + + case EVENT_ENABLE_PROTECTION: + zd_EnableProtection((U8)parm1); + break; + + case EVENT_ENABLE_BARKER: + zd_EnableBarker((U8)parm1); + break; + + case EVENT_SHORT_SLOT: + zd_EnableShortSlot((U8)parm1); + break; + + default: + break; + } + + return; } BOOLEAN zd_CleanupTxQ(void) { - //FPRINT("*****zd_CleanupTxQ*****"); - while(CleanupTxQ()) - ; /* Empty line */ - - if (!pTxQ->cnt) { - pdot11Obj->QueueFlag &= ~TX_QUEUE_SET; - return TRUE; - } else - return FALSE; + //FPRINT("*****zd_CleanupTxQ*****"); + while(CleanupTxQ()) + ; + + if (!pTxQ->cnt) { + pdot11Obj->QueueFlag &= ~TX_QUEUE_SET; + return TRUE; + } else + return FALSE; } BOOLEAN zd_CleanupAwakeQ(void) -{ - while(CleanupAwakeQ()) - ; /* Empty line */ - - if (!pAwakeQ->cnt) { - pdot11Obj->QueueFlag &= ~AWAKE_QUEUE_SET; - return TRUE; - } else { - return FALSE; - } +{ + //PSDEBUG("*****zd_CleanupAwakeQ*****"); + while(CleanupAwakeQ()) + ; + + if (!pAwakeQ->cnt) { + pdot11Obj->QueueFlag &= ~AWAKE_QUEUE_SET; + return TRUE; + } else { +#if 0 + Signal_t *signal; + FrmInfo_t *pfrmInfo; + FrmDesc_t *pfrmDesc; + + while(pAwakeQ->cnt) { + signal = sigDeque(pAwakeQ); + pfrmInfo = &signal->frmInfo; + pfrmDesc = pfrmInfo->frmDesc; + freeFdesc(pfrmDesc); + pdot11Obj->ReleaseBuffer(signal->buf); + freeSignal(signal); + } +#endif + return FALSE; + } } void zd_ShowQInfo(void) -{ - printk(KERN_DEBUG "AwakeQ = %x, MgtQ = %x, TxQ = %x, mcQ = %x\n", - pAwakeQ->cnt, pMgtQ->cnt, pTxQ->cnt, pPsQ[0]->cnt); - printk(KERN_DEBUG "PsQ1 = %x, PsQ2 = %x, PsQ3 = %x, PsQ4 = %x\n", - pPsQ[1]->cnt, pPsQ[2]->cnt, pPsQ[3]->cnt, pPsQ[4]->cnt); +{ + printk(KERN_DEBUG "AwakeQ = %x, MgtQ = %x, TxQ = %x, mcQ = %x\n", + pAwakeQ->cnt, pMgtQ->cnt, pTxQ->cnt, pPsQ[0]->cnt); + printk(KERN_DEBUG "PsQ1 = %x, PsQ2 = %x, PsQ3 = %x, PsQ4 = %x\n", + pPsQ[1]->cnt, pPsQ[2]->cnt, pPsQ[3]->cnt, pPsQ[4]->cnt); } extern U8 AuthReqState; extern U8 AsocState; void zd_ShowState(void) { - printk(KERN_DEBUG "AuthReqState = %04x, AsocState = %04x\n", AuthReqState, AsocState); - printk(KERN_DEBUG "mPwrState = %04x, mAssoc = %04x\n", mPwrState, mAssoc); - printk(KERN_DEBUG "mAuthAlg = %04x, mBssIndex = %04x\n", mAuthAlg, mBssIndex); - printk(KERN_DEBUG "mBssType = %04x, ConfigFlag = %04x\n", mBssType, pdot11Obj->ConfigFlag); + printk(KERN_DEBUG "AuthReqState = %04x, AsocState = %04x\n", AuthReqState, AsocState); + printk(KERN_DEBUG "mPwrState = %04x, mAssoc = %04x\n", mPwrState, mAssoc); + printk(KERN_DEBUG "mAuthAlg = %04x, mBssIndex = %04x\n", mAuthAlg, mBssIndex); + printk(KERN_DEBUG "mBssType = %04x, ConfigFlag = %04x\n", mBssType, pdot11Obj->ConfigFlag); } - + void zd_ShowHashInfo(U8 aid) { - Hash_t *pHash = NULL; - - if (mBssType == INFRASTRUCTURE_BSS) { - aid = 0; - } - - pHash = sstByAid[aid]; - zd1205_dump_data("Mac Addr = ", pHash->mac, 6); - FPRINT_V("Auth", pHash->auth); - FPRINT_V("Asoc", pHash->asoc); - FPRINT_V("psm", pHash->psm); - FPRINT_V("Aid", pHash->aid); - FPRINT_V("vapId", pHash->vapId); - FPRINT_V("bErpSta", pHash->bErpSta); - FPRINT_V("lsInterval", pHash->lsInterval); - FPRINT_V("encryMode", pHash->encryMode); - FPRINT_V("pkInstalled", pHash->pkInstalled); - FPRINT_V("ZydasMode", pHash->ZydasMode); - FPRINT_V("AlreadyIn", pHash->AlreadyIn); - FPRINT_V("CurrTxRate", pHash->CurrTxRate); - FPRINT_V("MaxRate", pHash->MaxRate); - FPRINT_V("Preamble", pHash->Preamble); - FPRINT_V("KeyId", pHash->KeyId); - FPRINT_V("Rx IV16", pHash->RxSeed.IV16); - FPRINT_V("Rx IV32", pHash->RxSeed.IV32); - zd1205_dump_data("TK = ", pHash->TxSeed.TK, 16); - zd1205_dump_data("Tx MIC K0 = ", (U8 *)&pHash->TxMicKey.K0, 4); - zd1205_dump_data("Tx MIC K1 = ", (U8 *)&pHash->TxMicKey.K1, 4); - zd1205_dump_data("Rx MIC K0 = ", (U8 *)&pHash->RxMicKey.K0, 4); - zd1205_dump_data("Rx MIC K1 = ", (U8 *)&pHash->RxMicKey.K1, 4); + Hash_t *pHash = NULL; + if (mBssType == INFRASTRUCTURE_BSS) { + aid = 0; + } + pHash = sstByAid[aid]; + zd1205_dump_data("Mac Addr = ", pHash->mac, 6); + FPRINT_V("Auth", pHash->auth); + FPRINT_V("Asoc", pHash->asoc); + FPRINT_V("psm", pHash->psm); + FPRINT_V("Aid", pHash->aid); + FPRINT_V("vapId", pHash->vapId); + FPRINT_V("bErpSta", pHash->bErpSta); + FPRINT_V("lsInterval", pHash->lsInterval); + FPRINT_V("encryMode", pHash->encryMode); + FPRINT_V("pkInstalled", pHash->pkInstalled); + FPRINT_V("ZydasMode", pHash->ZydasMode); + FPRINT_V("AlreadyIn", pHash->AlreadyIn); + FPRINT_V("CurrTxRate", pHash->CurrTxRate); + FPRINT_V("MaxRate", pHash->MaxRate); + FPRINT_V("Preamble", pHash->Preamble); + FPRINT_V("KeyId", pHash->KeyId); + FPRINT_V("Rx IV16", pHash->RxSeed.IV16); + FPRINT_V("Rx IV32", pHash->RxSeed.IV32); + zd1205_dump_data("TK = ", pHash->TxSeed.TK, 16); + zd1205_dump_data("Tx MIC K0 = ", (U8 *)&pHash->TxMicKey.K0, 4); + zd1205_dump_data("Tx MIC K1 = ", (U8 *)&pHash->TxMicKey.K1, 4); + zd1205_dump_data("Rx MIC K0 = ", (U8 *)&pHash->RxMicKey.K0, 4); + zd1205_dump_data("Rx MIC K1 = ", (U8 *)&pHash->RxMicKey.K1, 4); +#if 0 + + FPRINT_V("KeyId", mWpaBcKeyId); + FPRINT_V("GkInstalled", mGkInstalled); + FPRINT_V("IV16", mIv16); + FPRINT_V("IV32", mIv32); + zd1205_dump_data("keyContent = ", pHash->keyContent, 16); + zd1205_dump_data("TK = ", mBcSeed.TK, 16); + zd1205_dump_data("Tx MIC K0 = ", (U8 *)&mBcMicKey.K0, 4); + zd1205_dump_data("Tx MIC K1 = ", (U8 *)&mBcMicKey.K1, 4); +#endif } void zd_UpdateCardSetting(card_Setting_t *pSetting) { - void *reg = pdot11Obj->reg; - static BOOLEAN InitConfig = TRUE; - U8 bcAddr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; - U32 tmpValue; - BOOLEAN bReConnect = FALSE; - //FPRINT("zd_UpdateCardSetting"); - - if (pSetting->AuthMode == 0) { //open system only - mAuthAlogrithms[0] = OPEN_SYSTEM; - mAuthAlogrithms[1] = NULL_AUTH; - mAuthAlg = OPEN_SYSTEM; - } else if (pSetting->AuthMode == 1) { //shared key only - mAuthAlogrithms[0] = SHARE_KEY; - mAuthAlogrithms[1] = NULL_AUTH; - mAuthAlg = SHARE_KEY; - } else if (pSetting->AuthMode == 2) { //auto auth mode - mAuthAlogrithms[0] = OPEN_SYSTEM; - mAuthAlogrithms[1] = SHARE_KEY; - } - - if (mAuthMode != pSetting->AuthMode) { - if (!InitConfig) - bReConnect = TRUE; - } - mAuthMode = pSetting->AuthMode; - - if (mLimitedUser != pSetting->LimitedUser) { - mLimitedUser = pSetting->LimitedUser; - } - - mBlockBSS = pSetting->BlockBSS; - mSwCipher = pSetting->SwCipher; - mKeyFormat = pSetting->EncryMode; - mKeyId = pSetting->EncryKeyId; - mBcKeyId = pSetting->BcKeyId; - mDynKeyMode = pSetting->DynKeyMode; - mFragThreshold = pSetting->FragThreshold; - mRtsThreshold = pSetting->RTSThreshold; - mBeaconPeriod = pSetting->BeaconInterval; - mDtimPeriod = pSetting->DtimPeriod; - if (!InitConfig) - HW_EnableBeacon(pdot11Obj, mBeaconPeriod, mDtimPeriod, mBssType); - - if (mRadioOn != pSetting->RadioOn) { - mRadioOn = pSetting->RadioOn; - if (!InitConfig) - HW_RadioOnOff(pdot11Obj, mRadioOn); - } - - if (mRfChannel != pSetting->Channel) { - mRfChannel = pSetting->Channel; - mPhpm.buf[0] = EID_DSPARMS; - mPhpm.buf[1] = 1; - mPhpm.buf[2] = mRfChannel; - if (!InitConfig) { - if (pSetting->BssType != INFRASTRUCTURE_BSS) - HW_SetRfChannel(pdot11Obj, mRfChannel, 1); - - if (pSetting->BssType == INDEPENDENT_BSS) { - mRequestFlag |= CHANNEL_SCAN_SET; - - pdot11Obj->ConfigFlag |= SCAN_AND_CONNECT_SET; - //bReConnect = FALSE; - } - } - } - - mPreambleType = pSetting->PreambleType; - if (mPreambleType) - mCap |= CAP_SHORT_PREAMBLE; - else - mCap &= ~CAP_SHORT_PREAMBLE; - - mPrivacyInvoked = pSetting->EncryOnOff; - if (pSetting->DynKeyMode > 0) - mPrivacyInvoked = TRUE; - - if (mPrivacyInvoked) - mCap |= CAP_PRIVACY; - else - mCap &= ~CAP_PRIVACY; - - memcpy(&dot11DesiredSsid, pSetting->Info_SSID, pSetting->Info_SSID[1]+2); - if (dot11DesiredSsid.buf[1] == 0) - mProbeWithSsid = FALSE; - else - mProbeWithSsid = TRUE; - //mProbeWithSsid = FALSE; //debug for ANY connection - - if ((pSetting->BssType == INFRASTRUCTURE_BSS) || (pSetting->BssType == INDEPENDENT_BSS)) { - if (!InitConfig) { - if (memcmp(&mSsid, &dot11DesiredSsid, dot11DesiredSsid.buf[1]+2) != 0 ) { - bReConnect = TRUE; - } - } - - if (pSetting->BssType == INDEPENDENT_BSS) { - memcpy(&mSsid, &dot11DesiredSsid, dot11DesiredSsid.buf[1]+2); - mATIMWindow = pSetting->ATIMWindow; - } - } - - mHiddenSSID = pSetting->HiddenSSID; - if (mHiddenSSID) { - mSsid.buf[0] = EID_SSID; - mSsid.buf[1] = 1; - mSsid.buf[2] = 0x0; - } - - memcpy(&mBrates, pSetting->Info_SupportedRates, pSetting->Info_SupportedRates[1]+2); - if (!InitConfig) { + void *reg = pdot11Obj->reg; + static BOOLEAN InitConfig = TRUE; + U8 bcAddr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + U32 tmpValue; + BOOLEAN bReConnect = FALSE; + //FPRINT("zd_UpdateCardSetting"); + + if (pSetting->AuthMode == 0) { //open system only + mAuthAlogrithms[0] = OPEN_SYSTEM; + mAuthAlogrithms[1] = NULL_AUTH; + mAuthAlg = OPEN_SYSTEM; + } else if (pSetting->AuthMode == 1) { //shared key only + mAuthAlogrithms[0] = SHARE_KEY; + mAuthAlogrithms[1] = NULL_AUTH; + mAuthAlg = SHARE_KEY; + } else if (pSetting->AuthMode == 2) { //auto auth mode + mAuthAlogrithms[0] = OPEN_SYSTEM; + mAuthAlogrithms[1] = SHARE_KEY; + + } + + if (mAuthMode != pSetting->AuthMode) { + if (!InitConfig) + bReConnect = TRUE; + } + + mAuthMode = pSetting->AuthMode; + + if (mLimitedUser != pSetting->LimitedUser) { + mLimitedUser = pSetting->LimitedUser; + } + + mBlockBSS = pSetting->BlockBSS; + mSwCipher = pSetting->SwCipher; + mKeyFormat = pSetting->EncryMode; + mKeyId = pSetting->EncryKeyId; + mBcKeyId = pSetting->BcKeyId; + mDynKeyMode = pSetting->DynKeyMode; + mFragThreshold = pSetting->FragThreshold; + mRtsThreshold = pSetting->RTSThreshold; + mBeaconPeriod = pSetting->BeaconInterval; + mDtimPeriod = pSetting->DtimPeriod; + + if (!InitConfig) + HW_EnableBeacon(pdot11Obj, mBeaconPeriod, mDtimPeriod, pSetting->BssType); + //HW_EnableBeacon(pdot11Obj, mBeaconPeriod, mDtimPeriod, mBssType); + + if (mRadioOn != pSetting->RadioOn) { + mRadioOn = pSetting->RadioOn; + if (!InitConfig) + HW_RadioOnOff(pdot11Obj, mRadioOn); + } + + if (mRfChannel != pSetting->Channel) { + mRfChannel = pSetting->Channel; + mPhpm.buf[0] = EID_DSPARMS; + mPhpm.buf[1] = 1; + mPhpm.buf[2] = mRfChannel; + + if (!InitConfig) { + if (pSetting->BssType != INFRASTRUCTURE_BSS) + HW_SetRfChannel(pdot11Obj, mRfChannel, 0,pSetting->MacMode); + + + if (pSetting->BssType == INDEPENDENT_BSS) { + mRequestFlag |= CHANNEL_SCAN_SET; + pdot11Obj->ConfigFlag |= SCAN_AND_CONNECT_SET; + //bReConnect = FALSE; + } + } + } + + mPreambleType = pSetting->PreambleType; + + if (mPreambleType) + mCap |= CAP_SHORT_PREAMBLE; + else + mCap &= ~CAP_SHORT_PREAMBLE; + + mPrivacyInvoked = pSetting->EncryOnOff; + if (pSetting->DynKeyMode > 0) + mPrivacyInvoked = TRUE; + + if (mPrivacyInvoked) + mCap |= CAP_PRIVACY; + else + mCap &= ~CAP_PRIVACY; + + memcpy(&dot11DesiredSsid, pSetting->Info_SSID, pSetting->Info_SSID[1]+2); + + if (dot11DesiredSsid.buf[1] == 0) + mProbeWithSsid = FALSE; + else + mProbeWithSsid = TRUE; + //mProbeWithSsid = FALSE; //debug for ANY connection + + if ((pSetting->BssType == INFRASTRUCTURE_BSS) || (pSetting->BssType == INDEPENDENT_BSS)) { + if (!InitConfig) { + // if (memcmp(&mSsid, &dot11DesiredSsid, dot11DesiredSsid.buf[1]+2) != 0 ){ + bReConnect = TRUE; + // } + } + + if (pSetting->BssType == INDEPENDENT_BSS) { + memcpy(&mSsid, &dot11DesiredSsid, dot11DesiredSsid.buf[1]+2); + mATIMWindow = pSetting->ATIMWindow; + } + } + + + mHiddenSSID = pSetting->HiddenSSID; + if (mHiddenSSID) { + mSsid.buf[0] = EID_SSID; + mSsid.buf[1] = 1; + mSsid.buf[2] = 0x0; + } + + memcpy(&mBrates, pSetting->Info_SupportedRates, pSetting->Info_SupportedRates[1]+2); + + if (!InitConfig) { #if defined(AMAC) - pdot11Obj->SetReg(reg, ZD_BasicRateTbl, 0); + pdot11Obj->SetReg(reg, ZD_BasicRateTbl, 0); +#endif + + HW_SetSupportedRate(pdot11Obj, (U8 *)&mBrates); + } + +#if defined(OFDM) + if (pSetting->MacMode != PURE_B_MODE) { + if (pSetting->ShortSlotTime) { + pdot11Obj->ConfigFlag |= SHORT_SLOT_TIME_SET; + mCap |= CAP_SHORT_SLOT_TIME; + } else { + pdot11Obj->ConfigFlag &= ~SHORT_SLOT_TIME_SET; + mCap &= ~CAP_SHORT_SLOT_TIME; + } + + mMaxTxRate = 0x0b; + if(PURE_A_MODE != pSetting->MacMode) { + memcpy(&mExtRates, pSetting->Ext_SupportedRates, pSetting->Ext_SupportedRates[1]+2); + if (!InitConfig) + HW_SetSupportedRate(pdot11Obj, (U8 *)&mExtRates); + } + + } else + mMaxTxRate = 0x03; + + if (!InitConfig) { + if (mMacMode != pSetting->MacMode) { //MacMode changed + bReConnect = TRUE; + } + } + + mMacMode = pSetting->MacMode; #endif - HW_SetSupportedRate(pdot11Obj, (U8 *)&mBrates); - } -#if defined(OFDM) - if (pSetting->MacMode != PURE_B_MODE) { - if (pSetting->ShortSlotTime) { - pdot11Obj->ConfigFlag |= SHORT_SLOT_TIME_SET; - mCap |= CAP_SHORT_SLOT_TIME; - } else { - pdot11Obj->ConfigFlag &= ~SHORT_SLOT_TIME_SET; - mCap &= ~CAP_SHORT_SLOT_TIME; - } - mMaxTxRate = 0x0b; - - memcpy(&mExtRates, pSetting->Ext_SupportedRates, pSetting->Ext_SupportedRates[1]+2); - if (!InitConfig) - HW_SetSupportedRate(pdot11Obj, (U8 *)&mExtRates); - } else - mMaxTxRate = 0x03; - - if (!InitConfig) { - if (mMacMode != pSetting->MacMode) { //MacMode changed - bReConnect = TRUE; - } - } - - mMacMode = pSetting->MacMode; -#endif - - memcpy((U8 *)&dot11MacAddress, pSetting->MacAddr, 6); - memcpy(&mKeyVector[0][0], &pSetting->keyVector[0][0], sizeof(mKeyVector)); - mWepKeyLen = pSetting->WepKeyLen; - memcpy(&mBcKeyVector[0], &pSetting->BcKeyVector[0], sizeof(mBcKeyVector)); - - mBcKeyLen = pSetting->BcKeyLen; - - if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) { - memcpy(&mWPAIe.buf[0], pSetting->WPAIe, pSetting->WPAIeLen); - } + memcpy((U8 *)&dot11MacAddress, pSetting->MacAddr, 6); + memcpy(&mKeyVector[0][0], &pSetting->keyVector[0][0], sizeof(mKeyVector)); + mWepKeyLen = pSetting->WepKeyLen; + memcpy(&mBcKeyVector[0], &pSetting->BcKeyVector[0], sizeof(mBcKeyVector)); + + mBcKeyLen = pSetting->BcKeyLen; + + /* Check if we need to copy the WPA IE */ + //if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES) + // || (pSetting->WPASupport == 1 && pSetting->WPAIe[1] != 0)){ + if ((pSetting->WPASupport==1 || pSetting->WPAIeLen)) { + //printk(KERN_ERR "Copy WPA IE in the zd_UpdateCardSetting\n"); + memcpy(&mWPAIe, pSetting->WPAIe, pSetting->WPAIeLen); + } else { + memset(&mWPAIe.buf[0], 0, sizeof(mWPAIe)); + } + #if defined(AMAC) - mOperationMode = pSetting->OperationMode; - if (!InitConfig) { - HW_CAM_ResetRollTbl(pdot11Obj); - if ((mOperationMode == CAM_AP_VAP) || (mOperationMode == CAM_AP_CLIENT)) { - // for Ack response - HW_CAM_SetMAC(pdot11Obj, CAM_VAP_START_AID, (U8 *)&dot11MacAddress); - HW_CAM_UpdateRollTbl(pdot11Obj, CAM_VAP_START_AID); - - // for Address1 matching - HW_CAM_SetMAC(pdot11Obj, 0, (U8 *)&bcAddr); - HW_CAM_UpdateRollTbl(pdot11Obj, 0); - } else { - HW_CAM_ClearRollTbl(pdot11Obj, CAM_VAP_START_AID); - HW_CAM_ClearRollTbl(pdot11Obj, 0); - } - } -#endif - - //mPwrState = pSetting->PwrState; - if (pSetting->BssType == AP_BSS) { - memcpy(&mSsid, &dot11DesiredSsid, dot11DesiredSsid.buf[1]+2); - memcpy((U8 *)&mBssId, pSetting->MacAddr, 6); - mGkInstalled = 0; - zd_InitWepData(); - if (!InitConfig) { - zd_CmdProcess(CMD_DISASOC_ALL, 0, ZD_UNSPEC_REASON); - } - } - + mOperationMode = pSetting->OperationMode; + if (!InitConfig) { + //HW_CAM_ResetRollTbl(pdot11Obj); + if ((mOperationMode == CAM_AP_VAP) || (mOperationMode == CAM_AP_CLIENT)) { + // for Ack response + HW_CAM_ResetRollTbl(pdot11Obj); + HW_CAM_SetMAC(pdot11Obj, CAM_VAP_START_AID, (U8 *)&dot11MacAddress); + HW_CAM_UpdateRollTbl(pdot11Obj, CAM_VAP_START_AID); + + // for Address1 matching + HW_CAM_SetMAC(pdot11Obj, 0, (U8 *)&bcAddr); + HW_CAM_UpdateRollTbl(pdot11Obj, 0); + } else if (pSetting->BssType == INFRASTRUCTURE_BSS) {// Don't clear key in AP_BSS and IBSS mode. + HW_CAM_ClearRollTbl(pdot11Obj, CAM_VAP_START_AID); + HW_CAM_ClearRollTbl(pdot11Obj, 0); + } + } else {// Only clear all keys in the first time. + HW_CAM_ResetRollTbl(pdot11Obj); + } + +#endif + + //mPwrState = pSetting->PwrState; + if (pSetting->BssType == AP_BSS) { + memcpy(&mSsid, &dot11DesiredSsid, dot11DesiredSsid.buf[1]+2); + memcpy((U8 *)&mBssId, pSetting->MacAddr, 6); + + // Update the mCap information + mCap &= ~BIT_1; + mCap |= BIT_0; + + //mGkInstalled = 0; + zd_InitWepData(); + if (!InitConfig) { + zd_CmdProcess(CMD_DISASOC_ALL, 0, ZD_UNSPEC_REASON); + } + + } + #if defined(OFDM) - mErp.buf[2] = 0; //reset erp info - - if ((mCap & CAP_SHORT_PREAMBLE) == 0) { - mErp.buf[2] |= BARKER_PREAMBLE; - if (pdot11Obj) { - tmpValue = pdot11Obj->GetReg(reg, ZD_RTS_CTS_Rate); - tmpValue &= ~NON_BARKER_PMB_SET; - tmpValue |= CTS_RATE_11M; - pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, tmpValue); - } - } - - if (pdot11Obj) - pdot11Obj->ConfigFlag &= ~ENABLE_PROTECTION_SET; - - if (pSetting->BssType == INDEPENDENT_BSS) { - if (mMacMode == PURE_G_MODE) - mErp.buf[2] = 0; - else - mErp.buf[2] = (NON_ERP_PRESENT | USE_PROTECTION | BARKER_PREAMBLE); - } -#endif - - if (!InitConfig) { - if (mBssType != pSetting->BssType) { - int i; - - mBssType = pSetting->BssType; - if (pSetting->BssType == AP_BSS) { - zd_StartAP(); - bReConnect = FALSE; - } else { - zd_StartSTA(0); - bReConnect = FALSE; - } - - for (i=0; i<(MAX_AID+1); i++) - CleanupHash(sstByAid[i]); - InitHashTbl(); - zd_InitWepData(); - zd_CmdFlushQ(); - } - } - - mBssType = pSetting->BssType; - pdot11Obj->BssType = mBssType; - - if (bReConnect) { - if (pSetting->BssType == INFRASTRUCTURE_BSS) { - pdot11Obj->ConfigFlag |= SCAN_AND_CONNECT_SET; - zd_ChooseAP(); - } - } - - InitConfig = FALSE; + mErp.buf[2] = 0; //reset erp info + + if ((mCap & CAP_SHORT_PREAMBLE) == 0) { + mErp.buf[2] |= BARKER_PREAMBLE; + if (pdot11Obj) { + tmpValue = pdot11Obj->GetReg(reg, ZD_RTS_CTS_Rate); + tmpValue &= ~NON_BARKER_PMB_SET; + tmpValue |= CTS_RATE_11M; + pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, tmpValue); + } + } + + if (pdot11Obj) + pdot11Obj->ConfigFlag &= ~ENABLE_PROTECTION_SET; + + if (pSetting->BssType == INDEPENDENT_BSS) { + if (mMacMode == PURE_G_MODE) + mErp.buf[2] = 0; + else + mErp.buf[2] = (NON_ERP_PRESENT | USE_PROTECTION | BARKER_PREAMBLE); + } +#endif + + if (!InitConfig) { + //if (mBssType != pSetting->BssType){ + if (mBssType != pSetting->BssType) + //if (pSetting->BssType != INFRASTRUCTURE_BSS) + { + //int i; + + mBssType = pSetting->BssType; + if (pSetting->BssType == AP_BSS) + { + zd_StartAP(); + bReConnect = FALSE; + } else + { + zd_StartSTA(0); + bReConnect = FALSE; + } + + //for (i=0; i<(MAX_AID+1); i++) + //CleanupHash(sstByAid[i]); + //InitHashTbl(); + zd_InitWepData(); + //zd_CmdFlushQ(); + } + } + + mBssType = pSetting->BssType; + pdot11Obj->BssType = mBssType; + + if (bReConnect) { + if (pSetting->BssType == INFRASTRUCTURE_BSS) { + BOOLEAN ret; + pdot11Obj->ConfigFlag |= SCAN_AND_CONNECT_SET; + if (pSetting->ap_scan == 1) { + ret = zd_ChooseAP(1); // Choose AP by dot11DesiredBssid. + } else + ret = zd_ChooseAP(0); + + if (ret == FALSE) { + zd_StartSTA(0);//ReScan all channels to find the selected BSS. + } + } + } + + InitConfig = FALSE; } + void zd_PsPoll(void) { - Signal_t *signal; - FrmDesc_t *pfrmDesc; - - //FPRINT("zd_PsPoll"); - - if ((signal = allocSignal()) == NULL) { - return; - } - - pfrmDesc = allocFdesc(); - if(!pfrmDesc) { - freeSignal(signal); - return; - } - - sendPsPollFrame(signal, pfrmDesc, &mBssId, mAid); - mRequestFlag &= ~PS_POLL_SET; - return; + Signal_t *signal; + FrmDesc_t *pfrmDesc; + + //FPRINT("zd_PsPoll"); + + if ((signal = allocSignal()) == NULL) { + return; + } + + pfrmDesc = allocFdesc(); + if(!pfrmDesc) { + freeSignal(signal); + return; + } + + sendPsPollFrame(signal, pfrmDesc, &mBssId, mAid); + mRequestFlag &= ~PS_POLL_SET; + return; } void zd_NullData(void) { - Signal_t *signal; - FrmDesc_t *pfrmDesc; - - //FPRINT("zd_NullData"); - - if ((signal = allocSignal()) == NULL) { - return; - } - - pfrmDesc = allocFdesc(); - if(!pfrmDesc) { - freeSignal(signal); - return; - } - - sendNullDataFrame(signal, pfrmDesc, &mBssId); - mRequestFlag &= ~PS_CHANGE_SET; - return; + Signal_t *signal; + FrmDesc_t *pfrmDesc; + + //FPRINT("zd_NullData"); + + if ((signal = allocSignal()) == NULL) { + return; + } + + pfrmDesc = allocFdesc(); + if(!pfrmDesc) { + freeSignal(signal); + return; + } + + sendNullDataFrame(signal, pfrmDesc, &mBssId); + mRequestFlag &= ~PS_CHANGE_SET; + return; } void zd_DisConnect(void) { - //FPRINT("zd_DisConnect"); - pdot11Obj->ConfigFlag |= SCAN_AND_CONNECT_SET; - pdot11Obj->bChScanning = 0; - mRequestFlag &= ~DIS_CONNECT_SET; - zd_ChooseAP(); + //FPRINT("zd_DisConnect"); + + zd_CmdProcess(CMD_ROAMING,0,0); + mRequestFlag &= ~DIS_CONNECT_SET; + + /*pdot11Obj->ConfigFlag |= SCAN_AND_CONNECT_SET; + pdot11Obj->bChScanning = 0; + mRequestFlag &= ~DIS_CONNECT_SET; + #if 0 + zd_CmdProbeReq((U8)mProbeWithSsid); + #else + zd_ChooseAP(); + #endif */ } void zd_Roaming(void) { - //FPRINT("zd_Roaming"); - pdot11Obj->ConfigFlag |= SCAN_AND_CONNECT_SET; - pdot11Obj->bChScanning = 0; - mRequestFlag &= ~ROAMING_SET; - zd_CmdProbeReq((U8)mProbeWithSsid); + //FPRINT("zd_Roaming"); + pdot11Obj->ConfigFlag |= SCAN_AND_CONNECT_SET; + //pdot11Obj->bChScanning = 0; + mRequestFlag &= ~ROAMING_SET; + zd_CmdProbeReq((U8)mProbeWithSsid); } void zd_ConnectMon(void) { - //FPRINT_V("mRequestFlag", mRequestFlag); - if (mRequestFlag & DIS_CONNECT_SET) { - mRequestFlag = 0; - FPRINT("DIS_CONNECT_SET"); - zd_DisConnect(); - goto end; - } - - if (mRequestFlag & ROAMING_SET) { - mRequestFlag = 0; - FPRINT("ROAMING_SET"); - zd_Roaming(); - goto end; - } - - if (mRequestFlag & CHANNEL_SCAN_SET) { - //FPRINT("CHANNEL_SCAN_SET"); - mRequestFlag &= ~BSS_CONNECT_SET; - mRequestFlag &= ~CONNECT_TOUT_SET; - zd_CmdProbeReq((U8)mProbeWithSsid); - goto end; - } - - if (mRequestFlag & BSS_CONNECT_SET) { - //FPRINT("BSS_CONNECT_SET"); - mRequestFlag &= ~CHANNEL_SCAN_SET; - mRequestFlag &= ~CONNECT_TOUT_SET; - zd_InfraConnect(mBssIndex); - goto end; - } - if (mRequestFlag & CONNECT_TOUT_SET) { - //FPRINT("CONNECT_TOUT_SET"); - mConnRetryCnt++; - if ((mConnRetryCnt > 6) || (pdot11Obj->bChScanning)) { - mRequestFlag &= ~CONNECT_TOUT_SET; - mConnRetryCnt = 0; - mSsid.buf[1] = 0; //reset mSsid - //return; - } else { - FPRINT("Connect Timeout, Re-Connect..."); - zd_InfraConnect(mBssIndex); - //return; - } - goto end; - } - - if (mRequestFlag & PS_POLL_SET) { - zd_PsPoll(); - goto end; - } - - if (mRequestFlag & PS_CHANGE_SET) { - zd_NullData(); - goto end; - } - - if (mRequestFlag & IBSS_CONNECT_SET) { - zd_IbssConnect(); - goto end; - } + //FPRINT_V("mRequestFlag", mRequestFlag); + if (mRequestFlag & DIS_CONNECT_SET) { + mRequestFlag = 0; + FPRINT("DIS_CONNECT_SET"); + zd_DisConnect(); + goto end; + } + + if (mRequestFlag & ROAMING_SET) { + mRequestFlag = 0; + FPRINT("ROAMING_SET"); + zd_Roaming(); + goto end; + } + + if (mRequestFlag & CHANNEL_SCAN_SET) { + //FPRINT("CHANNEL_SCAN_SET"); + mRequestFlag &= ~BSS_CONNECT_SET; + mRequestFlag &= ~CONNECT_TOUT_SET; + zd_CmdProbeReq((U8)mProbeWithSsid); + goto end; + } + + if (mRequestFlag & BSS_CONNECT_SET) { + //FPRINT("BSS_CONNECT_SET"); + mRequestFlag &= ~CHANNEL_SCAN_SET; + mRequestFlag &= ~CONNECT_TOUT_SET; + zd_InfraConnect(mBssIndex); + goto end; + } + + if (mRequestFlag & CONNECT_TOUT_SET) { + //FPRINT("CONNECT_TOUT_SET"); + mConnRetryCnt++; + + if ((mConnRetryCnt > 6) || (pdot11Obj->bChScanning)) { + mRequestFlag &= ~CONNECT_TOUT_SET; + mConnRetryCnt = 0; + mSsid.buf[1] = 0; //reset mSsid + //return; + } else { + FPRINT("Connect Timeout, Re-Connect..."); + zd_InfraConnect(mBssIndex); + //return; + } + goto end; + } + + if (mRequestFlag & PS_POLL_SET) { + zd_PsPoll(); + goto end; + } + + if (mRequestFlag & PS_CHANGE_SET) { + zd_NullData(); + goto end; + } + + if (mRequestFlag & IBSS_CONNECT_SET) { + zd_IbssConnect(); + goto end; + } end: - zd_SigProcess(); + zd_SigProcess(); } extern BOOLEAN SynchEntry(Signal_t* signal); extern BOOLEAN AuthReqEntry(Signal_t* signal); extern BOOLEAN AuthRspEntry(Signal_t* signal); -extern BOOLEAN AsocEntry(Signal_t* signal); +extern BOOLEAN AsocEntry(Signal_t* signal); //State machine entry point void zd_SigProcess(void) { - Signal_t* signal = NULL; - BOOLEAN ret; - - while((signal = sigDeque(&mgtQ)) != NULL) { - switch(signal->block) { - case BLOCK_SYNCH: - ret = SynchEntry(signal); - break; - - case BLOCK_AUTH_REQ: - ret = AuthReqEntry(signal); - break; - - case BLOCK_AUTH_RSP: - ret = AuthRspEntry(signal); - break; - - case BLOCK_ASOC: - ret = AsocEntry(signal); - break; - - default: - ret = TRUE; - break; - } - - if (ret) { - pdot11Obj->ReleaseBuffer(signal->buf); - freeSignal(signal); - } - } - pdot11Obj->QueueFlag &= ~MGT_QUEUE_SET; + Signal_t* signal = NULL; + BOOLEAN ret; + + while((signal = sigDeque(&mgtQ)) != NULL) { + switch(signal->block) { + case BLOCK_SYNCH: + ret = SynchEntry(signal); + break; + + case BLOCK_AUTH_REQ: + ret = AuthReqEntry(signal); + break; + + case BLOCK_AUTH_RSP: + ret = AuthRspEntry(signal); + break; + + case BLOCK_ASOC: + ret = AsocEntry(signal); + break; + + default: + ret = TRUE; + break; + } + + if (ret) { + pdot11Obj->ReleaseBuffer(signal->buf); + freeSignal(signal); + + } + } + pdot11Obj->QueueFlag &= ~MGT_QUEUE_SET; } U8 zd_CheckTotalQueCnt(void) { - U8 TotalQueCnt = 0; - U32 flags; - int i; - - flags = pdot11Obj->EnterCS(); - - for (i=0; icnt; - - TotalQueCnt += pAwakeQ->cnt; - TotalQueCnt += pTxQ->cnt; - TotalQueCnt += pMgtQ->cnt; - pdot11Obj->ExitCS(flags); + U8 TotalQueCnt = 0; + U32 flags; + int i; + + flags = pdot11Obj->EnterCS(); + + for (i=0; icnt; - return TotalQueCnt; + TotalQueCnt += pAwakeQ->cnt; + TotalQueCnt += pTxQ->cnt; + TotalQueCnt += pMgtQ->cnt; + pdot11Obj->ExitCS(flags); + + + return TotalQueCnt; } void zd_RateMoniter(void) { - int i; - U32 SucessFrmCnt; - U32 FailFmrCnt; - Hash_t *pHash; - U32 Ratio = 0; + int i; + U32 SucessFrmCnt; + U32 FailFmrCnt; + Hash_t *pHash; + U32 Ratio = 0; + #if defined(OFDM) - if (mCurrConnUser > 0) { - for (i=1; i<(MAX_AID+1); i++) { - pHash = sstByAid[i]; - if (pHash->bValid) { - SucessFrmCnt = pHash->SuccessFrames; - FailFmrCnt = pHash->FailedFrames; - - //FPRINT_V("Aid", i); - - if (SucessFrmCnt + FailFmrCnt < 20) { - //FPRINT(" FmrCnt < 20"); - continue; - } - - if ((SucessFrmCnt) && (FailFmrCnt == 0)) { - pHash->RiseConditionCount++; - pHash->DownConditionCount = 0; - //FPRINT(" FailFmrCnt == 0"); - goto JudgeRate; - } else { - Ratio = SucessFrmCnt / FailFmrCnt; - - //FPRINT_V("Ratio", Ratio); - - if (Ratio > LINE1) { //100 - //FPRINT(" > LINE1"); - if (pHash->CurrTxRate > RATE_36M) { - pHash->RiseConditionCount = 0; - pHash->DownConditionCount++; - goto JudgeRate; - } else if (pHash->CurrTxRate == RATE_36M) { - pHash->RiseConditionCount = 0; - pHash->DownConditionCount = 0; - goto JudgeRate; - } else { - pHash->RiseConditionCount++; - pHash->DownConditionCount = 0; - goto JudgeRate; - } - } else { // LINE1 - if (Ratio >= LINE2) { //10 - //FPRINT(" > LINE2"); - if (pHash->CurrTxRate > RATE_24M) { - pHash->RiseConditionCount = 0; - pHash->DownConditionCount++; - goto JudgeRate; - } else if (pHash->CurrTxRate == RATE_24M) { - pHash->RiseConditionCount = 0; - pHash->DownConditionCount = 0; - goto JudgeRate; - } else { - pHash->RiseConditionCount++; - pHash->DownConditionCount = 0; - goto JudgeRate; - } - } else{ // LINE2 - if (Ratio >= LINE3) { - //FPRINT(" > LINE3"); - if (pHash->CurrTxRate > RATE_18M) { - pHash->RiseConditionCount = 0; - pHash->DownConditionCount++; - goto JudgeRate; - } else if (pHash->CurrTxRate == RATE_18M) { - pHash->RiseConditionCount = 0; - pHash->DownConditionCount = 0; - goto JudgeRate; - } else { - pHash->RiseConditionCount++; - pHash->DownConditionCount = 0; - goto JudgeRate; - } - } else { // LINE3 - //FPRINT(" < LINE3"); - pHash->RiseConditionCount = 0; - pHash->DownConditionCount++; - goto JudgeRate; - - } - } - } - } + + if (mCurrConnUser > 0) { + for (i=1; i<(MAX_AID+1); i++) { + pHash = sstByAid[i]; + if (pHash->bValid) { + SucessFrmCnt = pHash->SuccessFrames; + FailFmrCnt = pHash->FailedFrames; + + //FPRINT_V("Aid", i); + + if (SucessFrmCnt + FailFmrCnt < 20) { + //FPRINT(" FmrCnt < 20"); + continue; + } + + + if ((SucessFrmCnt) && (FailFmrCnt == 0)) { + pHash->RiseConditionCount++; + pHash->DownConditionCount = 0; + //FPRINT(" FailFmrCnt == 0"); + goto JudgeRate; + } else { + Ratio = SucessFrmCnt / FailFmrCnt; + + //FPRINT_V("Ratio", Ratio); + + if (Ratio > LINE1) { //100 + //FPRINT(" > LINE1"); + if (pHash->CurrTxRate > RATE_36M) { + pHash->RiseConditionCount = 0; + pHash->DownConditionCount++; + goto JudgeRate; + } else if (pHash->CurrTxRate == RATE_36M) { + pHash->RiseConditionCount = 0; + pHash->DownConditionCount = 0; + goto JudgeRate; + } else { + pHash->RiseConditionCount++; + pHash->DownConditionCount = 0; + goto JudgeRate; + } + } // LINE1 + else { + if (Ratio >= LINE2) { //10 + //FPRINT(" > LINE2"); + if (pHash->CurrTxRate > RATE_24M) { + pHash->RiseConditionCount = 0; + pHash->DownConditionCount++; + goto JudgeRate; + } else if (pHash->CurrTxRate == RATE_24M) { + pHash->RiseConditionCount = 0; + pHash->DownConditionCount = 0; + goto JudgeRate; + } else { + pHash->RiseConditionCount++; + pHash->DownConditionCount = 0; + goto JudgeRate; + + } + } // LINE2 + else { + if (Ratio >= LINE3) { + //FPRINT(" > LINE3"); + if (pHash->CurrTxRate > RATE_18M) { + pHash->RiseConditionCount = 0; + pHash->DownConditionCount++; + goto JudgeRate; + } else if (pHash->CurrTxRate == RATE_18M) { + pHash->RiseConditionCount = 0; + pHash->DownConditionCount = 0; + goto JudgeRate; + } else { + pHash->RiseConditionCount++; + pHash->DownConditionCount = 0; + goto JudgeRate; + } + } // LINE3 + else { + //FPRINT(" < LINE3"); + pHash->RiseConditionCount = 0; + pHash->DownConditionCount++; + goto JudgeRate; + + } + } + } + } JudgeRate: - if (pHash->bJustRiseRate) { - if (pHash->DownConditionCount) { - if (pHash->CurrTxRate > 0) { - pHash->CurrTxRate--; - //FPRINT_V("Case 1: Down Rate, NewRate", pHash->CurrTxRate); - } - pHash->DownConditionCount = 0; - pHash->bJustRiseRate = FALSE; - } else { - pHash->bJustRiseRate = FALSE; - } - } else { - pHash->bJustRiseRate = 0; - if (pHash->RiseConditionCount >= RISE_CONDITION_THRESHOLD) { - if (pHash->MaxRate > pHash->CurrTxRate) { - pHash->CurrTxRate++; - pHash->bJustRiseRate = TRUE; - //FPRINT_V("Case 2: Rise Rate, NewRate", pHash->CurrTxRate); - } - pHash->DownConditionCount = 0; - pHash->RiseConditionCount = 0; - } else if (pHash->DownConditionCount >= DOWN_CONDITION_THRESHOLD) { - if (pHash->CurrTxRate > 0) { - pHash->CurrTxRate--; - //FPRINT_V("Case 3: Down Rate, NewRate", pHash->CurrTxRate); - } - pHash->DownConditionCount = 0; - pHash->RiseConditionCount = 0; - } - } - pHash->SuccessFrames = 0; - pHash->FailedFrames = 0; - } // end of pHash->bValid - } // end of for loop - } + if (pHash->bJustRiseRate) { + if (pHash->DownConditionCount) { + if (pHash->CurrTxRate > 0) { + pHash->CurrTxRate--; + //FPRINT_V("Case 1: Down Rate, NewRate", pHash->CurrTxRate); + } + pHash->DownConditionCount = 0; + pHash->bJustRiseRate = FALSE; + } else { + pHash->bJustRiseRate = FALSE; + } + } else { + pHash->bJustRiseRate = 0; + if (pHash->RiseConditionCount >= RISE_CONDITION_THRESHOLD) { + if (pHash->MaxRate > pHash->CurrTxRate) { + pHash->CurrTxRate++; + pHash->bJustRiseRate = TRUE; + //FPRINT_V("Case 2: Rise Rate, NewRate", pHash->CurrTxRate); + } + pHash->DownConditionCount = 0; + pHash->RiseConditionCount = 0; + } else if (pHash->DownConditionCount >= DOWN_CONDITION_THRESHOLD) { + if (pHash->CurrTxRate > 0) { + pHash->CurrTxRate--; + //FPRINT_V("Case 3: Down Rate, NewRate", pHash->CurrTxRate); + } + pHash->DownConditionCount = 0; + pHash->RiseConditionCount = 0; + } + } + pHash->SuccessFrames = 0; + pHash->FailedFrames = 0; + + } // end of pHash->bValid + } // end of for loop + } #endif } void zd_PerSecTimer(void) { - static U32 sec = 0; - sec++; - - if (mBssType == AP_BSS) { - if (sec > AGE_HASH_PERIOD) { - U32 tmpValue; - void *reg = pdot11Obj->reg; - - mZyDasModeClient = FALSE; - pdot11Obj->ConfigFlag &= ~NON_ERP_PRESENT_SET; - pdot11Obj->ConfigFlag &= ~BARKER_PREAMBLE_SET; - AgeHashTbl(); - sec = 0; + static U32 sec = 0; + sec++; + + if (mBssType == AP_BSS) { + if (sec > AGE_HASH_PERIOD) { + U32 tmpValue; + void *reg = pdot11Obj->reg; + + mZyDasModeClient = FALSE; + pdot11Obj->ConfigFlag &= ~NON_ERP_PRESENT_SET; + pdot11Obj->ConfigFlag &= ~BARKER_PREAMBLE_SET; + AgeHashTbl(); + sec = 0; #if defined(OFDM) - if (mMacMode != PURE_B_MODE) { - if (pdot11Obj->ConfigFlag & NON_ERP_PRESENT_SET) { - //FPRINT("Enable Protection Mode"); - mErp.buf[2] |= (NON_ERP_PRESENT | USE_PROTECTION); - pdot11Obj->ConfigFlag |= ENABLE_PROTECTION_SET; - tmpValue = pdot11Obj->GetReg(reg, ZD_RTS_CTS_Rate); - tmpValue &= ~CTS_MOD_TYPE_OFDM; - tmpValue |= CTS_RATE_11M; - pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, tmpValue); - pdot11Obj->ConfigFlag &= ~SHORT_SLOT_TIME_SET; - mCap &= ~CAP_SHORT_SLOT_TIME; - pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_NORMAL_SLOT); - - if (((mCap & CAP_SHORT_PREAMBLE) == 0) || (pdot11Obj->ConfigFlag & BARKER_PREAMBLE_SET)) { - mErp.buf[2] |= BARKER_PREAMBLE; - tmpValue = pdot11Obj->GetReg(reg, ZD_RTS_CTS_Rate); - tmpValue &= ~NON_BARKER_PMB_SET; - tmpValue |= CTS_RATE_11M; - pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, tmpValue); - //FPRINT("Enable Barker Preamble"); - } - } else { - //#if 0 for pure g mode testing - //FPRINT("Disable Protection Mode"); - mErp.buf[2] &= ~(NON_ERP_PRESENT); - pdot11Obj->ConfigFlag &= ~ENABLE_PROTECTION_SET; - - //FPRINT("Disable Barker Preamble"); - mErp.buf[2] &= ~(BARKER_PREAMBLE); - - pdot11Obj->ConfigFlag &= ~SHORT_SLOT_TIME_SET; - mCap |= CAP_SHORT_SLOT_TIME; - pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_SHORT_SLOT); - } - } + + if (mMacMode != PURE_B_MODE && mMacMode != PURE_A_MODE) { + + if (pdot11Obj->ConfigFlag & NON_ERP_PRESENT_SET) { + //FPRINT("Enable Protection Mode"); + mErp.buf[2] |= (NON_ERP_PRESENT | USE_PROTECTION); + pdot11Obj->ConfigFlag |= ENABLE_PROTECTION_SET; + tmpValue = pdot11Obj->GetReg(reg, ZD_RTS_CTS_Rate); + tmpValue &= ~CTS_MOD_TYPE_OFDM; + tmpValue |= CTS_RATE_11M; + pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, tmpValue); + pdot11Obj->ConfigFlag &= ~SHORT_SLOT_TIME_SET; + mCap &= ~CAP_SHORT_SLOT_TIME; + pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_NORMAL_SLOT); + + if (((mCap & CAP_SHORT_PREAMBLE) == 0) || (pdot11Obj->ConfigFlag & BARKER_PREAMBLE_SET)) { + mErp.buf[2] |= BARKER_PREAMBLE; + tmpValue = pdot11Obj->GetReg(reg, ZD_RTS_CTS_Rate); + tmpValue &= ~NON_BARKER_PMB_SET; + tmpValue |= CTS_RATE_11M; + pdot11Obj->SetReg(reg, ZD_RTS_CTS_Rate, tmpValue); + //FPRINT("Enable Barker Preamble"); + } + } else { + //#if 0 for pure g mode testing + //FPRINT("Disable Protection Mode"); + mErp.buf[2] &= ~(NON_ERP_PRESENT); + pdot11Obj->ConfigFlag &= ~ENABLE_PROTECTION_SET; + + //FPRINT("Disable Barker Preamble"); + mErp.buf[2] &= ~(BARKER_PREAMBLE); + + pdot11Obj->ConfigFlag &= ~SHORT_SLOT_TIME_SET; + mCap |= CAP_SHORT_SLOT_TIME; + pdot11Obj->SetReg(reg, ZD_CWmin_CWmax, CW_SHORT_SLOT); + + } + + } #endif - } - } + + } + } } - + + BOOLEAN zd_QueryStaTable(U8 *sta, void **ppHash) { - Hash_t *pHash = NULL; - MacAddr_t *addr = (MacAddr_t*) sta; - - pHash = HashSearch(addr); - - *ppHash = pHash; - - if (!pHash) - return FALSE; - - if (pHash->asoc == STATION_STATE_ASOC) - return TRUE; - else - return FALSE; -} - -U8 zd_GetBssList(bss_info_t *pBssList) -{ - U8 i; - - for (i=0; ibssid, (U8 *)&mBssInfo[i].bssid, 6); - pBssList->beaconInterval = mBssInfo[i].bcnInterval; - pBssList->channel = mBssInfo[i].Phpm.buf[2]; - pBssList->cap = mBssInfo[i].cap; - memcpy(pBssList->ssid, (U8 *)&mBssInfo[i].ssid, mBssInfo[i].ssid.buf[1]+2); - memcpy(pBssList->supRates, (U8 *)&mBssInfo[i].supRates, mBssInfo[i].supRates.buf[1]+2); - memcpy(pBssList->extRates, (U8 *)&mBssInfo[i].extRates, mBssInfo[i].extRates.buf[1]+2); - pBssList->atimWindow = mBssInfo[i].IbssParms.buf[2] + ((U16)(mBssInfo[i].IbssParms.buf[3]) << 8); - pBssList->signalStrength = mBssInfo[i].signalStrength; - pBssList->signalQuality = mBssInfo[i].signalQuality; - pBssList->apMode = mBssInfo[i].apMode; - } - return mBssCnt; + Hash_t *pHash = NULL; + MacAddr_t *addr = (MacAddr_t*) sta; + + pHash = HashSearch(addr); + + *ppHash = pHash; + + if (!pHash) + return FALSE; + + if (pHash->asoc == STATION_STATE_ASOC) + return TRUE; + else + return FALSE; } -U16 zd_AidLookUp(U8 *addr) +U8 zd_GetBssList(bss_info_t *pBssList) { - MacAddr_t *sta = (MacAddr_t *)addr; - return AIdLookup(sta); + U8 i; + + for (i=0; i < mBssCnt; i++, pBssList++) { + memcpy(pBssList->bssid, (U8 *)&mBssInfo[i].bssid, 6); + pBssList->beaconInterval = mBssInfo[i].bcnInterval; + pBssList->channel = mBssInfo[i].Phpm.buf[2]; + pBssList->cap = mBssInfo[i].cap; + memcpy(pBssList->ssid, (U8 *)&mBssInfo[i].ssid, mBssInfo[i].ssid.buf[1]+2); + //printk("ssid: %s\r\n", &mBssInfo[i].ssid.buf[2]); + memcpy(pBssList->supRates, (U8 *)&mBssInfo[i].supRates, mBssInfo[i].supRates.buf[1]+2); + memcpy(pBssList->extRates, (U8 *)&mBssInfo[i].extRates, mBssInfo[i].extRates.buf[1]+2); + pBssList->atimWindow = mBssInfo[i].IbssParms.buf[2] + ((U16)(mBssInfo[i].IbssParms.buf[3]) << 8); + pBssList->signalStrength = mBssInfo[i].signalStrength; + pBssList->signalQuality = mBssInfo[i].signalQuality; + pBssList->apMode = mBssInfo[i].apMode; + + /* Copy WPAIe */ + memcpy(pBssList->WPAIe, (U8 *)&mBssInfo[i].WPAIe, mBssInfo[i].WPAIe[1]+2); + memcpy(pBssList->RSNIe, (U8 *)&mBssInfo[i].RSNIe, mBssInfo[i].RSNIe[1]+2); + + //printk(" [zd_GetBssList] wpa ie len = %d\r\n", mBssInfo[i].WPAIe[1]+2); + } + + return mBssCnt; } +U16 zd_AidLookUp(U8 *addr) +{ + MacAddr_t *sta = (MacAddr_t *)addr; + return AIdLookup(sta); +} +#if 0 void zd_UpdateIbssInfo(U8 *addr, U8 tmpMaxRate, U8 preamble, U8 erpSta) { - U8 MaxRate; - MaxRate = RateConvert((tmpMaxRate & 0x7f)); - if (MaxRate > mMaxTxRate) - MaxRate = mMaxTxRate; - UpdateStaStatus((MacAddr_t *)addr, STATION_STATE_ASOC, 0); - AssocInfoUpdate((MacAddr_t *)addr, MaxRate, 0, 0, preamble, erpSta, 0); - //FPRINT_V("MaxRate", MaxRate); - //FPRINT_V("erpSta", erpSta); + U8 MaxRate; + MaxRate = RateConvert((tmpMaxRate & 0x7f)); + if (MaxRate > mMaxTxRate) + MaxRate = mMaxTxRate; + + UpdateStaStatus((MacAddr_t *)addr, STATION_STATE_ASOC, 0); + AssocInfoUpdate((MacAddr_t *)addr, MaxRate, 0, 0, preamble, erpSta, 0); + //FPRINT_V("MaxRate", MaxRate); + //FPRINT_V("erpSta", erpSta); } +#endif +void zd_UpdateIbssInfo(U8 *addr, U8 tmpMaxRate, U8 preamble, U8 erpSta) +{ + U8 MaxRate; + MacAddr_t *Sta; + Hash_t *pHash; + MaxRate = RateConvert((tmpMaxRate & 0x7f)); + + if (MaxRate > mMaxTxRate) + MaxRate = mMaxTxRate; + Sta = (MacAddr_t *)addr; + UpdateStaStatus(Sta, STATION_STATE_ASOC, 0); + + pHash = HashSearch(Sta); + if (pHash != NULL) { + if (!pHash->AlreadyIn) { + pHash->AlreadyIn=1; + mCurrConnUser++; + if (erpSta == FALSE) { + mNumBOnlySta++; + } + } + } + AssocInfoUpdate((MacAddr_t *)addr, MaxRate, 0, 0, preamble, erpSta, 0); + //FPRINT_V("MaxRate", MaxRate); + //FPRINT_V("erpSta", erpSta); +} + +#endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdapi.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdapi.h @@ -1,31 +1,9 @@ -/* $Id: zdapi.h,v 1.9 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZDAPI_H_ #define _ZDAPI_H_ #include "zdtypes.h" +#include "zdsorts.h" +//#define HMAC_DEBUG #ifdef HMAC_DEBUG #define FPRINT(string) printk(KERN_DEBUG "%s\n", string) @@ -33,108 +11,118 @@ #else #define FPRINT(string) #define FPRINT_V(string, i) +#define VerAssert(x) printk("Maybe Unsupport mode in %s(%d)",__FILE__,__LINE__); +#define LongPrint(x,y) {int i;for(i=0;i<100*y;i++) printk("%s",x);} #endif + +//#define ZD_DEBUG //debug protocol stack + #ifdef ZD_DEBUG #define ZDEBUG(string) FPRINT(string) #define ZDEBUG_V(string, i) FPRINT_V(string, i) #else -#define ZDEBUG(string) -#define ZDEBUG_V(string, i) +#define ZDEBUG(string) //do {} while (0) +#define ZDEBUG_V(string, i) //do {} while (0) #endif +//#define PS_DEBUG //debug power save function + + #ifdef PS_DEBUG #define PSDEBUG(string) FPRINT(string) -#define PSDEBUG_V(string, i) FPRINT_V(string, i) +#define PSDEBUG_V(string, i) FPRINT_V(string, i) #else -#define PSDEBUG(string) -#define PSDEBUG_V(string, i) +#define PSDEBUG(string) //do {} while (0) +#define PSDEBUG_V(string, i) //do {} while (0) #endif + +//#define HASH_DEBUG //debug hash function + #ifdef HASH_DEBUG #define HSDEBUG(string) FPRINT(string) -#define HSDEBUG_V(string, i) FPRINT_V(string, i) +#define HSDEBUG_V(string, i) FPRINT_V(string, i) #else -#define HSDEBUG(string) -#define HSDEBUG_V(string, i) +#define HSDEBUG(string) //do {} while (0) +#define HSDEBUG_V(string, i) //do {} while (0) #endif +//#define RATE_DEBUG //debug rate adaption function + #ifdef RATE_DEBUG #define RATEDEBUG(string) FPRINT(string) -#define RATEDEBUG_V(string, i) FPRINT_V(string, i) +#define RATEDEBUG_V(string, i) FPRINT_V(string, i) #else -#define RATEDEBUG(string) -#define RATEDEBUG_V(string, i) +#define RATEDEBUG(string) //do {} while (0) +#define RATEDEBUG_V(string, i) //do {} while (0) #endif + +//#define DEFRAG_DEBUG //debug defrag function + #ifdef DEFRAG_DEBUG #define DFDEBUG(string) FPRINT(string) -#define DFDEBUG_V(string, i) FPRINT_V(string, i) +#define DFDEBUG_V(string, i) FPRINT_V(string, i) #else -#define DFDEBUG(string) -#define DFDEBUG_V(string, i) +#define DFDEBUG(string) //do {} while (0) +#define DFDEBUG_V(string, i) //do {} while (0) #endif -#if 0 //host is big endian -#define zd_cpu_to_le32(x) (((x & 0xff000000) >> 24) | \ - ((x & 0x00ff0000) >> 8) | \ - ((x & 0x0000ff00) << 8) | \ - ((x & 0x000000ff) << 24)) - -#define zd_le32_to_cpu(x) (((x & 0xff000000) >> 24) | \ - ((x & 0x00ff0000) >> 8) | \ - ((x & 0x0000ff00) << 8) | \ - ((x & 0x000000ff) << 24)) -#else //host is little endian -#define zd_cpu_to_le32(x) (x) -#define zd_le32_to_cpu(x) (x) -#endif +/* ath_desc: bigendian support */ +/* ath: use cpu_to_le32 instead of zd_cpu_to_le32 */ +/* ath: deleted zd_cpu_to_le32 definition */ #define CMD_RESET_80211 0x0001 //parm1: zd_80211Obj_t * -#define CMD_ENABLE 0x0002 //parm1: None -#define CMD_DISASOC 0x0003 //parm1: U8 *MacAddress, parm2: reasonCode -#define CMD_DEAUTH 0x0004 //parm1: U8 *MacAddress, parm2: reasonCode -#define CMD_PS_POLL 0x0005 //parm1: U8 *MacHeader +#define CMD_ENABLE 0x0002 //parm1: None +#define CMD_DISASOC 0x0003 //parm1: U8 *MacAddress, parm2: reasonCode +#define CMD_DEAUTH 0x0004 //parm1: U8 *MacAddress, parm2: reasonCode +#define CMD_PS_POLL 0x0005 //parm1: U8 *MacHeader #define CMD_PASSIVE_SCAN 0x0006 //parm1: None #define CMD_DISASOC_ALL 0x0007 //parm1: U8 *MacAddress, parm2: reasonCode -#define CMD_CONNECT 0x0008 //parm1: None, parm2: BssIndex +#define CMD_CONNECT 0x0008 //parm1: None, parm2: BssIndex #define CMD_PROBE_REQ 0x0009 //parm1: None, parm2: WithSSID #define CMD_DIS_CONNECT 0x000A #define CMD_FLUSH_QUEUE 0x000B -#define CMD_ROAMING 0x000C +#define CMD_ROAMING 0x000C + //Event Notify -#define EVENT_TBCN 0x0010 + +#define EVENT_TBCN 0x0010 #define EVENT_DTIM_NOTIFY 0x0011 #define EVENT_TX_COMPLETE 0x0012 //parm1: tx status, parm2: msgId, parm3: aid #define EVENT_TCHAL_TIMEOUT 0x0013 #define EVENT_SCAN_TIMEOUT 0x0014 -#define EVENT_UPDATE_TX_RATE 0x0015 //parm1: rate, parm2: aid -#define EVENT_SW_RESET 0x0016 -#define EVENT_BUF_RELEASE 0x0017 -#define EVENT_ENABLE_PROTECTION 0x0018 +#define EVENT_UPDATE_TX_RATE 0x0015 //parm1: rate, parm2: aid +#define EVENT_SW_RESET 0x0016 +#define EVENT_BUF_RELEASE 0x0017 +#define EVENT_ENABLE_PROTECTION 0x0018 #define EVENT_AUTH_TIMEOUT 0x0019 #define EVENT_ASOC_TIMEOUT 0x001A #define EVENT_PS_CHANGE 0x001B //parm1: PwrState #define EVENT_MORE_DATA 0x001C -#define EVENT_ENABLE_BARKER 0x001D -#define EVENT_SHORT_SLOT 0x001E +#define EVENT_ENABLE_BARKER 0x001D +#define EVENT_SHORT_SLOT 0x001E + + +#define DO_CHAL 0x0001 +#define DO_SCAN 0x0002 +#define DO_AUTH 0x0003 +#define DO_ASOC 0x0004 + +#define SCAN_TIMEOUT 50 //ms +#define HOUSE_KEEPING_PERIOD 100 //ms +#define AUTH_TIMEOUT 512 //3000 //ms +#define ASOC_TIMEOUT 512 //2000 //ms -#define DO_CHAL 0x0001 -#define DO_SCAN 0x0002 -#define DO_AUTH 0x0003 -#define DO_ASOC 0x0004 - -#define SCAN_TIMEOUT 50 // ms -#define HOUSE_KEEPING_PERIOD 100 // ms -#define AUTH_TIMEOUT 512 //3000 // ms -#define ASOC_TIMEOUT 512 //2000 // ms //reason code #define ZD_UNSPEC_REASON 1 #define ZD_AUTH_NOT_VALID 2 #define ZD_DEAUTH_LEAVE_BSS 3 + #define ZD_INACTIVITY 4 #define ZD_AP_OVERLOAD 5 #define ZD_CLASS2_ERROR 6 @@ -142,17 +130,18 @@ #define ZD_DISAS_LEAVE_CSS 8 #define ZD_ASOC_NOT_AUTH 9 #define ZD_INVALID_IE 13 -#define ZD_MIC_FAIL 14 -#define ZD_4WAY_SHAKE_TIMEOUT 15 -#define ZD_GKEY_UPDATE_TIMEOUT 16 +#define ZD_MIC_FAIL 14 +#define ZD_4WAY_SHAKE_TIMEOUT 15 +#define ZD_GKEY_UPDATE_TIMEOUT 16 #define ZD_IE_IMCOMPABILITY 17 -#define ZD_MC_CIPHER_INVALID 18 -#define ZD_UNI_CIPHER_INVALID 19 +#define ZD_MC_CIPHER_INVALID 18 +#define ZD_UNI_CIPHER_INVALID 19 #define ZD_AKMP_INVALID 20 -#define ZD_UNSUP_RSNE_VERSION 21 +#define ZD_UNSUP_RSNE_VERSION 21 #define ZD_INVALID_RSNE_CAP 22 #define ZD_8021X_AUTH_FAIL 23 + /* association_status_notify() <- status */ #define STA_ASOC_REQ 0x0001 #define STA_REASOC_REQ 0x0002 @@ -166,45 +155,50 @@ #define ZD_TX_CONFIRM 0x0001 #define ZD_RETRY_FAILED 0x0002 + //for Dymanic Key #define DYN_KEY_WEP64 1 #define DYN_KEY_WEP128 2 -#define DYN_KEY_WEP256 3 #define DYN_KEY_TKIP 4 -#define DYN_KEY_AES 5 +#define DYN_KEY_AES 5 + //Rate Defintion -#define RATE_1M 0 -#define RATE_2M 1 -#define RATE_5M 2 -#define RATE_11M 3 -#define RATE_16M 4 -#define RATE_22M 5 -#define RATE_27M 6 -#define RATE_33M 7 -#define RATE_38M 8 -#define RATE_44M 9 -#define RATE_49M 10 -#define RATE_55M 11 -#define RATE_60M 12 - -#define RATE_6M 0x04 -#define RATE_9M 0x05 -#define RATE_12M 0x06 -#define RATE_18M 0x07 -#define RATE_24M 0x08 -#define RATE_36M 0x09 -#define RATE_48M 0x0a -#define RATE_54M 0x0b - -#define NO_WEP 0x0 -#define AES 0x4 -#define WEP64 0x1 -#define WEP128 0x5 -#define WEP256 0x6 -#define TKIP 0x2 +#define RATE_1M 0 +#define RATE_2M 1 +#define RATE_5M 2 +#define RATE_11M 3 +#define RATE_16M 4 + +#define RATE_22M 5 +#define RATE_27M 6 +#define RATE_33M 7 +#define RATE_38M 8 +#define RATE_44M 9 +#define RATE_49M 10 +#define RATE_55M 11 +#define RATE_60M 12 + +#define RATE_6M 0x04 +#define RATE_9M 0x05 +#define RATE_12M 0x06 +#define RATE_18M 0x07 +#define RATE_24M 0x08 +#define RATE_36M 0x09 +#define RATE_48M 0x0a +#define RATE_54M 0x0b + + +#define NO_WEP 0x0 +#define AES 0x4 +#define WEP64 0x1 +#define WEP128 0x5 +#define WEP256 0x6 +#define TKIP 0x2 + + -#define NUM_SUPPORTED_RATE 32 +#define NUM_SUPPORTED_RATE 32 // pfrmDesc->ConfigSet #define INTRA_BSS_SET 0x01 @@ -214,21 +208,26 @@ //BssType #define INDEPENDENT_BSS 0x0 #define INFRASTRUCTURE_BSS 0x1 -#define PSEUDO_IBSS 0x3 -#define AP_BSS 0x4 +#define PSEUDO_IBSS 0x3 +#define AP_BSS 0x4 //RxFilter #define AP_RX_FILTER 0x0400feff #define STA_RX_FILTER 0x0000ffff //pSetting->MacMode -#define MIXED_MODE 0x01 -#define PURE_G_MODE 0x02 -#define PURE_B_MODE 0x03 - -#define CW_SHORT_SLOT 0x7f043f -#define CW_NORMAL_SLOT 0xff043f -#define CW_LONG_SLOT 0x7f047f +#define MIXED_MODE 0x01 +#define PURE_G_MODE 0x02 +#define PURE_B_MODE 0x03 +#define PURE_A_MODE 0x04 + + + +#define CW_SHORT_SLOT 0x7f043f +#define CW_NORMAL_SLOT 0xff043f +#define CW_LONG_SLOT 0x7f047f + + //for Rate Adaption #define RISE_CONDITION_THRESHOLD 5 @@ -237,126 +236,157 @@ #define LINE2 10 #define LINE3 5 + //for CAM -#define CAM_VAP_START_AID 33 -#define CAM_VAP_END_AID 39 +#define CAM_VAP_START_AID 33 +#define CAM_VAP_END_AID 39 + +#define HW_MIC_FINISH 0x55555555 +#define CAM_ADDR_NOT_MATCH 40 -#define HW_MIC_FINISH 0x55555555 -#define CAM_ADDR_NOT_MATCH 40 +#define PURE_B_AP 0 +#define MIXED_AP 1 +#define PURE_G_AP 2 +#define PURE_A_AP 3 -#define PURE_B_AP 0 -#define MIXED_AP 1 -#define PURE_G_AP 2 enum Operation_Mode { - CAM_IBSS = 0, - CAM_AP, - CAM_STA, - CAM_AP_WDS, - CAM_AP_CLIENT, - CAM_AP_VAP + CAM_IBSS = 0, + CAM_AP, + CAM_STA, + CAM_AP_WDS, + CAM_AP_CLIENT, + CAM_AP_VAP }; -typedef struct card_Setting_s { - U8 EncryOnOff; //0: encryption off, 1: encryption on - U8 OperationMode; //0: IBSS, 1: AP, 2: STA, 3: WDS, 4: AP Client, 5: Virtual AP - U8 PreambleType; //0: long preamble, 1: short preamble - U8 TxRate; //0: 1M, 1: 2M, 2: 5.5M, 3: 11M, 4: 16.5M - U8 FixedRate; // fixed Tx Rate - U8 CurrTxRate; // - U8 AuthMode; //0: open system only, 1: shared key only, 2: auto - U8 HiddenSSID; //0: disable, 1:enable - U8 LimitedUser; //limited client number max to 32 user - U8 RadioOn; //0: radio off, 1: radio on - U8 BlockBSS; //0: don't block intra-bss traffic, 1: block - U8 TxPowerLevel; //0: 17dbm, 1: 14dbm, 2: 11dbm - U8 BasicRate; // - U8 EncryMode; //0: no wep, 2: wep63, 3:wep128 - U8 EncryKeyId; //encryption key id - U8 BcKeyId; //broadcast key id for dynamic key - U8 SwCipher; // - U8 WepKeyLen; //WEP key length - U8 BcKeyLen; //Broadcast key length - U8 DynKeyMode; //Dynamic key mode, 1: WEP64, 2: WEP128, 3: WEP256, 4:TKIP - U16 Channel; //channel number - U16 FragThreshold; //fragment threshold, from 256~2432 - U16 RTSThreshold; //RTS threshold, from 256~2432 - - U16 BeaconInterval; //default 100 ms - U16 DtimPeriod; //default 1 - U8 MacAddr[8]; - // ElementID(1), Len(1), SSID - U8 Info_SSID[34]; //include element ID, element Length, and element content - // ElementID(1), Len(1), SupportedRates(1-8) - U8 Info_SupportedRates[NUM_SUPPORTED_RATE]; //include element ID, element Length, and element content - U8 keyVector[4][32]; - U8 BcKeyVector[16]; - U8 WPAIe[128]; - U8 WPAIeLen; - U8 Rate275; - U8 WpaBcKeyLen; - U8 BssType; - U16 ATIMWindow; - U8 Ext_SupportedRates[NUM_SUPPORTED_RATE]; - U8 MacMode; - U8 ShortSlotTime; - U8 BarkerPreamble; - U8 LastSentTxRate; - + +typedef struct card_Setting_s +{ + U8 EncryOnOff; //0: encryption off, 1: encryption on + U8 OperationMode; //0: IBSS, 1: AP, 2: STA, 3: WDS, 4: AP Client, 5: Virtual AP + U8 PreambleType; //0: long preamble, 1: short preamble + U8 TxRate; //0: 1M, 1: 2M, 2: 5.5M, 3: 11M, 4: 16.5M + U8 FixedRate; // fixed Tx Rate + U8 CurrTxRate; // + U8 AuthMode; //0: open system only, 1: shared key only, 2: auto + U8 HiddenSSID; //0: disable, 1:enable + U8 LimitedUser; //limited client number max to 32 user + U8 RadioOn; //0: radio off, 1: radio on + U8 BlockBSS; //0: don't block intra-bss traffic, 1: block + U8 TxPowerLevel; //0: 17dbm, 1: 14dbm, 2: 11dbm + U8 BasicRate; // + U8 EncryMode; //0: no wep, 2: wep63, 3:wep128 + U8 EncryKeyId; //encryption key id + U8 BcKeyId; //broadcast key id for dynamic key + U8 SwCipher; // + U8 WepKeyLen; //WEP key length + U8 BcKeyLen; //Broadcast key length + U8 DynKeyMode; //Dynamic key mode, 1: WEP64, 2: WEP128, 4:TKIP + U16 Channel; //channel number + U16 FragThreshold; //fragment threshold, from 256~2432 + U16 RTSThreshold; //RTS threshold, from 256~2432 + + U16 BeaconInterval; //default 100 ms + U16 DtimPeriod; //default 1 + U8 MacAddr[8]; + // ElementID(1), Len(1), SSID + U8 Info_SSID[36]; //include element ID, element Length, and element content + // ElementID(1), Len(1), SupportedRates(1-8) + U8 Info_SupportedRates[NUM_SUPPORTED_RATE]; //include element ID, element Length, and element content + U8 keyVector[4][32]; + U8 BcKeyVector[16]; + U8 WPAIe[128]; + U8 WPAIeLen; + U8 WPASupport; + U8 Rate275; + U8 WpaBcKeyLen; + U8 BssType; + U16 ATIMWindow; + + //added for G + U8 Ext_SupportedRates[NUM_SUPPORTED_RATE]; + U8 MacMode; + U8 ShortSlotTime; + U8 BarkerPreamble; + // for UART support + //U8 UartEnable; + //U8 BaudRate; + + U8 LastSentTxRate; + U8 ap_scan; #ifdef OFDM - U8 HighestTxRate; + + U8 HighestTxRate; #endif -} card_Setting_t; + +} +card_Setting_t; + #define ZD_MAX_FRAG_NUM 8 -typedef struct fragInfo_s{ - U8 *macHdr[ZD_MAX_FRAG_NUM]; - U8 *macBody[ZD_MAX_FRAG_NUM]; - U32 bodyLen[ZD_MAX_FRAG_NUM]; - U32 nextBodyLen[ZD_MAX_FRAG_NUM]; - U8 hdrLen; - U8 totalFrag; - U8 bIntraBss; - U8 msgID; - U8 rate; - U8 preamble; - U8 encryType; - U8 burst; - U16 vapId; - U16 aid; - //U8 keyInstalled; - //U8 bWaitingMIC; - //U8 bSwCalcMIC; - //U32 HwMicPhys; - void *buf; -} fragInfo_t; - -typedef struct rxInfo_s{ - U8 rate; - U8 bDataFrm; - U8 SaIndex; - U8 signalStrength; - U8 signalQuality; - //U8 bSwCheckMIC; -} rxInfo_t; - -typedef struct bss_info_s { - U8 bssid[6]; - U16 beaconInterval; - U16 cap; - U16 atimWindow; - U8 ssid[36]; - U8 supRates[NUM_SUPPORTED_RATE]; - U8 extRates[NUM_SUPPORTED_RATE]; - U8 channel; - U8 signalStrength; - U8 signalQuality; - U8 apMode; -} bss_info_t; +typedef struct fragInfo_s +{ + U8 *macHdr[ZD_MAX_FRAG_NUM]; + U8 *macBody[ZD_MAX_FRAG_NUM]; + U32 bodyLen[ZD_MAX_FRAG_NUM]; + U32 nextBodyLen[ZD_MAX_FRAG_NUM]; + U8 hdrLen; + U8 totalFrag; + U8 bIntraBss; + U8 msgID; + U8 rate; + U8 preamble; + U8 encryType; + U8 burst; + U16 vapId; + U16 aid; + U8 CalSwMic[MIC_LNG+1]; + //U8 keyInstalled; + //U8 bWaitingMIC; + //U8 bSwCalcMIC; + //U32 HwMicPhys; + + + void *buf; + +} +fragInfo_t; + + +typedef struct rxInfo_s +{ + U8 rate; + U8 bDataFrm; + U8 SaIndex; + U8 signalStrength; + U8 signalQuality; + U8 bSwCheckMIC; +} +rxInfo_t; + + +typedef struct bss_info_s +{ + U8 bssid[6]; + U16 beaconInterval; + U16 cap; + U16 atimWindow; + U8 ssid[36]; + U8 supRates[NUM_SUPPORTED_RATE]; + U8 extRates[NUM_SUPPORTED_RATE]; + U8 WPAIe[128]; + U8 RSNIe[128]; + U8 channel; + U8 signalStrength; + U8 signalQuality; + U8 apMode; +} +bss_info_t; + -//for pdot11Obj->QueueFlag +//for pdot11Obj->QueueFlag #define TX_QUEUE_SET 0x01 #define MGT_QUEUE_SET 0x02 #define AWAKE_QUEUE_SET 0x04 @@ -365,98 +395,115 @@ //for mRequestFlag #define CONNECT_TOUT_SET 0x0001 #define DIS_CONNECT_SET 0x0002 -#define BSS_CONNECT_SET 0x0004 -#define CHANNEL_SCAN_SET 0x0008 +#define BSS_CONNECT_SET 0x0004 +#define CHANNEL_SCAN_SET 0x0008 #define PS_CHANGE_SET 0x0010 -#define PS_POLL_SET 0x0020 +#define PS_POLL_SET 0x0020 #define IBSS_CONNECT_SET 0x0040 -#define ROAMING_SET 0x0080 +#define ROAMING_SET 0x0080 -//for pdot11Obj->ConfigFlag -#define ENABLE_PROTECTION_SET 0x0001 -#define BARKER_PREAMBLE_SET 0x0002 -#define SHORT_SLOT_TIME_SET 0x0004 -#define NON_ERP_PRESENT_SET 0x0008 -#define PASSIVE_CHANNEL_SCAN_SET 0x0010 -#define ACTIVE_CHANNEL_SCAN_SET 0x0020 -#define IBSS_CHANNEL_SCAN_SET 0x0040 -#define SCAN_AND_CONNECT_SET 0x0080 -#define JUST_CHANNEL_SCAN 0x1000 + +//for pdot11Obj->ConfigFlag +#define ENABLE_PROTECTION_SET 0x0001 +#define BARKER_PREAMBLE_SET 0x0002 +#define SHORT_SLOT_TIME_SET 0x0004 +#define NON_ERP_PRESENT_SET 0x0008 +#define PASSIVE_CHANNEL_SCAN_SET 0x0010 +#define ACTIVE_CHANNEL_SCAN_SET 0x0020 +#define IBSS_CHANNEL_SCAN_SET 0x0040 +#define SCAN_AND_CONNECT_SET 0x0080 +#define JUST_CHANNEL_SCAN 0x1000 // Feature Bit Map -#define FBM_ANTTENA_DIVERSITY 0x00000001 -#define FBM_802_11D 0x00000002 +#define FBM_ANTTENA_DIVERSITY 0x00000001 +#define FBM_802_11D 0x00000002 #define FBM_27_5_MBPS 0x00000004 #define FBM_SINGLE_LED 0x00000008 +// Define debug command +#define DBG_CMD_BEACON 0x0001 + //driver to provide callback functions for 802.11 protocol stack -typedef struct zd_80211Obj_s { - void *reg; //Input - U8 QueueFlag; //Output - U16 ConfigFlag; //Output - U8 BasicRate; - U8 bDeviceInSleep; - U8 BssType; - U8 bOverWritePhyRegFromE2P; - U8 bIsNormalSize; - U16 BeaconInterval; - U16 Channel; - U16 Aid; - U32 rfMode; - U32 RegionCode; - U32 S_bit_cnt; - U32 AllowedChannel; - U8 TxGainSetting; +typedef struct zd_80211Obj_s +{ + void *reg; //Input + U8 QueueFlag; //Output + U16 ConfigFlag; //Output + U8 BasicRate; + U8 bDeviceInSleep; + U8 BssType; + U8 bOverWritePhyRegFromE2P; + U8 bIsNormalSize; + U16 BeaconInterval; + U16 Channel; + U16 Aid; + U32 rfMode; + U32 HWFeature; + U32 RegionCode; + U32 S_bit_cnt; + U32 AllowedChannel; + U32 dbg_cmd; + U8 TxGainSetting; #if fTX_GAIN_OFDM - U8 TxGainSetting2; -#endif - U8 CR31Flag; - U8 CR122Flag; - U8 CR203Flag; - U8 PhyTest; - U8 IsUSB2_0; - U8 bContinueTx; - U8 bChScanning; - U16 IntValue[14]; - U8 CurrSsid[34]; - - void (* ReleaseBuffer)(void *buf); // release rx buffer - void (* StartTimer)(U32 timeout, U32 event); // start a chanllege timer (shared key authentication) - void (* StopTimer)(U32 TimerId); // stop the challenge timer - void (* RxInd)(U8 *pData, U32 length, void *buf); // rx indication - void (* TxCompleted)(void); // tx completed - BOOLEAN (* SetupNextSend)(fragInfo_t *pFragInfo); // send to HMAC - void (* SetReg)(void *reg, U32 offset, U32 value); // set HMAC register - U32 (* GetReg)(void *reg, U32 offset); // get HMAC register - U16 (* StatusNotify)(U16 status, U8 *StaAddr); // association notify for bridge management - void (* ExitCS)(U32 flags); // enable interrupt - U32 (* EnterCS)(void); // disable interrupt - U32 (* Vir2PhyAddr)(U32 virtAddr); // translate virtual address to physical address - BOOLEAN (* CheckTCBAvail)(U8 NumOfFrag); // check TCB available - void (* DelayUs)(U16 ustime); // delay function - void * (* AllocBuffer)(U16 dataSize, U8 **pData); // allocate wireless forwarding buffer - - int (* Rand)(U32 seed); - void (* AcquireDoNotSleep)(void); - void (* ReleaseDoNotSleep)(void); - - // wpa support - void (* MicFailure)(unsigned char *addr); - int (* AssocRequest)(U8 *addr, U8* data, U16 size); - int (* WpaIe)(U8 *buffer, int length); -} zd_80211Obj_t; + + U8 TxGainSetting2; +#endif + + U8 CR31Flag; + U8 CR122Flag; + U8 CR203Flag; + U8 PhyTest; + U8 IsUSB2_0; + U8 bContinueTx; + U8 bChScanning; + U16 IntValue[14]; + U8 CurrSsid[34+1]; +#ifdef ZD1211B + + U8 LengthDiff; +#endif + + BOOLEAN MIC_CNT; + + void (* ReleaseBuffer)(void *buf); // release rx buffer + void (* StartTimer)(U32 timeout, U32 event); // start a chanllege timer (shared key authentication) + void (* StopTimer)(U32 TimerId); // stop the challenge timer + void (* RxInd)(U8 *pData, U32 length, void *buf); // rx indication + void (* TxCompleted)(void); // tx completed + BOOLEAN (* SetupNextSend)(fragInfo_t *pFragInfo); // send to HMAC + void (* SetReg)(void *reg, U32 offset, U32 value); // set HMAC register + U32 (* GetReg)(void *reg, U32 offset); // get HMAC register + U16 (* StatusNotify)(U16 status, U8 *StaAddr); // association notify for bridge management + void (* ExitCS)(U32 flags); // enable interrupt + U32 (* EnterCS)(void); // disable interrupt + U32 (* Vir2PhyAddr)(U32 virtAddr); // translate virtual address to physical address + BOOLEAN (* CheckTCBAvail)(U8 NumOfFrag); // check TCB available + void (* DelayUs)(U16 ustime); // delay function + void * (* AllocBuffer)(U16 dataSize, U8 **pData); // allocate wireless forwarding buffer + + int (* Rand)(U32 seed); + void (* AcquireDoNotSleep)(void); + void (* ReleaseDoNotSleep)(void); + + // wpa support + void (* MicFailure)(unsigned char *addr); + int (* AssocRequest)(U8 *addr, U8* data, U16 size); + int (* WpaIe)(U8 *buffer, int length); +} +zd_80211Obj_t; + //802.11 export functions for driver use extern void zd_SigProcess(void); // protocol statck entry point extern BOOLEAN zd_SendPkt(U8 *pEthHdr, U8 *pBody, U32 bodyLen, void *buf, U8 bEapol, void *pHash); // tx request extern void zd_ReceivePkt(U8 *pHdr, U32 hdrLen, U8 *pBody, U32 bodyLen, void *buf, U8 *pEthHdr, rxInfo_t *pRxInfo); // rx indication -extern BOOLEAN zd_CmdProcess(U16 CmdId, void *parm1, U32 parm2); //command process +extern BOOLEAN zd_CmdProcess(U16 CmdId, void *parm1, U32 parm2); //command process extern void zd_EventNotify(U16 EventId, U32 parm1, U32 parm2, U32 parm3); //event notify extern void zd_UpdateCardSetting(card_Setting_t *pSetting); extern BOOLEAN zd_CleanupTxQ(void); extern BOOLEAN zd_CleanupAwakeQ(void); extern int zd_SetKeyInfo(U8 *addr, U8 encryMode, U8 keyLength, U8 KeyId, U8 *pKeyContent); -extern void zd_PerSecTimer(void); +extern void zd_PerSecTimer(void); extern BOOLEAN zd_CheckIvSeq(U8 aid, U16 iv16, U32 iv32); extern void zd_RateMoniter(void); extern BOOLEAN zd_QueryStaTable(U8 *sta, void **ppHash); @@ -466,3 +513,4 @@ extern void zd_makeRateInfoMAP(U8 *pRates, U16 *basicRateMap, U16 *supRateMap); extern void zd_UpdateIbssInfo(U8 *addr, U8 maxRate, U8 preamble, U8 erpSta); #endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdencrypt.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdencrypt.c @@ -1,237 +1,237 @@ -/* $Id: zdencrypt.c,v 1.8 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +#ifndef _ZD_ENCRYPT_C +#define _ZD_ENCRYPT_C -#if defined(PHY_1202) +#if defined(PHY_1202) #include "zd80211.h" -const unsigned int crc32_tab[] = { - 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, - 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, - 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, - 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, - 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, - 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, - 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, - 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, - 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, - 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, - 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, - 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, - 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, - 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, - 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, - 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, - 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, - 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, - 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, - 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, - 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, - 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, - 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, - 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, - 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, - 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, - 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, - 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, - 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, - 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, - 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, - 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, - 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, - 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, - 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, - 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, - 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, - 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, - 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, - 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, - 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, - 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, - 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, - 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, - 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, - 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, - 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, - 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, - 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, - 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, - 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, - 0x2d02ef8dL -}; +const unsigned int crc32_tab[] = + { + 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, + 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, + 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, + 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, + 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, + 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, + 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, + 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, + 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, + 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, + 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, + 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, + 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, + 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, + 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, + 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, + 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, + 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, + 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, + 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, + 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, + 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, + 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, + 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, + 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, + 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, + 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, + 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, + 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, + 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, + 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, + 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, + 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, + 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, + 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, + 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, + 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, + 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, + 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, + 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, + 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, + 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, + 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, + 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, + 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, + 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, + 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, + 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, + 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, + 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, + 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, + 0x2d02ef8dL + }; + U8 S[256]; void initWepState(void) { - int i; - for (i=0; i<256; i++) - S[i] = i; + int i; + + for (i=0; i<256; i++) { + S[i] = i; + } } -void zd_EncryptData (U8 Wep_Key_Len, U8* Wep_Key, U8* Wep_Iv, U16 Num_Bytes, U8* Inbuf,U8* Outbuf,U32* Icv) + +void zd_EncryptData ( + U8 Wep_Key_Len, + U8* Wep_Key, + U8* Wep_Iv, + U16 Num_Bytes, + U8* Inbuf, + U8* Outbuf, + U32* Icv) { - U8 S2[256], Se[256]; - register U16 ui; - register U16 i; - register U16 j; - register U8 temp; - U8 keylen = Wep_Key_Len + 3; - U8 K; - U8 *In = Inbuf; - U8 *Out = Outbuf; - U32 ltemp; - - for (i=0; i<256; i++) { - if ((i&(keylen-1)) < 3) - S2[i] = Wep_Iv[i & (keylen-1)]; - else - S2[i] = Wep_Key[(i & (keylen-1)) - 3]; - } - - memcpy(Se, S, 256); - - j = 0; - for (i=0; i<256; i++) { - j = (j + Se[i] + S2[i]) ; - j &= 255 ; - // Swap S[i] and S[j] - temp = Se[i]; - Se[i] = Se[j]; - Se[j] = temp; - } - - i = j = 0; - *Icv = -1; - for (ui=0; ui> 8) ^ crc32_tab[(*Icv ^ *In) & 0xff]; - - *Out = *In ^ K; // XOR - In++; - Out++; - } //End of for (ui = 0; ui < Num_Bytes; ui++) - - *Icv = ~(*Icv); - ltemp = *Icv; - for (ui=0; ui<4; ui++) { - i ++; - i &= 255; - j += Se[i]; - j &= 255; - - // Swap S[i] and S[j] - temp = Se[i]; - Se[i] = Se[j]; - Se[j] = temp; - temp += Se[i]; - temp &= 255; - K = Se[temp]; // Key used to Xor with input data - - *Out++ = (U8) (ltemp ^ K) & 0xff; - ltemp >>= 8; - } + U8 S2[256], Se[256]; + register U16 ui; + register U16 i; + register U16 j; + register U8 temp; + U8 keylen = Wep_Key_Len + 3; + U8 K; + U8 *In = Inbuf; + U8 *Out = Outbuf; + U32 ltemp; + + for (i=0; i<256; i++) { + if ((i&(keylen-1)) < 3) + S2[i] = Wep_Iv[i & (keylen-1)]; + else + S2[i] = Wep_Key[(i & (keylen-1)) - 3]; + } + + memcpy(Se, S, 256); + + j = 0; + for (i=0; i<256; i++) { + j = (j + Se[i] + S2[i]) ; + j &= 255 ; + + // Swap S[i] and S[j] + temp = Se[i]; + Se[i] = Se[j]; + Se[j] = temp; + } + + i = j = 0; + *Icv = -1; + for (ui=0; ui> 8) ^ crc32_tab[(*Icv ^ *In) & 0xff]; + + *Out = *In ^ K; // XOR + In++; + Out++; + } //End of for (ui = 0; ui < Num_Bytes; ui++) + + *Icv = ~(*Icv); + ltemp = *Icv; + for (ui=0; ui<4; ui++) { + i ++; + i &= 255; + j += Se[i]; + j &= 255; + + // Swap S[i] and S[j] + temp = Se[i]; + Se[i] = Se[j]; + Se[j] = temp; + temp += Se[i]; + temp &= 255; + K = Se[temp]; // Key used to Xor with input data + + *Out++ = (U8) (ltemp ^ K) & 0xff; + ltemp >>= 8; + } } -BOOLEAN zd_DecryptData (U8 Wep_Key_Len,U8* Wep_Key, U8* Wep_Iv, - U16 Num_Bytes, U8* Inbuf, U8* Outbuf, U32* Icv) + +BOOLEAN zd_DecryptData ( + U8 Wep_Key_Len, + U8* Wep_Key, + U8* Wep_Iv, + U16 Num_Bytes, //include IVC + U8* Inbuf, + U8* Outbuf, //the same with InBuf + U32* Icv) { - U8 S2[256], Sd[256]; - register U16 ui; - register U16 i; - register U16 j; - U8 keylen = Wep_Key_Len + 3; - register U8 temp; - U8 K; - U8 *In = Inbuf; - U8 *Out = Outbuf; - - for (i=0; i<256; i++) { - if ((i&(keylen-1)) < 3) - S2[i] = Wep_Iv[i&(keylen-1)]; - else - S2[i] = Wep_Key[(i&(keylen-1))-3]; - } - memcpy(Sd, S, 256); - - j = 0; - for (i=0; i<256; i++) { - j = (j + Sd[i] + S2[i]) & 255; - // Swap S[i] and S[j] - temp = Sd[i]; - Sd[i] = Sd[j]; - Sd[j] = temp; - } - - i = j = 0; - // Decrypt Decrypted Data and Decrypted ICV - for (ui = 0; ui < Num_Bytes; ui++) { - i++; - i &= 255; - j += Sd[i]; - j &= 255; - - // Swap S[i] and S[j] - temp = Sd[i]; - Sd[i] = Sd[j]; - Sd[j] = temp; - temp += Sd[i]; - temp &= 255; - K = Sd[temp]; // Key used to Xor with input data - - *Out = *In ^ K; // decrypt - In++; - Out++; - } //End of for (ui = 0; ui < Num_Bytes; ui++) - - // Inverse Decrypted ICV - Outbuf[Num_Bytes-4] = ~Outbuf[Num_Bytes-4]; - Outbuf[Num_Bytes-3] = ~Outbuf[Num_Bytes-3]; - Outbuf[Num_Bytes-2] = ~Outbuf[Num_Bytes-2]; - Outbuf[Num_Bytes-1] = ~Outbuf[Num_Bytes-1]; - - //Check ICV - *Icv = -1; - for (ui = 0; ui < Num_Bytes; ui++) { - *Icv = (*Icv>>8) ^ crc32_tab[(*Icv ^ Outbuf[ui]) & 0xff]; - } - - if (*Icv == 0) - return 1; - else - return 0; + U8 S2[256], Sd[256]; + register U16 ui; + register U16 i; + register U16 j; + U8 keylen = Wep_Key_Len + 3; + register U8 temp; + U8 K; + U8 *In = Inbuf; + U8 *Out = Outbuf; + + for (i=0; i<256; i++) { + if ((i&(keylen-1)) < 3) + S2[i] = Wep_Iv[i&(keylen-1)]; + else + S2[i] = Wep_Key[(i&(keylen-1))-3]; + } + + memcpy(Sd, S, 256); + + j = 0; + for (i=0; i<256; i++) { + j = (j + Sd[i] + S2[i]) & 255; + // Swap S[i] and S[j] + temp = Sd[i]; + Sd[i] = Sd[j]; + Sd[j] = temp; + } + + i = j = 0; + // Decrypt Decrypted Data and Decrypted ICV + for (ui = 0; ui < Num_Bytes; ui++) { + i++; + i &= 255; + j += Sd[i]; + j &= 255; + + // Swap S[i] and S[j] + temp = Sd[i]; + Sd[i] = Sd[j]; + Sd[j] = temp; + temp += Sd[i]; + temp &= 255; + K = Sd[temp]; // Key used to Xor with input data + + *Out = *In ^ K; // decrypt + In++; + Out++; + } //End of for (ui = 0; ui < Num_Bytes; ui++) + + // Inverse Decrypted ICV + Outbuf[Num_Bytes-4] = ~Outbuf[Num_Bytes-4]; + Outbuf[Num_Bytes-3] = ~Outbuf[Num_Bytes-3]; + Outbuf[Num_Bytes-2] = ~Outbuf[Num_Bytes-2]; + Outbuf[Num_Bytes-1] = ~Outbuf[Num_Bytes-1]; + + //Check ICV + *Icv = -1; + for (ui = 0; ui < Num_Bytes; ui++) { + *Icv = (*Icv>>8) ^ crc32_tab[(*Icv ^ Outbuf[ui]) & 0xff]; + } + + if (*Icv == 0) + return 1; + else + return 0; } #endif +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdbuf.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdbuf.c @@ -1,31 +1,10 @@ -/* $Id: zdbuf.c,v 1.9 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +#ifndef __ZDBUF_C__ +#define __ZDBUF_C__ #include "zd80211.h" #include + #define MAX_SIGNAL_NUM 64 SignalQ_t mgtQ, txQ, awakeQ, psQ[MAX_RECORD]; @@ -44,225 +23,298 @@ void initSigQue(SignalQ_t *Q) { - U32 flags; - - flags = pdot11Obj->EnterCS(); - Q->first = NULL; - Q->last = NULL; - Q->cnt = 0; - pdot11Obj->ExitCS(flags); + U32 flags; + + flags = pdot11Obj->EnterCS(); + Q->first = NULL; + Q->last = NULL; + Q->cnt = 0; + pdot11Obj->ExitCS(flags); } void releaseSignalBuf(void) { - int i; - - for (i=0; iExitCS(flags); - return; - } - flags = pdot11Obj->EnterCS(); - SignalBuf[i]->pNext = FreeSignalList; - FreeSignalList = SignalBuf[i]; - pdot11Obj->ExitCS(flags); - } + initSigQue(pMgtQ); + FreeSignalList = NULL; + freeSignalCount = MAX_SIGNAL_NUM; + + for (i=0; iExitCS(flags); + return; + } + flags = pdot11Obj->EnterCS(); + SignalBuf[i]->pNext = FreeSignalList; + FreeSignalList = SignalBuf[i]; + pdot11Obj->ExitCS(flags); + } } + Signal_t *allocSignal(void) { - U32 flags; - Signal_t *signal = NULL; - - flags = pdot11Obj->EnterCS(); - if (FreeSignalList != NULL) { - signal = FreeSignalList; - FreeSignalList = FreeSignalList->pNext; - signal->pNext = NULL; - signal->buf = NULL; - signal->frmInfo.frmDesc = NULL; - freeSignalCount-- ; - } - - pdot11Obj->ExitCS(flags); - - return signal; + U32 flags; + Signal_t *signal = NULL; + + flags = pdot11Obj->EnterCS(); + if (FreeSignalList != NULL) { + signal = FreeSignalList; + FreeSignalList = FreeSignalList->pNext; + signal->pNext = NULL; + signal->buf = NULL; + signal->frmInfo.frmDesc = NULL; + freeSignalCount-- ; + } + + pdot11Obj->ExitCS(flags); + return signal; } void freeSignal(Signal_t *signal) { - U32 flags; + U32 flags; + + if (!signal) { + FPRINT("Free NULL signal"); + return; + } + + flags = pdot11Obj->EnterCS(); + signal->buf = NULL; + signal->vapId=0; + + signal->frmInfo.frmDesc = NULL; + signal->pNext = FreeSignalList; + FreeSignalList = signal; + freeSignalCount++; + pdot11Obj->ExitCS(flags); +} + +void re_initFdescBuf(void) +{ + int i; + for (i=0; iEnterCS(); - signal->buf = NULL; - signal->frmInfo.frmDesc = NULL; - signal->pNext = FreeSignalList; - FreeSignalList = signal; - freeSignalCount++; - pdot11Obj->ExitCS(flags); } void initFdescBuf(void) { - int i; - U32 flags; - FrmDesc_t *pFrmDesc; - - flags = pdot11Obj->EnterCS(); - FreeFdescList = NULL; - - for (i=0; iExitCS(flags); - return; - } - FdescBuf[i]->pNext = FreeFdescList; - FreeFdescList = FdescBuf[i]; - } + int i; + U32 flags; + //FrmDesc_t *pFrmDesc; + + flags = pdot11Obj->EnterCS(); + FreeFdescList = NULL; + + for (i=0; iExitCS(flags); + return; + } + + FdescBuf[i]->pNext = FreeFdescList; + FreeFdescList = FdescBuf[i]; + } + +#if 0 + FPRINT_V("FreeFdescList", FreeFdescList); + pFrmDesc = FreeFdescList; + for (i=0; ipNext", pFrmDesc->pNext); + pFrmDesc = pFrmDesc->pNext; + } +#endif - pdot11Obj->ExitCS(flags); + pdot11Obj->ExitCS(flags); } + void releaseFdescBuf(void) { - int i; - - for (i=0; iEnterCS(); - if (FreeFdescList != NULL) { - pfrmDesc = FreeFdescList; - FreeFdescList = FreeFdescList->pNext; - pfrmDesc->pNext = NULL; - pfrmDesc->ConfigSet = 0; - //pfrmDesc->bDataFrm = 0; - pfrmDesc->pHash = NULL; - pfrmDesc->bValid = TRUE; - freeFdescCount--; - allocCnt++; - if (FreeFdescList == NULL) { - FPRINT("FreeFdescList == NULL"); - FPRINT_V("freeFdescCount", (U32)freeFdescCount); - FPRINT_V("Cnt of MgtQ", pMgtQ->cnt); - } - } - - pdot11Obj->ExitCS(flags); - - //FPRINT_V("alloc pfrmDesc", (U32)pfrmDesc); - //FPRINT_V("FreeFdescList", (U32)FreeFdescList); + U32 flags; + FrmDesc_t *pfrmDesc = NULL; + + flags = pdot11Obj->EnterCS(); - return pfrmDesc; + if (FreeFdescList != NULL) { + pfrmDesc = FreeFdescList; + FreeFdescList = FreeFdescList->pNext; + //memset(pfrmDesc,0,sizeof(FrmDesc_t)); + //memset(pfrmDesc->mpdu,0,sizeof(Frame_t)*MAX_FRAG_NUM); + pfrmDesc->pNext = NULL; + pfrmDesc->ConfigSet = 0; + //pfrmDesc->bDataFrm = 0; + pfrmDesc->pHash = NULL; + pfrmDesc->bValid = TRUE; + freeFdescCount--; + allocCnt++; + + if (FreeFdescList == NULL) { + FPRINT("FreeFdescList == NULL"); + FPRINT_V("freeFdescCount", (U32)freeFdescCount); + FPRINT_V("Cnt of MgtQ", pMgtQ->cnt); + } + } + + pdot11Obj->ExitCS(flags); + //FPRINT_V("alloc pfrmDesc", (U32)pfrmDesc); + //FPRINT_V("FreeFdescList", (U32)FreeFdescList); + + return pfrmDesc; } + void freeFdesc(FrmDesc_t *pfrmDesc) { - U32 flags; - FrmDesc_t *pOldFdesc; + U32 flags; + FrmDesc_t *pOldFdesc; - if (!pfrmDesc) { - FPRINT("Free NULL pfrmDesc"); - return; - } - - flags = pdot11Obj->EnterCS(); - - //FPRINT_V("FreeFdescList", (U32)FreeFdescList); - pOldFdesc = FreeFdescList; - pfrmDesc->ConfigSet = 0; - //pfrmDesc->bDataFrm = 0; - pfrmDesc->pHash = NULL; - pfrmDesc->pNext = FreeFdescList; - FreeFdescList = pfrmDesc; - pfrmDesc->bValid = FALSE; - freeFdescCount++; - freeCnt++; - //FPRINT_V("free pfrmDesc", (U32)pfrmDesc); - pdot11Obj->ExitCS(flags); + if (!pfrmDesc) { + FPRINT("Free NULL pfrmDesc"); + return; + } + + flags = pdot11Obj->EnterCS(); +#if 0 + + if (!pfrmDesc->bValid) { + FPRINT_V("pfrmDesc->bValid", pfrmDesc->bValid); + pdot11Obj->ExitCS(flags); + return; + } +#endif + + //FPRINT_V("FreeFdescList", (U32)FreeFdescList); + pOldFdesc = FreeFdescList; + pfrmDesc->ConfigSet = 0; + //pfrmDesc->bDataFrm = 0; + pfrmDesc->pHash = NULL; + pfrmDesc->pNext = FreeFdescList; + FreeFdescList = pfrmDesc; + pfrmDesc->bValid = FALSE; + freeFdescCount++; + freeCnt++; + //FPRINT_V("free pfrmDesc", (U32)pfrmDesc); + +#if 0 + + if (FreeFdescList == 0) { + FPRINT("xxxxxxxxxx"); + FPRINT_V("free pfrmDesc", (U32)pfrmDesc); + FPRINT_V("freeFdescCount", (U32)freeFdescCount); + } + + if (pfrmDesc == pfrmDesc->pNext) { + FPRINT("ooooooooooo"); + FPRINT_V("pOldFdesc", (U32)pOldFdesc); + FPRINT_V("free pfrmDesc", (U32)pfrmDesc); + FPRINT_V("freeFdescCount", (U32)freeFdescCount); + } +#endif + pdot11Obj->ExitCS(flags); } + Signal_t *sigDeque(SignalQ_t *Q) { - U32 flags; - Signal_t *signal = NULL; + U32 flags; + Signal_t *signal = NULL; - flags = pdot11Obj->EnterCS(); - if (Q->first != NULL) { - Q->cnt--; - signal = Q->first; - Q->first = (Q->first)->pNext; - if (Q->first == NULL) - Q->last = NULL; - } - pdot11Obj->ExitCS(flags); - return signal; + flags = pdot11Obj->EnterCS(); + if (Q->first != NULL) { + Q->cnt--; + signal = Q->first; + Q->first = (Q->first)->pNext; + if (Q->first == NULL) + Q->last = NULL; + } + pdot11Obj->ExitCS(flags); + return signal; } + void sigEnque(SignalQ_t *Q, Signal_t *signal) { - U32 flags; - - flags = pdot11Obj->EnterCS(); - signal->pNext = NULL; - if (Q->last == NULL) { - Q->first = signal; - Q->last = signal; - } else { - Q->last->pNext = signal; - Q->last = signal; - } - Q->cnt++; - - if (Q == pMgtQ) - pdot11Obj->QueueFlag |= MGT_QUEUE_SET; - else if (Q == pTxQ) - pdot11Obj->QueueFlag |= TX_QUEUE_SET; - else if (Q == pAwakeQ) - pdot11Obj->QueueFlag |= AWAKE_QUEUE_SET; + U32 flags; + + flags = pdot11Obj->EnterCS(); + signal->pNext = NULL; + if (Q->last == NULL) { + Q->first = signal; + Q->last = signal; + } else { + Q->last->pNext = signal; + Q->last = signal; + } + Q->cnt++; + + if (Q == pMgtQ) + pdot11Obj->QueueFlag |= MGT_QUEUE_SET; + else if (Q == pTxQ) + pdot11Obj->QueueFlag |= TX_QUEUE_SET; + else if (Q == pAwakeQ) + pdot11Obj->QueueFlag |= AWAKE_QUEUE_SET; - pdot11Obj->ExitCS(flags); + pdot11Obj->ExitCS(flags); } + void sigEnqueFirst(SignalQ_t *Q, Signal_t *signal) { - int i_state; + int i_state; - FPRINT("sigEnqueFirst"); - i_state = pdot11Obj->EnterCS(); - signal->pNext = Q->first; - if (Q->last == NULL) { - Q->last = signal; - } - Q->first = signal; - Q->cnt++; - pdot11Obj->ExitCS(i_state); + FPRINT("sigEnqueFirst"); + + i_state = pdot11Obj->EnterCS(); + signal->pNext = Q->first; + + if (Q->last == NULL) { + Q->last = signal; + } + + Q->first = signal; + Q->cnt++; + + pdot11Obj->ExitCS(i_state); } + +#endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdcompat.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdcompat.h @@ -1,27 +1,3 @@ -/* $Id: zdcompat.h,v 1.4 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZDCOMPAT_H_ #define _ZDCOMPAT_H_ @@ -31,42 +7,44 @@ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) #ifndef INIT_TQUEUE -#define INIT_TQUEUE(_tq, _routine, _data) \ - do { \ - (_tq)->next = NULL; \ - (_tq)->sync = 0; \ - PREPARE_TQUEUE((_tq), (_routine), (_data)); \ - } while (0) -#define PREPARE_TQUEUE(_tq, _routine, _data) \ - do { \ - (_tq)->routine = _routine; \ - (_tq)->data = _data; \ - } while (0) +#define INIT_TQUEUE(_tq, _routine, _data) \ + do { \ + (_tq)->next = NULL; \ + (_tq)->sync = 0; \ + PREPARE_TQUEUE((_tq), (_routine), (_data)); \ + } while (0) +#define PREPARE_TQUEUE(_tq, _routine, _data) \ + do { \ + (_tq)->routine = _routine; \ + (_tq)->data = _data; \ + } while (0) #endif #ifndef INIT_WORK #define work_struct tq_struct #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)) -#define schedule_work(a) queue_task(a, &tq_scheduler) +#define schedule_work(a) queue_task(a, &tq_scheduler) #else -#define schedule_work(a) schedule_task(a) +#define schedule_work(a) schedule_task(a) #endif -#define flush_scheduled_work flush_scheduled_tasks -#define INIT_WORK(_wq, _routine, _data) INIT_TQUEUE(_wq, _routine, _data) -#define PREPARE_WORK(_wq, _routine, _data) PREPARE_TQUEUE(_wq, _routine, _data) +#define flush_scheduled_work flush_scheduled_tasks +#define INIT_WORK(_wq, _routine, _data) INIT_TQUEUE(_wq, _routine, _data) +#define PREPARE_WORK(_wq, _routine, _data) PREPARE_TQUEUE(_wq, _routine, _data) #endif #endif // < 2.5 kernel + #ifndef DECLARE_TASKLET #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)) -#define tasklet_schedule(a) queue_task(a, &tq_scheduler) +#define tasklet_schedule(a) queue_task(a, &tq_scheduler) #else -#define tasklet_schedule(a) schedule_task(a) +#define tasklet_schedule(a) schedule_task(a) #endif #endif + #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,38)) typedef struct device netdevice_t; #elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,4)) @@ -80,8 +58,8 @@ #if (WIRELESS_EXT < 13) struct iw_request_info { - __u16 cmd; /* Wireless Extension command */ - __u16 flags; /* More to come ;-) */ + __u16 cmd; /* Wireless Extension command */ + __u16 flags; /* More to come ;-) */ }; #endif #endif @@ -95,17 +73,18 @@ #endif #ifndef in_atomic -#define in_atomic() 0 +#define in_atomic() 0 #endif -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) // fixme -#define URB_ASYNC_UNLINK USB_ASYNC_UNLINK +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) // fixme +#define URB_ASYNC_UNLINK USB_ASYNC_UNLINK #else #define USB_QUEUE_BULK 0 #endif #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)) -#define free_netdev(x) kfree(x) +#define free_netdev(x) kfree(x) #endif + #endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdbuf.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdbuf.h @@ -1,40 +1,18 @@ -/* $Id: zdbuf.h,v 1.4 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef __ZDBUF_H__ #define __ZDBUF_H__ + extern SignalQ_t mgtQ, *pMgtQ; -extern SignalQ_t txQ, *pTxQ; +extern SignalQ_t txQ, *pTxQ; extern SignalQ_t awakeQ, *pAwakeQ; extern SignalQ_t psQ[MAX_RECORD], *pPsQ[MAX_RECORD]; extern U32 freeSignalCount; extern U32 freeFdescCount; + void initSigQue(SignalQ_t *Q); void sigEnque(SignalQ_t *Q, Signal_t *signal); -void sigEnqueFirst(SignalQ_t *Q, Signal_t *signal); +void sigEnqueFirst(SignalQ_t *Q, Signal_t *signal); Signal_t *sigDeque(SignalQ_t* Q); void initSignalBuf(void); void initFdescBuf(void); @@ -44,4 +22,7 @@ extern void freeSignal(Signal_t *signal); void releaseSignalBuf(void); void releaseFdescBuf(void); +void re_initFdescBuf(void); + #endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdglobal.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdglobal.c @@ -1,48 +1,36 @@ -/* $Id: zdglobal.c,v 1.6 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +#ifndef __ZDGLOBAL_C__ +#define __ZDGLOBAL_C__ #include "zd80211.h" +#include "zddebug.h" + U8 mPreambleType = LONG_PREAMBLE; MacAddr_t dot11MacAddress = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; Element dot11DesiredSsid; +U8 dot11DesiredBssid[6]; // When macp->ap_scan=1, use this to associate with an AP. +U32 mDebugFlag = 0; U8 mAuthAlogrithms[2] = {OPEN_SYSTEM, SHARE_KEY}; U16 mRfChannel = 0; U16 mBeaconPeriod = 100; U16 mDtimPeriod = 1; U16 mFragThreshold = 2432; U16 mRtsThreshold = 2432; +U16 mTmRetryConnect=0; +// For debugging purpose +//#ifdef WPADATA_DEBUG +u8 *DbgStrEncryType[]={"NOWEP","WEP64","TKIP","NA3","AES","WEP128","WEP256", "NA7"}; +u8 *DbgStrDynKeyMode[]={"NOWEP","WEP64","WEP128","NA3","TKIP","AES","NA6","NA7"}; +//#endif +// ------------------------------------------------------------------------ //WPA Element mWPAIe; - +U8 mCounterMeasureState; //WEP U8 mKeyId = 0; U8 mKeyFormat = WEP64_USED; BOOLEAN mPrivacyInvoked = FALSE; - Element mSsid; Element mBrates; Element mPhpm; @@ -54,6 +42,8 @@ U8 mHiddenSSID = 0; U8 mLimitedUser = 0; U8 mCurrConnUser = 0; +U8 mNumBOnlySta=0; + U8 mBlockBSS = 0; U8 mRadioOn = 1; U8 mSwCipher = 0; @@ -68,12 +58,15 @@ BOOLEAN mZyDasModeClient = FALSE; Seedvar mBcSeed; MICvar mBcMicKey; -U8 mWpaBcKeyLen = 32; +U8 mWpaBcKeyLen = 0; U8 mWpaBcKeyId = 1; U8 mGkInstalled = 0; U16 mIv16 = 0; U32 mIv32 = 0; - +const U8 zeroMacAddress[6] = + { + 0,0,0,0,0,0 + }; MacAddr_t dot11BCAddress = {{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}}; BssInfo_t mBssInfo[64]; U8 mBssNum = 0; @@ -105,4 +98,7 @@ Element mAPErates; BOOLEAN mIfaceOpened = FALSE; +Element mBrates11A; //Basic Rate for 11A + U8 mAuthMode; +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdauthreq.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdauthreq.c @@ -1,225 +1,212 @@ -/* $Id: zdauthreq.c,v 1.6 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +#ifndef __ZDAUTHREQ_C__ +#define __ZDAUTHREQ_C__ #include "zd80211.h" U8 AuthReqState = STE_AUTH_REQ_IDLE; static MacAddr_t AuSta; + BOOLEAN DeauthReq(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - MacAddr_t Sta; - ReasonCode Rsn = RC_UNSPEC_REASON; - U8 vapId = 0; - - ZDEBUG("DeauthReq"); - - memcpy((U8 *)&Sta, (U8 *)&signal->frmInfo.Sta, 6); - Rsn = signal->frmInfo.rCode; - - vapId = signal->vapId; - UpdateStaStatus(&Sta, STATION_STATE_NOT_AUTH, vapId); - - pfrmDesc = allocFdesc(); - if(!pfrmDesc) { - sigEnque(pMgtQ, (signal)); - return FALSE; - } - - mkDisAssoc_DeAuthFrm(pfrmDesc, ST_DEAUTH, &Sta, Rsn, vapId); - sendMgtFrame(signal, pfrmDesc); - - return FALSE; + FrmDesc_t *pfrmDesc; + MacAddr_t Sta; + ReasonCode Rsn = RC_UNSPEC_REASON; + U8 vapId = 0; + + ZDEBUG("DeauthReq"); + + memcpy((U8 *)&Sta, (U8 *)&signal->frmInfo.Sta, 6); + Rsn = signal->frmInfo.rCode; + pdot11Obj->StatusNotify(STA_DEAUTHED, (u8 *)&Sta); + + vapId = signal->vapId; + UpdateStaStatus(&Sta, STATION_STATE_NOT_AUTH, vapId); + + pfrmDesc = allocFdesc(); + if(!pfrmDesc) { + sigEnque(pMgtQ, (signal)); + return FALSE; + } + + mkDisAssoc_DeAuthFrm(pfrmDesc, ST_DEAUTH, &Sta, Rsn, vapId); + sendMgtFrame(signal, pfrmDesc); + + return FALSE; } + BOOLEAN AuthReq(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - U8 vapId = 0; - U16 auSC = SC_SUCCESSFUL; - - //ZDEBUG("AuthReq"); - FPRINT("AuthReq"); - pfrmDesc = allocFdesc(); - if(!pfrmDesc) { - FPRINT("allocFdesc failed"); - sigEnque(pMgtQ, (signal)); - return FALSE; - } - - memcpy((U8 *)&AuSta, (U8 *)&signal->frmInfo.Sta, 6); - //memcpy((U8 *)&AuSta, (U8 *)&mBssId, 6); - mkAuthFrm(pfrmDesc, &AuSta, mAuthAlg, 1, auSC, NULL, vapId); - pdot11Obj->StartTimer(AUTH_TIMEOUT, DO_AUTH); - AuthReqState = STE_WAIT_AUTH_SEQ2; - return sendMgtFrame(signal, pfrmDesc); + FrmDesc_t *pfrmDesc; + U8 vapId = 0; + U16 auSC = SC_SUCCESSFUL; + + //ZDEBUG("AuthReq"); + FPRINT("AuthReq"); + pfrmDesc = allocFdesc(); + if(!pfrmDesc) { + FPRINT("allocFdesc failed"); + sigEnque(pMgtQ, (signal)); + return FALSE; + } + + memcpy((U8 *)&AuSta, (U8 *)&signal->frmInfo.Sta, 6); + //memcpy((U8 *)&AuSta, (U8 *)&mBssId, 6); + mkAuthFrm(pfrmDesc, &AuSta, mAuthAlg, 1, auSC, NULL, vapId); + pdot11Obj->StartTimer(AUTH_TIMEOUT, DO_AUTH); + AuthReqState = STE_WAIT_AUTH_SEQ2; + return sendMgtFrame(signal, pfrmDesc); } + BOOLEAN AuthEven(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - Frame_t *rdu; - U16 auAlg; - U16 auSeq; - U16 auSC; - U8 vapId = 0; - MacAddr_t Sta; - U8 ChalText[130]; - - //ZDEBUG("AuthEven"); - FPRINT("AuthEven"); - pfrmDesc = signal->frmInfo.frmDesc; - rdu = pfrmDesc->mpdu; - auSeq = authSeqNum(rdu); - auAlg = authType(rdu); - memcpy((U8 *)&Sta, (U8 *)addr2(rdu), 6); - if (memcmp(&AuSta, &Sta, 6) != 0) { - //FPRINT("Not for my Auth AP"); - goto auth_release; - } - - if ((AuthReqState == STE_WAIT_AUTH_SEQ2) && (auSeq != 2)) { - FPRINT("Seq!= 2"); - goto auth_release; - } - - if ((AuthReqState == STE_WAIT_AUTH_SEQ4) && (auSeq != 4)) { - FPRINT("Seq!= 4"); - goto auth_release; - } - - auSC = authStatus(rdu); - if (auSC != SC_SUCCESSFUL) { - FPRINT("Auth Failed!!!"); - FPRINT_V("Status Code", auSC); - goto auth_release; - } - - pdot11Obj->StopTimer(DO_AUTH); - //FPRINT_V("auAlg", auAlg); - - if (AuthReqState == STE_WAIT_AUTH_SEQ4) { - UpdateStaStatus(&Sta, STATION_STATE_AUTH_KEY, vapId); - AuthReqState = STE_AUTH_REQ_IDLE; - - //do Assoicate - signal->id = SIG_ASSOC_REQ; - signal->block = BLOCK_ASOC; - sigEnque(pMgtQ, (signal)); - freeFdesc(pfrmDesc); - return FALSE; - - } else if (AuthReqState == STE_WAIT_AUTH_SEQ2) { - if (auAlg == OPEN_SYSTEM) { - FPRINT("Auth Success !!!"); - UpdateStaStatus(&Sta, STATION_STATE_AUTH_OPEN, vapId); - AuthReqState = STE_AUTH_REQ_IDLE; - - //do Assoicate - signal->id = SIG_ASSOC_REQ; - signal->block = BLOCK_ASOC; - sigEnque(pMgtQ, (signal)); - freeFdesc(pfrmDesc); - return FALSE; - } - - if (auAlg == SHARE_KEY) { - if (!getElem(rdu, EID_CTEXT, (Element *)&ChalText[0])) { - FPRINT("Get ChalText failed"); - goto auth_release; - } - - FPRINT("Send Auth Seq 3 frame"); - auSC = SC_SUCCESSFUL; - mkAuthFrm(pfrmDesc, &mBssId, mAuthAlg, 3, auSC, &ChalText[2], vapId); - pdot11Obj->StartTimer(AUTH_TIMEOUT, DO_AUTH); - AuthReqState = STE_WAIT_AUTH_SEQ4; - pfrmDesc->ConfigSet |= FORCE_WEP_SET; - return sendMgtFrame(signal, pfrmDesc); - } - } - + FrmDesc_t *pfrmDesc; + Frame_t *rdu; + U16 auAlg; + U16 auSeq; + U16 auSC; + U8 vapId = 0; + MacAddr_t Sta; + U8 ChalText[130]; + + //ZDEBUG("AuthEven"); + FPRINT("AuthEven"); + pfrmDesc = signal->frmInfo.frmDesc; + rdu = pfrmDesc->mpdu; + auSeq = authSeqNum(rdu); + auAlg = authType(rdu); + memcpy((U8 *)&Sta, (U8 *)addr2(rdu), 6); + if (memcmp(&AuSta, &Sta, 6) != 0) { + //FPRINT("Not for my Auth AP"); + goto auth_release; + } + + if ((AuthReqState == STE_WAIT_AUTH_SEQ2) && (auSeq != 2)) { + FPRINT("Seq!= 2"); + goto auth_release; + } + + if ((AuthReqState == STE_WAIT_AUTH_SEQ4) && (auSeq != 4)) { + FPRINT("Seq!= 4"); + goto auth_release; + } + + auSC = authStatus(rdu); + if (auSC != SC_SUCCESSFUL) { + FPRINT("Auth Failed!!!"); + FPRINT_V("Status Code", auSC); + goto auth_release; + } + + pdot11Obj->StopTimer(DO_AUTH); + //FPRINT_V("auAlg", auAlg); + + if (AuthReqState == STE_WAIT_AUTH_SEQ4) { + UpdateStaStatus(&Sta, STATION_STATE_AUTH_KEY, vapId); + AuthReqState = STE_AUTH_REQ_IDLE; + + //do Assoicate + signal->id = SIG_ASSOC_REQ; + signal->block = BLOCK_ASOC; + sigEnque(pMgtQ, (signal)); + freeFdesc(pfrmDesc); + return FALSE; + + } else if (AuthReqState == STE_WAIT_AUTH_SEQ2) { + if (auAlg == OPEN_SYSTEM) { + FPRINT("Auth Success !!!"); + UpdateStaStatus(&Sta, STATION_STATE_AUTH_OPEN, vapId); + AuthReqState = STE_AUTH_REQ_IDLE; + + //do Assoicate + signal->id = SIG_ASSOC_REQ; + signal->block = BLOCK_ASOC; + sigEnque(pMgtQ, (signal)); + freeFdesc(pfrmDesc); + return FALSE; + } + + if (auAlg == SHARE_KEY) { + if (!getElem(rdu, EID_CTEXT, (Element *)&ChalText[0])) { + FPRINT("Get ChalText failed"); + goto auth_release; + } + + FPRINT("Send Auth Seq 3 frame"); + auSC = SC_SUCCESSFUL; + mkAuthFrm(pfrmDesc, &mBssId, mAuthAlg, 3, auSC, &ChalText[2], vapId); + pdot11Obj->StartTimer(AUTH_TIMEOUT, DO_AUTH); + AuthReqState = STE_WAIT_AUTH_SEQ4; + pfrmDesc->ConfigSet |= FORCE_WEP_SET; + return sendMgtFrame(signal, pfrmDesc); + } + } + auth_release: - FPRINT("auth_release"); - freeFdesc(pfrmDesc); - return TRUE; + FPRINT("auth_release"); + freeFdesc(pfrmDesc); + return TRUE; } + BOOLEAN AuthTimeOut(Signal_t *signal) { - U8 vapId = 0; - FPRINT("AuthTimeOut"); - - if ((AuthReqState == STE_WAIT_AUTH_SEQ2) || - (AuthReqState == STE_WAIT_AUTH_SEQ4)) { - UpdateStaStatus(&mBssId, STATION_STATE_NOT_AUTH, vapId); - AuthReqState = STE_AUTH_REQ_IDLE; - } - - mRequestFlag |= CONNECT_TOUT_SET; - return FALSE; + U8 vapId = 0; + FPRINT("AuthTimeOut"); + + if ((AuthReqState == STE_WAIT_AUTH_SEQ2) || + + + (AuthReqState == STE_WAIT_AUTH_SEQ4)) { + UpdateStaStatus(&mBssId, STATION_STATE_NOT_AUTH, vapId); + AuthReqState = STE_AUTH_REQ_IDLE; + } + + mRequestFlag |= CONNECT_TOUT_SET; + return FALSE; } + BOOLEAN AuthReqEntry(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - - if (AuthReqState == STE_AUTH_REQ_IDLE) { - switch(signal->id) { - case SIG_DEAUTH_REQ: - return DeauthReq(signal); - - case SIG_AUTH_REQ: - return AuthReq(signal); - - default: - goto auth_discard; - } - } else if ((AuthReqState == STE_WAIT_AUTH_SEQ2) || (AuthReqState == STE_WAIT_AUTH_SEQ4)) { - switch(signal->id) { - case SIG_DEAUTH_REQ: - return TRUE; - - case SIG_AUTH_REQ: - return TRUE; - - case SIG_AUTH_EVEN: - return AuthEven(signal); - - case SIG_TO_AUTH: - return AuthTimeOut(signal); - - default: - goto auth_discard; - } - } else - goto auth_discard; + FrmDesc_t *pfrmDesc; + + if (AuthReqState == STE_AUTH_REQ_IDLE) { + switch(signal->id) { + case SIG_DEAUTH_REQ: + return DeauthReq(signal); + + case SIG_AUTH_REQ: + return AuthReq(signal); + + default: + goto auth_discard; + } + } else if ((AuthReqState == STE_WAIT_AUTH_SEQ2) || (AuthReqState == STE_WAIT_AUTH_SEQ4)) { + switch(signal->id) { + case SIG_DEAUTH_REQ: + return TRUE; + + case SIG_AUTH_REQ: + return TRUE; + + case SIG_AUTH_EVEN: + return AuthEven(signal); + + case SIG_TO_AUTH: + return AuthTimeOut(signal); + + default: + goto auth_discard; + } + } else + goto auth_discard; auth_discard: - pfrmDesc = signal->frmInfo.frmDesc; - freeFdesc(pfrmDesc); - return TRUE; + pfrmDesc = signal->frmInfo.frmDesc; + freeFdesc(pfrmDesc); + return TRUE; } +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdhw.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdhw.c @@ -1,2363 +1,4792 @@ -/* $Id: zdhw.c,v 1.13 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +#ifndef __ZDHW_C__ +#define __ZDHW_C__ #include "zdtypes.h" #include "zdequates.h" #include "zdapi.h" #include "zdhw.h" #include "zddebug.h" +#include "zd1211.h" +#include "zd1205.h" +extern struct net_device *g_dev; +extern u8 mMacMode; +extern u8 a_OSC_get_cal_int( u8 ch, u32 rate, u8 *intValue, u8 *calValue); +extern u8 *mTxOFDMType; +extern const U16 dot11A_Channel[]; +extern const U16 dot11A_Channel_Amount; + +u8 LastSetChannel=1; +u8 LastMacMode=0; U32 GRF5101T[] = { - 0x1A0000, //Null - 0x1A0000, //Ch 1 - 0x1A8000, //Ch 2 - 0x1A4000, //Ch 3 - 0x1AC000, //Ch 4 - 0x1A2000, //Ch 5 - 0x1AA000, //Ch 6 - 0x1A6000, //Ch 7 - 0x1AE000, //Ch 8 - 0x1A1000, //Ch 9 - 0x1A9000, //Ch 10 - 0x1A5000, //Ch 11 - 0x1AD000, //Ch 12 - 0x1A3000, //Ch 13 - 0x1AB000 //Ch 14 -}; + 0x1A0000, //Null + 0x1A0000, //Ch 1 + 0x1A8000, //Ch 2 + 0x1A4000, //Ch 3 + 0x1AC000, //Ch 4 + 0x1A2000, //Ch 5 + 0x1AA000, //Ch 6 + 0x1A6000, //Ch 7 + 0x1AE000, //Ch 8 + 0x1A1000, //Ch 9 + 0x1A9000, //Ch 10 + 0x1A5000, //Ch 11 + 0x1AD000, //Ch 12 + 0x1A3000, //Ch 13 + 0x1AB000 //Ch 14 + }; + U32 AL2210TB[] = { - 0x2396c0, //;Null - 0x0196c0, //;Ch 1 - 0x019710, //;Ch 2 - 0x019760, //;Ch 3 - 0x0197b0, //;Ch 4 - 0x019800, //;Ch 5 - 0x019850, //;Ch 6 - 0x0198a0, //;Ch 7 - 0x0198f0, //;Ch 8 - 0x019940, //;Ch 9 - 0x019990, //;Ch 10 - 0x0199e0, //;Ch 11 - 0x019a30, //;Ch 12 - 0x019a80, //;Ch 13 - 0x019b40 //;Ch 14 -}; - -U32 M2827BF[] = { - 0x0ccd4, //;Null - 0x0ccd4, //;Ch 1 - 0x22224, //;Ch 2 - 0x37774, //;Ch 3 - 0x0ccd4, //;Ch 4 - 0x22224, //;Ch 5 - 0x37774, //;Ch 6 - 0x0ccd4, //;Ch 7 - 0x22224, //;Ch 8 - 0x37774, //;Ch 9 - 0x0ccd4, //;Ch 10 - 0x22224, //;Ch 11 - 0x37774, //;Ch 12 - 0x0ccd4, //;Ch 13 - 0x199a4 //;Ch 14 -}; - -U32 M2827BN[] = { - 0x30a03, //;Null - 0x30a03, //;Ch 1 - 0x00a13, //;Ch 2 - 0x10a13, //;Ch 3 - 0x30a13, //;Ch 4 - 0x00a23, //;Ch 5 - 0x10a23, //;Ch 6 - 0x30a23, //;Ch 7 - 0x00a33, //;Ch 8 - 0x10a33, //;Ch 9 - 0x30a33, //;Ch 10 - 0x00a43, //;Ch 11 - 0x10a43, //;Ch 12 - 0x30a43, //;Ch 13 - 0x20a53 //;Ch 14 -}; - -U32 M2827BF2[] = { - 0x33334, //;Null - 0x33334, //;Ch 1 - 0x08884, //;Ch 2 - 0x1ddd4, //;Ch 3 - 0x33334, //;Ch 4 - 0x08884, //;Ch 5 - 0x1ddd4, //;Ch 6 - 0x33334, //;Ch 7 - 0x08884, //;Ch 8 - 0x1ddd4, //;Ch 9 - 0x33334, //;Ch 10 - 0x08884, //;Ch 11 - 0x1ddd4, //;Ch 12 - 0x33334, //;Ch 13 - 0x26664 //;Ch 14 -}; - -U32 M2827BN2[] = { - 0x10a03, //;Null - 0x10a03, //;Ch 1 - 0x20a13, //;Ch 2 - 0x30a13, //;Ch 3 - 0x10a13, //;Ch 4 - 0x20a23, //;Ch 5 - 0x30a23, //;Ch 6 - 0x10a23, //;Ch 7 - 0x20a33, //;Ch 8 - 0x30a33, //;Ch 9 - 0x10a33, //;Ch 10 - 0x20a43, //;Ch 11 - 0x30a43, //;Ch 12 - 0x10a43, //;Ch 13 - 0x20a53 //;Ch 14 -}; + 0x2396c0, //;Null + 0x0196c0, //;Ch 1 + 0x019710, //;Ch 2 + 0x019760, //;Ch 3 + 0x0197b0, //;Ch 4 + 0x019800, //;Ch 5 + 0x019850, //;Ch 6 + 0x0198a0, //;Ch 7 + 0x0198f0, //;Ch 8 + 0x019940, //;Ch 9 + 0x019990, //;Ch 10 + 0x0199e0, //;Ch 11 + 0x019a30, //;Ch 12 + 0x019a80, //;Ch 13 + 0x019b40 //;Ch 14 + }; + + +U32 M2827BF[] = { + 0x0ccd4, //;Null + 0x0ccd4, //;Ch 1 + 0x22224, //;Ch 2 + 0x37774, //;Ch 3 + 0x0ccd4, //;Ch 4 + 0x22224, //;Ch 5 + 0x37774, //;Ch 6 + 0x0ccd4, //;Ch 7 + 0x22224, //;Ch 8 + 0x37774, //;Ch 9 + 0x0ccd4, //;Ch 10 + 0x22224, //;Ch 11 + 0x37774, //;Ch 12 + 0x0ccd4, //;Ch 13 + 0x199a4 //;Ch 14 + }; + + +U32 M2827BN[] = { + 0x30a03, //;Null + 0x30a03, //;Ch 1 + 0x00a13, //;Ch 2 + 0x10a13, //;Ch 3 + 0x30a13, //;Ch 4 + 0x00a23, //;Ch 5 + 0x10a23, //;Ch 6 + 0x30a23, //;Ch 7 + 0x00a33, //;Ch 8 + 0x10a33, //;Ch 9 + 0x30a33, //;Ch 10 + 0x00a43, //;Ch 11 + 0x10a43, //;Ch 12 + 0x30a43, //;Ch 13 + 0x20a53 //;Ch 14 + }; + + +U32 M2827BF2[] = { + 0x33334, //;Null + 0x33334, //;Ch 1 + 0x08884, //;Ch 2 + 0x1ddd4, //;Ch 3 + 0x33334, //;Ch 4 + 0x08884, //;Ch 5 + 0x1ddd4, //;Ch 6 + 0x33334, //;Ch 7 + 0x08884, //;Ch 8 + 0x1ddd4, //;Ch 9 + 0x33334, //;Ch 10 + 0x08884, //;Ch 11 + 0x1ddd4, //;Ch 12 + 0x33334, //;Ch 13 + 0x26664 //;Ch 14 + }; + +U32 M2827BN2[] = { + 0x10a03, //;Null + 0x10a03, //;Ch 1 + 0x20a13, //;Ch 2 + 0x30a13, //;Ch 3 + 0x10a13, //;Ch 4 + 0x20a23, //;Ch 5 + 0x30a23, //;Ch 6 + 0x10a23, //;Ch 7 + 0x20a33, //;Ch 8 + 0x30a33, //;Ch 9 + 0x10a33, //;Ch 10 + 0x20a43, //;Ch 11 + 0x30a43, //;Ch 12 + 0x10a43, //;Ch 13 + 0x20a53 //;Ch 14 + }; + +U32 AL2232TB[] = + { + 0x03f790, 0x033331, 0x00000d, //;Null + 0x03f790, 0x033331, 0x00000d, //;Ch 1 + 0x03f790, 0x0b3331, 0x00000d, //;Ch 2 + 0x03e790, 0x033331, 0x00000d, //;Ch 3 + 0x03e790, 0x0b3331, 0x00000d, //;Ch 4 + 0x03f7a0, 0x033331, 0x00000d, //;Ch 5 + 0x03f7a0, 0x0b3331, 0x00000d, //;Ch 6 + 0x03e7a0, 0x033331, 0x00000d, //;Ch 7 + 0x03e7a0, 0x0b3331, 0x00000d, //;Ch 8 + 0x03f7b0, 0x033331, 0x00000d, //;Ch 9 + 0x03f7b0, 0x0b3331, 0x00000d, //;Ch 10 + 0x03E7b0, 0x033331, 0x00000d, //;Ch 11 + 0x03e7b0, 0x0b3331, 0x00000d, //;Ch 12 + 0x03f7c0, 0x033331, 0x00000d, //;Ch 13 + 0x03e7c0, 0x066661, 0x00000d //;Ch 14 + }; U32 AL2230TB[] = { - 0x03f790, 0x033331, 0x00000d, //;Null - 0x03f790, 0x033331, 0x00000d, //;Ch 1 - 0x03f790, 0x0b3331, 0x00000d, //;Ch 2 - 0x03e790, 0x033331, 0x00000d, //;Ch 3 - 0x03e790, 0x0b3331, 0x00000d, //;Ch 4 - 0x03f7a0, 0x033331, 0x00000d, //;Ch 5 - 0x03f7a0, 0x0b3331, 0x00000d, //;Ch 6 - 0x03e7a0, 0x033331, 0x00000d, //;Ch 7 - 0x03e7a0, 0x0b3331, 0x00000d, //;Ch 8 - 0x03f7b0, 0x033331, 0x00000d, //;Ch 9 - 0x03f7b0, 0x0b3331, 0x00000d, //;Ch 10 - 0x03E7b0, 0x033331, 0x00000d, //;Ch 11 - 0x03e7b0, 0x0b3331, 0x00000d, //;Ch 12 - 0x03f7c0, 0x033331, 0x00000d, //;Ch 13 - 0x03e7c0, 0x066661, 0x00000d //;Ch 14 -}; + 0x03f790, 0x033331, 0x00000d, //;Null + 0x03f790, 0x033331, 0x00000d, //;Ch 1 + 0x03f790, 0x0b3331, 0x00000d, //;Ch 2 + 0x03e790, 0x033331, 0x00000d, //;Ch 3 + 0x03e790, 0x0b3331, 0x00000d, //;Ch 4 + 0x03f7a0, 0x033331, 0x00000d, //;Ch 5 + 0x03f7a0, 0x0b3331, 0x00000d, //;Ch 6 + 0x03e7a0, 0x033331, 0x00000d, //;Ch 7 + 0x03e7a0, 0x0b3331, 0x00000d, //;Ch 8 + 0x03f7b0, 0x033331, 0x00000d, //;Ch 9 + 0x03f7b0, 0x0b3331, 0x00000d, //;Ch 10 + 0x03E7b0, 0x033331, 0x00000d, //;Ch 11 + 0x03e7b0, 0x0b3331, 0x00000d, //;Ch 12 + 0x03f7c0, 0x033331, 0x00000d, //;Ch 13 + 0x03e7c0, 0x066661, 0x00000d //;Ch 14 + }; +U32 AL7230BTB[] = { + 0x09ec04, 0x8cccc8, //;Null + 0x09ec00, 0x8cccc8, //;Ch 1 + 0x09ec00, 0x8cccd8, //;Ch 2 + 0x09ec00, 0x8cccc0, //;Ch 3 + 0x09ec00, 0x8cccd0, //;Ch 4 + 0x05ec00, 0x8cccc8, //;Ch 5 + 0x05ec00, 0x8cccd8, //;Ch 6 + 0x05ec00, 0x8cccc0, //;Ch 7 + 0x05ec00, 0x8cccd0, //;Ch 8 + 0x0dec00, 0x8cccc8, //;Ch 9 + 0x0dec00, 0x8cccd8, //;Ch 10 + 0x0dec00, 0x8cccc0, //;Ch 11 + 0x0dec00, 0x8cccd0, //;Ch 12 + 0x03ec00, 0x8cccc8, //;Ch 13 + 0x03ec00, 0x866660 //;Ch 14 + }; + +U32 AL7230BTB_a[] = { + 0x06aff4, 0x855550, 0x47f8a2, 0x21ebfe, //;Null + 0x02aff0, 0x800000, 0x47f8a2, 0x21ebf6, //;CH 8 , 5040MHz + 0x02aff0, 0x855550, 0x47f8a2, 0x21ebfe, //;CH 12, 5060MHz + 0x0aaff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;CH 16, 5080MHz + 0x06aff0, 0x8aaaa0, 0x47f8a2, 0x21ebfe, //;CH 34, 5170MHz + 0x06aff0, 0x855550, 0x47f8a2, 0x21ebfe, //;Ch 36, 5180MHz + 0x0eaff0, 0x800008, 0x47f8a2, 0x21ebfe, //;Ch 38, 5190MHz + 0x0eaff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 40, 5200MHz + 0x0eaff0, 0x855558, 0x47f8a2, 0x21ebfe, //;Ch 42, 5210MHz + 0x0eaff0, 0x800000, 0x47f8a2, 0x21ebf6, //;Ch 44, 5220MHz, current support + 0x0eaff0, 0x8aaaa0, 0x47f8a2, 0x21ebfe, //;Ch 46, 5230MHz + 0x0eaff0, 0x855550, 0x47f8a2, 0x21ebfe, //;Ch 48, 5240MHz + 0x01aff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 52, 5260MHz + 0x01aff0, 0x800000, 0x47f8a2, 0x21ebf6, //;Ch 56, 5280MHz, current support + 0x01aff0, 0x855550, 0x47f8a2, 0x21ebfe, //;Ch 60, 5300MHz + 0x09aff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 64, 5320MHz + 0x09aff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 68, 5320MHz,dummy + 0x09aff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 72, 5320MHz,dummy + 0x09aff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 76, 5320MHz,dummy + 0x09aff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 80, 5320MHz,dummy + 0x09aff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 84, 5320MHz,dummy + 0x09aff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 88, 5320MHz,dummy + 0x09aff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 92, 5320MHz,dummy + 0x09aff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 96, 5320MHz,dummy + 0x03aff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 100, 5500MHz + 0x03aff0, 0x800000, 0x47f8a2, 0x21ebf6, //;Ch 104, 5520MHz + 0x03aff0, 0x855550, 0x47f8a2, 0x21ebfe, //;Ch 108, 5540MHz + 0x0baff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 112, 5560MHz + 0x0baff0, 0x800000, 0x47f8a2, 0x21ebf6, //;Ch 116, 5580MHz + 0x0baff0, 0x855550, 0x47f8a2, 0x21ebfe, //;Ch 120, 5600MHz + 0x07aff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 124, 5620MHz + 0x07aff0, 0x800000, 0x47f8a2, 0x21ebf6, //;Ch 128, 5640MHz + 0x07aff0, 0x855550, 0x47f8a2, 0x21ebfe, //;Ch 132, 5660MHz + 0x0faff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 136, 5680MHz + 0x0faff0, 0x800000, 0x47f8a2, 0x21ebf6, //;Ch 140, 5700MHz + 0x0faff0, 0x800000, 0x47f8a2, 0x21ebf6, //;Ch 144, 5700MHz, dummy + 0x006ff0, 0x800018, 0x47f8a2, 0x21ebfe, //;Ch 149, 5745MHz + 0x006ff0, 0x855540, 0x47f8a2, 0x21ebfe, //;Ch 153, 5765MHz + 0x006ff0, 0x8aaab0, 0x47f8a2, 0x21ebfe, //;Ch 157, 5785MHz + 0x086ff0, 0x800018, 0x47f8a2, 0x21ebfe, //;Ch 161, 5805MHz + 0x086ff0, 0x855540, 0x47f8a2, 0x21ebfe, //;Ch 165, 5825MHz + 0x086ff0, 0x8d5540, 0x47f8a2, 0x21ebfe, //;Ch 168, 5825MHz,dummy + 0x086ff0, 0x8d5540, 0x47f8a2, 0x21ebfe, //;Ch 172, 5825MHz,dummy + 0x086ff0, 0x8d5540, 0x47f8a2, 0x21ebfe, //;Ch 176, 5825MHz,dummy + 0x086ff0, 0x8d5540, 0x47f8a2, 0x21ebfe, //;Ch 180, 5825MHz,dummy + 0x04aff0, 0x800000, 0x47f8a2, 0x21ebf6, //;Ch 184, 4920MHz + 0x04aff0, 0x855550, 0x47f8a2, 0x21ebfe, //;Ch 188, 4940MHz + 0x0caff0, 0x8aaaa8, 0x47f8a2, 0x21ebfe, //;Ch 192, 4960MHz + 0x0caff0, 0x800000, 0x47f8a2, 0x21ebf6 //;Ch 196, 4980MHz + }; U32 RFMD2958t[] = { - 0x1422BD, //Null - 0x185D17, //Null - 0x181979, //Ch 1 - 0x1e6666, //Ch 1 - 0x181989, //Ch 2 - 0x1e6666, //Ch 2 - 0x181999, //Ch 3 - 0x1e6666, //Ch 3 - 0x1819a9, //Ch 4 - 0x1e6666, //Ch 4 - 0x1819b9, //Ch 5 - 0x1e6666, //Ch 5 - 0x1819c9, //Ch 6 - 0x1e6666, //Ch 6 - 0x1819d9, //Ch 7 - 0x1e6666, //Ch 7 - 0x1819e9, //Ch 8 - 0x1e6666, //Ch 8 - 0x1819f9, //Ch 9 - 0x1e6666, //Ch 9 - 0x181a09, //Ch 10 - 0x1e6666, //Ch 10 - 0x181a19, //Ch 11 - 0x1e6666, //Ch 11 - 0x181a29, //Ch 12 - 0x1e6666, //Ch 12 - 0x181a39, //Ch 13 - 0x1e6666, //Ch 13 - 0x181a60, //Ch 14 - 0x1c0000 //Ch 14 -}; + 0x1422BD, //Null + 0x185D17, //Null + 0x181979, //Ch 1 + 0x1e6666, //Ch 1 + 0x181989, //Ch 2 + 0x1e6666, //Ch 2 + 0x181999, //Ch 3 + 0x1e6666, //Ch 3 + 0x1819a9, //Ch 4 + 0x1e6666, //Ch 4 + 0x1819b9, //Ch 5 + 0x1e6666, //Ch 5 + 0x1819c9, //Ch 6 + 0x1e6666, //Ch 6 + 0x1819d9, //Ch 7 + 0x1e6666, //Ch 7 + 0x1819e9, //Ch 8 + 0x1e6666, //Ch 8 + 0x1819f9, //Ch 9 + 0x1e6666, //Ch 9 + 0x181a09, //Ch 10 + 0x1e6666, //Ch 10 + 0x181a19, //Ch 11 + 0x1e6666, //Ch 11 + 0x181a29, //Ch 12 + 0x1e6666, //Ch 12 + 0x181a39, //Ch 13 + 0x1e6666, //Ch 13 + 0x181a60, //Ch 14 + 0x1c0000 //Ch 14 + }; + + + +#if 0 +int HW_HTP(zd_80211Obj_t *pObj) +{ + void *reg = pObj->reg; + int i, ret = 0; + U32 tmpkey, tmpvalue, regvalue, seed; + + dbg_pline_1("\r\nHW_HTP Starting...."); + + // PHY CR Registers Read/Write Test + dbg_pline_1("\r\nPHY CR Registers Read/Write Test Starting...."); + + seed = pObj->GetReg(reg, ZD_TSF_LowPart); + srand(seed); + LockPhyReg(pObj); + + for (i=0; i<0x0200; i+=4) { + if ( (i==0x00) || ((i>=0xc8) && (i<=0xfc)) || + ((i>=0x1cc) && (i<=0x1d8)) || ((i>=0x1e0) && (i<=0x1ec))) { + // Skip Read Only Register + continue; + } + tmpkey = (U8)rand(); + pObj->SetReg(reg, i, tmpkey); + tmpvalue = pObj->GetReg(reg, i); + if (tmpvalue != tmpkey) { + //printf("CR %x Failed (Wr: %x, Rd: %x)\n", i, tmpkey, tmpvalue); + dbg_plinew_1("\r\nCR ", i); + dbg_pline_1(" Failed "); + dbg_plineb_1("(Wr: ", (U8)tmpkey); + dbg_plineb_1(", Rd: ", (U8)tmpvalue); + dbg_pline_1(")"); + + UnLockPhyReg(pObj); + ret = 1; + } else { + //printf("CR %x Success (Wr: %x, Rd: %x)\n", i, tmpkey, tmpvalue); + dbg_plinew_1("\r\nCR ", i); + dbg_pline_1(" Success "); + dbg_plineb_1("(Wr: ", (U8)tmpkey); + dbg_plineb_1(", Rd: ", (U8)tmpvalue); + dbg_pline_1(")"); + } + } + + UnLockPhyReg(pObj); + dbg_pline_1("\r\nPHY CR Registers Read/Write Test End"); + dbg_pline_1("\r\n"); + + +#if 1 + // MAC Registers Read/Write Test + dbg_pline_1("\r\nMAC Registers Read/Write Test Starting...."); + //to test 0x408, 0x410, 0x42c must set 0x418 to 0 + pObj->SetReg(reg, ZD_GPI_EN, 0); + seed = pObj->GetReg(reg, ZD_TSF_LowPart); + srand(seed); + for (i=0; iSetReg(reg, ZD_GPI_EN, 0); + + } + + + + pObj->SetReg(reg, MacRegMaskTab[i].Address, tmpkey); + tmpvalue = pObj->GetReg(reg, MacRegMaskTab[i].Address); + tmpvalue &= MacRegMaskTab[i].ReadWriteMask; + if (tmpvalue != tmpkey) { + //printf("MAC %x Failed (Wr: %x, Rd: %x)\n", MacRegMaskTab[i].Address, tmpkey, tmpvalue); + dbg_plinew_1("\r\nMAC ", MacRegMaskTab[i].Address); + dbg_pline_1(" Failed "); + dbg_plinel_1("(Wr: ", tmpkey); + dbg_plinel_1(", Rd: ", tmpvalue); + dbg_pline_1(")"); + ret = 2; + } + else { + //printf("MAC %x Success (Wr: %x, Rd: %x)\n", MacRegMaskTab[i].Address, tmpkey, tmpvalue); + dbg_plinew_1("\r\nMAC ", MacRegMaskTab[i].Address); + dbg_pline_1(" Success "); + dbg_plinel_1("(Wr: ", tmpkey); + dbg_plinel_1(", Rd: ", tmpvalue); + dbg_pline_1(")"); + } + + } + dbg_pline_1("\r\nMAC Registers Read/Write Test End"); + dbg_pline_1("\r\n"); +#endif + +#if 0 + // EEPROM Read/Write Test + dbg_pline_1("\r\nEEPROM Read/Write Testing..........."); + seed = pObj->GetReg(reg, ZD_TSF_LowPart); + srand(seed); + + //for (tmpvalue=0; tmpvalue<1; tmpvalue++){ + { + tmpkey = (U32)rand(); + tmpkey |= (tmpkey << 16); + for (i=0; i<256; i++) + { + //if (i == 1) + //tmpkey = 0x89; + pObj->SetReg(reg, ZD_E2P_SUBID+(i*4), tmpkey); + } + // Write to EEPROM + pObj->SetReg(reg, ZD_EEPROM_PROTECT0, 0x55aa44bb); + pObj->SetReg(reg, ZD_EEPROM_PROTECT1, 0x33cc22dd); + pObj->SetReg(reg, ZD_ROMDIR, 0x422); + + // Sleep + //for (i=0; i<1000; i++) + // pObj->DelayUs(5000); + delay1ms(5); + + + // Reset Registers + for (i=0; i<256; i++) + { + pObj->SetReg(reg, ZD_E2P_SUBID+(i*4), 0); + } + + // Reload EEPROM + pObj->SetReg(reg, ZD_ROMDIR, 0x424); + + // Sleep + //for (i=0; i<1000; i++) + // pObj->DelayUs(5000); + delay1ms(5); + + // Check if right + for (i=0; i<256; i++) + { + regvalue = pObj->GetReg(reg, ZD_E2P_SUBID+(i*4)); + if (regvalue != tmpkey) { + //printf("EEPROM Addr (%x) error (Wr: %x, Rd: %x)\n", ZD_E2P_SUBID+(i*4), tmpkey, regvalue); + dbg_plinew_1("\r\nEEPROM Addr ", ZD_E2P_SUBID+(i*4)); + dbg_pline_1(" error "); + dbg_plinel_1("(Wr: ", tmpkey); + dbg_plinel_1(",Rd: ", regvalue); + dbg_pline_1(")"); + ret = 3; + } + } + } +#endif + + //dbg_pline_1("\r\nDigital Loopback Testing..........."); -void LockPhyReg(zd_80211Obj_t *pObj) + dbg_pline_1("\r\nHW_HTP End"); + dbg_pline_1("\r\n"); + return 0; +} +#endif + +#define SET_IF_SYNTHESIZER(macp, InputValue) \ +{ \ + mFILL_WRITE_REGISTER( ZD_CR244, (U8) ((InputValue & 0xff0000)>>16)); \ + mFILL_WRITE_REGISTER( ZD_CR243, (U8) ((InputValue & 0xff00) >> 8)); \ + mFILL_WRITE_REGISTER( ZD_CR242, (U8) ((InputValue & 0xff))); \ +} +#define mFILL_WRITE_REGISTER(addr0, value0) \ +{ \ + WriteAddr[WriteIndex] = addr0; \ + WriteData[WriteIndex ++] = value0; \ +} + + +#ifndef HOST_IF_USB +void +HW_Set_IF_Synthesizer(zd_80211Obj_t *pObj, U32 InputValue) +{ + U32 S_bit_cnt; + U32 tmpvalue; + void *reg = pObj->reg; + int i; + + + S_bit_cnt = pObj->S_bit_cnt; + + InputValue = InputValue << (31 - S_bit_cnt); + +#if !( (defined(OFDM) && defined(GCCK)) || defined(ECCK_60_5) ) + + pObj->SetReg(reg, ZD_LE2, 0); + pObj->SetReg(reg, ZD_RF_IF_CLK, 0); + + while(S_bit_cnt) { + InputValue = InputValue << 1; + if (InputValue & 0x80000000) { + pObj->SetReg(reg, ZD_RF_IF_DATA, 1); + } else { + pObj->SetReg(reg, ZD_RF_IF_DATA, 0); + } + pObj->SetReg(reg, ZD_RF_IF_CLK, 1); + //pObj->DelayUs(50); + pObj->SetReg(reg, ZD_RF_IF_CLK, 0); + + //pObj->DelayUs(50); + S_bit_cnt --; + } + + pObj->SetReg(reg, ZD_LE2, 1); + + if (pObj->S_bit_cnt == 20) { //Is it Intersil's chipset + pObj->SetReg(reg, ZD_LE2, 0); + } + return; +#else + + LockPhyReg(pObj); + tmpvalue = pObj->GetReg(reg, ZD_CR203); + tmpvalue &= ~BIT_1; + pObj->SetReg(reg, ZD_CR203, tmpvalue); + + tmpvalue = pObj->GetReg(reg, ZD_CR240); + tmpvalue = 0x80; + if (tmpvalue & BIT_7) { // Configure RF by Software + tmpvalue = pObj->GetReg(reg, ZD_CR203); + tmpvalue &= ~BIT_2; + pObj->SetReg(reg, ZD_CR203, tmpvalue); + + + while(S_bit_cnt) { + InputValue = InputValue << 1; + if (InputValue & 0x80000000) { + tmpvalue = pObj->GetReg(reg, ZD_CR203); + tmpvalue |= BIT_3; + pObj->SetReg(reg, ZD_CR203, tmpvalue); + } else { + tmpvalue = pObj->GetReg(reg, ZD_CR203); + tmpvalue &= ~BIT_3; + pObj->SetReg(reg, ZD_CR203, tmpvalue); + } + + tmpvalue = pObj->GetReg(reg, ZD_CR203); + tmpvalue |= BIT_2; + pObj->SetReg(reg, ZD_CR203, tmpvalue); + + tmpvalue = pObj->GetReg(reg, ZD_CR203); + + tmpvalue &= ~BIT_2; + pObj->SetReg(reg, ZD_CR203, tmpvalue); + S_bit_cnt --; + } + } else { // Configure RF by Hardware + // Make Bit-reverse to meet hardware requirement. + tmpvalue = 0; + for (i=0; iGetReg(reg, ZD_CR241); + while(tmpvalue & BIT_0) { + pObj->DelayUs(1); + FPRINT("Command-Queue busy..."); + } + + // write command (from high-byte to low-byte) + pObj->SetReg(reg, ZD_CR245, InputValue >> 24); + pObj->SetReg(reg, ZD_CR244, InputValue >> 16); + pObj->SetReg(reg, ZD_CR243, InputValue >> 8); + pObj->SetReg(reg, ZD_CR242, InputValue); + } + + + tmpvalue = pObj->GetReg(reg, ZD_CR203); + tmpvalue |= BIT_1; + pObj->SetReg(reg, ZD_CR203, tmpvalue); + + if (pObj->S_bit_cnt == 20) { //Is it Intersil's chipset + tmpvalue = pObj->GetReg(reg, ZD_CR203); + tmpvalue &= ~BIT_1; + pObj->SetReg(reg, ZD_CR203, tmpvalue); + } + + UnLockPhyReg(pObj); + return; +#endif +} +#endif + + +void +LockPhyReg(zd_80211Obj_t *pObj) { #ifndef fQuickPhySet - void *reg = pObj->reg; - U32 tmpvalue; - tmpvalue = pObj->GetReg(reg, ZD_CtlReg1); - tmpvalue &= ~0x80; - pObj->SetReg(reg, ZD_CtlReg1, tmpvalue); -#endif -} - -void UnLockPhyReg(zd_80211Obj_t *pObj) -{ -#ifndef fQuickPhySet - void *reg = pObj->reg; - U32 tmpvalue; - - tmpvalue = pObj->GetReg(reg, ZD_CtlReg1); - tmpvalue |= 0x80; - pObj->SetReg(reg, ZD_CtlReg1, tmpvalue); -#endif -} - -void HW_Set_Maxim_New_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) -{ - void *reg = pObj->reg; - U32 tmpvalue; - - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR23, 0x40); - pObj->SetReg(reg, ZD_CR15, 0x20); - pObj->SetReg(reg, ZD_CR28, 0x3e); - pObj->SetReg(reg, ZD_CR29, 0x00); - pObj->SetReg(reg, ZD_CR26, 0x11); - pObj->SetReg(reg, ZD_CR44, 0x33); - pObj->SetReg(reg, ZD_CR106, 0x2a); - pObj->SetReg(reg, ZD_CR107, 0x1a); - pObj->SetReg(reg, ZD_CR109, 0x2b); - pObj->SetReg(reg, ZD_CR110, 0x2b); - pObj->SetReg(reg, ZD_CR111, 0x2b); - pObj->SetReg(reg, ZD_CR112, 0x2b); - pObj->SetReg(reg, ZD_CR10, 0x89); - pObj->SetReg(reg, ZD_CR17, 0x20); - pObj->SetReg(reg, ZD_CR26, 0x93); - pObj->SetReg(reg, ZD_CR34, 0x30); - pObj->SetReg(reg, ZD_CR35, 0x40); - pObj->SetReg(reg, ZD_CR41, 0x24); - pObj->SetReg(reg, ZD_CR44, 0x32); - pObj->SetReg(reg, ZD_CR46, 0x90); - pObj->SetReg(reg, ZD_CR89, 0x18); - pObj->SetReg(reg, ZD_CR92, 0x0a); - pObj->SetReg(reg, ZD_CR101, 0x13); - pObj->SetReg(reg, ZD_CR102, 0x27); - pObj->SetReg(reg, ZD_CR106, 0x20); - pObj->SetReg(reg, ZD_CR107, 0x24); - pObj->SetReg(reg, ZD_CR109, 0x09); - pObj->SetReg(reg, ZD_CR110, 0x13); - pObj->SetReg(reg, ZD_CR111, 0x13); - pObj->SetReg(reg, ZD_CR112, 0x13); - pObj->SetReg(reg, ZD_CR113, 0x27); - pObj->SetReg(reg, ZD_CR114, 0x27); - pObj->SetReg(reg, ZD_CR115, 0x24); - pObj->SetReg(reg, ZD_CR116, 0x24); - pObj->SetReg(reg, ZD_CR117, 0xf4); - pObj->SetReg(reg, ZD_CR118, 0xfa); - pObj->SetReg(reg, ZD_CR120, 0x4f); - pObj->SetReg(reg, ZD_CR121, 0x77); - pObj->SetReg(reg, ZD_CR122, 0xfe); - pObj->CR122Flag = 2; - pObj->CR31Flag = 2; - - //UnLockPhyReg(pObj); - -#if !((defined(OFDM) && defined(GCCK))) - pObj->SetReg(reg, ZD_PE1_PE2, 0x02); -#else - //LockPhyReg(pObj); - tmpvalue = pObj->GetReg(reg, ZD_CR203); - tmpvalue &= ~BIT_4; - pObj->SetReg(reg, ZD_CR203, tmpvalue); - //UnLockPhyReg(pObj); -#endif - - HW_Set_IF_Synthesizer(pObj, M2827BF[ChannelNo]); - HW_Set_IF_Synthesizer(pObj, M2827BN[ChannelNo]); - HW_Set_IF_Synthesizer(pObj, 0x00400); - HW_Set_IF_Synthesizer(pObj, 0x00ca1); - HW_Set_IF_Synthesizer(pObj, 0x10072); - HW_Set_IF_Synthesizer(pObj, 0x18645); - HW_Set_IF_Synthesizer(pObj, 0x04006); - HW_Set_IF_Synthesizer(pObj, 0x000a7); - HW_Set_IF_Synthesizer(pObj, 0x08258); - HW_Set_IF_Synthesizer(pObj, 0x03fc9); - HW_Set_IF_Synthesizer(pObj, 0x0040a); - HW_Set_IF_Synthesizer(pObj, 0x0000b); - HW_Set_IF_Synthesizer(pObj, 0x0026c); - -#if !( (defined(OFDM) && defined(GCCK)) ) - pObj->SetReg(reg, ZD_PE1_PE2, 0x03); -#else - //LockPhyReg(pObj); - tmpvalue = pObj->GetReg(reg, ZD_CR203); - tmpvalue |= BIT_4; - - pObj->SetReg(reg, ZD_CR203, tmpvalue);; - //UnLockPhyReg(pObj); -#endif - UnLockPhyReg(pObj); -} - -void HW_Set_Maxim_New_Chips2(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) -{ - void *reg = pObj->reg; - U32 tmpvalue; - - // Get Phy-Config permission - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR23, 0x40); - pObj->SetReg(reg, ZD_CR15, 0x20); - pObj->SetReg(reg, ZD_CR28, 0x3e); - pObj->SetReg(reg, ZD_CR29, 0x00); - pObj->SetReg(reg, ZD_CR26, 0x11); - pObj->SetReg(reg, ZD_CR44, 0x33); - pObj->SetReg(reg, ZD_CR106, 0x2a); - pObj->SetReg(reg, ZD_CR107, 0x1a); - pObj->SetReg(reg, ZD_CR109, 0x2b); - pObj->SetReg(reg, ZD_CR110, 0x2b); - pObj->SetReg(reg, ZD_CR111, 0x2b); - pObj->SetReg(reg, ZD_CR112, 0x2b); - pObj->SetReg(reg, ZD_CR10, 0x89); - pObj->SetReg(reg, ZD_CR17, 0x20); - pObj->SetReg(reg, ZD_CR26, 0x93); - pObj->SetReg(reg, ZD_CR34, 0x30); - pObj->SetReg(reg, ZD_CR35, 0x40); - pObj->SetReg(reg, ZD_CR41, 0x24); - pObj->SetReg(reg, ZD_CR44, 0x32); - pObj->SetReg(reg, ZD_CR46, 0x90); - pObj->SetReg(reg, ZD_CR89, 0x18); - pObj->SetReg(reg, ZD_CR92, 0x0a); - pObj->SetReg(reg, ZD_CR101, 0x13); - pObj->SetReg(reg, ZD_CR102, 0x27); - pObj->SetReg(reg, ZD_CR106, 0x20); - pObj->SetReg(reg, ZD_CR107, 0x24); - pObj->SetReg(reg, ZD_CR109, 0x09); - pObj->SetReg(reg, ZD_CR110, 0x13); - pObj->SetReg(reg, ZD_CR111, 0x13); - pObj->SetReg(reg, ZD_CR112, 0x13); - pObj->SetReg(reg, ZD_CR113, 0x27); - pObj->SetReg(reg, ZD_CR114, 0x27); - pObj->SetReg(reg, ZD_CR115, 0x24); - pObj->SetReg(reg, ZD_CR116, 0x24); - pObj->SetReg(reg, ZD_CR117, 0xf4); - pObj->SetReg(reg, ZD_CR118, 0xfa); - pObj->SetReg(reg, ZD_CR120, 0x4f); - pObj->SetReg(reg, ZD_CR121, 0x77); - pObj->SetReg(reg, ZD_CR122, 0xfe); - pObj->CR122Flag = 2; - pObj->CR31Flag = 2; - - //UnLockPhyReg(pObj); - -#if !((defined(OFDM) && defined(GCCK))) - pObj->SetReg(reg, ZD_PE1_PE2, 2); -#else - //LockPhyReg(pObj); - tmpvalue = pObj->GetReg(reg, ZD_CR203); - tmpvalue &= ~BIT_4; - pObj->SetReg(reg, ZD_CR203, tmpvalue); - //UnLockPhyReg(pObj); -#endif - - HW_Set_IF_Synthesizer(pObj, M2827BF2[ChannelNo]); - HW_Set_IF_Synthesizer(pObj, M2827BN2[ChannelNo]); - HW_Set_IF_Synthesizer(pObj, 0x00400); - HW_Set_IF_Synthesizer(pObj, 0x00ca1); - HW_Set_IF_Synthesizer(pObj, 0x10072); - HW_Set_IF_Synthesizer(pObj, 0x18645); - HW_Set_IF_Synthesizer(pObj, 0x04006); - HW_Set_IF_Synthesizer(pObj, 0x000a7); - HW_Set_IF_Synthesizer(pObj, 0x08258); - HW_Set_IF_Synthesizer(pObj, 0x03fc9); - HW_Set_IF_Synthesizer(pObj, 0x0040a); - HW_Set_IF_Synthesizer(pObj, 0x0000b); - HW_Set_IF_Synthesizer(pObj, 0x0026c); - -#if !((defined(OFDM) && defined(GCCK))) - pObj->SetReg(reg, ZD_PE1_PE2, 3); -#else - //LockPhyReg(pObj); - tmpvalue = pObj->GetReg(reg, ZD_CR203); - tmpvalue |= BIT_4; - pObj->SetReg(reg, ZD_CR203, tmpvalue); - //UnLockPhyReg(pObj); -#endif - UnLockPhyReg(pObj); -} - -void HW_Set_GCT_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) -{ - void *reg = pObj->reg; - - if (!InitChOnly) { - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR47, 0x1c); - pObj->SetReg(reg, ZD_CR15, 0xdc); - pObj->SetReg(reg, ZD_CR113, 0xc0); //3910 - pObj->SetReg(reg, ZD_CR20, 0x0c); - pObj->SetReg(reg, ZD_CR17, 0x65); - pObj->SetReg(reg, ZD_CR34, 0x04); - pObj->SetReg(reg, ZD_CR35, 0x35); - pObj->SetReg(reg, ZD_CR24, 0x20); - pObj->SetReg(reg, ZD_CR9, 0xe0); - pObj->SetReg(reg, ZD_CR127, 0x02); - pObj->SetReg(reg, ZD_CR10, 0x91); - pObj->SetReg(reg, ZD_CR23, 0x7f); - pObj->SetReg(reg, ZD_CR27, 0x10); - pObj->SetReg(reg, ZD_CR28, 0x7a); - pObj->SetReg(reg, ZD_CR79, 0xb5); - pObj->SetReg(reg, ZD_CR64, 0x80); - //++ Enable D.C cancellation (CR33 Bit_5) to avoid - // CCA always high. - pObj->SetReg(reg, ZD_CR33, 0x28); - pObj->SetReg(reg, ZD_CR38, 0x30); - - UnLockPhyReg(pObj); - - HW_Set_IF_Synthesizer(pObj, 0x1F0000); - HW_Set_IF_Synthesizer(pObj, 0x1F0000); - HW_Set_IF_Synthesizer(pObj, 0x1F0200); - HW_Set_IF_Synthesizer(pObj, 0x1F0600); - HW_Set_IF_Synthesizer(pObj, 0x1F8600); - HW_Set_IF_Synthesizer(pObj, 0x1F8600); - HW_Set_IF_Synthesizer(pObj, 0x002050); - HW_Set_IF_Synthesizer(pObj, 0x1F8000); - HW_Set_IF_Synthesizer(pObj, 0x1F8200); - HW_Set_IF_Synthesizer(pObj, 0x1F8600); - HW_Set_IF_Synthesizer(pObj, 0x1c0000); - HW_Set_IF_Synthesizer(pObj, 0x10c458); - HW_Set_IF_Synthesizer(pObj, 0x088e92); - HW_Set_IF_Synthesizer(pObj, 0x187b82); - HW_Set_IF_Synthesizer(pObj, 0x0401b4); - HW_Set_IF_Synthesizer(pObj, 0x140816); - HW_Set_IF_Synthesizer(pObj, 0x0c7000); - HW_Set_IF_Synthesizer(pObj, 0x1c0000); - HW_Set_IF_Synthesizer(pObj, 0x02ccae); - HW_Set_IF_Synthesizer(pObj, 0x128023); - HW_Set_IF_Synthesizer(pObj, 0x0a0000); - HW_Set_IF_Synthesizer(pObj, GRF5101T[ChannelNo]); - HW_Set_IF_Synthesizer(pObj, 0x06e380); - HW_Set_IF_Synthesizer(pObj, 0x16cb94); - HW_Set_IF_Synthesizer(pObj, 0x0e1740); - HW_Set_IF_Synthesizer(pObj, 0x014980); - HW_Set_IF_Synthesizer(pObj, 0x116240); - HW_Set_IF_Synthesizer(pObj, 0x090000); - HW_Set_IF_Synthesizer(pObj, 0x192304); - HW_Set_IF_Synthesizer(pObj, 0x05112f); - HW_Set_IF_Synthesizer(pObj, 0x0d54a8); - HW_Set_IF_Synthesizer(pObj, 0x0f8000); - HW_Set_IF_Synthesizer(pObj, 0x1c0008); - HW_Set_IF_Synthesizer(pObj, 0x1c0000); - HW_Set_IF_Synthesizer(pObj, GRF5101T[ChannelNo]); - HW_Set_IF_Synthesizer(pObj, 0x1c0008); - HW_Set_IF_Synthesizer(pObj, 0x150000); - HW_Set_IF_Synthesizer(pObj, 0x0c7000); - HW_Set_IF_Synthesizer(pObj, 0x150800); - HW_Set_IF_Synthesizer(pObj, 0x150000); - } else { - HW_Set_IF_Synthesizer(pObj, 0x1c0000); - HW_Set_IF_Synthesizer(pObj, GRF5101T[ChannelNo]); - HW_Set_IF_Synthesizer(pObj, 0x1c0008); - } -} - -void HW_Set_AL2210MPVB_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) -{ - void *reg = pObj->reg; - U32 tmpvalue; - - pObj->SetReg(reg, ZD_PE1_PE2, 2); - if (!InitChOnly) { - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR9, 0xe0); - pObj->SetReg(reg, ZD_CR10, 0x91); - pObj->SetReg(reg, ZD_CR12, 0x90); - pObj->SetReg(reg, ZD_CR15, 0xd0); - pObj->SetReg(reg, ZD_CR16, 0x40); - pObj->SetReg(reg, ZD_CR17, 0x58); - pObj->SetReg(reg, ZD_CR18, 0x04); - pObj->SetReg(reg, ZD_CR23, 0x66); - pObj->SetReg(reg, ZD_CR24, 0x14); - pObj->SetReg(reg, ZD_CR26, 0x90); - pObj->SetReg(reg, ZD_CR27, 0x30); - pObj->SetReg(reg, ZD_CR31, 0x80); - pObj->SetReg(reg, ZD_CR34, 0x06); - pObj->SetReg(reg, ZD_CR35, 0x3e); - pObj->SetReg(reg, ZD_CR38, 0x38); - pObj->SetReg(reg, ZD_CR46, 0x90); - pObj->SetReg(reg, ZD_CR47, 0x10); - pObj->SetReg(reg, ZD_CR64, 0x64); - pObj->SetReg(reg, ZD_CR79, 0xb5); - pObj->SetReg(reg, ZD_CR80, 0x38); - pObj->SetReg(reg, ZD_CR81, 0x30); - pObj->SetReg(reg, ZD_CR113, 0xc0); - pObj->SetReg(reg, ZD_CR127, 0x03); - UnLockPhyReg(pObj); - - HW_Set_IF_Synthesizer(pObj, AL2210TB[ChannelNo]); - HW_Set_IF_Synthesizer(pObj, 0x00fcb1); - HW_Set_IF_Synthesizer(pObj, 0x358132); - HW_Set_IF_Synthesizer(pObj, 0x0108b3); - HW_Set_IF_Synthesizer(pObj, 0xc77804); - HW_Set_IF_Synthesizer(pObj, 0x456415); - HW_Set_IF_Synthesizer(pObj, 0xff2226); - HW_Set_IF_Synthesizer(pObj, 0x806667); - HW_Set_IF_Synthesizer(pObj, 0x7860f8); - HW_Set_IF_Synthesizer(pObj, 0xbb01c9); - HW_Set_IF_Synthesizer(pObj, 0x00000A); - HW_Set_IF_Synthesizer(pObj, 0x00000B); - - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR47, 0x0); - tmpvalue = pObj->GetReg(reg, ZD_RADIO_PD); - - tmpvalue &= ~BIT_0; - pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); - tmpvalue |= BIT_0; - pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); - pObj->SetReg(reg, ZD_RFCFG, 0x5); - pObj->DelayUs(100); - pObj->SetReg(reg, ZD_RFCFG, 0x0); - pObj->SetReg(reg, ZD_CR47, 0x1c); - UnLockPhyReg(pObj); - } else { - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR47, 0x0); - tmpvalue = pObj->GetReg(reg, ZD_RADIO_PD); - tmpvalue &= ~BIT_0; - pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); - tmpvalue |= BIT_0; - pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); - pObj->SetReg(reg, ZD_RFCFG, 0x5); - pObj->DelayUs(100); - pObj->SetReg(reg, ZD_RFCFG, 0x0); - pObj->SetReg(reg, ZD_CR47, 0x1c); - UnLockPhyReg(pObj); - HW_Set_IF_Synthesizer(pObj, AL2210TB[ChannelNo]); - } - pObj->SetReg(reg, ZD_PE1_PE2, 3); -} - -void HW_Set_AL2210_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) -{ - void *reg = pObj->reg; - U32 tmpvalue; - - pObj->SetReg(reg, ZD_PE1_PE2, 2); - - if (!InitChOnly) { - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR9, 0xe0); - pObj->SetReg(reg, ZD_CR10, 0x91); - pObj->SetReg(reg, ZD_CR12, 0x90); - pObj->SetReg(reg, ZD_CR15, 0xd0); - pObj->SetReg(reg, ZD_CR16, 0x40); - pObj->SetReg(reg, ZD_CR17, 0x58); - pObj->SetReg(reg, ZD_CR18, 0x04); - pObj->SetReg(reg, ZD_CR23, 0x66); - pObj->SetReg(reg, ZD_CR24, 0x14); - pObj->SetReg(reg, ZD_CR26, 0x90); - pObj->SetReg(reg, ZD_CR31, 0x80); - pObj->SetReg(reg, ZD_CR34, 0x06); - pObj->SetReg(reg, ZD_CR35, 0x3e); - pObj->SetReg(reg, ZD_CR38, 0x38); - pObj->SetReg(reg, ZD_CR46, 0x90); - pObj->SetReg(reg, ZD_CR47, 0x10); - pObj->SetReg(reg, ZD_CR64, 0x64); - pObj->SetReg(reg, ZD_CR79, 0xb5); - pObj->SetReg(reg, ZD_CR80, 0x38); - pObj->SetReg(reg, ZD_CR81, 0x30); - pObj->SetReg(reg, ZD_CR113, 0xc0); - pObj->SetReg(reg, ZD_CR127, 0x3); - UnLockPhyReg(pObj); - - HW_Set_IF_Synthesizer(pObj, AL2210TB[ChannelNo]); - HW_Set_IF_Synthesizer(pObj, 0x00fcb1); - HW_Set_IF_Synthesizer(pObj, 0x358132); - HW_Set_IF_Synthesizer(pObj, 0x0108b3); - HW_Set_IF_Synthesizer(pObj, 0xc77804); - HW_Set_IF_Synthesizer(pObj, 0x456415); - HW_Set_IF_Synthesizer(pObj, 0xff2226); - HW_Set_IF_Synthesizer(pObj, 0x806667); - HW_Set_IF_Synthesizer(pObj, 0x7860f8); - HW_Set_IF_Synthesizer(pObj, 0xbb01c9); - HW_Set_IF_Synthesizer(pObj, 0x00000A); - HW_Set_IF_Synthesizer(pObj, 0x00000B); - - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR47, 0x0); - tmpvalue = pObj->GetReg(reg, ZD_RADIO_PD); - tmpvalue &= ~BIT_0; - pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); - - tmpvalue |= BIT_0; - pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); - pObj->SetReg(reg, ZD_RFCFG, 0x5); - pObj->DelayUs(100); - pObj->SetReg(reg, ZD_RFCFG, 0x0); - pObj->SetReg(reg, ZD_CR47, 0x1c); - UnLockPhyReg(pObj); - } else { - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR47, 0x0); - tmpvalue = pObj->GetReg(reg, ZD_RADIO_PD); - tmpvalue &= ~BIT_0; - pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); - tmpvalue |= BIT_0; - pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); - pObj->SetReg(reg, ZD_RFCFG, 0x5); - pObj->DelayUs(100); - pObj->SetReg(reg, ZD_RFCFG, 0x0); - pObj->SetReg(reg, ZD_CR47, 0x1c); - UnLockPhyReg(pObj); - HW_Set_IF_Synthesizer(pObj, AL2210TB[ChannelNo]); - } - pObj->SetReg(reg, ZD_PE1_PE2, 3); -} - -void HW_Set_AL2230_RF_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) -{ - void *reg = pObj->reg; - U32 tmpvalue; - - LockPhyReg(pObj); -#if !((defined(OFDM) && defined(GCCK))) - pObj->SetReg(reg, ZD_PE1_PE2, 2); -#else - //LockPhyReg(pObj); - //tmpvalue = pObj->GetReg(reg, ZD_CR203); - tmpvalue &= ~BIT_4; - //pObj->SetReg(reg, ZD_CR203, tmpvalue); - //UnLockPhyReg(pObj); -#endif - - if (!InitChOnly) { - //LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR15, 0x20); - pObj->SetReg(reg, ZD_CR23, 0x40); - pObj->SetReg(reg, ZD_CR24, 0x20); - pObj->SetReg(reg, ZD_CR26, 0x11); - pObj->SetReg(reg, ZD_CR28, 0x3e); - pObj->SetReg(reg, ZD_CR29, 0x00); - pObj->SetReg(reg, ZD_CR44, 0x33); - pObj->SetReg(reg, ZD_CR106, 0x2a); - pObj->SetReg(reg, ZD_CR107, 0x1a); - pObj->SetReg(reg, ZD_CR109, 0x9); - pObj->SetReg(reg, ZD_CR110, 0x27); - pObj->SetReg(reg, ZD_CR111, 0x2b); - pObj->SetReg(reg, ZD_CR112, 0x2b); - pObj->SetReg(reg, ZD_CR119, 0xa); + void *reg = pObj->reg; + U32 tmpvalue; + + tmpvalue = pObj->GetReg(reg, ZD_CtlReg1); + tmpvalue &= ~0x80; + pObj->SetReg(reg, ZD_CtlReg1, tmpvalue); +#endif +} + + +void +UnLockPhyReg(zd_80211Obj_t *pObj) +{ +#ifndef fQuickPhySet + void *reg = pObj->reg; + U32 tmpvalue; + + tmpvalue = pObj->GetReg(reg, ZD_CtlReg1); + tmpvalue |= 0x80; + pObj->SetReg(reg, ZD_CtlReg1, tmpvalue); +#endif +} + + +void +HW_Set_Maxim_New_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) +{ + void *reg = pObj->reg; + U32 tmpvalue; + + LockPhyReg(pObj); + +#ifdef HOST_IF_USB + + pObj->SetReg(reg, ZD_CR23, 0x40); + pObj->SetReg(reg, ZD_CR15, 0x20); + pObj->SetReg(reg, ZD_CR28, 0x3e); + pObj->SetReg(reg, ZD_CR29, 0x00); + pObj->SetReg(reg, ZD_CR26, 0x11); + pObj->SetReg(reg, ZD_CR44, 0x33); + pObj->SetReg(reg, ZD_CR106, 0x2a); + pObj->SetReg(reg, ZD_CR107, 0x1a); + + pObj->SetReg(reg, ZD_CR109, 0x2b); + pObj->SetReg(reg, ZD_CR110, 0x2b); + pObj->SetReg(reg, ZD_CR111, 0x2b); + pObj->SetReg(reg, ZD_CR112, 0x2b); + pObj->SetReg(reg, ZD_CR10, 0x89); + pObj->SetReg(reg, ZD_CR17, 0x20); + pObj->SetReg(reg, ZD_CR26, 0x93); + pObj->SetReg(reg, ZD_CR34, 0x30); + pObj->SetReg(reg, ZD_CR35, 0x40); + pObj->SetReg(reg, ZD_CR41, 0x24); + pObj->SetReg(reg, ZD_CR44, 0x32); + pObj->SetReg(reg, ZD_CR46, 0x90); + pObj->SetReg(reg, ZD_CR89, 0x18); + pObj->SetReg(reg, ZD_CR92, 0x0a); + + pObj->SetReg(reg, ZD_CR101, 0x13); + pObj->SetReg(reg, ZD_CR102, 0x27); + pObj->SetReg(reg, ZD_CR106, 0x20); + pObj->SetReg(reg, ZD_CR107, 0x24); + pObj->SetReg(reg, ZD_CR109, 0x09); + pObj->SetReg(reg, ZD_CR110, 0x13); + pObj->SetReg(reg, ZD_CR111, 0x13); + pObj->SetReg(reg, ZD_CR112, 0x13); + pObj->SetReg(reg, ZD_CR113, 0x27); + pObj->SetReg(reg, ZD_CR114, 0x27); + pObj->SetReg(reg, ZD_CR115, 0x24); + pObj->SetReg(reg, ZD_CR116, 0x24); + pObj->SetReg(reg, ZD_CR117, 0xf4); + pObj->SetReg(reg, ZD_CR118, 0xfa); + pObj->SetReg(reg, ZD_CR120, 0x4f); + pObj->SetReg(reg, ZD_CR121, 0x77); + pObj->SetReg(reg, ZD_CR122, 0xfe); +#else + + pObj->SetReg(reg, ZD_CR23, 0x40); + pObj->SetReg(reg, ZD_CR15, 0x20); + pObj->SetReg(reg, ZD_CR28, 0x3e); + pObj->SetReg(reg, ZD_CR29, 0x00); + pObj->SetReg(reg, ZD_CR26, 0x11); + pObj->SetReg(reg, ZD_CR44, 0x34); //4112 + pObj->SetReg(reg, ZD_CR106, 0x2a); + pObj->SetReg(reg, ZD_CR107, 0x1a); + pObj->SetReg(reg, ZD_CR109, 0x2b); + pObj->SetReg(reg, ZD_CR110, 0x2b); + pObj->SetReg(reg, ZD_CR111, 0x2b); + pObj->SetReg(reg, ZD_CR112, 0x2b); + #if (defined(GCCK) && defined(OFDM)) - pObj->SetReg(reg, ZD_CR10, 0x89); - pObj->SetReg(reg, ZD_CR17, 0x28); //for newest (3rd cut) AL2300 - pObj->SetReg(reg, ZD_CR26, 0x93); - pObj->SetReg(reg, ZD_CR34, 0x30); - pObj->SetReg(reg, ZD_CR35, 0x3E); //for newest (3rd cut) AL2300 - pObj->SetReg(reg, ZD_CR41, 0x24); - pObj->SetReg(reg, ZD_CR44, 0x32); - pObj->SetReg(reg, ZD_CR46, 0x96); //for newest (3rd cut) AL2300 - pObj->SetReg(reg, ZD_CR47, 0x1e); - pObj->SetReg(reg, ZD_CR79, 0x58); - pObj->SetReg(reg, ZD_CR80, 0x30); - pObj->SetReg(reg, ZD_CR81, 0x30); - pObj->SetReg(reg, ZD_CR87, 0x0A); - pObj->SetReg(reg, ZD_CR89, 0x04); - pObj->SetReg(reg, ZD_CR92, 0x0a); - pObj->SetReg(reg, ZD_CR99, 0x28); - pObj->SetReg(reg, ZD_CR100, 0x00); - pObj->SetReg(reg, ZD_CR101, 0x13); - pObj->SetReg(reg, ZD_CR102, 0x27); - pObj->SetReg(reg, ZD_CR106, 0x24); - pObj->SetReg(reg, ZD_CR107, 0x2A); - pObj->SetReg(reg, ZD_CR109, 0x09); - pObj->SetReg(reg, ZD_CR110, 0x13); - pObj->SetReg(reg, ZD_CR111, 0x1f); - pObj->SetReg(reg, ZD_CR112, 0x1f); - pObj->SetReg(reg, ZD_CR113, 0x27); - pObj->SetReg(reg, ZD_CR114, 0x27); - pObj->SetReg(reg, ZD_CR115, 0x24); //for newest (3rd cut) AL2300 - pObj->SetReg(reg, ZD_CR116, 0x24); - pObj->SetReg(reg, ZD_CR117, 0xf4); - pObj->SetReg(reg, ZD_CR118, 0xfc); - pObj->SetReg(reg, ZD_CR119, 0x10); - pObj->SetReg(reg, ZD_CR120, 0x4f); - pObj->SetReg(reg, ZD_CR121, 0x77); - pObj->SetReg(reg, ZD_CR122, 0xe0); - pObj->SetReg(reg, ZD_CR137, 0x88); -#endif - pObj->SetReg(reg, ZD_CR252, 0xff); - pObj->SetReg(reg, ZD_CR253, 0xff); - //UnLockPhyReg(pObj); - HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3]); - HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+1]); - HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+2]); - HW_Set_IF_Synthesizer(pObj, 0x0b3331); - HW_Set_IF_Synthesizer(pObj, 0x03b812); - HW_Set_IF_Synthesizer(pObj, 0x00fff3); - HW_Set_IF_Synthesizer(pObj, 0x000da4); - HW_Set_IF_Synthesizer(pObj, 0x04edc5); - HW_Set_IF_Synthesizer(pObj, 0x0805b6); - HW_Set_IF_Synthesizer(pObj, 0x011687); - HW_Set_IF_Synthesizer(pObj, 0x000688); - HW_Set_IF_Synthesizer(pObj, 0x0403b9); //External control TX power (CR31) - HW_Set_IF_Synthesizer(pObj, 0x00dbba); - HW_Set_IF_Synthesizer(pObj, 0x00099b); - HW_Set_IF_Synthesizer(pObj, 0x0bdffc); - HW_Set_IF_Synthesizer(pObj, 0x00000d); - HW_Set_IF_Synthesizer(pObj, 0x00500f); - - //LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR251, 0x2f); // shdnb(PLL_ON)=0 - pObj->SetReg(reg, ZD_CR251, 0x3f); // shdnb(PLL_ON)=1 - pObj->DelayUs(10); - //UnLockPhyReg(pObj); - HW_Set_IF_Synthesizer(pObj, 0x000d00f); - pObj->DelayUs(100); - HW_Set_IF_Synthesizer(pObj, 0x0004c0f); - pObj->DelayUs(100); - HW_Set_IF_Synthesizer(pObj, 0x00540f); - pObj->DelayUs(100); - HW_Set_IF_Synthesizer(pObj, 0x00700f); - pObj->DelayUs(100); - HW_Set_IF_Synthesizer(pObj, 0x00500f); - } else { - HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3]); - HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+1]); - HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+2]); - } - - // LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR138, 0x28); - pObj->SetReg(reg, ZD_CR203, 0x06); - // UnLockPhyReg(pObj); - pObj->CR203Flag = 2; - pObj->CR31Flag = 2; -#if !((defined(OFDM) && defined(GCCK))) - pObj->SetReg(reg, ZD_PE1_PE2, 3); + pObj->SetReg(reg, ZD_CR10, 0x89); + pObj->SetReg(reg, ZD_CR17, 0x20); + pObj->SetReg(reg, ZD_CR26, 0x93); + pObj->SetReg(reg, ZD_CR34, 0x30); + pObj->SetReg(reg, ZD_CR35, 0x40); + + pObj->SetReg(reg, ZD_CR41, 0x24); + pObj->SetReg(reg, ZD_CR44, 0x32); + pObj->SetReg(reg, ZD_CR46, 0x90); + pObj->SetReg(reg, ZD_CR89, 0x18); + pObj->SetReg(reg, ZD_CR92, 0x0a); + pObj->SetReg(reg, ZD_CR101, 0x13); + pObj->SetReg(reg, ZD_CR102, 0x27); + pObj->SetReg(reg, ZD_CR106, 0x20); + pObj->SetReg(reg, ZD_CR107, 0x24); + //pObj->SetReg(reg, ZD_CR109, 0x09); + //pObj->SetReg(reg, ZD_CR110, 0x13); + //pObj->SetReg(reg, ZD_CR111, 0x13); + + + + + pObj->SetReg(reg, ZD_CR109, 0x13); //4326 + pObj->SetReg(reg, ZD_CR110, 0x27); //4326 + pObj->SetReg(reg, ZD_CR111, 0x27); //4326 + pObj->SetReg(reg, ZD_CR112, 0x13); + pObj->SetReg(reg, ZD_CR113, 0x27); + pObj->SetReg(reg, ZD_CR114, 0x27); + pObj->SetReg(reg, ZD_CR115, 0x24); + pObj->SetReg(reg, ZD_CR116, 0x24); + pObj->SetReg(reg, ZD_CR117, 0xf4); + //pObj->SetReg(reg, ZD_CR118, 0xfa); + pObj->SetReg(reg, ZD_CR118, 0x00); //4326 + pObj->SetReg(reg, ZD_CR120, 0x4f); + //pObj->SetReg(reg, ZD_CR121, 0x77); //3n12 + //pObj->SetReg(reg, ZD_CR121, 0x13); //3d24 + pObj->SetReg(reg, ZD_CR121, 0x06); //4326 + pObj->SetReg(reg, ZD_CR122, 0xfe); + pObj->SetReg(reg, ZD_CR150, 0x0d); //4407 + +#elif (defined(ECCK_60_5)) + + pObj->SetReg(reg, ZD_CR26, 0x91); + pObj->SetReg(reg, ZD_CR47, 0x1E); + pObj->SetReg(reg, ZD_CR106, 0x44); + pObj->SetReg(reg, ZD_CR107, 0x00); + pObj->SetReg(reg, ZD_CR14, 0x80); + pObj->SetReg(reg, ZD_CR10, 0x89); + pObj->SetReg(reg, ZD_CR11, 0x00); + pObj->SetReg(reg, ZD_CR24, 0x0e); + pObj->SetReg(reg, ZD_CR41, 0x24); + pObj->SetReg(reg, ZD_CR159, 0x93); + pObj->SetReg(reg, ZD_CR160, 0xfc); + pObj->SetReg(reg, ZD_CR161, 0x1e); + pObj->SetReg(reg, ZD_CR162, 0x24); +#endif #endif - UnLockPhyReg(pObj); + + pObj->CR122Flag = 2; + pObj->CR31Flag = 2; + + //UnLockPhyReg(pObj); + +#if !( (defined(OFDM) && defined(GCCK)) || defined(ECCK_60_5) ) + + pObj->SetReg(reg, ZD_PE1_PE2, 0x02); +#else + //LockPhyReg(pObj); + tmpvalue = pObj->GetReg(reg, ZD_CR203); + tmpvalue &= ~BIT_4; + pObj->SetReg(reg, ZD_CR203, tmpvalue); + //UnLockPhyReg(pObj); +#endif + + HW_Set_IF_Synthesizer(pObj, M2827BF[ChannelNo]); + HW_Set_IF_Synthesizer(pObj, M2827BN[ChannelNo]); + HW_Set_IF_Synthesizer(pObj, 0x00400); + HW_Set_IF_Synthesizer(pObj, 0x00ca1); + HW_Set_IF_Synthesizer(pObj, 0x10072); + HW_Set_IF_Synthesizer(pObj, 0x18645); + HW_Set_IF_Synthesizer(pObj, 0x04006); + HW_Set_IF_Synthesizer(pObj, 0x000a7); + HW_Set_IF_Synthesizer(pObj, 0x08258); + HW_Set_IF_Synthesizer(pObj, 0x03fc9); + HW_Set_IF_Synthesizer(pObj, 0x0040a); + HW_Set_IF_Synthesizer(pObj, 0x0000b); + HW_Set_IF_Synthesizer(pObj, 0x0026c); +#if defined(ECCK_60_5) + + HW_Set_IF_Synthesizer(pObj, 0x04258); +#endif + +#if !( (defined(OFDM) && defined(GCCK)) || defined(ECCK_60_5) ) + + pObj->SetReg(reg, ZD_PE1_PE2, 0x03); +#else + //LockPhyReg(pObj); + tmpvalue = pObj->GetReg(reg, ZD_CR203); + tmpvalue |= BIT_4; + + pObj->SetReg(reg, ZD_CR203, tmpvalue); + ; + //UnLockPhyReg(pObj); +#endif + + UnLockPhyReg(pObj); +} + + + +void +HW_Set_Maxim_New_Chips2(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) +{ + void *reg = pObj->reg; + U32 tmpvalue; + + // Get Phy-Config permission + LockPhyReg(pObj); + +#ifdef HOST_IF_USB + + pObj->SetReg(reg, ZD_CR23, 0x40); + pObj->SetReg(reg, ZD_CR15, 0x20); + pObj->SetReg(reg, ZD_CR28, 0x3e); + pObj->SetReg(reg, ZD_CR29, 0x00); + pObj->SetReg(reg, ZD_CR26, 0x11); + pObj->SetReg(reg, ZD_CR44, 0x33); + pObj->SetReg(reg, ZD_CR106, 0x2a); + pObj->SetReg(reg, ZD_CR107, 0x1a); + pObj->SetReg(reg, ZD_CR109, 0x2b); + pObj->SetReg(reg, ZD_CR110, 0x2b); + pObj->SetReg(reg, ZD_CR111, 0x2b); + pObj->SetReg(reg, ZD_CR112, 0x2b); + pObj->SetReg(reg, ZD_CR10, 0x89); + pObj->SetReg(reg, ZD_CR17, 0x20); + pObj->SetReg(reg, ZD_CR26, 0x93); + pObj->SetReg(reg, ZD_CR34, 0x30); + pObj->SetReg(reg, ZD_CR35, 0x40); + pObj->SetReg(reg, ZD_CR41, 0x24); + pObj->SetReg(reg, ZD_CR44, 0x32); + pObj->SetReg(reg, ZD_CR46, 0x90); + pObj->SetReg(reg, ZD_CR89, 0x18); + pObj->SetReg(reg, ZD_CR92, 0x0a); + pObj->SetReg(reg, ZD_CR101, 0x13); + pObj->SetReg(reg, ZD_CR102, 0x27); + pObj->SetReg(reg, ZD_CR106, 0x20); + pObj->SetReg(reg, ZD_CR107, 0x24); + pObj->SetReg(reg, ZD_CR109, 0x09); + pObj->SetReg(reg, ZD_CR110, 0x13); + pObj->SetReg(reg, ZD_CR111, 0x13); + pObj->SetReg(reg, ZD_CR112, 0x13); + pObj->SetReg(reg, ZD_CR113, 0x27); + pObj->SetReg(reg, ZD_CR114, 0x27); + pObj->SetReg(reg, ZD_CR115, 0x24); + pObj->SetReg(reg, ZD_CR116, 0x24); + + pObj->SetReg(reg, ZD_CR117, 0xf4); + pObj->SetReg(reg, ZD_CR118, 0xfa); + pObj->SetReg(reg, ZD_CR120, 0x4f); + + pObj->SetReg(reg, ZD_CR121, 0x77); + + + pObj->SetReg(reg, ZD_CR122, 0xfe); + +#else + + pObj->SetReg(reg, ZD_CR23, 0x40); + pObj->SetReg(reg, ZD_CR15, 0x20); + pObj->SetReg(reg, ZD_CR28, 0x3e); + pObj->SetReg(reg, ZD_CR29, 0x00); + pObj->SetReg(reg, ZD_CR26, 0x11); + pObj->SetReg(reg, ZD_CR44, 0x33); + pObj->SetReg(reg, ZD_CR106, 0x2a); + pObj->SetReg(reg, ZD_CR107, 0x1a); + pObj->SetReg(reg, ZD_CR109, 0x2b); + pObj->SetReg(reg, ZD_CR110, 0x2b); + pObj->SetReg(reg, ZD_CR111, 0x2b); + pObj->SetReg(reg, ZD_CR112, 0x2b); + +#if (defined(GCCK) && defined(OFDM)) + + pObj->SetReg(reg, ZD_CR10, 0x89); + pObj->SetReg(reg, ZD_CR17, 0x20); + pObj->SetReg(reg, ZD_CR26, 0x93); + pObj->SetReg(reg, ZD_CR34, 0x30); + pObj->SetReg(reg, ZD_CR35, 0x40); + pObj->SetReg(reg, ZD_CR41, 0x24); + pObj->SetReg(reg, ZD_CR44, 0x32); + + pObj->SetReg(reg, ZD_CR46, 0x90); + pObj->SetReg(reg, ZD_CR79, 0x58); //for Atheros compability 4415 + pObj->SetReg(reg, ZD_CR80, 0x30); //for Atheros compability + pObj->SetReg(reg, ZD_CR81, 0x30); //for Atheros compability + pObj->SetReg(reg, ZD_CR89, 0x18); + + + + + + + + pObj->SetReg(reg, ZD_CR92, 0x0a); + pObj->SetReg(reg, ZD_CR101, 0x13); + pObj->SetReg(reg, ZD_CR102, 0x27); + pObj->SetReg(reg, ZD_CR106, 0x20); + pObj->SetReg(reg, ZD_CR107, 0x24); + pObj->SetReg(reg, ZD_CR109, 0x09); + pObj->SetReg(reg, ZD_CR110, 0x13); + pObj->SetReg(reg, ZD_CR111, 0x13); + pObj->SetReg(reg, ZD_CR112, 0x13); + pObj->SetReg(reg, ZD_CR113, 0x27); + pObj->SetReg(reg, ZD_CR114, 0x27); + pObj->SetReg(reg, ZD_CR115, 0x24); + pObj->SetReg(reg, ZD_CR116, 0x24); + pObj->SetReg(reg, ZD_CR117, 0xf4); + //pObj->SetReg(reg, ZD_CR118, 0xfa); + pObj->SetReg(reg, ZD_CR118, 0x00); //4326 + pObj->SetReg(reg, ZD_CR120, 0x4f); + //pObj->SetReg(reg, ZD_CR121, 0x77); //3n12 + //pObj->SetReg(reg, ZD_CR121, 0x13); //3d24 + pObj->SetReg(reg, ZD_CR121, 0x06); //4326 + pObj->SetReg(reg, ZD_CR122, 0xfe); +#elif (defined(ECCK_60_5)) + + pObj->SetReg(reg, ZD_CR47, 0x1E); + pObj->SetReg(reg, ZD_CR106, 0x04); + pObj->SetReg(reg, ZD_CR107, 0x00); + pObj->SetReg(reg, ZD_CR14, 0x80); + pObj->SetReg(reg, ZD_CR10, 0x89); + + pObj->SetReg(reg, ZD_CR11, 0x00); + pObj->SetReg(reg, ZD_CR161, 0x28); + pObj->SetReg(reg, ZD_CR162, 0x26); + + pObj->SetReg(reg, ZD_CR24, 0x0e); + pObj->SetReg(reg, ZD_CR41, 0x24); + pObj->SetReg(reg, ZD_CR159, 0x93); + pObj->SetReg(reg, ZD_CR160, 0xfc); + pObj->SetReg(reg, ZD_CR161, 0x20); + pObj->SetReg(reg, ZD_CR162, 0x26); +#endif +#endif + + pObj->CR122Flag = 2; + pObj->CR31Flag = 2; + + //UnLockPhyReg(pObj); + +#if !( (defined(OFDM) && defined(GCCK)) || defined(ECCK_60_5) ) + + pObj->SetReg(reg, ZD_PE1_PE2, 2); +#else + //LockPhyReg(pObj); + tmpvalue = pObj->GetReg(reg, ZD_CR203); + tmpvalue &= ~BIT_4; + pObj->SetReg(reg, ZD_CR203, tmpvalue); + //UnLockPhyReg(pObj); +#endif + + HW_Set_IF_Synthesizer(pObj, M2827BF2[ChannelNo]); + HW_Set_IF_Synthesizer(pObj, M2827BN2[ChannelNo]); + HW_Set_IF_Synthesizer(pObj, 0x00400); + HW_Set_IF_Synthesizer(pObj, 0x00ca1); + HW_Set_IF_Synthesizer(pObj, 0x10072); + HW_Set_IF_Synthesizer(pObj, 0x18645); + HW_Set_IF_Synthesizer(pObj, 0x04006); + HW_Set_IF_Synthesizer(pObj, 0x000a7); + HW_Set_IF_Synthesizer(pObj, 0x08258); + + HW_Set_IF_Synthesizer(pObj, 0x03fc9); + HW_Set_IF_Synthesizer(pObj, 0x0040a); + HW_Set_IF_Synthesizer(pObj, 0x0000b); + HW_Set_IF_Synthesizer(pObj, 0x0026c); +#if defined(ECCK_60_5) + + HW_Set_IF_Synthesizer(pObj, 0x04258); +#endif + +#if !( (defined(OFDM) && defined(GCCK)) || defined(ECCK_60_5) ) + + pObj->SetReg(reg, ZD_PE1_PE2, 3); + +#else + //LockPhyReg(pObj); + tmpvalue = pObj->GetReg(reg, ZD_CR203); + tmpvalue |= BIT_4; + pObj->SetReg(reg, ZD_CR203, tmpvalue); + //UnLockPhyReg(pObj); +#endif + + UnLockPhyReg(pObj); +} + + +void +HW_Set_GCT_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) +{ + void *reg = pObj->reg; + + if (!InitChOnly) { + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR47, 0x1E); + pObj->SetReg(reg, ZD_CR15, 0xdc); + pObj->SetReg(reg, ZD_CR113, 0xc0); //3910 + pObj->SetReg(reg, ZD_CR20, 0x0c); + pObj->SetReg(reg, ZD_CR17, 0x65); + pObj->SetReg(reg, ZD_CR34, 0x04); + pObj->SetReg(reg, ZD_CR35, 0x35); + pObj->SetReg(reg, ZD_CR24, 0x20); + pObj->SetReg(reg, ZD_CR9, 0xe0); + pObj->SetReg(reg, ZD_CR127, 0x02); + pObj->SetReg(reg, ZD_CR10, 0x91); + pObj->SetReg(reg, ZD_CR23, 0x7f); + pObj->SetReg(reg, ZD_CR27, 0x10); + pObj->SetReg(reg, ZD_CR28, 0x7a); + pObj->SetReg(reg, ZD_CR79, 0xb5); + pObj->SetReg(reg, ZD_CR64, 0x80); + //++ Enable D.C cancellation (CR33 Bit_5) to avoid + // CCA always high. + pObj->SetReg(reg, ZD_CR33, 0x28); + //-- + + pObj->SetReg(reg, ZD_CR38, 0x30); + + UnLockPhyReg(pObj); + + HW_Set_IF_Synthesizer(pObj, 0x1F0000); + HW_Set_IF_Synthesizer(pObj, 0x1F0000); + HW_Set_IF_Synthesizer(pObj, 0x1F0200); + HW_Set_IF_Synthesizer(pObj, 0x1F0600); + HW_Set_IF_Synthesizer(pObj, 0x1F8600); + HW_Set_IF_Synthesizer(pObj, 0x1F8600); + HW_Set_IF_Synthesizer(pObj, 0x002050); + HW_Set_IF_Synthesizer(pObj, 0x1F8000); + HW_Set_IF_Synthesizer(pObj, 0x1F8200); + HW_Set_IF_Synthesizer(pObj, 0x1F8600); + HW_Set_IF_Synthesizer(pObj, 0x1c0000); + HW_Set_IF_Synthesizer(pObj, 0x10c458); + + HW_Set_IF_Synthesizer(pObj, 0x088e92); + HW_Set_IF_Synthesizer(pObj, 0x187b82); + HW_Set_IF_Synthesizer(pObj, 0x0401b4); + HW_Set_IF_Synthesizer(pObj, 0x140816); + HW_Set_IF_Synthesizer(pObj, 0x0c7000); + HW_Set_IF_Synthesizer(pObj, 0x1c0000); + HW_Set_IF_Synthesizer(pObj, 0x02ccae); + HW_Set_IF_Synthesizer(pObj, 0x128023); + HW_Set_IF_Synthesizer(pObj, 0x0a0000); + HW_Set_IF_Synthesizer(pObj, GRF5101T[ChannelNo]); + HW_Set_IF_Synthesizer(pObj, 0x06e380); + HW_Set_IF_Synthesizer(pObj, 0x16cb94); + HW_Set_IF_Synthesizer(pObj, 0x0e1740); + HW_Set_IF_Synthesizer(pObj, 0x014980); + HW_Set_IF_Synthesizer(pObj, 0x116240); + HW_Set_IF_Synthesizer(pObj, 0x090000); + HW_Set_IF_Synthesizer(pObj, 0x192304); + HW_Set_IF_Synthesizer(pObj, 0x05112f); + HW_Set_IF_Synthesizer(pObj, 0x0d54a8); + HW_Set_IF_Synthesizer(pObj, 0x0f8000); + HW_Set_IF_Synthesizer(pObj, 0x1c0008); + HW_Set_IF_Synthesizer(pObj, 0x1c0000); + + HW_Set_IF_Synthesizer(pObj, GRF5101T[ChannelNo]); + HW_Set_IF_Synthesizer(pObj, 0x1c0008); + HW_Set_IF_Synthesizer(pObj, 0x150000); + HW_Set_IF_Synthesizer(pObj, 0x0c7000); + HW_Set_IF_Synthesizer(pObj, 0x150800); + HW_Set_IF_Synthesizer(pObj, 0x150000); + } else { + HW_Set_IF_Synthesizer(pObj, 0x1c0000); + HW_Set_IF_Synthesizer(pObj, GRF5101T[ChannelNo]); + + HW_Set_IF_Synthesizer(pObj, 0x1c0008); + } +} + + +void +HW_Set_AL2210MPVB_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) +{ + void *reg = pObj->reg; + U32 tmpvalue; + + pObj->SetReg(reg, ZD_PE1_PE2, 2); + + if (!InitChOnly) { + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR9, 0xe0); + pObj->SetReg(reg, ZD_CR10, 0x91); + pObj->SetReg(reg, ZD_CR12, 0x90); + pObj->SetReg(reg, ZD_CR15, 0xd0); + pObj->SetReg(reg, ZD_CR16, 0x40); + pObj->SetReg(reg, ZD_CR17, 0x58); + pObj->SetReg(reg, ZD_CR18, 0x04); + pObj->SetReg(reg, ZD_CR23, 0x66); + pObj->SetReg(reg, ZD_CR24, 0x14); + pObj->SetReg(reg, ZD_CR26, 0x90); + pObj->SetReg(reg, ZD_CR27, 0x30); + pObj->SetReg(reg, ZD_CR31, 0x80); + pObj->SetReg(reg, ZD_CR34, 0x06); + pObj->SetReg(reg, ZD_CR35, 0x3e); + pObj->SetReg(reg, ZD_CR38, 0x38); + pObj->SetReg(reg, ZD_CR46, 0x90); + pObj->SetReg(reg, ZD_CR47, 0x1E); + pObj->SetReg(reg, ZD_CR64, 0x64); + pObj->SetReg(reg, ZD_CR79, 0xb5); + pObj->SetReg(reg, ZD_CR80, 0x38); + pObj->SetReg(reg, ZD_CR81, 0x30); + pObj->SetReg(reg, ZD_CR113, 0xc0); + pObj->SetReg(reg, ZD_CR127, 0x03); + UnLockPhyReg(pObj); + + HW_Set_IF_Synthesizer(pObj, AL2210TB[ChannelNo]); + HW_Set_IF_Synthesizer(pObj, 0x00fcb1); + HW_Set_IF_Synthesizer(pObj, 0x358132); + HW_Set_IF_Synthesizer(pObj, 0x0108b3); + HW_Set_IF_Synthesizer(pObj, 0xc77804); + HW_Set_IF_Synthesizer(pObj, 0x456415); + HW_Set_IF_Synthesizer(pObj, 0xff2226); + HW_Set_IF_Synthesizer(pObj, 0x806667); + HW_Set_IF_Synthesizer(pObj, 0x7860f8); + HW_Set_IF_Synthesizer(pObj, 0xbb01c9); + HW_Set_IF_Synthesizer(pObj, 0x00000A); + HW_Set_IF_Synthesizer(pObj, 0x00000B); + + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR47, 0x1E); + tmpvalue = pObj->GetReg(reg, ZD_RADIO_PD); + + tmpvalue &= ~BIT_0; + pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); + tmpvalue |= BIT_0; + pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); + pObj->SetReg(reg, ZD_RFCFG, 0x5); + pObj->DelayUs(100); + pObj->SetReg(reg, ZD_RFCFG, 0x0); + pObj->SetReg(reg, ZD_CR47, 0x1E); + UnLockPhyReg(pObj); + } else { + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR47, 0x1E); + tmpvalue = pObj->GetReg(reg, ZD_RADIO_PD); + tmpvalue &= ~BIT_0; + + pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); + tmpvalue |= BIT_0; + + + + pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); + pObj->SetReg(reg, ZD_RFCFG, 0x5); + pObj->DelayUs(100); + pObj->SetReg(reg, ZD_RFCFG, 0x0); + pObj->SetReg(reg, ZD_CR47, 0x1E); + UnLockPhyReg(pObj); + HW_Set_IF_Synthesizer(pObj, AL2210TB[ChannelNo]); + } + + pObj->SetReg(reg, ZD_PE1_PE2, 3); +} + + +void +HW_Set_AL2210_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) + +{ + void *reg = pObj->reg; + U32 tmpvalue; + + pObj->SetReg(reg, ZD_PE1_PE2, 2); + + if (!InitChOnly) { + LockPhyReg(pObj); + + + + pObj->SetReg(reg, ZD_CR9, 0xe0); + pObj->SetReg(reg, ZD_CR10, 0x91); + pObj->SetReg(reg, ZD_CR12, 0x90); + pObj->SetReg(reg, ZD_CR15, 0xd0); + pObj->SetReg(reg, ZD_CR16, 0x40); + pObj->SetReg(reg, ZD_CR17, 0x58); + pObj->SetReg(reg, ZD_CR18, 0x04); + pObj->SetReg(reg, ZD_CR23, 0x66); + pObj->SetReg(reg, ZD_CR24, 0x14); + + pObj->SetReg(reg, ZD_CR26, 0x90); + + pObj->SetReg(reg, ZD_CR31, 0x80); + pObj->SetReg(reg, ZD_CR34, 0x06); + pObj->SetReg(reg, ZD_CR35, 0x3e); + pObj->SetReg(reg, ZD_CR38, 0x38); + pObj->SetReg(reg, ZD_CR46, 0x90); + pObj->SetReg(reg, ZD_CR47, 0x1E); + pObj->SetReg(reg, ZD_CR64, 0x64); + pObj->SetReg(reg, ZD_CR79, 0xb5); + pObj->SetReg(reg, ZD_CR80, 0x38); + pObj->SetReg(reg, ZD_CR81, 0x30); + pObj->SetReg(reg, ZD_CR113, 0xc0); + pObj->SetReg(reg, ZD_CR127, 0x3); + UnLockPhyReg(pObj); + + HW_Set_IF_Synthesizer(pObj, AL2210TB[ChannelNo]); + + HW_Set_IF_Synthesizer(pObj, 0x00fcb1); + HW_Set_IF_Synthesizer(pObj, 0x358132); + HW_Set_IF_Synthesizer(pObj, 0x0108b3); + HW_Set_IF_Synthesizer(pObj, 0xc77804); + HW_Set_IF_Synthesizer(pObj, 0x456415); + HW_Set_IF_Synthesizer(pObj, 0xff2226); + HW_Set_IF_Synthesizer(pObj, 0x806667); + HW_Set_IF_Synthesizer(pObj, 0x7860f8); + HW_Set_IF_Synthesizer(pObj, 0xbb01c9); + HW_Set_IF_Synthesizer(pObj, 0x00000A); + HW_Set_IF_Synthesizer(pObj, 0x00000B); + + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR47, 0x1E); + tmpvalue = pObj->GetReg(reg, ZD_RADIO_PD); + tmpvalue &= ~BIT_0; + pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); + + tmpvalue |= BIT_0; + pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); + pObj->SetReg(reg, ZD_RFCFG, 0x5); + pObj->DelayUs(100); + pObj->SetReg(reg, ZD_RFCFG, 0x0); + pObj->SetReg(reg, ZD_CR47, 0x1E); + UnLockPhyReg(pObj); + } else { + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR47, 0x1E); + tmpvalue = pObj->GetReg(reg, ZD_RADIO_PD); + tmpvalue &= ~BIT_0; + pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); + tmpvalue |= BIT_0; + pObj->SetReg(reg, ZD_RADIO_PD, tmpvalue); + pObj->SetReg(reg, ZD_RFCFG, 0x5); + pObj->DelayUs(100); + pObj->SetReg(reg, ZD_RFCFG, 0x0); + pObj->SetReg(reg, ZD_CR47, 0x1E); + UnLockPhyReg(pObj); + HW_Set_IF_Synthesizer(pObj, AL2210TB[ChannelNo]); + } + + pObj->SetReg(reg, ZD_PE1_PE2, 3); +} +//------------------------------------------------------------------------------ +// Procedure: HW_Set_AL7230B_Chips +// +// Description: +// +// Arguments: +// Adapter - ptr to Adapter object instance +// ChannelNo +// Initial Channel only +// +// Returns: (none) +// +// Note: +//------------------------------------------------------------------------------- +#ifndef ZD1211B +// 1211 +void HW_Set_AL7230B_RF_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly, U8 MAC_Mode) +{ + void *reg = pObj->reg; + U32 tmpValue; + U32 ChannelNo_temp; + //int i; + static u8 mOldMacMode = MIXED_MODE; + U16 WriteAddr[256]; + U16 WriteData[256]; + U16 WriteIndex = 0; + + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR240, 0x57); + UnLockPhyReg(pObj); + + tmpValue = pObj->GetReg(reg, CtlReg1); + tmpValue &= ~0x80; + pObj->SetReg(reg, CtlReg1, tmpValue); + + if (!InitChOnly) { + mFILL_WRITE_REGISTER( ZD_CR15, 0x20); + mFILL_WRITE_REGISTER( ZD_CR23, 0x40); + mFILL_WRITE_REGISTER( ZD_CR24, 0x20); + mFILL_WRITE_REGISTER( ZD_CR26, 0x11); + mFILL_WRITE_REGISTER( ZD_CR28, 0x3e); + mFILL_WRITE_REGISTER( ZD_CR29, 0x00); + mFILL_WRITE_REGISTER( ZD_CR44, 0x33); + mFILL_WRITE_REGISTER( ZD_CR106, 0x22); //from 0x2a to 0x22 for AL7230B + mFILL_WRITE_REGISTER( ZD_CR107, 0x1a); + mFILL_WRITE_REGISTER( ZD_CR109, 0x9); + mFILL_WRITE_REGISTER( ZD_CR110, 0x27); + mFILL_WRITE_REGISTER( ZD_CR111, 0x2b); + mFILL_WRITE_REGISTER( ZD_CR112, 0x2b); + mFILL_WRITE_REGISTER( ZD_CR119, 0xa); + mFILL_WRITE_REGISTER( ZD_CR122, 0xfc); //from /e0 to fc for AL7230B + mFILL_WRITE_REGISTER( ZD_CR10, 0x89); + mFILL_WRITE_REGISTER( ZD_CR17, 0x28); + mFILL_WRITE_REGISTER( ZD_CR26, 0x93); + mFILL_WRITE_REGISTER( ZD_CR34, 0x30); + mFILL_WRITE_REGISTER( ZD_CR35, 0x3E); + mFILL_WRITE_REGISTER( ZD_CR41, 0x24); + mFILL_WRITE_REGISTER( ZD_CR44, 0x32); + mFILL_WRITE_REGISTER( ZD_CR46, 0x96); + mFILL_WRITE_REGISTER( ZD_CR47, 0x1e); + mFILL_WRITE_REGISTER( ZD_CR79, 0x58); + mFILL_WRITE_REGISTER( ZD_CR80, 0x30); + mFILL_WRITE_REGISTER( ZD_CR81, 0x30); + mFILL_WRITE_REGISTER( ZD_CR87, 0x0A); + mFILL_WRITE_REGISTER( ZD_CR89, 0x04); + mFILL_WRITE_REGISTER( ZD_CR92, 0x0a); + mFILL_WRITE_REGISTER( ZD_CR99, 0x28); + mFILL_WRITE_REGISTER( ZD_CR100, 0x02); + mFILL_WRITE_REGISTER( ZD_CR101, 0x13); + mFILL_WRITE_REGISTER( ZD_CR102, 0x27); + mFILL_WRITE_REGISTER( ZD_CR106, 0x22); //from 0x20 to 0x22 for AL7230B + mFILL_WRITE_REGISTER( ZD_CR107, 0x3f); + mFILL_WRITE_REGISTER( ZD_CR109, 0x09); + mFILL_WRITE_REGISTER( ZD_CR110, 0x1f); + mFILL_WRITE_REGISTER( ZD_CR111, 0x1f); + mFILL_WRITE_REGISTER( ZD_CR112, 0x1f); + mFILL_WRITE_REGISTER( ZD_CR113, 0x27); + mFILL_WRITE_REGISTER( ZD_CR114, 0x27); + mFILL_WRITE_REGISTER( ZD_CR115, 0x24); + mFILL_WRITE_REGISTER( ZD_CR116, 0x3f); + mFILL_WRITE_REGISTER( ZD_CR117, 0xfa); + mFILL_WRITE_REGISTER( ZD_CR118, 0xfc); + mFILL_WRITE_REGISTER( ZD_CR119, 0x10); + mFILL_WRITE_REGISTER( ZD_CR120, 0x4f); + mFILL_WRITE_REGISTER( ZD_CR121, 0x77); + mFILL_WRITE_REGISTER( ZD_CR137, 0x88); + mFILL_WRITE_REGISTER( ZD_CR138, 0xa8); + mFILL_WRITE_REGISTER( ZD_CR252, 0x34); + mFILL_WRITE_REGISTER( ZD_CR253, 0x34); + // mFILL_WRITE_REGISTER( ZD_CR240, 0x57); + + if( MAC_Mode != PURE_A_MODE ) { + mFILL_WRITE_REGISTER( ZD_CR251, 0x2f); //PLL_OFF + SET_IF_SYNTHESIZER(macp, AL7230BTB[ChannelNo*2]); + SET_IF_SYNTHESIZER(macp, AL7230BTB[ChannelNo*2+1]); + //SET_IF_SYNTHESIZER(macp, 0x8cccd0); + SET_IF_SYNTHESIZER(macp, 0x4ff821); + SET_IF_SYNTHESIZER(macp, 0xc5fbfc); + SET_IF_SYNTHESIZER(macp, 0x21ebfe); + SET_IF_SYNTHESIZER(macp, 0xaad401); + SET_IF_SYNTHESIZER(macp, 0x6cf56a); + SET_IF_SYNTHESIZER(macp, 0xe04073); + SET_IF_SYNTHESIZER(macp, 0x193d76); + SET_IF_SYNTHESIZER(macp, 0x9dd844); + SET_IF_SYNTHESIZER(macp, 0x500007); + SET_IF_SYNTHESIZER(macp, 0xd8c010); + SET_IF_SYNTHESIZER(macp, 0x3c900); + //Adapter->AL7230CCKSetFlag=0; + SET_IF_SYNTHESIZER(macp, 0xbfffff); + SET_IF_SYNTHESIZER(macp, 0x700000); + SET_IF_SYNTHESIZER(macp, 0xf15d58); + //AcquireCtrOfPhyReg(Adapter); + //ZD1205_WRITE_REGISTER(Adapter, CR251, 0x2f); //PLL_OFF + mFILL_WRITE_REGISTER( ZD_CR251, 0x3f); //PLL_ON + mFILL_WRITE_REGISTER( ZD_CR128, 0x14); + mFILL_WRITE_REGISTER( ZD_CR129, 0x12); + mFILL_WRITE_REGISTER( ZD_CR130, 0x10); + mFILL_WRITE_REGISTER( ZD_CR38, 0x38); + mFILL_WRITE_REGISTER( ZD_CR136, 0xdf); + ///ZD1211_WRITE_MULTI_REG(Adapter, WriteAddr, WriteData, &WriteIndex); + ///NdisStallExecution(1000); + SET_IF_SYNTHESIZER(macp, 0xf15d59); + ///ZD1211_WRITE_MULTI_REG(Adapter, WriteAddr, WriteData, &WriteIndex); + ///NdisStallExecution(10000); + SET_IF_SYNTHESIZER(macp, 0xf15d5c); + ///ZD1211_WRITE_MULTI_REG(Adapter, WriteAddr, WriteData, &WriteIndex); + ///NdisStallExecution(10000); + SET_IF_SYNTHESIZER(macp, 0xf15d58); + } else { + mFILL_WRITE_REGISTER( ZD_CR251, 0x2f); // shdnb(PLL_ON)=0 + if((34 <= ChannelNo) && (ChannelNo <= 48)) { + ChannelNo_temp=(ChannelNo/2)-13; + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4]); + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+1]); + } else { + ChannelNo_temp=(ChannelNo/4)-1; + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4]); + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+1]); + } + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+3]); + SET_IF_SYNTHESIZER(macp, 0x47f8a2); + SET_IF_SYNTHESIZER(macp, 0xc5fbfa); + //SET_IF_SYNTHESIZER(macp, 0x21ebf6); + SET_IF_SYNTHESIZER(macp, 0xaafca1); + SET_IF_SYNTHESIZER(macp, 0x6cf56a); + SET_IF_SYNTHESIZER(macp, 0xe04073); + SET_IF_SYNTHESIZER(macp, 0x193d76); + SET_IF_SYNTHESIZER(macp, 0x9dd844); + SET_IF_SYNTHESIZER(macp, 0x500607); + SET_IF_SYNTHESIZER(macp, 0xd8c010); + if((48 < ChannelNo) && (ChannelNo < 184)) { + SET_IF_SYNTHESIZER(macp, 0x3c2800); + } else { + SET_IF_SYNTHESIZER(macp, 0x3e2800); + } + SET_IF_SYNTHESIZER(macp, 0xbfffff); + SET_IF_SYNTHESIZER(macp, 0x700000); + SET_IF_SYNTHESIZER(macp, 0xf35d48); + //AcquireCtrOfPhyReg(Adapter); + //ZD1205_WRITE_REGISTER(Adapter, CR251, 0x2f); // shdnb(PLL_ON)=0 + mFILL_WRITE_REGISTER( ZD_CR251, 0x3f); // shdnb(PLL_ON)=1 + mFILL_WRITE_REGISTER( ZD_CR128, 0x12); + mFILL_WRITE_REGISTER( ZD_CR129, 0x10); + mFILL_WRITE_REGISTER( ZD_CR130, 0x10); + mFILL_WRITE_REGISTER( ZD_CR38, 0x7f); + mFILL_WRITE_REGISTER( ZD_CR136, 0x5f); + ///ZD1211_WRITE_MULTI_REG(Adapter, WriteAddr, WriteData, &WriteIndex); + ///NdisStallExecution(1000); + SET_IF_SYNTHESIZER(macp, 0xf15d59); + ///ZD1211_WRITE_MULTI_REG(Adapter, WriteAddr, WriteData, &WriteIndex); + ///NdisStallExecution(10000); + SET_IF_SYNTHESIZER(macp, 0xf15d5c); + ///ZD1211_WRITE_MULTI_REG(Adapter, WriteAddr, WriteData, &WriteIndex); + ///NdisStallExecution(10000); + SET_IF_SYNTHESIZER(macp, 0xf35d48); + } + + } else { + if( MAC_Mode != PURE_A_MODE ) { + mFILL_WRITE_REGISTER( ZD_CR251, 0x2f); //PLL_OFF + //SET_IF_SYNTHESIZER(macp, 0x0b3331); + if ( 1 || mOldMacMode != MAC_Mode ) { + SET_IF_SYNTHESIZER(macp, 0x4ff821); + SET_IF_SYNTHESIZER(macp, 0xc5fbfc); + SET_IF_SYNTHESIZER(macp, 0x21ebfe); + SET_IF_SYNTHESIZER(macp, 0xaad401); + SET_IF_SYNTHESIZER(macp, 0x6cf56a); + SET_IF_SYNTHESIZER(macp, 0xe04073); + SET_IF_SYNTHESIZER(macp, 0x193d76); + SET_IF_SYNTHESIZER(macp, 0x9dd844); + SET_IF_SYNTHESIZER(macp, 0x500007); + SET_IF_SYNTHESIZER(macp, 0xd8c010); + SET_IF_SYNTHESIZER(macp, 0x3c9000); + SET_IF_SYNTHESIZER(macp, 0xf15d58); + + mFILL_WRITE_REGISTER( ZD_CR128, 0x14); + mFILL_WRITE_REGISTER( ZD_CR129, 0x12); + mFILL_WRITE_REGISTER( ZD_CR130, 0x10); + mFILL_WRITE_REGISTER( ZD_CR38, 0x38); + mFILL_WRITE_REGISTER( ZD_CR136, 0xdf); + mOldMacMode = MAC_Mode; + } + //Adapter->AL7230CCKSetFlag=0; + SET_IF_SYNTHESIZER(macp, AL7230BTB[ChannelNo*2]); + SET_IF_SYNTHESIZER(macp, AL7230BTB[ChannelNo*2+1]); + SET_IF_SYNTHESIZER(macp, 0x3c9000); + mFILL_WRITE_REGISTER( ZD_CR251, 0x3f); //PLL_ON + } else { + mFILL_WRITE_REGISTER( ZD_CR251, 0x2f); // shdnb(PLL_ON)=0 + + if ( 1 || mOldMacMode != MAC_Mode ) { + SET_IF_SYNTHESIZER(macp, 0x47f8a2); + SET_IF_SYNTHESIZER(macp, 0xc5fbfa); + SET_IF_SYNTHESIZER(macp, 0xaafca1); + SET_IF_SYNTHESIZER(macp, 0x6cf56a); + SET_IF_SYNTHESIZER(macp, 0xe04073); + SET_IF_SYNTHESIZER(macp, 0x193d76); + SET_IF_SYNTHESIZER(macp, 0x9dd844); + SET_IF_SYNTHESIZER(macp, 0x500607); + SET_IF_SYNTHESIZER(macp, 0xd8c010); + SET_IF_SYNTHESIZER(macp, 0xf35d48); + mFILL_WRITE_REGISTER( ZD_CR128, 0x12); + mFILL_WRITE_REGISTER( ZD_CR129, 0x10); + mFILL_WRITE_REGISTER( ZD_CR130, 0x10); + mFILL_WRITE_REGISTER( ZD_CR38, 0x7f); + mFILL_WRITE_REGISTER( ZD_CR136, 0x5f); + mOldMacMode = MAC_Mode; + } + + if((48 < ChannelNo) && (ChannelNo < 184)) { + SET_IF_SYNTHESIZER(macp, 0x3c2800); + } else { + SET_IF_SYNTHESIZER(macp, 0x3e2800); + } + + if((34 <= ChannelNo) && (ChannelNo <= 48)) { + ChannelNo_temp=(ChannelNo/2)-13; + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4]); + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+1]); + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+3]); + } else { + ChannelNo_temp=(ChannelNo/4)-1; + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4]); + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+1]); + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+3]); + } + + mFILL_WRITE_REGISTER( ZD_CR251, 0x3f); //PLL_ON + } + + } + + mFILL_WRITE_REGISTER( ZD_CR203, 0x06); + ZD1211_WRITE_MULTI_REG(WriteAddr, WriteData, &WriteIndex); + + + + tmpValue = pObj->GetReg(reg, CtlReg1); + tmpValue |= ~0x80; + pObj->SetReg(reg, CtlReg1, tmpValue); + + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR240, 0x80); + + pObj->CR203Flag = 2; + if (pObj->HWFeature & BIT_8) //CR47 CCK gain patch + { + tmpValue = pObj->GetReg(reg, E2P_PHY_REG); + pObj->SetReg(reg, ZD_CR47, (tmpValue & 0xff)); //This feature is OK to be overwritten with a lower value by other feature + } + if (pObj->HWFeature & BIT_21) //6321 for FCC regulation, enabled per HWFeature 6M band edge bit (for AL2230, AL2230S) + { + if (ChannelNo == 1 || ChannelNo == 11) //MARK_003, band edge, these may depend on PCB layout + { + pObj->SetReg(reg, ZD_CR128, 0x12); + pObj->SetReg(reg, ZD_CR129, 0x12); + pObj->SetReg(reg, ZD_CR130, 0x10); + pObj->SetReg(reg, ZD_CR47, 0x1E); + } else //(ChannelNo 2 ~ 10, 12 ~ 14) + { + pObj->SetReg(reg, ZD_CR128, 0x14); + pObj->SetReg(reg, ZD_CR129, 0x12); + pObj->SetReg(reg, ZD_CR130, 0x10); + pObj->SetReg(reg, ZD_CR47, 0x1E); + } + } + + UnLockPhyReg(pObj); + + // pObj->CR31Flag = 2; + // macp->PHY_G_6M_BandEdge_Flag = 0; + // if(macp->PHY_36M_Setpoint_Flag != 0) + // { + // for(i=0;i<16;i++) + // macp->a_Calibration_Data[2][i] = macp->PHY_36M_A_Calibration_Setpoint[i]; + // for(i=0;i<32;i++) + // macp->a_Interpolation_Data[2][i] = macp->PHY_36M_A_Interpolation_Setpoint[i]; + // macp->PHY_36M_Setpoint_Flag = 0; + // } + } +#else +// 1215 +void HW_Set_AL7230B_RF_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly, U8 MAC_Mode) +{ + void *reg = pObj->reg; + U32 tmpValue; + U32 ChannelNo_temp; + int i; + static u8 mOldMacMode = MIXED_MODE; + U16 WriteAddr[256]; + U16 WriteData[256]; + U16 WriteIndex = 0; + + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR240, 0x57); + pObj->SetReg(reg, ZD_CR9, 0xe0); + UnLockPhyReg(pObj); + + tmpValue = pObj->GetReg(reg, CtlReg1); + tmpValue &= ~0x80; + pObj->SetReg(reg, CtlReg1, tmpValue); + + + if (!InitChOnly) { + //mFILL_WRITE_REGISTER( ZD_CR9, 0xe0);//5119 + mFILL_WRITE_REGISTER( ZD_CR10, 0x89); + mFILL_WRITE_REGISTER( ZD_CR15, 0x20); + mFILL_WRITE_REGISTER( ZD_CR17, 0x2B);//for newest(3rd cut)AL2230 + mFILL_WRITE_REGISTER( ZD_CR20, 0x10);//4N25->Stone Request + mFILL_WRITE_REGISTER( ZD_CR23, 0x40); + mFILL_WRITE_REGISTER( ZD_CR24, 0x20); + mFILL_WRITE_REGISTER( ZD_CR26, 0x93); + mFILL_WRITE_REGISTER( ZD_CR28, 0x3e); + mFILL_WRITE_REGISTER( ZD_CR29, 0x00); + mFILL_WRITE_REGISTER( ZD_CR33, 0x28); //5613 + mFILL_WRITE_REGISTER( ZD_CR34, 0x30); + mFILL_WRITE_REGISTER( ZD_CR35, 0x3e); //for newest(3rd cut) AL2230 + mFILL_WRITE_REGISTER( ZD_CR41, 0x24); + mFILL_WRITE_REGISTER( ZD_CR44, 0x32); + mFILL_WRITE_REGISTER( ZD_CR46, 0x99); //for newest(3rd cut) AL2230 + mFILL_WRITE_REGISTER( ZD_CR47, 0x1e); + mFILL_WRITE_REGISTER( ZD_CR48, 0x00); //ZD1215 5610 + mFILL_WRITE_REGISTER( ZD_CR49, 0x00); //ZD1215 5610 + mFILL_WRITE_REGISTER( ZD_CR51, 0x01); //ZD1215 5610 + mFILL_WRITE_REGISTER( ZD_CR52, 0x80); //ZD1215 5610 + mFILL_WRITE_REGISTER( ZD_CR53, 0x7e); //ZD1215 5610 + mFILL_WRITE_REGISTER( ZD_CR65, 0x00); //ZD1215 5610 + mFILL_WRITE_REGISTER( ZD_CR66, 0x00); //ZD1215 5610 + mFILL_WRITE_REGISTER( ZD_CR67, 0x00); //ZD1215 5610 + mFILL_WRITE_REGISTER( ZD_CR68, 0x00); //ZD1215 5610 + mFILL_WRITE_REGISTER( ZD_CR69, 0x28); //ZD1215 5610 + mFILL_WRITE_REGISTER( ZD_CR79, 0x58); + mFILL_WRITE_REGISTER( ZD_CR80, 0x30); + mFILL_WRITE_REGISTER( ZD_CR81, 0x30); + mFILL_WRITE_REGISTER( ZD_CR87, 0x0A); + mFILL_WRITE_REGISTER( ZD_CR89, 0x04); + mFILL_WRITE_REGISTER( ZD_CR90, 0x58); //5112 + mFILL_WRITE_REGISTER( ZD_CR91, 0x00); //5613 + mFILL_WRITE_REGISTER( ZD_CR92, 0x0a); + mFILL_WRITE_REGISTER( ZD_CR98, 0x8d); //4804, for 1212 new algorithm + mFILL_WRITE_REGISTER( ZD_CR99, 0x00); + mFILL_WRITE_REGISTER( ZD_CR100, 0x02); + mFILL_WRITE_REGISTER( ZD_CR101, 0x13); + mFILL_WRITE_REGISTER( ZD_CR102, 0x27); + mFILL_WRITE_REGISTER( ZD_CR106, 0x20); // change to 0x24 for AL7230B + mFILL_WRITE_REGISTER( ZD_CR107, 0x28); + mFILL_WRITE_REGISTER( ZD_CR109, 0x13); //4804, for 1212 new algorithm + mFILL_WRITE_REGISTER( ZD_CR110, 0x1f); //5127, 0x13->0x1f + mFILL_WRITE_REGISTER( ZD_CR111, 0x1f); //0x13 to 0x1f for AL7230B + mFILL_WRITE_REGISTER( ZD_CR112, 0x1f); + mFILL_WRITE_REGISTER( ZD_CR113, 0x27); + mFILL_WRITE_REGISTER( ZD_CR114, 0x27); + mFILL_WRITE_REGISTER( ZD_CR115, 0x24); + mFILL_WRITE_REGISTER( ZD_CR116, 0x2a); + mFILL_WRITE_REGISTER( ZD_CR117, 0xfa); + mFILL_WRITE_REGISTER( ZD_CR118, 0xfa); + mFILL_WRITE_REGISTER( ZD_CR119, 0x12); + mFILL_WRITE_REGISTER( ZD_CR120, 0x4f); + mFILL_WRITE_REGISTER( ZD_CR121, 0x6c); //5613 + mFILL_WRITE_REGISTER( ZD_CR122, 0xfc); // E0->FCh at 4901 + mFILL_WRITE_REGISTER( ZD_CR123, 0x57); //5613 + mFILL_WRITE_REGISTER( ZD_CR125, 0xad); //4804, for 1212 new algorithm + mFILL_WRITE_REGISTER( ZD_CR126, 0x6c); //5613 + mFILL_WRITE_REGISTER( ZD_CR127, 0x03); //4804, for 1212 new algorithm + mFILL_WRITE_REGISTER( ZD_CR130, 0x10); + mFILL_WRITE_REGISTER( ZD_CR131, 0x00); //5112 + mFILL_WRITE_REGISTER( ZD_CR137, 0x50); //5613 + mFILL_WRITE_REGISTER( ZD_CR138, 0xa8); //5112 + mFILL_WRITE_REGISTER( ZD_CR144, 0xac); //5613 + mFILL_WRITE_REGISTER( ZD_CR148, 0x40); //5112 + mFILL_WRITE_REGISTER( ZD_CR149, 0x40); //4O07, 50->40 + mFILL_WRITE_REGISTER( ZD_CR150, 0x1a); //5112, 0C->1A + + + mFILL_WRITE_REGISTER( ZD_CR252, 0x34); + mFILL_WRITE_REGISTER( ZD_CR253, 0x34); + //mFILL_WRITE_REGISTER( ZD_CR240, 0x57); + if( MAC_Mode != PURE_A_MODE ) { + mFILL_WRITE_REGISTER( ZD_CR251, 0x2f); //PLL_OFF + SET_IF_SYNTHESIZER(macp, AL7230BTB[ChannelNo*2]); + SET_IF_SYNTHESIZER(macp, AL7230BTB[ChannelNo*2+1]); + //SET_IF_SYNTHESIZER(macp, 0x8cccd0); + SET_IF_SYNTHESIZER(macp, 0x4ff821); + SET_IF_SYNTHESIZER(macp, 0xc5fbfc); + SET_IF_SYNTHESIZER(macp, 0x21ebfe); + SET_IF_SYNTHESIZER(macp, 0xaad401); + SET_IF_SYNTHESIZER(macp, 0x6cf56a); + SET_IF_SYNTHESIZER(macp, 0xe04073); + SET_IF_SYNTHESIZER(macp, 0x190d76); + SET_IF_SYNTHESIZER(macp, 0x9dd844); + SET_IF_SYNTHESIZER(macp, 0x500007); + SET_IF_SYNTHESIZER(macp, 0xd8c010); + SET_IF_SYNTHESIZER(macp, 0x3c900); + //Adapter->AL7230CCKSetFlag=0; + SET_IF_SYNTHESIZER(macp, 0xbfffff); + SET_IF_SYNTHESIZER(macp, 0x700000); + SET_IF_SYNTHESIZER(macp, 0xf15d58); + //AcquireCtrOfPhyReg(Adapter); + //mFILL_WRITE_REGISTER( ZD_CR251, 0x2f); //PLL_OFF + mFILL_WRITE_REGISTER( ZD_CR251, 0x7f); //PLL_ON + mFILL_WRITE_REGISTER( ZD_CR128, 0x14); + mFILL_WRITE_REGISTER( ZD_CR129, 0x12); + mFILL_WRITE_REGISTER( ZD_CR130, 0x10); + mFILL_WRITE_REGISTER( ZD_CR38, 0x38); + mFILL_WRITE_REGISTER( ZD_CR136, 0xdf); + //NdisStallExecution(1000); + SET_IF_SYNTHESIZER(macp, 0xf15d59); + //NdisStallExecution(10000); + SET_IF_SYNTHESIZER(macp, 0xf15d5c); + //NdisStallExecution(10000); + SET_IF_SYNTHESIZER(macp, 0xf15d58); + } else { + mFILL_WRITE_REGISTER( ZD_CR251, 0x2f); // shdnb(PLL_ON)=0 + if((34 <= ChannelNo) && (ChannelNo <= 48)) { + ChannelNo_temp=(ChannelNo/2)-13; + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4]); + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+1]); + } else { + ChannelNo_temp=(ChannelNo/4)-1; + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4]); + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+1]); + } + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+3]); + SET_IF_SYNTHESIZER(macp, 0x47f8a2); + SET_IF_SYNTHESIZER(macp, 0xc5fbfa); + //SET_IF_SYNTHESIZER(macp, 0x21ebf6); + SET_IF_SYNTHESIZER(macp, 0xaafca1); + SET_IF_SYNTHESIZER(macp, 0x6cf56a); + SET_IF_SYNTHESIZER(macp, 0xe04073); + SET_IF_SYNTHESIZER(macp, 0x190d36); + SET_IF_SYNTHESIZER(macp, 0x9dd844); + SET_IF_SYNTHESIZER(macp, 0x500607); + SET_IF_SYNTHESIZER(macp, 0xd8c010); + if((48 < ChannelNo) && (ChannelNo < 184)) { + SET_IF_SYNTHESIZER(macp, 0x3c2800); + } else { + SET_IF_SYNTHESIZER(macp, 0x3e2800); + } + SET_IF_SYNTHESIZER(macp, 0xbfffff); + SET_IF_SYNTHESIZER(macp, 0x700000); + SET_IF_SYNTHESIZER(macp, 0xf35d48); + //AcquireCtrOfPhyReg(Adapter); + //mFILL_WRITE_REGISTER( ZD_CR251, 0x2f); // shdnb(PLL_ON)=0 + mFILL_WRITE_REGISTER( ZD_CR251, 0x7f); // shdnb(PLL_ON)=1 + mFILL_WRITE_REGISTER( ZD_CR128, 0x12); + mFILL_WRITE_REGISTER( ZD_CR129, 0x10); + mFILL_WRITE_REGISTER( ZD_CR130, 0x10); + mFILL_WRITE_REGISTER( ZD_CR38, 0x7f); + mFILL_WRITE_REGISTER( ZD_CR136, 0x5f); + //mFILL_WRITE_REGISTER( ZD_CR31, 0x58); + + //NdisStallExecution(1000); + SET_IF_SYNTHESIZER(macp, 0xf15d59); + //NdisStallExecution(10000); + SET_IF_SYNTHESIZER(macp, 0xf15d5c); + //NdisStallExecution(10000); + SET_IF_SYNTHESIZER(macp, 0xf35d48); + } + + } else { + if( MAC_Mode != PURE_A_MODE ) { + mFILL_WRITE_REGISTER( ZD_CR251, 0x2f); //PLL_OFF + //SET_IF_SYNTHESIZER(macp, 0x8cccd0); + if ( 1 || mOldMacMode != MAC_Mode ) { + SET_IF_SYNTHESIZER(macp, 0x4ff821); + SET_IF_SYNTHESIZER(macp, 0xc5fbfc); + SET_IF_SYNTHESIZER(macp, 0x21ebfe); + SET_IF_SYNTHESIZER(macp, 0xaad401); + SET_IF_SYNTHESIZER(macp, 0x6cf56a); + SET_IF_SYNTHESIZER(macp, 0xe04073); + SET_IF_SYNTHESIZER(macp, 0x190d76); + SET_IF_SYNTHESIZER(macp, 0x9dd844); + SET_IF_SYNTHESIZER(macp, 0x500007); + SET_IF_SYNTHESIZER(macp, 0xd8c010); + SET_IF_SYNTHESIZER(macp, 0x3c9000); + SET_IF_SYNTHESIZER(macp, 0xf15d58); + //AcquireCtrOfPhyReg(Adapter); + //mFILL_WRITE_REGISTER( ZD_CR251, 0x2f); //PLL_OFF + //mFILL_WRITE_REGISTER( ZD_CR251, 0x3f); //PLL_ON + mFILL_WRITE_REGISTER( ZD_CR128, 0x14); + mFILL_WRITE_REGISTER( ZD_CR129, 0x12); + mFILL_WRITE_REGISTER( ZD_CR130, 0x10); + mFILL_WRITE_REGISTER( ZD_CR38, 0x38); + mFILL_WRITE_REGISTER( ZD_CR136, 0xdf); + mOldMacMode = MAC_Mode; + } + //Adapter->AL7230CCKSetFlag=0; + SET_IF_SYNTHESIZER(macp, AL7230BTB[ChannelNo*2]); + SET_IF_SYNTHESIZER(macp, AL7230BTB[ChannelNo*2+1]); + SET_IF_SYNTHESIZER(macp, 0x3c9000); + mFILL_WRITE_REGISTER( ZD_CR251, 0x7f); //PLL_ON + + //NdisStallExecution(10); + //SET_IF_SYNTHESIZER(macp, 0xf15d59); + //NdisStallExecution(100); + //SET_IF_SYNTHESIZER(macp, 0xf15d5c); + //NdisStallExecution(100); + //SET_IF_SYNTHESIZER(macp, 0xf15d58); + } else { + mFILL_WRITE_REGISTER( ZD_CR251, 0x2f); // shdnb(PLL_ON)=0 + + if ( 1 || mOldMacMode != MAC_Mode ) { + SET_IF_SYNTHESIZER(macp, 0x47f8a2); + SET_IF_SYNTHESIZER(macp, 0xc5fbfa); + //SET_IF_SYNTHESIZER(macp, 0x21ebf6); + SET_IF_SYNTHESIZER(macp, 0xaafca1); + SET_IF_SYNTHESIZER(macp, 0x6cf56a); + SET_IF_SYNTHESIZER(macp, 0xe04073); + SET_IF_SYNTHESIZER(macp, 0x190d36); + SET_IF_SYNTHESIZER(macp, 0x9dd844); + SET_IF_SYNTHESIZER(macp, 0x500607); + SET_IF_SYNTHESIZER(macp, 0xd8c010); + SET_IF_SYNTHESIZER(macp, 0xf35d48); + //AcquireCtrOfPhyReg(Adapter); + //mFILL_WRITE_REGISTER( ZD_CR251, 0x2f); // shdnb(PLL_ON)=0 + //mFILL_WRITE_REGISTER( ZD_CR251, 0x3f); // shdnb(PLL_ON)=1 + mFILL_WRITE_REGISTER( ZD_CR128, 0x12); + mFILL_WRITE_REGISTER( ZD_CR129, 0x10); + mFILL_WRITE_REGISTER( ZD_CR130, 0x10); + mFILL_WRITE_REGISTER( ZD_CR38, 0x7f); + mFILL_WRITE_REGISTER( ZD_CR136, 0x5f); + mOldMacMode = MAC_Mode; + } + if((48 < ChannelNo) && (ChannelNo < 184)) { + SET_IF_SYNTHESIZER(macp, 0x3c2800); + } else { + SET_IF_SYNTHESIZER(macp, 0x3e2800); + } + if((34 <= ChannelNo) && (ChannelNo <= 48)) { + ChannelNo_temp=(ChannelNo/2)-13; + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4]); + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+1]); + //SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+2]); + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+3]); + // SET_IF_SYNTHESIZER(macp, 0x3c2800); + } else { + ChannelNo_temp=(ChannelNo/4)-1; + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4]); + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+1]); + //SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+2]); + SET_IF_SYNTHESIZER(macp, AL7230BTB_a[ChannelNo_temp*4+3]); + //SET_IF_SYNTHESIZER(macp, 0x3c2800); + } + mFILL_WRITE_REGISTER( ZD_CR251, 0x7f); //PLL_ON + //ZD1205_WRITE_REGISTER(Adapter, CR31, 0x58); + + //NdisStallExecution(10); + //SET_IF_SYNTHESIZER(macp, 0xf15d59); + //NdisStallExecution(100); + //SET_IF_SYNTHESIZER(macp, 0xf15d5c); + //NdisStallExecution(100); + //SET_IF_SYNTHESIZER(macp, 0xf35d58); + } + + } + //ZD1205_WRITE_REGISTER(Adapter,CR138, 0x28); + mFILL_WRITE_REGISTER( ZD_CR203, 0x06); + ZD1211_WRITE_MULTI_REG(WriteAddr, WriteData, &WriteIndex); + + tmpValue = pObj->GetReg(reg, CtlReg1); + tmpValue |= ~0x80; + pObj->SetReg(reg, CtlReg1, tmpValue); + + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR240, 0x80); + //if(macp->PHYNEWLayout) + // pObj->SetReg(reg, ZD_CR9, 0xe1); + pObj->SetReg(reg, ZD_CR203, 0x06); + + + pObj->CR203Flag = 2; + pObj->CR31Flag = 2; + + if (pObj->HWFeature & BIT_8) //CR47 CCK gain patch + { + tmpValue = pObj->GetReg(reg, E2P_PHY_REG); + pObj->SetReg(reg, ZD_CR47, (tmpValue & 0xff)); //This feature is OK to be overwritten with a lower value by other feature + } + if (pObj->HWFeature & BIT_21) //6321 for FCC regulation, enabled per HWFeature 6M band edge bit (for AL2230, AL2230S) + { + if (ChannelNo == 1 || ChannelNo == 11) //MARK_003, band edge, these may depend on PCB layout + { + pObj->SetReg(reg, ZD_CR128, 0x12); + pObj->SetReg(reg, ZD_CR129, 0x12); + pObj->SetReg(reg, ZD_CR130, 0x10); + pObj->SetReg(reg, ZD_CR47, 0x1E); + } else //(ChannelNo 2 ~ 10, 12 ~ 14) + { + pObj->SetReg(reg, ZD_CR128, 0x14); + pObj->SetReg(reg, ZD_CR129, 0x12); + pObj->SetReg(reg, ZD_CR130, 0x10); + pObj->SetReg(reg, ZD_CR47, 0x1E); + } + } + + UnLockPhyReg(pObj); + // macp->Change_SetPoint = 2; + // macp->PHY_G_6M_BandEdge_Flag = 0; + // if(macp->PHY_36M_Setpoint_Flag != 0) + // { + //for(i=0;i<14;i++) + // macp->SetPointOFDM[0][i] = macp->PHY_36M_G_Setpoint[i]; + // for(i=0;i<16;i++) + // macp->a_Calibration_Data[2][i] = macp->PHY_36M_A_Calibration_Setpoint[i]; + // for(i=0;i<32;i++) + // macp->a_Interpolation_Data[2][i] = macp->PHY_36M_A_Interpolation_Setpoint[i]; + // macp->PHY_36M_Setpoint_Flag = 0; + // } + + + +} +// end of AL7230B ZD1215 +#endif + +//------------------------------------------------------------------------------ +// Procedure: HW_Set_AL2232_Chips +// +// Description: +// +// Arguments: +// pObj - ptr to Adapter object instance +// ChannelNo +// Initial Channel only +// +// Returns: (none) +// +// Note: +//------------------------------------------------------------------------------- +void +HW_Set_AL2232_RF_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) +{ + void *reg = pObj->reg; + struct zd1205_private *macp = (struct zd1205_private *)g_dev->priv; + U32 tmpValue; + + if (!InitChOnly) { + LockPhyReg(pObj); + pObj->SetReg(reg,ZD_CR9, 0xE0); //5119 + pObj->SetReg(reg,ZD_CR15, 0x20); + pObj->SetReg(reg,ZD_CR23, 0x40); + pObj->SetReg(reg,ZD_CR24, 0x20); + pObj->SetReg(reg,ZD_CR26, 0x11); + pObj->SetReg(reg,ZD_CR28, 0x3e); + pObj->SetReg(reg,ZD_CR29, 0x00); + pObj->SetReg(reg,ZD_CR44, 0x33); + pObj->SetReg(reg,ZD_CR106, 0x22); // 2004/10/19 0x2a -> 0x22 + pObj->SetReg(reg,ZD_CR107, 0x1a); + pObj->SetReg(reg,ZD_CR109, 0x9); + pObj->SetReg(reg,ZD_CR110, 0x27); + pObj->SetReg(reg,ZD_CR111, 0x2b); + pObj->SetReg(reg,ZD_CR112, 0x2b); + pObj->SetReg(reg,ZD_CR119, 0xa); + + pObj->SetReg(reg,ZD_CR10, 0x89); + pObj->SetReg(reg,ZD_CR17, 0x2B); //for newest(3rd cut) AL2230 + pObj->SetReg(reg,ZD_CR20, 0x12); //4N25 -> Stone Request + pObj->SetReg(reg,ZD_CR26, 0x93); + pObj->SetReg(reg,ZD_CR34, 0x30); + pObj->SetReg(reg,ZD_CR35, 0x3E); //for newest(3rd cut) AL2230 + pObj->SetReg(reg,ZD_CR41, 0x24); + pObj->SetReg(reg,ZD_CR44, 0x32); + pObj->SetReg(reg,ZD_CR46, 0x99); //for newest(3rd cut) AL2230 + pObj->SetReg(reg,ZD_CR47, 0x1e); + pObj->SetReg(reg,ZD_CR79, 0x58); + pObj->SetReg(reg,ZD_CR80, 0x30); + pObj->SetReg(reg,ZD_CR81, 0x30); + pObj->SetReg(reg,ZD_CR87, 0x0A); + pObj->SetReg(reg,ZD_CR89, 0x04); + pObj->SetReg(reg,ZD_CR90, 0x58); //5113 + pObj->SetReg(reg,ZD_CR92, 0x0a); + pObj->SetReg(reg,ZD_CR98, 0x8d); //4804, for 1212 new algorithm + pObj->SetReg(reg,ZD_CR99, 0x28); + pObj->SetReg(reg,ZD_CR100, 0x00); + pObj->SetReg(reg,ZD_CR101, 0x13); + pObj->SetReg(reg,ZD_CR102, 0x27); + pObj->SetReg(reg,ZD_CR106, 0x22); //for newest(3rd cut) AL2230 + // 2004/10/19 0x2a -> 0x22 + pObj->SetReg(reg,ZD_CR107, 0x2A); + pObj->SetReg(reg,ZD_CR109, 0x13); //4804, for 1212 new algorithm + pObj->SetReg(reg,ZD_CR110, 0x1F); //4804, for 1212 new algorithm + pObj->SetReg(reg,ZD_CR111, 0x1F); //4804, for 1212 new algorithm + pObj->SetReg(reg,ZD_CR112, 0x1f); + pObj->SetReg(reg,ZD_CR113, 0x27); + pObj->SetReg(reg,ZD_CR114, 0x27); + pObj->SetReg(reg,ZD_CR115, 0x26); //24->26 at 4901 + pObj->SetReg(reg,ZD_CR116, 0x24); // 26->24 at 4901 + //rk pObj->SetReg(reg,ZD_CR117, 0xfa); + pObj->SetReg(reg,ZD_CR118, 0xf8); //4O07, fa->f8 + pObj->SetReg(reg,ZD_CR119, 0x10); + pObj->SetReg(reg,ZD_CR120, 0x4f); + pObj->SetReg(reg,ZD_CR121, 0x0a); //4804, for 1212 new algorithm + pObj->SetReg(reg,ZD_CR122, 0xFC); // E0->FCh at 4901 + pObj->SetReg(reg,ZD_CR125, 0xaD); //4804, for 1212 new algorithm + pObj->SetReg(reg,ZD_CR127, 0x03); //4804, for 1212 new algorithm + pObj->SetReg(reg,ZD_CR137, 0x88); + pObj->SetReg(reg,ZD_CR131, 0x00); //5113 + pObj->SetReg(reg,ZD_CR148, 0x40); //5113 + pObj->SetReg(reg,ZD_CR149, 0x40); //4O07, 50->40 + pObj->SetReg(reg,ZD_CR150, 0x1A); //5113, 0C->1A + + pObj->SetReg(reg,ZD_CR252, 0x34); + pObj->SetReg(reg,ZD_CR253, 0x34); + + UnLockPhyReg(pObj); + + HW_Set_IF_Synthesizer(pObj, AL2232TB[ChannelNo*3]); + HW_Set_IF_Synthesizer(pObj, AL2232TB[ChannelNo*3+1]); + HW_Set_IF_Synthesizer(pObj, AL2232TB[ChannelNo*3+2]); + HW_Set_IF_Synthesizer(pObj, 0x0b3331); + HW_Set_IF_Synthesizer(pObj, 0x01b802); + HW_Set_IF_Synthesizer(pObj, 0x00fff3); + HW_Set_IF_Synthesizer(pObj, 0x0005a4); + HW_Set_IF_Synthesizer(pObj, 0x044dc5); + HW_Set_IF_Synthesizer(pObj, 0x0805b6); + HW_Set_IF_Synthesizer(pObj, 0x0146C7); + HW_Set_IF_Synthesizer(pObj, 0x000688); + HW_Set_IF_Synthesizer(pObj, 0x0403b9); + HW_Set_IF_Synthesizer(pObj, 0x00dbba); + HW_Set_IF_Synthesizer(pObj, 0x00099b); + HW_Set_IF_Synthesizer(pObj, 0x0bdffc); + HW_Set_IF_Synthesizer(pObj, 0x00000d); + HW_Set_IF_Synthesizer(pObj, 0x00580f); + + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR251, 0x2f); // shdnb(PLL_ON)=0 + pObj->DelayUs(10); + UnLockPhyReg(pObj); + + //HW_Set_IF_Synthesizer(pObj, 0x000d00f); + HW_Set_IF_Synthesizer(pObj, 0x000d80f); + pObj->DelayUs(100); + HW_Set_IF_Synthesizer(pObj, 0x00780f); + pObj->DelayUs(100); + //HW_Set_IF_Synthesizer(pObj, 0x00500f); + HW_Set_IF_Synthesizer(pObj, 0x00580f); + } else { + HW_Set_IF_Synthesizer(pObj, AL2232TB[ChannelNo*3]); + HW_Set_IF_Synthesizer(pObj, AL2232TB[ChannelNo*3+1]); + HW_Set_IF_Synthesizer(pObj, AL2232TB[ChannelNo*3+2]); + } + + LockPhyReg(pObj); + if (1 )//|| macp->bContinueTx == 0) // Do not modify CR203 during CAL mode + { + pObj->SetReg(reg, ZD_CR203, 0x06); + } + + if (pObj->HWFeature & BIT_8) //CR47 CCK gain patch + { + tmpValue = pObj->GetReg(reg, E2P_PHY_REG); + pObj->SetReg(reg, ZD_CR47, (tmpValue & 0xff)); //This feature is OK to be overwritten with a lower value by other feature + } + +#if 0 //6321 TO DO + if (pObj->HWFeature & BIT_22) //6321 High power band edge for FCC regulation, enabled per HWFeature + { + if (ChannelNo == 1 || ChannelNo == 11) //these may depend on PCB layout + { + pObj->SetReg(reg, ZD_CR128, ); + pObj->SetReg(reg, ZD_CR129, ); + pObj->SetReg(reg, ZD_CR130, ); + pObj->SetReg(reg, ZD_CR47, ); + } else //(ChannelNo 2 ~ 10, 12 ~ 14) + { + pObj->SetReg(reg, ZD_CR128, ); + pObj->SetReg(reg, ZD_CR129, ); + pObj->SetReg(reg, ZD_CR130, ); + pObj->SetReg(reg, ZD_CR47, ); + } + } +#endif + + UnLockPhyReg(pObj); + + pObj->CR203Flag = 2; + pObj->CR31Flag = 2; //cCR31InitialState; + +} + +#ifdef ZD1211 +void +HW_Set_AL2230_RF_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) +{ + + void *reg = pObj->reg; + U32 tmpvalue; + + LockPhyReg(pObj); + + if (!InitChOnly) { + //LockPhyReg(pObj); +#ifdef ZD1211B + pObj->SetReg(reg, ZD_CR10, 0x89); +#endif + + pObj->SetReg(reg, ZD_CR15, 0x20); +#ifdef ZD1211B + + pObj->SetReg(reg, ZD_CR17, 0x2B); +#endif + + pObj->SetReg(reg, ZD_CR23, 0x40); + pObj->SetReg(reg, ZD_CR24, 0x20); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR26, 0x11); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR26, 0x93); +#endif + + pObj->SetReg(reg, ZD_CR28, 0x3e); + pObj->SetReg(reg, ZD_CR29, 0x00); +#ifdef ZD1211B + + pObj->SetReg(reg, ZD_CR33, 0x28); +#elif defined(ZD1211) + + pObj->SetReg(reg, ZD_CR44, 0x33); + pObj->SetReg(reg, ZD_CR106, 0x2a); + pObj->SetReg(reg, ZD_CR107, 0x1a); + pObj->SetReg(reg, ZD_CR109, 0x9); + pObj->SetReg(reg, ZD_CR110, 0x27); + pObj->SetReg(reg, ZD_CR111, 0x2b); + pObj->SetReg(reg, ZD_CR112, 0x2b); + pObj->SetReg(reg, ZD_CR119, 0xa); +#endif + +#if (defined(GCCK) && defined(OFDM)) + + pObj->SetReg(reg, ZD_CR10, 0x89); + pObj->SetReg(reg, ZD_CR17, 0x28); //for newest (3rd cut) AL2300 + pObj->SetReg(reg, ZD_CR26, 0x93); + pObj->SetReg(reg, ZD_CR34, 0x30); + pObj->SetReg(reg, ZD_CR35, 0x3E); //for newest (3rd cut) AL2300 + pObj->SetReg(reg, ZD_CR41, 0x24); + +#ifdef HOST_IF_USB + + pObj->SetReg(reg, ZD_CR44, 0x32); +#else + + pObj->SetReg(reg, ZD_CR44, 0x32); +#endif + + pObj->SetReg(reg, ZD_CR46, 0x96); //for newest (3rd cut) AL2300 + pObj->SetReg(reg, ZD_CR47, 0x1e); +#ifdef ZD1211B + + pObj->SetReg(reg,ZD_CR48, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR49, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR51, 0x01); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR52, 0x80); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR53, 0x7e); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR65, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR66, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR67, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR68, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR69, 0x28); //ZD1211B 05.06.10 +#endif + + pObj->SetReg(reg, ZD_CR79, 0x58); + pObj->SetReg(reg, ZD_CR80, 0x30); + pObj->SetReg(reg, ZD_CR81, 0x30); + pObj->SetReg(reg, ZD_CR87, 0x0A); + pObj->SetReg(reg, ZD_CR89, 0x04); + + + pObj->SetReg(reg, ZD_CR92, 0x0a); + pObj->SetReg(reg, ZD_CR99, 0x28); + pObj->SetReg(reg, ZD_CR100, 0x00); + pObj->SetReg(reg, ZD_CR101, 0x13); + pObj->SetReg(reg, ZD_CR102, 0x27); + pObj->SetReg(reg, ZD_CR106, 0x24); + pObj->SetReg(reg, ZD_CR107, 0x2A); + pObj->SetReg(reg, ZD_CR109, 0x09); + pObj->SetReg(reg, ZD_CR110, 0x13); + pObj->SetReg(reg, ZD_CR111, 0x1f); + pObj->SetReg(reg, ZD_CR112, 0x1f); + pObj->SetReg(reg, ZD_CR113, 0x27); + pObj->SetReg(reg, ZD_CR114, 0x27); + pObj->SetReg(reg, ZD_CR115, 0x24); //for newest (3rd cut) AL2300 + pObj->SetReg(reg, ZD_CR116, 0x24); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR117, 0xf4); + pObj->SetReg(reg, ZD_CR118, 0xfc); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR117, 0xfa); + pObj->SetReg(reg, ZD_CR118, 0xfa); +#endif + + pObj->SetReg(reg, ZD_CR119, 0x10); + pObj->SetReg(reg, ZD_CR120, 0x4f); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR121, 0x77); + pObj->SetReg(reg, ZD_CR122, 0xe0); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR121, 0x6c); + pObj->SetReg(reg, ZD_CR122, 0xfc); +#endif + + pObj->SetReg(reg, ZD_CR137, 0x88); +#ifndef HOST_IF_USB + + pObj->SetReg(reg, ZD_CR150, 0x0D); +#endif +#elif (defined(ECCK_60_5)) + + pObj->SetReg(reg, ZD_CR47, 0x1E); + pObj->SetReg(reg, ZD_CR106, 0x04); + pObj->SetReg(reg, ZD_CR107, 0x00); + pObj->SetReg(reg, ZD_CR14, 0x80); + pObj->SetReg(reg, ZD_CR10, 0x89); + pObj->SetReg(reg, ZD_CR11, 0x00); + pObj->SetReg(reg, ZD_CR161, 0x28); + pObj->SetReg(reg, ZD_CR162, 0x26); + + pObj->SetReg(reg, ZD_CR24, 0x0e); + pObj->SetReg(reg, ZD_CR41, 0x24); + pObj->SetReg(reg, ZD_CR159, 0x93); + pObj->SetReg(reg, ZD_CR160, 0xfc); + pObj->SetReg(reg, ZD_CR161, 0x20); + pObj->SetReg(reg, ZD_CR162, 0x26); +#endif + + pObj->SetReg(reg, ZD_CR252, 0xff); + pObj->SetReg(reg, ZD_CR253, 0xff); + + //UnLockPhyReg(pObj); + + if (pObj->rfMode == AL2230S_RF) { + pObj->SetReg(reg, ZD_CR47 , 0x1E); //MARK_002 + pObj->SetReg(reg, ZD_CR106, 0x22); + pObj->SetReg(reg, ZD_CR107, 0x2A); //MARK_002 + pObj->SetReg(reg, ZD_CR109, 0x13); //MARK_002 + pObj->SetReg(reg, ZD_CR118, 0xF8); //MARK_002 + pObj->SetReg(reg, ZD_CR119, 0x12); + pObj->SetReg(reg, ZD_CR122, 0xE0); + pObj->SetReg(reg, ZD_CR128, 0x10); //MARK_001 from 0xe->0x10 + pObj->SetReg(reg, ZD_CR129, 0x0E); //MARK_001 from 0xd->0x0e + pObj->SetReg(reg, ZD_CR130, 0x10); //MARK_001 from 0xb->0x0d + } + + HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3]); + HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+1]); + HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+2]); + HW_Set_IF_Synthesizer(pObj, 0x0b3331); + HW_Set_IF_Synthesizer(pObj, 0x03b812); + HW_Set_IF_Synthesizer(pObj, 0x00fff3); + if (pObj->rfMode == AL2230S_RF) + HW_Set_IF_Synthesizer(pObj, 0x000824); //improve band edge for AL2230S + else + HW_Set_IF_Synthesizer(pObj, 0x0005a4); + + HW_Set_IF_Synthesizer(pObj, 0x000da4); + HW_Set_IF_Synthesizer(pObj, 0x04edc5); + HW_Set_IF_Synthesizer(pObj, 0x0805b6); + HW_Set_IF_Synthesizer(pObj, 0x011687); + HW_Set_IF_Synthesizer(pObj, 0x000688); + HW_Set_IF_Synthesizer(pObj, 0x0403b9); //External control TX power (CR31) + HW_Set_IF_Synthesizer(pObj, 0x00dbba); + HW_Set_IF_Synthesizer(pObj, 0x00099b); + HW_Set_IF_Synthesizer(pObj, 0x0bdffc); + HW_Set_IF_Synthesizer(pObj, 0x00000d); + HW_Set_IF_Synthesizer(pObj, 0x00500f); + + //LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR251, 0x2f); // shdnb(PLL_ON)=0 + pObj->SetReg(reg, ZD_CR251, 0x3f); // shdnb(PLL_ON)=1 + pObj->DelayUs(10); + //UnLockPhyReg(pObj); + HW_Set_IF_Synthesizer(pObj, 0x000d00f); + pObj->DelayUs(100); + HW_Set_IF_Synthesizer(pObj, 0x0004c0f); + pObj->DelayUs(100); + HW_Set_IF_Synthesizer(pObj, 0x00540f); + pObj->DelayUs(100); + HW_Set_IF_Synthesizer(pObj, 0x00700f); + pObj->DelayUs(100); + HW_Set_IF_Synthesizer(pObj, 0x00500f); + + } else { + HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3]); + HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+1]); + HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+2]); + } + + //LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR138, 0x28); + pObj->SetReg(reg, ZD_CR203, 0x06); + //UnLockPhyReg(pObj); + pObj->CR203Flag = 2; + pObj->CR31Flag = 2; + if (pObj->HWFeature & BIT_8) //CR47 CCK gain patch + { + tmpvalue = pObj->GetReg(reg, E2P_PHY_REG); + pObj->SetReg(reg, ZD_CR47, (tmpvalue & 0xff)); //This feature is OK to be overwritten with a lower value by other feature + } + + if (pObj->HWFeature & BIT_21) //6321 for FCC regulation, enabled per HWFeature 6M band edge bit (for AL2230, AL2230S) + { + if (ChannelNo == 1 || ChannelNo == 11) //MARK_003, band edge, these may depend on PCB layout + { + pObj->SetReg(reg, ZD_CR128, 0x12); + pObj->SetReg(reg, ZD_CR129, 0x12); + pObj->SetReg(reg, ZD_CR130, 0x10); + pObj->SetReg(reg, ZD_CR47, 0x1E); + } else //(ChannelNo 2 ~ 10, 12 ~ 14) + { + pObj->SetReg(reg, ZD_CR128, 0x14); + pObj->SetReg(reg, ZD_CR129, 0x12); + pObj->SetReg(reg, ZD_CR130, 0x10); + pObj->SetReg(reg, ZD_CR47, 0x1E); + } + } + + +#if !( (defined(OFDM) && defined(GCCK)) || defined(ECCK_60_5) ) + pObj->SetReg(reg, ZD_PE1_PE2, 3); +#endif + + UnLockPhyReg(pObj); +} +#elif defined(ZD1211B) +void +HW_Set_AL2230_RF_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) +{ + //ZDMacLog("HW_Set_AL2230_RF_Chips\n"); + + void *reg = pObj->reg; + U32 tmpValue; + + LockPhyReg(pObj); + + + //++ + //1211b---------------- + + if (!InitChOnly) { + //LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR10, 0x89); + pObj->SetReg(reg, ZD_CR15, 0x20); + pObj->SetReg(reg, ZD_CR17, 0x2B); //for newest(3rd cut) AL2230 + pObj->SetReg(reg, ZD_CR23, 0x40); + pObj->SetReg(reg, ZD_CR24, 0x20); + pObj->SetReg(reg, ZD_CR26, 0x93); + pObj->SetReg(reg, ZD_CR28, 0x3e); + pObj->SetReg(reg, ZD_CR29, 0x00); + pObj->SetReg(reg, ZD_CR33, 0x28); //5621 + pObj->SetReg(reg, ZD_CR34, 0x30); + pObj->SetReg(reg, ZD_CR35, 0x3e); //for newest(3rd cut) AL2230 + pObj->SetReg(reg, ZD_CR41, 0x24); + pObj->SetReg(reg, ZD_CR44, 0x32); + pObj->SetReg(reg, ZD_CR46, 0x99); //for newest(3rd cut) AL2230 + pObj->SetReg(reg, ZD_CR47, 0x1e); + pObj->SetReg(reg, ZD_CR48, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg, ZD_CR49, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg, ZD_CR51, 0x01); //ZD1211B 05.06.10 + pObj->SetReg(reg, ZD_CR52, 0x80); //ZD1211B 05.06.10 + pObj->SetReg(reg, ZD_CR53, 0x7e); //ZD1211B 05.06.10 + pObj->SetReg(reg, ZD_CR65, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg, ZD_CR66, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg, ZD_CR67, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg, ZD_CR68, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg, ZD_CR69, 0x28); //ZD1211B 05.06.10 + pObj->SetReg(reg, ZD_CR79, 0x58); + pObj->SetReg(reg, ZD_CR80, 0x30); + pObj->SetReg(reg, ZD_CR81, 0x30); + pObj->SetReg(reg, ZD_CR87, 0x0a); + pObj->SetReg(reg, ZD_CR89, 0x04); + pObj->SetReg(reg, ZD_CR91, 0x00); //5621 + pObj->SetReg(reg, ZD_CR92, 0x0a); + pObj->SetReg(reg, ZD_CR98, 0x8d); //4804, for 1212 new algorithm + pObj->SetReg(reg, ZD_CR99, 0x00); //5621 + pObj->SetReg(reg, ZD_CR101, 0x13); + pObj->SetReg(reg, ZD_CR102, 0x27); + pObj->SetReg(reg, ZD_CR106, 0x24); //for newest(3rd cut) AL2230 + pObj->SetReg(reg, ZD_CR107, 0x2a); + pObj->SetReg(reg, ZD_CR109, 0x13); //4804, for 1212 new algorithm + pObj->SetReg(reg, ZD_CR110, 0x1f); //4804, for 1212 new algorithm + pObj->SetReg(reg, ZD_CR111, 0x1f); + pObj->SetReg(reg, ZD_CR112, 0x1f); + pObj->SetReg(reg, ZD_CR113, 0x27); + pObj->SetReg(reg, ZD_CR114, 0x27); + pObj->SetReg(reg, ZD_CR115, 0x26); //24->26 at 4902 for newest(3rd cut) AL2230 + pObj->SetReg(reg, ZD_CR116, 0x24); + pObj->SetReg(reg, ZD_CR117, 0xfa); // for 1211b + pObj->SetReg(reg, ZD_CR118, 0xfa); // for 1211b + pObj->SetReg(reg, ZD_CR119, 0x10); + pObj->SetReg(reg, ZD_CR120, 0x4f); + pObj->SetReg(reg, ZD_CR121, 0x6c); // for 1211b + pObj->SetReg(reg, ZD_CR122, 0xfc); // E0->FC at 4902 + pObj->SetReg(reg, ZD_CR123, 0x57); //5623 + pObj->SetReg(reg, ZD_CR125, 0xad); //4804, for 1212 new algorithm + pObj->SetReg(reg, ZD_CR126, 0x6c); //5614 + pObj->SetReg(reg, ZD_CR127, 0x03); //4804, for 1212 new algorithm + pObj->SetReg(reg, ZD_CR137, 0x50); //5614 + pObj->SetReg(reg, ZD_CR138, 0xa8); + pObj->SetReg(reg, ZD_CR144, 0xac); //5621 + pObj->SetReg(reg, ZD_CR150, 0x0d); + + //-- + pObj->SetReg(reg, ZD_CR252, 0x00); + pObj->SetReg(reg, ZD_CR253, 0x00); + + //UnLockPhyReg(pObj); + if (pObj->rfMode == AL2230S_RF) { + pObj->SetReg(reg, ZD_CR47 , 0x1E); //MARK_002 + pObj->SetReg(reg, ZD_CR106, 0x22); + pObj->SetReg(reg, ZD_CR107, 0x2A); //MARK_002 + pObj->SetReg(reg, ZD_CR109, 0x13); //MARK_002 + pObj->SetReg(reg, ZD_CR118, 0xF8); //MARK_002 + pObj->SetReg(reg, ZD_CR119, 0x12); + pObj->SetReg(reg, ZD_CR122, 0xE0); + pObj->SetReg(reg, ZD_CR128, 0x10); //MARK_001 from 0xe->0x10 + pObj->SetReg(reg, ZD_CR129, 0x0E); //MARK_001 from 0xd->0x0e + pObj->SetReg(reg, ZD_CR130, 0x10); //MARK_001 from 0xb->0x0d + } + + + HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3]); + HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+1]); + HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+2]); + HW_Set_IF_Synthesizer(pObj, 0x0b3331); + HW_Set_IF_Synthesizer(pObj, 0x03b812); + HW_Set_IF_Synthesizer(pObj, 0x00fff3); + if (pObj->rfMode == AL2230S_RF) + HW_Set_IF_Synthesizer(pObj, 0x000824); //improve band edge for AL2230S + else + HW_Set_IF_Synthesizer(pObj, 0x0005a4); + + HW_Set_IF_Synthesizer(pObj, 0x044dc5); + HW_Set_IF_Synthesizer(pObj, 0x0805b6); + HW_Set_IF_Synthesizer(pObj, 0x0146c7); + HW_Set_IF_Synthesizer(pObj, 0x000688); + HW_Set_IF_Synthesizer(pObj, 0x0403b9); //External control TX power (CR31) + HW_Set_IF_Synthesizer(pObj, 0x00dbba); + HW_Set_IF_Synthesizer(pObj, 0x00099b); + HW_Set_IF_Synthesizer(pObj, 0x0bdffc); + HW_Set_IF_Synthesizer(pObj, 0x00000d); + HW_Set_IF_Synthesizer(pObj, 0x00580f); + pObj->SetReg(reg, ZD_CR47, 0x1E); + pObj->SetReg(reg, 0x464, 0x3); + pObj->DelayUs(10); + HW_Set_IF_Synthesizer(pObj, 0x000880f); + pObj->DelayUs(100); + HW_Set_IF_Synthesizer(pObj, 0x00080f); + pObj->DelayUs(100); + + pObj->SetReg(reg, 0x464, 0x00); + pObj->SetReg(reg, ZD_CR47, 0x1E); + //LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR251, 0x7f); + pObj->DelayUs(10); + //UnLockPhyReg(pObj); + HW_Set_IF_Synthesizer(pObj, 0x000d80f); + pObj->DelayUs(100); + //HW_Set_IF_Synthesizer(pObj, 0x0004c0f); + //pObj->DelayUs(100); + //HW_Set_IF_Synthesizer(pObj, 0x00540f); + //pObj->DelayUs(100); + HW_Set_IF_Synthesizer(pObj, 0x00780f); + pObj->DelayUs(100); + HW_Set_IF_Synthesizer(pObj, 0x00580f); + + + } else { + HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3]); + HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+1]); + HW_Set_IF_Synthesizer(pObj, AL2230TB[ChannelNo*3+2]); + } + + //LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR138, 0x28); + pObj->SetReg(reg, ZD_CR203, 0x06); + //UnLockPhyReg(pObj); + pObj->CR203Flag = 2; + pObj->CR31Flag = 2; + + if (pObj->HWFeature & BIT_8) //CR47 CCK gain patch + { + tmpValue = pObj->GetReg(reg, E2P_PHY_REG); + pObj->SetReg(reg, ZD_CR47, (tmpValue & 0xff)); //This feature is OK to be overwritten with a lower value by other feature + } + + if (pObj->HWFeature & BIT_21) //6321 for FCC regulation, enabled per HWFeature 6M band edge bit (for AL2230, AL2230S) + { + LockPhyReg(pObj); + if (ChannelNo == 1 || ChannelNo == 11) //MARK_003, band edge, these may depend on PCB layout + { + pObj->SetReg(reg, ZD_CR128, 0x12); + pObj->SetReg(reg, ZD_CR129, 0x12); + pObj->SetReg(reg, ZD_CR130, 0x10); + pObj->SetReg(reg, ZD_CR47, 0x1E); + } else //(ChannelNo 2 ~ 10, 12 ~ 14) + { + pObj->SetReg(reg, ZD_CR128, 0x14); + pObj->SetReg(reg, ZD_CR129, 0x12); + pObj->SetReg(reg, ZD_CR130, 0x10); + pObj->SetReg(reg, ZD_CR47, 0x1E); + } + UnLockPhyReg(pObj); + } + +#if !( (defined(OFDM) && defined(GCCK)) || defined(ECCK_60_5) ) + pObj->SetReg(reg, ZD_PE1_PE2, 3); +#endif + + UnLockPhyReg(pObj); +} + +#endif + + //2-step LNA for RF2959 -void HW_Set_RFMD_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) +void +HW_Set_RFMD_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly) { - void *reg = pObj->reg; - LockPhyReg(pObj); + void *reg = pObj->reg; + + LockPhyReg(pObj); + + // Get Phy-Config permission + if (!InitChOnly ) { + //LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR2, 0x1E); + pObj->SetReg(reg, ZD_CR9, 0x20); + //pObj->SetReg(reg, ZD_CR10, 0xB1); + pObj->SetReg(reg, ZD_CR10, 0x89); + pObj->SetReg(reg, ZD_CR11, 0x00); + pObj->SetReg(reg, ZD_CR15, 0xD0); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR17, 0x68); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR17, 0x2b); +#endif + + pObj->SetReg(reg, ZD_CR19, 0x4a); + pObj->SetReg(reg, ZD_CR20, 0x0c); + pObj->SetReg(reg, ZD_CR21, 0x0E); + pObj->SetReg(reg, ZD_CR23, 0x48); + + if (pObj->bIsNormalSize) + pObj->SetReg(reg, ZD_CR24, 0x14);//cca threshold + else + pObj->SetReg(reg, ZD_CR24, 0x20);//cca threshold + + pObj->SetReg(reg, ZD_CR26, 0x90); + pObj->SetReg(reg, ZD_CR27, 0x30); + pObj->SetReg(reg, ZD_CR29, 0x20); + pObj->SetReg(reg, ZD_CR31, 0xb2); + //pObj->SetReg(reg, ZD_CR31, 0xaa); + pObj->SetReg(reg, ZD_CR32, 0x43); + pObj->SetReg(reg, ZD_CR33, 0x28); + pObj->SetReg(reg, ZD_CR38, 0x30); + pObj->SetReg(reg, ZD_CR34, 0x0f); + pObj->SetReg(reg, ZD_CR35, 0xF0); + pObj->SetReg(reg, ZD_CR41, 0x2a); + pObj->SetReg(reg, ZD_CR46, 0x7F); + pObj->SetReg(reg, ZD_CR47, 0x1E); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR51, 0xc5); + pObj->SetReg(reg, ZD_CR52, 0xc5); + pObj->SetReg(reg, ZD_CR53, 0xc5); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR51, 0x01); + pObj->SetReg(reg, ZD_CR52, 0x80); + pObj->SetReg(reg, ZD_CR53, 0x7e); + + pObj->SetReg(reg,ZD_CR48, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR49, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR65, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR66, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR67, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR68, 0x00); //ZD1211B 05.06.10 + pObj->SetReg(reg,ZD_CR69, 0x28); //ZD1211B 05.06.10 + +#endif + + pObj->SetReg(reg, ZD_CR79, 0x58); + pObj->SetReg(reg, ZD_CR80, 0x30); + pObj->SetReg(reg, ZD_CR81, 0x30); + pObj->SetReg(reg, ZD_CR82, 0x00); + pObj->SetReg(reg, ZD_CR83, 0x24); + pObj->SetReg(reg, ZD_CR84, 0x04); + pObj->SetReg(reg, ZD_CR85, 0x00); + pObj->SetReg(reg, ZD_CR86, 0x10); + pObj->SetReg(reg, ZD_CR87, 0x2A); + pObj->SetReg(reg, ZD_CR88, 0x10); + pObj->SetReg(reg, ZD_CR89, 0x24); + pObj->SetReg(reg, ZD_CR90, 0x18); + //pObj->SetReg(reg, ZD_CR91, 0x18); + pObj->SetReg(reg, ZD_CR91, 0x00); // to solve continuous CTS frames problem + pObj->SetReg(reg, ZD_CR92, 0x0a); + pObj->SetReg(reg, ZD_CR93, 0x00); + pObj->SetReg(reg, ZD_CR94, 0x01); + pObj->SetReg(reg, ZD_CR95, 0x00); + pObj->SetReg(reg, ZD_CR96, 0x40); + + pObj->SetReg(reg, ZD_CR97, 0x37); +#ifdef HOST_IF_USB + #ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR98, 0x05); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR98, 0x8d); +#endif +#else + + pObj->SetReg(reg, ZD_CR98, 0x0D); + pObj->SetReg(reg, ZD_CR121, 0x06); + pObj->SetReg(reg, ZD_CR125, 0xAA); +#endif + + pObj->SetReg(reg, ZD_CR99, 0x28); + pObj->SetReg(reg, ZD_CR100, 0x00); + pObj->SetReg(reg, ZD_CR101, 0x13); + pObj->SetReg(reg, ZD_CR102, 0x27); + pObj->SetReg(reg, ZD_CR103, 0x27); + pObj->SetReg(reg, ZD_CR104, 0x18); + pObj->SetReg(reg, ZD_CR105, 0x12); + + if (pObj->bIsNormalSize) + + pObj->SetReg(reg, ZD_CR106, 0x1a); + else + pObj->SetReg(reg, ZD_CR106, 0x22); + + pObj->SetReg(reg, ZD_CR107, 0x24); + pObj->SetReg(reg, ZD_CR108, 0x0a); + pObj->SetReg(reg, ZD_CR109, 0x13); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR110, 0x2F); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR110, 0x1F); +#endif + + pObj->SetReg(reg, ZD_CR111, 0x27); + pObj->SetReg(reg, ZD_CR112, 0x27); + pObj->SetReg(reg, ZD_CR113, 0x27); + pObj->SetReg(reg, ZD_CR114, 0x27); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR115, 0x40); + pObj->SetReg(reg, ZD_CR116, 0x40); + pObj->SetReg(reg, ZD_CR117, 0xF0); + pObj->SetReg(reg, ZD_CR118, 0xF0); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR115, 0x26); + pObj->SetReg(reg, ZD_CR116, 0x40); + pObj->SetReg(reg, ZD_CR117, 0xFA); + pObj->SetReg(reg, ZD_CR118, 0xFA); + pObj->SetReg(reg, ZD_CR121, 0x6C); +#endif + + pObj->SetReg(reg, ZD_CR119, 0x16); + //pObj->SetReg(reg, ZD_CR122, 0xfe); + if (pObj->bContinueTx) + pObj->SetReg(reg, ZD_CR122, 0xff); + else + pObj->SetReg(reg, ZD_CR122, 0x00); + pObj->CR122Flag = 2; +#ifdef ZD1211B + + pObj->SetReg(reg,ZD_CR125, 0xad); //4804, for 1212 new algorithm + pObj->SetReg(reg,ZD_CR126, 0x6c); //5614 + +#endif + + pObj->SetReg(reg, ZD_CR127, 0x03); + pObj->SetReg(reg, ZD_CR131, 0x08); + pObj->SetReg(reg, ZD_CR138, 0x28); + pObj->SetReg(reg, ZD_CR148, 0x44); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR150, 0x10); +#elif defined(ZD1211B) - // Get Phy-Config permission - if (!InitChOnly) { - //LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR2, 0x1E); - pObj->SetReg(reg, ZD_CR9, 0x20); - //pObj->SetReg(reg, ZD_CR10, 0xB1); - pObj->SetReg(reg, ZD_CR10, 0x89); - pObj->SetReg(reg, ZD_CR11, 0x00); - pObj->SetReg(reg, ZD_CR15, 0xD0); - pObj->SetReg(reg, ZD_CR17, 0x68); - pObj->SetReg(reg, ZD_CR19, 0x4a); - pObj->SetReg(reg, ZD_CR20, 0x0c); - pObj->SetReg(reg, ZD_CR21, 0x0E); - pObj->SetReg(reg, ZD_CR23, 0x48); - - if (pObj->bIsNormalSize) - pObj->SetReg(reg, ZD_CR24, 0x14);//cca threshold - else - pObj->SetReg(reg, ZD_CR24, 0x20);//cca threshold - - pObj->SetReg(reg, ZD_CR26, 0x90); - pObj->SetReg(reg, ZD_CR27, 0x30); - pObj->SetReg(reg, ZD_CR29, 0x20); - pObj->SetReg(reg, ZD_CR31, 0xb2); - //pObj->SetReg(reg, ZD_CR31, 0xaa); - pObj->SetReg(reg, ZD_CR32, 0x43); - pObj->SetReg(reg, ZD_CR33, 0x28); - pObj->SetReg(reg, ZD_CR38, 0x30); - pObj->SetReg(reg, ZD_CR34, 0x0f); - pObj->SetReg(reg, ZD_CR35, 0xF0); - pObj->SetReg(reg, ZD_CR41, 0x2a); - pObj->SetReg(reg, ZD_CR46, 0x7F); - pObj->SetReg(reg, ZD_CR47, 0x1c); - pObj->SetReg(reg, ZD_CR51, 0xc5); - pObj->SetReg(reg, ZD_CR52, 0xc5); - pObj->SetReg(reg, ZD_CR53, 0xc5); - pObj->SetReg(reg, ZD_CR79, 0x58); - pObj->SetReg(reg, ZD_CR80, 0x30); - pObj->SetReg(reg, ZD_CR81, 0x30); - pObj->SetReg(reg, ZD_CR82, 0x00); - pObj->SetReg(reg, ZD_CR83, 0x24); - pObj->SetReg(reg, ZD_CR84, 0x04); - pObj->SetReg(reg, ZD_CR85, 0x00); - pObj->SetReg(reg, ZD_CR86, 0x10); - pObj->SetReg(reg, ZD_CR87, 0x2A); - pObj->SetReg(reg, ZD_CR88, 0x10); - pObj->SetReg(reg, ZD_CR89, 0x24); - pObj->SetReg(reg, ZD_CR90, 0x18); - //pObj->SetReg(reg, ZD_CR91, 0x18); - pObj->SetReg(reg, ZD_CR91, 0x00); // to solve continuous CTS frames problem - pObj->SetReg(reg, ZD_CR92, 0x0a); - pObj->SetReg(reg, ZD_CR93, 0x00); - pObj->SetReg(reg, ZD_CR94, 0x01); - pObj->SetReg(reg, ZD_CR95, 0x00); - pObj->SetReg(reg, ZD_CR96, 0x40); - pObj->SetReg(reg, ZD_CR97, 0x37); - pObj->SetReg(reg, ZD_CR98, 0x05); - pObj->SetReg(reg, ZD_CR99, 0x28); - pObj->SetReg(reg, ZD_CR100, 0x00); - pObj->SetReg(reg, ZD_CR101, 0x13); - pObj->SetReg(reg, ZD_CR102, 0x27); - pObj->SetReg(reg, ZD_CR103, 0x27); - pObj->SetReg(reg, ZD_CR104, 0x18); - pObj->SetReg(reg, ZD_CR105, 0x12); - - if (pObj->bIsNormalSize) - pObj->SetReg(reg, ZD_CR106, 0x1a); - else - pObj->SetReg(reg, ZD_CR106, 0x22); - - pObj->SetReg(reg, ZD_CR107, 0x24); - pObj->SetReg(reg, ZD_CR108, 0x0a); - pObj->SetReg(reg, ZD_CR109, 0x13); - pObj->SetReg(reg, ZD_CR110, 0x2F); - pObj->SetReg(reg, ZD_CR111, 0x27); - pObj->SetReg(reg, ZD_CR112, 0x27); - pObj->SetReg(reg, ZD_CR113, 0x27); - pObj->SetReg(reg, ZD_CR114, 0x27); - pObj->SetReg(reg, ZD_CR115, 0x40); - pObj->SetReg(reg, ZD_CR116, 0x40); - pObj->SetReg(reg, ZD_CR117, 0xF0); - pObj->SetReg(reg, ZD_CR118, 0xF0); - pObj->SetReg(reg, ZD_CR119, 0x16); - //pObj->SetReg(reg, ZD_CR122, 0xfe); - if (pObj->bContinueTx) - pObj->SetReg(reg, ZD_CR122, 0xff); - else - pObj->SetReg(reg, ZD_CR122, 0x00); - pObj->CR122Flag = 2; - pObj->CR31Flag = 2; - - pObj->SetReg(reg, ZD_CR127, 0x03); - pObj->SetReg(reg, ZD_CR131, 0x08); - pObj->SetReg(reg, ZD_CR138, 0x28); - pObj->SetReg(reg, ZD_CR148, 0x44); - pObj->SetReg(reg, ZD_CR150, 0x10); - pObj->SetReg(reg, ZD_CR169, 0xBB); - pObj->SetReg(reg, ZD_CR170, 0xBB); - //pObj->SetReg(reg, ZD_CR38, 0x30); - //UnLockPhyReg(pObj); - - HW_Set_IF_Synthesizer(pObj, 0x000007); //REG0(CFG1) - HW_Set_IF_Synthesizer(pObj, 0x07dd43); //REG1(IFPLL1) - HW_Set_IF_Synthesizer(pObj, 0x080959); //REG2(IFPLL2) - HW_Set_IF_Synthesizer(pObj, 0x0e6666); - HW_Set_IF_Synthesizer(pObj, 0x116a57); //REG4 - HW_Set_IF_Synthesizer(pObj, 0x17dd43); //REG5 - HW_Set_IF_Synthesizer(pObj, 0x1819f9); //REG6 - HW_Set_IF_Synthesizer(pObj, 0x1e6666); - HW_Set_IF_Synthesizer(pObj, 0x214554); - HW_Set_IF_Synthesizer(pObj, 0x25e7fa); - HW_Set_IF_Synthesizer(pObj, 0x27fffa); - //HW_Set_IF_Synthesizer(pObj, 0x294128); //Register control TX power - // set in Set_RF_Channel( ) - //HW_Set_IF_Synthesizer(pObj, 0x28252c); //External control TX power (CR31_CCK, CR51_6-36M, CR52_48M, CR53_54M - HW_Set_IF_Synthesizer(pObj, 0x2c0000); - HW_Set_IF_Synthesizer(pObj, 0x300000); - HW_Set_IF_Synthesizer(pObj, 0x340000); //REG13(0xD) - HW_Set_IF_Synthesizer(pObj, 0x381e0f); //REG14(0xE) - HW_Set_IF_Synthesizer(pObj, 0x6c180f); //REG27(0x11) - } else { - //LockPhyReg(pObj); - if (pObj->bContinueTx) - pObj->SetReg(reg, ZD_CR122, 0xff); - else - pObj->SetReg(reg, ZD_CR122, 0x00); - //UnLockPhyReg(pObj); - - pObj->CR122Flag = 2; - pObj->CR31Flag = 2; - - HW_Set_IF_Synthesizer(pObj, RFMD2958t[ChannelNo*2]); - HW_Set_IF_Synthesizer(pObj, RFMD2958t[ChannelNo*2+1]); - } - UnLockPhyReg(pObj); - return; + pObj->SetReg(reg, ZD_CR150, 0x14); +#endif + + pObj->SetReg(reg, ZD_CR169, 0xBB); + pObj->SetReg(reg, ZD_CR170, 0xBB); + //pObj->SetReg(reg, ZD_CR38, 0x30); + //UnLockPhyReg(pObj); + + HW_Set_IF_Synthesizer(pObj, 0x000007); //REG0(CFG1) + HW_Set_IF_Synthesizer(pObj, 0x07dd43); //REG1(IFPLL1) + HW_Set_IF_Synthesizer(pObj, 0x080959); //REG2(IFPLL2) + HW_Set_IF_Synthesizer(pObj, 0x0e6666); + HW_Set_IF_Synthesizer(pObj, 0x116a57); //REG4 + HW_Set_IF_Synthesizer(pObj, 0x17dd43); //REG5 + HW_Set_IF_Synthesizer(pObj, 0x1819f9); //REG6 + HW_Set_IF_Synthesizer(pObj, 0x1e6666); + HW_Set_IF_Synthesizer(pObj, 0x214554); + HW_Set_IF_Synthesizer(pObj, 0x25e7fa); + HW_Set_IF_Synthesizer(pObj, 0x27fffa); + //HW_Set_IF_Synthesizer(pObj, 0x294128); //Register control TX power + // set in Set_RF_Channel( ) + //HW_Set_IF_Synthesizer(pObj, 0x28252c); //External control TX power (CR31_CCK, CR51_6-36M, CR52_48M, CR53_54M + HW_Set_IF_Synthesizer(pObj, 0x2c0000); + HW_Set_IF_Synthesizer(pObj, 0x300000); + + + HW_Set_IF_Synthesizer(pObj, 0x340000); //REG13(0xD) + HW_Set_IF_Synthesizer(pObj, 0x381e0f); //REG14(0xE) + HW_Set_IF_Synthesizer(pObj, 0x6c180f); //REG27(0x11) + } else { + //LockPhyReg(pObj); + if (pObj->bContinueTx) + pObj->SetReg(reg, ZD_CR122, 0xff); + else + pObj->SetReg(reg, ZD_CR122, 0x00); + //UnLockPhyReg(pObj); + + pObj->CR122Flag = 2; + pObj->CR31Flag = 2; + + HW_Set_IF_Synthesizer(pObj, RFMD2958t[ChannelNo*2]); + HW_Set_IF_Synthesizer(pObj, RFMD2958t[ChannelNo*2+1]); + + } + + + UnLockPhyReg(pObj); + + return; } void HW_EnableBeacon(zd_80211Obj_t *pObj, U16 BeaconInterval, U16 DtimPeriod, U8 BssType) { - U32 tmpValue; - U32 Mode = 0; - U16 Dtim = 0; - void *reg = pObj->reg; - - if (BssType == INDEPENDENT_BSS) { - Mode = IBSS_MODE; - } else if (BssType == AP_BSS) { - Mode = AP_MODE; - Dtim = DtimPeriod; - } - - tmpValue = BeaconInterval | Mode | (Dtim<<16) ; - pObj->SetReg(reg, ZD_BCNInterval, tmpValue); -} - -void HW_SwitchChannel(zd_80211Obj_t *pObj, U16 channel, U8 InitChOnly) -{ - void *reg = pObj->reg; - pObj->SetReg(reg, ZD_CONFIGPhilips, 0x0); - - //FPRINT_V("rfMode", pObj->rfMode); - - switch(pObj->rfMode) { - default: - FPRINT_V("Invalid RF module parameter", pObj->rfMode); - break; - - case MAXIM_NEW_RF: - FPRINT_V("MAXIM_NEW_RF Channel", channel); - pObj->S_bit_cnt = 18; - HW_Set_Maxim_New_Chips(pObj, channel, 0); - HW_UpdateIntegrationValue(pObj, channel); - break; - - case GCT_RF: - //FPRINT_V("GCT Channel", channel); - pObj->S_bit_cnt = 21; - pObj->AcquireDoNotSleep(); - if (!pObj->bDeviceInSleep) - HW_Set_GCT_Chips(pObj, channel, InitChOnly); - pObj->ReleaseDoNotSleep(); - //HW_UpdateIntegrationValue(pObj, channel); - break; - - case AL2230_RF: - //FPRINT_V("AL2210MPVB_RF Channel", channel); - pObj->S_bit_cnt = 24; - HW_Set_AL2230_RF_Chips(pObj, channel, InitChOnly); - HW_UpdateIntegrationValue(pObj, channel); - break; - - case AL2210_RF: - //FPRINT_V("AL2210_RF Channel", channel); - pObj->S_bit_cnt = 24; - HW_Set_AL2210_Chips(pObj, channel, 0); - break; - - case RALINK_RF: - FPRINT_V("Ralink Channel", channel); - break; - - case INTERSIL_RF: - FPRINT_V("Intersil Channel", channel); - break; - - case RFMD_RF: - FPRINT_V("RFMD Channel", channel); - pObj->S_bit_cnt = 24; - HW_Set_RFMD_Chips(pObj, channel, InitChOnly); - if (!InitChOnly) - HW_UpdateIntegrationValue(pObj, channel); - break; - - case MAXIM_NEW_RF2: - FPRINT_V("MAXIM_NEW_RF2 Channel", channel); - pObj->S_bit_cnt = 18; - HW_Set_Maxim_New_Chips2(pObj, channel, 0); - break; - - case PHILIPS_RF: - FPRINT_V("Philips SA2400 Channel", channel); - break; - } - - HW_OverWritePhyRegFromE2P(pObj); - return; -} - -void HW_SetRfChannel(zd_80211Obj_t *pObj, U16 channel, U8 InitChOnly) -{ - void *reg = pObj->reg; - //FPRINT_V("HW_SetRfChannel", channel); - // Check if this ChannelNo allowed? - if (!((1 << (channel-1)) & pObj->AllowedChannel)) { - // Not an allowed channel, we use default channel. - //printk("Channel = %d Not an allowed channel\n", channel); - //printk("Set default channel = %d\n", (pObj->AllowedChannel >> 16)); - //channel = (pObj->AllowedChannel >> 16); - return; - } - - if ((channel > 14 ) || (channel < 1)) { // for the wrong content of the EEPROM - return; - } - - pObj->Channel = channel; - HW_SwitchChannel(pObj, channel, InitChOnly); - - // When channnel == 14 , enable Japan spectrum mask - if (pObj->RegionCode == 0x40) { //Japan - if (channel == 14) { - HW_Set_FilterBand(pObj, pObj->RegionCode); // for Japan, RegionCode = 0x40 - if (pObj->rfMode == RFMD_RF) { - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR47, 0x18); - //UnLockPhyReg(pObj); - HW_Set_IF_Synthesizer(pObj, 0x28252d); //External control TX power (CR31_CCK, CR51_6-36M, CR52_48M, CR53_54M - UnLockPhyReg(pObj); - } - } else { - // For other channels, use default filter. - HW_Set_FilterBand(pObj, 0); - if (pObj->rfMode == RFMD_RF) { - // CR47 has been restored in Init_RF_Chips( ), its value is from EEPROM - HW_Set_IF_Synthesizer(pObj, 0x28252d); //External control TX power (CR31_CCK, CR51_6-36M, CR52_48M, CR53_54M - } - } - } - pObj->DelayUs(100); + U32 tmpValue; + U32 Mode = 0; + U16 Dtim = 0; + + void *reg = pObj->reg; + + if (BssType == INDEPENDENT_BSS) { + Mode = IBSS_MODE; + printk(KERN_ERR "Mode: IBSS_MODE\n"); + } else if (BssType == AP_BSS) { + Mode = AP_MODE; + Dtim = DtimPeriod; + printk(KERN_ERR "Mode: AP_BSS\n"); + } + + tmpValue = BeaconInterval | Mode | (Dtim<<16) ; + pObj->SetReg(reg, ZD_BCNInterval, tmpValue); +} + + +void HW_SwitchChannel(zd_80211Obj_t *pObj, U16 channel, U8 InitChOnly, const U8 MAC_Mode) +{ + void *reg = pObj->reg; + + + pObj->SetReg(reg, ZD_CONFIGPhilips, 0x0); + + //FPRINT_V("rfMode", pObj->rfMode); + + switch(pObj->rfMode) { + default: + FPRINT_V("Invalid RF module parameter", pObj->rfMode); + + break; + + case MAXIM_NEW_RF: + FPRINT_V("MAXIM_NEW_RF Channel", channel); + pObj->S_bit_cnt = 18; + HW_Set_Maxim_New_Chips(pObj, channel, 0); + +#ifdef HOST_IF_USB + + HW_UpdateIntegrationValue(pObj, channel, MAC_Mode); +#endif + + break; + + case GCT_RF: + // FPRINT_V("GCT Channel", channel); + pObj->S_bit_cnt = 21; + + pObj->AcquireDoNotSleep(); + if (!pObj->bDeviceInSleep) + HW_Set_GCT_Chips(pObj, channel, InitChOnly); + pObj->ReleaseDoNotSleep(); + //HW_UpdateIntegrationValue(pObj, channel); + break; + + case AL2230_RF: + case AL2230S_RF: + //FPRINT_V("AL2210MPVB_RF Channel", channel); + pObj->S_bit_cnt = 24; + HW_Set_AL2230_RF_Chips(pObj, channel, InitChOnly); + HW_UpdateIntegrationValue(pObj, channel, MAC_Mode); + break; + case AL7230B_RF: //For 802.11a/b/g + FPRINT_V("AL7230B_RF",channel); + pObj->S_bit_cnt = 24; + // printk("Before AL7230BRF:C,%d,M,%d\n\n",channel,MAC_Mode); + HW_Set_AL7230B_RF_Chips(pObj, channel, InitChOnly,MAC_Mode); + break; + case AL2210_RF: + //FPRINT_V("AL2210_RF Channel", channel); + pObj->S_bit_cnt = 24; + HW_Set_AL2210_Chips(pObj, channel, 0); + break; + + case RALINK_RF: + FPRINT_V("Ralink Channel", channel); + break; + + case INTERSIL_RF: + FPRINT_V("Intersil Channel", channel); + break; + + case RFMD_RF: + FPRINT_V("RFMD Channel", channel); + pObj->S_bit_cnt = 24; + HW_Set_RFMD_Chips(pObj, channel, InitChOnly); + + + if (!InitChOnly) + HW_UpdateIntegrationValue(pObj, channel, MAC_Mode); + break; + + case MAXIM_NEW_RF2: + FPRINT_V("MAXIM_NEW_RF2 Channel", channel); + + pObj->S_bit_cnt = 18; + HW_Set_Maxim_New_Chips2(pObj, channel, 0); + break; + + case PHILIPS_RF: + FPRINT_V("Philips SA2400 Channel", channel); + break; + } + + HW_OverWritePhyRegFromE2P(pObj); + + return; +} + + + +void HW_SetRfChannel(zd_80211Obj_t *pObj, U16 channel, U8 InitChOnly, const U8 MAC_Mode) +{ + void *reg = pObj->reg; + //FPRINT_V("HW_SetRfChannel", channel); + + // Check if this ChannelNo allowed? + u32 i; + + if (!((1 << (channel-1)) & pObj->AllowedChannel)) { + // Not an allowed channel, we use default channel. + //printk("Channel = %d Not an allowed channel\n", channel); + //printk("Set default channel = %d\n", (pObj->AllowedChannel >> 16)); + //channel = (pObj->AllowedChannel >> 16); + if(PURE_A_MODE != MAC_Mode) { + //printk("You use a non-allowed channel in HW_setRfChannel(%d)\n",channel); + return; + } + } + + //Check if channel is valid 2.4G Band + if(MAC_Mode != PURE_A_MODE) { + if ((channel > 14 ) || (channel < 1)) { // for the wrong content of the EEPROM + printk(KERN_DEBUG "Error Channel Number in HW_SetRfChannel(11b/g)\n"); + return; + } + } else if(MAC_Mode == PURE_A_MODE) { + //Check is the A Band Channel is valid. + for(i=0;i=dot11A_Channel_Amount) { + printk(KERN_DEBUG "Error Channel Number in HW_SetRfChannel(11a,CH=%d)\n",channel); + return; + } + } + if(PURE_A_MODE == MAC_Mode) { + pObj->SetReg(pObj->reg, ZD_IFS_Value, 0x1147c00a); + pObj->SetReg(pObj->reg, ZD_RTS_CTS_Rate, 0x01090109); + } else { + pObj->SetReg(pObj->reg, ZD_IFS_Value, 0xa47c032); + pObj->SetReg(pObj->reg, ZD_RTS_CTS_Rate, 0x30000); + } + + pObj->Channel = channel; + HW_SwitchChannel(pObj, channel, InitChOnly,MAC_Mode); + LastSetChannel = channel; + LastMacMode = MAC_Mode; + + //The UpdateIntegrationValue call should be called immediately + //after HW_SetRfChannel + HW_UpdateIntegrationValue(pObj, channel,MAC_Mode); + + // When channnel == 14 , enable Japan spectrum mask + if (pObj->RegionCode == 0x40) { //Japan + if (channel == 14) { + HW_Set_FilterBand(pObj, pObj->RegionCode); // for Japan, RegionCode = 0x40 + if (pObj->rfMode == RFMD_RF) { + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR47, 0x1E); + //UnLockPhyReg(pObj); + + HW_Set_IF_Synthesizer(pObj, 0x28252d); //External control TX power (CR31_CCK, CR51_6-36M, CR52_48M, CR53_54M + UnLockPhyReg(pObj); + } + + } else { + + // For other channels, use default filter. + HW_Set_FilterBand(pObj, 0); + + if (pObj->rfMode == RFMD_RF) { + // CR47 has been restored in Init_RF_Chips( ), its value is from EEPROM + HW_Set_IF_Synthesizer(pObj, 0x28252d); //External control TX power (CR31_CCK, CR51_6-36M, CR52_48M, CR53_54M + } + } + } + + pObj->DelayUs(100); } void HW_SetBeaconFIFO(zd_80211Obj_t *pObj, U8 *pBeacon, U16 index) { - U32 tmpValue, BCNPlcp; - U16 j; - void *reg = pObj->reg; - - pObj->SetReg(reg, ZD_BCN_FIFO_Semaphore, 0x0); - tmpValue = pObj->GetReg(reg, ZD_BCN_FIFO_Semaphore); - - while (tmpValue & BIT_1) { - pObj->DelayUs(1000); - tmpValue = pObj->GetReg(reg, ZD_BCN_FIFO_Semaphore); - } - - /* Write (Beacon_Len -1) to Beacon-FIFO */ - pObj->SetReg(reg, ZD_BCNFIFO, (index - 1)); - - for (j=0; jSetReg(reg, ZD_BCNFIFO, pBeacon[j]); - } - pObj->SetReg(reg, ZD_BCN_FIFO_Semaphore, 1); - - /* Configure BCNPLCP */ - BCNPlcp = 0x00000400; - index = (index << 3); - BCNPlcp |= (((U32)index) << 16); - pObj->SetReg(reg, ZD_BCNPLCPCfg, BCNPlcp); + U32 tmpValue, BCNPlcp; + U16 j; + void *reg = pObj->reg; + U32 count = 0; + + pObj->SetReg(reg, ZD_BCN_FIFO_Semaphore, 0x0); + tmpValue = pObj->GetReg(reg, ZD_BCN_FIFO_Semaphore); + + while (tmpValue & BIT_1) { + pObj->DelayUs(1000); + tmpValue = pObj->GetReg(reg, ZD_BCN_FIFO_Semaphore); + + if ((++count % 100) == 0) + printk(KERN_ERR "BCN\n"); + } + + /* Write (Beacon_Len -1) to Beacon-FIFO */ + pObj->SetReg(reg, ZD_BCNFIFO, (index - 1)); +#ifdef ZD1211B + + pObj->SetReg(reg,ZD_BCNLENGTH, (index - 1)); +#endif + + for (j=0; jSetReg(reg, ZD_BCNFIFO, pBeacon[j]); + } + pObj->SetReg(reg, ZD_BCN_FIFO_Semaphore, 1); + + /* Configure BCNPLCP */ + if(mMacMode == PURE_A_MODE) { + BCNPlcp = 0x0000003b; //802.11a 5g OFDM 6Mb + } else { + index = (index << 3); //802.11b/g 2.4G CCK 1Mb + BCNPlcp = 0x00000400; + } + BCNPlcp |= (((U32)index) << 16); + pObj->SetReg(reg, ZD_BCNPLCPCfg, BCNPlcp); } + + void HW_SetSupportedRate(zd_80211Obj_t *pObj, U8 *prates) { - U8 HighestBasicRate = SR_1M; - U8 HighestRate = SR_1M; - U8 SRate; - U32 tmpValue; - U16 j; - U8 MaxBasicRate; - void *reg = pObj->reg; - - MaxBasicRate = pObj->BasicRate; - - for (j=0; j<(*(prates+1)); j++) { - switch((*(prates+2+j)) & 0x7f) { - case SR_1M: - SRate = SR_1M; + U8 HighestBasicRate = SR_1M; + U8 HighestRate = SR_1M; + U8 SRate; + U32 tmpValue; + U16 j; + U8 MaxBasicRate; + + void *reg = pObj->reg; + MaxBasicRate = pObj->BasicRate; + + + for (j=0; j<(*(prates+1)); j++) { + switch((*(prates+2+j)) & 0x7f) { + case SR_1M: + SRate = SR_1M; #if defined(AMAC) - if ((*(prates+2+j)) & 0x80) { //It's a basic rate - tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); - tmpValue |= BIT_0; - pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); - } + + if ((*(prates+2+j)) & 0x80) { //It's a basic rate + + tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); + tmpValue |= BIT_0; + pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); + } #endif - break; + break; - case SR_2M: - SRate = SR_2M; + case SR_2M: + SRate = SR_2M; #if defined(AMAC) - if ((*(prates+2+j)) & 0x80) { //It's a basic rate - tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); - tmpValue |= BIT_1; - pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); - } + + if ((*(prates+2+j)) & 0x80) { //It's a basic rate + tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); + tmpValue |= BIT_1; + pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); + } #endif - break; + break; - case SR_5_5M: - SRate = SR_5_5M; + case SR_5_5M: + SRate = SR_5_5M; #if defined(AMAC) - if ((*(prates+2+j)) & 0x80) { //It's a basic rate - tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); - tmpValue |= BIT_2; - pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); - } + + if ((*(prates+2+j)) & 0x80) { //It's a basic rate + tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); + + tmpValue |= BIT_2; + pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); + } #endif - break; + break; - case SR_11M: - SRate = SR_11M; + case SR_11M: + SRate = SR_11M; #if defined(AMAC) - if ((*(prates+2+j)) & 0x80) { //It's a basic rate - tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); - tmpValue |= BIT_3; - pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); - } + + if ((*(prates+2+j)) & 0x80) { //It's a basic rate + tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); + tmpValue |= BIT_3; + pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); + } + #endif - break; + break; -#if (defined(GCCK) && defined(OFDM)) - case SR_6M: - SRate = SR_6M; - if ((*(prates+2+j)) & 0x80) { //It's a basic rate - tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); - tmpValue |= BIT_8; - pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); - } - break; - - case SR_9M: - SRate = SR_9M; - if ((*(prates+2+j)) & 0x80) { //It's a basic rate - tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); - tmpValue |= BIT_9; - pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); - } - break; - - case SR_12M: - SRate = SR_12M; - if ((*(prates+2+j)) & 0x80) { //It's a basic rate - tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); - tmpValue |= BIT_10; - pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); - } - break; - - case SR_18M: - SRate = SR_18M; - if ((*(prates+2+j)) & 0x80) { //It's a basic rate - tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); - tmpValue |= BIT_11; - pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); - } - break; - - case SR_24M: - SRate = SR_24M; - if ((*(prates+2+j)) & 0x80) { //It's a basic rate - tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); - tmpValue |= BIT_12; - pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); - } - break; - - case SR_36M: - SRate = SR_36M; - if ((*(prates+2+j)) & 0x80) { //It's a basic rate - tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); - tmpValue |= BIT_13; - pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); - } - break; - - case SR_48M: - SRate = SR_48M; - if ((*(prates+2+j)) & 0x80) { //It's a basic rate - tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); - tmpValue |= BIT_14; - pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); - } - break; - - case SR_54M: - SRate = SR_54M; - if ((*(prates+2+j)) & 0x80) { //It's a basic rate - tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); - tmpValue |= BIT_15; - pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); - } - break; -#endif - default: - SRate = SR_1M; - break; - } - - if (HighestRate < SRate) - HighestRate = SRate; - if ((*(prates+2+j)) & 0x80) { - /* It's a basic rate */ - if (HighestBasicRate < SRate) - HighestBasicRate = SRate; - } - } +#if (defined(GCCK) && defined(OFDM)) + + case SR_6M: + SRate = SR_6M; + if ((*(prates+2+j)) & 0x80) { //It's a basic rate + tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); + tmpValue |= BIT_8; + pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); + } + break; + + case SR_9M: + SRate = SR_9M; + if ((*(prates+2+j)) & 0x80) { //It's a basic rate + tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); + tmpValue |= BIT_9; + pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); + } + break; + + case SR_12M: + SRate = SR_12M; + if ((*(prates+2+j)) & 0x80) { //It's a basic rate + tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); + tmpValue |= BIT_10; + pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); + } + break; + + case SR_18M: + SRate = SR_18M; + if ((*(prates+2+j)) & 0x80) { //It's a basic rate + tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); + tmpValue |= BIT_11; + pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); + } + break; + + case SR_24M: + SRate = SR_24M; + if ((*(prates+2+j)) & 0x80) { //It's a basic rate + tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); + tmpValue |= BIT_12; + pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); + } + break; + + case SR_36M: + SRate = SR_36M; + if ((*(prates+2+j)) & 0x80) { //It's a basic rate + tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); + tmpValue |= BIT_13; + pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); + + } + break; + + case SR_48M: + SRate = SR_48M; + if ((*(prates+2+j)) & 0x80) { //It's a basic rate + tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); + tmpValue |= BIT_14; + pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); + } + break; + + case SR_54M: + SRate = SR_54M; + if ((*(prates+2+j)) & 0x80) { //It's a basic rate + tmpValue = pObj->GetReg(reg, ZD_BasicRateTbl); + tmpValue |= BIT_15; + pObj->SetReg(reg, ZD_BasicRateTbl, tmpValue); + } + break; +#endif + + default: + SRate = SR_1M; + + break; + } + + if (HighestRate < SRate) + HighestRate = SRate; + + + if ((*(prates+2+j)) & 0x80) { + /* It's a basic rate */ + if (HighestBasicRate < SRate) + HighestBasicRate = SRate; + } + } #if !defined(OFDM) - tmpValue = pObj->GetReg(reg, ZD_CtlReg1); + tmpValue = pObj->GetReg(reg, ZD_CtlReg1); + + if (pObj->BssType == INDEPENDENT_BSS) { + if (HighestBasicRate == SR_1M) { + // Workaround compatibility issue. + // For resonable case, HighestBasicRate should larger than 2M if + + // short-preamble is supported. + HighestBasicRate = SR_2M; + pObj->SetReg(reg, ZD_Ack_Timeout_Ext, 0x3f); + } + } + + switch(HighestBasicRate) { + case SR_1M: + tmpValue &= ~0x1c; + tmpValue |= 0x00; + pObj->SetReg(reg, ZD_CtlReg1, tmpValue); + pObj->BasicRate = 0x0; + break; + + case SR_2M: + tmpValue &= ~0x1c; + tmpValue |= 0x04; + pObj->SetReg(reg, ZD_CtlReg1, tmpValue); + pObj->BasicRate = 0x1; + break; + + case SR_5_5M: + tmpValue &= ~0x1c; + + tmpValue |= 0x08; + pObj->SetReg(reg, ZD_CtlReg1, tmpValue); + pObj->BasicRate = 0x2; + break; + + case SR_11M: + tmpValue &= ~0x1c; + tmpValue |= 0x0c; + pObj->SetReg(reg, ZD_CtlReg1, tmpValue); + pObj->BasicRate = 0x3; + break; + + default: + break; + } +#else + switch(HighestBasicRate) { + case SR_1M: + if (HighestBasicRate >= MaxBasicRate) + pObj->BasicRate = 0x0; + break; + + + case SR_2M: + if (HighestBasicRate >= MaxBasicRate) + pObj->BasicRate = 0x1; + break; + + case SR_5_5M: + if (HighestBasicRate >= MaxBasicRate) + pObj->BasicRate = 0x2; + break; + + case SR_11M: + if (HighestBasicRate >= MaxBasicRate) + pObj->BasicRate = 0x3; + break; + + case SR_6M: + if (HighestBasicRate >= MaxBasicRate) + pObj->BasicRate = 0x4; + break; + + case SR_9M: + if (HighestBasicRate >= MaxBasicRate) + pObj->BasicRate = 0x5; + break; + + case SR_12M: + if (HighestBasicRate >= MaxBasicRate) + pObj->BasicRate = 0x6; + break; + + case SR_18M: + if (HighestBasicRate >= MaxBasicRate) + pObj->BasicRate = 0x7; + break; + + case SR_24M: + if (HighestBasicRate >= MaxBasicRate) + pObj->BasicRate = 0x8; + break; + + case SR_36M: + if (HighestBasicRate >= MaxBasicRate) + pObj->BasicRate = 0x9; + break; + + case SR_48M: + if (HighestBasicRate >= MaxBasicRate) + + pObj->BasicRate = 0xa; + break; + + case SR_54M: + if (HighestBasicRate >= MaxBasicRate) + pObj->BasicRate = 0xb; + break; + + default: - if (pObj->BssType == INDEPENDENT_BSS) { - if (HighestBasicRate == SR_1M) { - // Workaround compatibility issue. - // For resonable case, HighestBasicRate should larger than 2M if - // short-preamble is supported. - HighestBasicRate = SR_2M; - pObj->SetReg(reg, ZD_Ack_Timeout_Ext, 0x3f); - } - } - - switch(HighestBasicRate) { - case SR_1M: - tmpValue &= ~0x1c; - tmpValue |= 0x00; - pObj->SetReg(reg, ZD_CtlReg1, tmpValue); - pObj->BasicRate = 0x0; - break; - - case SR_2M: - tmpValue &= ~0x1c; - tmpValue |= 0x04; - pObj->SetReg(reg, ZD_CtlReg1, tmpValue); - pObj->BasicRate = 0x1; - break; - - case SR_5_5M: - tmpValue &= ~0x1c; - tmpValue |= 0x08; - pObj->SetReg(reg, ZD_CtlReg1, tmpValue); - pObj->BasicRate = 0x2; - break; - - case SR_11M: - tmpValue &= ~0x1c; - tmpValue |= 0x0c; - pObj->SetReg(reg, ZD_CtlReg1, tmpValue); - pObj->BasicRate = 0x3; - break; - - default: - break; - } -#else - switch(HighestBasicRate) { - case SR_1M: - if (HighestBasicRate >= MaxBasicRate) - pObj->BasicRate = 0x0; - break; - - case SR_2M: - if (HighestBasicRate >= MaxBasicRate) - pObj->BasicRate = 0x1; - break; - - case SR_5_5M: - if (HighestBasicRate >= MaxBasicRate) - pObj->BasicRate = 0x2; - break; - - case SR_11M: - if (HighestBasicRate >= MaxBasicRate) - pObj->BasicRate = 0x3; - break; - - case SR_6M: - if (HighestBasicRate >= MaxBasicRate) - pObj->BasicRate = 0x4; - break; - - case SR_9M: - if (HighestBasicRate >= MaxBasicRate) - pObj->BasicRate = 0x5; - break; - - case SR_12M: - if (HighestBasicRate >= MaxBasicRate) - pObj->BasicRate = 0x6; - break; - - case SR_18M: - if (HighestBasicRate >= MaxBasicRate) - pObj->BasicRate = 0x7; - break; - - case SR_24M: - if (HighestBasicRate >= MaxBasicRate) - pObj->BasicRate = 0x8; - break; - - case SR_36M: - if (HighestBasicRate >= MaxBasicRate) - pObj->BasicRate = 0x9; - break; - - case SR_48M: - if (HighestBasicRate >= MaxBasicRate) - pObj->BasicRate = 0xa; - break; - - case SR_54M: - if (HighestBasicRate >= MaxBasicRate) - pObj->BasicRate = 0xb; - break; - - default: - break; - } + break; + } #endif - //FPRINT_V("HighestBasicRate", pObj->BasicRate); + + //FPRINT_V("HighestBasicRate", pObj->BasicRate); } +extern U16 mBeaconPeriod; + void HW_SetSTA_PS(zd_80211Obj_t *pObj, U8 op) { - void *reg = pObj->reg; - U32 tmpValue; + void *reg = pObj->reg; + U32 tmpValue; - tmpValue = pObj->GetReg(reg, ZD_BCNInterval); - if (op) - tmpValue |= STA_PS; - else - tmpValue &= ~STA_PS; - pObj->SetReg(reg, ZD_BCNInterval, tmpValue); + tmpValue = pObj->GetReg(reg, ZD_BCNInterval); + + /* Beacon interval check */ + if((tmpValue & 0xffff) != mBeaconPeriod) { + printk(KERN_ERR "Beacon Interval not match\n"); + return ; + } + + //if (op) + // tmpValue |= STA_PS; + //else + tmpValue &= ~STA_PS; + + pObj->SetReg(reg, ZD_BCNInterval, tmpValue); } + void HW_GetTsf(zd_80211Obj_t *pObj, U32 *loTsf, U32 *hiTsf) { - void *reg = pObj->reg; + void *reg = pObj->reg; + - *loTsf = pObj->GetReg(reg, ZD_TSF_LowPart); - *hiTsf = pObj->GetReg(reg, ZD_TSF_HighPart); + *loTsf = pObj->GetReg(reg, ZD_TSF_LowPart); + *hiTsf = pObj->GetReg(reg, ZD_TSF_HighPart); } U32 HW_GetNow(zd_80211Obj_t *pObj) { - void *reg = pObj->reg; +#ifndef HOST_IF_USB + void *reg = pObj->reg; + return pObj->GetReg(reg, ZD_TSF_LowPart); //us unit +#else - return jiffies; //10ms unit + return jiffies; //10ms unit +#endif } void HW_RadioOnOff(zd_80211Obj_t *pObj, U8 on) { - void *reg = pObj->reg; - U32 tmpvalue; - U8 ii; - - if (on) { - //++ Turn on RF - switch(pObj->rfMode) { - case RFMD_RF: - if (!(pObj->PhyTest & BIT_2)) - HW_Set_IF_Synthesizer(pObj, 0x000007); - if (!(pObj->PhyTest & BIT_0)) { - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR10, 0x89); - pObj->SetReg(reg, ZD_CR11, 0x00); - tmpvalue = pObj->GetReg(reg, ZD_CR11); - tmpvalue &= 0xFF; - if (tmpvalue != 0x00) { - if (pObj->PhyTest & BIT_1) { - for (ii = 0; ii < 10; ii ++) { - pObj->DelayUs(1000); - pObj->SetReg(reg, ZD_CR11, 0x00); - tmpvalue = pObj->GetReg(reg, ZD_CR11); - if ((tmpvalue & 0xFF) == 0x00) - break; - } - } - } - UnLockPhyReg(pObj); - } - break; - - case AL2230_RF: - LockPhyReg(pObj); - tmpvalue &= 0xFF; - for (ii = 0; ii < 10; ii ++) { - pObj->DelayUs(1000); - pObj->SetReg(reg, ZD_CR11, 0x00); - tmpvalue = pObj->GetReg(reg, ZD_CR11); - if ((tmpvalue & 0xFF) == 0x00) - break; - } - pObj->SetReg(reg, ZD_CR251, 0x3f); - UnLockPhyReg(pObj); - break; - - default: - break; - } - } else { - //++ Turn off RF - switch(pObj->rfMode) { - case RFMD_RF: - if (!(pObj->PhyTest & BIT_0)) { - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR11, 0x15); - tmpvalue = pObj->GetReg(reg, ZD_CR11); - pObj->SetReg(reg, ZD_CR10, 0x81); - UnLockPhyReg(pObj); - tmpvalue &= 0xFF; - } - - if (!(pObj->PhyTest & BIT_2)) { - LockPhyReg(pObj); - HW_Set_IF_Synthesizer(pObj, 0x00000F); - UnLockPhyReg(pObj); - } - break; - - case AL2230_RF: - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR11, 0x04); - pObj->SetReg(reg, ZD_CR251, 0x2f); - UnLockPhyReg(pObj); - break; - - default: - break; - } - } + void *reg = pObj->reg; + U32 tmpvalue; + U8 ii; + + + if (on) { + //++ Turn on RF + switch(pObj->rfMode) { + case RFMD_RF: + if (!(pObj->PhyTest & BIT_2)) + HW_Set_IF_Synthesizer(pObj, 0x000007); + + if (!(pObj->PhyTest & BIT_0)) { + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR10, 0x89); + + pObj->SetReg(reg, ZD_CR11, 0x00); + tmpvalue = pObj->GetReg(reg, ZD_CR11); + tmpvalue &= 0xFF; + if (tmpvalue != 0x00) { + if (pObj->PhyTest & BIT_1) { + for (ii = 0; ii < 10; ii ++) { + pObj->DelayUs(1000); + pObj->SetReg(reg, ZD_CR11, 0x00); + tmpvalue = pObj->GetReg(reg, ZD_CR11); + if ((tmpvalue & 0xFF) == 0x00) + break; + } + } + } + + UnLockPhyReg(pObj); + } + break; + + case AL2230_RF: + case AL2230S_RF: + LockPhyReg(pObj); + + for (ii = 0; ii < 10; ii ++) { + pObj->DelayUs(1000); + pObj->SetReg(reg, ZD_CR11, 0x00); + tmpvalue = pObj->GetReg(reg, ZD_CR11); + if ((tmpvalue & 0xFF) == 0x00) + break; + } +#ifdef ZD1211 + pObj->SetReg(reg, ZD_CR251, 0x3f); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR251, 0x7f); +#else + #error "You do not define ZD1211 Model" +#endif + + UnLockPhyReg(pObj); + break; + + + default: + break; + } + } else { + //++ Turn off RF + switch(pObj->rfMode) { + case RFMD_RF: + if (!(pObj->PhyTest & BIT_0)) { + LockPhyReg(pObj); + + pObj->SetReg(reg, ZD_CR11, 0x15); + tmpvalue = pObj->GetReg(reg, ZD_CR11); + pObj->SetReg(reg, ZD_CR10, 0x81); + UnLockPhyReg(pObj); + tmpvalue &= 0xFF; + } + + if (!(pObj->PhyTest & BIT_2)) { + LockPhyReg(pObj); + HW_Set_IF_Synthesizer(pObj, 0x00000F); + UnLockPhyReg(pObj); + } + break; + + case AL2230_RF: + case AL2230S_RF: + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR11, 0x04); + pObj->SetReg(reg, ZD_CR251, 0x2f); + UnLockPhyReg(pObj); + break; + + + default: + break; + } + + } + } +#ifdef ZD1211 void HW_ResetPhy(zd_80211Obj_t *pObj) { - void *reg = pObj->reg; + void *reg = pObj->reg; + U32 phyOverwrite; + - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR0, 0x0a); - pObj->SetReg(reg, ZD_CR1, 0x06); - pObj->SetReg(reg, ZD_CR2, 0x26); - pObj->SetReg(reg, ZD_CR3, 0x38); - pObj->SetReg(reg, ZD_CR4, 0x80); - pObj->SetReg(reg, ZD_CR9, 0xa0); - pObj->SetReg(reg, ZD_CR10, 0x81); + LockPhyReg(pObj); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR0, 0x0a); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR0, 0x14); +#endif + + pObj->SetReg(reg, ZD_CR1, 0x06); + pObj->SetReg(reg, ZD_CR2, 0x26); + pObj->SetReg(reg, ZD_CR3, 0x38); + pObj->SetReg(reg, ZD_CR4, 0x80); + pObj->SetReg(reg, ZD_CR9, 0xa0); + pObj->SetReg(reg, ZD_CR10, 0x81); #if fTX_PWR_CTRL && fTX_GAIN_OFDM - //tmpvalue = pObj->GetReg(reg, ZD_CR11); - //tmpvalue |= BIT_6; - //pObj->SetReg(reg, ZD_CR11, tmpvalue); - pObj->SetReg(reg, ZD_CR11, BIT_6); -#else - pObj->SetReg(reg, ZD_CR11, 0x00); -#endif - - pObj->SetReg(reg, ZD_CR12, 0x7f); - pObj->SetReg(reg, ZD_CR13, 0x8c); - pObj->SetReg(reg, ZD_CR14, 0x80); - pObj->SetReg(reg, ZD_CR15, 0x3d); - pObj->SetReg(reg, ZD_CR16, 0x20); - pObj->SetReg(reg, ZD_CR17, 0x1e); - pObj->SetReg(reg, ZD_CR18, 0x0a); - pObj->SetReg(reg, ZD_CR19, 0x48); - pObj->SetReg(reg, ZD_CR20, 0x0c); - pObj->SetReg(reg, ZD_CR21, 0x0c); - pObj->SetReg(reg, ZD_CR22, 0x23); - pObj->SetReg(reg, ZD_CR23, 0x90); - pObj->SetReg(reg, ZD_CR24, 0x14); - pObj->SetReg(reg, ZD_CR25, 0x40); - pObj->SetReg(reg, ZD_CR26, 0x10); - pObj->SetReg(reg, ZD_CR27, 0x19); - pObj->SetReg(reg, ZD_CR28, 0x7f); - pObj->SetReg(reg, ZD_CR29, 0x80); + //tmpvalue = pObj->GetReg(reg, ZD_CR11); + //tmpvalue |= BIT_6; + //pObj->SetReg(reg, ZD_CR11, tmpvalue); + pObj->SetReg(reg, ZD_CR11, BIT_6); +#else + + pObj->SetReg(reg, ZD_CR11, 0x00); +#endif + + pObj->SetReg(reg, ZD_CR12, 0x7f); + pObj->SetReg(reg, ZD_CR13, 0x8c); + pObj->SetReg(reg, ZD_CR14, 0x80); + pObj->SetReg(reg, ZD_CR15, 0x3d); + pObj->SetReg(reg, ZD_CR16, 0x20); + pObj->SetReg(reg, ZD_CR17, 0x1e); + pObj->SetReg(reg, ZD_CR18, 0x0a); + pObj->SetReg(reg, ZD_CR19, 0x48); + pObj->SetReg(reg, ZD_CR20, 0x0c); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR21, 0x0c); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR21, 0x0e); +#endif + + pObj->SetReg(reg, ZD_CR22, 0x23); + pObj->SetReg(reg, ZD_CR23, 0x90); + pObj->SetReg(reg, ZD_CR24, 0x14); + pObj->SetReg(reg, ZD_CR25, 0x40); + pObj->SetReg(reg, ZD_CR26, 0x10); + pObj->SetReg(reg, ZD_CR27, 0x19); + pObj->SetReg(reg, ZD_CR28, 0x7f); + pObj->SetReg(reg, ZD_CR29, 0x80); + #ifndef ASIC - pObj->SetReg(reg, ZD_CR30, 0x4b); + + pObj->SetReg(reg, ZD_CR30, 0x4b); #else - pObj->SetReg(reg, ZD_CR30, 0x49); + + pObj->SetReg(reg, ZD_CR30, 0x49); #endif - pObj->SetReg(reg, ZD_CR31, 0x60); - pObj->SetReg(reg, ZD_CR32, 0x43); - pObj->SetReg(reg, ZD_CR33, 0x08); - pObj->SetReg(reg, ZD_CR34, 0x06); - pObj->SetReg(reg, ZD_CR35, 0x0a); - pObj->SetReg(reg, ZD_CR36, 0x00); - pObj->SetReg(reg, ZD_CR37, 0x00); - pObj->SetReg(reg, ZD_CR38, 0x38); - pObj->SetReg(reg, ZD_CR39, 0x0c); - pObj->SetReg(reg, ZD_CR40, 0x84); - pObj->SetReg(reg, ZD_CR41, 0x2a); - pObj->SetReg(reg, ZD_CR42, 0x80); - pObj->SetReg(reg, ZD_CR43, 0x10); - pObj->SetReg(reg, ZD_CR44, 0x12); - pObj->SetReg(reg, ZD_CR46, 0xff); - pObj->SetReg(reg, ZD_CR47, 0x08); - pObj->SetReg(reg, ZD_CR48, 0x26); - pObj->SetReg(reg, ZD_CR49, 0x5b); - pObj->SetReg(reg, ZD_CR64, 0xd0); - pObj->SetReg(reg, ZD_CR65, 0x04); - pObj->SetReg(reg, ZD_CR66, 0x58); - pObj->SetReg(reg, ZD_CR67, 0xc9); - pObj->SetReg(reg, ZD_CR68, 0x88); - pObj->SetReg(reg, ZD_CR69, 0x41); - pObj->SetReg(reg, ZD_CR70, 0x23); - pObj->SetReg(reg, ZD_CR71, 0x10); - pObj->SetReg(reg, ZD_CR72, 0xff); - pObj->SetReg(reg, ZD_CR73, 0x32); - pObj->SetReg(reg, ZD_CR74, 0x30); - pObj->SetReg(reg, ZD_CR75, 0x65); - pObj->SetReg(reg, ZD_CR76, 0x41); - pObj->SetReg(reg, ZD_CR77, 0x1b); - pObj->SetReg(reg, ZD_CR78, 0x30); - pObj->SetReg(reg, ZD_CR79, 0x68); - pObj->SetReg(reg, ZD_CR80, 0x64); - pObj->SetReg(reg, ZD_CR81, 0x64); - pObj->SetReg(reg, ZD_CR82, 0x00); - pObj->SetReg(reg, ZD_CR83, 0x00); - pObj->SetReg(reg, ZD_CR84, 0x00); - pObj->SetReg(reg, ZD_CR85, 0x02); - pObj->SetReg(reg, ZD_CR86, 0x00); - pObj->SetReg(reg, ZD_CR87, 0x00); - pObj->SetReg(reg, ZD_CR88, 0xff); - pObj->SetReg(reg, ZD_CR89, 0xfc); - pObj->SetReg(reg, ZD_CR90, 0x00); - pObj->SetReg(reg, ZD_CR91, 0x00); - pObj->SetReg(reg, ZD_CR92, 0x00); - pObj->SetReg(reg, ZD_CR93, 0x08); - pObj->SetReg(reg, ZD_CR94, 0x00); - pObj->SetReg(reg, ZD_CR95, 0x00); - pObj->SetReg(reg, ZD_CR96, 0xff); - pObj->SetReg(reg, ZD_CR97, 0xe7); - pObj->SetReg(reg, ZD_CR98, 0x00); - pObj->SetReg(reg, ZD_CR99, 0x00); - pObj->SetReg(reg, ZD_CR100, 0x00); - pObj->SetReg(reg, ZD_CR101, 0xae); - pObj->SetReg(reg, ZD_CR102, 0x02); - pObj->SetReg(reg, ZD_CR103, 0x00); - pObj->SetReg(reg, ZD_CR104, 0x03); - pObj->SetReg(reg, ZD_CR105, 0x65); - pObj->SetReg(reg, ZD_CR106, 0x04); - pObj->SetReg(reg, ZD_CR107, 0x00); - pObj->SetReg(reg, ZD_CR108, 0x0a); - pObj->SetReg(reg, ZD_CR109, 0xaa); - pObj->SetReg(reg, ZD_CR110, 0xaa); - pObj->SetReg(reg, ZD_CR111, 0x25); - pObj->SetReg(reg, ZD_CR112, 0x25); - pObj->SetReg(reg, ZD_CR113, 0x00); - pObj->SetReg(reg, ZD_CR119, 0x1e); - pObj->SetReg(reg, ZD_CR125, 0x90); - pObj->SetReg(reg, ZD_CR126, 0x00); - pObj->SetReg(reg, ZD_CR127, 0x00); + + pObj->SetReg(reg, ZD_CR31, 0x60); + pObj->SetReg(reg, ZD_CR32, 0x43); + pObj->SetReg(reg, ZD_CR33, 0x08); + pObj->SetReg(reg, ZD_CR34, 0x06); + pObj->SetReg(reg, ZD_CR35, 0x0a); + pObj->SetReg(reg, ZD_CR36, 0x00); + pObj->SetReg(reg, ZD_CR37, 0x00); + pObj->SetReg(reg, ZD_CR38, 0x38); + pObj->SetReg(reg, ZD_CR39, 0x0c); + pObj->SetReg(reg, ZD_CR40, 0x84); + pObj->SetReg(reg, ZD_CR41, 0x2a); + pObj->SetReg(reg, ZD_CR42, 0x80); + pObj->SetReg(reg, ZD_CR43, 0x10); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR44, 0x12); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR44, 0x33); +#endif + + pObj->SetReg(reg, ZD_CR46, 0xff); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR47, 0x1E); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR47, 0x1E); +#endif + + pObj->SetReg(reg, ZD_CR48, 0x26); + pObj->SetReg(reg, ZD_CR49, 0x5b); + + + pObj->SetReg(reg, ZD_CR64, 0xd0); + pObj->SetReg(reg, ZD_CR65, 0x04); + pObj->SetReg(reg, ZD_CR66, 0x58); + pObj->SetReg(reg, ZD_CR67, 0xc9); + pObj->SetReg(reg, ZD_CR68, 0x88); + pObj->SetReg(reg, ZD_CR69, 0x41); + pObj->SetReg(reg, ZD_CR70, 0x23); + pObj->SetReg(reg, ZD_CR71, 0x10); + pObj->SetReg(reg, ZD_CR72, 0xff); + pObj->SetReg(reg, ZD_CR73, 0x32); + pObj->SetReg(reg, ZD_CR74, 0x30); + pObj->SetReg(reg, ZD_CR75, 0x65); + + pObj->SetReg(reg, ZD_CR76, 0x41); + pObj->SetReg(reg, ZD_CR77, 0x1b); + pObj->SetReg(reg, ZD_CR78, 0x30); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR79, 0x68); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR79, 0xf0); +#endif + + pObj->SetReg(reg, ZD_CR80, 0x64); + pObj->SetReg(reg, ZD_CR81, 0x64); + pObj->SetReg(reg, ZD_CR82, 0x00); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR83, 0x00); + pObj->SetReg(reg, ZD_CR84, 0x00); + pObj->SetReg(reg, ZD_CR85, 0x02); + pObj->SetReg(reg, ZD_CR86, 0x00); + pObj->SetReg(reg, ZD_CR87, 0x00); + pObj->SetReg(reg, ZD_CR88, 0xff); + pObj->SetReg(reg, ZD_CR89, 0xfc); + pObj->SetReg(reg, ZD_CR90, 0x00); + pObj->SetReg(reg, ZD_CR91, 0x00); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR83, 0x24); + pObj->SetReg(reg, ZD_CR84, 0x04); + pObj->SetReg(reg, ZD_CR85, 0x00); + pObj->SetReg(reg, ZD_CR86, 0x0c); + pObj->SetReg(reg, ZD_CR87, 0x12); + pObj->SetReg(reg, ZD_CR88, 0x0c); + pObj->SetReg(reg, ZD_CR89, 0x00); + pObj->SetReg(reg, ZD_CR90, 0x58); + pObj->SetReg(reg, ZD_CR91, 0x04); +#endif + + + pObj->SetReg(reg, ZD_CR92, 0x00); + pObj->SetReg(reg, ZD_CR93, 0x08); + pObj->SetReg(reg, ZD_CR94, 0x00); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR95, 0x00); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR95, 0x20); +#endif + + pObj->SetReg(reg, ZD_CR96, 0xff); + pObj->SetReg(reg, ZD_CR97, 0xe7); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR98, 0x00); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR98, 0x35); +#endif + + pObj->SetReg(reg, ZD_CR99, 0x00); + pObj->SetReg(reg, ZD_CR100, 0x00); + pObj->SetReg(reg, ZD_CR101, 0xae); + pObj->SetReg(reg, ZD_CR102, 0x02); + pObj->SetReg(reg, ZD_CR103, 0x00); + pObj->SetReg(reg, ZD_CR104, 0x03); + pObj->SetReg(reg, ZD_CR105, 0x65); + pObj->SetReg(reg, ZD_CR106, 0x04); + pObj->SetReg(reg, ZD_CR107, 0x00); + pObj->SetReg(reg, ZD_CR108, 0x0a); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR109, 0xaa); + pObj->SetReg(reg, ZD_CR110, 0xaa); + pObj->SetReg(reg, ZD_CR111, 0x25); + pObj->SetReg(reg, ZD_CR112, 0x25); + pObj->SetReg(reg, ZD_CR113, 0x00); + + pObj->SetReg(reg, ZD_CR119, 0x1e); + + pObj->SetReg(reg, ZD_CR125, 0x90); + pObj->SetReg(reg, ZD_CR126, 0x00); + pObj->SetReg(reg, ZD_CR127, 0x00); +#elif defined(ZD1211B) + + pObj->SetReg(reg,ZD_CR109, 0x27); + pObj->SetReg(reg,ZD_CR110, 0x27); + pObj->SetReg(reg,ZD_CR111, 0x27); + pObj->SetReg(reg,ZD_CR112, 0x27); + pObj->SetReg(reg,ZD_CR113, 0x27); + pObj->SetReg(reg,ZD_CR114, 0x27); + pObj->SetReg(reg,ZD_CR115, 0x26); + pObj->SetReg(reg,ZD_CR116, 0x24); + pObj->SetReg(reg,ZD_CR117, 0xfc); + pObj->SetReg(reg,ZD_CR118, 0xfa); + pObj->SetReg(reg,ZD_CR119, 0x1e); + pObj->SetReg(reg,ZD_CR125, 0x90); + pObj->SetReg(reg,ZD_CR126, 0x00); + pObj->SetReg(reg,ZD_CR127, 0x00); + pObj->SetReg(reg,ZD_CR128, 0x14); + pObj->SetReg(reg,ZD_CR129, 0x12); + pObj->SetReg(reg,ZD_CR130, 0x10); + pObj->SetReg(reg,ZD_CR131, 0x0c); + pObj->SetReg(reg,ZD_CR136, 0xdf); + pObj->SetReg(reg,ZD_CR137, 0xa0); + pObj->SetReg(reg,ZD_CR138, 0xa8); + pObj->SetReg(reg,ZD_CR139, 0xb4); +#endif + + #if (defined(GCCK) && defined(OFDM)) - pObj->SetReg(reg, ZD_CR5, 0x00); - pObj->SetReg(reg, ZD_CR6, 0x00); - pObj->SetReg(reg, ZD_CR7, 0x00); - pObj->SetReg(reg, ZD_CR8, 0x00); - pObj->SetReg(reg, ZD_CR9, 0x20); - pObj->SetReg(reg, ZD_CR12, 0xf0); - pObj->SetReg(reg, ZD_CR20, 0x0e); - pObj->SetReg(reg, ZD_CR21, 0x0e); - pObj->SetReg(reg, ZD_CR27, 0x10); - pObj->SetReg(reg, ZD_CR44, 0x33); - pObj->SetReg(reg, ZD_CR47, 0x30); - pObj->SetReg(reg, ZD_CR83, 0x24); - pObj->SetReg(reg, ZD_CR84, 0x04); - pObj->SetReg(reg, ZD_CR85, 0x00); - pObj->SetReg(reg, ZD_CR86, 0x0C); - pObj->SetReg(reg, ZD_CR87, 0x12); - pObj->SetReg(reg, ZD_CR88, 0x0C); - pObj->SetReg(reg, ZD_CR89, 0x00); - pObj->SetReg(reg, ZD_CR90, 0x10); - pObj->SetReg(reg, ZD_CR91, 0x08); - pObj->SetReg(reg, ZD_CR93, 0x00); - pObj->SetReg(reg, ZD_CR94, 0x01); - pObj->SetReg(reg, ZD_CR95, 0x0); - pObj->SetReg(reg, ZD_CR96, 0x50); - pObj->SetReg(reg, ZD_CR97, 0x37); - pObj->SetReg(reg, ZD_CR98, 0x35); - pObj->SetReg(reg, ZD_CR101, 0x13); - pObj->SetReg(reg, ZD_CR102, 0x27); - pObj->SetReg(reg, ZD_CR103, 0x27); - pObj->SetReg(reg, ZD_CR104, 0x18); - pObj->SetReg(reg, ZD_CR105, 0x12); - pObj->SetReg(reg, ZD_CR109, 0x27); - pObj->SetReg(reg, ZD_CR110, 0x27); - pObj->SetReg(reg, ZD_CR111, 0x27); - pObj->SetReg(reg, ZD_CR112, 0x27); - pObj->SetReg(reg, ZD_CR113, 0x27); - pObj->SetReg(reg, ZD_CR114, 0x27); - pObj->SetReg(reg, ZD_CR115, 0x26); - pObj->SetReg(reg, ZD_CR116, 0x24); - pObj->SetReg(reg, ZD_CR117, 0xfc); - pObj->SetReg(reg, ZD_CR118, 0xfa); - pObj->SetReg(reg, ZD_CR120, 0x4f); //3d24 - pObj->SetReg(reg, ZD_CR125, 0xaa); //4326 - pObj->SetReg(reg, ZD_CR127, 0x03); //4326 - pObj->SetReg(reg, ZD_CR128, 0x14); - pObj->SetReg(reg, ZD_CR129, 0x12); - pObj->SetReg(reg, ZD_CR130, 0x10); - pObj->SetReg(reg, ZD_CR131, 0x0C); - pObj->SetReg(reg, ZD_CR136, 0xdf); - pObj->SetReg(reg, ZD_CR137, 0x40); - pObj->SetReg(reg, ZD_CR138, 0xa0); - pObj->SetReg(reg, ZD_CR139, 0xb0); - pObj->SetReg(reg, ZD_CR140, 0x99); - pObj->SetReg(reg, ZD_CR141, 0x82); - pObj->SetReg(reg, ZD_CR142, 0x54); - pObj->SetReg(reg, ZD_CR143, 0x1c); - pObj->SetReg(reg, ZD_CR144, 0x6c); - pObj->SetReg(reg, ZD_CR147, 0x07); - pObj->SetReg(reg, ZD_CR148, 0x4c); - pObj->SetReg(reg, ZD_CR149, 0x50); - pObj->SetReg(reg, ZD_CR150, 0x0e); - pObj->SetReg(reg, ZD_CR151, 0x18); - pObj->SetReg(reg, ZD_CR160, 0xfe); - pObj->SetReg(reg, ZD_CR161, 0xee); - pObj->SetReg(reg, ZD_CR162, 0xaa); - pObj->SetReg(reg, ZD_CR163, 0xfa); - pObj->SetReg(reg, ZD_CR164, 0xfa); - pObj->SetReg(reg, ZD_CR165, 0xea); - pObj->SetReg(reg, ZD_CR166, 0xbe); - pObj->SetReg(reg, ZD_CR167, 0xbe); - pObj->SetReg(reg, ZD_CR168, 0x6a); - pObj->SetReg(reg, ZD_CR169, 0xba); - pObj->SetReg(reg, ZD_CR170, 0xba); - pObj->SetReg(reg, ZD_CR171, 0xba); - // Note: CR204 must lead the CR203 - pObj->SetReg(reg, ZD_CR204, 0x7d); - pObj->SetReg(reg, ZD_CR203, 0x30); + #ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR5, 0x00); + pObj->SetReg(reg, ZD_CR6, 0x00); + pObj->SetReg(reg, ZD_CR7, 0x00); + pObj->SetReg(reg, ZD_CR8, 0x00); +#endif + + pObj->SetReg(reg, ZD_CR9, 0x20); + pObj->SetReg(reg, ZD_CR12, 0xf0); + pObj->SetReg(reg, ZD_CR20, 0x0e); + pObj->SetReg(reg, ZD_CR21, 0x0e); + pObj->SetReg(reg, ZD_CR27, 0x10); +#ifdef HOST_IF_USB + + pObj->SetReg(reg, ZD_CR44, 0x33); +#else + + pObj->SetReg(reg, ZD_CR44, 0x33); #endif - UnLockPhyReg(pObj); - return; + + pObj->SetReg(reg, ZD_CR47, 0x1E); + pObj->SetReg(reg, ZD_CR83, 0x24); + pObj->SetReg(reg, ZD_CR84, 0x04); + pObj->SetReg(reg, ZD_CR85, 0x00); + pObj->SetReg(reg, ZD_CR86, 0x0C); + pObj->SetReg(reg, ZD_CR87, 0x12); + pObj->SetReg(reg, ZD_CR88, 0x0C); + pObj->SetReg(reg, ZD_CR89, 0x00); + pObj->SetReg(reg, ZD_CR90, 0x10); + pObj->SetReg(reg, ZD_CR91, 0x08); + pObj->SetReg(reg, ZD_CR93, 0x00); + + pObj->SetReg(reg, ZD_CR94, 0x01); +#ifdef HOST_IF_USB + + pObj->SetReg(reg, ZD_CR95, 0x0); +#else + + pObj->SetReg(reg, ZD_CR95, 0x20); //3d24 + + +#endif + + pObj->SetReg(reg, ZD_CR96, 0x50); + pObj->SetReg(reg, ZD_CR97, 0x37); +#ifdef HOST_IF_USB + + pObj->SetReg(reg, ZD_CR98, 0x35); +#else + + pObj->SetReg(reg, ZD_CR98, 0x8d); //4326 +#endif + + pObj->SetReg(reg, ZD_CR101, 0x13); + pObj->SetReg(reg, ZD_CR102, 0x27); + pObj->SetReg(reg, ZD_CR103, 0x27); + pObj->SetReg(reg, ZD_CR104, 0x18); + pObj->SetReg(reg, ZD_CR105, 0x12); + pObj->SetReg(reg, ZD_CR109, 0x27); + pObj->SetReg(reg, ZD_CR110, 0x27); + pObj->SetReg(reg, ZD_CR111, 0x27); + pObj->SetReg(reg, ZD_CR112, 0x27); + pObj->SetReg(reg, ZD_CR113, 0x27); + pObj->SetReg(reg, ZD_CR114, 0x27); + + pObj->SetReg(reg, ZD_CR115, 0x26); + pObj->SetReg(reg, ZD_CR116, 0x24); + + pObj->SetReg(reg, ZD_CR117, 0xfc); + pObj->SetReg(reg, ZD_CR118, 0xfa); + pObj->SetReg(reg, ZD_CR120, 0x4f); //3d24 +#ifndef HOST_IF_USB + + pObj->SetReg(reg, ZD_CR123, 0x27); //3d24 +#endif + + pObj->SetReg(reg, ZD_CR125, 0xaa); //4326 + pObj->SetReg(reg, ZD_CR127, 0x03); //4326 + pObj->SetReg(reg, ZD_CR128, 0x14); + pObj->SetReg(reg, ZD_CR129, 0x12); + pObj->SetReg(reg, ZD_CR130, 0x10); + pObj->SetReg(reg, ZD_CR131, 0x0C); + pObj->SetReg(reg, ZD_CR136, 0xdf); + pObj->SetReg(reg, ZD_CR137, 0x40); + pObj->SetReg(reg, ZD_CR138, 0xa0); + pObj->SetReg(reg, ZD_CR139, 0xb0); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR140, 0x99); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR140, 0x98); //4407 +#endif + + pObj->SetReg(reg, ZD_CR141, 0x82); +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_CR142, 0x54); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_CR142, 0x53); //4407 +#endif + + pObj->SetReg(reg, ZD_CR143, 0x1c); + pObj->SetReg(reg, ZD_CR144, 0x6c); + pObj->SetReg(reg, ZD_CR147, 0x07); + pObj->SetReg(reg, ZD_CR148, 0x4c); + pObj->SetReg(reg, ZD_CR149, 0x50); + pObj->SetReg(reg, ZD_CR150, 0x0e); + pObj->SetReg(reg, ZD_CR151, 0x18); +#ifdef ZD1211B + + pObj->SetReg(reg, ZD_CR159, 0x70); //3d24 +#endif + + pObj->SetReg(reg, ZD_CR160, 0xfe); + pObj->SetReg(reg, ZD_CR161, 0xee); + pObj->SetReg(reg, ZD_CR162, 0xaa); + pObj->SetReg(reg, ZD_CR163, 0xfa); + pObj->SetReg(reg, ZD_CR164, 0xfa); + + pObj->SetReg(reg, ZD_CR165, 0xea); + pObj->SetReg(reg, ZD_CR166, 0xbe); + pObj->SetReg(reg, ZD_CR167, 0xbe); + pObj->SetReg(reg, ZD_CR168, 0x6a); + pObj->SetReg(reg, ZD_CR169, 0xba); + pObj->SetReg(reg, ZD_CR170, 0xba); + pObj->SetReg(reg, ZD_CR171, 0xba); + // Note: CR204 must lead the CR203 + pObj->SetReg(reg, ZD_CR204, 0x7d); + pObj->SetReg(reg, ZD_CR203, 0x30); +#ifndef HOST_IF_USB + + pObj->SetReg(reg, ZD_CR240, 0x80); +#endif + +#endif + //if (pObj->ChipVer == ZD_1211) + { + if (pObj->HWFeature & BIT_13) //6321 Bin 4 Tx IQ balance for ZD1212 only + { + phyOverwrite = pObj->GetReg(reg, E2P_PHY_REG); + pObj->SetReg(reg, ZD_CR157, ((phyOverwrite >> 8) & 0xff)); //make sure no one will overwrite CR157 again + } + } + + + + UnLockPhyReg(pObj); + return; } +#elif defined(ZD1211B) +void HW_ResetPhy(zd_80211Obj_t *pObj) +{ + void *reg = pObj->reg; + + // Get Phy-Config permission + LockPhyReg(pObj); + + pObj->SetReg(reg,ZD_CR0, 0x14); + pObj->SetReg(reg,ZD_CR1, 0x06); + pObj->SetReg(reg,ZD_CR2, 0x26); + pObj->SetReg(reg,ZD_CR3, 0x38); + pObj->SetReg(reg,ZD_CR4, 0x80); + pObj->SetReg(reg,ZD_CR9, 0xe0); + pObj->SetReg(reg,ZD_CR10, 0x81); + //``JWEI 2003/12/26 +#if fTX_PWR_CTRL && fTX_GAIN_OFDM + + pObj->SetReg(reg, ZD_CR11, BIT_6); +#else + +pObj->SetReg(reg,ZD_CR11, 0x00); +#endif + + pObj->SetReg(reg,ZD_CR12, 0xf0); + pObj->SetReg(reg,ZD_CR13, 0x8c); + pObj->SetReg(reg,ZD_CR14, 0x80); + pObj->SetReg(reg,ZD_CR15, 0x3d); + pObj->SetReg(reg,ZD_CR16, 0x20); + pObj->SetReg(reg,ZD_CR17, 0x1e); + pObj->SetReg(reg,ZD_CR18, 0x0a); + pObj->SetReg(reg,ZD_CR19, 0x48); + pObj->SetReg(reg,ZD_CR20, 0x10);//Org:0x0E,ComTrend:RalLink AP + pObj->SetReg(reg,ZD_CR21, 0x0e); + pObj->SetReg(reg,ZD_CR22, 0x23); + pObj->SetReg(reg,ZD_CR23, 0x90); + pObj->SetReg(reg,ZD_CR24, 0x14); + pObj->SetReg(reg,ZD_CR25, 0x40); + pObj->SetReg(reg,ZD_CR26, 0x10); + pObj->SetReg(reg,ZD_CR27, 0x10); + pObj->SetReg(reg,ZD_CR28, 0x7f); + pObj->SetReg(reg,ZD_CR29, 0x80); +#ifndef ASIC + // For FWT + pObj->SetReg(reg,ZD_CR30, 0x4b); +#else +// For Jointly decoder +pObj->SetReg(reg,ZD_CR30, 0x49); +#endif + + pObj->SetReg(reg,ZD_CR31, 0x60); + pObj->SetReg(reg,ZD_CR32, 0x43); + pObj->SetReg(reg,ZD_CR33, 0x08); + pObj->SetReg(reg,ZD_CR34, 0x06); + pObj->SetReg(reg,ZD_CR35, 0x0a); + pObj->SetReg(reg,ZD_CR36, 0x00); + pObj->SetReg(reg,ZD_CR37, 0x00); + pObj->SetReg(reg,ZD_CR38, 0x38); + pObj->SetReg(reg,ZD_CR39, 0x0c); + pObj->SetReg(reg,ZD_CR40, 0x84); + pObj->SetReg(reg,ZD_CR41, 0x2a); + pObj->SetReg(reg,ZD_CR42, 0x80); + pObj->SetReg(reg,ZD_CR43, 0x10); + pObj->SetReg(reg,ZD_CR44, 0x33); + pObj->SetReg(reg,ZD_CR46, 0xff); + pObj->SetReg(reg,ZD_CR47, 0x1E); + pObj->SetReg(reg,ZD_CR48, 0x26); + pObj->SetReg(reg,ZD_CR49, 0x5b); + pObj->SetReg(reg,ZD_CR64, 0xd0); + pObj->SetReg(reg,ZD_CR65, 0x04); + pObj->SetReg(reg,ZD_CR66, 0x58); + pObj->SetReg(reg,ZD_CR67, 0xc9); + pObj->SetReg(reg,ZD_CR68, 0x88); + pObj->SetReg(reg,ZD_CR69, 0x41); + pObj->SetReg(reg,ZD_CR70, 0x23); + pObj->SetReg(reg,ZD_CR71, 0x10); + pObj->SetReg(reg,ZD_CR72, 0xff); + pObj->SetReg(reg,ZD_CR73, 0x32); + pObj->SetReg(reg,ZD_CR74, 0x30); + pObj->SetReg(reg,ZD_CR75, 0x65); + pObj->SetReg(reg,ZD_CR76, 0x41); + pObj->SetReg(reg,ZD_CR77, 0x1b); + pObj->SetReg(reg,ZD_CR78, 0x30); + pObj->SetReg(reg,ZD_CR79, 0xf0); + pObj->SetReg(reg,ZD_CR80, 0x64); + pObj->SetReg(reg,ZD_CR81, 0x64); + pObj->SetReg(reg,ZD_CR82, 0x00); + pObj->SetReg(reg,ZD_CR83, 0x24); + pObj->SetReg(reg,ZD_CR84, 0x04); + pObj->SetReg(reg,ZD_CR85, 0x00); + pObj->SetReg(reg,ZD_CR86, 0x0c); + pObj->SetReg(reg,ZD_CR87, 0x12); + pObj->SetReg(reg,ZD_CR88, 0x0c); + pObj->SetReg(reg,ZD_CR89, 0x00); + pObj->SetReg(reg,ZD_CR90, 0x58); + pObj->SetReg(reg,ZD_CR91, 0x04); + pObj->SetReg(reg,ZD_CR92, 0x00); + pObj->SetReg(reg,ZD_CR93, 0x00); + pObj->SetReg(reg,ZD_CR94, 0x01); + pObj->SetReg(reg,ZD_CR95, 0x20); // ZD1211B + pObj->SetReg(reg,ZD_CR96, 0x50); + pObj->SetReg(reg,ZD_CR97, 0x37); + pObj->SetReg(reg,ZD_CR98, 0x35); + pObj->SetReg(reg,ZD_CR99, 0x00); + pObj->SetReg(reg,ZD_CR100, 0x01); + pObj->SetReg(reg,ZD_CR101, 0x13); + pObj->SetReg(reg,ZD_CR102, 0x27); + pObj->SetReg(reg,ZD_CR103, 0x27); + pObj->SetReg(reg,ZD_CR104, 0x18); + pObj->SetReg(reg,ZD_CR105, 0x12); + pObj->SetReg(reg,ZD_CR106, 0x04); + pObj->SetReg(reg,ZD_CR107, 0x00); + pObj->SetReg(reg,ZD_CR108, 0x0a); + pObj->SetReg(reg,ZD_CR109, 0x27); + pObj->SetReg(reg,ZD_CR110, 0x27); + pObj->SetReg(reg,ZD_CR111, 0x27); + pObj->SetReg(reg,ZD_CR112, 0x27); + pObj->SetReg(reg,ZD_CR113, 0x27); + pObj->SetReg(reg,ZD_CR114, 0x27); + pObj->SetReg(reg,ZD_CR115, 0x26); + pObj->SetReg(reg,ZD_CR116, 0x24); + pObj->SetReg(reg,ZD_CR117, 0xfc); + pObj->SetReg(reg,ZD_CR118, 0xfa); + pObj->SetReg(reg,ZD_CR119, 0x1e); + pObj->SetReg(reg,ZD_CR125, 0x90); + pObj->SetReg(reg,ZD_CR126, 0x00); + pObj->SetReg(reg,ZD_CR127, 0x00); + pObj->SetReg(reg,ZD_CR128, 0x14); + pObj->SetReg(reg,ZD_CR129, 0x12); + pObj->SetReg(reg,ZD_CR130, 0x10); + pObj->SetReg(reg,ZD_CR131, 0x0c); + pObj->SetReg(reg,ZD_CR136, 0xdf); + pObj->SetReg(reg,ZD_CR137, 0xa0); + pObj->SetReg(reg,ZD_CR138, 0xa8); + pObj->SetReg(reg,ZD_CR139, 0xb4); + pObj->SetReg(reg,ZD_CR140, 0x98); + pObj->SetReg(reg,ZD_CR141, 0x82); + pObj->SetReg(reg,ZD_CR142, 0x53); + pObj->SetReg(reg,ZD_CR143, 0x1c); + pObj->SetReg(reg,ZD_CR144, 0x6c); + pObj->SetReg(reg,ZD_CR147, 0x07); + pObj->SetReg(reg,ZD_CR148, 0x40); + pObj->SetReg(reg,ZD_CR149, 0x40); // Org:0x50 //ComTrend:RalLink AP + pObj->SetReg(reg,ZD_CR150, 0x14);//Org:0x0E //ComTrend:RalLink AP + pObj->SetReg(reg,ZD_CR151, 0x18); + pObj->SetReg(reg,ZD_CR159, 0x70); + pObj->SetReg(reg,ZD_CR160, 0xfe); + pObj->SetReg(reg,ZD_CR161, 0xee); + pObj->SetReg(reg,ZD_CR162, 0xaa); + pObj->SetReg(reg,ZD_CR163, 0xfa); + pObj->SetReg(reg,ZD_CR164, 0xfa); + pObj->SetReg(reg,ZD_CR165, 0xea); + pObj->SetReg(reg,ZD_CR166, 0xbe); + pObj->SetReg(reg,ZD_CR167, 0xbe); + pObj->SetReg(reg,ZD_CR168, 0x6a); + pObj->SetReg(reg,ZD_CR169, 0xba); + pObj->SetReg(reg,ZD_CR170, 0xba); + pObj->SetReg(reg,ZD_CR171, 0xba); + // Note: CR204 must lead the CR203 + pObj->SetReg(reg,ZD_CR204, 0x7d); + pObj->SetReg(reg,ZD_CR203, 0x30); + + // Release Phy-Config permission + // if (pObj->ChipVer == ZD_1211) + // { + // if (pObj->HWFeature & BIT_13) //6321 Bin 4 Tx IQ balance for ZD1212 only + // { + // phyOverwrite = pObj->GetReg(reg, E2P_PHY_REG); + // pObj->SetReg(reg, ZD_CR157, ((phyOverwrite >> 8) & 0xff)); //make sure no one will overwrite CR157 again + // } + // } + + UnLockPhyReg(pObj); + + + return; +} + +#endif void HW_InitHMAC(zd_80211Obj_t *pObj) { - void *reg = pObj->reg; + void *reg = pObj->reg; + + // Set GPI_EN be zero. ie. Disable GPI (Requested by Ahu) + //pObj->SetReg(reg, ZD_GPI_EN, 0x00); + + // Use Ack_Timeout_Ext to tolerance some peers that response slowly. + // The influence is that the retry frame will be less competitive. It's acceptable. + pObj->SetReg(reg, ZD_Ack_Timeout_Ext, 0x20); //only bit0-bit5 are valid + + pObj->SetReg(reg, ZD_ADDA_MBIAS_WarmTime, 0x30000808); + + /* Set RetryMax 8 */ +#ifdef ZD1211 + + pObj->SetReg(reg, ZD_RetryMAX, 0x2); +#elif defined(ZD1211B) + + pObj->SetReg(reg, ZD_RetryMAX, 0x02020202); + + pObj->SetReg(reg,0xB0C,0x007f003f); + pObj->SetReg(reg,0xB08,0x007f003f); + pObj->SetReg(reg,0xB04,0x003f001f); + pObj->SetReg(reg,0xB00,0x001f000f); + //set AIFS AC0 - AC3 + pObj->SetReg(reg,0xB10,0x00280028); + pObj->SetReg(reg,0xB14,0x008C003C); + //set TXOP AC0 - AC3 + pObj->SetReg(reg,0xB20,0x01800824); + //pObj->SetReg(reg,0xB20,0x00800a28); + +#endif + + /* Turn off sniffer mode */ + pObj->SetReg(reg, ZD_SnifferOn, 0); - // Set GPI_EN be zero. ie. Disable GPI (Requested by Ahu) - // pObj->SetReg(reg, ZD_GPI_EN, 0x00); - // Use Ack_Timeout_Ext to tolerance some peers that response slowly. - // The influence is that the retry frame will be less competitive. It's acceptable. - pObj->SetReg(reg, ZD_Ack_Timeout_Ext, 0x20); //only bit0-bit5 are valid - pObj->SetReg(reg, ZD_ADDA_MBIAS_WarmTime, 0x30000808); - /* Set RetryMax 8 */ - pObj->SetReg(reg, ZD_RetryMAX, 0x2); - - /* Turn off sniffer mode */ - pObj->SetReg(reg, ZD_SnifferOn, 0); - - /* Set Rx filter*/ - // filter Beacon and unfilter PS-Poll - pObj->SetReg(reg, ZD_Rx_Filter, AP_RX_FILTER); - - /* Set Hashing table */ - pObj->SetReg(reg, ZD_GroupHash_P1, 0x00); - pObj->SetReg(reg, ZD_GroupHash_P2, 0x80000000); - pObj->SetReg(reg, ZD_CtlReg1, 0xa4); - pObj->SetReg(reg, ZD_ADDA_PwrDwn_Ctrl, 0x7f); - - /* Initialize BCNATIM needed registers */ - pObj->SetReg(reg, ZD_BCNPLCPCfg, 0x00f00401); - pObj->SetReg(reg, ZD_PHYDelay, 0x00); + /* Set Rx filter*/ + // filter Beacon and unfilter PS-Poll + pObj->SetReg(reg, ZD_Rx_Filter, AP_RX_FILTER); + + /* Set Hashing table */ + pObj->SetReg(reg, ZD_GroupHash_P1, 0x00); + pObj->SetReg(reg, ZD_GroupHash_P2, 0x80000000); + + pObj->SetReg(reg, ZD_CtlReg1, 0xa4); + pObj->SetReg(reg, ZD_ADDA_PwrDwn_Ctrl, 0x7f); + + /* Initialize BCNATIM needed registers */ + pObj->SetReg(reg, ZD_BCNPLCPCfg, 0x00f00401); + pObj->SetReg(reg, ZD_PHYDelay, 0x00); #if defined(OFDM) - pObj->SetReg(reg, ZD_Ack_Timeout_Ext, 0x80); - pObj->SetReg(reg, ZD_ADDA_PwrDwn_Ctrl, 0x0); + #ifdef HOST_IF_USB + + pObj->SetReg(reg, ZD_Ack_Timeout_Ext, 0x80); + pObj->SetReg(reg, ZD_ADDA_PwrDwn_Ctrl, 0x0); +#endif - //pObj->SetReg(reg, ZD_AckTime80211, 0x102); - pObj->SetReg(reg, ZD_AckTime80211, 0x100); - pObj->SetReg(reg, ZD_IFS_Value, 0x547c032); //0x547c032 + //pObj->SetReg(reg, ZD_AckTime80211, 0x102); + pObj->SetReg(reg, ZD_AckTime80211, 0x100); + pObj->SetReg(reg, ZD_IFS_Value, 0x547c032); //0x547c032 - // accept beacon for enable protection mode - //pObj->SetReg(reg, ZD_Rx_Filter, ((BIT_10 << 16) | (0xffff))); - //pObj->SetReg(reg, ZD_Rx_Filter, ((BIT_10 << 16) | (0xffff & ~BIT_8))); //for pure G debug + // accept beacon for enable protection mode - // Set RX_PE_DELAY 0x10 to enlarge the time for decharging tx power. - pObj->SetReg(reg, ZD_RX_PE_DELAY, 0x70); + //pObj->SetReg(reg, ZD_Rx_Filter, ((BIT_10 << 16) | (0xffff))); + //pObj->SetReg(reg, ZD_Rx_Filter, ((BIT_10 << 16) | (0xffff & ~BIT_8))); //for pure G debug - //pObj->SetReg(reg, ZD_SnifferOn, 0x3000000); //enable HW Rx Retry filter, and HW MIC - //pObj->SetReg(reg, ZD_Rx_OFFSET, 0x03); //to fit MIC engine's 4 byte alignment + // Set RX_PE_DELAY 0x10 to enlarge the time for decharging tx power. + pObj->SetReg(reg, ZD_RX_PE_DELAY, 0x70); - // Keep 44MHz oscillator always on. - pObj->SetReg(reg, ZD_PS_Ctrl, 0x10000000); + //pObj->SetReg(reg, ZD_SnifferOn, 0x3000000); //enable HW Rx Retry filter, and HW MIC + //pObj->SetReg(reg, ZD_Rx_OFFSET, 0x03); //to fit MIC engine's 4 byte alignment + + // Keep 44MHz oscillator always on. + pObj->SetReg(reg, ZD_PS_Ctrl, 0x10000000); #endif + #if defined(AMAC) -#if (defined(GCCK) && defined(OFDM)) - //pObj->SetReg(reg, ZD_RTS_CTS_Rate, 0x30000); - pObj->SetReg(reg, ZD_RTS_CTS_Rate, 0x2030203); + #if defined(ECCK_60_5) + + pObj->SetReg(reg, ZD_RTS_CTS_Rate, 0x00); +#elif (defined(GCCK) && defined(OFDM)) + //pObj->SetReg(reg, ZD_RTS_CTS_Rate, 0x30000); + pObj->SetReg(reg, ZD_RTS_CTS_Rate, 0x2030203); #endif - // Set Rx Threshold - pObj->SetReg(reg, ZD_RX_THRESHOLD, 0x000c0640); + // Set Rx Threshold + pObj->SetReg(reg, ZD_RX_THRESHOLD, 0x000c0640); - // Set Tx-Pwr-Control registers - //pObj->SetReg(reg, ZD_TX_PWR_CTRL_1, 0x7f7f7f7f); - //pObj->SetReg(reg, ZD_TX_PWR_CTRL_2, 0x7c7f7f7f); - //pObj->SetReg(reg, ZD_TX_PWR_CTRL_3, 0x6c6c747c); - //pObj->SetReg(reg, ZD_TX_PWR_CTRL_4, 0x00006064); + // Set Tx-Pwr-Control registers + //pObj->SetReg(reg, ZD_TX_PWR_CTRL_1, 0x7f7f7f7f); + //pObj->SetReg(reg, ZD_TX_PWR_CTRL_2, 0x7c7f7f7f); + //pObj->SetReg(reg, ZD_TX_PWR_CTRL_3, 0x6c6c747c); + //pObj->SetReg(reg, ZD_TX_PWR_CTRL_4, 0x00006064); - pObj->SetReg(reg, ZD_AfterPNP, 0x1); - pObj->SetReg(reg, ZD_Wep_Protect, 0x114); +#ifdef HOST_IF_USB + + pObj->SetReg(reg, ZD_AfterPNP, 0x1); + pObj->SetReg(reg, ZD_Wep_Protect, 0x114); +#else + + pObj->SetReg(reg, ZD_AfterPNP, 0x64009); + pObj->SetReg(reg, ZD_Wep_Protect, 0x118); //4315 for TKIP key mixing +#endif #endif } void HW_OverWritePhyRegFromE2P(zd_80211Obj_t *pObj) { - U32 NumOfReg; - U32 tmpvalue; - U32 i; - U8 PhyIdx; - U8 PhyValue; - void *reg = pObj->reg; - - if (!pObj->bOverWritePhyRegFromE2P) - return; - LockPhyReg(pObj); - tmpvalue = pObj->GetReg(reg, E2P_PHY_REG); - pObj->SetReg(reg, ZD_CR47, (tmpvalue & 0xFF)); - UnLockPhyReg(pObj); + U32 tmpvalue; + void *reg = pObj->reg; - return; +#ifdef HOST_IF_USB + + if (!pObj->bOverWritePhyRegFromE2P) + return; + + LockPhyReg(pObj); + tmpvalue = pObj->GetReg(reg, E2P_PHY_REG); + pObj->SetReg(reg, ZD_CR47, (tmpvalue & 0xFF)); + UnLockPhyReg(pObj); + return; +#endif } void HW_WritePhyReg(zd_80211Obj_t *pObj, U8 PhyIdx, U8 PhyValue) { - U32 IoAddress; - void *reg = pObj->reg; + U32 IoAddress; + void *reg = pObj->reg; + + switch(PhyIdx) { + case 4: + IoAddress = 0x20; + break; + + case 5: + IoAddress = 0x10; + break; + + case 6: + IoAddress = 0x14; + break; + + case 7: + IoAddress = 0x18; + break; + + case 8: + IoAddress = 0x1C; + break; + + default: + IoAddress = (((U32)PhyIdx) << 2); + + break; + } + + LockPhyReg(pObj); + pObj->SetReg(reg, IoAddress, PhyValue); + UnLockPhyReg(pObj); +} + + +void HW_UpdateIntegrationValue(zd_80211Obj_t *pObj, U32 ChannelNo, const U8 MAC_Mode) +{ +#ifdef ZD1211B + void *reg = pObj->reg; + struct zd1205_private *macp = (struct zd1205_private *) g_dev->priv; +#endif +#ifdef HOST_IF_USB + U32 tmpvalue; + u8 Useless_set, intV; + + //tmpvalue = pObj->GetReg(reg, ZD_E2P_PWR_INT_VALUE1+((ChannelNo-1) & 0xc)); + //tmpvalue = (U8) (tmpvalue >> (((ChannelNo - 1) % 4) * 8)); + if(PURE_A_MODE != MAC_Mode) + tmpvalue = pObj->IntValue[ChannelNo - 1]; + else if(PURE_A_MODE == MAC_Mode) { + a_OSC_get_cal_int(ChannelNo, RATE_54M,&intV,&Useless_set); + tmpvalue = intV; + } else + VerAssert(); + HW_Write_TxGain1(pObj, (U8) tmpvalue, cTX_CCK); +#endif +#ifdef ZD1211B - switch(PhyIdx) { - case 4: - IoAddress = 0x20; - break; - - case 5: - IoAddress = 0x10; - break; - - case 6: - IoAddress = 0x14; - break; - - case 7: - IoAddress = 0x18; - break; - - case 8: - IoAddress = 0x1C; - break; - - default: - IoAddress = (((U32)PhyIdx) << 2); - break; - } - LockPhyReg(pObj); - pObj->SetReg(reg, IoAddress, PhyValue); - UnLockPhyReg(pObj); -} - -void HW_UpdateIntegrationValue(zd_80211Obj_t *pObj, U32 ChannelNo) -{ - U32 tmpvalue; - void *reg = pObj->reg; - - //tmpvalue = pObj->GetReg(reg, ZD_E2P_PWR_INT_VALUE1+((ChannelNo-1) & 0xc)); - //tmpvalue = (U8) (tmpvalue >> (((ChannelNo - 1) % 4) * 8)); - tmpvalue = pObj->IntValue[ChannelNo - 1]; - HW_Write_TxGain1(pObj, (U8) tmpvalue, cTX_CCK); + LockPhyReg(pObj); + if(PURE_A_MODE != MAC_Mode) { + pObj->SetReg(reg,ZD_CR65,macp->SetPointOFDM[2][ChannelNo-1]); + pObj->SetReg(reg,ZD_CR66,macp->SetPointOFDM[1][ChannelNo-1]); + pObj->SetReg(reg,ZD_CR67,macp->SetPointOFDM[0][ChannelNo-1]); + pObj->SetReg(reg,ZD_CR68,macp->EepSetPoint[ChannelNo-1]); + } else { + u8 set36,set48,set54, intValue; + a_OSC_get_cal_int( ChannelNo, RATE_54M, &intValue, &set54); + a_OSC_get_cal_int( ChannelNo, RATE_48M, &intValue, &set48); + a_OSC_get_cal_int( ChannelNo, RATE_36M, &intValue, &set36); + pObj->SetReg(reg,ZD_CR65,set54); + pObj->SetReg(reg,ZD_CR66,set48); + pObj->SetReg(reg,ZD_CR67,set36); + pObj->SetReg(reg,ZD_CR68,macp->EepSetPoint[ChannelNo-1]); + } + + pObj->SetReg(reg,ZD_CR69,0x28); + pObj->SetReg(reg,ZD_CR69,0x2a); + + UnLockPhyReg(pObj); +#endif } void HW_Write_TxGain(zd_80211Obj_t *pObj, U32 txgain) { - U32 tmpvalue; - void *reg = pObj->reg; - U8 i; - - switch(pObj->rfMode) { - case GCT_RF: - txgain &= 0x3f; - //FPRINT_V("Set tx gain", txgain); - tmpvalue = 0; - // Perform Bit-Reverse - for (i=0; i<6; i++) { - if (txgain & BIT_0) { - tmpvalue |= (0x1 << (15-i)); - } - txgain = (txgain >> 1); - } - tmpvalue |= 0x0c0000; - HW_Set_IF_Synthesizer(pObj, tmpvalue); - //FPRINT_V("HW_Set_IF_Synthesizer", tmpvalue); - HW_Set_IF_Synthesizer(pObj, 0x150800); - HW_Set_IF_Synthesizer(pObj, 0x150000); - break; - - case AL2210_RF: - case AL2210MPVB_RF: - if (txgain > AL2210_MAX_TX_PWR_SET) { - txgain = AL2210_MAX_TX_PWR_SET; - } else if (txgain < AL2210_MIN_TX_PWR_SET) { - txgain = AL2210_MIN_TX_PWR_SET; - } - - LockPhyReg(pObj); - pObj->SetReg(reg, ZD_CR31, (U8)txgain); - UnLockPhyReg(pObj); - break; - - default: - break; - } + U32 tmpvalue; + void *reg = pObj->reg; + U8 i; + + switch(pObj->rfMode) { + case GCT_RF: + txgain &= 0x3f; + + //FPRINT_V("Set tx gain", txgain); + tmpvalue = 0; + // Perform Bit-Reverse + for (i=0; i<6; i++) { + if (txgain & BIT_0) { + tmpvalue |= (0x1 << (15-i)); + } + txgain = (txgain >> 1); + } + tmpvalue |= 0x0c0000; + HW_Set_IF_Synthesizer(pObj, tmpvalue); + //FPRINT_V("HW_Set_IF_Synthesizer", tmpvalue); + HW_Set_IF_Synthesizer(pObj, 0x150800); + HW_Set_IF_Synthesizer(pObj, 0x150000); + break; + + case AL2210_RF: + case AL2210MPVB_RF: + if (txgain > AL2210_MAX_TX_PWR_SET) { + txgain = AL2210_MAX_TX_PWR_SET; + } else if (txgain < AL2210_MIN_TX_PWR_SET) { + txgain = AL2210_MIN_TX_PWR_SET; + } + + LockPhyReg(pObj); + pObj->SetReg(reg, ZD_CR31, (U8)txgain); + UnLockPhyReg(pObj); + break; + + default: + break; + } } + void HW_Write_TxGain0(zd_80211Obj_t *pObj, U8 *pTxGain, U8 TxPwrType) { - void *reg = pObj->reg; - switch (pObj->rfMode) { - case MAXIM_NEW_RF: - *pTxGain &= MAXIM2_MAX_TX_PWR_SET; - - LockPhyReg(pObj); - if (TxPwrType != cTX_OFDM) { - pObj->SetReg(reg, ZD_CR31, *pTxGain); - } else { + void *reg = pObj->reg; + + switch (pObj->rfMode) { + case MAXIM_NEW_RF: + *pTxGain &= MAXIM2_MAX_TX_PWR_SET; + LockPhyReg(pObj); + + if (TxPwrType != cTX_OFDM) { + pObj->SetReg(reg, ZD_CR31, *pTxGain); + } else { #if !fTX_GAIN_OFDM - pObj->SetReg(reg, ZD_CR31, *pTxGain); + pObj->SetReg(reg, ZD_CR31, *pTxGain); #else - pObj->SetReg(reg, ZD_CR51, *pTxGain); - pObj->SetReg(reg, ZD_CR52, *pTxGain); - pObj->SetReg(reg, ZD_CR53, *pTxGain); -#endif - } - UnLockPhyReg(pObj); - break; - - case RFMD_RF: - case AL2230_RF: - LockPhyReg(pObj); - if (TxPwrType != cTX_OFDM) { - pObj->SetReg(reg, ZD_CR31, *pTxGain); - } else { + + pObj->SetReg(reg, ZD_CR51, *pTxGain); + pObj->SetReg(reg, ZD_CR52, *pTxGain); + pObj->SetReg(reg, ZD_CR53, *pTxGain); +#endif + + } + UnLockPhyReg(pObj); + break; + + case RFMD_RF: + case AL2230_RF: + case AL7230B_RF: + case AL2230S_RF: + LockPhyReg(pObj); + if (TxPwrType != cTX_OFDM) { + pObj->SetReg(reg, ZD_CR31, *pTxGain); + } else { #if !fTX_GAIN_OFDM - pObj->SetReg(reg, ZD_CR31, *pTxGain); + pObj->SetReg(reg, ZD_CR31, *pTxGain); #else - pObj->SetReg(reg, ZD_CR51, *pTxGain); - pObj->SetReg(reg, ZD_CR52, *pTxGain); - pObj->SetReg(reg, ZD_CR53, *pTxGain); -#endif - } - UnLockPhyReg(pObj); - break; - - default: - break; - } + + pObj->SetReg(reg, ZD_CR51, *pTxGain); + pObj->SetReg(reg, ZD_CR52, *pTxGain); + pObj->SetReg(reg, ZD_CR53, *pTxGain); +#endif + + } + UnLockPhyReg(pObj); + break; + default: + break; + } } void HW_Write_TxGain1(zd_80211Obj_t *pObj, U8 txgain, U8 TxPwrType) { - U8 *pTxGain; - HW_Write_TxGain0(pObj, &txgain, TxPwrType); + U8 *pTxGain; + + HW_Write_TxGain0(pObj, &txgain, TxPwrType); + #if fTX_GAIN_OFDM - if (TxPwrType != cTX_OFDM) - pTxGain = &(pObj->TxGainSetting); - else - pTxGain = &(pObj->TxGainSetting2); + + if (TxPwrType != cTX_OFDM) + pTxGain = &(pObj->TxGainSetting); + else + pTxGain = &(pObj->TxGainSetting2); #else - pTxGain = &(pObj->TxGainSetting); + + pTxGain = &(pObj->TxGainSetting); #endif - *pTxGain = txgain; + + *pTxGain = txgain; } void HW_Write_TxGain2(zd_80211Obj_t *pObj, U8 TxPwrType) { - U8 *pTxGain; - if (TxPwrType != cTX_OFDM) { - pTxGain = &(pObj->TxGainSetting); - } else { + U8 *pTxGain; + + + if (TxPwrType != cTX_OFDM) { + pTxGain = &(pObj->TxGainSetting); + } else { #if fTX_GAIN_OFDM - pTxGain = &(pObj->TxGainSetting2); + pTxGain = &(pObj->TxGainSetting2); #else - pTxGain = &(pObj->TxGainSetting); + + pTxGain = &(pObj->TxGainSetting); #endif - } - HW_Write_TxGain0(pObj, pTxGain, TxPwrType); + + } + + HW_Write_TxGain0(pObj, pTxGain, TxPwrType); } -void HW_Set_FilterBand(zd_80211Obj_t *pObj, U32 region_code) -{ - U32 tmpLong; - void *reg = pObj->reg; - - switch(region_code) { - case 0x40: // Japan - LockPhyReg(pObj); - if (1 || pObj->rfMode == MAXIM_NEW_RF) { - tmpLong = pObj->GetReg(reg, ZD_CR5); - tmpLong |= BIT_6; //japan - pObj->SetReg(reg, ZD_CR5, tmpLong); - } - UnLockPhyReg(pObj); - break; - - default: - LockPhyReg(pObj); - tmpLong = pObj->GetReg(reg, ZD_CR5); - tmpLong &= ~BIT_6;//USA - pObj->SetReg(reg, ZD_CR5, tmpLong); - UnLockPhyReg(pObj); - break; - } +void HW_Set_FilterBand(zd_80211Obj_t *pObj, U32 region_code) +{ + U32 tmpLong; + void *reg = pObj->reg; + + switch(region_code) { + case 0x40: // Japan + LockPhyReg(pObj); + //if (pObj->rfMode == MAXIM_NEW_RF) + { + tmpLong = pObj->GetReg(reg, ZD_CR5); + tmpLong |= BIT_6; //japan + pObj->SetReg(reg, ZD_CR5, tmpLong); + } + + UnLockPhyReg(pObj); + break; + + default: + LockPhyReg(pObj); + tmpLong = pObj->GetReg(reg, ZD_CR5); + tmpLong &= ~BIT_6;//USA + + pObj->SetReg(reg, ZD_CR5, tmpLong); + UnLockPhyReg(pObj); + break; + } } + void HW_UpdateBcnInterval(zd_80211Obj_t *pObj, U16 BcnInterval) { - void *reg = pObj->reg; - U32 tmpvalue; - U32 ul_PreTBTT; - U32 ul_ATIMWnd; - //++ - // Make sure that BcnInterval > Pre_TBTT > ATIMWnd >= 0 - if (BcnInterval < 5) { - BcnInterval = 5; - } - - ul_PreTBTT = pObj->GetReg(reg, ZD_Pre_TBTT); - if (ul_PreTBTT < 4) { - ul_PreTBTT = 4; - } - - if (ul_PreTBTT >= BcnInterval) { - ul_PreTBTT = BcnInterval-1; - } - pObj->SetReg(reg, ZD_Pre_TBTT, ul_PreTBTT); - - ul_ATIMWnd = pObj->GetReg(reg, ZD_ATIMWndPeriod); - if (ul_ATIMWnd >= ul_PreTBTT) { - ul_ATIMWnd = ul_PreTBTT-1; - } - pObj->SetReg(reg, ZD_ATIMWndPeriod, ul_ATIMWnd); - - tmpvalue = pObj->GetReg(reg, ZD_BCNInterval); - tmpvalue &= ~0xffff; - tmpvalue |= BcnInterval; - pObj->SetReg(reg, ZD_BCNInterval, tmpvalue); + void *reg = pObj->reg; + U32 tmpvalue; + U32 ul_PreTBTT; + U32 ul_ATIMWnd; + + + //++ + // Make sure that BcnInterval > Pre_TBTT > ATIMWnd >= 0 + if (BcnInterval < 5) { + BcnInterval = 5; + } + + ul_PreTBTT = pObj->GetReg(reg, ZD_Pre_TBTT); + if (ul_PreTBTT < 4) { + ul_PreTBTT = 4; + } + + if (ul_PreTBTT >= BcnInterval) { + ul_PreTBTT = BcnInterval-1; + + } + pObj->SetReg(reg, ZD_Pre_TBTT, ul_PreTBTT); + + ul_ATIMWnd = pObj->GetReg(reg, ZD_ATIMWndPeriod); + if (ul_ATIMWnd >= ul_PreTBTT) { + ul_ATIMWnd = ul_PreTBTT-1; + } + pObj->SetReg(reg, ZD_ATIMWndPeriod, ul_ATIMWnd); + + tmpvalue = pObj->GetReg(reg, ZD_BCNInterval); + tmpvalue &= ~0xffff; + tmpvalue |= BcnInterval; + pObj->SetReg(reg, ZD_BCNInterval, tmpvalue); - pObj->BeaconInterval = BcnInterval; + pObj->BeaconInterval = BcnInterval; } + + + void HW_UpdateATIMWindow(zd_80211Obj_t *pObj, U16 AtimWnd) { - void *reg = pObj->reg; - U32 ul_PreTBTT; + void *reg = pObj->reg; + U32 ul_PreTBTT; - //++ - // Make sure that Pre_TBTT > ATIMWnd >= 0 + //++ + // Make sure that Pre_TBTT > ATIMWnd >= 0 - ul_PreTBTT = pObj->GetReg(reg, ZD_Pre_TBTT); - if (AtimWnd >= ul_PreTBTT) { - AtimWnd = (U16)(ul_PreTBTT-1); - } - //-- + ul_PreTBTT = pObj->GetReg(reg, ZD_Pre_TBTT); + if (AtimWnd >= ul_PreTBTT) { + AtimWnd = (U16)(ul_PreTBTT-1); + } + //-- - pObj->SetReg(reg, ZD_ATIMWndPeriod, AtimWnd); + pObj->SetReg(reg, ZD_ATIMWndPeriod, AtimWnd); } + void HW_UpdatePreTBTT(zd_80211Obj_t *pObj, U32 pretbtt) { - void *reg = pObj->reg; - U32 ul_BcnItvl; - U32 ul_AtimWnd; - - //++ - // Make sure that BcnInterval > Pre_TBTT > ATIMWnd - ul_BcnItvl = pObj->GetReg(reg, ZD_BCNInterval); - ul_BcnItvl &= 0xff; - if (pretbtt >= ul_BcnItvl) { - pretbtt = ul_BcnItvl-1; - } - - ul_AtimWnd = pObj->GetReg(reg, ZD_ATIMWndPeriod); - if (pretbtt <= ul_AtimWnd) { - pretbtt = ul_AtimWnd+1; - } - //-- + void *reg = pObj->reg; + U32 ul_BcnItvl; + U32 ul_AtimWnd; + + //++ + // Make sure that BcnInterval > Pre_TBTT > ATIMWnd + ul_BcnItvl = pObj->GetReg(reg, ZD_BCNInterval); + ul_BcnItvl &= 0xff; + if (pretbtt >= ul_BcnItvl) { + pretbtt = ul_BcnItvl-1; + } + + ul_AtimWnd = pObj->GetReg(reg, ZD_ATIMWndPeriod); + if (pretbtt <= ul_AtimWnd) { + pretbtt = ul_AtimWnd+1; + } + //-- - pObj->SetReg(reg, ZD_Pre_TBTT, pretbtt); + pObj->SetReg(reg, ZD_Pre_TBTT, pretbtt); } // for AMAC CAM operation void HW_CAM_Avail(zd_80211Obj_t *pObj) { - void *reg = pObj->reg; - U32 tmpValue; + void *reg = pObj->reg; + U32 tmpValue; - tmpValue = pObj->GetReg(reg, ZD_CAM_MODE); - while (tmpValue & HOST_PEND) { - pObj->DelayUs(10); - tmpValue = pObj->GetReg(reg, ZD_CAM_MODE); - } + tmpValue = pObj->GetReg(reg, ZD_CAM_MODE); + while(tmpValue & HOST_PEND) { + pObj->DelayUs(10); + tmpValue = pObj->GetReg(reg, ZD_CAM_MODE); + } } void HW_CAM_Write(zd_80211Obj_t *pObj, U32 address, U32 data) { - void *reg = pObj->reg; + void *reg = pObj->reg; - HW_CAM_Avail(pObj); - pObj->SetReg(reg, ZD_CAM_DATA, data); - pObj->SetReg(reg, ZD_CAM_ADDRESS, (address | CAM_WRITE)); + HW_CAM_Avail(pObj); + pObj->SetReg(reg, ZD_CAM_DATA, data); + pObj->SetReg(reg, ZD_CAM_ADDRESS, (address | CAM_WRITE)); } U32 HW_CAM_Read(zd_80211Obj_t *pObj, U32 address) { - void *reg = pObj->reg; - U32 result; + void *reg = pObj->reg; + U32 result; + + HW_CAM_Avail(pObj); + pObj->SetReg(reg, ZD_CAM_ADDRESS, address); + HW_CAM_Avail(pObj); + result = pObj->GetReg(reg, ZD_CAM_DATA); - HW_CAM_Avail(pObj); - pObj->SetReg(reg, ZD_CAM_ADDRESS, address); - HW_CAM_Avail(pObj); - result = pObj->GetReg(reg, ZD_CAM_DATA); - return result; + return result; } void HW_CAM_SetMAC(zd_80211Obj_t *pObj, U16 aid, U8 *pMAC) { - U32 userWordAddr; - U32 userByteOffset; - U32 tmpValue; - int i; - - userWordAddr = (aid/4)*6; - userByteOffset = aid % 4; - - for (i=0; i> (userByteOffset*8)) & 0xFF; - } - - if (memcmp(mac, pMac, 6) != 0) { - FPRINT("*****Where is my MAC ????"); - } else - FPRINT("*****Verify MAC OK!!!"); + U32 userWordAddr; + U32 userByteOffset; + U32 tmpValue; + U8 mac[6]; + int i; + + userWordAddr = (aid/4)*6; + userByteOffset = aid % 4; + + for (i=0; i> (userByteOffset*8)) & 0xFF; + } + + if (memcmp(mac, pMac, 6) != 0) { + FPRINT("*****Where is my MAC ????"); + } else + FPRINT("*****Verify MAC OK!!!"); } + void HW_CAM_SetEncryType(zd_80211Obj_t *pObj, U16 aid, U8 encryType) { - U32 encryWordAddr; - U32 encryByteOffset; - U32 tmpValue; - U8 targetByte; - - encryWordAddr = ENCRY_TYPE_START_ADDR + (aid/8); - encryByteOffset = (aid/2) % 4; - - tmpValue = HW_CAM_Read(pObj, encryWordAddr); - targetByte = (U8)(tmpValue >> (encryByteOffset*8)); - tmpValue &= ~(0xff << (encryByteOffset*8)); //clear target byte - if (aid % 2) - targetByte = (encryType<<4) | (targetByte & 0xf); //set hignt part - else //low nibble - targetByte = encryType | (targetByte & 0xf0); //set low part + U32 encryWordAddr; + U32 encryByteOffset; + U32 tmpValue; + + U8 targetByte; + + encryWordAddr = ENCRY_TYPE_START_ADDR + (aid/8); + encryByteOffset = (aid/2) % 4; + + tmpValue = HW_CAM_Read(pObj, encryWordAddr); + targetByte = (U8)(tmpValue >> (encryByteOffset*8)); + tmpValue &= ~(0xff << (encryByteOffset*8)); //clear target byte + if (aid % 2) + targetByte = (encryType<<4) | (targetByte & 0xf); //set hignt part + else //low nibble + targetByte = encryType | (targetByte & 0xf0); //set low part - tmpValue |= targetByte << (encryByteOffset*8); - HW_CAM_Write(pObj, encryWordAddr, tmpValue); + tmpValue |= targetByte << (encryByteOffset*8); + + + HW_CAM_Write(pObj, encryWordAddr, tmpValue); } + U8 HW_CAM_GetEncryType(zd_80211Obj_t *pObj, U16 aid) { - U32 encryWordAddr; - U32 encryByteOffset; - U32 tmpValue; - U8 keyLength = 0; - U8 targetByte; - - encryWordAddr = ENCRY_TYPE_START_ADDR + (aid/8); - encryByteOffset = (aid/2) % 4; - - tmpValue = HW_CAM_Read(pObj, encryWordAddr); - targetByte = (U8)(tmpValue >> (encryByteOffset*8)); - if (aid % 2) - targetByte >>= 4; //get hignt part - else - targetByte &= 0x0f; //get low part - - switch(targetByte) { - case NO_WEP: //0 - FPRINT("***No Encryption"); - break; - - case WEP64: //1 - FPRINT("***WEP 64"); - keyLength = 5; - break; - - case TKIP: //2 - FPRINT("**TKIP"); - keyLength = 16; - break; - - case AES: //4 - FPRINT("***CCM"); - keyLength = 16; - break; - - case WEP128: //5 - FPRINT("***WEP 128"); - keyLength = 13; - break; - - case WEP256: //6 - FPRINT("***WEP 256"); - keyLength = 29; - break; - - default: - FPRINT("***Not Supported Encry"); - break; - } + U32 encryWordAddr; + U32 encryByteOffset; + + U32 tmpValue; + U8 keyLength = 0; + U8 targetByte; + + encryWordAddr = ENCRY_TYPE_START_ADDR + (aid/8); + encryByteOffset = (aid/2) % 4; + + tmpValue = HW_CAM_Read(pObj, encryWordAddr); + targetByte = (U8)(tmpValue >> (encryByteOffset*8)); + if (aid % 2) + targetByte >>= 4; //get hignt part + else + targetByte &= 0x0f; //get low part + + switch(targetByte) { + case NO_WEP: //0 + FPRINT("***No Encryption"); + break; + + case WEP64: //1 + FPRINT("***WEP 64"); + keyLength = 5; + break; + + case TKIP: //2 + FPRINT("**TKIP"); + keyLength = 16; + break; + + case AES: //4 + + FPRINT("***CCM"); + keyLength = 16; + break; + + + case WEP128: //5 + FPRINT("***WEP 128"); + keyLength = 13; + break; + + default: + FPRINT("***Not Supported Encry"); + break; + } + + return keyLength; - return keyLength; } + void HW_CAM_SetKey(zd_80211Obj_t *pObj, U16 aid, U8 keyLength, U8 *pKey) { - U32 keyWordAddr; - U8 offset; - U32 tmpValue; - int i, j, k; - - keyWordAddr = KEY_START_ADDR + (aid*8); - - offset = 0; - for (i=0; i<8; i++) { - tmpValue = HW_CAM_Read(pObj, (keyWordAddr+i)); - for (j=offset, k=0; k<4; j++, k++) { - tmpValue &= ~(0xff << (k*8)); - if (offset < keyLength) { - tmpValue |= pKey[j] << (k*8); - } - offset++; - } - HW_CAM_Write(pObj, (keyWordAddr+i), tmpValue); - } + U32 keyWordAddr; + U8 offset; + U32 tmpValue; + int i, j, k; + + keyWordAddr = KEY_START_ADDR + (aid*8); + + offset = 0; + for (i=0; i<8; i++) { + tmpValue = HW_CAM_Read(pObj, (keyWordAddr+i)); + for (j=offset, k=0; k<4; j++, k++) { + tmpValue &= ~(0xff << (k*8)); + if (offset < keyLength) { + tmpValue |= pKey[j] << (k*8); + } + offset++; + } + HW_CAM_Write(pObj, (keyWordAddr+i), tmpValue); + } + } + void HW_CAM_GetKey(zd_80211Obj_t *pObj, U16 aid, U8 keyLength, U8 *pKey) { - U32 keyWordAddr; - U8 key[32]; - int i, j; - U32 tmpValue; - - keyWordAddr = KEY_START_ADDR + (aid*8); - j = 0; - for (i=0; i<8; i++) { - tmpValue = HW_CAM_Read(pObj, (keyWordAddr+i)); - key[j] = (U8)(tmpValue); - j++; - key[j] = (U8)(tmpValue >> 8); - j++; - key[j] = (U8)(tmpValue >> 16); - j++; - key[j] = (U8)(tmpValue >> 24); - j++; - } - - if (memcmp(&key[0], pKey, keyLength) != 0) { - FPRINT("*****Where is my Key ????"); - } else - FPRINT("*****Verify KEY OK!!!"); + U32 keyWordAddr; + U8 key[32]; + int i, j; + U32 tmpValue; + + keyWordAddr = KEY_START_ADDR + (aid*8); + j = 0; + for (i=0; i<8; i++) { + tmpValue = HW_CAM_Read(pObj, (keyWordAddr+i)); + key[j] = (U8)(tmpValue); + j++; + key[j] = (U8)(tmpValue >> 8); + j++; + key[j] = (U8)(tmpValue >> 16); + j++; + key[j] = (U8)(tmpValue >> 24); + j++; + } + + if (memcmp(&key[0], pKey, keyLength) != 0) { + FPRINT("*****Where is my Key ????"); + } else + FPRINT("*****Verify KEY OK!!!"); } + void HW_CAM_UpdateRollTbl(zd_80211Obj_t *pObj, U16 aid) { - void *reg = pObj->reg; - U32 tmpValue; + void *reg = pObj->reg; + U32 tmpValue; - if (aid >= 32) { - tmpValue = pObj->GetReg(reg, ZD_CAM_ROLL_TB_HIGH); - tmpValue |= BIT_0 << (aid-32); - pObj->SetReg(reg, ZD_CAM_ROLL_TB_HIGH, tmpValue); - } else { - tmpValue = pObj->GetReg(reg, ZD_CAM_ROLL_TB_LOW); - tmpValue |= (BIT_0 << aid); - pObj->SetReg(reg, ZD_CAM_ROLL_TB_LOW, tmpValue); - } + if (aid >= 32) { + tmpValue = pObj->GetReg(reg, ZD_CAM_ROLL_TB_HIGH); + tmpValue |= BIT_0 << (aid-32); + pObj->SetReg(reg, ZD_CAM_ROLL_TB_HIGH, tmpValue); + } else { + tmpValue = pObj->GetReg(reg, ZD_CAM_ROLL_TB_LOW); + tmpValue |= (BIT_0 << aid); + pObj->SetReg(reg, ZD_CAM_ROLL_TB_LOW, tmpValue); + } } + void HW_CAM_ResetRollTbl(zd_80211Obj_t *pObj) { - void *reg = pObj->reg; - pObj->SetReg(reg, ZD_CAM_ROLL_TB_LOW, 0); - pObj->SetReg(reg, ZD_CAM_ROLL_TB_HIGH, 0); + void *reg = pObj->reg; + + pObj->SetReg(reg, ZD_CAM_ROLL_TB_LOW, 0); + pObj->SetReg(reg, ZD_CAM_ROLL_TB_HIGH, 0); } + void HW_CAM_ClearRollTbl(zd_80211Obj_t *pObj, U16 aid) { - void *reg = pObj->reg; - U32 tmpValue; + void *reg = pObj->reg; + U32 tmpValue; - //update roll table - if (aid > 32) { - tmpValue = pObj->GetReg(reg, ZD_CAM_ROLL_TB_HIGH); - tmpValue &= ~(BIT_0 << (aid-32)); //set user invalid - pObj->SetReg(reg, ZD_CAM_ROLL_TB_HIGH, tmpValue); - } else { - tmpValue = pObj->GetReg(reg, ZD_CAM_ROLL_TB_LOW); - tmpValue &= ~(BIT_0 << aid); //set user invalid - pObj->SetReg(reg, ZD_CAM_ROLL_TB_LOW, tmpValue); - } -} + //update roll table + if (aid > 32) { + tmpValue = pObj->GetReg(reg, ZD_CAM_ROLL_TB_HIGH); + tmpValue &= ~(BIT_0 << (aid-32)); //set user invalid + pObj->SetReg(reg, ZD_CAM_ROLL_TB_HIGH, tmpValue); + } else { + tmpValue = pObj->GetReg(reg, ZD_CAM_ROLL_TB_LOW); + tmpValue &= ~(BIT_0 << aid); //set user invalid + pObj->SetReg(reg, ZD_CAM_ROLL_TB_LOW, tmpValue); + } +} +#if 0 void HW_ConfigDynaKey(zd_80211Obj_t *pObj, U16 aid, U8 *pMac, U8 *pKey, U8 keyLength, U8 encryType) { - //void *reg = pObj->reg; - //set MAC address - HW_CAM_SetMAC(pObj, aid, pMac); - HW_CAM_SetEncryType(pObj, aid, encryType); - HW_CAM_SetKey(pObj, aid, keyLength, pKey); - HW_CAM_UpdateRollTbl(pObj, aid); + //void *reg = pObj->reg; + + //set MAC address + HW_CAM_SetMAC(pObj, aid, pMac); + HW_CAM_SetEncryType(pObj, aid, encryType); + HW_CAM_SetKey(pObj, aid, keyLength, pKey); + HW_CAM_UpdateRollTbl(pObj, aid); +} +#endif +void HW_ConfigDynaKey(zd_80211Obj_t *pObj, U16 aid, U8 *pMac, U8 *pKey, U8 keyLength, U8 encryType, U8 change_enc) +{ + //set MAC address + // int flags; + //flags = pObj->EnterCS(); + HW_CAM_ClearRollTbl(pObj, aid); + if (change_enc) + //if (1) + { + HW_CAM_SetMAC(pObj, aid, pMac); + HW_CAM_SetEncryType(pObj, aid, encryType); + } + HW_CAM_SetKey(pObj, aid, keyLength, pKey); + HW_CAM_UpdateRollTbl(pObj, aid); + //pObj->ExitCS(flags); } void HW_ConfigStatKey(zd_80211Obj_t *pObj, U8 *pKey, U8 keyLen, U32 startAddr) { - int i, j, k, offset; - U32 tmpKey = 0; + int i, j, k, offset; + U32 tmpKey = 0; + + j = 0; + offset = 0; + + while(offset < keyLen) { + for (i=offset, k=0; k<4; i++, k++) { + tmpKey |= pKey[i] << ((k%4)*8); + offset++; + if (offset == keyLen) + goto last_part; + } + HW_CAM_Write(pObj, startAddr+j, tmpKey); + j++; + tmpKey = 0; + } - j = 0; - offset = 0; - while (offset < keyLen) { - for (i=offset, k=0; k<4; i++, k++) { - tmpKey |= pKey[i] << ((k%4)*8); - offset++; - if (offset == keyLen) - goto last_part; - } - HW_CAM_Write(pObj, startAddr+j, tmpKey); - j++; - tmpKey = 0; - } last_part: - HW_CAM_Write(pObj, startAddr+j, tmpKey); + HW_CAM_Write(pObj, startAddr+j, tmpKey); } + void HW_GetStatKey(zd_80211Obj_t *pObj) { - //void *reg = pObj->reg; - int i, j; - U8 key[128]; - U32 tmpValue; - U32 encryType; - U8 keyLength; - - encryType = HW_CAM_Read(pObj, DEFAULT_ENCRY_TYPE); - switch(encryType) { - case WEP64: - FPRINT("WEP64 Mode"); - keyLength = 5; - break; - - case WEP128: - FPRINT("WEP128 Mode"); - keyLength = 13; - break; - - case WEP256: - FPRINT("WEP256 Mode"); - keyLength = 29; - break; - - default: - FPRINT("Not supported Mode"); - return; - } - - for (i=0, j=0; i<32; i++) { - tmpValue = HW_CAM_Read(pObj, (STA_KEY_START_ADDR+i)); - key[j] = (U8)(tmpValue); - j++; - key[j] = (U8)(tmpValue >> 8); - j++; - key[j] = (U8)(tmpValue >> 16); - j++; - key[j] = (U8)(tmpValue >> 24); - j++; - } - - zd1205_dump_data("Key 1 = ", (U8 *)&key[0], keyLength); - zd1205_dump_data("Key 2 = ", (U8 *)&key[32], keyLength); - zd1205_dump_data("Key 3 = ", (U8 *)&key[2*32], keyLength); - zd1205_dump_data("Key 4 = ", (U8 *)&key[3*32], keyLength); - return; + //void *reg = pObj->reg; + int i, j; + U8 key[128]; + U32 tmpValue; + U32 encryType; + U8 keyLength; + + encryType = HW_CAM_Read(pObj, DEFAULT_ENCRY_TYPE); + switch(encryType) { + case WEP64: + FPRINT("WEP64 Mode"); + + keyLength = 5; + break; + + case WEP128: + FPRINT("WEP128 Mode"); + keyLength = 13; + break; + + case WEP256: + FPRINT("WEP256 Mode"); + keyLength = 29; + break; + + default: + FPRINT("Not supported Mode"); + return; + + } + + for (i=0, j=0; i<32; i++) { + tmpValue = HW_CAM_Read(pObj, (STA_KEY_START_ADDR+i)); + + key[j] = (U8)(tmpValue); + j++; + key[j] = (U8)(tmpValue >> 8); + j++; + key[j] = (U8)(tmpValue >> 16); + j++; + key[j] = (U8)(tmpValue >> 24); + j++; + } + + zd1205_dump_data("Key 1 = ", (U8 *)&key[0], keyLength); + zd1205_dump_data("Key 2 = ", (U8 *)&key[32], keyLength); + zd1205_dump_data("Key 3 = ", (U8 *)&key[2*32], keyLength); + zd1205_dump_data("Key 4 = ", (U8 *)&key[3*32], keyLength); + return; } + void HW_EEPROM_ACCESS(zd_80211Obj_t *pObj, U8 RamAddr, U32 RomAddr, U32 length, U8 bWrite) { - void *reg = pObj->reg; - U32 status; - U32 access = 0; - U32 startTime; - U32 endTime; - U32 diffTime; - int count = 0; - - if (bWrite) { - FPRINT("Write Access"); - } else - FPRINT("Read Access"); - - FPRINT_V("RomAddr", RomAddr); - FPRINT_V("RamAddr", RamAddr); - FPRINT_V("Length", length); - - if (bWrite) { - access = EEPROM_WRITE_ACCESS; - //unlock write access - pObj->SetReg(reg, ZD_EPP_KEY_PROT, 0x55aa); - pObj->SetReg(reg, ZD_EPP_KEY_PROT, 0x44bb); - pObj->SetReg(reg, ZD_EPP_KEY_PROT, 0x33cc); - pObj->SetReg(reg, ZD_EPP_KEY_PROT, 0x22dd); - } - - pObj->SetReg(reg, ZD_EPP_ROM_ADDRESS, RomAddr); - pObj->SetReg(reg, ZD_EPP_SRAM_ADDRESS, RamAddr); - pObj->SetReg(reg, ZD_EPP_LENG_DIR, access | length); - - startTime = pObj->GetReg(reg, ZD_TSF_LowPart); - - pObj->DelayUs(2000); - status = pObj->GetReg(reg, ZD_EPP_CLOCK_DIV); - while (status & EEPROM_BUSY_FLAG) { - pObj->DelayUs(1000); - //FPRINT("EEPROM programming !!!"); - status = pObj->GetReg(reg, ZD_EPP_CLOCK_DIV); - - if (count > 500) { - FPRINT("EEPROM Timeout !!!"); - if (bWrite) - pObj->SetReg(reg, ZD_EPP_KEY_PROT, 0x00); - return; - } - //len = pObj->GetReg(reg, ZD_EPP_LENG_DIR); - //FPRINT_V("len", len); - count++; - } - - endTime = pObj->GetReg(reg, ZD_TSF_LowPart); - if (endTime > startTime) { - diffTime = endTime - startTime; - } else { - diffTime = 0xffffffff + startTime - endTime; - } - - // FPRINT_V("Processing Time", diffTime); - printk("\nProcessing Time = %d ms\n", (int)diffTime/1000); - //lock write access - if (bWrite) - pObj->SetReg(reg, ZD_EPP_KEY_PROT, 0x00); + void *reg = pObj->reg; + U32 status; + U32 access = 0; + U32 startTime; + U32 endTime; + U32 diffTime; + int count = 0; + + if (bWrite) { + FPRINT("Write Access"); + } else + FPRINT("Read Access"); + + + FPRINT_V("RomAddr", RomAddr); + FPRINT_V("RamAddr", RamAddr); + FPRINT_V("Length", length); + + if (bWrite) { + access = EEPROM_WRITE_ACCESS; + //unlock write access + pObj->SetReg(reg, ZD_EPP_KEY_PROT, 0x55aa); + pObj->SetReg(reg, ZD_EPP_KEY_PROT, 0x44bb); + pObj->SetReg(reg, ZD_EPP_KEY_PROT, 0x33cc); + pObj->SetReg(reg, ZD_EPP_KEY_PROT, 0x22dd); + } + + pObj->SetReg(reg, ZD_EPP_ROM_ADDRESS, RomAddr); + pObj->SetReg(reg, ZD_EPP_SRAM_ADDRESS, RamAddr); + pObj->SetReg(reg, ZD_EPP_LENG_DIR, access | length); + + startTime = pObj->GetReg(reg, ZD_TSF_LowPart); + + pObj->DelayUs(2000); + status = pObj->GetReg(reg, ZD_EPP_CLOCK_DIV); + while(status & EEPROM_BUSY_FLAG) { + pObj->DelayUs(1000); + //FPRINT("EEPROM programming !!!"); + status = pObj->GetReg(reg, ZD_EPP_CLOCK_DIV); + + if (count > 500) { + FPRINT("EEPROM Timeout !!!"); + if (bWrite) + pObj->SetReg(reg, ZD_EPP_KEY_PROT, 0x00); + return; + } + //len = pObj->GetReg(reg, ZD_EPP_LENG_DIR); + //FPRINT_V("len", len); + count++; + } + + endTime = pObj->GetReg(reg, ZD_TSF_LowPart); + if (endTime > startTime) { + diffTime = endTime - startTime; + } else { + diffTime = 0xffffffff + startTime - endTime; + } + + //FPRINT_V("Processing Time", diffTime); + + printk("\nProcessing Time = %lu ms\n", diffTime/1000); + + + //lock write access + if (bWrite) + pObj->SetReg(reg, ZD_EPP_KEY_PROT, 0x00); } + +#endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zd1205_proc.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zd1205_proc.c @@ -0,0 +1,379 @@ +/* src/zd1205_proc.c +* +* +* +* Copyright (C) 2004 ZyDAS Inc. All Rights Reserved. +* -------------------------------------------------------------------- +* +* +* +* The contents of this file are subject to the Mozilla Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/MPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* Alternatively, the contents of this file may be used under the +* terms of the GNU Public License version 2 (the "GPL"), in which +* case the provisions of the GPL are applicable instead of the +* above. If you wish to allow the use of your version of this file +* only under the terms of the GPL and not to allow others to use +* your version of this file under the MPL, indicate your decision +* by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL. If you do not delete +* the provisions above, a recipient may use your version of this +* file under either the MPL or the GPL. +* +* -------------------------------------------------------------------- */ + +#include + +#ifdef CONFIG_PROC_FS +#include "zd1205.h" + +/***************************************************************************/ +/* /proc File System Interaface Support Functions */ +/***************************************************************************/ + +static struct proc_dir_entry *adapters_proc_dir = 0; + +/* externs from zd1205.c */ +extern char zd1205_short_driver_name[]; +extern char zd1205_driver_version[]; +extern struct net_device_stats *zd1205_get_stats(struct net_device *dev); + + +static void zd1205_proc_cleanup(void); +static unsigned char zd1205_init_proc_dir(void); + +#define ADAPTERS_PROC_DIR "zd1205" +#define WRITE_BUF_MAX_LEN 20 +#define READ_BUF_MAX_LEN 256 +#define ZD1205_PE_LEN 25 + +#define bdp_drv_off(off) (unsigned long)(offsetof(struct zd1205_private, drv_stats.off)) +#define bdp_prm_off(off) (unsigned long)(offsetof(struct zd1205_private, params.off)) + +typedef struct _zd1205_proc_entry +{ + char *name; + read_proc_t *read_proc; + write_proc_t *write_proc; + + unsigned long offset; /* offset into bdp. ~0 means no value, pass NULL. */ +} +zd1205_proc_entry; + + +static int +generic_read(char *page, char **start, off_t off, int count, int *eof, int len) +{ + if (len <= off + count) + *eof = 1; + + *start = page + off; + len -= off; + if (len > count) + len = count; + + if (len < 0) + len = 0; + + return len; +} + +#if 0 +static int +read_ulong(char *page, char **start, off_t off, + int count, int *eof, unsigned long l) +{ + int len; + + len = sprintf(page, "%lu\n", l); + + return generic_read(page, start, off, count, eof, len); +} + +static int +read_gen_ulong(char *page, char **start, off_t off, + + int count, int *eof, void *data) +{ + unsigned long val = 0; + + if (data) + val = *((unsigned long *) data); + + return read_ulong(page, start, off, count, eof, val); +} +#endif + +static int +read_hwaddr(char *page, char **start, off_t off, + int count, int *eof, unsigned char *hwaddr) +{ + int len; + + len = sprintf(page, "%02X:%02X:%02X:%02X:%02X:%02X\n", + hwaddr[0], hwaddr[1], hwaddr[2], + hwaddr[3], hwaddr[4], hwaddr[5]); + + return generic_read(page, start, off, count, eof, len); +} + + +static int +read_permanent_hwaddr(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + struct zd1205_private *macp = data; + unsigned char *hwaddr = macp->macAdr; + + return read_hwaddr(page, start, off, count, eof, hwaddr); +} + + +static zd1205_proc_entry zd1205_proc_list[] = { + {"Permanent_HWaddr", read_permanent_hwaddr, 0, 0}, + {"\n",}, + {"", 0, 0, 0} + }; + + +static int +read_info(char *page, char **start, off_t off, int count, int *eof, void *data) +{ + + struct zd1205_private *macp = data; + zd1205_proc_entry *pe; + int tmp; + void *val; + int len = 0; + + for (pe = zd1205_proc_list; pe->name[0]; pe++) { + if (pe->name[0] == '\n') { + len += sprintf(page + len, "\n"); + continue; + } + + if (pe->read_proc) { + if ((len + READ_BUF_MAX_LEN + ZD1205_PE_LEN + 1) >= + PAGE_SIZE) + break; + + if (pe->offset != ~0) + val = ((char *) macp) + pe->offset; + else + val = NULL; + + len += sprintf(page + len, "%-" + __MODULE_STRING(ZD1205_PE_LEN) + "s ", pe->name); + len += pe->read_proc(page + len, start, 0, + READ_BUF_MAX_LEN + 1, &tmp, val); + } + } + + return generic_read(page, start, off, count, eof, len); +} + + +static struct proc_dir_entry * + create_proc_rw(char *name, void *data, struct proc_dir_entry *parent, + read_proc_t * read_proc, write_proc_t * write_proc) +{ + struct proc_dir_entry *pdep; + mode_t mode = S_IFREG; + + if (write_proc) + { + mode |= S_IWUSR; + if (read_proc) { + mode |= S_IRUSR; + } + + } else if (read_proc) + { + mode |= S_IRUGO; + } + + if (!(pdep = create_proc_entry(name, mode, parent))) + return NULL; + + pdep->read_proc = read_proc; + pdep->write_proc = write_proc; + pdep->data = data; + return pdep; +} + + +void +zd1205_remove_proc_subdir(struct zd1205_private *macp, char *name) +{ + zd1205_proc_entry *pe; + char info[256]; + int len; + + /* If our root /proc dir was not created, there is nothing to remove */ + if (adapters_proc_dir == NULL) + { + return; + } + + len = strlen(macp->ifname); + strncpy(info, macp->ifname, sizeof (info)); + strncat(info + len, ".info", sizeof (info) - len); + + if (macp->proc_parent) + { + for (pe = zd1205_proc_list; pe->name[0]; pe++) { + if (pe->name[0] == '\n') + continue; + + remove_proc_entry(pe->name, macp->proc_parent); + } + + remove_proc_entry(macp->ifname, adapters_proc_dir); + macp->proc_parent = NULL; + } + + remove_proc_entry(info, adapters_proc_dir); + + /* try to remove the main /proc dir, if it's empty */ + zd1205_proc_cleanup(); +} + + +int +zd1205_create_proc_subdir(struct zd1205_private *macp) +{ + struct proc_dir_entry *dev_dir; + zd1205_proc_entry *pe; + char info[256]; + int len; + void *data; + + /* create the main /proc dir if needed */ + if (!adapters_proc_dir) + { + if (!zd1205_init_proc_dir()) + return -ENOMEM; + } + + strncpy(info, macp->ifname, sizeof (info)); + len = strlen(info); + strncat(info + len, ".info", sizeof (info) - len); + + /* info */ + if (!(create_proc_rw(info, macp, adapters_proc_dir, read_info, 0))) + { + zd1205_proc_cleanup(); + return -ENOMEM; + } + + dev_dir = create_proc_entry(macp->ifname, S_IFDIR, + adapters_proc_dir); + macp->proc_parent = dev_dir; + + if (!dev_dir) + { + zd1205_remove_proc_subdir(macp, macp->ifname); + return -ENOMEM; + } + + for (pe = zd1205_proc_list; pe->name[0]; pe++) + { + if (pe->name[0] == '\n') + continue; + + if (pe->offset != ~0) + data = ((char *) macp) + pe->offset; + else + data = NULL; + + if (!(create_proc_rw(pe->name, data, dev_dir, + pe->read_proc, pe->write_proc))) { + zd1205_remove_proc_subdir(macp, macp->ifname); + return -ENOMEM; + } + } + + return 0; +} + +/**************************************************************************** + * Name: zd1205_init_proc_dir + * + * Description: This routine creates the top-level /proc directory for the + * driver in /proc/net + * + * Arguments: none + * + * Returns: true on success, false on fail + * + ***************************************************************************/ +static unsigned char +zd1205_init_proc_dir(void) +{ + int len; + + /* first check if adapters_proc_dir already exists */ + len = strlen(ADAPTERS_PROC_DIR); + for (adapters_proc_dir = proc_net->subdir; + adapters_proc_dir; adapters_proc_dir = adapters_proc_dir->next) { + + if ((adapters_proc_dir->namelen == len) && + (!memcmp(adapters_proc_dir->name, ADAPTERS_PROC_DIR, len))) + break; + } + + if (!adapters_proc_dir) + adapters_proc_dir = + create_proc_entry(ADAPTERS_PROC_DIR, S_IFDIR, proc_net); + + if (!adapters_proc_dir) + return false; + + return true; +} + + +/**************************************************************************** + * Name: zd1205_proc_cleanup + * + * Description: This routine clears the top-level /proc directory, if empty. + * + * Arguments: none + * + * Returns: none + * + ***************************************************************************/ +static void +zd1205_proc_cleanup(void) +{ + struct proc_dir_entry *de; + + if (adapters_proc_dir == NULL) { + return; + } + + /* check if subdir list is empty before removing adapters_proc_dir */ + for (de = adapters_proc_dir->subdir; de; de = de->next) { + /* ignore . and .. */ + if (*(de->name) != '.') + break; + } + + if (de) + return; + + remove_proc_entry(ADAPTERS_PROC_DIR, proc_net); + adapters_proc_dir = NULL; +} + +#endif /* CONFIG_PROC_FS */ + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdpci_pcmcia.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdpci_pcmcia.c @@ -0,0 +1,124 @@ +#include + +#ifdef MODVERSIONS +#include +#endif + +#include + + +#include +#include + +#include "zd1205.h" +#include "zddebug.h" +#include "zdpci_pcmcia.h" +#include "zdversion.h" + +/****************************************************************************** + Global variable definition section +******************************************************************************/ +MODULE_AUTHOR("Yarco Yang"); +MODULE_DESCRIPTION("ZyDAS 802.11 Wireless LAN adapter"); +MODULE_LICENSE("GPL"); + +extern struct net_device *g_dev; + +struct driver_operations zdpci_ops = + { + "zd1205", zdpci_attach, zdpci_suspend, zdpci_resume, zdpci_detach + }; + + +/****************************************************************************** + Module initialization functions +******************************************************************************/ +dev_node_t *zdpci_attach(dev_locator_t * loc) +{ + u32 io; + u16 dev_id; + u8 bus, devfn, irq, latency_tmr; + struct pci_dev *pci_device; + dev_node_t *node; + struct zd1205_private *macp; + + // perform some initial setting checks + if (loc->bus != LOC_PCI) + return NULL; + + bus = loc->b.pci.bus; + devfn = loc->b.pci.devfn; + + // get some pci settings for verification + pcibios_read_config_dword(bus, devfn, PCI_BASE_ADDRESS_0, &io); + pcibios_read_config_byte(bus, devfn, PCI_INTERRUPT_LINE, &irq); + pcibios_read_config_word(bus, devfn, PCI_DEVICE_ID, &dev_id); + + // check whether the latency timer is set correctly + pcibios_read_config_byte(bus, devfn, PCI_LATENCY_TIMER, &latency_tmr); + + if (io &= ~3, io == 0 || irq == 0) { + printk(KERN_ERR "The interface was not assigned\n"); + return NULL; + } + + // get pci device information by loading the pci_dev structure + if (pci_device = pci_find_slot(bus, devfn), pci_device == NULL) { + // error reading the pci device structure + printk(KERN_ERR "ERROR: %s could not get PCI device " + "information \n", DRIVER_NAME ); + return NULL; + } + + zd1205_found1(pci_device, NULL); + + + // finally setup the node structure with the device information + node = kmalloc(sizeof(dev_node_t), GFP_KERNEL); + strcpy(node->dev_name, macp->device->name); + node->major = 0; + node->minor = 0; + node->next = NULL; + MOD_INC_USE_COUNT; + return node; +} + +void zdpci_suspend(dev_node_t * node) +{ +} + +void zdpci_resume(dev_node_t * node) +{ +} + +void zdpci_detach(dev_node_t * node) +{ + struct zd1205_private *macp = g_dev->priv; + + unregister_netdev(g_dev); + zd1205_remove_proc_subdir(macp); + zd1205_clear_structs(g_dev); + //--zd1205nics; + + // free the node + kfree(node); + MOD_DEC_USE_COUNT; +} + + +int init_module(void) +{ + printk(KERN_NOTICE "%s - version %s\n", DRIVER_NAME, VERSIONID); + //register_driver(&zdpci_ops); + register_pcmcia_driver(); + + return 0; +} + + +void cleanup_module(void) +{ + unregister_driver(&zdpci_ops); + + printk(KERN_NOTICE "Unloaded %s \n", DRIVER_NAME); +} --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdpci_hotplug.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdpci_hotplug.h @@ -0,0 +1,15 @@ +#ifndef _ZDPCI_HOTPLUG_H +#define _ZDPCI_HOTPLUG_H + + +#ifndef DRIVER_NAME +#define DRIVER_NAME "zd1205" +#endif + + + +int init_module( void ); +void cleanup_module( void ); + + +#endif // _ZDPCI_HOTPLUG_H --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdshared.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdshared.h @@ -1,27 +1,3 @@ -/* $Id: zdshared.h,v 1.3 2005/03/17 09:15:16 akw Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZDSHARED_H_ #define _ZDSHARED_H_ @@ -29,24 +5,24 @@ BOOLEAN sendMgtFrame(Signal_t *signal, FrmDesc_t *pfrmDesc); BOOLEAN getElem(Frame_t *frame, ElementID eID, Element *eElem); -void mkAuthFrm(FrmDesc_t* pfrmDesc, MacAddr_t *addr1, U16 Alg, U16 Seq, - U16 Status, U8 *pChalng, U8 vapId); -void mkRe_AsocRspFrm(FrmDesc_t* pfrmDesc, TypeSubtype subType, MacAddr_t *addr1, - U16 Cap, U16 Status, U16 Aid, Element *pSupRates, Element *pExtRates, U8 vapId); +void mkAuthFrm(FrmDesc_t* pfrmDesc, MacAddr_t *addr1, U16 Alg, U16 Seq, + U16 Status, U8 *pChalng, U8 vapId); +void mkRe_AsocRspFrm(FrmDesc_t* pfrmDesc, TypeSubtype subType, MacAddr_t *addr1, + U16 Cap, U16 Status, U16 Aid, Element *pSupRates, Element *pExtRates, U8 vapId); void mkProbeReqFrm(FrmDesc_t* pfrmDesc, MacAddr_t *addr1, Element *pSsid, Element *pSupRates, - Element *pExtRates, Element *pWpa, U8 vapId); -void mkDisAssoc_DeAuthFrm(FrmDesc_t* pfrmDesc, TypeSubtype subType, MacAddr_t *addr1, - U16 Reason, U8 vapId); -void mkRe_AsocReqFrm(FrmDesc_t* pfrmDesc, TypeSubtype subType, MacAddr_t *addr1, - U16 Cap, U16 LisInterval, MacAddr_t *oldAP, Element *pSsid, Element *pSupRates, - Element *pExtRates, Element *pWpa, U8 vapId); -void sendProbeRspFrm(MacAddr_t *addr1, U16 BcnInterval, U16 Cap, - Element *pSsid, Element *pSupRates, Element *pDsParms, - Element *pExtRates, Element *pWpa, U8 vapId); -BOOLEAN sendPsPollFrame(Signal_t *signal, FrmDesc_t *pfrmDesc, MacAddr_t *addr1, U16 aid); -BOOLEAN sendNullDataFrame(Signal_t *signal, FrmDesc_t *pfrmDesc, MacAddr_t *addr1); + Element *pExtRates, Element *pWpa, U8 vapId); +void mkDisAssoc_DeAuthFrm(FrmDesc_t* pfrmDesc, TypeSubtype subType, MacAddr_t *addr1, + U16 Reason, U8 vapId); +void mkRe_AsocReqFrm(FrmDesc_t* pfrmDesc, TypeSubtype subType, MacAddr_t *addr1, + U16 Cap, U16 LisInterval, MacAddr_t *oldAP, Element *pSsid, Element *pSupRates, + Element *pExtRates, Element *pWpa, U8 vapId); +void sendProbeRspFrm(MacAddr_t *addr1, U16 BcnInterval, U16 Cap, + Element *pSsid, Element *pSupRates, Element *pDsParms, + Element *pExtRates, Element *pWpa, U8 vapId); +BOOLEAN sendPsPollFrame(Signal_t *signal, FrmDesc_t *pfrmDesc, MacAddr_t *addr1, U16 aid); +BOOLEAN sendNullDataFrame(Signal_t *signal, FrmDesc_t *pfrmDesc, MacAddr_t *addr1); U8 RateConvert(U8 rate); void mkProbeRspFrm(FrmDesc_t* pfrmDesc, MacAddr_t *addr1, U16 BcnInterval, - U16 Cap, Element *pSsid, Element *pSupRates, Element *pDsParms, - Element *pExtRates, Element *pWpa, U8 vapId); + U16 Cap, Element *pSsid, Element *pSupRates, Element *pDsParms, + Element *pExtRates, Element *pWpa, U8 vapId); #endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdauthrsp.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdauthrsp.c @@ -1,262 +1,254 @@ -/* $Id: zdauthrsp.c,v 1.7 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +#ifndef __ZDAUTHRSP_C__ +#define __ZDAUTHRSP_C__ #include "zd80211.h" +#include "zd1205.h" U8 AuthRspState = STE_AUTH_RSP_IDLE; static U8 arChalng[CHAL_TEXT_LEN]; //Challenge text static MacAddr_t Sta2; static MacAddr_t Sta; +extern struct net_device *g_dev; BOOLEAN CheckAlg(U8 alg) { - int i = 0; + int i = 0; - for (i=0; i<3; i++) { - if (i == 2) - return FALSE; - - if (mAuthAlogrithms[i] == alg) - return TRUE; - } - return FALSE; + for (i=0; i<3; i++) { + if (i == 2) + return FALSE; + + if (mAuthAlogrithms[i] == alg) + return TRUE; + } + return FALSE; } + BOOLEAN AuthOdd_Idle(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - Frame_t *rdu; - U16 arAlg; - U16 arSeq; - U16 arSC; - U8 vapId = 0; - - ZDEBUG("AuthOdd_Idle"); - pfrmDesc = signal->frmInfo.frmDesc; - rdu = pfrmDesc->mpdu; - arSeq = authSeqNum(rdu); - arAlg = authType(rdu); - memcpy((U8 *)&Sta, (U8 *)addr2(rdu), 6); - - if (arSeq != 1) { - arSC = SC_AUTH_OUT_OF_SEQ; - UpdateStaStatus(&Sta, STATION_STATE_NOT_AUTH, vapId); - mkAuthFrm(pfrmDesc, &Sta, arAlg, arSeq+1, arSC, NULL, vapId); - return sendMgtFrame(signal, pfrmDesc); - } - - if (!CheckAlg(arAlg)) { - arSC = SC_UNSUPT_ALG; - UpdateStaStatus(&Sta, STATION_STATE_NOT_AUTH, vapId); - mkAuthFrm(pfrmDesc, &Sta, arAlg, arSeq+1, arSC, NULL, vapId); - return sendMgtFrame(signal, pfrmDesc); - } - - if (pdot11Obj->StatusNotify(STA_AUTH_REQ, (U8 *)&Sta)) { //Reject it - arSC = SC_UNSPEC_FAILURE; - UpdateStaStatus(&Sta, STATION_STATE_NOT_AUTH, vapId); - mkAuthFrm(pfrmDesc, &Sta, arAlg, arSeq+1, arSC, NULL, vapId); - return sendMgtFrame(signal, pfrmDesc); - } - - if (arAlg == OPEN_SYSTEM) { - if (UpdateStaStatus(&Sta, STATION_STATE_AUTH_OPEN, vapId)) - arSC = SC_SUCCESSFUL; - else - arSC = SC_AP_FULL; - - mkAuthFrm(pfrmDesc, &Sta, arAlg, arSeq+1, arSC, NULL, vapId); - return sendMgtFrame(signal, pfrmDesc); - } - - if (arAlg == SHARE_KEY) { - //WPA - if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) { - arSC = SC_UNSUPT_ALG; - UpdateStaStatus(&Sta, STATION_STATE_NOT_AUTH, vapId); - mkAuthFrm(pfrmDesc, &Sta, arAlg, arSeq+1, arSC, NULL, vapId); - - return sendMgtFrame(signal, pfrmDesc); - } else { - if ((mCurrConnUser + 1) > mLimitedUser) - arSC = SC_AP_FULL; - else - arSC = SC_SUCCESSFUL; - - mkAuthFrm(pfrmDesc, &Sta, arAlg, arSeq+1, arSC, arChalng, vapId); - if (arSC == SC_SUCCESSFUL) { - pdot11Obj->StartTimer(512, DO_CHAL); - AuthRspState = STE_AUTH_RSP_WAIT_CRSP; - } - return sendMgtFrame(signal, pfrmDesc); - } - } + struct zd1205_private *macp=g_dev->priv; + FrmDesc_t *pfrmDesc; + Frame_t *rdu; + U16 arAlg; + U16 arSeq; + U16 arSC; + U8 vapId = 0; + + ZDEBUG("AuthOdd_Idle"); + pfrmDesc = signal->frmInfo.frmDesc; + rdu = pfrmDesc->mpdu; + arSeq = authSeqNum(rdu); + arAlg = authType(rdu); + memcpy((U8 *)&Sta, (U8 *)addr2(rdu), 6); + + if (arSeq != 1) { + arSC = SC_AUTH_OUT_OF_SEQ; + UpdateStaStatus(&Sta, STATION_STATE_NOT_AUTH, vapId); + mkAuthFrm(pfrmDesc, &Sta, arAlg, arSeq+1, arSC, NULL, vapId); + return sendMgtFrame(signal, pfrmDesc); + } + + if (!CheckAlg(arAlg)) { + arSC = SC_UNSUPT_ALG; + UpdateStaStatus(&Sta, STATION_STATE_NOT_AUTH, vapId); + mkAuthFrm(pfrmDesc, &Sta, arAlg, arSeq+1, arSC, NULL, vapId); + return sendMgtFrame(signal, pfrmDesc); + } + + if (pdot11Obj->StatusNotify(STA_AUTH_REQ, (U8 *)&Sta)) { //Reject it + arSC = SC_UNSPEC_FAILURE; + UpdateStaStatus(&Sta, STATION_STATE_NOT_AUTH, vapId); + mkAuthFrm(pfrmDesc, &Sta, arAlg, arSeq+1, arSC, NULL, vapId); + return sendMgtFrame(signal, pfrmDesc); + } + + if (arAlg == OPEN_SYSTEM) { + if (UpdateStaStatus(&Sta, STATION_STATE_AUTH_OPEN, vapId)) + arSC = SC_SUCCESSFUL; + else + arSC = SC_AP_FULL; + + mkAuthFrm(pfrmDesc, &Sta, arAlg, arSeq+1, arSC, NULL, vapId); + return sendMgtFrame(signal, pfrmDesc); + } + + if (arAlg == SHARE_KEY) { + //WPA + if (macp->cardSetting.WPAIeLen) { + //if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)){ + arSC = SC_UNSUPT_ALG; + UpdateStaStatus(&Sta, STATION_STATE_NOT_AUTH, vapId); + mkAuthFrm(pfrmDesc, &Sta, arAlg, arSeq+1, arSC, NULL, vapId); + + return sendMgtFrame(signal, pfrmDesc); + } else { + if ((mCurrConnUser + 1) > mLimitedUser) + arSC = SC_AP_FULL; + else + arSC = SC_SUCCESSFUL; + + mkAuthFrm(pfrmDesc, &Sta, arAlg, arSeq+1, arSC, arChalng, vapId); + if (arSC == SC_SUCCESSFUL) { + pdot11Obj->StartTimer(512, DO_CHAL); + AuthRspState = STE_AUTH_RSP_WAIT_CRSP; + } + return sendMgtFrame(signal, pfrmDesc); + } + } - freeFdesc(pfrmDesc); - return TRUE; + freeFdesc(pfrmDesc); + return TRUE; } + BOOLEAN AuthOdd_WaitChalRsp(Signal_t *signal) + { - FrmDesc_t *pfrmDesc; - Frame_t *rdu; - U8 arAlg2; - U16 arSeq2; - U16 arSC; - U8 vapId = 0; - U8 ChalText[130]; - - ZDEBUG("AuthOdd_WaitChalRsp"); - pfrmDesc = signal->frmInfo.frmDesc; - rdu = pfrmDesc->mpdu; - - arSeq2 = authSeqNum(rdu); - arAlg2 = authType(rdu); - memcpy((U8 *)&Sta2, (U8 *)addr2(rdu), 6); - - if(arSeq2 == 1) { - if (memcmp(&Sta, &Sta2, 6) == 0) { // open system request from a different station - arSC = SC_UNSPEC_FAILURE; - goto fail_sta2; - } - - if (arAlg2 == OPEN_SYSTEM) { - arSC = SC_SUCCESSFUL; - UpdateStaStatus(&Sta, STATION_STATE_AUTH_OPEN, vapId); - mkAuthFrm(pfrmDesc, &Sta2, arAlg2, arSeq2+1, arSC, NULL, vapId); - - return sendMgtFrame(signal, pfrmDesc); - } else { - arSC = SC_UNSPEC_FAILURE; - goto fail_sta2; - } - } else if(arSeq2 == 3) { - if (memcmp(&Sta, &Sta2, 6) == 0) { - pdot11Obj->StopTimer(DO_CHAL); - if (wepBit(rdu)) { - if (!getElem(rdu, EID_CTEXT, (Element *)&ChalText[0])) { - goto chal_failed; - } else { - //zd1205_OctetDump("ChalText = ", &ChalText[0], CHAL_TEXT_LEN+2); - if (memcmp(&ChalText[2], arChalng, CHAL_TEXT_LEN) != 0) { - goto chal_failed; - } - } - - if (UpdateStaStatus(&Sta, STATION_STATE_AUTH_KEY, vapId)) - arSC = SC_SUCCESSFUL; - else - arSC = SC_AP_FULL; - } else { + FrmDesc_t *pfrmDesc; + Frame_t *rdu; + U8 arAlg2; + U16 arSeq2; + U16 arSC; + U8 vapId = 0; + U8 ChalText[130]; + + ZDEBUG("AuthOdd_WaitChalRsp"); + pfrmDesc = signal->frmInfo.frmDesc; + rdu = pfrmDesc->mpdu; + + arSeq2 = authSeqNum(rdu); + arAlg2 = authType(rdu); + memcpy((U8 *)&Sta2, (U8 *)addr2(rdu), 6); + + if(arSeq2 == 1) { + if (memcmp(&Sta, &Sta2, 6) == 0) { // open system request from a different station + arSC = SC_UNSPEC_FAILURE; + goto fail_sta2; + } + + if (arAlg2 == OPEN_SYSTEM) { + arSC = SC_SUCCESSFUL; + UpdateStaStatus(&Sta, STATION_STATE_AUTH_OPEN, vapId); + mkAuthFrm(pfrmDesc, &Sta2, arAlg2, arSeq2+1, arSC, NULL, vapId); + + return sendMgtFrame(signal, pfrmDesc); + } else { + arSC = SC_UNSPEC_FAILURE; + goto fail_sta2; + } + } else if(arSeq2 == 3) { + if (memcmp(&Sta, &Sta2, 6) == 0) { + pdot11Obj->StopTimer(DO_CHAL); + if (wepBit(rdu)) { + if (!getElem(rdu, EID_CTEXT, (Element *)&ChalText[0])) { + goto chal_failed; + } else { + //zd1205_OctetDump("ChalText = ", &ChalText[0], CHAL_TEXT_LEN+2); + if (memcmp(&ChalText[2], arChalng, CHAL_TEXT_LEN) != 0) { + goto chal_failed; + } + } + + if (UpdateStaStatus(&Sta, STATION_STATE_AUTH_KEY, vapId)) + arSC = SC_SUCCESSFUL; + else + arSC = SC_AP_FULL; + } else { chal_failed: - arSC = SC_CHAL_FAIL; - UpdateStaStatus(&Sta2, STATION_STATE_NOT_AUTH, vapId); - } - } else { - arSC = SC_UNSPEC_FAILURE; - UpdateStaStatus(&Sta2, STATION_STATE_NOT_AUTH, vapId); - } - AuthRspState = STE_AUTH_RSP_IDLE; - mkAuthFrm(pfrmDesc, &Sta2, arAlg2, arSeq2+1, arSC, NULL, vapId); - return sendMgtFrame(signal, pfrmDesc); - } else { - arSC = SC_UNSPEC_FAILURE; - goto fail_sta2; - } + arSC = SC_CHAL_FAIL; + UpdateStaStatus(&Sta2, STATION_STATE_NOT_AUTH, vapId); + } + } else { + arSC = SC_UNSPEC_FAILURE; + UpdateStaStatus(&Sta2, STATION_STATE_NOT_AUTH, vapId); + } + AuthRspState = STE_AUTH_RSP_IDLE; + mkAuthFrm(pfrmDesc, &Sta2, arAlg2, arSeq2+1, arSC, NULL, vapId); + return sendMgtFrame(signal, pfrmDesc); + } else { + arSC = SC_UNSPEC_FAILURE; + goto fail_sta2; + } fail_sta2: - UpdateStaStatus(&Sta2, STATION_STATE_NOT_AUTH, vapId); - mkAuthFrm(pfrmDesc, &Sta2, arAlg2, arSeq2+1, arSC, NULL, vapId); - return sendMgtFrame(signal, pfrmDesc); + UpdateStaStatus(&Sta2, STATION_STATE_NOT_AUTH, vapId); + mkAuthFrm(pfrmDesc, &Sta2, arAlg2, arSeq2+1, arSC, NULL, vapId); + return sendMgtFrame(signal, pfrmDesc); } + BOOLEAN Tchal_WaitChalRsp(Signal_t *signal) { - U8 vapId = 0; - - ZDEBUG("Tchal_WaitChalRsp"); - if (AuthRspState == STE_AUTH_RSP_WAIT_CRSP) { - UpdateStaStatus(&Sta, STATION_STATE_NOT_AUTH, vapId); - AuthRspState = STE_AUTH_RSP_IDLE; - } - return FALSE; + U8 vapId = 0; + + ZDEBUG("Tchal_WaitChalRsp"); + if (AuthRspState == STE_AUTH_RSP_WAIT_CRSP) { + UpdateStaStatus(&Sta, STATION_STATE_NOT_AUTH, vapId); + AuthRspState = STE_AUTH_RSP_IDLE; + } + return FALSE; } + BOOLEAN Deauth(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - Frame_t *rdu; - U8 vapId = 0; - - ZDEBUG("Deauth"); - pfrmDesc = signal->frmInfo.frmDesc; - rdu = pfrmDesc->mpdu; - UpdateStaStatus(addr2(rdu), STATION_STATE_NOT_AUTH, vapId); - if (memcmp(&mBssId, addr2(rdu), 6) == 0) - pdot11Obj->StatusNotify(STA_DEAUTHED, (U8 *)addr2(rdu)); - - if (mBssType == INFRASTRUCTURE_BSS) { - if (memcmp(&mBssId, addr2(rdu), 6) == 0) { - FPRINT("Deauth"); - mAssoc = FALSE; - memset((U8 *)&mBssId, 0, 6); - mRequestFlag |= DIS_CONNECT_SET; - } - } - - //here to handle deauth ind. - freeFdesc(pfrmDesc); - return TRUE; + FrmDesc_t *pfrmDesc; + Frame_t *rdu; + U8 vapId = 0; + + ZDEBUG("Deauth"); + pfrmDesc = signal->frmInfo.frmDesc; + rdu = pfrmDesc->mpdu; + UpdateStaStatus(addr2(rdu), STATION_STATE_NOT_AUTH, vapId); + if (memcmp(&mBssId, addr2(rdu), 6) == 0) + pdot11Obj->StatusNotify(STA_DEAUTHED, (U8 *)addr2(rdu)); + + if (mBssType == INFRASTRUCTURE_BSS) { + //if (memcmp(&mBssId, addr2(rdu), 6) == 0){ + FPRINT("Deauth"); + mAssoc = FALSE; + memset((U8 *)&mBssId, 0, 6); + mRequestFlag |= DIS_CONNECT_SET; + //} + } + + //here to handle deauth ind. + freeFdesc(pfrmDesc); + return TRUE; } + BOOLEAN AuthRspEntry(Signal_t *signal) { - if (AuthRspState == STE_AUTH_RSP_IDLE) { - switch(signal->id) { - case SIG_AUTH_ODD: - return AuthOdd_Idle(signal); - - case SIG_DEAUTH: - return Deauth(signal); - - default: - return TRUE; - } - } else if (AuthRspState == STE_AUTH_RSP_WAIT_CRSP) { - switch(signal->id) { - case SIG_AUTH_ODD: - return AuthOdd_WaitChalRsp(signal); - - case SIG_DEAUTH: - return Deauth(signal); - - case SIG_TO_CHAL: - return Tchal_WaitChalRsp(signal); - - default: - return TRUE; - } - } else return TRUE; + if (AuthRspState == STE_AUTH_RSP_IDLE) { + switch(signal->id) { + case SIG_AUTH_ODD: + return AuthOdd_Idle(signal); + + case SIG_DEAUTH: + return Deauth(signal); + + default: + return TRUE; + } + } + else if (AuthRspState == STE_AUTH_RSP_WAIT_CRSP) { + switch(signal->id) { + case SIG_AUTH_ODD: + return AuthOdd_WaitChalRsp(signal); + + case SIG_DEAUTH: + return Deauth(signal); + + case SIG_TO_CHAL: + return Tchal_WaitChalRsp(signal); + + default: + return TRUE; + } + } else + return TRUE; } + +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zddebug2.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zddebug2.c @@ -0,0 +1,121 @@ +#ifndef _ZD_DEBUG2_C_ +#define _ZD_DEBUG2_C_ + +#ifdef ZDCONF_MENUDBG +#include "zddebug2.h" +#include "menu_drv_macro.h" + +extern zd_80211Obj_t dot11Obj; +//for debug message show +extern U8 mDynKeyMode; +extern U8 mKeyFormat; +struct zd1205_private *lmacp; +extern struct net_device *g_dev; + +#define CNT_MAX 64 +static u32 CNT_TBL[CNT_MAX]; + + +static void copy_cnt_tally(void) +{ + struct zd1205_private *macp = (struct zd1205_private *)g_dev->priv; + + memset(CNT_TBL,0,sizeof(CNT_TBL)); + + CNT_TBL[T_bcnCnt]=macp->bcnCnt; + CNT_TBL[T_txCmpCnt]=macp->txCmpCnt; + CNT_TBL[T_dtimCnt]=macp->dtimCnt; + CNT_TBL[T_rxCnt]=macp->rxCnt; + CNT_TBL[T_retryFailCnt]=macp->retryFailCnt; + CNT_TBL[T_txCnt]=macp->txCnt; + +} +static void acquire_ctrl_of_phy_req(void *regp) +{ + u32 tmpValue; + + tmpValue = zd_readl(CtlReg1); + tmpValue &= ~0x80; + zd_writel(tmpValue, CtlReg1); +} + + +static void release_ctrl_of_phy_req(void *regp) +{ + u32 tmpValue; + + tmpValue = zd_readl(CtlReg1); + tmpValue |= 0x80; + zd_writel(tmpValue, CtlReg1); +} + + +int zd1205_zd_dbg2_ioctl(struct zd1205_private *macp, struct zdap_ioctl *zdreq, u32 *ret) +{ + void *regp = macp->regp; + u16 zd_cmd; + u32 tmp_value; + u32 tmp_addr; + u32 CRn; + + *ret=0; + zd_cmd = zdreq->cmd; + switch(zd_cmd) + { + case RDCNT: + copy_cnt_tally(); + if(zdreq->addr < CNT_MAX-1) + *ret = CNT_TBL[zdreq->addr]; + break; + case RDMAC: + acquire_ctrl_of_phy_req(regp); + tmp_value = zd_readl(zdreq->addr); + release_ctrl_of_phy_req(regp); + zdreq->value = tmp_value; + + *ret = tmp_value; + //if (copy_to_user(ifr->ifr_data, &zdreq, sizeof (zdreq))) + //return -EFAULT; + break; + + case WRMAC: + acquire_ctrl_of_phy_req(regp); + zd_writel(zdreq->value, zdreq->addr); + release_ctrl_of_phy_req(regp); + + if (zdreq->addr == RX_OFFSET_BYTE) + macp->rxOffset = zdreq->value; + break; + + case RDPhy: + case WRPhy: + acquire_ctrl_of_phy_req(regp); + tmp_addr = zdreq->addr; + CRn= ((tmp_addr & 0xF00)>>8)*100+ + ((tmp_addr & 0xF0)>>4)*10+ + (tmp_addr & 0xF); + if (CRn >= 4 && CRn <= 8)//Special handling for CR4 to CR8 + { + u8 cnvtbl1[]={0x20, 0x10, 0x14, 0x18, 0x1c}; + tmp_addr = cnvtbl1[CRn-4]; + } else { + tmp_addr = CRn*4; + } + if (zd_cmd == RDPhy) { + zdreq->value = zd_readl(tmp_addr); + *ret = zdreq->value; + } else {// ZD_IOCTL_WRITE_PHY + zd_writel(zdreq->value, tmp_addr); + } + release_ctrl_of_phy_req(regp); + break; + + default : + printk(KERN_ERR "zd1205: error command = %x\n", zd_cmd); + break; + } + + return 0; +} +#endif +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zddebug.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zddebug.h @@ -1,27 +1,3 @@ -/* $Id: zddebug.h,v 1.3 2005/03/17 09:15:14 akw Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZD_DEBUG_ #define _ZD_DEBUG_ @@ -32,9 +8,12 @@ #include "zd1205.h" #define ZD_DEBUG +//#define WPA_DEBUG + +//#define DEBUG_DUMP_ASSOC_REQ #ifdef ZD_DEBUG -#define ZD1211DEBUG(n, args...) do { if (macp->dbg_flag>(n)) printk(KERN_DEBUG args); } while(0) +#define ZD1211DEBUG(n, args...) do { if (macp->dbg_flag>(n)) printk(KERN_DEBUG "zd1211:" args); } while(0) #define ZENTER(n) do { if (macp->dbg_flag>(n)) printk(KERN_DEBUG "%s: (enter) %s, %s line %i\n", "zd1205", __FUNCTION__,__FILE__,__LINE__); } while(0) #define ZEXIT(n) do { if (macp->dbg_flag>(n))printk(KERN_DEBUG "%s: (exit) %s, %s line %i\n", "zd1205", __FUNCTION__,__FILE__,__LINE__); } while(0) #else @@ -43,9 +22,23 @@ #define ZEXIT(n) //do {} while (0) #endif +#ifdef WPA_DEBUG +#define WPADEBUG(args...) do { printk(KERN_ERR args); } while(0) +#else +#define WPADEBUG(args...) do { } while (0) +#endif + +#ifdef WPADATA_DEBUG +#define WPADATADEBUG(bData, args...) do { if (bData) printk(KERN_DEBUG args); } while (0) +#else +#define WPADATADEBUG(bData, args...) do { } while (0) +#endif + +extern U32 mDebugFlag; int zd1205_zd_dbg_ioctl(struct zd1205_private *macp, struct zdap_ioctl *zdreq); void zd1205_set_sniffer_mode(struct zd1205_private *macp); void zd1205_dump_regs(struct zd1205_private *macp); void zd1205_dump_cnters(struct zd1205_private *macp); void zd1205_dump_rfds(struct zd1205_private *macp); #endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdencrypt.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdencrypt.h @@ -1,27 +1,3 @@ -/* $Id: zdencrypt.h,v 1.7 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZD_ENCRYPT_H #define _ZD_ENCRYPT_H @@ -30,21 +6,24 @@ void initWepState(void); void zd_EncryptData ( - U8 Wep_Key_Len, - U8* Wep_Key, - U8* Wep_Iv, - U16 Num_Bytes, - U8* Inbuf, - U8* Outbuf, - U32* Icv); + U8 Wep_Key_Len, + U8* Wep_Key, + U8* Wep_Iv, + U16 Num_Bytes, + U8* Inbuf, + U8* Outbuf, + U32* Icv); + BOOLEAN zd_DecryptData ( - U8 Wep_Key_Len, - U8* Wep_Key, - U8* Wep_Iv, - U16 Num_Bytes, - U8* Inbuf, - U8* Outbuf, - U32* Icv); + U8 Wep_Key_Len, + U8* Wep_Key, + U8* Wep_Iv, + U16 Num_Bytes, + U8* Inbuf, + U8* Outbuf, + U32* Icv); + #endif #endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdglobal.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdglobal.h @@ -1,107 +1,94 @@ -/* $Id: zdglobal.h,v 1.4 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef __ZDGLOBAL_H__ #define __ZDGLOBAL_H__ -extern U16 mRfChannel; -extern U16 mDtimPeriod; -extern U16 mBeaconPeriod; -extern Element dot11DesiredSsid; -extern U8 mAuthAlogrithms[2]; -extern U8 mPreambleType; - -extern BOOLEAN mPrivacyInvoked; -extern U8 mKeyId; -extern U8 mBcKeyId; -extern U8 mKeyFormat; -extern MacAddr_t dot11MacAddress; -extern U16 mRtsThreshold; -extern U16 mFragThreshold; +extern U16 mRfChannel; +extern U16 mDtimPeriod; +extern U16 mBeaconPeriod; +extern Element dot11DesiredSsid; +extern U8 mAuthAlogrithms[2]; +extern U8 mPreambleType; + +extern U32 mDebugFlag; + +extern BOOLEAN mPrivacyInvoked; +extern U8 mKeyId; +extern U8 mBcKeyId; +extern U8 mKeyFormat; +extern MacAddr_t dot11MacAddress; +extern U16 mRtsThreshold; +extern U16 mFragThreshold; +extern const U8 zeroMacAddress[6]; +extern U8 dot11DesiredBssid[6]; // When macp->ap_scan=1, use this to associate with an AP. +// for debugging purpose +extern u8 *DbgStrEncryType[]; +extern u8 *DbgStrDynKeyMode[]; -//WPA -extern Element mWPAIe; -extern U16 mCap; -extern U16 mDtimCount; -extern Element mSsid; -extern Element mBrates; -extern Element mPhpm; -extern MacAddr_t mBssId; - -//feature -extern U8 mPsStaCnt; -extern U8 mHiddenSSID; -extern U8 mLimitedUser; -extern U8 mCurrConnUser; -extern U8 mBlockBSS; -extern U8 mRadioOn; -extern U8 mSwCipher; -extern U8 mKeyVector[4][16]; -extern U8 mBcKeyVector[16]; -extern U8 mWepIv[4]; -extern U8 mBcIv[4]; -extern U8 mWepKeyLen; -extern U8 mBcKeyLen; -extern U8 mDynKeyMode; -extern BOOLEAN mZyDasModeClient; -extern Seedvar mBcSeed; -extern MICvar mBcMicKey; -extern U8 mWpaBcKeyLen; -extern U8 mWpaBcKeyId; -extern U8 mGkInstalled; -extern U16 mIv16; -extern U32 mIv32; -extern MacAddr_t dot11BCAddress; -extern BssInfo_t mBssInfo[64]; -extern U8 mBssNum; -extern U8 mBssCnt; -extern U16 mAuthAlg; -extern U16 mListenInterval; -extern U16 mAid; -extern BOOLEAN mAssoc; -extern MacAddr_t mOldAP; -extern U8 mBssType; -extern U16 mAPCap; -extern Element mAPBrates; -extern U8 mBssIndex; -extern U16 mRequestFlag; -extern U8 mPwrState; -extern BOOLEAN mAPAlive; -extern BOOLEAN mProbeWithSsid; -extern Element mIbssParms; -extern U16 mATIMWindow; -extern U8 mConnRetryCnt; -extern U8 mMaxTxRate; - -extern Element mErp; -extern Element mExtRates; -extern U8 mMacMode; -extern U8 mOperationMode; -extern U8 mBurstMode; -extern Element mAPErates; -extern BOOLEAN mIfaceOpened; +//WPA +extern Element mWPAIe; +extern U8 mCounterMeasureState; +extern U8 mNumBOnlySta; + +extern U16 mCap; +extern U16 mDtimCount; +extern Element mSsid; +extern Element mBrates; +extern Element mPhpm; +extern MacAddr_t mBssId; + +//feature +extern U8 mPsStaCnt; +extern U8 mHiddenSSID; +extern U8 mLimitedUser; +extern U8 mCurrConnUser; +extern U8 mBlockBSS; +extern U8 mRadioOn; +extern U8 mSwCipher; +extern U8 mKeyVector[4][16]; +extern U8 mBcKeyVector[16]; +extern U8 mWepIv[4]; +extern U8 mBcIv[4]; +extern U8 mWepKeyLen; +extern U8 mBcKeyLen; +extern U8 mDynKeyMode; +extern BOOLEAN mZyDasModeClient; +extern Seedvar mBcSeed; +extern MICvar mBcMicKey; +extern U8 mWpaBcKeyLen; +extern U8 mWpaBcKeyId; +extern U8 mGkInstalled; +extern U16 mIv16; +extern U32 mIv32; +extern MacAddr_t dot11BCAddress; +extern BssInfo_t mBssInfo[64]; +extern U8 mBssNum; +extern U8 mBssCnt; +extern U16 mAuthAlg; +extern U16 mListenInterval; +extern U16 mAid; +extern BOOLEAN mAssoc; +extern MacAddr_t mOldAP; +extern U8 mBssType; +extern U16 mAPCap; +extern Element mAPBrates; +extern U8 mBssIndex; +extern U16 mRequestFlag; +extern U8 mPwrState; + +extern BOOLEAN mAPAlive; +extern BOOLEAN mProbeWithSsid; +extern Element mIbssParms; +extern U16 mATIMWindow; +extern U8 mConnRetryCnt; +extern U8 mMaxTxRate; + +extern Element mErp; +extern Element mExtRates; +extern U8 mMacMode; +extern U8 mOperationMode; +extern U8 mBurstMode; +extern Element mAPErates; +extern BOOLEAN mIfaceOpened; -extern U8 mAuthMode; +extern U8 mAuthMode; #endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/WS11UPhR.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/WS11UPhR.h @@ -1,162 +1,328 @@ +#ifdef ZD1211 ={ -0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0x1E, 0xEE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, -0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0x93, 0xEE, 0x41, 0xEE, 0x98, 0x9A, 0xD4, 0xF7, 0x02, 0x00, 0x1F, 0xEC, -0x00, 0x00, 0xB2, 0xF8, 0x4D, 0x00, 0xA1, 0xEC, 0x00, 0x00, 0xA6, 0xF7, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xD8, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, -0x40, 0xF0, 0xB4, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x64, 0xEF, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xF6, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, -0xF7, 0xF6, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xF8, 0xF5, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xF1, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, -0x97, 0xF7, 0xA0, 0x90, 0x98, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x42, 0x02, 0xC1, 0x92, 0x03, 0x96, 0x1B, 0xD7, 0x2A, 0x86, -0x1A, 0xD5, 0x2B, 0x86, 0x09, 0xA3, 0x00, 0x80, 0x19, 0xD3, 0x2C, 0x86, 0x00, 0xEE, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x01, 0xD4, 0x42, 0x02, 0xC1, 0x96, 0x0A, 0x65, 0xC0, 0x7A, -0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC4, 0xD2, 0xC5, 0x98, 0x1C, 0xD9, 0x2A, 0x86, 0x01, 0x98, 0x1C, 0xD9, 0x2B, 0x86, 0x1B, 0xD7, 0x2C, 0x86, 0x00, 0xEE, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, -0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xE5, 0xEE, 0x11, 0x93, 0xD8, 0xF7, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xEE, 0x40, 0xF1, -0x40, 0x92, 0x19, 0xD3, 0xD8, 0xF7, 0xC5, 0x92, 0x41, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x40, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x0F, 0x9F, 0x95, 0xF8, 0x0F, 0x9F, 0x99, 0xEE, 0x42, 0x42, 0x02, 0x5E, -0x0F, 0x9F, 0x99, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0xD8, 0xF7, 0x09, 0x93, 0xC7, 0xF7, 0x19, 0xD3, 0x91, 0xEC, 0x40, 0xF0, 0x5F, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0F, 0x9F, -0x99, 0xEE, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, -0x09, 0x93, 0xC7, 0xF7, 0x19, 0xD3, 0x91, 0xEC, 0x40, 0xF0, 0x5F, 0xF2, 0x40, 0xF0, 0xDE, 0xF3, 0x11, 0x93, 0x04, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xE3, 0xEE, 0x40, 0x92, 0x19, 0xD3, -0x04, 0xEC, 0x40, 0xF0, 0x38, 0xF2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFD, 0x19, 0xD3, 0x44, 0x96, 0x40, 0xF0, 0x90, 0xF7, -0x6E, 0x92, 0x19, 0xD3, 0x05, 0x84, 0x40, 0xF0, 0xC4, 0xEE, 0x4B, 0x62, 0x0A, 0x95, 0x2E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x2B, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x00, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, -0x2F, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x34, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x39, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x3E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x43, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x48, 0xEE, -0xD1, 0xD4, 0x0B, 0x97, 0x4D, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x4E, 0xEE, 0xC1, 0xD4, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x43, 0xF1, 0x09, 0x93, 0x01, 0x3F, -0x19, 0xD3, 0xC0, 0x85, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFC, 0x19, 0xD3, 0x44, 0x96, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x03, 0x96, -0x41, 0x02, 0x03, 0x99, 0xC4, 0x94, 0x42, 0x04, 0xC1, 0x04, 0xC2, 0x94, 0xC3, 0xD4, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0x13, 0x97, -0x95, 0xEC, 0x1B, 0xD7, 0x02, 0x80, 0x11, 0x93, 0x99, 0xEC, 0x19, 0xD3, 0x7C, 0x96, 0x0B, 0x97, 0xA0, 0x00, 0x1B, 0xD7, 0x6E, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, -0xFF, 0xBF, 0x11, 0xA3, 0x9A, 0xEC, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, -0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x14, 0x99, 0x03, 0x80, 0x0C, 0xB3, 0x00, 0x10, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x97, 0xF0, -0x11, 0x93, 0x9F, 0xEC, 0x41, 0x02, 0x19, 0xD3, 0x9F, 0xEC, 0x11, 0x93, 0xD6, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x84, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, -0x00, 0x04, 0xC2, 0xD2, 0x0F, 0x9F, 0xB1, 0xF0, 0x11, 0x93, 0x94, 0xEC, 0x02, 0xD2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD0, 0xEF, 0x41, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0x19, 0xD3, 0x9F, 0xEC, -0x12, 0x95, 0x02, 0x80, 0x1A, 0xD5, 0x95, 0xEC, 0x13, 0x97, 0x7C, 0x96, 0x1B, 0xD7, 0x99, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x00, 0x40, 0x19, 0xD3, 0x9A, 0xEC, -0x09, 0x63, 0x00, 0x40, 0xC2, 0xD2, 0x02, 0x94, 0x1A, 0xD5, 0x7C, 0x96, 0x0C, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB0, 0xEF, 0x0C, 0xB3, 0xFF, 0x07, 0x0F, 0x9F, 0xB4, 0xEF, -0x11, 0x93, 0x06, 0x80, 0x09, 0xB3, 0xFF, 0x07, 0x09, 0x03, 0x00, 0xA0, 0x19, 0xD3, 0x97, 0xEC, 0x40, 0x98, 0x0B, 0x97, 0x9C, 0xEC, 0x04, 0x95, 0x03, 0x05, 0x14, 0x03, 0x97, 0xEC, 0x46, 0x02, -0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x08, 0x42, 0x48, 0x02, 0x9E, 0x0F, 0x9F, 0xBB, 0xEF, 0x11, 0x93, 0x97, 0xEC, 0xC1, 0x92, 0xC5, 0xD2, 0x5F, 0xB2, 0x19, 0xD3, 0x9B, 0xEC, 0x0F, 0x9F, 0xD3, 0xEF, -0x13, 0x97, 0x98, 0xEC, 0xC5, 0xD6, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE9, 0xEF, 0x11, 0x93, 0xDC, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xDC, 0xF7, -0x11, 0x93, 0xDB, 0xF7, 0x09, 0xA3, 0x00, 0x10, 0x19, 0xD3, 0xDB, 0xF7, 0x40, 0x98, 0x1C, 0xD9, 0x9B, 0xEC, 0x12, 0x95, 0x9B, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x86, 0xF0, 0x0A, 0xB3, -0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x07, 0xF0, 0x0A, 0xB3, 0x07, 0x00, 0x09, 0x05, 0xA9, 0xEC, 0xC2, 0x94, 0x01, 0xD4, 0x09, 0x03, 0xA1, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x9B, 0xEC, -0xC5, 0x94, 0x0A, 0xB5, 0x00, 0xFF, 0x01, 0xA5, 0xC5, 0xD4, 0x0F, 0x9F, 0x13, 0xF0, 0x0A, 0x05, 0xFF, 0xFF, 0x0A, 0x03, 0xB1, 0xEC, 0xC1, 0x92, 0x01, 0xD2, 0x1A, 0xD5, 0x9B, 0xEC, 0xC5, 0x96, -0x0B, 0x07, 0xFF, 0xFF, 0xC5, 0xD6, 0x11, 0x93, 0x97, 0xEC, 0xC5, 0x98, 0xC1, 0xD8, 0x11, 0x93, 0x97, 0xEC, 0x09, 0x05, 0x0B, 0x00, 0x03, 0xD4, 0xC2, 0x96, 0x06, 0xD6, 0x7B, 0x95, 0x7A, 0x95, -0x4C, 0x02, 0xC1, 0x92, 0x59, 0x93, 0x59, 0x93, 0x01, 0xA5, 0x01, 0x98, 0x0C, 0xF5, 0x7B, 0x93, 0x09, 0x09, 0x01, 0x00, 0x06, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x04, 0xD2, 0x5C, 0x93, 0x59, 0x93, -0x04, 0x94, 0x01, 0xA5, 0x03, 0x96, 0xC3, 0xD4, 0x11, 0x93, 0x97, 0xEC, 0x4C, 0x02, 0x05, 0xD2, 0xC1, 0x92, 0x09, 0xB3, 0x00, 0xFF, 0x7C, 0x95, 0x7A, 0x95, 0x02, 0xA3, 0x05, 0x98, 0xC4, 0xD2, -0x12, 0x95, 0x97, 0xEC, 0x45, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2, 0x12, 0x95, 0x9B, 0xEC, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5B, 0xF0, -0x12, 0x95, 0x97, 0xEC, 0x4A, 0x04, 0x02, 0x99, 0xC4, 0x92, 0x01, 0x98, 0x0C, 0xF3, 0x7B, 0x93, 0x41, 0x02, 0x0F, 0x9F, 0x7C, 0xF0, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x7D, 0xF0, 0x11, 0x93, -0x97, 0xEC, 0x42, 0x02, 0x0A, 0x05, 0xFF, 0xFF, 0xC1, 0xD4, 0x11, 0x93, 0x97, 0xEC, 0x4A, 0x02, 0x12, 0x95, 0x60, 0x96, 0xC1, 0xD4, 0x12, 0x95, 0x97, 0xEC, 0x4B, 0x04, 0x02, 0x97, 0xC3, 0x92, -0x09, 0xB3, 0x1F, 0xFF, 0xC2, 0xD2, 0x12, 0x95, 0x97, 0xEC, 0x4B, 0x04, 0x11, 0x93, 0x62, 0x96, 0x41, 0x93, 0x59, 0x93, 0x02, 0x99, 0xC4, 0xA2, 0xC2, 0xD2, 0xC5, 0x92, 0x19, 0xD3, 0x98, 0xEC, -0x0A, 0x95, 0x0C, 0x02, 0x1A, 0xD5, 0x02, 0x80, 0x0F, 0x9F, 0xB1, 0xF0, 0x09, 0x63, 0xFE, 0x7F, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0xA5, 0x00, 0x04, 0xC1, 0xD4, 0x11, 0x93, 0x9F, 0xEC, 0x09, 0xA3, -0x00, 0x01, 0x19, 0xD3, 0x9F, 0xEC, 0x40, 0xF0, 0x39, 0xEF, 0x0F, 0x9F, 0xB1, 0xF0, 0x11, 0x93, 0x94, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xA6, 0xF0, 0x40, 0xF0, 0x39, 0xEF, 0x11, 0x93, -0x95, 0xEC, 0x44, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB1, 0xF0, 0x48, 0x98, 0x1C, 0xD9, 0x02, 0x80, 0x11, 0x93, 0x91, 0xEC, 0x41, 0x22, 0x0A, 0x95, 0xB1, 0xF0, 0x88, 0xD4, 0x88, 0xDC, -0x91, 0x9A, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x04, 0x82, 0x48, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC8, 0xF0, 0x0A, 0x65, 0xFD, 0x7D, -0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xFE, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0xBF, 0xEC, 0x11, 0x93, 0x04, 0x82, 0x43, 0xB2, 0x12, 0x95, 0x03, 0x82, 0x02, 0xB3, 0x40, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0xEF, 0xF0, 0x0A, 0xB3, 0x00, 0xFF, 0x48, 0xA2, 0x19, 0xD3, 0x03, 0x82, 0x40, 0xF0, 0xEB, 0xF3, 0x11, 0x93, 0xBF, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xEF, 0xF0, 0x11, 0x93, -0x07, 0x82, 0x11, 0x43, 0x03, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xEF, 0xF0, 0x11, 0x93, 0x03, 0x82, 0x09, 0xA3, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x40, 0x96, 0x1B, 0xD7, 0xBF, 0xEC, 0x88, 0x98, -0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x20, 0xBC, 0xC8, 0xD2, 0x40, 0xF0, 0x48, 0xF1, 0x41, 0x00, 0x88, 0x98, -0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0x41, 0x02, 0xC1, 0x92, 0x01, 0x97, 0xC3, 0x96, 0xC2, 0xD6, 0x0A, 0x45, 0x00, 0x95, 0x02, 0x5E, -0x0F, 0x9F, 0x45, 0xF1, 0xC1, 0x92, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x45, 0xF1, 0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x45, 0xF1, 0x41, 0x98, 0x1C, 0xD9, -0xC0, 0xEC, 0x12, 0x95, 0x02, 0x80, 0x01, 0xD4, 0x40, 0xF0, 0x56, 0xF2, 0x0B, 0x67, 0xFD, 0x7D, 0x03, 0x99, 0xC4, 0x92, 0x0C, 0x99, 0x96, 0x03, 0x1C, 0xD9, 0x06, 0x82, 0x41, 0x98, 0x1C, 0xD9, -0x02, 0x82, 0x42, 0x98, 0x1C, 0xD9, 0x05, 0x82, 0x0C, 0x69, 0x80, 0x7F, 0x1C, 0xD9, 0x00, 0xB0, 0x09, 0xA3, 0x00, 0x01, 0xC3, 0xD2, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0x43, 0xF1, 0x42, 0xA4, 0x1A, 0xD5, 0x02, 0x80, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, 0x60, 0xB2, 0x40, 0x42, -0x02, 0x4E, 0x0F, 0x9F, 0x55, 0xF1, 0x40, 0xF0, 0x35, 0xF7, 0xC5, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5E, 0xF1, 0x40, 0xF0, 0x23, 0xF6, 0xC5, 0x96, 0x0B, 0xB3, -0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x67, 0xF1, 0x40, 0xF0, 0x5D, 0xF5, 0xC5, 0x94, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC8, 0xF1, 0x13, 0x97, 0x21, 0xBC, -0x01, 0xD6, 0x0B, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x79, 0xF1, 0x40, 0xF0, 0x62, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x82, 0xF1, -0x40, 0xF0, 0x6C, 0xFB, 0x01, 0x96, 0x0B, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA2, 0xF1, 0x40, 0xF0, 0xB0, 0xFA, 0x41, 0x92, 0x19, 0xD3, 0xD5, 0xF7, 0x11, 0x93, 0x03, 0xEC, -0x09, 0x43, 0x40, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0x98, 0xF1, 0x40, 0x94, 0x1A, 0xD5, 0xD5, 0xF7, 0x11, 0x93, 0x00, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF1, 0x40, 0xF0, 0x38, 0xF2, -0x0F, 0x9F, 0xAB, 0xF1, 0x01, 0x96, 0x0B, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF1, 0x40, 0xF0, 0x7C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0xB4, 0xF1, 0x40, 0xF0, 0x87, 0xFB, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xBF, 0xF1, 0x44, 0x96, 0x1B, 0xD7, 0x0B, 0xBC, 0x0F, 0x9F, 0xC5, 0xF1, 0x41, 0x42, -0x02, 0x5E, 0x0F, 0x9F, 0xC5, 0xF1, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xF2, 0x13, 0x97, -0x28, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xDA, 0xF1, 0x40, 0xF0, 0x18, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, -0xED, 0xF1, 0x40, 0xF0, 0xC4, 0xEE, 0x40, 0xF0, 0x8F, 0xFB, 0x40, 0xF0, 0x1B, 0xF2, 0x40, 0x96, 0x1B, 0xD7, 0x00, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0xD8, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, -0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x09, 0xF2, 0x40, 0xF0, 0x9E, 0xFB, 0x09, 0x63, 0x00, 0x44, 0x01, 0x97, 0xC3, 0x94, 0x48, 0xA4, 0xC1, 0xD4, 0x00, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, -0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, 0x41, 0x92, 0x19, 0xD3, 0xD8, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xF2, -0x40, 0xF0, 0xAE, 0xFB, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, -0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, -0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, -0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, -0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x02, 0x80, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, -0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x09, 0x19, 0xD3, 0x02, 0x80, 0x40, 0xF0, 0x56, 0xF2, 0x40, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, -0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0x3B, 0xF5, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x85, 0xF2, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, -0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x92, 0xF2, 0x40, 0xF0, 0x94, 0xF2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x92, 0xF2, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, -0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xF1, 0xBD, 0x19, 0xD3, 0xB6, 0xEC, 0x11, 0x93, 0xB4, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, -0xAC, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0x07, 0x07, 0x00, 0xC1, 0xD6, 0x0A, 0x05, 0x00, 0xA0, 0x1A, 0xD5, 0x96, 0xEC, 0x11, 0x93, 0xB6, 0xEC, 0x19, 0xD3, 0x01, 0x80, -0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x13, 0x97, 0xB4, 0xEC, 0x40, 0x46, -0x02, 0x5E, 0x0F, 0x9F, 0x2C, 0xF3, 0x12, 0x95, 0x96, 0xEC, 0x0A, 0x03, 0x07, 0x00, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x96, 0xEC, 0x09, 0x05, 0x01, 0x00, 0x48, 0x02, 0xC1, 0x92, 0xC2, 0xD2, -0x11, 0x93, 0x96, 0xEC, 0x4E, 0x02, 0xC1, 0x94, 0xC5, 0xD6, 0xC5, 0x92, 0x11, 0x07, 0x96, 0xEC, 0x0B, 0x03, 0x0F, 0x00, 0xC1, 0x98, 0x46, 0x06, 0x7A, 0x93, 0x79, 0x93, 0x5C, 0x95, 0x5A, 0x95, -0x02, 0xA3, 0xC3, 0xD2, 0x04, 0x95, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x42, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xD5, 0xF2, 0x11, 0x93, 0x96, 0xEC, 0x09, 0x05, 0x05, 0x00, 0x41, 0x02, 0xC1, 0x92, -0xC2, 0xD2, 0x11, 0x93, 0x96, 0xEC, 0xC1, 0x92, 0x09, 0xB5, 0x1F, 0x00, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x02, 0xF3, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x03, 0xF3, 0x0A, 0x05, 0xFF, 0xFF, -0x0F, 0x9F, 0x03, 0xF3, 0x43, 0x94, 0x11, 0x93, 0x96, 0xEC, 0x42, 0x02, 0xC1, 0xD4, 0x11, 0x93, 0x96, 0xEC, 0x49, 0x02, 0xC1, 0x92, 0x19, 0xD3, 0xB4, 0xEC, 0x09, 0x05, 0xF2, 0xFF, 0x1A, 0xD5, -0x92, 0xEC, 0x09, 0x43, 0xD0, 0x07, 0x02, 0x9E, 0x0F, 0x9F, 0x2C, 0xF3, 0x11, 0x93, 0xDC, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xDC, 0xF7, 0x11, 0x93, 0xDB, 0xF7, 0x09, 0xA3, 0x40, 0x00, 0x19, 0xD3, -0xDB, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0xB5, 0xEC, 0x40, 0x96, 0x1B, 0xD7, 0xB4, 0xEC, 0x0F, 0x9F, 0x92, 0xF3, 0x11, 0x93, 0x92, 0xEC, 0x12, 0x95, 0xB6, 0xEC, -0x02, 0x43, 0x02, 0x8E, 0x0F, 0x9F, 0x7A, 0xF3, 0x02, 0x0E, 0x0F, 0x9F, 0x4D, 0xF3, 0x11, 0x93, 0xDC, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xDC, 0xF7, 0x11, 0x93, 0xDB, 0xF7, 0x09, 0xA3, 0x80, 0x00, -0x19, 0xD3, 0xDB, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0xB5, 0xEC, 0x40, 0x96, 0x1B, 0xD7, 0xB4, 0xEC, 0x0F, 0x9F, 0x92, 0xF3, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, -0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5F, 0xF3, 0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x5F, 0xF3, 0x40, 0xF0, 0xA6, 0xF3, 0x0F, 0x9F, 0x94, 0xF3, 0x41, 0x92, -0xC8, 0xD2, 0x0A, 0x95, 0x91, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x72, 0xF3, 0x42, 0x96, 0x1B, 0xD7, 0xC0, 0xEC, -0x0F, 0x9F, 0x94, 0xF3, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x94, 0xF3, 0x12, 0x45, 0x03, 0xEC, 0x02, 0x4E, 0x0F, 0x9F, 0x8C, 0xF3, 0x11, 0x93, -0xDC, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xDC, 0xF7, 0x11, 0x93, 0xDB, 0xF7, 0x09, 0xA3, 0x00, 0x08, 0x19, 0xD3, 0xDB, 0xF7, 0x1A, 0xD5, 0x92, 0xEC, 0x11, 0x93, 0x92, 0xEC, 0x19, 0x25, 0x92, 0xEC, -0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xA6, 0xF3, 0x40, 0x92, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, -0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xD7, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB6, 0xF3, 0x0A, 0x65, -0xBC, 0x69, 0x02, 0x97, 0xC3, 0x92, 0x09, 0x83, 0x00, 0x02, 0xC2, 0xD2, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xC9, 0xF3, 0x11, 0x93, 0xDC, 0xF7, -0x41, 0x02, 0x19, 0xD3, 0xDC, 0xF7, 0x11, 0x93, 0xDB, 0xF7, 0x09, 0xA3, 0x00, 0x20, 0x19, 0xD3, 0xDB, 0xF7, 0x11, 0x93, 0xB5, 0xEC, 0x19, 0xD3, 0x04, 0x80, 0x12, 0x95, 0xB4, 0xEC, 0x1A, 0xD5, -0x05, 0x80, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0xB5, 0xEC, 0x40, 0x94, 0x1A, 0xD5, 0xB4, 0xEC, 0x19, 0xD3, 0xF2, 0xBD, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x09, 0x93, 0x96, 0x03, 0x19, 0xD3, 0x06, 0x82, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, -0x01, 0x82, 0xC5, 0xD2, 0x40, 0x94, 0x01, 0xD4, 0x13, 0x97, 0xB8, 0xEC, 0x02, 0xD6, 0x03, 0x95, 0x0C, 0x99, 0xBB, 0xEC, 0x04, 0x05, 0x13, 0x97, 0x03, 0xEC, 0x01, 0x27, 0x02, 0x99, 0xC4, 0x92, -0x03, 0x03, 0xC2, 0xD2, 0x14, 0x99, 0xBA, 0xEC, 0x03, 0x09, 0x1C, 0xD9, 0xBA, 0xEC, 0x12, 0x95, 0x04, 0x82, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x29, 0xF5, 0x01, 0x92, -0x03, 0xD2, 0x0A, 0xA3, 0x02, 0x00, 0x19, 0xD3, 0x04, 0x82, 0x02, 0x96, 0x0B, 0x05, 0x01, 0x00, 0x1A, 0xD5, 0xB8, 0xEC, 0xC5, 0x92, 0x43, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0x37, 0xF4, 0x42, 0x44, -0x02, 0x8E, 0x0F, 0x9F, 0x37, 0xF4, 0x11, 0x93, 0xBF, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x37, 0xF4, 0x0C, 0x49, 0xD3, 0x08, 0x02, 0x8E, 0x0F, 0x9F, 0x37, 0xF4, 0x11, 0x63, 0x07, 0x82, -0x11, 0xA3, 0x07, 0x82, 0x71, 0x93, 0x79, 0x93, 0x79, 0x93, 0x79, 0x93, 0x03, 0xD2, 0xC5, 0x94, 0x0A, 0xB5, 0xFC, 0xFF, 0x04, 0xD4, 0x03, 0x96, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x46, 0xF4, -0x11, 0x93, 0xB8, 0xEC, 0x41, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x4D, 0xF4, 0xC5, 0x98, 0x0C, 0x03, 0xFF, 0xFF, 0x42, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x74, 0xF4, 0x0A, 0x95, 0xBB, 0xEC, 0x42, 0x92, -0x19, 0xD3, 0xB9, 0xEC, 0xC5, 0x96, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0x66, 0xF4, 0x0B, 0x07, 0xFC, 0xFF, 0xC5, 0xD6, 0xD2, 0x98, 0x1C, 0xD9, 0xC8, 0xBC, 0xD2, 0x96, 0x1B, 0xD7, 0xCA, 0xBC, -0x09, 0x03, 0xFF, 0xFF, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x52, 0xF4, 0x19, 0xD3, 0xB9, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x72, 0xF4, 0x0A, 0x05, 0xFE, 0xFF, 0xCA, 0xD2, 0xC2, 0xD2, -0x0F, 0x9F, 0x74, 0xF4, 0x1A, 0xD5, 0x93, 0xEC, 0x03, 0x98, 0x40, 0x48, 0x02, 0x5E, 0x0F, 0x9F, 0xA1, 0xF4, 0x11, 0x93, 0xB8, 0xEC, 0x41, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0x84, 0xF4, 0x04, 0x94, -0x48, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x8F, 0xF4, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xA1, 0xF4, 0x11, 0x93, 0x04, 0x82, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA1, 0xF4, 0x41, 0x96, -0x01, 0xD6, 0x0A, 0x65, 0xBD, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0F, 0x9F, -0xFA, 0xF4, 0xC5, 0x98, 0x43, 0x48, 0x02, 0x9E, 0x0F, 0x9F, 0xFA, 0xF4, 0x4F, 0x96, 0x0C, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAE, 0xF4, 0x47, 0x96, 0x11, 0x93, 0xB7, 0xEC, -0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xD6, 0xF4, 0x11, 0x93, 0xB8, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD6, 0xF4, 0x12, 0x95, 0x00, 0x82, 0x0A, 0x05, 0xFF, 0xAF, 0x05, 0xD4, 0xC8, 0xD6, -0xC8, 0xD2, 0x40, 0xF0, 0x7B, 0xF7, 0x42, 0x00, 0x05, 0x96, 0xC3, 0x94, 0x01, 0xB5, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0xD6, 0xF4, 0x06, 0x98, 0x50, 0x98, 0x1C, 0xD9, 0xA2, 0xBC, 0x40, 0x98, -0x1C, 0xD9, 0xA2, 0xBC, 0x40, 0x92, 0x03, 0xD2, 0x0F, 0x9F, 0xFF, 0xF4, 0x03, 0x94, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xE3, 0xF4, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, -0xC2, 0xD2, 0x0F, 0x9F, 0xFF, 0xF4, 0x11, 0x93, 0xB8, 0xEC, 0x0C, 0x99, 0xBB, 0xEC, 0x04, 0x03, 0x04, 0x96, 0x13, 0x25, 0x03, 0xEC, 0xC1, 0xD4, 0x11, 0x93, 0xBA, 0xEC, 0x19, 0x05, 0xBA, 0xEC, -0x1B, 0xD7, 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x99, 0xC4, 0x92, 0x43, 0xA2, 0xC2, 0xD2, 0x41, 0x92, 0x01, 0xD2, 0x03, 0x94, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0x13, 0xF5, 0x11, 0x93, -0xB9, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x0B, 0xF5, 0x19, 0xD3, 0xB8, 0xEC, 0x19, 0xD3, 0xBA, 0xEC, 0x19, 0xD3, 0xBB, 0xEC, 0x03, 0x96, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x13, 0xF5, -0x41, 0x98, 0x1C, 0xD9, 0xB7, 0xEC, 0x11, 0x93, 0xBF, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x24, 0xF5, 0x11, 0x93, 0x00, 0x82, 0x19, 0xD3, 0x02, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, -0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2, 0x40, 0x98, 0x1C, 0xD9, 0xBF, 0xEC, 0x0F, 0x9F, 0x2C, 0xF5, 0x01, 0x92, 0x19, 0xD3, 0xB7, 0xEC, 0x01, 0x94, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, -0x38, 0xF5, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x03, 0x80, -0x0A, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x57, 0xF5, 0x0A, 0xB7, 0x00, 0x08, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x5A, 0xF5, 0x11, 0x93, 0x03, 0xEC, 0x41, 0x02, 0x09, 0xB3, -0xFE, 0xFF, 0x12, 0x95, 0x07, 0x80, 0x01, 0x45, 0x02, 0x8E, 0x0F, 0x9F, 0x5A, 0xF5, 0x41, 0x92, 0x0F, 0x9F, 0x5B, 0xF5, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, -0x01, 0x00, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x13, 0x97, 0x6E, 0xEC, 0x0B, 0x47, 0xA0, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0x86, 0xF5, 0x09, 0x63, -0x08, 0x43, 0x0A, 0x65, 0xFF, 0x5F, 0x01, 0x99, 0xC4, 0xD4, 0x0A, 0x95, 0x9B, 0xEC, 0xD2, 0x96, 0x1B, 0xD7, 0xFA, 0xBC, 0xD2, 0x96, 0xC4, 0xD6, 0xD2, 0x98, 0x1C, 0xD9, 0xFA, 0xBC, 0xD2, 0x96, -0xC1, 0xD6, 0xC2, 0x94, 0x1A, 0xD5, 0xFA, 0xBC, 0x0F, 0x9F, 0xC4, 0xF5, 0x0C, 0x69, 0xFF, 0x6F, 0x1C, 0xD9, 0xF8, 0xBC, 0x0B, 0x47, 0x10, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0x9E, 0xF5, 0x0A, 0x95, -0x6F, 0xEC, 0x09, 0x63, 0x06, 0x43, 0x01, 0x99, 0xC4, 0xD6, 0xD2, 0x96, 0x1B, 0xD7, 0xF8, 0xBC, 0x0C, 0x69, 0xEE, 0x6A, 0xC1, 0xD8, 0xC2, 0x94, 0x1A, 0xD5, 0xF8, 0xBC, 0x40, 0x92, 0xC5, 0xD2, -0x11, 0x43, 0xC1, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xC1, 0xF5, 0xC5, 0x94, 0x0A, 0x03, 0x71, 0xEC, 0xC1, 0x94, 0x1A, 0xD5, 0xFA, 0xBC, 0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, -0xB3, 0xF5, 0x0A, 0x95, 0x6F, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x9C, 0xF7, 0x19, 0xD3, 0xF8, 0xBC, 0x41, 0x00, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x13, 0x47, 0xC1, 0xEC, 0x02, 0x1E, 0x0F, 0x9F, -0xA5, 0xF5, 0x40, 0x98, 0x1C, 0xD9, 0xFA, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0x19, 0xD3, 0xC1, 0xEC, 0x0A, 0x65, 0x52, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, -0xEB, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x06, 0x92, 0x01, 0xD2, 0x0A, 0x65, -0xF0, 0x6A, 0x0B, 0x97, 0x6F, 0xEC, 0x02, 0x99, 0xC4, 0x98, 0xD3, 0xD8, 0x02, 0xD6, 0x0A, 0x03, 0x02, 0x00, 0x01, 0x97, 0xC3, 0x98, 0x02, 0x96, 0xC3, 0xD8, 0x01, 0x96, 0xC1, 0xD6, 0x1A, 0xD5, -0x6E, 0xEC, 0xC5, 0x98, 0x14, 0x99, 0x6F, 0xEC, 0xC2, 0xD8, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0xD9, 0xF5, 0x41, 0x00, -0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x13, 0xF6, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x10, 0xF6, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, -0x40, 0x92, 0x19, 0xD3, 0xC0, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, -0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x63, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xAF, 0xBC, 0x47, 0xB2, 0x59, 0x95, 0x5A, 0x95, 0x12, 0xA5, 0xBF, 0xBC, 0x0A, 0xB3, 0x01, 0x00, -0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x35, 0xF6, 0x41, 0x04, 0x05, 0x93, 0x40, 0x96, 0x20, 0xD6, 0x62, 0x97, 0x0F, 0x9F, 0x44, 0xF6, 0x14, 0x99, 0xFC, 0xBC, 0xD1, 0xD8, 0x14, 0x99, 0xFE, 0xBC, -0xD1, 0xD8, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x20, 0x98, 0x03, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0x3B, 0xF6, 0xC5, 0x92, 0x62, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5D, 0xF6, 0x02, 0x8E, 0x0F, 0x9F, -0x57, 0xF6, 0x61, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x81, 0xF6, 0x0F, 0x9F, 0xAE, 0xF6, 0x63, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA4, 0xF6, 0x0F, 0x9F, 0xAE, 0xF6, 0x0D, 0x03, 0x01, 0x00, 0x0C, 0x99, -0x71, 0xEC, 0x0B, 0x05, 0xFF, 0xFF, 0x40, 0x96, 0x0F, 0x9F, 0x6A, 0xF6, 0xD1, 0x96, 0xD4, 0xD6, 0x20, 0x96, 0x41, 0x06, 0x20, 0xD6, 0x02, 0x47, 0x02, 0x1E, 0x0F, 0x9F, 0x66, 0xF6, 0x1A, 0xD5, -0xC1, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0F, 0x9F, -0xAE, 0xF6, 0x0A, 0x03, 0xFE, 0xFF, 0x61, 0x95, 0x40, 0x98, 0x20, 0xD8, 0x02, 0x49, 0x02, 0x0E, 0x0F, 0x9F, 0xAE, 0xF6, 0x0D, 0x03, 0x01, 0x00, 0x21, 0xD2, 0x20, 0x92, 0x05, 0x03, 0x42, 0x02, -0xC8, 0xD2, 0x21, 0x96, 0xC3, 0x92, 0x42, 0x06, 0x21, 0xD6, 0xC8, 0xD2, 0x22, 0xD4, 0x40, 0xF0, 0x01, 0xF1, 0x42, 0x00, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x22, 0x94, 0x02, 0x49, 0x02, 0x1E, -0x0F, 0x9F, 0x8D, 0xF6, 0x0F, 0x9F, 0xAE, 0xF6, 0x0D, 0x03, 0x03, 0x00, 0xC8, 0xD2, 0x02, 0x92, 0xC8, 0xD2, 0x01, 0x96, 0xC8, 0xD6, 0x40, 0xF0, 0xB1, 0xF6, 0x43, 0x00, 0x63, 0x00, 0x88, 0x98, -0x90, 0x9A, 0x88, 0xDA, 0x45, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x08, 0x00, 0x08, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x03, 0xD4, 0x42, 0x02, 0xC1, 0x92, 0x01, 0xD2, -0x02, 0x97, 0xC5, 0x94, 0x0A, 0x83, 0xFF, 0xFF, 0x11, 0xB3, 0x2C, 0x93, 0x09, 0xB3, 0xFB, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x03, 0x92, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE4, 0xF6, 0x01, 0x94, -0xD2, 0x92, 0x19, 0xD3, 0x2C, 0x93, 0x01, 0xD4, 0x02, 0x94, 0x12, 0x95, 0x2C, 0x93, 0x44, 0xA4, 0x1A, 0xD5, 0x2C, 0x93, 0x0A, 0xB5, 0xFB, 0xFF, 0x1A, 0xD5, 0x2C, 0x93, 0x0B, 0x07, 0xFF, 0xFF, -0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0xCF, 0xF6, 0x09, 0x63, 0xD4, 0x6C, 0x01, 0x95, 0xC2, 0x96, 0xC5, 0x94, 0x02, 0xA7, 0xC1, 0xD6, 0x03, 0x92, 0x54, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xF4, 0xF6, -0x0A, 0x83, 0xFF, 0xFF, 0x1B, 0xB3, 0x2C, 0x93, 0x45, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x40, 0xF0, 0x3B, 0xF5, -0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x08, 0xF7, 0x40, 0xF0, 0x94, 0xF2, 0x0F, 0x9F, 0x16, 0xF7, 0x40, 0x96, 0xC8, 0xD6, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x0A, 0x65, -0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, -0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x2D, 0xBC, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, -0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0xEA, 0x43, 0x01, 0x97, 0xC3, 0x94, 0x44, 0xA4, 0xC1, 0xD4, 0x11, 0x93, 0xB9, 0xEC, -0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6F, 0xF7, 0x12, 0x95, 0x93, 0xEC, 0x0B, 0x67, 0x36, 0x43, 0xD2, 0x98, 0x1C, 0xD9, 0xC8, 0xBC, 0xD2, 0x98, 0x03, 0x93, 0xC1, 0xD8, 0x11, 0x93, 0xB9, 0xEC, -0x09, 0x03, 0xFF, 0xFF, 0x19, 0xD3, 0xB9, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x48, 0xF7, 0x19, 0xD3, 0xB8, 0xEC, 0x19, 0xD3, 0xBA, 0xEC, 0x0A, 0x05, 0xFE, 0xFF, 0xCA, 0xD2, 0xCA, 0xD2, -0xC2, 0xD2, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0x0F, 0x9F, 0x78, 0xF7, 0x11, 0x93, -0x03, 0xEC, 0x19, 0xD3, 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x43, 0xA2, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x92, 0x04, 0x96, -0x0D, 0x5E, 0x50, 0x46, 0x02, 0x0E, 0x40, 0x92, 0x09, 0xEE, 0x44, 0x46, 0x04, 0x0E, 0x59, 0x93, 0x44, 0x26, 0x04, 0x5E, 0x46, 0xEE, 0x41, 0x93, 0x41, 0x26, 0x43, 0x4E, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xB1, 0xFE, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x94, -0x1A, 0xD5, 0xA3, 0xF7, 0x11, 0x93, 0x00, 0x90, 0x88, 0x98, 0x90, 0x9A, 0x1D, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x16, 0x00, 0x21, 0x00, -0x12, 0x00, 0x09, 0x00, 0x13, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x21, 0x00, 0x2D, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xF2, 0xCD, 0xF7, 0x00, 0x00, 0x74, 0xF2, 0xCD, 0xF7, 0x00, 0x00, 0xB9, 0xF2, 0xCA, 0xF7, -0xD1, 0xF7, 0x00, 0x00, 0x97, 0xF3, 0xCD, 0xF7, 0x05, 0x46, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; + 0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0x1E, 0xEE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, + 0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0x93, 0xEE, 0x41, 0xEE, 0x98, 0x9A, 0xD4, 0xF7, 0x02, 0x00, 0x1F, 0xEC, + 0x00, 0x00, 0xB2, 0xF8, 0x4D, 0x00, 0xA1, 0xEC, 0x00, 0x00, 0xA6, 0xF7, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xD8, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, + 0x40, 0xF0, 0xB4, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x64, 0xEF, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xF6, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, + 0xF7, 0xF6, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xF8, 0xF5, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xF1, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, + 0x97, 0xF7, 0xA0, 0x90, 0x98, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x42, 0x02, 0xC1, 0x92, 0x03, 0x96, 0x1B, 0xD7, 0x2A, 0x86, + 0x1A, 0xD5, 0x2B, 0x86, 0x09, 0xA3, 0x00, 0x80, 0x19, 0xD3, 0x2C, 0x86, 0x00, 0xEE, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x01, 0xD4, 0x42, 0x02, 0xC1, 0x96, 0x0A, 0x65, 0xC0, 0x7A, + 0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC4, 0xD2, 0xC5, 0x98, 0x1C, 0xD9, 0x2A, 0x86, 0x01, 0x98, 0x1C, 0xD9, 0x2B, 0x86, 0x1B, 0xD7, 0x2C, 0x86, 0x00, 0xEE, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, + 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xE5, 0xEE, 0x11, 0x93, 0xD8, 0xF7, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xEE, 0x40, 0xF1, + 0x40, 0x92, 0x19, 0xD3, 0xD8, 0xF7, 0xC5, 0x92, 0x41, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x40, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x0F, 0x9F, 0x95, 0xF8, 0x0F, 0x9F, 0x99, 0xEE, 0x42, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0x99, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0xD8, 0xF7, 0x09, 0x93, 0xC7, 0xF7, 0x19, 0xD3, 0x91, 0xEC, 0x40, 0xF0, 0x5F, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0F, 0x9F, + 0x99, 0xEE, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, + 0x09, 0x93, 0xC7, 0xF7, 0x19, 0xD3, 0x91, 0xEC, 0x40, 0xF0, 0x5F, 0xF2, 0x40, 0xF0, 0xDE, 0xF3, 0x11, 0x93, 0x04, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xE3, 0xEE, 0x40, 0x92, 0x19, 0xD3, + 0x04, 0xEC, 0x40, 0xF0, 0x38, 0xF2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFD, 0x19, 0xD3, 0x44, 0x96, 0x40, 0xF0, 0x90, 0xF7, + 0x6E, 0x92, 0x19, 0xD3, 0x05, 0x84, 0x40, 0xF0, 0xC4, 0xEE, 0x4B, 0x62, 0x0A, 0x95, 0x2E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x2B, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x00, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, + 0x2F, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x34, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x39, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x3E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x43, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x48, 0xEE, + 0xD1, 0xD4, 0x0B, 0x97, 0x4D, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x4E, 0xEE, 0xC1, 0xD4, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x43, 0xF1, 0x09, 0x93, 0x01, 0x3F, + 0x19, 0xD3, 0xC0, 0x85, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFC, 0x19, 0xD3, 0x44, 0x96, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x03, 0x96, + 0x41, 0x02, 0x03, 0x99, 0xC4, 0x94, 0x42, 0x04, 0xC1, 0x04, 0xC2, 0x94, 0xC3, 0xD4, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0x13, 0x97, + 0x95, 0xEC, 0x1B, 0xD7, 0x02, 0x80, 0x11, 0x93, 0x99, 0xEC, 0x19, 0xD3, 0x7C, 0x96, 0x0B, 0x97, 0xA0, 0x00, 0x1B, 0xD7, 0x6E, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, + 0xFF, 0xBF, 0x11, 0xA3, 0x9A, 0xEC, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, + 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x14, 0x99, 0x03, 0x80, 0x0C, 0xB3, 0x00, 0x10, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x97, 0xF0, + 0x11, 0x93, 0x9F, 0xEC, 0x41, 0x02, 0x19, 0xD3, 0x9F, 0xEC, 0x11, 0x93, 0xD6, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x84, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, + 0x00, 0x04, 0xC2, 0xD2, 0x0F, 0x9F, 0xB1, 0xF0, 0x11, 0x93, 0x94, 0xEC, 0x02, 0xD2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD0, 0xEF, 0x41, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0x19, 0xD3, 0x9F, 0xEC, + 0x12, 0x95, 0x02, 0x80, 0x1A, 0xD5, 0x95, 0xEC, 0x13, 0x97, 0x7C, 0x96, 0x1B, 0xD7, 0x99, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x00, 0x40, 0x19, 0xD3, 0x9A, 0xEC, + 0x09, 0x63, 0x00, 0x40, 0xC2, 0xD2, 0x02, 0x94, 0x1A, 0xD5, 0x7C, 0x96, 0x0C, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB0, 0xEF, 0x0C, 0xB3, 0xFF, 0x07, 0x0F, 0x9F, 0xB4, 0xEF, + 0x11, 0x93, 0x06, 0x80, 0x09, 0xB3, 0xFF, 0x07, 0x09, 0x03, 0x00, 0xA0, 0x19, 0xD3, 0x97, 0xEC, 0x40, 0x98, 0x0B, 0x97, 0x9C, 0xEC, 0x04, 0x95, 0x03, 0x05, 0x14, 0x03, 0x97, 0xEC, 0x46, 0x02, + 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x08, 0x42, 0x48, 0x02, 0x9E, 0x0F, 0x9F, 0xBB, 0xEF, 0x11, 0x93, 0x97, 0xEC, 0xC1, 0x92, 0xC5, 0xD2, 0x5F, 0xB2, 0x19, 0xD3, 0x9B, 0xEC, 0x0F, 0x9F, 0xD3, 0xEF, + 0x13, 0x97, 0x98, 0xEC, 0xC5, 0xD6, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE9, 0xEF, 0x11, 0x93, 0xDC, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xDC, 0xF7, + 0x11, 0x93, 0xDB, 0xF7, 0x09, 0xA3, 0x00, 0x10, 0x19, 0xD3, 0xDB, 0xF7, 0x40, 0x98, 0x1C, 0xD9, 0x9B, 0xEC, 0x12, 0x95, 0x9B, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x86, 0xF0, 0x0A, 0xB3, + 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x07, 0xF0, 0x0A, 0xB3, 0x07, 0x00, 0x09, 0x05, 0xA9, 0xEC, 0xC2, 0x94, 0x01, 0xD4, 0x09, 0x03, 0xA1, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x9B, 0xEC, + + 0xC5, 0x94, 0x0A, 0xB5, 0x00, 0xFF, 0x01, 0xA5, 0xC5, 0xD4, 0x0F, 0x9F, 0x13, 0xF0, 0x0A, 0x05, 0xFF, 0xFF, 0x0A, 0x03, 0xB1, 0xEC, 0xC1, 0x92, 0x01, 0xD2, 0x1A, 0xD5, 0x9B, 0xEC, 0xC5, 0x96, + 0x0B, 0x07, 0xFF, 0xFF, 0xC5, 0xD6, 0x11, 0x93, 0x97, 0xEC, 0xC5, 0x98, 0xC1, 0xD8, 0x11, 0x93, 0x97, 0xEC, 0x09, 0x05, 0x0B, 0x00, 0x03, 0xD4, 0xC2, 0x96, 0x06, 0xD6, 0x7B, 0x95, 0x7A, 0x95, + 0x4C, 0x02, 0xC1, 0x92, 0x59, 0x93, 0x59, 0x93, 0x01, 0xA5, 0x01, 0x98, 0x0C, 0xF5, 0x7B, 0x93, 0x09, 0x09, 0x01, 0x00, 0x06, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x04, 0xD2, 0x5C, 0x93, 0x59, 0x93, + 0x04, 0x94, 0x01, 0xA5, 0x03, 0x96, 0xC3, 0xD4, 0x11, 0x93, 0x97, 0xEC, 0x4C, 0x02, 0x05, 0xD2, 0xC1, 0x92, 0x09, 0xB3, 0x00, 0xFF, 0x7C, 0x95, 0x7A, 0x95, 0x02, 0xA3, 0x05, 0x98, 0xC4, 0xD2, + 0x12, 0x95, 0x97, 0xEC, 0x45, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2, 0x12, 0x95, 0x9B, 0xEC, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5B, 0xF0, + 0x12, 0x95, 0x97, 0xEC, 0x4A, 0x04, 0x02, 0x99, 0xC4, 0x92, 0x01, 0x98, 0x0C, 0xF3, 0x7B, 0x93, 0x41, 0x02, 0x0F, 0x9F, 0x7C, 0xF0, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x7D, 0xF0, 0x11, 0x93, + 0x97, 0xEC, 0x42, 0x02, 0x0A, 0x05, 0xFF, 0xFF, 0xC1, 0xD4, 0x11, 0x93, 0x97, 0xEC, 0x4A, 0x02, 0x12, 0x95, 0x60, 0x96, 0xC1, 0xD4, 0x12, 0x95, 0x97, 0xEC, 0x4B, 0x04, 0x02, 0x97, 0xC3, 0x92, + 0x09, 0xB3, 0x1F, 0xFF, 0xC2, 0xD2, 0x12, 0x95, 0x97, 0xEC, 0x4B, 0x04, 0x11, 0x93, 0x62, 0x96, 0x41, 0x93, 0x59, 0x93, 0x02, 0x99, 0xC4, 0xA2, 0xC2, 0xD2, 0xC5, 0x92, 0x19, 0xD3, 0x98, 0xEC, + 0x0A, 0x95, 0x0C, 0x02, 0x1A, 0xD5, 0x02, 0x80, 0x0F, 0x9F, 0xB1, 0xF0, 0x09, 0x63, 0xFE, 0x7F, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0xA5, 0x00, 0x04, 0xC1, 0xD4, 0x11, 0x93, 0x9F, 0xEC, 0x09, 0xA3, + 0x00, 0x01, 0x19, 0xD3, 0x9F, 0xEC, 0x40, 0xF0, 0x39, 0xEF, 0x0F, 0x9F, 0xB1, 0xF0, 0x11, 0x93, 0x94, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xA6, 0xF0, 0x40, 0xF0, 0x39, 0xEF, 0x11, 0x93, + 0x95, 0xEC, 0x44, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB1, 0xF0, 0x48, 0x98, 0x1C, 0xD9, 0x02, 0x80, 0x11, 0x93, 0x91, 0xEC, 0x41, 0x22, 0x0A, 0x95, 0xB1, 0xF0, 0x88, 0xD4, 0x88, 0xDC, + 0x91, 0x9A, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x04, 0x82, 0x48, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC8, 0xF0, 0x0A, 0x65, 0xFD, 0x7D, + 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xFE, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0xBF, 0xEC, 0x11, 0x93, 0x04, 0x82, 0x43, 0xB2, 0x12, 0x95, 0x03, 0x82, 0x02, 0xB3, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0xEF, 0xF0, 0x0A, 0xB3, 0x00, 0xFF, 0x48, 0xA2, 0x19, 0xD3, 0x03, 0x82, 0x40, 0xF0, 0xEB, 0xF3, 0x11, 0x93, 0xBF, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xEF, 0xF0, 0x11, 0x93, + 0x07, 0x82, 0x11, 0x43, 0x03, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xEF, 0xF0, 0x11, 0x93, 0x03, 0x82, 0x09, 0xA3, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x40, 0x96, 0x1B, 0xD7, 0xBF, 0xEC, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x20, 0xBC, 0xC8, 0xD2, 0x40, 0xF0, 0x48, 0xF1, 0x41, 0x00, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0x41, 0x02, 0xC1, 0x92, 0x01, 0x97, 0xC3, 0x96, 0xC2, 0xD6, 0x0A, 0x45, 0x00, 0x95, 0x02, 0x5E, + 0x0F, 0x9F, 0x45, 0xF1, 0xC1, 0x92, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x45, 0xF1, 0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x45, 0xF1, 0x41, 0x98, 0x1C, 0xD9, + 0xC0, 0xEC, 0x12, 0x95, 0x02, 0x80, 0x01, 0xD4, 0x40, 0xF0, 0x56, 0xF2, 0x0B, 0x67, 0xFD, 0x7D, 0x03, 0x99, 0xC4, 0x92, 0x0C, 0x99, 0x96, 0x03, 0x1C, 0xD9, 0x06, 0x82, 0x41, 0x98, 0x1C, 0xD9, + 0x02, 0x82, 0x42, 0x98, 0x1C, 0xD9, 0x05, 0x82, 0x0C, 0x69, 0x80, 0x7F, 0x1C, 0xD9, 0x00, 0xB0, 0x09, 0xA3, 0x00, 0x01, 0xC3, 0xD2, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x43, 0xF1, 0x42, 0xA4, 0x1A, 0xD5, 0x02, 0x80, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, 0x60, 0xB2, 0x40, 0x42, + 0x02, 0x4E, 0x0F, 0x9F, 0x55, 0xF1, 0x40, 0xF0, 0x35, 0xF7, 0xC5, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5E, 0xF1, 0x40, 0xF0, 0x23, 0xF6, 0xC5, 0x96, 0x0B, 0xB3, + 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x67, 0xF1, 0x40, 0xF0, 0x5D, 0xF5, 0xC5, 0x94, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC8, 0xF1, 0x13, 0x97, 0x21, 0xBC, + 0x01, 0xD6, 0x0B, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x79, 0xF1, 0x40, 0xF0, 0x62, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x82, 0xF1, + 0x40, 0xF0, 0x6C, 0xFB, 0x01, 0x96, 0x0B, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA2, 0xF1, 0x40, 0xF0, 0xB0, 0xFA, 0x41, 0x92, 0x19, 0xD3, 0xD5, 0xF7, 0x11, 0x93, 0x03, 0xEC, + 0x09, 0x43, 0x40, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0x98, 0xF1, 0x40, 0x94, 0x1A, 0xD5, 0xD5, 0xF7, 0x11, 0x93, 0x00, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF1, 0x40, 0xF0, 0x38, 0xF2, + 0x0F, 0x9F, 0xAB, 0xF1, 0x01, 0x96, 0x0B, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF1, 0x40, 0xF0, 0x7C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0xB4, 0xF1, 0x40, 0xF0, 0x87, 0xFB, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xBF, 0xF1, 0x44, 0x96, 0x1B, 0xD7, 0x0B, 0xBC, 0x0F, 0x9F, 0xC5, 0xF1, 0x41, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0xC5, 0xF1, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xF2, 0x13, 0x97, + 0x28, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xDA, 0xF1, 0x40, 0xF0, 0x18, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0xED, 0xF1, 0x40, 0xF0, 0xC4, 0xEE, 0x40, 0xF0, 0x8F, 0xFB, 0x40, 0xF0, 0x1B, 0xF2, 0x40, 0x96, 0x1B, 0xD7, 0x00, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0xD8, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x09, 0xF2, 0x40, 0xF0, 0x9E, 0xFB, 0x09, 0x63, 0x00, 0x44, 0x01, 0x97, 0xC3, 0x94, 0x48, 0xA4, 0xC1, 0xD4, 0x00, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, + 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, 0x41, 0x92, 0x19, 0xD3, 0xD8, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xF2, + 0x40, 0xF0, 0xAE, 0xFB, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, + 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, + 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, + 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, + 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x02, 0x80, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x09, 0x19, 0xD3, 0x02, 0x80, 0x40, 0xF0, 0x56, 0xF2, 0x40, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, + 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0x3B, 0xF5, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x85, 0xF2, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, + 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x92, 0xF2, 0x40, 0xF0, 0x94, 0xF2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x92, 0xF2, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, + 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xF1, 0xBD, 0x19, 0xD3, 0xB6, 0xEC, 0x11, 0x93, 0xB4, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, + 0xAC, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0x07, 0x07, 0x00, 0xC1, 0xD6, 0x0A, 0x05, 0x00, 0xA0, 0x1A, 0xD5, 0x96, 0xEC, 0x11, 0x93, 0xB6, 0xEC, 0x19, 0xD3, 0x01, 0x80, + 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x13, 0x97, 0xB4, 0xEC, 0x40, 0x46, + 0x02, 0x5E, 0x0F, 0x9F, 0x2C, 0xF3, 0x12, 0x95, 0x96, 0xEC, 0x0A, 0x03, 0x07, 0x00, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x96, 0xEC, 0x09, 0x05, 0x01, 0x00, 0x48, 0x02, 0xC1, 0x92, 0xC2, 0xD2, + 0x11, 0x93, 0x96, 0xEC, 0x4E, 0x02, 0xC1, 0x94, 0xC5, 0xD6, 0xC5, 0x92, 0x11, 0x07, 0x96, 0xEC, 0x0B, 0x03, 0x0F, 0x00, 0xC1, 0x98, 0x46, 0x06, 0x7A, 0x93, 0x79, 0x93, 0x5C, 0x95, 0x5A, 0x95, + 0x02, 0xA3, 0xC3, 0xD2, 0x04, 0x95, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x42, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xD5, 0xF2, 0x11, 0x93, 0x96, 0xEC, 0x09, 0x05, 0x05, 0x00, 0x41, 0x02, 0xC1, 0x92, + 0xC2, 0xD2, 0x11, 0x93, 0x96, 0xEC, 0xC1, 0x92, 0x09, 0xB5, 0x1F, 0x00, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x02, 0xF3, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x03, 0xF3, 0x0A, 0x05, 0xFF, 0xFF, + 0x0F, 0x9F, 0x03, 0xF3, 0x43, 0x94, 0x11, 0x93, 0x96, 0xEC, 0x42, 0x02, 0xC1, 0xD4, 0x11, 0x93, 0x96, 0xEC, 0x49, 0x02, 0xC1, 0x92, 0x19, 0xD3, 0xB4, 0xEC, 0x09, 0x05, 0xF2, 0xFF, 0x1A, 0xD5, + 0x92, 0xEC, 0x09, 0x43, 0xD0, 0x07, 0x02, 0x9E, 0x0F, 0x9F, 0x2C, 0xF3, 0x11, 0x93, 0xDC, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xDC, 0xF7, 0x11, 0x93, 0xDB, 0xF7, 0x09, 0xA3, 0x40, 0x00, 0x19, 0xD3, + 0xDB, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0xB5, 0xEC, 0x40, 0x96, 0x1B, 0xD7, 0xB4, 0xEC, 0x0F, 0x9F, 0x92, 0xF3, 0x11, 0x93, 0x92, 0xEC, 0x12, 0x95, 0xB6, 0xEC, + 0x02, 0x43, 0x02, 0x8E, 0x0F, 0x9F, 0x7A, 0xF3, 0x02, 0x0E, 0x0F, 0x9F, 0x4D, 0xF3, 0x11, 0x93, 0xDC, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xDC, 0xF7, 0x11, 0x93, 0xDB, 0xF7, 0x09, 0xA3, 0x80, 0x00, + 0x19, 0xD3, 0xDB, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0xB5, 0xEC, 0x40, 0x96, 0x1B, 0xD7, 0xB4, 0xEC, 0x0F, 0x9F, 0x92, 0xF3, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, + 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5F, 0xF3, 0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x5F, 0xF3, 0x40, 0xF0, 0xA6, 0xF3, 0x0F, 0x9F, 0x94, 0xF3, 0x41, 0x92, + 0xC8, 0xD2, 0x0A, 0x95, 0x91, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x72, 0xF3, 0x42, 0x96, 0x1B, 0xD7, 0xC0, 0xEC, + 0x0F, 0x9F, 0x94, 0xF3, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x94, 0xF3, 0x12, 0x45, 0x03, 0xEC, 0x02, 0x4E, 0x0F, 0x9F, 0x8C, 0xF3, 0x11, 0x93, + 0xDC, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xDC, 0xF7, 0x11, 0x93, 0xDB, 0xF7, 0x09, 0xA3, 0x00, 0x08, 0x19, 0xD3, 0xDB, 0xF7, 0x1A, 0xD5, 0x92, 0xEC, 0x11, 0x93, 0x92, 0xEC, 0x19, 0x25, 0x92, 0xEC, + 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xA6, 0xF3, 0x40, 0x92, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, + 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xD7, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB6, 0xF3, 0x0A, 0x65, + 0xBC, 0x69, 0x02, 0x97, 0xC3, 0x92, 0x09, 0x83, 0x00, 0x02, 0xC2, 0xD2, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xC9, 0xF3, 0x11, 0x93, 0xDC, 0xF7, + 0x41, 0x02, 0x19, 0xD3, 0xDC, 0xF7, 0x11, 0x93, 0xDB, 0xF7, 0x09, 0xA3, 0x00, 0x20, 0x19, 0xD3, 0xDB, 0xF7, 0x11, 0x93, 0xB5, 0xEC, 0x19, 0xD3, 0x04, 0x80, 0x12, 0x95, 0xB4, 0xEC, 0x1A, 0xD5, + 0x05, 0x80, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0xB5, 0xEC, 0x40, 0x94, 0x1A, 0xD5, 0xB4, 0xEC, 0x19, 0xD3, 0xF2, 0xBD, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x09, 0x93, 0x96, 0x03, 0x19, 0xD3, 0x06, 0x82, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, + 0x01, 0x82, 0xC5, 0xD2, 0x40, 0x94, 0x01, 0xD4, 0x13, 0x97, 0xB8, 0xEC, 0x02, 0xD6, 0x03, 0x95, 0x0C, 0x99, 0xBB, 0xEC, 0x04, 0x05, 0x13, 0x97, 0x03, 0xEC, 0x01, 0x27, 0x02, 0x99, 0xC4, 0x92, + 0x03, 0x03, 0xC2, 0xD2, 0x14, 0x99, 0xBA, 0xEC, 0x03, 0x09, 0x1C, 0xD9, 0xBA, 0xEC, 0x12, 0x95, 0x04, 0x82, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x29, 0xF5, 0x01, 0x92, + 0x03, 0xD2, 0x0A, 0xA3, 0x02, 0x00, 0x19, 0xD3, 0x04, 0x82, 0x02, 0x96, 0x0B, 0x05, 0x01, 0x00, 0x1A, 0xD5, 0xB8, 0xEC, 0xC5, 0x92, 0x43, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0x37, 0xF4, 0x42, 0x44, + 0x02, 0x8E, 0x0F, 0x9F, 0x37, 0xF4, 0x11, 0x93, 0xBF, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x37, 0xF4, 0x0C, 0x49, 0xD3, 0x08, 0x02, 0x8E, 0x0F, 0x9F, 0x37, 0xF4, 0x11, 0x63, 0x07, 0x82, + 0x11, 0xA3, 0x07, 0x82, 0x71, 0x93, 0x79, 0x93, 0x79, 0x93, 0x79, 0x93, 0x03, 0xD2, 0xC5, 0x94, 0x0A, 0xB5, 0xFC, 0xFF, 0x04, 0xD4, 0x03, 0x96, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x46, 0xF4, + 0x11, 0x93, 0xB8, 0xEC, 0x41, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x4D, 0xF4, 0xC5, 0x98, 0x0C, 0x03, 0xFF, 0xFF, 0x42, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x74, 0xF4, 0x0A, 0x95, 0xBB, 0xEC, 0x42, 0x92, + 0x19, 0xD3, 0xB9, 0xEC, 0xC5, 0x96, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0x66, 0xF4, 0x0B, 0x07, 0xFC, 0xFF, 0xC5, 0xD6, 0xD2, 0x98, 0x1C, 0xD9, 0xC8, 0xBC, 0xD2, 0x96, 0x1B, 0xD7, 0xCA, 0xBC, + 0x09, 0x03, 0xFF, 0xFF, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x52, 0xF4, 0x19, 0xD3, 0xB9, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x72, 0xF4, 0x0A, 0x05, 0xFE, 0xFF, 0xCA, 0xD2, 0xC2, 0xD2, + 0x0F, 0x9F, 0x74, 0xF4, 0x1A, 0xD5, 0x93, 0xEC, 0x03, 0x98, 0x40, 0x48, 0x02, 0x5E, 0x0F, 0x9F, 0xA1, 0xF4, 0x11, 0x93, 0xB8, 0xEC, 0x41, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0x84, 0xF4, 0x04, 0x94, + 0x48, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x8F, 0xF4, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xA1, 0xF4, 0x11, 0x93, 0x04, 0x82, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA1, 0xF4, 0x41, 0x96, + 0x01, 0xD6, 0x0A, 0x65, 0xBD, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0F, 0x9F, + 0xFA, 0xF4, 0xC5, 0x98, 0x43, 0x48, 0x02, 0x9E, 0x0F, 0x9F, 0xFA, 0xF4, 0x4F, 0x96, 0x0C, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAE, 0xF4, 0x47, 0x96, 0x11, 0x93, 0xB7, 0xEC, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xD6, 0xF4, 0x11, 0x93, 0xB8, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD6, 0xF4, 0x12, 0x95, 0x00, 0x82, 0x0A, 0x05, 0xFF, 0xAF, 0x05, 0xD4, 0xC8, 0xD6, + 0xC8, 0xD2, 0x40, 0xF0, 0x7B, 0xF7, 0x42, 0x00, 0x05, 0x96, 0xC3, 0x94, 0x01, 0xB5, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0xD6, 0xF4, 0x06, 0x98, 0x50, 0x98, 0x1C, 0xD9, 0xA2, 0xBC, 0x40, 0x98, + 0x1C, 0xD9, 0xA2, 0xBC, 0x40, 0x92, 0x03, 0xD2, 0x0F, 0x9F, 0xFF, 0xF4, 0x03, 0x94, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xE3, 0xF4, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, + 0xC2, 0xD2, 0x0F, 0x9F, 0xFF, 0xF4, 0x11, 0x93, 0xB8, 0xEC, 0x0C, 0x99, 0xBB, 0xEC, 0x04, 0x03, 0x04, 0x96, 0x13, 0x25, 0x03, 0xEC, 0xC1, 0xD4, 0x11, 0x93, 0xBA, 0xEC, 0x19, 0x05, 0xBA, 0xEC, + 0x1B, 0xD7, 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x99, 0xC4, 0x92, 0x43, 0xA2, 0xC2, 0xD2, 0x41, 0x92, 0x01, 0xD2, 0x03, 0x94, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0x13, 0xF5, 0x11, 0x93, + 0xB9, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x0B, 0xF5, 0x19, 0xD3, 0xB8, 0xEC, 0x19, 0xD3, 0xBA, 0xEC, 0x19, 0xD3, 0xBB, 0xEC, 0x03, 0x96, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x13, 0xF5, + 0x41, 0x98, 0x1C, 0xD9, 0xB7, 0xEC, 0x11, 0x93, 0xBF, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x24, 0xF5, 0x11, 0x93, 0x00, 0x82, 0x19, 0xD3, 0x02, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, + 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2, 0x40, 0x98, 0x1C, 0xD9, 0xBF, 0xEC, 0x0F, 0x9F, 0x2C, 0xF5, 0x01, 0x92, 0x19, 0xD3, 0xB7, 0xEC, 0x01, 0x94, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, + 0x38, 0xF5, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x03, 0x80, + 0x0A, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x57, 0xF5, 0x0A, 0xB7, 0x00, 0x08, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x5A, 0xF5, 0x11, 0x93, 0x03, 0xEC, 0x41, 0x02, 0x09, 0xB3, + 0xFE, 0xFF, 0x12, 0x95, 0x07, 0x80, 0x01, 0x45, 0x02, 0x8E, 0x0F, 0x9F, 0x5A, 0xF5, 0x41, 0x92, 0x0F, 0x9F, 0x5B, 0xF5, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, + 0x01, 0x00, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x13, 0x97, 0x6E, 0xEC, 0x0B, 0x47, 0xA0, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0x86, 0xF5, 0x09, 0x63, + 0x08, 0x43, 0x0A, 0x65, 0xFF, 0x5F, 0x01, 0x99, 0xC4, 0xD4, 0x0A, 0x95, 0x9B, 0xEC, 0xD2, 0x96, 0x1B, 0xD7, 0xFA, 0xBC, 0xD2, 0x96, 0xC4, 0xD6, 0xD2, 0x98, 0x1C, 0xD9, 0xFA, 0xBC, 0xD2, 0x96, + 0xC1, 0xD6, 0xC2, 0x94, 0x1A, 0xD5, 0xFA, 0xBC, 0x0F, 0x9F, 0xC4, 0xF5, 0x0C, 0x69, 0xFF, 0x6F, 0x1C, 0xD9, 0xF8, 0xBC, 0x0B, 0x47, 0x10, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0x9E, 0xF5, 0x0A, 0x95, + 0x6F, 0xEC, 0x09, 0x63, 0x06, 0x43, 0x01, 0x99, 0xC4, 0xD6, 0xD2, 0x96, 0x1B, 0xD7, 0xF8, 0xBC, 0x0C, 0x69, 0xEE, 0x6A, 0xC1, 0xD8, 0xC2, 0x94, 0x1A, 0xD5, 0xF8, 0xBC, 0x40, 0x92, 0xC5, 0xD2, + 0x11, 0x43, 0xC1, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xC1, 0xF5, 0xC5, 0x94, 0x0A, 0x03, 0x71, 0xEC, 0xC1, 0x94, 0x1A, 0xD5, 0xFA, 0xBC, 0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0xB3, 0xF5, 0x0A, 0x95, 0x6F, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x9C, 0xF7, 0x19, 0xD3, 0xF8, 0xBC, 0x41, 0x00, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x13, 0x47, 0xC1, 0xEC, 0x02, 0x1E, 0x0F, 0x9F, + 0xA5, 0xF5, 0x40, 0x98, 0x1C, 0xD9, 0xFA, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0x19, 0xD3, 0xC1, 0xEC, 0x0A, 0x65, 0x52, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, + 0xEB, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x06, 0x92, 0x01, 0xD2, 0x0A, 0x65, + 0xF0, 0x6A, 0x0B, 0x97, 0x6F, 0xEC, 0x02, 0x99, 0xC4, 0x98, 0xD3, 0xD8, 0x02, 0xD6, 0x0A, 0x03, 0x02, 0x00, 0x01, 0x97, 0xC3, 0x98, 0x02, 0x96, 0xC3, 0xD8, 0x01, 0x96, 0xC1, 0xD6, 0x1A, 0xD5, + 0x6E, 0xEC, 0xC5, 0x98, 0x14, 0x99, 0x6F, 0xEC, 0xC2, 0xD8, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0xD9, 0xF5, 0x41, 0x00, + 0x11, 0x93, 0xC0, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x13, 0xF6, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x10, 0xF6, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, + 0x40, 0x92, 0x19, 0xD3, 0xC0, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, + 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x63, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xAF, 0xBC, 0x47, 0xB2, 0x59, 0x95, 0x5A, 0x95, 0x12, 0xA5, 0xBF, 0xBC, 0x0A, 0xB3, 0x01, 0x00, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x35, 0xF6, 0x41, 0x04, 0x05, 0x93, 0x40, 0x96, 0x20, 0xD6, 0x62, 0x97, 0x0F, 0x9F, 0x44, 0xF6, 0x14, 0x99, 0xFC, 0xBC, 0xD1, 0xD8, 0x14, 0x99, 0xFE, 0xBC, + 0xD1, 0xD8, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x20, 0x98, 0x03, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0x3B, 0xF6, 0xC5, 0x92, 0x62, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5D, 0xF6, 0x02, 0x8E, 0x0F, 0x9F, + 0x57, 0xF6, 0x61, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x81, 0xF6, 0x0F, 0x9F, 0xAE, 0xF6, 0x63, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA4, 0xF6, 0x0F, 0x9F, 0xAE, 0xF6, 0x0D, 0x03, 0x01, 0x00, 0x0C, 0x99, + 0x71, 0xEC, 0x0B, 0x05, 0xFF, 0xFF, 0x40, 0x96, 0x0F, 0x9F, 0x6A, 0xF6, 0xD1, 0x96, 0xD4, 0xD6, 0x20, 0x96, 0x41, 0x06, 0x20, 0xD6, 0x02, 0x47, 0x02, 0x1E, 0x0F, 0x9F, 0x66, 0xF6, 0x1A, 0xD5, + 0xC1, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0F, 0x9F, + 0xAE, 0xF6, 0x0A, 0x03, 0xFE, 0xFF, 0x61, 0x95, 0x40, 0x98, 0x20, 0xD8, 0x02, 0x49, 0x02, 0x0E, 0x0F, 0x9F, 0xAE, 0xF6, 0x0D, 0x03, 0x01, 0x00, 0x21, 0xD2, 0x20, 0x92, 0x05, 0x03, 0x42, 0x02, + 0xC8, 0xD2, 0x21, 0x96, 0xC3, 0x92, 0x42, 0x06, 0x21, 0xD6, 0xC8, 0xD2, 0x22, 0xD4, 0x40, 0xF0, 0x01, 0xF1, 0x42, 0x00, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x22, 0x94, 0x02, 0x49, 0x02, 0x1E, + 0x0F, 0x9F, 0x8D, 0xF6, 0x0F, 0x9F, 0xAE, 0xF6, 0x0D, 0x03, 0x03, 0x00, 0xC8, 0xD2, 0x02, 0x92, 0xC8, 0xD2, 0x01, 0x96, 0xC8, 0xD6, 0x40, 0xF0, 0xB1, 0xF6, 0x43, 0x00, 0x63, 0x00, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x45, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x08, 0x00, 0x08, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x03, 0xD4, 0x42, 0x02, 0xC1, 0x92, 0x01, 0xD2, + 0x02, 0x97, 0xC5, 0x94, 0x0A, 0x83, 0xFF, 0xFF, 0x11, 0xB3, 0x2C, 0x93, 0x09, 0xB3, 0xFB, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x03, 0x92, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE4, 0xF6, 0x01, 0x94, + 0xD2, 0x92, 0x19, 0xD3, 0x2C, 0x93, 0x01, 0xD4, 0x02, 0x94, 0x12, 0x95, 0x2C, 0x93, 0x44, 0xA4, 0x1A, 0xD5, 0x2C, 0x93, 0x0A, 0xB5, 0xFB, 0xFF, 0x1A, 0xD5, 0x2C, 0x93, 0x0B, 0x07, 0xFF, 0xFF, + 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0xCF, 0xF6, 0x09, 0x63, 0xD4, 0x6C, 0x01, 0x95, 0xC2, 0x96, 0xC5, 0x94, 0x02, 0xA7, 0xC1, 0xD6, 0x03, 0x92, 0x54, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xF4, 0xF6, + 0x0A, 0x83, 0xFF, 0xFF, 0x1B, 0xB3, 0x2C, 0x93, 0x45, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x40, 0xF0, 0x3B, 0xF5, + 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x08, 0xF7, 0x40, 0xF0, 0x94, 0xF2, 0x0F, 0x9F, 0x16, 0xF7, 0x40, 0x96, 0xC8, 0xD6, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x0A, 0x65, + 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, + 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x2D, 0xBC, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, + 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0xEA, 0x43, 0x01, 0x97, 0xC3, 0x94, 0x44, 0xA4, 0xC1, 0xD4, 0x11, 0x93, 0xB9, 0xEC, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6F, 0xF7, 0x12, 0x95, 0x93, 0xEC, 0x0B, 0x67, 0x36, 0x43, 0xD2, 0x98, 0x1C, 0xD9, 0xC8, 0xBC, 0xD2, 0x98, 0x03, 0x93, 0xC1, 0xD8, 0x11, 0x93, 0xB9, 0xEC, + 0x09, 0x03, 0xFF, 0xFF, 0x19, 0xD3, 0xB9, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x48, 0xF7, 0x19, 0xD3, 0xB8, 0xEC, 0x19, 0xD3, 0xBA, 0xEC, 0x0A, 0x05, 0xFE, 0xFF, 0xCA, 0xD2, 0xCA, 0xD2, + 0xC2, 0xD2, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0x0F, 0x9F, 0x78, 0xF7, 0x11, 0x93, + 0x03, 0xEC, 0x19, 0xD3, 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x43, 0xA2, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x92, 0x04, 0x96, + 0x0D, 0x5E, 0x50, 0x46, 0x02, 0x0E, 0x40, 0x92, 0x09, 0xEE, 0x44, 0x46, 0x04, 0x0E, 0x59, 0x93, 0x44, 0x26, 0x04, 0x5E, 0x46, 0xEE, 0x41, 0x93, 0x41, 0x26, 0x43, 0x4E, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xB1, 0xFE, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x94, + 0x1A, 0xD5, 0xA3, 0xF7, 0x11, 0x93, 0x00, 0x90, 0x88, 0x98, 0x90, 0x9A, 0x1D, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x16, 0x00, 0x21, 0x00, + 0x12, 0x00, 0x09, 0x00, 0x13, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x21, 0x00, 0x2D, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xF2, 0xCD, 0xF7, 0x00, 0x00, 0x74, 0xF2, 0xCD, 0xF7, 0x00, 0x00, 0xB9, 0xF2, 0xCA, 0xF7, + 0xD1, 0xF7, 0x00, 0x00, 0x97, 0xF3, 0xCD, 0xF7, 0x05, 0x46, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; +#elif defined(ZD1211B) +={ + 0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0x1E, 0xEE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, + 0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0x93, 0xEE, 0x41, 0xEE, 0x98, 0x9A, 0xC6, 0xF7, 0x02, 0x00, 0x1F, 0xEC, + 0x00, 0x00, 0xB2, 0xF8, 0x4D, 0x00, 0xA0, 0xEC, 0x00, 0x00, 0x98, 0xF7, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xD8, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, + 0x40, 0xF0, 0xB4, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x64, 0xEF, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xF6, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, + 0xE9, 0xF6, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xE7, 0xF5, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xF1, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, + 0x89, 0xF7, 0xA0, 0x90, 0x98, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x42, 0x02, 0xC1, 0x92, 0x03, 0x96, 0x1B, 0xD7, 0x2A, 0x86, + 0x1A, 0xD5, 0x2B, 0x86, 0x09, 0xA3, 0x00, 0x80, 0x19, 0xD3, 0x2C, 0x86, 0x00, 0xEE, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x01, 0xD4, 0x42, 0x02, 0xC1, 0x96, 0x0A, 0x65, 0xC0, 0x7A, + 0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC4, 0xD2, 0xC5, 0x98, 0x1C, 0xD9, 0x2A, 0x86, 0x01, 0x98, 0x1C, 0xD9, 0x2B, 0x86, 0x1B, 0xD7, 0x2C, 0x86, 0x00, 0xEE, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, + 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xE5, 0xEE, 0x11, 0x93, 0xCA, 0xF7, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xEE, 0x40, 0xF1, + 0x40, 0x92, 0x19, 0xD3, 0xCA, 0xF7, 0xC5, 0x92, 0x41, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x40, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x0F, 0x9F, 0x95, 0xF8, 0x0F, 0x9F, 0x99, 0xEE, 0x42, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0x99, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0xCA, 0xF7, 0x09, 0x93, 0xB9, 0xF7, 0x19, 0xD3, 0x91, 0xEC, 0x40, 0xF0, 0x5F, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0F, 0x9F, + 0x99, 0xEE, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, + 0x09, 0x93, 0xB9, 0xF7, 0x19, 0xD3, 0x91, 0xEC, 0x40, 0xF0, 0x5F, 0xF2, 0x40, 0xF0, 0xCD, 0xF3, 0x11, 0x93, 0x04, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xE3, 0xEE, 0x40, 0x92, 0x19, 0xD3, + 0x04, 0xEC, 0x40, 0xF0, 0x38, 0xF2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFD, 0x19, 0xD3, 0x44, 0x96, 0x40, 0xF0, 0x82, 0xF7, + 0x6E, 0x92, 0x19, 0xD3, 0x05, 0x84, 0x40, 0xF0, 0xC4, 0xEE, 0x4B, 0x62, 0x0A, 0x95, 0x2E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x2B, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x00, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, + 0x2F, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x34, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x39, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x3E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x43, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x48, 0xEE, + 0xD1, 0xD4, 0x0B, 0x97, 0x4D, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x4E, 0xEE, 0xC1, 0xD4, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x43, 0xF1, 0x09, 0x93, 0x01, 0x3F, + 0x19, 0xD3, 0xC0, 0x85, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFC, 0x19, 0xD3, 0x44, 0x96, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x03, 0x96, + 0x41, 0x02, 0x03, 0x99, 0xC4, 0x94, 0x42, 0x04, 0xC1, 0x04, 0xC2, 0x94, 0xC3, 0xD4, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0x13, 0x97, + 0x95, 0xEC, 0x1B, 0xD7, 0x02, 0x80, 0x11, 0x93, 0x99, 0xEC, 0x19, 0xD3, 0x7C, 0x96, 0x0B, 0x97, 0xA0, 0x00, 0x1B, 0xD7, 0x6E, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, + 0xFF, 0xBF, 0x11, 0xA3, 0x9A, 0xEC, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, + 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x14, 0x99, 0x03, 0x80, 0x0C, 0xB3, 0x00, 0x10, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x97, 0xF0, + 0x11, 0x93, 0x9F, 0xEC, 0x41, 0x02, 0x19, 0xD3, 0x9F, 0xEC, 0x11, 0x93, 0xC8, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x84, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, + 0x00, 0x04, 0xC2, 0xD2, 0x0F, 0x9F, 0xB1, 0xF0, 0x11, 0x93, 0x94, 0xEC, 0x02, 0xD2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD0, 0xEF, 0x41, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0x19, 0xD3, 0x9F, 0xEC, + 0x12, 0x95, 0x02, 0x80, 0x1A, 0xD5, 0x95, 0xEC, 0x13, 0x97, 0x7C, 0x96, 0x1B, 0xD7, 0x99, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x00, 0x40, 0x19, 0xD3, 0x9A, 0xEC, + 0x09, 0x63, 0x00, 0x40, 0xC2, 0xD2, 0x02, 0x94, 0x1A, 0xD5, 0x7C, 0x96, 0x0C, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB0, 0xEF, 0x0C, 0xB3, 0xFF, 0x07, 0x0F, 0x9F, 0xB4, 0xEF, + 0x11, 0x93, 0x06, 0x80, 0x09, 0xB3, 0xFF, 0x07, 0x09, 0x03, 0x00, 0xA0, 0x19, 0xD3, 0x97, 0xEC, 0x40, 0x98, 0x0B, 0x97, 0x9C, 0xEC, 0x04, 0x95, 0x03, 0x05, 0x14, 0x03, 0x97, 0xEC, 0x46, 0x02, + 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x08, 0x42, 0x48, 0x02, 0x9E, 0x0F, 0x9F, 0xBB, 0xEF, 0x11, 0x93, 0x97, 0xEC, 0xC1, 0x92, 0xC5, 0xD2, 0x5F, 0xB2, 0x19, 0xD3, 0x9B, 0xEC, 0x0F, 0x9F, 0xD3, 0xEF, + 0x13, 0x97, 0x98, 0xEC, 0xC5, 0xD6, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE9, 0xEF, 0x11, 0x93, 0xCE, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xCE, 0xF7, + 0x11, 0x93, 0xCD, 0xF7, 0x09, 0xA3, 0x00, 0x10, 0x19, 0xD3, 0xCD, 0xF7, 0x40, 0x98, 0x1C, 0xD9, 0x9B, 0xEC, 0x12, 0x95, 0x9B, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x86, 0xF0, 0x0A, 0xB3, + 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x07, 0xF0, 0x0A, 0xB3, 0x07, 0x00, 0x09, 0x05, 0xA8, 0xEC, 0xC2, 0x94, 0x01, 0xD4, 0x09, 0x03, 0xA0, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x9B, 0xEC, + 0xC5, 0x94, 0x0A, 0xB5, 0x00, 0xFF, 0x01, 0xA5, 0xC5, 0xD4, 0x0F, 0x9F, 0x13, 0xF0, 0x0A, 0x05, 0xFF, 0xFF, 0x0A, 0x03, 0xB0, 0xEC, 0xC1, 0x92, 0x01, 0xD2, 0x1A, 0xD5, 0x9B, 0xEC, 0xC5, 0x96, + 0x0B, 0x07, 0xFF, 0xFF, 0xC5, 0xD6, 0x11, 0x93, 0x97, 0xEC, 0xC5, 0x98, 0xC1, 0xD8, 0x11, 0x93, 0x97, 0xEC, 0x09, 0x05, 0x0B, 0x00, 0x03, 0xD4, 0xC2, 0x96, 0x06, 0xD6, 0x7B, 0x95, 0x7A, 0x95, + 0x4C, 0x02, 0xC1, 0x92, 0x59, 0x93, 0x59, 0x93, 0x01, 0xA5, 0x01, 0x98, 0x0C, 0xF5, 0x7B, 0x93, 0x09, 0x09, 0x01, 0x00, 0x06, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x04, 0xD2, 0x5C, 0x93, 0x59, 0x93, + 0x04, 0x94, 0x01, 0xA5, 0x03, 0x96, 0xC3, 0xD4, 0x11, 0x93, 0x97, 0xEC, 0x4C, 0x02, 0x05, 0xD2, 0xC1, 0x92, 0x09, 0xB3, 0x00, 0xFF, 0x7C, 0x95, 0x7A, 0x95, 0x02, 0xA3, 0x05, 0x98, 0xC4, 0xD2, + 0x12, 0x95, 0x97, 0xEC, 0x45, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2, 0x12, 0x95, 0x9B, 0xEC, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5B, 0xF0, + 0x12, 0x95, 0x97, 0xEC, 0x4A, 0x04, 0x02, 0x99, 0xC4, 0x92, 0x01, 0x98, 0x0C, 0xF3, 0x7B, 0x93, 0x41, 0x02, 0x0F, 0x9F, 0x7C, 0xF0, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x7D, 0xF0, 0x11, 0x93, + 0x97, 0xEC, 0x42, 0x02, 0x0A, 0x05, 0xFF, 0xFF, 0xC1, 0xD4, 0x11, 0x93, 0x97, 0xEC, 0x4A, 0x02, 0x12, 0x95, 0x60, 0x96, 0xC1, 0xD4, 0x12, 0x95, 0x97, 0xEC, 0x4B, 0x04, 0x02, 0x97, 0xC3, 0x92, + 0x09, 0xB3, 0x1F, 0xFF, 0xC2, 0xD2, 0x12, 0x95, 0x97, 0xEC, 0x4B, 0x04, 0x11, 0x93, 0x62, 0x96, 0x41, 0x93, 0x59, 0x93, 0x02, 0x99, 0xC4, 0xA2, 0xC2, 0xD2, 0xC5, 0x92, 0x19, 0xD3, 0x98, 0xEC, + 0x0A, 0x95, 0x0C, 0x02, 0x1A, 0xD5, 0x02, 0x80, 0x0F, 0x9F, 0xB1, 0xF0, 0x09, 0x63, 0xFE, 0x7F, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0xA5, 0x00, 0x04, 0xC1, 0xD4, 0x11, 0x93, 0x9F, 0xEC, 0x09, 0xA3, + 0x00, 0x01, 0x19, 0xD3, 0x9F, 0xEC, 0x40, 0xF0, 0x39, 0xEF, 0x0F, 0x9F, 0xB1, 0xF0, 0x11, 0x93, 0x94, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xA6, 0xF0, 0x40, 0xF0, 0x39, 0xEF, 0x11, 0x93, + 0x95, 0xEC, 0x44, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB1, 0xF0, 0x48, 0x98, 0x1C, 0xD9, 0x02, 0x80, 0x11, 0x93, 0x91, 0xEC, 0x41, 0x22, 0x0A, 0x95, 0xB1, 0xF0, 0x88, 0xD4, 0x88, 0xDC, + 0x91, 0x9A, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x04, 0x82, 0x48, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC8, 0xF0, 0x0A, 0x65, 0xFD, 0x7D, + 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xFE, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0xBE, 0xEC, 0x11, 0x93, 0x04, 0x82, 0x43, 0xB2, 0x12, 0x95, 0x03, 0x82, 0x02, 0xB3, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0xEF, 0xF0, 0x0A, 0xB3, 0x00, 0xFF, 0x48, 0xA2, 0x19, 0xD3, 0x03, 0x82, 0x40, 0xF0, 0xDA, 0xF3, 0x11, 0x93, 0xBE, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xEF, 0xF0, 0x11, 0x93, + 0x07, 0x82, 0x11, 0x43, 0x03, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xEF, 0xF0, 0x11, 0x93, 0x03, 0x82, 0x09, 0xA3, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x40, 0x96, 0x1B, 0xD7, 0xBE, 0xEC, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x20, 0xBC, 0xC8, 0xD2, 0x40, 0xF0, 0x48, 0xF1, 0x41, 0x00, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0x41, 0x02, 0xC1, 0x92, 0x01, 0x97, 0xC3, 0x96, 0xC2, 0xD6, 0x0A, 0x45, 0x00, 0x95, 0x02, 0x5E, + 0x0F, 0x9F, 0x45, 0xF1, 0xC1, 0x92, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x45, 0xF1, 0x11, 0x93, 0xBF, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x45, 0xF1, 0x41, 0x98, 0x1C, 0xD9, + 0xBF, 0xEC, 0x12, 0x95, 0x02, 0x80, 0x01, 0xD4, 0x40, 0xF0, 0x56, 0xF2, 0x0B, 0x67, 0xFD, 0x7D, 0x03, 0x99, 0xC4, 0x92, 0x0C, 0x99, 0x96, 0x03, 0x1C, 0xD9, 0x06, 0x82, 0x41, 0x98, 0x1C, 0xD9, + 0x02, 0x82, 0x42, 0x98, 0x1C, 0xD9, 0x05, 0x82, 0x0C, 0x69, 0x80, 0x7F, 0x1C, 0xD9, 0x00, 0xB0, 0x09, 0xA3, 0x00, 0x01, 0xC3, 0xD2, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x43, 0xF1, 0x42, 0xA4, 0x1A, 0xD5, 0x02, 0x80, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, 0x60, 0xB2, 0x40, 0x42, + 0x02, 0x4E, 0x0F, 0x9F, 0x55, 0xF1, 0x40, 0xF0, 0x27, 0xF7, 0xC5, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x5E, 0xF1, 0x40, 0xF0, 0x15, 0xF6, 0xC5, 0x96, 0x0B, 0xB3, + 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x67, 0xF1, 0x40, 0xF0, 0x4C, 0xF5, 0xC5, 0x94, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xC8, 0xF1, 0x13, 0x97, 0x21, 0xBC, + 0x01, 0xD6, 0x0B, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x79, 0xF1, 0x40, 0xF0, 0x62, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x82, 0xF1, + 0x40, 0xF0, 0x6C, 0xFB, 0x01, 0x96, 0x0B, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA2, 0xF1, 0x40, 0xF0, 0xB0, 0xFA, 0x41, 0x92, 0x19, 0xD3, 0xC7, 0xF7, 0x11, 0x93, 0x03, 0xEC, + 0x09, 0x43, 0x40, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0x98, 0xF1, 0x40, 0x94, 0x1A, 0xD5, 0xC7, 0xF7, 0x11, 0x93, 0x00, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF1, 0x40, 0xF0, 0x38, 0xF2, + 0x0F, 0x9F, 0xAB, 0xF1, 0x01, 0x96, 0x0B, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF1, 0x40, 0xF0, 0x7C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0xB4, 0xF1, 0x40, 0xF0, 0x87, 0xFB, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xBF, 0xF1, 0x44, 0x96, 0x1B, 0xD7, 0x0B, 0xBC, 0x0F, 0x9F, 0xC5, 0xF1, 0x41, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0xC5, 0xF1, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xF2, 0x13, 0x97, + 0x28, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xDA, 0xF1, 0x40, 0xF0, 0x0A, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0xED, 0xF1, 0x40, 0xF0, 0xC4, 0xEE, 0x40, 0xF0, 0x8F, 0xFB, 0x40, 0xF0, 0x1B, 0xF2, 0x40, 0x96, 0x1B, 0xD7, 0x00, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0xCA, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x09, 0xF2, 0x40, 0xF0, 0x9E, 0xFB, 0x09, 0x63, 0x00, 0x44, 0x01, 0x97, 0xC3, 0x94, 0x48, 0xA4, 0xC1, 0xD4, 0x00, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, + 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, 0x41, 0x92, 0x19, 0xD3, 0xCA, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xF2, + 0x40, 0xF0, 0xAE, 0xFB, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, + 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, + 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, + 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, + 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x02, 0x80, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x09, 0x19, 0xD3, 0x02, 0x80, 0x40, 0xF0, 0x56, 0xF2, 0x40, 0x92, 0x19, 0xD3, 0x94, 0xEC, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, + 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0x2A, 0xF5, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x85, 0xF2, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, + 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x92, 0xF2, 0x40, 0xF0, 0x94, 0xF2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x92, 0xF2, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, + 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xF1, 0xBD, 0x19, 0xD3, 0xB5, 0xEC, 0x11, 0x93, 0xB3, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, + 0xAC, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0x07, 0x07, 0x00, 0xC1, 0xD6, 0x0A, 0x05, 0x00, 0xA0, 0x1A, 0xD5, 0x96, 0xEC, 0x11, 0x93, 0xB5, 0xEC, 0x19, 0xD3, 0x01, 0x80, + 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x13, 0x97, 0xB3, 0xEC, 0x40, 0x46, + 0x02, 0x5E, 0x0F, 0x9F, 0x1B, 0xF3, 0x12, 0x95, 0x96, 0xEC, 0x0A, 0x03, 0x07, 0x00, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x96, 0xEC, 0x09, 0x05, 0x01, 0x00, 0x48, 0x02, 0xC1, 0x92, 0xC2, 0xD2, + 0x11, 0x93, 0x96, 0xEC, 0x4E, 0x02, 0xC1, 0x94, 0xC5, 0xD6, 0xC5, 0x92, 0x11, 0x07, 0x96, 0xEC, 0x0B, 0x03, 0x0F, 0x00, 0xC1, 0x98, 0x46, 0x06, 0x7A, 0x93, 0x79, 0x93, 0x5C, 0x95, 0x5A, 0x95, + 0x02, 0xA3, 0xC3, 0xD2, 0x04, 0x95, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x42, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xD5, 0xF2, 0x11, 0x93, 0x96, 0xEC, 0x09, 0x05, 0x05, 0x00, 0x41, 0x02, 0xC1, 0x92, + 0xC2, 0xD2, 0x11, 0x93, 0x96, 0xEC, 0xC1, 0x92, 0x09, 0xB5, 0x1F, 0x00, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x02, 0xF3, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x03, 0xF3, 0x0A, 0x05, 0xFF, 0xFF, + 0x0F, 0x9F, 0x03, 0xF3, 0x43, 0x94, 0x11, 0x93, 0x96, 0xEC, 0x42, 0x02, 0xC1, 0xD4, 0x13, 0x97, 0x96, 0xEC, 0x03, 0x93, 0xD1, 0x94, 0x7A, 0x95, 0x7A, 0x95, 0xC1, 0x92, 0x59, 0x93, 0x59, 0x93, + 0x01, 0x05, 0x49, 0x06, 0xC3, 0x92, 0x7F, 0xB2, 0x01, 0x05, 0x1A, 0xD5, 0xB3, 0xEC, 0x0A, 0x05, 0xF2, 0xFF, 0x1A, 0xD5, 0x92, 0xEC, 0x11, 0x93, 0x92, 0xEC, 0x12, 0x95, 0xB5, 0xEC, 0x02, 0x43, + 0x02, 0x8E, 0x0F, 0x9F, 0x69, 0xF3, 0x02, 0x0E, 0x0F, 0x9F, 0x3C, 0xF3, 0x11, 0x93, 0xCE, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xCE, 0xF7, 0x11, 0x93, 0xCD, 0xF7, 0x09, 0xA3, 0x80, 0x00, 0x19, 0xD3, + 0xCD, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0xB4, 0xEC, 0x40, 0x96, 0x1B, 0xD7, 0xB3, 0xEC, 0x0F, 0x9F, 0x81, 0xF3, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x4E, 0xF3, 0x11, 0x93, 0xBF, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x4E, 0xF3, 0x40, 0xF0, 0x95, 0xF3, 0x0F, 0x9F, 0x83, 0xF3, 0x41, 0x92, 0xC8, 0xD2, + 0x0A, 0x95, 0x91, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x11, 0x93, 0xBF, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x61, 0xF3, 0x42, 0x96, 0x1B, 0xD7, 0xBF, 0xEC, 0x0F, 0x9F, + 0x83, 0xF3, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0x83, 0xF3, 0x12, 0x45, 0x03, 0xEC, 0x02, 0x4E, 0x0F, 0x9F, 0x7B, 0xF3, 0x11, 0x93, 0xCE, 0xF7, + 0x41, 0x02, 0x19, 0xD3, 0xCE, 0xF7, 0x11, 0x93, 0xCD, 0xF7, 0x09, 0xA3, 0x00, 0x08, 0x19, 0xD3, 0xCD, 0xF7, 0x1A, 0xD5, 0x92, 0xEC, 0x11, 0x93, 0x92, 0xEC, 0x19, 0x25, 0x92, 0xEC, 0x09, 0x63, + 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0x95, 0xF3, 0x40, 0x92, 0xC8, 0xD2, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, + 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xC9, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA5, 0xF3, 0x0A, 0x65, 0xBC, 0x69, + 0x02, 0x97, 0xC3, 0x92, 0x09, 0x83, 0x00, 0x02, 0xC2, 0xD2, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB8, 0xF3, 0x11, 0x93, 0xCE, 0xF7, 0x41, 0x02, + 0x19, 0xD3, 0xCE, 0xF7, 0x11, 0x93, 0xCD, 0xF7, 0x09, 0xA3, 0x00, 0x20, 0x19, 0xD3, 0xCD, 0xF7, 0x11, 0x93, 0xB4, 0xEC, 0x19, 0xD3, 0x04, 0x80, 0x12, 0x95, 0xB3, 0xEC, 0x1A, 0xD5, 0x05, 0x80, + 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0xB4, 0xEC, 0x40, 0x94, 0x1A, 0xD5, 0xB3, 0xEC, 0x19, 0xD3, 0xF2, 0xBD, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, + 0x09, 0x93, 0x96, 0x03, 0x19, 0xD3, 0x06, 0x82, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x01, 0x82, + 0xC5, 0xD2, 0x40, 0x94, 0x01, 0xD4, 0x13, 0x97, 0xB7, 0xEC, 0x02, 0xD6, 0x03, 0x95, 0x0C, 0x99, 0xBA, 0xEC, 0x04, 0x05, 0x13, 0x97, 0x03, 0xEC, 0x01, 0x27, 0x02, 0x99, 0xC4, 0x92, 0x03, 0x03, + 0xC2, 0xD2, 0x14, 0x99, 0xB9, 0xEC, 0x03, 0x09, 0x1C, 0xD9, 0xB9, 0xEC, 0x12, 0x95, 0x04, 0x82, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x18, 0xF5, 0x01, 0x92, 0x03, 0xD2, + 0x0A, 0xA3, 0x02, 0x00, 0x19, 0xD3, 0x04, 0x82, 0x02, 0x96, 0x0B, 0x05, 0x01, 0x00, 0x1A, 0xD5, 0xB7, 0xEC, 0xC5, 0x92, 0x43, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0x26, 0xF4, 0x42, 0x44, 0x02, 0x8E, + 0x0F, 0x9F, 0x26, 0xF4, 0x11, 0x93, 0xBE, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x26, 0xF4, 0x0C, 0x49, 0xD3, 0x08, 0x02, 0x8E, 0x0F, 0x9F, 0x26, 0xF4, 0x11, 0x63, 0x07, 0x82, 0x11, 0xA3, + 0x07, 0x82, 0x71, 0x93, 0x79, 0x93, 0x79, 0x93, 0x79, 0x93, 0x03, 0xD2, 0xC5, 0x94, 0x0A, 0xB5, 0xFC, 0xFF, 0x04, 0xD4, 0x03, 0x96, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x35, 0xF4, 0x11, 0x93, + 0xB7, 0xEC, 0x41, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x3C, 0xF4, 0xC5, 0x98, 0x0C, 0x03, 0xFF, 0xFF, 0x42, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x63, 0xF4, 0x0A, 0x95, 0xBA, 0xEC, 0x42, 0x92, 0x19, 0xD3, + 0xB8, 0xEC, 0xC5, 0x96, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0x55, 0xF4, 0x0B, 0x07, 0xFC, 0xFF, 0xC5, 0xD6, 0xD2, 0x98, 0x1C, 0xD9, 0xC8, 0xBC, 0xD2, 0x96, 0x1B, 0xD7, 0xCA, 0xBC, 0x09, 0x03, + 0xFF, 0xFF, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x41, 0xF4, 0x19, 0xD3, 0xB8, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x61, 0xF4, 0x0A, 0x05, 0xFE, 0xFF, 0xCA, 0xD2, 0xC2, 0xD2, 0x0F, 0x9F, + 0x63, 0xF4, 0x1A, 0xD5, 0x93, 0xEC, 0x03, 0x98, 0x40, 0x48, 0x02, 0x5E, 0x0F, 0x9F, 0x90, 0xF4, 0x11, 0x93, 0xB7, 0xEC, 0x41, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0x73, 0xF4, 0x04, 0x94, 0x48, 0x44, + 0x02, 0x4E, 0x0F, 0x9F, 0x7E, 0xF4, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x90, 0xF4, 0x11, 0x93, 0x04, 0x82, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x90, 0xF4, 0x41, 0x96, 0x01, 0xD6, + 0x0A, 0x65, 0xBD, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0F, 0x9F, 0xE9, 0xF4, + 0xC5, 0x98, 0x43, 0x48, 0x02, 0x9E, 0x0F, 0x9F, 0xE9, 0xF4, 0x4F, 0x96, 0x0C, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x9D, 0xF4, 0x47, 0x96, 0x11, 0x93, 0xB6, 0xEC, 0x40, 0x42, + 0x02, 0x4E, 0x0F, 0x9F, 0xC5, 0xF4, 0x11, 0x93, 0xB7, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xC5, 0xF4, 0x12, 0x95, 0x00, 0x82, 0x0A, 0x05, 0xFF, 0xAF, 0x05, 0xD4, 0xC8, 0xD6, 0xC8, 0xD2, + 0x40, 0xF0, 0x6D, 0xF7, 0x42, 0x00, 0x05, 0x96, 0xC3, 0x94, 0x01, 0xB5, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0xC5, 0xF4, 0x06, 0x98, 0x50, 0x98, 0x1C, 0xD9, 0xA2, 0xBC, 0x40, 0x98, 0x1C, 0xD9, + 0xA2, 0xBC, 0x40, 0x92, 0x03, 0xD2, 0x0F, 0x9F, 0xEE, 0xF4, 0x03, 0x94, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xD2, 0xF4, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, + 0x0F, 0x9F, 0xEE, 0xF4, 0x11, 0x93, 0xB7, 0xEC, 0x0C, 0x99, 0xBA, 0xEC, 0x04, 0x03, 0x04, 0x96, 0x13, 0x25, 0x03, 0xEC, 0xC1, 0xD4, 0x11, 0x93, 0xB9, 0xEC, 0x19, 0x05, 0xB9, 0xEC, 0x1B, 0xD7, + 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x99, 0xC4, 0x92, 0x43, 0xA2, 0xC2, 0xD2, 0x41, 0x92, 0x01, 0xD2, 0x03, 0x94, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0x02, 0xF5, 0x11, 0x93, 0xB8, 0xEC, + 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xFA, 0xF4, 0x19, 0xD3, 0xB7, 0xEC, 0x19, 0xD3, 0xB9, 0xEC, 0x19, 0xD3, 0xBA, 0xEC, 0x03, 0x96, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x02, 0xF5, 0x41, 0x98, + 0x1C, 0xD9, 0xB6, 0xEC, 0x11, 0x93, 0xBE, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x13, 0xF5, 0x11, 0x93, 0x00, 0x82, 0x19, 0xD3, 0x02, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, + 0x09, 0xA3, 0x00, 0x01, 0xC2, 0xD2, 0x40, 0x98, 0x1C, 0xD9, 0xBE, 0xEC, 0x0F, 0x9F, 0x1B, 0xF5, 0x01, 0x92, 0x19, 0xD3, 0xB6, 0xEC, 0x01, 0x94, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0x27, 0xF5, + 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x03, 0x80, 0x0A, 0xB3, + 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x46, 0xF5, 0x0A, 0xB7, 0x00, 0x08, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF5, 0x11, 0x93, 0x03, 0xEC, 0x41, 0x02, 0x09, 0xB3, 0xFE, 0xFF, + 0x12, 0x95, 0x07, 0x80, 0x01, 0x45, 0x02, 0x8E, 0x0F, 0x9F, 0x49, 0xF5, 0x41, 0x92, 0x0F, 0x9F, 0x4A, 0xF5, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, + 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x13, 0x97, 0x6E, 0xEC, 0x0B, 0x47, 0xA0, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0x75, 0xF5, 0x09, 0x63, 0x08, 0x43, + 0x0A, 0x65, 0xFF, 0x5F, 0x01, 0x99, 0xC4, 0xD4, 0x0A, 0x95, 0x9B, 0xEC, 0xD2, 0x96, 0x1B, 0xD7, 0xFA, 0xBC, 0xD2, 0x96, 0xC4, 0xD6, 0xD2, 0x98, 0x1C, 0xD9, 0xFA, 0xBC, 0xD2, 0x96, 0xC1, 0xD6, + 0xC2, 0x94, 0x1A, 0xD5, 0xFA, 0xBC, 0x0F, 0x9F, 0xB3, 0xF5, 0x0C, 0x69, 0xFF, 0x6F, 0x1C, 0xD9, 0xF8, 0xBC, 0x0B, 0x47, 0x10, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0x8D, 0xF5, 0x0A, 0x95, 0x6F, 0xEC, + 0x09, 0x63, 0x06, 0x43, 0x01, 0x99, 0xC4, 0xD6, 0xD2, 0x96, 0x1B, 0xD7, 0xF8, 0xBC, 0x0C, 0x69, 0xEE, 0x6A, 0xC1, 0xD8, 0xC2, 0x94, 0x1A, 0xD5, 0xF8, 0xBC, 0x40, 0x92, 0xC5, 0xD2, 0x11, 0x43, + 0xC0, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xB0, 0xF5, 0xC5, 0x94, 0x0A, 0x03, 0x71, 0xEC, 0xC1, 0x94, 0x1A, 0xD5, 0xFA, 0xBC, 0x11, 0x93, 0xBF, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA2, 0xF5, + 0x0A, 0x95, 0x6F, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x8E, 0xF7, 0x19, 0xD3, 0xF8, 0xBC, 0x41, 0x00, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x13, 0x47, 0xC0, 0xEC, 0x02, 0x1E, 0x0F, 0x9F, 0x94, 0xF5, + 0x40, 0x98, 0x1C, 0xD9, 0xFA, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0x19, 0xD3, 0xC0, 0xEC, 0x0A, 0x65, 0x52, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, + 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x06, 0x92, 0x01, 0xD2, 0x0A, 0x65, 0xF0, 0x6A, + 0x0B, 0x97, 0x6F, 0xEC, 0x02, 0x99, 0xC4, 0x98, 0xD3, 0xD8, 0x02, 0xD6, 0x0A, 0x03, 0x02, 0x00, 0x01, 0x97, 0xC3, 0x98, 0x02, 0x96, 0xC3, 0xD8, 0x01, 0x96, 0xC1, 0xD6, 0x1A, 0xD5, 0x6E, 0xEC, + 0xC5, 0x98, 0x14, 0x99, 0x6F, 0xEC, 0xC2, 0xD8, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x6E, 0x92, 0x19, 0xD3, 0x05, 0x84, 0x40, 0x96, 0xC8, 0xD6, 0x40, 0xF0, + 0xC8, 0xF5, 0x41, 0x00, 0x11, 0x93, 0xBF, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x05, 0xF6, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x02, 0xF6, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, + 0x42, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0xBF, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, + 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x63, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xAF, 0xBC, 0x47, 0xB2, 0x59, 0x95, 0x5A, 0x95, 0x12, 0xA5, 0xBF, 0xBC, + 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x27, 0xF6, 0x41, 0x04, 0x05, 0x93, 0x40, 0x96, 0x20, 0xD6, 0x62, 0x97, 0x0F, 0x9F, 0x36, 0xF6, 0x14, 0x99, 0xFC, 0xBC, 0xD1, 0xD8, + 0x14, 0x99, 0xFE, 0xBC, 0xD1, 0xD8, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x20, 0x98, 0x03, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0x2D, 0xF6, 0xC5, 0x92, 0x62, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x4F, 0xF6, + 0x02, 0x8E, 0x0F, 0x9F, 0x49, 0xF6, 0x61, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x73, 0xF6, 0x0F, 0x9F, 0xA0, 0xF6, 0x63, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x96, 0xF6, 0x0F, 0x9F, 0xA0, 0xF6, 0x0D, 0x03, + 0x01, 0x00, 0x0C, 0x99, 0x71, 0xEC, 0x0B, 0x05, 0xFF, 0xFF, 0x40, 0x96, 0x0F, 0x9F, 0x5C, 0xF6, 0xD1, 0x96, 0xD4, 0xD6, 0x20, 0x96, 0x41, 0x06, 0x20, 0xD6, 0x02, 0x47, 0x02, 0x1E, 0x0F, 0x9F, + 0x58, 0xF6, 0x1A, 0xD5, 0xC0, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, + 0xC2, 0xD2, 0x0F, 0x9F, 0xA0, 0xF6, 0x0A, 0x03, 0xFE, 0xFF, 0x61, 0x95, 0x40, 0x98, 0x20, 0xD8, 0x02, 0x49, 0x02, 0x0E, 0x0F, 0x9F, 0xA0, 0xF6, 0x0D, 0x03, 0x01, 0x00, 0x21, 0xD2, 0x20, 0x92, + 0x05, 0x03, 0x42, 0x02, 0xC8, 0xD2, 0x21, 0x96, 0xC3, 0x92, 0x42, 0x06, 0x21, 0xD6, 0xC8, 0xD2, 0x22, 0xD4, 0x40, 0xF0, 0x01, 0xF1, 0x42, 0x00, 0x20, 0x98, 0x42, 0x08, 0x20, 0xD8, 0x22, 0x94, + 0x02, 0x49, 0x02, 0x1E, 0x0F, 0x9F, 0x7F, 0xF6, 0x0F, 0x9F, 0xA0, 0xF6, 0x0D, 0x03, 0x03, 0x00, 0xC8, 0xD2, 0x02, 0x92, 0xC8, 0xD2, 0x01, 0x96, 0xC8, 0xD6, 0x40, 0xF0, 0xA3, 0xF6, 0x43, 0x00, + 0x63, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x45, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x08, 0x00, 0x08, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x03, 0xD4, 0x42, 0x02, + 0xC1, 0x92, 0x01, 0xD2, 0x02, 0x97, 0xC5, 0x94, 0x0A, 0x83, 0xFF, 0xFF, 0x11, 0xB3, 0x2C, 0x93, 0x09, 0xB3, 0xFB, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x03, 0x92, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0xD6, 0xF6, 0x01, 0x94, 0xD2, 0x92, 0x19, 0xD3, 0x2C, 0x93, 0x01, 0xD4, 0x02, 0x94, 0x12, 0x95, 0x2C, 0x93, 0x44, 0xA4, 0x1A, 0xD5, 0x2C, 0x93, 0x0A, 0xB5, 0xFB, 0xFF, 0x1A, 0xD5, 0x2C, 0x93, + 0x0B, 0x07, 0xFF, 0xFF, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0xC1, 0xF6, 0x09, 0x63, 0xD4, 0x6C, 0x01, 0x95, 0xC2, 0x96, 0xC5, 0x94, 0x02, 0xA7, 0xC1, 0xD6, 0x03, 0x92, 0x54, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0xE6, 0xF6, 0x0A, 0x83, 0xFF, 0xFF, 0x1B, 0xB3, 0x2C, 0x93, 0x45, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, + 0x40, 0xF0, 0x2A, 0xF5, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xFA, 0xF6, 0x40, 0xF0, 0x94, 0xF2, 0x0F, 0x9F, 0x08, 0xF7, 0x40, 0x96, 0xC8, 0xD6, 0x09, 0x93, 0x91, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, + 0x2A, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, + 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x2D, 0xBC, 0x0A, 0x65, 0xD8, 0x43, + 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0xEA, 0x43, 0x01, 0x97, 0xC3, 0x94, 0x44, 0xA4, 0xC1, 0xD4, + 0x11, 0x93, 0xB8, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x61, 0xF7, 0x12, 0x95, 0x93, 0xEC, 0x0B, 0x67, 0x36, 0x43, 0xD2, 0x98, 0x1C, 0xD9, 0xC8, 0xBC, 0xD2, 0x98, 0x03, 0x93, 0xC1, 0xD8, + 0x11, 0x93, 0xB8, 0xEC, 0x09, 0x03, 0xFF, 0xFF, 0x19, 0xD3, 0xB8, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x3A, 0xF7, 0x19, 0xD3, 0xB7, 0xEC, 0x19, 0xD3, 0xB9, 0xEC, 0x0A, 0x05, 0xFE, 0xFF, + 0xCA, 0xD2, 0xCA, 0xD2, 0xC2, 0xD2, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0x0F, 0x9F, + 0x6A, 0xF7, 0x11, 0x93, 0x03, 0xEC, 0x19, 0xD3, 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x43, 0xA2, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, + 0x03, 0x92, 0x04, 0x96, 0x0D, 0x5E, 0x50, 0x46, 0x02, 0x0E, 0x40, 0x92, 0x09, 0xEE, 0x44, 0x46, 0x04, 0x0E, 0x59, 0x93, 0x44, 0x26, 0x04, 0x5E, 0x46, 0xEE, 0x41, 0x93, 0x41, 0x26, 0x43, 0x4E, + 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xB1, 0xFE, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x03, 0x94, 0x1A, 0xD5, 0x95, 0xF7, 0x11, 0x93, 0x00, 0x90, 0x88, 0x98, 0x90, 0x9A, 0x1D, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, + 0x16, 0x00, 0x21, 0x00, 0x12, 0x00, 0x09, 0x00, 0x13, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x21, 0x00, 0x2D, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xF2, 0xBF, 0xF7, 0x00, 0x00, 0x74, 0xF2, 0xBF, 0xF7, 0x00, 0x00, + 0xB9, 0xF2, 0xBC, 0xF7, 0xC3, 0xF7, 0x00, 0x00, 0x86, 0xF3, 0xBF, 0xF7, 0x21, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdtypes.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdtypes.h @@ -1,56 +1,36 @@ -/* $Id: zdtypes.h,v 1.4 2005/03/19 11:04:43 akw Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef __ZDTYPES_H__ #define __ZDTYPES_H__ #ifndef U8 - typedef unsigned char U8; +typedef unsigned char U8; #endif #ifndef U16 - typedef unsigned short U16; + +typedef unsigned short U16; #endif #ifndef U32 - typedef unsigned long U32; + +typedef unsigned long U32; #endif -#ifndef U64 - typedef unsigned long long U64; +#ifndef U64 + +typedef unsigned long long U64; #endif #ifndef BOOLEAN - typedef U8 BOOLEAN; -#endif + +typedef U8 BOOLEAN; +#endif #ifndef TRUE - #define TRUE 1 -#endif + #define TRUE 1 +#endif #ifndef FALSE - #define FALSE 0 -#endif + #define FALSE 0 +#endif #endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdsynch.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdsynch.c @@ -1,342 +1,400 @@ -/* $Id: zdsynch.c,v 1.9 2005/03/27 20:47:39 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +#ifndef __ZDSYNCH_C__ +#define __ZDSYNCH_C__ #include "zd80211.h" +extern u8 LastMacMode; +extern u8 mMacMode; +//extern CurrScanCH; +extern const U16 dot11A_Channel[]; +extern u8 LastSetChannel; void zd_makeRateInfoMAP(U8 *pRates, U16 *basicRateMap, U16 *supRateMap) { - int j; - U8 rate; - U8 eleLen = *(pRates+1); - - for (j=0; jfrmInfo.frmDesc; - rdu = pfrmDesc->mpdu; - - if (mBssType == INFRASTRUCTURE_BSS) { - goto release; - } - - if (!getElem(rdu, EID_SSID, &rSsid)) - goto release; - - if (mHiddenSSID) { //discard broadcast ssid - if (eLen(&rSsid) == 0) { - goto release; - } - } - memcpy((U8*)&sta, (U8*)addr2(rdu), 6); - - pExtRate = &mExtRates; - - if (eLen(&rSsid) == 0) { - //WPA - if (mDynKeyMode == DYN_KEY_TKIP) - pWPA = &mWPAIe; - - mkProbeRspFrm(pfrmDesc, &sta, mBeaconPeriod, mCap, &dot11DesiredSsid, &mBrates, &mPhpm, pExtRate, (Element *)pWPA, vapId); - return sendMgtFrame(signal, pfrmDesc); - } else { - if (memcmp(&rSsid, &dot11DesiredSsid, eLen(&dot11DesiredSsid)+2) == 0) { - //WPA - if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) - pWPA = &mWPAIe; - - mkProbeRspFrm(pfrmDesc, &sta, mBeaconPeriod, mCap, &dot11DesiredSsid, &mBrates, &mPhpm, pExtRate, (Element *)pWPA, vapId); - return sendMgtFrame(signal, pfrmDesc); - } - } + FrmDesc_t *pfrmDesc; + Frame_t *rdu; + MacAddr_t sta; + Element rSsid; + Element *pWPA = NULL; + U8 vapId = 0; + Element *pExtRate = NULL; + + ZDEBUG("Probe"); + + pfrmDesc = signal->frmInfo.frmDesc; + rdu = pfrmDesc->mpdu; + + if (mBssType == INFRASTRUCTURE_BSS) { + goto release; + } + + if (!getElem(rdu, EID_SSID, &rSsid)) + goto release; + + if (mHiddenSSID) { //discard broadcast ssid + if (eLen(&rSsid) == 0) { + goto release; + } + } + + memcpy((U8*)&sta, (U8*)addr2(rdu), 6); + pExtRate = &mExtRates; + + if (eLen(&rSsid) == 0) { + //WPA + if (mDynKeyMode == DYN_KEY_TKIP || mDynKeyMode==DYN_KEY_AES) + pWPA = &mWPAIe; + + mkProbeRspFrm(pfrmDesc, &sta, mBeaconPeriod, mCap, &dot11DesiredSsid, &mBrates, &mPhpm, pExtRate, (Element *)pWPA, vapId); + return sendMgtFrame(signal, pfrmDesc); + } else { + if (memcmp(&rSsid, &dot11DesiredSsid, eLen(&dot11DesiredSsid)+2) == 0) { + //WPA + if ((mDynKeyMode == DYN_KEY_TKIP) || (mDynKeyMode == DYN_KEY_AES)) + pWPA = &mWPAIe; + + mkProbeRspFrm(pfrmDesc, &sta, mBeaconPeriod, mCap, &dot11DesiredSsid, &mBrates, &mPhpm, pExtRate, (Element *)pWPA, vapId); + return sendMgtFrame(signal, pfrmDesc); + } + } release: - ZDEBUG("goto release"); - freeFdesc(pfrmDesc); - return TRUE; + ZDEBUG("goto release"); + freeFdesc(pfrmDesc); + return TRUE; } BOOLEAN ProbeReq(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - Element BCSsid; - U8 vapId = 0; - Element *pSsid = NULL; - Element *pExtRate = NULL; - - //ZDEBUG("ProbeReq"); - //FPRINT("ProbeReq"); - - pfrmDesc = allocFdesc(); - if(!pfrmDesc) { - sigEnque(pMgtQ, (signal)); - return FALSE; - } - - BCSsid.buf[0] = EID_SSID; - BCSsid.buf[1] = 0; - - if (mProbeWithSsid) { - //pSsid = &mSsid; - pSsid = &dot11DesiredSsid; - } else { - pSsid = &BCSsid; - } - - pExtRate = &mExtRates; - - mkProbeReqFrm(pfrmDesc, &dot11BCAddress, pSsid, &mBrates, pExtRate, NULL, vapId); - pdot11Obj->StartTimer(SCAN_TIMEOUT, DO_SCAN); - //mProbeWithSsid = FALSE; - return sendMgtFrame(signal, pfrmDesc); + FrmDesc_t *pfrmDesc; + Element BCSsid; + U8 vapId = 0; + Element *pSsid = NULL; + Element *pExtRate = NULL; + + ZDEBUG("ProbeReq"); + //FPRINT("ProbeReq"); + + pfrmDesc = allocFdesc(); + if(!pfrmDesc) { + sigEnque(pMgtQ, (signal)); + return FALSE; + } + + BCSsid.buf[0] = EID_SSID; + BCSsid.buf[1] = 0; + + if (mProbeWithSsid) { + //pSsid = &mSsid; + pSsid = &dot11DesiredSsid; + } else { + pSsid = &BCSsid; + } + + pExtRate = &mExtRates; + + mkProbeReqFrm(pfrmDesc, &dot11BCAddress, pSsid, &mBrates, pExtRate, NULL, vapId); + if (signal->vapId == 0) + pdot11Obj->StartTimer(SCAN_TIMEOUT, DO_SCAN); + //mProbeWithSsid = FALSE; + return sendMgtFrame(signal, pfrmDesc); } BOOLEAN ProbeRsp_Beacon(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - Frame_t *rdu; - MacAddr_t *pBssid = NULL; - Element *pWPA = NULL; - U16 Cap = 0; - U16 BcnInterval = 0; - int i; - U8 FrmType; - BOOLEAN bUpdateInfo = FALSE; - U8 index; - BssInfo_t *pCurrBssInfo; - - ZDEBUG("ProbeRsp_Beacon"); - pfrmDesc = signal->frmInfo.frmDesc; - rdu = pfrmDesc->mpdu; - - FrmType = frmType(rdu); - - if (pdot11Obj->ConfigFlag & ACTIVE_CHANNEL_SCAN_SET) { - Cap = cap1(rdu); - //FPRINT_V("Cap", Cap); - BcnInterval = beaconInt(rdu); - - if (Cap & CAP_IBSS) { - pBssid = addr3(rdu); - } else - pBssid = addr2(rdu); - - index = mBssNum; - for (i=0; ibasicRateMap = 0; - pCurrBssInfo->supRateMap = 0; - - //get bssid - memcpy((U8 *)&pCurrBssInfo->bssid, (U8 *)pBssid, 6); - - //get beacon interval - pCurrBssInfo->bcnInterval = BcnInterval; - - //get capability - pCurrBssInfo->cap = Cap; - - if (!getElem(rdu, EID_SSID, &pCurrBssInfo->ssid)) { - goto release; - } - - if (!getElem(rdu, EID_SUPRATES, &pCurrBssInfo->supRates)) { - goto release; - } - - if (!getElem(rdu, EID_DSPARMS, &pCurrBssInfo->Phpm)) { - goto release; - } - - if (Cap & CAP_IBSS) { - if (!getElem(rdu, EID_IBPARMS, &pCurrBssInfo->IbssParms)) { - goto release; - } - } - - if (getElem(rdu, EID_EXT_RATES, &pCurrBssInfo->extRates)) { - //zd1205_dump_data("Ext Rates", &pCurrBssInfo->extRates.buf[2], pCurrBssInfo->extRates.buf[1]); - } - - if (getElem(rdu, EID_ERP, &pCurrBssInfo->erp)) { - //zd1205_dump_data("ERP Info", &pCurrBssInfo->erp.buf[2], pCurrBssInfo->erp.buf[1]); - } - getElem(rdu, EID_COUNTRY, &pCurrBssInfo->country); - - zd_makeRateInfoMAP((U8 *)&pCurrBssInfo->supRates, &pCurrBssInfo->basicRateMap, &pCurrBssInfo->supRateMap); - zd_makeRateInfoMAP((U8 *)&pCurrBssInfo->extRates, &pCurrBssInfo->basicRateMap, &pCurrBssInfo->supRateMap); - //FPRINT_V("basicRateMap", pCurrBssInfo->basicRateMap); - //FPRINT_V("supRateMap", pCurrBssInfo->supRateMap); - - if (pCurrBssInfo->supRateMap > 0x0f) { //support rates include OFDM rates - if (pCurrBssInfo->basicRateMap & ~0xf) { // basic rates include OFDM rates - pCurrBssInfo->apMode = PURE_G_AP; - //FPRINT("PURE_G_AP"); - } else { - pCurrBssInfo->apMode = MIXED_AP; - //FPRINT("MIXED_AP"); - } - } else { - pCurrBssInfo->apMode = PURE_B_AP; - //FPRINT("PURE_B_AP"); - } - - pCurrBssInfo->signalStrength = pfrmDesc->signalStrength; - pCurrBssInfo->signalQuality = pfrmDesc->signalQuality; - - if (mBssNum < 63) { - if (!bUpdateInfo) - mBssNum++; - } - } - + FrmDesc_t *pfrmDesc; + Frame_t *rdu; + MacAddr_t *pBssid = NULL; + //Element *pWPA = NULL; + U16 Cap = 0; + U16 BcnInterval = 0; + int i; + U8 FrmType; + BOOLEAN bUpdateInfo = FALSE; + U8 index; + + BssInfo_t *pCurrBssInfo; + + ZDEBUG("ProbeRsp_Beacon"); + pfrmDesc = signal->frmInfo.frmDesc; + rdu = pfrmDesc->mpdu; + + FrmType = frmType(rdu); + + if (pdot11Obj->ConfigFlag & ACTIVE_CHANNEL_SCAN_SET) { + Cap = cap1(rdu); + //FPRINT_V("Cap", Cap); + BcnInterval = beaconInt(rdu); + + if (Cap & CAP_IBSS) { + pBssid = addr3(rdu); + } else + pBssid = addr2(rdu); + + index = mBssNum; + //The following if-statements is used to filter existing AP Info. + //The rule is: + //1. The bssid is seen before. + //2. The old Info.apMode equals to LastMacMode + //The meaning is if the incoming ap's bssid == old's bssid and + // ap's apMode(judged by LastMacMode) == old's apMode then Drop It. + for (i=0; ibasicRateMap = 0; + pCurrBssInfo->supRateMap = 0; + + /* Reset supRates, extRates */ + memset(&pCurrBssInfo->supRates, 0, NUM_SUPPORTED_RATE); + memset(&pCurrBssInfo->extRates, 0, NUM_SUPPORTED_RATE); + + //get bssid + memcpy((U8 *)&pCurrBssInfo->bssid, (U8 *)pBssid, 6); + + //get beacon interval + pCurrBssInfo->bcnInterval = BcnInterval; + + //get capability + pCurrBssInfo->cap = Cap; + + if (!getElem(rdu, EID_SSID, &pCurrBssInfo->ssid)) { + goto release; + } + + if (!getElem(rdu, EID_SUPRATES, &pCurrBssInfo->supRates)) { + goto release; + } + + if (!getElem(rdu, EID_DSPARMS, &pCurrBssInfo->Phpm)) { + pCurrBssInfo->Phpm.buf[0]=0x3;// DS Parameter Set + pCurrBssInfo->Phpm.buf[1]=1; + pCurrBssInfo->Phpm.buf[2]=LastSetChannel; + + //goto release; + } + //This is used to filter non-allowed channel beacons + if (!((1 << (pCurrBssInfo->Phpm.buf[2]-1)) & pdot11Obj->AllowedChannel)) { + if(PURE_A_MODE != mMacMode) + goto release; + } + + if (Cap & CAP_IBSS) { + if (!getElem(rdu, EID_IBPARMS, &pCurrBssInfo->IbssParms)) { + goto release; + } + } + + if (getElem(rdu, EID_EXT_RATES, &pCurrBssInfo->extRates)) { + //zd1205_dump_data("Ext Rates", &pCurrBssInfo->extRates.buf[2], pCurrBssInfo->extRates.buf[1]); + } + + if (getElem(rdu, EID_ERP, &pCurrBssInfo->erp)) { + //zd1205_dump_data("ERP Info", &pCurrBssInfo->erp.buf[2], pCurrBssInfo->erp.buf[1]); + } + getElem(rdu, EID_COUNTRY, &pCurrBssInfo->country); + + zd_makeRateInfoMAP((U8 *)&pCurrBssInfo->supRates, &pCurrBssInfo->basicRateMap, &pCurrBssInfo->supRateMap); + zd_makeRateInfoMAP((U8 *)&pCurrBssInfo->extRates, &pCurrBssInfo->basicRateMap, &pCurrBssInfo->supRateMap); + //FPRINT_V("basicRateMap", pCurrBssInfo->basicRateMap); + //FPRINT_V("supRateMap", pCurrBssInfo->supRateMap); + + if (LastMacMode != PURE_A_MODE && pCurrBssInfo->supRateMap > 0x0f) { //support rates include OFDM rates + if (pCurrBssInfo->basicRateMap & ~0xf) { // basic rates include OFDM rates + pCurrBssInfo->apMode = PURE_G_AP; + //FPRINT("PURE_G_AP"); + } else { + pCurrBssInfo->apMode = MIXED_AP; + //FPRINT("MIXED_AP"); + } + } else if(LastMacMode == PURE_A_MODE) { + pCurrBssInfo->apMode = PURE_A_AP; + } else { + pCurrBssInfo->apMode = PURE_B_AP; + //FPRINT("PURE_B_AP"); + } + + /* Get WPA IE Information */ + //getElem(rdu, EID_WPA, (Element *)&pCurrBssInfo->WPAIe); + + memset(&pCurrBssInfo->WPAIe,0x00, sizeof(pCurrBssInfo->WPAIe)); + getElem(rdu, EID_WPA, (Element*)&pCurrBssInfo->WPAIe); + memset(&pCurrBssInfo->RSNIe,0x00, sizeof(pCurrBssInfo->RSNIe)); + getElem(rdu, EID_RSN, (Element*)&pCurrBssInfo->RSNIe); + + +#if 0 + /* Dump WPA IE */ + if(pCurrBssInfo->WPAIe[1] != 0) { + int ii; + u8 SSID[34+1]; + + memcpy(SSID, (u8 *)(&pCurrBssInfo->ssid.buf[2]), pCurrBssInfo->ssid.buf[1]); + SSID[pCurrBssInfo->ssid.buf[1]] = '\0'; + + printk(KERN_ERR "WPA IE found in site survey, SSID: %s\n", SSID); + + for(ii = 0; ii < pCurrBssInfo->WPAIe[1]+2; ) { + printk(KERN_ERR "0x%02x ", pCurrBssInfo->WPAIe[ii]); + ii++; + } + + printk(KERN_ERR "\n"); + } +#endif + + pCurrBssInfo->signalStrength = pfrmDesc->signalStrength; + pCurrBssInfo->signalQuality = pfrmDesc->signalQuality; + + if (mBssNum < 63) { + if (!bUpdateInfo) + mBssNum++; + } + } + release: - ZDEBUG("goto release"); - freeFdesc(pfrmDesc); - return TRUE; + ZDEBUG("goto release"); + freeFdesc(pfrmDesc); + return TRUE; } + BOOLEAN SynchEntry(Signal_t *signal) { - FrmDesc_t *pfrmDesc; - - switch(signal->id) { - case SIG_PROBE: - return Probe(signal); - - case SIG_PROBE_REQ: - return ProbeReq(signal); - - case SIQ_PROBE_RSP_BEACON: - return ProbeRsp_Beacon(signal); - - default: - goto sync_discard; - } + FrmDesc_t *pfrmDesc; + + switch(signal->id) { + case SIG_PROBE: + return Probe(signal); + + case SIG_PROBE_REQ: + return ProbeReq(signal); + + case SIQ_PROBE_RSP_BEACON: + return ProbeRsp_Beacon(signal); + + default: + goto sync_discard; + } sync_discard: - pfrmDesc = signal->frmInfo.frmDesc; - freeFdesc(pfrmDesc); - return TRUE; + pfrmDesc = signal->frmInfo.frmDesc; + freeFdesc(pfrmDesc); + return TRUE; } +#endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/WS11Ur.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/WS11Ur.h @@ -1,114 +1,231 @@ +#ifdef ZD1211 ={ -0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0x1D, 0xEE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, -0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0xFE, 0xF3, 0x41, 0xEE, 0x98, 0x9A, 0x01, 0x00, 0x1F, 0xEC, 0x00, 0x00, -0xB2, 0xF8, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, -0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x01, 0xF1, 0x05, 0xF1, 0x49, 0xF1, 0x09, 0xF1, 0x49, 0xF1, 0x0D, 0xF1, 0x17, 0xF1, 0x49, 0xF1, 0x21, 0xF1, 0x2B, 0xF1, 0x35, 0xF1, 0x3F, 0xF1, -0x1E, 0xF2, 0x22, 0xF2, 0x2D, 0xF2, 0x6C, 0xF2, 0x6C, 0xF2, 0x57, 0xF2, 0x62, 0xF2, 0x00, 0x00, 0x27, 0xEF, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, -0x0F, 0x9F, 0xB8, 0xEE, 0x11, 0x93, 0x01, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB8, 0xEE, 0x11, 0x93, 0x02, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB8, 0xEE, 0x4F, 0x96, 0x1B, 0xD7, -0x30, 0xBC, 0x1A, 0xD5, 0x80, 0xBC, 0x0C, 0x99, 0x86, 0x00, 0x1C, 0xD9, 0x90, 0xBC, 0x46, 0x94, 0x0C, 0x69, 0x6F, 0x43, 0x01, 0x97, 0xD4, 0xD4, 0x0B, 0x07, 0xFF, 0xFF, 0x40, 0x46, 0x02, 0x3E, -0x0F, 0x9F, 0x6B, 0xEE, 0x42, 0x96, 0x1B, 0xD7, 0x61, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x60, 0xBC, 0x0A, 0x65, 0xBF, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC4, 0xD2, 0x0A, 0x95, -0xF2, 0x00, 0x1A, 0xD5, 0x31, 0xBC, 0x52, 0x98, 0x1C, 0xD9, 0x82, 0xBC, 0x09, 0x93, 0x82, 0x00, 0x19, 0xD3, 0x92, 0xBC, 0x40, 0x94, 0x1A, 0xD5, 0x42, 0xBC, 0x0B, 0xA3, 0x20, 0x00, 0x19, 0xD3, -0x43, 0xBC, 0x0B, 0x97, 0xFE, 0x00, 0x1B, 0xD7, 0x32, 0xBC, 0x53, 0x98, 0x1C, 0xD9, 0x8E, 0xBC, 0x09, 0x93, 0x83, 0x00, 0x19, 0xD3, 0x9E, 0xBC, 0x0A, 0x95, 0x40, 0x00, 0x1A, 0xD5, 0x44, 0xBC, -0x60, 0x96, 0x1B, 0xD7, 0x45, 0xBC, 0x0C, 0x99, 0xFF, 0x00, 0x1C, 0xD9, 0x33, 0xBC, 0x44, 0x96, 0x1B, 0xD7, 0x8F, 0xBC, 0x19, 0xD3, 0x9F, 0xBC, 0x40, 0x98, 0x1C, 0xD9, 0x67, 0xBC, 0x1A, 0xD5, -0x66, 0xBC, 0x0A, 0x65, 0xB9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC3, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, -0x02, 0x5E, 0x0F, 0x9F, 0x25, 0xEF, 0x11, 0x93, 0x01, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x25, 0xEF, 0x11, 0x93, 0x02, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x25, 0xEF, 0x4F, 0x96, -0x1B, 0xD7, 0x30, 0xBC, 0x1A, 0xD5, 0x80, 0xBC, 0x0A, 0x95, 0x86, 0x00, 0x1A, 0xD5, 0x90, 0xBC, 0x46, 0x94, 0x0B, 0x67, 0x6F, 0x43, 0xD3, 0xD4, 0x09, 0x03, 0xFF, 0xFF, 0x40, 0x42, 0x02, 0x3E, -0x0F, 0x9F, 0xDB, 0xEE, 0x40, 0x96, 0x1B, 0xD7, 0x61, 0xBC, 0x0C, 0x99, 0x40, 0x00, 0x1C, 0xD9, 0x60, 0xBC, 0x0A, 0x65, 0xBF, 0x43, 0xC2, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC2, 0xD2, 0x0A, 0x95, -0xF2, 0x00, 0x1A, 0xD5, 0x31, 0xBC, 0x52, 0x96, 0x1B, 0xD7, 0x82, 0xBC, 0x09, 0x93, 0x82, 0x00, 0x19, 0xD3, 0x92, 0xBC, 0x1C, 0xD9, 0x42, 0xBC, 0x40, 0x94, 0x0A, 0xA7, 0x20, 0x00, 0x1B, 0xD7, -0x43, 0xBC, 0x0A, 0x95, 0xFE, 0x00, 0x1A, 0xD5, 0x32, 0xBC, 0x53, 0x94, 0x1A, 0xD5, 0x8E, 0xBC, 0x0A, 0x95, 0x83, 0x00, 0x1A, 0xD5, 0x9E, 0xBC, 0x1C, 0xD9, 0x44, 0xBC, 0x1B, 0xD7, 0x45, 0xBC, -0x0B, 0x97, 0xFF, 0x00, 0x1B, 0xD7, 0x33, 0xBC, 0x44, 0x94, 0x1A, 0xD5, 0x8F, 0xBC, 0x19, 0xD3, 0x9F, 0xBC, 0x40, 0x96, 0x1B, 0xD7, 0x67, 0xBC, 0x1C, 0xD9, 0x66, 0xBC, 0x0A, 0x65, 0xB9, 0x43, -0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC3, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x95, 0x09, 0xEC, 0x02, 0x97, 0xC3, 0x92, 0x71, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0x6E, 0xEF, 0x02, 0x8E, 0x0F, 0x9F, 0x3B, 0xEF, 0x70, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x41, 0xEF, 0x0F, 0x9F, 0x96, 0xEF, 0x72, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x60, 0xEF, 0x0F, 0x9F, -0x96, 0xEF, 0x0A, 0x03, 0x03, 0x00, 0xC1, 0x96, 0x1B, 0xD7, 0x0E, 0xEC, 0x0A, 0x03, 0x01, 0x00, 0xC1, 0x94, 0x1A, 0xD5, 0x0D, 0xEC, 0x0A, 0x45, 0xFF, 0xED, 0x02, 0x8E, 0x0F, 0x9F, 0x5B, 0xEF, -0x0B, 0x03, 0x01, 0x00, 0x61, 0x93, 0x11, 0x03, 0x4D, 0xEC, 0x19, 0xD3, 0x4D, 0xEC, 0x0A, 0x03, 0x00, 0xDE, 0x19, 0xD3, 0x0D, 0xEC, 0x42, 0x98, 0x1C, 0xD9, 0x11, 0xEC, 0x0F, 0x9F, 0x96, 0xEF, -0x0A, 0x03, 0x03, 0x00, 0xC1, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x0A, 0x03, 0x01, 0x00, 0xC1, 0x92, 0x19, 0xD3, 0x0D, 0xEC, 0x40, 0xF0, 0x2F, 0xF3, 0x0F, 0x9F, 0x96, 0xEF, 0x41, 0x92, 0x19, 0xD3, -0x0C, 0xBC, 0x42, 0x94, 0x1A, 0xD5, 0xF0, 0xBD, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x12, 0x95, 0x4D, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x94, 0xEF, 0x02, 0x43, -0x02, 0x0E, 0x0F, 0x9F, 0x8F, 0xEF, 0x0B, 0x97, 0x00, 0x10, 0x0A, 0x65, 0x00, 0x12, 0xD2, 0x98, 0xD3, 0xD8, 0x41, 0x02, 0x11, 0x43, 0x4D, 0xEC, 0x02, 0x1E, 0x0F, 0x9F, 0x87, 0xEF, 0x40, 0x92, -0x19, 0xD3, 0x4D, 0xEC, 0x0F, 0x9F, 0x96, 0xEF, 0x0F, 0x9F, 0x95, 0xF8, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, -0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0x09, 0x93, 0xFF, 0x00, 0x19, 0xD3, 0x12, 0xBC, 0x19, 0xD3, 0x13, 0xBC, 0x19, 0xD3, 0x14, 0xBC, 0x19, 0xD3, 0x16, 0xBC, 0x19, 0xD3, 0x17, 0xBC, 0x0C, 0x69, -0x00, 0x44, 0x04, 0x93, 0xC1, 0x94, 0x0A, 0xB5, 0xEF, 0xFF, 0xC5, 0xD4, 0x41, 0x94, 0x1A, 0xD5, 0x02, 0xBC, 0x0B, 0x67, 0xEF, 0x43, 0x03, 0x95, 0xC2, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC3, 0xD2, -0xC5, 0x96, 0x0B, 0xA5, 0x20, 0x00, 0xC4, 0xD4, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x19, 0xD3, 0x11, 0xEC, -0x19, 0xD3, 0x00, 0xEC, 0x19, 0xD3, 0x01, 0xEC, 0x19, 0xD3, 0x02, 0xEC, 0x19, 0xD3, 0x0F, 0xEC, 0x19, 0xD3, 0x10, 0xEC, 0x19, 0xD3, 0x1C, 0xEC, 0x40, 0xF0, 0x98, 0xEF, 0x40, 0x92, 0x19, 0xD3, -0x08, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x12, 0xEC, 0x41, 0x42, 0x02, 0x4E, 0x0F, 0x9F, -0x4A, 0xF0, 0x41, 0x94, 0x1A, 0xD5, 0x12, 0xEC, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x21, 0xF0, 0x09, 0x93, 0x00, 0x02, 0x19, 0xD3, 0x03, 0xEC, -0x09, 0x93, 0x31, 0xF8, 0x19, 0xD3, 0x13, 0xEC, 0x02, 0x97, 0x01, 0x99, 0x03, 0x95, 0x09, 0x93, 0x16, 0xEC, 0x01, 0x05, 0x03, 0x93, 0x04, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x43, 0x46, -0x02, 0x9E, 0x0F, 0x9F, 0x06, 0xF0, 0x11, 0x93, 0x39, 0xF8, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x1A, 0xEC, 0x09, 0x93, 0x1F, 0xEC, 0x19, 0xD3, 0x14, 0xEC, 0x09, 0x93, 0x36, 0xEC, 0x0F, 0x9F, -0x44, 0xF0, 0x09, 0x93, 0x40, 0x00, 0x19, 0xD3, 0x03, 0xEC, 0x09, 0x93, 0x31, 0xF8, 0x19, 0xD3, 0x13, 0xEC, 0x02, 0x97, 0x01, 0x99, 0x03, 0x95, 0x09, 0x93, 0x16, 0xEC, 0x01, 0x05, 0x03, 0x93, -0x04, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0x2B, 0xF0, 0x11, 0x93, 0x39, 0xF8, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x1A, 0xEC, 0x09, 0x93, 0x36, 0xEC, -0x19, 0xD3, 0x14, 0xEC, 0x09, 0x93, 0x1F, 0xEC, 0x19, 0xD3, 0x15, 0xEC, 0x09, 0x93, 0x0A, 0x06, 0x19, 0xD3, 0x16, 0xEC, 0x13, 0x97, 0x0C, 0xBC, 0x0B, 0xB3, 0x80, 0x00, 0x0A, 0x95, 0x06, 0xEC, -0xD2, 0xD2, 0x0B, 0xB3, 0x60, 0x00, 0xC2, 0xD2, 0x09, 0x93, 0x06, 0xEC, 0x09, 0x05, 0x02, 0x00, 0x0B, 0xB3, 0x03, 0x00, 0xC2, 0xD2, 0xC5, 0x92, 0x11, 0x93, 0x0E, 0xBC, 0x19, 0xD3, 0x09, 0xEC, -0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, 0x0A, 0xEC, 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, 0x0B, 0xEC, -0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, 0x0C, 0xEC, 0x11, 0x93, 0x07, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x8D, 0xF0, 0x09, 0x43, 0x40, 0x00, -0x02, 0x5E, 0x0F, 0x9F, 0x93, 0xF0, 0x11, 0x93, 0x1B, 0xEC, 0x41, 0x22, 0x0A, 0x95, 0x8B, 0xF0, 0x88, 0xD4, 0x88, 0xDC, 0x91, 0x9A, 0x0F, 0x9F, 0x96, 0xF0, 0x40, 0xF0, 0xF5, 0xF0, 0x40, 0x42, -0x02, 0x5E, 0x0F, 0x9F, 0x96, 0xF0, 0x42, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0x2F, 0xF3, 0x40, 0x92, 0x19, 0xD3, -0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x11, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xF0, 0x40, 0xF0, 0x7A, 0xF3, 0x40, 0x92, 0x19, 0xD3, -0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x11, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0x0B, 0xBC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x44, 0x92, 0x19, 0xD3, 0x0B, 0xBC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, -0x40, 0x92, 0x19, 0xD3, 0x12, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x09, 0x93, -0x70, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xF7, 0xFF, 0xC2, 0xD2, 0x09, 0x93, -0x6D, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x09, 0xEC, 0x4B, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x49, 0xF1, 0x09, 0x03, 0x34, 0xEE, -0xC1, 0x9E, 0x40, 0xF0, 0x4C, 0xF1, 0x0F, 0x9F, 0x4A, 0xF1, 0x40, 0xF0, 0x62, 0xF1, 0x0F, 0x9F, 0x4A, 0xF1, 0x40, 0xF0, 0x76, 0xF1, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, -0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0xEE, 0xF1, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0x02, 0xF2, 0x0F, 0x9F, -0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0x7E, 0xF2, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, -0x49, 0xF1, 0x40, 0xF0, 0x8D, 0xF2, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0xCE, 0xF2, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, -0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0xF4, 0xF2, 0x0F, 0x9F, 0x4A, 0xF1, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, -0x08, 0xEC, 0x4F, 0xB2, 0x09, 0x03, 0x1C, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x0E, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, -0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, 0x41, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x73, 0xF1, 0x40, 0x92, 0x19, 0xD3, 0x1E, 0xEC, 0x41, 0x92, 0x19, 0xD3, -0x10, 0xEC, 0x0F, 0x9F, 0x74, 0xF1, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x0A, 0xEC, 0x01, 0x95, 0xC2, 0x96, 0x41, 0x46, 0x02, 0x4E, 0x0F, 0x9F, -0x8F, 0xF1, 0x02, 0x1E, 0x0F, 0x9F, 0x8A, 0xF1, 0x42, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0x99, 0xF1, 0x0F, 0x9F, 0xE0, 0xF1, 0x41, 0x96, 0x1B, 0xD7, 0x10, 0xEC, 0x0F, 0x9F, 0xE3, 0xF1, 0x0A, 0x65, -0x00, 0x44, 0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x1B, 0xD7, 0x10, 0xEC, 0x0F, 0x9F, 0xE3, 0xF1, 0x41, 0x02, 0xC1, 0x92, 0x79, 0x93, 0x79, 0x93, 0x44, 0x42, 0x02, 0x4E, 0x0F, 0x9F, -0xB8, 0xF1, 0x02, 0x9E, 0x0F, 0x9F, 0xAA, 0xF1, 0x45, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE3, 0xF1, 0x0F, 0x9F, 0xE0, 0xF1, 0x41, 0x42, 0x02, 0x1E, 0x0F, 0x9F, 0xE0, 0xF1, 0x09, 0x03, 0x4D, 0xEC, -0xC1, 0x92, 0x19, 0xD3, 0x08, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0xE3, 0xF1, 0x0A, 0x65, 0xF8, 0x43, 0x50, 0x98, 0x02, 0x97, 0xC3, 0xD8, 0x09, 0x63, 0xF5, 0x43, 0x41, 0x98, -0x01, 0x97, 0xC3, 0xD8, 0x40, 0x94, 0x02, 0x93, 0x0C, 0x99, 0x51, 0xEC, 0x04, 0x03, 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0x0C, 0xBC, 0xC1, 0x92, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x0E, 0xBC, -0x41, 0x04, 0x5A, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0xC3, 0xF1, 0x0C, 0x99, 0x7E, 0x00, 0x1C, 0xD9, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x19, 0xD3, 0x0B, 0xBC, 0x0F, 0x9F, 0xE3, 0xF1, -0x40, 0x92, 0x0F, 0x9F, 0xEC, 0xF1, 0x11, 0x93, 0x10, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xEB, 0xF1, 0x19, 0xD3, 0x1E, 0xEC, 0x41, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, 0x09, 0x43, 0xFF, 0x00, 0x02, 0x8E, 0x0F, 0x9F, 0xFF, 0xF1, 0x19, 0xD3, 0x01, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0x00, 0xF2, 0x40, 0x92, -0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x14, 0xEC, 0x0A, 0x95, 0x09, 0x02, 0xC1, 0xD4, 0x11, 0x93, 0x15, 0xEC, 0x0B, 0x97, 0x09, 0x07, 0xC1, 0xD6, 0x0A, 0x95, -0x0A, 0xEC, 0x02, 0x97, 0xC3, 0x92, 0x79, 0x93, 0x79, 0x93, 0x09, 0x03, 0xFF, 0xFF, 0x46, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x6C, 0xF2, 0x09, 0x03, 0x40, 0xEE, 0xC1, 0x9E, 0x11, 0x93, 0x13, 0xEC, -0x0F, 0x9F, 0x59, 0xF2, 0xC2, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x6C, 0xF2, 0x11, 0x93, 0x14, 0xEC, 0x0F, 0x9F, 0x64, 0xF2, 0xC2, 0x92, 0x09, 0xB3, 0xFF, 0x00, -0x50, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x49, 0xF2, 0x02, 0x8E, 0x0F, 0x9F, 0x3D, 0xF2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x43, 0xF2, 0x0F, 0x9F, 0x6C, 0xF2, 0x60, 0x42, 0x02, 0x4E, 0x0F, 0x9F, -0x4F, 0xF2, 0x0F, 0x9F, 0x6C, 0xF2, 0x09, 0x93, 0x3A, 0xF8, 0x19, 0xD3, 0x0D, 0xEC, 0x0F, 0x9F, 0x53, 0xF2, 0x0A, 0x95, 0x6F, 0xF8, 0x1A, 0xD5, 0x0D, 0xEC, 0x0F, 0x9F, 0x53, 0xF2, 0x0B, 0x97, -0x7A, 0xF8, 0x1B, 0xD7, 0x0D, 0xEC, 0x11, 0x93, 0x0D, 0xEC, 0x0F, 0x9F, 0x5B, 0xF2, 0x09, 0x93, 0x16, 0xEC, 0x19, 0xD3, 0x0D, 0xEC, 0xC1, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x19, 0xD3, 0x0E, 0xEC, -0x0F, 0x9F, 0x6F, 0xF2, 0x11, 0x93, 0x15, 0xEC, 0x19, 0xD3, 0x0D, 0xEC, 0x41, 0x02, 0xC1, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x0F, 0x9F, 0x6F, 0xF2, 0x40, 0x92, 0x0F, 0x9F, 0x7C, 0xF2, 0x11, 0x93, -0x0E, 0xEC, 0x12, 0x95, 0x0C, 0xEC, 0x02, 0x43, 0x02, 0x9E, 0x0F, 0x9F, 0x79, 0xF2, 0x1A, 0xD5, 0x0E, 0xEC, 0x40, 0xF0, 0x2F, 0xF3, 0x41, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x11, 0x93, 0x00, 0xEC, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, -0x11, 0x93, 0x0A, 0xEC, 0x09, 0xB5, 0xFF, 0x00, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xA3, 0xF2, 0x1A, 0xD5, 0x00, 0xEC, 0x0A, 0x65, 0xFF, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x7F, 0xFF, -0xC2, 0xD2, 0x0F, 0x9F, 0xC9, 0xF2, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB8, 0xF2, 0x41, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0xB2, 0xF2, 0x40, 0x92, -0x0F, 0x9F, 0xCC, 0xF2, 0x1A, 0xD5, 0x00, 0xEC, 0x40, 0xF0, 0x49, 0xEE, 0x0F, 0x9F, 0xC0, 0xF2, 0x41, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0xCC, 0xF2, 0x1A, 0xD5, 0x00, 0xEC, 0x40, 0xF0, 0xBA, 0xEE, -0x0A, 0x65, 0xFF, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, 0x40, 0xF0, 0xC7, 0xF3, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x11, 0x93, 0x01, 0xBC, 0x09, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF2, 0xF2, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xE5, 0xF2, 0x11, 0x93, -0x0B, 0xEC, 0x41, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0xE8, 0xF2, 0x40, 0x92, 0x0F, 0x9F, 0xF2, 0xF2, 0x11, 0x93, 0x02, 0xEC, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x1A, 0xD5, -0x10, 0xEC, 0x02, 0x93, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x01, 0xBC, 0x09, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x2C, 0xF3, 0x13, 0x97, -0x0B, 0xEC, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x2C, 0xF3, 0x11, 0x93, 0x0A, 0xEC, 0x09, 0xB5, 0xFF, 0x00, 0x11, 0x93, 0x14, 0xEC, 0x46, 0x02, 0xC1, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x01, 0x45, -0x02, 0x5E, 0x0F, 0x9F, 0x2C, 0xF3, 0x1B, 0xD7, 0x01, 0xEC, 0x1A, 0xD5, 0x02, 0xEC, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x23, 0xF3, 0x40, 0xF0, -0x49, 0xEE, 0x0F, 0x9F, 0x25, 0xF3, 0x40, 0xF0, 0xBA, 0xEE, 0x40, 0xF0, 0xC7, 0xF3, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0x2D, 0xF3, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, -0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x0E, 0xEC, 0x09, 0x93, 0x40, 0x00, 0x7F, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x3C, 0xF3, 0x02, 0x93, 0x1A, 0x23, 0x0E, 0xEC, 0x40, 0x98, 0x61, 0x95, -0x02, 0xD4, 0x09, 0xB7, 0x01, 0x00, 0xC5, 0xD6, 0x43, 0xB2, 0x01, 0xD2, 0x0F, 0x9F, 0x56, 0xF3, 0x12, 0x95, 0x0D, 0xEC, 0x02, 0x93, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0xD2, 0x92, 0x79, 0x93, -0x79, 0x93, 0x19, 0xD3, 0x0E, 0xBC, 0x1A, 0xD5, 0x0D, 0xEC, 0x41, 0x08, 0x02, 0x48, 0x02, 0x1E, 0x0F, 0x9F, 0x48, 0xF3, 0xC5, 0x94, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x64, 0xF3, 0x11, 0x93, -0x0D, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0x01, 0x96, 0x40, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0x6C, 0xF3, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x11, 0x93, 0x0E, 0xEC, 0x40, 0x42, 0x02, 0x5E, -0x0F, 0x9F, 0x77, 0xF3, 0x19, 0xD3, 0x11, 0xEC, 0x41, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0E, 0xEC, -0x0A, 0x95, 0x40, 0x00, 0x7F, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x87, 0xF3, 0x01, 0x95, 0x19, 0x25, 0x0E, 0xEC, 0x40, 0x98, 0x0A, 0x03, 0x01, 0x00, 0x01, 0xD2, 0x43, 0xB4, 0xC5, 0xD4, 0x0F, 0x9F, -0xAB, 0xF3, 0x11, 0x93, 0x0D, 0xEC, 0x12, 0x95, 0x0C, 0xBC, 0xC1, 0xD4, 0x12, 0x95, 0x0D, 0xEC, 0x11, 0x93, 0x0E, 0xBC, 0x59, 0x93, 0x59, 0x93, 0x02, 0x97, 0xC3, 0x02, 0xC2, 0xD2, 0x11, 0x93, -0x05, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAA, 0xF3, 0x11, 0x93, 0x0D, 0xEC, 0x41, 0x02, 0x19, 0xD3, 0x0D, 0xEC, 0x41, 0x08, 0x01, 0x94, 0x62, 0x93, 0x01, 0x49, 0x02, 0x1E, 0x0F, 0x9F, -0x91, 0xF3, 0xC5, 0x96, 0x40, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0xB9, 0xF3, 0x41, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x11, 0x93, 0x0E, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xC4, 0xF3, 0x19, 0xD3, -0x11, 0xEC, 0x41, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x41, 0x96, 0x0A, 0x65, 0xBF, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, -0xEF, 0xFF, 0xC4, 0xD2, 0x42, 0x04, 0x41, 0x06, 0x4A, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xCD, 0xF3, 0x41, 0x96, 0x0A, 0x65, 0x9F, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xEF, 0xFF, 0xC4, 0xD2, -0x42, 0x04, 0x41, 0x06, 0x4A, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xDB, 0xF3, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x08, 0x14, 0x19, 0xD3, 0x01, 0x84, 0x0A, 0x65, -0xFE, 0x7B, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xE0, 0xC2, 0xD2, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x09, 0x93, 0x00, 0x02, 0x19, 0xD3, 0x44, 0x96, 0x0A, 0x65, 0x80, 0x69, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x7F, 0xFF, 0xC2, 0xD2, 0x55, 0x92, 0x19, 0xD3, 0x2C, 0x90, 0x0B, 0x97, -0xFE, 0x00, 0x1B, 0xD7, 0x40, 0x85, 0x09, 0x93, 0x4C, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x09, 0x63, 0x00, 0x14, 0x40, 0x94, 0xD1, 0xD4, 0x09, 0x43, 0xFF, 0xEC, 0x02, 0x9E, 0x0F, 0x9F, 0x1A, 0xF4, -0x40, 0x96, 0x1B, 0xD7, 0x12, 0xEC, 0x40, 0xF0, 0xC7, 0xEF, 0x09, 0x93, 0x47, 0xEE, 0x19, 0xD3, 0x1B, 0xEC, 0x41, 0x96, 0x1B, 0xD7, 0x05, 0xEC, 0x11, 0x93, 0x20, 0xBC, 0x40, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0x2C, 0xF4, 0xC8, 0xD2, 0x40, 0xF0, 0x3A, 0xF4, 0x41, 0x00, 0x0F, 0x9F, 0x2C, 0xF4, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, -0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x88, 0xF4, 0x12, 0x95, 0x21, 0xBC, 0x01, 0xD4, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x50, 0xF4, 0x40, 0xF0, 0x99, 0xF0, -0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x59, 0xF4, 0x40, 0xF0, 0xA3, 0xF0, 0x01, 0x94, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x64, 0xF4, -0x40, 0xF0, 0xE7, 0xEF, 0x0F, 0x9F, 0x6D, 0xF4, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6D, 0xF4, 0x40, 0xF0, 0xB3, 0xF0, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, -0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x76, 0xF4, 0x40, 0xF0, 0xBE, 0xF0, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x7F, 0xF4, 0x44, 0x92, 0x0F, 0x9F, 0x83, 0xF4, 0x41, 0x42, -0x02, 0x5E, 0x0F, 0x9F, 0x85, 0xF4, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF4, 0x11, 0x93, -0x28, 0xBC, 0x01, 0xD2, 0x42, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x99, 0xF4, 0x40, 0xF0, 0xC6, 0xF0, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA2, 0xF4, -0x40, 0xF0, 0xD5, 0xF0, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF4, 0x40, 0xF0, 0xE5, 0xF0, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x40, 0xF0, 0xE8, 0xF3, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; + 0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0x1D, 0xEE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, + 0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0xFE, 0xF3, 0x41, 0xEE, 0x98, 0x9A, 0x01, 0x00, 0x1F, 0xEC, 0x00, 0x00, + 0xB2, 0xF8, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, + 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x01, 0xF1, 0x05, 0xF1, 0x49, 0xF1, 0x09, 0xF1, 0x49, 0xF1, 0x0D, 0xF1, 0x17, 0xF1, 0x49, 0xF1, 0x21, 0xF1, 0x2B, 0xF1, 0x35, 0xF1, 0x3F, 0xF1, + 0x1E, 0xF2, 0x22, 0xF2, 0x2D, 0xF2, 0x6C, 0xF2, 0x6C, 0xF2, 0x57, 0xF2, 0x62, 0xF2, 0x00, 0x00, 0x27, 0xEF, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, + 0x0F, 0x9F, 0xB8, 0xEE, 0x11, 0x93, 0x01, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB8, 0xEE, 0x11, 0x93, 0x02, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB8, 0xEE, 0x4F, 0x96, 0x1B, 0xD7, + 0x30, 0xBC, 0x1A, 0xD5, 0x80, 0xBC, 0x0C, 0x99, 0x86, 0x00, 0x1C, 0xD9, 0x90, 0xBC, 0x46, 0x94, 0x0C, 0x69, 0x6F, 0x43, 0x01, 0x97, 0xD4, 0xD4, 0x0B, 0x07, 0xFF, 0xFF, 0x40, 0x46, 0x02, 0x3E, + 0x0F, 0x9F, 0x6B, 0xEE, 0x42, 0x96, 0x1B, 0xD7, 0x61, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x60, 0xBC, 0x0A, 0x65, 0xBF, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC4, 0xD2, 0x0A, 0x95, + 0xF2, 0x00, 0x1A, 0xD5, 0x31, 0xBC, 0x52, 0x98, 0x1C, 0xD9, 0x82, 0xBC, 0x09, 0x93, 0x82, 0x00, 0x19, 0xD3, 0x92, 0xBC, 0x40, 0x94, 0x1A, 0xD5, 0x42, 0xBC, 0x0B, 0xA3, 0x20, 0x00, 0x19, 0xD3, + 0x43, 0xBC, 0x0B, 0x97, 0xFE, 0x00, 0x1B, 0xD7, 0x32, 0xBC, 0x53, 0x98, 0x1C, 0xD9, 0x8E, 0xBC, 0x09, 0x93, 0x83, 0x00, 0x19, 0xD3, 0x9E, 0xBC, 0x0A, 0x95, 0x40, 0x00, 0x1A, 0xD5, 0x44, 0xBC, + 0x60, 0x96, 0x1B, 0xD7, 0x45, 0xBC, 0x0C, 0x99, 0xFF, 0x00, 0x1C, 0xD9, 0x33, 0xBC, 0x44, 0x96, 0x1B, 0xD7, 0x8F, 0xBC, 0x19, 0xD3, 0x9F, 0xBC, 0x40, 0x98, 0x1C, 0xD9, 0x67, 0xBC, 0x1A, 0xD5, + 0x66, 0xBC, 0x0A, 0x65, 0xB9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC3, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, + 0x02, 0x5E, 0x0F, 0x9F, 0x25, 0xEF, 0x11, 0x93, 0x01, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x25, 0xEF, 0x11, 0x93, 0x02, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x25, 0xEF, 0x4F, 0x96, + 0x1B, 0xD7, 0x30, 0xBC, 0x1A, 0xD5, 0x80, 0xBC, 0x0A, 0x95, 0x86, 0x00, 0x1A, 0xD5, 0x90, 0xBC, 0x46, 0x94, 0x0B, 0x67, 0x6F, 0x43, 0xD3, 0xD4, 0x09, 0x03, 0xFF, 0xFF, 0x40, 0x42, 0x02, 0x3E, + 0x0F, 0x9F, 0xDB, 0xEE, 0x40, 0x96, 0x1B, 0xD7, 0x61, 0xBC, 0x0C, 0x99, 0x40, 0x00, 0x1C, 0xD9, 0x60, 0xBC, 0x0A, 0x65, 0xBF, 0x43, 0xC2, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC2, 0xD2, 0x0A, 0x95, + 0xF2, 0x00, 0x1A, 0xD5, 0x31, 0xBC, 0x52, 0x96, 0x1B, 0xD7, 0x82, 0xBC, 0x09, 0x93, 0x82, 0x00, 0x19, 0xD3, 0x92, 0xBC, 0x1C, 0xD9, 0x42, 0xBC, 0x40, 0x94, 0x0A, 0xA7, 0x20, 0x00, 0x1B, 0xD7, + 0x43, 0xBC, 0x0A, 0x95, 0xFE, 0x00, 0x1A, 0xD5, 0x32, 0xBC, 0x53, 0x94, 0x1A, 0xD5, 0x8E, 0xBC, 0x0A, 0x95, 0x83, 0x00, 0x1A, 0xD5, 0x9E, 0xBC, 0x1C, 0xD9, 0x44, 0xBC, 0x1B, 0xD7, 0x45, 0xBC, + 0x0B, 0x97, 0xFF, 0x00, 0x1B, 0xD7, 0x33, 0xBC, 0x44, 0x94, 0x1A, 0xD5, 0x8F, 0xBC, 0x19, 0xD3, 0x9F, 0xBC, 0x40, 0x96, 0x1B, 0xD7, 0x67, 0xBC, 0x1C, 0xD9, 0x66, 0xBC, 0x0A, 0x65, 0xB9, 0x43, + 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC3, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x95, 0x09, 0xEC, 0x02, 0x97, 0xC3, 0x92, 0x71, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x6E, 0xEF, 0x02, 0x8E, 0x0F, 0x9F, 0x3B, 0xEF, 0x70, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x41, 0xEF, 0x0F, 0x9F, 0x96, 0xEF, 0x72, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x60, 0xEF, 0x0F, 0x9F, + 0x96, 0xEF, 0x0A, 0x03, 0x03, 0x00, 0xC1, 0x96, 0x1B, 0xD7, 0x0E, 0xEC, 0x0A, 0x03, 0x01, 0x00, 0xC1, 0x94, 0x1A, 0xD5, 0x0D, 0xEC, 0x0A, 0x45, 0xFF, 0xED, 0x02, 0x8E, 0x0F, 0x9F, 0x5B, 0xEF, + 0x0B, 0x03, 0x01, 0x00, 0x61, 0x93, 0x11, 0x03, 0x4D, 0xEC, 0x19, 0xD3, 0x4D, 0xEC, 0x0A, 0x03, 0x00, 0xDE, 0x19, 0xD3, 0x0D, 0xEC, 0x42, 0x98, 0x1C, 0xD9, 0x11, 0xEC, 0x0F, 0x9F, 0x96, 0xEF, + 0x0A, 0x03, 0x03, 0x00, 0xC1, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x0A, 0x03, 0x01, 0x00, 0xC1, 0x92, 0x19, 0xD3, 0x0D, 0xEC, 0x40, 0xF0, 0x2F, 0xF3, 0x0F, 0x9F, 0x96, 0xEF, 0x41, 0x92, 0x19, 0xD3, + 0x0C, 0xBC, 0x42, 0x94, 0x1A, 0xD5, 0xF0, 0xBD, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x12, 0x95, 0x4D, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x94, 0xEF, 0x02, 0x43, + 0x02, 0x0E, 0x0F, 0x9F, 0x8F, 0xEF, 0x0B, 0x97, 0x00, 0x10, 0x0A, 0x65, 0x00, 0x12, 0xD2, 0x98, 0xD3, 0xD8, 0x41, 0x02, 0x11, 0x43, 0x4D, 0xEC, 0x02, 0x1E, 0x0F, 0x9F, 0x87, 0xEF, 0x40, 0x92, + 0x19, 0xD3, 0x4D, 0xEC, 0x0F, 0x9F, 0x96, 0xEF, 0x0F, 0x9F, 0x95, 0xF8, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, + 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0x09, 0x93, 0xFF, 0x00, 0x19, 0xD3, 0x12, 0xBC, 0x19, 0xD3, 0x13, 0xBC, 0x19, 0xD3, 0x14, 0xBC, 0x19, 0xD3, 0x16, 0xBC, 0x19, 0xD3, 0x17, 0xBC, 0x0C, 0x69, + 0x00, 0x44, 0x04, 0x93, 0xC1, 0x94, 0x0A, 0xB5, 0xEF, 0xFF, 0xC5, 0xD4, 0x41, 0x94, 0x1A, 0xD5, 0x02, 0xBC, 0x0B, 0x67, 0xEF, 0x43, 0x03, 0x95, 0xC2, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC3, 0xD2, + 0xC5, 0x96, 0x0B, 0xA5, 0x20, 0x00, 0xC4, 0xD4, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x19, 0xD3, 0x11, 0xEC, + 0x19, 0xD3, 0x00, 0xEC, 0x19, 0xD3, 0x01, 0xEC, 0x19, 0xD3, 0x02, 0xEC, 0x19, 0xD3, 0x0F, 0xEC, 0x19, 0xD3, 0x10, 0xEC, 0x19, 0xD3, 0x1C, 0xEC, 0x40, 0xF0, 0x98, 0xEF, 0x40, 0x92, 0x19, 0xD3, + 0x08, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x12, 0xEC, 0x41, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0x4A, 0xF0, 0x41, 0x94, 0x1A, 0xD5, 0x12, 0xEC, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x21, 0xF0, 0x09, 0x93, 0x00, 0x02, 0x19, 0xD3, 0x03, 0xEC, + 0x09, 0x93, 0x31, 0xF8, 0x19, 0xD3, 0x13, 0xEC, 0x02, 0x97, 0x01, 0x99, 0x03, 0x95, 0x09, 0x93, 0x16, 0xEC, 0x01, 0x05, 0x03, 0x93, 0x04, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x43, 0x46, + 0x02, 0x9E, 0x0F, 0x9F, 0x06, 0xF0, 0x11, 0x93, 0x39, 0xF8, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x1A, 0xEC, 0x09, 0x93, 0x1F, 0xEC, 0x19, 0xD3, 0x14, 0xEC, 0x09, 0x93, 0x36, 0xEC, 0x0F, 0x9F, + 0x44, 0xF0, 0x09, 0x93, 0x40, 0x00, 0x19, 0xD3, 0x03, 0xEC, 0x09, 0x93, 0x31, 0xF8, 0x19, 0xD3, 0x13, 0xEC, 0x02, 0x97, 0x01, 0x99, 0x03, 0x95, 0x09, 0x93, 0x16, 0xEC, 0x01, 0x05, 0x03, 0x93, + 0x04, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0x2B, 0xF0, 0x11, 0x93, 0x39, 0xF8, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x1A, 0xEC, 0x09, 0x93, 0x36, 0xEC, + 0x19, 0xD3, 0x14, 0xEC, 0x09, 0x93, 0x1F, 0xEC, 0x19, 0xD3, 0x15, 0xEC, 0x09, 0x93, 0x0A, 0x06, 0x19, 0xD3, 0x16, 0xEC, 0x13, 0x97, 0x0C, 0xBC, 0x0B, 0xB3, 0x80, 0x00, 0x0A, 0x95, 0x06, 0xEC, + 0xD2, 0xD2, 0x0B, 0xB3, 0x60, 0x00, 0xC2, 0xD2, 0x09, 0x93, 0x06, 0xEC, 0x09, 0x05, 0x02, 0x00, 0x0B, 0xB3, 0x03, 0x00, 0xC2, 0xD2, 0xC5, 0x92, 0x11, 0x93, 0x0E, 0xBC, 0x19, 0xD3, 0x09, 0xEC, + 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, 0x0A, 0xEC, 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, 0x0B, 0xEC, + 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, 0x0C, 0xEC, 0x11, 0x93, 0x07, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x8D, 0xF0, 0x09, 0x43, 0x40, 0x00, + 0x02, 0x5E, 0x0F, 0x9F, 0x93, 0xF0, 0x11, 0x93, 0x1B, 0xEC, 0x41, 0x22, 0x0A, 0x95, 0x8B, 0xF0, 0x88, 0xD4, 0x88, 0xDC, 0x91, 0x9A, 0x0F, 0x9F, 0x96, 0xF0, 0x40, 0xF0, 0xF5, 0xF0, 0x40, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0x96, 0xF0, 0x42, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0x2F, 0xF3, 0x40, 0x92, 0x19, 0xD3, + 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x11, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xF0, 0x40, 0xF0, 0x7A, 0xF3, 0x40, 0x92, 0x19, 0xD3, + 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x11, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0x0B, 0xBC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x44, 0x92, 0x19, 0xD3, 0x0B, 0xBC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, + 0x40, 0x92, 0x19, 0xD3, 0x12, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x09, 0x93, + 0x70, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xF7, 0xFF, 0xC2, 0xD2, 0x09, 0x93, + 0x6D, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x09, 0xEC, 0x4B, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x49, 0xF1, 0x09, 0x03, 0x34, 0xEE, + 0xC1, 0x9E, 0x40, 0xF0, 0x4C, 0xF1, 0x0F, 0x9F, 0x4A, 0xF1, 0x40, 0xF0, 0x62, 0xF1, 0x0F, 0x9F, 0x4A, 0xF1, 0x40, 0xF0, 0x76, 0xF1, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0xEE, 0xF1, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0x02, 0xF2, 0x0F, 0x9F, + 0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0x7E, 0xF2, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, + 0x49, 0xF1, 0x40, 0xF0, 0x8D, 0xF2, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0xCE, 0xF2, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, + 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0xF4, 0xF2, 0x0F, 0x9F, 0x4A, 0xF1, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, + 0x08, 0xEC, 0x4F, 0xB2, 0x09, 0x03, 0x1C, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x0E, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, + 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, 0x41, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x73, 0xF1, 0x40, 0x92, 0x19, 0xD3, 0x1E, 0xEC, 0x41, 0x92, 0x19, 0xD3, + 0x10, 0xEC, 0x0F, 0x9F, 0x74, 0xF1, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x0A, 0xEC, 0x01, 0x95, 0xC2, 0x96, 0x41, 0x46, 0x02, 0x4E, 0x0F, 0x9F, + 0x8F, 0xF1, 0x02, 0x1E, 0x0F, 0x9F, 0x8A, 0xF1, 0x42, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0x99, 0xF1, 0x0F, 0x9F, 0xE0, 0xF1, 0x41, 0x96, 0x1B, 0xD7, 0x10, 0xEC, 0x0F, 0x9F, 0xE3, 0xF1, 0x0A, 0x65, + 0x00, 0x44, 0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x1B, 0xD7, 0x10, 0xEC, 0x0F, 0x9F, 0xE3, 0xF1, 0x41, 0x02, 0xC1, 0x92, 0x79, 0x93, 0x79, 0x93, 0x44, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0xB8, 0xF1, 0x02, 0x9E, 0x0F, 0x9F, 0xAA, 0xF1, 0x45, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE3, 0xF1, 0x0F, 0x9F, 0xE0, 0xF1, 0x41, 0x42, 0x02, 0x1E, 0x0F, 0x9F, 0xE0, 0xF1, 0x09, 0x03, 0x4D, 0xEC, + 0xC1, 0x92, 0x19, 0xD3, 0x08, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0xE3, 0xF1, 0x0A, 0x65, 0xF8, 0x43, 0x50, 0x98, 0x02, 0x97, 0xC3, 0xD8, 0x09, 0x63, 0xF5, 0x43, 0x41, 0x98, + 0x01, 0x97, 0xC3, 0xD8, 0x40, 0x94, 0x02, 0x93, 0x0C, 0x99, 0x51, 0xEC, 0x04, 0x03, 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0x0C, 0xBC, 0xC1, 0x92, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x0E, 0xBC, + 0x41, 0x04, 0x5A, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0xC3, 0xF1, 0x0C, 0x99, 0x7E, 0x00, 0x1C, 0xD9, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x19, 0xD3, 0x0B, 0xBC, 0x0F, 0x9F, 0xE3, 0xF1, + 0x40, 0x92, 0x0F, 0x9F, 0xEC, 0xF1, 0x11, 0x93, 0x10, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xEB, 0xF1, 0x19, 0xD3, 0x1E, 0xEC, 0x41, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, 0x09, 0x43, 0xFF, 0x00, 0x02, 0x8E, 0x0F, 0x9F, 0xFF, 0xF1, 0x19, 0xD3, 0x01, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0x00, 0xF2, 0x40, 0x92, + 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x14, 0xEC, 0x0A, 0x95, 0x09, 0x02, 0xC1, 0xD4, 0x11, 0x93, 0x15, 0xEC, 0x0B, 0x97, 0x09, 0x07, 0xC1, 0xD6, 0x0A, 0x95, + 0x0A, 0xEC, 0x02, 0x97, 0xC3, 0x92, 0x79, 0x93, 0x79, 0x93, 0x09, 0x03, 0xFF, 0xFF, 0x46, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x6C, 0xF2, 0x09, 0x03, 0x40, 0xEE, 0xC1, 0x9E, 0x11, 0x93, 0x13, 0xEC, + 0x0F, 0x9F, 0x59, 0xF2, 0xC2, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x6C, 0xF2, 0x11, 0x93, 0x14, 0xEC, 0x0F, 0x9F, 0x64, 0xF2, 0xC2, 0x92, 0x09, 0xB3, 0xFF, 0x00, + 0x50, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x49, 0xF2, 0x02, 0x8E, 0x0F, 0x9F, 0x3D, 0xF2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x43, 0xF2, 0x0F, 0x9F, 0x6C, 0xF2, 0x60, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0x4F, 0xF2, 0x0F, 0x9F, 0x6C, 0xF2, 0x09, 0x93, 0x3A, 0xF8, 0x19, 0xD3, 0x0D, 0xEC, 0x0F, 0x9F, 0x53, 0xF2, 0x0A, 0x95, 0x6F, 0xF8, 0x1A, 0xD5, 0x0D, 0xEC, 0x0F, 0x9F, 0x53, 0xF2, 0x0B, 0x97, + 0x7A, 0xF8, 0x1B, 0xD7, 0x0D, 0xEC, 0x11, 0x93, 0x0D, 0xEC, 0x0F, 0x9F, 0x5B, 0xF2, 0x09, 0x93, 0x16, 0xEC, 0x19, 0xD3, 0x0D, 0xEC, 0xC1, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x19, 0xD3, 0x0E, 0xEC, + 0x0F, 0x9F, 0x6F, 0xF2, 0x11, 0x93, 0x15, 0xEC, 0x19, 0xD3, 0x0D, 0xEC, 0x41, 0x02, 0xC1, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x0F, 0x9F, 0x6F, 0xF2, 0x40, 0x92, 0x0F, 0x9F, 0x7C, 0xF2, 0x11, 0x93, + 0x0E, 0xEC, 0x12, 0x95, 0x0C, 0xEC, 0x02, 0x43, 0x02, 0x9E, 0x0F, 0x9F, 0x79, 0xF2, 0x1A, 0xD5, 0x0E, 0xEC, 0x40, 0xF0, 0x2F, 0xF3, 0x41, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x11, 0x93, 0x00, 0xEC, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, + 0x11, 0x93, 0x0A, 0xEC, 0x09, 0xB5, 0xFF, 0x00, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xA3, 0xF2, 0x1A, 0xD5, 0x00, 0xEC, 0x0A, 0x65, 0xFF, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x7F, 0xFF, + 0xC2, 0xD2, 0x0F, 0x9F, 0xC9, 0xF2, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB8, 0xF2, 0x41, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0xB2, 0xF2, 0x40, 0x92, + 0x0F, 0x9F, 0xCC, 0xF2, 0x1A, 0xD5, 0x00, 0xEC, 0x40, 0xF0, 0x49, 0xEE, 0x0F, 0x9F, 0xC0, 0xF2, 0x41, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0xCC, 0xF2, 0x1A, 0xD5, 0x00, 0xEC, 0x40, 0xF0, 0xBA, 0xEE, + 0x0A, 0x65, 0xFF, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, 0x40, 0xF0, 0xC7, 0xF3, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x11, 0x93, 0x01, 0xBC, 0x09, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF2, 0xF2, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xE5, 0xF2, 0x11, 0x93, + 0x0B, 0xEC, 0x41, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0xE8, 0xF2, 0x40, 0x92, 0x0F, 0x9F, 0xF2, 0xF2, 0x11, 0x93, 0x02, 0xEC, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x1A, 0xD5, + 0x10, 0xEC, 0x02, 0x93, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x01, 0xBC, 0x09, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x2C, 0xF3, 0x13, 0x97, + 0x0B, 0xEC, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x2C, 0xF3, 0x11, 0x93, 0x0A, 0xEC, 0x09, 0xB5, 0xFF, 0x00, 0x11, 0x93, 0x14, 0xEC, 0x46, 0x02, 0xC1, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x01, 0x45, + 0x02, 0x5E, 0x0F, 0x9F, 0x2C, 0xF3, 0x1B, 0xD7, 0x01, 0xEC, 0x1A, 0xD5, 0x02, 0xEC, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x23, 0xF3, 0x40, 0xF0, + 0x49, 0xEE, 0x0F, 0x9F, 0x25, 0xF3, 0x40, 0xF0, 0xBA, 0xEE, 0x40, 0xF0, 0xC7, 0xF3, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0x2D, 0xF3, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x0E, 0xEC, 0x09, 0x93, 0x40, 0x00, 0x7F, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x3C, 0xF3, 0x02, 0x93, 0x1A, 0x23, 0x0E, 0xEC, 0x40, 0x98, 0x61, 0x95, + 0x02, 0xD4, 0x09, 0xB7, 0x01, 0x00, 0xC5, 0xD6, 0x43, 0xB2, 0x01, 0xD2, 0x0F, 0x9F, 0x56, 0xF3, 0x12, 0x95, 0x0D, 0xEC, 0x02, 0x93, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0xD2, 0x92, 0x79, 0x93, + 0x79, 0x93, 0x19, 0xD3, 0x0E, 0xBC, 0x1A, 0xD5, 0x0D, 0xEC, 0x41, 0x08, 0x02, 0x48, 0x02, 0x1E, 0x0F, 0x9F, 0x48, 0xF3, 0xC5, 0x94, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x64, 0xF3, 0x11, 0x93, + 0x0D, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0x01, 0x96, 0x40, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0x6C, 0xF3, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x11, 0x93, 0x0E, 0xEC, 0x40, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0x77, 0xF3, 0x19, 0xD3, 0x11, 0xEC, 0x41, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0E, 0xEC, + 0x0A, 0x95, 0x40, 0x00, 0x7F, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x87, 0xF3, 0x01, 0x95, 0x19, 0x25, 0x0E, 0xEC, 0x40, 0x98, 0x0A, 0x03, 0x01, 0x00, 0x01, 0xD2, 0x43, 0xB4, 0xC5, 0xD4, 0x0F, 0x9F, + 0xAB, 0xF3, 0x11, 0x93, 0x0D, 0xEC, 0x12, 0x95, 0x0C, 0xBC, 0xC1, 0xD4, 0x12, 0x95, 0x0D, 0xEC, 0x11, 0x93, 0x0E, 0xBC, 0x59, 0x93, 0x59, 0x93, 0x02, 0x97, 0xC3, 0x02, 0xC2, 0xD2, 0x11, 0x93, + 0x05, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAA, 0xF3, 0x11, 0x93, 0x0D, 0xEC, 0x41, 0x02, 0x19, 0xD3, 0x0D, 0xEC, 0x41, 0x08, 0x01, 0x94, 0x62, 0x93, 0x01, 0x49, 0x02, 0x1E, 0x0F, 0x9F, + 0x91, 0xF3, 0xC5, 0x96, 0x40, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0xB9, 0xF3, 0x41, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x11, 0x93, 0x0E, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xC4, 0xF3, 0x19, 0xD3, + 0x11, 0xEC, 0x41, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x41, 0x96, 0x0A, 0x65, 0xBF, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, + 0xEF, 0xFF, 0xC4, 0xD2, 0x42, 0x04, 0x41, 0x06, 0x4A, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xCD, 0xF3, 0x41, 0x96, 0x0A, 0x65, 0x9F, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xEF, 0xFF, 0xC4, 0xD2, + 0x42, 0x04, 0x41, 0x06, 0x4A, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xDB, 0xF3, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x08, 0x14, 0x19, 0xD3, 0x01, 0x84, 0x0A, 0x65, + 0xFE, 0x7B, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xE0, 0xC2, 0xD2, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x09, 0x93, 0x00, 0x02, 0x19, 0xD3, 0x44, 0x96, 0x0A, 0x65, 0x80, 0x69, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x7F, 0xFF, 0xC2, 0xD2, 0x55, 0x92, 0x19, 0xD3, 0x2C, 0x90, 0x0B, 0x97, + 0xFE, 0x00, 0x1B, 0xD7, 0x40, 0x85, 0x09, 0x93, 0x4C, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x09, 0x63, 0x00, 0x14, 0x40, 0x94, 0xD1, 0xD4, 0x09, 0x43, 0xFF, 0xEC, 0x02, 0x9E, 0x0F, 0x9F, 0x1A, 0xF4, + 0x40, 0x96, 0x1B, 0xD7, 0x12, 0xEC, 0x40, 0xF0, 0xC7, 0xEF, 0x09, 0x93, 0x47, 0xEE, 0x19, 0xD3, 0x1B, 0xEC, 0x41, 0x96, 0x1B, 0xD7, 0x05, 0xEC, 0x11, 0x93, 0x20, 0xBC, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x2C, 0xF4, 0xC8, 0xD2, 0x40, 0xF0, 0x3A, 0xF4, 0x41, 0x00, 0x0F, 0x9F, 0x2C, 0xF4, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, + 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x88, 0xF4, 0x12, 0x95, 0x21, 0xBC, 0x01, 0xD4, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x50, 0xF4, 0x40, 0xF0, 0x99, 0xF0, + 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x59, 0xF4, 0x40, 0xF0, 0xA3, 0xF0, 0x01, 0x94, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x64, 0xF4, + 0x40, 0xF0, 0xE7, 0xEF, 0x0F, 0x9F, 0x6D, 0xF4, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6D, 0xF4, 0x40, 0xF0, 0xB3, 0xF0, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x76, 0xF4, 0x40, 0xF0, 0xBE, 0xF0, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x7F, 0xF4, 0x44, 0x92, 0x0F, 0x9F, 0x83, 0xF4, 0x41, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0x85, 0xF4, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF4, 0x11, 0x93, + 0x28, 0xBC, 0x01, 0xD2, 0x42, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x99, 0xF4, 0x40, 0xF0, 0xC6, 0xF0, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA2, 0xF4, + 0x40, 0xF0, 0xD5, 0xF0, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF4, 0x40, 0xF0, 0xE5, 0xF0, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x40, 0xF0, 0xE8, 0xF3, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; +#elif defined(ZD1211B) +={ + 0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0x1D, 0xEE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, + 0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0xFE, 0xF3, 0x41, 0xEE, 0x98, 0x9A, 0x01, 0x00, 0x1F, 0xEC, 0x00, 0x00, + 0xB2, 0xF8, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, + 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x98, 0x9A, 0x01, 0xF1, 0x05, 0xF1, 0x49, 0xF1, 0x09, 0xF1, 0x49, 0xF1, 0x0D, 0xF1, 0x17, 0xF1, 0x49, 0xF1, 0x21, 0xF1, 0x2B, 0xF1, 0x35, 0xF1, 0x3F, 0xF1, + 0x1E, 0xF2, 0x22, 0xF2, 0x2D, 0xF2, 0x6C, 0xF2, 0x6C, 0xF2, 0x57, 0xF2, 0x62, 0xF2, 0x00, 0x00, 0x27, 0xEF, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, + 0x0F, 0x9F, 0xB8, 0xEE, 0x11, 0x93, 0x01, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB8, 0xEE, 0x11, 0x93, 0x02, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB8, 0xEE, 0x4F, 0x96, 0x1B, 0xD7, + 0x30, 0xBC, 0x1A, 0xD5, 0x80, 0xBC, 0x0C, 0x99, 0x86, 0x00, 0x1C, 0xD9, 0x90, 0xBC, 0x46, 0x94, 0x0C, 0x69, 0x6F, 0x43, 0x01, 0x97, 0xD4, 0xD4, 0x0B, 0x07, 0xFF, 0xFF, 0x40, 0x46, 0x02, 0x3E, + 0x0F, 0x9F, 0x6B, 0xEE, 0x42, 0x96, 0x1B, 0xD7, 0x61, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x60, 0xBC, 0x0A, 0x65, 0xBF, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC4, 0xD2, 0x0A, 0x95, + 0xF2, 0x00, 0x1A, 0xD5, 0x31, 0xBC, 0x52, 0x98, 0x1C, 0xD9, 0x82, 0xBC, 0x09, 0x93, 0x82, 0x00, 0x19, 0xD3, 0x92, 0xBC, 0x40, 0x94, 0x1A, 0xD5, 0x42, 0xBC, 0x0B, 0xA3, 0x20, 0x00, 0x19, 0xD3, + 0x43, 0xBC, 0x0B, 0x97, 0xFE, 0x00, 0x1B, 0xD7, 0x32, 0xBC, 0x53, 0x98, 0x1C, 0xD9, 0x8E, 0xBC, 0x09, 0x93, 0x83, 0x00, 0x19, 0xD3, 0x9E, 0xBC, 0x0A, 0x95, 0x40, 0x00, 0x1A, 0xD5, 0x44, 0xBC, + 0x60, 0x96, 0x1B, 0xD7, 0x45, 0xBC, 0x0C, 0x99, 0xFF, 0x00, 0x1C, 0xD9, 0x33, 0xBC, 0x44, 0x96, 0x1B, 0xD7, 0x8F, 0xBC, 0x19, 0xD3, 0x9F, 0xBC, 0x40, 0x98, 0x1C, 0xD9, 0x67, 0xBC, 0x1A, 0xD5, + 0x66, 0xBC, 0x0A, 0x65, 0xB9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC3, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, + 0x02, 0x5E, 0x0F, 0x9F, 0x25, 0xEF, 0x11, 0x93, 0x01, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x25, 0xEF, 0x11, 0x93, 0x02, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x25, 0xEF, 0x4F, 0x96, + 0x1B, 0xD7, 0x30, 0xBC, 0x1A, 0xD5, 0x80, 0xBC, 0x0A, 0x95, 0x86, 0x00, 0x1A, 0xD5, 0x90, 0xBC, 0x46, 0x94, 0x0B, 0x67, 0x6F, 0x43, 0xD3, 0xD4, 0x09, 0x03, 0xFF, 0xFF, 0x40, 0x42, 0x02, 0x3E, + 0x0F, 0x9F, 0xDB, 0xEE, 0x40, 0x96, 0x1B, 0xD7, 0x61, 0xBC, 0x0C, 0x99, 0x40, 0x00, 0x1C, 0xD9, 0x60, 0xBC, 0x0A, 0x65, 0xBF, 0x43, 0xC2, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC2, 0xD2, 0x0A, 0x95, + 0xF2, 0x00, 0x1A, 0xD5, 0x31, 0xBC, 0x52, 0x96, 0x1B, 0xD7, 0x82, 0xBC, 0x09, 0x93, 0x82, 0x00, 0x19, 0xD3, 0x92, 0xBC, 0x1C, 0xD9, 0x42, 0xBC, 0x40, 0x94, 0x0A, 0xA7, 0x20, 0x00, 0x1B, 0xD7, + 0x43, 0xBC, 0x0A, 0x95, 0xFE, 0x00, 0x1A, 0xD5, 0x32, 0xBC, 0x53, 0x94, 0x1A, 0xD5, 0x8E, 0xBC, 0x0A, 0x95, 0x83, 0x00, 0x1A, 0xD5, 0x9E, 0xBC, 0x1C, 0xD9, 0x44, 0xBC, 0x1B, 0xD7, 0x45, 0xBC, + 0x0B, 0x97, 0xFF, 0x00, 0x1B, 0xD7, 0x33, 0xBC, 0x44, 0x94, 0x1A, 0xD5, 0x8F, 0xBC, 0x19, 0xD3, 0x9F, 0xBC, 0x40, 0x96, 0x1B, 0xD7, 0x67, 0xBC, 0x1C, 0xD9, 0x66, 0xBC, 0x0A, 0x65, 0xB9, 0x43, + 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x9F, 0xFF, 0xC3, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x95, 0x09, 0xEC, 0x02, 0x97, 0xC3, 0x92, 0x71, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x6E, 0xEF, 0x02, 0x8E, 0x0F, 0x9F, 0x3B, 0xEF, 0x70, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x41, 0xEF, 0x0F, 0x9F, 0x96, 0xEF, 0x72, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x60, 0xEF, 0x0F, 0x9F, + 0x96, 0xEF, 0x0A, 0x03, 0x03, 0x00, 0xC1, 0x96, 0x1B, 0xD7, 0x0E, 0xEC, 0x0A, 0x03, 0x01, 0x00, 0xC1, 0x94, 0x1A, 0xD5, 0x0D, 0xEC, 0x0A, 0x45, 0xFF, 0xED, 0x02, 0x8E, 0x0F, 0x9F, 0x5B, 0xEF, + 0x0B, 0x03, 0x01, 0x00, 0x61, 0x93, 0x11, 0x03, 0x4D, 0xEC, 0x19, 0xD3, 0x4D, 0xEC, 0x0A, 0x03, 0x00, 0xDE, 0x19, 0xD3, 0x0D, 0xEC, 0x42, 0x98, 0x1C, 0xD9, 0x11, 0xEC, 0x0F, 0x9F, 0x96, 0xEF, + 0x0A, 0x03, 0x03, 0x00, 0xC1, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x0A, 0x03, 0x01, 0x00, 0xC1, 0x92, 0x19, 0xD3, 0x0D, 0xEC, 0x40, 0xF0, 0x2F, 0xF3, 0x0F, 0x9F, 0x96, 0xEF, 0x41, 0x92, 0x19, 0xD3, + 0x0C, 0xBC, 0x42, 0x94, 0x1A, 0xD5, 0xF0, 0xBD, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x12, 0x95, 0x4D, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x94, 0xEF, 0x02, 0x43, + 0x02, 0x0E, 0x0F, 0x9F, 0x8F, 0xEF, 0x0B, 0x97, 0x00, 0x10, 0x0A, 0x65, 0x00, 0x12, 0xD2, 0x98, 0xD3, 0xD8, 0x41, 0x02, 0x11, 0x43, 0x4D, 0xEC, 0x02, 0x1E, 0x0F, 0x9F, 0x87, 0xEF, 0x40, 0x92, + 0x19, 0xD3, 0x4D, 0xEC, 0x0F, 0x9F, 0x96, 0xEF, 0x0F, 0x9F, 0x95, 0xF8, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, + 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, 0x09, 0x93, 0xFF, 0x00, 0x19, 0xD3, 0x12, 0xBC, 0x19, 0xD3, 0x13, 0xBC, 0x19, 0xD3, 0x14, 0xBC, 0x19, 0xD3, 0x16, 0xBC, 0x19, 0xD3, 0x17, 0xBC, 0x0C, 0x69, + 0x00, 0x44, 0x04, 0x93, 0xC1, 0x94, 0x0A, 0xB5, 0xEF, 0xFF, 0xC5, 0xD4, 0x41, 0x94, 0x1A, 0xD5, 0x02, 0xBC, 0x0B, 0x67, 0xEF, 0x43, 0x03, 0x95, 0xC2, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC3, 0xD2, + 0xC5, 0x96, 0x0B, 0xA5, 0x20, 0x00, 0xC4, 0xD4, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x19, 0xD3, 0x11, 0xEC, + 0x19, 0xD3, 0x00, 0xEC, 0x19, 0xD3, 0x01, 0xEC, 0x19, 0xD3, 0x02, 0xEC, 0x19, 0xD3, 0x0F, 0xEC, 0x19, 0xD3, 0x10, 0xEC, 0x19, 0xD3, 0x1C, 0xEC, 0x40, 0xF0, 0x98, 0xEF, 0x40, 0x92, 0x19, 0xD3, + 0x08, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x12, 0xEC, 0x41, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0x4A, 0xF0, 0x41, 0x94, 0x1A, 0xD5, 0x12, 0xEC, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x21, 0xF0, 0x09, 0x93, 0x00, 0x02, 0x19, 0xD3, 0x03, 0xEC, + 0x09, 0x93, 0x31, 0xF8, 0x19, 0xD3, 0x13, 0xEC, 0x02, 0x97, 0x01, 0x99, 0x03, 0x95, 0x09, 0x93, 0x16, 0xEC, 0x01, 0x05, 0x03, 0x93, 0x04, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x43, 0x46, + 0x02, 0x9E, 0x0F, 0x9F, 0x06, 0xF0, 0x11, 0x93, 0x39, 0xF8, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x1A, 0xEC, 0x09, 0x93, 0x1F, 0xEC, 0x19, 0xD3, 0x14, 0xEC, 0x09, 0x93, 0x36, 0xEC, 0x0F, 0x9F, + 0x44, 0xF0, 0x09, 0x93, 0x40, 0x00, 0x19, 0xD3, 0x03, 0xEC, 0x09, 0x93, 0x31, 0xF8, 0x19, 0xD3, 0x13, 0xEC, 0x02, 0x97, 0x01, 0x99, 0x03, 0x95, 0x09, 0x93, 0x16, 0xEC, 0x01, 0x05, 0x03, 0x93, + 0x04, 0x03, 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x06, 0x43, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0x2B, 0xF0, 0x11, 0x93, 0x39, 0xF8, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x1A, 0xEC, 0x09, 0x93, 0x36, 0xEC, + 0x19, 0xD3, 0x14, 0xEC, 0x09, 0x93, 0x1F, 0xEC, 0x19, 0xD3, 0x15, 0xEC, 0x09, 0x93, 0x0A, 0x06, 0x19, 0xD3, 0x16, 0xEC, 0x13, 0x97, 0x0C, 0xBC, 0x0B, 0xB3, 0x80, 0x00, 0x0A, 0x95, 0x06, 0xEC, + 0xD2, 0xD2, 0x0B, 0xB3, 0x60, 0x00, 0xC2, 0xD2, 0x09, 0x93, 0x06, 0xEC, 0x09, 0x05, 0x02, 0x00, 0x0B, 0xB3, 0x03, 0x00, 0xC2, 0xD2, 0xC5, 0x92, 0x11, 0x93, 0x0E, 0xBC, 0x19, 0xD3, 0x09, 0xEC, + 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, 0x0A, 0xEC, 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, 0x0B, 0xEC, + 0x14, 0x99, 0x0C, 0xBC, 0x13, 0x97, 0x0E, 0xBC, 0x5B, 0x97, 0x5B, 0x97, 0x1B, 0x09, 0x0C, 0xEC, 0x11, 0x93, 0x07, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x8D, 0xF0, 0x09, 0x43, 0x40, 0x00, + 0x02, 0x5E, 0x0F, 0x9F, 0x93, 0xF0, 0x11, 0x93, 0x1B, 0xEC, 0x41, 0x22, 0x0A, 0x95, 0x8B, 0xF0, 0x88, 0xD4, 0x88, 0xDC, 0x91, 0x9A, 0x0F, 0x9F, 0x96, 0xF0, 0x40, 0xF0, 0xF5, 0xF0, 0x40, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0x96, 0xF0, 0x42, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0x2F, 0xF3, 0x40, 0x92, 0x19, 0xD3, + 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x11, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xF0, 0x40, 0xF0, 0x7A, 0xF3, 0x40, 0x92, 0x19, 0xD3, + 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x11, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0x0B, 0xBC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x44, 0x92, 0x19, 0xD3, 0x0B, 0xBC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFD, 0xFF, 0xC2, 0xD2, + 0x40, 0x92, 0x19, 0xD3, 0x12, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x09, 0x93, + 0x70, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xF7, 0xFF, 0xC2, 0xD2, 0x09, 0x93, + 0x6D, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x09, 0xEC, 0x4B, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x49, 0xF1, 0x09, 0x03, 0x34, 0xEE, + 0xC1, 0x9E, 0x40, 0xF0, 0x4C, 0xF1, 0x0F, 0x9F, 0x4A, 0xF1, 0x40, 0xF0, 0x62, 0xF1, 0x0F, 0x9F, 0x4A, 0xF1, 0x40, 0xF0, 0x76, 0xF1, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0xEE, 0xF1, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0x02, 0xF2, 0x0F, 0x9F, + 0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0x7E, 0xF2, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, + 0x49, 0xF1, 0x40, 0xF0, 0x8D, 0xF2, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0xCE, 0xF2, 0x0F, 0x9F, 0x4A, 0xF1, 0x11, 0x93, + 0x0F, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x49, 0xF1, 0x40, 0xF0, 0xF4, 0xF2, 0x0F, 0x9F, 0x4A, 0xF1, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, + 0x08, 0xEC, 0x4F, 0xB2, 0x09, 0x03, 0x1C, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x0E, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, + 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, 0x41, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x73, 0xF1, 0x40, 0x92, 0x19, 0xD3, 0x1E, 0xEC, 0x41, 0x92, 0x19, 0xD3, + 0x10, 0xEC, 0x0F, 0x9F, 0x74, 0xF1, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x0A, 0xEC, 0x01, 0x95, 0xC2, 0x96, 0x41, 0x46, 0x02, 0x4E, 0x0F, 0x9F, + 0x8F, 0xF1, 0x02, 0x1E, 0x0F, 0x9F, 0x8A, 0xF1, 0x42, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0x99, 0xF1, 0x0F, 0x9F, 0xE0, 0xF1, 0x41, 0x96, 0x1B, 0xD7, 0x10, 0xEC, 0x0F, 0x9F, 0xE3, 0xF1, 0x0A, 0x65, + 0x00, 0x44, 0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x1B, 0xD7, 0x10, 0xEC, 0x0F, 0x9F, 0xE3, 0xF1, 0x41, 0x02, 0xC1, 0x92, 0x79, 0x93, 0x79, 0x93, 0x44, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0xB8, 0xF1, 0x02, 0x9E, 0x0F, 0x9F, 0xAA, 0xF1, 0x45, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE3, 0xF1, 0x0F, 0x9F, 0xE0, 0xF1, 0x41, 0x42, 0x02, 0x1E, 0x0F, 0x9F, 0xE0, 0xF1, 0x09, 0x03, 0x4D, 0xEC, + 0xC1, 0x92, 0x19, 0xD3, 0x08, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0xE3, 0xF1, 0x0A, 0x65, 0xF8, 0x43, 0x50, 0x98, 0x02, 0x97, 0xC3, 0xD8, 0x09, 0x63, 0xF5, 0x43, 0x41, 0x98, + 0x01, 0x97, 0xC3, 0xD8, 0x40, 0x94, 0x02, 0x93, 0x0C, 0x99, 0x51, 0xEC, 0x04, 0x03, 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0x0C, 0xBC, 0xC1, 0x92, 0x79, 0x93, 0x79, 0x93, 0x19, 0xD3, 0x0E, 0xBC, + 0x41, 0x04, 0x5A, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0xC3, 0xF1, 0x0C, 0x99, 0x7E, 0x00, 0x1C, 0xD9, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x19, 0xD3, 0x0B, 0xBC, 0x0F, 0x9F, 0xE3, 0xF1, + 0x40, 0x92, 0x0F, 0x9F, 0xEC, 0xF1, 0x11, 0x93, 0x10, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xEB, 0xF1, 0x19, 0xD3, 0x1E, 0xEC, 0x41, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x11, 0x93, 0x0A, 0xEC, 0x09, 0x43, 0xFF, 0x00, 0x02, 0x8E, 0x0F, 0x9F, 0xFF, 0xF1, 0x19, 0xD3, 0x01, 0xBC, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0x00, 0xF2, 0x40, 0x92, + 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x14, 0xEC, 0x0A, 0x95, 0x09, 0x02, 0xC1, 0xD4, 0x11, 0x93, 0x15, 0xEC, 0x0B, 0x97, 0x09, 0x07, 0xC1, 0xD6, 0x0A, 0x95, + 0x0A, 0xEC, 0x02, 0x97, 0xC3, 0x92, 0x79, 0x93, 0x79, 0x93, 0x09, 0x03, 0xFF, 0xFF, 0x46, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x6C, 0xF2, 0x09, 0x03, 0x40, 0xEE, 0xC1, 0x9E, 0x11, 0x93, 0x13, 0xEC, + 0x0F, 0x9F, 0x59, 0xF2, 0xC2, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x6C, 0xF2, 0x11, 0x93, 0x14, 0xEC, 0x0F, 0x9F, 0x64, 0xF2, 0xC2, 0x92, 0x09, 0xB3, 0xFF, 0x00, + 0x50, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x49, 0xF2, 0x02, 0x8E, 0x0F, 0x9F, 0x3D, 0xF2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x43, 0xF2, 0x0F, 0x9F, 0x6C, 0xF2, 0x60, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0x4F, 0xF2, 0x0F, 0x9F, 0x6C, 0xF2, 0x09, 0x93, 0x3A, 0xF8, 0x19, 0xD3, 0x0D, 0xEC, 0x0F, 0x9F, 0x53, 0xF2, 0x0A, 0x95, 0x6F, 0xF8, 0x1A, 0xD5, 0x0D, 0xEC, 0x0F, 0x9F, 0x53, 0xF2, 0x0B, 0x97, + 0x7A, 0xF8, 0x1B, 0xD7, 0x0D, 0xEC, 0x11, 0x93, 0x0D, 0xEC, 0x0F, 0x9F, 0x5B, 0xF2, 0x09, 0x93, 0x16, 0xEC, 0x19, 0xD3, 0x0D, 0xEC, 0xC1, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x19, 0xD3, 0x0E, 0xEC, + 0x0F, 0x9F, 0x6F, 0xF2, 0x11, 0x93, 0x15, 0xEC, 0x19, 0xD3, 0x0D, 0xEC, 0x41, 0x02, 0xC1, 0x92, 0x19, 0xD3, 0x0E, 0xEC, 0x0F, 0x9F, 0x6F, 0xF2, 0x40, 0x92, 0x0F, 0x9F, 0x7C, 0xF2, 0x11, 0x93, + 0x0E, 0xEC, 0x12, 0x95, 0x0C, 0xEC, 0x02, 0x43, 0x02, 0x9E, 0x0F, 0x9F, 0x79, 0xF2, 0x1A, 0xD5, 0x0E, 0xEC, 0x40, 0xF0, 0x2F, 0xF3, 0x41, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x11, 0x93, 0x00, 0xEC, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, + 0x11, 0x93, 0x0A, 0xEC, 0x09, 0xB5, 0xFF, 0x00, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xA3, 0xF2, 0x1A, 0xD5, 0x00, 0xEC, 0x0A, 0x65, 0xFF, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x7F, 0xFF, + 0xC2, 0xD2, 0x0F, 0x9F, 0xC9, 0xF2, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB8, 0xF2, 0x41, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0xB2, 0xF2, 0x40, 0x92, + 0x0F, 0x9F, 0xCC, 0xF2, 0x1A, 0xD5, 0x00, 0xEC, 0x40, 0xF0, 0x49, 0xEE, 0x0F, 0x9F, 0xC0, 0xF2, 0x41, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0xCC, 0xF2, 0x1A, 0xD5, 0x00, 0xEC, 0x40, 0xF0, 0xBA, 0xEE, + 0x0A, 0x65, 0xFF, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, 0x40, 0xF0, 0xC7, 0xF3, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x11, 0x93, 0x01, 0xBC, 0x09, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF2, 0xF2, 0x12, 0x95, 0x00, 0xEC, 0x41, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xE5, 0xF2, 0x11, 0x93, + 0x0B, 0xEC, 0x41, 0x42, 0x02, 0x9E, 0x0F, 0x9F, 0xE8, 0xF2, 0x40, 0x92, 0x0F, 0x9F, 0xF2, 0xF2, 0x11, 0x93, 0x02, 0xEC, 0x19, 0xD3, 0x0C, 0xBC, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x1A, 0xD5, + 0x10, 0xEC, 0x02, 0x93, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x01, 0xBC, 0x09, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x2C, 0xF3, 0x13, 0x97, + 0x0B, 0xEC, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x2C, 0xF3, 0x11, 0x93, 0x0A, 0xEC, 0x09, 0xB5, 0xFF, 0x00, 0x11, 0x93, 0x14, 0xEC, 0x46, 0x02, 0xC1, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x01, 0x45, + 0x02, 0x5E, 0x0F, 0x9F, 0x2C, 0xF3, 0x1B, 0xD7, 0x01, 0xEC, 0x1A, 0xD5, 0x02, 0xEC, 0x11, 0x93, 0x00, 0xBC, 0x09, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x23, 0xF3, 0x40, 0xF0, + 0x49, 0xEE, 0x0F, 0x9F, 0x25, 0xF3, 0x40, 0xF0, 0xBA, 0xEE, 0x40, 0xF0, 0xC7, 0xF3, 0x41, 0x92, 0x19, 0xD3, 0x10, 0xEC, 0x0F, 0x9F, 0x2D, 0xF3, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x0E, 0xEC, 0x09, 0x93, 0x40, 0x00, 0x7F, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x3C, 0xF3, 0x02, 0x93, 0x1A, 0x23, 0x0E, 0xEC, 0x40, 0x98, 0x61, 0x95, + 0x02, 0xD4, 0x09, 0xB7, 0x01, 0x00, 0xC5, 0xD6, 0x43, 0xB2, 0x01, 0xD2, 0x0F, 0x9F, 0x56, 0xF3, 0x12, 0x95, 0x0D, 0xEC, 0x02, 0x93, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0xD2, 0x92, 0x79, 0x93, + 0x79, 0x93, 0x19, 0xD3, 0x0E, 0xBC, 0x1A, 0xD5, 0x0D, 0xEC, 0x41, 0x08, 0x02, 0x48, 0x02, 0x1E, 0x0F, 0x9F, 0x48, 0xF3, 0xC5, 0x94, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x64, 0xF3, 0x11, 0x93, + 0x0D, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x0C, 0xBC, 0x01, 0x96, 0x40, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0x6C, 0xF3, 0x42, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x11, 0x93, 0x0E, 0xEC, 0x40, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0x77, 0xF3, 0x19, 0xD3, 0x11, 0xEC, 0x41, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x0E, 0xEC, + 0x0A, 0x95, 0x40, 0x00, 0x7F, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x87, 0xF3, 0x01, 0x95, 0x19, 0x25, 0x0E, 0xEC, 0x40, 0x98, 0x0A, 0x03, 0x01, 0x00, 0x01, 0xD2, 0x43, 0xB4, 0xC5, 0xD4, 0x0F, 0x9F, + 0xAB, 0xF3, 0x11, 0x93, 0x0D, 0xEC, 0x12, 0x95, 0x0C, 0xBC, 0xC1, 0xD4, 0x12, 0x95, 0x0D, 0xEC, 0x11, 0x93, 0x0E, 0xBC, 0x59, 0x93, 0x59, 0x93, 0x02, 0x97, 0xC3, 0x02, 0xC2, 0xD2, 0x11, 0x93, + 0x05, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAA, 0xF3, 0x11, 0x93, 0x0D, 0xEC, 0x41, 0x02, 0x19, 0xD3, 0x0D, 0xEC, 0x41, 0x08, 0x01, 0x94, 0x62, 0x93, 0x01, 0x49, 0x02, 0x1E, 0x0F, 0x9F, + 0x91, 0xF3, 0xC5, 0x96, 0x40, 0x46, 0x02, 0x4E, 0x0F, 0x9F, 0xB9, 0xF3, 0x41, 0x92, 0x19, 0xD3, 0xF0, 0xBD, 0x11, 0x93, 0x0E, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xC4, 0xF3, 0x19, 0xD3, + 0x11, 0xEC, 0x41, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x41, 0x96, 0x0A, 0x65, 0xBF, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, + 0xEF, 0xFF, 0xC4, 0xD2, 0x42, 0x04, 0x41, 0x06, 0x4A, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xCD, 0xF3, 0x41, 0x96, 0x0A, 0x65, 0x9F, 0x43, 0x02, 0x99, 0xC4, 0x92, 0x09, 0xB3, 0xEF, 0xFF, 0xC4, 0xD2, + 0x42, 0x04, 0x41, 0x06, 0x4A, 0x46, 0x02, 0x9E, 0x0F, 0x9F, 0xDB, 0xF3, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x08, 0x14, 0x19, 0xD3, 0x01, 0x84, 0x0A, 0x65, + 0xFE, 0x7B, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xE0, 0xC2, 0xD2, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x09, 0x93, 0x00, 0x02, 0x19, 0xD3, 0x44, 0x96, 0x0A, 0x65, 0x80, 0x69, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x7F, 0xFF, 0xC2, 0xD2, 0x55, 0x92, 0x19, 0xD3, 0x2C, 0x90, 0x0B, 0x97, + 0xFE, 0x00, 0x1B, 0xD7, 0x40, 0x85, 0x09, 0x93, 0x4C, 0x00, 0x19, 0xD3, 0x05, 0x84, 0x09, 0x63, 0x00, 0x14, 0x40, 0x94, 0xD1, 0xD4, 0x09, 0x43, 0xFF, 0xEC, 0x02, 0x9E, 0x0F, 0x9F, 0x1A, 0xF4, + 0x40, 0x96, 0x1B, 0xD7, 0x12, 0xEC, 0x40, 0xF0, 0xC7, 0xEF, 0x09, 0x93, 0x47, 0xEE, 0x19, 0xD3, 0x1B, 0xEC, 0x41, 0x96, 0x1B, 0xD7, 0x05, 0xEC, 0x11, 0x93, 0x20, 0xBC, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x2C, 0xF4, 0xC8, 0xD2, 0x40, 0xF0, 0x3A, 0xF4, 0x41, 0x00, 0x0F, 0x9F, 0x2C, 0xF4, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, + 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x88, 0xF4, 0x12, 0x95, 0x21, 0xBC, 0x01, 0xD4, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x50, 0xF4, 0x40, 0xF0, 0x99, 0xF0, + 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x59, 0xF4, 0x40, 0xF0, 0xA3, 0xF0, 0x01, 0x94, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x64, 0xF4, + 0x40, 0xF0, 0xE7, 0xEF, 0x0F, 0x9F, 0x6D, 0xF4, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6D, 0xF4, 0x40, 0xF0, 0xB3, 0xF0, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x76, 0xF4, 0x40, 0xF0, 0xBE, 0xF0, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x7F, 0xF4, 0x44, 0x92, 0x0F, 0x9F, 0x83, 0xF4, 0x41, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0x85, 0xF4, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x94, 0x1A, 0xD5, 0x10, 0xEC, 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF4, 0x11, 0x93, + 0x28, 0xBC, 0x01, 0xD2, 0x42, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x99, 0xF4, 0x40, 0xF0, 0xC6, 0xF0, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA2, 0xF4, + 0x40, 0xF0, 0xD5, 0xF0, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAB, 0xF4, 0x40, 0xF0, 0xE5, 0xF0, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x40, 0xF0, 0xE8, 0xF3, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdmmrx.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdmmrx.h @@ -1,27 +1,3 @@ -/* $Id: zdmmrx.h,v 1.3 2005/03/17 09:15:16 akw Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZDMMRX_H #define _ZDMMRX_H --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdusb.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdusb.c @@ -1,28 +1,34 @@ -/* $Id: zdusb.c,v 1.18 2005/04/15 22:34:32 sagamore Exp $ - * Implements the functions of the ZyDAS zd1211 MAC - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +/* src/zdusb.c +* +* Implements the functions of the ZyDAS zd1211 MAC +* +* Copyright (C) 2004 ZyDAS Inc. All Rights Reserved. +* -------------------------------------------------------------------- +* +* +* +* The contents of this file are subject to the Mozilla Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/MPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* Alternatively, the contents of this file may be used under the +* terms of the GNU Public License version 2 (the "GPL"), in which +* case the provisions of the GPL are applicable instead of the +* above. If you wish to allow the use of your version of this file +* only under the terms of the GPL and not to allow others to use +* your version of this file under the MPL, indicate your decision +* by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL. If you do not delete +* the provisions above, a recipient may use your version of this +* file under either the MPL or the GPL. +* +* -------------------------------------------------------------------- */ #include @@ -31,6 +37,7 @@ #endif #include + #include #include "zd1205.h" @@ -38,273 +45,424 @@ #include "zddebug.h" #include "zdversion.h" #include "zd1211.h" -#include "zddevlist.h" -#define ZD1211_DBG_LEVEL 1 +#define ZD1211_DBG_LEVEL 1 + +MODULE_AUTHOR("Yarco Yang"); +MODULE_DESCRIPTION("ZyDAS 802.11b/g USB Wireless LAN adapter"); +MODULE_LICENSE("GPL"); +#ifdef ZD1211 static const char driver_name[] = "zd1211"; +#elif defined(ZD1211B) +static const char driver_name[] = "zd1211b"; +#endif + + +/* table of devices that work with this driver */ +static struct usb_device_id zd1211_ids [] = + { +/* ath_desc: synched USB IDs with website */ +#ifdef ZD1211B + { USB_DEVICE(0x0053, 0x5301) }, + { USB_DEVICE(0x0053, 0x5302) }, + { USB_DEVICE(0x050d, 0x4050) }, + { USB_DEVICE(0x050d, 0x705c) }, + { USB_DEVICE(0x0586, 0x340f) }, + { USB_DEVICE(0x079b, 0x0062) }, + { USB_DEVICE(0x083a, 0x4505) }, + { USB_DEVICE(0x083a, 0xe501) }, + { USB_DEVICE(0x0ace, 0x1215) }, + { USB_DEVICE(0x0ace, 0xa215) }, + { USB_DEVICE(0x0baf, 0x0121) }, + { USB_DEVICE(0x0cde, 0x001a) }, + { USB_DEVICE(0x0df6, 0x9075) }, + { USB_DEVICE(0x0f88, 0x3014) }, + { USB_DEVICE(0x1233, 0x0471) }, + { USB_DEVICE(0x157e, 0x300d) }, + { USB_DEVICE(0x1582, 0x6003) }, +#elif defined(ZD1211) + { USB_DEVICE(0x0105, 0x145f) }, + { USB_DEVICE(0x0586, 0x3401) }, + { USB_DEVICE(0x0586, 0x3409) }, + { USB_DEVICE(0x0675, 0x0550) }, + { USB_DEVICE(0x079b, 0x004a) }, + { USB_DEVICE(0x07b8, 0x6001) }, + { USB_DEVICE(0x0ace, 0x1211) }, + { USB_DEVICE(0x0ace, 0xa211) }, + { USB_DEVICE(0x0b05, 0x170c) }, + { USB_DEVICE(0x0b3b, 0x1630) }, + { USB_DEVICE(0x0b3b, 0x5630) }, + { USB_DEVICE(0x0b3b, 0x6630) }, + { USB_DEVICE(0x0cde, 0x0011) }, + { USB_DEVICE(0x0df6, 0x9071) }, + { USB_DEVICE(0x126f, 0xa006) }, + { USB_DEVICE(0x129b, 0x1666) }, + { USB_DEVICE(0x1435, 0x0711) }, + { USB_DEVICE(0x14ea, 0xab13) }, + { USB_DEVICE(0x157e, 0x300a) }, + { USB_DEVICE(0x157e, 0x300b) }, + { USB_DEVICE(0x157e, 0x3204) }, + { USB_DEVICE(0x2019, 0xc007) }, + { USB_DEVICE(0x2019, 0xc008) }, + { USB_DEVICE(0x2019, 0xc009) }, + { USB_DEVICE(0x5173, 0x1809) }, + { USB_DEVICE(0x6891, 0xa727) }, +#endif + { } /* Terminating entry */ + }; + -struct usb_device_id zd1211_ids [] = { - ZD1211_IDS -}; - -MODULE_AUTHOR(DRIVER_AUTHOR); -MODULE_DESCRIPTION(DRIVER_DESC); -MODULE_LICENSE(DRIVER_LICENSE); MODULE_DEVICE_TABLE(usb, zd1211_ids); -/* - * This module uses /dev/wlan. The MODULE_SUPPORTED_DEVICE macro might - * be used in the future to help automatic configuration of modules, but is - * currently unused other than for documentation purposes. - */ -MODULE_SUPPORTED_DEVICE("wlan"); -extern struct net_device *g_dev; -/** - * zd1211_probe - * is called when an appropriate device is detected - */ +extern struct net_device *g_dev; #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -static void *zd1211_probe(struct usb_device *usb_dev, unsigned int ifnum,const struct usb_device_id *id) -{ - struct usb_interface *interface = &usb_dev->actconfig->interface[ifnum]; +static void *zd1211_probe(struct usb_device *dev, unsigned int ifnum, + const struct usb_device_id *id) #else -static int zd1211_probe(struct usb_interface *interface,const struct usb_device_id *id) +static int zd1211_probe(struct usb_interface *interface, + const struct usb_device_id *id) +#endif { - struct usb_device *usb_dev = interface_to_usbdev(interface); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + struct usb_interface *interface = &dev->actconfig->interface[ifnum]; +#else + + struct usb_device *dev = interface_to_usbdev(interface); + int locked; #endif - struct net_device *net = NULL; - struct zd1205_private *macp = NULL; - int vendor_id, product_id; - int dev_index = id - zd1211_ids; - int result = 0; + struct net_device *net = NULL; + struct zd1205_private *macp = NULL; + int vendor_id, product_id; + int dev_index = id - zd1211_ids; + int result = 0; + + /* ath_desc: workaround for detecting device multiple times */ + /* Driver doesn't support multiple devices:-( When it does, + * global variables like g_dev will go, and so will this test. */ + if (g_dev) { + printk(KERN_ERR "%s is called again. Either you have multiple zd1211 devices, which\n" + "is unsupported, or your device is doubly detected, which is a bug.\n", __FUNCTION__); + result = -EBUSY; + goto exit; + } + + //char serial_number[30]; #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) - usb_get_dev(usb_dev); + + usb_get_dev(dev); #endif + + /* ath_desc: bigendian support */ + /* ath: USB config fields are le16 on kernels >= 2.6.11 only */ + /* ath: see Greg Kroah-Hartman, http://kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.11-rc1 */ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)) - vendor_id = le16_to_cpu(usb_dev->descriptor.idVendor); - product_id = le16_to_cpu(usb_dev->descriptor.idProduct); + vendor_id = le16_to_cpu(dev->descriptor.idVendor); + product_id = le16_to_cpu(dev->descriptor.idProduct); #else - vendor_id = usb_dev->descriptor.idVendor; - product_id = usb_dev->descriptor.idProduct; + vendor_id = dev->descriptor.idVendor; + product_id = dev->descriptor.idProduct; #endif - printk(KERN_NOTICE "zd1211 device (0x%04x,0x%04x) found.\n", vendor_id,product_id); - if (usb_dev->speed == USB_SPEED_HIGH) - printk(KERN_NOTICE "zd1211 device on USB 2.0 Host\n"); - else - printk(KERN_NOTICE "zd1211 device on USB 1.1 Host\n"); - - // memset(serial_number, 0, 30); - // usb_string(usb_dev, usb_dev->descriptor.iSerialNumber, serial_number, 29); - // printk("Device serial number is %s\n", serial_number); -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - if (usb_set_configuration(usb_dev, usb_dev->config[0].bConfigurationValue)) { - printk(KERN_ERR "usb_set_configuration() failed\n"); - result = -EIO; - goto fail; - } -#endif - - if (!(macp = kmalloc(sizeof(struct zd1205_private), GFP_KERNEL))) { - printk(KERN_ERR "zd1211: Out of memory while allocating device structure\n"); - result = -ENOMEM; - goto fail; - } - memset(macp, 0, sizeof(struct zd1205_private)); -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - usb_inc_dev_use(usb_dev); +#ifdef HMAC_DEBUG + + printk(KERN_NOTICE "vendor_id = %04x\n", vendor_id); + printk(KERN_NOTICE "product_id = %04x\n", product_id); + + if (dev->speed == USB_SPEED_HIGH) + printk(KERN_NOTICE "USB 2.0 Host\n"); + else + printk(KERN_NOTICE "USB 1.1 Host\n"); #endif - net = alloc_etherdev(0); - //net = alloc_etherdev(sizeof (struct zd1205_private)); // kernel 2.4 - if (!net) { - printk(KERN_ERR "zd1211: Not able to allocate etherdev struct\n"); - result = -ENOMEM; - goto fail1; - } - - g_dev = net; // save this for CBs use - net->priv = macp; - strcpy(net->name, "wlan%d"); // @rjp-make it appear as a wlan node - macp->device = net; - macp->usb = usb_dev; - SET_MODULE_OWNER(net); - macp->dev_index = dev_index; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)) - macp->release = le16_to_cpu(usb_dev->descriptor.bcdDevice); + //memset(serial_number, 0, 30); + //usb_string(dev, dev->descriptor.iSerialNumber, serial_number, 29); + //printk("Device serial number is %s\n", serial_number); + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) + // The running firmware seems to "block" ep0. + // To avoid timeouts during insmod on ep0 and + // the inability to subsequently reload the driver properly, + // put the device in its initial state. + // Since resetting the device is probably a bit crude, + // we do it before the device gets to do any useful work. + // Reset for kernels < 2.5.0 is done on exit: + // 2.4.x's hotplug panics when resetting in init + // 2.5.x does not allow resets on exit +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10)) + // 2.6.10 and newer provide usb_lock_device... + locked = usb_lock_device_for_reset(interface_to_usbdev(interface), interface); + if (locked >= 0) + usb_reset_device(interface_to_usbdev(interface)); + if (locked > 0) + usb_unlock_device(interface_to_usbdev(interface)); #else - macp->release = usb_dev->descriptor.bcdDevice; + usb_reset_device(interface_to_usbdev(interface)); +#endif +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + + if (usb_set_configuration(dev, dev->config[0].bConfigurationValue)) + { + printk(KERN_ERR "usb_set_configuration() failed\n"); + result = -EIO; + goto fail; + } +#endif + +#if 1 + //kernel 2.6 + if (!(macp = kmalloc(sizeof(struct zd1205_private), GFP_KERNEL))) + { + printk(KERN_ERR "out of memory allocating device structure\n"); + result = -ENOMEM; + goto fail; + } + + memset(macp, 0, sizeof(struct zd1205_private)); + /* ath_desc: fix timer-related race conditions */ + init_timer(&macp->tm_chal_id); + init_timer(&macp->tm_scan_id); + init_timer(&macp->tm_auth_id); + init_timer(&macp->tm_asoc_id); #endif - //macp->release = 17200; /* 17200 = 0x4330 Big Endian Hack*/ - printk(KERN_NOTICE "Firmware Version = %04x\n", macp->release); - macp->flags = 0; - macp->dbg_flag = ZD1211_DBG_LEVEL; - /* set up the endpoint information */ - /* check out the endpoints */ - macp->interface = interface; - - init_waitqueue_head(&macp->regSet_wait); - init_waitqueue_head(&macp->iorwRsp_wait); - init_waitqueue_head(&macp->term_wait); - - if (!zd1211_alloc_all_urbs(macp)) { - result = -ENOMEM; - goto fail2; - } - - //zd1211_DownLoadUSBCode(macp, "WS11Uext.bin", NULL, cFIRMWARE_EXT_CODE); - if (zd1211_Download_IncludeFile(macp) != 0) { - printk(KERN_ERR "zd1211_Download_IncludeFile failed\n"); - result = -EIO; - goto fail3; - } else { // DEBUG - printk(KERN_NOTICE "Downloaded firmware.\n"); - } - // to enable firmware + #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - if (usb_set_configuration(usb_dev, usb_dev->config[0].bConfigurationValue)) { + + usb_inc_dev_use(dev); +#endif + + net = alloc_etherdev(0); //kernel 2.6 + //net = alloc_etherdev(sizeof (struct zd1205_private)); //kernel 2.4 + + if (!net) + { + printk(KERN_ERR "zd1211: Not able to alloc etherdev struct\n"); + result = -ENOMEM; + goto fail1; + } + + g_dev = net; //save this for CBs use + //macp = net->priv; //kernel 2.4 + net->priv = macp; //kernel 2.6 + + /* ath_desc: use /dev/wlanX as device node */ + strcpy(net->name, "wlan%d"); + + macp->device = net; + macp->usb = dev; + SET_MODULE_OWNER(net); + macp->dev_index = dev_index; + /* ath_desc: bigendian support */ + /* ath: USB config fields are le16 on kernels >= 2.6.11 only */ + /* ath: see Greg Kroah-Hartman, http://kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.11-rc1 */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)) + macp->release = le16_to_cpu(dev->descriptor.bcdDevice); #else - if (usb_set_interface(usb_dev, interface->altsetting[0].desc.bInterfaceNumber,0)) { + macp->release = dev->descriptor.bcdDevice; #endif - printk(KERN_ERR "Failed to enable firmware\n"); - result = -EIO; - goto fail3; - } - - set_bit(ZD1211_RUNNING, &macp->flags); - macp->bUSBDeveiceAttached = 1; - if (!zd1211_InitSetup(net, macp)) { - result = -EIO; - goto fail3; - } else { + printk(KERN_NOTICE "Release Ver = %04x\n", macp->release); + macp->flags = 0; + macp->dbg_flag = ZD1211_DBG_LEVEL; + + /* set up the endpoint information */ + /* check out the endpoints */ + macp->interface = interface; + + init_waitqueue_head(&macp->regSet_wait); + init_waitqueue_head(&macp->iorwRsp_wait); + init_waitqueue_head(&macp->term_wait); + init_waitqueue_head(&macp->msdelay); + + if (!zd1211_alloc_all_urbs(macp)) + { + result = -ENOMEM; + goto fail2; + } + + //zd1211_DownLoadUSBCode(macp, "WS11Uext.bin", NULL, cFIRMWARE_EXT_CODE); + if (zd1211_Download_IncludeFile(macp) != 0) + { + printk(KERN_ERR "zd1211_Download_IncludeFile failed\n"); + result = -EIO; + goto fail3; + } + + //to enable firmware + //#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + // if (usb_set_configuration(dev, dev->config[0].bConfigurationValue)) { + //#else + // if (usb_set_interface(dev, interface->altsetting[0].desc.bInterfaceNumber, 0)){ + // Use the lowest USBD API to issue set_configuration command. + if ((usb_control_msg(dev, usb_sndctrlpipe(dev,0),USB_REQ_SET_CONFIGURATION,0, 1, 0, NULL, 0, HZ))<0) + { + //#endif + printk(KERN_ERR "usb_set_configuration() failed\n"); + result = -EIO; + goto fail3; + } + + set_bit(ZD1211_RUNNING, &macp->flags); + macp->bUSBDeveiceAttached = 1; + + if (!zd1211_InitSetup(net, macp)) + { + result = -EIO; + goto fail3; + } else + { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) - usb_set_intfdata(interface, macp); - SET_NETDEV_DEV(net, &interface->dev); - // defer_kevent(macp, KEVENT_REGISTER_NET); + usb_set_intfdata(interface, macp); + SET_NETDEV_DEV(net, &interface->dev); + //defer_kevent(macp, KEVENT_REGISTER_NET); #endif - if (register_netdev(net) != 0) { +#if 1 //don't register net + + if (register_netdev(net) != 0) { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) - usb_set_intfdata(interface, NULL); + usb_set_intfdata(interface, NULL); #endif - goto fail3; - } - } - goto done; + + goto fail3; + } +#endif + + } + + goto done; fail3: - zd1211_free_all_urbs(macp); + zd1211_free_all_urbs(macp); fail2: - free_netdev(net); //kernel 2.6 - //kfree(net); + free_netdev(net); //kernel 2.6 + //kfree(net); fail1: - kfree(macp); + kfree(macp); fail: #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) - usb_put_dev(usb_dev); + + usb_put_dev(dev); #endif - macp = NULL; -done: + macp = NULL; + g_dev = NULL; + goto exit; +done: + netif_carrier_off(macp->device); +exit: #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - return macp; + + return macp; #else - return result; -#endif + + return result; +#endif } -/** - * zd1211_disconnect - * USB zd1211 device is removed from bus - */ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -static void zd1211_disconnect(struct usb_device *usb_dev, void *ptr) -{ - struct zd1205_private *macp = (struct zd1205_private *)ptr; +static void zd1211_disconnect(struct usb_device *dev, void *ptr) #else static void zd1211_disconnect(struct usb_interface *interface) +#endif { - struct zd1205_private *macp = (struct zd1205_private *) usb_get_intfdata(interface); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) + struct zd1205_private *macp = (struct zd1205_private *) usb_get_intfdata(interface); +#else + + struct zd1205_private *macp = (struct zd1205_private *)ptr; #endif - if (!macp) { - printk(KERN_ERR "Unregistering non-existant device!\n"); - return; - } + if (!macp) + { + printk(KERN_ERR "unregistering non-existant device\n"); + return; + } + + printk(KERN_ERR "zd1211_disconnect\n"); + + set_bit(ZD1211_UNPLUG, &macp->flags); + macp->bUSBDeveiceAttached = 0; - set_bit(ZD1211_UNPLUG, &macp->flags); - macp->bUSBDeveiceAttached = 0; + /* ath_desc: fix module deregistering */ + //assuming we used keventd, it must quiesce too + flush_scheduled_work(); - if (macp->driver_isolated) { - if (macp->device->flags & IFF_UP) - zd1205_close(macp->device); - } - unregister_netdev(macp->device); - flush_scheduled_work(); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) + usb_set_intfdata(interface, NULL); +#endif + + unregister_netdev(macp->device); + free_netdev(macp->device); //kernel 2.6 + + if (macp->driver_isolated) + { + if (macp->device->flags & IFF_UP) + zd1205_close(macp->device); + } + + mdelay(1); + zd1211_unlink_all_urbs(macp); + mdelay(1); + zd1211_free_all_urbs(macp); + mdelay(1); + zd1205_clear_structs(macp->device); #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - usb_dec_dev_use(usb_dev); + + usb_dec_dev_use(dev); #else - usb_put_dev(interface_to_usbdev(interface)); + + usb_put_dev(interface_to_usbdev(interface)); #endif - zd1211_unlink_all_urbs(macp); - zd1211_free_all_urbs(macp); - zd1205_clear_structs(macp->device); - kfree(macp); - macp = NULL; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) - usb_set_intfdata(interface, NULL); + kfree(macp); + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + // The running firmware seems to "block" ep0. + // Reset for kernels >= 2.5.0 is done on initialization: + // 2.4.x's hotplug panics when resetting in init + // 2.5.x does not allow resets on exit + usb_reset_device(dev); #endif + + g_dev = NULL; + //ZEXIT(0); } -/** - * - */ -static struct usb_driver zd1211_driver = { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) - .owner = THIS_MODULE, -#endif - .name = driver_name, - .probe = zd1211_probe, - .disconnect = zd1211_disconnect, - .id_table = zd1211_ids, -}; - -/** - * zd1211_init - * Initialization of zd1211 module - * is called when module is insmodded. - */ +static struct usb_driver zd1211_driver = + { +/* ath_desc: usb_driver.owner is gone in Linux 2.6.16 */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)) + //.owner = THIS_MODULE, +#endif + .name = driver_name, + .probe = zd1211_probe, + .disconnect = zd1211_disconnect, + .id_table = zd1211_ids, + }; + + int __init zd1211_init(void) { - printk(KERN_NOTICE DRIVER_DESC " v" DRIVER_VERSION " loaded\n"); - printk(KERN_NOTICE "(c) " DRIVER_AUTHOR "\n"); - printk(KERN_NOTICE DRIVER_URL "\n"); - - return usb_register(&zd1211_driver); + /* ath_desc: fix printks */ + printk(KERN_NOTICE "%s - http://zd1211.ath.cx/ - r83\n", DRIVER_NAME); + printk(KERN_NOTICE "Based on www.zydas.com.tw driver version %s\n", VERSIONID); + return usb_register(&zd1211_driver); } -/** - * zd1211_exit - * Deregistering zd1211 module - * is called when module is removed from kernel. - */ void __exit zd1211_exit(void) { - usb_deregister(&zd1211_driver); - printk(KERN_NOTICE DRIVER_DESC " removed\n"); + usb_deregister(&zd1211_driver); } -/** - * Init/Exit Macros - */ module_init(zd1211_init); module_exit(zd1211_exit); + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zd80211.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zd80211.h @@ -1,31 +1,7 @@ -/* $Id: zd80211.h,v 1.5 2005/03/17 15:10:27 akw Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef __ZD80211_H__ #define __ZD80211_H__ -#include +#include "zdos.h" #include "zdtypes.h" #include "zdsorts.h" @@ -41,4 +17,6 @@ #include "zdhw.h" #include "zdtkipseed.h" #include "zdmic.h" +#include "zdencrypt.h" #endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zddebug.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zddebug.c @@ -1,31 +1,16 @@ -/* $Id: zddebug.c,v 1.11 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ +#ifndef _ZD_DEBUG_C_ +#define _ZD_DEBUG_C_ -#include "zd1205.h" #include "zddebug.h" -#include "zd1211.h" +#include "zdhw.h" +#include "zdsm.h" +#include "zdpmfilter.h" +#include "zdhci.h" +#include "zdpsmon.h" +#include "zdutils.h" +#ifdef HOST_IF_USB + #include "zd1211.h" +#endif extern zd_80211Obj_t dot11Obj; @@ -34,327 +19,907 @@ extern u32 freeFdescCount; extern void zd_ShowQInfo(void); extern void zd_ShowState(void); - +extern BOOLEAN mPrivacyInvoked; +extern U16 mCap; +extern U8 mWpaBcKeyLen; +extern U8 mGkInstalled; +extern U8 mDynKeyMode; +extern U8 mKeyFormat; +void zd1205_cont_tx(struct zd1205_private *macp, u8 rate); +extern int zd_SetKeyContext(U8 *addr, U8 encryMode, U8 keyLength, U8 KeyId, U8 *pKeyContent); +extern void ConfigBcnFIFO(void); +extern BOOLEAN zd_CmdDeauth(MacAddr_t *sta, U8 rCode); +extern BOOLEAN zd_CmdDisasoc(MacAddr_t *sta, U8 rCode); +extern void update_beacon_interval(struct zd1205_private *macp, int val); void zd1205_set_sniffer_mode(struct zd1205_private *macp) { - struct net_device *dev = macp->device; - - dev->type = ARPHRD_IEEE80211; - dev->hard_header_len = ETH_HLEN; - dev->addr_len = ETH_ALEN; + struct net_device *dev = macp->device; - if (netif_running(dev)) - netif_stop_queue(dev); - - zd_writel(0x01, SnifferOn); - zd_writel(0xffffff, Rx_Filter); - zd_writel(0x08, EncryType); - macp->intrMask = RX_COMPLETE_EN; + dev->type = ARPHRD_IEEE80211; + dev->hard_header_len = ETH_HLEN; + dev->addr_len = ETH_ALEN; + + if (netif_running(dev)) + netif_stop_queue(dev); + + zd_writel(0x01, SnifferOn); + zd_writel(0xffffff, Rx_Filter); + zd_writel(0x08, EncryptionType); + macp->intrMask = RX_COMPLETE_EN; } void zd1205_dump_regs(struct zd1205_private *macp) { - unsigned long flags; +#ifndef HOST_IF_USB + spin_lock_irqsave(&macp->q_lock, flags); +#endif + + printk(KERN_DEBUG "*******************************************************\n"); + printk(KERN_DEBUG "MACAddr_P1 = %08x MACAddr_P2 = %08x\n", + zd_readl(MACAddr_P1), zd_readl(MACAddr_P2)); + printk(KERN_DEBUG "BCNInterval = %08x. BCNPLCPCfg = %08x\n", + zd_readl(BCNInterval), zd_readl(BCNPLCPCfg)); + printk(KERN_DEBUG "TSF_LowPart = %08x, TSF_HighPart = %08x\n", + zd_readl(TSF_LowPart), zd_readl(TSF_HighPart)); + printk(KERN_DEBUG "DeviceState = %08x, NAV_CCA = %08x\n", + zd_readl(DeviceState), zd_readl(NAV_CCA)); + printk(KERN_DEBUG "CRC32Cnt = %08x, CRC16Cnt = %08x\n", + zd_readl(CRC32Cnt), zd_readl(CRC16Cnt)); + printk(KERN_DEBUG "TotalRxFrm = %08x, TotalTxFrm = %08x\n", + zd_readl(TotalRxFrm), zd_readl(TotalTxFrm)); + printk(KERN_DEBUG "RxFIFOOverrun = %08x, UnderrunCnt = %08x\n", + zd_readl(RxFIFOOverrun), zd_readl(UnderrunCnt)); + printk(KERN_DEBUG "BSSID_P1 = %08x, BSSID_P2 = %08x\n", + zd_readl(BSSID_P1), zd_readl(BSSID_P2)); + printk(KERN_DEBUG "Pre_TBTT = %08x, ATIMWndPeriod = %08x\n", + zd_readl(Pre_TBTT), zd_readl(ATIMWndPeriod)); + printk(KERN_DEBUG "RetryCnt = %08x, IFS_Value = %08x\n", + zd_readl(RetryCnt), zd_readl(IFS_Value)); + printk(KERN_DEBUG "NAV_CNT = %08x, CWmin_CWmax = %08x\n", + zd_readl(NAV_CNT), zd_readl(CWmin_CWmax)); + //printk(KERN_DEBUG "GroupHash_P1 = %08x, GroupHash_P2 = %08x\n", + // zd_readl(GroupHash_P1), zd_readl(GroupHash_P2)); + printk(KERN_DEBUG "DecrypErr_UNI = %08x, DecrypErr_Mul = %08x\n", + zd_readl(DecrypErr_UNI), zd_readl(DecrypErr_Mul)); + +#ifndef HOST_IF_USB + + printk(KERN_DEBUG "InterruptCtrl = %08x, Rx_Filter = %08x\n", + zd_readl(InterruptCtrl), zd_readl(Rx_Filter)); + printk(KERN_DEBUG "ReadTcbAddress = %08x, ReadRfdAddress= %08x\n", + zd_readl(ReadTcbAddress), zd_readl(ReadRfdAddress)); + printk(KERN_DEBUG "BCN_FIFO_Semaphore = %08x, CtlReg1 = %08x\n", + zd_readl(BCN_FIFO_Semaphore), zd_readl(CtlReg1)); + printk(KERN_DEBUG "RX_OFFSET_BYTE = %08x, RX_TIME_OUT = %08x\n", + zd_readl(RX_OFFSET_BYTE), zd_readl(RX_TIME_OUT)); + printk(KERN_DEBUG "CAM_DEBUG = %08x, CAM_STATUS = %08x\n", + zd_readl(CAM_DEBUG), zd_readl(CAM_STATUS)); + printk(KERN_DEBUG "CAM_ROLL_TB_LOW = %08x, CAM_ROLL_TB_HIGH = %08x\n", + zd_readl(CAM_ROLL_TB_LOW), zd_readl(CAM_ROLL_TB_HIGH)); + printk(KERN_DEBUG "CAM_MODE = %08x\n", zd_readl(CAM_MODE)); +#endif + +#ifndef HOST_IF_USB - printk(KERN_DEBUG "*******************************************************\n"); - printk(KERN_DEBUG "MACAddr_P1 = %08x MACAddr_P2 = %08x\n", - zd_readl(MACAddr_P1), zd_readl(MACAddr_P2)); - printk(KERN_DEBUG "BCNInterval = %08x. BCNPLCPCfg = %08x\n", - zd_readl(BCNInterval), zd_readl(BCNPLCPCfg)); - printk(KERN_DEBUG "TSF_LowPart = %08x, TSF_HighPart = %08x\n", - zd_readl(TSF_LowPart), zd_readl(TSF_HighPart)); - printk(KERN_DEBUG "DeviceState = %08x, NAV_CCA = %08x\n", - zd_readl(DeviceState), zd_readl(NAV_CCA)); - printk(KERN_DEBUG "CRC32Cnt = %08x, CRC16Cnt = %08x\n", - zd_readl(CRC32Cnt), zd_readl(CRC16Cnt)); - printk(KERN_DEBUG "TotalRxFrm = %08x, TotalTxFrm = %08x\n", - zd_readl(TotalRxFrm), zd_readl(TotalTxFrm)); - printk(KERN_DEBUG "RxFIFOOverrun = %08x, UnderrunCnt = %08x\n", - zd_readl(RxFIFOOverrun), zd_readl(UnderrunCnt)); - printk(KERN_DEBUG "BSSID_P1 = %08x, BSSID_P2 = %08x\n", - zd_readl(BSSID_P1), zd_readl(BSSID_P2)); - printk(KERN_DEBUG "Pre_TBTT = %08x, ATIMWndPeriod = %08x\n", - zd_readl(Pre_TBTT), zd_readl(ATIMWndPeriod)); - printk(KERN_DEBUG "RetryCnt = %08x, IFS_Value = %08x\n", - zd_readl(RetryCnt), zd_readl(IFS_Value)); - printk(KERN_DEBUG "NAV_CNT = %08x, CWmin_CWmax = %08x\n", - zd_readl(NAV_CNT), zd_readl(CWmin_CWmax)); - // printk(KERN_DEBUG "GroupHash_P1 = %08x, GroupHash_P2 = %08x\n", - // zd_readl(GroupHash_P1), zd_readl(GroupHash_P2)); - printk(KERN_DEBUG "DecrypErr_UNI = %08x, DecrypErr_Mul = %08x\n", - zd_readl(DecrypErr_UNI), zd_readl(DecrypErr_Mul)); -} - -void zd1205_dump_cnters(struct zd1205_private *macp) { - zd1205_lock(macp); - printk(KERN_DEBUG "*************************************************\n"); - printk(KERN_DEBUG "freeTxQ = %08d, activeTxQ = %08d\n", macp->freeTxQ->count, macp->activeTxQ->count); - printk(KERN_DEBUG "freeSignalCount = %08d, freeFdescCount = %08d\n", freeSignalCount, freeFdescCount); - //printk(KERN_DEBUG "hwTotalRxFrm = %08d, hwTotalTxFrm = %08d\n", macp->hwTotalRxFrm, macp->hwTotalTxFrm); - //printk(KERN_DEBUG "hwRxFIFOOverrun = %08d, hwUnderrunCnt = %08d\n", macp->hwRxFIFOOverrun, macp->hwUnderrunCnt); - //printk(KERN_DEBUG "hwCRC32Cnt = %08d, hwCRC16Cnt = %08d\n", macp->hwCRC32Cnt, macp->hwCRC16Cnt); - //printk(KERN_DEBUG "ErrLongFrmCnt = %08d, ErrShortFrmCnt = %08d\n", macp->ErrLongFrmCnt, macp->ErrShortFrmCnt); - //printk(KERN_DEBUG "ErrToHostFrmCnt = %08d, ErrZeroLenFrmCnt= %08d\n", macp->ErrToHostFrmCnt, macp->ErrZeroLenFrmCnt); - printk(KERN_DEBUG "rxOFDMDataFrame = %08d, rx11bDataFrame = %08d\n", macp->rxOFDMDataFrame, macp->rx11bDataFrame); - printk(KERN_DEBUG "rxSignalQuality = %08d, rxSignalStrength= %08d\n", macp->rxSignalQuality, macp->rxSignalStrength); - printk(KERN_DEBUG "rxRate = %08d, txRate = %08dx\n", macp->rxInfo.rate, macp->cardSetting.CurrTxRate); - //printk(KERN_DEBUG "rxNeedFragCnt = %08d, rxCompFragCnt = %08d\n", macp->rxNeedFragCnt, macp->rxCompFragCnt); - //printk(KERN_DEBUG "ArFreeFailCnt = %08d, ArAgedCnt = %08d\n", macp->ArFreeFailCnt, macp->ArAgedCnt); - //printk(KERN_DEBUG "ArSearchFailCnt = %08d, DropFirstFragCnt= %08d\n", macp->ArSearchFailCnt, macp->DropFirstFragCnt); - //printk(KERN_DEBUG "skb_req = %08d, AllocSkbFailCnt= %08d\n", macp->skb_req, macp->AllocSkbFailCnt); - printk(KERN_DEBUG "txQueToUpCnt = %08d, txQueSetCnt = %08d\n", macp->txQueToUpCnt, macp->txQueSetCnt); - printk(KERN_DEBUG "sleepCnt = %08d, wakeupCnt = %08d\n", macp->sleepCnt, macp->wakeupCnt); - printk(KERN_DEBUG "WaitLenInfoCnt = %08d, CompLenInfoCnt = %08d\n", macp->WaitLenInfoCnt, macp->CompLenInfoCnt); - printk(KERN_DEBUG "Continue2Rx = %08d, NoMergedRxCnt = %08d\n", macp->Continue2Rx, macp->NoMergedRxCnt); - printk(KERN_DEBUG "bcnCnt = %08d, dtimCnt = %08d\n", macp->bcnCnt, macp->dtimCnt); - printk(KERN_DEBUG "txCnt = %08d, txCmpCnt = %08d\n", macp->txCnt, macp->txCmpCnt); - printk(KERN_DEBUG "retryFailCnt = %08d, rxCnt = %08d\n", macp->retryFailCnt, macp->rxCnt); - printk(KERN_DEBUG "usbTxCnt = %08d, usbTxCompCnt = %08d\n", macp->usbTxCnt, macp->usbTxCompCnt); - printk(KERN_DEBUG "regWaitRCompCnt = %08d, regWaitWCompCnt= %08d\n", macp->regWaitRCompCnt, macp->regWaitWCompCnt); - printk(KERN_DEBUG "regRWCompCnt = %08d, regUnCompCnt = %08d\n", macp->regRWCompCnt, macp->regUnCompCnt); - printk(KERN_DEBUG "regWaitRspCnt = %08d, regRspCompCnt = %08d\n", macp->regWaitRspCnt, macp->regRspCompCnt); - printk(KERN_DEBUG "regRdSleepCnt = %08d, regRspCompCnt = %08d\n", macp->regRdSleepCnt, macp->regRspCompCnt); - zd_ShowQInfo(); - zd_ShowState(); - macp->bcnCnt = 0; - macp->dtimCnt = 0; - macp->rxCnt = 0; - macp->txCmpCnt = 0; - macp->txCnt = 0; - macp->retryFailCnt = 0; - macp->txIdleCnt = 0; - macp->rxIdleCnt = 0; - macp->hwTotalRxFrm = 0; - macp->hwTotalTxFrm = 0; - macp->hwRxFIFOOverrun = 0; - macp->hwUnderrunCnt = 0; - macp->hwCRC32Cnt =0; - macp->hwCRC16Cnt =0; - macp->ErrLongFrmCnt = 0; - macp->ErrShortFrmCnt = 0; - macp->ErrToHostFrmCnt = 0; - macp->ErrZeroLenFrmCnt = 0; - macp->rxOFDMDataFrame = 0; - macp->rx11bDataFrame = 0; - macp->ArFreeFailCnt = 0; - macp->ArAgedCnt = 0; - macp->ArSearchFailCnt = 0; - macp->DropFirstFragCnt = 0; - macp->rxNeedFragCnt = 0; - macp->rxCompFragCnt = 0; - macp->txQueToUpCnt = 0; - macp->txQueSetCnt = 0; - //macp->sleepCnt = 0; - //macp->wakeupCnt = 0; - macp->Continue2Rx = 0; - macp->NoMergedRxCnt = 0; - zd1205_unlock(macp); + spin_unlock_irqrestore(&macp->q_lock, flags); +#endif +} + +void zd1205_dump_cnters(struct zd1205_private *macp) +{ + zd1205_lock(macp); + printk(KERN_DEBUG "*************************************************\n"); + printk(KERN_DEBUG "freeTxQ = %08d, activeTxQ = %08d\n", macp->freeTxQ->count, macp->activeTxQ->count); + printk(KERN_DEBUG "freeSignalCount = %08d, freeFdescCount = %08d\n", freeSignalCount, freeFdescCount); + //printk(KERN_DEBUG "hwTotalRxFrm = %08d, hwTotalTxFrm = %08d\n", macp->hwTotalRxFrm, macp->hwTotalTxFrm); + //printk(KERN_DEBUG "hwRxFIFOOverrun = %08d, hwUnderrunCnt = %08d\n", macp->hwRxFIFOOverrun, macp->hwUnderrunCnt); + //printk(KERN_DEBUG "hwCRC32Cnt = %08d, hwCRC16Cnt = %08d\n", macp->hwCRC32Cnt, macp->hwCRC16Cnt); + + //printk(KERN_DEBUG "ErrLongFrmCnt = %08d, ErrShortFrmCnt = %08d\n", macp->ErrLongFrmCnt, macp->ErrShortFrmCnt); + //printk(KERN_DEBUG "ErrToHostFrmCnt = %08d, ErrZeroLenFrmCnt= %08d\n", macp->ErrToHostFrmCnt, macp->ErrZeroLenFrmCnt); + printk(KERN_DEBUG "rxOFDMDataFrame = %08d, rx11bDataFrame = %08d\n", macp->rxOFDMDataFrame, macp->rx11bDataFrame); + printk(KERN_DEBUG "rxSignalQuality = %08d, rxSignalStrength= %08d\n", macp->rxSignalQuality, macp->rxSignalStrength); + printk(KERN_DEBUG "rxRate = %08d, txRate = %08dx\n", macp->rxInfo.rate, macp->cardSetting.CurrTxRate); + + //printk(KERN_DEBUG "rxNeedFragCnt = %08d, rxCompFragCnt = %08d\n", macp->rxNeedFragCnt, macp->rxCompFragCnt); + //printk(KERN_DEBUG "ArFreeFailCnt = %08d, ArAgedCnt = %08d\n", macp->ArFreeFailCnt, macp->ArAgedCnt); + //printk(KERN_DEBUG "ArSearchFailCnt = %08d, DropFirstFragCnt= %08d\n", macp->ArSearchFailCnt, macp->DropFirstFragCnt); + //printk(KERN_DEBUG "skb_req = %08d, AllocSkbFailCnt= %08d\n", macp->skb_req, macp->AllocSkbFailCnt); + printk(KERN_DEBUG "txQueToUpCnt = %08d, txQueSetCnt = %08d\n", macp->txQueToUpCnt, macp->txQueSetCnt); + printk(KERN_DEBUG "sleepCnt = %08d, wakeupCnt = %08d\n", macp->sleepCnt, macp->wakeupCnt); + printk(KERN_DEBUG "WaitLenInfoCnt = %08d, CompLenInfoCnt = %08d\n", macp->WaitLenInfoCnt, macp->CompLenInfoCnt); + printk(KERN_DEBUG "Continue2Rx = %08d, NoMergedRxCnt = %08d\n", macp->Continue2Rx, macp->NoMergedRxCnt); + printk(KERN_DEBUG "bcnCnt = %08d, dtimCnt = %08d\n", macp->bcnCnt, macp->dtimCnt); + printk(KERN_DEBUG "txCnt = %08d, txCmpCnt = %08d\n", macp->txCnt, macp->txCmpCnt); + printk(KERN_DEBUG "retryFailCnt = %08d, rxCnt = %08d\n", macp->retryFailCnt, macp->rxCnt); + printk(KERN_DEBUG "usbTxCnt = %08d, usbTxCompCnt = %08d\n", macp->usbTxCnt, macp->usbTxCompCnt); + + printk(KERN_DEBUG "regWaitRCompCnt = %08d, regWaitWCompCnt= %08d\n", macp->regWaitRCompCnt, macp->regWaitWCompCnt); + printk(KERN_DEBUG "regRWCompCnt = %08d, regUnCompCnt = %08d\n", macp->regRWCompCnt, macp->regUnCompCnt); + printk(KERN_DEBUG "regWaitRspCnt = %08d, regRspCompCnt = %08d\n", macp->regWaitRspCnt, macp->regRspCompCnt); + printk(KERN_DEBUG "regRdSleepCnt = %08d, regRspCompCnt = %08d\n", macp->regRdSleepCnt, macp->regRspCompCnt); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + printk(KERN_DEBUG "macp.flags = %08x\n", macp->flags); +#else + printk(KERN_DEBUG "macp.flags = %08lx\n", macp->flags); +#endif + + zd_ShowQInfo(); + zd_ShowState(); + macp->bcnCnt = 0; + macp->dtimCnt = 0; + macp->rxCnt = 0; + macp->txCmpCnt = 0; + macp->txCnt = 0; + macp->retryFailCnt = 0; + macp->txIdleCnt = 0; + macp->rxIdleCnt = 0; + macp->hwTotalRxFrm = 0; + macp->hwTotalTxFrm = 0; + + macp->hwRxFIFOOverrun = 0; + macp->hwUnderrunCnt = 0; + macp->hwCRC32Cnt =0; + macp->hwCRC16Cnt =0; + + macp->ErrLongFrmCnt = 0; + macp->ErrShortFrmCnt = 0; + macp->ErrToHostFrmCnt = 0; + macp->ErrZeroLenFrmCnt = 0; + macp->rxOFDMDataFrame = 0; + macp->rx11bDataFrame = 0; + + macp->ArFreeFailCnt = 0; + macp->ArAgedCnt = 0; + macp->ArSearchFailCnt = 0; + macp->DropFirstFragCnt = 0; + macp->rxNeedFragCnt = 0; + macp->rxCompFragCnt = 0; + macp->txQueToUpCnt = 0; + macp->txQueSetCnt = 0; + //macp->sleepCnt = 0; + //macp->wakeupCnt = 0; + macp->Continue2Rx = 0; + macp->NoMergedRxCnt = 0; +#ifdef WPA_DEBUG + + printk("cardSet.WPAIeLen=%d\n",macp->cardSetting.WPAIeLen); + printk("mDynKeyMode:%d,mKeyFormat:%d,mPrivacyInvoked:%d,mCap:0x%X,mWpaBcKenLen:%d\n",mDynKeyMode,mKeyFormat,mPrivacyInvoked,mCap,mWpaBcKeyLen); +#endif + + zd1205_unlock(macp); } void zd1205_update_brate(struct zd1205_private *macp, u32 value) { - u8 ii; - u8 nRate; - u8 *pRate; - card_Setting_t *pSetting = &macp->cardSetting; - u8 rate_list[4] = { 0x02, 0x04, 0x0B, 0x16 }; - - /* Get the number of rates we support */ - nRate = pSetting->Info_SupportedRates[1]; - pRate = &(pSetting->Info_SupportedRates[2]); - - for (ii = 0; ii < nRate; ii++) { - /* If the Rate is less than the basic Rate, mask 0x80 with the value. */ - if ((*pRate & 0x7f) <= rate_list[value]) - *pRate |= 0x80; - else *pRate &= 0x7f; - pRate++; - } + u8 ii; + u8 nRate; + u8 *pRate; + card_Setting_t *pSetting = &macp->cardSetting; + u8 rate_list[4] = { 0x02, 0x04, 0x0B, 0x16 }; + + /* Get the number of rates we support */ + nRate = pSetting->Info_SupportedRates[1]; + + pRate = &(pSetting->Info_SupportedRates[2]); + + for(ii = 0; ii < nRate; ii++) + { + /* If the Rate is less than the basic Rate, mask 0x80 with the value. */ + if((*pRate & 0x7f) <= rate_list[value]) + *pRate |= 0x80; + else + *pRate &= 0x7f; + + pRate++; + } } void acquire_ctrl_of_phy_req(void *regp) { - u32 tmpValue; + u32 tmpValue; - tmpValue = zd_readl(CtlReg1); - tmpValue &= ~0x80; - zd_writel(tmpValue, CtlReg1); + tmpValue = zd_readl(CtlReg1); + tmpValue &= ~0x80; + zd_writel(tmpValue, CtlReg1); } + void release_ctrl_of_phy_req(void *regp) { - u32 tmpValue; - tmpValue = zd_readl(CtlReg1); - tmpValue |= 0x80; - zd_writel(tmpValue, CtlReg1); + u32 tmpValue; + + tmpValue = zd_readl(CtlReg1); + tmpValue |= 0x80; + zd_writel(tmpValue, CtlReg1); } void zd1205_dump_phy(struct zd1205_private *macp) { - void *regp = macp->regp; - u32 regValue[4]; - int i; + void *regp = macp->regp; - acquire_ctrl_of_phy_req(regp); - for (i=0; i<256; i+=4) { - // acquire_ctrl_of_phy_req(regp); - regValue[0] = zd_readl(4*i); - regValue[1]= zd_readl(4*(i+1)); - regValue[2]= zd_readl(4*(i+2)); - regValue[3]= zd_readl(4*(i+3)); - printk(KERN_DEBUG "CR%03d = %02x CR%03d = %02x CR%03d = %02x CR%03d = %02x\n", - i, (u8)regValue[0], i+1, (u8)regValue[1], i+2, (u8)regValue[2], i+3, (u8)regValue[3]); - // release_ctrl_of_phy_req(regp); - } - release_ctrl_of_phy_req(regp); -} + u32 regValue[4]; + int i; + acquire_ctrl_of_phy_req(regp); + for (i=0; i<256; i+=4) + { + //acquire_ctrl_of_phy_req(regp); + if (i==4)//The offset of CR4 to CR8 are not multiplied by 4 directly. + { + regValue[0]=zd_readl(ZD_CR4); + regValue[1]=zd_readl(ZD_CR5); + regValue[2]=zd_readl(ZD_CR6); + regValue[3]=zd_readl(ZD_CR7); + } else if (i==8) { + regValue[0]=zd_readl(ZD_CR8); + regValue[1]=zd_readl(ZD_CR9); + regValue[2]=zd_readl(ZD_CR10); + regValue[3]=zd_readl(ZD_CR11); + } else { + regValue[0] = zd_readl(4*i); + regValue[1] = zd_readl(4*(i+1)); + regValue[2] = zd_readl(4*(i+2)); + regValue[3] = zd_readl(4*(i+3)); + } + + printk(KERN_DEBUG "CR%03d = %02x CR%03d = %02x CR%03d = %02x CR%03d = %02x\n", + i, (u8)regValue[0], i+1, (u8)regValue[1], i+2, (u8)regValue[2], i+3, (u8)regValue[3]); + //release_ctrl_of_phy_req(regp); + } + release_ctrl_of_phy_req(regp); +} +/* void zd1205_dump_eeprom(struct zd1205_private *macp) { u32 e2pValue, e2pValue1; int i; + for (i=0; i<20; i+=2) { e2pValue = zd_readl(E2P_SUBID+4*i); e2pValue1 = zd_readl(E2P_SUBID+4*(i+1)); printk(KERN_DEBUG "0x%x = %08x, 0x%x = %08x\n", E2P_SUBID+4*i, e2pValue, E2P_SUBID+4*(i+1), e2pValue1); } } +*/ +void zd1205_dump_eeprom(struct zd1205_private *macp) +{ + u32 V1,V2,V3,V4 ; + int i; + + for (i=0; i<0x30; i+=4) + { + V1 = zd_readl(E2P_SUBID+4*i); + V2 = zd_readl(E2P_SUBID+4*(i+1)); + V3 = zd_readl(E2P_SUBID+4*(i+2)); + V4 = zd_readl(E2P_SUBID+4*(i+3)); + + printk(KERN_DEBUG "0x%x = %08x %08x %08x %08x \n", E2P_SUBID+4*i, V1,V2,V3,V4); + } +} extern void zd_ShowHashInfo(u8 aid); void zd1205_show_hash(struct zd1205_private *macp, u32 value) { - if (value < 33) - zd_ShowHashInfo(value); + if (value < 33) + zd_ShowHashInfo(value); } void zd1205_show_card_setting(struct zd1205_private *macp) { - card_Setting_t *pSetting = &macp->cardSetting; - printk(KERN_DEBUG "RTSThreshold = %04x FragThreshold = %04x\n", - pSetting->RTSThreshold, pSetting->FragThreshold); - printk(KERN_DEBUG "DtimPeriod = %04x BeaconInterval = %04x\n", - pSetting->DtimPeriod, pSetting->BeaconInterval); - printk(KERN_DEBUG "EncryMode = %04x EncryOnOff = %04x\n", - pSetting->EncryMode, pSetting->EncryOnOff); - printk(KERN_DEBUG "EncryKeyId = %04x WepKeyLen = %04x\n", - pSetting->EncryKeyId, pSetting->WepKeyLen); - printk(KERN_DEBUG "PreambleType = %04x AuthMode = %04x\n", - pSetting->PreambleType, pSetting->AuthMode); - printk(KERN_DEBUG "Channel = %04x BssType = %04x\n", - pSetting->Channel, pSetting->BssType); - printk(KERN_DEBUG "SuggestionMode = %04x PwrState = %04x\n", - macp->SuggestionMode, macp->PwrState); - printk(KERN_DEBUG "bPSMSupported = %04x bAssoc = %04x\n", - macp->bPSMSupported, macp->bAssoc); - printk(KERN_DEBUG "bAnyActivity = %04x BSS_Members = %04x\n", - macp->bAnyActivity, macp->BSS_Members); + card_Setting_t *pSetting = &macp->cardSetting; + + printk(KERN_DEBUG "RTSThreshold = %04x FragThreshold = %04x\n", + pSetting->RTSThreshold, pSetting->FragThreshold); + printk(KERN_DEBUG "DtimPeriod = %04x BeaconInterval = %04x\n", + pSetting->DtimPeriod, pSetting->BeaconInterval); + printk(KERN_DEBUG "EncryMode = %04x EncryOnOff = %04x\n", + pSetting->EncryMode, pSetting->EncryOnOff); + printk(KERN_DEBUG "EncryKeyId = %04x WepKeyLen = %04x\n", + pSetting->EncryKeyId, pSetting->WepKeyLen); + printk(KERN_DEBUG "PreambleType = %04x AuthMode = %04x\n", + pSetting->PreambleType, pSetting->AuthMode); + printk(KERN_DEBUG "Channel = %04x BssType = %04x\n", + pSetting->Channel, pSetting->BssType); + printk(KERN_DEBUG "SuggestionMode = %04x PwrState = %04x\n", + macp->SuggestionMode, macp->PwrState); + printk(KERN_DEBUG "bPSMSupported = %04x bAssoc = %04x\n", + macp->bPSMSupported, macp->bAssoc); + printk(KERN_DEBUG "bAnyActivity = %04x BSS_Members = %04x\n", + macp->bAnyActivity, macp->BSS_Members); +} +#if 0 +void zd1205_dump_cam(struct zd1205_private *macp) +{ + int ii; + + for(ii = 0; ii < 445; ii++) + { + u32 data = HW_CAM_Read(&dot11Obj, ii); + + if((ii % 4) == 0) + printk(KERN_ERR "\nAddr=0x%04x ", ii); + + printk(KERN_ERR "0x%08x ", data); + } + + printk(KERN_ERR "\n"); +} +#endif +void zd1205_dump_cam(struct zd1205_private *macp,u32 beginAddr, u32 length) +{ + u8 valid_uid[40]; + u8 valid_uid_cnt; + u32 data; + int ii,jj; + //u32 RollCallTblLow; + //u32 RollCallTblHigh; + u32 MACINCAM[6]; + u32 tmpRollCallTblLow; + u32 tmpRollCallTblHigh; + //u32 bDisplay; + int UserIdBase; + char *EncTypeStr[]={"","WEP64","TKIP","","AES","WEP128","WEP256",""}; + char *CamModeStr[]={"IBSS","AP","STA","WDS","Client","VAP","",""}; + + for(ii = 0; ii < length; ii++) + { + data = HW_CAM_Read(&dot11Obj, beginAddr+ii); + printk(KERN_ERR "\nAddr(%03u)=0x%08x", ii+beginAddr, data); + } + printk(KERN_ERR "\n"); + data = zd_readl(0x700); // Cam mode: MACREG(0x700)[2:0] + printk(KERN_ERR "CAM Mode: %s\n", CamModeStr[data&7]); + //tmpRollCallTblLow=RollCallTblLow=zd_readl(0x704); + //tmpRollCallTblHigh=RollCallTblHigh=zd_readl(0x708)&0xf; + tmpRollCallTblLow=zd_readl(0x704); + tmpRollCallTblHigh=zd_readl(0x708)&0xf; + //Scan user ID of CAM + valid_uid_cnt=0; //Reset number of user ID + for (ii=0; ii<40; ii++) + { + valid_uid[ii]=0;// Reset to invalid + + if (ii<32) {// For user 0 - 31 + if (tmpRollCallTblLow & 1) { + valid_uid[ii]=1;// set to valid + valid_uid_cnt++; + } + tmpRollCallTblLow = tmpRollCallTblLow >> 1; + } else { + if (tmpRollCallTblHigh & 1) { + valid_uid[ii]=1; // set to valid + valid_uid_cnt++; + } + tmpRollCallTblHigh = tmpRollCallTblHigh >> 1; + } + } + // Dump MAC address + UserIdBase=0; + for(ii = 0; ii < 60; ii+=6) + { + //UserIdBase = UserIdBase+4; + MACINCAM[0]=HW_CAM_Read(&dot11Obj, ii); + MACINCAM[1]=HW_CAM_Read(&dot11Obj, ii+1); + MACINCAM[2]=HW_CAM_Read(&dot11Obj, ii+2); + MACINCAM[3]=HW_CAM_Read(&dot11Obj, ii+3); + MACINCAM[4]=HW_CAM_Read(&dot11Obj, ii+4); + MACINCAM[5]=HW_CAM_Read(&dot11Obj, ii+5); + for (jj=0; jj<4; jj++) { + if (valid_uid[UserIdBase+jj]) { + printk(KERN_ERR "UID:%d Mac:%02x:%02x:%02x:%02x:%02x:%02x\n",UserIdBase+jj, MACINCAM[0]&255, MACINCAM[1]&255, MACINCAM[2]&255, MACINCAM[3]&255,MACINCAM[4]&255,MACINCAM[5]&255); + } + MACINCAM[0]=MACINCAM[0]>>8; + MACINCAM[1]=MACINCAM[1]>>8; + MACINCAM[2]=MACINCAM[2]>>8; + MACINCAM[3]=MACINCAM[3]>>8; + MACINCAM[4]=MACINCAM[4]>>8; + MACINCAM[5]=MACINCAM[5]>>8; + } + UserIdBase = UserIdBase+4; + } + // Dump Encryption type: CAM location: 60-65 + //tmpRollCallTblLow=RollCallTblLow; + //tmpRollCallTblHigh=RollCallTblHigh; + for(ii=60; ii<66; ii++) + { + data = HW_CAM_Read(&dot11Obj, ii); + UserIdBase=(ii-60)*8; //One location for 8 users. + if (UserIdBase >= 40) { + {//location 65:For default key + printk(KERN_ERR "DefaultKeySet:%s\n",EncTypeStr[data&7]); + } + } else { + for(jj=0; jj<8; jj++) { + if (valid_uid[UserIdBase+jj]) { + printk(KERN_ERR "UID:%02d:%s\n",UserIdBase+jj,EncTypeStr[data&7]); + valid_uid[UserIdBase+jj] |= ((data & 7)<<1); + } + data = data >> 4; // Next user. + } + } + } + printk(KERN_ERR "KeyContents:\n"); + for (ii=0; ii<40; ii++) + { + u32 keylen; + u32 keytype; + + if (valid_uid[ii]) { + keytype=valid_uid[ii]>>1; + switch(keytype) { + case 2://TKIP + keylen=32; + break; + case 4://AES + keylen=16; + break; + case 1://WEP64 + keylen=8; + break; + case 5://WEP128 + keylen=16; + break; + default: + keylen=0; + break; + } + keylen = keylen >> 2; + printk(KERN_ERR "UID:%02d\n", ii); + for (jj=0; jjregp; - u16 zd_cmd; - u32 tmp_value; - zd_cmd = zdreq->cmd; - switch(zd_cmd) { - case ZD_IOCTL_REG_READ: - acquire_ctrl_of_phy_req(regp); - tmp_value = zd_readl(zdreq->addr); - release_ctrl_of_phy_req(regp); - zdreq->value = tmp_value; - - printk(KERN_DEBUG "zd1211 read register: reg = 0x%04x, value = 0x%08x\n", - zdreq->addr, zdreq->value); - //if (copy_to_user(ifr->ifr_data, &zdreq, sizeof (zdreq))) - //return -EFAULT; - break; - - case ZD_IOCTL_REG_WRITE: - acquire_ctrl_of_phy_req(regp); - zd_writel(zdreq->value, zdreq->addr); - - release_ctrl_of_phy_req(regp); - if (zdreq->addr == RX_OFFSET_BYTE) - macp->rxOffset = zdreq->value; - break; - - case ZD_IOCTL_MEM_DUMP: - zd1205_dump_data("mem", (u8 *)zdreq->addr, zdreq->value); - //memcpy(&zdreq->data[0], (u8 *)zdreq->addr, zdreq->value); - //if (copy_to_user(ifr->ifr_data, &zdreq, sizeof (zdreq))) - //return -EFAULT; - break; - - case ZD_IOCTL_RATE: - /* Check for the validation of vale */ - if(zdreq->value > 3 || zdreq->value < 0) { - printk(KERN_DEBUG "zd1205: Basic Rate %x doesn't support\n", zdreq->value); - break; - } - - printk(KERN_DEBUG "zd1205: Basic Rate = %x\n", zdreq->value); - zd1205_update_brate(macp, zdreq->value); - break; - - case ZD_IOCTL_SNIFFER: - macp->sniffer_on = zdreq->value; - printk(KERN_DEBUG "zd1205: sniffer_on = %x\n", macp->sniffer_on); - zd1205_set_sniffer_mode(macp); - break; - - case ZD_IOCTL_DUMP_PHY: - printk(KERN_DEBUG "zd1205: dump phy\n"); - zd1205_dump_phy(macp); - break; - - case ZD_IOCTL_CARD_SETTING: - - printk(KERN_DEBUG "zd1205: card setting\n"); - zd1205_show_card_setting(macp); - break; - - case ZD_IOCTL_HASH_DUMP: - printk(KERN_DEBUG "zd1205: aid = %x\n", zdreq->value); - zd1205_show_hash(macp, zdreq->value); - break; - - case ZD_IOCTL_RFD_DUMP: - printk(KERN_DEBUG "===== zd1205 rfd dump =====\n"); - zd1205_dump_rfds(macp); - break; - - case ZD_IOCTL_MEM_READ: { - u32 *p; - p = (u32 *) bus_to_virt(zdreq->addr); - printk(KERN_DEBUG "zd1205: read memory addr: 0x%08x value: 0x%08x\n", zdreq->addr, *p); - break; - } + void *regp = macp->regp; + u16 zd_cmd; + u32 tmp_value; + u32 tmp_addr; + u32 CRn; + + zd_cmd = zdreq->cmd; + + switch(zd_cmd) + { + case ZD_IOCTL_DEBUG_FLAG: + macp->debugflag = zdreq->addr; + mDebugFlag = zdreq->value; + break; + case ZD_IOCTL_REG_READ: + acquire_ctrl_of_phy_req(regp); + tmp_value = zd_readl(zdreq->addr); + release_ctrl_of_phy_req(regp); + zdreq->value = tmp_value; + + printk(KERN_DEBUG "zd1211 read register: reg = 0x%04x, value = 0x%08x\n", + zdreq->addr, zdreq->value); + //if (copy_to_user(ifr->ifr_data, &zdreq, sizeof (zdreq))) + //return -EFAULT; + break; + + case ZD_IOCTL_REG_WRITE: + acquire_ctrl_of_phy_req(regp); + zd_writel(zdreq->value, zdreq->addr); + release_ctrl_of_phy_req(regp); + + if (zdreq->addr == RX_OFFSET_BYTE) + macp->rxOffset = zdreq->value; + break; + + case ZD_IOCTL_MEM_DUMP: + zd1205_dump_data("mem", (u8 *)zdreq->addr, zdreq->value); + //memcpy(&zdreq->data[0], (u8 *)zdreq->addr, zdreq->value); + //if (copy_to_user(ifr->ifr_data, &zdreq, sizeof (zdreq))) + //return -EFAULT; + break; + + case ZD_IOCTL_RATE: + /* Check for the validation of vale */ + if(zdreq->value > 3 || zdreq->value < 0) { + printk(KERN_DEBUG "zd1205: Basic Rate %x doesn't support\n", zdreq->value); + break; + } + + printk(KERN_DEBUG "zd1205: Basic Rate = %x\n", zdreq->value); + zd1205_update_brate(macp, zdreq->value); + break; + + case ZD_IOCTL_SNIFFER: + macp->sniffer_on = zdreq->value; + printk(KERN_DEBUG "zd1205: sniffer_on = %x\n", macp->sniffer_on); + zd1205_set_sniffer_mode(macp); + break; + + case ZD_IOCTL_CAM_DUMP://Arg1: Location, Arg2: Length + { + u32 startAddr, length; + startAddr=((zdreq->addr & 0xF00)>>8)*100+ + ((zdreq->addr & 0xF0)>>4)*10+ + (zdreq->addr & 0xF); + length=((zdreq->value & 0xF00)>>8)*100+ + ((zdreq->value & 0xF0)>>4)*10+ + (zdreq->value & 0xF); + printk(KERN_DEBUG "zd1205: dump cam\n"); + zd1205_dump_cam(macp,startAddr,length); + break; + } + case ZD_IOCTL_DUMP_PHY: + printk(KERN_DEBUG "zd1205: dump phy\n"); + zd1205_dump_phy(macp); + break; + case ZD_IOCTL_READ_PHY: + case ZD_IOCTL_WRITE_PHY: + acquire_ctrl_of_phy_req(regp); + tmp_addr = zdreq->addr; + CRn= ((tmp_addr & 0xF00)>>8)*100+ + ((tmp_addr & 0xF0)>>4)*10+ + (tmp_addr & 0xF); + if (CRn >= 4 && CRn <= 8)//Special handling for CR4 to CR8 + { + u8 cnvtbl1[]={0x20, 0x10, 0x14, 0x18, 0x1c}; + tmp_addr = cnvtbl1[CRn-4]; + } else { + tmp_addr = CRn*4; + } + if (zd_cmd == ZD_IOCTL_READ_PHY) { + zdreq->value = zd_readl(tmp_addr); + printk(KERN_DEBUG "CR%d=0x%x\n",CRn, zdreq->value); + } else {// ZD_IOCTL_WRITE_PHY + zd_writel(zdreq->value, tmp_addr); + printk(KERN_DEBUG "set CR%d=0x%x\n",CRn, zdreq->value); + } + release_ctrl_of_phy_req(regp); + break; + + case ZD_IOCTL_CARD_SETTING: + printk(KERN_DEBUG "zd1205: card setting\n"); + zd1205_show_card_setting(macp); + break; + + case ZD_IOCTL_HASH_DUMP: + printk(KERN_DEBUG "zd1205: aid = %x\n", zdreq->value); + zd1205_show_hash(macp, zdreq->value); + break; + + case ZD_IOCTL_RFD_DUMP: + printk(KERN_DEBUG "===== zd1205 rfd dump =====\n"); + zd1205_dump_rfds(macp); + break; + + case ZD_IOCTL_MEM_READ: { + u32 *p; + + p = (u32 *) bus_to_virt(zdreq->addr); + printk(KERN_DEBUG "zd1205: read memory addr: 0x%08x value: 0x%08x\n", zdreq->addr, *p); + break; + } + + case ZD_IOCTL_MEM_WRITE: { + u32 *p; + + p = (u32 *) bus_to_virt(zdreq->addr); + *p = zdreq->value; + printk(KERN_DEBUG "zd1205: write value: 0x%08x to memory addr: 0x%08x\n", zdreq->value, zdreq->addr); + break; + } + + case ZD_IOCTL_TX_RATE: + printk(KERN_DEBUG "zd1205: set tx rate = %d\n", zdreq->value); + + if (zdreq->value < 0x0c) { + macp->cardSetting.FixedRate = zdreq->value; + macp->bFixedRate = 1; + } else + macp->bFixedRate = 0; + break; + + case ZD_IOCTL_EEPROM: + printk(KERN_DEBUG "zd1205: dump eeprom\n"); + zd1205_dump_eeprom(macp); + break; + + /* Generate the beacon */ + case ZD_IOCTL_BCN: + dot11Obj.dbg_cmd |= DBG_CMD_BEACON; + printk(KERN_DEBUG "zd1205: configuration beacon\n"); + ConfigBcnFIFO(); + break; + + case ZD_IOCTL_REG_READ16: + tmp_value = zd1211_readl(zdreq->addr, false); + zdreq->value = tmp_value & 0xffff; + printk(KERN_DEBUG "zd1205 read register: reg = %4x, value = %4x\n", + zdreq->addr, zdreq->value); + break; + + case ZD_IOCTL_REG_WRITE16: + tmp_value = zdreq->value & 0xffff; + zd1211_writel(zdreq->addr, tmp_value, false); + printk(KERN_DEBUG "zd1205 write register: reg = %4x, value = %4x\n", + zdreq->addr, zdreq->value); + break; + + case ZD_IOCTL_CAM_READ: + printk(KERN_ERR "zd1205: cam read, addr: 0x%08x\n", zdreq->addr); + zd1205_cam_read(macp, zdreq->addr); + break; + + case ZD_IOCTL_CAM_WRITE: + printk(KERN_ERR "zd1205: cam write, addr: 0x%08x value: 0x%08x\n", zdreq->addr, zdreq->value); + zd1205_cam_write(macp, zdreq->addr, zdreq->value); + break; + + case ZD_IOCTL_CAM_RESET: + printk(KERN_ERR "zd1205: reset cam\n"); + zd1205_cam_rest(macp, zdreq->value); + break; + + case ZD_IOCTL_CONT_TX: + zd1205_cont_tx(macp, zdreq->value); + break; + case ZD_IOCTL_SET_MIC_CNT_ENABLE: + dot11Obj.MIC_CNT = zdreq->value>0?1:0; + printk("WPA MIC Counter Measure Feature : %s\n", + dot11Obj.MIC_CNT ? "Enable":"Disalbe"); + + break; + case ZD_IOCTL_GET_MIC_CNT_ENABLE: + printk("WPA MIC Counter Measure Feature : %s\n", + dot11Obj.MIC_CNT ? "Enable":"Disalbe"); + + break; + default : + printk(KERN_ERR "zd_dbg_ioctl: error command = %x\n", zd_cmd); + break; + } - case ZD_IOCTL_MEM_WRITE: { - u32 *p; - p = (u32 *) bus_to_virt(zdreq->addr); - *p = zdreq->value; - printk(KERN_DEBUG "zd1205: write value: 0x%08x to memory addr: 0x%08x\n", zdreq->value, zdreq->addr); - break; - } + return 0; +} - case ZD_IOCTL_TX_RATE: - printk(KERN_DEBUG "zd1205: set tx rate = %d\n", zdreq->value); - if (zdreq->value < 0x0c) { - macp->cardSetting.FixedRate = zdreq->value; - macp->bFixedRate = 1; - } else - macp->bFixedRate = 0; - break; - - case ZD_IOCTL_EEPROM: - printk(KERN_DEBUG "zd1205: dump eeprom\n"); - zd1205_dump_eeprom(macp); - break; - - default : - printk(KERN_ERR "zd1205: error command = %x\n", zd_cmd); - break; - } - return 0; + +void zd1205_cont_tx(struct zd1205_private *macp, u8 rate) +{ + + void *reg = dot11Obj.reg; + static u8 LastCont_TX_Rate=0; + printk(KERN_ERR "ZDContinuousTx,Rate=%d\n",rate); + + //if (le32_to_cpu(pZDRD->ZDRdLength) < sizeof(ZD_RD_STRUCT)) + //{ + // pZDRD->ZDRdLength = cpu_to_le32(sizeof(ZD_RD_STRUCT)); + // *BytesNeeded = sizeof(ZD_RD_STRUCT); + // *BytesRead = 0; + // Status = NDIS_STATUS_BUFFER_TOO_SHORT; + // break; + //} + + //macp->bContinueTxMode = le32_to_cpu(pZDRD->Buffer[0]); + //macp->bContinueTx = le32_to_cpu(pZDRD->Buffer[1]); + + /* Use the Fixed Rate instead of LastSentTxRate */ + //macp->LastZDContinuousTxRate = macp->cardSetting.LastSentTxRate; + //macp->LastZDContinuousTxRate = macp->cardSetting.FixedRate; + + // Roger 2004-11-10 , Set for Dr.Wang request , set 0x0001c4 when CCK mode with AL2230 + if (dot11Obj.rfMode == AL2230_RF) + { + //if (macp->cardSetting.LastSentTxRate > 3) { + if (LastCont_TX_Rate > 3) { + HW_Set_IF_Synthesizer(&dot11Obj, 0x0005a4); + } + //else if (macp->cardSetting.LastSentTxRate <= 3) { + else if (LastCont_TX_Rate <= 3) { + HW_Set_IF_Synthesizer(&dot11Obj, 0x0001c4); + } + } + LastCont_TX_Rate = rate; + + if(rate <= RATE_54M) + { // Start + u8 tmpChr = 0; + u32 RateTmp= 0; + u32 tmpvalue; + u32 nLoop; + LockPhyReg(&dot11Obj); + dot11Obj.SetReg(reg, ZD1205_CR2, 0x3F); + dot11Obj.SetReg(reg, ZD1205_CR138, 0x28); + dot11Obj.SetReg(reg, ZD1205_CR33, 0x20); + // Query CR60 until change to 0x04 + nLoop = 200; + while(nLoop--) { + dot11Obj.DelayUs(10*1000); // sleep 10ms + tmpvalue = dot11Obj.GetReg(reg, ZD1205_CR60); + + if(tmpvalue == 0x04) + break; + } + + UnLockPhyReg(&dot11Obj); + + printk(KERN_DEBUG "Start ContTx_Normal\n"); + + dot11Obj.bContinueTx = 1; + LockPhyReg(&dot11Obj); + /* In order to avoid the uninitial length problem, + force to set length to 0x20. + */ + dot11Obj.SetReg(reg, ZD1205_CR134, 0x20); + UnLockPhyReg(&dot11Obj); + + switch (rate) { + case RATE_6M: //6M + RateTmp = 0xB; + break; + case RATE_9M: //9M + RateTmp = 0xF; + break; + case RATE_12M: //12M + RateTmp = 0xA; + break; + case RATE_18M: //18M + RateTmp = 0xE; + break; + case RATE_24M: //24M + RateTmp = 0x9; + break; + case RATE_36M: //36M + RateTmp = 0xD; + break; + + case RATE_48M: //48M + RateTmp = 0x8; + break; + + case RATE_54M: //54M + RateTmp = 0xC; + break; + + default: + RateTmp = 0; + break; + } + + printk(KERN_DEBUG "RateTmp=0x%08x\n", RateTmp); + + if (RateTmp) { + LockPhyReg(&dot11Obj); + dot11Obj.SetReg(reg, ZD1205_CR132, RateTmp); + + //AcquireCtrOfPhyReg(Adapter); + tmpvalue = dot11Obj.GetReg(reg, ZD1205_CR159); + tmpvalue &= ~(BIT_0 + BIT_1 ); + tmpvalue |= BIT_2; + dot11Obj.SetReg(reg, ZD1205_CR159, tmpvalue); + + + dot11Obj.SetReg(reg, 0x644, 7); + + tmpvalue = dot11Obj.GetReg(reg, 0x648); + tmpvalue &= ~BIT_0; + dot11Obj.SetReg(reg, 0x648, tmpvalue); + UnLockPhyReg(&dot11Obj); + + } + + tmpChr = LastCont_TX_Rate; + printk(KERN_DEBUG "tmpChr=0x%x\n", tmpChr); + +#if 0 + + if (macp->preambleMode == 1) + macp->cardSetting.PreambleType = 0x00; + else if (macp->preambleMode == 2) + macp->cardSetting.PreambleType = 0x20; +#endif + + if (macp->cardSetting.PreambleType == SHORT_PREAMBLE) { + // short premable + tmpChr |= BIT_5; + } else { + // long premable + tmpChr &= ~BIT_5; + } + + if (macp->RegionCode == 0x10) + tmpChr &= ~BIT_6; //USA + if (macp->RegionCode == 0x40) + tmpChr |= BIT_6; //japan + + LockPhyReg(&dot11Obj); + dot11Obj.SetReg(reg, ZD1205_CR5, tmpChr); + dot11Obj.SetReg(reg, 0x644, 3); + UnLockPhyReg(&dot11Obj); + } else + { + u32 tmpvalue; + + // Roger 2004-11-10 , Set for Dr.Wang request , set 0x0001c4 when CCK mode with AL2230 + if (dot11Obj.rfMode == AL2230_RF) { + HW_Set_IF_Synthesizer(&dot11Obj, 0x0005a4); + } + + LockPhyReg(&dot11Obj); + dot11Obj.SetReg(reg, ZD1205_CR2, 0x26); + dot11Obj.SetReg(reg, ZD1205_CR138, 0xA8); + dot11Obj.SetReg(reg, ZD1205_CR33, 0x08); + UnLockPhyReg(&dot11Obj); + printk(KERN_DEBUG "Stop Normal Continuous Transmit\n"); + + dot11Obj.bContinueTx = 0; + LockPhyReg(&dot11Obj); + macp->PHYTestTimer = 30; + // ZD1205_WRITE_REGISTER(Adapter,CR122, 0x0); + UnLockPhyReg(&dot11Obj); + + if (LastCont_TX_Rate >= 4) { + LockPhyReg(&dot11Obj); + tmpvalue = dot11Obj.GetReg(reg, ZD1205_CR159); + tmpvalue &= ~(BIT_0 + BIT_1 + BIT_2 ); + dot11Obj.SetReg(reg, ZD1205_CR159, tmpvalue); + + dot11Obj.SetReg(reg, 0x644, 0); + + tmpvalue = dot11Obj.GetReg(reg, 0x648); + tmpvalue |= BIT_0; + dot11Obj.SetReg(reg, 0x648, tmpvalue); + UnLockPhyReg(&dot11Obj); + + } else { + LockPhyReg(&dot11Obj); + dot11Obj.SetReg(reg, 0x644, 0); + + tmpvalue = dot11Obj.GetReg(reg, 0x648); + tmpvalue |= BIT_0; + dot11Obj.SetReg(reg, 0x648, tmpvalue); + UnLockPhyReg(&dot11Obj); + } + + //dot11Obj.SetReg(reg, ZD_PS_Ctrl, 0x1); + //Roger 2004-11-16 SoftwareReset here to solve RX fail after TxContinue problem + { + //zd1205_device_reset(macp); + //Card resetting , copying from driver of ZyNOS + //It's a little different from ours + u32 tmp_value; + /* Update the value of Beacon Interval and Pre TBTT */ + update_beacon_interval(macp, 0x2); + zd_writel(0x01, Pre_TBTT); + + LockPhyReg(&dot11Obj); + dot11Obj.SetReg(dot11Obj.reg, ZD1205_PHY_END, 0x8); + tmp_value = zd_readl(PS_Ctrl); + zd_writel(tmp_value | BIT_5, PS_Ctrl); + dot11Obj.SetReg(dot11Obj.reg, ZD1205_PHY_END, 0x0); + UnLockPhyReg(&dot11Obj); + + dot11Obj.bDeviceInSleep = 1; + dot11Obj.DelayUs(5000); + } + } + + return 0; } + +#endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdtkipseed.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdtkipseed.c @@ -1,27 +1,3 @@ -/* $Id: zdtkipseed.c,v 1.5 2005/03/27 20:47:39 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #include "zd80211.h" #if!defined(AMAC) @@ -29,332 +5,346 @@ /* The Sbox is reduced to 2 16-bit wide tables, each with 256 entries. */ /* The 2nd table is the same as the 1st but with the upper and lower */ /* bytes swapped. To allow an endian tolerant implementation, the byte */ -/* halves have been expressed independently here. */ -unsigned int Tkip_Sbox_Lower[256] = { - 0xA5,0x84,0x99,0x8D,0x0D,0xBD,0xB1,0x54, - 0x50,0x03,0xA9,0x7D,0x19,0x62,0xE6,0x9A, - 0x45,0x9D,0x40,0x87,0x15,0xEB,0xC9,0x0B, - 0xEC,0x67,0xFD,0xEA,0xBF,0xF7,0x96,0x5B, - 0xC2,0x1C,0xAE,0x6A,0x5A,0x41,0x02,0x4F, - 0x5C,0xF4,0x34,0x08,0x93,0x73,0x53,0x3F, - 0x0C,0x52,0x65,0x5E,0x28,0xA1,0x0F,0xB5, - 0x09,0x36,0x9B,0x3D,0x26,0x69,0xCD,0x9F, - 0x1B,0x9E,0x74,0x2E,0x2D,0xB2,0xEE,0xFB, - 0xF6,0x4D,0x61,0xCE,0x7B,0x3E,0x71,0x97, - 0xF5,0x68,0x00,0x2C,0x60,0x1F,0xC8,0xED, - 0xBE,0x46,0xD9,0x4B,0xDE,0xD4,0xE8,0x4A, - 0x6B,0x2A,0xE5,0x16,0xC5,0xD7,0x55,0x94, - 0xCF,0x10,0x06,0x81,0xF0,0x44,0xBA,0xE3, - 0xF3,0xFE,0xC0,0x8A,0xAD,0xBC,0x48,0x04, - 0xDF,0xC1,0x75,0x63,0x30,0x1A,0x0E,0x6D, - 0x4C,0x14,0x35,0x2F,0xE1,0xA2,0xCC,0x39, - 0x57,0xF2,0x82,0x47,0xAC,0xE7,0x2B,0x95, - 0xA0,0x98,0xD1,0x7F,0x66,0x7E,0xAB,0x83, - 0xCA,0x29,0xD3,0x3C,0x79,0xE2,0x1D,0x76, - 0x3B,0x56,0x4E,0x1E,0xDB,0x0A,0x6C,0xE4, - 0x5D,0x6E,0xEF,0xA6,0xA8,0xA4,0x37,0x8B, - 0x32,0x43,0x59,0xB7,0x8C,0x64,0xD2,0xE0, - 0xB4,0xFA,0x07,0x25,0xAF,0x8E,0xE9,0x18, - 0xD5,0x88,0x6F,0x72,0x24,0xF1,0xC7,0x51, - 0x23,0x7C,0x9C,0x21,0xDD,0xDC,0x86,0x85, - 0x90,0x42,0xC4,0xAA,0xD8,0x05,0x01,0x12, - 0xA3,0x5F,0xF9,0xD0,0x91,0x58,0x27,0xB9, - 0x38,0x13,0xB3,0x33,0xBB,0x70,0x89,0xA7, - 0xB6,0x22,0x92,0x20,0x49,0xFF,0x78,0x7A, - 0x8F,0xF8,0x80,0x17,0xDA,0x31,0xC6,0xB8, - 0xC3,0xB0,0x77,0x11,0xCB,0xFC,0xD6,0x3A -}; +/* halves have been expressed independently here. */ +unsigned int Tkip_Sbox_Lower[256] = + { + 0xA5,0x84,0x99,0x8D,0x0D,0xBD,0xB1,0x54, + 0x50,0x03,0xA9,0x7D,0x19,0x62,0xE6,0x9A, + 0x45,0x9D,0x40,0x87,0x15,0xEB,0xC9,0x0B, + 0xEC,0x67,0xFD,0xEA,0xBF,0xF7,0x96,0x5B, + 0xC2,0x1C,0xAE,0x6A,0x5A,0x41,0x02,0x4F, + 0x5C,0xF4,0x34,0x08,0x93,0x73,0x53,0x3F, + 0x0C,0x52,0x65,0x5E,0x28,0xA1,0x0F,0xB5, + 0x09,0x36,0x9B,0x3D,0x26,0x69,0xCD,0x9F, + 0x1B,0x9E,0x74,0x2E,0x2D,0xB2,0xEE,0xFB, + 0xF6,0x4D,0x61,0xCE,0x7B,0x3E,0x71,0x97, + 0xF5,0x68,0x00,0x2C,0x60,0x1F,0xC8,0xED, + 0xBE,0x46,0xD9,0x4B,0xDE,0xD4,0xE8,0x4A, + 0x6B,0x2A,0xE5,0x16,0xC5,0xD7,0x55,0x94, + 0xCF,0x10,0x06,0x81,0xF0,0x44,0xBA,0xE3, + 0xF3,0xFE,0xC0,0x8A,0xAD,0xBC,0x48,0x04, + 0xDF,0xC1,0x75,0x63,0x30,0x1A,0x0E,0x6D, + 0x4C,0x14,0x35,0x2F,0xE1,0xA2,0xCC,0x39, + 0x57,0xF2,0x82,0x47,0xAC,0xE7,0x2B,0x95, + 0xA0,0x98,0xD1,0x7F,0x66,0x7E,0xAB,0x83, + 0xCA,0x29,0xD3,0x3C,0x79,0xE2,0x1D,0x76, + 0x3B,0x56,0x4E,0x1E,0xDB,0x0A,0x6C,0xE4, + 0x5D,0x6E,0xEF,0xA6,0xA8,0xA4,0x37,0x8B, + 0x32,0x43,0x59,0xB7,0x8C,0x64,0xD2,0xE0, + 0xB4,0xFA,0x07,0x25,0xAF,0x8E,0xE9,0x18, + 0xD5,0x88,0x6F,0x72,0x24,0xF1,0xC7,0x51, + 0x23,0x7C,0x9C,0x21,0xDD,0xDC,0x86,0x85, + 0x90,0x42,0xC4,0xAA,0xD8,0x05,0x01,0x12, + 0xA3,0x5F,0xF9,0xD0,0x91,0x58,0x27,0xB9, + 0x38,0x13,0xB3,0x33,0xBB,0x70,0x89,0xA7, + 0xB6,0x22,0x92,0x20,0x49,0xFF,0x78,0x7A, + 0x8F,0xF8,0x80,0x17,0xDA,0x31,0xC6,0xB8, + 0xC3,0xB0,0x77,0x11,0xCB,0xFC,0xD6,0x3A}; + unsigned int Tkip_Sbox_Upper[256] = -{ - 0xC6,0xF8,0xEE,0xF6,0xFF,0xD6,0xDE,0x91, - 0x60,0x02,0xCE,0x56,0xE7,0xB5,0x4D,0xEC, - 0x8F,0x1F,0x89,0xFA,0xEF,0xB2,0x8E,0xFB, - 0x41,0xB3,0x5F,0x45,0x23,0x53,0xE4,0x9B, - 0x75,0xE1,0x3D,0x4C,0x6C,0x7E,0xF5,0x83, - 0x68,0x51,0xD1,0xF9,0xE2,0xAB,0x62,0x2A, - 0x08,0x95,0x46,0x9D,0x30,0x37,0x0A,0x2F, - 0x0E,0x24,0x1B,0xDF,0xCD,0x4E,0x7F,0xEA, - 0x12,0x1D,0x58,0x34,0x36,0xDC,0xB4,0x5B, - 0xA4,0x76,0xB7,0x7D,0x52,0xDD,0x5E,0x13, - 0xA6,0xB9,0x00,0xC1,0x40,0xE3,0x79,0xB6, - 0xD4,0x8D,0x67,0x72,0x94,0x98,0xB0,0x85, - 0xBB,0xC5,0x4F,0xED,0x86,0x9A,0x66,0x11, - 0x8A,0xE9,0x04,0xFE,0xA0,0x78,0x25,0x4B, - 0xA2,0x5D,0x80,0x05,0x3F,0x21,0x70,0xF1, - 0x63,0x77,0xAF,0x42,0x20,0xE5,0xFD,0xBF, - 0x81,0x18,0x26,0xC3,0xBE,0x35,0x88,0x2E, - 0x93,0x55,0xFC,0x7A,0xC8,0xBA,0x32,0xE6, - 0xC0,0x19,0x9E,0xA3,0x44,0x54,0x3B,0x0B, - 0x8C,0xC7,0x6B,0x28,0xA7,0xBC,0x16,0xAD, - 0xDB,0x64,0x74,0x14,0x92,0x0C,0x48,0xB8, - 0x9F,0xBD,0x43,0xC4,0x39,0x31,0xD3,0xF2, - 0xD5,0x8B,0x6E,0xDA,0x01,0xB1,0x9C,0x49, - 0xD8,0xAC,0xF3,0xCF,0xCA,0xF4,0x47,0x10, - 0x6F,0xF0,0x4A,0x5C,0x38,0x57,0x73,0x97, - 0xCB,0xA1,0xE8,0x3E,0x96,0x61,0x0D,0x0F, - 0xE0,0x7C,0x71,0xCC,0x90,0x06,0xF7,0x1C, - 0xC2,0x6A,0xAE,0x69,0x17,0x99,0x3A,0x27, - 0xD9,0xEB,0x2B,0x22,0xD2,0xA9,0x07,0x33, - 0x2D,0x3C,0x15,0xC9,0x87,0xAA,0x50,0xA5, - 0x03,0x59,0x09,0x1A,0x65,0xD7,0x84,0xD0, - 0x82,0x29,0x5A,0x1E,0x7B,0xA8,0x6D,0x2C -}; + { + 0xC6,0xF8,0xEE,0xF6,0xFF,0xD6,0xDE,0x91, + 0x60,0x02,0xCE,0x56,0xE7,0xB5,0x4D,0xEC, + 0x8F,0x1F,0x89,0xFA,0xEF,0xB2,0x8E,0xFB, + 0x41,0xB3,0x5F,0x45,0x23,0x53,0xE4,0x9B, + 0x75,0xE1,0x3D,0x4C,0x6C,0x7E,0xF5,0x83, + 0x68,0x51,0xD1,0xF9,0xE2,0xAB,0x62,0x2A, + 0x08,0x95,0x46,0x9D,0x30,0x37,0x0A,0x2F, + 0x0E,0x24,0x1B,0xDF,0xCD,0x4E,0x7F,0xEA, + 0x12,0x1D,0x58,0x34,0x36,0xDC,0xB4,0x5B, + 0xA4,0x76,0xB7,0x7D,0x52,0xDD,0x5E,0x13, + 0xA6,0xB9,0x00,0xC1,0x40,0xE3,0x79,0xB6, + 0xD4,0x8D,0x67,0x72,0x94,0x98,0xB0,0x85, + 0xBB,0xC5,0x4F,0xED,0x86,0x9A,0x66,0x11, + 0x8A,0xE9,0x04,0xFE,0xA0,0x78,0x25,0x4B, + 0xA2,0x5D,0x80,0x05,0x3F,0x21,0x70,0xF1, + 0x63,0x77,0xAF,0x42,0x20,0xE5,0xFD,0xBF, + 0x81,0x18,0x26,0xC3,0xBE,0x35,0x88,0x2E, + 0x93,0x55,0xFC,0x7A,0xC8,0xBA,0x32,0xE6, + 0xC0,0x19,0x9E,0xA3,0x44,0x54,0x3B,0x0B, + 0x8C,0xC7,0x6B,0x28,0xA7,0xBC,0x16,0xAD, + 0xDB,0x64,0x74,0x14,0x92,0x0C,0x48,0xB8, + 0x9F,0xBD,0x43,0xC4,0x39,0x31,0xD3,0xF2, + 0xD5,0x8B,0x6E,0xDA,0x01,0xB1,0x9C,0x49, + 0xD8,0xAC,0xF3,0xCF,0xCA,0xF4,0x47,0x10, + 0x6F,0xF0,0x4A,0x5C,0x38,0x57,0x73,0x97, + 0xCB,0xA1,0xE8,0x3E,0x96,0x61,0x0D,0x0F, + + 0xE0,0x7C,0x71,0xCC,0x90,0x06,0xF7,0x1C, + 0xC2,0x6A,0xAE,0x69,0x17,0x99,0x3A,0x27, + 0xD9,0xEB,0x2B,0x22,0xD2,0xA9,0x07,0x33, + 0x2D,0x3C,0x15,0xC9,0x87,0xAA,0x50,0xA5, + 0x03,0x59,0x09,0x1A,0x65,0xD7,0x84,0xD0, + 0x82,0x29,0x5A,0x1E,0x7B,0xA8,0x6D,0x2C}; + unsigned int tkip_sbox(unsigned int index) /************************************************************/ -/* tkip_sbox() */ +/* tkip_sbox() */ /* Returns a 16 bit value from a 64K entry table. The Table */ /* is synthesized from two 256 entry byte wide tables. */ /************************************************************/ { - unsigned int index_low; - unsigned int index_high; - unsigned int left, right; - - index_low = (index & 0xFF); - index_high = ((index >> 8) & 0xFF); - - left = Tkip_Sbox_Lower[index_low] + (Tkip_Sbox_Upper[index_low] << 8); - right = Tkip_Sbox_Upper[index_high] + (Tkip_Sbox_Lower[index_high] << 8); - return (left ^ right); + unsigned int index_low; + unsigned int index_high; + unsigned int left, right; + + index_low = (index & 0xFF); + index_high = ((index >> 8) & 0xFF); + + left = Tkip_Sbox_Lower[index_low] + (Tkip_Sbox_Upper[index_low] << 8); + right = Tkip_Sbox_Upper[index_high] + (Tkip_Sbox_Lower[index_high] << 8); + return (left ^ right); } + unsigned int rotr1(unsigned int a) // rotate right by 1 bit. { - unsigned int b; + unsigned int b; - if (a & 0x01) { - b = (a >> 1) | 0x8000; - } else { - b = (a >> 1) & 0x7fff; - } + if (a & 0x01) + { + b = (a >> 1) | 0x8000; + } else + { + b = (a >> 1) & 0x7fff; + } - return b; + return b; } + /***********************************************************************/ -/* */ -/* FUNCTION DESCRIPTION Tkip_clear */ -/* */ -/* clear all variable used in tkip seed generation function */ -/* */ -/* AUTHOR */ -/* Liam,Hwu ZyDAS Technology Corporation */ -/* */ +/* */ +/* FUNCTION DESCRIPTION Tkip_clear */ +/* */ +/* clear all variable used in tkip seed generation function */ +/* */ +/* AUTHOR */ +/* Liam,Hwu ZyDAS Technology Corporation */ +/* */ /***********************************************************************/ void Tkip_clear(Seedvar *Seed) { - memset(Seed, 0, sizeof(Seedvar)); -// Seed->IV16=1; // According to WPA std Ver2.0 8.3.2.4.4, TSC should be - // initialized to one. - return; + memset(Seed, 0, sizeof(Seedvar)); + // Seed->IV16=1; // According to WPA std Ver2.0 8.3.2.4.4, TSC should be + // initialized to one. + return; } + /***********************************************************************/ -/* */ -/* FUNCTION DESCRIPTION Tkip_setkey */ -/* */ -/* Set Temporal key(TK) and Transmitter Address(TA) */ -/* */ -/* AUTHOR */ -/* Liam,Hwu ZyDAS Technology Corporation */ -/* */ +/* */ +/* FUNCTION DESCRIPTION Tkip_setkey */ +/* */ +/* Set Temporal key(TK) and Transmitter Address(TA) */ +/* */ +/* AUTHOR */ +/* Liam,Hwu ZyDAS Technology Corporation */ +/* */ /***********************************************************************/ void Tkip_setkey(U8 * key, U8 *ta, Seedvar *Seed) { - memcpy(Seed->TA, ta, 6); - memcpy(Seed->TK, key, 16); + memcpy(Seed->TA, ta, 6); + memcpy(Seed->TK, key, 16); } + /***********************************************************************/ -/* */ -/* FUNCTION DESCRIPTION Tkip_Init */ -/* */ -/* TKIP seed generation function initialization routine */ -/* */ -/* AUTHOR */ -/* Liam,Hwu ZyDAS Technology Corporation */ -/* */ +/* */ +/* FUNCTION DESCRIPTION Tkip_Init */ +/* */ +/* TKIP seed generation function initialization routine */ +/* */ +/* AUTHOR */ +/* Liam,Hwu ZyDAS Technology Corporation */ +/* */ /***********************************************************************/ void Tkip_Init(U8 *key, U8 *ta, Seedvar *Seed, U8 *initiv) { - U16 iv16; - U32 iv32; - int i; - - Tkip_clear(Seed); - Tkip_setkey(key, ta, Seed); - - iv16 = *initiv++; - iv16 += *initiv << 8; - initiv++; - iv32 = 0; - - for (i=0; i<4; i++) { // initiv is little endian - iv32 += *initiv << (i*8); - *initiv++; - } + U16 iv16; + U32 iv32; + int i; + + Tkip_clear(Seed); + Tkip_setkey(key, ta, Seed); + + iv16 = *initiv++; + iv16 += *initiv << 8; + initiv++; + iv32 = 0; + + for (i=0; i<4; i++) { // initiv is little endian + iv32 += *initiv << (i*8); + *initiv++; + } - Seed->IV32 = iv32+1; // Force Recaculating on Tkip Phase1 - Tkip_phase1_key_mix(iv32, Seed); + Seed->IV32 = iv32+1; // Force Recaculating on Tkip Phase1 + Tkip_phase1_key_mix(iv32, Seed); - Seed->IV16 = iv16; - Seed->IV32 = iv32; + Seed->IV16 = iv16; + Seed->IV32 = iv32; } + + /***********************************************************************/ -/* */ -/* FUNCTION DESCRIPTION Tkip_phase1_key_mix */ -/* */ -/* TKIP seed generation function for phase1 key mixing */ -/* */ -/* AUTHOR */ -/* Liam,Hwu ZyDAS Technology Corporation */ -/* Return value: */ -/* Return TRUE if expected IV sequence is correct. */ -/* */ +/* */ +/* FUNCTION DESCRIPTION Tkip_phase1_key_mix */ +/* */ +/* TKIP seed generation function for phase1 key mixing */ +/* */ +/* AUTHOR */ +/* Liam,Hwu ZyDAS Technology Corporation */ +/* Return value: */ +/* Return TRUE if expected IV sequence is correct. */ +/* */ /***********************************************************************/ char Tkip_phase1_key_mix(U32 iv32, Seedvar *Seed) { - unsigned short tsc0; - unsigned short tsc1; - int i, j; - - if (iv32 == Seed->IV32) //don't need to proceed this function the same - return 1; - else { - tsc0 = (unsigned short)((iv32 >> 16) & 0xffff); /* msb */ - tsc1 = (unsigned short)(iv32 & 0xffff); - - /* Phase 1, step 1 */ - Seed->TTAK[0] = tsc1; - Seed->TTAK[1] = tsc0; - Seed->TTAK[2] = (unsigned short)(Seed->TA[0] + (Seed->TA[1] <<8)); - Seed->TTAK[3] = (unsigned short)(Seed->TA[2] + (Seed->TA[3] <<8)); - Seed->TTAK[4] = (unsigned short)(Seed->TA[4] + (Seed->TA[5] <<8)); - - /* Phase 1, step 2 */ - for (i=0; i<8; i++) { - j = 2*(i & 1); - Seed->TTAK[0] = (Seed->TTAK[0] + tkip_sbox(Seed->TTAK[4] - ^ Mk16(Seed->TK[1+j],Seed->TK[j]))) & 0xffff; - Seed->TTAK[1] = (Seed->TTAK[1] + tkip_sbox(Seed->TTAK[0] - ^ Mk16(Seed->TK[5+j],Seed->TK[4+j] ))) & 0xffff; - Seed->TTAK[2] = (Seed->TTAK[2] + tkip_sbox(Seed->TTAK[1] - ^ Mk16(Seed->TK[9+j],Seed->TK[8+j] ))) & 0xffff; - Seed->TTAK[3] = (Seed->TTAK[3] + tkip_sbox(Seed->TTAK[2] - ^ Mk16(Seed->TK[13+j],Seed->TK[12+j])))& 0xffff; - Seed->TTAK[4] = (Seed->TTAK[4] + tkip_sbox(Seed->TTAK[3] - ^ Mk16(Seed->TK[1+j] ,Seed->TK[j]))) & 0xffff; - Seed->TTAK[4] = (Seed->TTAK[4] + i) & 0xffff; - } - - if (iv32 == (Seed->IV32+1)) { - Seed->iv32tmp = iv32; - return 1; - } else - return 0; - } + unsigned short tsc0; + unsigned short tsc1; + int i, j; + + if (iv32 == Seed->IV32) //don't need to proceed this function the same + return 1; + else { + tsc0 = (unsigned short)((iv32 >> 16) & 0xffff); /* msb */ + tsc1 = (unsigned short)(iv32 & 0xffff); + + /* Phase 1, step 1 */ + Seed->TTAK[0] = tsc1; + Seed->TTAK[1] = tsc0; + Seed->TTAK[2] = (unsigned short)(Seed->TA[0] + (Seed->TA[1] <<8)); + Seed->TTAK[3] = (unsigned short)(Seed->TA[2] + (Seed->TA[3] <<8)); + Seed->TTAK[4] = (unsigned short)(Seed->TA[4] + (Seed->TA[5] <<8)); + + /* Phase 1, step 2 */ + for (i=0; i<8; i++) { + j = 2*(i & 1); + Seed->TTAK[0] = (Seed->TTAK[0] + tkip_sbox(Seed->TTAK[4] + ^ Mk16(Seed->TK[1+j],Seed->TK[j]))) & 0xffff; + Seed->TTAK[1] = (Seed->TTAK[1] + tkip_sbox(Seed->TTAK[0] + ^ Mk16(Seed->TK[5+j],Seed->TK[4+j] ))) & 0xffff; + Seed->TTAK[2] = (Seed->TTAK[2] + tkip_sbox(Seed->TTAK[1] + ^ Mk16(Seed->TK[9+j],Seed->TK[8+j] ))) & 0xffff; + Seed->TTAK[3] = (Seed->TTAK[3] + tkip_sbox(Seed->TTAK[2] + ^ Mk16(Seed->TK[13+j],Seed->TK[12+j])))& 0xffff; + Seed->TTAK[4] = (Seed->TTAK[4] + tkip_sbox(Seed->TTAK[3] + ^ Mk16(Seed->TK[1+j] ,Seed->TK[j] ))) & 0xffff; + Seed->TTAK[4] = (Seed->TTAK[4] + i) & 0xffff; + } + + if (iv32 == (Seed->IV32+1)) { + Seed->iv32tmp = iv32; + return 1; + } else + return 0; + } } + /***********************************************************************/ -/* */ -/* FUNCTION DESCRIPTION Tkip_phase2_key_mix */ -/* */ -/* TKIP seed generation function for phase2 key mixing */ -/* */ -/* AUTHOR */ -/* Liam,Hwu ZyDAS Technology Corporation */ -/* Return value: */ -/* Return TRUE if expected IV sequence is correct. */ -/* */ +/* */ +/* FUNCTION DESCRIPTION Tkip_phase2_key_mix */ +/* */ +/* TKIP seed generation function for phase2 key mixing */ +/* */ +/* AUTHOR */ +/* Liam,Hwu ZyDAS Technology Corporation */ +/* Return value: */ +/* Return TRUE if expected IV sequence is correct. */ +/* */ /***********************************************************************/ char Tkip_phase2_key_mix(U16 iv16, Seedvar *Seed) { - unsigned int tsc2; + unsigned int tsc2; - tsc2 = iv16; - /* Phase 2, Step 1 */ - Seed->ppk[0] = Seed->TTAK[0]; - Seed->ppk[1] = Seed->TTAK[1]; - Seed->ppk[2] = Seed->TTAK[2]; - Seed->ppk[3] = Seed->TTAK[3]; - Seed->ppk[4] = Seed->TTAK[4]; - Seed->ppk[5] = (Seed->TTAK[4] + tsc2) & 0xffff; - - /* Phase2, Step 2 */ - Seed->ppk[0] = Seed->ppk[0] + tkip_sbox(Seed->ppk[5] ^ Mk16(Seed->TK[1],Seed->TK[0])) ; - Seed->ppk[1] = Seed->ppk[1] + tkip_sbox(Seed->ppk[0] ^ Mk16(Seed->TK[3],Seed->TK[2])) ; - Seed->ppk[2] = Seed->ppk[2] + tkip_sbox(Seed->ppk[1] ^ Mk16(Seed->TK[5],Seed->TK[4])) ; - Seed->ppk[3] = Seed->ppk[3] + tkip_sbox(Seed->ppk[2] ^ Mk16(Seed->TK[7],Seed->TK[6])) ; - Seed->ppk[4] = Seed->ppk[4] + tkip_sbox(Seed->ppk[3] ^ Mk16(Seed->TK[9],Seed->TK[8] )) ; - Seed->ppk[5] = Seed->ppk[5] + tkip_sbox(Seed->ppk[4] ^ Mk16(Seed->TK[11],Seed->TK[10])) ; - - Seed->ppk[0] = Seed->ppk[0] + rotr1(Seed->ppk[5] ^ Mk16(Seed->TK[13],Seed->TK[12])); - Seed->ppk[1] = Seed->ppk[1] + rotr1(Seed->ppk[0] ^ Mk16(Seed->TK[15],Seed->TK[14])); - Seed->ppk[2] = Seed->ppk[2] + rotr1(Seed->ppk[1]); - Seed->ppk[3] = Seed->ppk[3] + rotr1(Seed->ppk[2]); - Seed->ppk[4] = Seed->ppk[4] + rotr1(Seed->ppk[3]); - Seed->ppk[5] = Seed->ppk[5] + rotr1(Seed->ppk[4]); - - if (iv16 == 0) { - if (Seed->IV16 == 0xffff) { - Seed->iv16tmp = 0; - return 1; - } else - return 0; - } else if (iv16 == (Seed->IV16+1)) { - Seed->iv16tmp = iv16; - return 1; - } else - return 0; + tsc2 = iv16; + /* Phase 2, Step 1 */ + Seed->ppk[0] = Seed->TTAK[0]; + Seed->ppk[1] = Seed->TTAK[1]; + Seed->ppk[2] = Seed->TTAK[2]; + Seed->ppk[3] = Seed->TTAK[3]; + Seed->ppk[4] = Seed->TTAK[4]; + Seed->ppk[5] = (Seed->TTAK[4] + tsc2) & 0xffff; + + /* Phase2, Step 2 */ + Seed->ppk[0] = Seed->ppk[0] + tkip_sbox(Seed->ppk[5] ^ Mk16(Seed->TK[1],Seed->TK[0])) ; + Seed->ppk[1] = Seed->ppk[1] + tkip_sbox(Seed->ppk[0] ^ Mk16(Seed->TK[3],Seed->TK[2])) ; + Seed->ppk[2] = Seed->ppk[2] + tkip_sbox(Seed->ppk[1] ^ Mk16(Seed->TK[5],Seed->TK[4])) ; + Seed->ppk[3] = Seed->ppk[3] + tkip_sbox(Seed->ppk[2] ^ Mk16(Seed->TK[7],Seed->TK[6])) ; + Seed->ppk[4] = Seed->ppk[4] + tkip_sbox(Seed->ppk[3] ^ Mk16(Seed->TK[9],Seed->TK[8] )) ; + Seed->ppk[5] = Seed->ppk[5] + tkip_sbox(Seed->ppk[4] ^ Mk16(Seed->TK[11],Seed->TK[10])) ; + + Seed->ppk[0] = Seed->ppk[0] + rotr1(Seed->ppk[5] ^ Mk16(Seed->TK[13],Seed->TK[12])); + Seed->ppk[1] = Seed->ppk[1] + rotr1(Seed->ppk[0] ^ Mk16(Seed->TK[15],Seed->TK[14])); + Seed->ppk[2] = Seed->ppk[2] + rotr1(Seed->ppk[1]); + Seed->ppk[3] = Seed->ppk[3] + rotr1(Seed->ppk[2]); + Seed->ppk[4] = Seed->ppk[4] + rotr1(Seed->ppk[3]); + Seed->ppk[5] = Seed->ppk[5] + rotr1(Seed->ppk[4]); + + if (iv16 == 0) { + if (Seed->IV16 == 0xffff) { + Seed->iv16tmp = 0; + return 1; + } else + return 0; + } else if (iv16 == (Seed->IV16+1)) { + Seed->iv16tmp = iv16; + return 1; + } else + return 0; } + /***********************************************************************/ -/* */ -/* FUNCTION DESCRIPTION Tkip_getseeds */ -/* */ -/* Get RC4Key seeds generated by TKIP */ -/* */ -/* AUTHOR */ -/* Liam,Hwu ZyDAS Technology Corporation */ -/* */ +/* */ +/* FUNCTION DESCRIPTION Tkip_getseeds */ +/* */ + +/* Get RC4Key seeds generated by TKIP */ +/* */ +/* AUTHOR */ +/* Liam,Hwu ZyDAS Technology Corporation */ +/* */ /***********************************************************************/ void Tkip_getseeds(U16 iv16, U8 *RC4Key, Seedvar *Seed) { - RC4Key[0] = Hi8(iv16); - RC4Key[1] = (Hi8(iv16) | 0x20) & 0x7f; - RC4Key[2] = Lo8(iv16); - RC4Key[3] = ((Seed->ppk[5] ^ Mk16(Seed->TK[1],Seed->TK[0]))>>1) & 0xff; - RC4Key[4] = Seed->ppk[0] & 0xff; - RC4Key[5] = Seed->ppk[0] >> 8 ; - RC4Key[6] = Seed->ppk[1] & 0xff; - RC4Key[7] = Seed->ppk[1] >> 8 ; - RC4Key[8] = Seed->ppk[2] & 0xff; - RC4Key[9] = Seed->ppk[2] >> 8 ; - RC4Key[10] = Seed->ppk[3] & 0xff; - RC4Key[11] = Seed->ppk[3] >> 8 ; - RC4Key[12] = Seed->ppk[4] & 0xff; - RC4Key[13] = Seed->ppk[4] >> 8 ; - RC4Key[14] = Seed->ppk[5] & 0xff; - RC4Key[15] = Seed->ppk[5] >> 8 ; + RC4Key[0] = Hi8(iv16); + RC4Key[1] = (Hi8(iv16) | 0x20) & 0x7f; + RC4Key[2] = Lo8(iv16); + RC4Key[3] = ((Seed->ppk[5] ^ Mk16(Seed->TK[1],Seed->TK[0]))>>1) & 0xff; + RC4Key[4] = Seed->ppk[0] & 0xff; + RC4Key[5] = Seed->ppk[0] >> 8 ; + RC4Key[6] = Seed->ppk[1] & 0xff; + RC4Key[7] = Seed->ppk[1] >> 8 ; + RC4Key[8] = Seed->ppk[2] & 0xff; + RC4Key[9] = Seed->ppk[2] >> 8 ; + RC4Key[10] = Seed->ppk[3] & 0xff; + RC4Key[11] = Seed->ppk[3] >> 8 ; + RC4Key[12] = Seed->ppk[4] & 0xff; + RC4Key[13] = Seed->ppk[4] >> 8 ; + RC4Key[14] = Seed->ppk[5] & 0xff; + RC4Key[15] = Seed->ppk[5] >> 8 ; } + /***********************************************************************/ -/* */ -/* FUNCTION DESCRIPTION Tkip_updateiv */ -/* */ -/* update stored iv value */ -/* */ -/* AUTHOR */ -/* Liam,Hwu ZyDAS Technology Corporation */ -/* */ +/* */ +/* FUNCTION DESCRIPTION Tkip_updateiv */ +/* */ +/* update stored iv value */ +/* */ +/* AUTHOR */ +/* Liam,Hwu ZyDAS Technology Corporation */ +/* */ /***********************************************************************/ void Tkip_updateiv(Seedvar *Seed) { - Seed->IV16 = Seed->iv16tmp; - Seed->IV32 = Seed->iv32tmp; + Seed->IV16 = Seed->iv16tmp; + Seed->IV32 = Seed->iv32tmp; } #endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zd1211_wext.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zd1211_wext.h @@ -0,0 +1,152 @@ +#ifndef _zd1211_wext_h_ +#define _zd1211_wext_h_ + + +#if WIRELESS_EXT < 18 + +#define SIOCSIWGENIE 0x8B30 +#define SIOCSIWMLME 0x8B16 +#define SIOCSIWAUTH 0x8B32 +#define SIOCSIWENCODEEXT 0x8B34 + +#define IW_AUTH_WPA_VERSION 0 +#define IW_AUTH_CIPHER_PAIRWISE 1 +#define IW_AUTH_CIPHER_GROUP 2 +#define IW_AUTH_KEY_MGMT 3 +#define IW_AUTH_TKIP_COUNTERMEASURES 4 +#define IW_AUTH_DROP_UNENCRYPTED 5 +#define IW_AUTH_80211_AUTH_ALG 6 +#define IW_AUTH_WPA_ENABLED 7 +#define IW_AUTH_RX_UNENCRYPTED_EAPOL 8 +#define IW_AUTH_ROAMING_CONTROL 9 +#define IW_AUTH_PRIVACY_INVOKED 10 + +#define IW_AUTH_WPA_VERSION_DISABLED 0x00000001 +#define IW_AUTH_WPA_VERSION_WPA 0x00000002 +#define IW_AUTH_WPA_VERSION_WPA2 0x00000004 + +#define IW_AUTH_CIPHER_NONE 0x00000001 +#define IW_AUTH_CIPHER_WEP40 0x00000002 +#define IW_AUTH_CIPHER_TKIP 0x00000004 +#define IW_AUTH_CIPHER_CCMP 0x00000008 +#define IW_AUTH_CIPHER_WEP104 0x00000010 + +#define IW_AUTH_KEY_MGMT_802_1X 1 +#define IW_AUTH_KEY_MGMT_PSK 2 + +#define IW_AUTH_ALG_OPEN_SYSTEM 0x00000001 +#define IW_AUTH_ALG_SHARED_KEY 0x00000002 +#define IW_AUTH_ALG_LEAP 0x00000004 + +#define IW_AUTH_ROAMING_ENABLE 0 +#define IW_AUTH_ROAMING_DISABLE 1 + +#define IW_ENCODE_SEQ_MAX_SIZE 8 + +#define IW_ENCODE_ALG_NONE 0 +#define IW_ENCODE_ALG_WEP 1 +#define IW_ENCODE_ALG_TKIP 2 +#define IW_ENCODE_ALG_CCMP 3 + + +struct iw_encode_ext +{ + __u32 ext_flags; /* IW_ENCODE_EXT_* */ + __u8 tx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */ + __u8 rx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */ + struct sockaddr addr; /* ff:ff:ff:ff:ff:ff for broadcast/multicast + * (group) keys or unicast address for + * individual keys */ + __u16 alg; /* IW_ENCODE_ALG_* */ + __u16 key_len; + __u8 key[0]; +}; + + +struct iw_mlme +{ + __u16 cmd; /* IW_MLME_* */ + __u16 reason_code; + struct sockaddr addr; +}; + +#endif // WIRELESS_EXT < 18 + + +#endif // _zd1211_wext_h_ +#ifndef _zd1211_wext_h_ +#define _zd1211_wext_h_ + + +#if WIRELESS_EXT < 18 + +#define SIOCSIWGENIE 0x8B30 +#define SIOCSIWMLME 0x8B16 +#define SIOCSIWAUTH 0x8B32 +#define SIOCSIWENCODEEXT 0x8B34 + +#define IW_AUTH_WPA_VERSION 0 +#define IW_AUTH_CIPHER_PAIRWISE 1 +#define IW_AUTH_CIPHER_GROUP 2 +#define IW_AUTH_KEY_MGMT 3 +#define IW_AUTH_TKIP_COUNTERMEASURES 4 +#define IW_AUTH_DROP_UNENCRYPTED 5 +#define IW_AUTH_80211_AUTH_ALG 6 +#define IW_AUTH_WPA_ENABLED 7 +#define IW_AUTH_RX_UNENCRYPTED_EAPOL 8 +#define IW_AUTH_ROAMING_CONTROL 9 +#define IW_AUTH_PRIVACY_INVOKED 10 + +#define IW_AUTH_WPA_VERSION_DISABLED 0x00000001 +#define IW_AUTH_WPA_VERSION_WPA 0x00000002 +#define IW_AUTH_WPA_VERSION_WPA2 0x00000004 + +#define IW_AUTH_CIPHER_NONE 0x00000001 +#define IW_AUTH_CIPHER_WEP40 0x00000002 +#define IW_AUTH_CIPHER_TKIP 0x00000004 +#define IW_AUTH_CIPHER_CCMP 0x00000008 +#define IW_AUTH_CIPHER_WEP104 0x00000010 + +#define IW_AUTH_KEY_MGMT_802_1X 1 +#define IW_AUTH_KEY_MGMT_PSK 2 + +#define IW_AUTH_ALG_OPEN_SYSTEM 0x00000001 +#define IW_AUTH_ALG_SHARED_KEY 0x00000002 +#define IW_AUTH_ALG_LEAP 0x00000004 + +#define IW_AUTH_ROAMING_ENABLE 0 +#define IW_AUTH_ROAMING_DISABLE 1 + +#define IW_ENCODE_SEQ_MAX_SIZE 8 + +#define IW_ENCODE_ALG_NONE 0 +#define IW_ENCODE_ALG_WEP 1 +#define IW_ENCODE_ALG_TKIP 2 +#define IW_ENCODE_ALG_CCMP 3 + + +struct iw_encode_ext +{ + __u32 ext_flags; /* IW_ENCODE_EXT_* */ + __u8 tx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */ + __u8 rx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */ + struct sockaddr addr; /* ff:ff:ff:ff:ff:ff for broadcast/multicast + * (group) keys or unicast address for + * individual keys */ + __u16 alg; /* IW_ENCODE_ALG_* */ + __u16 key_len; + __u8 key[0]; +}; + + +struct iw_mlme +{ + __u16 cmd; /* IW_MLME_* */ + __u16 reason_code; + struct sockaddr addr; +}; + +#endif // WIRELESS_EXT < 18 + + +#endif // _zd1211_wext_h_ --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdutils.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdutils.h @@ -1,80 +1,61 @@ -/* $Id: zdutils.h,v 1.4 2005/03/17 09:15:16 akw Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef __ZDUTILS_H__ #define __ZDUTILS_H__ - #include "zdsorts.h" + #define isGroup(pMac) (((U8*)pMac)[0] & 0x01) -#define eLen(elm) ((elm)->buf[1]) -#define body(f, n) ((f)->body[n]) +#define eLen(elm) ((elm)->buf[1]) +#define body(f, n) ((f)->body[n]) -#define addr1(f) ((MacAddr_t*)&((f)->header[4])) -#define addr2(f) ((MacAddr_t*)&((f)->header[10])) -#define addr3(f) ((MacAddr_t*)&((f)->header[16])) -#define addr4(f) ((MacAddr_t*)&((f)->header[24])) + +#define addr1(f) ((MacAddr_t*)&((f)->header[4])) +#define addr2(f) ((MacAddr_t*)&((f)->header[10])) +#define addr3(f) ((MacAddr_t*)&((f)->header[16])) +#define addr4(f) ((MacAddr_t*)&((f)->header[24])) #define setAddr1(f, addr) (memcpy((char*)&((f)->header[4]), (char*)addr, 6)) #define setAddr2(f, addr) (memcpy((char*)&((f)->header[10]), (char*)addr, 6)) #define setAddr3(f, addr) (memcpy((char*)&((f)->header[16]), (char*)addr, 6)) #define setAddr4(f, addr) (memcpy((char*)&((f)->header[24]), (char*)addr, 6)) #define setFrameType(f, ft) do {\ - f->header[0] = ft;\ - f->header[1] = 0;\ - } while (0) -#define baseType(f) ((f)->header[0] & 0x0C) -#define frmType(f) ((f)->header[0] & 0xFC) + f->header[0] = ft;\ + f->header[1] = 0;\ + } while (0) +#define baseType(f) ((f)->header[0] & 0x0C) +#define frmType(f) ((f)->header[0] & 0xFC) -#define wepBit(f) (((f)->header[1] & WEP_BIT) ? 1 : 0) +#define wepBit(f) (((f)->header[1] & WEP_BIT) ? 1 : 0) #define orderBit(f) (((f)->header[1] & ORDER_BIT) ? 1 : 0) -#define durId(f) (((f)->header[2]) + ((f)->header[3]*256)) +#define durId(f) (((f)->header[2]) + ((f)->header[3]*256)) #define setAid(f, aid) do {\ - f->header[2] = (U8)aid;\ - f->header[3] = ((U8)(aid >> 8) | 0xc0);\ - } while (0) + f->header[2] = (U8)aid;\ + f->header[3] = ((U8)(aid >> 8) | 0xc0);\ + } while (0) -#define status(f) (body(f, 2) + (body(f, 3) * 256)) +#define status(f) (body(f, 2) + (body(f, 3) * 256)) #define authType(f) (body(f, 0) + (body(f, 1) * 256)) #define authSeqNum(f) (body(f, 2) + (body(f, 3) * 256)) #define authStatus(f) (body(f, 4) + (body(f, 5) * 256)) -#define reason(f) (body(f, 0) + (body(f, 1) * 256)) -#define listenInt(f) (body(f, 2) + (body(f, 3) * 256)) -#define cap(f) (body(f, 0) + (body(f, 1) * 256)) -#define setTs(f, loTm, hiTm) do {\ - body(f, 0) = (U8)loTm;\ - body(f, 1) = (U8)(loTm >> 8);\ - body(f, 2) = (U8)(loTm >> 16);\ - body(f, 3) = (U8)(loTm >> 24);\ - body(f, 4) = (U8)hiTm;\ - body(f, 5) = (U8)(hiTm >> 8);\ - body(f, 6) = (U8)(hiTm >> 16);\ - body(f, 7) = (U8)(hiTm >> 24);\ - } while (0) -#define trafficMap(trafficmap, aid) (((trafficmap)->t[(aid/8)] & (1<<(7-(aid%8))) ) == 0 ? 0 : 1) - -#define beaconInt(f) (body(f, 8) + (body(f, 9) * 256)) -#define cap1(f) (body(f, 10) + (body(f, 11) * 256)) -#define aid(f) (body(f, 4) + (body(f, 5) * 256)) +#define reason(f) (body(f, 0) + (body(f, 1) * 256)) +#define listenInt(f) (body(f, 2) + (body(f, 3) * 256)) +#define cap(f) (body(f, 0) + (body(f, 1) * 256)) +#define setTs(f, loTm, hiTm) do {\ + body(f, 0) = (U8)loTm;\ + body(f, 1) = (U8)(loTm >> 8);\ + body(f, 2) = (U8)(loTm >> 16);\ + body(f, 3) = (U8)(loTm >> 24);\ + body(f, 4) = (U8)hiTm;\ + body(f, 5) = (U8)(hiTm >> 8);\ + body(f, 6) = (U8)(hiTm >> 16);\ + body(f, 7) = (U8)(hiTm >> 24);\ + } while (0) +#define trafficMap(trafficmap, aid) (((trafficmap)->t[(aid/8)] & (1<<(7-(aid%8))) ) == 0 ? 0 : 1) + + +#define beaconInt(f) (body(f, 8) + (body(f, 9) * 256)) +#define cap1(f) (body(f, 10) + (body(f, 11) * 256)) +#define aid(f) (body(f, 4) + (body(f, 5) * 256)) +#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x" +#define MAC2STR(a) (a)[0],(a)[1],(a)[2],(a)[3],(a)[4],(a)[5] + #endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zd1211.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zd1211.h @@ -1,164 +1,182 @@ -/* $Id: zd1211.h,v 1.9 2005/03/27 20:47:36 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef _ZD1211_H_ #define _ZD1211_H_ +#include "zd1205.h" + + #define MAX_NUM_PORTS 8 /* The maximum number of ports one device can grab at once */ -#define IOWAITTIME 2 -#define EP_DATA_OUT 0x01 -#define EP_DATA_IN 0x02 -#define EP_INT_IN 0x03 -#define EP_REG_OUT 0x04 - -// EP0 [request, ID] setting. -#define REGID_WRITE 0x21 -#define REGID_READ 0x22 +#define IOWAITTIME 2 + +#define EP_DATA_OUT 0x01 +#define EP_DATA_IN 0x02 +#define EP_INT_IN 0x03 +#define EP_REG_OUT 0x04 + +// EP0 [request, ID] setting. +#define REGID_WRITE 0x21 +#define REGID_READ 0x22 #define REGID_RFOFDMSET 0x23 #define REGID_PROG_FLSH 0x24 #define EEPROM_START 0x128 -#define EEPROM_MID 0x28 -#define EEPROM_END 0x228 +#define EEPROM_MID 0x28 +#define EEPROM_END 0x228 #define FIRMWARE_DOWNLOAD 0x30 #define FIRMWARE_CONFIRM 0x31 -#define FIRMWARE_READ_DATA 0x32 +#define FIRMWARE_READ_DATA 0x32 -#define EPINT_IORDRsp 0x90 +#define EPINT_IORDRsp 0x90 #define EPINT_RetryFial_Event 0xa0 +// for macp->flags #define ZD1211_UNPLUG 1 #define ZD1211_REQ_COMP 2 -#define ZD1211_RUNNING 3 -#define ZD1211_TX_BUSY 4 -#define ZD1211_CMD_FINISH 5 - -#define KEVENT_SCAN_TIMEOUT 1 -#define KEVENT_MGT_MON_TIMEOUT 2 -#define KEVENT_HOUSE_KEEPING 3 -#define KEVENT_WATCH_DOG 4 -#define KEVENT_AUTH_TIMEOUT 5 -#define KEVENT_ASOC_TIMEOUT 6 -#define KEVENT_TCHAL_TIMEOUT 7 -#define KEVENT_NON_TX_RX_INT 8 -#define KEVENT_ZD_IOCTL 9 +#define ZD1211_RUNNING 3 +#define ZD1211_TX_BUSY 4 +#define ZD1211_CMD_FINISH 5 +#define ZD1211_SCAN_REQUEST 6 +#define ZD1211_SCAN_COMPLETE 7 +#define CTX_FLAG_ESSID_WAS_SET 8 + +#define KEVENT_SCAN_TIMEOUT 1 +#define KEVENT_MGT_MON_TIMEOUT 2 +#define KEVENT_HOUSE_KEEPING 3 +#define KEVENT_WATCH_DOG 4 +#define KEVENT_AUTH_TIMEOUT 5 +#define KEVENT_ASOC_TIMEOUT 6 +#define KEVENT_TCHAL_TIMEOUT 7 +#define KEVENT_NON_TX_RX_INT 8 +#define KEVENT_ZD_IOCTL 9 #define KEVENT_EN_PROTECTION 10 #define KEVENT_DIS_PROTECTION 11 #define KEVENT_UPDATE_SETTING 12 -#define KEVENT_SET_MULTICAST 13 -#define KEVENT_PROCESS_SIGNAL 14 -#define KEVENT_EN_BARKER 15 -#define KEVENT_DIS_BARKER 16 -#define KEVENT_EN_SHORT_SLOT 17 -#define KEVENT_DIS_SHORT_SLOT 18 -#define KEVENT_DIS_CONNECT 19 -#define KEVENT_STD_IOCTL 20 -#define KEVENT_REGISTER_NET 21 - -#define mFILL_WRITE_REGISTER(addr0, value0) { \ - WriteAddr[WriteIndex] = addr0; \ - WriteData[WriteIndex] = value0; \ - ++WriteIndex; \ +#define KEVENT_SET_MULTICAST 13 +#define KEVENT_PROCESS_SIGNAL 14 +#define KEVENT_EN_BARKER 15 +#define KEVENT_DIS_BARKER 16 +#define KEVENT_EN_SHORT_SLOT 17 +#define KEVENT_DIS_SHORT_SLOT 18 +#define KEVENT_DIS_CONNECT 19 +#define KEVENT_STD_IOCTL 20 +#define KEVENT_REGISTER_NET 21 +#define KEVENT_ZD_MLME_IOCTL 22 +/* ath_desc: Defer tx kill_urb on Linux 2.6.8+ */ +#define KEVENT_KILL_TX_URB 23 + + +#define mFILL_WRITE_REGISTER(addr0, value0) \ +{ \ + WriteAddr[WriteIndex] = addr0; \ + WriteData[WriteIndex ++] = value0; \ } + // write 32_bit register ==> write high word first -#define mFILL_WRITE_REGISTER32(addr0, value32) { \ - WriteAddr[WriteIndex] = (addr0) + 2; \ - WriteData[WriteIndex ++] = (u16) ((value32) >> 16); \ - WriteAddr[WriteIndex] = addr0; \ - WriteData[WriteIndex ++] = (u16) ((value32) & 0xFFFF); \ +#define mFILL_WRITE_REGISTER32(addr0, value32) \ +{ \ + WriteAddr[WriteIndex] = (addr0) + 2; \ + WriteData[WriteIndex ++] = (u16) ((value32) >> 16); \ + WriteAddr[WriteIndex] = addr0; \ + WriteData[WriteIndex ++] = (u16) ((value32) & 0xFFFF); \ } #define mFILL_READ_REGISTER(addr0) (ReadAddr[ReadIndex++] = addr0) #define mFILL_RF_REGISTER(value0) (WriteData[WriteIndex++] = value0) /* Flash interface */ -#define bmFLASH_A0 1 -#define mFLASH_SET_EVEN_ADDR(orgCR203) \ - mFILL_WRITE_REGISTER(ZD1205_CR203 + (u16) (macp->USBCSRAddress),\ - mCLR_BIT((u16) (orgCR203), bmFLASH_A0)) - -#define mFLASH_SET_ODD_ADDR(orgCR203) \ - mFILL_WRITE_REGISTER(ZD1205_CR203 + (u16) (macp->USBCSRAddress),\ - mSET_BIT((u16) (orgCR203), bmFLASH_A0)) - -#define mFLASH_WRITE_EVEN_ADDR(addr0, value0, orgCR203) { \ - mFLASH_SET_EVEN_ADDR(orgCR203); \ - mFILL_WRITE_REGISTER(((addr0) >> 1), value0); \ -} - -#define mFLASH_WRITE_ODD_ADDR(addr0, value0, orgCR203) { \ - mFLASH_SET_ODD_ADDR(orgCR203); \ - mFILL_WRITE_REGISTER(((addr0) >> 1), value0); \ +#define bmFLASH_A0 1 + +#define mFLASH_SET_EVEN_ADDR(orgCR203) \ + mFILL_WRITE_REGISTER(ZD1205_CR203 + (u16) (macp->USBCSRAddress), \ + mCLR_BIT((u16) (orgCR203), bmFLASH_A0)) + +#define mFLASH_SET_ODD_ADDR(orgCR203) \ + mFILL_WRITE_REGISTER(ZD1205_CR203 + (u16) (macp->USBCSRAddress), \ + mSET_BIT((u16) (orgCR203), bmFLASH_A0)) + +#define mFLASH_WRITE_EVEN_ADDR(addr0, value0, orgCR203) \ +{ \ + mFLASH_SET_EVEN_ADDR(orgCR203); \ + mFILL_WRITE_REGISTER(((addr0) >> 1), value0); \ } +#define mFLASH_WRITE_ODD_ADDR(addr0, value0, orgCR203) \ +{ \ + mFLASH_SET_ODD_ADDR(orgCR203); \ + mFILL_WRITE_REGISTER(((addr0) >> 1), value0); \ +} + + //------------------------------------------------------------------------- #if !fDRV_UPDATE_EEP -# define WRITE_WORD_TO_EEPROM_PER_TIME 8 + #define WRITE_WORD_TO_EEPROM_PER_TIME 8 + #else -# define WRITE_WORD_TO_EEPROM_PER_TIME 16 + #define WRITE_WORD_TO_EEPROM_PER_TIME 16 #endif -typedef struct _USB_EEPROM_DATA { - u16 RequestID; - u16 Data[WRITE_WORD_TO_EEPROM_PER_TIME]; -} USB_EEPROM_DATA, * PUSB_EEPROM_DATA; - -typedef struct _USB_REG_PACKAGE { - u16 Address; - u16 Data; -} USB_REG_PACKAGE, *PUSB_REG_PACKAGE; - -typedef struct _USB_READ_REG { - u16 RequestID; - USB_REG_PACKAGE Package[cMAX_MULTI_READ_REG_NUM]; -} USB_READ_REG, *PUSB_READ_REG; - -typedef struct _USB_READ_REG_REQ { - u16 RequestID; - u16 Address[cMAX_MULTI_READ_REG_NUM]; -} USB_READ_REG_REQ, *PUSB_READ_REG_REQ; - -typedef struct _USB_WRITE_REG_PACKAGE { - u16 Address; - u16 WriteData_low; -} USB_WRITE_REG_PACKAGE, * PUSB_WRITE_REG_PACKAGE; - -struct _USB_WRITE_REG { - u16 RequestID; - USB_WRITE_REG_PACKAGE WritePackage[cMAX_MULTI_WRITE_REG_NUM]; -} __attribute__((__packed__)); +typedef struct _USB_EEPROM_DATA +{ + u16 RequestID; + u16 Data[WRITE_WORD_TO_EEPROM_PER_TIME]; +} +USB_EEPROM_DATA, * PUSB_EEPROM_DATA; + + +typedef struct _USB_REG_PACKAGE +{ + u16 Address; + u16 Data; +} +USB_REG_PACKAGE, *PUSB_REG_PACKAGE; + + +typedef struct _USB_READ_REG +{ + u16 RequestID; + USB_REG_PACKAGE Package[cMAX_MULTI_READ_REG_NUM]; +} +USB_READ_REG, *PUSB_READ_REG; + + + +typedef struct _USB_READ_REG_REQ +{ + u16 RequestID; + u16 Address[cMAX_MULTI_READ_REG_NUM]; +} +USB_READ_REG_REQ, *PUSB_READ_REG_REQ; + + +typedef struct _USB_WRITE_REG_PACKAGE +{ + u16 Address; + + u16 WriteData_low; +} +USB_WRITE_REG_PACKAGE, * PUSB_WRITE_REG_PACKAGE; + + +/* ath_desc: bigendian support */ +struct _USB_WRITE_REG +{ + u16 RequestID; + USB_WRITE_REG_PACKAGE WritePackage[cMAX_MULTI_WRITE_REG_NUM]; +} __attribute__((__packed__)); typedef struct _USB_WRITE_REG USB_WRITE_REG, * PUSB_WRITE_REG; -typedef struct _USB_SET_RF { - u16 RequestID; - u16 Value; - u16 Index; - u16 Data[cMAX_MULTI_RF_REG_NUM]; -} USB_SET_RF, * PUSB_SET_RF; + +typedef struct _USB_SET_RF +{ + u16 RequestID; + u16 Value; + u16 Index; + u16 Data[cMAX_MULTI_RF_REG_NUM]; +} +USB_SET_RF, * PUSB_SET_RF; + void zd1211_StrongSignalDect(struct zd1205_private *macp); void zd1211_TxCalibration(struct zd1205_private *macp); @@ -181,9 +199,10 @@ u32 zd1211_readl(u32 Address, u8 bAddUSBCSRAddress); int zd1211_USB_PACKAGE_READ_REGISTER(u16 *Address, u16 *pValue, u16 RegCount, u8 bAddUSBCSRAddress); void zd1211_handle_non_tx_rx(struct zd1205_private *macp); +void ZD1211_WRITE_MULTI_REG(u16 *pAddress, u16 *pValue, u16 *pRegCount); int zd1211_USB_SET_RF_REG(u16 *InputValue, int bIs3683A); int zd1211_submit_rx_urb(struct zd1205_private *macp); -int zd1211_submit_tx_urb(struct zd1205_private *macp); +int zd1211_submit_tx_urb(struct zd1205_private *macp,BOOLEAN LastFrag); #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) void zd1211_tx_comp_cb(struct urb *urb); void zd1211_rx_comp_cb(struct urb *urb); @@ -207,4 +226,6 @@ void zd1211_rx_isr(unsigned long parm); void zd1211_tx_isr(unsigned long parm); void zd1211_alloc_rx(unsigned long parm); + #endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdhw.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdhw.h @@ -1,43 +1,19 @@ -/* $Id: zdhw.h,v 1.10 2005/03/27 20:47:37 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ #ifndef __ZDHW_H__ #define __ZDHW_H__ #include "zdequates.h" -#define RTS_RATE_1M 0x00 -#define RTS_RATE_11M 0x03 -#define RTS_RATE_24M 0x09 -#define RTS_MOD_TYPE_OFDM 0x100 -#define RTS_PMB_TYPE_SHORT 0x200 -#define CTS_RATE_11M 0x30000 -#define CTS_RATE_24M 0x90000 -#define CTS_MOD_TYPE_OFDM 0x1000000 -#define CTS_PMB_TYPE_SHORT 0x2000000 -#define NON_BARKER_PMB_SET (RTS_MOD_TYPE_OFDM | RTS_PMB_TYPE_SHORT | CTS_MOD_TYPE_OFDM | CTS_PMB_TYPE_SHORT) -#define NON_PROTECT_SET (RTS_MOD_TYPE_OFDM | CTS_MOD_TYPE_OFDM) +#define RTS_RATE_1M 0x00 +#define RTS_RATE_11M 0x03 +#define RTS_RATE_24M 0x09 +#define RTS_MOD_TYPE_OFDM 0x100 +#define RTS_PMB_TYPE_SHORT 0x200 +#define CTS_RATE_11M 0x30000 +#define CTS_RATE_24M 0x90000 +#define CTS_MOD_TYPE_OFDM 0x1000000 +#define CTS_PMB_TYPE_SHORT 0x2000000 +#define NON_BARKER_PMB_SET (RTS_MOD_TYPE_OFDM | RTS_PMB_TYPE_SHORT | CTS_MOD_TYPE_OFDM | CTS_PMB_TYPE_SHORT) +#define NON_PROTECT_SET (RTS_MOD_TYPE_OFDM | CTS_MOD_TYPE_OFDM) #define ZD_CR0 0x0000 #define ZD_CR1 0x0004 @@ -290,69 +266,86 @@ #define ZD_CR254 0x03F8 #define ZD_CR255 0x03FC -#define ZD_RF_IF_CLK 0x0400 -#define ZD_RF_IF_DATA 0x0404 -#define ZD_PE1_PE2 0x0408 -#define ZD_PE2_DLY 0x040C -#define ZD_LE1 0x0410 -#define ZD_LE2 0x0414 -#define ZD_GPI_EN 0x0418 -#define ZD_RADIO_PD 0x042C -#define ZD_RF2948_PD 0x042C +#define ZD_RF_IF_CLK 0x0400 +#define ZD_RF_IF_DATA 0x0404 +#define ZD_PE1_PE2 0x0408 +#define ZD_PE2_DLY 0x040C +#define ZD_LE1 0x0410 +#define ZD_LE2 0x0414 +#define ZD_GPI_EN 0x0418 +#define ZD_RADIO_PD 0x042C +#define ZD_RF2948_PD 0x042C + +#ifndef HOST_IF_USB + #define ZD_LED1 0x0430 + #define ZD_LED2 0x0434 +#endif + + #define ZD_EnablePSManualAGC 0x043C // 1: enable -#define ZD_CONFIGPhilips 0x0440 -#define ZD_SA2400_SER_AP 0x0444 -#define ZD_I2C_WRITE 0x0444 // Same as SA2400_SER_AP (for compatible with ZD1201) -#define ZD_SA2400_SER_RP 0x0448 - -#define ZD_RADIO_PE 0x0458 -#define ZD_RstBusMaster 0x045C -#define ZD_RFCFG 0x0464 -#define ZD_HSTSCHG 0x046C -#define ZD_PHY_ON 0x0474 -#define ZD_RX_DELAY 0x0478 -#define ZD_RX_PE_DELAY 0x047C -#define ZD_GPIO_1 0x0490 -#define ZD_GPIO_2 0x0494 -#define ZD_EncryBufMux 0x04A8 +#define ZD_CONFIGPhilips 0x0440 +#define ZD_SA2400_SER_AP 0x0444 +#define ZD_I2C_WRITE 0x0444 // Same as SA2400_SER_AP (for compatible with ZD1201) +#define ZD_SA2400_SER_RP 0x0448 + + +#define ZD_RADIO_PE 0x0458 +#define ZD_RstBusMaster 0x045C + +#define ZD_RFCFG 0x0464 + +#define ZD_HSTSCHG 0x046C + +#define ZD_PHY_ON 0x0474 +#define ZD_RX_DELAY 0x0478 +#define ZD_RX_PE_DELAY 0x047C + + +#define ZD_GPIO_1 0x0490 +#define ZD_GPIO_2 0x0494 -#define ZD_PS_Ctrl 0x0500 -#define ZD_ADDA_PwrDwn_Ctrl 0x0504 + +#define ZD_EncryBufMux 0x04A8 + + +#define ZD_PS_Ctrl 0x0500 +#define ZD_ADDA_PwrDwn_Ctrl 0x0504 #define ZD_ADDA_MBIAS_WarmTime 0x0508 -#define ZD_MAC_PS_STATE 0x050C -#define ZD_InterruptCtrl 0x0510 -#define ZD_TSF_LowPart 0x0514 -#define ZD_TSF_HighPart 0x0518 -#define ZD_ATIMWndPeriod 0x051C -#define ZD_BCNInterval 0x0520 -#define ZD_Pre_TBTT 0x0524 //In unit of TU(1024us) +#define ZD_MAC_PS_STATE 0x050C +#define ZD_InterruptCtrl 0x0510 +#define ZD_TSF_LowPart 0x0514 +#define ZD_TSF_HighPart 0x0518 +#define ZD_ATIMWndPeriod 0x051C +#define ZD_BCNInterval 0x0520 +#define ZD_Pre_TBTT 0x0524 //In unit of TU(1024us) //for UART support -#define ZD_UART_RBR_THR_DLL 0x0540 -#define ZD_UART_DLM_IER 0x0544 -#define ZD_UART_IIR_FCR 0x0548 -#define ZD_UART_LCR 0x054c -#define ZD_UART_MCR 0x0550 -#define ZD_UART_LSR 0x0554 -#define ZD_UART_MSR 0x0558 -#define ZD_UART_ECR 0x055c -#define ZD_UART_STATUS 0x0560 - -#define ZD_PCI_TxAddr_p1 0x0600 -#define ZD_PCI_TxAddr_p2 0x0604 -#define ZD_PCI_RxAddr_p1 0x0608 -#define ZD_PCI_RxAddr_p2 0x060C -#define ZD_MACAddr_P1 0x0610 -#define ZD_MACAddr_P2 0x0614 -#define ZD_BSSID_P1 0x0618 -#define ZD_BSSID_P2 0x061C -#define ZD_BCNPLCPCfg 0x0620 -#define ZD_GroupHash_P1 0x0624 -#define ZD_GroupHash_P2 0x0628 -#define ZD_RX_TIMEOUT 0x062C -#define ZD_BasicRateTbl 0x0630 -#define ZD_MandatoryRateTbl 0x0634 -#define ZD_RTS_CTS_Rate 0x0638 +#define ZD_UART_RBR_THR_DLL 0x0540 +#define ZD_UART_DLM_IER 0x0544 +#define ZD_UART_IIR_FCR 0x0548 +#define ZD_UART_LCR 0x054c +#define ZD_UART_MCR 0x0550 +#define ZD_UART_LSR 0x0554 +#define ZD_UART_MSR 0x0558 +#define ZD_UART_ECR 0x055c +#define ZD_UART_STATUS 0x0560 + +#define ZD_PCI_TxAddr_p1 0x0600 +#define ZD_PCI_TxAddr_p2 0x0604 +#define ZD_PCI_RxAddr_p1 0x0608 +#define ZD_PCI_RxAddr_p2 0x060C +#define ZD_MACAddr_P1 0x0610 +#define ZD_MACAddr_P2 0x0614 +#define ZD_BSSID_P1 0x0618 +#define ZD_BSSID_P2 0x061C +#define ZD_BCNPLCPCfg 0x0620 +#define ZD_GroupHash_P1 0x0624 +#define ZD_GroupHash_P2 0x0628 +#define ZD_RX_TIMEOUT 0x062C + +#define ZD_BasicRateTbl 0x0630 +#define ZD_MandatoryRateTbl 0x0634 +#define ZD_RTS_CTS_Rate 0x0638 // Wep protect // _ @@ -361,178 +354,255 @@ // 0x14 * slot time(if is 2us) = 40us = wep init time. // // So if we change slot time, change 0x14 to let wep init time close to 40us. -#define ZD_Wep_Protect 0x063C -#define ZD_RX_THRESHOLD 0x0640 -#define RFCFG1 0x0644 +#define ZD_Wep_Protect 0x063C +#define ZD_RX_THRESHOLD 0x0640 + +#ifdef HOST_IF_USB + #define RFCFG1 0x0644 +#else + #define ZD_TX_PE_CTRL 0x0644 +#endif + #if defined(AMAC) -#define ZD_AfterPNP 0x0648 + #define ZD_AfterPNP 0x0648 #endif #if defined(OFDM) -#define ZD_AckTime80211 0x0658 + #define ZD_AckTime80211 0x0658 #endif -#define ZD_Rx_OFFSET 0x065c +#define ZD_Rx_OFFSET 0x065c -#define ZD_PHYDelay 0x066C -#define ZD_BCNFIFO 0x0670 -#define ZD_SnifferOn 0x0674 -#define ZD_EncryType 0x0678 -#define ZD_RetryMAX 0x067C -#define ZD_CtlReg1 0x0680 //Bit0: IBSS mode - //Bit1: PwrMgt mode - //Bit2-4 : Highest basic rate - //Bit5: Lock bit - //Bit6: PLCP weight select - //Bit7: PLCP switch -#define ZD_DeviceState 0x0684 -#define ZD_UnderrunCnt 0x0688 -#define ZD_Rx_Filter 0x068c -#define ZD_Ack_Timeout_Ext 0x0690 +#ifdef ZD1211B + #define ZD_BCNLENGTH 0x0664 +#endif +#define ZD_PHYDelay 0x066C +#define ZD_BCNFIFO 0x0670 +#define ZD_SnifferOn 0x0674 +#define ZD_EncryType 0x0678 +#ifdef ZD1211 + #define ZD_RetryMAX 0x067C +#endif +#define ZD_CtlReg1 0x0680 //Bit0: IBSS mode +//Bit1: PwrMgt mode +//Bit2-4 : Highest basic rate +//Bit5: Lock bit +//Bit6: PLCP weight select +//Bit7: PLCP switch +#define ZD_DeviceState 0x0684 +#define ZD_UnderrunCnt 0x0688 +#define ZD_Rx_Filter 0x068c +#define ZD_Ack_Timeout_Ext 0x0690 #define ZD_BCN_FIFO_Semaphore 0x0694 -#define ZD_IFS_Value 0x0698 -#define ZD_RX_TIME_OUT 0x069C -#define ZD_TotalRxFrm 0x06A0 -#define ZD_CRC32Cnt 0x06A4 -#define ZD_CRC16Cnt 0x06A8 -#define ZD_DecrypErr_UNI 0x06AC -#define ZD_RxFIFOOverrun 0x06B0 - -#define ZD_DecrypErr_Mul 0x06BC - -#define ZD_NAV_CNT 0x06C4 -#define ZD_NAV_CCA 0x06C8 -#define ZD_RetryCnt 0x06CC - -#define ZD_ReadTcbAddress 0x06E8 -#define ZD_ReadRfdAddress 0x06EC -#define ZD_CWmin_CWmax 0x06F0 -#define ZD_TotalTxFrm 0x06F4 - -#define ZD_CAM_MODE 0x0700 -#define ZD_CAM_ROLL_TB_LOW 0x0704 -#define ZD_CAM_ROLL_TB_HIGH 0x0708 -#define ZD_CAM_ADDRESS 0x070C -#define ZD_CAM_DATA 0x0710 +#define ZD_IFS_Value 0x0698 +#define ZD_RX_TIME_OUT 0x069C +#define ZD_TotalRxFrm 0x06A0 +#define ZD_CRC32Cnt 0x06A4 +#define ZD_CRC16Cnt 0x06A8 +#define ZD_DecrypErr_UNI 0x06AC +#define ZD_RxFIFOOverrun 0x06B0 + +#define ZD_DecrypErr_Mul 0x06BC + +#define ZD_NAV_CNT 0x06C4 +#define ZD_NAV_CCA 0x06C8 +#define ZD_RetryCnt 0x06CC + +#define ZD_ReadTcbAddress 0x06E8 +#define ZD_ReadRfdAddress 0x06EC +#define ZD_CWmin_CWmax 0x06F0 +#define ZD_TotalTxFrm 0x06F4 + +#define ZD_CAM_MODE 0x0700 +#define ZD_CAM_ROLL_TB_LOW 0x0704 +#define ZD_CAM_ROLL_TB_HIGH 0x0708 +#define ZD_CAM_ADDRESS 0x070C +#define ZD_CAM_DATA 0x0710 -#define ZD_ROMDIR 0x0714 +#define ZD_ROMDIR 0x0714 #define ZD_DECRY_ERR_FLG_LOW 0x0714 #define ZD_DECRY_ERR_FLG_HIGH 0x0718 -#define ZD_WEPKey0 0x0720 -#define ZD_WEPKey1 0x0724 -#define ZD_WEPKey2 0x0728 -#define ZD_WEPKey3 0x072C -#define ZD_WEPKey4 0x0730 -#define ZD_WEPKey5 0x0734 -#define ZD_WEPKey6 0x0738 -#define ZD_WEPKey7 0x073C -#define ZD_WEPKey8 0x0740 -#define ZD_WEPKey9 0x0744 -#define ZD_WEPKey10 0x0748 -#define ZD_WEPKey11 0x074C -#define ZD_WEPKey12 0x0750 -#define ZD_WEPKey13 0x0754 -#define ZD_WEPKey14 0x0758 -#define ZD_WEPKey15 0x075c -#define ZD_TKIP_MODE 0x0760 - -#define ZD_TX_CCM_MODE 0x0B80 -#define ZD_TX_CCM_MASK 0x0B84 -#define ZD_RX_CCM_MODE 0x0C88 -#define ZD_RX_CCM_MASK 0x0C8C - -#define ZD_EEPROM_PROTECT0 0x0758 -#define ZD_EEPROM_PROTECT1 0x075C - -#define ZD_Dbg_FIFO_Rd 0x0800 -#define ZD_Dbg_Select 0x0804 -#define ZD_FIFO_Length 0x0808 - -//#define RF_Mode 0x080C -#define ZD_RSSI_MGC 0x0810 - -#define ZD_PON 0x0818 -#define ZD_Rx_ON 0x081C -#define ZD_Tx_ON 0x0820 -#define ZD_CHIP_EN 0x0824 -#define ZD_LO_SW 0x0828 -#define ZD_TxRx_SW 0x082C -#define ZD_S_MD 0x0830 +#define ZD_WEPKey0 0x0720 +#define ZD_WEPKey1 0x0724 +#define ZD_WEPKey2 0x0728 +#define ZD_WEPKey3 0x072C +#define ZD_WEPKey4 0x0730 +#define ZD_WEPKey5 0x0734 +#define ZD_WEPKey6 0x0738 +#define ZD_WEPKey7 0x073C +#define ZD_WEPKey8 0x0740 +#define ZD_WEPKey9 0x0744 +#define ZD_WEPKey10 0x0748 +#define ZD_WEPKey11 0x074C +#define ZD_WEPKey12 0x0750 +#define ZD_WEPKey13 0x0754 +#define ZD_WEPKey14 0x0758 +#define ZD_WEPKey15 0x075c +#define ZD_TKIP_MODE 0x0760 + +#define ZD_TX_CCM_MODE 0x0B80 +#define ZD_TX_CCM_MASK 0x0B84 +#define ZD_RX_CCM_MODE 0x0C88 +#define ZD_RX_CCM_MASK 0x0C8C + + +#define ZD_EEPROM_PROTECT0 0x0758 +#define ZD_EEPROM_PROTECT1 0x075C + +#define ZD_Dbg_FIFO_Rd 0x0800 +#define ZD_Dbg_Select 0x0804 +#define ZD_FIFO_Length 0x0808 + + +//#define RF_Mode 0x080C +#define ZD_RSSI_MGC 0x0810 + +#define ZD_PON 0x0818 +#define ZD_Rx_ON 0x081C +#define ZD_Tx_ON 0x0820 +#define ZD_CHIP_EN 0x0824 +#define ZD_LO_SW 0x0828 +#define ZD_TxRx_SW 0x082C +#define ZD_S_MD 0x0830 -#define ZD_USB_DEBUG_PORT 0x0888 +#define ZD_USB_DEBUG_PORT 0x0888 // EEPROM Memmory Map Region #define ZD_EEPROM_START_ADDRESS 0x0900 -#define ZD_E2P_SUBID 0x0900 -#define ZD_E2P_POD 0x0904 -#define ZD_E2P_MACADDR_P1 0x0908 -#define ZD_E2P_MACADDR_P2 0x090C -#define ZD_E2P_PWR_CAL_VALUE1 0x0910 -#define ZD_E2P_PWR_CAL_VALUE2 0x0914 -#define ZD_E2P_PWR_CAL_VALUE3 0x0918 -#define ZD_E2P_PWR_CAL_VALUE4 0x091c +#define ZD_E2P_SUBID 0x0900 +#define ZD_E2P_POD 0x0904 +#define ZD_E2P_MACADDR_P1 0x0908 +#define ZD_E2P_MACADDR_P2 0x090C +#define ZD_E2P_PWR_CAL_VALUE1 0x0910 +#define ZD_E2P_PWR_CAL_VALUE2 0x0914 +#define ZD_E2P_PWR_CAL_VALUE3 0x0918 +#define ZD_E2P_PWR_CAL_VALUE4 0x091c #define ZD_E2P_PWR_INT_VALUE1 0x0920 #define ZD_E2P_PWR_INT_VALUE2 0x0924 #define ZD_E2P_PWR_INT_VALUE3 0x0928 #define ZD_E2P_PWR_INT_VALUE4 0x092c #define ZD_E2P_ALLOWED_CHANNEL 0x0930 -#define E2P_DEVICE_VER 0x0940 -#define E2P_PHY_REG 0x094A -#define E2P_36M_CAL_VALUE 0x0950 -#define E2P_36M_INT_VALUE 0x0960 -#define E2P_48M_CAL_VALUE 0x0970 -#define E2P_48M_INT_VALUE 0x0980 -#define E2P_54M_CAL_VALUE 0x0990 -#define E2P_54M_INT_VALUE 0x09A0 -#define E2P_END 0x09FC -#define FW_FIRMWARE_VER 0x0B00 -#define FW_USB_SPEED 0x0B01 -#define FW_FIX_TX_RATE 0x0B02 -#define FW_LINK_STATUS 0x0B03 -#define FW_SOFT_RESET 0x0B04 -#define FW_FLASH_CHK 0x0B05 -#define ZD1211_CLOCK_CTRL 0x8540 -#define bZD1211_CLOCK_EEPROM 0 -#define bmZD1211_CLOCK_EEPROM mBIT(bZD1211_CLOCK_EEPROM) -#define UMAC_EPROM_ROM_ADDR 0x862A -#define UMAC_EPROM_RAM_ADDR 0x862B -#define UMAC_EPROM_DMA_LEN_DIR 0x862C -#define bmEPROM_XFER_DIR BIT_15 -#define UMAC_WAIT_STATE 0x8801 -#define ZD_TX_PWR_CTRL_1 0x0B00 -#define ZD_TX_PWR_CTRL_2 0x0B04 -#define ZD_TX_PWR_CTRL_3 0x0B08 -#define ZD_TX_PWR_CTRL_4 0x0B0C - -#define ZD_EPP_ROM_ADDRESS 0x0A04 -#define ZD_EPP_SRAM_ADDRESS 0x0A08 -#define ZD_EPP_LENG_DIR 0x0A0C -#define ZD_EPP_CLOCK_DIV 0x0A10 -#define ZD_EPP_KEY_PROT 0x0A14 + + +#ifdef HOST_IF_USB + #define E2P_DEVICE_VER 0x0940 + #define E2P_PHY_REG 0x094A + #define E2P_36M_CAL_VALUE 0x0950 +#define ZD_E2P_36M_CAL_VALUE2 0x0954 +#define ZD_E2P_36M_CAL_VALUE3 0x0958 +#define ZD_E2P_36M_CAL_VALUE4 0x095C + +#define ZD_E2P_11A_INT_VALUE1 0x0960 //802.11a IntValue1 for All Rate +#define ZD_E2P_11A_INT_VALUE2 0x0964 //802.11a IntValue2 for All Rate +#define ZD_E2P_11A_INT_VALUE3 0x0968 //802.11a IntValue3 for All Rate +#define ZD_E2P_48M_CAL_VALUE2 0x0974 +#define ZD_E2P_48M_CAL_VALUE3 0x0978 +#define ZD_E2P_48M_CAL_VALUE4 0x097C + +#define ZD_E2P_A36M_CAL_VALUE 0x0980 //802.11a SetPoint for 36~6M +#define ZD_E2P_A36M_CAL_VALUE2 0x0984 +#define ZD_E2P_A36M_CAL_VALUE3 0x0988 +#define ZD_E2P_A36M_CAL_VALUE4 0x098C +#define ZD_E2P_54M_CAL_VALUE2 0x0994 +#define ZD_E2P_54M_CAL_VALUE3 0x0998 +#define ZD_E2P_54M_CAL_VALUE4 0x099C + + +#define ZD_E2P_A54M_CAL_VALUE 0x09A0 //802.11a SetPoint for 54/48M +#define ZD_E2P_A54M_CAL_VALUE2 0x09A4 +#define ZD_E2P_A54M_CAL_VALUE3 0x09A8 +#define ZD_E2P_A54M_CAL_VALUE4 0x09AC +#define ZD_E2P_11A_INT_VALUE4 0x096C //802.11a IntValue4 for All Rate + + +#define E2P_36M_INT_VALUE 0x0960 + #define E2P_48M_CAL_VALUE 0x0970 + #define E2P_48M_INT_VALUE 0x0980 + #define E2P_54M_CAL_VALUE 0x0990 + #define E2P_54M_INT_VALUE 0x09A0 + + +#ifndef fNEW_CODE_MAP + #define E2P_END 0x09F0 + #else + #define E2P_END 0x09FC + #endif +#else + #define ZD_E2P_PHY_REG 0x0934 + #define ZD_E2P_REGION_CODE 0x0960 + #define ZD_E2P_FEATURE_BITMAP 0x0964 + #define ZD_E2P_END 0x0968 +#endif + +#ifdef ZD1211B + #define ZD_RetryMAX 0x0B28 +#endif + +#ifdef HOST_IF_USB + #ifdef ZD1211 + #define FW_FIRMWARE_VER 0x0B00 + #define FW_USB_SPEED 0x0B01 + #define FW_FIX_TX_RATE 0x0B02 + #define FW_LINK_STATUS 0x0B03 + #define FW_SOFT_RESET 0x0B04 + #define FW_FLASH_CHK 0x0B05 + #elif defined(ZD1211B) + #define FW_FIRMWARE_VER 0x0F00 + #define FW_USB_SPEED 0x0F01 + #define FW_FIX_TX_RATE 0x0F02 + #define FW_LINK_STATUS 0x0F03 + #define FW_SOFT_RESET 0x0F04 + #define FW_FLASH_CHK 0x0F05 + #endif + +#define ZD1211_CLOCK_CTRL 0x8540 + #define bZD1211_CLOCK_EEPROM 0 + #define bmZD1211_CLOCK_EEPROM mBIT(bZD1211_CLOCK_EEPROM) + #define UMAC_EPROM_ROM_ADDR 0x862A + #define UMAC_EPROM_RAM_ADDR 0x862B + #define UMAC_EPROM_DMA_LEN_DIR 0x862C + #define bmEPROM_XFER_DIR BIT_15 + #define UMAC_WAIT_STATE 0x8801 +#endif + + +#define ZD_TX_PWR_CTRL_1 0x0B00 +#define ZD_TX_PWR_CTRL_2 0x0B04 +#define ZD_TX_PWR_CTRL_3 0x0B08 +#define ZD_TX_PWR_CTRL_4 0x0B0C + +#define ZD_EPP_ROM_ADDRESS 0x0A04 +#define ZD_EPP_SRAM_ADDRESS 0x0A08 +#define ZD_EPP_LENG_DIR 0x0A0C +#define ZD_EPP_CLOCK_DIV 0x0A10 +#define ZD_EPP_KEY_PROT 0x0A14 //HW MIC Engine -#define ZD_MIC_START_ADDR0 0x0D00 -#define ZD_MIC_BLOCK0_LEN 0x0D04 -#define ZD_MIC_START_ADDR1 0x0D08 -#define ZD_MIC_BLOCK1_LEN 0x0D0C -#define ZD_MIC_START_ADDR2 0x0D10 -#define ZD_MIC_BLOCK2_LEN 0x0D14 -#define ZD_MIC_START_ADDR3 0x0D18 -#define ZD_MIC_BLOCK3_LEN 0x0D1C -#define ZD_MIC_START_ADDR4 0x0D20 -#define ZD_MIC_BLOCK4_LEN 0x0D24 -#define ZD_MIC_START_ADDR5 0x0D28 -#define ZD_MIC_BLOCK5_LEN 0x0D2C -#define ZD_MIC_KEY_LOW 0x0D30 -#define ZD_MIC_KEY_HIGH 0x0D34 -#define ZD_MIC_VALUE_LOW 0x0D38 -#define ZD_MIC_VALUE_HIGH 0x0D3C -#define ZD_MIC_STATUS 0x0D40 +#define ZD_MIC_START_ADDR0 0x0D00 + + +#define ZD_MIC_BLOCK0_LEN 0x0D04 +#define ZD_MIC_START_ADDR1 0x0D08 +#define ZD_MIC_BLOCK1_LEN 0x0D0C +#define ZD_MIC_START_ADDR2 0x0D10 +#define ZD_MIC_BLOCK2_LEN 0x0D14 +#define ZD_MIC_START_ADDR3 0x0D18 +#define ZD_MIC_BLOCK3_LEN 0x0D1C +#define ZD_MIC_START_ADDR4 0x0D20 +#define ZD_MIC_BLOCK4_LEN 0x0D24 +#define ZD_MIC_START_ADDR5 0x0D28 +#define ZD_MIC_BLOCK5_LEN 0x0D2C +#define ZD_MIC_KEY_LOW 0x0D30 +#define ZD_MIC_KEY_HIGH 0x0D34 +#define ZD_MIC_VALUE_LOW 0x0D38 +#define ZD_MIC_VALUE_HIGH 0x0D3C +#define ZD_MIC_STATUS 0x0D40 #define ZD_MIC_TOTAL_BLOCK_NUM 0x0D44 #define ZD_MIC_WRITE_BACK_ADDRS 0x0D48 -#define ZD_HOST_ENDIAN 0x0D4C +#define ZD_HOST_ENDIAN 0x0D4C + #define SR_1M 0x02 #define SR_2M 0x04 @@ -551,21 +621,25 @@ void HW_Set_Intersil_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly); void HW_Set_GCT_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly); +void HW_Set_AL7230B_RF_Chips(zd_80211Obj_t *pObj, U32 ChannelNo, U8 InitChOnly,U8 MAC_Mode); + void LockPhyReg(zd_80211Obj_t *pObj); void UnLockPhyReg(zd_80211Obj_t *pObj); void HW_SetSupportedRate(zd_80211Obj_t *pObj, U8 *prates); -void HW_EnableBeacon(zd_80211Obj_t *pObj, U16 BecaonInterval, U16 DtimPeriod, U8 BssType); +void HW_EnableBeacon(zd_80211Obj_t *pObj, U16 BecaonInterval, U16 DtimPeriod, U8 BssType); U32 HW_GetNow(zd_80211Obj_t *pObj); void HW_GetTsf(zd_80211Obj_t *pObj, U32 *loTsf, U32 *hiTsf); void HW_SetBeaconFIFO(zd_80211Obj_t *pObj, U8 *pBeacon, U16 index); -void HW_SwitchChannel(zd_80211Obj_t *pObj, U16 channel, U8 InitChOnly); -void HW_SetRfChannel(zd_80211Obj_t *pObj, U16 channel, U8 InitChOnly); +void HW_SwitchChannel(zd_80211Obj_t *pObj, U16 channel, U8 InitChOnly, const U8 MAC_Mode); +void HW_SetRfChannel(zd_80211Obj_t *pObj, U16 channel, U8 InitChOnly, const U8 MAC_Mode); + int HW_HTP(zd_80211Obj_t *pObj); void HW_RadioOnOff(zd_80211Obj_t *pObj, U8 on); void HW_Set_IF_Synthesizer(zd_80211Obj_t *pObj, U32 InputValue); void HW_ResetPhy(zd_80211Obj_t *pObj); void HW_InitHMAC(zd_80211Obj_t *pObj); -void HW_UpdateIntegrationValue(zd_80211Obj_t *pObj, U32 ChannelNo); +void HW_UpdateIntegrationValue(zd_80211Obj_t *pObj, U32 ChannelNo,const U8 MAC_Mode); + void HW_WritePhyReg(zd_80211Obj_t *pObj, U8 PhyIdx, U8 PhyValue); void HW_OverWritePhyRegFromE2P(zd_80211Obj_t *pObj); void HW_E2P_AutoPatch(zd_80211Obj_t *pObj); @@ -576,6 +650,7 @@ void HW_UpdateATIMWindow(zd_80211Obj_t *pObj, U16 AtimWnd); void HW_UpdatePreTBTT(zd_80211Obj_t *pObj, U32 pretbtt); + // for AMAC CAM operation void HW_CAM_Avail(zd_80211Obj_t *pObj); void HW_CAM_Write(zd_80211Obj_t *pObj, U32 address, U32 data); @@ -589,10 +664,14 @@ void HW_CAM_UpdateRollTbl(zd_80211Obj_t *pObj, U16 aid); void HW_CAM_ResetRollTbl(zd_80211Obj_t *pObj); void HW_CAM_ClearRollTbl(zd_80211Obj_t *pObj, U16 aid); -void HW_ConfigDynaKey(zd_80211Obj_t *pObj, U16 aid, U8 *pMac, U8 *pKey, U8 KeyLength, U8 encryType); +//void HW_ConfigDynaKey(zd_80211Obj_t *pObj, U16 aid, U8 *pMac, U8 *pKey, U8 KeyLength, U8 encryType); +void HW_ConfigDynaKey(zd_80211Obj_t *pObj, U16 aid, U8 *pMac, U8 *pKey, U8 KeyLength, U8 encryType, U8 change_enc); void HW_ConfigStatKey(zd_80211Obj_t *pObj, U8 *pKey, U8 keyLen, U32 startAddr); void HW_GetStatKey(zd_80211Obj_t *pObj); void HW_EEPROM_ACCESS(zd_80211Obj_t *pObj, U8 RamAddr, U32 RomAddr, U32 length, U8 bWrite); + + +// void HW_Write_TxGain0(zd_80211Obj_t *pObj, U8 *pTxGain, U8 TxPwrType); void HW_Write_TxGain1(zd_80211Obj_t *pObj, U8 txgain, U8 TxPwrType); void HW_Write_TxGain2(zd_80211Obj_t *pObj, U8 TxPwrType); --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zd1205.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zd1205.c @@ -1,28 +1,34 @@ -/* $Id: zd1205.c,v 1.17 2005/06/07 21:45:21 sagamore Exp $ - * - * Copyright (C) 2004 Zydas Inc. - * Copyright (C) 2005 Arno WILLIG - * Copyright (C) 2005 Dimitriy KOROVKIN - * Copyright (C) 2005 Todor T. ZVISKOV - * Copyright (C) 2005 Markus KARG - * - * This file is part of the ZD1211 Wireless USB Driver for Linux. - * - * This driver is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This driver is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this driver; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - +/* src/zd1205.c +* +* +* +* Copyright (C) 2004 ZyDAS Inc. All Rights Reserved. +* -------------------------------------------------------------------- +* +* +* +* The contents of this file are subject to the Mozilla Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/MPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* Alternatively, the contents of this file may be used under the +* terms of the GNU Public License version 2 (the "GPL"), in which +* case the provisions of the GPL are applicable instead of the +* above. If you wish to allow the use of your version of this file +* only under the terms of the GPL and not to allow others to use +* your version of this file under the MPL, indicate your decision +* by deleting the provisions above and replace them with the notice +* and other provisions required by the GPL. If you do not delete +* the provisions above, a recipient may use your version of this +* file under either the MPL or the GPL. +* +* -------------------------------------------------------------------- */ #define __KERNEL_SYSCALLS__ #include @@ -36,41 +42,101 @@ #include "zd1205.h" #include "zdinlinef.h" #include "zddebug.h" +#include "zddebug2.h" +#include "menu_drv_macro.h" #include "zdhw.h" -#include "zd1211.h" +#include "zdsorts.h" +#include "zdglobal.h" +#include "zdutils.h" +#include "zdpsmon.h" +#include "zdsm.h" +#ifdef HOST_IF_USB + #include "zd1211.h" +#endif +#include "zdhci.h" + #if WIRELESS_EXT > 12 -# include + #include #endif - +extern U16 mTmRetryConnect; +extern BOOLEAN mProbeWithSsid; +extern u8 mMacMode; +extern U8 mBssType; +extern Element mSsid; +extern Element dot11DesiredSsid; int errno; +extern u8 mCurrConnUser; +extern U8 mNumBOnlySta; +/* ath_desc: reset auth/asoc states on init */ +extern U8 AuthReqState; +extern U8 AsocState; + +extern u8 mBssNum; +extern U8 mKeyFormat; //Init value: WEP64_USED(1) +extern BOOLEAN mPrivacyInvoked; // Init value: FALSE +extern U8 mKeyVector[4][16]; // Store WEP key +extern U8 mWepKeyLen; +extern U8 mKeyId; // Init value: 0 +extern U16 mCap; // Init value: CAP_ESS(1); +extern u16 CurrScanCH; +extern MacAddr_t dot11MacAddress; + +extern BOOLEAN zd_CmdProbeReq(U8 bWithSSID); +extern Hash_t *HashSearch(MacAddr_t *pMac); +extern void re_initFdescBuf(void); /****************************************************************************** * C O N S T A N T S ******************************************************************************* */ -u8 ZD_SNAP_HEADER[6] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00}; -u8 ZD_SNAP_BRIDGE_TUNNEL[6] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0xF8}; -#define NUM_WEPKEYS 4 +static u8 ZD_SNAP_HEADER[6] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00}; +static u8 ZD_SNAP_BRIDGE_TUNNEL[6] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0xF8}; +static u8 zd_Snap_Apple_Type[] = {0xAA,0xAA,0x03,0x08,0x00,0x07,0x80,0x9b}; + +static u16 IPX=0x8137; +//static u16 NOVELL=0xe0e0; // currently not used +static u16 APPLE_TALK=0x80f3; +static u16 EAPOL=0x888e; + + +#define MAX_MULTICAST_ADDRS 32 +#define NUM_WEPKEYS 4 #define bGroup(pWlanHdr) (pWlanHdr->Address1[0] & BIT_0) #define getSeq(pWlanHdr) (((u16)pWlanHdr->SeqCtrl[1] << 4) + (u16)((pWlanHdr->SeqCtrl[0] & 0xF0) >> 4)) #define getFrag(pWlanHdr) (pWlanHdr->SeqCtrl[0] & 0x0F) #define getTA(pWlanHdr) (&pWlanHdr->Address2[0]) -#define isWDS(pWlanHdr) (((pWlanHdr->FrameCtrl[1] & TO_DS_FROM_DS) == TO_DS_FROM_DS) ? 1 : 0) +#define isWDS(pWlanHdr) (((pWlanHdr->FrameCtrl[1] & TO_DS_FROM_DS) == TO_DS_FROM_DS) ? 1 : 0) #define bRetryBit(pWlanHdr) (pWlanHdr->FrameCtrl[1] & RETRY_BIT) -#define bWepBit(pWlanHdr) (pWlanHdr->FrameCtrl[1] & ENCRY_BIT) +#define bWepBit(pWlanHdr) (pWlanHdr->FrameCtrl[1] & ENCRY_BIT) #define bMoreFrag(pWlanHdr) (pWlanHdr->FrameCtrl[1] & MORE_FRAG) #define bMoreData(pWlanHdr) (pWlanHdr->FrameCtrl[1] & MORE_DATA) #define BaseFrameType(pWlanHdr) (pWlanHdr->FrameCtrl[0] & 0x0C) #define SubFrameType(pWlanHdr) (pWlanHdr->FrameCtrl[0]) #define bDataMgtFrame(pWlanHdr) (((pWlanHdr->FrameCtrl[0] & 0x04) == 0)) -#define nowT() (jiffies) //tick (10ms) unit +#ifndef HOST_IF_USB + #define nowT() (zd_readl(TSF_LowPart)) //us unit +#else + #define nowT() (jiffies) //tick (10ms) unit +#endif /****************************************************************************** * F U N C T I O N D E C L A R A T I O N S ******************************************************************************* */ +#ifdef CONFIG_PROC_FS + +extern int zd1205_create_proc_subdir(struct zd1205_private *); +extern void zd1205_remove_proc_subdir(struct zd1205_private *); +#else + #define zd1205_create_proc_subdir(X) 0 + #define zd1205_remove_proc_subdir(X) do {} while(0) +#endif +static u32 channel_11A_to_Freq(const u32 channel); +//static u32 Freq_11A_to_channel(const u32 freq); + + static unsigned char zd1205_alloc_space(struct zd1205_private *); unsigned char zd1205_init(struct zd1205_private *); static void zd1205_setup_tcb_pool(struct zd1205_private *macp); @@ -90,11 +156,23 @@ zd1205_SwTcb_t * zd1205_first_txq(struct zd1205_private *macp, zd1205_SwTcbQ_t *Q); void zd1205_qlast_txq(struct zd1205_private *macp, zd1205_SwTcbQ_t *Q, zd1205_SwTcb_t *signal); static void zd1205_init_txq(struct zd1205_private *macp, zd1205_SwTcbQ_t *Q); + +#ifndef HOST_IF_USB + +static u8 zd1205_pci_setup(struct pci_dev *, struct zd1205_private *); +static void zd1205_intr(int, void *, struct pt_regs *); +static void zd1205_retry_failed(struct zd1205_private *); +static void zd1205_dtim_notify(struct zd1205_private *); +void zd1205_start_ru(struct zd1205_private *); +u8 zd1205_RateAdaption(u16 aid, u8 CurrentRate, u8 gear); +#else + struct rx_list_elem *zd1205_start_ru(struct zd1205_private *); +#endif u32 zd1205_rx_isr(struct zd1205_private *macp); void zd1205_tx_isr(struct zd1205_private *); -static void zd1205_transmit_cleanup (struct zd1205_private *, zd1205_SwTcb_t *sw_tcb); +static void zd1205_transmit_cleanup(struct zd1205_private *, zd1205_SwTcb_t *sw_tcb); static int zd1205_validate_frame(struct zd1205_private *macp, zd1205_RFD_t *rfd); int zd1205_xmit_frame(struct sk_buff *, struct net_device *); static void zd1205_dealloc_space(struct zd1205_private *macp); @@ -116,6 +194,7 @@ int zd1205_CheckOverlapBss(struct zd1205_private *macp, plcp_wla_Header_t *pWlanHdr, u8 *pMacBody, u32 bodyLen); void zd1205_HandleQosRequest(struct zd1205_private *macp); void zd1205_SetRatesInfo(struct zd1205_private *macp); + u8 X_To_dB(u32 X, u8 rate); u16 ZDLog10multiply100(int data); void zd1205_connect_mon(struct zd1205_private *macp); @@ -126,39 +205,41 @@ static int zd1205_ioctl_setiwencode(struct net_device *dev, struct iw_point *erq, char* key); static int zd1205_ioctl_getiwencode(struct net_device *dev, struct iw_point *erq, char* key); static int zd1205_ioctl_setessid(struct net_device *dev, struct iw_point *erq); +static int zd1205_ioctl_setbssid(struct net_device *dev, struct iwreq *wrq); + static int zd1205_ioctl_getessid(struct net_device *dev, struct iw_point *erq); static int zd1205_ioctl_setfreq(struct net_device *dev, struct iw_freq *frq); -static int zd1205_ioctl_getsens(struct net_device *dev, struct iw_param *srq); //static int zd1205_ioctl_setsens(struct net_device *dev, struct iw_param *srq); static int zd1205_ioctl_setrts(struct net_device *dev, struct iw_param *rrq); static int zd1205_ioctl_setfrag(struct net_device *dev, struct iw_param *frq); + static int zd1205_ioctl_getfrag(struct net_device *dev, struct iw_param *frq); static int zd1205_ioctl_setrate(struct net_device *dev, struct iw_param *frq); static int zd1205_ioctl_getrate(struct net_device *dev, struct iw_param *frq); -static int zd1205_ioctl_settxpower(struct net_device *dev, struct iw_param *prq); -static int zd1205_ioctl_gettxpower(struct net_device *dev, struct iw_param *prq); +//static int zd1205_ioctl_settxpower(struct net_device *dev, struct iw_param *prq); +//static int zd1205_ioctl_gettxpower(struct net_device *dev, struct iw_param *prq); static int zd1205_ioctl_setpower(struct net_device *dev, struct iw_param *prq); static int zd1205_ioctl_getpower(struct net_device *dev, struct iw_param *prq); static int zd1205_ioctl_setmode(struct net_device *dev, __u32 *mode); /* Wireless Extension Handler functions */ -static int zd1205wext_giwname(struct net_device *dev, struct iw_request_info *info, char *name, char *extra); static int zd1205wext_giwfreq(struct net_device *dev, struct iw_request_info *info, struct iw_freq *freq, char *extra); -static int zd1205wext_siwfreq(struct net_device *dev, struct iw_request_info *info, struct iw_freq *freq, char *extra); static int zd1205wext_siwmode(struct net_device *dev, struct iw_request_info *info, __u32 *mode, char *extra); static int zd1205wext_giwmode(struct net_device *dev, struct iw_request_info *info, __u32 *mode, char *extra); -static int zd1205wext_siwrate(struct net_device *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra); static int zd1205wext_giwrate(struct net_device *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra); static int zd1205wext_giwrts(struct net_device *dev, struct iw_request_info *info, struct iw_param *rts, char *extra); -static int zd1205wext_siwrts(struct net_device *dev, struct iw_request_info *info, struct iw_param *rts, char *extra); static int zd1205wext_giwfrag(struct net_device *dev, struct iw_request_info *info, struct iw_param *frag, char *extra); -static int zd1205wext_siwfrag(struct net_device *dev, struct iw_request_info *info, struct iw_param *frag, char *extra); -static int zd1205wext_giwtxpow(struct net_device *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra); -static int zd1205wext_siwtxpow(struct net_device *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra); -static int zd1205wext_giwap(struct net_device *dev, struct iw_request_info *info, struct sockaddr *ap_addr, char *extra); -static int zd1205wext_siwencode(struct net_device *dev, struct iw_request_info *info, struct iw_point *erq, char *key); -static int zd1205wext_giwencode(struct net_device *dev, struct iw_request_info *info, struct iw_point *erq, char *key); +//static int zd1205wext_giwtxpow(struct net_device *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra); +//static int zd1205wext_siwtxpow(struct net_device *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra); static int zd1205wext_giwrange(struct net_device *dev, struct iw_request_info *info, struct iw_point *data, char *extra); +/* ath_desc: use new get_wireless_stats in 2.6.10+ */ +struct iw_statistics *zd1205wext_iw_get_stats(struct net_device *dev); + +/* ath_desc: add iwconfig commit support */ +#if WIRELESS_EXT > 12 +static int zd1205wext_commit(struct net_device *dev, struct iw_request_info *info, void *wrqu, char *extra); +#endif + #if WIRELESS_EXT > 13 static int zd1205wext_siwscan(struct net_device *dev, struct iw_request_info *info, struct iw_point *data, char *extra); static int zd1205wext_giwscan(struct net_device *dev, struct iw_request_info *info, struct iw_point *data, char *extra); @@ -171,5848 +252,10147 @@ void zdcb_start_timer(U32 timeout, U32 event); void zdcb_stop_timer(U32 TimerId); void zd1205_set_zd_cbs(zd_80211Obj_t *pObj); -inline void zdcb_set_reg(void *reg, U32 offset, U32 value); +void zdcb_set_reg(void *reg, U32 offset, U32 value); void chal_tout_cb(unsigned long ptr); -inline U32 zdcb_dis_intr(void); -inline void zdcb_set_intr_mask(U32 flags); -inline BOOLEAN zdcb_check_tcb_avail(U8 num_of_frag); +U32 zdcb_dis_intr(void); +void zdcb_set_intr_mask(U32 flags); +BOOLEAN zdcb_check_tcb_avail(U8 num_of_frag); BOOLEAN zdcb_setup_next_send(fragInfo_t *frag_info); + + +void zd_CmdScanReq(u16 channel); +void zd_ScanBegin(void); +void zd_ScanEnd(void); + U16 zdcb_status_notify(U16 status, U8 *StaAddr); U32 zdcb_vir_to_phy_addr(U32 virtAddr); -inline U32 zdcb_get_reg(void *reg, U32 offset); +U32 zdcb_get_reg(void *reg, U32 offset); void zdcb_delay_us(U16 ustime); int zdcb_Rand(U32 seed); +/* For WPA supported functions */ +void zd1205_notify_join_event(struct zd1205_private *macp); +void zd1205_notify_disjoin_event(struct zd1205_private *macp); +void zd1205_notify_scan_done(struct zd1205_private *macp); +BOOLEAN zd_CmdProbeReq(U8 ProbeWithSsid); + + /****************************************************************************** + * P U B L I C D A T A ******************************************************************************* */ /* Global Data structures and variables */ +#ifndef HOST_IF_USB +char zd1205_copyright[] __devinitdata = "Copyright (c) 2002 Zydas Corporation"; +char zd1205_driver_version[]="0.0.1"; +const char *zd1205_full_driver_name = "Zydas ZD1205 Network Driver"; +char zd1205_short_driver_name[] = "zd1205"; +#endif + const char config_filename[] = "/etc/zd1211.conf"; -spinlock_t driver_lock = SPIN_LOCK_UNLOCKED; +static BOOLEAN CustomMACSet = FALSE; +static u8 CustomMAC[ETH_ALEN]; +static BOOLEAN AsocTimerStat = FALSE; //If the Asoc Timer is enabled zd1205_SwTcbQ_t free_txq_buf, active_txq_buf; struct net_device *g_dev; +u8 *mTxOFDMType; zd_80211Obj_t dot11Obj = {0}; -//#define RX_COPY_BREAK 0//1518 //we do bridge, don't care IP header alignment -#define RX_COPY_BREAK MAX_WLAN_SIZE //It doesn't appear that unaligned frames work with TCP/UDP beyond a certain size -#define BEFORE_BEACON 5 +/* ath_desc: fix for unaligned writes to skbs on bigendian platform */ +/* ath_old: #define RX_COPY_BREAK 0//1518 //we do bridge, don't care IP header alignment */ +#define RX_COPY_BREAK MAX_WLAN_SIZE +#define BEFORE_BEACON 25 /* Definition of Wireless Extension */ /* * Structures to export the Wireless Handlers + */ +typedef enum +{ + ZD_REGION_Default = 0x00,//All channel + ZD_REGION_USA = 0x10,//G channel->ch1-11; + ZD_REGION_Canada = 0x20,//G channel->ch1-11; + ZD_REGION_Argentina = 0x21,//G channel->ch1-11; + ZD_REGION_Brazil = 0x22,//G channel->ch1-11; + ZD_REGION_Europe = 0x30,//G channel->ETSI ch1-13; + ZD_REGION_Spain = 0x31,//G channel->ETSI ch1-13; + ZD_REGION_France = 0x32,//G channel->ch10-13; + ZD_REGION_Ukraine = 0x33,//G channel->ch1-11; + ZD_REGION_AustriaBelgium = 0x34,//Austria and Belgium G channel->ch1-13;; + ZD_REGION_Switzerland = 0x35,//G channel->ch1-13; + ZD_REGION_Japan = 0x40,//G channel->ch1-14; + ZD_REGION_Australia = 0x42,//G channel->ch1-13; + ZD_REGION_China = 0x43,//G channel->ch1-11; + ZD_REGION_HongKong = 0x44,//G channel->ch1-11; + ZD_REGION_Korea = 0x45,//G channel->ch1-11; + ZD_REGION_NewZealand = 0x46,//G channel->ch1-11; + ZD_REGION_Singapore = 0x47,//G channel->ch10-13; + ZD_REGION_Taiwan = 0x48,//G channel->ch1-13; + ZD_REGION_Israel = 0x50,//G channel->ch3-9; + ZD_REGION_Mexico = 0x51 //G channel->ch10,11; +} ZD_REGION; + + +struct iw_priv_args zd1205_private_args[] = + { + { + SIOCIWFIRSTPRIV + 0x0, 0, 0, "list_bss" + }, + { SIOCIWFIRSTPRIV + 0x1, 0, 0, "card_reset" }, + { SIOCIWFIRSTPRIV + 0x2, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_auth" }, /* 0 - open, 1 - shared key */ + { SIOCIWFIRSTPRIV + 0x3, 0, IW_PRIV_TYPE_CHAR | 12, "get_auth" }, + { SIOCIWFIRSTPRIV + 0x4, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_preamble" }, /* 0 - long, 1 - short */ + { SIOCIWFIRSTPRIV + 0x5, 0, IW_PRIV_TYPE_CHAR | 6, "get_preamble" }, + { SIOCIWFIRSTPRIV + 0x6, 0, 0, "cnt" }, + { SIOCIWFIRSTPRIV + 0x7, 0, 0, "regs" }, + { SIOCIWFIRSTPRIV + 0x8, 0, 0, "probe" }, + /* ath_desc: reenable iwpriv dbg_flag */ + { SIOCIWFIRSTPRIV + 0x10, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "dbg_flag" }, + { SIOCIWFIRSTPRIV + 0xA, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "connect" }, + { SIOCIWFIRSTPRIV + 0xB, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_mac_mode" }, + { SIOCIWFIRSTPRIV + 0xC, 0, IW_PRIV_TYPE_CHAR | 12, "get_mac_mode" }, + { SIOCIWFIRSTPRIV + 0xD, 0, 0, "save_conf" /* has been removed */ }, + { SIOCIWFIRSTPRIV + 0xE, 0, 0, "load_conf" /* has been removed */ }, + { SIOCIWFIRSTPRIV + 0xF, 0, IW_PRIV_TYPE_CHAR | 14, "get_Region" }, + { SIOCIWFIRSTPRIV + 0x9,IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_Region" }, + }; -struct iw_priv_args zd1205_private_args[] = { - { SIOCIWFIRSTPRIV + 0x0, 0, 0, "list_bss" }, - { SIOCIWFIRSTPRIV + 0x1, 0, 0, "card_reset" }, - { SIOCIWFIRSTPRIV + 0x2, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_auth" }, /* 0 - open, 1 - shared key */ - { SIOCIWFIRSTPRIV + 0x3, 0, IW_PRIV_TYPE_CHAR | 12, "get_auth" }, - { SIOCIWFIRSTPRIV + 0x4, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_preamble" }, /* 0 - long, 1 - short */ - { SIOCIWFIRSTPRIV + 0x5, 0, IW_PRIV_TYPE_CHAR | 6, "get_preamble" }, - { SIOCIWFIRSTPRIV + 0x6, 0, 0, "cnt" }, - { SIOCIWFIRSTPRIV + 0x7, 0, 0, "regs" }, - { SIOCIWFIRSTPRIV + 0x8, 0, 0, "probe" }, - { SIOCIWFIRSTPRIV + 0x9, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "dbg_flag" }, - { SIOCIWFIRSTPRIV + 0xA, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "connect" }, - { SIOCIWFIRSTPRIV + 0xB, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_mac_mode" }, - { SIOCIWFIRSTPRIV + 0xC, 0, IW_PRIV_TYPE_CHAR | 12, "get_mac_mode" }, - { SIOCIWFIRSTPRIV + 0xD, 0, 0, "save_conf" }, - { SIOCIWFIRSTPRIV + 0xE, 0, 0, "load_conf" }, -}; #if WIRELESS_EXT > 12 static iw_handler zd1205wext_handler[] = { - (iw_handler) NULL, /* SIOCSIWCOMMIT */ - (iw_handler) NULL, /* SIOCGIWNAME */ - (iw_handler) NULL, /* SIOCSIWNWID */ - (iw_handler) NULL, /* SIOCGIWNWID */ - (iw_handler) NULL, /* SIOCSIWFREQ */ - (iw_handler) zd1205wext_giwfreq, /* SIOCGIWFREQ */ - (iw_handler) NULL, /* SIOCSIWMODE */ - (iw_handler) zd1205wext_giwmode, /* SIOCGIWMODE */ - (iw_handler) NULL, /* SIOCSIWSENS */ - (iw_handler) NULL, /* SIOCGIWSENS */ - (iw_handler) NULL, /* not used */ /* SIOCSIWRANGE */ - (iw_handler) zd1205wext_giwrange, /* SIOCGIWRANGE */ - (iw_handler) NULL, /* not used */ /* SIOCSIWPRIV */ - (iw_handler) NULL, /* kernel code */ /* SIOCGIWPRIV */ - (iw_handler) NULL, /* not used */ /* SIOCSIWSTATS */ - (iw_handler) NULL, /* kernel code */ /* SIOCGIWSTATS */ - (iw_handler) NULL, /* SIOCSIWSPY */ - (iw_handler) NULL, /* SIOCGIWSPY */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* SIOCSIWAP */ - (iw_handler) NULL, /* SIOCGIWAP */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* SIOCGIWAPLIST */ + (iw_handler) zd1205wext_commit, /* SIOCSIWCOMMIT */ + + (iw_handler) NULL, /* SIOCGIWNAME */ + (iw_handler) NULL, /* SIOCSIWNWID */ + (iw_handler) NULL, /* SIOCGIWNWID */ + (iw_handler) NULL, /* SIOCSIWFREQ */ + (iw_handler) zd1205wext_giwfreq, /* SIOCGIWFREQ */ + + + (iw_handler) NULL, /* SIOCSIWMODE */ + (iw_handler) zd1205wext_giwmode, /* SIOCGIWMODE */ + + (iw_handler) NULL, /* SIOCSIWSENS */ + (iw_handler) NULL, /* SIOCGIWSENS */ + (iw_handler) NULL, /* not used */ /* SIOCSIWRANGE */ + (iw_handler) zd1205wext_giwrange, /* SIOCGIWRANGE */ + (iw_handler) NULL, /* not used */ /* SIOCSIWPRIV */ + (iw_handler) NULL, /* kernel code */ /* SIOCGIWPRIV */ + (iw_handler) NULL, /* not used */ /* SIOCSIWSTATS */ + (iw_handler) NULL, /* kernel code */ /* SIOCGIWSTATS */ + + (iw_handler) NULL, /* SIOCSIWSPY */ + (iw_handler) NULL, /* SIOCGIWSPY */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* SIOCSIWAP */ + (iw_handler) NULL, /* SIOCGIWAP */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* SIOCGIWAPLIST */ #if WIRELESS_EXT > 13 - (iw_handler) zd1205wext_siwscan, /* SIOCSIWSCAN */ - (iw_handler) zd1205wext_giwscan, /* SIOCGIWSCAN */ + (iw_handler) zd1205wext_siwscan, /* SIOCSIWSCAN */ + (iw_handler) zd1205wext_giwscan, /* SIOCGIWSCAN */ #else /* WIRELESS_EXT > 13 */ - (iw_handler) NULL, /* null */ /* SIOCSIWSCAN */ - (iw_handler) NULL, /* null */ /* SIOCGIWSCAN */ + (iw_handler) NULL, /* null */ /* SIOCSIWSCAN */ + (iw_handler) NULL, /* null */ /* SIOCGIWSCAN */ #endif /* WIRELESS_EXT > 13 */ - (iw_handler) NULL, /* SIOCSIWESSID */ - (iw_handler) NULL, /* SIOCGIWESSID */ - (iw_handler) NULL, /* SIOCSIWNICKN */ - (iw_handler) NULL, /* SIOCGIWNICKN */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* SIOCSIWRATE */ - (iw_handler) zd1205wext_giwrate, /* SIOCGIWRATE */ - (iw_handler) NULL, /* SIOCSIWRTS */ - (iw_handler) zd1205wext_giwrts, /* SIOCGIWRTS */ - (iw_handler) NULL, /* SIOCSIWFRAG */ - (iw_handler) zd1205wext_giwfrag, /* SIOCGIWFRAG */ - (iw_handler) NULL, /* SIOCSIWTXPOW */ - (iw_handler) NULL, /* SIOCGIWTXPOW */ - (iw_handler) NULL, /* SIOCSIWRETRY */ - (iw_handler) NULL, /* SIOCGIWRETRY */ - (iw_handler) NULL, /* SIOCSIWENCODE */ - (iw_handler) NULL, /* SIOCGIWENCODE */ - (iw_handler) NULL, /* SIOCSIWPOWER */ - (iw_handler) NULL, /* SIOCGIWPOWER */ -}; + (iw_handler) NULL, /* SIOCSIWESSID */ + (iw_handler) NULL, /* SIOCGIWESSID */ + (iw_handler) NULL, /* SIOCSIWNICKN */ + (iw_handler) NULL, /* SIOCGIWNICKN */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* SIOCSIWRATE */ + (iw_handler) zd1205wext_giwrate, /* SIOCGIWRATE */ + (iw_handler) NULL, /* SIOCSIWRTS */ + + (iw_handler) zd1205wext_giwrts, /* SIOCGIWRTS */ + (iw_handler) NULL, /* SIOCSIWFRAG */ + (iw_handler) zd1205wext_giwfrag, /* SIOCGIWFRAG */ + (iw_handler) NULL, /* SIOCSIWTXPOW */ + (iw_handler) NULL, /* SIOCGIWTXPOW */ + (iw_handler) NULL, /* SIOCSIWRETRY */ + (iw_handler) NULL, /* SIOCGIWRETRY */ + (iw_handler) NULL, /* SIOCSIWENCODE */ + (iw_handler) NULL, /* SIOCGIWENCODE */ + (iw_handler) NULL, /* SIOCSIWPOWER */ + (iw_handler) NULL, /* SIOCGIWPOWER */ + }; static const iw_handler zd1205_private_handler[] = -{ - NULL, /* SIOCIWFIRSTPRIV */ -}; + { + NULL, /* SIOCIWFIRSTPRIV */ + }; + -struct iw_handler_def p80211wext_handler_def = { - num_standard: sizeof(zd1205wext_handler) / sizeof(iw_handler), - num_private: sizeof(zd1205_private_handler)/sizeof(iw_handler), - num_private_args: sizeof(zd1205_private_args)/sizeof(struct iw_priv_args), - standard: zd1205wext_handler, - private: (iw_handler *) zd1205_private_handler, - private_args: (struct iw_priv_args *) zd1205_private_args -}; +struct iw_handler_def p80211wext_handler_def = + { +/* ath_desc: depend on wireless version, not kernel version */ +#if WIRELESS_EXT > 16 + .get_wireless_stats = &zd1205wext_iw_get_stats, +#endif + num_standard: + sizeof(zd1205wext_handler) / sizeof(iw_handler), + num_private: + sizeof(zd1205_private_handler)/sizeof(iw_handler), + + num_private_args: + sizeof(zd1205_private_args)/sizeof(struct iw_priv_args), + standard: zd1205wext_handler, + private: (iw_handler *) zd1205_private_handler, + private_args: (struct iw_priv_args *) zd1205_private_args + }; #endif +#if 0//(LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) +#define do_div(n,base) ({ \ + unsigned long __upper, __low, __high, __mod; \ + asm("":"=a" (__low), "=d" (__high):"A" (n)); \ + __upper = __high; \ + if (__high) { \ + __upper = __high % (base); \ + __high = __high / (base); \ + } \ + asm("divl %2":"=a" (__low), "=d" (__mod):"rm" (base), "0" (__low), "1" (__upper)); \ + asm("":"=A" (n):"a" (__low),"d" (__high)); \ + __mod; \ +}) +#endif #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,6)) -static __inline__ void wait_ms(unsigned int ms) +static void wait_ms(unsigned int ms) { - if (!in_interrupt()) { - current->state = TASK_UNINTERRUPTIBLE; - schedule_timeout(1 + ms * HZ / 1000); - } else - mdelay(ms); + if(!in_interrupt()) { + current->state = TASK_UNINTERRUPTIBLE; + schedule_timeout(1 + ms * HZ / 1000); + } else + mdelay(ms); } #endif +const U16 dot11A_Channel[]= + { + 36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140,184,188,192,196,8,12,16,34,38,42,46,149,153,157,161,165 + }; +const U16 dot11A_Channel_Amount=sizeof(dot11A_Channel)/sizeof(U16); + + + #if defined(OFDM) u8 OfdmRateTbl[12] = { - 0x00, //1M - 0x01, //2M - 0x02, //5.5M - 0x03, //11M - 0x1b, //6M - 0x1f, //9M - 0x1a, //12M - 0x1e, //18M - 0x19, //24M - 0x1d, //36M - 0x18, //48M - 0x1c //54M -}; + 0x00, //1M + 0x01, //2M + 0x02, //5.5M + 0x03, //11M + 0x1b, //6M + 0x1f, //9M + 0x1a, //12M + 0x1e, //18M + 0x19, //24M + 0x1d, //36M + 0x18, //48M + 0x1c //54M + }; +//Rate > 6M, the bit Long/Short preamble is 1 for 802.11a +//While it's 0 for 802.11g +u8 OfdmRateTbl_11A[12]= { + 0x00, //Useless + 0x01, //Useless + 0x02, //Useless + 0x03, //Useless + 0x3b, //6M + 0x3f, //9M + 0x3a, //12M + 0x3e, //18M + 0x39, //24M + 0x3d, //36M + 0x38, //48M + 0x3c //54M + + }; #endif +//The Order is meaningful, Do not Change +static u8 a_ChannelMap[] = { + 184,196,16, + 36,36, + 40,48, + 52,64, + 100,112, + 128,140, + 149,165}; + +typedef struct _a_InterpolationStruc +{ + u8 a_Channel; + u8 Left_Most_Channel; + u8 Right_Most_Channel; + u8 TotalDivisionNum; + u8 Position; // starting from left. +} +a_InterpolationStruc; + +static a_InterpolationStruc a_InterpolationTbl[] = { + //a_Channel, Left_Most_Channel, Right_Most_Channel,TotalDivisionNum,Position + {188, 184, 196, 3, 1}, + {192, 184, 196, 3, 2}, + { 8, 16, 16, 3, 3}, + { 12, 16, 16, 3, 3}, + { 34, 36, 36, 3, 3}, + { 38, 36, 36, 3, 3}, + { 42, 40, 48, 4, 1}, + { 44, 40, 48, 4, 2}, + { 46, 40, 48, 4, 3}, + { 56, 52, 64, 3, 1}, + { 60, 52, 64, 3, 2}, + {104, 100, 112, 3, 1}, + {108, 100, 112, 3, 2}, + {116, 112, 128, 4, 1}, + {120, 112, 128, 4, 2}, + {124, 112, 128, 4, 3}, + {132, 128, 140, 3, 1}, + {136, 128, 140, 3, 2}, + {153, 149, 165, 4, 1}, + {157, 149, 165, 4, 2}, + {161, 149, 165, 4, 3} + + }; +#define a_CALIBRATED_CH_NUM sizeof(a_ChannelMap) +#define a_INTERPOLATION_CH_NUM (sizeof(a_InterpolationTbl) / sizeof(a_InterpolationStruc)) +#define a_MAX_CALIBRATION_CH_NUM 16 +#define a_MAX_INTERPOLATION_CH_NUM 32 +#define cPWR_INT_VALUE_GUARD 8 +u8 a_Calibration_Data[4][a_MAX_CALIBRATION_CH_NUM]; +u8 a_Interpolation_Data[4][a_MAX_INTERPOLATION_CH_NUM]; +// [0][]:CH, +// [1][]:Integration Value +// [2][]:SetPoint_36M +// [3][]:SetPoint_48M_54M + + +//Find the array index of certain Channel +u8 a_get_cal_int_val( u8 index) +{ + u32 tmpvalue; + + if (index < a_CALIBRATED_CH_NUM) { + tmpvalue=zd_readl(ZD_E2P_11A_INT_VALUE1+((index>>2)<<2)); + return ((u8)(tmpvalue >> (index%4*8))); + } else { + printk("Error in a_get_cal_int_val\n"); + return FALSE; + } +} + +u8 a_get_cal_36M_setpoint_val( u8 index) +{ + u32 tmpvalue; + + if (index < 16) { + tmpvalue=zd_readl(ZD_E2P_A36M_CAL_VALUE+((index>>2)<<2)); + return ((u8)(tmpvalue >> (index%4*8))); + } else { + printk("Error in a_get_cal_36M_setpoint_val\n"); + return FALSE; + } +} + +u8 a_get_cal_48M_54M_setpoint_val( u8 index) +{ + u32 tmpvalue; + + if (index < a_CALIBRATED_CH_NUM ) { + tmpvalue=zd_readl(ZD_E2P_A54M_CAL_VALUE+((index>>2)<<2)); + return ((u8)(tmpvalue >> (index%4*8))); + } else { + printk("Error in a_get_cal_54M_setpoint_val\n"); + return FALSE; + } +} +u8 a_find_index_in_a_Calibration_Data( u8 ch) +{ + u8 i; + for (i=0;i=48 + *calValue = a_Interpolation_Data[3][idx]; + } else + return 0xff; + } else {//Channel is in Calibration Data + *intValue = a_Calibration_Data[1][idx]; + if(rate <= RATE_36M) + *calValue = a_Calibration_Data[2][idx]; + else //rate >=48 + *calValue = a_Calibration_Data[3][idx]; + } + + return 0; + +} + -void zd_writel(u32 value, u32 offset) +/* ath: gcc4 needs inline function bodies in the declaration */ +inline void zd_writel(u32 value, u32 offset) { struct zd1205_private *macp = g_dev->priv; void *regp = macp->regp; u32 RegWait = 0; +#ifdef HOST_IF_USB #if fPROG_FLASH + if (!macp->bAllowAccessRegister) return; + #endif zd1211_writel(offset, value, true); + + return; +#endif + atomic_inc(&macp->DoNotSleep); - if (dot11Obj.bDeviceInSleep) { - while ((readl(regp+ZD_MAC_PS_STATE) & 0x7) != MAC_OPERATION) { + if (dot11Obj.bDeviceInSleep) { + while((readl(regp+ZD_MAC_PS_STATE) & 0x7) != MAC_OPERATION) { udelay(1000); - RegWait++; - if ((RegWait > REG_MAX_WAIT) || macp->bSurpriseRemoved) { + RegWait++; + if ((RegWait > REG_MAX_WAIT) || macp->bSurpriseRemoved) { dot11Obj.bDeviceInSleep = 0; ZD1211DEBUG(0, "zd_writel Sleep to die!!!"); break; } - } + + } } - + writel(value, regp+offset); atomic_dec(&macp->DoNotSleep); } -u32 zd_readl(u32 offset) + +inline u32 zd_readl(u32 offset) { struct zd1205_private *macp = g_dev->priv; void *regp = macp->regp; u32 value; u32 RegWait = 0; + +#ifdef HOST_IF_USB #if fPROG_FLASH + if (!macp->bAllowAccessRegister) + return 0xffffffff; #endif + value = zd1211_readl(offset, true); return value; +#endif + atomic_inc(&macp->DoNotSleep); - if (dot11Obj.bDeviceInSleep) { - while ((readl(regp+ZD_MAC_PS_STATE) & 0x7) != MAC_OPERATION) { + if (dot11Obj.bDeviceInSleep) { + while((readl(regp+ZD_MAC_PS_STATE) & 0x7) != MAC_OPERATION) { udelay(1000); - RegWait++; - if ((RegWait > REG_MAX_WAIT) || macp->bSurpriseRemoved) { + RegWait++; + if ((RegWait > REG_MAX_WAIT) || macp->bSurpriseRemoved) { + dot11Obj.bDeviceInSleep = 0; ZD1211DEBUG(0, "zd_readl Sleep to die!!!"); break; } - } + } } value = readl(regp+offset); - atomic_dec(&macp->DoNotSleep); + atomic_dec(&macp->DoNotSleep); return value; } -#define fDISABLE_LED 0 + +#ifdef HOST_IF_USB +#define fDISABLE_LED 0 void iLED_ON(struct zd1205_private *macp, u32 LEDn) { #if !fDISABLE_LED - u32 tmpvalue; - tmpvalue = zd_readl(rLED_CTRL); - tmpvalue |= LEDn; - zd_writel(tmpvalue, rLED_CTRL); + + u32 tmpvalue; + + tmpvalue = zd_readl(rLED_CTRL); + tmpvalue |= LEDn; + zd_writel(tmpvalue, rLED_CTRL); + +#ifdef ROBIN_KAO + + tmpvalue = zd_readl(FW_LINK_STATUS); + tmpvalue |= 0x1; + zd_writel(tmpvalue, FW_LINK_STATUS); +#endif + #endif } + void iLED_OFF(struct zd1205_private *macp, u32 LEDn) { #if !fDISABLE_LED - u32 tmpvalue; - tmpvalue = zd_readl(rLED_CTRL); - tmpvalue &= ~LEDn; - zd_writel(tmpvalue, rLED_CTRL); + + u32 tmpvalue; + + + tmpvalue = zd_readl(rLED_CTRL); + tmpvalue &= ~LEDn; + zd_writel(tmpvalue, rLED_CTRL); + + +#ifdef ROBIN_KAO + + zd_writel(0x0, FW_LINK_STATUS); +#endif + #endif } + void iLED_SWITCH(struct zd1205_private *macp, u32 LEDn) { -#if !fDISABLE_LED - u32 tmpvalue; - tmpvalue = zd_readl(rLED_CTRL); - tmpvalue ^= LEDn; - zd_writel(tmpvalue, rLED_CTRL); +#if !fDISABLE_LED + u32 tmpvalue; + + tmpvalue = zd_readl(rLED_CTRL); + tmpvalue ^= LEDn; + zd_writel(tmpvalue, rLED_CTRL); #endif } -/* Disable interrupts on our PCI board by setting the mask bit */ +#else +void iLED_ON(struct zd1205_private *macp, u32 LEDn) +{ + zd_writel(0x1, LEDn); +} + + + + + +void iLED_OFF(struct zd1205_private *macp, u32 LEDn) +{ + zd_writel(0x0, LEDn); +} + + +void iLED_SWITCH(struct zd1205_private *macp, u32 LEDn) +{ + u32 tmpvalue; + + tmpvalue = zd_readl(LEDn); + tmpvalue ^= 0x1; + zd_writel(tmpvalue, LEDn); + +} +#endif + + void zd1205_disable_int(void) { - zd_writel(0, InterruptCtrl); + + /* Disable interrupts on our PCI board by setting the mask bit */ + zd_writel(0, InterruptCtrl); } + + + void zd1205_enable_int(void) { - struct zd1205_private *macp = g_dev->priv; - zd_writel(macp->intrMask, InterruptCtrl); + struct zd1205_private *macp = g_dev->priv; + + zd_writel(macp->intrMask, InterruptCtrl); } + void zd1205_start_download(u32 phyAddr) { - return; +#ifdef HOST_IF_USB + return; +#endif + + if (!dot11Obj.bDeviceInSleep) + zd_writel(phyAddr, ZD_PCI_TxAddr_p1); } + void zd1205_start_upload(u32 phyAddr) { - return; +#ifdef HOST_IF_USB + + return; +#endif + + + if (!dot11Obj.bDeviceInSleep) { + zd_writel(phyAddr, ZD_PCI_RxAddr_p1); + + + zd_writel(0, ZD_PCI_RxAddr_p2); + + } } + int zd1205_DestPowerSave(struct zd1205_private *macp, u8 *pDestAddr) + { - u32 tmpvalue; - if ((macp->cardSetting.ATIMWindow != 0) && (macp->bAssoc)) { - // We must make sure that the device has been in IBSS mode and PwrMgt mode. - tmpvalue = zd_readl(ZD_BCNInterval); - if ((tmpvalue & IBSS_MODE) && (tmpvalue & POWER_MNT)) { - // ATIM could be sent only when BCNController is active. - if ((*(pDestAddr) & BIT_0) || (macp->bIBSS_Wakeup_Dest)) { - // We should issue ATIM for multicast frame. - macp->bIBSS_Wakeup_Dest = 0; - return 1; - } - } - } - return 0; + u32 tmpvalue; + + if ((macp->cardSetting.ATIMWindow != 0) && (macp->bAssoc)) + { + // We must make sure that Device has been in IBSS mode and PwrMgt mode. + tmpvalue = zd_readl(ZD_BCNInterval); + if ((tmpvalue & IBSS_MODE) && (tmpvalue & POWER_MNT)) { + + + // ATIM could be sent only when BCNController is active. + if ((*(pDestAddr) & BIT_0) || (macp->bIBSS_Wakeup_Dest)) { // We should issue ATIM for multicast frame. + macp->bIBSS_Wakeup_Dest = 0; + return 1; + } + } + } + + + return 0; } + + static void zd1205_action(unsigned long parm) { - zd_SigProcess(); //process management frame queue in mgtQ + zd_SigProcess(); //process management frame queue in mgtQ } + static void zd1205_ps_action(unsigned long parm) { - zd_CleanupAwakeQ(); + zd_CleanupAwakeQ(); } + static void zd1205_tx_action(unsigned long parm) { - zd_CleanupTxQ(); + zd_CleanupTxQ(); + +} + +#ifndef HOST_IF_USB +u8 zd1205_RateAdaption(u16 aid, u8 CurrentRate, u8 gear) +{ + + u8 NewRate; + + + RATEDEBUG("***** zd1205_RateAdaption"); + RATEDEBUG_V("aid", aid); + + + RATEDEBUG_V("CurrentRate", CurrentRate); + + if (gear == FALL_RATE) { + + + if (CurrentRate >= RATE_2M) { + NewRate = CurrentRate - 1; + zd_EventNotify(EVENT_UPDATE_TX_RATE, (U32)NewRate, (U32)aid, 0); + } else { + NewRate = CurrentRate; + } + return (NewRate); + } + + return 0; } +#endif void zd1205_ClearTupleCache(struct zd1205_private *macp) { - int i; - tuple_Cache_t *pCache = &macp->cache; - pCache->freeTpi = 0; - for (i=0; icache[i].full = 0; - } + int i; + tuple_Cache_t *pCache = &macp->cache; + + pCache->freeTpi = 0; + for (i=0; icache[i].full = 0; + } } + u8 zd1205_SearchTupleCache(struct zd1205_private *macp, u8 *pAddr, u16 seq, u8 frag) { - int k; - tuple_Cache_t *pCache = &macp->cache; - for (k=0; kcache[k].ta[0], (char *)pAddr, 6) == 0) && - (pCache->cache[k].sn == seq) && - (pCache->cache[k].fn == frag) && - (pCache->cache[k].full)) { - return 1; - } - } - return 0; + int k; + tuple_Cache_t *pCache = &macp->cache; + + for (k=0; kcache[k].ta[0], (char *)pAddr, 6) == 0) + && (pCache->cache[k].sn == seq) && (pCache->cache[k].fn == frag) + && (pCache->cache[k].full)) + return 1; + } + + return 0; } + void zd1205_UpdateTupleCache(struct zd1205_private *macp, u8 *pAddr, u16 seq ,u8 frag) { - int k; - tuple_Cache_t *pCache = &macp->cache; + int k; + tuple_Cache_t *pCache = &macp->cache; + + for (k=0; kcache[k].full) { + if ((memcmp((char *)&pCache->cache[k].ta[0], (char *)pAddr, 6) == 0) + && (pCache->cache[k].sn == seq) ) { + pCache->cache[k].fn = frag; + + return; + } + } + } + + pCache->freeTpi &= (TUPLE_CACHE_SIZE-1); + memcpy(&pCache->cache[pCache->freeTpi].ta[0], (char *)pAddr, 6); + pCache->cache[pCache->freeTpi].sn = seq; + pCache->cache[pCache->freeTpi].fn = frag; + pCache->cache[pCache->freeTpi].full = 1; + + pCache->freeTpi++; - for (k=0; kcache[k].full) { - if ((memcmp((char *)&pCache->cache[k].ta[0], (char *)pAddr, 6) == 0) && - (pCache->cache[k].sn == seq)) { - pCache->cache[k].fn = frag; - return; - } - } - } - pCache->freeTpi &= (TUPLE_CACHE_SIZE-1); - memcpy(&pCache->cache[pCache->freeTpi].ta[0], (char *)pAddr, 6); - pCache->cache[pCache->freeTpi].sn = seq; - pCache->cache[pCache->freeTpi].fn = frag; - pCache->cache[pCache->freeTpi].full = 1; - pCache->freeTpi++; } + void zd1205_ArReset(struct zd1205_private *macp) { - u8 i; - defrag_Array_t *pArray = &macp->defragArray; - for (i=0; impdu[i].inUse = 0; + u8 i; + defrag_Array_t *pArray = &macp->defragArray; + + for (i=0; impdu[i].inUse = 0; } + void zd1205_ArAge(struct zd1205_private *macp, u32 age) { - u8 i; - defrag_Array_t *pArray = &macp->defragArray; - - for (i=0; impdu[i].inUse) { - if ((age - pArray->mpdu[i].eol) > MAX_RX_TIMEOUT) { - DFDEBUG("***** zd1205_ArAged"); - macp->ArAgedCnt++; - dot11Obj.ReleaseBuffer(pArray->mpdu[i].buf); - pArray->mpdu[i].inUse = 0; - } - } - } + u8 i; + defrag_Array_t *pArray = &macp->defragArray; + + for (i=0; impdu[i].inUse) { + if ((age - pArray->mpdu[i].eol) > MAX_RX_TIMEOUT) { + DFDEBUG("***** zd1205_ArAged"); + macp->ArAgedCnt++; + + + + + dot11Obj.ReleaseBuffer(pArray->mpdu[i].buf); + pArray->mpdu[i].inUse = 0; + } + } + } } -int zd1205_ArFree(struct zd1205_private *macp) + + + +int zd1205_ArFree(struct zd1205_private *macp) { - u8 i; - defrag_Array_t *pArray = &macp->defragArray; - for (i=0; impdu[i].inUse) - return i; - } - macp->ArFreeFailCnt++; - return -1; + u8 i; + defrag_Array_t *pArray = &macp->defragArray; + + for (i=0; impdu[i].inUse) + + return i; + } + + macp->ArFreeFailCnt++; + return -1; } -int zd1205_ArSearch(struct zd1205_private *macp, u8 *pAddr, u16 seq, u8 frag) + +int zd1205_ArSearch(struct zd1205_private *macp, u8 *pAddr, u16 seq, u8 frag) { - u8 i; - defrag_Array_t *pArray = &macp->defragArray; - defrag_Mpdu_t *pDeMpdu; - for (i=0; impdu[i]; - if (pDeMpdu->inUse) { - if ((memcmp((char *)&pDeMpdu->ta[0], pAddr, 6) == 0) && (pDeMpdu->sn == seq)) { - if (pDeMpdu->fn == (frag-1)) { - return i; - } else { - dot11Obj.ReleaseBuffer(pDeMpdu->buf); - pDeMpdu->inUse = 0; - return -1; - } - } - } - } - return -1; + u8 i; + defrag_Array_t *pArray = &macp->defragArray; + defrag_Mpdu_t *pDeMpdu; + + + for (i=0; impdu[i]; + if (pDeMpdu->inUse) { + if ((memcmp((char *)&pDeMpdu->ta[0], pAddr, 6) == 0) + && (pDeMpdu->sn == seq)) { + if (pDeMpdu->fn == (frag-1)) { + return i; + } else { + dot11Obj.ReleaseBuffer(pDeMpdu->buf); + pDeMpdu->inUse = 0; + return -1; + } + } + } + } + + return -1; } + + void zd1205_ArUpdate(struct zd1205_private *macp, u8 *pAddr, u16 seq, u8 frag, int i) { - defrag_Array_t *pArray = &macp->defragArray; - pArray->mpdu[i].inUse = 1; - memcpy(&pArray->mpdu[i].ta[0], (char*)pAddr, 6); - pArray->mpdu[i].sn = seq; - pArray->mpdu[i].fn = frag; - pArray->mpdu[i].eol = nowT(); + + defrag_Array_t *pArray = &macp->defragArray; + + + pArray->mpdu[i].inUse = 1; + memcpy(&pArray->mpdu[i].ta[0], (char*)pAddr, 6); + pArray->mpdu[i].sn = seq; + pArray->mpdu[i].fn = frag; + pArray->mpdu[i].eol = nowT(); } + void zd1205_IncreaseTxPower(struct zd1205_private *macp, u8 TxPwrType) { - u8 *pTxGain; + u8 *pTxGain; + #if fTX_GAIN_OFDM - if (TxPwrType != cTX_OFDM) - pTxGain = &(dot11Obj.TxGainSetting); - else - pTxGain = &(dot11Obj.TxGainSetting2); -#else - pTxGain = &(dot11Obj.TxGainSetting); -#endif - switch(macp->RF_Mode) { - case MAXIM_NEW_RF: - if (*pTxGain < MAXIM2_MAX_TX_PWR_SET) - (*pTxGain)++; - break; + if (TxPwrType != cTX_OFDM) + pTxGain = &(dot11Obj.TxGainSetting); - case RFMD_RF: - if (*pTxGain < RFMD_MAX_TX_PWR_SET) - (*pTxGain) ++; - break; + else + pTxGain = &(dot11Obj.TxGainSetting2); +#else - case AL2230_RF: - if (*pTxGain < AL2230_MAX_TX_PWR_SET) - (*pTxGain) += 2; - break; + pTxGain = &(dot11Obj.TxGainSetting); +#endif - default: - break; - } - HW_Write_TxGain2(&dot11Obj, TxPwrType); + switch(macp->RF_Mode) + { + case MAXIM_NEW_RF: + if (*pTxGain < MAXIM2_MAX_TX_PWR_SET) + + (*pTxGain)++; + break; + + case RFMD_RF: + if (*pTxGain < RFMD_MAX_TX_PWR_SET) + (*pTxGain) ++; + break; + + case AL2230_RF: + case AL2230S_RF: + case AL7230B_RF: + if (*pTxGain < AL2230_MAX_TX_PWR_SET) + (*pTxGain) += 2; + break; + + default: + break; + } + + HW_Write_TxGain2(&dot11Obj, TxPwrType); } + void zd1205_DecreaseTxPower(struct zd1205_private *macp, u8 TxPwrType) { - u8 *pTxGain; + u8 *pTxGain; + #if fTX_GAIN_OFDM - if (TxPwrType != cTX_OFDM) - pTxGain = &(dot11Obj.TxGainSetting); - else - pTxGain = &(dot11Obj.TxGainSetting2); -#else - pTxGain = &(dot11Obj.TxGainSetting); -#endif - switch(macp->RF_Mode) { - case MAXIM_NEW_RF: - if (*pTxGain > MAXIM2_MIN_TX_PWR_SET) - (*pTxGain)--; - break; - case RFMD_RF: - if (*pTxGain > RFMD_MIN_TX_PWR_SET) - (*pTxGain) --; - break; + if (TxPwrType != cTX_OFDM) + pTxGain = &(dot11Obj.TxGainSetting); + else + pTxGain = &(dot11Obj.TxGainSetting2); +#else - case AL2230_RF: - if (*pTxGain > AL2230_MIN_TX_PWR_SET) - (*pTxGain) -= 2; - break; + pTxGain = &(dot11Obj.TxGainSetting); - default: - break; - } - HW_Write_TxGain2(&dot11Obj, TxPwrType); -} +#endif -int zd1205_AnyActivity(struct zd1205_private *macp) -{ - unsigned long flags; - // Any frame wait for transmission. - spin_lock_irqsave(&macp->q_lock, flags); - if (macp->activeTxQ->count) { - spin_unlock_irqrestore(&macp->q_lock, flags); - return 1; - } - spin_unlock_irqrestore(&macp->q_lock, flags); + switch(macp->RF_Mode) + { + case MAXIM_NEW_RF: + if (*pTxGain > MAXIM2_MIN_TX_PWR_SET) - if ((dot11Obj.QueueFlag & MGT_QUEUE_SET) || (dot11Obj.QueueFlag & TX_QUEUE_SET)) - return 1; - if (macp->bAnyActivity) - return 1; + (*pTxGain)--; + break; - // No any activity. - return 0; -} + case RFMD_RF: + if (*pTxGain > RFMD_MIN_TX_PWR_SET) -void zd1205_connect_mon(struct zd1205_private *macp) -{ - static u16 IdleLoop_Under_Seq1 = 0; + (*pTxGain) --; - zd_ConnectMon(); - if ((macp->cardSetting.BssType == INFRASTRUCTURE_BSS) && (macp->bPSMSupported)) { - if ((macp->PwrState) && (!dot11Obj.bDeviceInSleep) && (macp->bAssoc)) { - // Solve Sequence number duplication problem after wakeup. - if (!zd1205_AnyActivity(macp)) { - if ((macp->SequenceNum != 1) || (IdleLoop_Under_Seq1 > 20)) { - zd1205_sleep_reset(macp); - IdleLoop_Under_Seq1 = 0; - // Avoid accessing Registers to save computation power. - } else { - IdleLoop_Under_Seq1++; - } - // ZD1211DEBUG(2, "IdleLoop_Under_Seq1= %d\n", IdleLoop_Under_Seq1); - } - } - } -} + break; -void zd1205_mgt_mon_cb(struct net_device *dev) -{ - struct zd1205_private *macp = dev->priv; + case AL2230_RF: + case AL2230S_RF: + case AL7230B_RF: + if (*pTxGain > AL2230_MIN_TX_PWR_SET) + (*pTxGain) -= 2; + break; - defer_kevent(macp, KEVENT_MGT_MON_TIMEOUT); - mod_timer(&(macp->tm_mgt_id), jiffies+ (1*HZ)/50); //20ms -} + default: + break; + } -void zd1205_SwAntennaDiv(struct zd1205_private *macp) -{ -} + HW_Write_TxGain2(&dot11Obj, TxPwrType); -void zd1205_CollectHwTally(struct zd1205_private *macp) -{ - macp->hwTotalRxFrm += zd_readl(TotalRxFrm); - macp->hwCRC32Cnt += zd_readl(CRC32Cnt); - macp->hwCRC16Cnt += zd_readl(CRC16Cnt); - // macp->hwDecrypErr_UNI += zd_readl(DecrypErr_UNI); - // macp->hwDecrypErr_Mul += zd_readl(DecrypErr_Mul); - macp->hwRxFIFOOverrun += zd_readl(RxFIFOOverrun); - macp->hwTotalTxFrm += zd_readl(TotalTxFrm); - macp->hwUnderrunCnt += zd_readl(UnderrunCnt); - macp->hwRetryCnt += zd_readl(RetryCnt); } -#define TOLERANCE 2 -int zd1025_IbssPsCheck(struct zd1205_private *macp) -{ - u32 ul_BcnItvl, ul_atimwnd; - u64 TSFTimer; - u32 tmpvalue; - - // Make sure that we have passed (ATIM-Window+TOLERANCE) - ul_BcnItvl = zd_readl(ZD_BCNInterval); - ul_BcnItvl &= 0xffff; - ul_atimwnd = zd_readl(ZD_ATIMWndPeriod); - tmpvalue = zd_readl(ZD_TSF_LowPart); - TSFTimer = tmpvalue; - - tmpvalue = zd_readl(ZD_TSF_HighPart); - TSFTimer += (((u64)tmpvalue) << 32); - TSFTimer = TSFTimer >> 10; // in unit of TU - - //printk("TSF(TU) %d \n", TSFTimer); - //printk("BeaconInterval = %d\n", ul_BcnItvl); - //printk("TSF mod BeaconInterval = %d\n", (TSFTimer % ul_BcnItvl)); - - if ((do_div(TSFTimer, ul_BcnItvl)) > (ul_atimwnd + TOLERANCE)) { - // Make sure no traffic before (ATIMWnd+TOLERANCE) - if ((!macp->bFrmRxed1) && (macp->SuggestionMode == PS_PSM)) { - // Any frame wait for transmission. - if (!macp->activeTxQ->count) { - zd1205_sleep_reset(macp); - return 1; - } - } - } - return 0; -} -void zd1025_InfraPsCheck(struct zd1205_private *macp) +int +zd1205_AnyActivity(struct zd1205_private *macp) { - u32 tmpvalue; + unsigned long flags; - // Now, we assure that no any power-save related operation performing. - // That's because all power-save related operations are either - // Mutexed by Adapter->Lock or Notified by Adapter->Notification. - if ((macp->SuggestionMode == PS_PSM) && (macp->PwrState == PS_CAM)) { - down(&macp->bcn_sem); - tmpvalue = zd_readl(ZD_BCNInterval); - tmpvalue |= POWER_MNT; - zd_writel(tmpvalue, ZD_BCNInterval); - up(&macp->bcn_sem); - macp->PwrState = PS_PSM; - zd_EventNotify(EVENT_PS_CHANGE, (U8)macp->PwrState, 0, 0); - ZD1211DEBUG(0, "=====CAM --> PSM\n"); - } else if ((macp->SuggestionMode == PS_CAM) && (macp->PwrState == PS_PSM) && - (!dot11Obj.bDeviceInSleep)) { - down(&macp->bcn_sem); - tmpvalue = zd_readl(ZD_BCNInterval); - tmpvalue &= ~POWER_MNT; - zd_writel(tmpvalue, ZD_BCNInterval); - up(&macp->bcn_sem); - - macp->PwrState = PS_CAM; - zd_EventNotify(EVENT_PS_CHANGE, (U8)macp->PwrState, 0, 0); - ZD1211DEBUG(0, "=====PSM --> CAM\n"); - } - - return; -} + // Any frame wait for transmission. + spin_lock_irqsave(&macp->q_lock, flags); + if (macp->activeTxQ->count) + { + spin_unlock_irqrestore(&macp->q_lock, flags); -void zd1205_house_keeping(struct zd1205_private *macp) -{ - u32 tmpvalue; - static u32 loop = 0; - card_Setting_t *pSetting = &macp->cardSetting; - u8 BssType = pSetting->BssType; - u8 bAssoc = macp->bAssoc; - - if (dot11Obj.QueueFlag & TX_QUEUE_SET) { - macp->txQueSetCnt++; - //tasklet_schedule(&macp->zd1205_tx_tasklet); - zd_CleanupTxQ(); - } - loop++; - if (dot11Obj.bDeviceInSleep) - return; + return 1; + } + spin_unlock_irqrestore(&macp->q_lock, flags); - // Software Antenna Diversity Mechanism - if (macp->bEnableSwAntennaDiv) { - zd1205_SwAntennaDiv(macp); - } - // IBSS power-save monitor - if ((BssType == INDEPENDENT_BSS) && (bAssoc)) { - if (macp->bPSMSupported) { - if (zd1025_IbssPsCheck(macp)) - return; - } - } + if ((dot11Obj.QueueFlag & MGT_QUEUE_SET) || (dot11Obj.QueueFlag & TX_QUEUE_SET)) + return 1; - //++ Recovery mechanism for ZD1202 ASIC Phy-Bus arbitration fault. - // We combined tx-power-tracking/Sw Antenna diversity code here to - // reduce the frequence of - // calling ReleaseCtrOfPhyReg. It's harmful to throughput. - - if ((loop % 1) == 0) { //every 100 ms - //Collect HW Tally - //zd1205_CollectHwTally(macp); //This will make us lose CfgNextBcn interrupt - - //tmpvalue = zd_readl(0x6e4); - //macp->REG_6e4_Add += tmpvalue; - zd1211_StrongSignalDect(macp); - // Infrastructure Power-State momitor + if (macp->bAnyActivity) + return 1; - if ((BssType == INFRASTRUCTURE_BSS) && (bAssoc) && (macp->bPSMSupported)) { - zd1025_InfraPsCheck(macp); - } - } - zd1211_TxCalibration(macp); - zd1211_CheckWithIPC(macp); + // No any activity. + return 0; } -void HKeepingCB(struct net_device *dev) -{ - struct zd1205_private *macp = dev->priv; - defer_kevent(macp, KEVENT_HOUSE_KEEPING); - mod_timer(&(macp->tm_hking_id), jiffies+ (1*HZ)/10); -} -void zd1205_CollectBssInfo(struct zd1205_private *macp, plcp_wla_Header_t *pWlanHdr, u8 *pMacBody, u32 bodyLen) +void zd1205_connect_mon(struct zd1205_private *macp) { - u8 bssidmatched = 0; - u8 i, j; - u8 *pBssid; - u8 *pByte; - u32 currPos = 0; - u8 elemId, elemLen; - - if ((*(pMacBody+CAP_OFFSET)) & BIT_1) //IBSS - pBssid = pWlanHdr->Address3; - else - pBssid = pWlanHdr->Address2; - - for (i=0; ibss_index; i++) { - for (j=0; j<6; j++) { - if (macp->BSSInfo[i].bssid[j] != pBssid[j]) { - break; - } - } + static u16 IdleLoop_Under_Seq1 = 0; - if (j==6) { - bssidmatched = 1; - break; - } - } + zd_ConnectMon(); + // if (dot11Obj.bDeviceInSleep) + // printk(KERN_ERR "mon\n"); + if ((macp->cardSetting.BssType == INFRASTRUCTURE_BSS) && (macp->bPSMSupported)) + { + if ((!dot11Obj.bChScanning) && (macp->PwrState) && (!dot11Obj.bDeviceInSleep) && (macp->bAssoc)) { + // Solve Sequence number duplication problem after wakeup. + if (!zd1205_AnyActivity(macp)) { + if ((macp->SequenceNum != 1) || (IdleLoop_Under_Seq1 > 20)) { + //zd1205_sleep_reset(macp); + IdleLoop_Under_Seq1 = 0; + // Avoid accessing Registers to save computation power. + } else { + IdleLoop_Under_Seq1++; + } + //ZD1211DEBUG(2, "IdleLoop_Under_Seq1= %d\n", IdleLoop_Under_Seq1); + } + } + } - if (bssidmatched) return; - //get bssid - for (i=0; i<6; i++) { - macp->BSSInfo[macp->bss_index].bssid[i] = pBssid[i]; - } +} - //get beacon interval - pByte = pMacBody+BCN_INTERVAL_OFFSET; - macp->BSSInfo[macp->bss_index].beaconInterval = ((*pByte) + ((u16)(*(pByte+1))<<8)); - - //get capability - pByte = pMacBody+CAP_OFFSET; - macp->BSSInfo[macp->bss_index].cap = ((*pByte) + ((u16)(*(pByte+1))<<8) ); - - //get element - pByte = pMacBody+SSID_OFFSET; - currPos = SSID_OFFSET; - while(currPos < bodyLen) { - elemId = *pByte; - elemLen = *(pByte+1); - - switch(elemId) { - case ELEID_SSID: //ssid - for (i=0; iBSSInfo[macp->bss_index].ssid[i] = *pByte; - pByte++; - } - break; - - case ELEID_SUPRATES: //supported rateS - for (i=0; iBSSInfo[macp->bss_index].supRates[i] = *pByte; - pByte++; - } - break; - - case ELEID_DSPARMS: //ds parameter - macp->BSSInfo[macp->bss_index].channel = *(pByte+2); - pByte += (elemLen+2); - break; - - case ELEID_EXT_RATES: - pByte += (elemLen+2); - break; - - default: - pByte += (elemLen+2); - break; - } - currPos += elemLen+2; - } +void zd1205_mgt_mon_cb(struct net_device *dev) +{ + struct zd1205_private *macp = dev->priv; - macp->BSSInfo[macp->bss_index].signalStrength = macp->rxSignalStrength; - macp->BSSInfo[macp->bss_index].signalQuality = macp->rxSignalQuality; - - if (macp->bss_index < (BSS_INFO_NUM-1)) { - macp->bss_index ++; - } - return; -} +#ifdef HOST_IF_USB -void zd1205_dump_rfds(struct zd1205_private *macp) -{ - struct rx_list_elem *rx_struct = NULL; - struct list_head *entry_ptr = NULL; - zd1205_RFD_t *rfd = 0; - struct sk_buff *skb; - - int i = 0; - - list_for_each(entry_ptr, &(macp->active_rx_list)) { - rx_struct = list_entry(entry_ptr, struct rx_list_elem, list_elem); - - if (!rx_struct) - return; - - skb = rx_struct->skb; - rfd = RFD_POINTER(skb, macp); /* locate RFD within skb */ - zd1205_dump_data("rfd", (u8 *)rfd, 24); - i++; - } -} + defer_kevent(macp, KEVENT_MGT_MON_TIMEOUT); + mod_timer(&(macp->tm_mgt_id), jiffies+ (1*HZ)/50); //20ms -void zd1205_dump_data(char *info, u8 *data, u32 data_len) -{ - int i; - printk(KERN_DEBUG "%s data [%d]: \n", info, data_len); - for (i=0; i0) && ((i+1)%16 == 0)) - printk("\n"); - } +#else - printk("\n"); -} + zd1205_connect_mon(macp); + mod_timer(&(macp->tm_mgt_id), jiffies+ (1*HZ)/50); //20ms +#endif -/** - * zd1205_get_rx_struct - retrieve cell to hold skb buff from the pool - * @macp: atapter's private data struct - * - * Returns the new cell to hold sk_buff or %NULL. - */ -static inline struct rx_list_elem * -zd1205_get_rx_struct(struct zd1205_private *macp) -{ - struct rx_list_elem *rx_struct = NULL; +} - if (!list_empty(&(macp->rx_struct_pool))) { - rx_struct = list_entry(macp->rx_struct_pool.next, - struct rx_list_elem, list_elem); - list_del(&(rx_struct->list_elem)); - } - return rx_struct; +void zd1205_SwAntennaDiv(struct zd1205_private *macp) +{ +#if fANT_DIVERSITY + static u32 loop = 0; + loop++; + + // Software Antenna Diversity Mechanism + if (macp->bEnableSwAntennaDiv) + { + switch(AccState) { + case ACC_1: + if ((loop % macp->Ant_MonitorDur1) == 0) { + if (macp->Acc_Num_OFDM) + Avg1_SQ_OFDM = macp->Acc_SQ_OFDM / macp->Acc_Num_OFDM; + else { + Avg1_SQ_OFDM = 0; + + if (macp->Acc_Num) + Avg1_SQ = macp->Acc_SQ / macp->Acc_Num; + else + Avg1_SQ = 0; + } + + // Higher SQ is better + if (((Avg1_SQ_OFDM < macp->NiceSQThr_OFDM) && (Avg1_SQ_OFDM > 0)) + || ((Avg1_SQ_OFDM == 0) + && ((Avg1_SQ < macp->NiceSQThr) && (Avg1_SQ > 0))) + || (!macp->bAssoc)) { // disconnected + SwitchAntenna(macp); + AccState = ACC_2; + } + + macp->Acc_SQ = 0; + + + macp->Acc_Num = 0; + + macp->Acc_SQ_OFDM = 0; + macp->Acc_Num_OFDM = 0; + } + break; + + case ACC_2: + if ((loop % macp->Ant_MonitorDur2) == 0) + { + if (macp->Acc_Num_OFDM) + Avg2_SQ_OFDM = macp->Acc_SQ_OFDM / macp->Acc_Num_OFDM; + else { + Avg2_SQ_OFDM = 0; + if (macp->Acc_Num) + Avg2_SQ = macp->Acc_SQ / macp->Acc_Num; + else + Avg2_SQ = 0; + } + + // Higher SQ is better + if ((Avg2_SQ_OFDM < Avg1_SQ_OFDM) + + + || (((Avg2_SQ_OFDM == 0) && (Avg1_SQ_OFDM == 0)) + && (Avg2_SQ < Avg1_SQ)) + || (!macp->bAssoc)) { // disconnected + SwitchAntenna(macp); + + + } + + AccState = ACC_1; + macp->Acc_SQ = 0; + macp->Acc_Num = 0; + macp->Acc_SQ_OFDM = 0; + macp->Acc_Num_OFDM = 0; + } + + break; + + default: + break; + } + } +#endif } -/** - * zd1205_alloc_skb - allocate an skb for the adapter - * @macp: atapter's private data struct - * - * Allocates skb with enough room for rfd, and data, and reserve non-data space. - * Returns the new cell with sk_buff or %NULL. - */ -static inline struct rx_list_elem * -zd1205_alloc_skb(struct zd1205_private *macp) -{ - struct sk_buff *new_skb; - u32 skb_size = sizeof (zd1205_RFD_t); - struct rx_list_elem *rx_struct; +void zd1205_CollectHwTally(struct zd1205_private *macp) +{ + macp->hwTotalRxFrm += zd_readl(TotalRxFrm); + macp->hwCRC32Cnt += zd_readl(CRC32Cnt); - ZENTER(4); - - new_skb = (struct sk_buff *) dev_alloc_skb(skb_size); - if (new_skb) { - /* The IP data should be - DWORD aligned. since the ethernet header is 14 bytes long, - we need to reserve 2 extra bytes so that the TCP/IP headers - will be DWORD aligned. */ - //skb_reserve(new_skb, 2); //for zd1202, rx dma must be 4-bytes aligmnebt - if ((rx_struct = zd1205_get_rx_struct(macp)) == NULL) - goto err; - - ZD1211DEBUG(4, "zd1211: rx_struct = %x\n", (u32)rx_struct); - rx_struct->skb = new_skb; - - //Rx DMA address must be 4 bytes alignment - ZD1211DEBUG(4, "zd1211: rx_struct->dma_addr = %x\n", (u32)rx_struct->dma_addr); - skb_reserve(new_skb, macp->rfd_size); //now skb->data point to RxBuffer - rx_struct->dma_addr = (u32)new_skb->data; - rx_struct->UnFinishFrmLen = 0; - ZEXIT(4); - return rx_struct; - } else { - macp->AllocSkbFailCnt++; - printk(KERN_DEBUG "zd1205: dev_alloc_skb fail\n"); - return NULL; - } + macp->hwCRC16Cnt += zd_readl(CRC16Cnt); + //macp->hwDecrypErr_UNI += zd_readl(DecrypErr_UNI); + //macp->hwDecrypErr_Mul += zd_readl(DecrypErr_Mul); + macp->hwRxFIFOOverrun += zd_readl(RxFIFOOverrun); + macp->hwTotalTxFrm += zd_readl(TotalTxFrm); -err: - printk(KERN_DEBUG "zd1205: ****** err\n"); - dev_kfree_skb_irq(new_skb); - return NULL; + macp->hwUnderrunCnt += zd_readl(UnderrunCnt); + macp->hwRetryCnt += zd_readl(RetryCnt); } -/** - * zd1205_add_skb_to_end - add an skb to the end of our rfd list - * @macp: atapter's private data struct - * @rx_struct: rx_list_elem with the new skb - * - * Adds a newly allocated skb to the end of our rfd list. - */ -inline void -zd1205_add_skb_to_end(struct zd1205_private *macp, struct rx_list_elem *rx_struct) + +#define TOLERANCE 2 + +int zd1205_IbssPsCheck(struct zd1205_private *macp) { - zd1205_RFD_t *rfdn; /* The new rfd */ + u32 ul_BcnItvl, ul_atimwnd; + u64 TSFTimer; + u32 tmpvalue; - zd1205_RFD_t *rfd; /* The old rfd */ - struct rx_list_elem *rx_struct_last; - ZENTER(4); + // Make sure that we have passed (ATIM-Window+TOLERANCE) + ul_BcnItvl = zd_readl(ZD_BCNInterval); + ul_BcnItvl &= 0xffff; - (rx_struct->skb)->dev = macp->device; - rfdn = RFD_POINTER(rx_struct->skb, macp); + ul_atimwnd = zd_readl(ZD_ATIMWndPeriod); + tmpvalue = zd_readl(ZD_TSF_LowPart); + TSFTimer = tmpvalue; - rfdn->CbCommand = __constant_cpu_to_le32(RFD_EL_BIT); - wmb(); - rfdn->CbStatus = 0xffffffff; + tmpvalue = zd_readl(ZD_TSF_HighPart); + TSFTimer += (((u64)tmpvalue) << 32); + TSFTimer = TSFTimer >> 10; // in unit of TU - rfdn->ActualCount = 0; - rfdn->MaxSize = __constant_cpu_to_le32(MAX_WLAN_SIZE); + //printk("TSF(TU) %d \n", TSFTimer); + //printk("BeaconInterval = %d\n", ul_BcnItvl); + //printk("TSF mod BeaconInterval = %d\n", (TSFTimer % ul_BcnItvl)); - rfdn->NextCbPhyAddrHighPart = 0; + if ((do_div(TSFTimer, ul_BcnItvl)) > (ul_atimwnd + TOLERANCE)) + { + // Make sure no traffic before (ATIMWnd+TOLERANCE) + if ((!macp->bFrmRxed1) && (macp->SuggestionMode == PS_PSM)) { + // Any frame wait for transmission. + if (!macp->activeTxQ->count) { - rfdn->NextCbPhyAddrLowPart = 0; + //zd1205_sleep_reset(macp); + return 1; + } + } + } - if (!list_empty(&(macp->active_rx_list))) { - rx_struct_last = list_entry(macp->active_rx_list.prev, - struct rx_list_elem, list_elem); - rfd = RFD_POINTER(rx_struct_last->skb, macp); - ZD1211DEBUG(4, "zd1211: rfd = %x\n", (u32)rfd); - put_unaligned(cpu_to_le32(rx_struct->dma_addr), - ((u32 *) (&(rfd->NextCbPhyAddrLowPart)))); - rfd->CbCommand = 0; - } - - list_add_tail(&(rx_struct->list_elem), &(macp->active_rx_list)); //add elem to active_rx_list - ZEXIT(4); + return 0; } -void zd1205_alloc_skbs(struct zd1205_private *macp) -{ - for (; macp->skb_req > 0; macp->skb_req--) { - struct rx_list_elem *rx_struct; - if ((rx_struct = zd1205_alloc_skb(macp)) == NULL) { - printk(KERN_DEBUG "zd1205: zd1205_alloc_skb fail\n"); - return; - } - zd1205_add_skb_to_end(macp, rx_struct); - } -} -void zd1205_transmit_cleanup(struct zd1205_private *macp, zd1205_SwTcb_t *sw_tcb) +void zd1205_InfraPsCheck(struct zd1205_private *macp) { - zd1205_HwTCB_t *hw_tcb; - u32 tbd_cnt; - int i; - zd1205_TBD_t *tbd_arr = sw_tcb->pFirstTbd; - - ZENTER(2); - - hw_tcb = sw_tcb->pTcb; - tbd_cnt = le32_to_cpu(hw_tcb->TxCbTbdNumber); - tbd_arr += 2; //CtrlSetting and MacHeader - - ZD1211DEBUG(2, "zd1211: umap tbd cnt = %x\n", tbd_cnt-2); - ZD1211DEBUG(2, "zd1211: Free TcbPhys = %x\n", (u32)sw_tcb->TcbPhys); - zd1205_qlast_txq(macp, macp->freeTxQ, sw_tcb); - ZD1211DEBUG(2, "zd1211: Cnt of freeTxQ = %x\n", macp->freeTxQ->count); - - //sw_tcb->HangDur = 0; - hw_tcb->CbStatus = 0xffffffff; - hw_tcb->TxCbTbdNumber = cpu_to_le32(0xaaaaaaaa); /* for debug */ - hw_tcb->CbCommand = cpu_to_le32(CB_S_BIT); - - if ((netif_running(macp->device)) && (macp->bAssoc)) { - netif_wake_queue(macp->device); //resume tx - } + u32 tmpvalue; - ZEXIT(2); + // Now, we assure that no any power-save related operation performing. + // That's because all power-save related operations are either + // Mutexed by Adapter->Lock or Notified by Adapter->Notification. + if ((macp->SuggestionMode == PS_PSM) && (macp->PwrState == PS_CAM)) + { + down(&macp->bcn_sem); + tmpvalue = zd_readl(ZD_BCNInterval); - return; -} + tmpvalue |= POWER_MNT; -void zd1205_tx_isr(struct zd1205_private *macp) -{ - zd1205_SwTcb_t *sw_tcb, *next_sw_tcb; - u16 aid; - int bRunOnce = false; + zd_writel(tmpvalue, ZD_BCNInterval); + up(&macp->bcn_sem); - ZD1211DEBUG(2, "***** zd1205_tx_isr enter *****\n"); + macp->PwrState = PS_PSM; + zd_EventNotify(EVENT_PS_CHANGE, (U8)macp->PwrState, 0, 0); + ZD1211DEBUG(0, "=====CAM --> PSM\n"); + } else if ((macp->SuggestionMode == PS_CAM) && (macp->PwrState == PS_PSM) && + (!dot11Obj.bDeviceInSleep)) + { + down(&macp->bcn_sem); - if (!macp->activeTxQ->count) { - printk(KERN_DEBUG "No element in activeQ\n"); - return; - } + tmpvalue = zd_readl(ZD_BCNInterval); + tmpvalue &= ~POWER_MNT; + zd_writel(tmpvalue, ZD_BCNInterval); + up(&macp->bcn_sem); - /* Look at the TCB at the head of the queue. If it has been completed - * then pop it off and place it at the tail of the completed list. - * Repeat this process until all the completed TCBs have been moved to the - * completed list - */ - while (macp->activeTxQ->count) { - sw_tcb = macp->activeTxQ->first; - - // in USB mode, only run once - if (bRunOnce) - break; - bRunOnce = true; - // check to see if the TCB has been DMA'd - - // Workaround for hardware problem that seems leap over a TCB - // and then fill completion token in the next TCB. - ZD1211DEBUG(2, "zd1211: hw_tcb = %x\n", (u32)sw_tcb->pTcb); - ZD1211DEBUG(2, "zd1211: CbStatus = %x\n", (u16)le32_to_cpu(sw_tcb->pTcb->CbStatus)); - - /* Remove the TCB from the active queue. */ - sw_tcb = zd1205_first_txq(macp, macp->activeTxQ); - ZD1211DEBUG(2, "zd1211: Cnt of activeQ = %x\n", macp->activeTxQ->count); - - aid = sw_tcb->aid; - zd1205_transmit_cleanup(macp, sw_tcb); - macp->txCmpCnt++; - - if (!sw_tcb->LastFrag) - continue; - - zd_EventNotify(EVENT_TX_COMPLETE, ZD_TX_CONFIRM, (U32)sw_tcb->MsgID, (U32)aid); - macp->SequenceNum++; - macp->bDataTrafficLight = 1; - } - zd1211_submit_tx_urb(macp); - ZD1211DEBUG(2, "***** zd1205_tx_isr exit *****\n"); + macp->PwrState = PS_CAM; + zd_EventNotify(EVENT_PS_CHANGE, (U8)macp->PwrState, 0, 0); + ZD1211DEBUG(0, "=====PSM --> CAM\n"); + } - return; + return; } -static void zd1205_config(struct zd1205_private *macp) +//Normally, house keeping routine is run every 100ms. +void zd1205_house_keeping(struct zd1205_private *macp) { - u32 tmpValue; - int i, jj; - - ZENTER(1); - - // Retrieve Feature BitMap - zd_writel(macp->cardSetting.EncryMode, EncryType); - macp->dtimCount = 0; - - /* Setup Physical Address */ - zd_writel(cpu_to_le32(*(u32 *)&macp->macAdr[0]), MACAddr_P1); - zd_writel(cpu_to_le32(*(u32 *)&macp->macAdr[4]), MACAddr_P2); - if (macp->cardSetting.BssType == AP_BSS) { - /* Set bssid = MacAddress */ - macp->BSSID[0] = macp->macAdr[0]; - macp->BSSID[1] = macp->macAdr[1]; - macp->BSSID[2] = macp->macAdr[2]; - macp->BSSID[3] = macp->macAdr[3]; - macp->BSSID[4] = macp->macAdr[4]; - macp->BSSID[5] = macp->macAdr[5]; - zd_writel(cpu_to_le32(*(u32 *)&macp->macAdr[0]), BSSID_P1); - zd_writel(cpu_to_le32(*(u32 *)&macp->macAdr[4]), BSSID_P2); - } else { - zd_writel(STA_RX_FILTER, ZD_Rx_Filter); - } - - macp->intrMask = ZD1205_INT_MASK; - if (macp->intrMask & DTIM_NOTIFY_EN) - macp->dtim_notify_en = 1; - else - macp->dtim_notify_en = 0; - - if (macp->intrMask & CFG_NEXT_BCN_EN) - macp->config_next_bcn_en = 1; - else - macp->config_next_bcn_en = 0; - - zd1205_ClearTupleCache(macp); - zd1205_ArReset(macp); - - macp->bTraceSetPoint = 1; - macp->bFixedRate = 0; - dot11Obj.bDeviceInSleep = 0; - - macp->bGkInstalled = 0; - macp->PwrState = PS_CAM; - - // Get Allowed Channel and Default Channel - dot11Obj.AllowedChannel = zd_readl(ZD_E2P_ALLOWED_CHANNEL); - ZD1211DEBUG(0, "AllowedChannel = %08x\n", (u32)dot11Obj.AllowedChannel); - - if (!(dot11Obj.AllowedChannel & 0xFFFF0000)) { - dot11Obj.AllowedChannel |= 0x10000; - } + static u32 loop = 0; + card_Setting_t *pSetting = &macp->cardSetting; + u8 BssType = pSetting->BssType; + u8 bAssoc = macp->bAssoc; + +#if 0 + + if (dot11Obj.QueueFlag & TX_QUEUE_SET) + { + macp->txQueSetCnt++; + //tasklet_schedule(&macp->zd1205_tx_tasklet); + zd_CleanupTxQ(); + } +#endif + loop++; - tmpValue = zd_readl(E2P_SUBID); - macp->RegionCode = (u16)(tmpValue >> 16); +#ifndef HOST_IF_USB - dot11Obj.RegionCode = macp->RegionCode; - macp->LinkLEDn = LED1; - if (macp->RF_Mode & BIT_4) { - macp->LinkLEDn = LED2; - ZD1211DEBUG(0, "LED2\n"); - } - ZD1211DEBUG(0, "LinkLEDn = %x\n", macp->LinkLEDn); + while (dot11Obj.bDeviceInSleep) + { + // If device is in sleep, do not access device register often to + // prevent host from slowing down. + wait_ms(10); + } +#else + if (dot11Obj.bDeviceInSleep) + return; +#endif - if (macp->RF_Mode & BIT_8) { - dot11Obj.bOverWritePhyRegFromE2P = 1; - ZD1211DEBUG(0, "OverWritePhyRegFromE2P\n"); - } + // Software Antenna Diversity Mechanism + if (macp->bEnableSwAntennaDiv) + { + zd1205_SwAntennaDiv(macp); + } + + // IBSS power-save monitor + if ((BssType == INDEPENDENT_BSS) && (bAssoc)) + { + if ((!dot11Obj.bChScanning) && macp->bPSMSupported) { + if (zd1205_IbssPsCheck(macp)) + return; + } + } + +#if 1 + // Infrasture AP mode beacon generation + if (BssType == AP_BSS) + { + down(&macp->bcn_sem); + zd_EventNotify(EVENT_TBCN, 0, 0, 0); + up(&macp->bcn_sem); + + if (macp->dtimCount == 0) + macp->dtimCount = macp->cardSetting.DtimPeriod; + macp->dtimCount--; + } +#endif - if (macp->RF_Mode & BIT_9) { - dot11Obj.bIsNormalSize = 1; - ZD1211DEBUG(0, "NormalSize\n"); - } - macp->LinkLED_OnDur = 2; - macp->LinkLED_OffDur = 1; - macp->DataLED = 0; - if (macp->RF_Mode & BIT_24) { - macp->LinkLED_OnDur = ((macp->RF_Mode) >> 25) & 0x3; - macp->LinkLED_OffDur = ((macp->RF_Mode) >> 27) & 0x3; - if (macp->RF_Mode & BIT_29) - macp->DataLED = 1; - } - ZD1211DEBUG(1, "LinkLED_OnDur = %d\n", macp->LinkLED_OnDur); - ZD1211DEBUG(1, "LinkLED_OffDur = %d\n", macp->LinkLED_OffDur); + //++ Recovery mechanism for ZD1202 ASIC Phy-Bus arbitration fault. + // We combined tx-power-tracking/Sw Antenna diversity code here to + // reduce the frequence of + // calling ReleaseCtrOfPhyReg. It's harmful to throughput. + + if ((loop % 1) == 0) + { //every 100 ms + //Collect HW Tally + //zd1205_CollectHwTally(macp); //This will make us lose CfgNextBcn interrupt + +#ifdef HOST_IF_USB + + //tmpvalue = zd_readl(0x6e4); + //macp->REG_6e4_Add += tmpvalue; + //printk(KERN_ERR "Detect Strong Signal:%lu\n",jiffies); + zd1211_StrongSignalDect(macp); +#endif - if (!(macp->RF_Mode & BIT_10)) { // The IPC protection: the default is disablesd - macp->IPCFlag = 4; - } + // Infrastructure Power-State momitor - macp->RF_Mode &= 0x0f; - tmpValue = zd_readl(FW_USB_SPEED); - dot11Obj.IsUSB2_0 = (u8) tmpValue; - ZD1211DEBUG(1, "IsUSB2_0 = %d\n", dot11Obj.IsUSB2_0); - // read Set Point from EEPROM - - tmpValue = zd_readl(ZD_E2P_PWR_INT_VALUE1); - tmpValue -= cPWR_INT_VALUE_GUARD; - dot11Obj.IntValue[0] = (u8)tmpValue; - dot11Obj.IntValue[1] = (u8)(tmpValue >> 8); - - dot11Obj.IntValue[2] = (u8)(tmpValue >> 16); - dot11Obj.IntValue[3] = (u8)(tmpValue >> 24); - - tmpValue = zd_readl(ZD_E2P_PWR_INT_VALUE2); - tmpValue -= cPWR_INT_VALUE_GUARD; - dot11Obj.IntValue[4] = (u8)tmpValue; - dot11Obj.IntValue[5] = (u8)(tmpValue >> 8); - dot11Obj.IntValue[6] = (u8)(tmpValue >> 16); - dot11Obj.IntValue[7] = (u8)(tmpValue >> 24); - - tmpValue = zd_readl(ZD_E2P_PWR_INT_VALUE3); - tmpValue -= cPWR_INT_VALUE_GUARD; - dot11Obj.IntValue[8] = (u8)tmpValue; - dot11Obj.IntValue[9] = (u8)(tmpValue >> 8); - dot11Obj.IntValue[10] = (u8)(tmpValue >> 16); - dot11Obj.IntValue[11] = (u8)(tmpValue >> 24); - tmpValue = zd_readl(ZD_E2P_PWR_INT_VALUE4); - tmpValue -= cPWR_INT_VALUE_GUARD; - dot11Obj.IntValue[12] = (u8)tmpValue; - dot11Obj.IntValue[13] = (u8)(tmpValue >> 8); + if ((!dot11Obj.bChScanning) && (BssType == INFRASTRUCTURE_BSS) && (bAssoc) && (macp->bPSMSupported)) { + zd1205_InfraPsCheck(macp); + } + } + +#ifdef HOST_IF_USB + #ifndef ZD1211B + zd1211_TxCalibration(macp); +#endif -#if fTX_PWR_CTRL - for (jj = 0; jj < 3; jj ++) { - for (i = 0; i < 4; i++) { - tmpValue = zd_readl(E2P_36M_CAL_VALUE + jj*0x20 + i*4); - macp->SetPointOFDM[jj][i*4] = (u8) tmpValue; - macp->SetPointOFDM[jj][i*4+1] = (u8) (tmpValue >> 8); - if (i != 3) { - macp->SetPointOFDM[jj][i*4+2] = (u8) (tmpValue >> 16); - macp->SetPointOFDM[jj][i*4+3] = (u8) (tmpValue >> 24); - } - } - } + zd1211_CheckWithIPC(macp); #endif - // read Set Point from EEPROM - tmpValue = zd_readl(ZD_E2P_PWR_CAL_VALUE1); - macp->EepSetPoint[0] = (u8)tmpValue; - macp->EepSetPoint[1] = (u8)(tmpValue >> 8); - macp->EepSetPoint[2] = (u8)(tmpValue >> 16); - macp->EepSetPoint[3] = (u8)(tmpValue >> 24); - tmpValue = zd_readl(ZD_E2P_PWR_CAL_VALUE2); - macp->EepSetPoint[4] = (u8)tmpValue; - macp->EepSetPoint[5] = (u8)(tmpValue >> 8); - macp->EepSetPoint[6] = (u8)(tmpValue >> 16); - macp->EepSetPoint[7] = (u8)(tmpValue >> 24); - tmpValue = zd_readl(ZD_E2P_PWR_CAL_VALUE3); - macp->EepSetPoint[8] = (u8)tmpValue; - macp->EepSetPoint[9] = (u8)(tmpValue >> 8); - macp->EepSetPoint[10] = (u8)(tmpValue >> 16); - macp->EepSetPoint[11] = (u8)(tmpValue >> 24); - - tmpValue = zd_readl(ZD_E2P_PWR_CAL_VALUE4); - macp->EepSetPoint[12] = (u8)tmpValue; - macp->EepSetPoint[13] = (u8)(tmpValue >> 8); - - HW_SetRfChannel(&dot11Obj, (dot11Obj.AllowedChannel >> 16), 0); - macp->bEnableSwAntennaDiv = 0; - macp->Ant_MonitorDur1 = 10;//100; - macp->Ant_MonitorDur2 = 1; - macp->NiceSQThr = 48; - macp->rxOffset = 0; - macp->bPSMSupported = 0; - macp->NormalBackoff = 0x7f047f; - macp->UrgentBackoff = 0x7f0407; - macp->LooseBackoff = 0x7f107f; - macp->WorseSQThr = 0x48; - macp->MulticastAddr[0] = 0; - macp->iv16 = 0; - macp->iv32 = 0; - macp->EnableTxPwrCtrl = 1; - macp->PSThreshhold = 10000; - macp->FlashType = 0xFF; - macp->PHYTestIndex = 5; - macp->PHYTestRssiBound = 0x3a; - macp->PHYTestTimer = 30; - macp->TrafficBound = 200; - - macp->PHYLowPower = 3; // Tx/Rx enable - dot11Obj.CR122Flag = 2; // initial value - dot11Obj.CR31Flag = 2; // initial value - dot11Obj.CR203Flag = 2; // initial value - dot11Obj.PhyTest = 4; - macp->AdapterMaxRate = 0x0B; // initail max rate = 54M - ZEXIT(0); } -int zd1205_dis_connect(struct zd1205_private *macp) +void HKeepingCB(struct net_device *dev) { - u32 tmpvalue; - - ZD1211DEBUG(0, "zd1205_dis_connect\n"); - - netif_stop_queue(macp->device); - - // Note: The following sequence is important, do not change it arbitrarily. - macp->bAssoc = 0; - macp->PwrState = PS_CAM; - - // PwrMgt = 0 - down(&macp->bcn_sem); - tmpvalue = zd_readl(ZD_BCNInterval); - tmpvalue &= ~POWER_MNT; - zd_writel(tmpvalue, ZD_BCNInterval); - up(&macp->bcn_sem); - - if (dot11Obj.bDeviceInSleep) { - ZD1211DEBUG(1, "Device in sleep mode\n"); - return 1; - } + struct zd1205_private *macp = dev->priv; - // Notice PS_Change - zd_EventNotify(EVENT_PS_CHANGE, (u8)macp->PwrState, 0, 0); +#ifdef HOST_IF_USB - // IBSS = 0, i.e, stop sending beacon. - down(&macp->bcn_sem); - tmpvalue = zd_readl(ZD_BCNInterval); - tmpvalue &= ~IBSS_MODE; - zd_writel(tmpvalue, ZD_BCNInterval); - up(&macp->bcn_sem); + defer_kevent(macp, KEVENT_HOUSE_KEEPING); + mod_timer(&(macp->tm_hking_id), jiffies+ (1*HZ)/10); +#else - // We may need issue disassociate frame. - // Issue notification + zd1205_house_keeping(macp); + mod_timer(&(macp->tm_hking_id), jiffies+ (1*HZ)/10); +#endif - return 0; } -void zd1205_config_wep_keys(struct zd1205_private *macp) +void zd1205_CollectBssInfo(struct zd1205_private *macp, plcp_wla_Header_t *pWlanHdr, u8 *pMacBody, u32 bodyLen) { - card_Setting_t *pSetting = &macp->cardSetting; - u8 encryMode = pSetting->EncryMode; - u8 i, j; - u8 DynKeyMode = pSetting->DynKeyMode; - u8 keyLength; - if ((encryMode == 0) || (DynKeyMode != 0)) { - HW_CAM_Write(&dot11Obj, DEFAULT_ENCRY_TYPE, NO_WEP); - return; - } + u8 bssidmatched = 0; + u8 i, j; + u8 *pBssid; + u8 *pByte; + u32 currPos = 0; + u8 elemId, elemLen; + + if ((*(pMacBody+CAP_OFFSET)) & BIT_1) //IBSS + pBssid = pWlanHdr->Address3; + else + pBssid = pWlanHdr->Address2; + + for (i=0; ibss_index; i++) + { + for (j=0; j<6; j++) { + if (macp->BSSInfo[i].bssid[j] != pBssid[j]) { + break; + } + } + + if (j==6) { + bssidmatched = 1; + break; + } + } + + if (bssidmatched) + return; + + //get bssid + for (i=0; i<6; i++) + { + macp->BSSInfo[macp->bss_index].bssid[i] = pBssid[i]; + } + + + //get beacon interval + pByte = pMacBody+BCN_INTERVAL_OFFSET; + macp->BSSInfo[macp->bss_index].beaconInterval = ((*pByte) + ((u16)(*(pByte+1))<<8)); + + //get capability + pByte = pMacBody+CAP_OFFSET; + macp->BSSInfo[macp->bss_index].cap = ((*pByte) + ((u16)(*(pByte+1))<<8) ); + + //get element + pByte = pMacBody+SSID_OFFSET; + currPos = SSID_OFFSET; + + while(currPos < bodyLen) + { + elemId = *pByte; + elemLen = *(pByte+1); + + switch(elemId) { + case ELEID_SSID: //ssid + for (i=0; iBSSInfo[macp->bss_index].ssid[i] = *pByte; + pByte++; + } + break; + + case ELEID_SUPRATES: //supported rateS + + for (i=0; iBSSInfo[macp->bss_index].supRates[i] = *pByte; + pByte++; + } + break; + + + case ELEID_DSPARMS: //ds parameter + macp->BSSInfo[macp->bss_index].channel = *(pByte+2); + pByte += (elemLen+2); + break; + + case ELEID_EXT_RATES: + + pByte += (elemLen+2); + break; + + default: + + pByte += (elemLen+2); + break; + } + + currPos += elemLen+2; + } + + macp->BSSInfo[macp->bss_index].signalStrength = macp->rxSignalStrength; + macp->BSSInfo[macp->bss_index].signalQuality = macp->rxSignalQuality; + + if (macp->bss_index < (BSS_INFO_NUM-1)) + { + macp->bss_index ++; + } - if (pSetting->OperationMode != CAM_AP_VAP) { - HW_CAM_ResetRollTbl(&dot11Obj); //force CAM to use default encry type - switch(encryMode) { - case WEP64: - ZD1211DEBUG(0, "WEP64 Mode\n"); - keyLength = 5; - break; - - case WEP128: - ZD1211DEBUG(0, "WEP128 Mode\n"); - keyLength = 13; - break; - - case WEP256: - ZD1211DEBUG(0, "WEP256 Mode\n"); - keyLength = 29; - break; - - default: - ZD1211DEBUG(0, "Not supported Mode\n"); - ZD1211DEBUG(0, "encryMode = %d\n", encryMode); - return; - } - - HW_CAM_Write(&dot11Obj, DEFAULT_ENCRY_TYPE, encryMode); - - for (i=0, j=0; i<4; i++, j+=8) { //one key occupy 32 bytes space - HW_ConfigStatKey(&dot11Obj, &pSetting->keyVector[i][0], keyLength, STA_KEY_START_ADDR+j); - } - } - return; + return; } -static int zd1205_validate_frame (struct zd1205_private *macp,zd1205_RFD_t *rfd) +void zd1205_dump_rfds(struct zd1205_private *macp) { - plcp_wla_Header_t *wla_hdr; - u32 min_length; - u32 frame_len; - u32 len, len1; - u8 bOfdmFrm = 0; - u8 PlcpRate; - u8 FrameEndInd; - - // Extension Info - /*********************************************************************/ - /* Signal Quality | Signal Strength | Signal Quality2 | Noise Report */ - /*********************************************************************/ - - /*****************************************************/ - /* DA Index | SA Index | Rx Decrypt Type | Rx Status */ - /*****************************************************/ - - // Accept Data/Management frame only. - wla_hdr = (plcp_wla_Header_t *)&rfd->RxBuffer[macp->rxOffset]; - frame_len = (le32_to_cpu(rfd->ActualCount) & 0x3fff); - - frame_len -= macp->rxOffset; - len1 = frame_len + macp->rxOffset; - len = frame_len + macp->rxOffset - EXTRA_INFO_LEN; - PlcpRate = wla_hdr->PlcpHdr[0]; - - if (frame_len == 0) { - macp->ErrZeroLenFrmCnt++; - return false; - } + struct rx_list_elem *rx_struct = NULL; + struct list_head *entry_ptr = NULL; + zd1205_RFD_t *rfd = 0; + struct sk_buff *skb; + + int i = 0; + + list_for_each(entry_ptr, &(macp->active_rx_list)) + { + + rx_struct = list_entry(entry_ptr, struct rx_list_elem, list_elem); + if (!rx_struct) + return; +#ifndef HOST_IF_USB - //pSwRfd->pRfd->RxBuffer[frameLen+rxOffset-1] - //bit7: error frame - //bit6: crc16 error - //bit5: address not match - //bit4: crc32 error - //bit3: decrypt error - //bit2: overrun - //bit1: Rx Timeout - //bit0: OFDM modulation - - macp->rxDecryType = rfd->RxBuffer[len1-2]; - FrameEndInd = rfd->RxBuffer[len1-1]; - if (FrameEndInd & BIT_7) { - macp->ErrToHostFrmCnt++; - return FALSE; - } - - if (bWepBit(wla_hdr)) { - //if (macp->cardSetting.EncryMode == ENCRY_TKIP) - // min_length = 48; - //else - min_length = 44; - if (frame_len < min_length) { - //printk(KERN_DEBUG "frame_len = %x\n", frame_len); - macp->ErrShortFrmCnt++; - return false; - } - } else { - // Minimum Length = PLCP(5)+MACHeader(24)+EXTINFO(5)+CRC(4) + pci_dma_sync_single(macp->pdev, rx_struct->dma_addr, + macp->rfd_size, PCI_DMA_FROMDEVICE); +#endif - if (frame_len < 36) { - //printk(KERN_DEBUG "frame_len = %x\n", frame_len); - macp->ErrShortFrmCnt++; - return false; - } - } + skb = rx_struct->skb; + rfd = RFD_POINTER(skb, macp); /* locate RFD within skb */ +#if 0 + + printk(KERN_DEBUG "zd1205: i = %x\n", i); + printk(KERN_DEBUG "zd1205: rx_struct = %x\n", (u32)rx_struct); + + printk(KERN_DEBUG "zd1205: rx_struct->dma_addr = %x\n", (u32)rx_struct->dma_addr); + printk(KERN_DEBUG "zd1205: rx_struct->skb = %x\n", (u32)rx_struct->skb); + printk(KERN_DEBUG "zd1205: rfd = %x\n", (u32)rfd); + printk(KERN_DEBUG "zd1205: CbStatus = %x\n", le32_to_cpu(rfd->CbStatus)); + + printk(KERN_DEBUG "zd1205: CbCommand = %x\n", le32_to_cpu(rfd->CbCommand)); + printk(KERN_DEBUG "zd1205: NextCbPhyAddrLowPart = %x\n", le32_to_cpu(rfd->NextCbPhyAddrLowPart)); + printk(KERN_DEBUG "zd1205: NextCbPhyAddrHighPart = %x\n", le32_to_cpu(rfd->NextCbPhyAddrHighPart)); +#endif - // Check if frame_len > MAX_WLAN_SIZE. - if (frame_len > ZD_MAX_WLAN_SIZE) { - // Do not worry about the corruption of HwRfd. - // If the frame_len > 2410, the Rx-Bus-Master skip the bytes that exceed - // 2410 to protect the structure of HwRfd. - // However, the Rx-Bus-Master still reports this frame to host if the frame - // is recognized as good by the FA(Frame Analyzer). - macp->ErrLongFrmCnt++; - return false; - } + zd1205_dump_data("rfd", (u8 *)rfd, 24); + i++; - // Check if the SwRfd->frame_len matched the length derived from PLCP. - bOfdmFrm = (FrameEndInd & BIT_0); - if (bOfdmFrm) { - // it's OFDM - macp->rxOFDMDataFrame++; - macp->PHYFreOFDMframe = 1; - switch(PlcpRate & 0xF) { - case 0x0B: //6M - macp->rxInfo.rate = RATE_6M; - break; - - case 0x0F: //9M - macp->rxInfo.rate = RATE_9M; - break; - - case 0x0A: //12M - macp->rxInfo.rate = RATE_12M; - break; - - case 0x0E: //18M - macp->rxInfo.rate = RATE_18M; - break; - - case 0x09: //24M - macp->rxInfo.rate = RATE_24M; - break; - - case 0x0D: //36M - macp->rxInfo.rate = RATE_36M; - break; - - case 0x08: //48M - macp->rxInfo.rate = RATE_48M; - break; - - case 0x0C: //54M - macp->rxInfo.rate = RATE_54M; - break; + } - default: - break; - } - } else { - // it's CCK - macp->rx11bDataFrame++; - // the value from PHY is in scale from Max is 0 and Min is 0xb5 - switch(PlcpRate) { - case 0x0A: - macp->rxInfo.rate = RATE_1M; - break; - - case 0x14: - macp->rxInfo.rate = RATE_2M; - break; - - case 0x37: - macp->rxInfo.rate = RATE_5M; - break; - - case 0x6E: - macp->rxInfo.rate = RATE_11M; - break; +} - default: - break; - } - } +void zd1205_dump_data(char *info, u8 *data, u32 data_len) +{ + int i; + printk(KERN_DEBUG "%s data [%d]: \n", info, data_len); - macp->rxSignalQuality = rfd->RxBuffer[len]; - macp->rxSignalQuality1 = macp->rxSignalQuality; - macp->rxSignalStrength = rfd->RxBuffer[len+1]; - macp->rxSignalQuality2 = rfd->RxBuffer[len+2]; - // macp->rxNoiseReport = rfd->RxBuffer[len+3]; //3d31 - - macp->rxSignalQuality = CalculateQuality(macp, rfd, &macp->rxSignalQualityIndB); - macp->rxSignalStrength = CalculateStrength(macp, rfd); - macp->rxInfo.signalQuality = macp->rxSignalQuality; - macp->rxInfo.signalStrength = macp->rxSignalStrength; + /* ath_desc: fix printks */ + // printk parses KERN_* macros only after newlines + printk(KERN_DEBUG ""); + for (i=0; i0) && ((i+1)%16 == 0)) + printk("\n" KERN_DEBUG); + } - return true; + printk("\n"); } + + /** - * zd1205_alloc_tcb_pool - allocate TCB circular list + * zd1205_get_rx_struct - retrieve cell to hold skb buff from the pool * @macp: atapter's private data struct + * - * This routine allocates memory for the circular list of transmit descriptors. - * - * Returns: - * 0: if allocation has failed. - * 1: Otherwise. + * Returns the new cell to hold sk_buff or %NULL. */ -int zd1205_alloc_tcb_pool(struct zd1205_private *macp) -{ - /* deal with Tx uncached memory */ - /* Allocate memory for the shared transmit resources with enough extra mem - * to paragraph align (4-byte alignment) everything - */ - - macp->txUnCachedSize = (macp->numTcb * - (sizeof(zd1205_HwTCB_t)+ sizeof(zd1205_Ctrl_Set_t)+sizeof(zd1205_Header_t))) - + (macp->numTbd * sizeof(zd1205_TBD_t)); - - macp->txUnCached = kmalloc(macp->txUnCachedSize, GFP_ATOMIC); - if (!macp->txUnCached) { - printk(KERN_ERR "zd1205: kmalloc txCached failed\n"); - return 0; - } - memset(macp->txUnCached, 0x00, macp->txUnCachedSize); - return 1; -} -void zd1205_free_tcb_pool(struct zd1205_private *macp) +static struct rx_list_elem * + zd1205_get_rx_struct(struct zd1205_private *macp) { - if (macp->txUnCached) - kfree(macp->txUnCached); - macp->txUnCachedPhys = 0; -} + struct rx_list_elem *rx_struct = NULL; -static void zd1205_free_rfd_pool(struct zd1205_private *macp) -{ - struct rx_list_elem *rx_struct; + if (!list_empty(&(macp->rx_struct_pool))) + { - while (!list_empty(&(macp->active_rx_list))) { - rx_struct = list_entry(macp->active_rx_list.next,struct rx_list_elem, list_elem); - list_del(&(rx_struct->list_elem)); - dev_kfree_skb(rx_struct->skb); - kfree(rx_struct); - } + rx_struct = list_entry(macp->rx_struct_pool.next, + struct rx_list_elem, list_elem); + list_del(&(rx_struct->list_elem)); + } - while (!list_empty(&(macp->rx_struct_pool))) { - rx_struct = list_entry(macp->rx_struct_pool.next,struct rx_list_elem, list_elem); - list_del(&(rx_struct->list_elem)); - kfree(rx_struct); - } + return rx_struct; } + /** - * zd1205_alloc_rfd_pool - allocate RFDs + * zd1205_alloc_skb - allocate an skb for the adapter * @macp: atapter's private data struct * - * Allocates initial pool of skb which holds both rfd and data, - * and return a pointer to the head of the list + * Allocates skb with enough room for rfd, and data, and reserve non-data space. + * Returns the new cell with sk_buff or %NULL. */ -static int zd1205_alloc_rfd_pool(struct zd1205_private *macp) + +static struct rx_list_elem * + zd1205_alloc_skb(struct zd1205_private *macp) { - struct rx_list_elem *rx_struct; - int i; + struct sk_buff *new_skb; - INIT_LIST_HEAD(&(macp->active_rx_list)); - INIT_LIST_HEAD(&(macp->rx_struct_pool)); - macp->skb_req = macp->numRfd; - - for (i = 0; i < macp->skb_req; i++) { - rx_struct = kmalloc(sizeof (struct rx_list_elem), GFP_ATOMIC); - list_add(&(rx_struct->list_elem), &(macp->rx_struct_pool)); - } + u32 skb_size = sizeof (zd1205_RFD_t); + struct rx_list_elem *rx_struct; - zd1205_alloc_skbs(macp); - return !list_empty(&(macp->active_rx_list)); -} + ZENTER(4); -void zd1205_clear_pools(struct zd1205_private *macp) -{ - zd1205_dealloc_space(macp); - zd1205_free_rfd_pool(macp); - zd1205_free_tcb_pool(macp); -} + new_skb = (struct sk_buff *) dev_alloc_skb(skb_size); + if (new_skb) + { + /* The IP data should be + DWORD aligned. since the ethernet header is 14 bytes long, + we need to reserve 2 extra bytes so that the TCP/IP headers -/** - * zd1205_start_ru - start the RU if needed - * @macp: atapter's private data struct - * - * This routine checks the status of the receive unit(RU), - * and starts the RU if it was not already active. However, - * before restarting the RU, the driver gives the RU the buffers - * it freed up during the servicing of the ISR. If there are - * no free buffers to give to the RU, (i.e. we have reached a - * no resource condition) the RU will not be started till the - * next ISR. - */ -struct rx_list_elem *zd1205_start_ru(struct zd1205_private *macp) -{ - u32 tmp_value; - struct rx_list_elem *rx_struct = NULL; - struct list_head *entry_ptr = NULL; - zd1205_RFD_t *rfd = 0; - int buffer_found = 0; - struct sk_buff *skb; - u32 loopCnt = 0; - - ZENTER(4); - - list_for_each(entry_ptr, &(macp->active_rx_list)) { - rx_struct = list_entry(entry_ptr, struct rx_list_elem, list_elem); - if (!rx_struct) return NULL; - skb = rx_struct->skb; - rfd = RFD_POINTER(skb, macp); /* locate RFD within skb */ - - if (SKB_RFD_STATUS(rx_struct->skb, macp) != __constant_cpu_to_le32(RFD_STATUS_COMPLETE)) { - buffer_found = 1; - break; - } - } + will be DWORD aligned. */ + //skb_reserve(new_skb, 2); //for zd1202, rx dma must be 4-bytes aligmnebt + if ((rx_struct = zd1205_get_rx_struct(macp)) == NULL) + goto err; - /* No available buffers */ - if (!buffer_found) { - printk(KERN_ERR "zd1205: No available buffers\n"); - return NULL; - } + /* ath_desc: AMD64 support */ + ZD1211DEBUG(4, "zd1211: rx_struct = %p\n", (void *)rx_struct); - return rx_struct; -} -void zd1205_recycle_rx(struct zd1205_private *macp) -{ - u32 tmp_value; - struct rx_list_elem *rx_struct = NULL; - struct list_head *entry_ptr = NULL; - zd1205_RFD_t *rfd = 0; - int buffer_found = 0; - struct sk_buff *skb; - ZENTER(4); - - list_for_each(entry_ptr, &(macp->active_rx_list)) { - rx_struct = list_entry(entry_ptr, struct rx_list_elem, list_elem); - if (!rx_struct) - return; - - rx_struct->UnFinishFrmLen = 0; - skb = rx_struct->skb; - rfd = RFD_POINTER(skb, macp); /* locate RFD within skb */ - rfd->CbStatus = 0xffffffff; - } -} + rx_struct->skb = new_skb; -void zd1205_CheckBeaconInfo(struct zd1205_private *macp, plcp_wla_Header_t *pWlanHdr, u8 *pMacBody, u32 bodyLen) -{ - u8 *pBssid; - u8 *pByte; - u32 currPos = 0; - u8 elemId, elemLen; - u8 Zd1202Detected = 0; - u8 BitmapCtrl; - u16 N1; - u16 N2; - u16 quotient; - u16 remainder; - u8 BssType = macp->cardSetting.BssType; - u8 erp; - u16 cap; - u8 preamble = 0; - u16 basicRateMap = 0; - u16 supRateMap = 0; - u8 bErpSta = 0; - int i; - u8 tmpMaxRate = 0x02; - u8 rate; - - cap = (*(pMacBody + CAP_OFFSET)) + ((*(pMacBody + CAP_OFFSET +1)) << 8); - - if (cap & BIT_1) - pBssid = pWlanHdr->Address3; - else { - pBssid = pWlanHdr->Address2; - if (BssType == INDEPENDENT_BSS) - return; - } + //Rx DMA address must be 4 bytes alignment +#ifndef HOST_IF_USB - if (cap & BIT_5) - preamble = 1; - else - preamble = 0; - - //get element - pByte = pMacBody + SSID_OFFSET; - - currPos = SSID_OFFSET; - while (currPos < bodyLen) { - elemId = *pByte; - elemLen = *(pByte+1); - - switch (elemId) { - case 0xfe: //ZyDAS Extended Supported Rate (16.5M) - case 0xff: //ZyDAS Extended Supported Rate (27.5M) - Zd1202Detected = 1; - - if (elemLen != 0) { //For possible future compatibility issue, - //we adopt "length = 0", which will not - //disturb others. - } - pByte += (elemLen+2); - break; + rx_struct->dma_addr = pci_map_single(macp->pdev, new_skb->data, sizeof (zd1205_RFD_t), PCI_DMA_FROMDEVICE); - case ELEID_TIM: - if ((BssType == INFRASTRUCTURE_BSS) && (macp->bAssoc)) { - if (elemLen >= 3) { - BitmapCtrl = *(pByte+4); - N1 = (BitmapCtrl & ~BIT_0); - N2 = (elemLen + N1 - 4); - quotient = (dot11Obj.Aid >> 3); - remainder = (dot11Obj.Aid & 0x7); - if ((quotient < N1) || (quotient > N2)) { - macp->bAnyActivity = 0; - } - - if ((*(pByte+5+quotient-N1) >> remainder) & BIT_0) { - zd_EventNotify(EVENT_MORE_DATA, 0, 0, 0); - macp->bAnyActivity = 1; - //ZD1211DEBUG(2, "EVENT_MORE_DATA!\n"); - //zd1205_dump_data("TIM", pByte, elemLen+2); - - //zd1205_dump_data("pMacBody", (u8 *)pMacBody, bodyLen); - } else { - macp->bAnyActivity = 0; - } - - // Multicast frames queued in AP - if (BitmapCtrl & BIT_0) { - ZD1211DEBUG(1, "Got multicast framed queued information!\n"); - macp->bAnyActivity = 1; - } - } - } - pByte += (elemLen+2); - break; +#endif - case ELEID_ERP_INFO: - if (macp->bAssoc) { - erp = *(pByte+2); - - if (erp & USE_PROTECTION_BIT) { - if (!(dot11Obj.ConfigFlag & ENABLE_PROTECTION_SET)) - defer_kevent(macp, KEVENT_EN_PROTECTION); - } else { - if (dot11Obj.ConfigFlag & ENABLE_PROTECTION_SET) - defer_kevent(macp, KEVENT_DIS_PROTECTION); - } - - // check Barker_Preamble_Mode - if (erp & BARKER_PREAMBLE_BIT) { - if (!(dot11Obj.ConfigFlag & BARKER_PREAMBLE_SET)) - defer_kevent(macp, KEVENT_EN_BARKER); - } else { - if (dot11Obj.ConfigFlag & BARKER_PREAMBLE_SET) - defer_kevent(macp, KEVENT_DIS_BARKER); - } - - // check B-STA - if (erp & NON_ERP_PRESENT_BIT) { - if (dot11Obj.ConfigFlag & SHORT_SLOT_TIME_SET) { - defer_kevent(macp, KEVENT_DIS_SHORT_SLOT); - } - } else { - if (!(dot11Obj.ConfigFlag & SHORT_SLOT_TIME_SET)) { - defer_kevent(macp, KEVENT_EN_SHORT_SLOT); - } - } - } + ZD1211DEBUG(4, "zd1211: rx_struct->dma_addr = %p\n", (void *)rx_struct->dma_addr); - pByte += (elemLen+2); - break; +#ifndef HOST_IF_USB - case ELEID_SUPRATES: - if ((BssType == INDEPENDENT_BSS) && (macp->bAssoc)) { - zd_makeRateInfoMAP(pByte, &basicRateMap, &supRateMap); - for (i=0; i tmpMaxRate) - tmpMaxRate = (rate & 0x7f); - } - } - pByte += (elemLen+2); - break; + if (!rx_struct->dma_addr) + goto err; +#endif - case ELEID_EXT_RATES: - if ((BssType == INDEPENDENT_BSS) && (macp->bAssoc)) { - zd_makeRateInfoMAP(pByte, &basicRateMap, &supRateMap); - for (i=0; i tmpMaxRate) - tmpMaxRate = (rate & 0x7f); - } - } - pByte += (elemLen+2); - break; + skb_reserve(new_skb, macp->rfd_size); //now skb->data point to RxBuffer - default: - pByte += (elemLen+2); - break; - } - currPos += (elemLen+2); - } +#ifdef HOST_IF_USB - if (Zd1202Detected) { - macp->BSS_Members |= MEMBER_ZD1202; - } else { - macp->BSS_Members |= MEMBER_OTHERS; - } + rx_struct->dma_addr = (dma_addr_t)new_skb->data; + rx_struct->UnFinishFrmLen = 0; +#endif - if ((BssType == INDEPENDENT_BSS) && (macp->bAssoc)) { - if (supRateMap > 0x0f) { //support rates include OFDM rates - if (basicRateMap & ~0xf) // basic rates include OFDM rates - bErpSta = 1; - else - bErpSta = 1; - } else - bErpSta = 0; - - zd_UpdateIbssInfo(pWlanHdr->Address2, tmpMaxRate, preamble, bErpSta); - if ((macp->cardSetting.MacMode != PURE_B_MODE) && (!bErpSta)) { - if (!(dot11Obj.ConfigFlag & ENABLE_PROTECTION_SET)) { - defer_kevent(macp, KEVENT_EN_PROTECTION); - ZD1211DEBUG(2, "KEVENT_EN_PROTECTION\n"); - } - } - } - macp->Bcn_Acc_Num++; - macp->Bcn_Acc_SQ += macp->rxInfo.signalQuality; - return; + ZEXIT(4); + return rx_struct; + } else + { + macp->AllocSkbFailCnt++; + printk(KERN_DEBUG "zd1205: dev_alloc_skb fail\n"); + return NULL; + } + +err: + printk(KERN_DEBUG "zd1205: ****** err\n"); + dev_kfree_skb_irq(new_skb); + + return NULL; } -#define ETH_P_80211_RAW (ETH_P_ECONET + 1) /** - * zd1205_rx_isr - service RX queue + * zd1205_add_skb_to_end - add an skb to the end of our rfd list + * @macp: atapter's private data struct - * @max_number_of_rfds: max number of RFDs to process - * @rx_congestion: flag pointer, to inform the calling function of congestion. + * @rx_struct: rx_list_elem with the new skb * - * This routine processes the RX interrupt & services the RX queues. - * For each successful RFD, it allocates a new msg block, links that - * into the RFD list, and sends the old msg upstream. - * The new RFD is then put at the end of the free list of RFD's. - * It returns the number of serviced RFDs. + * Adds a newly allocated skb to the end of our rfd list. */ -u32 zd1205_rx_isr(struct zd1205_private *macp) -{ - zd1205_RFD_t *rfd; /* new rfd, received rfd */ - int i; - u32 rfd_status; - struct sk_buff *skb; - struct net_device *dev; - u32 data_sz; - struct rx_list_elem *rx_struct; - u32 rfd_cnt = 0; - plcp_wla_Header_t *wla_hdr; - u8 *pHdr; - u8 *pIv; - u8 *pBody = NULL; - u32 bodyLen = 0; - u32 hdrLen = WLAN_HEADER; - u16 seq = 0; - u8 frag = 0; - u8 *pTa = NULL; - defrag_Array_t *pDefArray = &macp->defragArray; - u8 EthHdr[12]; - card_Setting_t *pSetting = &macp->cardSetting; - u8 bDataFrm = 0; - u8 BaseFrmType = 0; - int SaIndex = 0; - u8 BssType = pSetting->BssType; - //u8 bSwCheckMIC = 1; - u8 rxDecryType = 0; - - int rx_cnt; - struct rx_list_elem **rx_struct_array = macp->rx_struct_array; - int total_rx_cnt = macp->total_rx_cnt; - ZENTER(4); - - dev = macp->device; - /* current design of rx is as following: - * 1. socket buffer (skb) used to pass network packet to upper layer - * 2. all HW host memory structures (like RFDs, RBDs and data buffers) - * are placed in a skb's data room - * 3. when rx process is complete, we change skb internal pointers to exclude - * from data area all unrelated things (RFD, RDB) and to leave - * just rx'ed packet netto - * 4. for each skb passed to upper layer, new one is allocated instead. - * 5. if no skb left, in 2 sec another atempt to allocate skbs will be made - * (watchdog trigger SWI intr and isr should allocate new skbs) - */ - - for (rx_cnt=0; rx_cntskb; - rfd = RFD_POINTER(skb, macp); - rfd_status = SKB_RFD_STATUS(rx_struct->skb, macp); - if (rfd_status != __constant_cpu_to_le32(RFD_STATUS_COMPLETE)) /* does not contains data yet - exit */ - break; - macp->DriverRxFrmCnt ++; - data_sz = (u16)(le32_to_cpu(rfd->ActualCount) & 0x3fff); - data_sz -= macp->rxOffset; - ZD1211DEBUG(4, "zd1211: data_sz = %x\n", data_sz); - wla_hdr = (plcp_wla_Header_t *)&rfd->RxBuffer[macp->rxOffset]; - pHdr = (u8 *)wla_hdr + PLCP_HEADER; - - if (SubFrameType(wla_hdr) != BEACON) { - macp->bFrmRxed1 = 1; - } - if (!macp->sniffer_on) { - BaseFrmType = BaseFrameType(wla_hdr); - if ((BaseFrmType == DATA) || (BaseFrmType == MANAGEMENT)) { //Data or Management Frames - /* do not free & unmap badly recieved packet. - * move it to the end of skb list for reuse - */ - if (zd1205_validate_frame(macp, rfd) == false) { - ZD1211DEBUG(4, "zd1211: invalid frame\n"); - macp->invalid_frame_good_crc ++; - zd1205_add_skb_to_end(macp, rx_struct); - continue; - } - seq = getSeq(wla_hdr); - frag = getFrag(wla_hdr); - pTa = getTA(wla_hdr); - - if (!bGroup(wla_hdr)) { //unicast - if (memcmp(&wla_hdr->Address1[0], &macp->macAdr[0], 6) != 0) { - zd1205_add_skb_to_end(macp, rx_struct); - continue; - } else { //check dupicated frame - //if (BaseFrmType == DATA) - //zd1205_dump_data("RxBuffer", (u8 *)rfd->RxBuffer, data_sz); - if ((bRetryBit(wla_hdr)) && - (zd1205_SearchTupleCache(macp, pTa, seq, frag))) { //dupicated - zd1205_UpdateTupleCache(macp, pTa, seq, frag); - zd1205_add_skb_to_end(macp, rx_struct); - macp->rxDupCnt ++; - continue; - } - zd1205_UpdateTupleCache(macp, pTa, seq, frag); - } - } else { //group address - // check if the address1 of the multicast frame is in the multicast list - if (wla_hdr->Address1[0] != 0xff) { - int tmpvalue = -1; - //zd1205_dump_data("address1", (u8 *)wla_hdr->Address1, 6); - - for(i=0; iMulticastAddr[0]; i++) { - tmpvalue = memcmp(&macp->MulticastAddr[6*i+1], wla_hdr->Address1, 6); - if (tmpvalue == 0) - break; - } - - if (tmpvalue != 0) { - zd1205_add_skb_to_end(macp, rx_struct); - ZD1211DEBUG(1, " - address1 is not in the multicast list\n"); - continue; - } - } - - if (BaseFrameType(wla_hdr) == DATA) { - if (BssType == INFRASTRUCTURE_BSS) { - if (memcmp(&macp->BSSID[0], &wla_hdr->Address2[0], 6) != 0) { - //BSSID filter - zd1205_add_skb_to_end(macp, rx_struct); - continue; - } - } else if ((BssType == INDEPENDENT_BSS) || (BssType == PSEUDO_IBSS)) { - if (memcmp(&macp->BSSID[0], &wla_hdr->Address3[0], 6) != 0) { - //BSSID filter - zd1205_add_skb_to_end(macp, rx_struct); - continue; - } - } else { - zd1205_add_skb_to_end(macp, rx_struct); - continue; - } - } else { - ;//ZD1211DEBUG(3, "Group Mgt Frame\n"); - } - } - - hdrLen = WLAN_HEADER; - pBody = (u8 *)pHdr + WLAN_HEADER; - bodyLen = data_sz - PLCP_HEADER - WLAN_HEADER - EXTRA_INFO_LEN - CRC32_LEN; - - //frame with WEP - if (bWepBit(wla_hdr)) { - u16 RxIv16 = 0; - u32 RxIv32 = 0; - ZD1211DEBUG(4, "zd1205: wep frame\n"); - - pIv = pHdr + hdrLen; - pBody += IV_SIZE; - bodyLen = bodyLen - IV_SIZE - ICV_SIZE; - hdrLen += IV_SIZE; - rxDecryType = (macp->rxDecryType & 0x0f); - switch (rxDecryType) { - case WEP64: - case WEP128: - case WEP256: - break; - case TKIP: - bodyLen -= EXTEND_IV_LEN; - pBody += EXTEND_IV_LEN; - hdrLen += EXTEND_IV_LEN; - RxIv16 = ((u16)pIv[0] << 8) + pIv[2]; - RxIv32 = pIv[4] + ((u32)pIv[5] << 8) + - ((u32)pIv[6] << 16) + ((u32)pIv[7] << 24); - - // check iv sequence - break; - - case AES: - ZD1211DEBUG(0, "Got AES frame !!!\n"); - bodyLen -= (EXTEND_IV_LEN + MIC_LENGTH); - pBody += EXTEND_IV_LEN; - hdrLen += EXTEND_IV_LEN; - break; - - default: - break; - } - }//end of wep bit - - if (BssType == AP_BSS) { - memcpy(EthHdr, &wla_hdr->Address3[0], 6); // copy DA - memcpy(&EthHdr[6], &wla_hdr->Address2[0], 6); // copy SA - } else if (BssType == INFRASTRUCTURE_BSS) { - memcpy(EthHdr, &wla_hdr->Address1[0], 6); // copy DA - memcpy(&EthHdr[6], &wla_hdr->Address3[0], 6); // copy SA - } else if ((BssType == INDEPENDENT_BSS) || (BssType == PSEUDO_IBSS)) { - memcpy(EthHdr, &wla_hdr->Address1[0], 6); // copy DA - memcpy(&EthHdr[6], &wla_hdr->Address2[0], 6); // copy SA - } - - if ((BaseFrmType == DATA)) { - bDataFrm = 1; - if (isWDS(wla_hdr)) { - //ZD1211DEBUG(3, "***** WDS or group\n"); - zd1205_add_skb_to_end(macp, rx_struct); - continue; - } - - if (frag == 0) { //No fragment or first fragment - if (!bMoreFrag(wla_hdr)) { //No more fragment - //ZD1211DEBUG(2, "***** No Frag\n"); - goto defrag_ind; - } else { //First fragment - DFDEBUG("***** First Frag"); - macp->rxNeedFragCnt++; - i = zd1205_ArFree(macp); //Get a free one - - if (i < 0) { - zd1205_ArAge(macp, nowT()); - i = zd1205_ArFree(macp); - if (i < 0) { - DFDEBUG("***** ArFree fail"); - macp->DropFirstFragCnt++; - zd1205_add_skb_to_end(macp, rx_struct); - continue; - } - } - - zd1205_ArUpdate(macp, pTa, seq, frag, i); - pDefArray->mpdu[i].dataStart = pBody; - skb->len = bodyLen; - pDefArray->mpdu[i].buf = (void *)skb; //save skb - list_add(&(rx_struct->list_elem), &(macp->rx_struct_pool)); - macp->skb_req++; /* incr number of requested skbs */ - tasklet_schedule(&macp->rx_buff_tasklet); - rfd_cnt++; - zd1205_ArAge(macp, nowT()); - continue; - } - //end of farg == 0 - } else { //more frag - struct sk_buff *defrag_skb; - u8 *pStart; - - i = zd1205_ArSearch(macp, pTa, seq, frag); //Get exist one - if (i < 0) { - DFDEBUG("***** ArSearch fail"); - macp->ArSearchFailCnt++; - zd1205_ArAge(macp, nowT()); - zd1205_add_skb_to_end(macp, rx_struct); //discard this one - continue; - } - defrag_skb = (struct sk_buff *)pDefArray->mpdu[i].buf; - pStart = (u8 *)pDefArray->mpdu[i].dataStart; - pDefArray->mpdu[i].fn = frag; - memcpy((pStart+defrag_skb->len), pBody, bodyLen); //copy to reassamble buffer - defrag_skb->len += bodyLen; - - if (!bMoreFrag(wla_hdr)) { //Last fragment - DFDEBUG("***** Last Frag"); - zd1205_add_skb_to_end(macp, rx_struct); - - pDefArray->mpdu[i].inUse = 0; - skb = defrag_skb; - skb->data = (u8 *)pDefArray->mpdu[i].dataStart; //point mac body - pBody = skb->data; - bodyLen = skb->len; - macp->rxCompFragCnt++; - //goto defrag_ind; //bug - goto defrag_comp; - } else { - DFDEBUG("***** More Frag"); - zd1205_ArAge(macp, nowT()); - zd1205_add_skb_to_end(macp, rx_struct); - continue; - } - } - //end of data frame - } else if (BaseFrameType(wla_hdr) == MANAGEMENT) { - if (SubFrameType(wla_hdr) == BEACON) { - if (BssType == AP_BSS) { - if (dot11Obj.ConfigFlag & PASSIVE_CHANNEL_SCAN_SET) { - zd1205_CollectBssInfo(macp, wla_hdr, pBody, bodyLen); - } -#if defined(OFDM) - if (pSetting->MacMode != PURE_B_MODE) { - if (!dot11Obj.ConfigFlag & ENABLE_PROTECTION_SET) { - if (zd1205_CheckOverlapBss(macp, wla_hdr, pBody, bodyLen)) { - // ebable protection mode - defer_kevent(macp, KEVENT_EN_PROTECTION); - } - } - } -#endif - zd1205_add_skb_to_end(macp, rx_struct); - continue; - } else { //STA mode - if (dot11Obj.ConfigFlag & ACTIVE_CHANNEL_SCAN_SET) //path through - goto defrag_ind; - else { - if (memcmp(&macp->BSSID[0], &wla_hdr->Address3[0], 6) == 0) { //BSSID filter - macp->bcnCnt++; - zd1205_CheckBeaconInfo(macp, wla_hdr, pBody, bodyLen); - macp->bAPAlive = 1; - } - //discard Beacon - zd1205_add_skb_to_end(macp, rx_struct); /* discard Beacon frames */ - continue; - } - } - } else{ - if (bGroup(wla_hdr)) { - if ((BssType != AP_BSS) || (BssType != INDEPENDENT_BSS)) { - zd1205_add_skb_to_end(macp, rx_struct); - continue; - } - } - } - goto defrag_ind; - } //end of management frame - } else if (SubFrameType(wla_hdr) == PS_POLL) { - if (memcmp(&wla_hdr->Address1[0], &macp->macAdr[0], 6) == 0) //Ps-Poll for me - zd_CmdProcess(CMD_PS_POLL, (void *)pHdr, 0); - zd1205_add_skb_to_end(macp, rx_struct); - continue; - } else { - zd1205_add_skb_to_end(macp, rx_struct); - continue; - } - } //end of sniffer_on -defrag_ind: - macp->rxCnt++; - list_add(&(rx_struct->list_elem), &(macp->rx_struct_pool)); +void +zd1205_add_skb_to_end(struct zd1205_private *macp, struct rx_list_elem *rx_struct) +{ + zd1205_RFD_t *rfdn; /* The new rfd */ - /* end of dma access to rfd */ - macp->skb_req++; /* incr number of requested skbs */ - tasklet_schedule(&macp->rx_buff_tasklet); + zd1205_RFD_t *rfd; /* The old rfd */ + struct rx_list_elem *rx_struct_last; -defrag_comp: - rfd_cnt++; - if (!macp->sniffer_on) { - if (BaseFrmType == DATA) - macp->TotalRxDataFrmBytes += (hdrLen+bodyLen); - macp->rxInfo.bDataFrm = BaseFrmType; - macp->rxInfo.SaIndex = SaIndex; - //macp->rxInfo.bSwCheckMIC = bSwCheckMIC; - - if ((BssType == INFRASTRUCTURE_BSS) && (macp->bAssoc)) { - if (memcmp(&macp->BSSID[0], &wla_hdr->Address2[0], 6) == 0) { - macp->bAPAlive = 1; - if ((macp->bPSMSupported) && (macp->PwrState) && (!dot11Obj.bDeviceInSleep)) { - if (bMoreData(wla_hdr)) { - // More date in AP - zd_EventNotify(EVENT_MORE_DATA, 0, 0, 0); - } - } - } - } - zd_ReceivePkt(pHdr, hdrLen, pBody, bodyLen, (void *)skb, EthHdr, &macp->rxInfo); - macp->bDataTrafficLight = 1; - } else { - skb->tail = skb->data = pHdr; - skb_put(skb, data_sz - PLCP_HEADER); - skb->mac.raw = skb->data; - skb->pkt_type = PACKET_OTHERHOST; - skb->protocol = htons(ETH_P_802_2); - skb->dev = dev; - skb->ip_summed = CHECKSUM_NONE; - netif_rx(skb); - } - }/* end of rfd loop */ + ZENTER(4); - ZEXIT(4); - return rfd_cnt; -} + (rx_struct->skb)->dev = macp->device; + rfdn = RFD_POINTER(rx_struct->skb, macp); -int zd1205_open(struct net_device *dev) -{ - struct zd1205_private *macp = dev->priv; - int rc = 0; + rfdn->CbCommand = __constant_cpu_to_le32(RFD_EL_BIT); + wmb(); + rfdn->CbStatus = 0xffffffff; - ZENTER(0); + rfdn->ActualCount = 0; + rfdn->MaxSize = __constant_cpu_to_le32(MAX_WLAN_SIZE); - //read_lock(&(macp->isolate_lock)); - if (macp->driver_isolated) { - rc = -EBUSY; - goto exit; - } +#ifndef __LP64__ + rfdn->NextCbPhyAddrHighPart = 0; - macp->bUSBDeveiceAttached = 1; + rfdn->NextCbPhyAddrLowPart = 0; - if ((rc = zd1205_alloc_space(macp)) != 0) { - rc = -ENOMEM; - goto exit; - } +#else + rfdn->NextCbPhyAddr = 0; +#endif - /* setup the tcb pool */ - if (!zd1205_alloc_tcb_pool(macp)) { - printk(KERN_ERR "zd1205: failed to zd1205_alloc_tcb_pool\n"); - rc = -ENOMEM; - goto err_exit; - } +#ifndef HOST_IF_USB - zd1205_setup_tcb_pool(macp); + wmb(); - if (!zd1205_alloc_rfd_pool(macp)) { - printk(KERN_ERR "zd1205: failed to zd1205_alloc_rfd_pool\n"); - rc = -ENOMEM; - goto err_exit; - } + pci_dma_sync_single(macp->pdev, rx_struct->dma_addr, macp->rfd_size, + PCI_DMA_TODEVICE); +#endif - mod_timer(&(macp->watchdog_timer), jiffies + (1*HZ)); //1 sec - mod_timer(&(macp->tm_hking_id), jiffies + (1*HZ)/10); //100 ms - mod_timer(&(macp->tm_mgt_id), jiffies + (1*HZ)/50); //20 ms - - if (macp->cardSetting.BssType == AP_BSS) { - netif_start_queue(dev); - zd_writel(0x1, LED1); - } + if (!list_empty(&(macp->active_rx_list))) + { + rx_struct_last = list_entry(macp->active_rx_list.prev, - zd_UpdateCardSetting(&macp->cardSetting); - zd_CmdProcess(CMD_ENABLE, &dot11Obj, 0); //AP start send beacon , STA start scan - zd1205_enable_int(); + struct rx_list_elem, list_elem); - if (zd1211_submit_rx_urb(macp)) - goto err_exit; - set_bit(ZD1211_RUNNING, &macp->flags); - goto exit; + rfd = RFD_POINTER(rx_struct_last->skb, macp); + ZD1211DEBUG(4, "zd1211: rfd = %p\n", (unsigned long *)rfd); -err_exit: - zd1205_clear_pools(macp); +#ifndef HOST_IF_USB -exit: - //read_unlock(&(macp->isolate_lock)); - ZEXIT(0); + pci_dma_sync_single(macp->pdev, rx_struct_last->dma_addr, - return rc; + 4, PCI_DMA_FROMDEVICE); +#endif + +#ifndef __LP64__ + put_unaligned(cpu_to_le32(rx_struct->dma_addr), + ((u32 *) (&(rfd->NextCbPhyAddrLowPart)))); +#else + put_unaligned(cpu_to_le64(rx_struct->dma_addr),&(rfd->NextCbPhyAddr)); +#endif +#ifndef HOST_IF_USB + + wmb(); + pci_dma_sync_single(macp->pdev, rx_struct_last->dma_addr, + 8, PCI_DMA_TODEVICE); + +#endif + + rfd->CbCommand = 0; + + +#ifndef HOST_IF_USB + + wmb(); + pci_dma_sync_single(macp->pdev, rx_struct_last->dma_addr, + 4, PCI_DMA_TODEVICE); + +#endif + + } + + list_add_tail(&(rx_struct->list_elem), &(macp->active_rx_list)); //add elem to active_rx_list + ZEXIT(4); +} + + +void zd1205_alloc_skbs(struct zd1205_private *macp) +{ + for (; macp->skb_req > 0; macp->skb_req--) + { + struct rx_list_elem *rx_struct; + + if ((rx_struct = zd1205_alloc_skb(macp)) == NULL) { + printk(KERN_DEBUG "zd1205: zd1205_alloc_skb fail\n"); + return; + + } + zd1205_add_skb_to_end(macp, rx_struct); + } + +} + + +void zd1205_transmit_cleanup(struct zd1205_private *macp, zd1205_SwTcb_t *sw_tcb) +{ + zd1205_HwTCB_t *hw_tcb; + u32 tbd_cnt; + zd1205_TBD_t *tbd_arr = sw_tcb->pFirstTbd; + + ZENTER(2); + + hw_tcb = sw_tcb->pTcb; + tbd_cnt = le32_to_cpu(hw_tcb->TxCbTbdNumber); + tbd_arr += 2; //CtrlSetting and MacHeader + + ZD1211DEBUG(2, "zd1211: umap tbd cnt = %x\n", tbd_cnt-2); + +#ifndef HOST_IF_USB + + for (i=0; iTbdBufferAddrLowPart)); + pci_unmap_single(macp->pdev, + le32_to_cpu(tbd_arr->TbdBufferAddrLowPart), + le32_to_cpu(tbd_arr->TbdCount), + PCI_DMA_TODEVICE); + } +#endif + + ZD1211DEBUG(2, "zd1211: Free TcbPhys = %x\n", (u32)sw_tcb->TcbPhys); + zd1205_qlast_txq(macp, macp->freeTxQ, sw_tcb); + ZD1211DEBUG(2, "zd1211: Cnt of freeTxQ = %x\n", macp->freeTxQ->count); + + //sw_tcb->HangDur = 0; + hw_tcb->CbStatus = 0xffffffff; + hw_tcb->TxCbTbdNumber = cpu_to_le32(0xaaaaaaaa); /* for debug */ + hw_tcb->CbCommand = cpu_to_le32(CB_S_BIT); + + if ((netif_running(macp->device)) && (macp->bAssoc)) + { + netif_carrier_on(macp->device); + netif_wake_queue(macp->device); //resume tx + } + + ZEXIT(2); + return; +} + +void zd1205_tx_isr(struct zd1205_private *macp) +{ + zd1205_SwTcb_t *sw_tcb; + +#ifndef HOST_IF_USB + + zd1250_SwTcb_t *next_sw_tcb; +#endif + + u16 aid; + +#ifdef HOST_IF_USB + + int bRunOnce = false; +#endif + + ZD1211DEBUG(2, "***** zd1205_tx_isr enter *****\n"); + + if (!macp->activeTxQ->count) + { + printk(KERN_DEBUG "No element in activeQ\n"); + return; + } + + /* Look at the TCB at the head of the queue. If it has been completed + then pop it off and place it at the tail of the completed list. + Repeat this process until all the completed TCBs have been moved to the + completed list */ + while (macp->activeTxQ->count) + { + sw_tcb = macp->activeTxQ->first; + +#ifdef HOST_IF_USB + // in USB modem, only run once + if (bRunOnce) + break; + bRunOnce = true; +#endif + // check to see if the TCB has been DMA'd + + // Workaround for hardware problem that seems leap over a TCB + // and then fill completion token in the next TCB. + ZD1211DEBUG(2, "zd1211: hw_tcb = %p\n", (unsigned long *)sw_tcb->pTcb); + ZD1211DEBUG(2, "zd1211: CbStatus = %x\n", (u16)le32_to_cpu(sw_tcb->pTcb->CbStatus)); + +#ifndef HOST_IF_USB + + rmb(); + + if ((u16)le32_to_cpu(sw_tcb->pTcb->CbStatus) != CB_STATUS_COMPLETE) { + next_sw_tcb = sw_tcb; + + while(1) { + next_sw_tcb = next_sw_tcb->next; + if (!next_sw_tcb) + break; + + if ((u16)le32_to_cpu(next_sw_tcb->pTcb->CbStatus) == CB_STATUS_COMPLETE) + break; + } + + if (!next_sw_tcb) + break; + } +#endif + + /* Remove the TCB from the active queue. */ + sw_tcb = zd1205_first_txq(macp, macp->activeTxQ); + ZD1211DEBUG(2, "zd1211: Cnt of activeQ = %x\n", macp->activeTxQ->count); + + aid = sw_tcb->aid; + zd1205_transmit_cleanup(macp, sw_tcb); + macp->txCmpCnt++; + + if (!sw_tcb->LastFrag) + continue; + + zd_EventNotify(EVENT_TX_COMPLETE, ZD_TX_CONFIRM, (U32)sw_tcb->MsgID, (U32)aid); + macp->SequenceNum++; + macp->bDataTrafficLight = 1; + } + +#ifdef HOST_IF_USB + if(sw_tcb->CalMIC[MIC_LNG] == TRUE) + zd1211_submit_tx_urb(macp,TRUE); + else + zd1211_submit_tx_urb(macp,FALSE); +#endif + + ZD1211DEBUG(2, "***** zd1205_tx_isr exit *****\n"); + return; +} + + +#ifndef HOST_IF_USB +static void zd1205_retry_failed(struct zd1205_private *macp) +{ + zd1205_SwTcb_t *sw_tcb; + zd1205_SwTcb_t *next_sw_tcb = NULL; + + zd1205_HwTCB_t *hw_tcb; + zd1205_Ctrl_Set_t *ctrl_set; + + u8 CurrentRate, NewRate; + u8 ShortPreambleFg; + u16 Len; + u16 NextLen; + u16 LenInUs; + u16 NextLenInUs; + u8 Service; + u16 aid; + + ZD1211DEBUG(2, "+++++ zd1205_retry_failed enter +++++\n"); + + if (!macp->activeTxQ->count) + { + ZD1211DEBUG(1, "**********empty activeTxQ, got retry failed"); + sw_tcb = macp->freeTxQ->first; + zd1205_start_download(sw_tcb->TcbPhys | BIT_0); + return; + } + + + // Feature: Rate Adaption + // - During the procedure of processing a transmitting frame, we must keep + // the TaRate consistent. + // - When to fall OppositeContext.CurrentTxRate: + // Whenever RetryFail occurs, change OppositeContext.CurrentTxRate by a value + // ((Rate of this TCB) minus a degree) and modify this TCB's control-setting + // with the OppositeContext.CurrentTxRate and then Restart this TCB. + // (Set RetryMAX = 2). + // Once the TxRate is 1M and still RetryFail, abandon this frame. + // - When to rise TxRate: + // If there are 10 frames transmitted successfully + // (OppositeContext.ConsecutiveSuccessFrames >= 10), change + // OppositeContext.CurrentTxRate by a value + // ((Rate of this TCB) plus a degree). + + + // - Adjust OppositeContext.CurrentTxRate manually. (by application tool) + sw_tcb = macp->activeTxQ->first; + aid = sw_tcb->aid; + ctrl_set = sw_tcb->pHwCtrlPtr; + + if (ctrl_set->CtrlSetting[11] & BIT_3) + { //management frame + goto no_rate_adaption; + } + + //CurrentRate = (ctrl_set->CtrlSetting[0] & 0x1f); + + CurrentRate = sw_tcb->Rate; + + ShortPreambleFg = (ctrl_set->CtrlSetting[0] & 0x20); + + if (((!ShortPreambleFg) && (CurrentRate > RATE_1M)) || + ((ShortPreambleFg) && (CurrentRate > RATE_2M))) + { + // Fall TxRate a degree + + NewRate = zd1205_RateAdaption(aid, CurrentRate, FALL_RATE); + sw_tcb->Rate = NewRate; + + // Modify Control-setting + ctrl_set->CtrlSetting[0] = (ShortPreambleFg | NewRate); + ctrl_set->CtrlSetting[11] |= BIT_0; // Set need backoff + + // LenInUs, Service + Len = (ctrl_set->CtrlSetting[1] + ((u16)ctrl_set->CtrlSetting[2] << 8)); + Cal_Us_Service(NewRate, Len, &LenInUs, &Service); + ctrl_set->CtrlSetting[20] = (u8)LenInUs; + ctrl_set->CtrlSetting[21] = (u8)(LenInUs >> 8); + ctrl_set->CtrlSetting[22] = Service; + + + // NextLenInUs +#if defined(OFDM) + + NextLen = (ctrl_set->CtrlSetting[25+1] + ((u16)ctrl_set->CtrlSetting[25+2] << 8)); +#else + + NextLen = (ctrl_set->CtrlSetting[18] + ((u16)ctrl_set->CtrlSetting[19] << 8)); +#endif + + + + + + Cal_Us_Service(NewRate, NextLen, &NextLenInUs, &Service); + ctrl_set->CtrlSetting[23] = (u8)NextLenInUs; + ctrl_set->CtrlSetting[24] = (u8)(NextLenInUs >> 8); + +#if defined(OFDM) + + if (NewRate > RATE_11M) { + NewRate = OfdmRateTbl[NewRate]; + } + + macp->retryFailCnt++; + + ctrl_set->CtrlSetting[0] = (ShortPreambleFg | NewRate); + ctrl_set->CtrlSetting[11] |= BIT_0; // Set need backoff + +#endif + // Re-Start Tx-Bus master with a lower Rate + + zd1205_start_download(sw_tcb->TcbPhys | BIT_0); + return; + + + } + + /* Look at the TCB at the head of the queue. If it has been completed + + then pop it off and place it at the tail of the completed list. + Repeat this process until all the completed TCBs have been moved to the + completed list */ + +no_rate_adaption: + while (macp->activeTxQ->count) + { + //ZD1211DEBUG(1, "zd1211: sw_tcb = %x\n", (u32)sw_tcb); + ZD1211DEBUG(2, "zd1211: hw_tcb = %x\n", (u32)sw_tcb->pTcb); + + + /* Remove the TCB from the active queue. */ + sw_tcb = zd1205_first_txq(macp, macp->activeTxQ); + + ZD1211DEBUG(2, "zd1211: Cnt of activeQ = %x\n", macp->activeTxQ->count); + + zd1205_transmit_cleanup(macp, sw_tcb); + macp->retryFailCnt++; + if (!sw_tcb->LastFrag) + continue; + + + zd_EventNotify(EVENT_TX_COMPLETE, ZD_RETRY_FAILED, (U32)sw_tcb->MsgID, aid); + + if (!macp->activeTxQ->count) { + // Re-Start Tx-Bus master with an suspend TCB + hw_tcb = (zd1205_HwTCB_t *)sw_tcb->pTcb; + // Set BIT_0 to escape from Retry-Fail-Wait State. + zd1205_start_download((cpu_to_le32(hw_tcb->NextCbPhyAddrLowPart) | BIT_0)); + } else { + next_sw_tcb = macp->activeTxQ->first; + // Re-Start Tx bus master + // Set BIT_0 to escape from Retry-Fail-Wait state. + + zd1205_start_download(next_sw_tcb->TcbPhys | BIT_0); + } + break; + } + + macp->bIBSS_Wakeup_Dest = 1; + + + + ZD1211DEBUG(2, "+++++ zd1205_retry_failed exit +++++\n"); + + return; +} +#endif + + +static void zd1205_config(struct zd1205_private *macp) +{ + u32 tmpValue; + int i, jj; + + ZENTER(1); + + + // Retrieve Feature BitMap + zd_writel(macp->cardSetting.EncryMode, EncryptionType); + macp->dtimCount = 0; + + + /* Setup Physical Address */ + zd_writel(cpu_to_le32(*(u32 *)&macp->macAdr[0]), MACAddr_P1); + zd_writel(cpu_to_le32(*(u32 *)&macp->macAdr[4]), MACAddr_P2); + if (macp->cardSetting.BssType == AP_BSS) + { + /* Set bssid = MacAddress */ + macp->BSSID[0] = macp->macAdr[0]; + macp->BSSID[1] = macp->macAdr[1]; + macp->BSSID[2] = macp->macAdr[2]; + macp->BSSID[3] = macp->macAdr[3]; + macp->BSSID[4] = macp->macAdr[4]; + macp->BSSID[5] = macp->macAdr[5]; + zd_writel(cpu_to_le32(*(u32 *)&macp->macAdr[0]), BSSID_P1); + zd_writel(cpu_to_le32(*(u32 *)&macp->macAdr[4]), BSSID_P2); + } else + { + zd_writel(STA_RX_FILTER, ZD_Rx_Filter); + } + + + macp->intrMask = ZD1205_INT_MASK; + + if (macp->intrMask & DTIM_NOTIFY_EN) + macp->dtim_notify_en = 1; + else + macp->dtim_notify_en = 0; + + + if (macp->intrMask & CFG_NEXT_BCN_EN) + + macp->config_next_bcn_en = 1; + else + macp->config_next_bcn_en = 0; + + + + zd1205_ClearTupleCache(macp); + zd1205_ArReset(macp); + + macp->bTraceSetPoint = 1; + macp->bFixedRate = 0; + dot11Obj.bDeviceInSleep = 0; + + macp->bGkInstalled = 0; + macp->PwrState = PS_CAM; + + // Get Allowed Channel and Default Channel + dot11Obj.AllowedChannel = zd_readl(ZD_E2P_ALLOWED_CHANNEL); + + dot11Obj.AllowedChannel = 0x7FF; + + ZD1211DEBUG(0, "AllowedChannel = %08x\n", (u32)dot11Obj.AllowedChannel); + + if (!(dot11Obj.AllowedChannel & 0xFFFF0000)) + { + dot11Obj.AllowedChannel |= 0x10000; + } + + +#ifdef HOST_IF_USB + tmpValue = zd_readl(E2P_SUBID); + macp->RegionCode = (u16)(tmpValue >> 16); + + dot11Obj.RegionCode = macp->RegionCode; + macp->LinkLEDn = LED1; + if (macp->RF_Mode & BIT_4) + { + + + macp->LinkLEDn = LED2; + ZD1211DEBUG(0, "LED2\n"); + } + ZD1211DEBUG(0, "LinkLEDn = %x\n", macp->LinkLEDn); + + if (macp->RF_Mode & BIT_8) + { + + dot11Obj.bOverWritePhyRegFromE2P = 1; + ZD1211DEBUG(0, "OverWritePhyRegFromE2P\n"); + + + } + + + if (macp->RF_Mode & BIT_9) + { + dot11Obj.bIsNormalSize = 1; + ZD1211DEBUG(0, "NormalSize\n"); + } + + macp->LinkLED_OnDur = 2; + macp->LinkLED_OffDur = 1; + macp->DataLED = 0; + if (macp->RF_Mode & BIT_24) + { + + macp->LinkLED_OnDur = ((macp->RF_Mode) >> 25) & 0x3; + macp->LinkLED_OffDur = ((macp->RF_Mode) >> 27) & 0x3; + if (macp->RF_Mode & BIT_29) + macp->DataLED = 1; + } + ZD1211DEBUG(1, "LinkLED_OnDur = %d\n", macp->LinkLED_OnDur); + + ZD1211DEBUG(1, "LinkLED_OffDur = %d\n", macp->LinkLED_OffDur); + + if (!(macp->RF_Mode & BIT_10)) + { // The IPC protection: the default is disablesd + macp->IPCFlag = 4; + } + + macp->RF_Mode &= 0x0f; + + tmpValue = zd_readl(FW_USB_SPEED); + dot11Obj.IsUSB2_0 = (u8) tmpValue; +#else + + dot11Obj.bIsNormalSize = 1; + dot11Obj.IsUSB2_0 = 1; +#endif + + printk("AllowedChannel = %08x\n", (u32)dot11Obj.AllowedChannel); + printk("Region:%u\n",(unsigned)dot11Obj.RegionCode); + + + ZD1211DEBUG(1, "IsUSB2_0 = %d\n", dot11Obj.IsUSB2_0); + // read Set Point from EEPROM + + tmpValue = zd_readl(ZD_E2P_PWR_INT_VALUE1); + tmpValue -= cPWR_INT_VALUE_GUARD; + dot11Obj.IntValue[0] = (u8)tmpValue; + dot11Obj.IntValue[1] = (u8)(tmpValue >> 8); + + dot11Obj.IntValue[2] = (u8)(tmpValue >> 16); + dot11Obj.IntValue[3] = (u8)(tmpValue >> 24); + + tmpValue = zd_readl(ZD_E2P_PWR_INT_VALUE2); + tmpValue -= cPWR_INT_VALUE_GUARD; + dot11Obj.IntValue[4] = (u8)tmpValue; + dot11Obj.IntValue[5] = (u8)(tmpValue >> 8); + dot11Obj.IntValue[6] = (u8)(tmpValue >> 16); + dot11Obj.IntValue[7] = (u8)(tmpValue >> 24); + + tmpValue = zd_readl(ZD_E2P_PWR_INT_VALUE3); + tmpValue -= cPWR_INT_VALUE_GUARD; + dot11Obj.IntValue[8] = (u8)tmpValue; + dot11Obj.IntValue[9] = (u8)(tmpValue >> 8); + dot11Obj.IntValue[10] = (u8)(tmpValue >> 16); + dot11Obj.IntValue[11] = (u8)(tmpValue >> 24); + + tmpValue = zd_readl(ZD_E2P_PWR_INT_VALUE4); + tmpValue -= cPWR_INT_VALUE_GUARD; + dot11Obj.IntValue[12] = (u8)tmpValue; + dot11Obj.IntValue[13] = (u8)(tmpValue >> 8); + + //Initiate a_Calibration_Data CH field + for (i=0;ia_Calibration_Data[0][i] = a_ChannelMap[i]; + if(a_Calibration_Data[0][i] != 0xff) { + a_Calibration_Data[1][i] = a_get_cal_int_val((u8)i) - cPWR_INT_VALUE_GUARD; + a_Calibration_Data[2][i] = a_get_cal_36M_setpoint_val((u8)i); + a_Calibration_Data[3][i] = a_get_cal_48M_54M_setpoint_val((u8)i); + } else { + a_Calibration_Data[1][i] = 0xff; + a_Calibration_Data[2][i] = 0xff; + a_Calibration_Data[3][i] = 0xff; + + } + } + + //Calculate Interpolation SetPoints(For 802.11a) + for (i=0;ia_Interpolation_Data[0][i] = a_InterpolationTbl[i].a_Channel; + if(a_InterpolationTbl[i].Left_Most_Channel == a_InterpolationTbl[i].Right_Most_Channel) { + for (jj=0;jjSetPointOFDM[jj][i*4] = (u8) tmpValue; + macp->SetPointOFDM[jj][i*4+1] = (u8) (tmpValue >> 8); + if (i != 3) { + macp->SetPointOFDM[jj][i*4+2] = (u8) (tmpValue >> 16); + macp->SetPointOFDM[jj][i*4+3] = (u8) (tmpValue >> 24); + } + } + } +#endif + + + zd_writel(0x00000064,ZD_BCNInterval); + HW_UpdateBcnInterval(&dot11Obj, 0x00000064); + + // read Set Point from EEPROM + tmpValue = zd_readl(ZD_E2P_PWR_CAL_VALUE1); + macp->EepSetPoint[0] = (u8)tmpValue; + macp->EepSetPoint[1] = (u8)(tmpValue >> 8); + macp->EepSetPoint[2] = (u8)(tmpValue >> 16); + macp->EepSetPoint[3] = (u8)(tmpValue >> 24); + + tmpValue = zd_readl(ZD_E2P_PWR_CAL_VALUE2); + + macp->EepSetPoint[4] = (u8)tmpValue; + + macp->EepSetPoint[5] = (u8)(tmpValue >> 8); + macp->EepSetPoint[6] = (u8)(tmpValue >> 16); + macp->EepSetPoint[7] = (u8)(tmpValue >> 24); + + + tmpValue = zd_readl(ZD_E2P_PWR_CAL_VALUE3); + macp->EepSetPoint[8] = (u8)tmpValue; + + macp->EepSetPoint[9] = (u8)(tmpValue >> 8); + macp->EepSetPoint[10] = (u8)(tmpValue >> 16); + macp->EepSetPoint[11] = (u8)(tmpValue >> 24); + + tmpValue = zd_readl(ZD_E2P_PWR_CAL_VALUE4); + macp->EepSetPoint[12] = (u8)tmpValue; + macp->EepSetPoint[13] = (u8)(tmpValue >> 8); + + HW_SetRfChannel(&dot11Obj, (dot11Obj.AllowedChannel >> 16), 0, MIXED_MODE); + // For Antenna Diversity Parameters + macp->bEnableSwAntennaDiv = 0; + macp->Ant_MonitorDur1 = 10;//100; + macp->Ant_MonitorDur2 = 1; + macp->NiceSQThr = 48; + + macp->rxOffset = ZD_RX_OFFSET; + + macp->bPSMSupported = 0; + macp->NormalBackoff = 0x7f047f; + macp->UrgentBackoff = 0x7f0407; + macp->LooseBackoff = 0x7f107f; + macp->WorseSQThr = 0x48; + macp->MulticastAddr[0] = 0; + macp->iv16 = 0; + macp->iv32 = 0; + macp->EnableTxPwrCtrl = 1; + macp->PSThreshhold = 10000; + +#if fANT_DIVERSITY + // macp->NiceSQThr_OFDM = 12 * 4; // 12 dB --> 48 % + macp->NiceSQThr_OFDM = 48; // 48 % + macp->bEnableSwAntennaDiv = 1; +#endif + +#if fWRITE_WORD_REG + + macp->FlashType = 0xFF; + +#endif + + + macp->PHYTestIndex = 5; + macp->PHYTestRssiBound = 0x3a; + macp->PHYTestTimer = 30; + macp->TrafficBound = 200; + + macp->PHYLowPower = 3; // Tx/Rx enable + dot11Obj.CR122Flag = 2; // initial value + + dot11Obj.CR31Flag = 2; // initial value + dot11Obj.CR203Flag = 2; // initial value + dot11Obj.PhyTest = 4; + macp->AdapterMaxRate = 0x0B; // initail max rate = 54M + ZEXIT(0); +} + + +int zd1205_dis_connect(struct zd1205_private *macp) +{ + u32 tmpvalue; + + ZD1211DEBUG(0, "zd1205_dis_connect\n"); + + netif_carrier_off(macp->device); + netif_stop_queue(macp->device); + + // Note: The following sequence is important, do not change it arbitrarily. + macp->bAssoc = 0; + macp->PwrState = PS_CAM; + + // PwrMgt = 0 + down(&macp->bcn_sem); + tmpvalue = zd_readl(ZD_BCNInterval); + tmpvalue &= ~POWER_MNT; + zd_writel(tmpvalue, ZD_BCNInterval); + up(&macp->bcn_sem); + + +#ifndef HOST_IF_USB + + while (dot11Obj.bDeviceInSleep) + { + wait_ms(1); + //if (macp->Notification & RQ_TERMINATION){ + // break; + //} + } +#else + + + if (dot11Obj.bDeviceInSleep) + { + ZD1211DEBUG(1, "Device in sleep\n"); + + return 1; + + } +#endif + + // After all pending packets are served, then notify NDIS with + // DISCONNECT. + // Otherwise, it might cause IP Address = 0.0.0.0 + +#ifndef HOST_IF_USB + while (macp->activeTxQ->count) + { + // After this step, we can make sure that no ATIM pended. + wait_ms(1); + //if (macp->Notification & RQ_TERMINATION){ + // break; + //} + } +#else + //if (macp->activeTxQ->count){ + // ZD1211DEBUG(1, "activeTxQ not empty\n"); + + // return 1; + //} + +#endif + + // Notice PS_Change + zd_EventNotify(EVENT_PS_CHANGE, (u8)macp->PwrState, 0, 0); + + // IBSS = 0, i.e, stop sending beacon. + down(&macp->bcn_sem); + tmpvalue = zd_readl(ZD_BCNInterval); + tmpvalue &= ~IBSS_MODE; + zd_writel(tmpvalue, ZD_BCNInterval); + up(&macp->bcn_sem); + zd1205_notify_disjoin_event(macp); + + + // We may need issue disassociate frame. + // Issue notification + + return 0; +} + + + +#ifndef HOST_IF_USB + +static void zd1205_dtim_notify( + struct zd1205_private *macp + +) + +{ + zd1205_SwTcb_t *sw_tcb; + u32 tmp_value; + + zd_EventNotify(EVENT_DTIM_NOTIFY, 0, 0, 0); + if (!macp->activeTxQ->count) + sw_tcb = macp->freeTxQ->first; + else + sw_tcb = macp->activeTxQ->first; + + + tmp_value = zd_readl(DeviceState); + tmp_value &= 0xf; + zd1205_start_download(sw_tcb->TcbPhys | BIT_0); + +} +#endif + +void zd1205_config_wep_keys(struct zd1205_private *macp) +{ + card_Setting_t *pSetting = &macp->cardSetting; + + u8 encryMode = pSetting->EncryMode; + u8 i, j; + u8 DynKeyMode = pSetting->DynKeyMode; + u8 keyLength; + + if ((encryMode == 0) || (DynKeyMode != 0)) + { + HW_CAM_Write(&dot11Obj, DEFAULT_ENCRY_TYPE, NO_WEP); + return; + } + + if (pSetting->OperationMode != CAM_AP_VAP) + { + HW_CAM_ResetRollTbl(&dot11Obj); //force CAM to use default encry type + + switch(encryMode) { + case WEP64: + ZD1211DEBUG(0, "WEP64 Mode\n"); + keyLength = 5; + break; + + case WEP128: + ZD1211DEBUG(0, "WEP128 Mode\n"); + keyLength = 13; + break; + + case WEP256: + ZD1211DEBUG(0, "WEP256 Mode\n"); + keyLength = 29; + break; + + default: + ZD1211DEBUG(0, "Not supported Mode\n"); + ZD1211DEBUG(0, "encryMode = %d\n", encryMode); + + return; + } + + HW_CAM_Write(&dot11Obj, DEFAULT_ENCRY_TYPE, encryMode); + + for (i=0, j=0; i<4; i++, j+=8) { //one key occupy 32 bytes space + HW_ConfigStatKey(&dot11Obj, &pSetting->keyVector[i][0], keyLength, STA_KEY_START_ADDR+j); + } + } + return; +} +#if 0 +void zd1205_config_dyn_key(u8 DynKeyMode, u8 *pkey, int idx) +{ + u8 keyLength; + u8 encryMode; + u32 offset; + + HW_CAM_ResetRollTbl(&dot11Obj); //force CAM to use default encry type + + switch(DynKeyMode) { + case DYN_KEY_TKIP: + WPADEBUG("Dynamic key TKIP mode\n"); + keyLength = 32; + encryMode = TKIP; + break; + + case DYN_KEY_AES: + WPADEBUG("Dynamic key AES mode\n"); + keyLength = 16; + encryMode = AES; + break; + + default: + WPADEBUG("Do not support the Dynamic key mode = %d\n", DynKeyMode); + return; + } + + /* The size for each key is 256 bits (32 bytes) */ + offset = idx * 8; + + HW_CAM_Write(&dot11Obj, DEFAULT_ENCRY_TYPE, encryMode); + HW_ConfigStatKey(&dot11Obj, pkey, keyLength, STA_KEY_START_ADDR+offset); + + return; +} +#endif +static int zd1205_validate_frame( + struct zd1205_private *macp, + zd1205_RFD_t *rfd +) +{ + plcp_wla_Header_t *wla_hdr; + u32 min_length; + u32 frame_len; + + u32 len, len1,tot_len; + u8 bOfdmFrm = 0; + u8 PlcpRate; + //u8 rx_offset = macp->rxOffset; + + u8 FrameEndInd; +#if ZDCONF_WE_STAT_SUPPORT == 1 + + U32 Tmp=0; + static U8 Qual[10]={0,0,0,0,0,0,0,0,0,0}; + static U8 Str[10]={0,0,0,0,0,0,0,0,0,0}; + static U32 Qidx=0; +#elif !defined(ZDCONF_WE_STAT_SUPPORT) + #error "Undefine ZDCONF_WE_STAT_SUPPORT" +#endif + + u32 idx; + + + // Extension Info + /*********************************************************************/ + /* Signal Quality | Signal Strength | Signal Quality2 | Noise Report */ + /*********************************************************************/ + + /*****************************************************/ + /* DA Index | SA Index | Rx Decrypt Type | Rx Status */ + /*****************************************************/ + + // Accept Data/Management frame only. + wla_hdr = (plcp_wla_Header_t *)&rfd->RxBuffer[macp->rxOffset]; + + tot_len=(le32_to_cpu(rfd->ActualCount) & 0x3fff); + len = tot_len - EXTRA_INFO_LEN; + frame_len = tot_len - macp->rxOffset; + + PlcpRate = wla_hdr->PlcpHdr[0]; + + if (frame_len == 0) + { + macp->ErrZeroLenFrmCnt++; + return false; + } + + //pSwRfd->pRfd->RxBuffer[frameLen+rxOffset-1] + //bit7: error frame + //bit6: crc16 error + //bit5: address not match + //bit4: crc32 error + //bit3: decrypt error + + //bit2: overrun + + //bit1: Rx Timeout + //bit0: OFDM modulation + + macp->rxDecryType = rfd->RxBuffer[tot_len-2]; + FrameEndInd = rfd->RxBuffer[tot_len-1]; + if (FrameEndInd & BIT_7) + { + macp->ErrToHostFrmCnt++; + return FALSE; + } + + if (bWepBit(wla_hdr)) + { + //if (macp->cardSetting.EncryMode == ENCRY_TKIP) + // min_length = 48; + //else + min_length = 44; + if (frame_len < min_length) { + //printk(KERN_DEBUG "frame_len = %x\n", frame_len); + macp->ErrShortFrmCnt++; + return false; + } + } else + { + // Minimum Length = PLCP(5)+MACHeader(24)+EXTINFO(5)+CRC(4) + if (frame_len < 36) { + //printk(KERN_DEBUG "frame_len = %x\n", frame_len); + macp->ErrShortFrmCnt++; + return false; + } + } + + // Check if frame_len > MAX_WLAN_SIZE. + if (frame_len > ZD_MAX_WLAN_SIZE) + { + // Do not worry about the corruption of HwRfd. + // If the frame_len > 2410, the Rx-Bus-Master skip the bytes that exceed + // 2410 to protect the structure of HwRfd. + // However, the Rx-Bus-Master still reports this frame to host if the frame + // is recognized as good by the FA(Frame Analyzer). + macp->ErrLongFrmCnt++; + return false; + } + + // Check if the SwRfd->frame_len matched the length derived from PLCP. + bOfdmFrm = (FrameEndInd & BIT_0); + + if (bOfdmFrm) + { + // it's OFDM + macp->rxOFDMDataFrame++; +#ifdef HOST_IF_USB + + macp->PHYFreOFDMframe = 1; +#endif + + switch(PlcpRate & 0xF) { + case 0x0B: //6M + + macp->rxInfo.rate = RATE_6M; + break; + + case 0x0F: //9M + macp->rxInfo.rate = RATE_9M; + break; + + + case 0x0A: //12M + macp->rxInfo.rate = RATE_12M; + + break; + + case 0x0E: //18M + macp->rxInfo.rate = RATE_18M; + break; + + + case 0x09: //24M + macp->rxInfo.rate = RATE_24M; + break; + + case 0x0D: //36M + macp->rxInfo.rate = RATE_36M; + break; + + case 0x08: //48M + macp->rxInfo.rate = RATE_48M; + break; + + case 0x0C: //54M + macp->rxInfo.rate = RATE_54M; + break; + + default: + break; + } + + } else + { + // it's CCK + macp->rx11bDataFrame++; + // the value from PHY is in scale from Max is 0 and Min is 0xb5 + switch(PlcpRate) { + case 0x0A: + + macp->rxInfo.rate = RATE_1M; + break; + + case 0x14: + macp->rxInfo.rate = RATE_2M; + break; + + case 0x37: + macp->rxInfo.rate = RATE_5M; + break; + + case 0x6E: + macp->rxInfo.rate = RATE_11M; + break; + + default: + break; + } + } + + + macp->rxSignalQuality = rfd->RxBuffer[len]; + macp->rxSignalQuality1 = macp->rxSignalQuality; + macp->rxSignalStrength = rfd->RxBuffer[len+1]; + macp->rxSignalQuality2 = rfd->RxBuffer[len+2]; + //macp->rxNoiseReport = rfd->RxBuffer[len+3]; //3d31 + +#ifdef HOST_IF_USB + + macp->rxSignalQuality = CalculateQuality(macp, rfd, &macp->rxSignalQualityIndB); + macp->rxSignalStrength = CalculateStrength(macp, rfd); +#endif +#if ZDCONF_WE_STAT_SUPPORT == 1 + + Qual[Qidx++ % 10] = macp->rxSignalQuality; + Str[Qidx % 10] = macp->rxSignalStrength; + + if(Qidx % 100 == 0) + { + Tmp = 0; + for(idx=0;idx<10;idx++) + Tmp += Qual[idx]; + macp->iwstats.qual.qual=Tmp/10; + + Tmp = 0; + for(idx=0;idx<10;idx++) + Tmp += Str[idx]; + Tmp/=10; + + Tmp = -(100 - Tmp); + Tmp = Tmp > -40 ? -40: Tmp; + Tmp = Tmp < -105 ? -105: Tmp; + Tmp = (Tmp + 105)*100/65; + macp->iwstats.qual.level= Tmp; + + Tmp = -(100 - rfd->RxBuffer[len+3]); + Tmp = Tmp > -40 ? -40: Tmp; + Tmp = Tmp < -105 ? -105: Tmp; + Tmp = (Tmp + 105)*100/65; + macp->iwstats.qual.noise= Tmp; + + } +#elif !defined(ZDCONF_WE_STAT_SUPPORT) + #error "Undefine ZDCONF_WE_STAT_SUPPORT" +#endif + + macp->rxInfo.signalQuality = macp->rxSignalQuality; + macp->rxInfo.signalStrength = macp->rxSignalStrength; + + return true; +} + +/** + * zd1205_alloc_tcb_pool - allocate TCB circular list + * @macp: atapter's private data struct + * + * This routine allocates memory for the circular list of transmit descriptors. + * + * Returns: + * 0: if allocation has failed. + * 1: Otherwise. + */ + +int +zd1205_alloc_tcb_pool(struct zd1205_private *macp) +{ + /* deal with Tx uncached memory */ + /* Allocate memory for the shared transmit resources with enough extra mem + * to paragraph align (4-byte alignment) everything */ + + macp->txUnCachedSize = (macp->numTcb * + (sizeof(zd1205_HwTCB_t)+ sizeof(zd1205_Ctrl_Set_t)+sizeof(zd1205_Header_t))) + + (macp->numTbd * sizeof(zd1205_TBD_t)); + +#ifndef HOST_IF_USB + + if (!(macp->txUnCached = pci_alloc_consistent(macp->pdev, + macp->txUnCachedSize, &(macp->txUnCachedPhys)))) + { + return 0; + } +#else + macp->txUnCached = kmalloc(macp->txUnCachedSize, GFP_ATOMIC); + if (!macp->txUnCached) + { + printk(KERN_ERR "zd1205: kmalloc txCached failed\n"); + return 0; + } +#endif + + memset(macp->txUnCached, 0x00, macp->txUnCachedSize); + return 1; +} + +void +zd1205_free_tcb_pool(struct zd1205_private *macp) +{ +#ifndef HOST_IF_USB + + pci_free_consistent(macp->pdev, macp->txUnCachedSize, + + macp->txUnCached, macp->txUnCachedPhys); +#else + + if (macp->txUnCached) + kfree(macp->txUnCached); +#endif + + macp->txUnCachedPhys = 0; + +} + + + +static void +zd1205_free_rfd_pool(struct zd1205_private *macp) +{ + struct rx_list_elem *rx_struct; + + while (!list_empty(&(macp->active_rx_list))) + { + rx_struct = list_entry(macp->active_rx_list.next, + struct rx_list_elem, list_elem); + list_del(&(rx_struct->list_elem)); + + +#ifndef HOST_IF_USB + + pci_unmap_single(macp->pdev, rx_struct->dma_addr, + + sizeof (zd1205_RFD_t), PCI_DMA_TODEVICE); + dev_kfree_skb(rx_struct->skb); +#else + + dev_kfree_skb(rx_struct->skb); +#endif + + kfree(rx_struct); + } + + + while (!list_empty(&(macp->rx_struct_pool))) + { + rx_struct = list_entry(macp->rx_struct_pool.next, + struct rx_list_elem, list_elem); + list_del(&(rx_struct->list_elem)); + kfree(rx_struct); + } + +} + + + +/** + * zd1205_alloc_rfd_pool - allocate RFDs + * @macp: atapter's private data struct + + * + * Allocates initial pool of skb which holds both rfd and data, + * and return a pointer to the head of the list + */ + + + +static int +zd1205_alloc_rfd_pool(struct zd1205_private *macp) +{ + struct rx_list_elem *rx_struct; + int i; + + + + INIT_LIST_HEAD(&(macp->active_rx_list)); + INIT_LIST_HEAD(&(macp->rx_struct_pool)); + macp->skb_req = macp->numRfd; + + + for (i = 0; i < macp->skb_req; i++) + { + rx_struct = kmalloc(sizeof (struct rx_list_elem), GFP_ATOMIC); + list_add(&(rx_struct->list_elem), &(macp->rx_struct_pool)); + } + + zd1205_alloc_skbs(macp); + return !list_empty(&(macp->active_rx_list)); +} + + +void + +zd1205_clear_pools(struct zd1205_private *macp) +{ + zd1205_dealloc_space(macp); + zd1205_free_rfd_pool(macp); + + zd1205_free_tcb_pool(macp); +} + + +/** + * zd1205_start_ru - start the RU if needed + * @macp: atapter's private data struct + * + * This routine checks the status of the receive unit(RU), + * and starts the RU if it was not already active. However, + * before restarting the RU, the driver gives the RU the buffers + * it freed up during the servicing of the ISR. If there are + * no free buffers to give to the RU, (i.e. we have reached a + * no resource condition) the RU will not be started till the + * next ISR. + */ +#ifndef HOST_IF_USB +void zd1205_start_ru(struct zd1205_private *macp) +#else +struct rx_list_elem *zd1205_start_ru(struct zd1205_private *macp) +#endif +{ +#ifndef HOST_IF_USB + u32 tmp_value; + u32 loopCnt = 0; +#endif + + struct rx_list_elem *rx_struct = NULL; + struct list_head *entry_ptr = NULL; + + zd1205_RFD_t *rfd = 0; + int buffer_found = 0; + struct sk_buff *skb; + + ZENTER(4); + + list_for_each(entry_ptr, &(macp->active_rx_list)) + { + rx_struct = list_entry(entry_ptr, struct rx_list_elem, list_elem); + + if (!rx_struct) +#ifndef HOST_IF_USB + + return; +#else + + return NULL; +#endif + +#ifndef HOST_IF_USB + + pci_dma_sync_single(macp->pdev, rx_struct->dma_addr, + + macp->rfd_size, PCI_DMA_FROMDEVICE); +#endif + + skb = rx_struct->skb; + rfd = RFD_POINTER(skb, macp); /* locate RFD within skb */ + + if (SKB_RFD_STATUS(rx_struct->skb, macp) != __constant_cpu_to_le32(RFD_STATUS_COMPLETE)) { + buffer_found = 1; + break; + } + + } + + + /* No available buffers */ + if (!buffer_found) + { + printk(KERN_ERR "zd1205: No available buffers\n"); +#ifndef HOST_IF_USB + + return; +#else + + return NULL; +#endif + + } + + +#ifndef HOST_IF_USB + while(1) + { + tmp_value = zd_readl(DeviceState); + tmp_value &= 0xf0; + if ((tmp_value == RX_READ_RCB) || (tmp_value == RX_CHK_RCB)) { + /* Device is now checking suspend or not. + Keep watching until it finished check. */ + loopCnt++; + if (loopCnt > 10000000) + break; + + udelay(1); + continue; + } else { + break; + } + + + + + } + if (loopCnt > 10000000) + ZD1211DEBUG(0, "I am in zd1205_start_ru loop\n"); + + + if (tmp_value == RX_IDLE) + { + /* Rx bus master is in idle state. */ + if ((u16)le32_to_cpu(rfd->CbStatus) != RFD_STATUS_COMPLETE) { + zd1205_start_upload(rx_struct->dma_addr); + + } + } + + ZEXIT(4); + + return; +#else + + + return rx_struct; + + +#endif +} + +void zd1205_recycle_rx(struct zd1205_private *macp) +{ + struct rx_list_elem *rx_struct = NULL; + struct list_head *entry_ptr = NULL; + zd1205_RFD_t *rfd = 0; + struct sk_buff *skb; + ZENTER(4); + + list_for_each(entry_ptr, &(macp->active_rx_list)) + { + rx_struct = list_entry(entry_ptr, struct rx_list_elem, list_elem); + if (!rx_struct) + return; + + rx_struct->UnFinishFrmLen = 0; + skb = rx_struct->skb; + rfd = RFD_POINTER(skb, macp); /* locate RFD within skb */ + rfd->CbStatus = 0xffffffff; + } +} + + +void zd1205_CheckBeaconInfo(struct zd1205_private *macp, plcp_wla_Header_t *pWlanHdr, u8 *pMacBody, u32 bodyLen) +{ + u8 *pBssid; + u8 *pByte; + u32 currPos = 0; + u8 elemId, elemLen; + u8 Zd1202Detected = 0; + u8 BitmapCtrl; + u16 N1; + u16 N2; + u16 quotient; + u16 remainder; + u8 BssType = macp->cardSetting.BssType; + u8 erp; + u16 cap; + u8 preamble = 0; + u16 basicRateMap = 0; + u16 supRateMap = 0; + u8 bErpSta = 0; + int i; + u8 tmpMaxRate = 0x02; + u8 rate; + //u16 sequence_number; + + cap = (*(pMacBody + CAP_OFFSET)) + ((*(pMacBody + CAP_OFFSET +1)) << 8); + + if (cap & BIT_1) //IBSS + pBssid = pWlanHdr->Address3; + else + { + pBssid = pWlanHdr->Address2; + if (BssType == INDEPENDENT_BSS) + return; + } + //sequence_number = (*(u16*)(&pWlanHdr->SeqCtrl[0])) >> 4; + + if (cap & BIT_5) + preamble = 1; + else + preamble = 0; + + //get element + pByte = pMacBody + SSID_OFFSET; + + currPos = SSID_OFFSET; + + while(currPos < bodyLen) + { + elemId = *pByte; + elemLen = *(pByte+1); + + switch (elemId) { + case ELEID_DSPARMS: + if (BssType==INFRASTRUCTURE_BSS && macp->bAssoc && dot11Obj.Channel != *(pByte+2)) { + macp->bAssoc=0; + printk("Channel changed:%u to %u\n",dot11Obj.Channel,*(pByte+2)); + zd_CmdProcess(CMD_ROAMING,0,0); + } + pByte += (elemLen+2); + break; + case ELEID_SSID: + //printk("Get ssid\n"); + if (BssType == INFRASTRUCTURE_BSS && macp->bAssoc &&(dot11DesiredSsid.buf[1]==0)) // Any ssid + { + //printk("Rx ssidlen=%d\n",elemLen); + + if (memcmp((pByte+2),&dot11Obj.CurrSsid[2],elemLen)==0 && dot11Obj.CurrSsid[1]==elemLen) + { + // printk("SSID Same\n"); + } else + { + macp->bAssoc=0; + printk("SSID Changed\n"); + zd_CmdProcess(CMD_ROAMING,0,0); + } + } + pByte += (elemLen+2); + break; + + + case 0xfe: //ZyDAS Extended Supported Rate (16.5M) + case 0xff: //ZyDAS Extended Supported Rate (27.5M) + Zd1202Detected = 1; + + if (elemLen != 0) { //For possible future compatibility issue, + //we adopt "length = 0", which will not + //disturb others. + } + pByte += (elemLen+2); + break; + + case ELEID_TIM: + if ((BssType == INFRASTRUCTURE_BSS) && (macp->bAssoc)) { + if (elemLen >= 3) { + BitmapCtrl = *(pByte+4); + N1 = (BitmapCtrl & ~BIT_0); + N2 = (elemLen + N1 - 4); + quotient = (dot11Obj.Aid >> 3); + remainder = (dot11Obj.Aid & 0x7); + + if ((quotient < N1) || (quotient > N2)) { + macp->bAnyActivity = 0; + pByte += (elemLen+2); + break; + } + + if ((*(pByte+5+quotient-N1) >> remainder) & BIT_0) { + //ZD1211DEBUG(1, "TIM: More data at SequNum=%u\n",sequence_number); + zd_EventNotify(EVENT_MORE_DATA, 0, 0, 0); + macp->bAnyActivity = 1; + //ZD1211DEBUG(2, "EVENT_MORE_DATA!\n"); + //zd1205_dump_data("TIM", pByte, elemLen+2); + //zd1205_dump_data("pMacBody", (u8 *)pMacBody, bodyLen); + } else { + macp->bAnyActivity = 0; + } + + // Multicast frames queued in AP + if (BitmapCtrl & BIT_0) { + ZD1211DEBUG(1, "Got multicast framed queued information!\n"); + macp->bAnyActivity = 1; + } + } + } + pByte += (elemLen+2); + break; + + + case ELEID_ERP_INFO: + if (macp->bAssoc) { + erp = *(pByte+2); + + if (erp & USE_PROTECTION_BIT) { + if (!(dot11Obj.ConfigFlag & ENABLE_PROTECTION_SET)) + defer_kevent(macp, KEVENT_EN_PROTECTION); + } else { + if (dot11Obj.ConfigFlag & ENABLE_PROTECTION_SET) + defer_kevent(macp, KEVENT_DIS_PROTECTION); + } + + // check Barker_Preamble_Mode + if (erp & BARKER_PREAMBLE_BIT) { + if (!(dot11Obj.ConfigFlag & BARKER_PREAMBLE_SET)) + defer_kevent(macp, KEVENT_EN_BARKER); + } else { + if (dot11Obj.ConfigFlag & BARKER_PREAMBLE_SET) + defer_kevent(macp, KEVENT_DIS_BARKER); + } + + // check B-STA + if (erp & NON_ERP_PRESENT_BIT) { + if (dot11Obj.ConfigFlag & SHORT_SLOT_TIME_SET) { + defer_kevent(macp, KEVENT_DIS_SHORT_SLOT); + } + } else { + if (!(dot11Obj.ConfigFlag & SHORT_SLOT_TIME_SET)) { + defer_kevent(macp, KEVENT_EN_SHORT_SLOT); + } + } + } + + pByte += (elemLen+2); + break; + + case ELEID_SUPRATES: + if ((BssType == INDEPENDENT_BSS) && (macp->bAssoc)) { + zd_makeRateInfoMAP(pByte, &basicRateMap, &supRateMap); + for (i=0; i tmpMaxRate) + tmpMaxRate = (rate & 0x7f); + } + } + pByte += (elemLen+2); + break; + + case ELEID_EXT_RATES: + if ((BssType == INDEPENDENT_BSS) && (macp->bAssoc)) { + zd_makeRateInfoMAP(pByte, &basicRateMap, &supRateMap); + + for (i=0; i tmpMaxRate) + tmpMaxRate = (rate & 0x7f); + } + } + + pByte += (elemLen+2); + break; + + default: + pByte += (elemLen+2); + break; + + } + + currPos += (elemLen+2); + } + + + if (Zd1202Detected) + { + macp->BSS_Members |= MEMBER_ZD1202; + } else + { + macp->BSS_Members |= MEMBER_OTHERS; + } + + if ((BssType == INDEPENDENT_BSS) && (macp->bAssoc)) + { + if (supRateMap > 0x0f) { //support rates include OFDM rates + if (basicRateMap & ~0xf) // basic rates include OFDM rates + bErpSta = 1; + else + bErpSta = 1; + } else + bErpSta = 0; + + zd_UpdateIbssInfo(pWlanHdr->Address2, tmpMaxRate, preamble, bErpSta); + if ((macp->cardSetting.MacMode != PURE_A_MODE) &&(macp->cardSetting.MacMode != PURE_B_MODE) && (!bErpSta)) { + if (!(dot11Obj.ConfigFlag & ENABLE_PROTECTION_SET)) { +#ifdef HOST_IF_USB + defer_kevent(macp, KEVENT_EN_PROTECTION); + ZD1211DEBUG(2, "KEVENT_EN_PROTECTION\n"); +#else + + zd_EventNotify(EVENT_ENABLE_PROTECTION, 1, 0, 0); +#endif + + } + } + } + + macp->Bcn_Acc_Num++; + macp->Bcn_Acc_SQ += macp->rxInfo.signalQuality; + return; +} + + + +#define ETH_P_80211_RAW (ETH_P_ECONET + 1) + +/** + * zd1205_rx_isr - service RX queue + * @macp: atapter's private data struct + * @max_number_of_rfds: max number of RFDs to process + * @rx_congestion: flag pointer, to inform the calling function of congestion. + * + * This routine processes the RX interrupt & services the RX queues. + * For each successful RFD, it allocates a new msg block, links that + + * into the RFD list, and sends the old msg upstream. + * The new RFD is then put at the end of the free list of RFD's. + * It returns the number of serviced RFDs. + */ + +u32 zd1205_rx_isr(struct zd1205_private *macp) +{ + zd1205_RFD_t *rfd; /* new rfd, received rfd */ + int i; + u32 rfd_status; + struct sk_buff *skb; + struct net_device *dev; + u32 data_sz; + struct rx_list_elem *rx_struct; + u32 rfd_cnt = 0; + plcp_wla_Header_t *wla_hdr; + u8 *pHdr; + u8 *pIv; + u8 *pBody = NULL; + u32 bodyLen = 0; + u32 hdrLen = WLAN_HEADER; + u16 seq = 0; + u8 frag = 0; + u8 *pTa = NULL; + defrag_Array_t *pDefArray = &macp->defragArray; + u8 EthHdr[12]; + card_Setting_t *pSetting = &macp->cardSetting; + u8 bDataFrm = 0; + u8 BaseFrmType = 0; + int SaIndex = 0; + u8 BssType=pSetting->BssType; + u8 bSwCheckMIC=0; + u8 rxDecryType = 0; + +#ifdef HOST_IF_USB + #if fMERGE_RX_FRAME + + int rx_cnt; + struct rx_list_elem **rx_struct_array = macp->rx_struct_array; + int total_rx_cnt = macp->total_rx_cnt; +#else + + u8 RunOnce = 0; +#endif +#endif + + ZENTER(4); + dev = macp->device; + /* current design of rx is as following: + * 1. socket buffer (skb) used to pass network packet to upper layer + * 2. all HW host memory structures (like RFDs, RBDs and data buffers) + * are placed in a skb's data room + * 3. when rx process is complete, we change skb internal pointers to exclude + * from data area all unrelated things (RFD, RDB) and to leave + * just rx'ed packet netto + * 4. for each skb passed to upper layer, new one is allocated instead. + * 5. if no skb left, in 2 sec another atempt to allocate skbs will be made + * (watchdog trigger SWI intr and isr should allocate new skbs) + */ + + +#if fMERGE_RX_FRAME //USB + + for (rx_cnt=0; rx_cntnumRfd; i++) { +#endif + +#if fMERGE_RX_FRAME + rx_struct = rx_struct_array[rx_cnt]; + skb = rx_struct->skb; + rfd = RFD_POINTER(skb, macp); + rfd_status = SKB_RFD_STATUS(rx_struct->skb, macp); + + if (rfd_status != __constant_cpu_to_le32(RFD_STATUS_COMPLETE)) /* does not contains data yet - exit */ + break; + macp->DriverRxFrmCnt ++; +#else //end of fMERGE_RX_FRAME + + if (list_empty(&(macp->active_rx_list))) { + printk(KERN_ERR "zd1205: list_empty\n"); + break; + } + + rmb(); + + rx_struct = list_entry(macp->active_rx_list.next, + struct rx_list_elem, list_elem); + + ZD1211DEBUG(4, "zd1211: rx_struct = %x\n", (u32)rx_struct); + skb = rx_struct->skb; + rfd = RFD_POINTER(skb, macp); /* locate RFD within skb */ + + // sync only the RFD header +#ifndef HOST_IF_USB + + pci_dma_sync_single(macp->pdev, rx_struct->dma_addr, + macp->rfd_size+PLCP_HEADER+WLAN_HEADER, PCI_DMA_FROMDEVICE); +#endif + + rfd_status = SKB_RFD_STATUS(rx_struct->skb, macp); /* get RFD's status */ + + ZD1211DEBUG(4, "zd1211: rfd_status = %x\n", rfd_status); + if (rfd_status != __constant_cpu_to_le32(RFD_STATUS_COMPLETE)) /* does not contains data yet - exit */ + break; + +#ifdef HOST_IF_USB + + if (RunOnce) + break; + RunOnce = 1; +#endif + + macp->DriverRxFrmCnt ++; + /* to allow manipulation with current skb we need to unlink it */ + list_del(&(rx_struct->list_elem)); + +#ifdef HOST_IF_USB + + zd1211_submit_rx_urb(macp); +#endif + +#endif //end of !fMERGE_RX_FRAME + + bSwCheckMIC=0; + + data_sz = (u16)(le32_to_cpu(rfd->ActualCount) & 0x3fff); + data_sz -= macp->rxOffset; + ZD1211DEBUG(4, "zd1211: data_sz = %x\n", data_sz); +#if 0 + //for debug only + if (macp->bPSMSupported) + zd1205_dump_data("RxBuffer", (u8 *)rfd->RxBuffer, data_sz); + + //zd1205_add_skb_to_end(macp, rx_struct); + //continue; +#endif + + wla_hdr = (plcp_wla_Header_t *)&rfd->RxBuffer[macp->rxOffset]; + pHdr = (u8 *)wla_hdr + PLCP_HEADER; + + /* + u8 *mb = hdrLen+ pHdr; + if(mb[0] == 0xf0 && mb[1] == 0xf0) + printk("Get NETBIOS\n"); + */ + + if (SubFrameType(wla_hdr) != BEACON) { + macp->bFrmRxed1 = 1; + } + + /* ath_desc: add monitor mode */ + BaseFrmType = BaseFrameType(wla_hdr); + + if ((BaseFrmType == DATA) || (BaseFrmType == MANAGEMENT)) { //Data or Management Frames + /* do not free & unmap badly recieved packet. + * move it to the end of skb list for reuse */ + +#ifndef HOST_IF_USB + //sync for access correctly + pci_dma_sync_single(macp->pdev, rx_struct->dma_addr, + data_sz + macp->rfd_size, PCI_DMA_FROMDEVICE); +#endif + + if (zd1205_validate_frame(macp, rfd) == false) { + //int i; + //int frame_len=(le32_to_cpu(rfd->ActualCount)&0x3fff)-macp->rxOffset; + ZD1211DEBUG(4, "zd1211: invalid frame\n"); + //plcp_wla_Header_t *wla_hdrb; + //printk("zd1211: invalid frame\n"); + //printk("\nAddr1: "); + //for(i=0;i<6;i++) + // printk("%02x ", wla_hdr->Address1[i]); + //printk("\nAddr2: "); + //for(i=0;i<6;i++) + // printk("%02x ", wla_hdr->Address2[i]); + //printk("\nAddr3: "); + //for(i=0;i<6;i++) + // printk("%02x ", wla_hdr->Address3[i]); + //printk("\nDuration:%d",*(u16 *)wla_hdr->Duration); + //printk("\nFrmCtl:%d",*(u16 *)wla_hdr->FrameCtrl); + //printk("\nLength:%d\n",frame_len); + + + macp->invalid_frame_good_crc ++; + zd1205_add_skb_to_end(macp, rx_struct); + continue; + } + } + + if (!macp->sniffer_on && (BssType != IW_MODE_MONITOR)) { + if ((BaseFrmType == DATA) || (BaseFrmType == MANAGEMENT)) { + seq = getSeq(wla_hdr); + frag = getFrag(wla_hdr); + pTa = getTA(wla_hdr); + + if (!bGroup(wla_hdr)) { //unicast + if (memcmp(&wla_hdr->Address1[0], &macp->macAdr[0], 6) != 0) { + zd1205_add_skb_to_end(macp, rx_struct); + continue; + } else { //check dupicated frame + //if (BaseFrmType == DATA) + //zd1205_dump_data("RxBuffer", (u8 *)rfd->RxBuffer, data_sz); + + if ((bRetryBit(wla_hdr)) + && (zd1205_SearchTupleCache(macp, pTa, seq, frag))) { //dupicated + zd1205_UpdateTupleCache(macp, pTa, seq, frag); + zd1205_add_skb_to_end(macp, rx_struct); + macp->rxDupCnt ++; + continue; + } + zd1205_UpdateTupleCache(macp, pTa, seq, frag); + } + } else { //group address + // check if the address1 of the multicast frame is in the multicast list + if (wla_hdr->Address1[0] != 0xff) { + int tmpvalue = -1; + //zd1205_dump_data("address1", (u8 *)wla_hdr->Address1, 6); + + for(i=0; iMulticastAddr[0]; i++) { + tmpvalue = memcmp(&macp->MulticastAddr[6*i+1], wla_hdr->Address1, 6); + + if (tmpvalue == 0) + break; + } + + //If the address is not registerd multicast addr. + //and not if promisc || All multicast mode.Drop It. + if ((tmpvalue != 0) && + !(dev->flags & IFF_PROMISC) && + !(dev->flags & IFF_ALLMULTI)) { + + zd1205_add_skb_to_end(macp, rx_struct); + ZD1211DEBUG(1, " - address1 is not in the multicast list\n"); + continue; + } + } + + if (BaseFrameType(wla_hdr) == DATA) { + if (BssType == INFRASTRUCTURE_BSS) { + if (memcmp(&macp->BSSID[0], &wla_hdr->Address2[0], 6) != 0) { + //BSSID filter + zd1205_add_skb_to_end(macp, rx_struct); + continue; + } + } else if ((BssType == INDEPENDENT_BSS) || (BssType == PSEUDO_IBSS)) { + if (memcmp(&macp->BSSID[0], &wla_hdr->Address3[0], 6) != 0) { + //BSSID filter + zd1205_add_skb_to_end(macp, rx_struct); + continue; + } + } else { + zd1205_add_skb_to_end(macp, rx_struct); + continue; + } + } else { + ;//ZD1211DEBUG(3, "Group Mgt Frame\n"); + } + } + + hdrLen = WLAN_HEADER; + pBody = (u8 *)pHdr + WLAN_HEADER; + bodyLen = data_sz - PLCP_HEADER - WLAN_HEADER - EXTRA_INFO_LEN - CRC32_LEN; + + //frame with WEP + if (bWepBit(wla_hdr)) { + u16 RxIv16 = 0; + u32 RxIv32 = 0; + ZD1211DEBUG(4, "zd1205: wep frame\n"); + + pIv = pHdr + hdrLen; + pBody += IV_SIZE; + bodyLen = bodyLen - IV_SIZE - ICV_SIZE; + hdrLen += IV_SIZE; + rxDecryType = (macp->rxDecryType & 0x0f); + + switch(rxDecryType) { + case WEP64: + case WEP128: + case WEP256: + break; + + case TKIP: + bSwCheckMIC=1;// zd1211 always use sw-mic regardless of fragmentation. + bodyLen -= EXTEND_IV_LEN; + pBody += EXTEND_IV_LEN; + hdrLen += EXTEND_IV_LEN; +#if 0 // zd1211 does not have hw-mic feature. + + if (macp->rxDecryType & RX_MIC_ERROR_IND) { + printk("hw mic error!\n"); + if (dot11Obj.MicFailure) {//For hostapd + //dot11Obj.MicFailure(&wla_hdr->Address2[0]); + } + //SDMichaelFailureDetected((UCHAR*) &wla_hdr->Address2[0]);// For hostapd + // hostap_michael_mic_failure((zd1205_private_t *)g_dev->priv, (struct hostap_ieee80211_hdr *)pHdr, (int)pIv[3] & KEYID_MASK); // For Xsupplicant. + + } + +#endif + RxIv16 = ((u16)pIv[0] << 8) + pIv[2]; + RxIv32 = pIv[4] + ((u32)pIv[5] << 8) + ((u32)pIv[6] << 16) + ((u32)pIv[7] << 24); + // check iv sequence + break; + + case AES: + ZD1211DEBUG(2, "Got AES frame !!!\n"); + bodyLen -= (MIC_LENGTH); + pBody += EXTEND_IV_LEN; + hdrLen += EXTEND_IV_LEN; + break; + default: + break; + } + }//end of wep bit + if (BssType == AP_BSS) { + memcpy(EthHdr, &wla_hdr->Address3[0], 6); // copy DA + memcpy(&EthHdr[6], &wla_hdr->Address2[0], 6); // copy SA + } else if (BssType == INFRASTRUCTURE_BSS) { + memcpy(EthHdr, &wla_hdr->Address1[0], 6); // copy DA + memcpy(&EthHdr[6], &wla_hdr->Address3[0], 6); // copy SA + //If we got a broadcast frame with Add3 is ourself. Drop it. + // This kind of packet is from our broadcast reqest to AP . // And AP rebroadcast it . + if( bGroup(wla_hdr) && + memcmp(macp->macAdr,wla_hdr->Address3, 6) == 0) { + zd1205_add_skb_to_end(macp, rx_struct); + continue; + + } + + } else if ((BssType == INDEPENDENT_BSS) || (BssType == PSEUDO_IBSS)) { + memcpy(EthHdr, &wla_hdr->Address1[0], 6); // copy DA + memcpy(&EthHdr[6], &wla_hdr->Address2[0], 6); // copy SA + } + + /* ath_desc: send probe replies in AP mode */ + if ((BaseFrmType == DATA) || (BaseFrmType == MANAGEMENT && (SubFrameType(wla_hdr) == PROBE_REQ) && (BssType == AP_BSS))) { + bDataFrm = 1; + + if (isWDS(wla_hdr)) { + //ZD1211DEBUG(3, "***** WDS or group\n"); + zd1205_add_skb_to_end(macp, rx_struct); + continue; + } + if (frag == 0) { //No fragment or first fragment + if (!bMoreFrag(wla_hdr)) { //No more fragment + //ZD1211DEBUG(2, "***** No Frag\n"); + //if (rxDecryType == TKIP) + // bodyLen -= MIC_LENGTH; + goto defrag_ind; + } else { //First fragment + DFDEBUG("***** First Frag"); + macp->rxNeedFragCnt++; + i = zd1205_ArFree(macp); //Get a free one + + if (i < 0) { + zd1205_ArAge(macp, nowT()); + i = zd1205_ArFree(macp); + if (i < 0) { + DFDEBUG("***** ArFree fail"); + macp->DropFirstFragCnt++; + zd1205_add_skb_to_end(macp, rx_struct); + continue; + } + } + + zd1205_ArUpdate(macp, pTa, seq, frag, i); + pDefArray->mpdu[i].dataStart = pBody; + skb->len = bodyLen; + pDefArray->mpdu[i].buf = (void *)skb; //save skb + +#ifndef HOST_IF_USB + + pci_unmap_single(macp->pdev, rx_struct->dma_addr, + sizeof (zd1205_RFD_t), PCI_DMA_FROMDEVICE); +#endif + + list_add(&(rx_struct->list_elem), &(macp->rx_struct_pool)); + macp->skb_req++; /* incr number of requested skbs */ +#ifndef HOST_IF_USB + + zd1205_alloc_skbs(macp); /* and get them */ +#else + + tasklet_schedule(&macp->rx_buff_tasklet); +#endif + + rfd_cnt++; + zd1205_ArAge(macp, nowT()); + continue; + } + }//end of farg == 0 + else { //more frag + struct sk_buff *defrag_skb; + u8 *pStart; + + i = zd1205_ArSearch(macp, pTa, seq, frag); //Get exist one + if (i < 0) { + DFDEBUG("***** ArSearch fail"); + macp->ArSearchFailCnt++; + zd1205_ArAge(macp, nowT()); + zd1205_add_skb_to_end(macp, rx_struct); //discard this one + continue; + } + + defrag_skb = (struct sk_buff *)pDefArray->mpdu[i].buf; + pStart = (u8 *)pDefArray->mpdu[i].dataStart; + pDefArray->mpdu[i].fn = frag; + + memcpy((pStart+defrag_skb->len), pBody, bodyLen); //copy to reassamble buffer + defrag_skb->len += bodyLen; + + if (!bMoreFrag(wla_hdr)) { //Last fragment + DFDEBUG("***** Last Frag"); + zd1205_add_skb_to_end(macp, rx_struct); + pDefArray->mpdu[i].inUse = 0; + skb = defrag_skb; + skb->data = (u8 *)pDefArray->mpdu[i].dataStart; //point mac body + pBody = skb->data; + bodyLen = skb->len; + macp->rxCompFragCnt++; + //if (rxDecryType == TKIP) + // bSwCheckMIC = 1; + + //goto defrag_ind; //bug + goto defrag_comp; + } else { + DFDEBUG("***** More Frag"); + zd1205_ArAge(macp, nowT()); + zd1205_add_skb_to_end(macp, rx_struct); + continue; + } + } + }//end of data frame + else if (BaseFrameType(wla_hdr) == MANAGEMENT) { + if (SubFrameType(wla_hdr) == BEACON) { + if (BssType == AP_BSS) { + if (dot11Obj.ConfigFlag & PASSIVE_CHANNEL_SCAN_SET) { + zd1205_CollectBssInfo(macp, wla_hdr, pBody, bodyLen); + } +#if defined(OFDM) + if (pSetting->MacMode != PURE_B_MODE && pSetting->MacMode != PURE_A_MODE) { + if (!dot11Obj.ConfigFlag & ENABLE_PROTECTION_SET) { + if (zd1205_CheckOverlapBss(macp, wla_hdr, pBody, bodyLen)) { + // ebable protection mode + macp->bOLBC++; + if (!(dot11Obj.ConfigFlag & ENABLE_PROTECTION_SET) && (macp->bOLBC >= 3)) { +#ifdef HOST_IF_USB + defer_kevent(macp, KEVENT_EN_PROTECTION); +#else + + zd_EventNotify(EVENT_ENABLE_PROTECTION, 1, 0, 0); +#endif + } + } + } + } +#endif + zd1205_add_skb_to_end(macp, rx_struct); + continue; + } else { //STA mode + if (dot11Obj.ConfigFlag & ACTIVE_CHANNEL_SCAN_SET) //path through + goto defrag_ind; + else { + if (memcmp(&macp->BSSID[0], &wla_hdr->Address3[0], 6) == 0) { //BSSID filter + macp->bcnCnt++; + zd1205_CheckBeaconInfo(macp, wla_hdr, pBody, bodyLen); + if (macp->bPSMSupported) { + ZD1211DEBUG(0, "AP is alive due to Bcn Rcvd\n"); + } + macp->bAPAlive = 1; + } +#if 0 + else { + if ((pSetting->MacMode != PURE_B_MODE) && (BssType == INDEPENDENT_BSS)) { + if (!dot11Obj.ConfigFlag & ENABLE_PROTECTION_SET) { + if (zd1205_CheckOverlapBss(macp, wla_hdr, pBody, bodyLen)) { + // ebable protection mode +#ifdef HOST_IF_USB + + defer_kevent(macp, KEVENT_EN_PROTECTION); +#else + + zd_EventNotify(EVENT_ENABLE_PROTECTION, 1, 0, 0); +#endif + + } + } + } + } + +#endif + //discard Beacon + zd1205_add_skb_to_end(macp, rx_struct); /* discard Beacon frames */ + continue; + } + } + } else { + if (bGroup(wla_hdr)) { + if ((BssType != AP_BSS) || (BssType != INDEPENDENT_BSS)) { + zd1205_add_skb_to_end(macp, rx_struct); + continue; + } + } + } + + goto defrag_ind; + } //end of management frame + } else if (SubFrameType(wla_hdr) == PS_POLL) { + if (BssType==AP_BSS && memcmp(&wla_hdr->Address1[0], &macp->macAdr[0], 6) == 0) //Ps-Poll for me + zd_CmdProcess(CMD_PS_POLL, (void *)pHdr, 0); + zd1205_add_skb_to_end(macp, rx_struct); + continue; + } else { + zd1205_add_skb_to_end(macp, rx_struct); + continue; + } + }//end of not sniffer_on and not monitor mode + + +defrag_ind: + macp->rxCnt++; +#ifndef HOST_IF_USB + + pci_unmap_single(macp->pdev, rx_struct->dma_addr, + sizeof (zd1205_RFD_t), PCI_DMA_FROMDEVICE); + +#endif + + list_add(&(rx_struct->list_elem), &(macp->rx_struct_pool)); + /* end of dma access to rfd */ + macp->skb_req++; /* incr number of requested skbs */ +#ifndef HOST_IF_USB + + zd1205_alloc_skbs(macp); /* and get them */ + +#else + + tasklet_schedule(&macp->rx_buff_tasklet); +#endif + +defrag_comp: + macp->rxInfo.bSwCheckMIC = bSwCheckMIC; + + rfd_cnt++; + if ((!macp->sniffer_on) && (BssType != IW_MODE_MONITOR)) { + if (BaseFrmType == DATA) + macp->TotalRxDataFrmBytes += (hdrLen+bodyLen); + + macp->rxInfo.bDataFrm = BaseFrmType; + macp->rxInfo.SaIndex = SaIndex; + + if ((BssType == INFRASTRUCTURE_BSS) && (macp->bAssoc)) { + if (memcmp(&macp->BSSID[0], &wla_hdr->Address2[0], 6) == 0) { + + macp->bAPAlive = 1; + + if ((macp->bPSMSupported) && (macp->PwrState) && (!dot11Obj.bDeviceInSleep)) { + if (bMoreData(wla_hdr)) { + // More date in AP + zd_EventNotify(EVENT_MORE_DATA, 0, 0, 0); + } + } + } + } + + zd_ReceivePkt(pHdr, hdrLen, pBody, bodyLen, (void *)skb, EthHdr, &macp->rxInfo); + macp->bDataTrafficLight = 1; + } else { + skb->tail = skb->data = pHdr; + /* ath_desc: fix monitor mode frame length */ + skb_put(skb, data_sz - PLCP_HEADER - EXTRA_INFO_LEN - CRC32_LEN); + skb->mac.raw = skb->data; + skb->pkt_type = PACKET_OTHERHOST; + skb->protocol = __constant_htons(ETH_P_802_2); + skb->dev = dev; + skb->ip_summed = CHECKSUM_NONE; + memset(skb->cb, 0, sizeof(skb->cb)); + netif_rx(skb); + } + }/* end of rfd loop */ + +#ifdef HOST_IF_USB + #if !fMERGE_RX_FRAME + if (!RunOnce) + zd1211_submit_rx_urb(macp); +#endif + + if (dot11Obj.QueueFlag & TX_QUEUE_SET) { + macp->txQueSetCnt++; + //tasklet_schedule(&macp->zd1205_tx_tasklet); + zd_CleanupTxQ(); + } + +#else + /* restart the RU if it has stopped */ + zd1205_start_ru(macp); +#endif + + ZEXIT(4); + return rfd_cnt; +} + +/** + * zd1205_intr - interrupt handler + * @irq: the IRQ number + * @dev_inst: the net_device struct + * @regs: registers (unused) + * + * This routine is the ISR for the zd1205 board. It services + * the RX & TX queues & starts the RU if it has stopped due + * to no resources. + */ + +#ifndef HOST_IF_USB +void +zd1205_intr(int irq, void *dev_inst, struct pt_regs *regs) +{ + struct net_device *dev; + struct zd1205_private *macp; + void *regp; + u32 intr_status; + dev = dev_inst; + macp = dev->priv; + regp = macp->regp; + + intr_status = zd_readl(InterruptCtrl); + + if (!intr_status) + + return; + + + /* disable intr before we ack & after identifying the intr as ours */ + zd1205_disable_int(); + + + /* the device is closed, don't continue or else bad things may happen. */ + + if (!netif_running(dev)) + { + zd1205_enable_int(); + return; + + } + + if (macp->driver_isolated) + { + goto exit; + + } + + + + { + /* Then, do Rx as soon as possible */ + if (intr_status & RX_COMPLETE) { + zd_writel((intr_status | RX_COMPLETE), InterruptCtrl); + macp->drv_stats.rx_intr_pkts += zd1205_rx_isr(macp); + } + + /* Then, recycle Tx chain/descriptors */ + if (intr_status & TX_COMPLETE) { + zd_writel((intr_status | TX_COMPLETE), InterruptCtrl); + zd1205_tx_isr(macp); + macp->TxStartTime = 0; + } + + + if (intr_status & RETRY_FAIL) { + zd_writel((intr_status | RETRY_FAIL), InterruptCtrl); + zd1205_retry_failed(macp); + macp->TxStartTime = 0; + } + + + if (intr_status & CFG_NEXT_BCN) { + zd_writel((intr_status | CFG_NEXT_BCN), InterruptCtrl); + + if (macp->config_next_bcn_en) { + macp->bcnCnt++; + zd_EventNotify(EVENT_TBCN, 0, 0, 0); + + if (macp->cardSetting.BssType == INDEPENDENT_BSS) { + macp->bFrmRxed1 = 0; + } else if (macp->cardSetting.BssType == AP_BSS) { + if (macp->dtimCount == 0) + + macp->dtimCount = macp->cardSetting.DtimPeriod; + macp->dtimCount--; + } + } + + } + + + if (intr_status & DTIM_NOTIFY) { + zd_writel((intr_status | DTIM_NOTIFY), InterruptCtrl); + + if (macp->dtim_notify_en) { + macp->dtimCnt++; + zd1205_dtim_notify(macp); + } + } + + + if (intr_status & BUS_ABORT) { + if (!dot11Obj.bDeviceInSleep) + ZD1211DEBUG(0, "******Bus Abort!!!\n"); + zd_writel(0xff, InterruptCtrl); + //zd1205_sleep_reset(macp); + } + + + if (intr_status & WAKE_UP) { + //ZD1211DEBUG(1, "******WAKE_UP!!!\n"); + zd_writel((intr_status | WAKE_UP), InterruptCtrl); + + if (dot11Obj.bDeviceInSleep) { + //++ After wake up, we should ignore all interrupt except for Wakeup Interrupt. + // This is very important! + // If, we do not obey this, the following bug might occurs: + // + // -------------------------------------------------------------------> time + // ^ ^ ^ ^ ^ ^ + // | | | | | | + // Sleep | Process Process GetReturn | + // Wakeup WakeupInt RxComplete Packet RxComplet + + // & (ReStart (NotifyNdis (Rfd1) (due to + // RxComplete Rx(Rfd1)) Rfd1) Chain Rfd1 ReStartRx + // at last of in Process + // RfdList WakeupInt) + // This problem cause Rx-master stays in Idle + // state, and we did not restart it again! + zd_writel(0xff, InterruptCtrl); + zd1205_process_wakeup(macp); + + } + } + } + + if (macp->dtimCount == macp->cardSetting.DtimPeriod - 1) + { + if (dot11Obj.QueueFlag & AWAKE_QUEUE_SET) + tasklet_schedule(&macp->zd1205_ps_tasklet); + } + + if (dot11Obj.QueueFlag & MGT_QUEUE_SET) + tasklet_schedule(&macp->zd1205_tasklet); + + + if (dot11Obj.QueueFlag & TX_QUEUE_SET) + + tasklet_schedule(&macp->zd1205_tx_tasklet); + +exit: + + + zd1205_enable_int(); +} +#endif + +int +zd1205_open(struct net_device *dev) +{ + struct zd1205_private *macp = dev->priv; + int rc = 0; + + ZENTER(0); + + //This is used before previous up stat only,So we clear it. + clear_bit(CTX_FLAG_ESSID_WAS_SET, (void*)&macp->flags); + //read_lock(&(macp->isolate_lock)); + if (macp->driver_isolated) + { + rc = -EBUSY; + goto exit; + } + + //macp->bUSBDeveiceAttached = 1; + + if ((rc = zd1205_alloc_space(macp)) != 0) + { + rc = -ENOMEM; + goto exit; + } + + /* setup the tcb pool */ + if (!zd1205_alloc_tcb_pool(macp)) + { + printk(KERN_ERR "zd1205: failed to zd1205_alloc_tcb_pool\n"); + rc = -ENOMEM; + goto err_exit; + } + + zd1205_setup_tcb_pool(macp); + + if (!zd1205_alloc_rfd_pool(macp)) + { + printk(KERN_ERR "zd1205: failed to zd1205_alloc_rfd_pool\n"); + rc = -ENOMEM; + goto err_exit; + } + + + mod_timer(&(macp->watchdog_timer), jiffies + (1*HZ)); //1 sec + mod_timer(&(macp->tm_hking_id), jiffies + (1*HZ)/10); //100 ms + mod_timer(&(macp->tm_mgt_id), jiffies + (1*HZ)/50); //20 ms + +#ifndef HOST_IF_USB + + if ((rc = request_irq(dev->irq, &zd1205_intr, SA_SHIRQ, dev->name, dev)) != 0) + { + printk(KERN_ERR "zd1205: failed to request_irq\n"); + del_timer_sync(&macp->watchdog_timer); + del_timer_sync(&macp->tm_hking_id); + del_timer_sync(&macp->tm_mgt_id); + goto err_exit; + } + + zd1205_start_ru(macp); +#endif + + if (macp->cardSetting.BssType == AP_BSS) + { + netif_start_queue(dev); + zd_writel(0x1, LED1); + } + + zd_UpdateCardSetting(&macp->cardSetting); + zd_CmdProcess(CMD_ENABLE, &dot11Obj, 0); //AP start send beacon , STA start scan + zd1205_enable_int(); + + if (zd1211_submit_rx_urb(macp)) + goto err_exit; + + set_bit(ZD1211_RUNNING, &macp->flags); + + if(CustomMACSet) + { + zd_writel(cpu_to_le32(*(u32 *)macp->macAdr), MACAddr_P1); + zd_writel(cpu_to_le32(*(u32 *)(macp->macAdr+4)), MACAddr_P2); + } + + goto exit; + +err_exit: + zd1205_clear_pools(macp); + +exit: + //read_unlock(&(macp->isolate_lock)); + ZEXIT(0); + + return rc; +} +void zd1205_monitor_mode_enable(struct zd1205_private *macp) +{ + struct net_device *dev = macp->device; + + if (netif_running(dev)) + netif_stop_queue(dev); + + dev->type = ARPHRD_IEEE80211; + zd_writel(0x01, SnifferOn); + zd_writel(0xffffffff, Rx_Filter); + zd_writel(0x08, EncryptionType); + macp->intrMask = RX_COMPLETE_EN; +} + +void zd1205_monitor_mode_disable(struct zd1205_private *macp) +{ + struct net_device *dev = macp->device; + + dev->type = ARPHRD_ETHER; + zd_writel(0x00, SnifferOn); + //zd_writel(0x00000000, Rx_Filter); /* will be set for the new mode */ + zd_writel(NO_WEP, EncryptionType); + macp->intrMask = ZD1205_INT_MASK; + + if (!netif_running(dev)) + netif_start_queue(dev); +} + +void zd1205_init_txq(struct zd1205_private *macp, zd1205_SwTcbQ_t *Q) +{ + unsigned long flags; + + spin_lock_irqsave(&macp->q_lock, flags); + Q->first = NULL; + Q->last = NULL; + + + + Q->count = 0; + spin_unlock_irqrestore(&macp->q_lock, flags); + +} + + + +void zd1205_qlast_txq(struct zd1205_private *macp, zd1205_SwTcbQ_t *Q, zd1205_SwTcb_t *signal) +{ + unsigned long flags; + spin_lock_irqsave(&macp->q_lock, flags); + + signal->next = NULL; + if (Q->last == NULL) + { + Q->first = signal; + Q->last = signal; + } else + { + Q->last->next = signal; + + + + Q->last = signal; + } + + Q->count++; + spin_unlock_irqrestore(&macp->q_lock, flags); +} + + + + + +zd1205_SwTcb_t * zd1205_first_txq(struct zd1205_private *macp, zd1205_SwTcbQ_t *Q) +{ + zd1205_SwTcb_t *p = NULL; + + unsigned long flags; + + spin_lock_irqsave(&macp->q_lock, flags); + + if (Q->first != NULL) + { + Q->count--; + p = Q->first; + Q->first = (Q->first)->next; + if (Q->first == NULL) + Q->last = NULL; + + } + + + + spin_unlock_irqrestore(&macp->q_lock, flags); + + return p; + +} + + +static void +zd1205_setup_tcb_pool(struct zd1205_private *macp) +{ + + /* TCB local variables */ + zd1205_SwTcb_t *sw_tcb; /* cached TCB list logical pointers */ + + zd1205_HwTCB_t *hw_tcb; /* uncached TCB list logical pointers */ + unsigned long HwTcbPhys; /* uncached TCB list physical pointer */ + u32 TcbCount; + + /* TBD local variables */ + zd1205_TBD_t *pHwTbd; /* uncached TBD list pointers */ + unsigned long HwTbdPhys; /* uncached TBD list physical pointer */ + zd1205_Ctrl_Set_t *pHwCtrlPtr; + unsigned long HwCtrlPhys; + zd1205_Header_t *pHwHeaderPtr; + unsigned long HwHeaderPhys; + + macp->freeTxQ = &free_txq_buf; + macp->activeTxQ = &active_txq_buf; + zd1205_init_txq(macp, macp->freeTxQ); + zd1205_init_txq(macp, macp->activeTxQ); + +#if 0 + /* print some basic sizing debug info */ + printk(KERN_DEBUG "sizeof(SwTcb) = %04x\n", sizeof(zd1205_SwTcb_t)); + printk(KERN_DEBUG "sizeof(HwTcb) = %04x\n", sizeof(zd1205_HwTCB_t)); + + printk(KERN_DEBUG "sizeof(HwTbd)= %04x\n", sizeof(zd1205_TBD_t)); + printk(KERN_DEBUG "sizeof(CTRL_STRUC) = %04x\n", sizeof(zd1205_Ctrl_Set_t)); + printk(KERN_DEBUG "sizeof(HEADER_STRUC) = %04x\n", sizeof(zd1205_Header_t)); + printk(KERN_DEBUG "macp->numTcb = %04x\n", macp->numTcb); + printk(KERN_DEBUG "macp->numTbdPerTcb = %04x\n", macp->numTbdPerTcb); + printk(KERN_DEBUG "macp->numTbd = %04x\n", macp->numTbd); +#endif + + + /* Setup the initial pointers to the HW and SW TCB data space */ + sw_tcb = (zd1205_SwTcb_t *) macp->txCached; + hw_tcb = (zd1205_HwTCB_t *) macp->txUnCached; + + + +#ifndef HOST_IF_USB + + HwTcbPhys = macp->txUnCachedPhys; +#else + + HwTcbPhys = (unsigned long)macp->txUnCached; +#endif + + /* Setup the initial pointers to the TBD data space. + TBDs are located immediately following the TCBs */ + pHwTbd = (zd1205_TBD_t *) &hw_tcb[macp->numTcb]; + HwTbdPhys = HwTcbPhys + (sizeof(zd1205_HwTCB_t) * macp->numTcb); + + /* Setup yhe initial pointers to the Control Setting space + CTRLs are located immediately following the TBDs */ + pHwCtrlPtr = (zd1205_Ctrl_Set_t *) &pHwTbd[macp->numTbd]; + HwCtrlPhys = HwTbdPhys + (sizeof(zd1205_TBD_t) * macp->numTbd); + + /* Setup the initial pointers to the Mac Header space + MACHEADERs are located immediately following the CTRLs */ + pHwHeaderPtr = (zd1205_Header_t *) &pHwCtrlPtr[macp->numTcb]; + HwHeaderPhys = HwCtrlPhys + (sizeof(zd1205_Ctrl_Set_t) * macp->numTcb); + + + + /* Go through and set up each TCB */ + for (TcbCount = 0; TcbCount < macp->numTcb; + + + TcbCount++, sw_tcb++, hw_tcb++, HwTcbPhys += sizeof(zd1205_HwTCB_t), + pHwTbd = (zd1205_TBD_t *) (((u8 *) pHwTbd) + ((sizeof(zd1205_TBD_t) * macp->numTbdPerTcb))), + HwTbdPhys += (sizeof(zd1205_TBD_t) * macp->numTbdPerTcb), + pHwCtrlPtr++, HwCtrlPhys += sizeof(zd1205_Ctrl_Set_t), + pHwHeaderPtr++, HwHeaderPhys += sizeof(zd1205_Header_t)) + { + /* point the cached TCB to the logical address of the uncached one */ + sw_tcb->TcbCount = TcbCount; + + sw_tcb->skb = 0; + sw_tcb->pTcb = hw_tcb; + sw_tcb->TcbPhys = HwTcbPhys; + sw_tcb->pFirstTbd = pHwTbd; + sw_tcb->FirstTbdPhys = HwTbdPhys; + sw_tcb->pHwCtrlPtr = pHwCtrlPtr; + sw_tcb->HwCtrlPhys = HwCtrlPhys; + +#if 0 + + // Pre-init control setting + { + zd1205_Ctrl_Set_t *ctrl_set = sw_tcb->pHwCtrlPtr; + + + ctrl_set->CtrlSetting[3] = (u8)(sw_tcb->TcbPhys); + + ctrl_set->CtrlSetting[4] = (u8)(sw_tcb->TcbPhys >> 8); + ctrl_set->CtrlSetting[5] = (u8)(sw_tcb->TcbPhys >> 16); + ctrl_set->CtrlSetting[6] = (u8)(sw_tcb->TcbPhys >> 24); + ctrl_set->CtrlSetting[18] = 0; //default for fragment + ctrl_set->CtrlSetting[19] = 0; + ctrl_set->CtrlSetting[23] = 0; //default for fragment + + ctrl_set->CtrlSetting[24] = 0; + ctrl_set->CtrlSetting[26] = 0; + ctrl_set->CtrlSetting[27] = 0; + } +#endif + + sw_tcb->pHwHeaderPtr = pHwHeaderPtr; + sw_tcb->HwHeaderPhys = HwHeaderPhys; + + + + /* initialize the uncached TCB contents -- status is zeroed */ + hw_tcb->CbStatus = 0xffffffff; + hw_tcb->CbCommand = cpu_to_le32(CB_S_BIT); +#ifndef __LP64__ + hw_tcb->TxCbFirstTbdAddrLowPart = cpu_to_le32(HwTbdPhys); + hw_tcb->TxCbFirstTbdAddrHighPart = 0; +#else + hw_tcb->TxCbFirstTbdAddr = cpu_to_le64(HwTbdPhys); + +#endif + hw_tcb->TxCbTbdNumber = 0; + if (TcbCount == (macp->numTcb -1)) { + /* Turn around TBD */ + +#ifndef __LP64__ +#ifndef HOST_IF_USB + hw_tcb->NextCbPhyAddrLowPart = cpu_to_le32(macp->txUnCachedPhys); +#else + + + hw_tcb->NextCbPhyAddrLowPart = cpu_to_le32((u32)macp->txUnCached); +#endif + + hw_tcb->NextCbPhyAddrHighPart = 0; +#else +#ifndef HOST_IF_USB + hw_tcb->NextCbPhyAddr = cpu_to_le64(macp->txUnCachedPhys); +#else + + hw_tcb->NextCbPhyAddr = cpu_to_le64(macp->txUnCached); +#endif + +#endif + } else { +#ifndef __LP64__ + hw_tcb->NextCbPhyAddrLowPart = cpu_to_le32(HwTcbPhys + sizeof(zd1205_HwTCB_t)); + hw_tcb->NextCbPhyAddrHighPart = 0; +#else + hw_tcb->NextCbPhyAddr = cpu_to_le64(HwTcbPhys + sizeof(zd1205_HwTCB_t)); +#endif + } + + + + /* add this TCB to the free list */ + zd1205_qlast_txq(macp, macp->freeTxQ, sw_tcb); + } + + return; +} + + + + +/** + * zd1205_get_stats - get driver statistics + + * @dev: adapter's net_device struct + * + * This routine is called when the OS wants the adapter's stats returned. + * It returns the address of the net_device_stats stucture for the device. + * If the statistics are currently being updated, then they might be incorrect + * for a short while. However, since this cannot actually cause damage, no + * locking is used. + */ + +struct net_device_stats * + zd1205_get_stats(struct net_device *dev) +{ + struct zd1205_private *macp = dev->priv; + + macp->drv_stats.net_stats.tx_errors = + macp->drv_stats.net_stats.tx_carrier_errors + + macp->drv_stats.net_stats.tx_aborted_errors; + + /* ath_desc: more precise statistics */ + macp->drv_stats.net_stats.rx_length_errors = + macp->ErrZeroLenFrmCnt + + macp->ErrLongFrmCnt + + macp->ErrShortFrmCnt; + + macp->drv_stats.net_stats.rx_frame_errors = + macp->ErrToHostFrmCnt; + + macp->drv_stats.net_stats.rx_crc_errors = + macp->hwCRC32Cnt + + macp->hwCRC16Cnt; + + macp->drv_stats.net_stats.rx_over_errors = + macp->hwRxFIFOOverrun; + + macp->drv_stats.net_stats.rx_fifo_errors = + macp->hwUnderrunCnt; + + macp->drv_stats.net_stats.rx_errors = + macp->drv_stats.net_stats.rx_crc_errors + + macp->drv_stats.net_stats.rx_frame_errors + + macp->drv_stats.net_stats.rx_over_errors + + macp->drv_stats.net_stats.rx_fifo_errors + + macp->drv_stats.net_stats.rx_length_errors + + macp->drv_stats.rcv_cdt_frames; + + + return &(macp->drv_stats.net_stats); +} + +/* ath_desc: added iw_get_stats */ +/** + * zd1205wext_iw_get_stats - get driver wireless statistics + * @dev: adapter's net_device struct + * + * This routine is called when the OS wants the adapter's wireless + * stats returned. It returns the address of the iw_statistics + * stucture for the device. If the statistics are currently being + * updated, then they might be incorrect for a short while. However, + * since this cannot actually cause damage, no locking is used. + */ +#if WIRELESS_EXT > 12 +struct iw_statistics *zd1205wext_iw_get_stats(struct net_device *dev) +{ + struct zd1205_private *macp = dev->priv; + struct iw_statistics *iw_stats = &macp->drv_stats.iw_stats; + + iw_stats->qual.noise = 0; + iw_stats->qual.qual = macp->rxSignalQuality; + iw_stats->qual.level = (macp->rxSignalStrength*100)/65; + iw_stats->qual.updated = 7; + + iw_stats->discard.nwid = 0; + iw_stats->discard.code = macp->hwDecrypErr_UNI + macp->hwDecrypErr_Mul; + iw_stats->discard.fragment = macp->ErrToHostFrmCnt; + iw_stats->discard.retries = macp->retryFailCnt; + iw_stats->discard.misc = macp->DropFirstFragCnt + macp->ErrLongFrmCnt + + macp->ErrShortFrmCnt + macp->ErrZeroLenFrmCnt; + + iw_stats->miss.beacon = 0; + + return iw_stats; +} +#endif + +/** + * zd1205_set_mac - set the MAC address + * @dev: adapter's net_device struct + + * @addr: the new address + * + * This routine sets the ethernet address of the board + + + * Returns: + * 0 - if successful + * -1 - otherwise + */ +int + +zd1205_set_mac(struct net_device *dev, void *addr) +{ + struct zd1205_private *macp; + + int rc = -1; + struct sockaddr *p_sockaddr = (struct sockaddr *) addr; + + + macp = dev->priv; + read_lock(&(macp->isolate_lock)); + + if (macp->driver_isolated) + { + goto exit; + } + + { + memcpy(&(dev->dev_addr[0]), p_sockaddr->sa_data, ETH_ALEN); + zd_writel(cpu_to_le32(*(u32 *)p_sockaddr->sa_data), MACAddr_P1); + zd_writel(cpu_to_le32(*(u32 *)(p_sockaddr->sa_data+4)), MACAddr_P2); + memcpy(macp->macAdr,p_sockaddr->sa_data,ETH_ALEN); + memcpy(CustomMAC,p_sockaddr->sa_data,ETH_ALEN); + memcpy(macp->cardSetting.MacAddr,macp->macAdr,ETH_ALEN); + + if (macp->cardSetting.BssType == AP_BSS) { + // Set bssid = MacAddress + memcpy(macp->BSSID,macp->macAdr,ETH_ALEN); + + zd_writel(cpu_to_le32(*(u32 *)&macp->macAdr[0]), BSSID_P1); + zd_writel(cpu_to_le32(*(u32 *)&macp->macAdr[4]), BSSID_P2); + } else { + zd_writel(STA_RX_FILTER, ZD_Rx_Filter); + } + CustomMACSet = TRUE; + + rc = 0; + } + +exit: + read_unlock(&(macp->isolate_lock)); + return rc; + +} + + + +void +zd1205_isolate_driver(struct zd1205_private *macp) +{ + write_lock_irq(&(macp->isolate_lock)); + macp->driver_isolated = true; + write_unlock_irq(&(macp->isolate_lock)); + del_timer_sync(&macp->watchdog_timer); + del_timer_sync(&macp->tm_hking_id); + del_timer_sync(&macp->tm_mgt_id); + del_timer_sync(&macp->tm_scan_id); + + + if (netif_running(macp->device)) + { + netif_carrier_off(macp->device); + netif_stop_queue(macp->device); + } +} + + +int +zd1205_change_mtu(struct net_device *dev, int new_mtu) + +{ + if ((new_mtu < 68) || (new_mtu > (ETH_DATA_LEN + VLAN_SIZE))) + return -EINVAL; + + dev->mtu = new_mtu; + + return 0; +} + + +int +zd1205_close(struct net_device *dev) +{ + struct zd1205_private *macp = dev->priv; + + ZENTER(0); + + netif_carrier_off(macp->device); + + +#if 0 + + while (dot11Obj.bDeviceInSleep) + { + wait_ms(10); + } +#endif + + zd1205_isolate_driver(macp); + + macp->intrMask = 0; + macp->bAssoc = 0; + mCounterMeasureState = 0; + macp->bGkInstalled = 0; + mGkInstalled=0; + macp->cardSetting.DynKeyMode=0; + mPrivacyInvoked=0; + dot11Obj.MIC_CNT=FALSE; + + //zd_writel(0x01, Pre_TBTT); + + +#ifndef HOST_IF_USB + + zd_writel(0x0, BCNInterval); + zd_writel(0x0, LED1); + zd_writel(0x0, LED2); + free_irq(dev->irq, dev); + zd1205_device_reset(macp); +#else + + if (!test_bit(ZD1211_UNPLUG, &macp->flags)) + { + iLED_OFF(macp, macp->LinkLEDn); + zd_writel(0x0, FW_LINK_STATUS); + //zd1211_disable_net_traffic(macp); + //zd1205_device_reset(macp); + } + + clear_bit(ZD1211_RUNNING, &macp->flags); + + //tasklet_kill(&macp->zd1211_rx_tasklet); + //tasklet_kill(&macp->zd1211_tx_tasklet); + //tasklet_kill(&macp->rx_buff_tasklet); + + + zd1211_unlink_all_urbs(macp); +#endif + + + + zd1205_clear_pools(macp); + macp->bPSMSupported = 0; + dot11Obj.bDeviceInSleep = 0; + + + //set FdescBuf unused + re_initFdescBuf(); + + /* set the isolate flag to false, so zd1205_open can be called */ + macp->driver_isolated = false; + ZEXIT(0); + return 0; } -void zd1205_init_txq(struct zd1205_private *macp, zd1205_SwTcbQ_t *Q) + + + +u8 CalNumOfFrag(struct zd1205_private *macp, u32 length) + +{ + + u8 FragNum = 1; + u32 pdusize; + + + + pdusize = macp->cardSetting.FragThreshold; + + if ((length + CRC32_LEN) > pdusize) + { //Need fragment + pdusize -= WLAN_HEADER + CRC32_LEN; + + FragNum = ((length - WLAN_HEADER)+ (pdusize-1)) / pdusize; + if (FragNum == 0) + FragNum = 1; + } + + return FragNum; +} + +int +zd1205_xmit_frame(struct sk_buff *skb, struct net_device *dev) +{ + int rc = 0; + int notify_stop = false; + struct zd1205_private *macp = dev->priv; + + u16 TypeLen; + u8 *pHdr = skb->data; + + u32 bodyLen; + u32 TotalLen; + u8 *pBody; + u8 NumOfFrag = 1; + u8 EtherHdr[12]; + u8 bEapol = 0; + u8 *pMac = NULL; + Hash_t *pHash = NULL; + u8 bGroupAddr = 0; + card_Setting_t *pSetting = &macp->cardSetting; + u8 bEthType2 = 0; + u8 *pSkbData = skb->data; + u32 SkbLength = skb->len; + BOOLEAN bHashSearchResult; + ZENTER(2); + + //zd1205_dump_data("tx packet", (u8 *)skb->data, skb->len); + if (pHdr[0] & BIT_0) + bGroupAddr = 1; + + read_lock(&(macp->isolate_lock)); + if (macp->driver_isolated) + { + rc = -EBUSY; + goto exit2; + } + + if (!spin_trylock(&macp->bd_non_tx_lock)) + { + notify_stop = true; + rc = 1; + goto exit2; + } + + TypeLen = (((u16) pHdr[12]) << 8) + (pHdr[13]); + if ((pSetting->BssType == INFRASTRUCTURE_BSS) || (pSetting->BssType == INDEPENDENT_BSS)) + { + if (dot11Obj.bDeviceInSleep) { + //queue to upper layer + notify_stop = true; + rc = 1; + //dev_kfree_skb_irq(skb); + //rc = 0; + goto exit1; + } + + if (pSetting->BssType == INFRASTRUCTURE_BSS) + pMac = macp->BSSID; + else if (pSetting->BssType == INDEPENDENT_BSS) + pMac = pHdr; + + bHashSearchResult = zd_QueryStaTable(pMac, (void**)&pHash); + if ((!macp->bAssoc) || ((!bHashSearchResult) && (!bGroupAddr))) { + //Not Associated to AP + //printk(KERN_ERR "*** Not associated to AP\n"); + dev_kfree_skb_irq(skb); + rc = 0; + goto exit1; + } + if (macp->cardSetting.WPASupport==1 && pSetting->BssType==INFRASTRUCTURE_BSS) { + if (TypeLen != 0x888e && pHash->pkInstalled==0) { + printk(KERN_DEBUG "*** Block Non-EAPol packet before key installed:%04x\n", TypeLen); + dev_kfree_skb_irq(skb); + rc=0; + goto exit1; + } + } + + } else if (pSetting->BssType == AP_BSS) + { + if (!bGroupAddr) { //da is unicast + if (!zd_QueryStaTable(pHdr,(void**)&pHash)) { + dev_kfree_skb_irq(skb); + rc = 0; + goto exit1; + } + } else { + if (mCurrConnUser==0 || ((pSetting->DynKeyMode) && (mGkInstalled == 0))) { + dev_kfree_skb_irq(skb); + rc = 0; + goto exit1; + } + } + } + + //TypeLen = (((u16) pHdr[12]) << 8) + (pHdr[13]); + + //WPADEBUG("TypeLen: 0x%04x\n", TypeLen); + + if (TypeLen > 1500) + { /* Ethernet 2 frame */ + bEthType2 = 1; + bodyLen = skb->len - 6; + } else + { + bEthType2 = 0; + bodyLen = TypeLen; + } + + TotalLen = bodyLen + WLAN_HEADER; //Mac Header(24) + NumOfFrag = CalNumOfFrag(macp, TotalLen); + + if (macp->freeTxQ->count < (NumOfFrag+1)) + { + //printk(KERN_DEBUG "********Queue to upper layer************\n"); + macp->txQueToUpCnt++; + notify_stop = true; + rc = 1; + goto exit1; + } + + memcpy(&EtherHdr[0], pHdr, 12); //save ethernet header + + + if (bEthType2) + { /* Ethernet 2 frame */ + /* DA(6) SA(6) Type(2) Data....(reserved array) */ + if (TypeLen == IPX) { + memcpy(pHdr+6, ZD_SNAP_BRIDGE_TUNNEL, sizeof(ZD_SNAP_BRIDGE_TUNNEL)); + } else if(TypeLen == APPLE_TALK) { + memcpy(pHdr+6, zd_Snap_Apple_Type, sizeof(zd_Snap_Apple_Type)); + } + else + memcpy(pHdr+6, (void *)ZD_SNAP_HEADER, sizeof(ZD_SNAP_HEADER)); + + if (TypeLen == EAPOL ) { + WPADEBUG("Transmit EAPOL packet\n"); + bEapol = 1; + } + + skb->len -= 6; /* Minus DA, SA; Plus 802.2LLC Header */ + bodyLen = skb->len; + skb->data += 6; + } else + { /* 802.3 frame */ + /* DA(6) SA(6) Len(2) 802.2_LLC(3) 802.2_SNAP(3+2) Data.... */ + skb->len -= 14; + bodyLen = TypeLen; + skb->data += 14; + } + + pBody = skb->data; + +#if 0 + //force release for debug only + dev_kfree_skb_irq(skb); + rc = 0; + goto exit1; +#endif + + if (!zd_SendPkt(EtherHdr, pBody, bodyLen, (void *)skb, bEapol, pHash)) + { + notify_stop = true; + rc = 1; + //restore skb data structure + skb->data = pSkbData; + skb->len = SkbLength; + goto exit1; + } + + macp->drv_stats.net_stats.tx_bytes += skb->len; + macp->drv_stats.net_stats.tx_packets++; + +exit1: + spin_unlock(&macp->bd_non_tx_lock); + +exit2: + read_unlock(&(macp->isolate_lock)); + + if (notify_stop) + { + //netif_carrier_off(dev); + netif_stop_queue(dev); + } + + ZEXIT(2); + return rc; +} + +void zd1205_sw_release(void) +{ + zd_EventNotify(EVENT_BUF_RELEASE, 0, 0, 0); +} + +void zd1205_sleep_reset(struct zd1205_private *macp) +{ + u32 tmpvalue; + u32 ul_pretbtt; + u32 ul_BcnItvl; + u64 TSFTimer; + u32 ul_Rem; + + +#ifndef HOST_IF_USB + + unsigned long flags; +#endif + + //return; //for debug only, test SW + + ZD1211DEBUG(1, "Prepare to enter sleep mode\n"); + netif_stop_queue(macp->device); + netif_carrier_off(macp->device); + //HW_RadioOnOff(&dot11Obj, 0); + +#if 1 + + ul_BcnItvl = zd_readl(ZD_BCNInterval) & 0xFFFF; + HW_UpdatePreTBTT(&dot11Obj, ul_BcnItvl-BEFORE_BEACON); + ul_pretbtt = zd_readl(ZD_Pre_TBTT); +#else + + ul_BcnItvl = dot11Obj.BeaconInterval; + if (ul_BcnItvl < (BEFORE_BEACON)) + ul_BcnItvl=100; + ul_pretbtt = ul_BcnItvl-BEFORE_BEACON;//Adjust Pre-TBTT occur before TBTT */ +#endif + //ZD1211DEBUG(1, "Pre_TBTT = %u\n", ul_pretbtt); + + + while(1) + { + // Make sure that the time issued sleep-command is not too close to Pre_TBTT. + // Also make sure that sleep-command is out of Beacon-Tx duration. + tmpvalue = zd_readl(ZD_TSF_LowPart); + TSFTimer = tmpvalue; + tmpvalue = zd_readl(ZD_TSF_HighPart); + TSFTimer += (((u64)tmpvalue) << 32); + TSFTimer = TSFTimer >> 10; // in unit of TU + //printk("TSF(TU) %d \n", TSFTimer); + //printk("BeaconInterval = %d\n", ul_BcnItvl); + //printk("TSF mod BeaconInterval = %d\n", (TSFTimer % ul_BcnItvl)); + + ul_Rem=do_div(TSFTimer, ul_BcnItvl); + if ((ul_pretbtt > ul_Rem) || (macp->bSurpriseRemoved)) { + //++ Ensure the following is an atomic operation. + ZD1211DEBUG(1, "Rem=%u\n",ul_Rem); + if ( (((ul_pretbtt - ul_Rem) >= 3) && (ul_Rem > BEACON_TIME) && (!atomic_read(&macp->DoNotSleep))) || (macp->bSurpriseRemoved)) { + down(&macp->ps_sem); // for zd1211 +#if 0 + + tmpvalue = zd_readl(ZD_PS_Ctrl); //Because readout value is always zero in zd1211, no need perform read operation before modifying. + zd_writel((tmpvalue | BIT_0), ZD_PS_Ctrl); +#else + + zd_writel(BIT_28 | BIT_0, ZD_PS_Ctrl); // Keep Power on of 44MHz Osc while in sleep. +#endif + + dot11Obj.bDeviceInSleep = 1; + up(&macp->ps_sem); + macp->sleepCnt++; + break; + } + } + mdelay(1); + } + + macp->TxStartTime = 0; + +} + + +void update_beacon_interval(struct zd1205_private *macp, int val) +{ + int BcnInterval; + int ul_PreTBTT; + int tmpvalue; + + BcnInterval = val; + + + /* One thing must be sure that BcnInterval > Pre_TBTT > ATIMWnd >= 0 */ + if(BcnInterval < 5) + { + BcnInterval = 5; + } + + + ul_PreTBTT = zd_readl(Pre_TBTT); + + if(ul_PreTBTT < 4) + { + ul_PreTBTT = 4; + } + + + if(ul_PreTBTT >= BcnInterval) + { + ul_PreTBTT = BcnInterval - 1; + } + + zd_writel(ul_PreTBTT, Pre_TBTT); + + tmpvalue = zd_readl(BCNInterval); + tmpvalue &= ~0xffffffff; + tmpvalue |= BcnInterval; + zd_writel(tmpvalue, BCNInterval); +} + + + +void zd1205_device_reset(struct zd1205_private *macp) +{ + u32 tmp_value; + + + /* Update the value of Beacon Interval and Pre TBTT */ + update_beacon_interval(macp, 0x2); + zd_writel(0x01, Pre_TBTT); + + tmp_value = zd_readl(PS_Ctrl); + zd_writel(tmp_value | BIT_0, PS_Ctrl); + dot11Obj.bDeviceInSleep = 1; + /* Sleep for 5 msec */ + wait_ms(5); + +} + + + +void zd1205_recycle_tx(struct zd1205_private *macp) + +{ + zd1205_SwTcb_t *sw_tcb; + + +#if 0 + + while (macp->activeTxQ->count) + { + sw_tcb = zd1205_first_txq(macp, macp->activeTxQ); + zd1205_transmit_cleanup(macp, sw_tcb); + macp->txCmpCnt++; + if (!sw_tcb->LastFrag) + continue; + + zd_EventNotify(EVENT_TX_COMPLETE, ZD_RETRY_FAILED, (U32)sw_tcb->MsgID, sw_tcb->aid); + } +#else + if (macp->activeTxQ->count) + { + sw_tcb = macp->activeTxQ->first; + zd1205_start_download(sw_tcb->TcbPhys); + } +#endif +} + +void zd1205_process_wakeup(struct zd1205_private *macp) +{ + card_Setting_t *pSetting = &macp->cardSetting; + +#ifndef HOST_IF_USB + + u32 tmpvalue; + u64 TSFTimer; +#endif + + ZENTER(1); + + if (pSetting->BssType == AP_BSS) + { + HW_EnableBeacon(&dot11Obj, pSetting->BeaconInterval, pSetting->DtimPeriod, AP_BSS); + HW_SetRfChannel(&dot11Obj, pSetting->Channel, 0,macp->cardSetting.MacMode); + } +#if 0 + else if (pSetting->BssType == INFRASTRUCTURE_BSS) + { + //HW_SetRfChannel(&dot11Obj, dot11Obj.Channel, 0); + + if ((netif_running(macp->device)) && (macp->bAssoc)) { + netif_wake_queue(macp->device); //resume tx + } + } +#endif + printk(KERN_ERR "Bf RF ON: %lu\n",jiffies); + //HW_RadioOnOff(&dot11Obj, 1); + printk(KERN_ERR "After RF ON: %lu\n", jiffies); + +#ifndef HOST_IF_USB + + tmpvalue = zd_readl(ZD_TSF_LowPart); + TSFTimer = tmpvalue; + tmpvalue = zd_readl(ZD_TSF_HighPart); + TSFTimer += (((u64)tmpvalue) << 32); + TSFTimer = TSFTimer >> 10; // in unit of TU + + //printk("TSF(TU) %d \n", TSFTimer); + //printk("BeaconInterval = %d\n", dot11Obj.BeaconInterval); + //printk("TSF mod BeaconInterval = %d\n", (TSFTimer % dot11Obj.BeaconInterval)); + //printk("Now, Device had been waken up\n"); + + tmpvalue = zd_readl(ZD_DeviceState); + //printk("DeviceState == %x\n", tmpvalue); + + // In IBSS mode, BCNATIM is now operating, therefore, the Tx-State will not + // stay in idle state. So, we change form 0xffff to 0xff, ie, we just make + + // sure that bus-masters, both Tx and Rx, are in idle-state. +#endif + + + dot11Obj.bDeviceInSleep = 0; + + // Solve Sequence number duplication problem after wakeup. + macp->SequenceNum = 0; + +#ifndef HOST_IF_USB + + zd1205_recycle_tx(macp); +#endif + +#ifndef HOST_IF_USB + + zd1205_start_ru(macp); +#else + //zd1205_recycle_rx(macp); +#endif + + macp->wakeupCnt++; + + if ((netif_running(macp->device)) && (macp->bAssoc)) + { + netif_carrier_on(macp->device); + netif_wake_queue(macp->device); + } + + + +} + + + +void zd1205_sw_reset(struct zd1205_private *macp) +{ + zd1205_disable_int(); + zd1205_tx_isr(macp); + memset(macp->txUnCached, 0x00, macp->txUnCachedSize); + + zd1205_setup_tcb_pool(macp); + zd1205_sleep_reset(macp); + zd1205_start_ru(macp); + zd_EventNotify(EVENT_SW_RESET, 0, 0, 0); + zd1205_enable_int(); + + if(netif_running(macp->device)) + { + netif_carrier_on(macp->device); + netif_wake_queue(macp->device); + } +} + + + +/** + * zd1205_sw_init - initialize software structs + * @macp: atapter's private data struct + * + * This routine initializes all software structures. Sets up the + * circular structures for the RFD's & TCB's. Allocates the per board + * structure for storing adapter information. The CSR is also memory + * mapped in this routine. + * + * Returns : + * true: if S/W was successfully initialized + + * false: otherwise + */ + + +static unsigned char + +zd1205_sw_init(struct zd1205_private *macp) +{ + + //ZENTER(0); + zd1205_init_card_setting(macp); + zd1205_set_zd_cbs(&dot11Obj); + zd_CmdProcess(CMD_RESET_80211, &dot11Obj, 0); + + /* Initialize our spinlocks */ + spin_lock_init(&(macp->bd_lock)); + spin_lock_init(&(macp->bd_non_tx_lock)); + //spin_lock_init(&(macp->q_lock)); + spin_lock_init(&(macp->conf_lock)); + + tasklet_init(&macp->zd1205_tasklet, zd1205_action, 0); + tasklet_init(&macp->zd1205_ps_tasklet, zd1205_ps_action, 0); + tasklet_init(&macp->zd1205_tx_tasklet, zd1205_tx_action, 0); + +#ifdef HOST_IF_USB + //spin_lock_init(&(macp->intr_lock)); + spin_lock_init(&(macp->rx_pool_lock)); + tasklet_init(&macp->zd1211_rx_tasklet, zd1211_rx_isr, (unsigned long)macp); + tasklet_init(&macp->zd1211_tx_tasklet, zd1211_tx_isr, (unsigned long)macp); + tasklet_init(&macp->rx_buff_tasklet, zd1211_alloc_rx, (unsigned long)macp); +#endif + + + macp->isolate_lock = RW_LOCK_UNLOCKED; + + macp->driver_isolated = false; + + AuthReqState = STE_AUTH_REQ_IDLE; + AsocState = STE_ASOC_IDLE; + + //ZEXIT(0); + return 1; + +} + + +/** + * zd1205_hw_init - initialized tthe hardware + * @macp: atapter's private data struct + + + * @reset_cmd: s/w reset or selective reset + * + + * This routine performs a reset on the adapter, and configures the adapter. + * This includes configuring the 82557 LAN controller, validating and setting + + + * the node address, detecting and configuring the Phy chip on the adapter, + * and initializing all of the on chip counters. + * + * Returns: + * true - If the adapter was initialized + * false - If the adapter failed initialization + */ +unsigned char +zd1205_hw_init(struct zd1205_private *macp) + +{ + + //ZENTER(0); + HW_ResetPhy(&dot11Obj); + HW_InitHMAC(&dot11Obj); + zd1205_config(macp); + + //ZEXIT(0); + return true; +} + + + +void zd1211_set_multicast(struct zd1205_private *macp) +{ + struct net_device *dev = macp->device; + struct dev_mc_list *mc_list; + unsigned int i; + + u8 *pKey; + u32 tmpValue; + u8 mcBuffer[192]; + u16 mcLen; + + + if (!(dev->flags & IFF_UP)) + return; + + if (macp->cardSetting.BssType == AP_BSS) + return; + + + zd_writel(0, GroupHash_P1); + zd_writel(0x80000000, GroupHash_P2); + macp->MulticastAddr[0] = dev->mc_count; + mcLen = dev->mc_count*ETH_ALEN ; + + + for (i = 0, mc_list = dev->mc_list; + (i < dev->mc_count) && (i < MAX_MULTICAST_ADDRS); + + i++, mc_list = mc_list->next) + { + + + //zd1205_dump_data("mc addr", (u8 *)&(mc_list->dmi_addr), ETH_ALEN); + memcpy(&macp->MulticastAddr[1+i * ETH_ALEN], (u8 *) &(mc_list->dmi_addr), ETH_ALEN); + } + macp->MulticastAddr[mcLen +1] = 0; + //zd1205_dump_data("MulticastAddr", (u8 *)macp->MulticastAddr, mcLen +2); + + memcpy(mcBuffer, &macp->MulticastAddr[1], mcLen); + + //zd1205_dump_data("mcBuffer", (u8 *)mcBuffer, mcLen); + pKey = mcBuffer; + + for (i=0; i> 2; + if (*(pKey+i) >= 32) { + tmpValue = zd_readl(GroupHash_P2); + + tmpValue |= (0x01 << (*(pKey+i)-32)); + zd_writel(tmpValue, GroupHash_P2); + } + + else { + tmpValue = zd_readl(GroupHash_P1); + tmpValue |= (0x01 << (*(pKey+i))); + zd_writel(tmpValue, GroupHash_P1); + } + } + } + + if(dev->flags & IFF_PROMISC) + printk("Promiscuous mode enabled.\n"); + + if(dev->flags & IFF_PROMISC) + { + zd_writel(0xffffffff,GroupHash_P1); + zd_writel(0xffffffff,GroupHash_P2); + } else if( dev->flags & IFF_ALLMULTI) + { + zd_writel(0xffffffff,GroupHash_P1); + zd_writel(0xffffffff,GroupHash_P2); + } + + + + macp->GroupHashP1 = zd_readl(GroupHash_P1); + + + macp->GroupHashP2 = zd_readl(GroupHash_P2); + + ZD1211DEBUG(1, "GroupHashP1 = %x\n", macp->GroupHashP1); + ZD1211DEBUG(1, "GroupHashP2 = %x\n", macp->GroupHashP2); + + //for debug only + //zd_writel(0xffffffff, GroupHash_P1); + + //zd_writel(0xffffffff, GroupHash_P2); +} + + +void zd1205_set_multi(struct net_device *dev) +{ + struct zd1205_private *macp = dev->priv; + +#ifdef HOST_IF_USB + + defer_kevent(macp, KEVENT_SET_MULTICAST); +#else + + zd1211_set_multicast(macp); +#endif +} + + + +#ifdef HOST_IF_USB + #define TX_TIMEOUT (4*100) //4sec +#else + #define TX_TIMEOUT (4*1000*1000) //4sec +#endif + +/** + * zd1205_watchdog + + * @dev: adapter's net_device struct + * + * This routine runs every 1 seconds and updates our statitics and link state, + * and refreshs txthld value. + */ +void +zd1205_watchdog(struct zd1205_private *macp) +{ + + + card_Setting_t *pSetting = &macp->cardSetting; + u32 TxBytes, RxBytes; + +#ifndef HOST_IF_USB + + u32 diffTime; + u32 tmpvalue; +#endif + + //read_lock(&(macp->isolate_lock)); + + if (macp->driver_isolated) + { + //goto pexit; + return; + } + + if (!netif_running(macp->device)) + { + + //goto pexit; + return; + } + + rmb(); + + macp->CheckForHangLoop++; + + zd_PerSecTimer(); + + TxBytes = macp->TotalTxDataFrmBytes; + RxBytes = macp->TotalRxDataFrmBytes; + + // Check if AP(Access Point) still alive in the current channel + + if (pSetting->BssType == INFRASTRUCTURE_BSS) + { + if(macp->bAssoc) { // We thought the Station is still associated with AP. + // dump dot11DesiredSsid + //U8 cbTemp; + //U8 ssidLenToDump=dot11DesiredSsid.buf[1]; + //for (cbTemp=0; cbTempbAPAlive) { // The AP-exist flag is not set by any received Mgt or Data frame yet, so we increase the lost-Beacon counter. + macp->NoBcnDetectedCnt++; + if (dot11Obj.bChScanning) + macp->NoBcnDetectedCnt = 0; + + if (macp->activeTxQ->count > 12) + macp->NoBcnDetectedCnt = 0; + + if (macp->NoBcnDetectedCnt > 5) { + printk(KERN_ERR "******We Lose AP for 5 seconds\n"); + if(!mCounterMeasureState) { + zd1205_dis_connect(macp); + //zd_CmdProcess(CMD_DIS_CONNECT, 0, 0); + if (macp->cardSetting.ap_scan != 1) + zd_CmdProcess(CMD_ROAMING, 0, 0); + else { + zdcb_status_notify(STA_DISASSOCIATED, &macp->BSSID[0]); + } + } + macp->NoBcnDetectedCnt = 0; + //defer_kevent(macp, KEVENT_DIS_CONNECT); + } + } else { // We have received at least one Mgt or Data frame from AP, so we reset the lost-Beacon counter. + macp->NoBcnDetectedCnt = 0; + } + + macp->bAPAlive = 0; // Clear AP-exist flag, it will be Set when a Mgt or Data frame is received. + } else { // macp->bAssoc ==0, we are in disconnected state. + + //printk(KERN_ERR "***** We are disconnected\n"); + mTmRetryConnect++; + if (mTmRetryConnect >= 6) { + if (macp->cardSetting.ap_scan != 1) { //when wpa_supplicant takes care of scanning and AP selection, it is not necessary for driver attempt to reconnect. + if (zd_CmdProcess(CMD_ROAMING,0,0)) { + mTmRetryConnect=0; + } + } else {// ap_scan=1 in wpa_supplicant.conf + ZD1211DEBUG(0, "wpa_supplicant takes care of scanning and AP selection, no need to roam driver itself\n"); + mTmRetryConnect = 0; + } + + } + } + } else if (pSetting->BssType == AP_BSS) + { + if((pSetting->MacMode==MIXED_MODE || pSetting->MacMode==PURE_G_MODE)) {// Try to disable protection mechanism if OLBC not exist any more. + if (dot11Obj.ConfigFlag & ENABLE_PROTECTION_SET) { + if (macp->bOLBC==0) // The bOLBC will be incremented after checking OLBC by calling zd1205_CheckOverlapBss. + { + if(++macp->nOLBC_CounterInSec > 2) + { + if (mNumBOnlySta==0) { + zd_EventNotify(EVENT_ENABLE_PROTECTION, 0,0,0);//Disable protection mode. + } + macp->nOLBC_CounterInSec=0; + } + } + else {// OLBC condition exist. + macp->nOLBC_CounterInSec=0; + } + } + macp->bOLBC=0; + } + }// End of AP_BSS condition + + if ((macp->bPSMSupported) && (macp->bAssoc)) + { + + // Check if we need to enter the PSM (power-save mode), CAM mode or no-change + + if ((TxBytes < macp->PSThreshhold) && (RxBytes < macp->PSThreshhold)) { + macp->SuggestionMode = PS_PSM; + } + else + macp->SuggestionMode = PS_CAM; + } + + macp->TotalTxDataFrmBytes = 0; + macp->TotalRxDataFrmBytes = 0; + + +} + + +void +zd1205_watchdog_cb(struct net_device *dev) +{ + struct zd1205_private *macp = dev->priv; + +#ifdef HOST_IF_USB + + defer_kevent(macp, KEVENT_WATCH_DOG); + mod_timer(&(macp->watchdog_timer), jiffies+(1*HZ)); +#else + + zd1205_watchdog(macp); + mod_timer(&(macp->watchdog_timer), jiffies+(1*HZ)); +#endif +} + + +/** + * zd1205_pci_setup - setup the adapter's PCI information + + * @pcid: adapter's pci_dev struct + * @macp: atapter's private data struct + + * + * This routine sets up all PCI information for the adapter. It enables the bus + * master bit (some BIOS don't do this), requests memory ans I/O regions, and + * calls ioremap() on the adapter's memory region. + + * + * Returns: + + * true: if successfull + * false: otherwise + */ +#ifndef HOST_IF_USB +static unsigned char +zd1205_pci_setup(struct pci_dev *pcid, struct zd1205_private *macp) + { - unsigned long flags; - spin_lock_irqsave(&macp->q_lock, flags); - Q->first = NULL; - Q->last = NULL; - Q->count = 0; - spin_unlock_irqrestore(&macp->q_lock, flags); -} + struct net_device *dev = macp->device; -void zd1205_qlast_txq(struct zd1205_private *macp, zd1205_SwTcbQ_t *Q, zd1205_SwTcb_t *signal) -{ - unsigned long flags; - spin_lock_irqsave(&macp->q_lock, flags); - signal->next = NULL; - if (Q->last == NULL) { - Q->first = signal; - Q->last = signal; - } else { - Q->last->next = signal; - Q->last = signal; - } + int rc = 0; - Q->count++; - spin_unlock_irqrestore(&macp->q_lock, flags); -} + ZENTER(0); + if ((rc = pci_enable_device(pcid)) != 0) + { + goto err; + } -zd1205_SwTcb_t * zd1205_first_txq(struct zd1205_private *macp, zd1205_SwTcbQ_t *Q) -{ - zd1205_SwTcb_t *p = NULL; - unsigned long flags; + if (!pci_set_dma_mask(pcid, 0xffffffffffffffff)) + { + macp->using_dac = 1; + printk(KERN_DEBUG "zd1205: support 64-bit DMA.\n"); + } - spin_lock_irqsave(&macp->q_lock, flags); - if (Q->first != NULL) { - Q->count--; - p = Q->first; - Q->first = (Q->first)->next; - if (Q->first == NULL) - Q->last = NULL; - } - spin_unlock_irqrestore(&macp->q_lock, flags); - return p; -} -static void zd1205_setup_tcb_pool(struct zd1205_private *macp) -{ - /* TCB local variables */ - zd1205_SwTcb_t *sw_tcb; /* cached TCB list logical pointers */ - zd1205_HwTCB_t *hw_tcb; /* uncached TCB list logical pointers */ - u32 HwTcbPhys; /* uncached TCB list physical pointer */ - u32 TcbCount; - - /* TBD local variables */ - zd1205_TBD_t *pHwTbd; /* uncached TBD list pointers */ - u32 HwTbdPhys; /* uncached TBD list physical pointer */ - zd1205_Ctrl_Set_t *pHwCtrlPtr; - u32 HwCtrlPhys; - zd1205_Header_t *pHwHeaderPtr; - u32 HwHeaderPhys; - - macp->freeTxQ = &free_txq_buf; - macp->activeTxQ = &active_txq_buf; - zd1205_init_txq(macp, macp->freeTxQ); - zd1205_init_txq(macp, macp->activeTxQ); - - /* Setup the initial pointers to the HW and SW TCB data space */ - sw_tcb = (zd1205_SwTcb_t *) macp->txCached; - hw_tcb = (zd1205_HwTCB_t *) macp->txUnCached; - HwTcbPhys = (u32)macp->txUnCached; - - /* Setup the initial pointers to the TBD data space. - TBDs are located immediately following the TCBs */ - pHwTbd = (zd1205_TBD_t *) (macp->txUnCached + (sizeof(zd1205_HwTCB_t) * macp->numTcb)); - HwTbdPhys = HwTcbPhys + (sizeof(zd1205_HwTCB_t) * macp->numTcb); - - /* Setup yhe initial pointers to the Control Setting space - CTRLs are located immediately following the TBDs */ - pHwCtrlPtr = (zd1205_Ctrl_Set_t *) ((u32)pHwTbd + (sizeof(zd1205_TBD_t) * macp->numTbd)); - HwCtrlPhys = HwTbdPhys + (sizeof(zd1205_TBD_t) * macp->numTbd); - - /* Setup the initial pointers to the Mac Header space - MACHEADERs are located immediately following the CTRLs */ - pHwHeaderPtr = (zd1205_Header_t *) ((u32)pHwCtrlPtr + (sizeof(zd1205_Ctrl_Set_t) * macp->numTcb)); - HwHeaderPhys = HwCtrlPhys + (sizeof(zd1205_Ctrl_Set_t) * macp->numTcb); - - /* Go through and set up each TCB */ - for (TcbCount = 0; TcbCount < macp->numTcb; - TcbCount++, sw_tcb++, hw_tcb++, HwTcbPhys += sizeof(zd1205_HwTCB_t), - pHwTbd = (zd1205_TBD_t *) (((u8 *) pHwTbd) + ((sizeof(zd1205_TBD_t) * macp->numTbdPerTcb))), - HwTbdPhys += (sizeof(zd1205_TBD_t) * macp->numTbdPerTcb), - pHwCtrlPtr++, HwCtrlPhys += sizeof(zd1205_Ctrl_Set_t), - pHwHeaderPtr++, HwHeaderPhys += sizeof(zd1205_Header_t)) { - - /* point the cached TCB to the logical address of the uncached one */ - sw_tcb->TcbCount = TcbCount; - sw_tcb->skb = 0; - sw_tcb->pTcb = hw_tcb; - sw_tcb->TcbPhys = HwTcbPhys; - sw_tcb->pFirstTbd = pHwTbd; - sw_tcb->FirstTbdPhys = HwTbdPhys; - sw_tcb->pHwCtrlPtr = pHwCtrlPtr; - sw_tcb->HwCtrlPhys = HwCtrlPhys; - sw_tcb->pHwHeaderPtr = pHwHeaderPtr; - sw_tcb->HwHeaderPhys = HwHeaderPhys; - - /* initialize the uncached TCB contents -- status is zeroed */ - hw_tcb->CbStatus = 0xffffffff; - hw_tcb->CbCommand = cpu_to_le32(CB_S_BIT); - hw_tcb->TxCbFirstTbdAddrLowPart = cpu_to_le32(HwTbdPhys); - hw_tcb->TxCbFirstTbdAddrHighPart = 0; - hw_tcb->TxCbTbdNumber = 0; - if (TcbCount == (macp->numTcb -1)) { - /* Turn around TBD */ - hw_tcb->NextCbPhyAddrLowPart = cpu_to_le32(macp->txUnCached); - hw_tcb->NextCbPhyAddrHighPart = 0; - } else { - hw_tcb->NextCbPhyAddrLowPart = cpu_to_le32(HwTcbPhys + sizeof(zd1205_HwTCB_t)); - hw_tcb->NextCbPhyAddrHighPart = 0; - } + else if (!pci_set_dma_mask(pcid, 0xffffffff)) + { - /* add this TCB to the free list */ - zd1205_qlast_txq(macp, macp->freeTxQ, sw_tcb); - } + macp->using_dac = 0; + printk(KERN_DEBUG "zd1205: support 32-bit DMA.\n"); - return; -} + } else + { -/** - * zd1205_get_stats - get driver statistics - * @dev: adapter's net_device struct - * - * This routine is called when the OS wants the adapter's stats returned. - * It returns the address of the net_device_stats stucture for the device. - * If the statistics are currently being updated, then they might be incorrect - * for a short while. However, since this cannot actually cause damage, no - * locking is used. - */ -struct net_device_stats * zd1205_get_stats(struct net_device *dev) -{ - struct zd1205_private *macp = dev->priv; - macp->drv_stats.net_stats.tx_errors = - macp->drv_stats.net_stats.tx_carrier_errors + - macp->drv_stats.net_stats.tx_aborted_errors; - - macp->drv_stats.net_stats.rx_errors = - macp->drv_stats.net_stats.rx_crc_errors + - macp->drv_stats.net_stats.rx_frame_errors + - macp->drv_stats.net_stats.rx_length_errors + - macp->drv_stats.rcv_cdt_frames; + printk(KERN_ERR "zd1205: No suitable DMA available.\n"); + goto err; + } - return &(macp->drv_stats.net_stats); -} -/** - * zd1205wext_iw_get_stats - get driver statistics - * @dev: adapter's net_device struct - * - * This routine is called when the OS wants the adapter's wireless - * stats returned. It returns the address of the iw_statistics - * stucture for the device. If the statistics are currently being - * updated, then they might be incorrect for a short while. However, - * since this cannot actually cause damage, no locking is used. - */ -#if WIRELESS_EXT > 12 -struct iw_statistics *zd1205wext_iw_get_stats(struct net_device *dev) -{ - struct zd1205_private *macp = dev->priv; - struct iw_statistics *iw_stats = &macp->drv_stats.iw_stats; + /* dev and ven ID have already been checked so it is our device */ + pci_read_config_byte(pcid, PCI_REVISION_ID, (u8 *) &(macp->rev_id)); - iw_stats->qual.noise = 161; - iw_stats->qual.qual = macp->rxSignalQuality; - iw_stats->qual.level = macp->rxSignalStrength; - iw_stats->qual.updated = 7; + /* address #0 is a memory region */ - iw_stats->discard.nwid = 0; - iw_stats->discard.code = 0; - iw_stats->discard.fragment = 0; - iw_stats->discard.retries = macp->retryFailCnt; - iw_stats->discard.misc = macp->DropFirstFragCnt + macp->ErrLongFrmCnt + - macp->ErrShortFrmCnt + macp->ErrZeroLenFrmCnt; + dev->mem_start = pci_resource_start(pcid, 0); + dev->mem_end = dev->mem_start + ZD1205_REGS_SIZE; - iw_stats->miss.beacon = 0; + /* address #1 is a IO region */ + dev->base_addr = pci_resource_start(pcid, 1); + if ((rc = pci_request_regions(pcid, zd1205_short_driver_name)) != 0) + { + goto err_disable; + } - return iw_stats; + pci_enable_wake(pcid, 0, 0); + + /* if Bus Mastering is off, turn it on! */ + pci_set_master(pcid); + + /* address #0 is a memory mapping */ + macp->regp = (void *)ioremap_nocache(dev->mem_start, ZD1205_REGS_SIZE); + dot11Obj.reg = macp->regp; + //printk(KERN_DEBUG "zd1205: dot11Obj.reg = %x\n", (u32)dot11Obj.reg); + + + if (!macp->regp) + { + printk(KERN_ERR "zd1205: %s: Failed to map PCI address 0x%lX\n", + dev->name, pci_resource_start(pcid, 0)); + rc = -ENOMEM; + goto err_region; + } else + printk(KERN_DEBUG "zd1205: mapping base addr = %x\n", (u32)macp->regp); + + ZEXIT(0); + return 0; + +err_region: + pci_release_regions(pcid); + + +err_disable: + pci_disable_device(pcid); + +err: + + return rc; } #endif + + + /** - * zd1205_set_mac - set the MAC address - * @dev: adapter's net_device struct - * @addr: the new address + * zd1205_alloc_space - allocate private driver data + * @macp: atapter's private data struct + * + + * This routine allocates memory for the driver. Memory allocated is for the + * selftest and statistics structures. * - * This routine sets the ethernet address of the board * Returns: - * 0 - if successful - * -1 - otherwise + * 0: if the operation was successful + * %-ENOMEM: if memory allocation failed */ -int zd1205_set_mac(struct net_device *dev, void *addr) + + + + +unsigned char +zd1205_alloc_space(struct zd1205_private *macp) { - struct zd1205_private *macp; - int rc = -1; - struct sockaddr *p_sockaddr = (struct sockaddr *) addr; + /* deal with Tx cached memory */ + macp->txCachedSize = (macp->numTcb * sizeof(zd1205_SwTcb_t)); + macp->txCached = kmalloc(macp->txCachedSize, GFP_ATOMIC); - macp = dev->priv; - read_lock(&(macp->isolate_lock)); + if (!macp->txCached) + { + printk(KERN_ERR "zd1205: kmalloc txCached failed\n"); + return 1; - if (macp->driver_isolated) { - goto exit; - } - memcpy(&(dev->dev_addr[0]), p_sockaddr->sa_data, ETH_ALEN); - rc = 0; + } + else + { + memset(macp->txCached, 0, macp->txCachedSize); + return 0; + } -exit: - read_unlock(&(macp->isolate_lock)); - return rc; } -void zd1205_isolate_driver(struct zd1205_private *macp) + + +static void +zd1205_dealloc_space(struct zd1205_private *macp) { - write_lock_irq(&(macp->isolate_lock)); - macp->driver_isolated = true; - write_unlock_irq(&(macp->isolate_lock)); - del_timer_sync(&macp->watchdog_timer); - del_timer_sync(&macp->tm_hking_id); - del_timer_sync(&macp->tm_mgt_id); + if (macp->txCached) + kfree(macp->txCached); + - if (netif_running(macp->device)) - netif_stop_queue(macp->device); } -int zd1205_change_mtu(struct net_device *dev, int new_mtu) + +/* Read the permanent ethernet address from the eprom. */ +void +zd1205_rd_eaddr(struct zd1205_private *macp) { - if ((new_mtu < 68) || (new_mtu > (ETH_DATA_LEN + VLAN_SIZE))) - return -EINVAL; + u32 tmpValue; - dev->mtu = new_mtu; - return 0; + //ZENTER(0); + //The MAC is set by User. We don't load it from EEPROM. + + tmpValue = zd_readl(E2P_MACADDR_P1); + ZD1211DEBUG(1, "E2P_MACADDR_P1 = %08x\n", tmpValue); + + + + + macp->device->dev_addr[0] = macp->macAdr[0] = (u8)tmpValue;//0x00; + macp->device->dev_addr[1] = macp->macAdr[1] = (u8)(tmpValue >> 8);//0xA0; + macp->device->dev_addr[2] = macp->macAdr[2] = (u8)(tmpValue >> 16);//0xC5; + macp->device->dev_addr[3] = macp->macAdr[3] = (u8)(tmpValue >> 24);//0x11; + tmpValue = zd_readl(E2P_MACADDR_P2); + ZD1211DEBUG(1, "E2P_MACADDR_P2 = %08x\n", tmpValue); + macp->device->dev_addr[4] = macp->macAdr[4] = (u8)tmpValue;//0x22; + macp->device->dev_addr[5] = macp->macAdr[5] = (u8)(tmpValue >> 8);//0x33; + + ZD1211DEBUG(0, "MAC address = %02x:%02x:%02x:%02x:%02x:%02x\n", + macp->device->dev_addr[0], macp->device->dev_addr[1], macp->device->dev_addr[2], + macp->device->dev_addr[3], macp->device->dev_addr[4], macp->device->dev_addr[5]); + + + macp->cardSetting.MacAddr[0] = macp->macAdr[0]; + + macp->cardSetting.MacAddr[1] = macp->macAdr[1]; + + macp->cardSetting.MacAddr[2] = macp->macAdr[2]; + macp->cardSetting.MacAddr[3] = macp->macAdr[3]; + + macp->cardSetting.MacAddr[4] = macp->macAdr[4]; + macp->cardSetting.MacAddr[5] = macp->macAdr[5]; + //ZEXIT(0); } -int zd1205_close(struct net_device *dev) +void +zd1205_lock(struct zd1205_private *macp) { - struct zd1205_private *macp = dev->priv; +#ifndef HOST_IF_USB + spin_lock_bh(&macp->conf_lock); +#else - ZENTER(0); + spin_lock(&macp->conf_lock); +#endif +} - netif_carrier_off(macp->device); - zd1205_isolate_driver(macp); - macp->intrMask = 0; - //zd_writel(0x01, Pre_TBTT); - if (!test_bit(ZD1211_UNPLUG, &macp->flags)) { - iLED_OFF(macp, macp->LinkLEDn); - zd_writel(0x0, FW_LINK_STATUS); - //zd1211_disable_net_traffic(macp); - //zd1205_device_reset(macp); - } +void +zd1205_unlock(struct zd1205_private *macp) +{ +#ifndef HOST_IF_USB + spin_unlock_bh(&macp->conf_lock); +#else + + spin_unlock(&macp->conf_lock); +#endif +} + +//wireless extension helper functions +/* taken from orinoco.c ;-) */ +const u32 channel_frequency[] = + { + 2412, 2417, 2422, 2427, 2432, 2437, 2442, + 2447, 2452, 2457, 2462, 2467, 2472, 2484 + + }; +const u32 channel_frequency_11A[] = + { + //Even element for Channel Number, Odd for Frequency + 36,5180, + 40,5200, + 44,5220, + 48,5240, + 52,5260, + 56,5280, + 60,5300, + 64,5320, + 100,5500, + 104,5520, + 108,5540, + 112,5560, + 116,5580, + 120,5600, + 124,5620, + 128,5640, + 132,5660, + 136,5680, + 140,5700, + // + 184,4920, + 188,4940, + 192,4960, + 196,4980, + 8,5040, + 12,5060, + 16,5080, + 34,5170, + 38,5190, + 42,5210, + 46,5230, + // + 149,5745, + 153,5765, + 157,5785, + 161,5805, + 165,5825 + // + }; - clear_bit(ZD1211_RUNNING, &macp->flags); - //tasklet_kill(&macp->zd1211_rx_tasklet); - //tasklet_kill(&macp->zd1211_tx_tasklet); //tasklet_kill(&macp->rx_buff_tasklet); - zd1211_unlink_all_urbs(macp); - zd1205_clear_pools(macp); - macp->bPSMSupported = 0; - dot11Obj.bDeviceInSleep = 0; - /* set the isolate flag to false, so zd1205_open can be called */ - macp->driver_isolated = false; +#define NUM_CHANNELS ( sizeof(channel_frequency) / sizeof(channel_frequency[0]) ) +#define NUM_CHANNELS_11A ( (sizeof(channel_frequency_11A)/2) / sizeof(u32)) - ZEXIT(0); +#define MAX_KEY_SIZE 13 +//Find the Channel Frequency in channel_frequency_11A +static u32 channel_11A_to_Freq(const u32 channel) +{ + u32 i; + + for(i=0;ipriv; + card_Setting_t *pSetting = &macp->cardSetting; + + if (erq->length > 0) + { + int index = (erq->flags & IW_ENCODE_INDEX) - 1; + int current_index = pSetting->EncryKeyId; + + // ZD1211DEBUG(1, "index = %d\n", index); + // ZD1211DEBUG(1, "erq->length = %d\n", erq->length); + + if (erq->length > MAX_KEY_SIZE) + return -EINVAL; + + if ((index < 0) || (index >= 4)) + index = current_index; + + /* Set the length */ + if (erq->length > MIN_KEY_SIZE) { + pSetting->WepKeyLen = MAX_KEY_SIZE; + pSetting->EncryMode = WEP128; + } else { + // if (erq->length > 0){ + pSetting->WepKeyLen = MIN_KEY_SIZE; + pSetting->EncryMode = WEP64; + // } + // else { + // pSetting->WepKeyLen = 0; /* Disable the key */ + // pSetting->EncryMode = NO_WEP; + // } + } + + /* Check if the key is not marked as invalid */ + if (!(erq->flags & IW_ENCODE_NOKEY)) { // for command: key xxxxxxxxxx [n] + // ZD1211DEBUG(0, "Set contents of key %d\n", index+1); + pSetting->EncryKeyId = index; + memcpy(&pSetting->keyVector[index][0], key, pSetting->WepKeyLen); + zd1205_config_wep_keys(macp); + } else { // For command: key on + // ZD1211DEBUG(0, "key %d is enabled\n", index+1); + } + + /* WE specify that if a valid key is set, encryption + * should be enabled (user may turn it off later) + * This is also how "iwconfig ethX key on" works */ + /*if ((index == current_index) && (pSetting->WepKeyLen > 0) && + (pSetting->EncryOnOff == 0)) { + pSetting->EncryOnOff = 1; + } */ + pSetting->EncryOnOff=1; + } else if(erq->flags & IW_ENCODE_DISABLED) + { // for command: key off + // ZD1211DEBUG(0, "Disable Encryption\n"); + pSetting->EncryOnOff=0; + } else + { + /* Do we want to just set the transmit key index ? */ + // For command: (erq->length==0) + // key on (If no key ever set) + // key [n] , change current active key + int index = (erq->flags & IW_ENCODE_INDEX) - 1; + //ZD1211DEBUG(0, "change key %d as active key\n", index+1); + if ((index >= 0) && (index < 4)) { + // ZD1211DEBUG(0, "Active key id=%d\n", index+1); + pSetting->EncryKeyId = index; // Because pSetting->WepKeyLen has been set, it is not necessary to set it again! + pSetting->EncryOnOff = 1; + } else /* Don't complain if only change the mode */ + { + if(!(erq->flags & IW_ENCODE_MODE)) { + // ZD1211DEBUG(0, "change mode for invalid key id:%d\n",index+1); + return -EINVAL; + } + } + } + if(erq->flags & IW_ENCODE_RESTRICTED) + { + pSetting->EncryOnOff = 1; + } + + if(erq->flags & IW_ENCODE_OPEN) + { + pSetting->EncryOnOff = 1; // Only Wep + } + + // ZD1211DEBUG(0,"pSetting->EncryOnOff: %d\n", pSetting->EncryOnOff); + if (mPrivacyInvoked == pSetting->EncryOnOff) + { // Privacy setting is the same as before one, No need do reconnect, just update some global parameters. + + mKeyFormat = pSetting->EncryMode; + mKeyId = pSetting->EncryKeyId; + mPrivacyInvoked = pSetting->EncryOnOff; + if (mPrivacyInvoked) + mCap |= CAP_PRIVACY; + else + mCap &= ~CAP_PRIVACY; + memcpy(&mKeyVector[0][0], &pSetting->keyVector[0][0],sizeof(mKeyVector)); + mWepKeyLen = pSetting->WepKeyLen; + printk(KERN_DEBUG "Just Update WEP key\n"); + return 0; + } + printk(KERN_DEBUG "Update CardSetting\n"); - pdusize = macp->cardSetting.FragThreshold; - - if ((length + CRC32_LEN) > pdusize) { //Need fragment - pdusize -= WLAN_HEADER + CRC32_LEN; - FragNum = ((length - WLAN_HEADER)+ (pdusize-1)) / pdusize; - if (FragNum == 0) - FragNum = 1; - } - return FragNum; +#ifdef HOST_IF_USB + + defer_kevent(macp, KEVENT_UPDATE_SETTING); +#else + + zd_UpdateCardSetting(pSetting); +#endif + + return 0; } -int zd1205_xmit_frame(struct sk_buff *skb, struct net_device *dev) -{ - int rc = 0; - int notify_stop = false; - struct zd1205_private *macp = dev->priv; - u16 TypeLen; - u8 *pHdr = skb->data; - u32 bodyLen; - u32 TotalLen; - u8 *pBody; - u8 NumOfFrag = 1; - u8 EtherHdr[12]; - u8 bEapol = 0; - u8 *pMac = NULL; - void *pHash = NULL; - u8 bGroupAddr = 0; - card_Setting_t *pSetting = &macp->cardSetting; - u8 bEthType2 = 0; - u8 *pSkbData = skb->data; - u32 SkbLength = skb->len; - - ZENTER(2); - - //zd1205_dump_data("tx packet", (u8 *)skb->data, skb->len); - - if (pHdr[0] & BIT_0) - bGroupAddr = 1; - - read_lock(&(macp->isolate_lock)); - if (macp->driver_isolated) { - rc = -EBUSY; - goto exit2; - } - if (!spin_trylock(&macp->bd_non_tx_lock)) { - notify_stop = true; - rc = 1; - goto exit2; - } - if ((pSetting->BssType == INFRASTRUCTURE_BSS) || (pSetting->BssType == INDEPENDENT_BSS)) { - if (dot11Obj.bDeviceInSleep) { - //queue to upper layer - notify_stop = true; - rc = 1; - //dev_kfree_skb_irq(skb); - //rc = 0; - goto exit1; - } +static int +zd1205_ioctl_getiwencode(struct net_device *dev, struct iw_point *erq, char *key) - if (pSetting->BssType == INFRASTRUCTURE_BSS) - pMac = macp->BSSID; - else if (pSetting->BssType == INDEPENDENT_BSS) - pMac = pHdr; - - if ((!macp->bAssoc) || ((!bGroupAddr) && (!zd_QueryStaTable(pMac, &pHash)))) { - //printk(KERN_DEBUG "zd_QueryStaTable failed\n"); - //zd1205_dump_data("tx packet", (u8 *)skb->data, skb->len); - //Not Associated to AP - dev_kfree_skb_irq(skb); - rc = 0; - goto exit1; - } - } else if (pSetting->BssType == AP_BSS) { - if (!bGroupAddr) { //da is unicast - if (!zd_QueryStaTable(pHdr, &pHash)) { - dev_kfree_skb_irq(skb); - rc = 0; - goto exit1; - } - } else { - if ((pSetting->DynKeyMode) && (macp->bGkInstalled == 0)) { - dev_kfree_skb_irq(skb); - rc = 0; - goto exit1; - } - } - } +{ + struct zd1205_private *macp = dev->priv; + card_Setting_t *pSetting = &macp->cardSetting; - TypeLen = (((u16) pHdr[12]) << 8) + (pHdr[13]); - if (TypeLen > 1500) { /* Ethernet 2 frame */ - bEthType2 = 1; - bodyLen = skb->len - 6; - } else { - bEthType2 = 0; - bodyLen = TypeLen; - } - TotalLen = bodyLen + WLAN_HEADER; //Mac Header(24) - NumOfFrag = CalNumOfFrag(macp, TotalLen); + int index = (erq->flags & IW_ENCODE_INDEX) - 1; - if (macp->freeTxQ->count < (NumOfFrag+1)) { - //printk(KERN_DEBUG "********Queue to upper layer************\n"); + zd1205_lock(macp); + if (pSetting->EncryOnOff) + { + erq->flags = IW_ENCODE_OPEN; + } + else + { + erq->flags = IW_ENCODE_DISABLED; + } - macp->txQueToUpCnt++; - notify_stop = true; - rc = 1; - goto exit1; - } + /* We can't return the key, so set the proper flag and return zero */ + erq->flags |= IW_ENCODE_NOKEY; + memset(key, 0, 16); - memcpy(&EtherHdr[0], pHdr, 12); //save ethernet header + /* Which key do we want ? -1 -> tx index */ - if (bEthType2) { /* Ethernet 2 frame */ - /* DA(6) SA(6) Type(2) Data....(reserved array) */ - if ((TypeLen == 0x8137) || (TypeLen == 0x80F3)) - memcpy(pHdr+6, ZD_SNAP_BRIDGE_TUNNEL, sizeof(ZD_SNAP_BRIDGE_TUNNEL)); - else - memcpy(pHdr+6, (void *)ZD_SNAP_HEADER, sizeof(ZD_SNAP_HEADER)); - - if (TypeLen == 0x888e) - bEapol = 1; - - skb->len -= 6; /* Minus DA, SA; Plus 802.2LLC Header */ - bodyLen = skb->len; - skb->data += 6; - } else { /* 802.3 frame */ - /* DA(6) SA(6) Len(2) 802.2_LLC(3) 802.2_SNAP(3+2) Data.... */ - skb->len -= 14; - bodyLen = TypeLen; - skb->data += 14; - } + if((index < 0) || (index >= 4)) + index = pSetting->EncryKeyId; - pBody = skb->data; - if (!zd_SendPkt(EtherHdr, pBody, bodyLen, (void *)skb, bEapol, pHash)) { - notify_stop = true; - rc = 1; - //restore skb data structure - skb->data = pSkbData; - skb->len = SkbLength; - goto exit1; + erq->flags |= index + 1; + /* Copy the key to the user buffer */ - } - - macp->drv_stats.net_stats.tx_bytes += skb->len; - macp->drv_stats.net_stats.tx_packets++; + erq->length = pSetting->WepKeyLen; + if (erq->length > 16) + { + erq->length = 0; -exit1: - spin_unlock(&macp->bd_non_tx_lock); -exit2: - read_unlock(&(macp->isolate_lock)); - if (notify_stop) { - netif_stop_queue(dev); - } + } + zd1205_unlock(macp); - ZEXIT(2); - return rc; + return 0; } -void zd1205_sw_release(void) +static int +zd1205_ioctl_setessid(struct net_device *dev, struct iw_point *erq) { - zd_EventNotify(EVENT_BUF_RELEASE, 0, 0, 0); -} + struct zd1205_private *macp = dev->priv; + char essidbuf[IW_ESSID_MAX_SIZE+1]; -void zd1205_sleep_reset(struct zd1205_private *macp) + + memset(&essidbuf, 0, sizeof(essidbuf)); + + + if (erq->flags) + { + if (erq->length > (IW_ESSID_MAX_SIZE+1)) + return -E2BIG; + + if (copy_from_user(&essidbuf, erq->pointer, erq->length)) + return -EFAULT; + } + + zd1205_lock(macp); + + //essidbuf[erq->length] = '\0'; + memcpy(&macp->cardSetting.Info_SSID[2], essidbuf, erq->length); + macp->cardSetting.Info_SSID[1] = strlen(essidbuf); + + //memcpy(&macp->cardSetting.Info_SSID[2], essidbuf, erq->length-1); + //macp->cardSetting.Info_SSID[1] = erq->length-1; + zd1205_unlock(macp); + + return 0; +} +static int +zd1205_ioctl_setbssid(struct net_device *dev, struct iwreq *wrq) { - u32 tmpvalue; - u32 ul_pretbtt; - u32 ul_BcnItvl; - u64 TSFTimer; - - unsigned long flags; - - //return; //for debug only, test SW - - ZD1211DEBUG(1, "Prepare to enter sleep mode\n"); - netif_stop_queue(macp->device); - HW_RadioOnOff(&dot11Obj, 0); - - // Setup Pre_TBTT - - ul_BcnItvl = zd_readl(ZD_BCNInterval); - ul_BcnItvl &= 0xffff; - - HW_UpdatePreTBTT(&dot11Obj, ul_BcnItvl-BEFORE_BEACON); - - // Read exact value of Pre_TBTT - - ul_pretbtt = zd_readl(ZD_Pre_TBTT); - - //ZD1211DEBUG(2, "Pre_TBTT = %x\n", ul_pretbtt); - - while(1) { - // Make sure that the time issued sleep-command is not too close to Pre_TBTT. - // Also make sure that sleep-command is out of Beacon-Tx duration. - tmpvalue = zd_readl(ZD_TSF_LowPart); - TSFTimer = tmpvalue; - tmpvalue = zd_readl(ZD_TSF_HighPart); - TSFTimer += (((u64)tmpvalue) << 32); - TSFTimer = TSFTimer >> 10; // in unit of TU - //printk("TSF(TU) %d \n", TSFTimer); - //printk("BeaconInterval = %d\n", ul_BcnItvl); - //printk("TSF mod BeaconInterval = %d\n", (TSFTimer % ul_BcnItvl)); - - if ((ul_pretbtt > (do_div(TSFTimer, ul_BcnItvl))) || (macp->bSurpriseRemoved)) { - //++ Ensure the following is an atomic operation. - if ((((ul_pretbtt - (do_div(TSFTimer, ul_BcnItvl))) >= 3) && - ((do_div(TSFTimer, ul_BcnItvl)) > BEACON_TIME) && - (!atomic_read(&macp->DoNotSleep))) || (macp->bSurpriseRemoved)) { - - down(&macp->ps_sem); - tmpvalue = zd_readl(ZD_PS_Ctrl); - zd_writel((tmpvalue | BIT_0), ZD_PS_Ctrl); //debug SW - dot11Obj.bDeviceInSleep = 1; - up(&macp->ps_sem); - ZD1211DEBUG(1, "Has been entered sleep mode\n"); - macp->sleepCnt++; - break; - } - up(&macp->ps_sem); - } - mdelay(1); - } - macp->TxStartTime = 0; + //struct zd1205_private *macp = dev->priv; + memcpy(dot11DesiredBssid, &wrq->u.ap_addr.sa_data, ETH_ALEN); + //ZD1211DEBUG(0,"set AP BSSID=" MACSTR "\n",MAC2STR(dot11DesiredBssid)); + return 0; + } -void update_beacon_interval(struct zd1205_private *macp, int val) +static int +zd1205_ioctl_getessid(struct net_device *dev, struct iw_point *erq) { - int BcnInterval; - int ul_PreTBTT; - int tmpvalue; + struct zd1205_private *macp = dev->priv; + char essidbuf[IW_ESSID_MAX_SIZE+1]; + u8 len; - BcnInterval = val; - - /* One thing must be sure that BcnInterval > Pre_TBTT > ATIMWnd >= 0 */ - if(BcnInterval < 5) { - BcnInterval = 5; - } + zd1205_lock(macp); - ul_PreTBTT = zd_readl(Pre_TBTT); + if (macp->bAssoc) + { + len = dot11Obj.CurrSsid[1]; + memcpy(essidbuf, &dot11Obj.CurrSsid[2], len); + } else + { + len = macp->cardSetting.Info_SSID[1]; + memcpy(essidbuf, &macp->cardSetting.Info_SSID[2], len); + } - if(ul_PreTBTT < 4) { - ul_PreTBTT = 4; - } + essidbuf[len] = 0; + zd1205_unlock(macp); - if(ul_PreTBTT >= BcnInterval) { - ul_PreTBTT = BcnInterval - 1; - } + erq->flags = 1; + erq->length = strlen(essidbuf); - zd_writel(ul_PreTBTT, Pre_TBTT); - tmpvalue = zd_readl(BCNInterval); - tmpvalue &= ~0xffffffff; - tmpvalue |= BcnInterval; - zd_writel(tmpvalue, BCNInterval); -} + WPADEBUG("zd1205_ioctl_getessid: %s\n", essidbuf); -void zd1205_device_reset(struct zd1205_private *macp) -{ - u32 tmp_value; + //erq->length = strlen(essidbuf) + 1; + //zd1205_dump_data("essidbuf", (u8 *)essidbuf, erq->length); - /* Update the value of Beacon Interval and Pre TBTT */ - update_beacon_interval(macp, 0x2); - zd_writel(0x01, Pre_TBTT); - - tmp_value = zd_readl(PS_Ctrl); - zd_writel(tmp_value | BIT_0, PS_Ctrl); - dot11Obj.bDeviceInSleep = 1; - /* Sleep for 5 msec */ - wait_ms(5); + if (erq->pointer) + if ( copy_to_user(erq->pointer, essidbuf, erq->length) ) + return -EFAULT; + return 0; } -void zd1205_recycle_tx(struct zd1205_private *macp) +static int +zd1205_ioctl_setfreq(struct net_device *dev, struct iw_freq *frq) { - zd1205_SwTcb_t *sw_tcb; - if (macp->activeTxQ->count) { - sw_tcb = macp->activeTxQ->first; - zd1205_start_download(sw_tcb->TcbPhys); - } + struct zd1205_private *macp = dev->priv; + int chan = -1; + int fflag=0; //Found Flag + + if (macp->cardSetting.BssType == INFRASTRUCTURE_BSS) + return -EINVAL; + + if ( (frq->e == 0) && (frq->m <= 1000) ) + { + /* Setting by channel number */ + chan = frq->m; + fflag=1; + } else + { + /* Setting by frequency - search the table */ + int mult = 1; + int i; + + for (i = 0; i < (6 - frq->e); i++) + mult *= 10; + + if(PURE_A_MODE != mMacMode ) { + for (i = 0; i < NUM_CHANNELS; i++) + if (frq->m == (channel_frequency[i] * mult)) { + chan = i+1; + fflag=1; + break; + } + } else { + for (i = 0; i < NUM_CHANNELS_11A; i++) + if (frq->m == (channel_frequency_11A[i*2+1] * mult)) { + chan = channel_frequency_11A[i*2]; + fflag=1; + break; + } + } + + } + + if(PURE_A_MODE != mMacMode) + { + if ( (chan < 1) || (14 < chan) ) { + printk("We Can't Found Required Channel in ioctl_setfreq(2.4G)\n"); + return -EINVAL; + } + } else + { + if ( (chan < 1) || (0 == fflag) ) { + printk("We Can't Found Required Channel in ioctl_setfreq(5G)\n"); + return -EINVAL; + } + if( 0 == channel_11A_to_Freq(chan) ) { + printk("The channel isn't exist(%d)\n",chan); + return -EINVAL; + } + + } + + zd1205_lock(macp); + macp->cardSetting.Channel = chan; + zd1205_unlock(macp); + + return 0; } -void zd1205_process_wakeup(struct zd1205_private *macp) +static int +zd1205_ioctl_setrts(struct net_device *dev, struct iw_param *rrq) { - card_Setting_t *pSetting = &macp->cardSetting; - u64 TSFTimer; - u32 tmpvalue; - ZENTER(1); - - if (pSetting->BssType == AP_BSS) { - HW_EnableBeacon(&dot11Obj, pSetting->BeaconInterval, pSetting->DtimPeriod, AP_BSS); - HW_SetRfChannel(&dot11Obj, pSetting->Channel, 0); - } - HW_RadioOnOff(&dot11Obj, 1); + struct zd1205_private *macp = dev->priv; + int val = rrq->value; - dot11Obj.bDeviceInSleep = 0; - - // Solve Sequence number duplication problem after wakeup. - macp->SequenceNum = 0; + if (rrq->disabled) + val = 2347; + + if ( (val < 0) || (val > 2347) ) + return -EINVAL; - //zd1205_recycle_rx(macp); - macp->wakeupCnt++; + zd1205_lock(macp); + + macp->cardSetting.RTSThreshold = val; + zd1205_unlock(macp); + + return 0; - if ((netif_running(macp->device)) && (macp->bAssoc)) - netif_wake_queue(macp->device); } -void zd1205_sw_reset(struct zd1205_private *macp) +static int +zd1205_ioctl_setfrag(struct net_device *dev, struct iw_param *frq) { - zd1205_disable_int(); - zd1205_tx_isr(macp); - memset(macp->txUnCached, 0x00, macp->txUnCachedSize); - - zd1205_setup_tcb_pool(macp); - zd1205_sleep_reset(macp); - zd1205_start_ru(macp); - zd_EventNotify(EVENT_SW_RESET, 0, 0, 0); - zd1205_enable_int(); - - if(netif_running(macp->device)) - netif_wake_queue(macp->device); + struct zd1205_private *macp = dev->priv; + + int err = 0; + + zd1205_lock(macp); + + if (frq->disabled) + { + macp->cardSetting.FragThreshold = 2346; + } else + { + if ( (frq->value < 256) || (frq->value > 2346) ) { + err = -EINVAL; + } else { + macp->cardSetting.FragThreshold= frq->value & ~0x1; /* must be even */ + } + } + + zd1205_unlock(macp); + return err; } -/** - * zd1205_sw_init - initialize software structs - * @macp: atapter's private data struct - * - * This routine initializes all software structures. Sets up the - * circular structures for the RFD's & TCB's. Allocates the per board - * structure for storing adapter information. The CSR is also memory - * mapped in this routine. - * - * Returns : - * true: if S/W was successfully initialized - * false: otherwise - */ -static unsigned char zd1205_sw_init(struct zd1205_private *macp) +static int +zd1205_ioctl_getfrag(struct net_device *dev, struct iw_param *frq) { - //ZENTER(0); - zd1205_init_card_setting(macp); - zd1205_load_card_setting(macp, 1); - zd1205_set_zd_cbs(&dot11Obj); - zd_CmdProcess(CMD_RESET_80211, &dot11Obj, 0); - - /* Initialize our spinlocks */ - spin_lock_init(&(macp->bd_lock)); - spin_lock_init(&(macp->bd_non_tx_lock)); - //spin_lock_init(&(macp->q_lock)); - spin_lock_init(&(macp->conf_lock)); - - tasklet_init(&macp->zd1205_tasklet, zd1205_action, 0); - tasklet_init(&macp->zd1205_ps_tasklet, zd1205_ps_action, 0); - tasklet_init(&macp->zd1205_tx_tasklet, zd1205_tx_action, 0); - - //spin_lock_init(&(macp->intr_lock)); - spin_lock_init(&(macp->rx_pool_lock)); - tasklet_init(&macp->zd1211_rx_tasklet, zd1211_rx_isr, (unsigned long)macp); - tasklet_init(&macp->zd1211_tx_tasklet, zd1211_tx_isr, (unsigned long)macp); - tasklet_init(&macp->rx_buff_tasklet, zd1211_alloc_rx, (unsigned long)macp); + struct zd1205_private *macp = dev->priv; - macp->isolate_lock = RW_LOCK_UNLOCKED; - macp->driver_isolated = false; + u16 val; - //ZEXIT(0); - return 1; + zd1205_lock(macp); + val = macp->cardSetting.FragThreshold; + frq->value = val; + frq->disabled = (val >= 2346); + frq->fixed = 1; + zd1205_unlock(macp) + ; + + return 0; } -/** - * zd1205_hw_init - initialized tthe hardware - * @macp: atapter's private data struct - * @reset_cmd: s/w reset or selective reset - * - * This routine performs a reset on the adapter, and configures the adapter. - * This includes configuring the 82557 LAN controller, validating and setting - * the node address, detecting and configuring the Phy chip on the adapter, - * and initializing all of the on chip counters. - * - * Returns: - * true - If the adapter was initialized - * false - If the adapter failed initialization - */ -unsigned char zd1205_hw_init(struct zd1205_private *macp) +static int +zd1205_ioctl_setrate(struct net_device *dev, struct iw_param *frq) { - HW_ResetPhy(&dot11Obj); - HW_InitHMAC(&dot11Obj); - zd1205_config(macp); - return true; + return 0; } -#define MAX_MULTICAST_ADDRS 32 -void zd1211_set_multicast(struct zd1205_private *macp) +static int +zd1205_ioctl_getrate(struct net_device *dev, struct iw_param *frq) { - struct net_device *dev = macp->device; - struct dev_mc_list *mc_list; - unsigned int i; - - u8 *pKey; - u32 tmpValue; - u8 mcBuffer[192]; - u16 mcLen; + struct zd1205_private *macp = dev->priv; - if (!(dev->flags & IFF_UP)) - return; - if (macp->cardSetting.BssType == AP_BSS) - return; - zd_writel(0, GroupHash_P1); - zd_writel(0x80000000, GroupHash_P2); - macp->MulticastAddr[0] = dev->mc_count; - mcLen = dev->mc_count*ETH_ALEN ; - for (i = 0, mc_list = dev->mc_list;(i < dev->mc_count) && (i < MAX_MULTICAST_ADDRS);i++, mc_list = mc_list->next) { - //zd1205_dump_data("mc addr", (u8 *)&(mc_list->dmi_addr), ETH_ALEN); - memcpy(&macp->MulticastAddr[1+i * ETH_ALEN], (u8 *) &(mc_list->dmi_addr), ETH_ALEN); - } - macp->MulticastAddr[mcLen +1] = 0; - //zd1205_dump_data("MulticastAddr", (u8 *)macp->MulticastAddr, mcLen +2); + frq->fixed = 0; + frq->disabled = 0; + frq->value = 0; - memcpy(mcBuffer, &macp->MulticastAddr[1], mcLen); - //zd1205_dump_data("mcBuffer", (u8 *)mcBuffer, mcLen); - pKey = mcBuffer; - - for (i=0; i> 2; - if (*(pKey+i) >= 32) { - tmpValue = zd_readl(GroupHash_P2); - tmpValue |= (0x01 << (*(pKey+i)-32)); - zd_writel(tmpValue, GroupHash_P2); - } else { - tmpValue = zd_readl(GroupHash_P1); - tmpValue |= (0x01 << (*(pKey+i))); - zd_writel(tmpValue, GroupHash_P1); - } - } - } + switch(macp->cardSetting.CurrTxRate) + { + case RATE_1M: + frq->value = 1000000; + break; - macp->GroupHashP1 = zd_readl(GroupHash_P1); - macp->GroupHashP2 = zd_readl(GroupHash_P2); + case RATE_2M: - ZD1211DEBUG(1, "GroupHashP1 = %x\n", macp->GroupHashP1); - ZD1211DEBUG(1, "GroupHashP2 = %x\n", macp->GroupHashP2); + frq->value = 2000000; + break; - //for debug only - //zd_writel(0xffffffff, GroupHash_P1); - //zd_writel(0xffffffff, GroupHash_P2); -} + case RATE_5M: + frq->value = 5500000; + break; -void zd1205_set_multi(struct net_device *dev) + case RATE_11M: + frq->value = 11000000; + break; + + case RATE_6M: + frq->value = 6000000; + break; + + case RATE_9M: + frq->value = 9000000; + break; + + case RATE_12M: + frq->value = 12000000; + break; + + case RATE_18M: + frq->value = 18000000; + break; + + case RATE_24M: + frq->value = 24000000; + break; + + case RATE_36M: + frq->value = 36000000; + break; + + case RATE_48M: + frq->value = 48000000; + break; + + case RATE_54M: + frq->value = 54000000; + break; + + default: + return -EINVAL; + } + + return 0; +} +#if 0 // not used +static int +zd1205_ioctl_settxpower(struct net_device *dev, struct iw_param *prq) { - struct zd1205_private *macp = dev->priv; - defer_kevent(macp, KEVENT_SET_MULTICAST); + struct zd1205_private *macp = dev->priv; + int ret = 0; + +#define TX_17dbm 0x00 +#define TX_14dbm 0x01 +#define TX_11dbm 0x02 + + if(prq->value >= TX_17dbm && prq->value <= TX_11dbm) + macp->cardSetting.TxPowerLevel = prq->value; + else + ret = -EINVAL; + + return ret; } -#define TX_TIMEOUT (4*100) //4sec -/** - * zd1205_watchdog - * @dev: adapter's net_device struct - * - * This routine runs every 1 seconds and updates our statitics and link state, - * and refreshs txthld value. - */ -void zd1205_watchdog(struct zd1205_private *macp) +static int +zd1205_ioctl_gettxpower(struct net_device *dev, struct iw_param *prq) { - int i; - u32 diffTime; - card_Setting_t *pSetting = &macp->cardSetting; - u32 TxBytes, RxBytes; - u32 tmpvalue; - int j; - //read_lock(&(macp->isolate_lock)); + struct zd1205_private *macp = dev->priv; + + +#define TX_17dbm 0x00 +#define TX_14dbm 0x01 +#define TX_11dbm 0x02 + + prq->flags = 0; + prq->disabled = 0; + prq->fixed = 0; + + switch(macp->cardSetting.TxPowerLevel) + { + case TX_17dbm: + prq->value = 17; + break; + + case TX_14dbm: + prq->value = 14; + break; + + case TX_11dbm: + prq->value = 11; + break; - if (macp->driver_isolated) { - goto exit; - } + default: + return -EINVAL; + } - if (!netif_running(macp->device)) { - goto exit; - } + return 0; +} +#endif - rmb(); +static int +zd1205_ioctl_setpower(struct net_device *dev, struct iw_param *frq) +{ + struct zd1205_private *macp = dev->priv; - macp->CheckForHangLoop++; + int err = 0; - zd_PerSecTimer(); + zd1205_lock(macp); - TxBytes = macp->TotalTxDataFrmBytes; - RxBytes = macp->TotalRxDataFrmBytes; + if (frq->disabled) + { + printk(KERN_ERR "power save disabed\n"); + macp->cardSetting.ATIMWindow = 0x0; + macp->bPSMSupported = 0; + macp->PwrState = PS_CAM; + zd_EventNotify(EVENT_PS_CHANGE, (U8)macp->PwrState, 0, 0); + } else + { + printk(KERN_ERR "power save enabled\n"); + macp->cardSetting.ATIMWindow = 0x5; + macp->bPSMSupported = 1; + } + + zd1205_unlock(macp); + HW_UpdatePreTBTT(&dot11Obj, dot11Obj.BeaconInterval-BEFORE_BEACON); + + return err; +} + +static int +zd1205_ioctl_getpower(struct net_device *dev, struct iw_param *frq) +{ + struct zd1205_private *macp = dev->priv; + + zd1205_lock(macp); + if (macp->bPSMSupported) + frq->disabled = 0; + else + frq->disabled = 1; + zd1205_unlock(macp); + + return 0; +} + +static long +zd1205_hw_get_freq(struct zd1205_private *macp) +{ + u32 freq; + zd1205_lock(macp); + if(PURE_A_MODE != mMacMode) + freq = channel_frequency[dot11Obj.Channel-1] * 100000; + else if(PURE_A_MODE == mMacMode) + //for PURE_A_MODE the Channel Number is not required to sub one. + //Because the channel is get from setting not the order in array + freq = channel_11A_to_Freq(dot11Obj.Channel) * 100000; + zd1205_unlock(macp); + return freq; - // Check if AP(Access Point) still alive in the current channel - if ((pSetting->BssType == INFRASTRUCTURE_BSS) && (macp->bAssoc)) { - if (!macp->bAPAlive) { - macp->NoBcnDetectedCnt++; - if (dot11Obj.bChScanning) - macp->NoBcnDetectedCnt = 0; - - if (macp->activeTxQ->count > 12) - macp->NoBcnDetectedCnt = 0; - - if (macp->NoBcnDetectedCnt > 5) { - FPRINT("############## Lose AP"); - //ZD1211DEBUG(0, "############## Lose AP\n"); - zd1205_dis_connect(macp); - //zd_CmdProcess(CMD_DIS_CONNECT, 0, 0); - zd_CmdProcess(CMD_ROAMING, 0, 0); - macp->NoBcnDetectedCnt = 0; - //defer_kevent(macp, KEVENT_DIS_CONNECT); - } - } else{ - macp->NoBcnDetectedCnt = 0; - } +} - macp->bAPAlive = 0; - } +static int zd1205_ioctl_setmode(struct net_device *dev, __u32 *mode) +{ + struct zd1205_private *macp = dev->priv; - if ((macp->bPSMSupported) && (macp->bAssoc)) { - // Check if we need to enter the PSM (power-save mode), CAM mode or no-change - //if ((TxBytes == 0) && (RxBytes == 0)) { - if ((TxBytes < macp->PSThreshhold) && (RxBytes < macp->PSThreshhold)) { - macp->SuggestionMode = PS_PSM; - } - //else if((TxBytes + RxBytes) > 1000) { - else { - macp->SuggestionMode = PS_CAM; - } - } - - macp->TotalTxDataFrmBytes = 0; - macp->TotalRxDataFrmBytes = 0; + zd1205_lock(macp); + + if (macp->cardSetting.BssType == IW_MODE_MONITOR) + zd1205_monitor_mode_disable(macp); + + switch(*mode) + { + case IW_MODE_ADHOC: + ZD1211DEBUG(0, "Switch to Ad-Hoc mode\n"); + macp->cardSetting.BssType = INDEPENDENT_BSS; + + if (macp->bDefaultIbssMacMode==0) + macp->cardSetting.MacMode=PURE_B_MODE; + + zd_writel(STA_RX_FILTER, Rx_Filter); + break; + + case IW_MODE_INFRA: + ZD1211DEBUG(0, "Switch to Infra mode\n"); + macp->cardSetting.BssType = INFRASTRUCTURE_BSS; + macp->cardSetting.AuthMode = 0; + + if (macp->bDefaultIbssMacMode==0) { + macp->cardSetting.MacMode=MIXED_MODE; + } + + zd_writel(STA_RX_FILTER, Rx_Filter); + break; + + + case IW_MODE_MASTER: + ZD1211DEBUG(0, "Switch to AP mode\n"); + macp->cardSetting.BssType = AP_BSS; + + /* Set bssid = MacAddress */ + + macp->BSSID[0] = macp->macAdr[0]; + macp->BSSID[1] = macp->macAdr[1]; + macp->BSSID[2] = macp->macAdr[2]; + + macp->BSSID[3] = macp->macAdr[3]; + macp->BSSID[4] = macp->macAdr[4]; + macp->BSSID[5] = macp->macAdr[5]; + + zd_writel(cpu_to_le32(*(u32 *)&macp->macAdr[0]), BSSID_P1); + zd_writel(cpu_to_le32(*(u32 *)&macp->macAdr[4]), BSSID_P2); + macp->cardSetting.AuthMode = 2; //auto auth + zd_writel(AP_RX_FILTER, Rx_Filter); + netif_start_queue(dev); + break; + + case IW_MODE_MONITOR: + ZD1211DEBUG(0, "Switch to Monitor mode\n"); + macp->cardSetting.BssType = IW_MODE_MONITOR; + zd1205_monitor_mode_enable(macp); + break; + + default: + ZD1211DEBUG(0, "Switch to PSEUDO_IBSS mode\n"); + macp->cardSetting.BssType = PSEUDO_IBSS; + zd_writel(STA_RX_FILTER, Rx_Filter); + break; + + } + + macp->bAssoc = 0; + if (macp->usb->speed != USB_SPEED_HIGH) + macp->cardSetting.MacMode = PURE_B_MODE; + else + { +#if 0 + if (macp->cardSetting.BssType == INDEPENDENT_BSS) + macp->cardSetting.MacMode = PURE_B_MODE; + else + macp->cardSetting.MacMode = MIXED_MODE; +#endif -exit: - //read_unlock(&(macp->isolate_lock)); - j = 0; + } + + zd1205_SetRatesInfo(macp); + zd1205_unlock(macp); + return 0; } -void zd1205_watchdog_cb(struct net_device *dev) + +///////////////////////// + +static int +zd1205_ioctl_getretry(struct net_device *dev, struct iw_param *prq) { - struct zd1205_private *macp = dev->priv; - defer_kevent(macp, KEVENT_WATCH_DOG); - mod_timer(&(macp->watchdog_timer), jiffies+(1*HZ)); + return 0; } -/** - * zd1205_alloc_space - allocate private driver data - * @macp: atapter's private data struct - * - * This routine allocates memory for the driver. Memory allocated is for the - * selftest and statistics structures. - * - * Returns: - * 0: if the operation was successful - * %-ENOMEM: if memory allocation failed - */ -unsigned char zd1205_alloc_space(struct zd1205_private *macp) +/* For WIRELESS_EXT > 12 */ +static int zd1205wext_giwfreq(struct net_device *dev, struct iw_request_info *info, struct iw_freq *freq, char *extra) { - /* deal with Tx cached memory */ - macp->txCachedSize = (macp->numTcb * sizeof(zd1205_SwTcb_t)); - macp->txCached = kmalloc(macp->txCachedSize, GFP_ATOMIC); - - if (!macp->txCached) { - printk(KERN_ERR "zd1205: kmalloc txCached failed\n"); - return 1; - } else { - memset(macp->txCached, 0, macp->txCachedSize); - return 0; - } + struct zd1205_private *macp; + if(!netif_running(dev)) + return -EINVAL; + + macp = dev->priv; + freq->m = zd1205_hw_get_freq(macp); + freq->e = 1; + return 0; } -static void zd1205_dealloc_space(struct zd1205_private *macp) +static int zd1205wext_siwmode(struct net_device *dev, struct iw_request_info *info, __u32 *mode, char *extra) { - if (macp->txCached) - kfree(macp->txCached); + int err; + err = zd1205_ioctl_setmode(dev, mode); + return err; } -/* Read the permanent ethernet address from the eprom. */ -void zd1205_rd_eaddr(struct zd1205_private *macp) + +static int zd1205wext_giwmode(struct net_device *dev, struct iw_request_info *info, __u32 *mode, char *extra) { - u32 tmpValue; - tmpValue = zd_readl(E2P_MACADDR_P1); - ZD1211DEBUG(1, "E2P_MACADDR_P1 = %08x\n", tmpValue); - macp->device->dev_addr[0] = macp->macAdr[0] = (u8)tmpValue;//0x00; - macp->device->dev_addr[1] = macp->macAdr[1] = (u8)(tmpValue >> 8);//0xA0; - macp->device->dev_addr[2] = macp->macAdr[2] = (u8)(tmpValue >> 16);//0xC5; - macp->device->dev_addr[3] = macp->macAdr[3] = (u8)(tmpValue >> 24);//0x11; + struct zd1205_private *macp = dev->priv; + u8 BssType = macp->cardSetting.BssType; - tmpValue = zd_readl(E2P_MACADDR_P2); - ZD1211DEBUG(1, "E2P_MACADDR_P2 = %08x\n", tmpValue); - macp->device->dev_addr[4] = macp->macAdr[4] = (u8)tmpValue;//0x22; - macp->device->dev_addr[5] = macp->macAdr[5] = (u8)(tmpValue >> 8);//0x33; + if(!netif_running(dev)) + return -EINVAL; - ZD1211DEBUG(0, "MAC address = %02x:%02x:%02x:%02x:%02x:%02x\n", - macp->device->dev_addr[0], macp->device->dev_addr[1], macp->device->dev_addr[2], - macp->device->dev_addr[3], macp->device->dev_addr[4], macp->device->dev_addr[5]); - macp->cardSetting.MacAddr[0] = macp->macAdr[0]; - macp->cardSetting.MacAddr[1] = macp->macAdr[1]; - macp->cardSetting.MacAddr[2] = macp->macAdr[2]; - macp->cardSetting.MacAddr[3] = macp->macAdr[3]; - macp->cardSetting.MacAddr[4] = macp->macAdr[4]; - macp->cardSetting.MacAddr[5] = macp->macAdr[5]; + zd1205_lock(macp); + + switch(BssType) + { + case AP_BSS: + *mode = IW_MODE_MASTER; + break; + + case INFRASTRUCTURE_BSS: + *mode = IW_MODE_INFRA; + break; + + case INDEPENDENT_BSS: + *mode = IW_MODE_ADHOC; + break; + + case IW_MODE_MONITOR: + *mode = IW_MODE_MONITOR; + break; + + default: + *mode = IW_MODE_ADHOC; + break; + } + + zd1205_unlock(macp); + return 0; } -inline void zd1205_lock(struct zd1205_private *macp) +static int zd1205wext_giwrate(struct net_device *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra) { - spin_lock(&macp->conf_lock); + if(!netif_running(dev)) + return -EINVAL; + + return zd1205_ioctl_getrate(dev, rrq); } -inline void zd1205_unlock(struct zd1205_private *macp) +static int zd1205wext_giwrts(struct net_device *dev, struct iw_request_info *info, struct iw_param *rts, char *extra) { - spin_unlock(&macp->conf_lock); -} + struct zd1205_private *macp; + macp = dev->priv; -//wireless extension helper functions -/* taken from orinoco.c ;-) */ -const long channel_frequency[] = { - 2412, 2417, 2422, 2427, 2432, 2437, 2442, - 2447, 2452, 2457, 2462, 2467, 2472, 2484 -}; + if(!netif_running(dev)) + return -EINVAL; -#define NUM_CHANNELS ( sizeof(channel_frequency) / sizeof(channel_frequency[0]) ) -#define MAX_KEY_SIZE 29 // 256bit WEP -#define MED_KEY_SIZE 13 // 128bit WEP -#define MIN_KEY_SIZE 5 // 64bit WEP + rts->value = macp->cardSetting.RTSThreshold; + rts->disabled = (rts->value == 2347); + rts->fixed = 1; + + return 0; +} + +static int zd1205wext_giwfrag(struct net_device *dev, struct iw_request_info *info, struct iw_param *frag, char *extra) +{ + if(!netif_running(dev)) + return -EINVAL; -static int zd1205_ioctl_setiwencode(struct net_device *dev, struct iw_point *erq, char *key) + return zd1205_ioctl_getfrag(dev, frag); +} +#if 0 // not used +static int zd1205wext_giwtxpow(struct net_device *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra) { - struct zd1205_private *macp = dev->priv; - card_Setting_t *pSetting = &macp->cardSetting; + if(!netif_running(dev)) + return -EINVAL; - if (erq->length > 0) { - int index = (erq->flags & IW_ENCODE_INDEX) - 1; - int current_index = pSetting->EncryKeyId; + return zd1205_ioctl_gettxpower(dev, rrq); +} - ZD1211DEBUG(1, "index = %d\n", index); - ZD1211DEBUG(1, "erq->length = %d\n", erq->length); +static int zd1205wext_siwtxpow(struct net_device *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra) +{ + return zd1205_ioctl_settxpower(dev, rrq); +} +#endif - if (erq->length > MAX_KEY_SIZE) - return -EINVAL; +static int zd1205wext_giwrange(struct net_device *dev, struct iw_request_info *info, struct iw_point *data, char *extra) +{ + struct iw_range *range = (struct iw_range *) extra; + int i, val; + if(!netif_running(dev)) + return -EINVAL; - if ((index < 0) || (index >= 4)) - index = current_index; - /* Set the length */ - if (erq->length == MAX_KEY_SIZE) { - pSetting->WepKeyLen = MAX_KEY_SIZE; - pSetting->EncryMode = WEP256; - } else if (erq->length > MIN_KEY_SIZE) { - pSetting->WepKeyLen = MED_KEY_SIZE; - pSetting->EncryMode = WEP128; - } else { - if (erq->length > 0) { - pSetting->WepKeyLen = MIN_KEY_SIZE; - pSetting->EncryMode = WEP64; - } else { - pSetting->WepKeyLen = 0; /* Disable the key */ - pSetting->EncryMode = NO_WEP; - } - } +#if WIRELESS_EXT > 9 - /* Check if the key is not marked as invalid */ - if (!(erq->flags & IW_ENCODE_NOKEY)) { - // Only change the current keyid when explicitly asked - // pSetting->EncryKeyId = index; + range->txpower_capa = IW_TXPOW_DBM; + // XXX what about min/max_pmp, min/max_pmt, etc. +#endif - memcpy(&pSetting->keyVector[index][0], key, pSetting->WepKeyLen); - zd1205_config_wep_keys(macp); - } +#if WIRELESS_EXT > 10 - /* WE specify that if a valid key is set, encryption - * should be enabled (user may turn it off later) - * This is also how "iwconfig ethX key on" works */ - if ((index == current_index) && (pSetting->WepKeyLen > 0) && - (pSetting->EncryOnOff == 0)) { - pSetting->EncryOnOff = 1; - } - } else { - /* Do we want to just set the transmit key index ? */ - int index = (erq->flags & IW_ENCODE_INDEX) - 1; - if ((index>=0) && (index < 4)) { - pSetting->EncryKeyId = index; - } else - /* Don't complain if only change the mode */ - if(!erq->flags & IW_ENCODE_MODE) { - return -EINVAL; - } - } + range->we_version_compiled = WIRELESS_EXT; + range->we_version_source = 13; + range->retry_capa = IW_RETRY_LIMIT; + range->retry_flags = IW_RETRY_LIMIT; + range->min_retry = 0; + range->max_retry = 255; - /* Read the flags */ - if(erq->flags & IW_ENCODE_DISABLED) { - ZD1211DEBUG(1, "IW_ENCODE_DISABLED\n"); - pSetting->EncryOnOff = 0; // disable encryption - } +#endif /* WIRELESS_EXT > 10 */ - if(erq->flags & IW_ENCODE_RESTRICTED) { - pSetting->EncryOnOff = 1; - } - if(erq->flags & IW_ENCODE_OPEN) { - pSetting->EncryOnOff = 1; // Only Wep - } - defer_kevent(macp, KEVENT_UPDATE_SETTING); - return 0; + /* XXX need to filter against the regulatory domain &| active set */ + val = 0; + if(PURE_A_MODE != mMacMode ) + { + for (i = 0; i < NUM_CHANNELS ; i++) { + range->freq[val].i = i + 1; + range->freq[val].m = channel_frequency[i] * 100000; + range->freq[val].e = 1; + val++; + } + } else if(PURE_A_MODE == mMacMode) + { + for (i = 0; i < NUM_CHANNELS_11A && i < 32; i++) { + range->freq[val].i = channel_frequency_11A[i*2]; + ; + range->freq[val].m = channel_frequency_11A[i*2+1] * 100000; + range->freq[val].e = 1; + val++; + //For 802.11a, there are too more frequency. We can't return them all + } + + } + + + range->num_frequency = val; + + /* Max of /proc/net/wireless */ + range->max_qual.qual = 100; + range->max_qual.level = 100; + + range->max_qual.noise = 100; + range->sensitivity = 3; + + // XXX these need to be nsd-specific! + range->min_rts = 256; + range->max_rts = 2346; + + range->min_frag = 256; + range->max_frag = 2346; + range->max_encoding_tokens = NUM_WEPKEYS; + range->num_encoding_sizes = 2; + range->encoding_size[0] = 5; + range->encoding_size[1] = 13; + + // XXX what about num_bitrates/throughput? + range->num_bitrates = 0; + + /* estimated max throughput */ + // XXX need to cap it if we're running at ~2Mbps.. + range->throughput = 5500000; + + return 0; } -static int zd1205_ioctl_getiwencode(struct net_device *dev, struct iw_point *erq, char *key) +#if WIRELESS_EXT > 12 +static int zd1205wext_commit(struct net_device *dev, struct iw_request_info *info, void *wrqu, char *extra) { - struct zd1205_private *macp = dev->priv; - card_Setting_t *pSetting = &macp->cardSetting; - int index = (erq->flags & IW_ENCODE_INDEX) - 1; - - zd1205_lock(macp); - if (pSetting->EncryOnOff) { - erq->flags = IW_ENCODE_OPEN; - } else { - erq->flags = IW_ENCODE_DISABLED; - } - - /* We can't return the key, so set the proper flag and return zero */ - erq->flags |= IW_ENCODE_NOKEY; - memset(key, 0, 16); - - /* Which key do we want ? -1 -> tx index */ - if((index < 0) || (index >= 4)) - index = pSetting->EncryKeyId; - - erq->flags |= index + 1; - /* Copy the key to the user buffer */ - - erq->length = pSetting->WepKeyLen; - if (erq->length > MAX_KEY_SIZE) { - erq->length = 0; - } - zd1205_unlock(macp); + struct zd1205_private *macp; + macp = dev->priv; + defer_kevent(macp, KEVENT_UPDATE_SETTING); return 0; } +#endif -static int zd1205_ioctl_setessid(struct net_device *dev, struct iw_point *erq) +#if WIRELESS_EXT > 13 +static int zd1205wext_siwscan(struct net_device *dev, struct iw_request_info *info, struct iw_point *data, char *extra) { - struct zd1205_private *macp = dev->priv; - char essidbuf[IW_ESSID_MAX_SIZE+1]; - - memset(&essidbuf, 0, sizeof(essidbuf)); + // u8 i; + // u8 oldMacMode; + //u32 ul_mac_ps_state; + //u16 channel; + //BOOLEAN ProbeWithSsid_bak; + struct zd1205_private *macp = g_dev->priv; + u32 wait_cnt = 0; + + if(!netif_running(dev)) + return -EINVAL; + + goto scanning_done; +#if 0 + // If the device is scanning when user issue site survey request, we use the result of it directly. + if (dot11Obj.bChScanning) + { // Use the result of driver-driven scan. + while (dot11Obj.bChScanning) { + int cnt=0; + cnt++; + if(cnt>500) { + printk("Locked in waitting bChScanning for 5s. Exit!\n"); + dot11Obj.bChScanning=FALSE; + CurrScanCH=1; + return 0; + } + wait_ms(10); + } + goto scanning_done; + } else + { + // Set Scanning flag firstly to prevent device from entering sleeping state again before complete of site survey. + dot11Obj.bChScanning=1; + while (dot11Obj.bDeviceInSleep) { // busy wait until the device is awaken. + wait_ms(1); + } + } + + //*********************************************************************** + // Execute site survey request only bChScanning flag is FALSE. + { // Execute user's site survey request. + ProbeWithSsid_bak=mProbeWithSsid; + mProbeWithSsid=0; // Send Probe request with broadcast ssid. + zd_ScanBegin(); + for (channel=1; channel <= 14; channel++) + { + zd_CmdScanReq(channel);//Set RF channel then send ProbeRequest + wait_ms(100); + } + zd_ScanEnd(); + dot11Obj.bChScanning=0; + mProbeWithSsid=ProbeWithSsid_bak; + } +#endif +scanning_done: + if(!dot11Obj.bChScanning) + { + if(1 || mAssoc) { + dot11Obj.ConfigFlag |= JUST_CHANNEL_SCAN; + zd_CmdProbeReq(0); + } else + ;// This mean there is one just done scanning. + } + while(dot11Obj.bChScanning) + { + if(wait_cnt++ > 100) { + int i; + for(i=0;i<10;i++) + printk(KERN_ERR "UnStoppable Scanning\n"); + dot11Obj.bChScanning=0; + break; + } + wait_ms(50); + } + + zd1205_notify_scan_done(macp); + set_bit(CTX_FLAG_ESSID_WAS_SET, (void *)&macp->flags); - if (erq->flags) { - if (erq->length > IW_ESSID_MAX_SIZE) - return -E2BIG; - if (copy_from_user(&essidbuf, erq->pointer, erq->length)) - return -EFAULT; - } + return 0; - zd1205_lock(macp); - memcpy(&macp->cardSetting.Info_SSID[2], essidbuf, erq->length-1); - macp->cardSetting.Info_SSID[1] = erq->length-1; - zd1205_unlock(macp); +} - return 0; +#if WIRELESS_EXT > 14 +/* + * Encode a WPA or RSN information element as a custom + * element using the hostap format. + */ +static u_int +encode_ie(void *buf, size_t bufsize, + const u_int8_t *ie, size_t ielen, + const char *leader, size_t leader_len) +{ + u8 *p; + int i; + + if (bufsize < leader_len) + return 0; + p = buf; + memcpy(p, leader, leader_len); + bufsize -= leader_len; + p += leader_len; + for (i = 0; i < ielen && bufsize > 2; i++) + p += sprintf(p, "%02x", ie[i]); + return (i == ielen ? p - (u8 *)buf : 0); } +#endif /* WIRELESS_EXT > 14 */ -static int zd1205_ioctl_getessid(struct net_device *dev, struct iw_point *erq) +/*------------------------------------------------------------------*/ +/* + * Translate scan data returned from the card to a card independent + * format that the Wireless Tools will understand + */ +static char *zd1205_translate_scan(struct net_device *dev, + char *current_ev, + char *end_buf, + bss_info_t *list) { - struct zd1205_private *macp = dev->priv; - char essidbuf[IW_ESSID_MAX_SIZE+1]; - u8 len; - - zd1205_lock(macp); + struct iw_event iwe; /* Temporary buffer */ + u16 capabilities; - if (macp->bAssoc) { - len = dot11Obj.CurrSsid[1]; - memcpy(essidbuf, &dot11Obj.CurrSsid[2], len); - } else { - len = macp->cardSetting.Info_SSID[1]; - memcpy(essidbuf, &macp->cardSetting.Info_SSID[2], len); - } - essidbuf[len] = 0; - - zd1205_unlock(macp); +#if WIRELESS_EXT > 14 - erq->flags = 1; - erq->length = strlen(essidbuf) + 1; - //zd1205_dump_data("essidbuf", (u8 *)essidbuf, erq->length); + char buf[64*2 + 30]; +#endif - if (erq->pointer) - if (copy_to_user(erq->pointer, essidbuf, erq->length)) - return -EFAULT; + char *current_val; /* For rates */ + U32 Tmp; + int i; + + /* First entry *MUST* be the AP MAC address */ + iwe.cmd = SIOCGIWAP; + iwe.u.ap_addr.sa_family = ARPHRD_ETHER; + memcpy(iwe.u.ap_addr.sa_data, list->bssid, ETH_ALEN); + current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_ADDR_LEN); + + /* Other entries will be displayed in the order we give them */ + + /* Add the ESSID */ + iwe.u.data.length = list->ssid[1]; + if(iwe.u.data.length > 32) + iwe.u.data.length = 32; + iwe.cmd = SIOCGIWESSID; + iwe.u.data.flags = 1; + current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, &list->ssid[2]); + + /* Add mode */ + iwe.cmd = SIOCGIWMODE; + capabilities = list->cap; + if(capabilities & (0x01 | 0x02)) + { + if(capabilities & 0x01) + iwe.u.mode = IW_MODE_MASTER; + + else + iwe.u.mode = IW_MODE_ADHOC; + current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_UINT_LEN); + } + + /* Add frequency */ + iwe.cmd = SIOCGIWFREQ; + iwe.u.freq.m = list->channel; + if(list->apMode != PURE_A_AP) + iwe.u.freq.m = channel_frequency[iwe.u.freq.m-1] * 100000; + else + { + iwe.u.freq.m = channel_11A_to_Freq(iwe.u.freq.m) * 100000; + } + iwe.u.freq.e = 1; + current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_FREQ_LEN); + +#if WIRELESS_EXT < 15 + /* Add quality statistics */ + iwe.cmd = IWEVQUAL; + + Tmp = -(100 - list->signalStrength); + Tmp = Tmp > -40 ? -40: Tmp; + Tmp = Tmp < -105 ? -105: Tmp; + Tmp = (Tmp + 105)*100/65; + iwe.u.qual.level = Tmp; + iwe.u.qual.noise = 0; + iwe.u.qual.qual = list->signalQuality; + current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_QUAL_LEN); +#else + // Transform Signal quality from level to percentage + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = IWEVCUSTOM; + Tmp = -(100 - list->signalStrength); + Tmp = Tmp > -40 ? -40: Tmp; + Tmp = Tmp < -105 ? -105: Tmp; + Tmp = (Tmp + 105)*100/65; + + snprintf(buf, sizeof(buf), "SignalStrength=%d\%,LinkQuality:%d\%", Tmp,list->signalQuality); + iwe.u.data.length = strlen(buf); + current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, buf); +#endif + // + /* Add encryption capability */ - return 0; + iwe.cmd = SIOCGIWENCODE; + if(capabilities & 0x10) + iwe.u.data.flags = IW_ENCODE_ENABLED | IW_ENCODE_NOKEY; + else + iwe.u.data.flags = IW_ENCODE_DISABLED; + iwe.u.data.length = 0; + current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, list->ssid); + + /* Rate : stuffing multiple values in a single event require a bit + * more of magic */ + current_val = current_ev + IW_EV_LCP_LEN; + + + iwe.cmd = SIOCGIWRATE; + + + /* Those two flags are ignored... */ + iwe.u.bitrate.fixed = iwe.u.bitrate.disabled = 0; + + for(i = 0 ; i < list->supRates[1] ; i++) + { + /* Bit rate given in 500 kb/s units (+ 0x80) */ + iwe.u.bitrate.value = ((list->supRates[i+2] & 0x7f) * 500000); + /* Add new value to event */ + current_val = iwe_stream_add_value(current_ev, current_val, end_buf, &iwe, IW_EV_PARAM_LEN); + } + + if (list->apMode != PURE_B_AP) + { + for (i = 0 ; i < list->extRates[1] ; i++) { + /* Bit rate given in 500 kb/s units (+ 0x80) */ + iwe.u.bitrate.value = ((list->extRates[i+2] & 0x7f) * 500000); + /* Add new value to event */ + current_val = iwe_stream_add_value(current_ev, current_val, end_buf, &iwe, IW_EV_PARAM_LEN); + } + } + + /* Check if we added any event */ + if((current_val - current_ev) > IW_EV_LCP_LEN) + current_ev = current_val; + +#if WIRELESS_EXT > 14 + +#define IEEE80211_ELEMID_RSN 0x30 + + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = IWEVCUSTOM; + snprintf(buf, sizeof(buf), "bcn_int=%d", list->beaconInterval); + iwe.u.data.length = strlen(buf); + current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, buf); + + if (list->WPAIe[1] != 0) + { + static const char rsn_leader[] = "rsn_ie="; + static const char wpa_leader[] = "wpa_ie="; + + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = IWEVCUSTOM; + if (list->WPAIe[0] == IEEE80211_ELEMID_RSN) + iwe.u.data.length = encode_ie(buf, sizeof(buf), + list->WPAIe, list->WPAIe[1]+2, + rsn_leader, sizeof(rsn_leader)-1); + else + iwe.u.data.length = encode_ie(buf, sizeof(buf), + list->WPAIe, list->WPAIe[1]+2, + wpa_leader, sizeof(wpa_leader)-1); + if (iwe.u.data.length != 0) + current_ev = iwe_stream_add_point(current_ev, end_buf, + &iwe, buf); + } + if (list->RSNIe[1] != 0) + { + static const char rsn_leader[] = "rsn_ie="; + memset(&iwe, 0, sizeof(iwe)); + iwe.cmd = IWEVCUSTOM; + if (list->RSNIe[0] == IEEE80211_ELEMID_RSN) { + iwe.u.data.length = encode_ie(buf, sizeof(buf), + list->RSNIe, list->RSNIe[1]+2, + rsn_leader, sizeof(rsn_leader)-1); + if (iwe.u.data.length != 0) + current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, buf); + } + } + +#endif /* WIRELESS_EXT > 14 */ + + /* The other data in the scan result are not really + * interesting, so for now drop it */ + return current_ev; } -static int zd1205_ioctl_setfreq(struct net_device *dev, struct iw_freq *frq) + +static int zd1205wext_giwscan(struct net_device *dev, struct iw_request_info *info, struct iw_point *data, char *extra) { - struct zd1205_private *macp = dev->priv; - int chan = -1; + struct zd1205_private *macp = dev->priv; + char *current_ev = extra; + int i; - if (macp->cardSetting.BssType == INFRASTRUCTURE_BSS) - return -EINVAL; + if(!netif_running(dev)) + return -EINVAL; - if ( (frq->e == 0) && (frq->m <= 1000) ) { - /* Setting by channel number */ - chan = frq->m; - } else { - /* Setting by frequency - search the table */ - int mult = 1; - int i; - - for (i = 0; i < (6 - frq->e); i++) - mult *= 10; - for (i = 0; i < NUM_CHANNELS; i++) - if (frq->m == (channel_frequency[i] * mult)) - chan = i+1; - } + //ZENTER(0); - if ( (chan < 1) || (chan > NUM_CHANNELS) ) - return -EINVAL; + macp->bss_index = zd_GetBssList(&macp->BSSInfo[0]); + //ZD1211DEBUG(0, "macp->bss_index = %x\n", macp->bss_index); - zd1205_lock(macp); - macp->cardSetting.Channel = chan; - zd1205_unlock(macp); + /* Read and parse all entries */ + for (i=0; ibss_index; i++) + { + /* Translate to WE format this entry */ + current_ev = zd1205_translate_scan(dev, current_ev, + extra + IW_SCAN_MAX_DATA, + &macp->BSSInfo[i]); - return 0; + } + + /* Length of data */ + data->length = (current_ev - extra); + data->flags = 0; /* todo */ + + return 0; } -static int zd1205_ioctl_getsens(struct net_device *dev, struct iw_param *srq) +#endif +#ifdef ZDCONF_APDBG +void zd1205_dumpEEPROM(struct zd1205_private *macp) { - return 0; -} + int i,ret; + u8 int54,int36,cal54,cal36; -//static int -//zd1205_ioctl_setsens(struct net_device *dev, struct iw_param *srq) -//{ -// return 0; -//} + if(AL7230B_RF == dot11Obj.rfMode) + { + printk("802.11a Integration & SetPoint Values:\n"); + printk("-----------------------------------------\n"); + } + + for(i=0;iEepSetPoint[i-1], + macp->SetPointOFDM[0][i-1], + macp->SetPointOFDM[1][i-1],macp->SetPointOFDM[2][i-1]); + } -static int zd1205_ioctl_setrts(struct net_device *dev, struct iw_param *rrq) -{ - struct zd1205_private *macp = dev->priv; - int val = rrq->value; +} +#endif - if (rrq->disabled) - val = 2347; +void zd1205_list_bss(struct zd1205_private *macp) +{ + int i, j; + U32 Tmp; - if ( (val < 0) || (val > 2347) ) - return -EINVAL; + u16 cap; + bss_info_t *pBssInfo; - zd1205_lock(macp); + printk("\nSSID BSSID CH Signal Mode Basic-Rates Ext-Rates b/g AP"); + printk("\n------------------------------------------------------------------------------------"); - macp->cardSetting.RTSThreshold = val; - zd1205_unlock(macp); + for (i=0; ibss_index; i++) + { + pBssInfo = &macp->BSSInfo[i]; + printk("\n"); + + for (j=0; jssid[1]; j++) { + printk("%c", pBssInfo->ssid[2+j]); + } + + for (j=pBssInfo->ssid[1]; j<12; j++) { + printk(" "); + } + + printk("%02x:%02x:%02x:%02x:%02x:%02x", + pBssInfo->bssid[0], pBssInfo->bssid[1], pBssInfo->bssid[2], + pBssInfo->bssid[3], pBssInfo->bssid[4], pBssInfo->bssid[5]); + printk(" %2d", pBssInfo->channel); + Tmp = -(100 - pBssInfo->signalStrength); + Tmp = Tmp > -40 ? -40: Tmp; + Tmp = Tmp < -105 ? -105: Tmp; + Tmp = (Tmp + 105)*100/65; + + printk(" %2d %", Tmp); + + cap = pBssInfo->cap; + cap &= (0x10 | 0x02 | 0x01); + + switch(cap) { + case 0x01: + + printk(" Infra "); + break; + + case 0x02: + printk(" Ad_Hoc "); + break; + + case 0x11: + printk(" Infra, W"); + break; + + case 0x12: + printk(" Ad_Hoc,W"); + break; + + default : + break; + } + + + printk(" "); + + for (j=0; jsupRates[1]; j++) { + printk(" %x", pBssInfo->supRates[2+j]); + } + + printk(" "); + for (j=0; jextRates[1]; j++) { + printk(" %x", pBssInfo->extRates[2+j]); + + } + + if (pBssInfo->apMode == PURE_B_AP) + printk(" B-AP"); + else if (pBssInfo->apMode == PURE_G_AP) + printk(" G-AP"); + else if (pBssInfo->apMode == MIXED_AP) + printk(" M-AP"); + else if (pBssInfo->apMode == PURE_A_AP) + printk(" A-AP"); + else { + VerAssert(); + } + } + printk("\n"); +} + + +/* ath_desc: support for unpatched wpasupplicant */ +static void zd1211_print_auth_alg_desc(const u32 auth_alg) { + if (auth_alg & IW_AUTH_ALG_OPEN_SYSTEM) + printk(" Open system"); + if (auth_alg & IW_AUTH_ALG_SHARED_KEY) + printk(" Shared key"); + if (auth_alg & IW_AUTH_ALG_LEAP) + printk(" LEAP"); + printk("\n"); +} - return 0; +static const char * zd1211_print_enabled_disabled(const u32 value) { + return (value ? "enabled" : "disabled"); } -static int zd1205_ioctl_setfrag(struct net_device *dev, struct iw_param *frq) -{ - struct zd1205_private *macp = dev->priv; - int err = 0; - - zd1205_lock(macp); - if (frq->disabled) { - macp->cardSetting.FragThreshold = 2346; - } else { - if ((frq->value < 256) || (frq->value > 2346)) { - err = -EINVAL; - } else { - macp->cardSetting.FragThreshold= frq->value & ~0x1; /* must be even */ - } +static void zd1211_print_cipher(const u32 cipher) { + switch (cipher) { + case IW_AUTH_CIPHER_NONE: + printk(" NONE"); + break; + case IW_AUTH_CIPHER_WEP40: + printk(" WEP40"); + break; + case IW_AUTH_CIPHER_TKIP: + printk(" TKIP"); + break; + case IW_AUTH_CIPHER_CCMP: + printk(" CCMP"); + break; + case IW_AUTH_CIPHER_WEP104: + printk(" WEP104"); + break; + default: + printk(" unsupported cipher '0x%0X8'", cipher); } + printk("\n"); +} - zd1205_unlock(macp); +static void zd1211_print_key_mgmt(const u32 key_mgmt) { + switch (key_mgmt) { + case IW_AUTH_KEY_MGMT_802_1X: + printk(" IEEE802.1X"); + break; + case IW_AUTH_KEY_MGMT_PSK: + printk(" PSK"); + break; + default: + printk(" unsupported key mgmt '0x%0X8'", key_mgmt); + } + printk("\n"); +} - return err; +static void zd1211_print_roaming(const u32 roaming) { + switch (roaming) { + case IW_AUTH_ROAMING_ENABLE: + printk(" driver/firmware based"); + break; + case IW_AUTH_ROAMING_DISABLE: + printk(" done in user space"); + break; + default: + printk(" unsupported roaming strategy '0x%0X8'", roaming); + } + printk("\n"); } -static int zd1205_ioctl_getfrag(struct net_device *dev, struct iw_param *frq) -{ - struct zd1205_private *macp = dev->priv; +static void zd1211_print_wpa_version(const u32 wpa_version) { + switch (wpa_version) { + case IW_AUTH_WPA_VERSION_DISABLED: + printk(" WPA disabled"); + break; + case IW_AUTH_WPA_VERSION_WPA: + printk(" WPA"); + break; + case IW_AUTH_WPA_VERSION_WPA2: + printk(" WPA2"); + break; + default: + printk(" unsupported version '0x%0X8'", wpa_version); + } + printk("\n"); +} - u16 val; +static const int zd1211_set_auth_param(struct net_device *net_dev, const int idx, const u32 value) { + int result; + struct zd1205_private *macp; - zd1205_lock(macp); - val = macp->cardSetting.FragThreshold; - frq->value = val; - frq->disabled = (val >= 2346); + macp = net_dev->priv; + result = -EINVAL; + switch(idx) { + case IW_AUTH_WPA_VERSION: + printk(KERN_INFO "%s: WPA version: ", net_dev->name); + zd1211_print_wpa_version(value); + result = 0; + break; + case IW_AUTH_CIPHER_PAIRWISE: + printk(KERN_INFO "%s: pairwise cipher: ", net_dev->name); + zd1211_print_cipher(value); + result = 0; + break; + case IW_AUTH_CIPHER_GROUP: + printk(KERN_INFO "%s: group cipher: ", net_dev->name); + zd1211_print_cipher(value); + result = 0; + break; + case IW_AUTH_KEY_MGMT: + printk(KERN_INFO "%s: key mgmt: ", net_dev->name); + zd1211_print_key_mgmt(value); + result = 0; + break; + case IW_AUTH_80211_AUTH_ALG: + printk(KERN_INFO "%s: Configured authentication algorithms:", net_dev->name); + zd1211_print_auth_alg_desc(value); + result = 0; + break; + case IW_AUTH_DROP_UNENCRYPTED: + printk(KERN_INFO "%s: Drop encrypted: %s\n", net_dev->name, zd1211_print_enabled_disabled(value) ); + result = 0; + break; + case IW_AUTH_TKIP_COUNTERMEASURES: + if (value) { + mCounterMeasureState = dot11Obj.MIC_CNT ? 1 : 0; + printk(KERN_INFO "%s: TKIP counter measures: %s\n", net_dev->name, zd1211_print_enabled_disabled(mCounterMeasureState) ); + } + result = 0; + break; + case IW_AUTH_WPA_ENABLED: + if (value) { + macp->cardSetting.WPASupport = 1; + } else { + /* Reset the WPA related variables */ + macp->cardSetting.WPASupport = 0; + /* Now we only set the length in the WPA IE + * field to zero. */ + macp->cardSetting.WPAIe[1] = 0; + } + printk(KERN_INFO "%s: WPA: %s\n", net_dev->name, zd1211_print_enabled_disabled(value) ); + result = 0; + break; + case IW_AUTH_RX_UNENCRYPTED_EAPOL: + printk(KERN_INFO "%s: Allow Rx unencrypted EAPOL: %s\n", net_dev->name, zd1211_print_enabled_disabled(value) ); + result = 0; + break; + case IW_AUTH_ROAMING_CONTROL: + printk(KERN_INFO "%s: roaming: ", net_dev->name); + macp->cardSetting.ap_scan=(U8)value; + zd1211_print_roaming(value); + result = 0; + break; + case IW_AUTH_PRIVACY_INVOKED: + /* Turn on/off the privacy invoke flag */ + macp->cardSetting.EncryOnOff = value ? 1 : 0; + printk(KERN_INFO "%s: privacy: %s\n", net_dev->name, zd1211_print_enabled_disabled(value) ); + result = 0; + break; + default: + printk(KERN_INFO "%s(): unsupported function/value pair: %d %u\n", __FUNCTION__, idx, value); + break; + } + return result; +} - frq->fixed = 1; - zd1205_unlock(macp); +static U8 zero_mac[]={0,0,0,0,0,0}; +// SIOCSIWENCODEEXT +static const int zd1211_set_encode_ext(struct zd1205_private *macp, struct iwreq *wrq) { + int i_key; + u8 *key; + size_t key_len; + struct iw_encode_ext *ext; + card_Setting_t *pSetting = &macp->cardSetting; + u8 CamEncryType=0; + u8 tmpDynKeyMode; + + ext = wrq->u.encoding.pointer; + key = ext->key; + i_key = wrq->u.encoding.flags - 1; + key_len = ext->key_len; + switch (ext->alg) { + case IW_ENCODE_ALG_CCMP: + CamEncryType = AES; + //if (idx == 0) + {// Pairwise key + mKeyFormat = CamEncryType; + mDynKeyMode = pSetting->DynKeyMode = DYN_KEY_AES; + } + break; + case IW_ENCODE_ALG_TKIP: + CamEncryType = TKIP; + //if (idx == 0) + {// Pairwise key + mKeyFormat = CamEncryType; + mDynKeyMode = pSetting->DynKeyMode = DYN_KEY_TKIP; + } + break; + case IW_ENCODE_ALG_WEP: + if (key_len == 5) { // WEP 64 + CamEncryType = WEP64; + tmpDynKeyMode=DYN_KEY_WEP64; + } else {//keylen=13, WEP 128 + CamEncryType = WEP128; + tmpDynKeyMode=DYN_KEY_WEP128; + } + // For Dynamic WEP key (Non-WPA Radius), the key ID range: 0-3 + // In WPA/RSN mode, the key ID range: 1-3, usually, a broadcast key. + // For WEP key setting: we set mDynKeyMode and mKeyFormat in following case: + // 1. For 802.1x dynamically generated WEP key method. + // 2. For WPA/RSN mode, but key id == 0. (But this is an impossible case) + // So, only check case 1. + if (pSetting->WPAIeLen==0) { + mKeyFormat = CamEncryType; + mDynKeyMode = pSetting->DynKeyMode = tmpDynKeyMode; + mPrivacyInvoked=TRUE; + mCap |= CAP_PRIVACY; + pSetting->EncryOnOff=1; + } + break; + case IW_ENCODE_ALG_NONE: + default: + CamEncryType = NO_WEP; + // pSetting->DynKeyMode = 0; + // pSetting->EncryMode=0; + // mKeyFormat=0; + zd_SetKeyInfo(ext->addr.sa_data, CamEncryType, key_len, i_key, key); + if (ext->addr.sa_data[0] & 1)//del group key + { + if (pSetting->WPAIeLen==0) + {//802.1x dynamic WEP + mDynKeyMode = 0; + mKeyFormat = 0; + mPrivacyInvoked=FALSE; + mCap &= ~CAP_PRIVACY; + pSetting->EncryOnOff=0; + } + mWpaBcKeyLen = mGkInstalled = 0; + } else { + if (memcmp(zero_mac, ext->addr.sa_data, 6)==0) { + mDynKeyMode=0; + mKeyFormat=0; + pSetting->DynKeyMode=0; + pSetting->EncryMode=0; + mDynKeyMode=0; + } + } + goto exit_zd1211_set_encode_ext; + break; + } + zd_SetKeyInfo(ext->addr.sa_data, CamEncryType, key_len, i_key, key); +exit_zd1211_set_encode_ext: return 0; - } -static int zd1205_ioctl_setrate(struct net_device *dev, struct iw_param *frq) -{ +// SIOCSIWGENIE +static const int zd1211_set_wpa_ie(struct zd1205_private *macp, struct iwreq *wrq) { + card_Setting_t *pSetting = &macp->cardSetting; + + /* Copy the WPA IE */ + pSetting->WPAIeLen = wrq->u.data.length; + memcpy(&pSetting->WPAIe, wrq->u.data.pointer, pSetting->WPAIeLen); +#ifdef HOSTAPD_SUPPORT + if (pSetting->BssType == AP_BSS) {// Update Beacon FIFO in the next TBTT. + memcpy(&mWPAIe, pSetting->WPAIe, pSetting->WPAIeLen); + WPADEBUG("Copy WPA IE into mWPAIe\n"); + } +#endif return 0; } -static int zd1205_ioctl_getrate(struct net_device *dev, struct iw_param *frq) -{ - struct zd1205_private *macp = dev->priv; - frq->fixed = 0; - frq->disabled = 0; - frq->value = 0; - - switch(macp->cardSetting.CurrTxRate) - { - case RATE_1M: - frq->value = 1000000; - break; +const int zd1211_mlme(struct zd1205_private *macp) { + int result; +#ifdef HOSTAPD_SUPPORT + u8 mac_addr[80]; +#endif - case RATE_2M: - frq->value = 2000000; + result = -ENOTSUPP; + /* Translate STA's address */ + sprintf(mac_addr, "%02x:%02x:%02x:%02x:%02x:%02x", + (u8)macp->mlme_req.addr.sa_data[0], (u8)macp->mlme_req.addr.sa_data[1], + (u8)macp->mlme_req.addr.sa_data[2], (u8)macp->mlme_req.addr.sa_data[3], + (u8)macp->mlme_req.addr.sa_data[4], (u8)macp->mlme_req.addr.sa_data[5]); + switch(macp->mlme_req.cmd) { + case MLME_STA_DEAUTH: + if (zd_CmdDeauth((MacAddr_t *) macp->mlme_req.addr.sa_data, macp->mlme_req.reason_code) == FALSE) { + printk(KERN_ERR "Can't deauthencate STA: %s\n", mac_addr); + result = -EIO; + } else { + printk(KERN_INFO "Deauthenticate STA: %s with reason code: %d\n", mac_addr, macp->mlme_req.reason_code); + result = 0; + } break; - - case RATE_5M: - frq->value = 5500000; + case MLME_STA_DISASSOC: + if (zd_CmdDisasoc((MacAddr_t *) macp->mlme_req.addr.sa_data, macp->mlme_req.reason_code) == FALSE) { + printk(KERN_ERR "Can't disassociate STA: %s\n", mac_addr); + result = -EIO; + } else { + printk(KERN_INFO "Disassociate STA: %s with reason code: %d\n", mac_addr, macp->mlme_req.reason_code); + result = 0; + } break; - - case RATE_11M: - frq->value = 11000000; + default: + printk(KERN_ERR "MLME command: 0x%04x not support\n", macp->mlme_req.cmd); break; + } + return result; +} - case RATE_6M: - frq->value = 600000; - break; - case RATE_9M: - frq->value = 9000000; +///////////////////////////////////////// +int +zd1205_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) +{ + struct zd1205_private *macp; + void *regp; + struct zdap_ioctl zdreq; + struct iwreq *wrq = (struct iwreq *)ifr; + int err = 0; + int changed = 0; + + macp = dev->priv; + regp = macp->regp; + + /* ath_desc: ifconfig up fix - another try */ + /* ath_old: if(!netif_running(dev)) return -EINVAL; */ + + switch (cmd) + { + case SIOCSIWMLME: + //ZD1211DEBUG(0, "%s: SIOCSIWMLME\n", dev->name); + if (!netif_running(dev)) + return -EINVAL; + if (copy_from_user(&macp->mlme_req, wrq->u.data.pointer, sizeof(macp->mlme_req))) { + err = -EFAULT; + } else { + zd1205_lock(macp); +#ifdef HOST_IF_USB + defer_kevent(macp, KEVENT_ZD_MLME_IOCTL); + err = 0; +#else + err = zd1211_mlme(macp); +#endif + zd1205_unlock(macp); + } break; - case RATE_12M: - frq->value = 12000000; + case SIOCSIWAUTH: + //ZD1211DEBUG(0, "%s: SIOCSIWAUTH\n", dev->name); + if (!netif_running(dev)) + return -EINVAL; + err = zd1211_set_auth_param(dev, wrq->u.param.flags, wrq->u.param.value); break; - case RATE_18M: - frq->value = 18000000; + case SIOCSIWENCODEEXT: + //ZD1211DEBUG(0, "%s: SIOCSIWENCODEEXT\n", dev->name); + if (!netif_running(dev)) + return -EINVAL; + err = zd1211_set_encode_ext(macp, wrq); break; - case RATE_24M: - frq->value = 24000000; + case SIOCSIWGENIE: + //ZD1211DEBUG(0, "%s: SIOCSIWGENIE\n", dev->name); + if (!netif_running(dev)) + return -EINVAL; + err = zd1211_set_wpa_ie(macp, wrq); break; - case RATE_36M: - frq->value = 36000000; - break; + case SIOCGIWNAME: + //ZD1211DEBUG(1, "%s: SIOCGIWNAME\n", dev->name); + //strcpy(wrq->u.name, "IEEE 802.11-DS"); + strcpy(wrq->u.name, "802.11b/g NIC"); + break; + + case SIOCGIWAP: + ZD1211DEBUG(1, "%s: SIOCGIWAP\n", dev->name); + wrq->u.ap_addr.sa_family = ARPHRD_ETHER; + + if (macp->cardSetting.BssType == AP_BSS) + memcpy(wrq->u.ap_addr.sa_data, macp->macAdr, 6); + else { + if(macp->bAssoc) + memcpy(wrq->u.ap_addr.sa_data, macp->BSSID, 6); + else + memset(wrq->u.ap_addr.sa_data, 0, 6); + } + break; + + case SIOCGIWRANGE: + ZD1211DEBUG(1, "%s: SIOCGIWRANGE\n", dev->name); + if ( wrq->u.data.pointer != NULL) { + struct iw_range range; + err = zd1205wext_giwrange(dev, NULL, &wrq->u.data, (char *) &range); + + /* Push that up to the caller */ + if (copy_to_user(wrq->u.data.pointer, &range, sizeof(range))) + err = -EFAULT; + } + break; + + case SIOCSIWMODE: + ZD1211DEBUG(1, "%s: SIOCSIWMODE\n", dev->name); + err = zd1205wext_siwmode(dev, NULL, &wrq->u.mode, NULL); + + if (!err) + changed = 1; + break; + + case SIOCGIWMODE: + ZD1211DEBUG(1, "%s: SIOCGIWMODE\n", dev->name); + err = zd1205wext_giwmode(dev, NULL, &wrq->u.mode, NULL); + break; + + case SIOCSIWENCODE: { + char keybuf[MAX_KEY_SIZE]; + ZD1211DEBUG(1, "%s: SIOCSIWENCODE\n", dev->name); + + if (wrq->u.encoding.pointer) { + if (wrq->u.encoding.length > MAX_KEY_SIZE) { + err = -E2BIG; + break; + } + + if (copy_from_user(keybuf, wrq->u.encoding.pointer, wrq->u.encoding.length)) { + err = -EFAULT; + break; + } + } + + zd1205_dump_data("keybuf", keybuf, wrq->u.encoding.length); + err = zd1205_ioctl_setiwencode(dev, &wrq->u.encoding, keybuf); + + if (!err) + changed = 0; + } + break; + + case SIOCGIWENCODE: { + char keybuf[MAX_KEY_SIZE]; + + ZD1211DEBUG(1, "%s: SIOCGIWENCODE\n", dev->name); + err = zd1205_ioctl_getiwencode(dev, &wrq->u.encoding, keybuf); + + if (wrq->u.encoding.pointer) { + if (copy_to_user(wrq->u.encoding.pointer, keybuf, wrq->u.encoding.length)) + err = -EFAULT; + } + } + break; + + case SIOCSIWESSID: + ZD1211DEBUG(1, "%s: SIOCSIWESSID\n", dev->name); + err = zd1205_ioctl_setessid(dev, &wrq->u.essid); + if (!err && macp->cardSetting.ap_scan != 1) + changed = 1; + break; + case SIOCSIWAP: + ZD1211DEBUG(1, "%s: SIOCSIWAP\n", dev->name); + err = zd1205_ioctl_setbssid(dev, wrq); + if (!err && macp->cardSetting.ap_scan == 1) { + //set_bit(CTX_FLAG_ESSID_WAS_SET,(void*)&macp->flags); + changed = 1; + } + + break; + + case SIOCGIWESSID: + ZD1211DEBUG(1, "%s: SIOCGIWESSID\n", dev->name); + err = zd1205_ioctl_getessid(dev, &wrq->u.essid); + break; + + case SIOCGIWFREQ: + ZD1211DEBUG(1, "%s: SIOCGIWFREQ\n", dev->name); + wrq->u.freq.m = zd1205_hw_get_freq(macp); + wrq->u.freq.e = 1; + break; + + case SIOCSIWFREQ: + ZD1211DEBUG(1, "%s: SIOCSIWFREQ\n", dev->name); + + err = zd1205_ioctl_setfreq(dev, &wrq->u.freq); + if (!err) + changed = 1; + break; + + case SIOCGIWRTS: + ZD1211DEBUG(1, "%s: SIOCGIWRTS\n", dev->name); + zd1205wext_giwrts(dev, NULL, &wrq->u.rts, NULL); + break; + + case SIOCSIWRTS: + ZD1211DEBUG(1, "%s: SIOCSIWRTS\n", dev->name); + + + err = zd1205_ioctl_setrts(dev, &wrq->u.rts); + if (! err) + changed = 1; + break; + + case SIOCSIWFRAG: + ZD1211DEBUG(1, "%s: SIOCSIWFRAG\n", dev->name); + + err = zd1205_ioctl_setfrag(dev, &wrq->u.frag); + if (! err) + changed = 1; + break; + + case SIOCGIWFRAG: + ZD1211DEBUG(1, "%s: SIOCGIWFRAG\n", dev->name); + err = zd1205_ioctl_getfrag(dev, &wrq->u.frag); + break; + + case SIOCSIWRATE: + ZD1211DEBUG(1, "%s: SIOCSIWRATE\n", dev->name); + + err = zd1205_ioctl_setrate(dev, &wrq->u.bitrate); + if (! err) + changed = 1; + + break; + + case SIOCGIWRATE: + ZD1211DEBUG(1, "%s: SIOCGIWRATE\n", dev->name); + err = zd1205_ioctl_getrate(dev, &wrq->u.bitrate); + break; + + case SIOCSIWPOWER: + ZD1211DEBUG(1, "%s: SIOCSIWPOWER\n", dev->name); + + err = zd1205_ioctl_setpower(dev, &wrq->u.power); + if (!err) + changed = 0; + break; + + + case SIOCGIWPOWER: + ZD1211DEBUG(1, "%s: SIOCGIWPOWER\n", dev->name); + err = zd1205_ioctl_getpower(dev, &wrq->u.power); + break; - case RATE_48M: - frq->value = 48000000; - break; +#if WIRELESS_EXT > 10 - case RATE_54M: - frq->value = 54000000; - break; + case SIOCSIWRETRY: + ZD1211DEBUG(1, "%s: SIOCSIWRETRY\n", dev->name); + err = -EOPNOTSUPP; + break; - default: - return -EINVAL; - } - return 0; -} + case SIOCGIWRETRY: + ZD1211DEBUG(1, "%s: SIOCGIWRETRY\n", dev->name); + err = zd1205_ioctl_getretry(dev, &wrq->u.retry); + break; +#endif /* WIRELESS_EXT > 10 */ -static int zd1205_ioctl_settxpower(struct net_device *dev, struct iw_param *prq) -{ - struct zd1205_private *macp = dev->priv; - int ret = 0; +#if WIRELESS_EXT > 12 + case SIOCSIWCOMMIT: + ZD1211DEBUG(1, "%s: SIOCSIWCOMMIT\n", dev->name); + err = zd1205wext_commit(dev, NULL, NULL, NULL); + break; +#endif + + case SIOCGIWPRIV: + if (wrq->u.data.pointer) { + struct iw_priv_args privtab[] = { + { + SIOCIWFIRSTPRIV + 0x0, 0, 0, "list_bss" + }, + { SIOCIWFIRSTPRIV + 0x1, 0, 0, "card_reset" }, + { SIOCIWFIRSTPRIV + 0x2, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_auth" }, /* 0 - open, 1 - shared key */ + { SIOCIWFIRSTPRIV + 0x3, 0, IW_PRIV_TYPE_CHAR | 12, "get_auth" }, + { SIOCIWFIRSTPRIV + 0x4, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_preamble" }, /* 0 - long, 1 - short */ + { SIOCIWFIRSTPRIV + 0x5, 0, IW_PRIV_TYPE_CHAR | 6, "get_preamble" }, + { SIOCIWFIRSTPRIV + 0x6, 0, 0, "cnt" }, + { SIOCIWFIRSTPRIV + 0x7, 0, 0, "regs" }, + { SIOCIWFIRSTPRIV + 0x8, 0, 0, "probe" }, + /* ath_desc: reenable iwpriv dbg_flag */ + { SIOCIWFIRSTPRIV + 0x10, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "dbg_flag" }, + { SIOCIWFIRSTPRIV + 0xA, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "connect" }, + { SIOCIWFIRSTPRIV + 0xB, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_mac_mode" }, + { SIOCIWFIRSTPRIV + 0xC, 0, IW_PRIV_TYPE_CHAR | 12, "get_mac_mode" }, + { SIOCIWFIRSTPRIV + 0xD, 0, 0, "save_conf" }, + { SIOCIWFIRSTPRIV + 0xF, 0, IW_PRIV_TYPE_CHAR | 14, "get_Region" }, + { SIOCIWFIRSTPRIV + 0x9,IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_Region" }, + }; + + err = access_ok(VERIFY_WRITE, wrq->u.data.pointer, sizeof(privtab)); + if (err) + break; + + wrq->u.data.length = sizeof(privtab) / sizeof(privtab[0]); + if (copy_to_user(wrq->u.data.pointer, privtab, sizeof(privtab))) + err = -EFAULT; + } + break; + + case SIOCIWFIRSTPRIV + 0x0: /* list_bss */ + ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x0 (list_bss)\n", dev->name); + macp->bss_index = zd_GetBssList(&macp->BSSInfo[0]); + zd1205_list_bss(macp); + break; + + case SIOCIWFIRSTPRIV + 0x1: /* card_reset */ + ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x1 (card_reset)\n", dev->name); + if (! capable(CAP_NET_ADMIN)) { + err = -EPERM; + break; + } + + printk(KERN_DEBUG "%s: Force scheduling reset!\n", dev->name); + zd1205_lock(macp); + zd1205_device_reset(macp); + zd1205_unlock(macp); + err = 0; + break; + + case SIOCIWFIRSTPRIV + 0x2: /* set_auth */ + ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x2 (set_auth)\n", dev->name); + if (! capable(CAP_NET_ADMIN)) { + err = -EPERM; + break; + } + { + int val = *( (int *) wrq->u.name ); + if ((val < 0) || (val > 1)) { + err = -EINVAL; + break; + } else { + zd1205_lock(macp); + macp->cardSetting.AuthMode = val; + zd1205_unlock(macp); + err = 0; + changed = 1; + } + } + break; + + case SIOCIWFIRSTPRIV + 0x3: /* get_auth */ + ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x3 (get_auth)\n", dev->name); + + if (wrq->u.data.pointer) { + wrq->u.data.flags = 1; + + if (macp->cardSetting.AuthMode == 0) { + wrq->u.data.length = 12; + + if (copy_to_user(wrq->u.data.pointer, "open system", 12)) { + return -EFAULT; + } + } else if (macp->cardSetting.AuthMode == 1) { + wrq->u.data.length = 11; + + if (copy_to_user(wrq->u.data.pointer, "shared key", 11)) { + return -EFAULT; + } + } else if (macp->cardSetting.AuthMode == 2) { + wrq->u.data.length = 10; + + if (copy_to_user(wrq->u.data.pointer, "auto mode", 10)) { + return -EFAULT; + } + } else { + return -EFAULT; + } + } + break; + + case SIOCIWFIRSTPRIV + 0x4: /* set_preamble */ + ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x4 (set_preamble)\n", dev->name); + + if (! capable(CAP_NET_ADMIN)) { + err = -EPERM; + break; + } + { + int val = *( (int *) wrq->u.name ); + + if ((val < 0) || (val > 1)) { + err = -EINVAL; + break; + } else { + zd1205_lock(macp); + + if (val) + macp->cardSetting.PreambleType = 1; + else + macp->cardSetting.PreambleType = 0; + + zd1205_unlock(macp); + err = 0; + changed = 1; + } + } + break; + + + case SIOCIWFIRSTPRIV + 0x5: /* get_preamble */ + ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x5 (get_preamble)\n", dev->name); + + if (wrq->u.data.pointer) { + wrq->u.data.flags = 1; + + if (macp->cardSetting.PreambleType) { + wrq->u.data.length = 6; + + if (copy_to_user(wrq->u.data.pointer, "short", 6)) { + return -EFAULT; + } + } else { + wrq->u.data.length = 5; + + if (copy_to_user(wrq->u.data.pointer, "long", 5)) { + return -EFAULT; + } + } + } + break; + + case SIOCIWFIRSTPRIV + 0x6: /* dump_cnt */ + ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x6 (dump_cnt)\n", dev->name); + zd1205_dump_cnters(macp); + break; + + case SIOCIWFIRSTPRIV + 0x7: /* dump_reg */ + ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x7 (dump_cnt)\n", dev->name); + zd1205_dump_regs(macp); + break; + + case SIOCIWFIRSTPRIV + 0x8: /* probe */ + ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x8 (probe)\n", dev->name); + zd_CmdProcess(CMD_PROBE_REQ, 0, 0); + break; + + /* ath_desc: reenable iwpriv dbg_flag */ + case SIOCIWFIRSTPRIV + 0x10: /* set_dbgflag */ + ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x10 (set_dbgflag)\n", dev->name); + + if (! capable(CAP_NET_ADMIN)) { + err = -EPERM; + break; + } + { + int val = *( (int *) wrq->u.name ); + + if ((val < 0) || (val > 5)){ + err = -EINVAL; + break; + } + else { + zd1205_lock(macp); + macp->dbg_flag = val; + zd1205_unlock(macp); + err = 0; + } + } + break; + + case SIOCIWFIRSTPRIV + 0xA: /* connect */ + ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0xA (connect)\n", dev->name); + + if (! capable(CAP_NET_ADMIN)) { + err = -EPERM; + break; + } + { + int val = *( (int *) wrq->u.name ); + + if ((val < 1) || (val >macp->bss_index)) { + err = -EINVAL; + break; + } else { + U8 bssTypeToConnect; + U16 capabilities; + u8 ChangeToMacMode=MIXED_MODE; + capabilities = macp->BSSInfo[val-1].cap; + //If you connect to non-A AP while in 5G Band, or + //you connect to A AP while in 2.4G, you need to + //do mac_mode change first + if((PURE_A_AP == macp->BSSInfo[val-1].apMode && + PURE_A_MODE != mMacMode) || + (PURE_A_AP != macp->BSSInfo[val-1].apMode && + PURE_A_MODE == mMacMode) ) { + if(PURE_A_AP == macp->BSSInfo[val-1].apMode) + ChangeToMacMode = PURE_A_MODE; + + printk("Changed macmode in connect\n"); + macp->cardSetting.Channel = 8;//Default Channel to 8 + macp->cardSetting.MacMode = ChangeToMacMode; + macp->bDefaultIbssMacMode=1; + //set_mac_mode command has been issued by the user. + zd1205_SetRatesInfo(macp); + err = 0; + zd_UpdateCardSetting(&macp->cardSetting); + } + if (capabilities & (CAP_IBSS | CAP_ESS)) { + zd1205_lock(macp); + memcpy((U8*)&mSsid,(U8*)macp->BSSInfo[val-1].ssid,34+1); + memcpy((U8*)&dot11DesiredSsid, &mSsid, 34+1); + macp->BSSInfo[val-1].ssid[mSsid.buf[1]+2]=0; + mProbeWithSsid=TRUE; + if (capabilities & CAP_IBSS) { + if (macp->bDefaultIbssMacMode==0) + mMacMode=macp->cardSetting.MacMode=PURE_B_MODE; + bssTypeToConnect=INDEPENDENT_BSS; + } else { + if (macp->bDefaultIbssMacMode==0) + mMacMode=macp->cardSetting.MacMode=MIXED_MODE; + bssTypeToConnect=INFRASTRUCTURE_BSS; + } + mBssType=macp->cardSetting.BssType=bssTypeToConnect; + zd_CmdProcess(CMD_CONNECT, &bssTypeToConnect, val); + zd1205_unlock(macp); + } + err = 0; + } + } + break; + + + case SIOCIWFIRSTPRIV + 0xB: /* set_mac_mode */ + ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0xB (set_mac_mode)\n", dev->name); + + if (! capable(CAP_NET_ADMIN)) { + err = -EPERM; + break; + } + { + int val = *( (int *) wrq->u.name ); + int mac_mode_limit; + + if(AL7230B_RF == dot11Obj.rfMode) + mac_mode_limit = 4; //4 = A,B,G + else if (AL2230_RF == dot11Obj.rfMode) + mac_mode_limit = 3; //3 = B,G + else if (AL2230S_RF == dot11Obj.rfMode) + mac_mode_limit = 3; + else { + printk("Unknown RF Module. You are not allowed to set mac mode\n"); + mac_mode_limit = 0; + } + if ((val < 1) || (val > mac_mode_limit)) { + err = -EINVAL; + break; + } else { + //If Band changed from 2.4G <-> 5G, we need + //to set default channel + if( (macp->cardSetting.MacMode != PURE_A_MODE && + val == PURE_A_MODE)) { + macp->cardSetting.Channel = 36; + } else if(macp->cardSetting.MacMode == PURE_A_MODE && + val != PURE_A_MODE) { + macp->cardSetting.Channel = 1; + } + + macp->cardSetting.MacMode = val; + macp->bDefaultIbssMacMode=1;// Indicates that the set_mac_mode command has been issued by the user. + zd1205_SetRatesInfo(macp); + err = 0; + changed = 1; + } + } + break; + + case SIOCIWFIRSTPRIV + 0xC: /* get_mac_mode */ + ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0xC (get_mac_mode)\n", dev->name); + + + if (wrq->u.data.pointer) { + wrq->u.data.flags = 1; + + if (macp->cardSetting.MacMode == MIXED_MODE) { + wrq->u.data.length = 11; + if (copy_to_user(wrq->u.data.pointer, "Mixed Mode", 11)) { + return -EFAULT; + } + } else if (macp->cardSetting.MacMode == PURE_G_MODE) { + wrq->u.data.length = 12; + if (copy_to_user(wrq->u.data.pointer, "Pure G Mode", 12)) { + return -EFAULT; + } + } else if (macp->cardSetting.MacMode == PURE_B_MODE) { + wrq->u.data.length = 12; + if (copy_to_user(wrq->u.data.pointer, "Pure B Mode", 12)) { + return -EFAULT; + } + } else if (macp->cardSetting.MacMode == PURE_A_MODE) { + wrq->u.data.length = 12; + if (copy_to_user(wrq->u.data.pointer, "Pure A Mode", 12)) { + return -EFAULT; + } + } else + return -EFAULT; + } + break; + + case SIOCIWFIRSTPRIV + 0xF: //get_Region + //zd1205_dumpEEPROM(macp); + if (wrq->u.data.pointer) { + wrq->u.data.flags = 1; + + if (ZD_REGION_USA == dot11Obj.RegionCode) { + wrq->u.data.length = 3; + if (copy_to_user(wrq->u.data.pointer, "USA", 4)) + return -EFAULT; + } else if (ZD_REGION_Europe == dot11Obj.RegionCode) { + wrq->u.data.length = 13; + if (copy_to_user(wrq->u.data.pointer, "Taiwan/Europe", 14)) + return -EFAULT; + } else if (ZD_REGION_France == dot11Obj.RegionCode) { + wrq->u.data.length = 6; + if (copy_to_user(wrq->u.data.pointer, "France", 7)) + return -EFAULT; + } else if (ZD_REGION_Japan == dot11Obj.RegionCode) { + wrq->u.data.length = 5; + + if (copy_to_user(wrq->u.data.pointer, "Japan", 6)) + return -EFAULT; + } else if (ZD_REGION_Israel == dot11Obj.RegionCode) { + wrq->u.data.length = 6; + if (copy_to_user(wrq->u.data.pointer, "Israel", 7)) + return -EFAULT; + } else if (ZD_REGION_Mexico == dot11Obj.RegionCode) { + wrq->u.data.length = 6; + if (copy_to_user(wrq->u.data.pointer, "Mexico", 7)) + return -EFAULT; + } else + return -EFAULT; + } + + break; + case SIOCIWFIRSTPRIV + 0x9 : //set_Region + { + int val = *( (int *) wrq->u.name ); + + if ((val < 1) || (val > 6)) + { + err = -EINVAL; + break; + } else + { + switch(val) { + case 1 : + macp->RegionCode = ZD_REGION_USA; + break; + case 2 : + macp->RegionCode = ZD_REGION_Europe; + break; + case 3 : + macp->RegionCode = ZD_REGION_France; + break; + case 4 : + macp->RegionCode = ZD_REGION_Japan; + break; + case 5 : + macp->RegionCode = ZD_REGION_Israel; + break; + case 6 : + macp->RegionCode = ZD_REGION_Mexico; + break; + } + } + dot11Obj.RegionCode = macp->RegionCode; + switch(val) + { + case 1 : + dot11Obj.AllowedChannel = 0x107ff; + break;//1-11 + case 2 : + dot11Obj.AllowedChannel = 0x11fff; + break;//1-13 + case 3 : + dot11Obj.AllowedChannel = 0xa1e00; + break;//10-13 + case 4 : + dot11Obj.AllowedChannel = 0x13fff; + break;//1-14 + case 5 : + dot11Obj.AllowedChannel = 0x301fc; + break;//3-9 + case 6 : + dot11Obj.AllowedChannel = 0xa0600; + break;//10,11 + } + + break; + } + //////////////////////////// +#ifdef ZDCONF_MENUDBG + case ZD_MENU_DBG: + { + u32 in=0,ret=0; + if (copy_from_user(&zdreq, ifr->ifr_data, sizeof(zdreq))) { + return -EFAULT; + } + zd1205_lock(macp); + zd1205_zd_dbg2_ioctl(macp, &zdreq,&ret); + copy_from_user(&in,((struct zdap_ioctl *)(ifr->ifr_data))->data,4); + copy_to_user(((struct zdap_ioctl *)(ifr->ifr_data))->data, &ret, sizeof(ret)); + zd1205_unlock(macp); + err = 0; + } + break; +#endif -#define TX_17dbm 0x00 -#define TX_14dbm 0x01 -#define TX_11dbm 0x02 + case ZDAPIOCTL: //ZD1202 debug command + if (copy_from_user(&zdreq, ifr->ifr_data, sizeof (zdreq))) { + printk(KERN_ERR "ZDAPIOCTL: copy_from_user error\n"); + return -EFAULT; + } - if(prq->value >= TX_17dbm && prq->value <= TX_11dbm) - macp->cardSetting.TxPowerLevel = prq->value; - else - ret = -EINVAL; + printk(KERN_DEBUG "zd1211: cmd = %2x, reg = 0x%04x, value = 0x%08x\n", zdreq.cmd, zdreq.addr, zdreq.value); - return ret; + zd1205_lock(macp); +#ifdef HOST_IF_USB + + memcpy(&macp->zdreq, &zdreq, sizeof(zdreq)); + defer_kevent(macp, KEVENT_ZD_IOCTL); +#else + + zd1205_zd_dbg_ioctl(macp, &zdreq); +#endif + + zd1205_unlock(macp); + err = 0; + break; + + default: + ZD1211DEBUG(2, "zd1205_ioctl: unsupported cmd = %2x\n", cmd); + err = -EOPNOTSUPP; + break; + } + + if ((!err) && changed) + { +#ifdef HOST_IF_USB + defer_kevent(macp, KEVENT_UPDATE_SETTING); +#else + + zd_UpdateCardSetting(&macp->cardSetting); +#endif + + } + + return err; } -static int zd1205_ioctl_gettxpower(struct net_device *dev, struct iw_param *prq) + + + + +/** + * zd1205init - initialize the adapter + * @macp: atapter's private data struct + * + * This routine is called when this driver is loaded. This is the initialization + * routine which allocates memory, configures the adapter and determines the + * system resources. + * + * Returns: + + + * true: if successful + * false: otherwise + */ + +unsigned char +zd1205_init(struct zd1205_private *macp) { - struct zd1205_private *macp = dev->priv; + u32 tmpValue; -#define TX_17dbm 0x00 -#define TX_14dbm 0x01 -#define TX_11dbm 0x02 + //ZENTER(0); +#if fPROG_FLASH - prq->flags = 0; - prq->disabled = 0; - prq->fixed = 0; + macp->bAllowAccessRegister = 1; +#endif + /* read the MAC address from the eprom */ + mTxOFDMType = &(((struct zd1205_private *)g_dev->priv)->TxOFDMType); + zd1205_rd_eaddr(macp); - switch(macp->cardSetting.TxPowerLevel) - { - case TX_17dbm: - prq->value = 17; - break; + zd_writel(0x01, AfterPNP); - case TX_14dbm: - prq->value = 14; - break; +#if fWRITE_WORD_REG || fREAD_MUL_REG - case TX_11dbm: - prq->value = 11; - break; + // Must get this information before any register write - default: - return -EINVAL; - } - return 0; -} + tmpValue = zd1211_readl(cADDR_ENTRY_TABLE, false); + macp->AddrEntryTable = (u16) tmpValue; + ZD1211DEBUG(0, "AddrEntryTable = %04x\n", macp->AddrEntryTable); +#endif -static int zd1205_ioctl_setpower(struct net_device *dev, struct iw_param *frq) -{ - struct zd1205_private *macp = dev->priv; - int err = 0; + macp->RF_Mode = zd_readl(E2P_POD); + ZD1211DEBUG(0, "RF_Mode = %08x\n", macp->RF_Mode); + macp->PA_Type = ((macp->RF_Mode) >> 16) & 0xF;//hardware type 2, bit0-3 + printk(KERN_ERR "PA type: %01x\n", macp->PA_Type); + + dot11Obj.HWFeature = macp->RF_Mode & 0xfff0; + + if (((macp->RF_Mode & 0xf) == AL2230_RF) && (dot11Obj.HWFeature & BIT_7) ) + macp->RF_Mode = AL2230S_RF; + else + macp->RF_Mode &= 0x0f; + + dot11Obj.rfMode = (macp->RF_Mode & 0x0f); + + + if ((dot11Obj.rfMode == 0x04) || (dot11Obj.rfMode == 0x07)) + printk("AiroHa AL2230RF\n"); + else if (dot11Obj.rfMode == 0x07) + printk("Airoha AL7230B_RF\n"); + else if (dot11Obj.rfMode == 0x0a) + printk("Airoha AL2230S_RF\n"); + else if (dot11Obj.rfMode == 0x09) + printk("GCT RF\n"); + else if (dot11Obj.rfMode == 0x0d) + printk("RFMD RF\n"); + else if (dot11Obj.rfMode == 0x05) + printk("AIroHa 7230B_RF\n"); + else + printk("RF_Mode = %x\n", (u8)dot11Obj.rfMode); - zd1205_lock(macp); - if (frq->disabled) { - macp->cardSetting.ATIMWindow = 0x0; - macp->bPSMSupported = 0; - macp->PwrState = PS_CAM; - zd_EventNotify(EVENT_PS_CHANGE, (U8)macp->PwrState, 0, 0); - } else { - macp->cardSetting.ATIMWindow = 0x5; - macp->bPSMSupported = 1; - } - zd1205_unlock(macp); - HW_UpdatePreTBTT(&dot11Obj, dot11Obj.BeaconInterval-BEFORE_BEACON); + zd_writel(0x00, GPI_EN); + + zd1205_sw_init(macp); + zd1205_hw_init(macp); + zd1205_disable_int(); - return err; + ZEXIT(0); + return true; } -static int zd1205_ioctl_getpower(struct net_device *dev, struct iw_param *frq) -{ - struct zd1205_private *macp = dev->priv; - zd1205_lock(macp); - if (macp->bPSMSupported) - frq->disabled = 0; - else - frq->disabled = 1; - zd1205_unlock(macp); - return 0; -} - -static long zd1205_hw_get_freq(struct zd1205_private *macp) +void zd1205_init_card_setting(struct zd1205_private *macp) { - long freq = 0; + card_Setting_t *pSetting = &macp->cardSetting; - zd1205_lock(macp); - freq = channel_frequency[dot11Obj.Channel-1] * 100000; - zd1205_unlock(macp); + pSetting->BssType = INFRASTRUCTURE_BSS; + //pSetting->BssType = AP_BSS; + //pSetting->BssType = INDEPENDENT_BSS; + //pSetting->BssType = PSEUDO_IBSS; + pSetting->HiddenSSID = 0; //disable hidden essid + pSetting->LimitedUser = 32; + pSetting->RadioOn = 1; + + pSetting->BlockBSS = 0; + pSetting->EncryOnOff = 0; + //pSetting->PreambleType = 0; //long preamble + pSetting->PreambleType = 1; //short preamble + pSetting->Channel = 6; + pSetting->EncryMode = NO_WEP; + pSetting->EncryKeyId = 0; + pSetting->TxPowerLevel = 0; + + if (pSetting->BssType == AP_BSS) + { + pSetting->AuthMode = 2; //auto auth + pSetting->Info_SSID[0] = 0; + pSetting->Info_SSID[1] = 0x08; + pSetting->Info_SSID[2] = 'Z'; + pSetting->Info_SSID[3] = 'D'; + pSetting->Info_SSID[4] = '1'; + pSetting->Info_SSID[5] = '2'; + pSetting->Info_SSID[6] = '1'; + pSetting->Info_SSID[7] = '1'; + pSetting->Info_SSID[8] = 'A'; + pSetting->Info_SSID[9] = 'P'; + } else if (pSetting->BssType == INFRASTRUCTURE_BSS) + { + pSetting->AuthMode = 0; //open syatem + + pSetting->Info_SSID[0] = 0; + //pSetting->Info_SSID[1] = 0x05; + pSetting->Info_SSID[1] = 0x00; + pSetting->Info_SSID[2] = 'G'; + pSetting->Info_SSID[3] = '1'; + pSetting->Info_SSID[4] = '0'; + pSetting->Info_SSID[5] = '0'; + pSetting->Info_SSID[6] = '0'; + //pSetting->Info_SSID[7] = 'A'; + //pSetting->Info_SSID[8] = 'B'; + } else if (pSetting->BssType == INDEPENDENT_BSS) + { + pSetting->AuthMode = 0; //open syatem + pSetting->Info_SSID[0] = 0; + pSetting->Info_SSID[1] = 0x09; + pSetting->Info_SSID[2] = '1'; + pSetting->Info_SSID[3] = '2'; + + pSetting->Info_SSID[4] = '1'; + pSetting->Info_SSID[5] = '1'; + pSetting->Info_SSID[6] = 'A'; + pSetting->Info_SSID[7] = 'd'; + pSetting->Info_SSID[8] = 'H'; + pSetting->Info_SSID[9] = 'o'; + pSetting->Info_SSID[10] = 'c'; + } + +#if !(defined(GCCK) && defined(OFDM)) + pSetting->Info_SupportedRates[0] = 0x01; + pSetting->Info_SupportedRates[1] = 0x05; + pSetting->Info_SupportedRates[2] = 0x82; + pSetting->Info_SupportedRates[3] = 0x84; + pSetting->Info_SupportedRates[4] = 0x8B; + pSetting->Info_SupportedRates[5] = 0x96; + pSetting->Info_SupportedRates[6] = 0x21; + + + + if ((dot11Obj.rfMode == AL2210MPVB_RF) || (dot11Obj.rfMode == AL2210_RF)) + { + pSetting->Rate275 = 1; + pSetting->Info_SupportedRates[7] = 0x2C;//22 + pSetting->Info_SupportedRates[8] = 0x37;//27.5 + pSetting->Info_SupportedRates[1] = 0x07; + } else + pSetting->Rate275 = 0; +#else - return freq; -} + if (macp->usb->speed != USB_SPEED_HIGH) + pSetting->MacMode = PURE_B_MODE; + else + { + + //if (pSetting->BssType == INDEPENDENT_BSS) + //pSetting->MacMode = PURE_B_MODE; + //else + pSetting->MacMode = MIXED_MODE; + } + zd1205_SetRatesInfo(macp); + //pCardSetting->UartEnable = 1; + //pCardSetting->BaudRate = BAUD_RATE_115200; -static int zd1205_ioctl_setmode(struct net_device *dev, __u32 *mode) -{ - struct zd1205_private *macp = dev->priv; - zd1205_lock(macp); - switch(*mode) { - case IW_MODE_ADHOC: - ZD1211DEBUG(0, "Switch to Ad-Hoc mode\n"); - macp->cardSetting.BssType = INDEPENDENT_BSS; - zd_writel(STA_RX_FILTER, Rx_Filter); - break; +#endif - case IW_MODE_INFRA: - ZD1211DEBUG(0, "Switch to Infra mode\n"); - macp->cardSetting.BssType = INFRASTRUCTURE_BSS; - macp->cardSetting.AuthMode = 0; - zd_writel(STA_RX_FILTER, Rx_Filter); - break; - case IW_MODE_MASTER: - ZD1211DEBUG(0, "Switch to AP mode\n"); - macp->cardSetting.BssType = AP_BSS; - - /* Set bssid = MacAddress */ - - macp->BSSID[0] = macp->macAdr[0]; - macp->BSSID[1] = macp->macAdr[1]; - macp->BSSID[2] = macp->macAdr[2]; - - macp->BSSID[3] = macp->macAdr[3]; - macp->BSSID[4] = macp->macAdr[4]; - macp->BSSID[5] = macp->macAdr[5]; - - zd_writel(cpu_to_le32(*(u32 *)&macp->macAdr[0]), BSSID_P1); - zd_writel(cpu_to_le32(*(u32 *)&macp->macAdr[4]), BSSID_P2); - macp->cardSetting.AuthMode = 2; //auto auth - zd_writel(AP_RX_FILTER, Rx_Filter); - netif_start_queue(dev); - break; + pSetting->FragThreshold = 0x980; + pSetting->RTSThreshold = 0x980; - default: - ZD1211DEBUG(0, "Switch to PSEUDO_IBSS mode\n"); - macp->cardSetting.BssType = PSEUDO_IBSS; - zd_writel(STA_RX_FILTER, Rx_Filter); - break; - } + pSetting->BeaconInterval = 100; + pSetting->DtimPeriod = 3; + pSetting->SwCipher = 0; - macp->bAssoc = 0; - if (macp->usb->speed != USB_SPEED_HIGH) - macp->cardSetting.MacMode = PURE_B_MODE; - zd1205_SetRatesInfo(macp); - zd1205_unlock(macp); + pSetting->DynKeyMode = 0; + pSetting->WpaBcKeyLen = 32; // Tmp key(16) + Tx Mic key(8) + Rx Mic key(8) - return 0; -} -static int zd1205_ioctl_getretry(struct net_device *dev, struct iw_param *prq) -{ - return 0; + //dot11Obj.MicFailure = NULL; + //dot11Obj.AssocRequest = NULL; + //dot11Obj.WpaIe = NULL; } -/* For WIRELESS_EXT > 12 */ -static int zd1205wext_giwname(struct net_device *dev, struct iw_request_info *info, char *name, char *extra) -{ - strcpy(name, "802.11b/g NIC"); - return 0; -} -static int zd1205wext_giwfreq(struct net_device *dev, struct iw_request_info *info, struct iw_freq *freq, char *extra) -{ - struct zd1205_private *macp; - - macp = dev->priv; - freq->m = zd1205_hw_get_freq(macp); - freq->e = 1; - return 0; -} -static int zd1205wext_siwfreq(struct net_device *dev, struct iw_request_info *info, struct iw_freq *freq, char *extra) +#ifndef HOST_IF_USB +int +zd1205_found1(struct pci_dev *pcid, const struct pci_device_id *ent) { - int err; - err = zd1205_ioctl_setfreq(dev, freq); - return err; -} + static int first_time = true; + struct net_device *dev = NULL; + struct zd1205_private *macp = NULL; -static int zd1205wext_siwmode(struct net_device *dev, struct iw_request_info *info, __u32 *mode, char *extra) -{ - int err; - err = zd1205_ioctl_setmode(dev, mode); - return err; -} + int rc = 0; -static int zd1205wext_giwmode(struct net_device *dev, struct iw_request_info *info, __u32 *mode, char *extra) -{ - struct zd1205_private *macp = dev->priv; - u8 BssType = macp->cardSetting.BssType; - zd1205_lock(macp); - switch(BssType) { - case AP_BSS: - *mode = IW_MODE_MASTER; - break; + ZENTER(0); - case INFRASTRUCTURE_BSS: - *mode = IW_MODE_INFRA; - break; + dev = alloc_etherdev(sizeof (struct zd1205_private)); - case INDEPENDENT_BSS: - *mode = IW_MODE_ADHOC; - break; - default: - *mode = IW_MODE_ADHOC; - break; - } - zd1205_unlock(macp); - return 0; -} + if (dev == NULL) + { + printk(KERN_ERR "zd1205: Not able to alloc etherdev struct\n"); + rc = -ENODEV; + goto out; -static int zd1205wext_siwrate(struct net_device *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra) -{ - return zd1205_ioctl_setrate(dev, rrq); -} + } -static int zd1205wext_giwrate(struct net_device *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra) -{ - return zd1205_ioctl_getrate(dev, rrq); -} -static int zd1205wext_giwrts(struct net_device *dev, struct iw_request_info *info, struct iw_param *rts, char *extra) -{ - struct zd1205_private *macp; - macp = dev->priv; - rts->value = macp->cardSetting.RTSThreshold; - rts->disabled = (rts->value == 2347); - rts->fixed = 1; + g_dev = dev; //save this for CBs use + SET_MODULE_OWNER(dev); - return 0; -} + if (first_time) + { + first_time = false; -static int zd1205wext_siwrts(struct net_device *dev, struct iw_request_info *info, struct iw_param *rts, char *extra) -{ - return zd1205_ioctl_setrts(dev, rts); -} + printk(KERN_NOTICE "%s - version %s\n", + zd1205_full_driver_name, zd1205_driver_version); -static int zd1205wext_giwfrag(struct net_device *dev, struct iw_request_info *info, struct iw_param *frag, char *extra) -{ - return zd1205_ioctl_getfrag(dev, frag); -} + printk(KERN_NOTICE "%s\n", zd1205_copyright); + printk(KERN_NOTICE "\n"); + } -static int zd1205wext_siwfrag(struct net_device *dev, struct iw_request_info *info, struct iw_param *frag, char *extra) -{ - return zd1205_ioctl_setfrag(dev, frag); -} + macp = dev->priv; + macp->pdev = pcid; + macp->device = dev; -static int zd1205wext_giwtxpow(struct net_device *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra) -{ - return zd1205_ioctl_gettxpower(dev, rrq); -} + pci_set_drvdata(pcid, dev); + macp->numTcb = NUM_TCB; -static int zd1205wext_siwtxpow(struct net_device *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra) -{ - return zd1205_ioctl_settxpower(dev, rrq); -} + macp->numTbd = NUM_TBD; + macp->numRfd = NUM_RFD; -static int zd1205wext_giwap(struct net_device *dev, struct iw_request_info *info, struct sockaddr *ap_addr, char *extra) -{ - struct zd1205_private *macp; + macp->numTbdPerTcb = NUM_TBD_PER_TCB; + macp->regp = 0; + macp->rxOffset = ZD_RX_OFFSET; + macp->rfd_size = 24; // form CbStatus to NextCbPhyAddrHighPart - macp = dev->priv; - ap_addr->sa_family = ARPHRD_ETHER; - memcpy(ap_addr->sa_data, macp->BSSID, 6); - return 0; -} + init_timer(&macp->watchdog_timer); -static int zd1205wext_siwencode(struct net_device *dev, struct iw_request_info *info, struct iw_point *erq, char *key) -{ - return zd1205_ioctl_setiwencode(dev, erq, key); -} -static int zd1205wext_giwencode(struct net_device *dev, struct iw_request_info *info, struct iw_point *erq, char *key) -{ - return zd1205_ioctl_getiwencode(dev, erq, key); -} + macp->watchdog_timer.data = (unsigned long) dev; + macp->watchdog_timer.function = (void *) &zd1205_watchdog_cb; + init_timer(&macp->tm_hking_id); + macp->tm_hking_id.data = (unsigned long) dev; -static int zd1205wext_giwrange(struct net_device *dev, struct iw_request_info *info, struct iw_point *data, char *extra) -{ - struct iw_range *range = (struct iw_range *) extra; - int i, val; + macp->tm_hking_id.function = (void *) &HKeepingCB; -#if WIRELESS_EXT > 9 - range->txpower_capa = IW_TXPOW_DBM; - // XXX what about min/max_pmp, min/max_pmt, etc. -#endif + init_timer(&macp->tm_mgt_id); + macp->tm_mgt_id.data = (unsigned long) dev; + macp->tm_mgt_id.function = (void *) &zd1205_mgt_mon_cb; -#if WIRELESS_EXT > 10 - range->we_version_compiled = WIRELESS_EXT; - range->we_version_source = 13; - range->retry_capa = IW_RETRY_LIMIT; - range->retry_flags = IW_RETRY_LIMIT; - range->min_retry = 0; - range->max_retry = 255; -#endif /* WIRELESS_EXT > 10 */ - range->num_channels = NUM_CHANNELS; + if ((rc = zd1205_pci_setup(pcid, macp)) != 0) + { + goto err_dev; + } - /* XXX need to filter against the regulatory domain &| active set */ - val = 0; - for (i = 0; i < NUM_CHANNELS ; i++) { - range->freq[val].i = i + 1; - range->freq[val].m = channel_frequency[i] * 100000; - range->freq[val].e = 1; - val++; - } - range->num_frequency = val; - /* Max of /proc/net/wireless */ - range->max_qual.qual = 92; - range->max_qual.level = 154; - range->max_qual.noise = 154; - range->sensitivity = 3; - - // XXX these need to be nsd-specific! - range->min_rts = 256; - range->max_rts = 2346; - - range->min_frag = 256; - range->max_frag = 2346; - range->max_encoding_tokens = NUM_WEPKEYS; - range->num_encoding_sizes = 3; - range->encoding_size[0] = 5; - range->encoding_size[1] = 13; - range->encoding_size[2] = 29; - - // XXX what about num_bitrates/throughput? - range->num_bitrates = 0; - - /* estimated max throughput */ - // XXX need to cap it if we're running at ~2Mbps.. - range->throughput = 5500000; - - return 0; -} + if (!zd1205_init(macp)) + { + printk(KERN_ERR "zd1025: Failed to initialize, instance \n"); -#if WIRELESS_EXT > 13 -static int zd1205wext_siwscan(struct net_device *dev, struct iw_request_info *info, struct iw_point *data, char *extra) -{ - struct zd1205_private *macp = dev->priv; + rc = -ENODEV; - //ZENTER(0); - zd_CmdProcess(CMD_PROBE_REQ, 0, 0); - while (dot11Obj.bChScanning) { - wait_ms(10); - } - return 0; -} + goto err_pci; + } -/*------------------------------------------------------------------*/ -/* - * Translate scan data returned from the card to a card independent - * format that the Wireless Tools will understand - */ -static inline char *zd1205_translate_scan(struct net_device *dev, - char *current_ev, - char *end_buf, - bss_info_t *list) -{ - struct zd1205_private *macp = dev->priv; - struct iw_event iwe; /* Temporary buffer */ - u16 capabilities; - char *current_val; /* For rates */ - int i; + dev->irq = pcid->irq; + dev->open = &zd1205_open; + dev->hard_start_xmit = &zd1205_xmit_frame; - /* First entry *MUST* be the AP MAC address */ - iwe.cmd = SIOCGIWAP; - iwe.u.ap_addr.sa_family = ARPHRD_ETHER; - memcpy(iwe.u.ap_addr.sa_data, list->bssid, ETH_ALEN); - current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_ADDR_LEN); - - /* Other entries will be displayed in the order we give them */ - - /* Add the ESSID */ - iwe.u.data.length = list->ssid[1]; - if(iwe.u.data.length > 32) - iwe.u.data.length = 32; - iwe.cmd = SIOCGIWESSID; - iwe.u.data.flags = 1; - current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, &list->ssid[2]); - - /* Add mode */ - iwe.cmd = SIOCGIWMODE; - capabilities = list->cap; - if(capabilities & (0x01 | 0x02)) { - if(capabilities & 0x01) - iwe.u.mode = IW_MODE_MASTER; - else - iwe.u.mode = IW_MODE_ADHOC; - current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_UINT_LEN); - } + dev->stop = &zd1205_close; + dev->change_mtu = &zd1205_change_mtu; + dev->get_stats = &zd1205_get_stats; + dev->set_multicast_list = &zd1205_set_multi; - /* Add frequency */ - iwe.cmd = SIOCGIWFREQ; - iwe.u.freq.m = list->channel; - iwe.u.freq.m = channel_frequency[iwe.u.freq.m-1] * 100000; - iwe.u.freq.e = 1; - current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_FREQ_LEN); - - /* Add quality statistics */ - iwe.cmd = IWEVQUAL; - - iwe.u.qual.level = list->signalStrength; - iwe.u.qual.noise = 0; - iwe.u.qual.qual = list->signalQuality; - current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, IW_EV_QUAL_LEN); - - /* Add encryption capability */ - - iwe.cmd = SIOCGIWENCODE; - if(capabilities & 0x10) - iwe.u.data.flags = IW_ENCODE_ENABLED | IW_ENCODE_NOKEY; - else - iwe.u.data.flags = IW_ENCODE_DISABLED; - iwe.u.data.length = 0; - current_ev = iwe_stream_add_point(current_ev, end_buf, &iwe, list->ssid); - - /* Rate : stuffing multiple values in a single event require a bit - * more of magic */ - current_val = current_ev + IW_EV_LCP_LEN; - iwe.cmd = SIOCGIWRATE; - - /* Those two flags are ignored... */ - iwe.u.bitrate.fixed = iwe.u.bitrate.disabled = 0; - - for(i = 0 ; i < list->supRates[1] ; i++) { - /* Bit rate given in 500 kb/s units (+ 0x80) */ - iwe.u.bitrate.value = ((list->supRates[i+2] & 0x7f) * 500000); - /* Add new value to event */ - current_val = iwe_stream_add_value(current_ev, current_val, end_buf, &iwe, IW_EV_PARAM_LEN); - } + dev->set_mac_address = &zd1205_set_mac; - if (list->apMode != PURE_B_AP) { - for (i = 0 ; i < list->extRates[1] ; i++) { - /* Bit rate given in 500 kb/s units (+ 0x80) */ - iwe.u.bitrate.value = ((list->extRates[i+2] & 0x7f) * 500000); - /* Add new value to event */ - current_val = iwe_stream_add_value(current_ev, current_val, end_buf, &iwe, IW_EV_PARAM_LEN); - } - } - - /* Check if we added any event */ - if((current_val - current_ev) > IW_EV_LCP_LEN) - current_ev = current_val; - - /* The other data in the scan result are not really - * interesting, so for now drop it */ - return current_ev; -} + dev->do_ioctl = &zd1205_ioctl; + dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM; -static int zd1205wext_giwscan(struct net_device *dev, struct iw_request_info *info, struct iw_point *data, char *extra) -{ - struct zd1205_private *macp = dev->priv; - char *current_ev = extra; - int i; + if ((rc = register_netdev(dev)) != 0) + { + goto err_pci; + } - //ZENTER(0); - macp->bss_index = zd_GetBssList(&macp->BSSInfo[0]); - //ZD1211DEBUG(0, "macp->bss_index = %x\n", macp->bss_index); - /* Read and parse all entries */ - for (i=0; ibss_index; i++) { - /* Translate to WE format this entry */ - current_ev = zd1205_translate_scan(dev, current_ev, - extra + IW_SCAN_MAX_DATA, - &macp->BSSInfo[i]); - } - - /* Length of data */ - data->length = (current_ev - extra); - data->flags = 0; /* todo */ - - return 0; -} -#endif -void zd1205_list_bss(struct zd1205_private *macp) -{ - int i, j; - u16 cap; - bss_info_t *pBssInfo; - - printk("\nSSID BSSID CH Signal Mode Basic-Rates Ext-Rates b/g AP"); - printk("\n------------------------------------------------------------------------------------"); - for (i=0; ibss_index; i++) { - pBssInfo = &macp->BSSInfo[i]; + memcpy(macp->ifname, dev->name, IFNAMSIZ); + macp->ifname[IFNAMSIZ-1] = 0; - printk("\n"); - for (j=0; jssid[1]; j++) { - printk("%c", pBssInfo->ssid[2+j]); - } - for (j=pBssInfo->ssid[1]; j<12; j++) { - printk(" "); - } + if (netif_carrier_ok(macp->device)) + macp->cable_status = "Cable OK"; + else + macp->cable_status = "Not Available"; - printk("%02x:%02x:%02x:%02x:%02x:%02x", - pBssInfo->bssid[0], pBssInfo->bssid[1], pBssInfo->bssid[2], - pBssInfo->bssid[3], pBssInfo->bssid[4], pBssInfo->bssid[5]); - printk(" %2d", pBssInfo->channel); - printk(" %2d", pBssInfo->signalStrength); - - cap = pBssInfo->cap; - cap &= (0x10 | 0x02 | 0x01); - switch(cap) { - case 0x01: - printk(" Infra "); - break; - - case 0x02: - printk(" Ad_Hoc "); - break; - - case 0x11: - printk(" Infra, W"); - break; - - case 0x12: - printk(" Ad_Hoc,W"); - break; + if (zd1205_create_proc_subdir(macp) < 0) + { + printk(KERN_ERR "zd1205: Failed to create proc dir for %s\n", + macp->device->name); - default : - break; - } + } - printk(" "); - for (j=0; jsupRates[1]; j++) { - printk(" %x", pBssInfo->supRates[2+j]); - } + printk(KERN_NOTICE "\n"); + goto out; - printk(" "); - for (j=0; jextRates[1]; j++) { - printk(" %x", pBssInfo->extRates[2+j]); +err_pci: - } + iounmap(macp->regp); + pci_release_regions(pcid); + pci_disable_device(pcid); - if (pBssInfo->apMode == PURE_B_AP) - printk(" B-AP"); - else if (pBssInfo->apMode == PURE_G_AP) - printk(" G-AP"); - else if (pBssInfo->apMode == MIXED_AP) - printk(" M-AP"); - } + +err_dev: + + pci_set_drvdata(pcid, NULL); + + + kfree(dev); + +out: + ZEXIT(0); + return rc; } +#endif -///////////////////////////////////////// -int zd1205_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) -{ - struct zd1205_private *macp; - void *regp; - struct zdap_ioctl zdreq; - struct iwreq *wrq = (struct iwreq *)ifr; - int err = 0; - int changed = 0; - macp = dev->priv; - regp = macp->regp; - if(!netif_running(dev)) - return -EINVAL; +/** + * zd1205_clear_structs - free resources + * @dev: adapter's net_device struct + + * + * Free all device specific structs, unmap i/o address, etc. + */ - switch (cmd) { - case SIOCGIWNAME: - ZD1211DEBUG(1, "%s: SIOCGIWNAME\n", dev->name); - //strcpy(wrq->u.name, "IEEE 802.11-DS"); - strcpy(wrq->u.name, "802.11b/g NIC"); - break; +void - case SIOCGIWAP: - ZD1211DEBUG(1, "%s: SIOCGIWAP\n", dev->name); - wrq->u.ap_addr.sa_family = ARPHRD_ETHER; - if (macp->cardSetting.BssType == AP_BSS) - memcpy(wrq->u.ap_addr.sa_data, macp->macAdr, 6); - else - memcpy(wrq->u.ap_addr.sa_data, macp->BSSID, 6); - break; +zd1205_clear_structs(struct net_device *dev) +{ +#ifndef HOST_IF_USB + struct zd1205_private *macp = dev->priv; +#endif - case SIOCGIWRANGE: - ZD1211DEBUG(1, "%s: SIOCGIWRANGE\n", dev->name); - if ( wrq->u.data.pointer != NULL) { - struct iw_range range; - err = zd1205wext_giwrange(dev, NULL, &wrq->u.data, (char *) &range); - /* Push that up to the caller */ - if (copy_to_user(wrq->u.data.pointer, &range, sizeof(range))) - err = -EFAULT; - } - break; + zd1205_sw_release(); +#ifndef HOST_IF_USB - case SIOCSIWMODE: - ZD1211DEBUG(1, "%s: SIOCSIWMODE\n", dev->name); - err = zd1205wext_siwmode(dev, NULL, &wrq->u.mode, NULL); - if (!err) - changed = 1; - break; + iounmap(macp->regp); + pci_release_regions(macp->pdev); + pci_disable_device(macp->pdev); + pci_set_drvdata(macp->pdev, NULL); +#endif - case SIOCGIWMODE: - ZD1211DEBUG(1, "%s: SIOCGIWMODE\n", dev->name); - err = zd1205wext_giwmode(dev, NULL, &wrq->u.mode, NULL); - break; + //kfree(dev); + /* ath_desc: fix module deregistering */ + /* ath_old: free_netdev(dev); */ +} - case SIOCSIWENCODE: - { - char keybuf[MAX_KEY_SIZE]; - ZD1211DEBUG(1, "%s: SIOCSIWENCODE\n", dev->name); - - if (wrq->u.encoding.pointer) { - if (wrq->u.encoding.length > MAX_KEY_SIZE) { - err = -E2BIG; - break; - } - if (copy_from_user(keybuf, wrq->u.encoding.pointer, wrq->u.encoding.length)) { - err = -EFAULT; - break; - } - } +#ifndef HOST_IF_USB +void +zd1205_remove1(struct pci_dev *pcid) +{ + struct net_device *dev; + struct zd1205_private *macp; - zd1205_dump_data("keybuf", keybuf, wrq->u.encoding.length); - err = zd1205_ioctl_setiwencode(dev, &wrq->u.encoding, keybuf); - if (!err) - changed = 1; - break; - } - case SIOCGIWENCODE: - { - char keybuf[MAX_KEY_SIZE]; - ZD1211DEBUG(1, "%s: SIOCGIWENCODE\n", dev->name); - err = zd1205_ioctl_getiwencode(dev, &wrq->u.encoding, keybuf); - - if (wrq->u.encoding.pointer) { - if (copy_to_user(wrq->u.encoding.pointer, keybuf, wrq->u.encoding.length)) - err = -EFAULT; - } - break; - } + ZENTER(0); - case SIOCSIWESSID: - ZD1211DEBUG(1, "%s: SIOCSIWESSID\n", dev->name); + if (!(dev = (struct net_device *) pci_get_drvdata(pcid))) - err = zd1205_ioctl_setessid(dev, &wrq->u.essid); - if (! err) - changed = 1; - break; + return; - case SIOCGIWESSID: - ZD1211DEBUG(1, "%s: SIOCGIWESSID\n", dev->name); - err = zd1205_ioctl_getessid(dev, &wrq->u.essid); - break; - - case SIOCGIWFREQ: - ZD1211DEBUG(1, "%s: SIOCGIWFREQ\n", dev->name); - wrq->u.freq.m = zd1205_hw_get_freq(macp); - wrq->u.freq.e = 1; - break; + macp = dev->priv; + unregister_netdev(dev); + zd1205_remove_proc_subdir(macp); + zd1205_clear_structs(dev); - case SIOCSIWFREQ: - ZD1211DEBUG(1, "%s: SIOCSIWFREQ\n", dev->name); - err = zd1205_ioctl_setfreq(dev, &wrq->u.freq); - if (!err) - changed = 1; - break; - case SIOCGIWRTS: - ZD1211DEBUG(1, "%s: SIOCGIWRTS\n", dev->name); - zd1205wext_giwrts(dev, NULL, &wrq->u.rts, NULL); - break; + ZEXIT(0); +} +#endif - case SIOCSIWRTS: - ZD1211DEBUG(1, "%s: SIOCSIWRTS\n", dev->name); - err = zd1205_ioctl_setrts(dev, &wrq->u.rts); - if (! err) - changed = 1; - break; - case SIOCSIWFRAG: - ZD1211DEBUG(1, "%s: SIOCSIWFRAG\n", dev->name); - err = zd1205_ioctl_setfrag(dev, &wrq->u.frag); - if (! err) - changed = 1; - break; - - case SIOCGIWFRAG: - ZD1211DEBUG(1, "%s: SIOCGIWFRAG\n", dev->name); - err = zd1205_ioctl_getfrag(dev, &wrq->u.frag); - break; +#if 0 //move codes to zdpci_hotplug.c +static struct pci_device_id zd1205_id_table[] __devinitdata = + { - case SIOCSIWRATE: - ZD1211DEBUG(1, "%s: SIOCSIWRATE\n", dev->name); - err = zd1205_ioctl_setrate(dev, &wrq->u.bitrate); - if (! err) - changed = 1; - break; + { + 0x167b, 0x2102, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ZD_1202 + }, + {0x167b, 0x2100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ZD_1202}, + {0x167b, 0x2105, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ZD_1205}, - case SIOCGIWRATE: - ZD1211DEBUG(1, "%s: SIOCGIWRATE\n", dev->name); - err = zd1205_ioctl_getrate(dev, &wrq->u.bitrate); - break; + {0,} + }; - case SIOCSIWPOWER: - ZD1211DEBUG(1, "%s: SIOCSIWPOWER\n", dev->name); - err = zd1205_ioctl_setpower(dev, &wrq->u.power); - if (!err) - changed = 1; - break; - case SIOCGIWPOWER: - ZD1211DEBUG(1, "%s: SIOCGIWPOWER\n", dev->name); - err = zd1205_ioctl_getpower(dev, &wrq->u.power); - break; -#if WIRELESS_EXT > 10 - case SIOCSIWRETRY: - ZD1211DEBUG(1, "%s: SIOCSIWRETRY\n", dev->name); - err = -EOPNOTSUPP; - break; - - case SIOCGIWRETRY: - ZD1211DEBUG(1, "%s: SIOCGIWRETRY\n", dev->name); - err = zd1205_ioctl_getretry(dev, &wrq->u.retry); - break; -#endif /* WIRELESS_EXT > 10 */ +MODULE_DEVICE_TABLE(pci, zd1205_id_table); - case SIOCGIWPRIV: - if (wrq->u.data.pointer) { - struct iw_priv_args privtab[] = { - { SIOCIWFIRSTPRIV + 0x0, 0, 0, "list_bss" }, - { SIOCIWFIRSTPRIV + 0x1, 0, 0, "card_reset" }, - { SIOCIWFIRSTPRIV + 0x2, - IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, - 0, "set_auth" }, /* 0 - open, 1 - shared key */ - { SIOCIWFIRSTPRIV + 0x3, 0, IW_PRIV_TYPE_CHAR | 12, "get_auth" }, - { SIOCIWFIRSTPRIV + 0x4, - IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, - 0, "set_preamble" }, /* 0 - long, 1 - short */ - { SIOCIWFIRSTPRIV + 0x5, 0, IW_PRIV_TYPE_CHAR | 6, "get_preamble" }, - { SIOCIWFIRSTPRIV + 0x6, 0, 0, "cnt" }, - { SIOCIWFIRSTPRIV + 0x7, 0, 0, "regs" }, - { SIOCIWFIRSTPRIV + 0x8, 0, 0, "probe" }, - { SIOCIWFIRSTPRIV + 0x9, - IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, - 0, "dbg_flag" }, - { SIOCIWFIRSTPRIV + 0xA, - IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, - 0, "connect" }, - { SIOCIWFIRSTPRIV + 0xB, - IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, - 0, "set_mac_mode" }, - { SIOCIWFIRSTPRIV + 0xC, 0, IW_PRIV_TYPE_CHAR | 12, "get_mac_mode" }, - { SIOCIWFIRSTPRIV + 0xD, 0, 0, "save_conf" }, - }; - - wrq->u.data.length = sizeof(privtab) / sizeof(privtab[0]); - if (copy_to_user(wrq->u.data.pointer, privtab, sizeof(privtab))) - err = -EFAULT; - } - break; - case SIOCIWFIRSTPRIV + 0x0: /* list_bss */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x0 (list_bss)\n", dev->name); - macp->bss_index = zd_GetBssList(&macp->BSSInfo[0]); - zd1205_list_bss(macp); - break; - case SIOCIWFIRSTPRIV + 0x1: /* card_reset */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x1 (card_reset)\n", dev->name); - if (! capable(CAP_NET_ADMIN)) { - err = -EPERM; - break; - } +static struct pci_driver zd1205_driver = + { + .name = "zd1205", + .id_table = zd1205_id_table, + .probe = zd1205_found1, - printk(KERN_DEBUG "%s: Force scheduling reset!\n", dev->name); - zd1205_lock(macp); - zd1205_device_reset(macp); - zd1205_unlock(macp); - err = 0; - break; + .remove = __devexit_p(zd1205_remove1), + }; - case SIOCIWFIRSTPRIV + 0x2: /* set_auth */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x2 (set_auth)\n", dev->name); - if (! capable(CAP_NET_ADMIN)) { - err = -EPERM; - break; - } - { - int val = *((int *) wrq->u.name); - if ((val < 0) || (val > 1)) { - err = -EINVAL; - break; - } else { - zd1205_lock(macp); - macp->cardSetting.AuthMode = val; - zd1205_unlock(macp); - err = 0; - changed = 1; - } - } - break; +static int __init +zd1205_init_module(void) +{ - case SIOCIWFIRSTPRIV + 0x3: /* get_auth */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x3 (get_auth)\n", dev->name); - if (wrq->u.data.pointer) { - wrq->u.data.flags = 1; - if (macp->cardSetting.AuthMode == 0) { - wrq->u.data.length = 12; - if (copy_to_user(wrq->u.data.pointer, "open system", 12)) { - return -EFAULT; - } - } else if (macp->cardSetting.AuthMode == 1) { - wrq->u.data.length = 11; - if (copy_to_user(wrq->u.data.pointer, "shared key", 11)) { - return -EFAULT; - } - } else if (macp->cardSetting.AuthMode == 2) { - wrq->u.data.length = 10; - if (copy_to_user(wrq->u.data.pointer, "auto mode", 10)) { - return -EFAULT; - } - } else { - return -EFAULT; - } - } - break; + int ret; - case SIOCIWFIRSTPRIV + 0x4: /* set_preamble */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x4 (set_preamble)\n", dev->name); - if (! capable(CAP_NET_ADMIN)) { - err = -EPERM; - break; - } - { - int val = *((int *) wrq->u.name); + ret = pci_module_init(&zd1205_driver); + return ret; +} - if ((val < 0) || (val > 1)) { - err = -EINVAL; - break; - } else { - zd1205_lock(macp); - if (val) - macp->cardSetting.PreambleType = 1; - else - macp->cardSetting.PreambleType = 0; - zd1205_unlock(macp); - err = 0; - changed = 1; - } - } - break; - case SIOCIWFIRSTPRIV + 0x5: /* get_preamble */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x5 (get_preamble)\n", dev->name); - if (wrq->u.data.pointer) { - wrq->u.data.flags = 1; - if (macp->cardSetting.PreambleType) { - wrq->u.data.length = 6; - if (copy_to_user(wrq->u.data.pointer, "short", 6)) { - return -EFAULT; - } - } else { - wrq->u.data.length = 5; - if (copy_to_user(wrq->u.data.pointer, "long", 5)) { - return -EFAULT; - } - } - } - break; +static void __exit +zd1205_cleanup_module(void) +{ + pci_unregister_driver(&zd1205_driver); +} - case SIOCIWFIRSTPRIV + 0x6: /* dump_cnt */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x6 (dump_cnt)\n", dev->name); - zd1205_dump_cnters(macp); - break; +module_init(zd1205_init_module); - case SIOCIWFIRSTPRIV + 0x7: /* dump_reg */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x7 (dump_cnt)\n", dev->name); - zd1205_dump_regs(macp); - break; +module_exit(zd1205_cleanup_module); +#endif - case SIOCIWFIRSTPRIV + 0x8: /* probe */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x8 (probe)\n", dev->name); - zd_CmdProcess(CMD_PROBE_REQ, 0, 0); - break; +/*************************************************************************/ +BOOLEAN zdcb_setup_next_send(fragInfo_t *frag_info) +{ + struct zd1205_private *macp = g_dev->priv; + struct sk_buff *skb = (struct sk_buff *)frag_info->buf; + U8 bIntraBss = frag_info->bIntraBss; + U8 MsgID = frag_info->msgID; + U8 numOfFrag = frag_info->totalFrag; + + U16 aid = frag_info->aid; + U8 hdrLen = frag_info->hdrLen; + zd1205_SwTcb_t *sw_tcb; + zd1205_HwTCB_t *hw_tcb; + zd1205_TBD_t *pTbd; + U8 *hdr, *pBody; + U32 bodyLen, length; + U32 tcb_tbd_num = 0; + int i; + U16 pdu_size = 0; + + void *addr; + wla_Header_t *wla_hdr; + U32 CurrFragLen; + U32 NextFragLen; + + skb_frag_t *frag = NULL; + ctrl_Set_parm_t ctrl_setting_parms; + U32 TotalLength = 0; + +#ifndef HOST_IF_USB + + zd1205_SwTcb_t *next_sw_tcb; + U32 tmp_value, tmp_value3; + unsigned long lock_flag; + U32 loopCnt = 0; +#endif - case SIOCIWFIRSTPRIV + 0x9: /* set_dbgflag */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0x9 (set_dbgflag)\n", dev->name); - if (! capable(CAP_NET_ADMIN)) { - err = -EPERM; - break; - } - { - int val = *( (int *) wrq->u.name ); +#ifdef HOST_IF_USB - if ((val < 0) || (val > 5)) { - err = -EINVAL; - break; - } else { - zd1205_lock(macp); - macp->dbg_flag = val; - zd1205_unlock(macp); - err = 0; - } - } - break; + U32 PrvFragLen = 0; - case SIOCIWFIRSTPRIV + 0xA: /* connect */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0xA (connect)\n", dev->name); - if (! capable(CAP_NET_ADMIN)) { - err = -EPERM; - break; - } - { - int val = *( (int *) wrq->u.name ); - - if ((val < 1) || (val >macp->bss_index)) { - err = -EINVAL; - break; - } else { - zd1205_lock(macp); - zd_CmdProcess(CMD_CONNECT, 0, val); - zd1205_unlock(macp); - err = 0; - } - } - break; + if (!test_bit(ZD1211_RUNNING, &macp->flags)) + return FALSE; +#endif - case SIOCIWFIRSTPRIV + 0xB: /* set_mac_mode */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0xB (set_mac_mode)\n", dev->name); - if (! capable(CAP_NET_ADMIN)) { - err = -EPERM; - break; - } - { - int val = *( (int *) wrq->u.name ); + ZD1211DEBUG(2, "===== zdcb_setup_next_send enter =====\n"); + ZD1211DEBUG(2, "zd1211: bIntraBss = %x\n", bIntraBss); + ZD1211DEBUG(2, "zd1211: numOfFrag = %x\n", numOfFrag); + ZD1211DEBUG(2, "zd1211: skb = %p\n", (void *)skb); + ZD1211DEBUG(2, "zd1211: aid = %x\n", aid); - if ((val < 1) || (val > 3)) { - err = -EINVAL; - break; - } else { - macp->cardSetting.MacMode = val; - zd1205_SetRatesInfo(macp); - err = 0; - changed = 1; - } - } - break; +#ifndef HOST_IF_USB - case SIOCIWFIRSTPRIV + 0xC: /* get_mac_mode */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0xC (get_mac_mode)\n", dev->name); - if (wrq->u.data.pointer) { - wrq->u.data.flags = 1; - if (macp->cardSetting.MacMode == 1) { - wrq->u.data.length = 11; - if (copy_to_user(wrq->u.data.pointer, "Mixed Mode", 11)) { - return -EFAULT; - } - } else if (macp->cardSetting.MacMode == 2) { - wrq->u.data.length = 12; - if (copy_to_user(wrq->u.data.pointer, "Pure G Mode", 12)) { - return -EFAULT; - } - } else if (macp->cardSetting.MacMode == 3) { - wrq->u.data.length = 12; - if (copy_to_user(wrq->u.data.pointer, "Pure B Mode", 12)) { - return -EFAULT; - } - } else - return -EFAULT; - } - break; + spin_lock_irqsave(&macp->bd_non_tx_lock, lock_flag); +#endif - case SIOCIWFIRSTPRIV + 0xD: /* save_conf */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0xD (save_conf)\n", dev->name); - zd1205_save_card_setting(macp); - break; - case SIOCIWFIRSTPRIV + 0xE: /* load_conf */ - ZD1211DEBUG(1, "%s: SIOCIWFIRSTPRIV + 0xE (load_conf)\n", dev->name); - zd1205_load_card_setting(macp, 0); - break; + if ((skb) && (!bIntraBss)) { //data frame from upper layer + if (skb_shinfo(skb)->nr_frags) { //got frag buffer + frag = &skb_shinfo(skb)->frags[0]; + + if (skb->len > macp->cardSetting.FragThreshold) { //need fragment + pdu_size = macp->cardSetting.FragThreshold - 24 - 4; //mac header and crc32 length + numOfFrag = (skb->len + (pdu_size-1) ) / pdu_size; + + if (numOfFrag == 0) + numOfFrag = 1; + ZD1211DEBUG(2, "zd1211: numOfFrag = %x\n", numOfFrag); + } + } + } + + if (macp->freeTxQ->count -1 < numOfFrag) { + printk(KERN_ERR "zd1205: Not enough freeTxQ\n"); + //printk(KERN_ERR "zd1205: Cnt of freeTxQ = %x\n", macp->freeTxQ->count); + zd_EventNotify(EVENT_TX_COMPLETE, ZD_RETRY_FAILED, (U32)MsgID, aid); +#ifndef HOST_IF_USB - //////////////////////////// - case ZDAPIOCTL: //ZD1202 debug command - if (copy_from_user(&zdreq, ifr->ifr_data, sizeof (zdreq))) { - printk(KERN_ERR "zd1205: copy_from_user error\n"); - return -EFAULT; - } + spin_unlock_irqrestore(&macp->bd_non_tx_lock, lock_flag); +#endif - printk(KERN_DEBUG "zd1211: cmd = %2x, reg = 0x%04x, value = 0x%08x\n", + return FALSE; + } - zdreq.cmd, zdreq.addr, zdreq.value); + ctrl_setting_parms.Rate = frag_info->rate; + ctrl_setting_parms.Preamble = frag_info->preamble; + ctrl_setting_parms.encryType = frag_info->encryType; + //ctrl_setting_parms.vapId = frag_info->vapId; + + for (i=0; ifreeTxQ->count); + ZD1211DEBUG(2, "zd1211: Frag Num = %x\n", i); + + sw_tcb = zd1205_first_txq(macp, macp->freeTxQ); + +#ifdef HOST_IF_USB + //sw_tcb->bHasCompleteBeforeSend = 0; + //sw_tcb->bHasBeenDelayedBefore = 0; +#endif - zd1205_lock(macp); - memcpy(&macp->zdreq, &zdreq, sizeof(zdreq)); - defer_kevent(macp, KEVENT_ZD_IOCTL); - zd1205_unlock(macp); + hdr = frag_info->macHdr[i]; - err = 0; - break; + if (macp->dbg_flag > 4) + zd1205_dump_data("header part", (U8 *)hdr, 24); - default: - ZD1211DEBUG(0, "zd1205: cmd = %2x\n", cmd); - err = -EOPNOTSUPP; - break; - } - - if ((!err) && changed) { - defer_kevent(macp, KEVENT_UPDATE_SETTING); - } - return err; -} + if (skb) { + if ((bIntraBss) || (!frag)) { //wireless forwarding or tx data from upper layer and no linux frag + ZD1211DEBUG(2, "zd1211: Wireless forwarding or no linux frag\n"); + pBody = frag_info->macBody[i]; + bodyLen = frag_info->bodyLen[i]; + CurrFragLen = bodyLen; + NextFragLen = frag_info->nextBodyLen[i]; + if (i == (numOfFrag - 1)) + sw_tcb->LastFrag = 1; + else + sw_tcb->LastFrag = 0; + } else { //tx data from upper layer with linux frag + ZD1211DEBUG(2, "zd1211: tx data from upper layer with linux frag\n"); + pBody = skb->data; + bodyLen = skb->len; + + if (i == (numOfFrag - 1)) { + CurrFragLen = bodyLen - i*pdu_size; + NextFragLen = 0; + sw_tcb->LastFrag = 1; + } else { + CurrFragLen = pdu_size; + sw_tcb->LastFrag = 0; + + if (i == (numOfFrag-2)) + NextFragLen = bodyLen - (i+1)*pdu_size; + else + NextFragLen = pdu_size; + + } + } + } else { //mgt frame + //ZD1211DEBUG(2, "zd1211: mgt frame\n"); + + pBody = frag_info->macBody[i]; + bodyLen = frag_info->bodyLen[i]; + CurrFragLen = bodyLen; + NextFragLen = frag_info->nextBodyLen[i]; + sw_tcb->LastFrag = 1; + } + + wla_hdr = (wla_Header_t *)hdr; + hw_tcb = sw_tcb->pTcb; + pTbd = sw_tcb->pFirstTbd; + tcb_tbd_num = 0; + hw_tcb->TxCbTbdNumber = 0; + + sw_tcb->FrameType = hdr[0]; + sw_tcb->MsgID = MsgID; + sw_tcb->aid = aid; + sw_tcb->skb = skb; + sw_tcb->bIntraBss = bIntraBss; + sw_tcb->Rate = frag_info->rate; + + //ZD1211DEBUG(2, "zd1211: sw_tcb = %x\n", sw_tcb); + ZD1211DEBUG(2, "zd1211: hw_tcb = %p\n", (void *)hw_tcb); + ZD1211DEBUG(2, "zd1211: first tbd = %p\n", (void *)pTbd); + + ctrl_setting_parms.CurrFragLen = CurrFragLen; + ctrl_setting_parms.NextFragLen = NextFragLen; + + /* Control Setting */ + length = Cfg_CtrlSetting(macp, sw_tcb, wla_hdr, &ctrl_setting_parms); + TotalLength = length; + +#ifndef __LP64__ + pTbd->TbdBufferAddrHighPart = 0; + pTbd->TbdBufferAddrLowPart = cpu_to_le32(sw_tcb->HwCtrlPhys); +#else + pTbd->TbdBufferAddr = cpu_to_le64(sw_tcb->HwCtrlPhys); +#endif + pTbd->TbdCount = cpu_to_le32(length); + pTbd++; + tcb_tbd_num++; + + /* MAC Header */ + if (ctrl_setting_parms.encryType == TKIP) { + length = Cfg_MacHeader(macp, sw_tcb, wla_hdr, hdrLen); +#ifndef __LP64__ + pTbd->TbdBufferAddrLowPart = cpu_to_le32(sw_tcb->HwHeaderPhys); +#else + pTbd->TbdBufferAddr = cpu_to_le64(sw_tcb->HwHeaderPhys); +#endif + } else { //WPA will failed, why?? + length = hdrLen; +#ifndef __LP64__ + pTbd->TbdBufferAddrLowPart = cpu_to_le32(hdr); +#else + pTbd->TbdBufferAddr = cpu_to_le64(hdr); +#endif + } -/** - * zd1205init - initialize the adapter - * @macp: atapter's private data struct - * - * This routine is called when this driver is loaded. This is the initialization - * routine which allocates memory, configures the adapter and determines the - * system resources. - * - * Returns: - * true: if successful - * false: otherwise - */ -unsigned char zd1205_init(struct zd1205_private *macp) -{ - u32 tmpValue; + TotalLength += length; + pTbd->TbdCount = cpu_to_le32(length); + pTbd++; + tcb_tbd_num++; - macp->bAllowAccessRegister = 1; - /* read the MAC address from the eprom */ - zd1205_rd_eaddr(macp); -#ifdef AMAC - zd_writel(0x01, AfterPNP); -#endif - - // Must get this information before any register write - tmpValue = zd1211_readl(cADDR_ENTRY_TABLE, false); - macp->AddrEntryTable = (u16) tmpValue; - ZD1211DEBUG(0, "AddrEntryTable = %04x\n", macp->AddrEntryTable); - macp->RF_Mode = zd_readl(E2P_POD); - ZD1211DEBUG(0, "RF_Mode = %08x\n", macp->RF_Mode); - - dot11Obj.rfMode = (macp->RF_Mode & 0x0f); - - if ((dot11Obj.rfMode == 0x04) || (dot11Obj.rfMode == 0x07)) - ZD1211DEBUG(0, "AiroHa RF\n"); - else if (dot11Obj.rfMode == 0x09) - ZD1211DEBUG(0, "GCT RF\n"); - else if (dot11Obj.rfMode == 0x0d) - ZD1211DEBUG(0, "RFMD RF\n"); - else - ZD1211DEBUG(0, "RF_Mode = %x\n", (u8)dot11Obj.rfMode); - - zd_writel(0x00, GPI_EN); - - zd1205_sw_init(macp); - zd1205_hw_init(macp); - zd1205_disable_int(); +#if defined(AMAC) - ZEXIT(0); - return true; -} + TotalLength += CurrFragLen; +#ifdef ZD1211 -void zd1205_init_card_setting(struct zd1205_private *macp) -{ - card_Setting_t *pSetting = &macp->cardSetting; + sw_tcb->pHwCtrlPtr->CtrlSetting[18] = (u8)TotalLength; + sw_tcb->pHwCtrlPtr->CtrlSetting[19] = (u8)(TotalLength >> 8); +#endif +#endif - pSetting->BssType = INFRASTRUCTURE_BSS; - //pSetting->BssType = AP_BSS; - //pSetting->BssType = INDEPENDENT_BSS; - //pSetting->BssType = PSEUDO_IBSS; - pSetting->HiddenSSID = 0; //disable hidden essid - pSetting->LimitedUser = 32; - pSetting->RadioOn = 1; - - pSetting->BlockBSS = 0; - pSetting->EncryOnOff = 0; - //pSetting->PreambleType = 0; //long preamble - pSetting->PreambleType = 1; //short preamble - pSetting->Channel = 1; - pSetting->EncryMode = NO_WEP; - pSetting->EncryKeyId = 0; - pSetting->TxPowerLevel = 0; - - if (pSetting->BssType == AP_BSS) { - pSetting->AuthMode = 2; //auto auth - pSetting->Info_SSID[0] = 0; - pSetting->Info_SSID[1] = 0x08; - pSetting->Info_SSID[2] = 'Z'; - pSetting->Info_SSID[3] = 'D'; - pSetting->Info_SSID[4] = '1'; - pSetting->Info_SSID[5] = '2'; - pSetting->Info_SSID[6] = '1'; - pSetting->Info_SSID[7] = '1'; - pSetting->Info_SSID[8] = 'A'; - pSetting->Info_SSID[9] = 'P'; - } else if (pSetting->BssType == INFRASTRUCTURE_BSS) { - pSetting->AuthMode = 0; //open syatem - pSetting->Info_SSID[0] = 0; - //pSetting->Info_SSID[1] = 0x05; - pSetting->Info_SSID[1] = 0x00; - pSetting->Info_SSID[2] = 'G'; - pSetting->Info_SSID[3] = '1'; - pSetting->Info_SSID[4] = '0'; - pSetting->Info_SSID[5] = '0'; - pSetting->Info_SSID[6] = '0'; - //pSetting->Info_SSID[7] = 'A'; - //pSetting->Info_SSID[8] = 'B'; - } else if (pSetting->BssType == INDEPENDENT_BSS) { - pSetting->AuthMode = 0; //open syatem - pSetting->Info_SSID[0] = 0; - pSetting->Info_SSID[1] = 0x09; - pSetting->Info_SSID[2] = '1'; - pSetting->Info_SSID[3] = '2'; - pSetting->Info_SSID[4] = '1'; - pSetting->Info_SSID[5] = '1'; - pSetting->Info_SSID[6] = 'A'; - pSetting->Info_SSID[7] = 'd'; - pSetting->Info_SSID[8] = 'H'; - pSetting->Info_SSID[9] = 'o'; - pSetting->Info_SSID[10] = 'c'; - } + /* Frame Body */ + if ((!skb) || ((skb) && (!frag)) ) { + U8 * body_dma; -#if !(defined(GCCK) && defined(OFDM)) - pSetting->Info_SupportedRates[0] = 0x01; - pSetting->Info_SupportedRates[1] = 0x05; - pSetting->Info_SupportedRates[2] = 0x82; - pSetting->Info_SupportedRates[3] = 0x84; - pSetting->Info_SupportedRates[4] = 0x8B; - pSetting->Info_SupportedRates[5] = 0x96; - pSetting->Info_SupportedRates[6] = 0x21; - - if ((dot11Obj.rfMode == AL2210MPVB_RF) || (dot11Obj.rfMode == AL2210_RF)) { - pSetting->Rate275 = 1; - pSetting->Info_SupportedRates[7] = 0x2C;//22 - pSetting->Info_SupportedRates[8] = 0x37;//27.5 - pSetting->Info_SupportedRates[1] = 0x07; - } else - pSetting->Rate275 = 0; -#else - if (macp->usb->speed != USB_SPEED_HIGH) - pSetting->MacMode = PURE_B_MODE; - else { - //if (pSetting->BssType == INDEPENDENT_BSS) - //pSetting->MacMode = PURE_B_MODE; - //else - pSetting->MacMode = MIXED_MODE; - } - zd1205_SetRatesInfo(macp); - //pCardSetting->UartEnable = 1; - //pCardSetting->BaudRate = BAUD_RATE_115200; -#endif - - pSetting->FragThreshold = 0x980; - pSetting->RTSThreshold = 0x980; - - pSetting->BeaconInterval = 100; - pSetting->DtimPeriod = 3; - pSetting->SwCipher = 0; - - pSetting->DynKeyMode = 0; - pSetting->WpaBcKeyLen = 32; // Tmp key(16) + Tx Mic key(8) + Rx Mic key(8) - - //dot11Obj.MicFailure = NULL; - //dot11Obj.AssocRequest = NULL; - //dot11Obj.WpaIe = NULL; -} - -void zd1205_load_card_setting(struct zd1205_private *macp, u8 bInit) -{ -#if (LINUX_VERSION_CODE < KERNEL_VERSION (2,6,0)) - int ifp; - struct stat file_info; -#else - struct file *filp; - struct kstat stat; - loff_t pos; -#endif - int bcount = 0; - mm_segment_t fs; - unsigned int file_length; - u8 *buffer, *old_buffer; - int i, j, parse_id, count = 0; - char *token; - card_Setting_t *pSetting = &macp->cardSetting; - u8 ssidLen; - u16 frag; - - // Open the code file - // for file opening temporarily tell the kernel I am not a user for - // memory management segment access - - fs = get_fs(); - set_fs(KERNEL_DS); - - // open the file with the firmware for uploading -#if (LINUX_VERSION_CODE < KERNEL_VERSION (2,6,0)) - if (ifp = open(config_filename, O_RDONLY, 0 ), ifp < 0){ - // error opening the file - ZD1211DEBUG(0, "File opening did not success\n"); - set_fs(fs); - return; - } + ZD1211DEBUG(2, "zd1211: Management frame body or No linux frag\n"); - /* Get information about the file. */ - //fstat (ifp, &file_info); - //sys_fstat(ifp, &file_info); - //file_length = file_info.st_size; - - file_length = 512; -#else - filp = filp_open(config_filename, O_RDONLY, 0); - if (IS_ERR(filp)) { - ZD1211DEBUG(0, "File opening did not success\n"); - set_fs(fs); - return; - } + if (macp->dbg_flag > 4) + zd1205_dump_data("data part", (U8 *)pBody, 14); - /* Get information about the file. */ - //vfs_stat(config_filename, &stat); - //file_length = stat.size; - - file_length = 512; -#endif - buffer = kmalloc(file_length, GFP_ATOMIC); - old_buffer = buffer; - - /* Read the file into the buffer. */ -#if (LINUX_VERSION_CODE < KERNEL_VERSION (2,6,0)) - bcount = read(ifp, buffer, file_length); - ZD1211DEBUG(1, "bcount=%d\n", bcount); - - // close the file - close(ifp); -#else - pos = 0; - bcount = vfs_read(filp, buffer, file_length, &pos); - ZD1211DEBUG(1, "bcount=%d\n", bcount); - - // close the file - filp_close(filp, current->files); -#endif - // switch back the segment setting - set_fs(fs); - - parse_id = 0; - while ((token=strsep((char **)&buffer, "=\n"))) { - //printk("%s\n", token); - count++; - if (count % 2) { - if (!strcmp(token, "mode")) - parse_id = 1; - else if (!strcmp(token, "essid")) - parse_id = 2; - else if (!strcmp(token, "channel")) - parse_id = 3; - else if (!strcmp(token, "rts")) - parse_id = 4; - else if (!strcmp(token, "frag")) - parse_id = 5; - else - parse_id = 0; - } else { - switch (parse_id) { - case 1: - if (!strcmp(token, "Managed")) - pSetting->BssType = INFRASTRUCTURE_BSS; - else if (!strcmp(token, "Ad-Hoc")) - pSetting->BssType = INDEPENDENT_BSS; - else if (!strcmp(token, "Master")) - pSetting->BssType = AP_BSS; - break; +#ifndef __LP64__ + pTbd->TbdBufferAddrHighPart = 0; +#endif +#ifndef HOST_IF_USB - case 2: - pSetting->Info_SSID[0] = 0; - ssidLen = strnlen(token, 32); - pSetting->Info_SSID[1] = ssidLen; - for (i=0; iInfo_SSID[2+i] = token[i]; - break; + body_dma = pci_map_single(macp->pdev, pBody, bodyLen, PCI_DMA_TODEVICE); +#else - case 3: - pSetting->Channel = (u8)simple_strtoul(token, &token, 0); - break; + body_dma = pBody; +#endif - case 4: - pSetting->RTSThreshold = (u16)simple_strtoul(token, &token, 0); - break; + ZD1211DEBUG(2, "zd1211: body_dma = %p\n", body_dma); - case 5: - frag = (u16)simple_strtoul(token, &token, 0); - if (frag < 256) - frag = 256; - pSetting->FragThreshold = frag; - break; +#ifndef __LP64__ + pTbd->TbdBufferAddrLowPart = cpu_to_le32(body_dma); +#else + pTbd->TbdBufferAddr = cpu_to_le64(body_dma); +#endif + pTbd->TbdCount = cpu_to_le32(CurrFragLen); + pBody += CurrFragLen; - default: - break; - } - } +#ifdef HOST_IF_USB - if (count > 9) - break; - } + pTbd->PrvFragLen = PrvFragLen; + PrvFragLen += CurrFragLen; +#endif - kfree(old_buffer); + pTbd++; + tcb_tbd_num++; + } else { + while(CurrFragLen ) { + void * body_dma; - if (!bInit) - zd_UpdateCardSetting(pSetting); - //zd1205_show_card_setting(macp); + if (CurrFragLen >= frag->size ) { + printk(KERN_DEBUG "zd1205: linux more frag skb\n"); + addr = ((void *) page_address(frag->page) + frag->page_offset); +#ifndef __LP64__ + pTbd->TbdBufferAddrHighPart = 0; +#endif +#ifndef HOST_IF_USB - return; -} + body_dma = pci_map_single(macp->pdev, addr, frag->size, PCI_DMA_TODEVICE); +#else -void zd1205_save_card_setting(struct zd1205_private *macp) -{ -#if (LINUX_VERSION_CODE < KERNEL_VERSION (2,6,0)) - int ifp; - struct stat file_info; -#else - struct file *filp; - struct kstat stat; - loff_t pos; -#endif - int bcount = 0; - mm_segment_t fs; - unsigned int file_length; - u8 *buffer, *old_buffer; - int i; - u8 ssidLen; - char ssid[33]; - int write_byte = 0; - card_Setting_t *pSetting = &macp->cardSetting; - - // Open the code file - // for file opening temporarily tell the kernel I am not a user for - // memory management segment access - - fs = get_fs(); - set_fs(KERNEL_DS); - - // open the file with the firmware for uploading -#if (LINUX_VERSION_CODE < KERNEL_VERSION (2,6,0)) - if(ifp = open(config_filename, O_WRONLY | O_CREAT | O_TRUNC, 0666 ), ifp < 0){ - // error opening the file - ZD1211DEBUG(0, "File opening did not success\n"); - set_fs(fs); - return; - } + body_dma = addr; +#endif - /* Get information about the file. */ - //fstat (ifp, &file_info); - //sys_fstat(ifp, &file_info); - //file_length = file_info.st_size; - - file_length = 512; -#else - filp = filp_open(config_filename, O_WRONLY | O_CREAT | O_TRUNC, 0666); - if (IS_ERR(filp)) { - ZD1211DEBUG(0, "File opening did not success\n"); - set_fs(fs); - return; - } +#ifndef __LP64__ + pTbd->TbdBufferAddrLowPart = cpu_to_le32(body_dma); +#else + pTbd->TbdBufferAddr = cpu_to_le64(body_dma); +#endif + pTbd->TbdCount = cpu_to_le32(frag->size); + tcb_tbd_num++; +#ifdef HOST_IF_USB - /* Get information about the file. */ - //vfs_stat(config_filename, &stat); - //file_length = stat.size; - - file_length = 512; -#endif - - buffer = kmalloc(file_length, GFP_ATOMIC); - old_buffer = buffer; - - ssidLen = pSetting->Info_SSID[1]; - memcpy(ssid, &pSetting->Info_SSID[2], ssidLen); - ssid[ssidLen] = '\0'; - - if (pSetting->BssType == INFRASTRUCTURE_BSS) - bcount = snprintf(buffer, file_length, "mode=Managed\n"); - else if (pSetting->BssType == INDEPENDENT_BSS) - bcount = snprintf(buffer, file_length, "mode=Ad-Hoc\n"); - else if (pSetting->BssType == AP_BSS) - bcount = snprintf(buffer, file_length, "mode=Master\n"); - ZD1211DEBUG(1, "mode bcount=%d\n", bcount); - write_byte = bcount; - buffer += bcount; - - bcount = snprintf(buffer, file_length, "essid=%s\n", ssid); - ZD1211DEBUG(1, "essid bcount=%d\n", bcount); - write_byte += bcount; - buffer += bcount; - - bcount = snprintf(buffer, file_length, "channel=%d\n", pSetting->Channel); - ZD1211DEBUG(1, "channel bcount=%d\n", bcount); - write_byte += bcount; - buffer += bcount; - - bcount = snprintf(buffer, file_length, "rts=%d\n", pSetting->RTSThreshold); - ZD1211DEBUG(1, "rts bcount=%d\n", bcount); - write_byte += bcount; - buffer += bcount; - - bcount = snprintf(buffer, file_length, "frag=%d\n", pSetting->FragThreshold); - ZD1211DEBUG(1, "frag bcount=%d\n", bcount); - write_byte += bcount; - - /* Write the file into the buffer. */ - ZD1211DEBUG(1, "write_byte=%d\n", write_byte); -#if (LINUX_VERSION_CODE < KERNEL_VERSION (2,6,0)) - bcount = write(ifp, old_buffer, write_byte); - ZD1211DEBUG(1, "bcount=%d\n", bcount); - - // close the file - close(ifp); -#else - pos = 0; - bcount = vfs_write(filp, old_buffer, write_byte, &pos); - ZD1211DEBUG(1, "bcount=%d\n", bcount); + pTbd->PrvFragLen = PrvFragLen; + PrvFragLen += CurrFragLen; +#endif - // close the file - filp_close(filp, current->files); + CurrFragLen -= frag->size; + frag++; + } else { + printk(KERN_DEBUG "zd1205: linux last frag skb\n"); + addr = ((void *) page_address(frag->page) + frag->page_offset); +#ifndef __LP64__ + pTbd->TbdBufferAddrHighPart = 0; #endif +#ifndef HOST_IF_USB - // switch back the segment setting - set_fs(fs); + body_dma = cpu_to_le32(pci_map_single(macp->pdev, addr, pdu_size, PCI_DMA_TODEVICE)); +#else - kfree(old_buffer); + body_dma = addr; +#endif - return; -} +#ifndef __LP64__ + pTbd->TbdBufferAddrLowPart = cpu_to_le32(body_dma); +#else + pTbd->TbdBufferAddr = cpu_to_le64(body_dma); +#endif + frag->page_offset += CurrFragLen; + frag->size -= CurrFragLen; +#ifdef HOST_IF_USB -/** - * zd1205_clear_structs - free resources - * @dev: adapter's net_device struct - * - * Free all device specific structs, unmap i/o address, etc. - */ -void zd1205_clear_structs(struct net_device *dev) -{ - struct zd1205_private *macp = dev->priv; + pTbd->PrvFragLen = PrvFragLen; + PrvFragLen += CurrFragLen; +#endif - zd1205_sw_release(); - //kfree(dev); - free_netdev(dev); //kernel 2,6 -} + CurrFragLen = 0; + } -/*************************************************************************/ -BOOLEAN zdcb_setup_next_send(fragInfo_t *frag_info) -{ - struct zd1205_private *macp = g_dev->priv; - struct sk_buff *skb = (struct sk_buff *)frag_info->buf; - U8 bIntraBss = frag_info->bIntraBss; - U8 MsgID = frag_info->msgID; - U8 numOfFrag = frag_info->totalFrag; - U16 aid = frag_info->aid; - U8 hdrLen = frag_info->hdrLen; - zd1205_SwTcb_t *sw_tcb; - zd1205_SwTcb_t *next_sw_tcb; - zd1205_HwTCB_t *hw_tcb; - zd1205_TBD_t *pTbd; - U8 *hdr, *pBody; - U32 bodyLen, length; - U32 tmp_value, tmp_value3; - U32 tcb_tbd_num = 0; - int i; - U16 pdu_size = 0; - void *addr; - wla_Header_t *wla_hdr; - U32 CurrFragLen; - U32 NextFragLen; - skb_frag_t *frag = NULL; - unsigned long lock_flag; - ctrl_Set_parm_t ctrl_setting_parms; - U32 loopCnt = 0; - U32 TotalLength = 0; - U32 PrvFragLen = 0; - - if (!test_bit(ZD1211_RUNNING, &macp->flags)) - return FALSE; - - ZD1211DEBUG(2, "===== zdcb_setup_next_send enter =====\n"); - ZD1211DEBUG(2, "zd1211: bIntraBss = %x\n", bIntraBss); - - ZD1211DEBUG(2, "zd1211: numOfFrag = %x\n", numOfFrag); - ZD1211DEBUG(2, "zd1211: skb = %x\n", (u32)skb); - ZD1211DEBUG(2, "zd1211: aid = %x\n", aid); - - if ((skb) && (!bIntraBss)) { //data frame from upper layer - if (skb_shinfo(skb)->nr_frags) { //got frag buffer - frag = &skb_shinfo(skb)->frags[0]; - if (skb->len > macp->cardSetting.FragThreshold) { //need fragment - pdu_size = macp->cardSetting.FragThreshold - 24 - 4; //mac header and crc32 length - numOfFrag = (skb->len + (pdu_size-1) ) / pdu_size; - if (numOfFrag == 0) - numOfFrag = 1; - ZD1211DEBUG(2, "zd1211: numOfFrag = %x\n", numOfFrag); - } - } - } + printk(KERN_DEBUG "zd1205: page_address = %p\n", addr); + printk(KERN_DEBUG "zd1205: body_dma = %p\n", body_dma); + pTbd++; + tcb_tbd_num++; + } + } + + hw_tcb->TxCbTbdNumber = cpu_to_le32(tcb_tbd_num); + macp->txCnt++; + +#ifndef HOST_IF_USB + + hw_tcb->CbCommand = 0; /* set this TCB belong to bus master */ + wmb(); + + while(1) { + tmp_value = zd_readl(DeviceState); + tmp_value &= 0xf; + + if ((tmp_value == TX_READ_TCB) || (tmp_value == TX_CHK_TCB)) { + /* Device is now checking suspend or not. + Keep watching until it finished check. */ + loopCnt++; + + if (loopCnt > 1000000) + break; + + udelay(1); + continue; + } else + break; + } + + if (loopCnt > 1000000) + ZD1211DEBUG(0, "I am in zdcb_setup_next_send loop\n") ; + + ZD1211DEBUG(1, "zd1211: Device State = %x\n", (u32)tmp_value); + + if (tmp_value == TX_IDLE) { /* bus master get suspended TCB */ + macp->txIdleCnt++; + + /* Tx bus master is in idle state. */ + //tmpValue1 = zd_readl(InterruptCtrl); + /* No retry fail happened */ + tmp_value3 = zd_readl(ReadTcbAddress); + next_sw_tcb = macp->freeTxQ->first; + + if (tmp_value3 != le32_to_cpu(next_sw_tcb->pTcb->NextCbPhyAddrLowPart)) { + /* Restart Tx again */ + zd1205_start_download(sw_tcb->TcbPhys); + ZD1211DEBUG(1, "zd1211: Write PCI_TxAddr_p1 = %x\n", sw_tcb->TcbPhys); + } + } + else if (tmp_value == 0xA) { //Dtim Notify Int happened + zd1205_start_download(sw_tcb->TcbPhys | BIT_0); + } - if (macp->freeTxQ->count -1 < numOfFrag) { - printk(KERN_ERR "zd1205: Not enough freeTxQ\n"); - //printk(KERN_ERR "zd1205: Cnt of freeTxQ = %x\n", macp->freeTxQ->count); - zd_EventNotify(EVENT_TX_COMPLETE, ZD_RETRY_FAILED, (U32)MsgID, aid); - return FALSE; - } + ZD1211DEBUG(2, "zd1211: NAV_CCA = %x\n", zd_readl(NAV_CCA)); + ZD1211DEBUG(2, "zd1211: NAC_CNT = %x\n", zd_readl(NAV_CNT)); - ctrl_setting_parms.Rate = frag_info->rate; - ctrl_setting_parms.Preamble = frag_info->preamble; - ctrl_setting_parms.encryType = frag_info->encryType; - //ctrl_setting_parms.vapId = frag_info->vapId; - - for (i=0; ifreeTxQ->count); - ZD1211DEBUG(2, "zd1211: Frag Num = %x\n", i); - - sw_tcb = zd1205_first_txq(macp, macp->freeTxQ); - //sw_tcb->bHasCompleteBeforeSend = 0; - //sw_tcb->bHasBeenDelayedBefore = 0; - hdr = frag_info->macHdr[i]; - - if (macp->dbg_flag > 4) - zd1205_dump_data("header part", (U8 *)hdr, 24); - - if (skb) { - if ((bIntraBss) || (!frag)) { //wireless forwarding or tx data from upper layer and no linux frag - ZD1211DEBUG(2, "zd1211: Wireless forwarding or no linux frag\n"); - - pBody = frag_info->macBody[i]; - bodyLen = frag_info->bodyLen[i]; - - CurrFragLen = bodyLen; - NextFragLen = frag_info->nextBodyLen[i]; - if (i == (numOfFrag - 1)) - sw_tcb->LastFrag = 1; - else - sw_tcb->LastFrag = 0; - } else { //tx data from upper layer with linux frag - ZD1211DEBUG(2, "zd1211: tx data from upper layer with linux frag\n"); - pBody = skb->data; - bodyLen = skb->len; - - if (i == (numOfFrag - 1)) { - CurrFragLen = bodyLen - i*pdu_size; - NextFragLen = 0; - sw_tcb->LastFrag = 1; - } else { - CurrFragLen = pdu_size; - sw_tcb->LastFrag = 0; - - if (i == (numOfFrag-2)) - NextFragLen = bodyLen - (i+1)*pdu_size; - else - NextFragLen = pdu_size; - } - } - } else{ //mgt frame - ZD1211DEBUG(2, "zd1211: mgt frame\n"); +#endif - pBody = frag_info->macBody[i]; - bodyLen = frag_info->bodyLen[i]; - CurrFragLen = bodyLen; - NextFragLen = frag_info->nextBodyLen[i]; - sw_tcb->LastFrag = 1; - } + zd1205_qlast_txq(macp, macp->activeTxQ, sw_tcb); - wla_hdr = (wla_Header_t *)hdr; - hw_tcb = sw_tcb->pTcb; - pTbd = sw_tcb->pFirstTbd; - - tcb_tbd_num = 0; - hw_tcb->TxCbTbdNumber = 0; - sw_tcb->FrameType = hdr[0]; - - sw_tcb->MsgID = MsgID; - sw_tcb->aid = aid; - sw_tcb->skb = skb; - sw_tcb->bIntraBss = bIntraBss; - sw_tcb->Rate = frag_info->rate; - - //ZD1211DEBUG(2, "zd1211: sw_tcb = %x\n", sw_tcb); - ZD1211DEBUG(2, "zd1211: hw_tcb = %x\n", (u32)hw_tcb); - - ZD1211DEBUG(2, "zd1211: first tbd = %x\n", (u32)pTbd); - - ctrl_setting_parms.CurrFragLen = CurrFragLen; - ctrl_setting_parms.NextFragLen = NextFragLen; - - /* Control Setting */ - length = Cfg_CtrlSetting(macp, sw_tcb, wla_hdr, &ctrl_setting_parms); - TotalLength = length; - - pTbd->TbdBufferAddrHighPart = 0; - - pTbd->TbdBufferAddrLowPart = cpu_to_le32(sw_tcb->HwCtrlPhys); - - pTbd->TbdCount = cpu_to_le32(length); - pTbd++; - tcb_tbd_num++; - - /* MAC Header */ - if (ctrl_setting_parms.encryType == TKIP) { - length = Cfg_MacHeader(macp, sw_tcb, wla_hdr, hdrLen); - pTbd->TbdBufferAddrLowPart = cpu_to_le32(sw_tcb->HwHeaderPhys); - } else { //WPA will failed, why?? - length = hdrLen; - pTbd->TbdBufferAddrLowPart = cpu_to_le32((u32)hdr); - } +#ifdef HOST_IF_USB + //The following code is to handle cross fragment MIC + memcpy(sw_tcb->CalMIC,frag_info->CalSwMic, MIC_LNG+1); + sw_tcb->MIC_Start=0; + sw_tcb->MIC_Len=0; + if(i==numOfFrag-1 && sw_tcb->CalMIC[MIC_LNG]==TRUE) { + if(frag_info->bodyLen[i] < MIC_LNG) { + sw_tcb->MIC_Start=MIC_LNG-frag_info->bodyLen[i]; + sw_tcb->MIC_Len=frag_info->bodyLen[i]; + } else { + sw_tcb->MIC_Start=0; + sw_tcb->MIC_Len=MIC_LNG; + } + zd1211_submit_tx_urb(macp,TRUE); + } else if(sw_tcb->CalMIC[MIC_LNG] == TRUE && (i == numOfFrag-2)) { + if(frag_info->bodyLen[i+1] < MIC_LNG) { + sw_tcb->MIC_Start=0; + sw_tcb->MIC_Len=MIC_LNG-frag_info->bodyLen[i+1]; + } else { + sw_tcb->MIC_Start=0; + sw_tcb->MIC_Len=0; + } + zd1211_submit_tx_urb(macp,TRUE); + } else + zd1211_submit_tx_urb(macp,FALSE); + //zd1205_tx_isr(macp); //for debug only +#endif - TotalLength += length; - pTbd->TbdCount = cpu_to_le32(length); - pTbd++; - tcb_tbd_num++; + g_dev->trans_start = jiffies; + macp->TxStartTime = nowT(); + ZD1211DEBUG(2, "zd1211: Cnt of activeQ = %x\n", macp->activeTxQ->count); + } -#if defined(AMAC) - TotalLength += CurrFragLen; - sw_tcb->pHwCtrlPtr->CtrlSetting[18] = (u8)TotalLength; - sw_tcb->pHwCtrlPtr->CtrlSetting[19] = (u8)(TotalLength >> 8); -#endif - - /* Frame Body */ - if ((!skb) || ((skb) && (!frag))) { - u32 body_dma; - - ZD1211DEBUG(2, "zd1211: Management frame body or No linux frag\n"); - if (macp->dbg_flag > 4) - zd1205_dump_data("data part", (U8 *)pBody, 14); - - pTbd->TbdBufferAddrHighPart = 0; - body_dma = (u32)pBody; - ZD1211DEBUG(2, "zd1211: body_dma = %x\n", (u32)body_dma); - - pTbd->TbdBufferAddrLowPart = cpu_to_le32(body_dma); - pTbd->TbdCount = cpu_to_le32(CurrFragLen); - pBody += CurrFragLen; - pTbd->PrvFragLen = PrvFragLen; - PrvFragLen += CurrFragLen; - pTbd++; - tcb_tbd_num++; - } else { - while(CurrFragLen) { - u32 body_dma; - if (CurrFragLen >= frag->size) { - printk(KERN_DEBUG "zd1205: linux more frag skb\n"); - addr = ((void *) page_address(frag->page) + frag->page_offset); - pTbd->TbdBufferAddrHighPart = 0; - body_dma = (u32)addr; - pTbd->TbdBufferAddrLowPart = cpu_to_le32(body_dma); - pTbd->TbdCount = cpu_to_le32(frag->size); - tcb_tbd_num++; - pTbd->PrvFragLen = PrvFragLen; - PrvFragLen += CurrFragLen; - CurrFragLen -= frag->size; - frag++; - } else { - printk(KERN_DEBUG "zd1205: linux last frag skb\n"); - addr = ((void *) page_address(frag->page) + frag->page_offset); - pTbd->TbdBufferAddrHighPart = 0; - body_dma = (u32)addr; - pTbd->TbdBufferAddrLowPart = cpu_to_le32(body_dma); - frag->page_offset += CurrFragLen; - frag->size -= CurrFragLen; - pTbd->PrvFragLen = PrvFragLen; - PrvFragLen += CurrFragLen; - CurrFragLen = 0; - } - - printk(KERN_DEBUG "zd1205: page_address = %x\n", (u32)addr); - printk(KERN_DEBUG "zd1205: body_dma = %x\n", (u32)body_dma); - pTbd++; - tcb_tbd_num++; - } - } - hw_tcb->TxCbTbdNumber = cpu_to_le32(tcb_tbd_num); - macp->txCnt++; - zd1205_qlast_txq(macp, macp->activeTxQ, sw_tcb); - zd1211_submit_tx_urb(macp); - //zd1205_tx_isr(macp); //for debug only - g_dev->trans_start = jiffies; - macp->TxStartTime = nowT(); - ZD1211DEBUG(2, "zd1211: Cnt of activeQ = %x\n", macp->activeTxQ->count); - } - ZD1211DEBUG(2, "===== zdcb_setup_next_send exit =====\n"); - return TRUE; +#ifndef HOST_IF_USB + spin_unlock_irqrestore(&macp->bd_non_tx_lock, lock_flag); +#endif + + ZD1211DEBUG(2, "===== zdcb_setup_next_send exit =====\n"); + return TRUE; } void zdcb_release_buffer(void *buf) { - struct sk_buff *skb = (struct sk_buff *)buf; + struct sk_buff *skb = (struct sk_buff *)buf; - if (skb) - dev_kfree_skb_irq(skb); + if (skb) + dev_kfree_skb_any(skb); + //dev_kfree_skb_irq(skb); } void zdcb_rx_ind(U8 *pData, U32 length, void *buf) { - struct zd1205_private *macp = g_dev->priv; - struct sk_buff *skb = (struct sk_buff *)buf; - - ZENTER(3); - - //copy packet for IP header is located on 4-bytes alignment - if (length < RX_COPY_BREAK) { - dev_kfree_skb_irq(skb); - skb = dev_alloc_skb(length+2); - if (skb) { - skb->dev = g_dev; - skb_reserve(skb, 2); - eth_copy_and_sum(skb, pData, length, 0); - skb_put(skb, length); - } - } else { - skb->tail = skb->data = pData; - skb_put(skb, length); - } - - //zd1205_dump_data("rx_ind", (U8 *)skb->data, skb->len); - ZD1211DEBUG(2, "zd1211: rx_ind length = %x\n", (u32)length); - - /* set the protocol */ - skb->protocol = eth_type_trans(skb, g_dev); - skb->ip_summed = CHECKSUM_NONE; //TBD - g_dev->last_rx = jiffies; - - switch(netif_rx(skb)) { - case NET_RX_BAD: - case NET_RX_DROP: - case NET_RX_CN_MOD: - case NET_RX_CN_HIGH: - break; + struct zd1205_private *macp = g_dev->priv; + struct sk_buff *skb = (struct sk_buff *)buf; - default: - macp->drv_stats.net_stats.rx_packets++; - macp->drv_stats.net_stats.rx_bytes += skb->len; - break; - } + ZENTER(3); - ZEXIT(3); + //copy packet for IP header is located on 4-bytes alignment + if (length < RX_COPY_BREAK) { + dev_kfree_skb_irq(skb); + skb = dev_alloc_skb(length+2); + + if (skb) { + skb->dev = g_dev; + skb_reserve(skb, 2); + eth_copy_and_sum(skb, pData, length, 0); + + skb_put(skb, length); + } + } else { + skb->tail = skb->data = pData; + skb_put(skb, length); + } + + //zd1205_dump_data("rx_ind", (U8 *)skb->data, skb->len); + + ZD1211DEBUG(2, "zd1211: rx_ind length = %x\n", (u32)length); + + /* set the protocol */ + skb->protocol = eth_type_trans(skb, g_dev); + skb->ip_summed = CHECKSUM_NONE; //TBD + g_dev->last_rx = jiffies; + + switch(netif_rx(skb)) { + case NET_RX_BAD: + case NET_RX_DROP: + case NET_RX_CN_MOD: + case NET_RX_CN_HIGH: + break; + + default: + macp->drv_stats.net_stats.rx_packets++; + macp->drv_stats.net_stats.rx_bytes += skb->len; + break; + } + ZEXIT(3); } U16 zdcb_status_notify(U16 status, U8 *StaAddr) { - struct zd1205_private *macp = g_dev->priv; - U16 result = 0; - - switch (status) { - case STA_AUTH_REQ: - break; - - case STA_ASOC_REQ: - break; - - case STA_REASOC_REQ: - break; + struct zd1205_private *macp = g_dev->priv; + U16 result = 0; + int newassoc = 0; + + switch (status) { + case STA_AUTH_REQ: + break; + + case STA_ASOC_REQ: + break; + + case STA_REASOC_REQ: + break; + + case STA_ASSOCIATED: + case STA_REASSOCIATED: + macp->bAssoc = 1; + mTmRetryConnect=0; + iLED_ON(macp, macp->LinkLEDn); +#ifdef HOST_IF_USB - case STA_ASSOCIATED: - case STA_REASSOCIATED: - macp->bAssoc = 1; - iLED_ON(macp, macp->LinkLEDn); - macp-> LinkTimer = 0; + macp-> LinkTimer = 0; - if (macp->DataLED == 0) { + if (macp->DataLED == 0) { #ifdef ROBIN_KAO - zd_writel(0x03, FW_LINK_STATUS); + zd_writel(0x03, FW_LINK_STATUS); #else - zd_writel(0x01, FW_LINK_STATUS); + + zd_writel(0x01, FW_LINK_STATUS); #endif - } else - zd_writel(0x00, FW_LINK_STATUS); - memcpy(&macp->BSSID[0], StaAddr, 6); - //if (macp->cardSetting.BssType == INFRASTRUCTURE_BSS) - if (macp->cardSetting.BssType != AP_BSS) - netif_wake_queue(macp->device); - //netif_start_queue(macp->device); - - if (status == STA_ASSOCIATED) - printk(KERN_DEBUG "STA_ASSOCIATED\n"); - else - printk(KERN_DEBUG "STA_REASSOCIATED\n"); - printk(KERN_DEBUG "mac addr = %02x:%02x:%02x:%02x:%02x:%02x\n", - StaAddr[0], StaAddr[1], StaAddr[2], StaAddr[3], StaAddr[4], StaAddr[5]); - break; + } else + zd_writel(0x00, FW_LINK_STATUS); +#endif - case STA_DISASSOCIATED: - case STA_DEAUTHED: - zd_writel(0x0, FW_LINK_STATUS); - macp->bAssoc = 0; - if (macp->cardSetting.BssType == INFRASTRUCTURE_BSS) { - memset(&macp->BSSID[0], 0, 6); - netif_stop_queue(macp->device); - //zd1205_dis_connect(macp); - } + memcpy(&macp->BSSID[0], StaAddr, 6); - if (status == STA_DISASSOCIATED) - printk(KERN_DEBUG "STA_DISASSOCIATED\n"); - else - printk(KERN_DEBUG "STA_DEAUTHED\n"); + //if (macp->cardSetting.BssType == INFRASTRUCTURE_BSS) + if (macp->cardSetting.BssType != AP_BSS) { + netif_wake_queue(macp->device); + netif_carrier_on(macp->device); + } + + if (status == STA_ASSOCIATED) { + ZD1211DEBUG(0, "STA_ASSOCIATED with " MACSTR "\n", MAC2STR(StaAddr)); + newassoc = 1; + } else { + ZD1211DEBUG(0, "STA_REASSOCIATED with " MACSTR "\n", MAC2STR(StaAddr)); + } + /* Generate a wireless event to the upper layer */ + if(test_and_clear_bit(CTX_FLAG_ESSID_WAS_SET, (void*)&macp->flags)) { + zd1205_notify_join_event(macp); + } + + break; + + case STA_DISASSOCIATED: + case STA_DEAUTHED: +#ifndef HOST_IF_USB - printk(KERN_DEBUG "mac addr = %02x:%02x:%02x:%02x:%02x:%02x\n", - StaAddr[0], StaAddr[1], StaAddr[2], StaAddr[3], StaAddr[4], StaAddr[5]); - break; + iLED_OFF(macp, LED1); +#else - default: - break; - } + zd_writel(0x0, FW_LINK_STATUS); +#endif - return result; + macp->bAssoc = 0; + + if (macp->cardSetting.BssType == INFRASTRUCTURE_BSS) { + union iwreq_data wreq; + memset(&wreq, 0, sizeof(wreq)); + wreq.addr.sa_family=ARPHRD_ETHER; + wireless_send_event(macp->device, SIOCGIWAP,&wreq, NULL); + memset(&macp->BSSID[0], 0, 6); + netif_stop_queue(macp->device); + //zd1205_dis_connect(macp); + netif_carrier_off(macp->device); + } + if (status == STA_DISASSOCIATED) + ZD1211DEBUG(0, "STA_DISASSOCIATED:" MACSTR "\n",MAC2STR(StaAddr)); + else + ZD1211DEBUG(0, "STA_DEAUTHED:" MACSTR "\n",MAC2STR(StaAddr)); + + break; + + default: + break; + } + + return result; } + void zdcb_tx_completed(void) { } void chal_tout_cb(unsigned long ptr) { - struct zd1205_private *macp = g_dev->priv; - defer_kevent(macp, KEVENT_TCHAL_TIMEOUT); +#ifdef HOST_IF_USB + struct zd1205_private *macp = g_dev->priv; + defer_kevent(macp, KEVENT_TCHAL_TIMEOUT); +#else + + zd_EventNotify(EVENT_TCHAL_TIMEOUT, 0, 0, 0); +#endif } void scan_tout_cb(unsigned long ptr) { - struct zd1205_private *macp = g_dev->priv; - defer_kevent(macp, KEVENT_SCAN_TIMEOUT); +#ifdef HOST_IF_USB + struct zd1205_private *macp = g_dev->priv; + defer_kevent(macp, KEVENT_SCAN_TIMEOUT); +#else + + zd_EventNotify(EVENT_SCAN_TIMEOUT, 0, 0, 0); +#endif } void asoc_tout_cb(unsigned long ptr) { - struct zd1205_private *macp = g_dev->priv; - defer_kevent(macp, KEVENT_AUTH_TIMEOUT); +#ifdef HOST_IF_USB + struct zd1205_private *macp = g_dev->priv; + defer_kevent(macp, KEVENT_AUTH_TIMEOUT); +#else + + zd_EventNotify(EVENT_ASOC_TIMEOUT, 0, 0, 0); +#endif } void auth_tout_cb(unsigned long ptr) { - struct zd1205_private *macp = g_dev->priv; - defer_kevent(macp, KEVENT_AUTH_TIMEOUT); -} +#ifdef HOST_IF_USB + struct zd1205_private *macp = g_dev->priv; + defer_kevent(macp, KEVENT_AUTH_TIMEOUT); +#else -static void init_and_start_timer(struct timer_list *timer, - U32 timeout, - void (*function)(unsigned long)) -{ - unsigned long flags; - - spin_lock_irqsave(&driver_lock, flags); - if (timer_pending(timer)) { - printk(KERN_ERR "using mod_timer instead of init_timer\n"); - mod_timer(timer, jiffies + timeout); - } else { - init_timer(timer); - timer->data = (unsigned long) g_dev; - timer->expires = jiffies + timeout; - timer->function = function; - add_timer(timer); - } - spin_unlock_irqrestore(&driver_lock, flags); + zd_EventNotify(EVENT_AUTH_TIMEOUT, 0, 0, 0); +#endif } void zdcb_start_timer(U32 timeout, U32 event) { - struct zd1205_private *macp = g_dev->priv; + struct zd1205_private *macp = g_dev->priv; + u32 timeout_in_jiffies; + if (!macp->bUSBDeveiceAttached) + return; + timeout_in_jiffies= (timeout*HZ)/1000; // Conver ms to jiffies + + switch (event) { + case DO_CHAL: + /* ath_desc: fix timer-related race conditions */ + macp->tm_chal_id.data = (unsigned long) g_dev; + macp->tm_chal_id.function = chal_tout_cb; + mod_timer(&macp->tm_chal_id, jiffies + timeout_in_jiffies); + break; + + case DO_SCAN: + macp->tm_scan_id.data = (unsigned long) g_dev; + macp->tm_scan_id.function = scan_tout_cb; + mod_timer(&macp->tm_scan_id, jiffies + timeout_in_jiffies); + break; + + + case DO_AUTH: + macp->tm_auth_id.data = (unsigned long) g_dev; + macp->tm_auth_id.function = auth_tout_cb; + mod_timer(&macp->tm_auth_id, jiffies + timeout_in_jiffies); + break; + + case DO_ASOC: + if(AsocTimerStat) { + del_timer_sync(&macp->tm_asoc_id); + AsocTimerStat = FALSE; + } + init_timer(&macp->tm_asoc_id); + macp->tm_asoc_id.data = (unsigned long) g_dev; + macp->tm_asoc_id.function = asoc_tout_cb; + mod_timer(&macp->tm_asoc_id, jiffies + timeout_in_jiffies); + AsocTimerStat = TRUE; + break; + + default: + break; + } +} - switch (event) { - case DO_CHAL: - init_and_start_timer(&macp->tm_chal_id, timeout, chal_tout_cb); - break; - case DO_SCAN: - init_and_start_timer(&macp->tm_scan_id, timeout, scan_tout_cb); - break; +void zdcb_stop_timer(U32 TimerId) +{ + struct zd1205_private *macp = g_dev->priv; - case DO_AUTH: - init_and_start_timer(&macp->tm_auth_id, timeout, auth_tout_cb); - break; + switch (TimerId) { + case DO_CHAL: + del_timer_sync(&macp->tm_chal_id); + break; - case DO_ASOC: - init_and_start_timer(&macp->tm_asoc_id, timeout, asoc_tout_cb); - break; + case DO_AUTH: + del_timer_sync(&macp->tm_auth_id); + break; - default: - printk(KERN_ERR "Unknown timer in zdcb_start_timer: %u\n",(int) event); - break; - } + + case DO_ASOC: + del_timer_sync(&macp->tm_asoc_id); + AsocTimerStat = FALSE; + break; + + default: + break; + + } } -void zdcb_stop_timer(U32 TimerId) +U32 +zdcb_dis_intr(void) { - struct zd1205_private *macp = g_dev->priv; + struct zd1205_private *macp = g_dev->priv; + U32 flags = 0; - switch (TimerId) { - case DO_CHAL: - del_timer(&macp->tm_chal_id); - break; +#if 1//ndef HOST_IF_USB - case DO_AUTH: - del_timer(&macp->tm_auth_id); - break; + spin_lock_irqsave(&macp->cs_lock, flags); +#else - case DO_ASOC: - del_timer(&macp->tm_asoc_id); - break; + spin_lock(&macp->cs_lock); +#endif - default: - break; - } + return flags; } -inline U32 zdcb_dis_intr(void) +void +zdcb_set_intr_mask(U32 flags) { - struct zd1205_private *macp = g_dev->priv; - U32 flags = 0; - spin_lock_irqsave(&macp->cs_lock, flags); - return flags; -} + struct zd1205_private *macp = g_dev->priv; -inline void zdcb_set_intr_mask(U32 flags) -{ - struct zd1205_private *macp = g_dev->priv; - spin_unlock_irqrestore(&macp->cs_lock, flags); +#if 1//ndef HOST_IF_USB + + spin_unlock_irqrestore(&macp->cs_lock, flags); +#else + + spin_unlock(&macp->cs_lock); +#endif } -U32 zdcb_vir_to_phy_addr(U32 virtAddr) +U32 zdcb_vir_to_phy_addr(U32 virtAddr) //TBD { - return virtAddr; + return virtAddr; } -inline void zdcb_set_reg(void *reg, U32 offset, U32 value) +void zdcb_set_reg(void *reg, U32 offset, U32 value) { - zd_writel(value, offset); + zd_writel(value, offset); } -inline U32 zdcb_get_reg(void *reg, U32 offset) +U32 zdcb_get_reg(void *reg, U32 offset) { - return zd_readl(offset); + return zd_readl(offset); } -inline BOOLEAN zdcb_check_tcb_avail(U8 num_of_frag) +BOOLEAN +zdcb_check_tcb_avail(U8 num_of_frag) { - struct zd1205_private *macp = g_dev->priv; - BOOLEAN ret; - U32 flags; + struct zd1205_private *macp = g_dev->priv; + BOOLEAN ret; + + U32 flags; - spin_lock_irqsave(&macp->q_lock, flags); - if (macp->freeTxQ->count < (num_of_frag+1)) - ret = FALSE; - else - ret = TRUE; - spin_unlock_irqrestore(&macp->q_lock, flags); + spin_lock_irqsave(&macp->q_lock, flags); - return ret; + /* ath_desc: fix oops when performing scan without invoking ifconfig up first */ + if (!macp->freeTxQ) { + printk(KERN_WARNING "zd1211: FIXME: frames cannot be sent when the iface is down\n"); + ret = FALSE; + } else if (macp->freeTxQ->count < (num_of_frag+1)) + ret = FALSE; + else + ret = TRUE; + + spin_unlock_irqrestore(&macp->q_lock, flags); + return ret; } + void zdcb_delay_us(U16 ustime) { - udelay(ustime); + struct zd1205_private *macp=g_dev->priv; + interruptible_sleep_on_timeout(&macp->msdelay, ustime/1000); + //udelay(ustime); } void * zdcb_AllocBuffer(U16 dataSize, U8 **pData) { - struct sk_buff *new_skb = NULL; - new_skb = (struct sk_buff *) dev_alloc_skb(dataSize); - if (new_skb) { - *pData = new_skb->data; - } - return (void *)new_skb; + struct sk_buff *new_skb = NULL; + + new_skb = (struct sk_buff *) dev_alloc_skb(dataSize); + if (new_skb) { + *pData = new_skb->data; + } + + return (void *)new_skb; } unsigned long int next = 1; int zdcb_Rand(U32 seed) { - static int first = 1; - if (first) { - next = seed; - first = 0; - } - next = next * 1103515245 + 12345; - return ((unsigned int)(next/65535)%32768); + static int first = 1; + + if (first) { + next = seed; + first = 0; + } + + next = next * 1103515245 + 12345; + return ((unsigned int)(next/65535)%32768); } void zdcb_AcquireDoNotSleep(void) { - struct zd1205_private *macp = g_dev->priv; - atomic_inc(&macp->DoNotSleep); + struct zd1205_private *macp = g_dev->priv; + atomic_inc(&macp->DoNotSleep); } void zdcb_ReleaseDoNotSleep(void) { - struct zd1205_private *macp = g_dev->priv; - atomic_dec(&macp->DoNotSleep); + struct zd1205_private *macp = g_dev->priv; + atomic_dec(&macp->DoNotSleep); +} +#ifdef HOSTAPD_SUPPORT +/* + In this callback function, we just copy the WPA IE into the + field of each STA's hash_t entry. The behavior is for the hostapd. + */ + +int zdcb_AssocRequest(U8 *addr, U8 *WPAIE, U16 size) +{ + Hash_t *pHash; + (void)size; /* unused callback param */ + + if (mCounterMeasureState) { +#ifdef WPA_DEBUG + printk(KERN_DEBUG "---------In CounterMeasure state, fail AssocReqest\n"); +#endif + + return 1; + } + pHash = HashSearch((MacAddr_t *)addr); + + /* Can't search the MAC address in the hash table. */ + if (pHash == NULL) + return 1; + else { + memcpy(&pHash->WPAIE, WPAIE, sizeof(pHash->WPAIE)); + } + return 0; +} + +void zdcb_MicFailure(unsigned char *addr) +{ + union iwreq_data wrqu; + char buf[128]; + + /* TODO: needed parameters: count, keyid, key type, src address, TSC */ +#ifdef WPA_DEBUG + + printk(KERN_ERR "MLME-MICHAELMICFAILURE.indication addr=" MACSTR "\n", MAC2STR(addr)); +#endif + + memset(&wrqu, 0, sizeof(wrqu)); + wrqu.data.length = strlen(buf); + wireless_send_event(g_dev, IWEVCUSTOM, &wrqu, buf); } +#endif + //setup callback functions for protocol stack void zd1205_set_zd_cbs(zd_80211Obj_t *pObj) { - pObj->QueueFlag = 0; - pObj->ConfigFlag = 0; - pObj->SetReg = zdcb_set_reg; - pObj->GetReg = zdcb_get_reg; - pObj->ReleaseBuffer = zdcb_release_buffer; - pObj->RxInd = zdcb_rx_ind; - pObj->TxCompleted = zdcb_tx_completed; - pObj->StartTimer = zdcb_start_timer; - pObj->StopTimer = zdcb_stop_timer; - pObj->SetupNextSend = zdcb_setup_next_send; - pObj->StatusNotify = zdcb_status_notify; - pObj->ExitCS = zdcb_set_intr_mask; - pObj->EnterCS = zdcb_dis_intr; - pObj->Vir2PhyAddr = zdcb_vir_to_phy_addr; - pObj->CheckTCBAvail = zdcb_check_tcb_avail; - pObj->DelayUs = zdcb_delay_us; - pObj->AllocBuffer = zdcb_AllocBuffer; - pObj->Rand = zdcb_Rand; - pObj->AcquireDoNotSleep = zdcb_AcquireDoNotSleep; - pObj->ReleaseDoNotSleep = zdcb_ReleaseDoNotSleep; - // wpa support - pObj->MicFailure = NULL; - pObj->AssocRequest = NULL; - pObj->WpaIe = NULL; + pObj->QueueFlag = 0; + pObj->ConfigFlag = 0; + pObj->SetReg = zdcb_set_reg; + pObj->GetReg = zdcb_get_reg; + + pObj->ReleaseBuffer = zdcb_release_buffer; + pObj->RxInd = zdcb_rx_ind; + pObj->TxCompleted = zdcb_tx_completed; + pObj->StartTimer = zdcb_start_timer; + pObj->StopTimer = zdcb_stop_timer; + pObj->SetupNextSend = zdcb_setup_next_send; + + pObj->StatusNotify = zdcb_status_notify; + pObj->ExitCS = zdcb_set_intr_mask; + pObj->EnterCS = zdcb_dis_intr; + pObj->Vir2PhyAddr = zdcb_vir_to_phy_addr; + pObj->CheckTCBAvail = zdcb_check_tcb_avail; + pObj->DelayUs = zdcb_delay_us; + pObj->AllocBuffer = zdcb_AllocBuffer; + pObj->Rand = zdcb_Rand; + pObj->AcquireDoNotSleep = zdcb_AcquireDoNotSleep; + pObj->ReleaseDoNotSleep = zdcb_ReleaseDoNotSleep; + pObj->bChScanning=0; + + // wpa support +#ifdef HOSTAPD_SUPPORT + + pObj->MicFailure = zdcb_MicFailure; + pObj->AssocRequest = zdcb_AssocRequest; + pObj->WpaIe = NULL; +#else + // wpa support + pObj->MicFailure = NULL; + pObj->AssocRequest = NULL; + pObj->WpaIe = NULL; +#endif + } void zd1205_SetRatesInfo(struct zd1205_private *macp) { - u8 bRatesSet = 1; - card_Setting_t *pCardSetting; - pCardSetting = &macp->cardSetting; - if (pCardSetting->MacMode == MIXED_MODE) { - ZD1211DEBUG(0, "Mixed Mode\n"); - zd_writel(CW_SHORT_SLOT, CWmin_CWmax); - pCardSetting->ShortSlotTime = 1; - pCardSetting->PreambleType = 1; //short preamble - bRatesSet = 1; - } else if (pCardSetting->MacMode == PURE_G_MODE) { - ZD1211DEBUG(0, "Pure G-Mode\n"); - zd_writel(CW_SHORT_SLOT, CWmin_CWmax); - pCardSetting->ShortSlotTime = 1; - pCardSetting->PreambleType = 1; //short preamble - bRatesSet = 2; - } else { // pure B mode - ZD1211DEBUG(0, "Pure B-Mode\n"); - zd_writel(CW_NORMAL_SLOT, CWmin_CWmax); - pCardSetting->ShortSlotTime = 0; - pCardSetting->PreambleType = 1; //short preamble - bRatesSet = 3; - } - if (bRatesSet == 1) { //wi-fi set1 - // supported rates - pCardSetting->Info_SupportedRates[0] = 0x01; - pCardSetting->Info_SupportedRates[1] = 0x04; - pCardSetting->Info_SupportedRates[2] = 0x82; //basic rate - pCardSetting->Info_SupportedRates[3] = 0x84; //basic rate - pCardSetting->Info_SupportedRates[4] = 0x8B; //basic rate - pCardSetting->Info_SupportedRates[5] = 0x96; //basic rate - - //Extended supported rates - pCardSetting->Ext_SupportedRates[0] = 0x32; - pCardSetting->Ext_SupportedRates[1] = 0x08; - pCardSetting->Ext_SupportedRates[2] = 0x0c; - pCardSetting->Ext_SupportedRates[3] = 0x12; - pCardSetting->Ext_SupportedRates[4] = 0x18; - pCardSetting->Ext_SupportedRates[6] = 0x24; - pCardSetting->Ext_SupportedRates[7] = 0x30; - pCardSetting->Ext_SupportedRates[8] = 0x48; - pCardSetting->Ext_SupportedRates[5] = 0x60; - pCardSetting->Ext_SupportedRates[9] = 0x6c; - zd_writel(0x150f, MandatoryRateTbl); //1,2,5.5,11,6,12,24 - } else if (bRatesSet == 2) { //wi-fi set2 - // supported rates - pCardSetting->Info_SupportedRates[0] = 0x01; - pCardSetting->Info_SupportedRates[1] = 0x04; - pCardSetting->Info_SupportedRates[2] = 0x82; //basic rate - pCardSetting->Info_SupportedRates[3] = 0x84; //basic rate - pCardSetting->Info_SupportedRates[4] = 0x8B; //basic rate - pCardSetting->Info_SupportedRates[5] = 0x96; //basic rate - //Extended supported rates - pCardSetting->Ext_SupportedRates[0] = 0x32; - pCardSetting->Ext_SupportedRates[1] = 0x08; - pCardSetting->Ext_SupportedRates[2] = 0x8c; //basic rate - pCardSetting->Ext_SupportedRates[3] = 0x12; - pCardSetting->Ext_SupportedRates[4] = 0x98; //basic rate - pCardSetting->Ext_SupportedRates[6] = 0x24; - pCardSetting->Ext_SupportedRates[7] = 0xb0; //basic rate - pCardSetting->Ext_SupportedRates[8] = 0x48; - pCardSetting->Ext_SupportedRates[5] = 0x60; - pCardSetting->Ext_SupportedRates[9] = 0x6c; - zd_writel(0x150f, MandatoryRateTbl); //1,2,5.5,11,6,12,24 - } else if (bRatesSet == 3) { //pure b mode - // supported rates - pCardSetting->Info_SupportedRates[0] = 0x01; - pCardSetting->Info_SupportedRates[1] = 0x04; - pCardSetting->Info_SupportedRates[2] = 0x82; //basic rate - pCardSetting->Info_SupportedRates[3] = 0x84; //basic rate - pCardSetting->Info_SupportedRates[4] = 0x8B; //basic rate - pCardSetting->Info_SupportedRates[5] = 0x96; //basic rate - zd_writel(0x0f, MandatoryRateTbl); //1,2,5.5,11 - } -} - -u16 ZDLOGTEN[] = {0, - 0 , 30 , 47 , 60 , 69 , 77 , 84 , 90 , 95 , 100 , - 104 , 107 , 111 , 114 , 117 , 120 , 123 , 125 , 127 , 130 , - 132 , 134 , 136 , 138 , 139 , 141 , 143 , 144 , 146 , 147 , - 149 , 150 , 151 , 153 , 154 , 155 , 156 , 157 , 159 , 160 , - 161 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 169 , - 170 , 171 , 172 , 173 , 174 , 174 , 175 , 176 , 177 , 177 , - 178 , 179 , 179 , 180 , 181 , 181 , 182 , 183 , 183 , 184 , - 185 , 185 , 186 , 186 , 187 , 188 , 188 , 189 , 189 , 190 , - 190 , 191 , 191 , 192 , 192 , 193 , 193 , 194 , 194 , 195 , - 195 , 196 , 196 , 197 , 197 , 198 , 198 , 199 , 199 , 200 , - 200 , 200 , 210 , 210 , 220 , 220 , 220 , 230 , 230 , 240 , - 240 , 240 , 250 , 250 , 260 , 260 , 260 , 270 , 270 , 270 , - 280 , 280 , 280 , 290 , 290 , 210 , 210 , 210 , 211 , 211 , - 211 , 212 , 212 , 212 , 213 , 213 , 213 , 213 , 214 , 214 , - 214 , 215 , 215 , 215 , 216 , 216 , 216 , 217 , 217 , 217 , - 217 , 218 , 218 , 218 , 219 , 219 , 219 , 219 , 220 , 220 , - 220 , 220 , 221 , 221 , 221 , 222 , 222 , 222 , 222 , 223 , - 223 , 223 , 223 , 224 , 224 , 224 , 224 , 225 , 225 , 225 , - 225 -}; - -u16 ZDLog10multiply100(int data) -{ - if ((data >= 0) && (data <= 0xb5)) - return ZDLOGTEN[data]; - else - return 225; + u8 bRatesSet = 1; + card_Setting_t *pCardSetting; + + pCardSetting = &macp->cardSetting; + + if (pCardSetting->MacMode == MIXED_MODE) + { + ZD1211DEBUG(0, "Mixed Mode\n"); + zd_writel(CW_SHORT_SLOT, CWmin_CWmax); + pCardSetting->ShortSlotTime = 1; + pCardSetting->PreambleType = 1; //short preamble + bRatesSet = 1; + } else if (pCardSetting->MacMode == PURE_G_MODE) + { + ZD1211DEBUG(0, "Pure G-Mode\n"); + zd_writel(CW_SHORT_SLOT, CWmin_CWmax); + pCardSetting->ShortSlotTime = 1; + pCardSetting->PreambleType = 1; //short preamble + bRatesSet = 2; + } else if (pCardSetting->MacMode == PURE_A_MODE) + { + ZD1211DEBUG(0, "Pure A-Mode\n"); + zd_writel(CW_SHORT_SLOT, CWmin_CWmax); + pCardSetting->ShortSlotTime = 1; + pCardSetting->PreambleType = 1; //short preamble + bRatesSet = 4; + + } else if (pCardSetting->MacMode == PURE_B_MODE) + { // pure B mode + ZD1211DEBUG(0, "Pure B-Mode\n"); + zd_writel(CW_NORMAL_SLOT, CWmin_CWmax); + pCardSetting->ShortSlotTime = 0; + pCardSetting->PreambleType = 1; //short preamble + bRatesSet = 3; + } else + VerAssert(); + + if (bRatesSet == 1) + { //wi-fi set1 + // supported rates + pCardSetting->Info_SupportedRates[0] = 0x01; + pCardSetting->Info_SupportedRates[1] = 0x04; + pCardSetting->Info_SupportedRates[2] = 0x82; //basic rate + pCardSetting->Info_SupportedRates[3] = 0x84; //basic rate + pCardSetting->Info_SupportedRates[4] = 0x8B; //basic rate + pCardSetting->Info_SupportedRates[5] = 0x96; //basic rate + + //Extended supported rates + pCardSetting->Ext_SupportedRates[0] = 0x32; + pCardSetting->Ext_SupportedRates[1] = 0x08; + pCardSetting->Ext_SupportedRates[2] = 0x0c; + pCardSetting->Ext_SupportedRates[3] = 0x12; + pCardSetting->Ext_SupportedRates[4] = 0x18; + pCardSetting->Ext_SupportedRates[6] = 0x24; + pCardSetting->Ext_SupportedRates[7] = 0x30; + pCardSetting->Ext_SupportedRates[8] = 0x48; + pCardSetting->Ext_SupportedRates[5] = 0x60; + pCardSetting->Ext_SupportedRates[9] = 0x6c; + zd_writel(0x150f, MandatoryRateTbl); //1,2,5.5,11,6,12,24 + } else if (bRatesSet == 2) + { //wi-fi set2 + // supported rates + pCardSetting->Info_SupportedRates[0] = 0x01; + pCardSetting->Info_SupportedRates[1] = 0x04; + pCardSetting->Info_SupportedRates[2] = 0x82; //basic rate + pCardSetting->Info_SupportedRates[3] = 0x84; //basic rate + pCardSetting->Info_SupportedRates[4] = 0x8B; //basic rate + pCardSetting->Info_SupportedRates[5] = 0x96; //basic rate + + //Extended supported rates + pCardSetting->Ext_SupportedRates[0] = 0x32; + pCardSetting->Ext_SupportedRates[1] = 0x08; + pCardSetting->Ext_SupportedRates[2] = 0x8c; //basic rate + pCardSetting->Ext_SupportedRates[3] = 0x12; + pCardSetting->Ext_SupportedRates[4] = 0x98; //basic rate + pCardSetting->Ext_SupportedRates[6] = 0x24; + pCardSetting->Ext_SupportedRates[7] = 0xb0; //basic rate + pCardSetting->Ext_SupportedRates[8] = 0x48; + pCardSetting->Ext_SupportedRates[5] = 0x60; + pCardSetting->Ext_SupportedRates[9] = 0x6c; + + zd_writel(0x150f, MandatoryRateTbl); //1,2,5.5,11,6,12,24 + } else if (bRatesSet == 3) + { //pure b mode + // supported rates + pCardSetting->Info_SupportedRates[0] = 0x01; + pCardSetting->Info_SupportedRates[1] = 0x04; + pCardSetting->Info_SupportedRates[2] = 0x82; //basic rate + pCardSetting->Info_SupportedRates[3] = 0x84; //basic rate + pCardSetting->Info_SupportedRates[4] = 0x8B; //basic rate + pCardSetting->Info_SupportedRates[5] = 0x96; //basic rate + zd_writel(0x0f, MandatoryRateTbl); //1,2,5.5,11 + } else if (bRatesSet == 4) + {//Pure A + pCardSetting->Info_SupportedRates[0] = 0x01; //Element ID + pCardSetting->Info_SupportedRates[1] = 0x08; //Rates Amount + pCardSetting->Info_SupportedRates[2] = 0x80+12 ; //RateByte = Mandatory Bit + 500k x 12 + pCardSetting->Info_SupportedRates[3] = 0x00+18; //Supported Rate + pCardSetting->Info_SupportedRates[4] = 0x80+24; //basic rate + pCardSetting->Info_SupportedRates[5] = 0x00+36; + pCardSetting->Info_SupportedRates[6] = 0x80+48; //basic rate + pCardSetting->Info_SupportedRates[7] = 0x00+72; + pCardSetting->Info_SupportedRates[8] = 0x00+96; + pCardSetting->Info_SupportedRates[9] = 0x00+108; + + zd_writel(0x0f, MandatoryRateTbl); //6,9,12,18,24,36,48,54 + + } + +} + + +u16 ZDLOGTEN[] = {0, + 0 , 30 , 47 , 60 , 69 , 77 , 84 , 90 , 95 , 100 , + 104 , 107 , 111 , 114 , 117 , 120 , 123 , 125 , 127 , 130 , + 132 , 134 , 136 , 138 , 139 , 141 , 143 , 144 , 146 , 147 , + 149 , 150 , 151 , 153 , 154 , 155 , 156 , 157 , 159 , 160 , + 161 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 169 , + 170 , 171 , 172 , 173 , 174 , 174 , 175 , 176 , 177 , 177 , + 178 , 179 , 179 , 180 , 181 , 181 , 182 , 183 , 183 , 184 , + 185 , 185 , 186 , 186 , 187 , 188 , 188 , 189 , 189 , 190 , + 190 , 191 , 191 , 192 , 192 , 193 , 193 , 194 , 194 , 195 , + 195 , 196 , 196 , 197 , 197 , 198 , 198 , 199 , 199 , 200 , + 200 , 200 , 210 , 210 , 220 , 220 , 220 , 230 , 230 , 240 , + 240 , 240 , 250 , 250 , 260 , 260 , 260 , 270 , 270 , 270 , + 280 , 280 , 280 , 290 , 290 , 210 , 210 , 210 , 211 , 211 , + 211 , 212 , 212 , 212 , 213 , 213 , 213 , 213 , 214 , 214 , + 214 , 215 , 215 , 215 , 216 , 216 , 216 , 217 , 217 , 217 , + 217 , 218 , 218 , 218 , 219 , 219 , 219 , 219 , 220 , 220 , + 220 , 220 , 221 , 221 , 221 , 222 , 222 , 222 , 222 , 223 , + 223 , 223 , 223 , 224 , 224 , 224 , 224 , 225 , 225 , 225 , + 225 + }; + +u16 +ZDLog10multiply100(int data) +{ + if ((data >= 0) && (data <= 0xb5)) + return ZDLOGTEN[data]; + else + return 225; } + + u32 X_Constant[] = { - 715, 655, 585, 540, 470, 410, 360, 315, - 270, 235, 205, 175, 150, 125, 105, 85, - 65, 50, 40, 25, 15 -}; + 715, 655, 585, 540, 470, 410, 360, 315, + 270, 235, 205, 175, 150, 125, 105, 85, + 65, 50, 40, 25, 15 + + }; + u8 X_To_dB(u32 X, u8 rate) { - u8 ret = 0; - int i; + u8 ret = 0; + int i; - int SizeOfX_Con = sizeof(X_Constant); + int SizeOfX_Con = sizeof(X_Constant); - for (i=0; i X_Constant[i]) - break; - } + switch (rate) { + case 0x0B: // 6M + case 0x0A: // 12M + case 0x09: // 24M + X /= 2; + break; + case 0x0F: // 9M + case 0x0E: // 18M + case 0x0D: // 36M + case 0x0C: // 54M + X *= 3; + X /= 4; + break; + case 0x08: // 48M + X *= 2; + X /= 3; + break; + default: + break; + } + for (i=0; i X_Constant[i]) + break; + } + + switch (rate) { + case 0x0B: // 6M + case 0x0F: // 9M + ret = i + 3; + break; + case 0x0A: // 12M + case 0x0E: // 18M + ret = i + 5; + break; + case 0x09: // 24M + case 0x0D: // 36M + ret = i + 9; + break; + case 0x08: // 48M + case 0x0C: // 54M + ret = i + 15; + break; + default: + break; + } + return ret; +} - switch(rate) { - case 6: - case 9: - ret = i + 3; - break; +u8 CalculateQuality(struct zd1205_private *macp, zd1205_RFD_t *rfd, u8 *pQualityIndB) +{ + u8 CorrectQuality = 0; + plcp_wla_Header_t *wla_hdr; + u32 frame_len,tot_len; + u8 SignalQuality2 = macp->rxSignalQuality2; + u32 X; + u16 tmpf; + u8 rxOffset = macp->rxOffset; - case 12: - case 18: - ret = i + 5; - break; + wla_hdr = (plcp_wla_Header_t *)&rfd->RxBuffer[macp->rxOffset]; + tot_len = (le32_to_cpu(rfd->ActualCount) & 0x3fff); + frame_len = tot_len - EXTRA_INFO_LEN; + SignalQuality2 = rfd->RxBuffer[frame_len+2]; - case 24: - case 36: - ret = i + 9; - break; - case 48: - case 54: - ret = i + 15; - break; - default: - break; - } + if (rfd->RxBuffer[tot_len-1] & 0x01) + { + // it's OFDM + macp->rxOFDMDataFrame++; - return ret; -} + X = 10000 * SignalQuality2 / (frame_len - macp->rxOffset); + CorrectQuality = X_To_dB(X, wla_hdr->PlcpHdr[0] & 0xF); -u8 CalculateQuality(struct zd1205_private *macp, zd1205_RFD_t *rfd, u8 *pQualityIndB) -{ - u8 CorrectQuality = 0; - plcp_wla_Header_t *wla_hdr; - u32 frame_len; - u32 len; - u8 SignalQuality2 = macp->rxSignalQuality2; - u32 X; - u16 tmpf; - u8 rxOffset = macp->rxOffset; - wla_hdr = (plcp_wla_Header_t *)&rfd->RxBuffer[macp->rxOffset]; - frame_len = (le32_to_cpu(rfd->ActualCount) & 0x3fff); - - //FrameLength -= rxOffset; - len = frame_len - EXTRA_INFO_LEN; - SignalQuality2 = rfd->RxBuffer[len+rxOffset+2]; - - if (rfd->RxBuffer[frame_len+rxOffset-1] & 0x01) { - // it's OFDM - macp->rxOFDMDataFrame++; - X = 10000 * SignalQuality2 / len; - CorrectQuality = X_To_dB(X, wla_hdr->PlcpHdr[0] & 0xF); - - if (pQualityIndB) - *pQualityIndB = CorrectQuality; - - CorrectQuality = CorrectQuality * 4; - if (CorrectQuality > 100) - CorrectQuality = 100; - } else { - // it's CCK - macp->rx11bDataFrame++; - // the value from PHY is in scale from Max is 0 and Min is 0xb5 - - switch(wla_hdr->PlcpHdr[0]) { - case 0x0A: - case 0x14: - case 0x37: - case 0x6E: - tmpf = 0; - if (macp->rxSignalQuality1 > 0) - tmpf = (u16)(ZDLog10multiply100(macp->rxSignalQuality1) * 20 /100); - - CorrectQuality = 45 - (u8)(tmpf); - - if (pQualityIndB) - *pQualityIndB = CorrectQuality; - - CorrectQuality = CorrectQuality * 4; + if (pQualityIndB) + *pQualityIndB = CorrectQuality; - if (CorrectQuality > 100) - CorrectQuality = 100; + CorrectQuality = (CorrectQuality +0)* 4; + if (CorrectQuality > 100) + CorrectQuality = 100; + } else + { + // it's CCK + macp->rx11bDataFrame++; - break; + // the value from PHY is in scale from Max is 0 and Min is 0xb5 + switch(wla_hdr->PlcpHdr[0]) { + case 0x0A: //1M + case 0x14: //2M + case 0x37: //5.5M + case 0x6E: //11M + tmpf = 0; - default: - break; - } - } - return CorrectQuality; + if (macp->rxSignalQuality1 > 0) + tmpf = (u16)(ZDLog10multiply100(macp->rxSignalQuality1) * 20 /100); + CorrectQuality = 45 - (u8)(tmpf); + + if (pQualityIndB) + *pQualityIndB = CorrectQuality; + + CorrectQuality = (CorrectQuality+5) * 4; + + if (CorrectQuality > 100) + CorrectQuality = 100; + break; + + default: + break; + + + } + } + + return CorrectQuality; } u8 CalculateStrength(struct zd1205_private *macp, zd1205_RFD_t *rfd) { - // return in ? , the Value-105 = dB - // the value from PHY is in ? - u32 frame_len; - u32 len; - u8 i, rssi, tmp; - u32 tmpvalue = 2; - plcp_wla_Header_t *wla_hdr; - u8 rxOffset = macp->rxOffset; - - wla_hdr = (plcp_wla_Header_t *)&rfd->RxBuffer[macp->rxOffset]; - frame_len = (le32_to_cpu(rfd->ActualCount) & 0x3fff); - len = frame_len - EXTRA_INFO_LEN; - - rssi = rfd->RxBuffer[len+rxOffset+1]; - - if ((((macp->cardSetting.BssType == INFRASTRUCTURE_BSS)&& - (!memcmp(wla_hdr->Address2, macp->BSSID, 6))) || - ((macp->cardSetting.BssType == INDEPENDENT_BSS)&& - (!memcmp(wla_hdr->Address3, macp->BSSID, 6))) || - (macp->cardSetting.BssType == PSEUDO_IBSS)) && - (macp->bAssoc)) { - for (i=0; iPHYTestIndex-1; i++) - tmpvalue *= 2; - - if ((dot11Obj.CR122Flag == 1)||(dot11Obj.CR203Flag == 1)) - rssi += 22; - tmp = macp->PHYTestRssi; - macp->PHYTestTotal = macp->PHYTestTotal - (macp->PHYTestTotal/tmpvalue) + rssi; - macp->PHYTestRssi = (u8) (macp->PHYTestTotal/tmpvalue); - } - return rssi; + // return in ? , the Value-105 = dB + // the value from PHY is in ? + u32 frame_len; + u32 tot_len; + u8 i, rssi, tmp; + u32 tmpvalue = 2; + plcp_wla_Header_t *wla_hdr; + //u8 rxOffset = macp->rxOffset; + + wla_hdr = (plcp_wla_Header_t *)&rfd->RxBuffer[macp->rxOffset]; + tot_len = (le32_to_cpu(rfd->ActualCount) & 0x3fff); + frame_len = tot_len - EXTRA_INFO_LEN; + rssi = rfd->RxBuffer[frame_len+1]; + + if ( (((macp->cardSetting.BssType == INFRASTRUCTURE_BSS)&& + (!memcmp(wla_hdr->Address2, macp->BSSID, 6))) || + ((macp->cardSetting.BssType == INDEPENDENT_BSS)&& + (!memcmp(wla_hdr->Address3, macp->BSSID, 6))) || + (macp->cardSetting.BssType == PSEUDO_IBSS)) && + (macp->bAssoc) ) + { + for(i=0; iPHYTestIndex-1; i++) + tmpvalue *= 2; + + //if ( (dot11Obj.CR122Flag == 1)||(dot11Obj.CR203Flag == 1) ) + // rssi += 22; + tmp = macp->PHYTestRssi; + macp->PHYTestTotal = macp->PHYTestTotal + - (macp->PHYTestTotal/tmpvalue) + + rssi; + macp->PHYTestRssi = (u8) (macp->PHYTestTotal/tmpvalue); + } + + return rssi; } void zd1205_initCAM(struct zd1205_private *macp) { - int i; - zd_writel(0, CAM_ROLL_TB_LOW); - zd_writel(0, CAM_ROLL_TB_HIGH); - for (i=0; i<445; i++) { - HW_CAM_Write(&dot11Obj, i, 0); - } + int i; + + zd_writel(0, CAM_ROLL_TB_LOW); + zd_writel(0, CAM_ROLL_TB_HIGH); + + for (i=0; i<445; i++) + { + HW_CAM_Write(&dot11Obj, i, 0); + } } int zd1205_CheckOverlapBss(struct zd1205_private *macp, plcp_wla_Header_t *pWlanHdr, u8 *pMacBody, u32 bodyLen) { - u8 *pByte; - u32 currPos = 0; - u8 elemId, elemLen; - u8 gAP = 0; - - u8 ErpInfo = 0; - - //get element - pByte = pMacBody+SSID_OFFSET; - currPos = SSID_OFFSET; - - while(currPos < bodyLen) { - elemId = *pByte; - elemLen = *(pByte+1); - - switch(elemId) { - case ELEID_ERP_INFO: //ERP info - gAP = 1; - ErpInfo = *(pByte+2); - pByte += (elemLen+2); - break; - - default: - pByte += (elemLen+2); - break; - } - currPos += elemLen+2; - } - - if (gAP) { - if (ErpInfo & NON_ERP_PRESENT_BIT) { //with B sta associated - return 1; - } else - return 0; - } else - return 1; // B AP exist, enable protection mode + u8 *pByte; + u32 currPos = 0; + u8 elemId, elemLen; + u8 gAP = 0; + + u8 ErpInfo = 0; + + //get element + pByte = pMacBody+SSID_OFFSET; + currPos = SSID_OFFSET; + + while(currPos < bodyLen) + { + elemId = *pByte; + elemLen = *(pByte+1); + + switch(elemId) { + case ELEID_ERP_INFO: //ERP info + gAP = 1; + ErpInfo = *(pByte+2); + pByte += (elemLen+2); + break; + + default: + pByte += (elemLen+2); + break; + + } + + currPos += elemLen+2; + } + + if (gAP) + { + if (ErpInfo & NON_ERP_PRESENT_BIT) { //with B sta associated + return 1; + } else + return 0; + } else // B AP exist, enable protection mode + return 1; } void zd1205_HandleQosRequest(struct zd1205_private *macp) { - zd1205_SwTcb_t *sw_tcb; - if (!macp->activeTxQ->count) - sw_tcb = macp->freeTxQ->first; - else - sw_tcb = macp->activeTxQ->first; - zd1205_start_download(sw_tcb->TcbPhys | BIT_0); + zd1205_SwTcb_t *sw_tcb; + + if (!macp->activeTxQ->count) + sw_tcb = macp->freeTxQ->first; + else + sw_tcb = macp->activeTxQ->first; + zd1205_start_download(sw_tcb->TcbPhys | BIT_0); +} + +/** + * zd1205_notify_join_event - Notify wireless join event to the upper layer + * @macp: atapter's private data struct + * @newassoc: new associate or not + * + */ + +void zd1205_notify_join_event(struct zd1205_private *macp) +{ + union iwreq_data wreq; + + memset(&wreq, 0, sizeof(wreq)); + memcpy(wreq.addr.sa_data, &macp->BSSID[0], 6); + wreq.addr.sa_family = ARPHRD_ETHER; + + { + ZD1211DEBUG(0, "Notify_join_event:" MACSTR "\n",MAC2STR(macp->BSSID)); + /* int ii; + + WPADEBUG("zd1205_notfiy_join_event: MAC= "); + for(ii = 0; ii < 6; ii++) + WPADEBUG("%02x ", macp->BSSID[ii] & 0xff); + WPADEBUG("\n");*/ + } + + if(macp->cardSetting.BssType == INFRASTRUCTURE_BSS) + { + wireless_send_event(macp->device, SIOCGIWAP, &wreq, NULL); + } +#if WIRELESS_EXT >= 15 + else if(macp->cardSetting.BssType == AP_BSS) + { + wireless_send_event(macp->device, IWEVREGISTERED, &wreq, NULL); + } +#endif +} +void zd1205_notify_disjoin_event(struct zd1205_private *macp) +{ + union iwreq_data wreq; + + memset(&wreq, 0, sizeof(wreq)); + //memcpy(wreq.addr.sa_data, &macp->BSSID[0], 6); + wreq.addr.sa_family = ARPHRD_ETHER; + printk(KERN_DEBUG "zd1205_notify_disjoin_event\n"); + /*{ + int ii; + + WPADEBUG("zd1205_notfiy_join_event: MAC= "); + for(ii = 0; ii < 6; ii++) + WPADEBUG("%02x ", macp->BSSID[ii] & 0xff); + WPADEBUG("\n"); + }*/ + + if(macp->cardSetting.BssType == INFRASTRUCTURE_BSS) + { + //wireless_send_event(macp->device, SIOCGIWSCAN, &wreq, NULL); + wireless_send_event(macp->device, SIOCGIWAP, &wreq, NULL); + } + /*#if WIRELESS_EXT >= 15 + else if(macp->cardSetting.BssType == AP_BSS) { + wireless_send_event(macp->device, IWEVREGISTERED, &wreq, NULL); + } + #endif*/ +} +void zd1205_notify_scan_done(struct zd1205_private *macp) +{ + union iwreq_data wreq; + wreq.data.length = 0; + wreq.data.flags = 0; + wireless_send_event(macp->device, SIOCGIWSCAN, &wreq, NULL); +} +#if WIRELESS_EXT >= 18 +void hostap_michael_mic_failure(struct zd1205_private *macp, + struct hostap_ieee80211_hdr *hdr, + int keyidx) +{ + union iwreq_data wrqu; + struct iw_michaelmicfailure ev; + + /* TODO: needed parameters: count, keyid, key type, TSC */ + memset(&ev, 0, sizeof(ev)); + ev.flags = keyidx & IW_MICFAILURE_KEY_ID; + if (hdr->addr1[0] & 0x01) + ev.flags |= IW_MICFAILURE_GROUP; + else + ev.flags |= IW_MICFAILURE_PAIRWISE; + ev.src_addr.sa_family = ARPHRD_ETHER; + memcpy(ev.src_addr.sa_data, hdr->addr2, ETH_ALEN); + memset(&wrqu, 0, sizeof(wrqu)); + wrqu.data.length = sizeof(ev); + wireless_send_event(g_dev, IWEVMICHAELMICFAILURE, &wrqu, (char *) &ev); +} +#elif WIRELESS_EXT >= 15 +// For kernel 2.6.5(FC2), WIRELESS_EXT is 16 +void hostap_michael_mic_failure(struct zd1205_private *macp, + struct hostap_ieee80211_hdr *hdr, + int keyidx) +{ + union iwreq_data wrqu; + char buf[128]; + + /* TODO: needed parameters: count, keyid, key type, TSC */ + sprintf(buf, "MLME-MICHAELMICFAILURE.indication(keyid=%d %scast addr=" + MACSTR ")", keyidx, hdr->addr1[0] & 0x01 ? "broad" : "uni", + MAC2STR(hdr->addr2)); + memset(&wrqu, 0, sizeof(wrqu)); + wrqu.data.length = strlen(buf); + printk("MLME-MICHAELMICFAILURE.indication(keyid=%d %scast addr=" + MACSTR ")", keyidx, hdr->addr1[0] & 0x01 ? "broad" : "uni", + MAC2STR(hdr->addr2)); + wireless_send_event(g_dev, IWEVCUSTOM, &wrqu, buf); +} +#else /* WIRELESS_EXT >= 15 */ +void hostap_michael_mic_failure(struct zd1205_private *macp, + struct hostap_ieee80211_hdr *hdr, + int keyidx) +{} +#endif /* WIRELESS_EXT >= 15 */ +void ChangeMacMode(u8 MAC_Mode, u8 Channel) +{ + struct zd1205_private *macp; + + if(NULL != g_dev && NULL != g_dev->priv) + macp = (struct zd1205_private *)g_dev->priv; + else { + LongPrint("NULL macp in ChnageMacMode\n",1); + return; + } + + + zd1205_lock(macp); + macp->cardSetting.Channel = Channel; //Default Channel to 8 + dot11Obj.Channel = Channel; + macp->cardSetting.MacMode = MAC_Mode ; + macp->bDefaultIbssMacMode=1; + zd1205_unlock(macp); + + //set_mac_mode command has been issued by the user. + zd1205_SetRatesInfo(macp); + //zd_UpdateCardSetting(&(macp->cardSetting)); +} +#if ZDCONF_WE_STAT_SUPPORT == 1 +struct iw_statistics * + zd1205_iw_getstats(struct net_device *dev) +{ + struct zd1205_private *macp = (struct zd1205_private *)dev->priv; + + macp->iwstats.discard.fragment = macp->ArAgedCnt + + macp->ArFreeFailCnt; + + macp->iwstats.discard.retries = macp->retryFailCnt; + macp->iwstats.discard.misc = macp->invalid_frame_good_crc + + macp->rxDupCnt; + + return &macp->iwstats; + } +#elif !defined(ZDCONF_WE_STAT_SUPPORT) + #error "Undefine ZDCONF_WE_STAT_SUPPORT" +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zydas_common.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zydas_common.h @@ -0,0 +1,71 @@ +#ifndef ZYDAS_COMMON_H +#define ZYDAS_COMMON_H + +#define ZD_IOCTL_WPA (SIOCDEVPRIVATE + 1) +#define ZD_IOCTL_PARAM (SIOCDEVPRIVATE + 2) + +#define ZD_PARAM_ROAMING 0x0001 +#define ZD_PARAM_PRIVACY 0x0002 +#define ZD_PARAM_WPA 0x0003 +#define ZD_PARAM_COUNTERMEASURES 0x0004 +#define ZD_PARAM_DROPUNENCRYPTED 0x0005 +#define ZD_PARAM_AUTH_ALGS 0x0006 + +#define ZD_CMD_SET_ENCRYPT_KEY 0x0001 +#define ZD_CMD_SET_MLME 0x0002 +#define ZD_CMD_SCAN_REQ 0x0003 +#define ZD_CMD_SET_GENERIC_ELEMENT 0x0004 + +#define ZD_FLAG_SET_TX_KEY 0x0001 + +#define ZD_GENERIC_ELEMENT_HDR_LEN \ +((int) (&((struct zydas_wlan_param *) 0)->u.generic_elem.data)) + +#define ZD_CRYPT_ALG_NAME_LEN 16 +#define ZD_MAX_KEY_SIZE 32 +#define ZD_MAX_GENERIC_SIZE 64 + +/* structure definition */ + +struct zydas_wlan_param +{ + u32 cmd; + u8 sta_addr[ETH_ALEN]; + union { + struct { + u8 alg[ZD_CRYPT_ALG_NAME_LEN]; + u32 flags; + u32 err; + u8 idx; + u8 seq[8]; /* sequence counter (set: RX, get: TX) */ + u16 key_len; + u8 key[ZD_MAX_KEY_SIZE]; + } + crypt; + struct { + u32 flags_and; + u32 flags_or; + } + set_flags_sta; + struct { + u8 len; + u8 data[ZD_MAX_GENERIC_SIZE]; + } + generic_elem; + struct { +#define MLME_STA_DEAUTH 0 +#define MLME_STA_DISASSOC 1 + u16 cmd; + u16 reason_code; + } + mlme; + struct { + u8 ssid_len; + u8 ssid[32]; + } + scan_req; + } u; +}; + +#endif + --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/WS11UPh.h +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/WS11UPh.h @@ -1,162 +1,328 @@ +#ifdef ZD1211 ={ -0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0x1E, 0xEE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, -0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0x93, 0xEE, 0x41, 0xEE, 0x98, 0x9A, 0xC9, 0xF7, 0x02, 0x00, 0x1F, 0xEC, -0x00, 0x00, 0xB2, 0xF8, 0x4D, 0x00, 0x80, 0xEC, 0x00, 0x00, 0xA3, 0xF7, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xD8, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, -0x40, 0xF0, 0x98, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x64, 0xEF, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xDA, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, -0xFF, 0xF6, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x56, 0xF5, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xD5, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, -0x94, 0xF7, 0xA0, 0x90, 0x98, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x42, 0x02, 0xC1, 0x92, 0x03, 0x96, 0x1B, 0xD7, 0x2A, 0x86, -0x1A, 0xD5, 0x2B, 0x86, 0x09, 0xA3, 0x00, 0x80, 0x19, 0xD3, 0x2C, 0x86, 0x00, 0xEE, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x01, 0xD4, 0x42, 0x02, 0xC1, 0x96, 0x0A, 0x65, 0xC0, 0x7A, -0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC4, 0xD2, 0xC5, 0x98, 0x1C, 0xD9, 0x2A, 0x86, 0x01, 0x98, 0x1C, 0xD9, 0x2B, 0x86, 0x1B, 0xD7, 0x2C, 0x86, 0x00, 0xEE, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, -0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xE5, 0xEE, 0x11, 0x93, 0xCD, 0xF7, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xEE, 0x40, 0xF1, -0x40, 0x92, 0x19, 0xD3, 0xCD, 0xF7, 0xC5, 0x92, 0x41, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x40, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x0F, 0x9F, 0x95, 0xF8, 0x0F, 0x9F, 0x99, 0xEE, 0x42, 0x42, 0x02, 0x5E, -0x0F, 0x9F, 0x99, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0xCD, 0xF7, 0x09, 0x93, 0xBC, 0xF7, 0x19, 0xD3, 0x6C, 0xEC, 0x40, 0xF0, 0x87, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0F, 0x9F, -0x99, 0xEE, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, -0x09, 0x93, 0xBC, 0xF7, 0x19, 0xD3, 0x6C, 0xEC, 0x40, 0xF0, 0x87, 0xF2, 0x40, 0xF0, 0xF3, 0xF3, 0x11, 0x93, 0x04, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xE3, 0xEE, 0x40, 0x92, 0x19, 0xD3, -0x04, 0xEC, 0x40, 0xF0, 0x60, 0xF2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFD, 0x19, 0xD3, 0x44, 0x96, 0x40, 0xF0, 0x8D, 0xF7, -0x6E, 0x92, 0x19, 0xD3, 0x05, 0x84, 0x40, 0xF0, 0xC4, 0xEE, 0x4B, 0x62, 0x0A, 0x95, 0x2E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x2B, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x00, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, -0x2F, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x34, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x39, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x3E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x43, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x48, 0xEE, -0xD1, 0xD4, 0x0B, 0x97, 0x4D, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x4E, 0xEE, 0xC1, 0xD4, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x43, 0xF1, 0x09, 0x93, 0x01, 0x3F, -0x19, 0xD3, 0xC0, 0x85, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFC, 0x19, 0xD3, 0x44, 0x96, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x03, 0x96, -0x41, 0x02, 0x03, 0x99, 0xC4, 0x94, 0x42, 0x04, 0xC1, 0x04, 0xC2, 0x94, 0xC3, 0xD4, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0x13, 0x97, -0x6F, 0xEC, 0x1B, 0xD7, 0x02, 0x80, 0x11, 0x93, 0x73, 0xEC, 0x19, 0xD3, 0x7C, 0x96, 0x0B, 0x97, 0xA0, 0x00, 0x1B, 0xD7, 0x77, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, -0xFF, 0xBF, 0x11, 0xA3, 0x74, 0xEC, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, -0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x14, 0x99, 0x03, 0x80, 0x0C, 0xB3, 0x00, 0x10, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x7B, 0xF0, -0x11, 0x93, 0x7E, 0xEC, 0x41, 0x02, 0x19, 0xD3, 0x7E, 0xEC, 0x11, 0x93, 0xCB, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x84, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, -0x00, 0x04, 0xC2, 0xD2, 0x0F, 0x9F, 0x95, 0xF0, 0x11, 0x93, 0x6E, 0xEC, 0x02, 0xD2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD0, 0xEF, 0x41, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0x19, 0xD3, 0x7E, 0xEC, -0x12, 0x95, 0x02, 0x80, 0x1A, 0xD5, 0x6F, 0xEC, 0x13, 0x97, 0x7C, 0x96, 0x1B, 0xD7, 0x73, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x00, 0x40, 0x19, 0xD3, 0x74, 0xEC, -0x09, 0x63, 0x00, 0x40, 0xC2, 0xD2, 0x02, 0x94, 0x1A, 0xD5, 0x7C, 0x96, 0x0C, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB0, 0xEF, 0x0C, 0xB3, 0xFF, 0x07, 0x0F, 0x9F, 0xB4, 0xEF, -0x11, 0x93, 0x06, 0x80, 0x09, 0xB3, 0xFF, 0x07, 0x09, 0x03, 0x00, 0xA0, 0x19, 0xD3, 0x71, 0xEC, 0x40, 0x98, 0x0B, 0x97, 0x7B, 0xEC, 0x04, 0x95, 0x03, 0x05, 0x14, 0x03, 0x71, 0xEC, 0x46, 0x02, -0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x08, 0x42, 0x48, 0x02, 0x9E, 0x0F, 0x9F, 0xBB, 0xEF, 0x11, 0x93, 0x71, 0xEC, 0xC1, 0x92, 0xC5, 0xD2, 0x5F, 0xB2, 0x19, 0xD3, 0x7A, 0xEC, 0x0F, 0x9F, 0xD3, 0xEF, -0x13, 0x97, 0x72, 0xEC, 0xC5, 0xD6, 0x12, 0x95, 0x7A, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x70, 0xF0, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF1, 0xEF, 0x0A, 0xB3, -0x07, 0x00, 0x09, 0x05, 0x88, 0xEC, 0xC2, 0x94, 0x01, 0xD4, 0x09, 0x03, 0x80, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x7A, 0xEC, 0xC5, 0x98, 0x0C, 0xB9, 0x00, 0xFF, 0x01, 0xA9, 0xC5, 0xD8, 0x0F, 0x9F, -0xFD, 0xEF, 0x0A, 0x05, 0xFF, 0xFF, 0x0A, 0x03, 0x90, 0xEC, 0xC1, 0x92, 0x01, 0xD2, 0x1A, 0xD5, 0x7A, 0xEC, 0xC5, 0x92, 0x09, 0x03, 0xFF, 0xFF, 0xC5, 0xD2, 0x11, 0x93, 0x71, 0xEC, 0xC5, 0x94, -0xC1, 0xD4, 0x11, 0x93, 0x71, 0xEC, 0x09, 0x07, 0x0B, 0x00, 0x03, 0xD6, 0xC3, 0x98, 0x06, 0xD8, 0x7C, 0x95, 0x7A, 0x95, 0x4C, 0x02, 0xC1, 0x92, 0x59, 0x93, 0x59, 0x93, 0x01, 0xA5, 0x01, 0x98, -0x0C, 0xF5, 0x7B, 0x93, 0x09, 0x09, 0x01, 0x00, 0x06, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x04, 0xD2, 0x5C, 0x93, 0x59, 0x93, 0x04, 0x94, 0x01, 0xA5, 0x03, 0x96, 0xC3, 0xD4, 0x11, 0x93, 0x71, 0xEC, -0x4C, 0x02, 0x05, 0xD2, 0xC1, 0x92, 0x09, 0xB3, 0x00, 0xFF, 0x7C, 0x95, 0x7A, 0x95, 0x02, 0xA3, 0x05, 0x98, 0xC4, 0xD2, 0x12, 0x95, 0x71, 0xEC, 0x45, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, -0x00, 0x01, 0xC2, 0xD2, 0x12, 0x95, 0x7A, 0xEC, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x45, 0xF0, 0x12, 0x95, 0x71, 0xEC, 0x4A, 0x04, 0x02, 0x99, 0xC4, 0x92, 0x01, 0x98, -0x0C, 0xF3, 0x7B, 0x93, 0x41, 0x02, 0x0F, 0x9F, 0x66, 0xF0, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x67, 0xF0, 0x11, 0x93, 0x71, 0xEC, 0x42, 0x02, 0x0A, 0x05, 0xFF, 0xFF, 0xC1, 0xD4, 0x11, 0x93, -0x71, 0xEC, 0x4A, 0x02, 0x12, 0x95, 0x60, 0x96, 0xC1, 0xD4, 0x12, 0x95, 0x71, 0xEC, 0x4B, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x1F, 0xFF, 0xC2, 0xD2, 0x12, 0x95, 0x71, 0xEC, 0x4B, 0x04, -0x11, 0x93, 0x62, 0x96, 0x41, 0x93, 0x59, 0x93, 0x02, 0x99, 0xC4, 0xA2, 0xC2, 0xD2, 0xC5, 0x92, 0x19, 0xD3, 0x72, 0xEC, 0x0A, 0x95, 0x0C, 0x02, 0x1A, 0xD5, 0x02, 0x80, 0x0F, 0x9F, 0x95, 0xF0, -0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x04, 0xC2, 0xD2, 0x40, 0xF0, 0x39, 0xEF, 0x0F, 0x9F, 0x95, 0xF0, 0x11, 0x93, 0x6E, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, -0x8A, 0xF0, 0x40, 0xF0, 0x39, 0xEF, 0x11, 0x93, 0x6F, 0xEC, 0x44, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x95, 0xF0, 0x48, 0x98, 0x1C, 0xD9, 0x02, 0x80, 0x11, 0x93, 0x6C, 0xEC, 0x41, 0x22, -0x0A, 0x95, 0x95, 0xF0, 0x88, 0xD4, 0x88, 0xDC, 0x91, 0x9A, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x04, 0x82, 0x48, 0xB2, 0x40, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0xAC, 0xF0, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xFE, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0x97, 0xEC, 0x11, 0x93, 0x04, 0x82, 0x43, 0xB2, 0x12, 0x95, -0x03, 0x82, 0x02, 0xB3, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xD3, 0xF0, 0x0A, 0xB3, 0x00, 0xFF, 0x48, 0xA2, 0x19, 0xD3, 0x03, 0x82, 0x40, 0xF0, 0x00, 0xF4, 0x11, 0x93, 0x97, 0xEC, 0x41, 0x42, -0x02, 0x5E, 0x0F, 0x9F, 0xD3, 0xF0, 0x11, 0x93, 0x07, 0x82, 0x11, 0x43, 0x03, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xD3, 0xF0, 0x11, 0x93, 0x03, 0x82, 0x09, 0xA3, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, -0x40, 0x96, 0x1B, 0xD7, 0x97, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x20, 0xBC, 0xC8, 0xD2, -0x40, 0xF0, 0x70, 0xF1, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x44, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x07, 0x00, 0x07, 0x96, 0x41, 0x02, 0xC1, 0x92, 0x02, 0xD2, 0x0B, 0xB3, -0x00, 0xFF, 0x09, 0x43, 0x00, 0x9B, 0x02, 0x5E, 0x0F, 0x9F, 0xFF, 0xF0, 0x0B, 0x03, 0xC9, 0x5C, 0x02, 0x94, 0xD2, 0x96, 0xD1, 0xD6, 0xC2, 0x98, 0xC1, 0xD8, 0x0F, 0x9F, 0x6D, 0xF1, 0x09, 0x43, -0x00, 0x99, 0x02, 0x5E, 0x0F, 0x9F, 0x20, 0xF1, 0x0B, 0x03, 0x00, 0x67, 0x61, 0x97, 0x0B, 0x03, 0x17, 0xF8, 0x02, 0x94, 0xD2, 0x98, 0xC1, 0xD8, 0xC2, 0x94, 0xD9, 0xD4, 0x03, 0xD2, 0x40, 0x46, -0x02, 0x5E, 0x0F, 0x9F, 0x6D, 0xF1, 0x09, 0x03, 0xFF, 0xFF, 0x0B, 0x97, 0x7E, 0x00, 0xC8, 0xD6, 0xC8, 0xD2, 0x57, 0x98, 0xC8, 0xD8, 0x40, 0xF0, 0x53, 0xEE, 0x43, 0x00, 0x0F, 0x9F, 0x6D, 0xF1, -0x0B, 0xB3, 0x00, 0xF0, 0x09, 0x43, 0x00, 0x90, 0x02, 0x5E, 0x0F, 0x9F, 0x30, 0xF1, 0x0B, 0x03, 0x02, 0x00, 0xC5, 0xD2, 0x02, 0x94, 0x0A, 0x03, 0x01, 0x00, 0xC1, 0x92, 0xC5, 0x98, 0xC4, 0xD2, -0x02, 0x92, 0xC1, 0x94, 0x03, 0x93, 0xC1, 0xD4, 0x0B, 0x47, 0x00, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0x6D, 0xF1, 0x02, 0x96, 0xC3, 0x92, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6D, 0xF1, -0x11, 0x93, 0x98, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x6D, 0xF1, 0x41, 0x98, 0x1C, 0xD9, 0x98, 0xEC, 0x12, 0x95, 0x02, 0x80, 0x01, 0xD4, 0x40, 0xF0, 0x7E, 0xF2, 0x0B, 0x67, 0xFD, 0x7D, -0x03, 0x99, 0xC4, 0x92, 0x0C, 0x99, 0x20, 0x03, 0x1C, 0xD9, 0x06, 0x82, 0x41, 0x98, 0x1C, 0xD9, 0x02, 0x82, 0x42, 0x98, 0x1C, 0xD9, 0x05, 0x82, 0x0C, 0x69, 0x80, 0x7F, 0x1C, 0xD9, 0x00, 0xB0, -0x09, 0xA3, 0x00, 0x01, 0xC3, 0xD2, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6B, 0xF1, 0x42, 0xA4, 0x1A, 0xD5, 0x02, 0x80, 0x44, 0x00, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, 0x60, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x7D, 0xF1, 0x40, 0xF0, 0x3D, 0xF7, 0xC5, 0x94, 0x0A, 0xB3, 0x10, 0x00, -0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x86, 0xF1, 0x40, 0xF0, 0x81, 0xF5, 0xC5, 0x96, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x8F, 0xF1, 0x40, 0xF0, 0xBC, 0xF4, 0xC5, 0x94, -0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF0, 0xF1, 0x13, 0x97, 0x21, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA1, 0xF1, 0x40, 0xF0, -0x62, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAA, 0xF1, 0x40, 0xF0, 0x6C, 0xFB, 0x01, 0x96, 0x0B, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, -0xCA, 0xF1, 0x40, 0xF0, 0xB0, 0xFA, 0x41, 0x92, 0x19, 0xD3, 0xCA, 0xF7, 0x11, 0x93, 0x03, 0xEC, 0x09, 0x43, 0x40, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0xC0, 0xF1, 0x40, 0x94, 0x1A, 0xD5, 0xCA, 0xF7, -0x11, 0x93, 0x00, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xD3, 0xF1, 0x40, 0xF0, 0x60, 0xF2, 0x0F, 0x9F, 0xD3, 0xF1, 0x01, 0x96, 0x0B, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, -0xD3, 0xF1, 0x40, 0xF0, 0x7C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xDC, 0xF1, 0x40, 0xF0, 0x87, 0xFB, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, -0x0F, 0x9F, 0xE7, 0xF1, 0x44, 0x96, 0x1B, 0xD7, 0x0B, 0xBC, 0x0F, 0x9F, 0xED, 0xF1, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xED, 0xF1, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, -0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x3A, 0xF2, 0x13, 0x97, 0x28, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x02, 0xF2, -0x40, 0xF0, 0x20, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x15, 0xF2, 0x40, 0xF0, 0xC4, 0xEE, 0x40, 0xF0, 0x8F, 0xFB, 0x40, 0xF0, 0x43, 0xF2, 0x40, 0x96, -0x1B, 0xD7, 0x00, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0xCD, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x31, 0xF2, 0x40, 0xF0, 0x9E, 0xFB, 0x09, 0x63, 0x00, 0x44, -0x01, 0x97, 0xC3, 0x94, 0x48, 0xA4, 0xC1, 0xD4, 0x00, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, 0x41, 0x92, 0x19, 0xD3, -0xCD, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x3A, 0xF2, 0x40, 0xF0, 0xAE, 0xFB, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, -0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, -0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, -0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x02, 0x80, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x09, 0x19, 0xD3, 0x02, 0x80, 0x40, 0xF0, 0x7E, 0xF2, -0x40, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0xC8, 0xD2, 0x09, 0x93, 0x6C, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, -0x9A, 0xF4, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAD, 0xF2, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0xBA, 0xF2, 0x40, 0xF0, 0xBC, 0xF2, 0x40, 0x42, -0x02, 0x5E, 0x0F, 0x9F, 0xBA, 0xF2, 0xC8, 0xD2, 0x09, 0x93, 0x6C, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, -0xF1, 0xBD, 0x19, 0xD3, 0x95, 0xEC, 0x11, 0x93, 0x93, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD4, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0x07, 0x07, 0x00, 0xC1, 0xD6, -0x0A, 0x05, 0x00, 0xA0, 0x1A, 0xD5, 0x70, 0xEC, 0x11, 0x93, 0x95, 0xEC, 0x19, 0xD3, 0x01, 0x80, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x88, 0x98, -0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x13, 0x97, 0x93, 0xEC, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x54, 0xF3, 0x12, 0x95, 0x70, 0xEC, 0x0A, 0x03, 0x07, 0x00, 0xC1, 0x92, -0xC2, 0xD2, 0x11, 0x93, 0x70, 0xEC, 0x09, 0x05, 0x01, 0x00, 0x48, 0x02, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x70, 0xEC, 0x4E, 0x02, 0xC1, 0x94, 0xC5, 0xD6, 0xC5, 0x92, 0x11, 0x07, 0x70, 0xEC, -0x0B, 0x03, 0x0F, 0x00, 0xC1, 0x98, 0x46, 0x06, 0x7A, 0x93, 0x79, 0x93, 0x5C, 0x95, 0x5A, 0x95, 0x02, 0xA3, 0xC3, 0xD2, 0x04, 0x95, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x42, 0x46, 0x02, 0x9E, -0x0F, 0x9F, 0xFD, 0xF2, 0x11, 0x93, 0x70, 0xEC, 0x09, 0x05, 0x05, 0x00, 0x41, 0x02, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x70, 0xEC, 0xC1, 0x92, 0x09, 0xB5, 0x1F, 0x00, 0x43, 0x44, 0x02, 0x8E, -0x0F, 0x9F, 0x2A, 0xF3, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x2B, 0xF3, 0x0A, 0x05, 0xFF, 0xFF, 0x0F, 0x9F, 0x2B, 0xF3, 0x43, 0x94, 0x11, 0x93, 0x70, 0xEC, 0x42, 0x02, 0xC1, 0xD4, 0x11, 0x93, -0x70, 0xEC, 0x49, 0x02, 0xC1, 0x92, 0x19, 0xD3, 0x93, 0xEC, 0x09, 0x05, 0xF2, 0xFF, 0x1A, 0xD5, 0x6D, 0xEC, 0x09, 0x43, 0xD0, 0x07, 0x02, 0x9E, 0x0F, 0x9F, 0x54, 0xF3, 0x11, 0x93, 0xD1, 0xF7, -0x41, 0x02, 0x19, 0xD3, 0xD1, 0xF7, 0x11, 0x93, 0xD0, 0xF7, 0x09, 0xA3, 0x40, 0x00, 0x19, 0xD3, 0xD0, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0x94, 0xEC, 0x40, 0x96, -0x1B, 0xD7, 0x93, 0xEC, 0x0F, 0x9F, 0xBA, 0xF3, 0x11, 0x93, 0x6D, 0xEC, 0x12, 0x95, 0x95, 0xEC, 0x02, 0x43, 0x02, 0x8E, 0x0F, 0x9F, 0xA2, 0xF3, 0x02, 0x0E, 0x0F, 0x9F, 0x75, 0xF3, 0x11, 0x93, -0xD1, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xD1, 0xF7, 0x11, 0x93, 0xD0, 0xF7, 0x09, 0xA3, 0x80, 0x00, 0x19, 0xD3, 0xD0, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0x94, 0xEC, -0x40, 0x96, 0x1B, 0xD7, 0x93, 0xEC, 0x0F, 0x9F, 0xBA, 0xF3, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x87, 0xF3, 0x11, 0x93, 0x98, 0xEC, 0x40, 0x42, -0x02, 0x5E, 0x0F, 0x9F, 0x87, 0xF3, 0x40, 0xF0, 0xCE, 0xF3, 0x0F, 0x9F, 0xBC, 0xF3, 0x41, 0x92, 0xC8, 0xD2, 0x0A, 0x95, 0x6C, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x11, 0x93, -0x98, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x9A, 0xF3, 0x42, 0x96, 0x1B, 0xD7, 0x98, 0xEC, 0x0F, 0x9F, 0xBC, 0xF3, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, -0x0F, 0x9F, 0xBC, 0xF3, 0x12, 0x45, 0x03, 0xEC, 0x02, 0x4E, 0x0F, 0x9F, 0xB4, 0xF3, 0x11, 0x93, 0xD1, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xD1, 0xF7, 0x11, 0x93, 0xD0, 0xF7, 0x09, 0xA3, 0x00, 0x08, -0x19, 0xD3, 0xD0, 0xF7, 0x1A, 0xD5, 0x6D, 0xEC, 0x11, 0x93, 0x6D, 0xEC, 0x19, 0x25, 0x6D, 0xEC, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, -0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xCE, 0xF3, 0x40, 0x92, 0xC8, 0xD2, 0x09, 0x93, 0x6C, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, -0x01, 0x00, 0x11, 0x93, 0xCC, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xDE, 0xF3, 0x0A, 0x65, 0xBC, 0x69, 0x02, 0x97, 0xC3, 0x92, 0x09, 0x83, 0x00, 0x02, 0xC2, 0xD2, 0x11, 0x93, 0x94, 0xEC, -0x19, 0xD3, 0x04, 0x80, 0x12, 0x95, 0x93, 0xEC, 0x1A, 0xD5, 0x05, 0x80, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0x94, 0xEC, 0x40, 0x94, 0x1A, 0xD5, 0x93, 0xEC, 0x19, 0xD3, -0xF2, 0xBD, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x20, 0x03, 0x19, 0xD3, 0x06, 0x82, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0xC5, 0xD2, 0x12, 0x95, 0x04, 0x82, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x76, 0xF4, 0x0A, 0xA3, 0x02, 0x00, -0x19, 0xD3, 0x04, 0x82, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x28, 0xF4, 0x41, 0x96, 0xC5, 0xD6, 0x0A, 0x65, 0xBD, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, -0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0x0F, 0x9F, 0x5C, 0xF4, 0x4F, 0x96, 0x12, 0x95, 0x01, 0x82, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, -0x32, 0xF4, 0x47, 0x96, 0x11, 0x93, 0x96, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x57, 0xF4, 0x44, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0x57, 0xF4, 0x12, 0x95, 0x00, 0x82, 0x0A, 0x05, 0xFF, 0xAF, -0x01, 0xD4, 0xC8, 0xD6, 0x41, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0x78, 0xF7, 0x42, 0x00, 0x01, 0x96, 0xC3, 0x94, 0x01, 0xB5, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x57, 0xF4, 0x02, 0x92, 0x50, 0x92, -0x19, 0xD3, 0xA2, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0xA2, 0xBC, 0x0F, 0x9F, 0x5D, 0xF4, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0x96, 0xEC, -0x11, 0x93, 0x97, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x71, 0xF4, 0x13, 0x97, 0x00, 0x82, 0x1B, 0xD7, 0x02, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, -0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x97, 0xEC, 0x0F, 0x9F, 0x79, 0xF4, 0xC5, 0x96, 0x1B, 0xD7, 0x96, 0xEC, 0xC5, 0x92, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x85, 0xF4, 0x0A, 0x65, 0xEA, 0x43, -0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0x42, 0x02, -0xC1, 0x96, 0xC2, 0x92, 0x03, 0x22, 0x40, 0x42, 0x02, 0xAE, 0x0F, 0x9F, 0x98, 0xF4, 0x03, 0x03, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x03, 0x80, 0x0A, 0xB3, -0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB6, 0xF4, 0x0A, 0xB7, 0x00, 0x08, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0xB9, 0xF4, 0x11, 0x93, 0x03, 0xEC, 0x41, 0x02, 0x09, 0xB3, 0xFE, 0xFF, -0x12, 0x95, 0x07, 0x80, 0x01, 0x45, 0x02, 0x8E, 0x0F, 0x9F, 0xB9, 0xF4, 0x41, 0x92, 0x0F, 0x9F, 0xBA, 0xF4, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, -0x42, 0x92, 0xC5, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x11, 0x93, 0x77, 0xEC, 0x09, 0x43, 0xA0, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0xE4, 0xF4, -0x09, 0x63, 0x08, 0x43, 0x0B, 0x67, 0xFF, 0x5F, 0x01, 0x95, 0xC2, 0xD6, 0x0A, 0x95, 0x7A, 0xEC, 0xD2, 0x96, 0x1B, 0xD7, 0xFA, 0xBC, 0xD2, 0x96, 0xC1, 0xD6, 0xD2, 0x92, 0x19, 0xD3, 0xFA, 0xBC, -0x1A, 0xD5, 0x77, 0xEC, 0x0F, 0x9F, 0x03, 0xF5, 0x0B, 0x67, 0xFF, 0x6F, 0x1B, 0xD7, 0xF8, 0xBC, 0x19, 0xD3, 0xFA, 0xBC, 0x09, 0xB5, 0x00, 0xFF, 0x0A, 0x45, 0x00, 0x9B, 0x02, 0x5E, 0x0F, 0x9F, -0xF7, 0xF4, 0x09, 0x03, 0xC9, 0x5C, 0x19, 0xD3, 0x77, 0xEC, 0x0F, 0x9F, 0x16, 0xF5, 0x0A, 0x45, 0x00, 0x99, 0x02, 0x5E, 0x0F, 0x9F, 0x07, 0xF5, 0x09, 0x03, 0x00, 0x67, 0x61, 0x93, 0x09, 0x03, -0x17, 0xF8, 0x19, 0xD3, 0x77, 0xEC, 0x41, 0x94, 0xC5, 0xD4, 0x0F, 0x9F, 0x18, 0xF5, 0x09, 0x43, 0x10, 0x95, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xF5, 0x11, 0x93, 0x98, 0xEC, 0x40, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0x18, 0xF5, 0x0B, 0x97, 0x78, 0xEC, 0x1B, 0xD7, 0x77, 0xEC, 0x41, 0x92, 0xC5, 0xD2, 0x12, 0x95, 0x77, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x99, 0xF7, 0x19, 0xD3, 0xF8, 0xBC, 0x11, 0x93, -0x77, 0xEC, 0xC5, 0x96, 0x03, 0x03, 0xC1, 0x92, 0x19, 0xD3, 0xFA, 0xBC, 0x0A, 0x65, 0x52, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, -0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x41, 0x00, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x06, 0x92, 0x01, 0xD2, 0x0A, 0x65, 0xF0, 0x6A, 0x0B, 0x97, -0x78, 0xEC, 0x02, 0x99, 0xC4, 0x98, 0xD3, 0xD8, 0x02, 0xD6, 0x0A, 0x03, 0x02, 0x00, 0x01, 0x97, 0xC3, 0x98, 0x02, 0x96, 0xC3, 0xD8, 0x01, 0x96, 0xC1, 0xD6, 0x1A, 0xD5, 0x77, 0xEC, 0xC5, 0x98, -0x14, 0x99, 0x78, 0xEC, 0xC2, 0xD8, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0x37, 0xF5, 0x41, 0x00, 0x11, 0x93, 0x98, 0xEC, -0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x71, 0xF5, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x6E, 0xF5, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, -0x98, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, -0x90, 0x9A, 0x88, 0xDA, 0x64, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xAF, 0xBC, 0x47, 0xB2, 0x59, 0x93, 0x59, 0x93, 0x11, 0xA3, 0xBF, 0xBC, 0x21, 0xD2, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, -0x0F, 0x9F, 0x95, 0xF5, 0x21, 0x92, 0x41, 0x02, 0x21, 0xD2, 0x05, 0x95, 0x40, 0x96, 0x20, 0xD6, 0x21, 0x96, 0x63, 0x93, 0x0F, 0x9F, 0xA5, 0xF5, 0x13, 0x97, 0xFC, 0xBC, 0xD2, 0xD6, 0x13, 0x97, -0xFE, 0xBC, 0xD2, 0xD6, 0x20, 0x96, 0x42, 0x06, 0x20, 0xD6, 0x20, 0x96, 0x01, 0x47, 0x02, 0x1E, 0x0F, 0x9F, 0x9C, 0xF5, 0xC5, 0x92, 0x63, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x7E, 0xF6, 0x02, 0x8E, -0x0F, 0x9F, 0xBC, 0xF5, 0x61, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x53, 0xF6, 0x62, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xD1, 0xF5, 0x0F, 0x9F, 0x88, 0xF6, 0x09, 0x43, 0x28, 0x01, 0x02, 0x4E, 0x0F, 0x9F, -0xE1, 0xF5, 0x02, 0x8E, 0x0F, 0x9F, 0xCA, 0xF5, 0x68, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE8, 0xF5, 0x0F, 0x9F, 0x88, 0xF6, 0x09, 0x43, 0x28, 0x02, 0x02, 0x4E, 0x0F, 0x9F, 0x1B, 0xF6, 0x0F, 0x9F, -0x88, 0xF6, 0x01, 0x92, 0x19, 0xD3, 0x77, 0xEC, 0x09, 0x43, 0x10, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0x43, 0xF6, 0x11, 0x93, 0x12, 0x95, 0xC8, 0xD2, 0x40, 0xF0, 0x37, 0xF5, 0x41, 0x00, 0x0F, 0x9F, -0x43, 0xF6, 0x09, 0x63, 0x00, 0x08, 0x19, 0xD3, 0x76, 0xEC, 0x40, 0x94, 0x1A, 0xD5, 0x75, 0xEC, 0x40, 0x96, 0x20, 0xD6, 0x11, 0x93, 0x76, 0xEC, 0x09, 0x43, 0xF4, 0xFF, 0x02, 0x8E, 0x0F, 0x9F, -0x88, 0xF6, 0x0D, 0x07, 0x02, 0x00, 0x0D, 0x09, 0x01, 0x00, 0x04, 0x93, 0xC1, 0x94, 0x42, 0x08, 0x0A, 0xB5, 0xFF, 0x00, 0x03, 0x93, 0xC1, 0x92, 0x42, 0x06, 0x59, 0x93, 0x59, 0x93, 0x23, 0xD2, -0x01, 0xA5, 0x11, 0x93, 0x76, 0xEC, 0xC1, 0xD4, 0x12, 0x95, 0x76, 0xEC, 0x11, 0x93, 0x75, 0xEC, 0xD2, 0x82, 0x19, 0xD3, 0x75, 0xEC, 0x1A, 0xD5, 0x76, 0xEC, 0x20, 0x92, 0x42, 0x02, 0x20, 0xD2, -0x47, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x88, 0xF6, 0x0A, 0x45, 0xF4, 0xFF, 0x02, 0x9E, 0x0F, 0x9F, 0xF5, 0xF5, 0x0F, 0x9F, 0x88, 0xF6, 0x11, 0x93, 0x75, 0xEC, 0x09, 0xB5, 0xFF, 0x00, 0x79, 0x93, -0x79, 0x93, 0x01, 0x85, 0x1A, 0xD5, 0x75, 0xEC, 0x01, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0x40, 0xF6, 0x6F, 0x94, 0x1A, 0xD5, 0x05, 0x84, 0x40, 0xF1, 0x0B, 0x97, 0xF7, 0x07, 0xC8, 0xD6, 0x09, 0x63, -0x00, 0x08, 0xC8, 0xD2, 0x40, 0x94, 0xC8, 0xD4, 0x40, 0xF0, 0x53, 0xEE, 0x43, 0xF1, 0x6D, 0x96, 0x1B, 0xD7, 0x05, 0x84, 0x41, 0x92, 0x19, 0xD3, 0x77, 0xEC, 0x43, 0x00, 0x0F, 0x9F, 0x43, 0xF6, -0x40, 0x94, 0x1A, 0xD5, 0x77, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, -0xC2, 0xD2, 0x0F, 0x9F, 0x88, 0xF6, 0x0D, 0x03, 0x04, 0x00, 0xC8, 0xD2, 0x01, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0xE5, 0xF0, 0x21, 0x94, 0x0A, 0x03, 0xF4, 0xFF, 0x61, 0x93, 0x21, 0xD2, 0x40, 0x96, -0x20, 0xD6, 0x42, 0x00, 0x01, 0x47, 0x02, 0x0E, 0x0F, 0x9F, 0x88, 0xF6, 0x0D, 0x05, 0x06, 0x00, 0x20, 0x92, 0x05, 0x03, 0x47, 0x02, 0xC8, 0xD2, 0x02, 0x97, 0xC3, 0x92, 0x43, 0x04, 0xC8, 0xD2, -0x22, 0xD4, 0x40, 0xF0, 0xE5, 0xF0, 0x42, 0x00, 0x20, 0x92, 0x43, 0x02, 0x20, 0xD2, 0x22, 0x94, 0x21, 0x42, 0x02, 0x1E, 0x0F, 0x9F, 0x68, 0xF6, 0x0F, 0x9F, 0x88, 0xF6, 0x02, 0x94, 0xC8, 0xD4, -0x01, 0x96, 0xC8, 0xD6, 0x04, 0x92, 0x05, 0x94, 0x90, 0xD4, 0x40, 0xF0, 0x8B, 0xF6, 0x44, 0x00, 0x64, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, -0x0A, 0x00, 0x0A, 0x96, 0x0B, 0x98, 0x09, 0x05, 0x02, 0x00, 0xC2, 0x94, 0xC5, 0xD4, 0x43, 0x02, 0xC1, 0x92, 0x01, 0xD2, 0x02, 0xD2, 0x5F, 0x92, 0x01, 0x94, 0x02, 0x23, 0xC8, 0xD2, 0x90, 0xD8, -0x40, 0xF0, 0x52, 0xF7, 0x43, 0x00, 0x01, 0x97, 0x02, 0x99, 0x11, 0x93, 0x80, 0x96, 0x09, 0xB5, 0x7F, 0xFF, 0x1A, 0xD5, 0x80, 0x96, 0xC5, 0x94, 0x0A, 0x83, 0xFF, 0xFF, 0x11, 0xB3, 0x2C, 0x93, -0x09, 0xB3, 0xFB, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x01, 0x92, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE5, 0xF6, 0x41, 0x94, 0xC8, 0xD4, 0x90, 0xD8, 0x40, 0xF0, 0x52, 0xF7, 0x43, 0x00, 0x01, 0x97, -0x02, 0x99, 0x40, 0x48, 0x05, 0x3E, 0x02, 0x4E, 0x40, 0x46, 0x02, 0x0E, 0x0F, 0x9F, 0xCD, 0xF6, 0x11, 0x93, 0x2C, 0x93, 0x48, 0xA2, 0x0F, 0x9F, 0xD1, 0xF6, 0x11, 0x93, 0x2C, 0x93, 0x09, 0xB3, -0xF7, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x03, 0x92, 0x11, 0x93, 0x2C, 0x93, 0x44, 0xA2, 0x19, 0xD3, 0x2C, 0x93, 0x09, 0xB3, 0xFB, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x02, 0x94, 0x0A, 0x05, 0xFF, 0xFF, -0x02, 0xD4, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xB9, 0xF6, 0x09, 0x63, 0xD4, 0x6C, 0x01, 0x95, 0xC2, 0x96, 0xC5, 0x94, 0x02, 0xA7, 0xC1, 0xD6, 0x01, 0x92, 0x54, 0x42, 0x02, 0x5E, 0x0F, 0x9F, -0xF5, 0xF6, 0x0A, 0x83, 0xFF, 0xFF, 0x1B, 0xB3, 0x2C, 0x93, 0x0A, 0x65, 0x80, 0x69, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, -0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x40, 0xF0, 0x9A, 0xF4, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x10, 0xF7, 0x40, 0xF0, 0xBC, 0xF2, 0x0F, 0x9F, 0x1E, 0xF7, -0x40, 0x96, 0xC8, 0xD6, 0x09, 0x93, 0x6C, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, -0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, -0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x2D, 0xBC, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, -0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x11, 0x93, 0x03, 0xEC, 0x19, 0xD3, 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x43, 0xA2, 0xC2, 0xD2, -0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x92, 0x04, 0x94, 0x05, 0x96, 0x40, 0xF0, 0x5C, 0xF7, 0x88, 0x98, 0x90, 0x9A, 0x03, 0x97, 0x19, 0x5E, 0x60, 0x46, 0x03, 0x0E, -0x40, 0x94, 0x40, 0x92, 0x90, 0x9A, 0x44, 0x46, 0x05, 0x0E, 0x59, 0x93, 0x9A, 0x95, 0x44, 0x26, 0x0E, 0x5E, 0x47, 0xEE, 0x0E, 0xBD, 0xBF, 0xFF, 0x09, 0xC3, 0x00, 0x80, 0x02, 0x5E, 0x0E, 0xAD, -0x40, 0x00, 0x41, 0x93, 0x42, 0x95, 0x01, 0x0E, 0x41, 0xA4, 0x41, 0x26, 0x4D, 0x4E, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x92, 0x04, 0x96, 0x0D, 0x5E, 0x50, 0x46, 0x02, 0x0E, -0x40, 0x92, 0x09, 0xEE, 0x44, 0x46, 0x04, 0x0E, 0x59, 0x93, 0x44, 0x26, 0x04, 0x5E, 0x46, 0xEE, 0x41, 0x93, 0x41, 0x26, 0x43, 0x4E, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, -0x40, 0xF0, 0xB1, 0xFE, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x94, 0x1A, 0xD5, 0xA0, 0xF7, 0x11, 0x93, -0x00, 0x90, 0x88, 0x98, 0x90, 0x9A, 0x1D, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x16, 0x00, 0x21, 0x00, 0x12, 0x00, 0x09, 0x00, 0x13, 0x00, -0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x21, 0x00, 0x2D, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xF2, 0xC2, 0xF7, 0x00, 0x00, -0x9C, 0xF2, 0xC2, 0xF7, 0x00, 0x00, 0xE1, 0xF2, 0xBF, 0xF7, 0xC6, 0xF7, 0x00, 0x00, 0xBF, 0xF3, 0xC2, 0xF7, 0x30, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; + 0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0x1E, 0xEE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, + 0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0x93, 0xEE, 0x41, 0xEE, 0x98, 0x9A, 0xC9, 0xF7, 0x02, 0x00, 0x1F, 0xEC, + 0x00, 0x00, 0xB2, 0xF8, 0x4D, 0x00, 0x80, 0xEC, 0x00, 0x00, 0xA3, 0xF7, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xD8, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, + 0x40, 0xF0, 0x98, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x64, 0xEF, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xDA, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, + 0xFF, 0xF6, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x56, 0xF5, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xD5, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, + 0x94, 0xF7, 0xA0, 0x90, 0x98, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x42, 0x02, 0xC1, 0x92, 0x03, 0x96, 0x1B, 0xD7, 0x2A, 0x86, + 0x1A, 0xD5, 0x2B, 0x86, 0x09, 0xA3, 0x00, 0x80, 0x19, 0xD3, 0x2C, 0x86, 0x00, 0xEE, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x01, 0xD4, 0x42, 0x02, 0xC1, 0x96, 0x0A, 0x65, 0xC0, 0x7A, + 0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC4, 0xD2, 0xC5, 0x98, 0x1C, 0xD9, 0x2A, 0x86, 0x01, 0x98, 0x1C, 0xD9, 0x2B, 0x86, 0x1B, 0xD7, 0x2C, 0x86, 0x00, 0xEE, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, + 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xE5, 0xEE, 0x11, 0x93, 0xCD, 0xF7, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xEE, 0x40, 0xF1, + 0x40, 0x92, 0x19, 0xD3, 0xCD, 0xF7, 0xC5, 0x92, 0x41, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x40, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x0F, 0x9F, 0x95, 0xF8, 0x0F, 0x9F, 0x99, 0xEE, 0x42, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0x99, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0xCD, 0xF7, 0x09, 0x93, 0xBC, 0xF7, 0x19, 0xD3, 0x6C, 0xEC, 0x40, 0xF0, 0x87, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0F, 0x9F, + 0x99, 0xEE, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, + 0x09, 0x93, 0xBC, 0xF7, 0x19, 0xD3, 0x6C, 0xEC, 0x40, 0xF0, 0x87, 0xF2, 0x40, 0xF0, 0xF3, 0xF3, 0x11, 0x93, 0x04, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xE3, 0xEE, 0x40, 0x92, 0x19, 0xD3, + 0x04, 0xEC, 0x40, 0xF0, 0x60, 0xF2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFD, 0x19, 0xD3, 0x44, 0x96, 0x40, 0xF0, 0x8D, 0xF7, + 0x6E, 0x92, 0x19, 0xD3, 0x05, 0x84, 0x40, 0xF0, 0xC4, 0xEE, 0x4B, 0x62, 0x0A, 0x95, 0x2E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x2B, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x00, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, + 0x2F, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x34, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x39, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x3E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x43, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x48, 0xEE, + 0xD1, 0xD4, 0x0B, 0x97, 0x4D, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x4E, 0xEE, 0xC1, 0xD4, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x43, 0xF1, 0x09, 0x93, 0x01, 0x3F, + 0x19, 0xD3, 0xC0, 0x85, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFC, 0x19, 0xD3, 0x44, 0x96, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x03, 0x96, + 0x41, 0x02, 0x03, 0x99, 0xC4, 0x94, 0x42, 0x04, 0xC1, 0x04, 0xC2, 0x94, 0xC3, 0xD4, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0x13, 0x97, + 0x6F, 0xEC, 0x1B, 0xD7, 0x02, 0x80, 0x11, 0x93, 0x73, 0xEC, 0x19, 0xD3, 0x7C, 0x96, 0x0B, 0x97, 0xA0, 0x00, 0x1B, 0xD7, 0x77, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, + 0xFF, 0xBF, 0x11, 0xA3, 0x74, 0xEC, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, + 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x14, 0x99, 0x03, 0x80, 0x0C, 0xB3, 0x00, 0x10, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x7B, 0xF0, + 0x11, 0x93, 0x7E, 0xEC, 0x41, 0x02, 0x19, 0xD3, 0x7E, 0xEC, 0x11, 0x93, 0xCB, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x84, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, + 0x00, 0x04, 0xC2, 0xD2, 0x0F, 0x9F, 0x95, 0xF0, 0x11, 0x93, 0x6E, 0xEC, 0x02, 0xD2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD0, 0xEF, 0x41, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0x19, 0xD3, 0x7E, 0xEC, + 0x12, 0x95, 0x02, 0x80, 0x1A, 0xD5, 0x6F, 0xEC, 0x13, 0x97, 0x7C, 0x96, 0x1B, 0xD7, 0x73, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x00, 0x40, 0x19, 0xD3, 0x74, 0xEC, + 0x09, 0x63, 0x00, 0x40, 0xC2, 0xD2, 0x02, 0x94, 0x1A, 0xD5, 0x7C, 0x96, 0x0C, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB0, 0xEF, 0x0C, 0xB3, 0xFF, 0x07, 0x0F, 0x9F, 0xB4, 0xEF, + 0x11, 0x93, 0x06, 0x80, 0x09, 0xB3, 0xFF, 0x07, 0x09, 0x03, 0x00, 0xA0, 0x19, 0xD3, 0x71, 0xEC, 0x40, 0x98, 0x0B, 0x97, 0x7B, 0xEC, 0x04, 0x95, 0x03, 0x05, 0x14, 0x03, 0x71, 0xEC, 0x46, 0x02, + 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x08, 0x42, 0x48, 0x02, 0x9E, 0x0F, 0x9F, 0xBB, 0xEF, 0x11, 0x93, 0x71, 0xEC, 0xC1, 0x92, 0xC5, 0xD2, 0x5F, 0xB2, 0x19, 0xD3, 0x7A, 0xEC, 0x0F, 0x9F, 0xD3, 0xEF, + 0x13, 0x97, 0x72, 0xEC, 0xC5, 0xD6, 0x12, 0x95, 0x7A, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x70, 0xF0, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF1, 0xEF, 0x0A, 0xB3, + 0x07, 0x00, 0x09, 0x05, 0x88, 0xEC, 0xC2, 0x94, 0x01, 0xD4, 0x09, 0x03, 0x80, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x7A, 0xEC, 0xC5, 0x98, 0x0C, 0xB9, 0x00, 0xFF, 0x01, 0xA9, 0xC5, 0xD8, 0x0F, 0x9F, + 0xFD, 0xEF, 0x0A, 0x05, 0xFF, 0xFF, 0x0A, 0x03, 0x90, 0xEC, 0xC1, 0x92, 0x01, 0xD2, 0x1A, 0xD5, 0x7A, 0xEC, 0xC5, 0x92, 0x09, 0x03, 0xFF, 0xFF, 0xC5, 0xD2, 0x11, 0x93, 0x71, 0xEC, 0xC5, 0x94, + 0xC1, 0xD4, 0x11, 0x93, 0x71, 0xEC, 0x09, 0x07, 0x0B, 0x00, 0x03, 0xD6, 0xC3, 0x98, 0x06, 0xD8, 0x7C, 0x95, 0x7A, 0x95, 0x4C, 0x02, 0xC1, 0x92, 0x59, 0x93, 0x59, 0x93, 0x01, 0xA5, 0x01, 0x98, + 0x0C, 0xF5, 0x7B, 0x93, 0x09, 0x09, 0x01, 0x00, 0x06, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x04, 0xD2, 0x5C, 0x93, 0x59, 0x93, 0x04, 0x94, 0x01, 0xA5, 0x03, 0x96, 0xC3, 0xD4, 0x11, 0x93, 0x71, 0xEC, + 0x4C, 0x02, 0x05, 0xD2, 0xC1, 0x92, 0x09, 0xB3, 0x00, 0xFF, 0x7C, 0x95, 0x7A, 0x95, 0x02, 0xA3, 0x05, 0x98, 0xC4, 0xD2, 0x12, 0x95, 0x71, 0xEC, 0x45, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, + 0x00, 0x01, 0xC2, 0xD2, 0x12, 0x95, 0x7A, 0xEC, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x45, 0xF0, 0x12, 0x95, 0x71, 0xEC, 0x4A, 0x04, 0x02, 0x99, 0xC4, 0x92, 0x01, 0x98, + 0x0C, 0xF3, 0x7B, 0x93, 0x41, 0x02, 0x0F, 0x9F, 0x66, 0xF0, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x67, 0xF0, 0x11, 0x93, 0x71, 0xEC, 0x42, 0x02, 0x0A, 0x05, 0xFF, 0xFF, 0xC1, 0xD4, 0x11, 0x93, + 0x71, 0xEC, 0x4A, 0x02, 0x12, 0x95, 0x60, 0x96, 0xC1, 0xD4, 0x12, 0x95, 0x71, 0xEC, 0x4B, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x1F, 0xFF, 0xC2, 0xD2, 0x12, 0x95, 0x71, 0xEC, 0x4B, 0x04, + 0x11, 0x93, 0x62, 0x96, 0x41, 0x93, 0x59, 0x93, 0x02, 0x99, 0xC4, 0xA2, 0xC2, 0xD2, 0xC5, 0x92, 0x19, 0xD3, 0x72, 0xEC, 0x0A, 0x95, 0x0C, 0x02, 0x1A, 0xD5, 0x02, 0x80, 0x0F, 0x9F, 0x95, 0xF0, + 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x04, 0xC2, 0xD2, 0x40, 0xF0, 0x39, 0xEF, 0x0F, 0x9F, 0x95, 0xF0, 0x11, 0x93, 0x6E, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, + 0x8A, 0xF0, 0x40, 0xF0, 0x39, 0xEF, 0x11, 0x93, 0x6F, 0xEC, 0x44, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x95, 0xF0, 0x48, 0x98, 0x1C, 0xD9, 0x02, 0x80, 0x11, 0x93, 0x6C, 0xEC, 0x41, 0x22, + 0x0A, 0x95, 0x95, 0xF0, 0x88, 0xD4, 0x88, 0xDC, 0x91, 0x9A, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x04, 0x82, 0x48, 0xB2, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0xAC, 0xF0, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xFE, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0x97, 0xEC, 0x11, 0x93, 0x04, 0x82, 0x43, 0xB2, 0x12, 0x95, + 0x03, 0x82, 0x02, 0xB3, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xD3, 0xF0, 0x0A, 0xB3, 0x00, 0xFF, 0x48, 0xA2, 0x19, 0xD3, 0x03, 0x82, 0x40, 0xF0, 0x00, 0xF4, 0x11, 0x93, 0x97, 0xEC, 0x41, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0xD3, 0xF0, 0x11, 0x93, 0x07, 0x82, 0x11, 0x43, 0x03, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xD3, 0xF0, 0x11, 0x93, 0x03, 0x82, 0x09, 0xA3, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, + 0x40, 0x96, 0x1B, 0xD7, 0x97, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x20, 0xBC, 0xC8, 0xD2, + 0x40, 0xF0, 0x70, 0xF1, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x44, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x07, 0x00, 0x07, 0x96, 0x41, 0x02, 0xC1, 0x92, 0x02, 0xD2, 0x0B, 0xB3, + 0x00, 0xFF, 0x09, 0x43, 0x00, 0x9B, 0x02, 0x5E, 0x0F, 0x9F, 0xFF, 0xF0, 0x0B, 0x03, 0xC9, 0x5C, 0x02, 0x94, 0xD2, 0x96, 0xD1, 0xD6, 0xC2, 0x98, 0xC1, 0xD8, 0x0F, 0x9F, 0x6D, 0xF1, 0x09, 0x43, + 0x00, 0x99, 0x02, 0x5E, 0x0F, 0x9F, 0x20, 0xF1, 0x0B, 0x03, 0x00, 0x67, 0x61, 0x97, 0x0B, 0x03, 0x17, 0xF8, 0x02, 0x94, 0xD2, 0x98, 0xC1, 0xD8, 0xC2, 0x94, 0xD9, 0xD4, 0x03, 0xD2, 0x40, 0x46, + 0x02, 0x5E, 0x0F, 0x9F, 0x6D, 0xF1, 0x09, 0x03, 0xFF, 0xFF, 0x0B, 0x97, 0x7E, 0x00, 0xC8, 0xD6, 0xC8, 0xD2, 0x57, 0x98, 0xC8, 0xD8, 0x40, 0xF0, 0x53, 0xEE, 0x43, 0x00, 0x0F, 0x9F, 0x6D, 0xF1, + 0x0B, 0xB3, 0x00, 0xF0, 0x09, 0x43, 0x00, 0x90, 0x02, 0x5E, 0x0F, 0x9F, 0x30, 0xF1, 0x0B, 0x03, 0x02, 0x00, 0xC5, 0xD2, 0x02, 0x94, 0x0A, 0x03, 0x01, 0x00, 0xC1, 0x92, 0xC5, 0x98, 0xC4, 0xD2, + 0x02, 0x92, 0xC1, 0x94, 0x03, 0x93, 0xC1, 0xD4, 0x0B, 0x47, 0x00, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0x6D, 0xF1, 0x02, 0x96, 0xC3, 0x92, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6D, 0xF1, + 0x11, 0x93, 0x98, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x6D, 0xF1, 0x41, 0x98, 0x1C, 0xD9, 0x98, 0xEC, 0x12, 0x95, 0x02, 0x80, 0x01, 0xD4, 0x40, 0xF0, 0x7E, 0xF2, 0x0B, 0x67, 0xFD, 0x7D, + 0x03, 0x99, 0xC4, 0x92, 0x0C, 0x99, 0x20, 0x03, 0x1C, 0xD9, 0x06, 0x82, 0x41, 0x98, 0x1C, 0xD9, 0x02, 0x82, 0x42, 0x98, 0x1C, 0xD9, 0x05, 0x82, 0x0C, 0x69, 0x80, 0x7F, 0x1C, 0xD9, 0x00, 0xB0, + 0x09, 0xA3, 0x00, 0x01, 0xC3, 0xD2, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6B, 0xF1, 0x42, 0xA4, 0x1A, 0xD5, 0x02, 0x80, 0x44, 0x00, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, 0x60, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x7D, 0xF1, 0x40, 0xF0, 0x3D, 0xF7, 0xC5, 0x94, 0x0A, 0xB3, 0x10, 0x00, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x86, 0xF1, 0x40, 0xF0, 0x81, 0xF5, 0xC5, 0x96, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x8F, 0xF1, 0x40, 0xF0, 0xBC, 0xF4, 0xC5, 0x94, + 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF0, 0xF1, 0x13, 0x97, 0x21, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA1, 0xF1, 0x40, 0xF0, + 0x62, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAA, 0xF1, 0x40, 0xF0, 0x6C, 0xFB, 0x01, 0x96, 0x0B, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0xCA, 0xF1, 0x40, 0xF0, 0xB0, 0xFA, 0x41, 0x92, 0x19, 0xD3, 0xCA, 0xF7, 0x11, 0x93, 0x03, 0xEC, 0x09, 0x43, 0x40, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0xC0, 0xF1, 0x40, 0x94, 0x1A, 0xD5, 0xCA, 0xF7, + 0x11, 0x93, 0x00, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xD3, 0xF1, 0x40, 0xF0, 0x60, 0xF2, 0x0F, 0x9F, 0xD3, 0xF1, 0x01, 0x96, 0x0B, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0xD3, 0xF1, 0x40, 0xF0, 0x7C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xDC, 0xF1, 0x40, 0xF0, 0x87, 0xFB, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0xE7, 0xF1, 0x44, 0x96, 0x1B, 0xD7, 0x0B, 0xBC, 0x0F, 0x9F, 0xED, 0xF1, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xED, 0xF1, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, + 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x3A, 0xF2, 0x13, 0x97, 0x28, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x02, 0xF2, + 0x40, 0xF0, 0x20, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x15, 0xF2, 0x40, 0xF0, 0xC4, 0xEE, 0x40, 0xF0, 0x8F, 0xFB, 0x40, 0xF0, 0x43, 0xF2, 0x40, 0x96, + 0x1B, 0xD7, 0x00, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0xCD, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x31, 0xF2, 0x40, 0xF0, 0x9E, 0xFB, 0x09, 0x63, 0x00, 0x44, + 0x01, 0x97, 0xC3, 0x94, 0x48, 0xA4, 0xC1, 0xD4, 0x00, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, 0x41, 0x92, 0x19, 0xD3, + 0xCD, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x3A, 0xF2, 0x40, 0xF0, 0xAE, 0xFB, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, + 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, + 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, + 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x02, 0x80, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x09, 0x19, 0xD3, 0x02, 0x80, 0x40, 0xF0, 0x7E, 0xF2, + 0x40, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0xC8, 0xD2, 0x09, 0x93, 0x6C, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, + 0x9A, 0xF4, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAD, 0xF2, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0xBA, 0xF2, 0x40, 0xF0, 0xBC, 0xF2, 0x40, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0xBA, 0xF2, 0xC8, 0xD2, 0x09, 0x93, 0x6C, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, + 0xF1, 0xBD, 0x19, 0xD3, 0x95, 0xEC, 0x11, 0x93, 0x93, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD4, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0x07, 0x07, 0x00, 0xC1, 0xD6, + 0x0A, 0x05, 0x00, 0xA0, 0x1A, 0xD5, 0x70, 0xEC, 0x11, 0x93, 0x95, 0xEC, 0x19, 0xD3, 0x01, 0x80, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x13, 0x97, 0x93, 0xEC, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x54, 0xF3, 0x12, 0x95, 0x70, 0xEC, 0x0A, 0x03, 0x07, 0x00, 0xC1, 0x92, + 0xC2, 0xD2, 0x11, 0x93, 0x70, 0xEC, 0x09, 0x05, 0x01, 0x00, 0x48, 0x02, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x70, 0xEC, 0x4E, 0x02, 0xC1, 0x94, 0xC5, 0xD6, 0xC5, 0x92, 0x11, 0x07, 0x70, 0xEC, + 0x0B, 0x03, 0x0F, 0x00, 0xC1, 0x98, 0x46, 0x06, 0x7A, 0x93, 0x79, 0x93, 0x5C, 0x95, 0x5A, 0x95, 0x02, 0xA3, 0xC3, 0xD2, 0x04, 0x95, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x42, 0x46, 0x02, 0x9E, + 0x0F, 0x9F, 0xFD, 0xF2, 0x11, 0x93, 0x70, 0xEC, 0x09, 0x05, 0x05, 0x00, 0x41, 0x02, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x70, 0xEC, 0xC1, 0x92, 0x09, 0xB5, 0x1F, 0x00, 0x43, 0x44, 0x02, 0x8E, + 0x0F, 0x9F, 0x2A, 0xF3, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x2B, 0xF3, 0x0A, 0x05, 0xFF, 0xFF, 0x0F, 0x9F, 0x2B, 0xF3, 0x43, 0x94, 0x11, 0x93, 0x70, 0xEC, 0x42, 0x02, 0xC1, 0xD4, 0x11, 0x93, + 0x70, 0xEC, 0x49, 0x02, 0xC1, 0x92, 0x19, 0xD3, 0x93, 0xEC, 0x09, 0x05, 0xF2, 0xFF, 0x1A, 0xD5, 0x6D, 0xEC, 0x09, 0x43, 0xD0, 0x07, 0x02, 0x9E, 0x0F, 0x9F, 0x54, 0xF3, 0x11, 0x93, 0xD1, 0xF7, + 0x41, 0x02, 0x19, 0xD3, 0xD1, 0xF7, 0x11, 0x93, 0xD0, 0xF7, 0x09, 0xA3, 0x40, 0x00, 0x19, 0xD3, 0xD0, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0x94, 0xEC, 0x40, 0x96, + 0x1B, 0xD7, 0x93, 0xEC, 0x0F, 0x9F, 0xBA, 0xF3, 0x11, 0x93, 0x6D, 0xEC, 0x12, 0x95, 0x95, 0xEC, 0x02, 0x43, 0x02, 0x8E, 0x0F, 0x9F, 0xA2, 0xF3, 0x02, 0x0E, 0x0F, 0x9F, 0x75, 0xF3, 0x11, 0x93, + 0xD1, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xD1, 0xF7, 0x11, 0x93, 0xD0, 0xF7, 0x09, 0xA3, 0x80, 0x00, 0x19, 0xD3, 0xD0, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0x94, 0xEC, + 0x40, 0x96, 0x1B, 0xD7, 0x93, 0xEC, 0x0F, 0x9F, 0xBA, 0xF3, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x87, 0xF3, 0x11, 0x93, 0x98, 0xEC, 0x40, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0x87, 0xF3, 0x40, 0xF0, 0xCE, 0xF3, 0x0F, 0x9F, 0xBC, 0xF3, 0x41, 0x92, 0xC8, 0xD2, 0x0A, 0x95, 0x6C, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x11, 0x93, + 0x98, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x9A, 0xF3, 0x42, 0x96, 0x1B, 0xD7, 0x98, 0xEC, 0x0F, 0x9F, 0xBC, 0xF3, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, + 0x0F, 0x9F, 0xBC, 0xF3, 0x12, 0x45, 0x03, 0xEC, 0x02, 0x4E, 0x0F, 0x9F, 0xB4, 0xF3, 0x11, 0x93, 0xD1, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xD1, 0xF7, 0x11, 0x93, 0xD0, 0xF7, 0x09, 0xA3, 0x00, 0x08, + 0x19, 0xD3, 0xD0, 0xF7, 0x1A, 0xD5, 0x6D, 0xEC, 0x11, 0x93, 0x6D, 0xEC, 0x19, 0x25, 0x6D, 0xEC, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xCE, 0xF3, 0x40, 0x92, 0xC8, 0xD2, 0x09, 0x93, 0x6C, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x11, 0x93, 0xCC, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xDE, 0xF3, 0x0A, 0x65, 0xBC, 0x69, 0x02, 0x97, 0xC3, 0x92, 0x09, 0x83, 0x00, 0x02, 0xC2, 0xD2, 0x11, 0x93, 0x94, 0xEC, + 0x19, 0xD3, 0x04, 0x80, 0x12, 0x95, 0x93, 0xEC, 0x1A, 0xD5, 0x05, 0x80, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0x94, 0xEC, 0x40, 0x94, 0x1A, 0xD5, 0x93, 0xEC, 0x19, 0xD3, + 0xF2, 0xBD, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x20, 0x03, 0x19, 0xD3, 0x06, 0x82, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0xC5, 0xD2, 0x12, 0x95, 0x04, 0x82, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x76, 0xF4, 0x0A, 0xA3, 0x02, 0x00, + 0x19, 0xD3, 0x04, 0x82, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x28, 0xF4, 0x41, 0x96, 0xC5, 0xD6, 0x0A, 0x65, 0xBD, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, + 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0x0F, 0x9F, 0x5C, 0xF4, 0x4F, 0x96, 0x12, 0x95, 0x01, 0x82, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0x32, 0xF4, 0x47, 0x96, 0x11, 0x93, 0x96, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x57, 0xF4, 0x44, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0x57, 0xF4, 0x12, 0x95, 0x00, 0x82, 0x0A, 0x05, 0xFF, 0xAF, + 0x01, 0xD4, 0xC8, 0xD6, 0x41, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0x78, 0xF7, 0x42, 0x00, 0x01, 0x96, 0xC3, 0x94, 0x01, 0xB5, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x57, 0xF4, 0x02, 0x92, 0x50, 0x92, + 0x19, 0xD3, 0xA2, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0xA2, 0xBC, 0x0F, 0x9F, 0x5D, 0xF4, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0x96, 0xEC, + 0x11, 0x93, 0x97, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x71, 0xF4, 0x13, 0x97, 0x00, 0x82, 0x1B, 0xD7, 0x02, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, + 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x97, 0xEC, 0x0F, 0x9F, 0x79, 0xF4, 0xC5, 0x96, 0x1B, 0xD7, 0x96, 0xEC, 0xC5, 0x92, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x85, 0xF4, 0x0A, 0x65, 0xEA, 0x43, + 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0x42, 0x02, + 0xC1, 0x96, 0xC2, 0x92, 0x03, 0x22, 0x40, 0x42, 0x02, 0xAE, 0x0F, 0x9F, 0x98, 0xF4, 0x03, 0x03, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x03, 0x80, 0x0A, 0xB3, + 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB6, 0xF4, 0x0A, 0xB7, 0x00, 0x08, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0xB9, 0xF4, 0x11, 0x93, 0x03, 0xEC, 0x41, 0x02, 0x09, 0xB3, 0xFE, 0xFF, + 0x12, 0x95, 0x07, 0x80, 0x01, 0x45, 0x02, 0x8E, 0x0F, 0x9F, 0xB9, 0xF4, 0x41, 0x92, 0x0F, 0x9F, 0xBA, 0xF4, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, + 0x42, 0x92, 0xC5, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x11, 0x93, 0x77, 0xEC, 0x09, 0x43, 0xA0, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0xE4, 0xF4, + 0x09, 0x63, 0x08, 0x43, 0x0B, 0x67, 0xFF, 0x5F, 0x01, 0x95, 0xC2, 0xD6, 0x0A, 0x95, 0x7A, 0xEC, 0xD2, 0x96, 0x1B, 0xD7, 0xFA, 0xBC, 0xD2, 0x96, 0xC1, 0xD6, 0xD2, 0x92, 0x19, 0xD3, 0xFA, 0xBC, + 0x1A, 0xD5, 0x77, 0xEC, 0x0F, 0x9F, 0x03, 0xF5, 0x0B, 0x67, 0xFF, 0x6F, 0x1B, 0xD7, 0xF8, 0xBC, 0x19, 0xD3, 0xFA, 0xBC, 0x09, 0xB5, 0x00, 0xFF, 0x0A, 0x45, 0x00, 0x9B, 0x02, 0x5E, 0x0F, 0x9F, + 0xF7, 0xF4, 0x09, 0x03, 0xC9, 0x5C, 0x19, 0xD3, 0x77, 0xEC, 0x0F, 0x9F, 0x16, 0xF5, 0x0A, 0x45, 0x00, 0x99, 0x02, 0x5E, 0x0F, 0x9F, 0x07, 0xF5, 0x09, 0x03, 0x00, 0x67, 0x61, 0x93, 0x09, 0x03, + 0x17, 0xF8, 0x19, 0xD3, 0x77, 0xEC, 0x41, 0x94, 0xC5, 0xD4, 0x0F, 0x9F, 0x18, 0xF5, 0x09, 0x43, 0x10, 0x95, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xF5, 0x11, 0x93, 0x98, 0xEC, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x18, 0xF5, 0x0B, 0x97, 0x78, 0xEC, 0x1B, 0xD7, 0x77, 0xEC, 0x41, 0x92, 0xC5, 0xD2, 0x12, 0x95, 0x77, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x99, 0xF7, 0x19, 0xD3, 0xF8, 0xBC, 0x11, 0x93, + 0x77, 0xEC, 0xC5, 0x96, 0x03, 0x03, 0xC1, 0x92, 0x19, 0xD3, 0xFA, 0xBC, 0x0A, 0x65, 0x52, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, + 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x41, 0x00, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x06, 0x92, 0x01, 0xD2, 0x0A, 0x65, 0xF0, 0x6A, 0x0B, 0x97, + 0x78, 0xEC, 0x02, 0x99, 0xC4, 0x98, 0xD3, 0xD8, 0x02, 0xD6, 0x0A, 0x03, 0x02, 0x00, 0x01, 0x97, 0xC3, 0x98, 0x02, 0x96, 0xC3, 0xD8, 0x01, 0x96, 0xC1, 0xD6, 0x1A, 0xD5, 0x77, 0xEC, 0xC5, 0x98, + 0x14, 0x99, 0x78, 0xEC, 0xC2, 0xD8, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0x37, 0xF5, 0x41, 0x00, 0x11, 0x93, 0x98, 0xEC, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x71, 0xF5, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x6E, 0xF5, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, + 0x98, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x64, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xAF, 0xBC, 0x47, 0xB2, 0x59, 0x93, 0x59, 0x93, 0x11, 0xA3, 0xBF, 0xBC, 0x21, 0xD2, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x95, 0xF5, 0x21, 0x92, 0x41, 0x02, 0x21, 0xD2, 0x05, 0x95, 0x40, 0x96, 0x20, 0xD6, 0x21, 0x96, 0x63, 0x93, 0x0F, 0x9F, 0xA5, 0xF5, 0x13, 0x97, 0xFC, 0xBC, 0xD2, 0xD6, 0x13, 0x97, + 0xFE, 0xBC, 0xD2, 0xD6, 0x20, 0x96, 0x42, 0x06, 0x20, 0xD6, 0x20, 0x96, 0x01, 0x47, 0x02, 0x1E, 0x0F, 0x9F, 0x9C, 0xF5, 0xC5, 0x92, 0x63, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x7E, 0xF6, 0x02, 0x8E, + 0x0F, 0x9F, 0xBC, 0xF5, 0x61, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x53, 0xF6, 0x62, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xD1, 0xF5, 0x0F, 0x9F, 0x88, 0xF6, 0x09, 0x43, 0x28, 0x01, 0x02, 0x4E, 0x0F, 0x9F, + 0xE1, 0xF5, 0x02, 0x8E, 0x0F, 0x9F, 0xCA, 0xF5, 0x68, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE8, 0xF5, 0x0F, 0x9F, 0x88, 0xF6, 0x09, 0x43, 0x28, 0x02, 0x02, 0x4E, 0x0F, 0x9F, 0x1B, 0xF6, 0x0F, 0x9F, + 0x88, 0xF6, 0x01, 0x92, 0x19, 0xD3, 0x77, 0xEC, 0x09, 0x43, 0x10, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0x43, 0xF6, 0x11, 0x93, 0x12, 0x95, 0xC8, 0xD2, 0x40, 0xF0, 0x37, 0xF5, 0x41, 0x00, 0x0F, 0x9F, + 0x43, 0xF6, 0x09, 0x63, 0x00, 0x08, 0x19, 0xD3, 0x76, 0xEC, 0x40, 0x94, 0x1A, 0xD5, 0x75, 0xEC, 0x40, 0x96, 0x20, 0xD6, 0x11, 0x93, 0x76, 0xEC, 0x09, 0x43, 0xF4, 0xFF, 0x02, 0x8E, 0x0F, 0x9F, + 0x88, 0xF6, 0x0D, 0x07, 0x02, 0x00, 0x0D, 0x09, 0x01, 0x00, 0x04, 0x93, 0xC1, 0x94, 0x42, 0x08, 0x0A, 0xB5, 0xFF, 0x00, 0x03, 0x93, 0xC1, 0x92, 0x42, 0x06, 0x59, 0x93, 0x59, 0x93, 0x23, 0xD2, + 0x01, 0xA5, 0x11, 0x93, 0x76, 0xEC, 0xC1, 0xD4, 0x12, 0x95, 0x76, 0xEC, 0x11, 0x93, 0x75, 0xEC, 0xD2, 0x82, 0x19, 0xD3, 0x75, 0xEC, 0x1A, 0xD5, 0x76, 0xEC, 0x20, 0x92, 0x42, 0x02, 0x20, 0xD2, + 0x47, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x88, 0xF6, 0x0A, 0x45, 0xF4, 0xFF, 0x02, 0x9E, 0x0F, 0x9F, 0xF5, 0xF5, 0x0F, 0x9F, 0x88, 0xF6, 0x11, 0x93, 0x75, 0xEC, 0x09, 0xB5, 0xFF, 0x00, 0x79, 0x93, + 0x79, 0x93, 0x01, 0x85, 0x1A, 0xD5, 0x75, 0xEC, 0x01, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0x40, 0xF6, 0x6F, 0x94, 0x1A, 0xD5, 0x05, 0x84, 0x40, 0xF1, 0x0B, 0x97, 0xF7, 0x07, 0xC8, 0xD6, 0x09, 0x63, + 0x00, 0x08, 0xC8, 0xD2, 0x40, 0x94, 0xC8, 0xD4, 0x40, 0xF0, 0x53, 0xEE, 0x43, 0xF1, 0x6D, 0x96, 0x1B, 0xD7, 0x05, 0x84, 0x41, 0x92, 0x19, 0xD3, 0x77, 0xEC, 0x43, 0x00, 0x0F, 0x9F, 0x43, 0xF6, + 0x40, 0x94, 0x1A, 0xD5, 0x77, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, + 0xC2, 0xD2, 0x0F, 0x9F, 0x88, 0xF6, 0x0D, 0x03, 0x04, 0x00, 0xC8, 0xD2, 0x01, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0xE5, 0xF0, 0x21, 0x94, 0x0A, 0x03, 0xF4, 0xFF, 0x61, 0x93, 0x21, 0xD2, 0x40, 0x96, + 0x20, 0xD6, 0x42, 0x00, 0x01, 0x47, 0x02, 0x0E, 0x0F, 0x9F, 0x88, 0xF6, 0x0D, 0x05, 0x06, 0x00, 0x20, 0x92, 0x05, 0x03, 0x47, 0x02, 0xC8, 0xD2, 0x02, 0x97, 0xC3, 0x92, 0x43, 0x04, 0xC8, 0xD2, + 0x22, 0xD4, 0x40, 0xF0, 0xE5, 0xF0, 0x42, 0x00, 0x20, 0x92, 0x43, 0x02, 0x20, 0xD2, 0x22, 0x94, 0x21, 0x42, 0x02, 0x1E, 0x0F, 0x9F, 0x68, 0xF6, 0x0F, 0x9F, 0x88, 0xF6, 0x02, 0x94, 0xC8, 0xD4, + 0x01, 0x96, 0xC8, 0xD6, 0x04, 0x92, 0x05, 0x94, 0x90, 0xD4, 0x40, 0xF0, 0x8B, 0xF6, 0x44, 0x00, 0x64, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, + 0x0A, 0x00, 0x0A, 0x96, 0x0B, 0x98, 0x09, 0x05, 0x02, 0x00, 0xC2, 0x94, 0xC5, 0xD4, 0x43, 0x02, 0xC1, 0x92, 0x01, 0xD2, 0x02, 0xD2, 0x5F, 0x92, 0x01, 0x94, 0x02, 0x23, 0xC8, 0xD2, 0x90, 0xD8, + 0x40, 0xF0, 0x52, 0xF7, 0x43, 0x00, 0x01, 0x97, 0x02, 0x99, 0x11, 0x93, 0x80, 0x96, 0x09, 0xB5, 0x7F, 0xFF, 0x1A, 0xD5, 0x80, 0x96, 0xC5, 0x94, 0x0A, 0x83, 0xFF, 0xFF, 0x11, 0xB3, 0x2C, 0x93, + 0x09, 0xB3, 0xFB, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x01, 0x92, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE5, 0xF6, 0x41, 0x94, 0xC8, 0xD4, 0x90, 0xD8, 0x40, 0xF0, 0x52, 0xF7, 0x43, 0x00, 0x01, 0x97, + 0x02, 0x99, 0x40, 0x48, 0x05, 0x3E, 0x02, 0x4E, 0x40, 0x46, 0x02, 0x0E, 0x0F, 0x9F, 0xCD, 0xF6, 0x11, 0x93, 0x2C, 0x93, 0x48, 0xA2, 0x0F, 0x9F, 0xD1, 0xF6, 0x11, 0x93, 0x2C, 0x93, 0x09, 0xB3, + 0xF7, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x03, 0x92, 0x11, 0x93, 0x2C, 0x93, 0x44, 0xA2, 0x19, 0xD3, 0x2C, 0x93, 0x09, 0xB3, 0xFB, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x02, 0x94, 0x0A, 0x05, 0xFF, 0xFF, + + 0x02, 0xD4, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xB9, 0xF6, 0x09, 0x63, 0xD4, 0x6C, 0x01, 0x95, 0xC2, 0x96, 0xC5, 0x94, 0x02, 0xA7, 0xC1, 0xD6, 0x01, 0x92, 0x54, 0x42, 0x02, 0x5E, 0x0F, 0x9F, + 0xF5, 0xF6, 0x0A, 0x83, 0xFF, 0xFF, 0x1B, 0xB3, 0x2C, 0x93, 0x0A, 0x65, 0x80, 0x69, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x40, 0xF0, 0x9A, 0xF4, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x10, 0xF7, 0x40, 0xF0, 0xBC, 0xF2, 0x0F, 0x9F, 0x1E, 0xF7, + 0x40, 0x96, 0xC8, 0xD6, 0x09, 0x93, 0x6C, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, + 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x2D, 0xBC, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, + 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x11, 0x93, 0x03, 0xEC, 0x19, 0xD3, 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x43, 0xA2, 0xC2, 0xD2, + 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x92, 0x04, 0x94, 0x05, 0x96, 0x40, 0xF0, 0x5C, 0xF7, 0x88, 0x98, 0x90, 0x9A, 0x03, 0x97, 0x19, 0x5E, 0x60, 0x46, 0x03, 0x0E, + 0x40, 0x94, 0x40, 0x92, 0x90, 0x9A, 0x44, 0x46, 0x05, 0x0E, 0x59, 0x93, 0x9A, 0x95, 0x44, 0x26, 0x0E, 0x5E, 0x47, 0xEE, 0x0E, 0xBD, 0xBF, 0xFF, 0x09, 0xC3, 0x00, 0x80, 0x02, 0x5E, 0x0E, 0xAD, + 0x40, 0x00, 0x41, 0x93, 0x42, 0x95, 0x01, 0x0E, 0x41, 0xA4, 0x41, 0x26, 0x4D, 0x4E, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x92, 0x04, 0x96, 0x0D, 0x5E, 0x50, 0x46, 0x02, 0x0E, + 0x40, 0x92, 0x09, 0xEE, 0x44, 0x46, 0x04, 0x0E, 0x59, 0x93, 0x44, 0x26, 0x04, 0x5E, 0x46, 0xEE, 0x41, 0x93, 0x41, 0x26, 0x43, 0x4E, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, + 0x40, 0xF0, 0xB1, 0xFE, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x94, 0x1A, 0xD5, 0xA0, 0xF7, 0x11, 0x93, + 0x00, 0x90, 0x88, 0x98, 0x90, 0x9A, 0x1D, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x16, 0x00, 0x21, 0x00, 0x12, 0x00, 0x09, 0x00, 0x13, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x21, 0x00, 0x2D, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xF2, 0xC2, 0xF7, 0x00, 0x00, + 0x9C, 0xF2, 0xC2, 0xF7, 0x00, 0x00, 0xE1, 0xF2, 0xBF, 0xF7, 0xC6, 0xF7, 0x00, 0x00, 0xBF, 0xF3, 0xC2, 0xF7, 0x30, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; +#elif defined(ZD1211B) +={ + 0x08, 0x91, 0xFF, 0xED, 0x09, 0x93, 0x1E, 0xEE, 0xD1, 0x94, 0x11, 0xEE, 0x88, 0xD4, 0xD1, 0x96, 0xD1, 0x98, 0x5C, 0x99, 0x5C, 0x99, 0x4C, 0x99, 0x04, 0x9D, 0xD1, 0x98, 0xD1, 0x9A, 0x03, 0xEE, + 0xF4, 0x94, 0xD3, 0xD4, 0x41, 0x2A, 0x40, 0x4A, 0x45, 0xBE, 0x88, 0x92, 0x41, 0x24, 0x40, 0x44, 0x53, 0xBE, 0x40, 0xF0, 0x93, 0xEE, 0x41, 0xEE, 0x98, 0x9A, 0xC9, 0xF7, 0x02, 0x00, 0x1F, 0xEC, + 0x00, 0x00, 0xB2, 0xF8, 0x4D, 0x00, 0x80, 0xEC, 0x00, 0x00, 0xA3, 0xF7, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xD8, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, + 0x40, 0xF0, 0x98, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x64, 0xEF, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xDA, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, + 0xFF, 0xF6, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0x56, 0xF5, 0xA0, 0x90, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, 0xD5, 0xF0, 0xA0, 0x90, 0x98, 0x9A, 0x98, 0x9A, 0xA0, 0xD8, 0x40, 0xF0, + 0x94, 0xF7, 0xA0, 0x90, 0x98, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x42, 0x02, 0xC1, 0x92, 0x03, 0x96, 0x1B, 0xD7, 0x2A, 0x86, + 0x1A, 0xD5, 0x2B, 0x86, 0x09, 0xA3, 0x00, 0x80, 0x19, 0xD3, 0x2C, 0x86, 0x00, 0xEE, 0x0A, 0x65, 0xC0, 0x7A, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x05, 0x00, 0x05, 0x94, 0xC5, 0xD4, 0x09, 0x05, 0x01, 0x00, 0xC2, 0x94, 0x01, 0xD4, 0x42, 0x02, 0xC1, 0x96, 0x0A, 0x65, 0xC0, 0x7A, + 0x02, 0x99, 0xC4, 0x92, 0x41, 0xA2, 0xC4, 0xD2, 0xC5, 0x98, 0x1C, 0xD9, 0x2A, 0x86, 0x01, 0x98, 0x1C, 0xD9, 0x2B, 0x86, 0x1B, 0xD7, 0x2C, 0x86, 0x00, 0xEE, 0x09, 0xB3, 0xFE, 0xFF, 0xC2, 0xD2, + 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xE5, 0xEE, 0x11, 0x93, 0xCD, 0xF7, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xAE, 0xEE, 0x40, 0xF1, + 0x40, 0x92, 0x19, 0xD3, 0xCD, 0xF7, 0xC5, 0x92, 0x41, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x40, 0x92, 0x19, 0xD3, 0x00, 0x83, 0x0F, 0x9F, 0x95, 0xF8, 0x0F, 0x9F, 0x99, 0xEE, 0x42, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0x99, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0xCD, 0xF7, 0x09, 0x93, 0xBC, 0xF7, 0x19, 0xD3, 0x6C, 0xEC, 0x40, 0xF0, 0x87, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0F, 0x9F, + 0x99, 0xEE, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, + 0x09, 0x93, 0xBC, 0xF7, 0x19, 0xD3, 0x6C, 0xEC, 0x40, 0xF0, 0x87, 0xF2, 0x40, 0xF0, 0xF3, 0xF3, 0x11, 0x93, 0x04, 0xEC, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xE3, 0xEE, 0x40, 0x92, 0x19, 0xD3, + 0x04, 0xEC, 0x40, 0xF0, 0x60, 0xF2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFD, 0x19, 0xD3, 0x44, 0x96, 0x40, 0xF0, 0x8D, 0xF7, + 0x6E, 0x92, 0x19, 0xD3, 0x05, 0x84, 0x40, 0xF0, 0xC4, 0xEE, 0x4B, 0x62, 0x0A, 0x95, 0x2E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x2B, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x00, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, + 0x2F, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x34, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x39, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x3E, 0xEE, 0xD1, 0xD4, 0x0B, 0x97, 0x43, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x48, 0xEE, + 0xD1, 0xD4, 0x0B, 0x97, 0x4D, 0xEE, 0xD1, 0xD6, 0x0A, 0x95, 0x4E, 0xEE, 0xC1, 0xD4, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x43, 0xF1, 0x09, 0x93, 0x01, 0x3F, + 0x19, 0xD3, 0xC0, 0x85, 0x11, 0x93, 0x44, 0x96, 0x09, 0xB3, 0xFF, 0xFC, 0x19, 0xD3, 0x44, 0x96, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x03, 0x96, + 0x41, 0x02, 0x03, 0x99, 0xC4, 0x94, 0x42, 0x04, 0xC1, 0x04, 0xC2, 0x94, 0xC3, 0xD4, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0x13, 0x97, + 0x6F, 0xEC, 0x1B, 0xD7, 0x02, 0x80, 0x11, 0x93, 0x73, 0xEC, 0x19, 0xD3, 0x7C, 0x96, 0x0B, 0x97, 0xA0, 0x00, 0x1B, 0xD7, 0x77, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, + 0xFF, 0xBF, 0x11, 0xA3, 0x74, 0xEC, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, + 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x14, 0x99, 0x03, 0x80, 0x0C, 0xB3, 0x00, 0x10, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x7B, 0xF0, + 0x11, 0x93, 0x7E, 0xEC, 0x41, 0x02, 0x19, 0xD3, 0x7E, 0xEC, 0x11, 0x93, 0xCB, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x84, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, + 0x00, 0x04, 0xC2, 0xD2, 0x0F, 0x9F, 0x95, 0xF0, 0x11, 0x93, 0x6E, 0xEC, 0x02, 0xD2, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD0, 0xEF, 0x41, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0x19, 0xD3, 0x7E, 0xEC, + 0x12, 0x95, 0x02, 0x80, 0x1A, 0xD5, 0x6F, 0xEC, 0x13, 0x97, 0x7C, 0x96, 0x1B, 0xD7, 0x73, 0xEC, 0x0A, 0x65, 0x0E, 0x42, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x00, 0x40, 0x19, 0xD3, 0x74, 0xEC, + 0x09, 0x63, 0x00, 0x40, 0xC2, 0xD2, 0x02, 0x94, 0x1A, 0xD5, 0x7C, 0x96, 0x0C, 0xB3, 0x00, 0x08, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xB0, 0xEF, 0x0C, 0xB3, 0xFF, 0x07, 0x0F, 0x9F, 0xB4, 0xEF, + 0x11, 0x93, 0x06, 0x80, 0x09, 0xB3, 0xFF, 0x07, 0x09, 0x03, 0x00, 0xA0, 0x19, 0xD3, 0x71, 0xEC, 0x40, 0x98, 0x0B, 0x97, 0x7B, 0xEC, 0x04, 0x95, 0x03, 0x05, 0x14, 0x03, 0x71, 0xEC, 0x46, 0x02, + 0xC1, 0x92, 0xC2, 0xD2, 0x41, 0x08, 0x42, 0x48, 0x02, 0x9E, 0x0F, 0x9F, 0xBB, 0xEF, 0x11, 0x93, 0x71, 0xEC, 0xC1, 0x92, 0xC5, 0xD2, 0x5F, 0xB2, 0x19, 0xD3, 0x7A, 0xEC, 0x0F, 0x9F, 0xD3, 0xEF, + 0x13, 0x97, 0x72, 0xEC, 0xC5, 0xD6, 0x12, 0x95, 0x7A, 0xEC, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x70, 0xF0, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF1, 0xEF, 0x0A, 0xB3, + 0x07, 0x00, 0x09, 0x05, 0x88, 0xEC, 0xC2, 0x94, 0x01, 0xD4, 0x09, 0x03, 0x80, 0xEC, 0xC1, 0x92, 0x19, 0xD3, 0x7A, 0xEC, 0xC5, 0x98, 0x0C, 0xB9, 0x00, 0xFF, 0x01, 0xA9, 0xC5, 0xD8, 0x0F, 0x9F, + 0xFD, 0xEF, 0x0A, 0x05, 0xFF, 0xFF, 0x0A, 0x03, 0x90, 0xEC, 0xC1, 0x92, 0x01, 0xD2, 0x1A, 0xD5, 0x7A, 0xEC, 0xC5, 0x92, 0x09, 0x03, 0xFF, 0xFF, 0xC5, 0xD2, 0x11, 0x93, 0x71, 0xEC, 0xC5, 0x94, + 0xC1, 0xD4, 0x11, 0x93, 0x71, 0xEC, 0x09, 0x07, 0x0B, 0x00, 0x03, 0xD6, 0xC3, 0x98, 0x06, 0xD8, 0x7C, 0x95, 0x7A, 0x95, 0x4C, 0x02, 0xC1, 0x92, 0x59, 0x93, 0x59, 0x93, 0x01, 0xA5, 0x01, 0x98, + 0x0C, 0xF5, 0x7B, 0x93, 0x09, 0x09, 0x01, 0x00, 0x06, 0x92, 0x09, 0xB3, 0xFF, 0x00, 0x04, 0xD2, 0x5C, 0x93, 0x59, 0x93, 0x04, 0x94, 0x01, 0xA5, 0x03, 0x96, 0xC3, 0xD4, 0x11, 0x93, 0x71, 0xEC, + 0x4C, 0x02, 0x05, 0xD2, 0xC1, 0x92, 0x09, 0xB3, 0x00, 0xFF, 0x7C, 0x95, 0x7A, 0x95, 0x02, 0xA3, 0x05, 0x98, 0xC4, 0xD2, 0x12, 0x95, 0x71, 0xEC, 0x45, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, + 0x00, 0x01, 0xC2, 0xD2, 0x12, 0x95, 0x7A, 0xEC, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x45, 0xF0, 0x12, 0x95, 0x71, 0xEC, 0x4A, 0x04, 0x02, 0x99, 0xC4, 0x92, 0x01, 0x98, + 0x0C, 0xF3, 0x7B, 0x93, 0x41, 0x02, 0x0F, 0x9F, 0x66, 0xF0, 0x43, 0x44, 0x02, 0x8E, 0x0F, 0x9F, 0x67, 0xF0, 0x11, 0x93, 0x71, 0xEC, 0x42, 0x02, 0x0A, 0x05, 0xFF, 0xFF, 0xC1, 0xD4, 0x11, 0x93, + 0x71, 0xEC, 0x4A, 0x02, 0x12, 0x95, 0x60, 0x96, 0xC1, 0xD4, 0x12, 0x95, 0x71, 0xEC, 0x4B, 0x04, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0x1F, 0xFF, 0xC2, 0xD2, 0x12, 0x95, 0x71, 0xEC, 0x4B, 0x04, + 0x11, 0x93, 0x62, 0x96, 0x41, 0x93, 0x59, 0x93, 0x02, 0x99, 0xC4, 0xA2, 0xC2, 0xD2, 0xC5, 0x92, 0x19, 0xD3, 0x72, 0xEC, 0x0A, 0x95, 0x0C, 0x02, 0x1A, 0xD5, 0x02, 0x80, 0x0F, 0x9F, 0x95, 0xF0, + 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x04, 0xC2, 0xD2, 0x40, 0xF0, 0x39, 0xEF, 0x0F, 0x9F, 0x95, 0xF0, 0x11, 0x93, 0x6E, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, + 0x8A, 0xF0, 0x40, 0xF0, 0x39, 0xEF, 0x11, 0x93, 0x6F, 0xEC, 0x44, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x95, 0xF0, 0x48, 0x98, 0x1C, 0xD9, 0x02, 0x80, 0x11, 0x93, 0x6C, 0xEC, 0x41, 0x22, + 0x0A, 0x95, 0x95, 0xF0, 0x88, 0xD4, 0x88, 0xDC, 0x91, 0x9A, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x04, 0x82, 0x48, 0xB2, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0xAC, 0xF0, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFF, 0xFE, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0x97, 0xEC, 0x11, 0x93, 0x04, 0x82, 0x43, 0xB2, 0x12, 0x95, + 0x03, 0x82, 0x02, 0xB3, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xD3, 0xF0, 0x0A, 0xB3, 0x00, 0xFF, 0x48, 0xA2, 0x19, 0xD3, 0x03, 0x82, 0x40, 0xF0, 0x00, 0xF4, 0x11, 0x93, 0x97, 0xEC, 0x41, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0xD3, 0xF0, 0x11, 0x93, 0x07, 0x82, 0x11, 0x43, 0x03, 0xEC, 0x02, 0x0E, 0x0F, 0x9F, 0xD3, 0xF0, 0x11, 0x93, 0x03, 0x82, 0x09, 0xA3, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, + 0x40, 0x96, 0x1B, 0xD7, 0x97, 0xEC, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0x20, 0xBC, 0xC8, 0xD2, + 0x40, 0xF0, 0x70, 0xF1, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x44, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x07, 0x00, 0x07, 0x96, 0x41, 0x02, 0xC1, 0x92, 0x02, 0xD2, 0x0B, 0xB3, + 0x00, 0xFF, 0x09, 0x43, 0x00, 0x9B, 0x02, 0x5E, 0x0F, 0x9F, 0xFF, 0xF0, 0x0B, 0x03, 0xC9, 0x5C, 0x02, 0x94, 0xD2, 0x96, 0xD1, 0xD6, 0xC2, 0x98, 0xC1, 0xD8, 0x0F, 0x9F, 0x6D, 0xF1, 0x09, 0x43, + 0x00, 0x99, 0x02, 0x5E, 0x0F, 0x9F, 0x20, 0xF1, 0x0B, 0x03, 0x00, 0x67, 0x61, 0x97, 0x0B, 0x03, 0x17, 0xF8, 0x02, 0x94, 0xD2, 0x98, 0xC1, 0xD8, 0xC2, 0x94, 0xD9, 0xD4, 0x03, 0xD2, 0x40, 0x46, + 0x02, 0x5E, 0x0F, 0x9F, 0x6D, 0xF1, 0x09, 0x03, 0xFF, 0xFF, 0x0B, 0x97, 0x7E, 0x00, 0xC8, 0xD6, 0xC8, 0xD2, 0x57, 0x98, 0xC8, 0xD8, 0x40, 0xF0, 0x53, 0xEE, 0x43, 0x00, 0x0F, 0x9F, 0x6D, 0xF1, + 0x0B, 0xB3, 0x00, 0xF0, 0x09, 0x43, 0x00, 0x90, 0x02, 0x5E, 0x0F, 0x9F, 0x30, 0xF1, 0x0B, 0x03, 0x02, 0x00, 0xC5, 0xD2, 0x02, 0x94, 0x0A, 0x03, 0x01, 0x00, 0xC1, 0x92, 0xC5, 0x98, 0xC4, 0xD2, + 0x02, 0x92, 0xC1, 0x94, 0x03, 0x93, 0xC1, 0xD4, 0x0B, 0x47, 0x00, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0x6D, 0xF1, 0x02, 0x96, 0xC3, 0x92, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6D, 0xF1, + 0x11, 0x93, 0x98, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x6D, 0xF1, 0x41, 0x98, 0x1C, 0xD9, 0x98, 0xEC, 0x12, 0x95, 0x02, 0x80, 0x01, 0xD4, 0x40, 0xF0, 0x7E, 0xF2, 0x0B, 0x67, 0xFD, 0x7D, + 0x03, 0x99, 0xC4, 0x92, 0x0C, 0x99, 0x20, 0x03, 0x1C, 0xD9, 0x06, 0x82, 0x41, 0x98, 0x1C, 0xD9, 0x02, 0x82, 0x42, 0x98, 0x1C, 0xD9, 0x05, 0x82, 0x0C, 0x69, 0x80, 0x7F, 0x1C, 0xD9, 0x00, 0xB0, + 0x09, 0xA3, 0x00, 0x01, 0xC3, 0xD2, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x6B, 0xF1, 0x42, 0xA4, 0x1A, 0xD5, 0x02, 0x80, 0x44, 0x00, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x42, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x05, 0x92, 0xC5, 0xD2, 0x60, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x7D, 0xF1, 0x40, 0xF0, 0x3D, 0xF7, 0xC5, 0x94, 0x0A, 0xB3, 0x10, 0x00, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x86, 0xF1, 0x40, 0xF0, 0x81, 0xF5, 0xC5, 0x96, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x8F, 0xF1, 0x40, 0xF0, 0xBC, 0xF4, 0xC5, 0x94, + 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xF0, 0xF1, 0x13, 0x97, 0x21, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xA1, 0xF1, 0x40, 0xF0, + 0x62, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAA, 0xF1, 0x40, 0xF0, 0x6C, 0xFB, 0x01, 0x96, 0x0B, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0xCA, 0xF1, 0x40, 0xF0, 0xB0, 0xFA, 0x41, 0x92, 0x19, 0xD3, 0xCA, 0xF7, 0x11, 0x93, 0x03, 0xEC, 0x09, 0x43, 0x40, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0xC0, 0xF1, 0x40, 0x94, 0x1A, 0xD5, 0xCA, 0xF7, + 0x11, 0x93, 0x00, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xD3, 0xF1, 0x40, 0xF0, 0x60, 0xF2, 0x0F, 0x9F, 0xD3, 0xF1, 0x01, 0x96, 0x0B, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0xD3, 0xF1, 0x40, 0xF0, 0x7C, 0xFB, 0x01, 0x94, 0x0A, 0xB3, 0x10, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xDC, 0xF1, 0x40, 0xF0, 0x87, 0xFB, 0x11, 0x93, 0x10, 0xEC, 0x42, 0x42, 0x02, 0x5E, + 0x0F, 0x9F, 0xE7, 0xF1, 0x44, 0x96, 0x1B, 0xD7, 0x0B, 0xBC, 0x0F, 0x9F, 0xED, 0xF1, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xED, 0xF1, 0x19, 0xD3, 0x0B, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0x10, 0xEC, + 0xC5, 0x94, 0x0A, 0xB3, 0x80, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x3A, 0xF2, 0x13, 0x97, 0x28, 0xBC, 0x01, 0xD6, 0x0B, 0xB3, 0x40, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x02, 0xF2, + 0x40, 0xF0, 0x20, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x15, 0xF2, 0x40, 0xF0, 0xC4, 0xEE, 0x40, 0xF0, 0x8F, 0xFB, 0x40, 0xF0, 0x43, 0xF2, 0x40, 0x96, + 0x1B, 0xD7, 0x00, 0xEC, 0x41, 0x92, 0x19, 0xD3, 0xCD, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x04, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x31, 0xF2, 0x40, 0xF0, 0x9E, 0xFB, 0x09, 0x63, 0x00, 0x44, + 0x01, 0x97, 0xC3, 0x94, 0x48, 0xA4, 0xC1, 0xD4, 0x00, 0xEE, 0x40, 0x92, 0x19, 0xD3, 0x12, 0x95, 0x19, 0xD3, 0x10, 0x95, 0x19, 0xD3, 0x02, 0x80, 0x19, 0xD3, 0x03, 0x82, 0x41, 0x92, 0x19, 0xD3, + 0xCD, 0xF7, 0x01, 0x94, 0x0A, 0xB3, 0x08, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x3A, 0xF2, 0x40, 0xF0, 0xAE, 0xFB, 0x0A, 0x65, 0x00, 0x44, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, + 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, + 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, + 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x02, 0x80, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x00, 0x09, 0x19, 0xD3, 0x02, 0x80, 0x40, 0xF0, 0x7E, 0xF2, + 0x40, 0x92, 0x19, 0xD3, 0x6E, 0xEC, 0xC8, 0xD2, 0x09, 0x93, 0x6C, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, + 0x9A, 0xF4, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xAD, 0xF2, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x0F, 0x9F, 0xBA, 0xF2, 0x40, 0xF0, 0xBC, 0xF2, 0x40, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0xBA, 0xF2, 0xC8, 0xD2, 0x09, 0x93, 0x6C, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, + 0xF1, 0xBD, 0x19, 0xD3, 0x95, 0xEC, 0x11, 0x93, 0x93, 0xEC, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0xD4, 0xF2, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x94, 0x0A, 0x07, 0x07, 0x00, 0xC1, 0xD6, + 0x0A, 0x05, 0x00, 0xA0, 0x1A, 0xD5, 0x70, 0xEC, 0x11, 0x93, 0x95, 0xEC, 0x19, 0xD3, 0x01, 0x80, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x41, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x13, 0x97, 0x93, 0xEC, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0x54, 0xF3, 0x12, 0x95, 0x70, 0xEC, 0x0A, 0x03, 0x07, 0x00, 0xC1, 0x92, + 0xC2, 0xD2, 0x11, 0x93, 0x70, 0xEC, 0x09, 0x05, 0x01, 0x00, 0x48, 0x02, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x70, 0xEC, 0x4E, 0x02, 0xC1, 0x94, 0xC5, 0xD6, 0xC5, 0x92, 0x11, 0x07, 0x70, 0xEC, + 0x0B, 0x03, 0x0F, 0x00, 0xC1, 0x98, 0x46, 0x06, 0x7A, 0x93, 0x79, 0x93, 0x5C, 0x95, 0x5A, 0x95, 0x02, 0xA3, 0xC3, 0xD2, 0x04, 0x95, 0xC5, 0x96, 0x41, 0x06, 0xC5, 0xD6, 0x42, 0x46, 0x02, 0x9E, + 0x0F, 0x9F, 0xFD, 0xF2, 0x11, 0x93, 0x70, 0xEC, 0x09, 0x05, 0x05, 0x00, 0x41, 0x02, 0xC1, 0x92, 0xC2, 0xD2, 0x11, 0x93, 0x70, 0xEC, 0xC1, 0x92, 0x09, 0xB5, 0x1F, 0x00, 0x43, 0x44, 0x02, 0x8E, + 0x0F, 0x9F, 0x2A, 0xF3, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x2B, 0xF3, 0x0A, 0x05, 0xFF, 0xFF, 0x0F, 0x9F, 0x2B, 0xF3, 0x43, 0x94, 0x11, 0x93, 0x70, 0xEC, 0x42, 0x02, 0xC1, 0xD4, 0x11, 0x93, + 0x70, 0xEC, 0x49, 0x02, 0xC1, 0x92, 0x19, 0xD3, 0x93, 0xEC, 0x09, 0x05, 0xF2, 0xFF, 0x1A, 0xD5, 0x6D, 0xEC, 0x09, 0x43, 0xD0, 0x07, 0x02, 0x9E, 0x0F, 0x9F, 0x54, 0xF3, 0x11, 0x93, 0xD1, 0xF7, + 0x41, 0x02, 0x19, 0xD3, 0xD1, 0xF7, 0x11, 0x93, 0xD0, 0xF7, 0x09, 0xA3, 0x40, 0x00, 0x19, 0xD3, 0xD0, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0x94, 0xEC, 0x40, 0x96, + 0x1B, 0xD7, 0x93, 0xEC, 0x0F, 0x9F, 0xBA, 0xF3, 0x11, 0x93, 0x6D, 0xEC, 0x12, 0x95, 0x95, 0xEC, 0x02, 0x43, 0x02, 0x8E, 0x0F, 0x9F, 0xA2, 0xF3, 0x02, 0x0E, 0x0F, 0x9F, 0x75, 0xF3, 0x11, 0x93, + 0xD1, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xD1, 0xF7, 0x11, 0x93, 0xD0, 0xF7, 0x09, 0xA3, 0x80, 0x00, 0x19, 0xD3, 0xD0, 0xF7, 0x09, 0x63, 0x00, 0x80, 0x01, 0x95, 0xC2, 0x94, 0x1A, 0xD5, 0x94, 0xEC, + 0x40, 0x96, 0x1B, 0xD7, 0x93, 0xEC, 0x0F, 0x9F, 0xBA, 0xF3, 0x11, 0x93, 0x03, 0x80, 0x09, 0xB3, 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x87, 0xF3, 0x11, 0x93, 0x98, 0xEC, 0x40, 0x42, + 0x02, 0x5E, 0x0F, 0x9F, 0x87, 0xF3, 0x40, 0xF0, 0xCE, 0xF3, 0x0F, 0x9F, 0xBC, 0xF3, 0x41, 0x92, 0xC8, 0xD2, 0x0A, 0x95, 0x6C, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x11, 0x93, + 0x98, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x9A, 0xF3, 0x42, 0x96, 0x1B, 0xD7, 0x98, 0xEC, 0x0F, 0x9F, 0xBC, 0xF3, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, + 0x0F, 0x9F, 0xBC, 0xF3, 0x12, 0x45, 0x03, 0xEC, 0x02, 0x4E, 0x0F, 0x9F, 0xB4, 0xF3, 0x11, 0x93, 0xD1, 0xF7, 0x41, 0x02, 0x19, 0xD3, 0xD1, 0xF7, 0x11, 0x93, 0xD0, 0xF7, 0x09, 0xA3, 0x00, 0x08, + 0x19, 0xD3, 0xD0, 0xF7, 0x1A, 0xD5, 0x6D, 0xEC, 0x11, 0x93, 0x6D, 0xEC, 0x19, 0x25, 0x6D, 0xEC, 0x09, 0x63, 0x00, 0x80, 0x19, 0xD3, 0xF2, 0xBD, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x08, 0x0B, 0x01, 0x00, 0x40, 0xF0, 0xCE, 0xF3, 0x40, 0x92, 0xC8, 0xD2, 0x09, 0x93, 0x6C, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, + 0x01, 0x00, 0x11, 0x93, 0xCC, 0xF7, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xDE, 0xF3, 0x0A, 0x65, 0xBC, 0x69, 0x02, 0x97, 0xC3, 0x92, 0x09, 0x83, 0x00, 0x02, 0xC2, 0xD2, 0x11, 0x93, 0x94, 0xEC, + 0x19, 0xD3, 0x04, 0x80, 0x12, 0x95, 0x93, 0xEC, 0x1A, 0xD5, 0x05, 0x80, 0x09, 0x63, 0x00, 0x80, 0x01, 0x97, 0xC3, 0x96, 0x1B, 0xD7, 0x94, 0xEC, 0x40, 0x94, 0x1A, 0xD5, 0x93, 0xEC, 0x19, 0xD3, + 0xF2, 0xBD, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x09, 0x93, 0x20, 0x03, 0x19, 0xD3, 0x06, 0x82, 0x09, 0x93, 0x00, 0x01, 0x19, 0xD3, 0x03, 0x82, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0xC5, 0xD2, 0x12, 0x95, 0x04, 0x82, 0x0A, 0xB3, 0x02, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x76, 0xF4, 0x0A, 0xA3, 0x02, 0x00, + 0x19, 0xD3, 0x04, 0x82, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x28, 0xF4, 0x41, 0x96, 0xC5, 0xD6, 0x0A, 0x65, 0xBD, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, + 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0x0F, 0x9F, 0x5C, 0xF4, 0x4F, 0x96, 0x12, 0x95, 0x01, 0x82, 0x0A, 0xB3, 0x01, 0x00, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, + 0x32, 0xF4, 0x47, 0x96, 0x11, 0x93, 0x96, 0xEC, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x57, 0xF4, 0x44, 0x44, 0x02, 0x9E, 0x0F, 0x9F, 0x57, 0xF4, 0x12, 0x95, 0x00, 0x82, 0x0A, 0x05, 0xFF, 0xAF, + 0x01, 0xD4, 0xC8, 0xD6, 0x41, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0x78, 0xF7, 0x42, 0x00, 0x01, 0x96, 0xC3, 0x94, 0x01, 0xB5, 0x40, 0x44, 0x02, 0x4E, 0x0F, 0x9F, 0x57, 0xF4, 0x02, 0x92, 0x50, 0x92, + 0x19, 0xD3, 0xA2, 0xBC, 0x40, 0x92, 0x19, 0xD3, 0xA2, 0xBC, 0x0F, 0x9F, 0x5D, 0xF4, 0x0A, 0x65, 0x5E, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x41, 0x92, 0x19, 0xD3, 0x96, 0xEC, + 0x11, 0x93, 0x97, 0xEC, 0x41, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x71, 0xF4, 0x13, 0x97, 0x00, 0x82, 0x1B, 0xD7, 0x02, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x00, 0x01, + 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x97, 0xEC, 0x0F, 0x9F, 0x79, 0xF4, 0xC5, 0x96, 0x1B, 0xD7, 0x96, 0xEC, 0xC5, 0x92, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x85, 0xF4, 0x0A, 0x65, 0xEA, 0x43, + 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, 0xC2, 0xD2, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, 0x03, 0x00, 0x09, 0x05, 0x01, 0x00, 0x42, 0x02, + 0xC1, 0x96, 0xC2, 0x92, 0x03, 0x22, 0x40, 0x42, 0x02, 0xAE, 0x0F, 0x9F, 0x98, 0xF4, 0x03, 0x03, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x12, 0x95, 0x03, 0x80, 0x0A, 0xB3, + 0x00, 0x40, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xB6, 0xF4, 0x0A, 0xB7, 0x00, 0x08, 0x40, 0x46, 0x02, 0x5E, 0x0F, 0x9F, 0xB9, 0xF4, 0x11, 0x93, 0x03, 0xEC, 0x41, 0x02, 0x09, 0xB3, 0xFE, 0xFF, + 0x12, 0x95, 0x07, 0x80, 0x01, 0x45, 0x02, 0x8E, 0x0F, 0x9F, 0xB9, 0xF4, 0x41, 0x92, 0x0F, 0x9F, 0xBA, 0xF4, 0x40, 0x92, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x41, 0x20, 0x08, 0x0B, 0x01, 0x00, + 0x42, 0x92, 0xC5, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x11, 0x93, 0x77, 0xEC, 0x09, 0x43, 0xA0, 0x00, 0x02, 0x5E, 0x0F, 0x9F, 0xE4, 0xF4, + 0x09, 0x63, 0x08, 0x43, 0x0B, 0x67, 0xFF, 0x5F, 0x01, 0x95, 0xC2, 0xD6, 0x0A, 0x95, 0x7A, 0xEC, 0xD2, 0x96, 0x1B, 0xD7, 0xFA, 0xBC, 0xD2, 0x96, 0xC1, 0xD6, 0xD2, 0x92, 0x19, 0xD3, 0xFA, 0xBC, + 0x1A, 0xD5, 0x77, 0xEC, 0x0F, 0x9F, 0x03, 0xF5, 0x0B, 0x67, 0xFF, 0x6F, 0x1B, 0xD7, 0xF8, 0xBC, 0x19, 0xD3, 0xFA, 0xBC, 0x09, 0xB5, 0x00, 0xFF, 0x0A, 0x45, 0x00, 0x9B, 0x02, 0x5E, 0x0F, 0x9F, + 0xF7, 0xF4, 0x09, 0x03, 0xC9, 0x5C, 0x19, 0xD3, 0x77, 0xEC, 0x0F, 0x9F, 0x16, 0xF5, 0x0A, 0x45, 0x00, 0x99, 0x02, 0x5E, 0x0F, 0x9F, 0x07, 0xF5, 0x09, 0x03, 0x00, 0x67, 0x61, 0x93, 0x09, 0x03, + 0x17, 0xF8, 0x19, 0xD3, 0x77, 0xEC, 0x41, 0x94, 0xC5, 0xD4, 0x0F, 0x9F, 0x18, 0xF5, 0x09, 0x43, 0x10, 0x95, 0x02, 0x4E, 0x0F, 0x9F, 0x12, 0xF5, 0x11, 0x93, 0x98, 0xEC, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x18, 0xF5, 0x0B, 0x97, 0x78, 0xEC, 0x1B, 0xD7, 0x77, 0xEC, 0x41, 0x92, 0xC5, 0xD2, 0x12, 0x95, 0x77, 0xEC, 0xC8, 0xD4, 0x40, 0xF0, 0x99, 0xF7, 0x19, 0xD3, 0xF8, 0xBC, 0x11, 0x93, + 0x77, 0xEC, 0xC5, 0x96, 0x03, 0x03, 0xC1, 0x92, 0x19, 0xD3, 0xFA, 0xBC, 0x0A, 0x65, 0x52, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x48, 0xA2, 0xC2, 0xD2, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, + 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x41, 0x00, 0x41, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x43, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x06, 0x92, 0x01, 0xD2, 0x0A, 0x65, 0xF0, 0x6A, 0x0B, 0x97, + 0x78, 0xEC, 0x02, 0x99, 0xC4, 0x98, 0xD3, 0xD8, 0x02, 0xD6, 0x0A, 0x03, 0x02, 0x00, 0x01, 0x97, 0xC3, 0x98, 0x02, 0x96, 0xC3, 0xD8, 0x01, 0x96, 0xC1, 0xD6, 0x1A, 0xD5, 0x77, 0xEC, 0xC5, 0x98, + 0x14, 0x99, 0x78, 0xEC, 0xC2, 0xD8, 0x43, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x40, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0x37, 0xF5, 0x41, 0x00, 0x11, 0x93, 0x98, 0xEC, + 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x71, 0xF5, 0x42, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x6E, 0xF5, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x42, 0xA2, 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, + 0x98, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, + 0x90, 0x9A, 0x88, 0xDA, 0x64, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x11, 0x93, 0xAF, 0xBC, 0x47, 0xB2, 0x59, 0x93, 0x59, 0x93, 0x11, 0xA3, 0xBF, 0xBC, 0x21, 0xD2, 0x41, 0xB2, 0x40, 0x42, 0x02, 0x4E, + 0x0F, 0x9F, 0x95, 0xF5, 0x21, 0x92, 0x41, 0x02, 0x21, 0xD2, 0x05, 0x95, 0x40, 0x96, 0x20, 0xD6, 0x21, 0x96, 0x63, 0x93, 0x0F, 0x9F, 0xA5, 0xF5, 0x13, 0x97, 0xFC, 0xBC, 0xD2, 0xD6, 0x13, 0x97, + 0xFE, 0xBC, 0xD2, 0xD6, 0x20, 0x96, 0x42, 0x06, 0x20, 0xD6, 0x20, 0x96, 0x01, 0x47, 0x02, 0x1E, 0x0F, 0x9F, 0x9C, 0xF5, 0xC5, 0x92, 0x63, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x7E, 0xF6, 0x02, 0x8E, + 0x0F, 0x9F, 0xBC, 0xF5, 0x61, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0x53, 0xF6, 0x62, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xD1, 0xF5, 0x0F, 0x9F, 0x88, 0xF6, 0x09, 0x43, 0x28, 0x01, 0x02, 0x4E, 0x0F, 0x9F, + 0xE1, 0xF5, 0x02, 0x8E, 0x0F, 0x9F, 0xCA, 0xF5, 0x68, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE8, 0xF5, 0x0F, 0x9F, 0x88, 0xF6, 0x09, 0x43, 0x28, 0x02, 0x02, 0x4E, 0x0F, 0x9F, 0x1B, 0xF6, 0x0F, 0x9F, + 0x88, 0xF6, 0x01, 0x92, 0x19, 0xD3, 0x77, 0xEC, 0x09, 0x43, 0x10, 0x95, 0x02, 0x5E, 0x0F, 0x9F, 0x43, 0xF6, 0x11, 0x93, 0x12, 0x95, 0xC8, 0xD2, 0x40, 0xF0, 0x37, 0xF5, 0x41, 0x00, 0x0F, 0x9F, + 0x43, 0xF6, 0x09, 0x63, 0x00, 0x08, 0x19, 0xD3, 0x76, 0xEC, 0x40, 0x94, 0x1A, 0xD5, 0x75, 0xEC, 0x40, 0x96, 0x20, 0xD6, 0x11, 0x93, 0x76, 0xEC, 0x09, 0x43, 0xF4, 0xFF, 0x02, 0x8E, 0x0F, 0x9F, + 0x88, 0xF6, 0x0D, 0x07, 0x02, 0x00, 0x0D, 0x09, 0x01, 0x00, 0x04, 0x93, 0xC1, 0x94, 0x42, 0x08, 0x0A, 0xB5, 0xFF, 0x00, 0x03, 0x93, 0xC1, 0x92, 0x42, 0x06, 0x59, 0x93, 0x59, 0x93, 0x23, 0xD2, + 0x01, 0xA5, 0x11, 0x93, 0x76, 0xEC, 0xC1, 0xD4, 0x12, 0x95, 0x76, 0xEC, 0x11, 0x93, 0x75, 0xEC, 0xD2, 0x82, 0x19, 0xD3, 0x75, 0xEC, 0x1A, 0xD5, 0x76, 0xEC, 0x20, 0x92, 0x42, 0x02, 0x20, 0xD2, + 0x47, 0x42, 0x02, 0x8E, 0x0F, 0x9F, 0x88, 0xF6, 0x0A, 0x45, 0xF4, 0xFF, 0x02, 0x9E, 0x0F, 0x9F, 0xF5, 0xF5, 0x0F, 0x9F, 0x88, 0xF6, 0x11, 0x93, 0x75, 0xEC, 0x09, 0xB5, 0xFF, 0x00, 0x79, 0x93, + 0x79, 0x93, 0x01, 0x85, 0x1A, 0xD5, 0x75, 0xEC, 0x01, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0x40, 0xF6, 0x6F, 0x94, 0x1A, 0xD5, 0x05, 0x84, 0x40, 0xF1, 0x0B, 0x97, 0xF7, 0x07, 0xC8, 0xD6, 0x09, 0x63, + 0x00, 0x08, 0xC8, 0xD2, 0x40, 0x94, 0xC8, 0xD4, 0x40, 0xF0, 0x53, 0xEE, 0x43, 0xF1, 0x6D, 0x96, 0x1B, 0xD7, 0x05, 0x84, 0x41, 0x92, 0x19, 0xD3, 0x77, 0xEC, 0x43, 0x00, 0x0F, 0x9F, 0x43, 0xF6, + 0x40, 0x94, 0x1A, 0xD5, 0x77, 0xEC, 0x0A, 0x65, 0xEB, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0xC0, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xE9, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, + 0xC2, 0xD2, 0x0F, 0x9F, 0x88, 0xF6, 0x0D, 0x03, 0x04, 0x00, 0xC8, 0xD2, 0x01, 0x92, 0xC8, 0xD2, 0x40, 0xF0, 0xE5, 0xF0, 0x21, 0x94, 0x0A, 0x03, 0xF4, 0xFF, 0x61, 0x93, 0x21, 0xD2, 0x40, 0x96, + 0x20, 0xD6, 0x42, 0x00, 0x01, 0x47, 0x02, 0x0E, 0x0F, 0x9F, 0x88, 0xF6, 0x0D, 0x05, 0x06, 0x00, 0x20, 0x92, 0x05, 0x03, 0x47, 0x02, 0xC8, 0xD2, 0x02, 0x97, 0xC3, 0x92, 0x43, 0x04, 0xC8, 0xD2, + 0x22, 0xD4, 0x40, 0xF0, 0xE5, 0xF0, 0x42, 0x00, 0x20, 0x92, 0x43, 0x02, 0x20, 0xD2, 0x22, 0x94, 0x21, 0x42, 0x02, 0x1E, 0x0F, 0x9F, 0x68, 0xF6, 0x0F, 0x9F, 0x88, 0xF6, 0x02, 0x94, 0xC8, 0xD4, + 0x01, 0x96, 0xC8, 0xD6, 0x04, 0x92, 0x05, 0x94, 0x90, 0xD4, 0x40, 0xF0, 0x8B, 0xF6, 0x44, 0x00, 0x64, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x47, 0x20, 0x08, 0x0B, 0x01, 0x00, 0x0D, 0x03, + 0x0A, 0x00, 0x0A, 0x96, 0x0B, 0x98, 0x09, 0x05, 0x02, 0x00, 0xC2, 0x94, 0xC5, 0xD4, 0x43, 0x02, 0xC1, 0x92, 0x01, 0xD2, 0x02, 0xD2, 0x5F, 0x92, 0x01, 0x94, 0x02, 0x23, 0xC8, 0xD2, 0x90, 0xD8, + 0x40, 0xF0, 0x52, 0xF7, 0x43, 0x00, 0x01, 0x97, 0x02, 0x99, 0x11, 0x93, 0x80, 0x96, 0x09, 0xB5, 0x7F, 0xFF, 0x1A, 0xD5, 0x80, 0x96, 0xC5, 0x94, 0x0A, 0x83, 0xFF, 0xFF, 0x11, 0xB3, 0x2C, 0x93, + 0x09, 0xB3, 0xFB, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x01, 0x92, 0x40, 0x42, 0x02, 0x4E, 0x0F, 0x9F, 0xE5, 0xF6, 0x41, 0x94, 0xC8, 0xD4, 0x90, 0xD8, 0x40, 0xF0, 0x52, 0xF7, 0x43, 0x00, 0x01, 0x97, + 0x02, 0x99, 0x40, 0x48, 0x05, 0x3E, 0x02, 0x4E, 0x40, 0x46, 0x02, 0x0E, 0x0F, 0x9F, 0xCD, 0xF6, 0x11, 0x93, 0x2C, 0x93, 0x48, 0xA2, 0x0F, 0x9F, 0xD1, 0xF6, 0x11, 0x93, 0x2C, 0x93, 0x09, 0xB3, + 0xF7, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x03, 0x92, 0x11, 0x93, 0x2C, 0x93, 0x44, 0xA2, 0x19, 0xD3, 0x2C, 0x93, 0x09, 0xB3, 0xFB, 0xFF, 0x19, 0xD3, 0x2C, 0x93, 0x02, 0x94, 0x0A, 0x05, 0xFF, 0xFF, + 0x02, 0xD4, 0x40, 0x44, 0x02, 0x5E, 0x0F, 0x9F, 0xB9, 0xF6, 0x09, 0x63, 0xD4, 0x6C, 0x01, 0x95, 0xC2, 0x96, 0xC5, 0x94, 0x02, 0xA7, 0xC1, 0xD6, 0x01, 0x92, 0x54, 0x42, 0x02, 0x5E, 0x0F, 0x9F, + 0xF5, 0xF6, 0x0A, 0x83, 0xFF, 0xFF, 0x1B, 0xB3, 0x2C, 0x93, 0x0A, 0x65, 0x80, 0x69, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x80, 0x00, 0xC2, 0xD2, 0x47, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, + 0x08, 0x0B, 0x01, 0x00, 0x09, 0x63, 0x00, 0x40, 0x19, 0xD3, 0xF2, 0xBD, 0x40, 0xF0, 0x9A, 0xF4, 0x40, 0x42, 0x02, 0x5E, 0x0F, 0x9F, 0x10, 0xF7, 0x40, 0xF0, 0xBC, 0xF2, 0x0F, 0x9F, 0x1E, 0xF7, + 0x40, 0x96, 0xC8, 0xD6, 0x09, 0x93, 0x6C, 0xEC, 0xC8, 0xD2, 0x40, 0xF0, 0x2A, 0xEF, 0x0A, 0x65, 0xFE, 0x7F, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x42, 0x00, 0x88, 0x98, 0x90, 0x9A, + 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x0A, 0x65, 0xE8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xA3, 0x40, 0x00, 0xC2, 0xD2, 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xFB, 0xFF, + 0xC2, 0xD2, 0x40, 0x92, 0x19, 0xD3, 0x2D, 0xBC, 0x0A, 0x65, 0xD8, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x09, 0xB3, 0xBF, 0xFF, 0xC2, 0xD2, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, + 0x0A, 0x65, 0xEA, 0x43, 0x02, 0x97, 0xC3, 0x92, 0x44, 0xA2, 0xC2, 0xD2, 0x11, 0x93, 0x03, 0xEC, 0x19, 0xD3, 0x01, 0x82, 0x0A, 0x65, 0xFD, 0x7D, 0x02, 0x97, 0xC3, 0x92, 0x43, 0xA2, 0xC2, 0xD2, + 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x92, 0x04, 0x94, 0x05, 0x96, 0x40, 0xF0, 0x5C, 0xF7, 0x88, 0x98, 0x90, 0x9A, 0x03, 0x97, 0x19, 0x5E, 0x60, 0x46, 0x03, 0x0E, + 0x40, 0x94, 0x40, 0x92, 0x90, 0x9A, 0x44, 0x46, 0x05, 0x0E, 0x59, 0x93, 0x9A, 0x95, 0x44, 0x26, 0x0E, 0x5E, 0x47, 0xEE, 0x0E, 0xBD, 0xBF, 0xFF, 0x09, 0xC3, 0x00, 0x80, 0x02, 0x5E, 0x0E, 0xAD, + 0x40, 0x00, 0x41, 0x93, 0x42, 0x95, 0x01, 0x0E, 0x41, 0xA4, 0x41, 0x26, 0x4D, 0x4E, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x92, 0x04, 0x96, 0x0D, 0x5E, 0x50, 0x46, 0x02, 0x0E, + 0x40, 0x92, 0x09, 0xEE, 0x44, 0x46, 0x04, 0x0E, 0x59, 0x93, 0x44, 0x26, 0x04, 0x5E, 0x46, 0xEE, 0x41, 0x93, 0x41, 0x26, 0x43, 0x4E, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, + 0x40, 0xF0, 0xB1, 0xFE, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x88, 0x98, 0x90, 0x9A, 0x88, 0xDA, 0x08, 0x0B, 0x01, 0x00, 0x03, 0x94, 0x1A, 0xD5, 0xA0, 0xF7, 0x11, 0x93, + 0x00, 0x90, 0x88, 0x98, 0x90, 0x9A, 0x1D, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x16, 0x00, 0x21, 0x00, 0x12, 0x00, 0x09, 0x00, 0x13, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x21, 0x00, 0x2D, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xF2, 0xC2, 0xF7, 0x00, 0x00, + 0x9C, 0xF2, 0xC2, 0xF7, 0x00, 0x00, 0xE1, 0xF2, 0xBF, 0xF7, 0xC6, 0xF7, 0x00, 0x00, 0xBF, 0xF3, 0xC2, 0xF7, 0x30, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; +#endif --- linux-source-2.6.15-2.6.15.orig/drivers/usb/net/zd1211/zdpci_hotplug.c +++ linux-source-2.6.15-2.6.15/drivers/usb/net/zd1211/zdpci_hotplug.c @@ -0,0 +1,74 @@ + +#include + +#ifdef MODVERSIONS +#include +#endif +#include + +#include + +#include "zd1205.h" +#include "zddebug.h" +#include "zdpci_hotplug.h" +#include "zdversion.h" + + +/****************************************************************************** + Global variable definition section +******************************************************************************/ +MODULE_AUTHOR("Yarco Yang"); +MODULE_DESCRIPTION("ZyDAS 802.11 Wireless LAN adapter"); +MODULE_LICENSE("GPL"); + +extern struct net_device *g_dev; + +static struct pci_device_id zd1205_id_table[] = + { + { + 0x167b, 0x2102, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ZD_1202 + }, + {0x167b, 0x2100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ZD_1202}, + {0x167b, 0x2105, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ZD_1205}, + {0,} /* terminate list */ + }; + + +// register the device with the Hotplug facilities of the kernel +MODULE_DEVICE_TABLE(pci, zd1205_id_table); + + +struct pci_driver zd1205_driver = + { + .name = "zd1205", // Driver name + .id_table = zd1205_id_table, // id table + .probe = zd1205_found1, // probe function + .remove = zd1205_remove1, // remove function + }; + +/****************************************************************************** + Module initialization functions +******************************************************************************/ + + +int init_module( void ) +{ + printk(KERN_NOTICE "%s - version %s\n", DRIVER_NAME, VERSIONID); + + if (pci_register_driver(&zd1205_driver) <= 0) { + printk(KERN_ERR "%s: No devices found, driver not " + "installed.\n", DRIVER_NAME); + pci_unregister_driver(&zd1205_driver); + return -ENODEV; + } + + return 0; +} + + +void cleanup_module( void ) +{ + pci_unregister_driver(&zd1205_driver); + + printk(KERN_NOTICE "Unloaded %s \n", DRIVER_NAME); +} --- linux-source-2.6.15-2.6.15.orig/drivers/usb/media/pwc/pwc-if.c +++ linux-source-2.6.15-2.6.15/drivers/usb/media/pwc/pwc-if.c @@ -1173,12 +1173,19 @@ return 0; } + +static void pwc_cleanup(struct pwc_device *pdev) +{ + pwc_remove_sysfs_files(pdev->vdev); + video_unregister_device(pdev->vdev); +} + /* Note that all cleanup is done in the reverse order as in _open */ static int pwc_video_close(struct inode *inode, struct file *file) { struct video_device *vdev = file->private_data; struct pwc_device *pdev; - int i; + int i, hint; Trace(TRACE_OPEN, ">> video_close called(vdev = 0x%p).\n", vdev); @@ -1213,8 +1220,9 @@ pwc_isoc_cleanup(pdev); pwc_free_buffers(pdev); + lock_kernel(); /* Turn off LEDS and power down camera, but only when not unplugged */ - if (pdev->error_status != EPIPE) { + if (!pdev->unplugged) { /* Turn LEDs off */ if (pwc_set_leds(pdev, 0, 0) < 0) Info("Failed to set LED on/off time.\n"); @@ -1223,9 +1231,19 @@ if (i < 0) Err("Failed to power down camera (%d)\n", i); } + pdev->vopen = 0; + Trace(TRACE_OPEN, "<< video_close()\n"); + } else { + pwc_cleanup(pdev); + /* Free memory (don't set pdev to 0 just yet) */ + kfree(pdev); + /* search device_hint[] table if we occupy a slot, by any chance */ + for (hint = 0; hint < MAX_DEV_HINTS; hint++) + if (device_hint[hint].pdev == pdev) + device_hint[hint].pdev = NULL; } - pdev->vopen = 0; - Trace(TRACE_OPEN, "<< video_close()\n"); + unlock_kernel(); + return 0; } @@ -1742,21 +1760,21 @@ /* Alert waiting processes */ wake_up_interruptible(&pdev->frameq); /* Wait until device is closed */ - while (pdev->vopen) - schedule(); - /* Device is now closed, so we can safely unregister it */ - Trace(TRACE_PROBE, "Unregistering video device in disconnect().\n"); - pwc_remove_sysfs_files(pdev->vdev); - video_unregister_device(pdev->vdev); - - /* Free memory (don't set pdev to 0 just yet) */ - kfree(pdev); + if(pdev->vopen) { + pdev->unplugged = 1; + } else { + /* Device is closed, so we can safely unregister it */ + Trace(TRACE_PROBE, "Unregistering video device in disconnect().\n"); + pwc_cleanup(pdev); + /* Free memory (don't set pdev to 0 just yet) */ + kfree(pdev); disconnect_out: - /* search device_hint[] table if we occupy a slot, by any chance */ - for (hint = 0; hint < MAX_DEV_HINTS; hint++) - if (device_hint[hint].pdev == pdev) - device_hint[hint].pdev = NULL; + /* search device_hint[] table if we occupy a slot, by any chance */ + for (hint = 0; hint < MAX_DEV_HINTS; hint++) + if (device_hint[hint].pdev == pdev) + device_hint[hint].pdev = NULL; + } unlock_kernel(); } --- linux-source-2.6.15-2.6.15.orig/drivers/usb/media/pwc/pwc.h +++ linux-source-2.6.15-2.6.15/drivers/usb/media/pwc/pwc.h @@ -160,7 +160,8 @@ char vsnapshot; /* snapshot mode */ char vsync; /* used by isoc handler */ char vmirror; /* for ToUCaM series */ - + char unplugged; + int cmd_len; unsigned char cmd_buf[13]; --- linux-source-2.6.15-2.6.15.orig/drivers/usb/host/uhci-hub.c +++ linux-source-2.6.15-2.6.15/drivers/usb/host/uhci-hub.c @@ -99,6 +99,21 @@ } } +/* Wait for the UHCI controller in HP's iLO2 server management chip. + * It can take up to 250 us to finish a reset and set the CSC bit. + */ +static void wait_for_HP(unsigned long port_addr) +{ + int i; + + for (i = 10; i < 250; i += 10) { + if (inw(port_addr) & USBPORTSC_CSC) + return; + udelay(10); + } + /* Log a warning? */ +} + static void uhci_check_ports(struct uhci_hcd *uhci) { unsigned int port; @@ -113,6 +128,12 @@ CLR_RH_PORTSTAT(USBPORTSC_PR); udelay(10); + /* HP's server management chip requires + * a longer delay. */ + if (to_pci_dev(uhci_dev(uhci))->vendor == + PCI_VENDOR_ID_HP) + wait_for_HP(port_addr); + /* If the port was enabled before, turning * reset on caused a port enable change. * Turning reset off causes a port connect --- linux-source-2.6.15-2.6.15.orig/drivers/usb/misc/usblcd.c +++ linux-source-2.6.15-2.6.15/drivers/usb/misc/usblcd.c @@ -43,9 +43,13 @@ __u8 bulk_in_endpointAddr; /* the address of the bulk in endpoint */ __u8 bulk_out_endpointAddr; /* the address of the bulk out endpoint */ struct kref kref; + struct semaphore limit_sem; /* to stop writes at full throttle from + * using up all RAM */ }; #define to_lcd_dev(d) container_of(d, struct usb_lcd, kref) +#define USB_LCD_CONCURRENT_WRITES 5 + static struct usb_driver lcd_driver; @@ -183,12 +187,13 @@ /* free up our allocated buffer */ usb_buffer_free(urb->dev, urb->transfer_buffer_length, urb->transfer_buffer, urb->transfer_dma); + up(&dev->limit_sem); } static ssize_t lcd_write(struct file *file, const char __user * user_buffer, size_t count, loff_t *ppos) { struct usb_lcd *dev; - int retval = 0; + int retval = 0, r; struct urb *urb = NULL; char *buf = NULL; @@ -198,11 +203,15 @@ if (count == 0) goto exit; + r = down_interruptible(&dev->limit_sem); + if (r < 0) + return -EINTR; + /* create a urb, and a buffer for it, and copy the data to the urb */ urb = usb_alloc_urb(0, GFP_KERNEL); if (!urb) { retval = -ENOMEM; - goto error; + goto err_no_buf; } buf = usb_buffer_alloc(dev->udev, count, GFP_KERNEL, &urb->transfer_dma); @@ -238,6 +247,8 @@ error: usb_buffer_free(dev->udev, count, buf, urb->transfer_dma); usb_free_urb(urb); +err_no_buf: + up(&dev->limit_sem); return retval; } @@ -277,6 +288,7 @@ } memset(dev, 0x00, sizeof(*dev)); kref_init(&dev->kref); + sema_init(&dev->limit_sem, USB_LCD_CONCURRENT_WRITES); dev->udev = usb_get_dev(interface_to_usbdev(interface)); dev->interface = interface; --- linux-source-2.6.15-2.6.15.orig/drivers/video/aty/mach64_ct.c +++ linux-source-2.6.15-2.6.15/drivers/video/aty/mach64_ct.c @@ -587,7 +587,8 @@ * helps for Rage Mobilities that sometimes crash when * we switch to sclk. (Daniel Mantione, 13-05-2003) */ - for (i=0;i<=0x1ffff;i++); + for (i=0;i<=0x1ffff;i++) + barrier(); } aty_st_pll_ct(PLL_REF_DIV, pll->ct.pll_ref_div, par); --- linux-source-2.6.15-2.6.15.orig/net/bridge/br_ioctl.c +++ linux-source-2.6.15-2.6.15/net/bridge/br_ioctl.c @@ -57,12 +57,13 @@ { int num; void *buf; - size_t size = maxnum * sizeof(struct __fdb_entry); + size_t size; - if (size > PAGE_SIZE) { - size = PAGE_SIZE; + /* Clamp size to PAGE_SIZE, test maxnum to avoid overflow */ + if (maxnum > PAGE_SIZE/sizeof(struct __fdb_entry)) maxnum = PAGE_SIZE/sizeof(struct __fdb_entry); - } + + size = maxnum * sizeof(struct __fdb_entry); buf = kmalloc(size, GFP_USER); if (!buf) --- linux-source-2.6.15-2.6.15.orig/net/bridge/netfilter/ebtables.c +++ linux-source-2.6.15-2.6.15/net/bridge/netfilter/ebtables.c @@ -934,6 +934,13 @@ BUGPRINT("Entries_size never zero\n"); return -EINVAL; } + /* overflow check */ + if (tmp.nentries >= ((INT_MAX - sizeof(struct ebt_table_info)) / NR_CPUS - + SMP_CACHE_BYTES) / sizeof(struct ebt_counter)) + return -ENOMEM; + if (tmp.num_counters >= INT_MAX / sizeof(struct ebt_counter)) + return -ENOMEM; + countersize = COUNTER_OFFSET(tmp.nentries) * (highest_possible_processor_id()+1); newinfo = (struct ebt_table_info *) --- linux-source-2.6.15-2.6.15.orig/net/ieee80211_1_1_13/ieee80211_1_1_13_crypt_wep.c +++ linux-source-2.6.15-2.6.15/net/ieee80211_1_1_13/ieee80211_1_1_13_crypt_wep.c @@ -33,7 +33,8 @@ u8 key[WEP_KEY_LEN + 1]; u8 key_len; u8 key_idx; - struct crypto_tfm *tfm; + struct crypto_tfm *tx_tfm; + struct crypto_tfm *rx_tfm; }; static void *prism2_wep_init(int keyidx) @@ -46,8 +47,15 @@ memset(priv, 0, sizeof(*priv)); priv->key_idx = keyidx; - priv->tfm = crypto_alloc_tfm("arc4", 0); - if (priv->tfm == NULL) { + priv->tx_tfm = crypto_alloc_tfm("arc4", 0); + if (priv->tx_tfm == NULL) { + printk(KERN_DEBUG "ieee80211_1_1_13_crypt_wep: could not allocate " + "crypto API arc4\n"); + goto fail; + } + + priv->rx_tfm = crypto_alloc_tfm("arc4", 0); + if (priv->rx_tfm == NULL) { printk(KERN_DEBUG "ieee80211_1_1_13_crypt_wep: could not allocate " "crypto API arc4\n"); goto fail; @@ -60,8 +68,10 @@ fail: if (priv) { - if (priv->tfm) - crypto_free_tfm(priv->tfm); + if (priv->tx_tfm) + crypto_free_tfm(priv->tx_tfm); + if (priv->rx_tfm) + crypto_free_tfm(priv->rx_tfm); kfree(priv); } return NULL; @@ -70,8 +80,12 @@ static void prism2_wep_deinit(void *priv) { struct prism2_wep_data *_priv = priv; - if (_priv && _priv->tfm) - crypto_free_tfm(_priv->tfm); + if (_priv) { + if (_priv->tx_tfm) + crypto_free_tfm(_priv->tx_tfm); + if (_priv->rx_tfm) + crypto_free_tfm(_priv->rx_tfm); + } kfree(priv); } @@ -153,11 +167,11 @@ icv[2] = crc >> 16; icv[3] = crc >> 24; - crypto_cipher_setkey(wep->tfm, key, klen); + crypto_cipher_setkey(wep->tx_tfm, key, klen); sg.page = virt_to_page(pos); sg.offset = offset_in_page(pos); sg.length = len + 4; - crypto_cipher_encrypt(wep->tfm, &sg, &sg, len + 4); + crypto_cipher_encrypt(wep->tx_tfm, &sg, &sg, len + 4); return 0; } @@ -196,11 +210,11 @@ /* Apply RC4 to data and compute CRC32 over decrypted data */ plen = skb->len - hdr_len - 8; - crypto_cipher_setkey(wep->tfm, key, klen); + crypto_cipher_setkey(wep->rx_tfm, key, klen); sg.page = virt_to_page(pos); sg.offset = offset_in_page(pos); sg.length = plen + 4; - crypto_cipher_decrypt(wep->tfm, &sg, &sg, plen + 4); + crypto_cipher_decrypt(wep->rx_tfm, &sg, &sg, plen + 4); crc = ~crc32_le(~0, pos, plen); icv[0] = crc; --- linux-source-2.6.15-2.6.15.orig/net/ieee80211_1_1_13/ieee80211_1_1_13_crypt_tkip.c +++ linux-source-2.6.15-2.6.15/net/ieee80211_1_1_13/ieee80211_1_1_13_crypt_tkip.c @@ -53,8 +53,10 @@ int key_idx; - struct crypto_tfm *tfm_arc4; - struct crypto_tfm *tfm_michael; + struct crypto_tfm *tx_tfm_arc4; + struct crypto_tfm *tx_tfm_michael; + struct crypto_tfm *rx_tfm_arc4; + struct crypto_tfm *rx_tfm_michael; /* scratch buffers for virt_to_page() (crypto API) */ u8 rx_hdr[16], tx_hdr[16]; @@ -86,15 +88,29 @@ priv->key_idx = key_idx; - priv->tfm_arc4 = crypto_alloc_tfm("arc4", 0); - if (priv->tfm_arc4 == NULL) { + priv->tx_tfm_arc4 = crypto_alloc_tfm("arc4", 0); + if (priv->tx_tfm_arc4 == NULL) { printk(KERN_DEBUG "ieee80211_1_1_13_crypt_tkip: could not allocate " "crypto API arc4\n"); goto fail; } - priv->tfm_michael = crypto_alloc_tfm("michael_mic", 0); - if (priv->tfm_michael == NULL) { + priv->tx_tfm_michael = crypto_alloc_tfm("michael_mic", 0); + if (priv->tx_tfm_michael == NULL) { + printk(KERN_DEBUG "ieee80211_1_1_13_crypt_tkip: could not allocate " + "crypto API michael_mic\n"); + goto fail; + } + + priv->rx_tfm_arc4 = crypto_alloc_tfm("arc4", 0); + if (priv->rx_tfm_arc4 == NULL) { + printk(KERN_DEBUG "ieee80211_1_1_13_crypt_tkip: could not allocate " + "crypto API arc4\n"); + goto fail; + } + + priv->rx_tfm_michael = crypto_alloc_tfm("michael_mic", 0); + if (priv->rx_tfm_michael == NULL) { printk(KERN_DEBUG "ieee80211_1_1_13_crypt_tkip: could not allocate " "crypto API michael_mic\n"); goto fail; @@ -104,10 +120,14 @@ fail: if (priv) { - if (priv->tfm_michael) - crypto_free_tfm(priv->tfm_michael); - if (priv->tfm_arc4) - crypto_free_tfm(priv->tfm_arc4); + if (priv->tx_tfm_michael) + crypto_free_tfm(priv->tx_tfm_michael); + if (priv->tx_tfm_arc4) + crypto_free_tfm(priv->tx_tfm_arc4); + if (priv->rx_tfm_michael) + crypto_free_tfm(priv->rx_tfm_michael); + if (priv->rx_tfm_arc4) + crypto_free_tfm(priv->rx_tfm_arc4); kfree(priv); } @@ -117,10 +137,16 @@ static void ieee80211_1_1_13_tkip_deinit(void *priv) { struct ieee80211_1_1_13_tkip_data *_priv = priv; - if (_priv && _priv->tfm_michael) - crypto_free_tfm(_priv->tfm_michael); - if (_priv && _priv->tfm_arc4) - crypto_free_tfm(_priv->tfm_arc4); + if (_priv) { + if (_priv->tx_tfm_michael) + crypto_free_tfm(_priv->tx_tfm_michael); + if (_priv->tx_tfm_arc4) + crypto_free_tfm(_priv->tx_tfm_arc4); + if (_priv->rx_tfm_michael) + crypto_free_tfm(_priv->rx_tfm_michael); + if (_priv->rx_tfm_arc4) + crypto_free_tfm(_priv->rx_tfm_arc4); + } kfree(priv); } @@ -352,11 +378,11 @@ icv[2] = crc >> 16; icv[3] = crc >> 24; - crypto_cipher_setkey(tkey->tfm_arc4, rc4key, 16); + crypto_cipher_setkey(tkey->tx_tfm_arc4, rc4key, 16); sg.page = virt_to_page(pos); sg.offset = offset_in_page(pos); sg.length = len + 4; - crypto_cipher_encrypt(tkey->tfm_arc4, &sg, &sg, len + 4); + crypto_cipher_encrypt(tkey->tx_tfm_arc4, &sg, &sg, len + 4); return 0; } @@ -447,11 +473,11 @@ plen = skb->len - hdr_len - 12; - crypto_cipher_setkey(tkey->tfm_arc4, rc4key, 16); + crypto_cipher_setkey(tkey->rx_tfm_arc4, rc4key, 16); sg.page = virt_to_page(pos); sg.offset = offset_in_page(pos); sg.length = plen + 4; - crypto_cipher_decrypt(tkey->tfm_arc4, &sg, &sg, plen + 4); + crypto_cipher_decrypt(tkey->rx_tfm_arc4, &sg, &sg, plen + 4); crc = ~crc32_le(~0, pos, plen); icv[0] = crc; @@ -485,12 +511,12 @@ return keyidx; } -static int michael_mic(struct ieee80211_1_1_13_tkip_data *tkey, u8 * key, u8 * hdr, +static int michael_mic(struct crypto_tfm *tfm_michael, u8 * key, u8 * hdr, u8 * data, size_t data_len, u8 * mic) { struct scatterlist sg[2]; - if (tkey->tfm_michael == NULL) { + if (tfm_michael == NULL) { printk(KERN_WARNING "michael_mic: tfm_michael == NULL\n"); return -1; } @@ -502,10 +528,10 @@ sg[1].offset = offset_in_page(data); sg[1].length = data_len; - crypto_digest_init(tkey->tfm_michael); - crypto_digest_setkey(tkey->tfm_michael, key, 8); - crypto_digest_update(tkey->tfm_michael, sg, 2); - crypto_digest_final(tkey->tfm_michael, mic); + crypto_digest_init(tfm_michael); + crypto_digest_setkey(tfm_michael, key, 8); + crypto_digest_update(tfm_michael, sg, 2); + crypto_digest_final(tfm_michael, mic); return 0; } @@ -563,7 +589,7 @@ michael_mic_hdr(skb, tkey->tx_hdr); pos = skb_put(skb, 8); - if (michael_mic(tkey, &tkey->key[16], tkey->tx_hdr, + if (michael_mic(tkey->tx_tfm_michael, &tkey->key[16], tkey->tx_hdr, skb->data + hdr_len, skb->len - 8 - hdr_len, pos)) return -1; @@ -625,7 +651,7 @@ return -1; michael_mic_hdr(skb, tkey->rx_hdr); - if (michael_mic(tkey, &tkey->key[24], tkey->rx_hdr, + if (michael_mic(tkey->rx_tfm_michael, &tkey->key[24], tkey->rx_hdr, skb->data + hdr_len, skb->len - 8 - hdr_len, mic)) return -1; if (memcmp(mic, skb->data + skb->len - 8, 8) != 0) { @@ -655,14 +681,18 @@ { struct ieee80211_1_1_13_tkip_data *tkey = priv; int keyidx; - struct crypto_tfm *tfm = tkey->tfm_michael; - struct crypto_tfm *tfm2 = tkey->tfm_arc4; + struct crypto_tfm *tfm = tkey->tx_tfm_michael; + struct crypto_tfm *tfm2 = tkey->tx_tfm_arc4; + struct crypto_tfm *tfm3 = tkey->rx_tfm_michael; + struct crypto_tfm *tfm4 = tkey->rx_tfm_arc4; keyidx = tkey->key_idx; memset(tkey, 0, sizeof(*tkey)); tkey->key_idx = keyidx; - tkey->tfm_michael = tfm; - tkey->tfm_arc4 = tfm2; + tkey->tx_tfm_michael = tfm; + tkey->tx_tfm_arc4 = tfm2; + tkey->rx_tfm_michael = tfm3; + tkey->rx_tfm_arc4 = tfm4; if (len == TKIP_KEY_LEN) { memcpy(tkey->key, key, TKIP_KEY_LEN); tkey->key_set = 1; --- linux-source-2.6.15-2.6.15.orig/net/ipv6/addrconf.c +++ linux-source-2.6.15-2.6.15/net/ipv6/addrconf.c @@ -168,6 +168,7 @@ .max_desync_factor = MAX_DESYNC_FACTOR, #endif .max_addresses = IPV6_MAX_ADDRESSES, + .accept_source_route = 0, /* we do not accept RH0 by default. */ }; static struct ipv6_devconf ipv6_devconf_dflt = { @@ -189,6 +190,7 @@ .max_desync_factor = MAX_DESYNC_FACTOR, #endif .max_addresses = IPV6_MAX_ADDRESSES, + .accept_source_route = 0, /* we do not accept RH0 by default. */ }; /* IPv6 Wildcard Address and Loopback Address defined by RFC2553 */ @@ -3132,6 +3134,7 @@ array[DEVCONF_MAX_DESYNC_FACTOR] = cnf->max_desync_factor; #endif array[DEVCONF_MAX_ADDRESSES] = cnf->max_addresses; + array[DEVCONF_ACCEPT_SOURCE_ROUTE] = cnf->accept_source_route; } static int inet6_fill_ifinfo(struct sk_buff *skb, struct inet6_dev *idev, @@ -3589,6 +3592,14 @@ .proc_handler = &proc_dointvec, }, { + .ctl_name = NET_IPV6_ACCEPT_SOURCE_ROUTE, + .procname = "accept_source_route", + .data = &ipv6_devconf.accept_source_route, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = &proc_dointvec, + }, + { .ctl_name = 0, /* sentinel */ } }, --- linux-source-2.6.15-2.6.15.orig/net/ipv6/exthdrs.c +++ linux-source-2.6.15-2.6.15/net/ipv6/exthdrs.c @@ -221,10 +221,26 @@ struct inet6_skb_parm *opt = IP6CB(skb); struct in6_addr *addr; struct in6_addr daddr; + struct inet6_dev *idev; int n, i; struct ipv6_rt_hdr *hdr; struct rt0_hdr *rthdr; + int accept_source_route = ipv6_devconf.accept_source_route; + + if (accept_source_route == 0 || + ((idev = in6_dev_get(skb->dev)) == NULL)) { + kfree_skb(skb); + return -1; + } + + if (idev->cnf.accept_source_route == 0) { + in6_dev_put(idev); + kfree_skb(skb); + return -1; + } + + in6_dev_put(idev); if (!pskb_may_pull(skb, (skb->h.raw-skb->data)+8) || !pskb_may_pull(skb, (skb->h.raw-skb->data)+((skb->h.raw[1]+1)<<3))) { @@ -235,6 +251,12 @@ hdr = (struct ipv6_rt_hdr *) skb->h.raw; + if (hdr->type != IPV6_SRCRT_TYPE_0) { + IP6_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS); + icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, (&hdr->type) - skb->nh.raw); + return -1; + } + if (ipv6_addr_is_multicast(&skb->nh.ipv6h->daddr) || skb->pkt_type != PACKET_HOST) { IP6_INC_STATS_BH(IPSTATS_MIB_INADDRERRORS); @@ -253,12 +275,6 @@ return 1; } - if (hdr->type != IPV6_SRCRT_TYPE_0) { - IP6_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS); - icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, (&hdr->type) - skb->nh.raw); - return -1; - } - if (hdr->hdrlen & 0x01) { IP6_INC_STATS_BH(IPSTATS_MIB_INHDRERRORS); icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, (&hdr->hdrlen) - skb->nh.raw); --- linux-source-2.6.15-2.6.15.orig/net/ipv6/tcp_ipv6.c +++ linux-source-2.6.15-2.6.15/net/ipv6/tcp_ipv6.c @@ -1342,6 +1342,7 @@ First: no IPv4 options. */ newinet->opt = NULL; + newnp->ipv6_fl_list = NULL; /* Clone RX bits */ newnp->rxopt.all = np->rxopt.all; --- linux-source-2.6.15-2.6.15.orig/net/ipv6/ip6_flowlabel.c +++ linux-source-2.6.15-2.6.15/net/ipv6/ip6_flowlabel.c @@ -586,6 +586,8 @@ while (!fl) { if (++state->bucket <= FL_HASH_MASK) fl = fl_ht[state->bucket]; + else + break; } return fl; } --- linux-source-2.6.15-2.6.15.orig/net/ipv6/ipv6_sockglue.c +++ linux-source-2.6.15-2.6.15/net/ipv6/ipv6_sockglue.c @@ -307,7 +307,7 @@ } /* routing header option needs extra check */ - if (optname == IPV6_RTHDR && opt->srcrt) { + if (optname == IPV6_RTHDR && opt && opt->srcrt) { struct ipv6_rt_hdr *rthdr = opt->srcrt; if (rthdr->type) goto sticky_done; @@ -628,11 +628,15 @@ return -EINVAL; } -static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_opt_hdr *hdr, +static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_txoptions *opt, char __user *optval, int len) { - if (!hdr) + struct ipv6_opt_hdr *hdr; + + if (!opt || !opt->hopopt) return 0; + hdr = opt->hopopt; + len = min_t(int, len, ipv6_optlen(hdr)); if (copy_to_user(optval, hdr, ipv6_optlen(hdr))) return -EFAULT; @@ -776,7 +780,7 @@ { lock_sock(sk); - len = ipv6_getsockopt_sticky(sk, np->opt->hopopt, + len = ipv6_getsockopt_sticky(sk, np->opt, optval, len); release_sock(sk); return put_user(len, optlen); --- linux-source-2.6.15-2.6.15.orig/net/ipv6/sit.c +++ linux-source-2.6.15-2.6.15/net/ipv6/sit.c @@ -394,10 +394,10 @@ return 0; } - icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PROT_UNREACH, 0); - kfree_skb(skb); + icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); read_unlock(&ipip6_lock); out: + kfree_skb(skb); return 0; } --- linux-source-2.6.15-2.6.15.orig/net/ipv6/netfilter/ip6t_esp.c +++ linux-source-2.6.15-2.6.15/net/ipv6/netfilter/ip6t_esp.c @@ -55,7 +55,7 @@ /* Make sure this isn't an evil packet */ /*DEBUGP("ipv6_esp entered \n");*/ - if (ipv6_find_hdr(skb, &ptr, NEXTHDR_ESP) < 0) + if (ipv6_find_hdr(skb, &ptr, NEXTHDR_ESP, NULL) < 0) return 0; eh = skb_header_pointer(skb, ptr, sizeof(_esp), &_esp); --- linux-source-2.6.15-2.6.15.orig/net/ipv6/netfilter/ip6t_rt.c +++ linux-source-2.6.15-2.6.15/net/ipv6/netfilter/ip6t_rt.c @@ -50,16 +50,21 @@ unsigned int protoff, int *hotdrop) { - struct ipv6_rt_hdr _route, *rh; - const struct ip6t_rt *rtinfo = matchinfo; - unsigned int temp; - unsigned int ptr; - unsigned int hdrlen = 0; - unsigned int ret = 0; - struct in6_addr *ap, _addr; - - if (ipv6_find_hdr(skb, &ptr, NEXTHDR_ROUTING) < 0) + struct ipv6_rt_hdr _route, *rh; + const struct ip6t_rt *rtinfo = matchinfo; + unsigned int temp; + unsigned int ptr; + unsigned int hdrlen = 0; + unsigned int ret = 0; + struct in6_addr *ap, _addr; + int err; + + err = ipv6_find_hdr(skb, &ptr, NEXTHDR_ROUTING, NULL); + if (err < 0) { + if (err != -ENOENT) + *hotdrop = 1; return 0; + } rh = skb_header_pointer(skb, ptr, sizeof(_route), &_route); if (rh == NULL){ --- linux-source-2.6.15-2.6.15.orig/net/ipv6/netfilter/ip6t_frag.c +++ linux-source-2.6.15-2.6.15/net/ipv6/netfilter/ip6t_frag.c @@ -48,12 +48,17 @@ unsigned int protoff, int *hotdrop) { - struct frag_hdr _frag, *fh; - const struct ip6t_frag *fraginfo = matchinfo; - unsigned int ptr; - - if (ipv6_find_hdr(skb, &ptr, NEXTHDR_FRAGMENT) < 0) + struct frag_hdr _frag, *fh; + const struct ip6t_frag *fraginfo = matchinfo; + unsigned int ptr; + int err; + + err = ipv6_find_hdr(skb, &ptr, NEXTHDR_FRAGMENT, NULL); + if (err < 0) { + if (err != -ENOENT) + *hotdrop = 1; return 0; + } fh = skb_header_pointer(skb, ptr, sizeof(_frag), &_frag); if (fh == NULL){ --- linux-source-2.6.15-2.6.15.orig/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c +++ linux-source-2.6.15-2.6.15/net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c @@ -260,6 +260,7 @@ } nf_conntrack_get(reasm->nfct); (*pskb)->nfct = reasm->nfct; + (*pskb)->nfctinfo = reasm->nfctinfo; return NF_ACCEPT; } --- linux-source-2.6.15-2.6.15.orig/net/ipv6/netfilter/ip6_tables.c +++ linux-source-2.6.15-2.6.15/net/ipv6/netfilter/ip6_tables.c @@ -160,7 +160,7 @@ const char *outdev, const struct ip6t_ip6 *ip6info, unsigned int *protoff, - int *fragoff) + int *fragoff, int *hotdrop) { size_t i; unsigned long ret; @@ -214,69 +214,23 @@ /* look for the desired protocol header */ if((ip6info->flags & IP6T_F_PROTO)) { - u_int8_t currenthdr = ipv6->nexthdr; - struct ipv6_opt_hdr _hdr, *hp; - u_int16_t ptr; /* Header offset in skb */ - u_int16_t hdrlen; /* Header */ - u_int16_t _fragoff = 0, *fp = NULL; - - ptr = IPV6_HDR_LEN; - - while (ip6t_ext_hdr(currenthdr)) { - /* Is there enough space for the next ext header? */ - if (skb->len - ptr < IPV6_OPTHDR_LEN) - return 0; - - /* NONE or ESP: there isn't protocol part */ - /* If we want to count these packets in '-p all', - * we will change the return 0 to 1*/ - if ((currenthdr == IPPROTO_NONE) || - (currenthdr == IPPROTO_ESP)) - break; - - hp = skb_header_pointer(skb, ptr, sizeof(_hdr), &_hdr); - BUG_ON(hp == NULL); + int protohdr; + unsigned short _frag_off; - /* Size calculation */ - if (currenthdr == IPPROTO_FRAGMENT) { - fp = skb_header_pointer(skb, - ptr+offsetof(struct frag_hdr, - frag_off), - sizeof(_fragoff), - &_fragoff); - if (fp == NULL) - return 0; - - _fragoff = ntohs(*fp) & ~0x7; - hdrlen = 8; - } else if (currenthdr == IPPROTO_AH) - hdrlen = (hp->hdrlen+2)<<2; - else - hdrlen = ipv6_optlen(hp); - - currenthdr = hp->nexthdr; - ptr += hdrlen; - /* ptr is too large */ - if ( ptr > skb->len ) - return 0; - if (_fragoff) { - if (ip6t_ext_hdr(currenthdr)) - return 0; - break; - } + protohdr = ipv6_find_hdr(skb, protoff, -1, &_frag_off); + if (protohdr < 0) { + if (_frag_off == 0) + *hotdrop = 1; + return 0; } - - *protoff = ptr; - *fragoff = _fragoff; - - /* currenthdr contains the protocol header */ + *fragoff = _frag_off; dprintf("Packet protocol %hi ?= %s%hi.\n", - currenthdr, + protohdr, ip6info->invflags & IP6T_INV_PROTO ? "!":"", ip6info->proto); - if (ip6info->proto == currenthdr) { + if (ip6info->proto == protohdr) { if(ip6info->invflags & IP6T_INV_PROTO) { return 0; } @@ -400,7 +354,7 @@ IP_NF_ASSERT(e); IP_NF_ASSERT(back); if (ip6_packet_match(*pskb, indev, outdev, &e->ipv6, - &protoff, &offset)) { + &protoff, &offset, &hotdrop)) { struct ip6t_entry_target *t; if (IP6T_MATCH_ITERATE(e, do_match, @@ -1344,7 +1298,7 @@ } write_lock_bh(&t->lock); - if (t->private->number != paddc->num_counters) { + if (t->private->number != tmp.num_counters) { ret = -EINVAL; goto unlock_up_free; } @@ -2035,29 +1989,45 @@ } /* - * find specified header up to transport protocol header. - * If found target header, the offset to the header is set to *offset - * and return 0. otherwise, return -1. + * find the offset to specified header or the protocol number of last header + * if target < 0. "last header" is transport protocol header, ESP, or + * "No next header". + * + * If target header is found, its offset is set in *offset and return protocol + * number. Otherwise, return -1. + * + * If the first fragment doesn't contain the final protocol header or + * NEXTHDR_NONE it is considered invalid. + * + * Note that non-1st fragment is special case that "the protocol number + * of last header" is "next header" field in Fragment header. In this case, + * *offset is meaningless and fragment offset is stored in *fragoff if fragoff + * isn't NULL. * - * Notes: - non-1st Fragment Header isn't skipped. - * - ESP header isn't skipped. - * - The target header may be trancated. */ -int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset, u8 target) +int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset, + int target, unsigned short *fragoff) { unsigned int start = (u8*)(skb->nh.ipv6h + 1) - skb->data; u8 nexthdr = skb->nh.ipv6h->nexthdr; unsigned int len = skb->len - start; + if (fragoff) + *fragoff = 0; + while (nexthdr != target) { struct ipv6_opt_hdr _hdr, *hp; unsigned int hdrlen; - if ((!ipv6_ext_hdr(nexthdr)) || nexthdr == NEXTHDR_NONE) - return -1; + if ((!ipv6_ext_hdr(nexthdr)) || nexthdr == NEXTHDR_NONE) { + if (target < 0) + break; + return -ENOENT; + } + hp = skb_header_pointer(skb, start, sizeof(_hdr), &_hdr); if (hp == NULL) - return -1; + return -EBADMSG; if (nexthdr == NEXTHDR_FRAGMENT) { unsigned short _frag_off, *fp; fp = skb_header_pointer(skb, @@ -2066,10 +2036,19 @@ sizeof(_frag_off), &_frag_off); if (fp == NULL) - return -1; + return -EBADMSG; - if (ntohs(*fp) & ~0x7) - return -1; + _frag_off = ntohs(*fp) & ~0x7; + if (_frag_off) { + if (target < 0 && + ((!ipv6_ext_hdr(hp->nexthdr)) || + nexthdr == NEXTHDR_NONE)) { + if (fragoff) + *fragoff = _frag_off; + return hp->nexthdr; + } + return -ENOENT; + } hdrlen = 8; } else if (nexthdr == NEXTHDR_AUTH) hdrlen = (hp->hdrlen + 2) << 2; @@ -2082,7 +2061,7 @@ } *offset = start; - return 0; + return nexthdr; } EXPORT_SYMBOL(ip6t_register_table); --- linux-source-2.6.15-2.6.15.orig/net/ipv6/netfilter/ip6t_dst.c +++ linux-source-2.6.15-2.6.15/net/ipv6/netfilter/ip6t_dst.c @@ -71,9 +71,9 @@ unsigned int optlen; #if HOPBYHOP - if (ipv6_find_hdr(skb, &ptr, NEXTHDR_HOP) < 0) + if (ipv6_find_hdr(skb, &ptr, NEXTHDR_HOP, NULL) < 0) #else - if (ipv6_find_hdr(skb, &ptr, NEXTHDR_DEST) < 0) + if (ipv6_find_hdr(skb, &ptr, NEXTHDR_DEST, NULL) < 0) #endif return 0; --- linux-source-2.6.15-2.6.15.orig/net/ipv6/netfilter/ip6t_ah.c +++ linux-source-2.6.15-2.6.15/net/ipv6/netfilter/ip6t_ah.c @@ -52,9 +52,14 @@ const struct ip6t_ah *ahinfo = matchinfo; unsigned int ptr; unsigned int hdrlen = 0; + int err; - if (ipv6_find_hdr(skb, &ptr, NEXTHDR_AUTH) < 0) + err = ipv6_find_hdr(skb, &ptr, NEXTHDR_AUTH, NULL); + if (err < 0) { + if (err != -ENOENT) + *hotdrop = 1; return 0; + } ah = skb_header_pointer(skb, ptr, sizeof(_ah), &_ah); if (ah == NULL) { --- linux-source-2.6.15-2.6.15.orig/net/ipv6/netfilter/ip6t_hbh.c +++ linux-source-2.6.15-2.6.15/net/ipv6/netfilter/ip6t_hbh.c @@ -60,22 +60,27 @@ unsigned int protoff, int *hotdrop) { - struct ipv6_opt_hdr _optsh, *oh; - const struct ip6t_opts *optinfo = matchinfo; - unsigned int temp; - unsigned int ptr; - unsigned int hdrlen = 0; - unsigned int ret = 0; - u8 _opttype, *tp = NULL; - u8 _optlen, *lp = NULL; - unsigned int optlen; - + struct ipv6_opt_hdr _optsh, *oh; + const struct ip6t_opts *optinfo = matchinfo; + unsigned int temp; + unsigned int ptr; + unsigned int hdrlen = 0; + unsigned int ret = 0; + u8 _opttype, *tp = NULL; + u8 _optlen, *lp = NULL; + unsigned int optlen; + int err; + #if HOPBYHOP - if (ipv6_find_hdr(skb, &ptr, NEXTHDR_HOP) < 0) + err = ipv6_find_hdr(skb, &ptr, NEXTHDR_HOP, NULL); #else - if (ipv6_find_hdr(skb, &ptr, NEXTHDR_DEST) < 0) + err = ipv6_find_hdr(skb, &ptr, NEXTHDR_DEST, NULL); #endif + if (err < 0) { + if (err != -ENOENT) + *hotdrop = 1; return 0; + } oh = skb_header_pointer(skb, ptr, sizeof(_optsh), &_optsh); if (oh == NULL){ --- linux-source-2.6.15-2.6.15.orig/net/ipv6/esp6.c +++ linux-source-2.6.15-2.6.15/net/ipv6/esp6.c @@ -143,7 +143,7 @@ unsigned char *tmp_hdr = NULL; int ret = 0; - if (!pskb_may_pull(skb, sizeof(struct ipv6_esp_hdr))) { + if (!pskb_may_pull(skb, sizeof(struct ipv6_esp_hdr) + esp->conf.ivlen)) { ret = -EINVAL; goto out_nofree; } --- linux-source-2.6.15-2.6.15.orig/net/ieee80211/ieee80211_crypt_wep.c +++ linux-source-2.6.15-2.6.15/net/ieee80211/ieee80211_crypt_wep.c @@ -33,7 +33,8 @@ u8 key[WEP_KEY_LEN + 1]; u8 key_len; u8 key_idx; - struct crypto_tfm *tfm; + struct crypto_tfm *tx_tfm; + struct crypto_tfm *rx_tfm; }; static void *prism2_wep_init(int keyidx) @@ -46,13 +47,19 @@ memset(priv, 0, sizeof(*priv)); priv->key_idx = keyidx; - priv->tfm = crypto_alloc_tfm("arc4", 0); - if (priv->tfm == NULL) { + priv->tx_tfm = crypto_alloc_tfm("arc4", 0); + if (priv->tx_tfm == NULL) { printk(KERN_DEBUG "ieee80211_crypt_wep: could not allocate " "crypto API arc4\n"); goto fail; } + priv->rx_tfm = crypto_alloc_tfm("arc4", 0); + if (priv->rx_tfm == NULL) { + printk(KERN_DEBUG "ieee80211_crypt_wep: could not allocate " + "crypto API arc4\n"); + goto fail; + } /* start WEP IV from a random value */ get_random_bytes(&priv->iv, 4); @@ -60,8 +67,10 @@ fail: if (priv) { - if (priv->tfm) - crypto_free_tfm(priv->tfm); + if (priv->tx_tfm) + crypto_free_tfm(priv->tx_tfm); + if (priv->rx_tfm) + crypto_free_tfm(priv->rx_tfm); kfree(priv); } return NULL; @@ -70,8 +79,12 @@ static void prism2_wep_deinit(void *priv) { struct prism2_wep_data *_priv = priv; - if (_priv && _priv->tfm) - crypto_free_tfm(_priv->tfm); + if (_priv) { + if (_priv->tx_tfm) + crypto_free_tfm(_priv->tx_tfm); + if (_priv->rx_tfm) + crypto_free_tfm(_priv->rx_tfm); + } kfree(priv); } @@ -153,11 +166,11 @@ icv[2] = crc >> 16; icv[3] = crc >> 24; - crypto_cipher_setkey(wep->tfm, key, klen); + crypto_cipher_setkey(wep->tx_tfm, key, klen); sg.page = virt_to_page(pos); sg.offset = offset_in_page(pos); sg.length = len + 4; - crypto_cipher_encrypt(wep->tfm, &sg, &sg, len + 4); + crypto_cipher_encrypt(wep->tx_tfm, &sg, &sg, len + 4); return 0; } @@ -196,11 +209,11 @@ /* Apply RC4 to data and compute CRC32 over decrypted data */ plen = skb->len - hdr_len - 8; - crypto_cipher_setkey(wep->tfm, key, klen); + crypto_cipher_setkey(wep->rx_tfm, key, klen); sg.page = virt_to_page(pos); sg.offset = offset_in_page(pos); sg.length = plen + 4; - crypto_cipher_decrypt(wep->tfm, &sg, &sg, plen + 4); + crypto_cipher_decrypt(wep->rx_tfm, &sg, &sg, plen + 4); crc = ~crc32_le(~0, pos, plen); icv[0] = crc; --- linux-source-2.6.15-2.6.15.orig/net/ieee80211/ieee80211_crypt_tkip.c +++ linux-source-2.6.15-2.6.15/net/ieee80211/ieee80211_crypt_tkip.c @@ -53,8 +53,10 @@ int key_idx; - struct crypto_tfm *tfm_arc4; - struct crypto_tfm *tfm_michael; + struct crypto_tfm *tx_tfm_arc4; + struct crypto_tfm *tx_tfm_michael; + struct crypto_tfm *rx_tfm_arc4; + struct crypto_tfm *rx_tfm_michael; /* scratch buffers for virt_to_page() (crypto API) */ u8 rx_hdr[16], tx_hdr[16]; @@ -86,15 +88,29 @@ priv->key_idx = key_idx; - priv->tfm_arc4 = crypto_alloc_tfm("arc4", 0); - if (priv->tfm_arc4 == NULL) { + priv->tx_tfm_arc4 = crypto_alloc_tfm("arc4", 0); + if (priv->tx_tfm_arc4 == NULL) { printk(KERN_DEBUG "ieee80211_crypt_tkip: could not allocate " "crypto API arc4\n"); goto fail; } - priv->tfm_michael = crypto_alloc_tfm("michael_mic", 0); - if (priv->tfm_michael == NULL) { + priv->tx_tfm_michael = crypto_alloc_tfm("michael_mic", 0); + if (priv->tx_tfm_michael == NULL) { + printk(KERN_DEBUG "ieee80211_crypt_tkip: could not allocate " + "crypto API michael_mic\n"); + goto fail; + } + + priv->rx_tfm_arc4 = crypto_alloc_tfm("arc4", 0); + if (priv->rx_tfm_arc4 == NULL) { + printk(KERN_DEBUG "ieee80211_crypt_tkip: could not allocate " + "crypto API arc4\n"); + goto fail; + } + + priv->rx_tfm_michael = crypto_alloc_tfm("michael_mic", 0); + if (priv->rx_tfm_michael == NULL) { printk(KERN_DEBUG "ieee80211_crypt_tkip: could not allocate " "crypto API michael_mic\n"); goto fail; @@ -104,10 +120,14 @@ fail: if (priv) { - if (priv->tfm_michael) - crypto_free_tfm(priv->tfm_michael); - if (priv->tfm_arc4) - crypto_free_tfm(priv->tfm_arc4); + if (priv->tx_tfm_michael) + crypto_free_tfm(priv->tx_tfm_michael); + if (priv->tx_tfm_arc4) + crypto_free_tfm(priv->tx_tfm_arc4); + if (priv->rx_tfm_michael) + crypto_free_tfm(priv->rx_tfm_michael); + if (priv->rx_tfm_arc4) + crypto_free_tfm(priv->rx_tfm_arc4); kfree(priv); } @@ -117,10 +137,16 @@ static void ieee80211_tkip_deinit(void *priv) { struct ieee80211_tkip_data *_priv = priv; - if (_priv && _priv->tfm_michael) - crypto_free_tfm(_priv->tfm_michael); - if (_priv && _priv->tfm_arc4) - crypto_free_tfm(_priv->tfm_arc4); + if (_priv) { + if (_priv->tx_tfm_michael) + crypto_free_tfm(_priv->tx_tfm_michael); + if (_priv->tx_tfm_arc4) + crypto_free_tfm(_priv->tx_tfm_arc4); + if (_priv->rx_tfm_michael) + crypto_free_tfm(_priv->rx_tfm_michael); + if (_priv->rx_tfm_arc4) + crypto_free_tfm(_priv->rx_tfm_arc4); + } kfree(priv); } @@ -352,11 +378,11 @@ icv[2] = crc >> 16; icv[3] = crc >> 24; - crypto_cipher_setkey(tkey->tfm_arc4, rc4key, 16); + crypto_cipher_setkey(tkey->tx_tfm_arc4, rc4key, 16); sg.page = virt_to_page(pos); sg.offset = offset_in_page(pos); sg.length = len + 4; - crypto_cipher_encrypt(tkey->tfm_arc4, &sg, &sg, len + 4); + crypto_cipher_encrypt(tkey->tx_tfm_arc4, &sg, &sg, len + 4); return 0; } @@ -435,11 +461,11 @@ plen = skb->len - hdr_len - 12; - crypto_cipher_setkey(tkey->tfm_arc4, rc4key, 16); + crypto_cipher_setkey(tkey->rx_tfm_arc4, rc4key, 16); sg.page = virt_to_page(pos); sg.offset = offset_in_page(pos); sg.length = plen + 4; - crypto_cipher_decrypt(tkey->tfm_arc4, &sg, &sg, plen + 4); + crypto_cipher_decrypt(tkey->rx_tfm_arc4, &sg, &sg, plen + 4); crc = ~crc32_le(~0, pos, plen); icv[0] = crc; @@ -473,12 +499,12 @@ return keyidx; } -static int michael_mic(struct ieee80211_tkip_data *tkey, u8 * key, u8 * hdr, +static int michael_mic(struct crypto_tfm *tfm_michael, u8 * key, u8 * hdr, u8 * data, size_t data_len, u8 * mic) { struct scatterlist sg[2]; - if (tkey->tfm_michael == NULL) { + if (tfm_michael == NULL) { printk(KERN_WARNING "michael_mic: tfm_michael == NULL\n"); return -1; } @@ -490,10 +516,10 @@ sg[1].offset = offset_in_page(data); sg[1].length = data_len; - crypto_digest_init(tkey->tfm_michael); - crypto_digest_setkey(tkey->tfm_michael, key, 8); - crypto_digest_update(tkey->tfm_michael, sg, 2); - crypto_digest_final(tkey->tfm_michael, mic); + crypto_digest_init(tfm_michael); + crypto_digest_setkey(tfm_michael, key, 8); + crypto_digest_update(tfm_michael, sg, 2); + crypto_digest_final(tfm_michael, mic); return 0; } @@ -542,7 +568,7 @@ michael_mic_hdr(skb, tkey->tx_hdr); pos = skb_put(skb, 8); - if (michael_mic(tkey, &tkey->key[16], tkey->tx_hdr, + if (michael_mic(tkey->tx_tfm_michael, &tkey->key[16], tkey->tx_hdr, skb->data + hdr_len, skb->len - 8 - hdr_len, pos)) return -1; @@ -580,7 +606,7 @@ return -1; michael_mic_hdr(skb, tkey->rx_hdr); - if (michael_mic(tkey, &tkey->key[24], tkey->rx_hdr, + if (michael_mic(tkey->rx_tfm_michael, &tkey->key[24], tkey->rx_hdr, skb->data + hdr_len, skb->len - 8 - hdr_len, mic)) return -1; if (memcmp(mic, skb->data + skb->len - 8, 8) != 0) { @@ -610,14 +636,18 @@ { struct ieee80211_tkip_data *tkey = priv; int keyidx; - struct crypto_tfm *tfm = tkey->tfm_michael; - struct crypto_tfm *tfm2 = tkey->tfm_arc4; + struct crypto_tfm *tfm = tkey->tx_tfm_michael; + struct crypto_tfm *tfm2 = tkey->tx_tfm_arc4; + struct crypto_tfm *tfm3 = tkey->rx_tfm_michael; + struct crypto_tfm *tfm4 = tkey->rx_tfm_arc4; keyidx = tkey->key_idx; memset(tkey, 0, sizeof(*tkey)); tkey->key_idx = keyidx; - tkey->tfm_michael = tfm; - tkey->tfm_arc4 = tfm2; + tkey->tx_tfm_michael = tfm; + tkey->tx_tfm_arc4 = tfm2; + tkey->rx_tfm_michael = tfm3; + tkey->rx_tfm_arc4 = tfm4; if (len == TKIP_KEY_LEN) { memcpy(tkey->key, key, TKIP_KEY_LEN); tkey->key_set = 1; --- linux-source-2.6.15-2.6.15.orig/net/ieee80211/ieee80211_rx.c +++ linux-source-2.6.15-2.6.15/net/ieee80211/ieee80211_rx.c @@ -367,6 +367,12 @@ frag = WLAN_GET_SEQ_FRAG(sc); hdrlen = ieee80211_get_hdrlen(fc); + if (skb->len < hdrlen) { + printk(KERN_INFO "%s: invalid SKB length %d\n", + dev->name, skb->len); + goto rx_dropped; + } + /* Put this code here so that we avoid duplicating it in all * Rx paths. - Jean II */ #ifdef CONFIG_WIRELESS_EXT --- linux-source-2.6.15-2.6.15.orig/net/atm/clip.c +++ linux-source-2.6.15-2.6.15/net/atm/clip.c @@ -506,9 +506,11 @@ else { unsigned int len = skb->len; + skb_get(skb); clip_push(vcc,skb); PRIV(skb->dev)->stats.rx_packets--; PRIV(skb->dev)->stats.rx_bytes -= len; + kfree_skb(skb); } return 0; } --- linux-source-2.6.15-2.6.15.orig/net/sctp/sm_make_chunk.c +++ linux-source-2.6.15-2.6.15/net/sctp/sm_make_chunk.c @@ -806,38 +806,26 @@ /* Helper to create ABORT with a SCTP_ERROR_USER_ABORT error. */ struct sctp_chunk *sctp_make_abort_user(const struct sctp_association *asoc, - const struct sctp_chunk *chunk, - const struct msghdr *msg) + const struct msghdr *msg, + size_t paylen) { struct sctp_chunk *retval; - void *payload = NULL, *payoff; - size_t paylen = 0; - struct iovec *iov = NULL; - int iovlen = 0; - - if (msg) { - iov = msg->msg_iov; - iovlen = msg->msg_iovlen; - paylen = get_user_iov_size(iov, iovlen); - } + void *payload = NULL; + int err; - retval = sctp_make_abort(asoc, chunk, sizeof(sctp_errhdr_t) + paylen); + retval = sctp_make_abort(asoc, NULL, sizeof(sctp_errhdr_t) + paylen); if (!retval) goto err_chunk; if (paylen) { /* Put the msg_iov together into payload. */ - payload = kmalloc(paylen, GFP_ATOMIC); + payload = kmalloc(paylen, GFP_KERNEL); if (!payload) goto err_payload; - payoff = payload; - for (; iovlen > 0; --iovlen) { - if (copy_from_user(payoff, iov->iov_base,iov->iov_len)) - goto err_copy; - payoff += iov->iov_len; - iov++; - } + err = memcpy_fromiovec(payload, msg->msg_iov, paylen); + if (err < 0) + goto err_copy; } sctp_init_cause(retval, SCTP_ERROR_USER_ABORT, payload, paylen); --- linux-source-2.6.15-2.6.15.orig/net/sctp/sm_statetable.c +++ linux-source-2.6.15-2.6.15/net/sctp/sm_statetable.c @@ -366,9 +366,9 @@ /* SCTP_STATE_EMPTY */ \ {.fn = sctp_sf_ootb, .name = "sctp_sf_ootb"}, \ /* SCTP_STATE_CLOSED */ \ - {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \ + {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_COOKIE_WAIT */ \ - {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \ + {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_COOKIE_ECHOED */ \ {.fn = sctp_sf_do_ecne, .name = "sctp_sf_do_ecne"}, \ /* SCTP_STATE_ESTABLISHED */ \ @@ -380,7 +380,7 @@ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \ {.fn = sctp_sf_do_ecne, .name = "sctp_sf_do_ecne"}, \ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \ - {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \ + {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ } /* TYPE_SCTP_ECN_ECNE */ #define TYPE_SCTP_ECN_CWR { \ @@ -401,7 +401,7 @@ /* SCTP_STATE_SHUTDOWN_RECEIVED */ \ {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ /* SCTP_STATE_SHUTDOWN_ACK_SENT */ \ - {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \ + {.fn = sctp_sf_discard_chunk, .name = "sctp_sf_discard_chunk"}, \ } /* TYPE_SCTP_ECN_CWR */ #define TYPE_SCTP_SHUTDOWN_COMPLETE { \ @@ -647,7 +647,7 @@ /* SCTP_STATE_EMPTY */ \ {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \ /* SCTP_STATE_CLOSED */ \ - {.fn = sctp_sf_bug, .name = "sctp_sf_bug"}, \ + {.fn = sctp_sf_error_closed, .name = "sctp_sf_error_closed"}, \ /* SCTP_STATE_COOKIE_WAIT */ \ {.fn = sctp_sf_do_prm_requestheartbeat, \ .name = "sctp_sf_do_prm_requestheartbeat"}, \ --- linux-source-2.6.15-2.6.15.orig/net/sctp/inqueue.c +++ linux-source-2.6.15-2.6.15/net/sctp/inqueue.c @@ -147,6 +147,7 @@ /* This is the first chunk in the packet. */ chunk->singleton = 1; ch = (sctp_chunkhdr_t *) chunk->skb->data; + chunk->data_accepted = 0; } chunk->chunk_hdr = ch; --- linux-source-2.6.15-2.6.15.orig/net/sctp/socket.c +++ linux-source-2.6.15-2.6.15/net/sctp/socket.c @@ -1242,9 +1242,13 @@ sctp_association_free(asoc); } else if (sock_flag(sk, SOCK_LINGER) && - !sk->sk_lingertime) - sctp_primitive_ABORT(asoc, NULL); - else + !sk->sk_lingertime) { + struct sctp_chunk *chunk; + + chunk = sctp_make_abort_user(asoc, NULL, 0); + if (chunk) + sctp_primitive_ABORT(asoc, chunk); + } else sctp_primitive_SHUTDOWN(asoc, NULL); } else sctp_primitive_SHUTDOWN(asoc, NULL); @@ -1475,8 +1479,16 @@ goto out_unlock; } if (sinfo_flags & SCTP_ABORT) { + struct sctp_chunk *chunk; + + chunk = sctp_make_abort_user(asoc, msg, msg_len); + if (!chunk) { + err = -ENOMEM; + goto out_unlock; + } + SCTP_DEBUG_PRINTK("Aborting association: %p\n", asoc); - sctp_primitive_ABORT(asoc, msg); + sctp_primitive_ABORT(asoc, chunk); err = 0; goto out_unlock; } @@ -3482,7 +3494,9 @@ if (copy_from_user(&getaddrs, optval, sizeof(struct sctp_getaddrs_old))) return -EFAULT; - if (getaddrs.addr_num <= 0) return -EINVAL; + if (getaddrs.addr_num <= 0 || + getaddrs.addr_num >= (INT_MAX / sizeof(union sctp_addr))) + return -EINVAL; /* * For UDP-style sockets, id specifies the association to query. * If the id field is set to the value '0' then the locally bound --- linux-source-2.6.15-2.6.15.orig/net/sctp/sm_statefuns.c +++ linux-source-2.6.15-2.6.15/net/sctp/sm_statefuns.c @@ -636,8 +636,9 @@ */ chunk->subh.cookie_hdr = (struct sctp_signed_cookie *)chunk->skb->data; - skb_pull(chunk->skb, - ntohs(chunk->chunk_hdr->length) - sizeof(sctp_chunkhdr_t)); + if (!pskb_pull(chunk->skb, ntohs(chunk->chunk_hdr->length) - + sizeof(sctp_chunkhdr_t))) + goto nomem; /* 5.1 D) Upon reception of the COOKIE ECHO chunk, Endpoint * "Z" will reply with a COOKIE ACK chunk after building a TCB @@ -965,7 +966,8 @@ */ chunk->subh.hb_hdr = (sctp_heartbeathdr_t *) chunk->skb->data; paylen = ntohs(chunk->chunk_hdr->length) - sizeof(sctp_chunkhdr_t); - skb_pull(chunk->skb, paylen); + if (!pskb_pull(chunk->skb, paylen)) + goto nomem; reply = sctp_make_heartbeat_ack(asoc, chunk, chunk->subh.hb_hdr, paylen); @@ -1028,6 +1030,12 @@ commands); hbinfo = (sctp_sender_hb_info_t *) chunk->skb->data; + /* Make sure that the length of the parameter is what we expect */ + if (ntohs(hbinfo->param_hdr.length) != + sizeof(sctp_sender_hb_info_t)) { + return SCTP_DISPOSITION_DISCARD; + } + from_addr = hbinfo->daddr; link = sctp_assoc_lookup_paddr(asoc, &from_addr); @@ -1860,8 +1868,9 @@ * are in good shape. */ chunk->subh.cookie_hdr = (struct sctp_signed_cookie *)chunk->skb->data; - skb_pull(chunk->skb, ntohs(chunk->chunk_hdr->length) - - sizeof(sctp_chunkhdr_t)); + if (!pskb_pull(chunk->skb, ntohs(chunk->chunk_hdr->length) - + sizeof(sctp_chunkhdr_t))) + goto nomem; /* In RFC 2960 5.2.4 3, if both Verification Tags in the State Cookie * of a duplicate COOKIE ECHO match the Verification Tags of the @@ -4024,18 +4033,12 @@ * from its upper layer, but retransmits data to the far end * if necessary to fill gaps. */ - struct msghdr *msg = arg; - struct sctp_chunk *abort; + struct sctp_chunk *abort = arg; sctp_disposition_t retval; retval = SCTP_DISPOSITION_CONSUME; - /* Generate ABORT chunk to send the peer. */ - abort = sctp_make_abort_user(asoc, NULL, msg); - if (!abort) - retval = SCTP_DISPOSITION_NOMEM; - else - sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(abort)); + sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(abort)); /* Even if we can't send the ABORT due to low memory delete the * TCB. This is a departure from our typical NOMEM handling. @@ -4157,8 +4160,7 @@ void *arg, sctp_cmd_seq_t *commands) { - struct msghdr *msg = arg; - struct sctp_chunk *abort; + struct sctp_chunk *abort = arg; sctp_disposition_t retval; /* Stop T1-init timer */ @@ -4166,12 +4168,7 @@ SCTP_TO(SCTP_EVENT_TIMEOUT_T1_INIT)); retval = SCTP_DISPOSITION_CONSUME; - /* Generate ABORT chunk to send the peer */ - abort = sctp_make_abort_user(asoc, NULL, msg); - if (!abort) - retval = SCTP_DISPOSITION_NOMEM; - else - sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(abort)); + sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(abort)); sctp_add_cmd_sf(commands, SCTP_CMD_NEW_STATE, SCTP_STATE(SCTP_STATE_CLOSED)); @@ -5161,7 +5158,9 @@ int tmp; __u32 tsn; int account_value; + struct sctp_tsnmap *map = (struct sctp_tsnmap *)&asoc->peer.tsn_map; struct sock *sk = asoc->base.sk; + int rcvbuf_over = 0; data_hdr = chunk->subh.data_hdr = (sctp_datahdr_t *)chunk->skb->data; skb_pull(chunk->skb, sizeof(sctp_datahdr_t)); @@ -5172,10 +5171,16 @@ /* ASSERT: Now skb->data is really the user data. */ /* - * if we are established, and we have used up our receive - * buffer memory, drop the frame + * If we are established, and we have used up our receive buffer + * memory, think about droping the frame. + * Note that we have an opportunity to improve performance here. + * If we accept one chunk from an skbuff, we have to keep all the + * memory of that skbuff around until the chunk is read into user + * space. Therefore, once we accept 1 chunk we may as well accept all + * remaining chunks in the skbuff. The data_accepted flag helps us do + * that. */ - if (asoc->state == SCTP_STATE_ESTABLISHED) { + if ((asoc->state == SCTP_STATE_ESTABLISHED) && (!chunk->data_accepted)) { /* * If the receive buffer policy is 1, then each * association can allocate up to sk_rcvbuf bytes @@ -5186,9 +5191,25 @@ account_value = atomic_read(&asoc->rmem_alloc); else account_value = atomic_read(&sk->sk_rmem_alloc); - - if (account_value > sk->sk_rcvbuf) - return SCTP_IERROR_IGNORE_TSN; + if (account_value > sk->sk_rcvbuf) { + /* + * We need to make forward progress, even when we are + * under memory pressure, so we always allow the + * next tsn after the ctsn ack point to be accepted. + * This lets us avoid deadlocks in which we have to + * drop frames that would otherwise let us drain the + * receive queue. + */ + if ((sctp_tsnmap_get_ctsn(map) + 1) != tsn) + return SCTP_IERROR_IGNORE_TSN; + + /* + * We're going to accept the frame but we should renege + * to make space for it. This will send us down that + * path later in this function. + */ + rcvbuf_over = 1; + } } /* Process ECN based congestion. @@ -5236,6 +5257,7 @@ datalen -= sizeof(sctp_data_chunk_t); deliver = SCTP_CMD_CHUNK_ULP; + chunk->data_accepted = 1; /* Think about partial delivery. */ if ((datalen >= asoc->rwnd) && (!asoc->ulpq.pd_mode)) { @@ -5252,7 +5274,8 @@ * large spill over. */ if (!asoc->rwnd || asoc->rwnd_over || - (datalen > asoc->rwnd + asoc->frag_point)) { + (datalen > asoc->rwnd + asoc->frag_point) || + rcvbuf_over) { /* If this is the next TSN, consider reneging to make * room. Note: Playing nice with a confused sender. A @@ -5260,8 +5283,8 @@ * space and in the future we may want to detect and * do more drastic reneging. */ - if (sctp_tsnmap_has_gap(&asoc->peer.tsn_map) && - (sctp_tsnmap_get_ctsn(&asoc->peer.tsn_map) + 1) == tsn) { + if (sctp_tsnmap_has_gap(map) && + (sctp_tsnmap_get_ctsn(map) + 1) == tsn) { SCTP_DEBUG_PRINTK("Reneging for tsn:%u\n", tsn); deliver = SCTP_CMD_RENEGE; } else { --- linux-source-2.6.15-2.6.15.orig/net/sctp/ulpqueue.c +++ linux-source-2.6.15-2.6.15/net/sctp/ulpqueue.c @@ -279,6 +279,7 @@ static struct sctp_ulpevent *sctp_make_reassembled_event(struct sk_buff_head *queue, struct sk_buff *f_frag, struct sk_buff *l_frag) { struct sk_buff *pos; + struct sk_buff *new = NULL; struct sctp_ulpevent *event; struct sk_buff *pnext, *last; struct sk_buff *list = skb_shinfo(f_frag)->frag_list; @@ -297,11 +298,33 @@ */ if (last) last->next = pos; - else - skb_shinfo(f_frag)->frag_list = pos; + else { + if (skb_cloned(f_frag)) { + /* This is a cloned skb, we can't just modify + * the frag_list. We need a new skb to do that. + * Instead of calling skb_unshare(), we'll do it + * ourselves since we need to delay the free. + */ + new = skb_copy(f_frag, GFP_ATOMIC); + if (!new) + return NULL; /* try again later */ + + new->sk = f_frag->sk; + + skb_shinfo(new)->frag_list = pos; + } else + skb_shinfo(f_frag)->frag_list = pos; + } /* Remove the first fragment from the reassembly queue. */ __skb_unlink(f_frag, queue); + + /* if we did unshare, then free the old skb and re-assign */ + if (new) { + kfree_skb(f_frag); + f_frag = new; + } + while (pos) { pnext = pos->next; --- linux-source-2.6.15-2.6.15.orig/net/ipv4/fib_frontend.c +++ linux-source-2.6.15-2.6.15/net/ipv4/fib_frontend.c @@ -523,6 +523,8 @@ .fwmark = frn->fl_fwmark, .tos = frn->fl_tos, .scope = frn->fl_scope } } }; + + frn->err = -ENOENT; if (tb) { local_bh_disable(); @@ -534,6 +536,7 @@ frn->nh_sel = res.nh_sel; frn->type = res.type; frn->scope = res.scope; + fib_res_put(&res); } local_bh_enable(); } @@ -548,6 +551,9 @@ struct fib_table *tb; skb = skb_dequeue(&sk->sk_receive_queue); + if (skb == NULL) + return; + nlh = (struct nlmsghdr *)skb->data; if (skb->len < NLMSG_SPACE(0) || skb->len < nlh->nlmsg_len || nlh->nlmsg_len < NLMSG_LENGTH(sizeof(*frn))) { @@ -560,7 +566,7 @@ nl_fib_lookup(frn, tb); - pid = nlh->nlmsg_pid; /*pid of sending process */ + pid = NETLINK_CB(skb).pid; /* pid of sending process */ NETLINK_CB(skb).pid = 0; /* from kernel */ NETLINK_CB(skb).dst_pid = pid; NETLINK_CB(skb).dst_group = 0; /* unicast */ --- linux-source-2.6.15-2.6.15.orig/net/ipv4/fib_semantics.c +++ linux-source-2.6.15-2.6.15/net/ipv4/fib_semantics.c @@ -87,7 +87,7 @@ { int error; u8 scope; -} fib_props[RTA_MAX + 1] = { +} fib_props[RTN_MAX + 1] = { { .error = 0, .scope = RT_SCOPE_NOWHERE, @@ -661,6 +661,9 @@ u32 mp_alg = IP_MP_ALG_NONE; #endif + if (r->rtm_type > RTN_MAX) + goto err_inval; + /* Fast check to catch the most weird cases */ if (fib_props[r->rtm_type].scope > r->rtm_scope) goto err_inval; --- linux-source-2.6.15-2.6.15.orig/net/ipv4/esp4.c +++ linux-source-2.6.15-2.6.15/net/ipv4/esp4.c @@ -150,7 +150,7 @@ int nfrags; int encap_len = 0; - if (!pskb_may_pull(skb, sizeof(struct ip_esp_hdr))) + if (!pskb_may_pull(skb, sizeof(struct ip_esp_hdr) + esp->conf.ivlen)) goto out; if (elen <= 0 || (elen & (blksize-1))) --- linux-source-2.6.15-2.6.15.orig/net/ipv4/route.c +++ linux-source-2.6.15-2.6.15/net/ipv4/route.c @@ -2750,7 +2750,10 @@ /* Reserve room for dummy headers, this skb can pass through good chunk of routing engine. */ - skb->mac.raw = skb->data; + skb->mac.raw = skb->nh.raw = skb->data; + + /* Bugfix: need to give ip_route_input enough of an IP header to not gag. */ + skb->nh.iph->protocol = IPPROTO_ICMP; skb_reserve(skb, MAX_HEADER + sizeof(struct iphdr)); if (rta[RTA_SRC - 1]) --- linux-source-2.6.15-2.6.15.orig/net/ipv4/netfilter/ip_nat_snmp_basic.c +++ linux-source-2.6.15-2.6.15/net/ipv4/netfilter/ip_nat_snmp_basic.c @@ -998,12 +998,12 @@ return 1; +err_addr_free: + kfree((unsigned long *)trap->ip_address); + err_id_free: kfree(trap->id); -err_addr_free: - kfree((unsigned long *)trap->ip_address); - return 0; } @@ -1121,11 +1121,10 @@ struct snmp_v1_trap trap; unsigned char ret = snmp_trap_decode(&ctx, &trap, map, check); - /* Discard trap allocations regardless */ - kfree(trap.id); - kfree((unsigned long *)trap.ip_address); - - if (!ret) + if (ret) { + kfree(trap.id); + kfree((unsigned long *)trap.ip_address); + } else return ret; } else { --- linux-source-2.6.15-2.6.15.orig/net/ipv4/netfilter/ip_conntrack_proto_sctp.c +++ linux-source-2.6.15-2.6.15/net/ipv4/netfilter/ip_conntrack_proto_sctp.c @@ -234,12 +234,15 @@ flag = 1; } - /* Cookie Ack/Echo chunks not the first OR - Init / Init Ack / Shutdown compl chunks not the only chunks */ - if ((sch->type == SCTP_CID_COOKIE_ACK + /* + * Cookie Ack/Echo chunks not the first OR + * Init / Init Ack / Shutdown compl chunks not the only chunks + * OR zero-length. + */ + if (((sch->type == SCTP_CID_COOKIE_ACK || sch->type == SCTP_CID_COOKIE_ECHO || flag) - && count !=0 ) { + && count !=0) || !sch->length) { DEBUGP("Basic checks failed\n"); return 1; } @@ -250,7 +253,7 @@ } DEBUGP("Basic checks passed\n"); - return 0; + return count == 0; } static int new_state(enum ip_conntrack_dir dir, @@ -457,7 +460,8 @@ SCTP_CONNTRACK_NONE, sch->type); /* Invalid: delete conntrack */ - if (newconntrack == SCTP_CONNTRACK_MAX) { + if (newconntrack == SCTP_CONNTRACK_NONE || + newconntrack == SCTP_CONNTRACK_MAX) { DEBUGP("ip_conntrack_sctp: invalid new deleting.\n"); return 0; } --- linux-source-2.6.15-2.6.15.orig/net/ipv4/netfilter/arp_tables.c +++ linux-source-2.6.15-2.6.15/net/ipv4/netfilter/arp_tables.c @@ -1053,7 +1053,7 @@ } write_lock_bh(&t->lock); - if (t->private->number != paddc->num_counters) { + if (t->private->number != tmp.num_counters) { ret = -EINVAL; goto unlock_up_free; } --- linux-source-2.6.15-2.6.15.orig/net/appletalk/ddp.c +++ linux-source-2.6.15-2.6.15/net/appletalk/ddp.c @@ -1422,10 +1422,13 @@ /* * Size check to see if ddp->deh_len was crap * (Otherwise we'll detonate most spectacularly - * in the middle of recvmsg()). + * in the middle of atalk_checksum() or recvmsg()). */ - if (skb->len < sizeof(*ddp)) + if (skb->len < sizeof(*ddp) || skb->len < ddphv.deh_len) { + pr_debug("AppleTalk: dropping corrupted frame (deh_len=%u, " + "skb->len=%u)\n", ddphv.deh_len, skb->len); goto freeit; + } /* * Any checksums. Note we don't do htons() on this == is assumed to be --- linux-source-2.6.15-2.6.15.orig/net/netfilter/nf_conntrack_proto_sctp.c +++ linux-source-2.6.15-2.6.15/net/netfilter/nf_conntrack_proto_sctp.c @@ -240,12 +240,15 @@ flag = 1; } - /* Cookie Ack/Echo chunks not the first OR - Init / Init Ack / Shutdown compl chunks not the only chunks */ - if ((sch->type == SCTP_CID_COOKIE_ACK + /* + * Cookie Ack/Echo chunks not the first OR + * Init / Init Ack / Shutdown compl chunks not the only chunks + * OR zero-length. + */ + if (((sch->type == SCTP_CID_COOKIE_ACK || sch->type == SCTP_CID_COOKIE_ECHO || flag) - && count !=0 ) { + && count !=0) || !sch->length) { DEBUGP("Basic checks failed\n"); return 1; } @@ -256,7 +259,7 @@ } DEBUGP("Basic checks passed\n"); - return 0; + return count == 0; } static int new_state(enum ip_conntrack_dir dir, @@ -464,7 +467,8 @@ SCTP_CONNTRACK_NONE, sch->type); /* Invalid: delete conntrack */ - if (newconntrack == SCTP_CONNTRACK_MAX) { + if (newconntrack == SCTP_CONNTRACK_NONE || + newconntrack == SCTP_CONNTRACK_MAX) { DEBUGP("nf_conntrack_sctp: invalid new deleting.\n"); return 0; } --- linux-source-2.6.15-2.6.15.orig/net/netfilter/nfnetlink_log.c +++ linux-source-2.6.15-2.6.15/net/netfilter/nfnetlink_log.c @@ -810,6 +810,9 @@ ret = -EINVAL; break; } + + if (!inst) + goto out; } else { if (!inst) { UDEBUG("no config command, and no instance for " @@ -857,6 +860,7 @@ out_put: instance_put(inst); +out: return ret; } --- linux-source-2.6.15-2.6.15.orig/net/bluetooth/hci_core.c +++ linux-source-2.6.15-2.6.15/net/bluetooth/hci_core.c @@ -1340,8 +1340,10 @@ return; } } else { - BT_ERR("%s SCO packet for unknown connection handle %d", - hdev->name, handle); + if (printk_ratelimit()) { + BT_ERR("%s SCO packet for unknown connection handle %d", + hdev->name, handle); + } } kfree_skb(skb); --- linux-source-2.6.15-2.6.15.orig/net/bluetooth/l2cap.c +++ linux-source-2.6.15-2.6.15/net/bluetooth/l2cap.c @@ -802,6 +802,12 @@ switch (optname) { case L2CAP_OPTIONS: + /* CVE-2007-1353 */ + opts.imtu = l2cap_pi(sk)->imtu; + opts.omtu = l2cap_pi(sk)->omtu; + opts.flush_to = l2cap_pi(sk)->flush_to; + opts.mode = 0x00; + len = min_t(unsigned int, sizeof(opts), optlen); if (copy_from_user((char *) &opts, optval, len)) { err = -EFAULT; --- linux-source-2.6.15-2.6.15.orig/net/bluetooth/hci_sock.c +++ linux-source-2.6.15-2.6.15/net/bluetooth/hci_sock.c @@ -497,6 +497,16 @@ break; case HCI_FILTER: + /* CVE-2007-1353 */ + { + struct hci_filter *f = &hci_pi(sk)->filter; + + uf.type_mask = f->type_mask; + uf.opcode = f->opcode; + uf.event_mask[0] = *((u32 *) f->event_mask + 0); + uf.event_mask[1] = *((u32 *) f->event_mask + 1); + } + len = min_t(unsigned int, len, sizeof(uf)); if (copy_from_user(&uf, optval, len)) { err = -EFAULT; --- linux-source-2.6.15-2.6.15.orig/net/bluetooth/hci_event.c +++ linux-source-2.6.15-2.6.15/net/bluetooth/hci_event.c @@ -320,9 +320,9 @@ } hdev->acl_mtu = __le16_to_cpu(bs->acl_mtu); - hdev->sco_mtu = bs->sco_mtu ? bs->sco_mtu : 64; + hdev->sco_mtu = (bs->sco_mtu < 64) ? 64 : bs->sco_mtu; hdev->acl_pkts = hdev->acl_cnt = __le16_to_cpu(bs->acl_max_pkt); - hdev->sco_pkts = hdev->sco_cnt = __le16_to_cpu(bs->sco_max_pkt); + hdev->sco_pkts = hdev->sco_cnt = bs->sco_max_pkt ? __le16_to_cpu(bs->sco_max_pkt) : 8; BT_DBG("%s mtu: acl %d, sco %d max_pkt: acl %d, sco %d", hdev->name, hdev->acl_mtu, hdev->sco_mtu, hdev->acl_pkts, hdev->sco_pkts); --- linux-source-2.6.15-2.6.15.orig/net/bluetooth/cmtp/capi.c +++ linux-source-2.6.15-2.6.15/net/bluetooth/cmtp/capi.c @@ -199,6 +199,9 @@ switch (CAPIMSG_SUBCOMMAND(skb->data)) { case CAPI_CONF: + if (skb->len < CAPI_MSG_BASELEN + 10) + break; + func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 5); info = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 8); @@ -229,6 +232,9 @@ break; case CAPI_FUNCTION_GET_PROFILE: + if (skb->len < CAPI_MSG_BASELEN + 11 + sizeof(capi_profile)) + break; + controller = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 11); msgnum = CAPIMSG_MSGID(skb->data); @@ -249,17 +255,26 @@ break; case CAPI_FUNCTION_GET_MANUFACTURER: + if (skb->len < CAPI_MSG_BASELEN + 15) + break; + controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 10); if (!info && ctrl) { + int len = min_t(uint, CAPI_MANUFACTURER_LEN, + skb->data[CAPI_MSG_BASELEN + 14]); + + memset(ctrl->manu, 0, CAPI_MANUFACTURER_LEN); strncpy(ctrl->manu, - skb->data + CAPI_MSG_BASELEN + 15, - skb->data[CAPI_MSG_BASELEN + 14]); + skb->data + CAPI_MSG_BASELEN + 15, len); } break; case CAPI_FUNCTION_GET_VERSION: + if (skb->len < CAPI_MSG_BASELEN + 32) + break; + controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12); if (!info && ctrl) { @@ -272,13 +287,18 @@ break; case CAPI_FUNCTION_GET_SERIAL_NUMBER: + if (skb->len < CAPI_MSG_BASELEN + 17) + break; + controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12); if (!info && ctrl) { + int len = min_t(uint, CAPI_SERIAL_LEN, + skb->data[CAPI_MSG_BASELEN + 16]); + memset(ctrl->serial, 0, CAPI_SERIAL_LEN); strncpy(ctrl->serial, - skb->data + CAPI_MSG_BASELEN + 17, - skb->data[CAPI_MSG_BASELEN + 16]); + skb->data + CAPI_MSG_BASELEN + 17, len); } break; @@ -287,14 +307,18 @@ break; case CAPI_IND: + if (skb->len < CAPI_MSG_BASELEN + 6) + break; + func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 3); if (func == CAPI_FUNCTION_LOOPBACK) { + int len = min_t(uint, skb->len - CAPI_MSG_BASELEN - 6, + skb->data[CAPI_MSG_BASELEN + 5]); appl = CAPIMSG_APPID(skb->data); msgnum = CAPIMSG_MSGID(skb->data); cmtp_send_interopmsg(session, CAPI_RESP, appl, msgnum, func, - skb->data + CAPI_MSG_BASELEN + 6, - skb->data[CAPI_MSG_BASELEN + 5]); + skb->data + CAPI_MSG_BASELEN + 6, len); } break; @@ -312,6 +336,9 @@ BT_DBG("session %p skb %p len %d", session, skb, skb->len); + if (skb->len < CAPI_MSG_BASELEN) + return; + if (CAPIMSG_COMMAND(skb->data) == CAPI_INTEROPERABILITY) { cmtp_recv_interopmsg(session, skb); return; --- linux-source-2.6.15-2.6.15.orig/net/decnet/dn_fib.c +++ linux-source-2.6.15-2.6.15/net/decnet/dn_fib.c @@ -65,7 +65,7 @@ { int error; u8 scope; -} dn_fib_props[RTA_MAX+1] = { +} dn_fib_props[RTN_MAX+1] = { [RTN_UNSPEC] = { .error = 0, .scope = RT_SCOPE_NOWHERE }, [RTN_UNICAST] = { .error = 0, .scope = RT_SCOPE_UNIVERSE }, [RTN_LOCAL] = { .error = 0, .scope = RT_SCOPE_HOST }, @@ -275,6 +275,9 @@ struct dn_fib_info *ofi; int nhs = 1; + if (r->rtm_type > RTN_MAX) + goto err_inval; + if (dn_fib_props[r->rtm_type].scope > r->rtm_scope) goto err_inval; --- linux-source-2.6.15-2.6.15.orig/debian/config/i386/config.k7 +++ linux-source-2.6.15-2.6.15/debian/config/i386/config.k7 @@ -0,0 +1,71 @@ +# +# Config options for config.k7 automatically generated by splitconf.pl +# +CONFIG_ACPI_HOTPLUG_CPU=y +# CONFIG_CLUSTER is not set +# CONFIG_CM206 is not set +# CONFIG_COMPUTONE is not set +CONFIG_CPUSETS=y +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_DMASCC is not set +CONFIG_EISA_VIRTUAL_ROOT=y +CONFIG_EISA_VLB_PRIMING=y +CONFIG_ENABLE_ALT_SMP=y +CONFIG_FLATMEM=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_FTAPE is not set +CONFIG_GENERIC_PENDING_IRQ=y +# CONFIG_GFS_FS is not set +# CONFIG_GFS_FS_LOCK_HARNESS is not set +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set +CONFIG_HOTPLUG_CPU=y +CONFIG_HPET_EMULATE_RTC=y +# CONFIG_HYSDN is not set +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +CONFIG_IRQBALANCE=y +# CONFIG_ISDN_DRV_LOOP is not set +# CONFIG_ISTALLION is not set +# CONFIG_M486 is not set +# CONFIG_M686 is not set +# CONFIG_MATH_EMULATION is not set +CONFIG_MK7=y +# CONFIG_MOXA_INTELLIO is not set +CONFIG_NR_CPUS=8 +# CONFIG_OCFS2_FS is not set +# CONFIG_PCMCIA_XIRTULIP is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_BKL=y +# CONFIG_PREEMPT_NONE is not set +# CONFIG_RIO is not set +# CONFIG_RISCOM8 is not set +CONFIG_RTC=y +# CONFIG_SBPCD is not set +CONFIG_SCHED_MC=y +CONFIG_SCHED_SMT=y +# CONFIG_SCSI_MCA_53C9X is not set +CONFIG_SMP=y +# CONFIG_SPARSEMEM_STATIC is not set +# CONFIG_STALLION is not set +CONFIG_STOP_MACHINE=y +CONFIG_SUSPEND_SMP=y +CONFIG_X86_CMPXCHG64=y +# CONFIG_X86_GENERIC is not set +# CONFIG_X86_GENERICARCH is not set +CONFIG_X86_GOOD_APIC=y +CONFIG_X86_HT=y +CONFIG_X86_HT_DISABLE=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_L1_CACHE_SHIFT=6 +CONFIG_X86_PC=y +CONFIG_X86_SMP=y +CONFIG_X86_TRAMPOLINE=y +CONFIG_X86_TSC=y +CONFIG_X86_USE_3DNOW=y +CONFIG_X86_USE_PPRO_CHECKSUM=y --- linux-source-2.6.15-2.6.15.orig/debian/config/i386/config +++ linux-source-2.6.15-2.6.15/debian/config/i386/config @@ -0,0 +1,2572 @@ +# +# Common config options automatically generated by splitconf.pl +# +# CONFIG_05GB is not set +CONFIG_1GB=y +# CONFIG_2GB is not set +CONFIG_3C359=m +CONFIG_3C515=m +# CONFIG_3GB is not set +# CONFIG_4KSTACKS is not set +CONFIG_53C700_IO_MAPPED=y +CONFIG_60XX_WDT=m +CONFIG_6PACK=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +CONFIG_8139TOO_8129=y +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_9P_FS=m +CONFIG_ABYSS=m +CONFIG_AC3200=m +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_ACORN_PARTITION=y +# CONFIG_ACORN_PARTITION_ADFS is not set +# CONFIG_ACORN_PARTITION_CUMANA is not set +# CONFIG_ACORN_PARTITION_EESOX is not set +CONFIG_ACORN_PARTITION_ICS=y +# CONFIG_ACORN_PARTITION_POWERTEC is not set +CONFIG_ACORN_PARTITION_RISCIX=y +CONFIG_ACPI=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_ASUS=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BLACKLIST_YEAR=2000 +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_CONTAINER=m +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_DEV=m +CONFIG_ACPI_EC=y +CONFIG_ACPI_FAN=m +CONFIG_ACPI_HOTKEY=m +CONFIG_ACPI_IBM=m +CONFIG_ACPI_INITRD=y +CONFIG_ACPI_PCC=m +CONFIG_ACPI_POWER=y +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_SBS=m +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_SLEEP_PROC_FS=y +CONFIG_ACPI_SLEEP_PROC_SLEEP=y +CONFIG_ACPI_SONY=m +CONFIG_ACPI_SYSTEM=y +CONFIG_ACPI_TC1100=m +CONFIG_ACPI_THERMAL=m +CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ACT200L_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_ADAPTEC_STARFIRE=m +# CONFIG_ADAPTEC_STARFIRE_NAPI is not set +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_ADM8211=m +CONFIG_ADV717X=m +CONFIG_ADV717X_PIXELPORT16BIT=y +CONFIG_ADV717X_PIXELPORTPAL=y +CONFIG_ADV717X_SWAP=y +CONFIG_ADVANTECH_WDT=m +# CONFIG_AEDSP16_MPU401 is not set +# CONFIG_AEDSP16_MSS is not set +# CONFIG_AEDSP16_SBPRO is not set +CONFIG_AFFS_FS=m +CONFIG_AFS_FS=m +CONFIG_AGP=m +CONFIG_AGP_ALI=m +CONFIG_AGP_AMD=m +CONFIG_AGP_AMD64=m +CONFIG_AGP_ATI=m +CONFIG_AGP_EFFICEON=m +CONFIG_AGP_INTEL=m +CONFIG_AGP_NVIDIA=m +CONFIG_AGP_SIS=m +CONFIG_AGP_SWORKS=m +CONFIG_AGP_VIA=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_DEBUG_ENABLE=y +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_ENABLE_RD_STRM=y +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 +CONFIG_AIC7XXX_DEBUG_ENABLE=y +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_PROBE_EISA_VL=y +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_AIRO=m +CONFIG_AIRO_CS=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_ALI_FIR=m +# CONFIG_AMD8111E_NAPI is not set +CONFIG_AMD8111_ETH=m +CONFIG_AMIGA_PARTITION=y +CONFIG_APM=m +# CONFIG_APM_ALLOW_INTS is not set +# CONFIG_APM_CPU_IDLE is not set +# CONFIG_APM_DISPLAY_BLANK is not set +# CONFIG_APM_DO_ENABLE is not set +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +# CONFIG_APM_REAL_MODE_POWER_OFF is not set +# CONFIG_APM_RTC_IS_GMT is not set +CONFIG_APPLICOM=m +CONFIG_APRICOT=m +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_ARCNET=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_CS=m +CONFIG_ARCNET_COM20020_ISA=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_RIM_I=m +CONFIG_ARLAN=m +# CONFIG_ARPD is not set +CONFIG_ASFS_DEFAULT_CODEPAGE="" +CONFIG_ASFS_FS=m +# CONFIG_ASFS_RW is not set +CONFIG_ASK_IP_FIB_HASH=y +CONFIG_AT1700=m +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_OVER_ETH=m +CONFIG_ATM=y +CONFIG_ATMEL=m +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_ATM_CLIP=y +# CONFIG_ATM_CLIP_NO_ICMP is not set +# CONFIG_ATM_DUMMY is not set +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_FORE200E=m +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_FORE200E_MAYBE=m +CONFIG_ATM_FORE200E_PCA=y +CONFIG_ATM_FORE200E_PCA_DEFAULT_FW=y +CONFIG_ATM_FORE200E_TX_RETRY=16 +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_LANAI=m +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_NICSTAR=m +# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set +# CONFIG_ATM_NICSTAR_USE_SUNI is not set +CONFIG_ATM_TCP=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +CONFIG_ATP=m +CONFIG_AUDIT=y +# CONFIG_AUDITSYSCALL is not set +CONFIG_AUTOFS4_FS=m +CONFIG_AUTOFS_FS=m +CONFIG_AVERATEC_5100P=m +CONFIG_AX25=m +# CONFIG_AX25_DAMA_SLAVE is not set +CONFIG_AZTCD=m +CONFIG_B44=m +CONFIG_BACKLIGHT_CLASS_DEVICE=m +CONFIG_BACKLIGHT_DEVICE=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BASE_FULL=y +CONFIG_BASE_SMALL=0 +CONFIG_BAYCOM_EPP=m +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BCM43XX=m +# CONFIG_BCM43XX_DEBUG is not set +CONFIG_BCM43XX_DMA=y +CONFIG_BCM43XX_DMA_AND_PIO_MODE=y +# CONFIG_BCM43XX_DMA_MODE is not set +CONFIG_BCM43XX_PIO=y +# CONFIG_BCM43XX_PIO_MODE is not set +# CONFIG_BEFS_DEBUG is not set +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_AEC62XX=m +CONFIG_BLK_DEV_ALI15X3=m +CONFIG_BLK_DEV_AMD74XX=m +CONFIG_BLK_DEV_ATIIXP=m +CONFIG_BLK_DEV_CLOOP=m +CONFIG_BLK_DEV_CMD640=y +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +CONFIG_BLK_DEV_CMD64X=m +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_CS5520=m +CONFIG_BLK_DEV_CS5530=m +CONFIG_BLK_DEV_CS5535=m +CONFIG_BLK_DEV_CY82C693=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_DM=m +CONFIG_BLK_DEV_DM_BBR=m +CONFIG_BLK_DEV_FD=m +CONFIG_BLK_DEV_GENERIC=m +CONFIG_BLK_DEV_GNBD=m +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_HD_IDE is not set +CONFIG_BLK_DEV_HPT34X=m +CONFIG_BLK_DEV_HPT366=m +CONFIG_BLK_DEV_IDE=y +CONFIG_BLK_DEV_IDEACPI=y +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_IDEDISK=m +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_IDEFLOPPY=m +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_IDEPNP=m +CONFIG_BLK_DEV_IDESCSI=m +CONFIG_BLK_DEV_IDETAPE=m +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_DEV_IT821X=m +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_MD=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_NS87415=m +# CONFIG_BLK_DEV_OFFBOARD is not set +CONFIG_BLK_DEV_OPTI621=m +CONFIG_BLK_DEV_PDC202XX_NEW=m +CONFIG_BLK_DEV_PDC202XX_OLD=m +CONFIG_BLK_DEV_PIIX=m +CONFIG_BLK_DEV_PS2=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_BLK_DEV_RZ1000=m +CONFIG_BLK_DEV_SC1200=m +CONFIG_BLK_DEV_SD=m +CONFIG_BLK_DEV_SIIMAGE=m +CONFIG_BLK_DEV_SIS5513=m +CONFIG_BLK_DEV_SLC90E66=m +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BLK_DEV_SVWKS=m +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_TRIFLEX=m +CONFIG_BLK_DEV_TRM290=m +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_UMEM=m +CONFIG_BLK_DEV_VIA82CXXX=m +CONFIG_BLK_DEV_XD=m +CONFIG_BNX2=m +CONFIG_BONDING=m +CONFIG_BOOT_IOREMAP=y +CONFIG_BPQETHER=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_ULOG=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_NETFILTER=y +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BROKEN=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_BSD_DISKLABEL=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_BT=m +CONFIG_BT865=m +CONFIG_BT_ALSA=m +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_CMTP=m +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUSB=m +CONFIG_BT_HCIUSB_SCO=y +CONFIG_BT_HCIVHCI=m +CONFIG_BT_HIDP=m +CONFIG_BT_L2CAP=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_SCO=m +CONFIG_BUG=y +CONFIG_C101=m +CONFIG_CAPI_AVM=y +CONFIG_CAPI_EICON=y +CONFIG_CARDBUS=y +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +CONFIG_CASSINI=m +CONFIG_CC_ALIGN_FUNCTIONS=0 +CONFIG_CC_ALIGN_JUMPS=0 +CONFIG_CC_ALIGN_LABELS=0 +CONFIG_CC_ALIGN_LOOPS=0 +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +CONFIG_CDU31A=m +CONFIG_CDU535=m +CONFIG_CD_NO_IDESCSI=y +CONFIG_CHELSIO_T1=m +CONFIG_CHR_DEV_OSST=m +CONFIG_CHR_DEV_SCH=m +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_ST=m +CONFIG_CICADA_PHY=m +CONFIG_CIFS=m +# CONFIG_CIFS_EXPERIMENTAL is not set +# CONFIG_CIFS_STATS is not set +# CONFIG_CIFS_XATTR is not set +CONFIG_CISS_SCSI_TAPE=y +# CONFIG_CLEAN_COMPILE is not set +CONFIG_CLS_U32_MARK=y +# CONFIG_CLS_U32_PERF is not set +CONFIG_CODA_FS=m +# CONFIG_CODA_FS_OLD_API is not set +CONFIG_CONFIGFS_FS=m +CONFIG_CONNECTOR=m +CONFIG_COPS=m +CONFIG_COPS_DAYNA=y +CONFIG_COPS_TANGENT=y +CONFIG_COSA=m +CONFIG_CPU5_WDT=m +CONFIG_CPU_FREQ=y +# CONFIG_CPU_FREQ_DEBUG is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=m +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_TABLE=m +CONFIG_CRAMFS=y +CONFIG_CRC16=m +CONFIG_CRC32=y +CONFIG_CRC_CCITT=m +CONFIG_CRYPTO=y +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_AES_586=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_DEV_PADLOCK=m +CONFIG_CRYPTO_DEV_PADLOCK_AES=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_WP512=m +CONFIG_CS89x0=m +CONFIG_CYCLADES=m +CONFIG_CYCLADES_SYNC=m +CONFIG_CYCLOMX_X25=y +# CONFIG_CYZ_INTR is not set +CONFIG_DAVICOM_PHY=m +CONFIG_DAZUKO=m +CONFIG_DCDBAS=m +CONFIG_DE2104X=m +CONFIG_DE4X5=m +CONFIG_DE600=m +CONFIG_DE620=m +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_VM is not set +CONFIG_DECNET=m +CONFIG_DECNET_NF_GRABULATOR=m +# CONFIG_DECNET_ROUTER is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFXX=m +CONFIG_DELL_RBU=m +CONFIG_DEPCA=m +CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DEV_APPLETALK=y +CONFIG_DE_AOC=y +CONFIG_DGRS=m +CONFIG_DIGIEPCA=m +CONFIG_DL2K=m +CONFIG_DLCI=m +CONFIG_DLCI_COUNT=24 +CONFIG_DLCI_MAX=8 +CONFIG_DM9102=m +CONFIG_DM_CRYPT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_EMC=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_ZERO=m +CONFIG_DNOTIFY=y +CONFIG_DONGLE=y +# CONFIG_DONGLE_OLD is not set +CONFIG_DRM=m +CONFIG_DRM_I810=m +CONFIG_DRM_I830=m +CONFIG_DRM_I915=m +CONFIG_DRM_MGA=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_SAVAGE=m +CONFIG_DRM_SIS=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_VIA=m +CONFIG_DSCC4=m +CONFIG_DSCC4_PCISYNC=y +CONFIG_DSCC4_PCI_RST=y +CONFIG_DTLK=m +CONFIG_DUMMY=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_DVB=y +CONFIG_DVB_ATMEL_AT76C651=m +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_B2C2_FLEXCOP=m +# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_BT8XX=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_PATCH=m +CONFIG_DVB_CINERGYT2=m +CONFIG_DVB_CINERGYT2_ENABLE_RC_INPUT_DEVICE=y +CONFIG_DVB_CINERGYT2_QUERY_INTERVAL=250 +CONFIG_DVB_CINERGYT2_RC_QUERY_INTERVAL=100 +CONFIG_DVB_CINERGYT2_STREAM_BUF_SIZE=512 +CONFIG_DVB_CINERGYT2_STREAM_URB_COUNT=32 +CONFIG_DVB_CINERGYT2_TUNING=y +CONFIG_DVB_CORE=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CX24110=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_L64781=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_MT312=m +CONFIG_DVB_MT352=m +CONFIG_DVB_NXT2002=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_PLUTO2=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_STV0297=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA80XX=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_DVB_USB=m +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_CXUSB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_VES1820=m +CONFIG_DVB_VES1X93=m +CONFIG_DXR3=m +CONFIG_E100=m +CONFIG_E1000=m +# CONFIG_E1000_NAPI is not set +CONFIG_E2100=m +CONFIG_EARLY_PRINTK=y +CONFIG_ECC=m +CONFIG_ECONET=m +CONFIG_ECONET_AUNUDP=y +CONFIG_ECONET_NATIVE=y +# CONFIG_EDD is not set +CONFIG_EEPRO100=m +CONFIG_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +CONFIG_EFI=y +CONFIG_EFI_PARTITION=y +CONFIG_EFI_VARS=y +CONFIG_EFS_FS=m +CONFIG_EISA=y +CONFIG_EISA_NAMES=y +CONFIG_EISA_PCI_EISA=y +CONFIG_EL1=m +CONFIG_EL16=m +CONFIG_EL2=m +CONFIG_EL3=m +CONFIG_ELMC=m +CONFIG_ELMC_II=m +CONFIG_ELPLUS=m +CONFIG_EM8300=m +CONFIG_EM8300_DICOMCTRL=y +CONFIG_EM8300_DICOMFIX=y +CONFIG_EM8300_DICOMPAL=y +CONFIG_EM8300_LOOPBACK=y +CONFIG_EM8300_UCODETIMEOUT=y +# CONFIG_EMBEDDED is not set +CONFIG_EPIC100=m +CONFIG_EPOLL=y +CONFIG_EQUALIZER=m +CONFIG_ES3210=m +CONFIG_ESI_DONGLE=m +# CONFIG_ESPSERIAL is not set +CONFIG_ETH16I=m +CONFIG_EUROTECH_WDT=m +CONFIG_EWRK3=m +CONFIG_EXPERIMENTAL=y +CONFIG_EXPORTFS=m +CONFIG_EXT2_FS=m +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT2_FS_XATTR=y +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=m +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT3_FS_XATTR=y +CONFIG_FARSYNC=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_FAT_FS=m +CONFIG_FB=y +CONFIG_FB_3DFX=m +# CONFIG_FB_3DFX_ACCEL is not set +# CONFIG_FB_ARC is not set +# CONFIG_FB_ASILIANT is not set +CONFIG_FB_ATY=m +CONFIG_FB_ATY128=m +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GENERIC_LCD=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_XL_INIT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_CIRRUS=m +CONFIG_FB_CYBER2000=m +CONFIG_FB_CYBLA=m +CONFIG_FB_GEODE=y +CONFIG_FB_GEODE_GX1=m +CONFIG_FB_HGA=m +# CONFIG_FB_HGA_ACCEL is not set +CONFIG_FB_I810=m +# CONFIG_FB_I810_GTF is not set +CONFIG_FB_IMAC=y +# CONFIG_FB_IMSTT is not set +CONFIG_FB_INTEL=m +# CONFIG_FB_INTEL_DEBUG is not set +CONFIG_FB_KYRO=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MULTIHEAD=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_I2C=y +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +# CONFIG_FB_PM3 is not set +CONFIG_FB_RADEON=m +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_RADEON_I2C=y +# CONFIG_FB_RADEON_OLD is not set +CONFIG_FB_RIVA=m +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_I2C=y +CONFIG_FB_S1D13XXX=m +CONFIG_FB_SAVAGE=m +CONFIG_FB_SAVAGE_ACCEL=y +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_TRIDENT=m +# CONFIG_FB_TRIDENT_ACCEL is not set +CONFIG_FB_VESA=m +CONFIG_FB_VGA16=m +# CONFIG_FB_VIRTUAL is not set +CONFIG_FB_VOODOO1=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x16=y +CONFIG_FONT_8x8=y +CONFIG_FORCEDETH=m +CONFIG_FRAMEBUFFER_CONSOLE=m +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_FS_MBCACHE=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FTL=m +CONFIG_FUSE_FS=m +CONFIG_FUSION=y +CONFIG_FUSION_CTL=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_LAN=m +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_SAS=m +CONFIG_FUSION_SPI=m +CONFIG_FUTEX=y +CONFIG_FW_LOADER=y +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GIRBIL_DONGLE=m +CONFIG_GSCD=m +CONFIG_HAMACHI=m +CONFIG_HAMRADIO=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_HAPPYMEAL=m +CONFIG_HDLC=m +CONFIG_HDLC_CISCO=y +CONFIG_HDLC_FR=y +CONFIG_HDLC_PPP=y +CONFIG_HDLC_RAW=y +CONFIG_HDLC_RAW_ETH=y +CONFIG_HDLC_X25=y +CONFIG_HERMES=m +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +# CONFIG_HID_FF is not set +CONFIG_HIGHMEM=y +CONFIG_HIGHPTE=y +CONFIG_HIPPI=y +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_BKM_A4T=y +# CONFIG_HISAX_DEBUG is not set +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_ENTERNOW_PCI=y +CONFIG_HISAX_EURO=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_FRITZ_PCIPNP=m +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HDLC=y +CONFIG_HISAX_HFC4S8S=m +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_HFCUSB=m +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_MAX_CARDS=8 +CONFIG_HISAX_MIC=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_NICCY=y +# CONFIG_HISAX_NO_KEYPAD is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_TELES_CS=m +CONFIG_HISAX_W6692=y +CONFIG_HOSTAP=m +CONFIG_HOSTAP_CS=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_PLX=m +CONFIG_HOSTESS_SV11=m +CONFIG_HOTPLUG=y +CONFIG_HOTPLUG_PCI=m +CONFIG_HOTPLUG_PCI_ACPI=m +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_COMPAQ=m +CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_FAKE=m +CONFIG_HOTPLUG_PCI_IBM=m +CONFIG_HOTPLUG_PCI_PCIE=m +# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_HOTPLUG_PCI_SHPC=m +# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set +CONFIG_HP100=m +CONFIG_HPET=y +CONFIG_HPET_MMAP=y +# CONFIG_HPET_RTC_IRQ is not set +CONFIG_HPET_TIMER=y +CONFIG_HPFS_FS=m +CONFIG_HPLAN=m +CONFIG_HPLAN_PLUS=m +# CONFIG_HPT34X_AUTODMA is not set +# CONFIG_HUGETLBFS is not set +# CONFIG_HUGETLB_PAGE is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_HWMON_VID=m +CONFIG_HW_CONSOLE=y +CONFIG_HW_RANDOM=m +# CONFIG_HZ_1000 is not set +CONFIG_I2C=m +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCA=m +CONFIG_I2C_ALGOPCF=m +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_CHARDEV=m +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +# CONFIG_I2C_DEBUG_CORE is not set +CONFIG_I2C_ELEKTOR=m +CONFIG_I2C_I801=m +CONFIG_I2C_I810=m +CONFIG_I2C_ISA=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PCA_ISA=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_PROSAVAGE=m +CONFIG_I2C_SAVAGE4=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_STUB=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_VOODOO3=m +CONFIG_I2O=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_BUS=m +CONFIG_I2O_CONFIG=m +CONFIG_I2O_CONFIG_OLD_IOCTL=y +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_PROC=m +CONFIG_I2O_SCSI=m +CONFIG_I6300ESB_WDT=m +CONFIG_I82092=m +CONFIG_I82365=m +CONFIG_I8K=m +CONFIG_I8XX_TCO=m +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_IBMLANA=m +CONFIG_IBMLS=m +# CONFIG_IBMMCA_SCSI_DEV_RESET is not set +CONFIG_IBMMCA_SCSI_ORDER_STANDARD=y +CONFIG_IBMOL=m +CONFIG_IBMTR=m +CONFIG_IBM_ASM=m +CONFIG_IDE=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_IDEDMA_PCI_AUTO=y +CONFIG_IDEPCI_SHARE_IRQ=y +# CONFIG_IDE_ARM is not set +# CONFIG_IDE_CHIPSETS is not set +CONFIG_IDE_GENERIC=m +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IEEE1394=m +# CONFIG_IEEE1394_CMP is not set +CONFIG_IEEE1394_CONFIG_ROM_IP1394=y +CONFIG_IEEE1394_DV1394=m +CONFIG_IEEE1394_ETH1394=m +# CONFIG_IEEE1394_EXPORT_FULL_API is not set +CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y +CONFIG_IEEE1394_OHCI1394=m +CONFIG_IEEE1394_OUI_DB=y +CONFIG_IEEE1394_PCILYNX=m +CONFIG_IEEE1394_RAWIO=m +CONFIG_IEEE1394_SBP2=m +# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set +# CONFIG_IEEE1394_VERBOSEDEBUG is not set +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE80211=m +CONFIG_IEEE80211_1_1_13=m +CONFIG_IEEE80211_1_1_13_CRYPT_CCMP=m +CONFIG_IEEE80211_1_1_13_CRYPT_TKIP=m +CONFIG_IEEE80211_1_1_13_CRYPT_WEP=m +CONFIG_IEEE80211_CRYPT_CCMP=m +CONFIG_IEEE80211_CRYPT_TKIP=m +CONFIG_IEEE80211_CRYPT_WEP=m +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_SOFTMAC=m +# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set +# CONFIG_IKCONFIG is not set +CONFIG_INET=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET_AH=m +CONFIG_INET_DCCP_DIAG=m +CONFIG_INET_DIAG=y +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_TCP_DIAG=y +CONFIG_INET_TUNNEL=m +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_IPOIB=m +# CONFIG_INFINIBAND_IPOIB_DEBUG is not set +CONFIG_INFINIBAND_MTHCA=m +# CONFIG_INFINIBAND_MTHCA_DEBUG is not set +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFTL=m +CONFIG_INITRAMFS_SOURCE="" +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_INOTIFY=y +CONFIG_INPUT=y +CONFIG_INPUT_ACERHK=m +CONFIG_INPUT_EVBUG=m +CONFIG_INPUT_EVDEV=m +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_INPUT_TSDEV=m +CONFIG_INPUT_TSDEV_SCREEN_X=240 +CONFIG_INPUT_TSDEV_SCREEN_Y=320 +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_WISTRON_BTNS=m +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_NOOP=y +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_MATCH_AHESP=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_LENGTH=m +CONFIG_IP6_NF_MATCH_LIMIT=m +CONFIG_IP6_NF_MATCH_MAC=m +CONFIG_IP6_NF_MATCH_MARK=m +CONFIG_IP6_NF_MATCH_MULTIPORT=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_OWNER=m +CONFIG_IP6_NF_MATCH_PHYSDEV=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_TARGET_MARK=m +CONFIG_IP6_NF_TARGET_NFQUEUE=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IPDDP=m +CONFIG_IPDDP_DECAP=y +CONFIG_IPDDP_ENCAP=y +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_POWEROFF=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPPP_FILTER=y +CONFIG_IPV6=m +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPW2100=m +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2100_FS_AMILO_M7400=m +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2200=m +# CONFIG_IPW2200_DEBUG is not set +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW3945=m +# CONFIG_IPW3945_DEBUG is not set +CONFIG_IPW3945_MONITOR=y +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_DCCP=m +CONFIG_IP_DCCP_CCID3=m +# CONFIG_IP_DCCP_DEBUG is not set +CONFIG_IP_DCCP_TFRC_LIB=m +# CONFIG_IP_DCCP_UNLOAD_HACK is not set +CONFIG_IP_FIB_HASH=y +# CONFIG_IP_FIB_TRIE is not set +CONFIG_IP_MROUTE=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_NF_AMANDA=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_IP_NF_CONNTRACK=m +# CONFIG_IP_NF_CONNTRACK_EVENTS is not set +CONFIG_IP_NF_CONNTRACK_MARK=y +CONFIG_IP_NF_CONNTRACK_NETLINK=m +CONFIG_IP_NF_CT_ACCT=y +CONFIG_IP_NF_CT_PROTO_SCTP=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_COMMENT=m +CONFIG_IP_NF_MATCH_CONNBYTES=m +CONFIG_IP_NF_MATCH_CONNMARK=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_DCCP=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_HASHLIMIT=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_MAC=m +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_PHYSDEV=m +CONFIG_IP_NF_MATCH_PKTTYPE=m +CONFIG_IP_NF_MATCH_REALM=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_SCTP=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_STRING=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_AMANDA=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_NAT_PPTP=m +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_NETBIOS_NS=m +CONFIG_IP_NF_PPTP=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_TARGET_CLASSIFY=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_CONNMARK=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_NFQUEUE=m +CONFIG_IP_NF_TARGET_NOTRACK=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TFTP=m +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_IP_PNP is not set +CONFIG_IP_ROUTE_FWMARK=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_MULTIPATH_CACHED=y +CONFIG_IP_ROUTE_MULTIPATH_DRR=m +CONFIG_IP_ROUTE_MULTIPATH_RANDOM=m +CONFIG_IP_ROUTE_MULTIPATH_RR=m +CONFIG_IP_ROUTE_MULTIPATH_WRANDOM=m +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_SCTP=m +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_TAB_BITS=12 +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_WRR=m +CONFIG_IRCOMM=m +CONFIG_IRDA=m +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRPORT_SIR=m +CONFIG_IRTTY_SIR=m +CONFIG_ISA=y +CONFIG_ISAPNP=y +CONFIG_ISA_DMA_API=y +CONFIG_ISCSI_TCP=m +CONFIG_ISDN=m +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIDRV=m +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_MAINT=m +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVERSION=m +CONFIG_ISDN_DRV_ACT2000=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_B1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_C4=m +CONFIG_ISDN_DRV_AVMB1_T1ISA=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_ISDN_DRV_HISAX=m +CONFIG_ISDN_DRV_ICN=m +CONFIG_ISDN_DRV_PCBIT=m +CONFIG_ISDN_DRV_SC=m +CONFIG_ISDN_I4L=m +CONFIG_ISDN_MPP=y +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_TTY_FAX=y +CONFIG_ISDN_X25=y +# CONFIG_ISI is not set +CONFIG_ISO9660_FS=m +CONFIG_ISP16_CDI=m +CONFIG_IXGB=m +# CONFIG_IXGB_NAPI is not set +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_SUMMARY is not set +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS_FS=m +CONFIG_JFFS_FS_VERBOSE=0 +CONFIG_JFFS_PROC_FS=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +CONFIG_JFS_STATISTICS=y +CONFIG_JOLIET=y +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +# CONFIG_KEXEC is not set +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_LKKBD=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYS=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +CONFIG_KMOD=y +CONFIG_KOBJECT_UEVENT=y +# CONFIG_KPROBES is not set +CONFIG_LANCE=m +CONFIG_LANMEDIA=m +CONFIG_LAPB=m +CONFIG_LAPBETHER=m +CONFIG_LBD=y +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_DEVICE=y +# CONFIG_LDM_DEBUG is not set +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_LIBCRC32C=m +CONFIG_LITELINK_DONGLE=m +CONFIG_LLC=y +CONFIG_LLC2=m +CONFIG_LNE390=m +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_LOCK_KERNEL=y +# CONFIG_LOGO is not set +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LP486E=m +# CONFIG_LP_CONSOLE is not set +CONFIG_LTPC=m +CONFIG_LXT_PHY=m +# CONFIG_M386 is not set +# CONFIG_M586 is not set +# CONFIG_M586MMX is not set +# CONFIG_M586TSC is not set +CONFIG_MA600_DONGLE=m +CONFIG_MACHZ_WDT=m +CONFIG_MAC_PARTITION=y +CONFIG_MADGEMC=m +CONFIG_MAGIC_SYSRQ=y +CONFIG_MARVELL_PHY=m +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MCA=y +CONFIG_MCA_LEGACY=y +# CONFIG_MCA_PROC_FS is not set +CONFIG_MCDX=m +CONFIG_MCP2120_DONGLE=m +# CONFIG_MCRUSOE is not set +# CONFIG_MCYRIXIII is not set +CONFIG_MD=y +CONFIG_MDA_CONSOLE=m +CONFIG_MD_FAULTY=m +CONFIG_MD_LINEAR=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID5=m +CONFIG_MD_RAID6=m +# CONFIG_MEFFICEON is not set +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_SAS=m +# CONFIG_MGEODEGX1 is not set +CONFIG_MICROCODE=m +CONFIG_MII=m +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MISDN_AVM_FRITZ=y +CONFIG_MISDN_DRV=m +CONFIG_MISDN_DSP=y +# CONFIG_MISDN_HFCMULTI is not set +CONFIG_MISDN_HFCPCI=y +CONFIG_MISDN_HFCUSB=y +# CONFIG_MISDN_MEMDEBUG is not set +CONFIG_MISDN_SPEEDFAX=y +CONFIG_MISDN_W6692=y +CONFIG_MIXCOMWD=m +# CONFIG_MK6 is not set +# CONFIG_MK8 is not set +CONFIG_MKISS=m +CONFIG_MMC=m +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_SDHCI=m +CONFIG_MMC_WBSD=m +CONFIG_MMU=y +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +# CONFIG_MOUSE_ATIXL is not set +CONFIG_MOUSE_INPORT=m +CONFIG_MOUSE_LOGIBM=m +CONFIG_MOUSE_PC110PAD=m +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MOXA_SMARTIO=m +# CONFIG_MPENTIUM4 is not set +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +CONFIG_MSDOS_FS=m +CONFIG_MSDOS_PARTITION=y +CONFIG_MTD=m +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTD_ABSENT=m +CONFIG_MTD_AMD76XROM=m +CONFIG_MTD_BLKMTD=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_BLOCK2MTD=m +CONFIG_MTD_BLOCK_RO=m +CONFIG_MTD_CFI=m +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_AMDSTD_RETRY=0 +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_CHAR=m +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_CONCAT=m +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_DILNETPC=m +CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000 +CONFIG_MTD_DOC2000=m +CONFIG_MTD_DOC2001=m +CONFIG_MTD_DOC2001PLUS=m +CONFIG_MTD_DOCECC=m +CONFIG_MTD_DOCPROBE=m +CONFIG_MTD_DOCPROBE_ADDRESS=0 +# CONFIG_MTD_DOCPROBE_ADVANCED is not set +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_ICHXROM=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_L440GX=m +CONFIG_MTD_MAP_BANK_WIDTH_1=y +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +CONFIG_MTD_MAP_BANK_WIDTH_2=y +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +CONFIG_MTD_MTDRAM=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_DISKONCHIP=m +# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set +CONFIG_MTD_NAND_IDS=m +CONFIG_MTD_NAND_NANDSIM=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +CONFIG_MTD_NETSC520=m +CONFIG_MTD_NETtel=m +# CONFIG_MTD_OBSOLETE_CHIPS is not set +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_PCI=m +CONFIG_MTD_PCMCIA=m +# CONFIG_MTD_PCMCIA_ANONYMOUS is not set +CONFIG_MTD_PHRAM=m +CONFIG_MTD_PHYSMAP=m +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 +CONFIG_MTD_PHYSMAP_LEN=0x4000000 +CONFIG_MTD_PHYSMAP_START=0x8000000 +CONFIG_MTD_PLATRAM=m +CONFIG_MTD_PMC551=m +# CONFIG_MTD_PMC551_BUGFIX is not set +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_PNC2000=m +CONFIG_MTD_RAM=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +CONFIG_MTD_REDBOOT_PARTS=m +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +CONFIG_MTD_ROM=m +CONFIG_MTD_SBC_GXX=m +CONFIG_MTD_SC520CDP=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_SCx200_DOCFLASH=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_TS5500=m +CONFIG_MTRR=y +# CONFIG_MVIAC3_2 is not set +CONFIG_MWAVE=m +# CONFIG_MWINCHIP2 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MWINCHIPC6 is not set +CONFIG_N2=m +CONFIG_NATSEMI=m +CONFIG_NCPFS_EXTRAS=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_PACKET_SIGNING=y +# CONFIG_NCPFS_SMALLDOS is not set +CONFIG_NCPFS_STRONG=y +CONFIG_NCP_FS=m +CONFIG_NDISWRAPPER=m +CONFIG_NE2000=m +CONFIG_NE2K_PCI=m +CONFIG_NE2_MCA=m +CONFIG_NE3210=m +CONFIG_NET=y +CONFIG_NETCONSOLE=m +CONFIG_NETDEVICES=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETPOLL=y +# CONFIG_NETPOLL_RX is not set +# CONFIG_NETPOLL_TRAP is not set +CONFIG_NETROM=m +CONFIG_NET_ACX=m +CONFIG_NET_ACX_PCI=y +CONFIG_NET_ACX_USB=y +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_ACT is not set +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_FW=m +# CONFIG_NET_CLS_IND is not set +CONFIG_NET_CLS_POLICE=y +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_U32=m +# CONFIG_NET_DIVERT is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_ETHERNET=y +CONFIG_NET_FC=y +CONFIG_NET_IPG=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_NET_IPIP=m +CONFIG_NET_ISA=y +CONFIG_NET_KEY=m +CONFIG_NET_MRV8K=m +CONFIG_NET_PCI=y +CONFIG_NET_PCMCIA=y +CONFIG_NET_PKTGEN=m +CONFIG_NET_POCKET=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_NET_RADIO=y +CONFIG_NET_RT2400=m +CONFIG_NET_RT2500=m +CONFIG_NET_RT2600=m +CONFIG_NET_RTL8187=m +CONFIG_NET_RTL818X=m +CONFIG_NET_SB1000=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_CBQ=m +# CONFIG_NET_SCH_CLK_CPU is not set +# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set +CONFIG_NET_SCH_CLK_JIFFIES=y +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_TULIP=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_RACAL=y +CONFIG_NET_VENDOR_SMC=y +CONFIG_NET_WIRELESS=y +CONFIG_NFSD=m +CONFIG_NFSD_TCP=y +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +CONFIG_NFSD_V4=y +CONFIG_NFS_COMMON=y +CONFIG_NFS_DIRECTIO=y +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +CONFIG_NFS_V4=y +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_NI5010=m +CONFIG_NI52=m +CONFIG_NI65=m +CONFIG_NLS=y +CONFIG_NLS_ASCII=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_DEFAULT="cp437" +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m +# CONFIG_NOHIGHMEM is not set +CONFIG_NORTEL_HERMES=m +CONFIG_NS83820=m +CONFIG_NSC_FIR=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_FS=m +# CONFIG_NTFS_RW is not set +CONFIG_NVRAM=m +CONFIG_N_HDLC=m +CONFIG_OBSOLETE_MODPARM=y +# CONFIG_OBSOLETE_OSS_DRIVER is not set +# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_OPROFILE=m +CONFIG_OPTCD=m +CONFIG_OSF_PARTITION=y +CONFIG_PACKARDBELL_E5=m +CONFIG_PACKET=m +CONFIG_PACKET_MMAP=y +CONFIG_PARIDE=m +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_BPCK6=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_EPAT=m +# CONFIG_PARIDE_EPATC8 is not set +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_PARIDE_PARPORT=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PG=m +CONFIG_PARIDE_PT=m +CONFIG_PARPORT=m +CONFIG_PARPORT_1284=y +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_NOT_PC=y +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARPORT_SERIAL=m +CONFIG_PARTITION_ADVANCED=y +CONFIG_PC300=m +CONFIG_PC300_MLPPP=y +CONFIG_PCCARD=m +CONFIG_PCCARD_NONSTATIC=m +CONFIG_PCI=y +CONFIG_PCI200SYN=m +CONFIG_PCIEPORTBUS=y +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_ATMEL=m +CONFIG_PCI_BIOS=y +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_DIRECT=y +CONFIG_PCI_GOANY=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GODIRECT is not set +# CONFIG_PCI_GOMMCONFIG is not set +CONFIG_PCI_HERMES=m +# CONFIG_PCI_LEGACY_PROC is not set +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_MSI=y +CONFIG_PCMCIA=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_PCMCIA_AXNET=m +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_IBMTR=m +CONFIG_PCMCIA_IOCTL=y +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_NETWAVE=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_PROBE=y +CONFIG_PCMCIA_PROBE_MEM=y +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_PCMCIA_WL3501=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCNET32=m +CONFIG_PCWATCHDOG=m +CONFIG_PD6729=m +CONFIG_PDC202XX_BURST=y +CONFIG_PDC202XX_FORCE=y +CONFIG_PHONE=m +CONFIG_PHONE_IXJ=m +CONFIG_PHONE_IXJ_PCMCIA=m +CONFIG_PHYLIB=m +CONFIG_PHYSICAL_START=0x100000 +CONFIG_PLIP=m +CONFIG_PLX_HERMES=m +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_LEGACY=y +CONFIG_PM_STD_PARTITION="" +CONFIG_PNP=y +CONFIG_PNPACPI=y +CONFIG_PNPBIOS=y +CONFIG_PNPBIOS_PROC_FS=y +# CONFIG_PNP_DEBUG is not set +CONFIG_POSIX_MQUEUE=y +CONFIG_PPDEV=m +CONFIG_PPP=m +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_SYNC_TTY=m +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_PRINTER=m +CONFIG_PRINTK=y +CONFIG_PRINTK_TIME=y +CONFIG_PRISM2=y +CONFIG_PRISM2_CS=m +CONFIG_PRISM2_PCI=m +CONFIG_PRISM2_PLX=m +CONFIG_PRISM2_USB=m +CONFIG_PRISM54=m +CONFIG_PRISM54_SOFTMAC=m +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROFILING=y +CONFIG_PROTEON=m +CONFIG_PSS_MIXER=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QNX4FS_FS=m +# CONFIG_QNX4FS_RW is not set +CONFIG_QSEMI_PHY=m +CONFIG_QUOTA=y +CONFIG_QUOTACTL=y +CONFIG_R1000=m +CONFIG_R3964=m +CONFIG_R8169=m +# CONFIG_R8169_NAPI is not set +CONFIG_R8169_VLAN=y +CONFIG_RADIO_AZTECH=m +CONFIG_RADIO_CADET=m +CONFIG_RADIO_GEMTEK=m +CONFIG_RADIO_GEMTEK_PCI=m +CONFIG_RADIO_MAESTRO=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_MIROPCM20=m +CONFIG_RADIO_MIROPCM20_RDS=m +CONFIG_RADIO_RTRACK=m +CONFIG_RADIO_RTRACK2=m +CONFIG_RADIO_SF16FMI=m +CONFIG_RADIO_SF16FMR2=m +CONFIG_RADIO_TERRATEC=m +CONFIG_RADIO_TRUST=m +CONFIG_RADIO_TYPHOON=m +CONFIG_RADIO_TYPHOON_PROC_FS=y +CONFIG_RADIO_ZOLTRIX=m +CONFIG_RAID_ATTRS=m +CONFIG_RAMFS=y +CONFIG_RAW_DRIVER=m +# CONFIG_RCU_TORTURE_TEST is not set +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_DEC16=y +# CONFIG_REGPARM is not set +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_FS=m +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_REISERFS_FS_XATTR=y +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_RELAYFS_FS=m +CONFIG_RFD_FTL=m +CONFIG_ROADRUNNER=m +# CONFIG_ROADRUNNER_LARGE_RINGS is not set +CONFIG_ROCKETPORT=m +CONFIG_ROMFS_FS=m +CONFIG_ROSE=m +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPCSEC_GSS_SPKM3=m +CONFIG_RTC_X1205_I2C=m +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_RXRPC=m +CONFIG_S2IO=m +# CONFIG_S2IO_NAPI is not set +CONFIG_SAS_CLASS=m +# CONFIG_SAS_DEBUG is not set +CONFIG_SBC8360_WDT=m +CONFIG_SBNI=m +# CONFIG_SBNI_MULTILINE is not set +CONFIG_SC1200_WDT=m +CONFIG_SC520_WDT=m +CONFIG_SC6600=y +CONFIG_SC6600_CDROM=4 +CONFIG_SC6600_CDROMBASE=0x0 +CONFIG_SC6600_JOY=y +CONFIG_SCC=m +# CONFIG_SCC_DELAY is not set +# CONFIG_SCC_TRXECHO is not set +# CONFIG_SCHEDSTATS is not set +CONFIG_SCSI=m +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AHA1740=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_SCSI_AIC7XXX_OLD=m +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_ATA_PIIX=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_DC390T=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_EATA_PIO=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_FD_MCS=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_GENERIC_NCR5380_MMIO=m +CONFIG_SCSI_GENERIC_NCR53C400=y +CONFIG_SCSI_IBMMCA=m +CONFIG_SCSI_IMM=m +CONFIG_SCSI_IN2000=m +# CONFIG_SCSI_INIA100 is not set +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPR=m +# CONFIG_SCSI_IPR_DUMP is not set +# CONFIG_SCSI_IPR_TRACE is not set +CONFIG_SCSI_IPS=m +CONFIG_SCSI_ISCSI_ATTRS=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_LPFC=m +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=4 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +CONFIG_SCSI_NCR53C8XX_SYNC=5 +CONFIG_SCSI_NCR_D700=m +CONFIG_SCSI_NCR_Q720=m +CONFIG_SCSI_NSP32=m +# CONFIG_SCSI_OMIT_FLASHPOINT is not set +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_PDC_ADMA=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_PROC_FS=y +CONFIG_SCSI_PSI240I=m +CONFIG_SCSI_QLA21XX=m +CONFIG_SCSI_QLA22XX=m +CONFIG_SCSI_QLA2300=m +CONFIG_SCSI_QLA2322=m +CONFIG_SCSI_QLA24XX=m +CONFIG_SCSI_QLA2XXX=m +CONFIG_SCSI_QLA6312=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_QLOGIC_FC=m +CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SATA=m +CONFIG_SCSI_SATA_ACPI=y +CONFIG_SCSI_SATA_AHCI=m +CONFIG_SCSI_SATA_INTEL_COMBINED=y +CONFIG_SCSI_SATA_MV=m +CONFIG_SCSI_SATA_NV=m +CONFIG_SCSI_SATA_PROMISE=m +CONFIG_SCSI_SATA_QSTOR=m +CONFIG_SCSI_SATA_SIL=m +CONFIG_SCSI_SATA_SIL24=m +CONFIG_SCSI_SATA_SIS=m +CONFIG_SCSI_SATA_SVW=m +CONFIG_SCSI_SATA_SX4=m +CONFIG_SCSI_SATA_ULI=m +CONFIG_SCSI_SATA_VIA=m +CONFIG_SCSI_SATA_VITESSE=m +CONFIG_SCSI_SEAGATE=m +CONFIG_SCSI_SIM710=m +CONFIG_SCSI_SPI2_ATTRS=m +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +CONFIG_SCSI_T128=m +CONFIG_SCSI_U14_34F=m +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y +CONFIG_SCSI_ULTRASTOR=m +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +CONFIG_SCTP_HMAC_MD5=y +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +CONFIG_SCx200=m +CONFIG_SCx200_ACB=m +CONFIG_SCx200_GPIO=m +CONFIG_SCx200_I2C=m +CONFIG_SCx200_I2C_SCL=12 +CONFIG_SCx200_I2C_SDA=13 +CONFIG_SCx200_WDT=m +CONFIG_SDLA=m +CONFIG_SEALEVEL_4021=m +CONFIG_SECCOMP=y +# CONFIG_SECCOMP_DISABLE_TSC is not set +CONFIG_SECURITY=y +CONFIG_SECURITY_CAPABILITIES=m +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_REALTIME=m +CONFIG_SECURITY_ROOTPLUG=m +CONFIG_SECURITY_SECLVL=m +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SEEQ8005=m +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SEMAPHORE_SLEEPERS=y +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_DS1337=m +CONFIG_SENSORS_DS1374=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_EEPROM=m +CONFIG_SENSORS_FSCHER=m +CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6875=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PCA9539=m +CONFIG_SENSORS_PCF8574=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_RTC8564=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_ACCENT=m +# CONFIG_SERIAL_8250_ACPI is not set +CONFIG_SERIAL_8250_BOCA=m +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_FOURPORT=m +CONFIG_SERIAL_8250_HUB6=m +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_MCA=m +CONFIG_SERIAL_8250_NR_UARTS=48 +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIO=y +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_I8042=y +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_RAW=m +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SHAPER=m +CONFIG_SHMEM=y +CONFIG_SIGMATEL_FIR=m +CONFIG_SIS190=m +CONFIG_SIS900=m +CONFIG_SJCD=m +CONFIG_SK98LIN=m +CONFIG_SKFP=m +CONFIG_SKGE=m +CONFIG_SKISA=m +CONFIG_SKMC=m +CONFIG_SKY2=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_SLIP_SMART=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +CONFIG_SMC9194=m +CONFIG_SMCTR=m +CONFIG_SMC_IRCC_FIR=m +CONFIG_SND=m +CONFIG_SND_AC97_BUS=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_AD1816A=m +CONFIG_SND_AD1848=m +CONFIG_SND_AD1848_LIB=m +CONFIG_SND_AD1889=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ALS100=m +CONFIG_SND_ALS4000=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AZT2320=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMI8330=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_CS4231=m +CONFIG_SND_CS4231_LIB=m +CONFIG_SND_CS4232=m +CONFIG_SND_CS4236=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +# CONFIG_SND_DEBUG is not set +CONFIG_SND_DT019X=m +CONFIG_SND_DUMMY=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1688=m +CONFIG_SND_ES18XX=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_ES968=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X=m +CONFIG_SND_GENERIC_DRIVER=y +CONFIG_SND_GUSCLASSIC=m +CONFIG_SND_GUSEXTREME=m +CONFIG_SND_GUSMAX=m +CONFIG_SND_GUS_SYNTH=m +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_INTERWAVE=m +CONFIG_SND_INTERWAVE_STB=m +CONFIG_SND_KORG1212=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MIXART=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_MPU401=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_MTPAV=m +CONFIG_SND_NM256=m +CONFIG_SND_OPL3SA2=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL4_LIB=m +CONFIG_SND_OPTI92X_AD1848=m +CONFIG_SND_OPTI92X_CS4231=m +CONFIG_SND_OPTI93X=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_PCM=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PDAUDIOCF=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_RTCTIMER=m +CONFIG_SND_SB16=m +CONFIG_SND_SB16_CSP=y +CONFIG_SND_SB8=m +CONFIG_SND_SBAWE=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_SGALAXY=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_SSCAPE=m +CONFIG_SND_TIMER=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_USX2Y=m +# CONFIG_SND_VERBOSE_PRINTK is not set +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_VX222=m +CONFIG_SND_VXPOCKET=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_WAVEFRONT=m +CONFIG_SND_YMFPCI=m +CONFIG_SOFTWARE_SUSPEND=y +CONFIG_SOFT_WATCHDOG=m +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SONYPI=m +CONFIG_SOUND=m +CONFIG_SOUND_ACI_MIXER=m +# CONFIG_SOUND_AD1816 is not set +CONFIG_SOUND_AD1889=m +CONFIG_SOUND_ADLIB=m +CONFIG_SOUND_AEDSP16=m +# CONFIG_SOUND_DMAP is not set +CONFIG_SOUND_FUSION=m +CONFIG_SOUND_ICH=m +CONFIG_SOUND_KAHLUA=m +CONFIG_SOUND_MPU401=m +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +CONFIG_SOUND_MSS=m +CONFIG_SOUND_OPL3SA2=m +CONFIG_SOUND_OSS=m +CONFIG_SOUND_PAS=m +CONFIG_SOUND_PRIME=m +CONFIG_SOUND_PSS=m +CONFIG_SOUND_SB=m +# CONFIG_SOUND_TRACEINIT is not set +CONFIG_SOUND_TRIDENT=m +CONFIG_SOUND_TRIX=m +CONFIG_SOUND_TVMIXER=m +CONFIG_SOUND_UART6850=m +CONFIG_SOUND_VMIDI=m +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_SPECIALIX=m +# CONFIG_SPECIALIX_RTSCTS is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_1_0_COMPATIBILITY is not set +CONFIG_SQUASHFS_2_0_COMPATIBILITY=y +CONFIG_STALDRV=y +CONFIG_STANDALONE=y +CONFIG_STRIP=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_SUNGEM=m +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_SUN_PARTITION=y +CONFIG_SWAP=y +CONFIG_SX=m +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_CS=m +CONFIG_SYNCLINK_SYNCPPP=m +CONFIG_SYN_COOKIES=y +CONFIG_SYSCTL=y +CONFIG_SYSFS=y +CONFIG_SYSVIPC=y +CONFIG_SYSV_FS=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +CONFIG_TCG_NSC=m +CONFIG_TCG_TPM=m +CONFIG_TCIC=m +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_BIC=y +CONFIG_TEKRAM_DONGLE=m +CONFIG_TELCLOCK=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TIGON3=m +# CONFIG_TINY_SHMEM is not set +CONFIG_TIPAR=m +CONFIG_TLAN=m +CONFIG_TMD_HERMES=m +CONFIG_TMPFS=y +CONFIG_TMS380TR=m +CONFIG_TMSPCI=m +CONFIG_TOSHIBA=m +CONFIG_TOSHIBA_FIR=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TR=y +CONFIG_TULIP=m +# CONFIG_TULIP_MMIO is not set +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_NAPI is not set +CONFIG_TUN=m +CONFIG_TUNER_3036=m +CONFIG_TYPHOON=m +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +CONFIG_UID16=y +CONFIG_ULI526X=m +CONFIG_ULTRA=m +CONFIG_ULTRA32=m +CONFIG_ULTRAMCA=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNION_FS=m +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_USB=m +CONFIG_USBPCWATCHDOG=m +CONFIG_USB_ACECAD=m +CONFIG_USB_ACM=m +CONFIG_USB_AIPTEK=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_APPLETOUCH=m +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_ATI_REMOTE=m +CONFIG_USB_ATI_REMOTE2=m +CONFIG_USB_ATM=m +CONFIG_USB_ATMEL=m +CONFIG_USB_AUERSWALD=m +# CONFIG_USB_BANDWIDTH is not set +CONFIG_USB_BELKIN=y +CONFIG_USB_CATC=m +CONFIG_USB_CPADDEV=y +CONFIG_USB_CXACRU=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_DABUSB=m +# CONFIG_USB_DEBUG is not set +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DSBR=m +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_EAGLE=m +CONFIG_USB_EGALAX=m +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_SPLIT_ISO=y +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_EPSON2888=y +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_EZUSB=y +CONFIG_USB_FILE_STORAGE=m +# CONFIG_USB_FILE_STORAGE_TEST is not set +CONFIG_USB_GADGET=m +CONFIG_USB_GADGETFS=m +# CONFIG_USB_GADGET_DEBUG_FILES is not set +CONFIG_USB_GADGET_DUALSPEED=y +# CONFIG_USB_GADGET_DUMMY_HCD is not set +# CONFIG_USB_GADGET_GOKU is not set +# CONFIG_USB_GADGET_LH7A40X is not set +CONFIG_USB_GADGET_NET2280=y +# CONFIG_USB_GADGET_OMAP is not set +# CONFIG_USB_GADGET_PXA2XX is not set +CONFIG_USB_GADGET_SELECTED=y +CONFIG_USB_G_SERIAL=m +CONFIG_USB_HID=m +CONFIG_USB_HIDDEV=y +CONFIG_USB_HIDINPUT=y +CONFIG_USB_HIDINPUT_POWERBOOK=y +CONFIG_USB_IBMCAM=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_IRDA=m +# CONFIG_USB_ISP116X_HCD is not set +CONFIG_USB_ITMTOUCH=m +CONFIG_USB_KAWETH=m +CONFIG_USB_KBD=m +CONFIG_USB_KBTAB=m +# CONFIG_USB_KEYSPAN_REMOTE is not set +CONFIG_USB_KONICAWC=m +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_MON=y +CONFIG_USB_MOUSE=m +CONFIG_USB_MTOUCH=m +CONFIG_USB_NET2280=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_ZAURUS=m +# CONFIG_USB_OHCI_BIG_ENDIAN is not set +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_OTG is not set +CONFIG_USB_OV511=m +CONFIG_USB_OV511_DECOMP=m +CONFIG_USB_OV518_DECOMP=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_PHIDGETKIT=m +CONFIG_USB_PHIDGETSERVO=m +CONFIG_USB_PODXTPRO=m +CONFIG_USB_POWERMATE=m +CONFIG_USB_PRINTER=m +CONFIG_USB_PWC=m +CONFIG_USB_QC=m +CONFIG_USB_RIO500=m +CONFIG_USB_RT2570=m +CONFIG_USB_RTL8150=m +CONFIG_USB_SE401=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_AIRPRIME=m +# CONFIG_USB_SERIAL_ANYDATA is not set +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CP2101=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_HP4X=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_KEYSPAN=m +# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SISUSBVGA=m +# CONFIG_USB_SISUSBVGA_CON is not set +CONFIG_USB_SL811_CS=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SN9C102=m +CONFIG_USB_SPCA5XX=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_STORAGE=m +CONFIG_USB_STORAGE_DATAFAB=y +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DPCM=y +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +CONFIG_USB_STORAGE_JUMPSHOT=y +CONFIG_USB_STORAGE_SDDR09=y +CONFIG_USB_STORAGE_SDDR55=y +CONFIG_USB_STORAGE_USBAT=y +CONFIG_USB_STV680=m +CONFIG_USB_SUSPEND=y +CONFIG_USB_SYNAPTICS=m +CONFIG_USB_TEST=m +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_USBNET=m +CONFIG_USB_USS720=m +CONFIG_USB_VICAM=m +CONFIG_USB_W9968CF=m +CONFIG_USB_WACOM=m +CONFIG_USB_XPAD=m +CONFIG_USB_XUSBATM=m +CONFIG_USB_YEALINK=m +CONFIG_USB_ZD1201=m +CONFIG_USB_ZD1211=m +CONFIG_USB_ZERO=m +# CONFIG_VENDOR_SANGOMA is not set +CONFIG_VFAT_FS=m +CONFIG_VGA_CONSOLE=y +CONFIG_VIA_FIR=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_VIA_VELOCITY=m +CONFIG_VIDEO_AUDIO_DECODER=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT848_DVB=y +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_BUF=m +CONFIG_VIDEO_BUF_DVB=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_PP=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_DVB_ALL_FRONTENDS=y +CONFIG_VIDEO_DECODER=m +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_DPC=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_IR=m +CONFIG_VIDEO_MEYE=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_OVCAMCHIP=m +CONFIG_VIDEO_PMS=m +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_SAA7134_DVB_ALL_FRONTENDS=y +CONFIG_VIDEO_SAA7134_OSS=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_SELECT=y +CONFIG_VIDEO_STRADIS=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_VIDEOBUF=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +# CONFIG_VIDEO_ZR36120 is not set +CONFIG_VLAN_8021Q=m +CONFIG_VLSI_FIR=m +CONFIG_VORTEX=m +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_VXFS_FS=m +CONFIG_W1=m +CONFIG_W1_DS2433=m +# CONFIG_W1_DS2433_CRC is not set +CONFIG_W1_DS9490=m +CONFIG_W1_DS9490_BRIDGE=m +CONFIG_W1_MATROX=m +CONFIG_W1_SMEM=m +CONFIG_W1_THERM=m +CONFIG_W83627HF_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_WAFER_WDT=m +CONFIG_WAN=y +CONFIG_WANXL=m +CONFIG_WAN_ROUTER=m +CONFIG_WAN_ROUTER_DRIVERS=y +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WAVELAN=m +CONFIG_WD80x3=m +# CONFIG_WDC_ALI15X3 is not set +CONFIG_WDT=m +CONFIG_WDTPCI=m +CONFIG_WDT_501=y +CONFIG_WDT_501_PCI=y +CONFIG_WINBOND_840=m +CONFIG_WINBOND_FIR=m +CONFIG_WLAN_NG=y +CONFIG_X25=m +CONFIG_X25_ASY=m +CONFIG_X86=y +CONFIG_X86_32=y +CONFIG_X86_ACPI_CPUFREQ=m +# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set +# CONFIG_X86_BIGSMP is not set +CONFIG_X86_BIOS_REBOOT=y +CONFIG_X86_BSWAP=y +CONFIG_X86_CMPXCHG=y +CONFIG_X86_CPUFREQ_NFORCE2=m +CONFIG_X86_CPUID=m +# CONFIG_X86_ELAN is not set +# CONFIG_X86_ES7000 is not set +CONFIG_X86_FIND_SMP_CONFIG=y +CONFIG_X86_GX_SUSPMOD=m +CONFIG_X86_INVLPG=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_LOCAL_APIC=y +# CONFIG_X86_LONGHAUL is not set +CONFIG_X86_LONGRUN=m +# CONFIG_X86_MCE is not set +CONFIG_X86_MPPARSE=y +CONFIG_X86_MSR=m +# CONFIG_X86_NUMAQ is not set +CONFIG_X86_P4_CLOCKMOD=m +CONFIG_X86_PM_TIMER=y +CONFIG_X86_POPAD_OK=y +CONFIG_X86_POWERNOW_K6=m +CONFIG_X86_POWERNOW_K7=m +CONFIG_X86_POWERNOW_K7_ACPI=y +CONFIG_X86_POWERNOW_K8=m +CONFIG_X86_POWERNOW_K8_ACPI=y +CONFIG_X86_REBOOTFIXUPS=y +CONFIG_X86_SPEEDSTEP_CENTRINO=m +CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y +CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y +CONFIG_X86_SPEEDSTEP_ICH=m +CONFIG_X86_SPEEDSTEP_LIB=m +CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y +CONFIG_X86_SPEEDSTEP_SMI=m +# CONFIG_X86_SUMMIT is not set +# CONFIG_X86_VISWS is not set +# CONFIG_X86_VOYAGER is not set +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_XADD=y +CONFIG_XFRM=y +CONFIG_XFRM_USER=m +CONFIG_XFS_EXPORT=y +CONFIG_XFS_FS=m +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_RT=y +CONFIG_XFS_SECURITY=y +CONFIG_YAM=m +CONFIG_YELLOWFIN=m +CONFIG_YENTA=m +CONFIG_ZISOFS=y +CONFIG_ZISOFS_FS=m +CONFIG_ZLIB_DEFLATE=m +CONFIG_ZLIB_INFLATE=y +CONFIG_ZNET=m --- linux-source-2.6.15-2.6.15.orig/debian/config/i386/config.server-bigiron +++ linux-source-2.6.15-2.6.15/debian/config/i386/config.server-bigiron @@ -0,0 +1,90 @@ +# +# Config options for config.server-bigiron automatically generated by splitconf.pl +# +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_SRAT=y +CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y +CONFIG_ARCH_DISCONTIGMEM_ENABLE=y +CONFIG_ARCH_HAVE_MEMORY_PRESENT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_CLUSTER=m +CONFIG_CLUSTER_DLM=m +CONFIG_CLUSTER_DLM_PROCLOCKS=y +# CONFIG_CM206 is not set +# CONFIG_COMPUTONE is not set +CONFIG_CPUSETS=y +# CONFIG_DEFAULT_AS is not set +CONFIG_DEFAULT_DEADLINE=y +CONFIG_DEFAULT_IOSCHED="deadline" +CONFIG_DISCONTIGMEM=y +CONFIG_DISCONTIGMEM_MANUAL=y +# CONFIG_DMASCC is not set +# CONFIG_ENABLE_ALT_SMP is not set +# CONFIG_FLATMEM_MANUAL is not set +# CONFIG_FTAPE is not set +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GFS_FS=m +CONFIG_GFS_FS_LOCK_DLM=m +CONFIG_GFS_FS_LOCK_GULM=m +CONFIG_GFS_FS_LOCK_HARNESS=m +CONFIG_GFS_FS_LOCK_NOLOCK=m +CONFIG_HAVE_ARCH_ALLOC_REMAP=y +CONFIG_HAVE_ARCH_BOOTMEM_NODE=y +CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y +CONFIG_HAVE_MEMORY_PRESENT=y +# CONFIG_HIGHMEM4G is not set +CONFIG_HIGHMEM64G=y +CONFIG_HOTPLUG_CPU=y +CONFIG_HPET_EMULATE_RTC=y +# CONFIG_HYSDN is not set +CONFIG_HZ=100 +CONFIG_HZ_100=y +# CONFIG_HZ_250 is not set +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_IRQBALANCE=y +# CONFIG_ISDN_DRV_LOOP is not set +# CONFIG_ISTALLION is not set +# CONFIG_M486 is not set +CONFIG_M686=y +# CONFIG_MATH_EMULATION is not set +# CONFIG_MK7 is not set +# CONFIG_MOXA_INTELLIO is not set +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_NEED_NODE_MEMMAP_SIZE=y +CONFIG_NR_CPUS=64 +CONFIG_NUMA=y +CONFIG_OCFS2_FS=m +# CONFIG_PCMCIA_XIRTULIP is not set +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_BKL is not set +CONFIG_PREEMPT_NONE=y +# CONFIG_RIO is not set +# CONFIG_RISCOM8 is not set +CONFIG_RTC=y +# CONFIG_SBPCD is not set +CONFIG_SCHED_MC=y +CONFIG_SCHED_SMT=y +# CONFIG_SCSI_MCA_53C9X is not set +CONFIG_SMP=y +CONFIG_SPARSEMEM_STATIC=y +# CONFIG_STALLION is not set +CONFIG_STOP_MACHINE=y +CONFIG_SUSPEND_SMP=y +CONFIG_X86_CMPXCHG64=y +CONFIG_X86_CYCLONE_TIMER=y +CONFIG_X86_GENERIC=y +CONFIG_X86_GENERICARCH=y +CONFIG_X86_GOOD_APIC=y +CONFIG_X86_HT=y +CONFIG_X86_HT_DISABLE=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_PAE=y +# CONFIG_X86_PC is not set +CONFIG_X86_PPRO_FENCE=y +CONFIG_X86_SMP=y +CONFIG_X86_SUMMIT_NUMA=y +CONFIG_X86_TRAMPOLINE=y +CONFIG_X86_TSC=y +CONFIG_X86_USE_PPRO_CHECKSUM=y --- linux-source-2.6.15-2.6.15.orig/debian/config/i386/config.server +++ linux-source-2.6.15-2.6.15/debian/config/i386/config.server @@ -0,0 +1,77 @@ +# +# Config options for config.server automatically generated by splitconf.pl +# +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_CLUSTER=m +CONFIG_CLUSTER_DLM=m +CONFIG_CLUSTER_DLM_PROCLOCKS=y +# CONFIG_CM206 is not set +# CONFIG_COMPUTONE is not set +CONFIG_CPUSETS=y +# CONFIG_DEFAULT_AS is not set +CONFIG_DEFAULT_DEADLINE=y +CONFIG_DEFAULT_IOSCHED="deadline" +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_DMASCC is not set +CONFIG_EISA_VIRTUAL_ROOT=y +CONFIG_EISA_VLB_PRIMING=y +# CONFIG_ENABLE_ALT_SMP is not set +CONFIG_FLATMEM=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_FTAPE is not set +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GFS_FS=m +CONFIG_GFS_FS_LOCK_DLM=m +CONFIG_GFS_FS_LOCK_GULM=m +CONFIG_GFS_FS_LOCK_HARNESS=m +CONFIG_GFS_FS_LOCK_NOLOCK=m +# CONFIG_HIGHMEM4G is not set +CONFIG_HIGHMEM64G=y +CONFIG_HOTPLUG_CPU=y +CONFIG_HPET_EMULATE_RTC=y +# CONFIG_HYSDN is not set +CONFIG_HZ=100 +CONFIG_HZ_100=y +# CONFIG_HZ_250 is not set +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_IRQBALANCE=y +# CONFIG_ISDN_DRV_LOOP is not set +# CONFIG_ISTALLION is not set +# CONFIG_M486 is not set +CONFIG_M686=y +# CONFIG_MATH_EMULATION is not set +# CONFIG_MK7 is not set +# CONFIG_MOXA_INTELLIO is not set +CONFIG_NR_CPUS=8 +CONFIG_OCFS2_FS=m +# CONFIG_PCMCIA_XIRTULIP is not set +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_BKL is not set +CONFIG_PREEMPT_NONE=y +# CONFIG_RIO is not set +# CONFIG_RISCOM8 is not set +CONFIG_RTC=y +# CONFIG_SBPCD is not set +CONFIG_SCHED_MC=y +CONFIG_SCHED_SMT=y +# CONFIG_SCSI_MCA_53C9X is not set +CONFIG_SMP=y +# CONFIG_SPARSEMEM_STATIC is not set +# CONFIG_STALLION is not set +CONFIG_STOP_MACHINE=y +CONFIG_SUSPEND_SMP=y +CONFIG_X86_CMPXCHG64=y +CONFIG_X86_GENERIC=y +# CONFIG_X86_GENERICARCH is not set +CONFIG_X86_GOOD_APIC=y +CONFIG_X86_HT=y +CONFIG_X86_HT_DISABLE=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_PAE=y +CONFIG_X86_PC=y +CONFIG_X86_PPRO_FENCE=y +CONFIG_X86_SMP=y +CONFIG_X86_TRAMPOLINE=y +CONFIG_X86_TSC=y +CONFIG_X86_USE_PPRO_CHECKSUM=y --- linux-source-2.6.15-2.6.15.orig/debian/config/i386/config.686 +++ linux-source-2.6.15-2.6.15/debian/config/i386/config.686 @@ -0,0 +1,70 @@ +# +# Config options for config.686 automatically generated by splitconf.pl +# +CONFIG_ACPI_HOTPLUG_CPU=y +# CONFIG_CLUSTER is not set +# CONFIG_CM206 is not set +# CONFIG_COMPUTONE is not set +CONFIG_CPUSETS=y +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_DMASCC is not set +CONFIG_EISA_VIRTUAL_ROOT=y +CONFIG_EISA_VLB_PRIMING=y +CONFIG_ENABLE_ALT_SMP=y +CONFIG_FLATMEM=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_FTAPE is not set +CONFIG_GENERIC_PENDING_IRQ=y +# CONFIG_GFS_FS is not set +# CONFIG_GFS_FS_LOCK_HARNESS is not set +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set +CONFIG_HOTPLUG_CPU=y +CONFIG_HPET_EMULATE_RTC=y +# CONFIG_HYSDN is not set +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +CONFIG_IRQBALANCE=y +# CONFIG_ISDN_DRV_LOOP is not set +# CONFIG_ISTALLION is not set +# CONFIG_M486 is not set +CONFIG_M686=y +# CONFIG_MATH_EMULATION is not set +# CONFIG_MK7 is not set +# CONFIG_MOXA_INTELLIO is not set +CONFIG_NR_CPUS=8 +# CONFIG_OCFS2_FS is not set +# CONFIG_PCMCIA_XIRTULIP is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_BKL=y +# CONFIG_PREEMPT_NONE is not set +# CONFIG_RIO is not set +# CONFIG_RISCOM8 is not set +CONFIG_RTC=y +# CONFIG_SBPCD is not set +CONFIG_SCHED_MC=y +CONFIG_SCHED_SMT=y +# CONFIG_SCSI_MCA_53C9X is not set +CONFIG_SMP=y +# CONFIG_SPARSEMEM_STATIC is not set +# CONFIG_STALLION is not set +CONFIG_STOP_MACHINE=y +CONFIG_SUSPEND_SMP=y +CONFIG_X86_CMPXCHG64=y +# CONFIG_X86_GENERIC is not set +# CONFIG_X86_GENERICARCH is not set +CONFIG_X86_GOOD_APIC=y +CONFIG_X86_HT=y +CONFIG_X86_HT_DISABLE=y +CONFIG_X86_L1_CACHE_SHIFT=5 +CONFIG_X86_PC=y +CONFIG_X86_PPRO_FENCE=y +CONFIG_X86_SMP=y +CONFIG_X86_TRAMPOLINE=y +CONFIG_X86_TSC=y +CONFIG_X86_USE_PPRO_CHECKSUM=y --- linux-source-2.6.15-2.6.15.orig/debian/config/i386/config.386 +++ linux-source-2.6.15-2.6.15/debian/config/i386/config.386 @@ -0,0 +1,76 @@ +# +# Config options for config.386 automatically generated by splitconf.pl +# +# CONFIG_CLUSTER is not set +CONFIG_CM206=m +CONFIG_COMPUTONE=m +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +# CONFIG_DISCONTIGMEM_MANUAL is not set +CONFIG_DMASCC=m +CONFIG_EISA_VIRTUAL_ROOT=y +CONFIG_EISA_VLB_PRIMING=y +CONFIG_FLATMEM=y +CONFIG_FLATMEM_MANUAL=y +CONFIG_FTAPE=m +CONFIG_FT_ALPHA_CLOCK=0 +# CONFIG_FT_ALT_FDC is not set +CONFIG_FT_FDC_MAX_RATE=2000 +CONFIG_FT_FDC_THR=8 +# CONFIG_FT_FULL_DEBUG is not set +# CONFIG_FT_MACH2 is not set +CONFIG_FT_NORMAL_DEBUG=y +# CONFIG_FT_NO_TRACE is not set +# CONFIG_FT_NO_TRACE_AT_ALL is not set +CONFIG_FT_NR_BUFFERS=3 +# CONFIG_FT_PROBE_FC10 is not set +CONFIG_FT_PROC_FS=y +CONFIG_FT_STD_FDC=y +CONFIG_GEN_RTC=m +CONFIG_GEN_RTC_X=y +# CONFIG_GFS_FS is not set +# CONFIG_GFS_FS_LOCK_HARNESS is not set +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set +CONFIG_HYSDN=m +CONFIG_HYSDN_CAPI=y +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +CONFIG_ISDN_DRV_LOOP=m +CONFIG_ISTALLION=m +CONFIG_M486=y +# CONFIG_M686 is not set +CONFIG_MATH_EMULATION=y +# CONFIG_MK7 is not set +CONFIG_MOXA_INTELLIO=m +# CONFIG_OCFS2_FS is not set +CONFIG_PCMCIA_XIRTULIP=m +CONFIG_PREEMPT=y +CONFIG_PREEMPT_BKL=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_RIO=m +CONFIG_RIO_OLDPCI=y +CONFIG_RISCOM8=m +CONFIG_RTC=m +CONFIG_SBPCD=m +CONFIG_SCSI_MCA_53C9X=m +# CONFIG_SMP is not set +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_STALLION=m +CONFIG_X86_ALIGNMENT_16=y +CONFIG_X86_F00F_BUG=y +CONFIG_X86_GENERIC=y +# CONFIG_X86_GENERICARCH is not set +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_PC=y +CONFIG_X86_PPRO_FENCE=y +CONFIG_X86_UP_APIC=y +# CONFIG_X86_UP_APIC_DEFAULT_OFF is not set +CONFIG_X86_UP_IOAPIC=y +CONFIG_ZFTAPE=m +CONFIG_ZFT_COMPRESSOR=m +CONFIG_ZFT_DFLT_BLK_SZ=10240 --- linux-source-2.6.15-2.6.15.orig/debian/config/ia64/config +++ linux-source-2.6.15-2.6.15/debian/config/ia64/config @@ -0,0 +1,1986 @@ +# +# Common config options automatically generated by splitconf.pl +# +CONFIG_3C359=m +CONFIG_64BIT=y +# CONFIG_6PACK is not set +CONFIG_8139CP=m +CONFIG_8139TOO=m +CONFIG_8139TOO_8129=y +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_9P_FS=m +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_ACORN_PARTITION=y +CONFIG_ACORN_PARTITION_ADFS=y +# CONFIG_ACORN_PARTITION_CUMANA is not set +CONFIG_ACORN_PARTITION_EESOX=y +CONFIG_ACORN_PARTITION_ICS=y +CONFIG_ACORN_PARTITION_POWERTEC=y +CONFIG_ACORN_PARTITION_RISCIX=y +CONFIG_ACPI=y +CONFIG_ACPI_BLACKLIST_YEAR=0 +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_CONTAINER=m +CONFIG_ACPI_DEBUG=y +CONFIG_ACPI_DEV=m +CONFIG_ACPI_EC=y +CONFIG_ACPI_FAN=m +CONFIG_ACPI_INITRD=y +CONFIG_ACPI_NUMA=y +CONFIG_ACPI_POWER=y +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_SYSTEM=y +CONFIG_ACPI_TC1100=m +CONFIG_ACPI_THERMAL=m +CONFIG_ADAPTEC_STARFIRE=m +# CONFIG_ADAPTEC_STARFIRE_NAPI is not set +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_ADM8211=m +CONFIG_ADV717X=m +CONFIG_ADV717X_PIXELPORT16BIT=y +CONFIG_ADV717X_PIXELPORTPAL=y +CONFIG_ADV717X_SWAP=y +CONFIG_AFFS_FS=m +CONFIG_AFS_FS=m +CONFIG_AGP=m +CONFIG_AGP_HP_ZX1=m +CONFIG_AGP_I460=m +# CONFIG_AGP_SGI_TIOCA is not set +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +# CONFIG_AIC79XX_ENABLE_RD_STRM is not set +# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=253 +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +# CONFIG_AIC7XXX_REG_PRETTY_PRINT is not set +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_AIRO_CS=m +# CONFIG_AMD8111E_NAPI is not set +CONFIG_AMD8111_ETH=m +CONFIG_AMIGA_PARTITION=y +CONFIG_APPLICOM=m +CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y +CONFIG_ARCH_DISCONTIGMEM_ENABLE=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCNET=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_CS=m +CONFIG_ARCNET_COM20020_PCI=m +# CONFIG_ARCNET_COM90xx is not set +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RAW=m +# CONFIG_ARCNET_RIM_I is not set +# CONFIG_ARPD is not set +CONFIG_ASFS_DEFAULT_CODEPAGE="" +CONFIG_ASFS_FS=m +# CONFIG_ASFS_RW is not set +CONFIG_ASK_IP_FIB_HASH=y +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_OVER_ETH=m +# CONFIG_ATM is not set +CONFIG_ATMEL=m +CONFIG_AUDIT=y +# CONFIG_AUDITSYSCALL is not set +CONFIG_AUTOFS4_FS=m +CONFIG_AUTOFS_FS=m +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_B44=m +CONFIG_BACKLIGHT_CLASS_DEVICE=m +CONFIG_BACKLIGHT_DEVICE=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BASE_FULL=y +CONFIG_BASE_SMALL=0 +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BCM43XX=m +# CONFIG_BCM43XX_DEBUG is not set +CONFIG_BCM43XX_DMA=y +CONFIG_BCM43XX_DMA_AND_PIO_MODE=y +# CONFIG_BCM43XX_DMA_MODE is not set +CONFIG_BCM43XX_PIO=y +# CONFIG_BCM43XX_PIO_MODE is not set +# CONFIG_BEFS_DEBUG is not set +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_AEC62XX=m +CONFIG_BLK_DEV_ALI15X3=m +# CONFIG_BLK_DEV_AMD74XX is not set +CONFIG_BLK_DEV_CLOOP=m +CONFIG_BLK_DEV_CMD64X=m +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_CS5520=m +CONFIG_BLK_DEV_CS5530=m +CONFIG_BLK_DEV_CY82C693=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_DM=m +CONFIG_BLK_DEV_DM_BBR=m +CONFIG_BLK_DEV_GENERIC=m +CONFIG_BLK_DEV_GNBD=m +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_HPT34X=m +CONFIG_BLK_DEV_HPT366=m +CONFIG_BLK_DEV_IDE=y +CONFIG_BLK_DEV_IDEACPI=y +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_IDEDISK=m +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_IDEFLOPPY=m +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_IDEPNP=m +CONFIG_BLK_DEV_IDESCSI=m +CONFIG_BLK_DEV_IDETAPE=m +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_DEV_IT821X=m +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_MD=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_NS87415=m +# CONFIG_BLK_DEV_OFFBOARD is not set +CONFIG_BLK_DEV_OPTI621=m +CONFIG_BLK_DEV_PDC202XX_NEW=m +CONFIG_BLK_DEV_PDC202XX_OLD=m +CONFIG_BLK_DEV_PIIX=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_BLK_DEV_SC1200=m +CONFIG_BLK_DEV_SD=m +CONFIG_BLK_DEV_SIIMAGE=m +CONFIG_BLK_DEV_SLC90E66=m +CONFIG_BLK_DEV_SR=m +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_BLK_DEV_SVWKS=m +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_TRIFLEX=m +CONFIG_BLK_DEV_TRM290=m +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_UMEM=m +CONFIG_BLK_DEV_VIA82CXXX=m +CONFIG_BNX2=m +CONFIG_BONDING=m +CONFIG_BPQETHER=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_ULOG=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_NETFILTER=y +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BSD_DISKLABEL=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_BT=m +CONFIG_BT865=m +CONFIG_BT_ALSA=m +CONFIG_BT_BNEP=m +# CONFIG_BT_BNEP_MC_FILTER is not set +# CONFIG_BT_BNEP_PROTO_FILTER is not set +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIUART=m +# CONFIG_BT_HCIUART_BCSP is not set +# CONFIG_BT_HCIUART_H4 is not set +CONFIG_BT_HCIUSB=m +# CONFIG_BT_HCIUSB_SCO is not set +CONFIG_BT_HCIVHCI=m +CONFIG_BT_HIDP=m +CONFIG_BT_L2CAP=m +CONFIG_BT_RFCOMM=m +# CONFIG_BT_RFCOMM_TTY is not set +CONFIG_BT_SCO=m +CONFIG_BUG=y +CONFIG_CARDBUS=y +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +CONFIG_CASSINI=m +CONFIG_CC_ALIGN_FUNCTIONS=0 +CONFIG_CC_ALIGN_JUMPS=0 +CONFIG_CC_ALIGN_LABELS=0 +CONFIG_CC_ALIGN_LOOPS=0 +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +CONFIG_CHELSIO_T1=m +CONFIG_CHR_DEV_OSST=m +CONFIG_CHR_DEV_SCH=m +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_ST=m +CONFIG_CICADA_PHY=m +CONFIG_CIFS=m +# CONFIG_CIFS_EXPERIMENTAL is not set +# CONFIG_CIFS_STATS is not set +# CONFIG_CIFS_XATTR is not set +CONFIG_CISS_SCSI_TAPE=y +CONFIG_CLEAN_COMPILE=y +CONFIG_CLS_U32_MARK=y +# CONFIG_CLS_U32_PERF is not set +CONFIG_CLUSTER=m +CONFIG_CLUSTER_DLM=m +CONFIG_CLUSTER_DLM_PROCLOCKS=y +CONFIG_CODA_FS=m +CONFIG_CODA_FS_OLD_API=y +CONFIG_COMPAT=y +CONFIG_CONFIGFS_FS=m +CONFIG_CONNECTOR=m +CONFIG_CPU_FREQ=y +# CONFIG_CPU_FREQ_DEBUG is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=m +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_TABLE=m +CONFIG_CRAMFS=y +CONFIG_CRC16=m +CONFIG_CRC32=y +CONFIG_CRC_CCITT=m +CONFIG_CRYPTO=y +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_WP512=m +# CONFIG_CYCLADES is not set +# CONFIG_CYCLADES_SYNC is not set +CONFIG_DAVICOM_PHY=m +CONFIG_DAZUKO=m +CONFIG_DE2104X=m +CONFIG_DE4X5=m +CONFIG_DE600=m +CONFIG_DE620=m +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_VM is not set +CONFIG_DECNET=m +CONFIG_DECNET_NF_GRABULATOR=m +# CONFIG_DECNET_ROUTER is not set +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFXX=m +CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DEV_APPLETALK=y +CONFIG_DGRS=m +# CONFIG_DIGIEPCA is not set +# CONFIG_DISABLE_VHPT is not set +CONFIG_DISCONTIGMEM=y +CONFIG_DISCONTIGMEM_MANUAL=y +CONFIG_DL2K=m +CONFIG_DLCI=m +CONFIG_DLCI_COUNT=24 +CONFIG_DLCI_MAX=8 +CONFIG_DM9102=m +CONFIG_DMA_IS_DMA32=y +CONFIG_DM_CRYPT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_EMC=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_ZERO=m +CONFIG_DNOTIFY=y +# CONFIG_DONGLE is not set +CONFIG_DRM=m +CONFIG_DRM_MGA=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_SAVAGE=m +CONFIG_DRM_SIS=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_VIA=m +CONFIG_DSCC4=m +# CONFIG_DSCC4_PCISYNC is not set +# CONFIG_DSCC4_PCI_RST is not set +CONFIG_DTLK=m +CONFIG_DUMMY=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_DVB=y +CONFIG_DVB_ATMEL_AT76C651=m +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_B2C2_FLEXCOP=m +# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_BT8XX=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_PATCH=m +CONFIG_DVB_CINERGYT2=m +CONFIG_DVB_CINERGYT2_ENABLE_RC_INPUT_DEVICE=y +CONFIG_DVB_CINERGYT2_QUERY_INTERVAL=250 +CONFIG_DVB_CINERGYT2_RC_QUERY_INTERVAL=100 +CONFIG_DVB_CINERGYT2_STREAM_BUF_SIZE=512 +CONFIG_DVB_CINERGYT2_STREAM_URB_COUNT=32 +CONFIG_DVB_CINERGYT2_TUNING=y +CONFIG_DVB_CORE=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CX24110=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_L64781=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_MT312=m +CONFIG_DVB_MT352=m +CONFIG_DVB_NXT2002=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_PLUTO2=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_STV0297=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA80XX=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_DVB_USB=m +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_CXUSB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_VES1820=m +CONFIG_DVB_VES1X93=m +CONFIG_DXR3=m +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000_NAPI=y +CONFIG_ECC=m +# CONFIG_ECONET is not set +CONFIG_EEPRO100=m +CONFIG_EFI=y +CONFIG_EFI_PARTITION=y +CONFIG_EFI_PCDP=y +CONFIG_EFI_RTC=y +CONFIG_EFI_VARS=m +CONFIG_EFS_FS=m +CONFIG_EM8300=m +CONFIG_EM8300_DICOMCTRL=y +CONFIG_EM8300_DICOMFIX=y +CONFIG_EM8300_DICOMPAL=y +CONFIG_EM8300_LOOPBACK=y +CONFIG_EM8300_UCODETIMEOUT=y +# CONFIG_EMBEDDED is not set +CONFIG_EPIC100=m +CONFIG_EPOLL=y +CONFIG_EQUALIZER=m +CONFIG_EXPERIMENTAL=y +CONFIG_EXPORTFS=m +CONFIG_EXT2_FS=m +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT2_FS_XATTR=y +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=m +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT3_FS_XATTR=y +CONFIG_FARSYNC=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_FAT_FS=m +CONFIG_FB=y +CONFIG_FB_3DFX=m +# CONFIG_FB_3DFX_ACCEL is not set +CONFIG_FB_ASILIANT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY128=m +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GENERIC_LCD=y +CONFIG_FB_ATY_GX=y +# CONFIG_FB_ATY_XL_INIT is not set +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_CIRRUS=m +CONFIG_FB_CYBER2000=m +CONFIG_FB_CYBLA=m +# CONFIG_FB_IMSTT is not set +CONFIG_FB_KYRO=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MULTIHEAD=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_I2C=y +CONFIG_FB_PM2=m +# CONFIG_FB_PM2_FIFO_DISCONNECT is not set +CONFIG_FB_RADEON=m +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RADEON_OLD=m +CONFIG_FB_RIVA=m +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_I2C=y +CONFIG_FB_S1D13XXX=m +CONFIG_FB_SAVAGE=m +CONFIG_FB_SAVAGE_ACCEL=y +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_TRIDENT=m +# CONFIG_FB_TRIDENT_ACCEL is not set +CONFIG_FB_VESA=m +CONFIG_FB_VGA16=m +# CONFIG_FB_VIRTUAL is not set +CONFIG_FB_VOODOO1=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x16=y +CONFIG_FONT_8x8=y +CONFIG_FORCEDETH=m +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_FRAMEBUFFER_CONSOLE=m +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_FS_MBCACHE=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FTL=m +CONFIG_FUSE_FS=m +CONFIG_FUSION=y +CONFIG_FUSION_CTL=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_LAN=m +CONFIG_FUSION_MAX_SGE=40 +CONFIG_FUSION_SAS=m +CONFIG_FUSION_SPI=m +CONFIG_FUTEX=y +CONFIG_FW_LOADER=y +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GFS_FS=m +CONFIG_GFS_FS_LOCK_DLM=m +CONFIG_GFS_FS_LOCK_GULM=m +CONFIG_GFS_FS_LOCK_HARNESS=m +CONFIG_GFS_FS_LOCK_NOLOCK=m +CONFIG_HAMACHI=m +CONFIG_HAMRADIO=y +CONFIG_HANGCHECK_TIMER=m +# CONFIG_HAPPYMEAL is not set +CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y +CONFIG_HDLC=m +CONFIG_HDLC_CISCO=y +CONFIG_HDLC_FR=y +CONFIG_HDLC_PPP=y +CONFIG_HDLC_RAW=y +CONFIG_HDLC_RAW_ETH=y +CONFIG_HERMES=m +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +# CONFIG_HID_FF is not set +# CONFIG_HIPPI is not set +CONFIG_HOLES_IN_ZONE=y +CONFIG_HOSTAP=m +CONFIG_HOSTAP_CS=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_PLX=m +CONFIG_HOTPLUG=y +CONFIG_HOTPLUG_PCI=m +CONFIG_HOTPLUG_PCI_ACPI=m +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_FAKE=m +# CONFIG_HOTPLUG_PCI_SGI is not set +CONFIG_HOTPLUG_PCI_SHPC=m +# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set +# CONFIG_HP100 is not set +# CONFIG_HPET is not set +CONFIG_HPFS_FS=m +# CONFIG_HPT34X_AUTODMA is not set +# CONFIG_HP_SIMETH is not set +# CONFIG_HP_SIMSCSI is not set +# CONFIG_HP_SIMSERIAL is not set +# CONFIG_HUGETLBFS is not set +# CONFIG_HUGETLB_PAGE is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_HWMON_VID=m +CONFIG_HW_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +CONFIG_I2C=m +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCA=m +CONFIG_I2C_ALGOPCF=m +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_CHARDEV=m +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +# CONFIG_I2C_DEBUG_CORE is not set +CONFIG_I2C_I801=m +CONFIG_I2C_I810=m +CONFIG_I2C_ISA=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PCA_ISA=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_PROSAVAGE=m +CONFIG_I2C_SAVAGE4=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_STUB=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_VOODOO3=m +CONFIG_I2O=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_BUS=m +CONFIG_I2O_CONFIG=m +CONFIG_I2O_CONFIG_OLD_IOCTL=y +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_I2O_PROC=m +CONFIG_I2O_SCSI=m +CONFIG_I82092=m +CONFIG_IA32_SUPPORT=y +CONFIG_IA64=y +# CONFIG_IA64_ACPI_CPUFREQ is not set +# CONFIG_IA64_CYCLONE is not set +# CONFIG_IA64_DEBUG_CMPXCHG is not set +# CONFIG_IA64_DEBUG_IRQ is not set +# CONFIG_IA64_DIG is not set +CONFIG_IA64_GENERIC=y +CONFIG_IA64_GRANULE_16MB=y +# CONFIG_IA64_GRANULE_64MB is not set +# CONFIG_IA64_HP_SIM is not set +# CONFIG_IA64_HP_ZX1 is not set +# CONFIG_IA64_HP_ZX1_SWIOTLB is not set +CONFIG_IA64_MCA_RECOVERY=m +CONFIG_IA64_PAGE_SIZE_16KB=y +# CONFIG_IA64_PAGE_SIZE_4KB is not set +# CONFIG_IA64_PAGE_SIZE_64KB is not set +# CONFIG_IA64_PAGE_SIZE_8KB is not set +CONFIG_IA64_PALINFO=m +CONFIG_IA64_PRINT_HAZARDS=y +# CONFIG_IA64_SGI_SN2 is not set +CONFIG_IA64_SGI_SN_XP=m +CONFIG_IA64_UNCACHED_ALLOCATOR=y +CONFIG_IBMOL=m +CONFIG_IDE=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_IDEDMA_PCI_AUTO=y +CONFIG_IDEPCI_SHARE_IRQ=y +# CONFIG_IDE_ARM is not set +CONFIG_IDE_GENERIC=m +CONFIG_IDE_TASK_IOCTL=y +CONFIG_IEEE1394=m +# CONFIG_IEEE1394_CMP is not set +CONFIG_IEEE1394_CONFIG_ROM_IP1394=y +CONFIG_IEEE1394_DV1394=m +CONFIG_IEEE1394_ETH1394=m +# CONFIG_IEEE1394_EXPORT_FULL_API is not set +CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y +CONFIG_IEEE1394_OHCI1394=m +CONFIG_IEEE1394_OUI_DB=y +CONFIG_IEEE1394_PCILYNX=m +CONFIG_IEEE1394_RAWIO=m +CONFIG_IEEE1394_SBP2=m +# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set +# CONFIG_IEEE1394_VERBOSEDEBUG is not set +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE80211=m +CONFIG_IEEE80211_1_1_13=m +CONFIG_IEEE80211_1_1_13_CRYPT_CCMP=m +CONFIG_IEEE80211_1_1_13_CRYPT_TKIP=m +CONFIG_IEEE80211_1_1_13_CRYPT_WEP=m +CONFIG_IEEE80211_CRYPT_CCMP=m +CONFIG_IEEE80211_CRYPT_TKIP=m +CONFIG_IEEE80211_CRYPT_WEP=m +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_SOFTMAC=m +# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_INET=y +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +CONFIG_INET6_IPCOMP=m +CONFIG_INET6_TUNNEL=m +# CONFIG_INET_AH is not set +CONFIG_INET_DCCP_DIAG=m +CONFIG_INET_DIAG=y +# CONFIG_INET_ESP is not set +CONFIG_INET_IPCOMP=m +CONFIG_INET_TCP_DIAG=y +CONFIG_INET_TUNNEL=m +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_IPOIB=m +# CONFIG_INFINIBAND_IPOIB_DEBUG is not set +CONFIG_INFINIBAND_MTHCA=m +# CONFIG_INFINIBAND_MTHCA_DEBUG is not set +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFTL=m +CONFIG_INITRAMFS_SOURCE="" +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_INOTIFY=y +CONFIG_INPUT=y +CONFIG_INPUT_EVBUG=m +CONFIG_INPUT_EVDEV=m +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_TOUCHSCREEN is not set +CONFIG_INPUT_TSDEV=m +CONFIG_INPUT_TSDEV_SCREEN_X=240 +CONFIG_INPUT_TSDEV_SCREEN_Y=320 +CONFIG_INPUT_UINPUT=m +CONFIG_IOSAPIC=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_NOOP=y +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_MATCH_AHESP=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_LENGTH=m +CONFIG_IP6_NF_MATCH_LIMIT=m +CONFIG_IP6_NF_MATCH_MAC=m +CONFIG_IP6_NF_MATCH_MARK=m +CONFIG_IP6_NF_MATCH_MULTIPORT=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_OWNER=m +CONFIG_IP6_NF_MATCH_PHYSDEV=m +CONFIG_IP6_NF_MATCH_RT=m +# CONFIG_IP6_NF_QUEUE is not set +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_TARGET_MARK=m +CONFIG_IP6_NF_TARGET_NFQUEUE=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IPDDP=m +CONFIG_IPDDP_DECAP=y +CONFIG_IPDDP_ENCAP=y +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_POWEROFF=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPV6=m +# CONFIG_IPV6_PRIVACY is not set +CONFIG_IPV6_TUNNEL=m +CONFIG_IPW2100=m +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2200=m +# CONFIG_IPW2200_DEBUG is not set +CONFIG_IPW2200_MONITOR=y +# CONFIG_IPW3945 is not set +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_DCCP=m +CONFIG_IP_DCCP_CCID3=m +# CONFIG_IP_DCCP_DEBUG is not set +CONFIG_IP_DCCP_TFRC_LIB=m +# CONFIG_IP_DCCP_UNLOAD_HACK is not set +CONFIG_IP_FIB_HASH=y +# CONFIG_IP_FIB_TRIE is not set +# CONFIG_IP_MROUTE is not set +CONFIG_IP_MULTICAST=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_NF_AMANDA=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_IP_NF_CONNTRACK=m +# CONFIG_IP_NF_CONNTRACK_EVENTS is not set +CONFIG_IP_NF_CONNTRACK_MARK=y +CONFIG_IP_NF_CONNTRACK_NETLINK=m +CONFIG_IP_NF_CT_ACCT=y +CONFIG_IP_NF_CT_PROTO_SCTP=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_COMMENT=m +CONFIG_IP_NF_MATCH_CONNBYTES=m +CONFIG_IP_NF_MATCH_CONNMARK=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_DCCP=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_HASHLIMIT=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_MAC=m +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_PHYSDEV=m +CONFIG_IP_NF_MATCH_PKTTYPE=m +CONFIG_IP_NF_MATCH_REALM=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_SCTP=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_STRING=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_AMANDA=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_NAT_PPTP=m +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_NETBIOS_NS=m +CONFIG_IP_NF_PPTP=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_TARGET_CLASSIFY=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_CONNMARK=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_NFQUEUE=m +CONFIG_IP_NF_TARGET_NOTRACK=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TFTP=m +# CONFIG_IP_PNP is not set +CONFIG_IP_ROUTE_FWMARK=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_MULTIPATH_CACHED=y +CONFIG_IP_ROUTE_MULTIPATH_DRR=m +CONFIG_IP_ROUTE_MULTIPATH_RANDOM=m +CONFIG_IP_ROUTE_MULTIPATH_RR=m +CONFIG_IP_ROUTE_MULTIPATH_WRANDOM=m +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_SCTP=m +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_TAB_BITS=12 +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_WRR=m +CONFIG_IRCOMM=m +CONFIG_IRDA=m +# CONFIG_IRDA_CACHE_LAST_LSAP is not set +# CONFIG_IRDA_DEBUG is not set +# CONFIG_IRDA_FAST_RR is not set +# CONFIG_IRDA_ULTRA is not set +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRTTY_SIR=m +CONFIG_ISCSI_TCP=m +# CONFIG_ISDN is not set +# CONFIG_ISI is not set +CONFIG_ISO9660_FS=m +CONFIG_IXGB=m +# CONFIG_IXGB_NAPI is not set +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_SUMMARY is not set +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS_FS=m +CONFIG_JFFS_FS_VERBOSE=0 +CONFIG_JFFS_PROC_FS=y +CONFIG_JFS_DEBUG=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +CONFIG_JFS_STATISTICS=y +CONFIG_JOLIET=y +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_IFORCE=m +# CONFIG_JOYSTICK_IFORCE_232 is not set +# CONFIG_JOYSTICK_IFORCE_USB is not set +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_LKKBD=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_XTKBD=m +# CONFIG_KEYS is not set +CONFIG_KMOD=y +CONFIG_KOBJECT_UEVENT=y +# CONFIG_KPROBES is not set +CONFIG_LANMEDIA=m +# CONFIG_LAPB is not set +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_DEVICE=y +CONFIG_LDM_DEBUG=y +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_LIBCRC32C=m +CONFIG_LLC=y +CONFIG_LLC2=m +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +# CONFIG_LOGO is not set +CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_LP_CONSOLE is not set +CONFIG_LXT_PHY=m +CONFIG_MAC_PARTITION=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_MARVELL_PHY=m +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MD=y +CONFIG_MD_FAULTY=m +CONFIG_MD_LINEAR=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID5=m +CONFIG_MD_RAID6=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_SAS=m +CONFIG_MII=m +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +# CONFIG_MKISS is not set +# CONFIG_MMC is not set +# CONFIG_MMTIMER is not set +CONFIG_MMU=y +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_VSXXXAA=m +# CONFIG_MOXA_SMARTIO is not set +CONFIG_MSDOS_FS=m +CONFIG_MSDOS_PARTITION=y +CONFIG_MSNDCLAS_INIT_FILE="m" +CONFIG_MSNDCLAS_PERM_FILE="m" +CONFIG_MSNDPIN_INIT_FILE="m" +CONFIG_MSNDPIN_PERM_FILE="m" +CONFIG_MTD=m +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTD_ABSENT=m +CONFIG_MTD_BLKMTD=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_BLOCK2MTD=m +CONFIG_MTD_BLOCK_RO=m +CONFIG_MTD_CFI=m +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_AMDSTD_RETRY=0 +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_CHAR=m +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_CONCAT=m +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_DOC2000=m +CONFIG_MTD_DOC2001=m +CONFIG_MTD_DOC2001PLUS=m +CONFIG_MTD_DOCECC=m +CONFIG_MTD_DOCPROBE=m +CONFIG_MTD_DOCPROBE_ADDRESS=0 +# CONFIG_MTD_DOCPROBE_ADVANCED is not set +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_MAP_BANK_WIDTH_1=y +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +CONFIG_MTD_MAP_BANK_WIDTH_2=y +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +CONFIG_MTD_MTDRAM=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_DISKONCHIP=m +# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set +CONFIG_MTD_NAND_IDS=m +CONFIG_MTD_NAND_NANDSIM=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_PCI=m +CONFIG_MTD_PHRAM=m +CONFIG_MTD_PHYSMAP=m +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 +CONFIG_MTD_PHYSMAP_LEN=0x4000000 +CONFIG_MTD_PHYSMAP_START=0x8000000 +CONFIG_MTD_PLATRAM=m +CONFIG_MTD_PMC551=m +# CONFIG_MTD_PMC551_BUGFIX is not set +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_RAM=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +CONFIG_MTD_REDBOOT_PARTS=m +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +CONFIG_MTD_ROM=m +CONFIG_MTD_SLRAM=m +CONFIG_NATSEMI=m +CONFIG_NCPFS_EXTRAS=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_PACKET_SIGNING=y +CONFIG_NCPFS_SMALLDOS=y +CONFIG_NCPFS_STRONG=y +CONFIG_NCP_FS=m +CONFIG_NE2K_PCI=m +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_NET=y +CONFIG_NETCONSOLE=m +CONFIG_NETDEVICES=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETPOLL=y +CONFIG_NETPOLL_RX=y +CONFIG_NETPOLL_TRAP=y +CONFIG_NETROM=m +CONFIG_NET_ACX=m +CONFIG_NET_ACX_PCI=y +CONFIG_NET_ACX_USB=y +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_ACT is not set +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_FW=m +# CONFIG_NET_CLS_IND is not set +CONFIG_NET_CLS_POLICE=y +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_U32=m +# CONFIG_NET_DIVERT is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_ETHERNET=y +CONFIG_NET_FC=y +CONFIG_NET_IPG=m +# CONFIG_NET_IPGRE is not set +CONFIG_NET_IPIP=m +CONFIG_NET_KEY=m +CONFIG_NET_MRV8K=m +CONFIG_NET_PCI=y +CONFIG_NET_PCMCIA=y +CONFIG_NET_PKTGEN=m +CONFIG_NET_POCKET=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_NET_RADIO=y +CONFIG_NET_RT2400=m +CONFIG_NET_RT2500=m +CONFIG_NET_RT2600=m +CONFIG_NET_RTL8187=m +CONFIG_NET_RTL818X=m +CONFIG_NET_SB1000=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +# CONFIG_NET_SCH_CLK_CPU is not set +# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set +CONFIG_NET_SCH_CLK_JIFFIES=y +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_TULIP=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_WIRELESS=y +CONFIG_NFSD=m +CONFIG_NFSD_TCP=y +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +CONFIG_NFSD_V4=y +CONFIG_NFS_COMMON=y +CONFIG_NFS_DIRECTIO=y +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +CONFIG_NFS_V4=y +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_NLS=y +CONFIG_NLS_ASCII=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m +CONFIG_NORTEL_HERMES=m +CONFIG_NS83820=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_FS=m +# CONFIG_NTFS_RW is not set +CONFIG_NUMA=y +CONFIG_N_HDLC=m +CONFIG_OBSOLETE_MODPARM=y +# CONFIG_OBSOLETE_OSS_DRIVER is not set +# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set +CONFIG_OCFS2_FS=m +CONFIG_OPROFILE=m +CONFIG_OSF_PARTITION=y +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +CONFIG_PARIDE=m +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_EPAT=m +CONFIG_PARIDE_EPATC8=y +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_PARIDE_PARPORT=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PG=m +CONFIG_PARIDE_PT=m +CONFIG_PARPORT=m +CONFIG_PARPORT_1284=y +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_NOT_PC=y +CONFIG_PARPORT_PC=m +# CONFIG_PARPORT_PC_FIFO is not set +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARPORT_SERIAL=m +CONFIG_PARTITION_ADVANCED=y +CONFIG_PC300=m +CONFIG_PC300_MLPPP=y +CONFIG_PCCARD=m +CONFIG_PCCARD_NONSTATIC=m +CONFIG_PCI=y +CONFIG_PCI200SYN=m +CONFIG_PCI_ATMEL=m +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_HERMES=m +# CONFIG_PCI_LEGACY_PROC is not set +CONFIG_PCI_MSI=y +CONFIG_PCMCIA=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_PCMCIA_AXNET=m +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_IOCTL=y +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_NETWAVE=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_PROBE_MEM=y +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_PCMCIA_WL3501=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCNET32=m +CONFIG_PD6729=m +# CONFIG_PDC202XX_BURST is not set +# CONFIG_PDC202XX_FORCE is not set +CONFIG_PERFMON=y +CONFIG_PGTABLE_3=y +# CONFIG_PGTABLE_4 is not set +CONFIG_PHONE=m +CONFIG_PHONE_IXJ=m +CONFIG_PHONE_IXJ_PCMCIA=m +CONFIG_PHYLIB=m +CONFIG_PLIP=m +CONFIG_PLX_HERMES=m +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_LEGACY=y +CONFIG_PNP=y +CONFIG_PNPACPI=y +# CONFIG_PNP_DEBUG is not set +CONFIG_POSIX_MQUEUE=y +CONFIG_PPDEV=m +CONFIG_PPP=m +CONFIG_PPPOE=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_SYNC_TTY=m +# CONFIG_PREEMPT is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_PRINTER=m +CONFIG_PRINTK=y +# CONFIG_PRINTK_TIME is not set +CONFIG_PRISM2=y +CONFIG_PRISM2_CS=m +CONFIG_PRISM2_PCI=m +CONFIG_PRISM2_PLX=m +CONFIG_PRISM2_USB=m +CONFIG_PRISM54=m +CONFIG_PRISM54_SOFTMAC=m +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROFILING=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QNX4FS_FS=m +CONFIG_QSEMI_PHY=m +CONFIG_QUOTA=y +CONFIG_QUOTACTL=y +CONFIG_R1000=m +CONFIG_R3964=m +CONFIG_R8169=m +# CONFIG_R8169_NAPI is not set +CONFIG_R8169_VLAN=y +CONFIG_RADIO_GEMTEK_PCI=m +CONFIG_RADIO_MAESTRO=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RAID_ATTRS=m +CONFIG_RAMFS=y +CONFIG_RAW_DRIVER=m +# CONFIG_RCU_TORTURE_TEST is not set +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_DEC16=y +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_FS=m +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_REISERFS_FS_XATTR=y +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_RELAYFS_FS=m +CONFIG_RFD_FTL=m +CONFIG_ROCKETPORT=m +CONFIG_ROMFS_FS=m +CONFIG_ROSE=m +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPCSEC_GSS_SPKM3=m +CONFIG_RTC_X1205_I2C=m +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_RXRPC=m +CONFIG_S2IO=m +# CONFIG_S2IO_NAPI is not set +CONFIG_SAS_CLASS=m +# CONFIG_SAS_DEBUG is not set +# CONFIG_SCHEDSTATS is not set +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y +CONFIG_SCSI=y +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_SCSI_AIC7XXX_OLD=m +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_ATA_PIIX=m +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_DC390T=m +CONFIG_SCSI_DC395x=m +# CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_FC_ATTRS=m +# CONFIG_SCSI_FUTURE_DOMAIN is not set +CONFIG_SCSI_IMM=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPR=m +# CONFIG_SCSI_IPR_DUMP is not set +# CONFIG_SCSI_IPR_TRACE is not set +CONFIG_SCSI_IPS=m +CONFIG_SCSI_ISCSI_ATTRS=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_LPFC=m +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_PDC_ADMA=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_PROC_FS=y +CONFIG_SCSI_QLA21XX=m +CONFIG_SCSI_QLA22XX=m +CONFIG_SCSI_QLA2300=m +CONFIG_SCSI_QLA2322=m +CONFIG_SCSI_QLA24XX=m +CONFIG_SCSI_QLA2XXX=y +CONFIG_SCSI_QLA6312=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLOGIC_FC=m +CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SATA=m +CONFIG_SCSI_SATA_ACPI=y +CONFIG_SCSI_SATA_AHCI=m +CONFIG_SCSI_SATA_INTEL_COMBINED=y +CONFIG_SCSI_SATA_MV=m +CONFIG_SCSI_SATA_NV=m +CONFIG_SCSI_SATA_PROMISE=m +CONFIG_SCSI_SATA_QSTOR=m +CONFIG_SCSI_SATA_SIL=m +CONFIG_SCSI_SATA_SIL24=m +CONFIG_SCSI_SATA_SIS=m +# CONFIG_SCSI_SATA_SVW is not set +CONFIG_SCSI_SATA_SX4=m +CONFIG_SCSI_SATA_ULI=m +CONFIG_SCSI_SATA_VIA=m +CONFIG_SCSI_SATA_VITESSE=m +CONFIG_SCSI_SPI2_ATTRS=m +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +# CONFIG_SCTP_HMAC_MD5 is not set +CONFIG_SCTP_HMAC_NONE=y +# CONFIG_SCTP_HMAC_SHA1 is not set +CONFIG_SCx200_ACB=m +CONFIG_SECURITY=y +CONFIG_SECURITY_CAPABILITIES=m +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_REALTIME=m +CONFIG_SECURITY_ROOTPLUG=m +CONFIG_SECURITY_SECLVL=m +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_DS1337=m +CONFIG_SENSORS_DS1374=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_EEPROM=m +CONFIG_SENSORS_FSCHER=m +CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6875=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PCA9539=m +CONFIG_SENSORS_PCF8574=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_RTC8564=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_ACPI=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_NR_UARTS=48 +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_SGI_L1_CONSOLE=y +CONFIG_SERIO=y +CONFIG_SERIO_I8042=m +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_RAW=m +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_MBCS=m +CONFIG_SGI_PARTITION=y +CONFIG_SGI_SNSC=y +CONFIG_SGI_TIOCX=y +CONFIG_SHAPER=m +CONFIG_SHMEM=y +CONFIG_SIGMATEL_FIR=m +CONFIG_SIS190=m +CONFIG_SIS900=m +CONFIG_SK98LIN=m +CONFIG_SKFP=m +CONFIG_SKGE=m +CONFIG_SKY2=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_SLIP_SMART=y +CONFIG_SMB_FS=m +CONFIG_SMB_NLS_DEFAULT=y +CONFIG_SMB_NLS_REMOTE="cp437" +CONFIG_SND=m +CONFIG_SND_AC97_BUS=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_AD1889=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +# CONFIG_SND_DEBUG is not set +CONFIG_SND_DUMMY=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X=m +CONFIG_SND_GENERIC_DRIVER=y +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MIXART=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_MPU401=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_MTPAV=m +CONFIG_SND_NM256=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_PCM=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PDAUDIOCF=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TIMER=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_USB_AUDIO=m +# CONFIG_SND_VERBOSE_PRINTK is not set +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_VX222=m +CONFIG_SND_VXPOCKET=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_YMFPCI=m +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=y +CONFIG_SOUND_FUSION=m +CONFIG_SOUND_ICH=m +CONFIG_SOUND_MSNDCLAS=m +CONFIG_SOUND_MSNDPIN=m +CONFIG_SOUND_PRIME=m +CONFIG_SOUND_TRIDENT=m +CONFIG_SOUND_TVMIXER=m +# CONFIG_SPARSEMEM_MANUAL is not set +# CONFIG_SPARSEMEM_STATIC is not set +# CONFIG_SPECIALIX is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_1_0_COMPATIBILITY is not set +CONFIG_SQUASHFS_2_0_COMPATIBILITY=y +CONFIG_STALDRV=y +CONFIG_STANDALONE=y +CONFIG_STRIP=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +# CONFIG_SUNGEM is not set +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_SUN_PARTITION=y +CONFIG_SWAP=y +CONFIG_SWIOTLB=y +# CONFIG_SX is not set +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_CS=m +CONFIG_SYNCLINK_SYNCPPP=m +CONFIG_SYN_COOKIES=y +CONFIG_SYSCTL=y +CONFIG_SYSFS=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_SYSV_FS=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +CONFIG_TCG_NSC=m +CONFIG_TCG_TPM=m +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_BIC=y +CONFIG_TELCLOCK=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TIGON3=m +CONFIG_TIME_INTERPOLATION=y +# CONFIG_TINY_SHMEM is not set +CONFIG_TIPAR=m +CONFIG_TMD_HERMES=m +CONFIG_TMPFS=y +# CONFIG_TMS380TR is not set +CONFIG_TR=y +CONFIG_TULIP=m +# CONFIG_TULIP_MMIO is not set +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_NAPI is not set +CONFIG_TUN=m +CONFIG_TUNER_3036=m +CONFIG_TYPHOON=m +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +CONFIG_ULI526X=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNION_FS=m +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_USB=m +CONFIG_USB_ACECAD=m +CONFIG_USB_ACM=m +CONFIG_USB_AIPTEK=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +# CONFIG_USB_APPLETOUCH is not set +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_ATI_REMOTE=m +CONFIG_USB_ATI_REMOTE2=m +CONFIG_USB_ATMEL=m +CONFIG_USB_AUERSWALD=m +# CONFIG_USB_BANDWIDTH is not set +CONFIG_USB_BELKIN=y +CONFIG_USB_CATC=m +CONFIG_USB_CPADDEV=y +CONFIG_USB_CYTHERM=m +CONFIG_USB_DABUSB=m +# CONFIG_USB_DEBUG is not set +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DSBR=m +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_EAGLE=m +CONFIG_USB_EGALAX=m +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_SPLIT_ISO=y +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_EPSON2888=y +CONFIG_USB_EZUSB=y +# CONFIG_USB_GADGET is not set +CONFIG_USB_HID=m +CONFIG_USB_HIDDEV=y +CONFIG_USB_HIDINPUT=y +# CONFIG_USB_HIDINPUT_POWERBOOK is not set +CONFIG_USB_IBMCAM=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_IRDA=m +# CONFIG_USB_ISP116X_HCD is not set +CONFIG_USB_ITMTOUCH=m +CONFIG_USB_KAWETH=m +CONFIG_USB_KBD=m +CONFIG_USB_KBTAB=m +# CONFIG_USB_KEYSPAN_REMOTE is not set +CONFIG_USB_KONICAWC=m +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_MON=y +CONFIG_USB_MOUSE=m +CONFIG_USB_MTOUCH=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_ZAURUS=m +# CONFIG_USB_OHCI_BIG_ENDIAN is not set +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_OTG is not set +CONFIG_USB_OV511=m +CONFIG_USB_OV511_DECOMP=m +CONFIG_USB_OV518_DECOMP=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_PHIDGETKIT=m +CONFIG_USB_PHIDGETSERVO=m +CONFIG_USB_PODXTPRO=m +CONFIG_USB_POWERMATE=m +CONFIG_USB_PRINTER=m +CONFIG_USB_PWC=m +CONFIG_USB_QC=m +CONFIG_USB_RIO500=m +CONFIG_USB_RT2570=m +CONFIG_USB_RTL8150=m +CONFIG_USB_SE401=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_AIRPRIME=m +# CONFIG_USB_SERIAL_ANYDATA is not set +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CP2101=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_HP4X=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_KEYSPAN=m +# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SISUSBVGA=m +# CONFIG_USB_SISUSBVGA_CON is not set +CONFIG_USB_SL811_CS=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SN9C102=m +CONFIG_USB_SPCA5XX=m +CONFIG_USB_STORAGE=m +CONFIG_USB_STORAGE_DATAFAB=y +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DPCM=y +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +CONFIG_USB_STORAGE_JUMPSHOT=y +CONFIG_USB_STORAGE_SDDR09=y +CONFIG_USB_STORAGE_SDDR55=y +CONFIG_USB_STORAGE_USBAT=y +CONFIG_USB_STV680=m +CONFIG_USB_SUSPEND=y +CONFIG_USB_SYNAPTICS=m +CONFIG_USB_TEST=m +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_USBNET=m +CONFIG_USB_USS720=m +CONFIG_USB_VICAM=m +CONFIG_USB_W9968CF=m +CONFIG_USB_WACOM=m +CONFIG_USB_XPAD=m +CONFIG_USB_YEALINK=m +CONFIG_USB_ZD1201=m +CONFIG_USB_ZD1211=m +CONFIG_VFAT_FS=m +CONFIG_VGA_CONSOLE=y +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_VIA_VELOCITY=m +CONFIG_VIDEO_AUDIO_DECODER=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT848_DVB=y +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_BUF=m +CONFIG_VIDEO_BUF_DVB=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_PP=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_DVB_ALL_FRONTENDS=y +CONFIG_VIDEO_DECODER=m +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_DPC=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_IR=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_OVCAMCHIP=m +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_SAA7134_DVB_ALL_FRONTENDS=y +CONFIG_VIDEO_SAA7134_OSS=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_SELECT=y +CONFIG_VIDEO_STRADIS=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_VIDEOBUF=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +CONFIG_VIRTUAL_MEM_MAP=y +CONFIG_VLAN_8021Q=m +# CONFIG_VLSI_FIR is not set +CONFIG_VORTEX=m +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_VXFS_FS=m +CONFIG_W1=m +CONFIG_W1_DS2433=m +# CONFIG_W1_DS2433_CRC is not set +CONFIG_W1_DS9490=m +CONFIG_W1_DS9490_BRIDGE=m +CONFIG_W1_MATROX=m +CONFIG_W1_SMEM=m +CONFIG_W1_THERM=m +CONFIG_WAN=y +CONFIG_WANXL=m +CONFIG_WAN_ROUTER=m +CONFIG_WAN_ROUTER_DRIVERS=y +# CONFIG_WATCHDOG is not set +CONFIG_WDC_ALI15X3=y +CONFIG_WINBOND_840=m +CONFIG_WLAN_NG=y +# CONFIG_X25 is not set +CONFIG_XFRM=y +CONFIG_XFRM_USER=m +CONFIG_XFS_EXPORT=y +CONFIG_XFS_FS=m +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_QUOTA=y +# CONFIG_XFS_RT is not set +CONFIG_XFS_SECURITY=y +CONFIG_YAM=m +CONFIG_YELLOWFIN=m +CONFIG_YENTA=m +CONFIG_ZISOFS=y +CONFIG_ZISOFS_FS=m +CONFIG_ZLIB_DEFLATE=m +CONFIG_ZLIB_INFLATE=y --- linux-source-2.6.15-2.6.15.orig/debian/config/ia64/config.mckinley-smp +++ linux-source-2.6.15-2.6.15/debian/config/ia64/config.mckinley-smp @@ -0,0 +1,14 @@ +# +# Config options for config.mckinley-smp automatically generated by splitconf.pl +# +CONFIG_CPUSETS=y +CONFIG_GENERIC_PENDING_IRQ=y +# CONFIG_HOTPLUG_CPU is not set +CONFIG_IA64_L1_CACHE_SHIFT=7 +# CONFIG_ITANIUM is not set +CONFIG_LOCK_KERNEL=y +CONFIG_MCKINLEY=y +CONFIG_NR_CPUS=64 +# CONFIG_SCHED_SMT is not set +CONFIG_SMP=y +CONFIG_STOP_MACHINE=y --- linux-source-2.6.15-2.6.15.orig/debian/config/ia64/config.itanium +++ linux-source-2.6.15-2.6.15/debian/config/ia64/config.itanium @@ -0,0 +1,18 @@ +# +# Config options for config.itanium automatically generated by splitconf.pl +# +CONFIG_BROKEN_ON_SMP=y +# CONFIG_COMPUTONE is not set +CONFIG_IA64_BRL_EMU=y +CONFIG_IA64_L1_CACHE_SHIFT=6 +# CONFIG_IRPORT_SIR is not set +# CONFIG_ISTALLION is not set +CONFIG_ITANIUM=y +# CONFIG_MCKINLEY is not set +# CONFIG_MOXA_INTELLIO is not set +CONFIG_PCMCIA_XIRTULIP=m +# CONFIG_RIO is not set +# CONFIG_RISCOM8 is not set +# CONFIG_SMP is not set +# CONFIG_STALLION is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set --- linux-source-2.6.15-2.6.15.orig/debian/config/ia64/config.mckinley +++ linux-source-2.6.15-2.6.15/debian/config/ia64/config.mckinley @@ -0,0 +1,17 @@ +# +# Config options for config.mckinley automatically generated by splitconf.pl +# +CONFIG_BROKEN_ON_SMP=y +# CONFIG_COMPUTONE is not set +CONFIG_IA64_L1_CACHE_SHIFT=7 +# CONFIG_IRPORT_SIR is not set +# CONFIG_ISTALLION is not set +# CONFIG_ITANIUM is not set +CONFIG_MCKINLEY=y +# CONFIG_MOXA_INTELLIO is not set +CONFIG_PCMCIA_XIRTULIP=m +# CONFIG_RIO is not set +# CONFIG_RISCOM8 is not set +# CONFIG_SMP is not set +# CONFIG_STALLION is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set --- linux-source-2.6.15-2.6.15.orig/debian/config/ia64/config.itanium-smp +++ linux-source-2.6.15-2.6.15/debian/config/ia64/config.itanium-smp @@ -0,0 +1,15 @@ +# +# Config options for config.itanium-smp automatically generated by splitconf.pl +# +CONFIG_CPUSETS=y +CONFIG_GENERIC_PENDING_IRQ=y +# CONFIG_HOTPLUG_CPU is not set +CONFIG_IA64_BRL_EMU=y +CONFIG_IA64_L1_CACHE_SHIFT=6 +CONFIG_ITANIUM=y +CONFIG_LOCK_KERNEL=y +# CONFIG_MCKINLEY is not set +CONFIG_NR_CPUS=64 +# CONFIG_SCHED_SMT is not set +CONFIG_SMP=y +CONFIG_STOP_MACHINE=y --- linux-source-2.6.15-2.6.15.orig/debian/config/archmap +++ linux-source-2.6.15-2.6.15/debian/config/archmap @@ -0,0 +1,43 @@ +# config name | KPKG_ARCH override +amd64-k8 amd64 +amd64-xeon amd64 +amd64-generic amd64 +amd64-server amd64 +hppa32 hppa +hppa32-smp hppa +hppa64 hppa +hppa64-smp hppa +386 i386 +686 i386 +k7 i386 +server i386 +server-bigiron i386 +xen0 xen +xenU xen +itanium ia64 +itanium-smp ia64 +mckinley ia64 +mckinley-smp ia64 +powerpc powerpc +powerpc-smp powerpc +powerpc64-smp powerpc64 +iseries-smp powerpc64 +sparc64 sparc +sparc64-smp sparc + +# (target-header) th-KPKG_ARCH override | kernel arch (for specific flavour headers) +th-sparc sparc64 +th-powerpc powerpc +th-powerpc64 powerpc +th-amd64 x86_64 +th-hppa parisc +th-i386 i386 +th-ia64 ia64 + +# generic headers-$ARCH | kernel arch | KPKG_ARCH +headers-amd64 x86_64 amd64 +headers-hppa parisc hppa +headers-sparc sparc64 sparc +headers-powerpc powerpc powerpc +headers-ia64 ia64 ia64 +headers-i386 i386 i386 --- linux-source-2.6.15-2.6.15.orig/debian/config/powerpc/config +++ linux-source-2.6.15-2.6.15/debian/config/powerpc/config @@ -0,0 +1,2062 @@ +# +# Common config options automatically generated by splitconf.pl +# +CONFIG_3C359=m +CONFIG_6PACK=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +CONFIG_8139TOO_8129=y +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_9P_FS=m +CONFIG_ABYSS=m +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_ACORN_PARTITION=y +# CONFIG_ACORN_PARTITION_ADFS is not set +# CONFIG_ACORN_PARTITION_CUMANA is not set +# CONFIG_ACORN_PARTITION_EESOX is not set +CONFIG_ACORN_PARTITION_ICS=y +# CONFIG_ACORN_PARTITION_POWERTEC is not set +CONFIG_ACORN_PARTITION_RISCIX=y +CONFIG_ACT200L_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_ADAPTEC_STARFIRE=m +# CONFIG_ADAPTEC_STARFIRE_NAPI is not set +CONFIG_ADB_PMU=y +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_ADM8211=m +# CONFIG_AEDSP16_MPU401 is not set +# CONFIG_AEDSP16_MSS is not set +# CONFIG_AEDSP16_SBPRO is not set +CONFIG_AFFS_FS=m +CONFIG_AFS_FS=m +CONFIG_AGP=m +CONFIG_AGP_UNINORTH=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_DEBUG_ENABLE=y +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_ENABLE_RD_STRM=y +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 +CONFIG_AIC7XXX_DEBUG_ENABLE=y +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_AIRO=m +CONFIG_AIRO_CS=m +CONFIG_ALI_FIR=m +CONFIG_ALTIVEC=y +# CONFIG_AMD8111E_NAPI is not set +CONFIG_AMD8111_ETH=m +CONFIG_AMIGA_PARTITION=y +CONFIG_APPLE_AIRPORT=m +CONFIG_APPLICOM=m +# CONFIG_APUS is not set +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_ARCNET=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_CS=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_RIM_I=m +# CONFIG_ARPD is not set +CONFIG_ASFS_DEFAULT_CODEPAGE="" +CONFIG_ASFS_FS=m +# CONFIG_ASFS_RW is not set +CONFIG_ASK_IP_FIB_HASH=y +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_OVER_ETH=m +CONFIG_ATM=y +CONFIG_ATMEL=m +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_ATM_CLIP=y +# CONFIG_ATM_CLIP_NO_ICMP is not set +# CONFIG_ATM_DUMMY is not set +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_FORE200E=m +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_FORE200E_MAYBE=m +CONFIG_ATM_FORE200E_PCA=y +CONFIG_ATM_FORE200E_PCA_DEFAULT_FW=y +CONFIG_ATM_FORE200E_TX_RETRY=16 +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_LANAI=m +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_TCP=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +CONFIG_AUDIT=y +# CONFIG_AUDITSYSCALL is not set +CONFIG_AUTOFS4_FS=m +CONFIG_AUTOFS_FS=m +CONFIG_AX25=m +# CONFIG_AX25_DAMA_SLAVE is not set +CONFIG_B44=m +CONFIG_BACKLIGHT_CLASS_DEVICE=m +CONFIG_BACKLIGHT_DEVICE=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BASE_FULL=y +CONFIG_BASE_SMALL=0 +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BCM43XX=m +# CONFIG_BCM43XX_DEBUG is not set +CONFIG_BCM43XX_DMA=y +CONFIG_BCM43XX_DMA_AND_PIO_MODE=y +# CONFIG_BCM43XX_DMA_MODE is not set +CONFIG_BCM43XX_PIO=y +# CONFIG_BCM43XX_PIO_MODE is not set +# CONFIG_BEFS_DEBUG is not set +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_AEC62XX=m +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +CONFIG_BLK_DEV_CLOOP=m +CONFIG_BLK_DEV_CMD64X=m +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_CRYPTOLOOP=m +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_CY82C693 is not set +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_DM=m +CONFIG_BLK_DEV_DM_BBR=m +CONFIG_BLK_DEV_FD=m +CONFIG_BLK_DEV_GENERIC=m +CONFIG_BLK_DEV_GNBD=m +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_HPT34X=m +CONFIG_BLK_DEV_HPT366=m +CONFIG_BLK_DEV_IDE=y +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_IDEDISK=m +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_IDEDMA_PMAC=y +CONFIG_BLK_DEV_IDEFLOPPY=m +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_IDESCSI=m +CONFIG_BLK_DEV_IDETAPE=m +CONFIG_BLK_DEV_IDE_PMAC=y +CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y +# CONFIG_BLK_DEV_IDE_PMAC_BLINK is not set +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_DEV_IT821X=m +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_MD=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_NS87415=m +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_OPTI621 is not set +CONFIG_BLK_DEV_PDC202XX_NEW=m +CONFIG_BLK_DEV_PDC202XX_OLD=m +# CONFIG_BLK_DEV_PIIX is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_BLK_DEV_SC1200=m +CONFIG_BLK_DEV_SD=m +CONFIG_BLK_DEV_SIIMAGE=m +CONFIG_BLK_DEV_SL82C105=m +# CONFIG_BLK_DEV_SLC90E66 is not set +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +# CONFIG_BLK_DEV_SVWKS is not set +CONFIG_BLK_DEV_SX8=m +# CONFIG_BLK_DEV_TRIFLEX is not set +CONFIG_BLK_DEV_TRM290=m +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_UMEM=m +CONFIG_BLK_DEV_VIA82CXXX=m +CONFIG_BNX2=m +CONFIG_BONDING=m +# CONFIG_BOOTX_TEXT is not set +CONFIG_BPQETHER=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_ULOG=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_NETFILTER=y +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BROKEN=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_BSD_DISKLABEL=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_BT=m +CONFIG_BT_ALSA=m +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUSB=m +CONFIG_BT_HCIUSB_SCO=y +CONFIG_BT_HCIVHCI=m +CONFIG_BT_HIDP=m +CONFIG_BT_L2CAP=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_SCO=m +CONFIG_BUG=y +CONFIG_CARDBUS=y +# CONFIG_CARDMAN_4000 is not set +# CONFIG_CARDMAN_4040 is not set +CONFIG_CASSINI=m +CONFIG_CC_ALIGN_FUNCTIONS=0 +CONFIG_CC_ALIGN_JUMPS=0 +CONFIG_CC_ALIGN_LABELS=0 +CONFIG_CC_ALIGN_LOOPS=0 +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +CONFIG_CHELSIO_T1=m +CONFIG_CHR_DEV_OSST=m +CONFIG_CHR_DEV_SCH=m +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_ST=m +CONFIG_CICADA_PHY=m +CONFIG_CIFS=m +# CONFIG_CIFS_EXPERIMENTAL is not set +# CONFIG_CIFS_STATS is not set +# CONFIG_CIFS_XATTR is not set +CONFIG_CISS_SCSI_TAPE=y +# CONFIG_CLEAN_COMPILE is not set +CONFIG_CLS_U32_MARK=y +# CONFIG_CLS_U32_PERF is not set +CONFIG_CLUSTER=m +CONFIG_CLUSTER_DLM=m +CONFIG_CLUSTER_DLM_PROCLOCKS=y +# CONFIG_CMDLINE_BOOL is not set +CONFIG_CODA_FS=m +# CONFIG_CODA_FS_OLD_API is not set +CONFIG_COMPUTONE=m +CONFIG_CONFIGFS_FS=m +CONFIG_CONNECTOR=m +CONFIG_CPU_FREQ=y +# CONFIG_CPU_FREQ_DEBUG is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=m +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_TABLE=y +CONFIG_CRAMFS=y +CONFIG_CRC16=m +CONFIG_CRC32=y +CONFIG_CRC_CCITT=m +CONFIG_CRYPTO=y +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_WP512=m +CONFIG_CYCLADES=m +CONFIG_CYCLADES_SYNC=m +CONFIG_CYCLOMX_X25=y +# CONFIG_CYZ_INTR is not set +CONFIG_DAVICOM_PHY=m +CONFIG_DAZUKO=m +CONFIG_DE2104X=m +CONFIG_DE4X5=m +CONFIG_DE600=m +CONFIG_DE620=m +# CONFIG_DEBUGGER is not set +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_VM is not set +CONFIG_DECNET=m +CONFIG_DECNET_NF_GRABULATOR=m +# CONFIG_DECNET_ROUTER is not set +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFXX=m +CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DEV_APPLETALK=y +CONFIG_DGRS=m +CONFIG_DIGIEPCA=m +# CONFIG_DISCONTIGMEM_MANUAL is not set +CONFIG_DL2K=m +CONFIG_DLCI=m +CONFIG_DLCI_COUNT=24 +CONFIG_DLCI_MAX=8 +CONFIG_DM9102=m +CONFIG_DM_CRYPT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_EMC=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_ZERO=m +CONFIG_DNOTIFY=y +CONFIG_DONGLE=y +# CONFIG_DONGLE_OLD is not set +CONFIG_DRM=m +CONFIG_DRM_MGA=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_SAVAGE=m +CONFIG_DRM_SIS=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_VIA=m +CONFIG_DSCC4=m +CONFIG_DSCC4_PCISYNC=y +CONFIG_DSCC4_PCI_RST=y +CONFIG_DTLK=m +CONFIG_DUMMY=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_DVB=y +CONFIG_DVB_ATMEL_AT76C651=m +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_B2C2_FLEXCOP=m +# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_BT8XX=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_PATCH=m +CONFIG_DVB_CINERGYT2=m +CONFIG_DVB_CINERGYT2_ENABLE_RC_INPUT_DEVICE=y +CONFIG_DVB_CINERGYT2_QUERY_INTERVAL=250 +CONFIG_DVB_CINERGYT2_RC_QUERY_INTERVAL=100 +CONFIG_DVB_CINERGYT2_STREAM_BUF_SIZE=512 +CONFIG_DVB_CINERGYT2_STREAM_URB_COUNT=32 +CONFIG_DVB_CINERGYT2_TUNING=y +CONFIG_DVB_CORE=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CX24110=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_L64781=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_MT312=m +CONFIG_DVB_MT352=m +CONFIG_DVB_NXT2002=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_PLUTO2=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_STV0297=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA80XX=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_DVB_USB=m +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_CXUSB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_VES1820=m +CONFIG_DVB_VES1X93=m +# CONFIG_DXR3 is not set +CONFIG_E100=m +CONFIG_E1000=m +# CONFIG_E1000_NAPI is not set +# CONFIG_EARLY_PROM_PRINT is not set +CONFIG_ECC=m +CONFIG_ECONET=m +CONFIG_ECONET_AUNUDP=y +CONFIG_ECONET_NATIVE=y +CONFIG_EEPRO100=m +# CONFIG_EFI_PARTITION is not set +CONFIG_EFS_FS=m +# CONFIG_EMBEDDED is not set +# CONFIG_EMBEDDED6xx is not set +CONFIG_EPIC100=m +CONFIG_EPOLL=y +CONFIG_EQUALIZER=m +CONFIG_ESI_DONGLE=m +CONFIG_EXPERIMENTAL=y +CONFIG_EXPORTFS=m +CONFIG_EXT2_FS=m +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT2_FS_XATTR=y +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=m +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT3_FS_XATTR=y +CONFIG_FARSYNC=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_FAT_FS=m +CONFIG_FB=y +CONFIG_FB_3DFX=y +# CONFIG_FB_3DFX_ACCEL is not set +CONFIG_FB_ASILIANT=y +CONFIG_FB_ATY=y +CONFIG_FB_ATY128=y +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GENERIC_LCD=y +CONFIG_FB_ATY_GX=y +# CONFIG_FB_ATY_XL_INIT is not set +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_CIRRUS=m +CONFIG_FB_CONTROL=y +CONFIG_FB_CT65550=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_CYBLA=m +CONFIG_FB_IMSTT=y +CONFIG_FB_KYRO=m +CONFIG_FB_MACMODES=y +CONFIG_FB_MATROX=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MULTIHEAD=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_I2C=y +CONFIG_FB_OF=y +CONFIG_FB_PLATINUM=y +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +# CONFIG_FB_PM3 is not set +CONFIG_FB_RADEON=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_RADEON_I2C=y +# CONFIG_FB_RADEON_OLD is not set +CONFIG_FB_RIVA=m +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_I2C=y +CONFIG_FB_S1D13XXX=m +# CONFIG_FB_S3TRIO is not set +CONFIG_FB_SAVAGE=m +CONFIG_FB_SAVAGE_ACCEL=y +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_TRIDENT=m +CONFIG_FB_TRIDENT_ACCEL=y +CONFIG_FB_VALKYRIE=y +# CONFIG_FB_VGA16 is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FB_VOODOO1=y +CONFIG_FDDI=y +CONFIG_FEALNX=m +# CONFIG_FONTS is not set +CONFIG_FONT_8x16=y +CONFIG_FONT_8x8=y +CONFIG_FORCEDETH=m +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_FS_MBCACHE=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FTL=m +CONFIG_FUSE_FS=m +CONFIG_FUSION=y +CONFIG_FUSION_CTL=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_LAN=m +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_SAS=m +CONFIG_FUSION_SPI=m +CONFIG_FUTEX=y +CONFIG_FW_LOADER=y +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GFS_FS=m +CONFIG_GFS_FS_LOCK_DLM=m +CONFIG_GFS_FS_LOCK_GULM=m +CONFIG_GFS_FS_LOCK_HARNESS=m +CONFIG_GFS_FS_LOCK_NOLOCK=m +CONFIG_GIRBIL_DONGLE=m +CONFIG_HAMACHI=m +CONFIG_HAMRADIO=y +CONFIG_HAPPYMEAL=m +CONFIG_HDLC=m +CONFIG_HDLC_CISCO=y +CONFIG_HDLC_FR=y +CONFIG_HDLC_PPP=y +CONFIG_HDLC_RAW=y +CONFIG_HDLC_RAW_ETH=y +CONFIG_HDLC_X25=y +CONFIG_HERMES=m +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +# CONFIG_HID_FF is not set +CONFIG_HIPPI=y +CONFIG_HOSTAP=m +CONFIG_HOSTAP_CS=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_PLX=m +CONFIG_HOTPLUG=y +# CONFIG_HOTPLUG_PCI is not set +CONFIG_HP100=m +CONFIG_HPFS_FS=m +# CONFIG_HPT34X_AUTODMA is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_HWMON_VID=m +CONFIG_HW_CONSOLE=y +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=y +CONFIG_I2C_ALGOPCA=m +CONFIG_I2C_ALGOPCF=m +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_CHARDEV=m +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +# CONFIG_I2C_DEBUG_CORE is not set +CONFIG_I2C_I801=m +CONFIG_I2C_I810=m +CONFIG_I2C_ISA=m +CONFIG_I2C_KEYWEST=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PCA_ISA=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_PROSAVAGE=m +CONFIG_I2C_SAVAGE4=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_STUB=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_VOODOO3=m +CONFIG_I2O=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_BUS=m +CONFIG_I2O_CONFIG=m +CONFIG_I2O_CONFIG_OLD_IOCTL=y +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_PROC=m +CONFIG_I2O_SCSI=m +CONFIG_I82092=m +CONFIG_IBMOL=m +CONFIG_IDE=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_IDEDMA_PCI_AUTO=y +CONFIG_IDEPCI_SHARE_IRQ=y +# CONFIG_IDE_ARM is not set +# CONFIG_IDE_GENERIC is not set +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IEEE1394=m +# CONFIG_IEEE1394_CMP is not set +CONFIG_IEEE1394_CONFIG_ROM_IP1394=y +CONFIG_IEEE1394_DV1394=m +CONFIG_IEEE1394_ETH1394=m +# CONFIG_IEEE1394_EXPORT_FULL_API is not set +CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y +CONFIG_IEEE1394_OHCI1394=m +CONFIG_IEEE1394_OUI_DB=y +CONFIG_IEEE1394_PCILYNX=m +CONFIG_IEEE1394_RAWIO=m +CONFIG_IEEE1394_SBP2=m +# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set +# CONFIG_IEEE1394_VERBOSEDEBUG is not set +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE80211=m +CONFIG_IEEE80211_1_1_13=m +CONFIG_IEEE80211_1_1_13_CRYPT_CCMP=m +CONFIG_IEEE80211_1_1_13_CRYPT_TKIP=m +CONFIG_IEEE80211_1_1_13_CRYPT_WEP=m +CONFIG_IEEE80211_CRYPT_CCMP=m +CONFIG_IEEE80211_CRYPT_TKIP=m +CONFIG_IEEE80211_CRYPT_WEP=m +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_SOFTMAC=m +# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set +# CONFIG_IKCONFIG is not set +CONFIG_INET=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET_AH=m +CONFIG_INET_DCCP_DIAG=m +CONFIG_INET_DIAG=y +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_TCP_DIAG=y +CONFIG_INET_TUNNEL=m +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_IPOIB=m +# CONFIG_INFINIBAND_IPOIB_DEBUG is not set +CONFIG_INFINIBAND_MTHCA=m +# CONFIG_INFINIBAND_MTHCA_DEBUG is not set +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFTL=m +CONFIG_INITRAMFS_SOURCE="" +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_INOTIFY=y +CONFIG_INPUT=y +CONFIG_INPUT_EVBUG=m +CONFIG_INPUT_EVDEV=m +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_INPUT_TSDEV=m +CONFIG_INPUT_TSDEV_SCREEN_X=240 +CONFIG_INPUT_TSDEV_SCREEN_Y=320 +CONFIG_INPUT_UINPUT=m +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_NOOP=y +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_MATCH_AHESP=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_LENGTH=m +CONFIG_IP6_NF_MATCH_LIMIT=m +CONFIG_IP6_NF_MATCH_MAC=m +CONFIG_IP6_NF_MATCH_MARK=m +CONFIG_IP6_NF_MATCH_MULTIPORT=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_OWNER=m +CONFIG_IP6_NF_MATCH_PHYSDEV=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_TARGET_MARK=m +CONFIG_IP6_NF_TARGET_NFQUEUE=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IPDDP=m +CONFIG_IPDDP_DECAP=y +CONFIG_IPDDP_ENCAP=y +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_POWEROFF=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPV6=m +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPW2100=m +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2200=m +# CONFIG_IPW2200_DEBUG is not set +CONFIG_IPW2200_MONITOR=y +# CONFIG_IPW3945 is not set +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_DCCP=m +CONFIG_IP_DCCP_CCID3=m +# CONFIG_IP_DCCP_DEBUG is not set +CONFIG_IP_DCCP_TFRC_LIB=m +# CONFIG_IP_DCCP_UNLOAD_HACK is not set +CONFIG_IP_FIB_HASH=y +# CONFIG_IP_FIB_TRIE is not set +CONFIG_IP_MROUTE=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_NF_AMANDA=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_IP_NF_CONNTRACK=m +# CONFIG_IP_NF_CONNTRACK_EVENTS is not set +CONFIG_IP_NF_CONNTRACK_MARK=y +CONFIG_IP_NF_CONNTRACK_NETLINK=m +CONFIG_IP_NF_CT_ACCT=y +CONFIG_IP_NF_CT_PROTO_SCTP=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_COMMENT=m +CONFIG_IP_NF_MATCH_CONNBYTES=m +CONFIG_IP_NF_MATCH_CONNMARK=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_DCCP=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_HASHLIMIT=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_MAC=m +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_PHYSDEV=m +CONFIG_IP_NF_MATCH_PKTTYPE=m +CONFIG_IP_NF_MATCH_REALM=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_SCTP=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_STRING=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_AMANDA=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_NAT_PPTP=m +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_NETBIOS_NS=m +CONFIG_IP_NF_PPTP=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_TARGET_CLASSIFY=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_CONNMARK=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_NFQUEUE=m +CONFIG_IP_NF_TARGET_NOTRACK=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TFTP=m +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_IP_PNP is not set +CONFIG_IP_ROUTE_FWMARK=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_MULTIPATH_CACHED=y +CONFIG_IP_ROUTE_MULTIPATH_DRR=m +CONFIG_IP_ROUTE_MULTIPATH_RANDOM=m +CONFIG_IP_ROUTE_MULTIPATH_RR=m +CONFIG_IP_ROUTE_MULTIPATH_WRANDOM=m +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_SCTP=m +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_TAB_BITS=12 +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_WRR=m +CONFIG_IRCOMM=m +CONFIG_IRDA=m +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRPORT_SIR=m +CONFIG_IRTTY_SIR=m +CONFIG_ISA_DMA_API=y +CONFIG_ISCSI_TCP=m +# CONFIG_ISDN is not set +# CONFIG_ISI is not set +CONFIG_ISO9660_FS=m +CONFIG_ISTALLION=m +CONFIG_IXGB=m +# CONFIG_IXGB_NAPI is not set +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_SUMMARY is not set +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS_FS=m +CONFIG_JFFS_FS_VERBOSE=0 +CONFIG_JFFS_PROC_FS=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +CONFIG_JFS_STATISTICS=y +CONFIG_JOLIET=y +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +# CONFIG_KEXEC is not set +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_LKKBD=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYS=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +CONFIG_KMOD=y +CONFIG_KOBJECT_UEVENT=y +CONFIG_LANMEDIA=m +CONFIG_LAPB=m +CONFIG_LAPBETHER=m +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_DEVICE=y +# CONFIG_LDM_DEBUG is not set +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_LIBCRC32C=m +CONFIG_LITELINK_DONGLE=m +CONFIG_LLC=y +CONFIG_LLC2=m +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +# CONFIG_LOGO is not set +CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_LP_CONSOLE is not set +CONFIG_LXT_PHY=m +CONFIG_MA600_DONGLE=m +CONFIG_MAC_PARTITION=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_MARVELL_PHY=m +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MCP2120_DONGLE=m +CONFIG_MD=y +CONFIG_MD_FAULTY=m +CONFIG_MD_LINEAR=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID5=m +CONFIG_MD_RAID6=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_SAS=m +CONFIG_MII=m +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MKISS=m +CONFIG_MMC=m +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_SDHCI=m +CONFIG_MMC_WBSD=m +# CONFIG_MMIO_NVRAM is not set +CONFIG_MMU=y +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +CONFIG_MPIC=y +CONFIG_MSDOS_FS=m +CONFIG_MSDOS_PARTITION=y +CONFIG_MTD=m +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTD_ABSENT=m +CONFIG_MTD_BLKMTD=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_BLOCK2MTD=m +CONFIG_MTD_BLOCK_RO=m +CONFIG_MTD_CFI=m +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_AMDSTD_RETRY=0 +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_CHAR=m +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_CONCAT=m +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_DOC2000=m +CONFIG_MTD_DOC2001=m +CONFIG_MTD_DOC2001PLUS=m +CONFIG_MTD_DOCECC=m +CONFIG_MTD_DOCPROBE=m +CONFIG_MTD_DOCPROBE_ADDRESS=0 +# CONFIG_MTD_DOCPROBE_ADVANCED is not set +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_MAP_BANK_WIDTH_1=y +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +CONFIG_MTD_MAP_BANK_WIDTH_2=y +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +CONFIG_MTD_MTDRAM=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_DISKONCHIP=m +# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set +CONFIG_MTD_NAND_IDS=m +CONFIG_MTD_NAND_NANDSIM=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_PCI=m +CONFIG_MTD_PCMCIA=m +# CONFIG_MTD_PCMCIA_ANONYMOUS is not set +CONFIG_MTD_PHRAM=m +CONFIG_MTD_PHYSMAP=m +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 +CONFIG_MTD_PHYSMAP_LEN=0x4000000 +CONFIG_MTD_PHYSMAP_START=0x8000000 +CONFIG_MTD_PLATRAM=m +CONFIG_MTD_PMC551=m +# CONFIG_MTD_PMC551_BUGFIX is not set +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_RAM=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +CONFIG_MTD_REDBOOT_PARTS=m +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +CONFIG_MTD_ROM=m +CONFIG_MTD_SLRAM=m +CONFIG_MV643XX_ETH=m +CONFIG_MV643XX_ETH_0=y +CONFIG_MV643XX_ETH_1=y +CONFIG_MV643XX_ETH_2=y +CONFIG_NATSEMI=m +CONFIG_NCPFS_EXTRAS=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_PACKET_SIGNING=y +# CONFIG_NCPFS_SMALLDOS is not set +CONFIG_NCPFS_STRONG=y +CONFIG_NCP_FS=m +CONFIG_NE2K_PCI=m +CONFIG_NET=y +CONFIG_NETCONSOLE=m +CONFIG_NETDEVICES=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETPOLL=y +# CONFIG_NETPOLL_RX is not set +# CONFIG_NETPOLL_TRAP is not set +CONFIG_NETROM=m +CONFIG_NET_ACX=m +CONFIG_NET_ACX_PCI=y +CONFIG_NET_ACX_USB=y +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_ACT is not set +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_FW=m +# CONFIG_NET_CLS_IND is not set +CONFIG_NET_CLS_POLICE=y +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_U32=m +# CONFIG_NET_DIVERT is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_ETHERNET=y +CONFIG_NET_FC=y +CONFIG_NET_IPG=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_NET_IPIP=m +CONFIG_NET_KEY=m +CONFIG_NET_MRV8K=m +CONFIG_NET_PCI=y +CONFIG_NET_PCMCIA=y +CONFIG_NET_PKTGEN=m +CONFIG_NET_POCKET=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_NET_RADIO=y +CONFIG_NET_RT2400=m +CONFIG_NET_RT2500=m +CONFIG_NET_RT2600=m +CONFIG_NET_RTL8187=m +CONFIG_NET_RTL818X=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_CBQ=m +# CONFIG_NET_SCH_CLK_CPU is not set +# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set +CONFIG_NET_SCH_CLK_JIFFIES=y +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_TULIP=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_WIRELESS=y +CONFIG_NFSD=m +CONFIG_NFSD_TCP=y +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +CONFIG_NFSD_V4=y +CONFIG_NFS_COMMON=y +CONFIG_NFS_DIRECTIO=y +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +CONFIG_NFS_V4=y +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_NLS=y +CONFIG_NLS_ASCII=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_DEFAULT="cp437" +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m +CONFIG_NORTEL_HERMES=m +CONFIG_NS83820=m +CONFIG_NSC_FIR=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_FS=m +# CONFIG_NTFS_RW is not set +CONFIG_N_HDLC=m +# CONFIG_OAKNET is not set +CONFIG_OBSOLETE_MODPARM=y +# CONFIG_OBSOLETE_OSS_DRIVER is not set +# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set +CONFIG_OCFS2_FS=m +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_OPROFILE=m +CONFIG_OSF_PARTITION=y +CONFIG_PACKET=m +CONFIG_PACKET_MMAP=y +CONFIG_PARIDE=m +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_EPAT=m +# CONFIG_PARIDE_EPATC8 is not set +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_PARIDE_PARPORT=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PG=m +CONFIG_PARIDE_PT=m +CONFIG_PARPORT=m +CONFIG_PARPORT_1284=y +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_NOT_PC=y +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARPORT_SERIAL=m +CONFIG_PARTITION_ADVANCED=y +CONFIG_PC300=m +CONFIG_PC300_MLPPP=y +CONFIG_PCCARD=m +CONFIG_PCCARD_NONSTATIC=m +CONFIG_PCI=y +CONFIG_PCI200SYN=m +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_ATMEL=m +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_HERMES=m +# CONFIG_PCI_LEGACY_PROC is not set +CONFIG_PCMCIA=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_PCMCIA_AXNET=m +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_IOCTL=y +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_NETWAVE=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_PROBE_MEM=y +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_PCMCIA_WL3501=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCMCIA_XIRTULIP=m +CONFIG_PCNET32=m +CONFIG_PD6729=m +# CONFIG_PDC202XX_BURST is not set +CONFIG_PDC202XX_FORCE=y +CONFIG_PHONE=m +CONFIG_PHONE_IXJ=m +CONFIG_PHONE_IXJ_PCMCIA=m +CONFIG_PHYLIB=m +CONFIG_PLIP=m +CONFIG_PLX_HERMES=m +CONFIG_PM=y +CONFIG_PMAC_BACKLIGHT=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_LEGACY=y +CONFIG_POSIX_MQUEUE=y +CONFIG_PPC=y +CONFIG_PPC_FPU=y +CONFIG_PPC_I8259=y +# CONFIG_PPC_ISERIES is not set +CONFIG_PPC_MERGE=y +CONFIG_PPC_MULTIPLATFORM=y +CONFIG_PPC_OF=y +CONFIG_PPC_PMAC=y +CONFIG_PPC_RTAS=y +CONFIG_PPC_STD_MMU=y +CONFIG_PPDEV=m +CONFIG_PPP=m +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_SYNC_TTY=m +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_PRINTER=m +CONFIG_PRINTK=y +CONFIG_PRINTK_TIME=y +CONFIG_PRISM54=m +CONFIG_PRISM54_SOFTMAC=m +CONFIG_PROC_DEVICETREE=y +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROFILING=y +CONFIG_PSS_MIXER=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QNX4FS_FS=m +# CONFIG_QNX4FS_RW is not set +CONFIG_QSEMI_PHY=m +CONFIG_QUOTA=y +CONFIG_QUOTACTL=y +CONFIG_R1000=m +CONFIG_R3964=m +CONFIG_R8169=m +# CONFIG_R8169_NAPI is not set +CONFIG_R8169_VLAN=y +CONFIG_RADIO_GEMTEK_PCI=m +CONFIG_RADIO_MAESTRO=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RAID_ATTRS=m +CONFIG_RAMFS=y +CONFIG_RAW_DRIVER=m +# CONFIG_RCU_TORTURE_TEST is not set +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_DEC16=y +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_FS=m +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_REISERFS_FS_XATTR=y +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_RELAYFS_FS=m +CONFIG_RFD_FTL=m +CONFIG_RISCOM8=m +CONFIG_ROADRUNNER=m +# CONFIG_ROADRUNNER_LARGE_RINGS is not set +CONFIG_ROCKETPORT=m +CONFIG_ROMFS_FS=m +CONFIG_ROSE=m +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPCSEC_GSS_SPKM3=m +CONFIG_RTAS_PROC=y +CONFIG_RTC_X1205_I2C=m +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_RXRPC=m +CONFIG_S2IO=m +# CONFIG_S2IO_NAPI is not set +CONFIG_SAS_CLASS=m +# CONFIG_SAS_DEBUG is not set +CONFIG_SC6600=y +CONFIG_SC6600_CDROM=4 +CONFIG_SC6600_CDROMBASE=0x0 +CONFIG_SC6600_JOY=y +# CONFIG_SCHEDSTATS is not set +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y +CONFIG_SCSI=m +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_SCSI_AIC7XXX_OLD=m +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_ATA_PIIX=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_DC390T=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_EATA_PIO=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_INIA100 is not set +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPR=m +# CONFIG_SCSI_IPR_DUMP is not set +# CONFIG_SCSI_IPR_TRACE is not set +CONFIG_SCSI_IPS=m +CONFIG_SCSI_ISCSI_ATTRS=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_LPFC=m +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_OMIT_FLASHPOINT is not set +CONFIG_SCSI_PDC_ADMA=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_PROC_FS=y +CONFIG_SCSI_QLA21XX=m +CONFIG_SCSI_QLA22XX=m +CONFIG_SCSI_QLA2300=m +CONFIG_SCSI_QLA2322=m +CONFIG_SCSI_QLA24XX=m +CONFIG_SCSI_QLA2XXX=m +CONFIG_SCSI_QLA6312=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLOGIC_FC=m +CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SATA=m +CONFIG_SCSI_SATA_AHCI=m +CONFIG_SCSI_SATA_INTEL_COMBINED=y +CONFIG_SCSI_SATA_MV=m +CONFIG_SCSI_SATA_NV=m +CONFIG_SCSI_SATA_PROMISE=m +CONFIG_SCSI_SATA_QSTOR=m +CONFIG_SCSI_SATA_SIL=m +CONFIG_SCSI_SATA_SIL24=m +CONFIG_SCSI_SATA_SIS=m +CONFIG_SCSI_SATA_SVW=m +CONFIG_SCSI_SATA_SX4=m +CONFIG_SCSI_SATA_ULI=m +CONFIG_SCSI_SATA_VIA=m +CONFIG_SCSI_SATA_VITESSE=m +CONFIG_SCSI_SPI2_ATTRS=m +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +CONFIG_SCTP_HMAC_MD5=y +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +CONFIG_SCx200_ACB=m +CONFIG_SECCOMP=y +CONFIG_SECURITY=y +CONFIG_SECURITY_CAPABILITIES=m +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_REALTIME=m +CONFIG_SECURITY_ROOTPLUG=m +CONFIG_SECURITY_SECLVL=m +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_DS1337=m +CONFIG_SENSORS_DS1374=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_EEPROM=m +CONFIG_SENSORS_FSCHER=m +CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6875=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PCA9539=m +CONFIG_SENSORS_PCF8574=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_RTC8564=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_8250_CS=m +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_NR_UARTS=48 +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_CORE=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_PMACZILOG=m +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_RAW=m +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SHAPER=m +CONFIG_SHMEM=y +CONFIG_SIGMATEL_FIR=m +CONFIG_SIS190=m +CONFIG_SIS900=m +CONFIG_SK98LIN=m +CONFIG_SKFP=m +CONFIG_SKGE=m +CONFIG_SKY2=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_SLIP_SMART=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +CONFIG_SMC_IRCC_FIR=m +CONFIG_SND=m +CONFIG_SND_AC97_BUS=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_AD1889=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ALS4000=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +# CONFIG_SND_DEBUG is not set +CONFIG_SND_DUMMY=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X=m +CONFIG_SND_GENERIC_DRIVER=y +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MIXART=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_MPU401=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_MTPAV=m +CONFIG_SND_NM256=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_PCM=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PDAUDIOCF=m +CONFIG_SND_POWERMAC=m +CONFIG_SND_POWERMAC_AUTO_DRC=y +CONFIG_SND_RAWMIDI=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TIMER=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_USX2Y=m +# CONFIG_SND_VERBOSE_PRINTK is not set +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_VX222=m +CONFIG_SND_VXPOCKET=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_YMFPCI=m +CONFIG_SOFT_WATCHDOG=m +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SOUND_ACI_MIXER=m +# CONFIG_SOUND_AD1816 is not set +CONFIG_SOUND_AD1889=m +CONFIG_SOUND_ADLIB=m +CONFIG_SOUND_AEDSP16=m +# CONFIG_SOUND_DMAP is not set +CONFIG_SOUND_FUSION=m +CONFIG_SOUND_ICH=m +CONFIG_SOUND_KAHLUA=m +CONFIG_SOUND_MPU401=m +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +CONFIG_SOUND_MSS=m +CONFIG_SOUND_OPL3SA2=m +CONFIG_SOUND_OSS=m +CONFIG_SOUND_PAS=m +CONFIG_SOUND_PRIME=m +CONFIG_SOUND_PSS=m +CONFIG_SOUND_SB=m +# CONFIG_SOUND_TRACEINIT is not set +CONFIG_SOUND_TRIDENT=m +CONFIG_SOUND_TRIX=m +CONFIG_SOUND_TVMIXER=m +CONFIG_SOUND_UART6850=m +CONFIG_SOUND_VMIDI=m +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPECIALIX=m +# CONFIG_SPECIALIX_RTSCTS is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_1_0_COMPATIBILITY is not set +CONFIG_SQUASHFS_2_0_COMPATIBILITY=y +CONFIG_STALDRV=y +CONFIG_STALLION=m +CONFIG_STANDALONE=y +CONFIG_STRIP=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_SUNGEM=m +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_SUN_PARTITION=y +CONFIG_SWAP=y +CONFIG_SX=m +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_CS=m +CONFIG_SYNCLINK_SYNCPPP=m +CONFIG_SYN_COOKIES=y +CONFIG_SYSCTL=y +CONFIG_SYSFS=y +CONFIG_SYSVIPC=y +CONFIG_SYSV_FS=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_NSC=m +CONFIG_TCG_TPM=m +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_BIC=y +CONFIG_TEKRAM_DONGLE=m +CONFIG_TELCLOCK=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TIGON3=m +# CONFIG_TINY_SHMEM is not set +CONFIG_TIPAR=m +CONFIG_TMD_HERMES=m +CONFIG_TMPFS=y +CONFIG_TMS380TR=m +CONFIG_TMSPCI=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TR=y +CONFIG_TULIP=m +# CONFIG_TULIP_MMIO is not set +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_NAPI is not set +CONFIG_TUN=m +CONFIG_TUNER_3036=m +CONFIG_TYPHOON=m +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +CONFIG_ULI526X=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNION_FS=m +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_USB=m +CONFIG_USBPCWATCHDOG=m +CONFIG_USB_ACECAD=m +CONFIG_USB_ACM=m +CONFIG_USB_AIPTEK=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_APPLETOUCH=m +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_ATI_REMOTE=m +CONFIG_USB_ATI_REMOTE2=m +CONFIG_USB_ATM=m +CONFIG_USB_ATMEL=m +CONFIG_USB_AUERSWALD=m +# CONFIG_USB_BANDWIDTH is not set +CONFIG_USB_BELKIN=y +CONFIG_USB_CATC=m +CONFIG_USB_CPADDEV=y +CONFIG_USB_CXACRU=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_DABUSB=m +# CONFIG_USB_DEBUG is not set +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DSBR=m +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_EAGLE=m +CONFIG_USB_EGALAX=m +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_SPLIT_ISO=y +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_EPSON2888=y +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_EZUSB=y +CONFIG_USB_FILE_STORAGE=m +# CONFIG_USB_FILE_STORAGE_TEST is not set +CONFIG_USB_GADGET=m +CONFIG_USB_GADGETFS=m +# CONFIG_USB_GADGET_DEBUG_FILES is not set +CONFIG_USB_GADGET_DUALSPEED=y +# CONFIG_USB_GADGET_DUMMY_HCD is not set +# CONFIG_USB_GADGET_GOKU is not set +# CONFIG_USB_GADGET_LH7A40X is not set +CONFIG_USB_GADGET_NET2280=y +# CONFIG_USB_GADGET_OMAP is not set +# CONFIG_USB_GADGET_PXA2XX is not set +CONFIG_USB_GADGET_SELECTED=y +CONFIG_USB_G_SERIAL=m +CONFIG_USB_HID=m +CONFIG_USB_HIDDEV=y +CONFIG_USB_HIDINPUT=y +CONFIG_USB_HIDINPUT_POWERBOOK=y +CONFIG_USB_IBMCAM=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_IRDA=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ITMTOUCH=m +CONFIG_USB_KAWETH=m +CONFIG_USB_KBD=m +CONFIG_USB_KBTAB=m +# CONFIG_USB_KEYSPAN_REMOTE is not set +CONFIG_USB_KONICAWC=m +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_MON=y +CONFIG_USB_MOUSE=m +CONFIG_USB_MTOUCH=m +CONFIG_USB_NET2280=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_ZAURUS=m +# CONFIG_USB_OHCI_BIG_ENDIAN is not set +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_OTG is not set +CONFIG_USB_OV511=m +CONFIG_USB_OV511_DECOMP=m +CONFIG_USB_OV518_DECOMP=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_PHIDGETKIT=m +CONFIG_USB_PHIDGETSERVO=m +CONFIG_USB_PODXTPRO=m +CONFIG_USB_POWERMATE=m +CONFIG_USB_PRINTER=m +CONFIG_USB_PWC=m +CONFIG_USB_QC=m +CONFIG_USB_RIO500=m +CONFIG_USB_RT2570=m +CONFIG_USB_RTL8150=m +CONFIG_USB_SE401=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_AIRPRIME=m +# CONFIG_USB_SERIAL_ANYDATA is not set +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CP2101=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_HP4X=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_KEYSPAN=m +# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SISUSBVGA=m +# CONFIG_USB_SISUSBVGA_CON is not set +CONFIG_USB_SL811_CS=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SN9C102=m +CONFIG_USB_SPCA5XX=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_STORAGE=m +CONFIG_USB_STORAGE_DATAFAB=y +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DPCM=y +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +CONFIG_USB_STORAGE_JUMPSHOT=y +CONFIG_USB_STORAGE_SDDR09=y +CONFIG_USB_STORAGE_SDDR55=y +CONFIG_USB_STORAGE_USBAT=y +CONFIG_USB_STV680=m +CONFIG_USB_SUSPEND=y +CONFIG_USB_SYNAPTICS=m +CONFIG_USB_TEST=m +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_USBNET=m +CONFIG_USB_USS720=m +CONFIG_USB_VICAM=m +CONFIG_USB_W9968CF=m +CONFIG_USB_WACOM=m +CONFIG_USB_XPAD=m +CONFIG_USB_XUSBATM=m +CONFIG_USB_YEALINK=m +CONFIG_USB_ZD1201=m +CONFIG_USB_ZD1211=m +CONFIG_USB_ZERO=m +# CONFIG_VENDOR_SANGOMA is not set +CONFIG_VFAT_FS=m +# CONFIG_VGA_CONSOLE is not set +CONFIG_VIA_FIR=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_VIA_VELOCITY=m +CONFIG_VIDEO_AUDIO_DECODER=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT848_DVB=y +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_BUF=m +CONFIG_VIDEO_BUF_DVB=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_PP=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_DVB_ALL_FRONTENDS=y +CONFIG_VIDEO_DECODER=m +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_DPC=m +# CONFIG_VIDEO_EM28XX is not set +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_IR=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_OVCAMCHIP=m +# CONFIG_VIDEO_PLANB is not set +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_SAA7134_DVB_ALL_FRONTENDS=y +CONFIG_VIDEO_SAA7134_OSS=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_SELECT=y +# CONFIG_VIDEO_STRADIS is not set +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_VIDEOBUF=m +CONFIG_VIDEO_W9966=m +# CONFIG_VIDEO_ZORAN is not set +# CONFIG_VIDEO_ZR36120 is not set +CONFIG_VLAN_8021Q=m +CONFIG_VLSI_FIR=m +CONFIG_VORTEX=m +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_VXFS_FS=m +CONFIG_W1=m +CONFIG_W1_DS2433=m +# CONFIG_W1_DS2433_CRC is not set +CONFIG_W1_DS9490=m +CONFIG_W1_DS9490_BRIDGE=m +CONFIG_W1_MATROX=m +CONFIG_W1_SMEM=m +CONFIG_W1_THERM=m +CONFIG_WAN=y +# CONFIG_WANT_EARLY_SERIAL is not set +CONFIG_WANXL=m +CONFIG_WAN_ROUTER=m +CONFIG_WAN_ROUTER_DRIVERS=y +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_RTAS=m +CONFIG_WDTPCI=m +CONFIG_WDT_501_PCI=y +CONFIG_WINBOND_840=m +CONFIG_WINBOND_FIR=m +CONFIG_WINDFARM=m +CONFIG_X25=m +CONFIG_X25_ASY=m +CONFIG_XFRM=y +CONFIG_XFRM_USER=m +CONFIG_XFS_EXPORT=y +CONFIG_XFS_FS=m +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_RT=y +CONFIG_XFS_SECURITY=y +CONFIG_YAM=m +CONFIG_YELLOWFIN=m +CONFIG_YENTA=m +CONFIG_ZISOFS=y +CONFIG_ZISOFS_FS=m +CONFIG_ZLIB_DEFLATE=m +CONFIG_ZLIB_INFLATE=y --- linux-source-2.6.15-2.6.15.orig/debian/config/powerpc/config.powerpc +++ linux-source-2.6.15-2.6.15/debian/config/powerpc/config.powerpc @@ -0,0 +1,97 @@ +# +# Config options for config.powerpc automatically generated by splitconf.pl +# +# CONFIG_40x is not set +# CONFIG_44x is not set +CONFIG_6xx=y +# CONFIG_8xx is not set +CONFIG_ADB=y +CONFIG_ADB_CUDA=y +CONFIG_ADB_MACIO=y +# CONFIG_ADVANCED_OPTIONS is not set +CONFIG_ANSLCD=m +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_NICSTAR=m +# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set +# CONFIG_ATM_NICSTAR_USE_SUNI is not set +CONFIG_BAYCOM_EPP=m +# CONFIG_BDI_SWITCH is not set +CONFIG_BMAC=m +CONFIG_BOOT_LOAD=0x00800000 +CONFIG_CPU_FREQ_PMAC=y +# CONFIG_DEBUG_HIGHMEM is not set +CONFIG_DMASOUND=m +CONFIG_DMASOUND_PMAC=m +# CONFIG_E200 is not set +# CONFIG_E500 is not set +CONFIG_FLATMEM=y +CONFIG_FLATMEM_MANUAL=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_GENERIC_NVRAM=y +CONFIG_GEN_RTC=m +CONFIG_GEN_RTC_X=y +CONFIG_HIGHMEM=y +CONFIG_HIGHMEM_START=0xfe000000 +# CONFIG_HUGETLBFS is not set +# CONFIG_HUGETLB_PAGE is not set +CONFIG_I2C_HYDRA=m +CONFIG_I2C_MPC=m +CONFIG_IBMLS=m +CONFIG_INPUT_ADBHID=y +# CONFIG_ISA is not set +CONFIG_KERNEL_START=0xc0000000 +CONFIG_LBD=y +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_MACE=m +# CONFIG_MACE_AAUI_PORT is not set +CONFIG_MAC_EMUMOUSEBTN=y +CONFIG_MAC_FLOPPY=m +CONFIG_MOL=m +CONFIG_NVRAM=y +CONFIG_PARIDE_BPCK6=m +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_IBMTR=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PMAC_APM_EMU=m +CONFIG_PMAC_MEDIABAY=y +CONFIG_PM_STD_PARTITION="" +CONFIG_PPC32=y +CONFIG_PPC601_SYNC_FIX=y +# CONFIG_PPC64 is not set +# CONFIG_PPC_52xx is not set +# CONFIG_PPC_82xx is not set +# CONFIG_PPC_83xx is not set +CONFIG_PPC_CHRP=y +CONFIG_PPC_INDIRECT_PCI=y +CONFIG_PPC_MPC106=y +# CONFIG_PPC_PREP is not set +CONFIG_PPC_STD_MMU_32=y +CONFIG_PRISM2=y +CONFIG_PRISM2_CS=m +CONFIG_PRISM2_PCI=m +CONFIG_PRISM2_PLX=m +CONFIG_PRISM2_USB=m +CONFIG_RIO=m +CONFIG_RIO_OLDPCI=y +# CONFIG_RTAS_ERROR_LOGGING is not set +CONFIG_SCSI_DPT_I2O=m +# CONFIG_SCSI_MAC53C94 is not set +CONFIG_SCSI_MESH=m +CONFIG_SCSI_MESH_RESET_DELAY_MS=4000 +CONFIG_SCSI_MESH_SYNC_RATE=5 +CONFIG_SCSI_NSP32=m +CONFIG_SENSORS_M41T00=m +# CONFIG_SMP is not set +CONFIG_SOFTWARE_SUSPEND=y +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_TASK_SIZE=0x80000000 +CONFIG_TAU=y +# CONFIG_TAU_AVERAGE is not set +# CONFIG_TAU_INT is not set +CONFIG_THERM_ADT746X=m +CONFIG_THERM_WINDTUNNEL=m +CONFIG_TLAN=m +CONFIG_TOSHIBA_FIR=m +CONFIG_WLAN_NG=y --- linux-source-2.6.15-2.6.15.orig/debian/config/powerpc/config.powerpc-smp +++ linux-source-2.6.15-2.6.15/debian/config/powerpc/config.powerpc-smp @@ -0,0 +1,103 @@ +# +# Config options for config.powerpc-smp automatically generated by splitconf.pl +# +# CONFIG_40x is not set +# CONFIG_44x is not set +CONFIG_6xx=y +# CONFIG_8xx is not set +CONFIG_ADB=y +CONFIG_ADB_CUDA=y +CONFIG_ADB_MACIO=y +# CONFIG_ADVANCED_OPTIONS is not set +CONFIG_ANSLCD=m +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_NICSTAR=m +# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set +# CONFIG_ATM_NICSTAR_USE_SUNI is not set +CONFIG_BAYCOM_EPP=m +# CONFIG_BDI_SWITCH is not set +CONFIG_BMAC=m +CONFIG_BOOT_LOAD=0x00800000 +CONFIG_CPUSETS=y +CONFIG_CPU_FREQ_PMAC=y +# CONFIG_DEBUG_HIGHMEM is not set +CONFIG_DMASOUND=m +CONFIG_DMASOUND_PMAC=m +# CONFIG_E200 is not set +# CONFIG_E500 is not set +CONFIG_FLATMEM=y +CONFIG_FLATMEM_MANUAL=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_GENERIC_NVRAM=y +CONFIG_GENERIC_TBSYNC=y +CONFIG_GEN_RTC=m +CONFIG_GEN_RTC_X=y +CONFIG_HIGHMEM=y +CONFIG_HIGHMEM_START=0xfe000000 +# CONFIG_HOTPLUG_CPU is not set +# CONFIG_HUGETLBFS is not set +# CONFIG_HUGETLB_PAGE is not set +CONFIG_I2C_HYDRA=m +CONFIG_I2C_MPC=m +CONFIG_IBMLS=m +CONFIG_INPUT_ADBHID=y +CONFIG_IRQ_ALL_CPUS=y +# CONFIG_ISA is not set +CONFIG_KERNEL_START=0xc0000000 +CONFIG_LBD=y +CONFIG_LOCK_KERNEL=y +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_MACE=m +# CONFIG_MACE_AAUI_PORT is not set +CONFIG_MAC_EMUMOUSEBTN=y +CONFIG_MAC_FLOPPY=m +CONFIG_MOL=m +CONFIG_NR_CPUS=4 +CONFIG_NVRAM=m +CONFIG_PARIDE_BPCK6=m +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_IBMTR=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PMAC_APM_EMU=m +CONFIG_PMAC_MEDIABAY=y +CONFIG_PPC32=y +CONFIG_PPC601_SYNC_FIX=y +# CONFIG_PPC64 is not set +# CONFIG_PPC_52xx is not set +# CONFIG_PPC_82xx is not set +# CONFIG_PPC_83xx is not set +CONFIG_PPC_CHRP=y +CONFIG_PPC_INDIRECT_PCI=y +CONFIG_PPC_MPC106=y +# CONFIG_PPC_PREP is not set +CONFIG_PPC_STD_MMU_32=y +CONFIG_PREEMPT_BKL=y +CONFIG_PRISM2=y +CONFIG_PRISM2_CS=m +CONFIG_PRISM2_PCI=m +CONFIG_PRISM2_PLX=m +CONFIG_PRISM2_USB=m +CONFIG_RIO=m +CONFIG_RIO_OLDPCI=y +# CONFIG_RTAS_ERROR_LOGGING is not set +CONFIG_SCSI_DPT_I2O=m +# CONFIG_SCSI_MAC53C94 is not set +CONFIG_SCSI_MESH=m +CONFIG_SCSI_MESH_RESET_DELAY_MS=4000 +CONFIG_SCSI_MESH_SYNC_RATE=5 +CONFIG_SCSI_NSP32=m +CONFIG_SENSORS_M41T00=m +CONFIG_SMP=y +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_STOP_MACHINE=y +CONFIG_TASK_SIZE=0x80000000 +CONFIG_TAU=y +# CONFIG_TAU_AVERAGE is not set +# CONFIG_TAU_INT is not set +CONFIG_THERM_ADT746X=m +CONFIG_THERM_WINDTUNNEL=m +CONFIG_TLAN=m +CONFIG_TOSHIBA_FIR=m +CONFIG_WLAN_NG=y --- linux-source-2.6.15-2.6.15.orig/debian/config/powerpc/config.powerpc64-smp +++ linux-source-2.6.15-2.6.15/debian/config/powerpc/config.powerpc64-smp @@ -0,0 +1,80 @@ +# +# Config options for config.powerpc64-smp automatically generated by splitconf.pl +# +CONFIG_64BIT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_COMPAT=y +CONFIG_CPUSETS=y +CONFIG_CPU_FREQ_PMAC64=y +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +CONFIG_EARLY_PRINTK=y +CONFIG_EEH=y +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_FORCE_MAX_ZONEORDER=13 +CONFIG_GENERIC_TBSYNC=y +CONFIG_GEN_RTC=y +# CONFIG_GEN_RTC_X is not set +CONFIG_HANGCHECK_TIMER=m +CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y +CONFIG_HAVE_MEMORY_PRESENT=y +# CONFIG_HMT is not set +# CONFIG_HOTPLUG_CPU is not set +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_HVCS=m +# CONFIG_HVC_CONSOLE is not set +CONFIG_I2C_PMAC_SMU=m +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_IBMVETH=m +CONFIG_IBMVIO=y +# CONFIG_IOMMU_VMERGE is not set +# CONFIG_IRQSTACKS is not set +CONFIG_IRQ_ALL_CPUS=y +CONFIG_KERNEL_START=0xc000000000000000 +CONFIG_KEYS_COMPAT=y +# CONFIG_KPROBES is not set +CONFIG_LOCK_KERNEL=y +CONFIG_LPARCFG=m +# CONFIG_MEMORY_HOTPLUG is not set +CONFIG_MPIC_BROKEN_U3=y +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_NR_CPUS=4 +CONFIG_NUMA=y +CONFIG_PMAC_SMU=y +CONFIG_POWER3=y +CONFIG_POWER4=y +# CONFIG_POWER4_ONLY is not set +CONFIG_PPC64=y +# CONFIG_PPC_64K_PAGES is not set +# CONFIG_PPC_CELL is not set +# CONFIG_PPC_INDIRECT_PCI is not set +# CONFIG_PPC_MAPLE is not set +# CONFIG_PPC_MPC106 is not set +CONFIG_PPC_PMAC64=y +CONFIG_PPC_PSERIES=y +CONFIG_PPC_SPLPAR=y +CONFIG_PREEMPT_BKL=y +# CONFIG_PRISM2 is not set +# CONFIG_RIO is not set +CONFIG_RTAS_ERROR_LOGGING=y +CONFIG_RTAS_FLASH=m +# CONFIG_RTC is not set +CONFIG_SCANLOG=m +CONFIG_SCHED_SMT=y +CONFIG_SCSI_IBMVSCSI=m +CONFIG_SERIAL_ICOM=m +CONFIG_SMP=y +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_STOP_MACHINE=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_THERM_PM72=m +CONFIG_U3_DART=y +CONFIG_WINDFARM_PM81=m +CONFIG_WINDFARM_PM91=m +# CONFIG_WLAN_NG is not set +CONFIG_XICS=y --- linux-source-2.6.15-2.6.15.orig/debian/config/sparc/config +++ linux-source-2.6.15-2.6.15/debian/config/sparc/config @@ -0,0 +1,1444 @@ +# +# Common config options automatically generated by splitconf.pl +# +CONFIG_64BIT=y +CONFIG_8139CP=m +CONFIG_8139TOO=m +CONFIG_8139TOO_8129=y +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_9P_FS=m +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +# CONFIG_ACORN_PARTITION is not set +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_ADAPTEC_STARFIRE_NAPI=y +# CONFIG_ADFS_FS is not set +CONFIG_ADM8211=m +CONFIG_AFFS_FS=m +CONFIG_AFS_FS=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +# CONFIG_AIC79XX_ENABLE_RD_STRM is not set +# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_AIC94XX_DEBUG is not set +# CONFIG_AMD8111_ETH is not set +# CONFIG_AMIGA_PARTITION is not set +CONFIG_APPLICOM=m +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +# CONFIG_ARCNET is not set +CONFIG_ARPD=y +# CONFIG_ASFS_FS is not set +CONFIG_ATALK=m +# CONFIG_ATARI_PARTITION is not set +CONFIG_ATA_OVER_ETH=m +# CONFIG_ATM is not set +CONFIG_ATMEL=m +CONFIG_AUDIT=y +# CONFIG_AUDITSYSCALL is not set +CONFIG_AUTOFS4_FS=m +CONFIG_AUTOFS_FS=m +CONFIG_B44=m +CONFIG_BACKLIGHT_CLASS_DEVICE=m +CONFIG_BACKLIGHT_DEVICE=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BASE_FULL=y +CONFIG_BASE_SMALL=0 +CONFIG_BBC_I2C=m +CONFIG_BCM43XX=m +# CONFIG_BCM43XX_DEBUG is not set +CONFIG_BCM43XX_DMA=y +CONFIG_BCM43XX_DMA_AND_PIO_MODE=y +# CONFIG_BCM43XX_DMA_MODE is not set +CONFIG_BCM43XX_PIO=y +# CONFIG_BCM43XX_PIO_MODE is not set +# CONFIG_BEFS_DEBUG is not set +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +# CONFIG_BINFMT_AOUT32 is not set +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_ELF32=y +CONFIG_BINFMT_MISC=m +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_CPQ_DA is not set +CONFIG_BLK_DEV_3W_XXXX_RAID=m +# CONFIG_BLK_DEV_AEC62XX is not set +CONFIG_BLK_DEV_ALI15X3=m +# CONFIG_BLK_DEV_AMD74XX is not set +CONFIG_BLK_DEV_CLOOP=m +CONFIG_BLK_DEV_CMD64X=m +# CONFIG_BLK_DEV_COW_COMMON is not set +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +CONFIG_BLK_DEV_CS5520=m +CONFIG_BLK_DEV_CS5530=m +CONFIG_BLK_DEV_CY82C693=m +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_DM=m +CONFIG_BLK_DEV_DM_BBR=m +CONFIG_BLK_DEV_FD=y +CONFIG_BLK_DEV_GENERIC=m +CONFIG_BLK_DEV_GNBD=m +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_BLK_DEV_HPT366 is not set +CONFIG_BLK_DEV_IDE=y +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDEDISK=m +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_IDEFLOPPY=m +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_BLK_DEV_IDESCSI is not set +CONFIG_BLK_DEV_IDETAPE=m +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_DEV_IT821X=m +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_MD=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_NS87415=m +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_OPTI621 is not set +CONFIG_BLK_DEV_PDC202XX_NEW=m +CONFIG_BLK_DEV_PDC202XX_OLD=m +# CONFIG_BLK_DEV_PIIX is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +# CONFIG_BLK_DEV_SC1200 is not set +CONFIG_BLK_DEV_SD=m +CONFIG_BLK_DEV_SIIMAGE=m +# CONFIG_BLK_DEV_SLC90E66 is not set +CONFIG_BLK_DEV_SR=m +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_BLK_DEV_SVWKS=m +CONFIG_BLK_DEV_SX8=m +# CONFIG_BLK_DEV_TRIFLEX is not set +CONFIG_BLK_DEV_TRM290=m +# CONFIG_BLK_DEV_UB is not set +# CONFIG_BLK_DEV_UMEM is not set +CONFIG_BLK_DEV_VIA82CXXX=m +CONFIG_BNX2=m +CONFIG_BONDING=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_ULOG=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_NETFILTER=y +CONFIG_BRIDGE_NF_EBTABLES=m +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_BT is not set +CONFIG_BUG=y +CONFIG_CASSINI=m +CONFIG_CC_ALIGN_FUNCTIONS=0 +CONFIG_CC_ALIGN_JUMPS=0 +CONFIG_CC_ALIGN_LABELS=0 +CONFIG_CC_ALIGN_LOOPS=0 +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +CONFIG_CHELSIO_T1=m +CONFIG_CHR_DEV_OSST=m +# CONFIG_CHR_DEV_SCH is not set +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_ST=m +CONFIG_CICADA_PHY=m +CONFIG_CIFS=m +# CONFIG_CIFS_EXPERIMENTAL is not set +# CONFIG_CIFS_STATS is not set +# CONFIG_CIFS_XATTR is not set +CONFIG_CLEAN_COMPILE=y +CONFIG_CLS_U32_MARK=y +# CONFIG_CLS_U32_PERF is not set +CONFIG_CLUSTER=m +CONFIG_CLUSTER_DLM=m +CONFIG_CLUSTER_DLM_PROCLOCKS=y +# CONFIG_CMDLINE_BOOL is not set +CONFIG_CODA_FS=m +# CONFIG_CODA_FS_OLD_API is not set +CONFIG_COMPAT=y +CONFIG_CONFIGFS_FS=m +CONFIG_CONNECTOR=m +# CONFIG_CPU_FREQ is not set +CONFIG_CRAMFS=y +CONFIG_CRC16=m +CONFIG_CRC32=y +CONFIG_CRC_CCITT=m +CONFIG_CRYPTO=y +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TEA=m +# CONFIG_CRYPTO_TEST is not set +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_WP512=m +CONFIG_CYCLADES=m +# CONFIG_CYZ_INTR is not set +CONFIG_DAVICOM_PHY=m +CONFIG_DAZUKO=m +# CONFIG_DE2104X is not set +# CONFIG_DE4X5 is not set +CONFIG_DE600=m +CONFIG_DE620=m +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_KERNEL is not set +CONFIG_DECNET=m +CONFIG_DECNET_NF_GRABULATOR=m +CONFIG_DECNET_ROUTER=y +CONFIG_DECNET_ROUTE_FWMARK=y +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +# CONFIG_DEFAULT_NOOP is not set +# CONFIG_DEFXX is not set +# CONFIG_DEV_APPLETALK is not set +CONFIG_DGRS=m +CONFIG_DIGIEPCA=m +# CONFIG_DISCONTIGMEM_MANUAL is not set +CONFIG_DISPLAY7SEG=m +CONFIG_DL2K=m +# CONFIG_DM9102 is not set +CONFIG_DM_CRYPT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_EMC=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_ZERO=m +CONFIG_DNOTIFY=y +CONFIG_DRM=y +CONFIG_DRM_MGA=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_SAVAGE=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_VIA=m +CONFIG_DTLK=m +CONFIG_DUMMY=m +CONFIG_DUMMY_CONSOLE=y +# CONFIG_DVB is not set +# CONFIG_DXR3 is not set +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000_NAPI=y +CONFIG_ECC=m +# CONFIG_ECONET is not set +# CONFIG_EEPRO100 is not set +# CONFIG_EFI_PARTITION is not set +CONFIG_EFS_FS=m +# CONFIG_EMBEDDED is not set +CONFIG_ENVCTRL=m +CONFIG_EPIC100=m +CONFIG_EPOLL=y +CONFIG_EQUALIZER=m +CONFIG_EXPERIMENTAL=y +CONFIG_EXPORTFS=m +CONFIG_EXT2_FS=m +CONFIG_EXT2_FS_POSIX_ACL=y +# CONFIG_EXT2_FS_SECURITY is not set +CONFIG_EXT2_FS_XATTR=y +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=m +CONFIG_EXT3_FS_POSIX_ACL=y +# CONFIG_EXT3_FS_SECURITY is not set +CONFIG_EXT3_FS_XATTR=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_FAT_FS=m +CONFIG_FB=y +# CONFIG_FB_3DFX is not set +# CONFIG_FB_ASILIANT is not set +CONFIG_FB_ATY=y +CONFIG_FB_ATY128=y +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GENERIC_LCD=y +CONFIG_FB_ATY_GX=y +# CONFIG_FB_ATY_XL_INIT is not set +# CONFIG_FB_BW2 is not set +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CG14 is not set +# CONFIG_FB_CG3 is not set +CONFIG_FB_CG6=y +# CONFIG_FB_CIRRUS is not set +CONFIG_FB_CYBLA=m +CONFIG_FB_FFB=y +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_LEO is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_MATROX is not set +CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_NEOMAGIC is not set +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_I2C=y +# CONFIG_FB_P9100 is not set +# CONFIG_FB_PCI is not set +CONFIG_FB_PM2=y +# CONFIG_FB_PM2_FIFO_DISCONNECT is not set +CONFIG_FB_RADEON=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_RADEON_I2C=y +# CONFIG_FB_RADEON_OLD is not set +# CONFIG_FB_RIVA is not set +CONFIG_FB_S1D13XXX=m +CONFIG_FB_SAVAGE=m +CONFIG_FB_SAVAGE_ACCEL=y +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SBUS=y +# CONFIG_FB_SIS is not set +# CONFIG_FB_TCX is not set +CONFIG_FB_TILEBLITTING=y +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_VOODOO1 is not set +CONFIG_FC4=m +CONFIG_FC4_SOC=m +CONFIG_FC4_SOCAL=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +# CONFIG_FLATMEM_MANUAL is not set +# CONFIG_FONTS is not set +# CONFIG_FONT_SUN12x22 is not set +CONFIG_FONT_SUN8x16=y +# CONFIG_FORCEDETH is not set +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_FS_MBCACHE=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FUSE_FS=m +CONFIG_FUSION=y +CONFIG_FUSION_CTL=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_LAN=m +CONFIG_FUSION_MAX_SGE=40 +CONFIG_FUSION_SAS=m +CONFIG_FUSION_SPI=m +CONFIG_FUTEX=y +CONFIG_FW_LOADER=y +# CONFIG_GAMEPORT is not set +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GFS_FS=m +CONFIG_GFS_FS_LOCK_DLM=m +CONFIG_GFS_FS_LOCK_GULM=m +CONFIG_GFS_FS_LOCK_HARNESS=m +CONFIG_GFS_FS_LOCK_NOLOCK=m +# CONFIG_HAMACHI is not set +# CONFIG_HAMRADIO is not set +CONFIG_HAPPYMEAL=y +CONFIG_HAVE_MEMORY_PRESENT=y +CONFIG_HERMES=m +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +# CONFIG_HID_FF is not set +# CONFIG_HIPPI is not set +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_PLX=m +CONFIG_HOTPLUG=y +# CONFIG_HP100 is not set +CONFIG_HPFS_FS=m +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_HUGETLB_PAGE_SIZE_4MB=y +# CONFIG_HUGETLB_PAGE_SIZE_512K is not set +# CONFIG_HUGETLB_PAGE_SIZE_64K is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_HWMON_VID=m +CONFIG_HW_CONSOLE=y +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +CONFIG_I2C=y +CONFIG_I2C_ALGOBIT=y +CONFIG_I2C_ALGOPCA=m +CONFIG_I2C_ALGOPCF=m +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +CONFIG_I2C_CHARDEV=m +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_I810 is not set +CONFIG_I2C_ISA=m +# CONFIG_I2C_NFORCE2 is not set +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PCA_ISA=m +CONFIG_I2C_PIIX4=m +# CONFIG_I2C_PROSAVAGE is not set +# CONFIG_I2C_SAVAGE4 is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +CONFIG_I2C_STUB=m +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set +# CONFIG_I2C_VOODOO3 is not set +CONFIG_I2O=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_BUS=m +# CONFIG_I2O_CONFIG is not set +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_I2O_PROC=m +CONFIG_I2O_SCSI=m +CONFIG_IDE=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set +CONFIG_IDEDMA_ONLYDISK=y +CONFIG_IDEDMA_PCI_AUTO=y +# CONFIG_IDEPCI_SHARE_IRQ is not set +# CONFIG_IDE_ARM is not set +CONFIG_IDE_GENERIC=m +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IEEE1394=m +# CONFIG_IEEE1394_CMP is not set +CONFIG_IEEE1394_CONFIG_ROM_IP1394=y +CONFIG_IEEE1394_DV1394=m +CONFIG_IEEE1394_ETH1394=m +# CONFIG_IEEE1394_EXPORT_FULL_API is not set +CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y +CONFIG_IEEE1394_OHCI1394=m +CONFIG_IEEE1394_OUI_DB=y +CONFIG_IEEE1394_PCILYNX=m +CONFIG_IEEE1394_RAWIO=m +CONFIG_IEEE1394_SBP2=m +# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set +# CONFIG_IEEE1394_VERBOSEDEBUG is not set +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE80211=m +CONFIG_IEEE80211_1_1_13=m +CONFIG_IEEE80211_1_1_13_CRYPT_CCMP=m +CONFIG_IEEE80211_1_1_13_CRYPT_TKIP=m +CONFIG_IEEE80211_1_1_13_CRYPT_WEP=m +CONFIG_IEEE80211_CRYPT_CCMP=m +CONFIG_IEEE80211_CRYPT_TKIP=m +CONFIG_IEEE80211_CRYPT_WEP=m +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_SOFTMAC=m +# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set +# CONFIG_IKCONFIG is not set +CONFIG_INET=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET_AH=m +CONFIG_INET_DCCP_DIAG=m +CONFIG_INET_DIAG=y +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_TCP_DIAG=y +CONFIG_INET_TUNNEL=m +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_IPOIB=m +# CONFIG_INFINIBAND_IPOIB_DEBUG is not set +CONFIG_INFINIBAND_MTHCA=m +# CONFIG_INFINIBAND_MTHCA_DEBUG is not set +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INITRAMFS_SOURCE="" +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_INOTIFY=y +CONFIG_INPUT=y +# CONFIG_INPUT_EVBUG is not set +CONFIG_INPUT_EVDEV=m +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_JOYSTICK is not set +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_SPARCSPKR=y +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_TSDEV is not set +# CONFIG_INPUT_UINPUT is not set +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_NOOP=y +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_MATCH_AHESP=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_LENGTH=m +CONFIG_IP6_NF_MATCH_LIMIT=m +CONFIG_IP6_NF_MATCH_MAC=m +CONFIG_IP6_NF_MATCH_MARK=m +CONFIG_IP6_NF_MATCH_MULTIPORT=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_OWNER=m +CONFIG_IP6_NF_MATCH_PHYSDEV=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_TARGET_MARK=m +CONFIG_IP6_NF_TARGET_NFQUEUE=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_PANIC_EVENT is not set +# CONFIG_IPMI_POWEROFF is not set +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPV6=m +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPW2100=m +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2200=m +# CONFIG_IPW2200_DEBUG is not set +CONFIG_IPW2200_MONITOR=y +# CONFIG_IPW3945 is not set +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_DCCP=m +CONFIG_IP_DCCP_CCID3=m +CONFIG_IP_DCCP_TFRC_LIB=m +CONFIG_IP_FIB_HASH=y +# CONFIG_IP_MROUTE is not set +CONFIG_IP_MULTICAST=y +CONFIG_IP_NF_AMANDA=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_IP_NF_CONNTRACK=m +# CONFIG_IP_NF_CONNTRACK_EVENTS is not set +CONFIG_IP_NF_CONNTRACK_MARK=y +CONFIG_IP_NF_CONNTRACK_NETLINK=m +CONFIG_IP_NF_CT_ACCT=y +CONFIG_IP_NF_CT_PROTO_SCTP=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_COMMENT=m +CONFIG_IP_NF_MATCH_CONNBYTES=m +CONFIG_IP_NF_MATCH_CONNMARK=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_DCCP=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_HASHLIMIT=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_MAC=m +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_PHYSDEV=m +CONFIG_IP_NF_MATCH_PKTTYPE=m +CONFIG_IP_NF_MATCH_REALM=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_SCTP=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_STRING=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_AMANDA=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_NAT_PPTP=m +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_NETBIOS_NS=m +CONFIG_IP_NF_PPTP=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_TARGET_CLASSIFY=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_CONNMARK=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_NFQUEUE=m +CONFIG_IP_NF_TARGET_NOTRACK=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TFTP=m +CONFIG_IP_PNP=y +# CONFIG_IP_PNP_BOOTP is not set +# CONFIG_IP_PNP_DHCP is not set +CONFIG_IP_PNP_RARP=y +# CONFIG_IP_SCTP is not set +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_TAB_BITS=12 +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_WRR=m +# CONFIG_IRDA is not set +CONFIG_ISCSI_TCP=m +# CONFIG_ISDN is not set +# CONFIG_ISI is not set +CONFIG_ISO9660_FS=m +CONFIG_IXGB=m +CONFIG_IXGB_NAPI=y +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set +# CONFIG_JFS_FS is not set +CONFIG_JOLIET=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_LKKBD=m +# CONFIG_KEYBOARD_NEWTON is not set +CONFIG_KEYBOARD_SUNKBD=y +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYS is not set +CONFIG_KMOD=y +CONFIG_KOBJECT_UEVENT=y +# CONFIG_KPROBES is not set +# CONFIG_LAPB is not set +CONFIG_LARGE_ALLOCS=y +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_DEVICE=y +# CONFIG_LDM_PARTITION is not set +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_LIBCRC32C=m +CONFIG_LLC=m +CONFIG_LLC2=m +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +# CONFIG_LOGO is not set +# CONFIG_LP_CONSOLE is not set +CONFIG_LXT_PHY=m +# CONFIG_MAC_PARTITION is not set +CONFIG_MARVELL_PHY=m +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MD=y +CONFIG_MD_FAULTY=m +CONFIG_MD_LINEAR=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID5=m +CONFIG_MD_RAID6=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_SAS=m +# CONFIG_MEMORY_HOTPLUG is not set +CONFIG_MII=m +CONFIG_MINIX_FS=m +# CONFIG_MINIX_SUBPARTITION is not set +CONFIG_MMC=m +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_SDHCI=m +CONFIG_MMU=y +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_SERIAL=y +# CONFIG_MOUSE_VSXXXAA is not set +CONFIG_MOXA_SMARTIO=m +CONFIG_MSDOS_FS=m +CONFIG_MSDOS_PARTITION=y +# CONFIG_MTD is not set +CONFIG_MYRI_SBUS=m +CONFIG_NATSEMI=m +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +CONFIG_NCPFS_NFS_NS=y +# CONFIG_NCPFS_NLS is not set +CONFIG_NCPFS_OS2_NS=y +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_STRONG is not set +CONFIG_NCP_FS=m +CONFIG_NE2K_PCI=m +CONFIG_NET=y +CONFIG_NETCONSOLE=m +CONFIG_NETDEVICES=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETPOLL=y +# CONFIG_NETPOLL_RX is not set +# CONFIG_NETPOLL_TRAP is not set +CONFIG_NET_ACX=m +CONFIG_NET_ACX_PCI=y +CONFIG_NET_ACX_USB=y +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_ACT is not set +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_FW=m +# CONFIG_NET_CLS_IND is not set +CONFIG_NET_CLS_POLICE=y +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_U32=m +# CONFIG_NET_DIVERT is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_ETHERNET=y +CONFIG_NET_FC=y +CONFIG_NET_IPG=m +# CONFIG_NET_IPGRE is not set +CONFIG_NET_IPIP=m +CONFIG_NET_KEY=m +CONFIG_NET_MRV8K=m +CONFIG_NET_PCI=y +# CONFIG_NET_PKTGEN is not set +CONFIG_NET_POCKET=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_NET_RADIO=y +CONFIG_NET_RT2400=m +CONFIG_NET_RT2500=m +CONFIG_NET_RT2600=m +CONFIG_NET_RTL8187=m +CONFIG_NET_RTL818X=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +# CONFIG_NET_SCH_CLK_CPU is not set +# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set +CONFIG_NET_SCH_CLK_JIFFIES=y +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_TULIP=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_WIRELESS=y +CONFIG_NFSD=m +CONFIG_NFSD_TCP=y +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +CONFIG_NFSD_V4=y +CONFIG_NFS_COMMON=y +# CONFIG_NFS_DIRECTIO is not set +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +CONFIG_NFS_V4=y +CONFIG_NLS=y +CONFIG_NLS_ASCII=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m +CONFIG_NORTEL_HERMES=m +CONFIG_NS83820=m +# CONFIG_NTFS_FS is not set +CONFIG_N_HDLC=m +CONFIG_OBP_FLASH=m +CONFIG_OBSOLETE_MODPARM=y +# CONFIG_OBSOLETE_OSS_DRIVER is not set +# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set +CONFIG_OCFS2_FS=m +# CONFIG_OSF_PARTITION is not set +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +# CONFIG_PARIDE is not set +CONFIG_PARPORT=m +CONFIG_PARPORT_1284=y +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_NOT_PC=y +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_PC_FIFO=y +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARPORT_SUNBPP=m +CONFIG_PARTITION_ADVANCED=y +CONFIG_PCI=y +CONFIG_PCI_ATMEL=m +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_HERMES=m +# CONFIG_PCI_LEGACY_PROC is not set +CONFIG_PCNET32=m +# CONFIG_PDC202XX_BURST is not set +# CONFIG_PDC202XX_FORCE is not set +# CONFIG_PHONE is not set +CONFIG_PHYLIB=m +CONFIG_PLIP=m +CONFIG_PLX_HERMES=m +CONFIG_POSIX_MQUEUE=y +CONFIG_PPDEV=m +CONFIG_PPP=m +CONFIG_PPPOE=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_SYNC_TTY=m +# CONFIG_PREEMPT is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_PRINTER=m +CONFIG_PRINTK=y +CONFIG_PRINTK_TIME=y +CONFIG_PRISM2=y +CONFIG_PRISM2_CS=m +CONFIG_PRISM2_PCI=m +CONFIG_PRISM2_PLX=m +CONFIG_PRISM2_USB=m +CONFIG_PRISM54=m +CONFIG_PRISM54_SOFTMAC=m +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +# CONFIG_PROFILING is not set +CONFIG_PROM_CONSOLE=y +# CONFIG_QFMT_V1 is not set +CONFIG_QFMT_V2=m +# CONFIG_QNX4FS_FS is not set +CONFIG_QSEMI_PHY=m +CONFIG_QUOTA=y +CONFIG_QUOTACTL=y +CONFIG_R1000=m +CONFIG_R3964=m +# CONFIG_R8169 is not set +# CONFIG_RADIO_GEMTEK_PCI is not set +# CONFIG_RADIO_MAESTRO is not set +# CONFIG_RADIO_MAXIRADIO is not set +CONFIG_RAID_ATTRS=m +CONFIG_RAMFS=y +CONFIG_RAW_DRIVER=m +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_FS=m +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_REISERFS_FS_XATTR=y +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_RELAYFS_FS=m +CONFIG_ROCKETPORT=m +CONFIG_ROMFS_FS=m +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPCSEC_GSS_SPKM3=m +CONFIG_RTC=y +CONFIG_RTC_X1205_I2C=m +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_RXRPC=m +CONFIG_S2IO=m +CONFIG_S2IO_NAPI=y +CONFIG_SAS_CLASS=m +# CONFIG_SAS_DEBUG is not set +CONFIG_SBUS=y +CONFIG_SBUSCHAR=y +CONFIG_SCSI=m +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AIC79XX=m +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_ARCMSR=m +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_DC390T is not set +CONFIG_SCSI_DC395x=m +# CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_FCAL=m +CONFIG_SCSI_FC_ATTRS=m +# CONFIG_SCSI_FUTURE_DOMAIN is not set +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_INIA100 is not set +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPR=m +# CONFIG_SCSI_IPR_DUMP is not set +# CONFIG_SCSI_IPR_TRACE is not set +# CONFIG_SCSI_IPS is not set +CONFIG_SCSI_ISCSI_ATTRS=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +# CONFIG_SCSI_LOGGING is not set +CONFIG_SCSI_LPFC=m +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_PLUTO=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_PROC_FS=y +CONFIG_SCSI_QLA21XX=m +CONFIG_SCSI_QLA22XX=m +CONFIG_SCSI_QLA2300=m +CONFIG_SCSI_QLA2322=m +CONFIG_SCSI_QLA24XX=m +CONFIG_SCSI_QLA2XXX=m +CONFIG_SCSI_QLA6312=m +CONFIG_SCSI_QLOGICPTI=m +# CONFIG_SCSI_QLOGIC_1280 is not set +CONFIG_SCSI_QLOGIC_FC=m +CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y +CONFIG_SCSI_SAS_ATTRS=m +# CONFIG_SCSI_SATA is not set +CONFIG_SCSI_SPI2_ATTRS=m +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_SUNESP=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +# CONFIG_SCx200_ACB is not set +CONFIG_SECCOMP=y +CONFIG_SECURITY=y +CONFIG_SECURITY_CAPABILITIES=m +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_REALTIME=m +CONFIG_SECURITY_ROOTPLUG=m +CONFIG_SECURITY_SECLVL=m +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SELECT_MEMORY_MODEL=y +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +CONFIG_SENSORS_ADM1026=m +# CONFIG_SENSORS_ADM1031 is not set +CONFIG_SENSORS_ADM9240=m +# CONFIG_SENSORS_ASB100 is not set +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_DS1337=m +CONFIG_SENSORS_DS1374=m +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_EEPROM is not set +# CONFIG_SENSORS_FSCHER is not set +CONFIG_SENSORS_FSCPOS=m +# CONFIG_SENSORS_GL518SM is not set +CONFIG_SENSORS_GL520SM=m +# CONFIG_SENSORS_IT87 is not set +CONFIG_SENSORS_LM63=m +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +CONFIG_SENSORS_LM87=m +# CONFIG_SENSORS_LM90 is not set +CONFIG_SENSORS_LM92=m +# CONFIG_SENSORS_MAX1619 is not set +CONFIG_SENSORS_MAX6875=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PCA9539=m +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_RTC8564 is not set +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SMSC47M1=m +# CONFIG_SENSORS_VIA686A is not set +CONFIG_SENSORS_W83627EHF=m +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83781D is not set +CONFIG_SENSORS_W83792D=m +# CONFIG_SENSORS_W83L785TS is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_SUNCORE=y +CONFIG_SERIAL_SUNHV=y +CONFIG_SERIAL_SUNSAB=y +CONFIG_SERIAL_SUNSAB_CONSOLE=y +CONFIG_SERIAL_SUNSU=y +CONFIG_SERIAL_SUNSU_CONSOLE=y +CONFIG_SERIAL_SUNZILOG=y +CONFIG_SERIAL_SUNZILOG_CONSOLE=y +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_PARKBD is not set +CONFIG_SERIO_PCIPS2=y +CONFIG_SERIO_RAW=m +# CONFIG_SERIO_SERPORT is not set +# CONFIG_SGI_PARTITION is not set +CONFIG_SHAPER=m +CONFIG_SHMEM=y +CONFIG_SIS190=m +CONFIG_SIS900=m +CONFIG_SK98LIN=m +CONFIG_SKFP=m +CONFIG_SKGE=m +CONFIG_SKY2=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +# CONFIG_SLIP_MODE_SLIP6 is not set +CONFIG_SLIP_SMART=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +CONFIG_SND=m +CONFIG_SND_AC97_BUS=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_AD1889=m +CONFIG_SND_ALI5451=m +# CONFIG_SND_ATIIXP is not set +CONFIG_SND_ATIIXP_MODEM=m +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AZT3328 is not set +# CONFIG_SND_BT87X is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_DEBUG is not set +# CONFIG_SND_DUMMY is not set +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +# CONFIG_SND_ES1938 is not set +# CONFIG_SND_ES1968 is not set +# CONFIG_SND_FM801 is not set +CONFIG_SND_GENERIC_DRIVER=y +CONFIG_SND_HDA_INTEL=m +# CONFIG_SND_HDSP is not set +CONFIG_SND_HDSPM=m +CONFIG_SND_HWDEP=m +# CONFIG_SND_ICE1712 is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_KORG1212 is not set +CONFIG_SND_MAESTRO3=m +# CONFIG_SND_MIXART is not set +CONFIG_SND_MIXER_OSS=m +# CONFIG_SND_MPU401 is not set +CONFIG_SND_MPU401_UART=m +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_NM256 is not set +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_PCM=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_RAWMIDI=m +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_RTCTIMER is not set +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_SEQ_DUMMY=m +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_SONICVIBES is not set +CONFIG_SND_SUN_AMD7930=m +CONFIG_SND_SUN_CS4231=m +CONFIG_SND_SUN_DBRI=m +CONFIG_SND_TIMER=m +# CONFIG_SND_TRIDENT is not set +# CONFIG_SND_USB_AUDIO is not set +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_VIA82XX is not set +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRMIDI=m +# CONFIG_SND_VX222 is not set +# CONFIG_SND_YMFPCI is not set +CONFIG_SOLARIS_EMUL=m +# CONFIG_SOLARIS_X86_PARTITION is not set +CONFIG_SOUND=m +# CONFIG_SOUND_FUSION is not set +CONFIG_SOUND_ICH=m +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +CONFIG_SOUND_PRIME=m +CONFIG_SOUND_TRIDENT=m +CONFIG_SOUND_TVMIXER=m +CONFIG_SPARC=y +CONFIG_SPARC32_COMPAT=y +CONFIG_SPARC64=y +# CONFIG_SPARC64_PAGE_SIZE_4MB is not set +# CONFIG_SPARC64_PAGE_SIZE_512KB is not set +# CONFIG_SPARC64_PAGE_SIZE_64KB is not set +CONFIG_SPARC64_PAGE_SIZE_8KB=y +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_MANUAL=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPECIALIX=m +# CONFIG_SPECIALIX_RTSCTS is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_1_0_COMPATIBILITY is not set +CONFIG_SQUASHFS_2_0_COMPATIBILITY=y +CONFIG_STALDRV=y +CONFIG_STANDALONE=y +CONFIG_STRIP=m +CONFIG_SUNBMAC=m +CONFIG_SUNDANCE=m +CONFIG_SUNDANCE_MMIO=y +CONFIG_SUNGEM=y +CONFIG_SUNLANCE=m +CONFIG_SUNQE=m +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_SUN_AUXIO=y +# CONFIG_SUN_BPP is not set +CONFIG_SUN_IO=y +CONFIG_SUN_MOSTEK_RTC=y +CONFIG_SUN_OPENPROMFS=m +CONFIG_SUN_OPENPROMIO=y +CONFIG_SUN_PARTITION=y +CONFIG_SWAP=y +CONFIG_SX=m +CONFIG_SYNCLINKMP=m +CONFIG_SYN_COOKIES=y +CONFIG_SYSCTL=y +CONFIG_SYSFS=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_SYSV_FS=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_NSC=m +CONFIG_TCG_TPM=m +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_BIC=y +CONFIG_TELCLOCK=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TIGON3=m +CONFIG_TIME_INTERPOLATION=y +# CONFIG_TINY_SHMEM is not set +CONFIG_TIPAR=m +CONFIG_TMD_HERMES=m +CONFIG_TMPFS=y +# CONFIG_TR is not set +CONFIG_TULIP=m +# CONFIG_TULIP_MMIO is not set +# CONFIG_TULIP_MWI is not set +CONFIG_TULIP_NAPI=y +CONFIG_TULIP_NAPI_HW_MITIGATION=y +CONFIG_TUN=m +# CONFIG_TUNER_3036 is not set +CONFIG_TYPHOON=m +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +CONFIG_UID16=y +CONFIG_ULI526X=m +# CONFIG_ULTRIX_PARTITION is not set +CONFIG_UNION_FS=m +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=y +# CONFIG_UNIXWARE_DISKLABEL is not set +CONFIG_USB=y +CONFIG_USB_ACECAD=m +# CONFIG_USB_ACM is not set +# CONFIG_USB_AIPTEK is not set +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +# CONFIG_USB_APPLETOUCH is not set +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_ATI_REMOTE=m +CONFIG_USB_ATI_REMOTE2=m +CONFIG_USB_ATMEL=m +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_BANDWIDTH is not set +CONFIG_USB_BELKIN=y +CONFIG_USB_CATC=m +CONFIG_USB_CPADDEV=y +CONFIG_USB_CYTHERM=m +CONFIG_USB_DABUSB=m +# CONFIG_USB_DEBUG is not set +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_DSBR is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_EAGLE=m +# CONFIG_USB_EGALAX is not set +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_SPLIT_ISO=y +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_EPSON2888=y +# CONFIG_USB_GADGET is not set +CONFIG_USB_HID=y +# CONFIG_USB_HIDDEV is not set +CONFIG_USB_HIDINPUT=y +# CONFIG_USB_HIDINPUT_POWERBOOK is not set +# CONFIG_USB_IBMCAM is not set +CONFIG_USB_IDMOUSE=m +# CONFIG_USB_ISP116X_HCD is not set +CONFIG_USB_ITMTOUCH=m +CONFIG_USB_KAWETH=m +# CONFIG_USB_KBTAB is not set +# CONFIG_USB_KEYSPAN_REMOTE is not set +# CONFIG_USB_KONICAWC is not set +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=m +# CONFIG_USB_LEGOTOWER is not set +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_MON=y +# CONFIG_USB_MTOUCH is not set +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_ZAURUS=m +# CONFIG_USB_OHCI_BIG_ENDIAN is not set +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_OTG is not set +# CONFIG_USB_OV511 is not set +CONFIG_USB_PEGASUS=m +CONFIG_USB_PHIDGETKIT=m +# CONFIG_USB_PHIDGETSERVO is not set +CONFIG_USB_PODXTPRO=m +# CONFIG_USB_POWERMATE is not set +CONFIG_USB_PRINTER=m +CONFIG_USB_PWC=m +CONFIG_USB_QC=m +CONFIG_USB_RIO500=m +CONFIG_USB_RT2570=m +CONFIG_USB_RTL8150=m +# CONFIG_USB_SE401 is not set +# CONFIG_USB_SERIAL is not set +CONFIG_USB_SISUSBVGA=m +# CONFIG_USB_SISUSBVGA_CON is not set +CONFIG_USB_SL811_HCD=m +# CONFIG_USB_SN9C102 is not set +CONFIG_USB_SPCA5XX=m +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DPCM=y +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +CONFIG_USB_STORAGE_SDDR09=y +CONFIG_USB_STORAGE_SDDR55=y +CONFIG_USB_STORAGE_USBAT=y +# CONFIG_USB_STV680 is not set +CONFIG_USB_SYNAPTICS=m +# CONFIG_USB_TEST is not set +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_USBNET=m +# CONFIG_USB_USS720 is not set +# CONFIG_USB_VICAM is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_XPAD is not set +CONFIG_USB_YEALINK=m +CONFIG_USB_ZD1201=m +CONFIG_USB_ZD1211=m +CONFIG_VFAT_FS=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_VIA_VELOCITY=m +CONFIG_VIDEO_AUDIO_DECODER=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_BUF=m +# CONFIG_VIDEO_BWQCAM is not set +# CONFIG_VIDEO_CPIA is not set +# CONFIG_VIDEO_CQCAM is not set +# CONFIG_VIDEO_CX88 is not set +CONFIG_VIDEO_DECODER=m +CONFIG_VIDEO_DEV=m +# CONFIG_VIDEO_DPC is not set +CONFIG_VIDEO_EM28XX=m +# CONFIG_VIDEO_HEXIUM_GEMINI is not set +# CONFIG_VIDEO_HEXIUM_ORION is not set +CONFIG_VIDEO_IR=m +# CONFIG_VIDEO_MXB is not set +# CONFIG_VIDEO_OVCAMCHIP is not set +# CONFIG_VIDEO_SAA5246A is not set +# CONFIG_VIDEO_SAA5249 is not set +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_OSS=m +CONFIG_VIDEO_SELECT=y +# CONFIG_VIDEO_STRADIS is not set +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_TVEEPROM=m +# CONFIG_VIDEO_W9966 is not set +# CONFIG_VIDEO_ZORAN is not set +CONFIG_VLAN_8021Q=m +CONFIG_VORTEX=m +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +# CONFIG_VXFS_FS is not set +CONFIG_W1=m +CONFIG_W1_DS2433=m +# CONFIG_W1_DS2433_CRC is not set +CONFIG_W1_DS9490=m +CONFIG_W1_DS9490_BRIDGE=m +CONFIG_W1_MATROX=m +CONFIG_W1_SMEM=m +CONFIG_W1_THERM=m +# CONFIG_WAN is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_WATCHDOG is not set +# CONFIG_WDC_ALI15X3 is not set +CONFIG_WINBOND_840=m +CONFIG_WLAN_NG=y +# CONFIG_X25 is not set +CONFIG_XFRM=y +CONFIG_XFRM_USER=m +CONFIG_XFS_EXPORT=y +CONFIG_XFS_FS=m +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_QUOTA=y +# CONFIG_XFS_RT is not set +# CONFIG_XFS_SECURITY is not set +CONFIG_YELLOWFIN=m +# CONFIG_ZISOFS is not set +CONFIG_ZLIB_DEFLATE=m +CONFIG_ZLIB_INFLATE=y --- linux-source-2.6.15-2.6.15.orig/debian/config/sparc/config.sparc64 +++ linux-source-2.6.15-2.6.15/debian/config/sparc/config.sparc64 @@ -0,0 +1,12 @@ +# +# Config options for config.sparc64 automatically generated by splitconf.pl +# +CONFIG_BROKEN_ON_SMP=y +CONFIG_COMPUTONE=m +CONFIG_ISTALLION=m +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_MOXA_INTELLIO=m +# CONFIG_RIO is not set +CONFIG_RISCOM8=m +# CONFIG_SMP is not set +CONFIG_STALLION=m --- linux-source-2.6.15-2.6.15.orig/debian/config/sparc/config.sparc64-smp +++ linux-source-2.6.15-2.6.15/debian/config/sparc/config.sparc64-smp @@ -0,0 +1,10 @@ +# +# Config options for config.sparc64-smp automatically generated by splitconf.pl +# +CONFIG_CPUSETS=y +CONFIG_LOCK_KERNEL=y +CONFIG_LOG_BUF_SHIFT=15 +CONFIG_NR_CPUS=32 +CONFIG_SCHED_SMT=y +CONFIG_SMP=y +CONFIG_STOP_MACHINE=y --- linux-source-2.6.15-2.6.15.orig/debian/config/amd64/config.amd64-generic +++ linux-source-2.6.15-2.6.15/debian/config/amd64/config.amd64-generic @@ -0,0 +1,34 @@ +# +# Config options for config.amd64-generic automatically generated by splitconf.pl +# +CONFIG_ACPI_NUMA=y +CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y +CONFIG_ARCH_DISCONTIGMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +# CONFIG_CLUSTER is not set +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +CONFIG_DISCONTIGMEM=y +CONFIG_DISCONTIGMEM_MANUAL=y +CONFIG_ENABLE_ALT_SMP=y +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_GENERIC_CPU=y +# CONFIG_GFS_FS is not set +CONFIG_K8_NUMA=y +# CONFIG_MK8 is not set +# CONFIG_MPSC is not set +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_NR_CPUS=8 +CONFIG_NUMA=y +# CONFIG_NUMA_EMU is not set +# CONFIG_OCFS2_FS is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_BKL=y +# CONFIG_PREEMPT_NONE is not set +# CONFIG_SCHED_SMT is not set +CONFIG_X86_64_ACPI_NUMA=y +CONFIG_X86_HT=y +CONFIG_X86_L1_CACHE_BYTES=128 +CONFIG_X86_L1_CACHE_SHIFT=7 --- linux-source-2.6.15-2.6.15.orig/debian/config/amd64/config +++ linux-source-2.6.15-2.6.15/debian/config/amd64/config @@ -0,0 +1,2312 @@ +# +# Common config options automatically generated by splitconf.pl +# +CONFIG_3C359=m +CONFIG_60XX_WDT=m +CONFIG_64BIT=y +CONFIG_6PACK=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +CONFIG_8139TOO_8129=y +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_9P_FS=m +CONFIG_ABYSS=m +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_ACORN_PARTITION=y +# CONFIG_ACORN_PARTITION_ADFS is not set +# CONFIG_ACORN_PARTITION_CUMANA is not set +# CONFIG_ACORN_PARTITION_EESOX is not set +CONFIG_ACORN_PARTITION_ICS=y +# CONFIG_ACORN_PARTITION_POWERTEC is not set +CONFIG_ACORN_PARTITION_RISCIX=y +CONFIG_ACPI=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_ASUS=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BLACKLIST_YEAR=2000 +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_CONTAINER=m +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_DEV=m +CONFIG_ACPI_EC=y +CONFIG_ACPI_FAN=m +CONFIG_ACPI_HOTKEY=m +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_IBM=m +CONFIG_ACPI_INITRD=y +CONFIG_ACPI_PCC=m +CONFIG_ACPI_POWER=y +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_SBS=m +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_SLEEP_PROC_FS=y +CONFIG_ACPI_SLEEP_PROC_SLEEP=y +CONFIG_ACPI_SONY=m +CONFIG_ACPI_SYSTEM=y +CONFIG_ACPI_TC1100=m +CONFIG_ACPI_THERMAL=m +CONFIG_ACPI_TOSHIBA=m +CONFIG_ACPI_VIDEO=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ACT200L_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_ADAPTEC_STARFIRE=m +# CONFIG_ADAPTEC_STARFIRE_NAPI is not set +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_ADM8211=m +CONFIG_ADV717X=m +CONFIG_ADV717X_PIXELPORT16BIT=y +CONFIG_ADV717X_PIXELPORTPAL=y +CONFIG_ADV717X_SWAP=y +CONFIG_ADVANTECH_WDT=m +# CONFIG_AEDSP16_MPU401 is not set +# CONFIG_AEDSP16_MSS is not set +# CONFIG_AEDSP16_SBPRO is not set +CONFIG_AFFS_FS=m +CONFIG_AFS_FS=m +CONFIG_AGP=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_INTEL=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_DEBUG_ENABLE=y +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_ENABLE_RD_STRM=y +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 +CONFIG_AIC7XXX_DEBUG_ENABLE=y +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_AIRO=m +CONFIG_AIRO_CS=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_ALI_FIR=m +# CONFIG_AMD8111E_NAPI is not set +CONFIG_AMD8111_ETH=m +CONFIG_AMIGA_PARTITION=y +CONFIG_APPLICOM=m +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_ARCNET=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_CS=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_RIM_I=m +# CONFIG_ARPD is not set +CONFIG_ASFS_DEFAULT_CODEPAGE="" +CONFIG_ASFS_FS=m +# CONFIG_ASFS_RW is not set +CONFIG_ASK_IP_FIB_HASH=y +CONFIG_ATALK=m +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_OVER_ETH=m +CONFIG_ATM=y +CONFIG_ATMEL=m +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_ATM_CLIP=y +# CONFIG_ATM_CLIP_NO_ICMP is not set +# CONFIG_ATM_DUMMY is not set +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_FORE200E=m +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_FORE200E_MAYBE=m +CONFIG_ATM_FORE200E_PCA=y +CONFIG_ATM_FORE200E_PCA_DEFAULT_FW=y +CONFIG_ATM_FORE200E_TX_RETRY=16 +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_LANAI=m +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_TCP=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +CONFIG_ATP=m +CONFIG_AUDIT=y +# CONFIG_AUDITSYSCALL is not set +CONFIG_AUTOFS4_FS=m +CONFIG_AUTOFS_FS=m +CONFIG_AVERATEC_5100P=m +CONFIG_AX25=m +# CONFIG_AX25_DAMA_SLAVE is not set +CONFIG_B44=m +CONFIG_BACKLIGHT_CLASS_DEVICE=m +CONFIG_BACKLIGHT_DEVICE=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_BASE_FULL=y +CONFIG_BASE_SMALL=0 +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BCM43XX=m +# CONFIG_BCM43XX_DEBUG is not set +CONFIG_BCM43XX_DMA=y +CONFIG_BCM43XX_DMA_AND_PIO_MODE=y +# CONFIG_BCM43XX_DMA_MODE is not set +CONFIG_BCM43XX_PIO=y +# CONFIG_BCM43XX_PIO_MODE is not set +# CONFIG_BEFS_DEBUG is not set +CONFIG_BEFS_FS=m +CONFIG_BFS_FS=m +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_BLK_DEV_AEC62XX=m +CONFIG_BLK_DEV_ALI15X3=m +CONFIG_BLK_DEV_AMD74XX=m +CONFIG_BLK_DEV_ATIIXP=m +CONFIG_BLK_DEV_CLOOP=m +CONFIG_BLK_DEV_CMD640=y +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +CONFIG_BLK_DEV_CMD64X=m +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_CS5520=m +CONFIG_BLK_DEV_CS5530=m +CONFIG_BLK_DEV_CY82C693=m +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_DM=m +CONFIG_BLK_DEV_DM_BBR=m +CONFIG_BLK_DEV_FD=m +CONFIG_BLK_DEV_GENERIC=m +CONFIG_BLK_DEV_GNBD=m +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_HD_IDE is not set +CONFIG_BLK_DEV_HPT34X=m +CONFIG_BLK_DEV_HPT366=m +CONFIG_BLK_DEV_IDE=y +CONFIG_BLK_DEV_IDEACPI=y +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_IDEDISK=m +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +CONFIG_BLK_DEV_IDEFLOPPY=m +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_IDEPNP=m +CONFIG_BLK_DEV_IDESCSI=m +CONFIG_BLK_DEV_IDETAPE=m +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_DEV_IT821X=m +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_MD=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_NS87415=m +# CONFIG_BLK_DEV_OFFBOARD is not set +CONFIG_BLK_DEV_OPTI621=m +CONFIG_BLK_DEV_PDC202XX_NEW=m +CONFIG_BLK_DEV_PDC202XX_OLD=m +CONFIG_BLK_DEV_PIIX=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_BLK_DEV_RZ1000=m +CONFIG_BLK_DEV_SC1200=m +CONFIG_BLK_DEV_SD=m +CONFIG_BLK_DEV_SIIMAGE=m +CONFIG_BLK_DEV_SIS5513=m +CONFIG_BLK_DEV_SLC90E66=m +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BLK_DEV_SVWKS=m +CONFIG_BLK_DEV_SX8=m +CONFIG_BLK_DEV_TRIFLEX=m +CONFIG_BLK_DEV_TRM290=m +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_UMEM=m +CONFIG_BLK_DEV_VIA82CXXX=m +CONFIG_BNX2=m +CONFIG_BONDING=m +CONFIG_BPQETHER=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_ULOG=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_NETFILTER=y +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BROKEN=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_BSD_DISKLABEL=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_BT=m +CONFIG_BT865=m +CONFIG_BT_ALSA=m +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_CMTP=m +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUSB=m +CONFIG_BT_HCIUSB_SCO=y +CONFIG_BT_HCIVHCI=m +CONFIG_BT_HIDP=m +CONFIG_BT_L2CAP=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_SCO=m +CONFIG_BUG=y +CONFIG_CAPI_AVM=y +CONFIG_CAPI_EICON=y +CONFIG_CARDBUS=y +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +CONFIG_CASSINI=m +CONFIG_CC_ALIGN_FUNCTIONS=0 +CONFIG_CC_ALIGN_JUMPS=0 +CONFIG_CC_ALIGN_LABELS=0 +CONFIG_CC_ALIGN_LOOPS=0 +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +CONFIG_CHELSIO_T1=m +CONFIG_CHR_DEV_OSST=m +CONFIG_CHR_DEV_SCH=m +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_ST=m +CONFIG_CICADA_PHY=m +CONFIG_CIFS=m +# CONFIG_CIFS_EXPERIMENTAL is not set +# CONFIG_CIFS_STATS is not set +# CONFIG_CIFS_XATTR is not set +CONFIG_CISS_SCSI_TAPE=y +# CONFIG_CLEAN_COMPILE is not set +CONFIG_CLS_U32_MARK=y +# CONFIG_CLS_U32_PERF is not set +CONFIG_CODA_FS=m +# CONFIG_CODA_FS_OLD_API is not set +CONFIG_COMPAT=y +CONFIG_COMPUTONE=m +CONFIG_CONFIGFS_FS=m +CONFIG_CONNECTOR=m +CONFIG_CPU5_WDT=m +CONFIG_CPUSETS=y +CONFIG_CPU_FREQ=y +# CONFIG_CPU_FREQ_DEBUG is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=m +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_TABLE=m +CONFIG_CRAMFS=y +CONFIG_CRC16=m +CONFIG_CRC32=y +CONFIG_CRC_CCITT=m +CONFIG_CRYPTO=y +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_AES_X86_64=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_WP512=m +CONFIG_CYCLADES=m +CONFIG_CYCLADES_SYNC=m +CONFIG_CYCLOMX_X25=y +# CONFIG_CYZ_INTR is not set +CONFIG_DAVICOM_PHY=m +CONFIG_DAZUKO=m +CONFIG_DCDBAS=m +CONFIG_DE2104X=m +CONFIG_DE4X5=m +CONFIG_DE600=m +CONFIG_DE620=m +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_VM is not set +CONFIG_DECNET=m +CONFIG_DECNET_NF_GRABULATOR=m +# CONFIG_DECNET_ROUTER is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFXX=m +CONFIG_DELL_RBU=m +CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DEV_APPLETALK=y +CONFIG_DE_AOC=y +CONFIG_DGRS=m +CONFIG_DIGIEPCA=m +CONFIG_DL2K=m +CONFIG_DLCI=m +CONFIG_DLCI_COUNT=24 +CONFIG_DLCI_MAX=8 +CONFIG_DM9102=m +CONFIG_DM_CRYPT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_EMC=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_ZERO=m +CONFIG_DNOTIFY=y +CONFIG_DONGLE=y +# CONFIG_DONGLE_OLD is not set +CONFIG_DRM=m +CONFIG_DRM_I810=m +CONFIG_DRM_I830=m +CONFIG_DRM_I915=m +CONFIG_DRM_MGA=m +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_SAVAGE=m +CONFIG_DRM_SIS=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_VIA=m +CONFIG_DSCC4=m +CONFIG_DSCC4_PCISYNC=y +CONFIG_DSCC4_PCI_RST=y +CONFIG_DTLK=m +CONFIG_DUMMY=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_DVB=y +CONFIG_DVB_ATMEL_AT76C651=m +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_B2C2_FLEXCOP=m +# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_BT8XX=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_PATCH=m +CONFIG_DVB_CINERGYT2=m +CONFIG_DVB_CINERGYT2_ENABLE_RC_INPUT_DEVICE=y +CONFIG_DVB_CINERGYT2_QUERY_INTERVAL=250 +CONFIG_DVB_CINERGYT2_RC_QUERY_INTERVAL=100 +CONFIG_DVB_CINERGYT2_STREAM_BUF_SIZE=512 +CONFIG_DVB_CINERGYT2_STREAM_URB_COUNT=32 +CONFIG_DVB_CINERGYT2_TUNING=y +CONFIG_DVB_CORE=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CX24110=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_L64781=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_MT312=m +CONFIG_DVB_MT352=m +CONFIG_DVB_NXT2002=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_PLUTO2=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_STV0297=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA80XX=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_DVB_USB=m +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_CXUSB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_DIBUSB_MB=m +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_VES1820=m +CONFIG_DVB_VES1X93=m +CONFIG_DXR3=m +CONFIG_E100=m +CONFIG_E1000=m +# CONFIG_E1000_NAPI is not set +CONFIG_EARLY_PRINTK=y +CONFIG_ECC=m +CONFIG_ECONET=m +CONFIG_ECONET_AUNUDP=y +CONFIG_ECONET_NATIVE=y +# CONFIG_EDD is not set +CONFIG_EEPRO100=m +CONFIG_EFI_PARTITION=y +CONFIG_EFS_FS=m +CONFIG_EM8300=m +CONFIG_EM8300_DICOMCTRL=y +CONFIG_EM8300_DICOMFIX=y +CONFIG_EM8300_DICOMPAL=y +CONFIG_EM8300_LOOPBACK=y +CONFIG_EM8300_UCODETIMEOUT=y +# CONFIG_EMBEDDED is not set +CONFIG_EPIC100=m +CONFIG_EPOLL=y +CONFIG_EQUALIZER=m +CONFIG_ESI_DONGLE=m +CONFIG_EUROTECH_WDT=m +CONFIG_EXPERIMENTAL=y +CONFIG_EXPORTFS=m +CONFIG_EXT2_FS=m +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT2_FS_XATTR=y +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=m +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT3_FS_XATTR=y +CONFIG_FARSYNC=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_FAT_FS=m +CONFIG_FB=y +CONFIG_FB_3DFX=m +# CONFIG_FB_3DFX_ACCEL is not set +# CONFIG_FB_ARC is not set +# CONFIG_FB_ASILIANT is not set +CONFIG_FB_ATY=m +CONFIG_FB_ATY128=m +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GENERIC_LCD=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_XL_INIT=y +CONFIG_FB_CFB_COPYAREA=m +CONFIG_FB_CFB_FILLRECT=m +CONFIG_FB_CFB_IMAGEBLIT=m +CONFIG_FB_CIRRUS=m +CONFIG_FB_CYBER2000=m +CONFIG_FB_CYBLA=m +CONFIG_FB_GEODE=y +CONFIG_FB_GEODE_GX1=m +CONFIG_FB_HGA=m +# CONFIG_FB_HGA_ACCEL is not set +# CONFIG_FB_IMAC is not set +# CONFIG_FB_IMSTT is not set +CONFIG_FB_KYRO=m +# CONFIG_FB_MACMODES is not set +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MULTIHEAD=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_I2C=y +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +# CONFIG_FB_PM3 is not set +CONFIG_FB_RADEON=m +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_RADEON_I2C=y +# CONFIG_FB_RADEON_OLD is not set +CONFIG_FB_RIVA=m +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_I2C=y +CONFIG_FB_S1D13XXX=m +CONFIG_FB_SAVAGE=m +CONFIG_FB_SAVAGE_ACCEL=y +CONFIG_FB_SAVAGE_I2C=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_TRIDENT=m +# CONFIG_FB_TRIDENT_ACCEL is not set +CONFIG_FB_VESA=m +CONFIG_FB_VGA16=m +# CONFIG_FB_VIRTUAL is not set +CONFIG_FB_VOODOO1=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x16=y +CONFIG_FONT_8x8=y +CONFIG_FORCEDETH=m +CONFIG_FRAMEBUFFER_CONSOLE=m +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_FS_MBCACHE=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FTAPE=m +CONFIG_FTL=m +CONFIG_FT_ALPHA_CLOCK=0 +# CONFIG_FT_ALT_FDC is not set +CONFIG_FT_FDC_MAX_RATE=2000 +CONFIG_FT_FDC_THR=8 +# CONFIG_FT_FULL_DEBUG is not set +# CONFIG_FT_MACH2 is not set +CONFIG_FT_NORMAL_DEBUG=y +# CONFIG_FT_NO_TRACE is not set +# CONFIG_FT_NO_TRACE_AT_ALL is not set +CONFIG_FT_NR_BUFFERS=3 +# CONFIG_FT_PROBE_FC10 is not set +CONFIG_FT_PROC_FS=y +CONFIG_FT_STD_FDC=y +CONFIG_FUSE_FS=m +CONFIG_FUSION=y +CONFIG_FUSION_CTL=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_LAN=m +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_SAS=m +CONFIG_FUSION_SPI=m +CONFIG_FUTEX=y +CONFIG_FW_LOADER=y +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GART_IOMMU=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GFS_FS_LOCK_DLM=m +CONFIG_GFS_FS_LOCK_GULM=m +CONFIG_GFS_FS_LOCK_HARNESS=m +CONFIG_GFS_FS_LOCK_NOLOCK=m +CONFIG_GIRBIL_DONGLE=m +CONFIG_HAMACHI=m +CONFIG_HAMRADIO=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_HAPPYMEAL=m +CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y +CONFIG_HDLC=m +CONFIG_HDLC_CISCO=y +CONFIG_HDLC_FR=y +CONFIG_HDLC_PPP=y +CONFIG_HDLC_RAW=y +CONFIG_HDLC_RAW_ETH=y +CONFIG_HDLC_X25=y +CONFIG_HERMES=m +CONFIG_HFSPLUS_FS=m +CONFIG_HFS_FS=m +# CONFIG_HID_FF is not set +CONFIG_HIPPI=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_BKM_A4T=y +# CONFIG_HISAX_DEBUG is not set +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_ENTERNOW_PCI=y +CONFIG_HISAX_EURO=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_FRITZ_PCIPNP=m +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HDLC=y +CONFIG_HISAX_HFC4S8S=m +CONFIG_HISAX_HFCUSB=m +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_MAX_CARDS=8 +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_NICCY=y +# CONFIG_HISAX_NO_KEYPAD is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_SEDLBAUER_CS=m +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_TELES_CS=m +CONFIG_HISAX_W6692=y +CONFIG_HOSTAP=m +CONFIG_HOSTAP_CS=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_PLX=m +CONFIG_HOTPLUG=y +CONFIG_HOTPLUG_CPU=y +CONFIG_HOTPLUG_PCI=m +CONFIG_HOTPLUG_PCI_ACPI=m +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_FAKE=m +CONFIG_HOTPLUG_PCI_PCIE=m +# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +CONFIG_HOTPLUG_PCI_SHPC=m +# CONFIG_HOTPLUG_PCI_SHPC_POLL_EVENT_MODE is not set +CONFIG_HP100=m +CONFIG_HPET=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_HPET_MMAP=y +# CONFIG_HPET_RTC_IRQ is not set +CONFIG_HPET_TIMER=y +CONFIG_HPFS_FS=m +# CONFIG_HPT34X_AUTODMA is not set +# CONFIG_HUGETLBFS is not set +# CONFIG_HUGETLB_PAGE is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_HWMON_VID=m +CONFIG_HW_CONSOLE=y +CONFIG_HW_RANDOM=m +CONFIG_HYSDN=m +CONFIG_HYSDN_CAPI=y +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +CONFIG_I2C=m +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCA=m +CONFIG_I2C_ALGOPCF=m +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_CHARDEV=m +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +# CONFIG_I2C_DEBUG_CORE is not set +CONFIG_I2C_I801=m +CONFIG_I2C_I810=m +CONFIG_I2C_ISA=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PCA_ISA=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_PROSAVAGE=m +CONFIG_I2C_SAVAGE4=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_STUB=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_VOODOO3=m +CONFIG_I2O=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_BUS=m +CONFIG_I2O_CONFIG=m +CONFIG_I2O_CONFIG_OLD_IOCTL=y +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_I2O_PROC=m +CONFIG_I2O_SCSI=m +CONFIG_I6300ESB_WDT=m +CONFIG_I82092=m +CONFIG_I8XX_TCO=m +# CONFIG_IA32_AOUT is not set +CONFIG_IA32_EMULATION=y +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_IBMOL=m +CONFIG_IBM_ASM=m +CONFIG_IDE=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_IDEDMA_PCI_AUTO=y +CONFIG_IDEPCI_SHARE_IRQ=y +# CONFIG_IDE_ARM is not set +CONFIG_IDE_GENERIC=m +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IEEE1394=m +# CONFIG_IEEE1394_CMP is not set +CONFIG_IEEE1394_CONFIG_ROM_IP1394=y +CONFIG_IEEE1394_DV1394=m +CONFIG_IEEE1394_ETH1394=m +# CONFIG_IEEE1394_EXPORT_FULL_API is not set +CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y +CONFIG_IEEE1394_OHCI1394=m +CONFIG_IEEE1394_OUI_DB=y +CONFIG_IEEE1394_PCILYNX=m +CONFIG_IEEE1394_RAWIO=m +CONFIG_IEEE1394_SBP2=m +# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set +# CONFIG_IEEE1394_VERBOSEDEBUG is not set +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE80211=m +CONFIG_IEEE80211_1_1_13=m +CONFIG_IEEE80211_1_1_13_CRYPT_CCMP=m +CONFIG_IEEE80211_1_1_13_CRYPT_TKIP=m +CONFIG_IEEE80211_1_1_13_CRYPT_WEP=m +CONFIG_IEEE80211_CRYPT_CCMP=m +CONFIG_IEEE80211_CRYPT_TKIP=m +CONFIG_IEEE80211_CRYPT_WEP=m +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_SOFTMAC=m +# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set +# CONFIG_IKCONFIG is not set +CONFIG_INET=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET_AH=m +CONFIG_INET_DCCP_DIAG=m +CONFIG_INET_DIAG=y +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_TCP_DIAG=y +CONFIG_INET_TUNNEL=m +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_IPOIB=m +# CONFIG_INFINIBAND_IPOIB_DEBUG is not set +CONFIG_INFINIBAND_MTHCA=m +# CONFIG_INFINIBAND_MTHCA_DEBUG is not set +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFTL=m +CONFIG_INITRAMFS_SOURCE="" +# CONFIG_INIT_DEBUG is not set +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_INOTIFY=y +CONFIG_INPUT=y +# CONFIG_INPUT_ACERHK is not set +CONFIG_INPUT_EVBUG=m +CONFIG_INPUT_EVDEV=m +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_INPUT_TSDEV=m +CONFIG_INPUT_TSDEV_SCREEN_X=240 +CONFIG_INPUT_TSDEV_SCREEN_Y=320 +CONFIG_INPUT_UINPUT=m +# CONFIG_IOMMU_DEBUG is not set +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_NOOP=y +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_MATCH_AHESP=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_LENGTH=m +CONFIG_IP6_NF_MATCH_LIMIT=m +CONFIG_IP6_NF_MATCH_MAC=m +CONFIG_IP6_NF_MATCH_MARK=m +CONFIG_IP6_NF_MATCH_MULTIPORT=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_OWNER=m +CONFIG_IP6_NF_MATCH_PHYSDEV=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_TARGET_MARK=m +CONFIG_IP6_NF_TARGET_NFQUEUE=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IPDDP=m +CONFIG_IPDDP_DECAP=y +CONFIG_IPDDP_ENCAP=y +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_POWEROFF=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPPP_FILTER=y +CONFIG_IPV6=m +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPW2100=m +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2100_FS_AMILO_M7400=m +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2200=m +# CONFIG_IPW2200_DEBUG is not set +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW3945=m +# CONFIG_IPW3945_DEBUG is not set +CONFIG_IPW3945_MONITOR=y +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_DCCP=m +CONFIG_IP_DCCP_CCID3=m +# CONFIG_IP_DCCP_DEBUG is not set +CONFIG_IP_DCCP_TFRC_LIB=m +# CONFIG_IP_DCCP_UNLOAD_HACK is not set +CONFIG_IP_FIB_HASH=y +# CONFIG_IP_FIB_TRIE is not set +CONFIG_IP_MROUTE=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_NF_AMANDA=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_IP_NF_CONNTRACK=m +# CONFIG_IP_NF_CONNTRACK_EVENTS is not set +CONFIG_IP_NF_CONNTRACK_MARK=y +CONFIG_IP_NF_CONNTRACK_NETLINK=m +CONFIG_IP_NF_CT_ACCT=y +CONFIG_IP_NF_CT_PROTO_SCTP=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_COMMENT=m +CONFIG_IP_NF_MATCH_CONNBYTES=m +CONFIG_IP_NF_MATCH_CONNMARK=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_DCCP=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_HASHLIMIT=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_MAC=m +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_PHYSDEV=m +CONFIG_IP_NF_MATCH_PKTTYPE=m +CONFIG_IP_NF_MATCH_REALM=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_SCTP=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_STRING=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_AMANDA=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_NAT_PPTP=m +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_NETBIOS_NS=m +CONFIG_IP_NF_PPTP=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_TARGET_CLASSIFY=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_CONNMARK=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_NFQUEUE=m +CONFIG_IP_NF_TARGET_NOTRACK=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TFTP=m +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_IP_PNP is not set +CONFIG_IP_ROUTE_FWMARK=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_MULTIPATH_CACHED=y +CONFIG_IP_ROUTE_MULTIPATH_DRR=m +CONFIG_IP_ROUTE_MULTIPATH_RANDOM=m +CONFIG_IP_ROUTE_MULTIPATH_RR=m +CONFIG_IP_ROUTE_MULTIPATH_WRANDOM=m +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_SCTP=m +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_TAB_BITS=12 +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_WRR=m +CONFIG_IRCOMM=m +CONFIG_IRDA=m +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRPORT_SIR=m +CONFIG_IRTTY_SIR=m +CONFIG_ISA_DMA_API=y +CONFIG_ISCSI_TCP=m +CONFIG_ISDN=m +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIDRV=m +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_MAINT=m +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVERSION=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_C4=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_ISDN_DRV_HISAX=m +CONFIG_ISDN_DRV_LOOP=m +CONFIG_ISDN_I4L=m +CONFIG_ISDN_MPP=y +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_TTY_FAX=y +CONFIG_ISDN_X25=y +# CONFIG_ISI is not set +CONFIG_ISO9660_FS=m +CONFIG_ISTALLION=m +CONFIG_IXGB=m +# CONFIG_IXGB_NAPI is not set +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_SUMMARY is not set +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS_FS=m +CONFIG_JFFS_FS_VERBOSE=0 +CONFIG_JFFS_PROC_FS=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +CONFIG_JFS_STATISTICS=y +CONFIG_JOLIET=y +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +# CONFIG_KEXEC is not set +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_LKKBD=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYS=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +CONFIG_KMOD=y +CONFIG_KOBJECT_UEVENT=y +# CONFIG_KPROBES is not set +CONFIG_LANMEDIA=m +CONFIG_LAPB=m +CONFIG_LAPBETHER=m +CONFIG_LBD=y +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_DEVICE=y +# CONFIG_LDM_DEBUG is not set +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_LIBCRC32C=m +CONFIG_LITELINK_DONGLE=m +CONFIG_LLC=y +CONFIG_LLC2=m +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_LOCK_KERNEL=y +# CONFIG_LOGO is not set +CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_LP_CONSOLE is not set +CONFIG_LXT_PHY=m +CONFIG_MA600_DONGLE=m +CONFIG_MACHZ_WDT=m +CONFIG_MAC_PARTITION=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_MARVELL_PHY=m +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MCP2120_DONGLE=m +CONFIG_MD=y +CONFIG_MD_FAULTY=m +CONFIG_MD_LINEAR=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID5=m +CONFIG_MD_RAID6=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_SAS=m +CONFIG_MICROCODE=m +CONFIG_MII=m +CONFIG_MINIX_FS=m +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MISDN_AVM_FRITZ=y +CONFIG_MISDN_DRV=m +CONFIG_MISDN_DSP=y +# CONFIG_MISDN_HFCMULTI is not set +CONFIG_MISDN_HFCPCI=y +CONFIG_MISDN_HFCUSB=y +# CONFIG_MISDN_MEMDEBUG is not set +CONFIG_MISDN_SPEEDFAX=y +CONFIG_MISDN_W6692=y +CONFIG_MKISS=m +CONFIG_MMC=m +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_SDHCI=m +CONFIG_MMC_WBSD=m +CONFIG_MMU=y +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MOUSE_PS2=m +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +CONFIG_MSDOS_FS=m +CONFIG_MSDOS_PARTITION=y +CONFIG_MTD=m +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTD_ABSENT=m +CONFIG_MTD_AMD76XROM=m +CONFIG_MTD_BLKMTD=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_BLOCK2MTD=m +CONFIG_MTD_BLOCK_RO=m +CONFIG_MTD_CFI=m +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_AMDSTD_RETRY=0 +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_CHAR=m +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_CONCAT=m +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_DILNETPC=m +CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000 +CONFIG_MTD_DOC2000=m +CONFIG_MTD_DOC2001=m +CONFIG_MTD_DOC2001PLUS=m +CONFIG_MTD_DOCECC=m +CONFIG_MTD_DOCPROBE=m +CONFIG_MTD_DOCPROBE_ADDRESS=0 +# CONFIG_MTD_DOCPROBE_ADVANCED is not set +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_ICHXROM=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_L440GX=m +CONFIG_MTD_MAP_BANK_WIDTH_1=y +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +CONFIG_MTD_MAP_BANK_WIDTH_2=y +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +CONFIG_MTD_MTDRAM=m +CONFIG_MTD_NAND=m +CONFIG_MTD_NAND_DISKONCHIP=m +# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set +CONFIG_MTD_NAND_IDS=m +CONFIG_MTD_NAND_NANDSIM=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +CONFIG_MTD_NETSC520=m +CONFIG_MTD_NETtel=m +# CONFIG_MTD_OBSOLETE_CHIPS is not set +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_PCI=m +CONFIG_MTD_PCMCIA=m +# CONFIG_MTD_PCMCIA_ANONYMOUS is not set +CONFIG_MTD_PHRAM=m +CONFIG_MTD_PHYSMAP=m +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 +CONFIG_MTD_PHYSMAP_LEN=0x4000000 +CONFIG_MTD_PHYSMAP_START=0x8000000 +CONFIG_MTD_PLATRAM=m +CONFIG_MTD_PMC551=m +# CONFIG_MTD_PMC551_BUGFIX is not set +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_PNC2000=m +CONFIG_MTD_RAM=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +CONFIG_MTD_REDBOOT_PARTS=m +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +CONFIG_MTD_ROM=m +CONFIG_MTD_SBC_GXX=m +CONFIG_MTD_SC520CDP=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_TS5500=m +CONFIG_MTRR=y +CONFIG_MWAVE=m +CONFIG_NATSEMI=m +CONFIG_NCPFS_EXTRAS=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_PACKET_SIGNING=y +# CONFIG_NCPFS_SMALLDOS is not set +CONFIG_NCPFS_STRONG=y +CONFIG_NCP_FS=m +CONFIG_NDISWRAPPER=m +CONFIG_NE2K_PCI=m +CONFIG_NET=y +CONFIG_NETCONSOLE=m +CONFIG_NETDEVICES=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETPOLL=y +# CONFIG_NETPOLL_RX is not set +# CONFIG_NETPOLL_TRAP is not set +CONFIG_NETROM=m +CONFIG_NET_ACX=m +CONFIG_NET_ACX_PCI=y +CONFIG_NET_ACX_USB=y +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_ACT is not set +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_FW=m +# CONFIG_NET_CLS_IND is not set +CONFIG_NET_CLS_POLICE=y +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_U32=m +# CONFIG_NET_DIVERT is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_ETHERNET=y +CONFIG_NET_FC=y +CONFIG_NET_IPG=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_NET_IPIP=m +CONFIG_NET_KEY=m +CONFIG_NET_MRV8K=m +CONFIG_NET_PCI=y +CONFIG_NET_PCMCIA=y +CONFIG_NET_PKTGEN=m +CONFIG_NET_POCKET=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_NET_RADIO=y +CONFIG_NET_RT2400=m +CONFIG_NET_RT2500=m +CONFIG_NET_RT2600=m +CONFIG_NET_RTL8187=m +CONFIG_NET_RTL818X=m +CONFIG_NET_SB1000=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_CBQ=m +# CONFIG_NET_SCH_CLK_CPU is not set +# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set +CONFIG_NET_SCH_CLK_JIFFIES=y +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_TULIP=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_WIRELESS=y +CONFIG_NFSD=m +CONFIG_NFSD_TCP=y +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +CONFIG_NFSD_V4=y +CONFIG_NFS_COMMON=y +CONFIG_NFS_DIRECTIO=y +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +CONFIG_NFS_V4=y +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_NLS=y +CONFIG_NLS_ASCII=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_DEFAULT="cp437" +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m +CONFIG_NORTEL_HERMES=m +CONFIG_NS83820=m +CONFIG_NSC_FIR=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_FS=m +# CONFIG_NTFS_RW is not set +CONFIG_NVRAM=m +CONFIG_N_HDLC=m +CONFIG_OBSOLETE_MODPARM=y +# CONFIG_OBSOLETE_OSS_DRIVER is not set +# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_OPROFILE=m +CONFIG_OSF_PARTITION=y +CONFIG_PACKARDBELL_E5=m +CONFIG_PACKET=m +CONFIG_PACKET_MMAP=y +CONFIG_PARIDE=m +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_EPAT=m +# CONFIG_PARIDE_EPATC8 is not set +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_PARIDE_PARPORT=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PG=m +CONFIG_PARIDE_PT=m +CONFIG_PARPORT=m +CONFIG_PARPORT_1284=y +# CONFIG_PARPORT_GSC is not set +CONFIG_PARPORT_NOT_PC=y +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARPORT_SERIAL=m +CONFIG_PARTITION_ADVANCED=y +CONFIG_PC300=m +CONFIG_PC300_MLPPP=y +CONFIG_PCCARD=m +CONFIG_PCCARD_NONSTATIC=m +CONFIG_PCI=y +CONFIG_PCI200SYN=m +CONFIG_PCIEPORTBUS=y +CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_ATMEL=m +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_DIRECT=y +CONFIG_PCI_HERMES=m +# CONFIG_PCI_LEGACY_PROC is not set +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_MSI=y +CONFIG_PCMCIA=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_PCMCIA_AXNET=m +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_IOCTL=y +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_NETWAVE=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_PROBE_MEM=y +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_PCMCIA_WL3501=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCMCIA_XIRTULIP=m +CONFIG_PCNET32=m +CONFIG_PD6729=m +CONFIG_PDC202XX_BURST=y +CONFIG_PDC202XX_FORCE=y +CONFIG_PHONE=m +CONFIG_PHONE_IXJ=m +CONFIG_PHONE_IXJ_PCMCIA=m +CONFIG_PHYLIB=m +CONFIG_PHYSICAL_START=0x100000 +CONFIG_PLIP=m +CONFIG_PLX_HERMES=m +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_LEGACY=y +CONFIG_PM_STD_PARTITION="" +CONFIG_PNP=y +CONFIG_PNPACPI=y +# CONFIG_PNP_DEBUG is not set +CONFIG_POSIX_MQUEUE=y +CONFIG_PPDEV=m +CONFIG_PPP=m +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_SYNC_TTY=m +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_PRINTER=m +CONFIG_PRINTK=y +CONFIG_PRINTK_TIME=y +CONFIG_PRISM2=y +CONFIG_PRISM2_CS=m +CONFIG_PRISM2_PCI=m +CONFIG_PRISM2_PLX=m +CONFIG_PRISM2_USB=m +CONFIG_PRISM54=m +CONFIG_PRISM54_SOFTMAC=m +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROFILING=y +CONFIG_PSS_MIXER=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QNX4FS_FS=m +# CONFIG_QNX4FS_RW is not set +CONFIG_QSEMI_PHY=m +CONFIG_QUOTA=y +CONFIG_QUOTACTL=y +CONFIG_R1000=m +CONFIG_R3964=m +CONFIG_R8169=m +# CONFIG_R8169_NAPI is not set +CONFIG_R8169_VLAN=y +CONFIG_RADIO_GEMTEK_PCI=m +CONFIG_RADIO_MAESTRO=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RAID_ATTRS=m +CONFIG_RAMFS=y +CONFIG_RAW_DRIVER=m +# CONFIG_RCU_TORTURE_TEST is not set +CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_DEC16=y +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_FS=m +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_REISERFS_FS_XATTR=y +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_RELAYFS_FS=m +CONFIG_RFD_FTL=m +# CONFIG_RIO is not set +CONFIG_RISCOM8=m +CONFIG_ROADRUNNER=m +# CONFIG_ROADRUNNER_LARGE_RINGS is not set +CONFIG_ROCKETPORT=m +CONFIG_ROMFS_FS=m +CONFIG_ROSE=m +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPCSEC_GSS_SPKM3=m +CONFIG_RTC=y +CONFIG_RTC_X1205_I2C=m +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_RXRPC=m +CONFIG_S2IO=m +# CONFIG_S2IO_NAPI is not set +CONFIG_SAS_CLASS=m +# CONFIG_SAS_DEBUG is not set +CONFIG_SBC8360_WDT=m +CONFIG_SBNI=m +# CONFIG_SBNI_MULTILINE is not set +CONFIG_SC1200_WDT=m +CONFIG_SC520_WDT=m +CONFIG_SC6600=y +CONFIG_SC6600_CDROM=4 +CONFIG_SC6600_CDROMBASE=0x0 +CONFIG_SC6600_JOY=y +# CONFIG_SCHEDSTATS is not set +CONFIG_SCHED_MC=y +CONFIG_SCSI=m +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_AIC79XX=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_SCSI_AIC7XXX_OLD=m +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_ATA_PIIX=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_DC390T=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_EATA_PIO=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_INIA100 is not set +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPR=m +# CONFIG_SCSI_IPR_DUMP is not set +# CONFIG_SCSI_IPR_TRACE is not set +CONFIG_SCSI_IPS=m +CONFIG_SCSI_ISCSI_ATTRS=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_LPFC=m +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_OMIT_FLASHPOINT is not set +CONFIG_SCSI_PDC_ADMA=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_PROC_FS=y +CONFIG_SCSI_QLA21XX=m +CONFIG_SCSI_QLA22XX=m +CONFIG_SCSI_QLA2300=m +CONFIG_SCSI_QLA2322=m +CONFIG_SCSI_QLA24XX=m +CONFIG_SCSI_QLA2XXX=m +CONFIG_SCSI_QLA6312=m +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLOGIC_FC=m +CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SATA=m +CONFIG_SCSI_SATA_ACPI=y +CONFIG_SCSI_SATA_AHCI=m +CONFIG_SCSI_SATA_INTEL_COMBINED=y +CONFIG_SCSI_SATA_MV=m +CONFIG_SCSI_SATA_NV=m +CONFIG_SCSI_SATA_PROMISE=m +CONFIG_SCSI_SATA_QSTOR=m +CONFIG_SCSI_SATA_SIL=m +CONFIG_SCSI_SATA_SIL24=m +CONFIG_SCSI_SATA_SIS=m +CONFIG_SCSI_SATA_SVW=m +CONFIG_SCSI_SATA_SX4=m +CONFIG_SCSI_SATA_ULI=m +CONFIG_SCSI_SATA_VIA=m +CONFIG_SCSI_SATA_VITESSE=m +CONFIG_SCSI_SPI2_ATTRS=m +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +CONFIG_SCTP_HMAC_MD5=y +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +CONFIG_SCx200_ACB=m +CONFIG_SECCOMP=y +# CONFIG_SECCOMP_DISABLE_TSC is not set +CONFIG_SECURITY=y +CONFIG_SECURITY_CAPABILITIES=m +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_REALTIME=m +CONFIG_SECURITY_ROOTPLUG=m +CONFIG_SECURITY_SECLVL=m +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SEMAPHORE_SLEEPERS=y +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_DS1337=m +CONFIG_SENSORS_DS1374=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_EEPROM=m +CONFIG_SENSORS_FSCHER=m +CONFIG_SENSORS_FSCPOS=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX6875=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PCA9539=m +CONFIG_SENSORS_PCF8574=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_RTC8564=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_ACPI is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_NR_UARTS=48 +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIO=y +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_I8042=y +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_RAW=m +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SHAPER=m +CONFIG_SHMEM=y +CONFIG_SIGMATEL_FIR=m +CONFIG_SIS190=m +CONFIG_SIS900=m +CONFIG_SK98LIN=m +CONFIG_SKFP=m +CONFIG_SKGE=m +CONFIG_SKY2=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_SLIP_SMART=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +CONFIG_SMC_IRCC_FIR=m +CONFIG_SMP=y +CONFIG_SND=m +CONFIG_SND_AC97_BUS=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_AD1889=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ALS4000=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +# CONFIG_SND_DEBUG is not set +CONFIG_SND_DUMMY=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X=m +CONFIG_SND_GENERIC_DRIVER=y +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MIXART=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_MPU401=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_MTPAV=m +CONFIG_SND_NM256=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_PCM=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PDAUDIOCF=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_RTCTIMER=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TIMER=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_USX2Y=m +# CONFIG_SND_VERBOSE_PRINTK is not set +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_VX222=m +CONFIG_SND_VXPOCKET=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_YMFPCI=m +CONFIG_SOFTWARE_SUSPEND=y +CONFIG_SOFT_WATCHDOG=m +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SOUND_ACI_MIXER=m +# CONFIG_SOUND_AD1816 is not set +CONFIG_SOUND_AD1889=m +CONFIG_SOUND_ADLIB=m +CONFIG_SOUND_AEDSP16=m +# CONFIG_SOUND_DMAP is not set +CONFIG_SOUND_FUSION=m +CONFIG_SOUND_ICH=m +CONFIG_SOUND_KAHLUA=m +CONFIG_SOUND_MPU401=m +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +CONFIG_SOUND_MSS=m +CONFIG_SOUND_OPL3SA2=m +CONFIG_SOUND_OSS=m +CONFIG_SOUND_PAS=m +CONFIG_SOUND_PRIME=m +CONFIG_SOUND_PSS=m +CONFIG_SOUND_SB=m +# CONFIG_SOUND_TRACEINIT is not set +CONFIG_SOUND_TRIDENT=m +CONFIG_SOUND_TRIX=m +CONFIG_SOUND_TVMIXER=m +CONFIG_SOUND_UART6850=m +CONFIG_SOUND_VMIDI=m +# CONFIG_SPARSEMEM_MANUAL is not set +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPECIALIX=m +# CONFIG_SPECIALIX_RTSCTS is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_1_0_COMPATIBILITY is not set +CONFIG_SQUASHFS_2_0_COMPATIBILITY=y +CONFIG_STALDRV=y +CONFIG_STALLION=m +CONFIG_STANDALONE=y +CONFIG_STOP_MACHINE=y +CONFIG_STRIP=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_SUNGEM=m +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_SUN_PARTITION=y +CONFIG_SUSPEND_SMP=y +CONFIG_SWAP=y +CONFIG_SWIOTLB=y +CONFIG_SX=m +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_CS=m +CONFIG_SYNCLINK_SYNCPPP=m +CONFIG_SYN_COOKIES=y +CONFIG_SYSCTL=y +CONFIG_SYSFS=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_SYSV_FS=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +CONFIG_TCG_NSC=m +CONFIG_TCG_TPM=m +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_BIC=y +CONFIG_TEKRAM_DONGLE=m +CONFIG_TELCLOCK=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TIGON3=m +# CONFIG_TINY_SHMEM is not set +CONFIG_TIPAR=m +CONFIG_TMD_HERMES=m +CONFIG_TMPFS=y +CONFIG_TMS380TR=m +CONFIG_TMSPCI=m +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_MK712=m +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TR=y +CONFIG_TULIP=m +# CONFIG_TULIP_MMIO is not set +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_NAPI is not set +CONFIG_TUN=m +CONFIG_TUNER_3036=m +CONFIG_TYPHOON=m +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +CONFIG_UID16=y +CONFIG_ULI526X=m +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNION_FS=m +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=y +CONFIG_UNIXWARE_DISKLABEL=y +# CONFIG_UNORDERED_IO is not set +CONFIG_USB=m +CONFIG_USBPCWATCHDOG=m +CONFIG_USB_ACECAD=m +CONFIG_USB_ACM=m +CONFIG_USB_AIPTEK=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_APPLETOUCH=m +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_ATI_REMOTE=m +CONFIG_USB_ATI_REMOTE2=m +CONFIG_USB_ATM=m +CONFIG_USB_ATMEL=m +CONFIG_USB_AUERSWALD=m +# CONFIG_USB_BANDWIDTH is not set +CONFIG_USB_BELKIN=y +CONFIG_USB_CATC=m +CONFIG_USB_CPADDEV=y +CONFIG_USB_CXACRU=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_DABUSB=m +# CONFIG_USB_DEBUG is not set +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DSBR=m +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_EAGLE=m +CONFIG_USB_EGALAX=m +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_SPLIT_ISO=y +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_EPSON2888=y +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_EZUSB=y +CONFIG_USB_FILE_STORAGE=m +# CONFIG_USB_FILE_STORAGE_TEST is not set +CONFIG_USB_GADGET=m +CONFIG_USB_GADGETFS=m +# CONFIG_USB_GADGET_DEBUG_FILES is not set +CONFIG_USB_GADGET_DUALSPEED=y +# CONFIG_USB_GADGET_DUMMY_HCD is not set +# CONFIG_USB_GADGET_GOKU is not set +# CONFIG_USB_GADGET_LH7A40X is not set +CONFIG_USB_GADGET_NET2280=y +# CONFIG_USB_GADGET_OMAP is not set +# CONFIG_USB_GADGET_PXA2XX is not set +CONFIG_USB_GADGET_SELECTED=y +CONFIG_USB_G_SERIAL=m +CONFIG_USB_HID=m +CONFIG_USB_HIDDEV=y +CONFIG_USB_HIDINPUT=y +# CONFIG_USB_HIDINPUT_POWERBOOK is not set +CONFIG_USB_IBMCAM=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_IRDA=m +# CONFIG_USB_ISP116X_HCD is not set +CONFIG_USB_ITMTOUCH=m +CONFIG_USB_KAWETH=m +CONFIG_USB_KBD=m +CONFIG_USB_KBTAB=m +# CONFIG_USB_KEYSPAN_REMOTE is not set +CONFIG_USB_KONICAWC=m +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_MON=y +CONFIG_USB_MOUSE=m +CONFIG_USB_MTOUCH=m +CONFIG_USB_NET2280=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_ZAURUS=m +# CONFIG_USB_OHCI_BIG_ENDIAN is not set +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_OTG is not set +CONFIG_USB_OV511=m +CONFIG_USB_OV511_DECOMP=m +CONFIG_USB_OV518_DECOMP=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_PHIDGETKIT=m +CONFIG_USB_PHIDGETSERVO=m +CONFIG_USB_PODXTPRO=m +CONFIG_USB_POWERMATE=m +CONFIG_USB_PRINTER=m +CONFIG_USB_PWC=m +CONFIG_USB_QC=m +CONFIG_USB_RIO500=m +CONFIG_USB_RT2570=m +CONFIG_USB_RTL8150=m +CONFIG_USB_SE401=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_AIRPRIME=m +# CONFIG_USB_SERIAL_ANYDATA is not set +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CP2101=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_HP4X=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_KEYSPAN=m +# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SISUSBVGA=m +# CONFIG_USB_SISUSBVGA_CON is not set +CONFIG_USB_SL811_CS=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SN9C102=m +CONFIG_USB_SPCA5XX=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_STORAGE=m +CONFIG_USB_STORAGE_DATAFAB=y +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DPCM=y +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +CONFIG_USB_STORAGE_JUMPSHOT=y +CONFIG_USB_STORAGE_SDDR09=y +CONFIG_USB_STORAGE_SDDR55=y +CONFIG_USB_STORAGE_USBAT=y +CONFIG_USB_STV680=m +CONFIG_USB_SUSPEND=y +CONFIG_USB_SYNAPTICS=m +CONFIG_USB_TEST=m +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_USBNET=m +CONFIG_USB_USS720=m +CONFIG_USB_VICAM=m +CONFIG_USB_W9968CF=m +CONFIG_USB_WACOM=m +CONFIG_USB_XPAD=m +CONFIG_USB_XUSBATM=m +CONFIG_USB_YEALINK=m +CONFIG_USB_ZD1201=m +CONFIG_USB_ZD1211=m +CONFIG_USB_ZERO=m +# CONFIG_VENDOR_SANGOMA is not set +CONFIG_VFAT_FS=m +CONFIG_VGA_CONSOLE=y +CONFIG_VIA_FIR=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_VIA_VELOCITY=m +CONFIG_VIDEO_AUDIO_DECODER=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT848_DVB=y +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_BUF=m +CONFIG_VIDEO_BUF_DVB=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_PP=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_DVB_ALL_FRONTENDS=y +CONFIG_VIDEO_DECODER=m +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_DPC=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_IR=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_OVCAMCHIP=m +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_VIDEO_SAA6588=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_SAA7134_DVB_ALL_FRONTENDS=y +CONFIG_VIDEO_SAA7134_OSS=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_SELECT=y +CONFIG_VIDEO_STRADIS=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_VIDEOBUF=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_ZORAN=m +CONFIG_VIDEO_ZORAN_BUZ=m +CONFIG_VIDEO_ZORAN_DC10=m +CONFIG_VIDEO_ZORAN_DC30=m +CONFIG_VIDEO_ZORAN_LML33=m +CONFIG_VIDEO_ZORAN_LML33R10=m +# CONFIG_VIDEO_ZR36120 is not set +CONFIG_VLAN_8021Q=m +CONFIG_VLSI_FIR=m +CONFIG_VORTEX=m +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_VXFS_FS=m +CONFIG_W1=m +CONFIG_W1_DS2433=m +# CONFIG_W1_DS2433_CRC is not set +CONFIG_W1_DS9490=m +CONFIG_W1_DS9490_BRIDGE=m +CONFIG_W1_MATROX=m +CONFIG_W1_SMEM=m +CONFIG_W1_THERM=m +CONFIG_W83627HF_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_WAFER_WDT=m +CONFIG_WAN=y +CONFIG_WANXL=m +CONFIG_WAN_ROUTER=m +CONFIG_WAN_ROUTER_DRIVERS=y +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +# CONFIG_WDC_ALI15X3 is not set +CONFIG_WDTPCI=m +CONFIG_WDT_501_PCI=y +CONFIG_WINBOND_840=m +CONFIG_WINBOND_FIR=m +CONFIG_WLAN_NG=y +CONFIG_X25=m +CONFIG_X25_ASY=m +CONFIG_X86=y +CONFIG_X86_64=y +CONFIG_X86_64_NOLONG_MSG="This is not an amd64 machine. Please install the i386 distribution of Ubuntu." +CONFIG_X86_ACPI_CPUFREQ=m +# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set +CONFIG_X86_CMPXCHG=y +CONFIG_X86_CPUID=m +CONFIG_X86_GOOD_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_MCE=y +CONFIG_X86_MCE_AMD=y +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MSR=m +CONFIG_X86_PM_TIMER=y +CONFIG_X86_POWERNOW_K8=m +CONFIG_X86_POWERNOW_K8_ACPI=y +CONFIG_X86_SPEEDSTEP_CENTRINO=m +CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y +# CONFIG_X86_SPEEDSTEP_LIB is not set +CONFIG_X86_TSC=y +CONFIG_XFRM=y +CONFIG_XFRM_USER=m +CONFIG_XFS_EXPORT=y +CONFIG_XFS_FS=m +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_RT=y +CONFIG_XFS_SECURITY=y +CONFIG_YAM=m +CONFIG_YELLOWFIN=m +CONFIG_YENTA=m +CONFIG_ZFTAPE=m +CONFIG_ZFT_COMPRESSOR=m +CONFIG_ZFT_DFLT_BLK_SZ=10240 +CONFIG_ZISOFS=y +CONFIG_ZISOFS_FS=m +CONFIG_ZLIB_DEFLATE=m +CONFIG_ZLIB_INFLATE=y --- linux-source-2.6.15-2.6.15.orig/debian/config/amd64/config.amd64-xeon +++ linux-source-2.6.15-2.6.15/debian/config/amd64/config.amd64-xeon @@ -0,0 +1,27 @@ +# +# Config options for config.amd64-xeon automatically generated by splitconf.pl +# +CONFIG_ARCH_FLATMEM_ENABLE=y +# CONFIG_CLUSTER is not set +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +# CONFIG_DISCONTIGMEM_MANUAL is not set +CONFIG_ENABLE_ALT_SMP=y +CONFIG_FLATMEM=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_GENERIC_CPU is not set +# CONFIG_GFS_FS is not set +# CONFIG_MK8 is not set +CONFIG_MPSC=y +CONFIG_NR_CPUS=8 +# CONFIG_NUMA is not set +# CONFIG_OCFS2_FS is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_BKL=y +# CONFIG_PREEMPT_NONE is not set +# CONFIG_SCHED_SMT is not set +CONFIG_X86_HT=y +CONFIG_X86_L1_CACHE_BYTES=128 +CONFIG_X86_L1_CACHE_SHIFT=7 --- linux-source-2.6.15-2.6.15.orig/debian/config/amd64/config.amd64-server +++ linux-source-2.6.15-2.6.15/debian/config/amd64/config.amd64-server @@ -0,0 +1,35 @@ +# +# Config options for config.amd64-server automatically generated by splitconf.pl +# +CONFIG_ACPI_NUMA=y +CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y +CONFIG_ARCH_DISCONTIGMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_CLUSTER=m +CONFIG_CLUSTER_DLM=m +CONFIG_CLUSTER_DLM_PROCLOCKS=y +# CONFIG_DEFAULT_AS is not set +CONFIG_DEFAULT_DEADLINE=y +CONFIG_DEFAULT_IOSCHED="deadline" +CONFIG_DISCONTIGMEM=y +CONFIG_DISCONTIGMEM_MANUAL=y +# CONFIG_ENABLE_ALT_SMP is not set +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_GENERIC_CPU=y +CONFIG_GFS_FS=m +CONFIG_K8_NUMA=y +# CONFIG_MK8 is not set +# CONFIG_MPSC is not set +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_NR_CPUS=64 +CONFIG_NUMA=y +# CONFIG_NUMA_EMU is not set +CONFIG_OCFS2_FS=m +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_BKL is not set +CONFIG_PREEMPT_NONE=y +CONFIG_SCHED_SMT=y +CONFIG_X86_64_ACPI_NUMA=y +CONFIG_X86_HT=y +CONFIG_X86_L1_CACHE_BYTES=128 +CONFIG_X86_L1_CACHE_SHIFT=7 --- linux-source-2.6.15-2.6.15.orig/debian/config/amd64/config.amd64-k8 +++ linux-source-2.6.15-2.6.15/debian/config/amd64/config.amd64-k8 @@ -0,0 +1,33 @@ +# +# Config options for config.amd64-k8 automatically generated by splitconf.pl +# +CONFIG_ACPI_NUMA=y +CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y +CONFIG_ARCH_DISCONTIGMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +# CONFIG_CLUSTER is not set +# CONFIG_DEBUG_PREEMPT is not set +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +CONFIG_DISCONTIGMEM=y +CONFIG_DISCONTIGMEM_MANUAL=y +CONFIG_ENABLE_ALT_SMP=y +# CONFIG_FLATMEM_MANUAL is not set +# CONFIG_GENERIC_CPU is not set +# CONFIG_GFS_FS is not set +CONFIG_K8_NUMA=y +CONFIG_MK8=y +# CONFIG_MPSC is not set +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_NR_CPUS=8 +CONFIG_NUMA=y +# CONFIG_NUMA_EMU is not set +# CONFIG_OCFS2_FS is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_BKL=y +# CONFIG_PREEMPT_NONE is not set +# CONFIG_SCHED_SMT is not set +CONFIG_X86_64_ACPI_NUMA=y +CONFIG_X86_L1_CACHE_BYTES=64 +CONFIG_X86_L1_CACHE_SHIFT=6 --- linux-source-2.6.15-2.6.15.orig/debian/config/hppa/config +++ linux-source-2.6.15-2.6.15/debian/config/hppa/config @@ -0,0 +1,1261 @@ +# +# Common config options automatically generated by splitconf.pl +# +CONFIG_53C700_LE_ON_BE=y +CONFIG_8139CP=m +CONFIG_8139TOO=m +CONFIG_8139TOO_8129=y +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_9P_FS=m +CONFIG_AC3200=m +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_ADAPTEC_STARFIRE=m +# CONFIG_ADAPTEC_STARFIRE_NAPI is not set +# CONFIG_ADFS_FS is not set +CONFIG_ADM8211=m +# CONFIG_AFFS_FS is not set +# CONFIG_AFS_FS is not set +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_AIRO_CS=m +# CONFIG_AMD8111E_NAPI is not set +CONFIG_AMD8111_ETH=m +# CONFIG_APPLICOM is not set +CONFIG_APRICOT=m +# CONFIG_ARCNET is not set +# CONFIG_ARPD is not set +# CONFIG_ASFS_FS is not set +CONFIG_AT1700=m +# CONFIG_ATALK is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_ATM is not set +# CONFIG_ATMEL is not set +CONFIG_AUDIT=y +CONFIG_AUTOFS4_FS=m +CONFIG_AUTOFS_FS=m +CONFIG_B44=m +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +CONFIG_BASE_FULL=y +CONFIG_BASE_SMALL=0 +CONFIG_BCM43XX=m +# CONFIG_BCM43XX_DEBUG is not set +CONFIG_BCM43XX_DMA=y +CONFIG_BCM43XX_DMA_AND_PIO_MODE=y +# CONFIG_BCM43XX_DMA_MODE is not set +CONFIG_BCM43XX_PIO=y +# CONFIG_BCM43XX_PIO_MODE is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +CONFIG_BLK_DEV_CLOOP=m +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_CRYPTOLOOP=m +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_DM=m +CONFIG_BLK_DEV_DM_BBR=m +CONFIG_BLK_DEV_GENERIC=m +CONFIG_BLK_DEV_GNBD=m +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_BLK_DEV_HPT366 is not set +CONFIG_BLK_DEV_IDE=y +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_IDEDISK=m +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_IDEFLOPPY is not set +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_BLK_DEV_IDESCSI=m +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_DEV_IT821X is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_MD=m +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_NS87415=m +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_BLK_DEV_PIIX is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +# CONFIG_BLK_DEV_SC1200 is not set +CONFIG_BLK_DEV_SD=m +# CONFIG_BLK_DEV_SIIMAGE is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_UB is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +CONFIG_BNX2=m +# CONFIG_BONDING is not set +CONFIG_BRIDGE=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_ULOG=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_NETFILTER=y +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +# CONFIG_BT is not set +CONFIG_BUG=y +CONFIG_CARDBUS=y +CONFIG_CARDMAN_4000=m +CONFIG_CARDMAN_4040=m +CONFIG_CASSINI=m +CONFIG_CC_ALIGN_FUNCTIONS=0 +CONFIG_CC_ALIGN_JUMPS=0 +CONFIG_CC_ALIGN_LABELS=0 +CONFIG_CC_ALIGN_LOOPS=0 +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +# CONFIG_CD_NO_IDESCSI is not set +CONFIG_CHASSIS_LCD_LED=y +CONFIG_CHELSIO_T1=m +CONFIG_CHR_DEV_OSST=m +CONFIG_CHR_DEV_SCH=m +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_ST=m +CONFIG_CICADA_PHY=m +CONFIG_CIFS=m +# CONFIG_CIFS_EXPERIMENTAL is not set +# CONFIG_CIFS_STATS is not set +# CONFIG_CIFS_XATTR is not set +CONFIG_CLEAN_COMPILE=y +CONFIG_CLS_U32_MARK=y +CONFIG_CLS_U32_PERF=y +CONFIG_CLUSTER=m +CONFIG_CLUSTER_DLM=m +CONFIG_CLUSTER_DLM_PROCLOCKS=y +# CONFIG_CODA_FS is not set +CONFIG_CONFIGFS_FS=m +CONFIG_CONNECTOR=m +CONFIG_CRAMFS=y +CONFIG_CRC16=m +CONFIG_CRC32=y +CONFIG_CRC_CCITT=m +CONFIG_CRYPTO=y +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TEST=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_WP512=m +CONFIG_CS89x0=m +CONFIG_DAVICOM_PHY=m +CONFIG_DAZUKO=m +# CONFIG_DE2104X is not set +# CONFIG_DE4X5 is not set +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_IOREMAP is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DECNET is not set +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEPCA=m +CONFIG_DETECT_SOFTLOCKUP=y +CONFIG_DGRS=m +CONFIG_DL2K=m +# CONFIG_DM9102 is not set +CONFIG_DM_CRYPT=m +CONFIG_DM_MIRROR=m +# CONFIG_DM_MULTIPATH is not set +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_ZERO=m +CONFIG_DNOTIFY=y +# CONFIG_DRM is not set +# CONFIG_DTLK is not set +CONFIG_DUMMY=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=160 +CONFIG_DUMMY_CONSOLE_ROWS=64 +# CONFIG_DVB is not set +CONFIG_E100=m +CONFIG_E1000=m +# CONFIG_E1000_NAPI is not set +CONFIG_E2100=m +CONFIG_ECC=m +# CONFIG_ECONET is not set +CONFIG_EEPRO100=m +CONFIG_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +# CONFIG_EFS_FS is not set +CONFIG_EISA=y +CONFIG_EISA_NAMES=y +CONFIG_EL1=m +CONFIG_EL16=m +CONFIG_EL2=m +CONFIG_EL3=m +# CONFIG_EMBEDDED is not set +CONFIG_EPIC100=m +CONFIG_EPOLL=y +# CONFIG_EQUALIZER is not set +CONFIG_ES3210=m +CONFIG_ETH16I=m +CONFIG_EWRK3=m +CONFIG_EXPERIMENTAL=y +CONFIG_EXPORTFS=m +CONFIG_EXT2_FS=m +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=m +# CONFIG_EXT3_FS_XATTR is not set +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_FAT_FS=m +CONFIG_FB=y +# CONFIG_FB_3DFX is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_ATY128 is not set +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_CYBLA=m +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_MATROX is not set +CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_NVIDIA is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_RADEON_OLD is not set +# CONFIG_FB_RIVA is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIS is not set +CONFIG_FB_STI=y +CONFIG_FB_TILEBLITTING=y +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FDDI is not set +CONFIG_FEALNX=m +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x16=y +CONFIG_FONT_8x8=y +CONFIG_FORCEDETH=m +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_FUSE_FS=m +CONFIG_FUSION=y +CONFIG_FUSION_CTL=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_SAS=m +CONFIG_FUSION_SPI=m +CONFIG_FUTEX=y +CONFIG_FW_LOADER=y +CONFIG_GACT_PROB=y +# CONFIG_GAMEPORT is not set +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GEN_RTC=y +# CONFIG_GEN_RTC_X is not set +CONFIG_GFS_FS=m +CONFIG_GFS_FS_LOCK_DLM=m +CONFIG_GFS_FS_LOCK_GULM=m +CONFIG_GFS_FS_LOCK_HARNESS=m +CONFIG_GFS_FS_LOCK_NOLOCK=m +CONFIG_GSC=y +CONFIG_GSC_DINO=y +CONFIG_GSC_LASI=y +CONFIG_GSC_WAX=y +CONFIG_HAMACHI=m +# CONFIG_HAMRADIO is not set +CONFIG_HAPPYMEAL=m +CONFIG_HERMES=m +# CONFIG_HFSPLUS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HID_FF is not set +CONFIG_HIL_MLC=m +# CONFIG_HIPPI is not set +CONFIG_HOSTAP=m +CONFIG_HOSTAP_CS=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_PCI=m +CONFIG_HOSTAP_PLX=m +CONFIG_HOTPLUG=y +# CONFIG_HOTPLUG_PCI is not set +CONFIG_HP100=m +# CONFIG_HPFS_FS is not set +CONFIG_HPLAN=m +CONFIG_HPLAN_PLUS=m +CONFIG_HPPB=y +CONFIG_HP_SDC=m +CONFIG_HP_SDC_RTC=m +# CONFIG_HUGETLB_PAGE is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set +# CONFIG_HWMON_VID is not set +CONFIG_HW_CONSOLE=y +CONFIG_HZ=250 +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +# CONFIG_I2C is not set +CONFIG_I2O=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_BUS=m +CONFIG_I2O_CONFIG=m +CONFIG_I2O_CONFIG_OLD_IOCTL=y +CONFIG_I2O_EXT_ADAPTEC=y +CONFIG_I2O_PROC=m +CONFIG_I2O_SCSI=m +CONFIG_I82092=m +CONFIG_I82365=m +CONFIG_IDE=y +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_IDEDMA_IVB is not set +# CONFIG_IDEDMA_ONLYDISK is not set +CONFIG_IDEDMA_PCI_AUTO=y +CONFIG_IDEPCI_SHARE_IRQ=y +# CONFIG_IDE_ARM is not set +# CONFIG_IDE_CHIPSETS is not set +CONFIG_IDE_GENERIC=m +# CONFIG_IDE_TASK_IOCTL is not set +# CONFIG_IEEE1394 is not set +CONFIG_IEEE80211=m +CONFIG_IEEE80211_1_1_13=m +CONFIG_IEEE80211_1_1_13_CRYPT_CCMP=m +CONFIG_IEEE80211_1_1_13_CRYPT_TKIP=m +CONFIG_IEEE80211_1_1_13_CRYPT_WEP=m +CONFIG_IEEE80211_CRYPT_CCMP=m +CONFIG_IEEE80211_CRYPT_TKIP=m +CONFIG_IEEE80211_CRYPT_WEP=m +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_SOFTMAC=m +# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set +CONFIG_IKCONFIG=y +# CONFIG_IKCONFIG_PROC is not set +CONFIG_INET=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET_AH=m +CONFIG_INET_DCCP_DIAG=m +CONFIG_INET_DIAG=y +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_TCP_DIAG=y +CONFIG_INET_TUNNEL=m +# CONFIG_INFINIBAND is not set +CONFIG_INITRAMFS_SOURCE="" +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_INOTIFY=y +CONFIG_INPUT=y +# CONFIG_INPUT_EVBUG is not set +CONFIG_INPUT_EVDEV=m +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_JOYSTICK is not set +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_TSDEV is not set +# CONFIG_INPUT_UINPUT is not set +CONFIG_IOMMU_CCIO=y +CONFIG_IOMMU_SBA=y +CONFIG_IOSAPIC=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_NOOP=y +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_MATCH_AHESP=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_LENGTH=m +CONFIG_IP6_NF_MATCH_LIMIT=m +CONFIG_IP6_NF_MATCH_MAC=m +CONFIG_IP6_NF_MATCH_MARK=m +CONFIG_IP6_NF_MATCH_MULTIPORT=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_OWNER=m +CONFIG_IP6_NF_MATCH_PHYSDEV=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_TARGET_MARK=m +CONFIG_IP6_NF_TARGET_NFQUEUE=m +CONFIG_IP6_NF_TARGET_REJECT=m +# CONFIG_IPMI_HANDLER is not set +CONFIG_IPV6=m +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPW2100=m +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2100_MONITOR=y +CONFIG_IPW2200=m +# CONFIG_IPW2200_DEBUG is not set +CONFIG_IPW2200_MONITOR=y +# CONFIG_IPW3945 is not set +# CONFIG_IPX is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_DCCP=m +CONFIG_IP_DCCP_CCID3=m +# CONFIG_IP_DCCP_DEBUG is not set +CONFIG_IP_DCCP_TFRC_LIB=m +# CONFIG_IP_DCCP_UNLOAD_HACK is not set +CONFIG_IP_FIB_HASH=y +# CONFIG_IP_MROUTE is not set +CONFIG_IP_MULTICAST=y +CONFIG_IP_NF_AMANDA=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_IP_NF_CONNTRACK=m +# CONFIG_IP_NF_CONNTRACK_EVENTS is not set +CONFIG_IP_NF_CONNTRACK_MARK=y +CONFIG_IP_NF_CONNTRACK_NETLINK=m +CONFIG_IP_NF_CT_ACCT=y +CONFIG_IP_NF_CT_PROTO_SCTP=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_COMMENT=m +CONFIG_IP_NF_MATCH_CONNBYTES=m +CONFIG_IP_NF_MATCH_CONNMARK=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_DCCP=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_HASHLIMIT=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_MAC=m +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_OWNER=m +# CONFIG_IP_NF_MATCH_PHYSDEV is not set +CONFIG_IP_NF_MATCH_PKTTYPE=m +CONFIG_IP_NF_MATCH_REALM=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_SCTP=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_STRING=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_AMANDA=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_NAT_PPTP=m +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_NETBIOS_NS=m +CONFIG_IP_NF_PPTP=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_TARGET_CLASSIFY=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_CONNMARK=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_NFQUEUE=m +CONFIG_IP_NF_TARGET_NOTRACK=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TFTP=m +CONFIG_IP_PNP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_DHCP is not set +# CONFIG_IP_PNP_RARP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_IP_VS is not set +# CONFIG_IRDA is not set +CONFIG_ISA=y +CONFIG_ISCSI_TCP=m +# CONFIG_ISDN is not set +CONFIG_ISO9660_FS=m +CONFIG_IXGB=m +# CONFIG_IXGB_NAPI is not set +CONFIG_JBD=m +# CONFIG_JBD_DEBUG is not set +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_FS=m +# CONFIG_JFS_POSIX_ACL is not set +# CONFIG_JFS_SECURITY is not set +# CONFIG_JFS_STATISTICS is not set +CONFIG_JOLIET=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_ATKBD_HP_KEYCODES is not set +CONFIG_KEYBOARD_HIL=m +CONFIG_KEYBOARD_HIL_OLD=m +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYS is not set +CONFIG_KMOD=y +CONFIG_KOBJECT_UEVENT=y +# CONFIG_LAPB is not set +CONFIG_LASI_82596=m +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_LIBCRC32C=m +# CONFIG_LLC2 is not set +CONFIG_LNE390=m +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +# CONFIG_LOGO is not set +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LP486E=m +# CONFIG_LP_CONSOLE is not set +CONFIG_LXT_PHY=m +CONFIG_MAGIC_SYSRQ=y +CONFIG_MARVELL_PHY=m +CONFIG_MD=y +CONFIG_MD_FAULTY=m +CONFIG_MD_LINEAR=m +CONFIG_MD_MULTIPATH=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID5=m +CONFIG_MD_RAID6=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_SAS=m +CONFIG_MII=m +# CONFIG_MINIX_FS is not set +# CONFIG_MMC is not set +CONFIG_MMU=y +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MOUSE_HIL=m +# CONFIG_MOUSE_INPORT is not set +# CONFIG_MOUSE_LOGIBM is not set +# CONFIG_MOUSE_PC110PAD is not set +CONFIG_MOUSE_PS2=m +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_VSXXXAA is not set +CONFIG_MSDOS_FS=m +CONFIG_MSDOS_PARTITION=y +# CONFIG_MTD is not set +CONFIG_NATSEMI=m +# CONFIG_NCP_FS is not set +CONFIG_NE2000=m +CONFIG_NE2K_PCI=m +CONFIG_NE3210=m +CONFIG_NET=y +CONFIG_NETCONSOLE=m +CONFIG_NETDEVICES=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETPOLL=y +# CONFIG_NETPOLL_RX is not set +# CONFIG_NETPOLL_TRAP is not set +CONFIG_NET_ACT_GACT=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACX=m +CONFIG_NET_ACX_PCI=y +CONFIG_NET_ACX_USB=y +CONFIG_NET_CLS=y +CONFIG_NET_CLS_ACT=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_IND=y +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_U32=m +# CONFIG_NET_DIVERT is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_ETHERNET=y +# CONFIG_NET_FC is not set +CONFIG_NET_IPG=m +CONFIG_NET_IPGRE=m +# CONFIG_NET_IPGRE_BROADCAST is not set +CONFIG_NET_IPIP=m +CONFIG_NET_ISA=y +CONFIG_NET_KEY=m +CONFIG_NET_MRV8K=m +CONFIG_NET_PCI=y +CONFIG_NET_PCMCIA=y +# CONFIG_NET_PKTGEN is not set +# CONFIG_NET_POCKET is not set +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_NET_RADIO=y +CONFIG_NET_RT2400=m +CONFIG_NET_RT2500=m +CONFIG_NET_RT2600=m +CONFIG_NET_RTL8187=m +CONFIG_NET_RTL818X=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +# CONFIG_NET_SCH_CLK_CPU is not set +# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set +CONFIG_NET_SCH_CLK_JIFFIES=y +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_TULIP=y +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_RACAL=y +CONFIG_NET_VENDOR_SMC=y +CONFIG_NET_WIRELESS=y +CONFIG_NFSD=m +CONFIG_NFSD_TCP=y +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +CONFIG_NFSD_V4=y +CONFIG_NFS_COMMON=y +CONFIG_NFS_DIRECTIO=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +CONFIG_NFS_V4=y +# CONFIG_NI52 is not set +CONFIG_NLS=y +# CONFIG_NLS_ASCII is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_CODEPAGE_437=m +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_ISO8859_1=m +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=m +CONFIG_NORTEL_HERMES=m +CONFIG_NS83820=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_FS=m +# CONFIG_NTFS_RW is not set +CONFIG_OBSOLETE_MODPARM=y +# CONFIG_OBSOLETE_OSS_DRIVER is not set +# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set +CONFIG_OCFS2_FS=m +CONFIG_OPROFILE=m +# CONFIG_PA7100LC is not set +# CONFIG_PA7200 is not set +# CONFIG_PA7300LC is not set +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +# CONFIG_PARIDE is not set +CONFIG_PARISC=y +CONFIG_PARPORT=m +# CONFIG_PARPORT_1284 is not set +CONFIG_PARPORT_GSC=y +CONFIG_PARPORT_NOT_PC=y +CONFIG_PARPORT_PC=m +# CONFIG_PARPORT_PC_FIFO is not set +CONFIG_PARPORT_PC_PCMCIA=m +# CONFIG_PARPORT_PC_SUPERIO is not set +# CONFIG_PARPORT_SERIAL is not set +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_PCCARD=m +CONFIG_PCCARD_NONSTATIC=m +CONFIG_PCI=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_HERMES is not set +CONFIG_PCI_LBA=y +CONFIG_PCI_LEGACY_PROC=y +CONFIG_PCMCIA=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_AXNET=m +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_HERMES=m +CONFIG_PCMCIA_IOCTL=y +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_PCMCIA_NETWAVE=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_RAYCS=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_SPECTRUM=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_PCMCIA_WL3501=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_PCNET32=m +CONFIG_PD6729=m +CONFIG_PDC_CHASSIS=y +# CONFIG_PDC_CONSOLE is not set +CONFIG_PDC_STABLE=m +# CONFIG_PHONE is not set +CONFIG_PHYLIB=m +CONFIG_PLIP=m +# CONFIG_PLX_HERMES is not set +# CONFIG_PNP is not set +CONFIG_POSIX_MQUEUE=y +# CONFIG_PPDEV is not set +CONFIG_PPP=m +CONFIG_PPPOE=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_SYNC_TTY=m +# CONFIG_PREEMPT is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_PRINTER=m +CONFIG_PRINTK=y +# CONFIG_PRINTK_TIME is not set +CONFIG_PRISM2=y +CONFIG_PRISM2_CS=m +CONFIG_PRISM2_PCI=m +CONFIG_PRISM2_PLX=m +CONFIG_PRISM2_USB=m +CONFIG_PRISM54=m +CONFIG_PRISM54_SOFTMAC=m +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROFILING=y +# CONFIG_QNX4FS_FS is not set +CONFIG_QSEMI_PHY=m +# CONFIG_QUOTA is not set +CONFIG_QUOTACTL=y +CONFIG_R1000=m +# CONFIG_R3964 is not set +CONFIG_R8169=m +# CONFIG_R8169_NAPI is not set +CONFIG_R8169_VLAN=y +CONFIG_RAID_ATTRS=m +CONFIG_RAMFS=y +# CONFIG_RAW_DRIVER is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_FS_XATTR is not set +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_RELAYFS_FS=m +# CONFIG_ROMFS_FS is not set +CONFIG_ROOT_NFS=y +CONFIG_RPCSEC_GSS_KRB5=y +CONFIG_RPCSEC_GSS_SPKM3=m +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_S2IO=m +# CONFIG_S2IO_NAPI is not set +CONFIG_SAS_CLASS=m +# CONFIG_SAS_DEBUG is not set +# CONFIG_SCHEDSTATS is not set +CONFIG_SCSI=y +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AHA1740 is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +CONFIG_SCSI_AIC94XX=m +CONFIG_SCSI_ARCMSR=m +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_DTC3280 is not set +CONFIG_SCSI_FC_ATTRS=m +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set +# CONFIG_SCSI_IMM is not set +# CONFIG_SCSI_IN2000 is not set +# CONFIG_SCSI_INIA100 is not set +CONFIG_SCSI_INITIO=m +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_IPS is not set +CONFIG_SCSI_ISCSI_ATTRS=m +CONFIG_SCSI_LASI700=m +# CONFIG_SCSI_LOGGING is not set +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_NCR53C406A is not set +CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 +CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 +# CONFIG_SCSI_NCR53C8XX_PROFILE is not set +CONFIG_SCSI_NCR53C8XX_SYNC=20 +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_PPA is not set +CONFIG_SCSI_PROC_FS=y +# CONFIG_SCSI_PSI240I is not set +CONFIG_SCSI_QLA21XX=m +CONFIG_SCSI_QLA22XX=m +CONFIG_SCSI_QLA2300=m +CONFIG_SCSI_QLA2322=m +CONFIG_SCSI_QLA24XX=m +CONFIG_SCSI_QLA2XXX=y +CONFIG_SCSI_QLA6312=m +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_QLOGIC_FC is not set +CONFIG_SCSI_SAS_ATTRS=m +# CONFIG_SCSI_SATA is not set +# CONFIG_SCSI_SIM710 is not set +CONFIG_SCSI_SPI2_ATTRS=m +CONFIG_SCSI_SPI_ATTRS=y +# CONFIG_SCSI_SYM53C416 is not set +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +# CONFIG_SCSI_T128 is not set +CONFIG_SCSI_ZALON=m +CONFIG_SECURITY=y +CONFIG_SECURITY_CAPABILITIES=y +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_REALTIME=m +# CONFIG_SECURITY_ROOTPLUG is not set +CONFIG_SECURITY_SECLVL=m +# CONFIG_SECURITY_SELINUX is not set +CONFIG_SEEQ8005=m +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_ACCENT=m +CONFIG_SERIAL_8250_BOCA=m +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_FOURPORT=m +CONFIG_SERIAL_8250_HUB6=m +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_NR_UARTS=48 +# CONFIG_SERIAL_8250_RSA is not set +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_MUX is not set +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_SERIO=y +CONFIG_SERIO_GSCPS2=y +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_PARKBD is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_RAW=m +# CONFIG_SERIO_SERPORT is not set +CONFIG_SHAPER=m +CONFIG_SHMEM=y +CONFIG_SIS190=m +CONFIG_SIS900=m +CONFIG_SK98LIN=m +CONFIG_SKGE=m +CONFIG_SKY2=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +# CONFIG_SLIP_MODE_SLIP6 is not set +CONFIG_SLIP_SMART=y +CONFIG_SMB_FS=m +CONFIG_SMB_NLS_DEFAULT=y +CONFIG_SMB_NLS_REMOTE="cp437" +CONFIG_SMC9194=m +CONFIG_SND=m +CONFIG_SND_AC97_BUS=m +CONFIG_SND_AC97_CODEC=m +# CONFIG_SND_AD1889 is not set +# CONFIG_SND_ALI5451 is not set +# CONFIG_SND_ATIIXP is not set +CONFIG_SND_ATIIXP_MODEM=m +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AZT3328 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_DEBUG is not set +CONFIG_SND_DUMMY=m +# CONFIG_SND_EMU10K1 is not set +CONFIG_SND_EMU10K1X=m +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +# CONFIG_SND_ES1938 is not set +# CONFIG_SND_ES1968 is not set +# CONFIG_SND_FM801 is not set +CONFIG_SND_GENERIC_DRIVER=y +CONFIG_SND_HARMONY=m +# CONFIG_SND_HDA_INTEL is not set +# CONFIG_SND_HDSP is not set +CONFIG_SND_HDSPM=m +CONFIG_SND_HWDEP=m +# CONFIG_SND_ICE1712 is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_MAESTRO3 is not set +# CONFIG_SND_MIXART is not set +CONFIG_SND_MIXER_OSS=m +# CONFIG_SND_MPU401 is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_NM256 is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_PCM=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PDAUDIOCF=m +CONFIG_SND_RAWMIDI=m +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQUENCER_OSS=y +# CONFIG_SND_SEQ_DUMMY is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_SONICVIBES is not set +CONFIG_SND_TIMER=m +# CONFIG_SND_TRIDENT is not set +# CONFIG_SND_USB_AUDIO is not set +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VIRMIDI is not set +# CONFIG_SND_VX222 is not set +CONFIG_SND_VXPOCKET=m +CONFIG_SND_VX_LIB=m +# CONFIG_SND_YMFPCI is not set +CONFIG_SOUND=m +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +CONFIG_SOUND_PRIME=m +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SPARSEMEM_MANUAL is not set +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SQUASHFS=m +# CONFIG_SQUASHFS_1_0_COMPATIBILITY is not set +CONFIG_SQUASHFS_2_0_COMPATIBILITY=y +CONFIG_STACK_GROWSUP=y +CONFIG_STANDALONE=y +CONFIG_STI_CONSOLE=y +# CONFIG_STRIP is not set +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_SUNGEM=m +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +CONFIG_SUPERIO=y +CONFIG_SWAP=y +CONFIG_SYNCLINK_CS=m +# CONFIG_SYN_COOKIES is not set +CONFIG_SYSCTL=y +CONFIG_SYSFS=y +CONFIG_SYSVIPC=y +# CONFIG_SYSV_FS is not set +# CONFIG_TCG_TPM is not set +CONFIG_TCIC=m +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_BIC=y +CONFIG_TELCLOCK=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TIGON3=m +# CONFIG_TINY_SHMEM is not set +# CONFIG_TIPAR is not set +# CONFIG_TMD_HERMES is not set +CONFIG_TMPFS=y +# CONFIG_TR is not set +CONFIG_TULIP=m +# CONFIG_TULIP_MMIO is not set +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_NAPI is not set +CONFIG_TUN=m +CONFIG_TYPHOON=m +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y +# CONFIG_UFS_FS is not set +CONFIG_ULI526X=m +CONFIG_ULTRA=m +CONFIG_ULTRA32=m +CONFIG_UNION_FS=m +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=y +CONFIG_USB=m +CONFIG_USB_ACECAD=m +# CONFIG_USB_ACM is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_APPLETOUCH is not set +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +# CONFIG_USB_ATI_REMOTE is not set +CONFIG_USB_ATI_REMOTE2=m +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_CATC is not set +CONFIG_USB_CPADDEV=y +# CONFIG_USB_CYTHERM is not set +CONFIG_USB_DABUSB=m +CONFIG_USB_DEBUG=y +# CONFIG_USB_DEVICEFS is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_EAGLE=m +# CONFIG_USB_EGALAX is not set +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_SPLIT_ISO=y +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +# CONFIG_USB_GADGET is not set +CONFIG_USB_HID=m +CONFIG_USB_HIDDEV=y +CONFIG_USB_HIDINPUT=y +# CONFIG_USB_HIDINPUT_POWERBOOK is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_ISP116X_HCD is not set +CONFIG_USB_ITMTOUCH=m +# CONFIG_USB_KAWETH is not set +CONFIG_USB_KBD=m +# CONFIG_USB_KBTAB is not set +# CONFIG_USB_KEYSPAN_REMOTE is not set +# CONFIG_USB_LCD is not set +CONFIG_USB_LD=m +# CONFIG_USB_LED is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +CONFIG_USB_MON=y +CONFIG_USB_MOUSE=m +# CONFIG_USB_MTOUCH is not set +# CONFIG_USB_OHCI_BIG_ENDIAN is not set +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_OTG is not set +# CONFIG_USB_PEGASUS is not set +CONFIG_USB_PHIDGETKIT=m +# CONFIG_USB_PHIDGETSERVO is not set +CONFIG_USB_PODXTPRO=m +# CONFIG_USB_POWERMATE is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_RIO500 is not set +CONFIG_USB_RT2570=m +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SISUSBVGA is not set +CONFIG_USB_SL811_CS=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +CONFIG_USB_STORAGE_USBAT=y +CONFIG_USB_SYNAPTICS=m +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_USS720 is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_XPAD is not set +CONFIG_USB_YEALINK=m +# CONFIG_USB_ZD1201 is not set +CONFIG_USB_ZD1211=m +CONFIG_VFAT_FS=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_VIA_VELOCITY=m +# CONFIG_VIDEO_DEV is not set +CONFIG_VIDEO_SELECT=y +CONFIG_VLAN_8021Q=m +CONFIG_VORTEX=m +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_VXFS_FS=m +# CONFIG_W1 is not set +# CONFIG_WAN is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_WATCHDOG is not set +# CONFIG_WAVELAN is not set +CONFIG_WD80x3=m +# CONFIG_WINBOND_840 is not set +CONFIG_WLAN_NG=y +# CONFIG_X25 is not set +CONFIG_XFRM=y +CONFIG_XFRM_USER=m +CONFIG_XFS_EXPORT=y +CONFIG_XFS_FS=m +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_QUOTA=y +# CONFIG_XFS_RT is not set +# CONFIG_XFS_SECURITY is not set +CONFIG_YELLOWFIN=m +CONFIG_YENTA=m +CONFIG_ZISOFS=y +CONFIG_ZISOFS_FS=m +CONFIG_ZLIB_DEFLATE=m +CONFIG_ZLIB_INFLATE=y --- linux-source-2.6.15-2.6.15.orig/debian/config/hppa/config.hppa64 +++ linux-source-2.6.15-2.6.15/debian/config/hppa/config.hppa64 @@ -0,0 +1,20 @@ +# +# Config options for config.hppa64 automatically generated by splitconf.pl +# +CONFIG_64BIT=y +CONFIG_ARCH_DISCONTIGMEM_ENABLE=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_COMPAT=y +CONFIG_DISCONTIGMEM=y +CONFIG_DISCONTIGMEM_MANUAL=y +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_NI5010=m +CONFIG_PA20=y +# CONFIG_PA7000 is not set +CONFIG_PA8X00=y +CONFIG_PCMCIA_XIRTULIP=m +CONFIG_PREFETCH=y +# CONFIG_SMP is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 --- linux-source-2.6.15-2.6.15.orig/debian/config/hppa/config.hppa32-smp +++ linux-source-2.6.15-2.6.15/debian/config/hppa/config.hppa32-smp @@ -0,0 +1,25 @@ +# +# Config options for config.hppa32-smp automatically generated by splitconf.pl +# +# CONFIG_ARLAN is not set +CONFIG_CPUSETS=y +# CONFIG_DEBUG_RWLOCK is not set +# CONFIG_DISCONTIGMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLATMEM_MANUAL=y +CONFIG_HOTPLUG_CPU=y +# CONFIG_HPUX is not set +CONFIG_LOCK_KERNEL=y +CONFIG_NR_CPUS=32 +CONFIG_PA11=y +CONFIG_PA7000=y +# CONFIG_PA8X00 is not set +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_NINJA_SCSI=m +# CONFIG_SCSI_AHA152X is not set +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_NSP32=m +CONFIG_SMP=y +CONFIG_SPLIT_PTLOCK_CPUS=4096 +CONFIG_STOP_MACHINE=y +CONFIG_TLAN=m --- linux-source-2.6.15-2.6.15.orig/debian/config/hppa/config.hppa64-smp +++ linux-source-2.6.15-2.6.15/debian/config/hppa/config.hppa64-smp @@ -0,0 +1,23 @@ +# +# Config options for config.hppa64-smp automatically generated by splitconf.pl +# +CONFIG_64BIT=y +CONFIG_ARCH_DISCONTIGMEM_ENABLE=y +CONFIG_COMPAT=y +CONFIG_CPUSETS=y +# CONFIG_DEBUG_RWLOCK is not set +CONFIG_DISCONTIGMEM=y +CONFIG_DISCONTIGMEM_MANUAL=y +# CONFIG_FLATMEM_MANUAL is not set +CONFIG_HOTPLUG_CPU=y +CONFIG_I2O_EXT_ADAPTEC_DMA64=y +CONFIG_LOCK_KERNEL=y +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_NR_CPUS=32 +CONFIG_PA20=y +# CONFIG_PA7000 is not set +CONFIG_PA8X00=y +CONFIG_PREFETCH=y +CONFIG_SMP=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_STOP_MACHINE=y --- linux-source-2.6.15-2.6.15.orig/debian/config/hppa/config.hppa32 +++ linux-source-2.6.15-2.6.15/debian/config/hppa/config.hppa32 @@ -0,0 +1,22 @@ +# +# Config options for config.hppa32 automatically generated by splitconf.pl +# +# CONFIG_ARLAN is not set +CONFIG_BROKEN_ON_SMP=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_HPUX is not set +CONFIG_NI5010=m +CONFIG_PA11=y +CONFIG_PA7000=y +# CONFIG_PA8X00 is not set +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_XIRTULIP=m +# CONFIG_SCSI_AHA152X is not set +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_NSP32=m +# CONFIG_SMP is not set +CONFIG_SPLIT_PTLOCK_CPUS=4096 +CONFIG_TLAN=m --- linux-source-2.6.15-2.6.15.orig/debian/official +++ linux-source-2.6.15-2.6.15/debian/official @@ -0,0 +1 @@ +This is the Ubuntu version of Linux 2.6.15 --- linux-source-2.6.15-2.6.15.orig/debian/rules +++ linux-source-2.6.15-2.6.15/debian/rules @@ -0,0 +1,393 @@ +#!/usr/bin/make -f +# +# debian/rules for kernel-source. +# +# GNU copyright 1997 to 1999 by Joey Hess. +# Copyright (c) 1999-2002 Herbert Xu +# Copyright (c) 2004 Jens Schmalzing +# + +# This is the debhelper compatability version to use. +export DH_COMPAT=4 + +SHELL := sh -e + +stem := linux + +# extract the upstream release and the full package version from the changelog +release := $(shell sed -n '1s/^.*(\(.*\)-.*).*$$/\1/p' debian/changelog) + +# extract the version from the package name that can be different from release +pkgversion := $(shell sed -n '1s/^$(stem)-source-\([^ ]*\) .*/\1/p' debian/changelog) + +# extract all the Debian revisions for this release from the changelog +revisions := $(shell sed -n 's/^$(stem)-source-$(pkgversion)\ .*($(release)-\(.*\)).*$$/\1/p' debian/changelog | tac) + +# set the current Debian revision to the latest by default; +# note that for some targets, the two may actually be different. +revision ?= $(word $(words $(revisions)),$(revisions)) + +# Get the previously built revision; we compare ABIs with that. If no +# previous revision, default to 0. +prev_revisions := $(filter-out $(revision),0 $(revisions)) +prev_revision := $(word $(words $(prev_revisions)),$(prev_revisions)) + +abidir := $(CURDIR)/debian/abi +skipabi := false + +version.Debian: + echo $(pkgversion) > $@ + +release.Debian: + echo $(release)-$(revision) > $@ + +# how we call ourselves recursively +# RECURSION = $(MAKE) -f debian/rules + +gitver=$(shell if test -f .git/HEAD; then cat .git/HEAD; else echo ""; fi) +gitverpre=$(shell echo $(gitver) | cut -b -3) +gitverpost=$(shell echo $(gitver) | cut -b 30-32) + +autobuild=$(shell if [ "$$AUTOBUILD" = "" ]; then echo n; else echo y; fi) + +khsed := s/^Package: $(stem)-headers-\(.*\)\(-[[:digit:]]*\)$$/\1 \2/ +debver := $(shell sed -n '$(khsed); t e; b; :e; p; q' debian/control) +export version := $(firstword $(debver)) +export debnum := $(word 2,$(debver)) +export abinum := $(shell echo $(debnum) | sed -e 's/-//g') + +ifeq ($(autobuild),y) +debver := $(version)$(debnum)-$(gitverpre)$(gitverpost) +else +debver := $(version)$(debnum) +endif + +ifneq ($(debnum),) +appvan := --append_to_version $(debnum) +endif + +arch := $(shell dpkg-architecture -qDEB_HOST_ARCH) + +basedir := debian/config/$(arch) + +configs := $(notdir $(wildcard $(basedir)/config.*)) +config_common = debian/config/config $(basedir)/config +flavours := $(filter-out %.disabled,$(patsubst config.%,%,$(configs))) + +builddir := debian/build +srcdir := $(builddir)/$(stem)-source-$(version) + +export DEBIAN_SRCTOP := $(CURDIR)/$(srcdir) +export DEBIAN_UPSTREAM_VERSION := $(version) +export DEBIAN_STEM := $(stem) + +export UBUNTUBUILD=1 + +ifeq ($(strip $(arch)),powerpc) +subarch := --subarch pmac +endif + +MAKE_KPKG := make-kpkg --stem $(stem) $(subarch) + +unpack: stamp-unpack +stamp-unpack: + dh_testdir + find . \( -path ./debian -o -path ./.git -o -name .gitignore \) -prune -o -print | \ + cpio -dumpl $(srcdir) + cd $(srcdir); rm -f stamp-* version.Debian release.Debian + mkdir -p $(srcdir)/debian + cp debian/changelog $(srcdir)/debian + cp debian/control $(srcdir)/debian + cp debian/copyright $(srcdir)/debian + > $(srcdir)/debian/official + install -D -m755 debian/abi-install $(srcdir)/debian/image.d/abi-install + install -D -m755 debian/post-install $(srcdir)/debian/post-install + chmod u+x debian/header-install + for i in $(flavours); do \ + cp -al $(srcdir) $(builddir)/build-$$i; \ + rm -f $(builddir)/build-$$i/.config; \ + case $$i in \ + *) \ + for t in $(config_common); do \ + if [ -f $${t} ]; then \ + cat $${t} >> $(builddir)/build-$$i/.config; \ + fi; \ + done; \ + ;; \ + esac; \ + cat $(basedir)/config.$$i >> $(builddir)/build-$$i/.config; \ + ln -s $(abidir)/$(release)-$(revision)/${arch}/$$i $(builddir)/build-$$i/debian/abi-${release}${debnum}-$$i; \ + export KPKG_ARCH=$$(grep "^$$i[[:space:]]" debian/config/archmap | grep -v ^# | awk '{print $$2}'); \ + if [ -e debian/post-install.$$KPKG_ARCH ]; then \ + cp debian/post-install.$$KPKG_ARCH $(builddir)/build-$$i/debian/image.d/$$KPKG_ARCH; \ + chmod u+x $(builddir)/build-$$i/debian/image.d/$$KPKG_ARCH; \ + fi; \ + done + ln -s ../../../firmware $(srcdir)/debian + + touch stamp-unpack + +build_prereq := \ + release.Debian version.Debian \ + unpack \ + debian/control + +build: $(build_prereq) + dh_testdir + + PATH=$$PWD/debian/bin:$$PATH; \ + export HARCH=$$(grep "^headers-$(arch)[[:space:]]" debian/config/archmap | grep -v ^# | awk '{print $$2}'); \ + cd $(srcdir); \ + make ARCH=$$HARCH defconfig; \ + mv .config .config.old; \ + sed 's/^# \(CONFIG_MODVERSIONS\) is not set$$/\1=y/' \ + .config.old > .config; \ + make ARCH=$$HARCH prepare + + mkdir -p $(abidir)/$(release)-$(revision)/${arch} + echo $(abinum) > $(abidir)/$(release)-$(revision)/abiname + + for i in $(flavours); do \ + export KPKG_ARCH=$$(grep "^$$i[[:space:]]" debian/config/archmap | grep -v ^# | awk '{print $$2}'); \ + cd $(builddir)/build-$$i; \ + if [ -e /CurrentlyBuilding ] && [ -z "$(CONCURRENCY_LEVEL)" ]; then \ + CONCURRENCY_LEVEL=$$(getconf _NPROCESSORS_ONLN) && \ + CONCURRENCY_LEVEL=$$(expr $$CONCURRENCY_LEVEL \* 2) && \ + export CONCURRENCY_LEVEL; \ + fi; \ + $(MAKE_KPKG) --append_to_version $(debnum)-$$i \ + build; \ + export LC_ALL=C; \ + sed -e 's/^\(.\+\)[[:space:]]\+\(.\+\)[[:space:]]\(.\+\)$$/\3 \2 \1/' Module.symvers | sort > $(abidir)/$(release)-$(revision)/${arch}/$$i; \ + if [ "$(prev_revision)" != "0" ] && [ "$(abinum)" = "$(shell cat $(abidir)/$(release)-$(prev_revision)/abiname)" ]; then \ + if [ ! -e "$(abidir)/${arch}.ignore" -a "$(skipabi)" != "true" ]; then \ + if [ "`diff -u $(abidir)/$(release)-$(prev_revision)/${arch}/$$i $(abidir)/$(release)-$(revision)/${arch}/$$i | grep ^-[^-] | wc -l`" != "0" ]; then \ + echo "ABI has changed! Refusing to continue; please update the ABINAME accordingly. Differences:"; \ + diff -u $(abidir)/$(release)-$(prev_revision)/${arch}/$$i $(abidir)/$(release)-$(revision)/${arch}/$$i; \ + exit 1; \ + fi; \ + if [ "`diff -u $(abidir)/$(release)-$(prev_revision)/${arch}/$$i $(abidir)/$(release)-$(revision)/${arch}/$$i | grep ^+[^+] | wc -l`" != "0" ]; then \ + echo "WARNING: new symbols have been added. This is not critical, but probably is not a good idea when attempting to maintain ABI stability. Differences:"; \ + diff -u $(abidir)/$(release)-$(prev_revision)/${arch}/$$i $(abidir)/$(release)-$(revision)/${arch}/$$i || true; \ + fi; \ + else \ + if [ -e $(abidir)/$(release)-$(prev_revision)/${arch}/$$i ]; then \ + if ! diff -u $(abidir)/$(release)-$(prev_revision)/${arch}/$$i $(abidir)/$(release)-$(revision)/${arch}/$$i >/dev/null 2>&1; then \ + echo "WARNING! ABI check override for ${arch} has been detected, and there were changes!"; \ + diff -u $(abidir)/$(release)-$(prev_revision)/${arch}/$$i $(abidir)/$(release)-$(revision)/${arch}/$$i || true; \ + fi; \ + else \ + echo "WARNING! ABI check override for ${arch} has been detected!"; \ + echo "ABI compatibility can NOT be verified! but still proceeding as requested"; \ + fi; \ + fi; \ + fi; \ + cd - > /dev/null; \ + done + +clean: debian/control + dh_testdir + dh_testroot + + $(MAKE_KPKG) clean + rm -f stamp-* .config* release.Debian version.Debian + rm -rf $(abidir)/$(release)-$(revision) + rm -rf $(builddir) + + dh_clean + + # udebs/kernel-wedge + rm -rf TODO firmware modules kernel-versions package-list debian/d-i-${arch} + cp -f debian/control.stub debian/control + +ifneq ($(prev_revision),0) + # Check for the previous kernel's abi file; now a requirement for + # builds! + + if [ ! -f "$(abidir)/$(release)-$(prev_revision)/abiname" ]; then \ + echo "Missing $(abidir)/$(release)-$(prev_revision)/abiname file." 1>&2; \ + exit 1; \ + fi + if [ "$(prev_revision)" != "0" ] && [ "$(abinum)" = "$(shell cat $(abidir)/$(release)-$(prev_revision)/abiname)" ]; then \ + if [ ! -e "$(abidir)/${arch}.ignore" -a "$(skipabi)" != "true" ]; then \ + for i in $(flavours); do \ + if [ ! -f "$(abidir)/$(release)-$(prev_revision)/${arch}/$$i" ]; then \ + echo "Missing $(abidir)/$(release)-$(prev_revision)/${arch}/$$i file." 2>&1; \ + exit 1; \ + fi; \ + done \ + else \ + echo "WARNING! ABI check override for ${arch} has been detected!"; \ + echo "ABI compatibility can NOT be verified! but still proceeding as requested"; \ + fi; \ + fi +endif + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + > debian/files + +# Build architecture-independent files here. +binary-indep: build install + dh_testdir + dh_testroot + + cd $(srcdir); \ + $(MAKE_KPKG) kernel-source; \ + $(MAKE_KPKG) kernel-doc + + mv $(builddir)/*.deb .. + cat $(srcdir)/debian/files >> debian/files + rm $(srcdir)/debian/files + + dh_installchangelogs -plinux-kernel-devel + dh_installdocs -plinux-kernel-devel + dh_compress -plinux-kernel-devel + dh_fixperms -plinux-kernel-devel + dh_installdeb -plinux-kernel-devel + dh_gencontrol -plinux-kernel-devel + dh_md5sums -plinux-kernel-devel + dh_builddeb -plinux-kernel-devel + +# Build architecture-dependent files here. +binary-debs: install + dh_testdir + dh_testroot + + export KPKG_ARCH=$$(grep "^headers-$(arch)[[:space:]]" debian/config/archmap | grep -v ^# | awk '{print $$3}'); \ + cd $(srcdir); \ + HEADER_CLEAN_HOOK=$(CURDIR)/debian/header-install \ + $(MAKE_KPKG) $(appvan) kernel-headers + + for i in $(flavours); do \ + export KPKG_ARCH=$$(grep "^$$i[[:space:]]" debian/config/archmap | grep -v ^# | awk '{print $$2}'); \ + cp -al $(builddir)/build-$$i $(builddir)/install-$$i; \ + cd $(builddir)/install-$$i; \ + $(MAKE_KPKG) --append_to_version $(debnum)-$$i \ + --initrd kernel-image; \ + cd - > /dev/null; \ + cat $(builddir)/install-$$i/debian/files >> debian/files; \ + rm -rf $(builddir)/install-$$i; \ + done + +binary-arch: binary-debs binary-udebs + dh_testdir + dh_testroot + + mv $(builddir)/*.deb .. + cat $(srcdir)/debian/files >> debian/files + rm $(srcdir)/debian/files + +binary: binary-indep binary-arch + +.PHONY: build clean binary-indep binary-arch binary-debs binary install unpack debnum abinum + +##################### +# The following targets set the stage for building the debian-installer udebs + +.PHONY: debian/control binary-udebs + +debian/control: + # if you need to change something, do it in the right place ;) + rm -rf TODO firmware modules kernel-versions package-list + cp -rp debian/d-i/$(arch)/* . + mkdir -p modules/$(arch)/shared/ + cp -rp debian/d-i/shared/modules/* modules/$(arch)/shared/ + mkdir -p firmware/$(arch)/shared/ + cp -rp debian/d-i/shared/firmware/* firmware/$(arch)/shared/ + + # ugly workaround from some fsck Makefile that removes all + # files called kernel-image, that is required by kernel-wedge to + # generate the kernel_*.udeb! + touch modules/$(arch)/kernel-image + if [ -d modules/sparc64 ]; then \ + touch modules/sparc64/kernel-image && \ + cp -rp modules/sparc/shared modules/sparc64; \ + fi + + kernel-wedge gen-control > debian/control + +binary-udebs: binary-debs + dh_testdir + dh_testroot + + # unpack the kernels into a temporary directory + mkdir -p debian/d-i-${arch} + + # XXX: this stuff finds the kernels that need upacking according to + # kernel-versions and unpack them into the temp dir. + + imagelist=$$(cat kernel-versions | grep ^${arch} | awk '{print $$4}') && \ + for i in $$imagelist; do \ + dpkg -x $$(ls debian/build/$(stem)-image-$$i\_*${arch}.deb) debian/d-i-${arch}; \ + done + + kernel-wedge make-links + + export SOURCEDIR=debian/d-i-${arch} && \ + kernel-wedge install-files && \ + kernel-wedge check + + dh_fixperms -s + dh_gencontrol -s + + # XXX: this stuff builds only the .udeb. We cannot call dh_builddeb for everything + # since the .deb will be generated by make-kpkg. + dilist=$$(dh_listpackages -s | grep "\-di$$") && \ + for i in $$dilist; do \ + dh_builddeb -p$$i; \ + done + +##################### +# The following targets are for the maintainer only! do no run if you don't +# know what they do. + +.PHONY: bumpabi startnewrelease printenv getprevabis updateconfigs + +updateconfigs: + for arch in i386 amd64 ia64 hppa powerpc sparc; do \ + debian/bin/oldconfig $$arch; \ + done + +getprevabis: + sh debian/bin/getabis $(release) $(prev_revision) + +bumpabi: skipabi=true +bumpabi: clean + dh_testdir + nextabi=$(shell expr $(abinum) + 1); \ + list="$(shell ls -d debian/d-i/*/kernel-versions)"; \ + list="$$list debian/control debian/control.stub"; \ + for i in $$list; do \ + sed -i -e 's/$(pkgversion)-'$$abinum'/$(pkgversion)-'$$nextabi'/g' $$i; \ + done + +startnewrelease: + dh_testdir + nextminor=$(shell expr `echo $(revision) | awk -F. '{print $$2}'` + 1); \ + user=$(shell whoami); \ + memyselfandirene="$$(getent passwd $$user | cut -d ":" -f 5 | cut -d "," -f 1)"; \ + now="$(shell date -R)"; \ + echo -e "$(stem)-source-$(version) ($(release)-$(abinum).$$nextminor) UNRELEASED; urgency=low\n\n * dummy entry\n\n -- $$memyselfandirene <$$user@ubuntu.com> $$now\n" > debian/changelog.new ; \ + cat debian/changelog >> debian/changelog.new; \ + mv debian/changelog.new debian/changelog + +printenv: + dh_testdir + @echo release = $(release) + @echo pkgversion = $(pkgversion) + @echo revisions = $(revisions) + @echo revision = $(revision) + @echo prev_revisions = $(prev_revisions) + @echo prev_revision = $(prev_revision) + @echo PREVPACKAGE = $(PREVPACKAGE) + @echo khsed = $(khsed) + @echo debver = $(debver) + @echo version = $(version) + @echo debnum = $(debnum) + @echo abinum = $(abinum) + @echo gitver = $(gitver) --- linux-source-2.6.15-2.6.15.orig/debian/bin/oldconfig +++ linux-source-2.6.15-2.6.15/debian/bin/oldconfig @@ -0,0 +1,69 @@ +#!/bin/bash + +# We have to be in the top level kernel source directory +if [ ! -f MAINTAINERS ] || [ ! -f Makefile ]; then + echo "This does not appear to be the kernel source directory." 1>&2 + exit 1 +fi + + +# One arg, and that's it. Just pass an architecture +if [ $# -ne 1 ]; then + echo "Usage: $0 " 1>&2 + exit 1 +fi + +arch="$1" + +case "$arch" in + sparc) + kernarch="sparc64" + ;; + amd64) + kernarch="x86_64" + ;; + hppa) + kernarch="parisc" + ;; + *) + kernarch="$arch" + ;; +esac + +confdir="debian/config/$arch" + +# Make sure the architecture exists +if [ ! -d $confdir ]; then + echo "Could not find config directory for $arch" 1>&2 + exit 1 +fi + +echo "Processing $arch ($kernarch) ... " + +configs=$(cd $confdir && ls config.*) + +if [ -f $confdir/config ]; then + for config in $configs; do + case $config in + *) + cat $confdir/config >> $confdir/$config + ;; + esac + done + rm -f $confdir/config +fi + +for config in $configs; do + echo "Running silentoldconfig for $config ... " + + cat $confdir/$config > .config + + make silentoldconfig ARCH=$kernarch + + cat .config > $confdir/$config +done + +echo "Running splitconfig.pl ... " +echo + +(cd $confdir ; ../../bin/splitconfig.pl) --- linux-source-2.6.15-2.6.15.orig/debian/bin/splitconfig.pl +++ linux-source-2.6.15-2.6.15/debian/bin/splitconfig.pl @@ -0,0 +1,110 @@ +#!/usr/bin/perl -w + +%configs = (); +%common = (); + +print "Reading config's ...\n"; + +opendir(DIR, "."); + +while (defined($config = readdir(DIR))) { + # Only config.* + next if $config !~ /^config\..*/; + # Nothing that is disabled, or remnant + next if $config =~ /.*\.(default|disabled|stub)$/; + # Server config's are standalone + #next if $config =~ /config.server-.*/; + + %{$configs{$config}} = (); + + print " processing $config ... "; + + open(CONFIG, "< $config"); + + while () { + /^#*\s*CONFIG_(\w+)[\s=](.*)$/ or next; + + ${$configs{$config}}{$1} = $2; + + $common{$1} = $2; + } + + close(CONFIG); + + print "done.\n"; +} + +closedir(DIR); + +print "\n"; + +print "Merging lists ... \n"; + +for $config (keys(%configs)) { + my %options = %{$configs{$config}}; + + print " processing $config ... "; + + for $key (keys(%common)) { + next if not defined $common{$key}; + + # If we don't have the common option, then it isn't + # common. If we do have that option, it must have the same + # value (this is where the old split.py was broken). It + # also did the common check while it was parsing files, so + # that there were cases where a non-common option was in + # common anyway (ordering). + if (not defined($options{$key})) { + undef $common{$key}; + } elsif ($common{$key} ne $options{$key}) { + undef $common{$key}; + } + } + + print "done.\n"; +} + +print "\n"; + +print "Creating common config ... "; + +open(COMMON, "> config"); +print COMMON "#\n# Common config options automatically generated by splitconf.pl\n#\n"; + +for $key (sort(keys(%common))) { + next if not defined $common{$key}; + + if ($common{$key} eq "is not set") { + print COMMON "# CONFIG_$key is not set\n"; + } else { + print COMMON "CONFIG_$key=$common{$key}\n"; + } +} +close(COMMON); + +print "done.\n\n"; + +print "Creating stub configs ...\n"; + +for $config (keys(%configs)) { + my %options = %{$configs{$config}}; + + print " processing $config ... "; + + open(STUB, "> $config"); + print STUB "#\n# Config options for $config automatically generated by splitconf.pl\n#\n"; + + for $key (sort(keys(%options))) { + next if defined $common{$key}; + + if ($options{$key} eq "is not set") { + print STUB "# CONFIG_$key is not set\n"; + } else { + print STUB "CONFIG_$key=$options{$key}\n"; + } + } + + close(STUB); + + print "done.\n"; +} --- linux-source-2.6.15-2.6.15.orig/debian/bin/getabis +++ linux-source-2.6.15-2.6.15/debian/bin/getabis @@ -0,0 +1,82 @@ +#!/bin/bash + +if [ "$#" != "2" ]; then + echo "Usage: $0 " 1>&2 + exit 1 +fi + +ver=$1 +revision=$2 +abi=$(echo $revision | awk -F. '{print $1}') + +verabi=$ver-$abi +verfull=$ver-$revision + +repo="http://archive.ubuntu.com/ubuntu/pool/main/l" +repo_ports="http://ports.ubuntu.com/ubuntu-ports/pool/main/l" + +WGET="wget --quiet -c" + +abidir="`pwd`/debian/abi/$verfull" +tmpdir="`pwd`/abi-tmp-$verfull" +origdir="`pwd`" + +test -d $tmpdir || mkdir $tmpdir + +getall() { + myrepo=$1 + arch=$2 + shift + shift + + mkdir -p $abidir/$arch + + for sub in $@; do + if [ -f $abidir/$arch/$sub ]; then + echo "Exists: $sub" + continue + fi + echo -n "Fetching $sub..." + cd $tmpdir + + test -f linux-image-${verabi}-${sub}_${verfull}_${arch}.deb || \ + $WGET $myrepo/linux-source-$ver/linux-image-${verabi}-${sub}_${verfull}_${arch}.deb + if [ "$?" = "0" ]; then + echo -n "extracting..." + dpkg-deb --extract linux-image-${verabi}-${sub}_${verfull}_${arch}.deb tmp + if [ -f tmp/boot/abi-* ]; then + mv tmp/boot/abi-* $abidir/$arch/$sub + else + echo -n "NO ABI FILE..." + fi + rm -rf tmp linux-image-${verabi}-${sub}_${verfull}_${arch}.deb + echo "done." + else + rm -f linux-image-${verabi}-${sub}_${verfull}_${arch}.deb + echo "FAILED." + fi + cd $origdir + done +} + +# MAIN + +# Setup abi directory +mkdir -p $abidir +echo $abi > $abidir/abiname + +# NOTE: The flavours are hardcoded, because they may have changed from the +# current build. + +# Main architectures +getall $repo powerpc powerpc{,-smp,64-smp} +getall $repo amd64 amd64-{generic,k8,xeon,server} +getall $repo i386 386 686 k7 server{,-bigiron} + + +# Ports +getall $repo_ports ia64 {itanium,mckinley}{,-smp} +getall $repo_ports hppa hppa{32,64}{,-smp} +getall $repo_ports sparc sparc64{,-smp} + +rm -rf $tmpdir --- linux-source-2.6.15-2.6.15.orig/debian/ChangeLog-2.6.15.6 +++ linux-source-2.6.15-2.6.15/debian/ChangeLog-2.6.15.6 @@ -0,0 +1,77 @@ +commit f0ad886be1b6b2288cfa100c317dc6e5ceb93fd9 +Author: Chris Wright +Date: Sun Mar 5 11:07:54 2006 -0800 + + Linux 2.6.15.6 + +commit b74ed9233e914d8b76216168e475a9df62c28ac2 +Author: Dave Jones +Date: Wed Mar 1 23:10:31 2006 -0500 + + [PATCH] mempolicy.c compile fix, make sure BITS_PER_BYTE is defined + + Gar.. + + mm/mempolicy.c: In function 'get_nodes': + mm/mempolicy.c:527: error: 'BITS_PER_BYTE' undeclared (first use in this function) + mm/mempolicy.c:527: error: (Each undeclared identifier is reported only once + mm/mempolicy.c:527: error: for each function it appears in.) + + About to retry a build with the below patch which should do the trick. + (How did this *ever* build?) + + Signed-off-by: Dave Jones + Signed-off-by: Chris Wright + +commit 166f00bf649517bb377b23e668b3fd52497f63d0 +Author: Chris Wright +Date: Wed Mar 1 23:19:25 2006 -0800 + + [PATCH] fs/nfs/direct.c compile fix + + Compile fix: + + fs/nfs/direct.c: In function 'nfs_get_user_pages': + fs/nfs/direct.c:110: warning: implicit declaration of function 'nfs_free_user_pages' + fs/nfs/direct.c: At top level: + fs/nfs/direct.c:127: warning: conflicting types for 'nfs_free_user_pages' + fs/nfs/direct.c:127: error: static declaration of 'nfs_free_user_pages' follows non-static declaration + fs/nfs/direct.c:110: error: previous implicit declaration of 'nfs_free_user_pages' was here + + This should now be the same as fix that's going upstream. + + Signed-off-by: Chris Wright + Acked-by: Trond Myklebust + +commit e8dc2c9e3c9ca640742630481329abb727f2dc6b +Author: Tony Luck +Date: Mon Feb 27 16:18:58 2006 -0800 + + [PATCH] die_if_kernel() can return (CVE-2006-0742) + + arch/ia64/kernel/unaligned.c erroneously marked die_if_kernel() + with a "noreturn" attribute ... which is silly (it returns whenever + the argument regs say that the fault happened in user mode, as one + might expect given the "if_kernel" part of its name!). Thanks to + Alan and Gareth for pointing this out. + + Signed-off-by: Tony Luck + Signed-off-by: Chris Wright + +commit 5a6a280d035bae8752c7bd00671132357eba0a02 +Author: Arnaldo Carvalho de Melo +Date: Mon Feb 27 18:28:00 2006 -0800 + + [PATCH] Don't reset rskq_defer_accept in reqsk_queue_alloc + + In 295f7324ff8d9ea58b4d3ec93b1aaa1d80e048a9 I moved defer_accept from + tcp_sock to request_queue and mistakingly reset it at reqsl_queue_alloc, causing + calls to setsockopt(TCP_DEFER_ACCEPT ) to be lost after bind, the fix is to + remove the zeroing of rskq_defer_accept from reqsl_queue_alloc. + + Thanks to Alexandra N. Kossovsky for + reporting and testing the suggested fix. + + Signed-off-by: Arnaldo Carvalho de Melo + Signed-off-by: Chris Wright + --- linux-source-2.6.15-2.6.15.orig/debian/control +++ linux-source-2.6.15-2.6.15/debian/control @@ -0,0 +1,834 @@ +Source: linux-source-2.6.15 +Section: devel +Priority: optional +Maintainer: Kyle McMartin +Standards-Version: 3.6.1 +Build-Depends: bzip2, debhelper (>= 3), xmlto, docbook-utils, gs, kernel-package (>= 9.001ubuntu14), module-init-tools, sharutils, transfig, kernel-wedge (>= 2.05ubuntu5), gcc-3.4-hppa64 [hppa], binutils-hppa64 [hppa], gcc-3.4 [hppa], gawk, m4 + +Package: linux-kernel-devel +Architecture: all +Section: devel +Priority: optional +Depends: build-essential, git-core, gitk, rsync, curl, openssh-client +Description: Linux kernel hacking dependencies + This is a dummy package that will install all possible packages + required to hack comfortably on the kernel. + +Package: linux-source-2.6.15 +Architecture: all +Section: devel +Priority: optional +Provides: linux-source, linux-source-2.6 +Depends: binutils, bzip2, coreutils | fileutils (>= 4.0) +Recommends: libc-dev, gcc, make +Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-dev +Description: Linux kernel source for version 2.6.15 with Ubuntu patches + This package provides the source code for the Linux kernel version 2.6.15. + . + You may configure the kernel to your setup by typing "make config" and + following instructions, but you could get ncursesX.X-dev and try "make + menuconfig" for a jazzier, and easier to use interface. There are options + to use QT or GNOME based configuration interfaces, but they need + additional packages to be installed. Also, please read the detailed + documentation in the file + /usr/share/doc/linux-source-2.6.15/README.headers.gz. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: linux-doc-2.6.15 +Architecture: all +Section: doc +Priority: optional +Provides: linux-doc-2.6 +Conflicts: linux-doc-2.6 +Replaces: linux-doc-2.6 +Depends: coreutils | fileutils (>= 4.0) +Description: Linux kernel specific documentation for version 2.6.15 + This package provides the various readme's in the 2.6.15 kernel + Documentation/ subdirectory: these typically contain kernel-specific + installation notes for some drivers for example. See + /usr/share/doc/linux-doc-2.6.15/Documentation/00-INDEX for a list of what + is contained in each file. Please read the Changes file, as it contains + information about the problems, which may result by upgrading your + kernel. + +Package: linux-headers-2.6.15-52 +Architecture: amd64 i386 powerpc sparc ia64 hppa +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0) +Provides: linux-headers, linux-headers-2.6 +Description: Header files related to Linux kernel version 2.6.15 + This package provides kernel header files for version 2.6.15, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for details + +Package: linux-headers-2.6.15-52-386 +Architecture: i386 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on 386 + This package provides kernel header files for version 2.6.15 on 386, for + sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for details. + +Package: linux-image-2.6.15-52-386 +Architecture: i386 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on 386. + This package contains the Linux kernel image for version 2.6.15 on 386, + the corresponding System.map file, and the modules built by the packager. + It also contains scripts that try to ensure that the system is not left + in a unbootable state after an update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-686 +Architecture: i386 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on PPro/Celeron/PII/PIII/PIV SMP/UP + This package provides kernel header files for version 2.6.15 on Pentium + Pro/Celeron/Pentium II/Pentium III/Pentium IV with SMP support, for sites + that want the latest kernel headers. + +Package: linux-image-2.6.15-52-686 +Architecture: i386 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on PPro/Celeron/PII/PIII/PIV SMP/UP + This package contains the Linux kernel image for version 2.6.15 on + Pentium Pro/Celeron/Pentium II/Pentium III/Pentium IV with SMP support, + the corresponding System.map file, and the modules built by the packager. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-k7 +Architecture: i386 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on AMD K7 SMP/UP + This package provides kernel header files for version 2.6.15 on AMD + Duron/Athlon/Sempron with SMP support, for sites that want the latest + kernel headers. + +Package: linux-image-2.6.15-52-k7 +Architecture: i386 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on AMD K7 SMP/UP + This package contains the Linux kernel image for version 2.6.15 on AMD + Duron/Athlon/Sempron with SMP support, the corresponding System.map file, and + the modules built by the packager. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-server-bigiron +Architecture: i386 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on BigIron Server Equipment + This package provides kernel header files for version 2.6.15 on BigIron + server equipment, for sites that want the latest kernel headers. + +Package: linux-image-2.6.15-52-server-bigiron +Architecture: i386 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on BigIron Server Equipment + This package contains the Linux kernel image for version 2.6.15 on + BigIron Server Equipment, the corresponding System.map file, and the + modules built by the packager. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + . + NOTE: This kernel is not for general 686 and AMD systems. It is a meant + for BIGSMP, ES7000 and Summit systems. These are systems where you have + more than 8 CPU's, you will need this kernel. + +Package: linux-headers-2.6.15-52-server +Architecture: i386 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on Server Equipment + This package provides kernel header files for version 2.6.15 on + server equipment, for sites that want the latest kernel headers. + +Package: linux-image-2.6.15-52-server +Architecture: i386 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on Server Equipment + This package contains the Linux kernel image for version 2.6.15 on + server equipment, the corresponding System.map file, and the + modules built by the packager. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-powerpc +Architecture: powerpc +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on PowerPC + This package provides kernel header files for version 2.6.15 on PowerPC, + for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for details. + +Package: linux-image-2.6.15-52-powerpc +Architecture: powerpc +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on PowerPC. + This package contains the Linux kernel image for version 2.6.15 on + PowerPC, the corresponding System.map file, and the modules built by the + packager. It also contains scripts that try to ensure that the system is + not left in a unbootable state after an update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on PowerPC SMP + This package provides kernel header files for version 2.6.15 on PowerPC + with SMP support, for sites that want the latest kernel headers. SMP + (symmetric multi-processing) is needed if you have multiple processors. + Please read /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-powerpc-smp +Architecture: powerpc +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on PowerPC SMP. + This package contains the Linux kernel image for version 2.6.15 on + PowerPC with SMP support, the corresponding System.map file, and the + modules built by the packager. SMP (symmetric multi-processing) is + needed if you have multiple processors. It also contains scripts that + try to ensure that the system is not left in a unbootable state after an + update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-powerpc64-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on PowerPC 64 SMP + This package provides kernel header files for version 2.6.15 on PowerPC + 64 with SMP support, for sites that want the latest kernel headers. SMP + (symmetric multi-processing) is needed if you have multiple processors. + Please read /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-powerpc64-smp +Architecture: powerpc +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on PowerPC 64 SMP. + This package contains the Linux kernel image for version 2.6.15 on + PowerPC 64 with SMP support, the corresponding System.map file, and the + modules built by the packager. SMP (symmetric multi-processing) is + needed if you have multiple processors. It also contains scripts that + try to ensure that the system is not left in a unbootable state after an + update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-amd64-k8 +Architecture: amd64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on AMD K8 + This package provides kernel header files for version 2.6.15 on AMD + Athlon64/Athlon FX/Opteron, for sites that want the latest kernel + headers. Please read + /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for details. + +Package: linux-image-2.6.15-52-amd64-k8 +Architecture: amd64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on AMD K8. + This package contains the Linux kernel image for version 2.6.15 on AMD + Athlon64/Athlon FX/Opteron, the corresponding System.map file, and the + modules built by the packager. It also contains scripts that try to + ensure that the system is not left in a unbootable state after an update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-amd64-server +Architecture: amd64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on Server Equipment + This package provides kernel header files for version 2.6.15 on + server equipment, for sites that want the latest kernel headers. + +Package: linux-image-2.6.15-52-amd64-server +Architecture: amd64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on Server Equipment + This package contains the Linux kernel image for version 2.6.15 on + server equipment, the corresponding System.map file, and the + modules built by the packager. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-amd64-generic +Architecture: amd64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on x86_64 + This package provides kernel header files for version 2.6.15 on the + x86_64 architecture, for sites that want the latest kernel headers. + Please read /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-amd64-generic +Architecture: amd64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on x86_64. + This package contains the Linux kernel image for version 2.6.15 on the + x86_64 architecture, the corresponding System.map file, and the modules + built by the packager. It also contains scripts that try to ensure that + the system is not left in a unbootable state after an update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for a + powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + +Package: linux-headers-2.6.15-52-amd64-xeon +Architecture: amd64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on Intel x86_64 + This package provides kernel header files for version 2.6.15 on Intel + Xeon DP, for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for details + +Package: linux-image-2.6.15-52-amd64-xeon +Architecture: amd64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on Intel x86_64. + This package contains the Linux kernel image for version 2.6.15 on Intel + Xeon DP, the corresponding System.map file, and the modules built by the + packager. It also contains scripts that try to ensure that the system is + not left in a unbootable state after an update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for a + powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + +Package: linux-headers-2.6.15-52-sparc64 +Architecture: sparc +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on uniprocessor 64-bit SPARC + This package provides kernel header files for version 2.6.15 on the 64-bit + SPARC architecture, used to build out-of-tree kernel modules. If you have + more than one processor, you want the linux-headers-2.6.15-52-sparc64-smp + package. + . + Please read /usr/share/doc/linux-headers-2.6.15-52-sparc64/debian.README.gz + for details. + +Package: linux-image-2.6.15-52-sparc64 +Architecture: sparc +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Suggests: silo, fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel binary image for UltraSPARC (sparc64) systems + This package contains the Linux kernel image, the System.map file, + and the modules built by the packager. It also contains scripts that + try to ensure that the system is not left in a unbootable state + after an update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for a + powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + . + NOTE: This kernel is strictly for UltraSPARC (sparc64) class systems. If you + do not have an UltraSPARC, then most likely you want the sparc32 image. See + linux-image-2.6-sparc32. + +Package: linux-headers-2.6.15-52-sparc64-smp +Architecture: sparc +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Header files for Linux kernel 2.6.15 on multiprocessor 64-bit SPARC + This package provides kernel header files for version 2.6.15 on the 64-bit + SPARC architecture, used to build out-of-tree kernel modules. If you only + have one processor, you want the linux-headers-2.6.15-52-sparc64 package + instead. + . + Please read /usr/share/doc/linux-headers-2.6.15-52-sparc64-smp/debian.README.gz + for details. + +Package: linux-image-2.6.15-52-sparc64-smp +Architecture: sparc +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Suggests: silo, fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel binary image for SMP UltraSPARC (sparc64) systems + This package contains the Linux kernel image, the System.map file, + and the modules built by the packager. It also contains scripts that + try to ensure that the system is not left in a unbootable state + after an update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and SILO, for a + powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + . + NOTE: This kernel is strictly for UltraSPARC (sparc64) class systems. If you + do not have an UltraSPARC, then most likely you want the sparc32 image, which + only exists for the 2.4 kernel series. See kernel-image-2.4-sparc32. + Also, this kernel is specifically for SMP (multiple processors) systems. If + you do not have more than one CPU, then choose the non-SMP kernel image. + +Package: linux-headers-2.6.15-52-itanium +Architecture: ia64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on Itanium + This package provides kernel header files for version 2.6.15 on + Itanium, + for sites that want the latest kernel headers. + Please read /usr/share/doc/linux-headers-2.6.15-52-itanium/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-itanium +Architecture: ia64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: elilo (>= 3.6-1) +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on Itanium + This package contains the Linux kernel image for version 2.6.15 on + Itanium, + the corresponding System.map file, and the modules built by the packager. + It also contains scripts that try to ensure that the system is not left in + a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + +Package: linux-headers-2.6.15-52-itanium-smp +Architecture: ia64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on Itanium SMP + This package provides kernel header files for version 2.6.15 on + Itanium with SMP support, + for sites that want the latest kernel headers. + SMP (symmetric multi-processing) is needed if you have multiple processors. + Please read + /usr/share/doc/linux-headers-2.6.15-52-itanium-smp/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-itanium-smp +Architecture: ia64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: elilo (>= 3.6-1) +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on Itanium SMP + This package contains the Linux kernel image for version 2.6.15 on + Itanium with SMP support, + the corresponding System.map file, and the modules built by the packager. + SMP (symmetric multi-processing) is needed if you have multiple processors. + It also contains scripts that try to ensure that the system is not left in + a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + +Package: linux-headers-2.6.15-52-mckinley +Architecture: ia64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on Itanium II + This package provides kernel header files for version 2.6.15 on + Itanium II (also known as McKinley), + for sites that want the latest kernel headers. + Please read + /usr/share/doc/linux-headers-2.6.15-52-mckinley/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-mckinley +Architecture: ia64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: elilo (>= 3.6-1) +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on Itanium II + This package contains the Linux kernel image for version 2.6.15 on + Itanium II (also known as McKinley), + the corresponding System.map file, and the modules built by the packager. + It also contains scripts that try to ensure that the system is not left in + a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + +Package: linux-headers-2.6.15-52-mckinley-smp +Architecture: ia64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on Itanium II SMP + This package provides kernel header files for version 2.6.15 on + Itanium II (also known as McKinleywith SMP support, + for sites that want the latest kernel headers. + SMP (symmetric multi-processing) is needed if you have multiple processors. + Please read + /usr/share/doc/linux-headers-2.6.15-52-mckinley-smp/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-mckinley-smp +Architecture: ia64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: elilo (>= 3.6-1) +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on Itanium II SMP + This package contains the Linux kernel image for version 2.6.15 on + Itanium II (also known as McKinley) with SMP support, + the corresponding System.map file, and the modules built by the packager. + SMP (symmetric multi-processing) is needed if you have multiple processors. + It also contains scripts that try to ensure that the system is not left in + a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + +Package: linux-headers-2.6.15-52-hppa32 +Architecture: hppa +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on HP PA-RISC 32-bit systems + This package provides kernel header files for version 2.6.15 on + HP PA-RISC 32-bit systems, for sites that want the latest kernel headers. + Please read /usr/share/doc/linux-headers-2.6.15-52-hppa32/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-hppa32 +Architecture: hppa +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4 +Depends: palo, initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils, module-init-tools +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on 32-bit PA-RISC + This package contains the Linux kernel image for version 2.6.15 on + 32-bit HP PA-RISC, the corresponding System.map file, and the modules + built by the packager. It also contains scripts that try to ensure that + the system is not left in a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to create a + custom kernel from the sources. + +Package: linux-headers-2.6.15-52-hppa64 +Architecture: hppa +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on HP PA-RISC 64-bit systems + This package provides kernel header files for version 2.6.15 on + HP PA-RISC 64-bit systems, for sites that want the latest kernel headers. + Please read /usr/share/doc/linux-headers-2.6.15-52-hppa64/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-hppa64 +Architecture: hppa +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4 +Depends: palo, initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils, module-init-tools +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on 64-bit PA-RISC + This package contains the Linux kernel image for version 2.6.15 on + 64-bit HP PA-RISC, the corresponding System.map file, and the modules + built by the packager. It also contains scripts that try to ensure that + the system is not left in a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to create a + custom kernel from the sources. + +Package: linux-headers-2.6.15-52-hppa32-smp +Architecture: hppa +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on HP PA-RISC 32-bit SMP systems + This package provides kernel header files for version 2.6.15 on + HP PA-RISC 32-bit SMP systems, for sites that want the latest kernel headers. + Please read /usr/share/doc/linux-headers-2.6.15-52-hppa32-smp/debian.README.gz + for details. + +Package: linux-image-2.6.15-52-hppa32-smp +Architecture: hppa +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4 +Depends: palo, initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils, module-init-tools +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on 32-bit PA-RISC SMP + This package contains the Linux kernel image for version 2.6.15 on + 32-bit HP PA-RISC SMP, the corresponding System.map file, and the modules + built by the packager. It also contains scripts that try to ensure that + the system is not left in a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to create a + custom kernel from the sources. + +Package: linux-headers-2.6.15-52-hppa64-smp +Architecture: hppa +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on HP PA-RISC 64-bit SMP systems + This package provides kernel header files for version 2.6.15 on + HP PA-RISC 64-bit SMP systems, for sites that want the latest kernel headers. + Please read /usr/share/doc/linux-headers-2.6.15-52-hppa64-smp/debian.README.gz + for details. + +Package: linux-image-2.6.15-52-hppa64-smp +Architecture: hppa +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4 +Depends: palo, initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils, module-init-tools +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on 64-bit PA-RISC SMP + This package contains the Linux kernel image for version 2.6.15 on + 64-bit HP PA-RISC SMP, the corresponding System.map file, and the modules + built by the packager. It also contains scripts that try to ensure that + the system is not left in a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to create a + custom kernel from the sources. --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/package-list +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/package-list @@ -0,0 +1,21 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image + +Package: fat-modules +Priority: standard + +Package: nic-modules +Depends: kernel-image, nic-shared-modules, firmware-modules, firewire-core-modules, crc-modules + +Package: nic-pcmcia-modules +Depends: kernel-image, nic-shared-modules, nic-modules, firmware-modules, pcmcia-modules + +Package: scsi-modules +Depends: kernel-image, isa-pnp-modules, scsi-core-modules, parport-modules, cdrom-core-modules, firmware-modules + +Package: irda-modules +Depends: kernel-image, ppp-modules, usb-modules, nic-shared-modules --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/nic-usb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/nic-usb-modules @@ -0,0 +1 @@ +#include "shared/nic-usb-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/scsi-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/scsi-modules @@ -0,0 +1 @@ +#include "shared/scsi-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/ufs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/ufs-modules @@ -0,0 +1 @@ +#include "shared/ufs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/jfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/jfs-modules @@ -0,0 +1 @@ +#include "shared/jfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/parport-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/parport-modules @@ -0,0 +1 @@ +#include "shared/parport-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/crc-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/crc-modules @@ -0,0 +1 @@ +#include "shared/crc-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/pcmcia-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/pcmcia-modules @@ -0,0 +1 @@ +#include "shared/pcmcia-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/irda-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/irda-modules @@ -0,0 +1 @@ +#include "shared/irda-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/cdrom-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/cdrom-core-modules @@ -0,0 +1 @@ +#include "shared/cdrom-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/nic-shared-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/nic-shared-modules @@ -0,0 +1 @@ +#include "shared/nic-shared-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/sata-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/sata-modules @@ -0,0 +1 @@ +#include "shared/sata-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/nic-pcmcia-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/nic-pcmcia-modules @@ -0,0 +1 @@ +#include "shared/nic-pcmcia-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/plip-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/plip-modules @@ -0,0 +1 @@ +#include "shared/plip-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/acpi-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/acpi-modules @@ -0,0 +1 @@ +#include "shared/acpi-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/ipv6-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/ipv6-modules @@ -0,0 +1 @@ +#include "shared/ipv6-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/fat-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/fat-modules @@ -0,0 +1 @@ +#include "shared/fat-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/serial-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/serial-modules @@ -0,0 +1 @@ +#include "shared/serial-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/nic-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/nic-modules @@ -0,0 +1 @@ +#include "shared/nic-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/md-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/md-modules @@ -0,0 +1 @@ +#include "shared/md-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/pcmcia-storage-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/pcmcia-storage-modules @@ -0,0 +1 @@ +#include "shared/pcmcia-storage-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/ppp-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/ppp-modules @@ -0,0 +1 @@ +#include "shared/ppp-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/fb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/fb-modules @@ -0,0 +1,3 @@ +fbcon +vesafb +vga16fb --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/floppy-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/floppy-modules @@ -0,0 +1 @@ +#include "shared/floppy-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/xfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/xfs-modules @@ -0,0 +1 @@ +#include "shared/xfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/cdrom-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/cdrom-modules @@ -0,0 +1,10 @@ +aztcd +cdu31a +cm206 +gscd +isp16 +mcdx +optcd +sbpcd +sjcd +sonycd535 --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/ntfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/ntfs-modules @@ -0,0 +1 @@ +#include "shared/ntfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/nfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/nfs-modules @@ -0,0 +1 @@ +#include "shared/nfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/ext2-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/ext2-modules @@ -0,0 +1 @@ +#include "shared/ext2-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/usb-storage-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/usb-storage-modules @@ -0,0 +1 @@ +#include "shared/usb-storage-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/loop-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/loop-modules @@ -0,0 +1 @@ +#include "shared/loop-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/reiserfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/reiserfs-modules @@ -0,0 +1 @@ +#include "shared/reiserfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/input-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/input-modules @@ -0,0 +1 @@ +#include "shared/input-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/ext3-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/ext3-modules @@ -0,0 +1 @@ +#include "shared/ext3-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/ide-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/ide-modules @@ -0,0 +1 @@ +#include "shared/ide-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/usb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/usb-modules @@ -0,0 +1 @@ +#include "shared/usb-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/firewire-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/firewire-core-modules @@ -0,0 +1 @@ +#include "shared/firewire-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/socket-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/socket-modules @@ -0,0 +1 @@ +#include "shared/socket-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/modules/i386/scsi-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/modules/i386/scsi-core-modules @@ -0,0 +1 @@ +#include "shared/scsi-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/firmware/i386/nic-firmware +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/firmware/i386/nic-firmware @@ -0,0 +1 @@ +#include "shared/nic-firmware" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/i386/kernel-versions +++ linux-source-2.6.15-2.6.15/debian/d-i/i386/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +i386 2.6.15-52 386 2.6.15-52-386 - --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/package-list +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/package-list @@ -0,0 +1,34 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides: rtc-modules + +Package: fs-common-modules +Depends: kernel-image +Priority: standard +Description: Common filesystem support + This package contains drivers common to several filesystem modules. + +Package: ext2-modules +Depends: kernel-image, fs-common-modules +Priority: standard +Description: EXT2 filesystem support + This package contains the EXT2 filesystem module for the Linux kernel. + +Package: ext3-modules +Depends: kernel-image, fs-common-modules +Priority: standard +Description: EXT3 filesystem support + This package contains the EXT3 filesystem module for the Linux kernel. + +Package: fat-modules +Priority: standard + +Package: nic-modules +Depends: kernel-image, nic-shared-modules, firmware-modules, firewire-core-modules, crc-modules + +Package: scsi-modules +Depends: kernel-image, isa-pnp-modules, scsi-core-modules, parport-modules, cdrom-core-modules, firmware-modules --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/nic-usb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/nic-usb-modules @@ -0,0 +1 @@ +#include "shared/nic-usb-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/scsi-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/scsi-modules @@ -0,0 +1 @@ +#include "shared/scsi-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/ufs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/ufs-modules @@ -0,0 +1 @@ +#include "shared/ufs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/jfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/jfs-modules @@ -0,0 +1 @@ +#include "shared/jfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/parport-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/parport-modules @@ -0,0 +1 @@ +#include "shared/parport-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/firmware-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/firmware-modules @@ -0,0 +1 @@ +#include "shared/firmware-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/crc-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/crc-modules @@ -0,0 +1 @@ +#include "shared/crc-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/pcmcia-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/pcmcia-modules @@ -0,0 +1 @@ +#include "shared/pcmcia-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/irda-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/irda-modules @@ -0,0 +1,9 @@ +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irtty-sir +sir-dev +stir4200 --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/cdrom-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/cdrom-core-modules @@ -0,0 +1 @@ +#include "shared/cdrom-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/nic-shared-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/nic-shared-modules @@ -0,0 +1 @@ +#include "shared/nic-shared-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/sata-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/sata-modules @@ -0,0 +1 @@ +#include "shared/sata-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/plip-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/plip-modules @@ -0,0 +1 @@ +#include "shared/plip-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/ipv6-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/ipv6-modules @@ -0,0 +1 @@ +#include "shared/ipv6-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/fat-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/fat-modules @@ -0,0 +1 @@ +#include "shared/fat-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/serial-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/serial-modules @@ -0,0 +1 @@ +#include "shared/serial-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/nic-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/nic-modules @@ -0,0 +1 @@ +#include "shared/nic-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/md-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/md-modules @@ -0,0 +1 @@ +#include "shared/md-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/ppp-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/ppp-modules @@ -0,0 +1 @@ +#include "shared/ppp-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/fb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/fb-modules @@ -0,0 +1 @@ +fbcon --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/xfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/xfs-modules @@ -0,0 +1 @@ +#include "shared/xfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/ntfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/ntfs-modules @@ -0,0 +1 @@ +#include "shared/ntfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/nfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/nfs-modules @@ -0,0 +1 @@ +#include "shared/nfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/ext2-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/ext2-modules @@ -0,0 +1 @@ +#include "shared/ext2-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/usb-storage-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/usb-storage-modules @@ -0,0 +1 @@ +#include "shared/usb-storage-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/loop-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/loop-modules @@ -0,0 +1 @@ +#include "shared/loop-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/reiserfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/reiserfs-modules @@ -0,0 +1 @@ +#include "shared/reiserfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/input-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/input-modules @@ -0,0 +1 @@ +#include "shared/input-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/ext3-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/ext3-modules @@ -0,0 +1 @@ +#include "shared/ext3-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/ide-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/ide-modules @@ -0,0 +1 @@ +#include "shared/ide-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/usb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/usb-modules @@ -0,0 +1 @@ +#include "shared/usb-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/firewire-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/firewire-core-modules @@ -0,0 +1 @@ +#include "shared/firewire-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/modules/ia64/scsi-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/modules/ia64/scsi-core-modules @@ -0,0 +1 @@ +#include "shared/scsi-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/firmware/ia64/nic-firmware +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/firmware/ia64/nic-firmware @@ -0,0 +1 @@ +#include "shared/nic-firmware" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/ia64/kernel-versions +++ linux-source-2.6.15-2.6.15/debian/d-i/ia64/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +ia64 2.6.15-52 itanium-smp 2.6.15-52-itanium-smp - --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/package-list +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/package-list @@ -0,0 +1,41 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides: rtc-modules + +Package: fs-common-modules +Depends: kernel-image +Priority: standard +Description: Common filesystem support + This package contains drivers common to several filesystem modules. + +Package: fat-modules +Depends: kernel-image, fs-common-modules + +Package: hfs-modules +Depends: kernel-image, fs-common-modules + +Package: ext2-modules +Depends: kernel-image, fs-common-modules + +Package: ext3-modules +Depends: kernel-image, fs-common-modules + +# due to isofs +Package: ide-modules +Depends: kernel-image, fs-common-modules + +Package: jfs-modules +Depends: kernel-image, fs-common-modules + +Package: nic-modules +Depends: kernel-image, nic-shared-modules, firmware-modules, firewire-core-modules, crc-modules + +Package: nic-pcmcia-modules +Depends: kernel-image, nic-shared-modules, pcmcia-modules, nic-modules + +Package: scsi-modules +Depends: kernel-image, isa-pnp-modules, scsi-core-modules, parport-modules, cdrom-core-modules, firmware-modules --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/nic-usb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/nic-usb-modules @@ -0,0 +1 @@ +#include "shared/nic-usb-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/scsi-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/scsi-modules @@ -0,0 +1 @@ +#include "shared/scsi-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/fs-common-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/fs-common-modules @@ -0,0 +1 @@ +nls_utf8 --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/ufs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/ufs-modules @@ -0,0 +1 @@ +#include "shared/ufs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/jfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/jfs-modules @@ -0,0 +1 @@ +#include "shared/jfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/crc-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/crc-modules @@ -0,0 +1 @@ +#include "shared/crc-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/pcmcia-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/pcmcia-modules @@ -0,0 +1 @@ +#include "shared/pcmcia-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/irda-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/irda-modules @@ -0,0 +1,12 @@ +ali-ircc +ircomm +ircomm-tty +irda +irlan +irnet +irtty-sir +nsc-ircc +sir-dev +smsc-ircc2 +via-ircc +w83977af_ir --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/cdrom-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/cdrom-core-modules @@ -0,0 +1 @@ +#include "shared/cdrom-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/nic-shared-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/nic-shared-modules @@ -0,0 +1 @@ +#include "shared/nic-shared-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/sata-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/sata-modules @@ -0,0 +1 @@ +#include "shared/sata-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/nic-pcmcia-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/nic-pcmcia-modules @@ -0,0 +1 @@ +#include "shared/nic-pcmcia-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/ipv6-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/ipv6-modules @@ -0,0 +1 @@ +#include "shared/ipv6-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/fat-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/fat-modules @@ -0,0 +1 @@ +#include "shared/fat-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/serial-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/serial-modules @@ -0,0 +1 @@ +#include "shared/serial-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/nic-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/nic-modules @@ -0,0 +1 @@ +#include "shared/nic-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/md-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/md-modules @@ -0,0 +1 @@ +#include "shared/md-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/pcmcia-storage-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/pcmcia-storage-modules @@ -0,0 +1 @@ +#include "shared/pcmcia-storage-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/ppp-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/ppp-modules @@ -0,0 +1 @@ +#include "shared/ppp-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/fb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/fb-modules @@ -0,0 +1 @@ +rivafb --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/affs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/affs-modules @@ -0,0 +1 @@ +affs --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/floppy-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/floppy-modules @@ -0,0 +1 @@ +#include "shared/floppy-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/xfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/xfs-modules @@ -0,0 +1 @@ +#include "shared/xfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/nfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/nfs-modules @@ -0,0 +1 @@ +#include "shared/nfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/ext2-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/ext2-modules @@ -0,0 +1 @@ +#include "shared/ext2-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/usb-storage-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/usb-storage-modules @@ -0,0 +1 @@ +#include "shared/usb-storage-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/loop-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/loop-modules @@ -0,0 +1 @@ +#include "shared/loop-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/reiserfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/reiserfs-modules @@ -0,0 +1 @@ +#include "shared/reiserfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/input-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/input-modules @@ -0,0 +1 @@ +#include "shared/input-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/ext3-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/ext3-modules @@ -0,0 +1 @@ +#include "shared/ext3-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/ide-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/ide-modules @@ -0,0 +1,17 @@ +aec62xx +cmd64x +generic +hpt34x +hpt366 +ide-disk +ide-floppy +ide-tape +isofs +ns87415 +pdc202xx_new +pdc202xx_old +sc1200 +siimage +sl82c105 +trm290 +via82cxxx --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/usb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/usb-modules @@ -0,0 +1 @@ +#include "shared/usb-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/firewire-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/firewire-core-modules @@ -0,0 +1 @@ +#include "shared/firewire-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/socket-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/socket-modules @@ -0,0 +1 @@ +#include "shared/socket-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/scsi-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/scsi-core-modules @@ -0,0 +1 @@ +#include "shared/scsi-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/modules/powerpc/hfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/modules/powerpc/hfs-modules @@ -0,0 +1,2 @@ +hfs +hfsplus --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/firmware/powerpc/nic-firmware +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/firmware/powerpc/nic-firmware @@ -0,0 +1 @@ +#include "shared/nic-firmware" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/powerpc/kernel-versions +++ linux-source-2.6.15-2.6.15/debian/d-i/powerpc/kernel-versions @@ -0,0 +1,3 @@ +# arch version flavour installedname suffix build-depends +powerpc 2.6.15-52 powerpc 2.6.15-52-powerpc - +powerpc 2.6.15-52 powerpc64-smp 2.6.15-52-powerpc64-smp - --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/nic-usb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/nic-usb-modules @@ -0,0 +1,6 @@ +catc ? +kaweth ? +pegasus ? +prism2_usb ? +rtl8150 ? +usbnet ? --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/scsi-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/scsi-modules @@ -0,0 +1,83 @@ +3w-9xxx ? +3w-xxxx ? +53c700 ? +a100u2w ? +aacraid ? +advansys ? +aha1542 ? +aha1740 ? +aic79xx ? +aic7xxx ? +aic7xxx_old ? +aic94xx ? +arcmsr ? +atp870u ? +BusLogic ? +cciss ? +ch ? +cpqarray ? +DAC960 ? +dc395x ? +dmx3191d ? +dpt_i2o ? +eata ? +eata_pio ? +esp ? +fd_mcs ? +fdomain ? +gdth ? +g_NCR5380 ? +i2o_block ? +i2o_config ? +i2o_core ? +i2o_proc ? +i2o_scsi ? +imm ? +in2000 ? +ipr ? +ips ? +lasi700 ? +mac53c94 ? +mca_53c9x ? +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mesh ? +mptspi ? +mptscsih ? +mptfc ? +mptsas ? +mptctl ? +mptlan ? +NCR53c406a ? +NCR53C9x ? +osst +pas16 ? +ppa ? +psi240i ? +qla1280 ? +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogicfas ? +qlogicfas408 ? +qlogicfc ? +qlogicisp ? +sas_class ? +scsi_transport_fc +scsi_transport_spi ? +scsi_transport_iscsi ? +sg +sim710 ? +st +sym53c8xx +t128 ? +tmscsim ? +u14-34f ? +ultrastor ? +wd7000 ? +zalon7xx ? --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/ufs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/ufs-modules @@ -0,0 +1 @@ +ufs --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/jfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/jfs-modules @@ -0,0 +1 @@ +jfs --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/parport-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/parport-modules @@ -0,0 +1,3 @@ +parport +parport_pc +parport_sunbpp ? --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/firmware-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/firmware-modules @@ -0,0 +1 @@ +efivars ? --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/crc-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/crc-modules @@ -0,0 +1 @@ +crc-ccitt ? --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/pcmcia-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/pcmcia-modules @@ -0,0 +1,8 @@ +i82092 +i82365 ? +pcmcia +pcmcia_core +pd6729 +rsrc_nonstatic +tcic ? +yenta_socket --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/irda-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/irda-modules @@ -0,0 +1,26 @@ +act200l-sir +actisys-sir +ali-ircc +donauboe ? +esi-sir +girbil-sir +ircomm +ircomm-tty +irda +irda-usb +irlan +irnet +irport +irtty-sir +litelink-sir +ma600-sir +mcp2120-sir +nsc-ircc +old_belkin-sir +sir-dev +smsc-ircc2 +stir4200 +tekram-sir +via-ircc +vlsi_ir +w83977af_ir --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/cdrom-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/cdrom-core-modules @@ -0,0 +1,3 @@ +cdrom ? +ide-cd ? +sr_mod ? --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/rtc-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/rtc-modules @@ -0,0 +1,2 @@ +genrtc ? +rtc ? --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/nic-shared-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/nic-shared-modules @@ -0,0 +1,2 @@ +8390 +mii ? --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/sata-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/sata-modules @@ -0,0 +1,15 @@ +ahci ? +ata_piix ? +libata +sata_mv ? +sata_nv ? +sata_promise +sata_qstor +sata_sil +sata_sis +sata_svw ? +sata_sx4 +sata_uli +sata_via +sata_vsc +sx8 --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/nic-pcmcia-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/nic-pcmcia-modules @@ -0,0 +1,19 @@ +3c574_cs ? +3c589_cs ? +airo_cs ? +atmel_cs ? +axnet_cs ? +com20020_cs ? +fmvj18x_cs ? +ibmtr_cs ? +netwave_cs ? +nmclan_cs ? +orinoco_cs ? +pcnet_cs ? +ray_cs ? +smc91c92_cs ? +wavelan_cs ? +wl3501_cs ? +xirc2ps_cs ? +xircom_cb ? +xircom_tulip_cb ? --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/plip-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/plip-modules @@ -0,0 +1 @@ +plip --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/acpi-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/acpi-modules @@ -0,0 +1,2 @@ +fan +thermal --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/ipv6-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/ipv6-modules @@ -0,0 +1 @@ +ipv6 --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/fat-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/fat-modules @@ -0,0 +1,4 @@ +fat +nls_cp437 +nls_iso8859-1 +vfat --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/serial-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/serial-modules @@ -0,0 +1,3 @@ +generic_serial ? +serial_cs ? +synclink_cs ? --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/nic-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/nic-modules @@ -0,0 +1,140 @@ +3c359 ? +3c501 ? +3c503 ? +3c505 ? +3c507 ? +3c509 ? +3c515 ? +3c523 ? +3c527 ? +3c59x +8139cp ? +8139too +82596 ? +abyss ? +ac3200 ? +acx_pci ? +airo ? +airport ? +amd8111e ? +arc4 ? +arcnet ? +arc-rawmode ? +arc-rimi ? +arlan ? +at1700 ? +atmel ? +atmel_pci ? +b44 +bcm43xx ? +bmac ? +bnx2 +bonding ? +cassini ? +com20020 ? +com20020-pci ? +com90io ? +com90xx ? +cs89x0 ? +de2104x ? +de4x5 ? +de600 ? +de620 ? +defxx ? +depca ? +dl2k +dmfe ? +dummy ? +e100 +e1000 +e2100 ? +eepro ? +eepro100 ? +eexpress ? +epic100 +eql ? +es3210 ? +eth1394 ? +eth16i ? +ewrk3 ? +fealnx +forcedeth ? +hamachi ? +hermes ? +hp ? +hp100 ? +hp-plus ? +ibmtr ? +ieee80211_crypt_ccmp ? +ieee80211_crypt_tkip ? +ieee80211_crypt_wep ? +ipddp ? +ipw2100 ? +ipw2200 ? +ipw3945 ? +ixgb +lance ? +lanstreamer ? +lasi_82596 ? +lne390 ? +lp486e ? +mace ? +mv643xx_eth ? +myri_sbus ? +natsemi +ne ? +ne2 ? +ne2k-pci +ne3210 ? +netconsole ? +ni5010 ? +ni52 ? +ni65 ? +ns83820 +olympic ? +orinoco ? +orinoco_pci ? +orinoco_plx ? +orinoco_tmd ? +pcnet32 +prism54 ? +r1000 ? +r8169 ? +rfc1051 ? +rfc1201 ? +rrunner ? +s2io +shaper +sis190 +sis900 +skfp ? +skge +sk98lin ? +sky2 ? +smc9194 ? +smc-ultra ? +smc-ultra32 ? +starfire +strip ? +sunbmac ? +sundance +sungem ? +sungem_phy ? +sunhme ? +sunlance ? +sunqe ? +tg3 +tlan ? +tms380tr ? +tmspci ? +tulip +tun +typhoon ? +uli526x ? +via-rhine +via-velocity +wavelan ? +wd ? +winbond-840 ? +yellowfin +znet ? --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/md-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/md-modules @@ -0,0 +1,15 @@ +dm-crypt +dm-emc ? +dm-mirror +dm-mod +dm-multipath ? +dm-round-robin ? +dm-snapshot +linear +multipath +raid0 +raid1 +raid10 +raid5 +raid6 +xor --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/pcmcia-storage-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/pcmcia-storage-modules @@ -0,0 +1 @@ +ide-cs --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/ppp-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/ppp-modules @@ -0,0 +1,6 @@ +ppp_async +ppp_deflate +ppp_mppe +pppoe +pppox +ppp_synctty --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/floppy-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/floppy-modules @@ -0,0 +1 @@ +floppy --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/xfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/xfs-modules @@ -0,0 +1 @@ +xfs --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/ntfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/ntfs-modules @@ -0,0 +1 @@ +ntfs --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/nfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/nfs-modules @@ -0,0 +1,3 @@ +lockd +nfs +sunrpc --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/ext2-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/ext2-modules @@ -0,0 +1 @@ +ext2 --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/usb-storage-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/usb-storage-modules @@ -0,0 +1 @@ +usb-storage --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/loop-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/loop-modules @@ -0,0 +1,2 @@ +cloop +loop --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/reiserfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/reiserfs-modules @@ -0,0 +1 @@ +reiserfs --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/input-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/input-modules @@ -0,0 +1,12 @@ +atkbd ? +evdev +hil_kbd ? +hilkbd ? +hil_mlc ? +hp_sdc ? +hp_sdc_mlc ? +i8042 ? +mousedev ? +psmouse ? +usbhid ? +usbkbd ? --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/ext3-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/ext3-modules @@ -0,0 +1,2 @@ +ext3 +jbd --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/ide-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/ide-modules @@ -0,0 +1,31 @@ +aec62xx +alim15x3 +amd74xx ? +atiixp ? +cmd64x +cs5520 +cs5530 +cy82c693 +generic +hpt34x +hpt366 +ide-disk +ide-floppy +ide-generic +ide-tape +isofs +ns87415 +opti621 +pdc202xx_new +pdc202xx_old +piix +rz1000 ? +sc1200 +serverworks +sgiioc4 ? +siimage +sis5513 ? +slc90e66 +triflex +trm290 +via82cxxx --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/usb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/usb-modules @@ -0,0 +1,6 @@ +ehci-hcd +ohci-hcd +sl811-hcd +uhci-hcd ? +usbcore ? +usbserial ? --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/firewire-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/firewire-core-modules @@ -0,0 +1,3 @@ +ieee1394 +ohci1394 +sbp2 --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/socket-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/socket-modules @@ -0,0 +1 @@ +af_packet --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/modules/scsi-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/modules/scsi-core-modules @@ -0,0 +1,2 @@ +scsi_mod ? +sd_mod --- linux-source-2.6.15-2.6.15.orig/debian/d-i/shared/firmware/nic-firmware +++ linux-source-2.6.15-2.6.15/debian/d-i/shared/firmware/nic-firmware @@ -0,0 +1,29 @@ +atmel_at76c502-wpa.bin +atmel_at76c502.bin +atmel_at76c502_3com-wpa.bin +atmel_at76c502_3com.bin +atmel_at76c502d-wpa.bin +atmel_at76c502d.bin +atmel_at76c502e-wpa.bin +atmel_at76c502e.bin +atmel_at76c503-i3861.bin +atmel_at76c503-i3863.bin +atmel_at76c503-rfmd-0.90.2-140.bin +atmel_at76c503-rfmd-acc.bin +atmel_at76c503-rfmd.bin +atmel_at76c504.bin +atmel_at76c504_2958-wpa.bin +atmel_at76c504a_2958-wpa.bin +atmel_at76c504c-wpa.bin +atmel_at76c505-rfmd.bin +atmel_at76c505-rfmd2958.bin +atmel_at76c505a-rfmd2958.bin +atmel_at76c506-wpa.bin +atmel_at76c506.bin +ipw2200-bss.fw +ipw2200-ibss.fw +ipw2200-sniffer.fw +ipw2100-1.3-i.fw +ipw2100-1.3-p.fw +ipw2100-1.3.fw +isl3890 --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/package-list +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/package-list @@ -0,0 +1,10 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides: rtc-modules + +Package: nic-modules +Depends: kernel-image, nic-shared-modules, firmware-modules, firewire-core-modules, crc-modules --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/scsi-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/scsi-modules @@ -0,0 +1 @@ +#include "shared/scsi-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/parport-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/parport-modules @@ -0,0 +1 @@ +#include "shared/parport-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/crc-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/crc-modules @@ -0,0 +1 @@ +#include "shared/crc-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/cdrom-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/cdrom-core-modules @@ -0,0 +1 @@ +#include "shared/cdrom-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/nic-shared-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/nic-shared-modules @@ -0,0 +1 @@ +#include "shared/nic-shared-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/plip-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/plip-modules @@ -0,0 +1 @@ +#include "shared/plip-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/ipv6-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/ipv6-modules @@ -0,0 +1 @@ +#include "shared/ipv6-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/fat-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/fat-modules @@ -0,0 +1 @@ +#include "shared/fat-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/nic-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/nic-modules @@ -0,0 +1 @@ +#include "shared/nic-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/md-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/md-modules @@ -0,0 +1 @@ +#include "shared/md-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/ppp-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/ppp-modules @@ -0,0 +1 @@ +#include "shared/ppp-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/xfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/xfs-modules @@ -0,0 +1 @@ +#include "shared/xfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/nfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/nfs-modules @@ -0,0 +1 @@ +#include "shared/nfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/ext2-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/ext2-modules @@ -0,0 +1 @@ +#include "shared/ext2-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/usb-storage-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/usb-storage-modules @@ -0,0 +1 @@ +#include "shared/usb-storage-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/loop-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/loop-modules @@ -0,0 +1 @@ +cloop --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/reiserfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/reiserfs-modules @@ -0,0 +1 @@ +#include "shared/reiserfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/input-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/input-modules @@ -0,0 +1 @@ +#include "shared/input-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/ext3-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/ext3-modules @@ -0,0 +1 @@ +#include "shared/ext3-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/ide-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/ide-modules @@ -0,0 +1,18 @@ +alim15x3 +cmd64x +cs5520 +cs5530 +cy82c693 +generic +ide-disk +ide-floppy +ide-generic +ide-tape +isofs +ns87415 +pdc202xx_new +pdc202xx_old +serverworks +siimage +trm290 +via82cxxx --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/usb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/usb-modules @@ -0,0 +1 @@ +#include "shared/usb-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc64/scsi-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc64/scsi-core-modules @@ -0,0 +1 @@ +#include "shared/scsi-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc/cdrom-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc/cdrom-core-modules @@ -0,0 +1 @@ +#include "shared/cdrom-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc/plip-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc/plip-modules @@ -0,0 +1 @@ +#include "shared/plip-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc/ipv6-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc/ipv6-modules @@ -0,0 +1 @@ +#include "shared/ipv6-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc/fat-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc/fat-modules @@ -0,0 +1 @@ +#include "shared/fat-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc/nic-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc/nic-modules @@ -0,0 +1 @@ +#include "shared/nic-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc/md-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc/md-modules @@ -0,0 +1 @@ +#include "shared/md-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc/ppp-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc/ppp-modules @@ -0,0 +1 @@ +#include "shared/ppp-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc/xfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc/xfs-modules @@ -0,0 +1 @@ +#include "shared/xfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc/nfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc/nfs-modules @@ -0,0 +1 @@ +#include "shared/nfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc/ext2-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc/ext2-modules @@ -0,0 +1 @@ +#include "shared/ext2-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc/reiserfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc/reiserfs-modules @@ -0,0 +1 @@ +#include "shared/reiserfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc/ext3-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc/ext3-modules @@ -0,0 +1 @@ +#include "shared/ext3-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/modules/sparc/scsi-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/modules/sparc/scsi-core-modules @@ -0,0 +1 @@ +#include "shared/scsi-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/firmware/sparc/nic-firmware +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/firmware/sparc/nic-firmware @@ -0,0 +1 @@ +#include "shared/nic-firmware" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/sparc/kernel-versions +++ linux-source-2.6.15-2.6.15/debian/d-i/sparc/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +sparc 2.6.15-52 sparc64 2.6.15-52-sparc64 - --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/package-list +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/package-list @@ -0,0 +1,21 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image + +Package: fat-modules +Priority: standard + +Package: nic-modules +Depends: kernel-image, nic-shared-modules, firmware-modules, firewire-core-modules, crc-modules + +Package: nic-pcmcia-modules +Depends: kernel-image, nic-shared-modules, pcmcia-modules, firmware-modules, nic-modules + +Package: scsi-modules +Depends: kernel-image, scsi-core-modules, parport-modules, cdrom-core-modules, firmware-modules + +Package: irda-modules +Depends: kernel-image, ppp-modules, usb-modules, nic-shared-modules --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/nic-usb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/nic-usb-modules @@ -0,0 +1 @@ +#include "shared/nic-usb-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/scsi-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/scsi-modules @@ -0,0 +1 @@ +#include "shared/scsi-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/ufs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/ufs-modules @@ -0,0 +1 @@ +#include "shared/ufs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/jfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/jfs-modules @@ -0,0 +1 @@ +#include "shared/jfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/parport-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/parport-modules @@ -0,0 +1 @@ +#include "shared/parport-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/crc-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/crc-modules @@ -0,0 +1 @@ +#include "shared/crc-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/pcmcia-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/pcmcia-modules @@ -0,0 +1 @@ +#include "shared/pcmcia-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/irda-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/irda-modules @@ -0,0 +1 @@ +#include "shared/irda-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/cdrom-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/cdrom-core-modules @@ -0,0 +1 @@ +#include "shared/cdrom-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/nic-shared-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/nic-shared-modules @@ -0,0 +1 @@ +#include "shared/nic-shared-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/sata-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/sata-modules @@ -0,0 +1 @@ +#include "shared/sata-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/nic-pcmcia-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/nic-pcmcia-modules @@ -0,0 +1 @@ +#include "shared/nic-pcmcia-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/plip-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/plip-modules @@ -0,0 +1 @@ +#include "shared/plip-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/acpi-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/acpi-modules @@ -0,0 +1 @@ +#include "shared/acpi-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/ipv6-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/ipv6-modules @@ -0,0 +1 @@ +#include "shared/ipv6-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/fat-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/fat-modules @@ -0,0 +1 @@ +#include "shared/fat-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/serial-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/serial-modules @@ -0,0 +1 @@ +#include "shared/serial-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/nic-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/nic-modules @@ -0,0 +1 @@ +#include "shared/nic-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/md-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/md-modules @@ -0,0 +1 @@ +#include "shared/md-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/pcmcia-storage-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/pcmcia-storage-modules @@ -0,0 +1 @@ +#include "shared/pcmcia-storage-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/ppp-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/ppp-modules @@ -0,0 +1 @@ +#include "shared/ppp-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/fb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/fb-modules @@ -0,0 +1,3 @@ +fbcon +vesafb +vga16fb --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/floppy-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/floppy-modules @@ -0,0 +1 @@ +#include "shared/floppy-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/xfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/xfs-modules @@ -0,0 +1 @@ +#include "shared/xfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/ntfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/ntfs-modules @@ -0,0 +1 @@ +#include "shared/ntfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/nfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/nfs-modules @@ -0,0 +1 @@ +#include "shared/nfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/ext2-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/ext2-modules @@ -0,0 +1 @@ +#include "shared/ext2-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/usb-storage-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/usb-storage-modules @@ -0,0 +1 @@ +#include "shared/usb-storage-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/loop-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/loop-modules @@ -0,0 +1 @@ +#include "shared/loop-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/reiserfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/reiserfs-modules @@ -0,0 +1 @@ +#include "shared/reiserfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/input-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/input-modules @@ -0,0 +1 @@ +#include "shared/input-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/ext3-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/ext3-modules @@ -0,0 +1 @@ +#include "shared/ext3-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/ide-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/ide-modules @@ -0,0 +1 @@ +#include "shared/ide-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/usb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/usb-modules @@ -0,0 +1 @@ +#include "shared/usb-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/firewire-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/firewire-core-modules @@ -0,0 +1 @@ +#include "shared/firewire-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/socket-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/socket-modules @@ -0,0 +1 @@ +#include "shared/socket-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/modules/amd64/scsi-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/modules/amd64/scsi-core-modules @@ -0,0 +1 @@ +#include "shared/scsi-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/firmware/amd64/nic-firmware +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/firmware/amd64/nic-firmware @@ -0,0 +1 @@ +#include "shared/nic-firmware" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/amd64/kernel-versions +++ linux-source-2.6.15-2.6.15/debian/d-i/amd64/kernel-versions @@ -0,0 +1,2 @@ +# arch version flavour installedname suffix build-depends +amd64 2.6.15-52 amd64-generic 2.6.15-52-amd64-generic - --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/package-list +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/package-list @@ -0,0 +1,10 @@ +# This file is used to build up the control file. The kernel version and +# "-di" are appended to the package names. Section can be left out. So can +# architecture, which is derived from the files in the modules directory. +# It overwrites specifications from /usr/share/kernel-wedge/package-list. +# +Package: kernel-image +Provides: rtc-modules, nfs-modules + +Package: nic-modules +Depends: kernel-image, nic-shared-modules, firmware-modules, firewire-core-modules, crc-modules --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/scsi-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/scsi-modules @@ -0,0 +1 @@ +#include "shared/scsi-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/jfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/jfs-modules @@ -0,0 +1 @@ +#include "shared/jfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/crc-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/crc-modules @@ -0,0 +1 @@ +#include "shared/crc-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/cdrom-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/cdrom-core-modules @@ -0,0 +1 @@ +#include "shared/cdrom-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/nic-shared-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/nic-shared-modules @@ -0,0 +1 @@ +#include "shared/nic-shared-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/ipv6-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/ipv6-modules @@ -0,0 +1 @@ +#include "shared/ipv6-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/nic-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/nic-modules @@ -0,0 +1 @@ +#include "shared/nic-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/md-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/md-modules @@ -0,0 +1 @@ +#include "shared/md-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/ppp-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/ppp-modules @@ -0,0 +1 @@ +#include "shared/ppp-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/xfs-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/xfs-modules @@ -0,0 +1 @@ +#include "shared/xfs-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/ext2-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/ext2-modules @@ -0,0 +1 @@ +#include "shared/ext2-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/usb-storage-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/usb-storage-modules @@ -0,0 +1 @@ +#include "shared/usb-storage-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/loop-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/loop-modules @@ -0,0 +1 @@ +#include "shared/loop-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/input-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/input-modules @@ -0,0 +1 @@ +#include "shared/input-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/ext3-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/ext3-modules @@ -0,0 +1 @@ +#include "shared/ext3-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/ide-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/ide-modules @@ -0,0 +1,5 @@ +ide-cs +ide-disk +ide-generic +isofs +ns87415 --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/usb-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/usb-modules @@ -0,0 +1 @@ +#include "shared/usb-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/modules/hppa/scsi-core-modules +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/modules/hppa/scsi-core-modules @@ -0,0 +1 @@ +#include "shared/scsi-core-modules" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/firmware/hppa/nic-firmware +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/firmware/hppa/nic-firmware @@ -0,0 +1 @@ +#include "shared/nic-firmware" --- linux-source-2.6.15-2.6.15.orig/debian/d-i/hppa/kernel-versions +++ linux-source-2.6.15-2.6.15/debian/d-i/hppa/kernel-versions @@ -0,0 +1,3 @@ +# arch version flavour installedname suffix build-depends +hppa 2.6.15-52 hppa32 2.6.15-52-hppa32 y +hppa 2.6.15-52 hppa64 2.6.15-52-hppa64 y --- linux-source-2.6.15-2.6.15.orig/debian/header-install +++ linux-source-2.6.15-2.6.15/debian/header-install @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +stem=${DEBIAN_STEM:-kernel} +version=${DEBIAN_UPSTREAM_VERSION} +pkg=$stem-headers-$version$debnum + +arch=$DEB_HOST_ARCH +case $arch in +amd64) + arch=x86_64 + ;; +hppa) + arch=parisc + ;; +esac + +cd "$DEBIAN_SRCTOP" +home="$OLDPWD" +{ + find . \ + -path './Documentation/*' -prune -o \ + -path './debian/*' -prune -o \ + -type f \( \ + -name 'Makefile*' -o -name 'Kconfig*' \ + -o -name '*.lds' \ + \) -print + echo arch/$arch/kernel/asm-offsets.s +} | cpio -pd --preserve-modification-time "$home" +cd "$home" +> scripts/Makefile + +find scripts -type f | xargs touch -t 9511212200 + +cd "$DEBIAN_SRCTOP" +dh_strip --package=$pkg --tmpdir=debian/tmp-headers +find "$home/scripts" -type f | xargs touch -t 9511212200 +dh_fixperms --package=$pkg --tmpdir=debian/tmp-headers --- linux-source-2.6.15-2.6.15.orig/debian/abi-install +++ linux-source-2.6.15-2.6.15/debian/abi-install @@ -0,0 +1,9 @@ +#!/bin/bash + +KSRC=${PWD} +KLIB=${PWD}/${IMAGE_TOP}/ +INSTALL_DATA="install -m 644 -o root -g root" +INSTALL_EXEC="install -m 755 -o root -g root" + +mkdir -p ${PWD}/${IMAGE_TOP}/boot/ +cp -L debian/abi-* ${PWD}/${IMAGE_TOP}/boot/ --- linux-source-2.6.15-2.6.15.orig/debian/post-install +++ linux-source-2.6.15-2.6.15/debian/post-install @@ -0,0 +1,97 @@ +#!/bin/sh + +set -e + +debhelper_pre() { + dh_clean -k --package="$1" + dh_installdirs --package="$1" +} + +debhelper_post() { + dh_installdocs --package="$1" + dh_installchangelogs --package="$1" + dh_compress --package="$1" + dh_fixperms --package="$1" + dh_shlibdeps --package="$1" + dh_installdeb --package="$1" + dh_gencontrol --package="$1" + dh_md5sums --package="$1" + dh_builddeb --package="$1" +} + + +stem=${STEM:-kernel} +suffix=${version#*$debnum-} +prefix=$DEBIAN_UPSTREAM_VERSION$debnum +pkg=$stem-headers-$version +top=$PWD/debian/$pkg +dir=$top/usr/src/$stem-headers-$version + +debhelper_pre $pkg + +mkdir -p $dir/include/linux + +cp -a .config $dir +echo $debnum-$suffix > $dir/.extraversion +cp -a Module.symvers $dir + +find . -mindepth 1 -maxdepth 1 \ + ! -name scripts \ + ! -name debian -a ! -name Documentation -a ! -name include -a \ + ! -name '.*' -a \( \ + -name Makefile -o -type d \) \ + -printf "../$stem-headers-$prefix/%f\n" | + xargs ln -s --target-directory=$dir + +cp -rp scripts $dir/ + +rm -f $dir/Makefile +cat Makefile | sed "s/^EXTRAVERSION *=[^$].*/EXTRAVERSION=$debnum-$suffix/" > $dir/Makefile + +cd include +find . -mindepth 1 -maxdepth 1 \ + ! -name config -a ! -name linux \ + -printf "../../$stem-headers-$prefix/include/%f\n" | + xargs ln -s --target-directory=$dir/include + +# fix asm link to the proper arch +KARCH=$(grep "^th-$KPKG_ARCH[[:space:]]" ../../../config/archmap | grep -v ^# | awk '{print $2}') + +cd $dir/include +rm -f asm +ln -sf asm-$KARCH asm +cd - > /dev/null 2>&1 + +cp -a config $dir/include +find linux -mindepth 1 -maxdepth 1 \ + ! -name autoconf.h -a \ + ! -name compile.h -a ! -name version.h \ + -printf "../../../$stem-headers-$prefix/include/linux/%f\n" | + xargs ln -s --target-directory=$dir/include/linux +cp -a linux/autoconf.h linux/compile.h \ + linux/version.h $dir/include/linux +cd .. + +mkdir -p $top/lib/modules/$version +ln -s /usr/src/$stem-headers-$version $top/lib/modules/$version/build + +debhelper_post $pkg + + +cd "$IMAGE_TOP/lib/modules/$version" +if [ -h source ]; then + rm source +fi +mkdir initrd +if [ -f kernel/drivers/video/vesafb.ko ]; then + ln kernel/drivers/video/vesafb.ko initrd +fi +if [ -f kernel/security/capability.ko ]; then + ln kernel/security/capability.ko initrd +fi + +cd ../../.. +mkdir -p lib/firmware/$version +for i in "$DEBIAN_SRCTOP"/debian/firmware/*/[[:lower:]]*; do + cp $i "lib/firmware/$version/${i##*/}" +done --- linux-source-2.6.15-2.6.15.orig/debian/copyright +++ linux-source-2.6.15-2.6.15/debian/copyright @@ -0,0 +1,37 @@ +This is the Debian GNU/Linux prepackaged version of the Linux kernel. +Linux was written by Linus Torvalds +and others. + +This package was put together by Simon Shapiro , from +sources retrieved from directories under +ftp.cs.helsinki.fi:/pub/Software/Linux/Kernel/ +The sources may be found at most Linux ftp sites, including +ftp://ftp.kernel.org/pub/linux/kernel/ + +This package was maintained by Herbert Xu +from March 1997 to Oct 2004. + +This package was then maintained by Fabio M. Di Nitto +with contribution from several people from Oct 2004 to Aug 2005. + +This package is currently maintained by the +Ubuntu Kernel Team + +Linux is copyrighted by Linus Torvalds and others. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 dated June, 1991. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. --- linux-source-2.6.15-2.6.15.orig/debian/control.stub +++ linux-source-2.6.15-2.6.15/debian/control.stub @@ -0,0 +1,834 @@ +Source: linux-source-2.6.15 +Section: devel +Priority: optional +Maintainer: Kyle McMartin +Standards-Version: 3.6.1 +Build-Depends: bzip2, debhelper (>= 3), xmlto, docbook-utils, gs, kernel-package (>= 9.001ubuntu14), module-init-tools, sharutils, transfig, kernel-wedge (>= 2.05ubuntu5), gcc-3.4-hppa64 [hppa], binutils-hppa64 [hppa], gcc-3.4 [hppa], gawk, m4 + +Package: linux-kernel-devel +Architecture: all +Section: devel +Priority: optional +Depends: build-essential, git-core, gitk, rsync, curl, openssh-client +Description: Linux kernel hacking dependencies + This is a dummy package that will install all possible packages + required to hack comfortably on the kernel. + +Package: linux-source-2.6.15 +Architecture: all +Section: devel +Priority: optional +Provides: linux-source, linux-source-2.6 +Depends: binutils, bzip2, coreutils | fileutils (>= 4.0) +Recommends: libc-dev, gcc, make +Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-dev +Description: Linux kernel source for version 2.6.15 with Ubuntu patches + This package provides the source code for the Linux kernel version 2.6.15. + . + You may configure the kernel to your setup by typing "make config" and + following instructions, but you could get ncursesX.X-dev and try "make + menuconfig" for a jazzier, and easier to use interface. There are options + to use QT or GNOME based configuration interfaces, but they need + additional packages to be installed. Also, please read the detailed + documentation in the file + /usr/share/doc/linux-source-2.6.15/README.headers.gz. + . + If you wish to use this package to create a custom Linux kernel, then it + is suggested that you investigate the package kernel-package, which has + been designed to ease the task of creating kernel image packages. + . + If you are simply trying to build third-party modules for your kernel, + you do not want this package. Install the appropriate linux-headers + package instead. + +Package: linux-doc-2.6.15 +Architecture: all +Section: doc +Priority: optional +Provides: linux-doc-2.6 +Conflicts: linux-doc-2.6 +Replaces: linux-doc-2.6 +Depends: coreutils | fileutils (>= 4.0) +Description: Linux kernel specific documentation for version 2.6.15 + This package provides the various readme's in the 2.6.15 kernel + Documentation/ subdirectory: these typically contain kernel-specific + installation notes for some drivers for example. See + /usr/share/doc/linux-doc-2.6.15/Documentation/00-INDEX for a list of what + is contained in each file. Please read the Changes file, as it contains + information about the problems, which may result by upgrading your + kernel. + +Package: linux-headers-2.6.15-52 +Architecture: amd64 i386 powerpc sparc ia64 hppa +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0) +Provides: linux-headers, linux-headers-2.6 +Description: Header files related to Linux kernel version 2.6.15 + This package provides kernel header files for version 2.6.15, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for details + +Package: linux-headers-2.6.15-52-386 +Architecture: i386 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on 386 + This package provides kernel header files for version 2.6.15 on 386, for + sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for details. + +Package: linux-image-2.6.15-52-386 +Architecture: i386 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on 386. + This package contains the Linux kernel image for version 2.6.15 on 386, + the corresponding System.map file, and the modules built by the packager. + It also contains scripts that try to ensure that the system is not left + in a unbootable state after an update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-686 +Architecture: i386 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on PPro/Celeron/PII/PIII/PIV SMP/UP + This package provides kernel header files for version 2.6.15 on Pentium + Pro/Celeron/Pentium II/Pentium III/Pentium IV with SMP support, for sites + that want the latest kernel headers. + +Package: linux-image-2.6.15-52-686 +Architecture: i386 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on PPro/Celeron/PII/PIII/PIV SMP/UP + This package contains the Linux kernel image for version 2.6.15 on + Pentium Pro/Celeron/Pentium II/Pentium III/Pentium IV with SMP support, + the corresponding System.map file, and the modules built by the packager. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-k7 +Architecture: i386 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on AMD K7 SMP/UP + This package provides kernel header files for version 2.6.15 on AMD + Duron/Athlon/Sempron with SMP support, for sites that want the latest + kernel headers. + +Package: linux-image-2.6.15-52-k7 +Architecture: i386 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on AMD K7 SMP/UP + This package contains the Linux kernel image for version 2.6.15 on AMD + Duron/Athlon/Sempron with SMP support, the corresponding System.map file, and + the modules built by the packager. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-server-bigiron +Architecture: i386 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on BigIron Server Equipment + This package provides kernel header files for version 2.6.15 on BigIron + server equipment, for sites that want the latest kernel headers. + +Package: linux-image-2.6.15-52-server-bigiron +Architecture: i386 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on BigIron Server Equipment + This package contains the Linux kernel image for version 2.6.15 on + BigIron Server Equipment, the corresponding System.map file, and the + modules built by the packager. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + . + NOTE: This kernel is not for general 686 and AMD systems. It is a meant + for BIGSMP, ES7000 and Summit systems. These are systems where you have + more than 8 CPU's, you will need this kernel. + +Package: linux-headers-2.6.15-52-server +Architecture: i386 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on Server Equipment + This package provides kernel header files for version 2.6.15 on + server equipment, for sites that want the latest kernel headers. + +Package: linux-image-2.6.15-52-server +Architecture: i386 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on Server Equipment + This package contains the Linux kernel image for version 2.6.15 on + server equipment, the corresponding System.map file, and the + modules built by the packager. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-powerpc +Architecture: powerpc +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on PowerPC + This package provides kernel header files for version 2.6.15 on PowerPC, + for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for details. + +Package: linux-image-2.6.15-52-powerpc +Architecture: powerpc +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on PowerPC. + This package contains the Linux kernel image for version 2.6.15 on + PowerPC, the corresponding System.map file, and the modules built by the + packager. It also contains scripts that try to ensure that the system is + not left in a unbootable state after an update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on PowerPC SMP + This package provides kernel header files for version 2.6.15 on PowerPC + with SMP support, for sites that want the latest kernel headers. SMP + (symmetric multi-processing) is needed if you have multiple processors. + Please read /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-powerpc-smp +Architecture: powerpc +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on PowerPC SMP. + This package contains the Linux kernel image for version 2.6.15 on + PowerPC with SMP support, the corresponding System.map file, and the + modules built by the packager. SMP (symmetric multi-processing) is + needed if you have multiple processors. It also contains scripts that + try to ensure that the system is not left in a unbootable state after an + update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-powerpc64-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on PowerPC 64 SMP + This package provides kernel header files for version 2.6.15 on PowerPC + 64 with SMP support, for sites that want the latest kernel headers. SMP + (symmetric multi-processing) is needed if you have multiple processors. + Please read /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-powerpc64-smp +Architecture: powerpc +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on PowerPC 64 SMP. + This package contains the Linux kernel image for version 2.6.15 on + PowerPC 64 with SMP support, the corresponding System.map file, and the + modules built by the packager. SMP (symmetric multi-processing) is + needed if you have multiple processors. It also contains scripts that + try to ensure that the system is not left in a unbootable state after an + update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-amd64-k8 +Architecture: amd64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on AMD K8 + This package provides kernel header files for version 2.6.15 on AMD + Athlon64/Athlon FX/Opteron, for sites that want the latest kernel + headers. Please read + /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for details. + +Package: linux-image-2.6.15-52-amd64-k8 +Architecture: amd64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on AMD K8. + This package contains the Linux kernel image for version 2.6.15 on AMD + Athlon64/Athlon FX/Opteron, the corresponding System.map file, and the + modules built by the packager. It also contains scripts that try to + ensure that the system is not left in a unbootable state after an update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-amd64-server +Architecture: amd64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on Server Equipment + This package provides kernel header files for version 2.6.15 on + server equipment, for sites that want the latest kernel headers. + +Package: linux-image-2.6.15-52-amd64-server +Architecture: amd64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on Server Equipment + This package contains the Linux kernel image for version 2.6.15 on + server equipment, the corresponding System.map file, and the + modules built by the packager. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for + a powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, and it + is suggested that you install that package if you wish to create a custom + kernel from the sources. + +Package: linux-headers-2.6.15-52-amd64-generic +Architecture: amd64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on x86_64 + This package provides kernel header files for version 2.6.15 on the + x86_64 architecture, for sites that want the latest kernel headers. + Please read /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-amd64-generic +Architecture: amd64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on x86_64. + This package contains the Linux kernel image for version 2.6.15 on the + x86_64 architecture, the corresponding System.map file, and the modules + built by the packager. It also contains scripts that try to ensure that + the system is not left in a unbootable state after an update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for a + powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + +Package: linux-headers-2.6.15-52-amd64-xeon +Architecture: amd64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on Intel x86_64 + This package provides kernel header files for version 2.6.15 on Intel + Xeon DP, for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-2.6.15-52/debian.README.gz for details + +Package: linux-image-2.6.15-52-amd64-xeon +Architecture: amd64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: lilo (>= 19.1) | grub +Suggests: fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on Intel x86_64. + This package contains the Linux kernel image for version 2.6.15 on Intel + Xeon DP, the corresponding System.map file, and the modules built by the + packager. It also contains scripts that try to ensure that the system is + not left in a unbootable state after an update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for a + powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + +Package: linux-headers-2.6.15-52-sparc64 +Architecture: sparc +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on uniprocessor 64-bit SPARC + This package provides kernel header files for version 2.6.15 on the 64-bit + SPARC architecture, used to build out-of-tree kernel modules. If you have + more than one processor, you want the linux-headers-2.6.15-52-sparc64-smp + package. + . + Please read /usr/share/doc/linux-headers-2.6.15-52-sparc64/debian.README.gz + for details. + +Package: linux-image-2.6.15-52-sparc64 +Architecture: sparc +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Suggests: silo, fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel binary image for UltraSPARC (sparc64) systems + This package contains the Linux kernel image, the System.map file, + and the modules built by the packager. It also contains scripts that + try to ensure that the system is not left in a unbootable state + after an update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and LILO, for a + powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + . + NOTE: This kernel is strictly for UltraSPARC (sparc64) class systems. If you + do not have an UltraSPARC, then most likely you want the sparc32 image. See + linux-image-2.6-sparc32. + +Package: linux-headers-2.6.15-52-sparc64-smp +Architecture: sparc +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Header files for Linux kernel 2.6.15 on multiprocessor 64-bit SPARC + This package provides kernel header files for version 2.6.15 on the 64-bit + SPARC architecture, used to build out-of-tree kernel modules. If you only + have one processor, you want the linux-headers-2.6.15-52-sparc64 package + instead. + . + Please read /usr/share/doc/linux-headers-2.6.15-52-sparc64-smp/debian.README.gz + for details. + +Package: linux-image-2.6.15-52-sparc64-smp +Architecture: sparc +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Suggests: silo, fdutils, linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel binary image for SMP UltraSPARC (sparc64) systems + This package contains the Linux kernel image, the System.map file, + and the modules built by the packager. It also contains scripts that + try to ensure that the system is not left in a unbootable state + after an update. + . + If you wish to update a bootdisk, or to use a bootloader to make + installing and using the image easier, we suggest you install the latest + fdutils (for formatting a floppy to be used as boot disk), and SILO, for a + powerful bootloader. Of course, both these are optional. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + . + NOTE: This kernel is strictly for UltraSPARC (sparc64) class systems. If you + do not have an UltraSPARC, then most likely you want the sparc32 image, which + only exists for the 2.4 kernel series. See kernel-image-2.4-sparc32. + Also, this kernel is specifically for SMP (multiple processors) systems. If + you do not have more than one CPU, then choose the non-SMP kernel image. + +Package: linux-headers-2.6.15-52-itanium +Architecture: ia64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on Itanium + This package provides kernel header files for version 2.6.15 on + Itanium, + for sites that want the latest kernel headers. + Please read /usr/share/doc/linux-headers-2.6.15-52-itanium/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-itanium +Architecture: ia64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: elilo (>= 3.6-1) +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on Itanium + This package contains the Linux kernel image for version 2.6.15 on + Itanium, + the corresponding System.map file, and the modules built by the packager. + It also contains scripts that try to ensure that the system is not left in + a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + +Package: linux-headers-2.6.15-52-itanium-smp +Architecture: ia64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on Itanium SMP + This package provides kernel header files for version 2.6.15 on + Itanium with SMP support, + for sites that want the latest kernel headers. + SMP (symmetric multi-processing) is needed if you have multiple processors. + Please read + /usr/share/doc/linux-headers-2.6.15-52-itanium-smp/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-itanium-smp +Architecture: ia64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: elilo (>= 3.6-1) +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on Itanium SMP + This package contains the Linux kernel image for version 2.6.15 on + Itanium with SMP support, + the corresponding System.map file, and the modules built by the packager. + SMP (symmetric multi-processing) is needed if you have multiple processors. + It also contains scripts that try to ensure that the system is not left in + a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + +Package: linux-headers-2.6.15-52-mckinley +Architecture: ia64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on Itanium II + This package provides kernel header files for version 2.6.15 on + Itanium II (also known as McKinley), + for sites that want the latest kernel headers. + Please read + /usr/share/doc/linux-headers-2.6.15-52-mckinley/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-mckinley +Architecture: ia64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: elilo (>= 3.6-1) +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on Itanium II + This package contains the Linux kernel image for version 2.6.15 on + Itanium II (also known as McKinley), + the corresponding System.map file, and the modules built by the packager. + It also contains scripts that try to ensure that the system is not left in + a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + +Package: linux-headers-2.6.15-52-mckinley-smp +Architecture: ia64 +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on Itanium II SMP + This package provides kernel header files for version 2.6.15 on + Itanium II (also known as McKinleywith SMP support, + for sites that want the latest kernel headers. + SMP (symmetric multi-processing) is needed if you have multiple processors. + Please read + /usr/share/doc/linux-headers-2.6.15-52-mckinley-smp/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-mckinley-smp +Architecture: ia64 +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4, ndiswrapper-modules-1.8 +Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.2.1-0ubuntu1) +Conflicts: hotplug (<< 0.0.20040105-1) +Recommends: elilo (>= 3.6-1) +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on Itanium II SMP + This package contains the Linux kernel image for version 2.6.15 on + Itanium II (also known as McKinley) with SMP support, + the corresponding System.map file, and the modules built by the packager. + SMP (symmetric multi-processing) is needed if you have multiple processors. + It also contains scripts that try to ensure that the system is not left in + a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to + create a custom kernel from the sources. + +Package: linux-headers-2.6.15-52-hppa32 +Architecture: hppa +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on HP PA-RISC 32-bit systems + This package provides kernel header files for version 2.6.15 on + HP PA-RISC 32-bit systems, for sites that want the latest kernel headers. + Please read /usr/share/doc/linux-headers-2.6.15-52-hppa32/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-hppa32 +Architecture: hppa +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4 +Depends: palo, initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils, module-init-tools +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on 32-bit PA-RISC + This package contains the Linux kernel image for version 2.6.15 on + 32-bit HP PA-RISC, the corresponding System.map file, and the modules + built by the packager. It also contains scripts that try to ensure that + the system is not left in a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to create a + custom kernel from the sources. + +Package: linux-headers-2.6.15-52-hppa64 +Architecture: hppa +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on HP PA-RISC 64-bit systems + This package provides kernel header files for version 2.6.15 on + HP PA-RISC 64-bit systems, for sites that want the latest kernel headers. + Please read /usr/share/doc/linux-headers-2.6.15-52-hppa64/debian.README.gz for + details. + +Package: linux-image-2.6.15-52-hppa64 +Architecture: hppa +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4 +Depends: palo, initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils, module-init-tools +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on 64-bit PA-RISC + This package contains the Linux kernel image for version 2.6.15 on + 64-bit HP PA-RISC, the corresponding System.map file, and the modules + built by the packager. It also contains scripts that try to ensure that + the system is not left in a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to create a + custom kernel from the sources. + +Package: linux-headers-2.6.15-52-hppa32-smp +Architecture: hppa +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on HP PA-RISC 32-bit SMP systems + This package provides kernel header files for version 2.6.15 on + HP PA-RISC 32-bit SMP systems, for sites that want the latest kernel headers. + Please read /usr/share/doc/linux-headers-2.6.15-52-hppa32-smp/debian.README.gz + for details. + +Package: linux-image-2.6.15-52-hppa32-smp +Architecture: hppa +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4 +Depends: palo, initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils, module-init-tools +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on 32-bit PA-RISC SMP + This package contains the Linux kernel image for version 2.6.15 on + 32-bit HP PA-RISC SMP, the corresponding System.map file, and the modules + built by the packager. It also contains scripts that try to ensure that + the system is not left in a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to create a + custom kernel from the sources. + +Package: linux-headers-2.6.15-52-hppa64-smp +Architecture: hppa +Section: devel +Priority: optional +Depends: coreutils | fileutils (>= 4.0), linux-headers-2.6.15-52, ${shlibs:Depends} +Provides: linux-headers, linux-headers-2.6 +Description: Linux kernel headers 2.6.15 on HP PA-RISC 64-bit SMP systems + This package provides kernel header files for version 2.6.15 on + HP PA-RISC 64-bit SMP systems, for sites that want the latest kernel headers. + Please read /usr/share/doc/linux-headers-2.6.15-52-hppa64-smp/debian.README.gz + for details. + +Package: linux-image-2.6.15-52-hppa64-smp +Architecture: hppa +Section: base +Priority: optional +Provides: linux-image, linux-image-2.6, fuse-module, rhcs-modules-4 +Depends: palo, initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils, module-init-tools +Suggests: linux-doc-2.6.15 | linux-source-2.6.15 +Description: Linux kernel image for version 2.6.15 on 64-bit PA-RISC SMP + This package contains the Linux kernel image for version 2.6.15 on + 64-bit HP PA-RISC SMP, the corresponding System.map file, and the modules + built by the packager. It also contains scripts that try to ensure that + the system is not left in a unbootable state after an update. + . + Kernel image packages are generally produced using kernel-package, + and it is suggested that you install that package if you wish to create a + custom kernel from the sources. --- linux-source-2.6.15-2.6.15.orig/debian/changelog +++ linux-source-2.6.15-2.6.15/debian/changelog @@ -0,0 +1,8097 @@ +linux-source-2.6.15 (2.6.15-52.71) dapper-security; urgency=low + + * mm: Fix zero length segment loop + - LP: #249340 + follow-up for CVE-2008-0598 + + [Upstream Kernel Changes] + + * Fix compiler warning on 64-bit + follow-up for CVE-2008-1673 + + -- Stefan Bader Thu, 14 Aug 2008 10:27:05 -0400 + +linux-source-2.6.15 (2.6.15-52.70) dapper-security; urgency=low + + * (CVE-2008-3275) vfs: fix lookup on deleted directory + * (CVE-2008-3272) sound: ensure device number is valid in snd_seq_oss_synth_make_info + * (CVE-2008-2931) check privileges before setting mount propagation + * (CVE-2008-2812) TTY: fix for tty operations bugs + * USB: remove short initial timeout for device descriptor fetch + - LP: #185025 + + -- Tim Gardner Tue, 05 Aug 2008 19:33:18 -0600 + +linux-source-2.6.15 (2.6.15-52.69) dapper-security; urgency=low + + [Tim Gardner] + + * HPPA: Added __raw_write_can_lock to fix FTBS caused by + CVE-2008-2365 patch. + * Reverted the getabi modenization, instead fixed the path to + retrieve binary debs. + + -- Tim Gardner Thu, 10 Jul 2008 21:02:58 -0600 + +linux-source-2.6.15 (2.6.15-52.68) dapper-security; urgency=low + + [Security] + + * (CVE-2008-0598) mm: trim more holes + * (CVE-2008-2365) ptrace_attach: fix possible deadlock schenario with irqs + * (CVE-2008-2365) Fix ptrace_attach()/ptrace_traceme()/de_thread() race + * (CVE-2008-2826) sctp: Make sure N * sizeof(union sctp_addr) does not overflow. + * (CVE-2008-2729) Fix zeroing on exception in copy_*_user + * (CVE-2008-1615) x86_64: fix CS corruption on iret + * (CVE-2008-2137) sparc: Fix mmap VA span checking. + * (CVE-2008-2136) sit: Add missing kfree_skb() on pskb_may_pull() failure. + * (CVE-2008-1673) asn1: additional sanity checking during BER decoding + * (CVE-2007-6282) [ESP]: Ensure IV is in linear part of the skb to avoid BUG() due to OOB access + + [Tim Gardner] + + * Modernized the getabis script. + + -- Tim Gardner Fri, 20 Jun 2008 10:28:25 -0600 + +linux-source-2.6.15 (2.6.15-52.67) dapper-security; urgency=low + + [Upstream Kernel Changes] + + * Set CONFIG_SCSI=y for ia64. + * [IA64] Fix unaligned handler for floating point instructions with base + update + * cifs: CVE-2007-5904: pass buffer size into SendReceive + * CVE-2007-6694: [POWERPC] CHRP: Fix possible NULL pointer dereference + * vm audit: add VM_DONTEXPAND to mmap for drivers that need it + (CVE-2008-0007) + * sys_setrlimit() cleanup + * RLIMIT_CPU: fix handling of a zero limit + * CVE-2008-1294: CPU time limit patch / setrlimit(RLIMIT_CPU, 0) cheat + fix + * fix SMP ordering hole in fcntl_setlk() (CVE-2008-1669) + * Fix dnotify/close race (CVE-2008-1375) + * cifs: fix up renamed define for small buffer size + * Convert snd-page-alloc proc file to use seq_file (CVE-2007-4571) + + -- Ben Collins Tue, 20 May 2008 15:23:32 +0000 + +linux-source-2.6.15 (2.6.15-51.66) dapper-security; urgency=low + + * Copy lds linker file (ia64) to headers package. + + -- Tim Gardner Mon, 11 Feb 2008 17:13:05 -0700 + +linux-source-2.6.15 (2.6.15-51.65) dapper-security; urgency=low + + [Security] + + * tmpfs: restore missing clear_highpage (CVE-2007-6417) + * vfs: coredumping fix (CVE-2007-6206) + * I4L: fix isdn_ioctl memory overrun vulnerability (CVE-2007-6151) + * isdn: avoid copying overly-long strings (CVE-2007-6063) + * CVE-2008-0001: Use access mode instead of open flags to determine needed permissions + * [UBUNTU:usb/media/pwc] Fixup Dos in pwc USB video driver (CVE-2007-5093) + * wait_task_stopped: Check p->exit_state instead of TASK_TRACED (CVE-2007-5500) + * USB: fix DoS in pwc USB video driver (CVE-2007-5093) + * [IEEE80211]: avoid integer underflow for runt rx frames (CVE-2007-4997) + * [PATCH] hugetlb: fix prio_tree unit (CVE-2007-4133) + * minixfs: limit minixfs printks on corrupted dir i_size (CVE-2006-6058) + * [UBUNTU:drivers/net] drop invalid spin_unlock calls in skge (CVE-2006-7229) + + [Fabio Massimo Di Nitto] + + * [UBUNTU: cluster/dlm] Fix regression introduced with last security fix. + + -- Tim Gardner Thu, 17 Jan 2008 14:12:41 -0700 + +linux-source-2.6.15 (2.6.15-51.64) dapper-proposed; urgency=low + + * Revert fix for megaraid, causes an oops/regression. + + [Trivial, non-functional changes] + * mpspec_def.h: Remove extraneoush packed attribute, causing compiler + warnings. + * Makefile: Remove stack-protector from CFLAGS (newer compilers). + + -- Ben Collins Wed, 05 Dec 2007 13:22:37 -0500 + +linux-source-2.6.15 (2.6.15-51.63) dapper-proposed; urgency=low + + * Fix kernel-versions for ABI bump + * Fix for kernel crash on lvremove + - LP: #103729 + * e1000: Disable MSI by default. Allow it to be enabled with module param. + Some chip implementations seem to not work well with MSI. + - LP: #56885 + * tg3: Backport from 2.6.16.y + - LP: #72696 + * Add r1000 to nic-modules + - LP: #81782 + * Add bnx2 to nic-modules + - LP: #73647 + * usb-serial: Fix oops with pilot-link + - LP: #39518 + * megaraid: Move AMI/Megaraid3 IDs from megaraid_mbox.ko to megaraid.ko + - LP: #57233 + + -- Ben Collins Tue, 23 Oct 2007 16:57:09 -0400 + +linux-source-2.6.15 (2.6.15-29.59) dapper-security; urgency=low + + [security ] + + * CVE-2007-4573: x86_64: Zero extend all registers after ptrace in 32bit entry path + * CVE-2007-3731: i386: fixup TRACE_IRQ breakage + * CVE-2007-3731: Handle bogus %cs selector in single-step instruction decoding + * CVE-2007-3739: Don't allow the stack to grow into hugetlb reserved regions + * CVE-2007-3740: [CIFS] CIFS should honour umask + + -- Kyle McMartin Fri, 21 Sep 2007 16:38:15 -0400 + +linux-source-2.6.15 (2.6.15-29.58) dapper-security; urgency=low + + [ security ] + + * CVE-2007-3104: sysfs_readdir NULL ptr dereference causes kernel oops + * CVE-2007-4308: aacraid: Fix security hole + * CVE-2005-0504: sanity check dltmp.len size before all copy_from_user() calls + * CVE-2007-3848: Reset current->pdeath_signal on SUID binary execution + * CVE-2007-3105: random: fix bound check ordering + * CVE-2007-2242: [IPV6]: Disallow RH0 by default. + + -- Kyle McMartin Wed, 29 Aug 2007 03:22:45 +0000 + +linux-source-2.6.15 (2.6.15-28.57) dapper-security; urgency=medium + + * Change maintainer field to me, for real this time. + + [ security ] + + * CVE-2007-2453: random: fix error in entropy extraction + * CVE-2007-2453: random: fix seeding with zero entropy + + -- Kyle McMartin Wed, 18 Jul 2007 15:42:45 -0400 + +linux-source-2.6.15 (2.6.15-28.56) dapper-security; urgency=medium + + [ security ] + + * CVE-2007-1000: IPV6: Handle np->opt being NULL in ipv6_getsockopt_sticky + * CVE-2007-2878: fat: fix VFAT compat ioctls on 64-bit systems + * CVE-2007-3380: [CLUSTER] A TCP connection to DLM port blocks DLM operations + * CVE-2006-4623: dvb-core: Proper handling ULE SNDU length of 0 + * CVE-2006-7203: skip data conversion in compat_sys_mount when data_page is NULL + * CVE-2007-1861: [NETLINK]: Infinite recursion in netlink + * CVE-2007-1353: [BLUETOOTH] L2CAP and HCI setsockopt() information leaks + * CVE-2007-0005: Fix buffer overflow in Omnikey CardMan 4040 driver + * CVE-2007-2525: [PPPOE]: memory leak when socket is release()d before PPPIOCGCHAN ... + * CVE-2007-2875: use simple_read_from_buffer in kernel/ + * CVE-2007-2876: NETFILTER: {ip, nf}_conntrack_sctp: fix remotely triggerable + * CVE-2007-3513: USB: usblcd doesn't limit memory consumption during write + + -- Kyle McMartin Tue, 17 Jul 2007 17:38:51 -0400 + +linux-source-2.6.15 (2.6.15-28.55) dapper-security; urgency=low + + * Change maintainer field to me. + + [ security ] + + * Brown paper bag fix for CVE-2007-1357. + + -- Kyle McMartin Thu, 10 May 2007 04:41:16 -0400 + +linux-source-2.6.15 (2.6.15-28.54) dapper-security; urgency=low + + [ security ] + + * CVE-2007-2172: [IPv4] fib: Fix out of bound access of fib_props[] + * CVE-2007-2172: [DECNet] fib: Fix out of bound access of dn_fib_props[] + * CVE-2007-1592: [IPV6]: ipv6_fl_socklist is inadvertently shared. + * CVE-2007-1497: nf_conntrack: fix incorrect classification of IPv6 fragments as ESTABLISHED + * CVE-2007-1496: [NETFILTER]: nfnetlink_log: fix possible NULL pointer dereference + * CVE-2007-1388: [IPV6] Fix another NULL pointer deref in ipv6_sockglue.c + * CVE-2007-1357: [APPLETALK]: Fix a remotely triggerable crash + + -- Kyle McMartin Thu, 26 Apr 2007 20:18:57 -0400 + +linux-source-2.6.15 (2.6.15-28.53) dapper-security; urgency=low + + [ Kyle McMartin ] + + * Disable irqs while applying alternative insns (i386/x86_64) + + [ David S. Miller ] + + * Fix mach64 with gcc-4.1 and later... + + -- Kyle McMartin Tue, 13 Mar 2007 14:34:21 -0400 + +linux-source-2.6.15 (2.6.15-28.52) dapper-security; urgency=medium + + [ security ] + + * CVE-2007-0772: Fix a free-wrong-pointer bug in nfs/acl server + * CVE-2007-0006: Fix key serial number collision handling + * CVE-2007-0958: [PATCH] core-dumping unreadable binaries via PT_INTERP + + -- Kyle McMartin Wed, 28 Feb 2007 11:49:37 -0500 + +linux-source-2.6.15 (2.6.15-28.51) dapper-security; urgency=low + + [ Security ] + + * CVE-2006-4814: Fix incorrect user space access locking in mincore() + * CVE-2006-5749: Call init_timer() for ISDN PPP CCP reset state timer + * CVE-2006-5753: fix memory corruption from misinterpreted bad_inode_ops return values + * CVE-2006-5755: Don't leak NT bit into next task + * CVE-2006-5757: grow_buffers() infinite loop fix + * CVE-2006-5823: corrupted cramfs filesystems cause kernel oops + * CVE-2006-6053: handle ext3 directory corruption better + * CVE-2006-6054: ext2: skip pages past number of blocks in ext2_find_entry + * CVE-2006-6056: hfs_fill_super returns success even if no root inode + * CVE-2006-6106: [Bluetooth] Add packet size checks for CAPI messages + * CVE-2006-4572: [NETFILTER]: Fix ip6_tables extension header bypass bug + * CVE-2006-4572: [NETFILTER]: Fix ip6_tables protocol bypass bug + + [ David S. Miller ] + + * [SPARC64]: Set g4/g5 properly in sun4v dtlb-prot handling. + + [ Kyle McMartin ] + + * sky2: 88E803X transmit lockup + - Upstream GIT-SHA: 470ea7eba4aaa517533f9b02ac9a104e77264548 + * scsi: handle ->slave_configure return value + - Upstream GIT-SHA: 938050916f57f08e20595b1fa1c1e57c2fbf7243 + - Malone: #57265 + + -- Kyle McMartin Mon, 22 Jan 2007 14:51:18 +0100 + +linux-source-2.6.15 (2.6.15-27.50) dapper-security; urgency=low + + [security] + + * CVE-2006-5751: bridge: fix possible overflow in get_fdb_entries + * CVE-2006-5701: Fix various fsfuzz triggered crashes + * CVE-2006-5649: POWERPC: Make alignment exception always check + exception table + * CVE-2006-5619: [IPV6]: fix lockup via /proc/net/ip6_flowlabel + * CVE-2006-5173: x86: save/restore eflags in context switch + * CVE-2006-4997: [ATM] CLIP: Do not refer freed skbuff in clip_mkip() + + [Kyle McMartin] + + * squashfs: Update to version 3.1 from CVS + + -- Kyle McMartin Wed, 29 Nov 2006 22:59:43 -0500 + +linux-source-2.6.15 (2.6.15-27.48) dapper-security; urgency=low + + [Security] + + * CVE-2006-4535: Fix for SCTP SO_LINGER DoS. + - Upstream GIT-SHA: b9ac86727fc02cc7117ef3fe518a4d51cd573c82 + * CVE-2006-4538: ia64 and sparc elf loader memory checking vulnerability. + - Upstream GIT-SHA: 3a459756810912d2c2bf188cef566af255936b4d + + [Ben Collins] + + * Revert GIT-SHA: 5aae548f78f22a7069342fecad3f9e2e8d308c55 + - VIA Southbridge fixups + - Malone: #52649 + * sbp2: Fix for lockup on device insertion. + - Upstream GIT-SHA: 24c7cd0630f76f0eb081d539c53893d9f15787e8 + - Malone: #28647 + * Re-enable sky2 driver, but only for models not supported by the sk98lin + driver. + - Malone: #60271 + + -- Ben Collins Mon, 11 Sep 2006 08:46:07 -0400 + +linux-source-2.6.15 (2.6.15-26.47) dapper-security; urgency=low + + [Security] + + * CVE-2006-3468: Exporting ext3 over NFS vulnerability. + - Upstream GIT-SHA: 2ccb48ebb4de139eef4fcefd5f2bb823cb0d81b9 + * CVE-2006-3745: Buffer overflow in the sctp_make_abort_user() function + of iptables' SCTP module + - Upstream GIT-SHA: 96ec9da385cf72c5f775e5f163420ea92e66ded2 + * CVE-2006-4093: PowerPC HID0 DoS. + - Upstream GIT-SHA: 9a936a2e0526089194159eae31238e36b1c19e74 + * CVE-2006-4145: Fix possible UDF deadlock and memory corruption. + - Upstream GIT-SHA: 7127be29378b1230eb8dd8b84f18d6b69c56e959 + + [Ben Collins] + + * zd1211: Update to latest version of driver + - Malone: #37795 + * sata_mv: Disable MSI by default + - Malone: #55234 + - Upstream GIT-SHA: ddef9bb367b19383df627e388cb4c01c86ddba6c + * p4-clockmod. Lower n60 errata max down to 700Mhz instead of 2ghz. + - Malone: ##51847 + * usb-hub: Always turn on power to hub ports, even if it doesn't support + power switching. + - Malone: #53293 + - Upstream GIT-SHA: 4489a5712b086621a6c3f669057d2996245cd3fb + * unusual_devs: Add 60G Video iPod. + - Malone: #54279 + * usb-core: Rate limit the over-current dev_err message. + - Malone: #55253 + * gamecon: Fix crashes when accessing the device. + - Malone: #55355 + - Upstrea GIT-SHA's (in order applied) + - c7fd018d75cae2b0c1cf03003b38f4c76e3df826 + - 77fc46ca5b331df3fc0ffef24012ba0d51d601b3 + * uhci-hub: Increase port-reset completion delay for HP controllers. + - Malone: #55495 + - Upstream GIT-SHA: ae55717584431761b70215d3d574c13fe97093f2 + * seccomp: Make the TSC disable purely paranoid feature optional, so by + default seccomp returns absolutely zerocost. + - Malone: #52272 + * skge: Update to version in 2.6.17, to obtain fixes and D-Link DGE-530T + support. + - Malone: #55847 + * ide/via82cxxx: Add vt8237a support. + * acpi_sbs: Fix perms on capacity_mode module param. + - Malone: #55806 + * sk98lin: Forward port driver from breezy (known working for sky2). + - Malone: #38865 + * bluetooth: Rate limit SCO packet error message. + - Malone: #39414 + * ieee80211: Fix race in wep/tkip crypt modules. + - Malone: #56894 + * sched: Multi-core scheduler support. + - Upstream GIT-SHA: 1e9f28fa1eb9773bf65bae08288c6a0a38eef4a7 + * dm-bbr: Device-Mapper Bad Block Relocator. This went missing in dapper + (was in breezy). + + [Daniel T Chen] + + * sound/pci/hda: Add IDs for ASUS W6A, A7TC; fix support for HP model + (patch_realtek) + * sound/pci: Fix inaudible sound by default for ENS1371 + * {include/sound,sound/pci/ymfpci}: Fix PM and IEC958 output for ymfpci + * sound/pci/ac97: #42194: Use hp_only quirk for Fujitsu Lifebook C1211D + * sound/pci/hda: Fix sound for Uniwill M31 + * sound/pci/ice1712: Fix typo in sampling rate (16000 not 1600) + * sound/pci/ac97: Fix inaudible sound for LG K1 Express + * sound/pci{,/emu10k1}: Miscellaneous cleanups + * sound/pci/hda: Fix inaudible sound on Sony VAIO AR 11B + * sound/pci/hda: #56576: Fix inaudible sound on Sony VAIO AR 11S + * sound/pci/hda: Backport support for HDA STAC9205 family + + -- Ben Collins Mon, 7 Aug 2006 13:02:48 -0400 + +linux-source-2.6.15 (2.6.15-26.46) dapper-security; urgency=low + + Security: + + * CVE-2006-2934: SCTP conntrack: fix crash triggered by packet without + chunks. + Upstream GIT-SHA: dd7271feba61d5dc0fab1cb5365db9926d35ea3a + + * CVE-2006-2935: cdrom: fix bad cgc.buflen assignment. + Upstream GIT-SHA: 454d6fbc48374be8f53b9bafaa86530cf8eb3bc1 + + * CVE-2006-2936: USB serial ftdi_sio: Prevent userspace DoS. + Upstream GIT-SHA: 224654004ca688af67cec44d9300e8c3f647577c + + Changes by Ben Collins + + * Cherry pick fixes related to incorrect idle time on some processors. This + may also fix the "no timer" errors in MacBook's. + - Malone: #30557 + - GIT SHA's (in order applied): + - 5a07a30c3cc4dc438494d6416ffa74008a2194b3 + - 6eb0a0fd059598ee0d49c6283ce25cccd743e9fc + - d25bf7e5fe73b5b6d2246ab0be08ae35d718456b + - 76b461c21468f41837283b7888d55f1c0671f719 + - bd6633476922b7b51227f7f704c2546e763ae5ed + - 0b5c59a1e41636afa77b90d34e8c394d8d929733 + + * Cherry pick fix for ali ide, broken CD burning with DMA turned on. + - Malone: #53524 + - GIT SHA: 0d8a95efd878920e7f791d5bcfb9b70f107aadda + + * Cherry pick fix for HP laptop batteries. + - Malone: #47561 + - GIT SHA: 49fee981fa98f3c0a21f3d6c8193eddcc15e84e9 + + * Add Anydata device to usb-serial option driver. Disable anydata driver. + - Malone: #38191 + + * Added dazuko 2.2.1 driver. + + * Add RAZr unusual_dev entry. + - Malone: #50859 + + Changes by Daniel T Chen + + * sound/pci/emu10k1: Don't hang when Audigy 2 ZS (cardbus) is removed + * sound/usb: Add quirks for Yamaha USB MIDI devices + * sound/pci/{emu10k1,hda}: Add support for various newer HDA and Audigy + 2 ZS models + * sound/pci: Correct dxs_support entries for various models + * sound/pci/hda: Fix erroneous re-initialisation of pins + * sound/pci/hda: Fix noisy HDA output when switch channel output mode + (patch_{analog,realtek}) + + Changes by David Miller + + * [SPARC64]: Fix typo in pgprot_noncached(). + * [SPARC64]: Fix quad-float multiply emulation. + + -- Ben Collins Wed, 2 Aug 2006 16:59:21 -0400 + +linux-source-2.6.15 (2.6.15-26.45) dapper-security; urgency=low + + Security: + + * Fix patch for CVE-2006-2451. + * CVE-2006-3626: Fix suid root environ files in /proc + - GIT Hashes (in order applied): + - 4a7ac3ab06932949d3069c1811f6f2a310f656c4 + - 1d87a98f9db06b6c7fadd20f13ab092875d53801 + + Changes by Ben Collins + + * usb: Fix oopses on device disconnects + * prism54: Move PCI ID 10b7:6001 from prism54_softmac back to prism54. + - Malone: #38278 + + Changes by Daniel T Chen + + * sound/pci/hda: Fix/add Realtek ALC8{61,8[38]} codecs (hda_codec,patch_realtek) + * sound/pci/hda: Fix MacMini's built-in speaker (patch_sigmatel) + + Changes by Andrew Straw + + * drivers/ieee1394: Fix incorrect video1394 timestamps. + + -- Ben Collins Tue, 11 Jul 2006 16:21:27 -0400 + +linux-source-2.6.15 (2.6.15-26.44) dapper-security; urgency=low + + Security: + + * CVE-2006-0039: Race condition in the do_add_counters + * CVE-2006-2445: run_posix_cpu_timers: remove a bogus BUG_ON() + * CVE-2006-2448: powerpc: Fix machine check problem on 32-bit kernels + * CVE-????-????: IPC: access to unmapped vmalloc area in grow_ary() + * CVE-2006-2451: Fix prctl() DoS and privilege escalation vulnerability. + + Changes by Ben Collins + + * hid: Add 0x0218 to list of powerbook quirks. + * sky2: Update to latest version in linux-2.6.git. + * sata_nv/amd74xx: Add mcp65 ID's. + * Max freq stucks at low freq if reduced by _PPC and sysfs gov access. + - Git-7970e08bf066900efcd7794a1a338c11eb8f5141 + - Malone #36014 + * i8042-x86ia64io.h: Backport some 2.6.17 blacklist entries. + * forcedeth: Update to v0.54 from 2.6.17. + * cx88-dvb: Revert: 3a580f39df8937f54976b2e7ce2ef54294da06f9 + - Malone #33096 + * tulip: Re-add removed PCI id's left to dmfe, just for sparc. + * ipw3945: Update to 1.0.5 + * Enable CPUSETS + - Malone: #50782 + * nsc-ircc: Fix usage of pnp_register_driver() + * megaraid: Update to latest driver + - Malone: #32752 + * Move VIA pci id's from ahci to sata_via. + - Malone: #33030 + + Changes by Chuck Short + + * i8042-x86ia64io: Blacklist IBM 2656. + * via-agp: Add support for PT880ULTRA. + * sundance: Added IP100A chipset support. + * pci/quirks: VIA IRQ fixup should only run for VIA southbridges. + * cdrom: Fix cdrom open + * com20020_cs: Add SoHard SH ARC-PCMCIA card. + * drm: Allow drm detection of new VIA chipsets. + * via-ircc: Fix memory leak. + * acpi/boot: Fix noapic for acpi. + * acpi: Do not abort method execution if asked to release not acquired mutex. + * ati_remote: Fix FILTER_TIME causing multiple button presses. + - Malone #50593 + * CIFS: Fix suspend/resume problem which causes EIO on subsequent access to + - Malone #42583 + + Changes by Daniel T Chen + + * sound/pci/hda: + - Add ID for Samsung X60 Chane (patch_analog) + - Add support for Intel D965 boards using STAC9227 (patch_sigmatel) + * acpi/boot: Requires acpi=off + * hid-core: Fixes irq status on some keyboards and mices. + * sound/isa/sb: Fix potential NULL pointer dereference in + sb8_midi.c::snd_sb8dsp_midi_interrupt() + * sound/pci/ac97: Don't erroneously attempt to create AC97 controls again + * sound/pci: Update default sample rate for MSI K8T Neo2-FI (snd_via82xx) + * sound/pci/ac97: Fix suspend/resume for AD1888 codec (ac97_patch) + * sound/pci/hda: Add id for supported models + - reinstate commit ba42a99e564f63b2d5506a6df0da0b37b2e4774f + fixing audible support for Lenovo 3000 N100-07684JU (patch_analog.c) + * sound/pci/ac97: Add codec ID to Jack Sense blacklist (ac97_patch) + * sound/pci: Add AC97 quirk for Tyan Thunder K8WE (intel8x0) + * sound/pci/hda: Don't use the AD1988A rev.2 workaround on AD1988B chips + * sound/core: #34831: Fix hard freeze with timer {re,}store (timer) + * sound/pci/cs46xx: Fix deadlock inversion in dsp_spos_scb_lib.c::cs46xx_dsp_remove_scb() + * sound/pci/hda: Use the proper codec patch for SigmaTel 922[7-9] (patch_sigmatel) + * sound/pci/hda: Fix missing terminators in AD1988 mixer models (patch_analog) + + Changes by Fabio M. Di Nitto + + * Add sata_mv to sata-modules udeb if available. + + * Add cassini driver to nic-modules udeb if available. + (Closes Ubuntu: #52234) + + Changes by David Miller + + * Proper fix for Niagara memory corruption. + + -- Ben Collins Fri, 7 Jul 2006 12:29:51 -0400 + +linux-source-2.6.15 (2.6.15-25.43) dapper-security; urgency=low + + Changes by Ben Collins + + * bcm43xx dma mask handling (> 1GB memory) + - Add powerpc IOMMU handlers for dma masks + - Sync updates to amd64 IOMMU to handle dma masks + + * Sync ide changes for better flash driver handling (flash isn't removable). + + Changes by David S. Miller + + * [SPARC64]: Temporary workaround for memory corruption on Niagara. + + -- Fabio M. Di Nitto Wed, 14 Jun 2006 11:05:57 +0200 + +linux-source-2.6.15 (2.6.15-24.42) dapper-security; urgency=low + + Changed by Daniel T Chen + + * Fix cs4266 build failure. + + -- Ben Collins Mon, 12 Jun 2006 22:26:24 -0400 + +linux-source-2.6.15 (2.6.15-24.41) dapper-security; urgency=low + + Changes by Ben Collins + + * usb: Enable CONFIG_USB_EHCI_SPLIT_ISO and CONFIG_USB_EHCI_ROOT_HUB_TT + - Malone #28840 + - Malone #49367 + * usb: Enable CONFIG_USB_SUSPEND + * powerpc: Fix for smp clock timer + - Malone #29420 + - Git cherry pick: 0c2aca88bdac4254a13466fb108733d243a118b6 + * powerpc: Enable zilog as a module, and serial core/8250 as modules as + well. + - Malone #36499 + * btsco: Patch to get headset working. + - Maline #48910 + + Changes by Chuck Short + + * speedstep-smi: Allow speedstep-smi to load Thinkpad T20. + - Malone #35044 + + Changes by Daniel T Chen + + * sound/pci/cs46xx: Fix PM support for snd_cs46xx + - Malone #11149 + + Changes by David S Miller + + * [SPARC64]: Avoid JBUS errors on some Niagara systems. + + -- Ben Collins Mon, 12 Jun 2006 12:27:42 -0400 + +linux-source-2.6.15 (2.6.15-24.40) dapper-security; urgency=low + + Changes by Ben Collins + + * psmouse: Total reset for intellimouse. + - Malone #30224 + * powerpc: Add one-liner to fix physical memory mapping on some G3's. + - Malone #34508 + * nsc-ircc: Update to latest code to fix crashes. + - Malone #46947 + * nsc-ircc: Add some IBM thinkpads + * ahci: Add support for JMicron ahci controller. + - Malone #45839 + * acx: Make all TI ACX111's use 1.2.1.34 firmware. + - Malone #30766 + * sky2: Update to latest version, 1.4. + - Malone #38865 (and others) + * rt2500: Update to CVS code, which the maintainer says will fix our SMP + related bugs with this driver. + * PCI: reverse pci config space restore order. Stolen from upstream patch. + This should fix a few resume bugs for hardware that stricly needs to + adhere to PCI specs. MacTel is one of the biggest examples. + * Disable davicom usage in tulip driver to let dmfe module takeover. + - Malone #48287 + * powerpc: Enable MESH and MAC_FLOPPY drivers. + * acpi/ec: Use semaphore instead of spinlock to get rid of missed interrupts + - Malone #39315 + * i386/amd64: Change HZ=1000 to HZ=250. The high frequency was causing high + power consumption on some laptops, and also some latency under certain I/O + loads. + * irda/sir: Fix wait operations in kernel thread. Use proper + wait_event_interruptible_timeout(). + - Malone #45542 + * hid-powerbook: Enable on i386 for MacTels. + * i386: Add Averatec 3200 to list of acpi=noirq dmi matches. + - Malone #48263 + + Changes by David S Miller + + * [SPARC64]: Fix missing fold at end of checksums. + * [SPARC64]: Fix D-cache corruption in mremap. + * [TG3]: Handle Sun onboard tg3 chips more correctly. + + Changes by Fabio M. Di Nitto + + * [debian/config] Enable HUGE_TLB & Co. on sparc64. + + Changes by Daniel T Chen + + * sound/{drivers/opl3,synth/emux}/: Fix port type bits + * sound/pci/ac97/: Add workaround for ASUS A6KM + * sound/pci/hda/: Fix handling of capture controls on ALC882 3/6-stack models + * sound/core/: Fix pcm-draining of capture stream in PCM middle layer + * sound/pci/hda/: Fix init verbs for ALC260 hp model + * sound/usb/: Add workaround for CSR Bluetooth Headphones + * sound/synth/emux/: Fix NULL pointer dereference + * sound/pci/hda/: Fix codec model for HP dc7600 + * sound/pci/ice1712/: Don't use Consumer AC97 for Terratec DMX6fire + * sound/pci/hda/: Add support for more Sony Vaio models + * sound/pci/hda/: Add support for Sigmatel 922[7-9] HDA codecs + * sound/pci/ac97/: Add ThinkPad T41p to Jack Sense blacklist + * sound/pci/: Fix incorrect mixer element name for cmipci + * sound/pci/{cs46xx,hda}/: Fix race in removing device + * sound/pci/hda/: Add HP nx6320 to supported list + * sound/pci: Fix additional races in the irq handler and ioremap() + + Changes by Ryan Lortie + + * snd-hda-intel: fix routing on macbook + * usb-hid: enable Fn key on Macbook keyboard (Intel) + * libata: delay resume to wait for harddrives to spin up + * ich7-sci-en-quirk: poke the SCI_EN bit on Macbook resume + + Security updates + + * CVE-2006-1052: Cherry picked + * CVE-2006-1066: Cherry picked + * CVE-2006-1368: Cherry picked + * CVE-2006-1525: Cherry picked + * CVE-2006-1055: Cherry picked + * CVE-2006-0744: Cherry picked + * CVE-2006-0038: Cherry picked and merged + * CVE-2006-1522: Cherry picked + * CVE-2006-1527: Cherry picked + * CVE-2006-1056: Cherry picked and merged + * CVE-2006-1863: Cherry picked + * CVE-2006-1864: Copied patch and applied + * CVE-2006-1859: Cherry picked + * CVE-2006-1860: Cherry picked + * CVE-2006-2271: Cherry picked + * CVE-2006-2272: Cherry picked + * CVE-2006-2274: Cherry picked + * CVE-2006-2275: Cherry picked + * CVE-2006-1857: Cherry picked + * CVE-2006-1858: Cherry picked + * CVE-2006-2444: Cherry picked + + -- Ben Collins Fri, 9 Jun 2006 12:15:10 -0400 + +linux-source-2.6.15 (2.6.15-23.39) dapper; urgency=low + + Changes by Fabio M. Di Nitto + + * Make sure that all RV350 will get the CHIP_NEW_MMAP flag. + + * Reenable all ABI checkers. + + * Update ABI files to fix FTBFS on i386. + + Changes by David S. Miller + + * Fix severe memory corruption when using sound on sparc64. + + -- Ben Collins Tue, 23 May 2006 07:17:42 -0400 + +linux-source-2.6.15 (2.6.15-23.38) dapper; urgency=low + + * Ignore ABI change on sparc this time around. + * amd64: Update configs. + + -- Ben Collins Mon, 22 May 2006 16:52:46 -0400 + +linux-source-2.6.15 (2.6.15-23.37) dapper; urgency=low + + * Ignore ABI change on sparc this time around. + * amd64: Update configs. + + -- Ben Collins Mon, 22 May 2006 11:52:46 -0400 + +linux-source-2.6.15 (2.6.15-23.36) dapper; urgency=low + + Changes by Ben Collins + + * powerpc64: Enable HUGETLB + * x86,amd64: Build-in rtc and genrtc on all but the 386 kernel. + * sparc: Enable CONFIG_FB_RADEON_I2C and CONFIG_SND_ALI5451. + + Changes by Fabio M. Di Nitto + + * Fix drm/dri/radeonfb crash on ppc with input from Dave Airlie. + + -- Ben Collins Mon, 22 May 2006 10:12:30 -0400 + +linux-source-2.6.15 (2.6.15-23.35) dapper; urgency=low + + This IS the final dapper kernel. There have been many kernels like this, but + this one superceeds them all. The kernel you are about to install is the + hard work of the following people: + + - Fabbione M. Di Nitto + - Matthew Garrett + - Daniel T. Chen + - Chuck Short + + Give them all a big "Thank You" next time you email them or see them on IRC. + If you happen to see them in real life, buy them a beer. Without their + hardwork, your computer would be a wimpering pile circuits with little more + use than as an egg timer to make sure you don't burn your precious + breakfast. + + Changes by Ben Collins + + * ipw3945: Update to latest version, 1.0.3. + * Merge with 2.6.15.7 (This takes care of a lot of CVE's that I haven't + listed here yet). + * sky2/skge/sk98lin: Sync with 2.6.16.13. + * Update drm to 1.0.1, from 2.6.16.13. This reverts the PPC radeon patch + aswell. + * pcmcia: TI PCIxx12 CardBus controller support. + * r1000: New realtek driver. + * irda/sir[41589]: Add small timeout to kthread to reduce load. + * powerpc[30273]: Add BootX support patch. + * bcm43xx: Sync to latest source from wireless git. + * Change lilo/grub Suggests to Recommends. + * sky2: Add patch to fix IRQ masks. + * sound/pcmcia[44283]: PCMCIA sound devices do not depend on ISA. + * VFS: Ensure LOOKUP_CONTINUE flag is preserved by link_path_walk() + - Bug #44783 + * Fix per zone pages, min-zone overflow + - Bug #44782 + * asus_acpi: Disable extraneous error reading LCD status. + * forcedeth: Let the driver work when no PHY is found. This matches the + breezy behavior. + - Bug #45257 + + Changes by Matthew Garrett + + * acpi/sony: Add FN hotkey support + * pcmcia/yenta[43881]: Fixup the subordinate number parent bridge of yenta Cardbus + Bridges + * imacfb: Disable if EFI is not available + * vga16fb: Use 640x480 on certain machines. Specifically Apple and some Sony + laptops. + * PCI: MSI(X) save/restore for suspend/resume. + + Changes by Daniel T Chen + + * sound/pci: Add hp_only quirk for Dell D800 laptops + * sound/pci/ca0106: Fix error handling for nonexistent mpu401 interface + (ca0106 driver) + * sound/pci: + - Revert to hp_mute_led for HP n*8*0 laptops + - Add hp_only quirk for another Dell laptop model + * sound/pci/hda: + - Use hp model for all HP laptops with AD1981HD codec + - Fix support for Thinkpad *60s (patch_analog.c) + * sound/pci: Fix possible OOPS with ALI5455 SPDIF-in + * sound/pci/hda: Fix master mute switch on Vaio laptops using STAC7661 + HDA codec + * sound/pci: Add Dell Inspiron 6000 to hp_only quirk list + * sound/bluetooth: Fix suspend/hibernate in snd-bt-sco driver + * sound/pci/hda: Really merge patch_realtek.c from upstream + alsa-driver 1.0.11 + * sound/pci/ice1712: Backport fixes and cosmetic cleanups from alsa-driver + 1.0.11 + * sound/core: Minor optimisations from alsa-driver 1.0.11 + + Changes by Fabio M. Di Nitto + + * Upstream informs us about 2 critical bugs in our cluster modules: + - Update cman and dlm. + * Backport inotify syscalls to hppa. + + Changes by Dave Airlie + + * DRM backport patches: + - fixup r300 scratch on BE machines + - add new radeon PCI ids.. + - read breadcrumb in IRQ handler + - fixup i915 breadcrumb read/write + - fixup improper cast. + - rationalise some pci ids + - Add general-purpose packet for manipulating scratch registers (r300) + - rework radeon memory map (radeon 1.23) + - update r300 register names + - fixup PCI DMA support + + -- Ben Collins Thu, 18 May 2006 10:00:24 -0400 + +linux-source-2.6.15 (2.6.15-22.34) dapper; urgency=low + + Changes by Ben Collins + + * Include dma-mapping.h in aic94xx driver. Fixes FTBFS on sparc. + * scsi/aic7xxx[41061]: Include spi module from 2.6.17-git as spi2, and use + it for aic7xxx modules. This fixes the failure to load these modules. + Caused by the need for symbols now found in the 2.6.15 spi module. + + -- Ben Collins Sun, 7 May 2006 10:23:49 -0400 + +linux-source-2.6.15 (2.6.15-22.33) dapper; urgency=low + + Changes by Ben Collins + + * ieee80211: Sync to wireless-git. + * bcm43xx: Sync to wireless-git. + * Add ipw3945 for nic-modules udeb. + * Fix net/Makefile so ieee80211_1_1_13 builds. + * Add Adaptec aix94xx and SAS drivers. + * Cherry pick ipw2200 quiese patch back into existence. + * sonypi[35319]: Add ICH7 support. + * drm/via[29586]: Fix 64-bit crashes. + + Changes by Daniel T. Chen + + * sound/core/seq: Fix sleep in atomic in virmidi driver + * sound/pci/ac97: Add Samsung NP-X20C004/SEG to Jack Sense blacklist + * sound/pci: Add VT8251 workaround to via82xx driver + * sound/pci/hda: Add id for ASUS M9 laptop and id for AD1988B codec to + patch_analog.c + * sound/drivers/mpu401: Properly propagate error for nonexistent mpu401 + interface + * sound/pci/emu10k1: #34831: Fix remaining instances of improper error + propagation for nonexistent mpu401 interfaces + * sound/pci: #41015: Fix Master volume control for headphones (hp_only + quirk) for HP NX8220 (intel8x0) + * sound/pci/hda: Fix capture from line-in on VAIO SZ/FE laptops + * sound/pci: Make DXS_SRC the default for VIA8235/8237/8251 chips + * sound/pci/ice1712: #40158: Fix DXR support for Terratec DMX 6FIRE + + Changes by Matthew Garrett + + * libata: Hotswap support + * libata: ACPI hotswap support + * bluetooth: Fix failures for suspend/resume + * libata: Update handling of queued commands. + * acpi: Let drivers check if the system is in suspend state + * libata: Tidy up the acpi hotswap code + * pci: Don't do insane PCI config space restoration + * acpi: Threaded ACPI support + + -- Ben Collins Tue, 2 May 2006 00:56:08 -0400 + +linux-source-2.6.15 (2.6.15-21.32) dapper; urgency=low + + * Fix libata docbook entry. FTBFS. + + -- Ben Collins Fri, 21 Apr 2006 10:45:37 -0400 + +linux-source-2.6.15 (2.6.15-21.31) dapper; urgency=low + + Changes by Ben Collins + + * 14394: Sync aix79xxx driver to 2.6.17-rc version. + * 20125: Fix dying mice on Intel UHCI controllers. + * 22449: Add sis190 to nic-modules udeb. + * sound/ppc: Revert tumbler changes for gpio rework. + * 38228: Add R40E to proc-idle blacklist. + * hdaps: Correct x/y inversions for IBM notebooks and others. + * ieee80211_1_1_13: Slightly munged ieee80211 1.1.13 stack for use with + ipw3945. + * ipw3945: New driver. + * 38278: Rectify some PCI id's between hard and soft mac drivers. Also, add + needed firmware. + * 39985: Do not print mapping table info on x86_64 (quiet boot). + + Changed by Matthew Garrett + + * libata: Backport of ACPI handling patch. + * ide-acpi: Replaces our old IDE ACPI support code with new and shiney + stuff that should work better on some hardware. + * acpi-osl: Fixes some cases where code could sleep during resume (not + allowed, since interrupts are disabled). + * acpi: Bad characters shouldn't be fatal. + * nsc-ircc: Stop nsc-ircc trying to grab ioports it already owns + * pnp: Add support for suspend/resume callbacks in the pnp layer (from + upstream) + * 8250_pnp: Add support for other Wacom tablets that are around + + Changes by Daniel T Chen + + * sound/{core,pci/emu10k1}: Fix silence on resume and OOPS on suspend for + emu10k. + * sound/pci: Add hp_only quirk for pci id [161f:2032] to via82xx ALSA driver + * sound/pci: Fix detection of SIS7012 tertiary codec for intel8x0 + * sound/pci: Add various models to supported list + * sound/pci/au88x0: Fix overrun in sound/pci/au88x0/au88x0_pcm.c + * sound/pcmcia/pdaudiocf: Fix Coverity #1099 (memory leak in + sound/pcmcia/pdaudiocf/pdaudiocf.c) + * sound/pci/ice1712: Add basic support for M-Audio Revolution 5.1 + * sound/pci/ice1712: Add support for Prodigy-7.1LT + * sound/pci/ice1712: Force analog daughter board detection for Juli@ + * sound/pci/ice1712: Fix wrong value types for enums + * sound/pci/ice1712: Fix M-Audio Delta 1010LT SPDIF output + * sound/pci/hda: Add support for Lenovo 3000 N100-07684JU + + Changes by Chuck Short + + * pci: Enable renumbering of PCI bus#. + * pci: Blacklist HP F.12 + * fsam7400: Disable autoload for fsam7400. + * pl2303: Add support for Speed Dragon Multimedia. + + Changes by Fabio M. Di Nitto + + * Pull updates from David S. Miller sparc branch to fix some smp issues. + * Make IOSCHED deadline default on -server* configs (x86 and x86_64). + + -- Ben Collins Thu, 20 Apr 2006 23:00:55 -0400 + +linux-source-2.6.15 (2.6.15-20.30) dapper; urgency=low + + Changes by Ben Collins + + * 35795: Keeps the kernel from panicing when it notices that an IOAPIC is + reported, but not really present. Patch applied, taken from upstream + 2.6.16. + + * 35742: AGP/DRM backport support for 945gm chipset. + + * 35703: Added firmware version override for acx. + + * 35145: Don't check num_possible_cpus() for powernow-k8's PSB BIOS usage. + It explains in comments that this is only available on UP machines, so the + check is only sanity anyway. + + * Fixup hppa and sparc so we get nic udeb's. + + * Rebase PCIE patch for bcm43xx. + + * Sync to 2.6.15.6. + + * Update ARECA (arcmsr) driver. + + * 34978: Fix isdn Makefile so misdn actually gets compiled. + + * 34791: Add Toshiba Protege M300 to synaptics rate=40 blacklist. + + * 33939: Disable CONFIG_EDD. Causing problems, and not needed anyway. + Symptons were seemingly locked up after grub jumped to kernel, but + actually would boot after 2 minute delay. + + * 33855: Update pcc_acpi driver. + + * 33854: Better config setup for memory split options. + + * sky2: Backport driver from 2.6.16, version 1.1. + + * 33704: Better patch for ATI IO-APIC timer bugginess. + + * bcm43xx: Quite a few upstream patches that should make things work better + out of the box (mjg59). + + * prism54: Via mjg59: + - Load firmware before bring up interface. + - Add prism54 softmac driver. + + * Fix ACPI-PNP brokeness, mjg59. + + * Fixes for swsusp with highmem, mjg59. + + Changes by Daniel T. Chen + + * sound/isa: Fix memory leak in isa/es18xx.c + * sound/isa: Update opl3sa2 driver + * sound/hda: Fix support for Samsung R65 and ASUS A6J + * sound/hda: Fix BIOS autoconfig, thereby fixing inaudible sound on recent + Dell laptops with STAC9200 + * sound/hda: Remove duplicate line in + pci/hda/patch_sigmatel.c::ref927x_pin_configs[] + * sound/usb: Fix to properly resolve volume at initialization + * sound/pci/hda: Fix noisy stereo output on AD1986A 3stack model + * sound/pci/hda: Fix mic input and erroneous post-resume + reinitialization for STAC92xx codecs + * sound/pci/ac97: Add Toshiba Satellite A-15 S127 to Jack Sense + blacklist + * sound/pci: Add pci id for MCP51 to pci/intel8x0.c + * sound/pci/ac97: Add Asus A7V8X-MX to Jack Sense blacklist + * sound/usb: Fix double kfree() and possible memory leak in sound/usb/usbmixer.c + * sound/usb: Fix non-48 kHz sample rates on SB Audigy 2 ZS + * sound/usb: Make error messages more informative + * sound/usb: Add mixer control names for the AudioTrak Maya44 USB + * sound/usb: Fix Edirol UA-20; Add Edirol UM-3ex/PC-50/UM-1EX/UM-2EX, + Roland G-70, Miditech Play'n Roll, Casio AP-80R/PL-40R, Yamaha MDP-5/EZ-J24 + * sound/pci/ac97: Add ThinkPad T43p 2668-G7U to Jack Sense blacklist + * sound/isa/cs423x: Fix silence in right channel of cs4236+ driver + * sound/pci: Add ASRock models to dxs entry list + * sound/isa/ad1848: Fix double-free in AD1848 driver + * sound/drivers/opl3: Fix use after free() in sound/drivers/opl3/opl3_{oss,seq}.c + * sound/pci/rme9652: Fix off-by-ones in RME9652 driver + * sound/drivers: Fix memory leak in sound/drivers/serial-u16550.c::snd_uart16550_create() + * sound/pci/cs46xx: Fix memory leaks in CS46xx driver + * sound/isa/gus: Fix gus_pcm dereference before NULL + * sound/core: Fix memory leaks in error path of sound/core/control.c + + Changes by Fabio M. Di Nitto: + + * Sync latest sparc64 bug fixes from David S. Miller. + + * Backport Emulex from 2.6.16 to fix a hard machine hang. + + * Backport e1000 driver from 2.6.16. + + * Add missing .proc_name to scsi_host_table in Emulex driver. + (drivers/scsi/lpfc/lpfc_scsi.c) + + * Add gitk to linux-kernel-devel. + + * Actually build linux-kernel-devel. + + -- Ben Collins Mon, 20 Mar 2006 10:54:39 -0500 + +linux-source-2.6.15 (2.6.15-19.29) dapper; urgency=low + + Changes by Ben Collins + + * Fix d-i firmware list (ipw2200 update), FTBFS. + + * Add nic-firmware for ia64, sparc and hppa. They have the drivers, so it's + pointless to not have the firmware too. + + * PPC: Add AOAShasta and layout-id 0x2d to toonie sound detection. + + * imacfb: Add support for mac mini, and better autodetection (mjg59) + + * ipw2200: Include two patches from upstream: + - Fix problem with diversity algorithm causing disassocaition + - Fix endian issues with v3.0 fw image format + + * Pull sparc64 updates from davem. + + -- Ben Collins Sun, 19 Mar 2006 10:30:20 -0500 + +linux-source-2.6.15 (2.6.15-19.28) dapper; urgency=low + + Changes by Ben Collins + + * bcm43xx: Add support for PCIE cards (Mactel related, mjg59) + * ipw2200: quiesce on shutdown (lost from breezy, mjg59) + * 31879: Add usb-handoff command line to enable usb-handoff pci quirks. + Disable the quirk by default. + * 31936: Update synaptics-usb driver (previously known as cpad) to version + 1.4rc3 + * Update ipw2200 to version 1.1.1. + * Update bcm43xx to 3-14-2006 snapshot. + * Merge DaveM's niagara tree. + - Tg3 fixes + - Fix proc/cpuinfo output on niagara (sun4v) + - E1000 fixes + * 33030: Add support for VIA VT8251 to ahci driver. + + Changes by Daniel T. Chen + + * sound: Add Jack Sense blacklist for ThinkPads + * sound: Add card entry for Audigy4 SB0400 model + * sound: Fix use after free() in pci/emu10k1/emu10k1_synth.c + * sound: Properly support sound on Siemens FieldPG-M + * sound: Add support for Agere's variant of Si3054/5 + * sound: Apply various fixes to Sigmatel HDA codecs + * sound: Restore xxx_t typedefs for compatibility in pci/hda/patch_sigmatel.c + * sound: Restore xxx_t typedefs for compatibility in + * sound: Fix support for Analog Devices AD198x HDA + * sound: Restore xxx_t typedefs for compatibility in + * sound: Simplify C-Media cmi9880 HDA codec support + * sound: Fix initialization and routing for Realtek + * sound: Finalize HDA restructuring for + * sound: Add model for Aopen i915GMm-HFS motherboard + * sound: Fix sound on laptops with AD1986A HDA codec + * sound: Support FIC P4M-915GD1 with ALC880 codec + * sound: Add support for Sony VAIO FE550G and SZ110 + + Changes by Fabio M. Di Nitto + + * Add linux-kernel-devel meta-package to pull in all core development + tools. + * Set CONFIG_SERIAL_8250_NR_UARTS to 48 to avoid regression from 2.6.12. + + -- Ben Collins Thu, 9 Mar 2006 09:39:41 -0500 + +linux-source-2.6.15 (2.6.15-18.27) dapper; urgency=low + + Changes by Ben Collins + + * Fix build failure in mrv8k on sparc. + + * Lots of Mactel related patches from mjg59. + + * Revert to 1/3GB physical mem. Should fix valgrind among other things. + + * Sync to 2.6.15.5. + + * Enable all of the PCI and USB wireless stuff for sparc. + + Changes by Fabio M. Di Nitto + + * Readd input-modules udeb to sparc64. + + -- Ben Collins Tue, 7 Mar 2006 07:40:01 -0500 + +linux-source-2.6.15 (2.6.15-17.26) dapper; urgency=low + + * Quick reupload to fix sparc FTBFS (due to out-dated config's). + + -- Ben Collins Mon, 6 Mar 2006 18:17:18 -0500 + +linux-source-2.6.15 (2.6.15-17.25) dapper; urgency=low + + [Your company ad here! Send payments to Ben Collins] + + Changes by Ben Collins + + * Enable EFI for x86 (MacBook Pro, come hither). + + * Cleanup the message for finding the DSDT in the initramfs. On my amd64, it + was just printing an extraneous " not found!". + + * Backported EHCI-HCD (USB2 Host) driver from 2.6.16. Maybe this will fix + some EHCI related bugs. + + * Backport aic7xxx driver from 2.6.16-git. + + * #28902 3w-9xxx: Add proc_name member to scsi_host_template + + * Whoops, bcm43xx went missing. + + -- Ben Collins Mon, 6 Mar 2006 15:19:40 -0500 + +linux-source-2.6.15 (2.6.15-17.24) dapper; urgency=low + + Changes by Ben Collins + + * #28485: Add WAP capa decleration to ipw2[12]00 drivers. + + * #27842: Cherry picked WoL fix from 2.6.16 git. Fix claims to fix lockup + when loading driver. + + * #28174: Applied 10-byte/TYPE_RBC patch to sbp2. + + * #31061: Assume AC power when there are no batteries, regardless of the + hardware not reporting it. + + * Merge radeon DRI PCI ID's (cherry-pick from mainline). + + * Update bcm43xx from daily git snapshots (wow, I initially typed snapshits, + hope that's not an omen). + + * x86_64: Make a default config option for when amd64 is booted on i386. Set + our defaults to something more Ubuntu specific. + + * sym2: Update driver from 2.2.1 to 2.2.2, mainly for parisc, but should + help all architectures. + + * tulip: Updates from upstream, mainly for parisc. + + * acpi_sbs: Fix divide-by-zero possibility. Patch from Matthew Garrett. + + * input: Allow root to inject unknown scancodes. Useful for keys like + hibernate and screen lock. Patch from Matthew Garrett. + + * Large parisc sync. + + * Increase LOG_BUF_SHIFT for all architectures to 17 (128k). This should + help catch all the kernel messages (especially on amd64 where we lose a + lot of the initial kernel setup). + + * video1394: Pulled patch sent to mailine to fix error return. + + Changes by Fabio M. Di Nitto + + * Merge SUN4V support from David Miller. + + * Update redhat cluster suite to CVS20060222. + + * Stop spca5xx to redefine PUD_SHIFT that's arch specific mem management. + + * Import OCFS2 and configfs bug fixes from 2.6.16-rc5. This commit must be + reverted before we will sync 2.6.16 directly from git or they will + conflict badly. + + * Bump kernel-package B-D version to get that sparc32/sparc64 identify mess + out of the way. + + -- Ben Collins Wed, 22 Feb 2006 20:09:12 +0100 + +linux-source-2.6.15 (2.6.15-16.23) dapper; urgency=low + + Changes by Ben Collins + + * Add build-depends for m4. Mainly for ppc, but just make it generic. + + -- Ben Collins Sun, 19 Feb 2006 11:46:26 -0500 + +linux-source-2.6.15 (2.6.15-16.22) dapper; urgency=low + + Changes by Ben Collins + + * Synced bcm43xx to latest SVN. + + * Added Mac-On-Linux kernel module. Not sure why MOL is contrib. It can + boot Linux without any proprietary software. Anyway, this module will make + it easier for MOL users, they wont have to recompile mol-module-source + every time the kernel is updated. This also includes an extra patch that + isn't in the original source that allows booting OSX Tiger. + + * Disable CONFIG_BOOTX_TEXT on ppc to avoid the white flash of prom console. + Also disable prom_printf (through a compile time config option). + + * Incorrectly set memory split to 3/1 instead of the default 1/3. Revert to + correct 2/2 mapping. Fixes problems with UML and Wine. + + * Merged 2.6.15.4 + + * #30309: Added A8V-MX to pci=noacpi blacklist. + + * #30707: Fix incorrect pci device id for ipg driver (DLink cards). + + * #30987: Make "DMA end" message a DBG statement only. + + * Fix version in unionfs Makefile (1.1.2). + + * #31431: Fix description of linux-source-2.6.15 package to steer users to + linux-headers where needed. + + * #31518: Add Sempron to list of supported CPU's by -k7 image. + + * #31528: Disable VERBOSE_IDE_CD_ERRORS. + + * Quiet ieee80211 a little. + + * Re-apply ACPI-CA patch set. Add a couple of fixes from Matt to get it + all working. + + Changes by Fabio M. Di Nitto: + + * Fix regression from hoary kernel in megaraid scsi driver: + In the breezy kernel a split up of the megaraid and megaraid_m* driver was + done to be able to support all controllers. During the split one pci + subvendor ID was lost due to removal of PCI_ANY catch all. + Thanks to Brian (bubba) Wilson for spotting the issue and testing the fix. + + * [SECURITY]: Fix extra dst release when ip_options_echo fails. + (CVE-2006-0454) + + * Update redhat cluster suite to CVS20060216: + - Add DIO_CLUSTER_LOCKING support from + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=173912 + (Thanks to Wendy Cheng for pushing the patch back to us) + + -- Ben Collins Sat, 18 Feb 2006 15:11:19 -0500 + +linux-source-2.6.15 (2.6.15-15.21) dapper; urgency=low + + * Quick release + + * Fix regression in squashfs. The 2.x compatibility layer was broken. Added + missing call to old_decode_dev() for chr/dev types. + + -- Ben Collins Thu, 09 Feb 2006 10:48:00 -0500 + +linux-source-2.6.15 (2.6.15-15.20) dapper; urgency=low + + Changes by Ben Collins + + * Add 0x52 layout-id for toonie pmac sound. + + * #29784: Updated unionfs to 1.1.2 + + * Updated squashfs to latest CVS. + + * Apply emu10k patch to fix distortion on Audigy 2 ZS notebook. + + * #29859: Enable v9fs by default. + + * snd-powermac: Do not fail on headphone/lineout detection failure for + tumbler. + + * ndiswrapper: Update to 1.8 + + * Backported hfsplus changes from 2.6.16-git. Allows mounting of hfsplus + + case-sensitive filesystems. + + * Backport emu10k power management support. + + * #28543: Added dmi-table override for ASUS A8N motherboard, acpi=noirq. + + * #19749: Reverted to stock 2.6.16-git code for ata_piix. + + * Fix powernow-k7 to work on SMP. + + * Add new quirk to not send clear-halt for some devices. Add this quirk to + UGCI devices. + + * Pulled from l-k: Handle more bogus PCI MCFG entries. + + * Pulled from linux1394: + - sbp2: prevent unloading of 1394 low-level driver + - sbp2: fix another deadlock after disconnection + + * Add ns87415 to hppa ide modules (per Lamont). + + * Update/Sync for sdhci. Submitted by Matthew Garrett. + + * Add 818x/8187 wireless drivers. + + * Cherry picked from 2.6.16-git: x86: GDT alignment fix + + * Synced ACPI to current ACPICA code. Patches via Matthew Garrett. + + * Added Smart Battery driver. + + * #30340: Bump module-init-tools depends. + + * #30335: Build mmc_block into mmc_core to make sure the block + functionality is always present after mmc_core is loaded. + + Changes by Chuck Short: + + * Added rt2600 wireless driver support. + + * Blacklisted Dell Optiplex. Closes #23330. + + -- Ben Collins Mon, 6 Feb 2006 11:15:02 -0500 + +linux-source-2.6.15 (2.6.15-14.19) dapper; urgency=low + + Changes by Ben Collins: + + (From here out all bug numbers refer to malone bug numbers, unless noted + otherwise) + + * Change depends for ia64 and hppa s/initrd-tools/initramfs-tools/ + + * #28533: Add Dothan tables to centrino-speedstep driver. + + * Add mrv8k-0.0.2 Marvell wifi driver. + + * Backport pata support for sata_promise driver. + + * Reverted change to powernow-k7, since it didn't fix the problem. + + * Reverted local changes to ieee1394. + + * Enable irq events for platform functions. + + * Fix snd-pmac-gpio to check for NULL altname. + + * #28580: Fix device table for yealink driver. + + * Fix linux-headers Makefile EXTRAVERSION (broken my sed when EXTRAVERSION + went to .1-ubuntu1). + + -- Ben Collins Wed, 25 Jan 2006 09:39:28 -0500 + +linux-source-2.6.15 (2.6.15-13.18) dapper; urgency=low + + Changes by Ben Collins: + + * hid-input: Make powerbook FN key default to fkeys first (matches macosx + operation). + + * Patch to fix oopses in kobject (pulled from l-k). + + * Patch to fix workqueue oopses when remove cpu0 (pulled from l-k). + + * Patch to accept vci devices on older powerpc's as PCI Bridges (pulled from + linuxppc-dev). + + * Backport pmac_pfunc interfaces from 2.6.16-git + + * Make use of plaform functions for sound/ppc to get toonie sound working on newer + powerbook's. + + * #28619: Apply patch for asus-acpi to fix oops. + + * Add PowerBook5,7 id (0x50) to toonie listings. + + * Update to 2.6.15.1 + + * Update bcm43xx and softmac code to latest repo's. + + * Cherry picked security patches for: + - CVE-2006-0095(9d3520a339d62f942085e9888f66905eb8b350bd): + dm-crypt: zero key before freeing it + - CVE-2005-3356(7c7dce9209161eb260cdf9e9172f72c3a02379e6): + double decrement of mqueue_mnt->mnt_count in sys_mq_open + + * unionfs: Disable debug (should fix oopses). + + * Include linux/types.h in asm/alternatives.h to fix compilation problems + (specifically with vmware modules). + + * ia64 kernels now depend on elilo >= 3.6-1, which allows initramfs support. + + * Bump build-dep for kernel-package to get the one that has initramfs + support for hppa and ia64. + + Changes by Fabio M. Di Nitto: + + * Provides rhcs-modules only from -server* flavours on i386/amd64. + + Changes by Daniel T Chen: + + * Sync ipw2200 driver to 1.0.10. + + * Fix sound output for Sound Blaster Audigy SE [SB0570] and Shuttle XPC + SD11G5 + + Changes by Chuck Short: + + * Disabled stupid keyboard warning. Closes #20152. + + * Avoid clock running too fast on many ATI IXP and nforce motherboards. + Closes #11304. + + * Disable ACPI for MSI Neo4 FI. Closes #15939. + + -- Ben Collins Thu, 19 Jan 2006 10:33:30 -0500 + +linux-source-2.6.15 (2.6.15-12.17) dapper; urgency=low + + Changed by Ben Collins: + + * Update spca5xx driver: #21279 + + * Update Changelog-2.6.15 to final version. + + * Minor cleanups to match stock code. Pushed a lot of stuff upstream. + + * Malone #6490: Updated acerhk driver to 0.5.31. + + * #21417: Add specific firmware version for acx driver. + + * Disable USB_EHCI_SPLIT_ISO and USB_EHCI_ROOT_HUB_TT, since they are + experimental. + + * Add smp-alt-disable boot option to allow disabling of alt-smp code. + + * #14081: Add sdhci driver (Secure Digital MMC). + + * Update ipw2200 driver to 1.0.9 + + * #22131: Enable IPW2200_MONITOR + + * Update ieee80211 to 1.1.8. + + * ICH8 patches from Jason Gaston (pulled from + linux-kernel). + + * #21968: Fix mix of simple/complex smp alternatives. + + * Fix amd64 complex smp alternatives to actually work. + + * Add uli526x module to nic-modules udeb. + + * Patch from BenH to support newer dual core G5's and iMac G5's with iSight. + + * Updated bcm43xx driver. It now contains a module device table, so it's + going to start loading for people. + + * Added config option to allow enabling or disabling the default behavior of + SMP alternatives. For -server kernels, it will default to disables (enable + with smp-alt-enable), and for desktop it is enabled (disable with + smp-alt-disable). + + * Disable CLUSTER, OCFS2 and GFS for desktop kernels on i386 and amd64. The + -server kernels are suggested for these. + + * Fix GENERIC_TBSYNC config option. + + * Remove slashed from disk names when creation dev names in sysfs. Patch + pulled from l-k. + + * Use better powerbook-fn patch, pulled from l-k. + + * Security: + - CVE-2005-4605: Verified, already fixed. + - CVE-2005-3623: Verified, already fixed. + - CVE-2006-0035: Patch pulled from git. + - CVE-2006-0036: Patch pulled from git. + - CVE-2006-0037: Patch pulled from git. + + Changes by Fabio M. Di Nitto: + + * Stop shipping cluster/cmirror in coordination with upstream. + + -- Ben Collins Thu, 12 Jan 2006 13:41:20 -0500 + +linux-source-2.6.15 (2.6.15-11.16) dapper; urgency=low + + The "Ben got a PowerBook for Christmas" Release. + + Changes by Ben Collins: + + * Bump ABI. + + * Radeon_cp: Patch from BenH, fixes screen corruption for console switching + and resume. + + * appletouch: Fixes for latest powerbooks. + + * hid-input-powerbook: Tweaks for fn multifunction keys on recent power + books. + + * Update bcm43xx and softmac code. + + * Apply patch to ieee80211 from Johannes Berg which allows bcm43xx to use + wep encryption. I'm now using my Airport2 card with bcm43xx on a WEP + enabled AP (albeit, only at 11M) + + * #21032: Patch to fix ndiswrapper on amd64. + + * #20622: Fix powernow-k7 to work when kernel is compiled for SMP (but only + works on actual UP systems). + + * Fix i2c-keywest stuck state machine. + + * Synced Linus tree. This means final 2.6.15. From here after, we will be + following gregkh's stable 2.6.15.y git. + + * parisc/powerpc: Fix signal.h not to use BITS_PER_LONG for userspace + compile + + * Malone #3819: Add 1SET68WW for R40 laptop in C2/C3 sleep blacklist. + + Changes by Fabio M. Di Nitto: + + * Update configfs and ocfs2 from the new splitted oracle git repository. + + * Make therm_adt746x a bit more silent. + + * Update redhat cluster suite to CVS20060102: + - Provides rhcs-modules-4. + + Changes by Chuck Short: + + * Added hotplug support to qlogicfc. + * Added hotplug support to igafb. + * Added hotplug support to alim7101_wdt. + * Added hotplug support to specialix + * Added hotplug support to ip2main. + * Added support to ATI/Philips USB RF remotes. (Closes #16390). + * Removed spurious warning from asus_acpi. (Closes #10834). + * Updated Toshiba satelite USB quirk fix. + + -- Ben Collins Thu, 29 Dec 2005 13:49:32 -0500 + +linux-source-2.6.15 (2.6.15-10.15) dapper; urgency=low + + Changes by Ben Collins: + + * Bump ABI. + + * Sync to Linus (rc7) + - scsi scan and transport + - usb-storage scsiglue + - saa7134 oss and alsa + - saa7127 + - nfs + - vlan + - ipv6 + - xfrm + + * #5049: Add my logic back to CDROMEJECT. Has to be read or 0x01 start-stop + that is giving it the right magic. + + * #15940: Remove uneeded error message for missing _GTM methods. + + * Add arcmsr to scsi-modules udeb. + + * Add new SMP/UP alternatives code to replace the inferior SMP2UP code. + Benefits of this code over old smp2up: + - Handles modules correctly (module fixup wasn't even enabled in old code). + - Handles converting smp functions to up alternatives. + - Can even re-enable SMP after hotplug of a new cpu. + - Should be easier to port to amd64 and possibly ppc. + + * Port alternative_smp code to x86_64. + + * Sync acpi git: + - Fix processor_thermal inverted check + - Bumps max owner id's to 64 (was 32). + - ACPI_EC, not just for X86 anymore + + * Updated softmac code to rev 211. + + * Updated bcm430x driver to rev 946. + + * Sync netdev git: + - sky2 + - orinoco + - skge + + * Get rid of amd64-k8-smp, make amd64-k8 SMP. Make amd64-generic SMP also. + + -- Ben Collins Wed, 21 Dec 2005 09:01:50 -0500 + +linux-source-2.6.15 (2.6.15-9.14) dapper; urgency=low + + Changes by Adam Conrad: + + * Fix archtable to include KPKG_ARCH for generic headers, and fix + debian/rules to use that value when building header packages. + + Changes by Ben Collins: + + * Stop chasing our tails and fix kernel-package, which was the real reason + our symlink kept getting messed up. Build dep on this sweet new kernel + package. + + -- Ben Collins Wed, 21 Dec 2005 08:22:38 -0500 + +linux-source-2.6.15 (2.6.15-9.13) dapper; urgency=low + + * Add the missing amd64-server ABI file, so we can build on amd64. + + -- Adam Conrad Wed, 21 Dec 2005 05:52:33 +0000 + +linux-source-2.6.15 (2.6.15-9.12) dapper; urgency=low + + Changes by Ben Collins: + + * CONFIG_ACPI_INTERPRETER? What's what? Seems some of our patches/modules + from breezy used this config option to dep on. It no longer exists, so + these modules were not getting enabled (sony_acpi, acpi_dev, sonypi, etc). + + * Fix amd64-k8-smp header package. + + * Sync to Linus. Lots of random fixes. We are post rc6 now, so it's mostly + important things. + + * Set KPKG_ARCH when building generic header package. + + -- Ben Collins Tue, 20 Dec 2005 22:54:26 -0500 + +linux-source-2.6.15 (2.6.15-9.11) dapper; urgency=low + + Changes by Ben Collins: + + * Bump ABI + + * #1927: Switch 8139too driver to MMIO (no idea why PIO was enabled). Synced + 8139too config options across all architectures. + + * Sync to linux-2.6 (-rc6): + - PowerPC changes + - Large DVB merge + - Networking related changes + - x86_64 updates + - PCI fixes (some related to k8) + - video/fb cleanups/fixes + - ia64 updates + - sparc updates + + * Sync netdev: + - sky2 updates + - e1000 updates + + * Sync ieee1394: + - nodemgr + - sbp2 + - ohci1394 + + * #20807: Revert sata_sil to stock upstream code. + + * Revert sis5513 driver patch for SiS 965. Conflicted with an existing + patch. + + * #20978: Add bcm43xx to nic-modules. Although it wont work (no firmware), + atleast it can be available for use if someone takes the time to install + the firmware (usb stick?). + + * Upgrade unionfs to latest version: 1.1.0 -> 1.1.1 + + * #13404: alps: Add Fujitsu Siemens S6010 support. + + * #21032: Add missing source file for x86_64_stubs.h generation. Fixes + missing symbols on x86_64 builds. + + * #17398: Disable ACPI-PCI for Toshiba Tecra A4 laptops, bios ver 1.60. + + * Add amd64-server. + + * Tune i386 and amd64 targets as follows: + - Server: 100 HZ, PREEMPT NONE + - Desktop: 1000 HZ, PREEMPT, PREEMPT BKL + + * #17897: i2o layer needs to leave the pci device enabled when it's in use + by someone else. + + * #21206: Add realtime-lsm module. + + * Code reversion: ieee1394, libata (stock kernel, no git pulls). Libata + still retains out suspend/resume code. Cleaned up the scsi suspend/resume + stuff a bit. + + * #5049: Finally fix the bug where CDROMEJECT wont eject some devices. + + Changes by Chuck Short: + + * Added support for Acer TravelMate 240 wistron buttons interface. + + -- Ben Collins Mon, 19 Dec 2005 11:33:24 -0500 + +linux-source-2.6.15 (2.6.15-8.10) dapper; urgency=low + + Changes by Ben Collins: + + * ABI Bump + + * #8745: Added ov511_decomp and ov518_decomp modules. + + * #2129: Apply isapnp support patch to nsc-ircc driver. + + * #1978: Include patch for radeonfb D2 sleep state. + + * sky2: Quiet debug messages. + + * #17547: Increased COMMAND_LINE_SIZE to 1024 for all 6 architectures + (parisc was already at 1024). + + * Sync trivial ia64 and acpi changes (git sync). + + * Rename i386 server-{low,high}end to server and server-bigiron. + + * #8853: Added ECC memory check modules, patch in bug report was taken from + Suse. + + * #10770: Invert read of wled proc file to show correct sate of LED. + + * #8320: Remove hardcoded skip of 8250 driver initialization for PMac + + * via82cxxx IDE: Add VT8251 ISA bridge, patch from Daniel Drake + , taken from linux-kernel. + + * #12843: Include podxtpro USB driver. + + * #14216: Set EXTRAVERSION in installed kernel-header Makefile. + + * Fix ppc and parisc asm link in kernel headers package. + + * #14460: Enable VIA and Savage DRM modules. + + * #15573: mv643xx: Add missing MODULE_DEVICE_TABLE. + + * #16029: Add newer acx driver. Requires newer firmware files in + linux-restricted-modules-2.6.15.3. + + * #15993: Add IP1000A gigabit ethernet driver. + + * Consolidated scsi dma direction checking. Fixes crash in sbp2. Patch taken + from linux1394, from James Bottomley. + + * Added mISDN drivers. + + * Added getabis script. Added rules target for getprevabis to make use of + it. + + * vga16fb: Set mode to 640x400 to be more compatible. This should close more + bugs than I'd care to list. I will enjoy doing the mass closing. + + * #17041: Reports show that longhaul cpufreq support is broken, and wont be + fixed. For us that means disabling the driver. + + * #17236: Add support for SiS 965 in sis5513 driver. + + * #17367: Reapply patch for DVICO DVB TPlus, referenced in bug #5773. + + * Include missing cloop patch to fix cloop over dm. + + * #17872: Add proper module device table for initio scsi driver. + + * #17923: Export parport_get_port() from parport/share.c. + + * #18162(and others): Make ide-core built-in for all architectures. The + issue was that modular build caused ide= and hd?= kernel command line + options to be ignores, since ide.ko was only expecting them as module + options. Notified Kamion and Keybuk. ide-core-modules udeb is going away. + + * Make unix.ko built-in. Who's bright idea was this anyway? + + * Upgraded to linux-wlan-ng/prism2 0.2.3 + + Changes by Chuck Short: + + * Added CONFIG_EFI_PARTITION=y. Closes (#20082). + + -- Ben Collins Tue, 06 Dec 2005 14:16:47 -0500 + +linux-source-2.6.15 (2.6.15-7.9) dapper; urgency=low + + Changes by Ben Collins: + + * Patch from Keybuk: Revert some of our modular ide patch. The general issue + is that we do things different in dapper than we did in breezy, which + makes this patch wrong now. + + * Applied patch for via-sound irq problem (from breezy). + + * Added HP 4318 id to bcm43xx driver. + + * Upgraded bcm43xx and softmac to latest code. Should have working xmit/recv + now. + + * combined_mode patch from Jesse Barnes (snagged from l-k). Allows you to + target ide resources to IDE, LIBATA, or both. + + * Removed devices from prism2 device table, so hostap can take precedence. + Prism2 can still be used if hostap module is unloaded, and prims2 + reloaded. + + * Fix acx100 makefile to it actually compiles this driver. + + * Enable vga16fb and vesafb for ia64. Required some work to export all the + symbols needed for modular vga16fb. VesaFB also needed to ifdef some mtrr + stuff. + + * libata: Enable ATAPI by default. Add ATA_FLAG_NO_ATAPI, and enable it for + drivers known not to work with atapi devices (either because theie phys + can't or the driver doesn't implement it yet). Added printk to let users + know when and why their atapi device is disabled. + + Patch was done using jgarzik's suggestions (sata_{mv,promise,sx4} were + known to now work with ATAPI). Patch has been sent to him for inclusion + with libata-dev.git. + + * Enable CONFIG_THERM_ADT746X and CONFIG_THERM_WINDTUNNEL for powerpc and + powerpc-smp. + + * Created lowend and highend server config's for i386. + + * Bump ABI + + * abi-install got disabled, fix it. + + * linux-doc-2.6.15: Conflicts linux-doc-2.6, so only one is installable at a + time. + + * Synced to -rc5 + + * Git pull's: + - ACPI + - NetDev-2.6#upstream + - Adds the sky2 driver, to support Yukon2 ethernet cards. + - libata + - Several new PATA drivers + - Checked, but nothing new: ia64, parisc, ocfs2, ieee1394 + + Changes by Fabio M. Di Nitto: + + * Update redhat cluster suite kernel modules to CVS20051205: + - Provides rhcs-modules-3. + + * Stop providing ext2-modules and ship it for all arches. + + -- Ben Collins Thu, 01 Dec 2005 09:58:54 -0500 + +linux-source-2.6.15 (2.6.15-6.8) dapper; urgency=low + + Changes by Ben Collins: + + * Change powerpc to use GEN_RTC. Fixes oopses. + + * Apply toshiba_acpi patches from breezy: + - drivers-acpi-toshibaacpi_detect-hotkeys.dpatch + - external-drivers-acpi-toshiba_update.dpatch + + * Provide ndiswrapper-modules-1.5 (instead of -1.1). + + * Patch from l-k: fix swsusp on machines not supporting S4 + + * Remove rtl8180 and rtl8187 drivers. They don't even compile cleanly enough + to modprobe. + + * Pruned broken drivers from config's. + + * ppc: Added asm-powerpc/highmem.h stub. Fixed lrm compilation. + + * intel_hda_snd: Fix typo in autofill. + + * hppa: Enable ide/pci/dma stuff + + * Enable cpu hotplug for amd64/i386 smp targets, so that acpi sleep can be + enabled aswell. + + * pcmcia/i82365: Revert Ubuntu patch for device release. + + * mm: Fix compile errors caused by recent vm changes. Patch sent upstream. + + * hppa: Apply Compat signal/siginfo patches to get compilation working. + hppa64{,-smp} now builds, and my A500 boots hppa64-smp. + + * Resync from Linus' tree (post -rc3). + + * Bump ABI + + -- Ben Collins Tue, 29 Nov 2005 11:22:19 -0500 + +linux-source-2.6.15 (2.6.15-5.7) dapper; urgency=low + + Changes by Ben Collins: + + * net/wireless/rt2500: Revert to del_timer() instead of del_timer_sync() + + * Remove notifier stuff. Kernel-package now calls + /usr/share/update-notifier/notify-reboot-required for us. + + * Update initramfs-tools depends to >= 0.36ubuntu6, in order to get + update-initramfs. Also update kernel-package build-dep in order to get the + postinst/postrm logic to use update-initramfs. + + Spec: initramfs-updates + + * Added rt2570 driver, 1.1.0-b1 + + * Added rt2400 driver, 1.2.2-b3 + + * Added rt2500 driver, 1.1.0-b3 + + * Remove rt2x00 driver(s), reverting back to stable rt2400/rt2500/rt2570. + + * Rebuild config's + + * Force mbcache as built-in. + + * Added ieee80211softmac driver from softmac.sipsolutions.net + + * Applied patch from mjg59 to allow userspace to disable writes to + framebuffer, for cleaner and more stable suspend/resume. + + * Revert bcm43xx softmac patch (git b0d4ca49c42945251eb77153e60791650c8a2cb7) + + * Set CC=gcc-3.4 for parisc + + * Make ext2=m on all arch's. + + * Sync with 2.6 git. + + * d-i/powerpc: Remove nls_base as a module, since it is built-in + + * configs: Make CONFIG_FW_LOADER=y on all archs. Make CONFIG_FS_MBCACHE=y on + all archs. + + * acpi: Ignore return from acpi_bus_find_driver. (Closes: #20085) + + Changes by Fabio M. Di Nitto: + + * Pull ocfs2 git. + + -- Ben Collins Mon, 28 Nov 2005 21:49:36 -0500 + +linux-source-2.6.15 (2.6.15-4.6) dapper; urgency=low + + Changes by Ben Collins: + + * rtl8187: comment out the float functions for !CONFIG_FORCE_HARD_FLOAT. + + * Remove mbcache from ia64 and ppc module udeb's. + + * parisc: Hardcoded CROSS_COMPILE + + -- Ben Collins Fri, 25 Nov 2005 12:08:09 -0500 + +linux-source-2.6.15 (2.6.15-4.5) dapper; urgency=low + + Changes by Ben Collins: + + * Disable ABI checks for now. + + * Bump kernel-wedge depends to match firmware changes. + + * workqueue: Change hardcoded cpu=0 to cpu=any_online_cpu(). + + * amd64: Fix redecleration of disable_timer_pin_1. + + * tulip: Fix undefined PCI ID define for ULI chips. + + -- Ben Collins Thu, 24 Nov 2005 13:43:22 -0500 + +linux-source-2.6.15 (2.6.15-4.4) dapper; urgency=low + + Changes by Ben Collins: + + * Update ndiswrapper to v1.5 (was v1.4-rc) + + * Added rtl8180 and rtl8187 drivers. + + * Initial hppa(parisc) configs. + + * Git pulls: + - ia64 + - parisc + - acpi + - ieee1394 + + * Add missing patch from breezy: arch-x86_64-kernel-apic-timer-fix + + * post-install: Changed location of firmware from lib/hotplug/firmware to + lib/firmware/$version, as per IRC discussion (Keybuk, infinity, BenC) + posted to -devel-announce. + + * ipw2200: Rename notify_wx_assoc_event to not conflict with softmac patch. + + * Added areca sata driver. + Pulled from 2.6.15-rc1-mm2 as areca-raid-linux-scsi-driver.patch + + * softmac patch: Pulled from bcm430x project (pulled from ieee80211.git) + + * kernel/workqueue.c: create_workqueue() was not checking return of + alloc_percpu(). + + * Include all Makefile's in kernel-headers package (Makefile*). Fixes i386 + module builds against linux-headers (missing Makefile.cpu). + + * Add firmware list. + + * Update rt2x00 drivers, 2005/11/17 16:28:34 + + * Update bcm430x driver to r694. Still untested, probably still broken. + + * Added ppc_defconfig to allow for "prepare" target in k-p to work. + + * Delete postinst.powerpc. Seems there's no more default coff target, and + other assorted needed things in order to support mkvmlinuz bootloader. + From what I gather, we only support NewWorld Macs anyway. + + * Merge devmem patch, which disallows certain access to /proc/kmem and + /proc/kcore. Disables writing to /proc/kcore. Certain areas of /proc/kmem + are still read/write in order for things like X to still work. + - Pulled from fedora patch: linux-2.6-devmem.patch + - Modified for ppc -> powerpc merge + + * Created i386-server config. Currently unbuilt. + - Disabled sound. + - Disabled graphics (fb, drm, agp). + - Disabled all laptop options. + - Disabled unrelated ACPI/APM options. + - Enabled NUMA/BIGSMP, set max CPUS to 64, max ram to 64Gig. + - Currently targetted for generic 686. + - Disabled SMP2UP. + - Disable preempt. + - Set HZ=100 (HZ=250 for desktop). + + * Resync with Linus' git tree (-rc2). + - Enable new driver CONFIG_USB_SERIAL_ANYDATA for all architectures. + - More ppc64 merges, regen config. + - Obsoleted commit 4bd609829470632192ac22aca22cf74c16e605ff for + ide/pci/via82cxxx.c. + - Merged commit 5848b480ab2ef9e9f9bcbdc8c119467f51635282 from + asm-ppc64/io.h to asm-powerpc/io.h. + + * Disable Local APIC by default on UP machines. Enable with (l)apic command + line argument. PATCH IS NOT ENABLED! + - Pulled from fedora patch: linux-2.6-x86-apic-off-by-default.patch + + * Set CONFIG_ACPI_BLACKLIST_YEAR=2000 for all arch's that support it. + + * acpi_blacklist: Make message quieter + - Pulled from fedora patch: linux-2.6-acpi-silence-cutoff.patch + + * Push kernel-package build-dep to get ppc changes. + + * Enable CONFIG_EDD=m for i386 and amd64 + + * Update ppc64 config, removing drivers that do not compile cleanly. + + * macintosh/via-pmu.c: Fix ppc64 compile by making sure sleep_in_progress is + wrapped with PPC32 and PM config checks. + + * Update sparc64 config's. + + * Update ia64 config's. + + * video/controlfb,platinumfb,valkyriefb: Wrap use of nvram_read_byte with + CONFIG_NVRAM checks. Was causing build failures. + + Changes by Chuck Short: + + * mv643xx: Add pci_device table for auto module loading. + + * i8042: Add OQO device to noloop dmi blacklist. + + * tulip: Fix for Uli5261 chipsets (Closes: #18673) + + -- Ben Collins Wed, 23 Nov 2005 15:28:13 -0500 + +linux-source-2.6.15 (2.6.15-3.3) dapper; urgency=low + + Changes by Ben Collins: + + * Add Atmel USB Wireless driver (from breezy). + + * Upadate bcm43xx driver to latest SVN (r687). + + * Resync with Linus' git tree. + + * Bump ABI (routine for almost all uploads). + + * Enable CONFIG_IRQ_ALL_CPUS for powerpc. Fixes FTBFS. + + * Update rt2x00 driver from CVS. + + * Update ipw2200 firmware to 2.4 version. + + * Unpack firmware.tar.gz.uu into debian directory so it doesn't have to be + unpacked during build (not have a .diff.gz helps us out a lot). + + * Updated amd64 configs. + + * Fix kconfig/conf to check stdin for feof() on error, and abort if so. + Keeps the automated builds from filling log files when the config's aren't + updated. + + * Add asm/pc_serial.h to arch/ppc/boot/common/ns16550.c, to get proper + serial defines. + + -- Ben Collins Tue, 15 Nov 2005 19:52:06 -0500 + +linux-source-2.6.15 (2.6.15-2.2) dapper; urgency=low + + Changes by Ben Collins: + + * Cleanup powerpc config's. Mainly to make frambuffer section match + breezy. 2.6.15-2-powerpc is running on my G4 perfectly now. + + * Cleanup powerpc IDE config section. + + * Merge fs-blockdev_evms-db-claim patch from breezy. This was needed atleast + for me to use my G4 (not ppc specific though). The extra partition that I + had mounted on /org showed the partition as busy. + + * Git-Pull from torvalds/linux-2.6.git + + * Build-Dep on gawk. The zd1211 driver needs it since mawk can't process the + zddevlist.awk script. Fixes FTBFS. + + * Bump build-dep on kernel-package to make sure powerpc gets the right one. + + -- Ben Collins Sun, 13 Nov 2005 10:41:10 -0500 + +linux-source-2.6.15 (2.6.15-1.1) dapper; urgency=low + + The "Dapper meets Kernel" release. + + Changes by Ben Collins: + + * More merging than any one person should ever have to do. + * Gitified the kernel tree. See https://wiki.ubuntu.com/KernelGitGuide + + * NOTES: This is the first release. It is broken. I know it compiles on + amd64, i386 and ppc (well, it would, except that we need updated + kernel-package to do the right thing with ARCH=powerpc). + + For normal rants, please email the kernel team mailing list. Please don't + clog my already full bugzilla list with random FTBFS, and cruddy things. + + YES! I know there are no i386 SMP packages. The 686 and k7 packages are + SMP enabled. In fact, they are also UP enabled "WHAT!?!? HUH!?!". Yes, SMP + on i386 now has the added benefit of killing lock ops dynamically on boot. + This is still in testing phase. I also need to fix a few things to get it + working for modules. + + * External drivers added: + - OCFS2 + - acerhk + - acpi_panasonic + - acx100 + - adm8211 + - asfs + - at76c50x + - bcm430x + - btsco + - cloop + - cluster + - cpad + - eagle-usb + - em8300 + - fsam7400 + - ieee80211 + - linux-wlan-ng + - mppe + - ndiswrapper + - pwc + - quickcam + - rfswitch + - rt2x00 + - sony_acpi + - spca5xx + - squashfs + - tc1100 + - unionfs + - wacom_acpi + - zd1211 + + * UBUNTU Related patches: + - [Documentation] Update location of ll_rw_blk.c in docs + - [acpi/hotkey] Allow generic hotkey to work even if specific is compiled + - [acpi] Add some Thinkpads to proc idle blacklist + - [acpi] Allow loading of DSDT from initrd + - [acpi] Provide /dev/acpi device for ACPI manipulation + - [acpi] Provides an i2c driver for the ACPI ec bus + - [apci] Fix extraneous EXPORT_SYMBOL + - [char/agp] Add suspend/resume callbacks for nvidia and ati AGP bridges + - [char/sonypi] Enable ACPI interpreter for Sony + - [debian] Add support for split config files + - [debian] Enable DMA on CDROM's always + - [docs] Add post-halloween.txt document. + - [drivers] Cleanup unresolved symbols + - [fs/coda] Better sanity check on userdata passed data + - [fs] Revert bd_claim change. + - [general] Quiet noisy printk's + - [i386] Add code to replace lock's with nop's on SMP for UP boots + - [i386] Add config option to enable/disable hyperthreading + - [i386] Reboot HP laptops correctly + - [i386] Workaround for P4 N60 Errata + - [ide/ide-pnp] Make ide-pnp module + - [ide/via82cxxx] Enable via6410 + - [ide] Add "TOSHIBA CD-ROM XM-1702BC" to ide-dma blacklist + - [ide] Call ACPI _GTM and _STM methods on suspend/resume + - [ide] Export ide_scan_direction + - [input/cpad] Fix usb_driver struct + - [input/cpad] Update usb_driver struct to match newer convention + - [input/i8042] Fix USB keyboard init + - [input/mouse/alps] Do not call psmouse_reset() for alps + - [net/8139too] Fix deadlock on shutdown + - [net/sunhme] Fix Sun Happy Meal ethernet lockups on Ultra 1E + - [net/wireless/ipw2200] Quiesce ipw2200 before rebooting + - [net/wireless/rt2x00] Fix usage of struct pci_driver + - [pcmcia] Add missing device releases + - [pcmcia] Do not insert pcmcia cards on resume + - [ppc] Changes for ppc/ppc64 build + - [ppc] Disable pmac_tweak_clock_spreading() on POWER4 + - [ppc] Disable serial 8250 initialization on PMAC + - [ppc] PPC32 fixups for ARCH=powerpc + - [scsi/BusLogic] Add MODULE_DEVICE_TABLE + - [scsi/megaraid] Support megaraid legacy and megraid newgen, side-by-side + - [scsi/sata] Basic suspend/resume support for SATA devices + - [scsi/sata] Enable PATA on SATA + - [scsi] Add Matshita DMC-LC33 to devlist + - [scsi] Add basic hotplug support to some drivers + - [scsi] Restore generic SCSI proc_info function + - [serio/i8042] Quiet printk when no i8042 is detected + - [sound/pci] Make the headphone jack on HP laptops work + - [usb/input] Fix a quirk in PowerBook FN button usage + - [video/vesafb] Fixup vesafb modular code to merge with platform driver changes + - [video/vesafb] Modularize vesafb + + -- Ben Collins Sat, 12 Nov 2005 23:34:38 -0500 + +linux-source-2.6.12 (2.6.12-9.24) breezy-updates; urgency=low + + Changes by Ben Collins: + + * external-arch-i386-kernel-reboot_reboot-thru-bios: Remove + + * fs-inotify-fix-idr-memleak: Security related. Memleak can be induced by + normal user, consuming all memory by kernel. + + Changes by David Miller: + + * [SPARC64]: Consolidate common PCI IOMMU init code. + + All the PCI controller drivers were doing the same thing + setting up the IOMMU software state, put it all in one spot. + + * [SPARC64]: Eliminate PCI IOMMU dma mapping size limit. + + The hairy fast allocator in the sparc64 PCI IOMMU code + has a hard limit of 256 pages. Certain devices can + exceed this when performing very large I/Os. + + So replace with a more simple allocator, based largely + upon the arch/ppc64/kernel/iommu.c code. + + This also fix a potential local DoS that a user could trigger doing heavy + I/O and that would make the machine hang forever. + + Add patch sparc64-pci-iommu_do-not-dos-on-heavy-io.dpatch. + + -- Ben Collins Thu, 27 Oct 2005 09:36:08 -0400 + +linux-source-2.6.12 (2.6.12-9.23) breezy; urgency=low + + Changes by Fabio M. Di Nitto: + + * [SECURITY]: Add missing CAN-2005-3053 from 7.11 changelog. + + * [SECURITY]: Fix names_cache memory leak with CONFIG_AUDITSYSCALL: + - Add patch audit-syscall_mem-leak-CAN-2005-XXXX.dpatch. + (CAN-2005-XXXX) + + * [SECURITY]: Fix do_coredump() vs SIGSTOP race in kernel/signals.c: + - Add patch kernel-signal_fix-race-condition-CAN-2005-XXXX.dpatch. + + Changes by David Miller: + + * [SECURITY]: (sparc64) Fix userland FPU state corruption: + - Add patch arch-sparc64-kernel-entrys_more-strict-fpu-memory-barrier.dpatch. + (CAN-2005-XXXX) + + We need to use stricter memory barriers around the block + load and store instructions we use to save and restore the + FPU register file. + + "if you know how to trigger this you can end up with whatever the kernel + most recently memcpy()'d" + + -- Fabio M. Di Nitto Mon, 10 Oct 2005 11:42:09 +0200 + +linux-source-2.6.12 (2.6.12-9.22) breezy; urgency=low + + Changes by Fabio M. Di Nitto: + + [SECURITY]: fix drm sysfs permissions to not be worldwide read/writeable: + - Add patch drivers-char-drm_fix-sysfs-permissions.dpatch. + (CAN-2005-XXXX) + + Changes by David Miller: + + * [sparc64]: + - Fix configs to match reality: + + Disable QLOGIC_FC (deprecated driver). + + Build in USB controllers to allow USB keyboards to work properly. + + -- Fabio M. Di Nitto Wed, 05 Oct 2005 06:26:33 +0200 + +linux-source-2.6.12 (2.6.12-9.21) breezy; urgency=low + + The "never trust a kernel developer" release. + + * [ia64] + - Turn back on CONFIG_IDE_GENERIC, since it's necessary if you want a + working ide subsystem, which, interestingly, most ia64 machines use. + + -- LaMont Jones Tue, 4 Oct 2005 10:52:08 -0600 + +linux-source-2.6.12 (2.6.12-9.20) breezy; urgency=low + + Changes by LaMont Jones: + + * Commit the forgotten d-i modules file for ia64. + + -- LaMont Jones Mon, 3 Oct 2005 12:56:39 -0600 + +linux-source-2.6.12 (2.6.12-9.19) breezy; urgency=low + + Changes by Fabio M. Di Nitto: + + * [SECURITY]: Fix URB early termination OOPS. (CAN-2005-3055) + - DISABLED: This patch is disabled and not active in this upload. Patch + was rejected by Linus. + + Changed by Ben Collins: + + * Fix powerpc CONFIG_ABD_PMU. It needs to be enabled for G5 powerbooks. + + * sound-ppc_support-newer-ibooks: Patch name says it all. + + * drivers-scsi-libata-passthrough: Support for ata passthrough with hdparm + and smartmon tools. (Closes: #14931) + + * drivers-scsi-libata-fix-error-handling: Removed old error handling fix, and + replaced with one-liner fix from 2.6.13. + + * drivers-net-8139cp_quiet-8139too-message: Get rid of scary messages about + 8139too vs 8139cp driver. + + * sound-pci_via82xx-workaround-unhandled-irqs: via686a chipset sometimes + gets unexpected interrupts, leading to IRQ_NONE being returned, and the + IRQ being disabled by the kernel. This works around that by always + returning IRQ_HANDLED (wrong, but it will work for now) + + Changes by Adam Conrad and Matthew Garrett: + + * Make ide probe quite: + - Add patch drivers-ide_quiet_probe_failures.dpatch. + + Changes by LaMont Jones: + + * Fix driver panic in hppa in led driver. + - Add arch-hppa_led. + - And stop including it, since it is included in arch-hppa_pa2 + + * ia64 config cleanup. Turn off IDE_GENERIC on all ia64 flavors, since it + pokes registers that don't exist. + + * have hppa and ia64 use initrd instead of initramfs, since initramfs + doesn't work there. + + -- Ben Collins Fri, 30 Sep 2005 17:00:33 -0400 + +linux-source-2.6.12 (2.6.12-9.18) breezy; urgency=low + + * Fix sk98lin patch + + * Rediff ndiswrapper 1.1 patch. The old patch had all the generated + files pregenerated, which wasn't very good for x86_64. Also, x86_64_stub + wasn't being compiled in. This should finally get things working on amd64. + + * Set default ramdisk size to 64Megs for all arch's. This should fix sparc + mainly. Amd64 was already 64Megs. Almost every installer/loader was + increasing this manually anyway, and we have several bugs which complain + about too small of a ramdisk size. + + * Update spca5xx driver and fix compilation so that it creates the correct + module. The spca5xx.c file was not actually getting compiled. + + * Disable CONFIG_IEEE1394_SBP2_PHYS_DMA, since it is not meant for general + use, and plus it breaks non-amd64 64-bit architectures (ppc64, sparc64). + + -- Ben Collins Mon, 26 Sep 2005 16:58:05 -0400 + +linux-source-2.6.12 (2.6.12-9.17) breezy; urgency=low + + * Use Matt's sk98lin patch + + -- Ben Collins Fri, 23 Sep 2005 11:12:02 -0400 + +linux-source-2.6.12 (2.6.12-9.16) breezy; urgency=low + + * Fix typo in sk98lin driver. + + -- Ben Collins Fri, 23 Sep 2005 10:29:26 -0400 + +linux-source-2.6.12 (2.6.12-9.15) breezy; urgency=low + + The "Quickest re-release ever" Release + + * Fix linux-source tree. Bad patch had gotten in. + + * Actually enable sk98lin driver. + + * Enable ndiswrapper driver on amd64 + + * Updated PowerBook Fn-Key patch. + + -- Ben Collins Fri, 23 Sep 2005 09:11:31 -0400 + +linux-source-2.6.12 (2.6.12-9.14) breezy; urgency=low + + The "My momma wont let me play in the street" release + + Changes by Ben Collins: + + * Bump ABI + + * external-drivers-acpi-ec_disable-burst: Disable, things should be ok now + + * fs-inotify-in-mask-add: Handle IN_MASK_ADD (Closes: #14458) + + * sth-fs_inotify: Added DCACHE_DELETED, so as to get rid of spurious delete + events. (Closes: #14967) + + * external-drivers-usb-input-appletouch: Support Apple touchpad. + + * drivers-scsi-buslogic-device-table: Add MODULE_DEVICE_TABLE for BusLogic + driver. (Closes: #11237) + + * arch-i386-kernel-hp-laptop-reboot-fix: Special case hp laptop reboot (bios + reboot) + + * Install ABI files with kernel .deb as /boot/abi-x.x.x-y-p + + SECURITY: + + * arch-x86_64-ia32-fix-tiocgdev-CAN-2005-XXXX: + - Maxim Giryaev discovered a Denial of Service vulnerability in the + "tiocgdev" ioctl call. By calling fget() and fput() in special ways, + a local attacker could exploit this to destroy file descriptor + structures and crash the kernel. This vulnerability only affects the + amd64 platform. + + * fs-compat_ioctl-CAN-2005-XXXX: + - Vasiliy Averin discovered a Denial of Service vulnerability in the + "routing_ioctl" function. By calling fget() and fput() in special + ways, a local attacker could exploit this to destroy file descriptor + structures and crash the kernel. + + Changes by Matthew Garrett: + + * drivers-pcmcia-fix-ti-bridges: Support recent TI chipsets (notably, HP + laptops). (Closes: #15083) + + * drivers-input-mouse_alps-fixes: Fixes for alps mouse. + + * drivers-acpi-hotkey-generic-fix: Allow generic hotkey to work. + + * sound-pci-ac97-hp-laptop-headphone-fix: Make headphone jack on HP laptops + work. + + * drivers-input-mouse_synaptics-pad-polling-fix-dynabook: Add dynabook to + list of pads that need polling rate limit. + + * drivers-pcmcia_fix-hybernation: Fix lockup caused by hybernation when + PCMCIA cards were present. + + * drivers-net-wireless-ipw2200-shutdown-fix: Properly shutdown ipw2200 + cards. + + * arch-x86_64-kernel-apic-timer-fix: Disable APIC pin 1 on ATI AMD64 systems + + * drivers-net-ndiswrapper-rtlzeromemory: Add RtlZeroMemory support. + + * drivers-acpi-tc1100-wmi: WMI driver to enable wireless on HP tablets. + + Changes by Fabio M. Di Nitto: + + * Update net-socket-sendmsg-fix.dpatch to actually build on sparc. + + * Change Recommends: gcc to Recommends: gcc-3.4 for linux-source-2.6.12 + package. + (Closes: #15488) + + * Make sure that we build against the kernel-package ubuntu4 since + the ubuntu3 was a wrong fix for 15488. + + * Add nls_utf8 to powerpc fs-common-modules udeb. + (Closes: #14736) + + * Add ahci modules to sata-modules udeb. + (Closes: #13506) + + Changes by Tollef Fog Heen: + * Remove some speeds from p4-clockmod, since it seems some P4s can't + handle those speed and shuts down. Ubuntu #8587, for real this time. + + Changes by Chuck Short: + + * Removed sky2 driver to be replaced by Matthew's sk98lin driver. + - Added external-drivers-net-sk98lin.dpatch + (Closes: #13421, #15854, #15849) + + * Added makefile fix to compile ndiswrapper on am64. + - Added drivers-net-ndiswrapper-Makefile_x86-64-fix.dpatch + - Added CONFIG_NDISWRAPPER=m config/amd64/* + (Closes: #13834) + + -- Ben Collins Thu, 22 Sep 2005 15:32:49 -0400 + +linux-source-2.6.12 (2.6.12-8.13) breezy; urgency=low + + Changes by Ben Collins: + + * drivers-acpi-noexecute: Entirely disable executable ACPI module code. + Patch obtained from acpi-devel@lists.sourceforge.net. + + * sth-2.6.12.6: Latest patch for 2.6.12 + Obsoletes: + - sth-CAN-2005-2555 + - drivers-scsi-sg-fix-memory-leak + + * kernel-power-swsusp_fix-error-handling: Fixes some error handling in + swsusp, and also print's information about the specific problem. + + * drivers-usb-input-powerbook-fn-quirk: Fix usage of FN key on PowerBook's. + + * drivers-net-r8169-usr997902: Support USR997902. + + * external-drivers-net-sky2: Added to support Yukon 2 cards. + + * external-fs_ocfs2: Added upstream bugfix: + + Set sk_allocation and use non-waiting gfp masks in other fs messaging. At + some point in the past we lost the setting of sk_allocation so fs messages, + including keep alives, were blocking under memory pressure. + + * drivers-scsi-libata-fix-error-handling: Fixes libata error handling. Back + ported patch from 2.6.13. (Closes: #13370) + + * drivers-net-forcedeth-0.42-upgrade: Upgraded forcedeth driver to 0.42. + (Closes: #14672) + + * external-drivers-net-wireless_prism2-and-wlan-ng: Updated to 0.2.2. + (Closes: #14103) + + * external-drivers-usb-media_pwc: Updated USB PWC driver (10.0.8). + (Closes: #14964) + + [SECURITY] + + - drivers-scsi-sg-fix-memory-leak: Fix for memory leak in sg.c. CAN security + related vulnerability (CAN id not yet known). + + - net-socket-sendmsg-fix: Fix for CAN-2005-2490, vuln with sendmsg user data + validation. + + - net-ipv4-raw-sendmsg-stack-overflow: Fix for CAN-2005-2492, vuln with + sendmsg stack overflow. + + - ht: Disable hyperthreading by default, to avoid ht hw bug. + + * all-reduce-chatty-startup: Quiets some noisy printk's. (Closes: #14500) + + -- Ben Collins Thu, 15 Sep 2005 14:05:17 -0400 + +linux-source-2.6.12 (2.6.12-8.12) breezy; urgency=low + + The "Oh crap, what did I get myself into?" Release. + + Changes by Ben Collins: + + * Added drivers-macintosh_disable-adb-on-ppc64: + - Disables selection of ADB based config options for PPC64. + (Closes: #13826) + + * Remove all traces of unionfs. It broke in the last release, and Matt has + since converted the LTSP stuff to bind fs (we're going to re-add this, but + start from scratch with some initial testing). + + * Change maintainer to myself + + * drivers-acpi-inotfy-off-by-one-fix: Patch from bug report, by Ryan Lortie. + (Closes: #14364) + + Changes by Fabio M. Di Nitto: + + * Import cman-kernel iovec fix from STABLE branch: + - Update external-cluster_cman.dpatch. + + * Import gfs ACL fix from RHEL4 branch: + - Update external-fs_gfs.dpatch. + + * Update OCFS2 to 1.1.2: + - Update patch external-fs_ocfs2.dpatch. + - Split bits required to port OCFS2 to 2.6.12 out of + external-fs_ocfs2.dpatch into patch external-fs_ocfs2-2.6.12.dpatch. + + * Bump ABI. + + * Fix drivers-macintosh_disable-adb-on-ppc64.dpatch rejected hunk. + + Changes by Chuck Short: + + * Add sata-pata bridge fix. + - Added patch drivers-scsi-libata-core_fix-sata-bridge-lockup.dpatch. + (Closes: #12303) + + Changes by Matthew Garrett + + * drivers-acpi-ec-burst: adds an optional (only enabled with kernel + parameter) mode that allows the embedded controller to be read without + polling. This seems to be necessary for a small number of machines. + + * drivers-acpi-owner_id-fix: fixes faulty logic for tracking owner_ids in + ACPI objects + (Closes: #14004) + + * drivers-char-sonypi-type3-support: Adds support for type3 sonypi. + + * drivers-acpi-add-devacpi: provides a device node that allows ACPI method + execution. Needed for decent docking/undocking support + + -- Ben Collins Tue, 30 Aug 2005 16:04:52 -0400 + +linux-source-2.6.12 (2.6.12-7.11) breezy; urgency=low + + The "Welcome Ben!" Release. + + Changes by Fabio M. Di Nitto: + + * Add unionfs-modules udeb: + - Add unionfs-modules to shared/. + - Make unionfs-modules points to shared on all arches. + - Bump Build-Deps on kernel-wedge (>= 2.05ubuntu3). + + * Stabilization process: + - Update to 2.6.12.4: + + Add patch sth-2.6.12.4.dpatch: + . Fix qla2xxx: Correct handling of fc_remote_port_add() failure case. + . Fix kbuild: build TAGS problem with O=. + . Fix ldisc ref count handling in rocket.c. + . Fix x86_64 memleak from malicious 32bit elf program. + (CAN-2005-2617) + . Fix signedness issues in net/core/filter.c. + . Fix deadlock in ip6_queue. + . Fix potential memory corruption in NAT code (aka memory NAT). + . Fix ip_conntrack_untracked to wait until all references are dropped on + unload. + . Fix possible overflow of sock->sk_policy. + (CAN-2005-2456) + . Fix bio_clone. + . sys_get_thread_area does not clear the returned argument. + . Fix early vlan adding leads to not functional device. + . Fix powernow oops on dual-core athlon. + (Closes: #13385) + - Update to 2.6.12.5: + + Add patch sth-2.6.12.5.dpatch: + . Fix per-cpu module alignment. + . Fix destruction of failed keyring oopses. + (CAN-2005-2099) + . Fix error during attempt to join key management session can leave + semaphore pinned. + (CAN-2005-2098) + . Fix check input buffer size in zisofs. + (CAN-2005-2457) + . Update in-kernel zlib routines. + (CAN-2005-2458, CAN-2005-2459) + . Fix x86_64 smpboot timing problem. + . Fix SRAT for non dual core AMD systems. + . Fix sys_set_mempolicy() check if mode < 0. + (CAN-2005-3053) + + * [SECURITY]: Add capability check for non-root user to XFRM policy manager: + - Add patch sth-CAN-2005-2555.dpatch. + + * Import RedHat Cluster Suite latest fixes from CVS STABLE branch (sync with + redhat-cluster-suite at 20050816). + + * Update OCFS2 to stable branch version 1.1.0: + - Update patch external-fs_ocfs2.dpatch. + + * Add commits r2518 and r2521 from OCFS2 SVN HEAD to fix endian netrual key + calculation (and maintain compatibility with versions prior 1.1.0 on + little-endian) and a problem with lvb recovery: + - Update patch external-fs_ocfs2.dpatch. + + * Bump ABI. + + * Add inotify syscalls for ppc and ppc64. + + * Import a bunch of inotify bug fixes from upstream. Mainly race conditions + fixes and cleanup. + + * Update configs on all arches. + + * Add patch to restore PATA ports on SATA controllers: + - Add patch external-drivers-scsi_pata-on-sata.dpatch. + (Closes: #13298) + + * Add Thinkpad blacklist to ACPI processor idle: + - Add patch external-drivers-acpi-processoridle_blacklist-thinkpad.dpatch. + (Closes: #11813) + + * Add experimental sata suspend remove support (it clearly cannot be worst + than it is now): + - Add patch external-experimental-sata_suspend-resume.dpatch. + + Changes by Matthew Garrett: + + * Update the overall ACPI subsystem: + - Update the kernel to current ACPI code: + + Add patch external-global-acpi_update-20050729.dpatch. + - Reverts the change that required individual drivers to switch interrupts + back on, as it broke stuff: + + Add patches external-drivers-acpi-pcilink_revert-interrupt-resume.dpatch + and external-drivers-acpi-pcilink_disable-reference-counting.dpatch. + - ACPI must make atomic allocation because resume runs while interrupts + are disabled: + + Add patch external-drivers-acpi_atomic-allocation.dpatch. + - Disable ec burst mode that seems to interact badly with some hardware: + + Add patch external-drivers-acpi-ec_disable-burst.dpatch. + - Make the generic hotkey driver not to override the specific ones: + + Add patch external-drivers-acpi-osl_fix-hotkeys.dpatch. + - Add /proc/acpi/button support back to the kernel: + + Add patch external-drivers-acpi-button_restore-proc.dpatch. + - Reenable GPE's before _WAK methods are called: + + Add patch external-drivers-acpi-hardware-hwsleep_gpe-specs.dpatch. + - acpi_leave_sleep_state should be called before devices are resumed: + + Add patch external-global-acpi_make-system-ready-to-resume.dpatch. + - Provide support for suspend/resume for ATI/Nvidia AGP bridges: + + Add patch external-drivers-chars-agp_pm.dpatch. + - Provide /dev/toshiba device node so that toshset can be run on newer + Toshibas, required for enabling/disabling Bluetooth: + + Add patch external-drivers-acpi-toshiba_update.dpatch. + - Add ACPI driver for i2c bus: + + Add patch external-drivers-acpi_i2c-acpi-ec.dpatch. + - Make the kernel default to rebooting by calling the BIOS: + + Add patch external-arch-i386-kernel-reboot_reboot-thru-bios.dpatch. + - Update ASUS ACPI driver: + + Add patch external-drivers-acpi-asusacpi_update.dpatch. + - Fix resume on some Intel AGP bridges: + + Add patch external-drivers-chars-agp-intel_fix-resume.dpatch. + + Changes by Chuck Short: + + * Re-add acer hotkeys support: + - Add patch external-drivers-input-misc_acerhk.dpatch. + - Add CONFIG_INPUT_ACERHK=m. + + * Fix 3c59x suspend/resume support: + - Add patch drivers-net-3c59x_pm-fixes.dpatch. + (Closes: #5228) + + Changes by Jeff Bailey: + + * (NOTE from Fabio: this cool guy did push me something that updates + drivers-acpi-osl_attach-dsdt-to-initrd.dpatch, but i guess he falled + over his keyboard before giving me the data for this entry... duh!) + (Closes: #13535) + + -- Fabio M. Di Nitto Fri, 19 Aug 2005 06:32:51 +0200 + +linux-source-2.6.12 (2.6.12-6.10) breezy; urgency=low + + * Update hardcoded initrd-tools dependencies to initramfs-tools + + -- Matt Zimmerman Wed, 10 Aug 2005 13:04:48 -0700 + +linux-source-2.6.12 (2.6.12-6.9) breezy; urgency=low + + Changes by Jeff Bailey: + + * Build-dep on kernel-package 9.001-1ubuntu2 + + -- Jeff Bailey Wed, 10 Aug 2005 11:01:14 -0400 + +linux-source-2.6.12 (2.6.12-6.8) breezy; urgency=low + + Changes by LaMont Jones: + + * Actually add arch-hppa_cross.dpatch to the right place. sigh. + + Changes by Matt Zimmerman: + + * Updated unionfs patch. + - modifies external-fs_unionfs.dpatch. + + -- LaMont Jones Fri, 5 Aug 2005 11:55:56 -0600 + +linux-source-2.6.12 (2.6.12-6.7) breezy; urgency=low + + Changes by LaMont Jones: + + * synaptics cpad driver: CPAD depends on USB + * Drop CONFIG_PRINTK_TIME from ia64 configs, since it's fatal. + * Fix CROSS_COMPILE setting for 64-bit hppa + - Add arch-hppa_cross.dpatch + + -- Fabio M. Di Nitto Thu, 04 Aug 2005 07:21:32 +0200 + +linux-source-2.6.12 (2.6.12-6.6) breezy; urgency=low + + The "Scintilating Sesame" release. + + Changes by Fabio M. Di Nitto: + + * Update OCFS2 to 0.99.17: + - Rediff external-fs_unionfs.dpatch. + + * Bump the abi ... again ... + + * Add inotify syscalls for ia64/sparc. + + * Update redhat cluster suite to 20050729. + + * Update squashfs to 2.2: + - CONFIG_SQUASHFS_EMBEDDED=n + + * Update unionfs to 1.3: + - CONFIG_UNIONFS=m and CONFIG_UNIONFS_XATTR=y on ppc. + + * Update rt2400/rt2500 drivers to CVS snapshot 20050728. + + -- Fabio M. Di Nitto Fri, 29 Jul 2005 12:09:23 +0200 + +linux-source-2.6.12 (2.6.12-5.5) breezy; urgency=low + + The "JaneW is not around" release. + + Changes by Fabio M. Di Nitto: + + * Merge patching per flavour support from an old experimental now dead + branch. + NOTE: patches applied by this method can't be reflected into + linux-patch-ubuntu. + + * Add xen info to debian/config/archmap. + + * Update inotify from 2.6.13-rc3-git8: + - Reallign syscall NR with upstream. + (Closes: #12987) + + * Add fix to restore C2/C3: + - Update patch external-global-acpi_update-fixups.dpatch. + (Closes: #12900) + + * CONFIG_USB_BANDWIDTH=n. + (Closes: #12963) + + * Update the ipw2*00 drivers: + - Update ieee80211 to 1.0.3. + - Update ipw2100 to 1.1.2. + - Update ipw2200 to 1.0.6. + - Update firmwares to the latest versions. + - Update d-i/shared/firmware/nic-firmware. + + * Bump the abi. + + * Update debian/rules bumpabi target to use baz in mv operations. + + -- Fabio M. Di Nitto Thu, 28 Jul 2005 09:07:02 +0200 + +linux-source-2.6.12 (2.6.12-4.4) breezy; urgency=low + + The "Whooping Wholewheat" release. + + Changes by Fabio M. Di Nitto: + + * Stabilization process: + - Update to 2.6.12.3: + + Add patch sth-2.6.12.3.dpatch: + . Fix semaphore handling in __unregister_chrdev_region. + . [UML] Fix TT mode by reverting "use fork instead of clone". + . Fix tty_ldisc_ref return null check. + . Fix cx88 hue offset. + . Fix tpm breaking 8139cp. + . Fix SMP 6pack driver. + . Fix shaper driver lossage in 2.6.12. + . Stop misusing ntps time_offset value on ppc32. + . Revert nf_reset change. + . Fix ACPI to not accept irq 0 as valid PCI irq. + + * Bump the ABI. + + * Update megaraid split up patch to deal with a controller corner case that + is marked as MEGARAID3, but needs the old driver to work properly. + + * Update redhat cluster suite to CVS20050721: + - Make all the images Provides: rhcs-modules-1 for the redhat-cluster-suite + and make sure the user land have a proper set of modules installed. + - Include dm-cmirror. + - Import all the latest bug fixes. + + * Downgrade ipw2200/ieee80211 drivers to 1.0.1. + (Closes: #11601, #12417, #10627, #11696) + + * Update ocfs2 to 0.99.16. + + * Update spca5xx to 20050701. + + * Update tpm driver: + - Add patch sth-drivers-char-tpm_global-fixups.dpatch. + (Closes: #12065, #12583) + + * Unset CONFIG_IEEE1394_SBP2_PHYS_DMA on sparc. + + * CONFIG_VIDEO_CX88_DVB=m on i386. + + * Update hppa patch to 2.6.12-pa2. + + * Bump build-deps on kernel-wedge (>= 2.05ubuntu1): + + * Add PCI-E suspend/resume support: + - Add patch drivers-pci-pcie_resume-pcie.dpatch. + + * Unset CONFIG_EDD. + (Closes: 8899) + + * Add bluetooth alsa driver: + - Add patch external-drivers-bluetooth_alsa.dpatch. + - CONFIG_BT_ALSA=m. + + * Update inotify from 2.6.13-rcX: + - Obsolete patch external-fs_inotify.dpatch. + - Add patch sth-fs_inotify.dpatch. + + * Fix linux-headers-*: + - scripts/ should be per flavour. + - Update debian/post-install and debian/header-install. + - dh_shlibdeps is now executed per flavour. + - Update debian/control and debian/control.stub to reflect + ${shlibs:Depends} changes. + + * Second (and hopefully last) round of d-i udebs creation cleanup: + - Switch shared/modules/* to kernel-wedge 2 format. + - Switch $arch/modules/$arch/*-modules to kernel-wedge 2 format. + - Rename s/\.lnk// and switch to kernel-wedge 2 format. + - Add crc-modules to d-i/shared/ (from kernel-wedge): + . Remove crc-ccitt from nic-shared-modules. + . Make crc-ccitt optional. + - Add scsi-modules to d-i/shares/ as merge from all scsi-modules + scsi-common-modules and scsi-extra-modules. + - Make scsi-modules point to shared/. + - Remove scsi-common-modules and scsi-extra-modules from all arches. + - Add parport-modules to sparc64 as link to shared/parport-modules. + - Add optional parport_sunbpp to shared/parport-modules. + - Make dm-emc optional in shared/md-modules. + - Add nic-shared-modules to hppa. + - Add nic-modules to d-i/shares/ as merge from all nic-modules and + nic-extra-modules. + - Make nic-modules point to shared/. + - Add nic-usb-modules to d-i/shares/ as merge from all nic-usb-modules. + - Make nic-usb-modules point to shared/. + - Add nic-pcmcia-modules to d-i/shares/ as merge from all nic-pcmcia-modules. + - Make nic-pcmcia-modules point to shared/. + - Kill nic-extra-modules from everywhere. + - Make nic-pcmcia-modules Depends: nic-modules and firmware-modules on + i386 and amd64. + - Make nic-modules Depends: firewire-core-modules, crc-modules on ia64. + - Make nic-modules Depends: crc-modules on ppc and amd64. + (Closes: #12392, #7808) + + * Update all configs. + + * Add fix for ntfs lockup: + - Add patch sth-fs-inode_fix-ntfs-lockup.dpatch. + (Closes: #12748) + + * Update skge driver from 2.6.13-rc3: + - Rename external-drivers-net_skge.dpatch to sth-drivers-net_skge.dpatch. + + * Reenable abi checker for sparc and hppa. + + * Add FUSE support: + - Add patch external-fs_fuse.dpatch. + - CONFIG_FUSE=m on all arches. + - linux-image-* Provides: fuse-module. + + -- Fabio M. Di Nitto Fri, 22 Jul 2005 09:41:28 +0200 + +linux-source-2.6.12 (2.6.12-3.3) breezy; urgency=low + + The "Obtuse Oats" release. + + Changes by Fabio M. Di Nitto: + + * Keep always around a 00list generated by clean: and monotith: targets in + order to make the new dpatch-edit-patch work. + NOTE for devels: + - Never munge 00list manually or commit it to the repository. Keep + updating the 00list-x.y as you always did. + + * Fix script/mod/modpost.c interaction with new glibc: + - Add patch scripts-mod-modpost_deal-with-new-glibc.dpatch. + - Fix tons of ghosts warning building on sparc64. + (Thanks to Ben Collins for debugging the problem and figuring the change + in /usr/include/elf.h between 2.3.2 and 2.3.4) + + * Stabilization process: + - Update to 2.6.12.2: + + Add patch sth-2.6.12.2.dpatch: + . Fix typo in drivers/pci/pci-driver.c + . qla2xxx: Pull-down scsi-host-addition to follow board initialization. + . fix remap_pte_range BUG. + . e1000: fix spinlock bug. + . Add "memory" clobbers to the x86 inline asm of strncmp and friends. + . Fix two socket hashing bugs. + + * Fix ppc64 header package by moving the include/asm symlink to point to the + proper asm-$kernelarch: + - Modify debian/post-install to detect and cope with $kernelarch + - Cleanup debian/config/archmap to add KPKG_ARCH to kernel headers arch + mapping. + + * Update redhat cluster suite modules to CVS20050704. + + -- Fabio M. Di Nitto Mon, 04 Jul 2005 15:39:29 +0200 + +linux-source-2.6.12 (2.6.12-3.2) breezy; urgency=low + + The "Rascal Rye" release. + + Changes by Fabio M. Di Nitto: + + * Remove power3/power4 abi files. + + * Ignore abi check on sparc until the build is fixed with new glibc. + + * Start stabilization process: + - Update to 2.6.12.1: + + Add patch sth-2.6.12.1.dpatch: + . [SECURITY] Fix ia64 ptrace + sigrestore_context. + (CAN-2005-1761) + . [SECURITY] Clean up subthread exec. + (CAN-2005-1913) + + * Update ocfs2 to 0.99.13 release. + + * Update inotify to 2.6.12-13 release. + + * Update alsa to 1.0.9+: + - Add patch sth-alsa-1.0.9.dpatch and sth-alsa-1.0.9-fixups.dpatch. + The latter fix a wrong macro declaration that breaks docbook generation. + - CONFIG_SND_HDSPM=m. + - Bump ABI. + + * Cleanup all ppc power3/power4 specific patches: + - Remove arch-ppc-boot-simple-miscprep_disable-6xx-mmu.dpatch, + arch-ppc-platforms-pmaccache_fix-cache-handling.dpatch, + arch-ppc-kernel_g4-l2-flush-errata.dpatch and + arch-ppc-kernel-l2cr_complete-renaming.dpatch. + + * Drop Provides: linux and move it to linux-meta package. + + * Add skge to d-i and remove sk98lin references: + - *** TEMPORARY HACK ALLERT (part2) ***: + . Move orinoco and hermes to nic-modules. + . Make nic-extra-modules Depends on nic-modules. + . Move crc-ccitt to nic-shared-modules. + + * Fix scsi changer backport from 2.6.12-gitX: + - Update sth-drivers-scsi_changer.dpatch. + + * Fix zd1211 Makefile and linking. + + * Update Depends: on latest initrd-tools to ensure that the megaraid + splitting will work properly in newly created initrd. + + Changes by Chuck Short: + + * Add support for zd1211. + - CONFIG_USB_ZD1211=m. + - Add external-drivers-net-usb_zd1211.dpatch. + (Closes: #11833) + + -- Fabio M. Di Nitto Tue, 28 Jun 2005 14:33:25 +0200 + +linux-source-2.6.12 (2.6.12-2.1) breezy; urgency=low + + The "Flying Spaghetti Monster" release. + + Changes by Fabio M. Di Nitto: + + * Re-enable abi check again. + + * Fix debian/rules sparc64 special case to handle d-i/shared properly. + + * New upstream release (2.6.12 final): + - Add full ChangeLog-2.6.12. + - Drop arch-ppc-include-io_define-isa.dpatch. The patch is wrong and bad. + Drivers need fix from upstream. + - Rename external-drivers-scsi_changer.dpatch to sth-drivers-scsi_changer.dpatch + and update the driver to version 0.25 (from 2.6.12-git1). + - Update acx100 to 0.2.0pre8+fixes57. + - Update afsf to 1.0beta10. + - Update unionfs to 1.0.12a. + - Update inotify to 0.23-rml-2.6.12-rc6-13. + - Update em8300 to 2.6.12. + - Update atmel firmware to 1.3. + - Update spca5xx to 20050601. + - Update adm8211 to 20050620. + - Update cpad to 1.2. + - Update eagle-usb to 2.3.2. + - Update hostap to 0.4.1. + - Bump ABI. + + * Sync from Debian: + - Update arch-ia64_generic-no-smp.dpatch (Dann Frazier): + . Drop arch-ia64-include-asmia64-sn-arch_include-numa.dpatch and + arch-ia64_generic-no-smp-1-to-2.dpatch now included in the main patch. + - Add arch-ia64_irq-affinity-upfix.dpatch (Dann Frazier). + - Update drivers-video-vesafb_make-driver-as-module.dpatch (Andres Salomon). + + * Start using debian/uscan-extmod|passed.kwatch to monitor external drivers + status: + - Update passed.kwatch to a more human readable format. + - Remove all kwatch'ed drivers from external-drivers. + (Thanks to Charles for the overall implementation that missed proper + credits in the previous uploads) + - Rename passed.kwatch to external-drivers. + - Fine tune uscan-extmod to sane defaults. + - Add checkextdrivers and downloadextdrivers targets to debian/rules. + + * RedHat Cluster Suite update to the STABLE branch: + - Rename gndb to gnbd as it should be :) + - Remove all -fixups patches that are already included upstream but were + missing from previous branch. + - Import all shiny bugfixes. + + * Kill power3, power3-smp, power4 and power4-smp flavours. These flavours + should be fully supported by powerpc64-smp. + + -- Fabio M. Di Nitto Wed, 22 Jun 2005 16:30:55 +0200 + +linux-source-2.6.12 (2.6.11.94-1.2) breezy; urgency=low + + The "Caramel Cashew" release. + + Changes by Fabio M. Di Nitto: + + * Update a few bits in the RedHat cluster suite to import the latest fixes + from CVS. + + * Update OCFS2 to 0.99.12. + + * Global udeb creation rework: + - Remove dependency on kernel-wedge modules lists. This change will allow + the kernel build to be fully indipendent from kernel-wedge uploads and + module lists changes. It also makes easier to keep the lists in sync, + since they are all in one package. We still use kernel-wedge to do the + right thing with the modules lists. + . Create debian/d-i/shared/ with the same meaning of common/. + . Modify debian/rules to copy debian/d-i/shared/ as appropriate. + . Add firmware/nic-firmware to d-i/shared/ (from kernel-wedge): + + Update shared/firmware/nic-firmware to include all the latest + versions. + + Make nic-firmware.lnk point to shared/. + . Add modules/firmware-modules to d-i/shared/ (from kernel-wedge): + + Make firmware-modules.lnk point to shared/. + + Add optional efivars required for ia64. + + Remove lib/firmware_class. + . Add modules/firewire-core-modules to d-i/shared/ (from kernel-wedge): + + Remove eth1394 (in nic-modules for amd64/ppc/i386). + + Make firewire-core-modules.lnk point to shared/. + . Add modules/acpi-modules to d-i/shared/ (from kernel-wedge): + + Make acpi-modules.lnk point to shared/. + . Make affs-modules.lnk a non link since it is used only by powerpc. + . Add modules/cdrom-core-modules to d-i/shared/ (from kernel-wedge): + + Make cdrom-core-modules.lnk point to shared/. + . Remove mcd from cdrom-modules. + . Add modules/ext2-modules to d-i/shared/ (from kernel-wedge): + + Make ext2-modules.lnk point to shared/. + . Add modules/ext3-modules to d-i/shared/ (from kernel-wedge): + + Make ext3-modules.lnk point to shared/. + . Add modules/fat-modules to d-i/shared/ (from kernel-wedge): + + Update fat-modules to force all modules inclusion. + + Make fat-modules.lnk point to shared/. + . Add modules/floppy-modules to d-i/shared/ (from kernel-wedge): + + Make floppy-modules.lnk point to shared/. + . Make hfs-modules.lnk a non link since it is used only by powerpc. + . Update powerpc/fs-common-modules: + + Add mbcache. + . Update powerpc/package-list: + + Make ext2 and ext3-modules Depends: fs-common-modules. + . Add modules/ide-core-modules to d-i/shared/ (from kernel-wedge): + + Make ide-core-modules.lnk point to shared/. + . Add modules/ide-modules to d-i/shared/ (from i386/ide-modules): + + Make ide-modules a link to shared/ for i386, amd64 and ia64. + + Add ide-tape and ide-floppy to ide-modules. + + Make amd74xx, atiixp, rz1000, sgiioc4 and sis5513 optional to share + ide-modules with ia64. + + Add ide-tape, ide-floppy, serverworks and isofs to ide-modules for sparc64. + . Add modules/ipv6-modules to d-i/shared/ (from kernel-wedge): + + Make ipv6-modules.lnk point to shared/. + . Add modules/input-modules to d-i/shared/ as a merge from all input-modules: + + Make input-modules a link to shared/. + . Add modules/irda-modules to d-i/shared/ as a merge from i386/amd64 irda-modules: + + Make irda-modules a link to shared/ for i386/amd64. + + Add ali-ircc, nsc-ircc, smsc-ircc2, via-ircc and w83977af_ir to powerpc irda-modules. + . Add modules/jfs-modules to d-i/shared/ (from kernel-wedge): + + Make jfs-modules.lnk point to shared/. + . Remove d-i/ia64/modules/ia64/kernel-image and cleanup crc-ccitt status + around. The module is properly pulled in ppp-modules on all arches as + dependency. + . Add modules/loop-modules to d-i/shared/ (from kernel-wedge): + + Make loop-modules.lnk point to shared/. + + cloop is now required. + . Add modules/md-modules to d-i/shared/ (regenerated from images): + + Make md-modules.lnk point to shared/. + + Remove lvm-mod, dm-zero and faulty. + . Add modules/nfs-modules to d-i/shared/ (from kernel-wedge): + + Make nfs-modules.lnk point to shared/. + . Add modules/ntfs-modules to d-i/shared/ (from i386/ntfs-modules): + + Add ntfs-modules.lnk to i386/ia64/amd64. + + Remove ntfs-modules from i386/ia64/amd64. + . Add modules/nic-shared-modules to d-i/shared/ (from i386/nic-shared-modules): + + Add nic-shared-modules.lnk to i386/ia64/amd64/powerpc/sparc64. + Note: it will add nic-shared-modules udeb to sparc64. + + Make mii conditional since powerpc has it compiled in. + + Remove mii and 8390 from sparc64/nic-modules. + + Remove obsolete nic-modules entry from d-i/sparc/package-list. + + Move airo, hermes and orinoco from nic-shared-modules to + nic-extra-modules on powerpc. + . Add modules/parport-modules to d-i/shared/ (from kernel-wedge): + + Make parport-modules.lnk point to shared/. + . Add modules/pcmcia-modules to d-i/shared/ (merge from our lists): + + Make pcmcia-modules a link to shared/. + + Make i82365 optional. + + Add explicitly rsrc_nonstatic. + . Add modules/pcmcia-storage-modules to d-i/shared/ (from kernel-wedge): + + Make pcmcia-storage-modules a link to shared/ for i386/amd64. + + Make pcmcia-storage-modules.lnk point to shared/ on powerpc. + . Add modules/plip-modules to d-i/shared/ (from kernel-wedge): + + Make plip-modules.lnk point to shared/. + . Add modules/ppp-modules to d-i/shared/ (from kernel-wedge): + + Rename ppp_mppe to ppp_mppe_mppc and make it mandatory. + + Make ppp-modules.lnk point to shared/. + . Add modules/reiserfs-modules to d-i/shared/ (from kernel-wedge): + + Make reiserfs-modules.lnk point to shared/. + . Add modules/rtc-modules to d-i/shared/ (from kernel-wedge): + + Make rtc-modules.lnk point to shared/. + + Both modules are now mandatory. + . Add modules/sata-modules to d-i/shared/ (merge from our lists): + + Full list update of sata drivers. + + Make sata-modules.lnk point to shared/. + . Add modules/scsi-core-modules to d-i/shared/ (from kernel-wedge): + + Make scsi_mod optional (for hppa). + + Make scsi-core-modules.lnk point to shared/. + + Add hppa/scsi-core-modules.lnk. + (This will add scsi-core-modules to hppa) + + Remove sd_mod from scsi-modules on hppa. + . Add modules/serial-modules to d-i/shared/ (merge from our lists): + + Make serial-modules a link to point to shared/. + . Add modules/socket-modules to d-i/shared/ (from kernel-wedge): + + Make socket-modules.lnk point to shared/. + . Add modules/usb-modules to d-i/shared/ (merge from our lists): + + Add sl811-hcd to usb-modules. + + Make usb-modules a link to shared/ for all arches. + (This will add usb-modules to sparc64). + . Add modules/usb-storage-modules to d-i/shared/ (from kernel-wedge): + + Make usb-storage-modules.lnk point to shared/. + + Add usb-storage-modules.lnk to sparc64. + . Add modules/ufs-modules to d-i/shared/ (from kernel-wedge): + + Make ufs-modules.lnk point to shared/. + . Add modules/xfs-modules to d-i/shared/ (from kernel-wedge): + + Make xfs-modules.lnk point to shared/. + + xfs is now mandatory. + . *** TEMPORARY HACK ALLERT ***: + + Make nic-pcmcia-modules Depends: nic-modules on powerpc. + + * Tight gcc-3.4 Build-Deps on i386. + + * Bump Build-Dep on latest kernel-package to import a bunch of bug fixes. + + * Add ARCH override support when building linux-headers. This is required + only for powerpc builds when building on powerpc64 kernels at the moment: + - Modify debian/rules to gather headers arch (HARCH) from + debian/config/archmap in build target. + - Add headers-$debian_arch $kernel_arch mapping to debian/config/archmap. + Note that the arch "ppc" is a kernel arch and not a Debian arch. When this + opertaion is taking place we have no mapping yet between Debian and kernel + arches. + + * CONFIG_DVB_AV7110_OSD=y on all arches. + (Thanks Andreas Mueller for reporting). + + Changes by Chuck Short: + + * CONFIG_IEEE1394_SBP2_PHYS_DMA=y on i386/*. + (Closes: #11271) + + * Add configs debugging/686-smp-dbg, debugging/k7-dbg, debugging/k7-smp-dbg. + + * Update inotify to 0.23-2.6.12-rc6-9. + + Changes by LaMont Jones: + + * Change build-depends to be more lenient on non-ppc architectures. + * hppa rc6-pa1 patch: arch-hppa_rc6-pa1.dpatch. + * Update hppa configs. + + -- Fabio M. Di Nitto Fri, 17 Jun 2005 12:01:38 +0200 + +linux-source-2.6.12 (2.6.11.94-1.1) breezy; urgency=low + + The "Morose Mungbean" Release. + + Changes by Fabio M. Di Nitto: + + * New upstream released based on 2.6.12-rc6: + - Obsolete patches sth-drivers-char-ipmi-ipmidevintf_fix-ftbfs.dpatch, + arch-ppc_fix-resume.dpatch and drivers-net-hamradio-baycomepp_gcc4-fixes.dpatch. + - Rediff kernel-irq_handle-misrouted-irq.dpatch, kernel-irq_handle-misrouted-irq.dpatch and + external-global-acpi_update.dpatch + - Update all configs. + + * Bump Build-Deps on kernel-package 0.135ubuntu4 to include new postinst + script to support ramfs. + + -- Fabio M. Di Nitto Wed, 08 Jun 2005 06:31:29 +0200 + +linux-source-2.6.12 (2.6.11.93-1.3) breezy; urgency=low + + The "Laughing Lentil" Release. + + Changes by Fabio M. Di Nitto: + + * Update powerpc64-smp/iseries-smp configs to actually create a kernel + that can boot. + + * Do not build -dbg flavours automatically since images are huges, but still + provide configs in debian/config/debugging/$flavour for the users. + + -- Fabio M. Di Nitto Tue, 07 Jun 2005 14:43:56 +0200 + +linux-source-2.6.12 (2.6.11.93-1.2) breezy; urgency=low + + The "Bashful Brazil" Release. + + Changes by Fabio M. Di Nitto: + + * Switch to proper patch to fix ipmi FTBFS: + - Update and rename drivers-char-ipmi-ipmidevintf_fix-ftbfs.dpatch to + sth-drivers-char-ipmi-ipmidevintf_fix-ftbfs.dpatch. + + * Fix resume on some ppc notebook: + - Add patch arch-ppc_fix-resume.dpatch. + (Thanks to Benjamin Herrenschmidt ) + + * Update the overall Red Hat cluster suite to RHEL4U1 branch that seems to + be the most reliable one. + + * Add dc395x module to appropriate scsi udebs. + (Closes: #11385) + + * First attempt of powerpc64 kernel support: + - Add support for KPKG_ARCH override required for powerpc64 kernels: + . Modify debian/rules to export KPKG_ARCH at build/install time. + . Add debian/config/archmap file to map configfile name and KPKG_ARCH. + . Make installation of postinstall.$(arch) KPKG_ARCH aware. + - Bump build-dep on gcc-3.4 (>= 3.4.4-0ubuntu4) and kernel-package + (>= 8.135ubuntu2)for ppc biarch support. + - Generate powerpc64-smp udebs. iseries-smp udebs are problematic at the + moment. + - Extend kernel-irq_handle-misrouted-irq.dpatch to include arch/ppc64. + - Add powerpc64-smp and iseries-smp to debian/control*. + - Add debian/config/powerpc/powerpc64-smp and iseries-smp. + + * Update 386-dbg 686-dbg configs. + + Changes by Matthew Garrett: + + * Update generic acpi hotkey driver: + - Add patch external-global-acpi_update-fixups.dpatch. + - CONFIG_ACPI_HOTKEY=m + + Changes by Chuck Short: + + * Add more gcc-4.0 build fixes: + - Add patch drivers-net-hamradio-baycom_epp_gcc4-fixes.dpatch. + + * Drop acerhk support. It is no longer supported upstream: + - Drop external-drivers-input-misc_acerhk.dpatch. + - Remove entry from external-drivers. + + * Add support for debug kernels: + - Add config/i386/386-dbg config/i386/686-dbg. + - Add linux-headers-2.6.12-1-686-dbg linux-image-2.6.12-1-686-dbg. + - Add linux-headers-2.6.12-1-386-dbg linux-image-2.6.12-1-386-dbg. + + Changes by LaMont Jones: + + * Incorporate the latest hppa source delta. + + -- Fabio M. Di Nitto Mon, 06 Jun 2005 10:06:49 +0200 + +linux-source-2.6.12 (2.6.11.93-1.1) breezy; urgency=low + + The "Perky Pecan" Release + + Changes by LaMont Jones: + + * latest hppa kernel patches. + + Changes by Fabio M. Di Nitto: + + * New upstream release (2.6.12rc5): + - Add patch drivers-char-ipmi-ipmidevintf_fix-ftbfs.dpatch. + - Update configs. + + * Cleanup debian/rules: + - Remove debnum: and abinum: targets. + - Add printenv: target. + - Add printenv and startnewrelease to .PHONY. + - Fix revisions calculation per release. + + -- Fabio M. Di Nitto Wed, 25 May 2005 17:38:28 +0200 + +linux-source-2.6.12 (2.6.11.92-1.3) breezy; urgency=low + + The "Wacky Walnut" Release. + + Changes by Fabio M. Di Nitto: + + * Fix FTBFS because dpatch sucks: + - Remove debian/ bits from external-drivers-net-wireless_ipw2100.dpatch. + + * Fix startnewrelease: target in debian/rules. + + Changes by Matthew Garrett: + + * Global acpi update: + - Add patches external-global-acpi_update.dpatch and + external-drivers-ide_sleep.dpatch. + - CONFIG_ACPI_SLEEP_PROC_SLEEP=y and CONFIG_ACPI_HOTKEY=n where applies. + + -- Fabio M. Di Nitto Tue, 24 May 2005 13:57:32 +0200 + +linux-source-2.6.12 (2.6.11.92-1.2) breezy; urgency=low + + The "Merry Macadamia" Release. + + Changes by LaMont Jones: + + * hppa patches from cvs.parisc-linux.org + + Changes by Fabio M. Di Nitto: + + * Update cluster support from Red Hat (CVS snapshot 20050511 FC4 branch): + . Update patches external-drivers-block_gndb.dpatch, + external-cluster_cman.dpatch, external-cluster_dlm.dpatch and + external-fs_gfs.dpatch. + . Add patch external-fs_gfs-fixups.dpatch to include some CVS HEAD fixes + that are not in FC4 branch yet. + . Obsolete patches external-drivers-block_gndb-fixups.dpatch, + external-cluster_cman-fixups.dpatch and + external-cluster_dlm-fixups.dpatch that are now included upstream. + + * Fix bumpabi target in debian/rules to reflect the new version schema. + + * Make sure to include capability.ko in our initrd images. + + * Update inotify to 0.23-2.6.12-rc4-8. + + * Add OCFS2 0.99.9 BETA support: + - Add patch external-fs_ocfs2.dpatch. + - CONFIG_OCFS2_FS=m and CONFIG_CONFIGFS_FS=m on i386/amd64/ppc/sparc/hppa. + + * Bump Build-Deps on kernel-package (>= 8.132ubuntu2) to cope with the new + dpkg-architecture vars. + + * Update ipw2200 driver to 1.0.4: + - Update firware to version 2.3. + - Update ieee80211 to 1.0.4. + - CONFIG_IPW2200_MONITOR=y and CONFIG_IPW2200_QOS=y on i386/ppc/ia64/amd64. + + * Fix ipw2100 driver compilation options. + + Changes by Thom May: + + * Add external skge driver: + - Add patch external-drivers-net_skge.dpatch. + - CONFIG_SK98LIN=n and CONFIG_SKGE=m on all arches. + + * Itaglish translation for the notification message + + Changes by Chuck Short: + + * Add USB Atmel driver: + - Add patch external-drivers-usb-net_atmel-wifi.dpatch. + + * Update USB quickcam driver: + - Add patch external-drivers-usb-media_quickcam.dpatch. + - Obsolete patch external-drivers-usb-media_qcusb-cvs-20050426.dpatch. + + * Add USB spca5xx driver: + - Add patch external-drivers-usb-media_spca5xx.dpatch. + + * Make audit and swsusp a bit more quite at boot: + - Add patch kernel-audit_shaddup.dpatch and + kernel-power-swsusp_shaddup.dpatch. + + -- Fabio M. Di Nitto Tue, 24 May 2005 07:22:30 +0200 + +linux-source-2.6.12 (2.6.11.92-1.1) breezy; urgency=low + + The "Cheerful Chestnut" Release. + + Changes by Fabio M. Di Nitto: + + * New upstream release (based on 2.6.12rc4): + - Remove patches stolen from head. + - Rediff: + . drivers-ide_make-drivers-as-modules.dpatch. + . drivers-video-vesafb_make-driver-as-module.dpatch. + - CONFIG_PRINTK=y and CONFIG_BUG=y on i386/amd64. + - CONFIG_USB_SERIAL_AIRPRIME=m and CONFIG_USB_SERIAL_HP4X on all arches. + - CONFIG_X86_REBOOTFIXUPS=y on i386. + - CONFIG_SGI_TIOCX=y, CONFIG_SGI_MBCS=m, HANGCHECK_TIMER=m on ia64. + - Fix ia64 FTBFS: + . Add patch arch-ia64-include-asmia64-sn-arch_include-numa.dpatch. + - Fix ppc FTBFS: + . Add patch drivers-macintosh-viapmu_add-ifdef.dpatch. + + * Disable rt2500 on ppc (FTBFS). + + * General config update due to the new drivers. + + * Enable CONFIG_BSD_PROCESS_ACCT_V3=y on all arches. + + * Add xmlto as Build-Dep due to recent Documentation changes. + + Changes by Chuck Short: + + * Add Hollywood+/dxr3 support: + - Add patch external-drivers-media_em8300.dpatch. + (Closes: #10543) + + * Add support sound support for via vt17020/24: + - Add patch sound-pci-ide1712_enable-via-envy24pt.dpatch. + (Closes: #9734) + + * Add squashfs support: + - Add patch external-fs-squashfs.dpatch. + + * Update rt2500 driver from cvs. + + * Add rt2400 support: + - Add patch external-drivers-net-wireless_rt2400.dpatch. + + -- Fabio M. Di Nitto Tue, 10 May 2005 11:03:34 +0200 + +linux-source-2.6.12 (2.6.11.91-1.1) breezy; urgency=low + + The "Happy Hazel" Release. + + Welcome to JaneW as our new name release manager that kindly offered + volunteer to find nuts names for our kernel. + + Changes by Fabio M. Di Nitto: + + * New upstream release (based on 2.6.12rc3): + - Update debian/control.stub. + - Modify debian/rules in several sections to cope with a version different + from the one specified in the package name. + - Add empty ChangeLog-2.6.11.91. + - Remove ChangeLog-2.6.10. + - Clean up debian/patches/00list*. 00list-1{,.hppa} are pristine copies + from the previous release. + - Kill all debian/patches/stolen-from-head* and update 00list-1. + - Update d-i kernel versions. + - Update debian/official. + - Update debian/rules bumpabi to use $(pkgversion). + - Kill more patches that were already upstream. + - Remove old unused patches from debian/patches. + - First round of global rename of patches to comply with the new schema, + as agreed on kernel-team mailing list. + - Mark all external- drivers/patches as such and update + debian/external-drivers. + - Apply all external drivers as last and sort them. + - Rediff all non external patches and drop (they are upstream): + . drivers-net-sk98lin-skge_update.dpatch. + . kernel-power-disk_thaw-processes.dpatch. + . drivers-net-mv643xx_update.dpatch. + . arch-ppc-platforms_chrppegasoseth.dpatch. + . external-drivers-usb-media_pwc.dpatch. + - Sort non external patches in debian/patches/00list-1. + - Update external modules: + . adm8211 to version 20050323. + . ieee80211 to version 1.0.3. + . ipw2100 to version 1.1.0. + (Closes: #4820, #7374) + . ipw2200 to version 1.0.3. + (Closes: #7135, #7782) + . ndiswrapper to version 1.1. + (Closes: #6318) + . prism2 and wlan-ng to version 0.2.1-pre26. + . scsi-changes to version 0.24. + . acpi_sony to version 0.2. + . atmel firmwares to version 1.2. + . asfs to version 1.0beta9: + + update amd64/i386/ia64/powerpc configs for NLS support. + . mppe to version 1.3/20041123: + + update all configs for s/CONFIG_PPP_MPPE/CONFIG_PPP_MPPE_MPPC/g. + . synaptic-cpad to version 1.1. + - Fix FTBFS on ppc: + . Add patch arch-ppc-boot-simple-miscprep_disable-6xx-mmu.dpatch. + . Add patch arch-ppc-kernel-l2cr_complete-renaming.dpatch. + - Update configs for i386/amd64/sparc/powerpc/ia64. + (Closes: #6629, #7220, #9068, #9903) + - Fix a few drivers FTBFS: + . Add patch sth-drivers-scsi-ultrastor_fix-ftbfs.dpatch. + . Add patch sth-drivers-usb-image-microteck_fix-ftbfs.dpatch. + . Add patch arch-ppc-platforms-pmac-cpufreq_update-cpufreq-table.dpatch. + + * Add cluster support from Red Hat (CVS snapshot 20050416): + - Add Global Network Block Device (GNDB) support: + . Add patches external-drivers-block_gndb.dpatch and + external-drivers-block_gndb-fixups.dpatch. + . CONFIG_BLK_DEV_GNBD=m for all arches. + - Add Connection Manager (CMAN) support: + . Add patches external-cluster_cman.dpatch and + external-cluster_cman-fixups.dpatch. + . CONFIG_CLUSTER=m for all arches. + - Add Distributed Lock Manager (DLM) support: + . Add patches external-cluster_dlm.dpatch and + external-cluster_dlm-fixups.dpatch. + . CONFIG_CLUSTER_DLM=m and CONFIG_CLUSTER_DLM_PROCLOCKS=y on all arches. + - Add Global FileSystem (GFS) and GFS locking methods: + . Add patch external-fs_gfs.dpatch. + . CONFIG_LOCK_HARNESS=m, CONFIG_LOCK_NOLOCK=m, CONFIG_LOCK_DLM=m, + CONFIG_LOCK_GULM=m and CONFIG_GFS_FS=m on all arches. + + * Force the kernel to use gcc-3.4: + - Add patchmakefile_force-gcc3.4.dpatch. + - Add Build-Dep: gcc-3.4. + + * Add unionfs support: + - Add patches external-fs_unionfs.dpatch and + external-fs_unionfs-fixups.dpatch. + - CONFIG_UNIONFS=m and CONFIG_UNIONFS_XATTR=y on all arches (except ppc). + (Closes: #9757) + + * CONFIG_SECURITY_NET=y on all arches. + (Closes: #7155) + + * Provides ndiswrapper-modules-1.1. + (Closes: #9756) + + * CONFIG_ZORAN=m, CONFIG_VIDEO_ZORAN_BUZ=m, CONFIG_VIDEO_ZORAN_DC10=m, + CONFIG_VIDEO_ZORAN_DC30=m, CONFIG_VIDEO_ZORAN_LML33=m and + CONFIG_VIDEO_ZORAN_LML33R10=m on i386. + (Closes: #8817) + + * Force Depends on initrd-tools (>= 0.1.78ubuntu1) to deal with ldd output + format changes. + + * Add notification system that will tell the user to reboot on each upgrade. + + * Provides linux for 386, sparc64, itanium-smp, amd64-generic. + + * Readd qla2xxx drivers: + CONFIG_QLA2XXX=m, CONFIG_SCSI_QLA21XX=m, CONFIG_SCSI_QLA22XX=m, + CONFIG_SCSI_QLA2300=m, CONFIG_SCSI_QLA2322=m and CONFIG_SCSI_QLA6312=m on + all arches. + + * Enable HIGHMEM support on 386 flavour. + + * IMPORTANT! Debian version change meaning to: + -. so that this release will look + like: 2.6.11.91-1.1. + This is NOT an NMU. + + * Add a debian/TODO list only in the source. + + * Add isa_ definition to asm-ppc/io.h. + + Changes by LaMont Jones: + + * New hppa crack from PARISC CVS: + - Add patches arch-hppa_pa[123].dpatch. + - Obsolete patches parisc-pa.dpatch, parisc-irq.dpatch and + parisc-ext3-perf.dpatch. + - Update hppa configs. + + Changes by Chuck Short: + + * Fix acpi build with gcc-4.0: + - Add patch drivers-acpi-ec_gcc4-ftbs.dpatch. + + * Update external drivers: + - inotify to version 0.23-2.6.12-rc3-4. + (Closes: #5431) + - acx100 to 0.2.0pre8+fixes52. + (Closes: #7160) + + * Remove CONFIG_ACX100 from external-drivers-net-wireless_adm8211.dpatch. + + * Add rt2500 driver: + - external-drivers-net-wireless_rt2500.dpatch. + (Closes: #2570) + + * Add HP TC1100 pen driver: + - drivers-acpi-makefile_wacom-future-usage.dpatch. + - external-drivers-serial_hptc1100.dpatch. + (Closes #6842). + + * Turn on Wacom tablet support: + - CONFIG_SERIAL_WACOM_ACPI=m for i386/ppc/ia64/amd64. + (Closes: #2396) + + * CONFIG_USB_ZD1201=m for i386/ppc/ia64/amd64. + (Closes: #2652) + + * Add support for via6410 motherboard: + - drivers-ide-pci-via82cxx_enable-via6410.dpatch. + + * Add qc-usb driver: + - external-drivers-usb-media_qcusb-cvs-20050426.dpatch. + (Closes: #6415) + + * Add acer hotkeys support: + - external-drivers-input-misc_acerhk.dpatch. + (Closes: #8628) + + * Add rfswitch support: + - external-drivers-misc_rfswitch.dpatch. + (Closes: #6276) + + * Add hostap support: + - external-drivers-net-wireless_hostap.dpatch. + (Closes: #5356) + + Changes by Fabio M. Di Nitto and Chuck Short: + + * The megaraid legacy driver is around only to support AMI megaraid 1 and 2. + All the other controllers are supported (according to the code) by the + new megaraid driver: + - Add patch drivers-scsi-megaraid_spiltup.dpatch: + . Split PCI ID's properly between the 2 drivers. + . Allow compilation of both drivers at the same time. + . Update Kconfig.megaraid to reflect the new changes in the help. + . Rename a few things in the old megaraid driver to avoid possible + conflicts with the new drivers (NOTE: there might be more that needs + to be changed given that now the 2 modules can be loaded at the same + time). + - CONFIG_MEGARAID_NEWGEN=y, CONFIG_MEGARAID_MM=m and + CONFIG_MEGARAID_MAILBOX=m on all arches. + (Closes: #7759) + + -- Fabio M. Di Nitto Mon, 09 May 2005 11:30:44 +0200 + +linux-source-2.6.10 (2.6.10-34) hoary; urgency=low + + The "Succulent Strawberries" Release. + + Changes by LaMont Jones: + + * If $arch.ignore exists, but there are abi files, still do the + diff, just don't FTBFS if it fails. + + * hppa: + - add xfs module, and udeb. + - deliver jfs-modules udeb. + - other udeb cleanup. + - CONFIG_DISCONTIGMEM=y (and ignore the fact that this should cause + an ABI event.) + . Add debian/abi/hppa.ignore - should be removed when -34's ABI + files are added. + - ext3 fix in asm-parisc/bitops.h: + . Add patch parisc-ext3-perf.dpatch. + + Changes by Fabio M. Di Nitto: + + * Update debian/changelog to add CAN assigned to old security fixes that + already part of this kernel tree. + + * Fix journal_unmap_buffer race in ext3: + - Add patch stolen-from-head_ext3-jdb-race.dpatch. + + * Fix ext3/jbd race releasing in-use journal_heads: + - Add patch stolen-from-head_ext3-jdb-race-part2.dpatch. + + -- Fabio M. Di Nitto Tue, 05 Apr 2005 13:05:17 +0200 + +linux-source-2.6.10 (2.6.10-33) hoary; urgency=low + + The "Big Banana" Release. + + Changes by Fabio M. Di Nitto: + + * [SECURITY] Fix possible futex mmap_sem deadlock: + - Add patch stolen-from-head_futex.dpatch. + (CAN-2005-0937) + + * [SECURITY] Fix drm ioctl boundary check: + - Add patch stolen-from-head_fix-drm-ioctl.dpatch. + + * Update debian/changelog to add CAN assigned to old security fixes that + already part of this kernel tree. + + -- Fabio M. Di Nitto Wed, 30 Mar 2005 20:10:57 +0200 + +linux-source-2.6.10 (2.6.10-32) hoary; urgency=low + + The "Radioactive Radish" Release. + + Changes by Fabio M. Di Nitto: + + * [SECURITY] Fix a local root exploit by integer underflow in the bluetooth + handling: + - Add patch stolen-from-head_bluetooth-sign.dpatch. + (CAN-2005-0750) + + * Make debian/rules clean target to really clean all the extra junk. + + * Update debian/changelog to add CAN assigned to old security fixes that + already part of this kernel tree. + + Changes by Matthew Garrett: + + * Make hardware sleep sequence more compliant to ACPI specifications: + - Add patch acpi_gpe_spec.dpatch. + + -- Fabio M. Di Nitto Fri, 25 Mar 2005 06:37:19 +0100 + +linux-source-2.6.10 (2.6.10-31) hoary; urgency=low + + The "Atomic Artichoke" Release. + + * [SECURITY] Fix potential DoS in load_elf_library: + - Add patch stolen-from-head_load_elf_library-kfree-fix.dpatch. + (CAN-2005-0749) + + * Apply uninorth-agp-ppc-suspend.dpatch for real. + + -- Fabio M. Di Nitto Thu, 24 Mar 2005 10:42:07 +0100 + +linux-source-2.6.10 (2.6.10-30) hoary; urgency=low + + The "Crunchy Corn" Release. + + Changes by Fabio M. Di Nitto: + + * [SECURITY] Fix information leak in ext2 directory creation: + - Add patch stolen-from-head_ext2-noinfoleak.dpatch. + (CAN-2005-0400) + + * [SECURITY] Fix a bunch of range checks in ISO9660 fs: + - Add patch stolen-from-head_iso9660-flaws.dpatch. + (CAN-2005-0815) + + * [SECURITY] Fix a possible local dos in tmpfs: + - Add patch stolen-from-head_tmpfs-nolocaldos.dpatch. + + * [SECURITY] Only root should be allowed to set N_MOUSE line discipline: + - Add patch stolen-from-head_serio-is-only-for-root.dpatch. + (CAN-2005-0839) + + * Make scsi_ioctl.c more silent: + - Add patch scsi-stfu.dpatch. + (Closes: #7280) + + * Ship i2o modules in scsi*.udeb. + (Closes: #7800) + + Changes by Chuck Short: + + * Fix ahc_dv_0 CPU usage: + - Add patch aic7xx-sleep.dpatch. + (Closes: #7592) + + -- Fabio M. Di Nitto Tue, 22 Mar 2005 17:05:57 +0100 + +linux-source-2.6.10 (2.6.10-29) hoary; urgency=low + + The "Crispy Chicken" Release. + + Changes by Fabio M. Di Nitto: + + * Remove 2.6.10-27 abi files. + + * Add 2.6.10-28 abi files for i386/amd64/powerpc/ia64/sparc. + + * Comment msleep calles in sound/pci/es1968.c snd_es1968_ac97_{read,write}: + - Add patch es1968_msleep.dpatch. + (Closes: 7651) + + * Fix abi checker override detection. + + * Add bumpabi: target in debian/rules to update all files involved in ABI + changes. + + * Add startnewrelease: target in debian/rules to be executed only once after + each release and create the proper changelong/00-list files. + + * Fix missed interrupts causing HP laptops to not correctly set the initial + number of fans after boot: + - revert IPMI fix stolen from Debian. + - obsolete patch stolen-from-head_053-ipmi_unhandled_message_counting.dpatch. + + * Update sparc64 config files. + + * s/CONFIG_pm/CONFIG_PM/g : + Update uninorth-agp-ppc-suspend.dpatch + + * Fix snd-nm256 module load: + - Add patch stolen-from-head_snd-nm256.dpatch. + (Closes: #7939) + + Changes by Sven Luther: + + * Fix mv643xx driver for powerpc: + - Add patches powerpc-mv643xx-enet.dpatch and powerpc-mv643xx-eth-pegasos.dpatch. + - Obsolete patch marvell-pegasos-2.dpatch. + + * Add support files for mkvmlinuz. + + Changes by Matthew Garrett: + + * Fix acpi on HP laptops: + - Add patch acpi_ec_burst_mode.dpatch. + + * More snd_i8x0m ids: + - Add patch stolen-from-head_i8x0modem.dpatch. + + * Add more suspend for i810 video cards: + - Add patch intel-video-suspend.dpatch. + + * Add more i915gm pci ids: + - Add patch stolen-from-head_i915gm-support.dpatch. + - Add patch stolen-from-head_i915gm-support-typo.dpatch. + + * Add more i915drm pci ids: + - Add patch i915drm-pcids.dpatch + + * Add suspend support for uninorth agp on ppc: + - Add patch uninorth-agp-ppc-suspend.dpatch. + + * Sync i915drm driver version number to make 3D survive to suspend/resume: + - Add patch i915drm-sync-ver.dpatch. + + Changes by LaMont Jones: + + * Add 2.6.10-28 abi files for hppa. + + Changes by Chuck Short: + + * Add support for USB bus reset. Possible fix for 6924: + - Add patch stolen-from-head_usb-hub-speed-reset.dpatch. + + * Add fix to release irq for via-rhine ethernet cards: + - Add patch stolen-from-head_via-rhine-irq.dpatch. + + * Remember to spin down the disks in swsusp mode: + - Add patch disk_power_shutdown.dpatch. + + -- Fabio M. Di Nitto Tue, 22 Mar 2005 16:14:44 +0100 + +linux-source-2.6.10 (2.6.10-28) hoary; urgency=low + + Changes by Fabio M. Di Nitto: + + * Bump kernel ABI. + + * [SECURITY] fix a sign comparison problem in the atm layer: + - Add patch stolen-from-head_CAN-2005-0531.dpatch + (CAN-2005-0531) + + * [SECURITY] fix a possible DoS in ppp: + - Add patch stolen-from-head_ppp-no-dos.dpatch. + (CAN-2005-0384) + + * [SECURITY] fix remote crash with bad IP packet fragments: + - Add patch stolen-from-head_reset-checksum.dpatch. + (CAN-2005-0209) + + * [SECURITY] Do not leak dst entries: + - Add patch stolen-from-head_no-dst-leak.dpatch. + (CAN-2005-0210) + + * [SECURITY] drm: fix race condition in radeon driver: + - Add patch stolen-from-head_radeon-race-fix.dpatch. + (CAN-2005-0767) + + * [SECURITY] fix possible overflow in epoll: + - Add patch stolen-from-head_epoll-return-on-overflow.dpatch. + (CAN-2005-0736) + + * [SECURITY] AMD64, allows local users to write to privileged IO ports via + OUTS instruction (Simon Horman): + - Add patch outs.dpatch. + (CAN-2005-0204) + + * Update debian/changelog to add CAN assigned to old security fixes that + already part of this kernel tree. + + * Fix hppa FTBFS: + - Remove debian/d-i/hppa/modules/hppa/nfs-modules.lnk since all nfs is + compiled in. + - Make kernel-image Provides: nfs-modules. + + * Merge Andres Solomon abichecker patch. + + * Enanche abicheker patch: + - Make the abi checker use a per arch dir structure to avoid possible name + clashing. + - Change the use of debnum into abinum to simplify abiname creation. + - Add per arch abicheck override to help unofficial arch porters and + allow them to be desynced. + - Export LC_ALL=C before calling sort to ensure that the sorting algo is + the same all over. + + * Stolen from Debian (up to 2.6.10-6): + - Fix oops in md driver; when calling sync_page_io, correctly initialize a + bio, ensuring bi_max_vecs is set. (Andres Salomon): + . Add patch stolen-from-head_051-md_sync_page_io_max_vecs.dpatch. + - Return proper error values from vfat_valid_longname(), and pass them + back to calling functions (vfat_mkdir, vfat_create). (Andres Salomon): + . Add patch stolen-from-head_052-vfat_valid_longname_proper_return.dpatch. + - This fixes some IPMI issues (Andres Salomon): + . fix counting of handled and unhandled messages + . decode_dmi should've been handling 16 byte boundaries instead of 16 + bit boundaries + . Add patch stolen-from-head_053-ipmi_unhandled_message_counting.dpatch. + - When an error occurs in ext3, if we're going to panic, do it *after* + aborting the journal (Andres Salomon): + . Add patch stolen-from-head_054-ext3_journal_abort_before_panic.dpatch. + - [UML] When creating a new thread, fix potential signal race that could + cause stack corruption (Andres Salomon): + . Add patch stolen-from-head_055-uml_new_thread_race.dpatch. + - [IA64] Returning early from ia64_elf32_init in the case of failures + could be problematic. Instead of doing that, call BUG() (Andres + Salomon): + . Add patch stolen-from-head_058-ia64_binfmt_elf_bug_out.dpatch. + - [ALSA] Return -EBADFD when a usbaudio device is disconnected + (Andres Salomon): + . Add patch stolen-from-head_064-alsa_usbaudio_disconnect.dpatch. + - The ibmvscsi driver's probe function could potentially exit the delay + loop before the adapter has finished initializing + (hostdata->request_limit == 0), and thus end up not scanning for drives + (Andres Salomon): + . Add patch stolen-from-head_066-ibmvscsi_probe_delay_loop_fix.dpatch. + - [USB] Inside gs_free_ports: don't deref memory that's already been freed + (Andres Salomon): + . Add patch stolen-from-head_073-usb_gadget_serial_free_ports.dpatch. + - [USB] Update makefile for sl811(-hcd) and dc2xx drivers (Andres + Salomon): + . Add patch stolen-from-head_074-usb_makefile_fixes.dpatch. + - Fix permissions passed to module_param() in IBM pci hotplug driver + (Andres Salomon): + . Add patch stolen-from-head_075-acpiphp_ibm_module_parm_perm.dpatch. + - For aborted transaction, only spew errors the first time to avoid a + flood of errors (Andres Salomon): + . Add patch stolen-from-head_077-ext3_journal_abort_handle_silence.dpatch. + - [JBD] journal_revoke may try to delete a metadata block twice; this + patch allows a graceful recovery, instead of a BUG() (Andres Salomon): + . Add patch stolen-from-head_078-jbd_journal_revoke_graceful_double_delete.dpatch. + - This patch makes ext3 handle instances of corruption more gracefully. It + also changes __ext3_journal_forget (which 078-jbd_journal_revoke*.dpatch + needs) (Andres Salomon): + . Add patch stolen-from-head_087-ext3_graceful_corruption_fixes.dpatch. + - Fix post-2.6.10 atyfb breakage on SPARC32/64 (Joshua Kwan): + . Add patch atyfb-sparc.dpatch. + - Fix some compatibility functions that (as a side effect) caused NIS to + flatten a sparc64 machine (Joshua Kwan): + . Add patch sparc64-nis-killer.dpatch. + - Enable recognition of the clock chip on SunBlade 1500, it won't boot + otherwise (Jurij Smakov): + . Add patch stolen-from-head_sparc64-sb1500-clock-2.6.dpatch. + - The ibmvscsi driver has paths that free evt_struct, and then proceed to + use it. That's clearly a no-no in SMP/threaded contexts; once an + evt_struct is free, something else may grab it. So, this patch: + . moves the free_event_struct() to after usage of the evt_struct + . creates a single path for cleanup + . calls evt_struct->done during cleanup, which is something that + should've been happening. + (Andres Salomon): + + Add patch stolen-from-head_088-ibmvscsi_event_struct_use_after_free.dpatch + - [NET] Some sanity checks are needed to ensure payloads are the same size + as the structures they're being copied into. AFAICT, there's no way for + a malicious user to inject a payload in here (it looks like + police_locate stuff is called during routing changes by root); however, + I can't say that I'm too familiar w/ tcf stuff (Andres Salomon): + . Add patch stolen-from-head_092-net_sched_police_locate_sanity_check_input.dpatch. + - The e1000 driver's read_eeprom and write_eeprom functions allowed a bit + to much data to be read/written; an extra word. Fix that (Andres Salomon): + . Add patch stolen-from-head_093-e1000_eeprom_read_off_by_one.dpatch. + - [SCSI] scsi_device_set_state() might be setting a device offline, w/ an + oldstate of BLOCK; that shouldn't be considered an error. Add the + missing state transition (Andres Salomon): + . Add patch stolen-from-head_094-scsi_device_set_state_missing_oldstate.dpatch. + - [JFFS2] Fix memory leak in jffs2_build_filesystem(), if + jffs2_scan_medium fails (Andres Salomon): + . Add patch stolen-from-head_095-jffs2_build_filesystem_memory_leak.dpatch. + - [MTD] Inside NFTL_formatblock and INFTL_formatblock, the code was + previously assigning values to instr, then zero'ing out the values. + Instead, move the assignment to after the memset (Andres Salomon): + . Add patch stolen-from-head_096-mtd_formatblock_zero_before_assignment.dpatch. + - [MTD] s3c2410_nand_inithw() was pulling timing information from the + wrong place, making the timing incorrect. This patch makes it pull the + info from the right place (Andres Salomon): + . Add patch stolen-from-head_097-mtd_s3c2410_nand_inithw_calc_rate_fix.dpatch. + - [JFFS2] Initialize each eraseblock's bad_count to 0 in jffs2_do_mount_fs(). + Unitialized memory sure is fun, eh? (Andres Salomon): + . Add patch stolen-from-head_098-jffs2_do_mount_fs_init_bad_count.dpatch. + - [JFS] Fix race in jfs_commit_inode(); before actually doing the commit, + retest to ensure that the inode is both dirty and linked (Andres Salomon): + . Add patch stolen-from-head_099-jfs_commit_inode_commit_race.dpatch. + - Fix buglet in cosa's sppp_channel_init(); do not call sppp_attach() + until the netdev contains info that sppp_attach needs (Andres Salomon): + . Add patch stolen-from-head_102-cosa_sppp_channel_init_delay_attach.dpatch. + - [SECURITY] The SDLA driver only checked CAP_NET_ADMIN when doing + firmware uploads. This patch adds an additional check for + CAP_SYS_RAWIO, as well (Andres Salomon): + . Add patch stolen-from-head_104-wan_sdla_firmware_cap_sys_rawio_addition.dpatch. + - [XFS] In xfs_finish_reclaim(), xfs_ireclaim() should always be called + (unless there's some sort of locking problem) before returning (Andres Salomon): + . Add patch stolen-from-head_107-xfs_finish_reclaim_always_inode.dpatch. + - [SECURITY] xfs_ioctl(XFS_IOC_ATTRMULTI_BY_HANDLE) calls xfs_attrmulti_by_handle, + which allocates memory based on user input. This patch adds a check for + a max size of memory to alloc; otherwise, a user can potentially DoS the + system by exhausting memory. Not sure whether root is required to open + the vnode device, but to be on the safe side... (Andres Salomon): + . Add patch stolen-from-head_108-xfs_attrmulti_by_handle_limit_mem_alloc.dpatch. + - [SECURITY] Fix from Solar Designer; the binfmt_elf load routines are + returning incorrect values, and are not strict enough in checking the + number of program headers (Andres Salomon): + . Add patch stolen-from-head_109-binfmt_elf_loader_solar_designer_fixes.dpatch. + - If the parsing of module args failed, the module could still be loaded + successfully. Fix that (Andres Salomon): + . Add patch stolen-from-head_110-load_module_arg_checking.dpatch. + - audit_receive_skb negates the err it receives from audit_receive_msg. + It shouldn't do that (Andres Salomon): + . Add patch stolen-from-head_112-audit_receive_skb_double_negative_return_val.dpatch. + - [I2C] The i2c-sis5595 was forward ported from 2.4, but the calls to read + the pci config registers were never updated for 2.6. As such, they are + incorrectly handling the results of the function calls (Andres Salomon): + . Add patch stolen-from-head_118-i2c_sis5595_setup_pci_config_return_checks.dpatch. + - [SECURITY] Fix a very hard to exploit buffer overflow in the i2c-viapro + driver (Andres Salomon): + . Add patch stolen-from-head_119-i2c_viapro_i2cdump_overflow.dpatch. + - Fix an oopsable condition in Openpromfs's property_read() (Andres Salomon): + . Add patch stolen-from-head_120-openpromfs_property_read_fix.dpatch. + - [SCSI] cciss_scsi_detect() calls scsi_add_host(), which bumps the + refcount (even in the event of an error). Thus, if scsi_add_host fails, + the scsi host refcount needs to be decremented; so, call scsi_host_put + upon error (Andres Salomon): + . Add patch stolen-from-head_134-cciss_scsi_detect_put_host_on_error.dpatch. + - 64bit archs that offer 32bit compat wrappers for sys_shmget were mostly + passing the second arg as a 32bit signed int; what would happen then is, it + would be casted to a size_t (64bit unsigned), and the sign would cause it to + overflow. Instead, we need to cast to a 32bit unsigned value first, and then + cast to 64bit unsigned (Andres Salomon): + . Add patch stolen-from-head_135-64bit_sys_shmget_compat_size_t_overflow.dpatch. + - More of the same as 135*.dpatch, except for stuff like sys_ipc, + sys_semget, sys_msgsnd, etc (Andres Salomon): + . Add patch stolen-from-head_136-64bit_sys_compat_overflows.dpatch. + - [I386] dma_free_coherent() was calling kmalloc with its args reversed; + clearly incorrect (Andres Salomon): + . Add patch stolen-from-head_139-pci_dma_free_coherent.dpatch. + - For various pci devices, if pci_request_regions fails (because resources + are already in use), don't disable the pci device (someone else is using it) + (Andres Salomon): + . Add patch stolen-from-head_141-pci_devices_dont_disable_dev_if_busy.dpatch. + - The r8169 driver wasn't alloc'ing enough memory for skbs; the size + should be padded by NET_IP_ALIGN (Andres Salomon): + . Add patch stolen-from-head_142-r8169_dev_alloc_skb_alignment_fix.dpatch. + - [SYSFS] sysfs_write_file assigns the result of fill_write_buffer (which + is signed and returns negative upon error) to an unsigned int. + Clearly, bad and wrong.. (Andres Salomon): + . Add patch stolen-from-head_143-sysfs_write_file_signedness_problem.dpatch. + (CAN-2005-0867) + + * Use "getconf _NPROCESSORS_ONLN" instead of parsing /proc/cpuinfo to + gather the number of CPU on the system. (From Matt Zimmerman) + + * Add version to linux-doc description. + + * Update inotify again to 2.6.11-3 since we are bumping the ABI for other + reasons anyway and mainly due to the better code in disabling it by + default with proper checks in the 5 keys function. This should avoid + possible memory leaks or oops. + + Changes by Chuck Short: + + * Fix via-thine oops on shutdown: + - Add patch stolen-from-head_via-rhine-oops.dpatch. + + * Not all USB ports detected on nForce4 SLI chipset boards: + - Add patch nforce4-usb-broken.dpatch. + (Closes: #7214) + + * No keyboard with 2.6.10-4-386-SMP: + - Add patch keyboard-i8042-fix.dpatch. + (Possibly close: #7167) + + * Add emu10k1x driver: + - Add patch stolen-from-head_em10k1x-alsa.dpatch. + - CONFIG_SND_EMU10K1X=m. + (Closes: #6492) + + Changes by Matthew Garrett: + + * b44 should not accept ioctls if the interface is down: + - Add patch fix-b44.dpatch. + (Closes: #7490) + + Changes by Daniel T. Chen: + + * Fix sis900 kernel oops: + - Add patch stolen-from-head_sis900-oops.patch. + + -- Fabio M. Di Nitto Sat, 12 Mar 2005 12:18:02 +0100 + +linux-source-2.6.10 (2.6.10-27) hoary; urgency=low + + Changes by Fabio M. Di Nitto: + + * Revert the inotify update to unbreak the ABI. + + -- Fabio M. Di Nitto Fri, 11 Mar 2005 17:13:58 +0100 + +linux-source-2.6.10 (2.6.10-26) hoary; urgency=low + + Changes by Fabio M. Di Nitto: + + * Fix debian/rules to handle builds from some revision control systems + that hides files as .* + + * Add export of CONCURRENCY_LEVEL in build target when building on ubuntu's + buildd and respect possible override from user. + + * Remove old hack from debian/rules when calling kernel-wedge: + - Update Build-Dep on newer kernel-wedge. + - CONFIG_CRC32=y on all arches. + - IA64 specific changes: + . Add fs-common-modules to include mbcache.o used by ext2/ext3 extended + attributes. + . Update package-list to reflect proper udeb dependencies. + + * Major build system rework to kill the patch madness: + - Modify make-kernel-patch-pkgs to build only linux-patch-ubuntu. + - Build linux-tree from debian/rules. + - Modify debian/rules to consider the actual version as always the first + to ship one patch. + - Kill the loop call to stamp-monolith and build only the last version. + - On the way of reorganizing linux-patch-ubuntu: + . Make linux-patch-ubuntu arch: any, since we apply patches that arch + specific and distributed to the other arches. + . Move make-kernel-patch-pkgs to binary-arch target. + . Make apply/unpatch aware of the arch and + + * Kill unpack-kernels target and incorporate it directly in binary-udebs. + This fixes a small corner case to avoid manual builds to fail. + + * Update inotify driver to 0.20-2.6.11-3: + - Obsolete patches: + . inotify-0.18-rml-2.6.10-16.dpatch. + . inotify-0.18-rml-2.6.10-15-optional.dpatch. + . enable-inotify.dpatch. + - Add patchs: + . inotify-0.20-rml-2.6.11-3.dpatch. + . inotify-0.20-rml-2.6.11-3-optional.dpatch. + + * Renable enable_atapi_ata-2.dpatch. + + * CONFIG_LOGO=n on all arches (per Jeff Bailey). + + Changes by Thibaut VARENE: + + * Unset CONFIG_BLK_DEV_IDE_PMAC_BLINK on powerpc and powerpc-smp. + + * Update patch stolen-from-head_ia64-ia32_signal.dpatch to fix a wrong call + to mempcy. + + -- Fabio M. Di Nitto Mon, 07 Mar 2005 19:33:38 +0100 + +linux-source-2.6.10 (2.6.10-25.2) hoary; urgency=low + + * Disable enable_atapi_ata-2.dpatch + + -- Matt Zimmerman Wed, 9 Mar 2005 18:29:50 -0800 + +linux-source-2.6.10 (2.6.10-25.1) hoary; urgency=low + + * The "Welcome back fabbione"'s release. + + * Partially revert the changes introduced by enable_atapi_ata.dpatch to + avoid CDROM read corruption on piix chipsets: + - Add patch enable_atapi_ata-2.dpatch. + - Obsolete patch enable_atapi_ata.dpatch. + + Hopefully 1440 will stay closed otherwise: gub KTG a eb tsum ti! + + -- Fabio M. Di Nitto Wed, 09 Mar 2005 20:59:26 +0100 + +linux-source-2.6.10 (2.6.10-25) hoary; urgency=low + + * d-i [Colin Watson ] + - Add nfs-modules udebs, needed for some applications of Kickstart + * ppc + - Enable pmac laptop led support in powerpc* configs + [Thibaut Varene ] + * ia64 + - SFH: Fix a serious bug in ia32 signal (wrong zeroing size, use + copy_from_user instead of memcpy). [Thibaut Varene ] + Patch: stolen-from-head_ia64-ia32_signal.dpatch + * Enable ATAPI support in libata [Chuck Short ] + Patch: enable_atapi_ata.dpatch + Closes: #1440 + + -- Thibaut VARENE Tue, 01 Feb 2005 19:56:33 +0100 + +linux-source-2.6.10 (2.6.10-24) hoary; urgency=low + + * hibernate [Matthew Garrett ] + Patch: stolen-from-head_cpufreq-resume.dpatch + Closes: #6302 + * ppc [Matthew Garrett ] + Enable suspend-to-disk. + Patch: powerpc-pmdisk.dpatch + * disable inotify unless specifically enabled [zulcss@gmail.com] + Patch: enable-inotify.dpatch + * Version 0.19a of toshiba_acpi.c + [Daniel Silverstone ] + Patch: tosh_acpi2.dpatch + + -- LaMont Jones Thu, 24 Feb 2005 05:28:47 -0700 + +linux-source-2.6.10 (2.6.10-23) hoary; urgency=low + + * powerpc fixes [Colin Watson ] + + -- LaMont Jones Tue, 22 Feb 2005 14:52:55 -0700 + +linux-source-2.6.10 (2.6.10-22) hoary; urgency=low + + * Add missing patch lists. + + -- Colin Watson Tue, 22 Feb 2005 11:25:33 +0000 + +linux-source-2.6.10 (2.6.10-21) hoary; urgency=low + + * Fix package names for 2.6.10-4 ABI. + * Update udebs to 2.6.10-4. + + -- Colin Watson Tue, 22 Feb 2005 09:36:24 +0000 + +linux-source-2.6.10 (2.6.10-20) hoary; urgency=low + + * 2.6.10-4 ABI creation. + * [SECURITY] fix some sign comparison problems in the filesystem layer. + - Add patch stolen-from-head_fix-sign.dpatch again. + (CAN-2005-0529, CAN-2005-0530, CAN-2005-0532) + * Hotplug [Colin Watson < cjwatson@ubuntu.com>] + - support for scsi modules. Closes: #6681. + Patch: scsi-hotplug.dpatch + - mptscsih glue. Closes: #6786 + Patch: mptscsih-hotplug.dpatch + * Update inotify driver: + - Add patch inotify-0.18-rml-2.6.10-16.dpatch, replacing + inotify-0.18-rml-2.6.10-15.dpatch. + * ACPI updates [Matthew Garrett ] + Patch: stolen-from-head_acpi-bk-snapshot.dpatch (replaces + ..._acpi-20050125.dpatch) + * Fix release-bug in hd64465 PCMCIA driver. Closes #2092. [zulcss@gmail.com] + Patch: hd64465_ss-missing-release.dpatch + * make touchpads seem less sticky [zulcss@gmail.com] + Patch: stolen-from-head_mousedev_unstickyness.dpatch + * tulip driver fix from BK. [zulcss@gmail.com] + Patch: stolen-from-head_de214-pci-enable-fix.dpatch + * USB + - add support for some flash card readers [zulcss@gmail.com] + Patches: usbat_01_unification.dpatch usbat_02_usbat02.dpatch usbat_03_flash.dpatch + * i386 + - New toshiba_acpi from Daniel Silverstone + Patch: tosh_acpi2.dpatch (replaces tosh_acpi.dpatch) + * ia64 + - Revert MPT Fusion changes. To be used with pci.handmap. + [Thibaut VARENE ] + * ppc + - sleep patches [Matthew Garrett ] + Patches: + stolen-from-head_atyfb_update.dpatch + stolen-from-head_console_sem.dpatch + stolen-from-head_ppc_save_restore.dpatch + stolen-from-head_ppc_sleep.dpatch + stolen-from-head_radeonfb_fix_x86_regression.dpatch + stolen-from-head_radeonfb_update.dpatch + - Fix cpu clock freq overflow. [Thibaut VARENE ] + Patch: powerpc-fix-proc-clock + + -- LaMont Jones Mon, 21 Feb 2005 22:02:13 -0700 + +linux-source-2.6.10 (2.6.10-19) hoary; urgency=low + + * Build drm as module: + - DRM=m. + + * Add drivers/input/mouse/psmouse.ko drivers/input/mousedev.ko to + input-modules udebs. + + -- Fabio M. Di Nitto Tue, 15 Feb 2005 20:13:59 +0100 + +linux-source-2.6.10 (2.6.10-18) hoary; urgency=low + + * Fix clean target: + - Update patch stolen-from-head_fix-sign.dpatch. + + * General package cleanup: + - Remove unused patch stolen-from-head_xfs.dpatch that slept in for a + mistake. + - Rename stolen-from-head_ia64-ptrace to + stolen-from-head_ia64-ptrace.dpatch. + + * TEMPORARY revert SECURITY fix and inotify update from -17 since they + break the kernel ABI. + + -- Fabio M. Di Nitto Tue, 15 Feb 2005 07:51:45 +0100 + +linux-source-2.6.10 (2.6.10-17) hoary; urgency=low + + * [SECURITY] fix some sign comparison problems in the filesystem layer. + - Add patch stolen-from-head_fix-sign.dpatch + * ia64 + - clean up ptrace corner cases + Add patch stolen-from-head_ia64-ptrace.dpatch + http://lia64.bkbits.net:8080/linux-ia64-release-2.6.11/cset@41f2d1eePludGYyb1yOmGaW6Iois8Q + (CAN-2005-0136) + - Make Fusion drivers builtin and remove them from scsi-modules + * powerpc + - Enable Altivec support in power4* configs + * evdev: + - Add evdev to *-di kernels, to get multiseat-udeb working. Not added to + debian/d-i/sparc/modules/sparc*, as it didn't already have an + input-modules. + * power management for 3c59x: + - Add patch stolen-from-head_3c59x-power-management.dpatch Closes #5228 + * sony hotkey management: + - Add patch sonypi.dpatch + * Update inotify driver: + - Add patch inotify-0.18-rml-2.6.10-16.dpatch, replacing + inotify-0.18-rml-2.6.10-15.dpatch. + * hppa: + - include irq.c patch for accounting bug. + + -- LaMont Jones Mon, 14 Feb 2005 09:46:59 -0700 + +linux-source-2.6.10 (2.6.10-16) hoary; urgency=low + + * ia64 + - Remove amd74xx from debian/d-i/ia64/modules/ia64/ide-modules + - Really drop ext2-modules from kernel-image. + + -- LaMont Jones Wed, 9 Feb 2005 20:13:35 -0700 + +linux-source-2.6.10 (2.6.10-15) hoary; urgency=low + + * [SECURITY] Update debian/changelog to include some security references + that were missing at release time: + - 2.6.10-6: + . Add patch stolen-from-head_overflow-in-nls.dpatch. (CAN-2005-0177) + - 2.6.10-4: + . Add patch 031-sg_scsi_ioctl_int_overflows.dpatch. (CAN-2005-0180) + . Add patch fix-rlimit-memlock-dos.dpatch. (CAN-2005-0179) + + * [SECURITY] First cut at setsid/tty locking: + - Add patch stolen-from-head_tty_setsid_race.dpatch. (CAN-2005-0178) + + * Update inotify driver: + - Add patch inotify-0.18-rml-2.6.10-15.dpatch. + - Obsolete patches inotify-0.18-rml-2.6.10-9.dpatch and + sparc64-inotify-0.18-rml-2.6.10-9.dpatch. + sparc64 bits have been included upstream. Thanks Robert! + + * Add boot option 'noinotify' to disable inotify at boot time: + - Add patch inotify-0.18-rml-2.6.10-15-optional.dpatch. + + * General acpi update: + - Add patch stolen-from-head_acpi-20050125.dpatch. + - Obsolete patches stolen-from-head_acpi-20041210.dpatch, + stolen-from-head_acpi-video-device-enumeration.dpatch and + stolen-from-head_acpi_fix_regression.dpatch. + (Closes: #5807, #6103 and probably more) + + * Stolen from upstream: + - Sanity check unw_unwind_to_user: + . Add patch stolen-from-head_059-ia64_unwind_stack_check.dpatch. + (CAN-2005-0135) + - DRM at 20050201: + . Add patch stolen-from-head_drm2.dpatch. + - Keep fragment queues private to each user: + . Add patch stolen-from-head_keep-fragments-pvt.dpatch. + (CAN-2005-0449) + + * Bump kernel ABI. + + * Update sk98lin driver from 20050207 bk netdev: + - Add patches stolen-from-head_sk98lin.dpatch and sk98lin-update-3.dpatch. + - Obsolete sk98lin-update-2.dpatch. + + * Add Panasonic DMC-LC33 device info: + - Add patch drivers-add-DMC-LC33.dpatch. + (Closes: #6150) + + * Update parisc patch up to 2.6.10-pa12 to fix the infamous disk I/O + bottleneck: + - Add patch parisc-pa-2.dpatch. + - Obsolete parisc-pa.dpatch. + + * Stop providing ext2-modules from kernel-image on ia64. + + * Update libata from bk: + - Add patch stolen-from-head_libata-updates.dpatch. + - SCSI_ATA_ADMA=m + - SCSI_PATA_PDC2027X=m + + -- Fabio M. Di Nitto Mon, 07 Feb 2005 15:55:21 +0100 + +linux-source-2.6.10 (2.6.10-14) hoary; urgency=low + + * Add ext2 modules udeb for ia64. + + * Unset CONFIG_BLK_DEV_AMD74XX on ia64. + + * Fix noexec parse option on x86_64: + Add patch amd64_parse_noexec.dpatch. + + -- Fabio M. Di Nitto Fri, 04 Feb 2005 08:57:33 +0100 + +linux-source-2.6.10 (2.6.10-13) hoary; urgency=low + + * Fix crash in 32bit emulation. Backport from 2.6.11-rc2 (Frederik Schüler): + - Add patch stolen-from-head_amd64-ia32-vsyscall-fix.dpatch. + + -- Fabio M. Di Nitto Mon, 31 Jan 2005 07:04:58 +0100 + +linux-source-2.6.10 (2.6.10-12) hoary; urgency=low + + * Update inotify driver to 0.18: + - Add patches inotify-0.18-rml-2.6.10-9.dpatch and + sparc64-inotify-0.18-rml-2.6.10-9.dpatch. + - Obsolete patches inotify-0.17-rml-2.6.10-2.dpatch and + sparc64-inotify-0.17-rml-2.6.10-2.dpatch. + (Closes: #5431) + + * Update debian/d-i/hppa/kernel-versions to fix FTBFS. + + * Update bluetooh protocol stack up to -mh2: + - Add patch stolen-from-head_bluez.dpatch. + - Add bluez-firmware-1.0. + (Closes: #3668) + + -- Fabio M. Di Nitto Thu, 27 Jan 2005 12:30:03 +0100 + +linux-source-2.6.10 (2.6.10-11) hoary; urgency=low + + * Missing entry from previous release changelog: + - Fix the "My load is always 2" problem: + . Add patch thaw_processes.dpatch. + (Closes: #5548) + + * Backport drm from 2.6.11rc1: + - Add patch stolen-from-head_drm.dpatch. + - Enable matrox drm on x86_64: + . DRM_MGA=m + + * Update debian/external-drivers information. + + * Rename hppa kernels from $bits to hppa$bits: + - Update control.stub. + - Rename debian/config/hppa/$bits. + + * Update wlan-ng-prism2-usb driver up to 0.2.1-pre25: + - Update patch wlan-ng-prism2-usb.dpatch. + (Closes: #5688) + + * Update configs to make selinux guys a bit more happy: + - AUDIT=y + - AUDITSYSCALL=n + - TMPFS_XATTR=y + - TMPFS_SECURITY=y + (Closes: #5659) + + * Update powernow-k8 from bk: + - Add patch stolen-from-head_powernow-k8.dpatch. + (Closes: #5358) + + * Fix missing firmware loader bits for the acx100 pci driver: + - Update patch acx100-fw-3.dpatch. + (Closes: #5739) + + * More Matthew Garrett crack: + - Add patch stolen-from-head_acpi_fix_regression.dpatch. + (Closes: #5807) + + * Stolen from upstream: + - scsi_ioctl: only warn about unknown opcodes if they are truly unknown: + . Add patch stolen-from-head_scsi_ioctl_warns.dpatch. + + * Sync with Debian kernel-source-2.6.10 (2.6.10-4): + - Fix compat cmsg_len checks (Christoph Hellwig): + . Add patch cmsg-compat-signedness-fix-fix.dpatch. + - In case of an error, sk never gets set; thus, sock_put(sk) messes up + (Andres Salomon): + . Add patch stolen-from-head_037-sctp_err_lookup_oops.dpatch. + - Make ftdi_sio driver output debug message instead of error if attempting + to write 0 bytes (Andres Salomon): + . Add patch stolen-from-head_038-ftdi_sio_debug_output.dpatch. + - Don't assume a port has a tty associated w/ it when resuming + (Andres Salomon): + . Add patch stolen-from-head_039-serial_console_resume.dpatch. + - Do not underflow sk_forward_alloc from tcp_sendpage (Andres Salomon): + . Add patch stolen-from-head_040-sk_forward_alloc_underflow.dpatch. + - While probing ide interfaces, supress error messages for non-existent + ones (Andres Salomon): + . Add patch stolen-from-head_041-ide_hwif_supress_busy.dpatch. + - gx_get_cpuspeed was returning the wrong value; this fixes it + (Andres Salomon): + . Add patch stolen-from-head_042-gx_get_cpuspeed_return_value.dpatch. + - Pentium M (Dothan) model is 0x0d, not 0x13 (Andres Salomon): + . Add patch stolen-from-head_043-dothan_p4_get_frequency.dpatch. + - elevator_noop_add_request() ignored the 'where' arg, which specified + where the request should be added (front, back..) (Andres Salomon): + . Add patch stolen-from-head_044-elevator_noop_add_request.dpatch. + - [SPARC64] Incorrect register values are used inside + __psycho_check_one_stc if PBM type is B (Andres Salomon): + . Add patch stolen-from-head_045-pci_psycho_brainfart.dpatch. + - Fix locking issue inside ipip6_tunnel_link() (Andres Salomon): + . Add patch stolen-from-head_046-ipv6_sit_lock.dpatch. + - do_tcp_sendpages() didn't track skb->truesize correctly; this causes + partially ACK'd TSO frames to potentially corrupt stuff as skb->truesize + is too small (Andres Salomon): + . Add patch stolen-from-head_047-do_tcp_sendpages_tso_assertion.dpatch. + - The mtrr stuff in the matroxfb driver needs to be wrapped w/ CONFIG_MTRR + ifdefs (Andres Salomon): + . Add patch stolen-from-head_048-matroxfb_mtrr_ifdef.dpatch. + - cfq_requeue_request can potentially decrement a counter past 0; we want + to only decrement it if it's > 0 (Andres Salomon): + . Add patch stolen-from-head_050-cfq_requeue_request_accounting.dpatch. + + -- Fabio M. Di Nitto Mon, 24 Jan 2005 12:30:12 +0100 + +linux-source-2.6.10 (2.6.10-10) hoary; urgency=low + + * Compile USB keyboard inline for ia64. + + * Unset CONFIG_ACORN_PARTITION_CUMANA. + (Closes: #5603) + + * Stolen from upstream: + - USB: ehci "hc died" on startup (chip bug workaround): + . Add patch stolen-from-head_ehci-dies-on-startup.dpatch. + (Closes: #5153) + - driver core: Fix up vesafb failure probing: + . Add patch stolen-from-head_vesafb_failure_probing.dpatch. + (Closes: #5162) + + * Update inotify patch: + - Add patches inotify-0.17-rml-2.6.10-2.dpatch and + sparc64-inotify-0.17-rml-2.6.10-2.dpatch. + - Obsolete patches inotify-0.17-wip-rml-2.6.10-rc2-12.dpatch and + sparc64-inotify-0.17-wip-rml-2.6.10-rc2-12.dpatch. + (Closes: #5472) + + * Remove support for IBM ThinkPad TrackPoint devices: + - Obsolete patch ibm-trackpoint-support.dpatch. + The driver is too buggy and breaks normal ps2 mouses in certain cases. + (Closes: #5611, #5050, #5117) + + * mISDN upstream seems dead: + - Obsolete patch misdn.dpatch. + (Closes: #5193) + + * Fully integrated hppa support thanks to Lamont: + - Update patch pa-parisc.dpatch + - Update debian/control.stub build-deps + - Update debian/config/hppa/* + + -- Fabio M. Di Nitto Mon, 17 Jan 2005 17:37:32 +0100 + +linux-source-2.6.10 (2.6.10-9) hoary; urgency=low + + * More Matthew Garrett's crack: + - Fix b44 driver DMA mask: + . Add patch b44.dpatch. + - Revert kernel ibm_acpi code to upstream: + . Add patch ibm_acpi.dpatch. + - Fix "Interrupts are not routed correctly after suspend to disk": + . Add patch route-irq-again.dpatch. + (Close: #5567) + + * Fix acx100 firmware load sequence: + - Add patch acx100-fw-3.dpatch. + - Obsolete patch acx100-fw-2.dpatch. + (Closes: #5329) + + * Fix sound card modules load order: + - Add patch alsa-order-cards.dpatch. + (Closes: #1293) + + * Update Maintainer fiels in debian/control.stub. + + -- Fabio M. Di Nitto Mon, 17 Jan 2005 12:02:06 +0100 + +linux-source-2.6.10 (2.6.10-8) hoary; urgency=low + + * Fix emu10k DSP loader: + - Update patch stolen-from-head_alsa-emu10k1-ioctl-fix.dpatch. + (Closes: #5479) + + -- Fabio M. Di Nitto Fri, 14 Jan 2005 14:17:01 +0100 + +linux-source-2.6.10 (2.6.10-7) hoary; urgency=low + + * Fix ipw2100 and ipw2200 suspend and resume: + - Add patch ipw2100-fix-suspend-resume.dpatch. + - Add patch ipw2200-fix-suspend-resume.dpatch. + Thanks to Matthew Garrett. + + * Allow root to expand the stack: + - Add patch stolen-from-head_acct_stack_growth_nitpicks.dpatch. + (Closes: #5496) + + * Stolen from upstream: + - Make mm writelock testing less intrusive: + . Add patch stolen-from-head_verify_mm_writelocked.dpatch + + -- Fabio M. Di Nitto Fri, 14 Jan 2005 06:26:47 +0100 + +linux-source-2.6.10 (2.6.10-6) hoary; urgency=low + + * [SECURITY] NFS client O_DIRECT error case fix: + - Add patch stolen-from-head_nfs-client-odirect.dpatch. + (CAN-2005-0207) + + The NFS direct-io error return path for request sizes greater than + MAX_DIRECTIO_SIZE fails to initialize the returned page struct array + pointer to NULL. + + Discovered using AKPM's ext3-tools: odwrite -ko 0 16385 foo + + * [SECURITY] Fix SMP race condition: + - Add patch stolen-from-head_fix-smp-race-condition.dpatch. (CAN-2005-0001) + - Add patch stolen-from-head_fix-rlimit-memlock-dos.dpatch + as a patch dependency to include part of the mm reorganization required + to apply Linus' fix. + - Obsolete fix-rlimit-memlock-dos.dpatch. + + * [SECURITY] Fix race condition in do_brk: + - Update stolen-from-head_brk-locked.dpatch. (CAN-2004-1235) + + * Reapply all the -4 crack and bump the ABI. + + * Update debian/d-i//kernel-versions due to ABI change. + + * Fixes emu10k1_fx8010_code_t structure using indirect pointers to be less + than 8192 bytes to follow the ioctl semantics and thus not break powerpc + builds. Userland ioctl value is still changed. (Sven Luther) + - Add patch stolen-from-head_alsa-emu10k1-ioctl-fix.dpatch. + + * Reenable build of EMU10K1 on powerpc: + - SND_EMU10K1=m. + + * Fix asm-x86_64/io.h missing include: + - Add patch amd64-memset.dpatch. + + * Stolen from upstream (up to bk14): + - Use skb_padto() in drivers/net/8390.c: + . Add patch stolen-from-head_8390-skb_padto.dpatch. + - NFS: incorrect "df" results: + . Add patch stolen-from-head_nfs-df-result.dpatch. + - udf: simplify udf_iget, fix race: + . Add patch stolen-from-head_fix-udf-race.dpatch. + - remove CRD-8480C from the DMA blacklist: + . Add patch stolen-from-head_turn-on-CRD-8480C-dma.dpatch. + (Closes: #5186) + - fix erroneous rq->buffer = NULL in ide-io.c:ide_dma_timeout_retry(): + . Add patch stolen-from-head_ide-wrong-buffer.dpatch. + - SATA support for Intel ICH7: + . Add patch stolen-from-head_intel-ich7-sata.dpatch. + - PCI quirk for ICH3-M IDE: + . Add patch stolen-from-head_ich3m-quirks.dpatch. + - fix cdrom autoclose: + . Add patch stolen-from-head_fix-cdrom-autoclose.dpatch. + - NLS: Fix overflow of nls_ascii: + . Add patch stolen-from-head_overflow-in-nls.dpatch. (CAN-2005-0177) + + -- Fabio M. Di Nitto Tue, 11 Jan 2005 06:53:32 +0100 + +linux-source-2.6.10 (2.6.10-5) hoary; urgency=low + + * Disable all patches from 2.6.10-4 except security patches + (Closes: Ubuntu#5410) + + -- Matt Zimmerman Mon, 10 Jan 2005 15:33:46 -0800 + +linux-source-2.6.10 (2.6.10-4) hoary; urgency=low + + * [SECURITY] Fix race condition in do_brk: + - Add patch: stolen-from-head_brk-locked.dpatch. (CAN-2004-1235) + + Due to a missing down() call for the semaphore 'current->mm->mmap_sem' + it is possible to create two over-lapping VMAs and exploit behaviour in + mremap that allows you to map kernel memory into userland address ranges. + This can be exploited by an attacker in many ways. + + * [SECURITY] Import capability module fix from upstream: + - Add patch: stolen-from-head_fix_cap_mod.dpatch. (CAN-2004-1337) + - Obsolete patch: no-cap-mod.dpatch. + - Rebuild capability as module again. + + * [SECURITY] Update smbfs overflow fixes to a version that actually + work: + - Add patch smbfs-overflow-fixes-2.dpatch. + - Obsolete smbfs-overflow-fixes.dpatch. + + * [SECURITY] http://seclists.org/lists/fulldisclosure/2005/Jan/0270.html: + - Add patch 029-random_poolsize_overflow.dpatch. + + drivers/char/random allows you to set the poolsize; its sanity checking + on that input isn's very good. We fix that here. + This fixes #3 on that list (Andres Salomon). + + - Add patch 030-moxa_user_copy_checking.dpatch. (CAN-2005-0504) + + The moxa driver does some ugly things w/ signed integers. This fixes + #4 on Brad Spengler's advisory (Andres Salomon). + + - Add patch 031-sg_scsi_ioctl_int_overflows.dpatch. (CAN-2005-0180) + + SG ioctl stuff doesn't actually check whether the scsi command length + is positive. #5 on the above advisory (Andres Salomon). + + - Add patch fix-rlimit-memlock-dos.dpatch. (CAN-2005-0179) + + 2.6 RLIMIT_MEMLOCK bypass and (2.6) unprivileged user DoS: + Taken from the mail from the PaX team to Linus and Andrew Morton: + + the 'culprit' patch is how the default RLIM_MEMLOCK and the privilege + to call mlockall have changed in 2.6.9. namely, the former has been + reduced to 32 pages while the latter has been relaxed to allow it for + otherwise unprivileged users if their RLIM_MEMLOCK is bigger than the + currently allocated vm. which is normally good enough, except as you + now know there's a path that can increase the allocated vm without + checking for RLIM_MEMLOCK. #6 on the above advisory. + + * [SECURITY] Check untrusted user data: + - Add patch untrusted-user-data.dpatch. + + * Fix target make gconfig: + - Add patch stolen-from-head_fix-gconfig.dpatch. + (Closes: #5029) + - Also thanks to Sebastian Bacher for his preliminary patch. + + * Update debian/rules to support per arch patching. This is done by checking + debian/patches/00list-$ver.$arch and the contents added at the END of + 00list. So rememeber that arch specific changes will always come last and + they need to be synced on top of the standard/common patched tree. + + * Add hppa support per lamont: + - Import default configs from kernel-image-2.6.8-hppa-2.6.8 (2.6.8-5). + - Import debian/d-i/hppa from linux-kernel-di-hppa-2.6 (0.4). + - Update debian/control.stub to include hppa 4 kernel flavours. + - Add debian/patches/00list-4.hppa and parisc-pa.dpatch taken from + http://cvs.parisc-linux.org/download/linux-2.6/ (-pa10) + NOTE: this will not build! new config files are required! + + * Update fs-asfs.dpatch to add a missing page_unlink. + + * Use md-modules.lnk on powerpc. + (Closes: #5372) + + * Ship rtc-modules udeb: + - update debian/d-i//package-list + + * Stolen from upstream (up to bk9): + - make microcode text less confusing: + . Add patch stolen-from-head_microcode-less-confusing.dpatch. + - quiet scsi ioctls warnings: + . Add patch stolen-from-head_quite-scsi-ioctl.dpatch. + - early ali watchdog support: + . Add patch stolen-from-head_early-ali-watchdog-support.dpatch. + - ibmvscsi: replace schedule_timeout() with msleep(): + . Add patch stolen-from-head_fix-ibmvscsi-timeout.dpatch. + - drivers/acpi/ibm_acpi.o .init.text refers to .exit.text: + . Add patch stolen-from-head_ibm-acpi-exit.dpatch. + - several libata updates: + . use PIO mode for request sense: + + Add patch stolen-from-head_libata-pio-1.dpatch. + . PIO error handling improvement: + + Add patch stolen-from-head_libata-pio-2.dpatch. + . verify ATAPI DMA for a given request is OK: + + Add patch stolen-from-head_libata-dma-1.dpatch. + . add #include (fixes 2.4 alpha build): + + Add patch stolen-from-head_libata-fixftbs.dpatch. + - stop referencing i_sock directly: + . Add patch stolen-from-head_sparc64-stop-referencing-isock.dpatch. + - use prefetching in skb_queue_walk(): + . Add patch stolen-from-head_prefetching-skb-queue-walk.dpatch. + - dsmark should ignore ECN bits: + . Add patch stolen-from-head_dsmark-ignore-ecn.dpatch. + - serverworks: add support for CSB6 RAID: + . Add patch stolen-from-head_serverworks-CSB6-raid-support.dpatch. + - zatm fix: + . Add patch stolen-from-head_zatm-fix.dpatch. + - mxser annotations and compile fixes: + . Add patch stolen-from-head_mxser-several-fixes.dpatch. + - cinergy __user annotations: + . Add patch stolen-from-head_cinergy-user-annotation.dpatch. + - av7110_hw __user annotations fix: + . Add patch stolen-from-head_av7110_hw-user-annotation.dpatch. + - ide-proc: kill destroy_proc_ide_interfaces(): + . Add patch stolen-from-head_fix-redundant-ide-proc-entry.dpatch. + - fix cleanup_module() in ide.c: + . Add patch stolen-from-head_fix-ide-cleanup-module.dpatch. + - i386 uaccess annotations: + . Add patch stolen-from-head_uaccess-annotation.dpatch. + - Intel ICH7 DID's, PIRQ and PATA support: + . Add patch stolen-from-head_intel-ich7-support.dpatch. + - fix net/core/sock.o build failure: + . Add patch stolen-from-head_fix-build-with-no-ipv6.dpatch. + - fix the fake anti-optimizer cast macro to use the right address space: + . Add patch stolen-from-head_fix-fake-anti-optimizer-macro.dpatch. + - common send_sigtrap helper for debug event SIGTRAP's: + . Add patch stolen-from-head_send_sigtrap.dpatch. + - be a lot more careful about TF handling: + . Add patch stolen-from-head_tf-handling.dpatch. + - single-step over "popf" without corrupting state: + . Add patch stolen-from-head_single-step-popf.dpatch. + - ipt_ECN corrupt checksum fix: + . Add patch stolen-from-head_ipt_ECN-corrupt-checksum-fix.dpatch. + - fix inet6_sk for non IPV6 builds again: + . Add patch stolen-from-head_fix-inet6_sk.dpatch. + - fix proc removal in ip_conntrack_standalone: + . Add patch stolen-from-head_fix-proc-ip_conntrack_standalone.dpatch. + - fix cleanup path when sysctl registration fails: + . Add patch stolen-from-head_fix-cleanup-path.dpatch. + - ppc uaccess annotations: + . Add patch stolen-from-head_uaccess-annotation-ppc.dpatch. + - acpi video device enumeration: fix incorrect device list allocation: + . Add patch stolen-from-head_acpi-video-device-enumeration.dpatch. + - x86 ptrace: remove long stale (and bitrotted) test for PT_DTRACE without + PT_PTRACED: + . Add patch stolen-from-head_fix-PT_DTRACE-test.dpatch. + - x86 single-step: fix up comments and cleanup: + . Add patch stolen-from-head_fix-single-step-x86.dpatch. + - support for another Rockwell PNP modem: + . Add patch stolen-from-head_more-rockwell-pnp-modems.dpatch. + - vmscan: total_scanned fix: + . Add patch stolen-from-head_vmscan-total_scanned-fix.dpatch. + - CS461x gameport code isn't being included in build: + . Add patch stolen-from-head_CS461x-gameport-build-for-real.dpatch. + - mm: keep count of free areas: + . Add patch stolen-from-head_mm-keep-count-of-free-areas.dpatch. + - simplified readahead: + . Add patch stolen-from-head_simplified-readahead.dpatch. + - simplified readahead congestion control: + . Add patch stolen-from-head_simplified-readahead-congestion-control.dpatch. + - mempolicy optimisation: + . Add patch stolen-from-head_mempolicy-optimisation.dpatch. + - mm: overcommit updates: + . Add patch stolen-from-head_mm-overcommit-updates.dpatch. + - mark_page_accessed() for read()s on non-page boundaries: + . Add patch stolen-from-head_mark_page_accessed.dpatch. + - do_anonymous_page() use SetPageReferenced: + . Add patch stolen-from-head_do_anonymous_page.dpatch. + - collect page_states only from online cpus: + . Add patch stolen-from-head_do-not-collect-page_states.dpatch. + - netfilter: fix return values of ipt_recent checkentry: + . Add patch stolen-from-head_fix-ipt_recent-checkentry.dpatch. + - netfilter: Fix ip_conntrack_proto_sctp exit on sysctl fail: + . Add patch stolen-from-head_fix-ip_conntrack_proto_sctp-exit.dpatch. + - netfilter: Fix ip_ct_selective_cleanup(), and rename + ip_ct_iterate_cleanup(): + . Add patch stolen-from-head_fix-ip_ct_selective_cleanup.dpatch. + - netfilter: Remove IPCHAINS and IPFWADM compatibility: + . Add patch stolen-from-head_ipchains_and_ipfwadm_must_die.dpatch. + - netfilter: Remove copy_to_user Warnings in Netfilter: + . Add patch stolen-from-head_remove-copy-to-user-warnings.dpatch. + - netfilter: Fix cleanup in ipt_recent should ipt_registrater_match error: + . Add patch stolen-from-head_ipt_recent-should-ipt_registrater_match.dpatch. + - fix broken RST handling in ip_conntrack: + . Add patch stolen-from-head_fix-broken-rst-handling-in-ip_conntrack.dpatch. + - fix IDE_ARCH_OBSOLETE_INIT: + . Add patch stolen-from-head_fix-ide-arch-obsolete-init.dpatch. + - assign PKMAP_BASE dynamically: + . Add patch stolen-from-head_assign-pkmap-base-dinamically.dpatch. + - x86: remove data-header and code overlap in boot/setup.S: + . Add patch stolen-from-head_fix-data-code-overlap.dpatch. + - Cyrix MII cpuid returns stale %ecx: + . Add patch stolen-from-head_cyrix-mii-cpuid.dpatch. + - NX: Triple fault with 4k kernel mappings and PAE: + . Add patch stolen-from-head_triple-fault-with-4k-mapping-and-pae.dpatch. + - /proc/sys/kernel/bootloader_type: + . Add patch stolen-from-head_bootloader-type.dpatch. + - Intel thermal monitor for x86_64: + . Add patch stolen-from-head_amd64-thermal-monitor.dpatch. + . Add X86_MCE_INTEL=y for supported arches. + - x86_64: Fix bugs in the AMD K8 CMP support code: + . Add patch stolen-from-head_amd64-k8-cmp-fix.dpatch. + - x86_64: numa_add_cpu() fix: + . Add patch stolen-from-head_amd64-numa-add-cpu-fix.dpatch. + - x86_64: Remove duplicated FAKE_STACK_FRAME macro: + . Add patch stolen-from-head_amd64-remove-duplicate-macro.dpatch. + - x86_64: Remove debug information for vsyscalls: + . Add patch stolen-from-head_amd64-no-vsyscalls-debug.dpatch. + - x86_64: Rename HTVALID to CMP_LEGACY: + . Add patch stolen-from-head_amd64-rename-HTVALID2CMP_LEGACY.dpatch. + - x86_64: Scheduler support for AMD CMP: + . Add patch stolen-from-head_amd64-cmp-add-scheduler-support.dpatch. + - x86_64: Add a missing __iomem pointed out by Linus: + . Add patch stolen-from-head_amd64-add-missing-iomem.dpatch. + - x86_64: Add a missing newline in /proc/cpuinfo: + . Add patch stolen-from-head_amd64-missing-newline.dpatch. + - x86_64: Always print segfaults for init: + . Add patch stolen-from-head_amd64-print-segfaults.dpatch. + - x86_64: Export phys_proc_id: + . Add patch stolen-from-head_amd64-export-phys-proc-id.dpatch. + - swsusp: kill one-line helpers, handle read errors: + . Add patch stolen-from-head_swsusp-handle-errors.dpatch. + - swsusp: Kill O(n^2) algorithm in swsusp: + . Add patch stolen-from-head_kill-On2-in-swsusp.dpatch. + - NX: Fix noexec kernel parameter: + . Add patch stolen-from-head_fix-noexec-param.dpatch. + - ipt_REJECT Target nonlinear fixes: + . Add patch stolen-from-head_ipt_REJECT.dpatch. + - When ipt_ECN needs TCP, check it is not inverted: + . Add patch stolen-from-head_ipt_ECN-needs-tcp.dpatch. + - capset returns -EPERM when pid==current->pid: + . Add patch stolen-from-head_fix-capset-wrong-returns.dpatch. + - time runx too fast after S3: + . Add patch stolen-from-head_s3-time-too-fast.dpatch. + - fix ptracer death race yielding bogus BUG_ON: + . Add patch stolen-from-head_ptracer-death-race.dpatch. + - Fix megaraid oops on unload: + . Add patch stolen-from-head_modular-megaraid.dpatch. + - parport_pc: don't mix module parameter styles: + . Add patch stolen-from-head_parport_pc_module_parm_mixing.dpatch. + + -- Fabio M. Di Nitto Mon, 10 Jan 2005 13:47:26 +0100 + +linux-source-2.6.10 (2.6.10-3) hoary; urgency=low + + * Bump build-dep on kernel-wedge (>= 1.25.1ubuntu2) and revert nic-firmware + hack. + + * Revert ax25 to 2.6.9 to fix a regression spotted by Alan Cox: + - Add patch fix-ax25.dpatch. + + * Enforce security/Kconfig to exclude SECURITY_CAPABILITIES built as module: + - Add patch no-cap-mod.dpatch. + + * Add patch from Alan Cox to handle misrouted IRQ recovery: + - Add patch misrouted-irq.dpatch. + Note: the feature is NOT enabled by default as it might have a certain + impact on system performance. + To enable you need to boot with the option irqpoll. + + * More pcmcia udebs cleanup. Add pcmcia.o to pcmcia-modules since it is + common to several packages. + + -- Fabio M. Di Nitto Sun, 02 Jan 2005 07:42:25 +0100 + +linux-source-2.6.10 (2.6.10-2) hoary; urgency=low + + * Fix pcmcia udeb creation: + - Change PCCARD=y to PCCARD=m to generate pcmcia_core.ko again. + - Update debian/d-i//modules//pcmcia-modules to remove + reference to ds.ko that is not built as module anymore. + + * Fix nic-firmware udeb creation due to all firmware updates: + - Convert debian/d-i//firmware//nic-firmware.lnk to + nic-firmware so that kernel-wedge can still compile 2.6.9 as default + kernel. Note that this change has to move from 2.6.10 to kernel-wedge if + 2.6.10 will become the default kernel. + + * Update toshiba acpi support: + - Add patch tosh_acpi.dpatch. + + Daniel also notes: + + "It won't enable my changes by default. You pass hotkeys_over_acpi=1 as a + module parameter to enable it. + I have a set of acpid files for enabling the brightness buttons, sleep + and hibernate buttons; the lock button too." + + -- Fabio M. Di Nitto Fri, 31 Dec 2004 18:05:27 +0100 + +linux-source-2.6.10 (2.6.10-1) hoary; urgency=low + + * ATTENTION/WARNING/SOS/THE IF YOU OPEN A BUG ON THIS YOU WILL BURN ALIVE + ->>>>>> Disable emu10k1 build on ppc because it is broken <<<<<<- + + * New upstream release. + + * Readd scripts/package/Makefile fix to avoid removal of debian/, in clean + target, as patch that sneaked into 2.6.9 orig.tar.gz for a mistake. + + * Remove the following patches: + - fix-ip-conntrack-ftp.dpatch. + - fix-ip-options-leak.dpatch. + - vt-of-death.dpatch. + - scm_send-dos-fix.dpatch. + - binfmt-huge-vma-dos.dpatch. + - fix-igmp.dpatch. + - unix-sem.dpatch. + - amd64-fix-overrun.dpatch. + - fix-gpe.dpatch. + - selinux-fixes.dpatch. + - vmio.dpatch. + - s390-sacf-fix.dpatch. + - aout-loader-fixes.dpatch. + - dm_io-ENOMEM-goof.dpatch. + - ata_piix-combinde-mode-fix-2.dpatch. + - elf-loader-fixes.dpatch. + - elf-loader-fixes-the-return.dpatch. + - fs-tmpfs-free_inode-leak.dpatch. + - SG_IO-safe-commands-1.dpatch. + - drivers-scsi-core.dpatch. + - 3w-xxxx-hotplug.dpatch. + - acpi-early-init-check-disable.dpatch. + - aic79xx-nodev.dpatch. + - alpha-writeq-fix.dpatch. + - disable-lapic-in-acpi-power-off.dpatch. + - disable-lapic-in-acpi-power-off-2.dpatch. + - drivers-ide-dma-ricoh.dpatch. + - drivers-pci-quirks-via8233a.dpatch. + - drivers-serial-8250-ioremap-fix.dpatch. + - drivers-serial-sn_console-up-buildfix.dpatch. + - drivers-usb-storage-transport-1.dpatch. + - drivers-usb-storage-transport-2.dpatch. + - fs-ext3-directio-leak-fix.dpatch. + - ia64_cyclone_nosmp.dpatch. + - ia64-hp-sba_iommu-fix.dpatch. + - ia64-sn-move-irq-noop.dpatch. + - ip6t-log-doff.dpatch. + - mlock-as-user.dpatch. + - mm-vmscan.dpatch. + - parport_pc-via8231.dpatch. + - ppc64-iSeries-build-fix.dpatch. + - sata-nv-no-reset.dpatch. + - scsi-blacklist.dpatch. + - drivers-net-tg3-readd.dpatch. + - tg3-update.dpatch. + - vlan-update-1.dpatch. + - sparc-cg14-init.dpatch. + - sparc64-sunsab-break-fix.dpatch. + - wakeup_addr.dpatch. + - acx100-amd64.dpatch. + + * Rediff the following patches: + - modular-ide.dpatch. + - modular-vesafb.dpatch. + - remove-references-to-removed-drivers.dpatch. + - powerpc-g4-l2-flush-errata.dpatch. + - ia64-generic-no-smp.dpatch. + - ia64-generic-no-smp-1-to-2.dpatch. + - eagle-usb.dpatch. + - sparc32-initrd-memcpy.dpatch. + - smbfs-overflow-fixes.dpatch. + - wakeup_gdt.dpatch. + + * Add debian/external-drivers to document URL/versions of drivers that are + not part of the vanilla kernel. + + * Update ipw2100 and ipw2200 firmwares. + + * Update ieee80211 driver: + - Update patch ieee80211.dpatch. + - Obsolete patches: ieee80211-*.dpatch. + + * Update ipw2100 driver: + - Update patch ipw2100.dpatch. + - Obsolete patches: ipw2100-*.dpatch. + + * Update ipw2200 driver: + - Update patch ipw2200.dpatch. + - Obsolete patches: ipw2200-*.dpatch. + + * Update adm8211 driver: + - Update patch adm8211.dpatch. + + * Update ndiswrapper driver: + - Update patch ndiswrapper-2.dpatch. + + * Update eagle-usb driver: + - Update patch eagle-usb.dpatch. + + * Update inotify driver: + - Add patches inotify-0.17-wip-rml-2.6.10-rc2-12.dpatch and + sparc64-inotify-0.17-wip-rml-2.6.10-rc2-12.dpatch. + - Obsolete patches inotify-0.16-wip-rml-2.6.10-rc2-9.dpatch and + sparc64-inotify-0.16-wip-rml-2.6.10-rc2-9.dpatch. + + * Update debian/d-i//kernel-versions. + + * Overall acpi update that didn't make it in time for 2.6.10: + - Add patch stolen-from-head_acpi-20041210.dpatch. + + * Add Matthew Garrett's usual crack: + - Add patches: + . resume-finish-split.dpatch. + . panasonic_acpi.dpatch. + . sony_acpi.dpatch. + - ACPI_PCC=m + - ACPI_SONY=m + + * Fix one of multiple cx88 FTBFS: + - Add patch stolen-from-head_fix-cx88-build.dpatch. + + * Fix powerpc FTBFS: + - Add patch powerpc-fix-ftbfs.dpatch. + + * Fix (partially) ia64 FTBFS: + - Add patch ia64-fix-ftbfs.dpatch. + + * New and hot (or not so hot when they rename CONFIG options): + + - KOBJECT_UEVENT=y + - MODULE_SRCVERSION_ALL=y + - BLK_DEV_RAM_COUNT=16 + - INITRAMFS_SOURCE="" + - CDROM_PKTCDVD=m + - CDROM_PKTCDVD_BUFFERS=8 + - CDROM_PKTCDVD_WCACHE=n + - SCSI_INITIO=m + - MD_FAULTY=m + - IP_TCPDIAG=m + - IP_NF_CONNTRACK_MARK=y + - IP_NF_MATCH_CONNMARK=m + - IP_NF_MATCH_HASHLIMIT=m + - IP_NF_TARGET_CONNMARK=m + - IP_NF_TARGET_CLUSTERIP=m + - I2C_STUB=m + - SENSORS_ADM1026=m + - SENSORS_LM63=m + - SENSORS_LM87=m + - SENSORS_PC87360=m + - FB_TILEBLITTING=y + - FB_ATY_GENERIC_LCD=y + - FB_SAVAGE=m + - FB_SAVAGE_I2C=m + - FB_SAVAGE_ACCEL=m + - USB_SL811_HCD=m + - USB_KC2190=y + - TMPFS_XATTR=n + - CIFS_EXPERIMENTAL=n + - KEYS=n + - CRYPTO_ANUBIS=m + - PCCARD=y + - PCMCIA_DEBUG=n + - PCMCIA_OBSOLETE=n + - PCMCIA=m + - CARDBUS=y + - YENTA=m + - PD6729=m + - I82092=m + - I82365=m + - TCIC=m + - BLK_DEV_IDECS=m + - SCSI_SATA_AHCI=m + - SCSI_SATA_ULI=m + - SCSI_QLOGIC_1280_1040=y + - PCMCIA_FDOMAIN=m + - PCMCIA_QLOGIC=m + - PCMCIA_SYM53C500=m + - BT_HCIDTL1=m + - BT_HCIBT3C=m + - BT_HCIBLUECARD=m + - BT_HCIBTUART=m + - PCMCIA_XIRCOM=m + - PCMCIA_XIRTULIP=m + - PCMCIA_WAVELAN=m + - PCMCIA_NETWAVE=m + - PCMCIA_RAYCS=m + - PCMCIA_HERMES=m + - AIRO_CS=m + - PCMCIA_ATMEL=m + - PCMCIA_WL3501=m + - NET_PCMCIA=y + - PCMCIA_3C589=m + - PCMCIA_3C574=m + - PCMCIA_FMVJ18X=m + - PCMCIA_PCNET=m + - PCMCIA_NMCLAN=m + - PCMCIA_SMC91C92=m + - PCMCIA_XIRC2PS=m + - PCMCIA_AXNET=m + - ARCNET_COM20020_CS=m + - PHONE_IXJ_PCMCIA=m + - SERIAL_8250_CS=m + - SYNCLINK_CS=m + - I2C_AMD756_S4882=m + - W1_DS9490_BRIDGE=m + - DVB_DIBUSB=m + - DVB_DIBCOM_DEBUG=n + - DVB_CINERGYT2=m + - DVB_CINERGYT2_TUNING=y + - DVB_CINERGYT2_STREAM_URB_COUNT=32 + - DVB_CINERGYT2_STREAM_BUF_SIZE=512 + - DVB_CINERGYT2_QUERY_INTERVAL=250 + - DVB_CINERGYT2_ENABLE_RC_INPUT_DEVICE=y + - DVB_CINERGYT2_RC_QUERY_INTERVAL=100 + - DVB_TDA80XX=m + - DVB_CX22702=m + - SND_BT87X_OVERCLOCK=n + - USB_SERIAL_CYPRESS_M8=m + - USB_SERIAL_IPW=m + - USB_PHIDGETKIT=m + - VIDEO_SAA7134_DVB=m + - VIDEO_CX88_DVB=n (it breaks compilation on i386 at least) + - FB_INTEL=m + - FB_INTEL_DEBUG=n + - SND_VXPOCKET=m + - SND_VXP440=m + - SND_PDAUDIOCF=m + - ISDN_DRV_AVMB1_AVM_CS=m + - USB_GADGET_DEBUG_FILES=n + - PCMCIA_AHA152X=m + - PCMCIA_NINJA_SCSI=m + - PCMCIA_IBMTR=m + - DEBUG_KOBJECT=n + - PNP=y + - PNP_DEBUG=n + - BLK_DEV_IDEPNP=m + - NET_SB1000=m + - PNPACPI=y + - SECURITY_SECLVL=m + - PARPORT_PC_PCMCIA=m + - SCHEDSTATS=n + - CC_ALIGN_FUNCTIONS=0 + - CC_ALIGN_LABELS=0 + - CC_ALIGN_LOOPS=0 + - CC_ALIGN_JUMPS=0 + - ACPI_VIDEO=m + - ACPI_IBM=m + - CPU_FREQ_DEBUG=n + - X86_CPUFREQ_NFORCE2=m + - MTD_TS5500=m + - PARPORT_PC_PCMCIA=m + - HISAX_SEDLBAUER_CS=m + - HISAX_ELSA_CS=m + - HISAX_AVM_A1_CS=m + - HISAX_TELES_CS=m + - DNOTIFY=y + - ISDN_DIVERSION=m + - USB_ATM=m + - FB_ATY_GENERIC_LCD=y + - FB_SAVAGE=m + - FB_SAVAGE_I2C=m + - FB_SAVAGE_ACCEL=m + - X86_P4_CLOCKMOD=m + - ACPI_CONTAINER=m + - IPW2100_DEBUG=n + - IPW2200_DEBUG=n + - DVB_DIBUSB_MISDESIGNED_DEVICES=n + - DVB_B2C2_USB=m + - MMC=m + - MMC_DEBUG=n + - MMC_BLOCK=m + - MMC_WBSD=m + - NUMA_EMU=n + - ISDN_DRV_AVMB1_B1PCI0=m + - ISDN_DRV_AVMB1_B1PCIV4=y + - ISDN_DRV_AVMB1_B1PCMCIA=m + - ISDN_DRV_AVMB1_AVM_CS=m + - ISDN_DRV_AVMB1_T1PCI=m + - ISDN_DRV_AVMB1_C4=m + - MOXA_SMARTIO=m + - ACPI_HOTPLUG_CPU=y + + * Rename Debian references to Ubuntu in debian/control.stub and update + debian/make-kernel-patch-pkgs. + (Closes: #4982) + + * Update debian/official. + + * Enable reiserfs extended attributes: + - REISERFS_FS_XATTR=y + - REISERFS_FS_POSIX_ACL=y + - REISERFS_FS_SECURITY=y + (Closes: #4472/#4475) + + * [SECURITY] Compile capabilities inside the kernel and not as module. + - SECURITY_CAPABILITIES=y + + -- Fabio M. Di Nitto Thu, 23 Dec 2004 07:09:58 +0100 + +linux-source-2.6.9 (2.6.9-10) hoary; urgency=low + + * [SECURITY] vc_resize fix. + . Add patch: vt-of-death.dpatch. (CAN-2004-1333) + + * [SECURITY] Do not leak IP options fix. + . Add patch: fix-ip-options-leak.dpatch. (CAN not available yet) + + * Xmas present for our PPC users. Ship (but don't compile yet) BenH patch to + put powerbook g4 to sleep. + . Add patch: ibookg4-sleep-7.dpatch + + -- Fabio M. Di Nitto Tue, 21 Dec 2004 13:42:28 +0100 + +linux-source-2.6.9 (2.6.9-9) hoary; urgency=low + + * Update debian/changelog for 2.6.9-2 to include CAN-2004-1151 number + that at release time was not available. + + * [SECURITY] additional x86_64 buffer overflow fix; this time, + sys32_quotactl (Andres Salomon). + Update patch: amd64-fix-overrun.dpatch. + + * [SECURITY] scm_send local DoS fix (advisory: + http://www.isec.pl/vulnerabilities/isec-0019-scm.txt) (Andres Salomon). + Add patch: scm_send-dos-fix.dpatch. (CAN-2004-1016) + + -- Fabio M. Di Nitto Mon, 20 Dec 2004 09:01:20 +0100 + +linux-source-2.6.9 (2.6.9-8) hoary; urgency=low + + * Add missing bits to CAN-2005-0003 patch: + . Update patch aout-loader-fixes.dpatch. + . Add patch binfmt-huge-vma-dos.dpatch. + + * Compile SELINUX support, but disabled by default. A special boot parameter + needs to be added in orderd for SELINUX to be enabled at boot time. + + * Update debian/control.stub maintainer section. + + -- Fabio M. Di Nitto Thu, 16 Dec 2004 09:25:09 +0100 + +linux-source-2.6.9 (2.6.9-7) hoary; urgency=low + + * Brown paper bag upload to really fix CAN-2004-1137. + + * Add Matt Zimmerman patch to fix device mapper on top of cloop devices. + + -- Fabio M. Di Nitto Wed, 15 Dec 2004 19:01:27 +0100 + +linux-source-2.6.9 (2.6.9-6) hoary; urgency=low + + * [SECURITY] Fix multiple IGMP handling vulnerabilities. + . Add patch fix-igmp.dpatch. (CAN-2004-1137) + + There are multiple serious issues with the igmp.c code in recent kernel + versions. Here an incomplete list of bugs: + + 1) ip_mc_source suffers from a serious kernel deadlock & kernel memory + overwrite problem. It is possible to decrement the psl->sl_count counter + to be 0xffffffff == -1 with the consequence that: + + - a repeated call will start a loop counting from 0 to UINT_MAX causing a + kernel hang for minutes (depending on the machine speed), then the + whole kernel memory following the kmalloc'ated buffer will be shifted + by 4 bytes causing an immediate reboot. + + - If properly exploited this will lead to elevated privileges. + + 2) because of the bug 1) it is possible to read huge portions of kernel + memory through ip_mc_msfget() + + 3) igmp_marksources() function is called in the context of an IGMP group + query and suffers from an out of bound access to kernel memory. This is + remotely exploitable if applications have bound a multicast socket. + + This bug allows in the best case to remotely DoS a Linux machine with just + a moderate flow of prepared IGMP packets. + + In the worst case (the socket buffer allocated for the packet is at the + end of kernel accessible memory), the Linux machine may be crashed + remotely. + + * Ship cloop as modules on sparc: + . Fix FTBFS. + . Update config file: + - CONFIG_BLK_DEV_CLOOP=m. + . Add debian/d-i/sparc/modules/sparc64/loop-modules to include cloop.o. + Note: loop-modules for sparc is not a lnk to the one shipped by + kernel-wedge since loop.o is compiled in. + + * Update the cloop help text specifing that the code cannot be compiled in. + It must be a module. + + -- Fabio M. Di Nitto Mon, 13 Dec 2004 09:53:24 +0100 + +linux-source-2.6.9 (2.6.9-5) hoary; urgency=low + + * Add cloop (compressed loop) support from cloop-src 2.01.5-1: + . Add patch: cloop.dpatch. + . Rename compressed_loop.{c,h} to cloop.{c,h} and update the code + accordingly. + . Add new CONFIG_BLK_DEV_CLOOP. + . Update i386/amd64/ia64/powerpc config: + - CONFIG_BLK_DEV_CLOOP=m. + . Update sparc config: + - CONFIG_BLK_DEV_CLOOP=y. + . Bump Build-Dep on kernel-wedge 1.25ubuntu6 to ensure the cloop module + into loop*.udeb + + -- Fabio M. Di Nitto Thu, 09 Dec 2004 18:52:39 +0100 + +linux-source-2.6.9 (2.6.9-4) hoary; urgency=low + + * Renable mv643xx driver for powerpc that got lost due to driver rename: + . Update marvell-pegasos-2.patch. + . Readd marvell-pegasos-2.patch to 00list-4. + . Update debian/d-i/powerpc/modules/powerpc/nic-modules. + . Update powerpc config files: + - CONFIG_MV643XX_ETH=m + - CONFIG_MV643XX_ETH_0=y + - CONFIG_MV643XX_ETH_1=y + - CONFIG_MV643XX_ETH_2=y + + * Backport scsi_lib patch from 2.6.10-rc3 to fix a scsi layer regression introduced + in 2.6.9: + . Add patch drivers-scsi-core.dpatch. + (Closes: #4332) + + -- Fabio M. Di Nitto Wed, 08 Dec 2004 18:49:17 +0100 + +linux-source-2.6.9 (2.6.9-3) hoary; urgency=low + + * The "I love Matthew Garrett" upload: + . Add DSDT support: + - Add patch dsdt-initrd.dpatch. + - Update i386/amd64/ia64 config files: + + ACPI_INITRD=y + . Add userspace swsusp resume support: + - Add patch swsusp-userspace.dpatch. + - Update i386/amd64 config files: + + CONFIG_SOFTWARE_SUSPEND=y + + PM_STD_PARTITION="" + . Fix a bug in ACPI to help suspend on some machine: + - Add patches: wakeup_addr.dpatch and wakeup_gdt.dpatch. + . Bump dependcy on initrd-tools to >= 0.1.75ubuntu2 to ensure that the + newly generated initrd images will contain the proper init script for + swsusp. + + * Add support for Philips USB cameras from + http://www.saillard.org/linux/pwc/ at version 10.0.6 (for kernel 2.6.9). + . Add patch drivers-usb-pwc.dpatch. + . Update all config files: + + USB_PWC=m + + * Fix typo in debian/control.stub file to fix FTBFS on ia64. + + * Allign ia64 package descriptions with the others. + + -- Fabio M. Di Nitto Wed, 08 Dec 2004 07:49:31 +0100 + +linux-source-2.6.9 (2.6.9-2) hoary; urgency=low + + Changes by Fabio M. Di Nitto: + + * [SECURITY] Fix Buffer overrun in arch/x86_64/sys_ia32.c:sys32_ni_syscall() + . Add patch: amd64-fix-overrun.dpatch. (CAN-2004-1151). + + With Chris Wright + + struct task_struct.comm is defined to be 16 chars, but + arch/x86_64/sys_ia32.c:sys32_ni_syscall() and sys32_vm86_warning() copy it + into a static 8 byte buffer, which will surely cause problems. This patch + makes lastcomm[] the right size, and makes sure it can't be overrun. Since + the code also goes to the effort of getting a local copy of current in "me", + we may as well use it for printing the message. + + NOTE: This problem affects only amd64. + + * Unset CONFIG_BLK_DEV_UB on all archs. This is supposed to fix some + problems recently introduced in the usb mass storage support. + + * Fix sk98lin pci table and device MODULE_DEVICE_TABLE in orfer to restore + driver hotplug capabilities. + Add patch sk98lin-update-2.dpatch. + (Closes: #4379) + + * Apply patch to Disable wakeup GPEs before power off. + Thanks to Matthew Garrett for the patch. + Add patch fix-gpe.dpatch. + + * Add drivers/usb/input/usbhid.o to + debian/d-i/amd64/modules/amd64/input-modules in order to enable USB + keyboard support in d-i for amd64. + (Closes: #4400) + + * Update acx100 driver up to 0.2.0pre8_plus_fixes_43: + Add patches: + . acx100-2.dpatch + . acx100-kill-float-2.dpatch + . acx100-fw-2.dpatch + Drop acx100-amd64 from 00list-2 + (Closes: #2348) + + * Add support for Synaptics cPad devices: + . Add patch synaptics-cpad-support.dpatch. + Original patch by Daniel Stone. + . Update i386/amd64/powerpc/sparc config files: + + INPUT_CPAD=m + (Closes: #2026) + + * Add support for FSAM7400 radios on Centrino devices: + . Add patch ipw2100-fsam7400.dpatch. + Original patch by Daniel Stone. + . Update i386/amd64 config files: + IPW2100_FS_AMILO_M7400=m + . Update powerpc config files: + IPW2100_FS_AMILO_M7400=n + (Closes: #3242) + + * Add ia64 support: + . Update debian/control.stub. + . Add debian/d-i/ia64 importing files from linux-kernel-di-ia64-2.6-1.0 + . Add debian/config/ia64/ from kernel-image-2.6.8-ia64 (2.6.8-9) + + * Update ia64 config files (new entries): + . LOCALVERSION="" + . IA64_MCA_RECOVERY=m + . ACPI_BLACKLIST_YEAR=0 + . HOTPLUG_PCI_ACPI_IBM=m + . BLK_DEV_UB=n + . MEGARAID_NEWGEN=n + . MEGARAID_LEGACY=m + . MD_RAID10=m + . INET_TUNNEL=m + . IP_NF_CT_ACCT=y + . IP_NF_CT_PROTO_SCTP=m + . IP_NF_MATCH_SCTP=m + . IP_NF_MATCH_COMMENT=m + . IP6_NF_MATCH_PHYSDEV=m + . R8169_NAPI=n + . IEEE80211=m + . IEEE80211_DEBUG=n + . IEEE80211_CRYPT=m + . IEEE80211_WPA=y + . IEEE80211_CRYPT_CCMP=m + . IEEE80211_CRYPT_TKIP=m + . IPW2100=m + . IPW2100_PROMISC=y + . IPW2100_LEGACY_FW_LOAD=n + . IPW2100_NOWEP=n + . IPW2100_DEBUG=n + . IPW2100_FS_AMILO_M7400=n + . IPW2200=m + . IPW2200_NOWEP=n + . PRISM2_USB=m + . ACX100=m + . ADM8211=m + . PPP_MPPE=m + . NDISWRAPPER=n + . SERIO_RAW=m + . JOYSTICK_JOYDUMP=m + . INPUT_CPAD=m + . INOTIFY=y + . DIGIEPCA=m + . SGI_SNSC=y + . IPMI_POWEROFF=m + . MMTIMER=n + . I2C_ALGOPCA=m + . I2C_PCA_ISA=m + . SENSORS_SMSC47M1=m + . W1_DS9490=m + . W1_DS9490R_BRIDGE=m + . W1_SMEM=m + . SND_ATIIXP_MODEM=m + . SND_USB_USX2Y=m + . USB_SUSPEND=n + . USB_EAGLE=m + . RPCSEC_GSS_SPKM3=m + . CRYPTO_WP512=m + + * Disable CONFIG_DIGIEPCA and CONFIG_DIGI on ia64 since the driver compiles + only on 32bit archs. + + * Update debian/d-i/ia64/kernelversions to reflect the new upstream. + + * Add acx100-ia64.dpatch and ia64-prism2.dpatch to associate ia64 cpu as i386 + for wlan header cpu checks. + According to some investigations the 2 should be similar enough to work + without extra specific code or declarations. + + * Update disable-lapic-in-acpi-power-off.dpatch with a portable fix from + http://bugzilla.kernel.org/show_bug.cgi?id=3643. + Add patch disable-lapic-in-acpi-power-off-2.dpatch. + + Changes by Daniel Stone: + + * Modify debian/header-install and debian/post-install in order to ship all + the asm headers in the linux-header package and produce proper symlinks + from the specific flavour. This circumnvent a problem on powerpc (mainly) + that uses a bunch of m68k asm includes. + This fix will also allow the new linux-restricted-modules to build on + powerpc. + + -- Fabio M. Di Nitto Tue, 07 Dec 2004 18:43:02 +0100 + +linux-source-2.6.9 (2.6.9-1) hoary; urgency=low + + Changes by Fabio M. Di Nitto: + + * [SECURITY] Serialize dgram read using semaphore just like stream. + + Add the following patches: + . unix-sem.dpatch (CAN-2004-1068) + + * [SECURITY] Fix insufficient locking checks in DRM code. + + Add the following patches: + . drm-fixes.dpatch (CAN-2004-1056) + + * [SECURITY] Fix SELinux crashes with SOCK_SEQPACKET; see + http://marc.theaimsgroup.com/?l=linux-kernel&m=110045613004761 + for reference: + + Add the following patches: + . selinux-fixes.dpatch (CAN-2004-1069) + + * [SECURITY] Fix problems in VM_IO refcount: + + Add the following patches: + . vmio.dpatch (CAN has not been assigned yet) + + * [SECURITY] Fix problems in binfmt_elf loader; see + http://isec.pl/vulnerabilities/isec-0017-binfmt_elf.txt for more + details (Andres Salomon): + + Add the following patches: + . elf-loader-fixes.dpatch (CAN-2004-1070/1/2/3) + + Several flaws have been found in the Linux ELF binary loader's + handling of setuid binaries. Nowadays ELF is the standard format for + Linux executables and libraries. setuid binaries are programs that + have the "setuid" file permission bit set; they allow to execute a + program under a user id different from the calling user and are + mostly used to allow executing a program with root privileges to + normal users. + + The vulnerabilities that were fixed in these updated kernel packages + could lead Denial of Service attacks. They also might lead to + execution of arbitrary code and privilege escalation on some + platforms if an attacker is able to run setuid programs under some + special system conditions (like very little remaining memory). + + Another flaw could allow an attacker to read supposedly unreadable, + but executable suid binaries. The attacker can then use this to seek + faults within the executable. + + * [SECURITY] Further binfmt_elf fixes, and binfmt_aout fixes as well + (Andres Salomon). + + Add the following patches: + . elf-loader-fixes-the-return.dpatch (CAN-2004-1070/1/2/3) + . aout-loader-fixes.dpatch (CAN-2004-1074) + + http://marc.theaimsgroup.com/?l=linux-kernel&m=109776571411003&w=2: + + Bernard Gagnon discovered a memory leak in the mmap raw packet + socket implementation. When a client application (in ELF format) + core dumps, a region of memory stays allocated as a ring buffer. + This could be exploited by a malicious user who repeatedly crashes + certain types of applications until the memory is exhausted, thus + causing a Denial of Service. + + * [SECURITY] s390: sacf local root exploit (Andres Salomon). + + Add the following patches: + . s390-sacf-fix.dpatch (CAN-2004-0887) + + * [SECURITY] Further smbfs overflow fixes, stolen from -ac tree + (Andres Salomon). + + Add the following patches: + . smbfs-overflow-fixes.dpatch (CAN-2004-0883 CAN-2004-0949) + + During an audit of the smb file system implementation within Linux, + several vulnerabilities were discovered ranging from out of bounds + read accesses to kernel level buffer overflows. + + To exploit any of these vulnerabilities, an attacker needs control + over the answers of the connected Samba server. This could be + achieved by man-in-the-middle attacks or by taking over the + Samba server with e. g. the recently disclosed vulnerability in + Samba 3.x (see CAN-2004-0882). + + While any of these vulnerabilities can be easily used as remote denial + of service exploits against Linux systems, it is unclear if it is + possible for a skilled local or remote attacker to use any of the + possible buffer overflows for arbitrary code execution in kernel + space. So these bugs may theoretically lead to privilege escalation + and total compromise of the whole system. + + * [SECURITY] reverted 486 emulation patch: + + Delete the following patches: + . x86-i486_emu.dpatch + + Ubuntu kernels for the i386 platforms are compiled using the i486 + instruction set for performance reasons. Former Ubuntu kernels + contained code which emulated the missing instructions on real 386 + processors. However, several actual and potential security flaws + have been discovered in the code, and it was found to be + unsupportable. It might be possible to exploit these + vulnerabilities also on i486 and higher processors. + + Therefore support for real i386 processors has ceased. This updated + kernel will only run on i486 and newer processors. + + Other architectures supported by Ubuntu (amd64, powerpc) + are not affected. + + * Resync with Debian (debian/patches/*) up to 2.6.9-3. + + * New upstream release: + + Update debian/control.stub. + + Update debian/d-i/*/kernel-versions + + Delete the following patches: + . acpi-20040826.dpatch + . acpi-early.dpatch + . acpi-osname.dpatch + . acpi-speedstep-fix.dpatch + . alpha-epoch-comment.dpatch + . bio-mem-leak.dpatch + . capi-skb-free.dpatch + . cbq-leak.dpatch + . cciss-update.dpatch + . drivers-ftape.dpatch + . drivers-input-hiddev-HIDIOCGUCODE.dpatch + . drivers-macintosh-adb-trackpad.dpatch + . drivers-scsi-sym_2-dv-hang.dpatch + . fix-sn_console-for-config_smp.dpatch + . include-missing-includes.dpatch + . marvell-mm.dpatch + . minix-block-accounting-fix.dpatch + . nfsd-subtreecheck-nostale.dpatch + . openpromfs-loop.dpatch + . pmac-no-of-stdout.dpatch + . powerpc-g4-errata.dpatch + . ptmx-fix.dpatch + . qdisc-cache-align.dpatch + . SG_IO-safe-commands-2.dpatch + . shm-segment-count-fix.dpatch + . skge-hotplug.dpatch + . skge-hotplug-2.dpatch + . sparc32-export-more-ksyms.dpatch + . sparc64-sunsab-fix.dpatch + . sparc64-syslog-register.dpatch + . sparc64-update.dpatch + . tcp-win-scale.dpatch + . therm_adt746x-schedule.dpatch + . usb-storage-vendor-count.dpatch + . via-velocity.dpatch + . via-velocity-2.dpatch + . xfs-ioctl32.dpatch + + Update the following patches: + . ia64-generic-no-smp.dpatch + . ia64-generic-no-smp-1-to-2.dpatch + . modular-ide.dpatch + . modular-vesafb.dpatch + . drivers-net-tg3-readd.dpatch + . tg3-update.dpatch + . sata-nv-no-reset.dpatch + . wlan-ng-prism2-usb.dpatch + + Add the following patches + . ext3-directio-leak-fix.dpatch + . ppc64-iSeries-build-fix.dpatch + . ia64-sn-move-irq-noop.dpatch + . mm-vmscan.dpatch + . alpha-writeq-fix.dpatch + . drivers-serial-sn_console-up-buildfix.dpatch + . ia64-hp-sba_iommu-fix.dpatch + . SG_IO-safe-commands-1.dpatch + . parport_pc-via8231.dpatch + . drivers-pci-quirks-via8233a.dpatch + . fs-tmpfs-free_inode-leak.dpatch + . drivers-ide-dma-ricoh.dpatch + . vlan-update-1.dpatch + . ata_piix-combinde-mode-fix-2.dpatch + . drivers-serial-8250-ioremap-fix.dpatch + . tty-locking-fixes9.dpatch + . dm_io-ENOMEM-goof.dpatch + + Temporary disable the following patches that seems to be applied + upstream with a different implementation: + . mlock-as-user.dpatch + . sk98lin-update.dpatch + . marvell-pegasos-2.dpatch + + * Update i386 config files (new entries): + . LOCALVERSION="" + . SHMEM=y + . PM_DEBUG=n + . ACPI_BLACKLIST_YEAR=0 + . CPU_FREQ_GOV_ONDEMAND=m + . HOTPLUG_PCI_ACPI_IBM=m + . BLK_DEV_UB=m + . MEGARAID_NEWGEN=n (try to avoid regressions) + . MEGARAID_LEGACY=m + . MD_RAID10=m + . INET_TUNNEL=m + . IP_NF_CT_ACCT=y + . IP_NF_CT_PROTO_SCTP=m + . IP_NF_MATCH_SCTP=m + . IP_NF_MATCH_COMMENT=m + . IP6_NF_MATCH_PHYSDEV=m + . R8169_NAPI=n + . SERIO_RAW=m + . JOYSTICK_JOYDUMP=m + . IPMI_POWEROFF=m + . DRM Intel 830M, 845G, 852GM, 855GM, 865G=m + . DRM_I915=m + . I2C_ALGOPCA=m + . I2C_PCA_ISA=m + . SENSORS_SMSC47M1=m + . W1_DS9490=m + . W1_DS9490R_BRIDGE=m + . W1_SMEM=m + . SND_ATIIXP_MODEM=m + . SND_USB_USX2Y=m + . USB_SUSPEND=n + . RPCSEC_GSS_SPKM3=m + . KPROBES=n + . SCHEDSTATS=n + . CRYPTO_WP512=m + + * Update ppc config files (new entries): + . LOCALVERSION="" + . BLK_DEV_UB=m + . MEGARAID_NEWGEN=n + . MEGARAID_LEGACY=m + . MD_RAID10=m + . INET_TUNNEL=m + . IP_NF_CT_ACCT=y + . IP_NF_CT_PROTO_SCTP=m + . IP_NF_MATCH_SCTP=m + . IP_NF_MATCH_COMMENT=m + . R8169_NAPI=n + . SERIO_RAW=m + . JOYSTICK_JOYDUMP=m + . INPUT_PCSPKR=m + . IPMI_POWEROFF=m + . I2C_ALGOPCA=m + . I2C_PCA_ISA=m + . SENSORS_SMSC47M1=m + . W1_DS9490=m + . W1_DS9490R_BRIDGE=m + . W1_SMEM=m + . SND_ATIIXP_MODEM=m + . SND_USB_USX2Y=m + . USB_SUSPEND=n + . RPCSEC_GSS_SPKM3=m + . SCHEDSTATS=n + . CRYPTO_WP512=m + + * Update amd64 config files (new entries): + . LOCALVERSION="" + . SHMEM=y + . PM_DEBUG=n + . ACPI_BLACKLIST_YEAR=0 + . CPU_FREQ_GOV_ONDEMAND=m + . X86_SPEEDSTEP_CENTRINO=m + . X86_SPEEDSTEP_CENTRINO_ACPI=y + . X86_ACPI_CPUFREQ=m + . X86_ACPI_CPUFREQ_PROC_INTF=y + . UNORDERED_IO=n + . HOTPLUG_PCI_ACPI_IBM=m + . BLK_DEV_UB=m + . MEGARAID_NEWGEN=n + . MEGARAID_LEGACY=m + . MD_RAID10=m + . INET_TUNNEL=m + . IP_NF_CT_ACCT=y + . IP_NF_CT_PROTO_SCTP=m + . IP_NF_MATCH_SCTP=m + . IP_NF_MATCH_COMMENT=m + . IP6_NF_MATCH_PHYSDEV=m + . R8169_NAPI=n + . SERIO_RAW=m + . JOYSTICK_JOYDUMP=m + . IPMI_POWEROFF=m + . I2C_ALGOPCA=m + . I2C_PCA_ISA=m + . SENSORS_SMSC47M1=m + . W1_DS9490=m + . W1_DS9490R_BRIDGE=m + . W1_SMEM=m + . SND_ATIIXP_MODEM=m + . SND_USB_USX2Y=m + . USB_SUSPEND=n + . RPCSEC_GSS_SPKM3=m + . CRYPTO_WP512=m + + * Update sparc config files (new entries): + . LOCALVERSION="" + . BLK_DEV_UB=m + . MEGARAID_NEWGEN=n + . MEGARAID_LEGACY=m + . MD_RAID10=m + . INET_TUNNEL=m + . IP_NF_CT_ACCT=y + . IP_NF_CT_PROTO_SCTP=m + . IP_NF_MATCH_SCTP=m + . IP_NF_MATCH_COMMENT=m + . IP6_NF_MATCH_PHYSDEV=m + . SERIO_RAW=m + . I2C_ALGOPCA=m + . I2C_PCA_ISA=m + . SENSORS_SMSC47M1=m + . RPCSEC_GSS_SPKM3=m + . SND_ATIIXP_MODEM=m + . SND_USB_USX2Y=m + . CRYPTO_WP512=m + + * Disable CONFIG_DRM_GAMMA. The driver is broken. + + * Add inotify-0.16-wip-rml-2.6.10-rc2-9.dpatch and enables it in the + configurations (CONFIG_INOTIFY=y) + + * Add patch sparc64-inotify-0.16-wip-rml-2.6.10-rc2-9.dpatch. The patch + doesn't modify the inotify code, but it makes it visible to Kconfig. + In the specific sparc64 has a special way to handle drivers/char + compared to other archs and it drivers need to be added on a case + by case base. + + Changes by Daniel Stone: + + * Add sysfs support to ndiswrapper: + + Add the following patches: + . ndiswrapper-2.dpatch + + Obsolete the following patches: + . ndiswrapper.dpatch + (Closes: Ubuntu #3279) + + * Add support for IBM ThinkPad TrackPoint devices: + + Add the following patches: + . ibm-trackpoint-support.dpatch + (Closes: Ubuntu #2124) + + -- Fabio M. Di Nitto Mon, 29 Nov 2004 10:07:36 +0100 + +linux-source-2.6.8.1 (2.6.8.1-19) hoary; urgency=low + + * The "gibb0r m3 3v3n m0r3 cr4ck" upload. + + * kill sparc32 packages for real. + + -- Fabio M. Di Nitto Fri, 26 Nov 2004 22:36:16 +0100 + +linux-source-2.6.8.1 (2.6.8.1-18) hoary; urgency=low + + * The "gibb0r m3 4 l0t 0f cr5ck" upload. + + * Create kernel udebs: + - Add build-deps on kernel-wedge. + - Create debian/control.stub for udeb list generation via kernel-wedge. + - Create debian/d-i/ tree with pristine copy of + linux-kernel-di- at the following versions: + linux-kernel-di-i386-2.6_0.67ubuntu3 + linux-kernel-di-amd64-2.6_0.16ubuntu2 + linux-kernel-di-powerpc-2.6_0.73ubuntu3 + linux-kernel-di-sparc-2.6-0.02 + - Remove build-dep field from debian/d-i//kernel-version since it's + not required anymore. + - Update debian/rules: + + Add kernel-wedge/udeb section at the bottom of the file. + + Add debian/control target. + + Update clean target to call debian/control. + + Update build_prereq to call debian/control. + + Add binary-udebs and unpack-kernels targets. + + Split binary-arch in binary-debs and binary-arch. The former will + create the debs (as before) using make-kpkg, the latter will move + them to ../. + + Update binary-arch to depend on binary-debs and binary-udebs. + + Make kernel-wedge check a warning and not a failure (|| true) + otherwise it will stomp on unrelated problems. + + * sparc port love: + + Add debian/config/sparc/ from kernel-image-2.6.8-sparc (2.6.8-3) + + Import patches: + - tg3-update.dpatch + - openpromfs-loop.dpatch + - sparc-cg14-init.dpatch + - sparc-sunzilog-timeout.dpatch + - sparc32-export-more-ksyms.dpatch + - sparc32-initrd-memcpy.dpatch + - sparc64-hme-lockup.dpatch + - sparc64-sunsab-break-fix.dpatch + - sparc64-sunsab-fix.dpatch + - sparc64-syslog-register.dpatch + + Update config/sparc/* + + Do not build sparc32 kernels for now. I have no way to test them atm. + + Update debian/control and debian/control.stub + + -- Fabio M. Di Nitto Fri, 26 Nov 2004 22:24:51 +0100 + +linux-source-2.6.8.1 (2.6.8.1-17) hoary; urgency=low + + * Revert pre-Warty regressions + * [debian/config/i386/*] Disable CONFIG_PCI_MSI, enable + CONFIG_IDEDMA_ONLYDISK + + -- Matt Zimmerman Tue, 2 Nov 2004 13:16:09 -0800 + +linux-source-2.6.8.1 (2.6.8.1-16) warty; urgency=low + + * Enabled MAGIC_SYSRQ on i386. + * Fixed name of acpi_ps_parse_aml patch. + + -- Herbert Xu Tue, 12 Oct 2004 21:07:07 +1000 + +linux-source-2.6.8.1 (2.6.8.1-15) warty; urgency=low + + * Fix method_desc crash in acpi_ps_parse_aml in drivers/acpi/parser/psparse.c + (me). + + -- Herbert Xu Sun, 10 Oct 2004 20:21:43 +1000 + +linux-source-2.6.8.1 (2.6.8.1-14) warty; urgency=low + + * Skip SATA reset in drivers/scsi/sata_nv.c (unknown). + * Properly recognise PowerMac7,3 in arch/ppc/platforms/pmac_feature.c + (Andreas Schwab). + + -- Herbert Xu Sat, 9 Oct 2004 22:13:41 +1000 + +linux-source-2.6.8.1 (2.6.8.1-13) warty; urgency=low + + * Load firmware from standard locations (me): + . drivers/net/wireless/acx/acx100_helper.c + . drivers/net/wireless/acx/acx100_usb.c + + -- Herbert Xu Thu, 7 Oct 2004 22:28:30 +1000 + +linux-source-2.6.8.1 (2.6.8.1-12) warty; urgency=low + + * Disable acpi_early_init when acpi=off is set in drivers/acpi/bus.c (me). + + -- Herbert Xu Tue, 5 Oct 2004 21:50:16 +1000 + +linux-source-2.6.8.1 (2.6.8.1-11) warty; urgency=low + + * Added PCI table for 3w-xxxx in drivers/scsi/3w-xxxx.c (me). + * Reverted via-velocity update: + . include/linux/pci_ids.h + . drivers/net/via-velocity.c + . drivers/net/via-velocity.h + * Fixed notifier oopses in via-velocity (Francois Romieu): + . drivers/net/via-velocity.c + . drivers/net/via-velocity.h + * Updated ipw2200 driver to 0.11: + . Documentation/networking/README.ipw2100 + . drivers/net/wireless/Kconfig + . drivers/net/wireless/ieee80211/* + . drivers/net/wireless/ipw2200/* + + -- Herbert Xu Mon, 4 Oct 2004 11:22:33 +1000 + +linux-source-2.6.8.1 (2.6.8.1-10) warty; urgency=low + + * Disable local APIC in acpi_power_off in drivers/acpi/sleep/poweroff.c + (unknown). + * Sleep interruptibly in therm_adt746x thread in + drivers/macintosh/therm_adt746x.c (me). + * Removed meta packages. + * Updated via-velocity from bk (Linux): + . include/linux/pci_ids.h + . drivers/net/via-velocity.c + . drivers/net/via-velocity.h + * Help vendors count to 1 in usb-storage in drivers/usb/storage/transport.c + (Alan Stern). + * Enabled IDEDMA_ONLYDISK. + * Updated ipw2200 driver to 0.10. + + -- Herbert Xu Thu, 30 Sep 2004 21:19:45 +1000 + +linux-source-2.6.8.1 (2.6.8.1-9) warty; urgency=low + + * Disabled CONFIG_PCI_MSI. + * Updated ipw2200 driver to 0.8. + + -- Herbert Xu Mon, 27 Sep 2004 20:07:28 +1000 + +linux-source-2.6.8.1 (2.6.8.1-8) warty; urgency=low + + * Disabled NDIS wrapper on amd64/powerpc. + * Added eagle-usb driver (Frederick Ros): + . drivers/usb/misc/Kconfig + . drivers/usb/misc/Makefile + . drivers/usb/misc/eagle-usb/* + + -- Herbert Xu Sun, 26 Sep 2004 20:25:11 +1000 + +linux-source-2.6.8.1 (2.6.8.1-7) warty; urgency=low + + * Enabled SCSI_CONSTANTS/SCSI_MULTI_LUN on powerpc. + * Added adm8211 driver (Michael Wu): + . drivers/net/wireless/Kconfig + . drivers/net/wireless/Makefile + . drivers/net/wireless/adm8211/* + * Added prism54 firmware 1.0.4.3. + * Moved wireless firmware to /lib. + * Added ACPI patch 20040826 (Intel). + * Added NDIS wrapper (Pontus Fuchs): + . drivers/net/Kconfig + . drivers/net/Makefile + . drivers/net/ndiswrapper/* + * Increment ABI due to ACPI patch. + * Unregister properly if no devices are found in + drivers/scsi/aic7xxx/aic79xx_osm.c (me). + * Updated sk98lin driver in drivers/net/sk98lin/* (Marvell). + * Fixed TCP header length check in net/ipv6/netfilter/ip6t_LOG.c + (Olaf Kirch). + * Updated build-dependency on kernel-package. + + -- Herbert Xu Fri, 24 Sep 2004 23:50:59 +1000 + +linux-source-2.6.8.1 (2.6.8.1-6) warty; urgency=low + + * Updated sk98lin PCI table based on skge_probe() in + drivers/net/sk98lin/skge.c (Herbert Xu). + + -- Herbert Xu Sat, 18 Sep 2004 13:28:04 +1000 + +linux-source-2.6.8.1 (2.6.8.1-5) warty; urgency=low + + * Revert changes which somehow got applied directly in the diff, which were + then duplicated by the dpatch, causing build failures + + -- Matt Zimmerman Mon, 13 Sep 2004 23:03:43 -0700 + +linux-source-2.6.8.1 (2.6.8.1-4) warty; urgency=low + + * Add "unpatch" target to debian/rules (for dpatch-edit-patch) + * debian/patches/skge-hotplug.dpatch: Add PCI table for hotplug + so that the sk98lin driver is automatically loaded (Warty #1141) + + -- Matt Zimmerman Mon, 13 Sep 2004 14:44:58 -0700 + +linux-source-2.6.8.1 (2.6.8.1-3) warty; urgency=low + + * Set subarch to pmac on powerpc. + * Added atmel firmware 1.1. + * Updated ipw2200 driver to 0.7. + * Commented out debian purge rule in scripts/package/Makefile. + + -- Herbert Xu Thu, 9 Sep 2004 19:21:35 +1000 + +linux-source-2.6.8.1 (2.6.8.1-2) unstable; urgency=low + + * Fixed low-level ISDN CAPI drivers skb free + (Carsten Paeth, Armin Schindler): + . drivers/isdn/capi/capidrv.c + . drivers/isdn/hardware/avm/b1.c + . drivers/isdn/hardware/avm/b1dma.c + . drivers/isdn/hardware/avm/c4.c + . drivers/isdn/hardware/avm/t1isa.c + . drivers/isdn/hardware/eicon/capifunc.c + * Merged powerpc patches from Debian: + . drivers/serial/8250.c + . drivers/ide/pci/via82cxxx.c + * Added build-dependency on sharutils for uudecode. + * Added misdn driver (Karsten Keil): + . drivers/isdn/hardware/Kconfig + . drivers/isdn/hardware/Makefile + . drivers/isdn/hardware/misdn/* + * Added TI ACX100 support (ACX100 Open Source Project): + . drivers/net/wireless/Kconfig + . drivers/net/wireless/Makefile + . drivers/net/wireless/acx/* + * Kill floating-point operations in acx100 in drivers/net/wireless/acx/idma.c + (me). + * Corrected typo in description of SMP packages. + * Fixed ipw2100 build problem on powerpc in + drivers/net/wireless/ipw2100/ipw2100_fw.c (me). + * Added PowerPC packages. + * Added AMD64 packages. + * Fixed acx100 build problem on amd64 in + drivers/net/wireless/acx/wlan_compat.h (me). + * Updated kernel-package dependency for ubuntu. + + -- Herbert Xu Sat, 4 Sep 2004 20:06:07 +1000 + +linux-source-2.6.8.1 (2.6.8.1-1) unstable; urgency=low + + * Initial release based on Debian 2.6.8-2. + * Fixed bio memory leak in fs/bio.c (bk). + * Reverted bd_claim check on partition/device in fs/block_dev.c (unknown). + * Added mppe support (unknown): + . drivers/net/Kconfig + . drivers/net/Makefile + . drivers/net/arcfour.c + . drivers/net/arcfour.h + . drivers/net/ppp_generic.c + . drivers/net/ppp_mppe_compress.c + . drivers/net/sha1.c + . drivers/net/sha1.h + . include/linux/ppp-comp.h + * Allow mlock as user (Chris Wright): + . fs/hugetlbfs/inode.c + . include/asm-alpha/resource.h + . include/asm-arm/resource.h + . include/asm-arm26/resource.h + . include/asm-cris/resource.h + . include/asm-h8300/resource.h + . include/asm-i386/resource.h + . include/asm-ia64/resource.h + . include/asm-m68k/resource.h + . include/asm-parisc/resource.h + . include/asm-ppc/resource.h + . include/asm-ppc64/resource.h + . include/asm-s390/resource.h + . include/asm-sh/resource.h + . include/asm-sparc/resource.h + . include/asm-sparc64/resource.h + . include/asm-v850/resource.h + . include/asm-x86_64/resource.h + . include/linux/mm.h + . include/linux/sched.h + . include/linux/shm.h + . ipc/shm.c + . kernel/user.c + . mm/mlock.c + . mm/mmap.c + . mm/mremap.c + . mm/shmem.c + * Automatically compute tcp_default_win_scale (Stephen Hemminger): + . include/net/tcp.h + . net/ipv4/sysctl_net_ipv4.c + . net/ipv4/tcp.c + . net/ipv4/tcp_output.c + * Added generic IEEE 80211 layer (Intel): + . drivers/net/wireless/Kconfig + . drivers/net/wireless/Makefile + . drivers/net/wireless/ieee80211/* + * Added ipw2100 driver (Intel): + . Documentation/networking/README.ipw2100 + . drivers/net/wireless/Kconfig + . drivers/net/wireless/Makefile + . drivers/net/wireless/ipw2100/* + * Added ipw2200 driver (Intel): + . drivers/net/wireless/Kconfig + . drivers/net/wireless/Makefile + . drivers/net/wireless/ipw2200/* + * Added prism2_usb driver (AbsoluteValue Systems): + . drivers/net/wireless/Kconfig + . drivers/net/wireless/Makefile + . drivers/net/wireless/prism2/* + . drivers/net/wireless/wlan-ng/* + . include/wlan/* + . include/prism2/* + * Cacheline-align qdisc data in qdisc_create() in net/sched/sch_api.c + (Patrick McHardy). + * Fix class leak in CBQ scheduler in net/sched/sch_cbq.c (Patrick McHardy). + * Updated kernel-patch-debian description (Debian 2.6.8-3). + * Add a comment about the Adaptec firmware rebuild situation to README.Debian + (Debian 2.6.8-3). + * Suggest libqt3-dev for xconfig (Debian 2.6.8-3). + * Added patches from Debian 2.6.8-4: + . Added patch by Alex Clausen to stop spurious mouse button events + on older ADB using pmac notebooks (Sven Luther). + . Added g4-errata followup patch that clears the BTIC bit, instead of + just not setting it (Sven Luther). + . Update list of safe SCSI commands for SG_IO to match 2.6.9-rc1 + (Christoph Hellwig). + . Added two SCSI commands, namely VERIFY_16 and GPCMD_SEND_CUE_SHEET, + that were mentioned in the list from 2.6.9-rc1 but missing from the + corresponding header files (Jens Schmalzing). + . Replace the drivers-scsi-sym53c8xx_revert workaround with + drivers-scsi-sym_2-dv-hang, which is a proper fix for the hang + (dann frazier). + . Update scsi blacklist for USB multi card readers (Christoph Hellwig). + . Claim we're Windows (TM) to ACPI to work around broken BIOSes + (Christoph Hellwig). + . Enter ACPI mode earlier (Christoph Hellwig). + . Add small ACPI fix that makes speedstep work on some Centrino Laptops + (Christoph Hellwig). + . Fix oldworld pmacs that don't have an OF stdout. + . Update CCISS driver (Christoph Hellwig). + . Add minix block accounting fix (Christoph Hellwig). + . Fix nfsd to not errornously return ESTALE on failed permission check + (Christoph Hellwig). + . Fix SHM segment count limit off by one (Christoph Hellwig). + . Add some Sparc64 backports to make Josh happy (Christoph Hellwig). + + -- Herbert Xu Sat, 21 Aug 2004 15:04:28 +1000 + +kernel-source-2.6.8 (2.6.8-2) unstable; urgency=high + + * Add updated fix for generic UP kernel builds on IA64 (dann frazier). + * Added g4 l2 flush and MSR patch from Jacob Pan (Sven Luther). + * Added marvell gigabit ethernet driver errata patch from Nicolas Det + (Sven Luther). + * Added UP build fixes for sn_console & cyclone on ia64 (dann frazier). + + -- Sven Luther Tue, 17 Aug 2004 15:34:59 +0200 + +kernel-source-2.6.8 (2.6.8-1) unstable; urgency=high + + * New upstream release. + + * Nuke tg3.c properly in prune-non-free; rely on patch to supply driver + (Andres Salomon). + + * The following patches have been merged upstream (Andres Salomon): + . acpi-typo + . chown-gid-check + . chown-procfs + . dont-dereference-netdev.name-before-register_netdev + (partially applied; this is a broken patch) + . drivers-atkbd-quiten + . drivers-dpt_i2o-fixup + . drivers-isdn-io_funcs-fixup + . drivers-net-irda-dma_api + . drivers-net-via_rhine-avoid_bitfield + . drivers-sb-pnp_unregister + . drivers-scsi-advansys-dma_api + . drivers-scsi-sd-NO_SENSE + . drivers-usb-net-pegasus-startstop_queue + . envp + . fs-isofs-acorn + . fs-isofs-dont-check-period + . fs-jfs-compile + . include-linux-mca.h-fixups + . netfilter-signedcharbug + . netlink-macro-fixups + . powerpc-g4-errata + . xfs-update + + * The following patches have been modified (Andres Salomon): + . drivers-input-hiddev-HIDIOCGUCODE + (sparse fixes; s/(void *) arg/user_arg/g) + . remove-references-to-removed-drivers + (upstream now considers SMCTR a broken and legacy driver) + . drivers-net-tg3-readd + (forward port firmware changes to new tg3; from version 3.3 + of driver to version 3.8) + + * Stop the kernel distclean from nuking the debian directory by + having the clean rule check for debian/official (Andres Salomon). + + * Fix typo in alpha-termbits patch naming (Christoph Hellwig). + + * Drop two unneeded patches (Christoph Hellwig): + . fs-cramfs-constify + . include-thread_info-ifdefs + + * Remove -2 postfixes from patches, this is a new upstream release + (Christoph Hellwig). + + * Add NFS OOPS fix (Christoph Hellwig). + + * Add SG_IO WRITE_BUFFER capability check (Christoph Hellwig). + + * Fix IA64 generic kernel compile on UP (Christoph Hellwig). + + * Add pty leak fix from Al Viro (Christoph Hellwig). + + * Add patch from Gustavo Barbier to support IBM RS/6000 7043-240 and -E30 + (Christoph Hellwig). + + * Add 32bit ioctl translation support to XFS (closes: Bug#257265) + (Christoph Hellwig). + + * Revert sym53c8xx driver (dann frazier). + + -- Andres Salomon Sat, 14 Aug 2004 02:40:50 -0400 + +kernel-source-2.6.7 (2.6.7-4) unstable; urgency=high + + * Migrated pegasos patch from the powerpc package, as it will be accepted + upstream (Sven Luther). + + * Added a errata fix for some recent G4 processors (Sven Luther). + + * Fixed the Powerpc/Pegasos marvell discovery II builtin gigabit ethernet + driver to use the MAC address set by the firmware, instead of reading the + value from the prom in a way specific to the mips board (Sven Luther). + + -- Jens Schmalzing Thu, 5 Aug 2004 18:32:00 +0200 + +kernel-source-2.6.7 (2.6.7-3) unstable; urgency=low + + * Upgraded the fs-asfs patch to 1.0beta7 (Jens Schmalzing). + + * Updated README.NMU to explain the new build process based on split + patches and dpatch (Jens Schmalzing). + + * Added chown security fixes (closes: Bug#257504) (Christoph Hellwig). + + * Dropped modular-swsusp, doesn't work and unmaintained (Christoph Hellwig). + + * Added 3ware SATA-RAID driver, backported from mainline (Christoph Hellwig). + + * Update XFS to most current upstream BK version (Christoph Hellwig). + + * Added Marvell Ethernet driver (closes: Bug#256064) (Christoph Hellwig). + + * Added a backport of the netfilter signed char fix (Christoph Hellwig). + + -- Sven Luther Wed, 7 Jul 2004 18:12:20 +0200 + +kernel-source-2.6.7 (2.6.7-2) unstable; urgency=low + + * Removed another tainted driver (closes: Bug#242895), and amended + remove-references-to-removed-drivers.dpatch accordingly. Actually, + this was done in the previous revision, but we forgot the changelog + entry (Christoph Hellwig, Jens Schmalzing). + + * Renamed debian/revision back to version.Debian. Having it outside the + debian/ directory is mandatory for kernel-tree to work (Jens Schmalzing). + + * Added the drivers-net-tg3 patch. It only adds firmware loading + support, contrary to the drivers-net-tg3-readd patch which re-adds the + whole driver. As a consequence, the Debian patch also applies to the + vanilla kernel again. Note that this patch is only kept here for + reference for the time being and will not be activated until the next + upstream release (Jens Schmalzing). + + * Added the fs-asfs patch by Marek Szyprowski, containing support for + the Amiga Smart Filesystem. Actually, the patch was already part of + the kernel-patch-powerpc package and has been moved over from there + (Jens Schmalzing). + + -- Jens Schmalzing Thu, 24 Jun 2004 09:56:13 +0200 + +kernel-source-2.6.7 (2.6.7-1) unstable; urgency=low + + * New upstream release. + + * Added split patches in dpatch format (Christoph Hellwig and Sven Luther). + + * Lots of patches merged upstream: + . acpi-link + . console-refcounting + . doc-sound + . drivers-hotplug-acpi-unregister + . drivers-i810-update + . drivers-ide-CONFIG_IDE_STROKE-at-runtime (slight changes, allows drops + the config option completely) + . drivers-mca_53c9x-needs_mca_legacy + . drivers-mtd-sharp-missing-includes + . drivers-mtd-uclinux-rootfs + . drivers-neomagic-ids + . drivers-neomagic-oss-ids + . drivers-paride-epat (with minor updates) + . drivers-pnp-needs-x86 + . drivers-scsi-aic7xxx-fixes (slightly different) + . drivers-usb-storage-new-sony-device + . drivers-video-tgafb-needs-selection.h + . drivers-watchdog-missing-includes + . fs-isofs-remove-unused + . include-linux-mca.h-fixups (only partially) + . makefile-wc-fixup + . sparc64-NR_CPUS + . x86-dma-mapping.h-fixups + + * Dropped some patches (Christoph Hellwig): + . alpha_cia_window - incorrect (closes: #253787) + . doc-initrd_devfs - incorrect, devfs names for initrd are okay + . drivers-mwave_paper_over_sysfs_crap - buggy driver model integration + removed completely upstream + . drivers-net-ns83820-needs-FW_LOADER - incorrect, ns83820 doesn't + load firmware at all + . drivers-scsi-3w-xxxx-no_unregister - incorrect + . export-proc_get_inode - the symbol is internal for a reason. buggy + drivers using it removed in 2.6.7 + . fs-msdos-dontbug - rejected upstream + . fs-umsdosfs-crapola - umdos is disconnected from the build in 2.6 + . ppc-higher-binutils-requirement - upstream disagrees, Debian uses + dpkg build depencies anyway + . 00_doc-README.Debian - now handled differently by the packaging + + * Renamed version.Debian to debian/revision, in order to have all Debian + specific bits in the debian directory (Jens Schmalzing). + + * Added the prune target to debian/rules. It unpacks the vanilla + kernel, removes the tainted bits, and creates a free .orig.tar.gz + (Jens Schmalzing). + + * Added the monolith target to debian/rules. It saves a copy of the + original kernel tree, then for each revision applies the split patches + via dpatch and creates a monolithic patch (Jens Schmalzing). + + * Add fs-jfs-compile to fix JFS compilation (Christoph Hellwig). + + * Package the upstream changelog file, taken from ChangeLog-, + into kernel-tree. The rationale of this being that we should + distribute the upstream changelog in the usual location, but it is + enough to do this once (Jens Schmalzing). + + -- Jens Schmalzing Mon, 21 Jun 2004 12:55:48 +0200 + +kernel-source-2.6.6 (2.6.6-2) unstable; urgency=low + + * Fix i386 FPU bug. + * Transfer control of package to debian kernel team. + + -- William Lee Irwin III Tue, 15 Jun 2004 11:06:35 -0700 + +kernel-source-2.6.6 (2.6.6-1) unstable; urgency=low + + * New upstream release (closes: #243084, #244728, #245959, #247486). + * Deleted unused exit prototype in drivers/scsi/aic7xxx/aic7xxx_osm.c. + * Unregister properly if no devices are found in + drivers/scsi/aic7xxx/aic79xx_osm.c (closes: #246277, #247298). + * Fixed GUCODE type check in drivers/usb/input/hiddev.c (Sergey Vlasov). + * Added basic highmem support in drivers/scsi/advansys.c (closes: #245238). + * Changed all occurrences herbert@debian.org: + . arch/i386/power/swsusp_syms.c + . arch/x86_64/kernel/swsusp_syms.c + . kernel/power/swsusp-core.c + . kernel/power/swsusp.h + * Reverted broken "VIA KT400-8235" change in arch/i386/kernel/dmi_scan.c. + * Fixed IRQ assignment in drivers/acpi/pci_link.c (Len Brown). + * Fixed resume device check (Sau Dan Lee): + . kernel/power/swsusp-core.c + . kernel/power/swsusp.c + . kernel/power/swsusp.h + * Restored driver without firmware: + . drivers/net/Kconfig + . drivers/net/Makefile + . drivers/net/tg3.c + * Added firmware loading support (Nathaneal Nerode): + . drivers/net/Kconfig + . drivers/net/tg3.c + + -- Herbert Xu Tue, 11 May 2004 19:42:16 +1000 + +kernel-source-2.6.5 (2.6.5-4) unstable; urgency=high + + * Unregister PCI driver in drivers/pci/hotplug/acpiphp_glue.c. + * Fixed print_pirt NULL deref in drivers/pci/hotplug/shpchprm_acpi.c + (closes: #246149). + * Reverted radeon/r128 firmware changes (closes: #246587, #246594, #246627): + . drivers/char/drm/Kconfig + . drivers/char/drm/Makefile + . drivers/char/drm/r128_cce.c + . drivers/char/drm/r128_drv.h + . drivers/char/drm/r128_firmware_loader.c + . drivers/char/drm/radeon_cp.c + . drivers/char/drm/radeon_drv.h + . drivers/char/drm/radeon_firmware_loader.c + + -- Herbert Xu Fri, 30 Apr 2004 09:05:39 +1000 + +kernel-source-2.6.5 (2.6.5-3) unstable; urgency=medium + + * Added firmware loading support (Nathaneal Nerode): + . drivers/char/drm/Kconfig + . drivers/char/drm/Makefile + . drivers/char/drm/r128_cce.c + . drivers/char/drm/r128_drv.h + . drivers/char/drm/r128_firmware_loader.c + . drivers/char/drm/radeon_cp.c + . drivers/char/drm/radeon_drv.h + . drivers/char/drm/radeon_firmware_loader.c + * Removed non-free firmware: + . R128 firmware: drivers/char/drm/r128_cce.c + . Radeon firmware: drivers/char/drm/radeon_cp.c + * Read .extraversion if it exists in Makefile. + * Added support for removal in drivers/ide/ide-generic.c. + * Set GPL license in arch/i386/kernel/cpu/mcheck/non-fatal.c. + * Copy pages in reverse (closes: #234976): + . arch/i386/power/pmdisk.S + . arch/i386/power/swsusp.S + * Lowered maximum NR_CPUS to 32 in arch/sparc64/Kconfig (closes: #245971). + + -- Herbert Xu Tue, 27 Apr 2004 20:31:41 +1000 + +kernel-source-2.6.5 (2.6.5-2) unstable; urgency=low + + * Reverted pid == 1 change in kernel/fork.c. + * Allow PCI IDE drivers to be unloaded if probing fails in + drivers/ide/pci/atiixp.c. + * Fixed single word src misalign > dest misalign case in + arch/alpha/lib/stxncpy.S (glibc). + * Removed obsolete gcc workaround in sound/core/oss/Makefile. + * Fixed boundary checks for GUSAGE/SUSAGE in drivers/usb/input/hiddev.c. + * Fake inquiry for Sony Clie PEG-TJ25 in drivers/usb/storage/unusual_devs.h + (closes: #243650). + * Strip quotes from parameters in kernel/params.c (bk, closes: #243588). + * Added device release function in drivers/char/mwave/mwavedd.c + (closes: #244207). + * Set __exit tags on module_exit in drivers/ide/pci/*. + * Partially modularised software suspend: + . arch/i386/power/Makefile + . arch/i386/power/swsusp_syms.c + . arch/x86_64/kernel/Makefile + . arch/x86_64/kernel/swsusp_syms.c + . drivers/acpi/sleep/proc.c + . fs/buffer.c + . include/linux/suspend.h + . kernel/sys.c + . kernel/power/Kconfig + . kernel/power/Makefile + . kernel/power/console.c + . kernel/power/process.c + . kernel/power/swsusp-core.c + . kernel/power/swsusp.c + . kernel/power/swsusp.h + . mm/vmscan.c + * Fixed illegal __exit reference: + . drivers/scsi/aic7xxx/aic7xxx_osm.c + . drivers/scsi/aic7xxx/aic7xxx_osm.h + * Fixed local root exploit in fs/isofs/rock.c (Ernie Petrides). + * Clear b_data in journal_get_descriptor_buffer in fs/jbd/journal.c + (Ted Ts'o). + * Added module option parsing in drivers/video/vesafb.c (closes: #244031). + * Fixed vesafb_exit leaks in drivers/video/vesafb.c. + + -- Herbert Xu Fri, 23 Apr 2004 21:50:18 +1000 + +kernel-source-2.6.5 (2.6.5-1) unstable; urgency=low + + * New upstream release (closes: #235419, #238569). + * Applied SCSI Media Changer patch (closes: #238476). + * Fixed strcmp in sysfs store (closes: #234446): + . kernel/power/main.c + . kernel/power/disk.c + * Do not unshare files for pid == 1 in kernel/fork.c (closes: #239029). + * Removed ide-detect in favour of ide-generic: + . drivers/ide/Makefile + . drivers/ide/ide-default.c + . drivers/ide/ide-generic.c + . drivers/ide/ide-io.c + . drivers/ide/ide-probe.c + . drivers/ide/ide-probe-mini.c + * Check __HAVE_THREAD_FUNCTIONS in include/linux/thread_info.h (m68k). + * Unregister properly if no devices are found (closes: #237477): + . drivers/scsi/aic7xxx/aic7770_osm.c + . drivers/scsi/aic7xxx/aic7xxx_osm.c + . drivers/scsi/aic7xxx/aic7xxx_osm.h + * Fixed X86_PM_TIMER description in drivers/acpi/Kconfig (Jochen Voss, + closes: #241941). + * Removed non-free firmware and disabled their drivers (see #239952): + . QLA2XXX: drivers/scsi/qla2xxx/*_fw.c + . TIGON3: drivers/net/tg3.c + . Unused: sound/oss/724hwmcode.h + . Unused: sound/oss/Hwmcode.h + * Lowered priority of "too many keys" message in + drivers/input/keyboard/atkbd.c (closes: #239036). + * Made %docs depend on scripts_basic instead of scripts in Makefile. + * Fixed syntax error in Documentation/DocBook/parportbook.tmpl. + * Include linux/init.h for __init in sound/pcmcia/pdaudiocf/pdaudiocf.c + * Fixed bashism in Makefile. + + -- Herbert Xu Tue, 6 Apr 2004 20:42:02 +1000 + +kernel-source-2.6.4 (2.6.4-1) unstable; urgency=low + + * New upstream release (closes: #234631, #234754, #236570). + * Added vmlinux.syms: + . scripts/Makefile.modpost + . scripts/modpost.c + * Allow X86_MCE_NONFATAL to be a module: + . arch/i386/Kconfig + . arch/i386/kernel/cpu/mcheck/mce.c (Andrew Morton) + * Black listed "TOSHIBA CD-ROM XM-1702BC" in drivers/ide/ide-dma.c. + * Black listed "VIA KT400-8235" for broken_pirq in + arch/i386/kernel/dmi_scan.c (closes: #235188). + * Handle NO_SENSE in sd_rw_intr in drivers/scsi/sd.c (Alan Stern, + closes: #232494). + * Reverted tasklet change in drivers/usb/host/uhci-hcd.*. + * Fixed ThinkPad lock up problem in drivers/usb/host/uhci-hcd.c (Alan Stern). + * Put __modpost under MODVERDIR in scripts/Makefile.modpost. + * Provide *-2.6 instead of *-2.4 (closes: #236779). + * Fixed IDE CD capacity detection in drivers/ide/ide-cd.c (Jens Axboe, + closes: #216581). + * Removed dev->name lookups before register_netdev (closes: #234817): + . drivers/net/3c501.c + . drivers/net/3c503.c + . drivers/net/8390.c + . drivers/net/8390.h + . drivers/net/ac3200.c + . drivers/net/apne.c + . drivers/net/e2100.c + . drivers/net/es3210.c + . drivers/net/hp-plus.c + . drivers/net/hp.c + . drivers/net/hydra.c + . drivers/net/lne390.c + . drivers/net/mac8390.c + . drivers/net/ne.c + . drivers/net/ne2.c + . drivers/net/ne2k-pci.c + . drivers/net/ne2k_cbus.c + . drivers/net/ne3210.c + . drivers/net/oaknet.c + . drivers/net/smc-mca.c + . drivers/net/smc-ultra.c + . drivers/net/smc-ultra32.c + . drivers/net/stnic.c + . drivers/net/wd.c + . drivers/net/zorro8390.c + * Set MODVERDIR based on SUBDIRS in Makefile (Andreas Gruenbacher, + closes: #236626). + * Remove reference to drivers/parport/init.c in + Documentation/DocBook/parportbook.tmp. + + -- Herbert Xu Sat, 13 Mar 2004 14:13:45 +1100 + +kernel-source-2.6.3 (2.6.3-2) unstable; urgency=low + + * Rebuilt to fix tarball in kernel-source package. + * Really added the Post-Halloween document. + + -- Herbert Xu Mon, 23 Feb 2004 08:01:24 +1100 + +kernel-source-2.6.3 (2.6.3-1) unstable; urgency=low + + * New upstream release. + * Replaced irq_resource usage: + . drivers/isdn/hardware/avm/b1isa.c + . drivers/isdn/hardware/avm/t1isa.c + . drivers/isdn/hisax/hisax_fcclassic.c + * Added Post-Halloween document. + * Allow PCI IDE drivers to be unloaded if probing fails (closes: #202828): + . drivers/ide/arm/*.c + . drivers/ide/pci/*.c + + -- Herbert Xu Fri, 20 Feb 2004 20:48:48 +1100 + +kernel-source-2.6.2 (2.6.2-2) unstable; urgency=high + + * Added build-dependency on gs (closes: #232631). + * Restored generic SCSI proc_info function in drivers/scsi/scsi_proc.c + (closes: #232533). + * Fixed early chip programming in tg3_setup_copper_phy() in drivers/net/tg3.c + (David Miller). + * Fixed dev timer SMP deadlock in drivers/scsi/aic7xxx/aic7xxx_osm.c + (Andrew Morton). + * Check return value of do_munmap in do_mremap in mm/mremap.c (2.6.3). + + -- Herbert Xu Wed, 18 Feb 2004 21:29:09 +1100 + +kernel-source-2.6.2 (2.6.2-1) unstable; urgency=low + + * New upstream release (closes: #227071, #229745, #227240, #231466). + * Made PDC202XX_{BURST,FORCE} available even if it is a module in + drivers/ide/Kconfig. + * Fixed dead lock in drain_dac in sound/oss/i810_audio.c. + * Added drivers/ide/ide-probe-mini.c (2.4, closes: #224082, #227317, #228906, + #230195, #230755). + * Updated kernel-source description from kernel-package (closes: #226816). + * Added upstream changelog (closes: #230183). + * Added build-dependency on docbook-utils and transfig. + * Put kernel_thread_helper in right segment in arch/i386/kernel/process.c + (bk). + + -- Herbert Xu Sat, 7 Feb 2004 10:36:58 +1100 + +kernel-source-2.6.0 (2.6.0-2) unstable; urgency=low + + * Don't allow mremap of zero-sized areas in mm/mremap.c (2.6.1, + closes: #226542). + + -- Herbert Xu Sun, 11 Jan 2004 16:34:27 +1100 + +kernel-source-2.6.0 (2.6.0-1) unstable; urgency=low + + * New upstream release. + * Documented psmouse/mousedev in README.Debian (closes: #223596). + + -- Herbert Xu Sun, 21 Dec 2003 16:16:02 +1100 + +kernel-source-2.6.0-test11 (2.6.0-test11-1) unstable; urgency=low + + * New upstream release (closes: #212831, #215530, #217908, #218749, #218768, + #219239, #219944, #220432). + * Reverted set_blocksize change in fs/block_dev.c (closes: #214131). + * Removed libqt-dev suggestion in kernel-source. + * Added Freecom FX-5/FX-50 in drivers/usb/storage/unusual_devs.h + (Luke Kenneth Casson Leighton, closes: #218781). + * Unregister driver if probing fails in sound/oss/sb_card.c + (closes: #218845). + * Work around gcc bug in sound/core/oss/Makefile (closes: #203195). + * Use page cache for cramfs_read in fs/cramfs/inode.c (Al Viro). + * Fixed DMA overruns/bugs in sound/oss/i810_audio.c. + * Include asm/io.h and asm/scatterlist.h in include/asm-i386/dma-mapping.h. + * Removed uses of isa_vir_to_bus (closes: #218878): + . drivers/net/irda/ali-ircc.c + . drivers/net/irda/nsc-ircc.c + . drivers/net/irda/smsc-ircc2.c + . drivers/net/irda/via-ircc.c + . drivers/net/irda/via-ircc.h + . drivers/net/irda/w83977af_ir.c + . include/net/irda/ali-ircc.h + . include/net/irda/irda_device.h + . include/net/irda/nsc-ircc.h + . include/net/irda/w83977af_ir.h + . net/irda/irda_device.c + * Fixed Tekram DC390 driver (Guennadi Liakhovetski, closes: #221865): + . drivers/scsi/Kconfig + . drivers/scsi/dc390.h + . drivers/scsi/scsiiom.c + . drivers/scsi/tmscsim.c + . drivers/scsi/tmscsim.h + * Flush bundles when devices go down: + . include/net/xfrm.h + . net/xfrm/xfrm_policy.c + . net/xfrm/xfrm_state.c + * Fixed inclusion loop with include/net/sctp/sm.h: + . include/net/sctp/sctp.h + . net/sctp/associola.c + . net/sctp/outqueue.c + . net/sctp/socket.c + . net/sctp/transport.c + * Fixed connect/disconnect race in drivers/usb/core/hub.c (2.4, + closes: #218670). + * Initialise state for /proc/net/tcp in net/ipv4/tcp_ipv4.c (bk). + * Cleaned up debian/rules a little. + * Schedule tasklets for async removal in drivers/usb/host/uhci-hcd.*. + + -- Herbert Xu Mon, 8 Dec 2003 20:23:22 +1100 + +kernel-source-2.6.0-test9 (2.6.0-test9-1) unstable; urgency=low + + * New upstream release (closes: #216972). + * Applied x86/64bit fix in drivers/char/ftape/lowlevel/ftape-calibr.c (2.4). + * Include linux/fs.h for struct file: + . drivers/char/watchdog/scx200_wdt.c + . drivers/char/watchdog/wdt_pci.c + . drivers/char/watchdog/i810-tco.c + . drivers/char/watchdog/alim7101_wdt.c + . drivers/char/watchdog/alim1535_wdt.c + . drivers/char/watchdog/sc1200wdt.c + . drivers/char/watchdog/amd7xx_tco.c + . drivers/char/applicom.c + * Include linux/init.h for __init: + . drivers/char/moxa.c + . drivers/char/mxser.c + . drivers/mtd/chips/jedec_probe.c + . drivers/mtd/chips/sharp.c + . drivers/net/sb1000.c + . drivers/net/wan/sealevel.c + . drivers/net/wan/cosa.c + * Removed unnecessary asm/setup.h in drivers/mtd/cmdlinepart.c. + * Support architectures without asm/mca.h: + . include/linux/mca.h + . include/linux/mca-legacy.h + * Made PNPBIOS X86 only in drivers/pnp/Kconfig. + * Added CIBAUD/CMSPAR in include/asm-alpha/termbits.h. + * Include linux/selection.h for color_table in drivers/video/tgafb.c. + * Added optimise by size option: + . Makefile + . init/Kconfig + * Fixed reference count bug in net/xfrm/xfrm_policy.c. + + -- Herbert Xu Sun, 26 Oct 2003 16:16:43 +1100 + +kernel-source-2.6.0-test7 (2.6.0-test7-1) unstable; urgency=low + + * Fixed NLMSG_OK and RTA_OK: + . include/linux/netlink.h + . include/linux/rtnetlink.h + * Reverted process group accessor change (bk): + . arch/ia64/kernel/unaligned.c + . arch/sparc64/solaris/misc.c + . drivers/char/n_tty.c + . drivers/char/rocket.c + . drivers/char/tty_io.c + . drivers/char/vt.c + . drivers/char/vt_ioctl.c + . drivers/net/slip.c + . fs/binfmt_elf.c + . fs/compat_ioctl.c + . fs/dquot.c + . fs/exec.c + . fs/open.c + . fs/proc/array.c + . include/linux/sched.h + . kernel/acct.c + . kernel/exit.c + . kernel/fork.c + . kernel/pid.c + . kernel/signal.c + . kernel/sys.c + . net/ipv4/netfilter/ipt_owner.c + . net/ipv6/netfilter/ip6t_owner.c + * Export blk_queue_activity_fn for ide-probe in drivers/block/ll_rw_blk.c. + This change did not make it into the package (closes: #215223). + * Include mca-legacy.h for MCA_NOTFOUND in drivers/isdn/eicon/eicon_mod.c. + * Use gcc-2.95 compatible variadic macro in + drivers/media/video/saa7134/saa7134-core.c. + + -- Herbert Xu Sun, 12 Oct 2003 09:51:18 +1000 + +kernel-source-2.6.0-test6 (2.6.0-test6-2) unstable; urgency=low + + * Export blk_queue_activity_fn for ide-probe in drivers/block/ll_rw_blk.c. + + -- Herbert Xu Sat, 4 Oct 2003 13:45:40 +1000 + +kernel-source-2.6.0-test6 (2.6.0-test6-1) unstable; urgency=low + + * New upstream release (closes: #209307). + * Use mac_len for move ll headers: + . include/linux/skbuff.h + . net/core/dev.c + . net/ipv4/xfrm4_input.c + . net/ipv6/xfrm6_input.c + * Removed ACENIC/DGRS/DABUSB in arch/*/defconfig (closes: #211852). + * Fixed double request_region: + . drivers/net/arcnet/com20020.c + . drivers/net/arcnet/com20020-isa.c + . drivers/net/arcnet/com20020-pci.c + * Forbid unspecified tunnel mode SAs in net/xfrm/xfrm_policy.c. + * Removed duplicate policy checks for ipip tunnels: + . net/ipv4/ipip.c + . net/ipv4/xfrm4_tunnel.c + * Restored err_tty_modem label in drivers/isdn/i4l/isdn_common.c. + * Added probe declaration in drivers/net/wireless/arlan-main.c. + * Include linux/termios.h for TCGETS in fs/intermezzo/dir.c + (Kalle Olavi Niemitalo, closes: #208966). + + -- Herbert Xu Fri, 3 Oct 2003 19:38:37 +1000 + +kernel-source-2.6.0-test4 (2.6.0-test4-3) unstable; urgency=low + + * Fixed fatal bug in xfrm ll header patch: + . net/ipv4/xfrm4_input.c + . net/ipv6/xfrm6_input.c + + -- Herbert Xu Thu, 4 Sep 2003 20:51:57 +1000 + +kernel-source-2.6.0-test4 (2.6.0-test4-2) unstable; urgency=low + + * Added MODULE_LICENSE to net/xfrm/xfrm_user.c. + * Export idedefault_driver in drivers/ide/ide-default.c. + + -- Herbert Xu Mon, 1 Sep 2003 21:16:07 +1000 + +kernel-source-2.6.0-test4 (2.6.0-test4-1) unstable; urgency=low + + * New upstream release (closes: #206656). + * Fixed ll header of tunnel packets: + . include/linux/skbuff.h + . net/ipv4/xfrm4_input.c + . net/ipv6/xfrm6_input.c + * Fixed gcc 3 declaration in drivers/net/sis190.c. + * Fixed synchronize_irq() call in drivers/net/sis190.c. + * Fixed freenet_devtypo in drivers/net/wan/cosa.c. + * Fixed device name setting in drivers/net/3c509.c. + * Removed release timer in sound/pcmcia/vx/vx_entry.c. + * Always define cmpxchg in include/asm-i386/system.h (closes: #206956). + + -- Herbert Xu Sun, 31 Aug 2003 13:41:55 +1000 + +kernel-source-2.6.0-test2 (2.6.0-test2-1) unstable; urgency=low + + * Cope with exit status 2 from md5sum in drivers/isdn/hisax/cert.c. + * Fixed binutils test in scripts/ver_linux. + * Wrapped long line in kernel-source description. + * Marked IDE PCI proc entries as __devinitdata (closes: #202412): + . drivers/ide/pci/*.h + * Fixed binutils version recommendation in arch/ppc/Makefile. + * Added per-SA ECN flag: + . include/linux/pfkeyv2.h + . include/linux/xfrm.h + . include/net/inet_ecn.h + . include/net/xfrm.h + . net/ipv4/ah4.c + . net/ipv4/esp4.c + . net/ipv4/ipcomp.c + . net/ipv4/xfrm4_input.c + . net/ipv6/ah6.c + . net/ipv6/esp6.c + . net/ipv6/ipcomp.c + . net/ipv6/xfrm6_input.c + . net/key/af_key.c + . net/xfrm/xfrm_user.c + * Fixed secpath xfrm state leak: + . include/net/xfrm.h + . net/ipv4/xfrm4_input.c + . net/ipv4/xfrm4_policy.c + . net/ipv6/xfrm6_input.c + . net/ipv6/xfrm6_policy.c + . net/netsyms.c + . net/xfrm/xfrm_input.c + . net/xfrm/xfrm_policy.c + * Fixed owner setting in drivers/net/arcnet/com20020-isa.c. + * Fixed module refcounting in drivers/net/pcmcia/com20020_cs.c. + * Fixed hdlc proto type: + . drivers/net/wan/dscc4.c + . drivers/net/wan/pc300_drv.c + * Use gcc-2.95 compatible variadic macro in drivers/net/wireless/wl3501_cs.c. + * Applied 486 emulation patch (Willy Tarreau): + . arch/i386/Kconfig + . arch/i386/kernel/Makefile + . arch/i386/kernel/emu.c + . arch/i386/kernel/entry.S + + -- Herbert Xu Thu, 31 Jul 2003 20:01:30 +1000 + +kernel-source-2.6.0-test1 (2.6.0-test1-1) unstable; urgency=low + + * New upstream release (closes: #194242, #199893). + * Fixed size of default_port in drivers/net/via-rhine.c. + * Added general notes from 2.4 README.Debian file. + * Removed cmd640 from drivers/ide/pci/Makefile (closes: #195286). + * Made MCA_53C9X depend on MCA_LEGACY in drivers/scsi/Kconfig. + * Setup two 1G mappings if cia_rev == 1 in arch/alpha/kernel/core_cia.c. + * Added inclusion of linux/stddef.h due to NULL in linux/timer.h. + * Fixed multiline string literals in drivers/net/wan/sdla_chdlc.c. + * Suggest libqt-dev in kernel-source package (closes: #196296). + * Fixed IDE PCI proc entries for modules in drivers/ide/ide-proc.c. + * Fixed assembly specification in drivers/net/wan/sbni.c. + * Enable hw_resend_irq if io_apic is on (ac): + . include/asm-i386/hw_irq.h + . arch/i386/kernel/io_apic.c + * Include linux/skbuff.h for skb_put in include/linux/netlink.h. + * Include linux/spinlock.h for rwlock_t in include/net/ip6_fib.h. + * Include linux/ipv6.h for inet6_sk in include/net/ip6_route.h. + * Include net/sock.h for struct sock in include/net/ip6_route.h. + * Include linux/netdevice.h for MAX_ADDR_LEN in include/net/neighbour.h. + * Added forward declaration for struct neighbour in include/net/neighbour.h. + * Include linux/types.h for __u32 in include/linux/watchdog.h. + * Added forward declaration for struct net_device in include/linux/skbuff.h. + * Wake up km_waitq after policy changes in net/xfrm/xfrm_policy.c. + * Restored mdio_sem that replaced rtnl_lock in drivers/net/8139too.c. + * Include linux/root_dev.h for ROOT_DEV in drivers/mtd/maps/uclinux.c. + * Removed bogus devfs references in Documentation/initrd.txt (Nikolaus Rath). + * Kill temp addresses and regen timer on shutdown in net/ipv6/addrconf.c. + * Fixed optional choice setting in scripts/kconfig/confdata.c. + * Made CONFIG_IDEDISK_STROKE a runtime option (Joerg Platte): + . include/linux/ide.h + . drivers/ide/ide.c + . drivers/ide/ide-disk.c + * Export blk_rq_prep_restart for ide-disk in drivers/block/ll_rw_blk.c. + * Fixed IDE modularisation: + . drivers/ide/Kconfig + . drivers/ide/Makefile + . drivers/ide/ide.c + . drivers/ide/ide-io.c + . drivers/ide/ide-pnp.c + . drivers/ide/ide-probe.c + . drivers/ide/pci/* + . drivers/ide/setup-pci.c + . include/linux/ide.h + + -- Herbert Xu Tue, 15 Jul 2003 21:36:05 +1000 + +kernel-source-2.5.69 (2.5.69-1) unstable; urgency=low + + * New upstream release. + + -- Herbert Xu Wed, 7 May 2003 20:54:36 +1000 + +kernel-source-2.4.20 (2.4.20-6) unstable; urgency=low + + * Documented mem= change in README.Debian. + * Fixed printk warnings in init/do_mounts.c. + * Fixed printk warnings in fs/fat/file.c (closes: #178355). + * Commented out non-TeX heading in Documentation/smp.tex (Daniel van Eeden, + closes: #174554). + * Fixed dupliate detection problem in drivers/net/tokenring/ibmtr.c + (closes: #178874). + * Close old_fd and root_fd in init/do_mounts.c (Brian May, closes: #180934). + * Ignore errors from tw_setfeature in drivers/scsi/3w-xxxx.c + (closes: #181581). + * Changed all occurances of infobox+sleep to msgbox in scripts/Menuconfig + (closes: #181640). + * Use rq->special instead of rq->buffer in drivers/scsi/ide-scsi.c + (closes: #180125). + * Fixed precedence bug in drivers/sound/trident.c (John Levon). + * Documented AMD 768 erratum (closes: #177139). + * Fixed initialisation error handling in drivers/block/cciss.c. + * Fixed initialisation error handling in drivers/block/cpqarray.c. + * Fixed ptrace security hole (closes: #185375). + * Work around broken Toshiba keyboards (2.4.21pre, closes: #121335). + * Fixed sock address length check (2.4.21pre, closes: #171983). + + -- Herbert Xu Sat, 22 Mar 2003 10:05:53 +1100 + +kernel-source-2.4.20 (2.4.20-5) unstable; urgency=high + + * Fixed ethernet packet padding information leak (2.4ac, see #176178): + . via-rhine + * Added sk_padto function (closes: #176487). + + -- Herbert Xu Mon, 13 Jan 2003 19:17:48 +1100 + +kernel-source-2.4.20 (2.4.20-4) unstable; urgency=high + + * Added missing printk newlines in net/sched/sch_htb.c + (Alexandra N. Kossovsky, closes: #174152). + * Removed bogus VIA KT266 IO-APIC check. It is a useful warning. + * Removed bogus ip_conntrack_{ftp,irc} check. + * Fixed a typo in Documentation/sound/Introduction (Daniel van Eeden, + closes: #174944). + * Reverted CONFIG_VIDEO_VESA change (closes: #175614). + * Fixed ethernet packet padding information leak (2.4ac, see #176178): + . 3c501 + . 3c505 + . 3c507 + . 3c523 + . 3c527 + . 7990 + . 8139too + . 82596 + . 8390 + . a2065 + . am79c961a + . ariadne + . at1700 + . atarilance + . atp + . bagetlance + . de600 + . de620 + . declance + . depca + . eepro + . eexpress + . epic100 + . eth16i + . fmv18x + . hp100 + . lance + . lasi_82596 + . lp486e + . ni5010 + . ni52 + . ni65 + . axnet_cs + . fmvj18x_cs + . ray_cs + . xirc2ps_cs + . xircom_tulip_cb + . seeq8005 + . sgiseeq + . sk_g16 + . smc9194 + . sun3_82586 + . sun3lance + . wavelan + . yellowfin + . znet + + -- Herbert Xu Sat, 11 Jan 2003 17:31:43 +1100 + +kernel-source-2.4.20 (2.4.20-3) unstable; urgency=low + + * Fixed ext3 remount deadlock added in 2.4.20-2 (Andrew Morton). + * Fixed ext3 use-after-free bug (Andrew Morton). + * Fixed i845G AGP Gart initialisation (Michael Milligan, closes: #172724). + * Updated i810_audio driver (2.4.21pre1, closes: #172194). + + -- Herbert Xu Sat, 21 Dec 2002 13:49:15 +1100 + +kernel-source-2.4.20 (2.4.20-2) unstable; urgency=low + + * Include acpidrv.o in the kernel (Mario Holbe, closes: #168439). + * Removed CONFIG_INET_ECN_DISABLED option. + * Removed CONFIG_INET_ECN check in net/ipv4/tcp_diag.c. + * Fixed stxncpy on alpha (2.4.21pre). + * Fixed ext3 data=journal umount problem (2.4.21pre1, closes: #171632). + * Added dependency on MTD_CONCAT for sc520cdp (closes: #173045). + + -- Herbert Xu Sun, 15 Dec 2002 14:53:05 +1100 + +kernel-source-2.4.20 (2.4.20-1) unstable; urgency=low + + * New upstream release (closes: #164065, #164204, #165478, #166312, #168141, + #168190, #170962). + * Disable CONFIG_VIDEO_VESA unless VESA FB support is turned on. + * Mention Debian changes in kernel-source package description. + * Fixed a bug where ACPI is always compiled as a module (closes: #168439). + * CONFIG_VIDEO_SELECT is always on again. + * Modularised VESA FB. + * Added coreutils as an alternative to fileutils (closes: #170459). + * Replaced BUG() with printk() in fs/fat/file.c (closes: #168886). + * Fixed circular dependency in include/linux/netfilter_ipv4/ip_conntrack.h. + * Do not get seqno if we will not use it in fs/isofs/inode.c. + * Fixed HID name fix so that produce id is actually read. + * Added missing semicolons in drivers/scsi/aic7xxx/aicasm/aicasm_gram.y + (Michael Osamu Shiobara, closes: #165375). + * Made CONFIG_PARIDE_EPATC8 into a runtime option. + * Fixed double PCI unregistration in drivers/char/joystick/pcigame.c. + * Include linux/init.h in drivers/char/amd76x_pm.c. + * Include linux/init.h in drivers/scsi/cpqfcTSinit.c. + + -- Herbert Xu Sat, 30 Nov 2002 16:39:30 +1100 + +kernel-source-2.4.19 (2.4.19-5) unstable; urgency=high + + * Fixed i386 lcall DoS (Petr Vandrovec). + + -- Herbert Xu Mon, 18 Nov 2002 21:22:02 +1100 + +kernel-source-2.4.19 (2.4.19-4) unstable; urgency=low + + * Added missing headers in drivers/isdn/hisax/avma1_cs.c. + * Added missing headers in drivers/net/wan/comx-hw-munich.c. + + -- Herbert Xu Wed, 16 Oct 2002 22:42:01 +1000 + +kernel-source-2.4.19 (2.4.19-3) unstable; urgency=low + + * Fixed more ACPI module building problems. + * Fixed initialisation oops in drivers/scsi/aic7xxx/aic7770.c + (closes: #162347). + * Made CONFIG_VIDEO_SELECT conditional in drivers/video. + + -- Herbert Xu Sun, 6 Oct 2002 16:33:04 +1000 + +kernel-source-2.4.19 (2.4.19-2) unstable; urgency=low + + * Inlucde pagemap.h for unlock_page in drivers/char/drm/i810_dma.c + (closes: #144971). + * Set ?time to zero in fs/cramfs/inode.c. + * Allow ACPI to be compiled as a module. + * Fixed umsdos_solve_hlink oops in fs/umsdos/dir.c (closes: #159772). + * Honour ide?=dma in drivers/ide/via82cxxx.c (Arne Nordmark, + closes: #157925). + * Restored priority of invalidate messages in fs/buffer.c. The submitter of + #131419 did a badblocks -f. + * Wait before flushing in drivers/char/drm/mga_dma.c (ac, closes: #161100). + * Applied SCSI Media Changer patch (closes: #144850). + * Applied Big Physical Area Reservation patch (closes: #144849). + * Removed period check for executables in fs/isofs/inode.c (closes: #162190). + + -- Herbert Xu Sat, 28 Sep 2002 16:53:27 +1000 + +kernel-source-2.4.19 (2.4.19-1) unstable; urgency=low + + * New upstream release (closes: #139617, #146349). + * ip_nat_{ftp,irc} cannot be m if ip_conntrack_{ftp,irc} is y, respectively + (closes: #142532). + * Removed volume checks in fs/isofs/inode.c (closes: #138384). + * Removed gsem from drivers/usb/pegasus.c. + * Always call complete after unlinking an urb in drivers/usb/usb-ohci.c. + * Set hardsect size to 512 in drivers/scsi/sr.c (closes: #154510). + * Removed non-free firmware and disabled their drivers (closes: #150052): + . SMC Token Ring + . ACENIC + . DGRS + . DABUSB + * Lowed invalidate messages to priority DEBUG in fs/buffer.c + (closes: #131349). + + -- Herbert Xu Wed, 7 Aug 2002 21:12:03 +1000 + +kernel-source-2.4.18 (2.4.18-5) unstable; urgency=low + + * Corrected AdvWriteDWordLramNoSwap in drivers/scsi/advansys.c + (Jerome L. Quinn, closes: #128080). + * Added check for VIA KT266 IO-APIC, version == 2 (closes: #136163). + * Updated pegasus driver (2.4.19pre6). + * Added ATARAID device names to main.c (Eduard Bloch, closes: #139604). + * Updated uhci driver (Johannes Erdfelt, closes: #135785). + * Translate slashes in broken Acorn ISO9660 file systems (Darren Salt, + closes: #141660). + * Added newline to printk in drivers/sound/i810_audio.c + (handler-case@gmx.net, closes: #142214). + * Updated parport driver (2.4.19pre6). + + -- Herbert Xu Sat, 13 Apr 2002 22:07:22 +1000 + +kernel-source-2.4.18 (2.4.18-4) unstable; urgency=high + + * Fixed remaining double free in + drivers/net/zlib.c + fs/jffs2/zlib.c + + -- Herbert Xu Wed, 20 Mar 2002 20:02:18 +1100 + +kernel-source-2.4.18 (2.4.18-3) unstable; urgency=high + + * Fixed double free in + drivers/net/zlib.c + fs/jffs2/zlib.c + + -- Herbert Xu Wed, 13 Mar 2002 20:24:09 +1100 + +kernel-source-2.4.18 (2.4.18-2) unstable; urgency=low + + * Removed -g from driviers/atm/Makefile. + * Added missing personality patch to fs/binfmt_elf.c. + * Export est_cycle_freq (needed for removing CONFIG_FT_ALPHA_CLOCK). + * Extern inline -> static inline in + drivers/char/specialx.c + drivers/net/hamradio/soundmodem + * Added asm/io.h for in*/out* to + drivers/isdn/hisax/hisax_fcpcipnp.c + drivers/net/wan/farsync.c + + -- Herbert Xu Wed, 6 Mar 2002 19:53:30 +1100 + +kernel-source-2.4.18 (2.4.18-1) unstable; urgency=low + + * New upstream release (closes: #126391, #135156). + * Reverted tulip BMCR_FULLDPLX patch. + * Moved mkcramfs to the cramfs source package. + * CONFIG_SERIAL_ACPI now depends on CONFIG_SERIAL == y (closes: #132038). + * Fixed negative inodes in /proc/net (Arnaud Giersch, closes: #134704). + * pcnet32_purge_tx_ring may be called from IRQ context (Darren Salt, + closes: #134930). + * Check old_bbpnt in drivers/scsi/sr.c (2.5). + * Removed CONFIG_FT_ALPHA_CLOCK. + * Fixed the use of return values from mem*_io in drivers/isdn/sc. + * Added missing headers in drivers/pcmcia/i82092.c. + * Fixed compile error in drivers/scsi/dpt_i2o.c on alpha. + + -- Herbert Xu Thu, 28 Feb 2002 19:40:29 +1100 + +kernel-source-2.4.17 (2.4.17-1) unstable; urgency=low + + * New upstream release (closes: #122168, #123471). + * Only set startup to 0 for 21143 (rev 65) in tulip. + * Don't clear BMCR_FULLDPLX bit in tulip_find_mii as it breaks some cards + (closes: #100624). + * Fixed atyfb compilation problem (Tobias Ringstrom). + * Removed obsolete vfat patch. + * Fixed double cache allocation in mount_devfs_fs. + + -- Herbert Xu Sat, 22 Dec 2001 13:41:46 +1100 + +kernel-source-2.4.16 (2.4.16-1) unstable; urgency=low + + * New upstream release. + + -- Herbert Xu Wed, 28 Nov 2001 07:30:44 +1100 + +kernel-source-2.4.15 (2.4.15-1) unstable; urgency=low + + * New upstream release. + + -- Herbert Xu Sat, 24 Nov 2001 13:34:51 +1100 + +kernel-source-2.4.14 (2.4.14-1) unstable; urgency=low + + * New upstream release (closes: #117368, #118111). + * Made mkcramfs more verbose about write errors. + * Fixed compilation problem in loopback driver. + * Fixed compilation problem in ps2esdi.c. + * Fixed compilation problem in i2c-core.c. + + -- Herbert Xu Fri, 9 Nov 2001 20:15:49 +1100 + +kernel-source-2.4.13 (2.4.13-1) unstable; urgency=low + + * New upstream release. + * Updated kernel-source suggests (closes: #115716). + * Added support for nm256xl+ (Mattia Monga, closes: #116378). + * Fixed comment about epochs in arch/alpha/kernel/time.c. + * Fixed symlink size bug on tmpfs. + * Fixed handling of HIDs with product strings bug no manufacturer. + * Work around tmpfs symlink size bug in mkcramfs. + + -- Herbert Xu Sat, 27 Oct 2001 17:39:07 +1000 + +kernel-source-2.4.12 (2.4.12-1) unstable; urgency=low + + * New upstream release. + * Fixed typo in debian/rules (closes: #114065). + * Fixed ECN compilation problem (closes: #114192). + * Fixed typo in Documentation/sound/OPL3-SA + (Marius Gedminas, closes: #114760). + * Fixed typo in drivers/parport/ieee1284_ops.c (Tim Waugh). + * Don't kill page cache entries in set_blocksize. + + -- Herbert Xu Sat, 13 Oct 2001 11:41:03 +1000 + +kernel-source-2.4.10 (2.4.10-1) unstable; urgency=low + + * New upstream release. + * Added support for EPAT C7/C8 chips. + * Fixed dead lock on shutdown in 8139too (closes: #107779). + * Removed const from drivers/net/irda/smc-ircc.c + (Keith Owens, closes: #110193). + * Allow ECN to be compiled in but disabled. + * Removed non-free Keyspan firmware. We're no longer pristine. + * Fixed list_del bug in usb-uhci (ac patches). + * Fixed apm argument processing (ac patches). + * Added ioctl defines for cpq (ac patches). + * Included linux/init.h in drivers/net/aironet4500_card.c. + + -- Herbert Xu Sat, 29 Sep 2001 16:05:20 +1000 + +kernel-source-2.4.9 (2.4.9-1) unstable; urgency=low + + * New upstream release (closes: #63393). + * Fixed highmem CramFS bug (closes: #108893). + * Added missing include in fs/ntfs/unistr.c. + * Reverted startup==1 patch from drivers/net/tulip/21142.c. + * Fixed obsolete use of min: drivers/net/rrunner.c. + * Exported snprintf/vsnprintf (ac patches). + + -- Herbert Xu Sat, 18 Aug 2001 21:23:07 +1000 + +kernel-source-2.4.8 (2.4.8-1) unstable; urgency=low + + * New upstream release. + * Menuconfig now exits with 1 if screen is too small (closes: #106510). + * Applied NFS client seekdir patch (closes: #63063, #107045). + * Build-depend on kernel-package >= 7.48 (closes: #107545). + * Applied emu10k fixes (ac patches). + * Fixed ldm macros (ac patches). + + -- Herbert Xu Sun, 12 Aug 2001 09:04:44 +1000 + +kernel-source-2.4.7 (2.4.7-1) unstable; urgency=low + + * New upstream release (closes: #97516, #104141, #104267). + * Applied ReiserFS umount patch (closes: #100740). + * Applied DAC960 completion patch (Jens Axboe). + * Restricted CONFIG_FB_PVR2 to SH (ac patches). + + -- Herbert Xu Sun, 22 Jul 2001 11:52:29 +1000 + +kernel-source-2.4.6 (2.4.6-1) unstable; urgency=low + + * New upstream release (closes: #102864). + * Fixed pegasus_set_multicast lockup. + * Reverted sysinfo patch. + + -- Herbert Xu Thu, 5 Jul 2001 19:24:12 +1000 + +kernel-source-2.4.5 (2.4.5-1) unstable; urgency=low + + * New upstream release (closes: #78761, #96443). + * Fixed set_blocksize() on RAMDISKs. + * Removed flavour patch from Makefile as it is now obsolete. + * Fixed typo in drivers/usb/ov511.c (ac patches). + * Fixed race in fs/super.c (Alexander Viro). + + -- Herbert Xu Sun, 27 May 2001 10:25:42 +1000 + +kernel-source-2.4.4 (2.4.4-2) unstable; urgency=low + + * Hacked ide_xlate_1024 to work when IDE is modularised (closes: #94853). + * Fixed typo in pci2220i.c (ac patches). + * Treat files that begin with FD_FILL_BYTE correctly in vfat + (closes: #75413). + + -- Herbert Xu Sun, 13 May 2001 09:33:09 +1000 + +kernel-source-2.4.4 (2.4.4-1) unstable; urgency=low + + * New upstream release. + * Fixed a typo in Documentation/sound/OPL3-SA (Carlos Valdivia Yague, + closes: #95255). + + -- Herbert Xu Sun, 29 Apr 2001 10:32:51 +1000 + +kernel-source-2.4.3 (2.4.3-4) unstable; urgency=low + + * ip_conntrack_ftp fix (netfilter, closes: #94216). + + -- Herbert Xu Sun, 22 Apr 2001 11:15:02 +1000 + +kernel-source-2.4.3 (2.4.3-3) unstable; urgency=low + + * Added missing SIEMENS PCI ID (ac patches). + * Exported proc_get_inode (ac patches). + + -- Herbert Xu Mon, 16 Apr 2001 08:42:17 +1000 + +kernel-source-2.4.3 (2.4.3-2) unstable; urgency=low + + * Correct devfs path name in scsi-generic.txt (closes: #93405). + * Fixed negative padding in struct sysinfo. + + -- Herbert Xu Fri, 13 Apr 2001 19:42:42 +1000 + +kernel-source-2.4.3 (2.4.3-1) unstable; urgency=low + + * New upstream release. + + -- Herbert Xu Sun, 8 Apr 2001 16:50:40 +1000 + +kernel-source-2.4.2 (2.4.2-3) unstable; urgency=low + + * Added build-time dependency on libz-dev (closes: #89722). + * Compilation fixes in 6pack.c and genhd.h (closes: #90646). + + -- Herbert Xu Fri, 23 Mar 2001 20:30:03 +1100 + +kernel-source-2.4.2 (2.4.2-2) unstable; urgency=low + + * Added initrd support for cramfs. + * Fixed bug that prevented initrd from being freed (ac patches). + * Fixed a typo in Documentation/sound/VIBRA16 (Carlos Valdivia, + closes: #88018). + * Removed misleading securetty note in devfs README files (closes: #89148). + + -- Herbert Xu Sun, 11 Mar 2001 08:56:27 +1100 + +kernel-source-2.4.2 (2.4.2-1) unstable; urgency=low + + * New upstream release. + * Created mkcramfs package. + * Accomodate option change in binutils (closes: #87009). + * Applied loopback patch by Jens Axobe. + + -- Herbert Xu Fri, 23 Feb 2001 20:19:31 +1100 + +kernel-source-2.4.1 (2.4.1-3) unstable; urgency=low + + * Applied tmpfs patch by Christoph Rohland. + * Fixed incorrect conditional check in struct sysinfo (closes: #85603). + + -- Herbert Xu Sun, 11 Feb 2001 21:08:05 +1100 + +kernel-source-2.4.1 (2.4.1-2) unstable; urgency=low + + * Fixed the struct sysinfo warning properly (closes: #84234). + + -- Herbert Xu Sat, 10 Feb 2001 23:10:44 +1100 + +kernel-source-2.4.1 (2.4.1-1) unstable; urgency=low + + * New upstream release. + * Added support for flavours to Makefile. + * Only include asm/bitops.h if __KERNEL__ is defined in linux/fs.h + (closes: #84238). + * Added padding to struct sysinfo so that it's identical to 2.2 (#84234). + * Fixed typos in asm/socket.h (closes: #39168). + * Updated IrDA URL in asm/termios.h (closes: #42222). + + -- Herbert Xu Sun, 4 Feb 2001 10:11:47 +1100 + +kernel-source-2.4.0 (2.4.0-1) unstable; urgency=low + + * New upstream release (closes: #71874, #79490). + * Added missing build-time dependencies (closes: #81728). + + -- Herbert Xu Tue, 16 Jan 2001 11:14:16 +1100 + +kernel-source-2.4.0-test11 (2.4.0-test11-1) unstable; urgency=low + + * New upstream release. + + -- Herbert Xu Sat, 9 Dec 2000 11:34:37 +1100 + +kernel-source-2.4.0-test5 (2.4.0-test5-1) unstable; urgency=low + + * New upstream release. + + -- Herbert Xu Sat, 29 Jul 2000 17:55:37 +1000 + +kernel-source-2.4.0-test4 (2.4.0-test4-1) unstable; urgency=low + + * New upstream release. + + -- Herbert Xu Wed, 19 Jul 2000 18:37:17 +1000 + +kernel-source-2.4.0-test3 (2.4.0-test3-1) unstable; urgency=low + + * New upstream release. + + -- Herbert Xu Wed, 12 Jul 2000 09:49:57 +1000 + +kernel-source-2.4.0-test2 (2.4.0-test2-1) unstable; urgency=low + + * New upstream release. + + -- Herbert Xu Mon, 10 Jul 2000 19:24:59 +1000 + +kernel-source-2.2.17 (2.2.17pre6-1) frozen unstable; urgency=low + + * New upstream release. + + -- Herbert Xu Sat, 24 Jun 2000 21:53:40 +1000 + +kernel-source-2.2.16 (2.2.16-1) frozen unstable; urgency=high + + * New upstream release (closes: #65745). + + -- Herbert Xu Sun, 18 Jun 2000 12:42:37 +1000 + +kernel-source-2.2.15 (1:2.2.15-3) frozen unstable; urgency=low + + * Bring capabilities closer to POSIX spec (Andrew Morgan) + | Note. This subtly changes cap_bset behaviour. + + -- Herbert Xu Thu, 1 Jun 2000 09:32:11 +1000 + +kernel-source-2.2.15 (1:2.2.15-2) frozen unstable; urgency=low + + * AIC7XXX 5.1.29 (closes: #63946). + + -- Herbert Xu Sat, 13 May 2000 09:29:50 +1000 + +kernel-source-2.2.15 (1:2.2.15-1) frozen unstable; urgency=low + + * New upstream release (closes: #63675). + * Built with kernel-package 7.04.potato.1 (closes: #63290). + + -- Herbert Xu Tue, 9 May 2000 12:54:09 +1000 + +kernel-source-2.2.15pre19 (2.2.15pre19-2) frozen unstable; urgency=low + + * New upstream release (pre20). + + -- Herbert Xu Tue, 25 Apr 2000 15:31:03 +1000 + +kernel-source-2.2.15pre19 (2.2.15pre19-1) frozen unstable; urgency=low + + * New upstream release (closes: #55383). + * Applied patch from Chris Evans. + * Applied patch from David Miller. + + -- Herbert Xu Fri, 21 Apr 2000 12:15:30 +1000 + +kernel-source-2.2.14 (2.2.14-5) frozen unstable; urgency=low + + * Delete my copy of the control file before calling make-kpkg + (closes: #62269). + + -- Herbert Xu Thu, 13 Apr 2000 08:33:18 +1000 + +kernel-source-2.2.14 (2.2.14-4) frozen unstable; urgency=medium + + * Applied patch from Alexey Kuznetsov that fixes the AF_UNIX socket crash + (closes: #61335). + * Rebuilt with new kernel-package (closes: #61261). + + -- Herbert Xu Fri, 31 Mar 2000 14:12:43 +1000 + +kernel-source-2.2.14 (2.2.14-3) frozen unstable; urgency=low + + * Rebuilt with new kernel-package (closes: #60001). + * Included a patch from Eric Delaunay that + fixes a couple of argument parsing bugs in main.c (closes: #58566). + + -- Herbert Xu Thu, 23 Mar 2000 19:05:11 +1100 + +kernel-source-2.2.14 (2.2.14-2) unstable; urgency=low + + * Fixed incorrect assembly code for i386. + + -- Herbert Xu Sun, 16 Jan 2000 12:36:59 +1100 + +kernel-source-2.2.14 (2.2.14-1) unstable; urgency=low + + * New upstream release. + * Fixed a typo in aha152x.c (closes: #12636). + + -- Herbert Xu Thu, 13 Jan 2000 12:09:06 +1100 + +kernel-source-2.2.13 (2.2.13-2) unstable; urgency=low + + * Updated version number in README.Debian (closes: #49033). + * Removed kernel-image as it will be generated by the kernel-image source + package. + + -- Herbert Xu Fri, 19 Nov 1999 19:41:45 +1100 + +kernel-source-2.2.13 (2.2.13-1) unstable; urgency=low + + * New upstream release. + * Enabled ServeRAID (closes: #47653). + + -- Herbert Xu Sun, 24 Oct 1999 14:22:49 +1000 + +kernel-source-2.2.12 (2.2.12-4) unstable; urgency=low + + * Fixed a typo in tgafb.c. + * Added CONFIG_APM_DISABLE_BY_DEFAULT. + * Call make-kpkg to clean up (closes: #45603). + + -- Herbert Xu Thu, 14 Oct 1999 09:06:57 +1000 + +kernel-source-2.2.12 (2.2.12-3) unstable; urgency=low + + * Compiled with stacks aligned on dwords. + * Enabled serial consoles (closes: #46152). + + -- Herbert Xu Tue, 28 Sep 1999 17:39:34 +1000 + +kernel-source-2.2.12 (2.2.12-2) unstable; urgency=low + + * Rewrote the kmod patch to only bail out when the other side is our parent. + * Use the VFS patch rather than the autofs patch. + * Enabled Joliet extensions (fixes #42006). + * Enabled APM (fixes #42258). + + -- Herbert Xu Sat, 11 Sep 1999 23:51:00 +1000 + +kernel-source-2.2.12 (2.2.12-1) unstable; urgency=low + + * New upstream release (fixes #43865). + * Fixed an nlink update problem in nfs. + * New rules file from Hartmut Koptein. + * Fixed an overflow bug in the stallion driver. + * Fixed an autofs deadlock. + * Don't load a module that we're already trying to load (Chris Butler) (fixes + #39910). + + -- Herbert Xu Wed, 1 Sep 1999 09:12:15 +1000 + +kernel-source-2.2.10 (2.2.10-1) unstable; urgency=low + + * New upsream release. + * Moved default.config to new kernel-patch for i386. + + -- Herbert Xu Tue, 15 Jun 1999 21:59:48 +1000 + +kernel-source-2.2.9 (2.2.9-2) unstable; urgency=high + + * Fixed a network DoS attack. + + -- Herbert Xu Fri, 4 Jun 1999 21:06:28 +1000 + +kernel-source-2.2.9 (2.2.9-1) unstable; urgency=low + + * New upstream relesae. + + -- Herbert Xu Tue, 18 May 1999 10:20:08 +1000 + +kernel-source-2.2.7 (2.2.7-1) unstable; urgency=low + + * New upstream release. + + -- Herbert Xu Fri, 7 May 1999 22:19:56 +1000 + +kernel-source-2.2.5 (1:2.2.5-1) unstable; urgency=low + + * New upstream release. + + -- Herbert Xu Fri, 16 Apr 1999 13:56:45 +1000 + +kernel-source-2.0.36 (2.0.36-3) frozen unstable; urgency=low + + * Upgraded AIC7XXX to 5.1.11 which should make some owners of Adaptec cards + able to install Debian. + + -- Herbert Xu Sun, 21 Feb 1999 14:56:42 +1100 + +kernel-source-2.0.36 (2.0.36-2) frozen unstable; urgency=low + + * Applied ISDN patch from Paul Slootman that enables idle timeouts in the + manual dialmode and allows callback syncPPP connections to be made + (fixes #31516). + * Enlarged kernel message buffer so that all messages are caught by klogd. + * Included module for TLAN based network cards (fixes #31623). + * Include EtherExpressPro and FMV0181/182/183/184 as modules. + + -- Herbert Xu Sat, 16 Jan 1999 16:39:01 +1100 + +kernel-source-2.0.36 (2.0.36-1) unstable; urgency=low + + * New upstream release. + * Enabled ETH16I. + + -- Herbert Xu Sat, 28 Nov 1998 17:40:21 +1100 + +kernel-source-2.0.35 (2.0.35-3) frozen; urgency=low + + * Upgraded to aic7xxx 5.1.4 (fixes #29480, #27859, #28946). + + -- Herbert Xu Sun, 22 Nov 1998 15:41:44 +1100 + +kernel-source-2.0.35 (2.0.35-2) unstable; urgency=low + + * Upgraded to aic7xxx 5.1.0. + * Removed spurious definition in 3c523.c (fixes #25370). + * Built with kernel-package 5.11 (fixes #25623). + * Enabled autofs (fixes #22338, #27860). + + -- Herbert Xu Sat, 24 Oct 1998 17:32:06 +1000 + +kernel-source-2.0.35 (2.0.35-1) unstable; urgency=low + + * New upstream release. + + -- Herbert Xu Sun, 19 Jul 1998 08:59:44 +1000 + +kernel-source-2.0.34 (2.0.34-4) frozen unstable; urgency=high + + * Updated to aic7xxx 5.0.19 (fixes #24252). + + -- Herbert Xu Wed, 8 Jul 1998 20:06:08 +1000 + +kernel-source-2.0.34 (2.0.34-3) frozen unstable; urgency=high + + * Reversed euid test in fs/fcntl.c. + + -- Herbert Xu Tue, 30 Jun 1998 16:27:49 +1000 + +kernel-source-2.0.34 (2.0.34-2) frozen unstable; urgency=low + + * Upload to hamm as well. + + -- Herbert Xu Sun, 21 Jun 1998 16:48:13 +1000 + +kernel-source-2.0.34 (2.0.34-1) unstable; urgency=low + + * New upstream release (fixes #17651, #18788, #21231, #22330). + + -- Herbert Xu Sun, 7 Jun 1998 12:29:27 +1000 + +kernel-source-2.0.33 (2.0.33-9) frozen unstable; urgency=low + + * Disabled certain MCA NIC drivers (fixes #22254). + + -- Herbert Xu Sun, 10 May 1998 15:59:32 +1000 + +kernel-source-2.0.33 (2.0.33-8) frozen unstable; urgency=low + + * Disabled experimental drivers. + * Reapplied joliet patch (fixes #19160, #21537). + * Built with kernel-package 4.07 (fixes #21229). + * Replaced NO_PCI with !CONFIG_PCI in 3c59x.c (fixes #21916). + + -- Herbert Xu Fri, 1 May 1998 18:29:03 +1000 + +kernel-source-2.0.33 (2.0.33-7) frozen unstable; urgency=high + + * Applied IP fragmentation patch from Alan Cox. + + -- Herbert Xu Sat, 18 Apr 1998 12:57:56 +1000 + +kernel-source-2.0.33 (2.0.33-6) frozen unstable; urgency=low + + * Disabled scc since we don't support ax25 by default (fixes #20307). + + -- Herbert Xu Wed, 1 Apr 1998 19:21:05 +1000 + +kernel-source-2.0.33 (2.0.33-5) unstable; urgency=low + + * Turned rst cookies off. + + -- Herbert Xu Wed, 18 Mar 1998 20:41:27 +1100 + +kernel-source-2.0.33 (2.0.33-4) unstable; urgency=low + + * Applied patch from Paul Slootman (fixes #18787). + + -- Herbert Xu Fri, 6 Mar 1998 11:30:44 +1100 + +kernel-source-2.0.33 (2.0.33-3) stable unstable; urgency=low + + * Built with new kernel-package (3.61). + * Added support for fat32 (fixes #14042). + + -- Herbert Xu Fri, 20 Feb 1998 16:33:40 +1100 + +kernel-source-2.0.33 (2.0.33-2) stable unstable; urgency=low + + * built with new kernel-package (3.57) + + -- Herbert Xu Mon, 16 Feb 1998 08:59:11 +1100 + +kernel-source-2.0.33 (2.0.33-1) stable unstable; urgency=high + + * New upstream release (fixes #15736). + + -- Herbert Xu Sat, 7 Feb 1998 15:06:57 +1100 + +kernel-source-2.0.32 (2.0.32-3) stable unstable; urgency=low + + * Built with new kernel-package (3.49). + + -- Herbert Xu Mon, 15 Dec 1997 12:22:45 +1100 + +kernel-source-2.0.32 (2.0.32-2) stable unstable; urgency=low + + * Removed teles driver which was accidentally left in. + * Applied patch from Andreas Jaeger. + * Built with new kernel-package (3.48) for use by libc6. + + -- Herbert Xu Sun, 14 Dec 1997 09:29:26 +1100 + +kernel-source-2.0.32 (2.0.32-1) unstable; urgency=low + + * New upstream release. + * Pristine source. + * Bugs fixed (#6132, #6133, #8647, #11823, #13705). + + -- Herbert Xu Sun, 23 Nov 1997 18:34:38 +1100 + +kernel-source-2.0.29 (1:2.0.29-10) unstable; urgency=low + + * NCR53C8XX driver updates. + * Installed 3c59x 0.46C (#10902). + * Modified scc.c to compile with libc6 (#14367). + + -- Herbert Xu Mon, 17 Nov 1997 20:46:57 +1100 + +kernel-source-2.0.29 (1:2.0.29-9) unstable; urgency=low + + * Slight mod to pci.c to ignore bridges that the kernel can't handle (#11865). + * Removed sound module support. + + -- Herbert Xu Fri, 3 Oct 1997 11:17:02 +1000 + +kernel-source-2.0.29 (1:2.0.29-8) unstable; urgency=low + + * Used epoch numbers to deal with old kernel-source releases. + * Enabled support for NCPFS. + * Added sound support. + * Enabled IP firewalls, forwarding, and aliasing. + * Applied ne2000 patch from Paul Gortmaker. + + -- Herbert Xu Fri, 4 Jul 1997 22:01:16 +1000 + +kernel-source-2.0.29 (2.0.29-7) frozen unstable; urgency=high + + * Applied security patch from Alan Cox. + * Applied patch from Andreas Jellinghaus. + + -- Herbert Xu Sat, 31 May 1997 11:59:56 +1000 + +kernel-source-2.0.29 (2.0.29-6) frozen unstable; urgency=medium + + * Merged Debian changes from 2.0.30. + + -- Herbert Xu Sun, 25 May 1997 22:26:30 +1000 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/i386/386.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/i386/386.modules @@ -0,0 +1,1784 @@ +3c359 +3c501 +3c503 +3c505 +3c507 +3c509 +3c515 +3c523 +3c527 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +53c700 +6pack +8021q +8139cp +8139too +8250_accent +8250_boca +8250_fourport +8250_hub6 +8250_mca +82596 +8390 +9p2000 +a3d +aacraid +abyss +ac +ac3200 +ac97_codec +acecad +acenic +acerhk +aci +acpi-cpufreq +acpiphp +acpiphp_ibm +acpi_sbs +acquirewdt +act2000 +act200l-sir +actisys-sir +acx +ad1848 +ad1889 +adfs +adi +adlib_card +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +adv7170 +adv7175 +adv717x +advansys +advantechwdt +aec62xx +aedsp16 +aes +aes-i586 +affs +af_key +af_packet +agpgart +ah4 +ah6 +aha152x +aha152x_cs +aha1542 +aha1740 +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airprime +ali-agp +ali-ircc +alim1535_wdt +alim15x3 +alim7101_wdt +ambassador +amd64-agp +amd74xx +amd76xrom +amd8111e +amd-k7-agp +analog +anubis +aoe +apm +appletalk +appletouch +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +arlan +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +asus_acpi +at1700 +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +ati-agp +atiixp +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +auerswald +auth_rpcgss +autofs +autofs4 +av5100 +avma1_cs +avm_cs +avmfritz +ax25 +axnet_cs +aztcd +b1 +b1dma +b1isa +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +battery +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_aout +binfmt_misc +bitblit +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bnep +bnx2 +bonding +bpa10x +bpck +bpck6 +bpqether +br2684 +bridge +bsd_comp +bt3c_cs +bt819 +bt856 +bt865 +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +button +bw-qcam +c101 +c4 +capability +capi +capidrv +capifs +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cdu31a +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm206 +cm4000_cs +cm4040_cs +cmd64x +cmtp +cn +cobra +coda +com20020 +com20020_cs +com20020-isa +com20020-pci +com90io +com90xx +comm +commoncap +configfs +container +cops +cosa +cp2101 +cpcihp_generic +cpcihp_zt5550 +cpia +cpia_pp +cpia_usb +cpqarray +cpqphp +cpu5wdt +cpufreq_conservative +cpufreq-nforce2 +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +cpuid +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cs5520 +cs5530 +cs5535 +cs89x0 +ct82c710 +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxacru +cxgb +cy82c693 +cyber2000fb +cyberjack +cyblafb +cyclades +cyclomx +cycx_drv +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +dcdbas +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +dell_rbu +depca +des +dev_acpi +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +dilnetpc +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dmascc +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +donauboe +dpc7146 +dpt_i2o +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +ds_w1_bridge +dtc +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +e2100 +eagle-usb +eata +eata_pio +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +econet +eepro +eepro100 +eeprom +eexpress +efficeon-agp +efs +ehci-hcd +elo +elsa_cs +em28xx +em8300 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +eni +epat +epca +epia +epic100 +eql +es3210 +esi-sir +esp4 +esp6 +eth1394 +eth16i +eurotechwdt +evbug +evdev +ewrk3 +exportfs +ext2 +ext3 +fakephp +fan +farsync +fat +faulty +faxl3 +fbcon +fd_mcs +fdomain +fdomain_cs +fealnx +firestream +fit2 +fit3 +floppy +fm801-gp +fmvj18x_cs +font +forcedeth +fore_200e +freevxfs +freq_table +friq +frpw +fsam7400 +fscher +fscpos +ftape +ftdi_sio +ftl +fuse +g450_pll +gadgetfs +gamecon +gameport +garmin_gps +gdth +generic +generic_serial +gen_probe +genrtc +g_ether +gf2k +g_file_storage +girbil-sir +gl518sm +gl520sm +gl620a +gnbd +g_NCR5380 +g_NCR5380_mmio +grip +grip_mp +gscd +g_serial +guillemot +gunze +gx1fb +gx-suspmod +g_zero +hamachi +hangcheck-timer +hci_uart +hci_usb +hci_vhci +hdaps +hdlc +hdlcdrv +he +hermes +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hidp +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hostess_sv11 +hotkey +hp +hp100 +hp4x +hpfs +hp-plus +hpt34x +hpt366 +hwmon-vid +hw_random +hysdn +i2c_acpi_ec +i2c-algo-bit +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-core +i2c-dev +i2c-elektor +i2c-i801 +i2c-i810 +i2c-isa +i2c-matroxfb +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i6300esb +i810 +i810_audio +i810fb +i82092 +i82365 +i830 +i8k +i8xx_tco +i915 +ib700wdt +ib_cm +ib_core +ib_ipoib +ibm_acpi +ib_mad +ibmasm +ibmasr +ibmcam +ibmlana +ibmmca +ibmphp +ib_mthca +ibmtr +ibmtr_cs +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ichxrom +icn +ide-cd +ide-cs +ide-disk +ide-floppy +ide-generic +ide-pnp +ide-scsi +ide-tape +idmouse +idt77252 +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +in2000 +inftl +initio +inport +intel-agp +intelfb +interact +io_edgeport +io_ti +ip2 +ip2main +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ip_gre +iphase +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipw3945 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irport +irtty-sir +ir-usb +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isdnloop +islsm +islsm_device +islsm_pci +islsm_usb +isofs +isp16 +istallion +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kahlua +kaweth +kbic +kbtab +kernelcapi +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l3udss1 +l440gx +l64781 +lanai +lance +lanstreamer +lapb +lapbether +lcd +ldusb +lec +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +litelink-sir +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lne390 +lockd +logibm +longrun +loop +lp +lp486e +lpfc +ltpc +lxt +ma600-sir +machzwd +macmodes +madgemc +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1619 +max6875 +mca_53c9x +mcdx +mcp2120-sir +mct_u232 +md4 +mdacon +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +meye +mga +michael_mic +microcode +microtek +mii +minix +miropcm20 +miropcm20-rds +mISDN_capi +mISDN_core +mISDN_dsp +mISDN_dtmf +mISDN_isac +mISDN_l1 +mISDN_l2 +mISDN_x25dte +mixcomwd +mk712 +mkiss +mmc_core +moxa +mpoa +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu401 +mrv8k +msdos +msp3400 +msr +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouch +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mwave +mxb +mxser +n2 +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +NCR53c406a +NCR53C9x +NCR_D700 +NCR_Q720_mod +ndiswrapper +ne +ne2 +ne2k-pci +ne3210 +neofb +net1080 +net2280 +netconsole +netrom +netsc520 +nettel +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +ni5010 +ni52 +ni65 +nicstar +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +nsc-ircc +nsp32 +nsp_cs +ntfs +nvidia-agp +nvidiafb +nvram +nxt2002 +nxt200x +nxt6000 +ohci1394 +ohci-hcd +old_belkin-sir +olympic +omninet +on20 +on26 +onenand +opl3 +opl3sa2 +oprofile +optcd +opti621 +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +p4-clockmod +padlock +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pas16 +pas2 +pbe5 +pc110pad +pc300 +pc87360 +pca9539 +pcbit +pcc_acpi +pcd +pcf8574 +pcf8591 +pci +pci200syn +pciehp +pci_hotplug +pcilynx +pcips2 +pcmcia +pcmcia_core +pcmciamtd +pcnet32 +pcnet_cs +pcspkr +pcwd +pcwd_pci +pcwd_usb +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +piix +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmc551 +pms +pnc2000 +podxtpro +powermate +powernow-k6 +powernow-k7 +powernow-k8 +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +processor +proteon +ps2esdi +psi240i +psmouse +pss +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radeonfb +radio-aimslab +radio-aztech +radio-cadet +radio-gemtek +radio-gemtek-pci +radio-maestro +radio-maxiradio +radio-rtrack2 +radio-sf16fmi +radio-sf16fmr2 +radio-terratec +radio-trust +radio-typhoon +radio-zoltrix +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio +rio500 +riscom8 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rrunner +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc +rtc8564 +rtl8150 +rxrpc +rz1000 +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7110 +saa7111 +saa7114 +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +saa7185 +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb +sb1000 +sbc60xxwdt +sbc8360 +sbc_gxx +sb_lib +sbni +sbp2 +sbpcd +sc +sc1200 +sc1200wdt +sc520cdp +sc520_wdt +scb2_flash +scc +sch_atm +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_debug +scsi_mod +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200 +scx200_acb +scx200_docflash +scx200_gpio +scx200_i2c +scx200_wdt +sdhci +sdla +sd_mod +se401 +seagate +sealevel +seclvl +sedlbauer_cs +sedlfax +seeq8005 +serial_cs +serio_raw +sermouse +serpent +serport +serverworks +sg +sha1 +sha256 +sha512 +shaper +shpchp +sidewinder +siimage +sim710 +sir-dev +sis +sis190 +sis5513 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sjcd +sk98lin +skfp +skge +skisa +sk_mca +sky2 +sl811_cs +sl811-hcd +slc90e66 +slhc +slip +slram +smbfs +smc9194 +smc91c92_cs +smc-mca +smctr +smc-ultra +smc-ultra32 +smsc47b397 +smsc47m1 +smsc-ircc2 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1816a +snd-ad1816a-lib +snd-ad1848 +snd-ad1848-lib +snd-ad1889 +snd-ainstr-fm +snd-ainstr-gf1 +snd-ainstr-iw +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-als100 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt2320 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmi8330 +snd-cmipci +snd-cs4231 +snd-cs4231-lib +snd-cs4232 +snd-cs4236 +snd-cs4236-lib +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dt019x +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emu8000-synth +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1688 +snd-es1688-lib +snd-es18xx +snd-es1938 +snd-es1968 +snd-es968 +snd-fm801 +snd-gusclassic +snd-gusextreme +snd-gus-lib +snd-gusmax +snd-gus-synth +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-interwave +snd-interwave-stb +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3sa2 +snd-opl3-synth +snd-opl4-lib +snd-opl4-synth +snd-opti92x-ad1848 +snd-opti92x-cs4231 +snd-opti93x +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-rtctimer +snd-sb16 +snd-sb16-csp +snd-sb16-dsp +snd-sb8 +snd-sb8-dsp +snd-sbawe +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sgalaxy +snd-sonicvibes +snd-sscape +snd-tea575x-tuner +snd-tea6330t +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-wavefront +snd-ymfpci +softcursor +softdog +sony_acpi +sonycd535 +sonypi +sound +soundcore +sp8870 +sp887x +spaceball +spaceorb +spca5xx +specialix +spectrum_cs +speedstep-centrino +speedstep-ich +speedstep-lib +speedstep-smi +speedtch +squashfs +sr_mod +sstfb +st +stallion +starfire +stinger +stir4200 +stradis +strip +stv0297 +stv0299 +stv680 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sworks-agp +sx +sx8 +sym53c416 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink +synclink_cs +synclinkmp +syncppp +sysv +t128 +t1isa +t1pci +tc1100-wmi +tcic +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tdfxfb +tea +tea6415c +tea6420 +tekram-sir +teles_cs +tg3 +tgr192 +thermal +tileblit +tipar +ti_usb_3410_5052 +tlan +tlclk +tmdc +tms380tr +tmscsim +tmspci +toshiba +toshiba_acpi +touchkitusb +tpm +tpm_atmel +tpm_infineon +tpm_nsc +trident +tridentfb +triflex +trix +trm290 +ts5500_flash +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +tvp5150 +twidjoy +twofish +typhoon +u14-34f +uart401 +uart6850 +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +ultrastor +umem +unionfs +uPD98402 +usbatm +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vesafb +vfat +vga16fb +vgastate +via +via686a +via82cxxx +via-agp +via-ircc +via-rhine +via-velocity +vicam +video +video1394 +video-buf +video-buf-dvb +videocodec +videodev +visor +vlsi_ir +v_midi +vpx3220 +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w6692pci +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83792d +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w9966 +w9968cf +wacom +wafer5823wdt +wanrouter +wanxl +warrior +wavelan +wavelan_cs +wbsd +wd +wd7000 +wdt +wdt_pci +whiteheat +winbond-840 +wire +wistron_btns +wl3501_cs +wm8775 +wp512 +x1205 +x25 +x25_asy +xd +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xircom_tulip_cb +xor +xpad +xtkbd +xusbatm +yam +yealink +yellowfin +yenta_socket +z85230 +zatm +zaurus +zd1201 +zd1211 +zftape +zft-compressor +zlib_deflate +znet +zr36016 +zr36050 +zr36060 +zr36067 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/i386/k7.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/i386/k7.modules @@ -0,0 +1,1764 @@ +3c359 +3c501 +3c503 +3c505 +3c507 +3c509 +3c515 +3c523 +3c527 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +53c700 +6pack +8021q +8139cp +8139too +8250_accent +8250_boca +8250_fourport +8250_hub6 +8250_mca +82596 +8390 +9p2000 +a3d +aacraid +abyss +ac +ac3200 +ac97_codec +acecad +acenic +acerhk +aci +acpi-cpufreq +acpiphp +acpiphp_ibm +acpi_sbs +acquirewdt +act2000 +act200l-sir +actisys-sir +acx +ad1848 +ad1889 +adfs +adi +adlib_card +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +adv7170 +adv7175 +adv717x +advansys +advantechwdt +aec62xx +aedsp16 +aes +aes-i586 +affs +af_key +af_packet +agpgart +ah4 +ah6 +aha152x +aha152x_cs +aha1542 +aha1740 +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airprime +ali-agp +ali-ircc +alim1535_wdt +alim15x3 +alim7101_wdt +ambassador +amd64-agp +amd74xx +amd76xrom +amd8111e +amd-k7-agp +analog +anubis +aoe +apm +appletalk +appletouch +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +arlan +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +asus_acpi +at1700 +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +ati-agp +atiixp +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +auerswald +auth_rpcgss +autofs +autofs4 +av5100 +avma1_cs +avm_cs +avmfritz +ax25 +axnet_cs +aztcd +b1 +b1dma +b1isa +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +battery +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_aout +binfmt_misc +bitblit +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bnep +bnx2 +bonding +bpa10x +bpck +bpck6 +bpqether +br2684 +bridge +bsd_comp +bt3c_cs +bt819 +bt856 +bt865 +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +button +bw-qcam +c101 +c4 +capability +capi +capidrv +capifs +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cdu31a +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm4000_cs +cm4040_cs +cmd64x +cmtp +cn +cobra +coda +com20020 +com20020_cs +com20020-isa +com20020-pci +com90io +com90xx +comm +commoncap +configfs +container +cops +cosa +cp2101 +cpcihp_generic +cpcihp_zt5550 +cpia +cpia_pp +cpia_usb +cpqarray +cpqphp +cpu5wdt +cpufreq_conservative +cpufreq-nforce2 +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +cpuid +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cs5520 +cs5530 +cs5535 +cs89x0 +ct82c710 +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxacru +cxgb +cy82c693 +cyber2000fb +cyberjack +cyblafb +cyclades +cyclomx +cycx_drv +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +dcdbas +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +dell_rbu +depca +des +dev_acpi +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +dilnetpc +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +donauboe +dpc7146 +dpt_i2o +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +ds_w1_bridge +dtc +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +e2100 +eagle-usb +eata +eata_pio +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +econet +eepro +eepro100 +eeprom +eexpress +efficeon-agp +efs +ehci-hcd +elo +elsa_cs +em28xx +em8300 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +eni +epat +epca +epia +epic100 +eql +es3210 +esi-sir +esp4 +esp6 +eth1394 +eth16i +eurotechwdt +evbug +evdev +ewrk3 +exportfs +ext2 +ext3 +fakephp +fan +farsync +fat +faulty +faxl3 +fbcon +fd_mcs +fdomain +fdomain_cs +fealnx +firestream +fit2 +fit3 +floppy +fm801-gp +fmvj18x_cs +font +forcedeth +fore_200e +freevxfs +freq_table +friq +frpw +fsam7400 +fscher +fscpos +ftdi_sio +ftl +fuse +g450_pll +gadgetfs +gamecon +gameport +garmin_gps +gdth +generic +generic_serial +gen_probe +g_ether +gf2k +g_file_storage +girbil-sir +gl518sm +gl520sm +gl620a +gnbd +g_NCR5380 +g_NCR5380_mmio +grip +grip_mp +gscd +g_serial +guillemot +gunze +gx1fb +gx-suspmod +g_zero +hamachi +hangcheck-timer +hci_uart +hci_usb +hci_vhci +hdaps +hdlc +hdlcdrv +he +hermes +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hidp +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hostess_sv11 +hotkey +hp +hp100 +hp4x +hpfs +hp-plus +hpt34x +hpt366 +hwmon-vid +hw_random +i2c_acpi_ec +i2c-algo-bit +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-core +i2c-dev +i2c-elektor +i2c-i801 +i2c-i810 +i2c-isa +i2c-matroxfb +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i6300esb +i810 +i810_audio +i810fb +i82092 +i82365 +i830 +i8k +i8xx_tco +i915 +ib700wdt +ib_cm +ib_core +ib_ipoib +ibm_acpi +ib_mad +ibmasm +ibmasr +ibmcam +ibmlana +ibmmca +ibmphp +ib_mthca +ibmtr +ibmtr_cs +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ichxrom +icn +ide-cd +ide-cs +ide-disk +ide-floppy +ide-generic +ide-pnp +ide-scsi +ide-tape +idmouse +idt77252 +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +in2000 +inftl +initio +inport +intel-agp +intelfb +interact +io_edgeport +io_ti +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ip_gre +iphase +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipw3945 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irport +irtty-sir +ir-usb +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +islsm +islsm_device +islsm_pci +islsm_usb +isofs +isp16 +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kahlua +kaweth +kbic +kbtab +kernelcapi +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l3udss1 +l440gx +l64781 +lanai +lance +lanstreamer +lapb +lapbether +lcd +ldusb +lec +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +litelink-sir +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lne390 +lockd +logibm +longrun +loop +lp +lp486e +lpfc +ltpc +lxt +ma600-sir +machzwd +macmodes +madgemc +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1619 +max6875 +mcdx +mcp2120-sir +mct_u232 +md4 +mdacon +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +meye +mga +michael_mic +microcode +microtek +mii +minix +miropcm20 +miropcm20-rds +mISDN_capi +mISDN_core +mISDN_dsp +mISDN_dtmf +mISDN_isac +mISDN_l1 +mISDN_l2 +mISDN_x25dte +mixcomwd +mk712 +mkiss +mmc_core +mpoa +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu401 +mrv8k +msdos +msp3400 +msr +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouch +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mwave +mxb +mxser +n2 +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +NCR53c406a +NCR_D700 +NCR_Q720_mod +ndiswrapper +ne +ne2 +ne2k-pci +ne3210 +neofb +net1080 +net2280 +netconsole +netrom +netsc520 +nettel +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +ni5010 +ni52 +ni65 +nicstar +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +nsc-ircc +nsp32 +nsp_cs +ntfs +nvidia-agp +nvidiafb +nvram +nxt2002 +nxt200x +nxt6000 +ohci1394 +ohci-hcd +old_belkin-sir +olympic +omninet +on20 +on26 +onenand +opl3 +opl3sa2 +oprofile +optcd +opti621 +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +p4-clockmod +padlock +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pas16 +pas2 +pbe5 +pc110pad +pc300 +pc87360 +pca9539 +pcbit +pcc_acpi +pcd +pcf8574 +pcf8591 +pci +pci200syn +pciehp +pci_hotplug +pcilynx +pcips2 +pcmcia +pcmcia_core +pcmciamtd +pcnet32 +pcnet_cs +pcspkr +pcwd +pcwd_pci +pcwd_usb +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +piix +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmc551 +pms +pnc2000 +podxtpro +powermate +powernow-k6 +powernow-k7 +powernow-k8 +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +processor +proteon +ps2esdi +psi240i +psmouse +pss +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radeonfb +radio-aimslab +radio-aztech +radio-cadet +radio-gemtek +radio-gemtek-pci +radio-maestro +radio-maxiradio +radio-rtrack2 +radio-sf16fmi +radio-sf16fmr2 +radio-terratec +radio-trust +radio-typhoon +radio-zoltrix +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio500 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rrunner +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc8564 +rtl8150 +rxrpc +rz1000 +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7110 +saa7111 +saa7114 +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +saa7185 +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb +sb1000 +sbc60xxwdt +sbc8360 +sbc_gxx +sb_lib +sbni +sbp2 +sc +sc1200 +sc1200wdt +sc520cdp +sc520_wdt +scb2_flash +scc +sch_atm +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_debug +scsi_mod +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200 +scx200_acb +scx200_docflash +scx200_gpio +scx200_i2c +scx200_wdt +sdhci +sdla +sd_mod +se401 +seagate +sealevel +seclvl +sedlbauer_cs +sedlfax +seeq8005 +serial_cs +serio_raw +sermouse +serpent +serport +serverworks +sg +sha1 +sha256 +sha512 +shaper +shpchp +sidewinder +siimage +sim710 +sir-dev +sis +sis190 +sis5513 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sjcd +sk98lin +skfp +skge +skisa +sk_mca +sky2 +sl811_cs +sl811-hcd +slc90e66 +slhc +slip +slram +smbfs +smc9194 +smc91c92_cs +smc-mca +smctr +smc-ultra +smc-ultra32 +smsc47b397 +smsc47m1 +smsc-ircc2 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1816a +snd-ad1816a-lib +snd-ad1848 +snd-ad1848-lib +snd-ad1889 +snd-ainstr-fm +snd-ainstr-gf1 +snd-ainstr-iw +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-als100 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt2320 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmi8330 +snd-cmipci +snd-cs4231 +snd-cs4231-lib +snd-cs4232 +snd-cs4236 +snd-cs4236-lib +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dt019x +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emu8000-synth +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1688 +snd-es1688-lib +snd-es18xx +snd-es1938 +snd-es1968 +snd-es968 +snd-fm801 +snd-gusclassic +snd-gusextreme +snd-gus-lib +snd-gusmax +snd-gus-synth +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-interwave +snd-interwave-stb +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3sa2 +snd-opl3-synth +snd-opl4-lib +snd-opl4-synth +snd-opti92x-ad1848 +snd-opti92x-cs4231 +snd-opti93x +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-rtctimer +snd-sb16 +snd-sb16-csp +snd-sb16-dsp +snd-sb8 +snd-sb8-dsp +snd-sbawe +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sgalaxy +snd-sonicvibes +snd-sscape +snd-tea575x-tuner +snd-tea6330t +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-wavefront +snd-ymfpci +softcursor +softdog +sony_acpi +sonycd535 +sonypi +sound +soundcore +sp8870 +sp887x +spaceball +spaceorb +spca5xx +specialix +spectrum_cs +speedstep-centrino +speedstep-ich +speedstep-lib +speedstep-smi +speedtch +squashfs +sr_mod +sstfb +st +starfire +stinger +stir4200 +stradis +strip +stv0297 +stv0299 +stv680 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sworks-agp +sx +sx8 +sym53c416 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink +synclink_cs +synclinkmp +syncppp +sysv +t128 +t1isa +t1pci +tc1100-wmi +tcic +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tdfxfb +tea +tea6415c +tea6420 +tekram-sir +teles_cs +tg3 +tgr192 +thermal +tileblit +tipar +ti_usb_3410_5052 +tlan +tlclk +tmdc +tms380tr +tmscsim +tmspci +toshiba +toshiba_acpi +touchkitusb +tpm +tpm_atmel +tpm_infineon +tpm_nsc +trident +tridentfb +triflex +trix +trm290 +ts5500_flash +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +tvp5150 +twidjoy +twofish +typhoon +u14-34f +uart401 +uart6850 +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +ultrastor +umem +unionfs +uPD98402 +usbatm +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vesafb +vfat +vga16fb +vgastate +via +via686a +via82cxxx +via-agp +via-ircc +via-rhine +via-velocity +vicam +video +video1394 +video-buf +video-buf-dvb +videocodec +videodev +visor +vlsi_ir +v_midi +vpx3220 +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w6692pci +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83792d +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w9966 +w9968cf +wacom +wafer5823wdt +wanrouter +wanxl +warrior +wavelan +wavelan_cs +wbsd +wd +wd7000 +wdt +wdt_pci +whiteheat +winbond-840 +wire +wistron_btns +wl3501_cs +wm8775 +wp512 +x1205 +x25 +x25_asy +xd +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xor +xpad +xtkbd +xusbatm +yam +yealink +yellowfin +yenta_socket +z85230 +zatm +zaurus +zd1201 +zd1211 +zlib_deflate +znet +zr36016 +zr36050 +zr36060 +zr36067 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/i386/686.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/i386/686.modules @@ -0,0 +1,1764 @@ +3c359 +3c501 +3c503 +3c505 +3c507 +3c509 +3c515 +3c523 +3c527 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +53c700 +6pack +8021q +8139cp +8139too +8250_accent +8250_boca +8250_fourport +8250_hub6 +8250_mca +82596 +8390 +9p2000 +a3d +aacraid +abyss +ac +ac3200 +ac97_codec +acecad +acenic +acerhk +aci +acpi-cpufreq +acpiphp +acpiphp_ibm +acpi_sbs +acquirewdt +act2000 +act200l-sir +actisys-sir +acx +ad1848 +ad1889 +adfs +adi +adlib_card +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +adv7170 +adv7175 +adv717x +advansys +advantechwdt +aec62xx +aedsp16 +aes +aes-i586 +affs +af_key +af_packet +agpgart +ah4 +ah6 +aha152x +aha152x_cs +aha1542 +aha1740 +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airprime +ali-agp +ali-ircc +alim1535_wdt +alim15x3 +alim7101_wdt +ambassador +amd64-agp +amd74xx +amd76xrom +amd8111e +amd-k7-agp +analog +anubis +aoe +apm +appletalk +appletouch +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +arlan +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +asus_acpi +at1700 +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +ati-agp +atiixp +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +auerswald +auth_rpcgss +autofs +autofs4 +av5100 +avma1_cs +avm_cs +avmfritz +ax25 +axnet_cs +aztcd +b1 +b1dma +b1isa +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +battery +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_aout +binfmt_misc +bitblit +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bnep +bnx2 +bonding +bpa10x +bpck +bpck6 +bpqether +br2684 +bridge +bsd_comp +bt3c_cs +bt819 +bt856 +bt865 +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +button +bw-qcam +c101 +c4 +capability +capi +capidrv +capifs +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cdu31a +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm4000_cs +cm4040_cs +cmd64x +cmtp +cn +cobra +coda +com20020 +com20020_cs +com20020-isa +com20020-pci +com90io +com90xx +comm +commoncap +configfs +container +cops +cosa +cp2101 +cpcihp_generic +cpcihp_zt5550 +cpia +cpia_pp +cpia_usb +cpqarray +cpqphp +cpu5wdt +cpufreq_conservative +cpufreq-nforce2 +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +cpuid +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cs5520 +cs5530 +cs5535 +cs89x0 +ct82c710 +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxacru +cxgb +cy82c693 +cyber2000fb +cyberjack +cyblafb +cyclades +cyclomx +cycx_drv +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +dcdbas +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +dell_rbu +depca +des +dev_acpi +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +dilnetpc +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +donauboe +dpc7146 +dpt_i2o +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +ds_w1_bridge +dtc +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +e2100 +eagle-usb +eata +eata_pio +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +econet +eepro +eepro100 +eeprom +eexpress +efficeon-agp +efs +ehci-hcd +elo +elsa_cs +em28xx +em8300 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +eni +epat +epca +epia +epic100 +eql +es3210 +esi-sir +esp4 +esp6 +eth1394 +eth16i +eurotechwdt +evbug +evdev +ewrk3 +exportfs +ext2 +ext3 +fakephp +fan +farsync +fat +faulty +faxl3 +fbcon +fd_mcs +fdomain +fdomain_cs +fealnx +firestream +fit2 +fit3 +floppy +fm801-gp +fmvj18x_cs +font +forcedeth +fore_200e +freevxfs +freq_table +friq +frpw +fsam7400 +fscher +fscpos +ftdi_sio +ftl +fuse +g450_pll +gadgetfs +gamecon +gameport +garmin_gps +gdth +generic +generic_serial +gen_probe +g_ether +gf2k +g_file_storage +girbil-sir +gl518sm +gl520sm +gl620a +gnbd +g_NCR5380 +g_NCR5380_mmio +grip +grip_mp +gscd +g_serial +guillemot +gunze +gx1fb +gx-suspmod +g_zero +hamachi +hangcheck-timer +hci_uart +hci_usb +hci_vhci +hdaps +hdlc +hdlcdrv +he +hermes +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hidp +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hostess_sv11 +hotkey +hp +hp100 +hp4x +hpfs +hp-plus +hpt34x +hpt366 +hwmon-vid +hw_random +i2c_acpi_ec +i2c-algo-bit +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-core +i2c-dev +i2c-elektor +i2c-i801 +i2c-i810 +i2c-isa +i2c-matroxfb +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i6300esb +i810 +i810_audio +i810fb +i82092 +i82365 +i830 +i8k +i8xx_tco +i915 +ib700wdt +ib_cm +ib_core +ib_ipoib +ibm_acpi +ib_mad +ibmasm +ibmasr +ibmcam +ibmlana +ibmmca +ibmphp +ib_mthca +ibmtr +ibmtr_cs +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ichxrom +icn +ide-cd +ide-cs +ide-disk +ide-floppy +ide-generic +ide-pnp +ide-scsi +ide-tape +idmouse +idt77252 +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +in2000 +inftl +initio +inport +intel-agp +intelfb +interact +io_edgeport +io_ti +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ip_gre +iphase +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipw3945 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irport +irtty-sir +ir-usb +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +islsm +islsm_device +islsm_pci +islsm_usb +isofs +isp16 +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kahlua +kaweth +kbic +kbtab +kernelcapi +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l3udss1 +l440gx +l64781 +lanai +lance +lanstreamer +lapb +lapbether +lcd +ldusb +lec +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +litelink-sir +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lne390 +lockd +logibm +longrun +loop +lp +lp486e +lpfc +ltpc +lxt +ma600-sir +machzwd +macmodes +madgemc +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1619 +max6875 +mcdx +mcp2120-sir +mct_u232 +md4 +mdacon +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +meye +mga +michael_mic +microcode +microtek +mii +minix +miropcm20 +miropcm20-rds +mISDN_capi +mISDN_core +mISDN_dsp +mISDN_dtmf +mISDN_isac +mISDN_l1 +mISDN_l2 +mISDN_x25dte +mixcomwd +mk712 +mkiss +mmc_core +mpoa +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu401 +mrv8k +msdos +msp3400 +msr +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouch +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mwave +mxb +mxser +n2 +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +NCR53c406a +NCR_D700 +NCR_Q720_mod +ndiswrapper +ne +ne2 +ne2k-pci +ne3210 +neofb +net1080 +net2280 +netconsole +netrom +netsc520 +nettel +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +ni5010 +ni52 +ni65 +nicstar +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +nsc-ircc +nsp32 +nsp_cs +ntfs +nvidia-agp +nvidiafb +nvram +nxt2002 +nxt200x +nxt6000 +ohci1394 +ohci-hcd +old_belkin-sir +olympic +omninet +on20 +on26 +onenand +opl3 +opl3sa2 +oprofile +optcd +opti621 +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +p4-clockmod +padlock +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pas16 +pas2 +pbe5 +pc110pad +pc300 +pc87360 +pca9539 +pcbit +pcc_acpi +pcd +pcf8574 +pcf8591 +pci +pci200syn +pciehp +pci_hotplug +pcilynx +pcips2 +pcmcia +pcmcia_core +pcmciamtd +pcnet32 +pcnet_cs +pcspkr +pcwd +pcwd_pci +pcwd_usb +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +piix +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmc551 +pms +pnc2000 +podxtpro +powermate +powernow-k6 +powernow-k7 +powernow-k8 +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +processor +proteon +ps2esdi +psi240i +psmouse +pss +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radeonfb +radio-aimslab +radio-aztech +radio-cadet +radio-gemtek +radio-gemtek-pci +radio-maestro +radio-maxiradio +radio-rtrack2 +radio-sf16fmi +radio-sf16fmr2 +radio-terratec +radio-trust +radio-typhoon +radio-zoltrix +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio500 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rrunner +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc8564 +rtl8150 +rxrpc +rz1000 +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7110 +saa7111 +saa7114 +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +saa7185 +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb +sb1000 +sbc60xxwdt +sbc8360 +sbc_gxx +sb_lib +sbni +sbp2 +sc +sc1200 +sc1200wdt +sc520cdp +sc520_wdt +scb2_flash +scc +sch_atm +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_debug +scsi_mod +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200 +scx200_acb +scx200_docflash +scx200_gpio +scx200_i2c +scx200_wdt +sdhci +sdla +sd_mod +se401 +seagate +sealevel +seclvl +sedlbauer_cs +sedlfax +seeq8005 +serial_cs +serio_raw +sermouse +serpent +serport +serverworks +sg +sha1 +sha256 +sha512 +shaper +shpchp +sidewinder +siimage +sim710 +sir-dev +sis +sis190 +sis5513 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sjcd +sk98lin +skfp +skge +skisa +sk_mca +sky2 +sl811_cs +sl811-hcd +slc90e66 +slhc +slip +slram +smbfs +smc9194 +smc91c92_cs +smc-mca +smctr +smc-ultra +smc-ultra32 +smsc47b397 +smsc47m1 +smsc-ircc2 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1816a +snd-ad1816a-lib +snd-ad1848 +snd-ad1848-lib +snd-ad1889 +snd-ainstr-fm +snd-ainstr-gf1 +snd-ainstr-iw +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-als100 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt2320 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmi8330 +snd-cmipci +snd-cs4231 +snd-cs4231-lib +snd-cs4232 +snd-cs4236 +snd-cs4236-lib +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dt019x +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emu8000-synth +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1688 +snd-es1688-lib +snd-es18xx +snd-es1938 +snd-es1968 +snd-es968 +snd-fm801 +snd-gusclassic +snd-gusextreme +snd-gus-lib +snd-gusmax +snd-gus-synth +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-interwave +snd-interwave-stb +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3sa2 +snd-opl3-synth +snd-opl4-lib +snd-opl4-synth +snd-opti92x-ad1848 +snd-opti92x-cs4231 +snd-opti93x +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-rtctimer +snd-sb16 +snd-sb16-csp +snd-sb16-dsp +snd-sb8 +snd-sb8-dsp +snd-sbawe +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sgalaxy +snd-sonicvibes +snd-sscape +snd-tea575x-tuner +snd-tea6330t +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-wavefront +snd-ymfpci +softcursor +softdog +sony_acpi +sonycd535 +sonypi +sound +soundcore +sp8870 +sp887x +spaceball +spaceorb +spca5xx +specialix +spectrum_cs +speedstep-centrino +speedstep-ich +speedstep-lib +speedstep-smi +speedtch +squashfs +sr_mod +sstfb +st +starfire +stinger +stir4200 +stradis +strip +stv0297 +stv0299 +stv680 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sworks-agp +sx +sx8 +sym53c416 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink +synclink_cs +synclinkmp +syncppp +sysv +t128 +t1isa +t1pci +tc1100-wmi +tcic +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tdfxfb +tea +tea6415c +tea6420 +tekram-sir +teles_cs +tg3 +tgr192 +thermal +tileblit +tipar +ti_usb_3410_5052 +tlan +tlclk +tmdc +tms380tr +tmscsim +tmspci +toshiba +toshiba_acpi +touchkitusb +tpm +tpm_atmel +tpm_infineon +tpm_nsc +trident +tridentfb +triflex +trix +trm290 +ts5500_flash +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +tvp5150 +twidjoy +twofish +typhoon +u14-34f +uart401 +uart6850 +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +ultrastor +umem +unionfs +uPD98402 +usbatm +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vesafb +vfat +vga16fb +vgastate +via +via686a +via82cxxx +via-agp +via-ircc +via-rhine +via-velocity +vicam +video +video1394 +video-buf +video-buf-dvb +videocodec +videodev +visor +vlsi_ir +v_midi +vpx3220 +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w6692pci +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83792d +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w9966 +w9968cf +wacom +wafer5823wdt +wanrouter +wanxl +warrior +wavelan +wavelan_cs +wbsd +wd +wd7000 +wdt +wdt_pci +whiteheat +winbond-840 +wire +wistron_btns +wl3501_cs +wm8775 +wp512 +x1205 +x25 +x25_asy +xd +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xor +xpad +xtkbd +xusbatm +yam +yealink +yellowfin +yenta_socket +z85230 +zatm +zaurus +zd1201 +zd1211 +zlib_deflate +znet +zr36016 +zr36050 +zr36060 +zr36067 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/i386/server.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/i386/server.modules @@ -0,0 +1,1775 @@ +3c359 +3c501 +3c503 +3c505 +3c507 +3c509 +3c515 +3c523 +3c527 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +53c700 +6pack +8021q +8139cp +8139too +8250_accent +8250_boca +8250_fourport +8250_hub6 +8250_mca +82596 +8390 +9p2000 +a3d +aacraid +abyss +ac +ac3200 +ac97_codec +acecad +acenic +acerhk +aci +acpi-cpufreq +acpiphp +acpiphp_ibm +acpi_sbs +acquirewdt +act2000 +act200l-sir +actisys-sir +acx +ad1848 +ad1889 +adfs +adi +adlib_card +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +adv7170 +adv7175 +adv717x +advansys +advantechwdt +aec62xx +aedsp16 +aes +aes-i586 +affs +af_key +af_packet +agpgart +ah4 +ah6 +aha152x +aha152x_cs +aha1542 +aha1740 +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airprime +ali-agp +ali-ircc +alim1535_wdt +alim15x3 +alim7101_wdt +ambassador +amd64-agp +amd74xx +amd76xrom +amd8111e +amd-k7-agp +analog +anubis +aoe +apm +appletalk +appletouch +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +arlan +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +asus_acpi +at1700 +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +ati-agp +atiixp +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +auerswald +auth_rpcgss +autofs +autofs4 +av5100 +avma1_cs +avm_cs +avmfritz +ax25 +axnet_cs +aztcd +b1 +b1dma +b1isa +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +battery +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_aout +binfmt_misc +bitblit +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bnep +bnx2 +bonding +bpa10x +bpck +bpck6 +bpqether +br2684 +bridge +bsd_comp +bt3c_cs +bt819 +bt856 +bt865 +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +button +bw-qcam +c101 +c4 +capability +capi +capidrv +capifs +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cdu31a +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm4000_cs +cm4040_cs +cman +cmd64x +cmtp +cn +cobra +coda +com20020 +com20020_cs +com20020-isa +com20020-pci +com90io +com90xx +comm +commoncap +configfs +container +cops +cosa +cp2101 +cpcihp_generic +cpcihp_zt5550 +cpia +cpia_pp +cpia_usb +cpqarray +cpqphp +cpu5wdt +cpufreq_conservative +cpufreq-nforce2 +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +cpuid +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cs5520 +cs5530 +cs5535 +cs89x0 +ct82c710 +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxacru +cxgb +cy82c693 +cyber2000fb +cyberjack +cyblafb +cyclades +cyclomx +cycx_drv +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +dcdbas +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +dell_rbu +depca +des +dev_acpi +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +dilnetpc +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +donauboe +dpc7146 +dpt_i2o +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +ds_w1_bridge +dtc +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +e2100 +eagle-usb +eata +eata_pio +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +econet +eepro +eepro100 +eeprom +eexpress +efficeon-agp +efs +ehci-hcd +elo +elsa_cs +em28xx +em8300 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +eni +epat +epca +epia +epic100 +eql +es3210 +esi-sir +esp4 +esp6 +eth1394 +eth16i +eurotechwdt +evbug +evdev +ewrk3 +exportfs +ext2 +ext3 +fakephp +fan +farsync +fat +faulty +faxl3 +fbcon +fd_mcs +fdomain +fdomain_cs +fealnx +firestream +fit2 +fit3 +floppy +fm801-gp +fmvj18x_cs +font +forcedeth +fore_200e +freevxfs +freq_table +friq +frpw +fsam7400 +fscher +fscpos +ftdi_sio +ftl +fuse +g450_pll +gadgetfs +gamecon +gameport +garmin_gps +gdth +generic +generic_serial +gen_probe +g_ether +gf2k +g_file_storage +gfs +girbil-sir +gl518sm +gl520sm +gl620a +gnbd +g_NCR5380 +g_NCR5380_mmio +grip +grip_mp +gscd +g_serial +guillemot +gunze +gx1fb +gx-suspmod +g_zero +hamachi +hangcheck-timer +hci_uart +hci_usb +hci_vhci +hdaps +hdlc +hdlcdrv +he +hermes +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hidp +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hostess_sv11 +hotkey +hp +hp100 +hp4x +hpfs +hp-plus +hpt34x +hpt366 +hwmon-vid +hw_random +i2c_acpi_ec +i2c-algo-bit +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-core +i2c-dev +i2c-elektor +i2c-i801 +i2c-i810 +i2c-isa +i2c-matroxfb +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i6300esb +i810 +i810_audio +i810fb +i82092 +i82365 +i830 +i8k +i8xx_tco +i915 +ib700wdt +ib_cm +ib_core +ib_ipoib +ibm_acpi +ib_mad +ibmasm +ibmasr +ibmcam +ibmlana +ibmmca +ibmphp +ib_mthca +ibmtr +ibmtr_cs +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ichxrom +icn +ide-cd +ide-cs +ide-disk +ide-floppy +ide-generic +ide-pnp +ide-scsi +ide-tape +idmouse +idt77252 +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +in2000 +inftl +initio +inport +intel-agp +intelfb +interact +io_edgeport +io_ti +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ip_gre +iphase +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipw3945 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irport +irtty-sir +ir-usb +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +islsm +islsm_device +islsm_pci +islsm_usb +isofs +isp16 +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kahlua +kaweth +kbic +kbtab +kernelcapi +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l3udss1 +l440gx +l64781 +lanai +lance +lanstreamer +lapb +lapbether +lcd +ldusb +lec +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +litelink-sir +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lne390 +lockd +lock_dlm +lock_gulm +lock_harness +lock_nolock +logibm +longrun +loop +lp +lp486e +lpfc +ltpc +lxt +ma600-sir +machzwd +macmodes +madgemc +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1619 +max6875 +mcdx +mcp2120-sir +mct_u232 +md4 +mdacon +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +meye +mga +michael_mic +microcode +microtek +mii +minix +miropcm20 +miropcm20-rds +mISDN_capi +mISDN_core +mISDN_dsp +mISDN_dtmf +mISDN_isac +mISDN_l1 +mISDN_l2 +mISDN_x25dte +mixcomwd +mk712 +mkiss +mmc_core +mpoa +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu401 +mrv8k +msdos +msp3400 +msr +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouch +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mwave +mxb +mxser +n2 +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +NCR53c406a +NCR_D700 +NCR_Q720_mod +ndiswrapper +ne +ne2 +ne2k-pci +ne3210 +neofb +net1080 +net2280 +netconsole +netrom +netsc520 +nettel +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +ni5010 +ni52 +ni65 +nicstar +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +nsc-ircc +nsp32 +nsp_cs +ntfs +nvidia-agp +nvidiafb +nvram +nxt2002 +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ohci1394 +ohci-hcd +old_belkin-sir +olympic +omninet +on20 +on26 +onenand +opl3 +opl3sa2 +oprofile +optcd +opti621 +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +p4-clockmod +padlock +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pas16 +pas2 +pbe5 +pc110pad +pc300 +pc87360 +pca9539 +pcbit +pcc_acpi +pcd +pcf8574 +pcf8591 +pci +pci200syn +pciehp +pci_hotplug +pcilynx +pcips2 +pcmcia +pcmcia_core +pcmciamtd +pcnet32 +pcnet_cs +pcspkr +pcwd +pcwd_pci +pcwd_usb +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +piix +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmc551 +pms +pnc2000 +podxtpro +powermate +powernow-k6 +powernow-k7 +powernow-k8 +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +processor +proteon +ps2esdi +psi240i +psmouse +pss +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radeonfb +radio-aimslab +radio-aztech +radio-cadet +radio-gemtek +radio-gemtek-pci +radio-maestro +radio-maxiradio +radio-rtrack2 +radio-sf16fmi +radio-sf16fmr2 +radio-terratec +radio-trust +radio-typhoon +radio-zoltrix +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio500 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rrunner +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc8564 +rtl8150 +rxrpc +rz1000 +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7110 +saa7111 +saa7114 +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +saa7185 +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb +sb1000 +sbc60xxwdt +sbc8360 +sbc_gxx +sb_lib +sbni +sbp2 +sc +sc1200 +sc1200wdt +sc520cdp +sc520_wdt +scb2_flash +scc +sch_atm +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_debug +scsi_mod +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200 +scx200_acb +scx200_docflash +scx200_gpio +scx200_i2c +scx200_wdt +sdhci +sdla +sd_mod +se401 +seagate +sealevel +seclvl +sedlbauer_cs +sedlfax +seeq8005 +serial_cs +serio_raw +sermouse +serpent +serport +serverworks +sg +sha1 +sha256 +sha512 +shaper +shpchp +sidewinder +siimage +sim710 +sir-dev +sis +sis190 +sis5513 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sjcd +sk98lin +skfp +skge +skisa +sk_mca +sky2 +sl811_cs +sl811-hcd +slc90e66 +slhc +slip +slram +smbfs +smc9194 +smc91c92_cs +smc-mca +smctr +smc-ultra +smc-ultra32 +smsc47b397 +smsc47m1 +smsc-ircc2 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1816a +snd-ad1816a-lib +snd-ad1848 +snd-ad1848-lib +snd-ad1889 +snd-ainstr-fm +snd-ainstr-gf1 +snd-ainstr-iw +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-als100 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt2320 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmi8330 +snd-cmipci +snd-cs4231 +snd-cs4231-lib +snd-cs4232 +snd-cs4236 +snd-cs4236-lib +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dt019x +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emu8000-synth +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1688 +snd-es1688-lib +snd-es18xx +snd-es1938 +snd-es1968 +snd-es968 +snd-fm801 +snd-gusclassic +snd-gusextreme +snd-gus-lib +snd-gusmax +snd-gus-synth +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-interwave +snd-interwave-stb +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3sa2 +snd-opl3-synth +snd-opl4-lib +snd-opl4-synth +snd-opti92x-ad1848 +snd-opti92x-cs4231 +snd-opti93x +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-rtctimer +snd-sb16 +snd-sb16-csp +snd-sb16-dsp +snd-sb8 +snd-sb8-dsp +snd-sbawe +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sgalaxy +snd-sonicvibes +snd-sscape +snd-tea575x-tuner +snd-tea6330t +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-wavefront +snd-ymfpci +softcursor +softdog +sony_acpi +sonycd535 +sonypi +sound +soundcore +sp8870 +sp887x +spaceball +spaceorb +spca5xx +specialix +spectrum_cs +speedstep-centrino +speedstep-ich +speedstep-lib +speedstep-smi +speedtch +squashfs +sr_mod +sstfb +st +starfire +stinger +stir4200 +stradis +strip +stv0297 +stv0299 +stv680 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sworks-agp +sx +sx8 +sym53c416 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink +synclink_cs +synclinkmp +syncppp +sysv +t128 +t1isa +t1pci +tc1100-wmi +tcic +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tdfxfb +tea +tea6415c +tea6420 +tekram-sir +teles_cs +tg3 +tgr192 +thermal +tileblit +tipar +ti_usb_3410_5052 +tlan +tlclk +tmdc +tms380tr +tmscsim +tmspci +toshiba +toshiba_acpi +touchkitusb +tpm +tpm_atmel +tpm_infineon +tpm_nsc +trident +tridentfb +triflex +trix +trm290 +ts5500_flash +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +tvp5150 +twidjoy +twofish +typhoon +u14-34f +uart401 +uart6850 +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +ultrastor +umem +unionfs +uPD98402 +usbatm +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vesafb +vfat +vga16fb +vgastate +via +via686a +via82cxxx +via-agp +via-ircc +via-rhine +via-velocity +vicam +video +video1394 +video-buf +video-buf-dvb +videocodec +videodev +visor +vlsi_ir +v_midi +vpx3220 +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w6692pci +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83792d +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w9966 +w9968cf +wacom +wafer5823wdt +wanrouter +wanxl +warrior +wavelan +wavelan_cs +wbsd +wd +wd7000 +wdt +wdt_pci +whiteheat +winbond-840 +wire +wistron_btns +wl3501_cs +wm8775 +wp512 +x1205 +x25 +x25_asy +xd +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xor +xpad +xtkbd +xusbatm +yam +yealink +yellowfin +yenta_socket +z85230 +zatm +zaurus +zd1201 +zd1211 +zlib_deflate +znet +zr36016 +zr36050 +zr36060 +zr36067 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/i386/k7 +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/i386/k7 @@ -0,0 +1,5687 @@ +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_detect_processor 0x16836e04 +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_get_freqs 0xb9c4330f +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_get_processor_frequency 0x4cdb4bd0 +arch/i386/kernel/scx200 scx200_cb_base 0x907665bd +arch/i386/kernel/scx200 scx200_gpio_base 0x254e5667 +arch/i386/kernel/scx200 scx200_gpio_configure 0x80c65a79 +arch/i386/kernel/scx200 scx200_gpio_shadow 0x9272bc53 +drivers/acpi/ac acpi_get_ac_dir 0x445c83dc +drivers/acpi/battery acpi_get_battery_dir 0xf895f18d +drivers/acpi/i2c_acpi_ec acpi_get_ec_hc 0xff6090b6 +drivers/acpi/processor acpi_processor_notify_smm 0xb62754a1 +drivers/acpi/processor acpi_processor_register_performance 0x858fc2e6 +drivers/acpi/processor acpi_processor_set_thermal_limit 0xe8a3605f +drivers/acpi/processor acpi_processor_unregister_performance 0x70b3538a +drivers/atm/suni suni_init 0x40a09482 +drivers/atm/uPD98402 uPD98402_init 0x85f4628a +drivers/block/loop loop_register_transfer 0x9b099821 +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0xc22f4d6c +drivers/block/paride/paride pi_disconnect 0xd2b95b61 +drivers/block/paride/paride pi_do_claimed 0xea913c5f +drivers/block/paride/paride pi_init 0xbb21a224 +drivers/block/paride/paride pi_read_block 0x0b4727a9 +drivers/block/paride/paride pi_read_regr 0xe1d33f25 +drivers/block/paride/paride pi_register 0xc62fd559 +drivers/block/paride/paride pi_release 0xaf2eb4bf +drivers/block/paride/paride pi_schedule_claimed 0x80036e4c +drivers/block/paride/paride pi_unregister 0x0e176970 +drivers/block/paride/paride pi_write_block 0xe16be1c0 +drivers/block/paride/paride pi_write_regr 0xf8363942 +drivers/cdrom/cdrom cdrom_get_last_written 0xc795b45b +drivers/cdrom/cdrom cdrom_get_media_event 0xfbb91b6f +drivers/cdrom/cdrom cdrom_ioctl 0x382b9ca5 +drivers/cdrom/cdrom cdrom_media_changed 0x0a39b2d7 +drivers/cdrom/cdrom cdrom_mode_select 0x9d1dabe7 +drivers/cdrom/cdrom cdrom_mode_sense 0x44fbeb64 +drivers/cdrom/cdrom cdrom_number_of_slots 0x878ffc6b +drivers/cdrom/cdrom cdrom_open 0x77eaea66 +drivers/cdrom/cdrom cdrom_release 0x8c30329d +drivers/cdrom/cdrom init_cdrom_command 0x4f476e96 +drivers/cdrom/cdrom register_cdrom 0xd948a500 +drivers/cdrom/cdrom unregister_cdrom 0x9d49a883 +drivers/char/agp/agpgart agp3_generic_cleanup 0xc2424641 +drivers/char/agp/agpgart agp3_generic_configure 0x4b085dbf +drivers/char/agp/agpgart agp3_generic_fetch_size 0xde9b17ed +drivers/char/agp/agpgart agp3_generic_sizes 0x546264cf +drivers/char/agp/agpgart agp3_generic_tlbflush 0x2dba03b6 +drivers/char/agp/agpgart agp_add_bridge 0x9dc8a6d2 +drivers/char/agp/agpgart agp_alloc_bridge 0x37d6b3cd +drivers/char/agp/agpgart agp_allocate_memory 0x424aa7b5 +drivers/char/agp/agpgart agp_backend_acquire 0xaddc56ef +drivers/char/agp/agpgart agp_backend_release 0x05a59f57 +drivers/char/agp/agpgart agp_bind_memory 0x2b49cbe8 +drivers/char/agp/agpgart agp_bridge 0x392a063d +drivers/char/agp/agpgart agp_bridges 0x673f815e +drivers/char/agp/agpgart agp_collect_device_status 0x19da11a6 +drivers/char/agp/agpgart agp_copy_info 0x09c891d2 +drivers/char/agp/agpgart agp_create_memory 0xbfae3a7f +drivers/char/agp/agpgart agp_device_command 0xe6d5c272 +drivers/char/agp/agpgart agp_enable 0x6024c317 +drivers/char/agp/agpgart agp_find_bridge 0x0a1a13d2 +drivers/char/agp/agpgart agp_free_key 0xd0fef3b2 +drivers/char/agp/agpgart agp_free_memory 0x66b4e0b1 +drivers/char/agp/agpgart agp_generic_alloc_by_type 0x6b721b6e +drivers/char/agp/agpgart agp_generic_alloc_page 0x9d1d973f +drivers/char/agp/agpgart agp_generic_create_gatt_table 0x2ec2b09a +drivers/char/agp/agpgart agp_generic_destroy_page 0xbba27749 +drivers/char/agp/agpgart agp_generic_enable 0x6b516bb2 +drivers/char/agp/agpgart agp_generic_free_by_type 0x087bf818 +drivers/char/agp/agpgart agp_generic_free_gatt_table 0x3b1a0781 +drivers/char/agp/agpgart agp_generic_insert_memory 0x3658f7d0 +drivers/char/agp/agpgart agp_generic_mask_memory 0xa8375a81 +drivers/char/agp/agpgart agp_generic_remove_memory 0xb1f6b368 +drivers/char/agp/agpgart agp_memory_reserved 0xe089cfcc +drivers/char/agp/agpgart agp_num_entries 0xd6feefa5 +drivers/char/agp/agpgart agp_off 0x7538b132 +drivers/char/agp/agpgart agp_put_bridge 0x7439cecf +drivers/char/agp/agpgart agp_remove_bridge 0x8b3dc9b9 +drivers/char/agp/agpgart agp_try_unsupported_boot 0xc5d9c46c +drivers/char/agp/agpgart agp_unbind_memory 0x24e5c470 +drivers/char/agp/agpgart get_agp_version 0x57a616ee +drivers/char/agp/agpgart global_cache_flush 0xa4d4f0e6 +drivers/char/agp/agpgart map_page_into_agp 0xb37c933d +drivers/char/agp/agpgart unmap_page_from_agp 0x5e3e627f +drivers/char/drm/drm drm_addbufs_agp 0x277dbefd +drivers/char/drm/drm drm_addbufs_fb 0x4805e2c7 +drivers/char/drm/drm drm_addbufs_pci 0xc14edd4f +drivers/char/drm/drm drm_addmap 0x89117717 +drivers/char/drm/drm drm_agp_acquire 0x6aac2d04 +drivers/char/drm/drm drm_agp_alloc 0x94db0c19 +drivers/char/drm/drm drm_agp_bind 0x7be94c53 +drivers/char/drm/drm drm_agp_bind_memory 0x47899393 +drivers/char/drm/drm drm_agp_enable 0x869baf26 +drivers/char/drm/drm drm_agp_free 0xe733d787 +drivers/char/drm/drm drm_agp_info 0xf500cea1 +drivers/char/drm/drm drm_agp_release 0x59034c1b +drivers/char/drm/drm drm_agp_unbind 0x3d65a57a +drivers/char/drm/drm drm_ati_pcigart_cleanup 0xe60081ac +drivers/char/drm/drm drm_ati_pcigart_init 0x7cb68409 +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0xb70e230c +drivers/char/drm/drm drm_core_reclaim_buffers 0xa3b76ef0 +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0x176b5435 +drivers/char/drm/drm drm_fasync 0x179eca38 +drivers/char/drm/drm drm_get_dev 0x8371dc3b +drivers/char/drm/drm drm_get_resource_len 0xde852837 +drivers/char/drm/drm drm_get_resource_start 0xf2f07d76 +drivers/char/drm/drm drm_init 0xace240b8 +drivers/char/drm/drm drm_ioctl 0x7f7f3d6e +drivers/char/drm/drm drm_irq_uninstall 0x579e40fe +drivers/char/drm/drm drm_mmap 0x5cb9fdee +drivers/char/drm/drm drm_open 0x7f6ba8d9 +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0x05c0a7d0 +drivers/char/drm/drm drm_pci_free 0x42850e18 +drivers/char/drm/drm drm_poll 0x5ec6644f +drivers/char/drm/drm drm_release 0x440b51d2 +drivers/char/drm/drm drm_rmmap 0x66ea9e2c +drivers/char/drm/drm drm_rmmap_locked 0xb922b4e9 +drivers/char/drm/drm drm_vbl_send_signals 0xd62a2449 +drivers/char/generic_serial gs_block_til_ready 0xca32c8c4 +drivers/char/generic_serial gs_chars_in_buffer 0xb78d040f +drivers/char/generic_serial gs_close 0xc28cf901 +drivers/char/generic_serial gs_flush_buffer 0x52259df5 +drivers/char/generic_serial gs_flush_chars 0xbd111e8f +drivers/char/generic_serial gs_getserial 0x523a5460 +drivers/char/generic_serial gs_got_break 0xcc90835e +drivers/char/generic_serial gs_hangup 0xcbb949ac +drivers/char/generic_serial gs_init_port 0x9d735f55 +drivers/char/generic_serial gs_put_char 0x32f3551e +drivers/char/generic_serial gs_set_termios 0xce797915 +drivers/char/generic_serial gs_setserial 0x5f0f08b4 +drivers/char/generic_serial gs_start 0x400d1149 +drivers/char/generic_serial gs_stop 0x656bf605 +drivers/char/generic_serial gs_write 0x835a730e +drivers/char/generic_serial gs_write_room 0xab1c3a28 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0xffe67535 +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0x1b45c5b4 +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0xe60b0ab4 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0xfb640aa5 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0x70369dfd +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0x961d1a82 +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0xc62d846c +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0x3ad0f028 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0x2006b7e8 +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0xf89f1014 +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0xf1b875b6 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0xbef38a96 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0xc3cc5f2a +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0x012681a4 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0x6f0eb5b6 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0x00c0420b +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0xf3edefd1 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0x7268baaa +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0x4957ed5b +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0xff66bab9 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0x74d479ab +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0xddfa227a +drivers/char/nvram __nvram_check_checksum 0x2adec1e0 +drivers/char/nvram __nvram_read_byte 0x17ff2c1d +drivers/char/nvram __nvram_write_byte 0xa8813189 +drivers/char/nvram nvram_check_checksum 0x7da28f12 +drivers/char/nvram nvram_read_byte 0x0f28cb91 +drivers/char/nvram nvram_write_byte 0x9ce3f83f +drivers/char/sonypi sonypi_camera_command 0x89590f57 +drivers/char/tpm/tpm tpm_open 0xbf2a5928 +drivers/char/tpm/tpm tpm_pm_resume 0x89a9aae3 +drivers/char/tpm/tpm tpm_pm_suspend 0xccd348b9 +drivers/char/tpm/tpm tpm_read 0x36b68593 +drivers/char/tpm/tpm tpm_register_hardware 0x8cede389 +drivers/char/tpm/tpm tpm_release 0x1918b285 +drivers/char/tpm/tpm tpm_remove_hardware 0x74ce3181 +drivers/char/tpm/tpm tpm_show_caps 0x3cbe8064 +drivers/char/tpm/tpm tpm_show_pcrs 0x588cdc21 +drivers/char/tpm/tpm tpm_show_pubek 0x8c08eec8 +drivers/char/tpm/tpm tpm_store_cancel 0xb57b849d +drivers/char/tpm/tpm tpm_write 0x43db2fa5 +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0x969e5dfd +drivers/cpufreq/freq_table cpufreq_freq_attr_scaling_available_freqs 0xde7de639 +drivers/cpufreq/freq_table cpufreq_frequency_get_table 0x2f47d8c7 +drivers/cpufreq/freq_table cpufreq_frequency_table_cpuinfo 0xcb6980a8 +drivers/cpufreq/freq_table cpufreq_frequency_table_get_attr 0x706b3a33 +drivers/cpufreq/freq_table cpufreq_frequency_table_put_attr 0x7ae1ae8e +drivers/cpufreq/freq_table cpufreq_frequency_table_target 0x390275a1 +drivers/cpufreq/freq_table cpufreq_frequency_table_verify 0x6d3aa8e5 +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-bit i2c_bit_add_bus 0x942be693 +drivers/i2c/algos/i2c-algo-bit i2c_bit_del_bus 0xd53078cf +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0x60b39ec1 +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0x21a8009d +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0xec1fa64d +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0xad043811 +drivers/i2c/busses/i2c-amd756 amd756_smbus 0x829fb994 +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0xb86ca21d +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0xb9d54f1d +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/i2c/i2c-core i2c_adapter_class 0x11cbb437 +drivers/i2c/i2c-core i2c_adapter_dev_release 0x07e8f5ed +drivers/i2c/i2c-core i2c_adapter_driver 0xb9ac9eef +drivers/i2c/i2c-core i2c_add_adapter 0xcb89ef52 +drivers/i2c/i2c-core i2c_add_driver 0xa04a95cc +drivers/i2c/i2c-core i2c_attach_client 0x59c1303b +drivers/i2c/i2c-core i2c_bus_type 0xa8474e2b +drivers/i2c/i2c-core i2c_check_addr 0x272686fe +drivers/i2c/i2c-core i2c_clients_command 0x852d8c3e +drivers/i2c/i2c-core i2c_control 0xce0c0c09 +drivers/i2c/i2c-core i2c_del_adapter 0x05afd560 +drivers/i2c/i2c-core i2c_del_driver 0xcc289d22 +drivers/i2c/i2c-core i2c_detach_client 0xbd5248b2 +drivers/i2c/i2c-core i2c_get_adapter 0x6a513a4d +drivers/i2c/i2c-core i2c_master_recv 0xd061b038 +drivers/i2c/i2c-core i2c_master_send 0x3986acf1 +drivers/i2c/i2c-core i2c_probe 0xf56fd014 +drivers/i2c/i2c-core i2c_put_adapter 0x8208f077 +drivers/i2c/i2c-core i2c_release_client 0xb99a24be +drivers/i2c/i2c-core i2c_smbus_read_byte 0xca0b05bc +drivers/i2c/i2c-core i2c_smbus_read_byte_data 0xaf4fd0b0 +drivers/i2c/i2c-core i2c_smbus_read_i2c_block_data 0x66d95630 +drivers/i2c/i2c-core i2c_smbus_read_word_data 0x77ca926e +drivers/i2c/i2c-core i2c_smbus_write_block_data 0x539d85b8 +drivers/i2c/i2c-core i2c_smbus_write_byte 0x2909ce4c +drivers/i2c/i2c-core i2c_smbus_write_byte_data 0xc104988c +drivers/i2c/i2c-core i2c_smbus_write_quick 0xe1ccea81 +drivers/i2c/i2c-core i2c_smbus_write_word_data 0xf8c8bad5 +drivers/i2c/i2c-core i2c_smbus_xfer 0xdb9af3b6 +drivers/i2c/i2c-core i2c_transfer 0x53232078 +drivers/i2c/i2c-core i2c_use_client 0x9421e271 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0x9a262204 +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x4358bad7 +drivers/ieee1394/ieee1394 csr1212_read 0x85bc1770 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x72acaf32 +drivers/ieee1394/ieee1394 dma_prog_region_free 0x9a9e0422 +drivers/ieee1394/ieee1394 dma_prog_region_init 0xf9219543 +drivers/ieee1394/ieee1394 dma_region_alloc 0x73370014 +drivers/ieee1394/ieee1394 dma_region_free 0x52f0b3d9 +drivers/ieee1394/ieee1394 dma_region_init 0x86b8b1a1 +drivers/ieee1394/ieee1394 dma_region_mmap 0x7a77a660 +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0xa35f0201 +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0xbfefd4fb +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x9d9cb0cc +drivers/ieee1394/ieee1394 highlevel_host_reset 0x4c1e322d +drivers/ieee1394/ieee1394 hpsb_add_host 0x85cb6aff +drivers/ieee1394/ieee1394 hpsb_alloc_host 0xc964904b +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0x32a014ca +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0xcd80a6c8 +drivers/ieee1394/ieee1394 hpsb_bus_reset 0x1f4b3a97 +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0x48858f13 +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0x5dea80eb +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0xa8e81649 +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0x99e612aa +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0xb0671290 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0x39451975 +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0x59fe59ae +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0xf7ef717d +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0xef64142c +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0x01481ff0 +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0x8f7aa935 +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0xf1b6f40d +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0x09b0c239 +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0x6266d150 +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0x4544b1cf +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0xb041a72b +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0xf520f914 +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0xbe1a9edd +drivers/ieee1394/ieee1394 hpsb_iso_stop 0xb81b4ee5 +drivers/ieee1394/ieee1394 hpsb_iso_wake 0xa63f8630 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x8662db1f +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0x450f7730 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0xf9d6690f +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0xef0e0d09 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0x9f50dd70 +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0xc9ade842 +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0x5c3220b2 +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0x111f732a +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0xa78ee41a +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0x6b728177 +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0x66c4e019 +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0x13b0cf82 +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0xc3fe8168 +drivers/ieee1394/ieee1394 hpsb_node_write 0x3059c324 +drivers/ieee1394/ieee1394 hpsb_packet_received 0x314535b6 +drivers/ieee1394/ieee1394 hpsb_packet_sent 0xcda8b8b1 +drivers/ieee1394/ieee1394 hpsb_packet_success 0x1dc066ce +drivers/ieee1394/ieee1394 hpsb_protocol_class 0x8b6f3218 +drivers/ieee1394/ieee1394 hpsb_read 0x02edaef9 +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0xba3024e2 +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0x4aead591 +drivers/ieee1394/ieee1394 hpsb_register_protocol 0x10b6d7da +drivers/ieee1394/ieee1394 hpsb_remove_host 0x048bf94a +drivers/ieee1394/ieee1394 hpsb_reset_bus 0xaec77c2d +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0x0f6c2ea1 +drivers/ieee1394/ieee1394 hpsb_selfid_received 0x95ee1561 +drivers/ieee1394/ieee1394 hpsb_send_packet 0x16e3623f +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0x43033460 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0x66fd2d04 +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0x4af1b595 +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0x9a0ff5a7 +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0xc0b5a9be +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0xf09daac2 +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0xc7258eec +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0xa7578894 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0x228d731d +drivers/ieee1394/ieee1394 hpsb_write 0xbb89b08b +drivers/ieee1394/ieee1394 ieee1394_bus_type 0x7888b214 +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0x1d5aeebc +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0xada7b22b +drivers/ieee1394/ohci1394 ohci1394_stop_context 0x0c7bb4f3 +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0x4d6e1234 +drivers/infiniband/core/ib_cm ib_cm_establish 0xc0bbbf1e +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0xb29560ba +drivers/infiniband/core/ib_cm ib_cm_listen 0x9ed610cb +drivers/infiniband/core/ib_cm ib_create_cm_id 0xf2f4bcee +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0x9c81dd43 +drivers/infiniband/core/ib_cm ib_send_cm_apr 0x06136bed +drivers/infiniband/core/ib_cm ib_send_cm_drep 0x1bf40914 +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0x38451cee +drivers/infiniband/core/ib_cm ib_send_cm_lap 0x5fc2c8cc +drivers/infiniband/core/ib_cm ib_send_cm_mra 0x90c8ad61 +drivers/infiniband/core/ib_cm ib_send_cm_rej 0xc959934a +drivers/infiniband/core/ib_cm ib_send_cm_rep 0x7a60d19f +drivers/infiniband/core/ib_cm ib_send_cm_req 0x4509b379 +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0x0800459c +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0xe6a8ac20 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0xb72bfcbf +drivers/infiniband/core/ib_core ib_alloc_device 0x67557ffe +drivers/infiniband/core/ib_core ib_alloc_fmr 0x8d440ede +drivers/infiniband/core/ib_core ib_alloc_mw 0x41c74fd7 +drivers/infiniband/core/ib_core ib_alloc_pd 0x58c00d9d +drivers/infiniband/core/ib_core ib_attach_mcast 0x0b6e4b52 +drivers/infiniband/core/ib_core ib_create_ah 0x164b6c5f +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0xf7c515bd +drivers/infiniband/core/ib_core ib_create_cq 0x1a20bec3 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0xe7504d4c +drivers/infiniband/core/ib_core ib_create_qp 0x0a03865d +drivers/infiniband/core/ib_core ib_create_srq 0xe88d0ace +drivers/infiniband/core/ib_core ib_dealloc_device 0xb2109597 +drivers/infiniband/core/ib_core ib_dealloc_fmr 0xd7f1a96e +drivers/infiniband/core/ib_core ib_dealloc_mw 0xc4b3fe3c +drivers/infiniband/core/ib_core ib_dealloc_pd 0xad504e25 +drivers/infiniband/core/ib_core ib_dereg_mr 0x273895a0 +drivers/infiniband/core/ib_core ib_destroy_ah 0x94168c9d +drivers/infiniband/core/ib_core ib_destroy_cq 0x2571f295 +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0xd55c6b2a +drivers/infiniband/core/ib_core ib_destroy_qp 0xbf541367 +drivers/infiniband/core/ib_core ib_destroy_srq 0x0f3981eb +drivers/infiniband/core/ib_core ib_detach_mcast 0xdee0c3ff +drivers/infiniband/core/ib_core ib_dispatch_event 0x152c44ed +drivers/infiniband/core/ib_core ib_find_cached_gid 0xe651bc5b +drivers/infiniband/core/ib_core ib_find_cached_pkey 0x1899189d +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0x21bdfda2 +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0x70fe8684 +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0xd6d08f64 +drivers/infiniband/core/ib_core ib_get_cached_gid 0xa18a7560 +drivers/infiniband/core/ib_core ib_get_cached_pkey 0x52556897 +drivers/infiniband/core/ib_core ib_get_client_data 0x30f5c06b +drivers/infiniband/core/ib_core ib_get_dma_mr 0x95607e9b +drivers/infiniband/core/ib_core ib_modify_ah 0x439d0b56 +drivers/infiniband/core/ib_core ib_modify_device 0x91b8fdca +drivers/infiniband/core/ib_core ib_modify_port 0x6afa205c +drivers/infiniband/core/ib_core ib_modify_qp 0x201829b5 +drivers/infiniband/core/ib_core ib_modify_srq 0x1a577e8a +drivers/infiniband/core/ib_core ib_pack 0x520b2638 +drivers/infiniband/core/ib_core ib_query_ah 0x2ad185ad +drivers/infiniband/core/ib_core ib_query_device 0xd033d636 +drivers/infiniband/core/ib_core ib_query_gid 0x8ec24771 +drivers/infiniband/core/ib_core ib_query_mr 0x927f7310 +drivers/infiniband/core/ib_core ib_query_pkey 0x7365b736 +drivers/infiniband/core/ib_core ib_query_port 0x9301a0af +drivers/infiniband/core/ib_core ib_query_qp 0x83838631 +drivers/infiniband/core/ib_core ib_query_srq 0xd9efb301 +drivers/infiniband/core/ib_core ib_reg_phys_mr 0x4316a3ca +drivers/infiniband/core/ib_core ib_register_client 0x28c5c468 +drivers/infiniband/core/ib_core ib_register_device 0xc1648247 +drivers/infiniband/core/ib_core ib_register_event_handler 0x255b3a07 +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x00b17229 +drivers/infiniband/core/ib_core ib_resize_cq 0xd2c77616 +drivers/infiniband/core/ib_core ib_set_client_data 0x6a219cd9 +drivers/infiniband/core/ib_core ib_ud_header_init 0x965c1dae +drivers/infiniband/core/ib_core ib_ud_header_pack 0x8d12f837 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0x11d42382 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xb1a312e1 +drivers/infiniband/core/ib_core ib_unregister_client 0x53e1df26 +drivers/infiniband/core/ib_core ib_unregister_device 0xbcb9cad8 +drivers/infiniband/core/ib_core ib_unregister_event_handler 0xaa834cca +drivers/infiniband/core/ib_mad ib_cancel_mad 0x0c847958 +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x6a3bbc94 +drivers/infiniband/core/ib_mad ib_create_send_mad 0xa67ed957 +drivers/infiniband/core/ib_mad ib_free_recv_mad 0xd6f8244e +drivers/infiniband/core/ib_mad ib_free_send_mad 0x58af74dc +drivers/infiniband/core/ib_mad ib_modify_mad 0xb2544b3e +drivers/infiniband/core/ib_mad ib_post_send_mad 0xdaafefae +drivers/infiniband/core/ib_mad ib_process_mad_wc 0x2a900402 +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x1a46e223 +drivers/infiniband/core/ib_mad ib_register_mad_agent 0x1c941aab +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0xa59b8c13 +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0xd2a36ef0 +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0x652a4d49 +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0xe355ee92 +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0x2acbe863 +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0x248d623f +drivers/input/gameport/gameport __gameport_register_driver 0x41412706 +drivers/input/gameport/gameport __gameport_register_port 0x578fea65 +drivers/input/gameport/gameport gameport_close 0x24d11498 +drivers/input/gameport/gameport gameport_cooked_read 0x7f183840 +drivers/input/gameport/gameport gameport_open 0x6b83f73a +drivers/input/gameport/gameport gameport_rescan 0xf0905cfc +drivers/input/gameport/gameport gameport_set_name 0xf25e09db +drivers/input/gameport/gameport gameport_set_phys 0xa95771a5 +drivers/input/gameport/gameport gameport_start_polling 0x723797dd +drivers/input/gameport/gameport gameport_stop_polling 0x5e185a4f +drivers/input/gameport/gameport gameport_unregister_driver 0x6346d463 +drivers/input/gameport/gameport gameport_unregister_port 0x589b1cc4 +drivers/isdn/capi/capifs capifs_free_ncci 0x2c54c957 +drivers/isdn/capi/capifs capifs_new_ncci 0xd0bc06ce +drivers/isdn/capi/kernelcapi attach_capi_ctr 0xce89bd22 +drivers/isdn/capi/kernelcapi capi20_get_manufacturer 0x7e6f1307 +drivers/isdn/capi/kernelcapi capi20_get_profile 0xe19a11ac +drivers/isdn/capi/kernelcapi capi20_get_serial 0x7a33596c +drivers/isdn/capi/kernelcapi capi20_get_version 0x14f2aa5a +drivers/isdn/capi/kernelcapi capi20_isinstalled 0x31c24aa4 +drivers/isdn/capi/kernelcapi capi20_manufacturer 0xed061606 +drivers/isdn/capi/kernelcapi capi20_put_message 0xb757ea13 +drivers/isdn/capi/kernelcapi capi20_register 0x345ddae0 +drivers/isdn/capi/kernelcapi capi20_release 0x537ad720 +drivers/isdn/capi/kernelcapi capi20_set_callback 0x7711576c +drivers/isdn/capi/kernelcapi capi_cmd2str 0xb19fda8d +drivers/isdn/capi/kernelcapi capi_cmsg2message 0x50b33ca4 +drivers/isdn/capi/kernelcapi capi_cmsg2str 0xd45b5eb5 +drivers/isdn/capi/kernelcapi capi_cmsg_header 0xb60e5e5f +drivers/isdn/capi/kernelcapi capi_ctr_handle_message 0x547c2ed7 +drivers/isdn/capi/kernelcapi capi_ctr_ready 0x9cc59d23 +drivers/isdn/capi/kernelcapi capi_ctr_reseted 0x44cd2f96 +drivers/isdn/capi/kernelcapi capi_ctr_resume_output 0x571725a7 +drivers/isdn/capi/kernelcapi capi_ctr_suspend_output 0x6f06aca2 +drivers/isdn/capi/kernelcapi capi_info2str 0x47d3fc51 +drivers/isdn/capi/kernelcapi capi_message2cmsg 0x6057c6f3 +drivers/isdn/capi/kernelcapi capi_message2str 0xa7abc5e3 +drivers/isdn/capi/kernelcapi capilib_data_b3_conf 0x62e32d43 +drivers/isdn/capi/kernelcapi capilib_data_b3_req 0x71e8d5ba +drivers/isdn/capi/kernelcapi capilib_free_ncci 0x2b8eab1f +drivers/isdn/capi/kernelcapi capilib_new_ncci 0x2baa6586 +drivers/isdn/capi/kernelcapi capilib_release 0x8f699913 +drivers/isdn/capi/kernelcapi capilib_release_appl 0xaa165d27 +drivers/isdn/capi/kernelcapi detach_capi_ctr 0xf529381b +drivers/isdn/capi/kernelcapi register_capi_driver 0x9f823278 +drivers/isdn/capi/kernelcapi unregister_capi_driver 0x04403fcf +drivers/isdn/hardware/avm/b1 avmcard_dma_alloc 0xd7355dbe +drivers/isdn/hardware/avm/b1 avmcard_dma_free 0x5e717a1f +drivers/isdn/hardware/avm/b1 b1_alloc_card 0x4577af16 +drivers/isdn/hardware/avm/b1 b1_detect 0xdfd28376 +drivers/isdn/hardware/avm/b1 b1_free_card 0x4ab3e4f4 +drivers/isdn/hardware/avm/b1 b1_getrevision 0xe99fd134 +drivers/isdn/hardware/avm/b1 b1_interrupt 0x7c376ed0 +drivers/isdn/hardware/avm/b1 b1_irq_table 0x85f09690 +drivers/isdn/hardware/avm/b1 b1_load_config 0x1cf8ee8a +drivers/isdn/hardware/avm/b1 b1_load_firmware 0x090679b9 +drivers/isdn/hardware/avm/b1 b1_load_t4file 0xdeaba866 +drivers/isdn/hardware/avm/b1 b1_loaded 0x1199f77b +drivers/isdn/hardware/avm/b1 b1_parse_version 0x9a00aa52 +drivers/isdn/hardware/avm/b1 b1_register_appl 0xca034246 +drivers/isdn/hardware/avm/b1 b1_release_appl 0x8f5a0f22 +drivers/isdn/hardware/avm/b1 b1_reset_ctr 0x2771037b +drivers/isdn/hardware/avm/b1 b1_send_message 0xe39f9651 +drivers/isdn/hardware/avm/b1 b1ctl_read_proc 0xa8501a75 +drivers/isdn/hardware/avm/b1dma b1dma_interrupt 0xb7858191 +drivers/isdn/hardware/avm/b1dma b1dma_load_firmware 0x253296e8 +drivers/isdn/hardware/avm/b1dma b1dma_register_appl 0x0e84f01d +drivers/isdn/hardware/avm/b1dma b1dma_release_appl 0xee3823dd +drivers/isdn/hardware/avm/b1dma b1dma_reset 0x6e186b12 +drivers/isdn/hardware/avm/b1dma b1dma_reset_ctr 0x87aae53e +drivers/isdn/hardware/avm/b1dma b1dma_send_message 0xce11ecc2 +drivers/isdn/hardware/avm/b1dma b1dmactl_read_proc 0xd773650d +drivers/isdn/hardware/avm/b1dma b1pciv4_detect 0x57ee8312 +drivers/isdn/hardware/avm/b1dma t1pci_detect 0xf31e1e15 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_b1 0xf14bf8b1 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m1 0xaec3240e +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m2 0xea620116 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_delcard 0x29562993 +drivers/isdn/hardware/eicon/divadidd DIVA_DIDD_Read 0x2974ead1 +drivers/isdn/hardware/eicon/divadidd proc_net_eicon 0x391c436e +drivers/isdn/hisax/hisax FsmChangeState 0x93a64734 +drivers/isdn/hisax/hisax FsmDelTimer 0x799088e0 +drivers/isdn/hisax/hisax FsmEvent 0x9df0cd27 +drivers/isdn/hisax/hisax FsmFree 0x148f0c99 +drivers/isdn/hisax/hisax FsmInitTimer 0x52866abe +drivers/isdn/hisax/hisax FsmNew 0xf0a16657 +drivers/isdn/hisax/hisax FsmRestartTimer 0xde7e7906 +drivers/isdn/hisax/hisax HiSax_closecard 0xfc27303b +drivers/isdn/hisax/hisax hisax_init_pcmcia 0xf1dbed77 +drivers/isdn/hisax/hisax hisax_register 0xee93522c +drivers/isdn/hisax/hisax hisax_unregister 0x07f4f2ce +drivers/isdn/hisax/hisax_isac isac_d_l2l1 0x3f3b323a +drivers/isdn/hisax/hisax_isac isac_init 0xb78976cd +drivers/isdn/hisax/hisax_isac isac_irq 0x2708beb0 +drivers/isdn/hisax/hisax_isac isac_setup 0x970773bf +drivers/isdn/hisax/hisax_isac isacsx_irq 0x63a57e20 +drivers/isdn/hisax/hisax_isac isacsx_setup 0x7d227fb8 +drivers/isdn/hisax/isdnhdlc isdnhdlc_bit_rev_tab 0xe82c3e32 +drivers/isdn/hisax/isdnhdlc isdnhdlc_decode 0x1a1afeef +drivers/isdn/hisax/isdnhdlc isdnhdlc_encode 0x52a6537c +drivers/isdn/hisax/isdnhdlc isdnhdlc_out_init 0x277685da +drivers/isdn/hisax/isdnhdlc isdnhdlc_rcv_init 0x1dc6a9fc +drivers/isdn/i4l/isdn isdn_ppp_register_compressor 0xb60d90ca +drivers/isdn/i4l/isdn isdn_ppp_unregister_compressor 0x1f0ab3f3 +drivers/isdn/i4l/isdn isdn_register_divert 0xb7757abb +drivers/isdn/i4l/isdn register_isdn 0x366e921f +drivers/isdn/misdn/mISDN_core mISDN_AddIE 0x348d27e3 +drivers/isdn/misdn/mISDN_core mISDN_AddvarIE 0xbf1b8ad6 +drivers/isdn/misdn/mISDN_core mISDN_ConnectIF 0x022b9174 +drivers/isdn/misdn/mISDN_core mISDN_DisConnectIF 0x19c35fe9 +drivers/isdn/misdn/mISDN_core mISDN_FsmAddTimer 0x7214e53f +drivers/isdn/misdn/mISDN_core mISDN_FsmChangeState 0x50c2230c +drivers/isdn/misdn/mISDN_core mISDN_FsmDelTimer 0x3010393f +drivers/isdn/misdn/mISDN_core mISDN_FsmEvent 0xd5145151 +drivers/isdn/misdn/mISDN_core mISDN_FsmFree 0x2348cc3c +drivers/isdn/misdn/mISDN_core mISDN_FsmInitTimer 0x172da300 +drivers/isdn/misdn/mISDN_core mISDN_FsmNew 0xf9e7832f +drivers/isdn/misdn/mISDN_core mISDN_FsmRestartTimer 0x50a5d950 +drivers/isdn/misdn/mISDN_core mISDN_HasProtocol 0x8970d9cc +drivers/isdn/misdn/mISDN_core mISDN_LogL3Msg 0xc07c7869 +drivers/isdn/misdn/mISDN_core mISDN_QuickHex 0x91b96ea6 +drivers/isdn/misdn/mISDN_core mISDN_RemoveUsedPID 0xd956d2e8 +drivers/isdn/misdn/mISDN_core mISDN_SetHandledPID 0xdcf8aa12 +drivers/isdn/misdn/mISDN_core mISDN_SetIF 0x49981ea3 +drivers/isdn/misdn/mISDN_core mISDN_alloc_l3msg 0xaf4979c3 +drivers/isdn/misdn/mISDN_core mISDN_bprotocol2pid 0xed673eae +drivers/isdn/misdn/mISDN_core mISDN_debug 0xff10c7d9 +drivers/isdn/misdn/mISDN_core mISDN_debugprint 0xbd284e8c +drivers/isdn/misdn/mISDN_core mISDN_free_bch 0x0ee30a2d +drivers/isdn/misdn/mISDN_core mISDN_free_dch 0x7207e69c +drivers/isdn/misdn/mISDN_core mISDN_get_down_layer 0xd1c0ae73 +drivers/isdn/misdn/mISDN_core mISDN_get_lowlayer 0x9f6faa8f +drivers/isdn/misdn/mISDN_core mISDN_get_protocol 0xa6368a48 +drivers/isdn/misdn/mISDN_core mISDN_get_up_layer 0xc6091c92 +drivers/isdn/misdn/mISDN_core mISDN_getrev 0x91f1a1b8 +drivers/isdn/misdn/mISDN_core mISDN_initQ931_info 0x45d57ad5 +drivers/isdn/misdn/mISDN_core mISDN_init_bch 0x95cffe0f +drivers/isdn/misdn/mISDN_core mISDN_init_dch 0x685cfcdb +drivers/isdn/misdn/mISDN_core mISDN_init_instance 0x7a0e04f0 +drivers/isdn/misdn/mISDN_core mISDN_l3_ie2pos 0x6a35c630 +drivers/isdn/misdn/mISDN_core mISDN_l3_pos2ie 0x31559777 +drivers/isdn/misdn/mISDN_core mISDN_layermask2layer 0x48cbe644 +drivers/isdn/misdn/mISDN_core mISDN_register 0x22e965db +drivers/isdn/misdn/mISDN_core mISDN_set_dchannel_pid 0xca03ed9e +drivers/isdn/misdn/mISDN_core mISDN_unregister 0x3bae2243 +drivers/isdn/misdn/mISDN_core vmISDN_debug 0x85718442 +drivers/isdn/misdn/mISDN_isac mISDN_ISAC_l1hw 0x5f2c5bc9 +drivers/isdn/misdn/mISDN_isac mISDN_clear_isac 0xd2344c19 +drivers/isdn/misdn/mISDN_isac mISDN_isac_free 0xb8716bd7 +drivers/isdn/misdn/mISDN_isac mISDN_isac_init 0x8fd819b1 +drivers/isdn/misdn/mISDN_isac mISDN_isac_interrupt 0xea545ce9 +drivers/md/dm-mirror dm_create_dirty_log 0x0a9c5a61 +drivers/md/dm-mirror dm_destroy_dirty_log 0x8b424811 +drivers/md/dm-mirror dm_register_dirty_log_type 0x3006a71e +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x2180e5c5 +drivers/md/dm-mod dm_get_device 0x620f1891 +drivers/md/dm-mod dm_get_mapinfo 0x3d1253d0 +drivers/md/dm-mod dm_io_async 0x1aee09e9 +drivers/md/dm-mod dm_io_async_bvec 0x1c82d160 +drivers/md/dm-mod dm_io_async_vm 0x2d25ce64 +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0xe0425467 +drivers/md/dm-mod dm_io_sync_bvec 0x0fdf0981 +drivers/md/dm-mod dm_io_sync_vm 0x2ec52043 +drivers/md/dm-mod dm_put_device 0x0344ba81 +drivers/md/dm-mod dm_register_target 0x84f17b56 +drivers/md/dm-mod dm_table_event 0xee3cc0b3 +drivers/md/dm-mod dm_table_flush_all 0xe3f64b27 +drivers/md/dm-mod dm_table_get 0xb364d483 +drivers/md/dm-mod dm_table_get_mode 0xecb40b66 +drivers/md/dm-mod dm_table_get_size 0xfaddf4ca +drivers/md/dm-mod dm_table_put 0x07293a02 +drivers/md/dm-mod dm_table_unplug_all 0xf99e913e +drivers/md/dm-mod dm_unregister_target 0xec396758 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x253d4268 +drivers/md/dm-mod kcopyd_client_create 0xd90e2a4b +drivers/md/dm-mod kcopyd_client_destroy 0x5ed954e9 +drivers/md/dm-mod kcopyd_copy 0x9eaedb19 +drivers/md/dm-multipath dm_pg_init_complete 0x369f80f5 +drivers/md/dm-multipath dm_register_hw_handler 0x30974781 +drivers/md/dm-multipath dm_register_path_selector 0xbbfa4f5f +drivers/md/dm-multipath dm_scsi_err_handler 0xf33e6b30 +drivers/md/dm-multipath dm_unregister_hw_handler 0x6606901f +drivers/md/dm-multipath dm_unregister_path_selector 0x2698f8bb +drivers/md/md-mod bitmap_close_sync 0xaa082e6d +drivers/md/md-mod bitmap_daemon_work 0x3ef7b2f7 +drivers/md/md-mod bitmap_end_sync 0xefe09701 +drivers/md/md-mod bitmap_endwrite 0x5bc8fc2b +drivers/md/md-mod bitmap_start_sync 0x4ab74b86 +drivers/md/md-mod bitmap_startwrite 0x9744da99 +drivers/md/md-mod bitmap_unplug 0x3d26e36d +drivers/md/md-mod md_check_recovery 0xd794ed71 +drivers/md/md-mod md_done_sync 0x4dfa982c +drivers/md/md-mod md_error 0x98992040 +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x34701f5a +drivers/md/md-mod md_unregister_thread 0xb61926cf +drivers/md/md-mod md_wakeup_thread 0xfb26d7c4 +drivers/md/md-mod md_write_end 0xcd50fa67 +drivers/md/md-mod md_write_start 0x35d90d51 +drivers/md/md-mod register_md_personality 0x51375604 +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x4740e7a3 +drivers/media/common/ir-common ir_codes_hauppauge_new 0x902a3cd2 +drivers/media/common/ir-common ir_codes_pinnacle 0xd3a0f048 +drivers/media/common/ir-common ir_codes_pixelview 0xfa177653 +drivers/media/common/ir-common ir_codes_rc5_tv 0xd9c7f010 +drivers/media/common/ir-common ir_codes_winfast 0x89cc1189 +drivers/media/common/ir-common ir_decode_biphase 0x43c89ef4 +drivers/media/common/ir-common ir_decode_pulsedistance 0x2456e513 +drivers/media/common/ir-common ir_dump_samples 0x6d6511e7 +drivers/media/common/ir-common ir_extract_bits 0x1cb148f5 +drivers/media/common/ir-common ir_input_init 0x8f66b418 +drivers/media/common/ir-common ir_input_keydown 0x7ded7539 +drivers/media/common/ir-common ir_input_nokey 0xb3eac4a1 +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x1bedd28f +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0x2f90e07a +drivers/media/common/saa7146 saa7146_i2c_transfer 0x58bda3a4 +drivers/media/common/saa7146 saa7146_pgtable_alloc 0xd76d15b5 +drivers/media/common/saa7146 saa7146_pgtable_build_single 0x9770ca3f +drivers/media/common/saa7146 saa7146_pgtable_free 0xc104b558 +drivers/media/common/saa7146 saa7146_register_extension 0xa8bdd109 +drivers/media/common/saa7146 saa7146_setgpio 0xe33aca18 +drivers/media/common/saa7146 saa7146_unregister_extension 0x43103c16 +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0x366156da +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0xa04ffff2 +drivers/media/common/saa7146_vv saa7146_register_device 0x15e93aac +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0x56c787e9 +drivers/media/common/saa7146_vv saa7146_start_preview 0xc29531a2 +drivers/media/common/saa7146_vv saa7146_stop_preview 0x07226bbb +drivers/media/common/saa7146_vv saa7146_unregister_device 0x51157664 +drivers/media/common/saa7146_vv saa7146_vv_init 0x12188e63 +drivers/media/common/saa7146_vv saa7146_vv_release 0xdd538ce8 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0xc31d0cf2 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0xaa27ea61 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0xce126adf +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0xe7c5ef49 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0x65543898 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0x02aab0c7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0x031a848e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0x8fab7cdf +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0x655ab431 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0x64201186 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0x0d962fd8 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0xb152ca9c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0x76cb11d3 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0x9b322837 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0xdf42329d +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0x9fcdcca2 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0x391065c5 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0x25b66b6c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0x32ab386d +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0x3f01a208 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0x48b36c70 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0xbdf5515e +drivers/media/dvb/bt8xx/bt878 bt878 0x0e373f9a +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0x135c98ed +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0x8c863268 +drivers/media/dvb/bt8xx/bt878 bt878_stop 0xdd19f31c +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0xd724cbbc +drivers/media/dvb/bt8xx/dst dst_check_sum 0xe94b8c9c +drivers/media/dvb/bt8xx/dst dst_comm_init 0x2bcc55ca +drivers/media/dvb/bt8xx/dst dst_command 0x2e5dc996 +drivers/media/dvb/bt8xx/dst dst_error_bailout 0xb1e2db42 +drivers/media/dvb/bt8xx/dst dst_error_recovery 0x85900fad +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0x20b3d359 +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0x2bc769c9 +drivers/media/dvb/bt8xx/dst dst_pio_disable 0xc66253f8 +drivers/media/dvb/bt8xx/dst dst_pio_enable 0x8c490d59 +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0xb9c2a0db +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0xf7fc2e34 +drivers/media/dvb/bt8xx/dst rdc_reset_state 0xd93561f0 +drivers/media/dvb/bt8xx/dst read_dst 0x76eab554 +drivers/media/dvb/bt8xx/dst write_dst 0x00525915 +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0x23fdd89f +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0x7d450e08 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0x966653ea +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0xb844bc88 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0x3505fdf2 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0xf53730cb +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0xbd0349a9 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0x017d7795 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0xa98de8ad +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0x29a4186e +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x96c6f1e7 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0x2aad9d6a +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0x2938cd43 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x80e3832d +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x36c8ea1f +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0xa9bffc3b +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0x0b23c80d +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0x66f2f2b7 +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0x873563aa +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0x739927ae +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0x6f33a1d1 +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0xadfb9ceb +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0xcc4a296f +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0x50216463 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0xafd7f3da +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0x65374ff9 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0x9150404f +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x89328af6 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0x886fe8cc +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0xdbd07720 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0xf926510d +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0x70b8bc17 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0x4295817f +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0xbebbaeb0 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0xcd5ebec2 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0x32d3f395 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0xf639c6a6 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0x632f3d77 +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0x8b49a23f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0xcb209c59 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0x7515ddaf +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0x38b46771 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0xc60b6480 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0x610f3fea +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0x344c821d +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0x16308cc3 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0x1ad6112c +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0xce85c67c +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0x2ac443b3 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0xd05e5387 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0xe20f3c3a +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0xd811552b +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0x2293b8f5 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0xef9dd967 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0xa9855299 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0xd4d3dddc +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0xd81df712 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0x65d7c756 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0xe2a9166e +drivers/media/dvb/frontends/at76c651 at76c651_attach 0xe4d0278c +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0x7787bb8a +drivers/media/dvb/frontends/cx22700 cx22700_attach 0x57107dd1 +drivers/media/dvb/frontends/cx22702 cx22702_attach 0x5f2ca4ee +drivers/media/dvb/frontends/cx24110 cx24110_attach 0xb5a8ac60 +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0x30602c02 +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0x46f0b716 +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0xe762d459 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x05f13eee +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0x35b2a84e +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0x25fa8892 +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0x5b554bf2 +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x02689b7f +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0x5b259391 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x7a0ed9bb +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0xbf98157e +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xd15aca20 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xfdd5e650 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x2a4f5718 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xc95be182 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x708f579e +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0xe39c77c8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0x12284643 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0xf1d4150d +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0xd5d22e56 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0xccc91f17 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xaddc7276 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x96cce305 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xcbbd68de +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x13856c44 +drivers/media/dvb/frontends/l64781 l64781_attach 0x47de68ec +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0x98b879a8 +drivers/media/dvb/frontends/mt312 mt312_attach 0xfcd10892 +drivers/media/dvb/frontends/mt312 vp310_attach 0x3f38c0fe +drivers/media/dvb/frontends/mt352 mt352_attach 0xa7e0f39c +drivers/media/dvb/frontends/mt352 mt352_write 0x6f5aa96f +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0x580a88ec +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x191d00b1 +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0xf74bb29b +drivers/media/dvb/frontends/or51132 or51132_attach 0x25f3a4e2 +drivers/media/dvb/frontends/or51211 or51211_attach 0x8ef12053 +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0x5c5e6477 +drivers/media/dvb/frontends/sp8870 sp8870_attach 0x5d9f2b8d +drivers/media/dvb/frontends/sp887x sp887x_attach 0xfa776a9b +drivers/media/dvb/frontends/stv0297 stv0297_attach 0x423b5f41 +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0x7496c886 +drivers/media/dvb/frontends/stv0299 stv0299_attach 0xd0d49080 +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0x8a77ed9d +drivers/media/dvb/frontends/tda10021 tda10021_attach 0x32530988 +drivers/media/dvb/frontends/tda1004x tda10045_attach 0xa56e3949 +drivers/media/dvb/frontends/tda1004x tda10046_attach 0xe39c89cd +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0x194d20cf +drivers/media/dvb/frontends/tda8083 tda8083_attach 0xa0cac7f8 +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0x9fcc9c75 +drivers/media/dvb/frontends/ves1820 ves1820_attach 0xfba9d181 +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0xfa1f56b2 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0x27211c02 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0x8294defd +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0x7e0e9a0f +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0x49fb1bc2 +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0x03d4a426 +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0x7320004a +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0x6cfb8e34 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0x219cd824 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0x0a5bd9ee +drivers/media/radio/miropcm20 aci_rds_cmd 0xde4156ce +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0x519f4e25 +drivers/media/video/btcx-risc btcx_riscmem_free 0x9e4fa493 +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x450eaeb9 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0x974d29b0 +drivers/media/video/bttv bttv_gpio_bits 0x42715df7 +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0xf7002492 +drivers/media/video/bttv bttv_gpio_read 0x50363b85 +drivers/media/video/bttv bttv_gpio_write 0x4ffaafef +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0xc5691f2a +drivers/media/video/bttv bttv_sub_register 0xfc735685 +drivers/media/video/bttv bttv_sub_unregister 0xcfe8f2f5 +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0x4cd3fd6c +drivers/media/video/cpia cpia_unregister_camera 0xd9ba651c +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0x825696c9 +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0x8a94e8a3 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0xf510c4c8 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0x7d4173b3 +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0x222d62c1 +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0xc4bbc5fc +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0x23d9032f +drivers/media/video/cx88/cx8802 cx8802_fini_common 0xf1d5e286 +drivers/media/video/cx88/cx8802 cx8802_init_common 0x528f6b10 +drivers/media/video/cx88/cx8802 cx8802_resume_common 0xaf5f9773 +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0x519d2848 +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x4e6954bf +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0x971cd4ef +drivers/media/video/cx88/cx88xx cx88_card_list 0xdd11d087 +drivers/media/video/cx88/cx88xx cx88_card_setup 0x0088e1f7 +drivers/media/video/cx88/cx88xx cx88_core_get 0xd495e95b +drivers/media/video/cx88/cx88xx cx88_core_irq 0xe119632f +drivers/media/video/cx88/cx88xx cx88_core_put 0x08ba4c20 +drivers/media/video/cx88/cx88xx cx88_free_buffer 0x5d3c426e +drivers/media/video/cx88/cx88xx cx88_get_stereo 0x5f58e0f8 +drivers/media/video/cx88/cx88xx cx88_i2c_init 0x5cb4a5db +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0x4302b38b +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x777b6d7f +drivers/media/video/cx88/cx88xx cx88_reset 0xe09a0b2d +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0xb69f06ca +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0x1be4243f +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0x72d3f9b9 +drivers/media/video/cx88/cx88xx cx88_set_scale 0x762c9f03 +drivers/media/video/cx88/cx88xx cx88_set_stereo 0x7ef3efb0 +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0x27b57bec +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0xab28a3dd +drivers/media/video/cx88/cx88xx cx88_shutdown 0xe1b5c6b4 +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0x946707aa +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0xa065b61b +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x9b140fff +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0x4c9b13f9 +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0x9672101e +drivers/media/video/cx88/cx88xx cx88_subids 0x6b626846 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0x5a9c5ed5 +drivers/media/video/cx88/cx88xx cx88_wakeup 0xcde12cd2 +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0xf1229acf +drivers/media/video/saa7134/saa7134 dmasound_exit 0x2d8a2973 +drivers/media/video/saa7134/saa7134 dmasound_init 0x7a7f67d4 +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0xe9a89f54 +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0xeaaa2a6f +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0xd8f16a4e +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0xa1fb9c8e +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0x860aeedf +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0x560d3f70 +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0xf4e39989 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0xafd3deb9 +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0x1a269a82 +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0x65acf78f +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0xd4468068 +drivers/media/video/tveeprom tveeprom_read 0xa46f2334 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0xb228989a +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x9c7de443 +drivers/media/video/v4l2-common v4l2_prio_check 0x2f639468 +drivers/media/video/v4l2-common v4l2_prio_close 0x95284709 +drivers/media/video/v4l2-common v4l2_prio_init 0xbecd2858 +drivers/media/video/v4l2-common v4l2_prio_max 0x1dcaa0c8 +drivers/media/video/v4l2-common v4l2_prio_open 0x76ba9a9a +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0x33b3b664 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0xe38cafdf +drivers/media/video/video-buf videobuf_dma_init 0x781a1e04 +drivers/media/video/video-buf videobuf_dma_init_kernel 0x8325fddc +drivers/media/video/video-buf videobuf_dma_init_overlay 0xb8023d52 +drivers/media/video/video-buf videobuf_dma_init_user 0xf8e1d6f7 +drivers/media/video/video-buf videobuf_dma_pci_map 0x63f0ad7d +drivers/media/video/video-buf videobuf_dma_pci_sync 0x55b54efa +drivers/media/video/video-buf videobuf_dma_pci_unmap 0x4433f022 +drivers/media/video/video-buf videobuf_dqbuf 0xa108dfd0 +drivers/media/video/video-buf videobuf_iolock 0xe137f544 +drivers/media/video/video-buf videobuf_mmap_free 0x2281b636 +drivers/media/video/video-buf videobuf_mmap_mapper 0x2205782f +drivers/media/video/video-buf videobuf_mmap_setup 0xb821b3ee +drivers/media/video/video-buf videobuf_next_field 0x20e0da75 +drivers/media/video/video-buf videobuf_poll_stream 0x4e46c37d +drivers/media/video/video-buf videobuf_qbuf 0xcd758bbe +drivers/media/video/video-buf videobuf_querybuf 0xa0f720da +drivers/media/video/video-buf videobuf_queue_cancel 0x489b64dd +drivers/media/video/video-buf videobuf_queue_init 0x70fbefd4 +drivers/media/video/video-buf videobuf_queue_is_busy 0x43e58d53 +drivers/media/video/video-buf videobuf_read_one 0x7c24548d +drivers/media/video/video-buf videobuf_read_start 0xac3a418b +drivers/media/video/video-buf videobuf_read_stop 0x851ad1a6 +drivers/media/video/video-buf videobuf_read_stream 0x513f28e5 +drivers/media/video/video-buf videobuf_reqbufs 0x014bec2d +drivers/media/video/video-buf videobuf_status 0x2960701f +drivers/media/video/video-buf videobuf_streamoff 0xf3689e45 +drivers/media/video/video-buf videobuf_streamon 0x16db9136 +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0xe8bde91f +drivers/media/video/video-buf videobuf_waiton 0x1ceca5f6 +drivers/media/video/video-buf-dvb videobuf_dvb_register 0xe8e405a1 +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0x83acd59d +drivers/media/video/videocodec videocodec_attach 0x0fc0f06e +drivers/media/video/videocodec videocodec_detach 0x9579f2e1 +drivers/media/video/videocodec videocodec_register 0x5a4d3037 +drivers/media/video/videocodec videocodec_unregister 0xc6431c99 +drivers/media/video/videodev video_devdata 0x0560a571 +drivers/media/video/videodev video_device_alloc 0x4d9c3174 +drivers/media/video/videodev video_device_release 0x80627ad0 +drivers/media/video/videodev video_exclusive_open 0xc2883677 +drivers/media/video/videodev video_exclusive_release 0xa4456ed9 +drivers/media/video/videodev video_register_device 0x065234ad +drivers/media/video/videodev video_unregister_device 0x35489ea9 +drivers/media/video/videodev video_usercopy 0x1026d59b +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0xe59cca20 +drivers/message/fusion/mptbase mpt_HardResetHandler 0x4c330c3f +drivers/message/fusion/mptbase mpt_add_sge 0x375d8126 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0xd7a55e7d +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0xb65082b8 +drivers/message/fusion/mptbase mpt_attach 0x28ee64f5 +drivers/message/fusion/mptbase mpt_config 0x7603bb58 +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0xfb000933 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0x5a454b77 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x19fe0773 +drivers/message/fusion/mptbase mpt_findImVolumes 0xd1995a53 +drivers/message/fusion/mptbase mpt_free_fw_memory 0x6c9dc36e +drivers/message/fusion/mptbase mpt_free_msg_frame 0x5990d82a +drivers/message/fusion/mptbase mpt_get_msg_frame 0x65062b03 +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0x33aaf08a +drivers/message/fusion/mptbase mpt_proc_root_dir 0xa4401228 +drivers/message/fusion/mptbase mpt_put_msg_frame 0xb6d54b3a +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x7c780ac0 +drivers/message/fusion/mptbase mpt_register 0x664c461c +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x3aab6ece +drivers/message/fusion/mptbase mpt_resume 0x5c650c4a +drivers/message/fusion/mptbase mpt_send_handshake_request 0x9eb090d6 +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0x88dc9b95 +drivers/message/fusion/mptbase mpt_toolbox 0xa1f83f8e +drivers/message/fusion/mptbase mpt_verify_adapter 0xf4365f61 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x3c1e135f +drivers/message/fusion/mptscsih mptscsih_abort 0x66868d53 +drivers/message/fusion/mptscsih mptscsih_bios_param 0x69629fcd +drivers/message/fusion/mptscsih mptscsih_bus_reset 0x8bdc851f +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x019e4086 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0xf10f5dd9 +drivers/message/fusion/mptscsih mptscsih_event_process 0x73527254 +drivers/message/fusion/mptscsih mptscsih_host_reset 0x644cd867 +drivers/message/fusion/mptscsih mptscsih_info 0xeb74f9ec +drivers/message/fusion/mptscsih mptscsih_io_done 0x384df4d6 +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x18b55a75 +drivers/message/fusion/mptscsih mptscsih_proc_info 0x13ae89ab +drivers/message/fusion/mptscsih mptscsih_qcmd 0x4df9d0df +drivers/message/fusion/mptscsih mptscsih_remove 0x7d8a1917 +drivers/message/fusion/mptscsih mptscsih_resume 0x915802da +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0xa02f2fa3 +drivers/message/fusion/mptscsih mptscsih_shutdown 0xae352d9c +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0x17efb5f3 +drivers/message/fusion/mptscsih mptscsih_slave_configure 0xcbd3ab13 +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x53eb180d +drivers/message/fusion/mptscsih mptscsih_suspend 0x9992b0a7 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x0eb31094 +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0xae0d305e +drivers/message/i2o/i2o_core i2o_device_claim_release 0x2216b9dc +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0xabc8679d +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x0755bc75 +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0xd04af697 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0x65a3b179 +drivers/message/i2o/i2o_core i2o_driver_register 0x10d4c00d +drivers/message/i2o/i2o_core i2o_driver_unregister 0xf2b06f08 +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0x3bb95e57 +drivers/message/i2o/i2o_core i2o_exec_lct_get 0xdaccbc4e +drivers/message/i2o/i2o_core i2o_find_iop 0x382e46f8 +drivers/message/i2o/i2o_core i2o_iop_find_device 0x9eb30a0d +drivers/message/i2o/i2o_core i2o_msg_get_wait 0xe6ad28b2 +drivers/message/i2o/i2o_core i2o_msg_nop 0x8dbfc8bd +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0x2a700766 +drivers/message/i2o/i2o_core i2o_parm_field_get 0xa298584a +drivers/message/i2o/i2o_core i2o_parm_issue 0x6d2bf334 +drivers/message/i2o/i2o_core i2o_parm_table_get 0x2a52603b +drivers/message/i2o/i2o_core i2o_status_get 0x7cfc9df1 +drivers/mmc/mmc_core __mmc_claim_host 0x613de064 +drivers/mmc/mmc_core mmc_add_host 0x91fcb56d +drivers/mmc/mmc_core mmc_alloc_host 0x52a14f21 +drivers/mmc/mmc_core mmc_cleanup_queue 0x1022cb2c +drivers/mmc/mmc_core mmc_detect_change 0x13b54c1f +drivers/mmc/mmc_core mmc_free_host 0xc4cc5b83 +drivers/mmc/mmc_core mmc_init_queue 0x494b7733 +drivers/mmc/mmc_core mmc_queue_resume 0xbf8bc626 +drivers/mmc/mmc_core mmc_queue_suspend 0x9f3d5917 +drivers/mmc/mmc_core mmc_register_driver 0xdbf82537 +drivers/mmc/mmc_core mmc_release_host 0x9136f644 +drivers/mmc/mmc_core mmc_remove_host 0x6a77d5f6 +drivers/mmc/mmc_core mmc_request_done 0x1c634d36 +drivers/mmc/mmc_core mmc_resume_host 0xe0abaee8 +drivers/mmc/mmc_core mmc_start_request 0xf51137f3 +drivers/mmc/mmc_core mmc_suspend_host 0x82c09ae3 +drivers/mmc/mmc_core mmc_unregister_driver 0xad625e2c +drivers/mmc/mmc_core mmc_wait_for_app_cmd 0x97b8857e +drivers/mmc/mmc_core mmc_wait_for_cmd 0x77e0259b +drivers/mmc/mmc_core mmc_wait_for_req 0xf1cceae7 +drivers/mtd/chips/cfi_util cfi_fixup 0xb7b26d54 +drivers/mtd/chips/cfi_util cfi_read_pri 0x98141520 +drivers/mtd/chips/cfi_util cfi_varsize_frob 0xb2dc00be +drivers/mtd/chips/chipreg do_map_probe 0xcae06d12 +drivers/mtd/chips/chipreg map_destroy 0x5623166f +drivers/mtd/chips/chipreg register_mtd_chip_driver 0xfd815743 +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0x545f793f +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0xc5e71ef5 +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0x03c9f40b +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0xde6f31c5 +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0x66d63d9a +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0xea3aef95 +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0x4de34e00 +drivers/mtd/mtdconcat mtd_concat_create 0x62d8babc +drivers/mtd/mtdconcat mtd_concat_destroy 0x81c5b6ea +drivers/mtd/mtdcore add_mtd_device 0x19fc4bd8 +drivers/mtd/mtdcore default_mtd_readv 0x689cbc65 +drivers/mtd/mtdcore default_mtd_writev 0x06df681d +drivers/mtd/mtdcore del_mtd_device 0x223bf2df +drivers/mtd/mtdcore get_mtd_device 0xb1ae7241 +drivers/mtd/mtdcore mtd_table 0x9363cd0b +drivers/mtd/mtdcore mtd_table_mutex 0x72beff16 +drivers/mtd/mtdcore put_mtd_device 0x03b537a7 +drivers/mtd/mtdcore register_mtd_user 0x4211b352 +drivers/mtd/mtdcore unregister_mtd_user 0xac97f053 +drivers/mtd/mtdpart add_mtd_partitions 0x572d5f0e +drivers/mtd/mtdpart del_mtd_partitions 0x9a3484ad +drivers/mtd/mtdpart deregister_mtd_parser 0x3f363160 +drivers/mtd/mtdpart mtd_erase_callback 0x2432d90b +drivers/mtd/mtdpart parse_mtd_partitions 0xd4fd7185 +drivers/mtd/mtdpart register_mtd_parser 0x396a9481 +drivers/mtd/nand/nand nand_default_bbt 0x15bc35b9 +drivers/mtd/nand/nand nand_release 0xee537d0b +drivers/mtd/nand/nand nand_scan 0x2a9cb7f0 +drivers/mtd/nand/nand nand_scan_bbt 0x74b013c0 +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0x81afe742 +drivers/mtd/onenand/onenand onenand_release 0xf86b496e +drivers/mtd/onenand/onenand onenand_scan 0x5d75c879 +drivers/mtd/onenand/onenand onenand_scan_bbt 0xa8391517 +drivers/net/8390 NS8390_init 0xb55bba14 +drivers/net/8390 __alloc_ei_netdev 0x3a3b8fad +drivers/net/8390 ei_close 0xf6ad9603 +drivers/net/8390 ei_interrupt 0x7862f4df +drivers/net/8390 ei_open 0x61ac9efb +drivers/net/8390 ei_poll 0x8c74aea0 +drivers/net/arcnet/arcnet alloc_arcdev 0x0262ddfb +drivers/net/arcnet/arcnet arc_bcast_proto 0x95493321 +drivers/net/arcnet/arcnet arc_proto_default 0x60014391 +drivers/net/arcnet/arcnet arc_proto_map 0x0bc4e903 +drivers/net/arcnet/arcnet arc_proto_null 0xbfb0c1f7 +drivers/net/arcnet/arcnet arc_raw_proto 0xdcc614ca +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0x83db44fe +drivers/net/arcnet/arcnet arcnet_unregister_proto 0xe36d93e6 +drivers/net/arcnet/com20020 com20020_check 0x9eb107a4 +drivers/net/arcnet/com20020 com20020_found 0x2fe2828c +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0xb9493d54 +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0x4e30f2f2 +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0x454b7b07 +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0x95947815 +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0xcaf28402 +drivers/net/irda/sir-dev irda_register_dongle 0x9ad75ff5 +drivers/net/irda/sir-dev irda_unregister_dongle 0x51c53972 +drivers/net/irda/sir-dev sirdev_get_instance 0x6de26dac +drivers/net/irda/sir-dev sirdev_put_instance 0xfa331f86 +drivers/net/irda/sir-dev sirdev_raw_read 0x86fde265 +drivers/net/irda/sir-dev sirdev_raw_write 0x895d8877 +drivers/net/irda/sir-dev sirdev_receive 0x4171df33 +drivers/net/irda/sir-dev sirdev_set_dongle 0x899555eb +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0xe445a6c5 +drivers/net/irda/sir-dev sirdev_write_complete 0xc5849bc4 +drivers/net/mii generic_mii_ioctl 0xa3699b0e +drivers/net/mii mii_check_gmii_support 0xf8729650 +drivers/net/mii mii_check_link 0xddaae8ca +drivers/net/mii mii_check_media 0xb45ecf0c +drivers/net/mii mii_ethtool_gset 0x3bfbe5a9 +drivers/net/mii mii_ethtool_sset 0x54a3ec57 +drivers/net/mii mii_link_ok 0x130b5ae8 +drivers/net/mii mii_nway_restart 0x58558d4c +drivers/net/phy/libphy genphy_config_advert 0xcac33635 +drivers/net/phy/libphy genphy_config_aneg 0x7258cc76 +drivers/net/phy/libphy genphy_read_status 0xaf3450dd +drivers/net/phy/libphy mdiobus_register 0x3baa89ad +drivers/net/phy/libphy mdiobus_unregister 0xc4d3d03d +drivers/net/phy/libphy phy_attach 0xd84e3d99 +drivers/net/phy/libphy phy_connect 0x89fa7a77 +drivers/net/phy/libphy phy_detach 0x1c4717b4 +drivers/net/phy/libphy phy_disable_interrupts 0xdef8bdd9 +drivers/net/phy/libphy phy_disconnect 0xc61d0dc8 +drivers/net/phy/libphy phy_driver_register 0x19444f19 +drivers/net/phy/libphy phy_driver_unregister 0x878e3e7b +drivers/net/phy/libphy phy_enable_interrupts 0x5e86e218 +drivers/net/phy/libphy phy_print_status 0x3dc6b180 +drivers/net/phy/libphy phy_read 0x02c10e9c +drivers/net/phy/libphy phy_sanitize_settings 0x9e8f1878 +drivers/net/phy/libphy phy_start 0xc6324400 +drivers/net/phy/libphy phy_start_aneg 0x1c14b0b8 +drivers/net/phy/libphy phy_start_interrupts 0xbd5c938e +drivers/net/phy/libphy phy_stop 0x3f14d499 +drivers/net/phy/libphy phy_stop_interrupts 0xb3c26410 +drivers/net/phy/libphy phy_write 0x4b7e57fb +drivers/net/ppp_generic ppp_channel_index 0xa1871301 +drivers/net/ppp_generic ppp_input 0x0dd5eff8 +drivers/net/ppp_generic ppp_input_error 0x09df766f +drivers/net/ppp_generic ppp_output_wakeup 0xd9ea16a1 +drivers/net/ppp_generic ppp_register_channel 0xda63df6f +drivers/net/ppp_generic ppp_register_compressor 0x34cb35ae +drivers/net/ppp_generic ppp_unit_number 0x4d425649 +drivers/net/ppp_generic ppp_unregister_channel 0x7b667af4 +drivers/net/ppp_generic ppp_unregister_compressor 0xd62ba4b0 +drivers/net/pppox pppox_unbind_sock 0x20f06d2e +drivers/net/pppox register_pppox_proto 0x46e9de29 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x76135e6c +drivers/net/slhc slhc_free 0x2894cfb0 +drivers/net/slhc slhc_init 0x2e0e927f +drivers/net/slhc slhc_remember 0x0bc55868 +drivers/net/slhc slhc_toss 0xf89e3455 +drivers/net/slhc slhc_uncompress 0x3bc1319e +drivers/net/sungem_phy mii_phy_probe 0x67ffa8bb +drivers/net/tokenring/tms380tr tms380tr_close 0xa7113634 +drivers/net/tokenring/tms380tr tms380tr_interrupt 0x3c7db227 +drivers/net/tokenring/tms380tr tms380tr_open 0x030c93ca +drivers/net/tokenring/tms380tr tms380tr_wait 0xd2328794 +drivers/net/tokenring/tms380tr tmsdev_init 0x9b75f113 +drivers/net/tokenring/tms380tr tmsdev_term 0xca64906e +drivers/net/wan/cycx_drv cycx_down 0x66a4c4e6 +drivers/net/wan/cycx_drv cycx_exec 0xfe7cd576 +drivers/net/wan/cycx_drv cycx_intr 0x38da4725 +drivers/net/wan/cycx_drv cycx_peek 0x968458a6 +drivers/net/wan/cycx_drv cycx_poke 0xb6f383de +drivers/net/wan/cycx_drv cycx_setup 0x62be23ea +drivers/net/wan/hdlc alloc_hdlcdev 0xfa69d35e +drivers/net/wan/hdlc hdlc_close 0xeb16ed8e +drivers/net/wan/hdlc hdlc_ioctl 0x55889fb2 +drivers/net/wan/hdlc hdlc_open 0xcfea7ca3 +drivers/net/wan/hdlc hdlc_set_carrier 0xda16ac82 +drivers/net/wan/hdlc register_hdlc_device 0xda1f650c +drivers/net/wan/hdlc unregister_hdlc_device 0xc79be19d +drivers/net/wan/syncppp sppp_attach 0x701b4a28 +drivers/net/wan/syncppp sppp_close 0x3581a78a +drivers/net/wan/syncppp sppp_detach 0x2565c8b1 +drivers/net/wan/syncppp sppp_do_ioctl 0x0fa475b8 +drivers/net/wan/syncppp sppp_open 0x48964a13 +drivers/net/wan/syncppp sppp_reopen 0xf19377f4 +drivers/net/wan/z85230 z8530_channel_load 0x4a064875 +drivers/net/wan/z85230 z8530_dead_port 0x10c78988 +drivers/net/wan/z85230 z8530_describe 0xcce253ae +drivers/net/wan/z85230 z8530_dma_sync 0x25b3506b +drivers/net/wan/z85230 z8530_get_stats 0x3035e6c0 +drivers/net/wan/z85230 z8530_hdlc_kilostream 0x5cd24d29 +drivers/net/wan/z85230 z8530_hdlc_kilostream_85230 0xe3d80064 +drivers/net/wan/z85230 z8530_init 0x506fb36e +drivers/net/wan/z85230 z8530_interrupt 0x33a2d438 +drivers/net/wan/z85230 z8530_nop 0x6ac3cf07 +drivers/net/wan/z85230 z8530_null_rx 0x11dffde6 +drivers/net/wan/z85230 z8530_queue_xmit 0x22025db9 +drivers/net/wan/z85230 z8530_shutdown 0x58d259f1 +drivers/net/wan/z85230 z8530_sync 0x578c50e5 +drivers/net/wan/z85230 z8530_sync_close 0xcd97ee85 +drivers/net/wan/z85230 z8530_sync_dma_close 0xa17acc18 +drivers/net/wan/z85230 z8530_sync_dma_open 0x646d32e2 +drivers/net/wan/z85230 z8530_sync_open 0x8fda42b6 +drivers/net/wan/z85230 z8530_sync_txdma_close 0x4fa2304e +drivers/net/wan/z85230 z8530_sync_txdma_open 0xb2f048e0 +drivers/net/wan/z85230 z8530_txdma_sync 0xc76f7c9e +drivers/net/wireless/airo init_airo_card 0xfe633b2b +drivers/net/wireless/airo reset_airo_card 0xa30d2223 +drivers/net/wireless/airo stop_airo_card 0x73ea5a1a +drivers/net/wireless/atmel atmel_open 0xc3a3c88b +drivers/net/wireless/atmel init_atmel_card 0xe9723a82 +drivers/net/wireless/atmel stop_atmel_card 0xdd97c0af +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0xf96a79d9 +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0x1ab77f4c +drivers/net/wireless/hostap/hostap hostap_80211_rx 0x4db29414 +drivers/net/wireless/hostap/hostap hostap_add_interface 0x8349f082 +drivers/net/wireless/hostap/hostap hostap_add_sta 0x055a51c7 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0xbf462698 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0x8e017c1c +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0x4f687c45 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0x82f69867 +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0xf64db630 +drivers/net/wireless/hostap/hostap hostap_get_porttype 0x470e3f09 +drivers/net/wireless/hostap/hostap hostap_get_stats 0x0d1728cc +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0xd54dace8 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x50e51a4e +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x133694a8 +drivers/net/wireless/hostap/hostap hostap_info_init 0x992341d4 +drivers/net/wireless/hostap/hostap hostap_info_process 0x097032bf +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0xc5d302ca +drivers/net/wireless/hostap/hostap hostap_init_data 0xb030f0ae +drivers/net/wireless/hostap/hostap hostap_init_proc 0xaa2d9c7a +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0xdae20775 +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x5bc0e4bd +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0x354b4051 +drivers/net/wireless/hostap/hostap hostap_proc 0x5f5cd00a +drivers/net/wireless/hostap/hostap hostap_remove_interface 0xf64ee712 +drivers/net/wireless/hostap/hostap hostap_remove_proc 0x843b0e90 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0xbf813f28 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0x26b90a18 +drivers/net/wireless/hostap/hostap hostap_set_encryption 0x41fd693a +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0xccdadcdd +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0xc599295e +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0x02e4b6d8 +drivers/net/wireless/hostap/hostap hostap_set_string 0x13f3b63f +drivers/net/wireless/hostap/hostap hostap_set_word 0x099a446f +drivers/net/wireless/hostap/hostap hostap_setup_dev 0xcb0edd64 +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x7795e794 +drivers/net/wireless/hostap/hostap hostap_update_rates 0x19d60595 +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x836087fe +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x99f78d65 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x688f751d +drivers/net/wireless/orinoco __orinoco_down 0x10aa845a +drivers/net/wireless/orinoco __orinoco_up 0x7263e222 +drivers/net/wireless/orinoco alloc_orinocodev 0x40f89390 +drivers/net/wireless/orinoco free_orinocodev 0x40541c4f +drivers/net/wireless/orinoco orinoco_interrupt 0x36feb7f6 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x740f11b5 +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xa3a677c0 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0xef6d451c +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0x73be9b80 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0xd2e4c470 +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0x6b504e9a +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x08ed644f +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0x015dc3f4 +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0xb61235b5 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0x611ea46e +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0xa1ae77a3 +drivers/net/wireless/prism54_softmac/islsm register_islsm 0xca38bc99 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0x7ca15c2d +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0x16eaf39a +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0x01c417ab +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0xb36820d0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0xb04696f3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0xafa940bf +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x9773d7cd +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0x1dfca314 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0x1fd8b8f8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0xc623eea6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xd0fdbf18 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0xed42789a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0xdcc81987 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0xa45ef20b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0xeaa2d2c3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0xf1a22c3d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0x1d8b33e0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0x7b60c0b0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x06575020 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0x1237c2e3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x4992b445 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0xe3d39e5b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0xa92c79ee +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0xb8365fb4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0xde580a44 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0xbca4bf13 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0x538631f4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x95947b3e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x7bb3e63a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0x0d45f52f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0x0d0f0c86 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0x263c9d7b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0xd8d722a3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0x8fabc8db +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0x91661a22 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0x7e4494c5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x2a4024a5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0x2087501e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0xdf999b1e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x20cda9b7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0xe6762184 +drivers/parport/parport parport_announce_port 0x24e9250a +drivers/parport/parport parport_claim 0x7f305944 +drivers/parport/parport parport_claim_or_block 0x35be0155 +drivers/parport/parport parport_find_base 0x818c86fe +drivers/parport/parport parport_find_number 0x702ac477 +drivers/parport/parport parport_get_port 0x37a6d36f +drivers/parport/parport parport_ieee1284_ecp_read_data 0xf1bb8010 +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xe999c42e +drivers/parport/parport parport_ieee1284_ecp_write_data 0x34a7b960 +drivers/parport/parport parport_ieee1284_epp_read_addr 0x5d86a827 +drivers/parport/parport parport_ieee1284_epp_read_data 0x56aaaff3 +drivers/parport/parport parport_ieee1284_epp_write_addr 0xa01750c9 +drivers/parport/parport parport_ieee1284_epp_write_data 0x7d292d87 +drivers/parport/parport parport_ieee1284_interrupt 0xb3ec0c3b +drivers/parport/parport parport_ieee1284_read_byte 0x01f215b1 +drivers/parport/parport parport_ieee1284_read_nibble 0x97b45e06 +drivers/parport/parport parport_ieee1284_write_compat 0x6219fb8a +drivers/parport/parport parport_negotiate 0x489999d5 +drivers/parport/parport parport_put_port 0xa76fa0d4 +drivers/parport/parport parport_read 0x6e0538b2 +drivers/parport/parport parport_register_device 0x7aa6ad1c +drivers/parport/parport parport_register_driver 0x814f084d +drivers/parport/parport parport_register_port 0x565068c9 +drivers/parport/parport parport_release 0xd54368be +drivers/parport/parport parport_remove_port 0xf27b1f11 +drivers/parport/parport parport_set_timeout 0x277af6ad +drivers/parport/parport parport_unregister_device 0xbf5e7df0 +drivers/parport/parport parport_unregister_driver 0x252d02eb +drivers/parport/parport parport_wait_event 0x827400e0 +drivers/parport/parport parport_wait_peripheral 0xa5e6e269 +drivers/parport/parport parport_write 0x8efd96b7 +drivers/parport/parport_pc parport_pc_probe_port 0xbb10c097 +drivers/parport/parport_pc parport_pc_unregister_port 0x82253fff +drivers/pci/hotplug/acpiphp acpiphp_register_attention 0xf315064a +drivers/pci/hotplug/acpiphp acpiphp_unregister_attention 0xd14e8f9a +drivers/pci/hotplug/pci_hotplug cpci_hp_register_bus 0x24b1e699 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_controller 0x3349b75b +drivers/pci/hotplug/pci_hotplug cpci_hp_start 0x6a8441be +drivers/pci/hotplug/pci_hotplug cpci_hp_stop 0x94ef4d05 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_bus 0x3be18867 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_controller 0x5e62fe85 +drivers/pci/hotplug/pci_hotplug pci_hotplug_slots_subsys 0x494f2a53 +drivers/pci/hotplug/pci_hotplug pci_hp_change_slot_info 0xe0e45154 +drivers/pci/hotplug/pci_hotplug pci_hp_deregister 0x2b1406a8 +drivers/pci/hotplug/pci_hotplug pci_hp_register 0x550dad1d +drivers/pcmcia/pcmcia cs_error 0xeb357bca +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0x0bfc2fdf +drivers/pcmcia/pcmcia pcmcia_deregister_client 0x63806792 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0x88d28017 +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0x74afaef3 +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0xf5920645 +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0xc4f88788 +drivers/pcmcia/pcmcia pcmcia_get_status 0xb97d9996 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0x1c8cf0d0 +drivers/pcmcia/pcmcia pcmcia_get_window 0xb3e22192 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0x70330eab +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x0f1c6db4 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0x803d3121 +drivers/pcmcia/pcmcia pcmcia_register_client 0x2c11bf6c +drivers/pcmcia/pcmcia pcmcia_register_driver 0x6a8c8c00 +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x22348928 +drivers/pcmcia/pcmcia pcmcia_release_io 0x9bb33419 +drivers/pcmcia/pcmcia pcmcia_release_irq 0x8d9463f2 +drivers/pcmcia/pcmcia pcmcia_release_window 0x3127501d +drivers/pcmcia/pcmcia pcmcia_request_configuration 0xf5146e48 +drivers/pcmcia/pcmcia pcmcia_request_io 0x9a2d84fd +drivers/pcmcia/pcmcia pcmcia_request_irq 0x7ce7e708 +drivers/pcmcia/pcmcia pcmcia_request_window 0x18122f5e +drivers/pcmcia/pcmcia pcmcia_reset_card 0xbe97128e +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0x74b00692 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0x5696b24d +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0xd49cb0bb +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x07ea2340 +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0xe3ccc5c5 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0x122e2677 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0x7bdc6de1 +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0x781f6718 +drivers/pcmcia/pcmcia_core pccard_reset_card 0xa51b4e5c +drivers/pcmcia/pcmcia_core pccard_static_ops 0xc005ffcb +drivers/pcmcia/pcmcia_core pccard_validate_cis 0x2c37eb54 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0xb44c638b +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0x91954bf7 +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0x07f68c25 +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0xb0ddc290 +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0xf1c2129c +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0xa750f72f +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0xdbb38145 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0x62d1fe8f +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0xe7f29ee9 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xea922195 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0x9cee7309 +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0xb52ae242 +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x29dcdc27 +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0xd1d6466c +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0x0ffd3710 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0xc793f2d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0x0ef543c3 +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0x09c2191c +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x82d2f99b +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0x5748ff57 +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0xbd6eb6cd +drivers/pcmcia/pcmcia_core release_cis_mem 0x3bc291de +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0x4a3f8720 +drivers/scsi/53c700 NCR_700_detect 0x859a441b +drivers/scsi/53c700 NCR_700_intr 0xe19cbc56 +drivers/scsi/53c700 NCR_700_release 0x770e0c8d +drivers/scsi/libata __sata_phy_reset 0x5f69aa47 +drivers/scsi/libata ata_acpi_bus_register 0x4eb7c257 +drivers/scsi/libata ata_acpi_exec_tfs 0xb9f1e839 +drivers/scsi/libata ata_acpi_get_timing 0x168ecd52 +drivers/scsi/libata ata_acpi_push_id 0x9d02a07a +drivers/scsi/libata ata_acpi_push_timing 0x2690513e +drivers/scsi/libata ata_altstatus 0xfefb585b +drivers/scsi/libata ata_bmdma_irq_clear 0x64d30df9 +drivers/scsi/libata ata_bmdma_setup 0x10ac50e5 +drivers/scsi/libata ata_bmdma_start 0x54fd9fda +drivers/scsi/libata ata_bmdma_status 0x21b4d2d2 +drivers/scsi/libata ata_bmdma_stop 0xdd9f8981 +drivers/scsi/libata ata_bus_probe 0xb3dd6ace +drivers/scsi/libata ata_bus_reset 0x56e602db +drivers/scsi/libata ata_check_status 0xee285664 +drivers/scsi/libata ata_dev_classify 0x0531dcb8 +drivers/scsi/libata ata_dev_config 0x50fd743f +drivers/scsi/libata ata_dev_id_string 0x07d45a53 +drivers/scsi/libata ata_device_add 0x6b52bd11 +drivers/scsi/libata ata_device_resume 0x986529a6 +drivers/scsi/libata ata_device_shutdown 0xf5a10c8c +drivers/scsi/libata ata_device_suspend 0x67863c5c +drivers/scsi/libata ata_eng_timeout 0xc7a3816f +drivers/scsi/libata ata_exec_command 0x0ad29b03 +drivers/scsi/libata ata_host_intr 0x6e0dc025 +drivers/scsi/libata ata_host_set_remove 0x08525a8d +drivers/scsi/libata ata_host_stop 0xbee4e764 +drivers/scsi/libata ata_hotplug_plug 0x3dd200c1 +drivers/scsi/libata ata_hotplug_unplug 0xb80b741a +drivers/scsi/libata ata_interrupt 0x12058575 +drivers/scsi/libata ata_noop_dev_select 0x0bba60fd +drivers/scsi/libata ata_pci_device_resume 0x801d8b67 +drivers/scsi/libata ata_pci_device_suspend 0xd0d77fe5 +drivers/scsi/libata ata_pci_host_stop 0x30ca0d73 +drivers/scsi/libata ata_pci_init_native_mode 0x9ee336d3 +drivers/scsi/libata ata_pci_init_one 0x570954c1 +drivers/scsi/libata ata_pci_remove_one 0xb0a0db60 +drivers/scsi/libata ata_port_disable 0x13072718 +drivers/scsi/libata ata_port_probe 0xddedc52c +drivers/scsi/libata ata_port_start 0xddc796b5 +drivers/scsi/libata ata_port_stop 0xd214905e +drivers/scsi/libata ata_qc_complete 0xb0622670 +drivers/scsi/libata ata_qc_issue_prot 0xa81b65a6 +drivers/scsi/libata ata_qc_prep 0xc413fadb +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0x08228a23 +drivers/scsi/libata ata_scsi_device_shutdown 0x970f8fe6 +drivers/scsi/libata ata_scsi_device_suspend 0xc08a1833 +drivers/scsi/libata ata_scsi_error 0xe3ae55a1 +drivers/scsi/libata ata_scsi_ioctl 0x1c4577e0 +drivers/scsi/libata ata_scsi_queuecmd 0xbdbea675 +drivers/scsi/libata ata_scsi_release 0xd1e6f6f4 +drivers/scsi/libata ata_scsi_simulate 0xf5decd8f +drivers/scsi/libata ata_scsi_slave_config 0x69b2998d +drivers/scsi/libata ata_sg_init 0x04dfaf0b +drivers/scsi/libata ata_sg_init_one 0x9bd660ea +drivers/scsi/libata ata_std_bios_param 0xbe781fc2 +drivers/scsi/libata ata_std_dev_select 0x69ddb473 +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0x0067df75 +drivers/scsi/libata ata_tf_load 0x4c761377 +drivers/scsi/libata ata_tf_read 0x0d153ee8 +drivers/scsi/libata ata_tf_to_fis 0x28177a3f +drivers/scsi/libata ata_timing_compute 0xf6f94640 +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata do_drive_get_GTF 0xeea86579 +drivers/scsi/libata do_drive_set_taskfiles 0x90ff4077 +drivers/scsi/libata pci_test_config_bits 0x91d5e72f +drivers/scsi/libata sata_phy_reset 0x4d978b90 +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x46521076 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0xe29aa1ff +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0xbe6a31d9 +drivers/scsi/qlogicfas408 qlogicfas408_abort 0x26f60a34 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0xafedb56f +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0x617ee78b +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0xc43f9c3f +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x97bdeb7b +drivers/scsi/qlogicfas408 qlogicfas408_info 0x93d281ef +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0x6d5c3e51 +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0x76c831dd +drivers/scsi/raid_class raid_class_release 0x00afc4c8 +drivers/scsi/raid_class raid_component_add 0xabec27e0 +drivers/scsi/sas/sas_class sas_register_ha 0x9b5b6202 +drivers/scsi/sas/sas_class sas_unregister_ha 0x0aa15ead +drivers/scsi/scsi_mod __scsi_add_device 0x36f8c765 +drivers/scsi/scsi_mod __scsi_device_lookup 0xa6324c36 +drivers/scsi/scsi_mod __scsi_device_lookup_by_target 0xa3f2afb8 +drivers/scsi/scsi_mod __scsi_iterate_devices 0x09d02007 +drivers/scsi/scsi_mod __scsi_print_command 0xfef96e23 +drivers/scsi/scsi_mod __scsi_print_sense 0x69d38ed9 +drivers/scsi/scsi_mod int_to_scsilun 0xea10212a +drivers/scsi/scsi_mod scsi_add_device 0x164fbea5 +drivers/scsi/scsi_mod scsi_add_host 0x385d7842 +drivers/scsi/scsi_mod scsi_adjust_queue_depth 0xb02ba45c +drivers/scsi/scsi_mod scsi_allocate_request 0xc8c97a19 +drivers/scsi/scsi_mod scsi_bios_ptable 0xa9804dc0 +drivers/scsi/scsi_mod scsi_block_requests 0xe11d87b3 +drivers/scsi/scsi_mod scsi_block_when_processing_errors 0x1cb5caea +drivers/scsi/scsi_mod scsi_bus_type 0xb4e8c919 +drivers/scsi/scsi_mod scsi_calculate_bounce_limit 0x3b00c4db +drivers/scsi/scsi_mod scsi_command_normalize_sense 0xc6d93f35 +drivers/scsi/scsi_mod scsi_device_cancel 0x4657b90c +drivers/scsi/scsi_mod scsi_device_get 0x7ea5a324 +drivers/scsi/scsi_mod scsi_device_lookup 0x571c84dd +drivers/scsi/scsi_mod scsi_device_lookup_by_target 0x86661da6 +drivers/scsi/scsi_mod scsi_device_put 0x29d3f3eb +drivers/scsi/scsi_mod scsi_device_quiesce 0x0c5e6a4c +drivers/scsi/scsi_mod scsi_device_resume 0xfd83c106 +drivers/scsi/scsi_mod scsi_device_set_state 0x0a6ca1de +drivers/scsi/scsi_mod scsi_device_types 0x6df713c9 +drivers/scsi/scsi_mod scsi_do_req 0xac42077a +drivers/scsi/scsi_mod scsi_execute 0x35041175 +drivers/scsi/scsi_mod scsi_execute_req 0xa382afa0 +drivers/scsi/scsi_mod scsi_extd_sense_format 0x11267875 +drivers/scsi/scsi_mod scsi_finish_command 0x8b14079b +drivers/scsi/scsi_mod scsi_flush_work 0x37e1314e +drivers/scsi/scsi_mod scsi_free_host_dev 0xcec2f7d6 +drivers/scsi/scsi_mod scsi_get_command 0x00830f5d +drivers/scsi/scsi_mod scsi_get_host_dev 0x12e57b5e +drivers/scsi/scsi_mod scsi_get_sense_info_fld 0x796fc5ce +drivers/scsi/scsi_mod scsi_host_alloc 0x313988c3 +drivers/scsi/scsi_mod scsi_host_get 0x4d6390c5 +drivers/scsi/scsi_mod scsi_host_lookup 0x872022e6 +drivers/scsi/scsi_mod scsi_host_put 0x901fb12d +drivers/scsi/scsi_mod scsi_host_set_state 0xa03c6e81 +drivers/scsi/scsi_mod scsi_internal_device_block 0xed8cb47f +drivers/scsi/scsi_mod scsi_internal_device_unblock 0xb51bf3ce +drivers/scsi/scsi_mod scsi_io_completion 0xdcccf447 +drivers/scsi/scsi_mod scsi_ioctl 0x62bac0b1 +drivers/scsi/scsi_mod scsi_ioctl_send_command 0xb9133510 +drivers/scsi/scsi_mod scsi_is_host_device 0xcaef2f64 +drivers/scsi/scsi_mod scsi_is_sdev_device 0x49f8976b +drivers/scsi/scsi_mod scsi_is_target_device 0x58cfb75a +drivers/scsi/scsi_mod scsi_logging_level 0xaf3dd7dc +drivers/scsi/scsi_mod scsi_mode_sense 0x59f96373 +drivers/scsi/scsi_mod scsi_nonblockable_ioctl 0x97a1ce6e +drivers/scsi/scsi_mod scsi_normalize_sense 0x0c65e73c +drivers/scsi/scsi_mod scsi_partsize 0x4afe9a77 +drivers/scsi/scsi_mod scsi_print_command 0x6437eb82 +drivers/scsi/scsi_mod scsi_print_msg 0x67f88938 +drivers/scsi/scsi_mod scsi_print_req_sense 0x648f5641 +drivers/scsi/scsi_mod scsi_print_sense 0xebac4531 +drivers/scsi/scsi_mod scsi_print_sense_hdr 0xca5dbc50 +drivers/scsi/scsi_mod scsi_print_status 0x9cfd56c5 +drivers/scsi/scsi_mod scsi_put_command 0x66d34731 +drivers/scsi/scsi_mod scsi_queue_work 0x8b3ea95d +drivers/scsi/scsi_mod scsi_register 0xfd58f6d8 +drivers/scsi/scsi_mod scsi_register_driver 0x5b53f425 +drivers/scsi/scsi_mod scsi_register_interface 0xb0963f08 +drivers/scsi/scsi_mod scsi_release_request 0x5de4ac3e +drivers/scsi/scsi_mod scsi_remove_device 0xce5f11a3 +drivers/scsi/scsi_mod scsi_remove_host 0x88f9b740 +drivers/scsi/scsi_mod scsi_remove_target 0x68e0fe9d +drivers/scsi/scsi_mod scsi_report_bus_reset 0xc1585db3 +drivers/scsi/scsi_mod scsi_report_device_reset 0x48b5c8ca +drivers/scsi/scsi_mod scsi_request_normalize_sense 0x218d0129 +drivers/scsi/scsi_mod scsi_rescan_device 0xae6c31a7 +drivers/scsi/scsi_mod scsi_reset_provider 0xa2aa6c5f +drivers/scsi/scsi_mod scsi_scan_host 0x22b261a8 +drivers/scsi/scsi_mod scsi_scan_target 0xd4d40d0f +drivers/scsi/scsi_mod scsi_sense_desc_find 0x2b0ba2b0 +drivers/scsi/scsi_mod scsi_sense_key_string 0x96cd2b04 +drivers/scsi/scsi_mod scsi_set_medium_removal 0xc04f63cf +drivers/scsi/scsi_mod scsi_setup_blk_pc_cmnd 0xdd540599 +drivers/scsi/scsi_mod scsi_target_block 0xc6a893bf +drivers/scsi/scsi_mod scsi_target_quiesce 0x93fe178c +drivers/scsi/scsi_mod scsi_target_resume 0xe98becce +drivers/scsi/scsi_mod scsi_target_unblock 0x9e2425b1 +drivers/scsi/scsi_mod scsi_test_unit_ready 0x4cf4e984 +drivers/scsi/scsi_mod scsi_track_queue_full 0xca18db75 +drivers/scsi/scsi_mod scsi_unblock_requests 0x382508db +drivers/scsi/scsi_mod scsi_unregister 0xf3ee1844 +drivers/scsi/scsi_mod scsicam_bios_param 0x480a0667 +drivers/scsi/scsi_mod starget_for_each_device 0x192aaacb +drivers/scsi/scsi_transport_fc fc_attach_transport 0xc1b514f1 +drivers/scsi/scsi_transport_fc fc_release_transport 0x92433499 +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x2f8d9028 +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0xd1591f3d +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x949be437 +drivers/scsi/scsi_transport_fc fc_remove_host 0xfb620a15 +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0x9343089e +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x8533ba57 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x51b4b159 +drivers/scsi/scsi_transport_sas sas_attach_transport 0x04ed350a +drivers/scsi/scsi_transport_sas sas_phy_add 0xaf96b905 +drivers/scsi/scsi_transport_sas sas_phy_alloc 0x9d4d1b57 +drivers/scsi/scsi_transport_sas sas_phy_delete 0xa32fde11 +drivers/scsi/scsi_transport_sas sas_phy_free 0x8d59aac9 +drivers/scsi/scsi_transport_sas sas_release_transport 0x5b299dea +drivers/scsi/scsi_transport_sas sas_remove_host 0xa48b113f +drivers/scsi/scsi_transport_sas sas_rphy_add 0xd676ed64 +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x915b6a07 +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x85ba4d0e +drivers/scsi/scsi_transport_sas sas_rphy_free 0xdcc764fb +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0xaf7ab85f +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0x964dd6a4 +drivers/scsi/scsi_transport_spi spi_attach_transport 0x3115399c +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0x2937f03c +drivers/scsi/scsi_transport_spi spi_dv_device 0xcef89aa3 +drivers/scsi/scsi_transport_spi spi_release_transport 0x5d188064 +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0xc5cd0b74 +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x6dc12107 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0x9f652efc +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x6983b65c +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0xc3fbef5d +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0xc82dd5a1 +drivers/telephony/ixj ixj_pcmcia_probe 0x806d40b2 +drivers/telephony/phonedev phone_register_device 0xb4001b4e +drivers/telephony/phonedev phone_unregister_device 0x4bdb907c +drivers/usb/atm/usbatm usbatm_usb_disconnect 0x520f16ab +drivers/usb/atm/usbatm usbatm_usb_probe 0x8846219f +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x633e8102 +drivers/usb/core/usbcore usb_alloc_dev 0x086d2a2b +drivers/usb/core/usbcore usb_alloc_urb 0xd0373ac6 +drivers/usb/core/usbcore usb_altnum_to_altsetting 0x89567cd1 +drivers/usb/core/usbcore usb_buffer_alloc 0x673cb58b +drivers/usb/core/usbcore usb_buffer_free 0x71715840 +drivers/usb/core/usbcore usb_buffer_map_sg 0x99980d87 +drivers/usb/core/usbcore usb_buffer_unmap_sg 0x363c5c27 +drivers/usb/core/usbcore usb_bulk_msg 0xa31a32aa +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0xfa3f0918 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0xcf518909 +drivers/usb/core/usbcore usb_claim_bandwidth 0x386e7710 +drivers/usb/core/usbcore usb_clear_halt 0x81c31f09 +drivers/usb/core/usbcore usb_control_msg 0xd7bdda61 +drivers/usb/core/usbcore usb_create_hcd 0xef9723e1 +drivers/usb/core/usbcore usb_deregister 0x07d9b176 +drivers/usb/core/usbcore usb_deregister_dev 0x5cc26d4f +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0x44f57068 +drivers/usb/core/usbcore usb_driver_claim_interface 0x5d0fe771 +drivers/usb/core/usbcore usb_driver_release_interface 0x68489b43 +drivers/usb/core/usbcore usb_find_device 0x59a1f4f6 +drivers/usb/core/usbcore usb_find_interface 0x530d653b +drivers/usb/core/usbcore usb_free_urb 0x0b845d26 +drivers/usb/core/usbcore usb_get_current_frame_number 0xae175bd2 +drivers/usb/core/usbcore usb_get_descriptor 0x20bbd3c4 +drivers/usb/core/usbcore usb_get_dev 0xc00934c3 +drivers/usb/core/usbcore usb_get_intf 0x4f684bd3 +drivers/usb/core/usbcore usb_get_status 0x8884a699 +drivers/usb/core/usbcore usb_get_string 0x3f3e7eb8 +drivers/usb/core/usbcore usb_get_urb 0x73ee2139 +drivers/usb/core/usbcore usb_hc_died 0x5548d53a +drivers/usb/core/usbcore usb_hcd_giveback_urb 0x53f231fe +drivers/usb/core/usbcore usb_hcd_pci_probe 0xc63f401e +drivers/usb/core/usbcore usb_hcd_pci_remove 0x0e886374 +drivers/usb/core/usbcore usb_hcd_pci_resume 0x5db95ab2 +drivers/usb/core/usbcore usb_hcd_pci_suspend 0x1e1e1be4 +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0x5c0d2894 +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0x976fa5ee +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0xac7ea095 +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0xe22681f5 +drivers/usb/core/usbcore usb_ifnum_to_if 0x718861e1 +drivers/usb/core/usbcore usb_init_urb 0xef3d7668 +drivers/usb/core/usbcore usb_kill_urb 0xa5f83880 +drivers/usb/core/usbcore usb_lock_device 0x7915617c +drivers/usb/core/usbcore usb_lock_device_for_reset 0xb0a3f255 +drivers/usb/core/usbcore usb_match_id 0x74ac2c0b +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0x89f85997 +drivers/usb/core/usbcore usb_put_dev 0x20b388c5 +drivers/usb/core/usbcore usb_put_hcd 0x646b243f +drivers/usb/core/usbcore usb_put_intf 0xc9acef12 +drivers/usb/core/usbcore usb_register 0xf16c8500 +drivers/usb/core/usbcore usb_register_dev 0xcffc9776 +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x3c3604fe +drivers/usb/core/usbcore usb_remove_hcd 0xc610f2c4 +drivers/usb/core/usbcore usb_reset_configuration 0x47f73511 +drivers/usb/core/usbcore usb_reset_device 0x1869b1e9 +drivers/usb/core/usbcore usb_set_device_state 0xa2ad36f8 +drivers/usb/core/usbcore usb_set_interface 0xe4b44a14 +drivers/usb/core/usbcore usb_sg_cancel 0xd128ae2d +drivers/usb/core/usbcore usb_sg_init 0x5e6cfe2c +drivers/usb/core/usbcore usb_sg_wait 0xe6da69c1 +drivers/usb/core/usbcore usb_string 0x8cab655a +drivers/usb/core/usbcore usb_submit_urb 0x57f0155c +drivers/usb/core/usbcore usb_trylock_device 0xcb04ddc6 +drivers/usb/core/usbcore usb_unlink_urb 0x7e848c95 +drivers/usb/core/usbcore usb_unlock_device 0x7a636e36 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/gadget/net2280 net2280_set_fifo_mode 0x67eba6dc +drivers/usb/gadget/net2280 usb_gadget_register_driver 0xff7fd052 +drivers/usb/gadget/net2280 usb_gadget_unregister_driver 0xcae59280 +drivers/usb/host/sl811-hcd sl811h_driver 0x1727aed8 +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0x426881b5 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x62ee5d03 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0xcb41b1a0 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0x33364960 +drivers/usb/media/usbvideo RingQueue_Dequeue 0xc62c3f97 +drivers/usb/media/usbvideo RingQueue_Enqueue 0x079325e3 +drivers/usb/media/usbvideo RingQueue_Flush 0x99ede02c +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0xa104e316 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0x8e4523c9 +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x93e22923 +drivers/usb/media/usbvideo usbvideo_Deregister 0x1f0ecf10 +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0xd559a060 +drivers/usb/media/usbvideo usbvideo_TestPattern 0xb08c157f +drivers/usb/media/usbvideo usbvideo_register 0xb3b97888 +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0xeb502065 +drivers/usb/media/w9968cf w9968cf_vppmod_register 0x90e14025 +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0x443bf2a9 +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0x935c5a09 +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0x06a6c468 +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0x4a06cd4c +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0xf193ec98 +drivers/usb/net/usbnet usbnet_defer_kevent 0x2232ae02 +drivers/usb/net/usbnet usbnet_disconnect 0x73da7215 +drivers/usb/net/usbnet usbnet_get_drvinfo 0x7cd8cfa0 +drivers/usb/net/usbnet usbnet_get_endpoints 0x345552cd +drivers/usb/net/usbnet usbnet_get_msglevel 0x717779e9 +drivers/usb/net/usbnet usbnet_probe 0x9f0b3f7a +drivers/usb/net/usbnet usbnet_resume 0x9787fd3b +drivers/usb/net/usbnet usbnet_set_msglevel 0x901e40ef +drivers/usb/net/usbnet usbnet_skb_return 0xf612f261 +drivers/usb/net/usbnet usbnet_suspend 0x3c19ed54 +drivers/usb/serial/usbserial ezusb_set_reset 0xce52372a +drivers/usb/serial/usbserial ezusb_writememory 0x15f4453b +drivers/usb/serial/usbserial usb_serial_deregister 0x54ab3fd2 +drivers/usb/serial/usbserial usb_serial_disconnect 0x76f9d3ea +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x3edff2d6 +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0xe694c7f8 +drivers/usb/serial/usbserial usb_serial_register 0x8e8e61a7 +drivers/video/backlight/backlight backlight_device_register 0xa24dad56 +drivers/video/backlight/backlight backlight_device_unregister 0xedf660d5 +drivers/video/backlight/lcd lcd_device_register 0x6ccd3c29 +drivers/video/backlight/lcd lcd_device_unregister 0xbd5278a6 +drivers/video/console/bitblit fbcon_set_bitops 0xb87ef619 +drivers/video/console/font find_font 0xf7584a9c +drivers/video/console/font get_default_font 0x093e3659 +drivers/video/console/softcursor soft_cursor 0xd9389de6 +drivers/video/console/tileblit fbcon_set_tileops 0x99f816d8 +drivers/video/cyber2000fb cyber2000fb_attach 0x56b3c269 +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x320507ff +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0x3f1373ae +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0xa82b0f94 +drivers/video/macmodes mac_find_mode 0x9db4442e +drivers/video/macmodes mac_map_monitor_sense 0xe2304303 +drivers/video/macmodes mac_var_to_vmode 0x00907cd5 +drivers/video/macmodes mac_vmode_to_var 0x08ed0b62 +drivers/video/matrox/g450_pll g450_mnp2f 0xc6dc3e05 +drivers/video/matrox/g450_pll matroxfb_g450_setclk 0x0f2d428c +drivers/video/matrox/g450_pll matroxfb_g450_setpll_cond 0xedeacc3f +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_init 0xbdc075e6 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_restore 0xe9b1ea63 +drivers/video/matrox/matroxfb_DAC1064 matrox_G100 0x45175d19 +drivers/video/matrox/matroxfb_DAC1064 matrox_mystique 0x903755c8 +drivers/video/matrox/matroxfb_Ti3026 matrox_millennium 0x4bfe464b +drivers/video/matrox/matroxfb_accel matrox_cfbX_init 0xd8e223a5 +drivers/video/matrox/matroxfb_base matroxfb_enable_irq 0x5d0db0b6 +drivers/video/matrox/matroxfb_base matroxfb_register_driver 0x1a1ea8fd +drivers/video/matrox/matroxfb_base matroxfb_unregister_driver 0x32bfadff +drivers/video/matrox/matroxfb_base matroxfb_wait_for_sync 0x37edf8fd +drivers/video/matrox/matroxfb_g450 matroxfb_g450_connect 0x8919b84c +drivers/video/matrox/matroxfb_g450 matroxfb_g450_shutdown 0xb4d1a6d0 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_in 0x8162e84d +drivers/video/matrox/matroxfb_misc matroxfb_DAC_out 0x910d283a +drivers/video/matrox/matroxfb_misc matroxfb_PLL_calcclock 0x25cf8049 +drivers/video/matrox/matroxfb_misc matroxfb_read_pins 0x7ad781d6 +drivers/video/matrox/matroxfb_misc matroxfb_var2my 0xabd8e427 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWinit 0x1bdaa7e8 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWrestore 0x6cfee9af +drivers/video/sis/sisfb sis_free 0x454a3cf0 +drivers/video/sis/sisfb sis_free_new 0x1114b236 +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0x94195102 +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0xdcea32d4 +drivers/w1/ds9490r ds_put_device 0x1559de5e +drivers/w1/ds9490r ds_read_bit 0x66d3e448 +drivers/w1/ds9490r ds_read_block 0x29fb9c90 +drivers/w1/ds9490r ds_read_byte 0xab94378f +drivers/w1/ds9490r ds_reset 0xf4602068 +drivers/w1/ds9490r ds_touch_bit 0x490d3ea1 +drivers/w1/ds9490r ds_write_bit 0xdb91f081 +drivers/w1/ds9490r ds_write_block 0xb3e4a683 +drivers/w1/ds9490r ds_write_byte 0x4963528a +drivers/w1/wire w1_add_master_device 0xd703c624 +drivers/w1/wire w1_calc_crc8 0x7c2f2afb +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xb0c86d52 +drivers/w1/wire w1_family_put 0x45181a35 +drivers/w1/wire w1_family_registered 0x345f469c +drivers/w1/wire w1_read_8 0x3bc48b17 +drivers/w1/wire w1_read_block 0x94db41ff +drivers/w1/wire w1_register_family 0xadeb1de9 +drivers/w1/wire w1_remove_master_device 0x31a7a05c +drivers/w1/wire w1_reset_bus 0x644dd828 +drivers/w1/wire w1_reset_select_slave 0x689432d6 +drivers/w1/wire w1_search_devices 0x5477604e +drivers/w1/wire w1_touch_bit 0x0e065822 +drivers/w1/wire w1_unregister_family 0x2616cdb9 +drivers/w1/wire w1_write_8 0x1f6f043f +drivers/w1/wire w1_write_block 0xb8d57976 +fs/configfs/configfs config_group_init 0x52e89954 +fs/configfs/configfs config_group_init_type_name 0x6ebbdb13 +fs/configfs/configfs config_item_get 0xabddb531 +fs/configfs/configfs config_item_init 0x517c09b1 +fs/configfs/configfs config_item_init_type_name 0xbc47992d +fs/configfs/configfs config_item_put 0x92a4b813 +fs/configfs/configfs config_item_set_name 0x0fbb4abb +fs/configfs/configfs configfs_register_subsystem 0x81aea644 +fs/configfs/configfs configfs_unregister_subsystem 0x63066ba2 +fs/exportfs/exportfs export_op_default 0x8d7a1551 +fs/exportfs/exportfs find_exported_dentry 0x20bd5985 +fs/fat/fat fat_add_entries 0x53bf6ab4 +fs/fat/fat fat_alloc_new_dir 0x229034cf +fs/fat/fat fat_attach 0xb8d6b0d3 +fs/fat/fat fat_build_inode 0x98c73be8 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0x1f0390b4 +fs/fat/fat fat_dir_empty 0x0b4053d6 +fs/fat/fat fat_fill_super 0xb5683bab +fs/fat/fat fat_free_clusters 0xc5ec5cbb +fs/fat/fat fat_fs_panic 0x288e0540 +fs/fat/fat fat_get_dotdot_entry 0x72472c4e +fs/fat/fat fat_notify_change 0x496fd226 +fs/fat/fat fat_remove_entries 0x256c3ba7 +fs/fat/fat fat_scan 0x5a410d8f +fs/fat/fat fat_search_long 0x317387e1 +fs/fat/fat fat_sync_bhs 0x42ddd03e +fs/fat/fat fat_sync_inode 0x5a549279 +fs/jbd/jbd journal_abort 0xc69a3daf +fs/jbd/jbd journal_ack_err 0x455c1e08 +fs/jbd/jbd journal_blocks_per_page 0x8885609f +fs/jbd/jbd journal_check_available_features 0x94d3fc1b +fs/jbd/jbd journal_check_used_features 0x6e9b17e7 +fs/jbd/jbd journal_clear_err 0x06444db3 +fs/jbd/jbd journal_create 0x92169824 +fs/jbd/jbd journal_destroy 0xe4ac9ecd +fs/jbd/jbd journal_dirty_data 0x07878f75 +fs/jbd/jbd journal_dirty_metadata 0x22fe4199 +fs/jbd/jbd journal_errno 0xf299adc4 +fs/jbd/jbd journal_extend 0xfd7a0512 +fs/jbd/jbd journal_flush 0xb3db344c +fs/jbd/jbd journal_force_commit 0x77f689fe +fs/jbd/jbd journal_force_commit_nested 0x4d7f3053 +fs/jbd/jbd journal_forget 0x51ba1ab3 +fs/jbd/jbd journal_get_create_access 0x62debbd1 +fs/jbd/jbd journal_get_undo_access 0xf0815973 +fs/jbd/jbd journal_get_write_access 0x84eeb274 +fs/jbd/jbd journal_init_dev 0xb4ad34bf +fs/jbd/jbd journal_init_inode 0x11ed9074 +fs/jbd/jbd journal_invalidatepage 0xeb622c9e +fs/jbd/jbd journal_load 0x7a500a77 +fs/jbd/jbd journal_lock_updates 0xc4b79ebd +fs/jbd/jbd journal_release_buffer 0xe2f0fdeb +fs/jbd/jbd journal_restart 0xc0ababc6 +fs/jbd/jbd journal_revoke 0x363b9e83 +fs/jbd/jbd journal_set_features 0xc7deaf90 +fs/jbd/jbd journal_start 0x6ee429e3 +fs/jbd/jbd journal_start_commit 0xd1d24f8a +fs/jbd/jbd journal_stop 0x5956ccb7 +fs/jbd/jbd journal_try_to_free_buffers 0x0086e686 +fs/jbd/jbd journal_unlock_updates 0x01fa75df +fs/jbd/jbd journal_update_format 0xc5e40ff9 +fs/jbd/jbd journal_update_superblock 0xa1000820 +fs/jbd/jbd journal_wipe 0x88153d45 +fs/jbd/jbd log_wait_commit 0xada8306f +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0x89ea3c23 +fs/lockd/lockd nlmsvc_ops 0x472952a9 +fs/nfsd/nfsd nfs4_acl_add_ace 0x1bb3671e +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/relayfs/relayfs relay_buf_full 0x7cf5c19b +fs/relayfs/relayfs relay_close 0x53eab9c5 +fs/relayfs/relayfs relay_flush 0x6ca4323c +fs/relayfs/relayfs relay_open 0x45717a80 +fs/relayfs/relayfs relay_reset 0xb37a7000 +fs/relayfs/relayfs relay_subbufs_consumed 0xfe40082b +fs/relayfs/relayfs relay_switch_subbuf 0xa5effb74 +fs/relayfs/relayfs relayfs_create_dir 0x28d5e0c2 +fs/relayfs/relayfs relayfs_file_operations 0x30511a4a +fs/relayfs/relayfs relayfs_remove_dir 0x0e345122 +lib/crc-ccitt crc_ccitt 0x3771b461 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x8ffdb3b8 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x2329b292 +lib/libcrc32c crc32c_le 0x37d0b921 +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0x78f3540a +net/appletalk/appletalk alloc_ltalkdev 0xbaeedad9 +net/appletalk/appletalk atalk_find_dev_addr 0xb4c7b934 +net/appletalk/appletalk atrtr_get_dev 0x76e819ff +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0xf375a2ef +net/ax25/ax25 ax25_findbyuid 0x564d9f14 +net/ax25/ax25 ax25_hard_header 0xbc505a8d +net/ax25/ax25 ax25_linkfail_register 0xcfd2a4eb +net/ax25/ax25 ax25_linkfail_release 0x17ac64ac +net/ax25/ax25 ax25_listen_register 0x5ccaa3be +net/ax25/ax25 ax25_listen_release 0x5e580f16 +net/ax25/ax25 ax25_protocol_register 0x90a238f9 +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0x94c71c43 +net/ax25/ax25 ax25_send_frame 0xab395e2c +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0xbd6201d3 +net/bluetooth/bluetooth bt_accept_enqueue 0xaed5a283 +net/bluetooth/bluetooth bt_accept_unlink 0x4b1023a5 +net/bluetooth/bluetooth bt_class 0xc8ef7b41 +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0x9fb2a6fa +net/bluetooth/bluetooth bt_sock_poll 0x3987a2a6 +net/bluetooth/bluetooth bt_sock_recvmsg 0xfb6b869f +net/bluetooth/bluetooth bt_sock_register 0x35bf7930 +net/bluetooth/bluetooth bt_sock_unlink 0xa1aa0ee7 +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0x231b803f +net/bluetooth/bluetooth hci_alloc_dev 0xea45d882 +net/bluetooth/bluetooth hci_conn_auth 0x2104717f +net/bluetooth/bluetooth hci_conn_change_link_key 0xb3e91e5b +net/bluetooth/bluetooth hci_conn_encrypt 0xb74221a1 +net/bluetooth/bluetooth hci_conn_switch_role 0x068881db +net/bluetooth/bluetooth hci_connect 0x08b6900c +net/bluetooth/bluetooth hci_free_dev 0xec2d08b4 +net/bluetooth/bluetooth hci_get_route 0x8858f275 +net/bluetooth/bluetooth hci_register_cb 0xfdebf315 +net/bluetooth/bluetooth hci_register_dev 0xa3a3f035 +net/bluetooth/bluetooth hci_register_proto 0xb841c0bc +net/bluetooth/bluetooth hci_resume_dev 0x177d3547 +net/bluetooth/bluetooth hci_send_acl 0xd326dc3e +net/bluetooth/bluetooth hci_send_sco 0xec40315f +net/bluetooth/bluetooth hci_suspend_dev 0xc06fc947 +net/bluetooth/bluetooth hci_unregister_cb 0xbff4865b +net/bluetooth/bluetooth hci_unregister_dev 0x25a2eef5 +net/bluetooth/bluetooth hci_unregister_proto 0xb267dad9 +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0x34324a49 +net/bridge/netfilter/ebtables ebt_do_table 0x174609ff +net/bridge/netfilter/ebtables ebt_register_match 0xcd2c1b27 +net/bridge/netfilter/ebtables ebt_register_table 0x5cce0f10 +net/bridge/netfilter/ebtables ebt_register_target 0xd193b528 +net/bridge/netfilter/ebtables ebt_register_watcher 0xa4a080cf +net/bridge/netfilter/ebtables ebt_unregister_match 0x6d43e302 +net/bridge/netfilter/ebtables ebt_unregister_table 0xc4826ad4 +net/bridge/netfilter/ebtables ebt_unregister_target 0x73726052 +net/bridge/netfilter/ebtables ebt_unregister_watcher 0xb73425a4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x3a18e70d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0x71ecc67f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x7824d7b3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xded46fa7 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0x78e41e68 +net/dccp/dccp ccid_init 0x4addc93e +net/dccp/dccp ccid_register 0x2227466b +net/dccp/dccp ccid_unregister 0x0a21504e +net/dccp/dccp dccp_hashinfo 0xff3742f0 +net/dccp/dccp dccp_insert_option 0xbc9dc239 +net/dccp/dccp dccp_insert_option_elapsed_time 0x24d32a00 +net/dccp/dccp dccp_insert_option_timestamp 0xffe9ab40 +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0xc346a4a5 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0x2dbe9b3a +net/ieee80211/ieee80211 alloc_ieee80211 0xa0cb3c71 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0x2d1acc97 +net/ieee80211/ieee80211 ieee80211_channel_to_index 0x77719a28 +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0x2930c874 +net/ieee80211/ieee80211 ieee80211_get_channel 0xa0ada2d6 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0xd9b1e489 +net/ieee80211/ieee80211 ieee80211_get_geo 0x71c37e67 +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0xb150d387 +net/ieee80211/ieee80211 ieee80211_rx 0xcc773aaf +net/ieee80211/ieee80211 ieee80211_rx_mgt 0x0610b750 +net/ieee80211/ieee80211 ieee80211_set_geo 0xfa8f5418 +net/ieee80211/ieee80211 ieee80211_tx_frame 0x6725ac10 +net/ieee80211/ieee80211 ieee80211_txb_free 0x4a0bf340 +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0xcc0c4552 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0x164770f8 +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x89477681 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0x4ef65f1b +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0xdfd742fc +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x339eba76 +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0xacf6159a +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0x12765df3 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x9a4e9471 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0xa45766d9 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x02f8baeb +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0xb0964c49 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0xa9b2937c +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0xad6443e3 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0xee9ec734 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0xdad35e86 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0x66d0b2b3 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0xdd2d9c6c +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0xb4ff2255 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0x632d7d9a +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0xe7d6dff5 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0xad73e761 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0x07b0173d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0x6f002238 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0xfa88d42b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x1d16e847 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0xfc82c783 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x36cd42d5 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x5e7d77d0 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0xe953d385 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x4b1d3f9b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0xe294b04e +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x6b98741c +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0xd4289f28 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0xa208ed8d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0x6e37a5d2 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0x3401e4c2 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0x9742a6de +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0x5d88c38c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0xdb29f807 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x4e6f55a4 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0xa314a091 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0x34f0c46c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0xa38712d2 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x2677fa2c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x69229c2e +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0xe07515a0 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0xa712db97 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x60431842 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0x2d641bd2 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0x47345013 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0xecdf513f +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x2ff21c89 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x3c02929c +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0xc5f2ae6b +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0x1ddd19f0 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x624d5d27 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x311fbdfc +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0x960025ea +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0x8a19376b +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0xaca0c155 +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0xd0563026 +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0x8936a760 +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0xb394901d +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0x0ff82ae9 +net/ipv4/ipvs/ip_vs register_ip_vs_app 0xdca20343 +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0xed1c4b03 +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0x412345a0 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0xeb97f7f8 +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0xa986ccb5 +net/ipv4/netfilter/arp_tables arpt_do_table 0xf807f272 +net/ipv4/netfilter/arp_tables arpt_register_table 0x497ab34f +net/ipv4/netfilter/arp_tables arpt_register_target 0x3e508cd4 +net/ipv4/netfilter/arp_tables arpt_unregister_table 0x7d0b067e +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x4b99ae22 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x90d8970a +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0xb2caf82e +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0x8ad3aff4 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x46b1d9a7 +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0xc8ac0b3b +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0xf5d19196 +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0xd33368dd +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0x521c8d33 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0xc727ac6e +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0xe6029839 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0x9ef38a98 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x082b91b2 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0xe02a3d65 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0x00dac8d3 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x9b3d3860 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0xbfe2f934 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0x38e570f0 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0x5f4e1b62 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0xa3c68771 +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0x2b4ec0f9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x4cb42a71 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x1e53b1ee +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x4669c943 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x10a51846 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0x90c1bb27 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0x7faa21b0 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0xa5c90f59 +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x1844ba7b +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0xd8666a81 +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0xaab79418 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x5d4b3b7e +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0x3c3f799d +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0x3da4f251 +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0xb98445f5 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0xd69ee73f +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x46d48e89 +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0xe175d6dd +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0xa556005a +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0x73261fc2 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0x0ec35547 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0xe080b493 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0x2e05d669 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0xd346a794 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0x05bc8a5b +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0x612faaf8 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0xc412b46b +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0xd126aecc +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0xc2746b3e +net/ipv4/netfilter/ip_nat ip_nat_packet 0x5dd5c93a +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x1ead5a02 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0xf3fcf856 +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x629c548e +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0x38ceb1f9 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x547c794c +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0x89e8abc1 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0xc80b4aa3 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x8c032e4c +net/ipv4/netfilter/ip_tables ipt_do_table 0xd45c7dca +net/ipv4/netfilter/ip_tables ipt_find_target 0x65988a2e +net/ipv4/netfilter/ip_tables ipt_register_match 0x796e820e +net/ipv4/netfilter/ip_tables ipt_register_table 0x09e6408f +net/ipv4/netfilter/ip_tables ipt_register_target 0x9294d40f +net/ipv4/netfilter/ip_tables ipt_unregister_match 0x60deba4d +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x81263fb9 +net/ipv4/netfilter/ip_tables ipt_unregister_target 0xae994287 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0xeb23edb1 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0x1e092241 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0xce8e74b0 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0xeafeb2aa +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x0185f3d0 +net/ipv6/ipv6 inet6_add_protocol 0x239cb0ed +net/ipv6/ipv6 inet6_bind 0xfdf3df02 +net/ipv6/ipv6 inet6_del_protocol 0xc88ba99a +net/ipv6/ipv6 inet6_getname 0xe181d604 +net/ipv6/ipv6 inet6_ioctl 0x1acb1450 +net/ipv6/ipv6 inet6_register_protosw 0x0f4c8f5e +net/ipv6/ipv6 inet6_release 0x6d8b2d79 +net/ipv6/ipv6 inet6_unregister_protosw 0x913829b7 +net/ipv6/ipv6 ip6_route_me_harder 0xd052b21e +net/ipv6/ipv6 ip6_route_output 0x0f26be97 +net/ipv6/ipv6 ip6_xmit 0x80ef238a +net/ipv6/ipv6 ipv6_chk_addr 0x966f4c55 +net/ipv6/ipv6 ipv6_get_saddr 0x7db8de71 +net/ipv6/ipv6 ipv6_getsockopt 0x52aead54 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0x353b88e5 +net/ipv6/ipv6 ipv6_setsockopt 0x4db5964d +net/ipv6/ipv6 ndisc_mc_map 0xb38d49db +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x7280c4d5 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0x4c19e50f +net/ipv6/ipv6 xfrm6_rcv_spi 0x245d7e78 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0x34917d97 +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0x078ae70f +net/ipv6/netfilter/ip6_tables ip6t_register_table 0x1d3ef8d0 +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x0e396df3 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0xc52cc44e +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x5ca0a839 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0xd97d7848 +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0x60a44436 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0x210654c6 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0xe336abe6 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/irda/ircomm/ircomm ircomm_close 0xc982f348 +net/irda/ircomm/ircomm ircomm_connect_request 0x9b487bc2 +net/irda/ircomm/ircomm ircomm_connect_response 0xe51de494 +net/irda/ircomm/ircomm ircomm_control_request 0xe76dd5dd +net/irda/ircomm/ircomm ircomm_data_request 0x146ecb97 +net/irda/ircomm/ircomm ircomm_disconnect_request 0x9c25e3f8 +net/irda/ircomm/ircomm ircomm_flow_request 0xf501fcdf +net/irda/ircomm/ircomm ircomm_open 0xbf2246ab +net/irda/irda alloc_irdadev 0x1c3804fb +net/irda/irda async_unwrap_char 0xb9a89ca3 +net/irda/irda async_wrap_skb 0xd548b394 +net/irda/irda hashbin_delete 0x9f3fdb15 +net/irda/irda hashbin_find 0xc9697ed6 +net/irda/irda hashbin_get_first 0xafb532f6 +net/irda/irda hashbin_get_next 0xdd673d0a +net/irda/irda hashbin_insert 0xf10e95cc +net/irda/irda hashbin_lock_find 0x7bee2e3d +net/irda/irda hashbin_new 0x96c5cfee +net/irda/irda hashbin_remove 0x229d35b6 +net/irda/irda hashbin_remove_this 0x9722368a +net/irda/irda irda_debug 0x38a20e5b +net/irda/irda irda_device_dongle_cleanup 0x2a7e4904 +net/irda/irda irda_device_dongle_init 0xb2f219c0 +net/irda/irda irda_device_register_dongle 0xb575f104 +net/irda/irda irda_device_set_media_busy 0x8e646ba2 +net/irda/irda irda_device_unregister_dongle 0xf766c70b +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0x3f03be0b +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_setup_dma 0xf39b7fe0 +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0x3863be62 +net/irda/irda iriap_getvaluebyclass_request 0xa6d8180c +net/irda/irda iriap_open 0x17d9b273 +net/irda/irda irias_add_integer_attrib 0x87b3f3d3 +net/irda/irda irias_add_octseq_attrib 0x26c6095d +net/irda/irda irias_add_string_attrib 0x315da11c +net/irda/irda irias_delete_object 0x1c8a1c31 +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x49291c9d +net/irda/irda irias_find_object 0x09676c38 +net/irda/irda irias_insert_object 0xa337379a +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0x6082a8bf +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0xfdf0af21 +net/irda/irda irlap_open 0x7e4ed3b5 +net/irda/irda irlmp_close_lsap 0xca86ddc5 +net/irda/irda irlmp_connect_request 0x0585c621 +net/irda/irda irlmp_connect_response 0xe7f3a8c8 +net/irda/irda irlmp_data_request 0xf3d052b7 +net/irda/irda irlmp_disconnect_request 0x7b562400 +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0x28c10912 +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0xb68fbbad +net/irda/irda irttp_connect_request 0xf8eff1e0 +net/irda/irda irttp_connect_response 0x556e02ea +net/irda/irda irttp_data_request 0x36cba99f +net/irda/irda irttp_disconnect_request 0x795a5154 +net/irda/irda irttp_dup 0x7644d415 +net/irda/irda irttp_flow_request 0xe0e24424 +net/irda/irda irttp_open_tsap 0x7f30f087 +net/irda/irda irttp_udata_request 0x8a61f472 +net/irda/irda proc_irda 0x44d9d9ae +net/lapb/lapb lapb_connect_request 0x252d9567 +net/lapb/lapb lapb_data_received 0x4106759a +net/lapb/lapb lapb_data_request 0x962e5f0b +net/lapb/lapb lapb_disconnect_request 0x82a4d5c0 +net/lapb/lapb lapb_getparms 0x969b52a1 +net/lapb/lapb lapb_register 0x04922eb0 +net/lapb/lapb lapb_setparms 0x2d0aa3ca +net/lapb/lapb lapb_unregister 0x391af0a6 +net/netfilter/nfnetlink __nfa_fill 0x55012043 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0x2067b8a6 +net/netfilter/nfnetlink nfnetlink_subsys_register 0xde98b95a +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0xa5e03ad8 +net/netfilter/nfnetlink nfnetlink_unicast 0xb3a609ac +net/rxrpc/rxrpc rxrpc_add_service 0x48bd73b1 +net/rxrpc/rxrpc rxrpc_call_abort 0xafcbb318 +net/rxrpc/rxrpc rxrpc_call_read_data 0xa89076f4 +net/rxrpc/rxrpc rxrpc_call_write_data 0x6f6a9e61 +net/rxrpc/rxrpc rxrpc_create_call 0xf281199f +net/rxrpc/rxrpc rxrpc_create_connection 0x96b0ac49 +net/rxrpc/rxrpc rxrpc_create_transport 0x856d0b5b +net/rxrpc/rxrpc rxrpc_del_service 0x2eaa37ae +net/rxrpc/rxrpc rxrpc_put_call 0x4249b7aa +net/rxrpc/rxrpc rxrpc_put_connection 0x31ffc071 +net/rxrpc/rxrpc rxrpc_put_transport 0xf482255a +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x00c52ef5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0xb5dea7ef +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xf8b2ff6e +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0xfdc0196c +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0xe8502ceb +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0x3a103669 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0x73a37f6a +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0x5e203023 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0xab5750df +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0x95419bab +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0x73d5597c +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0xc02d6602 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0x93732a57 +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0x8dfa7322 +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0xdab24b93 +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0x422dc7de +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x4c2f4b6d +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x8d1a827e +net/sunrpc/sunrpc auth_domain_find 0xce9b7a1f +net/sunrpc/sunrpc auth_domain_lookup 0xa74157e3 +net/sunrpc/sunrpc auth_domain_put 0xb7e2b4a5 +net/sunrpc/sunrpc auth_unix_add_addr 0xb8520a43 +net/sunrpc/sunrpc auth_unix_forget_old 0x758f9c49 +net/sunrpc/sunrpc auth_unix_lookup 0xd1d4e136 +net/sunrpc/sunrpc cache_check 0x031c6ceb +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0x871f1bd3 +net/sunrpc/sunrpc cache_init 0xc244025c +net/sunrpc/sunrpc cache_purge 0x3235e18b +net/sunrpc/sunrpc cache_register 0x77c741ec +net/sunrpc/sunrpc cache_unregister 0x73a2e538 +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0xd411c331 +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0x617a7fca +net/sunrpc/sunrpc rpc_bind_new_program 0x0187bd67 +net/sunrpc/sunrpc rpc_call_async 0x50cb8c66 +net/sunrpc/sunrpc rpc_call_setup 0x6cf832fe +net/sunrpc/sunrpc rpc_call_sync 0x9a43dced +net/sunrpc/sunrpc rpc_clnt_sigmask 0x118005c8 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0x662c4257 +net/sunrpc/sunrpc rpc_clone_client 0x906f8b9c +net/sunrpc/sunrpc rpc_create_client 0x1dea0556 +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0x5e44c0de +net/sunrpc/sunrpc rpc_destroy_client 0xe97e3724 +net/sunrpc/sunrpc rpc_execute 0x89310702 +net/sunrpc/sunrpc rpc_init_task 0xcaf88185 +net/sunrpc/sunrpc rpc_init_wait_queue 0x11e11d3f +net/sunrpc/sunrpc rpc_killall_tasks 0x3be08abd +net/sunrpc/sunrpc rpc_max_payload 0xfed0bd1f +net/sunrpc/sunrpc rpc_mkpipe 0xd46c3adb +net/sunrpc/sunrpc rpc_new_child 0xc186b61c +net/sunrpc/sunrpc rpc_new_client 0x69d86cf7 +net/sunrpc/sunrpc rpc_new_task 0xd358be2e +net/sunrpc/sunrpc rpc_proc_register 0x54c1cb26 +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x3a3201fe +net/sunrpc/sunrpc rpc_release_client 0x65ac48ce +net/sunrpc/sunrpc rpc_release_task 0x932a9f70 +net/sunrpc/sunrpc rpc_restart_call 0x6fb643f5 +net/sunrpc/sunrpc rpc_run_child 0x9bc47e97 +net/sunrpc/sunrpc rpc_setbufsize 0xbe9ed18c +net/sunrpc/sunrpc rpc_shutdown_client 0xe288edc1 +net/sunrpc/sunrpc rpc_sleep_on 0x0cdcd00d +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0xe2c0d089 +net/sunrpc/sunrpc rpc_wake_up_next 0x49438c94 +net/sunrpc/sunrpc rpc_wake_up_status 0x6bd6a967 +net/sunrpc/sunrpc rpc_wake_up_task 0x7ebe666f +net/sunrpc/sunrpc rpcauth_create 0xc83fe122 +net/sunrpc/sunrpc rpcauth_free_credcache 0x9004d9b9 +net/sunrpc/sunrpc rpcauth_init_credcache 0x62d28c00 +net/sunrpc/sunrpc rpcauth_lookup_credcache 0x828dc829 +net/sunrpc/sunrpc rpcauth_lookupcred 0x8734a53a +net/sunrpc/sunrpc rpcauth_register 0x7177b94b +net/sunrpc/sunrpc rpcauth_unregister 0xccfc8411 +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x0a894414 +net/sunrpc/sunrpc svc_auth_unregister 0x0f668ba9 +net/sunrpc/sunrpc svc_authenticate 0xc979a218 +net/sunrpc/sunrpc svc_create 0x7dbd83fe +net/sunrpc/sunrpc svc_create_thread 0xee7d7f5c +net/sunrpc/sunrpc svc_destroy 0x3663c47c +net/sunrpc/sunrpc svc_drop 0xf6b525e3 +net/sunrpc/sunrpc svc_exit_thread 0x5e869833 +net/sunrpc/sunrpc svc_makesock 0xea624b28 +net/sunrpc/sunrpc svc_proc_register 0x9e9521c4 +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0x9f51ffd0 +net/sunrpc/sunrpc svc_recv 0xa3401b0a +net/sunrpc/sunrpc svc_reserve 0x100192c4 +net/sunrpc/sunrpc svc_seq_show 0xa86ef639 +net/sunrpc/sunrpc svc_set_client 0xeea7915c +net/sunrpc/sunrpc svc_wake_up 0x7879fca7 +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x96946e44 +net/sunrpc/sunrpc xdr_buf_from_iov 0xddcfeb5e +net/sunrpc/sunrpc xdr_buf_read_netobj 0xdf9c33f0 +net/sunrpc/sunrpc xdr_buf_subsegment 0x36453d18 +net/sunrpc/sunrpc xdr_decode_array2 0x4a63fc5d +net/sunrpc/sunrpc xdr_decode_netobj 0x1be57115 +net/sunrpc/sunrpc xdr_decode_string 0x6755aa62 +net/sunrpc/sunrpc xdr_decode_string_inplace 0x7bd87272 +net/sunrpc/sunrpc xdr_decode_word 0xcd7771a0 +net/sunrpc/sunrpc xdr_encode_array2 0xd44a38b2 +net/sunrpc/sunrpc xdr_encode_netobj 0x29c6f164 +net/sunrpc/sunrpc xdr_encode_opaque 0x0e9e79d5 +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0x587d494b +net/sunrpc/sunrpc xdr_encode_pages 0xbc4706c5 +net/sunrpc/sunrpc xdr_encode_string 0xabc0fe0c +net/sunrpc/sunrpc xdr_encode_word 0xc5e67784 +net/sunrpc/sunrpc xdr_init_decode 0x35853a97 +net/sunrpc/sunrpc xdr_init_encode 0x20ba226d +net/sunrpc/sunrpc xdr_inline_decode 0xecddc56c +net/sunrpc/sunrpc xdr_inline_pages 0x971420ec +net/sunrpc/sunrpc xdr_read_pages 0xe22772ec +net/sunrpc/sunrpc xdr_reserve_space 0xa9a80e0c +net/sunrpc/sunrpc xdr_shift_buf 0xc30b3ab5 +net/sunrpc/sunrpc xdr_write_pages 0x6dfaf181 +net/sunrpc/sunrpc xprt_create_proto 0x8246447d +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x6b14bb8d +net/wanrouter/wanrouter register_wan_device 0xfdf95c30 +net/wanrouter/wanrouter unlock_adapter_irq 0x53a2e800 +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0xb6260154 +net/wanrouter/wanrouter wanrouter_type_trans 0xc8e37a21 +security/commoncap cap_bprm_apply_creds 0xac7a0bca +security/commoncap cap_bprm_secureexec 0x266d5fff +security/commoncap cap_bprm_set_security 0x5a9efaed +security/commoncap cap_capable 0x82420885 +security/commoncap cap_capget 0x8034ab81 +security/commoncap cap_capset_check 0xb776a83e +security/commoncap cap_capset_set 0xb0aa9ac7 +security/commoncap cap_inode_removexattr 0x0fb72d71 +security/commoncap cap_inode_setxattr 0x5fd96324 +security/commoncap cap_netlink_recv 0x25114759 +security/commoncap cap_netlink_send 0x7beaf41f +security/commoncap cap_ptrace 0x0303d8fd +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x372390b2 +security/commoncap cap_task_reparent_to_init 0x4574e599 +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x70b91814 +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-gf1 snd_seq_gf1_init 0x9da48ff9 +sound/core/seq/instr/snd-ainstr-iw snd_seq_iwffff_init 0x5d8aab91 +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x4402508a +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0xa39c94db +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0x9763e597 +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x850a422b +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x89947013 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x896201d9 +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x5b5a8a2e +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0xf02bb907 +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x3a6ab315 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x9a4c5e93 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0x8b6d0c74 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0x2a687b76 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0x4f46dcf1 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x30657d29 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0xdbdd9ad1 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x24b8399a +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x195c80b1 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x866949af +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x8db6a0a8 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0xe9e12582 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0x48e008d5 +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0xef539d6c +sound/core/snd copy_from_user_toio 0xce3ca308 +sound/core/snd copy_to_user_fromio 0x602c96f0 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0xf659b28a +sound/core/snd snd_card_file_add 0x8d74a098 +sound/core/snd snd_card_file_remove 0xe499fb4e +sound/core/snd snd_card_free 0x62a52a2b +sound/core/snd snd_card_free_in_thread 0x9a2b0471 +sound/core/snd snd_card_new 0xaccff3e7 +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0x85941724 +sound/core/snd snd_card_register 0x2f3f3dfd +sound/core/snd snd_card_set_generic_dev 0xd8b0de00 +sound/core/snd snd_card_set_generic_pm_callback 0x1074aa7f +sound/core/snd snd_card_set_pm_callback 0x8992908f +sound/core/snd snd_cards 0x02bbbac1 +sound/core/snd snd_component_add 0x66c7cc05 +sound/core/snd snd_ctl_add 0x30b2632a +sound/core/snd snd_ctl_elem_read 0x5471165c +sound/core/snd snd_ctl_elem_write 0xb516d0c3 +sound/core/snd snd_ctl_find_id 0x71928c78 +sound/core/snd snd_ctl_find_numid 0x2da34890 +sound/core/snd snd_ctl_free_one 0x774470b4 +sound/core/snd snd_ctl_new 0x9a3b98e1 +sound/core/snd snd_ctl_new1 0x14e192c2 +sound/core/snd snd_ctl_notify 0x80c2616c +sound/core/snd snd_ctl_register_ioctl 0x6ec8c2ab +sound/core/snd snd_ctl_remove 0xf0ce1f99 +sound/core/snd snd_ctl_remove_id 0x0357553d +sound/core/snd snd_ctl_rename_id 0x0977e37e +sound/core/snd snd_ctl_unregister_ioctl 0x3c51dd72 +sound/core/snd snd_device_free 0x7a37a021 +sound/core/snd snd_device_new 0x9e4007ff +sound/core/snd snd_device_register 0x70290006 +sound/core/snd snd_dma_disable 0x70c15ac1 +sound/core/snd snd_dma_pointer 0x191e88cf +sound/core/snd snd_dma_program 0x18e1683f +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0xd2f82f75 +sound/core/snd snd_info_create_module_entry 0xd176891f +sound/core/snd snd_info_free_entry 0x2914453e +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0x998e2a4f +sound/core/snd snd_info_unregister 0xa50558da +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0x55914c84 +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0x7699b6c7 +sound/core/snd snd_register_device 0x495e932b +sound/core/snd snd_register_oss_device 0x539b13bc +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0x9241e514 +sound/core/snd snd_unregister_device 0x5c1bf1c7 +sound/core/snd snd_unregister_oss_device 0x2d641e83 +sound/core/snd-hwdep snd_hwdep_new 0xa9319af8 +sound/core/snd-page-alloc snd_dma_alloc_pages 0xf32a5074 +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0x13f02952 +sound/core/snd-page-alloc snd_dma_free_pages 0xf389d5b0 +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0xc59c3410 +sound/core/snd-page-alloc snd_dma_reserve_buf 0xc6341092 +sound/core/snd-page-alloc snd_free_pages 0x3b91f3af +sound/core/snd-page-alloc snd_malloc_pages 0xade88e76 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x0beab9b1 +sound/core/snd-pcm snd_pcm_devices 0xdf6ea75b +sound/core/snd-pcm snd_pcm_format_big_endian 0x93878ece +sound/core/snd-pcm snd_pcm_format_linear 0x8733f967 +sound/core/snd-pcm snd_pcm_format_little_endian 0x8bbdc311 +sound/core/snd-pcm snd_pcm_format_name 0xedd5b5bd +sound/core/snd-pcm snd_pcm_format_physical_width 0xa8edfa41 +sound/core/snd-pcm snd_pcm_format_set_silence 0xdf124602 +sound/core/snd-pcm snd_pcm_format_signed 0xe2c5f868 +sound/core/snd-pcm snd_pcm_format_silence_64 0xda29bc77 +sound/core/snd-pcm snd_pcm_format_size 0x6f3fba79 +sound/core/snd-pcm snd_pcm_format_unsigned 0x95a60aa5 +sound/core/snd-pcm snd_pcm_format_width 0x55eb2175 +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0x6d9f0f37 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0xff18b9c9 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0x0ca6a27d +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x53525cec +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0x969ba446 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x0cc02043 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x81414232 +sound/core/snd-pcm snd_pcm_hw_constraint_step 0xb4d3908d +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0x30b769ff +sound/core/snd-pcm snd_pcm_hw_constraints_init 0x4b8c28a8 +sound/core/snd-pcm snd_pcm_hw_param_first 0x032c154a +sound/core/snd-pcm snd_pcm_hw_param_last 0xfd1ba66b +sound/core/snd-pcm snd_pcm_hw_param_mask 0x685b51c1 +sound/core/snd-pcm snd_pcm_hw_param_near 0x3fa88910 +sound/core/snd-pcm snd_pcm_hw_param_set 0xd30d17dc +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0xbb440c3f +sound/core/snd-pcm snd_pcm_hw_rule_add 0xc9317dbd +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0x3c8a5af4 +sound/core/snd-pcm snd_pcm_kernel_ioctl 0xed2f1d97 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x7266b31a +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0xfa36cdf7 +sound/core/snd-pcm snd_pcm_lib_free_pages 0x57723844 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x96fb9ae1 +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x90f7b0ec +sound/core/snd-pcm snd_pcm_lib_mmap_iomem 0x3c03f587 +sound/core/snd-pcm snd_pcm_lib_period_bytes 0xfc6bf592 +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x12093fd4 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0x1cdf71ec +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0x3f03b46d +sound/core/snd-pcm snd_pcm_lib_read 0x19290104 +sound/core/snd-pcm snd_pcm_lib_readv 0x0c79a389 +sound/core/snd-pcm snd_pcm_lib_write 0xf9c62ea4 +sound/core/snd-pcm snd_pcm_lib_writev 0xb5695dcf +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x68783b28 +sound/core/snd-pcm snd_pcm_link_rwlock 0x011bbb0e +sound/core/snd-pcm snd_pcm_mmap_data 0xedc7c4ec +sound/core/snd-pcm snd_pcm_new 0x728f34e1 +sound/core/snd-pcm snd_pcm_new_stream 0xe4dd0808 +sound/core/snd-pcm snd_pcm_notify 0x232fe2b0 +sound/core/snd-pcm snd_pcm_open_substream 0x7fd28d54 +sound/core/snd-pcm snd_pcm_period_elapsed 0x00259ecd +sound/core/snd-pcm snd_pcm_release_substream 0x5951b582 +sound/core/snd-pcm snd_pcm_set_ops 0x11186e38 +sound/core/snd-pcm snd_pcm_set_sync 0xa1dd42cc +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0xf0853dce +sound/core/snd-pcm snd_pcm_stop 0xa2b97e99 +sound/core/snd-pcm snd_pcm_suspend 0x075f0451 +sound/core/snd-pcm snd_pcm_suspend_all 0xa9798d2b +sound/core/snd-rawmidi snd_rawmidi_drain_input 0x5040b72e +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x496d31f3 +sound/core/snd-rawmidi snd_rawmidi_drop_output 0xf1310e6f +sound/core/snd-rawmidi snd_rawmidi_info 0xb645fb9a +sound/core/snd-rawmidi snd_rawmidi_info_select 0x1cb0e050 +sound/core/snd-rawmidi snd_rawmidi_input_params 0x43c9b633 +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0xb8c978db +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0x04384776 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0xb71ce5fc +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x354c92b5 +sound/core/snd-rawmidi snd_rawmidi_new 0xecb1e78f +sound/core/snd-rawmidi snd_rawmidi_output_params 0xd83b9022 +sound/core/snd-rawmidi snd_rawmidi_receive 0x1d1c24d4 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x8421c102 +sound/core/snd-rawmidi snd_rawmidi_transmit 0x59c594bd +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x07eecf15 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0xd96767e6 +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0xa3c01ec2 +sound/core/snd-timer snd_timer_close 0x18610cd8 +sound/core/snd-timer snd_timer_continue 0xe46a0594 +sound/core/snd-timer snd_timer_global_free 0xf1e1492d +sound/core/snd-timer snd_timer_global_new 0x7af8d525 +sound/core/snd-timer snd_timer_global_register 0x61f195d2 +sound/core/snd-timer snd_timer_global_unregister 0x292e9c97 +sound/core/snd-timer snd_timer_interrupt 0x50d63a4e +sound/core/snd-timer snd_timer_new 0x4b88ca65 +sound/core/snd-timer snd_timer_notify 0x4930314f +sound/core/snd-timer snd_timer_open 0x5f3cf268 +sound/core/snd-timer snd_timer_pause 0x6aad8908 +sound/core/snd-timer snd_timer_resolution 0x3aac0093 +sound/core/snd-timer snd_timer_start 0xff0802fd +sound/core/snd-timer snd_timer_stop 0x2c47a6c5 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0xe7ecaf45 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x51f2dcb0 +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0xf1dd054b +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0x722bbcf5 +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0x1121f5fd +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0x6e4a9260 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0x5e29c961 +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0xef63f855 +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0xaad8604a +sound/drivers/opl4/snd-opl4-lib snd_opl4_create 0x70724bd3 +sound/drivers/opl4/snd-opl4-lib snd_opl4_read 0x8b8ba457 +sound/drivers/opl4/snd-opl4-lib snd_opl4_read_memory 0xe3e79355 +sound/drivers/opl4/snd-opl4-lib snd_opl4_write 0xfc31776a +sound/drivers/opl4/snd-opl4-lib snd_opl4_write_memory 0x2bc4e4bf +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x4b79b8e1 +sound/drivers/vx/snd-vx-lib snd_vx_create 0x5d440c5a +sound/drivers/vx/snd-vx-lib snd_vx_delay 0xba7a5174 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x804c995a +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x282f4cc0 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0xb301a60f +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x895b5b98 +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0xcffce99d +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0x27806101 +sound/i2c/other/snd-ak4114 snd_ak4114_build 0x3204eb4b +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0xbbf1831f +sound/i2c/other/snd-ak4114 snd_ak4114_create 0xc8027d9b +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0x724630cc +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0xec867251 +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0x4900fdf6 +sound/i2c/other/snd-ak4117 snd_ak4117_build 0x438b3099 +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0xf7fe92b2 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0x54c46092 +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x1689e6ac +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x62d3a2f1 +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x7b202262 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0xbd11fa62 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0xa07be89d +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0x7e76a8e9 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0xa734e469 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0x1bd1bef4 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0xf67d0870 +sound/i2c/snd-cs8427 snd_cs8427_create 0x9cfb3a61 +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0xa7327d79 +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0x6252b120 +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0xb015a188 +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0xeb28da52 +sound/i2c/snd-cs8427 snd_cs8427_reset 0xaf53ba01 +sound/i2c/snd-i2c snd_i2c_bus_create 0x429a490e +sound/i2c/snd-i2c snd_i2c_device_create 0xec39edaa +sound/i2c/snd-i2c snd_i2c_device_free 0x3cf96e98 +sound/i2c/snd-i2c snd_i2c_probeaddr 0xa9acc22e +sound/i2c/snd-i2c snd_i2c_readbytes 0x9f0e78c1 +sound/i2c/snd-i2c snd_i2c_sendbytes 0x072043e5 +sound/i2c/snd-tea6330t snd_tea6330t_detect 0x8f1af036 +sound/i2c/snd-tea6330t snd_tea6330t_update_mixer 0xc3417713 +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_create 0x87e415b3 +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_mixer 0xdc08c642 +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_pcm 0xc9747e67 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_add_ctl 0x95cb938b +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_create 0x275f9426 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_get_pcm_ops 0xa1e5eedc +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_mixer 0x294bccf6 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_out 0x143531f6 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_pcm 0xd7c2c9ec +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_chip_id 0x4ee8de1b +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_create 0xf2c35362 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_get_double 0x600ad9fd +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_get_single 0x3ad62b34 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_in 0xac83af24 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_info_double 0xac73981a +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_info_single 0x755e4ae4 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_interrupt 0xa2de426c +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mce_down 0x84d3e1a5 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mce_up 0x8a45a9e0 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mixer 0x6ba46849 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_out 0xb384662a +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_pcm 0xe28e0103 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_put_double 0x21601c92 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_put_single 0x7bbcee5b +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_timer 0x4c416a05 +sound/isa/cs423x/snd-cs4231-lib snd_cs4236_ext_in 0x635e9e2f +sound/isa/cs423x/snd-cs4231-lib snd_cs4236_ext_out 0x26a2b683 +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_create 0x839fdd26 +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_mixer 0x3ae5fe48 +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_pcm 0x1b4993d7 +sound/isa/es1688/snd-es1688-lib snd_es1688_create 0x592b2072 +sound/isa/es1688/snd-es1688-lib snd_es1688_mixer 0xc9b8e743 +sound/isa/es1688/snd-es1688-lib snd_es1688_mixer_write 0x74b197f5 +sound/isa/es1688/snd-es1688-lib snd_es1688_pcm 0x7f913b00 +sound/isa/gus/snd-gus-lib snd_gf1_alloc_voice 0x10f326c8 +sound/isa/gus/snd-gus-lib snd_gf1_atten_table 0xc43a5527 +sound/isa/gus/snd-gus-lib snd_gf1_ctrl_stop 0xbc8fa3b2 +sound/isa/gus/snd-gus-lib snd_gf1_delay 0xb2944832 +sound/isa/gus/snd-gus-lib snd_gf1_dram_addr 0xe6e7b3fb +sound/isa/gus/snd-gus-lib snd_gf1_free_voice 0x17c59fe6 +sound/isa/gus/snd-gus-lib snd_gf1_i_look16 0x046af0b0 +sound/isa/gus/snd-gus-lib snd_gf1_i_look8 0xc77457f0 +sound/isa/gus/snd-gus-lib snd_gf1_i_write8 0x182a0f12 +sound/isa/gus/snd-gus-lib snd_gf1_look16 0x2a478a24 +sound/isa/gus/snd-gus-lib snd_gf1_look8 0x1d47f61e +sound/isa/gus/snd-gus-lib snd_gf1_lvol_to_gvol_raw 0x46db8d67 +sound/isa/gus/snd-gus-lib snd_gf1_mem_alloc 0x82800ff7 +sound/isa/gus/snd-gus-lib snd_gf1_mem_free 0xa4e13a83 +sound/isa/gus/snd-gus-lib snd_gf1_mem_lock 0xa3ed86e7 +sound/isa/gus/snd-gus-lib snd_gf1_mem_xfree 0x059d3386 +sound/isa/gus/snd-gus-lib snd_gf1_new_mixer 0x50e6a435 +sound/isa/gus/snd-gus-lib snd_gf1_pcm_new 0x0bdcce4e +sound/isa/gus/snd-gus-lib snd_gf1_peek 0x1254ffdd +sound/isa/gus/snd-gus-lib snd_gf1_poke 0x12f32f22 +sound/isa/gus/snd-gus-lib snd_gf1_rawmidi_new 0xa3d5d954 +sound/isa/gus/snd-gus-lib snd_gf1_stop_voice 0x54bc672a +sound/isa/gus/snd-gus-lib snd_gf1_translate_freq 0xf7702e22 +sound/isa/gus/snd-gus-lib snd_gf1_write16 0x3f4787ee +sound/isa/gus/snd-gus-lib snd_gf1_write8 0x542f2ae0 +sound/isa/gus/snd-gus-lib snd_gf1_write_addr 0x60623c8c +sound/isa/gus/snd-gus-lib snd_gus_create 0xd29c2e0f +sound/isa/gus/snd-gus-lib snd_gus_dram_read 0x8f16df91 +sound/isa/gus/snd-gus-lib snd_gus_dram_write 0x7b98da64 +sound/isa/gus/snd-gus-lib snd_gus_initialize 0x33587c53 +sound/isa/gus/snd-gus-lib snd_gus_interrupt 0xe8226527 +sound/isa/gus/snd-gus-lib snd_gus_use_dec 0x619d068d +sound/isa/gus/snd-gus-lib snd_gus_use_inc 0x791f07f8 +sound/isa/sb/snd-sb-common snd_sbdsp_command 0x1c3c8809 +sound/isa/sb/snd-sb-common snd_sbdsp_create 0xf2b7ba56 +sound/isa/sb/snd-sb-common snd_sbdsp_get_byte 0x1cee929e +sound/isa/sb/snd-sb-common snd_sbdsp_reset 0xf5ae86ef +sound/isa/sb/snd-sb-common snd_sbmixer_add_ctl 0xfae4e92b +sound/isa/sb/snd-sb-common snd_sbmixer_new 0x2d6b1e8c +sound/isa/sb/snd-sb-common snd_sbmixer_read 0x6f99a608 +sound/isa/sb/snd-sb-common snd_sbmixer_write 0x23dec881 +sound/isa/sb/snd-sb16-csp snd_sb_csp_new 0xda12f63d +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_configure 0xa0db2867 +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_get_pcm_ops 0xaa7112f3 +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_interrupt 0x89f51d7b +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_pcm 0x98a0cfa6 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_interrupt 0xe70f54c5 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_midi 0x3e22ce5c +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_midi_interrupt 0x04a31e91 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_pcm 0xece7147f +sound/isa/sb/snd-sbawe snd_emu8000_dma_chan 0xd8aef46a +sound/isa/sb/snd-sbawe snd_emu8000_init_fm 0x69df7d5a +sound/isa/sb/snd-sbawe snd_emu8000_load_chorus_fx 0x6a9fb85e +sound/isa/sb/snd-sbawe snd_emu8000_load_reverb_fx 0xfc02e314 +sound/isa/sb/snd-sbawe snd_emu8000_peek 0xc352f924 +sound/isa/sb/snd-sbawe snd_emu8000_peek_dw 0x020926dd +sound/isa/sb/snd-sbawe snd_emu8000_poke 0xebd3d5c5 +sound/isa/sb/snd-sbawe snd_emu8000_poke_dw 0x5d9a4d63 +sound/isa/sb/snd-sbawe snd_emu8000_update_chorus_mode 0x5c7ef8a0 +sound/isa/sb/snd-sbawe snd_emu8000_update_equalizer 0x0764ce92 +sound/isa/sb/snd-sbawe snd_emu8000_update_reverb_mode 0x4da697e1 +sound/oss/ac97_codec ac97_alloc_codec 0xa5567a6a +sound/oss/ac97_codec ac97_probe_codec 0x07581ca0 +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0x681c9f5d +sound/oss/ac97_codec ac97_release_codec 0x6497a931 +sound/oss/ac97_codec ac97_restore_state 0x449096c1 +sound/oss/ac97_codec ac97_save_state 0x2604cabc +sound/oss/ac97_codec ac97_set_adc_rate 0xfc96dcda +sound/oss/ac97_codec ac97_set_dac_rate 0x6b92d4c8 +sound/oss/ac97_codec ac97_tune_hardware 0x89748ec4 +sound/oss/ac97_codec ac97_unregister_driver 0x3771c065 +sound/oss/aci aci_port 0x0d82adb6 +sound/oss/aci aci_rw_cmd 0xcc7c4cd8 +sound/oss/aci aci_version 0x93350c87 +sound/oss/ad1848 ad1848_control 0xc04f6f67 +sound/oss/ad1848 ad1848_detect 0x845a1638 +sound/oss/ad1848 ad1848_init 0x61e6ce09 +sound/oss/ad1848 ad1848_unload 0x9bf1cc62 +sound/oss/ad1848 adintr 0x509bfb25 +sound/oss/ad1848 attach_ms_sound 0xbb1d9af2 +sound/oss/ad1848 probe_ms_sound 0x65e6d1ca +sound/oss/ad1848 unload_ms_sound 0xb29a9148 +sound/oss/mpu401 attach_mpu401 0x18254124 +sound/oss/mpu401 intchk_mpu401 0x5fe6dd42 +sound/oss/mpu401 mpuintr 0x48dfd0bc +sound/oss/mpu401 probe_mpu401 0x5c8d3e32 +sound/oss/mpu401 unload_mpu401 0x5febf284 +sound/oss/opl3 opl3_detect 0x67481767 +sound/oss/opl3 opl3_init 0xc1ec6483 +sound/oss/sb_lib probe_sbmpu 0xeec27836 +sound/oss/sb_lib sb_be_quiet 0x42424109 +sound/oss/sb_lib sb_dsp_detect 0xd8a2731c +sound/oss/sb_lib sb_dsp_init 0xc09b2ff0 +sound/oss/sb_lib sb_dsp_unload 0xc4884969 +sound/oss/sb_lib smw_free 0x450f9aea +sound/oss/sb_lib unload_sbmpu 0x74afd69c +sound/oss/sound DMAbuf_close_dma 0xc88b42ab +sound/oss/sound DMAbuf_inputintr 0xeb315d99 +sound/oss/sound DMAbuf_open_dma 0x06b3013d +sound/oss/sound DMAbuf_outputintr 0x987bcf12 +sound/oss/sound DMAbuf_start_dma 0xe056b71c +sound/oss/sound MIDIbuf_avail 0x1f395686 +sound/oss/sound audio_devs 0xdbcb77c5 +sound/oss/sound cent_tuning 0x03ce7ff7 +sound/oss/sound compute_finetune 0x04c87ec8 +sound/oss/sound conf_printf 0x0f280035 +sound/oss/sound conf_printf2 0x7bdf0907 +sound/oss/sound do_midi_msg 0xb51587f6 +sound/oss/sound load_mixer_volumes 0xa1d5f04f +sound/oss/sound midi_devs 0x12905ec4 +sound/oss/sound midi_synth_aftertouch 0xf1ea8a20 +sound/oss/sound midi_synth_bender 0xba7dd041 +sound/oss/sound midi_synth_close 0xad45df73 +sound/oss/sound midi_synth_controller 0x892093e0 +sound/oss/sound midi_synth_hw_control 0xb14b22cd +sound/oss/sound midi_synth_ioctl 0xaef743b2 +sound/oss/sound midi_synth_kill_note 0x2aa31695 +sound/oss/sound midi_synth_load_patch 0xf7426da3 +sound/oss/sound midi_synth_open 0xf6b3a2fb +sound/oss/sound midi_synth_panning 0xdb400afa +sound/oss/sound midi_synth_reset 0x56504ca2 +sound/oss/sound midi_synth_send_sysex 0xfddcbfb3 +sound/oss/sound midi_synth_set_instr 0xd85be938 +sound/oss/sound midi_synth_setup_voice 0x4ff47e9d +sound/oss/sound midi_synth_start_note 0x9bdaf24d +sound/oss/sound mixer_devs 0xe9d9af5a +sound/oss/sound note_to_freq 0x5d986fc9 +sound/oss/sound num_audiodevs 0x4cd01bdd +sound/oss/sound num_midis 0xa1eae7cf +sound/oss/sound num_mixers 0x9d845b18 +sound/oss/sound semitone_tuning 0x8b84aeb1 +sound/oss/sound seq_copy_to_input 0x7679ee76 +sound/oss/sound seq_input_event 0x17ba231d +sound/oss/sound sequencer_init 0xf78f6363 +sound/oss/sound sequencer_timer 0x90bd9714 +sound/oss/sound sound_alloc_dma 0x9a95733f +sound/oss/sound sound_alloc_mididev 0xba413f87 +sound/oss/sound sound_alloc_mixerdev 0x1b3df3cf +sound/oss/sound sound_alloc_synthdev 0xc748d109 +sound/oss/sound sound_alloc_timerdev 0x51e354b2 +sound/oss/sound sound_close_dma 0x418f5fbe +sound/oss/sound sound_free_dma 0x394cb088 +sound/oss/sound sound_install_audiodrv 0xad6b65ea +sound/oss/sound sound_install_mixer 0x72fadef1 +sound/oss/sound sound_open_dma 0xcc4b8797 +sound/oss/sound sound_timer_devs 0xa4bcbcdb +sound/oss/sound sound_timer_init 0x2161d5e8 +sound/oss/sound sound_timer_interrupt 0xe2675a79 +sound/oss/sound sound_timer_syncinterval 0xfa6871be +sound/oss/sound sound_unload_audiodev 0xa948751e +sound/oss/sound sound_unload_mididev 0xa6bb414c +sound/oss/sound sound_unload_mixerdev 0xa51c913b +sound/oss/sound sound_unload_synthdev 0x06339815 +sound/oss/sound sound_unload_timerdev 0xa41ead5f +sound/oss/sound synth_devs 0xf53c8f8c +sound/oss/uart401 probe_uart401 0x15c83a2e +sound/oss/uart401 uart401intr 0x5df70158 +sound/oss/uart401 unload_uart401 0xecfdd9c9 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x2793620d +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0xb8184139 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0x3af93550 +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0xc4189831 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0xecf7220d +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x102f1dfe +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x88d69f45 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0x9029b8ed +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0x3fcd633e +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0x41520bbc +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0x97b100ac +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0x342a2e09 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0xb20ece01 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0x3ecd9bf7 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0x99191aed +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0x74d2cab5 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0xf6cd6e61 +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0x75afaa09 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0x85c51bce +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x88273377 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0x216bd7bb +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0x7e57fac1 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0xbfe7b674 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0x5ad9d766 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0x1567a2a4 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0x8cc77cbc +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0xc6367c7d +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0xf51f0c7e +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0x8a8c29d9 +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0x71f6e416 +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0x31cee6c2 +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0xea1ddb79 +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0x1408f2f9 +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x29079314 +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0x412dcbc3 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0x75ad5713 +sound/pci/hda/snd-hda-codec snd_hda_resume 0x46630e92 +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0x2100e384 +sound/pci/hda/snd-hda-codec snd_hda_suspend 0xfe4f071b +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0x93bff2b7 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0xe834bb7f +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0x4b7d728e +sound/pci/trident/snd-trident snd_trident_alloc_voice 0xded5f7c6 +sound/pci/trident/snd-trident snd_trident_free_voice 0x3500433e +sound/pci/trident/snd-trident snd_trident_start_voice 0x2e00ed7b +sound/pci/trident/snd-trident snd_trident_stop_voice 0xae42db82 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0x3cc66722 +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0x331205bf +sound/pci/trident/snd-trident snd_trident_synth_free 0xe08c56ee +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0x504d1c21 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0x20026c1a +sound/soundcore register_sound_midi 0xdcc83969 +sound/soundcore register_sound_mixer 0x28db6e02 +sound/soundcore register_sound_special 0x05fe020d +sound/soundcore register_sound_special_device 0xf01e85f4 +sound/soundcore register_sound_synth 0xeec97e6c +sound/soundcore sound_class 0x05791ac1 +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +sound/synth/emux/snd-emux-synth snd_emux_free 0x92dd9550 +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0x627066e5 +sound/synth/emux/snd-emux-synth snd_emux_new 0x666b9bf1 +sound/synth/emux/snd-emux-synth snd_emux_register 0x996c0c68 +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0x77650d43 +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0xfe14acb9 +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0xd3c1adac +sound/synth/snd-util-mem __snd_util_mem_free 0x1fd6c8dc +sound/synth/snd-util-mem __snd_util_memblk_new 0x6b442bbf +sound/synth/snd-util-mem snd_util_mem_alloc 0xb13b09a0 +sound/synth/snd-util-mem snd_util_mem_avail 0xc6d9c71f +sound/synth/snd-util-mem snd_util_mem_free 0xea2de30c +sound/synth/snd-util-mem snd_util_memhdr_free 0x7ad0c23d +sound/synth/snd-util-mem snd_util_memhdr_new 0x0c5322df +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0x8acb0a3b +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux EISA_bus 0x7413793a +vmlinux IO_APIC_get_PCI_irq_vector 0x1eb922a3 +vmlinux I_BDEV 0xf949997d +vmlinux MCA_bus 0xf48a2c4c +vmlinux SELECT_DRIVE 0x72a7bf02 +vmlinux __PAGE_KERNEL 0x95cc2139 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0xea5ad354 +vmlinux __alloc_pages 0x90a3d4c1 +vmlinux __alloc_percpu 0x50c89f23 +vmlinux __alloc_skb 0xe2cff16c +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0xe9f4f717 +vmlinux __bio_clone 0x34114a19 +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0xc9612842 +vmlinux __bread 0x5e2b77ae +vmlinux __breadahead 0xbb308ed4 +vmlinux __break_lease 0xa5adb586 +vmlinux __brelse 0xdb107a73 +vmlinux __check_region 0xf1d0cdab +vmlinux __clear_user 0x2455c156 +vmlinux __const_udelay 0xeae3dfd6 +vmlinux __copy_from_user_ll 0x1af40e18 +vmlinux __copy_to_user_ll 0xd7474566 +vmlinux __cpufreq_driver_target 0xd3fd8f3a +vmlinux __create_workqueue 0xfcef237f +vmlinux __d_path 0x5921f1ad +vmlinux __delay 0x466c14a7 +vmlinux __dev_get_by_index 0x22e03d18 +vmlinux __dev_get_by_name 0xcc3e9827 +vmlinux __dev_remove_pack 0x292b4281 +vmlinux __down_failed 0x96b27088 +vmlinux __down_failed_interruptible 0x625acc81 +vmlinux __down_failed_trylock 0x02cd3086 +vmlinux __dst_free 0x0212271d +vmlinux __elv_add_request 0xc2b584a7 +vmlinux __find_get_block 0xc7dd441b +vmlinux __free_pages 0xb8e0400a +vmlinux __generic_file_aio_read 0x5c7c176f +vmlinux __generic_unplug_device 0x949b9284 +vmlinux __get_free_pages 0x107d6ba3 +vmlinux __get_user_1 0xd16ac615 +vmlinux __get_user_2 0x4888a014 +vmlinux __get_user_4 0xa03d6a57 +vmlinux __getblk 0x870fb93b +vmlinux __ide_abort 0xe4d90fc9 +vmlinux __ide_dma_bad_drive 0x7fb0c40e +vmlinux __ide_dma_check 0x6eafdd82 +vmlinux __ide_dma_end 0x32135d6c +vmlinux __ide_dma_good_drive 0x2018e23d +vmlinux __ide_dma_host_off 0xeb641d1e +vmlinux __ide_dma_host_on 0x767f49ae +vmlinux __ide_dma_lostirq 0x863f11d0 +vmlinux __ide_dma_off 0x24819b04 +vmlinux __ide_dma_off_quietly 0xa773fd23 +vmlinux __ide_dma_on 0x296cca98 +vmlinux __ide_dma_timeout 0x0f2b96a3 +vmlinux __ide_end_request 0xb4a55e42 +vmlinux __ide_error 0x1ce08eee +vmlinux __ide_pci_register_driver 0x42bb09d6 +vmlinux __inet_lookup_listener 0xa60ad17f +vmlinux __inet_twsk_hashdance 0x59049410 +vmlinux __inet_twsk_kill 0x5186d980 +vmlinux __init_timer_base 0xfcafa2e2 +vmlinux __inode_dir_notify 0xfb767920 +vmlinux __insert_inode_hash 0xe1965e89 +vmlinux __invalidate_device 0xa0e18dd2 +vmlinux __ioremap 0x9eac042a +vmlinux __ip_route_output_key 0x647d3946 +vmlinux __ip_select_ident 0x0a03bc0d +vmlinux __kfifo_get 0x69a6b354 +vmlinux __kfifo_put 0xd68d028d +vmlinux __kfree_skb 0xfa4734af +vmlinux __kill_fasync 0x1c646e1d +vmlinux __kmalloc 0x12da5bb2 +vmlinux __lock_buffer 0x7a54bf60 +vmlinux __lock_page 0x75fba9a6 +vmlinux __mark_inode_dirty 0x72e085b0 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xb0edb54a +vmlinux __module_put_and_exit 0x9470dc19 +vmlinux __ndelay 0xdf8c695a +vmlinux __neigh_event_send 0x91cbc60d +vmlinux __neigh_for_each_release 0x2ba9061c +vmlinux __net_timestamp 0x61def94b +vmlinux __netdev_watchdog_up 0x55c689e1 +vmlinux __nla_put 0x67b2c6c0 +vmlinux __nla_reserve 0x7211ed0d +vmlinux __page_cache_release 0x9a6d3f67 +vmlinux __pagevec_lru_add 0x96dd86c3 +vmlinux __pagevec_release 0x2bc42518 +vmlinux __pci_register_driver 0xde0830d6 +vmlinux __per_cpu_offset 0x7ecb001b +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0xa16b8ea8 +vmlinux __put_user_1 0xc3aaf0a9 +vmlinux __put_user_2 0x5a4896a8 +vmlinux __put_user_4 0xb2fd5ceb +vmlinux __put_user_8 0xb8e7ce2c +vmlinux __read_lock_failed 0xf0f4bea5 +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0xda4b1c93 +vmlinux __scm_destroy 0x4abcfb03 +vmlinux __scm_send 0x505372e0 +vmlinux __secpath_destroy 0x69e488d1 +vmlinux __serio_register_driver 0x8d3ca40e +vmlinux __serio_register_port 0x81e7381d +vmlinux __serio_unregister_port_delayed 0x49bcdfef +vmlinux __set_page_dirty_buffers 0x53d44a30 +vmlinux __set_page_dirty_nobuffers 0xbfaeb6a7 +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0xda978e66 +vmlinux __skb_checksum_complete 0x78be1f44 +vmlinux __skb_linearize 0x609b3ac3 +vmlinux __strncpy_from_user 0x9a78a84c +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x60ea5fe7 +vmlinux __tasklet_schedule 0xed5c73bf +vmlinux __tcf_em_tree_match 0x3b44fc66 +vmlinux __udelay 0x9e7d6bd0 +vmlinux __up_wakeup 0x60a4461c +vmlinux __user_walk 0x7820c029 +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0xb463bb98 +vmlinux __wait_on_bit_lock 0x798a97c6 +vmlinux __wait_on_buffer 0x0a7f3a3c +vmlinux __wake_up 0x77b5025d +vmlinux __wake_up_bit 0x4f1f19b1 +vmlinux __wake_up_sync 0xafcfc434 +vmlinux __write_lock_failed 0x61ea1589 +vmlinux __xfrm_policy_check 0x5811493b +vmlinux __xfrm_policy_destroy 0xbba9b4c7 +vmlinux __xfrm_route_forward 0xba04be53 +vmlinux __xfrm_state_destroy 0x5e3b8b4c +vmlinux _atomic_dec_and_lock 0x9f334253 +vmlinux _ctype 0x8d3894f2 +vmlinux _mmx_memcpy 0x15670e2d +vmlinux _read_lock 0x6e868533 +vmlinux _read_lock_bh 0x11ff3db4 +vmlinux _read_lock_irq 0xab40acea +vmlinux _read_lock_irqsave 0x6767ad94 +vmlinux _read_trylock 0xdcf737f3 +vmlinux _read_unlock 0xd32fe476 +vmlinux _read_unlock_bh 0xb4423388 +vmlinux _read_unlock_irq 0x848a6d63 +vmlinux _read_unlock_irqrestore 0xf04ec5be +vmlinux _spin_lock 0x24335bc9 +vmlinux _spin_lock_bh 0x6edf8ce6 +vmlinux _spin_lock_irq 0x3b0ec9f3 +vmlinux _spin_lock_irqsave 0xa989a2a6 +vmlinux _spin_trylock 0x9bf61060 +vmlinux _spin_trylock_bh 0x40f54a47 +vmlinux _spin_unlock 0x999a39b6 +vmlinux _spin_unlock_bh 0xc9b3b15f +vmlinux _spin_unlock_irq 0x8914aee6 +vmlinux _spin_unlock_irqrestore 0x6199622a +vmlinux _write_lock 0x586f435c +vmlinux _write_lock_bh 0x16029b8b +vmlinux _write_lock_irq 0x1d217c71 +vmlinux _write_lock_irqsave 0x42508630 +vmlinux _write_trylock 0xfc7b04bb +vmlinux _write_unlock 0x434dc272 +vmlinux _write_unlock_bh 0xd3291894 +vmlinux _write_unlock_irq 0x90ec5a07 +vmlinux _write_unlock_irqrestore 0x88b3bad4 +vmlinux acpi_acquire_global_lock 0x70d8ab82 +vmlinux acpi_bus_add 0x3c77d799 +vmlinux acpi_bus_generate_event 0x2641882f +vmlinux acpi_bus_get_device 0x82c3c3ad +vmlinux acpi_bus_get_power 0x7389c9a8 +vmlinux acpi_bus_get_status 0xa12caadd +vmlinux acpi_bus_receive_event 0x141dbf9b +vmlinux acpi_bus_register_driver 0xbdab2500 +vmlinux acpi_bus_set_power 0xcb733bf2 +vmlinux acpi_bus_start 0x51fe6783 +vmlinux acpi_bus_unregister_driver 0xbc650fe0 +vmlinux acpi_clear_event 0x0fd00a68 +vmlinux acpi_dbg_layer 0xb3284531 +vmlinux acpi_dbg_level 0xca8acc78 +vmlinux acpi_disable_event 0xb758b225 +vmlinux acpi_disabled 0x1a45cb6c +vmlinux acpi_ec_read 0x50a0e15a +vmlinux acpi_ec_write 0x7ff7a286 +vmlinux acpi_enable_event 0x6237f6b5 +vmlinux acpi_enable_gpe 0xf47d47e0 +vmlinux acpi_enter_sleep_state 0xb077ef32 +vmlinux acpi_enter_sleep_state_s4bios 0xa5da0abd +vmlinux acpi_evaluate_integer 0x1807e38b +vmlinux acpi_evaluate_object 0xd0470c98 +vmlinux acpi_evaluate_reference 0xc899f5f6 +vmlinux acpi_extract_package 0xe93cc1b3 +vmlinux acpi_fadt 0xddcb58d9 +vmlinux acpi_fadt_is_v1 0x01438985 +vmlinux acpi_get_child 0xda268faa +vmlinux acpi_get_current_resources 0xcf47e392 +vmlinux acpi_get_devices 0xee46feef +vmlinux acpi_get_firmware_table 0x5331e1b5 +vmlinux acpi_get_handle 0x2bfeb410 +vmlinux acpi_get_name 0xca6c95f8 +vmlinux acpi_get_next_object 0x170c25ee +vmlinux acpi_get_object_info 0x96f929e9 +vmlinux acpi_get_parent 0xfb0443fb +vmlinux acpi_get_pci_id 0x058c75d9 +vmlinux acpi_get_pci_rootbridge_handle 0x1f8ec1b3 +vmlinux acpi_get_physical_device 0x10ecb626 +vmlinux acpi_get_register 0x2b5d6f73 +vmlinux acpi_get_sleep_type_data 0x8d8d96c6 +vmlinux acpi_get_table 0x2eb2eb15 +vmlinux acpi_get_type 0x0d3dda14 +vmlinux acpi_in_suspend 0xf78a658e +vmlinux acpi_install_address_space_handler 0xff03752f +vmlinux acpi_install_fixed_event_handler 0x5ac376a5 +vmlinux acpi_install_gpe_block 0xda8ddbdf +vmlinux acpi_install_gpe_handler 0x02aff2f4 +vmlinux acpi_install_notify_handler 0xd9091363 +vmlinux acpi_map_lsapic 0xda0a6b0e +vmlinux acpi_os_create_semaphore 0x9f8733e2 +vmlinux acpi_os_delete_semaphore 0xe65a005c +vmlinux acpi_os_free 0x43b9bbb4 +vmlinux acpi_os_printf 0x667cecc9 +vmlinux acpi_os_queue_for_execution 0xdb9d67ff +vmlinux acpi_os_read_pci_configuration 0xd94c1770 +vmlinux acpi_os_read_port 0x54935666 +vmlinux acpi_os_signal 0x874aea72 +vmlinux acpi_os_signal_semaphore 0x8cdbc08d +vmlinux acpi_os_sleep 0x540f9040 +vmlinux acpi_os_stall 0x69005013 +vmlinux acpi_os_wait_events_complete 0xc9ab2eef +vmlinux acpi_os_wait_semaphore 0x2565a159 +vmlinux acpi_os_write_port 0x99052a84 +vmlinux acpi_pci_irq_enable 0x78c12ed6 +vmlinux acpi_pci_register_driver 0xd1472061 +vmlinux acpi_pci_unregister_driver 0x43385ad9 +vmlinux acpi_processor_power_init_bm_check 0xfdce9842 +vmlinux acpi_register_gsi 0x36d5355b +vmlinux acpi_register_ioapic 0x636a5691 +vmlinux acpi_release_global_lock 0x3e2ae3a8 +vmlinux acpi_remove_address_space_handler 0xfcfaa928 +vmlinux acpi_remove_fixed_event_handler 0x2005e68a +vmlinux acpi_remove_gpe_block 0x8e002cda +vmlinux acpi_remove_gpe_handler 0xb07dfb3d +vmlinux acpi_remove_notify_handler 0x2bb55d6e +vmlinux acpi_resource_to_address64 0x263b54cc +vmlinux acpi_root_dir 0x8894cbad +vmlinux acpi_set_current_resources 0x45bb0352 +vmlinux acpi_set_gpe_type 0xa3bbcd80 +vmlinux acpi_set_register 0x4a9d86e3 +vmlinux acpi_specific_hotkey_enabled 0x46621493 +vmlinux acpi_strict 0xa59c0666 +vmlinux acpi_unmap_lsapic 0xd18b6eb2 +vmlinux acpi_unregister_ioapic 0xe716baed +vmlinux acpi_walk_namespace 0x19d5d20a +vmlinux acpi_walk_resources 0x375c5115 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0x9a88f497 +vmlinux add_disk_randomness 0xbc925558 +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0xcc99c7c5 +vmlinux add_wait_queue 0xc25108d8 +vmlinux add_wait_queue_exclusive 0x1265289b +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0xba5141b8 +vmlinux aio_put_req 0x64a110fb +vmlinux alloc_buffer_head 0xf6ede18f +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0x76c38b5c +vmlinux alloc_disk_node 0x221a2e44 +vmlinux alloc_etherdev 0x5f874cfd +vmlinux alloc_fcdev 0x64e7df2f +vmlinux alloc_fddidev 0x0d1cd670 +vmlinux alloc_hippi_dev 0x8f398257 +vmlinux alloc_netdev 0xc415af1d +vmlinux alloc_page_buffers 0xc3b03e60 +vmlinux alloc_trdev 0x8aaa58b1 +vmlinux alloc_tty_driver 0x05d2043e +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0xe751d941 +vmlinux anon_transport_class_unregister 0x74cc2485 +vmlinux apm_info 0x1d40ed44 +vmlinux arch_acpi_processor_init_pdc 0xad25c01d +vmlinux arch_register_cpu 0x2dd16564 +vmlinux arch_unregister_cpu 0x0237b57a +vmlinux arp_broken_ops 0x365ad8c6 +vmlinux arp_create 0xf0e41399 +vmlinux arp_find 0x881e3fbf +vmlinux arp_rcv 0x0567b359 +vmlinux arp_send 0xebafc4b9 +vmlinux arp_tbl 0xa74e0262 +vmlinux arp_xmit 0x1368542b +vmlinux atm_alloc_charge 0xbb66c8d7 +vmlinux atm_charge 0x143c03af +vmlinux atm_dev_deregister 0xb2da8e0f +vmlinux atm_dev_lookup 0xab805717 +vmlinux atm_dev_register 0xcf5d57e6 +vmlinux atm_init_aal5 0x1c817409 +vmlinux atm_pcr_goal 0xf49bc67a +vmlinux atm_proc_root 0x22ed987c +vmlinux attribute_container_add_attrs 0x09a98e84 +vmlinux attribute_container_add_class_device 0xe387cb7c +vmlinux attribute_container_add_class_device_adapter 0x60a86c7f +vmlinux attribute_container_class_device_del 0xe0dc8e85 +vmlinux attribute_container_classdev_to_container 0x1c38cf77 +vmlinux attribute_container_device_trigger 0x242c5c49 +vmlinux attribute_container_find_class_device 0x3b5d1484 +vmlinux attribute_container_register 0x354b6e86 +vmlinux attribute_container_remove_attrs 0x975b7731 +vmlinux attribute_container_remove_device 0x934ef2fd +vmlinux attribute_container_trigger 0x3a1a23d8 +vmlinux attribute_container_unregister 0x10aa1803 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x20624e4e +vmlinux bd_claim 0x5c70c6e5 +vmlinux bd_release 0x57f287e2 +vmlinux bd_set_size 0x26d068cc +vmlinux bdev_read_only 0x2a7cc8a7 +vmlinux bdevname 0x4f4b122e +vmlinux bdget 0x0413ae81 +vmlinux bdput 0xbff496a0 +vmlinux bfifo_qdisc_ops 0x2694f6e6 +vmlinux bio_add_page 0x85b94153 +vmlinux bio_alloc 0xa5d5ddab +vmlinux bio_alloc_bioset 0x61c562d5 +vmlinux bio_clone 0x00e33bae +vmlinux bio_copy_user 0x46a4e58a +vmlinux bio_endio 0xb7d20b8d +vmlinux bio_free 0x9ef592f1 +vmlinux bio_get_nr_vecs 0x0493c338 +vmlinux bio_hw_segments 0xcd1a863e +vmlinux bio_init 0x66188bdf +vmlinux bio_map_kern 0xd8ee7100 +vmlinux bio_map_user 0x8ef24ecc +vmlinux bio_pair_release 0x661803df +vmlinux bio_phys_segments 0x1b237ca5 +vmlinux bio_put 0xa1df9be9 +vmlinux bio_split 0x4adfee33 +vmlinux bio_split_pool 0x44722aee +vmlinux bio_uncopy_user 0x12dcebf5 +vmlinux bio_unmap_user 0x5b973a94 +vmlinux bioset_create 0xb9b704ad +vmlinux bioset_free 0x2f2c32e4 +vmlinux bit_waitqueue 0x3fe828b2 +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0xe0356598 +vmlinux blk_alloc_queue_node 0x5e13027c +vmlinux blk_cleanup_queue 0x188317be +vmlinux blk_complete_barrier_rq 0xbc8cbfbd +vmlinux blk_complete_barrier_rq_locked 0xaf20db57 +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0xd4e9e0bf +vmlinux blk_end_sync_rq 0xe25a8b77 +vmlinux blk_execute_rq 0x7890376e +vmlinux blk_get_backing_dev_info 0xf9f4b3c8 +vmlinux blk_get_queue 0x18343fa4 +vmlinux blk_get_request 0x51cd16d7 +vmlinux blk_init_queue 0xdd641177 +vmlinux blk_init_queue_node 0xe76ccf84 +vmlinux blk_insert_request 0xd038dd68 +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0xb8f91682 +vmlinux blk_put_request 0x89fafd37 +vmlinux blk_queue_activity_fn 0xdad5aaaa +vmlinux blk_queue_bounce 0x6f41081a +vmlinux blk_queue_bounce_limit 0xf234bbb3 +vmlinux blk_queue_dma_alignment 0x6b5a6a04 +vmlinux blk_queue_end_tag 0x5ce10990 +vmlinux blk_queue_find_tag 0xec3702a6 +vmlinux blk_queue_free_tags 0x08f925e1 +vmlinux blk_queue_hardsect_size 0x570a9b20 +vmlinux blk_queue_init_tags 0x693d723f +vmlinux blk_queue_invalidate_tags 0x8c3d8bf4 +vmlinux blk_queue_issue_flush_fn 0x75160d53 +vmlinux blk_queue_make_request 0xf0c5ef2d +vmlinux blk_queue_max_hw_segments 0xa18382c5 +vmlinux blk_queue_max_phys_segments 0xc628b25c +vmlinux blk_queue_max_sectors 0x66307081 +vmlinux blk_queue_max_segment_size 0x44265af8 +vmlinux blk_queue_merge_bvec 0x957ea8a9 +vmlinux blk_queue_ordered 0x30d92bd7 +vmlinux blk_queue_prep_rq 0x91548d5c +vmlinux blk_queue_resize_tags 0xa565247d +vmlinux blk_queue_segment_boundary 0x9a7d2f68 +vmlinux blk_queue_stack_limits 0x933d6143 +vmlinux blk_queue_start_tag 0xa87a7135 +vmlinux blk_register_region 0xbbf73233 +vmlinux blk_remove_plug 0x158f0ae0 +vmlinux blk_requeue_request 0x9b9e0d6b +vmlinux blk_rq_bio_prep 0x303c3103 +vmlinux blk_rq_map_kern 0x6d60837e +vmlinux blk_rq_map_sg 0xa56adbe7 +vmlinux blk_rq_map_user 0x7ed8dae7 +vmlinux blk_rq_map_user_iov 0x4f8c83c4 +vmlinux blk_rq_unmap_user 0x2af36f88 +vmlinux blk_run_queue 0xca97fef9 +vmlinux blk_start_queue 0x2d405560 +vmlinux blk_stop_queue 0xc9184caa +vmlinux blk_sync_queue 0x82ef3bff +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0x6d0dced4 +vmlinux blkdev_ioctl 0x27362cad +vmlinux blkdev_issue_flush 0x96b086ce +vmlinux blkdev_put 0x822be5c4 +vmlinux block_all_signals 0x4b34fbf5 +vmlinux block_commit_write 0x95395756 +vmlinux block_invalidatepage 0xf631a556 +vmlinux block_prepare_write 0x455f2a73 +vmlinux block_read_full_page 0xc93880f3 +vmlinux block_sync_page 0xc82ab56f +vmlinux block_truncate_page 0xde07372b +vmlinux block_write_full_page 0xaeecf95b +vmlinux bmap 0xd4d73585 +vmlinux boot_cpu_data 0xeacf98c5 +vmlinux boot_option_idle_override 0xef9aedfc +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0x42fa20bc +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0xa7c9b821 +vmlinux bus_create_file 0x280a63ef +vmlinux bus_find_device 0xfe2debe4 +vmlinux bus_for_each_dev 0x830c88fa +vmlinux bus_for_each_drv 0xadad0d9c +vmlinux bus_register 0x5bab4715 +vmlinux bus_remove_device 0xbe4bb86a +vmlinux bus_remove_file 0x9b706d80 +vmlinux bus_rescan_devices 0xa60a0e95 +vmlinux bus_unregister 0x9a8d62cf +vmlinux call_rcu 0x8706fba7 +vmlinux call_rcu_bh 0xc329096e +vmlinux call_usermodehelper_keys 0x253841f3 +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0xa84a606e +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x32b89fb4 +vmlinux cdev_alloc 0xd0054ad3 +vmlinux cdev_del 0x684f5212 +vmlinux cdev_init 0xb2e57f80 +vmlinux cfb_copyarea 0xdaa34962 +vmlinux cfb_fillrect 0x7066c9f3 +vmlinux cfb_imageblit 0x415c5166 +vmlinux change_page_attr 0x5f08cbca +vmlinux check_disk_change 0x4f6285f7 +vmlinux class_create 0xa3d6a09d +vmlinux class_create_file 0xbae582d5 +vmlinux class_destroy 0xbde0c5c8 +vmlinux class_device_add 0xe164160c +vmlinux class_device_create 0x5c36d579 +vmlinux class_device_create_bin_file 0xbf08a0e5 +vmlinux class_device_create_file 0x691b1bef +vmlinux class_device_del 0x62156f41 +vmlinux class_device_destroy 0x4c5ec991 +vmlinux class_device_get 0x4080e1d4 +vmlinux class_device_initialize 0x6159a9fb +vmlinux class_device_put 0xc2a65cb5 +vmlinux class_device_register 0xafa45ec9 +vmlinux class_device_remove_bin_file 0x691ddb06 +vmlinux class_device_remove_file 0xbf199070 +vmlinux class_device_unregister 0x77364dc0 +vmlinux class_get 0xfbc446c1 +vmlinux class_interface_register 0x6910ca77 +vmlinux class_interface_unregister 0xd26c0163 +vmlinux class_put 0x60a4e0c1 +vmlinux class_register 0x20d62ba4 +vmlinux class_remove_file 0x4679306f +vmlinux class_unregister 0x43c2c0f0 +vmlinux clear_inode 0x95266eb7 +vmlinux clear_page_dirty_for_io 0x3eac3a78 +vmlinux clear_user 0x7da99cdd +vmlinux clip_tbl_hook 0xba4017e2 +vmlinux close_bdev_excl 0xffeab8fe +vmlinux cmos_lock 0x9a6a83f9 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0xac57f82b +vmlinux complete_all 0x45d61a0f +vmlinux complete_and_exit 0x0f167e68 +vmlinux compute_creds 0x83c7af86 +vmlinux con_copy_unimap 0x5e01542f +vmlinux con_set_default_unimap 0x05107535 +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0x60fa99a7 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0xb3f9c5cd +vmlinux console_stop 0x4dbf6c34 +vmlinux cont_prepare_write 0x4d1fdc23 +vmlinux contig_page_data 0xc34e1a13 +vmlinux copy_from_user 0xf2a644fb +vmlinux copy_fs_struct 0xa571e881 +vmlinux copy_io_context 0x82421ac1 +vmlinux copy_strings_kernel 0x701d43a3 +vmlinux copy_to_user 0x2da418b5 +vmlinux cpu_callout_map 0x6122a73e +vmlinux cpu_core_map 0x4a63a4a0 +vmlinux cpu_data 0x280de8fd +vmlinux cpu_gdt_descr 0x17e523c4 +vmlinux cpu_idle_wait 0xb53ae573 +vmlinux cpu_khz 0xd6b33026 +vmlinux cpu_online_map 0x8df9f666 +vmlinux cpu_possible_map 0xe1e774bc +vmlinux cpu_present_map 0x56c5486e +vmlinux cpu_sibling_map 0x2cfcba0a +vmlinux cpu_sysdev_class 0xb12b0955 +vmlinux cpufreq_cpu_get 0x1ad45bee +vmlinux cpufreq_cpu_put 0xc9eb822a +vmlinux cpufreq_driver_target 0x50ad96fe +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0xec985622 +vmlinux cpufreq_gov_performance 0xd7300979 +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0xe6488b47 +vmlinux cpufreq_parse_governor 0xdbb2e7ed +vmlinux cpufreq_register_driver 0x6c98b445 +vmlinux cpufreq_register_governor 0xcb0cb94b +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0x5faffb68 +vmlinux cpufreq_unregister_driver 0x653d2b85 +vmlinux cpufreq_unregister_governor 0x8ba2f5a0 +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0xb7b61546 +vmlinux crc32_le 0xa34f1ef5 +vmlinux create_empty_buffers 0xbf0c0668 +vmlinux create_proc_entry 0x37ca8342 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0x54b2f7ab +vmlinux crypto_free_tfm 0xb370e5d2 +vmlinux crypto_hmac 0xcb64e367 +vmlinux crypto_hmac_final 0x46fd4a26 +vmlinux crypto_hmac_init 0xb4982a87 +vmlinux crypto_hmac_update 0xc60faf46 +vmlinux crypto_register_alg 0x8e8c59b4 +vmlinux crypto_unregister_alg 0x7d3e8a5a +vmlinux csum_partial 0x9a3de8f8 +vmlinux csum_partial_copy_fromiovecend 0x02876657 +vmlinux csum_partial_copy_generic 0xd7359fa8 +vmlinux current_fs_time 0xd75c4434 +vmlinux current_io_context 0xa9dd6b91 +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0x53abfa24 +vmlinux d_alloc_anon 0xe51d0200 +vmlinux d_alloc_name 0x4151294e +vmlinux d_alloc_root 0xd3c92426 +vmlinux d_delete 0x98402c11 +vmlinux d_find_alias 0x87e868e1 +vmlinux d_genocide 0x394d4d00 +vmlinux d_instantiate 0x914c1546 +vmlinux d_instantiate_unique 0x6fa1e2f5 +vmlinux d_invalidate 0xcfa964e5 +vmlinux d_lookup 0xd993f428 +vmlinux d_move 0xc2fde584 +vmlinux d_path 0x1363ce29 +vmlinux d_prune_aliases 0x855bab53 +vmlinux d_rehash 0x7e48d9a3 +vmlinux d_splice_alias 0x31f654d6 +vmlinux d_validate 0xbe55fea3 +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0x03636285 +vmlinux dcache_dir_close 0x77c6841d +vmlinux dcache_dir_lseek 0x35c1c7f5 +vmlinux dcache_dir_open 0x2cefb080 +vmlinux dcache_lock 0x9c4fb5fb +vmlinux dcache_readdir 0xee566782 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0xfbc11fbd +vmlinux default_backing_dev_info 0x11c86e30 +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0xee60a1ff +vmlinux default_idle 0x92897e3d +vmlinux default_llseek 0x293830ce +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x81f9698a +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0xf641acf1 +vmlinux del_timer 0x9b1622fc +vmlinux del_timer_sync 0xcf58e6f3 +vmlinux dentry_open 0x7be2bc3c +vmlinux dentry_unhash 0x7137e44b +vmlinux dequeue_signal 0x171fc4ae +vmlinux deregister_atm_ioctl 0x51412713 +vmlinux destroy_8023_client 0x963b14eb +vmlinux destroy_EII_client 0xef6d09ad +vmlinux destroy_workqueue 0x1c0e5aa1 +vmlinux dev_add_pack 0x093188ee +vmlinux dev_alloc_name 0x94c8ca40 +vmlinux dev_base 0x59b84c0d +vmlinux dev_base_lock 0xcbc6fc20 +vmlinux dev_change_flags 0xed26c25b +vmlinux dev_close 0x287e8178 +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0xe15b45c2 +vmlinux dev_get_by_index 0xb2336f2b +vmlinux dev_get_by_name 0x369a7db6 +vmlinux dev_get_flags 0x66fc0ade +vmlinux dev_getbyhwaddr 0x75868046 +vmlinux dev_getfirstbyhwtype 0x0d83959a +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0x4443bccc +vmlinux dev_mc_delete 0x25d402b4 +vmlinux dev_mc_upload 0x6c98c75d +vmlinux dev_open 0x9ae07f41 +vmlinux dev_queue_xmit 0xa8620996 +vmlinux dev_remove_pack 0x5f687222 +vmlinux dev_set_allmulti 0x72318858 +vmlinux dev_set_mac_address 0x3f7c1668 +vmlinux dev_set_mtu 0xdebcf8cd +vmlinux dev_set_promiscuity 0x635378d7 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0x0f09ce7f +vmlinux device_attach 0x4c5f2ece +vmlinux device_bind_driver 0x8eef9344 +vmlinux device_create_file 0xecd99264 +vmlinux device_del 0x4ca3524a +vmlinux device_for_each_child 0xfc5bf5b0 +vmlinux device_initialize 0x84701fc9 +vmlinux device_pm_set_parent 0x299dfb81 +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0x37163daa +vmlinux device_release_driver 0xcc40cc14 +vmlinux device_remove_file 0x26a59a1a +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0x86498a57 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0xe36f58e4 +vmlinux disable_hlt 0x794487ee +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disable_timer_nmi_watchdog 0xf2fb62ee +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_alloc_coherent 0x70cdd650 +vmlinux dma_declare_coherent_memory 0x532c58f8 +vmlinux dma_free_coherent 0x3fb139b4 +vmlinux dma_get_required_mask 0x96de42ec +vmlinux dma_mark_declared_memory_occupied 0xb3cc7893 +vmlinux dma_pool_alloc 0x9f162359 +vmlinux dma_pool_create 0x5367e4f5 +vmlinux dma_pool_destroy 0xe1e0e01f +vmlinux dma_pool_free 0x8756a8c8 +vmlinux dma_release_declared_memory 0x745e35ad +vmlinux dma_spin_lock 0xfedbb44a +vmlinux dmi_check_system 0xf5633477 +vmlinux dmi_find_device 0xfe7bde5e +vmlinux dmi_get_system_info 0x6a5b6ea4 +vmlinux dnotify_parent 0x68b617f0 +vmlinux do_SAK 0x7d1e8c3c +vmlinux do_add_mount 0x96094992 +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x7ea7d551 +vmlinux do_generic_mapping_read 0x977ab524 +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0xa7e45576 +vmlinux do_mmap_pgoff 0xe972bd71 +vmlinux do_munmap 0xeb2803aa +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0xf9209b9b +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0xf0a529b7 +vmlinux do_sync_read 0x728777b5 +vmlinux do_sync_write 0xf06f01a9 +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0x4386a9f3 +vmlinux dput 0x0f5759c9 +vmlinux dq_data_lock 0xcd948d98 +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x9e8745b4 +vmlinux dquot_alloc_inode 0xffbe32ca +vmlinux dquot_alloc_space 0xfe1fa0e6 +vmlinux dquot_commit 0x7a0d9693 +vmlinux dquot_commit_info 0xa2fa4ec3 +vmlinux dquot_drop 0xc3991308 +vmlinux dquot_free_inode 0x90de72a3 +vmlinux dquot_free_space 0x08c31b80 +vmlinux dquot_initialize 0x18c26ba2 +vmlinux dquot_mark_dquot_dirty 0x8de52df6 +vmlinux dquot_release 0x69f921a3 +vmlinux dquot_transfer 0xabbcc943 +vmlinux drive_info 0x5aaa7cd3 +vmlinux drive_is_ready 0xf1eb7ba2 +vmlinux driver_attach 0x14c68ae3 +vmlinux driver_create_file 0x2fe64f8f +vmlinux driver_find 0xa6eb215a +vmlinux driver_find_device 0x997e70ea +vmlinux driver_for_each_device 0x8fad972d +vmlinux driver_register 0x2e8fa5b8 +vmlinux driver_remove_file 0x5a306538 +vmlinux driver_unregister 0x8df518f4 +vmlinux drop_super 0x776fcb6e +vmlinux dst_alloc 0x020a79fe +vmlinux dst_destroy 0x67ccc101 +vmlinux dump_fpu 0xf7e7d3e6 +vmlinux dump_stack 0x6b2dc060 +vmlinux dump_thread 0xae90b20c +vmlinux ec_read 0xba2d8594 +vmlinux ec_write 0x876dafc3 +vmlinux edid_info 0xbbb98859 +vmlinux efi 0x4f1b2bc8 +vmlinux efi_enabled 0x0933aae1 +vmlinux eighty_ninty_three 0x5ba4043e +vmlinux eisa_bus_type 0x4e3fc3c6 +vmlinux eisa_driver_register 0x4919a7ad +vmlinux eisa_driver_unregister 0x1bae95c8 +vmlinux elevator_exit 0x5158a507 +vmlinux elevator_init 0xa959e573 +vmlinux elv_add_request 0x919d1632 +vmlinux elv_completed_request 0x53bc5bc3 +vmlinux elv_dequeue_request 0xad69fc53 +vmlinux elv_dispatch_sort 0x1acf49e8 +vmlinux elv_next_request 0x9e922f99 +vmlinux elv_queue_empty 0x3bc88e8b +vmlinux elv_register 0xd526fefb +vmlinux elv_requeue_request 0x8bd39830 +vmlinux elv_rq_merge_ok 0x9a37211e +vmlinux elv_try_merge 0xf8a6a8ce +vmlinux elv_unregister 0x91ea2795 +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_hlt 0x9c7077bd +vmlinux enable_irq 0xfcec0987 +vmlinux enable_timer_nmi_watchdog 0x13f54343 +vmlinux end_buffer_async_write 0xaae5f2e5 +vmlinux end_buffer_read_sync 0xed7ef9a0 +vmlinux end_buffer_write_sync 0x019cd36e +vmlinux end_page_writeback 0xc37147f6 +vmlinux end_request 0x27f59bb6 +vmlinux end_that_request_chunk 0x3fb3603e +vmlinux end_that_request_first 0x06e73c46 +vmlinux end_that_request_last 0xa0d5f4e3 +vmlinux eth_type_trans 0x83c6ab10 +vmlinux ether_setup 0x0ffe99bd +vmlinux ethtool_op_get_link 0xa168cb52 +vmlinux ethtool_op_get_perm_addr 0x79b8116d +vmlinux ethtool_op_get_sg 0x8e530705 +vmlinux ethtool_op_get_tso 0xd92cc91c +vmlinux ethtool_op_get_tx_csum 0xe7ca1b9e +vmlinux ethtool_op_get_ufo 0x890a1dc0 +vmlinux ethtool_op_set_sg 0x783b7536 +vmlinux ethtool_op_set_tso 0x7021c233 +vmlinux ethtool_op_set_tx_csum 0xc373a455 +vmlinux ethtool_op_set_tx_hw_csum 0x3ebfd5b3 +vmlinux ethtool_op_set_ufo 0x2598eaa7 +vmlinux exit_fs 0x694c081d +vmlinux f_setown 0x7729a31a +vmlinux fasync_helper 0xbaf3f08c +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x366e5c58 +vmlinux fb_con_duit 0x6bcb0c62 +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0x5b1aaa3a +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0xa18eb030 +vmlinux fb_get_buffer_offset 0xe6609665 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0x1e587155 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0xb9ff0a68 +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0x608be026 +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x1d58e4db +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0x9c5fb338 +vmlinux fb_set_suspend 0x4ad97d6d +vmlinux fb_set_var 0xc9750861 +vmlinux fb_show_logo 0x54238f9d +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x6c4df20c +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fd_install 0x0eb3c7b7 +vmlinux fddi_type_trans 0xc2053420 +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0xd574d372 +vmlinux file_fsync 0x396be785 +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0xcaaf8919 +vmlinux filemap_fdatawait 0x7eda1071 +vmlinux filemap_fdatawrite 0x2a0a253a +vmlinux filemap_flush 0x7d55c846 +vmlinux filemap_nopage 0xf4c3cf19 +vmlinux filemap_populate 0x04f25a3b +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0xc7ff0977 +vmlinux filp_open 0xe6308e31 +vmlinux find_bus 0x369a7f40 +vmlinux find_get_page 0x04f41241 +vmlinux find_inode_number 0xbc7f8f88 +vmlinux find_lock_page 0x3fbe0902 +vmlinux find_next_bit 0x2ff92ca0 +vmlinux find_next_zero_bit 0xdc01a06e +vmlinux find_or_create_page 0xdd6c0d8b +vmlinux find_task_by_pid_type 0xf131b49c +vmlinux find_trylock_page 0x1a0bc5fe +vmlinux find_vma 0x4bfd1731 +vmlinux finish_wait 0xaf55ca0c +vmlinux firmware_register 0xb74952fe +vmlinux firmware_unregister 0xc94f4555 +vmlinux flock_lock_file_wait 0x643b8e9e +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_old_exec 0x230093f3 +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x62d1a74f +vmlinux flush_tlb_page 0x2898c980 +vmlinux flush_workqueue 0x665cefc0 +vmlinux follow_down 0x6ea15925 +vmlinux follow_up 0xa175c9cf +vmlinux force_sig 0xaf48214e +vmlinux fput 0x33c5df84 +vmlinux framebuffer_alloc 0xd5914fcb +vmlinux framebuffer_release 0x3302853d +vmlinux free_buffer_head 0xb0ddda79 +vmlinux free_dma 0x72b243d4 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0x50d0ef24 +vmlinux free_pages 0x9941ccb8 +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0xbf335ffc +vmlinux freeze_bdev 0xd244d76d +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0xa218fb32 +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0xcc16aa57 +vmlinux gen_replace_estimator 0x11cc7fd8 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x2252f01b +vmlinux generic_block_bmap 0xfb226255 +vmlinux generic_commit_write 0xaefafa3d +vmlinux generic_cont_expand 0x473b58df +vmlinux generic_delete_inode 0x6a0c993b +vmlinux generic_drop_inode 0x4074a6c1 +vmlinux generic_file_aio_read 0xd198cad1 +vmlinux generic_file_aio_write 0x40d6112c +vmlinux generic_file_aio_write_nolock 0x9e629bc0 +vmlinux generic_file_buffered_write 0x81798f92 +vmlinux generic_file_direct_write 0x213dbbb3 +vmlinux generic_file_llseek 0x044f59dd +vmlinux generic_file_mmap 0x10d80744 +vmlinux generic_file_open 0x860061b4 +vmlinux generic_file_read 0x08d7e2ef +vmlinux generic_file_readonly_mmap 0xff326a83 +vmlinux generic_file_readv 0x2ecece2c +vmlinux generic_file_sendfile 0xe9e391f9 +vmlinux generic_file_write 0xd04d037e +vmlinux generic_file_write_nolock 0xb512d485 +vmlinux generic_file_writev 0x8891ef0d +vmlinux generic_fillattr 0xc98573ed +vmlinux generic_getxattr 0xd0e2fa95 +vmlinux generic_ide_ioctl 0x850d2f5d +vmlinux generic_listxattr 0xc333880a +vmlinux generic_make_request 0xb1be3130 +vmlinux generic_osync_inode 0x6d405b79 +vmlinux generic_permission 0xf2c14b22 +vmlinux generic_read_dir 0x52c8426b +vmlinux generic_readlink 0x0143c149 +vmlinux generic_removexattr 0xd6bd8302 +vmlinux generic_ro_fops 0x6a5e2753 +vmlinux generic_setxattr 0x4785b81e +vmlinux generic_shutdown_super 0x1973baf2 +vmlinux generic_unplug_device 0xc195ce1a +vmlinux generic_write_checks 0x3864cf84 +vmlinux genl_register_family 0xe98cab35 +vmlinux genl_register_ops 0x5b0ec995 +vmlinux genl_sock 0x1f18d5e6 +vmlinux genl_unregister_family 0x87013f18 +vmlinux genl_unregister_ops 0x4c6da424 +vmlinux get_bus 0x5a6a9339 +vmlinux get_cmos_time 0xb31ddfb4 +vmlinux get_cpu_sysdev 0x1566b10a +vmlinux get_dcookie 0xb78621a0 +vmlinux get_device 0x5728ac58 +vmlinux get_disk 0xeba91557 +vmlinux get_driver 0xc82fa7a3 +vmlinux get_empty_filp 0x1692d717 +vmlinux get_fs_type 0x6e8c96e3 +vmlinux get_io_context 0xe8493f32 +vmlinux get_jiffies_64 0x37e74642 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0xb430d866 +vmlinux get_sb_nodev 0xad8210b6 +vmlinux get_sb_pseudo 0xef975235 +vmlinux get_sb_single 0x4f8217c8 +vmlinux get_super 0x3ad8104d +vmlinux get_task_mm 0xc316d980 +vmlinux get_unmapped_area 0xbe3b46dc +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x2a7ad4a8 +vmlinux get_wchan 0x666db66e +vmlinux get_write_access 0x7fcc6e01 +vmlinux get_zeroed_page 0x2c2512ea +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x27e77eb8 +vmlinux global_flush_tlb 0x3167ea19 +vmlinux gnet_stats_copy_app 0x438635a3 +vmlinux gnet_stats_copy_basic 0xb8dd1da3 +vmlinux gnet_stats_copy_queue 0x68fc5dd7 +vmlinux gnet_stats_copy_rate_est 0xb8e57f47 +vmlinux gnet_stats_finish_copy 0xaa818a86 +vmlinux gnet_stats_start_copy 0x4d58382c +vmlinux gnet_stats_start_copy_compat 0x589ef3f7 +vmlinux grab_cache_page_nowait 0x20ac46bf +vmlinux groups_alloc 0x51cd47e2 +vmlinux groups_free 0x111bcb2c +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0x52adaf08 +vmlinux have_submounts 0xe722ff0e +vmlinux high_memory 0x8a7d1c31 +vmlinux hippi_type_trans 0xac4613bb +vmlinux hpet_alloc 0x686f1325 +vmlinux hpet_control 0x1de314f3 +vmlinux hpet_register 0x741f1f6e +vmlinux hpet_unregister 0x63dfe1b4 +vmlinux hwmon_device_register 0x627d77f3 +vmlinux hwmon_device_unregister 0x4b478cdb +vmlinux i8253_lock 0x4be58ac2 +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x26026a1a +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_acpi_exec_tfs 0x366451a0 +vmlinux ide_acpi_get_timing 0x0079251b +vmlinux ide_acpi_init 0x031f36e3 +vmlinux ide_acpi_push_timing 0xaa4c1073 +vmlinux ide_add_setting 0x5047f4ed +vmlinux ide_build_dmatable 0x1508a426 +vmlinux ide_build_sglist 0x7c0e3f8f +vmlinux ide_bus_type 0x26f65baa +vmlinux ide_config_drive_speed 0x8faa7df3 +vmlinux ide_destroy_dmatable 0x4dea548f +vmlinux ide_dma_enable 0x76928c1d +vmlinux ide_dma_intr 0x667eb384 +vmlinux ide_dma_setup 0x8d41df19 +vmlinux ide_dma_speed 0xec8c4efd +vmlinux ide_dma_start 0xb586ab3d +vmlinux ide_dma_verbose 0x2165923a +vmlinux ide_do_drive_cmd 0x30cbb1cc +vmlinux ide_do_reset 0xbeb3c161 +vmlinux ide_dump_status 0x86a7af75 +vmlinux ide_end_drive_cmd 0xf2b01733 +vmlinux ide_end_request 0xee86d379 +vmlinux ide_error 0xf5f9b641 +vmlinux ide_execute_command 0xb5bc6251 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x34af5f9a +vmlinux ide_get_error_location 0x3119f891 +vmlinux ide_hwifs 0xad808434 +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0x5d7ce7a3 +vmlinux ide_init_drive_cmd 0xb822dac1 +vmlinux ide_init_sg_cmd 0x9d2bb806 +vmlinux ide_lock 0xb2e7506b +vmlinux ide_map_sg 0x62e1016e +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x9a63b9ee +vmlinux ide_pci_unregister_driver 0xabbca4be +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0x06c5dad7 +vmlinux ide_register_hw 0x30dab86a +vmlinux ide_register_hw_with_fixup 0x74abf2b5 +vmlinux ide_register_region 0xb9c08643 +vmlinux ide_register_subdriver 0x63c9285b +vmlinux ide_set_handler 0xb81fab82 +vmlinux ide_set_xfer_rate 0xb7649a50 +vmlinux ide_setup_dma 0xd02a2c6d +vmlinux ide_setup_pci_device 0xacfc707c +vmlinux ide_setup_pci_devices 0x11d3c08d +vmlinux ide_setup_pci_noise 0xd91503d0 +vmlinux ide_spin_wait_hwgroup 0xc8cd254d +vmlinux ide_stall_queue 0x6c6a9f97 +vmlinux ide_undecoded_slave 0x9c8b6a1a +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0x3af8d2a9 +vmlinux ide_unregister_subdriver 0xf51ef18c +vmlinux ide_use_dma 0xdaeb2323 +vmlinux ide_wait_not_busy 0x682fa6a1 +vmlinux ide_wait_stat 0x25c9b6c6 +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0x854bdbc0 +vmlinux idr_find 0x5cd7af21 +vmlinux idr_get_new 0x267350e0 +vmlinux idr_get_new_above 0x8d693c63 +vmlinux idr_init 0x6abe4095 +vmlinux idr_pre_get 0x0c42ce16 +vmlinux idr_remove 0xcc631f44 +vmlinux iget5_locked 0x7fd3f40a +vmlinux iget_locked 0x93595045 +vmlinux igrab 0x2ddf3e43 +vmlinux ilookup 0x164eac22 +vmlinux ilookup5 0x633eba65 +vmlinux ilookup5_nowait 0xa0f0720c +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0xd8752e66 +vmlinux in_egroup_p 0xd8a2ab95 +vmlinux in_group_p 0xc3cf1128 +vmlinux in_lock_functions 0x09d44df9 +vmlinux inet6_lookup 0xd8b7d6c8 +vmlinux inet6_lookup_listener 0x6bf591f2 +vmlinux inet_accept 0xbd3ea340 +vmlinux inet_add_protocol 0x17df0429 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0xdbaeccac +vmlinux inet_bind_bucket_create 0x1c6cfb8c +vmlinux inet_bind_hash 0x740f5c51 +vmlinux inet_csk_accept 0x03c2ae32 +vmlinux inet_csk_clear_xmit_timers 0xf3654fdb +vmlinux inet_csk_clone 0xc5a83721 +vmlinux inet_csk_delete_keepalive_timer 0x6e83cf0d +vmlinux inet_csk_destroy_sock 0x473b3514 +vmlinux inet_csk_get_port 0xb1946d81 +vmlinux inet_csk_init_xmit_timers 0x245f7ff3 +vmlinux inet_csk_listen_start 0xd03416f8 +vmlinux inet_csk_listen_stop 0x2914cf1b +vmlinux inet_csk_reqsk_queue_hash_add 0x61486985 +vmlinux inet_csk_reqsk_queue_prune 0x46e56284 +vmlinux inet_csk_reset_keepalive_timer 0xbf3d1762 +vmlinux inet_csk_route_req 0x26ca93f2 +vmlinux inet_csk_search_req 0x9eb93e72 +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0xb3e9a723 +vmlinux inet_dgram_connect 0x5b17807a +vmlinux inet_dgram_ops 0x5da2062d +vmlinux inet_diag_register 0x71162db3 +vmlinux inet_diag_unregister 0x83771e00 +vmlinux inet_getname 0x3709668d +vmlinux inet_ioctl 0x27376486 +vmlinux inet_listen 0xafd7d593 +vmlinux inet_listen_wlock 0x7c56aabd +vmlinux inet_put_port 0xa6cabe71 +vmlinux inet_register_protosw 0x26add70a +vmlinux inet_release 0x13160f3b +vmlinux inet_select_addr 0x56dd6d6a +vmlinux inet_sendmsg 0xc8147e49 +vmlinux inet_shutdown 0x4134f7cc +vmlinux inet_sk_rebuild_header 0x4bc0fba2 +vmlinux inet_sock_destruct 0xd6e2daca +vmlinux inet_stream_connect 0x30faa17d +vmlinux inet_stream_ops 0xd769573c +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x3bca23d7 +vmlinux inet_twsk_deschedule 0xaff1750e +vmlinux inet_twsk_schedule 0x325f2ee3 +vmlinux inet_unregister_protosw 0x26294e50 +vmlinux inetdev_by_index 0xdbe9a576 +vmlinux init_buffer 0xaea0fdbd +vmlinux init_mm 0x895b7f27 +vmlinux init_special_inode 0xe50f1833 +vmlinux init_task 0x654f47cc +vmlinux init_timer 0xcc20cea1 +vmlinux inode_add_bytes 0x38b9697f +vmlinux inode_change_ok 0x362d1c22 +vmlinux inode_get_bytes 0x8d305f82 +vmlinux inode_init_once 0x071fe80d +vmlinux inode_needs_sync 0xaeadfed5 +vmlinux inode_set_bytes 0xf69f97de +vmlinux inode_setattr 0x4903f4e8 +vmlinux inode_sub_bytes 0xcba6f56e +vmlinux inode_update_time 0xbe196d64 +vmlinux inotify_dentry_parent_queue_event 0x146bf5eb +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0x467cf74f +vmlinux inotify_inode_queue_event 0x60d79651 +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0xd5730848 +vmlinux input_allocate_device 0x2259ed98 +vmlinux input_class 0xb0fef0d9 +vmlinux input_close_device 0x8a9d7667 +vmlinux input_event 0xe11d22dd +vmlinux input_flush_device 0x221688ab +vmlinux input_grab_device 0x3647210b +vmlinux input_open_device 0x7ea81a31 +vmlinux input_register_device 0xa128ddc8 +vmlinux input_register_handler 0x75b40570 +vmlinux input_release_device 0x82b429d3 +vmlinux input_unregister_device 0x640664a8 +vmlinux input_unregister_handler 0xab6d15bc +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0x05da8ffa +vmlinux int_sqrt 0xb678366f +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x2a1b9a26 +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0xe7563d14 +vmlinux interruptible_sleep_on_timeout 0x9e688cd1 +vmlinux invalidate_bdev 0xccd55683 +vmlinux invalidate_inode_pages 0x8fa596fe +vmlinux invalidate_inode_pages2 0x86ccd60d +vmlinux invalidate_inode_pages2_range 0xd6829a7e +vmlinux invalidate_inodes 0x307b93e9 +vmlinux invalidate_partition 0xc6601858 +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0x0e236811 +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0x03960713 +vmlinux ioread16_rep 0x54324f95 +vmlinux ioread16be 0x06127753 +vmlinux ioread32 0x2241a928 +vmlinux ioread32_rep 0x3360bb18 +vmlinux ioread32be 0x0bce3753 +vmlinux ioread8 0x389e200f +vmlinux ioread8_rep 0x27a72488 +vmlinux ioremap_nocache 0x3762cb6e +vmlinux iounmap 0xedc03953 +vmlinux iov_shorten 0xc11d8093 +vmlinux iowrite16 0x4775eacf +vmlinux iowrite16_rep 0x1eba9e49 +vmlinux iowrite16be 0x30343e46 +vmlinux iowrite32 0x908aa9b2 +vmlinux iowrite32_rep 0x2dbc755e +vmlinux iowrite32be 0xa1a6414c +vmlinux iowrite8 0x375bf494 +vmlinux iowrite8_rep 0x0b353626 +vmlinux ip4_datagram_connect 0x3a9b9aac +vmlinux ip_build_and_send_pkt 0x5790b960 +vmlinux ip_cmsg_recv 0xe911b1a7 +vmlinux ip_ct_attach 0xcd79cbe0 +vmlinux ip_defrag 0x94345530 +vmlinux ip_fragment 0xc80487b2 +vmlinux ip_generic_getfrag 0x650b84d4 +vmlinux ip_getsockopt 0x95555e33 +vmlinux ip_mc_dec_group 0x2128884e +vmlinux ip_mc_inc_group 0xe7ba5f0b +vmlinux ip_mc_join_group 0xf48c89b0 +vmlinux ip_queue_xmit 0x4a66af13 +vmlinux ip_route_input 0x1a264dec +vmlinux ip_route_me_harder 0x91d910ce +vmlinux ip_route_output_flow 0xb8424f13 +vmlinux ip_route_output_key 0xe66ae76c +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0xa37b7441 +vmlinux ip_setsockopt 0x45355010 +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0x89b29975 +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0x6e324557 +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0x594acf76 +vmlinux is_bad_inode 0x95a761ee +vmlinux is_console_locked 0x944a564d +vmlinux isa_bridge 0xbafef479 +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux isapnp_cfg_begin 0x770a0036 +vmlinux isapnp_cfg_end 0x28b715a6 +vmlinux isapnp_present 0xbf8b39e9 +vmlinux isapnp_protocol 0x918882dc +vmlinux isapnp_write_byte 0xda8fd495 +vmlinux ist_info 0x0fdb1426 +vmlinux iunique 0x367721cf +vmlinux iw_handler_get_spy 0xb0235706 +vmlinux iw_handler_get_thrspy 0x47c02e67 +vmlinux iw_handler_set_spy 0xeb8e3eeb +vmlinux iw_handler_set_thrspy 0xfaa26274 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x75b0745b +vmlinux kernel_fpu_begin 0xd986dad1 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0x373f4b52 +vmlinux kernel_recvmsg 0x55baf173 +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0x352db53b +vmlinux kernel_subsys 0xd3df5dfc +vmlinux kernel_thread 0x7e9ebb05 +vmlinux key_alloc 0xbd38d96f +vmlinux key_create_or_update 0x459db887 +vmlinux key_instantiate_and_link 0x8d855a89 +vmlinux key_link 0x102949e3 +vmlinux key_negate_and_link 0x16602356 +vmlinux key_payload_reserve 0x7e1e9019 +vmlinux key_put 0x72ffe530 +vmlinux key_revoke 0x7dbfdbf6 +vmlinux key_task_permission 0xed71a8a7 +vmlinux key_type_user 0xd105815c +vmlinux key_unlink 0x68221e19 +vmlinux key_update 0xea7987f1 +vmlinux key_validate 0xab8349d0 +vmlinux keyring_clear 0x2f35beb5 +vmlinux keyring_search 0xc4e76cdf +vmlinux kfifo_alloc 0xc0fe22d7 +vmlinux kfifo_free 0xe1837904 +vmlinux kfifo_init 0x35b3ef67 +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0x4c5c4472 +vmlinux kill_anon_super 0xc6fbebf8 +vmlinux kill_block_super 0x704f8664 +vmlinux kill_fasync 0x5165a5ce +vmlinux kill_litter_super 0xc6f96dda +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xec10e63a +vmlinux klist_add_head 0xf6466d8d +vmlinux klist_add_tail 0x475fa23b +vmlinux klist_del 0x6d53788c +vmlinux klist_init 0xaeaa2d96 +vmlinux klist_iter_exit 0x89233c35 +vmlinux klist_iter_init 0xbd66c03e +vmlinux klist_iter_init_node 0x7af9ca0d +vmlinux klist_next 0x96a3499c +vmlinux klist_node_attached 0xa5a3f1c3 +vmlinux klist_remove 0xb876b119 +vmlinux km_new_mapping 0xcc121c87 +vmlinux km_policy_notify 0x90bf48c5 +vmlinux km_state_notify 0x7d5a3523 +vmlinux km_waitq 0xcf8432ef +vmlinux kmap 0x0b536568 +vmlinux kmap_atomic 0x34fadc3b +vmlinux kmap_atomic_to_page 0x2e6febad +vmlinux kmap_high 0xeb28ab88 +vmlinux kmem_cache_alloc 0xf19499ea +vmlinux kmem_cache_create 0xaa47199d +vmlinux kmem_cache_destroy 0x79aeaf0e +vmlinux kmem_cache_free 0x2001cdfb +vmlinux kmem_cache_name 0xc02383c7 +vmlinux kmem_cache_shrink 0x277a9de1 +vmlinux kmem_cache_size 0xfb71d89d +vmlinux kmem_find_general_cachep 0xe103169e +vmlinux kobject_add 0x3c75dc81 +vmlinux kobject_del 0xccc6ec3d +vmlinux kobject_get 0x7c0ea81c +vmlinux kobject_hotplug 0xd37b57a5 +vmlinux kobject_init 0xe6c2a83b +vmlinux kobject_put 0x58346c09 +vmlinux kobject_register 0x7cfbf671 +vmlinux kobject_set_name 0x20d28eed +vmlinux kobject_uevent 0x71306307 +vmlinux kobject_uevent_atomic 0xa9189801 +vmlinux kobject_unregister 0x818d5e39 +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x0b4e72c4 +vmlinux kset_register 0x458b3c78 +vmlinux kset_unregister 0x1aa3576a +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x47f12a93 +vmlinux kthread_create 0xf19de1a8 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0x0bbd3db6 +vmlinux kthread_stop_sem 0xf532b2bc +vmlinux kunmap 0x5536f72e +vmlinux kunmap_atomic 0x43b40de7 +vmlinux kunmap_high 0x1d95e8e5 +vmlinux kzalloc 0x1d10cdb2 +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0x2f2b2b6e +vmlinux lease_modify 0xcac434e5 +vmlinux linkwatch_fire_event 0x85d70fab +vmlinux ll_rw_block 0xdabcd9f4 +vmlinux llc_add_pack 0xd97d18a0 +vmlinux llc_build_and_send_ui_pkt 0x32834ff6 +vmlinux llc_mac_hdr_init 0x778a2329 +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0xf4a7208c +vmlinux llc_sap_find 0x624aa8e3 +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0xd6a44e66 +vmlinux llc_sap_open 0xb2b81289 +vmlinux llc_set_station_handler 0x169f55f6 +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_nls 0x6216f371 +vmlinux load_nls_default 0x4a578dbe +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_cpu_hotplug 0xba813bd6 +vmlinux lock_cpu_hotplug_interruptible 0xdd7ee0f9 +vmlinux lock_kernel 0x5568be43 +vmlinux lock_may_read 0xe59c0732 +vmlinux lock_may_write 0xe6283a93 +vmlinux lock_rename 0x541cee31 +vmlinux lock_sock 0x7889010c +vmlinux locks_copy_lock 0x54edd1ed +vmlinux locks_init_lock 0x01a9ff05 +vmlinux locks_mandatory_area 0x79c1b63b +vmlinux locks_remove_posix 0xd06ce834 +vmlinux lookup_create 0x999c938d +vmlinux lookup_hash 0x3fc37bbb +vmlinux lookup_instantiate_filp 0x674f45e0 +vmlinux lookup_one_len 0x417018d3 +vmlinux loopback_dev 0x52811db0 +vmlinux loops_per_jiffy 0xba497f13 +vmlinux machine_id 0x69b4ab75 +vmlinux machine_real_restart 0x3da1b07a +vmlinux make_8023_client 0x1fa0ac42 +vmlinux make_EII_client 0x47c0447e +vmlinux make_bad_inode 0x5d981539 +vmlinux malloc_sizes 0xc4413905 +vmlinux mapping_tagged 0x9802d540 +vmlinux mark_buffer_async_write 0x97ad6096 +vmlinux mark_buffer_dirty 0xfbc5f415 +vmlinux mark_buffer_dirty_inode 0xd01a964d +vmlinux mark_info_dirty 0xc58457d3 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x62f2a8bc +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_cstate 0x93805374 +vmlinux max_mapnr 0x01139ffc +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0xc9fbf76a +vmlinux may_umount_tree 0xddd5b5ac +vmlinux mb_cache_create 0x51d6b511 +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0x89aea688 +vmlinux mb_cache_entry_find_first 0x06f11f4a +vmlinux mb_cache_entry_find_next 0xc1bb681b +vmlinux mb_cache_entry_free 0x5a126e6c +vmlinux mb_cache_entry_get 0x552726d9 +vmlinux mb_cache_entry_insert 0x01d14552 +vmlinux mb_cache_entry_release 0xfb08ce2d +vmlinux mb_cache_shrink 0xdb0b119f +vmlinux mca_bus_type 0xc4a957e5 +vmlinux mca_device_claimed 0x425f6990 +vmlinux mca_device_read_pos 0xc8184354 +vmlinux mca_device_read_stored_pos 0x58767697 +vmlinux mca_device_set_claim 0x27edf624 +vmlinux mca_device_set_name 0x85eb93f9 +vmlinux mca_device_status 0xff5d9621 +vmlinux mca_device_transform_ioport 0x84ad2438 +vmlinux mca_device_transform_irq 0x37184730 +vmlinux mca_device_transform_memory 0x22c188b5 +vmlinux mca_device_write_pos 0x4ef2f6f0 +vmlinux mca_find_adapter 0x5f1bd579 +vmlinux mca_find_unused_adapter 0xef3bd862 +vmlinux mca_is_adapter_used 0x05048b38 +vmlinux mca_mark_as_unused 0xd9c272aa +vmlinux mca_mark_as_used 0x6b937ffb +vmlinux mca_read_pos 0x5c68705b +vmlinux mca_read_stored_pos 0xb2efb6be +vmlinux mca_register_driver 0xdcc1c087 +vmlinux mca_set_adapter_name 0xf2e74040 +vmlinux mca_unregister_driver 0x5325a838 +vmlinux mca_write_pos 0xaaebe34f +vmlinux mem_map 0x45856fd0 +vmlinux memcmp 0x5152e605 +vmlinux memcpy 0x2e60bace +vmlinux memcpy_fromiovec 0x9fb3dd30 +vmlinux memcpy_fromiovecend 0x6e440b58 +vmlinux memcpy_toiovec 0x9ceb163c +vmlinux memmove 0x8235805b +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0x3d84bcc6 +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0xaaa24b26 +vmlinux mempool_create_node 0xd01c94ac +vmlinux mempool_destroy 0x794a03ee +vmlinux mempool_free 0x7f42aeb6 +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x68d1b773 +vmlinux memset 0x2bc95bd4 +vmlinux misc_deregister 0xd6a81950 +vmlinux misc_register 0x0a2f96a1 +vmlinux mmput 0xc3ca84fb +vmlinux mmx_clear_page 0xd0c312ff +vmlinux mmx_copy_page 0xecb52bbc +vmlinux mnt_pin 0xfaf9cb77 +vmlinux mnt_unpin 0xe3311481 +vmlinux mntput_no_expire 0x6681bafe +vmlinux mod_reg_security 0x7f002c80 +vmlinux mod_timer 0xda6bb4ad +vmlinux mod_unreg_security 0xadacb760 +vmlinux module_add_driver 0x74bb9d73 +vmlinux module_refcount 0x4fa7e81b +vmlinux module_remove_driver 0xdc6e5bfa +vmlinux monotonic_clock 0x9669ecc8 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0x17b94381 +vmlinux mpage_readpages 0x128ac7e8 +vmlinux mpage_writepage 0x30c21065 +vmlinux mpage_writepages 0xb939801f +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux mtrr_add 0x56179c5f +vmlinux mtrr_del 0x272d394e +vmlinux multipath_alg_register 0x950d2bfc +vmlinux multipath_alg_unregister 0x568cf625 +vmlinux n_tty_ioctl 0xb3fbdd00 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0xe33b840b +vmlinux neigh_changeaddr 0x16e05cf2 +vmlinux neigh_compat_output 0x2fc4f5de +vmlinux neigh_connected_output 0x3dbb7350 +vmlinux neigh_create 0xc4964afc +vmlinux neigh_delete 0x6f2ec0ff +vmlinux neigh_destroy 0x6d4299f3 +vmlinux neigh_dump_info 0xda046d39 +vmlinux neigh_event_ns 0xb41c5f48 +vmlinux neigh_for_each 0xfeb5ea6d +vmlinux neigh_ifdown 0x11cdb8a4 +vmlinux neigh_lookup 0xcd7891b9 +vmlinux neigh_lookup_nodev 0x57268a9d +vmlinux neigh_parms_alloc 0xa53c34f5 +vmlinux neigh_parms_release 0x1c02b452 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0xed490a5e +vmlinux neigh_seq_next 0xf33ade83 +vmlinux neigh_seq_start 0x360dff6b +vmlinux neigh_seq_stop 0xebd2aeff +vmlinux neigh_sysctl_register 0x7c1a2ab6 +vmlinux neigh_sysctl_unregister 0xe2b15bef +vmlinux neigh_table_clear 0x9dfa530c +vmlinux neigh_table_init 0x4bd9c669 +vmlinux neigh_update 0x04bafdc9 +vmlinux neigh_update_hhs 0x7e67cc01 +vmlinux neightbl_dump_info 0xec251d4d +vmlinux neightbl_set 0x356a369e +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0xc7e0eb52 +vmlinux netdev_features_change 0x227cc7c2 +vmlinux netdev_rx_csum_fault 0x03773f7a +vmlinux netdev_set_master 0xe0650b1c +vmlinux netdev_state_change 0xb5e86a5e +vmlinux netif_carrier_off 0x2624c73c +vmlinux netif_carrier_on 0x69de277f +vmlinux netif_receive_skb 0x778950b3 +vmlinux netif_rx 0x1013606d +vmlinux netif_rx_ni 0xb723a8f8 +vmlinux netlink_ack 0x4987c3b1 +vmlinux netlink_broadcast 0x433d4278 +vmlinux netlink_dump_start 0xc9331630 +vmlinux netlink_kernel_create 0xa5c435be +vmlinux netlink_queue_skip 0xcff1cbca +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0x8c3c69f0 +vmlinux netlink_set_err 0x66ef3512 +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0xf9177b50 +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0xf6a67e4e +vmlinux netpoll_parse_options 0x42d6daf9 +vmlinux netpoll_poll 0x761ebe57 +vmlinux netpoll_queue 0x2349f418 +vmlinux netpoll_send_udp 0xa7014ef8 +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0xd3a9c25c +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0x6896fcca +vmlinux next_thread 0xb60263ad +vmlinux nf_ct_attach 0xfdd985e9 +vmlinux nf_getsockopt 0xa9e063ea +vmlinux nf_hook_slow 0x87513fd8 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0x79a76cdb +vmlinux nf_log_register 0x6da613c1 +vmlinux nf_log_unregister_logger 0xd6e8f499 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0xacfe17dc +vmlinux nf_register_queue_handler 0x13ca6eb1 +vmlinux nf_register_queue_rerouter 0x06008efa +vmlinux nf_register_sockopt 0x0c277aed +vmlinux nf_reinject 0xb948c463 +vmlinux nf_setsockopt 0x9ea4f5b6 +vmlinux nf_unregister_hook 0x179b5444 +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0xfbdec3d1 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0xd7b84f4d +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0xbe0e5118 +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0x998841d1 +vmlinux nla_reserve 0x8e669fbb +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0x6cdc5c6b +vmlinux nla_validate 0x2cc98162 +vmlinux nmi_active 0x069dcda8 +vmlinux nmi_watchdog 0xda928914 +vmlinux no_llseek 0x75747947 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x2dec194a +vmlinux nobh_prepare_write 0xfda9752c +vmlinux nobh_truncate_page 0x7a080497 +vmlinux nobh_writepage 0xd4854ae8 +vmlinux node_online_map 0x5a8f421e +vmlinux node_possible_map 0xca0d27a1 +vmlinux nonseekable_open 0xe6fc5234 +vmlinux noop_qdisc 0x38278042 +vmlinux noop_qdisc_ops 0xbcc61bd0 +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x08b97f2f +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0x5d291f4a +vmlinux open_by_devnum 0xf9a467ba +vmlinux open_exec 0x5b808cfe +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0x09aeaf8c +vmlinux out_of_line_wait_on_bit_lock 0xe868af29 +vmlinux overflowgid 0x7171121c +vmlinux overflowuid 0x8b618d08 +vmlinux p80211_resume 0x2f8b0145 +vmlinux p80211_suspend 0xa3f71c4f +vmlinux p80211netdev_hwremoved 0x913c2c97 +vmlinux p80211netdev_rx 0x8682b9c2 +vmlinux p80211skb_free 0xa6e14060 +vmlinux p80211skb_rxmeta_attach 0xed5e1767 +vmlinux page_address 0x40b26f22 +vmlinux page_follow_link_light 0xcf4e8e19 +vmlinux page_put_link 0x241f155d +vmlinux page_readlink 0x404214b8 +vmlinux page_symlink 0x54cb0e7a +vmlinux page_symlink_inode_operations 0xcd893919 +vmlinux pagevec_lookup_tag 0xf4a00028 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0x8d8d8f89 +vmlinux path_release 0x6883ff77 +vmlinux path_walk 0x734ee527 +vmlinux pci_add_new_bus 0xf60eb6b1 +vmlinux pci_assign_resource 0xbd61ba4f +vmlinux pci_block_user_cfg_access 0x5b14d83c +vmlinux pci_bus_add_device 0xf92dab05 +vmlinux pci_bus_add_devices 0x77280a01 +vmlinux pci_bus_alloc_resource 0xce467798 +vmlinux pci_bus_assign_resources 0xb85d4367 +vmlinux pci_bus_find_capability 0xf9503d31 +vmlinux pci_bus_max_busnr 0xbdcd0a8d +vmlinux pci_bus_read_config_byte 0x8b33246e +vmlinux pci_bus_read_config_dword 0xe3a93503 +vmlinux pci_bus_read_config_word 0xa7c4fa22 +vmlinux pci_bus_size_bridges 0xfabb32c1 +vmlinux pci_bus_type 0xa8dbb1ae +vmlinux pci_bus_write_config_byte 0xb18b4320 +vmlinux pci_bus_write_config_dword 0x173bb02b +vmlinux pci_bus_write_config_word 0x2264982a +vmlinux pci_choose_state 0x2dd0b24f +vmlinux pci_clear_mwi 0xc5a83cd0 +vmlinux pci_create_bus 0x235e43e0 +vmlinux pci_dev_driver 0xb7f6e1f7 +vmlinux pci_dev_get 0x6e0b5b86 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0x049d1bb6 +vmlinux pci_disable_device 0x54812fbe +vmlinux pci_disable_msi 0x9a8ac782 +vmlinux pci_disable_msix 0x7cfce4bc +vmlinux pci_do_scan_bus 0xb01b3388 +vmlinux pci_enable_bridges 0x9658f4a3 +vmlinux pci_enable_device 0x9788f088 +vmlinux pci_enable_device_bars 0x6887465b +vmlinux pci_enable_msi 0x78f6d540 +vmlinux pci_enable_msix 0xf758ed23 +vmlinux pci_enable_wake 0x9b0d0f15 +vmlinux pci_find_bus 0x4e6e6120 +vmlinux pci_find_capability 0x02903ad1 +vmlinux pci_find_device 0x5a6fc8fe +vmlinux pci_find_device_reverse 0xf764c9bd +vmlinux pci_find_next_bus 0x948222a1 +vmlinux pci_find_next_capability 0xcd64c5c2 +vmlinux pci_find_parent_resource 0x385afbe7 +vmlinux pci_find_slot 0x06810773 +vmlinux pci_fixup_device 0x17acd7a0 +vmlinux pci_get_class 0xaed4059a +vmlinux pci_get_device 0x96053936 +vmlinux pci_get_slot 0x8279cccb +vmlinux pci_get_subsys 0x08ff1d70 +vmlinux pci_intx 0xc66606dd +vmlinux pci_iomap 0xb5e787e3 +vmlinux pci_iounmap 0x65bcc53f +vmlinux pci_map_rom 0xc06888f9 +vmlinux pci_map_rom_copy 0x0d4bcc3e +vmlinux pci_match_device 0xc6e8fdaf +vmlinux pci_match_id 0x65ff4893 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_mem_start 0x3da171f9 +vmlinux pci_osc_control_set 0x20c8fc33 +vmlinux pci_osc_support_set 0xed9003ef +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0x7829c71c +vmlinux pci_proc_attach_device 0x01a56e5a +vmlinux pci_proc_detach_bus 0xaf8f6b1a +vmlinux pci_release_region 0x56bbe55a +vmlinux pci_release_regions 0x99167cff +vmlinux pci_remove_behind_bridge 0xd2b50fbe +vmlinux pci_remove_bus 0x938d4791 +vmlinux pci_remove_bus_device 0xa45b0213 +vmlinux pci_remove_device_safe 0xcd69cd84 +vmlinux pci_remove_rom 0x6751d0a5 +vmlinux pci_request_region 0x091aab67 +vmlinux pci_request_regions 0xf4bb3d82 +vmlinux pci_restore_bars 0x919d9379 +vmlinux pci_restore_state 0xd15abbbf +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0x5c7bd73d +vmlinux pci_scan_bridge 0x04fdbc41 +vmlinux pci_scan_bus_parented 0x570d60ee +vmlinux pci_scan_child_bus 0x336a1a84 +vmlinux pci_scan_single_device 0x3ae718e7 +vmlinux pci_scan_slot 0xc94f7769 +vmlinux pci_set_consistent_dma_mask 0x83e1df27 +vmlinux pci_set_dma_mask 0x6878ac79 +vmlinux pci_set_master 0x7de73348 +vmlinux pci_set_mwi 0xa47ac469 +vmlinux pci_set_power_state 0x90826f2b +vmlinux pci_setup_cardbus 0xdfc729c6 +vmlinux pci_unblock_user_cfg_access 0x81dfa652 +vmlinux pci_unmap_rom 0xdc8db538 +vmlinux pci_unregister_driver 0xc279cad9 +vmlinux pci_walk_bus 0x2c7d2ffb +vmlinux pcibios_get_irq_routing_table 0xda08c0d7 +vmlinux pcibios_set_irq_routing 0x3b7af317 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pcie_port_service_register 0xfb2f91e3 +vmlinux pcie_port_service_unregister 0x9e5793f1 +vmlinux pciserial_init_ports 0x4d315734 +vmlinux pciserial_remove_ports 0xf31d494d +vmlinux pciserial_resume_ports 0x7dc91ffc +vmlinux pciserial_suspend_ports 0xa5536740 +vmlinux per_cpu__cpu_16bit_stack 0x42f5b870 +vmlinux per_cpu__irq_stat 0xc65d5e17 +vmlinux per_cpu__kstat 0xca09a9af +vmlinux per_cpu__softnet_data 0xd8ca7819 +vmlinux percpu_counter_mod 0xa6fe1216 +vmlinux permission 0xcf2a3708 +vmlinux pfifo_qdisc_ops 0x4713ed1b +vmlinux platform_add_devices 0x8b17a525 +vmlinux platform_bus 0xb0535c78 +vmlinux platform_bus_type 0x96cc94e6 +vmlinux platform_device_add 0x2a4815ee +vmlinux platform_device_add_data 0x38e61a74 +vmlinux platform_device_add_resources 0xe477015a +vmlinux platform_device_alloc 0xd2931551 +vmlinux platform_device_put 0x7ba633d9 +vmlinux platform_device_register 0x06865b79 +vmlinux platform_device_register_simple 0x73884aa9 +vmlinux platform_device_unregister 0xcd221ba1 +vmlinux platform_driver_register 0x82789e5e +vmlinux platform_driver_unregister 0xa4d3a1de +vmlinux platform_get_irq 0xa2cb3086 +vmlinux platform_get_irq_byname 0x97e62ef3 +vmlinux platform_get_resource 0x094b575e +vmlinux platform_get_resource_byname 0x570936f0 +vmlinux pm_active 0xebd387f6 +vmlinux pm_idle 0xf890fe7f +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pneigh_enqueue 0x43d16385 +vmlinux pneigh_lookup 0x477f95c5 +vmlinux pnp_activate_dev 0xdc8ed709 +vmlinux pnp_device_attach 0x43a5c9e3 +vmlinux pnp_device_detach 0x67c2fd5c +vmlinux pnp_disable_dev 0x9d6a9d40 +vmlinux pnp_find_card 0x1d074207 +vmlinux pnp_find_dev 0x7c6d91b1 +vmlinux pnp_init_resource_table 0x16084899 +vmlinux pnp_is_active 0xbd66fe3f +vmlinux pnp_manual_config_dev 0xa3fbaf23 +vmlinux pnp_register_card_driver 0x95b960fe +vmlinux pnp_register_driver 0x48def53f +vmlinux pnp_release_card_device 0x32a5e5f9 +vmlinux pnp_request_card_device 0x0db4eac1 +vmlinux pnp_resource_change 0xf577ec2b +vmlinux pnp_unregister_card_driver 0x0066a0c9 +vmlinux pnp_unregister_driver 0x10d1ec92 +vmlinux pnpbios_protocol 0x76f97f97 +vmlinux poll_freewait 0xb502b768 +vmlinux poll_initwait 0x62519f9e +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0xd32e52c7 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x640a7078 +vmlinux posix_acl_equiv_mode 0xd8282ff0 +vmlinux posix_acl_from_mode 0x3adc15b9 +vmlinux posix_acl_from_xattr 0x85ac7f10 +vmlinux posix_acl_permission 0xee215960 +vmlinux posix_acl_to_xattr 0x1ecb9943 +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0xe38774ce +vmlinux posix_lock_file 0x557bc822 +vmlinux posix_lock_file_wait 0xa9c4e02a +vmlinux posix_locks_deadlock 0xc91671c4 +vmlinux posix_test_lock 0x48fd595e +vmlinux posix_timer_event 0x4968914d +vmlinux posix_unblock_lock 0x0ad8e190 +vmlinux pre_task_out_intr 0x18cdea4b +vmlinux preempt_schedule 0x707f93dd +vmlinux prepare_binprm 0xbbb9d44e +vmlinux prepare_to_wait 0x131a6461 +vmlinux prepare_to_wait_exclusive 0x5e405224 +vmlinux printk 0x1b7d4074 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0x01eef975 +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0xf19917d4 +vmlinux proc_dointvec 0xc5ddb6dd +vmlinux proc_dointvec_jiffies 0x4aa6c03c +vmlinux proc_dointvec_minmax 0x53c1e8b5 +vmlinux proc_dointvec_ms_jiffies 0x97371fb2 +vmlinux proc_dointvec_userhz_jiffies 0x8ac9b1b2 +vmlinux proc_dostring 0x3b0f221f +vmlinux proc_doulongvec_minmax 0x908783a4 +vmlinux proc_doulongvec_ms_jiffies_minmax 0x0c92521d +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0x68ff6a6f +vmlinux proc_net 0xe8289ddb +vmlinux proc_net_netfilter 0x9fec8a51 +vmlinux proc_net_stat 0x4ea7c17d +vmlinux proc_root 0x9e4fce39 +vmlinux proc_root_driver 0x5f44c65b +vmlinux proc_root_fs 0x1df84c25 +vmlinux proc_symlink 0x8d26b931 +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux proto_register 0xed74939e +vmlinux proto_unregister 0x8fa1bd03 +vmlinux ps2_cmd_aborted 0x165531e7 +vmlinux ps2_command 0xf4eacc06 +vmlinux ps2_drain 0x2f81f734 +vmlinux ps2_handle_ack 0x626053b1 +vmlinux ps2_handle_response 0x1d83528a +vmlinux ps2_init 0xe39d988f +vmlinux ps2_schedule_command 0xb28b0ea1 +vmlinux ps2_sendbyte 0x0e295c95 +vmlinux pskb_copy 0x4c969567 +vmlinux pskb_expand_head 0xc6ede5f1 +vmlinux pskb_put 0x3b8310db +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0x0085e840 +vmlinux put_cmsg 0xf39bf4d9 +vmlinux put_device 0xd08835c6 +vmlinux put_disk 0x28766790 +vmlinux put_driver 0xb0bea3c1 +vmlinux put_files_struct 0x1aaf653d +vmlinux put_io_context 0xe7e8174f +vmlinux put_page 0xf2bf3307 +vmlinux put_tty_driver 0x23ad72d9 +vmlinux put_unused_fd 0x023eb25e +vmlinux qdisc_alloc 0x309a1dea +vmlinux qdisc_create_dflt 0x3d447683 +vmlinux qdisc_destroy 0x1ca1dcc6 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0xd3eebbed +vmlinux qdisc_lookup 0x6b4199ec +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0x3f131764 +vmlinux qdisc_restart 0x034b4a6e +vmlinux qdisc_unlock_tree 0x6f231246 +vmlinux queue_delayed_work 0x03361489 +vmlinux queue_work 0x2a95a905 +vmlinux radix_tree_delete 0xa34bdcd0 +vmlinux radix_tree_gang_lookup 0x883e226b +vmlinux radix_tree_gang_lookup_tag 0xcc4e9047 +vmlinux radix_tree_insert 0x7dc88ba1 +vmlinux radix_tree_lookup 0x5c2da0c3 +vmlinux radix_tree_lookup_slot 0x6bbbfb36 +vmlinux radix_tree_tag_clear 0x374a51dd +vmlinux radix_tree_tag_set 0x7e92ceb7 +vmlinux radix_tree_tagged 0xdacd0c37 +vmlinux raise_softirq_irqoff 0xd8c152cd +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0xc110d6a9 +vmlinux read_cache_pages 0x70279694 +vmlinux read_dev_sector 0x18e4d81b +vmlinux recalc_sigpending 0xfb6af58d +vmlinux recalibrate_cpu_khz 0x31e76b57 +vmlinux redirty_page_for_writepage 0x09ae021c +vmlinux redraw_screen 0x1f3c77fc +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0xa2aad416 +vmlinux register_acpi_bus_type 0xd50df858 +vmlinux register_atm_ioctl 0x14ed5324 +vmlinux register_binfmt 0x859a8e2b +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0xfbf0bd55 +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x86b956e7 +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_die_notifier 0x53986488 +vmlinux register_exec_domain 0x5e39a5eb +vmlinux register_filesystem 0xd0e22d63 +vmlinux register_firmware 0x711cccd3 +vmlinux register_framebuffer 0x34332783 +vmlinux register_gifconf 0x2f42dd3a +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_key_type 0xc1d1545c +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0x082faccf +vmlinux register_netdevice 0xfad184b4 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x9a264898 +vmlinux register_posix_clock 0x13173db8 +vmlinux register_qdisc 0x032f471f +vmlinux register_quota_format 0x246aa552 +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0x44fbf63a +vmlinux register_snap_client 0x731fc05c +vmlinux register_sysctl_table 0xe20bcd51 +vmlinux register_sysrq_key 0x9d569730 +vmlinux register_tcf_proto_ops 0xa757e1f3 +vmlinux register_timer_hook 0xf5269962 +vmlinux register_wlandev 0x5411c8fb +vmlinux registered_fb 0x523df567 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x33934162 +vmlinux release_lapic_nmi 0x4129043e +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x6a1dea73 +vmlinux remap_pfn_range 0x72d46adb +vmlinux remote_llseek 0x76932161 +vmlinux remove_arg_zero 0x669edf1d +vmlinux remove_inode_hash 0x30d074c9 +vmlinux remove_proc_entry 0x5494c6cd +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0x12895208 +vmlinux remove_wait_queue 0x0705db06 +vmlinux reqsk_queue_alloc 0x402e39fc +vmlinux reqsk_queue_destroy 0xc93ba473 +vmlinux request_dma 0x7054a3e4 +vmlinux request_firmware 0x64f3ba8e +vmlinux request_firmware_nowait 0xde1eaef2 +vmlinux request_irq 0x26e96637 +vmlinux request_key 0x1916b50d +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux reserve_lapic_nmi 0xb903b498 +vmlinux restore_processor_state 0x8dc6e564 +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x85902f79 +vmlinux rtc_cmos_read 0x9e64fbfe +vmlinux rtc_cmos_write 0x2def7f76 +vmlinux rtc_control 0xc9b27289 +vmlinux rtc_lock 0x831988d6 +vmlinux rtc_register 0xfdab2b9c +vmlinux rtc_unregister 0xeddfe49d +vmlinux rtnetlink_links 0x17fe685a +vmlinux rtnetlink_put_metrics 0x829a58d9 +vmlinux rtnl 0x1c644789 +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0xee0fef1f +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux rwsem_down_read_failed 0x38239f9f +vmlinux rwsem_down_write_failed 0xe0363221 +vmlinux rwsem_downgrade_wake 0xa3893edd +vmlinux rwsem_wake 0x25ba2c57 +vmlinux save_processor_state 0x75271716 +vmlinux sb_min_blocksize 0xd7dcd47c +vmlinux sb_set_blocksize 0x810dd91f +vmlinux sched_setscheduler 0x8d94a352 +vmlinux schedule 0x4292364c +vmlinux schedule_delayed_work 0xfc535e10 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0x17d59d01 +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x0a3fa85c +vmlinux scm_detach_fds 0x9c9c8985 +vmlinux scm_fp_dup 0x8306d269 +vmlinux scnprintf 0x28f35813 +vmlinux screen_info 0xe7bf7d05 +vmlinux scsi_cmd_ioctl 0x8f3f5a79 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux search_binary_handler 0x7249871d +vmlinux secpath_dup 0x9f67a613 +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0xcc960d5d +vmlinux securityfs_create_dir 0xe8f3ca20 +vmlinux securityfs_create_file 0x6fd00c51 +vmlinux securityfs_remove 0xa963e3db +vmlinux send_sig 0x61270e10 +vmlinux send_sig_info 0x4a7f82c6 +vmlinux seq_escape 0x861a88d3 +vmlinux seq_lseek 0x9fe8b027 +vmlinux seq_open 0x311b0d82 +vmlinux seq_path 0x182db7c0 +vmlinux seq_printf 0x72eaeb20 +vmlinux seq_putc 0x7a95427d +vmlinux seq_puts 0xfb63a451 +vmlinux seq_read 0x625e5cd1 +vmlinux seq_release 0x3590a65c +vmlinux seq_release_private 0xa41baabe +vmlinux serial8250_register_port 0x653a4347 +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0xd62c3b7e +vmlinux serio_interrupt 0x0c307238 +vmlinux serio_open 0x517e4aab +vmlinux serio_reconnect 0x148cee49 +vmlinux serio_rescan 0xab55fada +vmlinux serio_unregister_child_port 0xad982fac +vmlinux serio_unregister_driver 0x83bedfc3 +vmlinux serio_unregister_port 0x4901e5e1 +vmlinux set_anon_super 0x03f45355 +vmlinux set_bh_page 0x7a2e277e +vmlinux set_binfmt 0xf755a8ab +vmlinux set_blocksize 0xf9d22b58 +vmlinux set_cpus_allowed 0xb340cd0a +vmlinux set_current_groups 0x72fbae28 +vmlinux set_device_ro 0x828d368d +vmlinux set_disk_ro 0x73b40898 +vmlinux set_nmi_callback 0x2c4fa81f +vmlinux set_page_dirty 0x0e7a173a +vmlinux set_page_dirty_lock 0x632e5ada +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0xa9a29d6f +vmlinux setlease 0xc813f9ec +vmlinux setup_arg_pages 0x08510b35 +vmlinux sget 0x57850225 +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x90d44c58 +vmlinux shrink_dcache_sb 0x71cb37e0 +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x4d3c153f +vmlinux simple_attr_close 0xdd0f3f8a +vmlinux simple_attr_open 0x908a9676 +vmlinux simple_attr_read 0x684de99e +vmlinux simple_attr_write 0x91a83133 +vmlinux simple_commit_write 0x1ca1b23e +vmlinux simple_dir_inode_operations 0x86d793b3 +vmlinux simple_dir_operations 0x6ad16be5 +vmlinux simple_empty 0xed7bf440 +vmlinux simple_fill_super 0x7af88f82 +vmlinux simple_getattr 0x99955cc8 +vmlinux simple_link 0xbaadcf9c +vmlinux simple_lookup 0x04dc0f2a +vmlinux simple_pin_fs 0xc272872d +vmlinux simple_prepare_write 0xe6931679 +vmlinux simple_read_from_buffer 0x528c709d +vmlinux simple_readpage 0xcc679f34 +vmlinux simple_release_fs 0x9bf3d73d +vmlinux simple_rename 0x7e0308e9 +vmlinux simple_rmdir 0x50f81dc8 +vmlinux simple_statfs 0x115e99bc +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0xcc6e0754 +vmlinux simple_transaction_get 0x8e36a97d +vmlinux simple_transaction_read 0x07211324 +vmlinux simple_transaction_release 0xa904ff2a +vmlinux simple_unlink 0x32feffb4 +vmlinux single_open 0xb5bdeaa0 +vmlinux single_release 0xb953998f +vmlinux sk_alloc 0xae9703fb +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0x9a59f108 +vmlinux sk_common_release 0x60c9c04d +vmlinux sk_free 0xe7c40840 +vmlinux sk_reset_timer 0x489e91e5 +vmlinux sk_run_filter 0x0848dc4d +vmlinux sk_send_sigurg 0xc73be06f +vmlinux sk_stop_timer 0x8b4ac4f9 +vmlinux sk_stream_error 0x51e89612 +vmlinux sk_stream_kill_queues 0xef65a6c9 +vmlinux sk_stream_mem_schedule 0x43aeabc2 +vmlinux sk_stream_rfree 0x510e123b +vmlinux sk_stream_wait_close 0x3a2088b7 +vmlinux sk_stream_wait_connect 0x93382ba9 +vmlinux sk_stream_wait_memory 0x22642ba0 +vmlinux sk_stream_write_space 0xdd301147 +vmlinux sk_wait_data 0x9772000c +vmlinux skb_abort_seq_read 0x6d2d6a88 +vmlinux skb_append 0x49b87023 +vmlinux skb_append_datato_frags 0x0ee0adec +vmlinux skb_checksum 0x83d8e930 +vmlinux skb_checksum_help 0x497f6593 +vmlinux skb_clone 0x635b84d8 +vmlinux skb_clone_fraglist 0x72fc8b18 +vmlinux skb_copy 0x99e92fbe +vmlinux skb_copy_and_csum_bits 0x958bb845 +vmlinux skb_copy_and_csum_datagram_iovec 0x4162e3cb +vmlinux skb_copy_and_csum_dev 0x23e8e125 +vmlinux skb_copy_bits 0x0c8c9f1b +vmlinux skb_copy_datagram_iovec 0xdc621ca6 +vmlinux skb_copy_expand 0xf0e7e6d0 +vmlinux skb_cow_data 0xb49d87e9 +vmlinux skb_dequeue 0xe2a38eb2 +vmlinux skb_dequeue_tail 0xc6e48d22 +vmlinux skb_find_text 0x1fa67960 +vmlinux skb_free_datagram 0x69b77c62 +vmlinux skb_icv_walk 0x2a4416dd +vmlinux skb_insert 0x9fbe9340 +vmlinux skb_make_writable 0x4b3b6311 +vmlinux skb_migrate 0xd6203ab3 +vmlinux skb_over_panic 0xebcc9944 +vmlinux skb_pad 0x7db1ff91 +vmlinux skb_prepare_seq_read 0xadf372c1 +vmlinux skb_queue_head 0x6e01e5b0 +vmlinux skb_queue_purge 0x944f8db1 +vmlinux skb_queue_tail 0x0104ff63 +vmlinux skb_realloc_headroom 0x1b450e13 +vmlinux skb_recv_datagram 0x5ef283f6 +vmlinux skb_seq_read 0x31380083 +vmlinux skb_split 0x7882eceb +vmlinux skb_store_bits 0xac63660b +vmlinux skb_to_sgvec 0x4e0ea080 +vmlinux skb_under_panic 0xd0799b74 +vmlinux skb_unlink 0xc2e39781 +vmlinux sleep_on 0xb03c7e2b +vmlinux sleep_on_timeout 0x07f37e3b +vmlinux smp_call_function 0x0014bfd1 +vmlinux smp_num_siblings 0xd1f6c5f3 +vmlinux snprintf 0x025da070 +vmlinux sock_alloc_send_skb 0x50a1af5e +vmlinux sock_common_getsockopt 0xa6a34b1e +vmlinux sock_common_recvmsg 0x675c5efa +vmlinux sock_common_setsockopt 0x1fed75ef +vmlinux sock_create 0x89c46789 +vmlinux sock_create_kern 0x143d72fd +vmlinux sock_create_lite 0x72dd85f9 +vmlinux sock_enable_timestamp 0xbb435f39 +vmlinux sock_get_timestamp 0x304527e7 +vmlinux sock_i_ino 0xe3f3f337 +vmlinux sock_i_uid 0x5de80d39 +vmlinux sock_init_data 0x3d6a9bd8 +vmlinux sock_kfree_s 0xa1260607 +vmlinux sock_kmalloc 0x0f157984 +vmlinux sock_map_fd 0xe48dd13c +vmlinux sock_no_accept 0xf2b0cc6b +vmlinux sock_no_bind 0xc0364cec +vmlinux sock_no_connect 0xde7f4b13 +vmlinux sock_no_getname 0x8984d908 +vmlinux sock_no_getsockopt 0x337c4f27 +vmlinux sock_no_ioctl 0x173210c5 +vmlinux sock_no_listen 0x6d1c97cc +vmlinux sock_no_mmap 0xa69b9650 +vmlinux sock_no_poll 0xc908e1dd +vmlinux sock_no_recvmsg 0xbc9e1625 +vmlinux sock_no_sendmsg 0x7d7e9393 +vmlinux sock_no_sendpage 0x0bfc95a2 +vmlinux sock_no_setsockopt 0xe1d86870 +vmlinux sock_no_shutdown 0x9023bed2 +vmlinux sock_no_socketpair 0x23677734 +vmlinux sock_recvmsg 0xab7480a4 +vmlinux sock_register 0xe3a0cdcc +vmlinux sock_release 0xc52e6f06 +vmlinux sock_rfree 0x3184ef93 +vmlinux sock_sendmsg 0xbe669b03 +vmlinux sock_setsockopt 0x5ecf1574 +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0xbb806b9f +vmlinux sock_wfree 0x81ef8c0e +vmlinux sock_wmalloc 0xb447dec8 +vmlinux sockfd_lookup 0x6dd4afd0 +vmlinux sonet_copy_stats 0x89195dc3 +vmlinux sonet_subtract_stats 0x1a24e5e2 +vmlinux sort 0x310917fe +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux start_tty 0x9aafdb77 +vmlinux steal_locks 0x673038c4 +vmlinux stop_tty 0xa1533799 +vmlinux strcspn 0x6c1ce5ce +vmlinux strlcat 0xdd0a2ba2 +vmlinux strlcpy 0x73e20c1c +vmlinux strnchr 0x0a3131f6 +vmlinux strncpy_from_user 0x245ec8e8 +vmlinux strnicmp 0x4e830a3e +vmlinux strnlen_user 0xbcc308bb +vmlinux strpbrk 0x9a1dfd65 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0xc7ec6c27 +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0xc51dda2d +vmlinux submit_bh 0x4119d09f +vmlinux submit_bio 0xd7f5dc95 +vmlinux subsys_create_file 0x55023e53 +vmlinux subsys_remove_file 0x8ea556c2 +vmlinux subsystem_init 0xcc3908db +vmlinux subsystem_register 0x6b67b4b9 +vmlinux subsystem_unregister 0x4f44fd59 +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0xec3dfdc7 +vmlinux switch_APIC_timer_to_ipi 0xa5c79544 +vmlinux switch_ipi_to_APIC_timer 0xac7eb84c +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0x726b934d +vmlinux sync_dirty_buffer 0x5d06b554 +vmlinux sync_inode 0x8de06297 +vmlinux sync_mapping_buffers 0xa1ef1368 +vmlinux sync_page_range 0x62fe8972 +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0x268cc6a2 +vmlinux sys_open 0x0359f865 +vmlinux sys_read 0x16bd3948 +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0xcc063a30 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0x75623931 +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0x02b2c2b7 +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0x42e640c1 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x8184bb9c +vmlinux sysdev_class_unregister 0xaf751b47 +vmlinux sysdev_create_file 0xc552cf56 +vmlinux sysdev_driver_register 0xc60fe291 +vmlinux sysdev_driver_unregister 0xcea5463e +vmlinux sysdev_register 0xec952846 +vmlinux sysdev_remove_file 0xc841954e +vmlinux sysdev_unregister 0x60c69141 +vmlinux sysfs_chmod_file 0x8d6f82d4 +vmlinux sysfs_create_bin_file 0x57d6c2b6 +vmlinux sysfs_create_dir 0x046bdf5b +vmlinux sysfs_create_file 0x28480ce0 +vmlinux sysfs_create_group 0xc4fd22b1 +vmlinux sysfs_create_link 0xcbd8677f +vmlinux sysfs_remove_bin_file 0xe5201583 +vmlinux sysfs_remove_dir 0xc6a0519a +vmlinux sysfs_remove_file 0x6df21031 +vmlinux sysfs_remove_group 0xf5151572 +vmlinux sysfs_remove_link 0x270fcc93 +vmlinux sysfs_rename_dir 0x02dc4ebb +vmlinux sysfs_update_file 0xf50c5fe8 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0x3da4f679 +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0x427529b6 +vmlinux task_nice 0x439334db +vmlinux task_no_data_intr 0xaf22ab12 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0x0965e085 +vmlinux tc_classify 0x61aad1f8 +vmlinux tcf_em_register 0xf19b9d09 +vmlinux tcf_em_tree_destroy 0x8ba03243 +vmlinux tcf_em_tree_dump 0x6e886229 +vmlinux tcf_em_tree_validate 0xdf3e5a01 +vmlinux tcf_em_unregister 0x0fef83d4 +vmlinux tcf_exts_change 0xf138a604 +vmlinux tcf_exts_destroy 0xc7f7e4f3 +vmlinux tcf_exts_dump 0xac266033 +vmlinux tcf_exts_dump_stats 0xf2ca612a +vmlinux tcf_exts_validate 0x24b630fb +vmlinux tcf_police 0x17da353b +vmlinux tcf_police_destroy 0x9db102ce +vmlinux tcf_police_dump 0x3906aa6b +vmlinux tcf_police_dump_stats 0x9ef2f136 +vmlinux tcf_police_hash 0x8493d6e7 +vmlinux tcf_police_ht 0x59979e7f +vmlinux tcf_police_locate 0xdc0b2fa6 +vmlinux tcf_police_lookup 0x33fcccbc +vmlinux tcf_police_new_index 0x7ae0f6c9 +vmlinux tcp_check_req 0x2c261fd7 +vmlinux tcp_child_process 0xa3a76515 +vmlinux tcp_close 0x28517c8a +vmlinux tcp_connect 0x49ba0224 +vmlinux tcp_create_openreq_child 0x763b9e3c +vmlinux tcp_death_row 0x1123ecd0 +vmlinux tcp_disconnect 0xf9c7da59 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0xddc8f6df +vmlinux tcp_getsockopt 0x16314fb0 +vmlinux tcp_hashinfo 0x5f4dc2e4 +vmlinux tcp_init_congestion_ops 0x68242a27 +vmlinux tcp_init_xmit_timers 0x3eae88c6 +vmlinux tcp_ioctl 0x64117418 +vmlinux tcp_make_synack 0xc6efbe8b +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0x35cc76c5 +vmlinux tcp_poll 0xb5ee82d9 +vmlinux tcp_proc_register 0x4c007fb1 +vmlinux tcp_proc_unregister 0x8527aca1 +vmlinux tcp_prot 0xd72507ca +vmlinux tcp_rcv_established 0x05a88542 +vmlinux tcp_rcv_state_process 0xa1e70b5c +vmlinux tcp_read_sock 0x5703d28d +vmlinux tcp_recvmsg 0x9744db62 +vmlinux tcp_register_congestion_control 0xd008dc45 +vmlinux tcp_reno_cong_avoid 0x0bb3b2e9 +vmlinux tcp_reno_min_cwnd 0x63721203 +vmlinux tcp_reno_ssthresh 0x9cc3970f +vmlinux tcp_sendmsg 0x98ecd0d3 +vmlinux tcp_sendpage 0xc62ba64d +vmlinux tcp_setsockopt 0xe7f328ec +vmlinux tcp_shutdown 0x7296c01d +vmlinux tcp_simple_retransmit 0x5279823f +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0x37761d73 +vmlinux tcp_timewait_state_process 0xce91b305 +vmlinux tcp_unhash 0x1cb23512 +vmlinux tcp_unregister_congestion_control 0x0547c0e6 +vmlinux tcp_v4_conn_request 0x18ca8138 +vmlinux tcp_v4_connect 0xf6cab89e +vmlinux tcp_v4_destroy_sock 0x175ee2c9 +vmlinux tcp_v4_do_rcv 0xac291b26 +vmlinux tcp_v4_remember_stamp 0x67c61bd6 +vmlinux tcp_v4_send_check 0x27c922b2 +vmlinux tcp_v4_syn_recv_sock 0xb26ac202 +vmlinux test_clear_page_dirty 0x00bfcf37 +vmlinux test_set_page_writeback 0xef0f5d04 +vmlinux textsearch_destroy 0x54989671 +vmlinux textsearch_find_continuous 0x4ddfd426 +vmlinux textsearch_prepare 0xaa3ebdae +vmlinux textsearch_register 0x7f8dc60c +vmlinux textsearch_unregister 0xadd78b41 +vmlinux thaw_bdev 0xf125f9bf +vmlinux timespec_trunc 0xc045ad4e +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0x631753ff +vmlinux tr_type_trans 0xac28e3d7 +vmlinux transport_add_device 0x6ffb5a0d +vmlinux transport_class_register 0x15f1f7ed +vmlinux transport_class_unregister 0x3271ddef +vmlinux transport_configure_device 0x6b68fac4 +vmlinux transport_destroy_device 0x703f9da3 +vmlinux transport_remove_device 0x6399a377 +vmlinux transport_setup_device 0x740f5e17 +vmlinux truncate_inode_pages 0xe9ee687e +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0x5dcdc502 +vmlinux try_to_release_page 0xb1a210fd +vmlinux tty_check_change 0x7d6e19ea +vmlinux tty_flip_buffer_push 0x56e9eaa5 +vmlinux tty_get_baud_rate 0xa3fc9a05 +vmlinux tty_hangup 0x339b5ddf +vmlinux tty_hung_up_p 0xa9e40e8f +vmlinux tty_ldisc_deref 0x1ba8ccca +vmlinux tty_ldisc_flush 0xa4d79e47 +vmlinux tty_ldisc_get 0x4acbffda +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x222b9904 +vmlinux tty_ldisc_ref_wait 0x5b0a8594 +vmlinux tty_name 0xace380fb +vmlinux tty_register_device 0x913a8a89 +vmlinux tty_register_driver 0xb7deaa67 +vmlinux tty_register_ldisc 0x98880017 +vmlinux tty_set_operations 0x8be5e793 +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0x3d3f0bf8 +vmlinux tty_unregister_driver 0xa663442d +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0x2c1aedef +vmlinux tty_wait_until_sent 0xc2ef6652 +vmlinux tty_wakeup 0xccefdb84 +vmlinux uart_add_one_port 0x1a1011e9 +vmlinux uart_get_baud_rate 0xa8da9928 +vmlinux uart_get_divisor 0xfa93fd3a +vmlinux uart_match_port 0xe93f7332 +vmlinux uart_register_driver 0xf872bd7a +vmlinux uart_remove_one_port 0x199208e6 +vmlinux uart_resume_port 0xc172d277 +vmlinux uart_suspend_port 0xfa2dc53f +vmlinux uart_unregister_driver 0x922dcb79 +vmlinux uart_update_timeout 0xcf00dbe9 +vmlinux uart_write_wakeup 0x822543bc +vmlinux udp_disconnect 0xcdda71bf +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0x7425ac56 +vmlinux udp_ioctl 0x2fb2f22f +vmlinux udp_poll 0x73f48b44 +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x6515a6e7 +vmlinux udp_proc_unregister 0x2aaba390 +vmlinux udp_prot 0xca9b1a90 +vmlinux udp_sendmsg 0xae3c477f +vmlinux uhci_check_and_reset_hc 0x5a07f0a3 +vmlinux uhci_reset_hc 0x2649a85c +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unload_nls 0x718c121e +vmlinux unlock_buffer 0xd310d3a5 +vmlinux unlock_cpu_hotplug 0xdbb6cbd9 +vmlinux unlock_kernel 0x5dfe8f1a +vmlinux unlock_new_inode 0x7d4a6453 +vmlinux unlock_page 0x48e7d706 +vmlinux unlock_rename 0x94425d77 +vmlinux unmap_mapping_range 0xa97f0ffa +vmlinux unmap_underlying_metadata 0xad58e6db +vmlinux unregister_8022_client 0x1588de8e +vmlinux unregister_acpi_bus_type 0x03d1a8cb +vmlinux unregister_binfmt 0x0203b786 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0x6b00f27f +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_exec_domain 0xc0de845b +vmlinux unregister_filesystem 0x98885ff4 +vmlinux unregister_framebuffer 0x2e5d4333 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_key_type 0x2ef8f060 +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0x0fbae0d2 +vmlinux unregister_netdevice 0x7a6c8ce5 +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0x3ee39594 +vmlinux unregister_qdisc 0x9212b142 +vmlinux unregister_quota_format 0xba9fd9f3 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0x0424c2bb +vmlinux unregister_snap_client 0x424671a8 +vmlinux unregister_sysctl_table 0x56efa5b0 +vmlinux unregister_sysrq_key 0x3316bea4 +vmlinux unregister_tcf_proto_ops 0xfe45b082 +vmlinux unregister_timer_hook 0x3fa545f8 +vmlinux unregister_wlandev 0xb9556871 +vmlinux unset_nmi_callback 0x2ef9373e +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0xf9c02031 +vmlinux update_region 0xff80ed62 +vmlinux user_describe 0x74c10a8a +vmlinux user_destroy 0xc1602edd +vmlinux user_duplicate 0xf38288ac +vmlinux user_instantiate 0x75b7eb9c +vmlinux user_match 0x37518a9e +vmlinux user_read 0x2fc907d1 +vmlinux user_update 0x39fe65df +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0x1261c3a7 +vmlinux vc_cons 0x77438c55 +vmlinux vc_resize 0xdf150e9e +vmlinux vcc_hash 0x2cc2d52d +vmlinux vcc_insert_socket 0x22343f4f +vmlinux vcc_release_async 0xac52b3a2 +vmlinux vcc_sklist_lock 0xb8a20d62 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0x85de58af +vmlinux vfs_follow_link 0x122f6178 +vmlinux vfs_fstat 0xcb841136 +vmlinux vfs_get_dqblk 0x2c9b11f9 +vmlinux vfs_get_dqinfo 0x1f33d696 +vmlinux vfs_getattr 0xf038887c +vmlinux vfs_link 0x910b3dc3 +vmlinux vfs_llseek 0x37754c00 +vmlinux vfs_lstat 0x91d803ff +vmlinux vfs_mkdir 0xb82d778b +vmlinux vfs_mknod 0x66fb9297 +vmlinux vfs_permission 0xf94bf57c +vmlinux vfs_quota_off 0xa8e03bb6 +vmlinux vfs_quota_on 0x6ac39e24 +vmlinux vfs_quota_on_mount 0xabc365a7 +vmlinux vfs_quota_sync 0xc1a67029 +vmlinux vfs_read 0xf80705a0 +vmlinux vfs_readdir 0xecb9ab86 +vmlinux vfs_readlink 0x2dcebf1e +vmlinux vfs_readv 0x58d8c7e2 +vmlinux vfs_rename 0x68890267 +vmlinux vfs_rmdir 0x2f1bd8d3 +vmlinux vfs_set_dqblk 0x09bdeddb +vmlinux vfs_set_dqinfo 0xed47b4d2 +vmlinux vfs_stat 0x4e193f40 +vmlinux vfs_statfs 0xb58eec54 +vmlinux vfs_symlink 0xd4a99d33 +vmlinux vfs_unlink 0x76b43ff2 +vmlinux vfs_write 0xb061f8c7 +vmlinux vfs_writev 0x83ed8564 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0xe581805c +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0x45130a7f +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0xc9bef200 +vmlinux vmtruncate 0xd9a9853b +vmlinux vprintk 0xaec4759f +vmlinux vscnprintf 0x0ead5073 +vmlinux vsnprintf 0x6989a769 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0x32c5cd1f +vmlinux wait_for_completion_interruptible 0x2904efe2 +vmlinux wait_for_completion_interruptible_timeout 0xc1885601 +vmlinux wait_for_completion_timeout 0x411030ac +vmlinux wait_on_page_bit 0x521c3716 +vmlinux wait_on_sync_kiocb 0xf037d5eb +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xd7e7ca24 +vmlinux wake_up_process 0xe9ded5bd +vmlinux wireless_send_event 0xf07a352a +vmlinux wireless_spy_update 0x34cdf29b +vmlinux wlan_setup 0x5c38f032 +vmlinux wlan_unsetup 0xdc665f5f +vmlinux write_inode_now 0x49af0a5c +vmlinux write_one_page 0xcfbe3fa6 +vmlinux x86_acpiid_to_apicid 0x062bdb0e +vmlinux x86_cpu_to_apicid 0x8874b79e +vmlinux xfrm4_rcv 0x1928c999 +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0x80f19763 +vmlinux xfrm_bundle_ok 0x1dc2abfe +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0x9119b8da +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0xa6c3f72f +vmlinux xfrm_dst_lookup 0xc309c022 +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0x1fb7951f +vmlinux xfrm_find_acq_byseq 0x2784d7cb +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0xcaa0e6bb +vmlinux xfrm_init_state 0xd7e7a4a3 +vmlinux xfrm_lookup 0x8b8227a3 +vmlinux xfrm_parse_spi 0x6a3d7576 +vmlinux xfrm_policy_alloc 0xad1ca939 +vmlinux xfrm_policy_byid 0x67c431ce +vmlinux xfrm_policy_bysel 0xf9b697b8 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x6fd190fd +vmlinux xfrm_policy_list 0x2ac3ef20 +vmlinux xfrm_policy_register_afinfo 0xe0199d84 +vmlinux xfrm_policy_unregister_afinfo 0xfe2556f1 +vmlinux xfrm_policy_walk 0x1337c062 +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0xd7f9d61f +vmlinux xfrm_register_type 0x688cd64e +vmlinux xfrm_replay_advance 0x72d8e87f +vmlinux xfrm_replay_check 0x14ba6138 +vmlinux xfrm_state_add 0x2b663f57 +vmlinux xfrm_state_alloc 0xaac9231a +vmlinux xfrm_state_check 0xf242297c +vmlinux xfrm_state_check_expire 0x13dbb3b9 +vmlinux xfrm_state_delete 0x57869db0 +vmlinux xfrm_state_delete_tunnel 0xdefa30c7 +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0x34f16339 +vmlinux xfrm_state_lookup 0xedfcfc20 +vmlinux xfrm_state_mtu 0xef6a3b7f +vmlinux xfrm_state_register_afinfo 0x6810f760 +vmlinux xfrm_state_unregister_afinfo 0x3fe206ee +vmlinux xfrm_state_update 0x19e85af1 +vmlinux xfrm_state_walk 0xdcef2e77 +vmlinux xfrm_unregister_km 0x80319914 +vmlinux xfrm_unregister_type 0x6e60ae71 +vmlinux xfrm_user_policy 0x782cf4ec +vmlinux xrlim_allow 0x09ec7acb +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xa7c7b37b +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x3924690c +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0xd91b8c6d --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/i386/server-bigiron.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/i386/server-bigiron.modules @@ -0,0 +1,1775 @@ +3c359 +3c501 +3c503 +3c505 +3c507 +3c509 +3c515 +3c523 +3c527 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +53c700 +6pack +8021q +8139cp +8139too +8250_accent +8250_boca +8250_fourport +8250_hub6 +8250_mca +82596 +8390 +9p2000 +a3d +aacraid +abyss +ac +ac3200 +ac97_codec +acecad +acenic +acerhk +aci +acpi-cpufreq +acpiphp +acpiphp_ibm +acpi_sbs +acquirewdt +act2000 +act200l-sir +actisys-sir +acx +ad1848 +ad1889 +adfs +adi +adlib_card +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +adv7170 +adv7175 +adv717x +advansys +advantechwdt +aec62xx +aedsp16 +aes +aes-i586 +affs +af_key +af_packet +agpgart +ah4 +ah6 +aha152x +aha152x_cs +aha1542 +aha1740 +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airprime +ali-agp +ali-ircc +alim1535_wdt +alim15x3 +alim7101_wdt +ambassador +amd64-agp +amd74xx +amd76xrom +amd8111e +amd-k7-agp +analog +anubis +aoe +apm +appletalk +appletouch +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +arlan +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +asus_acpi +at1700 +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +ati-agp +atiixp +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +auerswald +auth_rpcgss +autofs +autofs4 +av5100 +avma1_cs +avm_cs +avmfritz +ax25 +axnet_cs +aztcd +b1 +b1dma +b1isa +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +battery +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_aout +binfmt_misc +bitblit +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bnep +bnx2 +bonding +bpa10x +bpck +bpck6 +bpqether +br2684 +bridge +bsd_comp +bt3c_cs +bt819 +bt856 +bt865 +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +button +bw-qcam +c101 +c4 +capability +capi +capidrv +capifs +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cdu31a +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm4000_cs +cm4040_cs +cman +cmd64x +cmtp +cn +cobra +coda +com20020 +com20020_cs +com20020-isa +com20020-pci +com90io +com90xx +comm +commoncap +configfs +container +cops +cosa +cp2101 +cpcihp_generic +cpcihp_zt5550 +cpia +cpia_pp +cpia_usb +cpqarray +cpqphp +cpu5wdt +cpufreq_conservative +cpufreq-nforce2 +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +cpuid +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cs5520 +cs5530 +cs5535 +cs89x0 +ct82c710 +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxacru +cxgb +cy82c693 +cyber2000fb +cyberjack +cyblafb +cyclades +cyclomx +cycx_drv +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +dcdbas +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +dell_rbu +depca +des +dev_acpi +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +dilnetpc +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +donauboe +dpc7146 +dpt_i2o +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +ds_w1_bridge +dtc +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +e2100 +eagle-usb +eata +eata_pio +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +econet +eepro +eepro100 +eeprom +eexpress +efficeon-agp +efs +ehci-hcd +elo +elsa_cs +em28xx +em8300 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +eni +epat +epca +epia +epic100 +eql +es3210 +esi-sir +esp4 +esp6 +eth1394 +eth16i +eurotechwdt +evbug +evdev +ewrk3 +exportfs +ext2 +ext3 +fakephp +fan +farsync +fat +faulty +faxl3 +fbcon +fd_mcs +fdomain +fdomain_cs +fealnx +firestream +fit2 +fit3 +floppy +fm801-gp +fmvj18x_cs +font +forcedeth +fore_200e +freevxfs +freq_table +friq +frpw +fsam7400 +fscher +fscpos +ftdi_sio +ftl +fuse +g450_pll +gadgetfs +gamecon +gameport +garmin_gps +gdth +generic +generic_serial +gen_probe +g_ether +gf2k +g_file_storage +gfs +girbil-sir +gl518sm +gl520sm +gl620a +gnbd +g_NCR5380 +g_NCR5380_mmio +grip +grip_mp +gscd +g_serial +guillemot +gunze +gx1fb +gx-suspmod +g_zero +hamachi +hangcheck-timer +hci_uart +hci_usb +hci_vhci +hdaps +hdlc +hdlcdrv +he +hermes +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hidp +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hostess_sv11 +hotkey +hp +hp100 +hp4x +hpfs +hp-plus +hpt34x +hpt366 +hwmon-vid +hw_random +i2c_acpi_ec +i2c-algo-bit +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-core +i2c-dev +i2c-elektor +i2c-i801 +i2c-i810 +i2c-isa +i2c-matroxfb +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i6300esb +i810 +i810_audio +i810fb +i82092 +i82365 +i830 +i8k +i8xx_tco +i915 +ib700wdt +ib_cm +ib_core +ib_ipoib +ibm_acpi +ib_mad +ibmasm +ibmasr +ibmcam +ibmlana +ibmmca +ibmphp +ib_mthca +ibmtr +ibmtr_cs +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ichxrom +icn +ide-cd +ide-cs +ide-disk +ide-floppy +ide-generic +ide-pnp +ide-scsi +ide-tape +idmouse +idt77252 +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +in2000 +inftl +initio +inport +intel-agp +intelfb +interact +io_edgeport +io_ti +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ip_gre +iphase +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipw3945 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irport +irtty-sir +ir-usb +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +islsm +islsm_device +islsm_pci +islsm_usb +isofs +isp16 +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kahlua +kaweth +kbic +kbtab +kernelcapi +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l3udss1 +l440gx +l64781 +lanai +lance +lanstreamer +lapb +lapbether +lcd +ldusb +lec +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +litelink-sir +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lne390 +lockd +lock_dlm +lock_gulm +lock_harness +lock_nolock +logibm +longrun +loop +lp +lp486e +lpfc +ltpc +lxt +ma600-sir +machzwd +macmodes +madgemc +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1619 +max6875 +mcdx +mcp2120-sir +mct_u232 +md4 +mdacon +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +meye +mga +michael_mic +microcode +microtek +mii +minix +miropcm20 +miropcm20-rds +mISDN_capi +mISDN_core +mISDN_dsp +mISDN_dtmf +mISDN_isac +mISDN_l1 +mISDN_l2 +mISDN_x25dte +mixcomwd +mk712 +mkiss +mmc_core +mpoa +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu401 +mrv8k +msdos +msp3400 +msr +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouch +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mwave +mxb +mxser +n2 +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +NCR53c406a +NCR_D700 +NCR_Q720_mod +ndiswrapper +ne +ne2 +ne2k-pci +ne3210 +neofb +net1080 +net2280 +netconsole +netrom +netsc520 +nettel +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +ni5010 +ni52 +ni65 +nicstar +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +nsc-ircc +nsp32 +nsp_cs +ntfs +nvidia-agp +nvidiafb +nvram +nxt2002 +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ohci1394 +ohci-hcd +old_belkin-sir +olympic +omninet +on20 +on26 +onenand +opl3 +opl3sa2 +oprofile +optcd +opti621 +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +p4-clockmod +padlock +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pas16 +pas2 +pbe5 +pc110pad +pc300 +pc87360 +pca9539 +pcbit +pcc_acpi +pcd +pcf8574 +pcf8591 +pci +pci200syn +pciehp +pci_hotplug +pcilynx +pcips2 +pcmcia +pcmcia_core +pcmciamtd +pcnet32 +pcnet_cs +pcspkr +pcwd +pcwd_pci +pcwd_usb +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +piix +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmc551 +pms +pnc2000 +podxtpro +powermate +powernow-k6 +powernow-k7 +powernow-k8 +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +processor +proteon +ps2esdi +psi240i +psmouse +pss +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radeonfb +radio-aimslab +radio-aztech +radio-cadet +radio-gemtek +radio-gemtek-pci +radio-maestro +radio-maxiradio +radio-rtrack2 +radio-sf16fmi +radio-sf16fmr2 +radio-terratec +radio-trust +radio-typhoon +radio-zoltrix +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio500 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rrunner +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc8564 +rtl8150 +rxrpc +rz1000 +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7110 +saa7111 +saa7114 +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +saa7185 +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb +sb1000 +sbc60xxwdt +sbc8360 +sbc_gxx +sb_lib +sbni +sbp2 +sc +sc1200 +sc1200wdt +sc520cdp +sc520_wdt +scb2_flash +scc +sch_atm +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_debug +scsi_mod +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200 +scx200_acb +scx200_docflash +scx200_gpio +scx200_i2c +scx200_wdt +sdhci +sdla +sd_mod +se401 +seagate +sealevel +seclvl +sedlbauer_cs +sedlfax +seeq8005 +serial_cs +serio_raw +sermouse +serpent +serport +serverworks +sg +sha1 +sha256 +sha512 +shaper +shpchp +sidewinder +siimage +sim710 +sir-dev +sis +sis190 +sis5513 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sjcd +sk98lin +skfp +skge +skisa +sk_mca +sky2 +sl811_cs +sl811-hcd +slc90e66 +slhc +slip +slram +smbfs +smc9194 +smc91c92_cs +smc-mca +smctr +smc-ultra +smc-ultra32 +smsc47b397 +smsc47m1 +smsc-ircc2 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1816a +snd-ad1816a-lib +snd-ad1848 +snd-ad1848-lib +snd-ad1889 +snd-ainstr-fm +snd-ainstr-gf1 +snd-ainstr-iw +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-als100 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt2320 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmi8330 +snd-cmipci +snd-cs4231 +snd-cs4231-lib +snd-cs4232 +snd-cs4236 +snd-cs4236-lib +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dt019x +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emu8000-synth +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1688 +snd-es1688-lib +snd-es18xx +snd-es1938 +snd-es1968 +snd-es968 +snd-fm801 +snd-gusclassic +snd-gusextreme +snd-gus-lib +snd-gusmax +snd-gus-synth +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-interwave +snd-interwave-stb +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3sa2 +snd-opl3-synth +snd-opl4-lib +snd-opl4-synth +snd-opti92x-ad1848 +snd-opti92x-cs4231 +snd-opti93x +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-rtctimer +snd-sb16 +snd-sb16-csp +snd-sb16-dsp +snd-sb8 +snd-sb8-dsp +snd-sbawe +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sgalaxy +snd-sonicvibes +snd-sscape +snd-tea575x-tuner +snd-tea6330t +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-wavefront +snd-ymfpci +softcursor +softdog +sony_acpi +sonycd535 +sonypi +sound +soundcore +sp8870 +sp887x +spaceball +spaceorb +spca5xx +specialix +spectrum_cs +speedstep-centrino +speedstep-ich +speedstep-lib +speedstep-smi +speedtch +squashfs +sr_mod +sstfb +st +starfire +stinger +stir4200 +stradis +strip +stv0297 +stv0299 +stv680 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sworks-agp +sx +sx8 +sym53c416 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink +synclink_cs +synclinkmp +syncppp +sysv +t128 +t1isa +t1pci +tc1100-wmi +tcic +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tdfxfb +tea +tea6415c +tea6420 +tekram-sir +teles_cs +tg3 +tgr192 +thermal +tileblit +tipar +ti_usb_3410_5052 +tlan +tlclk +tmdc +tms380tr +tmscsim +tmspci +toshiba +toshiba_acpi +touchkitusb +tpm +tpm_atmel +tpm_infineon +tpm_nsc +trident +tridentfb +triflex +trix +trm290 +ts5500_flash +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +tvp5150 +twidjoy +twofish +typhoon +u14-34f +uart401 +uart6850 +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +ultrastor +umem +unionfs +uPD98402 +usbatm +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vesafb +vfat +vga16fb +vgastate +via +via686a +via82cxxx +via-agp +via-ircc +via-rhine +via-velocity +vicam +video +video1394 +video-buf +video-buf-dvb +videocodec +videodev +visor +vlsi_ir +v_midi +vpx3220 +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w6692pci +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83792d +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w9966 +w9968cf +wacom +wafer5823wdt +wanrouter +wanxl +warrior +wavelan +wavelan_cs +wbsd +wd +wd7000 +wdt +wdt_pci +whiteheat +winbond-840 +wire +wistron_btns +wl3501_cs +wm8775 +wp512 +x1205 +x25 +x25_asy +xd +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xor +xpad +xtkbd +xusbatm +yam +yealink +yellowfin +yenta_socket +z85230 +zatm +zaurus +zd1201 +zd1211 +zlib_deflate +znet +zr36016 +zr36050 +zr36060 +zr36067 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/i386/386 +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/i386/386 @@ -0,0 +1,5674 @@ +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_detect_processor 0x16836e04 +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_get_freqs 0xb9c4330f +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_get_processor_frequency 0x4cdb4bd0 +arch/i386/kernel/scx200 scx200_cb_base 0x907665bd +arch/i386/kernel/scx200 scx200_gpio_base 0x254e5667 +arch/i386/kernel/scx200 scx200_gpio_configure 0x80c65a79 +arch/i386/kernel/scx200 scx200_gpio_shadow 0x9272bc53 +drivers/acpi/ac acpi_get_ac_dir 0x5af08a1e +drivers/acpi/battery acpi_get_battery_dir 0xf23b6e92 +drivers/acpi/i2c_acpi_ec acpi_get_ec_hc 0x899a7d65 +drivers/acpi/processor acpi_processor_notify_smm 0xc49ad544 +drivers/acpi/processor acpi_processor_register_performance 0x858fc2e6 +drivers/acpi/processor acpi_processor_set_thermal_limit 0xe8a3605f +drivers/acpi/processor acpi_processor_unregister_performance 0x70b3538a +drivers/atm/suni suni_init 0x218c4db0 +drivers/atm/uPD98402 uPD98402_init 0x76fa73bd +drivers/block/loop loop_register_transfer 0x89bfca83 +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0xa23fb253 +drivers/block/paride/paride pi_disconnect 0x222ae982 +drivers/block/paride/paride pi_do_claimed 0x0b83c767 +drivers/block/paride/paride pi_init 0xbd882f53 +drivers/block/paride/paride pi_read_block 0x28a31431 +drivers/block/paride/paride pi_read_regr 0xe1723dd0 +drivers/block/paride/paride pi_register 0x8d5edb7e +drivers/block/paride/paride pi_release 0x76577271 +drivers/block/paride/paride pi_schedule_claimed 0xf3382f8b +drivers/block/paride/paride pi_unregister 0x17117c9d +drivers/block/paride/paride pi_write_block 0xf188dffb +drivers/block/paride/paride pi_write_regr 0x47f2351b +drivers/cdrom/cdrom cdrom_get_last_written 0xd8356600 +drivers/cdrom/cdrom cdrom_get_media_event 0x3789666c +drivers/cdrom/cdrom cdrom_ioctl 0x9c051823 +drivers/cdrom/cdrom cdrom_media_changed 0x7f3127ba +drivers/cdrom/cdrom cdrom_mode_select 0x78359145 +drivers/cdrom/cdrom cdrom_mode_sense 0x5feeb87a +drivers/cdrom/cdrom cdrom_number_of_slots 0xbc6dd999 +drivers/cdrom/cdrom cdrom_open 0x15476c6b +drivers/cdrom/cdrom cdrom_release 0x821fab00 +drivers/cdrom/cdrom init_cdrom_command 0x4f476e96 +drivers/cdrom/cdrom register_cdrom 0x010781a3 +drivers/cdrom/cdrom unregister_cdrom 0xb70c64d4 +drivers/char/agp/agpgart agp3_generic_cleanup 0xc2424641 +drivers/char/agp/agpgart agp3_generic_configure 0x4b085dbf +drivers/char/agp/agpgart agp3_generic_fetch_size 0xde9b17ed +drivers/char/agp/agpgart agp3_generic_sizes 0x546264cf +drivers/char/agp/agpgart agp3_generic_tlbflush 0x34ed665d +drivers/char/agp/agpgart agp_add_bridge 0x2dd80c73 +drivers/char/agp/agpgart agp_alloc_bridge 0x78424c69 +drivers/char/agp/agpgart agp_allocate_memory 0xa449ee3b +drivers/char/agp/agpgart agp_backend_acquire 0x4849d422 +drivers/char/agp/agpgart agp_backend_release 0xec8f3111 +drivers/char/agp/agpgart agp_bind_memory 0x015a60d3 +drivers/char/agp/agpgart agp_bridge 0x89463669 +drivers/char/agp/agpgart agp_bridges 0x673f815e +drivers/char/agp/agpgart agp_collect_device_status 0xc3b6e8cb +drivers/char/agp/agpgart agp_copy_info 0xab3cc73b +drivers/char/agp/agpgart agp_create_memory 0xade5d4c6 +drivers/char/agp/agpgart agp_device_command 0xe6d5c272 +drivers/char/agp/agpgart agp_enable 0xca796398 +drivers/char/agp/agpgart agp_find_bridge 0x77f8bd48 +drivers/char/agp/agpgart agp_free_key 0xd0fef3b2 +drivers/char/agp/agpgart agp_free_memory 0xd691ae54 +drivers/char/agp/agpgart agp_generic_alloc_by_type 0x5f574c46 +drivers/char/agp/agpgart agp_generic_alloc_page 0x4fcd59f5 +drivers/char/agp/agpgart agp_generic_create_gatt_table 0x58422499 +drivers/char/agp/agpgart agp_generic_destroy_page 0xbba27749 +drivers/char/agp/agpgart agp_generic_enable 0xbf1e51d7 +drivers/char/agp/agpgart agp_generic_free_by_type 0x65e8da16 +drivers/char/agp/agpgart agp_generic_free_gatt_table 0x697f14c7 +drivers/char/agp/agpgart agp_generic_insert_memory 0x10ce31c8 +drivers/char/agp/agpgart agp_generic_mask_memory 0x75c04cfb +drivers/char/agp/agpgart agp_generic_remove_memory 0xc837af69 +drivers/char/agp/agpgart agp_memory_reserved 0xe089cfcc +drivers/char/agp/agpgart agp_num_entries 0xd6feefa5 +drivers/char/agp/agpgart agp_off 0x7538b132 +drivers/char/agp/agpgart agp_put_bridge 0x65a18760 +drivers/char/agp/agpgart agp_remove_bridge 0x7d826fc5 +drivers/char/agp/agpgart agp_try_unsupported_boot 0xc5d9c46c +drivers/char/agp/agpgart agp_unbind_memory 0x59f3b549 +drivers/char/agp/agpgart get_agp_version 0xe6333cb3 +drivers/char/agp/agpgart global_cache_flush 0xa4d4f0e6 +drivers/char/agp/agpgart map_page_into_agp 0x7bd0afb6 +drivers/char/agp/agpgart unmap_page_from_agp 0x61cd3bf2 +drivers/char/drm/drm drm_addbufs_agp 0x72af53e1 +drivers/char/drm/drm drm_addbufs_fb 0x4fc22a5a +drivers/char/drm/drm drm_addbufs_pci 0x0e919e4b +drivers/char/drm/drm drm_addmap 0x745ffd2e +drivers/char/drm/drm drm_agp_acquire 0x39a58a75 +drivers/char/drm/drm drm_agp_alloc 0xd3dc2626 +drivers/char/drm/drm drm_agp_bind 0xd419b434 +drivers/char/drm/drm drm_agp_bind_memory 0x47899393 +drivers/char/drm/drm drm_agp_enable 0x46ef43a8 +drivers/char/drm/drm drm_agp_free 0x38013204 +drivers/char/drm/drm drm_agp_info 0x8cc2a476 +drivers/char/drm/drm drm_agp_release 0x61f69a45 +drivers/char/drm/drm drm_agp_unbind 0x165d6400 +drivers/char/drm/drm drm_ati_pcigart_cleanup 0xb82bf5c8 +drivers/char/drm/drm drm_ati_pcigart_init 0x892f4594 +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0x143bd7eb +drivers/char/drm/drm drm_core_reclaim_buffers 0x5b6515d2 +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0xff68894c +drivers/char/drm/drm drm_fasync 0x86431d6e +drivers/char/drm/drm drm_get_dev 0x9ff1baff +drivers/char/drm/drm drm_get_resource_len 0xbf7f85db +drivers/char/drm/drm drm_get_resource_start 0x8c30879e +drivers/char/drm/drm drm_init 0xcb49220e +drivers/char/drm/drm drm_ioctl 0x911cc743 +drivers/char/drm/drm drm_irq_uninstall 0x86349aa6 +drivers/char/drm/drm drm_mmap 0xd732242c +drivers/char/drm/drm drm_open 0x29abff52 +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0xc24f1961 +drivers/char/drm/drm drm_pci_free 0x0cf9dbbb +drivers/char/drm/drm drm_poll 0xb60f2f15 +drivers/char/drm/drm drm_release 0x2fac4e7d +drivers/char/drm/drm drm_rmmap 0xfc545839 +drivers/char/drm/drm drm_rmmap_locked 0xacd76c6a +drivers/char/drm/drm drm_vbl_send_signals 0x5c8cfd47 +drivers/char/ftape/lowlevel/ftape ftape_abort_operation 0xd90df519 +drivers/char/ftape/lowlevel/ftape ftape_calibrate_data_rate 0x82bcf52a +drivers/char/ftape/lowlevel/ftape ftape_command 0x799305e4 +drivers/char/ftape/lowlevel/ftape ftape_decode_header_segment 0x08b665ef +drivers/char/ftape/lowlevel/ftape ftape_disable 0x7b52f04b +drivers/char/ftape/lowlevel/ftape ftape_enable 0x7ec0d5d4 +drivers/char/ftape/lowlevel/ftape ftape_find_end_of_bsm_list 0x46738687 +drivers/char/ftape/lowlevel/ftape ftape_format_status 0xe9849eee +drivers/char/ftape/lowlevel/ftape ftape_format_track 0x40febb40 +drivers/char/ftape/lowlevel/ftape ftape_function_nest_level 0x50196743 +drivers/char/ftape/lowlevel/ftape ftape_get_bad_sector_entry 0xfed5a53d +drivers/char/ftape/lowlevel/ftape ftape_get_status 0x46f47070 +drivers/char/ftape/lowlevel/ftape ftape_loop_until_writes_done 0x003ed2ea +drivers/char/ftape/lowlevel/ftape ftape_mmap 0xf12fd87a +drivers/char/ftape/lowlevel/ftape ftape_parameter 0xc17b60e3 +drivers/char/ftape/lowlevel/ftape ftape_read_header_segment 0xa2b14b3c +drivers/char/ftape/lowlevel/ftape ftape_read_segment_fraction 0xc87f4ed7 +drivers/char/ftape/lowlevel/ftape ftape_ready_wait 0xc780ed08 +drivers/char/ftape/lowlevel/ftape ftape_report_error 0x999edffd +drivers/char/ftape/lowlevel/ftape ftape_report_operation 0xf5ac4591 +drivers/char/ftape/lowlevel/ftape ftape_reset_drive 0x2bdba6aa +drivers/char/ftape/lowlevel/ftape ftape_seek_to_bot 0x4815ac3c +drivers/char/ftape/lowlevel/ftape ftape_seek_to_eot 0x3566aa64 +drivers/char/ftape/lowlevel/ftape ftape_set_nr_buffers 0x8b56caaa +drivers/char/ftape/lowlevel/ftape ftape_set_state 0x5b52d4b8 +drivers/char/ftape/lowlevel/ftape ftape_start_writing 0xa99d81e3 +drivers/char/ftape/lowlevel/ftape ftape_trace_call 0x63f7f6d0 +drivers/char/ftape/lowlevel/ftape ftape_trace_exit 0x4e755dcf +drivers/char/ftape/lowlevel/ftape ftape_trace_log 0x92ce7eb1 +drivers/char/ftape/lowlevel/ftape ftape_tracing 0x6b6253d3 +drivers/char/ftape/lowlevel/ftape ftape_verify_segment 0x82675be7 +drivers/char/ftape/lowlevel/ftape ftape_write_segment 0x8a09c846 +drivers/char/ftape/lowlevel/ftape ftape_zap_read_buffers 0xdd9f0ae0 +drivers/char/ftape/zftape/zftape zft_cmpr_register 0xe27489d5 +drivers/char/ftape/zftape/zftape zft_fetch_segment_fraction 0x41f166c1 +drivers/char/ftape/zftape/zftape zft_vfree 0x2c2d8efa +drivers/char/ftape/zftape/zftape zft_vmalloc_always 0x5ce027a7 +drivers/char/ftape/zftape/zftape zft_vmalloc_once 0xd3f3391d +drivers/char/generic_serial gs_block_til_ready 0x0b19569a +drivers/char/generic_serial gs_chars_in_buffer 0xf8bca6b9 +drivers/char/generic_serial gs_close 0x98a40b9c +drivers/char/generic_serial gs_flush_buffer 0x9442b80d +drivers/char/generic_serial gs_flush_chars 0xe4943e2c +drivers/char/generic_serial gs_getserial 0x8fe656ed +drivers/char/generic_serial gs_got_break 0x98a35943 +drivers/char/generic_serial gs_hangup 0xe56f1ce9 +drivers/char/generic_serial gs_init_port 0xb925926c +drivers/char/generic_serial gs_put_char 0xf5229e26 +drivers/char/generic_serial gs_set_termios 0x19f9de59 +drivers/char/generic_serial gs_setserial 0x683da30c +drivers/char/generic_serial gs_start 0xff3bc932 +drivers/char/generic_serial gs_stop 0x45d70e02 +drivers/char/generic_serial gs_write 0x11c67069 +drivers/char/generic_serial gs_write_room 0x95e016d5 +drivers/char/ip2main ip2_loadmain 0x5f735f69 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0x65940937 +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0xf1459164 +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0x98579187 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0x12c99f27 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0x398a0a9b +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0xa86bd625 +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0x5d0670c5 +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0x58e34d17 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0x58173438 +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x40a91b4f +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0xf757e1d7 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0x4ac54327 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0xf20a0ae7 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0xccea0631 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0x6efaeb14 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0x3cefc534 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0x65f2748d +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0x27d9e728 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0x0f5f4fac +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0x89736741 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0xde0c75f6 +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0xb2caf678 +drivers/char/nvram __nvram_check_checksum 0x2adec1e0 +drivers/char/nvram __nvram_read_byte 0x17ff2c1d +drivers/char/nvram __nvram_write_byte 0xa8813189 +drivers/char/nvram nvram_check_checksum 0x7da28f12 +drivers/char/nvram nvram_read_byte 0x0f28cb91 +drivers/char/nvram nvram_write_byte 0x9ce3f83f +drivers/char/rtc rtc_control 0xc9b27289 +drivers/char/rtc rtc_register 0xfdab2b9c +drivers/char/rtc rtc_unregister 0xeddfe49d +drivers/char/sonypi sonypi_camera_command 0x89590f57 +drivers/char/tpm/tpm tpm_open 0x220deda3 +drivers/char/tpm/tpm tpm_pm_resume 0x15b3be39 +drivers/char/tpm/tpm tpm_pm_suspend 0x7deecd01 +drivers/char/tpm/tpm tpm_read 0x166ecc0d +drivers/char/tpm/tpm tpm_register_hardware 0x4a687b3d +drivers/char/tpm/tpm tpm_release 0x25314cdf +drivers/char/tpm/tpm tpm_remove_hardware 0xf6eaf2c4 +drivers/char/tpm/tpm tpm_show_caps 0xb71c20ba +drivers/char/tpm/tpm tpm_show_pcrs 0xd8ddf6c7 +drivers/char/tpm/tpm tpm_show_pubek 0x05879f70 +drivers/char/tpm/tpm tpm_store_cancel 0x34b512aa +drivers/char/tpm/tpm tpm_write 0xbc362712 +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0x24f307cb +drivers/cpufreq/freq_table cpufreq_freq_attr_scaling_available_freqs 0x36d44023 +drivers/cpufreq/freq_table cpufreq_frequency_get_table 0x2f47d8c7 +drivers/cpufreq/freq_table cpufreq_frequency_table_cpuinfo 0x288b9a26 +drivers/cpufreq/freq_table cpufreq_frequency_table_get_attr 0x706b3a33 +drivers/cpufreq/freq_table cpufreq_frequency_table_put_attr 0x7ae1ae8e +drivers/cpufreq/freq_table cpufreq_frequency_table_target 0x5b4c6803 +drivers/cpufreq/freq_table cpufreq_frequency_table_verify 0xde54220f +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-bit i2c_bit_add_bus 0x66aa0d97 +drivers/i2c/algos/i2c-algo-bit i2c_bit_del_bus 0xceb57b97 +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0x9289666b +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0x3a96106b +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0xd334cd72 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0x7b2bbb72 +drivers/i2c/busses/i2c-amd756 amd756_smbus 0xab77fd45 +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0x08e9ec96 +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0xb18f9080 +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/i2c/i2c-core i2c_adapter_class 0x6d2389b6 +drivers/i2c/i2c-core i2c_adapter_dev_release 0xf64b7715 +drivers/i2c/i2c-core i2c_adapter_driver 0xb54b1aa4 +drivers/i2c/i2c-core i2c_add_adapter 0x315e1740 +drivers/i2c/i2c-core i2c_add_driver 0x7d511628 +drivers/i2c/i2c-core i2c_attach_client 0xa77fe80a +drivers/i2c/i2c-core i2c_bus_type 0x782a10b9 +drivers/i2c/i2c-core i2c_check_addr 0xd13866ed +drivers/i2c/i2c-core i2c_clients_command 0xdcddb3b7 +drivers/i2c/i2c-core i2c_control 0x8e28bd47 +drivers/i2c/i2c-core i2c_del_adapter 0x2f41962a +drivers/i2c/i2c-core i2c_del_driver 0x0fa1ecba +drivers/i2c/i2c-core i2c_detach_client 0x1c183235 +drivers/i2c/i2c-core i2c_get_adapter 0xd6e29e69 +drivers/i2c/i2c-core i2c_master_recv 0x9070fe82 +drivers/i2c/i2c-core i2c_master_send 0x76e0ab9a +drivers/i2c/i2c-core i2c_probe 0x3dac2695 +drivers/i2c/i2c-core i2c_put_adapter 0xb2f6ef49 +drivers/i2c/i2c-core i2c_release_client 0xafbeb163 +drivers/i2c/i2c-core i2c_smbus_read_byte 0xd38d8a09 +drivers/i2c/i2c-core i2c_smbus_read_byte_data 0xb6635e43 +drivers/i2c/i2c-core i2c_smbus_read_i2c_block_data 0x40cc6d96 +drivers/i2c/i2c-core i2c_smbus_read_word_data 0xc66fc829 +drivers/i2c/i2c-core i2c_smbus_write_block_data 0x9ecd0f1a +drivers/i2c/i2c-core i2c_smbus_write_byte 0x6f4683ab +drivers/i2c/i2c-core i2c_smbus_write_byte_data 0xb1ba9e9d +drivers/i2c/i2c-core i2c_smbus_write_quick 0x5f40f72f +drivers/i2c/i2c-core i2c_smbus_write_word_data 0x281c59b2 +drivers/i2c/i2c-core i2c_smbus_xfer 0xa931aed8 +drivers/i2c/i2c-core i2c_transfer 0x37186f36 +drivers/i2c/i2c-core i2c_use_client 0x09dd80d8 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0x9a262204 +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x4358bad7 +drivers/ieee1394/ieee1394 csr1212_read 0x85bc1770 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x8efaa442 +drivers/ieee1394/ieee1394 dma_prog_region_free 0x184a96d5 +drivers/ieee1394/ieee1394 dma_prog_region_init 0x07fdd13e +drivers/ieee1394/ieee1394 dma_region_alloc 0xf6005858 +drivers/ieee1394/ieee1394 dma_region_free 0xc551a754 +drivers/ieee1394/ieee1394 dma_region_init 0x80e0941c +drivers/ieee1394/ieee1394 dma_region_mmap 0x8f17df19 +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0x9c929a3d +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0x9e1a3dd8 +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x894ad631 +drivers/ieee1394/ieee1394 highlevel_host_reset 0x45718fbe +drivers/ieee1394/ieee1394 hpsb_add_host 0x74cc2c4a +drivers/ieee1394/ieee1394 hpsb_alloc_host 0x71c49071 +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0xf88ad92b +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0x6c8f5d6c +drivers/ieee1394/ieee1394 hpsb_bus_reset 0xbd1a9151 +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0x23e18bb1 +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0x6a0c1c98 +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0x704c29e8 +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0x9c6c2217 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0x4a14c53d +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0xae014c92 +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0x391dfaba +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0x5f3513d1 +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0x0d515255 +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0xd77e8870 +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0x6a9599ee +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0x8971ad37 +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0xb7ace75e +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0xc8009d9a +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0x60d2848f +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0x6a0b0664 +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0x778d4d5d +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0x6c5cfdeb +drivers/ieee1394/ieee1394 hpsb_iso_stop 0x751d6e4a +drivers/ieee1394/ieee1394 hpsb_iso_wake 0xf6446607 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0xfea58225 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0x60c36361 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0x5ceda24b +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0x9a12a237 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0x8c80efb8 +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0xc43ea07c +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0x952ce7fe +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0x38134bbe +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0x2bf20b44 +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0x14214e13 +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0xb56c215f +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0xad3206dd +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0x2f49732e +drivers/ieee1394/ieee1394 hpsb_node_write 0x02dbc927 +drivers/ieee1394/ieee1394 hpsb_packet_received 0xff4710c2 +drivers/ieee1394/ieee1394 hpsb_packet_sent 0x46dabbab +drivers/ieee1394/ieee1394 hpsb_packet_success 0xac8368fd +drivers/ieee1394/ieee1394 hpsb_protocol_class 0xd54f8487 +drivers/ieee1394/ieee1394 hpsb_read 0x39e49d4e +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0x9c674156 +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0x789b1484 +drivers/ieee1394/ieee1394 hpsb_register_protocol 0xd4d9fe03 +drivers/ieee1394/ieee1394 hpsb_remove_host 0xffab6518 +drivers/ieee1394/ieee1394 hpsb_reset_bus 0x2eeddfb3 +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0x9bf49ac3 +drivers/ieee1394/ieee1394 hpsb_selfid_received 0xbc5ffc94 +drivers/ieee1394/ieee1394 hpsb_send_packet 0x47079340 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0xf9c4baca +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0x5271fc49 +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0x772a1b3c +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0xa3a25602 +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0x697be6c0 +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0x42e9cbf7 +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0x3100fd48 +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0x72d74409 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0x4d7566c2 +drivers/ieee1394/ieee1394 hpsb_write 0xfe69744e +drivers/ieee1394/ieee1394 ieee1394_bus_type 0x6b402266 +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0x1d5aeebc +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0xf517888c +drivers/ieee1394/ohci1394 ohci1394_stop_context 0xec9bd2fe +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0x5c6a1776 +drivers/infiniband/core/ib_cm ib_cm_establish 0x9adbe08b +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0x1e3781c8 +drivers/infiniband/core/ib_cm ib_cm_listen 0xe5a13088 +drivers/infiniband/core/ib_cm ib_create_cm_id 0xf2c75499 +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0x4754f80f +drivers/infiniband/core/ib_cm ib_send_cm_apr 0xbaaa1892 +drivers/infiniband/core/ib_cm ib_send_cm_drep 0xa1bfaa6b +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0xb6143c7f +drivers/infiniband/core/ib_cm ib_send_cm_lap 0x13938565 +drivers/infiniband/core/ib_cm ib_send_cm_mra 0xf0c0eac8 +drivers/infiniband/core/ib_cm ib_send_cm_rej 0x96896fb1 +drivers/infiniband/core/ib_cm ib_send_cm_rep 0xc89e2aed +drivers/infiniband/core/ib_cm ib_send_cm_req 0xb76cfe2d +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0x42f4285d +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0x89427caa +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0x94bf2985 +drivers/infiniband/core/ib_core ib_alloc_device 0x2ccc9487 +drivers/infiniband/core/ib_core ib_alloc_fmr 0xa69354e3 +drivers/infiniband/core/ib_core ib_alloc_mw 0x10db900a +drivers/infiniband/core/ib_core ib_alloc_pd 0x53bac9ca +drivers/infiniband/core/ib_core ib_attach_mcast 0x1168377e +drivers/infiniband/core/ib_core ib_create_ah 0xd92877fd +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0x862479d1 +drivers/infiniband/core/ib_core ib_create_cq 0xdb896432 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0x15f3d9f1 +drivers/infiniband/core/ib_core ib_create_qp 0xe3cd2e4d +drivers/infiniband/core/ib_core ib_create_srq 0x264497c7 +drivers/infiniband/core/ib_core ib_dealloc_device 0xb601f827 +drivers/infiniband/core/ib_core ib_dealloc_fmr 0x8843330b +drivers/infiniband/core/ib_core ib_dealloc_mw 0x0bf2da36 +drivers/infiniband/core/ib_core ib_dealloc_pd 0x8dc1ce1a +drivers/infiniband/core/ib_core ib_dereg_mr 0x02c96a53 +drivers/infiniband/core/ib_core ib_destroy_ah 0x75d0e901 +drivers/infiniband/core/ib_core ib_destroy_cq 0xf2c842fc +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x84cb8474 +drivers/infiniband/core/ib_core ib_destroy_qp 0xa05104c5 +drivers/infiniband/core/ib_core ib_destroy_srq 0x1b2f4da2 +drivers/infiniband/core/ib_core ib_detach_mcast 0xd65b8303 +drivers/infiniband/core/ib_core ib_dispatch_event 0xc614a030 +drivers/infiniband/core/ib_core ib_find_cached_gid 0x225ece90 +drivers/infiniband/core/ib_core ib_find_cached_pkey 0x06f87435 +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0x6ae5cdf4 +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0xd047afc7 +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0x50f14171 +drivers/infiniband/core/ib_core ib_get_cached_gid 0xf9955bd4 +drivers/infiniband/core/ib_core ib_get_cached_pkey 0x472108a1 +drivers/infiniband/core/ib_core ib_get_client_data 0x7ea52f71 +drivers/infiniband/core/ib_core ib_get_dma_mr 0x2ca59303 +drivers/infiniband/core/ib_core ib_modify_ah 0x36a62e64 +drivers/infiniband/core/ib_core ib_modify_device 0x52186d3d +drivers/infiniband/core/ib_core ib_modify_port 0xc78970e4 +drivers/infiniband/core/ib_core ib_modify_qp 0x70e870f7 +drivers/infiniband/core/ib_core ib_modify_srq 0xf315afab +drivers/infiniband/core/ib_core ib_pack 0x520b2638 +drivers/infiniband/core/ib_core ib_query_ah 0x089bd235 +drivers/infiniband/core/ib_core ib_query_device 0x6d6b3d46 +drivers/infiniband/core/ib_core ib_query_gid 0x329226dc +drivers/infiniband/core/ib_core ib_query_mr 0x7ac853bf +drivers/infiniband/core/ib_core ib_query_pkey 0x74fd1323 +drivers/infiniband/core/ib_core ib_query_port 0xed17b00a +drivers/infiniband/core/ib_core ib_query_qp 0xc94e6ef2 +drivers/infiniband/core/ib_core ib_query_srq 0x4f8df4ed +drivers/infiniband/core/ib_core ib_reg_phys_mr 0xd064ba7a +drivers/infiniband/core/ib_core ib_register_client 0xe5c00a59 +drivers/infiniband/core/ib_core ib_register_device 0xe118d571 +drivers/infiniband/core/ib_core ib_register_event_handler 0x2dbe9157 +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0xd2039171 +drivers/infiniband/core/ib_core ib_resize_cq 0x9d3e51c7 +drivers/infiniband/core/ib_core ib_set_client_data 0x03183b44 +drivers/infiniband/core/ib_core ib_ud_header_init 0x965c1dae +drivers/infiniband/core/ib_core ib_ud_header_pack 0x8d12f837 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0x11d42382 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xb1a312e1 +drivers/infiniband/core/ib_core ib_unregister_client 0xb3c8309f +drivers/infiniband/core/ib_core ib_unregister_device 0x78e9c94d +drivers/infiniband/core/ib_core ib_unregister_event_handler 0xcfc0ba41 +drivers/infiniband/core/ib_mad ib_cancel_mad 0xbc7eb523 +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x6a3bbc94 +drivers/infiniband/core/ib_mad ib_create_send_mad 0x03cc4637 +drivers/infiniband/core/ib_mad ib_free_recv_mad 0xd6f8244e +drivers/infiniband/core/ib_mad ib_free_send_mad 0xbeb5987d +drivers/infiniband/core/ib_mad ib_modify_mad 0x9c277f5c +drivers/infiniband/core/ib_mad ib_post_send_mad 0xcf635c19 +drivers/infiniband/core/ib_mad ib_process_mad_wc 0xd4b7541b +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x9b2ee8a9 +drivers/infiniband/core/ib_mad ib_register_mad_agent 0xc0f81e41 +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0xb17b61f6 +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0x6e62c4f2 +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0x3ccc814c +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0x43db0644 +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0xe900e416 +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0xf8771134 +drivers/input/gameport/gameport __gameport_register_driver 0x06edaa8a +drivers/input/gameport/gameport __gameport_register_port 0xf8bf68a0 +drivers/input/gameport/gameport gameport_close 0x9b825b44 +drivers/input/gameport/gameport gameport_cooked_read 0xb9d23dcc +drivers/input/gameport/gameport gameport_open 0x9eedb212 +drivers/input/gameport/gameport gameport_rescan 0x3e869ba5 +drivers/input/gameport/gameport gameport_set_name 0xf8b2d5a7 +drivers/input/gameport/gameport gameport_set_phys 0x7be15055 +drivers/input/gameport/gameport gameport_start_polling 0xf8d807b0 +drivers/input/gameport/gameport gameport_stop_polling 0xb9f23aef +drivers/input/gameport/gameport gameport_unregister_driver 0x852f0b6f +drivers/input/gameport/gameport gameport_unregister_port 0x4b90ac0f +drivers/isdn/capi/capifs capifs_free_ncci 0x2c54c957 +drivers/isdn/capi/capifs capifs_new_ncci 0xd0bc06ce +drivers/isdn/capi/kernelcapi attach_capi_ctr 0xb774ed45 +drivers/isdn/capi/kernelcapi capi20_get_manufacturer 0x7e6f1307 +drivers/isdn/capi/kernelcapi capi20_get_profile 0xe19a11ac +drivers/isdn/capi/kernelcapi capi20_get_serial 0x7a33596c +drivers/isdn/capi/kernelcapi capi20_get_version 0x14f2aa5a +drivers/isdn/capi/kernelcapi capi20_isinstalled 0x31c24aa4 +drivers/isdn/capi/kernelcapi capi20_manufacturer 0xed061606 +drivers/isdn/capi/kernelcapi capi20_put_message 0x68f1d595 +drivers/isdn/capi/kernelcapi capi20_register 0x3954b4b5 +drivers/isdn/capi/kernelcapi capi20_release 0xba7a2a62 +drivers/isdn/capi/kernelcapi capi20_set_callback 0x01cb6cb6 +drivers/isdn/capi/kernelcapi capi_cmd2str 0xb19fda8d +drivers/isdn/capi/kernelcapi capi_cmsg2message 0x50b33ca4 +drivers/isdn/capi/kernelcapi capi_cmsg2str 0xd45b5eb5 +drivers/isdn/capi/kernelcapi capi_cmsg_header 0xb60e5e5f +drivers/isdn/capi/kernelcapi capi_ctr_handle_message 0x3bd352a1 +drivers/isdn/capi/kernelcapi capi_ctr_ready 0x1fb86824 +drivers/isdn/capi/kernelcapi capi_ctr_reseted 0xd124e504 +drivers/isdn/capi/kernelcapi capi_ctr_resume_output 0x70d2abd1 +drivers/isdn/capi/kernelcapi capi_ctr_suspend_output 0xac5d7487 +drivers/isdn/capi/kernelcapi capi_info2str 0x47d3fc51 +drivers/isdn/capi/kernelcapi capi_message2cmsg 0x6057c6f3 +drivers/isdn/capi/kernelcapi capi_message2str 0xa7abc5e3 +drivers/isdn/capi/kernelcapi capilib_data_b3_conf 0x62e32d43 +drivers/isdn/capi/kernelcapi capilib_data_b3_req 0x71e8d5ba +drivers/isdn/capi/kernelcapi capilib_free_ncci 0x2b8eab1f +drivers/isdn/capi/kernelcapi capilib_new_ncci 0x2baa6586 +drivers/isdn/capi/kernelcapi capilib_release 0x8f699913 +drivers/isdn/capi/kernelcapi capilib_release_appl 0xaa165d27 +drivers/isdn/capi/kernelcapi detach_capi_ctr 0x953d0c15 +drivers/isdn/capi/kernelcapi register_capi_driver 0x9f823278 +drivers/isdn/capi/kernelcapi unregister_capi_driver 0x04403fcf +drivers/isdn/hardware/avm/b1 avmcard_dma_alloc 0x85d298d0 +drivers/isdn/hardware/avm/b1 avmcard_dma_free 0x7767b12f +drivers/isdn/hardware/avm/b1 b1_alloc_card 0x3aa01e3f +drivers/isdn/hardware/avm/b1 b1_detect 0xdfd28376 +drivers/isdn/hardware/avm/b1 b1_free_card 0xa17ae7ee +drivers/isdn/hardware/avm/b1 b1_getrevision 0x7c99fbfb +drivers/isdn/hardware/avm/b1 b1_interrupt 0x7c376ed0 +drivers/isdn/hardware/avm/b1 b1_irq_table 0x85f09690 +drivers/isdn/hardware/avm/b1 b1_load_config 0x4e54d1f7 +drivers/isdn/hardware/avm/b1 b1_load_firmware 0x0016e48f +drivers/isdn/hardware/avm/b1 b1_load_t4file 0x09862026 +drivers/isdn/hardware/avm/b1 b1_loaded 0xa5c383e2 +drivers/isdn/hardware/avm/b1 b1_parse_version 0xf00e8dbb +drivers/isdn/hardware/avm/b1 b1_register_appl 0xe538b1c6 +drivers/isdn/hardware/avm/b1 b1_release_appl 0x45eb29d5 +drivers/isdn/hardware/avm/b1 b1_reset_ctr 0x1bec496d +drivers/isdn/hardware/avm/b1 b1_send_message 0x7f4567e7 +drivers/isdn/hardware/avm/b1 b1ctl_read_proc 0x10fc1daf +drivers/isdn/hardware/avm/b1dma b1dma_interrupt 0xb7858191 +drivers/isdn/hardware/avm/b1dma b1dma_load_firmware 0x7d56fdb9 +drivers/isdn/hardware/avm/b1dma b1dma_register_appl 0x33a8e164 +drivers/isdn/hardware/avm/b1dma b1dma_release_appl 0x5a7d6f2f +drivers/isdn/hardware/avm/b1dma b1dma_reset 0xdaf47949 +drivers/isdn/hardware/avm/b1dma b1dma_reset_ctr 0x6ca3762e +drivers/isdn/hardware/avm/b1dma b1dma_send_message 0xc29327ec +drivers/isdn/hardware/avm/b1dma b1dmactl_read_proc 0xf1963657 +drivers/isdn/hardware/avm/b1dma b1pciv4_detect 0x888a0383 +drivers/isdn/hardware/avm/b1dma t1pci_detect 0xb3ad6f41 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_b1 0xf14bf8b1 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m1 0xaec3240e +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m2 0xea620116 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_delcard 0x29562993 +drivers/isdn/hardware/eicon/divadidd DIVA_DIDD_Read 0x2974ead1 +drivers/isdn/hardware/eicon/divadidd proc_net_eicon 0x562c976c +drivers/isdn/hisax/hisax FsmChangeState 0x93a64734 +drivers/isdn/hisax/hisax FsmDelTimer 0x799088e0 +drivers/isdn/hisax/hisax FsmEvent 0x9df0cd27 +drivers/isdn/hisax/hisax FsmFree 0x148f0c99 +drivers/isdn/hisax/hisax FsmInitTimer 0x52866abe +drivers/isdn/hisax/hisax FsmNew 0xf0a16657 +drivers/isdn/hisax/hisax FsmRestartTimer 0xde7e7906 +drivers/isdn/hisax/hisax HiSax_closecard 0xfc27303b +drivers/isdn/hisax/hisax hisax_init_pcmcia 0x343f4af9 +drivers/isdn/hisax/hisax hisax_register 0xee93522c +drivers/isdn/hisax/hisax hisax_unregister 0x07f4f2ce +drivers/isdn/hisax/hisax_isac isac_d_l2l1 0x3f3b323a +drivers/isdn/hisax/hisax_isac isac_init 0xf664554f +drivers/isdn/hisax/hisax_isac isac_irq 0x6dc18a4f +drivers/isdn/hisax/hisax_isac isac_setup 0x4997e451 +drivers/isdn/hisax/hisax_isac isacsx_irq 0xd5aa9ce3 +drivers/isdn/hisax/hisax_isac isacsx_setup 0xbff11a8e +drivers/isdn/hisax/isdnhdlc isdnhdlc_bit_rev_tab 0xe82c3e32 +drivers/isdn/hisax/isdnhdlc isdnhdlc_decode 0x1a1afeef +drivers/isdn/hisax/isdnhdlc isdnhdlc_encode 0x52a6537c +drivers/isdn/hisax/isdnhdlc isdnhdlc_out_init 0x277685da +drivers/isdn/hisax/isdnhdlc isdnhdlc_rcv_init 0x1dc6a9fc +drivers/isdn/i4l/isdn isdn_ppp_register_compressor 0x56360f21 +drivers/isdn/i4l/isdn isdn_ppp_unregister_compressor 0xcbb313a7 +drivers/isdn/i4l/isdn isdn_register_divert 0xb7757abb +drivers/isdn/i4l/isdn register_isdn 0xcc8b2461 +drivers/isdn/misdn/mISDN_core mISDN_AddIE 0x6137cb7e +drivers/isdn/misdn/mISDN_core mISDN_AddvarIE 0xdac259e7 +drivers/isdn/misdn/mISDN_core mISDN_ConnectIF 0x56213b39 +drivers/isdn/misdn/mISDN_core mISDN_DisConnectIF 0x99dd5de8 +drivers/isdn/misdn/mISDN_core mISDN_FsmAddTimer 0x7214e53f +drivers/isdn/misdn/mISDN_core mISDN_FsmChangeState 0x50c2230c +drivers/isdn/misdn/mISDN_core mISDN_FsmDelTimer 0x3010393f +drivers/isdn/misdn/mISDN_core mISDN_FsmEvent 0xd5145151 +drivers/isdn/misdn/mISDN_core mISDN_FsmFree 0x2348cc3c +drivers/isdn/misdn/mISDN_core mISDN_FsmInitTimer 0x172da300 +drivers/isdn/misdn/mISDN_core mISDN_FsmNew 0xf9e7832f +drivers/isdn/misdn/mISDN_core mISDN_FsmRestartTimer 0x50a5d950 +drivers/isdn/misdn/mISDN_core mISDN_HasProtocol 0xbf5fdf02 +drivers/isdn/misdn/mISDN_core mISDN_LogL3Msg 0xcbc064df +drivers/isdn/misdn/mISDN_core mISDN_QuickHex 0x91b96ea6 +drivers/isdn/misdn/mISDN_core mISDN_RemoveUsedPID 0xd956d2e8 +drivers/isdn/misdn/mISDN_core mISDN_SetHandledPID 0x9a23cfd8 +drivers/isdn/misdn/mISDN_core mISDN_SetIF 0x47d813de +drivers/isdn/misdn/mISDN_core mISDN_alloc_l3msg 0xc066b02a +drivers/isdn/misdn/mISDN_core mISDN_bprotocol2pid 0xed673eae +drivers/isdn/misdn/mISDN_core mISDN_debug 0xff10c7d9 +drivers/isdn/misdn/mISDN_core mISDN_debugprint 0x6b95d29b +drivers/isdn/misdn/mISDN_core mISDN_free_bch 0x1cc8a8ad +drivers/isdn/misdn/mISDN_core mISDN_free_dch 0x59a945fb +drivers/isdn/misdn/mISDN_core mISDN_get_down_layer 0xd1c0ae73 +drivers/isdn/misdn/mISDN_core mISDN_get_lowlayer 0x9f6faa8f +drivers/isdn/misdn/mISDN_core mISDN_get_protocol 0xc4236e0c +drivers/isdn/misdn/mISDN_core mISDN_get_up_layer 0xc6091c92 +drivers/isdn/misdn/mISDN_core mISDN_getrev 0x91f1a1b8 +drivers/isdn/misdn/mISDN_core mISDN_initQ931_info 0x45d57ad5 +drivers/isdn/misdn/mISDN_core mISDN_init_bch 0xd4fb5a0b +drivers/isdn/misdn/mISDN_core mISDN_init_dch 0xcd2a423f +drivers/isdn/misdn/mISDN_core mISDN_init_instance 0x75df2e30 +drivers/isdn/misdn/mISDN_core mISDN_l3_ie2pos 0x6a35c630 +drivers/isdn/misdn/mISDN_core mISDN_l3_pos2ie 0x31559777 +drivers/isdn/misdn/mISDN_core mISDN_layermask2layer 0x48cbe644 +drivers/isdn/misdn/mISDN_core mISDN_register 0x0f289aec +drivers/isdn/misdn/mISDN_core mISDN_set_dchannel_pid 0xca03ed9e +drivers/isdn/misdn/mISDN_core mISDN_unregister 0xac935955 +drivers/isdn/misdn/mISDN_core vmISDN_debug 0x85718442 +drivers/isdn/misdn/mISDN_isac mISDN_ISAC_l1hw 0xa7570798 +drivers/isdn/misdn/mISDN_isac mISDN_clear_isac 0x8cef0d21 +drivers/isdn/misdn/mISDN_isac mISDN_isac_free 0x86f46085 +drivers/isdn/misdn/mISDN_isac mISDN_isac_init 0x665fe938 +drivers/isdn/misdn/mISDN_isac mISDN_isac_interrupt 0x6b595a85 +drivers/md/dm-mirror dm_create_dirty_log 0x0bf6b8ff +drivers/md/dm-mirror dm_destroy_dirty_log 0xdacde322 +drivers/md/dm-mirror dm_register_dirty_log_type 0x239fc266 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x9387e53c +drivers/md/dm-mod dm_get_device 0x2c3ad9e3 +drivers/md/dm-mod dm_get_mapinfo 0xe686bd27 +drivers/md/dm-mod dm_io_async 0x613a4191 +drivers/md/dm-mod dm_io_async_bvec 0xb2bb346a +drivers/md/dm-mod dm_io_async_vm 0xa096ee91 +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0x6b890d8f +drivers/md/dm-mod dm_io_sync_bvec 0x0869d4b9 +drivers/md/dm-mod dm_io_sync_vm 0x821f9fcf +drivers/md/dm-mod dm_put_device 0x811f3c03 +drivers/md/dm-mod dm_register_target 0x261b914f +drivers/md/dm-mod dm_table_event 0x19650ff2 +drivers/md/dm-mod dm_table_flush_all 0x5e5480c6 +drivers/md/dm-mod dm_table_get 0xa15381a5 +drivers/md/dm-mod dm_table_get_mode 0x556ccc6c +drivers/md/dm-mod dm_table_get_size 0x2715f4df +drivers/md/dm-mod dm_table_put 0x661701d1 +drivers/md/dm-mod dm_table_unplug_all 0xec69a3e6 +drivers/md/dm-mod dm_unregister_target 0x569ab0c8 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x0c49fd14 +drivers/md/dm-mod kcopyd_client_create 0x14cf2ed9 +drivers/md/dm-mod kcopyd_client_destroy 0xbe6db462 +drivers/md/dm-mod kcopyd_copy 0xaec56e37 +drivers/md/dm-multipath dm_pg_init_complete 0x274af439 +drivers/md/dm-multipath dm_register_hw_handler 0xf4e20584 +drivers/md/dm-multipath dm_register_path_selector 0x80157612 +drivers/md/dm-multipath dm_scsi_err_handler 0x01a42495 +drivers/md/dm-multipath dm_unregister_hw_handler 0x116965e7 +drivers/md/dm-multipath dm_unregister_path_selector 0x7c0b09bf +drivers/md/md-mod bitmap_close_sync 0xfea98122 +drivers/md/md-mod bitmap_daemon_work 0xca62ac84 +drivers/md/md-mod bitmap_end_sync 0x3757e3e1 +drivers/md/md-mod bitmap_endwrite 0xf18fd749 +drivers/md/md-mod bitmap_start_sync 0x6252cd88 +drivers/md/md-mod bitmap_startwrite 0x61544d3f +drivers/md/md-mod bitmap_unplug 0x05622e45 +drivers/md/md-mod md_check_recovery 0x8f97134c +drivers/md/md-mod md_done_sync 0xcae354b6 +drivers/md/md-mod md_error 0xd4d60023 +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x9499055f +drivers/md/md-mod md_unregister_thread 0x1df254ab +drivers/md/md-mod md_wakeup_thread 0x003f97af +drivers/md/md-mod md_write_end 0x8c761487 +drivers/md/md-mod md_write_start 0x89266a4d +drivers/md/md-mod register_md_personality 0x94e3c54d +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x4740e7a3 +drivers/media/common/ir-common ir_codes_hauppauge_new 0x902a3cd2 +drivers/media/common/ir-common ir_codes_pinnacle 0xd3a0f048 +drivers/media/common/ir-common ir_codes_pixelview 0xfa177653 +drivers/media/common/ir-common ir_codes_rc5_tv 0xd9c7f010 +drivers/media/common/ir-common ir_codes_winfast 0x89cc1189 +drivers/media/common/ir-common ir_decode_biphase 0x43c89ef4 +drivers/media/common/ir-common ir_decode_pulsedistance 0x2456e513 +drivers/media/common/ir-common ir_dump_samples 0x6d6511e7 +drivers/media/common/ir-common ir_extract_bits 0x1cb148f5 +drivers/media/common/ir-common ir_input_init 0xba319e83 +drivers/media/common/ir-common ir_input_keydown 0x010b53b0 +drivers/media/common/ir-common ir_input_nokey 0xb411d277 +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x6d606781 +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0xeef70a52 +drivers/media/common/saa7146 saa7146_i2c_transfer 0xc4d45350 +drivers/media/common/saa7146 saa7146_pgtable_alloc 0xb4074fe4 +drivers/media/common/saa7146 saa7146_pgtable_build_single 0x38a25fcd +drivers/media/common/saa7146 saa7146_pgtable_free 0x24ab7670 +drivers/media/common/saa7146 saa7146_register_extension 0xe9f316fe +drivers/media/common/saa7146 saa7146_setgpio 0x9bc4c9a2 +drivers/media/common/saa7146 saa7146_unregister_extension 0x995f4b95 +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0xdea15e43 +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0x6a4a1393 +drivers/media/common/saa7146_vv saa7146_register_device 0x51923e6b +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0xe41c0214 +drivers/media/common/saa7146_vv saa7146_start_preview 0x79829dbf +drivers/media/common/saa7146_vv saa7146_stop_preview 0xae67e99a +drivers/media/common/saa7146_vv saa7146_unregister_device 0xcf3abbf1 +drivers/media/common/saa7146_vv saa7146_vv_init 0xddf7d74d +drivers/media/common/saa7146_vv saa7146_vv_release 0x6f232fa3 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0xdc713ad0 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0xc7519420 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0x0245bb5a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0x5ff21485 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0xf0b8e90f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0x2038c602 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0x79b148b5 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0xf193f98a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0xe42e6666 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0x3e7178bb +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0xde192c1b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0x28bf4ca9 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0xf944a15e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0xcd43a2d8 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0x296b5fff +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0xbda28926 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0x54f07287 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0xcedd2a50 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0x88c4bc29 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0x1af2865b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0x43541b0a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0x45397fe4 +drivers/media/dvb/bt8xx/bt878 bt878 0x424c46f5 +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0xa63306a8 +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0xde89976a +drivers/media/dvb/bt8xx/bt878 bt878_stop 0xb29f09e1 +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0xd456d0a0 +drivers/media/dvb/bt8xx/dst dst_check_sum 0xe94b8c9c +drivers/media/dvb/bt8xx/dst dst_comm_init 0xb85e1a15 +drivers/media/dvb/bt8xx/dst dst_command 0x7bfe4642 +drivers/media/dvb/bt8xx/dst dst_error_bailout 0xb90a528e +drivers/media/dvb/bt8xx/dst dst_error_recovery 0x14928bb1 +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0x1292c2c6 +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0x7689293b +drivers/media/dvb/bt8xx/dst dst_pio_disable 0xef50741d +drivers/media/dvb/bt8xx/dst dst_pio_enable 0x8c72569a +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0x00852303 +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0x6fc00af4 +drivers/media/dvb/bt8xx/dst rdc_reset_state 0xd044b06f +drivers/media/dvb/bt8xx/dst read_dst 0x9a58fa91 +drivers/media/dvb/bt8xx/dst write_dst 0x96924af7 +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0xfaa05b8b +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0xf64cdc07 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0xf4fe7a2f +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0x521415da +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0xda0c5016 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0xa1e84c9c +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0x1e194209 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0xee1a44d4 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0xb83b7364 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0x8ff58b66 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x4260c417 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0x363aec2d +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0xbb184142 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x80e3832d +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x36c8ea1f +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0x0c5de66e +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0xdbd98810 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0x75ea674f +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0x25931a88 +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0xcec38f96 +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0x13ad9606 +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0xbc47c59f +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0x29279ba0 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0xfe8c4bdb +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0x5da3ccb5 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0x84ae661e +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0x988a2906 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x490e87d6 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0x00eda5a0 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0x420f157b +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0xefb44973 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0x2a1c7033 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0xd39d3873 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0x96a240fc +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0x52c878f1 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0x1dda3be4 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0xf42681a1 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0x3e4a3b64 +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0x8b49a23f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0xfce809ed +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0xfb9f4167 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0x45044a6b +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0xacca0018 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0xbaaf6aec +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0x1a48752f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0x58321995 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0x13fd3e5b +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0x1116258a +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0x86af3a56 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0xa73e8ec6 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0x74c5e5b8 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0x447de766 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0xb32f1b24 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0x51cf25f3 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0x4a4af329 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0xd4d3dddc +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0x8d28281f +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0xc1c24af7 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0xbac25f1b +drivers/media/dvb/frontends/at76c651 at76c651_attach 0x8ecdb005 +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0x414b0693 +drivers/media/dvb/frontends/cx22700 cx22700_attach 0x87e32abb +drivers/media/dvb/frontends/cx22702 cx22702_attach 0xcac1ba03 +drivers/media/dvb/frontends/cx24110 cx24110_attach 0x655bfb0a +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0x073f651b +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0xd1c59f63 +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0xe762d459 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x05f13eee +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0xba42a679 +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0xa4c7ed23 +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0xda682e43 +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x02689b7f +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0x5b259391 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x7a0ed9bb +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0xbf98157e +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xd15aca20 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xfdd5e650 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x2a4f5718 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xc95be182 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x708f579e +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0xe39c77c8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0x12284643 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0xf1d4150d +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0xd5d22e56 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0xccc91f17 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xaddc7276 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x96cce305 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xcbbd68de +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x13856c44 +drivers/media/dvb/frontends/l64781 l64781_attach 0x0fbc1061 +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0x17d05099 +drivers/media/dvb/frontends/mt312 mt312_attach 0xd2015877 +drivers/media/dvb/frontends/mt312 vp310_attach 0x11e8901b +drivers/media/dvb/frontends/mt352 mt352_attach 0x4cd6e541 +drivers/media/dvb/frontends/mt352 mt352_write 0x715bdbb2 +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0x6ec635f5 +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x96752980 +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0x7ff2d05b +drivers/media/dvb/frontends/or51132 or51132_attach 0xa76e1ba4 +drivers/media/dvb/frontends/or51211 or51211_attach 0xe45582c2 +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0xed6642af +drivers/media/dvb/frontends/sp8870 sp8870_attach 0x9206c349 +drivers/media/dvb/frontends/sp887x sp887x_attach 0x35ee825f +drivers/media/dvb/frontends/stv0297 stv0297_attach 0x3f7d2ef0 +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0x27b11b4c +drivers/media/dvb/frontends/stv0299 stv0299_attach 0x74594d1d +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0xc3cad8cb +drivers/media/dvb/frontends/tda10021 tda10021_attach 0x25deb178 +drivers/media/dvb/frontends/tda1004x tda10045_attach 0x7a5b198f +drivers/media/dvb/frontends/tda1004x tda10046_attach 0x3ca9a90b +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0xc7c9156c +drivers/media/dvb/frontends/tda8083 tda8083_attach 0x70399092 +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0x5f8e7940 +drivers/media/dvb/frontends/ves1820 ves1820_attach 0x032049fe +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0xbbf0563d +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0xc43f673c +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0xad79ddac +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0x7f742def +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0x3fa45f0e +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0x7020b65f +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0x80aa0324 +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0x4dc07ae3 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0xe012563e +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0xcbd557f4 +drivers/media/radio/miropcm20 aci_rds_cmd 0xde4156ce +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0x367b643a +drivers/media/video/btcx-risc btcx_riscmem_free 0x287f2785 +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x357a7ad5 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0xb4f162af +drivers/media/video/bttv bttv_gpio_bits 0x5854b83f +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0x2a8ae140 +drivers/media/video/bttv bttv_gpio_read 0x1248ea18 +drivers/media/video/bttv bttv_gpio_write 0xe668253c +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0xe628722a +drivers/media/video/bttv bttv_sub_register 0x2a835a6e +drivers/media/video/bttv bttv_sub_unregister 0x7f998110 +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0xde081ea8 +drivers/media/video/cpia cpia_unregister_camera 0x63b8101a +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0x4594f977 +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0x0086d36b +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0x0e8c3c03 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0xdf8549d4 +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0xafa40701 +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0x7e73b072 +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0x6ffcb41d +drivers/media/video/cx88/cx8802 cx8802_fini_common 0xbfa1afce +drivers/media/video/cx88/cx8802 cx8802_init_common 0xdf989e7f +drivers/media/video/cx88/cx8802 cx8802_resume_common 0x662bb395 +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0xfc3aeb2e +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x4e6954bf +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0xbe45d011 +drivers/media/video/cx88/cx88xx cx88_card_list 0x07d5b933 +drivers/media/video/cx88/cx88xx cx88_card_setup 0x42027ba1 +drivers/media/video/cx88/cx88xx cx88_core_get 0xfdcd3aba +drivers/media/video/cx88/cx88xx cx88_core_irq 0x5013d943 +drivers/media/video/cx88/cx88xx cx88_core_put 0x5b7bd81a +drivers/media/video/cx88/cx88xx cx88_free_buffer 0x361b67bb +drivers/media/video/cx88/cx88xx cx88_get_stereo 0x8abc3191 +drivers/media/video/cx88/cx88xx cx88_i2c_init 0x220989dd +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0x5249083b +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x777b6d7f +drivers/media/video/cx88/cx88xx cx88_reset 0x33e69717 +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0x2792d58a +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0x7fd6135b +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0xc69ac79e +drivers/media/video/cx88/cx88xx cx88_set_scale 0x496b8d2d +drivers/media/video/cx88/cx88xx cx88_set_stereo 0x93fe34fb +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0x290cbae1 +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0xf82cb99a +drivers/media/video/cx88/cx88xx cx88_shutdown 0xc2e4b97b +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0x1e935e8a +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0xef5a634f +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x9b140fff +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0x3ac32b50 +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0xef109de4 +drivers/media/video/cx88/cx88xx cx88_subids 0x6b626846 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0xb9963822 +drivers/media/video/cx88/cx88xx cx88_wakeup 0xf577b6d1 +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0x4bc95507 +drivers/media/video/saa7134/saa7134 dmasound_exit 0x60ec5d25 +drivers/media/video/saa7134/saa7134 dmasound_init 0x9d76893c +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0xd078872c +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0x3f89bc1a +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0xb0b2cea8 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0x322369a3 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0x3c5068ec +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0x83899c2f +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0x78a8c539 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0x9df5faef +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0x28fad95c +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0x47a64d4f +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0xb286acb1 +drivers/media/video/tveeprom tveeprom_read 0xae760410 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0xf018d1bb +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x9c7de443 +drivers/media/video/v4l2-common v4l2_prio_check 0x2f639468 +drivers/media/video/v4l2-common v4l2_prio_close 0x95284709 +drivers/media/video/v4l2-common v4l2_prio_init 0xbecd2858 +drivers/media/video/v4l2-common v4l2_prio_max 0x1dcaa0c8 +drivers/media/video/v4l2-common v4l2_prio_open 0x76ba9a9a +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0x33b3b664 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0x38661be1 +drivers/media/video/video-buf videobuf_dma_init 0xdd50100a +drivers/media/video/video-buf videobuf_dma_init_kernel 0xbc3b9aee +drivers/media/video/video-buf videobuf_dma_init_overlay 0xc3eb99a8 +drivers/media/video/video-buf videobuf_dma_init_user 0xca9987c2 +drivers/media/video/video-buf videobuf_dma_pci_map 0xbd789f2d +drivers/media/video/video-buf videobuf_dma_pci_sync 0x10843920 +drivers/media/video/video-buf videobuf_dma_pci_unmap 0x21e6b0db +drivers/media/video/video-buf videobuf_dqbuf 0x2d35aa91 +drivers/media/video/video-buf videobuf_iolock 0x82d7e165 +drivers/media/video/video-buf videobuf_mmap_free 0x9b90e637 +drivers/media/video/video-buf videobuf_mmap_mapper 0x16643e7f +drivers/media/video/video-buf videobuf_mmap_setup 0xf65ed68f +drivers/media/video/video-buf videobuf_next_field 0xeb4e5f22 +drivers/media/video/video-buf videobuf_poll_stream 0x33964388 +drivers/media/video/video-buf videobuf_qbuf 0xec037e1f +drivers/media/video/video-buf videobuf_querybuf 0xc2170a1a +drivers/media/video/video-buf videobuf_queue_cancel 0x5c35c099 +drivers/media/video/video-buf videobuf_queue_init 0x610ac0ae +drivers/media/video/video-buf videobuf_queue_is_busy 0x1d945e06 +drivers/media/video/video-buf videobuf_read_one 0x9eeffe2a +drivers/media/video/video-buf videobuf_read_start 0xfdb6235b +drivers/media/video/video-buf videobuf_read_stop 0x533ef883 +drivers/media/video/video-buf videobuf_read_stream 0x50342c21 +drivers/media/video/video-buf videobuf_reqbufs 0x8405143c +drivers/media/video/video-buf videobuf_status 0x6082d2d6 +drivers/media/video/video-buf videobuf_streamoff 0xe3950363 +drivers/media/video/video-buf videobuf_streamon 0x9df5b492 +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0xa61ed375 +drivers/media/video/video-buf videobuf_waiton 0x729ea1b1 +drivers/media/video/video-buf-dvb videobuf_dvb_register 0xd625b068 +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0x956f4b36 +drivers/media/video/videocodec videocodec_attach 0xd68cb9c3 +drivers/media/video/videocodec videocodec_detach 0x92c4028c +drivers/media/video/videocodec videocodec_register 0xfef06b46 +drivers/media/video/videocodec videocodec_unregister 0x0d4b8cd6 +drivers/media/video/videodev video_devdata 0xff0f25be +drivers/media/video/videodev video_device_alloc 0x33cfe9d7 +drivers/media/video/videodev video_device_release 0x540be87b +drivers/media/video/videodev video_exclusive_open 0x8e8a7e96 +drivers/media/video/videodev video_exclusive_release 0x2e21a452 +drivers/media/video/videodev video_register_device 0xe485b3a8 +drivers/media/video/videodev video_unregister_device 0xab958e6e +drivers/media/video/videodev video_usercopy 0x963e61ae +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0x85bf0d78 +drivers/message/fusion/mptbase mpt_HardResetHandler 0x34a6750a +drivers/message/fusion/mptbase mpt_add_sge 0x375d8126 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0xb30c7990 +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0x021dc9c5 +drivers/message/fusion/mptbase mpt_attach 0xc941b393 +drivers/message/fusion/mptbase mpt_config 0xfee93fb6 +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0x995283ef +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0x0a85e950 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x584b346e +drivers/message/fusion/mptbase mpt_findImVolumes 0xb58130b2 +drivers/message/fusion/mptbase mpt_free_fw_memory 0x906eaef9 +drivers/message/fusion/mptbase mpt_free_msg_frame 0x36a99174 +drivers/message/fusion/mptbase mpt_get_msg_frame 0x9a109b70 +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0x2a8aee01 +drivers/message/fusion/mptbase mpt_proc_root_dir 0x72fc3a4c +drivers/message/fusion/mptbase mpt_put_msg_frame 0x4b0fb233 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x6ac3abbd +drivers/message/fusion/mptbase mpt_register 0x1bd08591 +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x601038bc +drivers/message/fusion/mptbase mpt_resume 0x3d66231a +drivers/message/fusion/mptbase mpt_send_handshake_request 0x08cb3be1 +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0xb56ac66a +drivers/message/fusion/mptbase mpt_toolbox 0xb95db69a +drivers/message/fusion/mptbase mpt_verify_adapter 0x8cd6c157 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x8c65d4de +drivers/message/fusion/mptscsih mptscsih_abort 0x898a46ee +drivers/message/fusion/mptscsih mptscsih_bios_param 0x27329391 +drivers/message/fusion/mptscsih mptscsih_bus_reset 0xf4c2730a +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0xf46b776f +drivers/message/fusion/mptscsih mptscsih_dev_reset 0x6dd27683 +drivers/message/fusion/mptscsih mptscsih_event_process 0xb05e78e2 +drivers/message/fusion/mptscsih mptscsih_host_reset 0x96973f87 +drivers/message/fusion/mptscsih mptscsih_info 0x7bf194cc +drivers/message/fusion/mptscsih mptscsih_io_done 0x8d15611d +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x19d8a484 +drivers/message/fusion/mptscsih mptscsih_proc_info 0x665e5d0c +drivers/message/fusion/mptscsih mptscsih_qcmd 0x993dfb2d +drivers/message/fusion/mptscsih mptscsih_remove 0x6874ab9a +drivers/message/fusion/mptscsih mptscsih_resume 0x60d6126c +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0xc086b2c4 +drivers/message/fusion/mptscsih mptscsih_shutdown 0xec455327 +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0x58d200d0 +drivers/message/fusion/mptscsih mptscsih_slave_configure 0xf28f896e +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x6c8b7b5b +drivers/message/fusion/mptscsih mptscsih_suspend 0x2ac29af7 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x4e62457f +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0xec4c1bb6 +drivers/message/i2o/i2o_core i2o_device_claim_release 0xdaba579e +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0x49fc5d56 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x58301e76 +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x1eef4643 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0xc65d973b +drivers/message/i2o/i2o_core i2o_driver_register 0xddd5bff9 +drivers/message/i2o/i2o_core i2o_driver_unregister 0x0b974a7f +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0xd4870434 +drivers/message/i2o/i2o_core i2o_exec_lct_get 0x43551e2a +drivers/message/i2o/i2o_core i2o_find_iop 0x0ae20f80 +drivers/message/i2o/i2o_core i2o_iop_find_device 0x047376e2 +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x93be3961 +drivers/message/i2o/i2o_core i2o_msg_nop 0x91f3d2ab +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0xc80d224d +drivers/message/i2o/i2o_core i2o_parm_field_get 0x42d716b4 +drivers/message/i2o/i2o_core i2o_parm_issue 0xe92717e3 +drivers/message/i2o/i2o_core i2o_parm_table_get 0x613016ec +drivers/message/i2o/i2o_core i2o_status_get 0xea137020 +drivers/mmc/mmc_core __mmc_claim_host 0x0d002b12 +drivers/mmc/mmc_core mmc_add_host 0x8fe0bbdc +drivers/mmc/mmc_core mmc_alloc_host 0x71d4bd28 +drivers/mmc/mmc_core mmc_cleanup_queue 0xdc506cf6 +drivers/mmc/mmc_core mmc_detect_change 0xea489804 +drivers/mmc/mmc_core mmc_free_host 0xcb49846e +drivers/mmc/mmc_core mmc_init_queue 0xaeee95b4 +drivers/mmc/mmc_core mmc_queue_resume 0x1c7265c7 +drivers/mmc/mmc_core mmc_queue_suspend 0x51a7d696 +drivers/mmc/mmc_core mmc_register_driver 0xfd479cc0 +drivers/mmc/mmc_core mmc_release_host 0x61decdc6 +drivers/mmc/mmc_core mmc_remove_host 0x483fbb30 +drivers/mmc/mmc_core mmc_request_done 0x3389fcf3 +drivers/mmc/mmc_core mmc_resume_host 0xa0195e85 +drivers/mmc/mmc_core mmc_start_request 0x7427ef2e +drivers/mmc/mmc_core mmc_suspend_host 0x2ce21de3 +drivers/mmc/mmc_core mmc_unregister_driver 0x15d54a81 +drivers/mmc/mmc_core mmc_wait_for_app_cmd 0xd467dc6d +drivers/mmc/mmc_core mmc_wait_for_cmd 0x83fed58e +drivers/mmc/mmc_core mmc_wait_for_req 0x8f3468dd +drivers/mtd/chips/cfi_util cfi_fixup 0xd1049690 +drivers/mtd/chips/cfi_util cfi_read_pri 0x44b07979 +drivers/mtd/chips/cfi_util cfi_varsize_frob 0x02d1d31f +drivers/mtd/chips/chipreg do_map_probe 0x54e2a98a +drivers/mtd/chips/chipreg map_destroy 0xaebceb74 +drivers/mtd/chips/chipreg register_mtd_chip_driver 0x1c9a1abc +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0x4ee1a4cf +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0x388a2536 +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0xcafba883 +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0x2a8c6a27 +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0xd5f0923d +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0x3a1bd40f +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0x6e301fd0 +drivers/mtd/mtdconcat mtd_concat_create 0xc6ad2216 +drivers/mtd/mtdconcat mtd_concat_destroy 0xa44c9db8 +drivers/mtd/mtdcore add_mtd_device 0x7c06fdc4 +drivers/mtd/mtdcore default_mtd_readv 0xf9869b54 +drivers/mtd/mtdcore default_mtd_writev 0x64032df7 +drivers/mtd/mtdcore del_mtd_device 0x028fd106 +drivers/mtd/mtdcore get_mtd_device 0x57df1cbd +drivers/mtd/mtdcore mtd_table 0x5aa8ce00 +drivers/mtd/mtdcore mtd_table_mutex 0x5037f644 +drivers/mtd/mtdcore put_mtd_device 0xa7f7aa3d +drivers/mtd/mtdcore register_mtd_user 0x77b88624 +drivers/mtd/mtdcore unregister_mtd_user 0x11cd66a6 +drivers/mtd/mtdpart add_mtd_partitions 0x2c3f2ef2 +drivers/mtd/mtdpart del_mtd_partitions 0x4ff6bffa +drivers/mtd/mtdpart deregister_mtd_parser 0x8d4e9fb0 +drivers/mtd/mtdpart mtd_erase_callback 0x905d2808 +drivers/mtd/mtdpart parse_mtd_partitions 0x5cb16845 +drivers/mtd/mtdpart register_mtd_parser 0x1d6de818 +drivers/mtd/nand/nand nand_default_bbt 0xf011d946 +drivers/mtd/nand/nand nand_release 0x531b945d +drivers/mtd/nand/nand nand_scan 0x8b2e5c9d +drivers/mtd/nand/nand nand_scan_bbt 0x6b94e1ad +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0x51c07751 +drivers/mtd/onenand/onenand onenand_release 0x1078f8c2 +drivers/mtd/onenand/onenand onenand_scan 0x8b13353c +drivers/mtd/onenand/onenand onenand_scan_bbt 0xc39bd98e +drivers/net/8390 NS8390_init 0x44fe5f6d +drivers/net/8390 __alloc_ei_netdev 0x4bcda334 +drivers/net/8390 ei_close 0x35b5e167 +drivers/net/8390 ei_interrupt 0x7862f4df +drivers/net/8390 ei_open 0x88ed995a +drivers/net/8390 ei_poll 0x53508316 +drivers/net/arcnet/arcnet alloc_arcdev 0xe4ad98d4 +drivers/net/arcnet/arcnet arc_bcast_proto 0x5bdfb5b7 +drivers/net/arcnet/arcnet arc_proto_default 0x43c1868e +drivers/net/arcnet/arcnet arc_proto_map 0xfd475c5d +drivers/net/arcnet/arcnet arc_proto_null 0xe19a55f7 +drivers/net/arcnet/arcnet arc_raw_proto 0xdc983e5e +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0x83db44fe +drivers/net/arcnet/arcnet arcnet_unregister_proto 0xe80fc94f +drivers/net/arcnet/com20020 com20020_check 0x440dc28d +drivers/net/arcnet/com20020 com20020_found 0x3aa2f05c +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0x386f5af4 +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0x1e78236e +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0x0df0d7a5 +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0x0075a871 +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0x5f3b476c +drivers/net/irda/sir-dev irda_register_dongle 0x8ef376a4 +drivers/net/irda/sir-dev irda_unregister_dongle 0x295e2cd2 +drivers/net/irda/sir-dev sirdev_get_instance 0x424339cc +drivers/net/irda/sir-dev sirdev_put_instance 0x5986e80d +drivers/net/irda/sir-dev sirdev_raw_read 0x54fc5b0e +drivers/net/irda/sir-dev sirdev_raw_write 0xb5383111 +drivers/net/irda/sir-dev sirdev_receive 0xdc0f325e +drivers/net/irda/sir-dev sirdev_set_dongle 0xd4c52175 +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0xb4480191 +drivers/net/irda/sir-dev sirdev_write_complete 0x0ee22778 +drivers/net/mii generic_mii_ioctl 0x61aeabc4 +drivers/net/mii mii_check_gmii_support 0x45106a6f +drivers/net/mii mii_check_link 0xdbd45e3b +drivers/net/mii mii_check_media 0x6ae038bf +drivers/net/mii mii_ethtool_gset 0x7cb159ac +drivers/net/mii mii_ethtool_sset 0x0d023ef3 +drivers/net/mii mii_link_ok 0x1690ffdb +drivers/net/mii mii_nway_restart 0x37a19daa +drivers/net/phy/libphy genphy_config_advert 0x0ed1547e +drivers/net/phy/libphy genphy_config_aneg 0x85653c1c +drivers/net/phy/libphy genphy_read_status 0x06f28448 +drivers/net/phy/libphy mdiobus_register 0x3fb1e89c +drivers/net/phy/libphy mdiobus_unregister 0x7853270c +drivers/net/phy/libphy phy_attach 0xcaf63f22 +drivers/net/phy/libphy phy_connect 0xe5ee4455 +drivers/net/phy/libphy phy_detach 0xaf746408 +drivers/net/phy/libphy phy_disable_interrupts 0x41a7fdbc +drivers/net/phy/libphy phy_disconnect 0x508554e6 +drivers/net/phy/libphy phy_driver_register 0x1c9bbe35 +drivers/net/phy/libphy phy_driver_unregister 0x0dc6fa5b +drivers/net/phy/libphy phy_enable_interrupts 0xf69f3ecb +drivers/net/phy/libphy phy_print_status 0xacc0ae29 +drivers/net/phy/libphy phy_read 0xc7113fa1 +drivers/net/phy/libphy phy_sanitize_settings 0x32c962dd +drivers/net/phy/libphy phy_start 0x712d60f7 +drivers/net/phy/libphy phy_start_aneg 0x1be07f92 +drivers/net/phy/libphy phy_start_interrupts 0x9e90e088 +drivers/net/phy/libphy phy_stop 0xed8a5adc +drivers/net/phy/libphy phy_stop_interrupts 0x099cf635 +drivers/net/phy/libphy phy_write 0x864a1065 +drivers/net/ppp_generic ppp_channel_index 0x2a343945 +drivers/net/ppp_generic ppp_input 0xa2e37bd5 +drivers/net/ppp_generic ppp_input_error 0x87dd72b9 +drivers/net/ppp_generic ppp_output_wakeup 0x46233a1a +drivers/net/ppp_generic ppp_register_channel 0x1a462ab6 +drivers/net/ppp_generic ppp_register_compressor 0xbe4a0a01 +drivers/net/ppp_generic ppp_unit_number 0x2745e605 +drivers/net/ppp_generic ppp_unregister_channel 0x676bc579 +drivers/net/ppp_generic ppp_unregister_compressor 0x014cd809 +drivers/net/pppox pppox_unbind_sock 0x94e2a34e +drivers/net/pppox register_pppox_proto 0xe2acf304 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x76135e6c +drivers/net/slhc slhc_free 0x2894cfb0 +drivers/net/slhc slhc_init 0x2e0e927f +drivers/net/slhc slhc_remember 0x0bc55868 +drivers/net/slhc slhc_toss 0xf89e3455 +drivers/net/slhc slhc_uncompress 0x3bc1319e +drivers/net/sungem_phy mii_phy_probe 0xd3de2015 +drivers/net/tokenring/tms380tr tms380tr_close 0xa2eff5b9 +drivers/net/tokenring/tms380tr tms380tr_interrupt 0x3c7db227 +drivers/net/tokenring/tms380tr tms380tr_open 0x0020cf51 +drivers/net/tokenring/tms380tr tms380tr_wait 0xd2328794 +drivers/net/tokenring/tms380tr tmsdev_init 0x83f8e8b7 +drivers/net/tokenring/tms380tr tmsdev_term 0x4e2e99c6 +drivers/net/wan/cycx_drv cycx_down 0x66a4c4e6 +drivers/net/wan/cycx_drv cycx_exec 0xfe7cd576 +drivers/net/wan/cycx_drv cycx_intr 0x38da4725 +drivers/net/wan/cycx_drv cycx_peek 0x968458a6 +drivers/net/wan/cycx_drv cycx_poke 0xb6f383de +drivers/net/wan/cycx_drv cycx_setup 0x62be23ea +drivers/net/wan/hdlc alloc_hdlcdev 0x059ac7e2 +drivers/net/wan/hdlc hdlc_close 0x08c06004 +drivers/net/wan/hdlc hdlc_ioctl 0x8048baba +drivers/net/wan/hdlc hdlc_open 0xfd7b8075 +drivers/net/wan/hdlc hdlc_set_carrier 0x89f96b75 +drivers/net/wan/hdlc register_hdlc_device 0x6333aaaa +drivers/net/wan/hdlc unregister_hdlc_device 0xb2adb57e +drivers/net/wan/syncppp sppp_attach 0x12f54327 +drivers/net/wan/syncppp sppp_close 0xc1f833ae +drivers/net/wan/syncppp sppp_detach 0xb23a87b5 +drivers/net/wan/syncppp sppp_do_ioctl 0x78b58ec5 +drivers/net/wan/syncppp sppp_open 0xbcdc0619 +drivers/net/wan/syncppp sppp_reopen 0x423c29ca +drivers/net/wan/z85230 z8530_channel_load 0x9d301041 +drivers/net/wan/z85230 z8530_dead_port 0x10c78988 +drivers/net/wan/z85230 z8530_describe 0xb0ae203f +drivers/net/wan/z85230 z8530_dma_sync 0x24d31d0a +drivers/net/wan/z85230 z8530_get_stats 0xa6563487 +drivers/net/wan/z85230 z8530_hdlc_kilostream 0x5cd24d29 +drivers/net/wan/z85230 z8530_hdlc_kilostream_85230 0xe3d80064 +drivers/net/wan/z85230 z8530_init 0xb605af2f +drivers/net/wan/z85230 z8530_interrupt 0x33a2d438 +drivers/net/wan/z85230 z8530_nop 0x80e46952 +drivers/net/wan/z85230 z8530_null_rx 0x9481a5ff +drivers/net/wan/z85230 z8530_queue_xmit 0xc8c733f6 +drivers/net/wan/z85230 z8530_shutdown 0x06902a46 +drivers/net/wan/z85230 z8530_sync 0x4c67d238 +drivers/net/wan/z85230 z8530_sync_close 0xf2bd35fe +drivers/net/wan/z85230 z8530_sync_dma_close 0x9946f670 +drivers/net/wan/z85230 z8530_sync_dma_open 0x2d2d11ab +drivers/net/wan/z85230 z8530_sync_open 0xbdbf6bfb +drivers/net/wan/z85230 z8530_sync_txdma_close 0x546d5bca +drivers/net/wan/z85230 z8530_sync_txdma_open 0xd186385e +drivers/net/wan/z85230 z8530_txdma_sync 0xb3e41a35 +drivers/net/wireless/airo init_airo_card 0x09ee3d90 +drivers/net/wireless/airo reset_airo_card 0xae9e0804 +drivers/net/wireless/airo stop_airo_card 0xcda23c36 +drivers/net/wireless/atmel atmel_open 0x56065b29 +drivers/net/wireless/atmel init_atmel_card 0x530f3eb7 +drivers/net/wireless/atmel stop_atmel_card 0x48a778cf +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0xc787138c +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0xa09cf3aa +drivers/net/wireless/hostap/hostap hostap_80211_rx 0x49306a58 +drivers/net/wireless/hostap/hostap hostap_add_interface 0x1bcfd454 +drivers/net/wireless/hostap/hostap hostap_add_sta 0xbe72de16 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0x90d6a844 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0x8ccd2cbb +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0xec8a49d3 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0xae43da4c +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0x01d9ae30 +drivers/net/wireless/hostap/hostap hostap_get_porttype 0x93bd5a42 +drivers/net/wireless/hostap/hostap hostap_get_stats 0xa9cd5b6d +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0xef67a1d6 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0xd0a6d1c4 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x8f3756d8 +drivers/net/wireless/hostap/hostap hostap_info_init 0x5b22f3a5 +drivers/net/wireless/hostap/hostap hostap_info_process 0x9e52eb6b +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0xd193921a +drivers/net/wireless/hostap/hostap hostap_init_data 0x8a79f06a +drivers/net/wireless/hostap/hostap hostap_init_proc 0x22510ae9 +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0x15e0bb41 +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x90b14cbd +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0x7913f455 +drivers/net/wireless/hostap/hostap hostap_proc 0x4dc45117 +drivers/net/wireless/hostap/hostap hostap_remove_interface 0x34ac9422 +drivers/net/wireless/hostap/hostap hostap_remove_proc 0xc8fbac09 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0xd08ebfdb +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0xdae45d0c +drivers/net/wireless/hostap/hostap hostap_set_encryption 0xc2d17504 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x154ad344 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0x7f4a98b5 +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0xd060d74c +drivers/net/wireless/hostap/hostap hostap_set_string 0xac1e05c6 +drivers/net/wireless/hostap/hostap hostap_set_word 0x907a8070 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0x669316bd +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x4e278bd1 +drivers/net/wireless/hostap/hostap hostap_update_rates 0x0a8a524f +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x1c293c64 +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x2d63dd2a +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0xd757dc58 +drivers/net/wireless/orinoco __orinoco_down 0xa3060bc2 +drivers/net/wireless/orinoco __orinoco_up 0x6148cb59 +drivers/net/wireless/orinoco alloc_orinocodev 0xfd775004 +drivers/net/wireless/orinoco free_orinocodev 0x76c80ae5 +drivers/net/wireless/orinoco orinoco_interrupt 0x36feb7f6 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x97ddeb6a +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xd5a3e49e +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x9162a519 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0xeeb75383 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x9251249e +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0xc09cf075 +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x216e5fb1 +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0xb1aa2eb3 +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0xd65f8545 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0x9f3343fa +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x0a609453 +drivers/net/wireless/prism54_softmac/islsm register_islsm 0xe19d2838 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0x7bf62e96 +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0x2265f6df +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0x78c36809 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0xe2dff41b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0x39a40401 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0xb55eb464 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0xa39a277d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0x98ce1162 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0x98b64bd1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0xc623eea6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xd0fdbf18 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0xce2dcf67 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0x07a6ca5d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x9b6c8fa7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0xb363c00f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0x82e791a9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0xf8ea9eab +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0xeb059a69 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0xf697faea +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0x73d14888 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0xee4332f8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0xb64dd29e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0x4b4f0428 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x3389cf17 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x347c7538 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x49faf7c5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0xf6f31089 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x8ee03462 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0xeb1763cd +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0xefc960be +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0xd6b4ca23 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0xc6c20362 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0xf9c78f3e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0xc0fed6c9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0x1fec57d3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0xa0e5b09f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x1f95c03c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0xb9dfc0a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0x625cc542 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x80a26a35 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x63a63657 +drivers/parport/parport parport_announce_port 0xf1c64dec +drivers/parport/parport parport_claim 0x8cd386fa +drivers/parport/parport parport_claim_or_block 0x3a0cc5ba +drivers/parport/parport parport_find_base 0x9c4885bc +drivers/parport/parport parport_find_number 0x21e1ce45 +drivers/parport/parport parport_get_port 0x6ce0b296 +drivers/parport/parport parport_ieee1284_ecp_read_data 0x9ac0af68 +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xead2682b +drivers/parport/parport parport_ieee1284_ecp_write_data 0x4bb46f28 +drivers/parport/parport parport_ieee1284_epp_read_addr 0xf36b4461 +drivers/parport/parport parport_ieee1284_epp_read_data 0xb4694651 +drivers/parport/parport parport_ieee1284_epp_write_addr 0xdbb8e70a +drivers/parport/parport parport_ieee1284_epp_write_data 0x7adee009 +drivers/parport/parport parport_ieee1284_interrupt 0xb3ec0c3b +drivers/parport/parport parport_ieee1284_read_byte 0x6ebd058a +drivers/parport/parport parport_ieee1284_read_nibble 0x733b91f0 +drivers/parport/parport parport_ieee1284_write_compat 0x4c8e573c +drivers/parport/parport parport_negotiate 0x7703b2fe +drivers/parport/parport parport_put_port 0xaa47bc0c +drivers/parport/parport parport_read 0x02e30ac0 +drivers/parport/parport parport_register_device 0xe20afd4a +drivers/parport/parport parport_register_driver 0x55f91e10 +drivers/parport/parport parport_register_port 0x2de4e1c9 +drivers/parport/parport parport_release 0x7d85ea92 +drivers/parport/parport parport_remove_port 0x0fdd63c8 +drivers/parport/parport parport_set_timeout 0x15c6f77e +drivers/parport/parport parport_unregister_device 0x2ea5c575 +drivers/parport/parport parport_unregister_driver 0xc8ea0f70 +drivers/parport/parport parport_wait_event 0xe1c91b2e +drivers/parport/parport parport_wait_peripheral 0xb024e43f +drivers/parport/parport parport_write 0x67385d0d +drivers/parport/parport_pc parport_pc_probe_port 0xd2e2d487 +drivers/parport/parport_pc parport_pc_unregister_port 0xb4daadfd +drivers/pci/hotplug/acpiphp acpiphp_register_attention 0x4ac900e9 +drivers/pci/hotplug/acpiphp acpiphp_unregister_attention 0x8cf528a0 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_bus 0xcebee593 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_controller 0xef710d7f +drivers/pci/hotplug/pci_hotplug cpci_hp_start 0x6a8441be +drivers/pci/hotplug/pci_hotplug cpci_hp_stop 0x94ef4d05 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_bus 0xdbdde59c +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_controller 0x6da60895 +drivers/pci/hotplug/pci_hotplug pci_hotplug_slots_subsys 0xc50a2b76 +drivers/pci/hotplug/pci_hotplug pci_hp_change_slot_info 0xdc0accd5 +drivers/pci/hotplug/pci_hotplug pci_hp_deregister 0xfd83556b +drivers/pci/hotplug/pci_hotplug pci_hp_register 0xcda24f23 +drivers/pcmcia/pcmcia cs_error 0xb09d4452 +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0xf1707746 +drivers/pcmcia/pcmcia pcmcia_deregister_client 0x1b7086ad +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0x0b12fca1 +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0xed7641f8 +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0x90f8c4e6 +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0x03f29d92 +drivers/pcmcia/pcmcia pcmcia_get_status 0xf06b2daa +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0xe70135a6 +drivers/pcmcia/pcmcia pcmcia_get_window 0x4289b52d +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0x95779f87 +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x2fc08da1 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0x3bf91044 +drivers/pcmcia/pcmcia pcmcia_register_client 0xf874805d +drivers/pcmcia/pcmcia pcmcia_register_driver 0x099a21c7 +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x28dd468b +drivers/pcmcia/pcmcia pcmcia_release_io 0xca8f27b9 +drivers/pcmcia/pcmcia pcmcia_release_irq 0xf62291cc +drivers/pcmcia/pcmcia pcmcia_release_window 0x46fca77e +drivers/pcmcia/pcmcia pcmcia_request_configuration 0x7eedad77 +drivers/pcmcia/pcmcia pcmcia_request_io 0xc159c06a +drivers/pcmcia/pcmcia pcmcia_request_irq 0x62597b1d +drivers/pcmcia/pcmcia pcmcia_request_window 0x6d4df0ca +drivers/pcmcia/pcmcia pcmcia_reset_card 0xa169289e +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0x79dc5a48 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0xd1f3134a +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0x0961f84d +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0xb245464d +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0xf21ddf11 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0x36346709 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0xc49f2800 +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0x0a5bb965 +drivers/pcmcia/pcmcia_core pccard_reset_card 0x486892d0 +drivers/pcmcia/pcmcia_core pccard_static_ops 0xeea2eaf8 +drivers/pcmcia/pcmcia_core pccard_validate_cis 0x2521dccd +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0x79b9bf65 +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0xd091722b +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0xdc9b6012 +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0xe7e4a439 +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0x8a838c68 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0x73f372b9 +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x771c9831 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0xff3f695a +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0xd405e9a1 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xb4ce6141 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0x2170e683 +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0xc015edec +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x70d0510f +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0x8235ce54 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0xd0bedf43 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0xea2c1266 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0x5c0755d9 +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0x9b8d7c56 +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x51369d0c +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0xd1c7889e +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0xaa3d1744 +drivers/pcmcia/pcmcia_core release_cis_mem 0xc9d880b4 +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0x13150c98 +drivers/scsi/53c700 NCR_700_detect 0x1d2dfb3c +drivers/scsi/53c700 NCR_700_intr 0xe19cbc56 +drivers/scsi/53c700 NCR_700_release 0x29351862 +drivers/scsi/NCR53C9x esp_abort 0xb05b4d0b +drivers/scsi/NCR53C9x esp_allocate 0x4047e1a3 +drivers/scsi/NCR53C9x esp_deallocate 0x2d6bdff2 +drivers/scsi/NCR53C9x esp_initialize 0x18aff46c +drivers/scsi/NCR53C9x esp_intr 0x47477483 +drivers/scsi/NCR53C9x esp_queue 0xb6d0b497 +drivers/scsi/NCR53C9x esp_reset 0x4105f0f3 +drivers/scsi/NCR53C9x esp_slave_alloc 0x4d95e647 +drivers/scsi/NCR53C9x esp_slave_destroy 0xb4d576ed +drivers/scsi/NCR53C9x esps_in_use 0x3c0050b2 +drivers/scsi/libata __sata_phy_reset 0x55c07085 +drivers/scsi/libata ata_acpi_bus_register 0x4eb7c257 +drivers/scsi/libata ata_acpi_exec_tfs 0xa79a8e46 +drivers/scsi/libata ata_acpi_get_timing 0x7b3c2e8c +drivers/scsi/libata ata_acpi_push_id 0x8a912c20 +drivers/scsi/libata ata_acpi_push_timing 0x2a66a284 +drivers/scsi/libata ata_altstatus 0xad4faa29 +drivers/scsi/libata ata_bmdma_irq_clear 0x6341d87d +drivers/scsi/libata ata_bmdma_setup 0x5ec63619 +drivers/scsi/libata ata_bmdma_start 0x9c935a1d +drivers/scsi/libata ata_bmdma_status 0x38991f5e +drivers/scsi/libata ata_bmdma_stop 0x543ac04e +drivers/scsi/libata ata_bus_probe 0xa5015275 +drivers/scsi/libata ata_bus_reset 0x1d6e97e7 +drivers/scsi/libata ata_check_status 0x170a7f5e +drivers/scsi/libata ata_dev_classify 0x0531dcb8 +drivers/scsi/libata ata_dev_config 0xf1633a81 +drivers/scsi/libata ata_dev_id_string 0x07d45a53 +drivers/scsi/libata ata_device_add 0x9703248e +drivers/scsi/libata ata_device_resume 0x033bd5c0 +drivers/scsi/libata ata_device_shutdown 0x393d2102 +drivers/scsi/libata ata_device_suspend 0x384e3388 +drivers/scsi/libata ata_eng_timeout 0x81179a95 +drivers/scsi/libata ata_exec_command 0x24f6a601 +drivers/scsi/libata ata_host_intr 0x741836ca +drivers/scsi/libata ata_host_set_remove 0xc9f8a580 +drivers/scsi/libata ata_host_stop 0xd68ad103 +drivers/scsi/libata ata_hotplug_plug 0x9e5c6e09 +drivers/scsi/libata ata_hotplug_unplug 0x0bd83081 +drivers/scsi/libata ata_interrupt 0x12058575 +drivers/scsi/libata ata_noop_dev_select 0x1f6b1893 +drivers/scsi/libata ata_pci_device_resume 0x39689928 +drivers/scsi/libata ata_pci_device_suspend 0xb24b28d1 +drivers/scsi/libata ata_pci_host_stop 0x851748f2 +drivers/scsi/libata ata_pci_init_native_mode 0xd6fb6218 +drivers/scsi/libata ata_pci_init_one 0xa5f711e2 +drivers/scsi/libata ata_pci_remove_one 0xb4198d38 +drivers/scsi/libata ata_port_disable 0x4a209bc8 +drivers/scsi/libata ata_port_probe 0x887ca563 +drivers/scsi/libata ata_port_start 0x1ad818e4 +drivers/scsi/libata ata_port_stop 0x0878c91a +drivers/scsi/libata ata_qc_complete 0xecf5f2c3 +drivers/scsi/libata ata_qc_issue_prot 0xf6a0cc59 +drivers/scsi/libata ata_qc_prep 0xbe37bd78 +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0x2deab427 +drivers/scsi/libata ata_scsi_device_shutdown 0x6ca0d1b8 +drivers/scsi/libata ata_scsi_device_suspend 0x49bcc00c +drivers/scsi/libata ata_scsi_error 0x66e4ee05 +drivers/scsi/libata ata_scsi_ioctl 0xde2d1034 +drivers/scsi/libata ata_scsi_queuecmd 0xced07247 +drivers/scsi/libata ata_scsi_release 0x6af687e3 +drivers/scsi/libata ata_scsi_simulate 0x2f2bb11a +drivers/scsi/libata ata_scsi_slave_config 0x2750ca0f +drivers/scsi/libata ata_sg_init 0x6ac59247 +drivers/scsi/libata ata_sg_init_one 0x7deae42c +drivers/scsi/libata ata_std_bios_param 0x57748dc3 +drivers/scsi/libata ata_std_dev_select 0x2be45ae8 +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0x0067df75 +drivers/scsi/libata ata_tf_load 0x115ab5b8 +drivers/scsi/libata ata_tf_read 0x03d1184b +drivers/scsi/libata ata_tf_to_fis 0x28177a3f +drivers/scsi/libata ata_timing_compute 0xf6f94640 +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata do_drive_get_GTF 0x90ab4873 +drivers/scsi/libata do_drive_set_taskfiles 0xe1975a82 +drivers/scsi/libata pci_test_config_bits 0x31869d42 +drivers/scsi/libata sata_phy_reset 0xf2f1508d +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x1d408582 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0xb65c6537 +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0xa24db9b7 +drivers/scsi/qlogicfas408 qlogicfas408_abort 0xf0e37a64 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0xa089880b +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0xaca5dea5 +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0x325154b3 +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x97bdeb7b +drivers/scsi/qlogicfas408 qlogicfas408_info 0x0c1fee23 +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0xbfb288d7 +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0x991922bf +drivers/scsi/raid_class raid_class_release 0x1b37074d +drivers/scsi/raid_class raid_component_add 0xaedec371 +drivers/scsi/sas/sas_class sas_register_ha 0x8ed7c8fc +drivers/scsi/sas/sas_class sas_unregister_ha 0xddf1425d +drivers/scsi/scsi_mod __scsi_add_device 0x3ce3a8eb +drivers/scsi/scsi_mod __scsi_device_lookup 0x7fc5a5e5 +drivers/scsi/scsi_mod __scsi_device_lookup_by_target 0xa409f38c +drivers/scsi/scsi_mod __scsi_iterate_devices 0x6812b9b7 +drivers/scsi/scsi_mod __scsi_print_command 0xfef96e23 +drivers/scsi/scsi_mod __scsi_print_sense 0x69d38ed9 +drivers/scsi/scsi_mod int_to_scsilun 0xea10212a +drivers/scsi/scsi_mod scsi_add_device 0xcbe1cf70 +drivers/scsi/scsi_mod scsi_add_host 0x8b7dcab9 +drivers/scsi/scsi_mod scsi_adjust_queue_depth 0x38b36c19 +drivers/scsi/scsi_mod scsi_allocate_request 0x9ef7ed50 +drivers/scsi/scsi_mod scsi_bios_ptable 0x47c36653 +drivers/scsi/scsi_mod scsi_block_requests 0x7a6e41ac +drivers/scsi/scsi_mod scsi_block_when_processing_errors 0x8412f99c +drivers/scsi/scsi_mod scsi_bus_type 0xd8f64e0f +drivers/scsi/scsi_mod scsi_calculate_bounce_limit 0xc8e8ba34 +drivers/scsi/scsi_mod scsi_command_normalize_sense 0x465f91ea +drivers/scsi/scsi_mod scsi_device_cancel 0xa3a6b0e7 +drivers/scsi/scsi_mod scsi_device_get 0x47935127 +drivers/scsi/scsi_mod scsi_device_lookup 0x50e7d8e9 +drivers/scsi/scsi_mod scsi_device_lookup_by_target 0x17e397ec +drivers/scsi/scsi_mod scsi_device_put 0xd60d144f +drivers/scsi/scsi_mod scsi_device_quiesce 0xa65665ee +drivers/scsi/scsi_mod scsi_device_resume 0xcfaddf69 +drivers/scsi/scsi_mod scsi_device_set_state 0xef55d31e +drivers/scsi/scsi_mod scsi_device_types 0x6df713c9 +drivers/scsi/scsi_mod scsi_do_req 0xc3738cd7 +drivers/scsi/scsi_mod scsi_execute 0x7ac9536d +drivers/scsi/scsi_mod scsi_execute_req 0xf2a1ed7e +drivers/scsi/scsi_mod scsi_extd_sense_format 0x11267875 +drivers/scsi/scsi_mod scsi_finish_command 0x917d7f09 +drivers/scsi/scsi_mod scsi_flush_work 0xf32f7efb +drivers/scsi/scsi_mod scsi_free_host_dev 0xf1b56b20 +drivers/scsi/scsi_mod scsi_get_command 0x2b349117 +drivers/scsi/scsi_mod scsi_get_host_dev 0xa3a1f067 +drivers/scsi/scsi_mod scsi_get_sense_info_fld 0x796fc5ce +drivers/scsi/scsi_mod scsi_host_alloc 0xfa896309 +drivers/scsi/scsi_mod scsi_host_get 0xee664d13 +drivers/scsi/scsi_mod scsi_host_lookup 0x3efd8084 +drivers/scsi/scsi_mod scsi_host_put 0x925aa387 +drivers/scsi/scsi_mod scsi_host_set_state 0xede66491 +drivers/scsi/scsi_mod scsi_internal_device_block 0xd83397b8 +drivers/scsi/scsi_mod scsi_internal_device_unblock 0xe9f42ce0 +drivers/scsi/scsi_mod scsi_io_completion 0x44d9fa65 +drivers/scsi/scsi_mod scsi_ioctl 0x2abe76fd +drivers/scsi/scsi_mod scsi_ioctl_send_command 0xf4e741ac +drivers/scsi/scsi_mod scsi_is_host_device 0x5b559b4d +drivers/scsi/scsi_mod scsi_is_sdev_device 0x684a0e58 +drivers/scsi/scsi_mod scsi_is_target_device 0x95b7f739 +drivers/scsi/scsi_mod scsi_logging_level 0xaf3dd7dc +drivers/scsi/scsi_mod scsi_mode_sense 0xb7f0a18c +drivers/scsi/scsi_mod scsi_nonblockable_ioctl 0xb70902a2 +drivers/scsi/scsi_mod scsi_normalize_sense 0x0c65e73c +drivers/scsi/scsi_mod scsi_partsize 0x4afe9a77 +drivers/scsi/scsi_mod scsi_print_command 0x33b5e04c +drivers/scsi/scsi_mod scsi_print_msg 0x67f88938 +drivers/scsi/scsi_mod scsi_print_req_sense 0x3af9a627 +drivers/scsi/scsi_mod scsi_print_sense 0xbc869284 +drivers/scsi/scsi_mod scsi_print_sense_hdr 0xca5dbc50 +drivers/scsi/scsi_mod scsi_print_status 0x9cfd56c5 +drivers/scsi/scsi_mod scsi_put_command 0xaf28f6cb +drivers/scsi/scsi_mod scsi_queue_work 0x3bfd6e1f +drivers/scsi/scsi_mod scsi_register 0x1e79b77c +drivers/scsi/scsi_mod scsi_register_driver 0x2a356508 +drivers/scsi/scsi_mod scsi_register_interface 0xe63ae1b1 +drivers/scsi/scsi_mod scsi_release_request 0xc15c7270 +drivers/scsi/scsi_mod scsi_remove_device 0x6e73e5c4 +drivers/scsi/scsi_mod scsi_remove_host 0xfebc5985 +drivers/scsi/scsi_mod scsi_remove_target 0x24dc35e7 +drivers/scsi/scsi_mod scsi_report_bus_reset 0x7f9b6e7c +drivers/scsi/scsi_mod scsi_report_device_reset 0x4bd79e32 +drivers/scsi/scsi_mod scsi_request_normalize_sense 0x43700a7e +drivers/scsi/scsi_mod scsi_rescan_device 0xbc606250 +drivers/scsi/scsi_mod scsi_reset_provider 0x8d5275e0 +drivers/scsi/scsi_mod scsi_scan_host 0x5510fbbf +drivers/scsi/scsi_mod scsi_scan_target 0x65911e70 +drivers/scsi/scsi_mod scsi_sense_desc_find 0x2b0ba2b0 +drivers/scsi/scsi_mod scsi_sense_key_string 0x96cd2b04 +drivers/scsi/scsi_mod scsi_set_medium_removal 0xd5fa9913 +drivers/scsi/scsi_mod scsi_setup_blk_pc_cmnd 0xdda086cc +drivers/scsi/scsi_mod scsi_target_block 0xf2fc267a +drivers/scsi/scsi_mod scsi_target_quiesce 0x18385e8d +drivers/scsi/scsi_mod scsi_target_resume 0xf66ca030 +drivers/scsi/scsi_mod scsi_target_unblock 0xe41eab9b +drivers/scsi/scsi_mod scsi_test_unit_ready 0xcabcf856 +drivers/scsi/scsi_mod scsi_track_queue_full 0x84a5e133 +drivers/scsi/scsi_mod scsi_unblock_requests 0x1509de62 +drivers/scsi/scsi_mod scsi_unregister 0x6346242f +drivers/scsi/scsi_mod scsicam_bios_param 0xc26b7bd7 +drivers/scsi/scsi_mod starget_for_each_device 0xaa188290 +drivers/scsi/scsi_transport_fc fc_attach_transport 0x217dd957 +drivers/scsi/scsi_transport_fc fc_release_transport 0xdd595a7b +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x58f5198d +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0xd4e12dcd +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x6f7716ea +drivers/scsi/scsi_transport_fc fc_remove_host 0x6c9a925e +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0x84d8c16e +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x92db1106 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0xf04b5cf5 +drivers/scsi/scsi_transport_sas sas_attach_transport 0x2ce43871 +drivers/scsi/scsi_transport_sas sas_phy_add 0x4c7f85e9 +drivers/scsi/scsi_transport_sas sas_phy_alloc 0x05d53108 +drivers/scsi/scsi_transport_sas sas_phy_delete 0x6bc330bc +drivers/scsi/scsi_transport_sas sas_phy_free 0xdf7b3965 +drivers/scsi/scsi_transport_sas sas_release_transport 0x798034cf +drivers/scsi/scsi_transport_sas sas_remove_host 0x6ae8be94 +drivers/scsi/scsi_transport_sas sas_rphy_add 0xf58b8fff +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0xa6416144 +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x9f888161 +drivers/scsi/scsi_transport_sas sas_rphy_free 0xc7bc8654 +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0x0f65790a +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0x68713acf +drivers/scsi/scsi_transport_spi spi_attach_transport 0x8ddf82db +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0xc86370ae +drivers/scsi/scsi_transport_spi spi_dv_device 0x729b2f27 +drivers/scsi/scsi_transport_spi spi_release_transport 0xf5db9d85 +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0x1166888c +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x8e4a2e0b +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0x0a5a230c +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x816ce60c +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0xdf80d9e1 +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0x46f4a70e +drivers/telephony/ixj ixj_pcmcia_probe 0x160bfd37 +drivers/telephony/phonedev phone_register_device 0x26884cfe +drivers/telephony/phonedev phone_unregister_device 0x9e169b8a +drivers/usb/atm/usbatm usbatm_usb_disconnect 0xf670b9d6 +drivers/usb/atm/usbatm usbatm_usb_probe 0x650ee549 +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x9f4d76f3 +drivers/usb/core/usbcore usb_alloc_dev 0x52b5f4c2 +drivers/usb/core/usbcore usb_alloc_urb 0xcbf1a523 +drivers/usb/core/usbcore usb_altnum_to_altsetting 0xbfe22059 +drivers/usb/core/usbcore usb_buffer_alloc 0x14862fab +drivers/usb/core/usbcore usb_buffer_free 0x8fed9efa +drivers/usb/core/usbcore usb_buffer_map_sg 0x97041ab9 +drivers/usb/core/usbcore usb_buffer_unmap_sg 0x56595130 +drivers/usb/core/usbcore usb_bulk_msg 0x920b7897 +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0x0b6eace3 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0x4c52ade5 +drivers/usb/core/usbcore usb_claim_bandwidth 0x21b28e3f +drivers/usb/core/usbcore usb_clear_halt 0x66c51b58 +drivers/usb/core/usbcore usb_control_msg 0x434a38fa +drivers/usb/core/usbcore usb_create_hcd 0xdb108546 +drivers/usb/core/usbcore usb_deregister 0x4b96afb4 +drivers/usb/core/usbcore usb_deregister_dev 0x45571cf4 +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0x750ffc2d +drivers/usb/core/usbcore usb_driver_claim_interface 0xa243f784 +drivers/usb/core/usbcore usb_driver_release_interface 0x8369d031 +drivers/usb/core/usbcore usb_find_device 0xfc7361cd +drivers/usb/core/usbcore usb_find_interface 0xbe189f32 +drivers/usb/core/usbcore usb_free_urb 0x5d8c1720 +drivers/usb/core/usbcore usb_get_current_frame_number 0x2c9e6068 +drivers/usb/core/usbcore usb_get_descriptor 0xf724a0c2 +drivers/usb/core/usbcore usb_get_dev 0x8b82a74e +drivers/usb/core/usbcore usb_get_intf 0xbb52491c +drivers/usb/core/usbcore usb_get_status 0xbdf26368 +drivers/usb/core/usbcore usb_get_string 0x9939d69a +drivers/usb/core/usbcore usb_get_urb 0xb4d4bf6c +drivers/usb/core/usbcore usb_hc_died 0xdb54b6c5 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0x990a8d7d +drivers/usb/core/usbcore usb_hcd_pci_probe 0x7e3de255 +drivers/usb/core/usbcore usb_hcd_pci_remove 0x60d35189 +drivers/usb/core/usbcore usb_hcd_pci_resume 0xd6ea857d +drivers/usb/core/usbcore usb_hcd_pci_suspend 0x9c2e99a2 +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0x7c4f66d1 +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0x4e0cda44 +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0x7673842a +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0x05dbcfba +drivers/usb/core/usbcore usb_ifnum_to_if 0x6bdc48e3 +drivers/usb/core/usbcore usb_init_urb 0x5829be2b +drivers/usb/core/usbcore usb_kill_urb 0x9a32904e +drivers/usb/core/usbcore usb_lock_device 0x6f519eb2 +drivers/usb/core/usbcore usb_lock_device_for_reset 0xe343e2d6 +drivers/usb/core/usbcore usb_match_id 0xc1045756 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0x8588e078 +drivers/usb/core/usbcore usb_put_dev 0xdf1a1f23 +drivers/usb/core/usbcore usb_put_hcd 0xcfdf32f4 +drivers/usb/core/usbcore usb_put_intf 0xa49c0999 +drivers/usb/core/usbcore usb_register 0x12493de4 +drivers/usb/core/usbcore usb_register_dev 0xd4748dfa +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x12982ba2 +drivers/usb/core/usbcore usb_remove_hcd 0xd25452bc +drivers/usb/core/usbcore usb_reset_configuration 0x120f743b +drivers/usb/core/usbcore usb_reset_device 0x7d4a811e +drivers/usb/core/usbcore usb_set_device_state 0xe91c99b1 +drivers/usb/core/usbcore usb_set_interface 0x40dcd409 +drivers/usb/core/usbcore usb_sg_cancel 0x8a88b46f +drivers/usb/core/usbcore usb_sg_init 0xacc0d8e2 +drivers/usb/core/usbcore usb_sg_wait 0xf2729198 +drivers/usb/core/usbcore usb_string 0x3c4e52c2 +drivers/usb/core/usbcore usb_submit_urb 0x4ce1a5e3 +drivers/usb/core/usbcore usb_trylock_device 0x999b04b6 +drivers/usb/core/usbcore usb_unlink_urb 0x16c63665 +drivers/usb/core/usbcore usb_unlock_device 0x36b48d69 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/gadget/net2280 net2280_set_fifo_mode 0x1ff3404c +drivers/usb/gadget/net2280 usb_gadget_register_driver 0x1adad4c8 +drivers/usb/gadget/net2280 usb_gadget_unregister_driver 0x2e95c6c6 +drivers/usb/host/sl811-hcd sl811h_driver 0x771b0fcd +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0xdb3c7941 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x0abd4ae5 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0x428fa62d +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0x3aa338bb +drivers/usb/media/usbvideo RingQueue_Dequeue 0xb3f01b51 +drivers/usb/media/usbvideo RingQueue_Enqueue 0xa8caef21 +drivers/usb/media/usbvideo RingQueue_Flush 0xbc4a757d +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0x26af5b87 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0xa9d35237 +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0xfac98610 +drivers/usb/media/usbvideo usbvideo_Deregister 0x13e95235 +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0xde890300 +drivers/usb/media/usbvideo usbvideo_TestPattern 0x9155b8da +drivers/usb/media/usbvideo usbvideo_register 0x615f6607 +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0x26e6050b +drivers/usb/media/w9968cf w9968cf_vppmod_register 0x9c182e50 +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0x6a280cb3 +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0x676c1691 +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0xb9d44b6e +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0x4973bb06 +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0x044c6468 +drivers/usb/net/usbnet usbnet_defer_kevent 0x0d4907c8 +drivers/usb/net/usbnet usbnet_disconnect 0x0fe29085 +drivers/usb/net/usbnet usbnet_get_drvinfo 0x64d6cc22 +drivers/usb/net/usbnet usbnet_get_endpoints 0xf9df21ca +drivers/usb/net/usbnet usbnet_get_msglevel 0xc6b8a7e7 +drivers/usb/net/usbnet usbnet_probe 0x46c7d34b +drivers/usb/net/usbnet usbnet_resume 0x5d24fc31 +drivers/usb/net/usbnet usbnet_set_msglevel 0xe323a520 +drivers/usb/net/usbnet usbnet_skb_return 0xf6518716 +drivers/usb/net/usbnet usbnet_suspend 0xe6d8e1be +drivers/usb/serial/usbserial ezusb_set_reset 0x8150e0d9 +drivers/usb/serial/usbserial ezusb_writememory 0x7364c604 +drivers/usb/serial/usbserial usb_serial_deregister 0x854cf367 +drivers/usb/serial/usbserial usb_serial_disconnect 0xc010adba +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x98f6866a +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0xfe5374f2 +drivers/usb/serial/usbserial usb_serial_register 0x3af90fbf +drivers/video/backlight/backlight backlight_device_register 0x06db42c0 +drivers/video/backlight/backlight backlight_device_unregister 0x8f38a959 +drivers/video/backlight/lcd lcd_device_register 0xf8d891cd +drivers/video/backlight/lcd lcd_device_unregister 0x8ce7cddb +drivers/video/console/bitblit fbcon_set_bitops 0x91ffa1a6 +drivers/video/console/font find_font 0xf7584a9c +drivers/video/console/font get_default_font 0x093e3659 +drivers/video/console/softcursor soft_cursor 0xd9ea9c92 +drivers/video/console/tileblit fbcon_set_tileops 0x79e6637c +drivers/video/cyber2000fb cyber2000fb_attach 0x0da975dd +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x6200bd65 +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0x08fa429c +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0xcff2ce46 +drivers/video/macmodes mac_find_mode 0x95c3108b +drivers/video/macmodes mac_map_monitor_sense 0xe2304303 +drivers/video/macmodes mac_var_to_vmode 0x00907cd5 +drivers/video/macmodes mac_vmode_to_var 0x08ed0b62 +drivers/video/matrox/g450_pll g450_mnp2f 0x90fa9bb7 +drivers/video/matrox/g450_pll matroxfb_g450_setclk 0x04ddc0c8 +drivers/video/matrox/g450_pll matroxfb_g450_setpll_cond 0x8a4f4ad5 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_init 0x4b917018 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_restore 0x67a8a8cc +drivers/video/matrox/matroxfb_DAC1064 matrox_G100 0x07f4a6a9 +drivers/video/matrox/matroxfb_DAC1064 matrox_mystique 0xd95507f0 +drivers/video/matrox/matroxfb_Ti3026 matrox_millennium 0xd904830a +drivers/video/matrox/matroxfb_accel matrox_cfbX_init 0xd76ab777 +drivers/video/matrox/matroxfb_base matroxfb_enable_irq 0x1f8fc4dc +drivers/video/matrox/matroxfb_base matroxfb_register_driver 0xd85421a6 +drivers/video/matrox/matroxfb_base matroxfb_unregister_driver 0xd7f7aede +drivers/video/matrox/matroxfb_base matroxfb_wait_for_sync 0x4018a253 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_connect 0x3b7c0069 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_shutdown 0x8572f870 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_in 0x6f57fc53 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_out 0x8e545449 +drivers/video/matrox/matroxfb_misc matroxfb_PLL_calcclock 0x25cf8049 +drivers/video/matrox/matroxfb_misc matroxfb_read_pins 0x35c4b9c0 +drivers/video/matrox/matroxfb_misc matroxfb_var2my 0xabd8e427 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWinit 0xbcc322e9 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWrestore 0x2ed9203f +drivers/video/sis/sisfb sis_free 0x454a3cf0 +drivers/video/sis/sisfb sis_free_new 0x4d97b037 +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0x7b4be471 +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0x2e42c367 +drivers/w1/ds9490r ds_put_device 0x0516d98a +drivers/w1/ds9490r ds_read_bit 0x05aeb5a3 +drivers/w1/ds9490r ds_read_block 0xcdea6b99 +drivers/w1/ds9490r ds_read_byte 0x5269de5e +drivers/w1/ds9490r ds_reset 0x08deaa63 +drivers/w1/ds9490r ds_touch_bit 0x98ae7c67 +drivers/w1/ds9490r ds_write_bit 0x8a6dba6b +drivers/w1/ds9490r ds_write_block 0x23d96e1b +drivers/w1/ds9490r ds_write_byte 0x404378d7 +drivers/w1/wire w1_add_master_device 0xd703c624 +drivers/w1/wire w1_calc_crc8 0x7c2f2afb +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xb0c86d52 +drivers/w1/wire w1_family_put 0x45181a35 +drivers/w1/wire w1_family_registered 0x345f469c +drivers/w1/wire w1_read_8 0xe58fe07a +drivers/w1/wire w1_read_block 0xe395330f +drivers/w1/wire w1_register_family 0xadeb1de9 +drivers/w1/wire w1_remove_master_device 0x31a7a05c +drivers/w1/wire w1_reset_bus 0x9bbfba2c +drivers/w1/wire w1_reset_select_slave 0x1b9a34a4 +drivers/w1/wire w1_search_devices 0xecceb41d +drivers/w1/wire w1_touch_bit 0x25a2d8e3 +drivers/w1/wire w1_unregister_family 0x2616cdb9 +drivers/w1/wire w1_write_8 0x996197f9 +drivers/w1/wire w1_write_block 0xdd579b66 +fs/configfs/configfs config_group_init 0x01ae68d2 +fs/configfs/configfs config_group_init_type_name 0x42d5ac5e +fs/configfs/configfs config_item_get 0xf44e2a9d +fs/configfs/configfs config_item_init 0x6b27445b +fs/configfs/configfs config_item_init_type_name 0x02d6677e +fs/configfs/configfs config_item_put 0x5f24b2e4 +fs/configfs/configfs config_item_set_name 0x6bc14e37 +fs/configfs/configfs configfs_register_subsystem 0x6a9971b9 +fs/configfs/configfs configfs_unregister_subsystem 0xfb892619 +fs/exportfs/exportfs export_op_default 0xbd7965d7 +fs/exportfs/exportfs find_exported_dentry 0x0da77c1f +fs/fat/fat fat_add_entries 0x6c51de70 +fs/fat/fat fat_alloc_new_dir 0xbbb173ce +fs/fat/fat fat_attach 0xeab0abcb +fs/fat/fat fat_build_inode 0xd616a693 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0x0821eb9a +fs/fat/fat fat_dir_empty 0xead23758 +fs/fat/fat fat_fill_super 0x32d25de9 +fs/fat/fat fat_free_clusters 0x0c22285b +fs/fat/fat fat_fs_panic 0x094eed80 +fs/fat/fat fat_get_dotdot_entry 0xb35522e4 +fs/fat/fat fat_notify_change 0x3de12ab7 +fs/fat/fat fat_remove_entries 0x6fe49338 +fs/fat/fat fat_scan 0x946c251e +fs/fat/fat fat_search_long 0x09bc105a +fs/fat/fat fat_sync_bhs 0x0cdacc54 +fs/fat/fat fat_sync_inode 0x3dbee9ce +fs/jbd/jbd journal_abort 0x04b6ab7f +fs/jbd/jbd journal_ack_err 0xebeef550 +fs/jbd/jbd journal_blocks_per_page 0x06f1df0c +fs/jbd/jbd journal_check_available_features 0x8520d407 +fs/jbd/jbd journal_check_used_features 0x98c6b13a +fs/jbd/jbd journal_clear_err 0x08af65a8 +fs/jbd/jbd journal_create 0x6597f724 +fs/jbd/jbd journal_destroy 0x233e33c6 +fs/jbd/jbd journal_dirty_data 0x8ec42696 +fs/jbd/jbd journal_dirty_metadata 0x274e021e +fs/jbd/jbd journal_errno 0xbbaf7f65 +fs/jbd/jbd journal_extend 0x2b4a221f +fs/jbd/jbd journal_flush 0x98932521 +fs/jbd/jbd journal_force_commit 0xafd5cc0d +fs/jbd/jbd journal_force_commit_nested 0x274e8a1d +fs/jbd/jbd journal_forget 0x8209dfba +fs/jbd/jbd journal_get_create_access 0x563c05a6 +fs/jbd/jbd journal_get_undo_access 0x7e4d36f1 +fs/jbd/jbd journal_get_write_access 0x59034e99 +fs/jbd/jbd journal_init_dev 0x7e757c9a +fs/jbd/jbd journal_init_inode 0xac910642 +fs/jbd/jbd journal_invalidatepage 0xda686837 +fs/jbd/jbd journal_load 0x6b8c2922 +fs/jbd/jbd journal_lock_updates 0xf61370c8 +fs/jbd/jbd journal_release_buffer 0xc4d5f7a6 +fs/jbd/jbd journal_restart 0x1e90e988 +fs/jbd/jbd journal_revoke 0xa5aea7bc +fs/jbd/jbd journal_set_features 0x579f89fb +fs/jbd/jbd journal_start 0x24b20d11 +fs/jbd/jbd journal_start_commit 0xa630b080 +fs/jbd/jbd journal_stop 0x61e097bc +fs/jbd/jbd journal_try_to_free_buffers 0x53550889 +fs/jbd/jbd journal_unlock_updates 0xbafbb887 +fs/jbd/jbd journal_update_format 0xc97fb8f0 +fs/jbd/jbd journal_update_superblock 0x4f404152 +fs/jbd/jbd journal_wipe 0x34fecbfb +fs/jbd/jbd log_wait_commit 0xf1363aaa +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0x3b94a535 +fs/lockd/lockd nlmsvc_ops 0xb219fae9 +fs/nfsd/nfsd nfs4_acl_add_ace 0x1bb3671e +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/relayfs/relayfs relay_buf_full 0xa7b2da2e +fs/relayfs/relayfs relay_close 0x74d7c778 +fs/relayfs/relayfs relay_flush 0xcc2e6a23 +fs/relayfs/relayfs relay_open 0x9d49cbc0 +fs/relayfs/relayfs relay_reset 0x02812cc3 +fs/relayfs/relayfs relay_subbufs_consumed 0xe7c5a2f5 +fs/relayfs/relayfs relay_switch_subbuf 0xaf637a85 +fs/relayfs/relayfs relayfs_create_dir 0xc8a1c48d +fs/relayfs/relayfs relayfs_file_operations 0x09500bc1 +fs/relayfs/relayfs relayfs_remove_dir 0x3edeccec +lib/crc-ccitt crc_ccitt 0x3771b461 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x8ffdb3b8 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x2329b292 +lib/libcrc32c crc32c_le 0x37d0b921 +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0x8fd9e940 +net/appletalk/appletalk alloc_ltalkdev 0x7daa7f82 +net/appletalk/appletalk atalk_find_dev_addr 0xe94e861d +net/appletalk/appletalk atrtr_get_dev 0xf05be7cd +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0xabd9e004 +net/ax25/ax25 ax25_findbyuid 0x564d9f14 +net/ax25/ax25 ax25_hard_header 0xa7cadcc7 +net/ax25/ax25 ax25_linkfail_register 0x6e46fbfb +net/ax25/ax25 ax25_linkfail_release 0x75fb216e +net/ax25/ax25 ax25_listen_register 0x237e8ede +net/ax25/ax25 ax25_listen_release 0xbaf6d2a1 +net/ax25/ax25 ax25_protocol_register 0x8d914a92 +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0xf84b7c94 +net/ax25/ax25 ax25_send_frame 0x3751aae0 +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0x37da6e12 +net/bluetooth/bluetooth bt_accept_enqueue 0x8cffa72c +net/bluetooth/bluetooth bt_accept_unlink 0xcfafce69 +net/bluetooth/bluetooth bt_class 0xa5866680 +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0xb3ef5ca0 +net/bluetooth/bluetooth bt_sock_poll 0xefbc20ac +net/bluetooth/bluetooth bt_sock_recvmsg 0x1a8fe991 +net/bluetooth/bluetooth bt_sock_register 0x0a8437c2 +net/bluetooth/bluetooth bt_sock_unlink 0x04ef6f67 +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0xc22a79f7 +net/bluetooth/bluetooth hci_alloc_dev 0x368c7757 +net/bluetooth/bluetooth hci_conn_auth 0xba9ccefd +net/bluetooth/bluetooth hci_conn_change_link_key 0x044c9982 +net/bluetooth/bluetooth hci_conn_encrypt 0x1b7f3cec +net/bluetooth/bluetooth hci_conn_switch_role 0xa48dbfbf +net/bluetooth/bluetooth hci_connect 0x42302141 +net/bluetooth/bluetooth hci_free_dev 0x28aeedfd +net/bluetooth/bluetooth hci_get_route 0xc22156fd +net/bluetooth/bluetooth hci_register_cb 0x776f947a +net/bluetooth/bluetooth hci_register_dev 0xeeb79740 +net/bluetooth/bluetooth hci_register_proto 0x8e1b2c07 +net/bluetooth/bluetooth hci_resume_dev 0x93f13115 +net/bluetooth/bluetooth hci_send_acl 0x70073251 +net/bluetooth/bluetooth hci_send_sco 0xeb285f47 +net/bluetooth/bluetooth hci_suspend_dev 0xe9075c02 +net/bluetooth/bluetooth hci_unregister_cb 0x6b2a7ac4 +net/bluetooth/bluetooth hci_unregister_dev 0x25be3df5 +net/bluetooth/bluetooth hci_unregister_proto 0x300e3dda +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0x421c6da9 +net/bridge/netfilter/ebtables ebt_do_table 0x9ca5353d +net/bridge/netfilter/ebtables ebt_register_match 0x22e0bf18 +net/bridge/netfilter/ebtables ebt_register_table 0x7e2ea47c +net/bridge/netfilter/ebtables ebt_register_target 0x95f8d19b +net/bridge/netfilter/ebtables ebt_register_watcher 0x6b50e996 +net/bridge/netfilter/ebtables ebt_unregister_match 0x6fb7d097 +net/bridge/netfilter/ebtables ebt_unregister_table 0x37c60d00 +net/bridge/netfilter/ebtables ebt_unregister_target 0x3ca3628f +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x994286a9 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x3a18e70d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0x71ecc67f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x7824d7b3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xded46fa7 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0x38acf015 +net/dccp/dccp ccid_init 0xdf426ebb +net/dccp/dccp ccid_register 0x3d2ef1bf +net/dccp/dccp ccid_unregister 0xa03f1582 +net/dccp/dccp dccp_hashinfo 0x4906ee92 +net/dccp/dccp dccp_insert_option 0x72375190 +net/dccp/dccp dccp_insert_option_elapsed_time 0x386e9b4a +net/dccp/dccp dccp_insert_option_timestamp 0x36351ec4 +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0xa6b3c507 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0xfa84a954 +net/ieee80211/ieee80211 alloc_ieee80211 0x54ec00d8 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0xaccf4176 +net/ieee80211/ieee80211 ieee80211_channel_to_index 0x1ad0ce9d +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0x89dc362b +net/ieee80211/ieee80211 ieee80211_get_channel 0x19c7f022 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0xa644ebbe +net/ieee80211/ieee80211 ieee80211_get_geo 0xe97bc883 +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0xb2ea383e +net/ieee80211/ieee80211 ieee80211_rx 0xe9cdc7af +net/ieee80211/ieee80211 ieee80211_rx_mgt 0x1bd6cf4f +net/ieee80211/ieee80211 ieee80211_set_geo 0xfabbcba5 +net/ieee80211/ieee80211 ieee80211_tx_frame 0xab34c7fb +net/ieee80211/ieee80211 ieee80211_txb_free 0x4f5e202b +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0xd829f0d9 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0xc7ee0a26 +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x5c58d951 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0x1ff56536 +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0xd8e3792c +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0xdd9882fb +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x9335b962 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0x150d2d04 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0xb89ebbe2 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0xa834c75f +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x3345045c +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0x7bcedd11 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x1b731af9 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0xa0d391f8 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0x6057797c +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x78fc6554 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0x5587c55b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0xe992fbd6 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0xf6605629 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0x3883f8b4 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0xeae9f324 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0x9c722cbb +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0xa2641366 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0x78090a61 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x06efa0f1 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x668eb047 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x4dc8d8b1 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x6fb3df7c +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0xb5dec67b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x06252904 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x87412db1 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0xdcbed1e7 +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0xf90b0f26 +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x8354efa5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0x1c6605b2 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0x3bfa9677 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0xd0bbac88 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0x716b6c4d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0xecd49d86 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0xab6a1376 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x3790fecd +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0xee01e594 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0x3f76655a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x66b8b8f4 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x16f8fae2 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0xff334903 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x9b1f7b0b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0xf3737cd7 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x83b3e5f7 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0x8cd661f0 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0xc3c2c85c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0xad0a17a8 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0xcfb74f2e +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0xa834697c +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0x84381f91 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0x76f9bae5 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x2a0d7c5a +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x00510008 +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0x45b9f560 +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0xb52ba16b +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0xa11e12bb +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0x5aba6a43 +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0xce43ea2a +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0x74aa7ad0 +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0x69f9f7cb +net/ipv4/ipvs/ip_vs register_ip_vs_app 0xd7664ac3 +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0x70a1483a +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0x2a55ac85 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0x8e7c35c3 +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0x45d6a3b7 +net/ipv4/netfilter/arp_tables arpt_do_table 0x833e2b75 +net/ipv4/netfilter/arp_tables arpt_register_table 0xda786c66 +net/ipv4/netfilter/arp_tables arpt_register_target 0xee0fec91 +net/ipv4/netfilter/arp_tables arpt_unregister_table 0x1c3ba75a +net/ipv4/netfilter/arp_tables arpt_unregister_target 0xc81656fa +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x5c3900ff +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0xcb2c9546 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0x48353bc3 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x2f3c18d1 +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0xd1af7cd5 +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0x949ac2f7 +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x345ddb88 +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0xd64a93dd +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0xc50fef8b +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0xbee10cb9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0x2666ab7d +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x53ea404b +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0x7f25c5a3 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0xc4eb06df +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0xde590a03 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0xb94d64bf +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0xfc54b363 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0xd511963d +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x8fad9cb5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0xa88ccd7c +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0xd9b26faa +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0xc3d239f1 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x1ae891ee +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0xb3da9d15 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0xdf524224 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0x1414630d +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x2528b328 +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x3c70369b +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0x7208b64f +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0x838eca83 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x9fdc4737 +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0xcd69e558 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0x82c3119d +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0x78f5e249 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0xa871e4ec +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x0260ec33 +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0xdd999f51 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0x59b6521f +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0xa876aa7d +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0xe30fcf6f +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0x2df48d4a +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0x0fe0cee2 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0xe55f5aa4 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0x8d5b7c0b +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0xe1671310 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0xb6928e21 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0xd7b9c7cb +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0x577e58a5 +net/ipv4/netfilter/ip_nat ip_nat_packet 0x5b665070 +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x0bb076e5 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0xce762f5d +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x51072385 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0xf4e93ae1 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x5f0db7e5 +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0x54b362af +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0x96b92b45 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x5e795875 +net/ipv4/netfilter/ip_tables ipt_do_table 0xa2663cc4 +net/ipv4/netfilter/ip_tables ipt_find_target 0xaa173caa +net/ipv4/netfilter/ip_tables ipt_register_match 0x5769ce00 +net/ipv4/netfilter/ip_tables ipt_register_table 0x7f85fd8e +net/ipv4/netfilter/ip_tables ipt_register_target 0x7e9cdccd +net/ipv4/netfilter/ip_tables ipt_unregister_match 0x796874c0 +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x89caf38c +net/ipv4/netfilter/ip_tables ipt_unregister_target 0x01463ca5 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0xbfe97521 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0x6160c626 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0x11065b31 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0x06ce76a9 +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x2ec0277a +net/ipv6/ipv6 inet6_add_protocol 0x31fe452a +net/ipv6/ipv6 inet6_bind 0x97104757 +net/ipv6/ipv6 inet6_del_protocol 0x127afafe +net/ipv6/ipv6 inet6_getname 0x8e1a0015 +net/ipv6/ipv6 inet6_ioctl 0xe443f738 +net/ipv6/ipv6 inet6_register_protosw 0x5f9f6e5b +net/ipv6/ipv6 inet6_release 0x0c3c8fe1 +net/ipv6/ipv6 inet6_unregister_protosw 0x5e993aab +net/ipv6/ipv6 ip6_route_me_harder 0xb74508fe +net/ipv6/ipv6 ip6_route_output 0xaec6b2bf +net/ipv6/ipv6 ip6_xmit 0xaba47dff +net/ipv6/ipv6 ipv6_chk_addr 0x91ff2ad9 +net/ipv6/ipv6 ipv6_get_saddr 0x64ad05a5 +net/ipv6/ipv6 ipv6_getsockopt 0x995f1005 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0x7cd4629b +net/ipv6/ipv6 ipv6_setsockopt 0x45b57574 +net/ipv6/ipv6 ndisc_mc_map 0x915ad99c +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x0f9fdc18 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0x7a09b270 +net/ipv6/ipv6 xfrm6_rcv_spi 0x964a826d +net/ipv6/netfilter/ip6_tables ip6t_do_table 0x77708420 +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0x553808ad +net/ipv6/netfilter/ip6_tables ip6t_register_table 0x4d2bdb2b +net/ipv6/netfilter/ip6_tables ip6t_register_target 0xa34e0674 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0x50aa3c76 +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x1bbeb354 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0x60991266 +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0x9b3a48e9 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0xb861f5f8 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0x9470f596 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/irda/ircomm/ircomm ircomm_close 0x5ac4a58d +net/irda/ircomm/ircomm ircomm_connect_request 0x27084f67 +net/irda/ircomm/ircomm ircomm_connect_response 0xa5cd6485 +net/irda/ircomm/ircomm ircomm_control_request 0x6121ac75 +net/irda/ircomm/ircomm ircomm_data_request 0x1c51bf2a +net/irda/ircomm/ircomm ircomm_disconnect_request 0x0e88d4b7 +net/irda/ircomm/ircomm ircomm_flow_request 0xa281d814 +net/irda/ircomm/ircomm ircomm_open 0xd67c43f7 +net/irda/irda alloc_irdadev 0x261f0f54 +net/irda/irda async_unwrap_char 0xaa3e0574 +net/irda/irda async_wrap_skb 0xfaaedb52 +net/irda/irda hashbin_delete 0x1c51e992 +net/irda/irda hashbin_find 0x6621aa8a +net/irda/irda hashbin_get_first 0x538fe1e0 +net/irda/irda hashbin_get_next 0xe2f84c82 +net/irda/irda hashbin_insert 0x22b0f52d +net/irda/irda hashbin_lock_find 0x19d79c82 +net/irda/irda hashbin_new 0x5504cf7c +net/irda/irda hashbin_remove 0x3b2e9df9 +net/irda/irda hashbin_remove_this 0x57fb1ed2 +net/irda/irda irda_debug 0x38a20e5b +net/irda/irda irda_device_dongle_cleanup 0x8fa4c41c +net/irda/irda irda_device_dongle_init 0xef392256 +net/irda/irda irda_device_register_dongle 0x10ae4d54 +net/irda/irda irda_device_set_media_busy 0x95a69ebd +net/irda/irda irda_device_unregister_dongle 0x30b0b907 +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0xd90902ef +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_setup_dma 0xf39b7fe0 +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0x575af8d6 +net/irda/irda iriap_getvaluebyclass_request 0x4682c8bd +net/irda/irda iriap_open 0xedeb476c +net/irda/irda irias_add_integer_attrib 0x519118cc +net/irda/irda irias_add_octseq_attrib 0x05d7cfe5 +net/irda/irda irias_add_string_attrib 0x701e028e +net/irda/irda irias_delete_object 0x5aad87aa +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x503ad245 +net/irda/irda irias_find_object 0x42c7c5ce +net/irda/irda irias_insert_object 0x30827e1c +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0x5d609063 +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0x44bf15d8 +net/irda/irda irlap_open 0x382c486c +net/irda/irda irlmp_close_lsap 0xf714ada1 +net/irda/irda irlmp_connect_request 0xd740b48b +net/irda/irda irlmp_connect_response 0x4e1ae3f6 +net/irda/irda irlmp_data_request 0x2e2bea20 +net/irda/irda irlmp_disconnect_request 0xbd86bfa1 +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0x5ec3c3cc +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0xb3264ff4 +net/irda/irda irttp_connect_request 0xe70b5d32 +net/irda/irda irttp_connect_response 0x978753ec +net/irda/irda irttp_data_request 0x65cc0afc +net/irda/irda irttp_disconnect_request 0x326e4922 +net/irda/irda irttp_dup 0x63101e1b +net/irda/irda irttp_flow_request 0xdadbc644 +net/irda/irda irttp_open_tsap 0xb0dde899 +net/irda/irda irttp_udata_request 0xfbf31767 +net/irda/irda proc_irda 0xfe33710b +net/lapb/lapb lapb_connect_request 0x550990ce +net/lapb/lapb lapb_data_received 0x5232111d +net/lapb/lapb lapb_data_request 0x1d9f3465 +net/lapb/lapb lapb_disconnect_request 0x6b69d70c +net/lapb/lapb lapb_getparms 0x9a960e9f +net/lapb/lapb lapb_register 0x2d68188e +net/lapb/lapb lapb_setparms 0x7bc4f4f2 +net/lapb/lapb lapb_unregister 0x24408c37 +net/netfilter/nfnetlink __nfa_fill 0x5b91acb4 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0x9661523b +net/netfilter/nfnetlink nfnetlink_subsys_register 0xcf496fee +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0xc19cdc80 +net/netfilter/nfnetlink nfnetlink_unicast 0xf8496cde +net/rxrpc/rxrpc rxrpc_add_service 0x06713577 +net/rxrpc/rxrpc rxrpc_call_abort 0x5b9785e5 +net/rxrpc/rxrpc rxrpc_call_read_data 0x7da2e667 +net/rxrpc/rxrpc rxrpc_call_write_data 0xd999d089 +net/rxrpc/rxrpc rxrpc_create_call 0xfb629ab1 +net/rxrpc/rxrpc rxrpc_create_connection 0x9e5d933d +net/rxrpc/rxrpc rxrpc_create_transport 0x9716d995 +net/rxrpc/rxrpc rxrpc_del_service 0xbae9b5da +net/rxrpc/rxrpc rxrpc_put_call 0x18a6e5c9 +net/rxrpc/rxrpc rxrpc_put_connection 0xe66deef3 +net/rxrpc/rxrpc rxrpc_put_transport 0x1fb5eff0 +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x00c52ef5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0xb5dea7ef +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xf8b2ff6e +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0x10ad71a1 +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0x9aa7e410 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0x69f35ea5 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0x23588398 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0xa0adfe53 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0x11da2d5e +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0x1cfa65a1 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0x6cf14121 +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0xe589e0f5 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0xa228f521 +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0xbae98e1d +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0xe1ae5327 +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0x566795cc +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x4c2f4b6d +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x8d1a827e +net/sunrpc/sunrpc auth_domain_find 0xce9b7a1f +net/sunrpc/sunrpc auth_domain_lookup 0xa74157e3 +net/sunrpc/sunrpc auth_domain_put 0xb7e2b4a5 +net/sunrpc/sunrpc auth_unix_add_addr 0xb8520a43 +net/sunrpc/sunrpc auth_unix_forget_old 0x758f9c49 +net/sunrpc/sunrpc auth_unix_lookup 0xd1d4e136 +net/sunrpc/sunrpc cache_check 0xfc26e5a8 +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0xa6f61912 +net/sunrpc/sunrpc cache_init 0xc244025c +net/sunrpc/sunrpc cache_purge 0x1f5650e1 +net/sunrpc/sunrpc cache_register 0xac59877c +net/sunrpc/sunrpc cache_unregister 0xf5fb67d6 +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0x1c94ef5f +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0xfe9a089f +net/sunrpc/sunrpc rpc_bind_new_program 0x343ff9d8 +net/sunrpc/sunrpc rpc_call_async 0xe27a20f6 +net/sunrpc/sunrpc rpc_call_setup 0x9c464831 +net/sunrpc/sunrpc rpc_call_sync 0x9e454b0b +net/sunrpc/sunrpc rpc_clnt_sigmask 0x609e7916 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0x08990e6b +net/sunrpc/sunrpc rpc_clone_client 0xa8f38adc +net/sunrpc/sunrpc rpc_create_client 0x97238272 +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0x09cbeee7 +net/sunrpc/sunrpc rpc_destroy_client 0x80c12128 +net/sunrpc/sunrpc rpc_execute 0x81f76f62 +net/sunrpc/sunrpc rpc_init_task 0xa0206aea +net/sunrpc/sunrpc rpc_init_wait_queue 0x9b8a689d +net/sunrpc/sunrpc rpc_killall_tasks 0x2d289955 +net/sunrpc/sunrpc rpc_max_payload 0x848bd41c +net/sunrpc/sunrpc rpc_mkpipe 0xdc29cba3 +net/sunrpc/sunrpc rpc_new_child 0x27c50e36 +net/sunrpc/sunrpc rpc_new_client 0x3a8309a4 +net/sunrpc/sunrpc rpc_new_task 0xa20131d2 +net/sunrpc/sunrpc rpc_proc_register 0xa65a2cad +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x32ef7807 +net/sunrpc/sunrpc rpc_release_client 0x1ae155f2 +net/sunrpc/sunrpc rpc_release_task 0x2cf58082 +net/sunrpc/sunrpc rpc_restart_call 0x2e138d26 +net/sunrpc/sunrpc rpc_run_child 0x6f8c3ebf +net/sunrpc/sunrpc rpc_setbufsize 0x670910ef +net/sunrpc/sunrpc rpc_shutdown_client 0xb47774be +net/sunrpc/sunrpc rpc_sleep_on 0x2a7af014 +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0x49e5e765 +net/sunrpc/sunrpc rpc_wake_up_next 0x795ff960 +net/sunrpc/sunrpc rpc_wake_up_status 0x4e43d6e5 +net/sunrpc/sunrpc rpc_wake_up_task 0x78212804 +net/sunrpc/sunrpc rpcauth_create 0xd5fe2119 +net/sunrpc/sunrpc rpcauth_free_credcache 0x04de0255 +net/sunrpc/sunrpc rpcauth_init_credcache 0x82e678ab +net/sunrpc/sunrpc rpcauth_lookup_credcache 0x0047fc1d +net/sunrpc/sunrpc rpcauth_lookupcred 0xf46d7d12 +net/sunrpc/sunrpc rpcauth_register 0x3de063e0 +net/sunrpc/sunrpc rpcauth_unregister 0x5d6fca40 +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x4a41d32e +net/sunrpc/sunrpc svc_auth_unregister 0x0f668ba9 +net/sunrpc/sunrpc svc_authenticate 0x59e4c752 +net/sunrpc/sunrpc svc_create 0x68126ecd +net/sunrpc/sunrpc svc_create_thread 0xda2c07cd +net/sunrpc/sunrpc svc_destroy 0xfd332a09 +net/sunrpc/sunrpc svc_drop 0x5448c576 +net/sunrpc/sunrpc svc_exit_thread 0x271ef786 +net/sunrpc/sunrpc svc_makesock 0x310241e1 +net/sunrpc/sunrpc svc_proc_register 0x61c5ca31 +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0xe48e2142 +net/sunrpc/sunrpc svc_recv 0x866bb388 +net/sunrpc/sunrpc svc_reserve 0x927a2bd3 +net/sunrpc/sunrpc svc_seq_show 0x6ca5caa4 +net/sunrpc/sunrpc svc_set_client 0xef9afd3a +net/sunrpc/sunrpc svc_wake_up 0xa8832c1f +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x96946e44 +net/sunrpc/sunrpc xdr_buf_from_iov 0x8712d19b +net/sunrpc/sunrpc xdr_buf_read_netobj 0xf9c6612a +net/sunrpc/sunrpc xdr_buf_subsegment 0xf5f8c6eb +net/sunrpc/sunrpc xdr_decode_array2 0x26c3fab0 +net/sunrpc/sunrpc xdr_decode_netobj 0x1be57115 +net/sunrpc/sunrpc xdr_decode_string 0x6755aa62 +net/sunrpc/sunrpc xdr_decode_string_inplace 0x7bd87272 +net/sunrpc/sunrpc xdr_decode_word 0xc3603fc8 +net/sunrpc/sunrpc xdr_encode_array2 0x290f1da9 +net/sunrpc/sunrpc xdr_encode_netobj 0x29c6f164 +net/sunrpc/sunrpc xdr_encode_opaque 0x0e9e79d5 +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0x587d494b +net/sunrpc/sunrpc xdr_encode_pages 0x4c26fde9 +net/sunrpc/sunrpc xdr_encode_string 0xabc0fe0c +net/sunrpc/sunrpc xdr_encode_word 0x786a1f98 +net/sunrpc/sunrpc xdr_init_decode 0xbb7e3e52 +net/sunrpc/sunrpc xdr_init_encode 0x7091f90e +net/sunrpc/sunrpc xdr_inline_decode 0x0735dcf3 +net/sunrpc/sunrpc xdr_inline_pages 0xc0e6e9ff +net/sunrpc/sunrpc xdr_read_pages 0x247e7310 +net/sunrpc/sunrpc xdr_reserve_space 0x20c5ae84 +net/sunrpc/sunrpc xdr_shift_buf 0x20c676da +net/sunrpc/sunrpc xdr_write_pages 0xe4c14e01 +net/sunrpc/sunrpc xprt_create_proto 0x7870cea1 +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x9d20d394 +net/wanrouter/wanrouter register_wan_device 0x2988fd14 +net/wanrouter/wanrouter unlock_adapter_irq 0xb684b986 +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0x92b78b48 +net/wanrouter/wanrouter wanrouter_type_trans 0x556e5b28 +security/commoncap cap_bprm_apply_creds 0x33a6643c +security/commoncap cap_bprm_secureexec 0x5a9bd149 +security/commoncap cap_bprm_set_security 0x667c6f60 +security/commoncap cap_capable 0x2bd7e09d +security/commoncap cap_capget 0xb8aef044 +security/commoncap cap_capset_check 0xaa4f5dd8 +security/commoncap cap_capset_set 0xc5868b9c +security/commoncap cap_inode_removexattr 0xce3ce834 +security/commoncap cap_inode_setxattr 0xa4518051 +security/commoncap cap_netlink_recv 0x25114759 +security/commoncap cap_netlink_send 0x7beaf41f +security/commoncap cap_ptrace 0x876b34ab +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x372390b2 +security/commoncap cap_task_reparent_to_init 0xccecd6e3 +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x53aea0ad +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-gf1 snd_seq_gf1_init 0x9da48ff9 +sound/core/seq/instr/snd-ainstr-iw snd_seq_iwffff_init 0x5d8aab91 +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x4d76bd13 +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0x9ef01509 +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0xbd20946d +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x286abd12 +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0xb80bcada +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0xf16dbbc3 +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0x4b451ad8 +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x519e8e33 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x7289243b +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0x96dacd0f +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0x97b7d6a4 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0x80862197 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x652e5613 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0xc45d349a +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x20b09520 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x94bcd226 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x2f00b54d +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x8d98548b +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0xc7bd34d4 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0xb9643a3b +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0x83ffda55 +sound/core/snd copy_from_user_toio 0xce3ca308 +sound/core/snd copy_to_user_fromio 0x602c96f0 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0xecede97f +sound/core/snd snd_card_file_add 0xe4ab5d85 +sound/core/snd snd_card_file_remove 0xb2f69cbf +sound/core/snd snd_card_free 0x0ffbbbeb +sound/core/snd snd_card_free_in_thread 0x3388e76a +sound/core/snd snd_card_new 0x3d9bef46 +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0x3f68c466 +sound/core/snd snd_card_register 0x08c3cb85 +sound/core/snd snd_card_set_generic_dev 0xc7c002f8 +sound/core/snd snd_card_set_generic_pm_callback 0x4a261d18 +sound/core/snd snd_card_set_pm_callback 0xd0055ac3 +sound/core/snd snd_cards 0x7ec39ff1 +sound/core/snd snd_component_add 0xe372effc +sound/core/snd snd_ctl_add 0xf8eabe92 +sound/core/snd snd_ctl_elem_read 0x3135dc8f +sound/core/snd snd_ctl_elem_write 0xfb467037 +sound/core/snd snd_ctl_find_id 0x133f61e8 +sound/core/snd snd_ctl_find_numid 0x9636dc16 +sound/core/snd snd_ctl_free_one 0x1b915c62 +sound/core/snd snd_ctl_new 0x3771a49f +sound/core/snd snd_ctl_new1 0xf0c5a512 +sound/core/snd snd_ctl_notify 0xf8e97d82 +sound/core/snd snd_ctl_register_ioctl 0x3ab5aab9 +sound/core/snd snd_ctl_remove 0xd0455091 +sound/core/snd snd_ctl_remove_id 0x98d542d4 +sound/core/snd snd_ctl_rename_id 0xa41e1edd +sound/core/snd snd_ctl_unregister_ioctl 0xede59e89 +sound/core/snd snd_device_free 0x75006c28 +sound/core/snd snd_device_new 0x2c73ad08 +sound/core/snd snd_device_register 0xba688703 +sound/core/snd snd_dma_disable 0x70c15ac1 +sound/core/snd snd_dma_pointer 0x191e88cf +sound/core/snd snd_dma_program 0x18e1683f +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0xe07314ff +sound/core/snd snd_info_create_module_entry 0x0d1afe9c +sound/core/snd snd_info_free_entry 0xe0501efa +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0x08e145c7 +sound/core/snd snd_info_unregister 0xb084bbbc +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0xf4c8fecb +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0x5a860207 +sound/core/snd snd_register_device 0x49d2a75a +sound/core/snd snd_register_oss_device 0x2cc40c5f +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0xe74c1e7a +sound/core/snd snd_unregister_device 0xf2192e05 +sound/core/snd snd_unregister_oss_device 0x55270fd6 +sound/core/snd-hwdep snd_hwdep_new 0x4f909192 +sound/core/snd-page-alloc snd_dma_alloc_pages 0x082d8bee +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0xa38b9cba +sound/core/snd-page-alloc snd_dma_free_pages 0x910b847a +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0xe4c6b525 +sound/core/snd-page-alloc snd_dma_reserve_buf 0x48fffefb +sound/core/snd-page-alloc snd_free_pages 0x3b91f3af +sound/core/snd-page-alloc snd_malloc_pages 0xade88e76 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x0beab9b1 +sound/core/snd-pcm snd_pcm_devices 0x5aee8972 +sound/core/snd-pcm snd_pcm_format_big_endian 0x93878ece +sound/core/snd-pcm snd_pcm_format_linear 0x8733f967 +sound/core/snd-pcm snd_pcm_format_little_endian 0x8bbdc311 +sound/core/snd-pcm snd_pcm_format_name 0xedd5b5bd +sound/core/snd-pcm snd_pcm_format_physical_width 0xa8edfa41 +sound/core/snd-pcm snd_pcm_format_set_silence 0xdf124602 +sound/core/snd-pcm snd_pcm_format_signed 0xe2c5f868 +sound/core/snd-pcm snd_pcm_format_silence_64 0xda29bc77 +sound/core/snd-pcm snd_pcm_format_size 0x6f3fba79 +sound/core/snd-pcm snd_pcm_format_unsigned 0x95a60aa5 +sound/core/snd-pcm snd_pcm_format_width 0x55eb2175 +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0x173e9308 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0xcfed06fc +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0x026c680e +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x7f7af1da +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0x4871d257 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x3031882f +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x7dfe33e3 +sound/core/snd-pcm snd_pcm_hw_constraint_step 0x0937fe39 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0x56fa41e5 +sound/core/snd-pcm snd_pcm_hw_constraints_init 0xe29efa94 +sound/core/snd-pcm snd_pcm_hw_param_first 0xc051adbf +sound/core/snd-pcm snd_pcm_hw_param_last 0x6dfef3d9 +sound/core/snd-pcm snd_pcm_hw_param_mask 0xffdf2786 +sound/core/snd-pcm snd_pcm_hw_param_near 0x9e4ee659 +sound/core/snd-pcm snd_pcm_hw_param_set 0x383e0d2d +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0xa63c66fc +sound/core/snd-pcm snd_pcm_hw_rule_add 0x546bb90e +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0x65ea2fcb +sound/core/snd-pcm snd_pcm_kernel_ioctl 0x3ce786cb +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0xafe04186 +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0x4404519e +sound/core/snd-pcm snd_pcm_lib_free_pages 0xddc0a0e8 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x9aa0b608 +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x004321f2 +sound/core/snd-pcm snd_pcm_lib_mmap_iomem 0x6662e2d2 +sound/core/snd-pcm snd_pcm_lib_period_bytes 0xb7b0b954 +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x79f0a859 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0x8d2a28d8 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0x0c654173 +sound/core/snd-pcm snd_pcm_lib_read 0x1b8113e0 +sound/core/snd-pcm snd_pcm_lib_readv 0x4f5f603a +sound/core/snd-pcm snd_pcm_lib_write 0x338a879f +sound/core/snd-pcm snd_pcm_lib_writev 0x6272952d +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x922bc20d +sound/core/snd-pcm snd_pcm_link_rwlock 0x395e287f +sound/core/snd-pcm snd_pcm_mmap_data 0x485c834e +sound/core/snd-pcm snd_pcm_new 0x33a608d1 +sound/core/snd-pcm snd_pcm_new_stream 0x8e2ca1e8 +sound/core/snd-pcm snd_pcm_notify 0x0641c855 +sound/core/snd-pcm snd_pcm_open_substream 0xb3ebeab3 +sound/core/snd-pcm snd_pcm_period_elapsed 0xbedb2ba2 +sound/core/snd-pcm snd_pcm_release_substream 0x7bb2461c +sound/core/snd-pcm snd_pcm_set_ops 0xad51153a +sound/core/snd-pcm snd_pcm_set_sync 0x482bbf56 +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0xbda93ae3 +sound/core/snd-pcm snd_pcm_stop 0x20615480 +sound/core/snd-pcm snd_pcm_suspend 0xc281726c +sound/core/snd-pcm snd_pcm_suspend_all 0x82422cd2 +sound/core/snd-rawmidi snd_rawmidi_drain_input 0xf49ae7db +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x06b84d5a +sound/core/snd-rawmidi snd_rawmidi_drop_output 0x952dd5ff +sound/core/snd-rawmidi snd_rawmidi_info 0x39260580 +sound/core/snd-rawmidi snd_rawmidi_info_select 0xabf4d6b7 +sound/core/snd-rawmidi snd_rawmidi_input_params 0xe3ab2731 +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x6cacb465 +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0xd84d2151 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0x16cd83b0 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x19ffba19 +sound/core/snd-rawmidi snd_rawmidi_new 0xde2c4c0e +sound/core/snd-rawmidi snd_rawmidi_output_params 0xb3749062 +sound/core/snd-rawmidi snd_rawmidi_receive 0x5b9afee3 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x2b7a7599 +sound/core/snd-rawmidi snd_rawmidi_transmit 0x75087cbf +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x9bde7ab0 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x53963d40 +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0xe9c38a18 +sound/core/snd-timer snd_timer_close 0xba02df71 +sound/core/snd-timer snd_timer_continue 0xd399e403 +sound/core/snd-timer snd_timer_global_free 0x786d82a1 +sound/core/snd-timer snd_timer_global_new 0x950d4c04 +sound/core/snd-timer snd_timer_global_register 0xbf3a3717 +sound/core/snd-timer snd_timer_global_unregister 0xc701f5b1 +sound/core/snd-timer snd_timer_interrupt 0x960df1b8 +sound/core/snd-timer snd_timer_new 0x61756de2 +sound/core/snd-timer snd_timer_notify 0xfca00bd3 +sound/core/snd-timer snd_timer_open 0xf40c4269 +sound/core/snd-timer snd_timer_pause 0x1c0a4b31 +sound/core/snd-timer snd_timer_resolution 0x9471d478 +sound/core/snd-timer snd_timer_start 0x08f6703c +sound/core/snd-timer snd_timer_stop 0xb72bd476 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0xe7ecaf45 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0xe51b8988 +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0xa5169855 +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0x47000844 +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0x6668dbfa +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0x158e4f0c +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0xe9166a3d +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0xbdca94d8 +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0x4a2f3ee9 +sound/drivers/opl4/snd-opl4-lib snd_opl4_create 0xfc9dbe86 +sound/drivers/opl4/snd-opl4-lib snd_opl4_read 0xa34882b2 +sound/drivers/opl4/snd-opl4-lib snd_opl4_read_memory 0x8b49fba1 +sound/drivers/opl4/snd-opl4-lib snd_opl4_write 0xdd8d55c8 +sound/drivers/opl4/snd-opl4-lib snd_opl4_write_memory 0x9c2997ec +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x6a4b129a +sound/drivers/vx/snd-vx-lib snd_vx_create 0xddb2a297 +sound/drivers/vx/snd-vx-lib snd_vx_delay 0x587331fa +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0xb00c7574 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0xc8bd20ac +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0x9d695a22 +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x895b5b98 +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0x1b4d4f2e +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0x6569ae34 +sound/i2c/other/snd-ak4114 snd_ak4114_build 0x54aaf571 +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0x3cb5a79c +sound/i2c/other/snd-ak4114 snd_ak4114_create 0x094e75e7 +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0x38324239 +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0xfdbe94d9 +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0x476ed0fa +sound/i2c/other/snd-ak4117 snd_ak4117_build 0x0b063298 +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0x1e3393e9 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0xea95d98b +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x1e7b757c +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x3c55a5d9 +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x9d1f41e3 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0xfdcc4776 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0x812628e2 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0xd4f6ff02 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0x0be0c2d3 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0x4eecfcf8 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0x20a83321 +sound/i2c/snd-cs8427 snd_cs8427_create 0xb4298677 +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0x9e60b1c5 +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0x9e17d79a +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0xbfaef301 +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0x82981dfb +sound/i2c/snd-cs8427 snd_cs8427_reset 0xc34ff148 +sound/i2c/snd-i2c snd_i2c_bus_create 0x61c29b75 +sound/i2c/snd-i2c snd_i2c_device_create 0x02694056 +sound/i2c/snd-i2c snd_i2c_device_free 0x40448fd4 +sound/i2c/snd-i2c snd_i2c_probeaddr 0x6959af4f +sound/i2c/snd-i2c snd_i2c_readbytes 0xd6ae23cf +sound/i2c/snd-i2c snd_i2c_sendbytes 0xebb2973e +sound/i2c/snd-tea6330t snd_tea6330t_detect 0x7bcf8815 +sound/i2c/snd-tea6330t snd_tea6330t_update_mixer 0xcff72831 +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_create 0xf5acac37 +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_mixer 0xea188ed3 +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_pcm 0x79e69cda +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_add_ctl 0x36905b40 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_create 0xe6f23fd9 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_get_pcm_ops 0x5f06a460 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_mixer 0xdd2529af +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_out 0xb3b60b81 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_pcm 0xb048dacd +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_chip_id 0x88f397d5 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_create 0x62212c73 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_get_double 0xa5423e82 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_get_single 0xf31a3b73 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_in 0xbd441a31 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_info_double 0x4f0c7aab +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_info_single 0xa4cda89e +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_interrupt 0xa2de426c +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mce_down 0xaf18d40e +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mce_up 0xb804500f +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mixer 0x83774b92 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_out 0x9b310801 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_pcm 0xf219a4cf +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_put_double 0x7644a7e5 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_put_single 0x201ca214 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_timer 0xd778de77 +sound/isa/cs423x/snd-cs4231-lib snd_cs4236_ext_in 0xd312e8de +sound/isa/cs423x/snd-cs4231-lib snd_cs4236_ext_out 0x00136be0 +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_create 0x6a6da5bb +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_mixer 0x358ac245 +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_pcm 0x0bb15411 +sound/isa/es1688/snd-es1688-lib snd_es1688_create 0x2d9a3c04 +sound/isa/es1688/snd-es1688-lib snd_es1688_mixer 0xf42b1a8b +sound/isa/es1688/snd-es1688-lib snd_es1688_mixer_write 0x50433427 +sound/isa/es1688/snd-es1688-lib snd_es1688_pcm 0xc7a9efd5 +sound/isa/gus/snd-gus-lib snd_gf1_alloc_voice 0x7294f388 +sound/isa/gus/snd-gus-lib snd_gf1_atten_table 0xc43a5527 +sound/isa/gus/snd-gus-lib snd_gf1_ctrl_stop 0x5cd2f19c +sound/isa/gus/snd-gus-lib snd_gf1_delay 0x5d91a78d +sound/isa/gus/snd-gus-lib snd_gf1_dram_addr 0x789425f6 +sound/isa/gus/snd-gus-lib snd_gf1_free_voice 0x05f37b62 +sound/isa/gus/snd-gus-lib snd_gf1_i_look16 0x1e0ce2fc +sound/isa/gus/snd-gus-lib snd_gf1_i_look8 0x50123826 +sound/isa/gus/snd-gus-lib snd_gf1_i_write8 0xcf8b644c +sound/isa/gus/snd-gus-lib snd_gf1_look16 0xadb5ad38 +sound/isa/gus/snd-gus-lib snd_gf1_look8 0xe563fbe2 +sound/isa/gus/snd-gus-lib snd_gf1_lvol_to_gvol_raw 0x46db8d67 +sound/isa/gus/snd-gus-lib snd_gf1_mem_alloc 0x8bd86f51 +sound/isa/gus/snd-gus-lib snd_gf1_mem_free 0x192bc917 +sound/isa/gus/snd-gus-lib snd_gf1_mem_lock 0x20229a76 +sound/isa/gus/snd-gus-lib snd_gf1_mem_xfree 0xfed37cde +sound/isa/gus/snd-gus-lib snd_gf1_new_mixer 0x31b1806f +sound/isa/gus/snd-gus-lib snd_gf1_pcm_new 0x723d63e2 +sound/isa/gus/snd-gus-lib snd_gf1_peek 0xc2c9fe17 +sound/isa/gus/snd-gus-lib snd_gf1_poke 0xb021a7de +sound/isa/gus/snd-gus-lib snd_gf1_rawmidi_new 0x1a94d7f7 +sound/isa/gus/snd-gus-lib snd_gf1_stop_voice 0x9d4cae46 +sound/isa/gus/snd-gus-lib snd_gf1_translate_freq 0x4d7560eb +sound/isa/gus/snd-gus-lib snd_gf1_write16 0xaede06f7 +sound/isa/gus/snd-gus-lib snd_gf1_write8 0x1f339ad0 +sound/isa/gus/snd-gus-lib snd_gf1_write_addr 0xfe58d583 +sound/isa/gus/snd-gus-lib snd_gus_create 0xd47c29ff +sound/isa/gus/snd-gus-lib snd_gus_dram_read 0xad77dec3 +sound/isa/gus/snd-gus-lib snd_gus_dram_write 0xc6e43397 +sound/isa/gus/snd-gus-lib snd_gus_initialize 0x875cb1f5 +sound/isa/gus/snd-gus-lib snd_gus_interrupt 0xe8226527 +sound/isa/gus/snd-gus-lib snd_gus_use_dec 0x592d39fd +sound/isa/gus/snd-gus-lib snd_gus_use_inc 0x376329e5 +sound/isa/sb/snd-sb-common snd_sbdsp_command 0x5b529115 +sound/isa/sb/snd-sb-common snd_sbdsp_create 0x058323e4 +sound/isa/sb/snd-sb-common snd_sbdsp_get_byte 0x200f1e1a +sound/isa/sb/snd-sb-common snd_sbdsp_reset 0x0840314f +sound/isa/sb/snd-sb-common snd_sbmixer_add_ctl 0xd62963e3 +sound/isa/sb/snd-sb-common snd_sbmixer_new 0xb433b4b5 +sound/isa/sb/snd-sb-common snd_sbmixer_read 0x9ec9a7c0 +sound/isa/sb/snd-sb-common snd_sbmixer_write 0x9e61622a +sound/isa/sb/snd-sb16-csp snd_sb_csp_new 0x12e7c60f +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_configure 0x1cf438b6 +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_get_pcm_ops 0xc4e92d76 +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_interrupt 0x89f51d7b +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_pcm 0xa84c4199 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_interrupt 0xc489b47e +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_midi 0xcd95ae79 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_midi_interrupt 0xcc27044a +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_pcm 0xf73b6785 +sound/isa/sb/snd-sbawe snd_emu8000_dma_chan 0x6fa8bc8f +sound/isa/sb/snd-sbawe snd_emu8000_init_fm 0x90ed0281 +sound/isa/sb/snd-sbawe snd_emu8000_load_chorus_fx 0xa0ee7ca4 +sound/isa/sb/snd-sbawe snd_emu8000_load_reverb_fx 0xe09aab72 +sound/isa/sb/snd-sbawe snd_emu8000_peek 0x04f66ea3 +sound/isa/sb/snd-sbawe snd_emu8000_peek_dw 0x4345e03e +sound/isa/sb/snd-sbawe snd_emu8000_poke 0x50679e53 +sound/isa/sb/snd-sbawe snd_emu8000_poke_dw 0xb120ce76 +sound/isa/sb/snd-sbawe snd_emu8000_update_chorus_mode 0x364cc3e2 +sound/isa/sb/snd-sbawe snd_emu8000_update_equalizer 0x276d21ca +sound/isa/sb/snd-sbawe snd_emu8000_update_reverb_mode 0xf1171ff5 +sound/oss/ac97_codec ac97_alloc_codec 0x68d8dbe9 +sound/oss/ac97_codec ac97_probe_codec 0xb2c62f5a +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0x9eb12877 +sound/oss/ac97_codec ac97_release_codec 0x79f0c796 +sound/oss/ac97_codec ac97_restore_state 0x69f6ad10 +sound/oss/ac97_codec ac97_save_state 0x0bba42d0 +sound/oss/ac97_codec ac97_set_adc_rate 0xb34f5352 +sound/oss/ac97_codec ac97_set_dac_rate 0x6f79f5ac +sound/oss/ac97_codec ac97_tune_hardware 0x0cbd08fe +sound/oss/ac97_codec ac97_unregister_driver 0x859b2874 +sound/oss/aci aci_port 0x0d82adb6 +sound/oss/aci aci_rw_cmd 0xcc7c4cd8 +sound/oss/aci aci_version 0x93350c87 +sound/oss/ad1848 ad1848_control 0xc04f6f67 +sound/oss/ad1848 ad1848_detect 0x845a1638 +sound/oss/ad1848 ad1848_init 0x20163202 +sound/oss/ad1848 ad1848_unload 0x9bf1cc62 +sound/oss/ad1848 adintr 0x509bfb25 +sound/oss/ad1848 attach_ms_sound 0xd5ad8480 +sound/oss/ad1848 probe_ms_sound 0x65e6d1ca +sound/oss/ad1848 unload_ms_sound 0xb29a9148 +sound/oss/mpu401 attach_mpu401 0x318aec65 +sound/oss/mpu401 intchk_mpu401 0x5fe6dd42 +sound/oss/mpu401 mpuintr 0x48dfd0bc +sound/oss/mpu401 probe_mpu401 0x5c8d3e32 +sound/oss/mpu401 unload_mpu401 0x5febf284 +sound/oss/opl3 opl3_detect 0x67481767 +sound/oss/opl3 opl3_init 0xa6bb8ee8 +sound/oss/sb_lib probe_sbmpu 0xc673a2a6 +sound/oss/sb_lib sb_be_quiet 0x42424109 +sound/oss/sb_lib sb_dsp_detect 0xd8a2731c +sound/oss/sb_lib sb_dsp_init 0xa4696807 +sound/oss/sb_lib sb_dsp_unload 0xc4884969 +sound/oss/sb_lib smw_free 0x450f9aea +sound/oss/sb_lib unload_sbmpu 0x74afd69c +sound/oss/sound DMAbuf_close_dma 0xc88b42ab +sound/oss/sound DMAbuf_inputintr 0xeb315d99 +sound/oss/sound DMAbuf_open_dma 0x06b3013d +sound/oss/sound DMAbuf_outputintr 0x987bcf12 +sound/oss/sound DMAbuf_start_dma 0xe056b71c +sound/oss/sound MIDIbuf_avail 0x1f395686 +sound/oss/sound audio_devs 0x85a04acf +sound/oss/sound cent_tuning 0x03ce7ff7 +sound/oss/sound compute_finetune 0x04c87ec8 +sound/oss/sound conf_printf 0x0f280035 +sound/oss/sound conf_printf2 0x7bdf0907 +sound/oss/sound do_midi_msg 0xb51587f6 +sound/oss/sound load_mixer_volumes 0xa1d5f04f +sound/oss/sound midi_devs 0x919e8ec6 +sound/oss/sound midi_synth_aftertouch 0xf1ea8a20 +sound/oss/sound midi_synth_bender 0xba7dd041 +sound/oss/sound midi_synth_close 0xad45df73 +sound/oss/sound midi_synth_controller 0x892093e0 +sound/oss/sound midi_synth_hw_control 0xb14b22cd +sound/oss/sound midi_synth_ioctl 0xaef743b2 +sound/oss/sound midi_synth_kill_note 0x2aa31695 +sound/oss/sound midi_synth_load_patch 0xf7426da3 +sound/oss/sound midi_synth_open 0xf6b3a2fb +sound/oss/sound midi_synth_panning 0xdb400afa +sound/oss/sound midi_synth_reset 0x56504ca2 +sound/oss/sound midi_synth_send_sysex 0xfddcbfb3 +sound/oss/sound midi_synth_set_instr 0xd85be938 +sound/oss/sound midi_synth_setup_voice 0x4ff47e9d +sound/oss/sound midi_synth_start_note 0x9bdaf24d +sound/oss/sound mixer_devs 0x57f2d11d +sound/oss/sound note_to_freq 0x5d986fc9 +sound/oss/sound num_audiodevs 0x4cd01bdd +sound/oss/sound num_midis 0xa1eae7cf +sound/oss/sound num_mixers 0x9d845b18 +sound/oss/sound semitone_tuning 0x8b84aeb1 +sound/oss/sound seq_copy_to_input 0x7679ee76 +sound/oss/sound seq_input_event 0x17ba231d +sound/oss/sound sequencer_init 0xf78f6363 +sound/oss/sound sequencer_timer 0x90bd9714 +sound/oss/sound sound_alloc_dma 0x9a95733f +sound/oss/sound sound_alloc_mididev 0xba413f87 +sound/oss/sound sound_alloc_mixerdev 0x1b3df3cf +sound/oss/sound sound_alloc_synthdev 0xc748d109 +sound/oss/sound sound_alloc_timerdev 0x51e354b2 +sound/oss/sound sound_close_dma 0x418f5fbe +sound/oss/sound sound_free_dma 0x394cb088 +sound/oss/sound sound_install_audiodrv 0x2f22814d +sound/oss/sound sound_install_mixer 0x5faed79c +sound/oss/sound sound_open_dma 0xcc4b8797 +sound/oss/sound sound_timer_devs 0x8ce36433 +sound/oss/sound sound_timer_init 0x2161d5e8 +sound/oss/sound sound_timer_interrupt 0xe2675a79 +sound/oss/sound sound_timer_syncinterval 0xfa6871be +sound/oss/sound sound_unload_audiodev 0xa948751e +sound/oss/sound sound_unload_mididev 0xa6bb414c +sound/oss/sound sound_unload_mixerdev 0xa51c913b +sound/oss/sound sound_unload_synthdev 0x06339815 +sound/oss/sound sound_unload_timerdev 0xa41ead5f +sound/oss/sound synth_devs 0x8bea8c4b +sound/oss/uart401 probe_uart401 0xc9ab8c01 +sound/oss/uart401 uart401intr 0x5df70158 +sound/oss/uart401 unload_uart401 0xecfdd9c9 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x5dc2cd3b +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0xb0030327 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0x6e4984af +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0x7e8ecd9d +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0xc4216c9b +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x4f789c74 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0xb497097e +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0xeeeae37f +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0x601d4073 +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0x53ebf281 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0xc34d444f +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0xc2f806b5 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0xdb5d8b97 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0x6ab6255f +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0xd5d00623 +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0xb9afbc49 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0x96bfdcce +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0xc027426b +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0x0fd64f14 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x6877f414 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0xed8508f4 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0x9b6f1870 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0x7a5f51f7 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0x3fbf0c5b +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0x45ac0bfe +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0xf3001683 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0xbcc38bf0 +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0x378c9d60 +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0x5485a3f1 +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0xcb759203 +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0x0399530e +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0xc24f73d4 +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0x8c820175 +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x939517de +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0x199924c4 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0xcdb28c32 +sound/pci/hda/snd-hda-codec snd_hda_resume 0x92ceada9 +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0x013ec4cf +sound/pci/hda/snd-hda-codec snd_hda_suspend 0x98be7dc6 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0xf7a55920 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0x643c11a8 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0xcc637805 +sound/pci/trident/snd-trident snd_trident_alloc_voice 0x158d49f0 +sound/pci/trident/snd-trident snd_trident_free_voice 0xa7c68009 +sound/pci/trident/snd-trident snd_trident_start_voice 0xd5721fb7 +sound/pci/trident/snd-trident snd_trident_stop_voice 0x9618d199 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0xb3df91ff +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0x0e21d0e6 +sound/pci/trident/snd-trident snd_trident_synth_free 0xfd661728 +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0xfab75c7b +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0x2279f88b +sound/soundcore register_sound_midi 0xeb904d13 +sound/soundcore register_sound_mixer 0x5e020b72 +sound/soundcore register_sound_special 0x794ddf05 +sound/soundcore register_sound_special_device 0xa060aa7b +sound/soundcore register_sound_synth 0x44d9130d +sound/soundcore sound_class 0x4a686fc3 +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +sound/synth/emux/snd-emux-synth snd_emux_free 0x2549d575 +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0x0f627100 +sound/synth/emux/snd-emux-synth snd_emux_new 0xe11e532c +sound/synth/emux/snd-emux-synth snd_emux_register 0x3e49b426 +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0x29bc3803 +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0xbaee35bc +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0xa2615fb1 +sound/synth/snd-util-mem __snd_util_mem_free 0x60729ec6 +sound/synth/snd-util-mem __snd_util_memblk_new 0xf335545c +sound/synth/snd-util-mem snd_util_mem_alloc 0x951e2c2d +sound/synth/snd-util-mem snd_util_mem_avail 0x789c663d +sound/synth/snd-util-mem snd_util_mem_free 0xc74425e6 +sound/synth/snd-util-mem snd_util_memhdr_free 0xc568f31a +sound/synth/snd-util-mem snd_util_memhdr_new 0xab768b60 +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0x027fbd37 +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux EISA_bus 0x7413793a +vmlinux IO_APIC_get_PCI_irq_vector 0x1eb922a3 +vmlinux I_BDEV 0xa7529625 +vmlinux MCA_bus 0xf48a2c4c +vmlinux SELECT_DRIVE 0x090ae94d +vmlinux __PAGE_KERNEL 0x95cc2139 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0x33351812 +vmlinux __alloc_pages 0xf0d3f2a3 +vmlinux __alloc_skb 0xb9685958 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0xb74364a6 +vmlinux __bio_clone 0x95a40d9e +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0x7b895958 +vmlinux __bread 0x8a4e77b6 +vmlinux __breadahead 0x20257d58 +vmlinux __break_lease 0xdb641ea3 +vmlinux __brelse 0xbbc3ff9f +vmlinux __check_region 0xf1d0cdab +vmlinux __clear_user 0x2455c156 +vmlinux __const_udelay 0xeae3dfd6 +vmlinux __copy_from_user_ll 0x1af40e18 +vmlinux __copy_to_user_ll 0xd7474566 +vmlinux __cpufreq_driver_target 0x28b54f06 +vmlinux __create_workqueue 0x3ebb6e8d +vmlinux __d_path 0x13d2b809 +vmlinux __delay 0x466c14a7 +vmlinux __dev_get_by_index 0x5740d38a +vmlinux __dev_get_by_name 0xda2a88b0 +vmlinux __dev_remove_pack 0xc1d9ba16 +vmlinux __down_failed 0x96b27088 +vmlinux __down_failed_interruptible 0x625acc81 +vmlinux __down_failed_trylock 0x02cd3086 +vmlinux __dst_free 0x59ceb030 +vmlinux __elv_add_request 0x27941699 +vmlinux __find_get_block 0x80e49909 +vmlinux __free_pages 0x55ec7cf1 +vmlinux __generic_file_aio_read 0xcd07c06f +vmlinux __generic_unplug_device 0x5d548b4b +vmlinux __get_free_pages 0x107d6ba3 +vmlinux __get_user_1 0xd16ac615 +vmlinux __get_user_2 0x4888a014 +vmlinux __get_user_4 0xa03d6a57 +vmlinux __getblk 0x94b7446d +vmlinux __ide_abort 0x79ee9335 +vmlinux __ide_dma_bad_drive 0xb976dd85 +vmlinux __ide_dma_check 0xeb5c2ac4 +vmlinux __ide_dma_end 0x7aea01e1 +vmlinux __ide_dma_good_drive 0x2ebf4447 +vmlinux __ide_dma_host_off 0x7436830b +vmlinux __ide_dma_host_on 0x9a194f66 +vmlinux __ide_dma_lostirq 0x89ce3995 +vmlinux __ide_dma_off 0xb1bf4b60 +vmlinux __ide_dma_off_quietly 0x3d4c7390 +vmlinux __ide_dma_on 0xa9ea9ade +vmlinux __ide_dma_timeout 0x0618f6f1 +vmlinux __ide_end_request 0x1c25196a +vmlinux __ide_error 0x2830eef7 +vmlinux __ide_pci_register_driver 0xdf19d0b4 +vmlinux __inet_lookup_listener 0xc1aa326f +vmlinux __inet_twsk_hashdance 0x8ccebd1f +vmlinux __inet_twsk_kill 0xa56658a5 +vmlinux __init_timer_base 0x82f04785 +vmlinux __inode_dir_notify 0x9bf6903f +vmlinux __insert_inode_hash 0xfcb1c613 +vmlinux __invalidate_device 0x205e133a +vmlinux __ioremap 0x9eac042a +vmlinux __ip_route_output_key 0x82f92bfd +vmlinux __ip_select_ident 0x355473cc +vmlinux __kfifo_get 0x043b8483 +vmlinux __kfifo_put 0xaa527612 +vmlinux __kfree_skb 0x7c8136d2 +vmlinux __kill_fasync 0x11732459 +vmlinux __kmalloc 0x12da5bb2 +vmlinux __lock_buffer 0x7f4f5eec +vmlinux __lock_page 0x2e7ab614 +vmlinux __mark_inode_dirty 0x20709e46 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xe051a0ac +vmlinux __module_put_and_exit 0x2844cd51 +vmlinux __ndelay 0xdf8c695a +vmlinux __neigh_event_send 0xbf2efe21 +vmlinux __neigh_for_each_release 0x93f014d0 +vmlinux __net_timestamp 0x8b7a3706 +vmlinux __netdev_watchdog_up 0x437e3b8e +vmlinux __nla_put 0xf23ebb03 +vmlinux __nla_reserve 0x9eadb6a7 +vmlinux __page_cache_release 0xe23d0cbd +vmlinux __pagevec_lru_add 0xc03879b2 +vmlinux __pagevec_release 0xefba851d +vmlinux __pci_register_driver 0xb53df399 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0x8b0a1ba6 +vmlinux __put_user_1 0xc3aaf0a9 +vmlinux __put_user_2 0x5a4896a8 +vmlinux __put_user_4 0xb2fd5ceb +vmlinux __put_user_8 0xb8e7ce2c +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0xa2689429 +vmlinux __scm_destroy 0x6dd69ef0 +vmlinux __scm_send 0xed627060 +vmlinux __secpath_destroy 0x61369892 +vmlinux __serio_register_driver 0xe4eae07f +vmlinux __serio_register_port 0x30f23d88 +vmlinux __serio_unregister_port_delayed 0x4b509d4b +vmlinux __set_page_dirty_buffers 0xcd548f59 +vmlinux __set_page_dirty_nobuffers 0xb1da91dc +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x3b443a61 +vmlinux __skb_checksum_complete 0x1bd95fda +vmlinux __skb_linearize 0x6263831d +vmlinux __strncpy_from_user 0x9a78a84c +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x60ea5fe7 +vmlinux __tasklet_schedule 0xed5c73bf +vmlinux __tcf_em_tree_match 0xc18ab608 +vmlinux __udelay 0x9e7d6bd0 +vmlinux __up_wakeup 0x60a4461c +vmlinux __user_walk 0x1b456155 +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0x7700acb5 +vmlinux __wait_on_bit_lock 0xd06e4ca3 +vmlinux __wait_on_buffer 0x19b56dae +vmlinux __wake_up 0xc281c899 +vmlinux __wake_up_bit 0x7e444100 +vmlinux __wake_up_sync 0x0d6fb450 +vmlinux __xfrm_policy_check 0x2a7469ac +vmlinux __xfrm_policy_destroy 0x71f178f7 +vmlinux __xfrm_route_forward 0x3a354262 +vmlinux __xfrm_state_destroy 0xa583ad5b +vmlinux _atomic_dec_and_lock 0x1edc9598 +vmlinux _ctype 0x8d3894f2 +vmlinux acpi_acquire_global_lock 0x70d8ab82 +vmlinux acpi_bus_add 0x1f9f6224 +vmlinux acpi_bus_generate_event 0xd3095d7e +vmlinux acpi_bus_get_device 0xc18e8ac2 +vmlinux acpi_bus_get_power 0x7389c9a8 +vmlinux acpi_bus_get_status 0x99b3b068 +vmlinux acpi_bus_receive_event 0x141dbf9b +vmlinux acpi_bus_register_driver 0x792997d8 +vmlinux acpi_bus_set_power 0xcb733bf2 +vmlinux acpi_bus_start 0x3b59974e +vmlinux acpi_bus_unregister_driver 0xeaaf85e6 +vmlinux acpi_clear_event 0x0fd00a68 +vmlinux acpi_dbg_layer 0xb3284531 +vmlinux acpi_dbg_level 0xca8acc78 +vmlinux acpi_disable_event 0xb758b225 +vmlinux acpi_disabled 0x1a45cb6c +vmlinux acpi_ec_read 0xfe9c8fb3 +vmlinux acpi_ec_write 0x4257cf66 +vmlinux acpi_enable_event 0x6237f6b5 +vmlinux acpi_enable_gpe 0xf47d47e0 +vmlinux acpi_enter_sleep_state 0xb077ef32 +vmlinux acpi_enter_sleep_state_s4bios 0xa5da0abd +vmlinux acpi_evaluate_integer 0x1807e38b +vmlinux acpi_evaluate_object 0xd0470c98 +vmlinux acpi_evaluate_reference 0xc899f5f6 +vmlinux acpi_extract_package 0xe93cc1b3 +vmlinux acpi_fadt 0xddcb58d9 +vmlinux acpi_fadt_is_v1 0x01438985 +vmlinux acpi_get_child 0xda268faa +vmlinux acpi_get_current_resources 0xcf47e392 +vmlinux acpi_get_devices 0xee46feef +vmlinux acpi_get_firmware_table 0x5331e1b5 +vmlinux acpi_get_handle 0x2bfeb410 +vmlinux acpi_get_name 0xca6c95f8 +vmlinux acpi_get_next_object 0x170c25ee +vmlinux acpi_get_object_info 0x96f929e9 +vmlinux acpi_get_parent 0xfb0443fb +vmlinux acpi_get_pci_id 0x058c75d9 +vmlinux acpi_get_pci_rootbridge_handle 0x1f8ec1b3 +vmlinux acpi_get_physical_device 0xafe8334a +vmlinux acpi_get_register 0x2b5d6f73 +vmlinux acpi_get_sleep_type_data 0x8d8d96c6 +vmlinux acpi_get_table 0x2eb2eb15 +vmlinux acpi_get_type 0x0d3dda14 +vmlinux acpi_in_suspend 0xf78a658e +vmlinux acpi_install_address_space_handler 0xff03752f +vmlinux acpi_install_fixed_event_handler 0x5ac376a5 +vmlinux acpi_install_gpe_block 0xda8ddbdf +vmlinux acpi_install_gpe_handler 0x02aff2f4 +vmlinux acpi_install_notify_handler 0xd9091363 +vmlinux acpi_os_create_semaphore 0x9f8733e2 +vmlinux acpi_os_delete_semaphore 0xe65a005c +vmlinux acpi_os_free 0x43b9bbb4 +vmlinux acpi_os_printf 0x667cecc9 +vmlinux acpi_os_queue_for_execution 0xdb9d67ff +vmlinux acpi_os_read_pci_configuration 0xd94c1770 +vmlinux acpi_os_read_port 0x54935666 +vmlinux acpi_os_signal 0x874aea72 +vmlinux acpi_os_signal_semaphore 0x8cdbc08d +vmlinux acpi_os_sleep 0x540f9040 +vmlinux acpi_os_stall 0x69005013 +vmlinux acpi_os_wait_events_complete 0xc9ab2eef +vmlinux acpi_os_wait_semaphore 0x2565a159 +vmlinux acpi_os_write_port 0x99052a84 +vmlinux acpi_pci_irq_enable 0x0dc1ad4c +vmlinux acpi_pci_register_driver 0xd1472061 +vmlinux acpi_pci_unregister_driver 0x43385ad9 +vmlinux acpi_processor_power_init_bm_check 0xfdce9842 +vmlinux acpi_register_gsi 0x36d5355b +vmlinux acpi_register_ioapic 0x636a5691 +vmlinux acpi_release_global_lock 0x3e2ae3a8 +vmlinux acpi_remove_address_space_handler 0xfcfaa928 +vmlinux acpi_remove_fixed_event_handler 0x2005e68a +vmlinux acpi_remove_gpe_block 0x8e002cda +vmlinux acpi_remove_gpe_handler 0xb07dfb3d +vmlinux acpi_remove_notify_handler 0x2bb55d6e +vmlinux acpi_resource_to_address64 0x263b54cc +vmlinux acpi_root_dir 0x90b425fc +vmlinux acpi_set_current_resources 0x45bb0352 +vmlinux acpi_set_gpe_type 0xa3bbcd80 +vmlinux acpi_set_register 0x4a9d86e3 +vmlinux acpi_specific_hotkey_enabled 0x46621493 +vmlinux acpi_strict 0xa59c0666 +vmlinux acpi_unregister_ioapic 0xe716baed +vmlinux acpi_walk_namespace 0x19d5d20a +vmlinux acpi_walk_resources 0x375c5115 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0x7bfd01d5 +vmlinux add_disk_randomness 0xba46511c +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0xe171be87 +vmlinux add_wait_queue 0xab8f2178 +vmlinux add_wait_queue_exclusive 0xa8c6b298 +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0xccd4de4a +vmlinux aio_put_req 0xac063305 +vmlinux alloc_buffer_head 0xab3a7967 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0x7c2bb2ca +vmlinux alloc_disk_node 0x9770839a +vmlinux alloc_etherdev 0x41a5bdba +vmlinux alloc_fcdev 0x0afd92a3 +vmlinux alloc_fddidev 0x3259361e +vmlinux alloc_hippi_dev 0xd44d1943 +vmlinux alloc_netdev 0xf23f71bd +vmlinux alloc_page_buffers 0x48a2538e +vmlinux alloc_trdev 0xe4b0153d +vmlinux alloc_tty_driver 0x625d785f +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0x49659ae4 +vmlinux anon_transport_class_unregister 0x9b87b973 +vmlinux apm_info 0x1d40ed44 +vmlinux arch_acpi_processor_init_pdc 0xad25c01d +vmlinux arp_broken_ops 0xb3db9dbd +vmlinux arp_create 0x2028f5b4 +vmlinux arp_find 0x1648051c +vmlinux arp_rcv 0xb8d47694 +vmlinux arp_send 0x0a197077 +vmlinux arp_tbl 0xfc9fced5 +vmlinux arp_xmit 0xb25a8f03 +vmlinux atm_alloc_charge 0x14555cb2 +vmlinux atm_charge 0x3df85fe7 +vmlinux atm_dev_deregister 0x01034cf8 +vmlinux atm_dev_lookup 0xc56d662c +vmlinux atm_dev_register 0x9020b1ab +vmlinux atm_init_aal5 0x4d8fb8e8 +vmlinux atm_pcr_goal 0xf49bc67a +vmlinux atm_proc_root 0xc827ba3c +vmlinux attribute_container_add_attrs 0x9a1869a8 +vmlinux attribute_container_add_class_device 0x88fbfabc +vmlinux attribute_container_add_class_device_adapter 0x0c5fefc7 +vmlinux attribute_container_class_device_del 0x9ad3359c +vmlinux attribute_container_classdev_to_container 0x7d0bfa81 +vmlinux attribute_container_device_trigger 0x0bf7a460 +vmlinux attribute_container_find_class_device 0x529ccb3b +vmlinux attribute_container_register 0xf1a6df1c +vmlinux attribute_container_remove_attrs 0x88134967 +vmlinux attribute_container_remove_device 0x6aceb5bc +vmlinux attribute_container_trigger 0x6faec7ab +vmlinux attribute_container_unregister 0x9f5f96ab +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0xcf765fcb +vmlinux bd_claim 0xbe5ee6c1 +vmlinux bd_release 0xbb3e8ab1 +vmlinux bd_set_size 0x1eeac8f4 +vmlinux bdev_read_only 0x9f39a35a +vmlinux bdevname 0x257a396e +vmlinux bdget 0xeb0b9e12 +vmlinux bdput 0xd868ecbd +vmlinux bfifo_qdisc_ops 0xddd6d96d +vmlinux bio_add_page 0x53fb6d85 +vmlinux bio_alloc 0x3dec2373 +vmlinux bio_alloc_bioset 0xd571db6e +vmlinux bio_clone 0x8913aa58 +vmlinux bio_copy_user 0x6e46aa10 +vmlinux bio_endio 0xdcfe0e16 +vmlinux bio_free 0x72584bf8 +vmlinux bio_get_nr_vecs 0x49bea32e +vmlinux bio_hw_segments 0x77de73a9 +vmlinux bio_init 0xf4795d1c +vmlinux bio_map_kern 0x26e12c40 +vmlinux bio_map_user 0x4d9623e6 +vmlinux bio_pair_release 0xeafa46f2 +vmlinux bio_phys_segments 0x9115274c +vmlinux bio_put 0x73b17d98 +vmlinux bio_split 0xfe0ca7ea +vmlinux bio_split_pool 0x27b47413 +vmlinux bio_uncopy_user 0xd44b4435 +vmlinux bio_unmap_user 0x3f60bfd6 +vmlinux bioset_create 0x1c875572 +vmlinux bioset_free 0x661e6ec8 +vmlinux bit_waitqueue 0x43070fdd +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0x9eb6f208 +vmlinux blk_alloc_queue_node 0x4271df90 +vmlinux blk_cleanup_queue 0xe02ddae6 +vmlinux blk_complete_barrier_rq 0xea1b84fb +vmlinux blk_complete_barrier_rq_locked 0xa2fbb91a +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x952bfc30 +vmlinux blk_end_sync_rq 0xb5093fed +vmlinux blk_execute_rq 0x48d6a304 +vmlinux blk_get_backing_dev_info 0x5cde6e50 +vmlinux blk_get_queue 0x7008476d +vmlinux blk_get_request 0x022f5a76 +vmlinux blk_init_queue 0xe0179687 +vmlinux blk_init_queue_node 0xbd90032c +vmlinux blk_insert_request 0x9f0753fc +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0xfddd504a +vmlinux blk_put_request 0x41e21ea1 +vmlinux blk_queue_activity_fn 0x3e2f7e08 +vmlinux blk_queue_bounce 0xd5d33c08 +vmlinux blk_queue_bounce_limit 0xa80f360d +vmlinux blk_queue_dma_alignment 0x259336c7 +vmlinux blk_queue_end_tag 0x74edd0d5 +vmlinux blk_queue_find_tag 0x780cac7c +vmlinux blk_queue_free_tags 0xa7a130a6 +vmlinux blk_queue_hardsect_size 0x2486196d +vmlinux blk_queue_init_tags 0x6bd0f54e +vmlinux blk_queue_invalidate_tags 0xbd168c55 +vmlinux blk_queue_issue_flush_fn 0xcd4f1ce3 +vmlinux blk_queue_make_request 0xd4aa6175 +vmlinux blk_queue_max_hw_segments 0x96367282 +vmlinux blk_queue_max_phys_segments 0x5055c8fe +vmlinux blk_queue_max_sectors 0xc8863f14 +vmlinux blk_queue_max_segment_size 0x0a362319 +vmlinux blk_queue_merge_bvec 0x70275c32 +vmlinux blk_queue_ordered 0x3215d55e +vmlinux blk_queue_prep_rq 0x80b61485 +vmlinux blk_queue_resize_tags 0x887085c9 +vmlinux blk_queue_segment_boundary 0xf166af82 +vmlinux blk_queue_stack_limits 0x870b03bf +vmlinux blk_queue_start_tag 0xd9e6f55a +vmlinux blk_register_region 0x1067f9fb +vmlinux blk_remove_plug 0xe0e90af7 +vmlinux blk_requeue_request 0xc8cc4bb5 +vmlinux blk_rq_bio_prep 0x532298d8 +vmlinux blk_rq_map_kern 0x91135d09 +vmlinux blk_rq_map_sg 0x9d77df4a +vmlinux blk_rq_map_user 0x229fe2d5 +vmlinux blk_rq_map_user_iov 0xc5b76890 +vmlinux blk_rq_unmap_user 0x7ba1ce53 +vmlinux blk_run_queue 0xfe94cae1 +vmlinux blk_start_queue 0x99999381 +vmlinux blk_stop_queue 0x71d46a77 +vmlinux blk_sync_queue 0xded65c25 +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0x81dd64b1 +vmlinux blkdev_ioctl 0x63f8f9f0 +vmlinux blkdev_issue_flush 0x1ef8c189 +vmlinux blkdev_put 0x16d6562b +vmlinux block_all_signals 0x4b34fbf5 +vmlinux block_commit_write 0x52796ddb +vmlinux block_invalidatepage 0x9d291518 +vmlinux block_prepare_write 0x4a9566d3 +vmlinux block_read_full_page 0x61d3512f +vmlinux block_sync_page 0x4029fe17 +vmlinux block_truncate_page 0xc95d3b5a +vmlinux block_write_full_page 0x20a9c75d +vmlinux bmap 0xc0f2c26b +vmlinux boot_cpu_data 0x3fe54794 +vmlinux boot_option_idle_override 0xef9aedfc +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0x14ad2457 +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0x45d3491e +vmlinux bus_create_file 0x30107cc8 +vmlinux bus_find_device 0xc04d8214 +vmlinux bus_for_each_dev 0x0fec0c0c +vmlinux bus_for_each_drv 0xa77e7648 +vmlinux bus_register 0xd447d2f7 +vmlinux bus_remove_device 0x2c6bf796 +vmlinux bus_remove_file 0x07356adf +vmlinux bus_rescan_devices 0x93552190 +vmlinux bus_unregister 0x12cfe5bf +vmlinux call_rcu 0x8706fba7 +vmlinux call_rcu_bh 0xc329096e +vmlinux call_usermodehelper_keys 0xfdc66cf6 +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0xa3295cdc +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x73f06405 +vmlinux cdev_alloc 0x87dbc5aa +vmlinux cdev_del 0xce469351 +vmlinux cdev_init 0xecbcf677 +vmlinux cfb_copyarea 0xc5327de4 +vmlinux cfb_fillrect 0x11657948 +vmlinux cfb_imageblit 0xeb1d2880 +vmlinux change_page_attr 0x8433956c +vmlinux check_disk_change 0x149a2964 +vmlinux class_create 0x80309cd5 +vmlinux class_create_file 0xbcff9fd7 +vmlinux class_destroy 0x42fd3c3d +vmlinux class_device_add 0xb0075b52 +vmlinux class_device_create 0xdfda51f8 +vmlinux class_device_create_bin_file 0x7474986e +vmlinux class_device_create_file 0x77344bf3 +vmlinux class_device_del 0xbf1112b0 +vmlinux class_device_destroy 0x048b2470 +vmlinux class_device_get 0x06646b6a +vmlinux class_device_initialize 0x17d7807f +vmlinux class_device_put 0x57e73fc5 +vmlinux class_device_register 0x4b542275 +vmlinux class_device_remove_bin_file 0xdb626b8b +vmlinux class_device_remove_file 0xc2b6d6cc +vmlinux class_device_unregister 0x9aeaa4cc +vmlinux class_get 0xa637ef08 +vmlinux class_interface_register 0xb753b6bb +vmlinux class_interface_unregister 0x0a771e6b +vmlinux class_put 0xb17b0b69 +vmlinux class_register 0x69c9b59c +vmlinux class_remove_file 0x24e39f1f +vmlinux class_unregister 0x663ea962 +vmlinux clear_inode 0x5a91bf7e +vmlinux clear_page_dirty_for_io 0xb180bd1b +vmlinux clear_user 0x7da99cdd +vmlinux clip_tbl_hook 0xfb6f0cf3 +vmlinux close_bdev_excl 0xc1756302 +vmlinux cmos_lock 0x9a6a83f9 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0xa9392f2b +vmlinux complete_all 0xff17e15b +vmlinux complete_and_exit 0x8e9eceaa +vmlinux compute_creds 0x0c540dc0 +vmlinux con_copy_unimap 0xa5303514 +vmlinux con_set_default_unimap 0xd71c4dcb +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0xa3a4ed03 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0xdcec76f4 +vmlinux console_stop 0xfb0fc01d +vmlinux cont_prepare_write 0x740f3ca8 +vmlinux contig_page_data 0x2a9e041e +vmlinux copy_from_user 0xf2a644fb +vmlinux copy_fs_struct 0xddea83e9 +vmlinux copy_io_context 0xe84b3a25 +vmlinux copy_strings_kernel 0x9b7befb5 +vmlinux copy_to_user 0x2da418b5 +vmlinux cpu_gdt_descr 0x6aed6c4e +vmlinux cpu_idle_wait 0xb53ae573 +vmlinux cpu_khz 0xd6b33026 +vmlinux cpu_present_map 0x5a4dac68 +vmlinux cpu_sysdev_class 0x3fa9605d +vmlinux cpufreq_cpu_get 0xb8de372e +vmlinux cpufreq_cpu_put 0x65970241 +vmlinux cpufreq_driver_target 0x70d3394f +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0xfbcefd76 +vmlinux cpufreq_gov_performance 0x5e154990 +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0xe6488b47 +vmlinux cpufreq_parse_governor 0x3356ca83 +vmlinux cpufreq_register_driver 0xddc137ee +vmlinux cpufreq_register_governor 0x44270cbf +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0xf4d7b8d4 +vmlinux cpufreq_unregister_driver 0x5f33a4b2 +vmlinux cpufreq_unregister_governor 0xa36545ad +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0xb7b61546 +vmlinux crc32_le 0xa34f1ef5 +vmlinux create_empty_buffers 0x41d6d2bb +vmlinux create_proc_entry 0xa880aa75 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0xeee1915e +vmlinux crypto_free_tfm 0x2d76dff0 +vmlinux crypto_hmac 0x50f9d850 +vmlinux crypto_hmac_final 0x9517185b +vmlinux crypto_hmac_init 0xed625e29 +vmlinux crypto_hmac_update 0xad577c22 +vmlinux crypto_register_alg 0xfded06dc +vmlinux crypto_unregister_alg 0x36c0ac23 +vmlinux csum_partial 0x9a3de8f8 +vmlinux csum_partial_copy_fromiovecend 0x02876657 +vmlinux csum_partial_copy_generic 0xd7359fa8 +vmlinux current_fs_time 0x3739f1fc +vmlinux current_io_context 0x9494408a +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0xdd405261 +vmlinux d_alloc_anon 0xb97cda13 +vmlinux d_alloc_name 0xaa8e6b0f +vmlinux d_alloc_root 0x8fa8fc35 +vmlinux d_delete 0x6c1744f2 +vmlinux d_find_alias 0xdb89b0f2 +vmlinux d_genocide 0xdb9b133c +vmlinux d_instantiate 0xce090eb4 +vmlinux d_instantiate_unique 0x08cd56c7 +vmlinux d_invalidate 0x3d92ed14 +vmlinux d_lookup 0xb89c5210 +vmlinux d_move 0xea01fc23 +vmlinux d_path 0xa882f92a +vmlinux d_prune_aliases 0x74edc742 +vmlinux d_rehash 0x6b0629e3 +vmlinux d_splice_alias 0x64f54aa7 +vmlinux d_validate 0xf4d4e5e4 +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0x7ee79d30 +vmlinux dcache_dir_close 0xf0ba7f98 +vmlinux dcache_dir_lseek 0xbc3ac972 +vmlinux dcache_dir_open 0x238191e7 +vmlinux dcache_lock 0x412ddc0c +vmlinux dcache_readdir 0xbd8d75af +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0x4db19a95 +vmlinux default_backing_dev_info 0xa55e6373 +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0x2814dc68 +vmlinux default_idle 0x92897e3d +vmlinux default_llseek 0xc3d64821 +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x0e1d04ef +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0x7b29c5fe +vmlinux del_timer 0xda264347 +vmlinux dentry_open 0xf8ebbb81 +vmlinux dentry_unhash 0x5e0ff00e +vmlinux dequeue_signal 0x34160d08 +vmlinux deregister_atm_ioctl 0xbc511ae6 +vmlinux destroy_8023_client 0xde665d48 +vmlinux destroy_EII_client 0x4da6e524 +vmlinux destroy_workqueue 0x7e82dbf9 +vmlinux dev_add_pack 0xd93ccead +vmlinux dev_alloc_name 0x2331c76f +vmlinux dev_base 0x04f3c661 +vmlinux dev_base_lock 0x144ed3a1 +vmlinux dev_change_flags 0x62bd1c77 +vmlinux dev_close 0x31defd10 +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0xc36255e6 +vmlinux dev_get_by_index 0x45ff27da +vmlinux dev_get_by_name 0xee8100fe +vmlinux dev_get_flags 0x01e2fdfa +vmlinux dev_getbyhwaddr 0xe1d7c7c1 +vmlinux dev_getfirstbyhwtype 0x390b877e +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0xab591ef6 +vmlinux dev_mc_delete 0x9e1c6565 +vmlinux dev_mc_upload 0x8f14a181 +vmlinux dev_open 0x62a13e63 +vmlinux dev_queue_xmit 0xd43c930c +vmlinux dev_remove_pack 0x3e919531 +vmlinux dev_set_allmulti 0xc9530bd1 +vmlinux dev_set_mac_address 0xd6d19f8f +vmlinux dev_set_mtu 0xb2447106 +vmlinux dev_set_promiscuity 0x24a74aee +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0x56fb1756 +vmlinux device_attach 0x1fc4b66a +vmlinux device_bind_driver 0xfbda76a5 +vmlinux device_create_file 0x1a3c289f +vmlinux device_del 0x1b3e3a25 +vmlinux device_for_each_child 0xb0c03bb2 +vmlinux device_initialize 0x33f14248 +vmlinux device_pm_set_parent 0xd93dd32d +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0x67cfe184 +vmlinux device_release_driver 0x1cb17c52 +vmlinux device_remove_file 0xb5bc8c20 +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0x348de03e +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0xbf0e80f7 +vmlinux disable_hlt 0x794487ee +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disable_timer_nmi_watchdog 0xf2fb62ee +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_alloc_coherent 0xffadb462 +vmlinux dma_declare_coherent_memory 0x6351ea98 +vmlinux dma_free_coherent 0xaed2c5e5 +vmlinux dma_get_required_mask 0x53a22c11 +vmlinux dma_mark_declared_memory_occupied 0xf0ce77da +vmlinux dma_pool_alloc 0x198baf01 +vmlinux dma_pool_create 0xab64aa95 +vmlinux dma_pool_destroy 0x17d4b3de +vmlinux dma_pool_free 0xd09b780b +vmlinux dma_release_declared_memory 0x11559266 +vmlinux dma_spin_lock 0x9148c7ae +vmlinux dmi_check_system 0xf5633477 +vmlinux dmi_find_device 0xfe7bde5e +vmlinux dmi_get_system_info 0x6a5b6ea4 +vmlinux dnotify_parent 0x0a4c7f2f +vmlinux do_SAK 0x551d12d7 +vmlinux do_add_mount 0x0503d56a +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x7ea7d551 +vmlinux do_generic_mapping_read 0x2c0fd2ec +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0x05eae537 +vmlinux do_mmap_pgoff 0x737e49d7 +vmlinux do_munmap 0x301a3eee +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0xcfe33679 +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0xf0a529b7 +vmlinux do_sync_read 0xb18ac08b +vmlinux do_sync_write 0x520ae676 +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0x3b512bf9 +vmlinux dput 0x202115b7 +vmlinux dq_data_lock 0xee90884e +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0xab6fd528 +vmlinux dquot_alloc_inode 0x7a2202b6 +vmlinux dquot_alloc_space 0x96f5a5b9 +vmlinux dquot_commit 0xb00473b7 +vmlinux dquot_commit_info 0xbfc1867c +vmlinux dquot_drop 0x791b61b7 +vmlinux dquot_free_inode 0xac3533e7 +vmlinux dquot_free_space 0x4b842444 +vmlinux dquot_initialize 0xe96862f9 +vmlinux dquot_mark_dquot_dirty 0x1c2ba426 +vmlinux dquot_release 0x300c2a90 +vmlinux dquot_transfer 0x62107d3c +vmlinux drive_info 0x5aaa7cd3 +vmlinux drive_is_ready 0xafdd4c5d +vmlinux driver_attach 0x43fb14c0 +vmlinux driver_create_file 0x023b48f7 +vmlinux driver_find 0x93550f73 +vmlinux driver_find_device 0x6ede642b +vmlinux driver_for_each_device 0x4b5e7cff +vmlinux driver_register 0x82f21174 +vmlinux driver_remove_file 0xf2659d87 +vmlinux driver_unregister 0xfaddebe8 +vmlinux drop_super 0xec03b809 +vmlinux dst_alloc 0xc08ffd10 +vmlinux dst_destroy 0x0c4bb9c8 +vmlinux dump_fpu 0xf7e7d3e6 +vmlinux dump_stack 0x6b2dc060 +vmlinux dump_thread 0xae90b20c +vmlinux ec_read 0xba2d8594 +vmlinux ec_write 0x876dafc3 +vmlinux edid_info 0xbbb98859 +vmlinux efi 0x4f1b2bc8 +vmlinux efi_enabled 0x0933aae1 +vmlinux eighty_ninty_three 0x322d8cf8 +vmlinux eisa_bus_type 0x346e6cf0 +vmlinux eisa_driver_register 0x7af008fe +vmlinux eisa_driver_unregister 0xdcdc48e9 +vmlinux elevator_exit 0x55212674 +vmlinux elevator_init 0xc09cd0e6 +vmlinux elv_add_request 0xe8fa7241 +vmlinux elv_completed_request 0x1d034af3 +vmlinux elv_dequeue_request 0xf1ec9da2 +vmlinux elv_dispatch_sort 0x29ef5389 +vmlinux elv_next_request 0x154c9068 +vmlinux elv_queue_empty 0x77021fda +vmlinux elv_register 0x9d6f87fa +vmlinux elv_requeue_request 0x160c1c06 +vmlinux elv_rq_merge_ok 0xe39f867b +vmlinux elv_try_merge 0x3eb71d51 +vmlinux elv_unregister 0xef60ceca +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_hlt 0x9c7077bd +vmlinux enable_irq 0xfcec0987 +vmlinux enable_timer_nmi_watchdog 0x13f54343 +vmlinux end_buffer_async_write 0x108d83d3 +vmlinux end_buffer_read_sync 0xbf36b961 +vmlinux end_buffer_write_sync 0xa2958e10 +vmlinux end_page_writeback 0x45881131 +vmlinux end_request 0x021b6497 +vmlinux end_that_request_chunk 0xfa9d8c79 +vmlinux end_that_request_first 0x57e23062 +vmlinux end_that_request_last 0x2408243b +vmlinux eth_type_trans 0x8b6fec03 +vmlinux ether_setup 0x4a8ddcf6 +vmlinux ethtool_op_get_link 0x2ed5a4af +vmlinux ethtool_op_get_perm_addr 0x615119ff +vmlinux ethtool_op_get_sg 0x60d0beb5 +vmlinux ethtool_op_get_tso 0xb891a5f5 +vmlinux ethtool_op_get_tx_csum 0xc9133339 +vmlinux ethtool_op_get_ufo 0xc853352d +vmlinux ethtool_op_set_sg 0x3c418ac1 +vmlinux ethtool_op_set_tso 0x411bd668 +vmlinux ethtool_op_set_tx_csum 0xeada6496 +vmlinux ethtool_op_set_tx_hw_csum 0xe1632bc7 +vmlinux ethtool_op_set_ufo 0x38ef3453 +vmlinux exit_fs 0x3c786803 +vmlinux f_setown 0x671d7db8 +vmlinux fasync_helper 0x95d0373e +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x072c916e +vmlinux fb_con_duit 0x50cfb4e4 +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0x93a0c478 +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0x0a185aa8 +vmlinux fb_get_buffer_offset 0x07fd667b +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0x78c6f642 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0x74723094 +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0x2e4dd6c3 +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0xbd0cf802 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0x7dcdb87d +vmlinux fb_set_suspend 0x795ffc31 +vmlinux fb_set_var 0xb9c32742 +vmlinux fb_show_logo 0x92cc96ba +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x856a5888 +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fd_install 0x58c1cb7c +vmlinux fddi_type_trans 0x6bfe95a3 +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x1d04b798 +vmlinux file_fsync 0xdcb0a673 +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0x0a876b4b +vmlinux filemap_fdatawait 0xce2d8ea1 +vmlinux filemap_fdatawrite 0x3d9f6bf8 +vmlinux filemap_flush 0xc8958621 +vmlinux filemap_nopage 0x9497e04b +vmlinux filemap_populate 0x4859bed8 +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0x6d339fdb +vmlinux filp_open 0x6ceec446 +vmlinux find_bus 0xb06ba501 +vmlinux find_get_page 0x2ce5290f +vmlinux find_inode_number 0xce560584 +vmlinux find_lock_page 0xaef274ae +vmlinux find_next_bit 0x2ff92ca0 +vmlinux find_next_zero_bit 0xdc01a06e +vmlinux find_or_create_page 0x1c1c3277 +vmlinux find_task_by_pid_type 0x89894b84 +vmlinux find_trylock_page 0x2f926b6b +vmlinux find_vma 0xa845bae8 +vmlinux finish_wait 0x2a7b11d4 +vmlinux firmware_register 0xcc8dc125 +vmlinux firmware_unregister 0x46016607 +vmlinux flock_lock_file_wait 0xe4c8d3a4 +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_old_exec 0x33d9cdbf +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x73a4ed9d +vmlinux flush_workqueue 0x6e4806c4 +vmlinux follow_down 0xdeb84ccb +vmlinux follow_up 0xb30f2a59 +vmlinux force_sig 0x2b89c69c +vmlinux fput 0xbf56f1c3 +vmlinux framebuffer_alloc 0x55ba92cf +vmlinux framebuffer_release 0x601b7944 +vmlinux free_buffer_head 0x0b104a7e +vmlinux free_dma 0x72b243d4 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0x774ccf65 +vmlinux free_pages 0x9941ccb8 +vmlinux free_task 0x19238412 +vmlinux freeze_bdev 0x4958ed3c +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0x23b11484 +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0x1c725e84 +vmlinux gen_replace_estimator 0x6c208b39 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic_block_bmap 0xa7d11d11 +vmlinux generic_commit_write 0x29aeed2f +vmlinux generic_cont_expand 0x6441ee8c +vmlinux generic_delete_inode 0x0368aaa2 +vmlinux generic_drop_inode 0x68891a81 +vmlinux generic_file_aio_read 0xa323eb5d +vmlinux generic_file_aio_write 0x0d0cb1ac +vmlinux generic_file_aio_write_nolock 0x66dd3711 +vmlinux generic_file_buffered_write 0x2b38fa5f +vmlinux generic_file_direct_write 0x414c6af1 +vmlinux generic_file_llseek 0x672da0ec +vmlinux generic_file_mmap 0x3308f10e +vmlinux generic_file_open 0xffff642f +vmlinux generic_file_read 0x668991bf +vmlinux generic_file_readonly_mmap 0x47f88920 +vmlinux generic_file_readv 0xfd0f20b0 +vmlinux generic_file_sendfile 0x40d91abe +vmlinux generic_file_write 0xab39f594 +vmlinux generic_file_write_nolock 0xd1b8dc74 +vmlinux generic_file_writev 0x0ddd870c +vmlinux generic_fillattr 0x4f5c6d68 +vmlinux generic_getxattr 0xc7dcb962 +vmlinux generic_ide_ioctl 0x85ce20a5 +vmlinux generic_listxattr 0xc6065044 +vmlinux generic_make_request 0x7e96ed53 +vmlinux generic_osync_inode 0xf19c27b1 +vmlinux generic_permission 0xe193292e +vmlinux generic_read_dir 0xe94041ed +vmlinux generic_readlink 0x34f79ced +vmlinux generic_removexattr 0x7e9329aa +vmlinux generic_ro_fops 0x48b99e68 +vmlinux generic_setxattr 0x8858f49b +vmlinux generic_shutdown_super 0xc441b4f1 +vmlinux generic_unplug_device 0xddf16f98 +vmlinux generic_write_checks 0x50d1d3e6 +vmlinux genl_register_family 0x02f7c71a +vmlinux genl_register_ops 0x430b04de +vmlinux genl_sock 0x1ea58757 +vmlinux genl_unregister_family 0x7540d3d4 +vmlinux genl_unregister_ops 0xa8c389f2 +vmlinux get_bus 0x723cff1c +vmlinux get_cmos_time 0xb31ddfb4 +vmlinux get_cpu_sysdev 0x00657ea2 +vmlinux get_dcookie 0x309d2330 +vmlinux get_device 0x5f02478a +vmlinux get_disk 0x82e33a38 +vmlinux get_driver 0x68caa717 +vmlinux get_empty_filp 0x73c314ce +vmlinux get_fs_type 0x6db85ab5 +vmlinux get_io_context 0x18bbf94d +vmlinux get_jiffies_64 0x37e74642 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0x9663d31e +vmlinux get_sb_nodev 0xff1ae568 +vmlinux get_sb_pseudo 0x94bb251c +vmlinux get_sb_single 0x2ebb70ee +vmlinux get_super 0x16494257 +vmlinux get_task_mm 0x0ca44165 +vmlinux get_unmapped_area 0x72eb8ec9 +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0xb2b34203 +vmlinux get_wchan 0xeb84d619 +vmlinux get_write_access 0x7f677ecb +vmlinux get_zeroed_page 0x2c2512ea +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0xc1968d8b +vmlinux global_flush_tlb 0x3167ea19 +vmlinux gnet_stats_copy_app 0x317abfdb +vmlinux gnet_stats_copy_basic 0x1e0ee2a3 +vmlinux gnet_stats_copy_queue 0xf9d6b62c +vmlinux gnet_stats_copy_rate_est 0x14acf8d6 +vmlinux gnet_stats_finish_copy 0x5ada11d0 +vmlinux gnet_stats_start_copy 0x40a39698 +vmlinux gnet_stats_start_copy_compat 0xdbb75c91 +vmlinux grab_cache_page_nowait 0xc40dc120 +vmlinux groups_alloc 0x51cd47e2 +vmlinux groups_free 0x111bcb2c +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0x1bb6dc88 +vmlinux have_submounts 0x0f04bb3f +vmlinux high_memory 0x8a7d1c31 +vmlinux hippi_type_trans 0x70108683 +vmlinux hpet_alloc 0x686f1325 +vmlinux hpet_control 0x1de314f3 +vmlinux hpet_register 0x741f1f6e +vmlinux hpet_unregister 0x63dfe1b4 +vmlinux hwmon_device_register 0xef49b05c +vmlinux hwmon_device_unregister 0x66a2ab69 +vmlinux i8253_lock 0x24f0b4ad +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x58ef2bfa +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_acpi_exec_tfs 0x270aca7b +vmlinux ide_acpi_get_timing 0xd1076e74 +vmlinux ide_acpi_init 0x2fdbc591 +vmlinux ide_acpi_push_timing 0x145f2e25 +vmlinux ide_add_setting 0xc130b6bc +vmlinux ide_build_dmatable 0x6693411b +vmlinux ide_build_sglist 0x6b9df382 +vmlinux ide_bus_type 0x266c322a +vmlinux ide_config_drive_speed 0xf751d44b +vmlinux ide_destroy_dmatable 0xfee9e94f +vmlinux ide_dma_enable 0xfbfab896 +vmlinux ide_dma_intr 0xeb2707b3 +vmlinux ide_dma_setup 0xe09de26a +vmlinux ide_dma_speed 0x069172e1 +vmlinux ide_dma_start 0x30c38120 +vmlinux ide_dma_verbose 0x9d4c49f4 +vmlinux ide_do_drive_cmd 0xca01cf39 +vmlinux ide_do_reset 0xf6491e25 +vmlinux ide_dump_status 0xee2be7ad +vmlinux ide_end_drive_cmd 0x06d9fa60 +vmlinux ide_end_request 0xdda1c933 +vmlinux ide_error 0xe832a2af +vmlinux ide_execute_command 0xf0efeda3 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x939c1c51 +vmlinux ide_get_error_location 0xfb813e59 +vmlinux ide_hwifs 0x084f23fd +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0xc88c1aa9 +vmlinux ide_init_drive_cmd 0x5ba2ae97 +vmlinux ide_init_sg_cmd 0xbd621bd4 +vmlinux ide_lock 0xf1dced4c +vmlinux ide_map_sg 0xf139bdff +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0xaa58ae7f +vmlinux ide_pci_unregister_driver 0x6a3549d6 +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0xc69c51c5 +vmlinux ide_register_hw 0xa4798b4c +vmlinux ide_register_hw_with_fixup 0x07bbc5f7 +vmlinux ide_register_region 0x8f33564d +vmlinux ide_register_subdriver 0xf9457f95 +vmlinux ide_set_handler 0x928e4bad +vmlinux ide_set_xfer_rate 0xcde83de1 +vmlinux ide_setup_dma 0xf334d062 +vmlinux ide_setup_pci_device 0x20b74b7c +vmlinux ide_setup_pci_devices 0x3d55f953 +vmlinux ide_setup_pci_noise 0xcb8ff71e +vmlinux ide_spin_wait_hwgroup 0x14948a17 +vmlinux ide_stall_queue 0x52138f2a +vmlinux ide_undecoded_slave 0xcf423772 +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0x485a3fab +vmlinux ide_unregister_subdriver 0x1007642d +vmlinux ide_use_dma 0x5d16c3b7 +vmlinux ide_wait_not_busy 0x646b1592 +vmlinux ide_wait_stat 0x678b8f00 +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0xdad53732 +vmlinux idr_find 0xf03b0e52 +vmlinux idr_get_new 0xb6c4e1ad +vmlinux idr_get_new_above 0xd09a6a3d +vmlinux idr_init 0xba95152a +vmlinux idr_pre_get 0xd4fe24f5 +vmlinux idr_remove 0xe64517b0 +vmlinux iget5_locked 0x534a365d +vmlinux iget_locked 0xa89ff470 +vmlinux igrab 0xed9cf3e7 +vmlinux ilookup 0x6c8b4489 +vmlinux ilookup5 0xd472a6aa +vmlinux ilookup5_nowait 0xf3179ce5 +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0xd23c7b55 +vmlinux in_egroup_p 0xd8a2ab95 +vmlinux in_group_p 0xc3cf1128 +vmlinux inet6_lookup 0x6dc8a654 +vmlinux inet6_lookup_listener 0x59925d9a +vmlinux inet_accept 0x18c7d84d +vmlinux inet_add_protocol 0x20a3749f +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0x6922a0b6 +vmlinux inet_bind_bucket_create 0x34f6f317 +vmlinux inet_bind_hash 0x67199821 +vmlinux inet_csk_accept 0x041adbaf +vmlinux inet_csk_clear_xmit_timers 0x99f208d7 +vmlinux inet_csk_clone 0x0bea7803 +vmlinux inet_csk_delete_keepalive_timer 0xb611e5ea +vmlinux inet_csk_destroy_sock 0xb365da0a +vmlinux inet_csk_get_port 0xc8640587 +vmlinux inet_csk_init_xmit_timers 0xf60a7032 +vmlinux inet_csk_listen_start 0x4d524e5f +vmlinux inet_csk_listen_stop 0x30229367 +vmlinux inet_csk_reqsk_queue_hash_add 0x321814f3 +vmlinux inet_csk_reqsk_queue_prune 0x59499c46 +vmlinux inet_csk_reset_keepalive_timer 0xc618bc1d +vmlinux inet_csk_route_req 0x0c98bb0f +vmlinux inet_csk_search_req 0x55eca9bc +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0xd114ce02 +vmlinux inet_dgram_connect 0xf7c05311 +vmlinux inet_dgram_ops 0xc603f2b1 +vmlinux inet_diag_register 0xaec37a26 +vmlinux inet_diag_unregister 0xdc9f2cae +vmlinux inet_getname 0xe1d9e8eb +vmlinux inet_ioctl 0xd6d7e92b +vmlinux inet_listen 0x649c4421 +vmlinux inet_listen_wlock 0x4ef9165a +vmlinux inet_put_port 0xfabbde65 +vmlinux inet_register_protosw 0xd6790591 +vmlinux inet_release 0x5ee65e5f +vmlinux inet_select_addr 0x5a3155f8 +vmlinux inet_sendmsg 0x931db833 +vmlinux inet_shutdown 0x4fcfcd46 +vmlinux inet_sk_rebuild_header 0x45e2b924 +vmlinux inet_sock_destruct 0x36c934b2 +vmlinux inet_stream_connect 0xe4714ea1 +vmlinux inet_stream_ops 0x2e4b29a7 +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x9b6d39d0 +vmlinux inet_twsk_deschedule 0xe66d195b +vmlinux inet_twsk_schedule 0x108068d3 +vmlinux inet_unregister_protosw 0xeb946b9b +vmlinux inetdev_by_index 0x7028cc60 +vmlinux init_buffer 0xc207782a +vmlinux init_mm 0x30b1c01e +vmlinux init_special_inode 0x2ea3cd7c +vmlinux init_task 0x5f62b320 +vmlinux init_timer 0x463e37ad +vmlinux inode_add_bytes 0xc5a5ab28 +vmlinux inode_change_ok 0xedd42fe1 +vmlinux inode_get_bytes 0x8ae277d4 +vmlinux inode_init_once 0x244507a3 +vmlinux inode_needs_sync 0xfcf53f6c +vmlinux inode_set_bytes 0xb72c514b +vmlinux inode_setattr 0x93056d9c +vmlinux inode_sub_bytes 0x59dd2f56 +vmlinux inode_update_time 0xe76a336c +vmlinux inotify_dentry_parent_queue_event 0xaed58794 +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0x6e9dae42 +vmlinux inotify_inode_queue_event 0x83186709 +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0xba363479 +vmlinux input_allocate_device 0x9087d4af +vmlinux input_class 0x2d3c9461 +vmlinux input_close_device 0xe286a173 +vmlinux input_event 0x0e941331 +vmlinux input_flush_device 0x4c553dec +vmlinux input_grab_device 0x5dd3a958 +vmlinux input_open_device 0xb92e3f5b +vmlinux input_register_device 0x17bcf20a +vmlinux input_register_handler 0x6b8837e4 +vmlinux input_release_device 0x15b59712 +vmlinux input_unregister_device 0xb2e60dcc +vmlinux input_unregister_handler 0x0c0b1962 +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0x443d6a0d +vmlinux int_sqrt 0xb678366f +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x54bd3a05 +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0x4c38e7d8 +vmlinux interruptible_sleep_on_timeout 0x5dee79a9 +vmlinux invalidate_bdev 0x8a5b8305 +vmlinux invalidate_inode_pages 0xcb11a6b6 +vmlinux invalidate_inode_pages2 0x8c3a7ec5 +vmlinux invalidate_inode_pages2_range 0xa41d329a +vmlinux invalidate_inodes 0xf76030a1 +vmlinux invalidate_partition 0x3abb111d +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0x39f0e971 +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0x03960713 +vmlinux ioread16_rep 0x54324f95 +vmlinux ioread16be 0x06127753 +vmlinux ioread32 0x2241a928 +vmlinux ioread32_rep 0x3360bb18 +vmlinux ioread32be 0x0bce3753 +vmlinux ioread8 0x389e200f +vmlinux ioread8_rep 0x27a72488 +vmlinux ioremap_nocache 0x3762cb6e +vmlinux iounmap 0xedc03953 +vmlinux iov_shorten 0xc11d8093 +vmlinux iowrite16 0x4775eacf +vmlinux iowrite16_rep 0x1eba9e49 +vmlinux iowrite16be 0x30343e46 +vmlinux iowrite32 0x908aa9b2 +vmlinux iowrite32_rep 0x2dbc755e +vmlinux iowrite32be 0xa1a6414c +vmlinux iowrite8 0x375bf494 +vmlinux iowrite8_rep 0x0b353626 +vmlinux ip4_datagram_connect 0xab5c1a43 +vmlinux ip_build_and_send_pkt 0xaf67de1c +vmlinux ip_cmsg_recv 0x1368bde6 +vmlinux ip_ct_attach 0xf5ba9a22 +vmlinux ip_defrag 0x407296b9 +vmlinux ip_fragment 0xbab9956c +vmlinux ip_generic_getfrag 0x83f627ac +vmlinux ip_getsockopt 0x46f4e0af +vmlinux ip_mc_dec_group 0xdeb06b8b +vmlinux ip_mc_inc_group 0x6ccc00da +vmlinux ip_mc_join_group 0x36e6637f +vmlinux ip_queue_xmit 0xe8c8650c +vmlinux ip_route_input 0x34a3be39 +vmlinux ip_route_me_harder 0x51a6e23e +vmlinux ip_route_output_flow 0x4a385eb5 +vmlinux ip_route_output_key 0x90a54d73 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0xa37b7441 +vmlinux ip_setsockopt 0xb2e9bc2f +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0x3bfdd547 +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0xf1f73918 +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0xcbcbdf32 +vmlinux is_bad_inode 0xfb50595c +vmlinux is_console_locked 0x944a564d +vmlinux isa_bridge 0x88e29fa3 +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux isapnp_cfg_begin 0x770a0036 +vmlinux isapnp_cfg_end 0x28b715a6 +vmlinux isapnp_present 0xbf8b39e9 +vmlinux isapnp_protocol 0x872970a4 +vmlinux isapnp_write_byte 0xda8fd495 +vmlinux ist_info 0x0fdb1426 +vmlinux iunique 0x429363b6 +vmlinux iw_handler_get_spy 0xfc6125c8 +vmlinux iw_handler_get_thrspy 0x3ccdf276 +vmlinux iw_handler_set_spy 0x0e6fc3e0 +vmlinux iw_handler_set_thrspy 0xe50f9cb1 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x32dcced3 +vmlinux kernel_fpu_begin 0xd986dad1 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0xe9faece0 +vmlinux kernel_recvmsg 0xe645fb85 +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0xbc97a587 +vmlinux kernel_subsys 0xcbd17243 +vmlinux kernel_thread 0x7e9ebb05 +vmlinux key_alloc 0x199d438c +vmlinux key_create_or_update 0x459db887 +vmlinux key_instantiate_and_link 0x40b44338 +vmlinux key_link 0x5550d02d +vmlinux key_negate_and_link 0x223351ef +vmlinux key_payload_reserve 0x610c00b6 +vmlinux key_put 0xf7cfa908 +vmlinux key_revoke 0xf91bc5e9 +vmlinux key_task_permission 0xb2357953 +vmlinux key_type_user 0xb0c11bed +vmlinux key_unlink 0x9a377baa +vmlinux key_update 0xea7987f1 +vmlinux key_validate 0x0f128230 +vmlinux keyring_clear 0xdfdb532b +vmlinux keyring_search 0xfecaa82a +vmlinux kfifo_alloc 0x8f9b86b2 +vmlinux kfifo_free 0x4719ba4e +vmlinux kfifo_init 0x4b9f3684 +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0xb9ccfb38 +vmlinux kill_anon_super 0xedbe81ea +vmlinux kill_block_super 0x57eb8aa9 +vmlinux kill_fasync 0x617d9b67 +vmlinux kill_litter_super 0xf1bdc57c +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xec10e63a +vmlinux klist_add_head 0x915acc1f +vmlinux klist_add_tail 0x89578b6b +vmlinux klist_del 0x84a1bc7c +vmlinux klist_init 0x9ea2eecb +vmlinux klist_iter_exit 0xb4d64e3c +vmlinux klist_iter_init 0x2cd3a4fb +vmlinux klist_iter_init_node 0xa3e837a8 +vmlinux klist_next 0xd5dd30ac +vmlinux klist_node_attached 0xba549831 +vmlinux klist_remove 0x99b82416 +vmlinux km_new_mapping 0xdc5cd4ac +vmlinux km_policy_notify 0x685e90f3 +vmlinux km_state_notify 0x07c7b03d +vmlinux km_waitq 0xef1a1668 +vmlinux kmap 0xa56a2e96 +vmlinux kmap_atomic 0xab683165 +vmlinux kmap_atomic_to_page 0x6edf7388 +vmlinux kmap_high 0x9600df82 +vmlinux kmem_cache_alloc 0x819e11d6 +vmlinux kmem_cache_create 0x35564826 +vmlinux kmem_cache_destroy 0x66ac6a6a +vmlinux kmem_cache_free 0x3613bb7a +vmlinux kmem_cache_name 0x2c215e72 +vmlinux kmem_cache_shrink 0xde488d37 +vmlinux kmem_cache_size 0xe2f7e393 +vmlinux kmem_find_general_cachep 0x8aeb508b +vmlinux kobject_add 0x6a5b20fd +vmlinux kobject_del 0x97d8b2b5 +vmlinux kobject_get 0x7f40a349 +vmlinux kobject_hotplug 0xfe211a3f +vmlinux kobject_init 0xb79c8156 +vmlinux kobject_put 0x06794257 +vmlinux kobject_register 0xc955be46 +vmlinux kobject_set_name 0x535eb2f8 +vmlinux kobject_uevent 0xd862362f +vmlinux kobject_uevent_atomic 0x3d9d5db3 +vmlinux kobject_unregister 0xeeea0c6b +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x0f9f6a78 +vmlinux kset_register 0xef027821 +vmlinux kset_unregister 0x0544f855 +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x76d34ce2 +vmlinux kthread_create 0xb4e2e177 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0x10abe57f +vmlinux kthread_stop_sem 0xd0c0608a +vmlinux kunmap 0xef63521b +vmlinux kunmap_atomic 0x43b40de7 +vmlinux kunmap_high 0xd277672a +vmlinux kzalloc 0x1d10cdb2 +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0x747d8f07 +vmlinux lease_modify 0x3f08cf20 +vmlinux linkwatch_fire_event 0xc564eb9d +vmlinux ll_rw_block 0xd8be5476 +vmlinux llc_add_pack 0xeaed929c +vmlinux llc_build_and_send_ui_pkt 0x12712a95 +vmlinux llc_mac_hdr_init 0xe8f9f37a +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0x9c85c8dc +vmlinux llc_sap_find 0x1557a054 +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0x556643e3 +vmlinux llc_sap_open 0x3322ec8d +vmlinux llc_set_station_handler 0xcefce247 +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_nls 0x62b23a30 +vmlinux load_nls_default 0xa85f508f +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_kernel 0x5568be43 +vmlinux lock_may_read 0xfeb03086 +vmlinux lock_may_write 0xa251f4a2 +vmlinux lock_rename 0xf36a6e08 +vmlinux lock_sock 0xdae421a3 +vmlinux locks_copy_lock 0xdecb5cd9 +vmlinux locks_init_lock 0x711a2529 +vmlinux locks_mandatory_area 0x3c4b32b6 +vmlinux locks_remove_posix 0xcd6a23b3 +vmlinux lookup_create 0x29ec3292 +vmlinux lookup_hash 0xbcc7d0de +vmlinux lookup_instantiate_filp 0x89cb6bd3 +vmlinux lookup_one_len 0x41804a81 +vmlinux loopback_dev 0x260d0a01 +vmlinux loops_per_jiffy 0xba497f13 +vmlinux machine_id 0x69b4ab75 +vmlinux machine_real_restart 0x3da1b07a +vmlinux make_8023_client 0x21957f3e +vmlinux make_EII_client 0x1c64e399 +vmlinux make_bad_inode 0x68251e78 +vmlinux malloc_sizes 0xa47da14e +vmlinux mapping_tagged 0xfce521ae +vmlinux mark_buffer_async_write 0x3e7cf97b +vmlinux mark_buffer_dirty 0x96979457 +vmlinux mark_buffer_dirty_inode 0x49d55f62 +vmlinux mark_info_dirty 0x7f435adc +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x19fa51bf +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_cstate 0x93805374 +vmlinux max_mapnr 0x01139ffc +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0xe1d052dc +vmlinux may_umount_tree 0x81af85c4 +vmlinux mb_cache_create 0x3f79b8a4 +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0x445d3f95 +vmlinux mb_cache_entry_find_first 0x7a90852f +vmlinux mb_cache_entry_find_next 0x880b060b +vmlinux mb_cache_entry_free 0x4d7e6a6a +vmlinux mb_cache_entry_get 0xdf48d564 +vmlinux mb_cache_entry_insert 0x7886dae2 +vmlinux mb_cache_entry_release 0x840b2f28 +vmlinux mb_cache_shrink 0x032e992f +vmlinux mca_bus_type 0xff5cc96e +vmlinux mca_device_claimed 0x66272c0f +vmlinux mca_device_read_pos 0x28bcf954 +vmlinux mca_device_read_stored_pos 0xbc0dea3b +vmlinux mca_device_set_claim 0xcd70ca5b +vmlinux mca_device_set_name 0x78c86cd6 +vmlinux mca_device_status 0x666cec19 +vmlinux mca_device_transform_ioport 0xb6bc3dba +vmlinux mca_device_transform_irq 0x3edc17fe +vmlinux mca_device_transform_memory 0x4b6c873f +vmlinux mca_device_write_pos 0xc0b3a66c +vmlinux mca_find_adapter 0x5f1bd579 +vmlinux mca_find_unused_adapter 0xef3bd862 +vmlinux mca_is_adapter_used 0x05048b38 +vmlinux mca_mark_as_unused 0xd9c272aa +vmlinux mca_mark_as_used 0x6b937ffb +vmlinux mca_read_pos 0x5c68705b +vmlinux mca_read_stored_pos 0xb2efb6be +vmlinux mca_register_driver 0x4e1e4056 +vmlinux mca_set_adapter_name 0xf2e74040 +vmlinux mca_unregister_driver 0x548ed48f +vmlinux mca_write_pos 0xaaebe34f +vmlinux mem_map 0xfe042665 +vmlinux memcmp 0x5152e605 +vmlinux memcpy 0x2e60bace +vmlinux memcpy_fromiovec 0x9fb3dd30 +vmlinux memcpy_fromiovecend 0x6e440b58 +vmlinux memcpy_toiovec 0x9ceb163c +vmlinux memmove 0x8235805b +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xab53b0a8 +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0x1f7cc628 +vmlinux mempool_create_node 0xd3427f73 +vmlinux mempool_destroy 0xac54fc9f +vmlinux mempool_free 0x062aba95 +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x25ba121c +vmlinux memset 0x2bc95bd4 +vmlinux misc_deregister 0xc226734c +vmlinux misc_register 0xaf98b273 +vmlinux mmput 0xc7d2dce3 +vmlinux mnt_pin 0xcf8f8897 +vmlinux mnt_unpin 0x26059306 +vmlinux mntput_no_expire 0xc735598a +vmlinux mod_reg_security 0x20cfd708 +vmlinux mod_timer 0x56662b32 +vmlinux mod_unreg_security 0xee80de71 +vmlinux module_add_driver 0xc5795d99 +vmlinux module_refcount 0xc7ff1656 +vmlinux module_remove_driver 0x1b7e368c +vmlinux monotonic_clock 0x9669ecc8 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0xb2fbed1d +vmlinux mpage_readpages 0x6de6a91f +vmlinux mpage_writepage 0xcb3523fc +vmlinux mpage_writepages 0x58885cf5 +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux mtrr_add 0x56179c5f +vmlinux mtrr_del 0x272d394e +vmlinux multipath_alg_register 0x4bad06f2 +vmlinux multipath_alg_unregister 0xd695b491 +vmlinux n_tty_ioctl 0x4fa8eea9 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x4c87a450 +vmlinux neigh_changeaddr 0x0b90ce20 +vmlinux neigh_compat_output 0xd5620126 +vmlinux neigh_connected_output 0xaebe1dcf +vmlinux neigh_create 0xe5b4ac06 +vmlinux neigh_delete 0xa75fa38f +vmlinux neigh_destroy 0x278e6b4c +vmlinux neigh_dump_info 0xfad46bb6 +vmlinux neigh_event_ns 0xd10bbce1 +vmlinux neigh_for_each 0x515d1561 +vmlinux neigh_ifdown 0x612adc2d +vmlinux neigh_lookup 0xec5a7743 +vmlinux neigh_lookup_nodev 0xdaebbf7e +vmlinux neigh_parms_alloc 0xbb29ccf8 +vmlinux neigh_parms_release 0x08a48c66 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0x3f9615f6 +vmlinux neigh_seq_next 0x6aa93515 +vmlinux neigh_seq_start 0x317e2d4d +vmlinux neigh_seq_stop 0x4199601a +vmlinux neigh_sysctl_register 0x0212d111 +vmlinux neigh_sysctl_unregister 0xab216e64 +vmlinux neigh_table_clear 0xf7c9317a +vmlinux neigh_table_init 0xef07dc53 +vmlinux neigh_update 0xdfb27f7a +vmlinux neigh_update_hhs 0x7d3a588f +vmlinux neightbl_dump_info 0x7bbf3a87 +vmlinux neightbl_set 0xfaf611bb +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0xf6daffd1 +vmlinux netdev_features_change 0x82bdca2d +vmlinux netdev_rx_csum_fault 0x1b6acec4 +vmlinux netdev_set_master 0x851e532a +vmlinux netdev_state_change 0xabdd35fd +vmlinux netif_carrier_off 0x7f0ceea7 +vmlinux netif_carrier_on 0xbd4d6144 +vmlinux netif_receive_skb 0xe4302a70 +vmlinux netif_rx 0xfd244c79 +vmlinux netif_rx_ni 0x20215d18 +vmlinux netlink_ack 0x446ddf37 +vmlinux netlink_broadcast 0xa3a06314 +vmlinux netlink_dump_start 0x0957eaac +vmlinux netlink_kernel_create 0xe733e9cb +vmlinux netlink_queue_skip 0xb0c1de24 +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0xa7f22a00 +vmlinux netlink_set_err 0x8bb03fda +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0x53604c07 +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x99c26252 +vmlinux netpoll_parse_options 0x85b5ec27 +vmlinux netpoll_poll 0x94f4fea9 +vmlinux netpoll_queue 0x7dc4907c +vmlinux netpoll_send_udp 0x4e5b90c8 +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0xa7eb65df +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0xeaa2e8fb +vmlinux next_thread 0xab1c8d77 +vmlinux nf_ct_attach 0x95ec3de0 +vmlinux nf_getsockopt 0x16f728b1 +vmlinux nf_hook_slow 0xe24dc413 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0x09b8202f +vmlinux nf_log_register 0xd8242d08 +vmlinux nf_log_unregister_logger 0x18a6bc43 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0xe869295a +vmlinux nf_register_queue_handler 0x91cf6dd0 +vmlinux nf_register_queue_rerouter 0x4f245984 +vmlinux nf_register_sockopt 0xa287e663 +vmlinux nf_reinject 0x2e8fe588 +vmlinux nf_setsockopt 0xac543ef0 +vmlinux nf_unregister_hook 0xcdbca217 +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0x499b2446 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x565d4fea +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0xbe0e5118 +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0xd201b030 +vmlinux nla_reserve 0xfe0bf3c5 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0x6cdc5c6b +vmlinux nla_validate 0x2cc98162 +vmlinux nmi_active 0x069dcda8 +vmlinux nmi_watchdog 0xda928914 +vmlinux no_llseek 0x9d7b43f6 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x77b4730f +vmlinux nobh_prepare_write 0x8118652d +vmlinux nobh_truncate_page 0x0dd951f3 +vmlinux nobh_writepage 0x411f543e +vmlinux node_online_map 0x5a8f421e +vmlinux node_possible_map 0xca0d27a1 +vmlinux nonseekable_open 0x162863a8 +vmlinux noop_qdisc 0x75849bc0 +vmlinux noop_qdisc_ops 0xb2515cc5 +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x7c1e6d4b +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0x8ff7a7d7 +vmlinux open_by_devnum 0xdee5d140 +vmlinux open_exec 0x0b9992a6 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0x09aeaf8c +vmlinux out_of_line_wait_on_bit_lock 0xe868af29 +vmlinux overflowgid 0x7171121c +vmlinux overflowuid 0x8b618d08 +vmlinux p80211_resume 0xd5271862 +vmlinux p80211_suspend 0x0fa0d5ab +vmlinux p80211netdev_hwremoved 0xbe2063ff +vmlinux p80211netdev_rx 0xbfb56b5e +vmlinux p80211skb_free 0x817fcbd3 +vmlinux p80211skb_rxmeta_attach 0x3d521f7c +vmlinux page_address 0xf7aabb2b +vmlinux page_follow_link_light 0xf2020c60 +vmlinux page_put_link 0xd72d262a +vmlinux page_readlink 0x556c61c5 +vmlinux page_symlink 0x498f6242 +vmlinux page_symlink_inode_operations 0x6c75b65d +vmlinux pagevec_lookup_tag 0xde2cacd4 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0x2e9726fb +vmlinux path_release 0xf5a446f9 +vmlinux path_walk 0x060c0b74 +vmlinux pci_add_new_bus 0xd8b092a6 +vmlinux pci_assign_resource 0xd74904f7 +vmlinux pci_block_user_cfg_access 0xebe3085b +vmlinux pci_bus_add_device 0xf6f3835f +vmlinux pci_bus_add_devices 0x79b31023 +vmlinux pci_bus_alloc_resource 0x3c61d089 +vmlinux pci_bus_assign_resources 0x0dafcba9 +vmlinux pci_bus_find_capability 0x9b4c100c +vmlinux pci_bus_max_busnr 0x3b93c9f3 +vmlinux pci_bus_read_config_byte 0xee324e73 +vmlinux pci_bus_read_config_dword 0x4ea9409a +vmlinux pci_bus_read_config_word 0x8b548eac +vmlinux pci_bus_size_bridges 0xcc241163 +vmlinux pci_bus_type 0xe3d94039 +vmlinux pci_bus_write_config_byte 0xbe0a7d32 +vmlinux pci_bus_write_config_dword 0xeb3a1e54 +vmlinux pci_bus_write_config_word 0x34011e34 +vmlinux pci_choose_state 0x032b776f +vmlinux pci_clear_mwi 0xe36de5e2 +vmlinux pci_create_bus 0xf200c8f8 +vmlinux pci_dev_driver 0xdfff9b86 +vmlinux pci_dev_get 0x9a0ba2d2 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0x9dbf00ed +vmlinux pci_disable_device 0x1bc4b629 +vmlinux pci_disable_msi 0x49c4fc6a +vmlinux pci_disable_msix 0x6acf8fb7 +vmlinux pci_do_scan_bus 0x4c66c631 +vmlinux pci_enable_bridges 0x8cc98569 +vmlinux pci_enable_device 0xfb1d98f3 +vmlinux pci_enable_device_bars 0xd10eb491 +vmlinux pci_enable_msi 0x436775b7 +vmlinux pci_enable_msix 0xffe169c4 +vmlinux pci_enable_wake 0x37dbb74b +vmlinux pci_find_bus 0xf4e3dfe3 +vmlinux pci_find_capability 0x957faebc +vmlinux pci_find_device 0xac77cab3 +vmlinux pci_find_device_reverse 0xfa922aa3 +vmlinux pci_find_next_bus 0x1820720a +vmlinux pci_find_next_capability 0xf5f5f649 +vmlinux pci_find_parent_resource 0x836d0d75 +vmlinux pci_find_slot 0x0f31a2f2 +vmlinux pci_fixup_device 0x1d2b3d6a +vmlinux pci_get_class 0xb99b5d53 +vmlinux pci_get_device 0xa6b4e7d6 +vmlinux pci_get_slot 0x7a9f4655 +vmlinux pci_get_subsys 0xf6f558fa +vmlinux pci_intx 0x6f23a00b +vmlinux pci_iomap 0x6317d9aa +vmlinux pci_iounmap 0x3e483e10 +vmlinux pci_map_rom 0xe91310d0 +vmlinux pci_map_rom_copy 0xed06d5f7 +vmlinux pci_match_device 0x57716ab3 +vmlinux pci_match_id 0x4a29e866 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_mem_start 0x3da171f9 +vmlinux pci_osc_control_set 0x20c8fc33 +vmlinux pci_osc_support_set 0xed9003ef +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0xeb845b45 +vmlinux pci_proc_attach_device 0x95bfc703 +vmlinux pci_proc_detach_bus 0x8ff094fd +vmlinux pci_release_region 0x7cde85fd +vmlinux pci_release_regions 0xbacb1326 +vmlinux pci_remove_behind_bridge 0x9764ffaa +vmlinux pci_remove_bus 0x062e47f1 +vmlinux pci_remove_bus_device 0x1c2030f2 +vmlinux pci_remove_device_safe 0xa72d735a +vmlinux pci_remove_rom 0xa3e20796 +vmlinux pci_request_region 0x41ef4d77 +vmlinux pci_request_regions 0x9f4a7769 +vmlinux pci_restore_bars 0xed9178fe +vmlinux pci_restore_state 0xe3c36009 +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0x561f9fee +vmlinux pci_scan_bridge 0xdc0fcd63 +vmlinux pci_scan_bus_parented 0x6e80f90a +vmlinux pci_scan_child_bus 0x91e26d8a +vmlinux pci_scan_single_device 0x2da8402e +vmlinux pci_scan_slot 0xf9de54dc +vmlinux pci_set_consistent_dma_mask 0x0640c5b8 +vmlinux pci_set_dma_mask 0x06dd8476 +vmlinux pci_set_master 0x35ecff93 +vmlinux pci_set_mwi 0xbbafe690 +vmlinux pci_set_power_state 0x114a6f2f +vmlinux pci_setup_cardbus 0x1d6f53fa +vmlinux pci_unblock_user_cfg_access 0xcf497823 +vmlinux pci_unmap_rom 0xdc738a67 +vmlinux pci_unregister_driver 0x2d720012 +vmlinux pci_walk_bus 0x02424aac +vmlinux pcibios_get_irq_routing_table 0xda08c0d7 +vmlinux pcibios_set_irq_routing 0x9afdb665 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pcie_port_service_register 0xc3ec9165 +vmlinux pcie_port_service_unregister 0xb4f69a68 +vmlinux pciserial_init_ports 0xa74e3a27 +vmlinux pciserial_remove_ports 0x735a07ef +vmlinux pciserial_resume_ports 0xfceeb994 +vmlinux pciserial_suspend_ports 0xfa9dc365 +vmlinux per_cpu__cpu_16bit_stack 0x42f5b870 +vmlinux per_cpu__irq_stat 0xb994c584 +vmlinux per_cpu__kstat 0xca09a9af +vmlinux per_cpu__softnet_data 0x2de47b17 +vmlinux permission 0x383f5444 +vmlinux pfifo_qdisc_ops 0xbc51c290 +vmlinux platform_add_devices 0xd5f49a86 +vmlinux platform_bus 0x174742bf +vmlinux platform_bus_type 0xdb395c84 +vmlinux platform_device_add 0x9eeb172b +vmlinux platform_device_add_data 0x2bf70be9 +vmlinux platform_device_add_resources 0x763bc0fd +vmlinux platform_device_alloc 0x72908e07 +vmlinux platform_device_put 0x8029b329 +vmlinux platform_device_register 0xbbd73b00 +vmlinux platform_device_register_simple 0x3405111e +vmlinux platform_device_unregister 0xeae491c4 +vmlinux platform_driver_register 0xd01d542f +vmlinux platform_driver_unregister 0xb22d738c +vmlinux platform_get_irq 0xfef6299a +vmlinux platform_get_irq_byname 0x4dcefd8e +vmlinux platform_get_resource 0x83ca5191 +vmlinux platform_get_resource_byname 0x4f5688cc +vmlinux pm_active 0xebd387f6 +vmlinux pm_idle 0xf890fe7f +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pneigh_enqueue 0x60907d6d +vmlinux pneigh_lookup 0x911c124f +vmlinux pnp_activate_dev 0xa6555c81 +vmlinux pnp_device_attach 0x503a831a +vmlinux pnp_device_detach 0x802b13e9 +vmlinux pnp_disable_dev 0x77940480 +vmlinux pnp_find_card 0x9c564a25 +vmlinux pnp_find_dev 0xc8451403 +vmlinux pnp_init_resource_table 0x16084899 +vmlinux pnp_is_active 0x9603ad1c +vmlinux pnp_manual_config_dev 0xaba3f046 +vmlinux pnp_register_card_driver 0x36513c8f +vmlinux pnp_register_driver 0xf8cceac6 +vmlinux pnp_release_card_device 0xddaae49e +vmlinux pnp_request_card_device 0x578d0908 +vmlinux pnp_resource_change 0xf577ec2b +vmlinux pnp_unregister_card_driver 0xc835e7f8 +vmlinux pnp_unregister_driver 0x67bcd77a +vmlinux pnpbios_protocol 0x968b9459 +vmlinux poll_freewait 0x241fca1c +vmlinux poll_initwait 0xf60213e9 +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0xd32e52c7 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x640a7078 +vmlinux posix_acl_equiv_mode 0xd8282ff0 +vmlinux posix_acl_from_mode 0x3adc15b9 +vmlinux posix_acl_from_xattr 0x85ac7f10 +vmlinux posix_acl_permission 0x16da7fbb +vmlinux posix_acl_to_xattr 0x1ecb9943 +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0x7b48eccd +vmlinux posix_lock_file 0x7e9e1d33 +vmlinux posix_lock_file_wait 0x9d6e9f4e +vmlinux posix_locks_deadlock 0xdc33647a +vmlinux posix_test_lock 0xbae7a125 +vmlinux posix_timer_event 0xcbe9a783 +vmlinux posix_unblock_lock 0x04db7505 +vmlinux pre_task_out_intr 0xf7fa90cc +vmlinux preempt_schedule 0x707f93dd +vmlinux prepare_binprm 0x040d31c5 +vmlinux prepare_to_wait 0x7d1ed1f2 +vmlinux prepare_to_wait_exclusive 0xf029435d +vmlinux printk 0x1b7d4074 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0x145a24a6 +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0x2a17947b +vmlinux proc_dointvec 0xd0ef5e70 +vmlinux proc_dointvec_jiffies 0x84940534 +vmlinux proc_dointvec_minmax 0x67269087 +vmlinux proc_dointvec_ms_jiffies 0x2d446e4a +vmlinux proc_dointvec_userhz_jiffies 0x3989a518 +vmlinux proc_dostring 0xddebb48d +vmlinux proc_doulongvec_minmax 0x4e83592c +vmlinux proc_doulongvec_ms_jiffies_minmax 0x0248ab72 +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0xc5a8f3ad +vmlinux proc_net 0x33a61e74 +vmlinux proc_net_netfilter 0xf58dbd5d +vmlinux proc_net_stat 0xca5bfab1 +vmlinux proc_root 0xab05b713 +vmlinux proc_root_driver 0x4f48f8f4 +vmlinux proc_root_fs 0x5f825e36 +vmlinux proc_symlink 0x35045617 +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux proto_register 0xc04d125d +vmlinux proto_unregister 0xa8d6af66 +vmlinux ps2_cmd_aborted 0x7c89291d +vmlinux ps2_command 0x4b1086e4 +vmlinux ps2_drain 0xf3d39c58 +vmlinux ps2_handle_ack 0xb9c51f6d +vmlinux ps2_handle_response 0x7d5cbb2e +vmlinux ps2_init 0xf7dc10af +vmlinux ps2_schedule_command 0x2132b994 +vmlinux ps2_sendbyte 0x86e926b6 +vmlinux pskb_copy 0x3badbcb6 +vmlinux pskb_expand_head 0xa1a851c2 +vmlinux pskb_put 0x36c1aa67 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0xb672b7f4 +vmlinux put_cmsg 0xf39bf4d9 +vmlinux put_device 0xc5b1088c +vmlinux put_disk 0x68995f66 +vmlinux put_driver 0xc2ec51e4 +vmlinux put_files_struct 0x5188010c +vmlinux put_io_context 0x9f067f24 +vmlinux put_page 0x4c821fe4 +vmlinux put_tty_driver 0x818ae3b2 +vmlinux put_unused_fd 0x023eb25e +vmlinux qdisc_alloc 0x66ab804a +vmlinux qdisc_create_dflt 0x2d68490a +vmlinux qdisc_destroy 0xbee9e343 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0x28699fa3 +vmlinux qdisc_lookup 0x346d59a1 +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0xded31a98 +vmlinux qdisc_restart 0xdede7a77 +vmlinux qdisc_unlock_tree 0xc4710672 +vmlinux queue_delayed_work 0x9f2a2866 +vmlinux queue_work 0x607465a7 +vmlinux radix_tree_delete 0xa34bdcd0 +vmlinux radix_tree_gang_lookup 0x883e226b +vmlinux radix_tree_gang_lookup_tag 0xcc4e9047 +vmlinux radix_tree_insert 0x7dc88ba1 +vmlinux radix_tree_lookup 0x5c2da0c3 +vmlinux radix_tree_lookup_slot 0x6bbbfb36 +vmlinux radix_tree_tag_clear 0x374a51dd +vmlinux radix_tree_tag_set 0x7e92ceb7 +vmlinux radix_tree_tagged 0xdacd0c37 +vmlinux raise_softirq_irqoff 0xd8c152cd +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0x82f01d19 +vmlinux read_cache_pages 0x6c1b5c5d +vmlinux read_dev_sector 0x1703725a +vmlinux recalc_sigpending 0xfb6af58d +vmlinux recalibrate_cpu_khz 0x31e76b57 +vmlinux redirty_page_for_writepage 0x41f51808 +vmlinux redraw_screen 0x8901341c +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0x2beae2ca +vmlinux register_acpi_bus_type 0xe40458ac +vmlinux register_atm_ioctl 0xf3401b91 +vmlinux register_binfmt 0x107192a8 +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0xae909924 +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x4cd487b0 +vmlinux register_die_notifier 0x53986488 +vmlinux register_exec_domain 0x03216bce +vmlinux register_filesystem 0xa5b41985 +vmlinux register_firmware 0x711cccd3 +vmlinux register_framebuffer 0xfdcee81c +vmlinux register_gifconf 0x4e918e12 +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_key_type 0x055db53d +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0x2db2b942 +vmlinux register_netdevice 0x8bc35f95 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x83bf24d4 +vmlinux register_posix_clock 0x895fa837 +vmlinux register_qdisc 0xce7a5a7c +vmlinux register_quota_format 0xf6bb94c1 +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0x376bf2ef +vmlinux register_snap_client 0x91285696 +vmlinux register_sysctl_table 0x2e18ab1b +vmlinux register_sysrq_key 0x25b7e704 +vmlinux register_tcf_proto_ops 0x8492d04c +vmlinux register_timer_hook 0xf5269962 +vmlinux register_wlandev 0xda957033 +vmlinux registered_fb 0x5339d0ee +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x33934162 +vmlinux release_lapic_nmi 0x4129043e +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x4c6a7bba +vmlinux remap_pfn_range 0x92188d64 +vmlinux remote_llseek 0xcd808a62 +vmlinux remove_arg_zero 0xaaeb15c3 +vmlinux remove_inode_hash 0x221ba5dc +vmlinux remove_proc_entry 0x989eb859 +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0xf5ebd241 +vmlinux remove_wait_queue 0x9ce3050c +vmlinux reqsk_queue_alloc 0xe904f128 +vmlinux reqsk_queue_destroy 0x8fbf805b +vmlinux request_dma 0x7054a3e4 +vmlinux request_firmware 0x22c0e3a7 +vmlinux request_firmware_nowait 0xb37d7267 +vmlinux request_irq 0x26e96637 +vmlinux request_key 0x7e9bd1d7 +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux reserve_lapic_nmi 0xb903b498 +vmlinux restore_processor_state 0x8dc6e564 +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x85902f79 +vmlinux rtc_cmos_read 0x9e64fbfe +vmlinux rtc_cmos_write 0x2def7f76 +vmlinux rtc_lock 0xc02235f1 +vmlinux rtnetlink_links 0xf15c561f +vmlinux rtnetlink_put_metrics 0x77117e7a +vmlinux rtnl 0xdc87a9db +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0xc2d88038 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux rwsem_down_read_failed 0x4c59ed44 +vmlinux rwsem_down_write_failed 0xf143430f +vmlinux rwsem_downgrade_wake 0x627b316d +vmlinux rwsem_wake 0x2007c71c +vmlinux save_processor_state 0x75271716 +vmlinux sb_min_blocksize 0xc01be998 +vmlinux sb_set_blocksize 0xe96e32da +vmlinux sched_setscheduler 0x6e91b474 +vmlinux schedule 0x4292364c +vmlinux schedule_delayed_work 0xfc535e10 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0x17d59d01 +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x0a3fa85c +vmlinux scm_detach_fds 0xddca35cb +vmlinux scm_fp_dup 0xc0718095 +vmlinux scnprintf 0x28f35813 +vmlinux screen_info 0xe7bf7d05 +vmlinux scsi_cmd_ioctl 0xb6c49d30 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux search_binary_handler 0x25e3b228 +vmlinux secpath_dup 0x7b0efbeb +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0xcdd61985 +vmlinux securityfs_create_dir 0x2353a9cb +vmlinux securityfs_create_file 0x0e93fc73 +vmlinux securityfs_remove 0x3ab6fd7f +vmlinux send_sig 0xa2b07c68 +vmlinux send_sig_info 0xcceece6d +vmlinux seq_escape 0x876c9e04 +vmlinux seq_lseek 0x19e6b2ab +vmlinux seq_open 0x5e4133bb +vmlinux seq_path 0xd7e2f25c +vmlinux seq_printf 0x5e1354bb +vmlinux seq_putc 0x89697d56 +vmlinux seq_puts 0x0da7a743 +vmlinux seq_read 0x1e4aa8d3 +vmlinux seq_release 0x71c87311 +vmlinux seq_release_private 0x475ca7aa +vmlinux serial8250_register_port 0xae0a19b2 +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0x580a45d5 +vmlinux serio_interrupt 0xfe00edc3 +vmlinux serio_open 0x8d8dabf2 +vmlinux serio_reconnect 0xb80254da +vmlinux serio_rescan 0x7b294a71 +vmlinux serio_unregister_child_port 0x495dd505 +vmlinux serio_unregister_driver 0xe492a6fc +vmlinux serio_unregister_port 0x7576ff05 +vmlinux set_anon_super 0x2040f58a +vmlinux set_bh_page 0x2ad8035c +vmlinux set_binfmt 0x4c86d3dd +vmlinux set_blocksize 0xf0e17c6c +vmlinux set_current_groups 0x72fbae28 +vmlinux set_device_ro 0x2db47bc2 +vmlinux set_disk_ro 0xb842518c +vmlinux set_nmi_callback 0x2c4fa81f +vmlinux set_page_dirty 0xfeb10a41 +vmlinux set_page_dirty_lock 0xa3251917 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0xacc3e5c4 +vmlinux setlease 0x787ba3ec +vmlinux setup_arg_pages 0x0f872252 +vmlinux sget 0xa8c6e505 +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x07f84643 +vmlinux shrink_dcache_sb 0xe77554a4 +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x4d3c153f +vmlinux simple_attr_close 0x72c435a6 +vmlinux simple_attr_open 0xacf3b0f1 +vmlinux simple_attr_read 0x6c74f42c +vmlinux simple_attr_write 0x329e100e +vmlinux simple_commit_write 0xa168dc95 +vmlinux simple_dir_inode_operations 0x618bda9a +vmlinux simple_dir_operations 0x674e8535 +vmlinux simple_empty 0x3356a71c +vmlinux simple_fill_super 0x0bcdb9b8 +vmlinux simple_getattr 0x86ec030e +vmlinux simple_link 0xba2d9d89 +vmlinux simple_lookup 0xb4c11477 +vmlinux simple_pin_fs 0x842300bc +vmlinux simple_prepare_write 0x9289d6a8 +vmlinux simple_read_from_buffer 0x528c709d +vmlinux simple_readpage 0x8b15143c +vmlinux simple_release_fs 0x5ca92b61 +vmlinux simple_rename 0x2560f9b1 +vmlinux simple_rmdir 0xc0a50cfa +vmlinux simple_statfs 0xcca854a0 +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0x924c52e2 +vmlinux simple_transaction_get 0xacd68226 +vmlinux simple_transaction_read 0xe412ad24 +vmlinux simple_transaction_release 0xde6ddde0 +vmlinux simple_unlink 0x5161b675 +vmlinux single_open 0x5df215ef +vmlinux single_release 0x3283f56f +vmlinux sk_alloc 0x9ded5a2c +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0xe31dc365 +vmlinux sk_common_release 0x497f2bd2 +vmlinux sk_free 0x53bc3347 +vmlinux sk_reset_timer 0x35521a88 +vmlinux sk_run_filter 0xb8d1908c +vmlinux sk_send_sigurg 0x28907d24 +vmlinux sk_stop_timer 0x6d63e7dc +vmlinux sk_stream_error 0x8fe34f5e +vmlinux sk_stream_kill_queues 0x226753e0 +vmlinux sk_stream_mem_schedule 0x64634e06 +vmlinux sk_stream_rfree 0x5806e612 +vmlinux sk_stream_wait_close 0xbb049759 +vmlinux sk_stream_wait_connect 0xd2ceae0c +vmlinux sk_stream_wait_memory 0x17d9455d +vmlinux sk_stream_write_space 0x32bf501f +vmlinux sk_wait_data 0xe9ce9c31 +vmlinux skb_abort_seq_read 0x05ef2241 +vmlinux skb_append 0x9aa99e78 +vmlinux skb_append_datato_frags 0x75adf43b +vmlinux skb_checksum 0x2dd80ad2 +vmlinux skb_checksum_help 0x9f5c9378 +vmlinux skb_clone 0x1460ad09 +vmlinux skb_clone_fraglist 0x5c2f11f0 +vmlinux skb_copy 0xb8067ca3 +vmlinux skb_copy_and_csum_bits 0x4c3b4d45 +vmlinux skb_copy_and_csum_datagram_iovec 0x37d02f0f +vmlinux skb_copy_and_csum_dev 0x0dcaa168 +vmlinux skb_copy_bits 0xc0964717 +vmlinux skb_copy_datagram_iovec 0x63895392 +vmlinux skb_copy_expand 0x1c9af920 +vmlinux skb_cow_data 0x8c80811c +vmlinux skb_dequeue 0xdebac9b3 +vmlinux skb_dequeue_tail 0x9d432516 +vmlinux skb_find_text 0x7711ad3f +vmlinux skb_free_datagram 0xdcc02582 +vmlinux skb_icv_walk 0x82f5e922 +vmlinux skb_insert 0x03964f41 +vmlinux skb_make_writable 0x8e32e843 +vmlinux skb_migrate 0x6a9f22b1 +vmlinux skb_over_panic 0xbd64753e +vmlinux skb_pad 0xa5504f98 +vmlinux skb_prepare_seq_read 0x6cbd1494 +vmlinux skb_queue_head 0x0df1a394 +vmlinux skb_queue_purge 0x3c268bde +vmlinux skb_queue_tail 0xdf98f0cf +vmlinux skb_realloc_headroom 0xb7d97fc4 +vmlinux skb_recv_datagram 0x804e9169 +vmlinux skb_seq_read 0xc8ae8613 +vmlinux skb_split 0x6eb2dcd0 +vmlinux skb_store_bits 0x835b82c3 +vmlinux skb_to_sgvec 0x8a8fff20 +vmlinux skb_under_panic 0x13668f67 +vmlinux skb_unlink 0xf7a0696c +vmlinux sleep_on 0x9328e26b +vmlinux sleep_on_timeout 0x73df45dc +vmlinux snprintf 0x025da070 +vmlinux sock_alloc_send_skb 0xb0df2161 +vmlinux sock_common_getsockopt 0x540e8a9b +vmlinux sock_common_recvmsg 0xc3b05dbc +vmlinux sock_common_setsockopt 0x50ec3d1f +vmlinux sock_create 0x3a4a625c +vmlinux sock_create_kern 0x288e872a +vmlinux sock_create_lite 0xed9ae5fa +vmlinux sock_enable_timestamp 0xe7f9677d +vmlinux sock_get_timestamp 0x9351a04c +vmlinux sock_i_ino 0x528ae3c2 +vmlinux sock_i_uid 0x3c9ab384 +vmlinux sock_init_data 0x49b902d1 +vmlinux sock_kfree_s 0x909bb647 +vmlinux sock_kmalloc 0x91d19eb2 +vmlinux sock_map_fd 0xc4e87205 +vmlinux sock_no_accept 0x005ce8d9 +vmlinux sock_no_bind 0x59df0b94 +vmlinux sock_no_connect 0xdcc90fce +vmlinux sock_no_getname 0x80669774 +vmlinux sock_no_getsockopt 0x9e0674a6 +vmlinux sock_no_ioctl 0xd825a066 +vmlinux sock_no_listen 0x6d5b6c5a +vmlinux sock_no_mmap 0x63913cbf +vmlinux sock_no_poll 0x5aa9cd6c +vmlinux sock_no_recvmsg 0x4c82e2ed +vmlinux sock_no_sendmsg 0x80911e0a +vmlinux sock_no_sendpage 0xd0dd741d +vmlinux sock_no_setsockopt 0xd150e4a6 +vmlinux sock_no_shutdown 0xf0f14ad9 +vmlinux sock_no_socketpair 0x01b73f8c +vmlinux sock_recvmsg 0x6f61c9d9 +vmlinux sock_register 0x86e935b2 +vmlinux sock_release 0xc7f89713 +vmlinux sock_rfree 0x08840af1 +vmlinux sock_sendmsg 0x5b41abfb +vmlinux sock_setsockopt 0xfc8c856b +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0xf1ba82c7 +vmlinux sock_wfree 0x61f06e4b +vmlinux sock_wmalloc 0x50674aeb +vmlinux sockfd_lookup 0x2c0be12f +vmlinux sonet_copy_stats 0x89195dc3 +vmlinux sonet_subtract_stats 0x1a24e5e2 +vmlinux sort 0x310917fe +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux start_tty 0xf9881499 +vmlinux steal_locks 0xbe701078 +vmlinux stop_tty 0x877c9623 +vmlinux strcspn 0x6c1ce5ce +vmlinux strlcat 0xdd0a2ba2 +vmlinux strlcpy 0x73e20c1c +vmlinux strnchr 0x0a3131f6 +vmlinux strncpy_from_user 0x245ec8e8 +vmlinux strnicmp 0x4e830a3e +vmlinux strnlen_user 0xbcc308bb +vmlinux strpbrk 0x9a1dfd65 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0xc7ec6c27 +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0x9ebe240b +vmlinux submit_bh 0x0dbb1660 +vmlinux submit_bio 0xd6ea55ec +vmlinux subsys_create_file 0x96b99598 +vmlinux subsys_remove_file 0x7795a466 +vmlinux subsystem_init 0x7e012e8d +vmlinux subsystem_register 0x3d41606b +vmlinux subsystem_unregister 0x1e78af53 +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0x12510449 +vmlinux switch_APIC_timer_to_ipi 0xa5c79544 +vmlinux switch_ipi_to_APIC_timer 0xac7eb84c +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0xf667f12b +vmlinux sync_dirty_buffer 0x9ba027c7 +vmlinux sync_inode 0xc5406082 +vmlinux sync_mapping_buffers 0xbe2a7bd4 +vmlinux sync_page_range 0x4bef923b +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0x268cc6a2 +vmlinux sys_open 0x0359f865 +vmlinux sys_read 0x16bd3948 +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0x29637e1f +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0xde56612c +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0x459ad1d6 +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0xa78304ee +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0xa32fc52d +vmlinux sysdev_class_unregister 0xc16cdafc +vmlinux sysdev_create_file 0xc6136ac5 +vmlinux sysdev_driver_register 0x1a49f950 +vmlinux sysdev_driver_unregister 0xc3cf168b +vmlinux sysdev_register 0x1efcf16c +vmlinux sysdev_remove_file 0x0596f2df +vmlinux sysdev_unregister 0x5d43c651 +vmlinux sysfs_chmod_file 0xce7f4693 +vmlinux sysfs_create_bin_file 0x0d0129f6 +vmlinux sysfs_create_dir 0x6b489f34 +vmlinux sysfs_create_file 0x67b9ab1e +vmlinux sysfs_create_group 0x69d766b4 +vmlinux sysfs_create_link 0x961f4214 +vmlinux sysfs_remove_bin_file 0x1e98cf99 +vmlinux sysfs_remove_dir 0x2ef283e5 +vmlinux sysfs_remove_file 0xb0b76c5f +vmlinux sysfs_remove_group 0x3dd240f3 +vmlinux sysfs_remove_link 0x0af1f480 +vmlinux sysfs_rename_dir 0xb9ff3863 +vmlinux sysfs_update_file 0x69e7929c +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0xc51462c8 +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0xfb34cc2e +vmlinux task_nice 0x630195cd +vmlinux task_no_data_intr 0xd8d6afc6 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0xd6edcf04 +vmlinux tc_classify 0x0ca42ca7 +vmlinux tcf_em_register 0x6663d4f8 +vmlinux tcf_em_tree_destroy 0x7e7786fb +vmlinux tcf_em_tree_dump 0x86d05066 +vmlinux tcf_em_tree_validate 0xee662cdb +vmlinux tcf_em_unregister 0x88129d0f +vmlinux tcf_exts_change 0x9e2dd881 +vmlinux tcf_exts_destroy 0x3887226f +vmlinux tcf_exts_dump 0xa5f44223 +vmlinux tcf_exts_dump_stats 0x0ec2d35f +vmlinux tcf_exts_validate 0xc80b3b1e +vmlinux tcf_police 0x1860ffa5 +vmlinux tcf_police_destroy 0x872f17f6 +vmlinux tcf_police_dump 0xfa5e8e66 +vmlinux tcf_police_dump_stats 0xa7bb2123 +vmlinux tcf_police_hash 0x8493d6e7 +vmlinux tcf_police_ht 0x93da8ff5 +vmlinux tcf_police_locate 0x55c50a07 +vmlinux tcf_police_lookup 0xf2477819 +vmlinux tcf_police_new_index 0x7ae0f6c9 +vmlinux tcp_check_req 0x8982d9bf +vmlinux tcp_child_process 0x330bfe98 +vmlinux tcp_close 0xd75a1189 +vmlinux tcp_connect 0x1653d927 +vmlinux tcp_create_openreq_child 0xd2f7ffcc +vmlinux tcp_death_row 0x6f28cb96 +vmlinux tcp_disconnect 0xe8fa0f0b +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0xcefb7ecb +vmlinux tcp_getsockopt 0x68fa5466 +vmlinux tcp_hashinfo 0x08cc9ddb +vmlinux tcp_init_congestion_ops 0x9759c4bb +vmlinux tcp_init_xmit_timers 0xe81dc9c3 +vmlinux tcp_ioctl 0xd9393b3e +vmlinux tcp_make_synack 0x662bda86 +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0xed58a232 +vmlinux tcp_poll 0x4d8781f0 +vmlinux tcp_proc_register 0x2d557552 +vmlinux tcp_proc_unregister 0x4c0d1942 +vmlinux tcp_prot 0xbfe4a8bd +vmlinux tcp_rcv_established 0xb7af31c3 +vmlinux tcp_rcv_state_process 0x4f912a11 +vmlinux tcp_read_sock 0x15c1dd0e +vmlinux tcp_recvmsg 0xf4171d73 +vmlinux tcp_register_congestion_control 0xc037251f +vmlinux tcp_reno_cong_avoid 0xff881764 +vmlinux tcp_reno_min_cwnd 0xe597938b +vmlinux tcp_reno_ssthresh 0xddf669e6 +vmlinux tcp_sendmsg 0x2577c85f +vmlinux tcp_sendpage 0x6149eb4a +vmlinux tcp_setsockopt 0x85d44ec5 +vmlinux tcp_shutdown 0x4b882af5 +vmlinux tcp_simple_retransmit 0x30783545 +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0xd3964f82 +vmlinux tcp_timewait_state_process 0x7710bbd2 +vmlinux tcp_unhash 0x1f71a1e7 +vmlinux tcp_unregister_congestion_control 0xe24ded95 +vmlinux tcp_v4_conn_request 0x7a41c439 +vmlinux tcp_v4_connect 0xdda2c0eb +vmlinux tcp_v4_destroy_sock 0x6c37f1f3 +vmlinux tcp_v4_do_rcv 0x8902cf89 +vmlinux tcp_v4_remember_stamp 0xa3df4570 +vmlinux tcp_v4_send_check 0xa44d5ae4 +vmlinux tcp_v4_syn_recv_sock 0x537bb850 +vmlinux test_clear_page_dirty 0xef90600e +vmlinux test_set_page_writeback 0x9f4c59cd +vmlinux textsearch_destroy 0xb557232b +vmlinux textsearch_find_continuous 0xcb5494c5 +vmlinux textsearch_prepare 0xc4a02d9b +vmlinux textsearch_register 0xb7063684 +vmlinux textsearch_unregister 0xfd113fa1 +vmlinux thaw_bdev 0x5b84cffa +vmlinux timespec_trunc 0xc045ad4e +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0xcd54a7d5 +vmlinux tr_type_trans 0xf5881666 +vmlinux transport_add_device 0x4c8b5222 +vmlinux transport_class_register 0x274f87ed +vmlinux transport_class_unregister 0x9dfe9b69 +vmlinux transport_configure_device 0xb62b0337 +vmlinux transport_destroy_device 0x3211af2b +vmlinux transport_remove_device 0x8641c798 +vmlinux transport_setup_device 0x69417186 +vmlinux truncate_inode_pages 0xb1016add +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0x977cff0e +vmlinux try_to_release_page 0x484e6a6d +vmlinux tty_check_change 0xf51d2c30 +vmlinux tty_flip_buffer_push 0xc1d9b2f6 +vmlinux tty_get_baud_rate 0xcbe30c81 +vmlinux tty_hangup 0x30d51343 +vmlinux tty_hung_up_p 0xb4f70e93 +vmlinux tty_ldisc_deref 0x58fe2b2e +vmlinux tty_ldisc_flush 0x66594a19 +vmlinux tty_ldisc_get 0xb97f1cad +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x8b2d1c59 +vmlinux tty_ldisc_ref_wait 0x3a46b3f5 +vmlinux tty_name 0x5b9163fc +vmlinux tty_register_device 0xbf5f0d3c +vmlinux tty_register_driver 0x51711744 +vmlinux tty_register_ldisc 0x49796e7d +vmlinux tty_set_operations 0x44bce4de +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0xcd841745 +vmlinux tty_unregister_driver 0xce0e3c37 +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0xca4a7416 +vmlinux tty_wait_until_sent 0x4a07efad +vmlinux tty_wakeup 0x419068bb +vmlinux uart_add_one_port 0xb47e3ee9 +vmlinux uart_get_baud_rate 0x2852c547 +vmlinux uart_get_divisor 0xa6ddd994 +vmlinux uart_match_port 0x07c9ade0 +vmlinux uart_register_driver 0xe539b95c +vmlinux uart_remove_one_port 0xf1e51a6f +vmlinux uart_resume_port 0x6754c7a5 +vmlinux uart_suspend_port 0x07396582 +vmlinux uart_unregister_driver 0x30fbe0cc +vmlinux uart_update_timeout 0x2b108663 +vmlinux uart_write_wakeup 0xfa24b5ea +vmlinux udp_disconnect 0x3c4e915c +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0xabad83d7 +vmlinux udp_ioctl 0xbd135aef +vmlinux udp_poll 0xc3d586e6 +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0xf1d0655d +vmlinux udp_proc_unregister 0xd6b7013b +vmlinux udp_prot 0xa25ab5e7 +vmlinux udp_sendmsg 0xdb99c522 +vmlinux uhci_check_and_reset_hc 0x5012df78 +vmlinux uhci_reset_hc 0x7ea40e3c +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unload_nls 0xaa3d26b6 +vmlinux unlock_buffer 0x3c7f0003 +vmlinux unlock_kernel 0x5dfe8f1a +vmlinux unlock_new_inode 0x3e76e9c9 +vmlinux unlock_page 0xf555f8db +vmlinux unlock_rename 0xf48144a0 +vmlinux unmap_mapping_range 0x2d4f6347 +vmlinux unmap_underlying_metadata 0xad555783 +vmlinux unregister_8022_client 0xd24ac92b +vmlinux unregister_acpi_bus_type 0xa69b8df2 +vmlinux unregister_binfmt 0x25f7aace +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0xbbe9ffe8 +vmlinux unregister_exec_domain 0x4c0bcfb6 +vmlinux unregister_filesystem 0x684ff467 +vmlinux unregister_framebuffer 0xaeceda55 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_key_type 0x9a1a6521 +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0xafdd06e1 +vmlinux unregister_netdevice 0x353b4013 +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0x2c0bd970 +vmlinux unregister_qdisc 0xcb50451f +vmlinux unregister_quota_format 0xd5121732 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0x048fd714 +vmlinux unregister_snap_client 0x908251be +vmlinux unregister_sysctl_table 0x0f0df811 +vmlinux unregister_sysrq_key 0x964be6da +vmlinux unregister_tcf_proto_ops 0x5336954b +vmlinux unregister_timer_hook 0x3fa545f8 +vmlinux unregister_wlandev 0x62be7b43 +vmlinux unset_nmi_callback 0x2ef9373e +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0x12f59483 +vmlinux update_region 0x9427b754 +vmlinux user_describe 0x24fd1fb0 +vmlinux user_destroy 0x9877b5ce +vmlinux user_duplicate 0xe0646757 +vmlinux user_instantiate 0x6539b7c7 +vmlinux user_match 0x53686f08 +vmlinux user_read 0xbef04fa9 +vmlinux user_update 0x5e42db68 +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0xf7249fea +vmlinux vc_cons 0x8e99beca +vmlinux vc_resize 0x23637e89 +vmlinux vcc_hash 0x2cc2d52d +vmlinux vcc_insert_socket 0x86cfeb67 +vmlinux vcc_release_async 0x4d3b40a5 +vmlinux vcc_sklist_lock 0x31eb46b9 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0xe259680b +vmlinux vfs_follow_link 0x85897b02 +vmlinux vfs_fstat 0xcb841136 +vmlinux vfs_get_dqblk 0x038b2da0 +vmlinux vfs_get_dqinfo 0x45f486b4 +vmlinux vfs_getattr 0x16562e0b +vmlinux vfs_link 0xe3628774 +vmlinux vfs_llseek 0x75904472 +vmlinux vfs_lstat 0x91d803ff +vmlinux vfs_mkdir 0x75698b4f +vmlinux vfs_mknod 0x21d16f18 +vmlinux vfs_permission 0x8a9f26b5 +vmlinux vfs_quota_off 0x3c092884 +vmlinux vfs_quota_on 0x14585ea9 +vmlinux vfs_quota_on_mount 0x90c73925 +vmlinux vfs_quota_sync 0xb5b3fa10 +vmlinux vfs_read 0xbf5e4a91 +vmlinux vfs_readdir 0x569c0c72 +vmlinux vfs_readlink 0xf39cc241 +vmlinux vfs_readv 0xb0098f49 +vmlinux vfs_rename 0x5e24ee1e +vmlinux vfs_rmdir 0xf2f12c8b +vmlinux vfs_set_dqblk 0x1c0434fb +vmlinux vfs_set_dqinfo 0x32e32ed5 +vmlinux vfs_stat 0x4e193f40 +vmlinux vfs_statfs 0x2cd27784 +vmlinux vfs_symlink 0x6074108f +vmlinux vfs_unlink 0x4424176c +vmlinux vfs_write 0xb225bce2 +vmlinux vfs_writev 0xda944722 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x0e96f163 +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0x5cd4f907 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0x89ea67fe +vmlinux vmtruncate 0x0f4f0c76 +vmlinux vprintk 0xaec4759f +vmlinux vscnprintf 0x0ead5073 +vmlinux vsnprintf 0x6989a769 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0x88ce4ace +vmlinux wait_for_completion_interruptible 0xe298bc73 +vmlinux wait_for_completion_interruptible_timeout 0x6fc81017 +vmlinux wait_for_completion_timeout 0xb8ca5855 +vmlinux wait_on_page_bit 0xb4403f7b +vmlinux wait_on_sync_kiocb 0x27131a4e +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xd7e7ca24 +vmlinux wake_up_process 0x5f328cdd +vmlinux wireless_send_event 0x34abcea5 +vmlinux wireless_spy_update 0xc4060cff +vmlinux wlan_setup 0xa39b20b0 +vmlinux wlan_unsetup 0x29545547 +vmlinux write_inode_now 0x23fc972c +vmlinux write_one_page 0x1b7fd7f5 +vmlinux x86_acpiid_to_apicid 0x062bdb0e +vmlinux xfrm4_rcv 0x42f24e5b +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0xe44b7647 +vmlinux xfrm_bundle_ok 0x26128941 +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0x13d69c7b +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0xf03213c7 +vmlinux xfrm_dst_lookup 0x11372655 +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0xfeb4d6b1 +vmlinux xfrm_find_acq_byseq 0x70c3adfa +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0xe67325bb +vmlinux xfrm_init_state 0xd3e39910 +vmlinux xfrm_lookup 0xe4769c85 +vmlinux xfrm_parse_spi 0x33918f88 +vmlinux xfrm_policy_alloc 0x37941ab0 +vmlinux xfrm_policy_byid 0xf24fc72e +vmlinux xfrm_policy_bysel 0xc88f7e0a +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x664d3012 +vmlinux xfrm_policy_list 0x15e78731 +vmlinux xfrm_policy_register_afinfo 0xad843345 +vmlinux xfrm_policy_unregister_afinfo 0x4be13f73 +vmlinux xfrm_policy_walk 0x294cf903 +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0x0bc9362b +vmlinux xfrm_register_type 0x64e4f645 +vmlinux xfrm_replay_advance 0xc5c39c3b +vmlinux xfrm_replay_check 0x35a1fb22 +vmlinux xfrm_state_add 0x31dd4888 +vmlinux xfrm_state_alloc 0x0aa1d026 +vmlinux xfrm_state_check 0x45cc56f2 +vmlinux xfrm_state_check_expire 0x19ef9229 +vmlinux xfrm_state_delete 0xc11bff8b +vmlinux xfrm_state_delete_tunnel 0xd9e7863a +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0x1e83ae4f +vmlinux xfrm_state_lookup 0xd7f50c8c +vmlinux xfrm_state_mtu 0xda44ab3e +vmlinux xfrm_state_register_afinfo 0xd110a5d3 +vmlinux xfrm_state_unregister_afinfo 0xd8e8fbd4 +vmlinux xfrm_state_update 0x218e5b3c +vmlinux xfrm_state_walk 0x65b30e5c +vmlinux xfrm_unregister_km 0xfab83a01 +vmlinux xfrm_unregister_type 0x0f2f513c +vmlinux xfrm_user_policy 0x2813bc70 +vmlinux xrlim_allow 0xf33e87fe +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xf448c4e8 +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0xf3cca1d6 +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0x65109bb5 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/i386/server-bigiron +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/i386/server-bigiron @@ -0,0 +1,5764 @@ +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_detect_processor 0x16836e04 +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_get_freqs 0xb9c4330f +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_get_processor_frequency 0x4cdb4bd0 +arch/i386/kernel/scx200 scx200_cb_base 0x907665bd +arch/i386/kernel/scx200 scx200_gpio_base 0x254e5667 +arch/i386/kernel/scx200 scx200_gpio_configure 0x80c65a79 +arch/i386/kernel/scx200 scx200_gpio_shadow 0x9272bc53 +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0x73f1ce09 +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0x02b6f9c9 +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0xac5db655 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xdc30c180 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/acpi/ac acpi_get_ac_dir 0xf252f716 +drivers/acpi/battery acpi_get_battery_dir 0x11150728 +drivers/acpi/i2c_acpi_ec acpi_get_ec_hc 0x55404cf9 +drivers/acpi/processor acpi_processor_notify_smm 0x694faf7e +drivers/acpi/processor acpi_processor_register_performance 0x858fc2e6 +drivers/acpi/processor acpi_processor_set_thermal_limit 0xe8a3605f +drivers/acpi/processor acpi_processor_unregister_performance 0x70b3538a +drivers/atm/suni suni_init 0x0c5c1402 +drivers/atm/uPD98402 uPD98402_init 0xf69a7a78 +drivers/block/loop loop_register_transfer 0x742eb760 +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0xb4117ced +drivers/block/paride/paride pi_disconnect 0x3a1d9686 +drivers/block/paride/paride pi_do_claimed 0x3c7a1878 +drivers/block/paride/paride pi_init 0xa72725a6 +drivers/block/paride/paride pi_read_block 0x3624b77e +drivers/block/paride/paride pi_read_regr 0xda80b4c2 +drivers/block/paride/paride pi_register 0xb10ff302 +drivers/block/paride/paride pi_release 0xf1e6b962 +drivers/block/paride/paride pi_schedule_claimed 0x7de051ca +drivers/block/paride/paride pi_unregister 0xe6db8896 +drivers/block/paride/paride pi_write_block 0x710cc12c +drivers/block/paride/paride pi_write_regr 0xa583852b +drivers/cdrom/cdrom cdrom_get_last_written 0xd5528fd4 +drivers/cdrom/cdrom cdrom_get_media_event 0x57dad1fd +drivers/cdrom/cdrom cdrom_ioctl 0x88a2b176 +drivers/cdrom/cdrom cdrom_media_changed 0x39ca979e +drivers/cdrom/cdrom cdrom_mode_select 0xd549b0bd +drivers/cdrom/cdrom cdrom_mode_sense 0xeaa02ac3 +drivers/cdrom/cdrom cdrom_number_of_slots 0x09c513a2 +drivers/cdrom/cdrom cdrom_open 0xbaa16b6c +drivers/cdrom/cdrom cdrom_release 0x7aab9c1c +drivers/cdrom/cdrom init_cdrom_command 0x4f476e96 +drivers/cdrom/cdrom register_cdrom 0x9b67221d +drivers/cdrom/cdrom unregister_cdrom 0xa815c477 +drivers/char/agp/agpgart agp3_generic_cleanup 0xc2424641 +drivers/char/agp/agpgart agp3_generic_configure 0x4b085dbf +drivers/char/agp/agpgart agp3_generic_fetch_size 0xde9b17ed +drivers/char/agp/agpgart agp3_generic_sizes 0x546264cf +drivers/char/agp/agpgart agp3_generic_tlbflush 0xc531d42f +drivers/char/agp/agpgart agp_add_bridge 0x1ce30570 +drivers/char/agp/agpgart agp_alloc_bridge 0x11ec1aac +drivers/char/agp/agpgart agp_allocate_memory 0x80b896ff +drivers/char/agp/agpgart agp_backend_acquire 0x7c72558f +drivers/char/agp/agpgart agp_backend_release 0x3661b73c +drivers/char/agp/agpgart agp_bind_memory 0xad8dd699 +drivers/char/agp/agpgart agp_bridge 0xf09a8e30 +drivers/char/agp/agpgart agp_bridges 0x673f815e +drivers/char/agp/agpgart agp_collect_device_status 0x1f9eab29 +drivers/char/agp/agpgart agp_copy_info 0xbaf88044 +drivers/char/agp/agpgart agp_create_memory 0xe780eaee +drivers/char/agp/agpgart agp_device_command 0xe6d5c272 +drivers/char/agp/agpgart agp_enable 0x4cfcb647 +drivers/char/agp/agpgart agp_find_bridge 0xf6eef861 +drivers/char/agp/agpgart agp_free_key 0xd0fef3b2 +drivers/char/agp/agpgart agp_free_memory 0x4a6205bc +drivers/char/agp/agpgart agp_generic_alloc_by_type 0xa4495468 +drivers/char/agp/agpgart agp_generic_alloc_page 0xd691ed1f +drivers/char/agp/agpgart agp_generic_create_gatt_table 0xf7f45a40 +drivers/char/agp/agpgart agp_generic_destroy_page 0xbba27749 +drivers/char/agp/agpgart agp_generic_enable 0xd90b9d4d +drivers/char/agp/agpgart agp_generic_free_by_type 0xfa5e4ad0 +drivers/char/agp/agpgart agp_generic_free_gatt_table 0x2fcb49c8 +drivers/char/agp/agpgart agp_generic_insert_memory 0xe2fe5c66 +drivers/char/agp/agpgart agp_generic_mask_memory 0x8e4741f4 +drivers/char/agp/agpgart agp_generic_remove_memory 0x8d04aea9 +drivers/char/agp/agpgart agp_memory_reserved 0xe089cfcc +drivers/char/agp/agpgart agp_num_entries 0xd6feefa5 +drivers/char/agp/agpgart agp_off 0x7538b132 +drivers/char/agp/agpgart agp_put_bridge 0xb116c6ff +drivers/char/agp/agpgart agp_remove_bridge 0x250880f7 +drivers/char/agp/agpgart agp_try_unsupported_boot 0xc5d9c46c +drivers/char/agp/agpgart agp_unbind_memory 0x65e350f5 +drivers/char/agp/agpgart get_agp_version 0xa5528542 +drivers/char/agp/agpgart global_cache_flush 0xa4d4f0e6 +drivers/char/agp/agpgart map_page_into_agp 0x36d2b7a2 +drivers/char/agp/agpgart unmap_page_from_agp 0x6287b125 +drivers/char/drm/drm drm_addbufs_agp 0xd0ddc532 +drivers/char/drm/drm drm_addbufs_fb 0x37eb7265 +drivers/char/drm/drm drm_addbufs_pci 0x2b132f8a +drivers/char/drm/drm drm_addmap 0x2aa369cd +drivers/char/drm/drm drm_agp_acquire 0x98915274 +drivers/char/drm/drm drm_agp_alloc 0x09e0056d +drivers/char/drm/drm drm_agp_bind 0x78dc426c +drivers/char/drm/drm drm_agp_bind_memory 0x47899393 +drivers/char/drm/drm drm_agp_enable 0xd86c46e0 +drivers/char/drm/drm drm_agp_free 0x40317204 +drivers/char/drm/drm drm_agp_info 0xeb9653e5 +drivers/char/drm/drm drm_agp_release 0xbbae17a9 +drivers/char/drm/drm drm_agp_unbind 0x464db4af +drivers/char/drm/drm drm_ati_pcigart_cleanup 0x298131fc +drivers/char/drm/drm drm_ati_pcigart_init 0xebf22ff5 +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0x85717635 +drivers/char/drm/drm drm_core_reclaim_buffers 0x22bc955f +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0x14c93ab1 +drivers/char/drm/drm drm_fasync 0x2309138f +drivers/char/drm/drm drm_get_dev 0x68eee7f3 +drivers/char/drm/drm drm_get_resource_len 0xdbafb6ec +drivers/char/drm/drm drm_get_resource_start 0x8b9925af +drivers/char/drm/drm drm_init 0x372c7676 +drivers/char/drm/drm drm_ioctl 0x0a918c35 +drivers/char/drm/drm drm_irq_uninstall 0xad9ec364 +drivers/char/drm/drm drm_mmap 0x44c142c6 +drivers/char/drm/drm drm_open 0xf0b62f88 +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0x10d777e7 +drivers/char/drm/drm drm_pci_free 0x5a5dc2af +drivers/char/drm/drm drm_poll 0xe119e305 +drivers/char/drm/drm drm_release 0x45d2942f +drivers/char/drm/drm drm_rmmap 0x40d8dad9 +drivers/char/drm/drm drm_rmmap_locked 0x92c28e7d +drivers/char/drm/drm drm_vbl_send_signals 0x4361c620 +drivers/char/generic_serial gs_block_til_ready 0x3dc3cefe +drivers/char/generic_serial gs_chars_in_buffer 0xf24fc3a5 +drivers/char/generic_serial gs_close 0x8aeb7de0 +drivers/char/generic_serial gs_flush_buffer 0x67b6cd77 +drivers/char/generic_serial gs_flush_chars 0xf3915462 +drivers/char/generic_serial gs_getserial 0x4c2571bd +drivers/char/generic_serial gs_got_break 0x8218b158 +drivers/char/generic_serial gs_hangup 0x802260d5 +drivers/char/generic_serial gs_init_port 0x7f60bf83 +drivers/char/generic_serial gs_put_char 0xcdad6269 +drivers/char/generic_serial gs_set_termios 0xe3e02711 +drivers/char/generic_serial gs_setserial 0xe28acddb +drivers/char/generic_serial gs_start 0xe1c83c53 +drivers/char/generic_serial gs_stop 0x38d799a0 +drivers/char/generic_serial gs_write 0xdd907054 +drivers/char/generic_serial gs_write_room 0x02625593 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0x3b793f84 +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0xeebc7b24 +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0x56d75081 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0x602a86a5 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0x93ea9443 +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0xa418f631 +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0xaf150623 +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0xa6dc2e94 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0x221a7ca6 +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x61bc1c6e +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0x1e9731ff +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0x19368e56 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0x7a74c6c6 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0x718a3db7 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0x4505aa44 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0xabd49e48 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0x0e0ef4ec +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0x0e400821 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0x9d56f982 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0x959ac2ee +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0x61cb1ea6 +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0x0d3a0672 +drivers/char/nvram __nvram_check_checksum 0x2adec1e0 +drivers/char/nvram __nvram_read_byte 0x17ff2c1d +drivers/char/nvram __nvram_write_byte 0xa8813189 +drivers/char/nvram nvram_check_checksum 0x7da28f12 +drivers/char/nvram nvram_read_byte 0x0f28cb91 +drivers/char/nvram nvram_write_byte 0x9ce3f83f +drivers/char/sonypi sonypi_camera_command 0x89590f57 +drivers/char/tpm/tpm tpm_open 0x974d29a7 +drivers/char/tpm/tpm tpm_pm_resume 0xa018b33d +drivers/char/tpm/tpm tpm_pm_suspend 0xdc7e449b +drivers/char/tpm/tpm tpm_read 0x17933776 +drivers/char/tpm/tpm tpm_register_hardware 0x8b1b0e00 +drivers/char/tpm/tpm tpm_release 0x7a3d385a +drivers/char/tpm/tpm tpm_remove_hardware 0x0504dbf5 +drivers/char/tpm/tpm tpm_show_caps 0xe9f28c8e +drivers/char/tpm/tpm tpm_show_pcrs 0x3cd1eb2f +drivers/char/tpm/tpm tpm_show_pubek 0x4b31b736 +drivers/char/tpm/tpm tpm_store_cancel 0x2847f4ba +drivers/char/tpm/tpm tpm_write 0xe7e9fe39 +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0xa81c7f1a +drivers/cpufreq/freq_table cpufreq_freq_attr_scaling_available_freqs 0xd5d3f3e3 +drivers/cpufreq/freq_table cpufreq_frequency_get_table 0x2f47d8c7 +drivers/cpufreq/freq_table cpufreq_frequency_table_cpuinfo 0xa0bab49e +drivers/cpufreq/freq_table cpufreq_frequency_table_get_attr 0x706b3a33 +drivers/cpufreq/freq_table cpufreq_frequency_table_put_attr 0x7ae1ae8e +drivers/cpufreq/freq_table cpufreq_frequency_table_target 0x0c10acf8 +drivers/cpufreq/freq_table cpufreq_frequency_table_verify 0xeda9535b +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-bit i2c_bit_add_bus 0x2b995553 +drivers/i2c/algos/i2c-algo-bit i2c_bit_del_bus 0xa2a00f43 +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0x5ec21586 +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0xd7fb4f96 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0xaa390bca +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0x230051da +drivers/i2c/busses/i2c-amd756 amd756_smbus 0x158456d1 +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0x801a82ce +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0x4166a14c +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/i2c/i2c-core i2c_adapter_class 0x198dd812 +drivers/i2c/i2c-core i2c_adapter_dev_release 0x0bf40ae2 +drivers/i2c/i2c-core i2c_adapter_driver 0x7229b29c +drivers/i2c/i2c-core i2c_add_adapter 0x9888addd +drivers/i2c/i2c-core i2c_add_driver 0x3494ff40 +drivers/i2c/i2c-core i2c_attach_client 0x74855d3d +drivers/i2c/i2c-core i2c_bus_type 0x03751e73 +drivers/i2c/i2c-core i2c_check_addr 0xee2c91ad +drivers/i2c/i2c-core i2c_clients_command 0x7b94445a +drivers/i2c/i2c-core i2c_control 0x6c817338 +drivers/i2c/i2c-core i2c_del_adapter 0xebc5dfa3 +drivers/i2c/i2c-core i2c_del_driver 0x3405ef0e +drivers/i2c/i2c-core i2c_detach_client 0x35fa62bf +drivers/i2c/i2c-core i2c_get_adapter 0x2c027ee1 +drivers/i2c/i2c-core i2c_master_recv 0x0180b6e4 +drivers/i2c/i2c-core i2c_master_send 0xd4bd527e +drivers/i2c/i2c-core i2c_probe 0xfe421941 +drivers/i2c/i2c-core i2c_put_adapter 0x145fcc62 +drivers/i2c/i2c-core i2c_release_client 0x6d374d5b +drivers/i2c/i2c-core i2c_smbus_read_byte 0x720be107 +drivers/i2c/i2c-core i2c_smbus_read_byte_data 0xeb46367b +drivers/i2c/i2c-core i2c_smbus_read_i2c_block_data 0xce8ab9e3 +drivers/i2c/i2c-core i2c_smbus_read_word_data 0x148c726a +drivers/i2c/i2c-core i2c_smbus_write_block_data 0xb6c5c2c0 +drivers/i2c/i2c-core i2c_smbus_write_byte 0xa644bc57 +drivers/i2c/i2c-core i2c_smbus_write_byte_data 0xc2f80519 +drivers/i2c/i2c-core i2c_smbus_write_quick 0x73de9749 +drivers/i2c/i2c-core i2c_smbus_write_word_data 0xe925604c +drivers/i2c/i2c-core i2c_smbus_xfer 0x20d8750d +drivers/i2c/i2c-core i2c_transfer 0xa68c7568 +drivers/i2c/i2c-core i2c_use_client 0x0c1fb5e5 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0x9a262204 +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x4358bad7 +drivers/ieee1394/ieee1394 csr1212_read 0x85bc1770 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0xc5bdcc16 +drivers/ieee1394/ieee1394 dma_prog_region_free 0x5f679a26 +drivers/ieee1394/ieee1394 dma_prog_region_init 0xb9a9eae4 +drivers/ieee1394/ieee1394 dma_region_alloc 0xeb53251a +drivers/ieee1394/ieee1394 dma_region_free 0xc30995a4 +drivers/ieee1394/ieee1394 dma_region_init 0x8286e270 +drivers/ieee1394/ieee1394 dma_region_mmap 0x176c850c +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0xe71e21ca +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0xb16fa2e0 +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x389f764d +drivers/ieee1394/ieee1394 highlevel_host_reset 0x74d08cc6 +drivers/ieee1394/ieee1394 hpsb_add_host 0xc5d19b1c +drivers/ieee1394/ieee1394 hpsb_alloc_host 0xf076b2c5 +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0x52f9e671 +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0x598e198b +drivers/ieee1394/ieee1394 hpsb_bus_reset 0xca58b721 +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0x6628a47e +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0x61916dc9 +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0x7de79525 +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0xaa3cfb06 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0x4022a030 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0xe7f2bccb +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0xbe498638 +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0xaed22bc7 +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0xed49951f +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0x708b3997 +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0x2153b219 +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0xc77e634c +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0xc33294c6 +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0xa23d4c73 +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0x393cc8d8 +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0xd82cd162 +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0x47ad5c9a +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0xa468c6d1 +drivers/ieee1394/ieee1394 hpsb_iso_stop 0x69f9b528 +drivers/ieee1394/ieee1394 hpsb_iso_wake 0x97c48662 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0xb0aa4c5e +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0xe2dfb4b1 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0x76bc6c30 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0x4e28ebc2 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0x4c56ce8f +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0x5f0dc463 +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0xf873a0ce +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0x4a0c3fda +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0x145a2b8c +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0xbd1a6570 +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0x84cb5dca +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0x79c2b677 +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0x21b1c2ea +drivers/ieee1394/ieee1394 hpsb_node_write 0x5c345c12 +drivers/ieee1394/ieee1394 hpsb_packet_received 0x8a4a44c3 +drivers/ieee1394/ieee1394 hpsb_packet_sent 0xb16217be +drivers/ieee1394/ieee1394 hpsb_packet_success 0x6b22b0b1 +drivers/ieee1394/ieee1394 hpsb_protocol_class 0x7744cf64 +drivers/ieee1394/ieee1394 hpsb_read 0x138e88c3 +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0xb6af4608 +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0xc1ad79ad +drivers/ieee1394/ieee1394 hpsb_register_protocol 0xe4721ebb +drivers/ieee1394/ieee1394 hpsb_remove_host 0xd5a43fa5 +drivers/ieee1394/ieee1394 hpsb_reset_bus 0xeb32d802 +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0x1fb2b61f +drivers/ieee1394/ieee1394 hpsb_selfid_received 0xe46fe9a3 +drivers/ieee1394/ieee1394 hpsb_send_packet 0x68e3a486 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0x13685402 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0xa5b07ace +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0xe367c2ba +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0x1f9fa036 +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0xdc09a2da +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0x90c77264 +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0xe741c880 +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0x172daef7 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0xe1e9cf15 +drivers/ieee1394/ieee1394 hpsb_write 0x6907d7dc +drivers/ieee1394/ieee1394 ieee1394_bus_type 0x6af8beea +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0x1d5aeebc +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0xb317a3bf +drivers/ieee1394/ohci1394 ohci1394_stop_context 0x4a6b8a85 +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0x4f38ba9d +drivers/infiniband/core/ib_cm ib_cm_establish 0xef366d29 +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0xe8effc5a +drivers/infiniband/core/ib_cm ib_cm_listen 0x8d90351c +drivers/infiniband/core/ib_cm ib_create_cm_id 0x695461a3 +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0x849a9858 +drivers/infiniband/core/ib_cm ib_send_cm_apr 0x30ca46e1 +drivers/infiniband/core/ib_cm ib_send_cm_drep 0xbf0c3f48 +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0xd1b515c9 +drivers/infiniband/core/ib_cm ib_send_cm_lap 0xd95ff368 +drivers/infiniband/core/ib_cm ib_send_cm_mra 0xdc15e628 +drivers/infiniband/core/ib_cm ib_send_cm_rej 0x7ba21bfb +drivers/infiniband/core/ib_cm ib_send_cm_rep 0xbe9e3914 +drivers/infiniband/core/ib_cm ib_send_cm_req 0xfe436c94 +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0x88653beb +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0x58fc03f7 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0xc3706eb4 +drivers/infiniband/core/ib_core ib_alloc_device 0x3bb966f1 +drivers/infiniband/core/ib_core ib_alloc_fmr 0xf314eb48 +drivers/infiniband/core/ib_core ib_alloc_mw 0x083d010b +drivers/infiniband/core/ib_core ib_alloc_pd 0x5f1d5d0a +drivers/infiniband/core/ib_core ib_attach_mcast 0xc734ddae +drivers/infiniband/core/ib_core ib_create_ah 0x09ee95d7 +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0xaba99deb +drivers/infiniband/core/ib_core ib_create_cq 0x8282c426 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0x455ab441 +drivers/infiniband/core/ib_core ib_create_qp 0x130119dd +drivers/infiniband/core/ib_core ib_create_srq 0xde208983 +drivers/infiniband/core/ib_core ib_dealloc_device 0x741315a6 +drivers/infiniband/core/ib_core ib_dealloc_fmr 0x1a6ce86e +drivers/infiniband/core/ib_core ib_dealloc_mw 0x3acb53fa +drivers/infiniband/core/ib_core ib_dealloc_pd 0x94570f92 +drivers/infiniband/core/ib_core ib_dereg_mr 0xeb71e7ab +drivers/infiniband/core/ib_core ib_destroy_ah 0xfaea94b8 +drivers/infiniband/core/ib_core ib_destroy_cq 0x1ce13c50 +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x6e146cfe +drivers/infiniband/core/ib_core ib_destroy_qp 0x0698696c +drivers/infiniband/core/ib_core ib_destroy_srq 0xc553627d +drivers/infiniband/core/ib_core ib_detach_mcast 0x334e34b2 +drivers/infiniband/core/ib_core ib_dispatch_event 0x87c31acb +drivers/infiniband/core/ib_core ib_find_cached_gid 0x35549793 +drivers/infiniband/core/ib_core ib_find_cached_pkey 0x82073312 +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0xe883edfc +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0x6bdb0911 +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0xb5a13eab +drivers/infiniband/core/ib_core ib_get_cached_gid 0x9f4e345d +drivers/infiniband/core/ib_core ib_get_cached_pkey 0x185f56d1 +drivers/infiniband/core/ib_core ib_get_client_data 0x59b6e4b2 +drivers/infiniband/core/ib_core ib_get_dma_mr 0xbe78e44b +drivers/infiniband/core/ib_core ib_modify_ah 0xcf0d6b65 +drivers/infiniband/core/ib_core ib_modify_device 0xbaaead7a +drivers/infiniband/core/ib_core ib_modify_port 0xe91ee705 +drivers/infiniband/core/ib_core ib_modify_qp 0x36923cc5 +drivers/infiniband/core/ib_core ib_modify_srq 0x48660016 +drivers/infiniband/core/ib_core ib_pack 0x520b2638 +drivers/infiniband/core/ib_core ib_query_ah 0xad557744 +drivers/infiniband/core/ib_core ib_query_device 0xeeec87b2 +drivers/infiniband/core/ib_core ib_query_gid 0x3f8e2d5b +drivers/infiniband/core/ib_core ib_query_mr 0x02147ab0 +drivers/infiniband/core/ib_core ib_query_pkey 0x74eeee56 +drivers/infiniband/core/ib_core ib_query_port 0x05ae0fac +drivers/infiniband/core/ib_core ib_query_qp 0x6dfeb035 +drivers/infiniband/core/ib_core ib_query_srq 0x0cd97e4b +drivers/infiniband/core/ib_core ib_reg_phys_mr 0x6cb4eb51 +drivers/infiniband/core/ib_core ib_register_client 0xda3815d6 +drivers/infiniband/core/ib_core ib_register_device 0x59931f22 +drivers/infiniband/core/ib_core ib_register_event_handler 0x54ed8c3b +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x95e02f7f +drivers/infiniband/core/ib_core ib_resize_cq 0x6e806530 +drivers/infiniband/core/ib_core ib_set_client_data 0xc9bde7d7 +drivers/infiniband/core/ib_core ib_ud_header_init 0x965c1dae +drivers/infiniband/core/ib_core ib_ud_header_pack 0x8d12f837 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0x11d42382 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xb1a312e1 +drivers/infiniband/core/ib_core ib_unregister_client 0xc5e09bee +drivers/infiniband/core/ib_core ib_unregister_device 0xfaed116a +drivers/infiniband/core/ib_core ib_unregister_event_handler 0x8565c561 +drivers/infiniband/core/ib_mad ib_cancel_mad 0x11fee4c8 +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x6a3bbc94 +drivers/infiniband/core/ib_mad ib_create_send_mad 0xd5946fd0 +drivers/infiniband/core/ib_mad ib_free_recv_mad 0xd6f8244e +drivers/infiniband/core/ib_mad ib_free_send_mad 0x91bcbd32 +drivers/infiniband/core/ib_mad ib_modify_mad 0x586bba21 +drivers/infiniband/core/ib_mad ib_post_send_mad 0xda2009be +drivers/infiniband/core/ib_mad ib_process_mad_wc 0x1fb73371 +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x4a67d67f +drivers/infiniband/core/ib_mad ib_register_mad_agent 0x1bfe7590 +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0xa0956dcb +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0xd90911da +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0x6656c43b +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0x5cc62073 +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0x13b56b10 +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0x1842eeff +drivers/input/gameport/gameport __gameport_register_driver 0xe0edc748 +drivers/input/gameport/gameport __gameport_register_port 0x9fa105fe +drivers/input/gameport/gameport gameport_close 0xfe41f960 +drivers/input/gameport/gameport gameport_cooked_read 0xdc78ec6d +drivers/input/gameport/gameport gameport_open 0x923810b8 +drivers/input/gameport/gameport gameport_rescan 0x98fedb32 +drivers/input/gameport/gameport gameport_set_name 0xf24f9b4a +drivers/input/gameport/gameport gameport_set_phys 0x88437092 +drivers/input/gameport/gameport gameport_start_polling 0x1158984a +drivers/input/gameport/gameport gameport_stop_polling 0xa91f0232 +drivers/input/gameport/gameport gameport_unregister_driver 0xa3cc7074 +drivers/input/gameport/gameport gameport_unregister_port 0x87d0ef18 +drivers/isdn/capi/capifs capifs_free_ncci 0x2c54c957 +drivers/isdn/capi/capifs capifs_new_ncci 0xd0bc06ce +drivers/isdn/capi/kernelcapi attach_capi_ctr 0x53ed586d +drivers/isdn/capi/kernelcapi capi20_get_manufacturer 0x7e6f1307 +drivers/isdn/capi/kernelcapi capi20_get_profile 0xe19a11ac +drivers/isdn/capi/kernelcapi capi20_get_serial 0x7a33596c +drivers/isdn/capi/kernelcapi capi20_get_version 0x14f2aa5a +drivers/isdn/capi/kernelcapi capi20_isinstalled 0x31c24aa4 +drivers/isdn/capi/kernelcapi capi20_manufacturer 0xed061606 +drivers/isdn/capi/kernelcapi capi20_put_message 0x1b763fc8 +drivers/isdn/capi/kernelcapi capi20_register 0x83dd7354 +drivers/isdn/capi/kernelcapi capi20_release 0x2848218b +drivers/isdn/capi/kernelcapi capi20_set_callback 0xde18d9eb +drivers/isdn/capi/kernelcapi capi_cmd2str 0xb19fda8d +drivers/isdn/capi/kernelcapi capi_cmsg2message 0x50b33ca4 +drivers/isdn/capi/kernelcapi capi_cmsg2str 0xd45b5eb5 +drivers/isdn/capi/kernelcapi capi_cmsg_header 0xb60e5e5f +drivers/isdn/capi/kernelcapi capi_ctr_handle_message 0x9612867f +drivers/isdn/capi/kernelcapi capi_ctr_ready 0xc3c13fff +drivers/isdn/capi/kernelcapi capi_ctr_reseted 0x6cbdf60b +drivers/isdn/capi/kernelcapi capi_ctr_resume_output 0xc8330efb +drivers/isdn/capi/kernelcapi capi_ctr_suspend_output 0x6240fbd6 +drivers/isdn/capi/kernelcapi capi_info2str 0x47d3fc51 +drivers/isdn/capi/kernelcapi capi_message2cmsg 0x6057c6f3 +drivers/isdn/capi/kernelcapi capi_message2str 0xa7abc5e3 +drivers/isdn/capi/kernelcapi capilib_data_b3_conf 0x62e32d43 +drivers/isdn/capi/kernelcapi capilib_data_b3_req 0x71e8d5ba +drivers/isdn/capi/kernelcapi capilib_free_ncci 0x2b8eab1f +drivers/isdn/capi/kernelcapi capilib_new_ncci 0x2baa6586 +drivers/isdn/capi/kernelcapi capilib_release 0x8f699913 +drivers/isdn/capi/kernelcapi capilib_release_appl 0xaa165d27 +drivers/isdn/capi/kernelcapi detach_capi_ctr 0xf776ec17 +drivers/isdn/capi/kernelcapi register_capi_driver 0x9f823278 +drivers/isdn/capi/kernelcapi unregister_capi_driver 0x04403fcf +drivers/isdn/hardware/avm/b1 avmcard_dma_alloc 0x42e4cee7 +drivers/isdn/hardware/avm/b1 avmcard_dma_free 0x567d4eec +drivers/isdn/hardware/avm/b1 b1_alloc_card 0x3ebeb2be +drivers/isdn/hardware/avm/b1 b1_detect 0xdfd28376 +drivers/isdn/hardware/avm/b1 b1_free_card 0xef556095 +drivers/isdn/hardware/avm/b1 b1_getrevision 0x87ebf393 +drivers/isdn/hardware/avm/b1 b1_interrupt 0x7c376ed0 +drivers/isdn/hardware/avm/b1 b1_irq_table 0x85f09690 +drivers/isdn/hardware/avm/b1 b1_load_config 0xce7585a5 +drivers/isdn/hardware/avm/b1 b1_load_firmware 0xd531e03f +drivers/isdn/hardware/avm/b1 b1_load_t4file 0x4255b5f8 +drivers/isdn/hardware/avm/b1 b1_loaded 0xc9b345db +drivers/isdn/hardware/avm/b1 b1_parse_version 0xdd81eb39 +drivers/isdn/hardware/avm/b1 b1_register_appl 0xce35bfa5 +drivers/isdn/hardware/avm/b1 b1_release_appl 0xcaed8c0b +drivers/isdn/hardware/avm/b1 b1_reset_ctr 0xfea42782 +drivers/isdn/hardware/avm/b1 b1_send_message 0xf111f789 +drivers/isdn/hardware/avm/b1 b1ctl_read_proc 0x0d96dcab +drivers/isdn/hardware/avm/b1dma b1dma_interrupt 0xb7858191 +drivers/isdn/hardware/avm/b1dma b1dma_load_firmware 0x76e63169 +drivers/isdn/hardware/avm/b1dma b1dma_register_appl 0xaa0dc23d +drivers/isdn/hardware/avm/b1dma b1dma_release_appl 0x155d8abe +drivers/isdn/hardware/avm/b1dma b1dma_reset 0x4b57c5ef +drivers/isdn/hardware/avm/b1dma b1dma_reset_ctr 0x61e1075c +drivers/isdn/hardware/avm/b1dma b1dma_send_message 0xfc0b87ce +drivers/isdn/hardware/avm/b1dma b1dmactl_read_proc 0xe7ab602a +drivers/isdn/hardware/avm/b1dma b1pciv4_detect 0xb424058a +drivers/isdn/hardware/avm/b1dma t1pci_detect 0xd90b86b6 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_b1 0xf14bf8b1 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m1 0xaec3240e +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m2 0xea620116 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_delcard 0x29562993 +drivers/isdn/hardware/eicon/divadidd DIVA_DIDD_Read 0x2974ead1 +drivers/isdn/hardware/eicon/divadidd proc_net_eicon 0xe9dc6766 +drivers/isdn/hisax/hisax FsmChangeState 0x93a64734 +drivers/isdn/hisax/hisax FsmDelTimer 0x799088e0 +drivers/isdn/hisax/hisax FsmEvent 0x9df0cd27 +drivers/isdn/hisax/hisax FsmFree 0x148f0c99 +drivers/isdn/hisax/hisax FsmInitTimer 0x52866abe +drivers/isdn/hisax/hisax FsmNew 0xf0a16657 +drivers/isdn/hisax/hisax FsmRestartTimer 0xde7e7906 +drivers/isdn/hisax/hisax HiSax_closecard 0xfc27303b +drivers/isdn/hisax/hisax hisax_init_pcmcia 0x6841dab3 +drivers/isdn/hisax/hisax hisax_register 0xee93522c +drivers/isdn/hisax/hisax hisax_unregister 0x07f4f2ce +drivers/isdn/hisax/hisax_isac isac_d_l2l1 0x3f3b323a +drivers/isdn/hisax/hisax_isac isac_init 0xfb21d279 +drivers/isdn/hisax/hisax_isac isac_irq 0xbddcc928 +drivers/isdn/hisax/hisax_isac isac_setup 0x16ea6294 +drivers/isdn/hisax/hisax_isac isacsx_irq 0x476acf23 +drivers/isdn/hisax/hisax_isac isacsx_setup 0x1c7de4dc +drivers/isdn/hisax/isdnhdlc isdnhdlc_bit_rev_tab 0xe82c3e32 +drivers/isdn/hisax/isdnhdlc isdnhdlc_decode 0x1a1afeef +drivers/isdn/hisax/isdnhdlc isdnhdlc_encode 0x52a6537c +drivers/isdn/hisax/isdnhdlc isdnhdlc_out_init 0x277685da +drivers/isdn/hisax/isdnhdlc isdnhdlc_rcv_init 0x1dc6a9fc +drivers/isdn/i4l/isdn isdn_ppp_register_compressor 0x64d65e04 +drivers/isdn/i4l/isdn isdn_ppp_unregister_compressor 0xe475e6d4 +drivers/isdn/i4l/isdn isdn_register_divert 0xb7757abb +drivers/isdn/i4l/isdn register_isdn 0x90ab6a03 +drivers/isdn/misdn/mISDN_core mISDN_AddIE 0xbec2c60d +drivers/isdn/misdn/mISDN_core mISDN_AddvarIE 0xb450d498 +drivers/isdn/misdn/mISDN_core mISDN_ConnectIF 0xc24d0aaa +drivers/isdn/misdn/mISDN_core mISDN_DisConnectIF 0xde2c6c8c +drivers/isdn/misdn/mISDN_core mISDN_FsmAddTimer 0x7214e53f +drivers/isdn/misdn/mISDN_core mISDN_FsmChangeState 0x50c2230c +drivers/isdn/misdn/mISDN_core mISDN_FsmDelTimer 0x3010393f +drivers/isdn/misdn/mISDN_core mISDN_FsmEvent 0xd5145151 +drivers/isdn/misdn/mISDN_core mISDN_FsmFree 0x2348cc3c +drivers/isdn/misdn/mISDN_core mISDN_FsmInitTimer 0x172da300 +drivers/isdn/misdn/mISDN_core mISDN_FsmNew 0xf9e7832f +drivers/isdn/misdn/mISDN_core mISDN_FsmRestartTimer 0x50a5d950 +drivers/isdn/misdn/mISDN_core mISDN_HasProtocol 0x52411b65 +drivers/isdn/misdn/mISDN_core mISDN_LogL3Msg 0xa545eb0e +drivers/isdn/misdn/mISDN_core mISDN_QuickHex 0x91b96ea6 +drivers/isdn/misdn/mISDN_core mISDN_RemoveUsedPID 0xd956d2e8 +drivers/isdn/misdn/mISDN_core mISDN_SetHandledPID 0xdc476431 +drivers/isdn/misdn/mISDN_core mISDN_SetIF 0x414ea1bf +drivers/isdn/misdn/mISDN_core mISDN_alloc_l3msg 0x8d3906b3 +drivers/isdn/misdn/mISDN_core mISDN_bprotocol2pid 0xed673eae +drivers/isdn/misdn/mISDN_core mISDN_debug 0xff10c7d9 +drivers/isdn/misdn/mISDN_core mISDN_debugprint 0xe6b1ec55 +drivers/isdn/misdn/mISDN_core mISDN_free_bch 0x2e5f78a9 +drivers/isdn/misdn/mISDN_core mISDN_free_dch 0xf3d808f7 +drivers/isdn/misdn/mISDN_core mISDN_get_down_layer 0xd1c0ae73 +drivers/isdn/misdn/mISDN_core mISDN_get_lowlayer 0x9f6faa8f +drivers/isdn/misdn/mISDN_core mISDN_get_protocol 0x75f71549 +drivers/isdn/misdn/mISDN_core mISDN_get_up_layer 0xc6091c92 +drivers/isdn/misdn/mISDN_core mISDN_getrev 0x91f1a1b8 +drivers/isdn/misdn/mISDN_core mISDN_initQ931_info 0x45d57ad5 +drivers/isdn/misdn/mISDN_core mISDN_init_bch 0xa553537b +drivers/isdn/misdn/mISDN_core mISDN_init_dch 0x61f8795b +drivers/isdn/misdn/mISDN_core mISDN_init_instance 0xc5cb0f63 +drivers/isdn/misdn/mISDN_core mISDN_l3_ie2pos 0x6a35c630 +drivers/isdn/misdn/mISDN_core mISDN_l3_pos2ie 0x31559777 +drivers/isdn/misdn/mISDN_core mISDN_layermask2layer 0x48cbe644 +drivers/isdn/misdn/mISDN_core mISDN_register 0xc9e12766 +drivers/isdn/misdn/mISDN_core mISDN_set_dchannel_pid 0xca03ed9e +drivers/isdn/misdn/mISDN_core mISDN_unregister 0xb36ae9fd +drivers/isdn/misdn/mISDN_core vmISDN_debug 0x85718442 +drivers/isdn/misdn/mISDN_isac mISDN_ISAC_l1hw 0xe9ae1087 +drivers/isdn/misdn/mISDN_isac mISDN_clear_isac 0x45baf24b +drivers/isdn/misdn/mISDN_isac mISDN_isac_free 0xb18858b0 +drivers/isdn/misdn/mISDN_isac mISDN_isac_init 0xe89a4deb +drivers/isdn/misdn/mISDN_isac mISDN_isac_interrupt 0xf5a57901 +drivers/md/dm-mirror dm_create_dirty_log 0x2bbebe78 +drivers/md/dm-mirror dm_destroy_dirty_log 0xad9efd1b +drivers/md/dm-mirror dm_register_dirty_log_type 0xbab58253 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x4edf4a92 +drivers/md/dm-mod dm_get_device 0x486bd9ea +drivers/md/dm-mod dm_get_mapinfo 0x3ab6708d +drivers/md/dm-mod dm_io_async 0x08553e69 +drivers/md/dm-mod dm_io_async_bvec 0xe611a720 +drivers/md/dm-mod dm_io_async_vm 0xdc673986 +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0x7b0b7ccd +drivers/md/dm-mod dm_io_sync_bvec 0xf424ed85 +drivers/md/dm-mod dm_io_sync_vm 0x3f84ecba +drivers/md/dm-mod dm_put_device 0x6b01d911 +drivers/md/dm-mod dm_register_target 0xe7d24126 +drivers/md/dm-mod dm_table_event 0x214816a6 +drivers/md/dm-mod dm_table_flush_all 0xbb16c0a0 +drivers/md/dm-mod dm_table_get 0xfca7a29d +drivers/md/dm-mod dm_table_get_mode 0x249fb921 +drivers/md/dm-mod dm_table_get_size 0x0250ad38 +drivers/md/dm-mod dm_table_put 0x192c0f2a +drivers/md/dm-mod dm_table_unplug_all 0xb3aa1090 +drivers/md/dm-mod dm_unregister_target 0x6cd3331f +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0xe44da215 +drivers/md/dm-mod kcopyd_client_create 0x05b82a4d +drivers/md/dm-mod kcopyd_client_destroy 0x2211c61b +drivers/md/dm-mod kcopyd_copy 0x30024bde +drivers/md/dm-multipath dm_pg_init_complete 0x6b4f9b17 +drivers/md/dm-multipath dm_register_hw_handler 0x0ba31ebb +drivers/md/dm-multipath dm_register_path_selector 0x8e833a92 +drivers/md/dm-multipath dm_scsi_err_handler 0x5789a9a5 +drivers/md/dm-multipath dm_unregister_hw_handler 0x814fcb0f +drivers/md/dm-multipath dm_unregister_path_selector 0xf668ceb4 +drivers/md/md-mod bitmap_close_sync 0xbdfe0a15 +drivers/md/md-mod bitmap_daemon_work 0x8f249885 +drivers/md/md-mod bitmap_end_sync 0xad909612 +drivers/md/md-mod bitmap_endwrite 0xb9dcab90 +drivers/md/md-mod bitmap_start_sync 0x67e6791e +drivers/md/md-mod bitmap_startwrite 0x82ca8298 +drivers/md/md-mod bitmap_unplug 0xa546b4b4 +drivers/md/md-mod md_check_recovery 0xe42ba042 +drivers/md/md-mod md_done_sync 0x22e15461 +drivers/md/md-mod md_error 0x840666b3 +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0xb935fcfe +drivers/md/md-mod md_unregister_thread 0x5b5da3a1 +drivers/md/md-mod md_wakeup_thread 0x92507ad0 +drivers/md/md-mod md_write_end 0x692d6626 +drivers/md/md-mod md_write_start 0xe581de3a +drivers/md/md-mod register_md_personality 0xa6faa3c2 +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x4740e7a3 +drivers/media/common/ir-common ir_codes_hauppauge_new 0x902a3cd2 +drivers/media/common/ir-common ir_codes_pinnacle 0xd3a0f048 +drivers/media/common/ir-common ir_codes_pixelview 0xfa177653 +drivers/media/common/ir-common ir_codes_rc5_tv 0xd9c7f010 +drivers/media/common/ir-common ir_codes_winfast 0x89cc1189 +drivers/media/common/ir-common ir_decode_biphase 0x43c89ef4 +drivers/media/common/ir-common ir_decode_pulsedistance 0x2456e513 +drivers/media/common/ir-common ir_dump_samples 0x6d6511e7 +drivers/media/common/ir-common ir_extract_bits 0x1cb148f5 +drivers/media/common/ir-common ir_input_init 0xec1813d9 +drivers/media/common/ir-common ir_input_keydown 0x77e107d0 +drivers/media/common/ir-common ir_input_nokey 0x957b410c +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x489a5dd1 +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0xcdab17cb +drivers/media/common/saa7146 saa7146_i2c_transfer 0xa381bc1e +drivers/media/common/saa7146 saa7146_pgtable_alloc 0xed950ab6 +drivers/media/common/saa7146 saa7146_pgtable_build_single 0x94d069c7 +drivers/media/common/saa7146 saa7146_pgtable_free 0x4ee1b11e +drivers/media/common/saa7146 saa7146_register_extension 0x45e44e8b +drivers/media/common/saa7146 saa7146_setgpio 0xe0777d1d +drivers/media/common/saa7146 saa7146_unregister_extension 0x589fc33e +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0xf4609924 +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0x1f04b532 +drivers/media/common/saa7146_vv saa7146_register_device 0x3f55cc73 +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0xe433dfc8 +drivers/media/common/saa7146_vv saa7146_start_preview 0xa58d44a8 +drivers/media/common/saa7146_vv saa7146_stop_preview 0x97e8d81d +drivers/media/common/saa7146_vv saa7146_unregister_device 0xd2db1aa3 +drivers/media/common/saa7146_vv saa7146_vv_init 0x0eb1e2e3 +drivers/media/common/saa7146_vv saa7146_vv_release 0x915cc00c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0xc9f76644 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0x51027d7c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0x471033de +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0x2d177d7e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0xe7ee1ad2 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0x918cfcb9 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0xa3e7fc6b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0xf4d36fed +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0x2d0884e9 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0x84781e6f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0xd618df9a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0xad41b5e6 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0xf90017c7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0x1da1c4d5 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0x8f6c3f2b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0x30c4c652 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0x9a1cd8d3 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0xad47ed7b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0xdf4d626c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0x4a33456e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0x56baadea +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0x0935d521 +drivers/media/dvb/bt8xx/bt878 bt878 0xd8b50b47 +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0xc61184b9 +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0x22204b62 +drivers/media/dvb/bt8xx/bt878 bt878_stop 0x5d62897a +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0x19efe134 +drivers/media/dvb/bt8xx/dst dst_check_sum 0xe94b8c9c +drivers/media/dvb/bt8xx/dst dst_comm_init 0xabbee42d +drivers/media/dvb/bt8xx/dst dst_command 0xedff4bba +drivers/media/dvb/bt8xx/dst dst_error_bailout 0x968cc5dc +drivers/media/dvb/bt8xx/dst dst_error_recovery 0x5cfdc98a +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0xdfb530ba +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0x296284ef +drivers/media/dvb/bt8xx/dst dst_pio_disable 0xcc8516cb +drivers/media/dvb/bt8xx/dst dst_pio_enable 0x3a80534d +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0xca0e3c30 +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0x7008a47e +drivers/media/dvb/bt8xx/dst rdc_reset_state 0x826dd0df +drivers/media/dvb/bt8xx/dst read_dst 0x0a546b89 +drivers/media/dvb/bt8xx/dst write_dst 0x82126fb6 +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0x2c0b7e7d +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0x848240d6 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0x1fcaec29 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0xe35e1e67 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0x8fab5bf2 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0x88cf0d88 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0x82dd5457 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0x6351d298 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0x6cfe08f9 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0xfec24d63 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x5645e525 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0x065f39e3 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0xc6494ff3 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x80e3832d +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x36c8ea1f +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0x2332600d +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0x6e4c47f3 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0x78e58dd7 +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0xfdd4a61f +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0x96bb35f4 +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0x4293f75e +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0x7d9555b3 +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0x377fbe59 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0x77ed7134 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0x8e964c42 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0xb56989a3 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0x1a271826 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x97f27bbf +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0x77762220 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0xba98e261 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0x18afc019 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0xe891dadc +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0xf8f45459 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0xb4133c94 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0x4f7e5d2c +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0x7a7bcedf +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0x46db6d4a +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0x5f90dc82 +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0x8b49a23f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0x780bf7ff +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0x8ee53a2f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0x8b5fe784 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0x5c6d6872 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0xe422db4b +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0xc675eef2 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0x14f0e304 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0x1d4295a7 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0x28c88d35 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0xe372aa88 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0x16093b5d +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0x1fdf24e4 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0xf5bbbe5b +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0xd192ad1c +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0x64a514b4 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0x56fe9e88 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0xd4d3dddc +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0x01d76a99 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0x5ae0ee41 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0x2cabeca8 +drivers/media/dvb/frontends/at76c651 at76c651_attach 0xcfdc39f9 +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0xcc244fbc +drivers/media/dvb/frontends/cx22700 cx22700_attach 0xae52c8e6 +drivers/media/dvb/frontends/cx22702 cx22702_attach 0xde9982d1 +drivers/media/dvb/frontends/cx24110 cx24110_attach 0x4cea1957 +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0x9e8009c6 +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0x7b15d514 +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0xe762d459 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x05f13eee +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0x8d7c0954 +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0xb366580e +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0xcdc99b6e +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x02689b7f +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0x5b259391 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x7a0ed9bb +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0xbf98157e +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xd15aca20 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xfdd5e650 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x2a4f5718 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xc95be182 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x708f579e +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0xe39c77c8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0x12284643 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0xf1d4150d +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0xd5d22e56 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0xccc91f17 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xaddc7276 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x96cce305 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xcbbd68de +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x13856c44 +drivers/media/dvb/frontends/l64781 l64781_attach 0xf9ca91b3 +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0xd9642eeb +drivers/media/dvb/frontends/mt312 mt312_attach 0xcf1d1441 +drivers/media/dvb/frontends/mt312 vp310_attach 0x0cf4dc2d +drivers/media/dvb/frontends/mt352 mt352_attach 0x08b90738 +drivers/media/dvb/frontends/mt352 mt352_write 0x01ce1479 +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0xe3a97cda +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x58c157f2 +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0x17f99a47 +drivers/media/dvb/frontends/or51132 or51132_attach 0x3fffbecb +drivers/media/dvb/frontends/or51211 or51211_attach 0x8bbc7da8 +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0x3b9fa67d +drivers/media/dvb/frontends/sp8870 sp8870_attach 0x9a6bafa2 +drivers/media/dvb/frontends/sp887x sp887x_attach 0x3d83eeb4 +drivers/media/dvb/frontends/stv0297 stv0297_attach 0xc8efb161 +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0x9c2f39a6 +drivers/media/dvb/frontends/stv0299 stv0299_attach 0xca43ea77 +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0x69b584ee +drivers/media/dvb/frontends/tda10021 tda10021_attach 0xcccd4296 +drivers/media/dvb/frontends/tda1004x tda10045_attach 0x3393c58c +drivers/media/dvb/frontends/tda1004x tda10046_attach 0x75617508 +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0x3b034668 +drivers/media/dvb/frontends/tda8083 tda8083_attach 0x598872cf +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0xef777cc4 +drivers/media/dvb/frontends/ves1820 ves1820_attach 0x2abdef84 +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0x4b389aa9 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0xbd22b1ce +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0xc4a00eb6 +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0x06ad0c62 +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0x94cf5764 +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0x71664665 +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0xb7281e76 +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0xa3a327c9 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0x8b981f14 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0xa05f1ede +drivers/media/radio/miropcm20 aci_rds_cmd 0xde4156ce +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0x5071c11b +drivers/media/video/btcx-risc btcx_riscmem_free 0x89673f8c +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x0e0f3e97 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0x64eb61cf +drivers/media/video/bttv bttv_gpio_bits 0x8845c400 +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0xcc4d9fd3 +drivers/media/video/bttv bttv_gpio_read 0x9dd30405 +drivers/media/video/bttv bttv_gpio_write 0x38c1513f +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0xdb932f2a +drivers/media/video/bttv bttv_sub_register 0xa7d2bed8 +drivers/media/video/bttv bttv_sub_unregister 0x8aff98eb +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0xce2bc490 +drivers/media/video/cpia cpia_unregister_camera 0xc26f4728 +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0xcd32b184 +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0x6033d496 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0x26a9af2f +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0x7ad99c09 +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0x7ea1d3f6 +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0x88daed71 +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0xf81588a4 +drivers/media/video/cx88/cx8802 cx8802_fini_common 0xf9b436db +drivers/media/video/cx88/cx8802 cx8802_init_common 0xd900ec22 +drivers/media/video/cx88/cx8802 cx8802_resume_common 0x84b81fd8 +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0x89ba054e +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x4e6954bf +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0x6b576af0 +drivers/media/video/cx88/cx88xx cx88_card_list 0xdf2e73ea +drivers/media/video/cx88/cx88xx cx88_card_setup 0x94e63968 +drivers/media/video/cx88/cx88xx cx88_core_get 0x3aafc670 +drivers/media/video/cx88/cx88xx cx88_core_irq 0x7fd1d9d7 +drivers/media/video/cx88/cx88xx cx88_core_put 0x7da9aa1c +drivers/media/video/cx88/cx88xx cx88_free_buffer 0x985d6025 +drivers/media/video/cx88/cx88xx cx88_get_stereo 0xc0e4fb44 +drivers/media/video/cx88/cx88xx cx88_i2c_init 0x68eae267 +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0xe94111f6 +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x777b6d7f +drivers/media/video/cx88/cx88xx cx88_reset 0x508d2e8d +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0x5a40dd48 +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0x9d756631 +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0x6409ad03 +drivers/media/video/cx88/cx88xx cx88_set_scale 0x997ed100 +drivers/media/video/cx88/cx88xx cx88_set_stereo 0x7646a5f7 +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0x4d817b8c +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0x2c7fd2fb +drivers/media/video/cx88/cx88xx cx88_shutdown 0x7157cf3b +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0x87aa01e8 +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0x1f12aabf +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x9b140fff +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0x30a6302d +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0xbc4f8c8c +drivers/media/video/cx88/cx88xx cx88_subids 0x6b626846 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0x65d24df9 +drivers/media/video/cx88/cx88xx cx88_wakeup 0xe9300d08 +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0xfd57de0b +drivers/media/video/saa7134/saa7134 dmasound_exit 0x44a85af5 +drivers/media/video/saa7134/saa7134 dmasound_init 0x1cc550fa +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0x2f0526bb +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0xf0b49c54 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0x4fbadb69 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0x554490f4 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0x91181f06 +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0x62576fa5 +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0x83d5eff3 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0x0bddfcc0 +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0x8e595025 +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0x2eb5678d +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0x36aecbd0 +drivers/media/video/tveeprom tveeprom_read 0x77e8843f +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0xed7be632 +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x9c7de443 +drivers/media/video/v4l2-common v4l2_prio_check 0x2f639468 +drivers/media/video/v4l2-common v4l2_prio_close 0x95284709 +drivers/media/video/v4l2-common v4l2_prio_init 0xbecd2858 +drivers/media/video/v4l2-common v4l2_prio_max 0x1dcaa0c8 +drivers/media/video/v4l2-common v4l2_prio_open 0x76ba9a9a +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0x33b3b664 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0x85b1555d +drivers/media/video/video-buf videobuf_dma_init 0x40760100 +drivers/media/video/video-buf videobuf_dma_init_kernel 0xd185607c +drivers/media/video/video-buf videobuf_dma_init_overlay 0x7fe2c98d +drivers/media/video/video-buf videobuf_dma_init_user 0x603d1a45 +drivers/media/video/video-buf videobuf_dma_pci_map 0x56beca2b +drivers/media/video/video-buf videobuf_dma_pci_sync 0x7778401a +drivers/media/video/video-buf videobuf_dma_pci_unmap 0xdd8063be +drivers/media/video/video-buf videobuf_dqbuf 0x1f932d3d +drivers/media/video/video-buf videobuf_iolock 0x4b0a10fa +drivers/media/video/video-buf videobuf_mmap_free 0x9ba9b584 +drivers/media/video/video-buf videobuf_mmap_mapper 0xd472600c +drivers/media/video/video-buf videobuf_mmap_setup 0x55620100 +drivers/media/video/video-buf videobuf_next_field 0x19554d3b +drivers/media/video/video-buf videobuf_poll_stream 0x02ecee7f +drivers/media/video/video-buf videobuf_qbuf 0x6f5773a2 +drivers/media/video/video-buf videobuf_querybuf 0xfa0fad7d +drivers/media/video/video-buf videobuf_queue_cancel 0xef3a6c59 +drivers/media/video/video-buf videobuf_queue_init 0xd43acc97 +drivers/media/video/video-buf videobuf_queue_is_busy 0x8730af3b +drivers/media/video/video-buf videobuf_read_one 0x2775e802 +drivers/media/video/video-buf videobuf_read_start 0x82b0889b +drivers/media/video/video-buf videobuf_read_stop 0x75348b03 +drivers/media/video/video-buf videobuf_read_stream 0x05cc652f +drivers/media/video/video-buf videobuf_reqbufs 0x1578552e +drivers/media/video/video-buf videobuf_status 0xf91c661e +drivers/media/video/video-buf videobuf_streamoff 0x1192785d +drivers/media/video/video-buf videobuf_streamon 0x837fedaf +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0x7361ea10 +drivers/media/video/video-buf videobuf_waiton 0xca6e5093 +drivers/media/video/video-buf-dvb videobuf_dvb_register 0x0ae59e62 +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0x6e4e0966 +drivers/media/video/videocodec videocodec_attach 0x597f7f68 +drivers/media/video/videocodec videocodec_detach 0x7cd94773 +drivers/media/video/videocodec videocodec_register 0x33086bf8 +drivers/media/video/videocodec videocodec_unregister 0x500954a5 +drivers/media/video/videodev video_devdata 0x626cb10c +drivers/media/video/videodev video_device_alloc 0x2fd7f0f6 +drivers/media/video/videodev video_device_release 0xf2c19a2c +drivers/media/video/videodev video_exclusive_open 0x4e1d7d92 +drivers/media/video/videodev video_exclusive_release 0xed21d65c +drivers/media/video/videodev video_register_device 0x10a02a4f +drivers/media/video/videodev video_unregister_device 0xebcc6540 +drivers/media/video/videodev video_usercopy 0xdb6cf3c3 +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0xebd8f083 +drivers/message/fusion/mptbase mpt_HardResetHandler 0xe60b50c1 +drivers/message/fusion/mptbase mpt_add_sge 0x105d4f47 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0x28aa2b98 +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0x06c02b46 +drivers/message/fusion/mptbase mpt_attach 0xd2519b1d +drivers/message/fusion/mptbase mpt_config 0x9e89dc45 +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0x914e71ab +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0x7897ffa2 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x6ecf5e85 +drivers/message/fusion/mptbase mpt_findImVolumes 0x5c5fddcc +drivers/message/fusion/mptbase mpt_free_fw_memory 0x552bd8f3 +drivers/message/fusion/mptbase mpt_free_msg_frame 0xb26f59b5 +drivers/message/fusion/mptbase mpt_get_msg_frame 0xfd9b2666 +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0xa1c4e895 +drivers/message/fusion/mptbase mpt_proc_root_dir 0x1ec428d1 +drivers/message/fusion/mptbase mpt_put_msg_frame 0xde4a74a0 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x9a53de31 +drivers/message/fusion/mptbase mpt_register 0x80117ffd +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x497757ce +drivers/message/fusion/mptbase mpt_resume 0x47f2c2f7 +drivers/message/fusion/mptbase mpt_send_handshake_request 0x1831485d +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0x68e30ed4 +drivers/message/fusion/mptbase mpt_toolbox 0xc46196d9 +drivers/message/fusion/mptbase mpt_verify_adapter 0x5b5ab9b5 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0xcc0c54aa +drivers/message/fusion/mptscsih mptscsih_abort 0x2703d958 +drivers/message/fusion/mptscsih mptscsih_bios_param 0xcbc6d2d2 +drivers/message/fusion/mptscsih mptscsih_bus_reset 0x4b603173 +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x053eb4b2 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0xb911a3b7 +drivers/message/fusion/mptscsih mptscsih_event_process 0xad0ded6b +drivers/message/fusion/mptscsih mptscsih_host_reset 0xbdc94619 +drivers/message/fusion/mptscsih mptscsih_info 0x4d0678bb +drivers/message/fusion/mptscsih mptscsih_io_done 0xba2d15aa +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0xb4015719 +drivers/message/fusion/mptscsih mptscsih_proc_info 0xcf6f0a6e +drivers/message/fusion/mptscsih mptscsih_qcmd 0x22ed680d +drivers/message/fusion/mptscsih mptscsih_remove 0x3eecc2c4 +drivers/message/fusion/mptscsih mptscsih_resume 0x4157c452 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0x2e10129c +drivers/message/fusion/mptscsih mptscsih_shutdown 0xfe52e994 +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0x89d91058 +drivers/message/fusion/mptscsih mptscsih_slave_configure 0xcb48139b +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x1f5651ec +drivers/message/fusion/mptscsih mptscsih_suspend 0x11d3b733 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x6a49b563 +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0x9cceb447 +drivers/message/i2o/i2o_core i2o_device_claim_release 0x0500d341 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0xeae2973c +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0xa6a263fe +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x2a961009 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0xab61bfd0 +drivers/message/i2o/i2o_core i2o_driver_register 0x4cfaffda +drivers/message/i2o/i2o_core i2o_driver_unregister 0xbf69a29a +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0xb7c8ecf2 +drivers/message/i2o/i2o_core i2o_exec_lct_get 0x3989de7f +drivers/message/i2o/i2o_core i2o_find_iop 0xcc840cc6 +drivers/message/i2o/i2o_core i2o_iop_find_device 0x37cd4db6 +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x733b132d +drivers/message/i2o/i2o_core i2o_msg_nop 0x9bdb0375 +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0x1abbec7e +drivers/message/i2o/i2o_core i2o_parm_field_get 0xba8c1a5a +drivers/message/i2o/i2o_core i2o_parm_issue 0xade1bcfa +drivers/message/i2o/i2o_core i2o_parm_table_get 0x15959267 +drivers/message/i2o/i2o_core i2o_status_get 0xb68aac79 +drivers/mmc/mmc_core __mmc_claim_host 0xa30d090a +drivers/mmc/mmc_core mmc_add_host 0xfc72c8ec +drivers/mmc/mmc_core mmc_alloc_host 0x15927cbf +drivers/mmc/mmc_core mmc_cleanup_queue 0xe5192973 +drivers/mmc/mmc_core mmc_detect_change 0x88200e16 +drivers/mmc/mmc_core mmc_free_host 0x531ad078 +drivers/mmc/mmc_core mmc_init_queue 0x8c590037 +drivers/mmc/mmc_core mmc_queue_resume 0xc2928f4e +drivers/mmc/mmc_core mmc_queue_suspend 0x7f81d27e +drivers/mmc/mmc_core mmc_register_driver 0x62eaf858 +drivers/mmc/mmc_core mmc_release_host 0x62f20953 +drivers/mmc/mmc_core mmc_remove_host 0xe4b4eaf8 +drivers/mmc/mmc_core mmc_request_done 0xcfd98809 +drivers/mmc/mmc_core mmc_resume_host 0x283f0c17 +drivers/mmc/mmc_core mmc_start_request 0xacef1c7a +drivers/mmc/mmc_core mmc_suspend_host 0xb61ba501 +drivers/mmc/mmc_core mmc_unregister_driver 0x8622ce33 +drivers/mmc/mmc_core mmc_wait_for_app_cmd 0xb5a37db1 +drivers/mmc/mmc_core mmc_wait_for_cmd 0xf39f2272 +drivers/mmc/mmc_core mmc_wait_for_req 0xa51dca59 +drivers/mtd/chips/cfi_util cfi_fixup 0x498edddb +drivers/mtd/chips/cfi_util cfi_read_pri 0x265cdf41 +drivers/mtd/chips/cfi_util cfi_varsize_frob 0x23847f50 +drivers/mtd/chips/chipreg do_map_probe 0xd0eb2c70 +drivers/mtd/chips/chipreg map_destroy 0xc887b04a +drivers/mtd/chips/chipreg register_mtd_chip_driver 0xc0505870 +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0x76ef5f62 +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0x846054c9 +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0x16680b9a +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0xe2bcc08a +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0xf05f9872 +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0xec6723b2 +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0x2aaaf1f8 +drivers/mtd/mtdconcat mtd_concat_create 0x42907ac5 +drivers/mtd/mtdconcat mtd_concat_destroy 0x5d8f0417 +drivers/mtd/mtdcore add_mtd_device 0x2d1fd733 +drivers/mtd/mtdcore default_mtd_readv 0x8b0c6633 +drivers/mtd/mtdcore default_mtd_writev 0xf7ecb3e1 +drivers/mtd/mtdcore del_mtd_device 0x472342e4 +drivers/mtd/mtdcore get_mtd_device 0x365b95aa +drivers/mtd/mtdcore mtd_table 0xf02606b1 +drivers/mtd/mtdcore mtd_table_mutex 0x30e4369c +drivers/mtd/mtdcore put_mtd_device 0x503904d1 +drivers/mtd/mtdcore register_mtd_user 0x348f79d4 +drivers/mtd/mtdcore unregister_mtd_user 0x537e2766 +drivers/mtd/mtdpart add_mtd_partitions 0xd9fb20bd +drivers/mtd/mtdpart del_mtd_partitions 0x4c21e0b6 +drivers/mtd/mtdpart deregister_mtd_parser 0xc9a7b4ca +drivers/mtd/mtdpart mtd_erase_callback 0xf8fe2ef6 +drivers/mtd/mtdpart parse_mtd_partitions 0x2f5b1b96 +drivers/mtd/mtdpart register_mtd_parser 0x84f93548 +drivers/mtd/nand/nand nand_default_bbt 0xcb689a3b +drivers/mtd/nand/nand nand_release 0x75cecbb7 +drivers/mtd/nand/nand nand_scan 0x28e534aa +drivers/mtd/nand/nand nand_scan_bbt 0x0ddffe13 +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0x36b8e786 +drivers/mtd/onenand/onenand onenand_release 0xee16e338 +drivers/mtd/onenand/onenand onenand_scan 0x9a61f3b0 +drivers/mtd/onenand/onenand onenand_scan_bbt 0x94a4807c +drivers/net/8390 NS8390_init 0x7fcc8736 +drivers/net/8390 __alloc_ei_netdev 0x204bfe92 +drivers/net/8390 ei_close 0x856544a3 +drivers/net/8390 ei_interrupt 0x7862f4df +drivers/net/8390 ei_open 0x39707690 +drivers/net/8390 ei_poll 0x3abc6ab8 +drivers/net/arcnet/arcnet alloc_arcdev 0x34a2d168 +drivers/net/arcnet/arcnet arc_bcast_proto 0x9d9d27ee +drivers/net/arcnet/arcnet arc_proto_default 0x36b954b9 +drivers/net/arcnet/arcnet arc_proto_map 0xd93f0b56 +drivers/net/arcnet/arcnet arc_proto_null 0x5606e554 +drivers/net/arcnet/arcnet arc_raw_proto 0x93f050bc +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0x83db44fe +drivers/net/arcnet/arcnet arcnet_unregister_proto 0x5519709e +drivers/net/arcnet/com20020 com20020_check 0x6e0ccebb +drivers/net/arcnet/com20020 com20020_found 0x9479dd44 +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0x6aa098c0 +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0x83112e74 +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0xff7c0f07 +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0xbcd86442 +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0xbf93392b +drivers/net/irda/sir-dev irda_register_dongle 0x50f5a0d0 +drivers/net/irda/sir-dev irda_unregister_dongle 0xd8b62fb7 +drivers/net/irda/sir-dev sirdev_get_instance 0x2baf6b1f +drivers/net/irda/sir-dev sirdev_put_instance 0xfcb4d741 +drivers/net/irda/sir-dev sirdev_raw_read 0x868900a1 +drivers/net/irda/sir-dev sirdev_raw_write 0x1110d6a0 +drivers/net/irda/sir-dev sirdev_receive 0x7c722266 +drivers/net/irda/sir-dev sirdev_set_dongle 0xea82f2df +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0xfd4cbdff +drivers/net/irda/sir-dev sirdev_write_complete 0x25e60fed +drivers/net/mii generic_mii_ioctl 0xdc37596b +drivers/net/mii mii_check_gmii_support 0x5dd7ebc2 +drivers/net/mii mii_check_link 0xdb5a8596 +drivers/net/mii mii_check_media 0xda7273fe +drivers/net/mii mii_ethtool_gset 0xff1b921c +drivers/net/mii mii_ethtool_sset 0xd06db896 +drivers/net/mii mii_link_ok 0xa9ff892f +drivers/net/mii mii_nway_restart 0x8ec99297 +drivers/net/phy/libphy genphy_config_advert 0xe2f8f8c4 +drivers/net/phy/libphy genphy_config_aneg 0xdb47fe8f +drivers/net/phy/libphy genphy_read_status 0x6efc96cf +drivers/net/phy/libphy mdiobus_register 0x9eee4b5a +drivers/net/phy/libphy mdiobus_unregister 0xa08af7d4 +drivers/net/phy/libphy phy_attach 0x474cbfd0 +drivers/net/phy/libphy phy_connect 0x10fd7464 +drivers/net/phy/libphy phy_detach 0x6211771d +drivers/net/phy/libphy phy_disable_interrupts 0xc6466f70 +drivers/net/phy/libphy phy_disconnect 0xbb1080dd +drivers/net/phy/libphy phy_driver_register 0x8e4e5ec1 +drivers/net/phy/libphy phy_driver_unregister 0x4e35b8c6 +drivers/net/phy/libphy phy_enable_interrupts 0xc3d43298 +drivers/net/phy/libphy phy_print_status 0x9ece7024 +drivers/net/phy/libphy phy_read 0x56c6f1d1 +drivers/net/phy/libphy phy_sanitize_settings 0xdfef2d7d +drivers/net/phy/libphy phy_start 0x8c75326b +drivers/net/phy/libphy phy_start_aneg 0xe6fd897e +drivers/net/phy/libphy phy_start_interrupts 0x3d51729a +drivers/net/phy/libphy phy_stop 0x12dfa285 +drivers/net/phy/libphy phy_stop_interrupts 0x3b29a784 +drivers/net/phy/libphy phy_write 0x1e33e5b8 +drivers/net/ppp_generic ppp_channel_index 0x6bd7295c +drivers/net/ppp_generic ppp_input 0x73f3e06b +drivers/net/ppp_generic ppp_input_error 0xcd931352 +drivers/net/ppp_generic ppp_output_wakeup 0x9b8d85c3 +drivers/net/ppp_generic ppp_register_channel 0x83ccae93 +drivers/net/ppp_generic ppp_register_compressor 0x875cf3bb +drivers/net/ppp_generic ppp_unit_number 0x94a924e1 +drivers/net/ppp_generic ppp_unregister_channel 0x0b7cb423 +drivers/net/ppp_generic ppp_unregister_compressor 0x040b5d91 +drivers/net/pppox pppox_unbind_sock 0xb597669c +drivers/net/pppox register_pppox_proto 0x73061832 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x76135e6c +drivers/net/slhc slhc_free 0x2894cfb0 +drivers/net/slhc slhc_init 0x2e0e927f +drivers/net/slhc slhc_remember 0x0bc55868 +drivers/net/slhc slhc_toss 0xf89e3455 +drivers/net/slhc slhc_uncompress 0x3bc1319e +drivers/net/sungem_phy mii_phy_probe 0xe502f7ab +drivers/net/tokenring/tms380tr tms380tr_close 0x5a47026d +drivers/net/tokenring/tms380tr tms380tr_interrupt 0x3c7db227 +drivers/net/tokenring/tms380tr tms380tr_open 0x7bd97b3c +drivers/net/tokenring/tms380tr tms380tr_wait 0xd2328794 +drivers/net/tokenring/tms380tr tmsdev_init 0x3a613335 +drivers/net/tokenring/tms380tr tmsdev_term 0x9fba0c2e +drivers/net/wan/cycx_drv cycx_down 0x66a4c4e6 +drivers/net/wan/cycx_drv cycx_exec 0xfe7cd576 +drivers/net/wan/cycx_drv cycx_intr 0x38da4725 +drivers/net/wan/cycx_drv cycx_peek 0x968458a6 +drivers/net/wan/cycx_drv cycx_poke 0xb6f383de +drivers/net/wan/cycx_drv cycx_setup 0x62be23ea +drivers/net/wan/hdlc alloc_hdlcdev 0xc491f2f3 +drivers/net/wan/hdlc hdlc_close 0xb928c08b +drivers/net/wan/hdlc hdlc_ioctl 0x069d3770 +drivers/net/wan/hdlc hdlc_open 0xd9a54932 +drivers/net/wan/hdlc hdlc_set_carrier 0xb926cfd1 +drivers/net/wan/hdlc register_hdlc_device 0xfb46e254 +drivers/net/wan/hdlc unregister_hdlc_device 0xffc297eb +drivers/net/wan/syncppp sppp_attach 0xe89c8cc3 +drivers/net/wan/syncppp sppp_close 0x902e4928 +drivers/net/wan/syncppp sppp_detach 0xfcf84e48 +drivers/net/wan/syncppp sppp_do_ioctl 0xde94355c +drivers/net/wan/syncppp sppp_open 0x0453aca3 +drivers/net/wan/syncppp sppp_reopen 0xde95619c +drivers/net/wan/z85230 z8530_channel_load 0x3620371a +drivers/net/wan/z85230 z8530_dead_port 0x10c78988 +drivers/net/wan/z85230 z8530_describe 0x28a25a23 +drivers/net/wan/z85230 z8530_dma_sync 0xaa7e1f01 +drivers/net/wan/z85230 z8530_get_stats 0xc44a91ad +drivers/net/wan/z85230 z8530_hdlc_kilostream 0x5cd24d29 +drivers/net/wan/z85230 z8530_hdlc_kilostream_85230 0xe3d80064 +drivers/net/wan/z85230 z8530_init 0xa49a1140 +drivers/net/wan/z85230 z8530_interrupt 0x33a2d438 +drivers/net/wan/z85230 z8530_nop 0x63e9c088 +drivers/net/wan/z85230 z8530_null_rx 0xde340777 +drivers/net/wan/z85230 z8530_queue_xmit 0x349055f5 +drivers/net/wan/z85230 z8530_shutdown 0x13a27a18 +drivers/net/wan/z85230 z8530_sync 0x2a82e45b +drivers/net/wan/z85230 z8530_sync_close 0x15059ba6 +drivers/net/wan/z85230 z8530_sync_dma_close 0x14b873b7 +drivers/net/wan/z85230 z8530_sync_dma_open 0xfec35c74 +drivers/net/wan/z85230 z8530_sync_open 0x985a4b35 +drivers/net/wan/z85230 z8530_sync_txdma_close 0xd5903f63 +drivers/net/wan/z85230 z8530_sync_txdma_open 0xb792234a +drivers/net/wan/z85230 z8530_txdma_sync 0xbe1e2c7f +drivers/net/wireless/airo init_airo_card 0x82567368 +drivers/net/wireless/airo reset_airo_card 0xfa550461 +drivers/net/wireless/airo stop_airo_card 0xcf86bc56 +drivers/net/wireless/atmel atmel_open 0xb4a92f0f +drivers/net/wireless/atmel init_atmel_card 0x9c82c478 +drivers/net/wireless/atmel stop_atmel_card 0xc26ab475 +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0x5aa29455 +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0x8711a140 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0xb4071686 +drivers/net/wireless/hostap/hostap hostap_add_interface 0x4a922d10 +drivers/net/wireless/hostap/hostap hostap_add_sta 0xab654790 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0x99ab6b06 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0xa5dc5a00 +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0x28f76169 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0x4e7782fa +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0x221f860c +drivers/net/wireless/hostap/hostap hostap_get_porttype 0x52a77d5f +drivers/net/wireless/hostap/hostap hostap_get_stats 0x0f723f6b +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0x73a452de +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x606fc08b +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x097e5dfd +drivers/net/wireless/hostap/hostap hostap_info_init 0x6913aaac +drivers/net/wireless/hostap/hostap hostap_info_process 0xd096e457 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0xa301730e +drivers/net/wireless/hostap/hostap hostap_init_data 0x40d6a734 +drivers/net/wireless/hostap/hostap hostap_init_proc 0xae2d170f +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0x789542d7 +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x0528eae1 +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0x0e6e1a4b +drivers/net/wireless/hostap/hostap hostap_proc 0xc949ce5c +drivers/net/wireless/hostap/hostap hostap_remove_interface 0x7dbe8fc8 +drivers/net/wireless/hostap/hostap hostap_remove_proc 0x21181566 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0xcf9f7ee0 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0xd55be49a +drivers/net/wireless/hostap/hostap hostap_set_encryption 0x829ff29d +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x73cad09c +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0x8927892e +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0x26a71a4b +drivers/net/wireless/hostap/hostap hostap_set_string 0xf3a7e66a +drivers/net/wireless/hostap/hostap hostap_set_word 0x79779ff1 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0x8dbf655d +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0xb8984417 +drivers/net/wireless/hostap/hostap hostap_update_rates 0x182b9657 +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x596de938 +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x9ce9f437 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x7e787966 +drivers/net/wireless/orinoco __orinoco_down 0xb6dbdc98 +drivers/net/wireless/orinoco __orinoco_up 0x5f86bdfd +drivers/net/wireless/orinoco alloc_orinocodev 0x6cfadb8f +drivers/net/wireless/orinoco free_orinocodev 0xbe6a996e +drivers/net/wireless/orinoco orinoco_interrupt 0x36feb7f6 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0xa2edafa6 +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0x1d5d7f2c +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x87ffe57a +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0xff17f605 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x692ade65 +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0x5825bc16 +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x9bb64e49 +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0xf26e44db +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0xc0fff875 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0x4b1ffc08 +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x4a49e75e +drivers/net/wireless/prism54_softmac/islsm register_islsm 0xf321de57 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0xdf02ac30 +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0xe479b626 +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0x196cc99a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0x555d7744 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0xdd33e8bb +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0x2b1814c2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x0a6ce440 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0x9fafad04 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0x9d49c390 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0xc623eea6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xd0fdbf18 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0x0ddf78f4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0xd9b6956a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x0858b616 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0xeb07ab8e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0xb631d8d3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0x2bd70dc2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0x29b5d64c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x741fe5bc +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0x8acca854 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x01edaf60 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0x61760e3c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0x6c1d018f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x8d23d7a2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0xd9e8c679 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0xe080f8c3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0x1ec32ff5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x8d500642 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x8ca58370 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0x0557684c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0xe08ad321 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0x98d1879d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x683d2f83 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0x12aeeab4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0xc71fb973 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0x395c6e45 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x47e3afbd +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0x22c829fc +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0x2bb35b26 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0xc7159291 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x05d19dec +drivers/parport/parport parport_announce_port 0xc240404b +drivers/parport/parport parport_claim 0xa2974567 +drivers/parport/parport parport_claim_or_block 0xb7b281f4 +drivers/parport/parport parport_find_base 0x1f90e769 +drivers/parport/parport parport_find_number 0x29ff1a9d +drivers/parport/parport parport_get_port 0x33130060 +drivers/parport/parport parport_ieee1284_ecp_read_data 0x81182566 +drivers/parport/parport parport_ieee1284_ecp_write_addr 0x277e09e5 +drivers/parport/parport parport_ieee1284_ecp_write_data 0x6957f7c8 +drivers/parport/parport parport_ieee1284_epp_read_addr 0xd79f4cef +drivers/parport/parport parport_ieee1284_epp_read_data 0x2922f0ee +drivers/parport/parport parport_ieee1284_epp_write_addr 0xbd3ab121 +drivers/parport/parport parport_ieee1284_epp_write_data 0xf3134f0c +drivers/parport/parport parport_ieee1284_interrupt 0xb3ec0c3b +drivers/parport/parport parport_ieee1284_read_byte 0x7f4b89f9 +drivers/parport/parport parport_ieee1284_read_nibble 0x869b8f60 +drivers/parport/parport parport_ieee1284_write_compat 0x64cbf4e5 +drivers/parport/parport parport_negotiate 0xf9310b4d +drivers/parport/parport parport_put_port 0x711f3e2e +drivers/parport/parport parport_read 0x65914960 +drivers/parport/parport parport_register_device 0x0b071b1e +drivers/parport/parport parport_register_driver 0x247c7c64 +drivers/parport/parport parport_register_port 0x0ee666b0 +drivers/parport/parport parport_release 0x83554639 +drivers/parport/parport parport_remove_port 0xb1e2f2b8 +drivers/parport/parport parport_set_timeout 0x4a015897 +drivers/parport/parport parport_unregister_device 0x8093d32f +drivers/parport/parport parport_unregister_driver 0x2d3bfd93 +drivers/parport/parport parport_wait_event 0x7f3ae05d +drivers/parport/parport parport_wait_peripheral 0x676432d3 +drivers/parport/parport parport_write 0xc83004e8 +drivers/parport/parport_pc parport_pc_probe_port 0xe1125cd4 +drivers/parport/parport_pc parport_pc_unregister_port 0xf2102888 +drivers/pci/hotplug/acpiphp acpiphp_register_attention 0xa6d7c704 +drivers/pci/hotplug/acpiphp acpiphp_unregister_attention 0xbd4a8570 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_bus 0x68eb6d2f +drivers/pci/hotplug/pci_hotplug cpci_hp_register_controller 0xafedcf81 +drivers/pci/hotplug/pci_hotplug cpci_hp_start 0x6a8441be +drivers/pci/hotplug/pci_hotplug cpci_hp_stop 0x94ef4d05 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_bus 0xb8fedd22 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_controller 0xa65be12a +drivers/pci/hotplug/pci_hotplug pci_hotplug_slots_subsys 0x3ddbb0a2 +drivers/pci/hotplug/pci_hotplug pci_hp_change_slot_info 0xe4f21596 +drivers/pci/hotplug/pci_hotplug pci_hp_deregister 0xcb9adc33 +drivers/pci/hotplug/pci_hotplug pci_hp_register 0x71101887 +drivers/pcmcia/pcmcia cs_error 0x30e16988 +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0xdc9713f4 +drivers/pcmcia/pcmcia pcmcia_deregister_client 0xf2ea933c +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0x6e374d83 +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0xd3961e71 +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0x95d29c0e +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0xf12e7e77 +drivers/pcmcia/pcmcia pcmcia_get_status 0x9849202d +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0x8f53391f +drivers/pcmcia/pcmcia pcmcia_get_window 0xc0ffe88e +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0x7c945123 +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x1c029921 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0x69510dcb +drivers/pcmcia/pcmcia pcmcia_register_client 0xad8986e4 +drivers/pcmcia/pcmcia pcmcia_register_driver 0x5c71c49c +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x7a592fb5 +drivers/pcmcia/pcmcia pcmcia_release_io 0xfada5cc5 +drivers/pcmcia/pcmcia pcmcia_release_irq 0x8683bf88 +drivers/pcmcia/pcmcia pcmcia_release_window 0xdbba13e8 +drivers/pcmcia/pcmcia pcmcia_request_configuration 0x591822ae +drivers/pcmcia/pcmcia pcmcia_request_io 0xbb119e71 +drivers/pcmcia/pcmcia pcmcia_request_irq 0x73403663 +drivers/pcmcia/pcmcia pcmcia_request_window 0xd68758e0 +drivers/pcmcia/pcmcia pcmcia_reset_card 0x55a231ee +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0xd1516fad +drivers/pcmcia/pcmcia pcmcia_validate_cis 0x9b57fb29 +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0x3aafa8af +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x151905ee +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0x6b3eb9c2 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0x21602151 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0x36a36588 +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0x923552c4 +drivers/pcmcia/pcmcia_core pccard_reset_card 0x27b3dc6b +drivers/pcmcia/pcmcia_core pccard_static_ops 0x8cd904e0 +drivers/pcmcia/pcmcia_core pccard_validate_cis 0x4e4ea0a8 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0xd967d3f3 +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0x4734157f +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0x24edc2d1 +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0xc5b1b470 +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0x9973ef4a +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0x18037b23 +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x0a633de4 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0xe8d6eefe +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0x387c645c +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0x272eef23 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0x17b31db7 +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0xfa5d465d +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0xcb4e88cf +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0x6f0fe8a8 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0x3720e53c +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0xeede1534 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0xc467c2db +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0x7310f8f5 +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x9a93b686 +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0xff95b16b +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0xdf6c660f +drivers/pcmcia/pcmcia_core release_cis_mem 0x2baeeea7 +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0x060a88e4 +drivers/scsi/53c700 NCR_700_detect 0x240f0860 +drivers/scsi/53c700 NCR_700_intr 0xe19cbc56 +drivers/scsi/53c700 NCR_700_release 0xfafc448e +drivers/scsi/libata __sata_phy_reset 0x3a03dfb9 +drivers/scsi/libata ata_acpi_bus_register 0x4eb7c257 +drivers/scsi/libata ata_acpi_exec_tfs 0x61523182 +drivers/scsi/libata ata_acpi_get_timing 0xc0a11a9c +drivers/scsi/libata ata_acpi_push_id 0xc45843d8 +drivers/scsi/libata ata_acpi_push_timing 0x4aa343b8 +drivers/scsi/libata ata_altstatus 0xd441affc +drivers/scsi/libata ata_bmdma_irq_clear 0x255fdc81 +drivers/scsi/libata ata_bmdma_setup 0x81f9e4ef +drivers/scsi/libata ata_bmdma_start 0x6393afc3 +drivers/scsi/libata ata_bmdma_status 0x933cf510 +drivers/scsi/libata ata_bmdma_stop 0x32cb99f1 +drivers/scsi/libata ata_bus_probe 0x01e83d0a +drivers/scsi/libata ata_bus_reset 0xe7be9a93 +drivers/scsi/libata ata_check_status 0x5f4c03c9 +drivers/scsi/libata ata_dev_classify 0x0531dcb8 +drivers/scsi/libata ata_dev_config 0xe23c0809 +drivers/scsi/libata ata_dev_id_string 0x07d45a53 +drivers/scsi/libata ata_device_add 0x35f8a41e +drivers/scsi/libata ata_device_resume 0xa748785a +drivers/scsi/libata ata_device_shutdown 0x3ce4a322 +drivers/scsi/libata ata_device_suspend 0xac74f8d1 +drivers/scsi/libata ata_eng_timeout 0x070e2eab +drivers/scsi/libata ata_exec_command 0xc42f9b62 +drivers/scsi/libata ata_host_intr 0xae85c5cb +drivers/scsi/libata ata_host_set_remove 0x088f3c7d +drivers/scsi/libata ata_host_stop 0xe1bc00bd +drivers/scsi/libata ata_hotplug_plug 0x6a1faa2c +drivers/scsi/libata ata_hotplug_unplug 0xd6342f09 +drivers/scsi/libata ata_interrupt 0x12058575 +drivers/scsi/libata ata_noop_dev_select 0x6614db65 +drivers/scsi/libata ata_pci_device_resume 0x3f42f3af +drivers/scsi/libata ata_pci_device_suspend 0xcc78503d +drivers/scsi/libata ata_pci_host_stop 0x6089ca8e +drivers/scsi/libata ata_pci_init_native_mode 0x87ca48e3 +drivers/scsi/libata ata_pci_init_one 0x907e1c08 +drivers/scsi/libata ata_pci_remove_one 0xb8e307d7 +drivers/scsi/libata ata_port_disable 0x124909ca +drivers/scsi/libata ata_port_probe 0x8a7a19da +drivers/scsi/libata ata_port_start 0x0ed3a451 +drivers/scsi/libata ata_port_stop 0x0fe50707 +drivers/scsi/libata ata_qc_complete 0x14042209 +drivers/scsi/libata ata_qc_issue_prot 0x8de8df9c +drivers/scsi/libata ata_qc_prep 0x51f2537a +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0x85a869f4 +drivers/scsi/libata ata_scsi_device_shutdown 0xb64be88d +drivers/scsi/libata ata_scsi_device_suspend 0x97f19787 +drivers/scsi/libata ata_scsi_error 0x6feb7f31 +drivers/scsi/libata ata_scsi_ioctl 0xdaaa4e01 +drivers/scsi/libata ata_scsi_queuecmd 0xf5f3ed9c +drivers/scsi/libata ata_scsi_release 0xff3d6a06 +drivers/scsi/libata ata_scsi_simulate 0xe1c1b087 +drivers/scsi/libata ata_scsi_slave_config 0x634606e6 +drivers/scsi/libata ata_sg_init 0xadef2a69 +drivers/scsi/libata ata_sg_init_one 0xeb6a2b9a +drivers/scsi/libata ata_std_bios_param 0x18ad1825 +drivers/scsi/libata ata_std_dev_select 0xe1f05b37 +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0x0067df75 +drivers/scsi/libata ata_tf_load 0x6475e24e +drivers/scsi/libata ata_tf_read 0xae71033b +drivers/scsi/libata ata_tf_to_fis 0x28177a3f +drivers/scsi/libata ata_timing_compute 0xf6f94640 +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata do_drive_get_GTF 0x53b66306 +drivers/scsi/libata do_drive_set_taskfiles 0x8ade3cba +drivers/scsi/libata pci_test_config_bits 0xf710b6c2 +drivers/scsi/libata sata_phy_reset 0x00248d90 +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x7147a4fe +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0x907d5471 +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x53d99751 +drivers/scsi/qlogicfas408 qlogicfas408_abort 0x24b8668c +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0x40cf98f3 +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0x48a50e53 +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0x5197710c +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x97bdeb7b +drivers/scsi/qlogicfas408 qlogicfas408_info 0x0b6f57b1 +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0xd5dcf0c7 +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0x11d58db4 +drivers/scsi/raid_class raid_class_release 0xb9c1d6b1 +drivers/scsi/raid_class raid_component_add 0x65330b56 +drivers/scsi/sas/sas_class sas_register_ha 0xb380f7a7 +drivers/scsi/sas/sas_class sas_unregister_ha 0x44aae999 +drivers/scsi/scsi_mod __scsi_add_device 0x7705ca78 +drivers/scsi/scsi_mod __scsi_device_lookup 0xf5329cab +drivers/scsi/scsi_mod __scsi_device_lookup_by_target 0x86257340 +drivers/scsi/scsi_mod __scsi_iterate_devices 0x2d6d3ddf +drivers/scsi/scsi_mod __scsi_print_command 0xfef96e23 +drivers/scsi/scsi_mod __scsi_print_sense 0x69d38ed9 +drivers/scsi/scsi_mod int_to_scsilun 0xea10212a +drivers/scsi/scsi_mod scsi_add_device 0x93cb003d +drivers/scsi/scsi_mod scsi_add_host 0x9b867591 +drivers/scsi/scsi_mod scsi_adjust_queue_depth 0xc5c66059 +drivers/scsi/scsi_mod scsi_allocate_request 0x62c3ca53 +drivers/scsi/scsi_mod scsi_bios_ptable 0x901501d5 +drivers/scsi/scsi_mod scsi_block_requests 0x1c9b931e +drivers/scsi/scsi_mod scsi_block_when_processing_errors 0x1ce2dd0c +drivers/scsi/scsi_mod scsi_bus_type 0x9e202835 +drivers/scsi/scsi_mod scsi_calculate_bounce_limit 0x38377541 +drivers/scsi/scsi_mod scsi_command_normalize_sense 0xc8bb0c5d +drivers/scsi/scsi_mod scsi_device_cancel 0xdb91351a +drivers/scsi/scsi_mod scsi_device_get 0x3d0f51fb +drivers/scsi/scsi_mod scsi_device_lookup 0x72cb5825 +drivers/scsi/scsi_mod scsi_device_lookup_by_target 0x359ba091 +drivers/scsi/scsi_mod scsi_device_put 0x4556052e +drivers/scsi/scsi_mod scsi_device_quiesce 0x9706dff9 +drivers/scsi/scsi_mod scsi_device_resume 0x4d922909 +drivers/scsi/scsi_mod scsi_device_set_state 0xb92fc3b2 +drivers/scsi/scsi_mod scsi_device_types 0x6df713c9 +drivers/scsi/scsi_mod scsi_do_req 0x97b00e02 +drivers/scsi/scsi_mod scsi_execute 0x6f554d61 +drivers/scsi/scsi_mod scsi_execute_req 0x29edc0b8 +drivers/scsi/scsi_mod scsi_extd_sense_format 0x11267875 +drivers/scsi/scsi_mod scsi_finish_command 0x0aaa0ed3 +drivers/scsi/scsi_mod scsi_flush_work 0xbb7c02f6 +drivers/scsi/scsi_mod scsi_free_host_dev 0x81a0dd4e +drivers/scsi/scsi_mod scsi_get_command 0x099259fc +drivers/scsi/scsi_mod scsi_get_host_dev 0x410ee997 +drivers/scsi/scsi_mod scsi_get_sense_info_fld 0x796fc5ce +drivers/scsi/scsi_mod scsi_host_alloc 0xef0bde63 +drivers/scsi/scsi_mod scsi_host_get 0x758c153d +drivers/scsi/scsi_mod scsi_host_lookup 0xb0671e44 +drivers/scsi/scsi_mod scsi_host_put 0x5e81c7ee +drivers/scsi/scsi_mod scsi_host_set_state 0x5b3ca6d1 +drivers/scsi/scsi_mod scsi_internal_device_block 0x8c9ec8e3 +drivers/scsi/scsi_mod scsi_internal_device_unblock 0x8675f123 +drivers/scsi/scsi_mod scsi_io_completion 0xbe504012 +drivers/scsi/scsi_mod scsi_ioctl 0x4ef2df4c +drivers/scsi/scsi_mod scsi_ioctl_send_command 0x9435e558 +drivers/scsi/scsi_mod scsi_is_host_device 0x44e79fc7 +drivers/scsi/scsi_mod scsi_is_sdev_device 0x079a3c95 +drivers/scsi/scsi_mod scsi_is_target_device 0xfbd53241 +drivers/scsi/scsi_mod scsi_logging_level 0xaf3dd7dc +drivers/scsi/scsi_mod scsi_mode_sense 0x91861a5d +drivers/scsi/scsi_mod scsi_nonblockable_ioctl 0x2f522250 +drivers/scsi/scsi_mod scsi_normalize_sense 0x0c65e73c +drivers/scsi/scsi_mod scsi_partsize 0x4afe9a77 +drivers/scsi/scsi_mod scsi_print_command 0x1369e891 +drivers/scsi/scsi_mod scsi_print_msg 0x67f88938 +drivers/scsi/scsi_mod scsi_print_req_sense 0xd0014651 +drivers/scsi/scsi_mod scsi_print_sense 0x40c9b922 +drivers/scsi/scsi_mod scsi_print_sense_hdr 0xca5dbc50 +drivers/scsi/scsi_mod scsi_print_status 0x9cfd56c5 +drivers/scsi/scsi_mod scsi_put_command 0x53fc1351 +drivers/scsi/scsi_mod scsi_queue_work 0xbbe34839 +drivers/scsi/scsi_mod scsi_register 0xe616fb41 +drivers/scsi/scsi_mod scsi_register_driver 0xf4ba4ef8 +drivers/scsi/scsi_mod scsi_register_interface 0x10326f11 +drivers/scsi/scsi_mod scsi_release_request 0xd115b513 +drivers/scsi/scsi_mod scsi_remove_device 0x94675526 +drivers/scsi/scsi_mod scsi_remove_host 0xfe799175 +drivers/scsi/scsi_mod scsi_remove_target 0x0145ba66 +drivers/scsi/scsi_mod scsi_report_bus_reset 0x3018f431 +drivers/scsi/scsi_mod scsi_report_device_reset 0x76f0144d +drivers/scsi/scsi_mod scsi_request_normalize_sense 0xa31a8797 +drivers/scsi/scsi_mod scsi_rescan_device 0x8ae5673d +drivers/scsi/scsi_mod scsi_reset_provider 0x82c10056 +drivers/scsi/scsi_mod scsi_scan_host 0xdf7f320d +drivers/scsi/scsi_mod scsi_scan_target 0x6a0dc32e +drivers/scsi/scsi_mod scsi_sense_desc_find 0x2b0ba2b0 +drivers/scsi/scsi_mod scsi_sense_key_string 0x96cd2b04 +drivers/scsi/scsi_mod scsi_set_medium_removal 0x074a0f21 +drivers/scsi/scsi_mod scsi_setup_blk_pc_cmnd 0x0045ad90 +drivers/scsi/scsi_mod scsi_target_block 0x0aba82e8 +drivers/scsi/scsi_mod scsi_target_quiesce 0x618e4d36 +drivers/scsi/scsi_mod scsi_target_resume 0x78458098 +drivers/scsi/scsi_mod scsi_target_unblock 0x227b7b73 +drivers/scsi/scsi_mod scsi_test_unit_ready 0x1252f691 +drivers/scsi/scsi_mod scsi_track_queue_full 0x8ad51942 +drivers/scsi/scsi_mod scsi_unblock_requests 0x10a540e8 +drivers/scsi/scsi_mod scsi_unregister 0x026d23b8 +drivers/scsi/scsi_mod scsicam_bios_param 0xb86aa187 +drivers/scsi/scsi_mod starget_for_each_device 0xc18d198c +drivers/scsi/scsi_transport_fc fc_attach_transport 0xef81007a +drivers/scsi/scsi_transport_fc fc_release_transport 0xe43f8ea5 +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x1561eac1 +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0x79cf0626 +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x5c8262e7 +drivers/scsi/scsi_transport_fc fc_remove_host 0xff7df99d +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0xf428f060 +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x70e7d413 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x3dca4815 +drivers/scsi/scsi_transport_sas sas_attach_transport 0x594c3fb7 +drivers/scsi/scsi_transport_sas sas_phy_add 0x8fd49d00 +drivers/scsi/scsi_transport_sas sas_phy_alloc 0xe92e477d +drivers/scsi/scsi_transport_sas sas_phy_delete 0x601703c3 +drivers/scsi/scsi_transport_sas sas_phy_free 0x92e6af5d +drivers/scsi/scsi_transport_sas sas_release_transport 0xfe31eaad +drivers/scsi/scsi_transport_sas sas_remove_host 0x8d9a523c +drivers/scsi/scsi_transport_sas sas_rphy_add 0x99ecdeae +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x93287672 +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x60e0cb4a +drivers/scsi/scsi_transport_sas sas_rphy_free 0x00a2db26 +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0xa70e1473 +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0x46a90fc5 +drivers/scsi/scsi_transport_spi spi_attach_transport 0x4bffb17d +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0x76702e7b +drivers/scsi/scsi_transport_spi spi_dv_device 0x4b866a1d +drivers/scsi/scsi_transport_spi spi_release_transport 0xae2f0d05 +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0xab9a9581 +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0xc9c79252 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0xbc67cc18 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x983ad656 +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0x84cda404 +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0x057b80e6 +drivers/telephony/ixj ixj_pcmcia_probe 0x24d3dd63 +drivers/telephony/phonedev phone_register_device 0x1dad8661 +drivers/telephony/phonedev phone_unregister_device 0x7c5d807b +drivers/usb/atm/usbatm usbatm_usb_disconnect 0x29b045a7 +drivers/usb/atm/usbatm usbatm_usb_probe 0xfeb6ccda +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0xd5e9ec5b +drivers/usb/core/usbcore usb_alloc_dev 0x3b2b5bda +drivers/usb/core/usbcore usb_alloc_urb 0xb0141aa2 +drivers/usb/core/usbcore usb_altnum_to_altsetting 0x70a310c9 +drivers/usb/core/usbcore usb_buffer_alloc 0x8e7c66e4 +drivers/usb/core/usbcore usb_buffer_free 0x1cc8d29c +drivers/usb/core/usbcore usb_buffer_map_sg 0x393493fb +drivers/usb/core/usbcore usb_buffer_unmap_sg 0x6247b1b1 +drivers/usb/core/usbcore usb_bulk_msg 0x0fe125e7 +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0xd9eb4197 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0x0ee1d1ee +drivers/usb/core/usbcore usb_claim_bandwidth 0x9fc3aef8 +drivers/usb/core/usbcore usb_clear_halt 0xcf224c21 +drivers/usb/core/usbcore usb_control_msg 0x74cdfddc +drivers/usb/core/usbcore usb_create_hcd 0xd2c82e95 +drivers/usb/core/usbcore usb_deregister 0xe1774e89 +drivers/usb/core/usbcore usb_deregister_dev 0x3af83288 +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0x70f33917 +drivers/usb/core/usbcore usb_driver_claim_interface 0x72328363 +drivers/usb/core/usbcore usb_driver_release_interface 0x6d9617fa +drivers/usb/core/usbcore usb_find_device 0xf94f3105 +drivers/usb/core/usbcore usb_find_interface 0xe24e4952 +drivers/usb/core/usbcore usb_free_urb 0x21bff83d +drivers/usb/core/usbcore usb_get_current_frame_number 0xe6034a1f +drivers/usb/core/usbcore usb_get_descriptor 0x5fb26fa5 +drivers/usb/core/usbcore usb_get_dev 0x85b48558 +drivers/usb/core/usbcore usb_get_intf 0x520cadca +drivers/usb/core/usbcore usb_get_status 0x5aa3b036 +drivers/usb/core/usbcore usb_get_string 0x24b80e3f +drivers/usb/core/usbcore usb_get_urb 0xe04090a6 +drivers/usb/core/usbcore usb_hc_died 0xa3fa54f1 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0xbdbd0425 +drivers/usb/core/usbcore usb_hcd_pci_probe 0x22cd0a69 +drivers/usb/core/usbcore usb_hcd_pci_remove 0xfb5d2644 +drivers/usb/core/usbcore usb_hcd_pci_resume 0xc90209f6 +drivers/usb/core/usbcore usb_hcd_pci_suspend 0xf495ece4 +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0xb50dcb50 +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0x30451c12 +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0xf48e5b87 +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0x0592a6bc +drivers/usb/core/usbcore usb_ifnum_to_if 0x7028e00d +drivers/usb/core/usbcore usb_init_urb 0x81811d4a +drivers/usb/core/usbcore usb_kill_urb 0x06fd10c7 +drivers/usb/core/usbcore usb_lock_device 0xd6f13822 +drivers/usb/core/usbcore usb_lock_device_for_reset 0x28f31391 +drivers/usb/core/usbcore usb_match_id 0x0d82e467 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0xa5e13ac2 +drivers/usb/core/usbcore usb_put_dev 0x65801379 +drivers/usb/core/usbcore usb_put_hcd 0x5358a7cb +drivers/usb/core/usbcore usb_put_intf 0xfcdaf001 +drivers/usb/core/usbcore usb_register 0x08e5bee9 +drivers/usb/core/usbcore usb_register_dev 0xa254c486 +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x11aa8f2d +drivers/usb/core/usbcore usb_remove_hcd 0x8f403c9c +drivers/usb/core/usbcore usb_reset_configuration 0x9e2d33ea +drivers/usb/core/usbcore usb_reset_device 0xe593cd76 +drivers/usb/core/usbcore usb_set_device_state 0xf33f142c +drivers/usb/core/usbcore usb_set_interface 0x66766cb6 +drivers/usb/core/usbcore usb_sg_cancel 0xb1ae9356 +drivers/usb/core/usbcore usb_sg_init 0x1b80e161 +drivers/usb/core/usbcore usb_sg_wait 0x139d1d20 +drivers/usb/core/usbcore usb_string 0xf00d4556 +drivers/usb/core/usbcore usb_submit_urb 0x71a97bb2 +drivers/usb/core/usbcore usb_trylock_device 0xa6d7566e +drivers/usb/core/usbcore usb_unlink_urb 0x8e7843e2 +drivers/usb/core/usbcore usb_unlock_device 0xc1d91ee5 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/gadget/net2280 net2280_set_fifo_mode 0x07934fa8 +drivers/usb/gadget/net2280 usb_gadget_register_driver 0x10938f7c +drivers/usb/gadget/net2280 usb_gadget_unregister_driver 0x06cfcd57 +drivers/usb/host/sl811-hcd sl811h_driver 0x2efa419e +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0x4c5f4c30 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0xbda56f54 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0x3ba234a3 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0x91ab7056 +drivers/usb/media/usbvideo RingQueue_Dequeue 0x54ded406 +drivers/usb/media/usbvideo RingQueue_Enqueue 0x5293ede2 +drivers/usb/media/usbvideo RingQueue_Flush 0x9778abda +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0xdf605c59 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0x59e18e0e +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x2b8db033 +drivers/usb/media/usbvideo usbvideo_Deregister 0x5558b2bb +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0xeb095a5e +drivers/usb/media/usbvideo usbvideo_TestPattern 0x0774fb61 +drivers/usb/media/usbvideo usbvideo_register 0x75394071 +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0xc2fa581d +drivers/usb/media/w9968cf w9968cf_vppmod_register 0x6e1a3b01 +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0xfe714f67 +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0x1cce6f4c +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0x5b56d34a +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0x4eacd046 +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0x082d6c84 +drivers/usb/net/usbnet usbnet_defer_kevent 0xe19e912d +drivers/usb/net/usbnet usbnet_disconnect 0xc13b4940 +drivers/usb/net/usbnet usbnet_get_drvinfo 0xa2d8ae17 +drivers/usb/net/usbnet usbnet_get_endpoints 0xdaa26294 +drivers/usb/net/usbnet usbnet_get_msglevel 0x4746ca9c +drivers/usb/net/usbnet usbnet_probe 0xca695c55 +drivers/usb/net/usbnet usbnet_resume 0x6c9c85f1 +drivers/usb/net/usbnet usbnet_set_msglevel 0x72e5c4a7 +drivers/usb/net/usbnet usbnet_skb_return 0x6257f1a1 +drivers/usb/net/usbnet usbnet_suspend 0xaa4feb18 +drivers/usb/serial/usbserial ezusb_set_reset 0x20dec23f +drivers/usb/serial/usbserial ezusb_writememory 0xb165359b +drivers/usb/serial/usbserial usb_serial_deregister 0x1802ff9d +drivers/usb/serial/usbserial usb_serial_disconnect 0xf2c033ef +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x4cbde333 +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0x31548a14 +drivers/usb/serial/usbserial usb_serial_register 0xe8c005a3 +drivers/video/backlight/backlight backlight_device_register 0xbd9a9a08 +drivers/video/backlight/backlight backlight_device_unregister 0x8273b298 +drivers/video/backlight/lcd lcd_device_register 0x65a6069e +drivers/video/backlight/lcd lcd_device_unregister 0x6bb05a0d +drivers/video/console/bitblit fbcon_set_bitops 0xdb100990 +drivers/video/console/font find_font 0xf7584a9c +drivers/video/console/font get_default_font 0x093e3659 +drivers/video/console/softcursor soft_cursor 0x2dd13c04 +drivers/video/console/tileblit fbcon_set_tileops 0xef1de540 +drivers/video/cyber2000fb cyber2000fb_attach 0x540895fa +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x827414f6 +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0x5489adec +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0xb00dae2c +drivers/video/macmodes mac_find_mode 0xedfeb7db +drivers/video/macmodes mac_map_monitor_sense 0xe2304303 +drivers/video/macmodes mac_var_to_vmode 0x00907cd5 +drivers/video/macmodes mac_vmode_to_var 0x08ed0b62 +drivers/video/matrox/g450_pll g450_mnp2f 0xd701f6f5 +drivers/video/matrox/g450_pll matroxfb_g450_setclk 0x4aa2f0af +drivers/video/matrox/g450_pll matroxfb_g450_setpll_cond 0x4435c24a +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_init 0x3e0b96e4 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_restore 0x6849dc9e +drivers/video/matrox/matroxfb_DAC1064 matrox_G100 0xb5854bd3 +drivers/video/matrox/matroxfb_DAC1064 matrox_mystique 0x6fa69eec +drivers/video/matrox/matroxfb_Ti3026 matrox_millennium 0xb6a04344 +drivers/video/matrox/matroxfb_accel matrox_cfbX_init 0x85242a4a +drivers/video/matrox/matroxfb_base matroxfb_enable_irq 0xcda87178 +drivers/video/matrox/matroxfb_base matroxfb_register_driver 0xadc5e80e +drivers/video/matrox/matroxfb_base matroxfb_unregister_driver 0x4f8eb63e +drivers/video/matrox/matroxfb_base matroxfb_wait_for_sync 0xb6dca687 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_connect 0x83e1288a +drivers/video/matrox/matroxfb_g450 matroxfb_g450_shutdown 0x0d8bcc9d +drivers/video/matrox/matroxfb_misc matroxfb_DAC_in 0x391f5a61 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_out 0x26056081 +drivers/video/matrox/matroxfb_misc matroxfb_PLL_calcclock 0x25cf8049 +drivers/video/matrox/matroxfb_misc matroxfb_read_pins 0xc8ff6b07 +drivers/video/matrox/matroxfb_misc matroxfb_var2my 0xabd8e427 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWinit 0xc375c86c +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWrestore 0x979b98c7 +drivers/video/sis/sisfb sis_free 0x454a3cf0 +drivers/video/sis/sisfb sis_free_new 0x4c61b22e +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0x4aac71a7 +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0x201c7e94 +drivers/w1/ds9490r ds_put_device 0x866816b1 +drivers/w1/ds9490r ds_read_bit 0x3880bfa8 +drivers/w1/ds9490r ds_read_block 0xf74a9a23 +drivers/w1/ds9490r ds_read_byte 0xa56b4cdb +drivers/w1/ds9490r ds_reset 0x376d1521 +drivers/w1/ds9490r ds_touch_bit 0xc05d978d +drivers/w1/ds9490r ds_write_bit 0xed3e4e4b +drivers/w1/ds9490r ds_write_block 0x958bd3c0 +drivers/w1/ds9490r ds_write_byte 0xf8839611 +drivers/w1/wire w1_add_master_device 0xd703c624 +drivers/w1/wire w1_calc_crc8 0x7c2f2afb +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xb0c86d52 +drivers/w1/wire w1_family_put 0x45181a35 +drivers/w1/wire w1_family_registered 0x345f469c +drivers/w1/wire w1_read_8 0x533f48c5 +drivers/w1/wire w1_read_block 0x504d3384 +drivers/w1/wire w1_register_family 0xadeb1de9 +drivers/w1/wire w1_remove_master_device 0x31a7a05c +drivers/w1/wire w1_reset_bus 0x1bb02be1 +drivers/w1/wire w1_reset_select_slave 0x807e408c +drivers/w1/wire w1_search_devices 0xd61d9e08 +drivers/w1/wire w1_touch_bit 0xee82633a +drivers/w1/wire w1_unregister_family 0x2616cdb9 +drivers/w1/wire w1_write_8 0x773893e6 +drivers/w1/wire w1_write_block 0x14e5d5d0 +fs/configfs/configfs config_group_init 0xc9dc923d +fs/configfs/configfs config_group_init_type_name 0x0e5bce7c +fs/configfs/configfs config_item_get 0xf2f7101f +fs/configfs/configfs config_item_init 0xf715cd9f +fs/configfs/configfs config_item_init_type_name 0x275210e2 +fs/configfs/configfs config_item_put 0x401286d6 +fs/configfs/configfs config_item_set_name 0x775bdf1f +fs/configfs/configfs configfs_register_subsystem 0xdbd1b432 +fs/configfs/configfs configfs_unregister_subsystem 0x77d5930d +fs/exportfs/exportfs export_op_default 0x3f9090bc +fs/exportfs/exportfs find_exported_dentry 0x46bee235 +fs/fat/fat fat_add_entries 0x24af33cf +fs/fat/fat fat_alloc_new_dir 0xfb354728 +fs/fat/fat fat_attach 0x6ef7c828 +fs/fat/fat fat_build_inode 0x18245831 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0xfc139538 +fs/fat/fat fat_dir_empty 0xf156a388 +fs/fat/fat fat_fill_super 0xca86389d +fs/fat/fat fat_free_clusters 0xae930d23 +fs/fat/fat fat_fs_panic 0x367aa397 +fs/fat/fat fat_get_dotdot_entry 0x95fc6e24 +fs/fat/fat fat_notify_change 0xd1569422 +fs/fat/fat fat_remove_entries 0x9a6880b9 +fs/fat/fat fat_scan 0x768ed22b +fs/fat/fat fat_search_long 0x499ab660 +fs/fat/fat fat_sync_bhs 0x552d7f55 +fs/fat/fat fat_sync_inode 0x0d0d5e6a +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0x2b11fc56 +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0x4a462512 +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0x6041a2b6 +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0x4d385abd +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0x1f4d7824 +fs/jbd/jbd journal_abort 0x89b649a2 +fs/jbd/jbd journal_ack_err 0x757504b2 +fs/jbd/jbd journal_blocks_per_page 0xa66ef6b7 +fs/jbd/jbd journal_check_available_features 0xc8115c35 +fs/jbd/jbd journal_check_used_features 0xce791f64 +fs/jbd/jbd journal_clear_err 0x8a1c0bc2 +fs/jbd/jbd journal_create 0x015a83cf +fs/jbd/jbd journal_destroy 0xa575127e +fs/jbd/jbd journal_dirty_data 0x503f762f +fs/jbd/jbd journal_dirty_metadata 0x530dcbab +fs/jbd/jbd journal_errno 0x951c0851 +fs/jbd/jbd journal_extend 0x9cb67fff +fs/jbd/jbd journal_flush 0xb92b47f8 +fs/jbd/jbd journal_force_commit 0x96bca936 +fs/jbd/jbd journal_force_commit_nested 0xc84509f0 +fs/jbd/jbd journal_forget 0x9e942131 +fs/jbd/jbd journal_get_create_access 0xf65b2780 +fs/jbd/jbd journal_get_undo_access 0xed68f132 +fs/jbd/jbd journal_get_write_access 0x0e29e374 +fs/jbd/jbd journal_init_dev 0xb68f2c04 +fs/jbd/jbd journal_init_inode 0x10a48ce0 +fs/jbd/jbd journal_invalidatepage 0x83a28ce2 +fs/jbd/jbd journal_load 0x1f94b03d +fs/jbd/jbd journal_lock_updates 0x36bd7b87 +fs/jbd/jbd journal_release_buffer 0xa71ccdb0 +fs/jbd/jbd journal_restart 0x1931ab43 +fs/jbd/jbd journal_revoke 0xb037128d +fs/jbd/jbd journal_set_features 0x561b7f80 +fs/jbd/jbd journal_start 0x67dd27f4 +fs/jbd/jbd journal_start_commit 0xb69815b6 +fs/jbd/jbd journal_stop 0x8a99fbe8 +fs/jbd/jbd journal_try_to_free_buffers 0x2afdb10a +fs/jbd/jbd journal_unlock_updates 0x0068e144 +fs/jbd/jbd journal_update_format 0xd7262c40 +fs/jbd/jbd journal_update_superblock 0xb9b5d31a +fs/jbd/jbd journal_wipe 0x4bd8b73d +fs/jbd/jbd log_wait_commit 0xe4d25252 +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0x076c5746 +fs/lockd/lockd nlmsvc_ops 0x09919584 +fs/nfsd/nfsd nfs4_acl_add_ace 0x1bb3671e +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x687f6251 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0x1cb231d0 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0x1d747ce3 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xbaeb4700 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0xc6058124 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0x998efe90 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0x028ca026 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x43bce54e +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0x36418553 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0xa9f5379a +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0x0e002c4c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0xceeeb7f7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x12b75f84 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0x61b3e3ea +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xa82a8645 +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0x860c6f4b +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0x549c1545 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0xceb53836 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0x657b0cc3 +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0xacd7712d +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0xf8f2a6fe +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0xd98c5f5f +fs/relayfs/relayfs relay_buf_full 0x780ae6c6 +fs/relayfs/relayfs relay_close 0x18101afd +fs/relayfs/relayfs relay_flush 0xd5cb80a5 +fs/relayfs/relayfs relay_open 0xa86f3fd8 +fs/relayfs/relayfs relay_reset 0x419059f5 +fs/relayfs/relayfs relay_subbufs_consumed 0x48732f72 +fs/relayfs/relayfs relay_switch_subbuf 0xbed1f621 +fs/relayfs/relayfs relayfs_create_dir 0xb27b9594 +fs/relayfs/relayfs relayfs_file_operations 0x92962a34 +fs/relayfs/relayfs relayfs_remove_dir 0x760eac48 +lib/crc-ccitt crc_ccitt 0x3771b461 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x8ffdb3b8 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x2329b292 +lib/libcrc32c crc32c_le 0x37d0b921 +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0x0baf80a3 +net/appletalk/appletalk alloc_ltalkdev 0xe530b393 +net/appletalk/appletalk atalk_find_dev_addr 0xff549331 +net/appletalk/appletalk atrtr_get_dev 0x43a55247 +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0xc2b8c3fd +net/ax25/ax25 ax25_findbyuid 0x564d9f14 +net/ax25/ax25 ax25_hard_header 0x96939ae1 +net/ax25/ax25 ax25_linkfail_register 0x80ea0795 +net/ax25/ax25 ax25_linkfail_release 0x4725bfdf +net/ax25/ax25 ax25_listen_register 0x8be763a7 +net/ax25/ax25 ax25_listen_release 0x5c49a473 +net/ax25/ax25 ax25_protocol_register 0x591f5611 +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0x4d1b0eae +net/ax25/ax25 ax25_send_frame 0x80c6d855 +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0x92ade0a0 +net/bluetooth/bluetooth bt_accept_enqueue 0xc164b84d +net/bluetooth/bluetooth bt_accept_unlink 0x146ca81c +net/bluetooth/bluetooth bt_class 0x51733fa4 +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0x2da1b747 +net/bluetooth/bluetooth bt_sock_poll 0x2d765c18 +net/bluetooth/bluetooth bt_sock_recvmsg 0xe57e18f0 +net/bluetooth/bluetooth bt_sock_register 0xa1f94219 +net/bluetooth/bluetooth bt_sock_unlink 0xf4999a47 +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0xbc55838d +net/bluetooth/bluetooth hci_alloc_dev 0xd207944a +net/bluetooth/bluetooth hci_conn_auth 0x76c8e950 +net/bluetooth/bluetooth hci_conn_change_link_key 0x8138828b +net/bluetooth/bluetooth hci_conn_encrypt 0xecf72c82 +net/bluetooth/bluetooth hci_conn_switch_role 0x3590637e +net/bluetooth/bluetooth hci_connect 0x8701dcae +net/bluetooth/bluetooth hci_free_dev 0x2cc3ae60 +net/bluetooth/bluetooth hci_get_route 0xfbe5fd7d +net/bluetooth/bluetooth hci_register_cb 0x7ab09398 +net/bluetooth/bluetooth hci_register_dev 0xd242b0a5 +net/bluetooth/bluetooth hci_register_proto 0x41f0dc6b +net/bluetooth/bluetooth hci_resume_dev 0x02c356ca +net/bluetooth/bluetooth hci_send_acl 0xf25d9e52 +net/bluetooth/bluetooth hci_send_sco 0xf3180434 +net/bluetooth/bluetooth hci_suspend_dev 0x76d830f2 +net/bluetooth/bluetooth hci_unregister_cb 0xaf77d042 +net/bluetooth/bluetooth hci_unregister_dev 0x869fea3c +net/bluetooth/bluetooth hci_unregister_proto 0x20f0a97d +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0xacc0fb74 +net/bridge/netfilter/ebtables ebt_do_table 0x91ade2c5 +net/bridge/netfilter/ebtables ebt_register_match 0xdfb8c5ef +net/bridge/netfilter/ebtables ebt_register_table 0xd6c9dff4 +net/bridge/netfilter/ebtables ebt_register_target 0xc2746943 +net/bridge/netfilter/ebtables ebt_register_watcher 0xf305b02e +net/bridge/netfilter/ebtables ebt_unregister_match 0x7db82847 +net/bridge/netfilter/ebtables ebt_unregister_table 0x086596d6 +net/bridge/netfilter/ebtables ebt_unregister_target 0xff9e7cf1 +net/bridge/netfilter/ebtables ebt_unregister_watcher 0xbc5e964e +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x3a18e70d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0x71ecc67f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x7824d7b3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xded46fa7 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0x62825a7c +net/dccp/dccp ccid_init 0x3a10a07e +net/dccp/dccp ccid_register 0x000f5f6f +net/dccp/dccp ccid_unregister 0x0beb8086 +net/dccp/dccp dccp_hashinfo 0x8fb40600 +net/dccp/dccp dccp_insert_option 0x0b1b8c08 +net/dccp/dccp dccp_insert_option_elapsed_time 0xeba3604c +net/dccp/dccp dccp_insert_option_timestamp 0x1748a7ad +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0xfc46b215 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0x3dbbd7fa +net/ieee80211/ieee80211 alloc_ieee80211 0x84bc7c70 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0xc6011db8 +net/ieee80211/ieee80211 ieee80211_channel_to_index 0x0b8c2fe9 +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0x76ed3c6b +net/ieee80211/ieee80211 ieee80211_get_channel 0x5fea4a52 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0xc2e6c372 +net/ieee80211/ieee80211 ieee80211_get_geo 0x64287150 +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0xca7ebbc0 +net/ieee80211/ieee80211 ieee80211_rx 0x00b88e97 +net/ieee80211/ieee80211 ieee80211_rx_mgt 0xca733c87 +net/ieee80211/ieee80211 ieee80211_set_geo 0x8409bb6a +net/ieee80211/ieee80211 ieee80211_tx_frame 0x851e7bfe +net/ieee80211/ieee80211 ieee80211_txb_free 0x4ec0da56 +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0x741f7a33 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0xa39f6f4a +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x81cf07ce +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0x1381b53c +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0x1aa56a11 +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0xe2416f90 +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x60ba48ba +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0xd2590146 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x2313b864 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0x2d3e5ee9 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x40d2a52e +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0xc597a3a3 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x681720b1 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0x4e089896 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0x620e7561 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x2f3702aa +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0x60940939 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0x66ee8208 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0x6d0dab6d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0xf8101298 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0x40ef6ecd +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0x9a289474 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0xe63c974e +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0xa54a1698 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x2b27380f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x5722e031 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0xa39b44dc +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x33326cba +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x7044ed6c +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x459d282d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x728d814b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0x3d6668ff +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0xa0cf4bfc +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x5892d485 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0x30113615 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0x3f8b32a6 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0xf1fb355f +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0xcf26d11f +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0x09cfa4d0 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0x8c54bec4 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0xa611567d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0xbeb050e3 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0xd8b9e922 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x98b3d3f7 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x32468efd +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x8beb324c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0xcfe5ebc5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0xb7e56070 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x05852166 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0xa2da69f6 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0x4ad743a8 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0x59e35fe7 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0xfd9e86ed +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0xe5af3cc4 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0xada8ac6f +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0xf42fdb97 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x90233b65 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x33a51480 +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0x707f2b4d +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0xea5d2f5e +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0xe4f48810 +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0x9c917603 +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0xd29819d3 +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0x384592bb +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0xd0aaadba +net/ipv4/ipvs/ip_vs register_ip_vs_app 0x19ac89b8 +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0x31685baa +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0x2b03b581 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0x4f5e8c4c +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0xfb686a82 +net/ipv4/netfilter/arp_tables arpt_do_table 0x22d60aed +net/ipv4/netfilter/arp_tables arpt_register_table 0xa83f255a +net/ipv4/netfilter/arp_tables arpt_register_target 0xc671ff45 +net/ipv4/netfilter/arp_tables arpt_unregister_table 0xd76b76e8 +net/ipv4/netfilter/arp_tables arpt_unregister_target 0xef9cd9f5 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x640fe975 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x95a44942 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0x7aead33a +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0xfe68fc41 +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0x8a851334 +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0x69e6efab +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x3723751d +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0xcc1aad9b +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0xd228690c +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0x9bce82bb +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0xd0e4376c +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x7d64f601 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0xc8e347cc +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0x4dcd0fdf +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x445d3faa +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0xb15485be +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0xbf306fe9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0x6cb674f2 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x23bd894d +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0xa2834c44 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x0f941285 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x94aabf85 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0xb313215e +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0xa634c35a +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0xf44db9fb +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0x0509f164 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x7bc538b2 +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x5027785e +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0xc2dd3b76 +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0x47760008 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x8d421660 +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0xd3c07b53 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0xdcfe9c7c +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0xbfd91c30 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x8843d684 +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x1acf6d24 +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0x1031ae18 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0x4a0e1d82 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0xbc52c879 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0xe522bd73 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0x078d27d8 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0xd2f68ed4 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x29dc5788 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0xb25f571e +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0x4310bbb1 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0x6f7deea7 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0x46678b62 +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0x133c2d0c +net/ipv4/netfilter/ip_nat ip_nat_packet 0xcf4ce846 +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x19680de7 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0xb6bd38c4 +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x1df73e71 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0x364b0867 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x8d158aa2 +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0xf939dc41 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0xcb163131 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x7fcdab11 +net/ipv4/netfilter/ip_tables ipt_do_table 0x5776c4b7 +net/ipv4/netfilter/ip_tables ipt_find_target 0x244b7d17 +net/ipv4/netfilter/ip_tables ipt_register_match 0xfad0372a +net/ipv4/netfilter/ip_tables ipt_register_table 0xd3afc1ed +net/ipv4/netfilter/ip_tables ipt_register_target 0xc7319ae6 +net/ipv4/netfilter/ip_tables ipt_unregister_match 0x70a4c147 +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x48c6a9e8 +net/ipv4/netfilter/ip_tables ipt_unregister_target 0x6d1f396b +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0xc31ae443 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0x07f98419 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0x04e387a8 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0x15fbe228 +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x278d1671 +net/ipv6/ipv6 inet6_add_protocol 0xf740b03a +net/ipv6/ipv6 inet6_bind 0x91954dbe +net/ipv6/ipv6 inet6_del_protocol 0x0671c1d1 +net/ipv6/ipv6 inet6_getname 0x5503ad72 +net/ipv6/ipv6 inet6_ioctl 0x21c47250 +net/ipv6/ipv6 inet6_register_protosw 0x3fb4abf2 +net/ipv6/ipv6 inet6_release 0x96fb82ae +net/ipv6/ipv6 inet6_unregister_protosw 0x725fb414 +net/ipv6/ipv6 ip6_route_me_harder 0xfad1caf6 +net/ipv6/ipv6 ip6_route_output 0x8d695b84 +net/ipv6/ipv6 ip6_xmit 0xd6b50be1 +net/ipv6/ipv6 ipv6_chk_addr 0xa0037229 +net/ipv6/ipv6 ipv6_get_saddr 0x00f2993b +net/ipv6/ipv6 ipv6_getsockopt 0x10927230 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0x38ee4b5d +net/ipv6/ipv6 ipv6_setsockopt 0x05e921ea +net/ipv6/ipv6 ndisc_mc_map 0xc7ae62ef +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0xecf23b50 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0x516db216 +net/ipv6/ipv6 xfrm6_rcv_spi 0xa6702fe1 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0x9a9c3c7d +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0xeaa6b7ca +net/ipv6/netfilter/ip6_tables ip6t_register_table 0x74d88add +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x49251242 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0xbd415387 +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0xeb27e270 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0xaa85a41d +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0xa5465a3d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0x66a17dca +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0x9d557458 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/irda/ircomm/ircomm ircomm_close 0x8a7f6ae2 +net/irda/ircomm/ircomm ircomm_connect_request 0x38d0da33 +net/irda/ircomm/ircomm ircomm_connect_response 0xacd672f5 +net/irda/ircomm/ircomm ircomm_control_request 0xcc64ce4e +net/irda/ircomm/ircomm ircomm_data_request 0xeb2fefce +net/irda/ircomm/ircomm ircomm_disconnect_request 0x6b2aed51 +net/irda/ircomm/ircomm ircomm_flow_request 0xea4e88c3 +net/irda/ircomm/ircomm ircomm_open 0x091cc0a8 +net/irda/irda alloc_irdadev 0x0796d850 +net/irda/irda async_unwrap_char 0x256e7dcf +net/irda/irda async_wrap_skb 0x02b9f194 +net/irda/irda hashbin_delete 0x94a8156e +net/irda/irda hashbin_find 0xe0acf0d4 +net/irda/irda hashbin_get_first 0x29783db6 +net/irda/irda hashbin_get_next 0x5f261aef +net/irda/irda hashbin_insert 0x5861b834 +net/irda/irda hashbin_lock_find 0xd627dc1a +net/irda/irda hashbin_new 0x543a6db5 +net/irda/irda hashbin_remove 0xb7884205 +net/irda/irda hashbin_remove_this 0x7f933922 +net/irda/irda irda_debug 0x38a20e5b +net/irda/irda irda_device_dongle_cleanup 0xed2648b0 +net/irda/irda irda_device_dongle_init 0x78d404ed +net/irda/irda irda_device_register_dongle 0xfbb9ad8f +net/irda/irda irda_device_set_media_busy 0x5b71097e +net/irda/irda irda_device_unregister_dongle 0x62d4d95d +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0xe40d3be9 +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_setup_dma 0xd6deeaae +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0x1512fb94 +net/irda/irda iriap_getvaluebyclass_request 0x60fbe2bd +net/irda/irda iriap_open 0xb2a275c9 +net/irda/irda irias_add_integer_attrib 0xc10a5281 +net/irda/irda irias_add_octseq_attrib 0x550a5e27 +net/irda/irda irias_add_string_attrib 0x18edd399 +net/irda/irda irias_delete_object 0x89136cd1 +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x45a03a53 +net/irda/irda irias_find_object 0xa26f32f8 +net/irda/irda irias_insert_object 0x980fe568 +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0xe1a50c6f +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0xe8f76140 +net/irda/irda irlap_open 0x4ccbb7b0 +net/irda/irda irlmp_close_lsap 0x7e18d79c +net/irda/irda irlmp_connect_request 0xb8897946 +net/irda/irda irlmp_connect_response 0x39539af8 +net/irda/irda irlmp_data_request 0x8663f548 +net/irda/irda irlmp_disconnect_request 0x5cbd1855 +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0x3a8711c0 +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0xa37489a9 +net/irda/irda irttp_connect_request 0xaa3488a0 +net/irda/irda irttp_connect_response 0x00181b85 +net/irda/irda irttp_data_request 0xc4993226 +net/irda/irda irttp_disconnect_request 0x0e78667f +net/irda/irda irttp_dup 0x51a4716c +net/irda/irda irttp_flow_request 0x95c118bc +net/irda/irda irttp_open_tsap 0x4dc0c69d +net/irda/irda irttp_udata_request 0x743c233f +net/irda/irda proc_irda 0xb92c9197 +net/lapb/lapb lapb_connect_request 0x04f2d9e2 +net/lapb/lapb lapb_data_received 0xd8fc42c6 +net/lapb/lapb lapb_data_request 0xb3dab27e +net/lapb/lapb lapb_disconnect_request 0x53ca5cdc +net/lapb/lapb lapb_getparms 0xba958fb9 +net/lapb/lapb lapb_register 0x0cabfa3a +net/lapb/lapb lapb_setparms 0xcf01041b +net/lapb/lapb lapb_unregister 0x6070c808 +net/netfilter/nfnetlink __nfa_fill 0x6dd124f9 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0xc71246c2 +net/netfilter/nfnetlink nfnetlink_subsys_register 0x5ad56b51 +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0xf7a07784 +net/netfilter/nfnetlink nfnetlink_unicast 0x5bbe8c17 +net/rxrpc/rxrpc rxrpc_add_service 0x89b63c09 +net/rxrpc/rxrpc rxrpc_call_abort 0x47a29aa6 +net/rxrpc/rxrpc rxrpc_call_read_data 0xd51294ed +net/rxrpc/rxrpc rxrpc_call_write_data 0x9c3932f1 +net/rxrpc/rxrpc rxrpc_create_call 0xa4c81685 +net/rxrpc/rxrpc rxrpc_create_connection 0x72aeb498 +net/rxrpc/rxrpc rxrpc_create_transport 0xf729195a +net/rxrpc/rxrpc rxrpc_del_service 0x08f20af2 +net/rxrpc/rxrpc rxrpc_put_call 0x7863fee2 +net/rxrpc/rxrpc rxrpc_put_connection 0x305b7230 +net/rxrpc/rxrpc rxrpc_put_transport 0x85469784 +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x00c52ef5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0xb5dea7ef +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xf8b2ff6e +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0xa99be3c5 +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0x4630dd8c +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0xcfbb3fd5 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0xd76e943d +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0x420f0a45 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0x0fcf99e3 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0x558132d6 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0xa77fc001 +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0xb342bf40 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0x351dbf86 +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0x75c04f4f +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0x1c82b411 +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0xf591f62b +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x4c2f4b6d +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x8d1a827e +net/sunrpc/sunrpc auth_domain_find 0xce9b7a1f +net/sunrpc/sunrpc auth_domain_lookup 0xa74157e3 +net/sunrpc/sunrpc auth_domain_put 0xb7e2b4a5 +net/sunrpc/sunrpc auth_unix_add_addr 0xb8520a43 +net/sunrpc/sunrpc auth_unix_forget_old 0x758f9c49 +net/sunrpc/sunrpc auth_unix_lookup 0xd1d4e136 +net/sunrpc/sunrpc cache_check 0xccc14355 +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0x69729852 +net/sunrpc/sunrpc cache_init 0xc244025c +net/sunrpc/sunrpc cache_purge 0xc7a21d2e +net/sunrpc/sunrpc cache_register 0x9572d272 +net/sunrpc/sunrpc cache_unregister 0x3e45fa90 +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0x51cd25f8 +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0xbc26fec3 +net/sunrpc/sunrpc rpc_bind_new_program 0xba699c8d +net/sunrpc/sunrpc rpc_call_async 0x5865cb7c +net/sunrpc/sunrpc rpc_call_setup 0x279f53bd +net/sunrpc/sunrpc rpc_call_sync 0xe0ebac5c +net/sunrpc/sunrpc rpc_clnt_sigmask 0x0959c925 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0xe0407591 +net/sunrpc/sunrpc rpc_clone_client 0xb7383815 +net/sunrpc/sunrpc rpc_create_client 0x772bcbee +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0xa051fac2 +net/sunrpc/sunrpc rpc_destroy_client 0x6eb4abb7 +net/sunrpc/sunrpc rpc_execute 0xbb2c7855 +net/sunrpc/sunrpc rpc_init_task 0xc6319803 +net/sunrpc/sunrpc rpc_init_wait_queue 0x916aaa11 +net/sunrpc/sunrpc rpc_killall_tasks 0x572296d8 +net/sunrpc/sunrpc rpc_max_payload 0xaa735557 +net/sunrpc/sunrpc rpc_mkpipe 0x84ec9185 +net/sunrpc/sunrpc rpc_new_child 0x8fa0dda0 +net/sunrpc/sunrpc rpc_new_client 0xa3c820ce +net/sunrpc/sunrpc rpc_new_task 0x3231970c +net/sunrpc/sunrpc rpc_proc_register 0x9f0ead8e +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x3ca3b6a1 +net/sunrpc/sunrpc rpc_release_client 0x13ef2212 +net/sunrpc/sunrpc rpc_release_task 0xdc4b5382 +net/sunrpc/sunrpc rpc_restart_call 0x44e31e7a +net/sunrpc/sunrpc rpc_run_child 0x9c28f131 +net/sunrpc/sunrpc rpc_setbufsize 0x1ab8c613 +net/sunrpc/sunrpc rpc_shutdown_client 0x28766a2f +net/sunrpc/sunrpc rpc_sleep_on 0xc9e38a11 +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0x6d71e3af +net/sunrpc/sunrpc rpc_wake_up_next 0x25e40419 +net/sunrpc/sunrpc rpc_wake_up_status 0xa5509e00 +net/sunrpc/sunrpc rpc_wake_up_task 0xb0ef60f3 +net/sunrpc/sunrpc rpcauth_create 0xa51efbc9 +net/sunrpc/sunrpc rpcauth_free_credcache 0x59af4009 +net/sunrpc/sunrpc rpcauth_init_credcache 0xf4ee39e0 +net/sunrpc/sunrpc rpcauth_lookup_credcache 0x5665175c +net/sunrpc/sunrpc rpcauth_lookupcred 0xb6a3df25 +net/sunrpc/sunrpc rpcauth_register 0x4245fa0f +net/sunrpc/sunrpc rpcauth_unregister 0x6046612b +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x44c37459 +net/sunrpc/sunrpc svc_auth_unregister 0x0f668ba9 +net/sunrpc/sunrpc svc_authenticate 0x36d539ab +net/sunrpc/sunrpc svc_create 0x28c0986a +net/sunrpc/sunrpc svc_create_thread 0x398cf34b +net/sunrpc/sunrpc svc_destroy 0x749c6cec +net/sunrpc/sunrpc svc_drop 0x4b70b285 +net/sunrpc/sunrpc svc_exit_thread 0xfa71e595 +net/sunrpc/sunrpc svc_makesock 0x36984d62 +net/sunrpc/sunrpc svc_proc_register 0x1ce50a69 +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0x864ddf26 +net/sunrpc/sunrpc svc_recv 0xbc4e22bd +net/sunrpc/sunrpc svc_reserve 0xbacf161e +net/sunrpc/sunrpc svc_seq_show 0xd7a1a348 +net/sunrpc/sunrpc svc_set_client 0x170385a2 +net/sunrpc/sunrpc svc_wake_up 0xad8edade +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x96946e44 +net/sunrpc/sunrpc xdr_buf_from_iov 0x927af979 +net/sunrpc/sunrpc xdr_buf_read_netobj 0x86552ace +net/sunrpc/sunrpc xdr_buf_subsegment 0x8f585639 +net/sunrpc/sunrpc xdr_decode_array2 0xdf8bb624 +net/sunrpc/sunrpc xdr_decode_netobj 0x1be57115 +net/sunrpc/sunrpc xdr_decode_string 0x6755aa62 +net/sunrpc/sunrpc xdr_decode_string_inplace 0x7bd87272 +net/sunrpc/sunrpc xdr_decode_word 0x9c093127 +net/sunrpc/sunrpc xdr_encode_array2 0xa0438cdb +net/sunrpc/sunrpc xdr_encode_netobj 0x29c6f164 +net/sunrpc/sunrpc xdr_encode_opaque 0x0e9e79d5 +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0x587d494b +net/sunrpc/sunrpc xdr_encode_pages 0x6c7595ca +net/sunrpc/sunrpc xdr_encode_string 0xabc0fe0c +net/sunrpc/sunrpc xdr_encode_word 0x1f6ad90e +net/sunrpc/sunrpc xdr_init_decode 0x3cf82d9c +net/sunrpc/sunrpc xdr_init_encode 0x1e28f099 +net/sunrpc/sunrpc xdr_inline_decode 0x4501afe0 +net/sunrpc/sunrpc xdr_inline_pages 0x6f943325 +net/sunrpc/sunrpc xdr_read_pages 0xcbb81e28 +net/sunrpc/sunrpc xdr_reserve_space 0x327e252f +net/sunrpc/sunrpc xdr_shift_buf 0x6c98490b +net/sunrpc/sunrpc xdr_write_pages 0x13bde91d +net/sunrpc/sunrpc xprt_create_proto 0x3db177f0 +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x8ea05364 +net/wanrouter/wanrouter register_wan_device 0x898ca323 +net/wanrouter/wanrouter unlock_adapter_irq 0x696688b7 +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0xd3996ef4 +net/wanrouter/wanrouter wanrouter_type_trans 0x98ada52d +security/commoncap cap_bprm_apply_creds 0xd30f14cb +security/commoncap cap_bprm_secureexec 0x255017a2 +security/commoncap cap_bprm_set_security 0xe3557abc +security/commoncap cap_capable 0xed20b070 +security/commoncap cap_capget 0x31e9c91b +security/commoncap cap_capset_check 0x10abd666 +security/commoncap cap_capset_set 0x3102115e +security/commoncap cap_inode_removexattr 0xac0ba7b1 +security/commoncap cap_inode_setxattr 0xa6ce0721 +security/commoncap cap_netlink_recv 0x25114759 +security/commoncap cap_netlink_send 0x7beaf41f +security/commoncap cap_ptrace 0xbadbf5d7 +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x372390b2 +security/commoncap cap_task_reparent_to_init 0xb713e737 +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x3ce546c2 +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-gf1 snd_seq_gf1_init 0x9da48ff9 +sound/core/seq/instr/snd-ainstr-iw snd_seq_iwffff_init 0x5d8aab91 +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0xc31bf1e9 +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0xf4e898b2 +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0xd84216da +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x8d9f6f6f +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x89947013 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0xd17f4dc8 +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x53bc7151 +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0x74f92120 +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x28cd8b46 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x8b11a1fa +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0x1b896855 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0xc049cdd9 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0xbf028ef2 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x20a6608e +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0x7d7fce56 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x5c9108a3 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x2b68e19a +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x27b4902e +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0xc4780079 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0x797b2662 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0x9d2936fd +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0x4ac75bc2 +sound/core/snd copy_from_user_toio 0xce3ca308 +sound/core/snd copy_to_user_fromio 0x602c96f0 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0x7b9053df +sound/core/snd snd_card_file_add 0x3ab5928a +sound/core/snd snd_card_file_remove 0x67b549cb +sound/core/snd snd_card_free 0x81269b7c +sound/core/snd snd_card_free_in_thread 0x1188c8f6 +sound/core/snd snd_card_new 0xebb7abe2 +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0xfea4d685 +sound/core/snd snd_card_register 0x59e74d9b +sound/core/snd snd_card_set_generic_dev 0xa7cd18de +sound/core/snd snd_card_set_generic_pm_callback 0x3773bce8 +sound/core/snd snd_card_set_pm_callback 0xc1be7acb +sound/core/snd snd_cards 0x60b2ada9 +sound/core/snd snd_component_add 0x9326bb44 +sound/core/snd snd_ctl_add 0xf53c0a46 +sound/core/snd snd_ctl_elem_read 0x0026f2f1 +sound/core/snd snd_ctl_elem_write 0x53be932d +sound/core/snd snd_ctl_find_id 0x95315a9f +sound/core/snd snd_ctl_find_numid 0xfb35a1b2 +sound/core/snd snd_ctl_free_one 0x064c02cb +sound/core/snd snd_ctl_new 0xe4b7f029 +sound/core/snd snd_ctl_new1 0x6713e56f +sound/core/snd snd_ctl_notify 0xa9892562 +sound/core/snd snd_ctl_register_ioctl 0x587a0d35 +sound/core/snd snd_ctl_remove 0x084c5b0c +sound/core/snd snd_ctl_remove_id 0x82d72b1c +sound/core/snd snd_ctl_rename_id 0x3fa6fd1b +sound/core/snd snd_ctl_unregister_ioctl 0x4152f964 +sound/core/snd snd_device_free 0x5b3c43cd +sound/core/snd snd_device_new 0x0c26d904 +sound/core/snd snd_device_register 0x87a352e4 +sound/core/snd snd_dma_disable 0x70c15ac1 +sound/core/snd snd_dma_pointer 0x191e88cf +sound/core/snd snd_dma_program 0x18e1683f +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0xf5fc56e1 +sound/core/snd snd_info_create_module_entry 0x3e0bfd60 +sound/core/snd snd_info_free_entry 0xdfc0e4df +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0xf305469d +sound/core/snd snd_info_unregister 0x2fa28643 +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0xceb33af1 +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0x59d294bd +sound/core/snd snd_register_device 0x940b1681 +sound/core/snd snd_register_oss_device 0xb006d03b +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0xbdbf4f44 +sound/core/snd snd_unregister_device 0x1fc936a6 +sound/core/snd snd_unregister_oss_device 0xe686ba4c +sound/core/snd-hwdep snd_hwdep_new 0xaf686ada +sound/core/snd-page-alloc snd_dma_alloc_pages 0x3e253ee1 +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0x1b74b1f2 +sound/core/snd-page-alloc snd_dma_free_pages 0xc5aeafb6 +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0x1c5ac5c8 +sound/core/snd-page-alloc snd_dma_reserve_buf 0x45fceed4 +sound/core/snd-page-alloc snd_free_pages 0x3b91f3af +sound/core/snd-page-alloc snd_malloc_pages 0xade88e76 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x0beab9b1 +sound/core/snd-pcm snd_pcm_devices 0x971cb880 +sound/core/snd-pcm snd_pcm_format_big_endian 0x93878ece +sound/core/snd-pcm snd_pcm_format_linear 0x8733f967 +sound/core/snd-pcm snd_pcm_format_little_endian 0x8bbdc311 +sound/core/snd-pcm snd_pcm_format_name 0xedd5b5bd +sound/core/snd-pcm snd_pcm_format_physical_width 0xa8edfa41 +sound/core/snd-pcm snd_pcm_format_set_silence 0xdf124602 +sound/core/snd-pcm snd_pcm_format_signed 0xe2c5f868 +sound/core/snd-pcm snd_pcm_format_silence_64 0xda29bc77 +sound/core/snd-pcm snd_pcm_format_size 0x6f3fba79 +sound/core/snd-pcm snd_pcm_format_unsigned 0x95a60aa5 +sound/core/snd-pcm snd_pcm_format_width 0x55eb2175 +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0xaa2b4748 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0xe884662a +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0x90f8a134 +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0xd88d31f6 +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0x4a3e23cb +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0xdc7371a1 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x90f688af +sound/core/snd-pcm snd_pcm_hw_constraint_step 0xe93720e0 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0x45b33312 +sound/core/snd-pcm snd_pcm_hw_constraints_init 0x3799076d +sound/core/snd-pcm snd_pcm_hw_param_first 0xd137c7e2 +sound/core/snd-pcm snd_pcm_hw_param_last 0x7d35bff1 +sound/core/snd-pcm snd_pcm_hw_param_mask 0x186c7d7a +sound/core/snd-pcm snd_pcm_hw_param_near 0xd1ddc769 +sound/core/snd-pcm snd_pcm_hw_param_set 0xaa999e12 +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0xeeab91de +sound/core/snd-pcm snd_pcm_hw_rule_add 0x3bfd6118 +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0x3b08d280 +sound/core/snd-pcm snd_pcm_kernel_ioctl 0xc97f61b4 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x0a70fef1 +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0xc483cdb9 +sound/core/snd-pcm snd_pcm_lib_free_pages 0x31af0af0 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x16af1968 +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x34f0ffdd +sound/core/snd-pcm snd_pcm_lib_mmap_iomem 0x8a122b97 +sound/core/snd-pcm snd_pcm_lib_period_bytes 0xf600651a +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x4e4b003b +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0xe0a477be +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0x2fbc8e73 +sound/core/snd-pcm snd_pcm_lib_read 0x1277af8f +sound/core/snd-pcm snd_pcm_lib_readv 0x95b2bd1c +sound/core/snd-pcm snd_pcm_lib_write 0xbb2719a3 +sound/core/snd-pcm snd_pcm_lib_writev 0xe9edcaf5 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x5441f6b3 +sound/core/snd-pcm snd_pcm_link_rwlock 0xb47e2d3d +sound/core/snd-pcm snd_pcm_mmap_data 0x4911c382 +sound/core/snd-pcm snd_pcm_new 0x86b5b288 +sound/core/snd-pcm snd_pcm_new_stream 0xf8006302 +sound/core/snd-pcm snd_pcm_notify 0xcbe91ada +sound/core/snd-pcm snd_pcm_open_substream 0xb82a399d +sound/core/snd-pcm snd_pcm_period_elapsed 0xbc289ffe +sound/core/snd-pcm snd_pcm_release_substream 0x6df10d98 +sound/core/snd-pcm snd_pcm_set_ops 0xe784f3c0 +sound/core/snd-pcm snd_pcm_set_sync 0x6f4b50c5 +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0x855ec4b5 +sound/core/snd-pcm snd_pcm_stop 0x04b04f77 +sound/core/snd-pcm snd_pcm_suspend 0xcd954721 +sound/core/snd-pcm snd_pcm_suspend_all 0x697c84f7 +sound/core/snd-rawmidi snd_rawmidi_drain_input 0x70254d2c +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x8198e3fc +sound/core/snd-rawmidi snd_rawmidi_drop_output 0xa385427a +sound/core/snd-rawmidi snd_rawmidi_info 0xdc59787e +sound/core/snd-rawmidi snd_rawmidi_info_select 0x6ec1af94 +sound/core/snd-rawmidi snd_rawmidi_input_params 0xd30ee017 +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0xa218cc5f +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0x4f307b62 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0x0d38b8ec +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x33124a68 +sound/core/snd-rawmidi snd_rawmidi_new 0xf942eece +sound/core/snd-rawmidi snd_rawmidi_output_params 0x2724db48 +sound/core/snd-rawmidi snd_rawmidi_receive 0x70a9d5c9 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x23f10711 +sound/core/snd-rawmidi snd_rawmidi_transmit 0x1d99b877 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x774c21d4 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x23f09d73 +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0x388b137e +sound/core/snd-timer snd_timer_close 0x8aed7817 +sound/core/snd-timer snd_timer_continue 0xfbf8d20f +sound/core/snd-timer snd_timer_global_free 0x609388ce +sound/core/snd-timer snd_timer_global_new 0x1a390214 +sound/core/snd-timer snd_timer_global_register 0x429302a9 +sound/core/snd-timer snd_timer_global_unregister 0x1a5aa4e6 +sound/core/snd-timer snd_timer_interrupt 0xad12ae22 +sound/core/snd-timer snd_timer_new 0x95991bf5 +sound/core/snd-timer snd_timer_notify 0xae5d3d4b +sound/core/snd-timer snd_timer_open 0x73f3398f +sound/core/snd-timer snd_timer_pause 0xa66fbe89 +sound/core/snd-timer snd_timer_resolution 0x3487ec4d +sound/core/snd-timer snd_timer_start 0xa178cf5d +sound/core/snd-timer snd_timer_stop 0x1e88f08a +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0xe7ecaf45 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x8add3309 +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0xddc9e12e +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0x29db6d10 +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0x163de304 +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0x35c35371 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0x28688e33 +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0x81363f0a +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0xa7cb694b +sound/drivers/opl4/snd-opl4-lib snd_opl4_create 0x61caba5e +sound/drivers/opl4/snd-opl4-lib snd_opl4_read 0x56b6fd23 +sound/drivers/opl4/snd-opl4-lib snd_opl4_read_memory 0x25e4e2c3 +sound/drivers/opl4/snd-opl4-lib snd_opl4_write 0x806e8681 +sound/drivers/opl4/snd-opl4-lib snd_opl4_write_memory 0x565bc40b +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x45f13171 +sound/drivers/vx/snd-vx-lib snd_vx_create 0xbd2c88f4 +sound/drivers/vx/snd-vx-lib snd_vx_delay 0x4885de4d +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0xf91b384d +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0xe7289486 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0xa5977d72 +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x895b5b98 +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0x9acb913c +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0x80bbc7df +sound/i2c/other/snd-ak4114 snd_ak4114_build 0xe65d4dbe +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0x003c1ccc +sound/i2c/other/snd-ak4114 snd_ak4114_create 0x8994589c +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0xacaafec2 +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0xc6f94ece +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0x3b02b031 +sound/i2c/other/snd-ak4117 snd_ak4117_build 0x3b7508aa +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0xbba4e716 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0xa2241c98 +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x0a90d023 +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0xfd3105dd +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x84604cca +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0xd176ae7c +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0x9da25819 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0x94bab6d9 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0x07724edf +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0x64cd68de +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0x4663cf5c +sound/i2c/snd-cs8427 snd_cs8427_create 0xa21aaf25 +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0xb21d2fce +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0x19eacee8 +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0x61a38abb +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0x95b78ed5 +sound/i2c/snd-cs8427 snd_cs8427_reset 0x3ad24630 +sound/i2c/snd-i2c snd_i2c_bus_create 0x5191bf7a +sound/i2c/snd-i2c snd_i2c_device_create 0x6dce5585 +sound/i2c/snd-i2c snd_i2c_device_free 0xa43fb4fb +sound/i2c/snd-i2c snd_i2c_probeaddr 0xa6492524 +sound/i2c/snd-i2c snd_i2c_readbytes 0xf0a226dd +sound/i2c/snd-i2c snd_i2c_sendbytes 0x560e9b65 +sound/i2c/snd-tea6330t snd_tea6330t_detect 0xa0b8b73a +sound/i2c/snd-tea6330t snd_tea6330t_update_mixer 0x31018ed2 +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_create 0x979b861a +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_mixer 0x06aa0bf0 +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_pcm 0xb0da6382 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_add_ctl 0x508688fb +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_create 0xe7004c0f +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_get_pcm_ops 0xe6052c42 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_mixer 0x670994ba +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_out 0x61e091b5 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_pcm 0xf6f6f0a0 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_chip_id 0xd6d3f517 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_create 0x9ec50d86 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_get_double 0xe9459afd +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_get_single 0x0a8b9099 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_in 0x8ab44f2f +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_info_double 0x158ec0cc +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_info_single 0xb88fb644 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_interrupt 0xa2de426c +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mce_down 0xc4492080 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mce_up 0x3aa74dcd +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mixer 0x829e0e6d +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_out 0x5d7e830a +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_pcm 0x36fb3336 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_put_double 0x57ef355c +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_put_single 0xb4213f38 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_timer 0x08d88200 +sound/isa/cs423x/snd-cs4231-lib snd_cs4236_ext_in 0xbb6e5be1 +sound/isa/cs423x/snd-cs4231-lib snd_cs4236_ext_out 0x31296205 +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_create 0xf0294a53 +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_mixer 0xda78dc1b +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_pcm 0xfc269b50 +sound/isa/es1688/snd-es1688-lib snd_es1688_create 0x287578c2 +sound/isa/es1688/snd-es1688-lib snd_es1688_mixer 0x91b4d4aa +sound/isa/es1688/snd-es1688-lib snd_es1688_mixer_write 0x1e24cf31 +sound/isa/es1688/snd-es1688-lib snd_es1688_pcm 0x30b59153 +sound/isa/gus/snd-gus-lib snd_gf1_alloc_voice 0x4cc7c7bf +sound/isa/gus/snd-gus-lib snd_gf1_atten_table 0xc43a5527 +sound/isa/gus/snd-gus-lib snd_gf1_ctrl_stop 0x06466fdf +sound/isa/gus/snd-gus-lib snd_gf1_delay 0xdd6244a4 +sound/isa/gus/snd-gus-lib snd_gf1_dram_addr 0x1d1361f3 +sound/isa/gus/snd-gus-lib snd_gf1_free_voice 0x0e59e20e +sound/isa/gus/snd-gus-lib snd_gf1_i_look16 0xcdc8b347 +sound/isa/gus/snd-gus-lib snd_gf1_i_look8 0xd8fad260 +sound/isa/gus/snd-gus-lib snd_gf1_i_write8 0x8006a271 +sound/isa/gus/snd-gus-lib snd_gf1_look16 0x94a13776 +sound/isa/gus/snd-gus-lib snd_gf1_look8 0x9aead735 +sound/isa/gus/snd-gus-lib snd_gf1_lvol_to_gvol_raw 0x46db8d67 +sound/isa/gus/snd-gus-lib snd_gf1_mem_alloc 0x1e9d3ce3 +sound/isa/gus/snd-gus-lib snd_gf1_mem_free 0xe4ce8af1 +sound/isa/gus/snd-gus-lib snd_gf1_mem_lock 0xd59ea6ec +sound/isa/gus/snd-gus-lib snd_gf1_mem_xfree 0xb6e7185d +sound/isa/gus/snd-gus-lib snd_gf1_new_mixer 0x6f1bd1ea +sound/isa/gus/snd-gus-lib snd_gf1_pcm_new 0x81051109 +sound/isa/gus/snd-gus-lib snd_gf1_peek 0xf636f5f4 +sound/isa/gus/snd-gus-lib snd_gf1_poke 0xdf73bcdd +sound/isa/gus/snd-gus-lib snd_gf1_rawmidi_new 0x587dd6e6 +sound/isa/gus/snd-gus-lib snd_gf1_stop_voice 0xa3f5861d +sound/isa/gus/snd-gus-lib snd_gf1_translate_freq 0xfcea1ce1 +sound/isa/gus/snd-gus-lib snd_gf1_write16 0x2d31c7bd +sound/isa/gus/snd-gus-lib snd_gf1_write8 0xeebc86ed +sound/isa/gus/snd-gus-lib snd_gf1_write_addr 0xa5e81c33 +sound/isa/gus/snd-gus-lib snd_gus_create 0xacd24a75 +sound/isa/gus/snd-gus-lib snd_gus_dram_read 0xff62e6d4 +sound/isa/gus/snd-gus-lib snd_gus_dram_write 0x57fcd92e +sound/isa/gus/snd-gus-lib snd_gus_initialize 0x663d49f7 +sound/isa/gus/snd-gus-lib snd_gus_interrupt 0xe8226527 +sound/isa/gus/snd-gus-lib snd_gus_use_dec 0xd76f3612 +sound/isa/gus/snd-gus-lib snd_gus_use_inc 0x684a706d +sound/isa/sb/snd-sb-common snd_sbdsp_command 0x5f2a2a8a +sound/isa/sb/snd-sb-common snd_sbdsp_create 0x125df628 +sound/isa/sb/snd-sb-common snd_sbdsp_get_byte 0xdec51e21 +sound/isa/sb/snd-sb-common snd_sbdsp_reset 0x3735db5c +sound/isa/sb/snd-sb-common snd_sbmixer_add_ctl 0x403e34d2 +sound/isa/sb/snd-sb-common snd_sbmixer_new 0xdb566519 +sound/isa/sb/snd-sb-common snd_sbmixer_read 0x148f7a8f +sound/isa/sb/snd-sb-common snd_sbmixer_write 0x38caa5c8 +sound/isa/sb/snd-sb16-csp snd_sb_csp_new 0xe88e9efb +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_configure 0x80e6fb1d +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_get_pcm_ops 0xe8f75c1f +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_interrupt 0x89f51d7b +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_pcm 0x1849eed2 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_interrupt 0xd8038a12 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_midi 0xbc03ff11 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_midi_interrupt 0xd091d563 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_pcm 0x60b060a2 +sound/isa/sb/snd-sbawe snd_emu8000_dma_chan 0x57d5a997 +sound/isa/sb/snd-sbawe snd_emu8000_init_fm 0xea6d2329 +sound/isa/sb/snd-sbawe snd_emu8000_load_chorus_fx 0xf98a50e5 +sound/isa/sb/snd-sbawe snd_emu8000_load_reverb_fx 0x47954db8 +sound/isa/sb/snd-sbawe snd_emu8000_peek 0x97c8ea76 +sound/isa/sb/snd-sbawe snd_emu8000_peek_dw 0xf3dc8370 +sound/isa/sb/snd-sbawe snd_emu8000_poke 0x13ecd52c +sound/isa/sb/snd-sbawe snd_emu8000_poke_dw 0xf1a360a1 +sound/isa/sb/snd-sbawe snd_emu8000_update_chorus_mode 0x566d2c38 +sound/isa/sb/snd-sbawe snd_emu8000_update_equalizer 0x06f9c12e +sound/isa/sb/snd-sbawe snd_emu8000_update_reverb_mode 0x96906dcd +sound/oss/ac97_codec ac97_alloc_codec 0x3ff65ffe +sound/oss/ac97_codec ac97_probe_codec 0x0083452d +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0xa98a2a2b +sound/oss/ac97_codec ac97_release_codec 0x66042b4e +sound/oss/ac97_codec ac97_restore_state 0x4d8f7d81 +sound/oss/ac97_codec ac97_save_state 0xd0116496 +sound/oss/ac97_codec ac97_set_adc_rate 0x75ef9b04 +sound/oss/ac97_codec ac97_set_dac_rate 0x3f30b14e +sound/oss/ac97_codec ac97_tune_hardware 0xe612e290 +sound/oss/ac97_codec ac97_unregister_driver 0xfa32ee5d +sound/oss/aci aci_port 0x0d82adb6 +sound/oss/aci aci_rw_cmd 0xcc7c4cd8 +sound/oss/aci aci_version 0x93350c87 +sound/oss/ad1848 ad1848_control 0xc04f6f67 +sound/oss/ad1848 ad1848_detect 0x845a1638 +sound/oss/ad1848 ad1848_init 0x2f941f08 +sound/oss/ad1848 ad1848_unload 0x9bf1cc62 +sound/oss/ad1848 adintr 0x509bfb25 +sound/oss/ad1848 attach_ms_sound 0x0f70807f +sound/oss/ad1848 probe_ms_sound 0x65e6d1ca +sound/oss/ad1848 unload_ms_sound 0xb29a9148 +sound/oss/mpu401 attach_mpu401 0x05ed437e +sound/oss/mpu401 intchk_mpu401 0x5fe6dd42 +sound/oss/mpu401 mpuintr 0x48dfd0bc +sound/oss/mpu401 probe_mpu401 0x5c8d3e32 +sound/oss/mpu401 unload_mpu401 0x5febf284 +sound/oss/opl3 opl3_detect 0x67481767 +sound/oss/opl3 opl3_init 0x0c320cc1 +sound/oss/sb_lib probe_sbmpu 0x96041a93 +sound/oss/sb_lib sb_be_quiet 0x42424109 +sound/oss/sb_lib sb_dsp_detect 0xd8a2731c +sound/oss/sb_lib sb_dsp_init 0x253bca1c +sound/oss/sb_lib sb_dsp_unload 0xc4884969 +sound/oss/sb_lib smw_free 0x450f9aea +sound/oss/sb_lib unload_sbmpu 0x74afd69c +sound/oss/sound DMAbuf_close_dma 0xc88b42ab +sound/oss/sound DMAbuf_inputintr 0xeb315d99 +sound/oss/sound DMAbuf_open_dma 0x06b3013d +sound/oss/sound DMAbuf_outputintr 0x987bcf12 +sound/oss/sound DMAbuf_start_dma 0xe056b71c +sound/oss/sound MIDIbuf_avail 0x1f395686 +sound/oss/sound audio_devs 0x5bceac31 +sound/oss/sound cent_tuning 0x03ce7ff7 +sound/oss/sound compute_finetune 0x04c87ec8 +sound/oss/sound conf_printf 0x0f280035 +sound/oss/sound conf_printf2 0x7bdf0907 +sound/oss/sound do_midi_msg 0xb51587f6 +sound/oss/sound load_mixer_volumes 0xa1d5f04f +sound/oss/sound midi_devs 0xb47d04cd +sound/oss/sound midi_synth_aftertouch 0xf1ea8a20 +sound/oss/sound midi_synth_bender 0xba7dd041 +sound/oss/sound midi_synth_close 0xad45df73 +sound/oss/sound midi_synth_controller 0x892093e0 +sound/oss/sound midi_synth_hw_control 0xb14b22cd +sound/oss/sound midi_synth_ioctl 0xaef743b2 +sound/oss/sound midi_synth_kill_note 0x2aa31695 +sound/oss/sound midi_synth_load_patch 0xf7426da3 +sound/oss/sound midi_synth_open 0xf6b3a2fb +sound/oss/sound midi_synth_panning 0xdb400afa +sound/oss/sound midi_synth_reset 0x56504ca2 +sound/oss/sound midi_synth_send_sysex 0xfddcbfb3 +sound/oss/sound midi_synth_set_instr 0xd85be938 +sound/oss/sound midi_synth_setup_voice 0x4ff47e9d +sound/oss/sound midi_synth_start_note 0x9bdaf24d +sound/oss/sound mixer_devs 0xaa28434b +sound/oss/sound note_to_freq 0x5d986fc9 +sound/oss/sound num_audiodevs 0x4cd01bdd +sound/oss/sound num_midis 0xa1eae7cf +sound/oss/sound num_mixers 0x9d845b18 +sound/oss/sound semitone_tuning 0x8b84aeb1 +sound/oss/sound seq_copy_to_input 0x7679ee76 +sound/oss/sound seq_input_event 0x17ba231d +sound/oss/sound sequencer_init 0xf78f6363 +sound/oss/sound sequencer_timer 0x90bd9714 +sound/oss/sound sound_alloc_dma 0x9a95733f +sound/oss/sound sound_alloc_mididev 0xba413f87 +sound/oss/sound sound_alloc_mixerdev 0x1b3df3cf +sound/oss/sound sound_alloc_synthdev 0xc748d109 +sound/oss/sound sound_alloc_timerdev 0x51e354b2 +sound/oss/sound sound_close_dma 0x418f5fbe +sound/oss/sound sound_free_dma 0x394cb088 +sound/oss/sound sound_install_audiodrv 0xe92f827e +sound/oss/sound sound_install_mixer 0xf645ac47 +sound/oss/sound sound_open_dma 0xcc4b8797 +sound/oss/sound sound_timer_devs 0x69d0058c +sound/oss/sound sound_timer_init 0x2161d5e8 +sound/oss/sound sound_timer_interrupt 0xe2675a79 +sound/oss/sound sound_timer_syncinterval 0xfa6871be +sound/oss/sound sound_unload_audiodev 0xa948751e +sound/oss/sound sound_unload_mididev 0xa6bb414c +sound/oss/sound sound_unload_mixerdev 0xa51c913b +sound/oss/sound sound_unload_synthdev 0x06339815 +sound/oss/sound sound_unload_timerdev 0xa41ead5f +sound/oss/sound synth_devs 0x9c7fb5be +sound/oss/uart401 probe_uart401 0x8c626d79 +sound/oss/uart401 uart401intr 0x5df70158 +sound/oss/uart401 unload_uart401 0xecfdd9c9 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x46b951b0 +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0x50ebf6e1 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0xae8fbcad +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0xca5dc129 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0xaaf957d6 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x8ec4abb6 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x8c3c06cb +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0xc8063106 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0x95e90b0d +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0xe6163d00 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0x47ffb302 +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0x34e1b6b8 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x6158cfeb +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0x069b0dfd +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0xf1a9c124 +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0xb4c42503 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0x20f56eeb +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0x2ce0e612 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0xe21c9a36 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x2acabce0 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0xea2f4c4a +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0x0fe27bda +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0x11d69565 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0xd69edd16 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0x0464f2f6 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0x161c58cf +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0x6b0d811c +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0xc82924d0 +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0x0f14d9ad +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0xadd8fb55 +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0x68878a28 +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0x94854267 +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0x0f5d9bef +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x2563582c +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0x53ebe6d3 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0x8c96f4d6 +sound/pci/hda/snd-hda-codec snd_hda_resume 0x2dcfa4b5 +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0x61bf8303 +sound/pci/hda/snd-hda-codec snd_hda_suspend 0xcc96153a +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0x7864ade0 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0xe87c9e73 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0xed7cd85a +sound/pci/trident/snd-trident snd_trident_alloc_voice 0x23ef9cab +sound/pci/trident/snd-trident snd_trident_free_voice 0xb745de68 +sound/pci/trident/snd-trident snd_trident_start_voice 0x4b078462 +sound/pci/trident/snd-trident snd_trident_stop_voice 0x370c7158 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0x06414175 +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0x29a6283d +sound/pci/trident/snd-trident snd_trident_synth_free 0x838f189e +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0xac8ac884 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0xcb19e988 +sound/soundcore register_sound_midi 0x70f83eae +sound/soundcore register_sound_mixer 0x857890a1 +sound/soundcore register_sound_special 0x8a3f29ca +sound/soundcore register_sound_special_device 0xec6bbc63 +sound/soundcore register_sound_synth 0xdf067982 +sound/soundcore sound_class 0xafdf683f +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +sound/synth/emux/snd-emux-synth snd_emux_free 0x04c1669f +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0xa814484e +sound/synth/emux/snd-emux-synth snd_emux_new 0x9bd59efd +sound/synth/emux/snd-emux-synth snd_emux_register 0x7f5d633a +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0x74fc0f77 +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0x7a0bf480 +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0x6659fbd6 +sound/synth/snd-util-mem __snd_util_mem_free 0xfb3d3b53 +sound/synth/snd-util-mem __snd_util_memblk_new 0x8817e75e +sound/synth/snd-util-mem snd_util_mem_alloc 0x1423e860 +sound/synth/snd-util-mem snd_util_mem_avail 0x7b8b6a47 +sound/synth/snd-util-mem snd_util_mem_free 0x742d3d00 +sound/synth/snd-util-mem snd_util_memhdr_free 0x5de0b4fb +sound/synth/snd-util-mem snd_util_memhdr_new 0x47ac597a +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0x4ecbea0b +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux EISA_bus 0x7413793a +vmlinux IO_APIC_get_PCI_irq_vector 0x1eb922a3 +vmlinux I_BDEV 0xe2bb19e2 +vmlinux MCA_bus 0xf48a2c4c +vmlinux SELECT_DRIVE 0xad0e6d69 +vmlinux __PAGE_KERNEL 0x95cc2139 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0x36fdc3d5 +vmlinux __alloc_pages 0xeda25605 +vmlinux __alloc_percpu 0x50c89f23 +vmlinux __alloc_skb 0x5f48226a +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0xb0d169ae +vmlinux __bio_clone 0x52ea5fd0 +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0x7f32c344 +vmlinux __bread 0x8557ffd4 +vmlinux __breadahead 0x8809e5db +vmlinux __break_lease 0x8bc3485d +vmlinux __brelse 0x4b727ca3 +vmlinux __check_region 0xf1d0cdab +vmlinux __clear_user 0x2455c156 +vmlinux __const_udelay 0xeae3dfd6 +vmlinux __copy_from_user_ll 0x1af40e18 +vmlinux __copy_to_user_ll 0xd7474566 +vmlinux __cpufreq_driver_target 0x6eeef491 +vmlinux __create_workqueue 0x95931830 +vmlinux __d_path 0x9ede2e47 +vmlinux __delay 0x466c14a7 +vmlinux __dev_get_by_index 0xa11b51c3 +vmlinux __dev_get_by_name 0x524cf764 +vmlinux __dev_remove_pack 0xafee36d5 +vmlinux __down_failed 0x96b27088 +vmlinux __down_failed_interruptible 0x625acc81 +vmlinux __down_failed_trylock 0x02cd3086 +vmlinux __dst_free 0xdbcb99e8 +vmlinux __elv_add_request 0x34a80fb3 +vmlinux __find_get_block 0x71bfc58c +vmlinux __free_pages 0x84fa9c2e +vmlinux __generic_file_aio_read 0x8ec1fb9a +vmlinux __generic_unplug_device 0xc742a5ef +vmlinux __get_free_pages 0x107d6ba3 +vmlinux __get_user_1 0xd16ac615 +vmlinux __get_user_2 0x4888a014 +vmlinux __get_user_4 0xa03d6a57 +vmlinux __getblk 0x37045d91 +vmlinux __ide_abort 0x9b1e9b61 +vmlinux __ide_dma_bad_drive 0xf78bcc2a +vmlinux __ide_dma_check 0xb1c6b44b +vmlinux __ide_dma_end 0x4f40472c +vmlinux __ide_dma_good_drive 0xe0df0efc +vmlinux __ide_dma_host_off 0x479f2851 +vmlinux __ide_dma_host_on 0x0db2b091 +vmlinux __ide_dma_lostirq 0x996fcee7 +vmlinux __ide_dma_off 0x822e71da +vmlinux __ide_dma_off_quietly 0x5270fd5f +vmlinux __ide_dma_on 0x06d08529 +vmlinux __ide_dma_timeout 0x0c74470e +vmlinux __ide_end_request 0x5bba5c78 +vmlinux __ide_error 0x14cb177d +vmlinux __ide_pci_register_driver 0x57f35aa7 +vmlinux __inet_lookup_listener 0x68115cd7 +vmlinux __inet_twsk_hashdance 0x58708f87 +vmlinux __inet_twsk_kill 0xe8ed99a7 +vmlinux __init_timer_base 0x049a5196 +vmlinux __inode_dir_notify 0x2d71d638 +vmlinux __insert_inode_hash 0x80beb10d +vmlinux __invalidate_device 0x91edf5b4 +vmlinux __ioremap 0x9eac042a +vmlinux __ip_route_output_key 0x120e4dc8 +vmlinux __ip_select_ident 0xb0931319 +vmlinux __kfifo_get 0x07527e0d +vmlinux __kfifo_put 0x7c775173 +vmlinux __kfree_skb 0x273e6e90 +vmlinux __kill_fasync 0x99b4cae4 +vmlinux __kmalloc 0x12da5bb2 +vmlinux __lock_buffer 0x195c0d1a +vmlinux __lock_page 0x2d9bdbf8 +vmlinux __mark_inode_dirty 0xae5406a2 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xbffc0a90 +vmlinux __module_put_and_exit 0x11799bb3 +vmlinux __ndelay 0xdf8c695a +vmlinux __neigh_event_send 0x04690097 +vmlinux __neigh_for_each_release 0x49d0c601 +vmlinux __net_timestamp 0x4f1724f8 +vmlinux __netdev_watchdog_up 0xbe710d3f +vmlinux __nla_put 0xc32295f5 +vmlinux __nla_reserve 0xaeac4256 +vmlinux __page_cache_release 0x430dd55e +vmlinux __pagevec_lru_add 0x320f2c99 +vmlinux __pagevec_release 0x7879eb19 +vmlinux __pci_register_driver 0xce193896 +vmlinux __per_cpu_offset 0xc5844fb8 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0x0397f425 +vmlinux __put_user_1 0xc3aaf0a9 +vmlinux __put_user_2 0x5a4896a8 +vmlinux __put_user_4 0xb2fd5ceb +vmlinux __put_user_8 0xb8e7ce2c +vmlinux __read_lock_failed 0x1cb5d230 +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0xe2af84bf +vmlinux __scm_destroy 0x8c0695bd +vmlinux __scm_send 0xcb93c4bf +vmlinux __secpath_destroy 0x2bcd2f45 +vmlinux __serio_register_driver 0xebc6dbb8 +vmlinux __serio_register_port 0x77c6b5e8 +vmlinux __serio_unregister_port_delayed 0x7adde7c4 +vmlinux __set_page_dirty_buffers 0xb90848f8 +vmlinux __set_page_dirty_nobuffers 0xab2aa940 +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0xdb246a16 +vmlinux __skb_checksum_complete 0x14dfd765 +vmlinux __skb_linearize 0xf9b43abb +vmlinux __strncpy_from_user 0x9a78a84c +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x60ea5fe7 +vmlinux __tasklet_schedule 0xed5c73bf +vmlinux __tcf_em_tree_match 0x045a5798 +vmlinux __udelay 0x9e7d6bd0 +vmlinux __up_wakeup 0x60a4461c +vmlinux __user_walk 0x9476e72a +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8b8a3dc3 +vmlinux __vmalloc_node 0x611804f2 +vmlinux __wait_on_bit 0x3d005ce5 +vmlinux __wait_on_bit_lock 0x2a4437e4 +vmlinux __wait_on_buffer 0xdb774aad +vmlinux __wake_up 0x59968f3c +vmlinux __wake_up_bit 0x8d33e597 +vmlinux __wake_up_sync 0x76f861b3 +vmlinux __write_lock_failed 0xcb612803 +vmlinux __xfrm_policy_check 0xab45ec77 +vmlinux __xfrm_policy_destroy 0xdf4928e4 +vmlinux __xfrm_route_forward 0x22ee4c9c +vmlinux __xfrm_state_destroy 0x2ee55eaa +vmlinux _atomic_dec_and_lock 0x16250200 +vmlinux _ctype 0x8d3894f2 +vmlinux _read_lock 0x3d7c39ea +vmlinux _read_lock_bh 0x21968b7f +vmlinux _read_lock_irq 0x5a0e1e92 +vmlinux _read_lock_irqsave 0x0496a442 +vmlinux _read_trylock 0xd344122c +vmlinux _read_unlock 0x26ab7baa +vmlinux _read_unlock_bh 0x8bf46c54 +vmlinux _read_unlock_irq 0xf6188535 +vmlinux _read_unlock_irqrestore 0x553d0022 +vmlinux _spin_lock 0x1bcd461f +vmlinux _spin_lock_bh 0x6943ea4b +vmlinux _spin_lock_irq 0x45c077f2 +vmlinux _spin_lock_irqsave 0x87cddf59 +vmlinux _spin_trylock 0x7e3f931f +vmlinux _spin_trylock_bh 0xc6bf4844 +vmlinux _spin_unlock 0x36439527 +vmlinux _spin_unlock_bh 0xe32e66b5 +vmlinux _spin_unlock_irq 0x1f4fc565 +vmlinux _spin_unlock_irqrestore 0x0a20fdde +vmlinux _write_lock 0x4b05104f +vmlinux _write_lock_bh 0x93ba42f1 +vmlinux _write_lock_irq 0x50bc9c7c +vmlinux _write_lock_irqsave 0x3093180f +vmlinux _write_trylock 0xaf397768 +vmlinux _write_unlock 0xb769dd13 +vmlinux _write_unlock_bh 0xcc4c11a9 +vmlinux _write_unlock_irq 0x3553b3e9 +vmlinux _write_unlock_irqrestore 0x52c0a61d +vmlinux acpi_acquire_global_lock 0x70d8ab82 +vmlinux acpi_bus_add 0x89fa97b6 +vmlinux acpi_bus_generate_event 0xc3e50d57 +vmlinux acpi_bus_get_device 0x9597b905 +vmlinux acpi_bus_get_power 0x7389c9a8 +vmlinux acpi_bus_get_status 0xfe234d77 +vmlinux acpi_bus_receive_event 0x141dbf9b +vmlinux acpi_bus_register_driver 0x27074acd +vmlinux acpi_bus_set_power 0xcb733bf2 +vmlinux acpi_bus_start 0x713ccbb7 +vmlinux acpi_bus_unregister_driver 0xd993d31b +vmlinux acpi_clear_event 0x0fd00a68 +vmlinux acpi_dbg_layer 0xb3284531 +vmlinux acpi_dbg_level 0xca8acc78 +vmlinux acpi_disable_event 0xb758b225 +vmlinux acpi_disabled 0x1a45cb6c +vmlinux acpi_ec_read 0x0dd1015f +vmlinux acpi_ec_write 0xa2bb10ba +vmlinux acpi_enable_event 0x6237f6b5 +vmlinux acpi_enable_gpe 0xf47d47e0 +vmlinux acpi_enter_sleep_state 0xb077ef32 +vmlinux acpi_enter_sleep_state_s4bios 0xa5da0abd +vmlinux acpi_evaluate_integer 0x1807e38b +vmlinux acpi_evaluate_object 0xd0470c98 +vmlinux acpi_evaluate_reference 0xc899f5f6 +vmlinux acpi_extract_package 0xe93cc1b3 +vmlinux acpi_fadt 0xddcb58d9 +vmlinux acpi_fadt_is_v1 0x01438985 +vmlinux acpi_get_child 0xda268faa +vmlinux acpi_get_current_resources 0xcf47e392 +vmlinux acpi_get_devices 0xee46feef +vmlinux acpi_get_firmware_table 0x5331e1b5 +vmlinux acpi_get_handle 0x2bfeb410 +vmlinux acpi_get_name 0xca6c95f8 +vmlinux acpi_get_next_object 0x170c25ee +vmlinux acpi_get_object_info 0x96f929e9 +vmlinux acpi_get_parent 0xfb0443fb +vmlinux acpi_get_pci_id 0x058c75d9 +vmlinux acpi_get_pci_rootbridge_handle 0x1f8ec1b3 +vmlinux acpi_get_physical_device 0xf45697ee +vmlinux acpi_get_register 0x2b5d6f73 +vmlinux acpi_get_sleep_type_data 0x8d8d96c6 +vmlinux acpi_get_table 0x2eb2eb15 +vmlinux acpi_get_type 0x0d3dda14 +vmlinux acpi_in_suspend 0xf78a658e +vmlinux acpi_install_address_space_handler 0xff03752f +vmlinux acpi_install_fixed_event_handler 0x5ac376a5 +vmlinux acpi_install_gpe_block 0xda8ddbdf +vmlinux acpi_install_gpe_handler 0x02aff2f4 +vmlinux acpi_install_notify_handler 0xd9091363 +vmlinux acpi_map_lsapic 0xda0a6b0e +vmlinux acpi_os_create_semaphore 0x9f8733e2 +vmlinux acpi_os_delete_semaphore 0xe65a005c +vmlinux acpi_os_free 0x43b9bbb4 +vmlinux acpi_os_printf 0x667cecc9 +vmlinux acpi_os_queue_for_execution 0xdb9d67ff +vmlinux acpi_os_read_pci_configuration 0xd94c1770 +vmlinux acpi_os_read_port 0x54935666 +vmlinux acpi_os_signal 0x874aea72 +vmlinux acpi_os_signal_semaphore 0x8cdbc08d +vmlinux acpi_os_sleep 0x540f9040 +vmlinux acpi_os_stall 0x69005013 +vmlinux acpi_os_wait_events_complete 0xc9ab2eef +vmlinux acpi_os_wait_semaphore 0x2565a159 +vmlinux acpi_os_write_port 0x99052a84 +vmlinux acpi_pci_irq_enable 0x187cfd01 +vmlinux acpi_pci_register_driver 0xd1472061 +vmlinux acpi_pci_unregister_driver 0x43385ad9 +vmlinux acpi_processor_power_init_bm_check 0xfdce9842 +vmlinux acpi_register_gsi 0x36d5355b +vmlinux acpi_register_ioapic 0x636a5691 +vmlinux acpi_release_global_lock 0x3e2ae3a8 +vmlinux acpi_remove_address_space_handler 0xfcfaa928 +vmlinux acpi_remove_fixed_event_handler 0x2005e68a +vmlinux acpi_remove_gpe_block 0x8e002cda +vmlinux acpi_remove_gpe_handler 0xb07dfb3d +vmlinux acpi_remove_notify_handler 0x2bb55d6e +vmlinux acpi_resource_to_address64 0x263b54cc +vmlinux acpi_root_dir 0xaef6099c +vmlinux acpi_set_current_resources 0x45bb0352 +vmlinux acpi_set_gpe_type 0xa3bbcd80 +vmlinux acpi_set_register 0x4a9d86e3 +vmlinux acpi_specific_hotkey_enabled 0x46621493 +vmlinux acpi_strict 0xa59c0666 +vmlinux acpi_unmap_lsapic 0xd18b6eb2 +vmlinux acpi_unregister_ioapic 0xe716baed +vmlinux acpi_walk_namespace 0x19d5d20a +vmlinux acpi_walk_resources 0x375c5115 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0x641cacdb +vmlinux add_disk_randomness 0xe5a2044d +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0xf22b1055 +vmlinux add_wait_queue 0xa3d44f8c +vmlinux add_wait_queue_exclusive 0x771dc9e2 +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0xf6678c3a +vmlinux aio_put_req 0x34b027ef +vmlinux alloc_buffer_head 0x74ec436f +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0x9a184367 +vmlinux alloc_disk_node 0x00144383 +vmlinux alloc_etherdev 0x34a99d04 +vmlinux alloc_fcdev 0x563f432a +vmlinux alloc_fddidev 0xdaee71ce +vmlinux alloc_hippi_dev 0xbdcde0d8 +vmlinux alloc_netdev 0x2c255cf9 +vmlinux alloc_page_buffers 0xc71c945f +vmlinux alloc_pages_current 0x930e2dee +vmlinux alloc_trdev 0xb872c4b4 +vmlinux alloc_tty_driver 0x0595dbd5 +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0x96209a37 +vmlinux anon_transport_class_unregister 0xa2712075 +vmlinux apm_info 0x1d40ed44 +vmlinux arch_acpi_processor_init_pdc 0xad25c01d +vmlinux arch_register_cpu 0x2dd16564 +vmlinux arch_unregister_cpu 0x0237b57a +vmlinux arp_broken_ops 0xf223b2b7 +vmlinux arp_create 0xacbf4be5 +vmlinux arp_find 0x0aeeeff4 +vmlinux arp_rcv 0x7f59dcaa +vmlinux arp_send 0x15f55588 +vmlinux arp_tbl 0xa15cd99b +vmlinux arp_xmit 0xdc32adf2 +vmlinux atm_alloc_charge 0x5807c9b0 +vmlinux atm_charge 0xf8845528 +vmlinux atm_dev_deregister 0x4996fdff +vmlinux atm_dev_lookup 0x1f8ef3a0 +vmlinux atm_dev_register 0xce0a9873 +vmlinux atm_init_aal5 0x6154d0f7 +vmlinux atm_pcr_goal 0xf49bc67a +vmlinux atm_proc_root 0xc42bf1ec +vmlinux attribute_container_add_attrs 0x948658f9 +vmlinux attribute_container_add_class_device 0x5afbcb15 +vmlinux attribute_container_add_class_device_adapter 0xf70db7fe +vmlinux attribute_container_class_device_del 0xe918d249 +vmlinux attribute_container_classdev_to_container 0x8cdf4014 +vmlinux attribute_container_device_trigger 0xa0f91752 +vmlinux attribute_container_find_class_device 0x2df2d6e5 +vmlinux attribute_container_register 0x4d2734f2 +vmlinux attribute_container_remove_attrs 0x865c6460 +vmlinux attribute_container_remove_device 0xced8479d +vmlinux attribute_container_trigger 0x2c2e7593 +vmlinux attribute_container_unregister 0x741d7a36 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0xd7ae033d +vmlinux bd_claim 0x4c3bb21f +vmlinux bd_release 0xbf09ef51 +vmlinux bd_set_size 0xb6633517 +vmlinux bdev_read_only 0x2076835c +vmlinux bdevname 0x98b9c6b9 +vmlinux bdget 0xd5d63628 +vmlinux bdput 0xd5a96e34 +vmlinux bfifo_qdisc_ops 0xf01f21a1 +vmlinux bio_add_page 0x1eaea14e +vmlinux bio_alloc 0x6c8ec35e +vmlinux bio_alloc_bioset 0xe74f7cc9 +vmlinux bio_clone 0xa2866c53 +vmlinux bio_copy_user 0x2b53e85e +vmlinux bio_endio 0xc85011b6 +vmlinux bio_free 0x5168e26d +vmlinux bio_get_nr_vecs 0x3f9810a2 +vmlinux bio_hw_segments 0x18709769 +vmlinux bio_init 0x1277fec0 +vmlinux bio_map_kern 0xfef8a0e3 +vmlinux bio_map_user 0x9984040d +vmlinux bio_pair_release 0x7322cf46 +vmlinux bio_phys_segments 0xd15d9da3 +vmlinux bio_put 0xdff50f0f +vmlinux bio_split 0x701fd757 +vmlinux bio_split_pool 0x2146f99f +vmlinux bio_uncopy_user 0xf82243a5 +vmlinux bio_unmap_user 0x97cd6143 +vmlinux bioset_create 0x68c208d9 +vmlinux bioset_free 0x35146399 +vmlinux bit_waitqueue 0xd6ae596d +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0x6da2e68f +vmlinux blk_alloc_queue_node 0xb226deca +vmlinux blk_cleanup_queue 0x670e24b4 +vmlinux blk_complete_barrier_rq 0x992edc61 +vmlinux blk_complete_barrier_rq_locked 0x74694316 +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x8de6ea69 +vmlinux blk_end_sync_rq 0x1d84ad70 +vmlinux blk_execute_rq 0x35c3c6b7 +vmlinux blk_get_backing_dev_info 0xe930172e +vmlinux blk_get_queue 0xcfd51edd +vmlinux blk_get_request 0x8cb54e9b +vmlinux blk_init_queue 0xa4fa31e8 +vmlinux blk_init_queue_node 0x5396dad1 +vmlinux blk_insert_request 0x0985cc2d +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0x7d026176 +vmlinux blk_put_request 0x1a352b23 +vmlinux blk_queue_activity_fn 0xd2f582a3 +vmlinux blk_queue_bounce 0xbe8d6fa6 +vmlinux blk_queue_bounce_limit 0x3c89a55a +vmlinux blk_queue_dma_alignment 0x6da4c551 +vmlinux blk_queue_end_tag 0xed1a9ced +vmlinux blk_queue_find_tag 0x6b0b3160 +vmlinux blk_queue_free_tags 0xf47e18dd +vmlinux blk_queue_hardsect_size 0xa7d16188 +vmlinux blk_queue_init_tags 0x8271b8eb +vmlinux blk_queue_invalidate_tags 0xd19d8e0b +vmlinux blk_queue_issue_flush_fn 0x7c0219a6 +vmlinux blk_queue_make_request 0x9ccd7bb1 +vmlinux blk_queue_max_hw_segments 0x80c540f2 +vmlinux blk_queue_max_phys_segments 0x0e4660de +vmlinux blk_queue_max_sectors 0x5934b668 +vmlinux blk_queue_max_segment_size 0x0d1dd780 +vmlinux blk_queue_merge_bvec 0x443e1252 +vmlinux blk_queue_ordered 0xbb6c9bbb +vmlinux blk_queue_prep_rq 0x60e324bc +vmlinux blk_queue_resize_tags 0x4791acb0 +vmlinux blk_queue_segment_boundary 0x4aa48fbd +vmlinux blk_queue_stack_limits 0x69b38785 +vmlinux blk_queue_start_tag 0x0b8a8789 +vmlinux blk_register_region 0xab0803f8 +vmlinux blk_remove_plug 0xbf8af165 +vmlinux blk_requeue_request 0xa2488783 +vmlinux blk_rq_bio_prep 0x057e0459 +vmlinux blk_rq_map_kern 0x46b11702 +vmlinux blk_rq_map_sg 0xbd2b5d81 +vmlinux blk_rq_map_user 0xf9e0a1aa +vmlinux blk_rq_map_user_iov 0x27a29ea8 +vmlinux blk_rq_unmap_user 0x117fd2be +vmlinux blk_run_queue 0xe09c5c40 +vmlinux blk_start_queue 0x73123661 +vmlinux blk_stop_queue 0xf8655c25 +vmlinux blk_sync_queue 0xb6cf4f25 +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0xc5fbeb52 +vmlinux blkdev_ioctl 0x96abe893 +vmlinux blkdev_issue_flush 0xc700b2c4 +vmlinux blkdev_put 0x93a2e043 +vmlinux block_all_signals 0x4b34fbf5 +vmlinux block_commit_write 0x48e8cdc7 +vmlinux block_invalidatepage 0x38788f12 +vmlinux block_prepare_write 0xd178f390 +vmlinux block_read_full_page 0x855571c6 +vmlinux block_sync_page 0x61cc0618 +vmlinux block_truncate_page 0xe83db732 +vmlinux block_write_full_page 0x87264319 +vmlinux bmap 0xcfb15876 +vmlinux boot_cpu_data 0xaf4da071 +vmlinux boot_option_idle_override 0xef9aedfc +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0x56d84bd1 +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0x3f4998e7 +vmlinux bus_create_file 0x7003a96b +vmlinux bus_find_device 0xf3139655 +vmlinux bus_for_each_dev 0x89e161be +vmlinux bus_for_each_drv 0x3048bf09 +vmlinux bus_register 0xf7b32c9b +vmlinux bus_remove_device 0x688f5fca +vmlinux bus_remove_file 0x58b8ef13 +vmlinux bus_rescan_devices 0xefdc8a26 +vmlinux bus_unregister 0xb886a731 +vmlinux call_rcu 0x8706fba7 +vmlinux call_rcu_bh 0xc329096e +vmlinux call_usermodehelper_keys 0xc85e81ec +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x12d2e744 +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x1a301763 +vmlinux cdev_alloc 0x94b94016 +vmlinux cdev_del 0xc7001776 +vmlinux cdev_init 0x710d0fe2 +vmlinux cfb_copyarea 0x846a72ad +vmlinux cfb_fillrect 0x6da8a017 +vmlinux cfb_imageblit 0x8ef01e50 +vmlinux change_page_attr 0x771de7c6 +vmlinux check_disk_change 0x4ee52c38 +vmlinux class_create 0x7b0cdd73 +vmlinux class_create_file 0xfd14624d +vmlinux class_destroy 0x13287c29 +vmlinux class_device_add 0x393f6291 +vmlinux class_device_create 0xa15fe81b +vmlinux class_device_create_bin_file 0xcacee677 +vmlinux class_device_create_file 0xe876345e +vmlinux class_device_del 0xa3f10d52 +vmlinux class_device_destroy 0x124b63bd +vmlinux class_device_get 0x82dcc26f +vmlinux class_device_initialize 0x48ea8b8e +vmlinux class_device_put 0x9bff6e53 +vmlinux class_device_register 0x4c42bcd0 +vmlinux class_device_remove_bin_file 0x976dd854 +vmlinux class_device_remove_file 0x175175f5 +vmlinux class_device_unregister 0xdea19cf9 +vmlinux class_get 0xb9ab287a +vmlinux class_interface_register 0xb2bb801e +vmlinux class_interface_unregister 0x6a610dc4 +vmlinux class_put 0xe48152bc +vmlinux class_register 0x08e8be63 +vmlinux class_remove_file 0x2ac554c5 +vmlinux class_unregister 0xb9379cb5 +vmlinux clear_inode 0x0b591624 +vmlinux clear_page_dirty_for_io 0x06e96d21 +vmlinux clear_user 0x7da99cdd +vmlinux clip_tbl_hook 0x32fe190c +vmlinux close_bdev_excl 0x4cd0f7d1 +vmlinux cmos_lock 0x9a6a83f9 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0x7e0221e4 +vmlinux complete_all 0x2dbbdd68 +vmlinux complete_and_exit 0xfd59d987 +vmlinux compute_creds 0x5f610c73 +vmlinux con_copy_unimap 0x5726deae +vmlinux con_set_default_unimap 0xa315358b +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0x5f0c5570 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0x92c356f4 +vmlinux console_stop 0xaac12ba2 +vmlinux cont_prepare_write 0x29712810 +vmlinux copy_from_user 0xf2a644fb +vmlinux copy_fs_struct 0x5f791fd5 +vmlinux copy_io_context 0x1a005808 +vmlinux copy_strings_kernel 0x89411f3e +vmlinux copy_to_user 0x2da418b5 +vmlinux cpu_2_node 0x92f2c313 +vmlinux cpu_callout_map 0xb23a866b +vmlinux cpu_core_map 0x51b119fa +vmlinux cpu_data 0x756929d0 +vmlinux cpu_gdt_descr 0xd381aede +vmlinux cpu_idle_wait 0xb53ae573 +vmlinux cpu_khz 0xd6b33026 +vmlinux cpu_online_map 0x432c5801 +vmlinux cpu_possible_map 0xfa35c9e6 +vmlinux cpu_present_map 0x85dd693b +vmlinux cpu_sibling_map 0x7461727a +vmlinux cpu_sysdev_class 0x669cd348 +vmlinux cpufreq_cpu_get 0x5ad9bae2 +vmlinux cpufreq_cpu_put 0x2de05702 +vmlinux cpufreq_driver_target 0x5462c639 +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0x88abd414 +vmlinux cpufreq_gov_performance 0xa9db47a4 +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0xe6488b47 +vmlinux cpufreq_parse_governor 0x471c3d1b +vmlinux cpufreq_register_driver 0xf7b6d00e +vmlinux cpufreq_register_governor 0x53caaae1 +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0xb291a5aa +vmlinux cpufreq_unregister_driver 0x9d796368 +vmlinux cpufreq_unregister_governor 0x73e4a77e +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0xb7b61546 +vmlinux crc32_le 0xa34f1ef5 +vmlinux create_empty_buffers 0xca3cb57a +vmlinux create_proc_entry 0xaff48904 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0x25b0ff58 +vmlinux crypto_free_tfm 0xb6e06062 +vmlinux crypto_hmac 0x60ee9579 +vmlinux crypto_hmac_final 0x4ecf1734 +vmlinux crypto_hmac_init 0xb6520899 +vmlinux crypto_hmac_update 0x93e1b8df +vmlinux crypto_register_alg 0xd0b98d7b +vmlinux crypto_unregister_alg 0x061d145e +vmlinux csum_partial 0x9a3de8f8 +vmlinux csum_partial_copy_fromiovecend 0x02876657 +vmlinux csum_partial_copy_generic 0xd7359fa8 +vmlinux current_fs_time 0x92283710 +vmlinux current_io_context 0x06e5c986 +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0xcd986398 +vmlinux d_alloc_anon 0x4f4410cb +vmlinux d_alloc_name 0xfe4576af +vmlinux d_alloc_root 0x799036ed +vmlinux d_delete 0xc93732c2 +vmlinux d_find_alias 0x2db17a2a +vmlinux d_genocide 0x17f3511c +vmlinux d_instantiate 0xb8fa8858 +vmlinux d_instantiate_unique 0x7870fe80 +vmlinux d_invalidate 0xbdca4b6f +vmlinux d_lookup 0x7e17f5ed +vmlinux d_move 0xb6d688fe +vmlinux d_path 0x77401edf +vmlinux d_prune_aliases 0x05d940f3 +vmlinux d_rehash 0x7c7a62b9 +vmlinux d_splice_alias 0xf05500b1 +vmlinux d_validate 0x8f9a1c4d +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0xfb76059a +vmlinux dcache_dir_close 0xe6500dc4 +vmlinux dcache_dir_lseek 0x24bbef38 +vmlinux dcache_dir_open 0xaa962fab +vmlinux dcache_lock 0x179ec4b8 +vmlinux dcache_readdir 0x83a4cfb1 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0xe9b0d3cd +vmlinux default_backing_dev_info 0x66a428ac +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0xb670f7f9 +vmlinux default_idle 0x92897e3d +vmlinux default_llseek 0x43d0e01e +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x7c662c1e +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0x840f8492 +vmlinux del_timer 0x5943d3e7 +vmlinux del_timer_sync 0x594eac68 +vmlinux dentry_open 0x1facd85c +vmlinux dentry_unhash 0x389394ba +vmlinux dequeue_signal 0xc261aa9f +vmlinux deregister_atm_ioctl 0x32c28316 +vmlinux destroy_8023_client 0x404af291 +vmlinux destroy_EII_client 0xe0f21c12 +vmlinux destroy_workqueue 0x079a352f +vmlinux dev_add_pack 0x06b5ef0e +vmlinux dev_alloc_name 0x6fcaebb1 +vmlinux dev_base 0x598e0e47 +vmlinux dev_base_lock 0x01ab0f38 +vmlinux dev_change_flags 0xf2222cf8 +vmlinux dev_close 0xd652c64d +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0xbb676de0 +vmlinux dev_get_by_index 0x5997e613 +vmlinux dev_get_by_name 0xa0b53f69 +vmlinux dev_get_flags 0x5248952d +vmlinux dev_getbyhwaddr 0xc7c9bba2 +vmlinux dev_getfirstbyhwtype 0xc9224bfc +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0xec8d4332 +vmlinux dev_mc_delete 0x600b14c7 +vmlinux dev_mc_upload 0xe8fd9aa2 +vmlinux dev_open 0xdc0d6574 +vmlinux dev_queue_xmit 0x9f200b81 +vmlinux dev_remove_pack 0xfe446b25 +vmlinux dev_set_allmulti 0x4c9066e2 +vmlinux dev_set_mac_address 0xdd04b9d1 +vmlinux dev_set_mtu 0xd0ce1498 +vmlinux dev_set_promiscuity 0xeef2829b +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0xd2d226be +vmlinux device_attach 0x550d13d5 +vmlinux device_bind_driver 0x695d42bf +vmlinux device_create_file 0xa6979e5d +vmlinux device_del 0xae1b15c6 +vmlinux device_for_each_child 0x0ed5722e +vmlinux device_initialize 0x9be00403 +vmlinux device_pm_set_parent 0x8e822fbf +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0xb9788125 +vmlinux device_release_driver 0xe4eae021 +vmlinux device_remove_file 0xbf261374 +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0x6d140787 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0x49364a2f +vmlinux disable_hlt 0x794487ee +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disable_timer_nmi_watchdog 0xf2fb62ee +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_alloc_coherent 0xe698ac0f +vmlinux dma_declare_coherent_memory 0x7cc9fdf5 +vmlinux dma_free_coherent 0xd9a72e30 +vmlinux dma_get_required_mask 0xe274287e +vmlinux dma_mark_declared_memory_occupied 0x102ce44e +vmlinux dma_pool_alloc 0x2676734a +vmlinux dma_pool_create 0x7670370c +vmlinux dma_pool_destroy 0xd739aff3 +vmlinux dma_pool_free 0xd6aa2a82 +vmlinux dma_release_declared_memory 0x5bcfdff6 +vmlinux dma_spin_lock 0x028d62f7 +vmlinux dmi_check_system 0xf5633477 +vmlinux dmi_find_device 0xfe7bde5e +vmlinux dmi_get_system_info 0x6a5b6ea4 +vmlinux dnotify_parent 0x094b9f5d +vmlinux do_SAK 0xdadb23fa +vmlinux do_add_mount 0xdc97337e +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x7ea7d551 +vmlinux do_generic_mapping_read 0x73f55e18 +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0x7fc72f18 +vmlinux do_mmap_pgoff 0xb544cfa2 +vmlinux do_munmap 0x58824afd +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x5d70c0bb +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0xf0a529b7 +vmlinux do_sync_read 0x7a4cf1b7 +vmlinux do_sync_write 0x53568586 +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0xc6d5ffce +vmlinux dput 0xdef699d0 +vmlinux dq_data_lock 0x22ca4cc3 +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x1ab92706 +vmlinux dquot_alloc_inode 0x9e8986bc +vmlinux dquot_alloc_space 0xeb684294 +vmlinux dquot_commit 0x798197db +vmlinux dquot_commit_info 0x0647da98 +vmlinux dquot_drop 0x8d97c0f0 +vmlinux dquot_free_inode 0xb687789c +vmlinux dquot_free_space 0x5b3b46c7 +vmlinux dquot_initialize 0x373028f6 +vmlinux dquot_mark_dquot_dirty 0x2d9f12f2 +vmlinux dquot_release 0xca886c1a +vmlinux dquot_transfer 0x502acb34 +vmlinux drive_info 0x5aaa7cd3 +vmlinux drive_is_ready 0x0c414283 +vmlinux driver_attach 0x275074fe +vmlinux driver_create_file 0x98b1d3b3 +vmlinux driver_find 0x4fa7714b +vmlinux driver_find_device 0xc87db554 +vmlinux driver_for_each_device 0xc9576534 +vmlinux driver_register 0xbc6284b7 +vmlinux driver_remove_file 0x600c914b +vmlinux driver_unregister 0x91f3fff1 +vmlinux drop_super 0x5fa4c884 +vmlinux dst_alloc 0xf141fae6 +vmlinux dst_destroy 0x8e21d38a +vmlinux dump_fpu 0xf7e7d3e6 +vmlinux dump_stack 0x6b2dc060 +vmlinux dump_thread 0xae90b20c +vmlinux ec_read 0xba2d8594 +vmlinux ec_write 0x876dafc3 +vmlinux edid_info 0xbbb98859 +vmlinux efi 0x4f1b2bc8 +vmlinux efi_enabled 0x0933aae1 +vmlinux eighty_ninty_three 0xe4c6de0f +vmlinux eisa_bus_type 0x2f15f07b +vmlinux eisa_driver_register 0x0582d365 +vmlinux eisa_driver_unregister 0x4a7dbecb +vmlinux elevator_exit 0xad62c303 +vmlinux elevator_init 0x9b61f519 +vmlinux elv_add_request 0x4064aafb +vmlinux elv_completed_request 0x874cbe11 +vmlinux elv_dequeue_request 0x6a580150 +vmlinux elv_dispatch_sort 0x6938c58f +vmlinux elv_next_request 0x3c725dba +vmlinux elv_queue_empty 0x195ea4ad +vmlinux elv_register 0xc3ae1a72 +vmlinux elv_requeue_request 0x03fd5857 +vmlinux elv_rq_merge_ok 0x755f6654 +vmlinux elv_try_merge 0x2eaa3655 +vmlinux elv_unregister 0xdef969c0 +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_hlt 0x9c7077bd +vmlinux enable_irq 0xfcec0987 +vmlinux enable_timer_nmi_watchdog 0x13f54343 +vmlinux end_buffer_async_write 0xe0990a62 +vmlinux end_buffer_read_sync 0xb637a4bf +vmlinux end_buffer_write_sync 0x5830f38c +vmlinux end_page_writeback 0xf264966a +vmlinux end_request 0x1086f61a +vmlinux end_that_request_chunk 0x61991c29 +vmlinux end_that_request_first 0x760498b3 +vmlinux end_that_request_last 0x9ce8bdec +vmlinux eth_type_trans 0x8235fcc3 +vmlinux ether_setup 0xc4c083e5 +vmlinux ethtool_op_get_link 0x651d0e26 +vmlinux ethtool_op_get_perm_addr 0xab326295 +vmlinux ethtool_op_get_sg 0x85fc2ad0 +vmlinux ethtool_op_get_tso 0x777df8ca +vmlinux ethtool_op_get_tx_csum 0xe6636418 +vmlinux ethtool_op_get_ufo 0x25f6503a +vmlinux ethtool_op_set_sg 0xc50d74d5 +vmlinux ethtool_op_set_tso 0x678da1d9 +vmlinux ethtool_op_set_tx_csum 0x9dea30a2 +vmlinux ethtool_op_set_tx_hw_csum 0x4f0750d9 +vmlinux ethtool_op_set_ufo 0x05fcaf82 +vmlinux exit_fs 0xa83fb9c4 +vmlinux f_setown 0x2432b484 +vmlinux fasync_helper 0x6e08c489 +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x7b6f1938 +vmlinux fb_con_duit 0xb20f39d4 +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0xd3993062 +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0x2653722d +vmlinux fb_get_buffer_offset 0xacbb34c9 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0xac70ca72 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0x1980af2c +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0xe75bd234 +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x7fb29385 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0xb7ed5071 +vmlinux fb_set_suspend 0x3b9a71a6 +vmlinux fb_set_var 0xfb89d763 +vmlinux fb_show_logo 0xd10bbf6c +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x20129ce1 +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fd_install 0x7ffdaf2c +vmlinux fddi_type_trans 0x949a4cac +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x04809f2f +vmlinux file_fsync 0x72ef7670 +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0xa5e62d67 +vmlinux filemap_fdatawait 0x63be5db6 +vmlinux filemap_fdatawrite 0xdeba90c5 +vmlinux filemap_flush 0x4f3ad7de +vmlinux filemap_nopage 0x8b8e8a86 +vmlinux filemap_populate 0xbb43932d +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0xed802a0c +vmlinux filp_open 0xbc36997b +vmlinux find_bus 0xe0877b54 +vmlinux find_get_page 0x241e1824 +vmlinux find_inode_number 0xcce28e07 +vmlinux find_lock_page 0x024676df +vmlinux find_next_bit 0x2ff92ca0 +vmlinux find_next_zero_bit 0xdc01a06e +vmlinux find_or_create_page 0xcb73eeb7 +vmlinux find_task_by_pid_type 0x2b320a4e +vmlinux find_trylock_page 0x849b7cb7 +vmlinux find_vma 0xf3f99be0 +vmlinux finish_wait 0x865edc9b +vmlinux firmware_register 0x4b6a43f0 +vmlinux firmware_unregister 0xc05893b0 +vmlinux flock_lock_file_wait 0x743e9520 +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_old_exec 0xcedf8496 +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0xee6315ad +vmlinux flush_tlb_page 0x5b933cb3 +vmlinux flush_workqueue 0xdf0abeb8 +vmlinux follow_down 0x108246a8 +vmlinux follow_up 0xf62e8527 +vmlinux force_sig 0xe8a8d7eb +vmlinux fput 0xb5c5c1f8 +vmlinux framebuffer_alloc 0x44219182 +vmlinux framebuffer_release 0x2db5b02c +vmlinux free_buffer_head 0x8e5f126d +vmlinux free_dma 0x72b243d4 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0x9d92e7e2 +vmlinux free_pages 0x9941ccb8 +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0x30d8ae5e +vmlinux freeze_bdev 0x1bec3837 +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0xe97840fe +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0x0f93d64c +vmlinux gen_replace_estimator 0x46b64038 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x2252f01b +vmlinux generic_block_bmap 0x808c36f8 +vmlinux generic_commit_write 0xe7d3ac1f +vmlinux generic_cont_expand 0x2cc3d5e6 +vmlinux generic_delete_inode 0x073ca6a6 +vmlinux generic_drop_inode 0x39481516 +vmlinux generic_file_aio_read 0xa98518e5 +vmlinux generic_file_aio_write 0xc1e4384c +vmlinux generic_file_aio_write_nolock 0x596193e1 +vmlinux generic_file_buffered_write 0xf5e8d382 +vmlinux generic_file_direct_write 0x680febdb +vmlinux generic_file_llseek 0xcdbf83b4 +vmlinux generic_file_mmap 0xdccb61e3 +vmlinux generic_file_open 0xb9bf025f +vmlinux generic_file_read 0x28b39e0b +vmlinux generic_file_readonly_mmap 0x9936f0f7 +vmlinux generic_file_readv 0x050d0e5b +vmlinux generic_file_sendfile 0x336bc2ee +vmlinux generic_file_write 0x7bc4313b +vmlinux generic_file_write_nolock 0x04f5572a +vmlinux generic_file_writev 0x439aaca6 +vmlinux generic_fillattr 0xbb7170db +vmlinux generic_getxattr 0x9284af8d +vmlinux generic_ide_ioctl 0x3b9caf42 +vmlinux generic_listxattr 0x1cb5bab1 +vmlinux generic_make_request 0x594c4a48 +vmlinux generic_osync_inode 0x5d59856b +vmlinux generic_permission 0x92f9c03a +vmlinux generic_read_dir 0x6d21357d +vmlinux generic_readlink 0xce181f20 +vmlinux generic_removexattr 0x8292c706 +vmlinux generic_ro_fops 0x23bd06ae +vmlinux generic_setxattr 0x28475071 +vmlinux generic_shutdown_super 0xcfc73d87 +vmlinux generic_unplug_device 0x891c80e6 +vmlinux generic_write_checks 0x0a0774e1 +vmlinux genl_register_family 0x8b2bf63d +vmlinux genl_register_ops 0x8ccb529d +vmlinux genl_sock 0x864f5c1b +vmlinux genl_unregister_family 0x5d177881 +vmlinux genl_unregister_ops 0xa6f3a681 +vmlinux get_bus 0x066ef122 +vmlinux get_cmos_time 0xb31ddfb4 +vmlinux get_cpu_sysdev 0xa6b0d2f9 +vmlinux get_dcookie 0xa5f4dbe3 +vmlinux get_device 0xba08485d +vmlinux get_disk 0x71eefa5c +vmlinux get_driver 0x4ab547f5 +vmlinux get_empty_filp 0x4925e4fe +vmlinux get_fs_type 0xb5a607ec +vmlinux get_io_context 0xeedce589 +vmlinux get_jiffies_64 0x37e74642 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0x23f45cb3 +vmlinux get_sb_nodev 0xa00491bf +vmlinux get_sb_pseudo 0x971e7629 +vmlinux get_sb_single 0x365329ed +vmlinux get_super 0x379c1deb +vmlinux get_task_mm 0x6b846d72 +vmlinux get_unmapped_area 0x848c2ff4 +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x8cc480ac +vmlinux get_wchan 0x3e117920 +vmlinux get_write_access 0x886a21a6 +vmlinux get_zeroed_page 0x2c2512ea +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0xe56f38a2 +vmlinux global_flush_tlb 0x3167ea19 +vmlinux gnet_stats_copy_app 0x69eced7e +vmlinux gnet_stats_copy_basic 0xe8225dd5 +vmlinux gnet_stats_copy_queue 0x831bd453 +vmlinux gnet_stats_copy_rate_est 0x230d9c16 +vmlinux gnet_stats_finish_copy 0x686b1e25 +vmlinux gnet_stats_start_copy 0x175c6178 +vmlinux gnet_stats_start_copy_compat 0x4c968d31 +vmlinux grab_cache_page_nowait 0x07e462f3 +vmlinux groups_alloc 0x51cd47e2 +vmlinux groups_free 0x111bcb2c +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0x65fe7be1 +vmlinux have_submounts 0x23d5ffc2 +vmlinux high_memory 0x8a7d1c31 +vmlinux hippi_type_trans 0xad9b1ded +vmlinux hpet_alloc 0x686f1325 +vmlinux hpet_control 0x1de314f3 +vmlinux hpet_register 0x741f1f6e +vmlinux hpet_unregister 0x63dfe1b4 +vmlinux hwmon_device_register 0xe9a16b4f +vmlinux hwmon_device_unregister 0xaac5e201 +vmlinux i8253_lock 0x242c2398 +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0xc24d14c0 +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_acpi_exec_tfs 0x9094b015 +vmlinux ide_acpi_get_timing 0xad5068ce +vmlinux ide_acpi_init 0x57ea02ae +vmlinux ide_acpi_push_timing 0x0930cdce +vmlinux ide_add_setting 0x285d41fb +vmlinux ide_build_dmatable 0x69d79107 +vmlinux ide_build_sglist 0xfbe3471f +vmlinux ide_bus_type 0xb187beb0 +vmlinux ide_config_drive_speed 0x9fe8d248 +vmlinux ide_destroy_dmatable 0xf6f16ab3 +vmlinux ide_dma_enable 0x6a712911 +vmlinux ide_dma_intr 0x2796906e +vmlinux ide_dma_setup 0xdc7d2532 +vmlinux ide_dma_speed 0xbdeac7d3 +vmlinux ide_dma_start 0xf6330d0f +vmlinux ide_dma_verbose 0x9bc03b22 +vmlinux ide_do_drive_cmd 0x8e8b39f6 +vmlinux ide_do_reset 0x9137b5c1 +vmlinux ide_dump_status 0x0f69cd79 +vmlinux ide_end_drive_cmd 0xaa867f67 +vmlinux ide_end_request 0x959843c0 +vmlinux ide_error 0xa6866d84 +vmlinux ide_execute_command 0x3b2ba993 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x6f2ed38c +vmlinux ide_get_error_location 0xcf350fd1 +vmlinux ide_hwifs 0xba194228 +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0xf85d105e +vmlinux ide_init_drive_cmd 0x8539294d +vmlinux ide_init_sg_cmd 0xf81b5a99 +vmlinux ide_lock 0xb0e42262 +vmlinux ide_map_sg 0xdc7c393f +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x5c1332b0 +vmlinux ide_pci_unregister_driver 0x89f6dfaa +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0x73e39bba +vmlinux ide_register_hw 0x415619c2 +vmlinux ide_register_hw_with_fixup 0xb3be23b0 +vmlinux ide_register_region 0x986ebbb0 +vmlinux ide_register_subdriver 0x288b3bef +vmlinux ide_set_handler 0xe7a6d5cd +vmlinux ide_set_xfer_rate 0xd87a7480 +vmlinux ide_setup_dma 0x102aa0a4 +vmlinux ide_setup_pci_device 0x9fb222c2 +vmlinux ide_setup_pci_devices 0x8ba2f779 +vmlinux ide_setup_pci_noise 0x396c62ea +vmlinux ide_spin_wait_hwgroup 0xed4888e6 +vmlinux ide_stall_queue 0xc93a7141 +vmlinux ide_undecoded_slave 0xb066ab6c +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0x41633687 +vmlinux ide_unregister_subdriver 0xf94df567 +vmlinux ide_use_dma 0x989574cd +vmlinux ide_wait_not_busy 0xd9697505 +vmlinux ide_wait_stat 0xa6cf469e +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0x9dbf1158 +vmlinux idr_find 0xf6a98ae7 +vmlinux idr_get_new 0x2d29e50a +vmlinux idr_get_new_above 0x1421a04c +vmlinux idr_init 0xb6ff27a7 +vmlinux idr_pre_get 0x52a7207f +vmlinux idr_remove 0xa7409aaf +vmlinux iget5_locked 0x4135d477 +vmlinux iget_locked 0x233fdc63 +vmlinux igrab 0xd7168b9c +vmlinux ilookup 0x82f9eb5f +vmlinux ilookup5 0xedcfbeab +vmlinux ilookup5_nowait 0xdf916c29 +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0xde1809f5 +vmlinux in_egroup_p 0xd8a2ab95 +vmlinux in_group_p 0xc3cf1128 +vmlinux in_lock_functions 0x09d44df9 +vmlinux inet6_lookup 0x7b25c0c2 +vmlinux inet6_lookup_listener 0xb7e0bc9d +vmlinux inet_accept 0x61c1c10b +vmlinux inet_add_protocol 0x170f7b3d +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0x0b57915b +vmlinux inet_bind_bucket_create 0xa36f819b +vmlinux inet_bind_hash 0x2582dfd8 +vmlinux inet_csk_accept 0x041d0a2c +vmlinux inet_csk_clear_xmit_timers 0x86d329b3 +vmlinux inet_csk_clone 0x3c3ecd4a +vmlinux inet_csk_delete_keepalive_timer 0x15aed47f +vmlinux inet_csk_destroy_sock 0xd216e7c7 +vmlinux inet_csk_get_port 0x82d82905 +vmlinux inet_csk_init_xmit_timers 0x55c73927 +vmlinux inet_csk_listen_start 0x19940d3e +vmlinux inet_csk_listen_stop 0xb2569f8e +vmlinux inet_csk_reqsk_queue_hash_add 0x37fadb64 +vmlinux inet_csk_reqsk_queue_prune 0x89798f98 +vmlinux inet_csk_reset_keepalive_timer 0x46a58120 +vmlinux inet_csk_route_req 0x073a3405 +vmlinux inet_csk_search_req 0xfe4e315a +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0x021965af +vmlinux inet_dgram_connect 0x6d1e7743 +vmlinux inet_dgram_ops 0x2bb3c806 +vmlinux inet_diag_register 0x2c900210 +vmlinux inet_diag_unregister 0xb61d81d3 +vmlinux inet_getname 0xfdd348ae +vmlinux inet_ioctl 0xf50dec3b +vmlinux inet_listen 0x03cca350 +vmlinux inet_listen_wlock 0xa63eaa1c +vmlinux inet_put_port 0x9f7bae23 +vmlinux inet_register_protosw 0xb8407f21 +vmlinux inet_release 0xf5409fba +vmlinux inet_select_addr 0x9b3525f9 +vmlinux inet_sendmsg 0xb04c9512 +vmlinux inet_shutdown 0x57434ef1 +vmlinux inet_sk_rebuild_header 0x159cc82e +vmlinux inet_sock_destruct 0xa8761936 +vmlinux inet_stream_connect 0x88fc62e1 +vmlinux inet_stream_ops 0x7ba3bfb2 +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x7080aebc +vmlinux inet_twsk_deschedule 0xd595c7cc +vmlinux inet_twsk_schedule 0x4d43ca14 +vmlinux inet_unregister_protosw 0x782a632e +vmlinux inetdev_by_index 0x848f6602 +vmlinux init_buffer 0xd494d9bc +vmlinux init_mm 0x185539d8 +vmlinux init_special_inode 0x4aaf89be +vmlinux init_task 0xd18305da +vmlinux init_timer 0xd5e8dba8 +vmlinux inode_add_bytes 0x1f61f6c7 +vmlinux inode_change_ok 0x8305fe3c +vmlinux inode_get_bytes 0x13471e57 +vmlinux inode_init_once 0x70f16cfb +vmlinux inode_needs_sync 0xffb85af9 +vmlinux inode_set_bytes 0xda57ca73 +vmlinux inode_setattr 0xfec2b5c6 +vmlinux inode_sub_bytes 0xdf4be9f0 +vmlinux inode_update_time 0xb41ef010 +vmlinux inotify_dentry_parent_queue_event 0x49c4bec0 +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0xa5cf2eaa +vmlinux inotify_inode_queue_event 0x69f1fe3e +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0xb274d575 +vmlinux input_allocate_device 0xe50bde9c +vmlinux input_class 0xffbc42e7 +vmlinux input_close_device 0xd8d59bcd +vmlinux input_event 0x42f5d19a +vmlinux input_flush_device 0x46d7b348 +vmlinux input_grab_device 0x0a95ce6d +vmlinux input_open_device 0xb8689975 +vmlinux input_register_device 0x44696f5b +vmlinux input_register_handler 0xf3302372 +vmlinux input_release_device 0x02230a7d +vmlinux input_unregister_device 0xdd359f43 +vmlinux input_unregister_handler 0x8743cb35 +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0x90c17b9b +vmlinux int_sqrt 0xb678366f +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0xc12fab49 +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0xa3e9fd5e +vmlinux interruptible_sleep_on_timeout 0x8e334f2b +vmlinux invalidate_bdev 0x9d19c01b +vmlinux invalidate_inode_pages 0xaab67d59 +vmlinux invalidate_inode_pages2 0xed6e56cf +vmlinux invalidate_inode_pages2_range 0xac552c7d +vmlinux invalidate_inodes 0xd65b43dc +vmlinux invalidate_partition 0xad5448b8 +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0x1fe87a34 +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0x03960713 +vmlinux ioread16_rep 0x54324f95 +vmlinux ioread16be 0x06127753 +vmlinux ioread32 0x2241a928 +vmlinux ioread32_rep 0x3360bb18 +vmlinux ioread32be 0x0bce3753 +vmlinux ioread8 0x389e200f +vmlinux ioread8_rep 0x27a72488 +vmlinux ioremap_nocache 0x3762cb6e +vmlinux iounmap 0xedc03953 +vmlinux iov_shorten 0xc11d8093 +vmlinux iowrite16 0x4775eacf +vmlinux iowrite16_rep 0x1eba9e49 +vmlinux iowrite16be 0x30343e46 +vmlinux iowrite32 0x908aa9b2 +vmlinux iowrite32_rep 0x2dbc755e +vmlinux iowrite32be 0xa1a6414c +vmlinux iowrite8 0x375bf494 +vmlinux iowrite8_rep 0x0b353626 +vmlinux ip4_datagram_connect 0x642bcc59 +vmlinux ip_build_and_send_pkt 0xbf26bd90 +vmlinux ip_cmsg_recv 0x85f1a597 +vmlinux ip_ct_attach 0x3d0eb820 +vmlinux ip_defrag 0xc3264a96 +vmlinux ip_fragment 0xaaf906a5 +vmlinux ip_generic_getfrag 0x747cd263 +vmlinux ip_getsockopt 0xe9276a94 +vmlinux ip_mc_dec_group 0xf7f791aa +vmlinux ip_mc_inc_group 0xb29f6c96 +vmlinux ip_mc_join_group 0x0361d448 +vmlinux ip_queue_xmit 0x9ea69351 +vmlinux ip_route_input 0xf6333c9e +vmlinux ip_route_me_harder 0xf60453d6 +vmlinux ip_route_output_flow 0x48c30205 +vmlinux ip_route_output_key 0x7d5fd110 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0xa37b7441 +vmlinux ip_setsockopt 0xe816395f +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0xd611f74a +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0x0ea7bbe9 +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0xf506614e +vmlinux is_bad_inode 0xf57c45c6 +vmlinux is_console_locked 0x944a564d +vmlinux isa_bridge 0xe17c5059 +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux isapnp_cfg_begin 0x770a0036 +vmlinux isapnp_cfg_end 0x28b715a6 +vmlinux isapnp_present 0xbf8b39e9 +vmlinux isapnp_protocol 0x3303662f +vmlinux isapnp_write_byte 0xda8fd495 +vmlinux ist_info 0x0fdb1426 +vmlinux iunique 0xcb77d922 +vmlinux iw_handler_get_spy 0x5dff7fbc +vmlinux iw_handler_get_thrspy 0x6e0c47a3 +vmlinux iw_handler_set_spy 0x5954f9a2 +vmlinux iw_handler_set_thrspy 0x54698c70 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x3f2cf0c7 +vmlinux kernel_fpu_begin 0xd986dad1 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0xea089105 +vmlinux kernel_recvmsg 0x91332fb6 +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0x857d4e7e +vmlinux kernel_subsys 0x16997fda +vmlinux kernel_thread 0x7e9ebb05 +vmlinux key_alloc 0x41d179a2 +vmlinux key_create_or_update 0x459db887 +vmlinux key_instantiate_and_link 0x59e434d5 +vmlinux key_link 0x7042f97c +vmlinux key_negate_and_link 0x8e866cca +vmlinux key_payload_reserve 0x6540169f +vmlinux key_put 0x80b16ca8 +vmlinux key_revoke 0xf97a0fb9 +vmlinux key_task_permission 0x6f9291e1 +vmlinux key_type_user 0x28bb84b5 +vmlinux key_unlink 0xb7be0f3c +vmlinux key_update 0xea7987f1 +vmlinux key_validate 0x4e5eadb0 +vmlinux keyring_clear 0xf4766438 +vmlinux keyring_search 0x5a50830e +vmlinux kfifo_alloc 0x5cc5b658 +vmlinux kfifo_free 0x08a64e7c +vmlinux kfifo_init 0xfa31cd3b +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0xb4c3e434 +vmlinux kill_anon_super 0xeddbc6c8 +vmlinux kill_block_super 0xfb386636 +vmlinux kill_fasync 0x60e8d8b3 +vmlinux kill_litter_super 0x16a3b3f1 +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xec10e63a +vmlinux klist_add_head 0xe14bb3a2 +vmlinux klist_add_tail 0x8bd126f9 +vmlinux klist_del 0x7081deed +vmlinux klist_init 0x83ba3c87 +vmlinux klist_iter_exit 0x5dbca5b8 +vmlinux klist_iter_init 0xba799312 +vmlinux klist_iter_init_node 0xee8c66d5 +vmlinux klist_next 0x0d1a949b +vmlinux klist_node_attached 0x1d1ee37c +vmlinux klist_remove 0x88277446 +vmlinux km_new_mapping 0xcd2a13f4 +vmlinux km_policy_notify 0x44584590 +vmlinux km_state_notify 0xed60c2d1 +vmlinux km_waitq 0x9b0f1de9 +vmlinux kmalloc_node 0x7117feb9 +vmlinux kmap 0x42a9d700 +vmlinux kmap_atomic 0xb6e31333 +vmlinux kmap_atomic_to_page 0x19430031 +vmlinux kmap_high 0xd6a96e86 +vmlinux kmem_cache_alloc 0x54b55d75 +vmlinux kmem_cache_alloc_node 0xe923b674 +vmlinux kmem_cache_create 0x40571042 +vmlinux kmem_cache_destroy 0x95ff41a8 +vmlinux kmem_cache_free 0x8f0cc06f +vmlinux kmem_cache_name 0x7865147d +vmlinux kmem_cache_shrink 0xab8a1b7b +vmlinux kmem_cache_size 0x06ec41b5 +vmlinux kmem_find_general_cachep 0x5bff1fcc +vmlinux kobject_add 0xf0f175bd +vmlinux kobject_del 0x7f6b4e91 +vmlinux kobject_get 0x3da369e8 +vmlinux kobject_hotplug 0x0cd30097 +vmlinux kobject_init 0x9da81236 +vmlinux kobject_put 0xac035274 +vmlinux kobject_register 0x4f72a1d8 +vmlinux kobject_set_name 0xb52738b5 +vmlinux kobject_uevent 0x6c707994 +vmlinux kobject_uevent_atomic 0x93e36414 +vmlinux kobject_unregister 0xfda5fbef +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x4a10bf98 +vmlinux kset_register 0xcda5d7c3 +vmlinux kset_unregister 0x5638ce1b +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0xdd8b3849 +vmlinux kthread_create 0x54767b04 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0xed5ea1ed +vmlinux kthread_stop_sem 0x61ac5bbc +vmlinux kunmap 0xb8a9c6c9 +vmlinux kunmap_atomic 0x43b40de7 +vmlinux kunmap_high 0x44c9156d +vmlinux kzalloc 0x1d10cdb2 +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0x5dd27684 +vmlinux lease_modify 0x7fb0a94f +vmlinux linkwatch_fire_event 0xb1664d97 +vmlinux ll_rw_block 0x1804cfde +vmlinux llc_add_pack 0xc9eb3052 +vmlinux llc_build_and_send_ui_pkt 0xad9182e4 +vmlinux llc_mac_hdr_init 0xc056147c +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0x9bebd20d +vmlinux llc_sap_find 0x71a5f17a +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0x5f69c2db +vmlinux llc_sap_open 0x79e885fe +vmlinux llc_set_station_handler 0xe51bb768 +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_nls 0x7733947d +vmlinux load_nls_default 0x9b86d80f +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_cpu_hotplug 0xba813bd6 +vmlinux lock_cpu_hotplug_interruptible 0xdd7ee0f9 +vmlinux lock_kernel 0x5568be43 +vmlinux lock_may_read 0x630a6ece +vmlinux lock_may_write 0x1e4d9149 +vmlinux lock_rename 0x1cd09351 +vmlinux lock_sock 0x4e7b07bd +vmlinux locks_copy_lock 0xfce3e1f1 +vmlinux locks_init_lock 0xfca8343f +vmlinux locks_mandatory_area 0xe47214ec +vmlinux locks_remove_posix 0xc25aa3b3 +vmlinux lookup_create 0xb0a12ccb +vmlinux lookup_hash 0x71ada19c +vmlinux lookup_instantiate_filp 0xb157c11a +vmlinux lookup_one_len 0x0ad4be31 +vmlinux loopback_dev 0x2b8e1053 +vmlinux loops_per_jiffy 0xba497f13 +vmlinux machine_id 0x69b4ab75 +vmlinux machine_real_restart 0x3da1b07a +vmlinux make_8023_client 0x7c78b270 +vmlinux make_EII_client 0x99b2af63 +vmlinux make_bad_inode 0xbabe317b +vmlinux malloc_sizes 0x6a856d32 +vmlinux mapping_tagged 0x80f81294 +vmlinux mark_buffer_async_write 0x1e308d77 +vmlinux mark_buffer_dirty 0x4100134b +vmlinux mark_buffer_dirty_inode 0xb631783c +vmlinux mark_info_dirty 0x8207d134 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0xd4f4adaa +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_cstate 0x93805374 +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0xde5ee714 +vmlinux may_umount_tree 0xd6a82ffe +vmlinux mb_cache_create 0xb20750b9 +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0x38d42b7e +vmlinux mb_cache_entry_find_first 0xe7a3891d +vmlinux mb_cache_entry_find_next 0xfbfefdcb +vmlinux mb_cache_entry_free 0x72cdd576 +vmlinux mb_cache_entry_get 0x62456f62 +vmlinux mb_cache_entry_insert 0x38df49fd +vmlinux mb_cache_entry_release 0x5ac7ba1f +vmlinux mb_cache_shrink 0xfaa1fa63 +vmlinux mca_bus_type 0x8565393b +vmlinux mca_device_claimed 0x77d3425f +vmlinux mca_device_read_pos 0x0056ef87 +vmlinux mca_device_read_stored_pos 0xbcdfc231 +vmlinux mca_device_set_claim 0x38e6e98c +vmlinux mca_device_set_name 0xcd7cfa46 +vmlinux mca_device_status 0x87b329c2 +vmlinux mca_device_transform_ioport 0xe5e18859 +vmlinux mca_device_transform_irq 0x4fa51689 +vmlinux mca_device_transform_memory 0x0f8b96f9 +vmlinux mca_device_write_pos 0x27cdcd7d +vmlinux mca_find_adapter 0x5f1bd579 +vmlinux mca_find_unused_adapter 0xef3bd862 +vmlinux mca_is_adapter_used 0x05048b38 +vmlinux mca_mark_as_unused 0xd9c272aa +vmlinux mca_mark_as_used 0x6b937ffb +vmlinux mca_read_pos 0x5c68705b +vmlinux mca_read_stored_pos 0xb2efb6be +vmlinux mca_register_driver 0x9ba1b324 +vmlinux mca_set_adapter_name 0xf2e74040 +vmlinux mca_unregister_driver 0x1eea5c79 +vmlinux mca_write_pos 0xaaebe34f +vmlinux memcmp 0x5152e605 +vmlinux memcpy 0x2e60bace +vmlinux memcpy_fromiovec 0x9fb3dd30 +vmlinux memcpy_fromiovecend 0x6e440b58 +vmlinux memcpy_toiovec 0x9ceb163c +vmlinux memmove 0x8235805b +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xcfaf79ba +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0xbe8a1485 +vmlinux mempool_create_node 0x31448a4a +vmlinux mempool_destroy 0xe5077a8f +vmlinux mempool_free 0x37a9798f +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x931d2521 +vmlinux memset 0x2bc95bd4 +vmlinux misc_deregister 0x720b4719 +vmlinux misc_register 0x1018f6f9 +vmlinux mmput 0x015b2494 +vmlinux mnt_pin 0xcf664c75 +vmlinux mnt_unpin 0x533bc897 +vmlinux mntput_no_expire 0x746a6d4f +vmlinux mod_reg_security 0xb89348e8 +vmlinux mod_timer 0x400a2c21 +vmlinux mod_unreg_security 0x6e56bcae +vmlinux module_add_driver 0xabe1a512 +vmlinux module_refcount 0x73434f24 +vmlinux module_remove_driver 0x754bedb8 +vmlinux monotonic_clock 0x9669ecc8 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0xce176374 +vmlinux mpage_readpages 0xfa4cb16a +vmlinux mpage_writepage 0xb7e1df32 +vmlinux mpage_writepages 0x67bb2fbb +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux mtrr_add 0x56179c5f +vmlinux mtrr_del 0x272d394e +vmlinux multipath_alg_register 0x5505d441 +vmlinux multipath_alg_unregister 0xee9d212b +vmlinux n_tty_ioctl 0x9088de7b +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x7476045c +vmlinux neigh_changeaddr 0x9c3b10c4 +vmlinux neigh_compat_output 0x7fde9543 +vmlinux neigh_connected_output 0xf5d31a9d +vmlinux neigh_create 0x3ef024d7 +vmlinux neigh_delete 0x70d3057c +vmlinux neigh_destroy 0x54edc32b +vmlinux neigh_dump_info 0x4af88c3b +vmlinux neigh_event_ns 0xdfab74f7 +vmlinux neigh_for_each 0xf5e667ef +vmlinux neigh_ifdown 0xcd1ad61b +vmlinux neigh_lookup 0x371eff92 +vmlinux neigh_lookup_nodev 0xeecc949c +vmlinux neigh_parms_alloc 0xd2679cd6 +vmlinux neigh_parms_release 0xe4faaf01 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0x0725378c +vmlinux neigh_seq_next 0x74bb42f6 +vmlinux neigh_seq_start 0x9d36b638 +vmlinux neigh_seq_stop 0x265efd73 +vmlinux neigh_sysctl_register 0x850b1e46 +vmlinux neigh_sysctl_unregister 0x43e825ff +vmlinux neigh_table_clear 0xe9c81358 +vmlinux neigh_table_init 0x9c3cb1e7 +vmlinux neigh_update 0xeee4d5ee +vmlinux neigh_update_hhs 0xc9e47767 +vmlinux neightbl_dump_info 0x5718add2 +vmlinux neightbl_set 0x7e1b6565 +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0x1878bbf6 +vmlinux netdev_features_change 0x59fa80f5 +vmlinux netdev_rx_csum_fault 0xbdd4f2b6 +vmlinux netdev_set_master 0xd5593c1f +vmlinux netdev_state_change 0x70100acf +vmlinux netif_carrier_off 0xaf836fb1 +vmlinux netif_carrier_on 0x82ed45c9 +vmlinux netif_receive_skb 0xc3e5cbad +vmlinux netif_rx 0x3cfd62d0 +vmlinux netif_rx_ni 0xe7227659 +vmlinux netlink_ack 0x655a9a9c +vmlinux netlink_broadcast 0x68f1a12f +vmlinux netlink_dump_start 0xbced3f38 +vmlinux netlink_kernel_create 0x475321b2 +vmlinux netlink_queue_skip 0x5c1eeca5 +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0xf2da8b74 +vmlinux netlink_set_err 0xb05a233b +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0x356aacd1 +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0xe95ffbb2 +vmlinux netpoll_parse_options 0x97ad3c8d +vmlinux netpoll_poll 0x61027e69 +vmlinux netpoll_queue 0x22e81659 +vmlinux netpoll_send_udp 0x4e9dc0bb +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0x5b395379 +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0x61989457 +vmlinux next_thread 0x54deac1a +vmlinux nf_ct_attach 0x0fd840bf +vmlinux nf_getsockopt 0x508dc18d +vmlinux nf_hook_slow 0xed397fa9 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0x056a0ba7 +vmlinux nf_log_register 0xffcd2658 +vmlinux nf_log_unregister_logger 0x966227f0 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0x980681a9 +vmlinux nf_register_queue_handler 0x05047c12 +vmlinux nf_register_queue_rerouter 0xb4088a5e +vmlinux nf_register_sockopt 0xb0b6eedc +vmlinux nf_reinject 0x65377483 +vmlinux nf_setsockopt 0xc3a2798f +vmlinux nf_unregister_hook 0x541d6f14 +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0x0137fc2c +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0xe3bf6482 +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0xbe0e5118 +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0x6a90da2c +vmlinux nla_reserve 0xfbe9379a +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0x6cdc5c6b +vmlinux nla_validate 0x2cc98162 +vmlinux nmi_active 0x069dcda8 +vmlinux nmi_watchdog 0xda928914 +vmlinux no_llseek 0x1320de6d +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0xc9db5468 +vmlinux nobh_prepare_write 0x114ef355 +vmlinux nobh_truncate_page 0xfd93aa40 +vmlinux nobh_writepage 0xc0b7fac7 +vmlinux node_data 0xc7a093d5 +vmlinux node_online_map 0x737034b2 +vmlinux node_possible_map 0x71d929b2 +vmlinux nonseekable_open 0x7557ce99 +vmlinux noop_qdisc 0x2703d404 +vmlinux noop_qdisc_ops 0x19115248 +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0xeee0fa64 +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0x46850fe6 +vmlinux open_by_devnum 0x77c66f92 +vmlinux open_exec 0xe3b43544 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0x09aeaf8c +vmlinux out_of_line_wait_on_bit_lock 0xe868af29 +vmlinux overflowgid 0x7171121c +vmlinux overflowuid 0x8b618d08 +vmlinux p80211_resume 0x950c5f2c +vmlinux p80211_suspend 0xc2a80cf1 +vmlinux p80211netdev_hwremoved 0x1f71fdfc +vmlinux p80211netdev_rx 0x293007f5 +vmlinux p80211skb_free 0xc98230f8 +vmlinux p80211skb_rxmeta_attach 0x6e277884 +vmlinux page_address 0x8a4b6619 +vmlinux page_follow_link_light 0xeaee63c8 +vmlinux page_put_link 0xf05d636b +vmlinux page_readlink 0x311f2092 +vmlinux page_symlink 0xed41b588 +vmlinux page_symlink_inode_operations 0x0a8b62d8 +vmlinux pagevec_lookup_tag 0x543b73c9 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0x7ab58c40 +vmlinux path_release 0x895938f3 +vmlinux path_walk 0x812b49ff +vmlinux pci_add_new_bus 0x53a0c51f +vmlinux pci_assign_resource 0x374ffbcf +vmlinux pci_block_user_cfg_access 0xdfcf8303 +vmlinux pci_bus_add_device 0x84fe9246 +vmlinux pci_bus_add_devices 0x90106a19 +vmlinux pci_bus_alloc_resource 0x3f94f6a1 +vmlinux pci_bus_assign_resources 0x34e58171 +vmlinux pci_bus_find_capability 0x7c818d3e +vmlinux pci_bus_max_busnr 0x2a1be481 +vmlinux pci_bus_read_config_byte 0xdf46d361 +vmlinux pci_bus_read_config_dword 0xaaf999a2 +vmlinux pci_bus_read_config_word 0xa1fc75f8 +vmlinux pci_bus_size_bridges 0x23d81c53 +vmlinux pci_bus_type 0x4cfdd230 +vmlinux pci_bus_write_config_byte 0x9091c533 +vmlinux pci_bus_write_config_dword 0xce25255a +vmlinux pci_bus_write_config_word 0xadfa99a6 +vmlinux pci_choose_state 0x028a08ca +vmlinux pci_clear_mwi 0xe1b967fc +vmlinux pci_create_bus 0x0cde5c7c +vmlinux pci_dev_driver 0x6a90ad82 +vmlinux pci_dev_get 0xa3326a47 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0xc49889a8 +vmlinux pci_disable_device 0x1eb10e66 +vmlinux pci_disable_msi 0x25c1372d +vmlinux pci_disable_msix 0xfa66f011 +vmlinux pci_do_scan_bus 0xa94c1c27 +vmlinux pci_enable_bridges 0xae36bfb1 +vmlinux pci_enable_device 0x4d8001ab +vmlinux pci_enable_device_bars 0x879c985b +vmlinux pci_enable_msi 0x34082d93 +vmlinux pci_enable_msix 0x6a7e8e86 +vmlinux pci_enable_wake 0xf892f878 +vmlinux pci_find_bus 0x1e83bbe4 +vmlinux pci_find_capability 0x823450a2 +vmlinux pci_find_device 0x932790cd +vmlinux pci_find_device_reverse 0xeb123858 +vmlinux pci_find_next_bus 0xab144d66 +vmlinux pci_find_next_capability 0xa5c42919 +vmlinux pci_find_parent_resource 0xb4f3803f +vmlinux pci_find_slot 0xe1eef9b7 +vmlinux pci_fixup_device 0x4999d705 +vmlinux pci_get_class 0x34aa22a2 +vmlinux pci_get_device 0x080cd130 +vmlinux pci_get_slot 0x43ed424a +vmlinux pci_get_subsys 0xd0d1a856 +vmlinux pci_intx 0x41ab5bf9 +vmlinux pci_iomap 0x515537e6 +vmlinux pci_iounmap 0x91207366 +vmlinux pci_map_rom 0x091a21cc +vmlinux pci_map_rom_copy 0xc9fcf8fe +vmlinux pci_match_device 0x9f2bfcb0 +vmlinux pci_match_id 0xdcfabd45 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_mem_start 0x3da171f9 +vmlinux pci_osc_control_set 0x20c8fc33 +vmlinux pci_osc_support_set 0xed9003ef +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0xe50e81e5 +vmlinux pci_proc_attach_device 0x045eaad0 +vmlinux pci_proc_detach_bus 0x1f4e7f7d +vmlinux pci_release_region 0xe9d19dab +vmlinux pci_release_regions 0x8a7a4ff3 +vmlinux pci_remove_behind_bridge 0xfdd012b7 +vmlinux pci_remove_bus 0xb66e367b +vmlinux pci_remove_bus_device 0x14157b5e +vmlinux pci_remove_device_safe 0x4109af4e +vmlinux pci_remove_rom 0xb3f18c17 +vmlinux pci_request_region 0x8148d268 +vmlinux pci_request_regions 0xeb474686 +vmlinux pci_restore_bars 0xe3b5f546 +vmlinux pci_restore_state 0xab922bed +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0xacea2a67 +vmlinux pci_scan_bridge 0x9a3bec66 +vmlinux pci_scan_bus_parented 0xc452c312 +vmlinux pci_scan_child_bus 0x9eac46f1 +vmlinux pci_scan_single_device 0xa0993fdf +vmlinux pci_scan_slot 0xe3c2e53a +vmlinux pci_set_consistent_dma_mask 0xd0be04f4 +vmlinux pci_set_dma_mask 0x188fb7f9 +vmlinux pci_set_master 0x69c3e554 +vmlinux pci_set_mwi 0x05ba3aa7 +vmlinux pci_set_power_state 0x57b1b53b +vmlinux pci_setup_cardbus 0xd1ee4594 +vmlinux pci_unblock_user_cfg_access 0xd9442c8f +vmlinux pci_unmap_rom 0xe23f0a96 +vmlinux pci_unregister_driver 0x5f3a8192 +vmlinux pci_walk_bus 0xd90be1c0 +vmlinux pcibios_get_irq_routing_table 0xda08c0d7 +vmlinux pcibios_set_irq_routing 0xb42e2b42 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pcie_port_service_register 0xa6d412d8 +vmlinux pcie_port_service_unregister 0xd24a8ea6 +vmlinux pciserial_init_ports 0x82a8298a +vmlinux pciserial_remove_ports 0x24659509 +vmlinux pciserial_resume_ports 0xee74c2bd +vmlinux pciserial_suspend_ports 0x75daf090 +vmlinux per_cpu__cpu_16bit_stack 0x42f5b870 +vmlinux per_cpu__irq_stat 0xb994c584 +vmlinux per_cpu__kstat 0xca09a9af +vmlinux per_cpu__softnet_data 0x588f3297 +vmlinux percpu_counter_mod 0x921ec48a +vmlinux permission 0xcbe1a85c +vmlinux pfifo_qdisc_ops 0x91983a5c +vmlinux physnode_map 0x1e33476e +vmlinux platform_add_devices 0xb17a0c9a +vmlinux platform_bus 0x69dca11f +vmlinux platform_bus_type 0xd95734cf +vmlinux platform_device_add 0x80ef3053 +vmlinux platform_device_add_data 0xc38798a6 +vmlinux platform_device_add_resources 0xaa33601c +vmlinux platform_device_alloc 0x04081508 +vmlinux platform_device_put 0xfb52fea6 +vmlinux platform_device_register 0xe359a402 +vmlinux platform_device_register_simple 0xe6e439ba +vmlinux platform_device_unregister 0xc5e92882 +vmlinux platform_driver_register 0x54eef68c +vmlinux platform_driver_unregister 0x4309e801 +vmlinux platform_get_irq 0xf70a6f15 +vmlinux platform_get_irq_byname 0x001e644f +vmlinux platform_get_resource 0x340422bc +vmlinux platform_get_resource_byname 0x06b503cd +vmlinux pm_active 0xebd387f6 +vmlinux pm_idle 0xf890fe7f +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pneigh_enqueue 0x3e067a8c +vmlinux pneigh_lookup 0xd29f757e +vmlinux pnp_activate_dev 0xf8bf556f +vmlinux pnp_device_attach 0x488b3f31 +vmlinux pnp_device_detach 0x9bf5defa +vmlinux pnp_disable_dev 0xccd754eb +vmlinux pnp_find_card 0xdc2f575d +vmlinux pnp_find_dev 0x5c95b9aa +vmlinux pnp_init_resource_table 0x16084899 +vmlinux pnp_is_active 0x4083279e +vmlinux pnp_manual_config_dev 0x92dc6381 +vmlinux pnp_register_card_driver 0xae9c94b1 +vmlinux pnp_register_driver 0xc13dc10c +vmlinux pnp_release_card_device 0xea66a6fb +vmlinux pnp_request_card_device 0x16445a8d +vmlinux pnp_resource_change 0xf577ec2b +vmlinux pnp_unregister_card_driver 0xfb0839f2 +vmlinux pnp_unregister_driver 0xbbab294f +vmlinux pnpbios_protocol 0xc247a07c +vmlinux poll_freewait 0xe6392f4a +vmlinux poll_initwait 0x65dce2ad +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0xd32e52c7 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x640a7078 +vmlinux posix_acl_equiv_mode 0xd8282ff0 +vmlinux posix_acl_from_mode 0x3adc15b9 +vmlinux posix_acl_from_xattr 0x85ac7f10 +vmlinux posix_acl_permission 0x434cd526 +vmlinux posix_acl_to_xattr 0x1ecb9943 +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0xf7088e6a +vmlinux posix_lock_file 0xb281c201 +vmlinux posix_lock_file_wait 0xed067791 +vmlinux posix_locks_deadlock 0xab59fec2 +vmlinux posix_test_lock 0x4a89fff6 +vmlinux posix_timer_event 0x2567166e +vmlinux posix_unblock_lock 0xab8fa3ed +vmlinux pre_task_out_intr 0x2000beb8 +vmlinux prepare_binprm 0x29d295eb +vmlinux prepare_to_wait 0xc8f02aeb +vmlinux prepare_to_wait_exclusive 0x42ca3c61 +vmlinux printk 0x1b7d4074 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0xc4395678 +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0x41ee0d7e +vmlinux proc_dointvec 0x1c0fcdda +vmlinux proc_dointvec_jiffies 0x359f7d03 +vmlinux proc_dointvec_minmax 0xa8946b16 +vmlinux proc_dointvec_ms_jiffies 0x55cd558a +vmlinux proc_dointvec_userhz_jiffies 0x5ff443b5 +vmlinux proc_dostring 0x10d687c3 +vmlinux proc_doulongvec_minmax 0xc7a27da5 +vmlinux proc_doulongvec_ms_jiffies_minmax 0xb78458e1 +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0xddf652a8 +vmlinux proc_net 0x585f8771 +vmlinux proc_net_netfilter 0x95c2ab50 +vmlinux proc_net_stat 0xfeef21dc +vmlinux proc_root 0x39cd4643 +vmlinux proc_root_driver 0xa187cbf2 +vmlinux proc_root_fs 0x8580cf5f +vmlinux proc_symlink 0x1201639e +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux proto_register 0x621b770f +vmlinux proto_unregister 0xa8386d74 +vmlinux ps2_cmd_aborted 0x20c67385 +vmlinux ps2_command 0x7eeac78f +vmlinux ps2_drain 0x006a0056 +vmlinux ps2_handle_ack 0x1825916a +vmlinux ps2_handle_response 0x738c409b +vmlinux ps2_init 0x9fd534b0 +vmlinux ps2_schedule_command 0xa5810849 +vmlinux ps2_sendbyte 0xec61e039 +vmlinux pskb_copy 0x260f9b5b +vmlinux pskb_expand_head 0x76987533 +vmlinux pskb_put 0xf80a2bb8 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0xcae0603a +vmlinux put_cmsg 0xf39bf4d9 +vmlinux put_device 0xceb3ab6a +vmlinux put_disk 0xe804bf37 +vmlinux put_driver 0x5c53b756 +vmlinux put_files_struct 0x8383ab7d +vmlinux put_io_context 0xcd204e25 +vmlinux put_page 0x80651f6f +vmlinux put_tty_driver 0x3c42effe +vmlinux put_unused_fd 0x023eb25e +vmlinux qdisc_alloc 0x2e2d5b54 +vmlinux qdisc_create_dflt 0x5c2a5136 +vmlinux qdisc_destroy 0x5ca46cff +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0xfa59c486 +vmlinux qdisc_lookup 0x18ae81ca +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0xc7629fcd +vmlinux qdisc_restart 0x3ab2e975 +vmlinux qdisc_unlock_tree 0xbd124134 +vmlinux queue_delayed_work 0x9f9f7b03 +vmlinux queue_work 0x7625764f +vmlinux radix_tree_delete 0xa34bdcd0 +vmlinux radix_tree_gang_lookup 0x883e226b +vmlinux radix_tree_gang_lookup_tag 0xcc4e9047 +vmlinux radix_tree_insert 0x7dc88ba1 +vmlinux radix_tree_lookup 0x5c2da0c3 +vmlinux radix_tree_lookup_slot 0x6bbbfb36 +vmlinux radix_tree_tag_clear 0x374a51dd +vmlinux radix_tree_tag_set 0x7e92ceb7 +vmlinux radix_tree_tagged 0xdacd0c37 +vmlinux raise_softirq_irqoff 0xd8c152cd +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0x3990ea1f +vmlinux read_cache_pages 0x4a1b5a78 +vmlinux read_dev_sector 0xd2a7a4d3 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux recalibrate_cpu_khz 0x31e76b57 +vmlinux redirty_page_for_writepage 0xc18a600e +vmlinux redraw_screen 0xf48e747d +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0x805cabd9 +vmlinux register_acpi_bus_type 0x56af6239 +vmlinux register_atm_ioctl 0xc27bdc42 +vmlinux register_binfmt 0x2118a31d +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0xc144ef5d +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x94da7a52 +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_die_notifier 0x53986488 +vmlinux register_exec_domain 0x4731b0e4 +vmlinux register_filesystem 0xdff394f4 +vmlinux register_firmware 0x711cccd3 +vmlinux register_framebuffer 0x7c50f059 +vmlinux register_gifconf 0xbbfa6842 +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_key_type 0x1bc61f46 +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0xed959c32 +vmlinux register_netdevice 0x0980988b +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x3d7133f2 +vmlinux register_posix_clock 0x52ec54e1 +vmlinux register_qdisc 0x82a7cdc4 +vmlinux register_quota_format 0xcb5401fa +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0xefeacb27 +vmlinux register_snap_client 0xffc74586 +vmlinux register_sysctl_table 0x9f1924e2 +vmlinux register_sysrq_key 0x0811b8e7 +vmlinux register_tcf_proto_ops 0xbb1b367b +vmlinux register_timer_hook 0xf5269962 +vmlinux register_wlandev 0x3001bbc1 +vmlinux registered_fb 0x1ebbc966 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x33934162 +vmlinux release_lapic_nmi 0x4129043e +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x847d4b17 +vmlinux remap_pfn_range 0xad297d8a +vmlinux remote_llseek 0xd0e08579 +vmlinux remove_arg_zero 0xcafa51ed +vmlinux remove_inode_hash 0x6351e510 +vmlinux remove_proc_entry 0xb20e69c3 +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0x70c6b2e2 +vmlinux remove_wait_queue 0x3adc4c7c +vmlinux reqsk_queue_alloc 0x3705521e +vmlinux reqsk_queue_destroy 0x4683afe9 +vmlinux request_dma 0x7054a3e4 +vmlinux request_firmware 0x89e4a3bf +vmlinux request_firmware_nowait 0xf9639bd2 +vmlinux request_irq 0x26e96637 +vmlinux request_key 0xf331d50b +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux reserve_lapic_nmi 0xb903b498 +vmlinux restore_processor_state 0x8dc6e564 +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x85902f79 +vmlinux rtc_cmos_read 0x9e64fbfe +vmlinux rtc_cmos_write 0x2def7f76 +vmlinux rtc_control 0xc9b27289 +vmlinux rtc_lock 0x811afadf +vmlinux rtc_register 0xfdab2b9c +vmlinux rtc_unregister 0xeddfe49d +vmlinux rtnetlink_links 0x14461c9b +vmlinux rtnetlink_put_metrics 0x0f8d8ffa +vmlinux rtnl 0x279debcc +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0x30bb35b6 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux rwsem_down_read_failed 0x2429c7a6 +vmlinux rwsem_down_write_failed 0xbf2fb071 +vmlinux rwsem_downgrade_wake 0x9ce9a507 +vmlinux rwsem_wake 0xd63128cc +vmlinux save_processor_state 0x75271716 +vmlinux sb_min_blocksize 0x55f36074 +vmlinux sb_set_blocksize 0xb5ef650c +vmlinux sched_setscheduler 0x36aa0166 +vmlinux schedule 0x4292364c +vmlinux schedule_delayed_work 0xfc535e10 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0x17d59d01 +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x0a3fa85c +vmlinux scm_detach_fds 0x1d575d55 +vmlinux scm_fp_dup 0x54db3213 +vmlinux scnprintf 0x28f35813 +vmlinux screen_info 0xe7bf7d05 +vmlinux scsi_cmd_ioctl 0x71a9fbe3 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux search_binary_handler 0xdee0c13e +vmlinux secpath_dup 0x19756219 +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0xc7a04310 +vmlinux securityfs_create_dir 0x6e484c75 +vmlinux securityfs_create_file 0x4ec8a011 +vmlinux securityfs_remove 0xc49c2d37 +vmlinux send_sig 0x6b67f20e +vmlinux send_sig_info 0x072309f5 +vmlinux seq_escape 0xf117eca8 +vmlinux seq_lseek 0xd8b698a0 +vmlinux seq_open 0xf05159ef +vmlinux seq_path 0xa8a6d79d +vmlinux seq_printf 0x6744e2b1 +vmlinux seq_putc 0x1fb29b9a +vmlinux seq_puts 0xa6deab07 +vmlinux seq_read 0x546a80f8 +vmlinux seq_release 0x87c0b4a3 +vmlinux seq_release_private 0xfa764c44 +vmlinux serial8250_register_port 0xf2ab4ea0 +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0x6304a082 +vmlinux serio_interrupt 0xa251d950 +vmlinux serio_open 0x1f463590 +vmlinux serio_reconnect 0x98e3ce2a +vmlinux serio_rescan 0x789b710b +vmlinux serio_unregister_child_port 0xf8473b30 +vmlinux serio_unregister_driver 0x680c15bb +vmlinux serio_unregister_port 0x4f2606a8 +vmlinux set_anon_super 0x318528df +vmlinux set_bh_page 0x15c45854 +vmlinux set_binfmt 0x7a468cc0 +vmlinux set_blocksize 0x8db6d4d0 +vmlinux set_cpus_allowed 0xbfc0fc26 +vmlinux set_current_groups 0x72fbae28 +vmlinux set_device_ro 0xc2f45fc1 +vmlinux set_disk_ro 0xe7d007f3 +vmlinux set_nmi_callback 0x2c4fa81f +vmlinux set_page_dirty 0x91df2ce9 +vmlinux set_page_dirty_lock 0x8d9ba945 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0x0e318a6b +vmlinux setlease 0x169f9af9 +vmlinux setup_arg_pages 0x53aeb702 +vmlinux sget 0x8b0287e8 +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x034bf492 +vmlinux shrink_dcache_sb 0x0da71657 +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x4d3c153f +vmlinux simple_attr_close 0x18993bb0 +vmlinux simple_attr_open 0xbb81d041 +vmlinux simple_attr_read 0x3fb36b32 +vmlinux simple_attr_write 0x96b771ad +vmlinux simple_commit_write 0x88b26b55 +vmlinux simple_dir_inode_operations 0x8063ba82 +vmlinux simple_dir_operations 0x95ef03ec +vmlinux simple_empty 0x8004a62e +vmlinux simple_fill_super 0x2e1b25ac +vmlinux simple_getattr 0x52bbce76 +vmlinux simple_link 0xa4ddc45a +vmlinux simple_lookup 0x352e23a4 +vmlinux simple_pin_fs 0xc1ea0c54 +vmlinux simple_prepare_write 0x427203ac +vmlinux simple_read_from_buffer 0x528c709d +vmlinux simple_readpage 0x570745c2 +vmlinux simple_release_fs 0x45f20bef +vmlinux simple_rename 0x1d51e9f7 +vmlinux simple_rmdir 0xba75ffe4 +vmlinux simple_statfs 0xd39a1719 +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0xc7524fd8 +vmlinux simple_transaction_get 0x2ca7243f +vmlinux simple_transaction_read 0x19e32783 +vmlinux simple_transaction_release 0x26b8f124 +vmlinux simple_unlink 0xb39c5650 +vmlinux single_open 0x582e41d2 +vmlinux single_release 0x251120a5 +vmlinux sk_alloc 0xdc925e6e +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0x9863e1ce +vmlinux sk_common_release 0x1e34e88b +vmlinux sk_free 0x71f73033 +vmlinux sk_reset_timer 0x96e927f1 +vmlinux sk_run_filter 0x4631f526 +vmlinux sk_send_sigurg 0x481d7269 +vmlinux sk_stop_timer 0x00fa2738 +vmlinux sk_stream_error 0x880f9c26 +vmlinux sk_stream_kill_queues 0x1af5a178 +vmlinux sk_stream_mem_schedule 0x70046131 +vmlinux sk_stream_rfree 0xb600b767 +vmlinux sk_stream_wait_close 0xb578a33f +vmlinux sk_stream_wait_connect 0xf497f3e9 +vmlinux sk_stream_wait_memory 0x06325d3a +vmlinux sk_stream_write_space 0x589e1285 +vmlinux sk_wait_data 0xa2ce7b0e +vmlinux skb_abort_seq_read 0xca1e110a +vmlinux skb_append 0x026414f4 +vmlinux skb_append_datato_frags 0x392f34e8 +vmlinux skb_checksum 0xa25d35b5 +vmlinux skb_checksum_help 0x5686c8d1 +vmlinux skb_clone 0x09c28ae4 +vmlinux skb_clone_fraglist 0x5479b49a +vmlinux skb_copy 0x70370d58 +vmlinux skb_copy_and_csum_bits 0xcac33da2 +vmlinux skb_copy_and_csum_datagram_iovec 0x05db7f4c +vmlinux skb_copy_and_csum_dev 0xa5de3adf +vmlinux skb_copy_bits 0xe401c8fd +vmlinux skb_copy_datagram_iovec 0xacf219bc +vmlinux skb_copy_expand 0xcd4cdd46 +vmlinux skb_cow_data 0xd3df7292 +vmlinux skb_dequeue 0xcb8d40a3 +vmlinux skb_dequeue_tail 0x7b635e24 +vmlinux skb_find_text 0x91b43457 +vmlinux skb_free_datagram 0xae3e09b0 +vmlinux skb_icv_walk 0x5d1cc55b +vmlinux skb_insert 0x385c0713 +vmlinux skb_make_writable 0xc380f93d +vmlinux skb_migrate 0x98cf2db8 +vmlinux skb_over_panic 0x462987cd +vmlinux skb_pad 0x134cadc9 +vmlinux skb_prepare_seq_read 0x0bd35038 +vmlinux skb_queue_head 0x87ffbfd7 +vmlinux skb_queue_purge 0x0593215c +vmlinux skb_queue_tail 0xf300a717 +vmlinux skb_realloc_headroom 0x77ed8ee6 +vmlinux skb_recv_datagram 0xe9e9ac37 +vmlinux skb_seq_read 0xda7788cd +vmlinux skb_split 0xaf995791 +vmlinux skb_store_bits 0xbacac168 +vmlinux skb_to_sgvec 0xb66d2009 +vmlinux skb_under_panic 0x73df7599 +vmlinux skb_unlink 0xea5cad7c +vmlinux sleep_on 0x1a7fdad0 +vmlinux sleep_on_timeout 0x8dd8f6fb +vmlinux smp_call_function 0x0014bfd1 +vmlinux smp_num_siblings 0xd1f6c5f3 +vmlinux snprintf 0x025da070 +vmlinux sock_alloc_send_skb 0x76366251 +vmlinux sock_common_getsockopt 0xb169f861 +vmlinux sock_common_recvmsg 0xfcca5b75 +vmlinux sock_common_setsockopt 0xc0785e0d +vmlinux sock_create 0x12757b4a +vmlinux sock_create_kern 0x60600dc0 +vmlinux sock_create_lite 0xbc524e89 +vmlinux sock_enable_timestamp 0x454dfa08 +vmlinux sock_get_timestamp 0x74db1f21 +vmlinux sock_i_ino 0xfb2e291e +vmlinux sock_i_uid 0xc802e703 +vmlinux sock_init_data 0x721fdb7d +vmlinux sock_kfree_s 0xf2ce058b +vmlinux sock_kmalloc 0x7af8ca18 +vmlinux sock_map_fd 0x8a09defa +vmlinux sock_no_accept 0xf675c01e +vmlinux sock_no_bind 0x033a5a89 +vmlinux sock_no_connect 0x5090f5aa +vmlinux sock_no_getname 0x07a307d4 +vmlinux sock_no_getsockopt 0xf29ab1cb +vmlinux sock_no_ioctl 0x195b6388 +vmlinux sock_no_listen 0x36bc1b8e +vmlinux sock_no_mmap 0x63a74926 +vmlinux sock_no_poll 0x88a24650 +vmlinux sock_no_recvmsg 0x5047da79 +vmlinux sock_no_sendmsg 0x5b72f9c1 +vmlinux sock_no_sendpage 0x9f8518fd +vmlinux sock_no_setsockopt 0xdf0b808c +vmlinux sock_no_shutdown 0x2b1706f1 +vmlinux sock_no_socketpair 0xda755464 +vmlinux sock_recvmsg 0xaeabda32 +vmlinux sock_register 0x418228a1 +vmlinux sock_release 0xd2689053 +vmlinux sock_rfree 0x1eb00b31 +vmlinux sock_sendmsg 0x9cfc722e +vmlinux sock_setsockopt 0xe5ff19c8 +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0x32c81df5 +vmlinux sock_wfree 0xa6bce773 +vmlinux sock_wmalloc 0x09937967 +vmlinux sockfd_lookup 0x8e9665c1 +vmlinux sonet_copy_stats 0x89195dc3 +vmlinux sonet_subtract_stats 0x1a24e5e2 +vmlinux sort 0x310917fe +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux start_tty 0x18c0d66f +vmlinux steal_locks 0xb098249a +vmlinux stop_tty 0x33dfa195 +vmlinux strcspn 0x6c1ce5ce +vmlinux strlcat 0xdd0a2ba2 +vmlinux strlcpy 0x73e20c1c +vmlinux strnchr 0x0a3131f6 +vmlinux strncpy_from_user 0x245ec8e8 +vmlinux strnicmp 0x4e830a3e +vmlinux strnlen_user 0xbcc308bb +vmlinux strpbrk 0x9a1dfd65 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0xc7ec6c27 +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0x169375a4 +vmlinux submit_bh 0xcd948048 +vmlinux submit_bio 0xa986f7b1 +vmlinux subsys_create_file 0x7f2a1644 +vmlinux subsys_remove_file 0x73041fe7 +vmlinux subsystem_init 0xc8315051 +vmlinux subsystem_register 0x95274ccf +vmlinux subsystem_unregister 0xf97b421a +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0xba640aa6 +vmlinux switch_APIC_timer_to_ipi 0xa5c79544 +vmlinux switch_ipi_to_APIC_timer 0xac7eb84c +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0xe79fa1fb +vmlinux sync_dirty_buffer 0x22635ef8 +vmlinux sync_inode 0x6ddb1812 +vmlinux sync_mapping_buffers 0xabe0a622 +vmlinux sync_page_range 0x9a272a64 +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0x268cc6a2 +vmlinux sys_open 0x0359f865 +vmlinux sys_read 0x16bd3948 +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0x4c7a8f68 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0x10529c42 +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0xa1ac6cdb +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0xc29af599 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0xeea4c695 +vmlinux sysdev_class_unregister 0x1d32b14f +vmlinux sysdev_create_file 0x3e301bd0 +vmlinux sysdev_driver_register 0x59124e9c +vmlinux sysdev_driver_unregister 0xba3ed418 +vmlinux sysdev_register 0xea92e7f8 +vmlinux sysdev_remove_file 0xe81c1ad6 +vmlinux sysdev_unregister 0x99c7a04c +vmlinux sysfs_chmod_file 0xa8f01f12 +vmlinux sysfs_create_bin_file 0x69afa8a2 +vmlinux sysfs_create_dir 0x07fa3a2f +vmlinux sysfs_create_file 0xea910b0a +vmlinux sysfs_create_group 0xb246ff0a +vmlinux sysfs_create_link 0x9a146db2 +vmlinux sysfs_remove_bin_file 0x3e1e1af3 +vmlinux sysfs_remove_dir 0xda400342 +vmlinux sysfs_remove_file 0xc49dd50a +vmlinux sysfs_remove_group 0xd19ac87f +vmlinux sysfs_remove_link 0x5635eff1 +vmlinux sysfs_rename_dir 0x68bac082 +vmlinux sysfs_update_file 0x9a2667b0 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0xf0bf88a3 +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0x240b976a +vmlinux task_nice 0x2c4dbfe2 +vmlinux task_no_data_intr 0x68502d58 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0xc308139d +vmlinux tc_classify 0xa07cb5f0 +vmlinux tcf_em_register 0x3834bb84 +vmlinux tcf_em_tree_destroy 0xe3353c98 +vmlinux tcf_em_tree_dump 0x66f83979 +vmlinux tcf_em_tree_validate 0x974f2153 +vmlinux tcf_em_unregister 0xab4b8fdb +vmlinux tcf_exts_change 0xfafb0b46 +vmlinux tcf_exts_destroy 0x8337101e +vmlinux tcf_exts_dump 0x29826baa +vmlinux tcf_exts_dump_stats 0xcbb9af08 +vmlinux tcf_exts_validate 0xe2d2538f +vmlinux tcf_police 0xd32073cc +vmlinux tcf_police_destroy 0xbc4b72c6 +vmlinux tcf_police_dump 0xdc754cd4 +vmlinux tcf_police_dump_stats 0x96743c59 +vmlinux tcf_police_hash 0x8493d6e7 +vmlinux tcf_police_ht 0x8d894736 +vmlinux tcf_police_locate 0xf7c6bc6b +vmlinux tcf_police_lookup 0x6c6e4ce9 +vmlinux tcf_police_new_index 0x7ae0f6c9 +vmlinux tcp_check_req 0xaa648345 +vmlinux tcp_child_process 0x626b7eb4 +vmlinux tcp_close 0xa82b9ade +vmlinux tcp_connect 0x2e92d9b5 +vmlinux tcp_create_openreq_child 0x78238210 +vmlinux tcp_death_row 0xc4e4dfe4 +vmlinux tcp_disconnect 0x39c16525 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x5ca218ec +vmlinux tcp_getsockopt 0x5a519f54 +vmlinux tcp_hashinfo 0xb6fdbde1 +vmlinux tcp_init_congestion_ops 0x1e5636f5 +vmlinux tcp_init_xmit_timers 0x3a9ef08b +vmlinux tcp_ioctl 0x9187fa4d +vmlinux tcp_make_synack 0x6ab2694e +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0xf95981ea +vmlinux tcp_poll 0xf882eae6 +vmlinux tcp_proc_register 0xdf7caf5b +vmlinux tcp_proc_unregister 0x9d0a257b +vmlinux tcp_prot 0x6e564210 +vmlinux tcp_rcv_established 0x01f1ee2a +vmlinux tcp_rcv_state_process 0xcbd75ff7 +vmlinux tcp_read_sock 0xe914c020 +vmlinux tcp_recvmsg 0xb1d48449 +vmlinux tcp_register_congestion_control 0xfff99096 +vmlinux tcp_reno_cong_avoid 0x754f2d8b +vmlinux tcp_reno_min_cwnd 0x15e09ec0 +vmlinux tcp_reno_ssthresh 0xaf258f01 +vmlinux tcp_sendmsg 0xe13bbbe7 +vmlinux tcp_sendpage 0x7ae0002b +vmlinux tcp_setsockopt 0x2826075c +vmlinux tcp_shutdown 0x22f69475 +vmlinux tcp_simple_retransmit 0x8047b016 +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0x39e5e635 +vmlinux tcp_timewait_state_process 0x2a1c08d3 +vmlinux tcp_unhash 0x9bfd6ed6 +vmlinux tcp_unregister_congestion_control 0x42fecadd +vmlinux tcp_v4_conn_request 0x9e00e095 +vmlinux tcp_v4_connect 0xd030e0a2 +vmlinux tcp_v4_destroy_sock 0x3b0135b3 +vmlinux tcp_v4_do_rcv 0x5b7ae823 +vmlinux tcp_v4_remember_stamp 0x2d8b0321 +vmlinux tcp_v4_send_check 0xd6046c03 +vmlinux tcp_v4_syn_recv_sock 0x3c2958da +vmlinux test_clear_page_dirty 0x464be833 +vmlinux test_set_page_writeback 0xad4ec7b2 +vmlinux textsearch_destroy 0x628cf3b5 +vmlinux textsearch_find_continuous 0x7035517d +vmlinux textsearch_prepare 0x5ddc93de +vmlinux textsearch_register 0x9421b5fb +vmlinux textsearch_unregister 0x19bc2093 +vmlinux thaw_bdev 0xa21acc94 +vmlinux timespec_trunc 0xc045ad4e +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0x5d70dee9 +vmlinux tr_type_trans 0xf541b6a6 +vmlinux transport_add_device 0xf5655ebe +vmlinux transport_class_register 0xa2a8568e +vmlinux transport_class_unregister 0x05874a44 +vmlinux transport_configure_device 0x2175f461 +vmlinux transport_destroy_device 0x7ed1fd82 +vmlinux transport_remove_device 0x9e45044b +vmlinux transport_setup_device 0x4b05443b +vmlinux truncate_inode_pages 0x67bf3a2a +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0xb48ca78f +vmlinux try_to_release_page 0x0134046e +vmlinux tty_check_change 0x233bcb4a +vmlinux tty_flip_buffer_push 0x7fa41033 +vmlinux tty_get_baud_rate 0xecdfcd8b +vmlinux tty_hangup 0x494bf2b0 +vmlinux tty_hung_up_p 0xbe659b87 +vmlinux tty_ldisc_deref 0x6306dbf5 +vmlinux tty_ldisc_flush 0x4a348c54 +vmlinux tty_ldisc_get 0x60f593e2 +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x4e879348 +vmlinux tty_ldisc_ref_wait 0xb09e5017 +vmlinux tty_name 0x2fa09a05 +vmlinux tty_register_device 0xc82f91ee +vmlinux tty_register_driver 0xc999beb5 +vmlinux tty_register_ldisc 0x18367a00 +vmlinux tty_set_operations 0xd2829dd2 +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0x43f11389 +vmlinux tty_unregister_driver 0x413ad2a9 +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0xe6219a93 +vmlinux tty_wait_until_sent 0x52622348 +vmlinux tty_wakeup 0xd44e1931 +vmlinux uart_add_one_port 0x6ccb201c +vmlinux uart_get_baud_rate 0xf6d9d823 +vmlinux uart_get_divisor 0xd1b7ad05 +vmlinux uart_match_port 0x64030290 +vmlinux uart_register_driver 0x27b16f7f +vmlinux uart_remove_one_port 0x1cd3afa6 +vmlinux uart_resume_port 0x0aabe308 +vmlinux uart_suspend_port 0xf49ba368 +vmlinux uart_unregister_driver 0xbd55e23c +vmlinux uart_update_timeout 0x187b91f2 +vmlinux uart_write_wakeup 0x965839e1 +vmlinux udp_disconnect 0x61bf00d2 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0xbe485f4e +vmlinux udp_ioctl 0x0f9ccfca +vmlinux udp_poll 0xb69f490c +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x4dffb867 +vmlinux udp_proc_unregister 0x22c56813 +vmlinux udp_prot 0x73e85f4a +vmlinux udp_sendmsg 0x52201207 +vmlinux uhci_check_and_reset_hc 0xbd8dfa2b +vmlinux uhci_reset_hc 0xe91792d2 +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unload_nls 0xe3c0be6b +vmlinux unlock_buffer 0xf498e6ad +vmlinux unlock_cpu_hotplug 0xdbb6cbd9 +vmlinux unlock_kernel 0x5dfe8f1a +vmlinux unlock_new_inode 0x2946ff01 +vmlinux unlock_page 0x414937c8 +vmlinux unlock_rename 0xf7b00aef +vmlinux unmap_mapping_range 0x0f2e3282 +vmlinux unmap_underlying_metadata 0xef558f84 +vmlinux unregister_8022_client 0x5daecec9 +vmlinux unregister_acpi_bus_type 0x78d9f988 +vmlinux unregister_binfmt 0xcf6146e5 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0x8b55fe22 +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_exec_domain 0xb610b9f7 +vmlinux unregister_filesystem 0x2bb958b6 +vmlinux unregister_framebuffer 0xbfca94db +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_key_type 0x06a7a038 +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0x07d51a9d +vmlinux unregister_netdevice 0xc1c77357 +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0x70ebb60d +vmlinux unregister_qdisc 0x61e16835 +vmlinux unregister_quota_format 0xf6d8050a +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0xce36f178 +vmlinux unregister_snap_client 0xf2acbb64 +vmlinux unregister_sysctl_table 0x5d343df3 +vmlinux unregister_sysrq_key 0xd441b12f +vmlinux unregister_tcf_proto_ops 0xc46fad0d +vmlinux unregister_timer_hook 0x3fa545f8 +vmlinux unregister_wlandev 0x38941d29 +vmlinux unset_nmi_callback 0x2ef9373e +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0x3ed9665f +vmlinux update_region 0x77708c86 +vmlinux user_describe 0xc9913d25 +vmlinux user_destroy 0xba123a4b +vmlinux user_duplicate 0x3fe417c8 +vmlinux user_instantiate 0xb8852997 +vmlinux user_match 0xb754c86a +vmlinux user_read 0x39b22d34 +vmlinux user_update 0x600c539e +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0x4b7b7b96 +vmlinux vc_cons 0x0a9ce743 +vmlinux vc_resize 0x805cb832 +vmlinux vcc_hash 0x2cc2d52d +vmlinux vcc_insert_socket 0x233992bc +vmlinux vcc_release_async 0x204d82fb +vmlinux vcc_sklist_lock 0x1e0dfcf0 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0x83eaf2e8 +vmlinux vfs_follow_link 0x4c4bae64 +vmlinux vfs_fstat 0xcb841136 +vmlinux vfs_get_dqblk 0x823e6566 +vmlinux vfs_get_dqinfo 0x49f6034b +vmlinux vfs_getattr 0x7ee16061 +vmlinux vfs_link 0x17c7e424 +vmlinux vfs_llseek 0x38833121 +vmlinux vfs_lstat 0x91d803ff +vmlinux vfs_mkdir 0xc6183d4a +vmlinux vfs_mknod 0x9653494b +vmlinux vfs_permission 0x0b468800 +vmlinux vfs_quota_off 0x89a5ed92 +vmlinux vfs_quota_on 0x31699757 +vmlinux vfs_quota_on_mount 0xfcd83390 +vmlinux vfs_quota_sync 0x59ad80b1 +vmlinux vfs_read 0xb77c6882 +vmlinux vfs_readdir 0x48f477e9 +vmlinux vfs_readlink 0xf66d4f78 +vmlinux vfs_readv 0x76b9d80c +vmlinux vfs_rename 0x95e138df +vmlinux vfs_rmdir 0xeb5f6e3d +vmlinux vfs_set_dqblk 0x7c1176be +vmlinux vfs_set_dqinfo 0x0cd389b4 +vmlinux vfs_stat 0x4e193f40 +vmlinux vfs_statfs 0x7d3f75dd +vmlinux vfs_symlink 0xfaaa38f5 +vmlinux vfs_unlink 0x77d5b003 +vmlinux vfs_write 0xb662c6a5 +vmlinux vfs_writev 0x702d7653 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x75c6c4b4 +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0x892c42f4 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0xb00cf3c6 +vmlinux vmtruncate 0x0844ac91 +vmlinux vprintk 0xaec4759f +vmlinux vscnprintf 0x0ead5073 +vmlinux vsnprintf 0x6989a769 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0xa34eb072 +vmlinux wait_for_completion_interruptible 0xdebaee08 +vmlinux wait_for_completion_interruptible_timeout 0x78599654 +vmlinux wait_for_completion_timeout 0x736bb1ef +vmlinux wait_on_page_bit 0x7d8c5905 +vmlinux wait_on_sync_kiocb 0xca32755f +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xd7e7ca24 +vmlinux wake_up_process 0x1e4b7e1c +vmlinux wireless_send_event 0xe6127fa8 +vmlinux wireless_spy_update 0x629bfa5e +vmlinux wlan_setup 0x4bf99ab9 +vmlinux wlan_unsetup 0x6489d5d6 +vmlinux write_inode_now 0xae018d59 +vmlinux write_one_page 0x936b68fc +vmlinux x86_acpiid_to_apicid 0x062bdb0e +vmlinux x86_cpu_to_apicid 0x8874b79e +vmlinux xfrm4_rcv 0x2f13f0f6 +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0x5fb64d7c +vmlinux xfrm_bundle_ok 0xd6f10a6b +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0xc0a6cadc +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0x85cf2e2e +vmlinux xfrm_dst_lookup 0xb8efd0e0 +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0x8ee01f89 +vmlinux xfrm_find_acq_byseq 0x6214eab7 +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0xcd034e56 +vmlinux xfrm_init_state 0x3e533f61 +vmlinux xfrm_lookup 0x0e91d26d +vmlinux xfrm_parse_spi 0x6a14d117 +vmlinux xfrm_policy_alloc 0x7fc81dc4 +vmlinux xfrm_policy_byid 0x52bb572c +vmlinux xfrm_policy_bysel 0x7396b701 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0xc999823e +vmlinux xfrm_policy_list 0xe4fb701b +vmlinux xfrm_policy_register_afinfo 0x1e98fc5e +vmlinux xfrm_policy_unregister_afinfo 0x2af59959 +vmlinux xfrm_policy_walk 0x9fe9a9ac +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0xf3080bb4 +vmlinux xfrm_register_type 0xd591cd77 +vmlinux xfrm_replay_advance 0xf1940d96 +vmlinux xfrm_replay_check 0x76bf583e +vmlinux xfrm_state_add 0x38f82065 +vmlinux xfrm_state_alloc 0x14325cb9 +vmlinux xfrm_state_check 0x354729b2 +vmlinux xfrm_state_check_expire 0x6285d1b4 +vmlinux xfrm_state_delete 0x2ac05c85 +vmlinux xfrm_state_delete_tunnel 0x35dd11da +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0x266961dd +vmlinux xfrm_state_lookup 0xb0779bc2 +vmlinux xfrm_state_mtu 0x24fafe3f +vmlinux xfrm_state_register_afinfo 0x1285e0dd +vmlinux xfrm_state_unregister_afinfo 0x894f7a47 +vmlinux xfrm_state_update 0x040961db +vmlinux xfrm_state_walk 0xb6ea04ae +vmlinux xfrm_unregister_km 0x2d8f7a04 +vmlinux xfrm_unregister_type 0xa9cac860 +vmlinux xfrm_user_policy 0xa4111aea +vmlinux xrlim_allow 0x1d4fc374 +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xe2628d76 +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x21838903 +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0x6a9a9678 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/i386/686 +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/i386/686 @@ -0,0 +1,5684 @@ +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_detect_processor 0x16836e04 +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_get_freqs 0xb9c4330f +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_get_processor_frequency 0x4cdb4bd0 +arch/i386/kernel/scx200 scx200_cb_base 0x907665bd +arch/i386/kernel/scx200 scx200_gpio_base 0x254e5667 +arch/i386/kernel/scx200 scx200_gpio_configure 0x80c65a79 +arch/i386/kernel/scx200 scx200_gpio_shadow 0x9272bc53 +drivers/acpi/ac acpi_get_ac_dir 0x445c83dc +drivers/acpi/battery acpi_get_battery_dir 0xf895f18d +drivers/acpi/i2c_acpi_ec acpi_get_ec_hc 0xff6090b6 +drivers/acpi/processor acpi_processor_notify_smm 0xb62754a1 +drivers/acpi/processor acpi_processor_register_performance 0x858fc2e6 +drivers/acpi/processor acpi_processor_set_thermal_limit 0xe8a3605f +drivers/acpi/processor acpi_processor_unregister_performance 0x70b3538a +drivers/atm/suni suni_init 0xfffc62ba +drivers/atm/uPD98402 uPD98402_init 0x3aa894b2 +drivers/block/loop loop_register_transfer 0x9b099821 +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0xc22f4d6c +drivers/block/paride/paride pi_disconnect 0xd2b95b61 +drivers/block/paride/paride pi_do_claimed 0xea913c5f +drivers/block/paride/paride pi_init 0xbb21a224 +drivers/block/paride/paride pi_read_block 0x0b4727a9 +drivers/block/paride/paride pi_read_regr 0xe1d33f25 +drivers/block/paride/paride pi_register 0xc62fd559 +drivers/block/paride/paride pi_release 0xaf2eb4bf +drivers/block/paride/paride pi_schedule_claimed 0x80036e4c +drivers/block/paride/paride pi_unregister 0x0e176970 +drivers/block/paride/paride pi_write_block 0xe16be1c0 +drivers/block/paride/paride pi_write_regr 0xf8363942 +drivers/cdrom/cdrom cdrom_get_last_written 0xc795b45b +drivers/cdrom/cdrom cdrom_get_media_event 0xfbb91b6f +drivers/cdrom/cdrom cdrom_ioctl 0x382b9ca5 +drivers/cdrom/cdrom cdrom_media_changed 0x0a39b2d7 +drivers/cdrom/cdrom cdrom_mode_select 0x9d1dabe7 +drivers/cdrom/cdrom cdrom_mode_sense 0x44fbeb64 +drivers/cdrom/cdrom cdrom_number_of_slots 0x878ffc6b +drivers/cdrom/cdrom cdrom_open 0x77eaea66 +drivers/cdrom/cdrom cdrom_release 0x8c30329d +drivers/cdrom/cdrom init_cdrom_command 0x4f476e96 +drivers/cdrom/cdrom register_cdrom 0xd948a500 +drivers/cdrom/cdrom unregister_cdrom 0x9d49a883 +drivers/char/agp/agpgart agp3_generic_cleanup 0xc2424641 +drivers/char/agp/agpgart agp3_generic_configure 0x4b085dbf +drivers/char/agp/agpgart agp3_generic_fetch_size 0xde9b17ed +drivers/char/agp/agpgart agp3_generic_sizes 0x546264cf +drivers/char/agp/agpgart agp3_generic_tlbflush 0x2dba03b6 +drivers/char/agp/agpgart agp_add_bridge 0x9dc8a6d2 +drivers/char/agp/agpgart agp_alloc_bridge 0x37d6b3cd +drivers/char/agp/agpgart agp_allocate_memory 0x424aa7b5 +drivers/char/agp/agpgart agp_backend_acquire 0xaddc56ef +drivers/char/agp/agpgart agp_backend_release 0x05a59f57 +drivers/char/agp/agpgart agp_bind_memory 0x2b49cbe8 +drivers/char/agp/agpgart agp_bridge 0x392a063d +drivers/char/agp/agpgart agp_bridges 0x673f815e +drivers/char/agp/agpgart agp_collect_device_status 0x19da11a6 +drivers/char/agp/agpgart agp_copy_info 0x09c891d2 +drivers/char/agp/agpgart agp_create_memory 0xbfae3a7f +drivers/char/agp/agpgart agp_device_command 0xe6d5c272 +drivers/char/agp/agpgart agp_enable 0x6024c317 +drivers/char/agp/agpgart agp_find_bridge 0x0a1a13d2 +drivers/char/agp/agpgart agp_free_key 0xd0fef3b2 +drivers/char/agp/agpgart agp_free_memory 0x66b4e0b1 +drivers/char/agp/agpgart agp_generic_alloc_by_type 0x6b721b6e +drivers/char/agp/agpgart agp_generic_alloc_page 0x9d1d973f +drivers/char/agp/agpgart agp_generic_create_gatt_table 0x2ec2b09a +drivers/char/agp/agpgart agp_generic_destroy_page 0xbba27749 +drivers/char/agp/agpgart agp_generic_enable 0x6b516bb2 +drivers/char/agp/agpgart agp_generic_free_by_type 0x087bf818 +drivers/char/agp/agpgart agp_generic_free_gatt_table 0x3b1a0781 +drivers/char/agp/agpgart agp_generic_insert_memory 0x3658f7d0 +drivers/char/agp/agpgart agp_generic_mask_memory 0xa8375a81 +drivers/char/agp/agpgart agp_generic_remove_memory 0xb1f6b368 +drivers/char/agp/agpgart agp_memory_reserved 0xe089cfcc +drivers/char/agp/agpgart agp_num_entries 0xd6feefa5 +drivers/char/agp/agpgart agp_off 0x7538b132 +drivers/char/agp/agpgart agp_put_bridge 0x7439cecf +drivers/char/agp/agpgart agp_remove_bridge 0x8b3dc9b9 +drivers/char/agp/agpgart agp_try_unsupported_boot 0xc5d9c46c +drivers/char/agp/agpgart agp_unbind_memory 0x24e5c470 +drivers/char/agp/agpgart get_agp_version 0x57a616ee +drivers/char/agp/agpgart global_cache_flush 0xa4d4f0e6 +drivers/char/agp/agpgart map_page_into_agp 0xb37c933d +drivers/char/agp/agpgart unmap_page_from_agp 0x5e3e627f +drivers/char/drm/drm drm_addbufs_agp 0x277dbefd +drivers/char/drm/drm drm_addbufs_fb 0x4805e2c7 +drivers/char/drm/drm drm_addbufs_pci 0xc14edd4f +drivers/char/drm/drm drm_addmap 0x89117717 +drivers/char/drm/drm drm_agp_acquire 0x6aac2d04 +drivers/char/drm/drm drm_agp_alloc 0x94db0c19 +drivers/char/drm/drm drm_agp_bind 0x7be94c53 +drivers/char/drm/drm drm_agp_bind_memory 0x47899393 +drivers/char/drm/drm drm_agp_enable 0x869baf26 +drivers/char/drm/drm drm_agp_free 0xe733d787 +drivers/char/drm/drm drm_agp_info 0xf500cea1 +drivers/char/drm/drm drm_agp_release 0x59034c1b +drivers/char/drm/drm drm_agp_unbind 0x3d65a57a +drivers/char/drm/drm drm_ati_pcigart_cleanup 0xe60081ac +drivers/char/drm/drm drm_ati_pcigart_init 0x7cb68409 +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0xb70e230c +drivers/char/drm/drm drm_core_reclaim_buffers 0xa3b76ef0 +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0x176b5435 +drivers/char/drm/drm drm_fasync 0x179eca38 +drivers/char/drm/drm drm_get_dev 0x8371dc3b +drivers/char/drm/drm drm_get_resource_len 0xde852837 +drivers/char/drm/drm drm_get_resource_start 0xf2f07d76 +drivers/char/drm/drm drm_init 0xace240b8 +drivers/char/drm/drm drm_ioctl 0x7f7f3d6e +drivers/char/drm/drm drm_irq_uninstall 0x579e40fe +drivers/char/drm/drm drm_mmap 0x5cb9fdee +drivers/char/drm/drm drm_open 0x7f6ba8d9 +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0x05c0a7d0 +drivers/char/drm/drm drm_pci_free 0x42850e18 +drivers/char/drm/drm drm_poll 0x5ec6644f +drivers/char/drm/drm drm_release 0x440b51d2 +drivers/char/drm/drm drm_rmmap 0x66ea9e2c +drivers/char/drm/drm drm_rmmap_locked 0xb922b4e9 +drivers/char/drm/drm drm_vbl_send_signals 0xd62a2449 +drivers/char/generic_serial gs_block_til_ready 0xca32c8c4 +drivers/char/generic_serial gs_chars_in_buffer 0xb78d040f +drivers/char/generic_serial gs_close 0xc28cf901 +drivers/char/generic_serial gs_flush_buffer 0x52259df5 +drivers/char/generic_serial gs_flush_chars 0xbd111e8f +drivers/char/generic_serial gs_getserial 0x523a5460 +drivers/char/generic_serial gs_got_break 0xcc90835e +drivers/char/generic_serial gs_hangup 0xcbb949ac +drivers/char/generic_serial gs_init_port 0x9d735f55 +drivers/char/generic_serial gs_put_char 0x32f3551e +drivers/char/generic_serial gs_set_termios 0xce797915 +drivers/char/generic_serial gs_setserial 0x5f0f08b4 +drivers/char/generic_serial gs_start 0x400d1149 +drivers/char/generic_serial gs_stop 0x656bf605 +drivers/char/generic_serial gs_write 0x835a730e +drivers/char/generic_serial gs_write_room 0xab1c3a28 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0xffe67535 +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0x1b45c5b4 +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0xe60b0ab4 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0xfb640aa5 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0x70369dfd +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0x961d1a82 +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0xc62d846c +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0x3ad0f028 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0x2006b7e8 +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0xf89f1014 +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0xf1b875b6 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0xbef38a96 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0xc3cc5f2a +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0x012681a4 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0x6f0eb5b6 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0x00c0420b +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0xf3edefd1 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0x7268baaa +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0x4957ed5b +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0xff66bab9 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0x74d479ab +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0xddfa227a +drivers/char/nvram __nvram_check_checksum 0x2adec1e0 +drivers/char/nvram __nvram_read_byte 0x17ff2c1d +drivers/char/nvram __nvram_write_byte 0xa8813189 +drivers/char/nvram nvram_check_checksum 0x7da28f12 +drivers/char/nvram nvram_read_byte 0x0f28cb91 +drivers/char/nvram nvram_write_byte 0x9ce3f83f +drivers/char/sonypi sonypi_camera_command 0x89590f57 +drivers/char/tpm/tpm tpm_open 0xbf2a5928 +drivers/char/tpm/tpm tpm_pm_resume 0x89a9aae3 +drivers/char/tpm/tpm tpm_pm_suspend 0xccd348b9 +drivers/char/tpm/tpm tpm_read 0x36b68593 +drivers/char/tpm/tpm tpm_register_hardware 0x8cede389 +drivers/char/tpm/tpm tpm_release 0x1918b285 +drivers/char/tpm/tpm tpm_remove_hardware 0x74ce3181 +drivers/char/tpm/tpm tpm_show_caps 0x3cbe8064 +drivers/char/tpm/tpm tpm_show_pcrs 0x588cdc21 +drivers/char/tpm/tpm tpm_show_pubek 0x8c08eec8 +drivers/char/tpm/tpm tpm_store_cancel 0xb57b849d +drivers/char/tpm/tpm tpm_write 0x43db2fa5 +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0x969e5dfd +drivers/cpufreq/freq_table cpufreq_freq_attr_scaling_available_freqs 0xde7de639 +drivers/cpufreq/freq_table cpufreq_frequency_get_table 0x2f47d8c7 +drivers/cpufreq/freq_table cpufreq_frequency_table_cpuinfo 0xcb6980a8 +drivers/cpufreq/freq_table cpufreq_frequency_table_get_attr 0x706b3a33 +drivers/cpufreq/freq_table cpufreq_frequency_table_put_attr 0x7ae1ae8e +drivers/cpufreq/freq_table cpufreq_frequency_table_target 0x390275a1 +drivers/cpufreq/freq_table cpufreq_frequency_table_verify 0x6d3aa8e5 +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-bit i2c_bit_add_bus 0x942be693 +drivers/i2c/algos/i2c-algo-bit i2c_bit_del_bus 0xd53078cf +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0x60b39ec1 +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0x21a8009d +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0xec1fa64d +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0xad043811 +drivers/i2c/busses/i2c-amd756 amd756_smbus 0x829fb994 +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0xb86ca21d +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0xb9d54f1d +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/i2c/i2c-core i2c_adapter_class 0x11cbb437 +drivers/i2c/i2c-core i2c_adapter_dev_release 0x07e8f5ed +drivers/i2c/i2c-core i2c_adapter_driver 0xb9ac9eef +drivers/i2c/i2c-core i2c_add_adapter 0xcb89ef52 +drivers/i2c/i2c-core i2c_add_driver 0xa04a95cc +drivers/i2c/i2c-core i2c_attach_client 0x59c1303b +drivers/i2c/i2c-core i2c_bus_type 0xa8474e2b +drivers/i2c/i2c-core i2c_check_addr 0x272686fe +drivers/i2c/i2c-core i2c_clients_command 0x852d8c3e +drivers/i2c/i2c-core i2c_control 0xce0c0c09 +drivers/i2c/i2c-core i2c_del_adapter 0x05afd560 +drivers/i2c/i2c-core i2c_del_driver 0xcc289d22 +drivers/i2c/i2c-core i2c_detach_client 0xbd5248b2 +drivers/i2c/i2c-core i2c_get_adapter 0x6a513a4d +drivers/i2c/i2c-core i2c_master_recv 0xd061b038 +drivers/i2c/i2c-core i2c_master_send 0x3986acf1 +drivers/i2c/i2c-core i2c_probe 0xf56fd014 +drivers/i2c/i2c-core i2c_put_adapter 0x8208f077 +drivers/i2c/i2c-core i2c_release_client 0xb99a24be +drivers/i2c/i2c-core i2c_smbus_read_byte 0xca0b05bc +drivers/i2c/i2c-core i2c_smbus_read_byte_data 0xaf4fd0b0 +drivers/i2c/i2c-core i2c_smbus_read_i2c_block_data 0x66d95630 +drivers/i2c/i2c-core i2c_smbus_read_word_data 0x77ca926e +drivers/i2c/i2c-core i2c_smbus_write_block_data 0x539d85b8 +drivers/i2c/i2c-core i2c_smbus_write_byte 0x2909ce4c +drivers/i2c/i2c-core i2c_smbus_write_byte_data 0xc104988c +drivers/i2c/i2c-core i2c_smbus_write_quick 0xe1ccea81 +drivers/i2c/i2c-core i2c_smbus_write_word_data 0xf8c8bad5 +drivers/i2c/i2c-core i2c_smbus_xfer 0xdb9af3b6 +drivers/i2c/i2c-core i2c_transfer 0x53232078 +drivers/i2c/i2c-core i2c_use_client 0x9421e271 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0x9a262204 +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x4358bad7 +drivers/ieee1394/ieee1394 csr1212_read 0x85bc1770 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x72acaf32 +drivers/ieee1394/ieee1394 dma_prog_region_free 0x9a9e0422 +drivers/ieee1394/ieee1394 dma_prog_region_init 0xf9219543 +drivers/ieee1394/ieee1394 dma_region_alloc 0x73370014 +drivers/ieee1394/ieee1394 dma_region_free 0x52f0b3d9 +drivers/ieee1394/ieee1394 dma_region_init 0x86b8b1a1 +drivers/ieee1394/ieee1394 dma_region_mmap 0x7a77a660 +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0xa35f0201 +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0xbfefd4fb +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x9d9cb0cc +drivers/ieee1394/ieee1394 highlevel_host_reset 0x4c1e322d +drivers/ieee1394/ieee1394 hpsb_add_host 0x85cb6aff +drivers/ieee1394/ieee1394 hpsb_alloc_host 0xc964904b +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0x32a014ca +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0xcd80a6c8 +drivers/ieee1394/ieee1394 hpsb_bus_reset 0x1f4b3a97 +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0x48858f13 +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0x5dea80eb +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0xa8e81649 +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0x99e612aa +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0xb0671290 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0x39451975 +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0x59fe59ae +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0xf7ef717d +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0xef64142c +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0x01481ff0 +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0x8f7aa935 +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0xf1b6f40d +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0x09b0c239 +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0x6266d150 +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0x4544b1cf +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0xb041a72b +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0xf520f914 +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0xbe1a9edd +drivers/ieee1394/ieee1394 hpsb_iso_stop 0xb81b4ee5 +drivers/ieee1394/ieee1394 hpsb_iso_wake 0xa63f8630 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x8662db1f +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0x450f7730 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0xf9d6690f +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0xef0e0d09 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0x9f50dd70 +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0xc9ade842 +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0x5c3220b2 +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0x111f732a +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0xa78ee41a +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0x6b728177 +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0x66c4e019 +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0x13b0cf82 +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0xc3fe8168 +drivers/ieee1394/ieee1394 hpsb_node_write 0x3059c324 +drivers/ieee1394/ieee1394 hpsb_packet_received 0x314535b6 +drivers/ieee1394/ieee1394 hpsb_packet_sent 0xcda8b8b1 +drivers/ieee1394/ieee1394 hpsb_packet_success 0x1dc066ce +drivers/ieee1394/ieee1394 hpsb_protocol_class 0x8b6f3218 +drivers/ieee1394/ieee1394 hpsb_read 0x02edaef9 +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0xba3024e2 +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0x4aead591 +drivers/ieee1394/ieee1394 hpsb_register_protocol 0x10b6d7da +drivers/ieee1394/ieee1394 hpsb_remove_host 0x048bf94a +drivers/ieee1394/ieee1394 hpsb_reset_bus 0xaec77c2d +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0x0f6c2ea1 +drivers/ieee1394/ieee1394 hpsb_selfid_received 0x95ee1561 +drivers/ieee1394/ieee1394 hpsb_send_packet 0x16e3623f +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0x43033460 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0x66fd2d04 +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0x4af1b595 +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0x9a0ff5a7 +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0xc0b5a9be +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0xf09daac2 +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0xc7258eec +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0xa7578894 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0x228d731d +drivers/ieee1394/ieee1394 hpsb_write 0xbb89b08b +drivers/ieee1394/ieee1394 ieee1394_bus_type 0x7888b214 +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0x1d5aeebc +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0xada7b22b +drivers/ieee1394/ohci1394 ohci1394_stop_context 0x0c7bb4f3 +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0x4d6e1234 +drivers/infiniband/core/ib_cm ib_cm_establish 0xc0bbbf1e +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0xb29560ba +drivers/infiniband/core/ib_cm ib_cm_listen 0x9ed610cb +drivers/infiniband/core/ib_cm ib_create_cm_id 0xf2f4bcee +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0x9c81dd43 +drivers/infiniband/core/ib_cm ib_send_cm_apr 0x06136bed +drivers/infiniband/core/ib_cm ib_send_cm_drep 0x1bf40914 +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0x38451cee +drivers/infiniband/core/ib_cm ib_send_cm_lap 0x5fc2c8cc +drivers/infiniband/core/ib_cm ib_send_cm_mra 0x90c8ad61 +drivers/infiniband/core/ib_cm ib_send_cm_rej 0xc959934a +drivers/infiniband/core/ib_cm ib_send_cm_rep 0x7a60d19f +drivers/infiniband/core/ib_cm ib_send_cm_req 0x4509b379 +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0x0800459c +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0xe6a8ac20 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0xb72bfcbf +drivers/infiniband/core/ib_core ib_alloc_device 0x67557ffe +drivers/infiniband/core/ib_core ib_alloc_fmr 0x8d440ede +drivers/infiniband/core/ib_core ib_alloc_mw 0x41c74fd7 +drivers/infiniband/core/ib_core ib_alloc_pd 0x58c00d9d +drivers/infiniband/core/ib_core ib_attach_mcast 0x0b6e4b52 +drivers/infiniband/core/ib_core ib_create_ah 0x164b6c5f +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0xf7c515bd +drivers/infiniband/core/ib_core ib_create_cq 0x1a20bec3 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0xe7504d4c +drivers/infiniband/core/ib_core ib_create_qp 0x0a03865d +drivers/infiniband/core/ib_core ib_create_srq 0xe88d0ace +drivers/infiniband/core/ib_core ib_dealloc_device 0xb2109597 +drivers/infiniband/core/ib_core ib_dealloc_fmr 0xd7f1a96e +drivers/infiniband/core/ib_core ib_dealloc_mw 0xc4b3fe3c +drivers/infiniband/core/ib_core ib_dealloc_pd 0xad504e25 +drivers/infiniband/core/ib_core ib_dereg_mr 0x273895a0 +drivers/infiniband/core/ib_core ib_destroy_ah 0x94168c9d +drivers/infiniband/core/ib_core ib_destroy_cq 0x2571f295 +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0xd55c6b2a +drivers/infiniband/core/ib_core ib_destroy_qp 0xbf541367 +drivers/infiniband/core/ib_core ib_destroy_srq 0x0f3981eb +drivers/infiniband/core/ib_core ib_detach_mcast 0xdee0c3ff +drivers/infiniband/core/ib_core ib_dispatch_event 0x152c44ed +drivers/infiniband/core/ib_core ib_find_cached_gid 0xe651bc5b +drivers/infiniband/core/ib_core ib_find_cached_pkey 0x1899189d +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0x21bdfda2 +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0x70fe8684 +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0xd6d08f64 +drivers/infiniband/core/ib_core ib_get_cached_gid 0xa18a7560 +drivers/infiniband/core/ib_core ib_get_cached_pkey 0x52556897 +drivers/infiniband/core/ib_core ib_get_client_data 0x30f5c06b +drivers/infiniband/core/ib_core ib_get_dma_mr 0x95607e9b +drivers/infiniband/core/ib_core ib_modify_ah 0x439d0b56 +drivers/infiniband/core/ib_core ib_modify_device 0x91b8fdca +drivers/infiniband/core/ib_core ib_modify_port 0x6afa205c +drivers/infiniband/core/ib_core ib_modify_qp 0x201829b5 +drivers/infiniband/core/ib_core ib_modify_srq 0x1a577e8a +drivers/infiniband/core/ib_core ib_pack 0x520b2638 +drivers/infiniband/core/ib_core ib_query_ah 0x2ad185ad +drivers/infiniband/core/ib_core ib_query_device 0xd033d636 +drivers/infiniband/core/ib_core ib_query_gid 0x8ec24771 +drivers/infiniband/core/ib_core ib_query_mr 0x927f7310 +drivers/infiniband/core/ib_core ib_query_pkey 0x7365b736 +drivers/infiniband/core/ib_core ib_query_port 0x9301a0af +drivers/infiniband/core/ib_core ib_query_qp 0x83838631 +drivers/infiniband/core/ib_core ib_query_srq 0xd9efb301 +drivers/infiniband/core/ib_core ib_reg_phys_mr 0x4316a3ca +drivers/infiniband/core/ib_core ib_register_client 0x28c5c468 +drivers/infiniband/core/ib_core ib_register_device 0xc1648247 +drivers/infiniband/core/ib_core ib_register_event_handler 0x255b3a07 +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x00b17229 +drivers/infiniband/core/ib_core ib_resize_cq 0xd2c77616 +drivers/infiniband/core/ib_core ib_set_client_data 0x6a219cd9 +drivers/infiniband/core/ib_core ib_ud_header_init 0x965c1dae +drivers/infiniband/core/ib_core ib_ud_header_pack 0x8d12f837 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0x11d42382 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xb1a312e1 +drivers/infiniband/core/ib_core ib_unregister_client 0x53e1df26 +drivers/infiniband/core/ib_core ib_unregister_device 0xbcb9cad8 +drivers/infiniband/core/ib_core ib_unregister_event_handler 0xaa834cca +drivers/infiniband/core/ib_mad ib_cancel_mad 0x0c847958 +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x6a3bbc94 +drivers/infiniband/core/ib_mad ib_create_send_mad 0xa67ed957 +drivers/infiniband/core/ib_mad ib_free_recv_mad 0xd6f8244e +drivers/infiniband/core/ib_mad ib_free_send_mad 0x58af74dc +drivers/infiniband/core/ib_mad ib_modify_mad 0xb2544b3e +drivers/infiniband/core/ib_mad ib_post_send_mad 0xdaafefae +drivers/infiniband/core/ib_mad ib_process_mad_wc 0x2a900402 +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x1a46e223 +drivers/infiniband/core/ib_mad ib_register_mad_agent 0x1c941aab +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0xa59b8c13 +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0xd2a36ef0 +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0x652a4d49 +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0xe355ee92 +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0x2acbe863 +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0x248d623f +drivers/input/gameport/gameport __gameport_register_driver 0x41412706 +drivers/input/gameport/gameport __gameport_register_port 0x578fea65 +drivers/input/gameport/gameport gameport_close 0x24d11498 +drivers/input/gameport/gameport gameport_cooked_read 0x7f183840 +drivers/input/gameport/gameport gameport_open 0x6b83f73a +drivers/input/gameport/gameport gameport_rescan 0xf0905cfc +drivers/input/gameport/gameport gameport_set_name 0xf25e09db +drivers/input/gameport/gameport gameport_set_phys 0xa95771a5 +drivers/input/gameport/gameport gameport_start_polling 0x723797dd +drivers/input/gameport/gameport gameport_stop_polling 0x5e185a4f +drivers/input/gameport/gameport gameport_unregister_driver 0x6346d463 +drivers/input/gameport/gameport gameport_unregister_port 0x589b1cc4 +drivers/isdn/capi/capifs capifs_free_ncci 0x2c54c957 +drivers/isdn/capi/capifs capifs_new_ncci 0xd0bc06ce +drivers/isdn/capi/kernelcapi attach_capi_ctr 0xce89bd22 +drivers/isdn/capi/kernelcapi capi20_get_manufacturer 0x7e6f1307 +drivers/isdn/capi/kernelcapi capi20_get_profile 0xe19a11ac +drivers/isdn/capi/kernelcapi capi20_get_serial 0x7a33596c +drivers/isdn/capi/kernelcapi capi20_get_version 0x14f2aa5a +drivers/isdn/capi/kernelcapi capi20_isinstalled 0x31c24aa4 +drivers/isdn/capi/kernelcapi capi20_manufacturer 0xed061606 +drivers/isdn/capi/kernelcapi capi20_put_message 0xb757ea13 +drivers/isdn/capi/kernelcapi capi20_register 0x345ddae0 +drivers/isdn/capi/kernelcapi capi20_release 0x537ad720 +drivers/isdn/capi/kernelcapi capi20_set_callback 0x7711576c +drivers/isdn/capi/kernelcapi capi_cmd2str 0xb19fda8d +drivers/isdn/capi/kernelcapi capi_cmsg2message 0x50b33ca4 +drivers/isdn/capi/kernelcapi capi_cmsg2str 0xd45b5eb5 +drivers/isdn/capi/kernelcapi capi_cmsg_header 0xb60e5e5f +drivers/isdn/capi/kernelcapi capi_ctr_handle_message 0x547c2ed7 +drivers/isdn/capi/kernelcapi capi_ctr_ready 0x9cc59d23 +drivers/isdn/capi/kernelcapi capi_ctr_reseted 0x44cd2f96 +drivers/isdn/capi/kernelcapi capi_ctr_resume_output 0x571725a7 +drivers/isdn/capi/kernelcapi capi_ctr_suspend_output 0x6f06aca2 +drivers/isdn/capi/kernelcapi capi_info2str 0x47d3fc51 +drivers/isdn/capi/kernelcapi capi_message2cmsg 0x6057c6f3 +drivers/isdn/capi/kernelcapi capi_message2str 0xa7abc5e3 +drivers/isdn/capi/kernelcapi capilib_data_b3_conf 0x62e32d43 +drivers/isdn/capi/kernelcapi capilib_data_b3_req 0x71e8d5ba +drivers/isdn/capi/kernelcapi capilib_free_ncci 0x2b8eab1f +drivers/isdn/capi/kernelcapi capilib_new_ncci 0x2baa6586 +drivers/isdn/capi/kernelcapi capilib_release 0x8f699913 +drivers/isdn/capi/kernelcapi capilib_release_appl 0xaa165d27 +drivers/isdn/capi/kernelcapi detach_capi_ctr 0xf529381b +drivers/isdn/capi/kernelcapi register_capi_driver 0x9f823278 +drivers/isdn/capi/kernelcapi unregister_capi_driver 0x04403fcf +drivers/isdn/hardware/avm/b1 avmcard_dma_alloc 0xed8b34f5 +drivers/isdn/hardware/avm/b1 avmcard_dma_free 0xd0a98f4d +drivers/isdn/hardware/avm/b1 b1_alloc_card 0xa99f574d +drivers/isdn/hardware/avm/b1 b1_detect 0xdfd28376 +drivers/isdn/hardware/avm/b1 b1_free_card 0x66118145 +drivers/isdn/hardware/avm/b1 b1_getrevision 0xc53db485 +drivers/isdn/hardware/avm/b1 b1_interrupt 0x7c376ed0 +drivers/isdn/hardware/avm/b1 b1_irq_table 0x85f09690 +drivers/isdn/hardware/avm/b1 b1_load_config 0xe0ad8e0e +drivers/isdn/hardware/avm/b1 b1_load_firmware 0x0efa706f +drivers/isdn/hardware/avm/b1 b1_load_t4file 0x22fec8e2 +drivers/isdn/hardware/avm/b1 b1_loaded 0x3d3b92ca +drivers/isdn/hardware/avm/b1 b1_parse_version 0x34015162 +drivers/isdn/hardware/avm/b1 b1_register_appl 0x79909171 +drivers/isdn/hardware/avm/b1 b1_release_appl 0x49ab947b +drivers/isdn/hardware/avm/b1 b1_reset_ctr 0xc9b0a171 +drivers/isdn/hardware/avm/b1 b1_send_message 0x4d214b90 +drivers/isdn/hardware/avm/b1 b1ctl_read_proc 0x22923dd2 +drivers/isdn/hardware/avm/b1dma b1dma_interrupt 0xb7858191 +drivers/isdn/hardware/avm/b1dma b1dma_load_firmware 0x22ce9f3e +drivers/isdn/hardware/avm/b1dma b1dma_register_appl 0xbd17232a +drivers/isdn/hardware/avm/b1dma b1dma_release_appl 0x28c9b884 +drivers/isdn/hardware/avm/b1dma b1dma_reset 0x09f2649a +drivers/isdn/hardware/avm/b1dma b1dma_reset_ctr 0x696b4734 +drivers/isdn/hardware/avm/b1dma b1dma_send_message 0x60af3103 +drivers/isdn/hardware/avm/b1dma b1dmactl_read_proc 0x5db142aa +drivers/isdn/hardware/avm/b1dma b1pciv4_detect 0x30048c9a +drivers/isdn/hardware/avm/b1dma t1pci_detect 0x94f4119d +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_b1 0xf14bf8b1 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m1 0xaec3240e +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m2 0xea620116 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_delcard 0x29562993 +drivers/isdn/hardware/eicon/divadidd DIVA_DIDD_Read 0x2974ead1 +drivers/isdn/hardware/eicon/divadidd proc_net_eicon 0x391c436e +drivers/isdn/hisax/hisax FsmChangeState 0x93a64734 +drivers/isdn/hisax/hisax FsmDelTimer 0x799088e0 +drivers/isdn/hisax/hisax FsmEvent 0x9df0cd27 +drivers/isdn/hisax/hisax FsmFree 0x148f0c99 +drivers/isdn/hisax/hisax FsmInitTimer 0x52866abe +drivers/isdn/hisax/hisax FsmNew 0xf0a16657 +drivers/isdn/hisax/hisax FsmRestartTimer 0xde7e7906 +drivers/isdn/hisax/hisax HiSax_closecard 0xfc27303b +drivers/isdn/hisax/hisax hisax_init_pcmcia 0x2bd88e3b +drivers/isdn/hisax/hisax hisax_register 0xee93522c +drivers/isdn/hisax/hisax hisax_unregister 0x07f4f2ce +drivers/isdn/hisax/hisax_isac isac_d_l2l1 0x3f3b323a +drivers/isdn/hisax/hisax_isac isac_init 0x5dbe0653 +drivers/isdn/hisax/hisax_isac isac_irq 0xcd3fce2e +drivers/isdn/hisax/hisax_isac isac_setup 0x7d300321 +drivers/isdn/hisax/hisax_isac isacsx_irq 0x89920ebe +drivers/isdn/hisax/hisax_isac isacsx_setup 0x97150f26 +drivers/isdn/hisax/isdnhdlc isdnhdlc_bit_rev_tab 0xe82c3e32 +drivers/isdn/hisax/isdnhdlc isdnhdlc_decode 0x1a1afeef +drivers/isdn/hisax/isdnhdlc isdnhdlc_encode 0x52a6537c +drivers/isdn/hisax/isdnhdlc isdnhdlc_out_init 0x277685da +drivers/isdn/hisax/isdnhdlc isdnhdlc_rcv_init 0x1dc6a9fc +drivers/isdn/i4l/isdn isdn_ppp_register_compressor 0x3a77afa7 +drivers/isdn/i4l/isdn isdn_ppp_unregister_compressor 0x93708c9e +drivers/isdn/i4l/isdn isdn_register_divert 0xb7757abb +drivers/isdn/i4l/isdn register_isdn 0xc516ace7 +drivers/isdn/misdn/mISDN_core mISDN_AddIE 0xcada7009 +drivers/isdn/misdn/mISDN_core mISDN_AddvarIE 0x6ef4e4e5 +drivers/isdn/misdn/mISDN_core mISDN_ConnectIF 0x6d8f7f4e +drivers/isdn/misdn/mISDN_core mISDN_DisConnectIF 0x2287f0e3 +drivers/isdn/misdn/mISDN_core mISDN_FsmAddTimer 0x7214e53f +drivers/isdn/misdn/mISDN_core mISDN_FsmChangeState 0x50c2230c +drivers/isdn/misdn/mISDN_core mISDN_FsmDelTimer 0x3010393f +drivers/isdn/misdn/mISDN_core mISDN_FsmEvent 0xd5145151 +drivers/isdn/misdn/mISDN_core mISDN_FsmFree 0x2348cc3c +drivers/isdn/misdn/mISDN_core mISDN_FsmInitTimer 0x172da300 +drivers/isdn/misdn/mISDN_core mISDN_FsmNew 0xf9e7832f +drivers/isdn/misdn/mISDN_core mISDN_FsmRestartTimer 0x50a5d950 +drivers/isdn/misdn/mISDN_core mISDN_HasProtocol 0x8970d9cc +drivers/isdn/misdn/mISDN_core mISDN_LogL3Msg 0xc070956a +drivers/isdn/misdn/mISDN_core mISDN_QuickHex 0x91b96ea6 +drivers/isdn/misdn/mISDN_core mISDN_RemoveUsedPID 0xd956d2e8 +drivers/isdn/misdn/mISDN_core mISDN_SetHandledPID 0xdcf8aa12 +drivers/isdn/misdn/mISDN_core mISDN_SetIF 0x7d35984d +drivers/isdn/misdn/mISDN_core mISDN_alloc_l3msg 0x2c6c27a2 +drivers/isdn/misdn/mISDN_core mISDN_bprotocol2pid 0xed673eae +drivers/isdn/misdn/mISDN_core mISDN_debug 0xff10c7d9 +drivers/isdn/misdn/mISDN_core mISDN_debugprint 0x5dc6e33d +drivers/isdn/misdn/mISDN_core mISDN_free_bch 0x2a8e48a7 +drivers/isdn/misdn/mISDN_core mISDN_free_dch 0x3affa224 +drivers/isdn/misdn/mISDN_core mISDN_get_down_layer 0xd1c0ae73 +drivers/isdn/misdn/mISDN_core mISDN_get_lowlayer 0x9f6faa8f +drivers/isdn/misdn/mISDN_core mISDN_get_protocol 0x7801ab79 +drivers/isdn/misdn/mISDN_core mISDN_get_up_layer 0xc6091c92 +drivers/isdn/misdn/mISDN_core mISDN_getrev 0x91f1a1b8 +drivers/isdn/misdn/mISDN_core mISDN_initQ931_info 0x45d57ad5 +drivers/isdn/misdn/mISDN_core mISDN_init_bch 0xb1a2bc85 +drivers/isdn/misdn/mISDN_core mISDN_init_dch 0x20a4b863 +drivers/isdn/misdn/mISDN_core mISDN_init_instance 0xbcb15a1d +drivers/isdn/misdn/mISDN_core mISDN_l3_ie2pos 0x6a35c630 +drivers/isdn/misdn/mISDN_core mISDN_l3_pos2ie 0x31559777 +drivers/isdn/misdn/mISDN_core mISDN_layermask2layer 0x48cbe644 +drivers/isdn/misdn/mISDN_core mISDN_register 0x22e965db +drivers/isdn/misdn/mISDN_core mISDN_set_dchannel_pid 0xca03ed9e +drivers/isdn/misdn/mISDN_core mISDN_unregister 0x3bae2243 +drivers/isdn/misdn/mISDN_core vmISDN_debug 0x85718442 +drivers/isdn/misdn/mISDN_isac mISDN_ISAC_l1hw 0x43221cef +drivers/isdn/misdn/mISDN_isac mISDN_clear_isac 0x9acc08a1 +drivers/isdn/misdn/mISDN_isac mISDN_isac_free 0xf0892f6f +drivers/isdn/misdn/mISDN_isac mISDN_isac_init 0xc7205d09 +drivers/isdn/misdn/mISDN_isac mISDN_isac_interrupt 0x00a50ec4 +drivers/md/dm-mirror dm_create_dirty_log 0x0a9c5a61 +drivers/md/dm-mirror dm_destroy_dirty_log 0x8b424811 +drivers/md/dm-mirror dm_register_dirty_log_type 0x3006a71e +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x2180e5c5 +drivers/md/dm-mod dm_get_device 0x620f1891 +drivers/md/dm-mod dm_get_mapinfo 0x3d1253d0 +drivers/md/dm-mod dm_io_async 0x1aee09e9 +drivers/md/dm-mod dm_io_async_bvec 0x1c82d160 +drivers/md/dm-mod dm_io_async_vm 0x2d25ce64 +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0xe0425467 +drivers/md/dm-mod dm_io_sync_bvec 0x0fdf0981 +drivers/md/dm-mod dm_io_sync_vm 0x2ec52043 +drivers/md/dm-mod dm_put_device 0x0344ba81 +drivers/md/dm-mod dm_register_target 0x84f17b56 +drivers/md/dm-mod dm_table_event 0xee3cc0b3 +drivers/md/dm-mod dm_table_flush_all 0xe3f64b27 +drivers/md/dm-mod dm_table_get 0xb364d483 +drivers/md/dm-mod dm_table_get_mode 0xecb40b66 +drivers/md/dm-mod dm_table_get_size 0xfaddf4ca +drivers/md/dm-mod dm_table_put 0x07293a02 +drivers/md/dm-mod dm_table_unplug_all 0xf99e913e +drivers/md/dm-mod dm_unregister_target 0xec396758 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x253d4268 +drivers/md/dm-mod kcopyd_client_create 0xd90e2a4b +drivers/md/dm-mod kcopyd_client_destroy 0x5ed954e9 +drivers/md/dm-mod kcopyd_copy 0x9eaedb19 +drivers/md/dm-multipath dm_pg_init_complete 0x369f80f5 +drivers/md/dm-multipath dm_register_hw_handler 0x30974781 +drivers/md/dm-multipath dm_register_path_selector 0xbbfa4f5f +drivers/md/dm-multipath dm_scsi_err_handler 0xf33e6b30 +drivers/md/dm-multipath dm_unregister_hw_handler 0x6606901f +drivers/md/dm-multipath dm_unregister_path_selector 0x2698f8bb +drivers/md/md-mod bitmap_close_sync 0xaa082e6d +drivers/md/md-mod bitmap_daemon_work 0x3ef7b2f7 +drivers/md/md-mod bitmap_end_sync 0xefe09701 +drivers/md/md-mod bitmap_endwrite 0x5bc8fc2b +drivers/md/md-mod bitmap_start_sync 0x4ab74b86 +drivers/md/md-mod bitmap_startwrite 0x9744da99 +drivers/md/md-mod bitmap_unplug 0x3d26e36d +drivers/md/md-mod md_check_recovery 0xd794ed71 +drivers/md/md-mod md_done_sync 0x4dfa982c +drivers/md/md-mod md_error 0x98992040 +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x34701f5a +drivers/md/md-mod md_unregister_thread 0xb61926cf +drivers/md/md-mod md_wakeup_thread 0xfb26d7c4 +drivers/md/md-mod md_write_end 0xcd50fa67 +drivers/md/md-mod md_write_start 0x35d90d51 +drivers/md/md-mod register_md_personality 0x51375604 +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x4740e7a3 +drivers/media/common/ir-common ir_codes_hauppauge_new 0x902a3cd2 +drivers/media/common/ir-common ir_codes_pinnacle 0xd3a0f048 +drivers/media/common/ir-common ir_codes_pixelview 0xfa177653 +drivers/media/common/ir-common ir_codes_rc5_tv 0xd9c7f010 +drivers/media/common/ir-common ir_codes_winfast 0x89cc1189 +drivers/media/common/ir-common ir_decode_biphase 0x43c89ef4 +drivers/media/common/ir-common ir_decode_pulsedistance 0x2456e513 +drivers/media/common/ir-common ir_dump_samples 0x6d6511e7 +drivers/media/common/ir-common ir_extract_bits 0x1cb148f5 +drivers/media/common/ir-common ir_input_init 0x8f66b418 +drivers/media/common/ir-common ir_input_keydown 0x7ded7539 +drivers/media/common/ir-common ir_input_nokey 0xb3eac4a1 +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x1bedd28f +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0x2f90e07a +drivers/media/common/saa7146 saa7146_i2c_transfer 0x58bda3a4 +drivers/media/common/saa7146 saa7146_pgtable_alloc 0xd76d15b5 +drivers/media/common/saa7146 saa7146_pgtable_build_single 0x9770ca3f +drivers/media/common/saa7146 saa7146_pgtable_free 0xc104b558 +drivers/media/common/saa7146 saa7146_register_extension 0xa8bdd109 +drivers/media/common/saa7146 saa7146_setgpio 0xe33aca18 +drivers/media/common/saa7146 saa7146_unregister_extension 0x43103c16 +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0x366156da +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0xa04ffff2 +drivers/media/common/saa7146_vv saa7146_register_device 0x15e93aac +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0x56c787e9 +drivers/media/common/saa7146_vv saa7146_start_preview 0xc29531a2 +drivers/media/common/saa7146_vv saa7146_stop_preview 0x07226bbb +drivers/media/common/saa7146_vv saa7146_unregister_device 0x51157664 +drivers/media/common/saa7146_vv saa7146_vv_init 0x12188e63 +drivers/media/common/saa7146_vv saa7146_vv_release 0xdd538ce8 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0x645fe805 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0x0d650e96 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0x69508e28 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0x63ca2c69 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0x65543898 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0x4c0e5719 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0xeb4fe96e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0x67fe113f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0xc5b80324 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0xc4c2a693 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0xad7498cd +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0xb152ca9c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0xa36e66a2 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0x5f2ef3ae +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0xe7aba170 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0x58bbba6f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0xd0ceb31f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0xcc68bdb6 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0x95e9dc9a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0xf7d0732a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0xe65f0940 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0x2147a656 +drivers/media/dvb/bt8xx/bt878 bt878 0x0e373f9a +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0x135c98ed +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0x8c863268 +drivers/media/dvb/bt8xx/bt878 bt878_stop 0xdd19f31c +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0xd724cbbc +drivers/media/dvb/bt8xx/dst dst_check_sum 0xe94b8c9c +drivers/media/dvb/bt8xx/dst dst_comm_init 0x2bcc55ca +drivers/media/dvb/bt8xx/dst dst_command 0x2e5dc996 +drivers/media/dvb/bt8xx/dst dst_error_bailout 0xb1e2db42 +drivers/media/dvb/bt8xx/dst dst_error_recovery 0x85900fad +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0x20b3d359 +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0x2bc769c9 +drivers/media/dvb/bt8xx/dst dst_pio_disable 0xc66253f8 +drivers/media/dvb/bt8xx/dst dst_pio_enable 0x8c490d59 +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0xb9c2a0db +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0xf7fc2e34 +drivers/media/dvb/bt8xx/dst rdc_reset_state 0xd93561f0 +drivers/media/dvb/bt8xx/dst read_dst 0x76eab554 +drivers/media/dvb/bt8xx/dst write_dst 0x00525915 +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0x23fdd89f +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0x7d450e08 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0x966653ea +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0xb844bc88 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0x3505fdf2 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0xf53730cb +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0xbd0349a9 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0x017d7795 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0xa98de8ad +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0x29a4186e +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x96c6f1e7 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0x2aad9d6a +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0x2938cd43 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x80e3832d +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x36c8ea1f +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0xa9bffc3b +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0x0b23c80d +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0x66f2f2b7 +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0xf9e0245a +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0x25ee8f0f +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0x6f33a1d1 +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0xadfb9ceb +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0xcc4a296f +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0x50216463 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0xafd7f3da +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0x65374ff9 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0x9150404f +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x89328af6 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0x886fe8cc +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0xdbd07720 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0xf926510d +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0x70b8bc17 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0x4295817f +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0xbebbaeb0 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0xcd5ebec2 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0x32d3f395 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0xf639c6a6 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0x632f3d77 +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0x8b49a23f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0xcb209c59 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0x237fc4fb +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0xf9f0d235 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0xc9943fc0 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0xe5eacecf +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0x344c821d +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0x16308cc3 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0x1ad6112c +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0xf947da2d +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0x1d065fe2 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0xaf6632e8 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0x9d375d55 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0xd811552b +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0x17bb8b1d +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0xd85fc536 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0x9e474ec8 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0xd4d3dddc +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0x91787097 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0xfa75b31f +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0xd56b0a3f +drivers/media/dvb/frontends/at76c651 at76c651_attach 0xe4d0278c +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0x7787bb8a +drivers/media/dvb/frontends/cx22700 cx22700_attach 0x57107dd1 +drivers/media/dvb/frontends/cx22702 cx22702_attach 0x5f2ca4ee +drivers/media/dvb/frontends/cx24110 cx24110_attach 0xb5a8ac60 +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0x30602c02 +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0x46f0b716 +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0xe762d459 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x05f13eee +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0x35b2a84e +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0x25fa8892 +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0x5b554bf2 +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x02689b7f +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0x5b259391 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x7a0ed9bb +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0xbf98157e +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xd15aca20 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xfdd5e650 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x2a4f5718 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xc95be182 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x708f579e +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0xe39c77c8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0x12284643 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0xf1d4150d +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0xd5d22e56 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0xccc91f17 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xaddc7276 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x96cce305 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xcbbd68de +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x13856c44 +drivers/media/dvb/frontends/l64781 l64781_attach 0x47de68ec +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0x98b879a8 +drivers/media/dvb/frontends/mt312 mt312_attach 0xfcd10892 +drivers/media/dvb/frontends/mt312 vp310_attach 0x3f38c0fe +drivers/media/dvb/frontends/mt352 mt352_attach 0xa7e0f39c +drivers/media/dvb/frontends/mt352 mt352_write 0x6f5aa96f +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0x580a88ec +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x191d00b1 +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0xf74bb29b +drivers/media/dvb/frontends/or51132 or51132_attach 0x25f3a4e2 +drivers/media/dvb/frontends/or51211 or51211_attach 0x8ef12053 +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0x5c5e6477 +drivers/media/dvb/frontends/sp8870 sp8870_attach 0x5d9f2b8d +drivers/media/dvb/frontends/sp887x sp887x_attach 0xfa776a9b +drivers/media/dvb/frontends/stv0297 stv0297_attach 0x423b5f41 +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0x7496c886 +drivers/media/dvb/frontends/stv0299 stv0299_attach 0xd0d49080 +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0x8a77ed9d +drivers/media/dvb/frontends/tda10021 tda10021_attach 0x32530988 +drivers/media/dvb/frontends/tda1004x tda10045_attach 0xa56e3949 +drivers/media/dvb/frontends/tda1004x tda10046_attach 0xe39c89cd +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0x194d20cf +drivers/media/dvb/frontends/tda8083 tda8083_attach 0xa0cac7f8 +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0x9fcc9c75 +drivers/media/dvb/frontends/ves1820 ves1820_attach 0xfba9d181 +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0xfa1f56b2 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0xf6d76be4 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0x263d0cc1 +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0xc7980b0a +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0x4398895c +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0x03d4a426 +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0x7320004a +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0x6cfb8e34 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0x219cd824 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0x0a5bd9ee +drivers/media/radio/miropcm20 aci_rds_cmd 0xde4156ce +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0x519f4e25 +drivers/media/video/btcx-risc btcx_riscmem_free 0x9e4fa493 +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x450eaeb9 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0x974d29b0 +drivers/media/video/bttv bttv_gpio_bits 0x42715df7 +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0xf7002492 +drivers/media/video/bttv bttv_gpio_read 0x50363b85 +drivers/media/video/bttv bttv_gpio_write 0x4ffaafef +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0xc5691f2a +drivers/media/video/bttv bttv_sub_register 0xfc735685 +drivers/media/video/bttv bttv_sub_unregister 0xcfe8f2f5 +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0x4cd3fd6c +drivers/media/video/cpia cpia_unregister_camera 0xd9ba651c +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0x4f6abb0f +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0xfa0a15f3 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0xf510c4c8 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0x7d4173b3 +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0x424a0d4f +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0x67fc8179 +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0x3174f076 +drivers/media/video/cx88/cx8802 cx8802_fini_common 0xe37811df +drivers/media/video/cx88/cx8802 cx8802_init_common 0x40229849 +drivers/media/video/cx88/cx8802 cx8802_resume_common 0xaf5f9773 +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0x519d2848 +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x4e6954bf +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0x971cd4ef +drivers/media/video/cx88/cx88xx cx88_card_list 0xdd11d087 +drivers/media/video/cx88/cx88xx cx88_card_setup 0x0088e1f7 +drivers/media/video/cx88/cx88xx cx88_core_get 0xd495e95b +drivers/media/video/cx88/cx88xx cx88_core_irq 0xe119632f +drivers/media/video/cx88/cx88xx cx88_core_put 0x08ba4c20 +drivers/media/video/cx88/cx88xx cx88_free_buffer 0x5d3c426e +drivers/media/video/cx88/cx88xx cx88_get_stereo 0x5f58e0f8 +drivers/media/video/cx88/cx88xx cx88_i2c_init 0x5cb4a5db +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0x4302b38b +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x777b6d7f +drivers/media/video/cx88/cx88xx cx88_reset 0xe09a0b2d +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0xb69f06ca +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0x1be4243f +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0x72d3f9b9 +drivers/media/video/cx88/cx88xx cx88_set_scale 0x762c9f03 +drivers/media/video/cx88/cx88xx cx88_set_stereo 0x7ef3efb0 +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0x27b57bec +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0xab28a3dd +drivers/media/video/cx88/cx88xx cx88_shutdown 0xe1b5c6b4 +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0x946707aa +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0xa065b61b +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x9b140fff +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0x4c9b13f9 +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0x9672101e +drivers/media/video/cx88/cx88xx cx88_subids 0x6b626846 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0x5a9c5ed5 +drivers/media/video/cx88/cx88xx cx88_wakeup 0xcde12cd2 +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0xf1229acf +drivers/media/video/saa7134/saa7134 dmasound_exit 0x1cff052b +drivers/media/video/saa7134/saa7134 dmasound_init 0x4b0a4b8c +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0x834b7060 +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0x8049c55b +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0xd8f16a4e +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0xa1fb9c8e +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0x860aeedf +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0x67781328 +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0xf4e39989 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0xcc445031 +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0x79b1140a +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0xfa775c20 +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0xd4468068 +drivers/media/video/tveeprom tveeprom_read 0xa46f2334 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0xb228989a +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x9c7de443 +drivers/media/video/v4l2-common v4l2_prio_check 0x2f639468 +drivers/media/video/v4l2-common v4l2_prio_close 0x95284709 +drivers/media/video/v4l2-common v4l2_prio_init 0xbecd2858 +drivers/media/video/v4l2-common v4l2_prio_max 0x1dcaa0c8 +drivers/media/video/v4l2-common v4l2_prio_open 0x76ba9a9a +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0x33b3b664 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0xe38cafdf +drivers/media/video/video-buf videobuf_dma_init 0x781a1e04 +drivers/media/video/video-buf videobuf_dma_init_kernel 0x8325fddc +drivers/media/video/video-buf videobuf_dma_init_overlay 0xb8023d52 +drivers/media/video/video-buf videobuf_dma_init_user 0xf8e1d6f7 +drivers/media/video/video-buf videobuf_dma_pci_map 0x63f0ad7d +drivers/media/video/video-buf videobuf_dma_pci_sync 0x55b54efa +drivers/media/video/video-buf videobuf_dma_pci_unmap 0x4433f022 +drivers/media/video/video-buf videobuf_dqbuf 0xa108dfd0 +drivers/media/video/video-buf videobuf_iolock 0xe137f544 +drivers/media/video/video-buf videobuf_mmap_free 0x2281b636 +drivers/media/video/video-buf videobuf_mmap_mapper 0x2205782f +drivers/media/video/video-buf videobuf_mmap_setup 0xb821b3ee +drivers/media/video/video-buf videobuf_next_field 0x20e0da75 +drivers/media/video/video-buf videobuf_poll_stream 0x4e46c37d +drivers/media/video/video-buf videobuf_qbuf 0xcd758bbe +drivers/media/video/video-buf videobuf_querybuf 0xa0f720da +drivers/media/video/video-buf videobuf_queue_cancel 0x489b64dd +drivers/media/video/video-buf videobuf_queue_init 0x70fbefd4 +drivers/media/video/video-buf videobuf_queue_is_busy 0x43e58d53 +drivers/media/video/video-buf videobuf_read_one 0x7c24548d +drivers/media/video/video-buf videobuf_read_start 0xac3a418b +drivers/media/video/video-buf videobuf_read_stop 0x851ad1a6 +drivers/media/video/video-buf videobuf_read_stream 0x513f28e5 +drivers/media/video/video-buf videobuf_reqbufs 0x014bec2d +drivers/media/video/video-buf videobuf_status 0x2960701f +drivers/media/video/video-buf videobuf_streamoff 0xf3689e45 +drivers/media/video/video-buf videobuf_streamon 0x16db9136 +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0xe8bde91f +drivers/media/video/video-buf videobuf_waiton 0x1ceca5f6 +drivers/media/video/video-buf-dvb videobuf_dvb_register 0xea9b623c +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0xe2529273 +drivers/media/video/videocodec videocodec_attach 0x0fc0f06e +drivers/media/video/videocodec videocodec_detach 0x9579f2e1 +drivers/media/video/videocodec videocodec_register 0x5a4d3037 +drivers/media/video/videocodec videocodec_unregister 0xc6431c99 +drivers/media/video/videodev video_devdata 0x0560a571 +drivers/media/video/videodev video_device_alloc 0x4d9c3174 +drivers/media/video/videodev video_device_release 0x80627ad0 +drivers/media/video/videodev video_exclusive_open 0xc2883677 +drivers/media/video/videodev video_exclusive_release 0xa4456ed9 +drivers/media/video/videodev video_register_device 0x065234ad +drivers/media/video/videodev video_unregister_device 0x35489ea9 +drivers/media/video/videodev video_usercopy 0x1026d59b +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0xe59cca20 +drivers/message/fusion/mptbase mpt_HardResetHandler 0x4c330c3f +drivers/message/fusion/mptbase mpt_add_sge 0x375d8126 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0xd7a55e7d +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0xb65082b8 +drivers/message/fusion/mptbase mpt_attach 0x28ee64f5 +drivers/message/fusion/mptbase mpt_config 0x7603bb58 +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0xfb000933 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0x5a454b77 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x19fe0773 +drivers/message/fusion/mptbase mpt_findImVolumes 0xd1995a53 +drivers/message/fusion/mptbase mpt_free_fw_memory 0x6c9dc36e +drivers/message/fusion/mptbase mpt_free_msg_frame 0x5990d82a +drivers/message/fusion/mptbase mpt_get_msg_frame 0x65062b03 +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0x33aaf08a +drivers/message/fusion/mptbase mpt_proc_root_dir 0xa4401228 +drivers/message/fusion/mptbase mpt_put_msg_frame 0xb6d54b3a +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x7c780ac0 +drivers/message/fusion/mptbase mpt_register 0x664c461c +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x3aab6ece +drivers/message/fusion/mptbase mpt_resume 0x5c650c4a +drivers/message/fusion/mptbase mpt_send_handshake_request 0x9eb090d6 +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0x88dc9b95 +drivers/message/fusion/mptbase mpt_toolbox 0xa1f83f8e +drivers/message/fusion/mptbase mpt_verify_adapter 0xf4365f61 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x3c1e135f +drivers/message/fusion/mptscsih mptscsih_abort 0x66868d53 +drivers/message/fusion/mptscsih mptscsih_bios_param 0x69629fcd +drivers/message/fusion/mptscsih mptscsih_bus_reset 0x8bdc851f +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x019e4086 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0xf10f5dd9 +drivers/message/fusion/mptscsih mptscsih_event_process 0x73527254 +drivers/message/fusion/mptscsih mptscsih_host_reset 0x644cd867 +drivers/message/fusion/mptscsih mptscsih_info 0xeb74f9ec +drivers/message/fusion/mptscsih mptscsih_io_done 0x384df4d6 +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x18b55a75 +drivers/message/fusion/mptscsih mptscsih_proc_info 0x13ae89ab +drivers/message/fusion/mptscsih mptscsih_qcmd 0x4df9d0df +drivers/message/fusion/mptscsih mptscsih_remove 0x7d8a1917 +drivers/message/fusion/mptscsih mptscsih_resume 0x915802da +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0xa02f2fa3 +drivers/message/fusion/mptscsih mptscsih_shutdown 0xae352d9c +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0x17efb5f3 +drivers/message/fusion/mptscsih mptscsih_slave_configure 0xcbd3ab13 +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x53eb180d +drivers/message/fusion/mptscsih mptscsih_suspend 0x9992b0a7 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x0eb31094 +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0xae0d305e +drivers/message/i2o/i2o_core i2o_device_claim_release 0x2216b9dc +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0xabc8679d +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x0755bc75 +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0xd04af697 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0x65a3b179 +drivers/message/i2o/i2o_core i2o_driver_register 0x10d4c00d +drivers/message/i2o/i2o_core i2o_driver_unregister 0xf2b06f08 +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0x3bb95e57 +drivers/message/i2o/i2o_core i2o_exec_lct_get 0xdaccbc4e +drivers/message/i2o/i2o_core i2o_find_iop 0x382e46f8 +drivers/message/i2o/i2o_core i2o_iop_find_device 0x9eb30a0d +drivers/message/i2o/i2o_core i2o_msg_get_wait 0xe6ad28b2 +drivers/message/i2o/i2o_core i2o_msg_nop 0x8dbfc8bd +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0x2a700766 +drivers/message/i2o/i2o_core i2o_parm_field_get 0xa298584a +drivers/message/i2o/i2o_core i2o_parm_issue 0x6d2bf334 +drivers/message/i2o/i2o_core i2o_parm_table_get 0x2a52603b +drivers/message/i2o/i2o_core i2o_status_get 0x7cfc9df1 +drivers/mmc/mmc_core __mmc_claim_host 0x4b8150ec +drivers/mmc/mmc_core mmc_add_host 0x3e55f8a7 +drivers/mmc/mmc_core mmc_alloc_host 0xe9754132 +drivers/mmc/mmc_core mmc_cleanup_queue 0x2f08430a +drivers/mmc/mmc_core mmc_detect_change 0x775537e1 +drivers/mmc/mmc_core mmc_free_host 0x6b651649 +drivers/mmc/mmc_core mmc_init_queue 0x0647f59e +drivers/mmc/mmc_core mmc_queue_resume 0x80a14e00 +drivers/mmc/mmc_core mmc_queue_suspend 0xa017d131 +drivers/mmc/mmc_core mmc_register_driver 0x61c2bf95 +drivers/mmc/mmc_core mmc_release_host 0x3e9fbb8e +drivers/mmc/mmc_core mmc_remove_host 0xc5de983c +drivers/mmc/mmc_core mmc_request_done 0xd557563b +drivers/mmc/mmc_core mmc_resume_host 0x4f02e322 +drivers/mmc/mmc_core mmc_start_request 0x3c252cfe +drivers/mmc/mmc_core mmc_suspend_host 0x0913a4fa +drivers/mmc/mmc_core mmc_unregister_driver 0x1758c48e +drivers/mmc/mmc_core mmc_wait_for_app_cmd 0xdd96f580 +drivers/mmc/mmc_core mmc_wait_for_cmd 0x3d7952ef +drivers/mmc/mmc_core mmc_wait_for_req 0x38f8f1ea +drivers/mtd/chips/cfi_util cfi_fixup 0xb7b26d54 +drivers/mtd/chips/cfi_util cfi_read_pri 0x98141520 +drivers/mtd/chips/cfi_util cfi_varsize_frob 0xb2dc00be +drivers/mtd/chips/chipreg do_map_probe 0xcae06d12 +drivers/mtd/chips/chipreg map_destroy 0x5623166f +drivers/mtd/chips/chipreg register_mtd_chip_driver 0xfd815743 +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0x545f793f +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0xc5e71ef5 +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0x03c9f40b +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0xde6f31c5 +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0x66d63d9a +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0xea3aef95 +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0x4de34e00 +drivers/mtd/mtdconcat mtd_concat_create 0x62d8babc +drivers/mtd/mtdconcat mtd_concat_destroy 0x81c5b6ea +drivers/mtd/mtdcore add_mtd_device 0x19fc4bd8 +drivers/mtd/mtdcore default_mtd_readv 0x689cbc65 +drivers/mtd/mtdcore default_mtd_writev 0x06df681d +drivers/mtd/mtdcore del_mtd_device 0x223bf2df +drivers/mtd/mtdcore get_mtd_device 0xb1ae7241 +drivers/mtd/mtdcore mtd_table 0x9363cd0b +drivers/mtd/mtdcore mtd_table_mutex 0x72beff16 +drivers/mtd/mtdcore put_mtd_device 0x03b537a7 +drivers/mtd/mtdcore register_mtd_user 0x4211b352 +drivers/mtd/mtdcore unregister_mtd_user 0xac97f053 +drivers/mtd/mtdpart add_mtd_partitions 0x572d5f0e +drivers/mtd/mtdpart del_mtd_partitions 0x9a3484ad +drivers/mtd/mtdpart deregister_mtd_parser 0x3f363160 +drivers/mtd/mtdpart mtd_erase_callback 0x2432d90b +drivers/mtd/mtdpart parse_mtd_partitions 0xd4fd7185 +drivers/mtd/mtdpart register_mtd_parser 0x396a9481 +drivers/mtd/nand/nand nand_default_bbt 0x15bc35b9 +drivers/mtd/nand/nand nand_release 0xee537d0b +drivers/mtd/nand/nand nand_scan 0x2a9cb7f0 +drivers/mtd/nand/nand nand_scan_bbt 0x74b013c0 +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0x81afe742 +drivers/mtd/onenand/onenand onenand_release 0xf86b496e +drivers/mtd/onenand/onenand onenand_scan 0x5d75c879 +drivers/mtd/onenand/onenand onenand_scan_bbt 0xa8391517 +drivers/net/8390 NS8390_init 0x2a0ad069 +drivers/net/8390 __alloc_ei_netdev 0x796da9c5 +drivers/net/8390 ei_close 0x0f58074f +drivers/net/8390 ei_interrupt 0x7862f4df +drivers/net/8390 ei_open 0x98590fb7 +drivers/net/8390 ei_poll 0x75813fec +drivers/net/arcnet/arcnet alloc_arcdev 0xc5b507fd +drivers/net/arcnet/arcnet arc_bcast_proto 0x11ee3995 +drivers/net/arcnet/arcnet arc_proto_default 0x007d4594 +drivers/net/arcnet/arcnet arc_proto_map 0xf6af3221 +drivers/net/arcnet/arcnet arc_proto_null 0xe193fd86 +drivers/net/arcnet/arcnet arc_raw_proto 0xfb9a765c +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0x83db44fe +drivers/net/arcnet/arcnet arcnet_unregister_proto 0x9e14c98b +drivers/net/arcnet/com20020 com20020_check 0x674496e8 +drivers/net/arcnet/com20020 com20020_found 0xb0b3e8f1 +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0x8162c1d1 +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0x761b0e77 +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0x77277834 +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0xadbf8490 +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0x1bd138b6 +drivers/net/irda/sir-dev irda_register_dongle 0x15f1ef43 +drivers/net/irda/sir-dev irda_unregister_dongle 0xdee389c4 +drivers/net/irda/sir-dev sirdev_get_instance 0xf4b4f769 +drivers/net/irda/sir-dev sirdev_put_instance 0xcc58a732 +drivers/net/irda/sir-dev sirdev_raw_read 0x87739515 +drivers/net/irda/sir-dev sirdev_raw_write 0xc5c91256 +drivers/net/irda/sir-dev sirdev_receive 0x09bb39f4 +drivers/net/irda/sir-dev sirdev_set_dongle 0xdc9323aa +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0x02c91d47 +drivers/net/irda/sir-dev sirdev_write_complete 0xf3ef2370 +drivers/net/mii generic_mii_ioctl 0x15946837 +drivers/net/mii mii_check_gmii_support 0x84b29e61 +drivers/net/mii mii_check_link 0xa16ae0fb +drivers/net/mii mii_check_media 0xe3aa8f45 +drivers/net/mii mii_ethtool_gset 0xc0fa1528 +drivers/net/mii mii_ethtool_sset 0xafa21cd6 +drivers/net/mii mii_link_ok 0x6fcb52d9 +drivers/net/mii mii_nway_restart 0x2495857d +drivers/net/phy/libphy genphy_config_advert 0xd95bd966 +drivers/net/phy/libphy genphy_config_aneg 0x61c02325 +drivers/net/phy/libphy genphy_read_status 0xbcacbf8e +drivers/net/phy/libphy mdiobus_register 0xde8c1e56 +drivers/net/phy/libphy mdiobus_unregister 0x21f547c6 +drivers/net/phy/libphy phy_attach 0xee4dcdea +drivers/net/phy/libphy phy_connect 0x50111bd9 +drivers/net/phy/libphy phy_detach 0x0fdff8e7 +drivers/net/phy/libphy phy_disable_interrupts 0xcd60528a +drivers/net/phy/libphy phy_disconnect 0xd585e29b +drivers/net/phy/libphy phy_driver_register 0xaec8ac52 +drivers/net/phy/libphy phy_driver_unregister 0x3002dd30 +drivers/net/phy/libphy phy_enable_interrupts 0x4d1e0d4b +drivers/net/phy/libphy phy_print_status 0x2e5e5ed3 +drivers/net/phy/libphy phy_read 0x44cbf0a9 +drivers/net/phy/libphy phy_sanitize_settings 0x8d17f72b +drivers/net/phy/libphy phy_start 0xd5aaab53 +drivers/net/phy/libphy phy_start_aneg 0x0f8c5feb +drivers/net/phy/libphy phy_start_interrupts 0xaec47cdd +drivers/net/phy/libphy phy_stop 0x2c8c3bca +drivers/net/phy/libphy phy_stop_interrupts 0xa05a8b43 +drivers/net/phy/libphy phy_write 0xf3673ecf +drivers/net/ppp_generic ppp_channel_index 0xb2c427d4 +drivers/net/ppp_generic ppp_input 0x4e7aea02 +drivers/net/ppp_generic ppp_input_error 0x884c0f4f +drivers/net/ppp_generic ppp_output_wakeup 0xcaa92274 +drivers/net/ppp_generic ppp_register_channel 0xc920ebba +drivers/net/ppp_generic ppp_register_compressor 0x34cb35ae +drivers/net/ppp_generic ppp_unit_number 0x5e01629c +drivers/net/ppp_generic ppp_unregister_channel 0x68254e21 +drivers/net/ppp_generic ppp_unregister_compressor 0xd62ba4b0 +drivers/net/pppox pppox_unbind_sock 0xb6bd4ff2 +drivers/net/pppox register_pppox_proto 0x65567757 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x76135e6c +drivers/net/slhc slhc_free 0x2894cfb0 +drivers/net/slhc slhc_init 0x2e0e927f +drivers/net/slhc slhc_remember 0x0bc55868 +drivers/net/slhc slhc_toss 0xf89e3455 +drivers/net/slhc slhc_uncompress 0x3bc1319e +drivers/net/sungem_phy mii_phy_probe 0xfb0ac4cf +drivers/net/tokenring/tms380tr tms380tr_close 0x5ee4a778 +drivers/net/tokenring/tms380tr tms380tr_interrupt 0x3c7db227 +drivers/net/tokenring/tms380tr tms380tr_open 0xfaf90286 +drivers/net/tokenring/tms380tr tms380tr_wait 0xd2328794 +drivers/net/tokenring/tms380tr tmsdev_init 0xd011df2c +drivers/net/tokenring/tms380tr tmsdev_term 0x33910122 +drivers/net/wan/cycx_drv cycx_down 0x66a4c4e6 +drivers/net/wan/cycx_drv cycx_exec 0xfe7cd576 +drivers/net/wan/cycx_drv cycx_intr 0x38da4725 +drivers/net/wan/cycx_drv cycx_peek 0x968458a6 +drivers/net/wan/cycx_drv cycx_poke 0xb6f383de +drivers/net/wan/cycx_drv cycx_setup 0x62be23ea +drivers/net/wan/hdlc alloc_hdlcdev 0x4e2f3156 +drivers/net/wan/hdlc hdlc_close 0x3a35513a +drivers/net/wan/hdlc hdlc_ioctl 0xe1ce7dba +drivers/net/wan/hdlc hdlc_open 0x1ec9c017 +drivers/net/wan/hdlc hdlc_set_carrier 0x0b351036 +drivers/net/wan/hdlc register_hdlc_device 0x0b3cd9b8 +drivers/net/wan/hdlc unregister_hdlc_device 0x16b85d29 +drivers/net/wan/syncppp sppp_attach 0x9837414f +drivers/net/wan/syncppp sppp_close 0xe4a21b3e +drivers/net/wan/syncppp sppp_detach 0xf4467405 +drivers/net/wan/syncppp sppp_do_ioctl 0xbbe297b0 +drivers/net/wan/syncppp sppp_open 0x99b5f6a7 +drivers/net/wan/syncppp sppp_reopen 0x20b0cb40 +drivers/net/wan/z85230 z8530_channel_load 0xaefb2697 +drivers/net/wan/z85230 z8530_dead_port 0x10c78988 +drivers/net/wan/z85230 z8530_describe 0x5f3fbab3 +drivers/net/wan/z85230 z8530_dma_sync 0xbd8ce504 +drivers/net/wan/z85230 z8530_get_stats 0xa70dedf2 +drivers/net/wan/z85230 z8530_hdlc_kilostream 0x5cd24d29 +drivers/net/wan/z85230 z8530_hdlc_kilostream_85230 0xe3d80064 +drivers/net/wan/z85230 z8530_init 0x4c9ebe3c +drivers/net/wan/z85230 z8530_interrupt 0x33a2d438 +drivers/net/wan/z85230 z8530_nop 0x50b471ca +drivers/net/wan/z85230 z8530_null_rx 0x35bb0a61 +drivers/net/wan/z85230 z8530_queue_xmit 0x0666aa3e +drivers/net/wan/z85230 z8530_shutdown 0x442354a3 +drivers/net/wan/z85230 z8530_sync 0xb2639956 +drivers/net/wan/z85230 z8530_sync_close 0xd9e6bc52 +drivers/net/wan/z85230 z8530_sync_dma_close 0xb50b9ecf +drivers/net/wan/z85230 z8530_sync_dma_open 0x701c6035 +drivers/net/wan/z85230 z8530_sync_open 0x9bab1061 +drivers/net/wan/z85230 z8530_sync_txdma_close 0x5bd36299 +drivers/net/wan/z85230 z8530_sync_txdma_open 0xa6811a37 +drivers/net/wan/z85230 z8530_txdma_sync 0x9e01d4ca +drivers/net/wireless/airo init_airo_card 0x7e5f137e +drivers/net/wireless/airo reset_airo_card 0x4fc314fe +drivers/net/wireless/airo stop_airo_card 0xc541a83c +drivers/net/wireless/atmel atmel_open 0xc1858813 +drivers/net/wireless/atmel init_atmel_card 0x60a34084 +drivers/net/wireless/atmel stop_atmel_card 0xdfb18037 +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0x21dcaaf5 +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0xc201ac60 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0x99fa768a +drivers/net/wireless/hostap/hostap hostap_add_interface 0xafb7c1c1 +drivers/net/wireless/hostap/hostap hostap_add_sta 0x5ffe41a5 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0x8aea07f7 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0x2fce05e2 +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0x1ca0b368 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0x633d7ed8 +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0x87fef1f0 +drivers/net/wireless/hostap/hostap hostap_get_porttype 0x72a21e66 +drivers/net/wireless/hostap/hostap hostap_get_stats 0x0f316854 +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0xc0463214 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x43f0b767 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x03479f3d +drivers/net/wireless/hostap/hostap hostap_info_init 0xac8f60bb +drivers/net/wireless/hostap/hostap hostap_info_process 0x1901392a +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0xf07f23a5 +drivers/net/wireless/hostap/hostap hostap_init_data 0x859cd1c1 +drivers/net/wireless/hostap/hostap hostap_init_proc 0x9f81bd15 +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0x80461717 +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x0164f4df +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0x6af78866 +drivers/net/wireless/hostap/hostap hostap_proc 0x5f5cd00a +drivers/net/wireless/hostap/hostap hostap_remove_interface 0x2660510e +drivers/net/wireless/hostap/hostap hostap_remove_proc 0xb1972fff +drivers/net/wireless/hostap/hostap hostap_set_antsel 0x8a2d1e47 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0x13152b77 +drivers/net/wireless/hostap/hostap hostap_set_encryption 0x74514855 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x06cc1071 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0x0f8fe5f2 +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0x374897b7 +drivers/net/wireless/hostap/hostap hostap_set_string 0xc4228694 +drivers/net/wireless/hostap/hostap hostap_set_word 0xd9b4f273 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0x263881ae +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x5951b8db +drivers/net/wireless/hostap/hostap hostap_update_rates 0x2c7a24fa +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x749dfb3f +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x34af2bc1 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x6aa93585 +drivers/net/wireless/orinoco __orinoco_down 0x128cc4c2 +drivers/net/wireless/orinoco __orinoco_up 0x7045a2ba +drivers/net/wireless/orinoco alloc_orinocodev 0x2ede4dd5 +drivers/net/wireless/orinoco free_orinocodev 0x42725cd7 +drivers/net/wireless/orinoco orinoco_interrupt 0x36feb7f6 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x7629512d +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0x8551a5a9 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0xed4b0584 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0x73be9b80 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x332f22cf +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0x8a9ba825 +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x08ed644f +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0x2e462b1f +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0xc4b01db0 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0x93cf75d9 +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x82145eb2 +drivers/net/wireless/prism54_softmac/islsm register_islsm 0xc81efc01 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0x7e871cb5 +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0xd3183060 +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0xc436d451 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0xfe91b4db +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0xeeb512f9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0xc197772f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x1e48e2ba +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0xd39893e4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0x84bdaf7c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0xc623eea6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xd0fdbf18 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0x24be39b1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0xb4e0f775 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x993ccade +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0x95f3406a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0xa7ccc1fe +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0x20e90b35 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0x4602f865 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x3b3568f5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0xdfafff9d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x21ba5ab7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0xdeb1a68e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0xc95d1933 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x1027acb1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x7649f941 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x14b54c16 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0xfb97c2f1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x3d85883b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0xd3a2153f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0xa554062a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0xa51eff83 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0x8e2d6e7e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x70c6d1a6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0x27ba3bde +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0x3977e927 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0xd65567c0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x8251d7a0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0x8896a31b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0x7788681b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x88dc5ab2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x4e67d281 +drivers/parport/parport parport_announce_port 0x24e9250a +drivers/parport/parport parport_claim 0x7f305944 +drivers/parport/parport parport_claim_or_block 0x35be0155 +drivers/parport/parport parport_find_base 0x818c86fe +drivers/parport/parport parport_find_number 0x702ac477 +drivers/parport/parport parport_get_port 0x37a6d36f +drivers/parport/parport parport_ieee1284_ecp_read_data 0xf1bb8010 +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xe999c42e +drivers/parport/parport parport_ieee1284_ecp_write_data 0x34a7b960 +drivers/parport/parport parport_ieee1284_epp_read_addr 0x5d86a827 +drivers/parport/parport parport_ieee1284_epp_read_data 0x56aaaff3 +drivers/parport/parport parport_ieee1284_epp_write_addr 0xa01750c9 +drivers/parport/parport parport_ieee1284_epp_write_data 0x7d292d87 +drivers/parport/parport parport_ieee1284_interrupt 0xb3ec0c3b +drivers/parport/parport parport_ieee1284_read_byte 0x01f215b1 +drivers/parport/parport parport_ieee1284_read_nibble 0x97b45e06 +drivers/parport/parport parport_ieee1284_write_compat 0x6219fb8a +drivers/parport/parport parport_negotiate 0x489999d5 +drivers/parport/parport parport_put_port 0xa76fa0d4 +drivers/parport/parport parport_read 0x6e0538b2 +drivers/parport/parport parport_register_device 0x7aa6ad1c +drivers/parport/parport parport_register_driver 0x814f084d +drivers/parport/parport parport_register_port 0x565068c9 +drivers/parport/parport parport_release 0xd54368be +drivers/parport/parport parport_remove_port 0xf27b1f11 +drivers/parport/parport parport_set_timeout 0x277af6ad +drivers/parport/parport parport_unregister_device 0xbf5e7df0 +drivers/parport/parport parport_unregister_driver 0x252d02eb +drivers/parport/parport parport_wait_event 0x827400e0 +drivers/parport/parport parport_wait_peripheral 0xa5e6e269 +drivers/parport/parport parport_write 0x8efd96b7 +drivers/parport/parport_pc parport_pc_probe_port 0xbb10c097 +drivers/parport/parport_pc parport_pc_unregister_port 0x82253fff +drivers/pci/hotplug/acpiphp acpiphp_register_attention 0xf315064a +drivers/pci/hotplug/acpiphp acpiphp_unregister_attention 0xd14e8f9a +drivers/pci/hotplug/pci_hotplug cpci_hp_register_bus 0x24b1e699 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_controller 0x3349b75b +drivers/pci/hotplug/pci_hotplug cpci_hp_start 0x6a8441be +drivers/pci/hotplug/pci_hotplug cpci_hp_stop 0x94ef4d05 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_bus 0x3be18867 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_controller 0x5e62fe85 +drivers/pci/hotplug/pci_hotplug pci_hotplug_slots_subsys 0x494f2a53 +drivers/pci/hotplug/pci_hotplug pci_hp_change_slot_info 0xe0e45154 +drivers/pci/hotplug/pci_hotplug pci_hp_deregister 0x2b1406a8 +drivers/pci/hotplug/pci_hotplug pci_hp_register 0x550dad1d +drivers/pcmcia/pcmcia cs_error 0xeb357bca +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0x0bfc2fdf +drivers/pcmcia/pcmcia pcmcia_deregister_client 0x63806792 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0x88d28017 +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0x74afaef3 +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0xf5920645 +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0xc4f88788 +drivers/pcmcia/pcmcia pcmcia_get_status 0xb97d9996 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0x1c8cf0d0 +drivers/pcmcia/pcmcia pcmcia_get_window 0xb3e22192 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0x70330eab +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x0f1c6db4 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0x803d3121 +drivers/pcmcia/pcmcia pcmcia_register_client 0x2c11bf6c +drivers/pcmcia/pcmcia pcmcia_register_driver 0x6a8c8c00 +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x22348928 +drivers/pcmcia/pcmcia pcmcia_release_io 0x9bb33419 +drivers/pcmcia/pcmcia pcmcia_release_irq 0x8d9463f2 +drivers/pcmcia/pcmcia pcmcia_release_window 0x3127501d +drivers/pcmcia/pcmcia pcmcia_request_configuration 0xf5146e48 +drivers/pcmcia/pcmcia pcmcia_request_io 0x9a2d84fd +drivers/pcmcia/pcmcia pcmcia_request_irq 0x7ce7e708 +drivers/pcmcia/pcmcia pcmcia_request_window 0x18122f5e +drivers/pcmcia/pcmcia pcmcia_reset_card 0xbe97128e +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0x74b00692 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0x5696b24d +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0xd49cb0bb +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x07ea2340 +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0xe3ccc5c5 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0x122e2677 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0x7bdc6de1 +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0x781f6718 +drivers/pcmcia/pcmcia_core pccard_reset_card 0xa51b4e5c +drivers/pcmcia/pcmcia_core pccard_static_ops 0xc005ffcb +drivers/pcmcia/pcmcia_core pccard_validate_cis 0x2c37eb54 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0xb44c638b +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0x91954bf7 +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0x07f68c25 +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0xb0ddc290 +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0xf1c2129c +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0xa750f72f +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0xdbb38145 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0x62d1fe8f +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0xe7f29ee9 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xea922195 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0x9cee7309 +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0xb52ae242 +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x29dcdc27 +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0xd1d6466c +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0x0ffd3710 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0xc793f2d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0x0ef543c3 +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0x09c2191c +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x82d2f99b +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0x5748ff57 +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0xbd6eb6cd +drivers/pcmcia/pcmcia_core release_cis_mem 0x3bc291de +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0x4a3f8720 +drivers/scsi/53c700 NCR_700_detect 0x859a441b +drivers/scsi/53c700 NCR_700_intr 0xe19cbc56 +drivers/scsi/53c700 NCR_700_release 0x770e0c8d +drivers/scsi/libata __sata_phy_reset 0x5f69aa47 +drivers/scsi/libata ata_acpi_bus_register 0x4eb7c257 +drivers/scsi/libata ata_acpi_exec_tfs 0xb9f1e839 +drivers/scsi/libata ata_acpi_get_timing 0x168ecd52 +drivers/scsi/libata ata_acpi_push_id 0x9d02a07a +drivers/scsi/libata ata_acpi_push_timing 0x2690513e +drivers/scsi/libata ata_altstatus 0xfefb585b +drivers/scsi/libata ata_bmdma_irq_clear 0x64d30df9 +drivers/scsi/libata ata_bmdma_setup 0x10ac50e5 +drivers/scsi/libata ata_bmdma_start 0x54fd9fda +drivers/scsi/libata ata_bmdma_status 0x21b4d2d2 +drivers/scsi/libata ata_bmdma_stop 0xdd9f8981 +drivers/scsi/libata ata_bus_probe 0xb3dd6ace +drivers/scsi/libata ata_bus_reset 0x56e602db +drivers/scsi/libata ata_check_status 0xee285664 +drivers/scsi/libata ata_dev_classify 0x0531dcb8 +drivers/scsi/libata ata_dev_config 0x50fd743f +drivers/scsi/libata ata_dev_id_string 0x07d45a53 +drivers/scsi/libata ata_device_add 0x6b52bd11 +drivers/scsi/libata ata_device_resume 0x986529a6 +drivers/scsi/libata ata_device_shutdown 0xf5a10c8c +drivers/scsi/libata ata_device_suspend 0x67863c5c +drivers/scsi/libata ata_eng_timeout 0xc7a3816f +drivers/scsi/libata ata_exec_command 0x0ad29b03 +drivers/scsi/libata ata_host_intr 0x6e0dc025 +drivers/scsi/libata ata_host_set_remove 0x08525a8d +drivers/scsi/libata ata_host_stop 0xbee4e764 +drivers/scsi/libata ata_hotplug_plug 0x3dd200c1 +drivers/scsi/libata ata_hotplug_unplug 0xb80b741a +drivers/scsi/libata ata_interrupt 0x12058575 +drivers/scsi/libata ata_noop_dev_select 0x0bba60fd +drivers/scsi/libata ata_pci_device_resume 0x801d8b67 +drivers/scsi/libata ata_pci_device_suspend 0xd0d77fe5 +drivers/scsi/libata ata_pci_host_stop 0x30ca0d73 +drivers/scsi/libata ata_pci_init_native_mode 0x9ee336d3 +drivers/scsi/libata ata_pci_init_one 0x570954c1 +drivers/scsi/libata ata_pci_remove_one 0xb0a0db60 +drivers/scsi/libata ata_port_disable 0x13072718 +drivers/scsi/libata ata_port_probe 0xddedc52c +drivers/scsi/libata ata_port_start 0xddc796b5 +drivers/scsi/libata ata_port_stop 0xd214905e +drivers/scsi/libata ata_qc_complete 0xb0622670 +drivers/scsi/libata ata_qc_issue_prot 0xa81b65a6 +drivers/scsi/libata ata_qc_prep 0xc413fadb +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0x08228a23 +drivers/scsi/libata ata_scsi_device_shutdown 0x970f8fe6 +drivers/scsi/libata ata_scsi_device_suspend 0xc08a1833 +drivers/scsi/libata ata_scsi_error 0xe3ae55a1 +drivers/scsi/libata ata_scsi_ioctl 0x1c4577e0 +drivers/scsi/libata ata_scsi_queuecmd 0xbdbea675 +drivers/scsi/libata ata_scsi_release 0xd1e6f6f4 +drivers/scsi/libata ata_scsi_simulate 0xf5decd8f +drivers/scsi/libata ata_scsi_slave_config 0x69b2998d +drivers/scsi/libata ata_sg_init 0x04dfaf0b +drivers/scsi/libata ata_sg_init_one 0x9bd660ea +drivers/scsi/libata ata_std_bios_param 0xbe781fc2 +drivers/scsi/libata ata_std_dev_select 0x69ddb473 +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0x0067df75 +drivers/scsi/libata ata_tf_load 0x4c761377 +drivers/scsi/libata ata_tf_read 0x0d153ee8 +drivers/scsi/libata ata_tf_to_fis 0x28177a3f +drivers/scsi/libata ata_timing_compute 0xf6f94640 +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata do_drive_get_GTF 0xeea86579 +drivers/scsi/libata do_drive_set_taskfiles 0x90ff4077 +drivers/scsi/libata pci_test_config_bits 0x91d5e72f +drivers/scsi/libata sata_phy_reset 0x4d978b90 +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x46521076 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0xe29aa1ff +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0xbe6a31d9 +drivers/scsi/qlogicfas408 qlogicfas408_abort 0x26f60a34 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0xafedb56f +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0x617ee78b +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0xc43f9c3f +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x97bdeb7b +drivers/scsi/qlogicfas408 qlogicfas408_info 0x93d281ef +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0x6d5c3e51 +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0x76c831dd +drivers/scsi/raid_class raid_class_release 0x00afc4c8 +drivers/scsi/raid_class raid_component_add 0xabec27e0 +drivers/scsi/sas/sas_class sas_register_ha 0x9b5b6202 +drivers/scsi/sas/sas_class sas_unregister_ha 0x0aa15ead +drivers/scsi/scsi_mod __scsi_add_device 0x36f8c765 +drivers/scsi/scsi_mod __scsi_device_lookup 0xa6324c36 +drivers/scsi/scsi_mod __scsi_device_lookup_by_target 0xa3f2afb8 +drivers/scsi/scsi_mod __scsi_iterate_devices 0x09d02007 +drivers/scsi/scsi_mod __scsi_print_command 0xfef96e23 +drivers/scsi/scsi_mod __scsi_print_sense 0x69d38ed9 +drivers/scsi/scsi_mod int_to_scsilun 0xea10212a +drivers/scsi/scsi_mod scsi_add_device 0x164fbea5 +drivers/scsi/scsi_mod scsi_add_host 0x385d7842 +drivers/scsi/scsi_mod scsi_adjust_queue_depth 0xb02ba45c +drivers/scsi/scsi_mod scsi_allocate_request 0xc8c97a19 +drivers/scsi/scsi_mod scsi_bios_ptable 0xa9804dc0 +drivers/scsi/scsi_mod scsi_block_requests 0xe11d87b3 +drivers/scsi/scsi_mod scsi_block_when_processing_errors 0x1cb5caea +drivers/scsi/scsi_mod scsi_bus_type 0xb4e8c919 +drivers/scsi/scsi_mod scsi_calculate_bounce_limit 0x3b00c4db +drivers/scsi/scsi_mod scsi_command_normalize_sense 0xc6d93f35 +drivers/scsi/scsi_mod scsi_device_cancel 0x4657b90c +drivers/scsi/scsi_mod scsi_device_get 0x7ea5a324 +drivers/scsi/scsi_mod scsi_device_lookup 0x571c84dd +drivers/scsi/scsi_mod scsi_device_lookup_by_target 0x86661da6 +drivers/scsi/scsi_mod scsi_device_put 0x29d3f3eb +drivers/scsi/scsi_mod scsi_device_quiesce 0x0c5e6a4c +drivers/scsi/scsi_mod scsi_device_resume 0xfd83c106 +drivers/scsi/scsi_mod scsi_device_set_state 0x0a6ca1de +drivers/scsi/scsi_mod scsi_device_types 0x6df713c9 +drivers/scsi/scsi_mod scsi_do_req 0xac42077a +drivers/scsi/scsi_mod scsi_execute 0x35041175 +drivers/scsi/scsi_mod scsi_execute_req 0xa382afa0 +drivers/scsi/scsi_mod scsi_extd_sense_format 0x11267875 +drivers/scsi/scsi_mod scsi_finish_command 0x8b14079b +drivers/scsi/scsi_mod scsi_flush_work 0x37e1314e +drivers/scsi/scsi_mod scsi_free_host_dev 0xcec2f7d6 +drivers/scsi/scsi_mod scsi_get_command 0x00830f5d +drivers/scsi/scsi_mod scsi_get_host_dev 0x12e57b5e +drivers/scsi/scsi_mod scsi_get_sense_info_fld 0x796fc5ce +drivers/scsi/scsi_mod scsi_host_alloc 0x313988c3 +drivers/scsi/scsi_mod scsi_host_get 0x4d6390c5 +drivers/scsi/scsi_mod scsi_host_lookup 0x872022e6 +drivers/scsi/scsi_mod scsi_host_put 0x901fb12d +drivers/scsi/scsi_mod scsi_host_set_state 0xa03c6e81 +drivers/scsi/scsi_mod scsi_internal_device_block 0xed8cb47f +drivers/scsi/scsi_mod scsi_internal_device_unblock 0xb51bf3ce +drivers/scsi/scsi_mod scsi_io_completion 0xdcccf447 +drivers/scsi/scsi_mod scsi_ioctl 0x62bac0b1 +drivers/scsi/scsi_mod scsi_ioctl_send_command 0xb9133510 +drivers/scsi/scsi_mod scsi_is_host_device 0xcaef2f64 +drivers/scsi/scsi_mod scsi_is_sdev_device 0x49f8976b +drivers/scsi/scsi_mod scsi_is_target_device 0x58cfb75a +drivers/scsi/scsi_mod scsi_logging_level 0xaf3dd7dc +drivers/scsi/scsi_mod scsi_mode_sense 0x59f96373 +drivers/scsi/scsi_mod scsi_nonblockable_ioctl 0x97a1ce6e +drivers/scsi/scsi_mod scsi_normalize_sense 0x0c65e73c +drivers/scsi/scsi_mod scsi_partsize 0x4afe9a77 +drivers/scsi/scsi_mod scsi_print_command 0x6437eb82 +drivers/scsi/scsi_mod scsi_print_msg 0x67f88938 +drivers/scsi/scsi_mod scsi_print_req_sense 0x648f5641 +drivers/scsi/scsi_mod scsi_print_sense 0xebac4531 +drivers/scsi/scsi_mod scsi_print_sense_hdr 0xca5dbc50 +drivers/scsi/scsi_mod scsi_print_status 0x9cfd56c5 +drivers/scsi/scsi_mod scsi_put_command 0x66d34731 +drivers/scsi/scsi_mod scsi_queue_work 0x8b3ea95d +drivers/scsi/scsi_mod scsi_register 0xfd58f6d8 +drivers/scsi/scsi_mod scsi_register_driver 0x5b53f425 +drivers/scsi/scsi_mod scsi_register_interface 0xb0963f08 +drivers/scsi/scsi_mod scsi_release_request 0x5de4ac3e +drivers/scsi/scsi_mod scsi_remove_device 0xce5f11a3 +drivers/scsi/scsi_mod scsi_remove_host 0x88f9b740 +drivers/scsi/scsi_mod scsi_remove_target 0x68e0fe9d +drivers/scsi/scsi_mod scsi_report_bus_reset 0xc1585db3 +drivers/scsi/scsi_mod scsi_report_device_reset 0x48b5c8ca +drivers/scsi/scsi_mod scsi_request_normalize_sense 0x218d0129 +drivers/scsi/scsi_mod scsi_rescan_device 0xae6c31a7 +drivers/scsi/scsi_mod scsi_reset_provider 0xa2aa6c5f +drivers/scsi/scsi_mod scsi_scan_host 0x22b261a8 +drivers/scsi/scsi_mod scsi_scan_target 0xd4d40d0f +drivers/scsi/scsi_mod scsi_sense_desc_find 0x2b0ba2b0 +drivers/scsi/scsi_mod scsi_sense_key_string 0x96cd2b04 +drivers/scsi/scsi_mod scsi_set_medium_removal 0xc04f63cf +drivers/scsi/scsi_mod scsi_setup_blk_pc_cmnd 0xdd540599 +drivers/scsi/scsi_mod scsi_target_block 0xc6a893bf +drivers/scsi/scsi_mod scsi_target_quiesce 0x93fe178c +drivers/scsi/scsi_mod scsi_target_resume 0xe98becce +drivers/scsi/scsi_mod scsi_target_unblock 0x9e2425b1 +drivers/scsi/scsi_mod scsi_test_unit_ready 0x4cf4e984 +drivers/scsi/scsi_mod scsi_track_queue_full 0xca18db75 +drivers/scsi/scsi_mod scsi_unblock_requests 0x382508db +drivers/scsi/scsi_mod scsi_unregister 0xf3ee1844 +drivers/scsi/scsi_mod scsicam_bios_param 0x480a0667 +drivers/scsi/scsi_mod starget_for_each_device 0x192aaacb +drivers/scsi/scsi_transport_fc fc_attach_transport 0xc1b514f1 +drivers/scsi/scsi_transport_fc fc_release_transport 0x92433499 +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x2f8d9028 +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0xd1591f3d +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x949be437 +drivers/scsi/scsi_transport_fc fc_remove_host 0xfb620a15 +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0x9343089e +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x8533ba57 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x51b4b159 +drivers/scsi/scsi_transport_sas sas_attach_transport 0x04ed350a +drivers/scsi/scsi_transport_sas sas_phy_add 0xaf96b905 +drivers/scsi/scsi_transport_sas sas_phy_alloc 0x9d4d1b57 +drivers/scsi/scsi_transport_sas sas_phy_delete 0xa32fde11 +drivers/scsi/scsi_transport_sas sas_phy_free 0x8d59aac9 +drivers/scsi/scsi_transport_sas sas_release_transport 0x5b299dea +drivers/scsi/scsi_transport_sas sas_remove_host 0xa48b113f +drivers/scsi/scsi_transport_sas sas_rphy_add 0xd676ed64 +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x915b6a07 +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x85ba4d0e +drivers/scsi/scsi_transport_sas sas_rphy_free 0xdcc764fb +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0xaf7ab85f +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0x964dd6a4 +drivers/scsi/scsi_transport_spi spi_attach_transport 0x3115399c +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0x2937f03c +drivers/scsi/scsi_transport_spi spi_dv_device 0xcef89aa3 +drivers/scsi/scsi_transport_spi spi_release_transport 0x5d188064 +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0xc5cd0b74 +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x6dc12107 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0x9f652efc +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x6983b65c +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0xc3fbef5d +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0xc82dd5a1 +drivers/telephony/ixj ixj_pcmcia_probe 0x806d40b2 +drivers/telephony/phonedev phone_register_device 0xb4001b4e +drivers/telephony/phonedev phone_unregister_device 0x4bdb907c +drivers/usb/atm/usbatm usbatm_usb_disconnect 0x520f16ab +drivers/usb/atm/usbatm usbatm_usb_probe 0x282059a7 +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x633e8102 +drivers/usb/core/usbcore usb_alloc_dev 0x086d2a2b +drivers/usb/core/usbcore usb_alloc_urb 0xd0373ac6 +drivers/usb/core/usbcore usb_altnum_to_altsetting 0x89567cd1 +drivers/usb/core/usbcore usb_buffer_alloc 0x673cb58b +drivers/usb/core/usbcore usb_buffer_free 0x71715840 +drivers/usb/core/usbcore usb_buffer_map_sg 0x99980d87 +drivers/usb/core/usbcore usb_buffer_unmap_sg 0x363c5c27 +drivers/usb/core/usbcore usb_bulk_msg 0xa31a32aa +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0xfa3f0918 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0xcf518909 +drivers/usb/core/usbcore usb_claim_bandwidth 0x386e7710 +drivers/usb/core/usbcore usb_clear_halt 0x81c31f09 +drivers/usb/core/usbcore usb_control_msg 0xd7bdda61 +drivers/usb/core/usbcore usb_create_hcd 0xef9723e1 +drivers/usb/core/usbcore usb_deregister 0x07d9b176 +drivers/usb/core/usbcore usb_deregister_dev 0x5cc26d4f +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0x44f57068 +drivers/usb/core/usbcore usb_driver_claim_interface 0x5d0fe771 +drivers/usb/core/usbcore usb_driver_release_interface 0x68489b43 +drivers/usb/core/usbcore usb_find_device 0x59a1f4f6 +drivers/usb/core/usbcore usb_find_interface 0x530d653b +drivers/usb/core/usbcore usb_free_urb 0x0b845d26 +drivers/usb/core/usbcore usb_get_current_frame_number 0xae175bd2 +drivers/usb/core/usbcore usb_get_descriptor 0x20bbd3c4 +drivers/usb/core/usbcore usb_get_dev 0xc00934c3 +drivers/usb/core/usbcore usb_get_intf 0x4f684bd3 +drivers/usb/core/usbcore usb_get_status 0x8884a699 +drivers/usb/core/usbcore usb_get_string 0x3f3e7eb8 +drivers/usb/core/usbcore usb_get_urb 0x73ee2139 +drivers/usb/core/usbcore usb_hc_died 0x5548d53a +drivers/usb/core/usbcore usb_hcd_giveback_urb 0x53f231fe +drivers/usb/core/usbcore usb_hcd_pci_probe 0xc63f401e +drivers/usb/core/usbcore usb_hcd_pci_remove 0x0e886374 +drivers/usb/core/usbcore usb_hcd_pci_resume 0x5db95ab2 +drivers/usb/core/usbcore usb_hcd_pci_suspend 0x1e1e1be4 +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0x5c0d2894 +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0x976fa5ee +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0xac7ea095 +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0xe22681f5 +drivers/usb/core/usbcore usb_ifnum_to_if 0x718861e1 +drivers/usb/core/usbcore usb_init_urb 0xef3d7668 +drivers/usb/core/usbcore usb_kill_urb 0xa5f83880 +drivers/usb/core/usbcore usb_lock_device 0x7915617c +drivers/usb/core/usbcore usb_lock_device_for_reset 0xb0a3f255 +drivers/usb/core/usbcore usb_match_id 0x74ac2c0b +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0x89f85997 +drivers/usb/core/usbcore usb_put_dev 0x20b388c5 +drivers/usb/core/usbcore usb_put_hcd 0x646b243f +drivers/usb/core/usbcore usb_put_intf 0xc9acef12 +drivers/usb/core/usbcore usb_register 0xf16c8500 +drivers/usb/core/usbcore usb_register_dev 0xcffc9776 +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x3c3604fe +drivers/usb/core/usbcore usb_remove_hcd 0xc610f2c4 +drivers/usb/core/usbcore usb_reset_configuration 0x47f73511 +drivers/usb/core/usbcore usb_reset_device 0x1869b1e9 +drivers/usb/core/usbcore usb_set_device_state 0xa2ad36f8 +drivers/usb/core/usbcore usb_set_interface 0xe4b44a14 +drivers/usb/core/usbcore usb_sg_cancel 0xd128ae2d +drivers/usb/core/usbcore usb_sg_init 0x5e6cfe2c +drivers/usb/core/usbcore usb_sg_wait 0xe6da69c1 +drivers/usb/core/usbcore usb_string 0x8cab655a +drivers/usb/core/usbcore usb_submit_urb 0x57f0155c +drivers/usb/core/usbcore usb_trylock_device 0xcb04ddc6 +drivers/usb/core/usbcore usb_unlink_urb 0x7e848c95 +drivers/usb/core/usbcore usb_unlock_device 0x7a636e36 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/gadget/net2280 net2280_set_fifo_mode 0x67eba6dc +drivers/usb/gadget/net2280 usb_gadget_register_driver 0xff7fd052 +drivers/usb/gadget/net2280 usb_gadget_unregister_driver 0xcae59280 +drivers/usb/host/sl811-hcd sl811h_driver 0x1727aed8 +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0x426881b5 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x62ee5d03 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0xcb41b1a0 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0x33364960 +drivers/usb/media/usbvideo RingQueue_Dequeue 0xc62c3f97 +drivers/usb/media/usbvideo RingQueue_Enqueue 0x079325e3 +drivers/usb/media/usbvideo RingQueue_Flush 0x99ede02c +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0xa104e316 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0x8e4523c9 +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x93e22923 +drivers/usb/media/usbvideo usbvideo_Deregister 0x1f0ecf10 +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0xd559a060 +drivers/usb/media/usbvideo usbvideo_TestPattern 0xb08c157f +drivers/usb/media/usbvideo usbvideo_register 0xb3b97888 +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0xeb502065 +drivers/usb/media/w9968cf w9968cf_vppmod_register 0x90e14025 +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0x443bf2a9 +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0x421e47ba +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0x06a6c468 +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0xad6d715d +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0x16f85089 +drivers/usb/net/usbnet usbnet_defer_kevent 0x61216a24 +drivers/usb/net/usbnet usbnet_disconnect 0x73da7215 +drivers/usb/net/usbnet usbnet_get_drvinfo 0x9cca6289 +drivers/usb/net/usbnet usbnet_get_endpoints 0xd33eeedc +drivers/usb/net/usbnet usbnet_get_msglevel 0x5ee0a41f +drivers/usb/net/usbnet usbnet_probe 0x9f0b3f7a +drivers/usb/net/usbnet usbnet_resume 0x9787fd3b +drivers/usb/net/usbnet usbnet_set_msglevel 0x3136d9c3 +drivers/usb/net/usbnet usbnet_skb_return 0xf4b29b4f +drivers/usb/net/usbnet usbnet_suspend 0x3c19ed54 +drivers/usb/serial/usbserial ezusb_set_reset 0xce52372a +drivers/usb/serial/usbserial ezusb_writememory 0x15f4453b +drivers/usb/serial/usbserial usb_serial_deregister 0x54ab3fd2 +drivers/usb/serial/usbserial usb_serial_disconnect 0x76f9d3ea +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x3edff2d6 +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0xe694c7f8 +drivers/usb/serial/usbserial usb_serial_register 0x8e8e61a7 +drivers/video/backlight/backlight backlight_device_register 0xa24dad56 +drivers/video/backlight/backlight backlight_device_unregister 0xedf660d5 +drivers/video/backlight/lcd lcd_device_register 0x6ccd3c29 +drivers/video/backlight/lcd lcd_device_unregister 0xbd5278a6 +drivers/video/console/bitblit fbcon_set_bitops 0xb87ef619 +drivers/video/console/font find_font 0xf7584a9c +drivers/video/console/font get_default_font 0x093e3659 +drivers/video/console/softcursor soft_cursor 0xd9389de6 +drivers/video/console/tileblit fbcon_set_tileops 0x99f816d8 +drivers/video/cyber2000fb cyber2000fb_attach 0x56b3c269 +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x320507ff +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0x3f1373ae +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0xa82b0f94 +drivers/video/macmodes mac_find_mode 0x9db4442e +drivers/video/macmodes mac_map_monitor_sense 0xe2304303 +drivers/video/macmodes mac_var_to_vmode 0x00907cd5 +drivers/video/macmodes mac_vmode_to_var 0x08ed0b62 +drivers/video/matrox/g450_pll g450_mnp2f 0xc6dc3e05 +drivers/video/matrox/g450_pll matroxfb_g450_setclk 0x0f2d428c +drivers/video/matrox/g450_pll matroxfb_g450_setpll_cond 0xedeacc3f +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_init 0xbdc075e6 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_restore 0xe9b1ea63 +drivers/video/matrox/matroxfb_DAC1064 matrox_G100 0x45175d19 +drivers/video/matrox/matroxfb_DAC1064 matrox_mystique 0x903755c8 +drivers/video/matrox/matroxfb_Ti3026 matrox_millennium 0x4bfe464b +drivers/video/matrox/matroxfb_accel matrox_cfbX_init 0xd8e223a5 +drivers/video/matrox/matroxfb_base matroxfb_enable_irq 0x5d0db0b6 +drivers/video/matrox/matroxfb_base matroxfb_register_driver 0x1a1ea8fd +drivers/video/matrox/matroxfb_base matroxfb_unregister_driver 0x32bfadff +drivers/video/matrox/matroxfb_base matroxfb_wait_for_sync 0x37edf8fd +drivers/video/matrox/matroxfb_g450 matroxfb_g450_connect 0x8919b84c +drivers/video/matrox/matroxfb_g450 matroxfb_g450_shutdown 0xb4d1a6d0 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_in 0x8162e84d +drivers/video/matrox/matroxfb_misc matroxfb_DAC_out 0x910d283a +drivers/video/matrox/matroxfb_misc matroxfb_PLL_calcclock 0x25cf8049 +drivers/video/matrox/matroxfb_misc matroxfb_read_pins 0x7ad781d6 +drivers/video/matrox/matroxfb_misc matroxfb_var2my 0xabd8e427 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWinit 0x1bdaa7e8 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWrestore 0x6cfee9af +drivers/video/sis/sisfb sis_free 0x454a3cf0 +drivers/video/sis/sisfb sis_free_new 0x1114b236 +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0x94195102 +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0xdcea32d4 +drivers/w1/ds9490r ds_put_device 0x1559de5e +drivers/w1/ds9490r ds_read_bit 0x66d3e448 +drivers/w1/ds9490r ds_read_block 0x29fb9c90 +drivers/w1/ds9490r ds_read_byte 0xab94378f +drivers/w1/ds9490r ds_reset 0xf4602068 +drivers/w1/ds9490r ds_touch_bit 0x490d3ea1 +drivers/w1/ds9490r ds_write_bit 0xdb91f081 +drivers/w1/ds9490r ds_write_block 0xb3e4a683 +drivers/w1/ds9490r ds_write_byte 0x4963528a +drivers/w1/wire w1_add_master_device 0xd703c624 +drivers/w1/wire w1_calc_crc8 0x7c2f2afb +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xb0c86d52 +drivers/w1/wire w1_family_put 0x45181a35 +drivers/w1/wire w1_family_registered 0x345f469c +drivers/w1/wire w1_read_8 0x94e64989 +drivers/w1/wire w1_read_block 0x406cef47 +drivers/w1/wire w1_register_family 0xadeb1de9 +drivers/w1/wire w1_remove_master_device 0x31a7a05c +drivers/w1/wire w1_reset_bus 0xcb6f1ab6 +drivers/w1/wire w1_reset_select_slave 0x1c93aced +drivers/w1/wire w1_search_devices 0x18ea582e +drivers/w1/wire w1_touch_bit 0x62a0e942 +drivers/w1/wire w1_unregister_family 0x2616cdb9 +drivers/w1/wire w1_write_8 0xbf4b896b +drivers/w1/wire w1_write_block 0x8b7e2256 +fs/configfs/configfs config_group_init 0x52e89954 +fs/configfs/configfs config_group_init_type_name 0x6ebbdb13 +fs/configfs/configfs config_item_get 0xabddb531 +fs/configfs/configfs config_item_init 0x517c09b1 +fs/configfs/configfs config_item_init_type_name 0xbc47992d +fs/configfs/configfs config_item_put 0x92a4b813 +fs/configfs/configfs config_item_set_name 0x0fbb4abb +fs/configfs/configfs configfs_register_subsystem 0x81aea644 +fs/configfs/configfs configfs_unregister_subsystem 0x63066ba2 +fs/exportfs/exportfs export_op_default 0x8d7a1551 +fs/exportfs/exportfs find_exported_dentry 0x20bd5985 +fs/fat/fat fat_add_entries 0x53bf6ab4 +fs/fat/fat fat_alloc_new_dir 0x229034cf +fs/fat/fat fat_attach 0xb8d6b0d3 +fs/fat/fat fat_build_inode 0x98c73be8 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0x1f0390b4 +fs/fat/fat fat_dir_empty 0x0b4053d6 +fs/fat/fat fat_fill_super 0xb5683bab +fs/fat/fat fat_free_clusters 0xc5ec5cbb +fs/fat/fat fat_fs_panic 0x288e0540 +fs/fat/fat fat_get_dotdot_entry 0x72472c4e +fs/fat/fat fat_notify_change 0x496fd226 +fs/fat/fat fat_remove_entries 0x256c3ba7 +fs/fat/fat fat_scan 0x5a410d8f +fs/fat/fat fat_search_long 0x317387e1 +fs/fat/fat fat_sync_bhs 0x42ddd03e +fs/fat/fat fat_sync_inode 0x5a549279 +fs/jbd/jbd journal_abort 0xc69a3daf +fs/jbd/jbd journal_ack_err 0x455c1e08 +fs/jbd/jbd journal_blocks_per_page 0x8885609f +fs/jbd/jbd journal_check_available_features 0x94d3fc1b +fs/jbd/jbd journal_check_used_features 0x6e9b17e7 +fs/jbd/jbd journal_clear_err 0x06444db3 +fs/jbd/jbd journal_create 0x92169824 +fs/jbd/jbd journal_destroy 0xe4ac9ecd +fs/jbd/jbd journal_dirty_data 0x07878f75 +fs/jbd/jbd journal_dirty_metadata 0x22fe4199 +fs/jbd/jbd journal_errno 0xf299adc4 +fs/jbd/jbd journal_extend 0xfd7a0512 +fs/jbd/jbd journal_flush 0xb3db344c +fs/jbd/jbd journal_force_commit 0x77f689fe +fs/jbd/jbd journal_force_commit_nested 0x4d7f3053 +fs/jbd/jbd journal_forget 0x51ba1ab3 +fs/jbd/jbd journal_get_create_access 0x62debbd1 +fs/jbd/jbd journal_get_undo_access 0xf0815973 +fs/jbd/jbd journal_get_write_access 0x84eeb274 +fs/jbd/jbd journal_init_dev 0xb4ad34bf +fs/jbd/jbd journal_init_inode 0x11ed9074 +fs/jbd/jbd journal_invalidatepage 0xeb622c9e +fs/jbd/jbd journal_load 0x7a500a77 +fs/jbd/jbd journal_lock_updates 0xc4b79ebd +fs/jbd/jbd journal_release_buffer 0xe2f0fdeb +fs/jbd/jbd journal_restart 0xc0ababc6 +fs/jbd/jbd journal_revoke 0x363b9e83 +fs/jbd/jbd journal_set_features 0xc7deaf90 +fs/jbd/jbd journal_start 0x6ee429e3 +fs/jbd/jbd journal_start_commit 0xd1d24f8a +fs/jbd/jbd journal_stop 0x5956ccb7 +fs/jbd/jbd journal_try_to_free_buffers 0x0086e686 +fs/jbd/jbd journal_unlock_updates 0x01fa75df +fs/jbd/jbd journal_update_format 0xc5e40ff9 +fs/jbd/jbd journal_update_superblock 0xa1000820 +fs/jbd/jbd journal_wipe 0x88153d45 +fs/jbd/jbd log_wait_commit 0xada8306f +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0x89ea3c23 +fs/lockd/lockd nlmsvc_ops 0x472952a9 +fs/nfsd/nfsd nfs4_acl_add_ace 0x1bb3671e +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/relayfs/relayfs relay_buf_full 0x7cf5c19b +fs/relayfs/relayfs relay_close 0x53eab9c5 +fs/relayfs/relayfs relay_flush 0x6ca4323c +fs/relayfs/relayfs relay_open 0x45717a80 +fs/relayfs/relayfs relay_reset 0xb37a7000 +fs/relayfs/relayfs relay_subbufs_consumed 0xfe40082b +fs/relayfs/relayfs relay_switch_subbuf 0xa5effb74 +fs/relayfs/relayfs relayfs_create_dir 0x28d5e0c2 +fs/relayfs/relayfs relayfs_file_operations 0x30511a4a +fs/relayfs/relayfs relayfs_remove_dir 0x0e345122 +lib/crc-ccitt crc_ccitt 0x3771b461 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x8ffdb3b8 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x2329b292 +lib/libcrc32c crc32c_le 0x37d0b921 +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0x37cd1faf +net/appletalk/appletalk alloc_ltalkdev 0x54b07eb9 +net/appletalk/appletalk atalk_find_dev_addr 0x198db473 +net/appletalk/appletalk atrtr_get_dev 0x89b83082 +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0x1801797d +net/ax25/ax25 ax25_findbyuid 0x564d9f14 +net/ax25/ax25 ax25_hard_header 0x8b59a6aa +net/ax25/ax25 ax25_linkfail_register 0xdcf14589 +net/ax25/ax25 ax25_linkfail_release 0x048f85ce +net/ax25/ax25 ax25_listen_register 0xe40f337c +net/ax25/ax25 ax25_listen_release 0xe69d9fd4 +net/ax25/ax25 ax25_protocol_register 0x80cce2f6 +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0x88c58cae +net/ax25/ax25 ax25_send_frame 0x0e028b62 +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0xfe580182 +net/bluetooth/bluetooth bt_accept_enqueue 0xffdb006e +net/bluetooth/bluetooth bt_accept_unlink 0xdd5d0179 +net/bluetooth/bluetooth bt_class 0xc8ef7b41 +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0x09ff8426 +net/bluetooth/bluetooth bt_sock_poll 0xa35d5979 +net/bluetooth/bluetooth bt_sock_recvmsg 0xcbcc4477 +net/bluetooth/bluetooth bt_sock_register 0x5371b8c7 +net/bluetooth/bluetooth bt_sock_unlink 0x37e72c3b +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0x0e877721 +net/bluetooth/bluetooth hci_alloc_dev 0xe2dcc8b2 +net/bluetooth/bluetooth hci_conn_auth 0x2dd44ed0 +net/bluetooth/bluetooth hci_conn_change_link_key 0xbf3921f4 +net/bluetooth/bluetooth hci_conn_encrypt 0xbb921e0e +net/bluetooth/bluetooth hci_conn_switch_role 0xda8b5b3c +net/bluetooth/bluetooth hci_connect 0xbcd98d81 +net/bluetooth/bluetooth hci_free_dev 0x57a2285d +net/bluetooth/bluetooth hci_get_route 0x2c45aa74 +net/bluetooth/bluetooth hci_register_cb 0x31139246 +net/bluetooth/bluetooth hci_register_dev 0x182cd0dc +net/bluetooth/bluetooth hci_register_proto 0x48db61ea +net/bluetooth/bluetooth hci_resume_dev 0xacf215ae +net/bluetooth/bluetooth hci_send_acl 0xbcd8d865 +net/bluetooth/bluetooth hci_send_sco 0xc169ad3c +net/bluetooth/bluetooth hci_suspend_dev 0x7be0e9ae +net/bluetooth/bluetooth hci_unregister_cb 0x730ce708 +net/bluetooth/bluetooth hci_unregister_dev 0x9e2dce1c +net/bluetooth/bluetooth hci_unregister_proto 0x42fd7b8f +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0xce8ff73d +net/bridge/netfilter/ebtables ebt_do_table 0x1b45b125 +net/bridge/netfilter/ebtables ebt_register_match 0xe97e41df +net/bridge/netfilter/ebtables ebt_register_table 0x924b6e79 +net/bridge/netfilter/ebtables ebt_register_target 0x27862f05 +net/bridge/netfilter/ebtables ebt_register_watcher 0xa42f15e4 +net/bridge/netfilter/ebtables ebt_unregister_match 0x4911b9fa +net/bridge/netfilter/ebtables ebt_unregister_table 0x0a070bbd +net/bridge/netfilter/ebtables ebt_unregister_target 0x8567fa7f +net/bridge/netfilter/ebtables ebt_unregister_watcher 0xb7bbb08f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x3a18e70d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0x71ecc67f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x7824d7b3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xded46fa7 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0x90fd9de1 +net/dccp/dccp ccid_init 0x12aa4fb8 +net/dccp/dccp ccid_register 0xe54b05a9 +net/dccp/dccp ccid_unregister 0xcd4d138c +net/dccp/dccp dccp_hashinfo 0xfa5e7f34 +net/dccp/dccp dccp_insert_option 0xc16f1838 +net/dccp/dccp dccp_insert_option_elapsed_time 0x641546c9 +net/dccp/dccp dccp_insert_option_timestamp 0x7333f00a +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0x8db5a15d +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0xa164c070 +net/ieee80211/ieee80211 alloc_ieee80211 0xe1ba2146 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0xdfc4858d +net/ieee80211/ieee80211 ieee80211_channel_to_index 0x54ff74ba +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0x0595acd8 +net/ieee80211/ieee80211 ieee80211_get_channel 0x744fda84 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0xa54bc337 +net/ieee80211/ieee80211 ieee80211_get_geo 0x58b54d0b +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0x92de3d15 +net/ieee80211/ieee80211 ieee80211_rx 0x29ce4f67 +net/ieee80211/ieee80211 ieee80211_rx_mgt 0xdc4e67ea +net/ieee80211/ieee80211 ieee80211_set_geo 0xad2239ae +net/ieee80211/ieee80211 ieee80211_tx_frame 0xd71eb933 +net/ieee80211/ieee80211 ieee80211_txb_free 0x8793ce3e +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0xe7669ef6 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0x1a904b4f +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x85904d36 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0x422164ac +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0xf4bd9958 +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x3f4981c1 +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0xa0212e2d +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0x9e855aa6 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x028a0ce4 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0xa46adfbd +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x1a405abc +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0x7f4335b0 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x6667ea85 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0x109771a8 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0xecb887ac +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x0a12ede7 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0x49cb5a58 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0xbaf5f5ae +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0x643e9134 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0xb303cb86 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0xe5f09f6d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0xaf55a7f9 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0x2cdacc99 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0x446af99c +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0xd1e20f8f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x367c33e3 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0xd7e81c27 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x1da79971 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x7517ac74 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0xc2390821 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x6077e43f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0xc9fe6bea +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x75bf655a +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x1b882e3c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0xf1d46d43 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0xe4d39188 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0xe84a86ee +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0x16bf10c5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0x28c36f0e +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0x88f578c9 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x15ef1497 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0x7e34b729 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0x32a89e81 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x48423f9c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0xebefc752 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0xdd127fcb +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x755a2f89 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0x323de1be +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0xf56c226b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0x9954f837 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0xd21b6a3a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0x79f06b16 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x611bf497 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0xe591949c +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0x5ac5dfab +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0xccfb74e7 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x64b244b7 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x37e0a46c +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0xfccab186 +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0xf3b3e5d7 +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0xe8ce26b2 +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0x715bc263 +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0x40a24dcd +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0xe457c0eb +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0xaef5d8ac +net/ipv4/ipvs/ip_vs register_ip_vs_app 0xa1301956 +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0xab78410b +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0x8e54b9a0 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0x9605eded +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0x66f130b5 +net/ipv4/netfilter/arp_tables arpt_do_table 0x0537a519 +net/ipv4/netfilter/arp_tables arpt_register_table 0x8f60f35f +net/ipv4/netfilter/arp_tables arpt_register_target 0xadc06fe6 +net/ipv4/netfilter/arp_tables arpt_unregister_table 0x1158411f +net/ipv4/netfilter/arp_tables arpt_unregister_target 0xd8094d10 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x08574c3f +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x27904aca +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0x28065782 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x4578b347 +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0xcec0a851 +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0x3c3624ed +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x9c613bcd +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0x40e1ce96 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0xeae5421a +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0x7590d8c3 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0xdc2ed246 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x4af6c96c +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0x75708f81 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0x12278b76 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x89c07bc5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0xe7d454e2 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0xf105f8e1 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0x96ae9373 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x6a260f60 +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0x2b4ec0f9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0xbfad5212 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0xee4ffff1 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0xb675875c +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0xe0b95659 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0xcc66bd1b +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0x6d576215 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0xe7145787 +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x675189f3 +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0x5db616a2 +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0xf14b9641 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0xbe57255f +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0x66d97800 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0x2f59b1f4 +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0xfb591d2b +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x37bfe2db +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x240e2a24 +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0x32f4a0ed +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0xfba00244 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0xd308d7fb +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0x191b7c64 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0x0bb0b1cc +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0xee4a7552 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x130904af +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0x53a90663 +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0xa1c89d16 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0x9fac9133 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0x58ebfb78 +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0x4bb93e8a +net/ipv4/netfilter/ip_nat ip_nat_packet 0x93fdd890 +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0xe9aac07b +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x3a101420 +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x58ae6af4 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0x02fc8f83 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x6e4e4736 +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0x433418b9 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0xf36ec1e9 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0xec98e3f1 +net/ipv4/netfilter/ip_tables ipt_do_table 0x23ffe1bc +net/ipv4/netfilter/ip_tables ipt_find_target 0x1585451a +net/ipv4/netfilter/ip_tables ipt_register_match 0x7ae1a5bc +net/ipv4/netfilter/ip_tables ipt_register_table 0xbd5a2f57 +net/ipv4/netfilter/ip_tables ipt_register_target 0xbb029489 +net/ipv4/netfilter/ip_tables ipt_unregister_match 0x63519dff +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x37a996d8 +net/ipv4/netfilter/ip_tables ipt_unregister_target 0x870f0201 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0x53b89d6f +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0xa692529f +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0xce8e74b0 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0x8bd8db9f +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x5dcdc482 +net/ipv6/ipv6 inet6_add_protocol 0x38144c4d +net/ipv6/ipv6 inet6_bind 0x8d518a01 +net/ipv6/ipv6 inet6_del_protocol 0xd303553a +net/ipv6/ipv6 inet6_getname 0xb3e547dd +net/ipv6/ipv6 inet6_ioctl 0x547b61e8 +net/ipv6/ipv6 inet6_register_protosw 0x2f082154 +net/ipv6/ipv6 inet6_release 0x63ab9d9f +net/ipv6/ipv6 inet6_unregister_protosw 0xb17c87bd +net/ipv6/ipv6 ip6_route_me_harder 0x665536c3 +net/ipv6/ipv6 ip6_route_output 0xcd42cfe0 +net/ipv6/ipv6 ip6_xmit 0xc622721e +net/ipv6/ipv6 ipv6_chk_addr 0xfd75a0fe +net/ipv6/ipv6 ipv6_get_saddr 0xb0a4a785 +net/ipv6/ipv6 ipv6_getsockopt 0x0fa36338 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0x4f5e6fde +net/ipv6/ipv6 ipv6_setsockopt 0x2802aa15 +net/ipv6/ipv6 ndisc_mc_map 0xd897a570 +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x638f003b +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0x34be4cfe +net/ipv6/ipv6 xfrm6_rcv_spi 0xb642686d +net/ipv6/netfilter/ip6_tables ip6t_do_table 0x8d348572 +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0xfd10622f +net/ipv6/netfilter/ip6_tables ip6t_register_table 0x028ced92 +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x5032f721 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0x3fb6416e +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0xea2f0158 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0x8776e29a +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0xdfecad9c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0x61814a27 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0xa3b1b507 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/irda/ircomm/ircomm ircomm_close 0x20c35693 +net/irda/ircomm/ircomm ircomm_connect_request 0x6adad792 +net/irda/ircomm/ircomm ircomm_connect_response 0xfe418f86 +net/irda/ircomm/ircomm ircomm_control_request 0xfc31becf +net/irda/ircomm/ircomm ircomm_data_request 0x0f32a085 +net/irda/ircomm/ircomm ircomm_disconnect_request 0x877988ea +net/irda/ircomm/ircomm ircomm_flow_request 0x874c7286 +net/irda/ircomm/ircomm ircomm_open 0xa13b4195 +net/irda/irda alloc_irdadev 0x3f0036e2 +net/irda/irda async_unwrap_char 0x75aad31e +net/irda/irda async_wrap_skb 0x4b519aaa +net/irda/irda hashbin_delete 0x9f3fdb15 +net/irda/irda hashbin_find 0xc9697ed6 +net/irda/irda hashbin_get_first 0xafb532f6 +net/irda/irda hashbin_get_next 0xdd673d0a +net/irda/irda hashbin_insert 0xf10e95cc +net/irda/irda hashbin_lock_find 0x7bee2e3d +net/irda/irda hashbin_new 0x96c5cfee +net/irda/irda hashbin_remove 0x229d35b6 +net/irda/irda hashbin_remove_this 0x9722368a +net/irda/irda irda_debug 0x38a20e5b +net/irda/irda irda_device_dongle_cleanup 0x59effcec +net/irda/irda irda_device_dongle_init 0xcd18a3b5 +net/irda/irda irda_device_register_dongle 0x874398a2 +net/irda/irda irda_device_set_media_busy 0x2317ebd2 +net/irda/irda irda_device_unregister_dongle 0xc550aead +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0xecb6f90d +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_setup_dma 0xf39b7fe0 +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0x390fcf17 +net/irda/irda iriap_getvaluebyclass_request 0x6def717c +net/irda/irda iriap_open 0x9a8b6546 +net/irda/irda irias_add_integer_attrib 0x87b3f3d3 +net/irda/irda irias_add_octseq_attrib 0x26c6095d +net/irda/irda irias_add_string_attrib 0x315da11c +net/irda/irda irias_delete_object 0x1c8a1c31 +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x49291c9d +net/irda/irda irias_find_object 0x09676c38 +net/irda/irda irias_insert_object 0xa337379a +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0x6082a8bf +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0xfc8b53fa +net/irda/irda irlap_open 0x0c28d34a +net/irda/irda irlmp_close_lsap 0xd5463be4 +net/irda/irda irlmp_connect_request 0xfd518e6d +net/irda/irda irlmp_connect_response 0xde4e3b68 +net/irda/irda irlmp_data_request 0xca6dc117 +net/irda/irda irlmp_disconnect_request 0x42ebb7a0 +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0x1de67a42 +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0xa77bf854 +net/irda/irda irttp_connect_request 0x839cff8c +net/irda/irda irttp_connect_response 0xea28d062 +net/irda/irda irttp_data_request 0xbf236d7d +net/irda/irda irttp_disconnect_request 0xc36cec1e +net/irda/irda irttp_dup 0x42dce13d +net/irda/irda irttp_flow_request 0xcb628c67 +net/irda/irda irttp_open_tsap 0xa03aa48a +net/irda/irda irttp_udata_request 0x03893090 +net/irda/irda proc_irda 0x44d9d9ae +net/lapb/lapb lapb_connect_request 0x22322ff6 +net/lapb/lapb lapb_data_received 0xfc968363 +net/lapb/lapb lapb_data_request 0x2bbea9f2 +net/lapb/lapb lapb_disconnect_request 0x85bb6f51 +net/lapb/lapb lapb_getparms 0xbed1f0b8 +net/lapb/lapb lapb_register 0x4f453e54 +net/lapb/lapb lapb_setparms 0x054001d3 +net/lapb/lapb lapb_unregister 0x3e054a37 +net/netfilter/nfnetlink __nfa_fill 0x1fbdd438 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0x46281741 +net/netfilter/nfnetlink nfnetlink_subsys_register 0x655f001c +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0x1e27839e +net/netfilter/nfnetlink nfnetlink_unicast 0xf272f979 +net/rxrpc/rxrpc rxrpc_add_service 0x48bd73b1 +net/rxrpc/rxrpc rxrpc_call_abort 0xafcbb318 +net/rxrpc/rxrpc rxrpc_call_read_data 0xa89076f4 +net/rxrpc/rxrpc rxrpc_call_write_data 0x6f6a9e61 +net/rxrpc/rxrpc rxrpc_create_call 0xf281199f +net/rxrpc/rxrpc rxrpc_create_connection 0x96b0ac49 +net/rxrpc/rxrpc rxrpc_create_transport 0x856d0b5b +net/rxrpc/rxrpc rxrpc_del_service 0x2eaa37ae +net/rxrpc/rxrpc rxrpc_put_call 0x4249b7aa +net/rxrpc/rxrpc rxrpc_put_connection 0x31ffc071 +net/rxrpc/rxrpc rxrpc_put_transport 0xf482255a +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x00c52ef5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0xb5dea7ef +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xf8b2ff6e +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0xfdc0196c +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0xe8502ceb +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0x3a103669 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0x73a37f6a +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0x5e203023 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0xab5750df +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0x95419bab +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0x73d5597c +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0xc02d6602 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0x93732a57 +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0x8dfa7322 +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0xdab24b93 +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0x422dc7de +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x4c2f4b6d +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x8d1a827e +net/sunrpc/sunrpc auth_domain_find 0xce9b7a1f +net/sunrpc/sunrpc auth_domain_lookup 0xa74157e3 +net/sunrpc/sunrpc auth_domain_put 0xb7e2b4a5 +net/sunrpc/sunrpc auth_unix_add_addr 0xb8520a43 +net/sunrpc/sunrpc auth_unix_forget_old 0x758f9c49 +net/sunrpc/sunrpc auth_unix_lookup 0xd1d4e136 +net/sunrpc/sunrpc cache_check 0x031c6ceb +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0x871f1bd3 +net/sunrpc/sunrpc cache_init 0xc244025c +net/sunrpc/sunrpc cache_purge 0x3235e18b +net/sunrpc/sunrpc cache_register 0x77c741ec +net/sunrpc/sunrpc cache_unregister 0x73a2e538 +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0xd411c331 +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0x617a7fca +net/sunrpc/sunrpc rpc_bind_new_program 0x0187bd67 +net/sunrpc/sunrpc rpc_call_async 0x50cb8c66 +net/sunrpc/sunrpc rpc_call_setup 0x6cf832fe +net/sunrpc/sunrpc rpc_call_sync 0x9a43dced +net/sunrpc/sunrpc rpc_clnt_sigmask 0x118005c8 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0x662c4257 +net/sunrpc/sunrpc rpc_clone_client 0x906f8b9c +net/sunrpc/sunrpc rpc_create_client 0x1dea0556 +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0x5e44c0de +net/sunrpc/sunrpc rpc_destroy_client 0xe97e3724 +net/sunrpc/sunrpc rpc_execute 0x89310702 +net/sunrpc/sunrpc rpc_init_task 0xcaf88185 +net/sunrpc/sunrpc rpc_init_wait_queue 0x11e11d3f +net/sunrpc/sunrpc rpc_killall_tasks 0x3be08abd +net/sunrpc/sunrpc rpc_max_payload 0xfed0bd1f +net/sunrpc/sunrpc rpc_mkpipe 0xd46c3adb +net/sunrpc/sunrpc rpc_new_child 0xc186b61c +net/sunrpc/sunrpc rpc_new_client 0x69d86cf7 +net/sunrpc/sunrpc rpc_new_task 0xd358be2e +net/sunrpc/sunrpc rpc_proc_register 0x54c1cb26 +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x3a3201fe +net/sunrpc/sunrpc rpc_release_client 0x65ac48ce +net/sunrpc/sunrpc rpc_release_task 0x932a9f70 +net/sunrpc/sunrpc rpc_restart_call 0x6fb643f5 +net/sunrpc/sunrpc rpc_run_child 0x9bc47e97 +net/sunrpc/sunrpc rpc_setbufsize 0xbe9ed18c +net/sunrpc/sunrpc rpc_shutdown_client 0xe288edc1 +net/sunrpc/sunrpc rpc_sleep_on 0x0cdcd00d +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0xe2c0d089 +net/sunrpc/sunrpc rpc_wake_up_next 0x49438c94 +net/sunrpc/sunrpc rpc_wake_up_status 0x6bd6a967 +net/sunrpc/sunrpc rpc_wake_up_task 0x7ebe666f +net/sunrpc/sunrpc rpcauth_create 0xc83fe122 +net/sunrpc/sunrpc rpcauth_free_credcache 0x9004d9b9 +net/sunrpc/sunrpc rpcauth_init_credcache 0x62d28c00 +net/sunrpc/sunrpc rpcauth_lookup_credcache 0x828dc829 +net/sunrpc/sunrpc rpcauth_lookupcred 0x8734a53a +net/sunrpc/sunrpc rpcauth_register 0x7177b94b +net/sunrpc/sunrpc rpcauth_unregister 0xccfc8411 +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x0a894414 +net/sunrpc/sunrpc svc_auth_unregister 0x0f668ba9 +net/sunrpc/sunrpc svc_authenticate 0xc979a218 +net/sunrpc/sunrpc svc_create 0x7dbd83fe +net/sunrpc/sunrpc svc_create_thread 0xee7d7f5c +net/sunrpc/sunrpc svc_destroy 0x3663c47c +net/sunrpc/sunrpc svc_drop 0xf6b525e3 +net/sunrpc/sunrpc svc_exit_thread 0x5e869833 +net/sunrpc/sunrpc svc_makesock 0xea624b28 +net/sunrpc/sunrpc svc_proc_register 0x9e9521c4 +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0x9f51ffd0 +net/sunrpc/sunrpc svc_recv 0xa3401b0a +net/sunrpc/sunrpc svc_reserve 0x100192c4 +net/sunrpc/sunrpc svc_seq_show 0xa86ef639 +net/sunrpc/sunrpc svc_set_client 0xeea7915c +net/sunrpc/sunrpc svc_wake_up 0x7879fca7 +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x96946e44 +net/sunrpc/sunrpc xdr_buf_from_iov 0xddcfeb5e +net/sunrpc/sunrpc xdr_buf_read_netobj 0xdf9c33f0 +net/sunrpc/sunrpc xdr_buf_subsegment 0x36453d18 +net/sunrpc/sunrpc xdr_decode_array2 0x4a63fc5d +net/sunrpc/sunrpc xdr_decode_netobj 0x1be57115 +net/sunrpc/sunrpc xdr_decode_string 0x6755aa62 +net/sunrpc/sunrpc xdr_decode_string_inplace 0x7bd87272 +net/sunrpc/sunrpc xdr_decode_word 0xcd7771a0 +net/sunrpc/sunrpc xdr_encode_array2 0xd44a38b2 +net/sunrpc/sunrpc xdr_encode_netobj 0x29c6f164 +net/sunrpc/sunrpc xdr_encode_opaque 0x0e9e79d5 +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0x587d494b +net/sunrpc/sunrpc xdr_encode_pages 0xbc4706c5 +net/sunrpc/sunrpc xdr_encode_string 0xabc0fe0c +net/sunrpc/sunrpc xdr_encode_word 0xc5e67784 +net/sunrpc/sunrpc xdr_init_decode 0x35853a97 +net/sunrpc/sunrpc xdr_init_encode 0x20ba226d +net/sunrpc/sunrpc xdr_inline_decode 0xecddc56c +net/sunrpc/sunrpc xdr_inline_pages 0x971420ec +net/sunrpc/sunrpc xdr_read_pages 0xe22772ec +net/sunrpc/sunrpc xdr_reserve_space 0xa9a80e0c +net/sunrpc/sunrpc xdr_shift_buf 0xc30b3ab5 +net/sunrpc/sunrpc xdr_write_pages 0x6dfaf181 +net/sunrpc/sunrpc xprt_create_proto 0x8246447d +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x6b14bb8d +net/wanrouter/wanrouter register_wan_device 0xfb3aeb5c +net/wanrouter/wanrouter unlock_adapter_irq 0x53a2e800 +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0x109db312 +net/wanrouter/wanrouter wanrouter_type_trans 0x87549e71 +security/commoncap cap_bprm_apply_creds 0xac7a0bca +security/commoncap cap_bprm_secureexec 0x266d5fff +security/commoncap cap_bprm_set_security 0x5a9efaed +security/commoncap cap_capable 0x82420885 +security/commoncap cap_capget 0x8034ab81 +security/commoncap cap_capset_check 0xb776a83e +security/commoncap cap_capset_set 0xb0aa9ac7 +security/commoncap cap_inode_removexattr 0x0fb72d71 +security/commoncap cap_inode_setxattr 0x5fd96324 +security/commoncap cap_netlink_recv 0x25114759 +security/commoncap cap_netlink_send 0x7beaf41f +security/commoncap cap_ptrace 0x0303d8fd +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x372390b2 +security/commoncap cap_task_reparent_to_init 0x4574e599 +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x70b91814 +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-gf1 snd_seq_gf1_init 0x9da48ff9 +sound/core/seq/instr/snd-ainstr-iw snd_seq_iwffff_init 0x5d8aab91 +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x4402508a +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0xa39c94db +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0x9763e597 +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x850a422b +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x89947013 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x896201d9 +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x5b5a8a2e +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0xf02bb907 +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x3a6ab315 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x9a4c5e93 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0x8b6d0c74 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0x2a687b76 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0x4f46dcf1 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x30657d29 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0xdbdd9ad1 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x24b8399a +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x195c80b1 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x866949af +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x8db6a0a8 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0xe9e12582 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0x48e008d5 +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0xef539d6c +sound/core/snd copy_from_user_toio 0xce3ca308 +sound/core/snd copy_to_user_fromio 0x602c96f0 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0xf659b28a +sound/core/snd snd_card_file_add 0x8d74a098 +sound/core/snd snd_card_file_remove 0xe499fb4e +sound/core/snd snd_card_free 0x62a52a2b +sound/core/snd snd_card_free_in_thread 0x9a2b0471 +sound/core/snd snd_card_new 0xaccff3e7 +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0x85941724 +sound/core/snd snd_card_register 0x2f3f3dfd +sound/core/snd snd_card_set_generic_dev 0xd8b0de00 +sound/core/snd snd_card_set_generic_pm_callback 0x1074aa7f +sound/core/snd snd_card_set_pm_callback 0x8992908f +sound/core/snd snd_cards 0x02bbbac1 +sound/core/snd snd_component_add 0x66c7cc05 +sound/core/snd snd_ctl_add 0x30b2632a +sound/core/snd snd_ctl_elem_read 0x5471165c +sound/core/snd snd_ctl_elem_write 0xb516d0c3 +sound/core/snd snd_ctl_find_id 0x71928c78 +sound/core/snd snd_ctl_find_numid 0x2da34890 +sound/core/snd snd_ctl_free_one 0x774470b4 +sound/core/snd snd_ctl_new 0x9a3b98e1 +sound/core/snd snd_ctl_new1 0x14e192c2 +sound/core/snd snd_ctl_notify 0x80c2616c +sound/core/snd snd_ctl_register_ioctl 0x6ec8c2ab +sound/core/snd snd_ctl_remove 0xf0ce1f99 +sound/core/snd snd_ctl_remove_id 0x0357553d +sound/core/snd snd_ctl_rename_id 0x0977e37e +sound/core/snd snd_ctl_unregister_ioctl 0x3c51dd72 +sound/core/snd snd_device_free 0x7a37a021 +sound/core/snd snd_device_new 0x9e4007ff +sound/core/snd snd_device_register 0x70290006 +sound/core/snd snd_dma_disable 0x70c15ac1 +sound/core/snd snd_dma_pointer 0x191e88cf +sound/core/snd snd_dma_program 0x18e1683f +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0xd2f82f75 +sound/core/snd snd_info_create_module_entry 0xd176891f +sound/core/snd snd_info_free_entry 0x2914453e +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0x998e2a4f +sound/core/snd snd_info_unregister 0xa50558da +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0x55914c84 +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0x7699b6c7 +sound/core/snd snd_register_device 0x495e932b +sound/core/snd snd_register_oss_device 0x539b13bc +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0x9241e514 +sound/core/snd snd_unregister_device 0x5c1bf1c7 +sound/core/snd snd_unregister_oss_device 0x2d641e83 +sound/core/snd-hwdep snd_hwdep_new 0xa9319af8 +sound/core/snd-page-alloc snd_dma_alloc_pages 0xf32a5074 +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0x13f02952 +sound/core/snd-page-alloc snd_dma_free_pages 0xf389d5b0 +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0xc59c3410 +sound/core/snd-page-alloc snd_dma_reserve_buf 0xc6341092 +sound/core/snd-page-alloc snd_free_pages 0x3b91f3af +sound/core/snd-page-alloc snd_malloc_pages 0xade88e76 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x0beab9b1 +sound/core/snd-pcm snd_pcm_devices 0xdf6ea75b +sound/core/snd-pcm snd_pcm_format_big_endian 0x93878ece +sound/core/snd-pcm snd_pcm_format_linear 0x8733f967 +sound/core/snd-pcm snd_pcm_format_little_endian 0x8bbdc311 +sound/core/snd-pcm snd_pcm_format_name 0xedd5b5bd +sound/core/snd-pcm snd_pcm_format_physical_width 0xa8edfa41 +sound/core/snd-pcm snd_pcm_format_set_silence 0xdf124602 +sound/core/snd-pcm snd_pcm_format_signed 0xe2c5f868 +sound/core/snd-pcm snd_pcm_format_silence_64 0xda29bc77 +sound/core/snd-pcm snd_pcm_format_size 0x6f3fba79 +sound/core/snd-pcm snd_pcm_format_unsigned 0x95a60aa5 +sound/core/snd-pcm snd_pcm_format_width 0x55eb2175 +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0x6d9f0f37 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0xff18b9c9 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0x0ca6a27d +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x53525cec +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0x969ba446 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x0cc02043 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x81414232 +sound/core/snd-pcm snd_pcm_hw_constraint_step 0xb4d3908d +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0x30b769ff +sound/core/snd-pcm snd_pcm_hw_constraints_init 0x4b8c28a8 +sound/core/snd-pcm snd_pcm_hw_param_first 0x032c154a +sound/core/snd-pcm snd_pcm_hw_param_last 0xfd1ba66b +sound/core/snd-pcm snd_pcm_hw_param_mask 0x685b51c1 +sound/core/snd-pcm snd_pcm_hw_param_near 0x3fa88910 +sound/core/snd-pcm snd_pcm_hw_param_set 0xd30d17dc +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0xbb440c3f +sound/core/snd-pcm snd_pcm_hw_rule_add 0xc9317dbd +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0x3c8a5af4 +sound/core/snd-pcm snd_pcm_kernel_ioctl 0xed2f1d97 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x7266b31a +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0xfa36cdf7 +sound/core/snd-pcm snd_pcm_lib_free_pages 0x57723844 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x96fb9ae1 +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x90f7b0ec +sound/core/snd-pcm snd_pcm_lib_mmap_iomem 0x3c03f587 +sound/core/snd-pcm snd_pcm_lib_period_bytes 0xfc6bf592 +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x12093fd4 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0x1cdf71ec +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0x3f03b46d +sound/core/snd-pcm snd_pcm_lib_read 0x19290104 +sound/core/snd-pcm snd_pcm_lib_readv 0x0c79a389 +sound/core/snd-pcm snd_pcm_lib_write 0xf9c62ea4 +sound/core/snd-pcm snd_pcm_lib_writev 0xb5695dcf +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x68783b28 +sound/core/snd-pcm snd_pcm_link_rwlock 0x011bbb0e +sound/core/snd-pcm snd_pcm_mmap_data 0xedc7c4ec +sound/core/snd-pcm snd_pcm_new 0x728f34e1 +sound/core/snd-pcm snd_pcm_new_stream 0xe4dd0808 +sound/core/snd-pcm snd_pcm_notify 0x232fe2b0 +sound/core/snd-pcm snd_pcm_open_substream 0x7fd28d54 +sound/core/snd-pcm snd_pcm_period_elapsed 0x00259ecd +sound/core/snd-pcm snd_pcm_release_substream 0x5951b582 +sound/core/snd-pcm snd_pcm_set_ops 0x11186e38 +sound/core/snd-pcm snd_pcm_set_sync 0xa1dd42cc +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0xf0853dce +sound/core/snd-pcm snd_pcm_stop 0xa2b97e99 +sound/core/snd-pcm snd_pcm_suspend 0x075f0451 +sound/core/snd-pcm snd_pcm_suspend_all 0xa9798d2b +sound/core/snd-rawmidi snd_rawmidi_drain_input 0x5040b72e +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x496d31f3 +sound/core/snd-rawmidi snd_rawmidi_drop_output 0xf1310e6f +sound/core/snd-rawmidi snd_rawmidi_info 0xb645fb9a +sound/core/snd-rawmidi snd_rawmidi_info_select 0x1cb0e050 +sound/core/snd-rawmidi snd_rawmidi_input_params 0x43c9b633 +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0xb8c978db +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0x04384776 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0xb71ce5fc +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x354c92b5 +sound/core/snd-rawmidi snd_rawmidi_new 0xecb1e78f +sound/core/snd-rawmidi snd_rawmidi_output_params 0xd83b9022 +sound/core/snd-rawmidi snd_rawmidi_receive 0x1d1c24d4 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x8421c102 +sound/core/snd-rawmidi snd_rawmidi_transmit 0x59c594bd +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x07eecf15 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0xd96767e6 +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0xa3c01ec2 +sound/core/snd-timer snd_timer_close 0x18610cd8 +sound/core/snd-timer snd_timer_continue 0xe46a0594 +sound/core/snd-timer snd_timer_global_free 0xf1e1492d +sound/core/snd-timer snd_timer_global_new 0x7af8d525 +sound/core/snd-timer snd_timer_global_register 0x61f195d2 +sound/core/snd-timer snd_timer_global_unregister 0x292e9c97 +sound/core/snd-timer snd_timer_interrupt 0x50d63a4e +sound/core/snd-timer snd_timer_new 0x4b88ca65 +sound/core/snd-timer snd_timer_notify 0x4930314f +sound/core/snd-timer snd_timer_open 0x5f3cf268 +sound/core/snd-timer snd_timer_pause 0x6aad8908 +sound/core/snd-timer snd_timer_resolution 0x3aac0093 +sound/core/snd-timer snd_timer_start 0xff0802fd +sound/core/snd-timer snd_timer_stop 0x2c47a6c5 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0xe7ecaf45 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x51f2dcb0 +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0xf1dd054b +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0x722bbcf5 +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0x1121f5fd +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0x6e4a9260 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0x5e29c961 +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0xef63f855 +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0xaad8604a +sound/drivers/opl4/snd-opl4-lib snd_opl4_create 0x70724bd3 +sound/drivers/opl4/snd-opl4-lib snd_opl4_read 0x8b8ba457 +sound/drivers/opl4/snd-opl4-lib snd_opl4_read_memory 0xe3e79355 +sound/drivers/opl4/snd-opl4-lib snd_opl4_write 0xfc31776a +sound/drivers/opl4/snd-opl4-lib snd_opl4_write_memory 0x2bc4e4bf +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x4b79b8e1 +sound/drivers/vx/snd-vx-lib snd_vx_create 0x5d440c5a +sound/drivers/vx/snd-vx-lib snd_vx_delay 0xba7a5174 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x804c995a +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x282f4cc0 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0xb301a60f +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x895b5b98 +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0xcffce99d +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0x27806101 +sound/i2c/other/snd-ak4114 snd_ak4114_build 0x3204eb4b +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0xbbf1831f +sound/i2c/other/snd-ak4114 snd_ak4114_create 0xc8027d9b +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0x724630cc +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0xec867251 +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0x4900fdf6 +sound/i2c/other/snd-ak4117 snd_ak4117_build 0x438b3099 +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0xf7fe92b2 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0x54c46092 +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x1689e6ac +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x62d3a2f1 +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x7b202262 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0xbd11fa62 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0xa07be89d +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0x7e76a8e9 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0xa734e469 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0x1bd1bef4 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0xf67d0870 +sound/i2c/snd-cs8427 snd_cs8427_create 0x9cfb3a61 +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0xa7327d79 +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0x6252b120 +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0xb015a188 +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0xeb28da52 +sound/i2c/snd-cs8427 snd_cs8427_reset 0xaf53ba01 +sound/i2c/snd-i2c snd_i2c_bus_create 0x429a490e +sound/i2c/snd-i2c snd_i2c_device_create 0xec39edaa +sound/i2c/snd-i2c snd_i2c_device_free 0x3cf96e98 +sound/i2c/snd-i2c snd_i2c_probeaddr 0xa9acc22e +sound/i2c/snd-i2c snd_i2c_readbytes 0x9f0e78c1 +sound/i2c/snd-i2c snd_i2c_sendbytes 0x072043e5 +sound/i2c/snd-tea6330t snd_tea6330t_detect 0x8f1af036 +sound/i2c/snd-tea6330t snd_tea6330t_update_mixer 0xc3417713 +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_create 0x87e415b3 +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_mixer 0xdc08c642 +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_pcm 0xc9747e67 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_add_ctl 0x95cb938b +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_create 0x275f9426 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_get_pcm_ops 0xa1e5eedc +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_mixer 0x294bccf6 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_out 0x143531f6 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_pcm 0xd7c2c9ec +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_chip_id 0x4ee8de1b +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_create 0xf2c35362 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_get_double 0x600ad9fd +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_get_single 0x3ad62b34 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_in 0xac83af24 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_info_double 0xac73981a +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_info_single 0x755e4ae4 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_interrupt 0xa2de426c +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mce_down 0x84d3e1a5 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mce_up 0x8a45a9e0 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mixer 0x6ba46849 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_out 0xb384662a +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_pcm 0xe28e0103 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_put_double 0x21601c92 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_put_single 0x7bbcee5b +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_timer 0x4c416a05 +sound/isa/cs423x/snd-cs4231-lib snd_cs4236_ext_in 0x635e9e2f +sound/isa/cs423x/snd-cs4231-lib snd_cs4236_ext_out 0x26a2b683 +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_create 0x839fdd26 +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_mixer 0x3ae5fe48 +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_pcm 0x1b4993d7 +sound/isa/es1688/snd-es1688-lib snd_es1688_create 0x592b2072 +sound/isa/es1688/snd-es1688-lib snd_es1688_mixer 0xc9b8e743 +sound/isa/es1688/snd-es1688-lib snd_es1688_mixer_write 0x74b197f5 +sound/isa/es1688/snd-es1688-lib snd_es1688_pcm 0x7f913b00 +sound/isa/gus/snd-gus-lib snd_gf1_alloc_voice 0x10f326c8 +sound/isa/gus/snd-gus-lib snd_gf1_atten_table 0xc43a5527 +sound/isa/gus/snd-gus-lib snd_gf1_ctrl_stop 0xbc8fa3b2 +sound/isa/gus/snd-gus-lib snd_gf1_delay 0xb2944832 +sound/isa/gus/snd-gus-lib snd_gf1_dram_addr 0xe6e7b3fb +sound/isa/gus/snd-gus-lib snd_gf1_free_voice 0x17c59fe6 +sound/isa/gus/snd-gus-lib snd_gf1_i_look16 0x046af0b0 +sound/isa/gus/snd-gus-lib snd_gf1_i_look8 0xc77457f0 +sound/isa/gus/snd-gus-lib snd_gf1_i_write8 0x182a0f12 +sound/isa/gus/snd-gus-lib snd_gf1_look16 0x2a478a24 +sound/isa/gus/snd-gus-lib snd_gf1_look8 0x1d47f61e +sound/isa/gus/snd-gus-lib snd_gf1_lvol_to_gvol_raw 0x46db8d67 +sound/isa/gus/snd-gus-lib snd_gf1_mem_alloc 0x82800ff7 +sound/isa/gus/snd-gus-lib snd_gf1_mem_free 0xa4e13a83 +sound/isa/gus/snd-gus-lib snd_gf1_mem_lock 0xa3ed86e7 +sound/isa/gus/snd-gus-lib snd_gf1_mem_xfree 0x059d3386 +sound/isa/gus/snd-gus-lib snd_gf1_new_mixer 0x50e6a435 +sound/isa/gus/snd-gus-lib snd_gf1_pcm_new 0x0bdcce4e +sound/isa/gus/snd-gus-lib snd_gf1_peek 0x1254ffdd +sound/isa/gus/snd-gus-lib snd_gf1_poke 0x12f32f22 +sound/isa/gus/snd-gus-lib snd_gf1_rawmidi_new 0xa3d5d954 +sound/isa/gus/snd-gus-lib snd_gf1_stop_voice 0x54bc672a +sound/isa/gus/snd-gus-lib snd_gf1_translate_freq 0xf7702e22 +sound/isa/gus/snd-gus-lib snd_gf1_write16 0x3f4787ee +sound/isa/gus/snd-gus-lib snd_gf1_write8 0x542f2ae0 +sound/isa/gus/snd-gus-lib snd_gf1_write_addr 0x60623c8c +sound/isa/gus/snd-gus-lib snd_gus_create 0xd29c2e0f +sound/isa/gus/snd-gus-lib snd_gus_dram_read 0x8f16df91 +sound/isa/gus/snd-gus-lib snd_gus_dram_write 0x7b98da64 +sound/isa/gus/snd-gus-lib snd_gus_initialize 0x33587c53 +sound/isa/gus/snd-gus-lib snd_gus_interrupt 0xe8226527 +sound/isa/gus/snd-gus-lib snd_gus_use_dec 0x619d068d +sound/isa/gus/snd-gus-lib snd_gus_use_inc 0x791f07f8 +sound/isa/sb/snd-sb-common snd_sbdsp_command 0x1c3c8809 +sound/isa/sb/snd-sb-common snd_sbdsp_create 0xf2b7ba56 +sound/isa/sb/snd-sb-common snd_sbdsp_get_byte 0x1cee929e +sound/isa/sb/snd-sb-common snd_sbdsp_reset 0xf5ae86ef +sound/isa/sb/snd-sb-common snd_sbmixer_add_ctl 0xfae4e92b +sound/isa/sb/snd-sb-common snd_sbmixer_new 0x2d6b1e8c +sound/isa/sb/snd-sb-common snd_sbmixer_read 0x6f99a608 +sound/isa/sb/snd-sb-common snd_sbmixer_write 0x23dec881 +sound/isa/sb/snd-sb16-csp snd_sb_csp_new 0xda12f63d +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_configure 0xa0db2867 +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_get_pcm_ops 0xaa7112f3 +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_interrupt 0x89f51d7b +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_pcm 0x98a0cfa6 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_interrupt 0xe70f54c5 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_midi 0x3e22ce5c +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_midi_interrupt 0x04a31e91 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_pcm 0xece7147f +sound/isa/sb/snd-sbawe snd_emu8000_dma_chan 0xd8aef46a +sound/isa/sb/snd-sbawe snd_emu8000_init_fm 0x69df7d5a +sound/isa/sb/snd-sbawe snd_emu8000_load_chorus_fx 0x6a9fb85e +sound/isa/sb/snd-sbawe snd_emu8000_load_reverb_fx 0xfc02e314 +sound/isa/sb/snd-sbawe snd_emu8000_peek 0xc352f924 +sound/isa/sb/snd-sbawe snd_emu8000_peek_dw 0x020926dd +sound/isa/sb/snd-sbawe snd_emu8000_poke 0xebd3d5c5 +sound/isa/sb/snd-sbawe snd_emu8000_poke_dw 0x5d9a4d63 +sound/isa/sb/snd-sbawe snd_emu8000_update_chorus_mode 0x5c7ef8a0 +sound/isa/sb/snd-sbawe snd_emu8000_update_equalizer 0x0764ce92 +sound/isa/sb/snd-sbawe snd_emu8000_update_reverb_mode 0x4da697e1 +sound/oss/ac97_codec ac97_alloc_codec 0xa5567a6a +sound/oss/ac97_codec ac97_probe_codec 0x07581ca0 +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0x681c9f5d +sound/oss/ac97_codec ac97_release_codec 0x6497a931 +sound/oss/ac97_codec ac97_restore_state 0x449096c1 +sound/oss/ac97_codec ac97_save_state 0x2604cabc +sound/oss/ac97_codec ac97_set_adc_rate 0xfc96dcda +sound/oss/ac97_codec ac97_set_dac_rate 0x6b92d4c8 +sound/oss/ac97_codec ac97_tune_hardware 0x89748ec4 +sound/oss/ac97_codec ac97_unregister_driver 0x3771c065 +sound/oss/aci aci_port 0x0d82adb6 +sound/oss/aci aci_rw_cmd 0xcc7c4cd8 +sound/oss/aci aci_version 0x93350c87 +sound/oss/ad1848 ad1848_control 0xc04f6f67 +sound/oss/ad1848 ad1848_detect 0x845a1638 +sound/oss/ad1848 ad1848_init 0x61e6ce09 +sound/oss/ad1848 ad1848_unload 0x9bf1cc62 +sound/oss/ad1848 adintr 0x509bfb25 +sound/oss/ad1848 attach_ms_sound 0xbb1d9af2 +sound/oss/ad1848 probe_ms_sound 0x65e6d1ca +sound/oss/ad1848 unload_ms_sound 0xb29a9148 +sound/oss/mpu401 attach_mpu401 0x18254124 +sound/oss/mpu401 intchk_mpu401 0x5fe6dd42 +sound/oss/mpu401 mpuintr 0x48dfd0bc +sound/oss/mpu401 probe_mpu401 0x5c8d3e32 +sound/oss/mpu401 unload_mpu401 0x5febf284 +sound/oss/opl3 opl3_detect 0x67481767 +sound/oss/opl3 opl3_init 0xc1ec6483 +sound/oss/sb_lib probe_sbmpu 0xeec27836 +sound/oss/sb_lib sb_be_quiet 0x42424109 +sound/oss/sb_lib sb_dsp_detect 0xd8a2731c +sound/oss/sb_lib sb_dsp_init 0xc09b2ff0 +sound/oss/sb_lib sb_dsp_unload 0xc4884969 +sound/oss/sb_lib smw_free 0x450f9aea +sound/oss/sb_lib unload_sbmpu 0x74afd69c +sound/oss/sound DMAbuf_close_dma 0xc88b42ab +sound/oss/sound DMAbuf_inputintr 0xeb315d99 +sound/oss/sound DMAbuf_open_dma 0x06b3013d +sound/oss/sound DMAbuf_outputintr 0x987bcf12 +sound/oss/sound DMAbuf_start_dma 0xe056b71c +sound/oss/sound MIDIbuf_avail 0x1f395686 +sound/oss/sound audio_devs 0xdbcb77c5 +sound/oss/sound cent_tuning 0x03ce7ff7 +sound/oss/sound compute_finetune 0x04c87ec8 +sound/oss/sound conf_printf 0x0f280035 +sound/oss/sound conf_printf2 0x7bdf0907 +sound/oss/sound do_midi_msg 0xb51587f6 +sound/oss/sound load_mixer_volumes 0xa1d5f04f +sound/oss/sound midi_devs 0x12905ec4 +sound/oss/sound midi_synth_aftertouch 0xf1ea8a20 +sound/oss/sound midi_synth_bender 0xba7dd041 +sound/oss/sound midi_synth_close 0xad45df73 +sound/oss/sound midi_synth_controller 0x892093e0 +sound/oss/sound midi_synth_hw_control 0xb14b22cd +sound/oss/sound midi_synth_ioctl 0xaef743b2 +sound/oss/sound midi_synth_kill_note 0x2aa31695 +sound/oss/sound midi_synth_load_patch 0xf7426da3 +sound/oss/sound midi_synth_open 0xf6b3a2fb +sound/oss/sound midi_synth_panning 0xdb400afa +sound/oss/sound midi_synth_reset 0x56504ca2 +sound/oss/sound midi_synth_send_sysex 0xfddcbfb3 +sound/oss/sound midi_synth_set_instr 0xd85be938 +sound/oss/sound midi_synth_setup_voice 0x4ff47e9d +sound/oss/sound midi_synth_start_note 0x9bdaf24d +sound/oss/sound mixer_devs 0xe9d9af5a +sound/oss/sound note_to_freq 0x5d986fc9 +sound/oss/sound num_audiodevs 0x4cd01bdd +sound/oss/sound num_midis 0xa1eae7cf +sound/oss/sound num_mixers 0x9d845b18 +sound/oss/sound semitone_tuning 0x8b84aeb1 +sound/oss/sound seq_copy_to_input 0x7679ee76 +sound/oss/sound seq_input_event 0x17ba231d +sound/oss/sound sequencer_init 0xf78f6363 +sound/oss/sound sequencer_timer 0x90bd9714 +sound/oss/sound sound_alloc_dma 0x9a95733f +sound/oss/sound sound_alloc_mididev 0xba413f87 +sound/oss/sound sound_alloc_mixerdev 0x1b3df3cf +sound/oss/sound sound_alloc_synthdev 0xc748d109 +sound/oss/sound sound_alloc_timerdev 0x51e354b2 +sound/oss/sound sound_close_dma 0x418f5fbe +sound/oss/sound sound_free_dma 0x394cb088 +sound/oss/sound sound_install_audiodrv 0xad6b65ea +sound/oss/sound sound_install_mixer 0x72fadef1 +sound/oss/sound sound_open_dma 0xcc4b8797 +sound/oss/sound sound_timer_devs 0xa4bcbcdb +sound/oss/sound sound_timer_init 0x2161d5e8 +sound/oss/sound sound_timer_interrupt 0xe2675a79 +sound/oss/sound sound_timer_syncinterval 0xfa6871be +sound/oss/sound sound_unload_audiodev 0xa948751e +sound/oss/sound sound_unload_mididev 0xa6bb414c +sound/oss/sound sound_unload_mixerdev 0xa51c913b +sound/oss/sound sound_unload_synthdev 0x06339815 +sound/oss/sound sound_unload_timerdev 0xa41ead5f +sound/oss/sound synth_devs 0xf53c8f8c +sound/oss/uart401 probe_uart401 0x15c83a2e +sound/oss/uart401 uart401intr 0x5df70158 +sound/oss/uart401 unload_uart401 0xecfdd9c9 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x2793620d +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0xb8184139 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0x3af93550 +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0xc4189831 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0xecf7220d +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x102f1dfe +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x88d69f45 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0x9029b8ed +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0x3fcd633e +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0x41520bbc +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0x97b100ac +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0x342a2e09 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0xb20ece01 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0x3ecd9bf7 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0x99191aed +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0x74d2cab5 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0xf6cd6e61 +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0x75afaa09 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0x85c51bce +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x88273377 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0x216bd7bb +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0x7e57fac1 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0xbfe7b674 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0x5ad9d766 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0x1567a2a4 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0x8cc77cbc +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0xc6367c7d +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0xf51f0c7e +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0x8a8c29d9 +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0x71f6e416 +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0x31cee6c2 +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0xea1ddb79 +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0x1408f2f9 +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x29079314 +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0x412dcbc3 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0x75ad5713 +sound/pci/hda/snd-hda-codec snd_hda_resume 0x46630e92 +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0x2100e384 +sound/pci/hda/snd-hda-codec snd_hda_suspend 0xfe4f071b +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0x93bff2b7 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0xe834bb7f +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0x4b7d728e +sound/pci/trident/snd-trident snd_trident_alloc_voice 0xded5f7c6 +sound/pci/trident/snd-trident snd_trident_free_voice 0x3500433e +sound/pci/trident/snd-trident snd_trident_start_voice 0x2e00ed7b +sound/pci/trident/snd-trident snd_trident_stop_voice 0xae42db82 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0x3cc66722 +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0x331205bf +sound/pci/trident/snd-trident snd_trident_synth_free 0xe08c56ee +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0x504d1c21 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0x20026c1a +sound/soundcore register_sound_midi 0xdcc83969 +sound/soundcore register_sound_mixer 0x28db6e02 +sound/soundcore register_sound_special 0x05fe020d +sound/soundcore register_sound_special_device 0xf01e85f4 +sound/soundcore register_sound_synth 0xeec97e6c +sound/soundcore sound_class 0x05791ac1 +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +sound/synth/emux/snd-emux-synth snd_emux_free 0x92dd9550 +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0x627066e5 +sound/synth/emux/snd-emux-synth snd_emux_new 0x666b9bf1 +sound/synth/emux/snd-emux-synth snd_emux_register 0x996c0c68 +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0x77650d43 +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0xfe14acb9 +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0xd3c1adac +sound/synth/snd-util-mem __snd_util_mem_free 0x1fd6c8dc +sound/synth/snd-util-mem __snd_util_memblk_new 0x6b442bbf +sound/synth/snd-util-mem snd_util_mem_alloc 0xb13b09a0 +sound/synth/snd-util-mem snd_util_mem_avail 0xc6d9c71f +sound/synth/snd-util-mem snd_util_mem_free 0xea2de30c +sound/synth/snd-util-mem snd_util_memhdr_free 0x7ad0c23d +sound/synth/snd-util-mem snd_util_memhdr_new 0x0c5322df +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0x8acb0a3b +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux EISA_bus 0x7413793a +vmlinux IO_APIC_get_PCI_irq_vector 0x1eb922a3 +vmlinux I_BDEV 0xf949997d +vmlinux MCA_bus 0xf48a2c4c +vmlinux SELECT_DRIVE 0x72a7bf02 +vmlinux __PAGE_KERNEL 0x95cc2139 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0x48f76043 +vmlinux __alloc_pages 0x90a3d4c1 +vmlinux __alloc_percpu 0x50c89f23 +vmlinux __alloc_skb 0xaf5917b2 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0xe9f4f717 +vmlinux __bio_clone 0x34114a19 +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0xc9612842 +vmlinux __bread 0x5e2b77ae +vmlinux __breadahead 0xbb308ed4 +vmlinux __break_lease 0xa5adb586 +vmlinux __brelse 0xdb107a73 +vmlinux __check_region 0xf1d0cdab +vmlinux __clear_user 0x2455c156 +vmlinux __const_udelay 0xeae3dfd6 +vmlinux __copy_from_user_ll 0x1af40e18 +vmlinux __copy_to_user_ll 0xd7474566 +vmlinux __cpufreq_driver_target 0xd3fd8f3a +vmlinux __create_workqueue 0xfcef237f +vmlinux __d_path 0x5921f1ad +vmlinux __delay 0x466c14a7 +vmlinux __dev_get_by_index 0x3c39f724 +vmlinux __dev_get_by_name 0x9cd07ad4 +vmlinux __dev_remove_pack 0x1b0bc569 +vmlinux __down_failed 0x96b27088 +vmlinux __down_failed_interruptible 0x625acc81 +vmlinux __down_failed_trylock 0x02cd3086 +vmlinux __dst_free 0xb52b1287 +vmlinux __elv_add_request 0xc2b584a7 +vmlinux __find_get_block 0xc7dd441b +vmlinux __free_pages 0xb8e0400a +vmlinux __generic_file_aio_read 0x5c7c176f +vmlinux __generic_unplug_device 0x949b9284 +vmlinux __get_free_pages 0x107d6ba3 +vmlinux __get_user_1 0xd16ac615 +vmlinux __get_user_2 0x4888a014 +vmlinux __get_user_4 0xa03d6a57 +vmlinux __getblk 0x870fb93b +vmlinux __ide_abort 0xe4d90fc9 +vmlinux __ide_dma_bad_drive 0x7fb0c40e +vmlinux __ide_dma_check 0x6eafdd82 +vmlinux __ide_dma_end 0x32135d6c +vmlinux __ide_dma_good_drive 0x2018e23d +vmlinux __ide_dma_host_off 0xeb641d1e +vmlinux __ide_dma_host_on 0x767f49ae +vmlinux __ide_dma_lostirq 0x863f11d0 +vmlinux __ide_dma_off 0x24819b04 +vmlinux __ide_dma_off_quietly 0xa773fd23 +vmlinux __ide_dma_on 0x296cca98 +vmlinux __ide_dma_timeout 0x0f2b96a3 +vmlinux __ide_end_request 0xb4a55e42 +vmlinux __ide_error 0x1ce08eee +vmlinux __ide_pci_register_driver 0x42bb09d6 +vmlinux __inet_lookup_listener 0xe09fcca2 +vmlinux __inet_twsk_hashdance 0x919b64c4 +vmlinux __inet_twsk_kill 0x4cdc387d +vmlinux __init_timer_base 0xfcafa2e2 +vmlinux __inode_dir_notify 0xfb767920 +vmlinux __insert_inode_hash 0xe1965e89 +vmlinux __invalidate_device 0xa0e18dd2 +vmlinux __ioremap 0x9eac042a +vmlinux __ip_route_output_key 0x21c47478 +vmlinux __ip_select_ident 0xb91c4af4 +vmlinux __kfifo_get 0x69a6b354 +vmlinux __kfifo_put 0xd68d028d +vmlinux __kfree_skb 0xb75909fe +vmlinux __kill_fasync 0x1c646e1d +vmlinux __kmalloc 0x12da5bb2 +vmlinux __lock_buffer 0x7a54bf60 +vmlinux __lock_page 0x75fba9a6 +vmlinux __mark_inode_dirty 0x72e085b0 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xb0edb54a +vmlinux __module_put_and_exit 0x9470dc19 +vmlinux __ndelay 0xdf8c695a +vmlinux __neigh_event_send 0x569ab5a9 +vmlinux __neigh_for_each_release 0x363931e1 +vmlinux __net_timestamp 0x809ab6e4 +vmlinux __netdev_watchdog_up 0xe7da0503 +vmlinux __nla_put 0x82fa302f +vmlinux __nla_reserve 0x5a10fead +vmlinux __page_cache_release 0x9a6d3f67 +vmlinux __pagevec_lru_add 0x96dd86c3 +vmlinux __pagevec_release 0x2bc42518 +vmlinux __pci_register_driver 0xde0830d6 +vmlinux __per_cpu_offset 0x7ecb001b +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0xf78c17f2 +vmlinux __put_user_1 0xc3aaf0a9 +vmlinux __put_user_2 0x5a4896a8 +vmlinux __put_user_4 0xb2fd5ceb +vmlinux __put_user_8 0xb8e7ce2c +vmlinux __read_lock_failed 0xf0f4bea5 +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0x1b96cc45 +vmlinux __scm_destroy 0x4abcfb03 +vmlinux __scm_send 0xaa12a3c7 +vmlinux __secpath_destroy 0xb7b93bb2 +vmlinux __serio_register_driver 0x8d3ca40e +vmlinux __serio_register_port 0x81e7381d +vmlinux __serio_unregister_port_delayed 0x49bcdfef +vmlinux __set_page_dirty_buffers 0x53d44a30 +vmlinux __set_page_dirty_nobuffers 0xbfaeb6a7 +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x2014bfbe +vmlinux __skb_checksum_complete 0x4494a111 +vmlinux __skb_linearize 0x20c86c66 +vmlinux __strncpy_from_user 0x9a78a84c +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x60ea5fe7 +vmlinux __tasklet_schedule 0xed5c73bf +vmlinux __tcf_em_tree_match 0xf031ad9e +vmlinux __udelay 0x9e7d6bd0 +vmlinux __up_wakeup 0x60a4461c +vmlinux __user_walk 0x7820c029 +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0xb463bb98 +vmlinux __wait_on_bit_lock 0x798a97c6 +vmlinux __wait_on_buffer 0x0a7f3a3c +vmlinux __wake_up 0x77b5025d +vmlinux __wake_up_bit 0x4f1f19b1 +vmlinux __wake_up_sync 0xafcfc434 +vmlinux __write_lock_failed 0x61ea1589 +vmlinux __xfrm_policy_check 0xa69d2995 +vmlinux __xfrm_policy_destroy 0x4c989d66 +vmlinux __xfrm_route_forward 0x85da4991 +vmlinux __xfrm_state_destroy 0xcd953c9a +vmlinux _atomic_dec_and_lock 0x9f334253 +vmlinux _ctype 0x8d3894f2 +vmlinux _read_lock 0x6e868533 +vmlinux _read_lock_bh 0x11ff3db4 +vmlinux _read_lock_irq 0xab40acea +vmlinux _read_lock_irqsave 0x6767ad94 +vmlinux _read_trylock 0xdcf737f3 +vmlinux _read_unlock 0xd32fe476 +vmlinux _read_unlock_bh 0xb4423388 +vmlinux _read_unlock_irq 0x848a6d63 +vmlinux _read_unlock_irqrestore 0xf04ec5be +vmlinux _spin_lock 0x24335bc9 +vmlinux _spin_lock_bh 0x6edf8ce6 +vmlinux _spin_lock_irq 0x3b0ec9f3 +vmlinux _spin_lock_irqsave 0xa989a2a6 +vmlinux _spin_trylock 0x9bf61060 +vmlinux _spin_trylock_bh 0x40f54a47 +vmlinux _spin_unlock 0x999a39b6 +vmlinux _spin_unlock_bh 0xc9b3b15f +vmlinux _spin_unlock_irq 0x8914aee6 +vmlinux _spin_unlock_irqrestore 0x6199622a +vmlinux _write_lock 0x586f435c +vmlinux _write_lock_bh 0x16029b8b +vmlinux _write_lock_irq 0x1d217c71 +vmlinux _write_lock_irqsave 0x42508630 +vmlinux _write_trylock 0xfc7b04bb +vmlinux _write_unlock 0x434dc272 +vmlinux _write_unlock_bh 0xd3291894 +vmlinux _write_unlock_irq 0x90ec5a07 +vmlinux _write_unlock_irqrestore 0x88b3bad4 +vmlinux acpi_acquire_global_lock 0x70d8ab82 +vmlinux acpi_bus_add 0x3c77d799 +vmlinux acpi_bus_generate_event 0x2641882f +vmlinux acpi_bus_get_device 0x82c3c3ad +vmlinux acpi_bus_get_power 0x7389c9a8 +vmlinux acpi_bus_get_status 0xa12caadd +vmlinux acpi_bus_receive_event 0x141dbf9b +vmlinux acpi_bus_register_driver 0xbdab2500 +vmlinux acpi_bus_set_power 0xcb733bf2 +vmlinux acpi_bus_start 0x51fe6783 +vmlinux acpi_bus_unregister_driver 0xbc650fe0 +vmlinux acpi_clear_event 0x0fd00a68 +vmlinux acpi_dbg_layer 0xb3284531 +vmlinux acpi_dbg_level 0xca8acc78 +vmlinux acpi_disable_event 0xb758b225 +vmlinux acpi_disabled 0x1a45cb6c +vmlinux acpi_ec_read 0x50a0e15a +vmlinux acpi_ec_write 0x7ff7a286 +vmlinux acpi_enable_event 0x6237f6b5 +vmlinux acpi_enable_gpe 0xf47d47e0 +vmlinux acpi_enter_sleep_state 0xb077ef32 +vmlinux acpi_enter_sleep_state_s4bios 0xa5da0abd +vmlinux acpi_evaluate_integer 0x1807e38b +vmlinux acpi_evaluate_object 0xd0470c98 +vmlinux acpi_evaluate_reference 0xc899f5f6 +vmlinux acpi_extract_package 0xe93cc1b3 +vmlinux acpi_fadt 0xddcb58d9 +vmlinux acpi_fadt_is_v1 0x01438985 +vmlinux acpi_get_child 0xda268faa +vmlinux acpi_get_current_resources 0xcf47e392 +vmlinux acpi_get_devices 0xee46feef +vmlinux acpi_get_firmware_table 0x5331e1b5 +vmlinux acpi_get_handle 0x2bfeb410 +vmlinux acpi_get_name 0xca6c95f8 +vmlinux acpi_get_next_object 0x170c25ee +vmlinux acpi_get_object_info 0x96f929e9 +vmlinux acpi_get_parent 0xfb0443fb +vmlinux acpi_get_pci_id 0x058c75d9 +vmlinux acpi_get_pci_rootbridge_handle 0x1f8ec1b3 +vmlinux acpi_get_physical_device 0x10ecb626 +vmlinux acpi_get_register 0x2b5d6f73 +vmlinux acpi_get_sleep_type_data 0x8d8d96c6 +vmlinux acpi_get_table 0x2eb2eb15 +vmlinux acpi_get_type 0x0d3dda14 +vmlinux acpi_in_suspend 0xf78a658e +vmlinux acpi_install_address_space_handler 0xff03752f +vmlinux acpi_install_fixed_event_handler 0x5ac376a5 +vmlinux acpi_install_gpe_block 0xda8ddbdf +vmlinux acpi_install_gpe_handler 0x02aff2f4 +vmlinux acpi_install_notify_handler 0xd9091363 +vmlinux acpi_map_lsapic 0xda0a6b0e +vmlinux acpi_os_create_semaphore 0x9f8733e2 +vmlinux acpi_os_delete_semaphore 0xe65a005c +vmlinux acpi_os_free 0x43b9bbb4 +vmlinux acpi_os_printf 0x667cecc9 +vmlinux acpi_os_queue_for_execution 0xdb9d67ff +vmlinux acpi_os_read_pci_configuration 0xd94c1770 +vmlinux acpi_os_read_port 0x54935666 +vmlinux acpi_os_signal 0x874aea72 +vmlinux acpi_os_signal_semaphore 0x8cdbc08d +vmlinux acpi_os_sleep 0x540f9040 +vmlinux acpi_os_stall 0x69005013 +vmlinux acpi_os_wait_events_complete 0xc9ab2eef +vmlinux acpi_os_wait_semaphore 0x2565a159 +vmlinux acpi_os_write_port 0x99052a84 +vmlinux acpi_pci_irq_enable 0x78c12ed6 +vmlinux acpi_pci_register_driver 0xd1472061 +vmlinux acpi_pci_unregister_driver 0x43385ad9 +vmlinux acpi_processor_power_init_bm_check 0xfdce9842 +vmlinux acpi_register_gsi 0x36d5355b +vmlinux acpi_register_ioapic 0x636a5691 +vmlinux acpi_release_global_lock 0x3e2ae3a8 +vmlinux acpi_remove_address_space_handler 0xfcfaa928 +vmlinux acpi_remove_fixed_event_handler 0x2005e68a +vmlinux acpi_remove_gpe_block 0x8e002cda +vmlinux acpi_remove_gpe_handler 0xb07dfb3d +vmlinux acpi_remove_notify_handler 0x2bb55d6e +vmlinux acpi_resource_to_address64 0x263b54cc +vmlinux acpi_root_dir 0x8894cbad +vmlinux acpi_set_current_resources 0x45bb0352 +vmlinux acpi_set_gpe_type 0xa3bbcd80 +vmlinux acpi_set_register 0x4a9d86e3 +vmlinux acpi_specific_hotkey_enabled 0x46621493 +vmlinux acpi_strict 0xa59c0666 +vmlinux acpi_unmap_lsapic 0xd18b6eb2 +vmlinux acpi_unregister_ioapic 0xe716baed +vmlinux acpi_walk_namespace 0x19d5d20a +vmlinux acpi_walk_resources 0x375c5115 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0x9a88f497 +vmlinux add_disk_randomness 0xbc925558 +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0xcc99c7c5 +vmlinux add_wait_queue 0xc25108d8 +vmlinux add_wait_queue_exclusive 0x1265289b +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0xba5141b8 +vmlinux aio_put_req 0x64a110fb +vmlinux alloc_buffer_head 0xf6ede18f +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0x76c38b5c +vmlinux alloc_disk_node 0x221a2e44 +vmlinux alloc_etherdev 0xefc85b07 +vmlinux alloc_fcdev 0x39c09098 +vmlinux alloc_fddidev 0xc9c00c3e +vmlinux alloc_hippi_dev 0x87c51fca +vmlinux alloc_netdev 0x2f73a695 +vmlinux alloc_page_buffers 0xc3b03e60 +vmlinux alloc_trdev 0xd78d1706 +vmlinux alloc_tty_driver 0x05d2043e +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0xe751d941 +vmlinux anon_transport_class_unregister 0x74cc2485 +vmlinux apm_info 0x1d40ed44 +vmlinux arch_acpi_processor_init_pdc 0xad25c01d +vmlinux arch_register_cpu 0x2dd16564 +vmlinux arch_unregister_cpu 0x0237b57a +vmlinux arp_broken_ops 0xe598888a +vmlinux arp_create 0x8cb20b20 +vmlinux arp_find 0x8dc6265c +vmlinux arp_rcv 0x946dbc9e +vmlinux arp_send 0x06c014d6 +vmlinux arp_tbl 0x34c449d7 +vmlinux arp_xmit 0x16b04dc8 +vmlinux atm_alloc_charge 0x0c455771 +vmlinux atm_charge 0x498a026b +vmlinux atm_dev_deregister 0x0d867837 +vmlinux atm_dev_lookup 0xe73c8e10 +vmlinux atm_dev_register 0xa9d87099 +vmlinux atm_init_aal5 0x5d26c52f +vmlinux atm_pcr_goal 0xf49bc67a +vmlinux atm_proc_root 0x22ed987c +vmlinux attribute_container_add_attrs 0x09a98e84 +vmlinux attribute_container_add_class_device 0xe387cb7c +vmlinux attribute_container_add_class_device_adapter 0x60a86c7f +vmlinux attribute_container_class_device_del 0xe0dc8e85 +vmlinux attribute_container_classdev_to_container 0x1c38cf77 +vmlinux attribute_container_device_trigger 0x242c5c49 +vmlinux attribute_container_find_class_device 0x3b5d1484 +vmlinux attribute_container_register 0x354b6e86 +vmlinux attribute_container_remove_attrs 0x975b7731 +vmlinux attribute_container_remove_device 0x934ef2fd +vmlinux attribute_container_trigger 0x3a1a23d8 +vmlinux attribute_container_unregister 0x10aa1803 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x20624e4e +vmlinux bd_claim 0x5c70c6e5 +vmlinux bd_release 0x57f287e2 +vmlinux bd_set_size 0x26d068cc +vmlinux bdev_read_only 0x2a7cc8a7 +vmlinux bdevname 0x4f4b122e +vmlinux bdget 0x0413ae81 +vmlinux bdput 0xbff496a0 +vmlinux bfifo_qdisc_ops 0xe29078c1 +vmlinux bio_add_page 0x85b94153 +vmlinux bio_alloc 0xa5d5ddab +vmlinux bio_alloc_bioset 0x61c562d5 +vmlinux bio_clone 0x00e33bae +vmlinux bio_copy_user 0x46a4e58a +vmlinux bio_endio 0xb7d20b8d +vmlinux bio_free 0x9ef592f1 +vmlinux bio_get_nr_vecs 0x0493c338 +vmlinux bio_hw_segments 0xcd1a863e +vmlinux bio_init 0x66188bdf +vmlinux bio_map_kern 0xd8ee7100 +vmlinux bio_map_user 0x8ef24ecc +vmlinux bio_pair_release 0x661803df +vmlinux bio_phys_segments 0x1b237ca5 +vmlinux bio_put 0xa1df9be9 +vmlinux bio_split 0x4adfee33 +vmlinux bio_split_pool 0x44722aee +vmlinux bio_uncopy_user 0x12dcebf5 +vmlinux bio_unmap_user 0x5b973a94 +vmlinux bioset_create 0xb9b704ad +vmlinux bioset_free 0x2f2c32e4 +vmlinux bit_waitqueue 0x3fe828b2 +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0xe0356598 +vmlinux blk_alloc_queue_node 0x5e13027c +vmlinux blk_cleanup_queue 0x188317be +vmlinux blk_complete_barrier_rq 0xbc8cbfbd +vmlinux blk_complete_barrier_rq_locked 0xaf20db57 +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0xd4e9e0bf +vmlinux blk_end_sync_rq 0xe25a8b77 +vmlinux blk_execute_rq 0x7890376e +vmlinux blk_get_backing_dev_info 0xf9f4b3c8 +vmlinux blk_get_queue 0x18343fa4 +vmlinux blk_get_request 0x51cd16d7 +vmlinux blk_init_queue 0xdd641177 +vmlinux blk_init_queue_node 0xe76ccf84 +vmlinux blk_insert_request 0xd038dd68 +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0xb8f91682 +vmlinux blk_put_request 0x89fafd37 +vmlinux blk_queue_activity_fn 0xdad5aaaa +vmlinux blk_queue_bounce 0x6f41081a +vmlinux blk_queue_bounce_limit 0xf234bbb3 +vmlinux blk_queue_dma_alignment 0x6b5a6a04 +vmlinux blk_queue_end_tag 0x5ce10990 +vmlinux blk_queue_find_tag 0xec3702a6 +vmlinux blk_queue_free_tags 0x08f925e1 +vmlinux blk_queue_hardsect_size 0x570a9b20 +vmlinux blk_queue_init_tags 0x693d723f +vmlinux blk_queue_invalidate_tags 0x8c3d8bf4 +vmlinux blk_queue_issue_flush_fn 0x75160d53 +vmlinux blk_queue_make_request 0xf0c5ef2d +vmlinux blk_queue_max_hw_segments 0xa18382c5 +vmlinux blk_queue_max_phys_segments 0xc628b25c +vmlinux blk_queue_max_sectors 0x66307081 +vmlinux blk_queue_max_segment_size 0x44265af8 +vmlinux blk_queue_merge_bvec 0x957ea8a9 +vmlinux blk_queue_ordered 0x30d92bd7 +vmlinux blk_queue_prep_rq 0x91548d5c +vmlinux blk_queue_resize_tags 0xa565247d +vmlinux blk_queue_segment_boundary 0x9a7d2f68 +vmlinux blk_queue_stack_limits 0x933d6143 +vmlinux blk_queue_start_tag 0xa87a7135 +vmlinux blk_register_region 0xbbf73233 +vmlinux blk_remove_plug 0x158f0ae0 +vmlinux blk_requeue_request 0x9b9e0d6b +vmlinux blk_rq_bio_prep 0x303c3103 +vmlinux blk_rq_map_kern 0x6d60837e +vmlinux blk_rq_map_sg 0xa56adbe7 +vmlinux blk_rq_map_user 0x7ed8dae7 +vmlinux blk_rq_map_user_iov 0x4f8c83c4 +vmlinux blk_rq_unmap_user 0x2af36f88 +vmlinux blk_run_queue 0xca97fef9 +vmlinux blk_start_queue 0x2d405560 +vmlinux blk_stop_queue 0xc9184caa +vmlinux blk_sync_queue 0x82ef3bff +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0x6d0dced4 +vmlinux blkdev_ioctl 0x27362cad +vmlinux blkdev_issue_flush 0x96b086ce +vmlinux blkdev_put 0x822be5c4 +vmlinux block_all_signals 0x4b34fbf5 +vmlinux block_commit_write 0x95395756 +vmlinux block_invalidatepage 0xf631a556 +vmlinux block_prepare_write 0x455f2a73 +vmlinux block_read_full_page 0xc93880f3 +vmlinux block_sync_page 0xc82ab56f +vmlinux block_truncate_page 0xde07372b +vmlinux block_write_full_page 0xaeecf95b +vmlinux bmap 0xd4d73585 +vmlinux boot_cpu_data 0xeacf98c5 +vmlinux boot_option_idle_override 0xef9aedfc +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0x359d6ebe +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0xa7c9b821 +vmlinux bus_create_file 0x280a63ef +vmlinux bus_find_device 0xfe2debe4 +vmlinux bus_for_each_dev 0x830c88fa +vmlinux bus_for_each_drv 0xadad0d9c +vmlinux bus_register 0x5bab4715 +vmlinux bus_remove_device 0xbe4bb86a +vmlinux bus_remove_file 0x9b706d80 +vmlinux bus_rescan_devices 0xa60a0e95 +vmlinux bus_unregister 0x9a8d62cf +vmlinux call_rcu 0x8706fba7 +vmlinux call_rcu_bh 0xc329096e +vmlinux call_usermodehelper_keys 0x253841f3 +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0xa84a606e +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x32b89fb4 +vmlinux cdev_alloc 0xd0054ad3 +vmlinux cdev_del 0x684f5212 +vmlinux cdev_init 0xb2e57f80 +vmlinux cfb_copyarea 0xdaa34962 +vmlinux cfb_fillrect 0x7066c9f3 +vmlinux cfb_imageblit 0x415c5166 +vmlinux change_page_attr 0x5f08cbca +vmlinux check_disk_change 0x4f6285f7 +vmlinux class_create 0xa3d6a09d +vmlinux class_create_file 0xbae582d5 +vmlinux class_destroy 0xbde0c5c8 +vmlinux class_device_add 0xe164160c +vmlinux class_device_create 0x5c36d579 +vmlinux class_device_create_bin_file 0xbf08a0e5 +vmlinux class_device_create_file 0x691b1bef +vmlinux class_device_del 0x62156f41 +vmlinux class_device_destroy 0x4c5ec991 +vmlinux class_device_get 0x4080e1d4 +vmlinux class_device_initialize 0x6159a9fb +vmlinux class_device_put 0xc2a65cb5 +vmlinux class_device_register 0xafa45ec9 +vmlinux class_device_remove_bin_file 0x691ddb06 +vmlinux class_device_remove_file 0xbf199070 +vmlinux class_device_unregister 0x77364dc0 +vmlinux class_get 0xfbc446c1 +vmlinux class_interface_register 0x6910ca77 +vmlinux class_interface_unregister 0xd26c0163 +vmlinux class_put 0x60a4e0c1 +vmlinux class_register 0x20d62ba4 +vmlinux class_remove_file 0x4679306f +vmlinux class_unregister 0x43c2c0f0 +vmlinux clear_inode 0x95266eb7 +vmlinux clear_page_dirty_for_io 0x3eac3a78 +vmlinux clear_user 0x7da99cdd +vmlinux clip_tbl_hook 0x4bd784dc +vmlinux close_bdev_excl 0xffeab8fe +vmlinux cmos_lock 0x9a6a83f9 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0xac57f82b +vmlinux complete_all 0x45d61a0f +vmlinux complete_and_exit 0x0f167e68 +vmlinux compute_creds 0x83c7af86 +vmlinux con_copy_unimap 0x5e01542f +vmlinux con_set_default_unimap 0x05107535 +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0x60fa99a7 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0xb3f9c5cd +vmlinux console_stop 0x4dbf6c34 +vmlinux cont_prepare_write 0x4d1fdc23 +vmlinux contig_page_data 0xc34e1a13 +vmlinux copy_from_user 0xf2a644fb +vmlinux copy_fs_struct 0xa571e881 +vmlinux copy_io_context 0x82421ac1 +vmlinux copy_strings_kernel 0x701d43a3 +vmlinux copy_to_user 0x2da418b5 +vmlinux cpu_callout_map 0x6122a73e +vmlinux cpu_core_map 0x4a63a4a0 +vmlinux cpu_data 0x280de8fd +vmlinux cpu_gdt_descr 0x17e523c4 +vmlinux cpu_idle_wait 0xb53ae573 +vmlinux cpu_khz 0xd6b33026 +vmlinux cpu_online_map 0x8df9f666 +vmlinux cpu_possible_map 0xe1e774bc +vmlinux cpu_present_map 0x56c5486e +vmlinux cpu_sibling_map 0x2cfcba0a +vmlinux cpu_sysdev_class 0xb12b0955 +vmlinux cpufreq_cpu_get 0x1ad45bee +vmlinux cpufreq_cpu_put 0xc9eb822a +vmlinux cpufreq_driver_target 0x50ad96fe +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0xec985622 +vmlinux cpufreq_gov_performance 0xd7300979 +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0xe6488b47 +vmlinux cpufreq_parse_governor 0xdbb2e7ed +vmlinux cpufreq_register_driver 0x6c98b445 +vmlinux cpufreq_register_governor 0xcb0cb94b +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0x5faffb68 +vmlinux cpufreq_unregister_driver 0x653d2b85 +vmlinux cpufreq_unregister_governor 0x8ba2f5a0 +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0xb7b61546 +vmlinux crc32_le 0xa34f1ef5 +vmlinux create_empty_buffers 0xbf0c0668 +vmlinux create_proc_entry 0x37ca8342 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0x54b2f7ab +vmlinux crypto_free_tfm 0xb370e5d2 +vmlinux crypto_hmac 0xcb64e367 +vmlinux crypto_hmac_final 0x46fd4a26 +vmlinux crypto_hmac_init 0xb4982a87 +vmlinux crypto_hmac_update 0xc60faf46 +vmlinux crypto_register_alg 0x8e8c59b4 +vmlinux crypto_unregister_alg 0x7d3e8a5a +vmlinux csum_partial 0x9a3de8f8 +vmlinux csum_partial_copy_fromiovecend 0x02876657 +vmlinux csum_partial_copy_generic 0xd7359fa8 +vmlinux current_fs_time 0xd75c4434 +vmlinux current_io_context 0xa9dd6b91 +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0x53abfa24 +vmlinux d_alloc_anon 0xe51d0200 +vmlinux d_alloc_name 0x4151294e +vmlinux d_alloc_root 0xd3c92426 +vmlinux d_delete 0x98402c11 +vmlinux d_find_alias 0x87e868e1 +vmlinux d_genocide 0x394d4d00 +vmlinux d_instantiate 0x914c1546 +vmlinux d_instantiate_unique 0x6fa1e2f5 +vmlinux d_invalidate 0xcfa964e5 +vmlinux d_lookup 0xd993f428 +vmlinux d_move 0xc2fde584 +vmlinux d_path 0x1363ce29 +vmlinux d_prune_aliases 0x855bab53 +vmlinux d_rehash 0x7e48d9a3 +vmlinux d_splice_alias 0x31f654d6 +vmlinux d_validate 0xbe55fea3 +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0x0bb79746 +vmlinux dcache_dir_close 0x77c6841d +vmlinux dcache_dir_lseek 0x35c1c7f5 +vmlinux dcache_dir_open 0x2cefb080 +vmlinux dcache_lock 0x9c4fb5fb +vmlinux dcache_readdir 0xee566782 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0xfbc11fbd +vmlinux default_backing_dev_info 0x11c86e30 +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0xee60a1ff +vmlinux default_idle 0x92897e3d +vmlinux default_llseek 0x293830ce +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x81f9698a +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0xf641acf1 +vmlinux del_timer 0x9b1622fc +vmlinux del_timer_sync 0xcf58e6f3 +vmlinux dentry_open 0x7be2bc3c +vmlinux dentry_unhash 0x7137e44b +vmlinux dequeue_signal 0x171fc4ae +vmlinux deregister_atm_ioctl 0x50879dee +vmlinux destroy_8023_client 0x2bb9cdb6 +vmlinux destroy_EII_client 0x52efd0f0 +vmlinux destroy_workqueue 0x1c0e5aa1 +vmlinux dev_add_pack 0x3b110f06 +vmlinux dev_alloc_name 0xf18fc10b +vmlinux dev_base 0xf8b247b6 +vmlinux dev_base_lock 0xcbc6fc20 +vmlinux dev_change_flags 0x703e9fd5 +vmlinux dev_close 0xf699d5b9 +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0xba2c94a2 +vmlinux dev_get_by_index 0x874c2783 +vmlinux dev_get_by_name 0xab633273 +vmlinux dev_get_flags 0xb81b5e1f +vmlinux dev_getbyhwaddr 0x441988b8 +vmlinux dev_getfirstbyhwtype 0x67a6965a +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0xceae938d +vmlinux dev_mc_delete 0xaf392df5 +vmlinux dev_mc_upload 0xd45d579f +vmlinux dev_open 0x44072b80 +vmlinux dev_queue_xmit 0x49264639 +vmlinux dev_remove_pack 0x6d48f5ca +vmlinux dev_set_allmulti 0xa9a94df9 +vmlinux dev_set_mac_address 0xaa01fc96 +vmlinux dev_set_mtu 0x05243d6c +vmlinux dev_set_promiscuity 0xb8cbbd76 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0x0f09ce7f +vmlinux device_attach 0x4c5f2ece +vmlinux device_bind_driver 0x8eef9344 +vmlinux device_create_file 0xecd99264 +vmlinux device_del 0x4ca3524a +vmlinux device_for_each_child 0xfc5bf5b0 +vmlinux device_initialize 0x84701fc9 +vmlinux device_pm_set_parent 0x299dfb81 +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0x37163daa +vmlinux device_release_driver 0xcc40cc14 +vmlinux device_remove_file 0x26a59a1a +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0x86498a57 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0xe36f58e4 +vmlinux disable_hlt 0x794487ee +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disable_timer_nmi_watchdog 0xf2fb62ee +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_alloc_coherent 0x70cdd650 +vmlinux dma_declare_coherent_memory 0x532c58f8 +vmlinux dma_free_coherent 0x3fb139b4 +vmlinux dma_get_required_mask 0x96de42ec +vmlinux dma_mark_declared_memory_occupied 0xb3cc7893 +vmlinux dma_pool_alloc 0x9f162359 +vmlinux dma_pool_create 0x5367e4f5 +vmlinux dma_pool_destroy 0xe1e0e01f +vmlinux dma_pool_free 0x8756a8c8 +vmlinux dma_release_declared_memory 0x745e35ad +vmlinux dma_spin_lock 0xfedbb44a +vmlinux dmi_check_system 0xf5633477 +vmlinux dmi_find_device 0xfe7bde5e +vmlinux dmi_get_system_info 0x6a5b6ea4 +vmlinux dnotify_parent 0x68b617f0 +vmlinux do_SAK 0x7d1e8c3c +vmlinux do_add_mount 0x96094992 +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x7ea7d551 +vmlinux do_generic_mapping_read 0x977ab524 +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0xa7e45576 +vmlinux do_mmap_pgoff 0xe972bd71 +vmlinux do_munmap 0xeb2803aa +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0xf9209b9b +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0xf0a529b7 +vmlinux do_sync_read 0x728777b5 +vmlinux do_sync_write 0xf06f01a9 +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0x4386a9f3 +vmlinux dput 0x0f5759c9 +vmlinux dq_data_lock 0xcd948d98 +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x9e8745b4 +vmlinux dquot_alloc_inode 0xffbe32ca +vmlinux dquot_alloc_space 0xfe1fa0e6 +vmlinux dquot_commit 0x7a0d9693 +vmlinux dquot_commit_info 0xa2fa4ec3 +vmlinux dquot_drop 0xc3991308 +vmlinux dquot_free_inode 0x90de72a3 +vmlinux dquot_free_space 0x08c31b80 +vmlinux dquot_initialize 0x18c26ba2 +vmlinux dquot_mark_dquot_dirty 0x8de52df6 +vmlinux dquot_release 0x69f921a3 +vmlinux dquot_transfer 0xabbcc943 +vmlinux drive_info 0x5aaa7cd3 +vmlinux drive_is_ready 0xf1eb7ba2 +vmlinux driver_attach 0x14c68ae3 +vmlinux driver_create_file 0x2fe64f8f +vmlinux driver_find 0xa6eb215a +vmlinux driver_find_device 0x997e70ea +vmlinux driver_for_each_device 0x8fad972d +vmlinux driver_register 0x2e8fa5b8 +vmlinux driver_remove_file 0x5a306538 +vmlinux driver_unregister 0x8df518f4 +vmlinux drop_super 0x776fcb6e +vmlinux dst_alloc 0x09e60df3 +vmlinux dst_destroy 0xe5eef266 +vmlinux dump_fpu 0xf7e7d3e6 +vmlinux dump_stack 0x6b2dc060 +vmlinux dump_thread 0xae90b20c +vmlinux ec_read 0xba2d8594 +vmlinux ec_write 0x876dafc3 +vmlinux edid_info 0xbbb98859 +vmlinux efi 0x4f1b2bc8 +vmlinux efi_enabled 0x0933aae1 +vmlinux eighty_ninty_three 0x5ba4043e +vmlinux eisa_bus_type 0x4e3fc3c6 +vmlinux eisa_driver_register 0x4919a7ad +vmlinux eisa_driver_unregister 0x1bae95c8 +vmlinux elevator_exit 0x5158a507 +vmlinux elevator_init 0xa959e573 +vmlinux elv_add_request 0x919d1632 +vmlinux elv_completed_request 0x53bc5bc3 +vmlinux elv_dequeue_request 0xad69fc53 +vmlinux elv_dispatch_sort 0x1acf49e8 +vmlinux elv_next_request 0x9e922f99 +vmlinux elv_queue_empty 0x3bc88e8b +vmlinux elv_register 0xd526fefb +vmlinux elv_requeue_request 0x8bd39830 +vmlinux elv_rq_merge_ok 0x9a37211e +vmlinux elv_try_merge 0xf8a6a8ce +vmlinux elv_unregister 0x91ea2795 +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_hlt 0x9c7077bd +vmlinux enable_irq 0xfcec0987 +vmlinux enable_timer_nmi_watchdog 0x13f54343 +vmlinux end_buffer_async_write 0xaae5f2e5 +vmlinux end_buffer_read_sync 0xed7ef9a0 +vmlinux end_buffer_write_sync 0x019cd36e +vmlinux end_page_writeback 0xc37147f6 +vmlinux end_request 0x27f59bb6 +vmlinux end_that_request_chunk 0x3fb3603e +vmlinux end_that_request_first 0x06e73c46 +vmlinux end_that_request_last 0xa0d5f4e3 +vmlinux eth_type_trans 0x2df56ac1 +vmlinux ether_setup 0x1bc6e64d +vmlinux ethtool_op_get_link 0x8eff16a4 +vmlinux ethtool_op_get_perm_addr 0x80a741ad +vmlinux ethtool_op_get_sg 0xa1c4daf3 +vmlinux ethtool_op_get_tso 0xf6bb14ea +vmlinux ethtool_op_get_tx_csum 0xc85dc668 +vmlinux ethtool_op_get_ufo 0xa69dc036 +vmlinux ethtool_op_set_sg 0xd913ec1a +vmlinux ethtool_op_set_tso 0xd1095b1f +vmlinux ethtool_op_set_tx_csum 0x625b3d79 +vmlinux ethtool_op_set_tx_hw_csum 0x9f974c9f +vmlinux ethtool_op_set_ufo 0x84b0738b +vmlinux exit_fs 0x694c081d +vmlinux f_setown 0x7729a31a +vmlinux fasync_helper 0xbaf3f08c +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x366e5c58 +vmlinux fb_con_duit 0x6bcb0c62 +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0x5b1aaa3a +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0xa18eb030 +vmlinux fb_get_buffer_offset 0xe6609665 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0x1e587155 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0xb9ff0a68 +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0x608be026 +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x1d58e4db +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0x9c5fb338 +vmlinux fb_set_suspend 0x4ad97d6d +vmlinux fb_set_var 0xc9750861 +vmlinux fb_show_logo 0x54238f9d +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x6c4df20c +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fd_install 0x0eb3c7b7 +vmlinux fddi_type_trans 0xa730f099 +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0xd574d372 +vmlinux file_fsync 0x396be785 +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0xcaaf8919 +vmlinux filemap_fdatawait 0x7eda1071 +vmlinux filemap_fdatawrite 0x2a0a253a +vmlinux filemap_flush 0x7d55c846 +vmlinux filemap_nopage 0xf4c3cf19 +vmlinux filemap_populate 0x04f25a3b +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0xc7ff0977 +vmlinux filp_open 0xe6308e31 +vmlinux find_bus 0x369a7f40 +vmlinux find_get_page 0x04f41241 +vmlinux find_inode_number 0xbc7f8f88 +vmlinux find_lock_page 0x3fbe0902 +vmlinux find_next_bit 0x2ff92ca0 +vmlinux find_next_zero_bit 0xdc01a06e +vmlinux find_or_create_page 0xdd6c0d8b +vmlinux find_task_by_pid_type 0xf131b49c +vmlinux find_trylock_page 0x1a0bc5fe +vmlinux find_vma 0x4bfd1731 +vmlinux finish_wait 0xaf55ca0c +vmlinux firmware_register 0xb74952fe +vmlinux firmware_unregister 0xc94f4555 +vmlinux flock_lock_file_wait 0x643b8e9e +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_old_exec 0x230093f3 +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x62d1a74f +vmlinux flush_tlb_page 0x2898c980 +vmlinux flush_workqueue 0x665cefc0 +vmlinux follow_down 0x6ea15925 +vmlinux follow_up 0xa175c9cf +vmlinux force_sig 0xaf48214e +vmlinux fput 0x33c5df84 +vmlinux framebuffer_alloc 0xd5914fcb +vmlinux framebuffer_release 0x3302853d +vmlinux free_buffer_head 0xb0ddda79 +vmlinux free_dma 0x72b243d4 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0x8e37bbe5 +vmlinux free_pages 0x9941ccb8 +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0xbf335ffc +vmlinux freeze_bdev 0xd244d76d +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0xa218fb32 +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0xcc16aa57 +vmlinux gen_replace_estimator 0x11cc7fd8 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x2252f01b +vmlinux generic_block_bmap 0xfb226255 +vmlinux generic_commit_write 0xaefafa3d +vmlinux generic_cont_expand 0x473b58df +vmlinux generic_delete_inode 0x6a0c993b +vmlinux generic_drop_inode 0x4074a6c1 +vmlinux generic_file_aio_read 0xd198cad1 +vmlinux generic_file_aio_write 0x40d6112c +vmlinux generic_file_aio_write_nolock 0x9e629bc0 +vmlinux generic_file_buffered_write 0x81798f92 +vmlinux generic_file_direct_write 0x213dbbb3 +vmlinux generic_file_llseek 0x044f59dd +vmlinux generic_file_mmap 0x10d80744 +vmlinux generic_file_open 0x860061b4 +vmlinux generic_file_read 0x08d7e2ef +vmlinux generic_file_readonly_mmap 0xff326a83 +vmlinux generic_file_readv 0x2ecece2c +vmlinux generic_file_sendfile 0xe9e391f9 +vmlinux generic_file_write 0xd04d037e +vmlinux generic_file_write_nolock 0xb512d485 +vmlinux generic_file_writev 0x8891ef0d +vmlinux generic_fillattr 0xc98573ed +vmlinux generic_getxattr 0xd0e2fa95 +vmlinux generic_ide_ioctl 0x850d2f5d +vmlinux generic_listxattr 0xc333880a +vmlinux generic_make_request 0xb1be3130 +vmlinux generic_osync_inode 0x6d405b79 +vmlinux generic_permission 0xf2c14b22 +vmlinux generic_read_dir 0x52c8426b +vmlinux generic_readlink 0x0143c149 +vmlinux generic_removexattr 0xd6bd8302 +vmlinux generic_ro_fops 0x6a5e2753 +vmlinux generic_setxattr 0x4785b81e +vmlinux generic_shutdown_super 0x1973baf2 +vmlinux generic_unplug_device 0xc195ce1a +vmlinux generic_write_checks 0x3864cf84 +vmlinux genl_register_family 0xe98cab35 +vmlinux genl_register_ops 0xed0951fd +vmlinux genl_sock 0xfb085502 +vmlinux genl_unregister_family 0x87013f18 +vmlinux genl_unregister_ops 0xfa6a3c4c +vmlinux get_bus 0x5a6a9339 +vmlinux get_cmos_time 0xb31ddfb4 +vmlinux get_cpu_sysdev 0x1566b10a +vmlinux get_dcookie 0xb78621a0 +vmlinux get_device 0x5728ac58 +vmlinux get_disk 0xeba91557 +vmlinux get_driver 0xc82fa7a3 +vmlinux get_empty_filp 0x1692d717 +vmlinux get_fs_type 0x6e8c96e3 +vmlinux get_io_context 0xe8493f32 +vmlinux get_jiffies_64 0x37e74642 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0xb430d866 +vmlinux get_sb_nodev 0xad8210b6 +vmlinux get_sb_pseudo 0xef975235 +vmlinux get_sb_single 0x4f8217c8 +vmlinux get_super 0x3ad8104d +vmlinux get_task_mm 0xc316d980 +vmlinux get_unmapped_area 0xbe3b46dc +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x2a7ad4a8 +vmlinux get_wchan 0x666db66e +vmlinux get_write_access 0x7fcc6e01 +vmlinux get_zeroed_page 0x2c2512ea +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x27e77eb8 +vmlinux global_flush_tlb 0x3167ea19 +vmlinux gnet_stats_copy_app 0x438635a3 +vmlinux gnet_stats_copy_basic 0xb8dd1da3 +vmlinux gnet_stats_copy_queue 0x68fc5dd7 +vmlinux gnet_stats_copy_rate_est 0xb8e57f47 +vmlinux gnet_stats_finish_copy 0xaa818a86 +vmlinux gnet_stats_start_copy 0x4d58382c +vmlinux gnet_stats_start_copy_compat 0x589ef3f7 +vmlinux grab_cache_page_nowait 0x20ac46bf +vmlinux groups_alloc 0x51cd47e2 +vmlinux groups_free 0x111bcb2c +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0x52adaf08 +vmlinux have_submounts 0xe722ff0e +vmlinux high_memory 0x8a7d1c31 +vmlinux hippi_type_trans 0xc973d702 +vmlinux hpet_alloc 0x686f1325 +vmlinux hpet_control 0x1de314f3 +vmlinux hpet_register 0x741f1f6e +vmlinux hpet_unregister 0x63dfe1b4 +vmlinux hwmon_device_register 0x627d77f3 +vmlinux hwmon_device_unregister 0x4b478cdb +vmlinux i8253_lock 0x4be58ac2 +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x27f3805d +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_acpi_exec_tfs 0x366451a0 +vmlinux ide_acpi_get_timing 0x0079251b +vmlinux ide_acpi_init 0x031f36e3 +vmlinux ide_acpi_push_timing 0xaa4c1073 +vmlinux ide_add_setting 0x5047f4ed +vmlinux ide_build_dmatable 0x1508a426 +vmlinux ide_build_sglist 0x7c0e3f8f +vmlinux ide_bus_type 0x26f65baa +vmlinux ide_config_drive_speed 0x8faa7df3 +vmlinux ide_destroy_dmatable 0x4dea548f +vmlinux ide_dma_enable 0x76928c1d +vmlinux ide_dma_intr 0x667eb384 +vmlinux ide_dma_setup 0x8d41df19 +vmlinux ide_dma_speed 0xec8c4efd +vmlinux ide_dma_start 0xb586ab3d +vmlinux ide_dma_verbose 0x2165923a +vmlinux ide_do_drive_cmd 0x30cbb1cc +vmlinux ide_do_reset 0xbeb3c161 +vmlinux ide_dump_status 0x86a7af75 +vmlinux ide_end_drive_cmd 0xf2b01733 +vmlinux ide_end_request 0xee86d379 +vmlinux ide_error 0xf5f9b641 +vmlinux ide_execute_command 0xb5bc6251 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x34af5f9a +vmlinux ide_get_error_location 0x3119f891 +vmlinux ide_hwifs 0xad808434 +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0x5d7ce7a3 +vmlinux ide_init_drive_cmd 0xb822dac1 +vmlinux ide_init_sg_cmd 0x9d2bb806 +vmlinux ide_lock 0xb2e7506b +vmlinux ide_map_sg 0x62e1016e +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x9a63b9ee +vmlinux ide_pci_unregister_driver 0xabbca4be +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0x06c5dad7 +vmlinux ide_register_hw 0x30dab86a +vmlinux ide_register_hw_with_fixup 0x74abf2b5 +vmlinux ide_register_region 0xb9c08643 +vmlinux ide_register_subdriver 0x63c9285b +vmlinux ide_set_handler 0xb81fab82 +vmlinux ide_set_xfer_rate 0xb7649a50 +vmlinux ide_setup_dma 0xd02a2c6d +vmlinux ide_setup_pci_device 0xacfc707c +vmlinux ide_setup_pci_devices 0x11d3c08d +vmlinux ide_setup_pci_noise 0xd91503d0 +vmlinux ide_spin_wait_hwgroup 0xc8cd254d +vmlinux ide_stall_queue 0x6c6a9f97 +vmlinux ide_undecoded_slave 0x9c8b6a1a +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0x3af8d2a9 +vmlinux ide_unregister_subdriver 0xf51ef18c +vmlinux ide_use_dma 0xdaeb2323 +vmlinux ide_wait_not_busy 0x682fa6a1 +vmlinux ide_wait_stat 0x25c9b6c6 +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0x854bdbc0 +vmlinux idr_find 0x5cd7af21 +vmlinux idr_get_new 0x267350e0 +vmlinux idr_get_new_above 0x8d693c63 +vmlinux idr_init 0x6abe4095 +vmlinux idr_pre_get 0x0c42ce16 +vmlinux idr_remove 0xcc631f44 +vmlinux iget5_locked 0x7fd3f40a +vmlinux iget_locked 0x93595045 +vmlinux igrab 0x2ddf3e43 +vmlinux ilookup 0x164eac22 +vmlinux ilookup5 0x633eba65 +vmlinux ilookup5_nowait 0xa0f0720c +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0x369fda59 +vmlinux in_egroup_p 0xd8a2ab95 +vmlinux in_group_p 0xc3cf1128 +vmlinux in_lock_functions 0x09d44df9 +vmlinux inet6_lookup 0x1e35bf91 +vmlinux inet6_lookup_listener 0x5946547b +vmlinux inet_accept 0x697c735d +vmlinux inet_add_protocol 0xbf400cf5 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0xa211a626 +vmlinux inet_bind_bucket_create 0x1c6cfb8c +vmlinux inet_bind_hash 0xbabedc17 +vmlinux inet_csk_accept 0x2b920378 +vmlinux inet_csk_clear_xmit_timers 0x5a38a25f +vmlinux inet_csk_clone 0x1b6d2ff0 +vmlinux inet_csk_delete_keepalive_timer 0xc7de2289 +vmlinux inet_csk_destroy_sock 0xee66d890 +vmlinux inet_csk_get_port 0x2758e8bf +vmlinux inet_csk_init_xmit_timers 0x25be1fec +vmlinux inet_csk_listen_start 0x5bb99588 +vmlinux inet_csk_listen_stop 0x8049229f +vmlinux inet_csk_reqsk_queue_hash_add 0x3933b11d +vmlinux inet_csk_reqsk_queue_prune 0xf32b0dcb +vmlinux inet_csk_reset_keepalive_timer 0xc336ae89 +vmlinux inet_csk_route_req 0x255e2bce +vmlinux inet_csk_search_req 0xf94b58a1 +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0x1b76afff +vmlinux inet_dgram_connect 0x298fd53b +vmlinux inet_dgram_ops 0xd317fcf5 +vmlinux inet_diag_register 0xf6a073e2 +vmlinux inet_diag_unregister 0x04c14051 +vmlinux inet_getname 0xc56acf2a +vmlinux inet_ioctl 0xb805a040 +vmlinux inet_listen 0x3d2e0521 +vmlinux inet_listen_wlock 0x22007929 +vmlinux inet_put_port 0x4021e978 +vmlinux inet_register_protosw 0x0bdf23b7 +vmlinux inet_release 0xfe46edd6 +vmlinux inet_select_addr 0x8ec413c2 +vmlinux inet_sendmsg 0xc500ab1d +vmlinux inet_shutdown 0xd3cd277e +vmlinux inet_sk_rebuild_header 0xd692806e +vmlinux inet_sock_destruct 0x4bb0a106 +vmlinux inet_stream_connect 0x4262f43c +vmlinux inet_stream_ops 0x5fefb820 +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x6ad76e31 +vmlinux inet_twsk_deschedule 0xce4004c5 +vmlinux inet_twsk_schedule 0xcb59dba0 +vmlinux inet_unregister_protosw 0x0b5bbaed +vmlinux inetdev_by_index 0x9bb5db77 +vmlinux init_buffer 0xaea0fdbd +vmlinux init_mm 0x895b7f27 +vmlinux init_special_inode 0xe50f1833 +vmlinux init_task 0x654f47cc +vmlinux init_timer 0xcc20cea1 +vmlinux inode_add_bytes 0x38b9697f +vmlinux inode_change_ok 0x362d1c22 +vmlinux inode_get_bytes 0x8d305f82 +vmlinux inode_init_once 0x071fe80d +vmlinux inode_needs_sync 0xaeadfed5 +vmlinux inode_set_bytes 0xf69f97de +vmlinux inode_setattr 0x4903f4e8 +vmlinux inode_sub_bytes 0xcba6f56e +vmlinux inode_update_time 0xbe196d64 +vmlinux inotify_dentry_parent_queue_event 0x146bf5eb +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0x467cf74f +vmlinux inotify_inode_queue_event 0x60d79651 +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0xd5730848 +vmlinux input_allocate_device 0x2259ed98 +vmlinux input_class 0xb0fef0d9 +vmlinux input_close_device 0x8a9d7667 +vmlinux input_event 0xe11d22dd +vmlinux input_flush_device 0x221688ab +vmlinux input_grab_device 0x3647210b +vmlinux input_open_device 0x7ea81a31 +vmlinux input_register_device 0xa128ddc8 +vmlinux input_register_handler 0x75b40570 +vmlinux input_release_device 0x82b429d3 +vmlinux input_unregister_device 0x640664a8 +vmlinux input_unregister_handler 0xab6d15bc +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0x05da8ffa +vmlinux int_sqrt 0xb678366f +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x2a1b9a26 +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0xe7563d14 +vmlinux interruptible_sleep_on_timeout 0x9e688cd1 +vmlinux invalidate_bdev 0xccd55683 +vmlinux invalidate_inode_pages 0x8fa596fe +vmlinux invalidate_inode_pages2 0x86ccd60d +vmlinux invalidate_inode_pages2_range 0xd6829a7e +vmlinux invalidate_inodes 0x307b93e9 +vmlinux invalidate_partition 0xc6601858 +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0x0e236811 +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0x03960713 +vmlinux ioread16_rep 0x54324f95 +vmlinux ioread16be 0x06127753 +vmlinux ioread32 0x2241a928 +vmlinux ioread32_rep 0x3360bb18 +vmlinux ioread32be 0x0bce3753 +vmlinux ioread8 0x389e200f +vmlinux ioread8_rep 0x27a72488 +vmlinux ioremap_nocache 0x3762cb6e +vmlinux iounmap 0xedc03953 +vmlinux iov_shorten 0xc11d8093 +vmlinux iowrite16 0x4775eacf +vmlinux iowrite16_rep 0x1eba9e49 +vmlinux iowrite16be 0x30343e46 +vmlinux iowrite32 0x908aa9b2 +vmlinux iowrite32_rep 0x2dbc755e +vmlinux iowrite32be 0xa1a6414c +vmlinux iowrite8 0x375bf494 +vmlinux iowrite8_rep 0x0b353626 +vmlinux ip4_datagram_connect 0xd86326d4 +vmlinux ip_build_and_send_pkt 0xd124d9b1 +vmlinux ip_cmsg_recv 0x2b760b8f +vmlinux ip_ct_attach 0x452cd892 +vmlinux ip_defrag 0x14c08659 +vmlinux ip_fragment 0x18ca85fc +vmlinux ip_generic_getfrag 0x60d39d37 +vmlinux ip_getsockopt 0xf922d88e +vmlinux ip_mc_dec_group 0x6f33eba2 +vmlinux ip_mc_inc_group 0xa9a13ce7 +vmlinux ip_mc_join_group 0x5ae49ece +vmlinux ip_queue_xmit 0x526d6051 +vmlinux ip_route_input 0xbd855d6c +vmlinux ip_route_me_harder 0x19769c37 +vmlinux ip_route_output_flow 0x797c8384 +vmlinux ip_route_output_key 0x467685b0 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0xa37b7441 +vmlinux ip_setsockopt 0xe7e08d54 +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0x89b29975 +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0x634ecea4 +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0xc6cc740b +vmlinux is_bad_inode 0x95a761ee +vmlinux is_console_locked 0x944a564d +vmlinux isa_bridge 0xbafef479 +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux isapnp_cfg_begin 0x770a0036 +vmlinux isapnp_cfg_end 0x28b715a6 +vmlinux isapnp_present 0xbf8b39e9 +vmlinux isapnp_protocol 0x918882dc +vmlinux isapnp_write_byte 0xda8fd495 +vmlinux ist_info 0x0fdb1426 +vmlinux iunique 0x367721cf +vmlinux iw_handler_get_spy 0xbc520ff2 +vmlinux iw_handler_get_thrspy 0x4bb17693 +vmlinux iw_handler_set_spy 0xe7ff661f +vmlinux iw_handler_set_thrspy 0xf6d33a80 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x75b0745b +vmlinux kernel_fpu_begin 0xd986dad1 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0x373f4b52 +vmlinux kernel_recvmsg 0x734f0f02 +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0x24bb5929 +vmlinux kernel_subsys 0xd3df5dfc +vmlinux kernel_thread 0x7e9ebb05 +vmlinux key_alloc 0xbd38d96f +vmlinux key_create_or_update 0x459db887 +vmlinux key_instantiate_and_link 0x8d855a89 +vmlinux key_link 0x102949e3 +vmlinux key_negate_and_link 0x16602356 +vmlinux key_payload_reserve 0x7e1e9019 +vmlinux key_put 0x72ffe530 +vmlinux key_revoke 0x7dbfdbf6 +vmlinux key_task_permission 0xed71a8a7 +vmlinux key_type_user 0xd105815c +vmlinux key_unlink 0x68221e19 +vmlinux key_update 0xea7987f1 +vmlinux key_validate 0xab8349d0 +vmlinux keyring_clear 0x2f35beb5 +vmlinux keyring_search 0xc4e76cdf +vmlinux kfifo_alloc 0xc0fe22d7 +vmlinux kfifo_free 0xe1837904 +vmlinux kfifo_init 0x35b3ef67 +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0x4c5c4472 +vmlinux kill_anon_super 0xc6fbebf8 +vmlinux kill_block_super 0x704f8664 +vmlinux kill_fasync 0x5165a5ce +vmlinux kill_litter_super 0xc6f96dda +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xec10e63a +vmlinux klist_add_head 0xf6466d8d +vmlinux klist_add_tail 0x475fa23b +vmlinux klist_del 0x6d53788c +vmlinux klist_init 0xaeaa2d96 +vmlinux klist_iter_exit 0x89233c35 +vmlinux klist_iter_init 0xbd66c03e +vmlinux klist_iter_init_node 0x7af9ca0d +vmlinux klist_next 0x96a3499c +vmlinux klist_node_attached 0xa5a3f1c3 +vmlinux klist_remove 0xb876b119 +vmlinux km_new_mapping 0x2fa51735 +vmlinux km_policy_notify 0xb1d66a1c +vmlinux km_state_notify 0x990e1977 +vmlinux km_waitq 0xcf8432ef +vmlinux kmap 0x0b536568 +vmlinux kmap_atomic 0x34fadc3b +vmlinux kmap_atomic_to_page 0x2e6febad +vmlinux kmap_high 0xeb28ab88 +vmlinux kmem_cache_alloc 0xf19499ea +vmlinux kmem_cache_create 0xaa47199d +vmlinux kmem_cache_destroy 0x79aeaf0e +vmlinux kmem_cache_free 0x2001cdfb +vmlinux kmem_cache_name 0xc02383c7 +vmlinux kmem_cache_shrink 0x277a9de1 +vmlinux kmem_cache_size 0xfb71d89d +vmlinux kmem_find_general_cachep 0xe103169e +vmlinux kobject_add 0x3c75dc81 +vmlinux kobject_del 0xccc6ec3d +vmlinux kobject_get 0x7c0ea81c +vmlinux kobject_hotplug 0xd37b57a5 +vmlinux kobject_init 0xe6c2a83b +vmlinux kobject_put 0x58346c09 +vmlinux kobject_register 0x7cfbf671 +vmlinux kobject_set_name 0x20d28eed +vmlinux kobject_uevent 0x71306307 +vmlinux kobject_uevent_atomic 0xa9189801 +vmlinux kobject_unregister 0x818d5e39 +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x0b4e72c4 +vmlinux kset_register 0x458b3c78 +vmlinux kset_unregister 0x1aa3576a +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x47f12a93 +vmlinux kthread_create 0xf19de1a8 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0x0bbd3db6 +vmlinux kthread_stop_sem 0xf532b2bc +vmlinux kunmap 0x5536f72e +vmlinux kunmap_atomic 0x43b40de7 +vmlinux kunmap_high 0x1d95e8e5 +vmlinux kzalloc 0x1d10cdb2 +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0x2f2b2b6e +vmlinux lease_modify 0xcac434e5 +vmlinux linkwatch_fire_event 0x37cb8349 +vmlinux ll_rw_block 0xdabcd9f4 +vmlinux llc_add_pack 0xd1386c71 +vmlinux llc_build_and_send_ui_pkt 0xf4d6d652 +vmlinux llc_mac_hdr_init 0x48284c1f +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0x592bf8b9 +vmlinux llc_sap_find 0xdf3ffa47 +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0xd6a44e66 +vmlinux llc_sap_open 0x42e858be +vmlinux llc_set_station_handler 0xe30998fc +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_nls 0x6216f371 +vmlinux load_nls_default 0x4a578dbe +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_cpu_hotplug 0xba813bd6 +vmlinux lock_cpu_hotplug_interruptible 0xdd7ee0f9 +vmlinux lock_kernel 0x5568be43 +vmlinux lock_may_read 0xe59c0732 +vmlinux lock_may_write 0xe6283a93 +vmlinux lock_rename 0x541cee31 +vmlinux lock_sock 0x95d5f285 +vmlinux locks_copy_lock 0x54edd1ed +vmlinux locks_init_lock 0x01a9ff05 +vmlinux locks_mandatory_area 0x79c1b63b +vmlinux locks_remove_posix 0xd06ce834 +vmlinux lookup_create 0x999c938d +vmlinux lookup_hash 0x3fc37bbb +vmlinux lookup_instantiate_filp 0x674f45e0 +vmlinux lookup_one_len 0x417018d3 +vmlinux loopback_dev 0x189f474d +vmlinux loops_per_jiffy 0xba497f13 +vmlinux machine_id 0x69b4ab75 +vmlinux machine_real_restart 0x3da1b07a +vmlinux make_8023_client 0xcf2c4669 +vmlinux make_EII_client 0xab3c989b +vmlinux make_bad_inode 0x5d981539 +vmlinux malloc_sizes 0xc4413905 +vmlinux mapping_tagged 0x9802d540 +vmlinux mark_buffer_async_write 0x97ad6096 +vmlinux mark_buffer_dirty 0xfbc5f415 +vmlinux mark_buffer_dirty_inode 0xd01a964d +vmlinux mark_info_dirty 0xc58457d3 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x62f2a8bc +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_cstate 0x93805374 +vmlinux max_mapnr 0x01139ffc +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0xc9fbf76a +vmlinux may_umount_tree 0xddd5b5ac +vmlinux mb_cache_create 0x51d6b511 +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0x89aea688 +vmlinux mb_cache_entry_find_first 0x06f11f4a +vmlinux mb_cache_entry_find_next 0xc1bb681b +vmlinux mb_cache_entry_free 0x5a126e6c +vmlinux mb_cache_entry_get 0x552726d9 +vmlinux mb_cache_entry_insert 0x01d14552 +vmlinux mb_cache_entry_release 0xfb08ce2d +vmlinux mb_cache_shrink 0xdb0b119f +vmlinux mca_bus_type 0xc4a957e5 +vmlinux mca_device_claimed 0x425f6990 +vmlinux mca_device_read_pos 0xc8184354 +vmlinux mca_device_read_stored_pos 0x58767697 +vmlinux mca_device_set_claim 0x27edf624 +vmlinux mca_device_set_name 0x85eb93f9 +vmlinux mca_device_status 0xff5d9621 +vmlinux mca_device_transform_ioport 0x84ad2438 +vmlinux mca_device_transform_irq 0x37184730 +vmlinux mca_device_transform_memory 0x22c188b5 +vmlinux mca_device_write_pos 0x4ef2f6f0 +vmlinux mca_find_adapter 0x5f1bd579 +vmlinux mca_find_unused_adapter 0xef3bd862 +vmlinux mca_is_adapter_used 0x05048b38 +vmlinux mca_mark_as_unused 0xd9c272aa +vmlinux mca_mark_as_used 0x6b937ffb +vmlinux mca_read_pos 0x5c68705b +vmlinux mca_read_stored_pos 0xb2efb6be +vmlinux mca_register_driver 0xdcc1c087 +vmlinux mca_set_adapter_name 0xf2e74040 +vmlinux mca_unregister_driver 0x5325a838 +vmlinux mca_write_pos 0xaaebe34f +vmlinux mem_map 0x45856fd0 +vmlinux memcmp 0x5152e605 +vmlinux memcpy 0x2e60bace +vmlinux memcpy_fromiovec 0x9fb3dd30 +vmlinux memcpy_fromiovecend 0x6e440b58 +vmlinux memcpy_toiovec 0x9ceb163c +vmlinux memmove 0x8235805b +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0x3d84bcc6 +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0xaaa24b26 +vmlinux mempool_create_node 0xd01c94ac +vmlinux mempool_destroy 0x794a03ee +vmlinux mempool_free 0x7f42aeb6 +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x68d1b773 +vmlinux memset 0x2bc95bd4 +vmlinux misc_deregister 0xd6a81950 +vmlinux misc_register 0x0a2f96a1 +vmlinux mmput 0xc3ca84fb +vmlinux mnt_pin 0xfaf9cb77 +vmlinux mnt_unpin 0xe3311481 +vmlinux mntput_no_expire 0x6681bafe +vmlinux mod_reg_security 0x7f002c80 +vmlinux mod_timer 0xda6bb4ad +vmlinux mod_unreg_security 0xadacb760 +vmlinux module_add_driver 0x74bb9d73 +vmlinux module_refcount 0x4fa7e81b +vmlinux module_remove_driver 0xdc6e5bfa +vmlinux monotonic_clock 0x9669ecc8 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0x17b94381 +vmlinux mpage_readpages 0x128ac7e8 +vmlinux mpage_writepage 0x30c21065 +vmlinux mpage_writepages 0xb939801f +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux mtrr_add 0x56179c5f +vmlinux mtrr_del 0x272d394e +vmlinux multipath_alg_register 0x1a4775c0 +vmlinux multipath_alg_unregister 0xd9c6a819 +vmlinux n_tty_ioctl 0xb3fbdd00 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x680b7851 +vmlinux neigh_changeaddr 0xdcbb21ed +vmlinux neigh_compat_output 0xbd6923f5 +vmlinux neigh_connected_output 0xaf16a57b +vmlinux neigh_create 0x99010b0b +vmlinux neigh_delete 0xe41e3ca5 +vmlinux neigh_destroy 0x6f3639b7 +vmlinux neigh_dump_info 0xea1572bb +vmlinux neigh_event_ns 0x839e42e3 +vmlinux neigh_for_each 0xfb3ac32a +vmlinux neigh_ifdown 0xdb96c5bb +vmlinux neigh_lookup 0x90efd04e +vmlinux neigh_lookup_nodev 0x0ca1d086 +vmlinux neigh_parms_alloc 0x44261c27 +vmlinux neigh_parms_release 0x91c0e2da +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0x7fe4dc75 +vmlinux neigh_seq_next 0xf33ade83 +vmlinux neigh_seq_start 0x060c15b5 +vmlinux neigh_seq_stop 0xebd2aeff +vmlinux neigh_sysctl_register 0x6e486502 +vmlinux neigh_sysctl_unregister 0x1110c68e +vmlinux neigh_table_clear 0xacf23f85 +vmlinux neigh_table_init 0x7ad1aae0 +vmlinux neigh_update 0x1152cee3 +vmlinux neigh_update_hhs 0x7c136c45 +vmlinux neightbl_dump_info 0xdc3402cf +vmlinux neightbl_set 0xbe5acac4 +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0x1907bf93 +vmlinux netdev_features_change 0xfc9b9303 +vmlinux netdev_rx_csum_fault 0xdd906bbb +vmlinux netdev_set_master 0x2a855934 +vmlinux netdev_state_change 0x6b0f3e9f +vmlinux netif_carrier_off 0x94384bde +vmlinux netif_carrier_on 0xdbc2ab9d +vmlinux netif_receive_skb 0x96cd1f1c +vmlinux netif_rx 0xf1572fc2 +vmlinux netif_rx_ni 0x5667e757 +vmlinux netlink_ack 0x964c5fa3 +vmlinux netlink_broadcast 0x95b0ae1c +vmlinux netlink_dump_start 0xa18a7c83 +vmlinux netlink_kernel_create 0xbca45df2 +vmlinux netlink_queue_skip 0x6e6b075d +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0x8f4fb450 +vmlinux netlink_set_err 0x683be984 +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0xd1f92d87 +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0xd1026f54 +vmlinux netpoll_parse_options 0x6264e150 +vmlinux netpoll_poll 0x51baaf4d +vmlinux netpoll_queue 0x71d8d879 +vmlinux netpoll_send_udp 0x41e7d58e +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0xf40dd346 +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0x6896fcca +vmlinux next_thread 0xb60263ad +vmlinux nf_ct_attach 0x758c969b +vmlinux nf_getsockopt 0xeaffb914 +vmlinux nf_hook_slow 0xc926df10 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0xa3ce4bca +vmlinux nf_log_register 0x2f0d980b +vmlinux nf_log_unregister_logger 0x94437f53 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0x901f6e2c +vmlinux nf_register_queue_handler 0x4ace0f31 +vmlinux nf_register_queue_rerouter 0xf01d738f +vmlinux nf_register_sockopt 0xe0f61853 +vmlinux nf_reinject 0x988c2d19 +vmlinux nf_setsockopt 0x71710df6 +vmlinux nf_unregister_hook 0x2b7a2db4 +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0xa2daa251 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x3b692df3 +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0xbe0e5118 +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0x7cc0b73e +vmlinux nla_reserve 0xa6678c1b +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0x6cdc5c6b +vmlinux nla_validate 0x2cc98162 +vmlinux nmi_active 0x069dcda8 +vmlinux nmi_watchdog 0xda928914 +vmlinux no_llseek 0x75747947 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x2dec194a +vmlinux nobh_prepare_write 0xfda9752c +vmlinux nobh_truncate_page 0x7a080497 +vmlinux nobh_writepage 0xd4854ae8 +vmlinux node_online_map 0x5a8f421e +vmlinux node_possible_map 0xca0d27a1 +vmlinux nonseekable_open 0xe6fc5234 +vmlinux noop_qdisc 0x748355ce +vmlinux noop_qdisc_ops 0x420b544f +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x08b97f2f +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0x5d291f4a +vmlinux open_by_devnum 0xf9a467ba +vmlinux open_exec 0x5b808cfe +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0x09aeaf8c +vmlinux out_of_line_wait_on_bit_lock 0xe868af29 +vmlinux overflowgid 0x7171121c +vmlinux overflowuid 0x8b618d08 +vmlinux p80211_resume 0xa1141254 +vmlinux p80211_suspend 0x2d680f5e +vmlinux p80211netdev_hwremoved 0x1fa33f86 +vmlinux p80211netdev_rx 0x9127f9f5 +vmlinux p80211skb_free 0x47a3bb74 +vmlinux p80211skb_rxmeta_attach 0x0c1cec73 +vmlinux page_address 0x40b26f22 +vmlinux page_follow_link_light 0xcf4e8e19 +vmlinux page_put_link 0x241f155d +vmlinux page_readlink 0x404214b8 +vmlinux page_symlink 0x54cb0e7a +vmlinux page_symlink_inode_operations 0xcd893919 +vmlinux pagevec_lookup_tag 0xf4a00028 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0x8d8d8f89 +vmlinux path_release 0x6883ff77 +vmlinux path_walk 0x734ee527 +vmlinux pci_add_new_bus 0xf60eb6b1 +vmlinux pci_assign_resource 0xbd61ba4f +vmlinux pci_block_user_cfg_access 0x5b14d83c +vmlinux pci_bus_add_device 0xf92dab05 +vmlinux pci_bus_add_devices 0x77280a01 +vmlinux pci_bus_alloc_resource 0xce467798 +vmlinux pci_bus_assign_resources 0xb85d4367 +vmlinux pci_bus_find_capability 0xf9503d31 +vmlinux pci_bus_max_busnr 0xbdcd0a8d +vmlinux pci_bus_read_config_byte 0x8b33246e +vmlinux pci_bus_read_config_dword 0xe3a93503 +vmlinux pci_bus_read_config_word 0xa7c4fa22 +vmlinux pci_bus_size_bridges 0xfabb32c1 +vmlinux pci_bus_type 0xa8dbb1ae +vmlinux pci_bus_write_config_byte 0xb18b4320 +vmlinux pci_bus_write_config_dword 0x173bb02b +vmlinux pci_bus_write_config_word 0x2264982a +vmlinux pci_choose_state 0x2dd0b24f +vmlinux pci_clear_mwi 0xc5a83cd0 +vmlinux pci_create_bus 0x235e43e0 +vmlinux pci_dev_driver 0xb7f6e1f7 +vmlinux pci_dev_get 0x6e0b5b86 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0x049d1bb6 +vmlinux pci_disable_device 0x54812fbe +vmlinux pci_disable_msi 0x9a8ac782 +vmlinux pci_disable_msix 0x7cfce4bc +vmlinux pci_do_scan_bus 0xb01b3388 +vmlinux pci_enable_bridges 0x9658f4a3 +vmlinux pci_enable_device 0x9788f088 +vmlinux pci_enable_device_bars 0x6887465b +vmlinux pci_enable_msi 0x78f6d540 +vmlinux pci_enable_msix 0xf758ed23 +vmlinux pci_enable_wake 0x9b0d0f15 +vmlinux pci_find_bus 0x4e6e6120 +vmlinux pci_find_capability 0x02903ad1 +vmlinux pci_find_device 0x5a6fc8fe +vmlinux pci_find_device_reverse 0xf764c9bd +vmlinux pci_find_next_bus 0x948222a1 +vmlinux pci_find_next_capability 0xcd64c5c2 +vmlinux pci_find_parent_resource 0x385afbe7 +vmlinux pci_find_slot 0x06810773 +vmlinux pci_fixup_device 0x17acd7a0 +vmlinux pci_get_class 0xaed4059a +vmlinux pci_get_device 0x96053936 +vmlinux pci_get_slot 0x8279cccb +vmlinux pci_get_subsys 0x08ff1d70 +vmlinux pci_intx 0xc66606dd +vmlinux pci_iomap 0xb5e787e3 +vmlinux pci_iounmap 0x65bcc53f +vmlinux pci_map_rom 0xc06888f9 +vmlinux pci_map_rom_copy 0x0d4bcc3e +vmlinux pci_match_device 0xc6e8fdaf +vmlinux pci_match_id 0x65ff4893 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_mem_start 0x3da171f9 +vmlinux pci_osc_control_set 0x20c8fc33 +vmlinux pci_osc_support_set 0xed9003ef +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0x7829c71c +vmlinux pci_proc_attach_device 0x01a56e5a +vmlinux pci_proc_detach_bus 0xaf8f6b1a +vmlinux pci_release_region 0x56bbe55a +vmlinux pci_release_regions 0x99167cff +vmlinux pci_remove_behind_bridge 0xd2b50fbe +vmlinux pci_remove_bus 0x938d4791 +vmlinux pci_remove_bus_device 0xa45b0213 +vmlinux pci_remove_device_safe 0xcd69cd84 +vmlinux pci_remove_rom 0x6751d0a5 +vmlinux pci_request_region 0x091aab67 +vmlinux pci_request_regions 0xf4bb3d82 +vmlinux pci_restore_bars 0x919d9379 +vmlinux pci_restore_state 0xd15abbbf +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0x5c7bd73d +vmlinux pci_scan_bridge 0x04fdbc41 +vmlinux pci_scan_bus_parented 0x570d60ee +vmlinux pci_scan_child_bus 0x336a1a84 +vmlinux pci_scan_single_device 0x3ae718e7 +vmlinux pci_scan_slot 0xc94f7769 +vmlinux pci_set_consistent_dma_mask 0x83e1df27 +vmlinux pci_set_dma_mask 0x6878ac79 +vmlinux pci_set_master 0x7de73348 +vmlinux pci_set_mwi 0xa47ac469 +vmlinux pci_set_power_state 0x90826f2b +vmlinux pci_setup_cardbus 0xdfc729c6 +vmlinux pci_unblock_user_cfg_access 0x81dfa652 +vmlinux pci_unmap_rom 0xdc8db538 +vmlinux pci_unregister_driver 0xc279cad9 +vmlinux pci_walk_bus 0x2c7d2ffb +vmlinux pcibios_get_irq_routing_table 0xda08c0d7 +vmlinux pcibios_set_irq_routing 0x3b7af317 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pcie_port_service_register 0xfb2f91e3 +vmlinux pcie_port_service_unregister 0x9e5793f1 +vmlinux pciserial_init_ports 0x4d315734 +vmlinux pciserial_remove_ports 0xf31d494d +vmlinux pciserial_resume_ports 0x7dc91ffc +vmlinux pciserial_suspend_ports 0xa5536740 +vmlinux per_cpu__cpu_16bit_stack 0x42f5b870 +vmlinux per_cpu__irq_stat 0x4607f2a2 +vmlinux per_cpu__kstat 0xca09a9af +vmlinux per_cpu__softnet_data 0x4c38f77d +vmlinux percpu_counter_mod 0xa6fe1216 +vmlinux permission 0xcf2a3708 +vmlinux pfifo_qdisc_ops 0x8317633c +vmlinux platform_add_devices 0x8b17a525 +vmlinux platform_bus 0xb0535c78 +vmlinux platform_bus_type 0x96cc94e6 +vmlinux platform_device_add 0x2a4815ee +vmlinux platform_device_add_data 0x38e61a74 +vmlinux platform_device_add_resources 0xe477015a +vmlinux platform_device_alloc 0xd2931551 +vmlinux platform_device_put 0x7ba633d9 +vmlinux platform_device_register 0x06865b79 +vmlinux platform_device_register_simple 0x73884aa9 +vmlinux platform_device_unregister 0xcd221ba1 +vmlinux platform_driver_register 0x82789e5e +vmlinux platform_driver_unregister 0xa4d3a1de +vmlinux platform_get_irq 0xa2cb3086 +vmlinux platform_get_irq_byname 0x97e62ef3 +vmlinux platform_get_resource 0x094b575e +vmlinux platform_get_resource_byname 0x570936f0 +vmlinux pm_active 0xebd387f6 +vmlinux pm_idle 0xf890fe7f +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pneigh_enqueue 0x2c72a7db +vmlinux pneigh_lookup 0x0e12400a +vmlinux pnp_activate_dev 0xdc8ed709 +vmlinux pnp_device_attach 0x43a5c9e3 +vmlinux pnp_device_detach 0x67c2fd5c +vmlinux pnp_disable_dev 0x9d6a9d40 +vmlinux pnp_find_card 0x1d074207 +vmlinux pnp_find_dev 0x7c6d91b1 +vmlinux pnp_init_resource_table 0x16084899 +vmlinux pnp_is_active 0xbd66fe3f +vmlinux pnp_manual_config_dev 0xa3fbaf23 +vmlinux pnp_register_card_driver 0x95b960fe +vmlinux pnp_register_driver 0x48def53f +vmlinux pnp_release_card_device 0x32a5e5f9 +vmlinux pnp_request_card_device 0x0db4eac1 +vmlinux pnp_resource_change 0xf577ec2b +vmlinux pnp_unregister_card_driver 0x0066a0c9 +vmlinux pnp_unregister_driver 0x10d1ec92 +vmlinux pnpbios_protocol 0x76f97f97 +vmlinux poll_freewait 0xb502b768 +vmlinux poll_initwait 0x62519f9e +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0xd32e52c7 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x640a7078 +vmlinux posix_acl_equiv_mode 0xd8282ff0 +vmlinux posix_acl_from_mode 0x3adc15b9 +vmlinux posix_acl_from_xattr 0x85ac7f10 +vmlinux posix_acl_permission 0xee215960 +vmlinux posix_acl_to_xattr 0x1ecb9943 +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0xe38774ce +vmlinux posix_lock_file 0x557bc822 +vmlinux posix_lock_file_wait 0xa9c4e02a +vmlinux posix_locks_deadlock 0xc91671c4 +vmlinux posix_test_lock 0x48fd595e +vmlinux posix_timer_event 0x4968914d +vmlinux posix_unblock_lock 0x0ad8e190 +vmlinux pre_task_out_intr 0x18cdea4b +vmlinux preempt_schedule 0x707f93dd +vmlinux prepare_binprm 0xbbb9d44e +vmlinux prepare_to_wait 0x131a6461 +vmlinux prepare_to_wait_exclusive 0x5e405224 +vmlinux printk 0x1b7d4074 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0x01eef975 +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0xf19917d4 +vmlinux proc_dointvec 0xc5ddb6dd +vmlinux proc_dointvec_jiffies 0x4aa6c03c +vmlinux proc_dointvec_minmax 0x53c1e8b5 +vmlinux proc_dointvec_ms_jiffies 0x97371fb2 +vmlinux proc_dointvec_userhz_jiffies 0x8ac9b1b2 +vmlinux proc_dostring 0x3b0f221f +vmlinux proc_doulongvec_minmax 0x908783a4 +vmlinux proc_doulongvec_ms_jiffies_minmax 0x0c92521d +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0x68ff6a6f +vmlinux proc_net 0xe8289ddb +vmlinux proc_net_netfilter 0x9fec8a51 +vmlinux proc_net_stat 0x4ea7c17d +vmlinux proc_root 0x9e4fce39 +vmlinux proc_root_driver 0x5f44c65b +vmlinux proc_root_fs 0x1df84c25 +vmlinux proc_symlink 0x8d26b931 +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux proto_register 0xec4e5221 +vmlinux proto_unregister 0xe558deef +vmlinux ps2_cmd_aborted 0x165531e7 +vmlinux ps2_command 0xf4eacc06 +vmlinux ps2_drain 0x2f81f734 +vmlinux ps2_handle_ack 0x626053b1 +vmlinux ps2_handle_response 0x1d83528a +vmlinux ps2_init 0xe39d988f +vmlinux ps2_schedule_command 0xb28b0ea1 +vmlinux ps2_sendbyte 0x0e295c95 +vmlinux pskb_copy 0x4eb05457 +vmlinux pskb_expand_head 0x0c2f80d2 +vmlinux pskb_put 0x12243fd4 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0x0085e840 +vmlinux put_cmsg 0xf39bf4d9 +vmlinux put_device 0xd08835c6 +vmlinux put_disk 0x28766790 +vmlinux put_driver 0xb0bea3c1 +vmlinux put_files_struct 0x1aaf653d +vmlinux put_io_context 0xe7e8174f +vmlinux put_page 0xf2bf3307 +vmlinux put_tty_driver 0x23ad72d9 +vmlinux put_unused_fd 0x023eb25e +vmlinux qdisc_alloc 0xddede6df +vmlinux qdisc_create_dflt 0x01c55a07 +vmlinux qdisc_destroy 0x4f803ca2 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0x61f2370f +vmlinux qdisc_lookup 0xca45f562 +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0x6c32f700 +vmlinux qdisc_restart 0xb157c68c +vmlinux qdisc_unlock_tree 0xdd3f9ea4 +vmlinux queue_delayed_work 0x03361489 +vmlinux queue_work 0x2a95a905 +vmlinux radix_tree_delete 0xa34bdcd0 +vmlinux radix_tree_gang_lookup 0x883e226b +vmlinux radix_tree_gang_lookup_tag 0xcc4e9047 +vmlinux radix_tree_insert 0x7dc88ba1 +vmlinux radix_tree_lookup 0x5c2da0c3 +vmlinux radix_tree_lookup_slot 0x6bbbfb36 +vmlinux radix_tree_tag_clear 0x374a51dd +vmlinux radix_tree_tag_set 0x7e92ceb7 +vmlinux radix_tree_tagged 0xdacd0c37 +vmlinux raise_softirq_irqoff 0xd8c152cd +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0xc110d6a9 +vmlinux read_cache_pages 0x70279694 +vmlinux read_dev_sector 0x18e4d81b +vmlinux recalc_sigpending 0xfb6af58d +vmlinux recalibrate_cpu_khz 0x31e76b57 +vmlinux redirty_page_for_writepage 0x09ae021c +vmlinux redraw_screen 0x1f3c77fc +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0xa8b45aa8 +vmlinux register_acpi_bus_type 0xd50df858 +vmlinux register_atm_ioctl 0x152be9d9 +vmlinux register_binfmt 0x859a8e2b +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0xfbf0bd55 +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x86b956e7 +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_die_notifier 0x53986488 +vmlinux register_exec_domain 0x5e39a5eb +vmlinux register_filesystem 0xd0e22d63 +vmlinux register_firmware 0x711cccd3 +vmlinux register_framebuffer 0x34332783 +vmlinux register_gifconf 0xede2a1f2 +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_key_type 0xc1d1545c +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0xd6c8f80e +vmlinux register_netdevice 0x2436d075 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x9a264898 +vmlinux register_posix_clock 0x13173db8 +vmlinux register_qdisc 0x2ba559e6 +vmlinux register_quota_format 0x246aa552 +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0x44fbf63a +vmlinux register_snap_client 0x0359e753 +vmlinux register_sysctl_table 0xe20bcd51 +vmlinux register_sysrq_key 0x9d569730 +vmlinux register_tcf_proto_ops 0x2e54ecb8 +vmlinux register_timer_hook 0xf5269962 +vmlinux register_wlandev 0xda8edbea +vmlinux registered_fb 0x523df567 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x33934162 +vmlinux release_lapic_nmi 0x4129043e +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x874119fa +vmlinux remap_pfn_range 0x72d46adb +vmlinux remote_llseek 0x76932161 +vmlinux remove_arg_zero 0x669edf1d +vmlinux remove_inode_hash 0x30d074c9 +vmlinux remove_proc_entry 0x5494c6cd +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0x12895208 +vmlinux remove_wait_queue 0x0705db06 +vmlinux reqsk_queue_alloc 0x8ff2ff5a +vmlinux reqsk_queue_destroy 0xac79d66d +vmlinux request_dma 0x7054a3e4 +vmlinux request_firmware 0x64f3ba8e +vmlinux request_firmware_nowait 0xde1eaef2 +vmlinux request_irq 0x26e96637 +vmlinux request_key 0x1916b50d +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux reserve_lapic_nmi 0xb903b498 +vmlinux restore_processor_state 0x8dc6e564 +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x85902f79 +vmlinux rtc_cmos_read 0x9e64fbfe +vmlinux rtc_cmos_write 0x2def7f76 +vmlinux rtc_control 0xc9b27289 +vmlinux rtc_lock 0x831988d6 +vmlinux rtc_register 0xfdab2b9c +vmlinux rtc_unregister 0xeddfe49d +vmlinux rtnetlink_links 0x66b02165 +vmlinux rtnetlink_put_metrics 0x83d39fa0 +vmlinux rtnl 0xc24c1ab1 +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0xee0fef1f +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux rwsem_down_read_failed 0x38239f9f +vmlinux rwsem_down_write_failed 0xe0363221 +vmlinux rwsem_downgrade_wake 0xa3893edd +vmlinux rwsem_wake 0x25ba2c57 +vmlinux save_processor_state 0x75271716 +vmlinux sb_min_blocksize 0xd7dcd47c +vmlinux sb_set_blocksize 0x810dd91f +vmlinux sched_setscheduler 0x8d94a352 +vmlinux schedule 0x4292364c +vmlinux schedule_delayed_work 0xfc535e10 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0x17d59d01 +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x0a3fa85c +vmlinux scm_detach_fds 0x9c9c8985 +vmlinux scm_fp_dup 0x8306d269 +vmlinux scnprintf 0x28f35813 +vmlinux screen_info 0xe7bf7d05 +vmlinux scsi_cmd_ioctl 0x8f3f5a79 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux search_binary_handler 0x7249871d +vmlinux secpath_dup 0x425b7179 +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0xcc960d5d +vmlinux securityfs_create_dir 0xe8f3ca20 +vmlinux securityfs_create_file 0x6fd00c51 +vmlinux securityfs_remove 0xa963e3db +vmlinux send_sig 0x61270e10 +vmlinux send_sig_info 0x4a7f82c6 +vmlinux seq_escape 0x861a88d3 +vmlinux seq_lseek 0x9fe8b027 +vmlinux seq_open 0x311b0d82 +vmlinux seq_path 0x182db7c0 +vmlinux seq_printf 0x72eaeb20 +vmlinux seq_putc 0x7a95427d +vmlinux seq_puts 0xfb63a451 +vmlinux seq_read 0x625e5cd1 +vmlinux seq_release 0x3590a65c +vmlinux seq_release_private 0xa41baabe +vmlinux serial8250_register_port 0x653a4347 +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0xd62c3b7e +vmlinux serio_interrupt 0x0c307238 +vmlinux serio_open 0x517e4aab +vmlinux serio_reconnect 0x148cee49 +vmlinux serio_rescan 0xab55fada +vmlinux serio_unregister_child_port 0xad982fac +vmlinux serio_unregister_driver 0x83bedfc3 +vmlinux serio_unregister_port 0x4901e5e1 +vmlinux set_anon_super 0x03f45355 +vmlinux set_bh_page 0x7a2e277e +vmlinux set_binfmt 0xf755a8ab +vmlinux set_blocksize 0xf9d22b58 +vmlinux set_cpus_allowed 0xb340cd0a +vmlinux set_current_groups 0x72fbae28 +vmlinux set_device_ro 0x828d368d +vmlinux set_disk_ro 0x73b40898 +vmlinux set_nmi_callback 0x2c4fa81f +vmlinux set_page_dirty 0x0e7a173a +vmlinux set_page_dirty_lock 0x632e5ada +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0xa9a29d6f +vmlinux setlease 0xc813f9ec +vmlinux setup_arg_pages 0x08510b35 +vmlinux sget 0x57850225 +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x90d44c58 +vmlinux shrink_dcache_sb 0x71cb37e0 +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x4d3c153f +vmlinux simple_attr_close 0xdd0f3f8a +vmlinux simple_attr_open 0x908a9676 +vmlinux simple_attr_read 0x684de99e +vmlinux simple_attr_write 0x91a83133 +vmlinux simple_commit_write 0x1ca1b23e +vmlinux simple_dir_inode_operations 0x86d793b3 +vmlinux simple_dir_operations 0x6ad16be5 +vmlinux simple_empty 0xed7bf440 +vmlinux simple_fill_super 0x7af88f82 +vmlinux simple_getattr 0x99955cc8 +vmlinux simple_link 0xbaadcf9c +vmlinux simple_lookup 0x04dc0f2a +vmlinux simple_pin_fs 0xc272872d +vmlinux simple_prepare_write 0xe6931679 +vmlinux simple_read_from_buffer 0x528c709d +vmlinux simple_readpage 0xcc679f34 +vmlinux simple_release_fs 0x9bf3d73d +vmlinux simple_rename 0x7e0308e9 +vmlinux simple_rmdir 0x50f81dc8 +vmlinux simple_statfs 0x115e99bc +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0xcc6e0754 +vmlinux simple_transaction_get 0x8e36a97d +vmlinux simple_transaction_read 0x07211324 +vmlinux simple_transaction_release 0xa904ff2a +vmlinux simple_unlink 0x32feffb4 +vmlinux single_open 0xb5bdeaa0 +vmlinux single_release 0xb953998f +vmlinux sk_alloc 0x7b02ff31 +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0x6fe4df2a +vmlinux sk_common_release 0x4e71befc +vmlinux sk_free 0xc97c76f1 +vmlinux sk_reset_timer 0x866bfc1d +vmlinux sk_run_filter 0x5ddac19e +vmlinux sk_send_sigurg 0xe9839ede +vmlinux sk_stop_timer 0xb70c4233 +vmlinux sk_stream_error 0xec56bada +vmlinux sk_stream_kill_queues 0x15e69711 +vmlinux sk_stream_mem_schedule 0xfe10870a +vmlinux sk_stream_rfree 0x3a137850 +vmlinux sk_stream_wait_close 0x72b72d1c +vmlinux sk_stream_wait_connect 0x7877517b +vmlinux sk_stream_wait_memory 0xc92b5172 +vmlinux sk_stream_write_space 0x27b3209f +vmlinux sk_wait_data 0x5f8b32f1 +vmlinux skb_abort_seq_read 0x6717e375 +vmlinux skb_append 0x1f6a9269 +vmlinux skb_append_datato_frags 0x174138ac +vmlinux skb_checksum 0xaf91e101 +vmlinux skb_checksum_help 0xc7c07ccd +vmlinux skb_clone 0x617d45e8 +vmlinux skb_clone_fraglist 0x3fe2b649 +vmlinux skb_copy 0xf8cf468b +vmlinux skb_copy_and_csum_bits 0xc8cbbe70 +vmlinux skb_copy_and_csum_datagram_iovec 0x0430392b +vmlinux skb_copy_and_csum_dev 0xa800be56 +vmlinux skb_copy_bits 0xae212c0c +vmlinux skb_copy_datagram_iovec 0x1e36e8de +vmlinux skb_copy_expand 0xfadd6f2d +vmlinux skb_cow_data 0x98d48fd8 +vmlinux skb_dequeue 0xa9f1b471 +vmlinux skb_dequeue_tail 0x8b726bfc +vmlinux skb_find_text 0xc4229ad9 +vmlinux skb_free_datagram 0x8ab91f1e +vmlinux skb_icv_walk 0x848572a6 +vmlinux skb_insert 0xc96c710a +vmlinux skb_make_writable 0x6ab4b9eb +vmlinux skb_migrate 0x4003daef +vmlinux skb_over_panic 0x20af8e05 +vmlinux skb_pad 0x55acc86b +vmlinux skb_prepare_seq_read 0x734a0491 +vmlinux skb_queue_head 0x8595bd3b +vmlinux skb_queue_purge 0x65cda1b5 +vmlinux skb_queue_tail 0xea90a7e8 +vmlinux skb_realloc_headroom 0xe4e42c6c +vmlinux skb_recv_datagram 0xe29e3046 +vmlinux skb_seq_read 0x3b02897e +vmlinux skb_split 0x2d65ba38 +vmlinux skb_store_bits 0x0eced51c +vmlinux skb_to_sgvec 0x5b9edb13 +vmlinux skb_under_panic 0x1b1a8c35 +vmlinux skb_unlink 0xbc0500f8 +vmlinux sleep_on 0xb03c7e2b +vmlinux sleep_on_timeout 0x07f37e3b +vmlinux smp_call_function 0x0014bfd1 +vmlinux smp_num_siblings 0xd1f6c5f3 +vmlinux snprintf 0x025da070 +vmlinux sock_alloc_send_skb 0xb44e733a +vmlinux sock_common_getsockopt 0x32da9b83 +vmlinux sock_common_recvmsg 0xac60c751 +vmlinux sock_common_setsockopt 0x43e498ff +vmlinux sock_create 0x0d3eb41e +vmlinux sock_create_kern 0x90c7a16a +vmlinux sock_create_lite 0xf627566e +vmlinux sock_enable_timestamp 0x95fb2188 +vmlinux sock_get_timestamp 0xcae61617 +vmlinux sock_i_ino 0xcd4b8d86 +vmlinux sock_i_uid 0x73507388 +vmlinux sock_init_data 0x750fddd3 +vmlinux sock_kfree_s 0xb71979f3 +vmlinux sock_kmalloc 0x5ca5c85b +vmlinux sock_map_fd 0x72e9b150 +vmlinux sock_no_accept 0xb8bb1d1f +vmlinux sock_no_bind 0x7ab15857 +vmlinux sock_no_connect 0x83556ca3 +vmlinux sock_no_getname 0xc84b9ff1 +vmlinux sock_no_getsockopt 0xa7059fba +vmlinux sock_no_ioctl 0x550ea23f +vmlinux sock_no_listen 0x3bfab7a2 +vmlinux sock_no_mmap 0x1c1c82eb +vmlinux sock_no_poll 0x5d713140 +vmlinux sock_no_recvmsg 0x77a28f8e +vmlinux sock_no_sendmsg 0x21777e83 +vmlinux sock_no_sendpage 0x1c11ea1e +vmlinux sock_no_setsockopt 0xbdd18560 +vmlinux sock_no_shutdown 0xc6c59ebc +vmlinux sock_no_socketpair 0x5f2c023f +vmlinux sock_recvmsg 0x11833aef +vmlinux sock_register 0xf17b052d +vmlinux sock_release 0x534a0f6a +vmlinux sock_rfree 0x92b285eb +vmlinux sock_sendmsg 0x3ab14b38 +vmlinux sock_setsockopt 0x02c6f864 +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0xa78f4390 +vmlinux sock_wfree 0x22d9e676 +vmlinux sock_wmalloc 0x73492e29 +vmlinux sockfd_lookup 0xdc5b9124 +vmlinux sonet_copy_stats 0x89195dc3 +vmlinux sonet_subtract_stats 0x1a24e5e2 +vmlinux sort 0x310917fe +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux start_tty 0x9aafdb77 +vmlinux steal_locks 0x673038c4 +vmlinux stop_tty 0xa1533799 +vmlinux strcspn 0x6c1ce5ce +vmlinux strlcat 0xdd0a2ba2 +vmlinux strlcpy 0x73e20c1c +vmlinux strnchr 0x0a3131f6 +vmlinux strncpy_from_user 0x245ec8e8 +vmlinux strnicmp 0x4e830a3e +vmlinux strnlen_user 0xbcc308bb +vmlinux strpbrk 0x9a1dfd65 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0xc7ec6c27 +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0xc51dda2d +vmlinux submit_bh 0x4119d09f +vmlinux submit_bio 0xd7f5dc95 +vmlinux subsys_create_file 0x55023e53 +vmlinux subsys_remove_file 0x8ea556c2 +vmlinux subsystem_init 0xcc3908db +vmlinux subsystem_register 0x6b67b4b9 +vmlinux subsystem_unregister 0x4f44fd59 +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0xec3dfdc7 +vmlinux switch_APIC_timer_to_ipi 0xa5c79544 +vmlinux switch_ipi_to_APIC_timer 0xac7eb84c +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0x726b934d +vmlinux sync_dirty_buffer 0x5d06b554 +vmlinux sync_inode 0x8de06297 +vmlinux sync_mapping_buffers 0xa1ef1368 +vmlinux sync_page_range 0x62fe8972 +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0x268cc6a2 +vmlinux sys_open 0x0359f865 +vmlinux sys_read 0x16bd3948 +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0xcc063a30 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0x75623931 +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0x02b2c2b7 +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0x42e640c1 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x8184bb9c +vmlinux sysdev_class_unregister 0xaf751b47 +vmlinux sysdev_create_file 0xc552cf56 +vmlinux sysdev_driver_register 0xc60fe291 +vmlinux sysdev_driver_unregister 0xcea5463e +vmlinux sysdev_register 0xec952846 +vmlinux sysdev_remove_file 0xc841954e +vmlinux sysdev_unregister 0x60c69141 +vmlinux sysfs_chmod_file 0x8d6f82d4 +vmlinux sysfs_create_bin_file 0x57d6c2b6 +vmlinux sysfs_create_dir 0x046bdf5b +vmlinux sysfs_create_file 0x28480ce0 +vmlinux sysfs_create_group 0xc4fd22b1 +vmlinux sysfs_create_link 0xcbd8677f +vmlinux sysfs_remove_bin_file 0xe5201583 +vmlinux sysfs_remove_dir 0xc6a0519a +vmlinux sysfs_remove_file 0x6df21031 +vmlinux sysfs_remove_group 0xf5151572 +vmlinux sysfs_remove_link 0x270fcc93 +vmlinux sysfs_rename_dir 0x02dc4ebb +vmlinux sysfs_update_file 0xf50c5fe8 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0x3da4f679 +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0x427529b6 +vmlinux task_nice 0x439334db +vmlinux task_no_data_intr 0xaf22ab12 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0x0965e085 +vmlinux tc_classify 0x286a7e0c +vmlinux tcf_em_register 0xcaf47efc +vmlinux tcf_em_tree_destroy 0x01e3ca2c +vmlinux tcf_em_tree_dump 0xb43a4934 +vmlinux tcf_em_tree_validate 0xd89cb399 +vmlinux tcf_em_unregister 0x34806021 +vmlinux tcf_exts_change 0x784df3a9 +vmlinux tcf_exts_destroy 0x9cbb28a8 +vmlinux tcf_exts_dump 0x63d28539 +vmlinux tcf_exts_dump_stats 0x3d3e8420 +vmlinux tcf_exts_validate 0xbc4e95fe +vmlinux tcf_police 0x38bd1b3b +vmlinux tcf_police_destroy 0x9db102ce +vmlinux tcf_police_dump 0x1661846b +vmlinux tcf_police_dump_stats 0xb195df36 +vmlinux tcf_police_hash 0x8493d6e7 +vmlinux tcf_police_ht 0x59979e7f +vmlinux tcf_police_locate 0xdc0b2fa6 +vmlinux tcf_police_lookup 0x33fcccbc +vmlinux tcf_police_new_index 0x7ae0f6c9 +vmlinux tcp_check_req 0x289594be +vmlinux tcp_child_process 0x108ed2da +vmlinux tcp_close 0xd2531779 +vmlinux tcp_connect 0x074907dc +vmlinux tcp_create_openreq_child 0x6c082cab +vmlinux tcp_death_row 0x28aa0c59 +vmlinux tcp_disconnect 0xf4914a47 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x1623be66 +vmlinux tcp_getsockopt 0xe343af58 +vmlinux tcp_hashinfo 0x36271523 +vmlinux tcp_init_congestion_ops 0xe6569f28 +vmlinux tcp_init_xmit_timers 0x705d8d3e +vmlinux tcp_ioctl 0x30b4338c +vmlinux tcp_make_synack 0x3202bf84 +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0x20f18ac0 +vmlinux tcp_poll 0xf300108b +vmlinux tcp_proc_register 0x4c007fb1 +vmlinux tcp_proc_unregister 0x8527aca1 +vmlinux tcp_prot 0x03f6e1c0 +vmlinux tcp_rcv_established 0x32987666 +vmlinux tcp_rcv_state_process 0x96d7f878 +vmlinux tcp_read_sock 0x7f03a62d +vmlinux tcp_recvmsg 0x2346c5bf +vmlinux tcp_register_congestion_control 0x4be410f4 +vmlinux tcp_reno_cong_avoid 0x12d41d03 +vmlinux tcp_reno_min_cwnd 0x2d8117fb +vmlinux tcp_reno_ssthresh 0xd23092f7 +vmlinux tcp_sendmsg 0xbbcd365c +vmlinux tcp_sendpage 0x5282e2f8 +vmlinux tcp_setsockopt 0xc4d2ce63 +vmlinux tcp_shutdown 0x7fc05003 +vmlinux tcp_simple_retransmit 0x1c8a87c7 +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0xe88010f4 +vmlinux tcp_timewait_state_process 0x8e1e2da6 +vmlinux tcp_unhash 0x81e04ede +vmlinux tcp_unregister_congestion_control 0x9eab0c57 +vmlinux tcp_v4_conn_request 0x361ebf7c +vmlinux tcp_v4_connect 0x44668ebd +vmlinux tcp_v4_destroy_sock 0x8a0c9905 +vmlinux tcp_v4_do_rcv 0x82fd2562 +vmlinux tcp_v4_remember_stamp 0xfa94601a +vmlinux tcp_v4_send_check 0xb2056ff1 +vmlinux tcp_v4_syn_recv_sock 0x2c559c5f +vmlinux test_clear_page_dirty 0x00bfcf37 +vmlinux test_set_page_writeback 0xef0f5d04 +vmlinux textsearch_destroy 0x54989671 +vmlinux textsearch_find_continuous 0x4ddfd426 +vmlinux textsearch_prepare 0xaa3ebdae +vmlinux textsearch_register 0x7f8dc60c +vmlinux textsearch_unregister 0xadd78b41 +vmlinux thaw_bdev 0xf125f9bf +vmlinux timespec_trunc 0xc045ad4e +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0xde71dad3 +vmlinux tr_type_trans 0x4a70ea57 +vmlinux transport_add_device 0x6ffb5a0d +vmlinux transport_class_register 0x15f1f7ed +vmlinux transport_class_unregister 0x3271ddef +vmlinux transport_configure_device 0x6b68fac4 +vmlinux transport_destroy_device 0x703f9da3 +vmlinux transport_remove_device 0x6399a377 +vmlinux transport_setup_device 0x740f5e17 +vmlinux truncate_inode_pages 0xe9ee687e +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0x5dcdc502 +vmlinux try_to_release_page 0xb1a210fd +vmlinux tty_check_change 0x7d6e19ea +vmlinux tty_flip_buffer_push 0x56e9eaa5 +vmlinux tty_get_baud_rate 0xa3fc9a05 +vmlinux tty_hangup 0x339b5ddf +vmlinux tty_hung_up_p 0xa9e40e8f +vmlinux tty_ldisc_deref 0x1ba8ccca +vmlinux tty_ldisc_flush 0xa4d79e47 +vmlinux tty_ldisc_get 0x4acbffda +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x222b9904 +vmlinux tty_ldisc_ref_wait 0x5b0a8594 +vmlinux tty_name 0xace380fb +vmlinux tty_register_device 0x913a8a89 +vmlinux tty_register_driver 0xb7deaa67 +vmlinux tty_register_ldisc 0x98880017 +vmlinux tty_set_operations 0x8be5e793 +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0x3d3f0bf8 +vmlinux tty_unregister_driver 0xa663442d +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0x2c1aedef +vmlinux tty_wait_until_sent 0xc2ef6652 +vmlinux tty_wakeup 0xccefdb84 +vmlinux uart_add_one_port 0x1a1011e9 +vmlinux uart_get_baud_rate 0xa8da9928 +vmlinux uart_get_divisor 0xfa93fd3a +vmlinux uart_match_port 0xe93f7332 +vmlinux uart_register_driver 0xf872bd7a +vmlinux uart_remove_one_port 0x199208e6 +vmlinux uart_resume_port 0xc172d277 +vmlinux uart_suspend_port 0xfa2dc53f +vmlinux uart_unregister_driver 0x922dcb79 +vmlinux uart_update_timeout 0xcf00dbe9 +vmlinux uart_write_wakeup 0x822543bc +vmlinux udp_disconnect 0xb13d9224 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0x7425ac56 +vmlinux udp_ioctl 0x985adaad +vmlinux udp_poll 0x42ccb2e1 +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x6515a6e7 +vmlinux udp_proc_unregister 0x2aaba390 +vmlinux udp_prot 0x1e48fc9a +vmlinux udp_sendmsg 0x0ce99a3b +vmlinux uhci_check_and_reset_hc 0x5a07f0a3 +vmlinux uhci_reset_hc 0x2649a85c +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unload_nls 0x718c121e +vmlinux unlock_buffer 0xd310d3a5 +vmlinux unlock_cpu_hotplug 0xdbb6cbd9 +vmlinux unlock_kernel 0x5dfe8f1a +vmlinux unlock_new_inode 0x7d4a6453 +vmlinux unlock_page 0x48e7d706 +vmlinux unlock_rename 0x94425d77 +vmlinux unmap_mapping_range 0xa97f0ffa +vmlinux unmap_underlying_metadata 0xad58e6db +vmlinux unregister_8022_client 0x1c895f92 +vmlinux unregister_acpi_bus_type 0x03d1a8cb +vmlinux unregister_binfmt 0x0203b786 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0x6b00f27f +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_exec_domain 0xc0de845b +vmlinux unregister_filesystem 0x98885ff4 +vmlinux unregister_framebuffer 0x2e5d4333 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_key_type 0x2ef8f060 +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0xd15db413 +vmlinux unregister_netdevice 0xa48bd824 +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0x3ee39594 +vmlinux unregister_qdisc 0xba98afbb +vmlinux unregister_quota_format 0xba9fd9f3 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0x0424c2bb +vmlinux unregister_snap_client 0x4b47f0b4 +vmlinux unregister_sysctl_table 0x56efa5b0 +vmlinux unregister_sysrq_key 0x3316bea4 +vmlinux unregister_tcf_proto_ops 0x7746bdc9 +vmlinux unregister_timer_hook 0x3fa545f8 +vmlinux unregister_wlandev 0x37ca7b60 +vmlinux unset_nmi_callback 0x2ef9373e +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0xf9c02031 +vmlinux update_region 0xff80ed62 +vmlinux user_describe 0x74c10a8a +vmlinux user_destroy 0xc1602edd +vmlinux user_duplicate 0xf38288ac +vmlinux user_instantiate 0x75b7eb9c +vmlinux user_match 0x37518a9e +vmlinux user_read 0x2fc907d1 +vmlinux user_update 0x39fe65df +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0x1261c3a7 +vmlinux vc_cons 0x77438c55 +vmlinux vc_resize 0xdf150e9e +vmlinux vcc_hash 0x2cc2d52d +vmlinux vcc_insert_socket 0x594c5d33 +vmlinux vcc_release_async 0xf1e4b266 +vmlinux vcc_sklist_lock 0xb8a20d62 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0x85de58af +vmlinux vfs_follow_link 0x122f6178 +vmlinux vfs_fstat 0xcb841136 +vmlinux vfs_get_dqblk 0x2c9b11f9 +vmlinux vfs_get_dqinfo 0x1f33d696 +vmlinux vfs_getattr 0xf038887c +vmlinux vfs_link 0x910b3dc3 +vmlinux vfs_llseek 0x37754c00 +vmlinux vfs_lstat 0x91d803ff +vmlinux vfs_mkdir 0xb82d778b +vmlinux vfs_mknod 0x66fb9297 +vmlinux vfs_permission 0xf94bf57c +vmlinux vfs_quota_off 0xa8e03bb6 +vmlinux vfs_quota_on 0x6ac39e24 +vmlinux vfs_quota_on_mount 0xabc365a7 +vmlinux vfs_quota_sync 0xc1a67029 +vmlinux vfs_read 0xf80705a0 +vmlinux vfs_readdir 0xecb9ab86 +vmlinux vfs_readlink 0x2dcebf1e +vmlinux vfs_readv 0x58d8c7e2 +vmlinux vfs_rename 0x68890267 +vmlinux vfs_rmdir 0x2f1bd8d3 +vmlinux vfs_set_dqblk 0x09bdeddb +vmlinux vfs_set_dqinfo 0xed47b4d2 +vmlinux vfs_stat 0x4e193f40 +vmlinux vfs_statfs 0xb58eec54 +vmlinux vfs_symlink 0xd4a99d33 +vmlinux vfs_unlink 0x76b43ff2 +vmlinux vfs_write 0xb061f8c7 +vmlinux vfs_writev 0x83ed8564 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0xe581805c +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0x45130a7f +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0xc9bef200 +vmlinux vmtruncate 0xd9a9853b +vmlinux vprintk 0xaec4759f +vmlinux vscnprintf 0x0ead5073 +vmlinux vsnprintf 0x6989a769 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0x32c5cd1f +vmlinux wait_for_completion_interruptible 0x2904efe2 +vmlinux wait_for_completion_interruptible_timeout 0xc1885601 +vmlinux wait_for_completion_timeout 0x411030ac +vmlinux wait_on_page_bit 0x521c3716 +vmlinux wait_on_sync_kiocb 0xf037d5eb +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xd7e7ca24 +vmlinux wake_up_process 0xe9ded5bd +vmlinux wireless_send_event 0xf512d6c5 +vmlinux wireless_spy_update 0x3b289012 +vmlinux wlan_setup 0xd2a7e323 +vmlinux wlan_unsetup 0x52f94c4e +vmlinux write_inode_now 0x49af0a5c +vmlinux write_one_page 0xcfbe3fa6 +vmlinux x86_acpiid_to_apicid 0x062bdb0e +vmlinux x86_cpu_to_apicid 0x8874b79e +vmlinux xfrm4_rcv 0xfe3da4f0 +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0x014928f6 +vmlinux xfrm_bundle_ok 0xb63a4cb1 +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0x9119b8da +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0x20de0969 +vmlinux xfrm_dst_lookup 0x074119d4 +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0x5f83713a +vmlinux xfrm_find_acq_byseq 0x0208b260 +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0xe13d9d47 +vmlinux xfrm_init_state 0x44491375 +vmlinux xfrm_lookup 0x33086975 +vmlinux xfrm_parse_spi 0xaf2ff302 +vmlinux xfrm_policy_alloc 0xd557e737 +vmlinux xfrm_policy_byid 0x326c94ac +vmlinux xfrm_policy_bysel 0xc4a6d26f +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x895ce552 +vmlinux xfrm_policy_list 0x1980dcb9 +vmlinux xfrm_policy_register_afinfo 0x38fd8a3e +vmlinux xfrm_policy_unregister_afinfo 0x26c1414b +vmlinux xfrm_policy_walk 0xd809a1ee +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0x406a7727 +vmlinux xfrm_register_type 0xe3aee6c3 +vmlinux xfrm_replay_advance 0x46b9abd6 +vmlinux xfrm_replay_check 0x20db2291 +vmlinux xfrm_state_add 0xb8c88881 +vmlinux xfrm_state_alloc 0x7ec98392 +vmlinux xfrm_state_check 0xd17c43cc +vmlinux xfrm_state_check_expire 0x8075046f +vmlinux xfrm_state_delete 0xc4282a66 +vmlinux xfrm_state_delete_tunnel 0x4d548711 +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0xa75fd4ef +vmlinux xfrm_state_lookup 0x7a47ec98 +vmlinux xfrm_state_mtu 0xdb0b78d6 +vmlinux xfrm_state_register_afinfo 0x39772092 +vmlinux xfrm_state_unregister_afinfo 0x6e85d11c +vmlinux xfrm_state_update 0x8a46ed27 +vmlinux xfrm_state_walk 0xf9634bdc +vmlinux xfrm_unregister_km 0x17a2382c +vmlinux xfrm_unregister_type 0xe5429efc +vmlinux xfrm_user_policy 0xeea86975 +vmlinux xrlim_allow 0x0d439c59 +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xa7c7b37b +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x3924690c +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0xd91b8c6d --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/i386/server +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/i386/server @@ -0,0 +1,5761 @@ +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_detect_processor 0x16836e04 +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_get_freqs 0xb9c4330f +arch/i386/kernel/cpu/cpufreq/speedstep-lib speedstep_get_processor_frequency 0x4cdb4bd0 +arch/i386/kernel/scx200 scx200_cb_base 0x907665bd +arch/i386/kernel/scx200 scx200_gpio_base 0x254e5667 +arch/i386/kernel/scx200 scx200_gpio_configure 0x80c65a79 +arch/i386/kernel/scx200 scx200_gpio_shadow 0x9272bc53 +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0x818c6b58 +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0xf47fa833 +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0xac5db655 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xdc30c180 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/acpi/ac acpi_get_ac_dir 0x8089de57 +drivers/acpi/battery acpi_get_battery_dir 0x6e060d42 +drivers/acpi/i2c_acpi_ec acpi_get_ec_hc 0x8e2ba282 +drivers/acpi/processor acpi_processor_notify_smm 0x44d04ecd +drivers/acpi/processor acpi_processor_register_performance 0x858fc2e6 +drivers/acpi/processor acpi_processor_set_thermal_limit 0xe8a3605f +drivers/acpi/processor acpi_processor_unregister_performance 0x70b3538a +drivers/atm/suni suni_init 0xee2dcbca +drivers/atm/uPD98402 uPD98402_init 0x6a17af4d +drivers/block/loop loop_register_transfer 0xf7e81965 +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0xf14044d8 +drivers/block/paride/paride pi_disconnect 0x7ac0e10b +drivers/block/paride/paride pi_do_claimed 0x44a61b6b +drivers/block/paride/paride pi_init 0x8aa907a2 +drivers/block/paride/paride pi_read_block 0x2e65af70 +drivers/block/paride/paride pi_read_regr 0xdcd3a6db +drivers/block/paride/paride pi_register 0x85441b4b +drivers/block/paride/paride pi_release 0x5b41c395 +drivers/block/paride/paride pi_schedule_claimed 0x2ea05ebb +drivers/block/paride/paride pi_unregister 0x628b86a6 +drivers/block/paride/paride pi_write_block 0xdd4cc0b8 +drivers/block/paride/paride pi_write_regr 0xb28fdd8f +drivers/cdrom/cdrom cdrom_get_last_written 0x5f72bfeb +drivers/cdrom/cdrom cdrom_get_media_event 0xeffb505e +drivers/cdrom/cdrom cdrom_ioctl 0xff353cdc +drivers/cdrom/cdrom cdrom_media_changed 0x49213e08 +drivers/cdrom/cdrom cdrom_mode_select 0x546ec871 +drivers/cdrom/cdrom cdrom_mode_sense 0x44e47a36 +drivers/cdrom/cdrom cdrom_number_of_slots 0x43254f53 +drivers/cdrom/cdrom cdrom_open 0x1a1cae43 +drivers/cdrom/cdrom cdrom_release 0xa1b73385 +drivers/cdrom/cdrom init_cdrom_command 0x4f476e96 +drivers/cdrom/cdrom register_cdrom 0xb04f5da6 +drivers/cdrom/cdrom unregister_cdrom 0x76ff082d +drivers/char/agp/agpgart agp3_generic_cleanup 0xc2424641 +drivers/char/agp/agpgart agp3_generic_configure 0x4b085dbf +drivers/char/agp/agpgart agp3_generic_fetch_size 0xde9b17ed +drivers/char/agp/agpgart agp3_generic_sizes 0x546264cf +drivers/char/agp/agpgart agp3_generic_tlbflush 0x3fa7a3c4 +drivers/char/agp/agpgart agp_add_bridge 0x7f96ddff +drivers/char/agp/agpgart agp_alloc_bridge 0x6ded8b99 +drivers/char/agp/agpgart agp_allocate_memory 0x79ee0dee +drivers/char/agp/agpgart agp_backend_acquire 0x074a6ddd +drivers/char/agp/agpgart agp_backend_release 0x173db5f6 +drivers/char/agp/agpgart agp_bind_memory 0x3ca603dd +drivers/char/agp/agpgart agp_bridge 0xa7e84419 +drivers/char/agp/agpgart agp_bridges 0x673f815e +drivers/char/agp/agpgart agp_collect_device_status 0x90d3b02b +drivers/char/agp/agpgart agp_copy_info 0x62c70bc1 +drivers/char/agp/agpgart agp_create_memory 0xe46295db +drivers/char/agp/agpgart agp_device_command 0xe6d5c272 +drivers/char/agp/agpgart agp_enable 0x768cd50b +drivers/char/agp/agpgart agp_find_bridge 0x56610411 +drivers/char/agp/agpgart agp_free_key 0xd0fef3b2 +drivers/char/agp/agpgart agp_free_memory 0x8ef78e34 +drivers/char/agp/agpgart agp_generic_alloc_by_type 0xe0c7e652 +drivers/char/agp/agpgart agp_generic_alloc_page 0xbbd0afcc +drivers/char/agp/agpgart agp_generic_create_gatt_table 0x91fa450b +drivers/char/agp/agpgart agp_generic_destroy_page 0xbba27749 +drivers/char/agp/agpgart agp_generic_enable 0x7ecb8009 +drivers/char/agp/agpgart agp_generic_free_by_type 0xcd7b59e2 +drivers/char/agp/agpgart agp_generic_free_gatt_table 0x4292424f +drivers/char/agp/agpgart agp_generic_insert_memory 0xe0268adc +drivers/char/agp/agpgart agp_generic_mask_memory 0x1eb4c56e +drivers/char/agp/agpgart agp_generic_remove_memory 0x32046b2d +drivers/char/agp/agpgart agp_memory_reserved 0xe089cfcc +drivers/char/agp/agpgart agp_num_entries 0xd6feefa5 +drivers/char/agp/agpgart agp_off 0x7538b132 +drivers/char/agp/agpgart agp_put_bridge 0xffaf0349 +drivers/char/agp/agpgart agp_remove_bridge 0xfc58b5ec +drivers/char/agp/agpgart agp_try_unsupported_boot 0xc5d9c46c +drivers/char/agp/agpgart agp_unbind_memory 0x290adc7e +drivers/char/agp/agpgart get_agp_version 0x2a087cda +drivers/char/agp/agpgart global_cache_flush 0xa4d4f0e6 +drivers/char/agp/agpgart map_page_into_agp 0x5ae8eb7a +drivers/char/agp/agpgart unmap_page_from_agp 0xe771dac2 +drivers/char/drm/drm drm_addbufs_agp 0x6ca0dc91 +drivers/char/drm/drm drm_addbufs_fb 0xd4ebe898 +drivers/char/drm/drm drm_addbufs_pci 0x514d599e +drivers/char/drm/drm drm_addmap 0xede98e70 +drivers/char/drm/drm drm_agp_acquire 0x8c19328b +drivers/char/drm/drm drm_agp_alloc 0x08e9c4d0 +drivers/char/drm/drm drm_agp_bind 0x4a7d8134 +drivers/char/drm/drm drm_agp_bind_memory 0x47899393 +drivers/char/drm/drm drm_agp_enable 0xc99f4577 +drivers/char/drm/drm drm_agp_free 0xa4985239 +drivers/char/drm/drm drm_agp_info 0xe1e8f954 +drivers/char/drm/drm drm_agp_release 0x9cf55e7f +drivers/char/drm/drm drm_agp_unbind 0xdd8b46a1 +drivers/char/drm/drm drm_ati_pcigart_cleanup 0x73904dc0 +drivers/char/drm/drm drm_ati_pcigart_init 0x9726cba0 +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0x50674206 +drivers/char/drm/drm drm_core_reclaim_buffers 0x05d78fe1 +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0xb68dadd0 +drivers/char/drm/drm drm_fasync 0x4b306d91 +drivers/char/drm/drm drm_get_dev 0x3c7fa6db +drivers/char/drm/drm drm_get_resource_len 0x70eccd45 +drivers/char/drm/drm drm_get_resource_start 0x5716e905 +drivers/char/drm/drm drm_init 0xb2dd26f2 +drivers/char/drm/drm drm_ioctl 0xd72b7614 +drivers/char/drm/drm drm_irq_uninstall 0xa778451e +drivers/char/drm/drm drm_mmap 0xae245f56 +drivers/char/drm/drm drm_open 0xa4b46bfe +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0x9199cdd7 +drivers/char/drm/drm drm_pci_free 0xf3646ca5 +drivers/char/drm/drm drm_poll 0xd2e2cfa6 +drivers/char/drm/drm drm_release 0x9acc3a87 +drivers/char/drm/drm drm_rmmap 0xf6b1607d +drivers/char/drm/drm drm_rmmap_locked 0xa7d7cdee +drivers/char/drm/drm drm_vbl_send_signals 0x8491a058 +drivers/char/generic_serial gs_block_til_ready 0x866e598d +drivers/char/generic_serial gs_chars_in_buffer 0x7e26a466 +drivers/char/generic_serial gs_close 0x0a064887 +drivers/char/generic_serial gs_flush_buffer 0xc5d25ca4 +drivers/char/generic_serial gs_flush_chars 0xfbb9b200 +drivers/char/generic_serial gs_getserial 0x3d69ac89 +drivers/char/generic_serial gs_got_break 0x3109120c +drivers/char/generic_serial gs_hangup 0x8163691d +drivers/char/generic_serial gs_init_port 0x0a5cc370 +drivers/char/generic_serial gs_put_char 0x597f72ea +drivers/char/generic_serial gs_set_termios 0x4d32cfb8 +drivers/char/generic_serial gs_setserial 0x9fa73923 +drivers/char/generic_serial gs_start 0xcf687da7 +drivers/char/generic_serial gs_stop 0x47261d97 +drivers/char/generic_serial gs_write 0xb7152717 +drivers/char/generic_serial gs_write_room 0xd724524d +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0x1ce88877 +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0x5e2de84f +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0xdbfdfe1d +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0x22380dd0 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0x9d1174f4 +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0xd72ce722 +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0x63db8fa1 +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0x2174c133 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0x7526548b +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x1ed7e772 +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0xbec4e0b5 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0xac1e44e3 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0x0594ac2d +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0x7135b2f7 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0x83671e35 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0x9794f52d +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0x07a31ea4 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0x6f282065 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0x53189546 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0x51dfe3a1 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0x1861a820 +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0xd81d6588 +drivers/char/nvram __nvram_check_checksum 0x2adec1e0 +drivers/char/nvram __nvram_read_byte 0x17ff2c1d +drivers/char/nvram __nvram_write_byte 0xa8813189 +drivers/char/nvram nvram_check_checksum 0x7da28f12 +drivers/char/nvram nvram_read_byte 0x0f28cb91 +drivers/char/nvram nvram_write_byte 0x9ce3f83f +drivers/char/sonypi sonypi_camera_command 0x89590f57 +drivers/char/tpm/tpm tpm_open 0x2b3afffe +drivers/char/tpm/tpm tpm_pm_resume 0x15a2bdb7 +drivers/char/tpm/tpm tpm_pm_suspend 0xba67f5df +drivers/char/tpm/tpm tpm_read 0x99b56d48 +drivers/char/tpm/tpm tpm_register_hardware 0x1ec776c9 +drivers/char/tpm/tpm tpm_release 0xcacfca80 +drivers/char/tpm/tpm tpm_remove_hardware 0x7370a828 +drivers/char/tpm/tpm tpm_show_caps 0x44cc9a2c +drivers/char/tpm/tpm tpm_show_pcrs 0x86c4a03b +drivers/char/tpm/tpm tpm_show_pubek 0xe59bc1da +drivers/char/tpm/tpm tpm_store_cancel 0xde625a32 +drivers/char/tpm/tpm tpm_write 0x563af9e9 +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0x55b121d5 +drivers/cpufreq/freq_table cpufreq_freq_attr_scaling_available_freqs 0xe2726125 +drivers/cpufreq/freq_table cpufreq_frequency_get_table 0x2f47d8c7 +drivers/cpufreq/freq_table cpufreq_frequency_table_cpuinfo 0x347a7c8b +drivers/cpufreq/freq_table cpufreq_frequency_table_get_attr 0x706b3a33 +drivers/cpufreq/freq_table cpufreq_frequency_table_put_attr 0x7ae1ae8e +drivers/cpufreq/freq_table cpufreq_frequency_table_target 0x071fb65e +drivers/cpufreq/freq_table cpufreq_frequency_table_verify 0x6ba2dd21 +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-bit i2c_bit_add_bus 0xf834420d +drivers/i2c/algos/i2c-algo-bit i2c_bit_del_bus 0x2b563d44 +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0x5186544f +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0x82e42b06 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0x8f669f08 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0x5c04e041 +drivers/i2c/busses/i2c-amd756 amd756_smbus 0xb27b5486 +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0x4b8518f6 +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0xaa845375 +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/i2c/i2c-core i2c_adapter_class 0x6735172d +drivers/i2c/i2c-core i2c_adapter_dev_release 0x005262dc +drivers/i2c/i2c-core i2c_adapter_driver 0xf5fea45e +drivers/i2c/i2c-core i2c_add_adapter 0x4a87d118 +drivers/i2c/i2c-core i2c_add_driver 0x70922bc8 +drivers/i2c/i2c-core i2c_attach_client 0x5a528d9c +drivers/i2c/i2c-core i2c_bus_type 0x18331e74 +drivers/i2c/i2c-core i2c_check_addr 0x5842fcb6 +drivers/i2c/i2c-core i2c_clients_command 0x33eb227d +drivers/i2c/i2c-core i2c_control 0x641caad3 +drivers/i2c/i2c-core i2c_del_adapter 0xc3cb7a2b +drivers/i2c/i2c-core i2c_del_driver 0x4fa5178e +drivers/i2c/i2c-core i2c_detach_client 0x99e69676 +drivers/i2c/i2c-core i2c_get_adapter 0xd40763c7 +drivers/i2c/i2c-core i2c_master_recv 0x99f47c5b +drivers/i2c/i2c-core i2c_master_send 0x4a4ea3c2 +drivers/i2c/i2c-core i2c_probe 0x2de4fbdc +drivers/i2c/i2c-core i2c_put_adapter 0x9a7459e9 +drivers/i2c/i2c-core i2c_release_client 0xed9dc488 +drivers/i2c/i2c-core i2c_smbus_read_byte 0xdb5df65d +drivers/i2c/i2c-core i2c_smbus_read_byte_data 0x1f6facf1 +drivers/i2c/i2c-core i2c_smbus_read_i2c_block_data 0x96a9d900 +drivers/i2c/i2c-core i2c_smbus_read_word_data 0x6126c005 +drivers/i2c/i2c-core i2c_smbus_write_block_data 0xb7f12af3 +drivers/i2c/i2c-core i2c_smbus_write_byte 0xe49031f4 +drivers/i2c/i2c-core i2c_smbus_write_byte_data 0x8e70d6ed +drivers/i2c/i2c-core i2c_smbus_write_quick 0xab8806cd +drivers/i2c/i2c-core i2c_smbus_write_word_data 0xfb9a580c +drivers/i2c/i2c-core i2c_smbus_xfer 0x9d1a688f +drivers/i2c/i2c-core i2c_transfer 0x682ec98a +drivers/i2c/i2c-core i2c_use_client 0x818bc642 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0x9a262204 +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x4358bad7 +drivers/ieee1394/ieee1394 csr1212_read 0x85bc1770 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x0168946f +drivers/ieee1394/ieee1394 dma_prog_region_free 0x3336889d +drivers/ieee1394/ieee1394 dma_prog_region_init 0xb2109847 +drivers/ieee1394/ieee1394 dma_region_alloc 0xc6c47f15 +drivers/ieee1394/ieee1394 dma_region_free 0xa33cb59c +drivers/ieee1394/ieee1394 dma_region_init 0xee37d909 +drivers/ieee1394/ieee1394 dma_region_mmap 0xf5a7410f +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0x8c3786d9 +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0x9558c189 +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0xe3271a7b +drivers/ieee1394/ieee1394 highlevel_host_reset 0x41350d7f +drivers/ieee1394/ieee1394 hpsb_add_host 0x26c0d1ab +drivers/ieee1394/ieee1394 hpsb_alloc_host 0x0b32b8c6 +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0xf68cfefd +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0x9b754b05 +drivers/ieee1394/ieee1394 hpsb_bus_reset 0x4304904e +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0xb5c44e93 +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0xb8f98666 +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0x6609937c +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0xfab4f434 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0xa77ca166 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0xf3e1293d +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0xf2fb75ed +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0xc1425cf1 +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0x4e0c9ccb +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0x1f94f0ef +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0xc074d8f9 +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0x13268610 +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0x8f963132 +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0xd4394c0f +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0x6cd3f54b +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0x767fa8be +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0x8f4b48b3 +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0xdb28d2bb +drivers/ieee1394/ieee1394 hpsb_iso_stop 0xf66b58fe +drivers/ieee1394/ieee1394 hpsb_iso_wake 0xf3e4f4a4 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x64f2a902 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0xb7d57467 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0x872eebf3 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0x28e2a407 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0xc3f2832e +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0xc3dce028 +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0x2cf4d425 +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0xfd13dfc6 +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0x0b51f3d1 +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0xc1e90429 +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0xdf5318f8 +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0x16efd25d +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0x61f05de9 +drivers/ieee1394/ieee1394 hpsb_node_write 0x185d7c92 +drivers/ieee1394/ieee1394 hpsb_packet_received 0x91823f6c +drivers/ieee1394/ieee1394 hpsb_packet_sent 0xc18ad0b8 +drivers/ieee1394/ieee1394 hpsb_packet_success 0xf53a08f9 +drivers/ieee1394/ieee1394 hpsb_protocol_class 0x41d101d9 +drivers/ieee1394/ieee1394 hpsb_read 0xe3aa6e5f +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0x0440a596 +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0xbc0e64c2 +drivers/ieee1394/ieee1394 hpsb_register_protocol 0x4ff89284 +drivers/ieee1394/ieee1394 hpsb_remove_host 0xf31a03b5 +drivers/ieee1394/ieee1394 hpsb_reset_bus 0x932d0254 +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0x3c3c8807 +drivers/ieee1394/ieee1394 hpsb_selfid_received 0xd5950dec +drivers/ieee1394/ieee1394 hpsb_send_packet 0xdd1bbf00 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0x0ba88f78 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0x0094a5a1 +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0x73562af2 +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0x80250a80 +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0xb3d5fc9a +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0x0f002bfa +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0x01b38739 +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0x922f1a8f +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0x30f983cd +drivers/ieee1394/ieee1394 hpsb_write 0x158cf7b6 +drivers/ieee1394/ieee1394 ieee1394_bus_type 0xb5aebe31 +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0x1d5aeebc +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0x707c9b06 +drivers/ieee1394/ohci1394 ohci1394_stop_context 0xa4a4311e +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0xc04e98e7 +drivers/infiniband/core/ib_cm ib_cm_establish 0xfd1d8372 +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0x77ea6723 +drivers/infiniband/core/ib_cm ib_cm_listen 0xc916f207 +drivers/infiniband/core/ib_cm ib_create_cm_id 0x0e5008d7 +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0x67b1d400 +drivers/infiniband/core/ib_cm ib_send_cm_apr 0x56f17ff6 +drivers/infiniband/core/ib_cm ib_send_cm_drep 0xbef2460f +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0x91cab09e +drivers/infiniband/core/ib_cm ib_send_cm_lap 0xde7e64bb +drivers/infiniband/core/ib_cm ib_send_cm_mra 0x668ac920 +drivers/infiniband/core/ib_cm ib_send_cm_rej 0x59905550 +drivers/infiniband/core/ib_cm ib_send_cm_rep 0x65582fe9 +drivers/infiniband/core/ib_cm ib_send_cm_req 0xc9685ec8 +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0xf4bca9ce +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0x0ff92945 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0x1e8e3486 +drivers/infiniband/core/ib_core ib_alloc_device 0x756f7b8b +drivers/infiniband/core/ib_core ib_alloc_fmr 0xa58e56e2 +drivers/infiniband/core/ib_core ib_alloc_mw 0x898c279d +drivers/infiniband/core/ib_core ib_alloc_pd 0xabc94982 +drivers/infiniband/core/ib_core ib_attach_mcast 0xaea1f580 +drivers/infiniband/core/ib_core ib_create_ah 0x964c393e +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0xdc5707cd +drivers/infiniband/core/ib_core ib_create_cq 0xf6025444 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0x4f27ebff +drivers/infiniband/core/ib_core ib_create_qp 0x37aba7b7 +drivers/infiniband/core/ib_core ib_create_srq 0xf5fa0913 +drivers/infiniband/core/ib_core ib_dealloc_device 0x6e8f8eff +drivers/infiniband/core/ib_core ib_dealloc_fmr 0x3cd668fb +drivers/infiniband/core/ib_core ib_dealloc_mw 0x94d9bdf3 +drivers/infiniband/core/ib_core ib_dealloc_pd 0x07855a59 +drivers/infiniband/core/ib_core ib_dereg_mr 0x5e16de53 +drivers/infiniband/core/ib_core ib_destroy_ah 0x3c3d954a +drivers/infiniband/core/ib_core ib_destroy_cq 0xde670194 +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x492d656f +drivers/infiniband/core/ib_core ib_destroy_qp 0x5b5324e0 +drivers/infiniband/core/ib_core ib_destroy_srq 0xd973a680 +drivers/infiniband/core/ib_core ib_detach_mcast 0x04f634c0 +drivers/infiniband/core/ib_core ib_dispatch_event 0xe878e122 +drivers/infiniband/core/ib_core ib_find_cached_gid 0xbc4d99da +drivers/infiniband/core/ib_core ib_find_cached_pkey 0x2c234bf5 +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0x196af933 +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0xf6ec6d24 +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0x8750682d +drivers/infiniband/core/ib_core ib_get_cached_gid 0xf7e650de +drivers/infiniband/core/ib_core ib_get_cached_pkey 0xafc83862 +drivers/infiniband/core/ib_core ib_get_client_data 0x588d8030 +drivers/infiniband/core/ib_core ib_get_dma_mr 0xb0bfa765 +drivers/infiniband/core/ib_core ib_modify_ah 0x821263b2 +drivers/infiniband/core/ib_core ib_modify_device 0x29ba3047 +drivers/infiniband/core/ib_core ib_modify_port 0xe3a34de8 +drivers/infiniband/core/ib_core ib_modify_qp 0x093914a6 +drivers/infiniband/core/ib_core ib_modify_srq 0x9ca9dfeb +drivers/infiniband/core/ib_core ib_pack 0x520b2638 +drivers/infiniband/core/ib_core ib_query_ah 0xadbbbbe4 +drivers/infiniband/core/ib_core ib_query_device 0x85da69ae +drivers/infiniband/core/ib_core ib_query_gid 0x7949f7b9 +drivers/infiniband/core/ib_core ib_query_mr 0xc236d219 +drivers/infiniband/core/ib_core ib_query_pkey 0x3c7bde0d +drivers/infiniband/core/ib_core ib_query_port 0x2fa666cf +drivers/infiniband/core/ib_core ib_query_qp 0x69e4be05 +drivers/infiniband/core/ib_core ib_query_srq 0x7f831255 +drivers/infiniband/core/ib_core ib_reg_phys_mr 0xf7facc4e +drivers/infiniband/core/ib_core ib_register_client 0x94ec6b52 +drivers/infiniband/core/ib_core ib_register_device 0x339bb7fc +drivers/infiniband/core/ib_core ib_register_event_handler 0xb29d8436 +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0xb9621b8c +drivers/infiniband/core/ib_core ib_resize_cq 0x9a4f31f5 +drivers/infiniband/core/ib_core ib_set_client_data 0xe27565c8 +drivers/infiniband/core/ib_core ib_ud_header_init 0x965c1dae +drivers/infiniband/core/ib_core ib_ud_header_pack 0x8d12f837 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0x11d42382 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xb1a312e1 +drivers/infiniband/core/ib_core ib_unregister_client 0x66bc4de4 +drivers/infiniband/core/ib_core ib_unregister_device 0x6d8bab24 +drivers/infiniband/core/ib_core ib_unregister_event_handler 0x859e0bba +drivers/infiniband/core/ib_mad ib_cancel_mad 0xab7e9fff +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x6a3bbc94 +drivers/infiniband/core/ib_mad ib_create_send_mad 0x39fa7e36 +drivers/infiniband/core/ib_mad ib_free_recv_mad 0xd6f8244e +drivers/infiniband/core/ib_mad ib_free_send_mad 0xa64314d4 +drivers/infiniband/core/ib_mad ib_modify_mad 0xb60577ac +drivers/infiniband/core/ib_mad ib_post_send_mad 0x3da58ba1 +drivers/infiniband/core/ib_mad ib_process_mad_wc 0xcee5e7bc +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x7605b507 +drivers/infiniband/core/ib_mad ib_register_mad_agent 0xe0c4fd74 +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0x22f132b0 +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0x731141d4 +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0xa9c0125b +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0xaecb7a40 +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0xa7b7d2ce +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0xa426b90f +drivers/input/gameport/gameport __gameport_register_driver 0x91ac7de7 +drivers/input/gameport/gameport __gameport_register_port 0xff547ada +drivers/input/gameport/gameport gameport_close 0x2cd4f1fe +drivers/input/gameport/gameport gameport_cooked_read 0xab38d129 +drivers/input/gameport/gameport gameport_open 0x56aa4104 +drivers/input/gameport/gameport gameport_rescan 0xa2e0e336 +drivers/input/gameport/gameport gameport_set_name 0xe3e0968c +drivers/input/gameport/gameport gameport_set_phys 0xe6e950df +drivers/input/gameport/gameport gameport_start_polling 0x9657bd60 +drivers/input/gameport/gameport gameport_stop_polling 0xc60408ef +drivers/input/gameport/gameport gameport_unregister_driver 0x13f96a0a +drivers/input/gameport/gameport gameport_unregister_port 0x29654f51 +drivers/isdn/capi/capifs capifs_free_ncci 0x2c54c957 +drivers/isdn/capi/capifs capifs_new_ncci 0xd0bc06ce +drivers/isdn/capi/kernelcapi attach_capi_ctr 0x94dcd611 +drivers/isdn/capi/kernelcapi capi20_get_manufacturer 0x7e6f1307 +drivers/isdn/capi/kernelcapi capi20_get_profile 0xe19a11ac +drivers/isdn/capi/kernelcapi capi20_get_serial 0x7a33596c +drivers/isdn/capi/kernelcapi capi20_get_version 0x14f2aa5a +drivers/isdn/capi/kernelcapi capi20_isinstalled 0x31c24aa4 +drivers/isdn/capi/kernelcapi capi20_manufacturer 0xed061606 +drivers/isdn/capi/kernelcapi capi20_put_message 0x1b763fc8 +drivers/isdn/capi/kernelcapi capi20_register 0x83dd7354 +drivers/isdn/capi/kernelcapi capi20_release 0x2848218b +drivers/isdn/capi/kernelcapi capi20_set_callback 0xde18d9eb +drivers/isdn/capi/kernelcapi capi_cmd2str 0xb19fda8d +drivers/isdn/capi/kernelcapi capi_cmsg2message 0x50b33ca4 +drivers/isdn/capi/kernelcapi capi_cmsg2str 0xd45b5eb5 +drivers/isdn/capi/kernelcapi capi_cmsg_header 0xb60e5e5f +drivers/isdn/capi/kernelcapi capi_ctr_handle_message 0x773d7757 +drivers/isdn/capi/kernelcapi capi_ctr_ready 0x62ceb7b6 +drivers/isdn/capi/kernelcapi capi_ctr_reseted 0xe1e37843 +drivers/isdn/capi/kernelcapi capi_ctr_resume_output 0xb53af43d +drivers/isdn/capi/kernelcapi capi_ctr_suspend_output 0x12b15599 +drivers/isdn/capi/kernelcapi capi_info2str 0x47d3fc51 +drivers/isdn/capi/kernelcapi capi_message2cmsg 0x6057c6f3 +drivers/isdn/capi/kernelcapi capi_message2str 0xa7abc5e3 +drivers/isdn/capi/kernelcapi capilib_data_b3_conf 0x62e32d43 +drivers/isdn/capi/kernelcapi capilib_data_b3_req 0x71e8d5ba +drivers/isdn/capi/kernelcapi capilib_free_ncci 0x2b8eab1f +drivers/isdn/capi/kernelcapi capilib_new_ncci 0x2baa6586 +drivers/isdn/capi/kernelcapi capilib_release 0x8f699913 +drivers/isdn/capi/kernelcapi capilib_release_appl 0xaa165d27 +drivers/isdn/capi/kernelcapi detach_capi_ctr 0x316c50ce +drivers/isdn/capi/kernelcapi register_capi_driver 0x9f823278 +drivers/isdn/capi/kernelcapi unregister_capi_driver 0x04403fcf +drivers/isdn/hardware/avm/b1 avmcard_dma_alloc 0xa7ca7a10 +drivers/isdn/hardware/avm/b1 avmcard_dma_free 0xc573ae16 +drivers/isdn/hardware/avm/b1 b1_alloc_card 0xa5c9d6e5 +drivers/isdn/hardware/avm/b1 b1_detect 0xdfd28376 +drivers/isdn/hardware/avm/b1 b1_free_card 0x01be8f5d +drivers/isdn/hardware/avm/b1 b1_getrevision 0x5100e126 +drivers/isdn/hardware/avm/b1 b1_interrupt 0x7c376ed0 +drivers/isdn/hardware/avm/b1 b1_irq_table 0x85f09690 +drivers/isdn/hardware/avm/b1 b1_load_config 0x16e30345 +drivers/isdn/hardware/avm/b1 b1_load_firmware 0xb75479dc +drivers/isdn/hardware/avm/b1 b1_load_t4file 0xf8222f95 +drivers/isdn/hardware/avm/b1 b1_loaded 0x00a20dcb +drivers/isdn/hardware/avm/b1 b1_parse_version 0x0ee814eb +drivers/isdn/hardware/avm/b1 b1_register_appl 0x24c3b309 +drivers/isdn/hardware/avm/b1 b1_release_appl 0xc89855f0 +drivers/isdn/hardware/avm/b1 b1_reset_ctr 0xb4f5ab90 +drivers/isdn/hardware/avm/b1 b1_send_message 0x22fffb2a +drivers/isdn/hardware/avm/b1 b1ctl_read_proc 0xb86902ff +drivers/isdn/hardware/avm/b1dma b1dma_interrupt 0xb7858191 +drivers/isdn/hardware/avm/b1dma b1dma_load_firmware 0x16a6f1a1 +drivers/isdn/hardware/avm/b1dma b1dma_register_appl 0x3c87adfe +drivers/isdn/hardware/avm/b1dma b1dma_release_appl 0x87057608 +drivers/isdn/hardware/avm/b1dma b1dma_reset 0x872cabba +drivers/isdn/hardware/avm/b1dma b1dma_reset_ctr 0x6abccea0 +drivers/isdn/hardware/avm/b1dma b1dma_send_message 0xe56f8fa4 +drivers/isdn/hardware/avm/b1dma b1dmactl_read_proc 0x9e318762 +drivers/isdn/hardware/avm/b1dma b1pciv4_detect 0x79c4e3d0 +drivers/isdn/hardware/avm/b1dma t1pci_detect 0x209f25df +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_b1 0xf14bf8b1 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m1 0xaec3240e +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m2 0xea620116 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_delcard 0x29562993 +drivers/isdn/hardware/eicon/divadidd DIVA_DIDD_Read 0x2974ead1 +drivers/isdn/hardware/eicon/divadidd proc_net_eicon 0x3cfb049c +drivers/isdn/hisax/hisax FsmChangeState 0x93a64734 +drivers/isdn/hisax/hisax FsmDelTimer 0x799088e0 +drivers/isdn/hisax/hisax FsmEvent 0x9df0cd27 +drivers/isdn/hisax/hisax FsmFree 0x148f0c99 +drivers/isdn/hisax/hisax FsmInitTimer 0x52866abe +drivers/isdn/hisax/hisax FsmNew 0xf0a16657 +drivers/isdn/hisax/hisax FsmRestartTimer 0xde7e7906 +drivers/isdn/hisax/hisax HiSax_closecard 0xfc27303b +drivers/isdn/hisax/hisax hisax_init_pcmcia 0x049a1906 +drivers/isdn/hisax/hisax hisax_register 0xee93522c +drivers/isdn/hisax/hisax hisax_unregister 0x07f4f2ce +drivers/isdn/hisax/hisax_isac isac_d_l2l1 0x3f3b323a +drivers/isdn/hisax/hisax_isac isac_init 0x02eb3f64 +drivers/isdn/hisax/hisax_isac isac_irq 0xb45d7a1e +drivers/isdn/hisax/hisax_isac isac_setup 0xf930678c +drivers/isdn/hisax/hisax_isac isacsx_irq 0x626d6bc5 +drivers/isdn/hisax/hisax_isac isacsx_setup 0xf14c8d9a +drivers/isdn/hisax/isdnhdlc isdnhdlc_bit_rev_tab 0xe82c3e32 +drivers/isdn/hisax/isdnhdlc isdnhdlc_decode 0x1a1afeef +drivers/isdn/hisax/isdnhdlc isdnhdlc_encode 0x52a6537c +drivers/isdn/hisax/isdnhdlc isdnhdlc_out_init 0x277685da +drivers/isdn/hisax/isdnhdlc isdnhdlc_rcv_init 0x1dc6a9fc +drivers/isdn/i4l/isdn isdn_ppp_register_compressor 0xe50df2d4 +drivers/isdn/i4l/isdn isdn_ppp_unregister_compressor 0xe3c293ff +drivers/isdn/i4l/isdn isdn_register_divert 0xb7757abb +drivers/isdn/i4l/isdn register_isdn 0xd594e556 +drivers/isdn/misdn/mISDN_core mISDN_AddIE 0xf419c7d2 +drivers/isdn/misdn/mISDN_core mISDN_AddvarIE 0x4c4b4889 +drivers/isdn/misdn/mISDN_core mISDN_ConnectIF 0xa66117d9 +drivers/isdn/misdn/mISDN_core mISDN_DisConnectIF 0x9a9149bb +drivers/isdn/misdn/mISDN_core mISDN_FsmAddTimer 0x7214e53f +drivers/isdn/misdn/mISDN_core mISDN_FsmChangeState 0x50c2230c +drivers/isdn/misdn/mISDN_core mISDN_FsmDelTimer 0x3010393f +drivers/isdn/misdn/mISDN_core mISDN_FsmEvent 0xd5145151 +drivers/isdn/misdn/mISDN_core mISDN_FsmFree 0x2348cc3c +drivers/isdn/misdn/mISDN_core mISDN_FsmInitTimer 0x172da300 +drivers/isdn/misdn/mISDN_core mISDN_FsmNew 0xf9e7832f +drivers/isdn/misdn/mISDN_core mISDN_FsmRestartTimer 0x50a5d950 +drivers/isdn/misdn/mISDN_core mISDN_HasProtocol 0x32c0f51a +drivers/isdn/misdn/mISDN_core mISDN_LogL3Msg 0x5f1217e3 +drivers/isdn/misdn/mISDN_core mISDN_QuickHex 0x91b96ea6 +drivers/isdn/misdn/mISDN_core mISDN_RemoveUsedPID 0xd956d2e8 +drivers/isdn/misdn/mISDN_core mISDN_SetHandledPID 0x787734a1 +drivers/isdn/misdn/mISDN_core mISDN_SetIF 0xbbc1d873 +drivers/isdn/misdn/mISDN_core mISDN_alloc_l3msg 0x07fb757e +drivers/isdn/misdn/mISDN_core mISDN_bprotocol2pid 0xed673eae +drivers/isdn/misdn/mISDN_core mISDN_debug 0xff10c7d9 +drivers/isdn/misdn/mISDN_core mISDN_debugprint 0xc798e02f +drivers/isdn/misdn/mISDN_core mISDN_free_bch 0x00f77e18 +drivers/isdn/misdn/mISDN_core mISDN_free_dch 0x3ab0ba2d +drivers/isdn/misdn/mISDN_core mISDN_get_down_layer 0xd1c0ae73 +drivers/isdn/misdn/mISDN_core mISDN_get_lowlayer 0x9f6faa8f +drivers/isdn/misdn/mISDN_core mISDN_get_protocol 0xc5fe53fd +drivers/isdn/misdn/mISDN_core mISDN_get_up_layer 0xc6091c92 +drivers/isdn/misdn/mISDN_core mISDN_getrev 0x91f1a1b8 +drivers/isdn/misdn/mISDN_core mISDN_initQ931_info 0x45d57ad5 +drivers/isdn/misdn/mISDN_core mISDN_init_bch 0x5a94e9f6 +drivers/isdn/misdn/mISDN_core mISDN_init_dch 0x3e194d83 +drivers/isdn/misdn/mISDN_core mISDN_init_instance 0xedef90f0 +drivers/isdn/misdn/mISDN_core mISDN_l3_ie2pos 0x6a35c630 +drivers/isdn/misdn/mISDN_core mISDN_l3_pos2ie 0x31559777 +drivers/isdn/misdn/mISDN_core mISDN_layermask2layer 0x48cbe644 +drivers/isdn/misdn/mISDN_core mISDN_register 0x52836fb6 +drivers/isdn/misdn/mISDN_core mISDN_set_dchannel_pid 0xca03ed9e +drivers/isdn/misdn/mISDN_core mISDN_unregister 0x91576da1 +drivers/isdn/misdn/mISDN_core vmISDN_debug 0x85718442 +drivers/isdn/misdn/mISDN_isac mISDN_ISAC_l1hw 0xf5976bcc +drivers/isdn/misdn/mISDN_isac mISDN_clear_isac 0x42418626 +drivers/isdn/misdn/mISDN_isac mISDN_isac_free 0x654d4be4 +drivers/isdn/misdn/mISDN_isac mISDN_isac_init 0x1225c599 +drivers/isdn/misdn/mISDN_isac mISDN_isac_interrupt 0x2596df2c +drivers/md/dm-mirror dm_create_dirty_log 0xf6acf51f +drivers/md/dm-mirror dm_destroy_dirty_log 0xece310b1 +drivers/md/dm-mirror dm_register_dirty_log_type 0xe6cb8674 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x23e23a28 +drivers/md/dm-mod dm_get_device 0xa761e50d +drivers/md/dm-mod dm_get_mapinfo 0x8963082b +drivers/md/dm-mod dm_io_async 0x33dc2be7 +drivers/md/dm-mod dm_io_async_bvec 0x168b26f9 +drivers/md/dm-mod dm_io_async_vm 0xdbfa209b +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0x8366d1d6 +drivers/md/dm-mod dm_io_sync_bvec 0x1089b3ba +drivers/md/dm-mod dm_io_sync_vm 0x7a679c88 +drivers/md/dm-mod dm_put_device 0x5e8ba319 +drivers/md/dm-mod dm_register_target 0xdb5bef76 +drivers/md/dm-mod dm_table_event 0x97c0aa28 +drivers/md/dm-mod dm_table_flush_all 0x8d6bec0a +drivers/md/dm-mod dm_table_get 0xd849e05d +drivers/md/dm-mod dm_table_get_mode 0x218e1c73 +drivers/md/dm-mod dm_table_get_size 0x0f95d2e3 +drivers/md/dm-mod dm_table_put 0xc52370d1 +drivers/md/dm-mod dm_table_unplug_all 0x5cf3c6f5 +drivers/md/dm-mod dm_unregister_target 0xc09f20b2 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x6315cf5c +drivers/md/dm-mod kcopyd_client_create 0x9abcd301 +drivers/md/dm-mod kcopyd_client_destroy 0x9ff29dcb +drivers/md/dm-mod kcopyd_copy 0x0f2b7bd2 +drivers/md/dm-multipath dm_pg_init_complete 0x85d35c5b +drivers/md/dm-multipath dm_register_hw_handler 0x2e3e385d +drivers/md/dm-multipath dm_register_path_selector 0x4d2c7cae +drivers/md/dm-multipath dm_scsi_err_handler 0xbb5dbef5 +drivers/md/dm-multipath dm_unregister_hw_handler 0x84764639 +drivers/md/dm-multipath dm_unregister_path_selector 0x949851cf +drivers/md/md-mod bitmap_close_sync 0x1c262335 +drivers/md/md-mod bitmap_daemon_work 0x58aca85f +drivers/md/md-mod bitmap_end_sync 0xea90d6c1 +drivers/md/md-mod bitmap_endwrite 0x4aeacac2 +drivers/md/md-mod bitmap_start_sync 0x07226e8c +drivers/md/md-mod bitmap_startwrite 0x4968a4fc +drivers/md/md-mod bitmap_unplug 0x1036da2c +drivers/md/md-mod md_check_recovery 0xa406fa1b +drivers/md/md-mod md_done_sync 0x9ac30637 +drivers/md/md-mod md_error 0x1943352c +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0xa86c7698 +drivers/md/md-mod md_unregister_thread 0xedc232ee +drivers/md/md-mod md_wakeup_thread 0x8bb411ed +drivers/md/md-mod md_write_end 0xc623b24a +drivers/md/md-mod md_write_start 0x20c9277f +drivers/md/md-mod register_md_personality 0xcb2ddca9 +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x4740e7a3 +drivers/media/common/ir-common ir_codes_hauppauge_new 0x902a3cd2 +drivers/media/common/ir-common ir_codes_pinnacle 0xd3a0f048 +drivers/media/common/ir-common ir_codes_pixelview 0xfa177653 +drivers/media/common/ir-common ir_codes_rc5_tv 0xd9c7f010 +drivers/media/common/ir-common ir_codes_winfast 0x89cc1189 +drivers/media/common/ir-common ir_decode_biphase 0x43c89ef4 +drivers/media/common/ir-common ir_decode_pulsedistance 0x2456e513 +drivers/media/common/ir-common ir_dump_samples 0x6d6511e7 +drivers/media/common/ir-common ir_extract_bits 0x1cb148f5 +drivers/media/common/ir-common ir_input_init 0x50e6dd61 +drivers/media/common/ir-common ir_input_keydown 0x02ca45d7 +drivers/media/common/ir-common ir_input_nokey 0x0bbd68ea +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x489a5dd1 +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0xd5406462 +drivers/media/common/saa7146 saa7146_i2c_transfer 0xa29c42ad +drivers/media/common/saa7146 saa7146_pgtable_alloc 0x64284e53 +drivers/media/common/saa7146 saa7146_pgtable_build_single 0x62bdd42f +drivers/media/common/saa7146 saa7146_pgtable_free 0x8fba1fbd +drivers/media/common/saa7146 saa7146_register_extension 0x178b1892 +drivers/media/common/saa7146 saa7146_setgpio 0x138be5bf +drivers/media/common/saa7146 saa7146_unregister_extension 0xa003a9c0 +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0xd1b4ed9e +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0xda40fd87 +drivers/media/common/saa7146_vv saa7146_register_device 0x29c2be51 +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0x2af09a3d +drivers/media/common/saa7146_vv saa7146_start_preview 0xb854bfe9 +drivers/media/common/saa7146_vv saa7146_stop_preview 0x2b5e24f8 +drivers/media/common/saa7146_vv saa7146_unregister_device 0x94b1bddc +drivers/media/common/saa7146_vv saa7146_vv_init 0xf7a08d7a +drivers/media/common/saa7146_vv saa7146_vv_release 0x968bd4ef +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0x347cd27e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0x636691d3 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0x0a199c4f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0xd227a719 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0x0f6b08a7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0xf85b7566 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0xc138d8e7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0xc20cbdf6 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0xca81d7de +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0x7f1a9c6e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0x18f1ea25 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0xb3fb6700 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0x9a97fd5a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0x68dcad8f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0xf5422500 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0x03185e45 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0x6a641097 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0x9bf28b0a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0x10bece46 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0x03614546 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0x05fbc466 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0x8f7ce2cc +drivers/media/dvb/bt8xx/bt878 bt878 0xcb1731bd +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0xbfc6a055 +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0xfbdeaf9c +drivers/media/dvb/bt8xx/bt878 bt878_stop 0x594bb0b9 +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0x146ffad7 +drivers/media/dvb/bt8xx/dst dst_check_sum 0xe94b8c9c +drivers/media/dvb/bt8xx/dst dst_comm_init 0x0aa23f01 +drivers/media/dvb/bt8xx/dst dst_command 0xe0220db2 +drivers/media/dvb/bt8xx/dst dst_error_bailout 0xc59b3448 +drivers/media/dvb/bt8xx/dst dst_error_recovery 0x148c8d18 +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0x2ecdfc5b +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0x5b5a4245 +drivers/media/dvb/bt8xx/dst dst_pio_disable 0x53556240 +drivers/media/dvb/bt8xx/dst dst_pio_enable 0xa7e7871c +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0xed86bd0d +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0xc987990e +drivers/media/dvb/bt8xx/dst rdc_reset_state 0x0f75001e +drivers/media/dvb/bt8xx/dst read_dst 0x37ce702e +drivers/media/dvb/bt8xx/dst write_dst 0x9539074c +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0x060d6503 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0xc0b15d13 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0x60e316e4 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0xb41b2e22 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0xf4112729 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0x13e88870 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0x82dd5457 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0x6351d298 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0x6cfe08f9 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0xfec24d63 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x5645e525 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0x99123cea +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0xe1f5edb6 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x80e3832d +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x36c8ea1f +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0x3d2dac24 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0x54bfa7cb +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0xda60a353 +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0xec16f9fd +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0x0be9b489 +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0x3af13199 +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0xbfe459fc +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0x30d7030c +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0x77ed7134 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0x8e964c42 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0xb56989a3 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0x1a271826 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x97f27bbf +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0x77762220 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0xba98e261 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0x18afc019 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0xe891dadc +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0xf8f45459 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0xb4133c94 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0x4f7e5d2c +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0xafc6dbd1 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0x546e8304 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0x71d4842d +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0x8b49a23f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0x1ef13b7b +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0xb5c7a110 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0xbb4970d8 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0xb4d9b06b +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0x8b93f7f3 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0x25e300de +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0x5cf836c1 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0x812693ca +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0xeef13826 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0x7857338d +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0xf5cbc91c +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0xdf349fc4 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0x92098e97 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0xd57f942c +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0x7833da8e +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0x9d531f36 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0xd4d3dddc +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0x030e70d3 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0xd9a1fb05 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0x4071ca9a +drivers/media/dvb/frontends/at76c651 at76c651_attach 0xcc47905b +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0xdb2a67ee +drivers/media/dvb/frontends/cx22700 cx22700_attach 0xe713c719 +drivers/media/dvb/frontends/cx22702 cx22702_attach 0xf9c98b25 +drivers/media/dvb/frontends/cx24110 cx24110_attach 0x05ab16a8 +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0x6d1fae70 +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0xf3104d58 +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0xe762d459 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x05f13eee +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0xe1bef5b3 +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0x9328542e +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0xed87974e +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x02689b7f +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0x5b259391 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x7a0ed9bb +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0xbf98157e +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xd15aca20 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xfdd5e650 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x2a4f5718 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xc95be182 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x708f579e +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0xe39c77c8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0x12284643 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0xf1d4150d +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0xd5d22e56 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0xccc91f17 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xaddc7276 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x96cce305 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xcbbd68de +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x13856c44 +drivers/media/dvb/frontends/l64781 l64781_attach 0xb3c0e98b +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0xeb922acc +drivers/media/dvb/frontends/mt312 mt312_attach 0x72259463 +drivers/media/dvb/frontends/mt312 vp310_attach 0xb1cc5c0f +drivers/media/dvb/frontends/mt352 mt352_attach 0x422441e4 +drivers/media/dvb/frontends/mt352 mt352_write 0x97872f57 +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0xf4a75488 +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x6a3753d5 +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0x1215af8a +drivers/media/dvb/frontends/or51132 or51132_attach 0xafedc4c4 +drivers/media/dvb/frontends/or51211 or51211_attach 0xe6006009 +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0xd7fd78ba +drivers/media/dvb/frontends/sp8870 sp8870_attach 0x9795c8ea +drivers/media/dvb/frontends/sp887x sp887x_attach 0x307d89fc +drivers/media/dvb/frontends/stv0297 stv0297_attach 0x963ab796 +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0x97b508b8 +drivers/media/dvb/frontends/stv0299 stv0299_attach 0xdeb76410 +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0x5ba9dd43 +drivers/media/dvb/frontends/tda10021 tda10021_attach 0x2c22dc3d +drivers/media/dvb/frontends/tda1004x tda10045_attach 0xc00d29f2 +drivers/media/dvb/frontends/tda1004x tda10046_attach 0x86ff9976 +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0xd33cb7ea +drivers/media/dvb/frontends/tda8083 tda8083_attach 0x10c97d30 +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0x5d4558ef +drivers/media/dvb/frontends/ves1820 ves1820_attach 0xa592ec3d +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0x40c763d1 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0xf4eda20d +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0xe1ed07c2 +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0x0f90bf79 +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0x6c8826a5 +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0x9d670d49 +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0x8c584776 +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0x42c77d8c +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0x9d36ee80 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0xb6f1ef4a +drivers/media/radio/miropcm20 aci_rds_cmd 0xde4156ce +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0xe8f58218 +drivers/media/video/btcx-risc btcx_riscmem_free 0xf26de122 +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x0e0f3e97 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0xe90b73b2 +drivers/media/video/bttv bttv_gpio_bits 0x0fca0631 +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0x74df87f5 +drivers/media/video/bttv bttv_gpio_read 0xc79e161d +drivers/media/video/bttv bttv_gpio_write 0x86e47dc7 +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0xbbcb46c3 +drivers/media/video/bttv bttv_sub_register 0x114c1c07 +drivers/media/video/bttv bttv_sub_unregister 0x55d0b746 +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0x69b653ec +drivers/media/video/cpia cpia_unregister_camera 0x9c77c581 +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0xbbcbcbf3 +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0x4e8453f1 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0xecfbb199 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0x21705921 +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0x178761c2 +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0x4d54a758 +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0x0ad500af +drivers/media/video/cx88/cx8802 cx8802_fini_common 0x9e76ea60 +drivers/media/video/cx88/cx8802 cx8802_init_common 0xa714f9fd +drivers/media/video/cx88/cx8802 cx8802_resume_common 0x7b52fedb +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0xb9513d2d +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x4e6954bf +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0x11c349b5 +drivers/media/video/cx88/cx88xx cx88_card_list 0x489b75c1 +drivers/media/video/cx88/cx88xx cx88_card_setup 0xb1c809ea +drivers/media/video/cx88/cx88xx cx88_core_get 0xed1328a8 +drivers/media/video/cx88/cx88xx cx88_core_irq 0x4c918c0e +drivers/media/video/cx88/cx88xx cx88_core_put 0xd4af9729 +drivers/media/video/cx88/cx88xx cx88_free_buffer 0x404c6795 +drivers/media/video/cx88/cx88xx cx88_get_stereo 0xbfc2eb9d +drivers/media/video/cx88/cx88xx cx88_i2c_init 0x8ab83505 +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0xc4f0e82f +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x777b6d7f +drivers/media/video/cx88/cx88xx cx88_reset 0xcbb564c3 +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0xb7e28314 +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0x09d9de4b +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0xafeb180f +drivers/media/video/cx88/cx88xx cx88_set_scale 0xdbb2ff40 +drivers/media/video/cx88/cx88xx cx88_set_stereo 0x7f8edf8b +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0x71830595 +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0x43f77a39 +drivers/media/video/cx88/cx88xx cx88_shutdown 0xc0330d70 +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0x03b40cdd +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0xe45f14c1 +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x9b140fff +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0x0bef30e9 +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0xd19dcf3a +drivers/media/video/cx88/cx88xx cx88_subids 0x6b626846 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0x5e16ba46 +drivers/media/video/cx88/cx88xx cx88_wakeup 0xe6aaad5d +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0x3148f24e +drivers/media/video/saa7134/saa7134 dmasound_exit 0x4d701b44 +drivers/media/video/saa7134/saa7134 dmasound_init 0xf03b1b94 +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0x5338b4ef +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0x474c43fe +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0xfa78e7a8 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0x40e7a433 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0xd42f1e01 +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0x013e2fe9 +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0xcb2d5b61 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0x0794b918 +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0x280c1c26 +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0xe7796c7e +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0x7c225b15 +drivers/media/video/tveeprom tveeprom_read 0x76d01f13 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0xd832c48c +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x9c7de443 +drivers/media/video/v4l2-common v4l2_prio_check 0x2f639468 +drivers/media/video/v4l2-common v4l2_prio_close 0x95284709 +drivers/media/video/v4l2-common v4l2_prio_init 0xbecd2858 +drivers/media/video/v4l2-common v4l2_prio_max 0x1dcaa0c8 +drivers/media/video/v4l2-common v4l2_prio_open 0x76ba9a9a +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0x33b3b664 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0x31182eab +drivers/media/video/video-buf videobuf_dma_init 0xa613eadf +drivers/media/video/video-buf videobuf_dma_init_kernel 0xa0b25161 +drivers/media/video/video-buf videobuf_dma_init_overlay 0x93d7977a +drivers/media/video/video-buf videobuf_dma_init_user 0x7b7abf57 +drivers/media/video/video-buf videobuf_dma_pci_map 0xd2ac1079 +drivers/media/video/video-buf videobuf_dma_pci_sync 0xa5f7acf0 +drivers/media/video/video-buf videobuf_dma_pci_unmap 0x476f7563 +drivers/media/video/video-buf videobuf_dqbuf 0xaa378936 +drivers/media/video/video-buf videobuf_iolock 0xf5073e03 +drivers/media/video/video-buf videobuf_mmap_free 0xf8bc236d +drivers/media/video/video-buf videobuf_mmap_mapper 0xf4188c93 +drivers/media/video/video-buf videobuf_mmap_setup 0x01481378 +drivers/media/video/video-buf videobuf_next_field 0x0b4070e7 +drivers/media/video/video-buf videobuf_poll_stream 0x17d7dbfb +drivers/media/video/video-buf videobuf_qbuf 0x30a64e7d +drivers/media/video/video-buf videobuf_querybuf 0x96c81821 +drivers/media/video/video-buf videobuf_queue_cancel 0x1d5f2687 +drivers/media/video/video-buf videobuf_queue_init 0xff700d85 +drivers/media/video/video-buf videobuf_queue_is_busy 0x185d9646 +drivers/media/video/video-buf videobuf_read_one 0x736e4a4c +drivers/media/video/video-buf videobuf_read_start 0xb249db89 +drivers/media/video/video-buf videobuf_read_stop 0xb48204ec +drivers/media/video/video-buf videobuf_read_stream 0x4eafdbba +drivers/media/video/video-buf videobuf_reqbufs 0x443003d2 +drivers/media/video/video-buf videobuf_status 0x698cb24a +drivers/media/video/video-buf videobuf_streamoff 0xccaa67f9 +drivers/media/video/video-buf videobuf_streamon 0xdc63557e +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0x3403b98a +drivers/media/video/video-buf videobuf_waiton 0xcdd80fe3 +drivers/media/video/video-buf-dvb videobuf_dvb_register 0xbba76aeb +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0xb62a9136 +drivers/media/video/videocodec videocodec_attach 0x9165b3e7 +drivers/media/video/videocodec videocodec_detach 0x1803dde4 +drivers/media/video/videocodec videocodec_register 0x40c73ab9 +drivers/media/video/videocodec videocodec_unregister 0xec513b69 +drivers/media/video/videodev video_devdata 0x756ffebf +drivers/media/video/videodev video_device_alloc 0xbf328e5d +drivers/media/video/videodev video_device_release 0x2332694f +drivers/media/video/videodev video_exclusive_open 0x050dd401 +drivers/media/video/videodev video_exclusive_release 0xba9aa625 +drivers/media/video/videodev video_register_device 0xccc04f06 +drivers/media/video/videodev video_unregister_device 0x09458e79 +drivers/media/video/videodev video_usercopy 0xd80a151a +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0x35ef568f +drivers/message/fusion/mptbase mpt_HardResetHandler 0x211b487a +drivers/message/fusion/mptbase mpt_add_sge 0x105d4f47 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0x3c4987f7 +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0xfcc307d5 +drivers/message/fusion/mptbase mpt_attach 0x88e697c5 +drivers/message/fusion/mptbase mpt_config 0x799e7f54 +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0x6dd750df +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0x2af1dbb7 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x9d62d906 +drivers/message/fusion/mptbase mpt_findImVolumes 0xa361b7d7 +drivers/message/fusion/mptbase mpt_free_fw_memory 0x54abe8a2 +drivers/message/fusion/mptbase mpt_free_msg_frame 0xd720f38a +drivers/message/fusion/mptbase mpt_get_msg_frame 0x70cd3bed +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0x1cd20272 +drivers/message/fusion/mptbase mpt_proc_root_dir 0x7961ec10 +drivers/message/fusion/mptbase mpt_put_msg_frame 0x11e49447 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0xac8d77ce +drivers/message/fusion/mptbase mpt_register 0x92493e7d +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0xc689741f +drivers/message/fusion/mptbase mpt_resume 0x9af2882d +drivers/message/fusion/mptbase mpt_send_handshake_request 0xed6a1a8a +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0x0c2394f2 +drivers/message/fusion/mptbase mpt_toolbox 0xddebb693 +drivers/message/fusion/mptbase mpt_verify_adapter 0x29c4d6c2 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0xb1554c80 +drivers/message/fusion/mptscsih mptscsih_abort 0x9ec8a659 +drivers/message/fusion/mptscsih mptscsih_bios_param 0xd63a1847 +drivers/message/fusion/mptscsih mptscsih_bus_reset 0xd6b4d1a7 +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0xc168fa79 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0xbee47389 +drivers/message/fusion/mptscsih mptscsih_event_process 0xdf843e4c +drivers/message/fusion/mptscsih mptscsih_host_reset 0x7c74633c +drivers/message/fusion/mptscsih mptscsih_info 0x0cc2ae39 +drivers/message/fusion/mptscsih mptscsih_io_done 0x0adcbfc4 +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x1f89eab9 +drivers/message/fusion/mptscsih mptscsih_proc_info 0x31b489b1 +drivers/message/fusion/mptscsih mptscsih_qcmd 0x45556523 +drivers/message/fusion/mptscsih mptscsih_remove 0x6c42f4d5 +drivers/message/fusion/mptscsih mptscsih_resume 0xe45dbd46 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0xd26570cf +drivers/message/fusion/mptscsih mptscsih_shutdown 0x75058d38 +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0xfdc005a3 +drivers/message/fusion/mptscsih mptscsih_slave_configure 0xf58d8484 +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x8ac70b83 +drivers/message/fusion/mptscsih mptscsih_suspend 0xc8087e6a +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x99ed592d +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0xed959a8f +drivers/message/i2o/i2o_core i2o_device_claim_release 0x89ce94c1 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0x95469577 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x7bdf359c +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x9748892c +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0xb599778b +drivers/message/i2o/i2o_core i2o_driver_register 0xa6fdc49e +drivers/message/i2o/i2o_core i2o_driver_unregister 0xbf12ad09 +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0x2b4a4b2c +drivers/message/i2o/i2o_core i2o_exec_lct_get 0x516b8b41 +drivers/message/i2o/i2o_core i2o_find_iop 0x7398de80 +drivers/message/i2o/i2o_core i2o_iop_find_device 0xeb2ff11d +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x353dbc6d +drivers/message/i2o/i2o_core i2o_msg_nop 0xe30cddcd +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0x2981ac16 +drivers/message/i2o/i2o_core i2o_parm_field_get 0x40e275e9 +drivers/message/i2o/i2o_core i2o_parm_issue 0x7c069287 +drivers/message/i2o/i2o_core i2o_parm_table_get 0xf8df409c +drivers/message/i2o/i2o_core i2o_status_get 0x91093ab0 +drivers/mmc/mmc_core __mmc_claim_host 0xc133f3cf +drivers/mmc/mmc_core mmc_add_host 0xe261ca5e +drivers/mmc/mmc_core mmc_alloc_host 0x56b64c17 +drivers/mmc/mmc_core mmc_cleanup_queue 0x33f75e2d +drivers/mmc/mmc_core mmc_detect_change 0xab8f6a26 +drivers/mmc/mmc_core mmc_free_host 0xe7258e24 +drivers/mmc/mmc_core mmc_init_queue 0x3ac6af27 +drivers/mmc/mmc_core mmc_queue_resume 0xca6f7e11 +drivers/mmc/mmc_core mmc_queue_suspend 0x69826d73 +drivers/mmc/mmc_core mmc_register_driver 0x488da9ef +drivers/mmc/mmc_core mmc_release_host 0x743fc1d2 +drivers/mmc/mmc_core mmc_remove_host 0xe88c1b70 +drivers/mmc/mmc_core mmc_request_done 0xf7bdf004 +drivers/mmc/mmc_core mmc_resume_host 0x89742fd3 +drivers/mmc/mmc_core mmc_start_request 0xfaa37dc7 +drivers/mmc/mmc_core mmc_suspend_host 0xc0bd9ef8 +drivers/mmc/mmc_core mmc_unregister_driver 0x89e12a71 +drivers/mmc/mmc_core mmc_wait_for_app_cmd 0xb10b1a20 +drivers/mmc/mmc_core mmc_wait_for_cmd 0x2c7e43a4 +drivers/mmc/mmc_core mmc_wait_for_req 0x20e3e6bf +drivers/mtd/chips/cfi_util cfi_fixup 0x6feed979 +drivers/mtd/chips/cfi_util cfi_read_pri 0xc9db4997 +drivers/mtd/chips/cfi_util cfi_varsize_frob 0x407e3025 +drivers/mtd/chips/chipreg do_map_probe 0xb256178d +drivers/mtd/chips/chipreg map_destroy 0xfd1737d4 +drivers/mtd/chips/chipreg register_mtd_chip_driver 0x333c5103 +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0x1ca403e1 +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0x1948db95 +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0x7a9b851c +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0x7f93e19d +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0x49122f3b +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0xbc52e5ba +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0xec2fcb36 +drivers/mtd/mtdconcat mtd_concat_create 0x764be149 +drivers/mtd/mtdconcat mtd_concat_destroy 0x5d056d6f +drivers/mtd/mtdcore add_mtd_device 0xad37ea58 +drivers/mtd/mtdcore default_mtd_readv 0x6c3fca46 +drivers/mtd/mtdcore default_mtd_writev 0xde9ff74b +drivers/mtd/mtdcore del_mtd_device 0x6fac233e +drivers/mtd/mtdcore get_mtd_device 0xd9474626 +drivers/mtd/mtdcore mtd_table 0x5a7e5ac9 +drivers/mtd/mtdcore mtd_table_mutex 0x30e4369c +drivers/mtd/mtdcore put_mtd_device 0x0bc87a16 +drivers/mtd/mtdcore register_mtd_user 0x7f2eb380 +drivers/mtd/mtdcore unregister_mtd_user 0x6e83e786 +drivers/mtd/mtdpart add_mtd_partitions 0x7bfc9dcb +drivers/mtd/mtdpart del_mtd_partitions 0xa937d43f +drivers/mtd/mtdpart deregister_mtd_parser 0x929722ae +drivers/mtd/mtdpart mtd_erase_callback 0x46f72a67 +drivers/mtd/mtdpart parse_mtd_partitions 0x5bc6a251 +drivers/mtd/mtdpart register_mtd_parser 0x710828d9 +drivers/mtd/nand/nand nand_default_bbt 0x19c0a6f4 +drivers/mtd/nand/nand nand_release 0x752113b6 +drivers/mtd/nand/nand nand_scan 0x82f24d59 +drivers/mtd/nand/nand nand_scan_bbt 0xeb8eca6f +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0xf9f9b1d1 +drivers/mtd/onenand/onenand onenand_release 0xc2d008d6 +drivers/mtd/onenand/onenand onenand_scan 0x6e0c7653 +drivers/mtd/onenand/onenand onenand_scan_bbt 0x35a6d97b +drivers/net/8390 NS8390_init 0x8f47ccd8 +drivers/net/8390 __alloc_ei_netdev 0x5aa17161 +drivers/net/8390 ei_close 0x8e78823a +drivers/net/8390 ei_interrupt 0x7862f4df +drivers/net/8390 ei_open 0xa70586ed +drivers/net/8390 ei_poll 0x9d988bd1 +drivers/net/arcnet/arcnet alloc_arcdev 0x6ab80dfa +drivers/net/arcnet/arcnet arc_bcast_proto 0x8e59d77b +drivers/net/arcnet/arcnet arc_proto_default 0x8732cb3e +drivers/net/arcnet/arcnet arc_proto_map 0x3befb883 +drivers/net/arcnet/arcnet arc_proto_null 0x4ab27c1d +drivers/net/arcnet/arcnet arc_raw_proto 0x9cec1d11 +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0x83db44fe +drivers/net/arcnet/arcnet arcnet_unregister_proto 0x5fb56784 +drivers/net/arcnet/com20020 com20020_check 0xe34369cc +drivers/net/arcnet/com20020 com20020_found 0xae5d8885 +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0xc23f791c +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0x484b568d +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0x7118285c +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0x4f67d66e +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0x48c24215 +drivers/net/irda/sir-dev irda_register_dongle 0xf190ba4e +drivers/net/irda/sir-dev irda_unregister_dongle 0x6f708e6c +drivers/net/irda/sir-dev sirdev_get_instance 0x270a2e82 +drivers/net/irda/sir-dev sirdev_put_instance 0x968e1b8e +drivers/net/irda/sir-dev sirdev_raw_read 0x1f60e446 +drivers/net/irda/sir-dev sirdev_raw_write 0x4a9ff87c +drivers/net/irda/sir-dev sirdev_receive 0x8f4e6401 +drivers/net/irda/sir-dev sirdev_set_dongle 0x6bb55411 +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0xf954a792 +drivers/net/irda/sir-dev sirdev_write_complete 0x0c5c060e +drivers/net/mii generic_mii_ioctl 0x238631ee +drivers/net/mii mii_check_gmii_support 0x8659928f +drivers/net/mii mii_check_link 0xf0a224e0 +drivers/net/mii mii_check_media 0x34f37d7f +drivers/net/mii mii_ethtool_gset 0x05c7de2c +drivers/net/mii mii_ethtool_sset 0x4f9ad8e2 +drivers/net/mii mii_link_ok 0x8d1d63f3 +drivers/net/mii mii_nway_restart 0xd3375b3b +drivers/net/phy/libphy genphy_config_advert 0x34bd7a34 +drivers/net/phy/libphy genphy_config_aneg 0x1308937d +drivers/net/phy/libphy genphy_read_status 0x46a6c390 +drivers/net/phy/libphy mdiobus_register 0xacf03f87 +drivers/net/phy/libphy mdiobus_unregister 0x816f1cd5 +drivers/net/phy/libphy phy_attach 0x972e474d +drivers/net/phy/libphy phy_connect 0x8513b322 +drivers/net/phy/libphy phy_detach 0x03655dcf +drivers/net/phy/libphy phy_disable_interrupts 0xda858eb1 +drivers/net/phy/libphy phy_disconnect 0x74a514b8 +drivers/net/phy/libphy phy_driver_register 0xdd58a049 +drivers/net/phy/libphy phy_driver_unregister 0xfc29544c +drivers/net/phy/libphy phy_enable_interrupts 0x5cd0ce86 +drivers/net/phy/libphy phy_print_status 0x8a230134 +drivers/net/phy/libphy phy_read 0xcd2958d1 +drivers/net/phy/libphy phy_sanitize_settings 0xd077a17b +drivers/net/phy/libphy phy_start 0x4e6b8c7d +drivers/net/phy/libphy phy_start_aneg 0xd6a2c7ee +drivers/net/phy/libphy phy_start_interrupts 0xd6939806 +drivers/net/phy/libphy phy_stop 0x98db1f08 +drivers/net/phy/libphy phy_stop_interrupts 0x4bd4e84b +drivers/net/phy/libphy phy_write 0x317ef8e7 +drivers/net/ppp_generic ppp_channel_index 0x5e1ddc13 +drivers/net/ppp_generic ppp_input 0x5f711023 +drivers/net/ppp_generic ppp_input_error 0xccccc07d +drivers/net/ppp_generic ppp_output_wakeup 0x1da29bdd +drivers/net/ppp_generic ppp_register_channel 0x31c2c836 +drivers/net/ppp_generic ppp_register_compressor 0x0a98a2d2 +drivers/net/ppp_generic ppp_unit_number 0x7a5f58b1 +drivers/net/ppp_generic ppp_unregister_channel 0x90aad556 +drivers/net/ppp_generic ppp_unregister_compressor 0x2af6aefe +drivers/net/pppox pppox_unbind_sock 0xbbbe5a4b +drivers/net/pppox register_pppox_proto 0x6e72d5fc +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x76135e6c +drivers/net/slhc slhc_free 0x2894cfb0 +drivers/net/slhc slhc_init 0x2e0e927f +drivers/net/slhc slhc_remember 0x0bc55868 +drivers/net/slhc slhc_toss 0xf89e3455 +drivers/net/slhc slhc_uncompress 0x3bc1319e +drivers/net/sungem_phy mii_phy_probe 0x6d7dcade +drivers/net/tokenring/tms380tr tms380tr_close 0x2fc04be7 +drivers/net/tokenring/tms380tr tms380tr_interrupt 0x3c7db227 +drivers/net/tokenring/tms380tr tms380tr_open 0xce5f254c +drivers/net/tokenring/tms380tr tms380tr_wait 0xd2328794 +drivers/net/tokenring/tms380tr tmsdev_init 0x27370ee2 +drivers/net/tokenring/tms380tr tmsdev_term 0x7ddff261 +drivers/net/wan/cycx_drv cycx_down 0x66a4c4e6 +drivers/net/wan/cycx_drv cycx_exec 0xfe7cd576 +drivers/net/wan/cycx_drv cycx_intr 0x38da4725 +drivers/net/wan/cycx_drv cycx_peek 0x968458a6 +drivers/net/wan/cycx_drv cycx_poke 0xb6f383de +drivers/net/wan/cycx_drv cycx_setup 0x62be23ea +drivers/net/wan/hdlc alloc_hdlcdev 0xebf01a75 +drivers/net/wan/hdlc hdlc_close 0x650f7b91 +drivers/net/wan/hdlc hdlc_ioctl 0x9dfcb4a5 +drivers/net/wan/hdlc hdlc_open 0x85033465 +drivers/net/wan/hdlc hdlc_set_carrier 0x157db1ee +drivers/net/wan/hdlc register_hdlc_device 0x82e95512 +drivers/net/wan/hdlc unregister_hdlc_device 0x85543eaf +drivers/net/wan/syncppp sppp_attach 0x6cf771f8 +drivers/net/wan/syncppp sppp_close 0xd893c12a +drivers/net/wan/syncppp sppp_detach 0x6b81f749 +drivers/net/wan/syncppp sppp_do_ioctl 0x176b3349 +drivers/net/wan/syncppp sppp_open 0x9d5ac552 +drivers/net/wan/syncppp sppp_reopen 0x558b9961 +drivers/net/wan/z85230 z8530_channel_load 0xca48bc94 +drivers/net/wan/z85230 z8530_dead_port 0x10c78988 +drivers/net/wan/z85230 z8530_describe 0x644e77bb +drivers/net/wan/z85230 z8530_dma_sync 0xc19f3ae2 +drivers/net/wan/z85230 z8530_get_stats 0xccbc4e5f +drivers/net/wan/z85230 z8530_hdlc_kilostream 0x5cd24d29 +drivers/net/wan/z85230 z8530_hdlc_kilostream_85230 0xe3d80064 +drivers/net/wan/z85230 z8530_init 0x15cbff18 +drivers/net/wan/z85230 z8530_interrupt 0x33a2d438 +drivers/net/wan/z85230 z8530_nop 0xc6238269 +drivers/net/wan/z85230 z8530_null_rx 0x486d1b76 +drivers/net/wan/z85230 z8530_queue_xmit 0x5cb24f24 +drivers/net/wan/z85230 z8530_shutdown 0x4bf66453 +drivers/net/wan/z85230 z8530_sync 0xfd2afcf7 +drivers/net/wan/z85230 z8530_sync_close 0x0e66917b +drivers/net/wan/z85230 z8530_sync_dma_close 0x0a7f497c +drivers/net/wan/z85230 z8530_sync_dma_open 0xdb538051 +drivers/net/wan/z85230 z8530_sync_open 0x19ad92d7 +drivers/net/wan/z85230 z8530_sync_txdma_close 0x15c7861f +drivers/net/wan/z85230 z8530_sync_txdma_open 0xb91f8d82 +drivers/net/wan/z85230 z8530_txdma_sync 0x804933f6 +drivers/net/wireless/airo init_airo_card 0x81a8c1bb +drivers/net/wireless/airo reset_airo_card 0x0a7d00aa +drivers/net/wireless/airo stop_airo_card 0xf6ac53c3 +drivers/net/wireless/atmel atmel_open 0xcd5e16f9 +drivers/net/wireless/atmel init_atmel_card 0x9bdb9731 +drivers/net/wireless/atmel stop_atmel_card 0xe9b68e14 +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0xde4f34dd +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0xa256e260 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0xbd7c49d9 +drivers/net/wireless/hostap/hostap hostap_add_interface 0x6882cf2e +drivers/net/wireless/hostap/hostap hostap_add_sta 0xb79a6ad6 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0x22d93fa8 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0x9a332caf +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0x25ab9eb0 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0xef5ef89e +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0xdf948694 +drivers/net/wireless/hostap/hostap hostap_get_porttype 0xafda404e +drivers/net/wireless/hostap/hostap hostap_get_stats 0xcd4394ae +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0x511120c5 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x7e5b88b1 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x5eca2efe +drivers/net/wireless/hostap/hostap hostap_info_init 0xf66e691f +drivers/net/wireless/hostap/hostap hostap_info_process 0x6beec772 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0xf9713c4a +drivers/net/wireless/hostap/hostap hostap_init_data 0xc66916e3 +drivers/net/wireless/hostap/hostap hostap_init_proc 0xe68526a7 +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0x75ea8c35 +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0xd6769bb2 +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0x62d20116 +drivers/net/wireless/hostap/hostap hostap_proc 0x14b6faed +drivers/net/wireless/hostap/hostap hostap_remove_interface 0x7e0c297c +drivers/net/wireless/hostap/hostap hostap_remove_proc 0x7a238d83 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0xf0010ed6 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0xb3fb2937 +drivers/net/wireless/hostap/hostap hostap_set_encryption 0x6c3794f6 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x4c4f70cc +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0xfb2c97ef +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0x2a297f9d +drivers/net/wireless/hostap/hostap hostap_set_string 0xa8fb01db +drivers/net/wireless/hostap/hostap hostap_set_word 0x13e9add4 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0xd9cb69bf +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x58627460 +drivers/net/wireless/hostap/hostap hostap_update_rates 0xc0f6e939 +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x1be47344 +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0xe4ec3f7b +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x616d2876 +drivers/net/wireless/orinoco __orinoco_down 0x7253e307 +drivers/net/wireless/orinoco __orinoco_up 0xc63211a4 +drivers/net/wireless/orinoco alloc_orinocodev 0xc387cba1 +drivers/net/wireless/orinoco free_orinocodev 0x269cf7ad +drivers/net/wireless/orinoco orinoco_interrupt 0x36feb7f6 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x4595d9f0 +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0x8de1baf3 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x5311a528 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0xff17f605 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0xab18bfed +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0xccd62c10 +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x9bb64e49 +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0x8be34012 +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0x804d7234 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0x65b74c10 +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x9e8db79c +drivers/net/wireless/prism54_softmac/islsm register_islsm 0x501970cf +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0xd6062476 +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0x41e77a95 +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0x3a17e1eb +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0x1601f602 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0xe80306a1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0x1b27826e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x7ba58c18 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0x7c253d89 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0xf0c2a994 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0xc623eea6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xd0fdbf18 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0x54f6ae23 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0x7d4866f1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0xfa730241 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0xf9fba454 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0xe451bb92 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0xfbc4abdc +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0x9b0e604b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x1644588b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0xc50b767e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x79387556 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0xc24d4cd5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0xf2295de3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x5e38ed0b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x23d62633 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0xc1de532c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0xb1127ad0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x3b7b6595 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x1c79f2f8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0xc9c9063d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0x73d90820 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0xf7ad09f7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x74f89e83 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0x8c8e3ac8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0x93d9e485 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0xe315cd79 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0xb321ee03 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0x9bceb194 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0x80554d3c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x21debf89 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x98f89644 +drivers/parport/parport parport_announce_port 0x8eab7d5d +drivers/parport/parport parport_claim 0x5e52bdb8 +drivers/parport/parport parport_claim_or_block 0x58462e57 +drivers/parport/parport parport_find_base 0x03db3480 +drivers/parport/parport parport_find_number 0x33279345 +drivers/parport/parport parport_get_port 0xa375d7e0 +drivers/parport/parport parport_ieee1284_ecp_read_data 0xa6ee7573 +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xc72d6a2a +drivers/parport/parport parport_ieee1284_ecp_write_data 0xa4658f92 +drivers/parport/parport parport_ieee1284_epp_read_addr 0xdd3ae211 +drivers/parport/parport parport_ieee1284_epp_read_data 0xf9f05078 +drivers/parport/parport parport_ieee1284_epp_write_addr 0xdef59c42 +drivers/parport/parport parport_ieee1284_epp_write_data 0xbdbd79fa +drivers/parport/parport parport_ieee1284_interrupt 0xb3ec0c3b +drivers/parport/parport parport_ieee1284_read_byte 0x63d578cb +drivers/parport/parport parport_ieee1284_read_nibble 0x26a89a82 +drivers/parport/parport parport_ieee1284_write_compat 0x0c85c76e +drivers/parport/parport parport_negotiate 0x043c6610 +drivers/parport/parport parport_put_port 0xd8af528e +drivers/parport/parport parport_read 0xb16721c9 +drivers/parport/parport parport_register_device 0xa29c8cdb +drivers/parport/parport parport_register_driver 0xf6eb7305 +drivers/parport/parport parport_register_port 0x0b87118e +drivers/parport/parport parport_release 0xa269903d +drivers/parport/parport parport_remove_port 0xa341d5f0 +drivers/parport/parport parport_set_timeout 0xef60fcc5 +drivers/parport/parport parport_unregister_device 0x0388278a +drivers/parport/parport parport_unregister_driver 0x235fc595 +drivers/parport/parport parport_wait_event 0x096cdba7 +drivers/parport/parport parport_wait_peripheral 0xcedc3819 +drivers/parport/parport parport_write 0xf7a5cb00 +drivers/parport/parport_pc parport_pc_probe_port 0x7d1dd205 +drivers/parport/parport_pc parport_pc_unregister_port 0x59fa93ce +drivers/pci/hotplug/acpiphp acpiphp_register_attention 0x0682cde0 +drivers/pci/hotplug/acpiphp acpiphp_unregister_attention 0x2dfb5107 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_bus 0x36222e82 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_controller 0x28f9c33a +drivers/pci/hotplug/pci_hotplug cpci_hp_start 0x6a8441be +drivers/pci/hotplug/pci_hotplug cpci_hp_stop 0x94ef4d05 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_bus 0x86b81737 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_controller 0xac340986 +drivers/pci/hotplug/pci_hotplug pci_hotplug_slots_subsys 0x9cd9ede5 +drivers/pci/hotplug/pci_hotplug pci_hp_change_slot_info 0x3c910433 +drivers/pci/hotplug/pci_hotplug pci_hp_deregister 0xa5c7c5d6 +drivers/pci/hotplug/pci_hotplug pci_hp_register 0x78176eac +drivers/pcmcia/pcmcia cs_error 0xfd362428 +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0xaff10cc2 +drivers/pcmcia/pcmcia pcmcia_deregister_client 0xf0a65442 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0x6becb996 +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0x9637deaf +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0x58a1c8bb +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0x88834905 +drivers/pcmcia/pcmcia pcmcia_get_status 0x2b23cbea +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0x42056c7b +drivers/pcmcia/pcmcia pcmcia_get_window 0x4d5eb0c3 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0xc791e84e +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x2213cd3d +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0xd73fb889 +drivers/pcmcia/pcmcia pcmcia_register_client 0x3acfb739 +drivers/pcmcia/pcmcia pcmcia_register_driver 0x5f74d37c +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x32aeae81 +drivers/pcmcia/pcmcia pcmcia_release_io 0x5c53fef2 +drivers/pcmcia/pcmcia pcmcia_release_irq 0x9ea2e734 +drivers/pcmcia/pcmcia pcmcia_release_window 0x8b5ad1f0 +drivers/pcmcia/pcmcia pcmcia_request_configuration 0x7dca4d47 +drivers/pcmcia/pcmcia pcmcia_request_io 0xd33652f4 +drivers/pcmcia/pcmcia pcmcia_request_irq 0x17982014 +drivers/pcmcia/pcmcia pcmcia_request_window 0x5b103a2f +drivers/pcmcia/pcmcia pcmcia_reset_card 0x1674b603 +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0xf99aa1ba +drivers/pcmcia/pcmcia pcmcia_validate_cis 0xb7736c5e +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0x6d574109 +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0xacbaef23 +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0xf7884d6c +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0xc2051b02 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0x53213db3 +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0x09aafd08 +drivers/pcmcia/pcmcia_core pccard_reset_card 0xa65fd602 +drivers/pcmcia/pcmcia_core pccard_static_ops 0xa3ccc35c +drivers/pcmcia/pcmcia_core pccard_validate_cis 0x2b249a51 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0x95286909 +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0x0350e311 +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0xd5e0d5d9 +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0x6222d92f +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0xa55e1a8a +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0x64da19fc +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x329ae640 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0x70fc77ff +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0x1d706938 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0x68adc97c +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0xc1243531 +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0x817edfc7 +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x6f0aec41 +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0x4e45b6d9 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0x9119fdbd +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0xc905c26c +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0xc467c2db +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0xa7617639 +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x67ca47f7 +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0x508234bc +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0xdfa128ec +drivers/pcmcia/pcmcia_core release_cis_mem 0xe23776af +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0x23282add +drivers/scsi/53c700 NCR_700_detect 0x0a13d463 +drivers/scsi/53c700 NCR_700_intr 0xe19cbc56 +drivers/scsi/53c700 NCR_700_release 0x6c99b3c5 +drivers/scsi/libata __sata_phy_reset 0xb1192ae6 +drivers/scsi/libata ata_acpi_bus_register 0x4eb7c257 +drivers/scsi/libata ata_acpi_exec_tfs 0xf3588a4b +drivers/scsi/libata ata_acpi_get_timing 0x5db05c38 +drivers/scsi/libata ata_acpi_push_id 0xa5016e0b +drivers/scsi/libata ata_acpi_push_timing 0xd1a02fe8 +drivers/scsi/libata ata_altstatus 0x42e17aaa +drivers/scsi/libata ata_bmdma_irq_clear 0x01dcdd1e +drivers/scsi/libata ata_bmdma_setup 0xbbf9d114 +drivers/scsi/libata ata_bmdma_start 0xafa6179c +drivers/scsi/libata ata_bmdma_status 0x6f22b844 +drivers/scsi/libata ata_bmdma_stop 0x65b503c9 +drivers/scsi/libata ata_bus_probe 0x9b34f7ff +drivers/scsi/libata ata_bus_reset 0x661aa906 +drivers/scsi/libata ata_check_status 0x7617b9d2 +drivers/scsi/libata ata_dev_classify 0x0531dcb8 +drivers/scsi/libata ata_dev_config 0xd68ef069 +drivers/scsi/libata ata_dev_id_string 0x07d45a53 +drivers/scsi/libata ata_device_add 0xd7cb9a2a +drivers/scsi/libata ata_device_resume 0x8d1ae83c +drivers/scsi/libata ata_device_shutdown 0xbcb4a182 +drivers/scsi/libata ata_device_suspend 0x00245eb1 +drivers/scsi/libata ata_eng_timeout 0x5aa88dd1 +drivers/scsi/libata ata_exec_command 0xee9c6080 +drivers/scsi/libata ata_host_intr 0x31916d10 +drivers/scsi/libata ata_host_set_remove 0x003ffdc6 +drivers/scsi/libata ata_host_stop 0x70fbf3ae +drivers/scsi/libata ata_hotplug_plug 0x53202cc5 +drivers/scsi/libata ata_hotplug_unplug 0xa5b8c425 +drivers/scsi/libata ata_interrupt 0x12058575 +drivers/scsi/libata ata_noop_dev_select 0x602bbdec +drivers/scsi/libata ata_pci_device_resume 0x418041b9 +drivers/scsi/libata ata_pci_device_suspend 0xa59b7d80 +drivers/scsi/libata ata_pci_host_stop 0x0caf73fb +drivers/scsi/libata ata_pci_init_native_mode 0xa5dc047d +drivers/scsi/libata ata_pci_init_one 0x5c1b1961 +drivers/scsi/libata ata_pci_remove_one 0x617dc678 +drivers/scsi/libata ata_port_disable 0x93aa8d04 +drivers/scsi/libata ata_port_probe 0x950cb4b6 +drivers/scsi/libata ata_port_start 0x3b446399 +drivers/scsi/libata ata_port_stop 0x46d923ee +drivers/scsi/libata ata_qc_complete 0x107eacb1 +drivers/scsi/libata ata_qc_issue_prot 0x1e311e9d +drivers/scsi/libata ata_qc_prep 0x4dbe9183 +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0x15fce9b4 +drivers/scsi/libata ata_scsi_device_shutdown 0xe41414fe +drivers/scsi/libata ata_scsi_device_suspend 0x981ad759 +drivers/scsi/libata ata_scsi_error 0xea970e0c +drivers/scsi/libata ata_scsi_ioctl 0x6a058a0a +drivers/scsi/libata ata_scsi_queuecmd 0xe33eab5f +drivers/scsi/libata ata_scsi_release 0x643b4bc3 +drivers/scsi/libata ata_scsi_simulate 0x2ba6e35f +drivers/scsi/libata ata_scsi_slave_config 0xc7626d5c +drivers/scsi/libata ata_sg_init 0x5aac1d24 +drivers/scsi/libata ata_sg_init_one 0xe3e21dc0 +drivers/scsi/libata ata_std_bios_param 0x8bf253ec +drivers/scsi/libata ata_std_dev_select 0xd5c97aef +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0x0067df75 +drivers/scsi/libata ata_tf_load 0x8920448f +drivers/scsi/libata ata_tf_read 0x42502024 +drivers/scsi/libata ata_tf_to_fis 0x28177a3f +drivers/scsi/libata ata_timing_compute 0xf6f94640 +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata do_drive_get_GTF 0x7735bdff +drivers/scsi/libata do_drive_set_taskfiles 0x125acab8 +drivers/scsi/libata pci_test_config_bits 0x92177160 +drivers/scsi/libata sata_phy_reset 0xbbe08647 +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x975010d6 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0x2b8c0501 +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x054269da +drivers/scsi/qlogicfas408 qlogicfas408_abort 0x07ce3d38 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0xa381bb96 +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0x2af1d6bb +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0x3a8f2ceb +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x97bdeb7b +drivers/scsi/qlogicfas408 qlogicfas408_info 0x5d868560 +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0x04a28732 +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0xe4383b69 +drivers/scsi/raid_class raid_class_release 0x22ae835b +drivers/scsi/raid_class raid_component_add 0x17783ccf +drivers/scsi/sas/sas_class sas_register_ha 0xf87a6365 +drivers/scsi/sas/sas_class sas_unregister_ha 0x4cac0f84 +drivers/scsi/scsi_mod __scsi_add_device 0x07a02a18 +drivers/scsi/scsi_mod __scsi_device_lookup 0x970685ee +drivers/scsi/scsi_mod __scsi_device_lookup_by_target 0xe11a1a46 +drivers/scsi/scsi_mod __scsi_iterate_devices 0x34bda70d +drivers/scsi/scsi_mod __scsi_print_command 0xfef96e23 +drivers/scsi/scsi_mod __scsi_print_sense 0x69d38ed9 +drivers/scsi/scsi_mod int_to_scsilun 0xea10212a +drivers/scsi/scsi_mod scsi_add_device 0x7491cf53 +drivers/scsi/scsi_mod scsi_add_host 0xfe421660 +drivers/scsi/scsi_mod scsi_adjust_queue_depth 0x0cc3b5df +drivers/scsi/scsi_mod scsi_allocate_request 0xfc8e1cfc +drivers/scsi/scsi_mod scsi_bios_ptable 0xb51fad5b +drivers/scsi/scsi_mod scsi_block_requests 0x872767a7 +drivers/scsi/scsi_mod scsi_block_when_processing_errors 0xafcbeb85 +drivers/scsi/scsi_mod scsi_bus_type 0xb72f2847 +drivers/scsi/scsi_mod scsi_calculate_bounce_limit 0xc6de41e0 +drivers/scsi/scsi_mod scsi_command_normalize_sense 0xba1262a7 +drivers/scsi/scsi_mod scsi_device_cancel 0x2fe63ac5 +drivers/scsi/scsi_mod scsi_device_get 0x997530dc +drivers/scsi/scsi_mod scsi_device_lookup 0x15f43123 +drivers/scsi/scsi_mod scsi_device_lookup_by_target 0xae2b2f58 +drivers/scsi/scsi_mod scsi_device_put 0x0fea5e9e +drivers/scsi/scsi_mod scsi_device_quiesce 0x1795a9a6 +drivers/scsi/scsi_mod scsi_device_resume 0x7d2d93b0 +drivers/scsi/scsi_mod scsi_device_set_state 0x3a530487 +drivers/scsi/scsi_mod scsi_device_types 0x6df713c9 +drivers/scsi/scsi_mod scsi_do_req 0x6dbacc88 +drivers/scsi/scsi_mod scsi_execute 0x5c956fb9 +drivers/scsi/scsi_mod scsi_execute_req 0xd735f720 +drivers/scsi/scsi_mod scsi_extd_sense_format 0x11267875 +drivers/scsi/scsi_mod scsi_finish_command 0xac03cd01 +drivers/scsi/scsi_mod scsi_flush_work 0xed0635ac +drivers/scsi/scsi_mod scsi_free_host_dev 0x87296929 +drivers/scsi/scsi_mod scsi_get_command 0xfe985241 +drivers/scsi/scsi_mod scsi_get_host_dev 0x3b65af50 +drivers/scsi/scsi_mod scsi_get_sense_info_fld 0x796fc5ce +drivers/scsi/scsi_mod scsi_host_alloc 0x7096a91e +drivers/scsi/scsi_mod scsi_host_get 0x3ac8652d +drivers/scsi/scsi_mod scsi_host_lookup 0x2be55ce7 +drivers/scsi/scsi_mod scsi_host_put 0x84ae1a04 +drivers/scsi/scsi_mod scsi_host_set_state 0x5de27cec +drivers/scsi/scsi_mod scsi_internal_device_block 0xd7ebfb9d +drivers/scsi/scsi_mod scsi_internal_device_unblock 0x3929afa6 +drivers/scsi/scsi_mod scsi_io_completion 0x7ce7c662 +drivers/scsi/scsi_mod scsi_ioctl 0xe15b5cac +drivers/scsi/scsi_mod scsi_ioctl_send_command 0xa25c4f56 +drivers/scsi/scsi_mod scsi_is_host_device 0xb063d8ad +drivers/scsi/scsi_mod scsi_is_sdev_device 0xe496fdba +drivers/scsi/scsi_mod scsi_is_target_device 0x2dafd021 +drivers/scsi/scsi_mod scsi_logging_level 0xaf3dd7dc +drivers/scsi/scsi_mod scsi_mode_sense 0x1b31c2e4 +drivers/scsi/scsi_mod scsi_nonblockable_ioctl 0x7f855626 +drivers/scsi/scsi_mod scsi_normalize_sense 0x0c65e73c +drivers/scsi/scsi_mod scsi_partsize 0x4afe9a77 +drivers/scsi/scsi_mod scsi_print_command 0x9adeeed9 +drivers/scsi/scsi_mod scsi_print_msg 0x67f88938 +drivers/scsi/scsi_mod scsi_print_req_sense 0x3168975b +drivers/scsi/scsi_mod scsi_print_sense 0xe40b6736 +drivers/scsi/scsi_mod scsi_print_sense_hdr 0xca5dbc50 +drivers/scsi/scsi_mod scsi_print_status 0x9cfd56c5 +drivers/scsi/scsi_mod scsi_put_command 0xedeb0b46 +drivers/scsi/scsi_mod scsi_queue_work 0x0bcb56f9 +drivers/scsi/scsi_mod scsi_register 0x77d804f7 +drivers/scsi/scsi_mod scsi_register_driver 0x72cbdbc4 +drivers/scsi/scsi_mod scsi_register_interface 0xd85b912f +drivers/scsi/scsi_mod scsi_release_request 0xdba47cf9 +drivers/scsi/scsi_mod scsi_remove_device 0x7ebf2f0b +drivers/scsi/scsi_mod scsi_remove_host 0xa58af2f5 +drivers/scsi/scsi_mod scsi_remove_target 0x4f0f612c +drivers/scsi/scsi_mod scsi_report_bus_reset 0x4e8a46f5 +drivers/scsi/scsi_mod scsi_report_device_reset 0x53a6771f +drivers/scsi/scsi_mod scsi_request_normalize_sense 0x83172c9d +drivers/scsi/scsi_mod scsi_rescan_device 0x9db1dc64 +drivers/scsi/scsi_mod scsi_reset_provider 0x842f9ce8 +drivers/scsi/scsi_mod scsi_scan_host 0x8ee8eea2 +drivers/scsi/scsi_mod scsi_scan_target 0x354e5e4d +drivers/scsi/scsi_mod scsi_sense_desc_find 0x2b0ba2b0 +drivers/scsi/scsi_mod scsi_sense_key_string 0x96cd2b04 +drivers/scsi/scsi_mod scsi_set_medium_removal 0x6e7a2a1c +drivers/scsi/scsi_mod scsi_setup_blk_pc_cmnd 0x8d2e5a0e +drivers/scsi/scsi_mod scsi_target_block 0xcadd0011 +drivers/scsi/scsi_mod scsi_target_quiesce 0x71f8f82f +drivers/scsi/scsi_mod scsi_target_resume 0xd9166113 +drivers/scsi/scsi_mod scsi_target_unblock 0xb7874830 +drivers/scsi/scsi_mod scsi_test_unit_ready 0xe00430b5 +drivers/scsi/scsi_mod scsi_track_queue_full 0x87715e51 +drivers/scsi/scsi_mod scsi_unblock_requests 0x75b9238f +drivers/scsi/scsi_mod scsi_unregister 0xab78cbfa +drivers/scsi/scsi_mod scsicam_bios_param 0xe6610b08 +drivers/scsi/scsi_mod starget_for_each_device 0x4fd065aa +drivers/scsi/scsi_transport_fc fc_attach_transport 0xe57b89ad +drivers/scsi/scsi_transport_fc fc_release_transport 0xd84057df +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x1a1da433 +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0xf95efaac +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x49a7180e +drivers/scsi/scsi_transport_fc fc_remove_host 0x2963ad43 +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0x21eb8a9b +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x25fb25cf +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0xf32fa5d4 +drivers/scsi/scsi_transport_sas sas_attach_transport 0xafd28dd4 +drivers/scsi/scsi_transport_sas sas_phy_add 0x1b490ad3 +drivers/scsi/scsi_transport_sas sas_phy_alloc 0xf200f642 +drivers/scsi/scsi_transport_sas sas_phy_delete 0x111f24cc +drivers/scsi/scsi_transport_sas sas_phy_free 0x4a0f8a11 +drivers/scsi/scsi_transport_sas sas_release_transport 0xdc272263 +drivers/scsi/scsi_transport_sas sas_remove_host 0x88f0a591 +drivers/scsi/scsi_transport_sas sas_rphy_add 0x9aa968fe +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0xb2fad2c3 +drivers/scsi/scsi_transport_sas sas_rphy_delete 0xd0663c51 +drivers/scsi/scsi_transport_sas sas_rphy_free 0xed014546 +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0xe5e203cd +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0x065d7e97 +drivers/scsi/scsi_transport_spi spi_attach_transport 0xa467bd81 +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0xf2dbce54 +drivers/scsi/scsi_transport_spi spi_dv_device 0x3380e49d +drivers/scsi/scsi_transport_spi spi_release_transport 0xa3911a12 +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0x7d74240f +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x78789f50 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0xb8142627 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0xd2ec2689 +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0x1bea8e18 +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0x25d5998e +drivers/telephony/ixj ixj_pcmcia_probe 0x820419c1 +drivers/telephony/phonedev phone_register_device 0xe031295b +drivers/telephony/phonedev phone_unregister_device 0xd6eee594 +drivers/usb/atm/usbatm usbatm_usb_disconnect 0x32b2d685 +drivers/usb/atm/usbatm usbatm_usb_probe 0x0c8e5e11 +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x23c6b2a0 +drivers/usb/core/usbcore usb_alloc_dev 0x21706420 +drivers/usb/core/usbcore usb_alloc_urb 0xa99b76ba +drivers/usb/core/usbcore usb_altnum_to_altsetting 0xf636d9f6 +drivers/usb/core/usbcore usb_buffer_alloc 0xb51fad2a +drivers/usb/core/usbcore usb_buffer_free 0x1b832382 +drivers/usb/core/usbcore usb_buffer_map_sg 0xa5671b60 +drivers/usb/core/usbcore usb_buffer_unmap_sg 0x21956127 +drivers/usb/core/usbcore usb_bulk_msg 0x16e0c791 +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0xd9eb4197 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0x1f6ed3c3 +drivers/usb/core/usbcore usb_claim_bandwidth 0x7efbeeca +drivers/usb/core/usbcore usb_clear_halt 0x1f8df311 +drivers/usb/core/usbcore usb_control_msg 0x747fdef4 +drivers/usb/core/usbcore usb_create_hcd 0xa0a8127d +drivers/usb/core/usbcore usb_deregister 0x6de197e7 +drivers/usb/core/usbcore usb_deregister_dev 0x2fbc0f25 +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0x47a05e47 +drivers/usb/core/usbcore usb_driver_claim_interface 0x12e1690b +drivers/usb/core/usbcore usb_driver_release_interface 0xf0de30d2 +drivers/usb/core/usbcore usb_find_device 0xa3e0e47e +drivers/usb/core/usbcore usb_find_interface 0x21b6c32a +drivers/usb/core/usbcore usb_free_urb 0x6e894654 +drivers/usb/core/usbcore usb_get_current_frame_number 0xc01368e7 +drivers/usb/core/usbcore usb_get_descriptor 0xd8bd49d3 +drivers/usb/core/usbcore usb_get_dev 0xb2c3e66f +drivers/usb/core/usbcore usb_get_intf 0x0dd6b12f +drivers/usb/core/usbcore usb_get_status 0xdd91e749 +drivers/usb/core/usbcore usb_get_string 0xd8c8c757 +drivers/usb/core/usbcore usb_get_urb 0x031af930 +drivers/usb/core/usbcore usb_hc_died 0xb3810d3b +drivers/usb/core/usbcore usb_hcd_giveback_urb 0x922e433e +drivers/usb/core/usbcore usb_hcd_pci_probe 0x3896184f +drivers/usb/core/usbcore usb_hcd_pci_remove 0xc4ad65c5 +drivers/usb/core/usbcore usb_hcd_pci_resume 0x8b010e11 +drivers/usb/core/usbcore usb_hcd_pci_suspend 0x94cd57af +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0xaca9265e +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0x655adced +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0xea47b0ef +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0x97875f48 +drivers/usb/core/usbcore usb_ifnum_to_if 0x9645f6ff +drivers/usb/core/usbcore usb_init_urb 0x69990f36 +drivers/usb/core/usbcore usb_kill_urb 0x8ca8030c +drivers/usb/core/usbcore usb_lock_device 0xdf5b8c6b +drivers/usb/core/usbcore usb_lock_device_for_reset 0x1e8c0102 +drivers/usb/core/usbcore usb_match_id 0x544268f9 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0x3b28d697 +drivers/usb/core/usbcore usb_put_dev 0x6233173a +drivers/usb/core/usbcore usb_put_hcd 0x19623e6d +drivers/usb/core/usbcore usb_put_intf 0x9357582a +drivers/usb/core/usbcore usb_register 0x2f17d051 +drivers/usb/core/usbcore usb_register_dev 0x071d8fdd +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0xc7f8734e +drivers/usb/core/usbcore usb_remove_hcd 0x4fb87689 +drivers/usb/core/usbcore usb_reset_configuration 0x84c94ffc +drivers/usb/core/usbcore usb_reset_device 0xe990834e +drivers/usb/core/usbcore usb_set_device_state 0x9bef8e77 +drivers/usb/core/usbcore usb_set_interface 0x2fa03ba0 +drivers/usb/core/usbcore usb_sg_cancel 0x76260c41 +drivers/usb/core/usbcore usb_sg_init 0x15f7c73b +drivers/usb/core/usbcore usb_sg_wait 0xc80a1d5f +drivers/usb/core/usbcore usb_string 0xf4bb3c2b +drivers/usb/core/usbcore usb_submit_urb 0x7f924d4e +drivers/usb/core/usbcore usb_trylock_device 0xf605aaa6 +drivers/usb/core/usbcore usb_unlink_urb 0x30e3926c +drivers/usb/core/usbcore usb_unlock_device 0x99182bac +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/gadget/net2280 net2280_set_fifo_mode 0x8466ebde +drivers/usb/gadget/net2280 usb_gadget_register_driver 0x26e9cf1f +drivers/usb/gadget/net2280 usb_gadget_unregister_driver 0x3c243db1 +drivers/usb/host/sl811-hcd sl811h_driver 0x8780d27c +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0xec076e29 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0xb24b1d5b +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0x06d3e3e0 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0x16166938 +drivers/usb/media/usbvideo RingQueue_Dequeue 0x54ded406 +drivers/usb/media/usbvideo RingQueue_Enqueue 0x5293ede2 +drivers/usb/media/usbvideo RingQueue_Flush 0x9778abda +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0xdf605c59 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0x7eec7314 +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x0c4569a6 +drivers/usb/media/usbvideo usbvideo_Deregister 0x287a16f4 +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0xd9624b6a +drivers/usb/media/usbvideo usbvideo_TestPattern 0xeb09d73f +drivers/usb/media/usbvideo usbvideo_register 0xbffb5d59 +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0x04396259 +drivers/usb/media/w9968cf w9968cf_vppmod_register 0x5ff38a0e +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0x843000ab +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0x5780a3d1 +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0x1a416697 +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0x5f27880f +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0x94759cf2 +drivers/usb/net/usbnet usbnet_defer_kevent 0x794c873f +drivers/usb/net/usbnet usbnet_disconnect 0x23af6735 +drivers/usb/net/usbnet usbnet_get_drvinfo 0xa7934dda +drivers/usb/net/usbnet usbnet_get_endpoints 0xe24f18d8 +drivers/usb/net/usbnet usbnet_get_msglevel 0xabc2b5b9 +drivers/usb/net/usbnet usbnet_probe 0xc173bf04 +drivers/usb/net/usbnet usbnet_resume 0xa14eba9e +drivers/usb/net/usbnet usbnet_set_msglevel 0x89be8a77 +drivers/usb/net/usbnet usbnet_skb_return 0xfbb91c35 +drivers/usb/net/usbnet usbnet_suspend 0xcc281f3d +drivers/usb/serial/usbserial ezusb_set_reset 0x1c01b16c +drivers/usb/serial/usbserial ezusb_writememory 0x6c080c08 +drivers/usb/serial/usbserial usb_serial_deregister 0x84dc00b6 +drivers/usb/serial/usbserial usb_serial_disconnect 0x64e94cb1 +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x3f6cb883 +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0x0806f216 +drivers/usb/serial/usbserial usb_serial_register 0x0320aaa5 +drivers/video/backlight/backlight backlight_device_register 0x73d7e00a +drivers/video/backlight/backlight backlight_device_unregister 0x7f8bca45 +drivers/video/backlight/lcd lcd_device_register 0xd3c3d696 +drivers/video/backlight/lcd lcd_device_unregister 0x0a675c34 +drivers/video/console/bitblit fbcon_set_bitops 0x98c3061b +drivers/video/console/font find_font 0xf7584a9c +drivers/video/console/font get_default_font 0x093e3659 +drivers/video/console/softcursor soft_cursor 0x14e21e08 +drivers/video/console/tileblit fbcon_set_tileops 0xd4fbed02 +drivers/video/cyber2000fb cyber2000fb_attach 0x07113d97 +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x73b92114 +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0xc37dbd8f +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0xcb200a0f +drivers/video/macmodes mac_find_mode 0xdae00b25 +drivers/video/macmodes mac_map_monitor_sense 0xe2304303 +drivers/video/macmodes mac_var_to_vmode 0x00907cd5 +drivers/video/macmodes mac_vmode_to_var 0x08ed0b62 +drivers/video/matrox/g450_pll g450_mnp2f 0x50e474c3 +drivers/video/matrox/g450_pll matroxfb_g450_setclk 0xcb8eeff8 +drivers/video/matrox/g450_pll matroxfb_g450_setpll_cond 0xc14d449d +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_init 0x0cc60de3 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_restore 0xacaefa98 +drivers/video/matrox/matroxfb_DAC1064 matrox_G100 0xe2f31400 +drivers/video/matrox/matroxfb_DAC1064 matrox_mystique 0xb0cdfb31 +drivers/video/matrox/matroxfb_Ti3026 matrox_millennium 0xbfeeb2aa +drivers/video/matrox/matroxfb_accel matrox_cfbX_init 0xdbcf8448 +drivers/video/matrox/matroxfb_base matroxfb_enable_irq 0xd117e9be +drivers/video/matrox/matroxfb_base matroxfb_register_driver 0x5f9e3b7d +drivers/video/matrox/matroxfb_base matroxfb_unregister_driver 0xfca22018 +drivers/video/matrox/matroxfb_base matroxfb_wait_for_sync 0x32b575c8 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_connect 0xb61ec4a3 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_shutdown 0xcf944cc0 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_in 0x9fee6b7c +drivers/video/matrox/matroxfb_misc matroxfb_DAC_out 0xb6c46bdf +drivers/video/matrox/matroxfb_misc matroxfb_PLL_calcclock 0x25cf8049 +drivers/video/matrox/matroxfb_misc matroxfb_read_pins 0xd179e459 +drivers/video/matrox/matroxfb_misc matroxfb_var2my 0xabd8e427 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWinit 0xbcba0934 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWrestore 0xab317e20 +drivers/video/sis/sisfb sis_free 0x454a3cf0 +drivers/video/sis/sisfb sis_free_new 0x0fcf3023 +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0xc4102594 +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0x9ebb58e4 +drivers/w1/ds9490r ds_put_device 0x24f7d9b3 +drivers/w1/ds9490r ds_read_bit 0xa4914860 +drivers/w1/ds9490r ds_read_block 0x723eb46b +drivers/w1/ds9490r ds_read_byte 0x6bfa1b5f +drivers/w1/ds9490r ds_reset 0x34cddcb8 +drivers/w1/ds9490r ds_touch_bit 0xb8bc2410 +drivers/w1/ds9490r ds_write_bit 0xf0c14700 +drivers/w1/ds9490r ds_write_block 0x2ea20f96 +drivers/w1/ds9490r ds_write_byte 0xbde9a354 +drivers/w1/wire w1_add_master_device 0xd703c624 +drivers/w1/wire w1_calc_crc8 0x7c2f2afb +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xb0c86d52 +drivers/w1/wire w1_family_put 0x45181a35 +drivers/w1/wire w1_family_registered 0x345f469c +drivers/w1/wire w1_read_8 0xd28991ba +drivers/w1/wire w1_read_block 0xb38d024c +drivers/w1/wire w1_register_family 0xadeb1de9 +drivers/w1/wire w1_remove_master_device 0x31a7a05c +drivers/w1/wire w1_reset_bus 0xa55f97a3 +drivers/w1/wire w1_reset_select_slave 0x7e0d8ff9 +drivers/w1/wire w1_search_devices 0x23eb4b9b +drivers/w1/wire w1_touch_bit 0xd8082559 +drivers/w1/wire w1_unregister_family 0x2616cdb9 +drivers/w1/wire w1_write_8 0x95f480cc +drivers/w1/wire w1_write_block 0xe2f3c614 +fs/configfs/configfs config_group_init 0x31117a64 +fs/configfs/configfs config_group_init_type_name 0x2d136ba1 +fs/configfs/configfs config_item_get 0x85496ec0 +fs/configfs/configfs config_item_init 0x0f6d7f15 +fs/configfs/configfs config_item_init_type_name 0xe772336f +fs/configfs/configfs config_item_put 0x6dbdb4e0 +fs/configfs/configfs config_item_set_name 0xa822c63b +fs/configfs/configfs configfs_register_subsystem 0xb774f49b +fs/configfs/configfs configfs_unregister_subsystem 0xd1e802e1 +fs/exportfs/exportfs export_op_default 0xaa6150b9 +fs/exportfs/exportfs find_exported_dentry 0x86c41b02 +fs/fat/fat fat_add_entries 0xbca2e57f +fs/fat/fat fat_alloc_new_dir 0xed01e730 +fs/fat/fat fat_attach 0xb6eb7a1c +fs/fat/fat fat_build_inode 0xb9788f9c +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0x36c65213 +fs/fat/fat fat_dir_empty 0x03de1525 +fs/fat/fat fat_fill_super 0x1b0f68c0 +fs/fat/fat fat_free_clusters 0x561aaf46 +fs/fat/fat fat_fs_panic 0x7deab167 +fs/fat/fat fat_get_dotdot_entry 0xa8bcd4ee +fs/fat/fat fat_notify_change 0x4bec4817 +fs/fat/fat fat_remove_entries 0xeea47706 +fs/fat/fat fat_scan 0x4fa2e70c +fs/fat/fat fat_search_long 0x282b4b30 +fs/fat/fat fat_sync_bhs 0xd62599be +fs/fat/fat fat_sync_inode 0x85d05ecc +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0x143b6d05 +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0xcbe0becd +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0xe3c21dcc +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0x6081e553 +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0x55daafae +fs/jbd/jbd journal_abort 0xfe5de585 +fs/jbd/jbd journal_ack_err 0xb94c7cda +fs/jbd/jbd journal_blocks_per_page 0x2a5a00c2 +fs/jbd/jbd journal_check_available_features 0x94aa7df3 +fs/jbd/jbd journal_check_used_features 0xcd3f1408 +fs/jbd/jbd journal_clear_err 0x33f26b15 +fs/jbd/jbd journal_create 0x82b28fac +fs/jbd/jbd journal_destroy 0x37332fad +fs/jbd/jbd journal_dirty_data 0xe5dc51df +fs/jbd/jbd journal_dirty_metadata 0x11c3a2bf +fs/jbd/jbd journal_errno 0xe0061718 +fs/jbd/jbd journal_extend 0xfa535f26 +fs/jbd/jbd journal_flush 0x03df93ca +fs/jbd/jbd journal_force_commit 0x909cfa77 +fs/jbd/jbd journal_force_commit_nested 0x169df9cb +fs/jbd/jbd journal_forget 0x59bb566a +fs/jbd/jbd journal_get_create_access 0xd327d07d +fs/jbd/jbd journal_get_undo_access 0x203d1e4f +fs/jbd/jbd journal_get_write_access 0x14478ef8 +fs/jbd/jbd journal_init_dev 0x91418de0 +fs/jbd/jbd journal_init_inode 0x14e28f8e +fs/jbd/jbd journal_invalidatepage 0x16a2335e +fs/jbd/jbd journal_load 0xba6f1e32 +fs/jbd/jbd journal_lock_updates 0xe737fb1c +fs/jbd/jbd journal_release_buffer 0xb94627c9 +fs/jbd/jbd journal_restart 0x422a5ead +fs/jbd/jbd journal_revoke 0xaa226b01 +fs/jbd/jbd journal_set_features 0x632bd0b6 +fs/jbd/jbd journal_start 0x0dd17c21 +fs/jbd/jbd journal_start_commit 0x828ba2a6 +fs/jbd/jbd journal_stop 0xccf12042 +fs/jbd/jbd journal_try_to_free_buffers 0xef41b48a +fs/jbd/jbd journal_unlock_updates 0x4b68bc9b +fs/jbd/jbd journal_update_format 0xb6fdf3c4 +fs/jbd/jbd journal_update_superblock 0xa6d8e934 +fs/jbd/jbd journal_wipe 0x79ce0e57 +fs/jbd/jbd log_wait_commit 0x0b3dc888 +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0xd36f5586 +fs/lockd/lockd nlmsvc_ops 0xd522f358 +fs/nfsd/nfsd nfs4_acl_add_ace 0x1bb3671e +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x687f6251 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0x1cb231d0 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0x1d747ce3 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xbaeb4700 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0x7822cad7 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0xb79f2ab6 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0x2b9f771a +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x43bce54e +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0x36418553 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0xa9f5379a +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0xea37ca31 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0x6e3aef92 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0xaa9f831c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0x6f53e733 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xa82a8645 +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0xec33ba02 +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0x549c1545 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0xd97986e3 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0x496ca187 +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0x05319f2b +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0xf1980d8e +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0x37ea2bb2 +fs/relayfs/relayfs relay_buf_full 0xe6ab9c24 +fs/relayfs/relayfs relay_close 0x63c86bf5 +fs/relayfs/relayfs relay_flush 0x1f55c76a +fs/relayfs/relayfs relay_open 0xef52ac69 +fs/relayfs/relayfs relay_reset 0x9f1616cd +fs/relayfs/relayfs relay_subbufs_consumed 0x12248d3a +fs/relayfs/relayfs relay_switch_subbuf 0xbd0b7f07 +fs/relayfs/relayfs relayfs_create_dir 0x51c8008c +fs/relayfs/relayfs relayfs_file_operations 0x94405ce0 +fs/relayfs/relayfs relayfs_remove_dir 0x29f363a6 +lib/crc-ccitt crc_ccitt 0x3771b461 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x8ffdb3b8 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x2329b292 +lib/libcrc32c crc32c_le 0x37d0b921 +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0x6e996324 +net/appletalk/appletalk alloc_ltalkdev 0xaab9bd9b +net/appletalk/appletalk atalk_find_dev_addr 0xd0708b67 +net/appletalk/appletalk atrtr_get_dev 0x293a07cd +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0x84365e27 +net/ax25/ax25 ax25_findbyuid 0x564d9f14 +net/ax25/ax25 ax25_hard_header 0xe6ef46e3 +net/ax25/ax25 ax25_linkfail_register 0x3a36d829 +net/ax25/ax25 ax25_linkfail_release 0x8f632d5d +net/ax25/ax25 ax25_listen_register 0x1b0a4bea +net/ax25/ax25 ax25_listen_release 0x2f640955 +net/ax25/ax25 ax25_protocol_register 0x607b7b3c +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0xdb2665a7 +net/ax25/ax25 ax25_send_frame 0xc7154072 +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0xb00e77ec +net/bluetooth/bluetooth bt_accept_enqueue 0xc072a0a0 +net/bluetooth/bluetooth bt_accept_unlink 0xb3f48cf3 +net/bluetooth/bluetooth bt_class 0x4febb8b6 +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0x4fde526d +net/bluetooth/bluetooth bt_sock_poll 0x97086543 +net/bluetooth/bluetooth bt_sock_recvmsg 0x24facf95 +net/bluetooth/bluetooth bt_sock_register 0xc70b248e +net/bluetooth/bluetooth bt_sock_unlink 0x0bb0f615 +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0x98c9209f +net/bluetooth/bluetooth hci_alloc_dev 0xff396b80 +net/bluetooth/bluetooth hci_conn_auth 0x84594244 +net/bluetooth/bluetooth hci_conn_change_link_key 0x1bf6b404 +net/bluetooth/bluetooth hci_conn_encrypt 0xefe856de +net/bluetooth/bluetooth hci_conn_switch_role 0x4ae53177 +net/bluetooth/bluetooth hci_connect 0xa65550a0 +net/bluetooth/bluetooth hci_free_dev 0x19aedf81 +net/bluetooth/bluetooth hci_get_route 0xa6366ee5 +net/bluetooth/bluetooth hci_register_cb 0x054b528d +net/bluetooth/bluetooth hci_register_dev 0xdeb7cf2a +net/bluetooth/bluetooth hci_register_proto 0x91a8abc0 +net/bluetooth/bluetooth hci_resume_dev 0xbc69484d +net/bluetooth/bluetooth hci_send_acl 0x21efc123 +net/bluetooth/bluetooth hci_send_sco 0x195d4651 +net/bluetooth/bluetooth hci_suspend_dev 0xf9f04f3a +net/bluetooth/bluetooth hci_unregister_cb 0x2f11718f +net/bluetooth/bluetooth hci_unregister_dev 0x99643316 +net/bluetooth/bluetooth hci_unregister_proto 0xbebf1dbe +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0xd8f9f649 +net/bridge/netfilter/ebtables ebt_do_table 0xb1b822c3 +net/bridge/netfilter/ebtables ebt_register_match 0x780f70b7 +net/bridge/netfilter/ebtables ebt_register_table 0xc5f4d8f8 +net/bridge/netfilter/ebtables ebt_register_target 0x9e148b21 +net/bridge/netfilter/ebtables ebt_register_watcher 0x75a43adc +net/bridge/netfilter/ebtables ebt_unregister_match 0x9fd66138 +net/bridge/netfilter/ebtables ebt_unregister_table 0x11f1f98a +net/bridge/netfilter/ebtables ebt_unregister_target 0xed791633 +net/bridge/netfilter/ebtables ebt_unregister_watcher 0xcf3d9ded +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x3a18e70d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0x71ecc67f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x7824d7b3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xded46fa7 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0xf38f8238 +net/dccp/dccp ccid_init 0x2ea89648 +net/dccp/dccp ccid_register 0x345b8f81 +net/dccp/dccp ccid_unregister 0x0394f8e0 +net/dccp/dccp dccp_hashinfo 0x8fb40600 +net/dccp/dccp dccp_insert_option 0xf962ecd7 +net/dccp/dccp dccp_insert_option_elapsed_time 0xc953d9e1 +net/dccp/dccp dccp_insert_option_timestamp 0x46365bd2 +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0x82183ad6 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0xece3045c +net/ieee80211/ieee80211 alloc_ieee80211 0x6d1ce236 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0x69d00f60 +net/ieee80211/ieee80211 ieee80211_channel_to_index 0xf383495c +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0x27db598f +net/ieee80211/ieee80211 ieee80211_get_channel 0x1f5367ca +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0x3c570a38 +net/ieee80211/ieee80211 ieee80211_get_geo 0x80b2473a +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0x02ac9607 +net/ieee80211/ieee80211 ieee80211_rx 0x6d6a4daf +net/ieee80211/ieee80211 ieee80211_rx_mgt 0xd2347207 +net/ieee80211/ieee80211 ieee80211_set_geo 0x7cf02c2c +net/ieee80211/ieee80211 ieee80211_tx_frame 0xc15cbc7e +net/ieee80211/ieee80211 ieee80211_txb_free 0x02a6868d +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0x4f324763 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0x85db039c +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x268fcc31 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0x279d8cc8 +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0xe6ef4412 +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x075e7a19 +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0xa25ea0c8 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0x879450af +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0xcaa6c1d4 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0x186dae8e +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x8a2949d6 +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0x89296379 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0xf63a9ff2 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0xa7fefd93 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0xfd390c8e +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x2d0aa198 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0xadc4b183 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0x6e017a40 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0xa57dacff +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0x76acb948 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0x0366b585 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0x8fe3962c +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0xa8b17b78 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0x3ac8bc70 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x70f83427 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0xa98b89e0 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x915d22f6 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x8f1ae7d1 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x1d6320d9 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0xd9253756 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0xf0f0001a +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0xec5acbe7 +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0xf5424583 +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0xb19d6dee +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0x6c340eac +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0xdd8e883b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0xa8509aa0 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0xc98a46f0 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0x508d95cd +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0xa7d31c1d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x2f89c92c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0xc1747073 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0xa5b7a9fb +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0xc278c474 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0xee8c85c0 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x186c61c6 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x63b0426d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0x6e28090c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0xa2e9b156 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0xb5a36cee +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0x08068150 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0x804eed90 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0xbd5ce3b3 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x7488e45f +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0x304096ae +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0x36043a32 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x06e554dc +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0xbfc42f38 +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0x6e4b638d +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0xfc4be86e +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0x7f8e7ee8 +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0xb550eb2b +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0xcecd115f +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0x0a9414cc +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0x1d6ebbe0 +net/ipv4/ipvs/ip_vs register_ip_vs_app 0x1831c375 +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0xafcad0d7 +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0x68bae688 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0xb085d06b +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0x3bf9817a +net/ipv4/netfilter/arp_tables arpt_do_table 0x9944d6a8 +net/ipv4/netfilter/arp_tables arpt_register_table 0x762d164d +net/ipv4/netfilter/arp_tables arpt_register_target 0xe805ed4b +net/ipv4/netfilter/arp_tables arpt_unregister_table 0x7f861f09 +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x6aedb0cf +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x4aa06c41 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x602d5e21 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0xa0c90d93 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x928ea334 +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0x4b3fe58b +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0x55265a9a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0xed4efc45 +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0xf5d2d671 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0x4695302e +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0x12de84ee +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0x615bc0bc +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0xd0de0ef4 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0xf501a301 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0xf101491b +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0xabc36cfd +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0x283a3856 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0xb1f7279c +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0x6e18ce6a +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x36b405bf +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0xa2834c44 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0xa608bfb5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x439736a7 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0xdf4771b8 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x3e6dae55 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0xd2d05fa6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0xcba1e026 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0xa0a9facd +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0xa1b2c21d +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0xc4ad1e6f +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0xbfa13a7a +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0xed7081d4 +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0xdb67b944 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0x500ccc75 +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0xc16f90a8 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x3ca6377c +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0xee1cbf49 +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0x3782b5bf +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0xfd5e7ba0 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0xd4011af1 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0x6f5dc891 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0xdd446eb2 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0xda8e18c9 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x20b8c66d +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0xd838ec43 +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0xbecef1b8 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0x109bfd9c +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0xdf46614a +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0x449632e7 +net/ipv4/netfilter/ip_nat ip_nat_packet 0xb9d39306 +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0xa2f55e71 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x823f5d9b +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0xa39d7f66 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0x4b4c9603 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x1dfc9789 +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0xb518232f +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0x13fa2d34 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0xa0376ea8 +net/ipv4/netfilter/ip_tables ipt_do_table 0x8fd426cb +net/ipv4/netfilter/ip_tables ipt_find_target 0x720b3cbf +net/ipv4/netfilter/ip_tables ipt_register_match 0xcdfc837a +net/ipv4/netfilter/ip_tables ipt_register_table 0xd41834e1 +net/ipv4/netfilter/ip_tables ipt_register_target 0x4dc5619a +net/ipv4/netfilter/ip_tables ipt_unregister_match 0x861d51bb +net/ipv4/netfilter/ip_tables ipt_unregister_table 0xe0c44bda +net/ipv4/netfilter/ip_tables ipt_unregister_target 0xec5e367d +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0x1db5ff80 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0x88e74a76 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0x04e387a8 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0xfd1c0954 +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x6a123fe2 +net/ipv6/ipv6 inet6_add_protocol 0x7f8a5dca +net/ipv6/ipv6 inet6_bind 0x01858464 +net/ipv6/ipv6 inet6_del_protocol 0x6e428d58 +net/ipv6/ipv6 inet6_getname 0x93f743c1 +net/ipv6/ipv6 inet6_ioctl 0x08997c13 +net/ipv6/ipv6 inet6_register_protosw 0x57d9e626 +net/ipv6/ipv6 inet6_release 0x9c67bf60 +net/ipv6/ipv6 inet6_unregister_protosw 0x1b67132c +net/ipv6/ipv6 ip6_route_me_harder 0xe0db51be +net/ipv6/ipv6 ip6_route_output 0x83ad440c +net/ipv6/ipv6 ip6_xmit 0x5715c408 +net/ipv6/ipv6 ipv6_chk_addr 0x269b323c +net/ipv6/ipv6 ipv6_get_saddr 0xb012d90a +net/ipv6/ipv6 ipv6_getsockopt 0xfba3e1f0 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0xc936c465 +net/ipv6/ipv6 ipv6_setsockopt 0x16da2f17 +net/ipv6/ipv6 ndisc_mc_map 0xcd3914fc +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x63b3f086 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0x9e9117b4 +net/ipv6/ipv6 xfrm6_rcv_spi 0x60013cb3 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0xd09022fe +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0xdef4a600 +net/ipv6/netfilter/ip6_tables ip6t_register_table 0x8c7a4808 +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x447ed054 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0x4012fa61 +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x38a8e1c6 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0x8100cf05 +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0xad79d2d4 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0x03c40d0d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0x321528a2 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/irda/ircomm/ircomm ircomm_close 0xd8307d57 +net/irda/ircomm/ircomm ircomm_connect_request 0xae4bbf8a +net/irda/ircomm/ircomm ircomm_connect_response 0x4ba5846b +net/irda/ircomm/ircomm ircomm_control_request 0x83963a0d +net/irda/ircomm/ircomm ircomm_data_request 0xb3ce6c14 +net/irda/ircomm/ircomm ircomm_disconnect_request 0x165601a7 +net/irda/ircomm/ircomm ircomm_flow_request 0x10e1981b +net/irda/ircomm/ircomm ircomm_open 0x9ef717ab +net/irda/irda alloc_irdadev 0x062f74cb +net/irda/irda async_unwrap_char 0x24618312 +net/irda/irda async_wrap_skb 0x7491134d +net/irda/irda hashbin_delete 0x94a8156e +net/irda/irda hashbin_find 0xe0acf0d4 +net/irda/irda hashbin_get_first 0x29783db6 +net/irda/irda hashbin_get_next 0x5f261aef +net/irda/irda hashbin_insert 0x5861b834 +net/irda/irda hashbin_lock_find 0xd627dc1a +net/irda/irda hashbin_new 0x543a6db5 +net/irda/irda hashbin_remove 0xb7884205 +net/irda/irda hashbin_remove_this 0x7f933922 +net/irda/irda irda_debug 0x38a20e5b +net/irda/irda irda_device_dongle_cleanup 0x8f106793 +net/irda/irda irda_device_dongle_init 0x47744b83 +net/irda/irda irda_device_register_dongle 0x6b677f2f +net/irda/irda irda_device_set_media_busy 0xca66ae4f +net/irda/irda irda_device_unregister_dongle 0x5073b495 +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0xd0e8faf4 +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_setup_dma 0xd6deeaae +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0x11382db2 +net/irda/irda iriap_getvaluebyclass_request 0x68714c28 +net/irda/irda iriap_open 0xa6b51def +net/irda/irda irias_add_integer_attrib 0xc10a5281 +net/irda/irda irias_add_octseq_attrib 0x550a5e27 +net/irda/irda irias_add_string_attrib 0x18edd399 +net/irda/irda irias_delete_object 0x89136cd1 +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x45a03a53 +net/irda/irda irias_find_object 0xa26f32f8 +net/irda/irda irias_insert_object 0x980fe568 +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0xe1a50c6f +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0xbc5f22da +net/irda/irda irlap_open 0xa2b06a56 +net/irda/irda irlmp_close_lsap 0x6b7dff18 +net/irda/irda irlmp_connect_request 0xb531ae05 +net/irda/irda irlmp_connect_response 0x4b482e5c +net/irda/irda irlmp_data_request 0x4ee07c53 +net/irda/irda irlmp_disconnect_request 0xe0b9e1c8 +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0x3703b118 +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0x5a1224c5 +net/irda/irda irttp_connect_request 0xa5317037 +net/irda/irda irttp_connect_response 0x20b983fe +net/irda/irda irttp_data_request 0x65930514 +net/irda/irda irttp_disconnect_request 0xcf85db10 +net/irda/irda irttp_dup 0xd63c41b8 +net/irda/irda irttp_flow_request 0x49dde93b +net/irda/irda irttp_open_tsap 0x0ad91b52 +net/irda/irda irttp_udata_request 0x95254cd6 +net/irda/irda proc_irda 0x6103ee6c +net/lapb/lapb lapb_connect_request 0xd70772bd +net/lapb/lapb lapb_data_received 0xfbadc367 +net/lapb/lapb lapb_data_request 0xd2cb0b70 +net/lapb/lapb lapb_disconnect_request 0xc363d44d +net/lapb/lapb lapb_getparms 0x67955903 +net/lapb/lapb lapb_register 0x2401015c +net/lapb/lapb lapb_setparms 0xb62dfb3b +net/lapb/lapb lapb_unregister 0xec12be42 +net/netfilter/nfnetlink __nfa_fill 0x754aa94f +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0xe7e5ed78 +net/netfilter/nfnetlink nfnetlink_subsys_register 0x5f5c1f80 +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0x185dbe58 +net/netfilter/nfnetlink nfnetlink_unicast 0x9737a9ee +net/rxrpc/rxrpc rxrpc_add_service 0x156f11ef +net/rxrpc/rxrpc rxrpc_call_abort 0x16c05fde +net/rxrpc/rxrpc rxrpc_call_read_data 0x7a16593f +net/rxrpc/rxrpc rxrpc_call_write_data 0x07f9ae84 +net/rxrpc/rxrpc rxrpc_create_call 0x93b4c8d3 +net/rxrpc/rxrpc rxrpc_create_connection 0xdd661050 +net/rxrpc/rxrpc rxrpc_create_transport 0x9e98c97b +net/rxrpc/rxrpc rxrpc_del_service 0x9c9b522a +net/rxrpc/rxrpc rxrpc_put_call 0x682cb307 +net/rxrpc/rxrpc rxrpc_put_connection 0x90dfeac0 +net/rxrpc/rxrpc rxrpc_put_transport 0xb9d22e31 +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x00c52ef5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0xb5dea7ef +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xf8b2ff6e +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0x6b61ae58 +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0xf6bc1587 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0x4260d458 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0x0488ec22 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0x7283ee22 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0x5b341c07 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0x817a2dbb +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0x3f9250d1 +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0xdea7ff11 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0x94a59abc +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0x5dcc5ad8 +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0xaab7b8f7 +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0x74ea3351 +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x4c2f4b6d +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x8d1a827e +net/sunrpc/sunrpc auth_domain_find 0xce9b7a1f +net/sunrpc/sunrpc auth_domain_lookup 0xa74157e3 +net/sunrpc/sunrpc auth_domain_put 0xb7e2b4a5 +net/sunrpc/sunrpc auth_unix_add_addr 0xb8520a43 +net/sunrpc/sunrpc auth_unix_forget_old 0x758f9c49 +net/sunrpc/sunrpc auth_unix_lookup 0xd1d4e136 +net/sunrpc/sunrpc cache_check 0x48b3316c +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0xfd7046ed +net/sunrpc/sunrpc cache_init 0xc244025c +net/sunrpc/sunrpc cache_purge 0xbe9cfadd +net/sunrpc/sunrpc cache_register 0x48c324ec +net/sunrpc/sunrpc cache_unregister 0xd78507aa +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0x0529d984 +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0x5fe143e0 +net/sunrpc/sunrpc rpc_bind_new_program 0x1d4393a7 +net/sunrpc/sunrpc rpc_call_async 0xfe4ad58a +net/sunrpc/sunrpc rpc_call_setup 0x4c5c5f79 +net/sunrpc/sunrpc rpc_call_sync 0xc2faa721 +net/sunrpc/sunrpc rpc_clnt_sigmask 0x92b56979 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0x944cec1b +net/sunrpc/sunrpc rpc_clone_client 0xb2363ed1 +net/sunrpc/sunrpc rpc_create_client 0xd51c4a0a +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0x9589c331 +net/sunrpc/sunrpc rpc_destroy_client 0x497e432f +net/sunrpc/sunrpc rpc_execute 0xfe409c54 +net/sunrpc/sunrpc rpc_init_task 0x66da8e92 +net/sunrpc/sunrpc rpc_init_wait_queue 0x916aaa11 +net/sunrpc/sunrpc rpc_killall_tasks 0xe8b9ea34 +net/sunrpc/sunrpc rpc_max_payload 0x76efce5b +net/sunrpc/sunrpc rpc_mkpipe 0x67b6b40d +net/sunrpc/sunrpc rpc_new_child 0xbe49ec2c +net/sunrpc/sunrpc rpc_new_client 0x4b130799 +net/sunrpc/sunrpc rpc_new_task 0x05399273 +net/sunrpc/sunrpc rpc_proc_register 0xf7e53452 +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x2eead630 +net/sunrpc/sunrpc rpc_release_client 0x00812566 +net/sunrpc/sunrpc rpc_release_task 0xbb40f5cf +net/sunrpc/sunrpc rpc_restart_call 0x944de875 +net/sunrpc/sunrpc rpc_run_child 0xce7a8383 +net/sunrpc/sunrpc rpc_setbufsize 0x3715c334 +net/sunrpc/sunrpc rpc_shutdown_client 0xb5931e78 +net/sunrpc/sunrpc rpc_sleep_on 0xb926aef3 +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0x6d71e3af +net/sunrpc/sunrpc rpc_wake_up_next 0x6ede58c7 +net/sunrpc/sunrpc rpc_wake_up_status 0xa5509e00 +net/sunrpc/sunrpc rpc_wake_up_task 0xdcc002fd +net/sunrpc/sunrpc rpcauth_create 0x0cf6a52d +net/sunrpc/sunrpc rpcauth_free_credcache 0xb4808cc1 +net/sunrpc/sunrpc rpcauth_init_credcache 0x3f83ba36 +net/sunrpc/sunrpc rpcauth_lookup_credcache 0x8d7f1b03 +net/sunrpc/sunrpc rpcauth_lookupcred 0x9db59dee +net/sunrpc/sunrpc rpcauth_register 0xe0668a39 +net/sunrpc/sunrpc rpcauth_unregister 0xb7e9f5e7 +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x4055dc67 +net/sunrpc/sunrpc svc_auth_unregister 0x0f668ba9 +net/sunrpc/sunrpc svc_authenticate 0x88eab595 +net/sunrpc/sunrpc svc_create 0xab2e8704 +net/sunrpc/sunrpc svc_create_thread 0x4cea33b7 +net/sunrpc/sunrpc svc_destroy 0xbd9e3fea +net/sunrpc/sunrpc svc_drop 0x8ef920b8 +net/sunrpc/sunrpc svc_exit_thread 0x208ea72e +net/sunrpc/sunrpc svc_makesock 0xb3f4c61a +net/sunrpc/sunrpc svc_proc_register 0xdc60a1d4 +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0xc1f4a3f1 +net/sunrpc/sunrpc svc_recv 0x0d8802b7 +net/sunrpc/sunrpc svc_reserve 0xe2ab3488 +net/sunrpc/sunrpc svc_seq_show 0x290c3d44 +net/sunrpc/sunrpc svc_set_client 0xa11384ee +net/sunrpc/sunrpc svc_wake_up 0xc5798bee +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x96946e44 +net/sunrpc/sunrpc xdr_buf_from_iov 0x5a05493d +net/sunrpc/sunrpc xdr_buf_read_netobj 0xee87d245 +net/sunrpc/sunrpc xdr_buf_subsegment 0xad185204 +net/sunrpc/sunrpc xdr_decode_array2 0x77f75bc0 +net/sunrpc/sunrpc xdr_decode_netobj 0x1be57115 +net/sunrpc/sunrpc xdr_decode_string 0x6755aa62 +net/sunrpc/sunrpc xdr_decode_string_inplace 0x7bd87272 +net/sunrpc/sunrpc xdr_decode_word 0xee5a57ea +net/sunrpc/sunrpc xdr_encode_array2 0x6da22f15 +net/sunrpc/sunrpc xdr_encode_netobj 0x29c6f164 +net/sunrpc/sunrpc xdr_encode_opaque 0x0e9e79d5 +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0x587d494b +net/sunrpc/sunrpc xdr_encode_pages 0x777f38b3 +net/sunrpc/sunrpc xdr_encode_string 0xabc0fe0c +net/sunrpc/sunrpc xdr_encode_word 0xc92ecf1b +net/sunrpc/sunrpc xdr_init_decode 0x6e9f3829 +net/sunrpc/sunrpc xdr_init_encode 0x1e079580 +net/sunrpc/sunrpc xdr_inline_decode 0x0967e875 +net/sunrpc/sunrpc xdr_inline_pages 0xae9d0d58 +net/sunrpc/sunrpc xdr_read_pages 0x83bfe13f +net/sunrpc/sunrpc xdr_reserve_space 0xe4e9d37a +net/sunrpc/sunrpc xdr_shift_buf 0x2c968322 +net/sunrpc/sunrpc xdr_write_pages 0x1f61aa75 +net/sunrpc/sunrpc xprt_create_proto 0x1287dfa1 +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x8ea05364 +net/wanrouter/wanrouter register_wan_device 0xe7efab0d +net/wanrouter/wanrouter unlock_adapter_irq 0x696688b7 +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0x9b1dad5c +net/wanrouter/wanrouter wanrouter_type_trans 0xe4aee81e +security/commoncap cap_bprm_apply_creds 0xa21306d3 +security/commoncap cap_bprm_secureexec 0xc88dd9ea +security/commoncap cap_bprm_set_security 0xeeb09540 +security/commoncap cap_capable 0x33b279f3 +security/commoncap cap_capget 0xbfb36d35 +security/commoncap cap_capset_check 0xc018e8a9 +security/commoncap cap_capset_set 0xbffff9c1 +security/commoncap cap_inode_removexattr 0xbe6efe7c +security/commoncap cap_inode_setxattr 0xe6bee128 +security/commoncap cap_netlink_recv 0x25114759 +security/commoncap cap_netlink_send 0x7beaf41f +security/commoncap cap_ptrace 0x51268e95 +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x372390b2 +security/commoncap cap_task_reparent_to_init 0x9312ebc4 +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x0e2b5d4d +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-gf1 snd_seq_gf1_init 0x9da48ff9 +sound/core/seq/instr/snd-ainstr-iw snd_seq_iwffff_init 0x5d8aab91 +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x25d29210 +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0xe45058df +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0x0f2a5bc0 +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x266d78ed +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x89947013 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x6fcf589d +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x9b0eb805 +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0x74f92120 +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x28cd8b46 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x8b11a1fa +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0x1b896855 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0xc049cdd9 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0xbf028ef2 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x20a6608e +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0x7d7fce56 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x5c9108a3 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x2b68e19a +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x27b4902e +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0xc4780079 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0x797b2662 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0x9d2936fd +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0xdfc53d58 +sound/core/snd copy_from_user_toio 0xce3ca308 +sound/core/snd copy_to_user_fromio 0x602c96f0 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0xeca65456 +sound/core/snd snd_card_file_add 0xf7df1c05 +sound/core/snd snd_card_file_remove 0x22c396db +sound/core/snd snd_card_free 0xad50c2e8 +sound/core/snd snd_card_free_in_thread 0x58a372d1 +sound/core/snd snd_card_new 0x2035c1f7 +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0xb1f01111 +sound/core/snd snd_card_register 0xcba4df63 +sound/core/snd snd_card_set_generic_dev 0x6b535e48 +sound/core/snd snd_card_set_generic_pm_callback 0x8685ac9d +sound/core/snd snd_card_set_pm_callback 0x69eb4a3e +sound/core/snd snd_cards 0x5465782b +sound/core/snd snd_component_add 0xd3efecc3 +sound/core/snd snd_ctl_add 0x5808e57c +sound/core/snd snd_ctl_elem_read 0x5ab713b6 +sound/core/snd snd_ctl_elem_write 0x4b605955 +sound/core/snd snd_ctl_find_id 0xd85c708e +sound/core/snd snd_ctl_find_numid 0xb5e24beb +sound/core/snd snd_ctl_free_one 0x80860a2c +sound/core/snd snd_ctl_new 0xcdcf811a +sound/core/snd snd_ctl_new1 0x86a11f52 +sound/core/snd snd_ctl_notify 0xd3100a43 +sound/core/snd snd_ctl_register_ioctl 0x6dee1a5b +sound/core/snd snd_ctl_remove 0x2f4793a4 +sound/core/snd snd_ctl_remove_id 0xc3da0ef9 +sound/core/snd snd_ctl_rename_id 0xc84f7c22 +sound/core/snd snd_ctl_unregister_ioctl 0xa7393d07 +sound/core/snd snd_device_free 0xccae35f7 +sound/core/snd snd_device_new 0xe6c83740 +sound/core/snd snd_device_register 0x36634836 +sound/core/snd snd_dma_disable 0x70c15ac1 +sound/core/snd snd_dma_pointer 0x191e88cf +sound/core/snd snd_dma_program 0x18e1683f +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0x47d291c7 +sound/core/snd snd_info_create_module_entry 0x7f3056ab +sound/core/snd snd_info_free_entry 0xd43b3029 +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0xdd3bc2a3 +sound/core/snd snd_info_unregister 0x2fd69fe9 +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0x72309b71 +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0x83f0cd0e +sound/core/snd snd_register_device 0xb1dea101 +sound/core/snd snd_register_oss_device 0xd739d1a4 +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0x9cefd536 +sound/core/snd snd_unregister_device 0xd73dd2d4 +sound/core/snd snd_unregister_oss_device 0x5a4b443a +sound/core/snd-hwdep snd_hwdep_new 0xcf6fb573 +sound/core/snd-page-alloc snd_dma_alloc_pages 0x1d320e24 +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0x6a5ac525 +sound/core/snd-page-alloc snd_dma_free_pages 0x3dac9916 +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0xfd7a62fa +sound/core/snd-page-alloc snd_dma_reserve_buf 0x1f71110a +sound/core/snd-page-alloc snd_free_pages 0x3b91f3af +sound/core/snd-page-alloc snd_malloc_pages 0xade88e76 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x0beab9b1 +sound/core/snd-pcm snd_pcm_devices 0xaa615ad1 +sound/core/snd-pcm snd_pcm_format_big_endian 0x93878ece +sound/core/snd-pcm snd_pcm_format_linear 0x8733f967 +sound/core/snd-pcm snd_pcm_format_little_endian 0x8bbdc311 +sound/core/snd-pcm snd_pcm_format_name 0xedd5b5bd +sound/core/snd-pcm snd_pcm_format_physical_width 0xa8edfa41 +sound/core/snd-pcm snd_pcm_format_set_silence 0xdf124602 +sound/core/snd-pcm snd_pcm_format_signed 0xe2c5f868 +sound/core/snd-pcm snd_pcm_format_silence_64 0xda29bc77 +sound/core/snd-pcm snd_pcm_format_size 0x6f3fba79 +sound/core/snd-pcm snd_pcm_format_unsigned 0x95a60aa5 +sound/core/snd-pcm snd_pcm_format_width 0x55eb2175 +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0x5a457fc3 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0xef807551 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0x0d6a8066 +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0xf29c0fd1 +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0xa1671446 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x72c3ea9a +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x720c2b2e +sound/core/snd-pcm snd_pcm_hw_constraint_step 0xc9a8d848 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0xa3e27f67 +sound/core/snd-pcm snd_pcm_hw_constraints_init 0x31dd2c2d +sound/core/snd-pcm snd_pcm_hw_param_first 0xebaa949d +sound/core/snd-pcm snd_pcm_hw_param_last 0x58c81a32 +sound/core/snd-pcm snd_pcm_hw_param_mask 0x1cd48067 +sound/core/snd-pcm snd_pcm_hw_param_near 0x8ca5767a +sound/core/snd-pcm snd_pcm_hw_param_set 0x2382ed23 +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0xa7f4b720 +sound/core/snd-pcm snd_pcm_hw_rule_add 0x062f7bfe +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0x98e2762c +sound/core/snd-pcm snd_pcm_kernel_ioctl 0x0c0c06a7 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x261744cf +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0x7c9f7f5e +sound/core/snd-pcm snd_pcm_lib_free_pages 0xa1b3a027 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x8bcb56ce +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0xb4d650df +sound/core/snd-pcm snd_pcm_lib_mmap_iomem 0x2cd28844 +sound/core/snd-pcm snd_pcm_lib_period_bytes 0xfb99fab4 +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x9d9cbc9a +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0xd94a761d +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0x7339de14 +sound/core/snd-pcm snd_pcm_lib_read 0xa56f6b1b +sound/core/snd-pcm snd_pcm_lib_readv 0xa0e24367 +sound/core/snd-pcm snd_pcm_lib_write 0x86a70336 +sound/core/snd-pcm snd_pcm_lib_writev 0x2c049407 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x68f91a85 +sound/core/snd-pcm snd_pcm_link_rwlock 0xb47e2d3d +sound/core/snd-pcm snd_pcm_mmap_data 0xa5837b09 +sound/core/snd-pcm snd_pcm_new 0x85ce33ac +sound/core/snd-pcm snd_pcm_new_stream 0x5c22db72 +sound/core/snd-pcm snd_pcm_notify 0x026ade94 +sound/core/snd-pcm snd_pcm_open_substream 0xa07a3c87 +sound/core/snd-pcm snd_pcm_period_elapsed 0xbdaff9e4 +sound/core/snd-pcm snd_pcm_release_substream 0x89dffe5c +sound/core/snd-pcm snd_pcm_set_ops 0x807be94c +sound/core/snd-pcm snd_pcm_set_sync 0x6b91f744 +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0xf167cbb5 +sound/core/snd-pcm snd_pcm_stop 0x3951a8b7 +sound/core/snd-pcm snd_pcm_suspend 0x7b6a6372 +sound/core/snd-pcm snd_pcm_suspend_all 0x63a23222 +sound/core/snd-rawmidi snd_rawmidi_drain_input 0x625c3bc4 +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x93f60170 +sound/core/snd-rawmidi snd_rawmidi_drop_output 0xa2e01391 +sound/core/snd-rawmidi snd_rawmidi_info 0xeeee6f0f +sound/core/snd-rawmidi snd_rawmidi_info_select 0xa43061b2 +sound/core/snd-rawmidi snd_rawmidi_input_params 0xf57905bf +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x9741ff9a +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0xcaa3de03 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0xf8350b2b +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x526efe7e +sound/core/snd-rawmidi snd_rawmidi_new 0x1f2dc555 +sound/core/snd-rawmidi snd_rawmidi_output_params 0x934decda +sound/core/snd-rawmidi snd_rawmidi_receive 0x07e269c7 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x0e56ac45 +sound/core/snd-rawmidi snd_rawmidi_transmit 0xac395f53 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x5e3020be +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x83f9ea13 +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0x954c8e96 +sound/core/snd-timer snd_timer_close 0x3a4f1fe1 +sound/core/snd-timer snd_timer_continue 0x5e12348a +sound/core/snd-timer snd_timer_global_free 0x59b8b783 +sound/core/snd-timer snd_timer_global_new 0x76ad6387 +sound/core/snd-timer snd_timer_global_register 0x50c375b3 +sound/core/snd-timer snd_timer_global_unregister 0x2b289f0f +sound/core/snd-timer snd_timer_interrupt 0xe2a63cc8 +sound/core/snd-timer snd_timer_new 0xfa8f2027 +sound/core/snd-timer snd_timer_notify 0xbcb0bbf8 +sound/core/snd-timer snd_timer_open 0xb25eb3c7 +sound/core/snd-timer snd_timer_pause 0x984996a8 +sound/core/snd-timer snd_timer_resolution 0xa872f569 +sound/core/snd-timer snd_timer_start 0x4cf53f4a +sound/core/snd-timer snd_timer_stop 0x54ea12d3 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0xe7ecaf45 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x55874d02 +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0x094002c4 +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0x4bb94b54 +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0x8460fb52 +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0xe5572fa7 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0x24db35b1 +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0x9b19115a +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0xa694b038 +sound/drivers/opl4/snd-opl4-lib snd_opl4_create 0x14f1e99e +sound/drivers/opl4/snd-opl4-lib snd_opl4_read 0xe0cc5a2f +sound/drivers/opl4/snd-opl4-lib snd_opl4_read_memory 0x6796a0da +sound/drivers/opl4/snd-opl4-lib snd_opl4_write 0x6c45da8b +sound/drivers/opl4/snd-opl4-lib snd_opl4_write_memory 0xfcea6889 +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0xfdc259bd +sound/drivers/vx/snd-vx-lib snd_vx_create 0x9cfe9972 +sound/drivers/vx/snd-vx-lib snd_vx_delay 0x4692be9f +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x1fea093b +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0xcac75bd9 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0xbea59f2c +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x895b5b98 +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0xf60e98d6 +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0x242dbcb4 +sound/i2c/other/snd-ak4114 snd_ak4114_build 0x94ed0ac4 +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0xd64246b5 +sound/i2c/other/snd-ak4114 snd_ak4114_create 0x51712071 +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0xe32793bb +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0x52da288a +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0xb7141865 +sound/i2c/other/snd-ak4117 snd_ak4117_build 0xb0752492 +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0x80b2f43a +sound/i2c/other/snd-ak4117 snd_ak4117_create 0x409301bc +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x6ac127d4 +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0xc8406848 +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x1f9dc2b1 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0x76f7fbc5 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0x6eb26b04 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0xd84dfdca +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0xcd17aa6c +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0x2ffd321d +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0xeb38518e +sound/i2c/snd-cs8427 snd_cs8427_create 0xe26984c4 +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0x8b4a8a2f +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0x8cf5f19d +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0x4e23d959 +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0xb00df654 +sound/i2c/snd-cs8427 snd_cs8427_reset 0x559c83ca +sound/i2c/snd-i2c snd_i2c_bus_create 0xe21d5462 +sound/i2c/snd-i2c snd_i2c_device_create 0xd30f803e +sound/i2c/snd-i2c snd_i2c_device_free 0x6d204c9e +sound/i2c/snd-i2c snd_i2c_probeaddr 0xbc442a31 +sound/i2c/snd-i2c snd_i2c_readbytes 0xe29c54b6 +sound/i2c/snd-i2c snd_i2c_sendbytes 0xd42bbf8d +sound/i2c/snd-tea6330t snd_tea6330t_detect 0xcd3806b6 +sound/i2c/snd-tea6330t snd_tea6330t_update_mixer 0x6a346444 +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_create 0x73c0671e +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_mixer 0x13cb2027 +sound/isa/ad1816a/snd-ad1816a-lib snd_ad1816a_pcm 0x2298b63a +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_add_ctl 0x7a605517 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_create 0xcbacfffb +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_get_pcm_ops 0x0593fa80 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_mixer 0x6d932971 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_out 0x3b449344 +sound/isa/ad1848/snd-ad1848-lib snd_ad1848_pcm 0x5e5eb325 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_chip_id 0xd68c6ff2 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_create 0x5098a41f +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_get_double 0x51c0e3b5 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_get_single 0x93bad4bd +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_in 0xa483c394 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_info_double 0x2e7871cf +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_info_single 0x83b0de73 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_interrupt 0xa2de426c +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mce_down 0xf6cc16ef +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mce_up 0x021b53a5 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_mixer 0xf603e010 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_out 0x72019f0d +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_pcm 0xae5a80ea +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_put_double 0x50923fcd +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_put_single 0x92e808c5 +sound/isa/cs423x/snd-cs4231-lib snd_cs4231_timer 0x73d09297 +sound/isa/cs423x/snd-cs4231-lib snd_cs4236_ext_in 0x26774c4c +sound/isa/cs423x/snd-cs4231-lib snd_cs4236_ext_out 0xb6bd7e3e +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_create 0xecbc5066 +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_mixer 0x8909b76e +sound/isa/cs423x/snd-cs4236-lib snd_cs4236_pcm 0x1b614f68 +sound/isa/es1688/snd-es1688-lib snd_es1688_create 0xec500bdc +sound/isa/es1688/snd-es1688-lib snd_es1688_mixer 0x9c4a5647 +sound/isa/es1688/snd-es1688-lib snd_es1688_mixer_write 0xd7e99627 +sound/isa/es1688/snd-es1688-lib snd_es1688_pcm 0x704a3497 +sound/isa/gus/snd-gus-lib snd_gf1_alloc_voice 0x12da62f5 +sound/isa/gus/snd-gus-lib snd_gf1_atten_table 0xc43a5527 +sound/isa/gus/snd-gus-lib snd_gf1_ctrl_stop 0x4b3eb21c +sound/isa/gus/snd-gus-lib snd_gf1_delay 0x14c4d4cb +sound/isa/gus/snd-gus-lib snd_gf1_dram_addr 0x0545ee97 +sound/isa/gus/snd-gus-lib snd_gf1_free_voice 0xfc745e6f +sound/isa/gus/snd-gus-lib snd_gf1_i_look16 0x00802fac +sound/isa/gus/snd-gus-lib snd_gf1_i_look8 0xf69ac84b +sound/isa/gus/snd-gus-lib snd_gf1_i_write8 0x7f1ac9de +sound/isa/gus/snd-gus-lib snd_gf1_look16 0x2999e0ed +sound/isa/gus/snd-gus-lib snd_gf1_look8 0x8f1b44ab +sound/isa/gus/snd-gus-lib snd_gf1_lvol_to_gvol_raw 0x46db8d67 +sound/isa/gus/snd-gus-lib snd_gf1_mem_alloc 0x1e9d3ce3 +sound/isa/gus/snd-gus-lib snd_gf1_mem_free 0xe4ce8af1 +sound/isa/gus/snd-gus-lib snd_gf1_mem_lock 0xd59ea6ec +sound/isa/gus/snd-gus-lib snd_gf1_mem_xfree 0xb6e7185d +sound/isa/gus/snd-gus-lib snd_gf1_new_mixer 0x1e75b656 +sound/isa/gus/snd-gus-lib snd_gf1_pcm_new 0xe243df6d +sound/isa/gus/snd-gus-lib snd_gf1_peek 0x8111d2c5 +sound/isa/gus/snd-gus-lib snd_gf1_poke 0xb389e6ef +sound/isa/gus/snd-gus-lib snd_gf1_rawmidi_new 0x7f342393 +sound/isa/gus/snd-gus-lib snd_gf1_stop_voice 0x74f57dd0 +sound/isa/gus/snd-gus-lib snd_gf1_translate_freq 0x9fe091e5 +sound/isa/gus/snd-gus-lib snd_gf1_write16 0xb576ff88 +sound/isa/gus/snd-gus-lib snd_gf1_write8 0x76882d2a +sound/isa/gus/snd-gus-lib snd_gf1_write_addr 0x2bb3fab2 +sound/isa/gus/snd-gus-lib snd_gus_create 0x35640efd +sound/isa/gus/snd-gus-lib snd_gus_dram_read 0xadcb5c5f +sound/isa/gus/snd-gus-lib snd_gus_dram_write 0xa2a3d5b4 +sound/isa/gus/snd-gus-lib snd_gus_initialize 0x43c0ea44 +sound/isa/gus/snd-gus-lib snd_gus_interrupt 0xe8226527 +sound/isa/gus/snd-gus-lib snd_gus_use_dec 0x32a620b1 +sound/isa/gus/snd-gus-lib snd_gus_use_inc 0x3d7f1fdd +sound/isa/sb/snd-sb-common snd_sbdsp_command 0x5ed099b4 +sound/isa/sb/snd-sb-common snd_sbdsp_create 0x3c633255 +sound/isa/sb/snd-sb-common snd_sbdsp_get_byte 0xb3a1ee35 +sound/isa/sb/snd-sb-common snd_sbdsp_reset 0x945b8b32 +sound/isa/sb/snd-sb-common snd_sbmixer_add_ctl 0xae26c522 +sound/isa/sb/snd-sb-common snd_sbmixer_new 0xddaa84e0 +sound/isa/sb/snd-sb-common snd_sbmixer_read 0x73ed747b +sound/isa/sb/snd-sb-common snd_sbmixer_write 0x1bf8b887 +sound/isa/sb/snd-sb16-csp snd_sb_csp_new 0x5e1a5ca9 +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_configure 0x27f4830d +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_get_pcm_ops 0x257e7f51 +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_interrupt 0x89f51d7b +sound/isa/sb/snd-sb16-dsp snd_sb16dsp_pcm 0x8ace6c5c +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_interrupt 0x66bff9c7 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_midi 0xfb1815e5 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_midi_interrupt 0xea294c02 +sound/isa/sb/snd-sb8-dsp snd_sb8dsp_pcm 0xa3c0791b +sound/isa/sb/snd-sbawe snd_emu8000_dma_chan 0x27cd94b1 +sound/isa/sb/snd-sbawe snd_emu8000_init_fm 0x717b601a +sound/isa/sb/snd-sbawe snd_emu8000_load_chorus_fx 0x454ae60d +sound/isa/sb/snd-sbawe snd_emu8000_load_reverb_fx 0xea59de94 +sound/isa/sb/snd-sbawe snd_emu8000_peek 0xb8f09f87 +sound/isa/sb/snd-sbawe snd_emu8000_peek_dw 0xdcf596e2 +sound/isa/sb/snd-sbawe snd_emu8000_poke 0x3efdd74b +sound/isa/sb/snd-sbawe snd_emu8000_poke_dw 0xb63e2be9 +sound/isa/sb/snd-sbawe snd_emu8000_update_chorus_mode 0xf0c55a24 +sound/isa/sb/snd-sbawe snd_emu8000_update_equalizer 0xed45d9fe +sound/isa/sb/snd-sbawe snd_emu8000_update_reverb_mode 0x6e8c8448 +sound/oss/ac97_codec ac97_alloc_codec 0x3ff65ffe +sound/oss/ac97_codec ac97_probe_codec 0x0083452d +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0xa98a2a2b +sound/oss/ac97_codec ac97_release_codec 0x66042b4e +sound/oss/ac97_codec ac97_restore_state 0x4d8f7d81 +sound/oss/ac97_codec ac97_save_state 0xd0116496 +sound/oss/ac97_codec ac97_set_adc_rate 0x75ef9b04 +sound/oss/ac97_codec ac97_set_dac_rate 0x3f30b14e +sound/oss/ac97_codec ac97_tune_hardware 0x40058ce8 +sound/oss/ac97_codec ac97_unregister_driver 0xfa32ee5d +sound/oss/aci aci_port 0x0d82adb6 +sound/oss/aci aci_rw_cmd 0xcc7c4cd8 +sound/oss/aci aci_version 0x93350c87 +sound/oss/ad1848 ad1848_control 0xc04f6f67 +sound/oss/ad1848 ad1848_detect 0x845a1638 +sound/oss/ad1848 ad1848_init 0x6af8d38d +sound/oss/ad1848 ad1848_unload 0x9bf1cc62 +sound/oss/ad1848 adintr 0x509bfb25 +sound/oss/ad1848 attach_ms_sound 0xc20de8b1 +sound/oss/ad1848 probe_ms_sound 0x65e6d1ca +sound/oss/ad1848 unload_ms_sound 0xb29a9148 +sound/oss/mpu401 attach_mpu401 0xbd4155a4 +sound/oss/mpu401 intchk_mpu401 0x5fe6dd42 +sound/oss/mpu401 mpuintr 0x48dfd0bc +sound/oss/mpu401 probe_mpu401 0x5c8d3e32 +sound/oss/mpu401 unload_mpu401 0x5febf284 +sound/oss/opl3 opl3_detect 0x67481767 +sound/oss/opl3 opl3_init 0x897468de +sound/oss/sb_lib probe_sbmpu 0x26553d10 +sound/oss/sb_lib sb_be_quiet 0x42424109 +sound/oss/sb_lib sb_dsp_detect 0xd8a2731c +sound/oss/sb_lib sb_dsp_init 0xd0d0413e +sound/oss/sb_lib sb_dsp_unload 0xc4884969 +sound/oss/sb_lib smw_free 0x450f9aea +sound/oss/sb_lib unload_sbmpu 0x74afd69c +sound/oss/sound DMAbuf_close_dma 0xc88b42ab +sound/oss/sound DMAbuf_inputintr 0xeb315d99 +sound/oss/sound DMAbuf_open_dma 0x06b3013d +sound/oss/sound DMAbuf_outputintr 0x987bcf12 +sound/oss/sound DMAbuf_start_dma 0xe056b71c +sound/oss/sound MIDIbuf_avail 0x1f395686 +sound/oss/sound audio_devs 0x7bcc73f7 +sound/oss/sound cent_tuning 0x03ce7ff7 +sound/oss/sound compute_finetune 0x04c87ec8 +sound/oss/sound conf_printf 0x0f280035 +sound/oss/sound conf_printf2 0x7bdf0907 +sound/oss/sound do_midi_msg 0xb51587f6 +sound/oss/sound load_mixer_volumes 0xa1d5f04f +sound/oss/sound midi_devs 0x9578940d +sound/oss/sound midi_synth_aftertouch 0xf1ea8a20 +sound/oss/sound midi_synth_bender 0xba7dd041 +sound/oss/sound midi_synth_close 0xad45df73 +sound/oss/sound midi_synth_controller 0x892093e0 +sound/oss/sound midi_synth_hw_control 0xb14b22cd +sound/oss/sound midi_synth_ioctl 0xaef743b2 +sound/oss/sound midi_synth_kill_note 0x2aa31695 +sound/oss/sound midi_synth_load_patch 0xf7426da3 +sound/oss/sound midi_synth_open 0xf6b3a2fb +sound/oss/sound midi_synth_panning 0xdb400afa +sound/oss/sound midi_synth_reset 0x56504ca2 +sound/oss/sound midi_synth_send_sysex 0xfddcbfb3 +sound/oss/sound midi_synth_set_instr 0xd85be938 +sound/oss/sound midi_synth_setup_voice 0x4ff47e9d +sound/oss/sound midi_synth_start_note 0x9bdaf24d +sound/oss/sound mixer_devs 0x5dcf0828 +sound/oss/sound note_to_freq 0x5d986fc9 +sound/oss/sound num_audiodevs 0x4cd01bdd +sound/oss/sound num_midis 0xa1eae7cf +sound/oss/sound num_mixers 0x9d845b18 +sound/oss/sound semitone_tuning 0x8b84aeb1 +sound/oss/sound seq_copy_to_input 0x7679ee76 +sound/oss/sound seq_input_event 0x17ba231d +sound/oss/sound sequencer_init 0xf78f6363 +sound/oss/sound sequencer_timer 0x90bd9714 +sound/oss/sound sound_alloc_dma 0x9a95733f +sound/oss/sound sound_alloc_mididev 0xba413f87 +sound/oss/sound sound_alloc_mixerdev 0x1b3df3cf +sound/oss/sound sound_alloc_synthdev 0xc748d109 +sound/oss/sound sound_alloc_timerdev 0x51e354b2 +sound/oss/sound sound_close_dma 0x418f5fbe +sound/oss/sound sound_free_dma 0x394cb088 +sound/oss/sound sound_install_audiodrv 0x181b71b9 +sound/oss/sound sound_install_mixer 0x2481d64d +sound/oss/sound sound_open_dma 0xcc4b8797 +sound/oss/sound sound_timer_devs 0x78f90b39 +sound/oss/sound sound_timer_init 0x2161d5e8 +sound/oss/sound sound_timer_interrupt 0xe2675a79 +sound/oss/sound sound_timer_syncinterval 0xfa6871be +sound/oss/sound sound_unload_audiodev 0xa948751e +sound/oss/sound sound_unload_mididev 0xa6bb414c +sound/oss/sound sound_unload_mixerdev 0xa51c913b +sound/oss/sound sound_unload_synthdev 0x06339815 +sound/oss/sound sound_unload_timerdev 0xa41ead5f +sound/oss/sound synth_devs 0x238cd9ea +sound/oss/uart401 probe_uart401 0xebdbf659 +sound/oss/uart401 uart401intr 0x5df70158 +sound/oss/uart401 unload_uart401 0xecfdd9c9 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0xbfa06bf2 +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0x318a7758 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0xa1d34e6d +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0x8dac6502 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0xff4117b0 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0xf6b7b927 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x50a360ca +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0x70ee542b +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0x9f8fbb28 +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0x145f148f +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0x3830407a +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0xb6447334 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x778e9aa3 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0x1f4d2ae9 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0x6f3d33a5 +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0xdcf8c17b +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0xfe6b1e4c +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0xab1a009a +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0xb3e8c720 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x67e7cae9 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0x3b6c0604 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0xa1a902bc +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0xd5f2a3ed +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0x27a5495a +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0xcfaef5b6 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0x2e82d280 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0x7b1a92fe +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0x5898d388 +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0x1f2b7189 +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0x2d392fed +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0x7c7de60d +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0x2a9506fe +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0xf5f89e6a +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x7288e03f +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0xf0660969 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0x68aa8986 +sound/pci/hda/snd-hda-codec snd_hda_resume 0x5612d074 +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0x31f1a2e7 +sound/pci/hda/snd-hda-codec snd_hda_suspend 0x83fcf9a5 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0x3c24d5c0 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0x52ed4233 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0x30d3042d +sound/pci/trident/snd-trident snd_trident_alloc_voice 0x8a1213f9 +sound/pci/trident/snd-trident snd_trident_free_voice 0x5273bff0 +sound/pci/trident/snd-trident snd_trident_start_voice 0x777b6cbd +sound/pci/trident/snd-trident snd_trident_stop_voice 0x019121ee +sound/pci/trident/snd-trident snd_trident_synth_alloc 0x463e9033 +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0xc3fdccfb +sound/pci/trident/snd-trident snd_trident_synth_free 0x4826adfa +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0x047963f6 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0xdc84730b +sound/soundcore register_sound_midi 0xe313d4a0 +sound/soundcore register_sound_mixer 0x528bef91 +sound/soundcore register_sound_special 0xb641ff8a +sound/soundcore register_sound_special_device 0xd3b8a544 +sound/soundcore register_sound_synth 0xf8ff6b3e +sound/soundcore sound_class 0x73831dd6 +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +sound/synth/emux/snd-emux-synth snd_emux_free 0x9db1ced3 +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0x836f5ddd +sound/synth/emux/snd-emux-synth snd_emux_new 0x524b305c +sound/synth/emux/snd-emux-synth snd_emux_register 0xc1b94e4c +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0x19092157 +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0x481f2562 +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0x6659fbd6 +sound/synth/snd-util-mem __snd_util_mem_free 0xfb3d3b53 +sound/synth/snd-util-mem __snd_util_memblk_new 0x8817e75e +sound/synth/snd-util-mem snd_util_mem_alloc 0x1423e860 +sound/synth/snd-util-mem snd_util_mem_avail 0x7b8b6a47 +sound/synth/snd-util-mem snd_util_mem_free 0x742d3d00 +sound/synth/snd-util-mem snd_util_memhdr_free 0x5de0b4fb +sound/synth/snd-util-mem snd_util_memhdr_new 0x47ac597a +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0x987f34d5 +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux EISA_bus 0x7413793a +vmlinux IO_APIC_get_PCI_irq_vector 0x1eb922a3 +vmlinux I_BDEV 0x381c7892 +vmlinux MCA_bus 0xf48a2c4c +vmlinux SELECT_DRIVE 0x710d6fe2 +vmlinux __PAGE_KERNEL 0x95cc2139 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0xf55e73b6 +vmlinux __alloc_pages 0xa5f96140 +vmlinux __alloc_percpu 0x50c89f23 +vmlinux __alloc_skb 0xbb021f44 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0x861b0081 +vmlinux __bio_clone 0x05649d4a +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0x30aafa96 +vmlinux __bread 0x7552254f +vmlinux __breadahead 0xf3c9ed5f +vmlinux __break_lease 0x7fe05da1 +vmlinux __brelse 0x2963d93e +vmlinux __check_region 0xf1d0cdab +vmlinux __clear_user 0x2455c156 +vmlinux __const_udelay 0xeae3dfd6 +vmlinux __copy_from_user_ll 0x1af40e18 +vmlinux __copy_to_user_ll 0xd7474566 +vmlinux __cpufreq_driver_target 0xd7d26fb6 +vmlinux __create_workqueue 0xc75478a9 +vmlinux __d_path 0xd3ff3614 +vmlinux __delay 0x466c14a7 +vmlinux __dev_get_by_index 0x3f54b7a9 +vmlinux __dev_get_by_name 0xe32ff9f2 +vmlinux __dev_remove_pack 0x02c59538 +vmlinux __down_failed 0x96b27088 +vmlinux __down_failed_interruptible 0x625acc81 +vmlinux __down_failed_trylock 0x02cd3086 +vmlinux __dst_free 0x87088bcf +vmlinux __elv_add_request 0xed737371 +vmlinux __find_get_block 0xe9084505 +vmlinux __free_pages 0x47d34c24 +vmlinux __generic_file_aio_read 0x9dae246e +vmlinux __generic_unplug_device 0x38172383 +vmlinux __get_free_pages 0x107d6ba3 +vmlinux __get_user_1 0xd16ac615 +vmlinux __get_user_2 0x4888a014 +vmlinux __get_user_4 0xa03d6a57 +vmlinux __getblk 0x50291287 +vmlinux __ide_abort 0x15aa6569 +vmlinux __ide_dma_bad_drive 0x6333a449 +vmlinux __ide_dma_check 0xa30373df +vmlinux __ide_dma_end 0x8ef7c1c1 +vmlinux __ide_dma_good_drive 0x29389648 +vmlinux __ide_dma_host_off 0x63c64f2b +vmlinux __ide_dma_host_on 0xe6c2b0ab +vmlinux __ide_dma_lostirq 0x866d612b +vmlinux __ide_dma_off 0x5a26d919 +vmlinux __ide_dma_off_quietly 0x7a10ce68 +vmlinux __ide_dma_on 0x05e74048 +vmlinux __ide_dma_timeout 0x4023f6b2 +vmlinux __ide_end_request 0x15aaa8e6 +vmlinux __ide_error 0x8565b54e +vmlinux __ide_pci_register_driver 0x131e1900 +vmlinux __inet_lookup_listener 0x0ba62a0c +vmlinux __inet_twsk_hashdance 0xf9c9f561 +vmlinux __inet_twsk_kill 0x754ce6e4 +vmlinux __init_timer_base 0x049a5196 +vmlinux __inode_dir_notify 0x3e8dbc9b +vmlinux __insert_inode_hash 0x7bebfb83 +vmlinux __invalidate_device 0x4f7b2125 +vmlinux __ioremap 0x9eac042a +vmlinux __ip_route_output_key 0x7d414efd +vmlinux __ip_select_ident 0x30216501 +vmlinux __kfifo_get 0x07527e0d +vmlinux __kfifo_put 0x7c775173 +vmlinux __kfree_skb 0xdfd8711b +vmlinux __kill_fasync 0xe9f25852 +vmlinux __kmalloc 0x12da5bb2 +vmlinux __lock_buffer 0x7a68d544 +vmlinux __lock_page 0x7bf3fb55 +vmlinux __mark_inode_dirty 0x593092e1 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xbffc0a90 +vmlinux __module_put_and_exit 0xdf830fe1 +vmlinux __ndelay 0xdf8c695a +vmlinux __neigh_event_send 0xbeaab5ec +vmlinux __neigh_for_each_release 0xa71a0699 +vmlinux __net_timestamp 0x0c6daa03 +vmlinux __netdev_watchdog_up 0xe95d0c76 +vmlinux __nla_put 0xcd452c5e +vmlinux __nla_reserve 0x15c8de2d +vmlinux __page_cache_release 0x8f04da43 +vmlinux __pagevec_lru_add 0x85d36335 +vmlinux __pagevec_release 0x5ea6e14a +vmlinux __pci_register_driver 0x2efe1eb7 +vmlinux __per_cpu_offset 0x7ecb001b +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0x752205b1 +vmlinux __put_user_1 0xc3aaf0a9 +vmlinux __put_user_2 0x5a4896a8 +vmlinux __put_user_4 0xb2fd5ceb +vmlinux __put_user_8 0xb8e7ce2c +vmlinux __read_lock_failed 0x1cb5d230 +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0x59015ddc +vmlinux __scm_destroy 0x87929023 +vmlinux __scm_send 0x7aefd091 +vmlinux __secpath_destroy 0xcedbb246 +vmlinux __serio_register_driver 0x879da9df +vmlinux __serio_register_port 0xe8366ffe +vmlinux __serio_unregister_port_delayed 0x7477180a +vmlinux __set_page_dirty_buffers 0x8fe92e44 +vmlinux __set_page_dirty_nobuffers 0x0f3769ef +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x0a598f2d +vmlinux __skb_checksum_complete 0x8c43836b +vmlinux __skb_linearize 0xaf61f7bc +vmlinux __strncpy_from_user 0x9a78a84c +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x60ea5fe7 +vmlinux __tasklet_schedule 0xed5c73bf +vmlinux __tcf_em_tree_match 0xcc8b92ed +vmlinux __udelay 0x9e7d6bd0 +vmlinux __up_wakeup 0x60a4461c +vmlinux __user_walk 0xc76f6d8a +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8b8a3dc3 +vmlinux __vmalloc_node 0x611804f2 +vmlinux __wait_on_bit 0x3d005ce5 +vmlinux __wait_on_bit_lock 0x2a4437e4 +vmlinux __wait_on_buffer 0xd786eeb6 +vmlinux __wake_up 0x59968f3c +vmlinux __wake_up_bit 0x8d33e597 +vmlinux __wake_up_sync 0x76f861b3 +vmlinux __write_lock_failed 0xcb612803 +vmlinux __xfrm_policy_check 0x35da8be9 +vmlinux __xfrm_policy_destroy 0x4e3204e9 +vmlinux __xfrm_route_forward 0xd3b0102b +vmlinux __xfrm_state_destroy 0x2efb31ac +vmlinux _atomic_dec_and_lock 0x16250200 +vmlinux _ctype 0x8d3894f2 +vmlinux _read_lock 0x3d7c39ea +vmlinux _read_lock_bh 0x21968b7f +vmlinux _read_lock_irq 0x5a0e1e92 +vmlinux _read_lock_irqsave 0x0496a442 +vmlinux _read_trylock 0xd344122c +vmlinux _read_unlock 0x26ab7baa +vmlinux _read_unlock_bh 0x8bf46c54 +vmlinux _read_unlock_irq 0xf6188535 +vmlinux _read_unlock_irqrestore 0x553d0022 +vmlinux _spin_lock 0x1bcd461f +vmlinux _spin_lock_bh 0x6943ea4b +vmlinux _spin_lock_irq 0x45c077f2 +vmlinux _spin_lock_irqsave 0x87cddf59 +vmlinux _spin_trylock 0x7e3f931f +vmlinux _spin_trylock_bh 0xc6bf4844 +vmlinux _spin_unlock 0x36439527 +vmlinux _spin_unlock_bh 0xe32e66b5 +vmlinux _spin_unlock_irq 0x1f4fc565 +vmlinux _spin_unlock_irqrestore 0x0a20fdde +vmlinux _write_lock 0x4b05104f +vmlinux _write_lock_bh 0x93ba42f1 +vmlinux _write_lock_irq 0x50bc9c7c +vmlinux _write_lock_irqsave 0x3093180f +vmlinux _write_trylock 0xaf397768 +vmlinux _write_unlock 0xb769dd13 +vmlinux _write_unlock_bh 0xcc4c11a9 +vmlinux _write_unlock_irq 0x3553b3e9 +vmlinux _write_unlock_irqrestore 0x52c0a61d +vmlinux acpi_acquire_global_lock 0x70d8ab82 +vmlinux acpi_bus_add 0xdab6faab +vmlinux acpi_bus_generate_event 0xaede2f1d +vmlinux acpi_bus_get_device 0x75fb3244 +vmlinux acpi_bus_get_power 0x7389c9a8 +vmlinux acpi_bus_get_status 0x89f400ff +vmlinux acpi_bus_receive_event 0x141dbf9b +vmlinux acpi_bus_register_driver 0x0eced723 +vmlinux acpi_bus_set_power 0xcb733bf2 +vmlinux acpi_bus_start 0x49d0cfcd +vmlinux acpi_bus_unregister_driver 0x366a9cdd +vmlinux acpi_clear_event 0x0fd00a68 +vmlinux acpi_dbg_layer 0xb3284531 +vmlinux acpi_dbg_level 0xca8acc78 +vmlinux acpi_disable_event 0xb758b225 +vmlinux acpi_disabled 0x1a45cb6c +vmlinux acpi_ec_read 0x0dd1015f +vmlinux acpi_ec_write 0xa2bb10ba +vmlinux acpi_enable_event 0x6237f6b5 +vmlinux acpi_enable_gpe 0xf47d47e0 +vmlinux acpi_enter_sleep_state 0xb077ef32 +vmlinux acpi_enter_sleep_state_s4bios 0xa5da0abd +vmlinux acpi_evaluate_integer 0x1807e38b +vmlinux acpi_evaluate_object 0xd0470c98 +vmlinux acpi_evaluate_reference 0xc899f5f6 +vmlinux acpi_extract_package 0xe93cc1b3 +vmlinux acpi_fadt 0xddcb58d9 +vmlinux acpi_fadt_is_v1 0x01438985 +vmlinux acpi_get_child 0xda268faa +vmlinux acpi_get_current_resources 0xcf47e392 +vmlinux acpi_get_devices 0xee46feef +vmlinux acpi_get_firmware_table 0x5331e1b5 +vmlinux acpi_get_handle 0x2bfeb410 +vmlinux acpi_get_name 0xca6c95f8 +vmlinux acpi_get_next_object 0x170c25ee +vmlinux acpi_get_object_info 0x96f929e9 +vmlinux acpi_get_parent 0xfb0443fb +vmlinux acpi_get_pci_id 0x058c75d9 +vmlinux acpi_get_pci_rootbridge_handle 0x1f8ec1b3 +vmlinux acpi_get_physical_device 0x7871f53d +vmlinux acpi_get_register 0x2b5d6f73 +vmlinux acpi_get_sleep_type_data 0x8d8d96c6 +vmlinux acpi_get_table 0x2eb2eb15 +vmlinux acpi_get_type 0x0d3dda14 +vmlinux acpi_in_suspend 0xf78a658e +vmlinux acpi_install_address_space_handler 0xff03752f +vmlinux acpi_install_fixed_event_handler 0x5ac376a5 +vmlinux acpi_install_gpe_block 0xda8ddbdf +vmlinux acpi_install_gpe_handler 0x02aff2f4 +vmlinux acpi_install_notify_handler 0xd9091363 +vmlinux acpi_map_lsapic 0xda0a6b0e +vmlinux acpi_os_create_semaphore 0x9f8733e2 +vmlinux acpi_os_delete_semaphore 0xe65a005c +vmlinux acpi_os_free 0x43b9bbb4 +vmlinux acpi_os_printf 0x667cecc9 +vmlinux acpi_os_queue_for_execution 0xdb9d67ff +vmlinux acpi_os_read_pci_configuration 0xd94c1770 +vmlinux acpi_os_read_port 0x54935666 +vmlinux acpi_os_signal 0x874aea72 +vmlinux acpi_os_signal_semaphore 0x8cdbc08d +vmlinux acpi_os_sleep 0x540f9040 +vmlinux acpi_os_stall 0x69005013 +vmlinux acpi_os_wait_events_complete 0xc9ab2eef +vmlinux acpi_os_wait_semaphore 0x2565a159 +vmlinux acpi_os_write_port 0x99052a84 +vmlinux acpi_pci_irq_enable 0xdee3662a +vmlinux acpi_pci_register_driver 0xd1472061 +vmlinux acpi_pci_unregister_driver 0x43385ad9 +vmlinux acpi_processor_power_init_bm_check 0xfdce9842 +vmlinux acpi_register_gsi 0x36d5355b +vmlinux acpi_register_ioapic 0x636a5691 +vmlinux acpi_release_global_lock 0x3e2ae3a8 +vmlinux acpi_remove_address_space_handler 0xfcfaa928 +vmlinux acpi_remove_fixed_event_handler 0x2005e68a +vmlinux acpi_remove_gpe_block 0x8e002cda +vmlinux acpi_remove_gpe_handler 0xb07dfb3d +vmlinux acpi_remove_notify_handler 0x2bb55d6e +vmlinux acpi_resource_to_address64 0x263b54cc +vmlinux acpi_root_dir 0xb9278294 +vmlinux acpi_set_current_resources 0x45bb0352 +vmlinux acpi_set_gpe_type 0xa3bbcd80 +vmlinux acpi_set_register 0x4a9d86e3 +vmlinux acpi_specific_hotkey_enabled 0x46621493 +vmlinux acpi_strict 0xa59c0666 +vmlinux acpi_unmap_lsapic 0xd18b6eb2 +vmlinux acpi_unregister_ioapic 0xe716baed +vmlinux acpi_walk_namespace 0x19d5d20a +vmlinux acpi_walk_resources 0x375c5115 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0x1b54bcfe +vmlinux add_disk_randomness 0x24734a9f +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0x3e0d00ac +vmlinux add_wait_queue 0xa3d44f8c +vmlinux add_wait_queue_exclusive 0x771dc9e2 +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0xb4d57c33 +vmlinux aio_put_req 0xb1e13a4a +vmlinux alloc_buffer_head 0x7b899cca +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0x9a0283c5 +vmlinux alloc_disk_node 0xe8548644 +vmlinux alloc_etherdev 0x3157db67 +vmlinux alloc_fcdev 0xbe59319a +vmlinux alloc_fddidev 0xe94cd44f +vmlinux alloc_hippi_dev 0x39e92d17 +vmlinux alloc_netdev 0x84c63b30 +vmlinux alloc_page_buffers 0xa2bca11d +vmlinux alloc_trdev 0x5014b604 +vmlinux alloc_tty_driver 0x035f6add +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0x00899595 +vmlinux anon_transport_class_unregister 0x19b0fe5e +vmlinux apm_info 0x1d40ed44 +vmlinux arch_acpi_processor_init_pdc 0xad25c01d +vmlinux arch_register_cpu 0x2dd16564 +vmlinux arch_unregister_cpu 0x0237b57a +vmlinux arp_broken_ops 0x83748ee1 +vmlinux arp_create 0x7a5f0099 +vmlinux arp_find 0x01ccaf29 +vmlinux arp_rcv 0x06bea935 +vmlinux arp_send 0xea30e2ad +vmlinux arp_tbl 0x7d34b245 +vmlinux arp_xmit 0xaa4c874c +vmlinux atm_alloc_charge 0xd05ea689 +vmlinux atm_charge 0x2daf32a5 +vmlinux atm_dev_deregister 0x70b42be0 +vmlinux atm_dev_lookup 0x864fdeec +vmlinux atm_dev_register 0x3aef3d8c +vmlinux atm_init_aal5 0x02f52a8a +vmlinux atm_pcr_goal 0xf49bc67a +vmlinux atm_proc_root 0x112f746a +vmlinux attribute_container_add_attrs 0x56d6ccb4 +vmlinux attribute_container_add_class_device 0xc15a8318 +vmlinux attribute_container_add_class_device_adapter 0x060e62ff +vmlinux attribute_container_class_device_del 0x9b2570e6 +vmlinux attribute_container_classdev_to_container 0xbc1ef755 +vmlinux attribute_container_device_trigger 0xecd7c109 +vmlinux attribute_container_find_class_device 0x3fde1e65 +vmlinux attribute_container_register 0xbe21245c +vmlinux attribute_container_remove_attrs 0x1d9ef4dc +vmlinux attribute_container_remove_device 0x785833ca +vmlinux attribute_container_trigger 0xc95037f7 +vmlinux attribute_container_unregister 0x0eec6a69 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x15a32621 +vmlinux bd_claim 0xd00ed56e +vmlinux bd_release 0x77f3cc05 +vmlinux bd_set_size 0x185e5911 +vmlinux bdev_read_only 0xa885bed8 +vmlinux bdevname 0x1ca6fbcd +vmlinux bdget 0xa2561083 +vmlinux bdput 0x95b7cc53 +vmlinux bfifo_qdisc_ops 0xdcb6df57 +vmlinux bio_add_page 0x30d4bb33 +vmlinux bio_alloc 0xbd95870b +vmlinux bio_alloc_bioset 0xd77845ab +vmlinux bio_clone 0x8b2fa3c3 +vmlinux bio_copy_user 0xf176bcf3 +vmlinux bio_endio 0x48ecff43 +vmlinux bio_free 0x0a3960e6 +vmlinux bio_get_nr_vecs 0x71182d9c +vmlinux bio_hw_segments 0xc8719f55 +vmlinux bio_init 0xa666c9a1 +vmlinux bio_map_kern 0x5b1ff224 +vmlinux bio_map_user 0xc74a81ce +vmlinux bio_pair_release 0x4f0c4ab1 +vmlinux bio_phys_segments 0x82556d21 +vmlinux bio_put 0x2a7f2f37 +vmlinux bio_split 0x23a6bb8c +vmlinux bio_split_pool 0x2146f99f +vmlinux bio_uncopy_user 0x201d5b87 +vmlinux bio_unmap_user 0x2c5d1d89 +vmlinux bioset_create 0x68c208d9 +vmlinux bioset_free 0x35146399 +vmlinux bit_waitqueue 0xd6ae596d +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0x3c207ee5 +vmlinux blk_alloc_queue_node 0x030e03fa +vmlinux blk_cleanup_queue 0x5752ae4a +vmlinux blk_complete_barrier_rq 0x5de1dd34 +vmlinux blk_complete_barrier_rq_locked 0xa54bb6ae +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x2286cb1f +vmlinux blk_end_sync_rq 0x62d43fad +vmlinux blk_execute_rq 0x149663d6 +vmlinux blk_get_backing_dev_info 0x803d9259 +vmlinux blk_get_queue 0xe31e93c8 +vmlinux blk_get_request 0x57662f3f +vmlinux blk_init_queue 0x7de9490e +vmlinux blk_init_queue_node 0xf59765da +vmlinux blk_insert_request 0xe6eaada2 +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0x73759fcc +vmlinux blk_put_request 0x6adffc30 +vmlinux blk_queue_activity_fn 0x828358e4 +vmlinux blk_queue_bounce 0x4d0fd97a +vmlinux blk_queue_bounce_limit 0x3a2fee43 +vmlinux blk_queue_dma_alignment 0x9f5ba7d2 +vmlinux blk_queue_end_tag 0x54284257 +vmlinux blk_queue_find_tag 0x12726680 +vmlinux blk_queue_free_tags 0xfe92b89f +vmlinux blk_queue_hardsect_size 0x401821bc +vmlinux blk_queue_init_tags 0x39bddf01 +vmlinux blk_queue_invalidate_tags 0xa0381bc6 +vmlinux blk_queue_issue_flush_fn 0x313d77e4 +vmlinux blk_queue_make_request 0xa4a234c5 +vmlinux blk_queue_max_hw_segments 0x82dd8b26 +vmlinux blk_queue_max_phys_segments 0x45a496c1 +vmlinux blk_queue_max_sectors 0xc88ba9fd +vmlinux blk_queue_max_segment_size 0xe9c326de +vmlinux blk_queue_merge_bvec 0x64566f74 +vmlinux blk_queue_ordered 0x56dab2e4 +vmlinux blk_queue_prep_rq 0x81cb0e9e +vmlinux blk_queue_resize_tags 0x4f0f5284 +vmlinux blk_queue_segment_boundary 0x10078aae +vmlinux blk_queue_stack_limits 0x4e6dd159 +vmlinux blk_queue_start_tag 0xd99d7971 +vmlinux blk_register_region 0x9454229f +vmlinux blk_remove_plug 0x9cbb23ed +vmlinux blk_requeue_request 0xf505ed2c +vmlinux blk_rq_bio_prep 0xbe3714e7 +vmlinux blk_rq_map_kern 0xe311c60a +vmlinux blk_rq_map_sg 0x445d27a6 +vmlinux blk_rq_map_user 0x1fb25c5c +vmlinux blk_rq_map_user_iov 0x8add3423 +vmlinux blk_rq_unmap_user 0x36c39b79 +vmlinux blk_run_queue 0x08760eb2 +vmlinux blk_start_queue 0x60fb9564 +vmlinux blk_stop_queue 0xa632a83c +vmlinux blk_sync_queue 0x6ef7e265 +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0x1a4536ab +vmlinux blkdev_ioctl 0x51e7de95 +vmlinux blkdev_issue_flush 0x1ddd581b +vmlinux blkdev_put 0x413f974f +vmlinux block_all_signals 0x4b34fbf5 +vmlinux block_commit_write 0x75c5a140 +vmlinux block_invalidatepage 0x4b1c2a6d +vmlinux block_prepare_write 0xa3937e93 +vmlinux block_read_full_page 0x6a0a8f58 +vmlinux block_sync_page 0x877384d8 +vmlinux block_truncate_page 0x2d5894e7 +vmlinux block_write_full_page 0x91a4f64b +vmlinux bmap 0x6590dea2 +vmlinux boot_cpu_data 0xeacf98c5 +vmlinux boot_option_idle_override 0xef9aedfc +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0x87bbc29e +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0x9105d47d +vmlinux bus_create_file 0x1f2e9a35 +vmlinux bus_find_device 0x977e66d7 +vmlinux bus_for_each_dev 0xbc6a4c92 +vmlinux bus_for_each_drv 0x4242381d +vmlinux bus_register 0x419fa305 +vmlinux bus_remove_device 0xa80dcdc2 +vmlinux bus_remove_file 0x18e23b1d +vmlinux bus_rescan_devices 0x48cc3c27 +vmlinux bus_unregister 0x043915b9 +vmlinux call_rcu 0x8706fba7 +vmlinux call_rcu_bh 0xc329096e +vmlinux call_usermodehelper_keys 0xc85e81ec +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x8756724b +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x3ae9a39c +vmlinux cdev_alloc 0xbd1e1e21 +vmlinux cdev_del 0x0e047c31 +vmlinux cdev_init 0x234172f7 +vmlinux cfb_copyarea 0x582b9dfe +vmlinux cfb_fillrect 0x91cb4400 +vmlinux cfb_imageblit 0xa4871967 +vmlinux change_page_attr 0x266797e2 +vmlinux check_disk_change 0xd3bebfbc +vmlinux class_create 0xed06748d +vmlinux class_create_file 0x82c59649 +vmlinux class_destroy 0xd4d7c0f9 +vmlinux class_device_add 0xe0efa9be +vmlinux class_device_create 0x7bec4591 +vmlinux class_device_create_bin_file 0xd75aa802 +vmlinux class_device_create_file 0xfe76bf80 +vmlinux class_device_del 0x83f23a39 +vmlinux class_device_destroy 0x00520587 +vmlinux class_device_get 0xff42fd90 +vmlinux class_device_initialize 0x29f68e14 +vmlinux class_device_put 0x937f3a65 +vmlinux class_device_register 0xa1763b1c +vmlinux class_device_remove_bin_file 0x13513a5e +vmlinux class_device_remove_file 0xd1b5841e +vmlinux class_device_unregister 0x2aa531e5 +vmlinux class_get 0x63616234 +vmlinux class_interface_register 0x939ee3a5 +vmlinux class_interface_unregister 0xe2a40e5d +vmlinux class_put 0x47f1b609 +vmlinux class_register 0xb2bbc07c +vmlinux class_remove_file 0x042e9767 +vmlinux class_unregister 0xc889cae6 +vmlinux clear_inode 0xa611d2f5 +vmlinux clear_page_dirty_for_io 0x5e599aaf +vmlinux clear_user 0x7da99cdd +vmlinux clip_tbl_hook 0x007a7a52 +vmlinux close_bdev_excl 0x0e7a1d90 +vmlinux cmos_lock 0x9a6a83f9 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0x7e0221e4 +vmlinux complete_all 0x2dbbdd68 +vmlinux complete_and_exit 0xfd59d987 +vmlinux compute_creds 0x4f1917ed +vmlinux con_copy_unimap 0xcc56fc43 +vmlinux con_set_default_unimap 0x70b6cc56 +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0x5f0c5570 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0xa8f1aafd +vmlinux console_stop 0x75c1e208 +vmlinux cont_prepare_write 0xfca567fd +vmlinux contig_page_data 0xb0c64602 +vmlinux copy_from_user 0xf2a644fb +vmlinux copy_fs_struct 0xd4e887fb +vmlinux copy_io_context 0xa4c3d3d7 +vmlinux copy_strings_kernel 0xa3653127 +vmlinux copy_to_user 0x2da418b5 +vmlinux cpu_callout_map 0x6122a73e +vmlinux cpu_core_map 0x4a63a4a0 +vmlinux cpu_data 0x280de8fd +vmlinux cpu_gdt_descr 0x17e523c4 +vmlinux cpu_idle_wait 0xb53ae573 +vmlinux cpu_khz 0xd6b33026 +vmlinux cpu_online_map 0x8df9f666 +vmlinux cpu_possible_map 0xe1e774bc +vmlinux cpu_present_map 0x56c5486e +vmlinux cpu_sibling_map 0x2cfcba0a +vmlinux cpu_sysdev_class 0x9d88d5c6 +vmlinux cpufreq_cpu_get 0x4dc1a202 +vmlinux cpufreq_cpu_put 0xc399f7a6 +vmlinux cpufreq_driver_target 0x37bc5ce9 +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0xe06186de +vmlinux cpufreq_gov_performance 0xa43404d3 +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0xe6488b47 +vmlinux cpufreq_parse_governor 0xcf6e780e +vmlinux cpufreq_register_driver 0xc0f50c89 +vmlinux cpufreq_register_governor 0x358c3e75 +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0xfcc932e9 +vmlinux cpufreq_unregister_driver 0xbd92252c +vmlinux cpufreq_unregister_governor 0xcef1a857 +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0xb7b61546 +vmlinux crc32_le 0xa34f1ef5 +vmlinux create_empty_buffers 0x671b05f7 +vmlinux create_proc_entry 0x1b75d95d +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0x898adc88 +vmlinux crypto_free_tfm 0x5be0e6f0 +vmlinux crypto_hmac 0x56705515 +vmlinux crypto_hmac_final 0xbf311c1d +vmlinux crypto_hmac_init 0x4491dbc1 +vmlinux crypto_hmac_update 0xb936d5eb +vmlinux crypto_register_alg 0xd81c033e +vmlinux crypto_unregister_alg 0xdee51af0 +vmlinux csum_partial 0x9a3de8f8 +vmlinux csum_partial_copy_fromiovecend 0x02876657 +vmlinux csum_partial_copy_generic 0xd7359fa8 +vmlinux current_fs_time 0xbe662ef7 +vmlinux current_io_context 0x94c79532 +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0xddadaf7e +vmlinux d_alloc_anon 0x9b571fed +vmlinux d_alloc_name 0xacde5076 +vmlinux d_alloc_root 0xad8339cb +vmlinux d_delete 0xb9199f91 +vmlinux d_find_alias 0xf9a2750c +vmlinux d_genocide 0x4628343c +vmlinux d_instantiate 0xaab799b0 +vmlinux d_instantiate_unique 0x02252605 +vmlinux d_invalidate 0xee1f4574 +vmlinux d_lookup 0x7ef6734d +vmlinux d_move 0xded22b0b +vmlinux d_path 0xbe74807f +vmlinux d_prune_aliases 0x941e4e4b +vmlinux d_rehash 0xa8281ac5 +vmlinux d_splice_alias 0x6aa3ca75 +vmlinux d_validate 0x274bef0b +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0xb35eabc6 +vmlinux dcache_dir_close 0xde6fdba0 +vmlinux dcache_dir_lseek 0xaa816767 +vmlinux dcache_dir_open 0x54c9aaba +vmlinux dcache_lock 0x179ec4b8 +vmlinux dcache_readdir 0x80ddcd94 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0x36f403dc +vmlinux default_backing_dev_info 0x2a534296 +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0xc94dc948 +vmlinux default_idle 0x92897e3d +vmlinux default_llseek 0x2ba0c2be +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x320caf90 +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0xc27dbcd3 +vmlinux del_timer 0x5943d3e7 +vmlinux del_timer_sync 0x594eac68 +vmlinux dentry_open 0xd0c45523 +vmlinux dentry_unhash 0x0a8b2e28 +vmlinux dequeue_signal 0xf80b9799 +vmlinux deregister_atm_ioctl 0xcd2e5eac +vmlinux destroy_8023_client 0x826068f6 +vmlinux destroy_EII_client 0xd7386a6b +vmlinux destroy_workqueue 0x21db6958 +vmlinux dev_add_pack 0xc335802b +vmlinux dev_alloc_name 0x68bd9494 +vmlinux dev_base 0x3babd386 +vmlinux dev_base_lock 0x01ab0f38 +vmlinux dev_change_flags 0xf622327b +vmlinux dev_close 0xf75ff2e6 +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0x5fa5209d +vmlinux dev_get_by_index 0x9e0473a9 +vmlinux dev_get_by_name 0x9ab4fcbb +vmlinux dev_get_flags 0x13a84692 +vmlinux dev_getbyhwaddr 0x0004048c +vmlinux dev_getfirstbyhwtype 0xc0f404ff +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0xf7791088 +vmlinux dev_mc_delete 0xe840d6bd +vmlinux dev_mc_upload 0xc433f6da +vmlinux dev_open 0x6cedb683 +vmlinux dev_queue_xmit 0xdca891e5 +vmlinux dev_remove_pack 0xb2a9cc90 +vmlinux dev_set_allmulti 0xa0286504 +vmlinux dev_set_mac_address 0xd9b7c3e5 +vmlinux dev_set_mtu 0x11ecea3b +vmlinux dev_set_promiscuity 0x1d3aa4a6 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0xeb8651bd +vmlinux device_attach 0xdfaf3b22 +vmlinux device_bind_driver 0x236ed40c +vmlinux device_create_file 0x99098911 +vmlinux device_del 0x1fa832c1 +vmlinux device_for_each_child 0x43fb3be8 +vmlinux device_initialize 0x42fec2b3 +vmlinux device_pm_set_parent 0xa9acd752 +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0xc9f685ac +vmlinux device_release_driver 0x5f20489f +vmlinux device_remove_file 0xf120e0c3 +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0x47c46da9 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0x9d254509 +vmlinux disable_hlt 0x794487ee +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disable_timer_nmi_watchdog 0xf2fb62ee +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_alloc_coherent 0x7299ef71 +vmlinux dma_declare_coherent_memory 0xafed8529 +vmlinux dma_free_coherent 0x48303b84 +vmlinux dma_get_required_mask 0x92edc57d +vmlinux dma_mark_declared_memory_occupied 0x02226d80 +vmlinux dma_pool_alloc 0x32ed69a2 +vmlinux dma_pool_create 0x5062d2a7 +vmlinux dma_pool_destroy 0x0759a185 +vmlinux dma_pool_free 0x04ef3210 +vmlinux dma_release_declared_memory 0x0f01db27 +vmlinux dma_spin_lock 0x028d62f7 +vmlinux dmi_check_system 0xf5633477 +vmlinux dmi_find_device 0xfe7bde5e +vmlinux dmi_get_system_info 0x6a5b6ea4 +vmlinux dnotify_parent 0x605d8566 +vmlinux do_SAK 0x1c9b65ff +vmlinux do_add_mount 0x84005d31 +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x7ea7d551 +vmlinux do_generic_mapping_read 0x2b50a0c2 +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0xa4e218d1 +vmlinux do_mmap_pgoff 0x6a636d06 +vmlinux do_munmap 0x28e0406c +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0xf4444751 +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0xf0a529b7 +vmlinux do_sync_read 0xf9b1880d +vmlinux do_sync_write 0x634ae6da +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0x1862ade6 +vmlinux dput 0xe5ccfefa +vmlinux dq_data_lock 0x22ca4cc3 +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x80f5f56c +vmlinux dquot_alloc_inode 0xfcc9933e +vmlinux dquot_alloc_space 0xf34a6e2c +vmlinux dquot_commit 0x3a987cbe +vmlinux dquot_commit_info 0xcc3a3711 +vmlinux dquot_drop 0x8ff8e400 +vmlinux dquot_free_inode 0x7441e0fa +vmlinux dquot_free_space 0xd024ea51 +vmlinux dquot_initialize 0xdcd37b56 +vmlinux dquot_mark_dquot_dirty 0xde657826 +vmlinux dquot_release 0x219b04d1 +vmlinux dquot_transfer 0x8fd8cfea +vmlinux drive_info 0x5aaa7cd3 +vmlinux drive_is_ready 0x00161aff +vmlinux driver_attach 0x4e8ad559 +vmlinux driver_create_file 0x4cb0ff4b +vmlinux driver_find 0x6f9f726b +vmlinux driver_find_device 0x65c5c023 +vmlinux driver_for_each_device 0x44445303 +vmlinux driver_register 0x5de7d716 +vmlinux driver_remove_file 0x6d54212c +vmlinux driver_unregister 0xb0e30139 +vmlinux drop_super 0xc220282d +vmlinux dst_alloc 0x3924c7e1 +vmlinux dst_destroy 0xc7cc7e87 +vmlinux dump_fpu 0xf7e7d3e6 +vmlinux dump_stack 0x6b2dc060 +vmlinux dump_thread 0xae90b20c +vmlinux ec_read 0xba2d8594 +vmlinux ec_write 0x876dafc3 +vmlinux edid_info 0xbbb98859 +vmlinux efi 0x4f1b2bc8 +vmlinux efi_enabled 0x0933aae1 +vmlinux eighty_ninty_three 0x7ffd381d +vmlinux eisa_bus_type 0xd60cca39 +vmlinux eisa_driver_register 0x151d7157 +vmlinux eisa_driver_unregister 0x6314272e +vmlinux elevator_exit 0x3d65568b +vmlinux elevator_init 0xe60d16b3 +vmlinux elv_add_request 0x49b1d6f6 +vmlinux elv_completed_request 0x54c82f27 +vmlinux elv_dequeue_request 0x13e5cfb7 +vmlinux elv_dispatch_sort 0xd1ac245d +vmlinux elv_next_request 0x3dacda26 +vmlinux elv_queue_empty 0x3a431de8 +vmlinux elv_register 0x2fc70c9f +vmlinux elv_requeue_request 0xd2a324c8 +vmlinux elv_rq_merge_ok 0x295f09f8 +vmlinux elv_try_merge 0xe7bfdaf9 +vmlinux elv_unregister 0x086c747c +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_hlt 0x9c7077bd +vmlinux enable_irq 0xfcec0987 +vmlinux enable_timer_nmi_watchdog 0x13f54343 +vmlinux end_buffer_async_write 0x9901f70d +vmlinux end_buffer_read_sync 0x855664b8 +vmlinux end_buffer_write_sync 0xa16402cd +vmlinux end_page_writeback 0x884163a2 +vmlinux end_request 0xfee0048f +vmlinux end_that_request_chunk 0x1b4d656d +vmlinux end_that_request_first 0xda2d0425 +vmlinux end_that_request_last 0x3df95948 +vmlinux eth_type_trans 0x6880a553 +vmlinux ether_setup 0xd3f2b59a +vmlinux ethtool_op_get_link 0x2ab9626c +vmlinux ethtool_op_get_perm_addr 0x20e9a21b +vmlinux ethtool_op_get_sg 0x1560a3a8 +vmlinux ethtool_op_get_tso 0xc7356dec +vmlinux ethtool_op_get_tx_csum 0x4880fff3 +vmlinux ethtool_op_get_ufo 0x2d5d894c +vmlinux ethtool_op_set_sg 0x53da1230 +vmlinux ethtool_op_set_tso 0x13d01618 +vmlinux ethtool_op_set_tx_csum 0x623b8e35 +vmlinux ethtool_op_set_tx_hw_csum 0x6381b2f8 +vmlinux ethtool_op_set_ufo 0xbbdcde14 +vmlinux exit_fs 0xe2c60bc8 +vmlinux f_setown 0x7474f0b3 +vmlinux fasync_helper 0x59bf524c +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x4dff32fc +vmlinux fb_con_duit 0xb381ed5b +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0x56686782 +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0x8339f410 +vmlinux fb_get_buffer_offset 0x09b0e71f +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0xdf1ed149 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0x852abbad +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0x84c275a7 +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x6a08cc81 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0xa612fce2 +vmlinux fb_set_suspend 0x83604278 +vmlinux fb_set_var 0xe5beaa7f +vmlinux fb_show_logo 0x039f062d +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x2ad99451 +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fd_install 0xb690fbde +vmlinux fddi_type_trans 0xac85e1cb +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x97a7d39b +vmlinux file_fsync 0x760df94e +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0xd7c5a00e +vmlinux filemap_fdatawait 0x86391075 +vmlinux filemap_fdatawrite 0x82ec1187 +vmlinux filemap_flush 0x526a2a18 +vmlinux filemap_nopage 0x3d7209cc +vmlinux filemap_populate 0x91bb63af +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0x94eccdb9 +vmlinux filp_open 0x74d2daa7 +vmlinux find_bus 0xe6d125a7 +vmlinux find_get_page 0xf655fd94 +vmlinux find_inode_number 0xae650900 +vmlinux find_lock_page 0xc9f58eb6 +vmlinux find_next_bit 0x2ff92ca0 +vmlinux find_next_zero_bit 0xdc01a06e +vmlinux find_or_create_page 0x46a24b3f +vmlinux find_task_by_pid_type 0xca9a74cf +vmlinux find_trylock_page 0x4d900550 +vmlinux find_vma 0x44ac4e97 +vmlinux finish_wait 0x865edc9b +vmlinux firmware_register 0x7ee3aca4 +vmlinux firmware_unregister 0x7523ae01 +vmlinux flock_lock_file_wait 0x126b5da4 +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_old_exec 0xb601c093 +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0xfb77e8a5 +vmlinux flush_tlb_page 0xabee379d +vmlinux flush_workqueue 0xcf283ccb +vmlinux follow_down 0xdd14a426 +vmlinux follow_up 0xef0ef8ee +vmlinux force_sig 0x78feb07b +vmlinux fput 0x2b467429 +vmlinux framebuffer_alloc 0xa09542e9 +vmlinux framebuffer_release 0xa917992f +vmlinux free_buffer_head 0xd5ea2fb5 +vmlinux free_dma 0x72b243d4 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0x608d899e +vmlinux free_pages 0x9941ccb8 +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0xeea1ba55 +vmlinux freeze_bdev 0xe0f278bf +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0xcbd29dcf +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0x0f93d64c +vmlinux gen_replace_estimator 0x46b64038 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x2252f01b +vmlinux generic_block_bmap 0x90223ff3 +vmlinux generic_commit_write 0x5aba8233 +vmlinux generic_cont_expand 0x80188aff +vmlinux generic_delete_inode 0x79718b5c +vmlinux generic_drop_inode 0xa3bdf892 +vmlinux generic_file_aio_read 0xe55ef89f +vmlinux generic_file_aio_write 0x9fa51c26 +vmlinux generic_file_aio_write_nolock 0xd3a94c8b +vmlinux generic_file_buffered_write 0x5f935f6a +vmlinux generic_file_direct_write 0xfd437185 +vmlinux generic_file_llseek 0x1a87e757 +vmlinux generic_file_mmap 0xd3302e8d +vmlinux generic_file_open 0xe4124b1a +vmlinux generic_file_read 0xc9d20d6e +vmlinux generic_file_readonly_mmap 0xf2a78e3c +vmlinux generic_file_readv 0x90348363 +vmlinux generic_file_sendfile 0xb616ca88 +vmlinux generic_file_write 0x62fd13fa +vmlinux generic_file_write_nolock 0x14fb7711 +vmlinux generic_file_writev 0x7b1471cf +vmlinux generic_fillattr 0x6d223582 +vmlinux generic_getxattr 0x3bd2e29d +vmlinux generic_ide_ioctl 0x4292d137 +vmlinux generic_listxattr 0x4a5e3cdd +vmlinux generic_make_request 0x5de75531 +vmlinux generic_osync_inode 0x6064339d +vmlinux generic_permission 0x3fabaefe +vmlinux generic_read_dir 0xda898605 +vmlinux generic_readlink 0x276e49c5 +vmlinux generic_removexattr 0x32fdf005 +vmlinux generic_ro_fops 0x3bcde658 +vmlinux generic_setxattr 0x0d8d523f +vmlinux generic_shutdown_super 0x0b522130 +vmlinux generic_unplug_device 0x977aefc5 +vmlinux generic_write_checks 0x5fb4a749 +vmlinux genl_register_family 0x4ea53e22 +vmlinux genl_register_ops 0x695ae5f8 +vmlinux genl_sock 0xaa6adce4 +vmlinux genl_unregister_family 0x4eddbbbc +vmlinux genl_unregister_ops 0xfcb92f22 +vmlinux get_bus 0xb71c9327 +vmlinux get_cmos_time 0xb31ddfb4 +vmlinux get_cpu_sysdev 0xc5a380c2 +vmlinux get_dcookie 0x8cbdb73e +vmlinux get_device 0xcf6f9550 +vmlinux get_disk 0x8418673b +vmlinux get_driver 0x61e8eaae +vmlinux get_empty_filp 0x5d75ace4 +vmlinux get_fs_type 0xbe13c3ca +vmlinux get_io_context 0x116caeb2 +vmlinux get_jiffies_64 0x37e74642 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0xb7c39cb4 +vmlinux get_sb_nodev 0x2664eda8 +vmlinux get_sb_pseudo 0xfc78ca21 +vmlinux get_sb_single 0xb506cc56 +vmlinux get_super 0x361b4429 +vmlinux get_task_mm 0x951c3728 +vmlinux get_unmapped_area 0x6707306b +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x583cd45e +vmlinux get_wchan 0x31893524 +vmlinux get_write_access 0x3f0f82c6 +vmlinux get_zeroed_page 0x2c2512ea +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x78215f0d +vmlinux global_flush_tlb 0x3167ea19 +vmlinux gnet_stats_copy_app 0x69eced7e +vmlinux gnet_stats_copy_basic 0xe8225dd5 +vmlinux gnet_stats_copy_queue 0x831bd453 +vmlinux gnet_stats_copy_rate_est 0x230d9c16 +vmlinux gnet_stats_finish_copy 0x686b1e25 +vmlinux gnet_stats_start_copy 0x175c6178 +vmlinux gnet_stats_start_copy_compat 0x4c968d31 +vmlinux grab_cache_page_nowait 0x9d4a15cc +vmlinux groups_alloc 0x51cd47e2 +vmlinux groups_free 0x111bcb2c +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0xdbdcc4cf +vmlinux have_submounts 0x0566a2fd +vmlinux high_memory 0x8a7d1c31 +vmlinux hippi_type_trans 0x0e1dcf27 +vmlinux hpet_alloc 0x686f1325 +vmlinux hpet_control 0x1de314f3 +vmlinux hpet_register 0x741f1f6e +vmlinux hpet_unregister 0x63dfe1b4 +vmlinux hwmon_device_register 0x700025c0 +vmlinux hwmon_device_unregister 0x5cc020a1 +vmlinux i8253_lock 0x242c2398 +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x5f29030c +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_acpi_exec_tfs 0x0743411e +vmlinux ide_acpi_get_timing 0x83d03926 +vmlinux ide_acpi_init 0xa62cccca +vmlinux ide_acpi_push_timing 0xc8f46a92 +vmlinux ide_add_setting 0x72e86c62 +vmlinux ide_build_dmatable 0x3f603381 +vmlinux ide_build_sglist 0x697ec0cf +vmlinux ide_bus_type 0xbf52ba06 +vmlinux ide_config_drive_speed 0xdb6d3930 +vmlinux ide_destroy_dmatable 0x71bc61ae +vmlinux ide_dma_enable 0x8ca15d11 +vmlinux ide_dma_intr 0x3bf5a915 +vmlinux ide_dma_setup 0xee80399e +vmlinux ide_dma_speed 0xbca38272 +vmlinux ide_dma_start 0xa544c55b +vmlinux ide_dma_verbose 0xb25ffd47 +vmlinux ide_do_drive_cmd 0xbb9a26bc +vmlinux ide_do_reset 0xc439ef4a +vmlinux ide_dump_status 0x424ab17d +vmlinux ide_end_drive_cmd 0xae101873 +vmlinux ide_end_request 0xbddc6c54 +vmlinux ide_error 0x36dee7fe +vmlinux ide_execute_command 0x79a75b65 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x2f31179e +vmlinux ide_get_error_location 0xbcf29c84 +vmlinux ide_hwifs 0xa99283af +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0xe908a190 +vmlinux ide_init_drive_cmd 0x2ae7f85e +vmlinux ide_init_sg_cmd 0x1334e16b +vmlinux ide_lock 0xb0e42262 +vmlinux ide_map_sg 0xa319e6bf +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0xfe636afe +vmlinux ide_pci_unregister_driver 0x0bd675de +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0x451ffa8c +vmlinux ide_register_hw 0x40933217 +vmlinux ide_register_hw_with_fixup 0xa1789c18 +vmlinux ide_register_region 0x75661fac +vmlinux ide_register_subdriver 0xe08600ad +vmlinux ide_set_handler 0xf61b4602 +vmlinux ide_set_xfer_rate 0xe2548674 +vmlinux ide_setup_dma 0x843a8008 +vmlinux ide_setup_pci_device 0x361e1803 +vmlinux ide_setup_pci_devices 0x75619235 +vmlinux ide_setup_pci_noise 0x5e7281cf +vmlinux ide_spin_wait_hwgroup 0x08678f8e +vmlinux ide_stall_queue 0x05ca3aa9 +vmlinux ide_undecoded_slave 0x6c35ca64 +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0xa74d0537 +vmlinux ide_unregister_subdriver 0x659a4b7f +vmlinux ide_use_dma 0x0b0c9dc5 +vmlinux ide_wait_not_busy 0x86d373e2 +vmlinux ide_wait_stat 0x345bc99d +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0x9dbf1158 +vmlinux idr_find 0xf6a98ae7 +vmlinux idr_get_new 0x2d29e50a +vmlinux idr_get_new_above 0x1421a04c +vmlinux idr_init 0xb6ff27a7 +vmlinux idr_pre_get 0x52a7207f +vmlinux idr_remove 0xa7409aaf +vmlinux iget5_locked 0x848074d7 +vmlinux iget_locked 0xac98a3e5 +vmlinux igrab 0x3720b107 +vmlinux ilookup 0xd683990d +vmlinux ilookup5 0x5c626eb5 +vmlinux ilookup5_nowait 0xd737e54d +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0xc1708f92 +vmlinux in_egroup_p 0xd8a2ab95 +vmlinux in_group_p 0xc3cf1128 +vmlinux in_lock_functions 0x09d44df9 +vmlinux inet6_lookup 0x474583c1 +vmlinux inet6_lookup_listener 0x4b2bc1a1 +vmlinux inet_accept 0xcd17e5bd +vmlinux inet_add_protocol 0x93787a00 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0x0c3e1a45 +vmlinux inet_bind_bucket_create 0xa36f819b +vmlinux inet_bind_hash 0xf1d8aa6e +vmlinux inet_csk_accept 0xfef7abad +vmlinux inet_csk_clear_xmit_timers 0x3284904e +vmlinux inet_csk_clone 0x33b2d61f +vmlinux inet_csk_delete_keepalive_timer 0x44feeb1a +vmlinux inet_csk_destroy_sock 0x201d40cd +vmlinux inet_csk_get_port 0xc16ce78b +vmlinux inet_csk_init_xmit_timers 0x5e65ccb7 +vmlinux inet_csk_listen_start 0x221d6711 +vmlinux inet_csk_listen_stop 0x0b711458 +vmlinux inet_csk_reqsk_queue_hash_add 0x5e835514 +vmlinux inet_csk_reqsk_queue_prune 0x11a399fd +vmlinux inet_csk_reset_keepalive_timer 0xe9b9c7ee +vmlinux inet_csk_route_req 0x1467d1b5 +vmlinux inet_csk_search_req 0x8ec804cb +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0x2a4be09d +vmlinux inet_dgram_connect 0xc00b4a46 +vmlinux inet_dgram_ops 0xdb9614f6 +vmlinux inet_diag_register 0x893499ec +vmlinux inet_diag_unregister 0xf1e49879 +vmlinux inet_getname 0x03e8e128 +vmlinux inet_ioctl 0x4181136a +vmlinux inet_listen 0x3ae4fe06 +vmlinux inet_listen_wlock 0xa63eaa1c +vmlinux inet_put_port 0xc8ae8288 +vmlinux inet_register_protosw 0xaecb0de9 +vmlinux inet_release 0x08b7844e +vmlinux inet_select_addr 0x2b99106b +vmlinux inet_sendmsg 0xaae58c1a +vmlinux inet_shutdown 0x2d5c5910 +vmlinux inet_sk_rebuild_header 0xe3b80816 +vmlinux inet_sock_destruct 0x3113d51c +vmlinux inet_stream_connect 0x16c72f25 +vmlinux inet_stream_ops 0xc6ee6872 +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x5c3687b1 +vmlinux inet_twsk_deschedule 0xf9f0fef2 +vmlinux inet_twsk_schedule 0xdf3c3de7 +vmlinux inet_unregister_protosw 0xf87dbbe3 +vmlinux inetdev_by_index 0xa1c4d739 +vmlinux init_buffer 0xbd47e08b +vmlinux init_mm 0x00a6488f +vmlinux init_special_inode 0x6e9974ef +vmlinux init_task 0x12878aa0 +vmlinux init_timer 0xd5e8dba8 +vmlinux inode_add_bytes 0x0c4829e0 +vmlinux inode_change_ok 0x05e64be7 +vmlinux inode_get_bytes 0x3edbc170 +vmlinux inode_init_once 0x6fe3efb2 +vmlinux inode_needs_sync 0x9f1b39df +vmlinux inode_set_bytes 0xe536e052 +vmlinux inode_setattr 0x238628a5 +vmlinux inode_sub_bytes 0x7c918d4d +vmlinux inode_update_time 0xa4be07a3 +vmlinux inotify_dentry_parent_queue_event 0xe8a07c2d +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0x679924ff +vmlinux inotify_inode_queue_event 0xf8be3827 +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0xc8d7cf07 +vmlinux input_allocate_device 0xb8bdd55f +vmlinux input_class 0x69f996b9 +vmlinux input_close_device 0x7f0d40a3 +vmlinux input_event 0xdb54d0bc +vmlinux input_flush_device 0xfe8cbff6 +vmlinux input_grab_device 0x47bcd04e +vmlinux input_open_device 0x4c018701 +vmlinux input_register_device 0xadb37246 +vmlinux input_register_handler 0xc1e911f6 +vmlinux input_release_device 0x079ea890 +vmlinux input_unregister_device 0xd7156433 +vmlinux input_unregister_handler 0xec43aca1 +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0x94892ba1 +vmlinux int_sqrt 0xb678366f +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x8e96b66d +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0xa3e9fd5e +vmlinux interruptible_sleep_on_timeout 0x8e334f2b +vmlinux invalidate_bdev 0xf59b5fb6 +vmlinux invalidate_inode_pages 0x75b5d983 +vmlinux invalidate_inode_pages2 0x5b2c91c8 +vmlinux invalidate_inode_pages2_range 0xaf5c0f81 +vmlinux invalidate_inodes 0x28985357 +vmlinux invalidate_partition 0x06d9ccdd +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0x2c2f5e8f +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0x03960713 +vmlinux ioread16_rep 0x54324f95 +vmlinux ioread16be 0x06127753 +vmlinux ioread32 0x2241a928 +vmlinux ioread32_rep 0x3360bb18 +vmlinux ioread32be 0x0bce3753 +vmlinux ioread8 0x389e200f +vmlinux ioread8_rep 0x27a72488 +vmlinux ioremap_nocache 0x3762cb6e +vmlinux iounmap 0xedc03953 +vmlinux iov_shorten 0xc11d8093 +vmlinux iowrite16 0x4775eacf +vmlinux iowrite16_rep 0x1eba9e49 +vmlinux iowrite16be 0x30343e46 +vmlinux iowrite32 0x908aa9b2 +vmlinux iowrite32_rep 0x2dbc755e +vmlinux iowrite32be 0xa1a6414c +vmlinux iowrite8 0x375bf494 +vmlinux iowrite8_rep 0x0b353626 +vmlinux ip4_datagram_connect 0xd47819e8 +vmlinux ip_build_and_send_pkt 0x5fcc5686 +vmlinux ip_cmsg_recv 0x2e55cf31 +vmlinux ip_ct_attach 0x832069fa +vmlinux ip_defrag 0x1dfd3687 +vmlinux ip_fragment 0xe65b0edf +vmlinux ip_generic_getfrag 0xee7d07a2 +vmlinux ip_getsockopt 0x1cef94b8 +vmlinux ip_mc_dec_group 0xc3bb3cee +vmlinux ip_mc_inc_group 0x741f14c8 +vmlinux ip_mc_join_group 0xc27f7077 +vmlinux ip_queue_xmit 0x30270da8 +vmlinux ip_route_input 0x7428667a +vmlinux ip_route_me_harder 0x06d7617d +vmlinux ip_route_output_flow 0xd8f908eb +vmlinux ip_route_output_key 0xeefb0d42 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0xa37b7441 +vmlinux ip_setsockopt 0x40348a9e +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0x4a4b40dc +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0x7132d1cf +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0xe2c0c036 +vmlinux is_bad_inode 0xf9dae15f +vmlinux is_console_locked 0x944a564d +vmlinux isa_bridge 0x880fd626 +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux isapnp_cfg_begin 0x770a0036 +vmlinux isapnp_cfg_end 0x28b715a6 +vmlinux isapnp_present 0xbf8b39e9 +vmlinux isapnp_protocol 0x7430aa8e +vmlinux isapnp_write_byte 0xda8fd495 +vmlinux ist_info 0x0fdb1426 +vmlinux iunique 0x679ca50a +vmlinux iw_handler_get_spy 0x7dc17464 +vmlinux iw_handler_get_thrspy 0xb9f7587e +vmlinux iw_handler_set_spy 0x44719339 +vmlinux iw_handler_set_thrspy 0x07cd3303 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0xcef1bde2 +vmlinux kernel_fpu_begin 0xd986dad1 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0xe5fafb2e +vmlinux kernel_recvmsg 0xbbea40bb +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0x59b47e8d +vmlinux kernel_subsys 0x2f8eabe5 +vmlinux kernel_thread 0x7e9ebb05 +vmlinux key_alloc 0x41d179a2 +vmlinux key_create_or_update 0x459db887 +vmlinux key_instantiate_and_link 0x59e434d5 +vmlinux key_link 0x7042f97c +vmlinux key_negate_and_link 0x8e866cca +vmlinux key_payload_reserve 0x6540169f +vmlinux key_put 0x80b16ca8 +vmlinux key_revoke 0xf97a0fb9 +vmlinux key_task_permission 0x5ceb876e +vmlinux key_type_user 0x28bb84b5 +vmlinux key_unlink 0xb7be0f3c +vmlinux key_update 0xea7987f1 +vmlinux key_validate 0x4e5eadb0 +vmlinux keyring_clear 0xf4766438 +vmlinux keyring_search 0x5a50830e +vmlinux kfifo_alloc 0x5cc5b658 +vmlinux kfifo_free 0x08a64e7c +vmlinux kfifo_init 0xfa31cd3b +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0xfa5acbfd +vmlinux kill_anon_super 0x47ad6c58 +vmlinux kill_block_super 0x7165f02c +vmlinux kill_fasync 0xb538fd11 +vmlinux kill_litter_super 0x0a1bd396 +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xec10e63a +vmlinux klist_add_head 0xe14bb3a2 +vmlinux klist_add_tail 0x8bd126f9 +vmlinux klist_del 0x7081deed +vmlinux klist_init 0x83ba3c87 +vmlinux klist_iter_exit 0x5dbca5b8 +vmlinux klist_iter_init 0xba799312 +vmlinux klist_iter_init_node 0xee8c66d5 +vmlinux klist_next 0x0d1a949b +vmlinux klist_node_attached 0x1d1ee37c +vmlinux klist_remove 0x88277446 +vmlinux km_new_mapping 0x958fb80d +vmlinux km_policy_notify 0x3052cf2d +vmlinux km_state_notify 0x1fba3c67 +vmlinux km_waitq 0x9b0f1de9 +vmlinux kmap 0xd354a46f +vmlinux kmap_atomic 0x5d8880a9 +vmlinux kmap_atomic_to_page 0x3ed5fe24 +vmlinux kmap_high 0xf0e2d9ae +vmlinux kmem_cache_alloc 0x90b9e5de +vmlinux kmem_cache_create 0x32b64d3f +vmlinux kmem_cache_destroy 0x6673f9fd +vmlinux kmem_cache_free 0xc863ee73 +vmlinux kmem_cache_name 0x44a50c7d +vmlinux kmem_cache_shrink 0x7d5ef11a +vmlinux kmem_cache_size 0x7c8c7970 +vmlinux kmem_find_general_cachep 0xd6a51749 +vmlinux kobject_add 0xc9722ad4 +vmlinux kobject_del 0xaefad609 +vmlinux kobject_get 0xd1189332 +vmlinux kobject_hotplug 0x6a257918 +vmlinux kobject_init 0xde000ede +vmlinux kobject_put 0xe0dcb32f +vmlinux kobject_register 0xcef6780a +vmlinux kobject_set_name 0x5ec5fd6c +vmlinux kobject_uevent 0xd3211a4c +vmlinux kobject_uevent_atomic 0x072c36b8 +vmlinux kobject_unregister 0x29371f10 +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x34cdb243 +vmlinux kset_register 0x91ef4496 +vmlinux kset_unregister 0x83486f49 +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0xb68fbc35 +vmlinux kthread_create 0xc15526ee +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0xc88360ff +vmlinux kthread_stop_sem 0xbc0c9153 +vmlinux kunmap 0x6007ffed +vmlinux kunmap_atomic 0x43b40de7 +vmlinux kunmap_high 0x1618d9b2 +vmlinux kzalloc 0x1d10cdb2 +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0x52f03ba3 +vmlinux lease_modify 0x33143787 +vmlinux linkwatch_fire_event 0xb322204d +vmlinux ll_rw_block 0x8635098b +vmlinux llc_add_pack 0x89eecd0e +vmlinux llc_build_and_send_ui_pkt 0x691c0542 +vmlinux llc_mac_hdr_init 0x01d8652b +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0x6e40e370 +vmlinux llc_sap_find 0xcc360fe7 +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0x5f69c2db +vmlinux llc_sap_open 0x46863120 +vmlinux llc_set_station_handler 0x6bc3e88d +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_nls 0x4fcfedd5 +vmlinux load_nls_default 0x7cc3d405 +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_cpu_hotplug 0xba813bd6 +vmlinux lock_cpu_hotplug_interruptible 0xdd7ee0f9 +vmlinux lock_kernel 0x5568be43 +vmlinux lock_may_read 0x0ba448ab +vmlinux lock_may_write 0x460d720e +vmlinux lock_rename 0x2e4ac432 +vmlinux lock_sock 0x4cadb8af +vmlinux locks_copy_lock 0xd5745838 +vmlinux locks_init_lock 0xc234c1ab +vmlinux locks_mandatory_area 0xa17cbe3c +vmlinux locks_remove_posix 0xbf8a2a5b +vmlinux lookup_create 0xc6e0566f +vmlinux lookup_hash 0xc85e137d +vmlinux lookup_instantiate_filp 0x39b76267 +vmlinux lookup_one_len 0xfb95e020 +vmlinux loopback_dev 0x4f606afb +vmlinux loops_per_jiffy 0xba497f13 +vmlinux machine_id 0x69b4ab75 +vmlinux machine_real_restart 0x3da1b07a +vmlinux make_8023_client 0x9d02d962 +vmlinux make_EII_client 0xed41a528 +vmlinux make_bad_inode 0x72c32f8d +vmlinux malloc_sizes 0x5a70e903 +vmlinux mapping_tagged 0xb792a789 +vmlinux mark_buffer_async_write 0x6c069517 +vmlinux mark_buffer_dirty 0xad043749 +vmlinux mark_buffer_dirty_inode 0x031ee776 +vmlinux mark_info_dirty 0x4d662450 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x524b5d13 +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_cstate 0x93805374 +vmlinux max_mapnr 0x01139ffc +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0xe42263f1 +vmlinux may_umount_tree 0x07a34418 +vmlinux mb_cache_create 0xfd686606 +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0x7260f9fe +vmlinux mb_cache_entry_find_first 0x33f507e7 +vmlinux mb_cache_entry_find_next 0x79992626 +vmlinux mb_cache_entry_free 0xb4af668a +vmlinux mb_cache_entry_get 0x34b1af4e +vmlinux mb_cache_entry_insert 0xb58be140 +vmlinux mb_cache_entry_release 0x18e3178a +vmlinux mb_cache_shrink 0xc50b5b92 +vmlinux mca_bus_type 0x258014a7 +vmlinux mca_device_claimed 0xaaa756fe +vmlinux mca_device_read_pos 0xe7ab1ecd +vmlinux mca_device_read_stored_pos 0x8dfaa5b0 +vmlinux mca_device_set_claim 0xb5d51157 +vmlinux mca_device_set_name 0x864087ab +vmlinux mca_device_status 0x515f7969 +vmlinux mca_device_transform_ioport 0xc1933a4b +vmlinux mca_device_transform_irq 0x9bbe71b9 +vmlinux mca_device_transform_memory 0x83f7eccb +vmlinux mca_device_write_pos 0x8042803e +vmlinux mca_find_adapter 0x5f1bd579 +vmlinux mca_find_unused_adapter 0xef3bd862 +vmlinux mca_is_adapter_used 0x05048b38 +vmlinux mca_mark_as_unused 0xd9c272aa +vmlinux mca_mark_as_used 0x6b937ffb +vmlinux mca_read_pos 0x5c68705b +vmlinux mca_read_stored_pos 0xb2efb6be +vmlinux mca_register_driver 0x78624ed6 +vmlinux mca_set_adapter_name 0xf2e74040 +vmlinux mca_unregister_driver 0xd2168d7e +vmlinux mca_write_pos 0xaaebe34f +vmlinux mem_map 0xc1c7a799 +vmlinux memcmp 0x5152e605 +vmlinux memcpy 0x2e60bace +vmlinux memcpy_fromiovec 0x9fb3dd30 +vmlinux memcpy_fromiovecend 0x6e440b58 +vmlinux memcpy_toiovec 0x9ceb163c +vmlinux memmove 0x8235805b +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xcfaf79ba +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0xbe8a1485 +vmlinux mempool_create_node 0x31448a4a +vmlinux mempool_destroy 0xe5077a8f +vmlinux mempool_free 0x37a9798f +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x931d2521 +vmlinux memset 0x2bc95bd4 +vmlinux misc_deregister 0xa21cb58d +vmlinux misc_register 0x6d9b534d +vmlinux mmput 0x7327b18f +vmlinux mnt_pin 0x929078d4 +vmlinux mnt_unpin 0xf11c3bd9 +vmlinux mntput_no_expire 0x7d973661 +vmlinux mod_reg_security 0x98d3b8a1 +vmlinux mod_timer 0x400a2c21 +vmlinux mod_unreg_security 0x65ef4ca8 +vmlinux module_add_driver 0x0415138e +vmlinux module_refcount 0xcc3ffac0 +vmlinux module_remove_driver 0xa3240fca +vmlinux monotonic_clock 0x9669ecc8 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0x90320a46 +vmlinux mpage_readpages 0x5f6a63bc +vmlinux mpage_writepage 0xa97b728f +vmlinux mpage_writepages 0xfed47381 +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux mtrr_add 0x56179c5f +vmlinux mtrr_del 0x272d394e +vmlinux multipath_alg_register 0x2c2b210a +vmlinux multipath_alg_unregister 0x36aa9038 +vmlinux n_tty_ioctl 0x911f868f +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0xdcd3de58 +vmlinux neigh_changeaddr 0x23cbfeee +vmlinux neigh_compat_output 0xfdc6769e +vmlinux neigh_connected_output 0x5b4f1536 +vmlinux neigh_create 0x923b6a9e +vmlinux neigh_delete 0xfbc0fe49 +vmlinux neigh_destroy 0x7631cb00 +vmlinux neigh_dump_info 0xbd321aac +vmlinux neigh_event_ns 0xc2acbba7 +vmlinux neigh_for_each 0x631f8641 +vmlinux neigh_ifdown 0x695d26fb +vmlinux neigh_lookup 0x9bd5b1db +vmlinux neigh_lookup_nodev 0x237c5f2f +vmlinux neigh_parms_alloc 0x046e91f6 +vmlinux neigh_parms_release 0x0b7d7dd1 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0x19cf381e +vmlinux neigh_seq_next 0x74bb42f6 +vmlinux neigh_seq_start 0xbde30c0b +vmlinux neigh_seq_stop 0x265efd73 +vmlinux neigh_sysctl_register 0x6b58c4c4 +vmlinux neigh_sysctl_unregister 0x79a43c38 +vmlinux neigh_table_clear 0x3e81275d +vmlinux neigh_table_init 0xf8e7bf9e +vmlinux neigh_update 0xdbb00cf5 +vmlinux neigh_update_hhs 0x7f3c6316 +vmlinux neightbl_dump_info 0x73abd85b +vmlinux neightbl_set 0xd37ec046 +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0x1b228c93 +vmlinux netdev_features_change 0xf229aa2b +vmlinux netdev_rx_csum_fault 0x0acf9437 +vmlinux netdev_set_master 0x0f402cdf +vmlinux netdev_state_change 0x18fe14d4 +vmlinux netif_carrier_off 0x6dd6ac05 +vmlinux netif_carrier_on 0x205e4cfa +vmlinux netif_receive_skb 0x9df14741 +vmlinux netif_rx 0xdb27ae40 +vmlinux netif_rx_ni 0x4a53dc59 +vmlinux netlink_ack 0x9dad1553 +vmlinux netlink_broadcast 0x6de1c4eb +vmlinux netlink_dump_start 0xff962b1d +vmlinux netlink_kernel_create 0xd9036ccb +vmlinux netlink_queue_skip 0xbe8aff36 +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0x0a6dfc36 +vmlinux netlink_set_err 0x02c2ec9e +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0x4baab248 +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x5135da69 +vmlinux netpoll_parse_options 0x30024fa1 +vmlinux netpoll_poll 0x79e380d3 +vmlinux netpoll_queue 0xe84053c7 +vmlinux netpoll_send_udp 0xce98fdb1 +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0x9a35b125 +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0xa3ce51e8 +vmlinux next_thread 0xaa31e49a +vmlinux nf_ct_attach 0x76534ee8 +vmlinux nf_getsockopt 0x19cbe652 +vmlinux nf_hook_slow 0xba81876f +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0xd0b16149 +vmlinux nf_log_register 0xc8a8bbd7 +vmlinux nf_log_unregister_logger 0xa3986c32 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0x4c4b5784 +vmlinux nf_register_queue_handler 0x3064a257 +vmlinux nf_register_queue_rerouter 0x8d6e79c4 +vmlinux nf_register_sockopt 0x0e001db8 +vmlinux nf_reinject 0x062a0cf4 +vmlinux nf_setsockopt 0x039ce9d5 +vmlinux nf_unregister_hook 0x30852f15 +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0x1aaa9e07 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x088c3045 +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0xbe0e5118 +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0x0a5d944f +vmlinux nla_reserve 0x0d0b6931 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0x6cdc5c6b +vmlinux nla_validate 0x2cc98162 +vmlinux nmi_active 0x069dcda8 +vmlinux nmi_watchdog 0xda928914 +vmlinux no_llseek 0x82fe6063 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x8fecbe12 +vmlinux nobh_prepare_write 0xaa7eedae +vmlinux nobh_truncate_page 0x3067754b +vmlinux nobh_writepage 0x8e7bc9e0 +vmlinux node_online_map 0x5a8f421e +vmlinux node_possible_map 0xca0d27a1 +vmlinux nonseekable_open 0xbff54f3a +vmlinux noop_qdisc 0xade7eb99 +vmlinux noop_qdisc_ops 0xf5da6fea +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x433ea326 +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0xfa409401 +vmlinux open_by_devnum 0x65accd73 +vmlinux open_exec 0x8ca04f14 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0x09aeaf8c +vmlinux out_of_line_wait_on_bit_lock 0xe868af29 +vmlinux overflowgid 0x7171121c +vmlinux overflowuid 0x8b618d08 +vmlinux p80211_resume 0xacd34929 +vmlinux p80211_suspend 0x84b49ec1 +vmlinux p80211netdev_hwremoved 0x3ac7e7e7 +vmlinux p80211netdev_rx 0x4a06e096 +vmlinux p80211skb_free 0xc31fce31 +vmlinux p80211skb_rxmeta_attach 0xcc30b7c8 +vmlinux page_address 0x1855c4c2 +vmlinux page_follow_link_light 0x418e963d +vmlinux page_put_link 0xf9a6b21e +vmlinux page_readlink 0x6ee98e12 +vmlinux page_symlink 0x77cd387d +vmlinux page_symlink_inode_operations 0x7278816b +vmlinux pagevec_lookup_tag 0x40f880aa +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0x2c358923 +vmlinux path_release 0xd4984fcc +vmlinux path_walk 0xffff6622 +vmlinux pci_add_new_bus 0xac52a3c3 +vmlinux pci_assign_resource 0x3ba280d1 +vmlinux pci_block_user_cfg_access 0xa88546a3 +vmlinux pci_bus_add_device 0x58056f82 +vmlinux pci_bus_add_devices 0x62b64410 +vmlinux pci_bus_alloc_resource 0x377f20d0 +vmlinux pci_bus_assign_resources 0x1dcf434b +vmlinux pci_bus_find_capability 0x2f803ccd +vmlinux pci_bus_max_busnr 0xdc8b7cc4 +vmlinux pci_bus_read_config_byte 0x549f8972 +vmlinux pci_bus_read_config_dword 0x445c7629 +vmlinux pci_bus_read_config_word 0x7d94aea9 +vmlinux pci_bus_size_bridges 0xd7e34005 +vmlinux pci_bus_type 0x81788968 +vmlinux pci_bus_write_config_byte 0xafddc04c +vmlinux pci_bus_write_config_dword 0xc2ab8a9c +vmlinux pci_bus_write_config_word 0x8893e7f5 +vmlinux pci_choose_state 0x0d35f76e +vmlinux pci_clear_mwi 0x486fdc9f +vmlinux pci_create_bus 0x52e1dcc6 +vmlinux pci_dev_driver 0x1775689a +vmlinux pci_dev_get 0x22026558 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0xc2b8453c +vmlinux pci_disable_device 0x84f7d98a +vmlinux pci_disable_msi 0x74675c1b +vmlinux pci_disable_msix 0x36a0b9e6 +vmlinux pci_do_scan_bus 0x01ef06eb +vmlinux pci_enable_bridges 0x5286a738 +vmlinux pci_enable_device 0xd0b6a1d9 +vmlinux pci_enable_device_bars 0x47ee320d +vmlinux pci_enable_msi 0xfb25b738 +vmlinux pci_enable_msix 0x39974e96 +vmlinux pci_enable_wake 0x612a0b5b +vmlinux pci_find_bus 0xe79d39b8 +vmlinux pci_find_capability 0x96aaa6bb +vmlinux pci_find_device 0xc4db3f67 +vmlinux pci_find_device_reverse 0x891faa22 +vmlinux pci_find_next_bus 0xb57fb676 +vmlinux pci_find_next_capability 0xc198870f +vmlinux pci_find_parent_resource 0x86aeb164 +vmlinux pci_find_slot 0x57542514 +vmlinux pci_fixup_device 0x4f0cab20 +vmlinux pci_get_class 0xd3cf0896 +vmlinux pci_get_device 0x197b8389 +vmlinux pci_get_slot 0x9eea7144 +vmlinux pci_get_subsys 0x36688a26 +vmlinux pci_intx 0x8d4ca139 +vmlinux pci_iomap 0xb846cfe7 +vmlinux pci_iounmap 0x7b6225ad +vmlinux pci_map_rom 0x14579782 +vmlinux pci_map_rom_copy 0x615700c3 +vmlinux pci_match_device 0x6703cc41 +vmlinux pci_match_id 0xefa81299 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_mem_start 0x3da171f9 +vmlinux pci_osc_control_set 0x20c8fc33 +vmlinux pci_osc_support_set 0xed9003ef +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0xabd422a8 +vmlinux pci_proc_attach_device 0x8c18985b +vmlinux pci_proc_detach_bus 0xad2964b6 +vmlinux pci_release_region 0xce76e102 +vmlinux pci_release_regions 0xb5b028bc +vmlinux pci_remove_behind_bridge 0x57eb2f8f +vmlinux pci_remove_bus 0xb887b9b9 +vmlinux pci_remove_bus_device 0xf64b13bf +vmlinux pci_remove_device_safe 0x5aefe6db +vmlinux pci_remove_rom 0x9119c168 +vmlinux pci_request_region 0x45093047 +vmlinux pci_request_regions 0x164ea78c +vmlinux pci_restore_bars 0x2fb482c2 +vmlinux pci_restore_state 0x659e83ea +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0x1d72c5db +vmlinux pci_scan_bridge 0xf94aace1 +vmlinux pci_scan_bus_parented 0x564490e2 +vmlinux pci_scan_child_bus 0xd7ee9495 +vmlinux pci_scan_single_device 0x47fc15eb +vmlinux pci_scan_slot 0x04d873c1 +vmlinux pci_set_consistent_dma_mask 0x4cab3957 +vmlinux pci_set_dma_mask 0x57878fc2 +vmlinux pci_set_master 0xe1d69471 +vmlinux pci_set_mwi 0xa1691895 +vmlinux pci_set_power_state 0x040bde66 +vmlinux pci_setup_cardbus 0xb61cce7a +vmlinux pci_unblock_user_cfg_access 0xf1581ed9 +vmlinux pci_unmap_rom 0xf91d2aaf +vmlinux pci_unregister_driver 0x9570f4fb +vmlinux pci_walk_bus 0xc938401f +vmlinux pcibios_get_irq_routing_table 0xda08c0d7 +vmlinux pcibios_set_irq_routing 0x938a8e13 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pcie_port_service_register 0xc706b352 +vmlinux pcie_port_service_unregister 0xbb18fb5f +vmlinux pciserial_init_ports 0x11d191dc +vmlinux pciserial_remove_ports 0x4746b5c7 +vmlinux pciserial_resume_ports 0x69949971 +vmlinux pciserial_suspend_ports 0xbd46e0df +vmlinux per_cpu__cpu_16bit_stack 0x42f5b870 +vmlinux per_cpu__irq_stat 0xb994c584 +vmlinux per_cpu__kstat 0xca09a9af +vmlinux per_cpu__softnet_data 0x22f15cd1 +vmlinux percpu_counter_mod 0x921ec48a +vmlinux permission 0x6b800419 +vmlinux pfifo_qdisc_ops 0xbd31c4aa +vmlinux platform_add_devices 0x54d6ca91 +vmlinux platform_bus 0xaf654a77 +vmlinux platform_bus_type 0x5a7e2501 +vmlinux platform_device_add 0xfa770dc7 +vmlinux platform_device_add_data 0x4851112b +vmlinux platform_device_add_resources 0xbb246bd6 +vmlinux platform_device_alloc 0x606ba363 +vmlinux platform_device_put 0x8f2e53d3 +vmlinux platform_device_register 0x661ed4ed +vmlinux platform_device_register_simple 0x6978e61a +vmlinux platform_device_unregister 0x5981ad99 +vmlinux platform_driver_register 0xf70da7bd +vmlinux platform_driver_unregister 0x4e5cdaba +vmlinux platform_get_irq 0x8bbc1539 +vmlinux platform_get_irq_byname 0xe455e025 +vmlinux platform_get_resource 0x20818267 +vmlinux platform_get_resource_byname 0x018ef901 +vmlinux pm_active 0xebd387f6 +vmlinux pm_idle 0xf890fe7f +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pneigh_enqueue 0x30a61153 +vmlinux pneigh_lookup 0x7d238298 +vmlinux pnp_activate_dev 0x48d3be12 +vmlinux pnp_device_attach 0xdb53ba77 +vmlinux pnp_device_detach 0x0a3330cc +vmlinux pnp_disable_dev 0x2c1af173 +vmlinux pnp_find_card 0x663c7b35 +vmlinux pnp_find_dev 0xb76382b8 +vmlinux pnp_init_resource_table 0x16084899 +vmlinux pnp_is_active 0x745546d4 +vmlinux pnp_manual_config_dev 0xd2f30b68 +vmlinux pnp_register_card_driver 0x27a9094b +vmlinux pnp_register_driver 0x0c6d9dba +vmlinux pnp_release_card_device 0xd6700074 +vmlinux pnp_request_card_device 0x259f665b +vmlinux pnp_resource_change 0xf577ec2b +vmlinux pnp_unregister_card_driver 0x849d5abc +vmlinux pnp_unregister_driver 0x396f477d +vmlinux pnpbios_protocol 0x54488434 +vmlinux poll_freewait 0x0bf5d0d4 +vmlinux poll_initwait 0x418367cb +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0xd32e52c7 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x640a7078 +vmlinux posix_acl_equiv_mode 0xd8282ff0 +vmlinux posix_acl_from_mode 0x3adc15b9 +vmlinux posix_acl_from_xattr 0x85ac7f10 +vmlinux posix_acl_permission 0xd5a0bccd +vmlinux posix_acl_to_xattr 0x1ecb9943 +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0xfcad9b47 +vmlinux posix_lock_file 0xe62112fa +vmlinux posix_lock_file_wait 0xa7eabad0 +vmlinux posix_locks_deadlock 0xa506930c +vmlinux posix_test_lock 0xb4918170 +vmlinux posix_timer_event 0x394eaa99 +vmlinux posix_unblock_lock 0x6174c95b +vmlinux pre_task_out_intr 0x87bf3c92 +vmlinux prepare_binprm 0xca514a36 +vmlinux prepare_to_wait 0xc8f02aeb +vmlinux prepare_to_wait_exclusive 0x42ca3c61 +vmlinux printk 0x1b7d4074 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0x552f0d7a +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0xef588adc +vmlinux proc_dointvec 0x5153cd6e +vmlinux proc_dointvec_jiffies 0x0d31d5ba +vmlinux proc_dointvec_minmax 0xd51c611c +vmlinux proc_dointvec_ms_jiffies 0x6d77f752 +vmlinux proc_dointvec_userhz_jiffies 0xd616da39 +vmlinux proc_dostring 0xc3201d34 +vmlinux proc_doulongvec_minmax 0xeb61e782 +vmlinux proc_doulongvec_ms_jiffies_minmax 0x605382f5 +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0xc5234e65 +vmlinux proc_net 0xf6e900d3 +vmlinux proc_net_netfilter 0x8aa531ed +vmlinux proc_net_stat 0x75d1706d +vmlinux proc_root 0x5e20aeab +vmlinux proc_root_driver 0x07da2ee0 +vmlinux proc_root_fs 0x05699405 +vmlinux proc_symlink 0x00020b9e +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux proto_register 0x3d109c88 +vmlinux proto_unregister 0xea293f99 +vmlinux ps2_cmd_aborted 0xd5a1c23c +vmlinux ps2_command 0xa1248f47 +vmlinux ps2_drain 0x5a1d7fe4 +vmlinux ps2_handle_ack 0x0d7e160d +vmlinux ps2_handle_response 0xbb240f4e +vmlinux ps2_init 0xf8966508 +vmlinux ps2_schedule_command 0x56dd8e99 +vmlinux ps2_sendbyte 0xd6887ec4 +vmlinux pskb_copy 0xf4d16a60 +vmlinux pskb_expand_head 0xae4234b5 +vmlinux pskb_put 0x31dbb29c +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0x4efb8607 +vmlinux put_cmsg 0xf39bf4d9 +vmlinux put_device 0x1831d865 +vmlinux put_disk 0x7b53cd24 +vmlinux put_driver 0x8296428c +vmlinux put_files_struct 0x5847774a +vmlinux put_io_context 0x2972e09b +vmlinux put_page 0xb6d3e22b +vmlinux put_tty_driver 0x9dbf4f1f +vmlinux put_unused_fd 0x023eb25e +vmlinux qdisc_alloc 0x0d1b9238 +vmlinux qdisc_create_dflt 0x28524b79 +vmlinux qdisc_destroy 0x2fc6e214 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0x6a0f3859 +vmlinux qdisc_lookup 0x3c3f5547 +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0xa069222c +vmlinux qdisc_restart 0xf4ed4d29 +vmlinux qdisc_unlock_tree 0x28a03eb7 +vmlinux queue_delayed_work 0x9944fdb5 +vmlinux queue_work 0x375ce76f +vmlinux radix_tree_delete 0xa34bdcd0 +vmlinux radix_tree_gang_lookup 0x883e226b +vmlinux radix_tree_gang_lookup_tag 0xcc4e9047 +vmlinux radix_tree_insert 0x7dc88ba1 +vmlinux radix_tree_lookup 0x5c2da0c3 +vmlinux radix_tree_lookup_slot 0x6bbbfb36 +vmlinux radix_tree_tag_clear 0x374a51dd +vmlinux radix_tree_tag_set 0x7e92ceb7 +vmlinux radix_tree_tagged 0xdacd0c37 +vmlinux raise_softirq_irqoff 0xd8c152cd +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0x1349d5ba +vmlinux read_cache_pages 0x7017d952 +vmlinux read_dev_sector 0xddc0e2c4 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux recalibrate_cpu_khz 0x31e76b57 +vmlinux redirty_page_for_writepage 0x918cf76a +vmlinux redraw_screen 0xf68977ee +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0x3672d190 +vmlinux register_acpi_bus_type 0x4618eb21 +vmlinux register_atm_ioctl 0x8d368d86 +vmlinux register_binfmt 0xa476ea20 +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0x4084eb2a +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0xd3259125 +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_die_notifier 0x53986488 +vmlinux register_exec_domain 0xd32f64ab +vmlinux register_filesystem 0xd0d625ab +vmlinux register_firmware 0x711cccd3 +vmlinux register_framebuffer 0x59b0a7f6 +vmlinux register_gifconf 0x533afd0d +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_key_type 0x1bc61f46 +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0x5d287c42 +vmlinux register_netdevice 0x177b61ac +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x52b6e532 +vmlinux register_posix_clock 0x2e66c495 +vmlinux register_qdisc 0x6a0e6b0d +vmlinux register_quota_format 0x0c0f1bdf +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0xd5134262 +vmlinux register_snap_client 0x6eac9fc6 +vmlinux register_sysctl_table 0x3b555da5 +vmlinux register_sysrq_key 0x1bb5d338 +vmlinux register_tcf_proto_ops 0xa680d9e4 +vmlinux register_timer_hook 0xf5269962 +vmlinux register_wlandev 0xe00ff373 +vmlinux registered_fb 0x01f5bb50 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x33934162 +vmlinux release_lapic_nmi 0x4129043e +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x5490956a +vmlinux remap_pfn_range 0xf72732e4 +vmlinux remote_llseek 0x5da66209 +vmlinux remove_arg_zero 0x12b5acc0 +vmlinux remove_inode_hash 0xe7d87533 +vmlinux remove_proc_entry 0xc0f2fe45 +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0x5c3aa561 +vmlinux remove_wait_queue 0x3adc4c7c +vmlinux reqsk_queue_alloc 0xba2cb35d +vmlinux reqsk_queue_destroy 0xa7a769df +vmlinux request_dma 0x7054a3e4 +vmlinux request_firmware 0xdcafaf25 +vmlinux request_firmware_nowait 0x2171792f +vmlinux request_irq 0x26e96637 +vmlinux request_key 0xf331d50b +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux reserve_lapic_nmi 0xb903b498 +vmlinux restore_processor_state 0x8dc6e564 +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x85902f79 +vmlinux rtc_cmos_read 0x9e64fbfe +vmlinux rtc_cmos_write 0x2def7f76 +vmlinux rtc_control 0xc9b27289 +vmlinux rtc_lock 0x811afadf +vmlinux rtc_register 0xfdab2b9c +vmlinux rtc_unregister 0xeddfe49d +vmlinux rtnetlink_links 0xa1668ded +vmlinux rtnetlink_put_metrics 0xf273fda0 +vmlinux rtnl 0x3776349b +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0x30bb35b6 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux rwsem_down_read_failed 0x2429c7a6 +vmlinux rwsem_down_write_failed 0xbf2fb071 +vmlinux rwsem_downgrade_wake 0x9ce9a507 +vmlinux rwsem_wake 0xd63128cc +vmlinux save_processor_state 0x75271716 +vmlinux sb_min_blocksize 0x9851fc98 +vmlinux sb_set_blocksize 0xbda2cab0 +vmlinux sched_setscheduler 0x504cca6c +vmlinux schedule 0x4292364c +vmlinux schedule_delayed_work 0xfc535e10 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0x17d59d01 +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x0a3fa85c +vmlinux scm_detach_fds 0x2262d280 +vmlinux scm_fp_dup 0x2c733964 +vmlinux scnprintf 0x28f35813 +vmlinux screen_info 0xe7bf7d05 +vmlinux scsi_cmd_ioctl 0x8861064c +vmlinux scsi_command_size 0x9b05ea5c +vmlinux search_binary_handler 0x2a6ab72f +vmlinux secpath_dup 0x9f8d6f78 +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0x69c37247 +vmlinux securityfs_create_dir 0x7b7f109a +vmlinux securityfs_create_file 0x75f0d3a7 +vmlinux securityfs_remove 0x2b52af92 +vmlinux send_sig 0x69c5bee5 +vmlinux send_sig_info 0x2be23d79 +vmlinux seq_escape 0xf117eca8 +vmlinux seq_lseek 0x18f80216 +vmlinux seq_open 0x378cb890 +vmlinux seq_path 0x73756354 +vmlinux seq_printf 0x6744e2b1 +vmlinux seq_putc 0x1fb29b9a +vmlinux seq_puts 0xa6deab07 +vmlinux seq_read 0xc7177d49 +vmlinux seq_release 0x8ac97000 +vmlinux seq_release_private 0xc64489c0 +vmlinux serial8250_register_port 0x125cafd9 +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0x7e5844ab +vmlinux serio_interrupt 0x615eb359 +vmlinux serio_open 0x9014f107 +vmlinux serio_reconnect 0xec735c7a +vmlinux serio_rescan 0x47995c56 +vmlinux serio_unregister_child_port 0xf9401e38 +vmlinux serio_unregister_driver 0x1d045ca1 +vmlinux serio_unregister_port 0x80178f1b +vmlinux set_anon_super 0xa0268dd6 +vmlinux set_bh_page 0x30767bf3 +vmlinux set_binfmt 0x03935330 +vmlinux set_blocksize 0x1551d2f4 +vmlinux set_cpus_allowed 0x7be4f1d4 +vmlinux set_current_groups 0x72fbae28 +vmlinux set_device_ro 0x2e39dcb8 +vmlinux set_disk_ro 0x2afa6d9f +vmlinux set_nmi_callback 0x2c4fa81f +vmlinux set_page_dirty 0x4051c2c7 +vmlinux set_page_dirty_lock 0xcd576ff5 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0x3fef48b4 +vmlinux setlease 0x7473018a +vmlinux setup_arg_pages 0x691f807d +vmlinux sget 0x4365c864 +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x4b278a28 +vmlinux shrink_dcache_sb 0xc4dfa278 +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x4d3c153f +vmlinux simple_attr_close 0x7752cb96 +vmlinux simple_attr_open 0x902ecf8b +vmlinux simple_attr_read 0x1eeae99b +vmlinux simple_attr_write 0x3fabb627 +vmlinux simple_commit_write 0x32693730 +vmlinux simple_dir_inode_operations 0xe4dd6ebd +vmlinux simple_dir_operations 0x72674212 +vmlinux simple_empty 0xb90c138d +vmlinux simple_fill_super 0xd1a3b07e +vmlinux simple_getattr 0xd534c391 +vmlinux simple_link 0xaf98606d +vmlinux simple_lookup 0xa0c7aa93 +vmlinux simple_pin_fs 0x5fa2d324 +vmlinux simple_prepare_write 0xddc52b81 +vmlinux simple_read_from_buffer 0x528c709d +vmlinux simple_readpage 0xc67c7890 +vmlinux simple_release_fs 0x5b21bef1 +vmlinux simple_rename 0xc17e72b5 +vmlinux simple_rmdir 0xf492b3b4 +vmlinux simple_statfs 0x1cfc21d3 +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0x44512235 +vmlinux simple_transaction_get 0x6b11823a +vmlinux simple_transaction_read 0x28b4d848 +vmlinux simple_transaction_release 0x1754a211 +vmlinux simple_unlink 0xfd898071 +vmlinux single_open 0x2d242f42 +vmlinux single_release 0x3b1284c1 +vmlinux sk_alloc 0x67d3c7ba +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0xd2bd367b +vmlinux sk_common_release 0xaad475c2 +vmlinux sk_free 0x21f46a27 +vmlinux sk_reset_timer 0x7a4e6520 +vmlinux sk_run_filter 0x77492cb3 +vmlinux sk_send_sigurg 0x345b55c7 +vmlinux sk_stop_timer 0xb6444267 +vmlinux sk_stream_error 0x6818c205 +vmlinux sk_stream_kill_queues 0xf0127208 +vmlinux sk_stream_mem_schedule 0x11a7fb75 +vmlinux sk_stream_rfree 0x2648ff7f +vmlinux sk_stream_wait_close 0xec89eafe +vmlinux sk_stream_wait_connect 0xbc5c3735 +vmlinux sk_stream_wait_memory 0x258cb5b9 +vmlinux sk_stream_write_space 0xb38707d0 +vmlinux sk_wait_data 0xbc83e027 +vmlinux skb_abort_seq_read 0xfb34b33c +vmlinux skb_append 0xb818b448 +vmlinux skb_append_datato_frags 0x200c4a12 +vmlinux skb_checksum 0xb7fab053 +vmlinux skb_checksum_help 0x63180569 +vmlinux skb_clone 0xdb1c7bdf +vmlinux skb_clone_fraglist 0x5aa10e11 +vmlinux skb_copy 0xac054aaa +vmlinux skb_copy_and_csum_bits 0xff3eae1f +vmlinux skb_copy_and_csum_datagram_iovec 0x9a377186 +vmlinux skb_copy_and_csum_dev 0xc2cf975e +vmlinux skb_copy_bits 0x7b831769 +vmlinux skb_copy_datagram_iovec 0x5c49a5c4 +vmlinux skb_copy_expand 0xdecc15cd +vmlinux skb_cow_data 0xc41926ad +vmlinux skb_dequeue 0x18f98685 +vmlinux skb_dequeue_tail 0x9f29630a +vmlinux skb_find_text 0xd1f229bf +vmlinux skb_free_datagram 0x0f4c5de7 +vmlinux skb_icv_walk 0x8cb7441a +vmlinux skb_insert 0xe8883daa +vmlinux skb_make_writable 0x63189336 +vmlinux skb_migrate 0x68f533ec +vmlinux skb_over_panic 0xa718348a +vmlinux skb_pad 0xba7fa17e +vmlinux skb_prepare_seq_read 0xfac12518 +vmlinux skb_queue_head 0x9fd42c7c +vmlinux skb_queue_purge 0xc1e81118 +vmlinux skb_queue_tail 0x0cb98c4d +vmlinux skb_realloc_headroom 0x7cffa15b +vmlinux skb_recv_datagram 0x6bc1a191 +vmlinux skb_seq_read 0xde651671 +vmlinux skb_split 0x15810cda +vmlinux skb_store_bits 0x5c139964 +vmlinux skb_to_sgvec 0x1a71d186 +vmlinux skb_under_panic 0x42967075 +vmlinux skb_unlink 0x0e4f22bf +vmlinux sleep_on 0x1a7fdad0 +vmlinux sleep_on_timeout 0x8dd8f6fb +vmlinux smp_call_function 0x0014bfd1 +vmlinux smp_num_siblings 0xd1f6c5f3 +vmlinux snprintf 0x025da070 +vmlinux sock_alloc_send_skb 0x5618b06e +vmlinux sock_common_getsockopt 0x3dbe9fea +vmlinux sock_common_recvmsg 0x7279f87d +vmlinux sock_common_setsockopt 0xf1095bf6 +vmlinux sock_create 0x0b3ee6b1 +vmlinux sock_create_kern 0x9289c46a +vmlinux sock_create_lite 0xa75ea5ef +vmlinux sock_enable_timestamp 0x2025f2b6 +vmlinux sock_get_timestamp 0x730f66fb +vmlinux sock_i_ino 0x6db97e86 +vmlinux sock_i_uid 0x10eefc01 +vmlinux sock_init_data 0x1bd7cca8 +vmlinux sock_kfree_s 0x22a59ed0 +vmlinux sock_kmalloc 0xded86614 +vmlinux sock_map_fd 0x2da52d54 +vmlinux sock_no_accept 0x8b03e627 +vmlinux sock_no_bind 0x8bcf5f08 +vmlinux sock_no_connect 0x2db797a8 +vmlinux sock_no_getname 0x59afa438 +vmlinux sock_no_getsockopt 0x63cc5c83 +vmlinux sock_no_ioctl 0xd29ea501 +vmlinux sock_no_listen 0x6d99dfe9 +vmlinux sock_no_mmap 0x725c319b +vmlinux sock_no_poll 0x5509a88a +vmlinux sock_no_recvmsg 0xe2cdb765 +vmlinux sock_no_sendmsg 0x22c759ee +vmlinux sock_no_sendpage 0x784fa39b +vmlinux sock_no_setsockopt 0x779763dd +vmlinux sock_no_shutdown 0x4069f9d6 +vmlinux sock_no_socketpair 0x02e1db63 +vmlinux sock_recvmsg 0x1a882407 +vmlinux sock_register 0x392694ee +vmlinux sock_release 0xd5f5e066 +vmlinux sock_rfree 0xdddcc919 +vmlinux sock_sendmsg 0xcdc8c622 +vmlinux sock_setsockopt 0x012b3bde +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0xb61889d6 +vmlinux sock_wfree 0xcb82d774 +vmlinux sock_wmalloc 0x3aaadba8 +vmlinux sockfd_lookup 0x09a9d63a +vmlinux sonet_copy_stats 0x89195dc3 +vmlinux sonet_subtract_stats 0x1a24e5e2 +vmlinux sort 0x310917fe +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux start_tty 0xab97b4bd +vmlinux steal_locks 0xd4b27fae +vmlinux stop_tty 0x5858f744 +vmlinux strcspn 0x6c1ce5ce +vmlinux strlcat 0xdd0a2ba2 +vmlinux strlcpy 0x73e20c1c +vmlinux strnchr 0x0a3131f6 +vmlinux strncpy_from_user 0x245ec8e8 +vmlinux strnicmp 0x4e830a3e +vmlinux strnlen_user 0xbcc308bb +vmlinux strpbrk 0x9a1dfd65 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0xc7ec6c27 +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0x67c94bcc +vmlinux submit_bh 0x2323b508 +vmlinux submit_bio 0x9fc8a2b4 +vmlinux subsys_create_file 0x0fe267d0 +vmlinux subsys_remove_file 0x085fd017 +vmlinux subsystem_init 0x78e9f34f +vmlinux subsystem_register 0x2aacbad7 +vmlinux subsystem_unregister 0x6828f010 +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0x710c214c +vmlinux switch_APIC_timer_to_ipi 0xa5c79544 +vmlinux switch_ipi_to_APIC_timer 0xac7eb84c +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0x600f8e07 +vmlinux sync_dirty_buffer 0xdf6f82b5 +vmlinux sync_inode 0x017272aa +vmlinux sync_mapping_buffers 0xfc420942 +vmlinux sync_page_range 0x98e57501 +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0x268cc6a2 +vmlinux sys_open 0x0359f865 +vmlinux sys_read 0x16bd3948 +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0x5120ff9f +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0x3396a18d +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0xcdbef392 +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0xdfc0856e +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0xb95c36e1 +vmlinux sysdev_class_unregister 0xbe76e307 +vmlinux sysdev_create_file 0xbcda5f17 +vmlinux sysdev_driver_register 0xdee9da62 +vmlinux sysdev_driver_unregister 0x247c0617 +vmlinux sysdev_register 0x269862c2 +vmlinux sysdev_remove_file 0x4e88c50b +vmlinux sysdev_unregister 0xb7f5a8b9 +vmlinux sysfs_chmod_file 0x643ae6aa +vmlinux sysfs_create_bin_file 0x415a905e +vmlinux sysfs_create_dir 0x48dde826 +vmlinux sysfs_create_file 0x8c470de1 +vmlinux sysfs_create_group 0x2a638a91 +vmlinux sysfs_create_link 0x2eb69666 +vmlinux sysfs_remove_bin_file 0x48696a72 +vmlinux sysfs_remove_dir 0x4ef32c5f +vmlinux sysfs_remove_file 0x3c61744c +vmlinux sysfs_remove_group 0xd3e0972a +vmlinux sysfs_remove_link 0xd1689de8 +vmlinux sysfs_rename_dir 0x11c09192 +vmlinux sysfs_update_file 0xfdbb5370 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0x3692a65d +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0xe4c7dc33 +vmlinux task_nice 0xb8edb3ac +vmlinux task_no_data_intr 0x066ccac9 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0xc308139d +vmlinux tc_classify 0x6922b29a +vmlinux tcf_em_register 0x1be5e871 +vmlinux tcf_em_tree_destroy 0x4f047836 +vmlinux tcf_em_tree_dump 0xc663117e +vmlinux tcf_em_tree_validate 0x2c32d2ad +vmlinux tcf_em_unregister 0xbac0cbe1 +vmlinux tcf_exts_change 0xa8e4f4ff +vmlinux tcf_exts_destroy 0x271c8091 +vmlinux tcf_exts_dump 0x99f4e2c7 +vmlinux tcf_exts_dump_stats 0x01b0198b +vmlinux tcf_exts_validate 0x25b92208 +vmlinux tcf_police 0xf57f625d +vmlinux tcf_police_destroy 0xbc4b72c6 +vmlinux tcf_police_dump 0xab19ac0a +vmlinux tcf_police_dump_stats 0xf6f56c8f +vmlinux tcf_police_hash 0x8493d6e7 +vmlinux tcf_police_ht 0x8d894736 +vmlinux tcf_police_locate 0xf7c6bc6b +vmlinux tcf_police_lookup 0x6c6e4ce9 +vmlinux tcf_police_new_index 0x7ae0f6c9 +vmlinux tcp_check_req 0x8ac47a03 +vmlinux tcp_child_process 0x75aa086b +vmlinux tcp_close 0x8a66d767 +vmlinux tcp_connect 0x70f2a4d8 +vmlinux tcp_create_openreq_child 0xdfd79907 +vmlinux tcp_death_row 0xc4e4dfe4 +vmlinux tcp_disconnect 0x5469a4e1 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x3d094140 +vmlinux tcp_getsockopt 0x7d3db692 +vmlinux tcp_hashinfo 0xb6fdbde1 +vmlinux tcp_init_congestion_ops 0xed22aefd +vmlinux tcp_init_xmit_timers 0x820ae511 +vmlinux tcp_ioctl 0x7000674f +vmlinux tcp_make_synack 0xfa337d0f +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0x12c83129 +vmlinux tcp_poll 0x54736657 +vmlinux tcp_proc_register 0xff75c59d +vmlinux tcp_proc_unregister 0x6ade5f54 +vmlinux tcp_prot 0xe7997464 +vmlinux tcp_rcv_established 0x1adaf8ef +vmlinux tcp_rcv_state_process 0x08b1b067 +vmlinux tcp_read_sock 0x619650f8 +vmlinux tcp_recvmsg 0xabb5dd67 +vmlinux tcp_register_congestion_control 0xce9dc4a3 +vmlinux tcp_reno_cong_avoid 0x4c0c773d +vmlinux tcp_reno_min_cwnd 0x383dd729 +vmlinux tcp_reno_ssthresh 0x2e4e574d +vmlinux tcp_sendmsg 0x1a07bfd2 +vmlinux tcp_sendpage 0xe8ddfb9a +vmlinux tcp_setsockopt 0x573bf43c +vmlinux tcp_shutdown 0xc23e0953 +vmlinux tcp_simple_retransmit 0x06cfa696 +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0xc0939b34 +vmlinux tcp_timewait_state_process 0x7a5043c6 +vmlinux tcp_unhash 0x21758889 +vmlinux tcp_unregister_congestion_control 0x241413e6 +vmlinux tcp_v4_conn_request 0x554e020f +vmlinux tcp_v4_connect 0x9f03e829 +vmlinux tcp_v4_destroy_sock 0x6f1c79a1 +vmlinux tcp_v4_do_rcv 0x8d06f6e7 +vmlinux tcp_v4_remember_stamp 0x20cc08d1 +vmlinux tcp_v4_send_check 0xbcc93c8b +vmlinux tcp_v4_syn_recv_sock 0xd74a0034 +vmlinux test_clear_page_dirty 0xe3da99ad +vmlinux test_set_page_writeback 0x966f83ef +vmlinux textsearch_destroy 0xd0b33e62 +vmlinux textsearch_find_continuous 0xb35820ad +vmlinux textsearch_prepare 0xd82c380f +vmlinux textsearch_register 0x0f750374 +vmlinux textsearch_unregister 0x1589e8a7 +vmlinux thaw_bdev 0x9cee058d +vmlinux timespec_trunc 0xc045ad4e +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0xa93ac102 +vmlinux tr_type_trans 0xa01d625b +vmlinux transport_add_device 0x142ec411 +vmlinux transport_class_register 0xd1c391cc +vmlinux transport_class_unregister 0xbad797f8 +vmlinux transport_configure_device 0x4c1eff01 +vmlinux transport_destroy_device 0xaeef2ec8 +vmlinux transport_remove_device 0x9f7fac13 +vmlinux transport_setup_device 0xe048a0a3 +vmlinux truncate_inode_pages 0xf4d0d16f +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0x7c9b4150 +vmlinux try_to_release_page 0x60ad3775 +vmlinux tty_check_change 0x21c6abc1 +vmlinux tty_flip_buffer_push 0x401ce4bf +vmlinux tty_get_baud_rate 0x889ce607 +vmlinux tty_hangup 0xf6bce421 +vmlinux tty_hung_up_p 0xe50db519 +vmlinux tty_ldisc_deref 0xe7a42277 +vmlinux tty_ldisc_flush 0x214061a1 +vmlinux tty_ldisc_get 0x8a980c8d +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x08a0b381 +vmlinux tty_ldisc_ref_wait 0x6f88cd65 +vmlinux tty_name 0xc90e6f9f +vmlinux tty_register_device 0x61884ef1 +vmlinux tty_register_driver 0x0e666f95 +vmlinux tty_register_ldisc 0xeddae065 +vmlinux tty_set_operations 0xe9b7e508 +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0x0bdec39f +vmlinux tty_unregister_driver 0x7b772fcf +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0xf4fc0269 +vmlinux tty_wait_until_sent 0x7c566e42 +vmlinux tty_wakeup 0x1ea0d8b9 +vmlinux uart_add_one_port 0x00bc6672 +vmlinux uart_get_baud_rate 0xfc5cf13a +vmlinux uart_get_divisor 0x1267f273 +vmlinux uart_match_port 0x7bfefeca +vmlinux uart_register_driver 0x6de8670a +vmlinux uart_remove_one_port 0x28e221f8 +vmlinux uart_resume_port 0xe3b2b678 +vmlinux uart_suspend_port 0x3c2e70a5 +vmlinux uart_unregister_driver 0x2b3f8b7a +vmlinux uart_update_timeout 0xf2089dbf +vmlinux uart_write_wakeup 0x01ea3321 +vmlinux udp_disconnect 0xc0788243 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0xbe485f4e +vmlinux udp_ioctl 0x75973471 +vmlinux udp_poll 0x6e64bee3 +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x7284c1eb +vmlinux udp_proc_unregister 0x95b67dc9 +vmlinux udp_prot 0xfa27693e +vmlinux udp_sendmsg 0xc2945263 +vmlinux uhci_check_and_reset_hc 0xf6c08f79 +vmlinux uhci_reset_hc 0x12f5277d +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unload_nls 0x7889d9df +vmlinux unlock_buffer 0x2d8f9cfb +vmlinux unlock_cpu_hotplug 0xdbb6cbd9 +vmlinux unlock_kernel 0x5dfe8f1a +vmlinux unlock_new_inode 0x8143f022 +vmlinux unlock_page 0xb72bbb61 +vmlinux unlock_rename 0xe9ffa01d +vmlinux unmap_mapping_range 0xb4e716c6 +vmlinux unmap_underlying_metadata 0xaadf0829 +vmlinux unregister_8022_client 0x8e7849f1 +vmlinux unregister_acpi_bus_type 0xf33ba551 +vmlinux unregister_binfmt 0xf6b06812 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0x879dc8d0 +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_exec_domain 0x73758189 +vmlinux unregister_filesystem 0xfa61e945 +vmlinux unregister_framebuffer 0xb16e2db3 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_key_type 0x06a7a038 +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0x4a67759e +vmlinux unregister_netdevice 0x27af3856 +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0xe5e3602e +vmlinux unregister_qdisc 0x8731ef68 +vmlinux unregister_quota_format 0x7706fa9f +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0xea39f9e9 +vmlinux unregister_snap_client 0xc5e8e23f +vmlinux unregister_sysctl_table 0x6dd85f2d +vmlinux unregister_sysrq_key 0x07144562 +vmlinux unregister_tcf_proto_ops 0x651efad2 +vmlinux unregister_timer_hook 0x3fa545f8 +vmlinux unregister_wlandev 0x34168ee9 +vmlinux unset_nmi_callback 0x2ef9373e +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0x5fab99eb +vmlinux update_region 0xa2d1326d +vmlinux user_describe 0xc9913d25 +vmlinux user_destroy 0xba123a4b +vmlinux user_duplicate 0x3fe417c8 +vmlinux user_instantiate 0xb8852997 +vmlinux user_match 0xb754c86a +vmlinux user_read 0x39b22d34 +vmlinux user_update 0x600c539e +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0x4b7b7b96 +vmlinux vc_cons 0x48cf441a +vmlinux vc_resize 0x411b39f0 +vmlinux vcc_hash 0x2cc2d52d +vmlinux vcc_insert_socket 0xfd5b4af9 +vmlinux vcc_release_async 0x53031902 +vmlinux vcc_sklist_lock 0x1e0dfcf0 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0xb8d6f99d +vmlinux vfs_follow_link 0xf08a010d +vmlinux vfs_fstat 0xcb841136 +vmlinux vfs_get_dqblk 0x0099708a +vmlinux vfs_get_dqinfo 0x7d278fbf +vmlinux vfs_getattr 0x8fab27f2 +vmlinux vfs_link 0xbbc0ea7a +vmlinux vfs_llseek 0x7caaac61 +vmlinux vfs_lstat 0x91d803ff +vmlinux vfs_mkdir 0x5472b792 +vmlinux vfs_mknod 0xc41f0aee +vmlinux vfs_permission 0xbc14811a +vmlinux vfs_quota_off 0x4c3400e3 +vmlinux vfs_quota_on 0x1c219fc8 +vmlinux vfs_quota_on_mount 0x2dd8d6a3 +vmlinux vfs_quota_sync 0x76e23c09 +vmlinux vfs_read 0xa3967316 +vmlinux vfs_readdir 0xe7786b4a +vmlinux vfs_readlink 0xaf149a29 +vmlinux vfs_readv 0x02855e5d +vmlinux vfs_rename 0xa3f8cbbf +vmlinux vfs_rmdir 0x471e40ad +vmlinux vfs_set_dqblk 0x5db47835 +vmlinux vfs_set_dqinfo 0xec0e6e33 +vmlinux vfs_stat 0x4e193f40 +vmlinux vfs_statfs 0x00ba48f0 +vmlinux vfs_symlink 0xc65ef0df +vmlinux vfs_unlink 0x90c096d7 +vmlinux vfs_write 0xae97dbe6 +vmlinux vfs_writev 0xfe093f24 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x7e981ec5 +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0xd4591727 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0x083c5fe1 +vmlinux vmtruncate 0x4cb8dc3b +vmlinux vprintk 0xaec4759f +vmlinux vscnprintf 0x0ead5073 +vmlinux vsnprintf 0x6989a769 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0xa34eb072 +vmlinux wait_for_completion_interruptible 0xdebaee08 +vmlinux wait_for_completion_interruptible_timeout 0x78599654 +vmlinux wait_for_completion_timeout 0x736bb1ef +vmlinux wait_on_page_bit 0x6d79781d +vmlinux wait_on_sync_kiocb 0x7a519f6f +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xd7e7ca24 +vmlinux wake_up_process 0x1c33a149 +vmlinux wireless_send_event 0x6c60867f +vmlinux wireless_spy_update 0x1ab8c456 +vmlinux wlan_setup 0xa8d0bea2 +vmlinux wlan_unsetup 0x39f48bd9 +vmlinux write_inode_now 0xbb6d6d11 +vmlinux write_one_page 0x5deec429 +vmlinux x86_acpiid_to_apicid 0x062bdb0e +vmlinux x86_cpu_to_apicid 0x8874b79e +vmlinux xfrm4_rcv 0x0f5f83b9 +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0x7d8fc944 +vmlinux xfrm_bundle_ok 0xcd9e8975 +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0xc0a6cadc +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0x6ea37bb2 +vmlinux xfrm_dst_lookup 0x403eb497 +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0xe5251f21 +vmlinux xfrm_find_acq_byseq 0xb2777b9b +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0x58737b92 +vmlinux xfrm_init_state 0x43daa673 +vmlinux xfrm_lookup 0x3f34d9d8 +vmlinux xfrm_parse_spi 0xe3163675 +vmlinux xfrm_policy_alloc 0xd3b95fdc +vmlinux xfrm_policy_byid 0x0ada78df +vmlinux xfrm_policy_bysel 0xb989cca3 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x8e5e14bc +vmlinux xfrm_policy_list 0x5a6f4baf +vmlinux xfrm_policy_register_afinfo 0xb03cdb33 +vmlinux xfrm_policy_unregister_afinfo 0xf74c121a +vmlinux xfrm_policy_walk 0xaefb739e +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0x989e67ba +vmlinux xfrm_register_type 0x34fbf58e +vmlinux xfrm_replay_advance 0xe1dca01b +vmlinux xfrm_replay_check 0x891d33db +vmlinux xfrm_state_add 0x6027dea9 +vmlinux xfrm_state_alloc 0x250bb53b +vmlinux xfrm_state_check 0xa860192b +vmlinux xfrm_state_check_expire 0x87bb024d +vmlinux xfrm_state_delete 0x7d84c58b +vmlinux xfrm_state_delete_tunnel 0xb693a2bb +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0xb92b587a +vmlinux xfrm_state_lookup 0xc29e2245 +vmlinux xfrm_state_mtu 0xd5a7dd5b +vmlinux xfrm_state_register_afinfo 0xe1219dbc +vmlinux xfrm_state_unregister_afinfo 0x9e7ebb10 +vmlinux xfrm_state_update 0x4627b820 +vmlinux xfrm_state_walk 0x6ba3bc91 +vmlinux xfrm_unregister_km 0x81334093 +vmlinux xfrm_unregister_type 0xf81d81a9 +vmlinux xfrm_user_policy 0xf36a4d4d +vmlinux xrlim_allow 0x5a0d5da8 +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xe2628d76 +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x5ca68bcf +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0x6364e736 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/ia64/itanium-smp.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/ia64/itanium-smp.modules @@ -0,0 +1,1326 @@ +3c359 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +8021q +8139cp +8139too +8390 +9p2000 +a100u2w +a3d +aacraid +ac97_codec +acecad +acenic +acpiphp +acpiphp_ibm +acx +adfs +adi +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +adv7170 +adv7175 +adv717x +aec62xx +aes +affs +af_key +agpgart +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airprime +alim15x3 +amd8111e +analog +anubis +aoe +appletalk +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atp870u +atxp1 +aty128fb +atyfb +auerswald +auth_rpcgss +autofs +autofs4 +ax25 +axnet_cs +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_misc +bitblit +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bnep +bnx2 +bonding +bpa10x +bpck +bpqether +bridge +bsd_comp +bt3c_cs +bt819 +bt856 +bt865 +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +button +bw-qcam +capability +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm4000_cs +cm4040_cs +cman +cmd64x +cn +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +comm +commoncap +configfs +container +cp2101 +cpia +cpia_pp +cpia_usb +cpqarray +cpufreq_conservative +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cs5520 +cs5530 +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxgb +cy82c693 +cyber2000fb +cyberjack +cyblafb +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +des +dev_acpi +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +diskonchip +dl2k +dlci +dlm +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +dpc7146 +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dst +dst_ca +dstr +ds_w1_bridge +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +eagle-usb +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +eepro100 +eeprom +efivars +efs +ehci-hcd +em28xx +em8300 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +epat +epia +epic100 +eql +eth1394 +evbug +evdev +exportfs +ext2 +ext3 +fakephp +fan +farsync +fat +faulty +fbcon +fdomain_cs +fealnx +fit2 +fit3 +fm801-gp +fmvj18x_cs +font +forcedeth +freevxfs +freq_table +friq +frpw +fscher +fscpos +ftdi_sio +ftl +fuse +g450_pll +gamecon +gameport +garmin_gps +generic +gen_probe +gf2k +gfs +gl518sm +gl520sm +gl620a +gnbd +grip +grip_mp +guillemot +hamachi +hangcheck-timer +hci_uart +hci_usb +hci_vhci +hdlc +hdlcdrv +hermes +hexium_gemini +hexium_orion +hfs +hfsplus +hidp +hostap +hostap_cs +hostap_pci +hostap_plx +hp4x +hp-agp +hpfs +hpt34x +hpt366 +hwmon-vid +i2c-algo-bit +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-core +i2c-dev +i2c-i801 +i2c-i810 +i2c-isa +i2c-matroxfb +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i460-agp +i8042 +i810_audio +i82092 +ib_cm +ib_core +ib_ipoib +ib_mad +ibmcam +ib_mthca +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ide-cd +ide-cs +ide-disk +ide-floppy +ide-generic +ide-pnp +ide-scsi +ide-tape +idmouse +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +inftl +initio +interact +io_edgeport +io_ti +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irtty-sir +ir-usb +iscsi_tcp +islsm +islsm_device +islsm_pci +islsm_usb +isofs +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kaweth +kbic +kbtab +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l64781 +lcd +ldusb +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lockd +lock_dlm +lock_gulm +lock_harness +lock_nolock +loop +lp +lpfc +lxt +macmodes +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1619 +max6875 +mbcs +mca_recovery +mct_u232 +md4 +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mga +michael_mic +microtek +mii +minix +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mrv8k +msdos +msnd +msnd_classic +msnd_pinnacle +msp3400 +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mxb +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +ne2k-pci +neofb +net1080 +netconsole +netrom +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +ntfs +nvidiafb +nxt2002 +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ohci1394 +ohci-hcd +olympic +omninet +on20 +on26 +onenand +oprofile +opti621 +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +palinfo +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pc300 +pc87360 +pca9539 +pcd +pcf8574 +pcf8591 +pci +pci200syn +pci_hotplug +pcilynx +pcips2 +pcmcia +pcmcia_core +pcnet32 +pcnet_cs +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +piix +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmc551 +podxtpro +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +processor +psmouse +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radeonfb +radio-gemtek-pci +radio-maestro +radio-maxiradio +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio500 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc8564 +rtl8150 +rxrpc +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7110 +saa7111 +saa7114 +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +saa7185 +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb1000 +sbp2 +sc1200 +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200_acb +sd_mod +se401 +seclvl +serial_cs +serio_raw +sermouse +serpent +serport +serverworks +sg +sha1 +sha256 +sha512 +shaper +shpchp +sidewinder +siimage +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sk98lin +skfp +skge +sky2 +sl811_cs +sl811-hcd +slc90e66 +slhc +slip +slram +smbfs +smc91c92_cs +smsc47b397 +smsc47m1 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1889 +snd-ainstr-fm +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fm801 +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +softcursor +sp8870 +sp887x +spaceball +spaceorb +spca5xx +spectrum_cs +squashfs +sr_mod +sstfb +st +starfire +stinger +stir4200 +stradis +strip +stv0297 +stv0299 +stv680 +sundance +sunkbd +sunrpc +sx8 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink_cs +synclinkmp +syncppp +sysv +tc1100-wmi +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tdfxfb +tea +tea6415c +tea6420 +tg3 +tgr192 +thermal +tileblit +tipar +ti_usb_3410_5052 +tlclk +tmdc +tmscsim +touchkitusb +tpm +tpm_atmel +tpm_infineon +tpm_nsc +trident +tridentfb +triflex +trm290 +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +tvp5150 +twidjoy +twofish +typhoon +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +umem +unionfs +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vesafb +vfat +vga16fb +vgastate +via +via686a +via82cxxx +via-rhine +via-velocity +vicam +video1394 +video-buf +video-buf-dvb +videocodec +videodev +visor +vpx3220 +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w83627ehf +w83627hf +w83781d +w83792d +w83l785ts +w9966 +w9968cf +wacom +wanrouter +wanxl +warrior +wavelan_cs +winbond-840 +wire +wl3501_cs +wm8775 +wp512 +x1205 +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xor +xp +xpad +xpc +xpnet +xtkbd +yam +yealink +yellowfin +yenta_socket +zaurus +zd1201 +zd1211 +zlib_deflate +zr36016 +zr36050 +zr36060 +zr36067 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/ia64/mckinley-smp +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/ia64/mckinley-smp @@ -0,0 +1,5339 @@ +arch/ia64/sn/kernel/xp xp_nofault_PIOR 0x7c3462de +arch/ia64/sn/kernel/xp xp_nofault_PIOR_target 0xa2083314 +arch/ia64/sn/kernel/xp xpc_clear_interface 0x39046c7a +arch/ia64/sn/kernel/xp xpc_connect 0xc091f7cd +arch/ia64/sn/kernel/xp xpc_disconnect 0x345c9217 +arch/ia64/sn/kernel/xp xpc_interface 0xd68368ee +arch/ia64/sn/kernel/xp xpc_registrations 0x99a7a2e2 +arch/ia64/sn/kernel/xp xpc_set_interface 0x7c6b194b +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0x73df627b +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0xf31002ee +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0x8fd87408 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xfdd59660 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/acpi/processor acpi_processor_notify_smm 0xa42832a9 +drivers/acpi/processor acpi_processor_register_performance 0xc18341bc +drivers/acpi/processor acpi_processor_set_thermal_limit 0xe8a3605f +drivers/acpi/processor acpi_processor_unregister_performance 0xc7c5a4ed +drivers/block/loop loop_register_transfer 0x504f98ec +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0x397acbeb +drivers/block/paride/paride pi_disconnect 0xfe974d46 +drivers/block/paride/paride pi_do_claimed 0xba166f48 +drivers/block/paride/paride pi_init 0x5866ecc6 +drivers/block/paride/paride pi_read_block 0x4caf1c77 +drivers/block/paride/paride pi_read_regr 0x5ec518b1 +drivers/block/paride/paride pi_register 0x25afb673 +drivers/block/paride/paride pi_release 0x3cbdca94 +drivers/block/paride/paride pi_schedule_claimed 0xd5c415c6 +drivers/block/paride/paride pi_unregister 0x12c64aef +drivers/block/paride/paride pi_write_block 0xc692dd5d +drivers/block/paride/paride pi_write_regr 0xbf9ad142 +drivers/cdrom/cdrom cdrom_get_last_written 0xa7e87ac7 +drivers/cdrom/cdrom cdrom_get_media_event 0x33c93964 +drivers/cdrom/cdrom cdrom_ioctl 0xfadb8326 +drivers/cdrom/cdrom cdrom_media_changed 0xd72cd0a3 +drivers/cdrom/cdrom cdrom_mode_select 0xed950d86 +drivers/cdrom/cdrom cdrom_mode_sense 0x910af159 +drivers/cdrom/cdrom cdrom_number_of_slots 0xfbffd1f5 +drivers/cdrom/cdrom cdrom_open 0xf66b7346 +drivers/cdrom/cdrom cdrom_release 0x1fbfaeef +drivers/cdrom/cdrom init_cdrom_command 0x4f476e96 +drivers/cdrom/cdrom register_cdrom 0xf77291ce +drivers/cdrom/cdrom unregister_cdrom 0x5d79ee78 +drivers/char/agp/agpgart agp3_generic_cleanup 0xc2424641 +drivers/char/agp/agpgart agp3_generic_configure 0x4b085dbf +drivers/char/agp/agpgart agp3_generic_fetch_size 0xde9b17ed +drivers/char/agp/agpgart agp3_generic_sizes 0xb48f27c2 +drivers/char/agp/agpgart agp3_generic_tlbflush 0xe83afde2 +drivers/char/agp/agpgart agp_add_bridge 0x076f8bf1 +drivers/char/agp/agpgart agp_alloc_bridge 0x9f626c11 +drivers/char/agp/agpgart agp_allocate_memory 0x7aa60bd7 +drivers/char/agp/agpgart agp_backend_acquire 0xc38b1b43 +drivers/char/agp/agpgart agp_backend_release 0xbf59817f +drivers/char/agp/agpgart agp_bind_memory 0xa429dbb0 +drivers/char/agp/agpgart agp_bridge 0xc341702c +drivers/char/agp/agpgart agp_bridges 0x673f815e +drivers/char/agp/agpgart agp_collect_device_status 0xc565546b +drivers/char/agp/agpgart agp_copy_info 0x90bf6486 +drivers/char/agp/agpgart agp_create_memory 0x06590cdf +drivers/char/agp/agpgart agp_device_command 0xa57d8d70 +drivers/char/agp/agpgart agp_enable 0x48658dd3 +drivers/char/agp/agpgart agp_find_bridge 0x00c5b34d +drivers/char/agp/agpgart agp_free_key 0xd0fef3b2 +drivers/char/agp/agpgart agp_free_memory 0xebedfc8b +drivers/char/agp/agpgart agp_generic_alloc_by_type 0x08fdbf60 +drivers/char/agp/agpgart agp_generic_alloc_page 0xde3088db +drivers/char/agp/agpgart agp_generic_create_gatt_table 0x85c38c66 +drivers/char/agp/agpgart agp_generic_destroy_page 0xbba27749 +drivers/char/agp/agpgart agp_generic_enable 0x49658e6a +drivers/char/agp/agpgart agp_generic_free_by_type 0x9472c069 +drivers/char/agp/agpgart agp_generic_free_gatt_table 0x25ac6d2a +drivers/char/agp/agpgart agp_generic_insert_memory 0xb83fcaf4 +drivers/char/agp/agpgart agp_generic_mask_memory 0x6a79836c +drivers/char/agp/agpgart agp_generic_remove_memory 0x1040d185 +drivers/char/agp/agpgart agp_memory_reserved 0xe089cfcc +drivers/char/agp/agpgart agp_num_entries 0xd6feefa5 +drivers/char/agp/agpgart agp_off 0x7538b132 +drivers/char/agp/agpgart agp_put_bridge 0x229b70ba +drivers/char/agp/agpgart agp_remove_bridge 0xa6b436fe +drivers/char/agp/agpgart agp_try_unsupported_boot 0xc5d9c46c +drivers/char/agp/agpgart agp_unbind_memory 0xe1a185ca +drivers/char/agp/agpgart get_agp_version 0xd1bcdccf +drivers/char/agp/agpgart global_cache_flush 0xa4d4f0e6 +drivers/char/drm/drm drm_addbufs_agp 0x17a7ceb9 +drivers/char/drm/drm drm_addbufs_fb 0x41b64e2c +drivers/char/drm/drm drm_addbufs_pci 0x08d7af9a +drivers/char/drm/drm drm_addmap 0x26835c95 +drivers/char/drm/drm drm_agp_acquire 0xfd4a495e +drivers/char/drm/drm drm_agp_alloc 0x9a6c6198 +drivers/char/drm/drm drm_agp_bind 0x5eb22a7f +drivers/char/drm/drm drm_agp_bind_memory 0xa9f33241 +drivers/char/drm/drm drm_agp_enable 0x3c9b854f +drivers/char/drm/drm drm_agp_free 0x9cbfdf19 +drivers/char/drm/drm drm_agp_info 0x78a6cb6a +drivers/char/drm/drm drm_agp_release 0xb7986f38 +drivers/char/drm/drm drm_agp_unbind 0x19171e89 +drivers/char/drm/drm drm_ati_pcigart_cleanup 0xe5c7a630 +drivers/char/drm/drm drm_ati_pcigart_init 0xa4f2b3a7 +drivers/char/drm/drm drm_compat_ioctl 0xe6196503 +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0x8e4a9f0f +drivers/char/drm/drm drm_core_reclaim_buffers 0x5abe7d34 +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0x1d0b4498 +drivers/char/drm/drm drm_fasync 0x0c8acbcd +drivers/char/drm/drm drm_get_dev 0xdd722737 +drivers/char/drm/drm drm_get_resource_len 0x7949a618 +drivers/char/drm/drm drm_get_resource_start 0xdb141279 +drivers/char/drm/drm drm_init 0x679d2d5e +drivers/char/drm/drm drm_ioctl 0x36a08874 +drivers/char/drm/drm drm_irq_uninstall 0x51b11aea +drivers/char/drm/drm drm_mmap 0x3c3e6303 +drivers/char/drm/drm drm_open 0x42a8562d +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0x4268f78a +drivers/char/drm/drm drm_pci_free 0x112cbb1f +drivers/char/drm/drm drm_poll 0x37f1efc1 +drivers/char/drm/drm drm_release 0x17d8d9f1 +drivers/char/drm/drm drm_rmmap 0xf8402b54 +drivers/char/drm/drm drm_rmmap_locked 0x2178a098 +drivers/char/drm/drm drm_vbl_send_signals 0x9d0b9fa3 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0x77112a60 +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0x79c24e43 +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0xb8da572d +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0x76311584 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0x9a79ae64 +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0xdc57b693 +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0xce2d55a9 +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0x3a031e87 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0x7b57fbc7 +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x4ee2140d +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0x80c82134 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0x5717db7e +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0x9439b98c +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0x4ee2e1b4 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0xbafe1794 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0xe7abc574 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0x98855b77 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0xd1174b0e +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0xf55a006d +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0x4b1aed10 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0xb7ee76bb +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0x212dd673 +drivers/char/tpm/tpm tpm_open 0x954e4937 +drivers/char/tpm/tpm tpm_pm_resume 0x807cffab +drivers/char/tpm/tpm tpm_pm_suspend 0x60d96980 +drivers/char/tpm/tpm tpm_read 0xb91301b4 +drivers/char/tpm/tpm tpm_register_hardware 0xbc73fc7d +drivers/char/tpm/tpm tpm_release 0x06adf1fd +drivers/char/tpm/tpm tpm_remove_hardware 0xc919867e +drivers/char/tpm/tpm tpm_show_caps 0x771b2031 +drivers/char/tpm/tpm tpm_show_pcrs 0x97e98fab +drivers/char/tpm/tpm tpm_show_pubek 0xc21ca73c +drivers/char/tpm/tpm tpm_store_cancel 0x2769874f +drivers/char/tpm/tpm tpm_write 0x400d54d1 +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0x969b8068 +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0x57dfd2eb +drivers/cpufreq/freq_table cpufreq_freq_attr_scaling_available_freqs 0x5c352f30 +drivers/cpufreq/freq_table cpufreq_frequency_get_table 0x2f47d8c7 +drivers/cpufreq/freq_table cpufreq_frequency_table_cpuinfo 0x6ae534e8 +drivers/cpufreq/freq_table cpufreq_frequency_table_get_attr 0x706b3a33 +drivers/cpufreq/freq_table cpufreq_frequency_table_put_attr 0x7ae1ae8e +drivers/cpufreq/freq_table cpufreq_frequency_table_target 0x750838ce +drivers/cpufreq/freq_table cpufreq_frequency_table_verify 0xfa4f3a67 +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-bit i2c_bit_add_bus 0xb51bb3ca +drivers/i2c/algos/i2c-algo-bit i2c_bit_del_bus 0xeb065f7e +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0xb328e683 +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0xed350a37 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0x69855d11 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0x3798b1a5 +drivers/i2c/busses/i2c-amd756 amd756_smbus 0x0fa508a2 +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0xb47cdfc4 +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0x9d694436 +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/i2c/i2c-core i2c_adapter_class 0x416f0951 +drivers/i2c/i2c-core i2c_adapter_dev_release 0x00cf065b +drivers/i2c/i2c-core i2c_adapter_driver 0x46fa7e63 +drivers/i2c/i2c-core i2c_add_adapter 0x359f8c2e +drivers/i2c/i2c-core i2c_add_driver 0xfb476872 +drivers/i2c/i2c-core i2c_attach_client 0x9ac25fe9 +drivers/i2c/i2c-core i2c_bus_type 0x4941b2f6 +drivers/i2c/i2c-core i2c_check_addr 0x804f63ee +drivers/i2c/i2c-core i2c_clients_command 0x9f019b56 +drivers/i2c/i2c-core i2c_control 0x5b7fd464 +drivers/i2c/i2c-core i2c_del_adapter 0x30b99847 +drivers/i2c/i2c-core i2c_del_driver 0x610d0342 +drivers/i2c/i2c-core i2c_detach_client 0x47822d6e +drivers/i2c/i2c-core i2c_get_adapter 0x130d95cc +drivers/i2c/i2c-core i2c_master_recv 0xc796e00b +drivers/i2c/i2c-core i2c_master_send 0x363b201c +drivers/i2c/i2c-core i2c_probe 0x75c7d565 +drivers/i2c/i2c-core i2c_put_adapter 0xf7254c22 +drivers/i2c/i2c-core i2c_release_client 0xdf2de4d7 +drivers/i2c/i2c-core i2c_smbus_read_byte 0x4a49d280 +drivers/i2c/i2c-core i2c_smbus_read_byte_data 0x75cb462d +drivers/i2c/i2c-core i2c_smbus_read_i2c_block_data 0xfd1ae497 +drivers/i2c/i2c-core i2c_smbus_read_word_data 0xd9a0bb68 +drivers/i2c/i2c-core i2c_smbus_write_block_data 0x7caf7ae2 +drivers/i2c/i2c-core i2c_smbus_write_byte 0x842685fa +drivers/i2c/i2c-core i2c_smbus_write_byte_data 0xc1a632e6 +drivers/i2c/i2c-core i2c_smbus_write_quick 0x3dbb30c8 +drivers/i2c/i2c-core i2c_smbus_write_word_data 0xd5c11ffb +drivers/i2c/i2c-core i2c_smbus_xfer 0x63444427 +drivers/i2c/i2c-core i2c_transfer 0x98a30cb1 +drivers/i2c/i2c-core i2c_use_client 0xd4d15ea5 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0xdd3d903c +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x07d47ac9 +drivers/ieee1394/ieee1394 csr1212_read 0xbde3eb37 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x13f7d59d +drivers/ieee1394/ieee1394 dma_prog_region_free 0xb570a6ce +drivers/ieee1394/ieee1394 dma_prog_region_init 0x16559f9d +drivers/ieee1394/ieee1394 dma_region_alloc 0xa39076c4 +drivers/ieee1394/ieee1394 dma_region_free 0xfa7dbc80 +drivers/ieee1394/ieee1394 dma_region_init 0xa480f61a +drivers/ieee1394/ieee1394 dma_region_mmap 0xdc8188d2 +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0x5cee399e +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0xdd022e0b +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x5362f4d2 +drivers/ieee1394/ieee1394 highlevel_host_reset 0xa3e0c61f +drivers/ieee1394/ieee1394 hpsb_add_host 0x78ed2db9 +drivers/ieee1394/ieee1394 hpsb_alloc_host 0x022b84fb +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0x703d7d9b +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0xf3c45f04 +drivers/ieee1394/ieee1394 hpsb_bus_reset 0x257052fb +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0xbff5f180 +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0x6c5ce684 +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0xd8d6997b +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0x518a9ca0 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0x3852f82b +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0x8b5a014b +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0xa96883e3 +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0x38a14023 +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0xc075b136 +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0xd425e4f6 +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0x0a56b617 +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0x73be8e15 +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0xe000faa5 +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0xd0c8b678 +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0x206713fc +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0xc6ed9c76 +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0x89d45926 +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0x4e2a498f +drivers/ieee1394/ieee1394 hpsb_iso_stop 0xd7708dd2 +drivers/ieee1394/ieee1394 hpsb_iso_wake 0x57b4b1d2 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x046aa107 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0x02fffe24 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0x4a046f1f +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0xf6751628 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0x6ddc2ef0 +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0x7aba3c3c +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0xc2ff02dc +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0x1f8d01d1 +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0x4c382f02 +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0x539a4142 +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0xa04c2808 +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0xc8e5a415 +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0x496cfc56 +drivers/ieee1394/ieee1394 hpsb_node_write 0x43a248e4 +drivers/ieee1394/ieee1394 hpsb_packet_received 0xeb7a89f0 +drivers/ieee1394/ieee1394 hpsb_packet_sent 0x16934f30 +drivers/ieee1394/ieee1394 hpsb_packet_success 0x6f17b1cd +drivers/ieee1394/ieee1394 hpsb_protocol_class 0xa7abef14 +drivers/ieee1394/ieee1394 hpsb_read 0xee2174ee +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0x42bb95cc +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0x95f3d7ab +drivers/ieee1394/ieee1394 hpsb_register_protocol 0x7e51b431 +drivers/ieee1394/ieee1394 hpsb_remove_host 0xbcbff055 +drivers/ieee1394/ieee1394 hpsb_reset_bus 0x34bad31f +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0x8847bf8f +drivers/ieee1394/ieee1394 hpsb_selfid_received 0xead503ce +drivers/ieee1394/ieee1394 hpsb_send_packet 0x73dfc696 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0xeca40f72 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0x61ad3c97 +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0x9370f86d +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0x22964ccd +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0xe0ecaa3e +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0x64b50ddc +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0x54fcb751 +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0xed07b523 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0x544fd6fb +drivers/ieee1394/ieee1394 hpsb_write 0x67fa69b8 +drivers/ieee1394/ieee1394 ieee1394_bus_type 0x0319308b +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0xa7deb82c +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0xf811377f +drivers/ieee1394/ohci1394 ohci1394_stop_context 0x56eece9b +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0x80e85ff0 +drivers/infiniband/core/ib_cm ib_cm_establish 0x893330d3 +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0x9345fff8 +drivers/infiniband/core/ib_cm ib_cm_listen 0x4bdd5a7d +drivers/infiniband/core/ib_cm ib_create_cm_id 0x590a4ec5 +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0x85bf3e86 +drivers/infiniband/core/ib_cm ib_send_cm_apr 0xd81a52cc +drivers/infiniband/core/ib_cm ib_send_cm_drep 0xb46f48e3 +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0xb19b7086 +drivers/infiniband/core/ib_cm ib_send_cm_lap 0x3768a1a8 +drivers/infiniband/core/ib_cm ib_send_cm_mra 0xe6bbf2b8 +drivers/infiniband/core/ib_cm ib_send_cm_rej 0x6a5ebdef +drivers/infiniband/core/ib_cm ib_send_cm_rep 0x7c296d71 +drivers/infiniband/core/ib_cm ib_send_cm_req 0xea8b3ece +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0xcad66f43 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0x8c7b0246 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0xf2235cab +drivers/infiniband/core/ib_core ib_alloc_device 0x199863a9 +drivers/infiniband/core/ib_core ib_alloc_fmr 0x3e4f382e +drivers/infiniband/core/ib_core ib_alloc_mw 0x4d9d3927 +drivers/infiniband/core/ib_core ib_alloc_pd 0x1f60895e +drivers/infiniband/core/ib_core ib_attach_mcast 0xf53e24d3 +drivers/infiniband/core/ib_core ib_create_ah 0x7c26cc64 +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0x601c0731 +drivers/infiniband/core/ib_core ib_create_cq 0x716fa12f +drivers/infiniband/core/ib_core ib_create_fmr_pool 0x6409a367 +drivers/infiniband/core/ib_core ib_create_qp 0x9a93e9d2 +drivers/infiniband/core/ib_core ib_create_srq 0x4d49485a +drivers/infiniband/core/ib_core ib_dealloc_device 0x17a8dc1a +drivers/infiniband/core/ib_core ib_dealloc_fmr 0x3b896b7c +drivers/infiniband/core/ib_core ib_dealloc_mw 0xa1d4eeaf +drivers/infiniband/core/ib_core ib_dealloc_pd 0x83b5337b +drivers/infiniband/core/ib_core ib_dereg_mr 0xda81a803 +drivers/infiniband/core/ib_core ib_destroy_ah 0x1f637285 +drivers/infiniband/core/ib_core ib_destroy_cq 0x7388100a +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x219306f2 +drivers/infiniband/core/ib_core ib_destroy_qp 0xb9e32c38 +drivers/infiniband/core/ib_core ib_destroy_srq 0x4981d275 +drivers/infiniband/core/ib_core ib_detach_mcast 0x00918b33 +drivers/infiniband/core/ib_core ib_dispatch_event 0x51ae5a82 +drivers/infiniband/core/ib_core ib_find_cached_gid 0x3c7e2371 +drivers/infiniband/core/ib_core ib_find_cached_pkey 0xe6de8762 +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0x9e1ea166 +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0x8a6b1e44 +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0x3a7528ef +drivers/infiniband/core/ib_core ib_get_cached_gid 0x8f6c7480 +drivers/infiniband/core/ib_core ib_get_cached_pkey 0x4404466a +drivers/infiniband/core/ib_core ib_get_client_data 0xc9f88873 +drivers/infiniband/core/ib_core ib_get_dma_mr 0x6bb763aa +drivers/infiniband/core/ib_core ib_modify_ah 0x9624239e +drivers/infiniband/core/ib_core ib_modify_device 0x2c025d93 +drivers/infiniband/core/ib_core ib_modify_port 0x662b2417 +drivers/infiniband/core/ib_core ib_modify_qp 0xa007eff4 +drivers/infiniband/core/ib_core ib_modify_srq 0x4889f9c9 +drivers/infiniband/core/ib_core ib_pack 0x06830b9a +drivers/infiniband/core/ib_core ib_query_ah 0x06fb716d +drivers/infiniband/core/ib_core ib_query_device 0x7e0b6dda +drivers/infiniband/core/ib_core ib_query_gid 0xe9490902 +drivers/infiniband/core/ib_core ib_query_mr 0x136f2eaa +drivers/infiniband/core/ib_core ib_query_pkey 0x2fbc0680 +drivers/infiniband/core/ib_core ib_query_port 0xf3c19e13 +drivers/infiniband/core/ib_core ib_query_qp 0x3212927a +drivers/infiniband/core/ib_core ib_query_srq 0x8a995115 +drivers/infiniband/core/ib_core ib_reg_phys_mr 0x529d1ac3 +drivers/infiniband/core/ib_core ib_register_client 0xf82b007e +drivers/infiniband/core/ib_core ib_register_device 0xf30f5b0b +drivers/infiniband/core/ib_core ib_register_event_handler 0x6ffcf992 +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x1168009e +drivers/infiniband/core/ib_core ib_resize_cq 0x8baa1147 +drivers/infiniband/core/ib_core ib_set_client_data 0x511b67eb +drivers/infiniband/core/ib_core ib_ud_header_init 0x0632beb8 +drivers/infiniband/core/ib_core ib_ud_header_pack 0x82ddf2e5 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0xa192ed99 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xf96fc9de +drivers/infiniband/core/ib_core ib_unregister_client 0x74c7acfd +drivers/infiniband/core/ib_core ib_unregister_device 0x5626f5b7 +drivers/infiniband/core/ib_core ib_unregister_event_handler 0x581a56ac +drivers/infiniband/core/ib_mad ib_cancel_mad 0x79cc3c8d +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x629e035b +drivers/infiniband/core/ib_mad ib_create_send_mad 0x526fc41c +drivers/infiniband/core/ib_mad ib_free_recv_mad 0x30669027 +drivers/infiniband/core/ib_mad ib_free_send_mad 0x441f483c +drivers/infiniband/core/ib_mad ib_modify_mad 0x2b0345cb +drivers/infiniband/core/ib_mad ib_post_send_mad 0x719b6659 +drivers/infiniband/core/ib_mad ib_process_mad_wc 0x0a9c3194 +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x5f743322 +drivers/infiniband/core/ib_mad ib_register_mad_agent 0xfe8b4351 +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0x0edda20a +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0x4f3e4aaa +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0xdbc00dd4 +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0xa7a66f90 +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0x47f831f5 +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0xa4ca2168 +drivers/input/gameport/gameport __gameport_register_driver 0xc56c1a59 +drivers/input/gameport/gameport __gameport_register_port 0x2c6036d2 +drivers/input/gameport/gameport gameport_close 0x8258c924 +drivers/input/gameport/gameport gameport_cooked_read 0x72fae9ac +drivers/input/gameport/gameport gameport_open 0x8a87f2de +drivers/input/gameport/gameport gameport_rescan 0xc898ba35 +drivers/input/gameport/gameport gameport_set_name 0x70ba70d9 +drivers/input/gameport/gameport gameport_set_phys 0x58aa3cea +drivers/input/gameport/gameport gameport_start_polling 0x711279b2 +drivers/input/gameport/gameport gameport_stop_polling 0x4965ed1e +drivers/input/gameport/gameport gameport_unregister_driver 0xcbe0417a +drivers/input/gameport/gameport gameport_unregister_port 0x95ca126d +drivers/md/dm-mirror dm_create_dirty_log 0x6dde3eb9 +drivers/md/dm-mirror dm_destroy_dirty_log 0x21535020 +drivers/md/dm-mirror dm_register_dirty_log_type 0xeddc9ac3 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0xd3eed36d +drivers/md/dm-mod dm_get_device 0x6b65c11e +drivers/md/dm-mod dm_get_mapinfo 0x1df8b545 +drivers/md/dm-mod dm_io_async 0x720eadbf +drivers/md/dm-mod dm_io_async_bvec 0x59c3706e +drivers/md/dm-mod dm_io_async_vm 0x8281ad4c +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0xab3c4ef0 +drivers/md/dm-mod dm_io_sync_bvec 0xaf8f87f1 +drivers/md/dm-mod dm_io_sync_vm 0xe94c6376 +drivers/md/dm-mod dm_put_device 0x79bb282f +drivers/md/dm-mod dm_register_target 0xcd470a3f +drivers/md/dm-mod dm_table_event 0xc040cb21 +drivers/md/dm-mod dm_table_flush_all 0x2ce0226a +drivers/md/dm-mod dm_table_get 0xd4878080 +drivers/md/dm-mod dm_table_get_mode 0x12d33b93 +drivers/md/dm-mod dm_table_get_size 0xd539b3c3 +drivers/md/dm-mod dm_table_put 0xfcc3ddc0 +drivers/md/dm-mod dm_table_unplug_all 0xdd62a87f +drivers/md/dm-mod dm_unregister_target 0x6614942e +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x64eb2c0e +drivers/md/dm-mod kcopyd_client_create 0x5e898c7f +drivers/md/dm-mod kcopyd_client_destroy 0xfff6a491 +drivers/md/dm-mod kcopyd_copy 0x20f3c688 +drivers/md/dm-multipath dm_pg_init_complete 0xc85673cd +drivers/md/dm-multipath dm_register_hw_handler 0xf3e5f35f +drivers/md/dm-multipath dm_register_path_selector 0x33e8e17f +drivers/md/dm-multipath dm_scsi_err_handler 0xd2e6be1a +drivers/md/dm-multipath dm_unregister_hw_handler 0x3c4b0ea9 +drivers/md/dm-multipath dm_unregister_path_selector 0x38f3f8d4 +drivers/md/md-mod bitmap_close_sync 0x48145b5e +drivers/md/md-mod bitmap_daemon_work 0x5f130fd4 +drivers/md/md-mod bitmap_end_sync 0x32c18586 +drivers/md/md-mod bitmap_endwrite 0x97c29578 +drivers/md/md-mod bitmap_start_sync 0xfb315bd2 +drivers/md/md-mod bitmap_startwrite 0x48226f65 +drivers/md/md-mod bitmap_unplug 0x725bc298 +drivers/md/md-mod md_check_recovery 0x9a69b4f3 +drivers/md/md-mod md_done_sync 0xf0d4216d +drivers/md/md-mod md_error 0xf4d41fa0 +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x7b0001e5 +drivers/md/md-mod md_unregister_thread 0x17400ed4 +drivers/md/md-mod md_wakeup_thread 0x7e87d19a +drivers/md/md-mod md_write_end 0x27b6fb80 +drivers/md/md-mod md_write_start 0x9488f7f3 +drivers/md/md-mod register_md_personality 0xfd1f7e8a +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x95d28726 +drivers/media/common/ir-common ir_codes_hauppauge_new 0xa3dc60f8 +drivers/media/common/ir-common ir_codes_pinnacle 0x4fa2b03e +drivers/media/common/ir-common ir_codes_pixelview 0x43eda01a +drivers/media/common/ir-common ir_codes_rc5_tv 0x44c715df +drivers/media/common/ir-common ir_codes_winfast 0x828ace4d +drivers/media/common/ir-common ir_decode_biphase 0x953031a2 +drivers/media/common/ir-common ir_decode_pulsedistance 0x5e6fea37 +drivers/media/common/ir-common ir_dump_samples 0x6896a5f6 +drivers/media/common/ir-common ir_extract_bits 0xe9f08798 +drivers/media/common/ir-common ir_input_init 0xad92b29a +drivers/media/common/ir-common ir_input_keydown 0x50b21c8d +drivers/media/common/ir-common ir_input_nokey 0xb3434550 +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x89411105 +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0x813ca084 +drivers/media/common/saa7146 saa7146_i2c_transfer 0x88c1ae5d +drivers/media/common/saa7146 saa7146_pgtable_alloc 0x8d0364bb +drivers/media/common/saa7146 saa7146_pgtable_build_single 0xe2028e68 +drivers/media/common/saa7146 saa7146_pgtable_free 0x9f273d03 +drivers/media/common/saa7146 saa7146_register_extension 0x039d2019 +drivers/media/common/saa7146 saa7146_setgpio 0x134e4b26 +drivers/media/common/saa7146 saa7146_unregister_extension 0x60576af5 +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0x8c37aaac +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0x02820075 +drivers/media/common/saa7146_vv saa7146_register_device 0x682aa013 +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0x8fa787ae +drivers/media/common/saa7146_vv saa7146_start_preview 0x36bc6ce5 +drivers/media/common/saa7146_vv saa7146_stop_preview 0xb34b231f +drivers/media/common/saa7146_vv saa7146_unregister_device 0x52685a9b +drivers/media/common/saa7146_vv saa7146_vv_init 0x36a35d9f +drivers/media/common/saa7146_vv saa7146_vv_release 0xb82229d7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0xde6b4996 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0xe947420b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0xb16ed17f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0xc0aa4704 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0x72d0e2c8 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0x3a0670c7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0x6d50f23f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0x4bd1a285 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0x0e2badef +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0x2254da7a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0x1d0a1462 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0x53b1cd2a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0x92c9f461 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0x6287b200 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0x34cc94d3 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0x1a88c3e9 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0x8d3ba5fa +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0x51151a39 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0x021a2c49 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0x2c0b0926 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0xe2eefe2a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0x9f31b46d +drivers/media/dvb/bt8xx/bt878 bt878 0x11c794de +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0xb4d28ded +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0xf5555d06 +drivers/media/dvb/bt8xx/bt878 bt878_stop 0x89e15d3e +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0x94a0e90a +drivers/media/dvb/bt8xx/dst dst_check_sum 0x43a983fd +drivers/media/dvb/bt8xx/dst dst_comm_init 0x80caabda +drivers/media/dvb/bt8xx/dst dst_command 0xc9a0ed70 +drivers/media/dvb/bt8xx/dst dst_error_bailout 0xa1dc6504 +drivers/media/dvb/bt8xx/dst dst_error_recovery 0xf60615c7 +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0xbf7b1a56 +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0x3484e990 +drivers/media/dvb/bt8xx/dst dst_pio_disable 0x6c7cda4c +drivers/media/dvb/bt8xx/dst dst_pio_enable 0x328f980e +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0x84a5e48e +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0x4e7ffa89 +drivers/media/dvb/bt8xx/dst rdc_reset_state 0x0f635878 +drivers/media/dvb/bt8xx/dst read_dst 0x577620d7 +drivers/media/dvb/bt8xx/dst write_dst 0xbbeef42a +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0xfe2b3782 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0xea407073 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0x820d96cc +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0x9329db6b +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0xd35d281d +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0xc5026703 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0x3d79fc14 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0x9ea819e0 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0xb8c63656 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0x435af419 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x40c1a490 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0xb01c0516 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0x3af06208 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x1209ade6 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x4595ed1e +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0x73f11c5a +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0xd65dacd7 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0x528ab203 +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0xa47bc903 +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0x3168d738 +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0xa8d6122a +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0x4724d9e1 +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0x97cff296 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0xae6166e2 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0xd3102edb +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0xe2304d72 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0x746276b0 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x98b1975c +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0xfdae3b30 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0xa89754a4 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0x24bf49d2 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0xd194f6ef +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0x88b586fb +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0x9bdcbc23 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0x2efff6c3 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0xf8ccf4f7 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0xac7f15ca +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0x96cf37b2 +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0xa1a8c7f9 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0xc7fbe18f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0x33dc8a75 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0xe59a4bea +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0xb6064ce4 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0xc11a30b8 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0x2799eb6e +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0xeefd9e92 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0xf3da062f +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0x89a50af1 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0x202a0c86 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0xeb44aca5 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0x2ff7305f +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0x7519cb76 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0x1915d74c +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0x71120e29 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0x8dba1a2e +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0x55c7c5af +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0x65a4f1ab +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0x240ab544 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0x880cccbe +drivers/media/dvb/frontends/at76c651 at76c651_attach 0xbb7cbcca +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0x33bb433a +drivers/media/dvb/frontends/cx22700 cx22700_attach 0xf8f0173d +drivers/media/dvb/frontends/cx22702 cx22702_attach 0x6c3d7ce2 +drivers/media/dvb/frontends/cx24110 cx24110_attach 0x1a48c68c +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0xf670960b +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0xca7a39be +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0x4ac49a93 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x0f739b55 +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0x7197ad40 +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0x1e7a30a1 +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0x60d5f3c1 +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x72b73801 +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0xf434f763 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x61716712 +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0x1536fd73 +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xa75bea99 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xaec96404 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x80e1bf15 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xbccde2e4 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x051954f8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0x8fc9fea7 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0xa0e34c4b +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0x431f1f05 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0x6719245e +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0x7e02151f +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xb6a3ccdf +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x3c620b08 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xb5a6ba8b +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x08fad2ed +drivers/media/dvb/frontends/l64781 l64781_attach 0xe339f868 +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0x9fc1ef81 +drivers/media/dvb/frontends/mt312 mt312_attach 0xab729838 +drivers/media/dvb/frontends/mt312 vp310_attach 0x689b5054 +drivers/media/dvb/frontends/mt352 mt352_attach 0xdaf54c78 +drivers/media/dvb/frontends/mt352 mt352_write 0x19375785 +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0x1c36705c +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x1e649698 +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0x42bb97bb +drivers/media/dvb/frontends/or51132 or51132_attach 0x6812975b +drivers/media/dvb/frontends/or51211 or51211_attach 0xab3784ee +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0x7cb475ca +drivers/media/dvb/frontends/sp8870 sp8870_attach 0x0fdff029 +drivers/media/dvb/frontends/sp887x sp887x_attach 0xa837b13f +drivers/media/dvb/frontends/stv0297 stv0297_attach 0x0945d05f +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0xb4949486 +drivers/media/dvb/frontends/stv0299 stv0299_attach 0xe7cc4f84 +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0xb6edf30d +drivers/media/dvb/frontends/tda10021 tda10021_attach 0x62e0275b +drivers/media/dvb/frontends/tda1004x tda10045_attach 0xc30a012e +drivers/media/dvb/frontends/tda1004x tda10046_attach 0x85f8b1aa +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0x8751add4 +drivers/media/dvb/frontends/tda8083 tda8083_attach 0x0f2aad14 +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0xfe007995 +drivers/media/dvb/frontends/ves1820 ves1820_attach 0x5cb3e25f +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0x80440f97 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0xb2dfcfe4 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0x098d92cd +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0x75825913 +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0x2de36d7f +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0x0a0b782b +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0xb27ba016 +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0xc124309d +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0x5e48c463 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0x758fc5a9 +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0x108965c0 +drivers/media/video/btcx-risc btcx_riscmem_free 0xf40c64c7 +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x65934fbc +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0xb6174f63 +drivers/media/video/bttv bttv_gpio_bits 0x07848aa4 +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0x2ada8fb2 +drivers/media/video/bttv bttv_gpio_read 0xf444921a +drivers/media/video/bttv bttv_gpio_write 0xde59af63 +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0xb61f2dcc +drivers/media/video/bttv bttv_sub_register 0x840d5547 +drivers/media/video/bttv bttv_sub_unregister 0xfe59d702 +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0x2c10e847 +drivers/media/video/cpia cpia_unregister_camera 0x32ea4301 +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0x1e914fe9 +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0xf6074d28 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0x0e7900e5 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0xd24ea6f9 +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0x33b32bc0 +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0x2ff8de5c +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0xe31ec1e4 +drivers/media/video/cx88/cx8802 cx8802_fini_common 0x4cc566e5 +drivers/media/video/cx88/cx8802 cx8802_init_common 0x7a885a7a +drivers/media/video/cx88/cx8802 cx8802_resume_common 0xe2325400 +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0xd3164730 +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x5b1a26b7 +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0xd5e375ce +drivers/media/video/cx88/cx88xx cx88_card_list 0x2b7ab46d +drivers/media/video/cx88/cx88xx cx88_card_setup 0xb8069c33 +drivers/media/video/cx88/cx88xx cx88_core_get 0xf9b5e531 +drivers/media/video/cx88/cx88xx cx88_core_irq 0x6a35e862 +drivers/media/video/cx88/cx88xx cx88_core_put 0x575c771f +drivers/media/video/cx88/cx88xx cx88_free_buffer 0xb47aea67 +drivers/media/video/cx88/cx88xx cx88_get_stereo 0xd865aa3d +drivers/media/video/cx88/cx88xx cx88_i2c_init 0xd268a0ae +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0x365a6c0c +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x4b35dc23 +drivers/media/video/cx88/cx88xx cx88_reset 0x87ed7446 +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0xfe2ec4b5 +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0x369a4183 +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0x1c7368e5 +drivers/media/video/cx88/cx88xx cx88_set_scale 0x8f3acf1d +drivers/media/video/cx88/cx88xx cx88_set_stereo 0x782b6e6c +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0x4e2089da +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0x2ba9e8ca +drivers/media/video/cx88/cx88xx cx88_shutdown 0xa4ab56f5 +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0x8a765ba3 +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0xa3671e0e +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x17a2e62e +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0x731dd23b +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0x8e5af3c2 +drivers/media/video/cx88/cx88xx cx88_subids 0x5804f888 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0xcbf8288d +drivers/media/video/cx88/cx88xx cx88_wakeup 0x3715ed94 +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0x128b9c41 +drivers/media/video/saa7134/saa7134 dmasound_exit 0x7882d362 +drivers/media/video/saa7134/saa7134 dmasound_init 0xce822a81 +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0xe8b9f37b +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0xb6e5fa24 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0x0cddfb9c +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0xb1db1c46 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0x919f4f20 +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0x6ca03bed +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0x8a6f0b98 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0x1c9fa156 +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0x4c920435 +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0x78ebcf91 +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0x01b34173 +drivers/media/video/tveeprom tveeprom_read 0x7e6df8c8 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0xe00be9d1 +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x1cef839c +drivers/media/video/v4l2-common v4l2_prio_check 0x62c15600 +drivers/media/video/v4l2-common v4l2_prio_close 0x0a59df07 +drivers/media/video/v4l2-common v4l2_prio_init 0x931bfaa6 +drivers/media/video/v4l2-common v4l2_prio_max 0x7121c34d +drivers/media/video/v4l2-common v4l2_prio_open 0x379df2e3 +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0xea6b1ba9 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0x6a3d8843 +drivers/media/video/video-buf videobuf_dma_init 0x715c5464 +drivers/media/video/video-buf videobuf_dma_init_kernel 0x46e415ae +drivers/media/video/video-buf videobuf_dma_init_overlay 0x7c7f60df +drivers/media/video/video-buf videobuf_dma_init_user 0xa37631f0 +drivers/media/video/video-buf videobuf_dma_pci_map 0xc2707445 +drivers/media/video/video-buf videobuf_dma_pci_sync 0xdfe8baf9 +drivers/media/video/video-buf videobuf_dma_pci_unmap 0x0ea118b8 +drivers/media/video/video-buf videobuf_dqbuf 0x4cb9ba64 +drivers/media/video/video-buf videobuf_iolock 0xa73d76a9 +drivers/media/video/video-buf videobuf_mmap_free 0x66de50c6 +drivers/media/video/video-buf videobuf_mmap_mapper 0xb1d4a55f +drivers/media/video/video-buf videobuf_mmap_setup 0xdd8cb968 +drivers/media/video/video-buf videobuf_next_field 0x2751a32e +drivers/media/video/video-buf videobuf_poll_stream 0xbf616295 +drivers/media/video/video-buf videobuf_qbuf 0xd37a12ec +drivers/media/video/video-buf videobuf_querybuf 0xf8645e83 +drivers/media/video/video-buf videobuf_queue_cancel 0x55751953 +drivers/media/video/video-buf videobuf_queue_init 0xfca3ac15 +drivers/media/video/video-buf videobuf_queue_is_busy 0xd8071c16 +drivers/media/video/video-buf videobuf_read_one 0x95d86f6e +drivers/media/video/video-buf videobuf_read_start 0xaea9b36c +drivers/media/video/video-buf videobuf_read_stop 0xeb1493c0 +drivers/media/video/video-buf videobuf_read_stream 0x02ef832b +drivers/media/video/video-buf videobuf_reqbufs 0x668496bf +drivers/media/video/video-buf videobuf_status 0x7dc7e4a7 +drivers/media/video/video-buf videobuf_streamoff 0xbee20326 +drivers/media/video/video-buf videobuf_streamon 0xec00d6df +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0xfc5d81d5 +drivers/media/video/video-buf videobuf_waiton 0x132e21d9 +drivers/media/video/video-buf-dvb videobuf_dvb_register 0x5e4006b3 +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0x7fb07be5 +drivers/media/video/videocodec videocodec_attach 0xc259037e +drivers/media/video/videocodec videocodec_detach 0xdf1ab027 +drivers/media/video/videocodec videocodec_register 0x97cdb469 +drivers/media/video/videocodec videocodec_unregister 0x8b5475d7 +drivers/media/video/videodev video_devdata 0xb0c7cb19 +drivers/media/video/videodev video_device_alloc 0x51bb7056 +drivers/media/video/videodev video_device_release 0x2380c2e1 +drivers/media/video/videodev video_exclusive_open 0xe616e828 +drivers/media/video/videodev video_exclusive_release 0xc37b41ad +drivers/media/video/videodev video_register_device 0x7fa6cbbe +drivers/media/video/videodev video_unregister_device 0xc5176854 +drivers/media/video/videodev video_usercopy 0xb493e2eb +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0xf28e400e +drivers/message/fusion/mptbase mpt_HardResetHandler 0xcf44fb13 +drivers/message/fusion/mptbase mpt_add_sge 0x89019e23 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0xe72f64c8 +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0x27b6d670 +drivers/message/fusion/mptbase mpt_attach 0x7b3a1d54 +drivers/message/fusion/mptbase mpt_config 0x59a2497e +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0x43575066 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0xa0091d12 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x86cc8a52 +drivers/message/fusion/mptbase mpt_findImVolumes 0x6b1803f6 +drivers/message/fusion/mptbase mpt_free_fw_memory 0x7177d429 +drivers/message/fusion/mptbase mpt_free_msg_frame 0x9f323eeb +drivers/message/fusion/mptbase mpt_get_msg_frame 0xe52a5ec5 +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0xe5acc498 +drivers/message/fusion/mptbase mpt_proc_root_dir 0xc6a64e53 +drivers/message/fusion/mptbase mpt_put_msg_frame 0x336f2f1d +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x44b3be9f +drivers/message/fusion/mptbase mpt_register 0x3c3d1579 +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x1e4b578a +drivers/message/fusion/mptbase mpt_resume 0x9a45e0b1 +drivers/message/fusion/mptbase mpt_send_handshake_request 0xbc5220ff +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0x64a6c47c +drivers/message/fusion/mptbase mpt_toolbox 0x50a4c144 +drivers/message/fusion/mptbase mpt_verify_adapter 0xf0024968 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x8059a23b +drivers/message/fusion/mptscsih mptscsih_abort 0x2b46bb40 +drivers/message/fusion/mptscsih mptscsih_bios_param 0x69e2bd7c +drivers/message/fusion/mptscsih mptscsih_bus_reset 0x3fb107c6 +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x49aa7d91 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0x7e5a8ea0 +drivers/message/fusion/mptscsih mptscsih_event_process 0x5727a3a3 +drivers/message/fusion/mptscsih mptscsih_host_reset 0x18a325bf +drivers/message/fusion/mptscsih mptscsih_info 0xc85a778c +drivers/message/fusion/mptscsih mptscsih_io_done 0xb80d79a2 +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x6cb60aaa +drivers/message/fusion/mptscsih mptscsih_proc_info 0x9ee9b71a +drivers/message/fusion/mptscsih mptscsih_qcmd 0x36a48a22 +drivers/message/fusion/mptscsih mptscsih_remove 0x16c8f97e +drivers/message/fusion/mptscsih mptscsih_resume 0x6b47f890 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0xc5042df4 +drivers/message/fusion/mptscsih mptscsih_shutdown 0x6dacbb2f +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0xd3c18e6e +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x8fab3175 +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x7e81be8c +drivers/message/fusion/mptscsih mptscsih_suspend 0x707c39e3 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x46a90813 +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_cntxt_list_add 0x11391530 +drivers/message/i2o/i2o_core i2o_cntxt_list_get 0x31555e7c +drivers/message/i2o/i2o_core i2o_cntxt_list_get_ptr 0x99c3228c +drivers/message/i2o/i2o_core i2o_cntxt_list_remove 0x15ca2d59 +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0x1e291a33 +drivers/message/i2o/i2o_core i2o_device_claim_release 0x69eb786a +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0x0d9d6bc6 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x84701e0d +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x9663dbd5 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0x4abd0d38 +drivers/message/i2o/i2o_core i2o_driver_register 0xb896aa2c +drivers/message/i2o/i2o_core i2o_driver_unregister 0x794862a2 +drivers/message/i2o/i2o_core i2o_dump_message 0xeb95f7f2 +drivers/message/i2o/i2o_core i2o_event_register 0xc4dc893e +drivers/message/i2o/i2o_core i2o_exec_lct_get 0xd960fed6 +drivers/message/i2o/i2o_core i2o_find_iop 0x3d9b7a75 +drivers/message/i2o/i2o_core i2o_iop_find_device 0x54e89785 +drivers/message/i2o/i2o_core i2o_msg_get_wait 0xdfcce4b3 +drivers/message/i2o/i2o_core i2o_msg_nop 0xd0b75f97 +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0xfbc889dd +drivers/message/i2o/i2o_core i2o_parm_field_get 0xb491df37 +drivers/message/i2o/i2o_core i2o_parm_issue 0x3372f131 +drivers/message/i2o/i2o_core i2o_parm_table_get 0x0605e90c +drivers/message/i2o/i2o_core i2o_status_get 0x25edd512 +drivers/mtd/chips/cfi_util cfi_fixup 0x1c51ca66 +drivers/mtd/chips/cfi_util cfi_read_pri 0xb7e8b7e5 +drivers/mtd/chips/cfi_util cfi_varsize_frob 0x690c19fe +drivers/mtd/chips/chipreg do_map_probe 0xabb8e647 +drivers/mtd/chips/chipreg map_destroy 0xf9a5f769 +drivers/mtd/chips/chipreg register_mtd_chip_driver 0x243c6966 +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0xa9a6ddd8 +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0xfe65480e +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0x2a20580a +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0xe6a2fbb3 +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0x46159b6e +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0x43c383a0 +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0x063608eb +drivers/mtd/mtdconcat mtd_concat_create 0x0513c000 +drivers/mtd/mtdconcat mtd_concat_destroy 0x9bc69da2 +drivers/mtd/mtdcore add_mtd_device 0x553c5f54 +drivers/mtd/mtdcore default_mtd_readv 0x16b59f28 +drivers/mtd/mtdcore default_mtd_writev 0x3d00d103 +drivers/mtd/mtdcore del_mtd_device 0xfb9836fe +drivers/mtd/mtdcore get_mtd_device 0x38164860 +drivers/mtd/mtdcore mtd_table 0xe1e1535f +drivers/mtd/mtdcore mtd_table_mutex 0x819ff03f +drivers/mtd/mtdcore put_mtd_device 0x266342e7 +drivers/mtd/mtdcore register_mtd_user 0x2d2e3ec1 +drivers/mtd/mtdcore unregister_mtd_user 0xabd26ac2 +drivers/mtd/mtdpart add_mtd_partitions 0xe9862dc2 +drivers/mtd/mtdpart del_mtd_partitions 0xbe35ab71 +drivers/mtd/mtdpart deregister_mtd_parser 0x78afd85c +drivers/mtd/mtdpart mtd_erase_callback 0x75fd2ef3 +drivers/mtd/mtdpart parse_mtd_partitions 0xadbf9416 +drivers/mtd/mtdpart register_mtd_parser 0x62257966 +drivers/mtd/nand/nand nand_default_bbt 0x907ee100 +drivers/mtd/nand/nand nand_release 0x73941fcc +drivers/mtd/nand/nand nand_scan 0x4e93e988 +drivers/mtd/nand/nand nand_scan_bbt 0x0a9f52e8 +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0x0c8a050a +drivers/mtd/onenand/onenand onenand_release 0xf7e119ff +drivers/mtd/onenand/onenand onenand_scan 0xb3714a4c +drivers/mtd/onenand/onenand onenand_scan_bbt 0x44bd3bd5 +drivers/net/8390 NS8390_init 0x804071ac +drivers/net/8390 __alloc_ei_netdev 0x6d2714d7 +drivers/net/8390 ei_close 0xd1a20845 +drivers/net/8390 ei_interrupt 0x7290cbe2 +drivers/net/8390 ei_open 0x857714eb +drivers/net/8390 ei_poll 0xc360c8ac +drivers/net/arcnet/arcnet alloc_arcdev 0xd3fe6422 +drivers/net/arcnet/arcnet arc_bcast_proto 0x02b15c33 +drivers/net/arcnet/arcnet arc_proto_default 0xc5f8d873 +drivers/net/arcnet/arcnet arc_proto_map 0xe5363a32 +drivers/net/arcnet/arcnet arc_proto_null 0xd875e61e +drivers/net/arcnet/arcnet arc_raw_proto 0x05778b31 +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0xff19d19b +drivers/net/arcnet/arcnet arcnet_unregister_proto 0x401b0755 +drivers/net/arcnet/com20020 com20020_check 0x8f1ae15b +drivers/net/arcnet/com20020 com20020_found 0x1bfcc42d +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0x8c26849e +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0x8713ce09 +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0xdbe57903 +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0xe011d623 +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0x5debe624 +drivers/net/irda/sir-dev irda_register_dongle 0x95623bfe +drivers/net/irda/sir-dev irda_unregister_dongle 0xe842ec3a +drivers/net/irda/sir-dev sirdev_get_instance 0x85bddf6f +drivers/net/irda/sir-dev sirdev_put_instance 0x17fa29b4 +drivers/net/irda/sir-dev sirdev_raw_read 0x14294321 +drivers/net/irda/sir-dev sirdev_raw_write 0x78af1367 +drivers/net/irda/sir-dev sirdev_receive 0xe3c38ad0 +drivers/net/irda/sir-dev sirdev_set_dongle 0x4c1076eb +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0x40f8e2c2 +drivers/net/irda/sir-dev sirdev_write_complete 0xa84f27e1 +drivers/net/mii generic_mii_ioctl 0x62cfde51 +drivers/net/mii mii_check_gmii_support 0x7f2b46e8 +drivers/net/mii mii_check_link 0xef517ad8 +drivers/net/mii mii_check_media 0x0ebd13aa +drivers/net/mii mii_ethtool_gset 0x7718e906 +drivers/net/mii mii_ethtool_sset 0x8cf43367 +drivers/net/mii mii_link_ok 0xb3c692a4 +drivers/net/mii mii_nway_restart 0x5d748a06 +drivers/net/phy/libphy genphy_config_advert 0x17e7e811 +drivers/net/phy/libphy genphy_config_aneg 0x8624145b +drivers/net/phy/libphy genphy_read_status 0x1566783d +drivers/net/phy/libphy mdiobus_register 0x52a56eba +drivers/net/phy/libphy mdiobus_unregister 0x9f79e427 +drivers/net/phy/libphy phy_attach 0xe2b954aa +drivers/net/phy/libphy phy_connect 0xa436579b +drivers/net/phy/libphy phy_detach 0xe805cffe +drivers/net/phy/libphy phy_disable_interrupts 0x85f7537c +drivers/net/phy/libphy phy_disconnect 0x34d306ce +drivers/net/phy/libphy phy_driver_register 0x32573aba +drivers/net/phy/libphy phy_driver_unregister 0x8e16f9a3 +drivers/net/phy/libphy phy_enable_interrupts 0x6815a9ef +drivers/net/phy/libphy phy_print_status 0x7ee42c28 +drivers/net/phy/libphy phy_read 0x7944053c +drivers/net/phy/libphy phy_sanitize_settings 0x55585fb7 +drivers/net/phy/libphy phy_start 0x60911c09 +drivers/net/phy/libphy phy_start_aneg 0x273ec71e +drivers/net/phy/libphy phy_start_interrupts 0x7896abd1 +drivers/net/phy/libphy phy_stop 0xc769a2b1 +drivers/net/phy/libphy phy_stop_interrupts 0x27a39bf8 +drivers/net/phy/libphy phy_write 0xe2a4aa5d +drivers/net/ppp_generic ppp_channel_index 0x711c5cab +drivers/net/ppp_generic ppp_input 0x94833eb5 +drivers/net/ppp_generic ppp_input_error 0x7392fa98 +drivers/net/ppp_generic ppp_output_wakeup 0x70273f0c +drivers/net/ppp_generic ppp_register_channel 0xc1d230d5 +drivers/net/ppp_generic ppp_register_compressor 0xffffafa0 +drivers/net/ppp_generic ppp_unit_number 0x93744fd7 +drivers/net/ppp_generic ppp_unregister_channel 0xe9cabc47 +drivers/net/ppp_generic ppp_unregister_compressor 0x6ce55d52 +drivers/net/pppox pppox_unbind_sock 0x6cd000d5 +drivers/net/pppox register_pppox_proto 0x8d8614bc +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x76135e6c +drivers/net/slhc slhc_free 0x2894cfb0 +drivers/net/slhc slhc_init 0x2e0e927f +drivers/net/slhc slhc_remember 0x0bc55868 +drivers/net/slhc slhc_toss 0xf89e3455 +drivers/net/slhc slhc_uncompress 0x3bc1319e +drivers/net/wan/hdlc alloc_hdlcdev 0xc2b74593 +drivers/net/wan/hdlc hdlc_close 0xdff00faf +drivers/net/wan/hdlc hdlc_ioctl 0x422301f7 +drivers/net/wan/hdlc hdlc_open 0xe431964f +drivers/net/wan/hdlc hdlc_set_carrier 0x36761a11 +drivers/net/wan/hdlc register_hdlc_device 0xac1f3b2e +drivers/net/wan/hdlc unregister_hdlc_device 0xb0a500cb +drivers/net/wan/syncppp sppp_attach 0xae445e8d +drivers/net/wan/syncppp sppp_close 0xf65537ea +drivers/net/wan/syncppp sppp_detach 0x260660cb +drivers/net/wan/syncppp sppp_do_ioctl 0x43155dd4 +drivers/net/wan/syncppp sppp_open 0x6264b707 +drivers/net/wan/syncppp sppp_reopen 0xc930a6d8 +drivers/net/wireless/airo init_airo_card 0xdc81ba99 +drivers/net/wireless/airo reset_airo_card 0x9dc2fc5b +drivers/net/wireless/airo stop_airo_card 0xcd06293d +drivers/net/wireless/atmel atmel_open 0xb74b9755 +drivers/net/wireless/atmel init_atmel_card 0xa1e389d7 +drivers/net/wireless/atmel stop_atmel_card 0x4d9fc77f +drivers/net/wireless/hermes hermes_allocate 0x52657e6d +drivers/net/wireless/hermes hermes_bap_pread 0x00f56735 +drivers/net/wireless/hermes hermes_bap_pwrite 0x66c87edb +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x9e63e63a +drivers/net/wireless/hermes hermes_docmd_wait 0x586026a5 +drivers/net/wireless/hermes hermes_init 0x2aa8b098 +drivers/net/wireless/hermes hermes_read_ltv 0x2743ed5f +drivers/net/wireless/hermes hermes_struct_init 0x7e23508a +drivers/net/wireless/hermes hermes_write_ltv 0xc0b735be +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x96c84ea1 +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0x719a9493 +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0xf3449400 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0x68ff6632 +drivers/net/wireless/hostap/hostap hostap_add_interface 0x77e8e118 +drivers/net/wireless/hostap/hostap hostap_add_sta 0x30997585 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0xfaaa4851 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0x0975eaea +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0x329484fd +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x125371a4 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0x6ea963ae +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3d91a091 +drivers/net/wireless/hostap/hostap hostap_free_data 0x55c8d987 +drivers/net/wireless/hostap/hostap hostap_get_porttype 0x9c216a8c +drivers/net/wireless/hostap/hostap hostap_get_stats 0xb68697d9 +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0x6c4beec3 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x7db50be6 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x94f92523 +drivers/net/wireless/hostap/hostap hostap_info_init 0x23303c94 +drivers/net/wireless/hostap/hostap hostap_info_process 0xb4cdb6d8 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0x240d8a8a +drivers/net/wireless/hostap/hostap hostap_init_data 0x05b9eb60 +drivers/net/wireless/hostap/hostap hostap_init_proc 0x0c31bc15 +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0x2984d9ed +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x795cf665 +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0x06f757e3 +drivers/net/wireless/hostap/hostap hostap_proc 0xb147225b +drivers/net/wireless/hostap/hostap hostap_remove_interface 0xb48609cc +drivers/net/wireless/hostap/hostap hostap_remove_proc 0x94e8ad85 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0x46f9421f +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0x273f1e92 +drivers/net/wireless/hostap/hostap hostap_set_encryption 0xedfa59ab +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0xa98e8a26 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0xe545f5a8 +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0xbe04bb4c +drivers/net/wireless/hostap/hostap hostap_set_string 0xb61df7fa +drivers/net/wireless/hostap/hostap hostap_set_word 0xd7dfa00b +drivers/net/wireless/hostap/hostap hostap_setup_dev 0x5a666fd2 +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x0533cdba +drivers/net/wireless/hostap/hostap hostap_update_rates 0x41676f92 +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x76ebd61b +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x48e51a70 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x7c8081e6 +drivers/net/wireless/orinoco __orinoco_down 0x92415c17 +drivers/net/wireless/orinoco __orinoco_up 0xa4afa63f +drivers/net/wireless/orinoco alloc_orinocodev 0x4e13d610 +drivers/net/wireless/orinoco free_orinocodev 0x52a99f27 +drivers/net/wireless/orinoco orinoco_interrupt 0xa4f4105f +drivers/net/wireless/orinoco orinoco_reinit_firmware 0xe09f78b2 +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xa283b14a +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x7c4cb3b6 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0x900818de +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x2c3819a9 +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0x05b3ee33 +drivers/net/wireless/prism54_softmac/islsm islsm_free 0xcecaec9c +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0xd3b28fef +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0xc878d333 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0xe827ba33 +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x6f614f9d +drivers/net/wireless/prism54_softmac/islsm register_islsm 0x7b7aca78 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0x0a768a9e +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0x2b3cbcf3 +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0x3604b620 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0xf39c88bd +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0xa7b7f81c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0x69ab8647 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0xfad6b972 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0x9f90ce12 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0x1be3ed6f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0xcfb05f0c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xfd4d74ff +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0x18dfe666 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0x4bcbfdd3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0xe48beffa +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0x5e0fdbac +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0xb5fa1295 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0x20ce9b15 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0x9c1c30f6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0xc0c5bc05 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0xee167627 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0xce339847 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0xa8d0182f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0x4c84f97c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x764e6350 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x432486d9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x2eb9fbb7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0x22a729d0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x6d989bc3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x9f414bec +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0xa63f1d77 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0xc8446c75 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0x96a79ba0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x5ebe7ead +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0xb181e5e1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0xe9da8de4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0xe5c45f83 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x6de428d4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0x615c6b24 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0xe45d32a0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x0f271a26 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x22797cdb +drivers/parport/parport parport_announce_port 0x7bb1109b +drivers/parport/parport parport_claim 0xbabd2dba +drivers/parport/parport parport_claim_or_block 0x99876d52 +drivers/parport/parport parport_find_base 0xbb92db43 +drivers/parport/parport parport_find_number 0x1ad187e6 +drivers/parport/parport parport_get_port 0x731714cd +drivers/parport/parport parport_ieee1284_ecp_read_data 0xb1871aab +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xfa050088 +drivers/parport/parport parport_ieee1284_ecp_write_data 0xbbe9ae10 +drivers/parport/parport parport_ieee1284_epp_read_addr 0xa16c550b +drivers/parport/parport parport_ieee1284_epp_read_data 0xcf220db0 +drivers/parport/parport parport_ieee1284_epp_write_addr 0xb2283dd6 +drivers/parport/parport parport_ieee1284_epp_write_data 0xf3c4934e +drivers/parport/parport parport_ieee1284_interrupt 0x03ce1a9d +drivers/parport/parport parport_ieee1284_read_byte 0x1a71be58 +drivers/parport/parport parport_ieee1284_read_nibble 0x00e682cb +drivers/parport/parport parport_ieee1284_write_compat 0xba9d3ad5 +drivers/parport/parport parport_negotiate 0xe4d4019f +drivers/parport/parport parport_put_port 0x941abe31 +drivers/parport/parport parport_read 0xce8e5d06 +drivers/parport/parport parport_register_device 0xeb8a37c0 +drivers/parport/parport parport_register_driver 0x9d9ea26c +drivers/parport/parport parport_register_port 0xb9d84510 +drivers/parport/parport parport_release 0xf0838d05 +drivers/parport/parport parport_remove_port 0x329ecffb +drivers/parport/parport parport_set_timeout 0x76b41066 +drivers/parport/parport parport_unregister_device 0x50f9e498 +drivers/parport/parport parport_unregister_driver 0xaaf2a421 +drivers/parport/parport parport_wait_event 0xb233be72 +drivers/parport/parport parport_wait_peripheral 0x7233f36c +drivers/parport/parport parport_write 0x40051fa1 +drivers/parport/parport_pc parport_pc_probe_port 0xf5139d51 +drivers/parport/parport_pc parport_pc_unregister_port 0x484f53c1 +drivers/pci/hotplug/acpiphp acpiphp_register_attention 0x8100266e +drivers/pci/hotplug/acpiphp acpiphp_unregister_attention 0xe81299e7 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_bus 0x603129a8 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_controller 0xaa159246 +drivers/pci/hotplug/pci_hotplug cpci_hp_start 0x6a8441be +drivers/pci/hotplug/pci_hotplug cpci_hp_stop 0x94ef4d05 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_bus 0x63f9d11d +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_controller 0xd4d518a9 +drivers/pci/hotplug/pci_hotplug pci_hotplug_slots_subsys 0x45067e7a +drivers/pci/hotplug/pci_hotplug pci_hp_change_slot_info 0x6bc9ad1a +drivers/pci/hotplug/pci_hotplug pci_hp_deregister 0xb3d2995e +drivers/pci/hotplug/pci_hotplug pci_hp_register 0x5b6d1099 +drivers/pcmcia/pcmcia cs_error 0x57cec280 +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0x045cad1e +drivers/pcmcia/pcmcia pcmcia_deregister_client 0xae675800 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0x075b916a +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0xdca96ff9 +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0x0f1178b9 +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0x59ffae1b +drivers/pcmcia/pcmcia pcmcia_get_status 0xe774b512 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0xaf893c9b +drivers/pcmcia/pcmcia pcmcia_get_window 0x69b063e5 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0xab4c0e64 +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x9fa8a474 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0x4f30a9ed +drivers/pcmcia/pcmcia pcmcia_register_client 0x8bc8cee4 +drivers/pcmcia/pcmcia pcmcia_register_driver 0x219eeb24 +drivers/pcmcia/pcmcia pcmcia_release_configuration 0xde77e33a +drivers/pcmcia/pcmcia pcmcia_release_io 0x1154bbed +drivers/pcmcia/pcmcia pcmcia_release_irq 0x74d75e5d +drivers/pcmcia/pcmcia pcmcia_release_window 0xef402565 +drivers/pcmcia/pcmcia pcmcia_request_configuration 0x2a6a6e0d +drivers/pcmcia/pcmcia pcmcia_request_io 0x0e36176f +drivers/pcmcia/pcmcia pcmcia_request_irq 0xa2025435 +drivers/pcmcia/pcmcia pcmcia_request_window 0xbc9bb4f5 +drivers/pcmcia/pcmcia pcmcia_reset_card 0xeb83a849 +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0xe717d692 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0xb994050d +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0x5fa268c6 +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x87afd771 +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0x4874af57 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0x66960399 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0xc81c1154 +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0xf6cc48e1 +drivers/pcmcia/pcmcia_core pccard_reset_card 0xbcd22074 +drivers/pcmcia/pcmcia_core pccard_static_ops 0x08e15e46 +drivers/pcmcia/pcmcia_core pccard_validate_cis 0x9e3e3f20 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0x839f2b9d +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0x69c2f309 +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0xaf6f7e86 +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0x5a3ef03e +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0x934defc9 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0x278bfab0 +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x50f64851 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0x6c4d4094 +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0xceeb7714 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xe4b42c98 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0x1c617556 +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0x4318a79e +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x6bf27e54 +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0xd87f8d62 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0xc4144cb3 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0x09464267 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0xb533d105 +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0xff8ff075 +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0xdae848e0 +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0xd0953530 +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0xe7d8b8ed +drivers/pcmcia/pcmcia_core release_cis_mem 0xa48f23b9 +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0xb3a9a4f2 +drivers/scsi/libata __sata_phy_reset 0xe54d0d86 +drivers/scsi/libata ata_acpi_bus_register 0x4eb7c257 +drivers/scsi/libata ata_acpi_exec_tfs 0xd437dd47 +drivers/scsi/libata ata_acpi_get_timing 0x47dad9d3 +drivers/scsi/libata ata_acpi_push_id 0xa4db454a +drivers/scsi/libata ata_acpi_push_timing 0x0cfd3322 +drivers/scsi/libata ata_altstatus 0x641d230c +drivers/scsi/libata ata_bmdma_irq_clear 0xd2e32d75 +drivers/scsi/libata ata_bmdma_setup 0x0d0fda90 +drivers/scsi/libata ata_bmdma_start 0x015b8c98 +drivers/scsi/libata ata_bmdma_status 0xd7ae95c2 +drivers/scsi/libata ata_bmdma_stop 0x3fd8f9e9 +drivers/scsi/libata ata_bus_probe 0xd755fe75 +drivers/scsi/libata ata_bus_reset 0xbf7ec01b +drivers/scsi/libata ata_check_status 0xc8f0238c +drivers/scsi/libata ata_dev_classify 0xee64669b +drivers/scsi/libata ata_dev_config 0x23a862e0 +drivers/scsi/libata ata_dev_id_string 0x813edb38 +drivers/scsi/libata ata_device_add 0x935a926d +drivers/scsi/libata ata_device_resume 0x99f872cf +drivers/scsi/libata ata_device_shutdown 0xc7386f23 +drivers/scsi/libata ata_device_suspend 0x2b37b7ee +drivers/scsi/libata ata_eng_timeout 0x795d4f09 +drivers/scsi/libata ata_exec_command 0x1a74b671 +drivers/scsi/libata ata_host_intr 0xa4adab56 +drivers/scsi/libata ata_host_set_remove 0xac41519c +drivers/scsi/libata ata_host_stop 0x804df178 +drivers/scsi/libata ata_hotplug_plug 0xaf300197 +drivers/scsi/libata ata_hotplug_unplug 0x828b70b5 +drivers/scsi/libata ata_interrupt 0x1cf5f836 +drivers/scsi/libata ata_noop_dev_select 0xcb20281f +drivers/scsi/libata ata_pci_device_resume 0xec586f71 +drivers/scsi/libata ata_pci_device_suspend 0x34c054fc +drivers/scsi/libata ata_pci_host_stop 0x906f8598 +drivers/scsi/libata ata_pci_init_native_mode 0x9c0b75aa +drivers/scsi/libata ata_pci_init_one 0x856392b4 +drivers/scsi/libata ata_pci_remove_one 0x6a20d93b +drivers/scsi/libata ata_port_disable 0x4673c34c +drivers/scsi/libata ata_port_probe 0xbf407a11 +drivers/scsi/libata ata_port_start 0x4294d292 +drivers/scsi/libata ata_port_stop 0x4baf6b00 +drivers/scsi/libata ata_qc_complete 0x08c68d13 +drivers/scsi/libata ata_qc_issue_prot 0xbf9fd47d +drivers/scsi/libata ata_qc_prep 0x08612117 +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0xe1a45c73 +drivers/scsi/libata ata_scsi_device_shutdown 0xfcac206a +drivers/scsi/libata ata_scsi_device_suspend 0x8d63ace5 +drivers/scsi/libata ata_scsi_error 0x8a390a9e +drivers/scsi/libata ata_scsi_ioctl 0x33f2cc57 +drivers/scsi/libata ata_scsi_queuecmd 0x1b53d1c9 +drivers/scsi/libata ata_scsi_release 0xbddf434a +drivers/scsi/libata ata_scsi_simulate 0x1ba6815a +drivers/scsi/libata ata_scsi_slave_config 0x627161c1 +drivers/scsi/libata ata_sg_init 0xfac9c64e +drivers/scsi/libata ata_sg_init_one 0xe3a61d0b +drivers/scsi/libata ata_std_bios_param 0x3aa1f4e4 +drivers/scsi/libata ata_std_dev_select 0xa0117276 +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0xd25f9a2e +drivers/scsi/libata ata_tf_load 0xe67cf1af +drivers/scsi/libata ata_tf_read 0x31e90724 +drivers/scsi/libata ata_tf_to_fis 0x97bb9d3f +drivers/scsi/libata ata_timing_compute 0x08dc7e4c +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata do_drive_get_GTF 0x36909a5f +drivers/scsi/libata do_drive_set_taskfiles 0xd63218c6 +drivers/scsi/libata pci_test_config_bits 0x7e298270 +drivers/scsi/libata sata_phy_reset 0x71505f9e +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x50238de5 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0xd38ea5dc +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x83dd3fbe +drivers/scsi/qlogicfas408 qlogicfas408_abort 0xc354a865 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0x0ec1fbce +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0xbd5ce992 +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0xb58dcf15 +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x6a43a093 +drivers/scsi/qlogicfas408 qlogicfas408_info 0x0b15dec0 +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0xdbef4c63 +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0x384536a9 +drivers/scsi/raid_class raid_class_release 0x884e44ae +drivers/scsi/raid_class raid_component_add 0xf1644629 +drivers/scsi/sas/sas_class sas_register_ha 0x8e0f7aca +drivers/scsi/sas/sas_class sas_unregister_ha 0x8c937362 +drivers/scsi/scsi_transport_fc fc_attach_transport 0x1e70186b +drivers/scsi/scsi_transport_fc fc_release_transport 0xe3fe0d61 +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x8ac7863e +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0x4b7c1f6c +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x98eca66f +drivers/scsi/scsi_transport_fc fc_remove_host 0xc87bc9f4 +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0x6a14647a +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0x8677ed8d +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x200e54d7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x22696594 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x4f8c4bfc +drivers/scsi/scsi_transport_sas sas_attach_transport 0x1b1bba38 +drivers/scsi/scsi_transport_sas sas_phy_add 0x40b2eb6d +drivers/scsi/scsi_transport_sas sas_phy_alloc 0xa6bd5944 +drivers/scsi/scsi_transport_sas sas_phy_delete 0x77e1bf18 +drivers/scsi/scsi_transport_sas sas_phy_free 0x6e157f85 +drivers/scsi/scsi_transport_sas sas_release_transport 0x973c60d6 +drivers/scsi/scsi_transport_sas sas_remove_host 0x40ce95f7 +drivers/scsi/scsi_transport_sas sas_rphy_add 0xc8505966 +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x9c4710a4 +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x8b544eb8 +drivers/scsi/scsi_transport_sas sas_rphy_free 0x603797af +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0x30d2af0d +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0xa216156a +drivers/scsi/scsi_transport_spi spi_attach_transport 0x96f393c6 +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0x59febe91 +drivers/scsi/scsi_transport_spi spi_dv_device 0x9a517552 +drivers/scsi/scsi_transport_spi spi_release_transport 0xdcefd28c +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0x1d876546 +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x1b9679c9 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0xf7714635 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x6fc708f6 +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0x08c8f7f0 +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0x5addf94b +drivers/telephony/ixj ixj_pcmcia_probe 0x63dc93c8 +drivers/telephony/phonedev phone_register_device 0x5a025986 +drivers/telephony/phonedev phone_unregister_device 0x66b5ecfe +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x32a14648 +drivers/usb/core/usbcore usb_alloc_dev 0xbc630db4 +drivers/usb/core/usbcore usb_alloc_urb 0x88b491f5 +drivers/usb/core/usbcore usb_altnum_to_altsetting 0x244cb5b7 +drivers/usb/core/usbcore usb_buffer_alloc 0x6f840db5 +drivers/usb/core/usbcore usb_buffer_free 0x27467bfa +drivers/usb/core/usbcore usb_buffer_map_sg 0xbf231b46 +drivers/usb/core/usbcore usb_buffer_unmap_sg 0x7d2a5a36 +drivers/usb/core/usbcore usb_bulk_msg 0x287d226e +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0x2ec67843 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0x697b9658 +drivers/usb/core/usbcore usb_claim_bandwidth 0x4b97be0e +drivers/usb/core/usbcore usb_clear_halt 0x244cf624 +drivers/usb/core/usbcore usb_control_msg 0x910c6e45 +drivers/usb/core/usbcore usb_create_hcd 0x9ac86df6 +drivers/usb/core/usbcore usb_deregister 0xeba5fae3 +drivers/usb/core/usbcore usb_deregister_dev 0x1d3b00fa +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0xdaf6e67f +drivers/usb/core/usbcore usb_driver_claim_interface 0xb2d07dea +drivers/usb/core/usbcore usb_driver_release_interface 0xc92343b5 +drivers/usb/core/usbcore usb_find_device 0x89860d5c +drivers/usb/core/usbcore usb_find_interface 0xc6c9234e +drivers/usb/core/usbcore usb_free_urb 0x115ddb60 +drivers/usb/core/usbcore usb_get_current_frame_number 0xabaea177 +drivers/usb/core/usbcore usb_get_descriptor 0x8f83e54c +drivers/usb/core/usbcore usb_get_dev 0xa2a5ed76 +drivers/usb/core/usbcore usb_get_intf 0x394ed6fc +drivers/usb/core/usbcore usb_get_status 0x9e0f4b5f +drivers/usb/core/usbcore usb_get_string 0x11eb6850 +drivers/usb/core/usbcore usb_get_urb 0x98090304 +drivers/usb/core/usbcore usb_hc_died 0xa1d61ab6 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0x2ddbd064 +drivers/usb/core/usbcore usb_hcd_pci_probe 0xc32ba814 +drivers/usb/core/usbcore usb_hcd_pci_remove 0x428264f3 +drivers/usb/core/usbcore usb_hcd_pci_resume 0x2f7fc7f2 +drivers/usb/core/usbcore usb_hcd_pci_suspend 0x39eb6347 +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0xcdca9154 +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0x4b3426c1 +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0xadae84c7 +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0xf6799eef +drivers/usb/core/usbcore usb_ifnum_to_if 0x3054a579 +drivers/usb/core/usbcore usb_init_urb 0xa280a05b +drivers/usb/core/usbcore usb_kill_urb 0xf475f176 +drivers/usb/core/usbcore usb_lock_device 0xfc1fdadc +drivers/usb/core/usbcore usb_lock_device_for_reset 0x2e26f027 +drivers/usb/core/usbcore usb_match_id 0xd4ef6955 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0xd5d6c7a0 +drivers/usb/core/usbcore usb_put_dev 0xee4cc59f +drivers/usb/core/usbcore usb_put_hcd 0x3e8c26e1 +drivers/usb/core/usbcore usb_put_intf 0xd357aa58 +drivers/usb/core/usbcore usb_register 0xf00060ef +drivers/usb/core/usbcore usb_register_dev 0x1d3e8bc3 +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x1287dfc1 +drivers/usb/core/usbcore usb_remove_hcd 0xe4e3a26c +drivers/usb/core/usbcore usb_reset_configuration 0x5a0f5c00 +drivers/usb/core/usbcore usb_reset_device 0x706630e4 +drivers/usb/core/usbcore usb_set_device_state 0x61f6608e +drivers/usb/core/usbcore usb_set_interface 0x3063026d +drivers/usb/core/usbcore usb_sg_cancel 0x84352d28 +drivers/usb/core/usbcore usb_sg_init 0xfcb56ebd +drivers/usb/core/usbcore usb_sg_wait 0xcaf5fe73 +drivers/usb/core/usbcore usb_string 0xc408a1cd +drivers/usb/core/usbcore usb_submit_urb 0x1435f9c4 +drivers/usb/core/usbcore usb_trylock_device 0x4921de58 +drivers/usb/core/usbcore usb_unlink_urb 0xbe8d9924 +drivers/usb/core/usbcore usb_unlock_device 0x70218642 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/host/sl811-hcd sl811h_driver 0x04c426f1 +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0xb8cb0e94 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0xc67b2af3 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0xf6594546 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0xa7403276 +drivers/usb/media/usbvideo RingQueue_Dequeue 0xd5112b23 +drivers/usb/media/usbvideo RingQueue_Enqueue 0x23ecbae1 +drivers/usb/media/usbvideo RingQueue_Flush 0xf4dcb853 +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0x5e1d70f4 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0x2b499883 +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x576c525d +drivers/usb/media/usbvideo usbvideo_Deregister 0x6574021f +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0x99707a0e +drivers/usb/media/usbvideo usbvideo_TestPattern 0x7d3a03c4 +drivers/usb/media/usbvideo usbvideo_register 0x8a859d0f +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0xe8febec4 +drivers/usb/media/w9968cf w9968cf_vppmod_register 0x7241b0a2 +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0x53ae7542 +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0x6159372e +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0x398a8eb4 +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0xbcd395b5 +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0xb9d5a721 +drivers/usb/net/usbnet usbnet_defer_kevent 0xb6fec4bc +drivers/usb/net/usbnet usbnet_disconnect 0xc63ef070 +drivers/usb/net/usbnet usbnet_get_drvinfo 0x9b10ce75 +drivers/usb/net/usbnet usbnet_get_endpoints 0x06932dfc +drivers/usb/net/usbnet usbnet_get_msglevel 0x09b90d82 +drivers/usb/net/usbnet usbnet_probe 0xa4fc4ba4 +drivers/usb/net/usbnet usbnet_resume 0xc50998aa +drivers/usb/net/usbnet usbnet_set_msglevel 0x3ad4ea7a +drivers/usb/net/usbnet usbnet_skb_return 0xae7a0aba +drivers/usb/net/usbnet usbnet_suspend 0xc73dd9f5 +drivers/usb/serial/usbserial ezusb_set_reset 0xc748eabc +drivers/usb/serial/usbserial ezusb_writememory 0xd84a1b10 +drivers/usb/serial/usbserial usb_serial_deregister 0x3c4510a9 +drivers/usb/serial/usbserial usb_serial_disconnect 0xf31d4101 +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x1cb9381b +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0xf61ae369 +drivers/usb/serial/usbserial usb_serial_register 0xcc34c794 +drivers/video/backlight/backlight backlight_device_register 0x3493f32f +drivers/video/backlight/backlight backlight_device_unregister 0x130b9bbe +drivers/video/backlight/lcd lcd_device_register 0x1ff4bd2b +drivers/video/backlight/lcd lcd_device_unregister 0xfbf5f50a +drivers/video/console/bitblit fbcon_set_bitops 0x6dea825b +drivers/video/console/font find_font 0xf7584a9c +drivers/video/console/font get_default_font 0x093e3659 +drivers/video/console/softcursor soft_cursor 0x4e76150e +drivers/video/console/tileblit fbcon_set_tileops 0x60e5e3bc +drivers/video/cyber2000fb cyber2000fb_attach 0x536743b6 +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x046b3650 +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0xf58da538 +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0xca589508 +drivers/video/macmodes mac_find_mode 0x3822cec5 +drivers/video/macmodes mac_map_monitor_sense 0xe2304303 +drivers/video/macmodes mac_var_to_vmode 0x00907cd5 +drivers/video/macmodes mac_vmode_to_var 0x08ed0b62 +drivers/video/matrox/g450_pll g450_mnp2f 0xe2ea12fc +drivers/video/matrox/g450_pll matroxfb_g450_setclk 0xcb0a026d +drivers/video/matrox/g450_pll matroxfb_g450_setpll_cond 0x6d76a154 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_init 0x823e1c7e +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_restore 0x4a4a862f +drivers/video/matrox/matroxfb_DAC1064 matrox_G100 0x3ad58dc6 +drivers/video/matrox/matroxfb_DAC1064 matrox_mystique 0x5aff1056 +drivers/video/matrox/matroxfb_Ti3026 matrox_millennium 0xa28a9e08 +drivers/video/matrox/matroxfb_accel matrox_cfbX_init 0x41c74a64 +drivers/video/matrox/matroxfb_base matroxfb_enable_irq 0xd0ed3100 +drivers/video/matrox/matroxfb_base matroxfb_register_driver 0xf0a1dd5f +drivers/video/matrox/matroxfb_base matroxfb_unregister_driver 0x2df4ea9b +drivers/video/matrox/matroxfb_base matroxfb_wait_for_sync 0x2aef8034 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_connect 0x1ecf4b37 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_shutdown 0xf8892df4 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_in 0x968bbf16 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_out 0xd6c9ffe7 +drivers/video/matrox/matroxfb_misc matroxfb_PLL_calcclock 0x25cf8049 +drivers/video/matrox/matroxfb_misc matroxfb_read_pins 0x8fac674d +drivers/video/matrox/matroxfb_misc matroxfb_var2my 0xabd8e427 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWinit 0xf6833cd2 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWrestore 0x8b85a55b +drivers/video/sis/sisfb sis_free 0xfe963115 +drivers/video/sis/sisfb sis_free_new 0x53424c39 +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0x3da584bd +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0xe73d2dfd +drivers/w1/ds9490r ds_put_device 0xbfddc8cb +drivers/w1/ds9490r ds_read_bit 0x23852d4c +drivers/w1/ds9490r ds_read_block 0x770fd3ca +drivers/w1/ds9490r ds_read_byte 0xe31836df +drivers/w1/ds9490r ds_reset 0xd20df513 +drivers/w1/ds9490r ds_touch_bit 0x06680f9b +drivers/w1/ds9490r ds_write_bit 0x9f1e9ca1 +drivers/w1/ds9490r ds_write_block 0xb54eb6d4 +drivers/w1/ds9490r ds_write_byte 0xa2b0f0e4 +drivers/w1/wire w1_add_master_device 0x65e2815c +drivers/w1/wire w1_calc_crc8 0x63757e92 +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xdb5cf91c +drivers/w1/wire w1_family_put 0xd304807a +drivers/w1/wire w1_family_registered 0x2854d4f0 +drivers/w1/wire w1_read_8 0xd1b98cdd +drivers/w1/wire w1_read_block 0xefe5d6b3 +drivers/w1/wire w1_register_family 0xc3df11e5 +drivers/w1/wire w1_remove_master_device 0xf13283f7 +drivers/w1/wire w1_reset_bus 0x91f3f00d +drivers/w1/wire w1_reset_select_slave 0xf63dec43 +drivers/w1/wire w1_search_devices 0xdd5eba27 +drivers/w1/wire w1_touch_bit 0x1e3997a1 +drivers/w1/wire w1_unregister_family 0x79444085 +drivers/w1/wire w1_write_8 0xaedf9856 +drivers/w1/wire w1_write_block 0xc4823474 +fs/configfs/configfs config_group_init 0x400f15ea +fs/configfs/configfs config_group_init_type_name 0x045d397a +fs/configfs/configfs config_item_get 0x5be73321 +fs/configfs/configfs config_item_init 0xe88ef404 +fs/configfs/configfs config_item_init_type_name 0x8b5c7f3a +fs/configfs/configfs config_item_put 0x5b55ed63 +fs/configfs/configfs config_item_set_name 0x47d05708 +fs/configfs/configfs configfs_register_subsystem 0x80355cb6 +fs/configfs/configfs configfs_unregister_subsystem 0x7abb686e +fs/exportfs/exportfs export_op_default 0x93efa581 +fs/exportfs/exportfs find_exported_dentry 0x70a27442 +fs/fat/fat fat_add_entries 0x27b63028 +fs/fat/fat fat_alloc_new_dir 0x351a08f8 +fs/fat/fat fat_attach 0xdfa7febb +fs/fat/fat fat_build_inode 0xe9604f56 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0x3880d9f6 +fs/fat/fat fat_dir_empty 0x40460b55 +fs/fat/fat fat_fill_super 0x43dcb1c2 +fs/fat/fat fat_free_clusters 0x87505022 +fs/fat/fat fat_fs_panic 0x95954612 +fs/fat/fat fat_get_dotdot_entry 0x405ab65e +fs/fat/fat fat_notify_change 0x4ad0436e +fs/fat/fat fat_remove_entries 0xe31fcab9 +fs/fat/fat fat_scan 0x47b8ffb6 +fs/fat/fat fat_search_long 0x81a4dc98 +fs/fat/fat fat_sync_bhs 0x3174fc19 +fs/fat/fat fat_sync_inode 0x4da5ddf3 +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0xb804d440 +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0x0a245733 +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0xef2a705a +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0xd10f79ac +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0x00c9d44e +fs/jbd/jbd journal_abort 0x82651293 +fs/jbd/jbd journal_ack_err 0xea9edbdd +fs/jbd/jbd journal_blocks_per_page 0x73d164e7 +fs/jbd/jbd journal_check_available_features 0x57f38dc3 +fs/jbd/jbd journal_check_used_features 0x64c75e20 +fs/jbd/jbd journal_clear_err 0xde5383de +fs/jbd/jbd journal_create 0xdfabfe99 +fs/jbd/jbd journal_destroy 0x2b11edd8 +fs/jbd/jbd journal_dirty_data 0xa6033c58 +fs/jbd/jbd journal_dirty_metadata 0x992f475d +fs/jbd/jbd journal_errno 0x20441029 +fs/jbd/jbd journal_extend 0xaf696132 +fs/jbd/jbd journal_flush 0x70266a97 +fs/jbd/jbd journal_force_commit 0x7bfafa1e +fs/jbd/jbd journal_force_commit_nested 0x48b8e32d +fs/jbd/jbd journal_forget 0x829ef707 +fs/jbd/jbd journal_get_create_access 0xad3a0e08 +fs/jbd/jbd journal_get_undo_access 0x90e8d6ce +fs/jbd/jbd journal_get_write_access 0xfd5ac7d0 +fs/jbd/jbd journal_init_dev 0xc60279fb +fs/jbd/jbd journal_init_inode 0xed082282 +fs/jbd/jbd journal_invalidatepage 0xf9f7a6c9 +fs/jbd/jbd journal_load 0x46523560 +fs/jbd/jbd journal_lock_updates 0x18ed5ee8 +fs/jbd/jbd journal_release_buffer 0x05a68e2d +fs/jbd/jbd journal_restart 0x78251f14 +fs/jbd/jbd journal_revoke 0x254bf9a4 +fs/jbd/jbd journal_set_features 0xb204a810 +fs/jbd/jbd journal_start 0xe9817186 +fs/jbd/jbd journal_start_commit 0x26e3b8a6 +fs/jbd/jbd journal_stop 0xf4fa7494 +fs/jbd/jbd journal_try_to_free_buffers 0xa66d0ef4 +fs/jbd/jbd journal_unlock_updates 0x4d2c9910 +fs/jbd/jbd journal_update_format 0xadf2f7ad +fs/jbd/jbd journal_update_superblock 0x44ef78db +fs/jbd/jbd journal_wipe 0xc8d9f7be +fs/jbd/jbd log_wait_commit 0x4426e08e +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0xa42621ed +fs/lockd/lockd nlmsvc_ops 0x449bcee9 +fs/nfsd/nfsd nfs4_acl_add_ace 0xc9a24970 +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0xef013964 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0xd3452119 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xdae05306 +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x81a17396 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0xf56c2017 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0xb35a8de5 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xc4d99852 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0x45a74218 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0xa60232ab +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0x1043b1fb +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x7cdb58bd +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0xf982e6db +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0xfa83d357 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0x71bf5d78 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0x006c0960 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x82de34a4 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0x016dbbb0 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xb6ebf62a +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0x9d824eaa +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0xde787374 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0x1aac7722 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0x4fdac306 +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0xfb05676e +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0x3488cef6 +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0x558db037 +fs/relayfs/relayfs relay_buf_full 0x37e52c45 +fs/relayfs/relayfs relay_close 0x9fe629b3 +fs/relayfs/relayfs relay_flush 0x92e96138 +fs/relayfs/relayfs relay_open 0x28f67481 +fs/relayfs/relayfs relay_reset 0xd76fff9e +fs/relayfs/relayfs relay_subbufs_consumed 0xb4c351d4 +fs/relayfs/relayfs relay_switch_subbuf 0xf0b4f0dc +fs/relayfs/relayfs relayfs_create_dir 0x82d058db +fs/relayfs/relayfs relayfs_file_operations 0x4c92afdb +fs/relayfs/relayfs relayfs_remove_dir 0x9c4b61ad +lib/crc-ccitt crc_ccitt 0x7e821ba1 +lib/crc-ccitt crc_ccitt_table 0x7f03b6a9 +lib/crc16 crc16 0x84d4c8cc +lib/crc16 crc16_table 0x146289b7 +lib/libcrc32c crc32c_be 0xc2904b41 +lib/libcrc32c crc32c_le 0x90ec507c +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0x015db745 +net/appletalk/appletalk alloc_ltalkdev 0x5852679c +net/appletalk/appletalk atalk_find_dev_addr 0x03f7636f +net/appletalk/appletalk atrtr_get_dev 0x30fa8ddd +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0x0d20fd25 +net/ax25/ax25 ax25_findbyuid 0xf5550f68 +net/ax25/ax25 ax25_hard_header 0x8e8a125e +net/ax25/ax25 ax25_linkfail_register 0xb2002c0a +net/ax25/ax25 ax25_linkfail_release 0xe148b44b +net/ax25/ax25 ax25_listen_register 0x58acfc3b +net/ax25/ax25 ax25_listen_release 0x99772599 +net/ax25/ax25 ax25_protocol_register 0x9bc0da53 +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0x5cd5c043 +net/ax25/ax25 ax25_send_frame 0xe4132589 +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0x43b0c397 +net/bluetooth/bluetooth bt_accept_enqueue 0xe1e1e3a2 +net/bluetooth/bluetooth bt_accept_unlink 0xabe33690 +net/bluetooth/bluetooth bt_class 0x081fae99 +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0xaed667eb +net/bluetooth/bluetooth bt_sock_poll 0x0702bc97 +net/bluetooth/bluetooth bt_sock_recvmsg 0x4278fe9d +net/bluetooth/bluetooth bt_sock_register 0x380c9c74 +net/bluetooth/bluetooth bt_sock_unlink 0x782d084d +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0xe1ded7fc +net/bluetooth/bluetooth hci_alloc_dev 0x4183bad2 +net/bluetooth/bluetooth hci_conn_auth 0xb564db45 +net/bluetooth/bluetooth hci_conn_change_link_key 0xb0dbfb0a +net/bluetooth/bluetooth hci_conn_encrypt 0xcd78d978 +net/bluetooth/bluetooth hci_conn_switch_role 0x7feb4314 +net/bluetooth/bluetooth hci_connect 0xf262532a +net/bluetooth/bluetooth hci_free_dev 0xb5462967 +net/bluetooth/bluetooth hci_get_route 0x65ea22a4 +net/bluetooth/bluetooth hci_register_cb 0x7eceacad +net/bluetooth/bluetooth hci_register_dev 0x2310f287 +net/bluetooth/bluetooth hci_register_proto 0x02ee8e23 +net/bluetooth/bluetooth hci_resume_dev 0x73089d57 +net/bluetooth/bluetooth hci_send_acl 0x1ff7a358 +net/bluetooth/bluetooth hci_send_sco 0xcd7842fe +net/bluetooth/bluetooth hci_suspend_dev 0xe002e1b8 +net/bluetooth/bluetooth hci_unregister_cb 0x831a1e44 +net/bluetooth/bluetooth hci_unregister_dev 0x43d3b605 +net/bluetooth/bluetooth hci_unregister_proto 0x558c7755 +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0x885540ab +net/bridge/netfilter/ebtables ebt_do_table 0x8837c486 +net/bridge/netfilter/ebtables ebt_register_match 0x908105e3 +net/bridge/netfilter/ebtables ebt_register_table 0x9bdf8e45 +net/bridge/netfilter/ebtables ebt_register_target 0x46735dab +net/bridge/netfilter/ebtables ebt_register_watcher 0x5db7003a +net/bridge/netfilter/ebtables ebt_unregister_match 0xb2e11e30 +net/bridge/netfilter/ebtables ebt_unregister_table 0x4e1e778b +net/bridge/netfilter/ebtables ebt_unregister_target 0x3b061f68 +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x20a79cb2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0x87634e95 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc83c96e5 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x2319ff67 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x864c046f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0xa2665cc8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x884c6ee3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0x180a9321 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0xa74eb8d4 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x3b3a928a +net/dccp/dccp ccid_exit 0xb121ac6b +net/dccp/dccp ccid_init 0xfd39a7c7 +net/dccp/dccp ccid_register 0xefba8443 +net/dccp/dccp ccid_unregister 0x2c7b1a39 +net/dccp/dccp dccp_hashinfo 0x6453884d +net/dccp/dccp dccp_insert_option 0x3f7c089c +net/dccp/dccp dccp_insert_option_elapsed_time 0x77a360c8 +net/dccp/dccp dccp_insert_option_timestamp 0x72de329a +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0xe3e5d55f +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0xb22e989c +net/ieee80211/ieee80211 alloc_ieee80211 0x057c57f9 +net/ieee80211/ieee80211 escape_essid 0xb731e545 +net/ieee80211/ieee80211 free_ieee80211 0xe9834f13 +net/ieee80211/ieee80211 ieee80211_channel_to_index 0x14e3706a +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0x69d8c9b1 +net/ieee80211/ieee80211 ieee80211_get_channel 0xe4d84958 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0x98be3077 +net/ieee80211/ieee80211 ieee80211_get_geo 0x77f84c1a +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0xf99e3f4e +net/ieee80211/ieee80211 ieee80211_rx 0x7deae890 +net/ieee80211/ieee80211 ieee80211_rx_mgt 0x0d3fba89 +net/ieee80211/ieee80211 ieee80211_set_geo 0x07fa31e8 +net/ieee80211/ieee80211 ieee80211_tx_frame 0x6ef652d8 +net/ieee80211/ieee80211 ieee80211_txb_free 0x67ffbfdd +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0x5b3c8c18 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0xb90d4e4e +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x49d7b1aa +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0xa2b69d4f +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0xb8754779 +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x2c75c3b1 +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x27bc9ada +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0xe3a976e9 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x9ed1a8d3 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0xe543ac28 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x47cd2bb5 +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0xacf7cd85 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x033dfc33 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0xb9745715 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0x385ae151 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x4d85b819 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0x1295e2bb +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0x6ffeaf4a +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0x628ce738 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0xcb88e352 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0x7cf77533 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0xc2073e43 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0x482846a3 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0x541117b5 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0xb4cf6009 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x89e5a940 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x1ef3fb2d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x727e5ea6 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x6e470fb0 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x5786ab68 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x343388a5 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0x9d65f229 +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x68ea2c2d +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x11cbba08 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0x3782a747 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0x096b991f +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0x5e313eba +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0x1c3a43be +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0xe830b03b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0xee58bec6 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x4bc44c2a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0x6118eb9a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0xff1f319a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x21be60cf +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x099a622b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0xf5f28876 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x4f1fad09 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0x36800d3a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0xe993984d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0x0ddb0424 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0x3fcc804d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0x7ee3f1d7 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x04a7b37a +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x85a63ad8 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0x482ec686 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0x22150774 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x6055320c +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x66876294 +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0xa1128ae2 +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0xd4cc8b81 +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0xa24c5bc8 +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0x850a5867 +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0xc4bfa31f +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0xf013b71a +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0xa94264eb +net/ipv4/ipvs/ip_vs register_ip_vs_app 0x2ee7bfae +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0x651ad744 +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0x1b214879 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0xd045f61a +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0x28f1d8f7 +net/ipv4/netfilter/arp_tables arpt_do_table 0x5e1cd319 +net/ipv4/netfilter/arp_tables arpt_register_table 0x5e654951 +net/ipv4/netfilter/arp_tables arpt_register_target 0xdbddf2be +net/ipv4/netfilter/arp_tables arpt_unregister_table 0x416b74ef +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x73dc953a +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x9568ef2b +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x94a372bd +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0xaa7d3e2d +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x3e462757 +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0x89af3e39 +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0xb0134e65 +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x7450756f +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0x2164d9a7 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0x2b831200 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0x19a87d43 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0x53bd9f32 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x481418db +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0x5a87cd83 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0x4f704c11 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x11b38e65 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0x73d1ef29 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0x5501bb62 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0xf550ce99 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x4a803c3f +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0xbf6603ec +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x020d6c20 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x56f76272 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0xdc8ef75a +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x78844792 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0x745ffd4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0x9bbb841c +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0xef92bef4 +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x66c7b20d +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0xcd4f56e7 +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0x714dbb41 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0xf9f518dc +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0xd03964e0 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0x23b35528 +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0xc1c1a9d1 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x845ed5d4 +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x7d875fb1 +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0xd61897a7 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0xeff02e86 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0xb9c298bd +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0xf1929f30 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0xbb0c45d4 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0xf0c4f7f5 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x73531ca6 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0xbf0b7f55 +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0x7e4a3513 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0x1cc98e29 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0x5e3d3e9f +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0xb1660b1d +net/ipv4/netfilter/ip_nat ip_nat_packet 0xe9cde157 +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x197d3318 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x1982c5d7 +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x524b3113 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0x2ca31fd6 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x12324bc4 +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0x69eb1dc4 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0x42931dc4 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x56aafad6 +net/ipv4/netfilter/ip_tables ipt_do_table 0xdd1141bb +net/ipv4/netfilter/ip_tables ipt_find_target 0x375b9ff4 +net/ipv4/netfilter/ip_tables ipt_register_match 0xc82d3f1e +net/ipv4/netfilter/ip_tables ipt_register_table 0xdc27a071 +net/ipv4/netfilter/ip_tables ipt_register_target 0x28a2208a +net/ipv4/netfilter/ip_tables ipt_unregister_match 0xf9d784e6 +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x4700f669 +net/ipv4/netfilter/ip_tables ipt_unregister_target 0x9ac8f676 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0x6423a333 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0x3e6de3b9 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0xa086377d +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0x549a602b +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x3085cb0e +net/ipv6/ipv6 inet6_add_protocol 0x3c800cf6 +net/ipv6/ipv6 inet6_bind 0x23eab7bc +net/ipv6/ipv6 inet6_del_protocol 0xc4483c69 +net/ipv6/ipv6 inet6_getname 0xe7282d41 +net/ipv6/ipv6 inet6_ioctl 0xc0662e55 +net/ipv6/ipv6 inet6_register_protosw 0xf7e947a0 +net/ipv6/ipv6 inet6_release 0x64a44fc7 +net/ipv6/ipv6 inet6_unregister_protosw 0xbc7861f5 +net/ipv6/ipv6 ip6_route_me_harder 0xfb7a9d70 +net/ipv6/ipv6 ip6_route_output 0xc7a7267d +net/ipv6/ipv6 ip6_xmit 0xebd69952 +net/ipv6/ipv6 ipv6_chk_addr 0x55dd2d12 +net/ipv6/ipv6 ipv6_get_saddr 0x1611bb8c +net/ipv6/ipv6 ipv6_getsockopt 0x1cc74443 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0xfdd6a12e +net/ipv6/ipv6 ipv6_setsockopt 0x502e050c +net/ipv6/ipv6 ndisc_mc_map 0x84df305f +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x4ac02933 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0xd1dac468 +net/ipv6/ipv6 xfrm6_rcv_spi 0x513fc2d2 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0x8377b1de +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0x80472a0b +net/ipv6/netfilter/ip6_tables ip6t_register_match 0x11b9759a +net/ipv6/netfilter/ip6_tables ip6t_register_table 0xc5fd88dd +net/ipv6/netfilter/ip6_tables ip6t_register_target 0xee147fdb +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0x417e55d2 +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x0d8daea6 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0x209dfbd6 +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0x7d006ea2 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x05511932 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0xba6f53e2 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0xc76d120b +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x16e3457a +net/irda/ircomm/ircomm ircomm_close 0x19a84dc0 +net/irda/ircomm/ircomm ircomm_connect_request 0x4cc20759 +net/irda/ircomm/ircomm ircomm_connect_response 0xad9e1dd0 +net/irda/ircomm/ircomm ircomm_control_request 0x3851f547 +net/irda/ircomm/ircomm ircomm_data_request 0x0e7cf6c6 +net/irda/ircomm/ircomm ircomm_disconnect_request 0x913cc80c +net/irda/ircomm/ircomm ircomm_flow_request 0xeb826308 +net/irda/ircomm/ircomm ircomm_open 0x5973779e +net/irda/irda alloc_irdadev 0xb8fca550 +net/irda/irda async_unwrap_char 0xbb5b9f07 +net/irda/irda async_wrap_skb 0x482a5cd4 +net/irda/irda hashbin_delete 0x4ba5dc74 +net/irda/irda hashbin_find 0xd3edad11 +net/irda/irda hashbin_get_first 0xa45993f4 +net/irda/irda hashbin_get_next 0x263f5ab4 +net/irda/irda hashbin_insert 0xbde32277 +net/irda/irda hashbin_lock_find 0x5b8b95bb +net/irda/irda hashbin_new 0x982b6b09 +net/irda/irda hashbin_remove 0x9fea5965 +net/irda/irda hashbin_remove_this 0x9694bb4c +net/irda/irda irda_device_dongle_cleanup 0x0dd4c242 +net/irda/irda irda_device_dongle_init 0xc36c3c03 +net/irda/irda irda_device_register_dongle 0x8b12271c +net/irda/irda irda_device_set_media_busy 0x84edc773 +net/irda/irda irda_device_unregister_dongle 0x0e87e8ab +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0xb0683ea2 +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0xfd084142 +net/irda/irda iriap_getvaluebyclass_request 0xeb06838f +net/irda/irda iriap_open 0xa4deae30 +net/irda/irda irias_add_integer_attrib 0x62c83096 +net/irda/irda irias_add_octseq_attrib 0xe541e2c2 +net/irda/irda irias_add_string_attrib 0xdfaf55d4 +net/irda/irda irias_delete_object 0x4096621c +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x208f39c3 +net/irda/irda irias_find_object 0x1a617b1d +net/irda/irda irias_insert_object 0x5d1487c7 +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0xc10f5acd +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0x5cae6e41 +net/irda/irda irlap_open 0x0b1c6c2f +net/irda/irda irlmp_close_lsap 0x0f0c14ee +net/irda/irda irlmp_connect_request 0x1fa8d227 +net/irda/irda irlmp_connect_response 0xd5c66c59 +net/irda/irda irlmp_data_request 0x8ded4c34 +net/irda/irda irlmp_disconnect_request 0x80b5f447 +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0x7aa4af87 +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0xfff93b5e +net/irda/irda irttp_connect_request 0x383b1c4c +net/irda/irda irttp_connect_response 0xd63829d9 +net/irda/irda irttp_data_request 0x23ac1ff7 +net/irda/irda irttp_disconnect_request 0xb96633e5 +net/irda/irda irttp_dup 0x1c433a22 +net/irda/irda irttp_flow_request 0x5ccffcf2 +net/irda/irda irttp_open_tsap 0x5396d3b4 +net/irda/irda irttp_udata_request 0x680a4f8c +net/irda/irda proc_irda 0x3e3a2256 +net/netfilter/nfnetlink __nfa_fill 0xd5976428 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0xa8eccf01 +net/netfilter/nfnetlink nfnetlink_subsys_register 0x5c6ef3eb +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0x3e67719a +net/netfilter/nfnetlink nfnetlink_unicast 0xef057307 +net/rxrpc/rxrpc rxrpc_add_service 0x26675a66 +net/rxrpc/rxrpc rxrpc_call_abort 0x0ff27d5d +net/rxrpc/rxrpc rxrpc_call_read_data 0x12ad5e74 +net/rxrpc/rxrpc rxrpc_call_write_data 0x0a41c69f +net/rxrpc/rxrpc rxrpc_create_call 0x56da3556 +net/rxrpc/rxrpc rxrpc_create_connection 0x79a1889f +net/rxrpc/rxrpc rxrpc_create_transport 0xa1b73ac5 +net/rxrpc/rxrpc rxrpc_del_service 0x8e5c278d +net/rxrpc/rxrpc rxrpc_put_call 0xf4ea5b4b +net/rxrpc/rxrpc rxrpc_put_connection 0xaed7a25a +net/rxrpc/rxrpc rxrpc_put_transport 0xb32ae2a2 +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x38d3dce5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0x482ac5a4 +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xd7673035 +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0xfec8cd36 +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0x9ab57780 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0x3fda792c +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0xb9bb29ad +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0xfcb47dd2 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0x325cdbbc +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0x1e5a081d +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0x7c2e61a8 +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0xe7869e54 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0x3ed78bdc +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0xb7e36013 +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0xfb3bf5eb +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0x7be573d3 +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x856f405e +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x0d9fd9d6 +net/sunrpc/sunrpc auth_domain_find 0x66473d18 +net/sunrpc/sunrpc auth_domain_lookup 0x8753673f +net/sunrpc/sunrpc auth_domain_put 0x0c1f8bcf +net/sunrpc/sunrpc auth_unix_add_addr 0xbb40b9c8 +net/sunrpc/sunrpc auth_unix_forget_old 0x6611c290 +net/sunrpc/sunrpc auth_unix_lookup 0xdea87810 +net/sunrpc/sunrpc cache_check 0x9f606e6e +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0xc80d2827 +net/sunrpc/sunrpc cache_init 0x404d68bb +net/sunrpc/sunrpc cache_purge 0x6d7181bd +net/sunrpc/sunrpc cache_register 0x751a7c9f +net/sunrpc/sunrpc cache_unregister 0xf6c5d94b +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0xd141d8bb +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0x27e0a1d3 +net/sunrpc/sunrpc rpc_bind_new_program 0x74d5b51e +net/sunrpc/sunrpc rpc_call_async 0x5ca2a4d6 +net/sunrpc/sunrpc rpc_call_setup 0x085d3d81 +net/sunrpc/sunrpc rpc_call_sync 0xaa408b1a +net/sunrpc/sunrpc rpc_clnt_sigmask 0xd5764ab6 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0x076372ed +net/sunrpc/sunrpc rpc_clone_client 0x182e2b74 +net/sunrpc/sunrpc rpc_create_client 0x5cf2880a +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0x3c401027 +net/sunrpc/sunrpc rpc_destroy_client 0x36a98f45 +net/sunrpc/sunrpc rpc_execute 0x2efca485 +net/sunrpc/sunrpc rpc_init_task 0x7a60f99c +net/sunrpc/sunrpc rpc_init_wait_queue 0x7ce2f559 +net/sunrpc/sunrpc rpc_killall_tasks 0x79282226 +net/sunrpc/sunrpc rpc_max_payload 0xe17fe0ac +net/sunrpc/sunrpc rpc_mkpipe 0x0a0fe658 +net/sunrpc/sunrpc rpc_new_child 0xa1c453d4 +net/sunrpc/sunrpc rpc_new_client 0x50d38d37 +net/sunrpc/sunrpc rpc_new_task 0x912c9f27 +net/sunrpc/sunrpc rpc_proc_register 0xd33c7d39 +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x552e2c3c +net/sunrpc/sunrpc rpc_release_client 0xa5a3d145 +net/sunrpc/sunrpc rpc_release_task 0xa7ffc31d +net/sunrpc/sunrpc rpc_restart_call 0x5f309231 +net/sunrpc/sunrpc rpc_run_child 0xb876c648 +net/sunrpc/sunrpc rpc_setbufsize 0x601bcf3a +net/sunrpc/sunrpc rpc_shutdown_client 0x793e4f10 +net/sunrpc/sunrpc rpc_sleep_on 0xcc9d9120 +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0xe6176378 +net/sunrpc/sunrpc rpc_wake_up_next 0xc3768387 +net/sunrpc/sunrpc rpc_wake_up_status 0xb3326cbd +net/sunrpc/sunrpc rpc_wake_up_task 0x36677efe +net/sunrpc/sunrpc rpcauth_create 0xd5416aec +net/sunrpc/sunrpc rpcauth_free_credcache 0xee68db11 +net/sunrpc/sunrpc rpcauth_init_credcache 0x2e6f34b5 +net/sunrpc/sunrpc rpcauth_lookup_credcache 0xd053cb70 +net/sunrpc/sunrpc rpcauth_lookupcred 0x4197cdce +net/sunrpc/sunrpc rpcauth_register 0xede14c3e +net/sunrpc/sunrpc rpcauth_unregister 0xe906915b +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x68c08d10 +net/sunrpc/sunrpc svc_auth_unregister 0x5a45ba31 +net/sunrpc/sunrpc svc_authenticate 0xd28dc391 +net/sunrpc/sunrpc svc_create 0x56b2306b +net/sunrpc/sunrpc svc_create_thread 0xe0056177 +net/sunrpc/sunrpc svc_destroy 0xf51184c8 +net/sunrpc/sunrpc svc_drop 0xa8e73bff +net/sunrpc/sunrpc svc_exit_thread 0x081a9c65 +net/sunrpc/sunrpc svc_makesock 0x7908c0f1 +net/sunrpc/sunrpc svc_proc_register 0xf34112b1 +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0x652e1b9f +net/sunrpc/sunrpc svc_recv 0x200fa075 +net/sunrpc/sunrpc svc_reserve 0xb946218d +net/sunrpc/sunrpc svc_seq_show 0xba4b0690 +net/sunrpc/sunrpc svc_set_client 0xb0e0b8f1 +net/sunrpc/sunrpc svc_wake_up 0xb82ce581 +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x3e482943 +net/sunrpc/sunrpc xdr_buf_from_iov 0x23f7a280 +net/sunrpc/sunrpc xdr_buf_read_netobj 0x728770bb +net/sunrpc/sunrpc xdr_buf_subsegment 0xb885aea3 +net/sunrpc/sunrpc xdr_decode_array2 0xf47480bb +net/sunrpc/sunrpc xdr_decode_netobj 0x1b431c8f +net/sunrpc/sunrpc xdr_decode_string 0xe7e08cbd +net/sunrpc/sunrpc xdr_decode_string_inplace 0xf3692830 +net/sunrpc/sunrpc xdr_decode_word 0x1ff10b41 +net/sunrpc/sunrpc xdr_encode_array2 0x75782128 +net/sunrpc/sunrpc xdr_encode_netobj 0x08366747 +net/sunrpc/sunrpc xdr_encode_opaque 0x7874c50f +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0xd75126a9 +net/sunrpc/sunrpc xdr_encode_pages 0x869c28ee +net/sunrpc/sunrpc xdr_encode_string 0x3d9bb42c +net/sunrpc/sunrpc xdr_encode_word 0x6a19f884 +net/sunrpc/sunrpc xdr_init_decode 0x2cc0a8e7 +net/sunrpc/sunrpc xdr_init_encode 0xd0cd9b48 +net/sunrpc/sunrpc xdr_inline_decode 0x622e9ce6 +net/sunrpc/sunrpc xdr_inline_pages 0xe115e1d8 +net/sunrpc/sunrpc xdr_read_pages 0x29f45e2a +net/sunrpc/sunrpc xdr_reserve_space 0x048bf056 +net/sunrpc/sunrpc xdr_shift_buf 0xb42bf6b0 +net/sunrpc/sunrpc xdr_write_pages 0xa90077f2 +net/sunrpc/sunrpc xprt_create_proto 0xbda829fa +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x38275091 +net/wanrouter/wanrouter register_wan_device 0x0ca96f3b +net/wanrouter/wanrouter unlock_adapter_irq 0x46d1849f +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0x0f1cb7ea +net/wanrouter/wanrouter wanrouter_type_trans 0x507dd244 +security/commoncap cap_bprm_apply_creds 0x2f9dc080 +security/commoncap cap_bprm_secureexec 0x4550cdd7 +security/commoncap cap_bprm_set_security 0xacedce24 +security/commoncap cap_capable 0x757e309e +security/commoncap cap_capget 0xe27b62dc +security/commoncap cap_capset_check 0xf21bd88f +security/commoncap cap_capset_set 0x1d46e572 +security/commoncap cap_inode_removexattr 0xe2606fcb +security/commoncap cap_inode_setxattr 0x4d1c3015 +security/commoncap cap_netlink_recv 0xd3045f18 +security/commoncap cap_netlink_send 0x0dbb2101 +security/commoncap cap_ptrace 0xa9aba182 +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x13ea5cf8 +security/commoncap cap_task_reparent_to_init 0x4bd4f47f +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0xa30c3d59 +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0xe2737cfa +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0xa7b3ab00 +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0xdf1ceb1a +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0xd9e3c0e1 +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x6537bf89 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x3069198d +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0xc8702899 +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0xaca5354e +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x0286df8c +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x79d1edfd +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0x5a1363df +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0x8d95237b +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0x56b82710 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0xc8766ad5 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0x79c3b02f +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x12dd9a53 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x8c1e7257 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x5c097adb +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x157d41cf +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0xf73bbce4 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0xabe42868 +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0x92e32534 +sound/core/snd copy_from_user_toio 0x518bb7f8 +sound/core/snd copy_to_user_fromio 0xe243dde3 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0xa9fbf3df +sound/core/snd snd_card_file_add 0x1097012b +sound/core/snd snd_card_file_remove 0x2a1a1080 +sound/core/snd snd_card_free 0x3f1a7be8 +sound/core/snd snd_card_free_in_thread 0xe76d0192 +sound/core/snd snd_card_new 0x02483f0e +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0xaed39adc +sound/core/snd snd_card_register 0x020ea700 +sound/core/snd snd_card_set_generic_dev 0x2a86c2c1 +sound/core/snd snd_card_set_generic_pm_callback 0xe6aa5179 +sound/core/snd snd_card_set_pm_callback 0xed0c1663 +sound/core/snd snd_cards 0xa65e7b83 +sound/core/snd snd_component_add 0xf2dbe86a +sound/core/snd snd_ctl_add 0xeabd5c6a +sound/core/snd snd_ctl_elem_read 0x73846de3 +sound/core/snd snd_ctl_elem_write 0xf6c10407 +sound/core/snd snd_ctl_find_id 0x8ac5632a +sound/core/snd snd_ctl_find_numid 0x4c109738 +sound/core/snd snd_ctl_free_one 0x1dab84b5 +sound/core/snd snd_ctl_new 0xc8d0bd1e +sound/core/snd snd_ctl_new1 0x8855d6ff +sound/core/snd snd_ctl_notify 0xd4b61c5f +sound/core/snd snd_ctl_register_ioctl 0xf1e2e6f2 +sound/core/snd snd_ctl_register_ioctl_compat 0xe742218f +sound/core/snd snd_ctl_remove 0x3e436dc9 +sound/core/snd snd_ctl_remove_id 0x7c9cc86e +sound/core/snd snd_ctl_rename_id 0xbd2c5b4c +sound/core/snd snd_ctl_unregister_ioctl 0x4973319b +sound/core/snd snd_ctl_unregister_ioctl_compat 0xc2f76cfb +sound/core/snd snd_device_free 0x34cf0e0b +sound/core/snd snd_device_new 0x76b3040f +sound/core/snd snd_device_register 0xcaf44542 +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0xfe42d4eb +sound/core/snd snd_info_create_module_entry 0x1fdf91a0 +sound/core/snd snd_info_free_entry 0x42c806fc +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0x4e6a8a27 +sound/core/snd snd_info_unregister 0x75c37633 +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0x7136d43c +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0xbbf95dd3 +sound/core/snd snd_register_device 0x7e8044be +sound/core/snd snd_register_oss_device 0x2d62d47e +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0x021d9e41 +sound/core/snd snd_unregister_device 0xab614957 +sound/core/snd snd_unregister_oss_device 0x2f799789 +sound/core/snd-hwdep snd_hwdep_new 0x5bd1b61f +sound/core/snd-page-alloc snd_dma_alloc_pages 0x8435abba +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0xc653966d +sound/core/snd-page-alloc snd_dma_free_pages 0xb5301bdd +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0x883cad8f +sound/core/snd-page-alloc snd_dma_reserve_buf 0x82bda98b +sound/core/snd-page-alloc snd_free_pages 0x19cc2ce3 +sound/core/snd-page-alloc snd_malloc_pages 0xc6829020 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x0beab9b1 +sound/core/snd-pcm snd_pcm_devices 0x82fcc1f1 +sound/core/snd-pcm snd_pcm_format_big_endian 0x93878ece +sound/core/snd-pcm snd_pcm_format_linear 0x8733f967 +sound/core/snd-pcm snd_pcm_format_little_endian 0x8bbdc311 +sound/core/snd-pcm snd_pcm_format_name 0xedd5b5bd +sound/core/snd-pcm snd_pcm_format_physical_width 0xa8edfa41 +sound/core/snd-pcm snd_pcm_format_set_silence 0xdf124602 +sound/core/snd-pcm snd_pcm_format_signed 0xe2c5f868 +sound/core/snd-pcm snd_pcm_format_silence_64 0xda29bc77 +sound/core/snd-pcm snd_pcm_format_size 0xa2658908 +sound/core/snd-pcm snd_pcm_format_unsigned 0x95a60aa5 +sound/core/snd-pcm snd_pcm_format_width 0x55eb2175 +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0x81df9065 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0x1bc787b8 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0xcab825c2 +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x885ca1ef +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0x52a7ac36 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x1a01df69 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x653d3973 +sound/core/snd-pcm snd_pcm_hw_constraint_step 0x51db4c4f +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0xecb670bb +sound/core/snd-pcm snd_pcm_hw_constraints_init 0xc217a1b9 +sound/core/snd-pcm snd_pcm_hw_param_first 0x51439008 +sound/core/snd-pcm snd_pcm_hw_param_last 0x53242550 +sound/core/snd-pcm snd_pcm_hw_param_mask 0x5f95934f +sound/core/snd-pcm snd_pcm_hw_param_near 0x2593861e +sound/core/snd-pcm snd_pcm_hw_param_set 0xa4157091 +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0x0dd94924 +sound/core/snd-pcm snd_pcm_hw_rule_add 0x4869a1bb +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0xa38a05e8 +sound/core/snd-pcm snd_pcm_kernel_ioctl 0xeb278830 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x89e204c7 +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0xa1abd08c +sound/core/snd-pcm snd_pcm_lib_free_pages 0x46c53fa7 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x0265413e +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x3e3d1c2d +sound/core/snd-pcm snd_pcm_lib_period_bytes 0xd619ce13 +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x1d1172c4 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0xf0255f0a +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0xfa110847 +sound/core/snd-pcm snd_pcm_lib_read 0x979f79ad +sound/core/snd-pcm snd_pcm_lib_readv 0xa8a884ab +sound/core/snd-pcm snd_pcm_lib_write 0xe363453b +sound/core/snd-pcm snd_pcm_lib_writev 0x8d1b51e9 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x5e64472a +sound/core/snd-pcm snd_pcm_link_rwlock 0x34c35a38 +sound/core/snd-pcm snd_pcm_mmap_data 0x9eb9f0a6 +sound/core/snd-pcm snd_pcm_new 0xfbaec59d +sound/core/snd-pcm snd_pcm_new_stream 0x8e7a522b +sound/core/snd-pcm snd_pcm_notify 0x7970272a +sound/core/snd-pcm snd_pcm_open_substream 0x0a85eaf1 +sound/core/snd-pcm snd_pcm_period_elapsed 0x2fece8ae +sound/core/snd-pcm snd_pcm_release_substream 0x52436e67 +sound/core/snd-pcm snd_pcm_set_ops 0x504845a5 +sound/core/snd-pcm snd_pcm_set_sync 0xe44331ba +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0x81a0b0f8 +sound/core/snd-pcm snd_pcm_stop 0x8315724b +sound/core/snd-pcm snd_pcm_suspend 0x07eac66c +sound/core/snd-pcm snd_pcm_suspend_all 0xedba32dd +sound/core/snd-rawmidi snd_rawmidi_drain_input 0x2b6f2003 +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x4bd9dd9c +sound/core/snd-rawmidi snd_rawmidi_drop_output 0x9f25cb76 +sound/core/snd-rawmidi snd_rawmidi_info 0xb6edfd7f +sound/core/snd-rawmidi snd_rawmidi_info_select 0xa7ae9eec +sound/core/snd-rawmidi snd_rawmidi_input_params 0x7fc6cf70 +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x9aefc43d +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0xf4f22113 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0xce98ad27 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0xb3e6cf60 +sound/core/snd-rawmidi snd_rawmidi_new 0x60b2d781 +sound/core/snd-rawmidi snd_rawmidi_output_params 0x9a5d1c6d +sound/core/snd-rawmidi snd_rawmidi_receive 0x702d0c73 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x6af6c1ca +sound/core/snd-rawmidi snd_rawmidi_transmit 0x74bb9394 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x5c642a13 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0xcdf0369a +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0x7ecce1f7 +sound/core/snd-timer snd_timer_close 0x114e31a0 +sound/core/snd-timer snd_timer_continue 0x967dc238 +sound/core/snd-timer snd_timer_global_free 0x9a7c81cd +sound/core/snd-timer snd_timer_global_new 0x2fc2c934 +sound/core/snd-timer snd_timer_global_register 0x51c4aef6 +sound/core/snd-timer snd_timer_global_unregister 0x17c18f35 +sound/core/snd-timer snd_timer_interrupt 0xf194aac4 +sound/core/snd-timer snd_timer_new 0xc9887c04 +sound/core/snd-timer snd_timer_notify 0x4b8877dc +sound/core/snd-timer snd_timer_open 0x19bfe786 +sound/core/snd-timer snd_timer_pause 0x782402cc +sound/core/snd-timer snd_timer_resolution 0x8f85f0d3 +sound/core/snd-timer snd_timer_start 0xd0d9ab7e +sound/core/snd-timer snd_timer_stop 0xb8dbf53f +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0xa9507612 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x614daefa +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0xa3130f0e +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0xd9f765cf +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0x63707c65 +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0x6ef521d1 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0x7a0bc4d7 +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0xd493382e +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0x8a0a6950 +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x76f061cb +sound/drivers/vx/snd-vx-lib snd_vx_create 0xff8d32f7 +sound/drivers/vx/snd-vx-lib snd_vx_delay 0x92c87571 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x9d721956 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x96720e94 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0x0fa398e3 +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x27954d8d +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0x2de973da +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0x59e06f85 +sound/i2c/other/snd-ak4114 snd_ak4114_build 0x1b373d0d +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0x9b60565a +sound/i2c/other/snd-ak4114 snd_ak4114_create 0xec74f1fa +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0x09199654 +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0x793bfa24 +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0x071b3cae +sound/i2c/other/snd-ak4117 snd_ak4117_build 0xd61a00ef +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0x2c07d8a2 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0x6601e6b2 +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x2db923d0 +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x9cebb4b0 +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x3ffd4eab +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0x0d4e2ca0 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0xa1bc9e61 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0x02317d6e +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0x247cd014 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0x03d21fa0 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0x37ae302c +sound/i2c/snd-cs8427 snd_cs8427_create 0x42502163 +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0xceaba15c +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0x20e7aaef +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0x0041f40e +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0x2ad19a64 +sound/i2c/snd-cs8427 snd_cs8427_reset 0xf6e6086f +sound/i2c/snd-i2c snd_i2c_bus_create 0x36fda177 +sound/i2c/snd-i2c snd_i2c_device_create 0x37157b3f +sound/i2c/snd-i2c snd_i2c_device_free 0xcfa8ea9c +sound/i2c/snd-i2c snd_i2c_probeaddr 0xc3741f68 +sound/i2c/snd-i2c snd_i2c_readbytes 0x69d56ac4 +sound/i2c/snd-i2c snd_i2c_sendbytes 0xc8f41d6c +sound/oss/ac97_codec ac97_alloc_codec 0xdbc51868 +sound/oss/ac97_codec ac97_probe_codec 0xa6f0c367 +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0x9e8cb8d8 +sound/oss/ac97_codec ac97_release_codec 0x8f043dec +sound/oss/ac97_codec ac97_restore_state 0x34153f09 +sound/oss/ac97_codec ac97_save_state 0x9dd1e407 +sound/oss/ac97_codec ac97_set_adc_rate 0x584e6464 +sound/oss/ac97_codec ac97_set_dac_rate 0x76bb9060 +sound/oss/ac97_codec ac97_tune_hardware 0x85458b57 +sound/oss/ac97_codec ac97_unregister_driver 0x7542441a +sound/oss/msnd msnd_disable_irq 0x7f21b99e +sound/oss/msnd msnd_enable_irq 0x36cb540d +sound/oss/msnd msnd_fifo_alloc 0x9853d449 +sound/oss/msnd msnd_fifo_free 0x180cefff +sound/oss/msnd msnd_fifo_init 0x68473da1 +sound/oss/msnd msnd_fifo_make_empty 0x679297db +sound/oss/msnd msnd_fifo_read 0xca41668a +sound/oss/msnd msnd_fifo_read_io 0x141fba4d +sound/oss/msnd msnd_fifo_write 0xc8646b7f +sound/oss/msnd msnd_fifo_write_io 0x80504a66 +sound/oss/msnd msnd_init_queue 0x340a3ddf +sound/oss/msnd msnd_register 0xde217de5 +sound/oss/msnd msnd_send_dsp_cmd 0xf444d0a8 +sound/oss/msnd msnd_send_word 0x7bf1de6d +sound/oss/msnd msnd_unregister 0xc06dd6c2 +sound/oss/msnd msnd_upload_host 0xe5c02a67 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0xf2c9165d +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0x985b3a54 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0xac59a5dd +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0x4cb15e81 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0x7172cc64 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x8e5a9acb +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x98c649bb +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0xe3a76ae7 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0xf01cbfca +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0x9755ae24 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0x2228c7cc +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0xabce6e01 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x83928d66 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0xf4eb8861 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0xb065bd3f +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0x4908874d +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0x25e268a2 +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0x8d6601d9 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0x8c9887c0 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x804659a9 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0x8bf9a108 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0xd47642b8 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0xd48f253a +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0xc6dd3284 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0xec4df5a8 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0x1534f80c +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0x48b03a14 +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0x02944463 +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0x00bc185e +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0xdb18c840 +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0xab7c4d08 +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0x3c4ab250 +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0x3ee6e9ce +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x86b0750b +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0xdedc9222 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0xd5bedd58 +sound/pci/hda/snd-hda-codec snd_hda_resume 0x938fb21b +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0x306c19a5 +sound/pci/hda/snd-hda-codec snd_hda_suspend 0x4003d08e +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0xc6e25ffe +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0x205c0d8f +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0x71fb5194 +sound/pci/trident/snd-trident snd_trident_alloc_voice 0xf48f4f38 +sound/pci/trident/snd-trident snd_trident_free_voice 0x90850eae +sound/pci/trident/snd-trident snd_trident_start_voice 0x1505ceb0 +sound/pci/trident/snd-trident snd_trident_stop_voice 0x157bc4d2 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0xfcc209a9 +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0x3bca03a7 +sound/pci/trident/snd-trident snd_trident_synth_free 0x6b389039 +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0xc864814c +sound/synth/emux/snd-emux-synth snd_emux_free 0x80bceb80 +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0xeea20d57 +sound/synth/emux/snd-emux-synth snd_emux_new 0xb037db36 +sound/synth/emux/snd-emux-synth snd_emux_register 0x5c5d985e +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0xdab34c0c +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0xa9429bb2 +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0x5bd5023e +sound/synth/snd-util-mem __snd_util_mem_free 0x2ea4fa17 +sound/synth/snd-util-mem __snd_util_memblk_new 0x5bb43e44 +sound/synth/snd-util-mem snd_util_mem_alloc 0xe047f44f +sound/synth/snd-util-mem snd_util_mem_avail 0x57bf4dfa +sound/synth/snd-util-mem snd_util_mem_free 0x1596fc01 +sound/synth/snd-util-mem snd_util_memhdr_free 0x61f01d2c +sound/synth/snd-util-mem snd_util_memhdr_new 0x1d7d2b1d +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0x686959e6 +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux I_BDEV 0xb8edcbd9 +vmlinux SELECT_DRIVE 0xdb9c2655 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0x0caaa61b +vmlinux __alloc_pages 0xfe26cc94 +vmlinux __alloc_percpu 0x55f2580b +vmlinux __alloc_skb 0x7a65d631 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0x73c99461 +vmlinux __bio_clone 0x2f327ebf +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0xe9afece2 +vmlinux __bread 0x6feee237 +vmlinux __breadahead 0x3e9eaaef +vmlinux __break_lease 0x7cbe7894 +vmlinux __brelse 0xeae36777 +vmlinux __check_region 0xf1d0cdab +vmlinux __copy_user 0x04d243f5 +vmlinux __cpufreq_driver_target 0xe8dc931c +vmlinux __create_workqueue 0x9d495dd1 +vmlinux __d_path 0x0c9ce9c9 +vmlinux __dev_get_by_index 0x5bcae81f +vmlinux __dev_get_by_name 0x6df51932 +vmlinux __dev_remove_pack 0xf4dbf610 +vmlinux __divdi3 0xe8679178 +vmlinux __divsi3 0x211331fa +vmlinux __do_clear_user 0x3f6bc633 +vmlinux __down 0xc469bdc1 +vmlinux __down_interruptible 0x4f49ffbd +vmlinux __down_trylock 0x928ab4ba +vmlinux __dst_free 0x4e23eb97 +vmlinux __elv_add_request 0xd61484ad +vmlinux __find_get_block 0x97886ecf +vmlinux __find_next_bit 0x2bc63ecb +vmlinux __find_next_zero_bit 0x664fc2e7 +vmlinux __free_pages 0xbb86c479 +vmlinux __generic_file_aio_read 0x723465ee +vmlinux __generic_unplug_device 0x5412f581 +vmlinux __get_free_pages 0x93fca811 +vmlinux __getblk 0x0eed574e +vmlinux __ide_abort 0x899fb2cd +vmlinux __ide_dma_bad_drive 0x1e29fc46 +vmlinux __ide_dma_check 0xb6b51e2c +vmlinux __ide_dma_end 0x8c7a9ec5 +vmlinux __ide_dma_good_drive 0xc4b551cc +vmlinux __ide_dma_host_off 0x2da9d3f5 +vmlinux __ide_dma_host_on 0x7deecc0c +vmlinux __ide_dma_lostirq 0xf1044cef +vmlinux __ide_dma_off 0xe48dba6a +vmlinux __ide_dma_off_quietly 0x5e85e072 +vmlinux __ide_dma_on 0x55a7d57f +vmlinux __ide_dma_timeout 0xd20da898 +vmlinux __ide_end_request 0x7f23bb21 +vmlinux __ide_error 0xbba6044e +vmlinux __ide_pci_register_driver 0x41f2a907 +vmlinux __inet_lookup_listener 0xaea80868 +vmlinux __inet_twsk_hashdance 0x215631df +vmlinux __inet_twsk_kill 0xc29846d4 +vmlinux __init_timer_base 0x2719823e +vmlinux __inode_dir_notify 0x8dd5977f +vmlinux __insert_inode_hash 0xe8b87fa3 +vmlinux __invalidate_device 0xf91c4f1e +vmlinux __ip_route_output_key 0x6fad2f03 +vmlinux __ip_select_ident 0xdab05b1c +vmlinux __kfifo_get 0xb5e48e92 +vmlinux __kfifo_put 0x21e05e58 +vmlinux __kfree_skb 0xa7d66795 +vmlinux __kill_fasync 0x09e86adb +vmlinux __kmalloc 0x5a34a45c +vmlinux __lock_buffer 0xcceffbc4 +vmlinux __lock_page 0x6729371d +vmlinux __mark_inode_dirty 0x0b9efc56 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0x881c9dc0 +vmlinux __moddi3 0x903ab395 +vmlinux __modsi3 0x594e1317 +vmlinux __module_put_and_exit 0xd6e888d1 +vmlinux __neigh_event_send 0x064cc761 +vmlinux __neigh_for_each_release 0x04379b6a +vmlinux __net_timestamp 0xfd00e26a +vmlinux __netdev_watchdog_up 0x3c7a0c6f +vmlinux __nla_put 0xf1a8582e +vmlinux __nla_reserve 0x4f32fe53 +vmlinux __page_cache_release 0xfa5c001e +vmlinux __pagevec_lru_add 0xdf31cadd +vmlinux __pagevec_release 0xcf008787 +vmlinux __pci_register_driver 0x27af4d28 +vmlinux __per_cpu_offset 0xc5844fb8 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0xf78eb567 +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0x14299386 +vmlinux __scm_destroy 0xe5f89579 +vmlinux __scm_send 0x75e23a68 +vmlinux __scsi_add_device 0xf28f71f2 +vmlinux __scsi_device_lookup 0xdcb0ca7d +vmlinux __scsi_device_lookup_by_target 0xc7c517ff +vmlinux __scsi_iterate_devices 0x4fe96eb2 +vmlinux __scsi_print_command 0xfef96e23 +vmlinux __scsi_print_sense 0x69d38ed9 +vmlinux __secpath_destroy 0x13fd73e9 +vmlinux __serio_register_driver 0xe0111917 +vmlinux __serio_register_port 0x97704681 +vmlinux __serio_unregister_port_delayed 0xe5708bf7 +vmlinux __set_page_dirty_buffers 0xc2f5ef8e +vmlinux __set_page_dirty_nobuffers 0x3384b36b +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x1e457df4 +vmlinux __skb_checksum_complete 0xe6bd8a52 +vmlinux __skb_linearize 0x27690e07 +vmlinux __sn_mmiowb 0x2ce1e27f +vmlinux __strlen_user 0xf1394a2a +vmlinux __strncpy_from_user 0x9a78a84c +vmlinux __strnlen_user 0x00eef49e +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x8ddb1a2b +vmlinux __tasklet_schedule 0xf9c58281 +vmlinux __tcf_em_tree_match 0x7f2f1927 +vmlinux __udivdi3 0x32093cc7 +vmlinux __udivsi3 0xfb7d9c45 +vmlinux __umoddi3 0x4a541e2a +vmlinux __umodsi3 0x8320bea8 +vmlinux __up 0xe3337f11 +vmlinux __user_walk 0x9a6d10f7 +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0xd166c042 +vmlinux __wait_on_bit_lock 0xf1e4166e +vmlinux __wait_on_buffer 0x90d6b482 +vmlinux __wake_up 0xfaae85bc +vmlinux __wake_up_bit 0x343da08c +vmlinux __wake_up_sync 0x67dceb56 +vmlinux __xfrm_policy_check 0xd166a961 +vmlinux __xfrm_policy_destroy 0x598eb8b5 +vmlinux __xfrm_route_forward 0x3a6dd68c +vmlinux __xfrm_state_destroy 0x6b92c2f2 +vmlinux _atomic_dec_and_lock 0x91510cbf +vmlinux _ctype 0x8d3894f2 +vmlinux _read_lock 0x0cd7d26b +vmlinux _read_lock_bh 0x6d824298 +vmlinux _read_lock_irq 0x25b4eb5e +vmlinux _read_lock_irqsave 0x3d18763c +vmlinux _read_trylock 0x282b5899 +vmlinux _read_unlock 0xca9694b5 +vmlinux _read_unlock_bh 0x4d6dc3e1 +vmlinux _read_unlock_irq 0x0c4dcd47 +vmlinux _read_unlock_irqrestore 0xb9446042 +vmlinux _spin_lock 0x8adeda8a +vmlinux _spin_lock_bh 0xd9ecbff9 +vmlinux _spin_lock_irq 0x56ca38ff +vmlinux _spin_lock_irqsave 0xfc2501cc +vmlinux _spin_trylock 0x8a0ba840 +vmlinux _spin_trylock_bh 0xae649140 +vmlinux _spin_unlock 0x99ef87e2 +vmlinux _spin_unlock_bh 0xc1e30651 +vmlinux _spin_unlock_irq 0x8edf1c9c +vmlinux _spin_unlock_irqrestore 0x575ea7c4 +vmlinux _write_lock 0x9b089cc2 +vmlinux _write_lock_bh 0xc3bd892e +vmlinux _write_lock_irq 0x0718c22c +vmlinux _write_lock_irqsave 0xe63ce738 +vmlinux _write_trylock 0xde96c72b +vmlinux _write_unlock 0x2437685d +vmlinux _write_unlock_bh 0xf3447fd8 +vmlinux _write_unlock_irq 0x53f66cf3 +vmlinux _write_unlock_irqrestore 0x789394b9 +vmlinux acpi_acquire_global_lock 0xc9f34c1d +vmlinux acpi_bus_add 0xb644134c +vmlinux acpi_bus_generate_event 0x9ef6071c +vmlinux acpi_bus_get_device 0xab839fb3 +vmlinux acpi_bus_get_power 0x7389c9a8 +vmlinux acpi_bus_get_status 0xaef8b2db +vmlinux acpi_bus_receive_event 0x272a109a +vmlinux acpi_bus_register_driver 0x090a543d +vmlinux acpi_bus_set_power 0xcb733bf2 +vmlinux acpi_bus_start 0x8f646e4d +vmlinux acpi_bus_unregister_driver 0xc004931f +vmlinux acpi_clear_event 0x17be68ca +vmlinux acpi_dbg_layer 0xa40ff01b +vmlinux acpi_dbg_level 0xddad7952 +vmlinux acpi_disable_event 0x2177bd71 +vmlinux acpi_ec_read 0xe10b733d +vmlinux acpi_ec_write 0x40deb461 +vmlinux acpi_enable_event 0x44902cff +vmlinux acpi_enable_gpe 0xa8d5b19f +vmlinux acpi_enter_sleep_state 0x0cdccbc8 +vmlinux acpi_enter_sleep_state_s4bios 0x2f97cc23 +vmlinux acpi_evaluate_integer 0x64f0e581 +vmlinux acpi_evaluate_object 0xee7b5bca +vmlinux acpi_evaluate_reference 0x2e34c276 +vmlinux acpi_extract_package 0x0ba654d0 +vmlinux acpi_fadt 0xfb174376 +vmlinux acpi_fadt_is_v1 0x3ec88a19 +vmlinux acpi_get_child 0x2011990a +vmlinux acpi_get_current_resources 0x2ca63452 +vmlinux acpi_get_devices 0x74bdf6d5 +vmlinux acpi_get_firmware_table 0x89d49aa1 +vmlinux acpi_get_handle 0x9975dc22 +vmlinux acpi_get_name 0xa9bc32c1 +vmlinux acpi_get_next_object 0x75871f5e +vmlinux acpi_get_object_info 0xaad70aea +vmlinux acpi_get_parent 0x7d12d76d +vmlinux acpi_get_pci_id 0x5e523a9e +vmlinux acpi_get_pci_rootbridge_handle 0x1f8ec1b3 +vmlinux acpi_get_physical_device 0x7115ed3e +vmlinux acpi_get_pxm 0x0a372247 +vmlinux acpi_get_register 0xd62b16af +vmlinux acpi_get_sleep_type_data 0x130afd75 +vmlinux acpi_get_table 0x007547e5 +vmlinux acpi_get_type 0x42578e80 +vmlinux acpi_install_address_space_handler 0x79fac840 +vmlinux acpi_install_fixed_event_handler 0x3b029f48 +vmlinux acpi_install_gpe_block 0x2091d63e +vmlinux acpi_install_gpe_handler 0x0ec136bc +vmlinux acpi_install_notify_handler 0x170ddf79 +vmlinux acpi_os_create_semaphore 0xb2faaf74 +vmlinux acpi_os_delete_semaphore 0xeaedfad9 +vmlinux acpi_os_free 0x43b9bbb4 +vmlinux acpi_os_printf 0x667cecc9 +vmlinux acpi_os_queue_for_execution 0xba5c8e12 +vmlinux acpi_os_read_pci_configuration 0xb21fd99e +vmlinux acpi_os_read_port 0x68092d39 +vmlinux acpi_os_signal 0xa1ed3038 +vmlinux acpi_os_signal_semaphore 0x499d825d +vmlinux acpi_os_sleep 0x540db81f +vmlinux acpi_os_stall 0x4fc25521 +vmlinux acpi_os_wait_events_complete 0xc9ab2eef +vmlinux acpi_os_wait_semaphore 0x69efe8d8 +vmlinux acpi_os_write_port 0x18339ef0 +vmlinux acpi_pci_irq_enable 0x863b22ab +vmlinux acpi_pci_register_driver 0xd1472061 +vmlinux acpi_pci_unregister_driver 0x43385ad9 +vmlinux acpi_register_gsi 0x24fb243b +vmlinux acpi_register_ioapic 0xd8dc4cbe +vmlinux acpi_release_global_lock 0xa805ecfc +vmlinux acpi_remove_address_space_handler 0x76cee5d4 +vmlinux acpi_remove_fixed_event_handler 0x4055a920 +vmlinux acpi_remove_gpe_block 0xf79ca3bb +vmlinux acpi_remove_gpe_handler 0x24d68408 +vmlinux acpi_remove_notify_handler 0x1c58427f +vmlinux acpi_resource_to_address64 0xe92b3071 +vmlinux acpi_root_dir 0xf65f4e88 +vmlinux acpi_set_current_resources 0x0be7e3d7 +vmlinux acpi_set_gpe_type 0xbde7c789 +vmlinux acpi_set_register 0xcb67d3ff +vmlinux acpi_specific_hotkey_enabled 0x46621493 +vmlinux acpi_unregister_gsi 0x7b5452b8 +vmlinux acpi_unregister_ioapic 0xbf3193ec +vmlinux acpi_ut_debug_print 0x9a71ebee +vmlinux acpi_ut_debug_print_raw 0x4381d7f5 +vmlinux acpi_ut_exit 0x0ec2a92b +vmlinux acpi_ut_status_exit 0x57c1e9c2 +vmlinux acpi_ut_trace 0x00f12cd5 +vmlinux acpi_ut_value_exit 0xe4e9cc50 +vmlinux acpi_walk_namespace 0x6f1fe2a2 +vmlinux acpi_walk_resources 0x4532cb1a +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0xa1adaf84 +vmlinux add_disk_randomness 0x19e6647f +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0x0f22bd06 +vmlinux add_wait_queue 0x242d6041 +vmlinux add_wait_queue_exclusive 0x1be1babf +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0x24b375af +vmlinux aio_put_req 0x14a14819 +vmlinux alloc_buffer_head 0x5447ba7f +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0x913c1fa0 +vmlinux alloc_disk_node 0xa9d9d34f +vmlinux alloc_etherdev 0xe00779cf +vmlinux alloc_fcdev 0x96baf9f9 +vmlinux alloc_fddidev 0x8ccbac76 +vmlinux alloc_netdev 0x822c51af +vmlinux alloc_page_buffers 0x93ebd610 +vmlinux alloc_pages_current 0xd971e6c7 +vmlinux alloc_trdev 0x78f77e67 +vmlinux alloc_tty_driver 0xd5ab4335 +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0x6b7fd004 +vmlinux anon_transport_class_unregister 0x589ff1e5 +vmlinux arch_acpi_processor_init_pdc 0xaf005cfe +vmlinux arp_broken_ops 0xd1cc8cb4 +vmlinux arp_create 0xcaf3d47d +vmlinux arp_find 0x8ac85295 +vmlinux arp_rcv 0xbab0e589 +vmlinux arp_send 0xdfe622d7 +vmlinux arp_tbl 0x69b1ac59 +vmlinux arp_xmit 0x98290177 +vmlinux attribute_container_add_attrs 0x30537cd6 +vmlinux attribute_container_add_class_device 0xf6dccb2e +vmlinux attribute_container_add_class_device_adapter 0xc02d61d3 +vmlinux attribute_container_class_device_del 0x61be8086 +vmlinux attribute_container_classdev_to_container 0x3250a221 +vmlinux attribute_container_device_trigger 0x283ee991 +vmlinux attribute_container_find_class_device 0x0f6ed327 +vmlinux attribute_container_register 0x673f573f +vmlinux attribute_container_remove_attrs 0x4ef2f1a3 +vmlinux attribute_container_remove_device 0x258fbfcc +vmlinux attribute_container_trigger 0xbe34b011 +vmlinux attribute_container_unregister 0xaa1b14d2 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x22618d62 +vmlinux bd_claim 0x503a643f +vmlinux bd_release 0xc4705e0e +vmlinux bd_set_size 0xc0876e16 +vmlinux bdev_read_only 0xd5cd33e8 +vmlinux bdevname 0xd952c21c +vmlinux bdget 0x5b7cd61b +vmlinux bdput 0x7737db23 +vmlinux bfifo_qdisc_ops 0x1a89435e +vmlinux bio_add_page 0xe94978fc +vmlinux bio_alloc 0xf613ff4e +vmlinux bio_alloc_bioset 0x13aa82c9 +vmlinux bio_clone 0xeec64ac9 +vmlinux bio_copy_user 0x23dfe3b3 +vmlinux bio_endio 0x014813ad +vmlinux bio_free 0x7ac47da7 +vmlinux bio_get_nr_vecs 0x4cf619d8 +vmlinux bio_hw_segments 0x401264b5 +vmlinux bio_init 0xdb94d0fd +vmlinux bio_map_kern 0xf2ea1ff8 +vmlinux bio_map_user 0x16f1e638 +vmlinux bio_pair_release 0x5bfecd88 +vmlinux bio_phys_segments 0xe2b11535 +vmlinux bio_put 0x01675360 +vmlinux bio_split 0x8e2f9586 +vmlinux bio_split_pool 0x16e4e378 +vmlinux bio_uncopy_user 0xf5ee50dd +vmlinux bio_unmap_user 0x002bc8a1 +vmlinux bioset_create 0x58d198f4 +vmlinux bioset_free 0x28bcefa4 +vmlinux bit_waitqueue 0xa57003b0 +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xefe7520f +vmlinux blk_alloc_queue 0x132ade36 +vmlinux blk_alloc_queue_node 0x89937df5 +vmlinux blk_cleanup_queue 0x120f2de1 +vmlinux blk_complete_barrier_rq 0xa71b111d +vmlinux blk_complete_barrier_rq_locked 0x67510ebd +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x9b1bacbc +vmlinux blk_end_sync_rq 0xe1980b69 +vmlinux blk_execute_rq 0x1e18e80e +vmlinux blk_get_backing_dev_info 0xfa3beb56 +vmlinux blk_get_queue 0x92a91214 +vmlinux blk_get_request 0x2414a0ba +vmlinux blk_init_queue 0xd1240864 +vmlinux blk_init_queue_node 0x82fed124 +vmlinux blk_insert_request 0xad24d783 +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0x65764d1e +vmlinux blk_put_request 0x228e0f91 +vmlinux blk_queue_activity_fn 0x9865dd11 +vmlinux blk_queue_bounce 0xe86d5198 +vmlinux blk_queue_bounce_limit 0xf1f799a8 +vmlinux blk_queue_dma_alignment 0x550c6c49 +vmlinux blk_queue_end_tag 0x682e92a2 +vmlinux blk_queue_find_tag 0xf01bed6a +vmlinux blk_queue_free_tags 0xf09f6dfb +vmlinux blk_queue_hardsect_size 0xb21626d7 +vmlinux blk_queue_init_tags 0xa162cbcc +vmlinux blk_queue_invalidate_tags 0x7590551a +vmlinux blk_queue_issue_flush_fn 0x48319b47 +vmlinux blk_queue_make_request 0x6fb98c9f +vmlinux blk_queue_max_hw_segments 0xb33eff8a +vmlinux blk_queue_max_phys_segments 0xa20417f7 +vmlinux blk_queue_max_sectors 0x99060a7b +vmlinux blk_queue_max_segment_size 0x09f82281 +vmlinux blk_queue_merge_bvec 0xcf6779c6 +vmlinux blk_queue_ordered 0x55ea625a +vmlinux blk_queue_prep_rq 0x1c667fd0 +vmlinux blk_queue_resize_tags 0xf16ec004 +vmlinux blk_queue_segment_boundary 0x08da4f9a +vmlinux blk_queue_stack_limits 0x50f717f5 +vmlinux blk_queue_start_tag 0x05956253 +vmlinux blk_register_region 0xcbc6a4cf +vmlinux blk_remove_plug 0x299897b4 +vmlinux blk_requeue_request 0x2458f92e +vmlinux blk_rq_bio_prep 0xc9b28d5c +vmlinux blk_rq_map_kern 0x8c5556fc +vmlinux blk_rq_map_sg 0x8a866a32 +vmlinux blk_rq_map_user 0x3ac93708 +vmlinux blk_rq_map_user_iov 0x2dd24002 +vmlinux blk_rq_unmap_user 0x266fa4ad +vmlinux blk_run_queue 0xb7dd18c3 +vmlinux blk_start_queue 0x2788d432 +vmlinux blk_stop_queue 0x4a0da11f +vmlinux blk_sync_queue 0xfc2c7eeb +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0x2f02b6b6 +vmlinux blkdev_ioctl 0x61c6b029 +vmlinux blkdev_issue_flush 0xe922958c +vmlinux blkdev_put 0x5b67396a +vmlinux block_all_signals 0x4edd72f7 +vmlinux block_commit_write 0x476bbdbd +vmlinux block_invalidatepage 0xaf76455e +vmlinux block_prepare_write 0xbf9ab8b2 +vmlinux block_read_full_page 0x779bfcc9 +vmlinux block_sync_page 0x73bec227 +vmlinux block_truncate_page 0xd7780ea0 +vmlinux block_write_full_page 0x342815d9 +vmlinux bmap 0x763f9034 +vmlinux boot_option_idle_override 0xef9aedfc +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0x26dac535 +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bte_copy 0x26feac2d +vmlinux bte_unaligned_copy 0x3a265e0c +vmlinux bus_add_device 0x0b736b06 +vmlinux bus_create_file 0xaa4a8d03 +vmlinux bus_find_device 0x2c57d0bd +vmlinux bus_for_each_dev 0xe6c0b20e +vmlinux bus_for_each_drv 0xeb292cd2 +vmlinux bus_register 0xdbc08c34 +vmlinux bus_remove_device 0xb2ea3695 +vmlinux bus_remove_file 0x8c94fc0b +vmlinux bus_rescan_devices 0xa15797d3 +vmlinux bus_unregister 0x8af66280 +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x43c852aa +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x9e233b0f +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x520f6c8f +vmlinux cdev_alloc 0xd4855f5c +vmlinux cdev_del 0x0ac04c72 +vmlinux cdev_init 0xebd3d1bd +vmlinux cfb_copyarea 0x32bffcac +vmlinux cfb_fillrect 0x678bd1ee +vmlinux cfb_imageblit 0x866313cc +vmlinux check_disk_change 0x49ca9ae1 +vmlinux class_create 0x571a752c +vmlinux class_create_file 0x1b65fa40 +vmlinux class_destroy 0x2d4325d8 +vmlinux class_device_add 0xefe80bc9 +vmlinux class_device_create 0xfa78ca6d +vmlinux class_device_create_bin_file 0x2b537580 +vmlinux class_device_create_file 0xde564aca +vmlinux class_device_del 0x0450adb7 +vmlinux class_device_destroy 0x219d4025 +vmlinux class_device_get 0x008b750c +vmlinux class_device_initialize 0x834c798d +vmlinux class_device_put 0xca39d311 +vmlinux class_device_register 0x6b098589 +vmlinux class_device_remove_bin_file 0x9ad4b422 +vmlinux class_device_remove_file 0x44208a42 +vmlinux class_device_unregister 0x9639ff32 +vmlinux class_get 0x153fc5c3 +vmlinux class_interface_register 0x562bdd65 +vmlinux class_interface_unregister 0x423c7eca +vmlinux class_put 0xdb4b34b9 +vmlinux class_register 0x86c414c1 +vmlinux class_remove_file 0x576b6ad7 +vmlinux class_unregister 0x8cb3284d +vmlinux clear_inode 0x3d0d4f24 +vmlinux clear_page 0x3d9ee9f0 +vmlinux clear_page_dirty_for_io 0x6f4d7409 +vmlinux close_bdev_excl 0x0394bc0f +vmlinux color_table 0xf6bb4729 +vmlinux complete 0x866a7695 +vmlinux complete_all 0xdb5c8104 +vmlinux complete_and_exit 0x869b2831 +vmlinux compute_creds 0xab5a63e3 +vmlinux con_copy_unimap 0x55a773f2 +vmlinux con_set_default_unimap 0x1b62a8d0 +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0xa2b3179a +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0x7fd6f2f5 +vmlinux console_stop 0x6cd98cd9 +vmlinux cont_prepare_write 0xa27793e8 +vmlinux copy_fs_struct 0xbc020e07 +vmlinux copy_io_context 0x7a50c4f2 +vmlinux copy_strings_kernel 0x34becd25 +vmlinux cpu_idle_wait 0xb53ae573 +vmlinux cpu_online_map 0xeef3d1eb +vmlinux cpu_possible_map 0xcac044db +vmlinux cpu_present_map 0xc5afbdd4 +vmlinux cpu_sysdev_class 0x6fe69519 +vmlinux cpu_to_node_map 0xe0a97624 +vmlinux cpufreq_cpu_get 0x5bbddb31 +vmlinux cpufreq_cpu_put 0x24236d97 +vmlinux cpufreq_driver_target 0x62e41e09 +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0xff4344ce +vmlinux cpufreq_gov_performance 0x9f400b8b +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0x68c0b459 +vmlinux cpufreq_parse_governor 0xa0efe93e +vmlinux cpufreq_register_driver 0x133feef8 +vmlinux cpufreq_register_governor 0xe5b5305b +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0x75a4cbbd +vmlinux cpufreq_unregister_driver 0x99ae4696 +vmlinux cpufreq_unregister_governor 0x684e2a98 +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0x3f8064ce +vmlinux crc32_le 0x6dfc7ff3 +vmlinux create_empty_buffers 0xc467ed13 +vmlinux create_proc_entry 0xd1fe6018 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x8ae1d969 +vmlinux crypto_alloc_tfm 0x6d5c8cdb +vmlinux crypto_free_tfm 0xa9ba3890 +vmlinux crypto_hmac 0x5fcfb268 +vmlinux crypto_hmac_final 0x85dfa30a +vmlinux crypto_hmac_init 0x7c0a78e4 +vmlinux crypto_hmac_update 0xe7c2de65 +vmlinux crypto_register_alg 0x0b56c046 +vmlinux crypto_unregister_alg 0x344372fc +vmlinux csum_partial 0x94095c16 +vmlinux csum_partial_copy_fromiovecend 0x883c8eca +vmlinux csum_partial_copy_nocheck 0xa2963be1 +vmlinux csum_tcpudp_magic 0x40d7f766 +vmlinux current_fs_time 0x86631431 +vmlinux current_io_context 0x23029114 +vmlinux current_kernel_time 0x74cc238d +vmlinux cx_device_register 0xaf0f45e2 +vmlinux cx_device_unregister 0x26c45d74 +vmlinux cx_driver_register 0x4f3707ac +vmlinux cx_driver_unregister 0xa5157f53 +vmlinux d_alloc 0x12440687 +vmlinux d_alloc_anon 0xb3cc4753 +vmlinux d_alloc_name 0xd700d0ef +vmlinux d_alloc_root 0x85186175 +vmlinux d_delete 0x3a27ab0b +vmlinux d_find_alias 0xd1392db2 +vmlinux d_genocide 0x2a3fe470 +vmlinux d_instantiate 0xb5f04cc1 +vmlinux d_instantiate_unique 0x6a3c8a99 +vmlinux d_invalidate 0x92cc676f +vmlinux d_lookup 0xbfc8ae03 +vmlinux d_move 0x1a71223c +vmlinux d_path 0xd53cb816 +vmlinux d_prune_aliases 0xfc64509a +vmlinux d_rehash 0x6d51f0b2 +vmlinux d_splice_alias 0x00d74424 +vmlinux d_validate 0x145c18e8 +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0xdcfe16d1 +vmlinux dcache_dir_close 0x2db42dff +vmlinux dcache_dir_lseek 0x5b32eac9 +vmlinux dcache_dir_open 0xa386413d +vmlinux dcache_lock 0x6ecb6645 +vmlinux dcache_readdir 0x2921b821 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0xc5abe00e +vmlinux default_backing_dev_info 0xc889ef11 +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0x52876266 +vmlinux default_llseek 0x2db70af9 +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x5bb05b03 +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0xd31cb353 +vmlinux del_timer 0xa2d4c5eb +vmlinux del_timer_sync 0xafab4aeb +vmlinux dentry_open 0xc9254b49 +vmlinux dentry_unhash 0xb1163fe2 +vmlinux dequeue_signal 0x35f72c29 +vmlinux destroy_8023_client 0x9051dd9d +vmlinux destroy_EII_client 0xa1bb65fb +vmlinux destroy_workqueue 0xb6d1e6ab +vmlinux dev_add_pack 0x279e7ad7 +vmlinux dev_alloc_name 0xc3171e64 +vmlinux dev_base 0xfdcbf767 +vmlinux dev_base_lock 0xa5cebfed +vmlinux dev_change_flags 0xfc768e19 +vmlinux dev_close 0xa6e2fb3d +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0x41c95de8 +vmlinux dev_get_by_index 0x66b63dfe +vmlinux dev_get_by_name 0xfe25a1a2 +vmlinux dev_get_flags 0x28a97318 +vmlinux dev_getbyhwaddr 0x101a0b06 +vmlinux dev_getfirstbyhwtype 0xda80a83f +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0xf11d1745 +vmlinux dev_mc_delete 0x6981295b +vmlinux dev_mc_upload 0xee2e098f +vmlinux dev_open 0xfad8ae18 +vmlinux dev_queue_xmit 0xde17b997 +vmlinux dev_remove_pack 0xbd742c63 +vmlinux dev_set_allmulti 0x1639cfc4 +vmlinux dev_set_mac_address 0x0515123e +vmlinux dev_set_mtu 0x556796e7 +vmlinux dev_set_promiscuity 0x671c6c38 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0xc1ec8339 +vmlinux device_attach 0xa4aeff3d +vmlinux device_bind_driver 0x456333c3 +vmlinux device_create_file 0xb313b37e +vmlinux device_del 0xa24e56c2 +vmlinux device_for_each_child 0x19f64af3 +vmlinux device_initialize 0x6ecabdf4 +vmlinux device_pm_set_parent 0x2199c357 +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0x9336c291 +vmlinux device_release_driver 0x16b6d893 +vmlinux device_remove_file 0xcc8c29ea +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0x9b4a62df +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0xb5be1db7 +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_get_cache_alignment 0x47297f48 +vmlinux dma_get_required_mask 0x4468ed66 +vmlinux dma_pool_alloc 0xdc6e52e6 +vmlinux dma_pool_create 0x7066520d +vmlinux dma_pool_destroy 0x51e18734 +vmlinux dma_pool_free 0x610e43d8 +vmlinux dnotify_parent 0xae044487 +vmlinux do_SAK 0x8bb96e64 +vmlinux do_add_mount 0xf5f3b24e +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0xc022aca4 +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0x3bbdb5a5 +vmlinux do_mmap_pgoff 0xcb1e751d +vmlinux do_munmap 0x631281f2 +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x0b529342 +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0x9c305378 +vmlinux do_sync_read 0xe0c995b1 +vmlinux do_sync_write 0xd64d443b +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0xbb670ef1 +vmlinux dput 0x643583d3 +vmlinux dq_data_lock 0xe1bf97c0 +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x6530bd42 +vmlinux dquot_alloc_inode 0x976e1a5c +vmlinux dquot_alloc_space 0x93b76cc1 +vmlinux dquot_commit 0xf9a68488 +vmlinux dquot_commit_info 0x53a8a254 +vmlinux dquot_drop 0xbd75ddc3 +vmlinux dquot_free_inode 0x9456ab5b +vmlinux dquot_free_space 0x9e0cd34e +vmlinux dquot_initialize 0x6e8c8ec9 +vmlinux dquot_mark_dquot_dirty 0xd2b592a8 +vmlinux dquot_release 0xad951756 +vmlinux dquot_transfer 0xfda72ba1 +vmlinux drive_is_ready 0x2aff3ac9 +vmlinux driver_attach 0xf275ecb6 +vmlinux driver_create_file 0x0f1ece73 +vmlinux driver_find 0xf4599eb2 +vmlinux driver_find_device 0x20ff6b31 +vmlinux driver_for_each_device 0x5c43f363 +vmlinux driver_register 0x76c94e08 +vmlinux driver_remove_file 0xc86ea972 +vmlinux driver_unregister 0x125f9c77 +vmlinux drop_super 0xcad2d949 +vmlinux dst_alloc 0x462d36a9 +vmlinux dst_destroy 0x960b36a7 +vmlinux dump_stack 0x6b2dc060 +vmlinux ec_read 0xfc4152fc +vmlinux ec_write 0xc708f1fe +vmlinux efi 0x5116b2ee +vmlinux efi_mem_attributes 0x5ddb3d56 +vmlinux eighty_ninty_three 0x4c5f3f01 +vmlinux elevator_exit 0xa352eda0 +vmlinux elevator_init 0x2aad4f4a +vmlinux elv_add_request 0x4026a7d2 +vmlinux elv_completed_request 0xb5d3525e +vmlinux elv_dequeue_request 0x567f625f +vmlinux elv_dispatch_sort 0x4b5cc211 +vmlinux elv_next_request 0x8d4d9333 +vmlinux elv_queue_empty 0xd2e8f191 +vmlinux elv_register 0xee2f062b +vmlinux elv_requeue_request 0x755cb221 +vmlinux elv_rq_merge_ok 0xae19d823 +vmlinux elv_try_merge 0x11adddb9 +vmlinux elv_unregister 0x4f1786fe +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_irq 0xfcec0987 +vmlinux end_buffer_async_write 0x4cf9d4e3 +vmlinux end_buffer_read_sync 0x6aa87e31 +vmlinux end_buffer_write_sync 0xcca54ca5 +vmlinux end_page_writeback 0xb8b9c716 +vmlinux end_request 0x065644dd +vmlinux end_that_request_chunk 0xd92d96c1 +vmlinux end_that_request_first 0xd20c5427 +vmlinux end_that_request_last 0x4aea1607 +vmlinux eth_type_trans 0xf63ece01 +vmlinux ether_setup 0xa377944c +vmlinux ethtool_op_get_link 0xd81a83fc +vmlinux ethtool_op_get_perm_addr 0xc5e0e79f +vmlinux ethtool_op_get_sg 0xef2d8f24 +vmlinux ethtool_op_get_tso 0x59503ccb +vmlinux ethtool_op_get_tx_csum 0x73725a86 +vmlinux ethtool_op_get_ufo 0x3d7dfcdf +vmlinux ethtool_op_set_sg 0x8d1fd06d +vmlinux ethtool_op_set_tso 0xd05dce5f +vmlinux ethtool_op_set_tx_csum 0xf546d644 +vmlinux ethtool_op_set_tx_hw_csum 0xc75d4da8 +vmlinux ethtool_op_set_ufo 0xb2044d83 +vmlinux exit_fs 0x0f994365 +vmlinux f_setown 0x49375be7 +vmlinux fasync_helper 0xe55afdb7 +vmlinux fb_add_videomode 0x4b1f60ae +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0xb2c3f03e +vmlinux fb_con_duit 0xd7f39b6f +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xe42d2279 +vmlinux fb_destroy_modedb 0xc07b0863 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0x0397edd5 +vmlinux fb_find_best_display 0x3711e07e +vmlinux fb_find_best_mode 0x8306185a +vmlinux fb_find_mode 0xf1c4bc1b +vmlinux fb_find_mode_cvt 0xf93fd09c +vmlinux fb_find_nearest_mode 0x7538617b +vmlinux fb_firmware_edid 0x3978b20e +vmlinux fb_get_buffer_offset 0xa4e27931 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0xe4ebbdca +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x2ecf82c7 +vmlinux fb_mode_is_equal 0xb9d7ba2b +vmlinux fb_new_modelist 0x61e3f2c5 +vmlinux fb_pad_aligned_buffer 0x61ea189b +vmlinux fb_pad_unaligned_buffer 0x42f1b900 +vmlinux fb_pan_display 0x6b5728b1 +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x922ebd46 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0xa27dfc27 +vmlinux fb_set_suspend 0x68bf7b31 +vmlinux fb_set_var 0x9cd67393 +vmlinux fb_show_logo 0x6dab5745 +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x38727e23 +vmlinux fb_var_to_videomode 0x3369b3ff +vmlinux fb_videomode_to_modelist 0x9f84cecb +vmlinux fb_videomode_to_var 0xe12a6201 +vmlinux fd_install 0x452f74de +vmlinux fddi_type_trans 0x3030b718 +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x323f6e7f +vmlinux file_fsync 0x062b261e +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0xedd7bb7f +vmlinux filemap_fdatawait 0x27eb90ac +vmlinux filemap_fdatawrite 0x4afbd387 +vmlinux filemap_flush 0xfed9a1a2 +vmlinux filemap_nopage 0x0f0691d6 +vmlinux filemap_populate 0xc67b28d8 +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0x15a12b72 +vmlinux filp_open 0x92694b59 +vmlinux find_bus 0x979ba306 +vmlinux find_get_page 0x0c7fc2d9 +vmlinux find_inode_number 0x9ea84217 +vmlinux find_lock_page 0xc16299a4 +vmlinux find_or_create_page 0x0982f8fe +vmlinux find_task_by_pid_type 0x2268ec15 +vmlinux find_trylock_page 0x39daf037 +vmlinux find_vma 0xf48e8ef2 +vmlinux finish_wait 0xb66445a3 +vmlinux firmware_register 0x7affcb13 +vmlinux firmware_unregister 0x216dde83 +vmlinux flock_lock_file_wait 0x4dc60694 +vmlinux flow_cache_genid 0xa33a289f +vmlinux flow_cache_lookup 0x57726d68 +vmlinux flush_old_exec 0x3b72844d +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0xce94c96a +vmlinux flush_tlb_range 0x2c04c37f +vmlinux flush_workqueue 0x92e9c4e8 +vmlinux follow_down 0xb32f029b +vmlinux follow_up 0xe59b6af7 +vmlinux force_sig 0x512de60d +vmlinux fpswa_interface 0xa2755c7b +vmlinux fput 0xdecb96ff +vmlinux framebuffer_alloc 0x783a928a +vmlinux framebuffer_release 0xcf440cec +vmlinux free_buffer_head 0xcddd748a +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0x1c336f5d +vmlinux free_pages 0x4302d0eb +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0x295e406f +vmlinux freeze_bdev 0xdbf388ab +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0x6ffeb49f +vmlinux gen_kill_estimator 0xa4a74611 +vmlinux gen_new_estimator 0xa3632b59 +vmlinux gen_pool_alloc 0x4b6c8600 +vmlinux gen_pool_create 0x4b3cabfe +vmlinux gen_pool_free 0x5d629ec7 +vmlinux gen_replace_estimator 0xa46ea42a +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x8b6b8bf3 +vmlinux generic_block_bmap 0x6f4b1ebd +vmlinux generic_commit_write 0x17940ac6 +vmlinux generic_cont_expand 0xbcf26240 +vmlinux generic_delete_inode 0x9cc8128c +vmlinux generic_drop_inode 0xaf1e177f +vmlinux generic_file_aio_read 0x15cf61c0 +vmlinux generic_file_aio_write 0xf75940ac +vmlinux generic_file_aio_write_nolock 0xf423fd3a +vmlinux generic_file_buffered_write 0x56c50c35 +vmlinux generic_file_direct_write 0xc66e48ac +vmlinux generic_file_llseek 0x1b3a2f6c +vmlinux generic_file_mmap 0x872013d5 +vmlinux generic_file_open 0x8ab49619 +vmlinux generic_file_read 0xdc9a45fa +vmlinux generic_file_readonly_mmap 0xf2902e42 +vmlinux generic_file_readv 0x1f634292 +vmlinux generic_file_sendfile 0xb9ca36e2 +vmlinux generic_file_write 0xdac190d3 +vmlinux generic_file_write_nolock 0x371fdca1 +vmlinux generic_file_writev 0xf38d8d8e +vmlinux generic_fillattr 0xdc584288 +vmlinux generic_getxattr 0xbbd97dcb +vmlinux generic_ide_ioctl 0xdfd1cf6a +vmlinux generic_listxattr 0x95d08b0f +vmlinux generic_make_request 0x1e33cb14 +vmlinux generic_osync_inode 0x2697197c +vmlinux generic_permission 0xdc24e04b +vmlinux generic_read_dir 0x17344af2 +vmlinux generic_readlink 0x7245467f +vmlinux generic_removexattr 0x832f718c +vmlinux generic_ro_fops 0x21add1ed +vmlinux generic_setxattr 0x0e1be41d +vmlinux generic_shutdown_super 0xc924b9b7 +vmlinux generic_unplug_device 0xfef76011 +vmlinux generic_write_checks 0x116e4892 +vmlinux genl_register_family 0xe773d5fb +vmlinux genl_register_ops 0x41f89ddb +vmlinux genl_sock 0x96a43549 +vmlinux genl_unregister_family 0xc4ec179f +vmlinux genl_unregister_ops 0x102c8fc4 +vmlinux get_bus 0x168b8eb7 +vmlinux get_cpu_sysdev 0x8111f4c2 +vmlinux get_dcookie 0x6f2be371 +vmlinux get_device 0x72b6179b +vmlinux get_disk 0xf601613b +vmlinux get_driver 0x5ba907e0 +vmlinux get_empty_filp 0x0b8c2fcb +vmlinux get_fs_type 0x6d7e4b48 +vmlinux get_io_context 0xfe4b6616 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0x22a5e636 +vmlinux get_sb_nodev 0x1e056df0 +vmlinux get_sb_pseudo 0x4dee9455 +vmlinux get_sb_single 0xd08e7410 +vmlinux get_super 0x05227e17 +vmlinux get_task_mm 0xc7c437ff +vmlinux get_unmapped_area 0xb9c8adc1 +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x53cfe0cf +vmlinux get_write_access 0x393af5c3 +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x4563b1eb +vmlinux gnet_stats_copy_app 0x29cc9c2b +vmlinux gnet_stats_copy_basic 0x02f50739 +vmlinux gnet_stats_copy_queue 0x5d2b92cf +vmlinux gnet_stats_copy_rate_est 0xde1b6e12 +vmlinux gnet_stats_finish_copy 0x3dddd8d6 +vmlinux gnet_stats_start_copy 0xf109238c +vmlinux gnet_stats_start_copy_compat 0x788e3196 +vmlinux grab_cache_page_nowait 0x31beece0 +vmlinux groups_alloc 0x705f28cd +vmlinux groups_free 0x436a7f98 +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0x0fdd2fc6 +vmlinux have_submounts 0xa1451403 +vmlinux high_memory 0x8a7d1c31 +vmlinux hp_acpi_csr_space 0x05b8f2bc +vmlinux hwmon_device_register 0xb6e2c919 +vmlinux hwmon_device_unregister 0xf7fd4c71 +vmlinux hwsw_alloc_coherent 0xe9b212ef +vmlinux hwsw_dma_mapping_error 0x30f56b6f +vmlinux hwsw_dma_supported 0x4f760041 +vmlinux hwsw_free_coherent 0x0253a664 +vmlinux hwsw_map_sg 0x2242f8ee +vmlinux hwsw_map_single 0xc453ccfb +vmlinux hwsw_unmap_sg 0x294356e7 +vmlinux hwsw_unmap_single 0xc5dd8a45 +vmlinux ia64_acpiid_to_sapicid 0x3ac96696 +vmlinux ia64_cpu_to_sapicid 0xe52d755f +vmlinux ia64_iobase 0x08e6b007 +vmlinux ia64_ivt 0x3cdde3b7 +vmlinux ia64_load_scratch_fpregs 0xc9266a5a +vmlinux ia64_max_iommu_merge_mask 0xb1f32d3d +vmlinux ia64_mv 0x016b9518 +vmlinux ia64_pal_call_phys_stacked 0xfbbca7dc +vmlinux ia64_pal_call_phys_static 0x0e402370 +vmlinux ia64_pal_call_stacked 0xafc13e64 +vmlinux ia64_pal_call_static 0xca484b2c +vmlinux ia64_pfn_valid 0x3717dbf9 +vmlinux ia64_reg_MCA_extension 0x2a372c6c +vmlinux ia64_sal_oemcall 0x5c7a8717 +vmlinux ia64_sal_oemcall_nolock 0xd64d24a3 +vmlinux ia64_sal_oemcall_reentrant 0xd67440e7 +vmlinux ia64_save_scratch_fpregs 0x83998b0b +vmlinux ia64_spinlock_contention 0xdd7906b9 +vmlinux ia64_unreg_MCA_extension 0x79a2fd35 +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x2eb64d24 +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_acpi_exec_tfs 0x68e2eb07 +vmlinux ide_acpi_get_timing 0x1ef58db3 +vmlinux ide_acpi_init 0x9094c364 +vmlinux ide_acpi_push_timing 0x8578e02c +vmlinux ide_add_setting 0x64193020 +vmlinux ide_build_dmatable 0x5adfc6a9 +vmlinux ide_build_sglist 0xacb8be01 +vmlinux ide_bus_type 0x65ebeef4 +vmlinux ide_config_drive_speed 0x1d57ebed +vmlinux ide_destroy_dmatable 0xda21da04 +vmlinux ide_dma_enable 0x18022d3d +vmlinux ide_dma_intr 0x9a05509f +vmlinux ide_dma_setup 0x4230e13f +vmlinux ide_dma_speed 0x5e028bd4 +vmlinux ide_dma_start 0xdb692d82 +vmlinux ide_dma_verbose 0x08542009 +vmlinux ide_do_drive_cmd 0x06a06df4 +vmlinux ide_do_reset 0x22528a6d +vmlinux ide_dump_status 0x390055e9 +vmlinux ide_end_drive_cmd 0x32051d35 +vmlinux ide_end_request 0xf03e8bb3 +vmlinux ide_error 0xb8267b8a +vmlinux ide_execute_command 0x1813f264 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x3aa7cf21 +vmlinux ide_get_best_pio_mode 0xaaab82c2 +vmlinux ide_get_error_location 0x053ec14f +vmlinux ide_hwifs 0x3583c90b +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0x8f21b0d3 +vmlinux ide_init_drive_cmd 0x58655898 +vmlinux ide_init_sg_cmd 0xd2367339 +vmlinux ide_lock 0xce2d3d11 +vmlinux ide_map_sg 0x1b9d8e55 +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x219964f7 +vmlinux ide_pci_unregister_driver 0xcb29ea8b +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x99cbccf3 +vmlinux ide_raw_taskfile 0x1292619d +vmlinux ide_register_hw 0x1b35a817 +vmlinux ide_register_hw_with_fixup 0x9c9ce389 +vmlinux ide_register_region 0xff15d2ec +vmlinux ide_register_subdriver 0xe4f46933 +vmlinux ide_set_handler 0x9f9880a4 +vmlinux ide_set_xfer_rate 0xfacc175d +vmlinux ide_setup_dma 0x7acfff23 +vmlinux ide_setup_pci_device 0x6dbbf486 +vmlinux ide_setup_pci_devices 0x3c954161 +vmlinux ide_setup_pci_noise 0xa00ae904 +vmlinux ide_spin_wait_hwgroup 0x73dc71eb +vmlinux ide_stall_queue 0xef13fe7d +vmlinux ide_undecoded_slave 0xd2261778 +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0x0caeb1bf +vmlinux ide_unregister_subdriver 0xb3b5b5a6 +vmlinux ide_use_dma 0xbf26b763 +vmlinux ide_wait_not_busy 0x9e6341a9 +vmlinux ide_wait_stat 0x0027aa88 +vmlinux ide_xfer_verbose 0xc05d558d +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0xdcc6e32a +vmlinux idr_find 0xe7f7140d +vmlinux idr_get_new 0x7af0e1a6 +vmlinux idr_get_new_above 0x44c0d7d0 +vmlinux idr_init 0x28aa8e90 +vmlinux idr_pre_get 0x56f2a4ce +vmlinux idr_remove 0xd0e7663c +vmlinux iget5_locked 0x7abfcb74 +vmlinux iget_locked 0x19088d49 +vmlinux igrab 0x8596c3c4 +vmlinux ilookup 0x181c17d0 +vmlinux ilookup5 0x7cb9fb38 +vmlinux ilookup5_nowait 0x2d4a08f9 +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0x57156d40 +vmlinux in_egroup_p 0x42a4bdf2 +vmlinux in_group_p 0x31ebadcd +vmlinux in_lock_functions 0x09d44df9 +vmlinux inet6_lookup 0xa94d8a55 +vmlinux inet6_lookup_listener 0xa7c155b5 +vmlinux inet_accept 0xce072749 +vmlinux inet_add_protocol 0x7cdf959c +vmlinux inet_addr_type 0x9f8197db +vmlinux inet_bind 0x11c910ea +vmlinux inet_bind_bucket_create 0x2b59ce82 +vmlinux inet_bind_hash 0xa19c20ba +vmlinux inet_csk_accept 0xaaa6ba4e +vmlinux inet_csk_clear_xmit_timers 0x336ff1d2 +vmlinux inet_csk_clone 0x17247f08 +vmlinux inet_csk_delete_keepalive_timer 0x37225812 +vmlinux inet_csk_destroy_sock 0x4c853a3c +vmlinux inet_csk_get_port 0xcc39368d +vmlinux inet_csk_init_xmit_timers 0xa47b705d +vmlinux inet_csk_listen_start 0x1f6231c6 +vmlinux inet_csk_listen_stop 0xd50f986e +vmlinux inet_csk_reqsk_queue_hash_add 0x293e5229 +vmlinux inet_csk_reqsk_queue_prune 0x79778360 +vmlinux inet_csk_reset_keepalive_timer 0xd02f5b33 +vmlinux inet_csk_route_req 0xe33ad38b +vmlinux inet_csk_search_req 0x6ba099f8 +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0xd2f16e5d +vmlinux inet_dgram_connect 0xb0ae3c64 +vmlinux inet_dgram_ops 0xec3d6938 +vmlinux inet_diag_register 0x26758809 +vmlinux inet_diag_unregister 0x756f3db5 +vmlinux inet_getname 0xd7df6d8b +vmlinux inet_ioctl 0x2d08c05f +vmlinux inet_listen 0x0885464b +vmlinux inet_listen_wlock 0x00165663 +vmlinux inet_put_port 0xc4fa6852 +vmlinux inet_register_protosw 0x46bafbb7 +vmlinux inet_release 0xd317d6ed +vmlinux inet_select_addr 0x608d21ef +vmlinux inet_sendmsg 0x92711c6c +vmlinux inet_shutdown 0x957fcb3e +vmlinux inet_sk_rebuild_header 0xc6555954 +vmlinux inet_sock_destruct 0x29853573 +vmlinux inet_stream_connect 0x625d158f +vmlinux inet_stream_ops 0xba052cb8 +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x46ab594c +vmlinux inet_twsk_deschedule 0x39b5aa0c +vmlinux inet_twsk_schedule 0x7f96bf70 +vmlinux inet_unregister_protosw 0x5a98641d +vmlinux inetdev_by_index 0x6edf1fc4 +vmlinux init_buffer 0xcb00b9b0 +vmlinux init_mm 0x17b455e7 +vmlinux init_special_inode 0x60055c12 +vmlinux init_task 0x979e96a5 +vmlinux init_timer 0x98957132 +vmlinux inode_add_bytes 0x5514770a +vmlinux inode_change_ok 0x49d346de +vmlinux inode_get_bytes 0xa223112b +vmlinux inode_init_once 0x3df2b893 +vmlinux inode_needs_sync 0x97bd675e +vmlinux inode_set_bytes 0x835bc86e +vmlinux inode_setattr 0x39a585fb +vmlinux inode_sub_bytes 0xdb1aec0f +vmlinux inode_update_time 0x524c85f5 +vmlinux inotify_dentry_parent_queue_event 0x61bcfbde +vmlinux inotify_get_cookie 0x0fef6e6d +vmlinux inotify_inode_is_dead 0x7455ef46 +vmlinux inotify_inode_queue_event 0xcd6fc3a4 +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0x08520fd3 +vmlinux input_allocate_device 0xf268a4b3 +vmlinux input_class 0x9af725ec +vmlinux input_close_device 0x99ecff3e +vmlinux input_event 0x6ef7bf09 +vmlinux input_flush_device 0x309a3248 +vmlinux input_grab_device 0x7f693796 +vmlinux input_open_device 0xb5c3b144 +vmlinux input_register_device 0xa950a539 +vmlinux input_register_handler 0x7ab2f456 +vmlinux input_release_device 0x1357fa04 +vmlinux input_unregister_device 0xa1e8957a +vmlinux input_unregister_handler 0x97c32b87 +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0xceb406c5 +vmlinux int_sqrt 0xb678366f +vmlinux int_to_scsilun 0xea10212a +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x225f6817 +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0x06bfd4f6 +vmlinux interruptible_sleep_on_timeout 0x5c4e5b7e +vmlinux invalidate_bdev 0x0d7ef351 +vmlinux invalidate_inode_pages 0x5d053189 +vmlinux invalidate_inode_pages2 0xe39f226e +vmlinux invalidate_inode_pages2_range 0x059f4c45 +vmlinux invalidate_inodes 0xbfbff198 +vmlinux invalidate_partition 0xcefafae6 +vmlinux io_schedule 0x93a6e0b2 +vmlinux io_space 0xeb16163b +vmlinux ioctl_by_bdev 0xeb11f7eb +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0xc5534d64 +vmlinux ioread16_rep 0x5857b225 +vmlinux ioread16be 0xf065f629 +vmlinux ioread32 0xe484e35f +vmlinux ioread32_rep 0x3f0546a8 +vmlinux ioread32be 0xfdb9b629 +vmlinux ioread8 0xf10de535 +vmlinux ioread8_rep 0xf441ac43 +vmlinux iov_shorten 0x92392cd9 +vmlinux iowrite16 0x06a86bc1 +vmlinux iowrite16_rep 0x8cc79cab +vmlinux iowrite16be 0x26f8f0b8 +vmlinux iowrite32 0x4a453f53 +vmlinux iowrite32_rep 0xbfc177bc +vmlinux iowrite32be 0xe419bc99 +vmlinux iowrite8 0x848d372e +vmlinux iowrite8_rep 0xa4b94fea +vmlinux ip4_datagram_connect 0x1c51ff00 +vmlinux ip_build_and_send_pkt 0x3cc71065 +vmlinux ip_cmsg_recv 0x22d5cab6 +vmlinux ip_compute_csum 0xe5e298ea +vmlinux ip_ct_attach 0x61a7e12d +vmlinux ip_defrag 0xe60ae4c1 +vmlinux ip_fast_csum 0xe4627d16 +vmlinux ip_fragment 0x2fc277e5 +vmlinux ip_generic_getfrag 0xe50011d6 +vmlinux ip_getsockopt 0x02c03654 +vmlinux ip_mc_dec_group 0x3c3f456b +vmlinux ip_mc_inc_group 0x1ca12d04 +vmlinux ip_mc_join_group 0xfda8ea42 +vmlinux ip_queue_xmit 0x93ed144b +vmlinux ip_route_input 0x059f3982 +vmlinux ip_route_me_harder 0x29dbd8f9 +vmlinux ip_route_output_flow 0x1e82414d +vmlinux ip_route_output_key 0xa52b1e58 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0xa37b7441 +vmlinux ip_setsockopt 0xd06561a7 +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0x3e8f0dfd +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0x16574693 +vmlinux ipv6_ext_hdr 0x969ad2d6 +vmlinux ipv6_skip_exthdr 0x8fe8b7f7 +vmlinux is_bad_inode 0xa4ec019c +vmlinux is_console_locked 0x944a564d +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux isa_irq_to_vector_map 0x3aed7527 +vmlinux iunique 0x33c3ba45 +vmlinux iw_handler_get_spy 0xe88a1107 +vmlinux iw_handler_get_thrspy 0xe10c91a6 +vmlinux iw_handler_set_spy 0x5f7f0707 +vmlinux iw_handler_set_thrspy 0x30432255 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0x7ef0512f +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0xb5e908ae +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0xa26eab00 +vmlinux kernel_recvmsg 0x6a5b9458 +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0xee11e9c7 +vmlinux kernel_subsys 0xf70af17f +vmlinux kernel_thread 0x439090b9 +vmlinux kfifo_alloc 0xdf2fb3ba +vmlinux kfifo_free 0x104d432b +vmlinux kfifo_init 0x09991e7b +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0x7446dda9 +vmlinux kill_anon_super 0xb2f07e4a +vmlinux kill_block_super 0xe0ef07dd +vmlinux kill_fasync 0x6fab964a +vmlinux kill_litter_super 0x5e837bbc +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0x7c0c631a +vmlinux klist_add_head 0x4e5495c5 +vmlinux klist_add_tail 0xdf2ffe9c +vmlinux klist_del 0x04a4a7b3 +vmlinux klist_init 0xc920554e +vmlinux klist_iter_exit 0xf8eb0593 +vmlinux klist_iter_init 0x3999c5fb +vmlinux klist_iter_init_node 0xf1569412 +vmlinux klist_next 0x3d5c15a1 +vmlinux klist_node_attached 0xde2a3fc2 +vmlinux klist_remove 0x5389f09e +vmlinux km_new_mapping 0xa7310fec +vmlinux km_policy_notify 0x3512cf1e +vmlinux km_state_notify 0xe8dd1290 +vmlinux km_waitq 0xc03c6f5f +vmlinux kmalloc_node 0xce0123e0 +vmlinux kmem_cache_alloc 0x09895cff +vmlinux kmem_cache_alloc_node 0xb5f15280 +vmlinux kmem_cache_create 0xb06e0387 +vmlinux kmem_cache_destroy 0x70031eaf +vmlinux kmem_cache_free 0x823c9650 +vmlinux kmem_cache_name 0x9d994b7a +vmlinux kmem_cache_shrink 0x4e76447c +vmlinux kmem_cache_size 0xe3101eb2 +vmlinux kmem_find_general_cachep 0x3bff4c71 +vmlinux kobject_add 0x185eb00a +vmlinux kobject_del 0x83e8c670 +vmlinux kobject_get 0x1ace7a22 +vmlinux kobject_hotplug 0xf1c84588 +vmlinux kobject_init 0xf88a523b +vmlinux kobject_put 0x94b99e5f +vmlinux kobject_register 0x33eda1c7 +vmlinux kobject_set_name 0x7d49dee2 +vmlinux kobject_uevent 0x5f50e8fc +vmlinux kobject_uevent_atomic 0x26aacf70 +vmlinux kobject_unregister 0x791adfc2 +vmlinux kref_get 0xbd0712b5 +vmlinux kref_init 0xd1aebf8a +vmlinux kref_put 0xd23c3f86 +vmlinux kset_find_obj 0x4a7a40b6 +vmlinux kset_register 0xa35e5f59 +vmlinux kset_unregister 0x83b01d03 +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x17fdc99b +vmlinux kthread_create 0xbf82a1b8 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0xe4f3d64b +vmlinux kthread_stop_sem 0xca1ea4fc +vmlinux kzalloc 0x5a3b6eca +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0x1b638381 +vmlinux lease_modify 0x0508c913 +vmlinux linkwatch_fire_event 0x1108daa5 +vmlinux ll_rw_block 0x46a4cc51 +vmlinux llc_add_pack 0x33303925 +vmlinux llc_build_and_send_ui_pkt 0x7301c5c7 +vmlinux llc_mac_hdr_init 0x8844bfe7 +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0x56b58d54 +vmlinux llc_sap_find 0x27e86e06 +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0x428c8d73 +vmlinux llc_sap_open 0x96927231 +vmlinux llc_set_station_handler 0x1bfc7030 +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_nls 0x2a35f545 +vmlinux load_nls_default 0x96f2e10d +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_kernel 0x3656bf5a +vmlinux lock_may_read 0x62f7cbef +vmlinux lock_may_write 0x11569a93 +vmlinux lock_rename 0xd6606e16 +vmlinux lock_sock 0xc5586543 +vmlinux locks_copy_lock 0xd676fe84 +vmlinux locks_init_lock 0x04e38928 +vmlinux locks_mandatory_area 0x9614782d +vmlinux locks_remove_posix 0x1b092278 +vmlinux lookup_create 0x63131807 +vmlinux lookup_hash 0x37170f60 +vmlinux lookup_instantiate_filp 0x5339a58d +vmlinux lookup_one_len 0x29674d05 +vmlinux loopback_dev 0xaa05232c +vmlinux loops_per_jiffy 0xba497f13 +vmlinux machvec_dma_sync_sg 0x17bd35b0 +vmlinux machvec_dma_sync_single 0x7aa0f563 +vmlinux machvec_setup 0xaf6bbc60 +vmlinux machvec_timer_interrupt 0x18d3f88f +vmlinux make_8023_client 0xed5d2747 +vmlinux make_EII_client 0xd84b0f2d +vmlinux make_bad_inode 0xb4918d9e +vmlinux malloc_sizes 0x8913efd9 +vmlinux mapping_tagged 0x7a9670f2 +vmlinux mark_buffer_async_write 0xd681fbde +vmlinux mark_buffer_dirty 0xbf8976df +vmlinux mark_buffer_dirty_inode 0xf70efca3 +vmlinux mark_info_dirty 0x7cc776c3 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x4ebabdac +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_cstate 0x93805374 +vmlinux max_low_pfn 0x9abfb6dd +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0xa2b92d41 +vmlinux may_umount_tree 0xe26ed0ef +vmlinux mb_cache_create 0xc9ad570b +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0xe77c6856 +vmlinux mb_cache_entry_find_first 0x7f79fd25 +vmlinux mb_cache_entry_find_next 0xb77489b3 +vmlinux mb_cache_entry_free 0x25a9e8de +vmlinux mb_cache_entry_get 0x6044e608 +vmlinux mb_cache_entry_insert 0x8d264c8e +vmlinux mb_cache_entry_release 0x37791039 +vmlinux mb_cache_shrink 0xdccb7046 +vmlinux memchr 0xc740c64a +vmlinux memcmp 0xc7ec28b0 +vmlinux memcpy 0x6067a146 +vmlinux memcpy_fromio 0xfd19eaeb +vmlinux memcpy_fromiovec 0x36139a51 +vmlinux memcpy_fromiovecend 0x9bc565c5 +vmlinux memcpy_toio 0x129697b8 +vmlinux memcpy_toiovec 0x2876a6d3 +vmlinux memmove 0x5dbbe98e +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xa5faba0d +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0x2c9367fb +vmlinux mempool_create_node 0xeda88a82 +vmlinux mempool_destroy 0x89ed4fee +vmlinux mempool_free 0x2a6bb2c8 +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x937958a6 +vmlinux memscan 0x9c0ea3cd +vmlinux memset 0x3fa03a97 +vmlinux memset_io 0xcd473329 +vmlinux min_low_pfn 0x0acca637 +vmlinux misc_deregister 0x44c6904c +vmlinux misc_register 0x05e89f00 +vmlinux mmput 0xcd36a3e7 +vmlinux mnt_pin 0x981d4424 +vmlinux mnt_unpin 0xd6859af4 +vmlinux mntput_no_expire 0x5eaa91b7 +vmlinux mod_firmware_load 0x39e3dd23 +vmlinux mod_reg_security 0x89163020 +vmlinux mod_timer 0x71505c19 +vmlinux mod_unreg_security 0xb77ed87b +vmlinux module_add_driver 0xff4a0bf9 +vmlinux module_refcount 0x05e2a435 +vmlinux module_remove_driver 0x09d98297 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0xb9d17d06 +vmlinux mpage_readpages 0x8066d0a6 +vmlinux mpage_writepage 0x135957cc +vmlinux mpage_writepages 0x6d0872b0 +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux multipath_alg_register 0x98b8c7c7 +vmlinux multipath_alg_unregister 0x18d1e543 +vmlinux n_tty_ioctl 0xc0f0e3b9 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0xd4b806fc +vmlinux neigh_changeaddr 0x3e08b4a8 +vmlinux neigh_compat_output 0x494ccd9d +vmlinux neigh_connected_output 0x189cc297 +vmlinux neigh_create 0xfbbe38aa +vmlinux neigh_delete 0x22874e35 +vmlinux neigh_destroy 0x9a146aa1 +vmlinux neigh_dump_info 0x26a554a8 +vmlinux neigh_event_ns 0xf491befb +vmlinux neigh_for_each 0x17cbbbed +vmlinux neigh_ifdown 0xaabe167a +vmlinux neigh_lookup 0xf250e3ef +vmlinux neigh_lookup_nodev 0xa78fdb1c +vmlinux neigh_parms_alloc 0xc613f99c +vmlinux neigh_parms_release 0x62a05ade +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0xa85fc88d +vmlinux neigh_seq_next 0xdc7869a6 +vmlinux neigh_seq_start 0xbed6d898 +vmlinux neigh_seq_stop 0xbf373281 +vmlinux neigh_sysctl_register 0x7009798c +vmlinux neigh_sysctl_unregister 0x9da1e019 +vmlinux neigh_table_clear 0x680f6a57 +vmlinux neigh_table_init 0x2741b7b7 +vmlinux neigh_update 0x69c1906f +vmlinux neigh_update_hhs 0x959ff91f +vmlinux neightbl_dump_info 0x76f0fde5 +vmlinux neightbl_set 0x744a2389 +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0xaa563a56 +vmlinux netdev_features_change 0xe388c27e +vmlinux netdev_rx_csum_fault 0xef512eae +vmlinux netdev_set_master 0xc55b644b +vmlinux netdev_state_change 0xb780c7d5 +vmlinux netif_carrier_off 0x821212ba +vmlinux netif_carrier_on 0xe65a34df +vmlinux netif_receive_skb 0x5e5815d4 +vmlinux netif_rx 0x0afef509 +vmlinux netif_rx_ni 0x17c4759f +vmlinux netlink_ack 0x9d1d5e5f +vmlinux netlink_broadcast 0x1be85b92 +vmlinux netlink_dump_start 0x99462099 +vmlinux netlink_kernel_create 0x724332fa +vmlinux netlink_queue_skip 0xd3fe4bf0 +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0x0dd654d4 +vmlinux netlink_set_err 0x0f1f56cc +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0x06ec72ac +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x103f6143 +vmlinux netpoll_parse_options 0xe2ac1e2b +vmlinux netpoll_poll 0x48ca466f +vmlinux netpoll_queue 0xc9e6d0b3 +vmlinux netpoll_send_udp 0xc2b6f32e +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0x2b39dd6e +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0x49608eb0 +vmlinux next_thread 0x00fd69f6 +vmlinux nf_ct_attach 0x33729e45 +vmlinux nf_getsockopt 0xb4d28584 +vmlinux nf_hook_slow 0xce8c7a76 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0x9be25f46 +vmlinux nf_log_register 0x43d3945e +vmlinux nf_log_unregister_logger 0x5a1192fd +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0xe632ac0e +vmlinux nf_register_queue_handler 0x69ecb9ba +vmlinux nf_register_queue_rerouter 0x73628e88 +vmlinux nf_register_sockopt 0xfb09e2b7 +vmlinux nf_reinject 0xd6d9f648 +vmlinux nf_setsockopt 0x636a3f6c +vmlinux nf_unregister_hook 0x7a179cdf +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0xb1dc66f7 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x5ddd68ae +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0x4c4c956e +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x9b4f3684 +vmlinux nla_put 0x7fc2a70c +vmlinux nla_reserve 0x636893a0 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0xa33f7c7c +vmlinux nla_validate 0x71798dc7 +vmlinux no_llseek 0xe4ebda41 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x80844b3c +vmlinux nobh_prepare_write 0xfe632637 +vmlinux nobh_truncate_page 0x2da23eef +vmlinux nobh_writepage 0x538193c8 +vmlinux node_online_map 0xaf2c5c03 +vmlinux node_possible_map 0xcf6e837d +vmlinux nonseekable_open 0xc819adde +vmlinux noop_qdisc 0x9fcf0c4b +vmlinux noop_qdisc_ops 0x597b2bf9 +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x7d21067e +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0xd13e8915 +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0xf579bb12 +vmlinux open_by_devnum 0xc9c8335a +vmlinux open_exec 0x0e4a437c +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux p80211_resume 0xedabcac1 +vmlinux p80211_suspend 0x99c175a9 +vmlinux p80211netdev_hwremoved 0xb54cfbbd +vmlinux p80211netdev_rx 0x09751f01 +vmlinux p80211skb_free 0xd805bce0 +vmlinux p80211skb_rxmeta_attach 0xdb03b048 +vmlinux page_follow_link_light 0xdc682429 +vmlinux page_put_link 0x755a6822 +vmlinux page_readlink 0xc271cb07 +vmlinux page_symlink 0x3eaee1e4 +vmlinux page_symlink_inode_operations 0x2310a70c +vmlinux pagevec_lookup_tag 0xa221ed01 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0xa35e4255 +vmlinux path_release 0x5c1b8fde +vmlinux path_walk 0xffba592d +vmlinux pci_add_new_bus 0x243da5e7 +vmlinux pci_assign_resource 0xdb80287c +vmlinux pci_block_user_cfg_access 0x2da9e7e7 +vmlinux pci_bus_add_device 0x1b40ec48 +vmlinux pci_bus_add_devices 0x8d6bcd7d +vmlinux pci_bus_alloc_resource 0xf8e62b06 +vmlinux pci_bus_assign_resources 0xc37a7195 +vmlinux pci_bus_find_capability 0x105b37e0 +vmlinux pci_bus_max_busnr 0xac0a599d +vmlinux pci_bus_read_config_byte 0x933a0d9d +vmlinux pci_bus_read_config_dword 0x01be386e +vmlinux pci_bus_read_config_word 0x0b5351be +vmlinux pci_bus_size_bridges 0x0e2ce1e1 +vmlinux pci_bus_type 0x2d5c4c7e +vmlinux pci_bus_write_config_byte 0xecad5e14 +vmlinux pci_bus_write_config_dword 0xaa7cde79 +vmlinux pci_bus_write_config_word 0x667b917e +vmlinux pci_choose_state 0xfb7b662a +vmlinux pci_clear_mwi 0x40c73e8d +vmlinux pci_create_bus 0x8cc55c1c +vmlinux pci_dev_driver 0x2d7eb7c0 +vmlinux pci_dev_get 0x7bd48c55 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0xa2274f9f +vmlinux pci_disable_device 0x8265eedc +vmlinux pci_disable_msi 0x63266345 +vmlinux pci_disable_msix 0x2a40acb3 +vmlinux pci_do_scan_bus 0xe7135c23 +vmlinux pci_enable_bridges 0xcbc5671f +vmlinux pci_enable_device 0x75c9b45f +vmlinux pci_enable_device_bars 0x0cf6f657 +vmlinux pci_enable_msi 0xff671da0 +vmlinux pci_enable_msix 0xe6dead6f +vmlinux pci_enable_wake 0xf7ca927c +vmlinux pci_find_bus 0xb9f526c2 +vmlinux pci_find_capability 0x0d8c0719 +vmlinux pci_find_device 0xe6da24a6 +vmlinux pci_find_device_reverse 0x2a978a7e +vmlinux pci_find_next_bus 0x96f9a396 +vmlinux pci_find_next_capability 0x9176b213 +vmlinux pci_find_parent_resource 0xd7dd6d86 +vmlinux pci_find_slot 0x65474091 +vmlinux pci_fixup_device 0x57801f35 +vmlinux pci_get_class 0xee6c5746 +vmlinux pci_get_device 0x25edbe06 +vmlinux pci_get_slot 0xe5207621 +vmlinux pci_get_subsys 0xc5612fba +vmlinux pci_intx 0x4b08025e +vmlinux pci_iomap 0x1018fe54 +vmlinux pci_iounmap 0xd6835f7f +vmlinux pci_map_rom 0x5a88804e +vmlinux pci_map_rom_copy 0x2a94546e +vmlinux pci_match_device 0x91be2785 +vmlinux pci_match_id 0xc810822c +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_osc_control_set 0xbd163c66 +vmlinux pci_osc_support_set 0xcaadcf83 +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0xa6b2a0fb +vmlinux pci_proc_attach_device 0x37d39bb7 +vmlinux pci_proc_detach_bus 0xc5dc4a87 +vmlinux pci_release_region 0x85d8a183 +vmlinux pci_release_regions 0xf0d808fd +vmlinux pci_remove_behind_bridge 0x76eb41d9 +vmlinux pci_remove_bus 0xbd762dc1 +vmlinux pci_remove_bus_device 0xb793a328 +vmlinux pci_remove_device_safe 0x49b9ea58 +vmlinux pci_remove_rom 0x8cf0bb34 +vmlinux pci_request_region 0x765e17cc +vmlinux pci_request_regions 0x4007c5d0 +vmlinux pci_restore_bars 0x09cab306 +vmlinux pci_restore_state 0xf688fd84 +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0x37b3fc57 +vmlinux pci_scan_bridge 0x58942916 +vmlinux pci_scan_bus_parented 0xb58d9f5f +vmlinux pci_scan_child_bus 0xc75f97cb +vmlinux pci_scan_single_device 0x7a5f4a3b +vmlinux pci_scan_slot 0x704fc20c +vmlinux pci_set_consistent_dma_mask 0x156ba543 +vmlinux pci_set_dma_mask 0x8e457a9d +vmlinux pci_set_master 0xfe21fd0f +vmlinux pci_set_mwi 0x4d61dca9 +vmlinux pci_set_power_state 0xea8e3a72 +vmlinux pci_setup_cardbus 0x5ee181b6 +vmlinux pci_unblock_user_cfg_access 0xf5879d4d +vmlinux pci_unmap_rom 0x271b8ed4 +vmlinux pci_unregister_driver 0xd97e6ffe +vmlinux pci_walk_bus 0x21563e13 +vmlinux pcibios_bus_to_resource 0x1bcb18d4 +vmlinux pcibios_resource_to_bus 0xc5a67589 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pciserial_init_ports 0x12b0bcb0 +vmlinux pciserial_remove_ports 0x007da916 +vmlinux pciserial_resume_ports 0xe6ff5c4f +vmlinux pciserial_suspend_ports 0xcff1b20d +vmlinux per_cpu____sn_cnodeid_to_nasid 0x8e4c910b +vmlinux per_cpu____sn_hub_info 0x538fd0d0 +vmlinux per_cpu____sn_nodepda 0x00000000 +vmlinux per_cpu__cpu_info 0xbe06c773 +vmlinux per_cpu__kstat 0x97ca28ec +vmlinux per_cpu__local_per_cpu_offset 0xe3d3394f +vmlinux per_cpu__pfm_syst_info 0xa2d17b9f +vmlinux per_cpu__softnet_data 0xa8f8cf3b +vmlinux percpu_counter_mod 0x49ff89cb +vmlinux permission 0x191b7534 +vmlinux pfifo_qdisc_ops 0x7b0e58a3 +vmlinux pfm_install_alt_pmu_interrupt 0x4a419738 +vmlinux pfm_mod_read_pmds 0xae61854e +vmlinux pfm_mod_write_dbrs 0xa38c7d89 +vmlinux pfm_mod_write_ibrs 0x7bf0a619 +vmlinux pfm_mod_write_pmcs 0x26d3396d +vmlinux pfm_register_buffer_fmt 0x7588dcf5 +vmlinux pfm_remove_alt_pmu_interrupt 0x6fba9ec7 +vmlinux pfm_sysctl 0x9ebc1b3a +vmlinux pfm_unregister_buffer_fmt 0x2d23d64f +vmlinux physical_node_map 0x20301636 +vmlinux platform_add_devices 0x4b97d914 +vmlinux platform_bus 0x5e96c5b0 +vmlinux platform_bus_type 0x54c52bd8 +vmlinux platform_device_add 0x348ffa89 +vmlinux platform_device_add_data 0xa561de1c +vmlinux platform_device_add_resources 0x19707d57 +vmlinux platform_device_alloc 0xf640d6a4 +vmlinux platform_device_put 0xe201e88c +vmlinux platform_device_register 0x358faa76 +vmlinux platform_device_register_simple 0xb69f71a5 +vmlinux platform_device_unregister 0x5c2a1de1 +vmlinux platform_driver_register 0xade4e454 +vmlinux platform_driver_unregister 0xd2981407 +vmlinux platform_get_irq 0x48c77f46 +vmlinux platform_get_irq_byname 0x992825ab +vmlinux platform_get_resource 0x5563749c +vmlinux platform_get_resource_byname 0xa95f4884 +vmlinux pm_active 0xebd387f6 +vmlinux pm_idle 0xf890fe7f +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pneigh_enqueue 0x940ee4ed +vmlinux pneigh_lookup 0x5c27b914 +vmlinux pnp_activate_dev 0x3578bc03 +vmlinux pnp_device_attach 0xfd25baf9 +vmlinux pnp_device_detach 0x29a62ed2 +vmlinux pnp_disable_dev 0x0b7bb736 +vmlinux pnp_init_resource_table 0x16084899 +vmlinux pnp_is_active 0x169fee5f +vmlinux pnp_manual_config_dev 0x0827f0dc +vmlinux pnp_register_card_driver 0xc5ab91b9 +vmlinux pnp_register_driver 0x0842c3f1 +vmlinux pnp_release_card_device 0x4ecca26e +vmlinux pnp_request_card_device 0x5c636822 +vmlinux pnp_resource_change 0xf577ec2b +vmlinux pnp_unregister_card_driver 0xca0d96b1 +vmlinux pnp_unregister_driver 0xae1c5bfd +vmlinux poll_freewait 0x15010747 +vmlinux poll_initwait 0x0a79219c +vmlinux posix_acl_alloc 0xcbe9d892 +vmlinux posix_acl_chmod_masq 0xf8a0a1ff +vmlinux posix_acl_clone 0x40f5b6d6 +vmlinux posix_acl_create_masq 0x1e4ebfe9 +vmlinux posix_acl_equiv_mode 0x9bb11d25 +vmlinux posix_acl_from_mode 0x63b6b18a +vmlinux posix_acl_from_xattr 0x9f3bf87b +vmlinux posix_acl_permission 0x4ee38018 +vmlinux posix_acl_to_xattr 0x8791cd7d +vmlinux posix_acl_valid 0x62fb7285 +vmlinux posix_block_lock 0xb1a05f27 +vmlinux posix_lock_file 0x0169a99d +vmlinux posix_lock_file_wait 0xf139bd6c +vmlinux posix_locks_deadlock 0x69f1258d +vmlinux posix_test_lock 0xa679de07 +vmlinux posix_timer_event 0x42b07187 +vmlinux posix_unblock_lock 0xa8cc09af +vmlinux pre_task_out_intr 0xa16d7660 +vmlinux prepare_binprm 0x81cf2d6d +vmlinux prepare_to_wait 0x124c9939 +vmlinux prepare_to_wait_exclusive 0xc86fa40c +vmlinux printk 0x827d5807 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0xc64e0f71 +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0xcf0711bc +vmlinux proc_dointvec 0x8083cf90 +vmlinux proc_dointvec_jiffies 0x3c9e08c4 +vmlinux proc_dointvec_minmax 0x250a5734 +vmlinux proc_dointvec_ms_jiffies 0x8838e60a +vmlinux proc_dointvec_userhz_jiffies 0x4801f98f +vmlinux proc_dostring 0x48a04790 +vmlinux proc_doulongvec_minmax 0x7b85c4c3 +vmlinux proc_doulongvec_ms_jiffies_minmax 0x9f96543d +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0xb664cdc2 +vmlinux proc_net 0xd6b69bb3 +vmlinux proc_net_netfilter 0x5f7e0c23 +vmlinux proc_net_stat 0x74c62caa +vmlinux proc_root 0x6e3e7dde +vmlinux proc_root_driver 0x06e739bb +vmlinux proc_root_fs 0xc9445544 +vmlinux proc_symlink 0x067e3538 +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux proto_register 0xff0fba54 +vmlinux proto_unregister 0x6874e9ac +vmlinux ps2_cmd_aborted 0x941dac5f +vmlinux ps2_command 0x65e65304 +vmlinux ps2_drain 0x47ef2d61 +vmlinux ps2_handle_ack 0x646fbbf0 +vmlinux ps2_handle_response 0x8d873810 +vmlinux ps2_init 0xe38beed7 +vmlinux ps2_schedule_command 0x0da4443f +vmlinux ps2_sendbyte 0x6e4a5964 +vmlinux pskb_copy 0xae660b5f +vmlinux pskb_expand_head 0xa791614f +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0xb72870bb +vmlinux put_cmsg 0x43ec913a +vmlinux put_device 0xfc2a3eca +vmlinux put_disk 0x01b62838 +vmlinux put_driver 0x28a1f07f +vmlinux put_files_struct 0xef3c63bf +vmlinux put_io_context 0x22bab3e3 +vmlinux put_page 0x1c5704bf +vmlinux put_tty_driver 0x843581ee +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0x18f124cc +vmlinux qdisc_create_dflt 0x9af92d05 +vmlinux qdisc_destroy 0x39a684d0 +vmlinux qdisc_get_rtab 0xbb20ee2e +vmlinux qdisc_lock_tree 0xd70fe51d +vmlinux qdisc_lookup 0xa9603429 +vmlinux qdisc_put_rtab 0xc50fe814 +vmlinux qdisc_reset 0x6175a500 +vmlinux qdisc_restart 0xd9160171 +vmlinux qdisc_unlock_tree 0x649cb6fc +vmlinux queue_delayed_work 0x627ecf1c +vmlinux queue_work 0x12c2c216 +vmlinux radix_tree_delete 0x898049c9 +vmlinux radix_tree_gang_lookup 0x35ef380e +vmlinux radix_tree_gang_lookup_tag 0xed493232 +vmlinux radix_tree_insert 0x72e6283f +vmlinux radix_tree_lookup 0x76e635da +vmlinux radix_tree_lookup_slot 0x41706e2f +vmlinux radix_tree_tag_clear 0x9ee300df +vmlinux radix_tree_tag_set 0xd73b9fb5 +vmlinux radix_tree_tagged 0xb52b2186 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0x227bcb5b +vmlinux read_cache_pages 0x634e7363 +vmlinux read_dev_sector 0xce08df62 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0x5a36af93 +vmlinux redraw_screen 0x4ab61cb3 +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0x8a2ce24d +vmlinux register_acpi_bus_type 0x017dc2d8 +vmlinux register_binfmt 0x857f8817 +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0x4f4db520 +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0xb6ac4d26 +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_die_notifier 0x53986488 +vmlinux register_exec_domain 0xc0348f5e +vmlinux register_filesystem 0x4fff41d1 +vmlinux register_firmware 0xf6f77a91 +vmlinux register_framebuffer 0x06492318 +vmlinux register_gifconf 0x007bdcdd +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0xcaa7ffef +vmlinux register_netdevice 0x39d8bea4 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x80000af1 +vmlinux register_posix_clock 0x7acfbba9 +vmlinux register_qdisc 0x428dcbaa +vmlinux register_quota_format 0x9199fb3c +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0xefe5b2ea +vmlinux register_snap_client 0xe5eaf9dc +vmlinux register_sound_dsp 0x1e7d3a7c +vmlinux register_sound_midi 0xc3fe0492 +vmlinux register_sound_mixer 0xfc49a2cb +vmlinux register_sound_special 0xbb0f80da +vmlinux register_sound_special_device 0x83509019 +vmlinux register_sound_synth 0x5a4f55b9 +vmlinux register_sysctl_table 0xfad2a929 +vmlinux register_sysrq_key 0x47f149e6 +vmlinux register_tcf_proto_ops 0x5e63f661 +vmlinux register_timer_hook 0x1b15acf9 +vmlinux register_wlandev 0xcc1e4a1a +vmlinux registered_fb 0xbed40c49 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x433a4d61 +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0xe71e90e2 +vmlinux remap_pfn_range 0xdb94a17f +vmlinux remote_llseek 0xfef2ce67 +vmlinux remove_arg_zero 0x5f9e1d0e +vmlinux remove_inode_hash 0xf2b09751 +vmlinux remove_proc_entry 0x4065e99b +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0x2ac6180e +vmlinux remove_wait_queue 0x82ca29da +vmlinux reqsk_queue_alloc 0x51bf933a +vmlinux reqsk_queue_destroy 0x6bece46c +vmlinux request_firmware 0xe0e95c6f +vmlinux request_firmware_nowait 0x30fed9ee +vmlinux request_irq 0x512f11b0 +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x83230e05 +vmlinux rtnetlink_links 0x1e9db5aa +vmlinux rtnetlink_put_metrics 0x12604265 +vmlinux rtnl 0x9686af7d +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0xef8a7705 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux rwsem_down_read_failed 0x3b78cd1a +vmlinux rwsem_down_write_failed 0xb4c2afa5 +vmlinux rwsem_downgrade_wake 0x737172bd +vmlinux rwsem_wake 0x673aa1de +vmlinux sal_pcibr_slot_disable 0xf9f4450c +vmlinux sal_pcibr_slot_enable 0x915e60ce +vmlinux sb_min_blocksize 0xba98d385 +vmlinux sb_set_blocksize 0xee7a312a +vmlinux sba_alloc_coherent 0x1eb2b76e +vmlinux sba_dma_mapping_error 0xfd79eb7a +vmlinux sba_dma_supported 0x257d09c3 +vmlinux sba_free_coherent 0x6919a84b +vmlinux sba_map_sg 0x284aef96 +vmlinux sba_map_single 0xbdf96931 +vmlinux sba_unmap_sg 0x1d00584d +vmlinux sba_unmap_single 0xa78a6d05 +vmlinux sched_setscheduler 0xba517c68 +vmlinux schedule 0xa44fffc1 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0xe349f0d1 +vmlinux scm_fp_dup 0xe557bd59 +vmlinux scnprintf 0x7bb4de17 +vmlinux screen_info 0x59b7e373 +vmlinux scsi_add_device 0xf40a3fbd +vmlinux scsi_add_host 0xb6ccfc5f +vmlinux scsi_adjust_queue_depth 0x0ca3d60a +vmlinux scsi_allocate_request 0x2cfe3661 +vmlinux scsi_bios_ptable 0xb4dd5263 +vmlinux scsi_block_requests 0xe0b55dde +vmlinux scsi_block_when_processing_errors 0x68dc2b16 +vmlinux scsi_bus_type 0x9899dda4 +vmlinux scsi_calculate_bounce_limit 0xaea1a95d +vmlinux scsi_cmd_ioctl 0x746e1ef9 +vmlinux scsi_command_normalize_sense 0x65a19aaf +vmlinux scsi_command_size 0x9b05ea5c +vmlinux scsi_device_cancel 0xe45ece85 +vmlinux scsi_device_get 0x41a4bf61 +vmlinux scsi_device_lookup 0x332b3c9a +vmlinux scsi_device_lookup_by_target 0x258b001d +vmlinux scsi_device_put 0xf8e8a4fa +vmlinux scsi_device_quiesce 0xd7357737 +vmlinux scsi_device_resume 0x6a5a20f6 +vmlinux scsi_device_set_state 0x552d517a +vmlinux scsi_device_types 0x6df713c9 +vmlinux scsi_do_req 0x33964798 +vmlinux scsi_execute 0x567ff8fe +vmlinux scsi_execute_req 0x88def1e8 +vmlinux scsi_extd_sense_format 0x11267875 +vmlinux scsi_finish_command 0xe32aa6ab +vmlinux scsi_flush_work 0xf404830c +vmlinux scsi_free_host_dev 0x65fe1aa2 +vmlinux scsi_get_command 0xf78a7a53 +vmlinux scsi_get_host_dev 0x1d051410 +vmlinux scsi_get_sense_info_fld 0xc369234b +vmlinux scsi_host_alloc 0x30ad6fa9 +vmlinux scsi_host_get 0xff164f05 +vmlinux scsi_host_lookup 0x4ff4ca5f +vmlinux scsi_host_put 0xf590a34c +vmlinux scsi_host_set_state 0x6f9dc6e7 +vmlinux scsi_internal_device_block 0xb1235225 +vmlinux scsi_internal_device_unblock 0xb9a1aa69 +vmlinux scsi_io_completion 0xa162b9bb +vmlinux scsi_ioctl 0xdf5dec51 +vmlinux scsi_ioctl_send_command 0x81508838 +vmlinux scsi_is_host_device 0xd212d015 +vmlinux scsi_is_sdev_device 0x66b6f575 +vmlinux scsi_is_target_device 0xf11a8293 +vmlinux scsi_logging_level 0xaf3dd7dc +vmlinux scsi_mode_sense 0x0bd6d178 +vmlinux scsi_nonblockable_ioctl 0x48929ec5 +vmlinux scsi_normalize_sense 0x813cd63f +vmlinux scsi_partsize 0x4afe9a77 +vmlinux scsi_print_command 0x86e74b0b +vmlinux scsi_print_msg 0x67f88938 +vmlinux scsi_print_req_sense 0xd1e93348 +vmlinux scsi_print_sense 0x82c3c86b +vmlinux scsi_print_sense_hdr 0xb83c35a3 +vmlinux scsi_print_status 0x9cfd56c5 +vmlinux scsi_put_command 0x79dd53e8 +vmlinux scsi_queue_work 0x7fef5d84 +vmlinux scsi_register 0xb4c6e57b +vmlinux scsi_register_driver 0xf7901c0d +vmlinux scsi_register_interface 0x034f27a3 +vmlinux scsi_release_request 0x1ad75885 +vmlinux scsi_remove_device 0xd6748504 +vmlinux scsi_remove_host 0x8df3586a +vmlinux scsi_remove_target 0xba606ed1 +vmlinux scsi_report_bus_reset 0x9524bb6b +vmlinux scsi_report_device_reset 0x83033e67 +vmlinux scsi_request_normalize_sense 0xc84ec0d0 +vmlinux scsi_rescan_device 0xd4ffb5d3 +vmlinux scsi_reset_provider 0xafc16e55 +vmlinux scsi_scan_host 0x26b1d9e0 +vmlinux scsi_scan_target 0xa9e71987 +vmlinux scsi_sense_desc_find 0x10d9f885 +vmlinux scsi_sense_key_string 0x96cd2b04 +vmlinux scsi_set_medium_removal 0x64355ba5 +vmlinux scsi_setup_blk_pc_cmnd 0xade418e4 +vmlinux scsi_target_block 0xfd1dd5ce +vmlinux scsi_target_quiesce 0x68c16301 +vmlinux scsi_target_resume 0xb4bab85a +vmlinux scsi_target_unblock 0x5fd71797 +vmlinux scsi_test_unit_ready 0xe9e92a28 +vmlinux scsi_track_queue_full 0x3e00bd3b +vmlinux scsi_unblock_requests 0xf332598d +vmlinux scsi_unregister 0xb318a75c +vmlinux scsicam_bios_param 0x96955b4d +vmlinux search_binary_handler 0xef8fa157 +vmlinux secpath_dup 0x4a511969 +vmlinux secure_dccp_sequence_number 0xd47b06b2 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0xb0412cda +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0x6d2f9511 +vmlinux securityfs_create_dir 0x33e6b90f +vmlinux securityfs_create_file 0x06c6e1e0 +vmlinux securityfs_remove 0xcef049dd +vmlinux send_sig 0xea4d6fe7 +vmlinux send_sig_info 0xfbcd1c1b +vmlinux seq_escape 0x4d23637d +vmlinux seq_lseek 0x32071592 +vmlinux seq_open 0x1db03f75 +vmlinux seq_path 0x0e8eae28 +vmlinux seq_printf 0xd959e84c +vmlinux seq_putc 0x08b22346 +vmlinux seq_puts 0x00334928 +vmlinux seq_read 0x8c09b35e +vmlinux seq_release 0x121ebaf7 +vmlinux seq_release_private 0x2bf3abbb +vmlinux serial8250_register_port 0xb137195b +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0x2b7f477f +vmlinux serio_interrupt 0xea0b9c90 +vmlinux serio_open 0xbb72379c +vmlinux serio_reconnect 0x3909518f +vmlinux serio_rescan 0x2c837612 +vmlinux serio_unregister_child_port 0xc63876f8 +vmlinux serio_unregister_driver 0x78bea881 +vmlinux serio_unregister_port 0xbb2fd761 +vmlinux set_anon_super 0x54a53cf6 +vmlinux set_bh_page 0x3fca272e +vmlinux set_binfmt 0x1c209cf4 +vmlinux set_blocksize 0xe30bf5a6 +vmlinux set_cpus_allowed 0xf00e55da +vmlinux set_current_groups 0x4f18770b +vmlinux set_device_ro 0x9a41eda8 +vmlinux set_disk_ro 0x2fbbe6fd +vmlinux set_page_dirty 0x940c9119 +vmlinux set_page_dirty_lock 0xf2761587 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0xada30a66 +vmlinux setlease 0x709541dc +vmlinux setup_arg_pages 0x4db289fe +vmlinux sget 0x8fef402a +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x2181507f +vmlinux shrink_dcache_sb 0x5ef9616b +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x6a5fa363 +vmlinux simple_attr_close 0x49dc577a +vmlinux simple_attr_open 0x7e23a572 +vmlinux simple_attr_read 0x82fb7448 +vmlinux simple_attr_write 0x25bea675 +vmlinux simple_commit_write 0x8f23ec8a +vmlinux simple_dir_inode_operations 0xd2231cbc +vmlinux simple_dir_operations 0x6f46d9ee +vmlinux simple_empty 0xa238e272 +vmlinux simple_fill_super 0x822a1167 +vmlinux simple_getattr 0x1c13b115 +vmlinux simple_link 0xbb63ac6c +vmlinux simple_lookup 0x5b6eeea4 +vmlinux simple_pin_fs 0x57d459b2 +vmlinux simple_prepare_write 0x94e79531 +vmlinux simple_read_from_buffer 0x5a5e7ea3 +vmlinux simple_readpage 0x78dd7884 +vmlinux simple_release_fs 0x8a6974ec +vmlinux simple_rename 0x8938d2cb +vmlinux simple_rmdir 0xc47aaa71 +vmlinux simple_statfs 0x0bc6cb97 +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0x77856378 +vmlinux simple_transaction_get 0x2cea3c31 +vmlinux simple_transaction_read 0x31074fab +vmlinux simple_transaction_release 0x7a1d6f2f +vmlinux simple_unlink 0x612d7621 +vmlinux single_open 0xf5f7942f +vmlinux single_release 0xe40561a1 +vmlinux sk_alloc 0xcc0c7429 +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0xdc33fc54 +vmlinux sk_common_release 0x3dc1ecc1 +vmlinux sk_free 0x0693a46c +vmlinux sk_reset_timer 0xec57b08c +vmlinux sk_run_filter 0xcf4b8b2e +vmlinux sk_send_sigurg 0x6bdbfcca +vmlinux sk_stop_timer 0x7a4cd523 +vmlinux sk_stream_error 0x04916296 +vmlinux sk_stream_kill_queues 0x21ba3435 +vmlinux sk_stream_mem_schedule 0x316c11d6 +vmlinux sk_stream_rfree 0x731fd0ff +vmlinux sk_stream_wait_close 0x6dbdc7c6 +vmlinux sk_stream_wait_connect 0xc41d8c74 +vmlinux sk_stream_wait_memory 0x8c81e730 +vmlinux sk_stream_write_space 0x40b8430e +vmlinux sk_wait_data 0x0e71470c +vmlinux skb_abort_seq_read 0x43292140 +vmlinux skb_append 0xb51c9c98 +vmlinux skb_append_datato_frags 0x86459b86 +vmlinux skb_checksum 0x14deb38e +vmlinux skb_checksum_help 0x09672f81 +vmlinux skb_clone 0x81ab1ae0 +vmlinux skb_clone_fraglist 0x9ed35e8d +vmlinux skb_copy 0x8caba8d0 +vmlinux skb_copy_and_csum_bits 0xc5e3e23e +vmlinux skb_copy_and_csum_datagram_iovec 0xdd9154f8 +vmlinux skb_copy_and_csum_dev 0x11693d51 +vmlinux skb_copy_bits 0x81995100 +vmlinux skb_copy_datagram_iovec 0xf7913d2a +vmlinux skb_copy_expand 0x55579024 +vmlinux skb_dequeue 0xaa47a27b +vmlinux skb_dequeue_tail 0x5e4eaa7f +vmlinux skb_find_text 0x30cae6ff +vmlinux skb_free_datagram 0xc027ec4a +vmlinux skb_icv_walk 0xc949face +vmlinux skb_insert 0x547a99cc +vmlinux skb_make_writable 0x84d83036 +vmlinux skb_over_panic 0x13c46f97 +vmlinux skb_pad 0x879b997d +vmlinux skb_prepare_seq_read 0xf05edd79 +vmlinux skb_queue_head 0x9a2bb60c +vmlinux skb_queue_purge 0xb68d648d +vmlinux skb_queue_tail 0xb1edbb5c +vmlinux skb_realloc_headroom 0xb4acb410 +vmlinux skb_recv_datagram 0xbd5de74a +vmlinux skb_seq_read 0xbd30993a +vmlinux skb_split 0x2c7739e9 +vmlinux skb_store_bits 0x2ec84973 +vmlinux skb_under_panic 0xcca4cc60 +vmlinux skb_unlink 0x994f6a54 +vmlinux sleep_on 0xf37728a9 +vmlinux sleep_on_timeout 0x80671888 +vmlinux smp_call_function 0x0014bfd1 +vmlinux smp_call_function_single 0xaf7e6801 +vmlinux sn_bus_free_sysdata 0xd93cb8be +vmlinux sn_bus_store_sysdata 0xcf428aac +vmlinux sn_coherency_id 0x171826ab +vmlinux sn_dma_alloc_coherent 0x0d0ff4d1 +vmlinux sn_dma_flush 0x42bd091d +vmlinux sn_dma_free_coherent 0x625a23a9 +vmlinux sn_dma_map_sg 0x10b93266 +vmlinux sn_dma_map_single 0x5c6c6fbb +vmlinux sn_dma_mapping_error 0xacae6d43 +vmlinux sn_dma_set_mask 0xaed3387c +vmlinux sn_dma_supported 0xf30c79bb +vmlinux sn_dma_sync_sg_for_cpu 0x25cbecb4 +vmlinux sn_dma_sync_sg_for_device 0x116af662 +vmlinux sn_dma_sync_single_for_cpu 0x8efc811c +vmlinux sn_dma_sync_single_for_device 0xbaaf1b8b +vmlinux sn_dma_unmap_sg 0x92b7535b +vmlinux sn_dma_unmap_single 0xf90c655c +vmlinux sn_flush_all_caches 0xc29d5343 +vmlinux sn_hwperf_get_nearest_node 0xa1d2934d +vmlinux sn_io_addr 0xdc477230 +vmlinux sn_partition_id 0x8df01146 +vmlinux sn_partition_serial_number 0x9a61ea6d +vmlinux sn_pci_controller_fixup 0xf92e50c8 +vmlinux sn_pci_fixup_slot 0x5b9c7784 +vmlinux sn_pci_unfixup_slot 0x052c5acf +vmlinux sn_prom_feature_available 0xdb22ec6b +vmlinux sn_region_size 0x3b3be38d +vmlinux sn_rtc_cycles_per_second 0x8b966b63 +vmlinux sn_send_IPI_phys 0xac812950 +vmlinux sn_sharing_domain_size 0xcb32ae05 +vmlinux sn_system_serial_number_string 0x102b5b21 +vmlinux sn_system_size 0xd7907b0f +vmlinux snprintf 0xaf25400d +vmlinux sock_alloc_send_skb 0xe4525a44 +vmlinux sock_common_getsockopt 0x4646449e +vmlinux sock_common_recvmsg 0x5acec781 +vmlinux sock_common_setsockopt 0x4b880a29 +vmlinux sock_create 0x8bbdf2de +vmlinux sock_create_kern 0xb00b0161 +vmlinux sock_create_lite 0xe02d9834 +vmlinux sock_enable_timestamp 0x86ac1d93 +vmlinux sock_get_timestamp 0x4ab4fee9 +vmlinux sock_i_ino 0x2ab820fd +vmlinux sock_i_uid 0x7cc0adcb +vmlinux sock_init_data 0x79f9d958 +vmlinux sock_kfree_s 0x1b39b6a5 +vmlinux sock_kmalloc 0x1d02f3b7 +vmlinux sock_map_fd 0x923cfa1e +vmlinux sock_no_accept 0x360ac07a +vmlinux sock_no_bind 0x6a0d4dc1 +vmlinux sock_no_connect 0xe55c7b43 +vmlinux sock_no_getname 0xe6c7ceb2 +vmlinux sock_no_getsockopt 0x41c4c7eb +vmlinux sock_no_ioctl 0xfcbb8297 +vmlinux sock_no_listen 0xc59e8f2f +vmlinux sock_no_mmap 0xc8e05aca +vmlinux sock_no_poll 0x0eca9b16 +vmlinux sock_no_recvmsg 0xde1665cf +vmlinux sock_no_sendmsg 0x6fb48e78 +vmlinux sock_no_sendpage 0x9325fffc +vmlinux sock_no_setsockopt 0xd9f4246a +vmlinux sock_no_shutdown 0x1ce416bb +vmlinux sock_no_socketpair 0xaf791af5 +vmlinux sock_recvmsg 0xbfb1d44e +vmlinux sock_register 0x20eb2820 +vmlinux sock_release 0x80e644c9 +vmlinux sock_rfree 0xcee677e9 +vmlinux sock_sendmsg 0x7b5e98b3 +vmlinux sock_setsockopt 0x141a7729 +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0xe14ca9d6 +vmlinux sock_wfree 0xa3d02145 +vmlinux sock_wmalloc 0x47717318 +vmlinux sockfd_lookup 0x0158d612 +vmlinux sort 0x9ca95a0e +vmlinux sound_class 0xa14d403f +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux starget_for_each_device 0x562a6a7f +vmlinux start_tty 0x696751ba +vmlinux steal_locks 0x15c9b30e +vmlinux stop_tty 0x0a3c6449 +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0xafe82e10 +vmlinux strlcat 0xb11fa1ce +vmlinux strlcpy 0x672144bd +vmlinux strlen 0xdcb5671d +vmlinux strncat 0x234509f3 +vmlinux strnchr 0x7242e96d +vmlinux strncmp 0x85abc85f +vmlinux strncpy 0x7ec9bfbc +vmlinux strnicmp 0x756e6992 +vmlinux strnlen 0xcc07af75 +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0x3fa913da +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0xabec677a +vmlinux submit_bh 0x4d2bb1a0 +vmlinux submit_bio 0x4715b57b +vmlinux subsys_create_file 0x36320ced +vmlinux subsys_remove_file 0x7ddd7d9c +vmlinux subsystem_init 0x05a63009 +vmlinux subsystem_register 0x87e8e3f0 +vmlinux subsystem_unregister 0x12d2dadc +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0xfc2c1a9b +vmlinux swiotlb_alloc_coherent 0x035fa166 +vmlinux swiotlb_dma_mapping_error 0x0da9776d +vmlinux swiotlb_dma_supported 0x438555be +vmlinux swiotlb_free_coherent 0x9f311273 +vmlinux swiotlb_init 0xc2ed2fce +vmlinux swiotlb_map_sg 0xbe60da7b +vmlinux swiotlb_map_single 0xee79751d +vmlinux swiotlb_sync_sg_for_cpu 0x6815ffa9 +vmlinux swiotlb_sync_sg_for_device 0x2950a16a +vmlinux swiotlb_sync_single_for_cpu 0x8e625e82 +vmlinux swiotlb_sync_single_for_device 0x12da6ad6 +vmlinux swiotlb_sync_single_range_for_cpu 0x38f2932d +vmlinux swiotlb_sync_single_range_for_device 0xc275ce82 +vmlinux swiotlb_unmap_sg 0xa23d539e +vmlinux swiotlb_unmap_single 0x1ae59420 +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0xb101cdd2 +vmlinux sync_dirty_buffer 0x1a5af770 +vmlinux sync_inode 0xc693bc27 +vmlinux sync_mapping_buffers 0x359a4206 +vmlinux sync_page_range 0xe11ed886 +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xde76e7bc +vmlinux sys_ioctl 0x1b610907 +vmlinux sys_open 0x701039bd +vmlinux sys_read 0xd4e65327 +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0x46882b0f +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0xc38e9a1d +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0x1f733cfc +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0xc86851fe +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x77699f15 +vmlinux sysdev_class_unregister 0x876d3f84 +vmlinux sysdev_create_file 0x972bed49 +vmlinux sysdev_driver_register 0x1ed9125f +vmlinux sysdev_driver_unregister 0x537b921c +vmlinux sysdev_register 0x239a9e33 +vmlinux sysdev_remove_file 0x63f9405b +vmlinux sysdev_unregister 0x22804929 +vmlinux sysfs_chmod_file 0x48b088a7 +vmlinux sysfs_create_bin_file 0x1b8e2e69 +vmlinux sysfs_create_dir 0x9a481273 +vmlinux sysfs_create_file 0x2f4a48a0 +vmlinux sysfs_create_group 0x67cc7e58 +vmlinux sysfs_create_link 0x06c3fca5 +vmlinux sysfs_remove_bin_file 0xf91366fb +vmlinux sysfs_remove_dir 0x37668632 +vmlinux sysfs_remove_file 0x1e9a5870 +vmlinux sysfs_remove_group 0x14a7bfc4 +vmlinux sysfs_remove_link 0xffbdb81f +vmlinux sysfs_rename_dir 0x13f8c81f +vmlinux sysfs_update_file 0xda3d193b +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0x20e51bb6 +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0xf63545a3 +vmlinux task_nice 0x2330d6ff +vmlinux task_no_data_intr 0xc391ecca +vmlinux tasklet_init 0x69575bcc +vmlinux tasklet_kill 0x74e05d8c +vmlinux tasklist_lock 0x676da348 +vmlinux tc_classify 0x8797ecfc +vmlinux tcf_em_register 0x81c4eeef +vmlinux tcf_em_tree_destroy 0xeffb3a60 +vmlinux tcf_em_tree_dump 0xc4baf081 +vmlinux tcf_em_tree_validate 0x9ff1dddb +vmlinux tcf_em_unregister 0x3ae17e13 +vmlinux tcf_exts_change 0x1737bca1 +vmlinux tcf_exts_destroy 0x854be6d2 +vmlinux tcf_exts_dump 0x200dde79 +vmlinux tcf_exts_dump_stats 0x767f1c1d +vmlinux tcf_exts_validate 0xfad238dd +vmlinux tcf_police 0x1af3f340 +vmlinux tcf_police_destroy 0x2b5092f4 +vmlinux tcf_police_dump 0x0b4ea252 +vmlinux tcf_police_dump_stats 0xcbc1e6d4 +vmlinux tcf_police_hash 0xc81dc21b +vmlinux tcf_police_ht 0x27f40e10 +vmlinux tcf_police_locate 0x24561b32 +vmlinux tcf_police_lookup 0x742b33fb +vmlinux tcf_police_new_index 0x5ed742fd +vmlinux tcp_check_req 0x47d6d52e +vmlinux tcp_child_process 0x45c66911 +vmlinux tcp_close 0x7d74ac8c +vmlinux tcp_connect 0x024af2aa +vmlinux tcp_create_openreq_child 0xb2514e3e +vmlinux tcp_death_row 0xc4eea7c2 +vmlinux tcp_disconnect 0x7c02c489 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x5e792c0a +vmlinux tcp_getsockopt 0xdf30e708 +vmlinux tcp_hashinfo 0x5f45cf24 +vmlinux tcp_init_congestion_ops 0xe546d6c0 +vmlinux tcp_init_xmit_timers 0x93bf3c84 +vmlinux tcp_ioctl 0xcfbb203f +vmlinux tcp_make_synack 0x8361f2c4 +vmlinux tcp_memory_allocated 0x6f4fc248 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0xef4bf493 +vmlinux tcp_parse_options 0x2def0fb6 +vmlinux tcp_poll 0x6664fcfc +vmlinux tcp_proc_register 0x1c65e71a +vmlinux tcp_proc_unregister 0x24fa6545 +vmlinux tcp_prot 0xef0a95b8 +vmlinux tcp_rcv_established 0xfa236260 +vmlinux tcp_rcv_state_process 0x27c10085 +vmlinux tcp_read_sock 0xbf1bcca7 +vmlinux tcp_recvmsg 0xaac3ec2a +vmlinux tcp_register_congestion_control 0x252279be +vmlinux tcp_reno_cong_avoid 0x5c876c18 +vmlinux tcp_reno_min_cwnd 0xfe2d6756 +vmlinux tcp_reno_ssthresh 0x67399245 +vmlinux tcp_sendmsg 0x55bc4f3d +vmlinux tcp_sendpage 0xaaef9d2c +vmlinux tcp_setsockopt 0xe9d8c857 +vmlinux tcp_shutdown 0x1e9d864a +vmlinux tcp_simple_retransmit 0x2af3c3b4 +vmlinux tcp_sockets_allocated 0x3947c486 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0xcd78c124 +vmlinux tcp_timewait_state_process 0xb3f9b6fb +vmlinux tcp_unhash 0xcb5d6a39 +vmlinux tcp_unregister_congestion_control 0x544ecc35 +vmlinux tcp_v4_conn_request 0x41728c22 +vmlinux tcp_v4_connect 0xda8f078d +vmlinux tcp_v4_destroy_sock 0x5fa3b303 +vmlinux tcp_v4_do_rcv 0x11bec484 +vmlinux tcp_v4_remember_stamp 0xf823fcb2 +vmlinux tcp_v4_send_check 0x7a7fc9c9 +vmlinux tcp_v4_syn_recv_sock 0x9e982e20 +vmlinux test_clear_page_dirty 0x9c97f119 +vmlinux test_set_page_writeback 0x7a0dde83 +vmlinux textsearch_destroy 0x4ebff8db +vmlinux textsearch_find_continuous 0x53f857c0 +vmlinux textsearch_prepare 0xed3633b1 +vmlinux textsearch_register 0x2edfa4ae +vmlinux textsearch_unregister 0x7569bd7a +vmlinux thaw_bdev 0xd20b230f +vmlinux timespec_trunc 0xc045ad4e +vmlinux tioca_fastwrite_enable 0x1e94cc43 +vmlinux tioca_gart_found 0xad4cf1ca +vmlinux tioca_list 0x8716021f +vmlinux tiocx_bus_type 0x31323307 +vmlinux tiocx_dma_addr 0xa049e49a +vmlinux tiocx_irq_alloc 0x600cd584 +vmlinux tiocx_irq_free 0xc3ecf245 +vmlinux tiocx_swin_base 0x883a0061 +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0xfad751c3 +vmlinux tr_type_trans 0xa754294c +vmlinux transport_add_device 0xf7e7ba6c +vmlinux transport_class_register 0xbcb12726 +vmlinux transport_class_unregister 0xdda9765d +vmlinux transport_configure_device 0x8eae5b6c +vmlinux transport_destroy_device 0xbc86e9f5 +vmlinux transport_remove_device 0xc71cc8ed +vmlinux transport_setup_device 0x26892e09 +vmlinux truncate_inode_pages 0x372e18fc +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0x7ec9d2dc +vmlinux try_to_release_page 0x6e9f73bd +vmlinux tty_check_change 0x08644eca +vmlinux tty_flip_buffer_push 0x4029bc96 +vmlinux tty_get_baud_rate 0x436220a6 +vmlinux tty_hangup 0x894c4f48 +vmlinux tty_hung_up_p 0xe1b399bf +vmlinux tty_ldisc_deref 0x0940343b +vmlinux tty_ldisc_flush 0xe8a917b5 +vmlinux tty_ldisc_get 0x3128204a +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x22951b4d +vmlinux tty_ldisc_ref_wait 0x86791206 +vmlinux tty_name 0x9d65671d +vmlinux tty_register_device 0x3b6bac6d +vmlinux tty_register_driver 0x1997e665 +vmlinux tty_register_ldisc 0xc9369a61 +vmlinux tty_set_operations 0xeb639c67 +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0xe5a50907 +vmlinux tty_unregister_driver 0xeee328c9 +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0xd9297611 +vmlinux tty_wait_until_sent 0x7ac9b31e +vmlinux tty_wakeup 0x1bae0ab2 +vmlinux uart_add_one_port 0xb0b97888 +vmlinux uart_get_baud_rate 0x7c35bf62 +vmlinux uart_get_divisor 0x9b219b90 +vmlinux uart_match_port 0x15eeb2ea +vmlinux uart_register_driver 0xc89afb0f +vmlinux uart_remove_one_port 0x8398864c +vmlinux uart_resume_port 0x5d205e58 +vmlinux uart_suspend_port 0xf841ea58 +vmlinux uart_unregister_driver 0x87361829 +vmlinux uart_update_timeout 0x720fbc58 +vmlinux uart_write_wakeup 0xe2d8bdbf +vmlinux udelay 0xa39b4cf2 +vmlinux udp_disconnect 0x5e7de615 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0x1a2def9b +vmlinux udp_ioctl 0xeae998da +vmlinux udp_poll 0x3eb164c2 +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x5dd541d3 +vmlinux udp_proc_unregister 0xcc13541f +vmlinux udp_prot 0xf2b488e2 +vmlinux udp_sendmsg 0xbe6e7afb +vmlinux uhci_check_and_reset_hc 0x14b588db +vmlinux uhci_reset_hc 0x882c9f81 +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux uncached_alloc_page 0x4bb9a7ee +vmlinux uncached_free_page 0x5f6b0c84 +vmlinux unload_nls 0xe3430fef +vmlinux unlock_buffer 0x2c037ac1 +vmlinux unlock_kernel 0xb1f975aa +vmlinux unlock_new_inode 0xa0bb7557 +vmlinux unlock_page 0x0452eb42 +vmlinux unlock_rename 0xa12b5271 +vmlinux unmap_mapping_range 0x09c3dde6 +vmlinux unmap_underlying_metadata 0x1a80e5b3 +vmlinux unregister_8022_client 0x383ca957 +vmlinux unregister_acpi_bus_type 0xbd293557 +vmlinux unregister_binfmt 0x832bdc84 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0x8488c868 +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_die_notifier 0x01a4ea6d +vmlinux unregister_exec_domain 0x8c94e0f8 +vmlinux unregister_filesystem 0x5c04bee2 +vmlinux unregister_framebuffer 0xe784cd22 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0x7205addf +vmlinux unregister_netdevice 0x8d0dbc0f +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0x1ed7b010 +vmlinux unregister_qdisc 0x453ef5d2 +vmlinux unregister_quota_format 0xd585dd55 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0x62b2cb9f +vmlinux unregister_snap_client 0x565d8016 +vmlinux unregister_sound_dsp 0xcd083b10 +vmlinux unregister_sound_midi 0xfdab6de3 +vmlinux unregister_sound_mixer 0x7afc9d8a +vmlinux unregister_sound_special 0x99c95fa5 +vmlinux unregister_sound_synth 0xdf03108a +vmlinux unregister_sysctl_table 0x82597398 +vmlinux unregister_sysrq_key 0x8d82765e +vmlinux unregister_tcf_proto_ops 0xa9378611 +vmlinux unregister_timer_hook 0xe3e1f28b +vmlinux unregister_wlandev 0x5a65c9b6 +vmlinux unshare_files 0x04a20170 +vmlinux unw_access_ar 0x5285ca5f +vmlinux unw_access_br 0xf4ecdc1d +vmlinux unw_access_fr 0xfa3356d8 +vmlinux unw_access_gr 0x14b4a6e8 +vmlinux unw_access_pr 0x285538aa +vmlinux unw_init_frame_info 0xc9dea42e +vmlinux unw_init_from_blocked_task 0x61c5cee9 +vmlinux unw_init_running 0x7540d5ce +vmlinux unw_unwind 0x5730d18e +vmlinux unw_unwind_to_user 0x361dcfcd +vmlinux update_atime 0xbb15a84d +vmlinux update_region 0x8d9997db +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0x9e20cbce +vmlinux vc_cons 0xbabe9103 +vmlinux vc_resize 0x3af748b6 +vmlinux vesa_modes 0xdffc80fc +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0xb84bcb72 +vmlinux vfs_follow_link 0xbd04ce13 +vmlinux vfs_fstat 0x49afabd6 +vmlinux vfs_get_dqblk 0xeb4fb10e +vmlinux vfs_get_dqinfo 0xc630f24a +vmlinux vfs_getattr 0x617f3ff5 +vmlinux vfs_link 0xf26a8d20 +vmlinux vfs_llseek 0x9baa7415 +vmlinux vfs_lstat 0xfa7b025a +vmlinux vfs_mkdir 0xfbac20a2 +vmlinux vfs_mknod 0x9a18e8b4 +vmlinux vfs_permission 0x50290bca +vmlinux vfs_quota_off 0x271e016a +vmlinux vfs_quota_on 0xbe740583 +vmlinux vfs_quota_on_mount 0xf5bf0b02 +vmlinux vfs_quota_sync 0x31774052 +vmlinux vfs_read 0x92ac5699 +vmlinux vfs_readdir 0x3cefe60c +vmlinux vfs_readlink 0x64284a2d +vmlinux vfs_readv 0xcb0a17bd +vmlinux vfs_rename 0x6c5c42e0 +vmlinux vfs_rmdir 0x20d8757c +vmlinux vfs_set_dqblk 0x504cdbab +vmlinux vfs_set_dqinfo 0x3de41b29 +vmlinux vfs_stat 0xa90a7605 +vmlinux vfs_statfs 0xb10467c4 +vmlinux vfs_symlink 0x71584401 +vmlinux vfs_unlink 0x9ac63bc5 +vmlinux vfs_write 0x2d87cff0 +vmlinux vfs_writev 0xf1abc303 +vmlinux vga_console_membase 0x455fbbb2 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x1cbd209c +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_end 0x2a5465cf +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0xe8be7572 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0xa8981110 +vmlinux vmem_map 0xc5bf1db5 +vmlinux vmtruncate 0x32d45acc +vmlinux vprintk 0xdef29882 +vmlinux vscnprintf 0xf3522c9c +vmlinux vsnprintf 0x0e57f111 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0x4a2e39f2 +vmlinux wait_for_completion_interruptible 0x126be65c +vmlinux wait_for_completion_interruptible_timeout 0xae13f703 +vmlinux wait_for_completion_timeout 0x4696be0a +vmlinux wait_on_page_bit 0x603d1a7b +vmlinux wait_on_sync_kiocb 0x65c8548c +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0xc71bc751 +vmlinux wireless_send_event 0xe57ecc79 +vmlinux wireless_spy_update 0x0b0b89dc +vmlinux wlan_setup 0x978d5220 +vmlinux wlan_unsetup 0x84e0b5c0 +vmlinux write_inode_now 0x2b1716db +vmlinux write_one_page 0xaa42c82f +vmlinux xfrm4_rcv 0x2456f9cd +vmlinux xfrm_aalg_get_byid 0xa0fc38f1 +vmlinux xfrm_aalg_get_byidx 0x8e69ed47 +vmlinux xfrm_aalg_get_byname 0x4af7a738 +vmlinux xfrm_alloc_spi 0x83527c8e +vmlinux xfrm_bundle_ok 0x4e333f8b +vmlinux xfrm_calg_get_byid 0x8eacf171 +vmlinux xfrm_calg_get_byname 0x271286de +vmlinux xfrm_cfg_sem 0x6c4ebaf1 +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0xd3b2b228 +vmlinux xfrm_dst_lookup 0xbd57bad1 +vmlinux xfrm_ealg_get_byid 0xfc5dabf1 +vmlinux xfrm_ealg_get_byidx 0xffe3f76d +vmlinux xfrm_ealg_get_byname 0x913de4f4 +vmlinux xfrm_find_acq 0x501e1c26 +vmlinux xfrm_find_acq_byseq 0x5ca1b7b7 +vmlinux xfrm_get_acqseq 0xb01bebf9 +vmlinux xfrm_init_pmtu 0x3e92a3fa +vmlinux xfrm_init_state 0xfd3af97a +vmlinux xfrm_lookup 0x406f641f +vmlinux xfrm_parse_spi 0x910c763c +vmlinux xfrm_policy_alloc 0xd755c71e +vmlinux xfrm_policy_byid 0x3f1f7220 +vmlinux xfrm_policy_bysel 0x21700cef +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0xc0b7454f +vmlinux xfrm_policy_list 0x69c32fa0 +vmlinux xfrm_policy_register_afinfo 0xb99befc9 +vmlinux xfrm_policy_unregister_afinfo 0xbfbc5115 +vmlinux xfrm_policy_walk 0x3b6823ea +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0xb3ce0501 +vmlinux xfrm_register_type 0x23454adf +vmlinux xfrm_replay_advance 0xe167b98c +vmlinux xfrm_replay_check 0x25b4353b +vmlinux xfrm_state_add 0x63cbc625 +vmlinux xfrm_state_alloc 0x85206d93 +vmlinux xfrm_state_check 0x6b76c8f5 +vmlinux xfrm_state_check_expire 0x3f719b2f +vmlinux xfrm_state_delete 0x8a28f700 +vmlinux xfrm_state_delete_tunnel 0x652d562b +vmlinux xfrm_state_flush 0x4d093dfa +vmlinux xfrm_state_insert 0x0f19f7ac +vmlinux xfrm_state_lookup 0x71f1fe9d +vmlinux xfrm_state_mtu 0x6652991a +vmlinux xfrm_state_register_afinfo 0x1e8d8bf6 +vmlinux xfrm_state_unregister_afinfo 0xc55343ec +vmlinux xfrm_state_update 0xff2e3662 +vmlinux xfrm_state_walk 0xf5751389 +vmlinux xfrm_unregister_km 0x24407d36 +vmlinux xfrm_unregister_type 0x67bdee58 +vmlinux xfrm_user_policy 0x2529ea24 +vmlinux xor_ia64_2 0xeeb8a24c +vmlinux xor_ia64_3 0x2f367d8c +vmlinux xor_ia64_4 0x060d680f +vmlinux xor_ia64_5 0xc783b7cf +vmlinux xrlim_allow 0xc0be951f +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xd58b0eb8 +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x432f337e +vmlinux zero_page_memmap_ptr 0x433c7443 +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0x3d5edf82 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/ia64/itanium-smp +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/ia64/itanium-smp @@ -0,0 +1,5339 @@ +arch/ia64/sn/kernel/xp xp_nofault_PIOR 0x7c3462de +arch/ia64/sn/kernel/xp xp_nofault_PIOR_target 0xa2083314 +arch/ia64/sn/kernel/xp xpc_clear_interface 0x39046c7a +arch/ia64/sn/kernel/xp xpc_connect 0xc091f7cd +arch/ia64/sn/kernel/xp xpc_disconnect 0x345c9217 +arch/ia64/sn/kernel/xp xpc_interface 0xd68368ee +arch/ia64/sn/kernel/xp xpc_registrations 0x99a7a2e2 +arch/ia64/sn/kernel/xp xpc_set_interface 0x7c6b194b +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0x1ab55ce2 +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0x0f506c85 +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0x8fd87408 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xfdd59660 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/acpi/processor acpi_processor_notify_smm 0xa42832a9 +drivers/acpi/processor acpi_processor_register_performance 0xc18341bc +drivers/acpi/processor acpi_processor_set_thermal_limit 0xe8a3605f +drivers/acpi/processor acpi_processor_unregister_performance 0xc7c5a4ed +drivers/block/loop loop_register_transfer 0x504f98ec +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0x397acbeb +drivers/block/paride/paride pi_disconnect 0xfe974d46 +drivers/block/paride/paride pi_do_claimed 0xba166f48 +drivers/block/paride/paride pi_init 0x5866ecc6 +drivers/block/paride/paride pi_read_block 0x4caf1c77 +drivers/block/paride/paride pi_read_regr 0x5ec518b1 +drivers/block/paride/paride pi_register 0x25afb673 +drivers/block/paride/paride pi_release 0x3cbdca94 +drivers/block/paride/paride pi_schedule_claimed 0xd5c415c6 +drivers/block/paride/paride pi_unregister 0x12c64aef +drivers/block/paride/paride pi_write_block 0xc692dd5d +drivers/block/paride/paride pi_write_regr 0xbf9ad142 +drivers/cdrom/cdrom cdrom_get_last_written 0xa7e87ac7 +drivers/cdrom/cdrom cdrom_get_media_event 0x33c93964 +drivers/cdrom/cdrom cdrom_ioctl 0xfadb8326 +drivers/cdrom/cdrom cdrom_media_changed 0xd72cd0a3 +drivers/cdrom/cdrom cdrom_mode_select 0xed950d86 +drivers/cdrom/cdrom cdrom_mode_sense 0x910af159 +drivers/cdrom/cdrom cdrom_number_of_slots 0xfbffd1f5 +drivers/cdrom/cdrom cdrom_open 0xf66b7346 +drivers/cdrom/cdrom cdrom_release 0x1fbfaeef +drivers/cdrom/cdrom init_cdrom_command 0x4f476e96 +drivers/cdrom/cdrom register_cdrom 0xf77291ce +drivers/cdrom/cdrom unregister_cdrom 0x5d79ee78 +drivers/char/agp/agpgart agp3_generic_cleanup 0xc2424641 +drivers/char/agp/agpgart agp3_generic_configure 0x4b085dbf +drivers/char/agp/agpgart agp3_generic_fetch_size 0xde9b17ed +drivers/char/agp/agpgart agp3_generic_sizes 0xb48f27c2 +drivers/char/agp/agpgart agp3_generic_tlbflush 0xe83afde2 +drivers/char/agp/agpgart agp_add_bridge 0x076f8bf1 +drivers/char/agp/agpgart agp_alloc_bridge 0x9f626c11 +drivers/char/agp/agpgart agp_allocate_memory 0x7aa60bd7 +drivers/char/agp/agpgart agp_backend_acquire 0xc38b1b43 +drivers/char/agp/agpgart agp_backend_release 0xbf59817f +drivers/char/agp/agpgart agp_bind_memory 0xa429dbb0 +drivers/char/agp/agpgart agp_bridge 0xc341702c +drivers/char/agp/agpgart agp_bridges 0x673f815e +drivers/char/agp/agpgart agp_collect_device_status 0xc565546b +drivers/char/agp/agpgart agp_copy_info 0x90bf6486 +drivers/char/agp/agpgart agp_create_memory 0x06590cdf +drivers/char/agp/agpgart agp_device_command 0xa57d8d70 +drivers/char/agp/agpgart agp_enable 0x48658dd3 +drivers/char/agp/agpgart agp_find_bridge 0x00c5b34d +drivers/char/agp/agpgart agp_free_key 0xd0fef3b2 +drivers/char/agp/agpgart agp_free_memory 0xebedfc8b +drivers/char/agp/agpgart agp_generic_alloc_by_type 0x08fdbf60 +drivers/char/agp/agpgart agp_generic_alloc_page 0xde3088db +drivers/char/agp/agpgart agp_generic_create_gatt_table 0x85c38c66 +drivers/char/agp/agpgart agp_generic_destroy_page 0xbba27749 +drivers/char/agp/agpgart agp_generic_enable 0x49658e6a +drivers/char/agp/agpgart agp_generic_free_by_type 0x9472c069 +drivers/char/agp/agpgart agp_generic_free_gatt_table 0x25ac6d2a +drivers/char/agp/agpgart agp_generic_insert_memory 0xb83fcaf4 +drivers/char/agp/agpgart agp_generic_mask_memory 0x6a79836c +drivers/char/agp/agpgart agp_generic_remove_memory 0x1040d185 +drivers/char/agp/agpgart agp_memory_reserved 0xe089cfcc +drivers/char/agp/agpgart agp_num_entries 0xd6feefa5 +drivers/char/agp/agpgart agp_off 0x7538b132 +drivers/char/agp/agpgart agp_put_bridge 0x229b70ba +drivers/char/agp/agpgart agp_remove_bridge 0xa6b436fe +drivers/char/agp/agpgart agp_try_unsupported_boot 0xc5d9c46c +drivers/char/agp/agpgart agp_unbind_memory 0xe1a185ca +drivers/char/agp/agpgart get_agp_version 0xd1bcdccf +drivers/char/agp/agpgart global_cache_flush 0xa4d4f0e6 +drivers/char/drm/drm drm_addbufs_agp 0x17a7ceb9 +drivers/char/drm/drm drm_addbufs_fb 0x41b64e2c +drivers/char/drm/drm drm_addbufs_pci 0x08d7af9a +drivers/char/drm/drm drm_addmap 0x26835c95 +drivers/char/drm/drm drm_agp_acquire 0xfd4a495e +drivers/char/drm/drm drm_agp_alloc 0x9a6c6198 +drivers/char/drm/drm drm_agp_bind 0x5eb22a7f +drivers/char/drm/drm drm_agp_bind_memory 0xa9f33241 +drivers/char/drm/drm drm_agp_enable 0x3c9b854f +drivers/char/drm/drm drm_agp_free 0x9cbfdf19 +drivers/char/drm/drm drm_agp_info 0x78a6cb6a +drivers/char/drm/drm drm_agp_release 0xb7986f38 +drivers/char/drm/drm drm_agp_unbind 0x19171e89 +drivers/char/drm/drm drm_ati_pcigart_cleanup 0xe5c7a630 +drivers/char/drm/drm drm_ati_pcigart_init 0xa4f2b3a7 +drivers/char/drm/drm drm_compat_ioctl 0xe6196503 +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0x8e4a9f0f +drivers/char/drm/drm drm_core_reclaim_buffers 0x5abe7d34 +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0x1d0b4498 +drivers/char/drm/drm drm_fasync 0x0c8acbcd +drivers/char/drm/drm drm_get_dev 0xdd722737 +drivers/char/drm/drm drm_get_resource_len 0x7949a618 +drivers/char/drm/drm drm_get_resource_start 0xdb141279 +drivers/char/drm/drm drm_init 0x679d2d5e +drivers/char/drm/drm drm_ioctl 0x36a08874 +drivers/char/drm/drm drm_irq_uninstall 0x51b11aea +drivers/char/drm/drm drm_mmap 0x3c3e6303 +drivers/char/drm/drm drm_open 0x42a8562d +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0x4268f78a +drivers/char/drm/drm drm_pci_free 0x112cbb1f +drivers/char/drm/drm drm_poll 0x37f1efc1 +drivers/char/drm/drm drm_release 0x17d8d9f1 +drivers/char/drm/drm drm_rmmap 0xf8402b54 +drivers/char/drm/drm drm_rmmap_locked 0x2178a098 +drivers/char/drm/drm drm_vbl_send_signals 0x9d0b9fa3 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0x77112a60 +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0x79c24e43 +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0xb8da572d +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0x76311584 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0x9a79ae64 +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0xdc57b693 +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0xce2d55a9 +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0x3a031e87 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0x7b57fbc7 +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x4ee2140d +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0x80c82134 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0x5717db7e +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0x9439b98c +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0x4ee2e1b4 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0xbafe1794 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0xe7abc574 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0x98855b77 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0xd1174b0e +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0xf55a006d +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0x4b1aed10 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0xb7ee76bb +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0x212dd673 +drivers/char/tpm/tpm tpm_open 0x954e4937 +drivers/char/tpm/tpm tpm_pm_resume 0x807cffab +drivers/char/tpm/tpm tpm_pm_suspend 0x60d96980 +drivers/char/tpm/tpm tpm_read 0xb91301b4 +drivers/char/tpm/tpm tpm_register_hardware 0xbc73fc7d +drivers/char/tpm/tpm tpm_release 0x06adf1fd +drivers/char/tpm/tpm tpm_remove_hardware 0xc919867e +drivers/char/tpm/tpm tpm_show_caps 0x771b2031 +drivers/char/tpm/tpm tpm_show_pcrs 0x97e98fab +drivers/char/tpm/tpm tpm_show_pubek 0xc21ca73c +drivers/char/tpm/tpm tpm_store_cancel 0x2769874f +drivers/char/tpm/tpm tpm_write 0x400d54d1 +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0x969b8068 +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0x57dfd2eb +drivers/cpufreq/freq_table cpufreq_freq_attr_scaling_available_freqs 0x5c352f30 +drivers/cpufreq/freq_table cpufreq_frequency_get_table 0x2f47d8c7 +drivers/cpufreq/freq_table cpufreq_frequency_table_cpuinfo 0x6ae534e8 +drivers/cpufreq/freq_table cpufreq_frequency_table_get_attr 0x706b3a33 +drivers/cpufreq/freq_table cpufreq_frequency_table_put_attr 0x7ae1ae8e +drivers/cpufreq/freq_table cpufreq_frequency_table_target 0x750838ce +drivers/cpufreq/freq_table cpufreq_frequency_table_verify 0xfa4f3a67 +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-bit i2c_bit_add_bus 0xb51bb3ca +drivers/i2c/algos/i2c-algo-bit i2c_bit_del_bus 0xeb065f7e +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0xb328e683 +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0xed350a37 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0x69855d11 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0x3798b1a5 +drivers/i2c/busses/i2c-amd756 amd756_smbus 0x0fa508a2 +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0xb47cdfc4 +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0x9d694436 +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/i2c/i2c-core i2c_adapter_class 0x416f0951 +drivers/i2c/i2c-core i2c_adapter_dev_release 0x00cf065b +drivers/i2c/i2c-core i2c_adapter_driver 0x46fa7e63 +drivers/i2c/i2c-core i2c_add_adapter 0x359f8c2e +drivers/i2c/i2c-core i2c_add_driver 0xfb476872 +drivers/i2c/i2c-core i2c_attach_client 0x9ac25fe9 +drivers/i2c/i2c-core i2c_bus_type 0x4941b2f6 +drivers/i2c/i2c-core i2c_check_addr 0x804f63ee +drivers/i2c/i2c-core i2c_clients_command 0x9f019b56 +drivers/i2c/i2c-core i2c_control 0x5b7fd464 +drivers/i2c/i2c-core i2c_del_adapter 0x30b99847 +drivers/i2c/i2c-core i2c_del_driver 0x610d0342 +drivers/i2c/i2c-core i2c_detach_client 0x47822d6e +drivers/i2c/i2c-core i2c_get_adapter 0x130d95cc +drivers/i2c/i2c-core i2c_master_recv 0xc796e00b +drivers/i2c/i2c-core i2c_master_send 0x363b201c +drivers/i2c/i2c-core i2c_probe 0x75c7d565 +drivers/i2c/i2c-core i2c_put_adapter 0xf7254c22 +drivers/i2c/i2c-core i2c_release_client 0xdf2de4d7 +drivers/i2c/i2c-core i2c_smbus_read_byte 0x4a49d280 +drivers/i2c/i2c-core i2c_smbus_read_byte_data 0x75cb462d +drivers/i2c/i2c-core i2c_smbus_read_i2c_block_data 0xfd1ae497 +drivers/i2c/i2c-core i2c_smbus_read_word_data 0xd9a0bb68 +drivers/i2c/i2c-core i2c_smbus_write_block_data 0x7caf7ae2 +drivers/i2c/i2c-core i2c_smbus_write_byte 0x842685fa +drivers/i2c/i2c-core i2c_smbus_write_byte_data 0xc1a632e6 +drivers/i2c/i2c-core i2c_smbus_write_quick 0x3dbb30c8 +drivers/i2c/i2c-core i2c_smbus_write_word_data 0xd5c11ffb +drivers/i2c/i2c-core i2c_smbus_xfer 0x63444427 +drivers/i2c/i2c-core i2c_transfer 0x98a30cb1 +drivers/i2c/i2c-core i2c_use_client 0xd4d15ea5 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0xdd3d903c +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x07d47ac9 +drivers/ieee1394/ieee1394 csr1212_read 0xbde3eb37 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x13f7d59d +drivers/ieee1394/ieee1394 dma_prog_region_free 0xb570a6ce +drivers/ieee1394/ieee1394 dma_prog_region_init 0x16559f9d +drivers/ieee1394/ieee1394 dma_region_alloc 0xa39076c4 +drivers/ieee1394/ieee1394 dma_region_free 0xfa7dbc80 +drivers/ieee1394/ieee1394 dma_region_init 0xa480f61a +drivers/ieee1394/ieee1394 dma_region_mmap 0xdc8188d2 +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0x5cee399e +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0xdd022e0b +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x5362f4d2 +drivers/ieee1394/ieee1394 highlevel_host_reset 0xa3e0c61f +drivers/ieee1394/ieee1394 hpsb_add_host 0x78ed2db9 +drivers/ieee1394/ieee1394 hpsb_alloc_host 0x022b84fb +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0x703d7d9b +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0xf3c45f04 +drivers/ieee1394/ieee1394 hpsb_bus_reset 0x257052fb +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0xbff5f180 +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0x6c5ce684 +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0xd8d6997b +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0x518a9ca0 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0x3852f82b +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0x8b5a014b +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0xa96883e3 +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0x38a14023 +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0xc075b136 +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0xd425e4f6 +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0x0a56b617 +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0x73be8e15 +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0xe000faa5 +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0xd0c8b678 +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0x206713fc +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0xc6ed9c76 +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0x89d45926 +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0x4e2a498f +drivers/ieee1394/ieee1394 hpsb_iso_stop 0xd7708dd2 +drivers/ieee1394/ieee1394 hpsb_iso_wake 0x57b4b1d2 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x046aa107 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0x02fffe24 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0x4a046f1f +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0xf6751628 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0x6ddc2ef0 +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0x7aba3c3c +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0xc2ff02dc +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0x1f8d01d1 +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0x4c382f02 +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0x539a4142 +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0xa04c2808 +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0xc8e5a415 +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0x496cfc56 +drivers/ieee1394/ieee1394 hpsb_node_write 0x43a248e4 +drivers/ieee1394/ieee1394 hpsb_packet_received 0xeb7a89f0 +drivers/ieee1394/ieee1394 hpsb_packet_sent 0x16934f30 +drivers/ieee1394/ieee1394 hpsb_packet_success 0x6f17b1cd +drivers/ieee1394/ieee1394 hpsb_protocol_class 0xa7abef14 +drivers/ieee1394/ieee1394 hpsb_read 0xee2174ee +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0x42bb95cc +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0x95f3d7ab +drivers/ieee1394/ieee1394 hpsb_register_protocol 0x7e51b431 +drivers/ieee1394/ieee1394 hpsb_remove_host 0xbcbff055 +drivers/ieee1394/ieee1394 hpsb_reset_bus 0x34bad31f +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0x8847bf8f +drivers/ieee1394/ieee1394 hpsb_selfid_received 0xead503ce +drivers/ieee1394/ieee1394 hpsb_send_packet 0x73dfc696 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0xeca40f72 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0x61ad3c97 +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0x9370f86d +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0x22964ccd +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0xe0ecaa3e +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0x64b50ddc +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0x54fcb751 +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0xed07b523 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0x544fd6fb +drivers/ieee1394/ieee1394 hpsb_write 0x67fa69b8 +drivers/ieee1394/ieee1394 ieee1394_bus_type 0x0319308b +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0xa7deb82c +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0xf811377f +drivers/ieee1394/ohci1394 ohci1394_stop_context 0x56eece9b +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0x80e85ff0 +drivers/infiniband/core/ib_cm ib_cm_establish 0x893330d3 +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0x9345fff8 +drivers/infiniband/core/ib_cm ib_cm_listen 0x4bdd5a7d +drivers/infiniband/core/ib_cm ib_create_cm_id 0x590a4ec5 +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0x85bf3e86 +drivers/infiniband/core/ib_cm ib_send_cm_apr 0xd81a52cc +drivers/infiniband/core/ib_cm ib_send_cm_drep 0xb46f48e3 +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0xb19b7086 +drivers/infiniband/core/ib_cm ib_send_cm_lap 0x3768a1a8 +drivers/infiniband/core/ib_cm ib_send_cm_mra 0xe6bbf2b8 +drivers/infiniband/core/ib_cm ib_send_cm_rej 0x6a5ebdef +drivers/infiniband/core/ib_cm ib_send_cm_rep 0x7c296d71 +drivers/infiniband/core/ib_cm ib_send_cm_req 0xea8b3ece +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0xcad66f43 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0x8c7b0246 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0xf2235cab +drivers/infiniband/core/ib_core ib_alloc_device 0x199863a9 +drivers/infiniband/core/ib_core ib_alloc_fmr 0x3e4f382e +drivers/infiniband/core/ib_core ib_alloc_mw 0x4d9d3927 +drivers/infiniband/core/ib_core ib_alloc_pd 0x1f60895e +drivers/infiniband/core/ib_core ib_attach_mcast 0xf53e24d3 +drivers/infiniband/core/ib_core ib_create_ah 0x7c26cc64 +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0x601c0731 +drivers/infiniband/core/ib_core ib_create_cq 0x716fa12f +drivers/infiniband/core/ib_core ib_create_fmr_pool 0x6409a367 +drivers/infiniband/core/ib_core ib_create_qp 0x9a93e9d2 +drivers/infiniband/core/ib_core ib_create_srq 0x4d49485a +drivers/infiniband/core/ib_core ib_dealloc_device 0x17a8dc1a +drivers/infiniband/core/ib_core ib_dealloc_fmr 0x3b896b7c +drivers/infiniband/core/ib_core ib_dealloc_mw 0xa1d4eeaf +drivers/infiniband/core/ib_core ib_dealloc_pd 0x83b5337b +drivers/infiniband/core/ib_core ib_dereg_mr 0xda81a803 +drivers/infiniband/core/ib_core ib_destroy_ah 0x1f637285 +drivers/infiniband/core/ib_core ib_destroy_cq 0x7388100a +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x219306f2 +drivers/infiniband/core/ib_core ib_destroy_qp 0xb9e32c38 +drivers/infiniband/core/ib_core ib_destroy_srq 0x4981d275 +drivers/infiniband/core/ib_core ib_detach_mcast 0x00918b33 +drivers/infiniband/core/ib_core ib_dispatch_event 0x51ae5a82 +drivers/infiniband/core/ib_core ib_find_cached_gid 0x3c7e2371 +drivers/infiniband/core/ib_core ib_find_cached_pkey 0xe6de8762 +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0x9e1ea166 +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0x8a6b1e44 +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0x3a7528ef +drivers/infiniband/core/ib_core ib_get_cached_gid 0x8f6c7480 +drivers/infiniband/core/ib_core ib_get_cached_pkey 0x4404466a +drivers/infiniband/core/ib_core ib_get_client_data 0xc9f88873 +drivers/infiniband/core/ib_core ib_get_dma_mr 0x6bb763aa +drivers/infiniband/core/ib_core ib_modify_ah 0x9624239e +drivers/infiniband/core/ib_core ib_modify_device 0x2c025d93 +drivers/infiniband/core/ib_core ib_modify_port 0x662b2417 +drivers/infiniband/core/ib_core ib_modify_qp 0xa007eff4 +drivers/infiniband/core/ib_core ib_modify_srq 0x4889f9c9 +drivers/infiniband/core/ib_core ib_pack 0x06830b9a +drivers/infiniband/core/ib_core ib_query_ah 0x06fb716d +drivers/infiniband/core/ib_core ib_query_device 0x7e0b6dda +drivers/infiniband/core/ib_core ib_query_gid 0xe9490902 +drivers/infiniband/core/ib_core ib_query_mr 0x136f2eaa +drivers/infiniband/core/ib_core ib_query_pkey 0x2fbc0680 +drivers/infiniband/core/ib_core ib_query_port 0xf3c19e13 +drivers/infiniband/core/ib_core ib_query_qp 0x3212927a +drivers/infiniband/core/ib_core ib_query_srq 0x8a995115 +drivers/infiniband/core/ib_core ib_reg_phys_mr 0x529d1ac3 +drivers/infiniband/core/ib_core ib_register_client 0xf82b007e +drivers/infiniband/core/ib_core ib_register_device 0xf30f5b0b +drivers/infiniband/core/ib_core ib_register_event_handler 0x6ffcf992 +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x1168009e +drivers/infiniband/core/ib_core ib_resize_cq 0x8baa1147 +drivers/infiniband/core/ib_core ib_set_client_data 0x511b67eb +drivers/infiniband/core/ib_core ib_ud_header_init 0x0632beb8 +drivers/infiniband/core/ib_core ib_ud_header_pack 0x82ddf2e5 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0xa192ed99 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xf96fc9de +drivers/infiniband/core/ib_core ib_unregister_client 0x74c7acfd +drivers/infiniband/core/ib_core ib_unregister_device 0x5626f5b7 +drivers/infiniband/core/ib_core ib_unregister_event_handler 0x581a56ac +drivers/infiniband/core/ib_mad ib_cancel_mad 0x79cc3c8d +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x629e035b +drivers/infiniband/core/ib_mad ib_create_send_mad 0x526fc41c +drivers/infiniband/core/ib_mad ib_free_recv_mad 0x30669027 +drivers/infiniband/core/ib_mad ib_free_send_mad 0x441f483c +drivers/infiniband/core/ib_mad ib_modify_mad 0x2b0345cb +drivers/infiniband/core/ib_mad ib_post_send_mad 0x719b6659 +drivers/infiniband/core/ib_mad ib_process_mad_wc 0x0a9c3194 +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x5f743322 +drivers/infiniband/core/ib_mad ib_register_mad_agent 0xfe8b4351 +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0x0edda20a +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0x4f3e4aaa +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0xdbc00dd4 +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0xa7a66f90 +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0x47f831f5 +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0xa4ca2168 +drivers/input/gameport/gameport __gameport_register_driver 0xc56c1a59 +drivers/input/gameport/gameport __gameport_register_port 0x2c6036d2 +drivers/input/gameport/gameport gameport_close 0x8258c924 +drivers/input/gameport/gameport gameport_cooked_read 0x72fae9ac +drivers/input/gameport/gameport gameport_open 0x8a87f2de +drivers/input/gameport/gameport gameport_rescan 0xc898ba35 +drivers/input/gameport/gameport gameport_set_name 0x70ba70d9 +drivers/input/gameport/gameport gameport_set_phys 0x58aa3cea +drivers/input/gameport/gameport gameport_start_polling 0x711279b2 +drivers/input/gameport/gameport gameport_stop_polling 0x4965ed1e +drivers/input/gameport/gameport gameport_unregister_driver 0xcbe0417a +drivers/input/gameport/gameport gameport_unregister_port 0x95ca126d +drivers/md/dm-mirror dm_create_dirty_log 0x6dde3eb9 +drivers/md/dm-mirror dm_destroy_dirty_log 0x21535020 +drivers/md/dm-mirror dm_register_dirty_log_type 0xeddc9ac3 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0xd3eed36d +drivers/md/dm-mod dm_get_device 0x6b65c11e +drivers/md/dm-mod dm_get_mapinfo 0x1df8b545 +drivers/md/dm-mod dm_io_async 0x720eadbf +drivers/md/dm-mod dm_io_async_bvec 0x59c3706e +drivers/md/dm-mod dm_io_async_vm 0x8281ad4c +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0xab3c4ef0 +drivers/md/dm-mod dm_io_sync_bvec 0xaf8f87f1 +drivers/md/dm-mod dm_io_sync_vm 0xe94c6376 +drivers/md/dm-mod dm_put_device 0x79bb282f +drivers/md/dm-mod dm_register_target 0xcd470a3f +drivers/md/dm-mod dm_table_event 0xc040cb21 +drivers/md/dm-mod dm_table_flush_all 0x2ce0226a +drivers/md/dm-mod dm_table_get 0xd4878080 +drivers/md/dm-mod dm_table_get_mode 0x12d33b93 +drivers/md/dm-mod dm_table_get_size 0xd539b3c3 +drivers/md/dm-mod dm_table_put 0xfcc3ddc0 +drivers/md/dm-mod dm_table_unplug_all 0xdd62a87f +drivers/md/dm-mod dm_unregister_target 0x6614942e +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x64eb2c0e +drivers/md/dm-mod kcopyd_client_create 0x5e898c7f +drivers/md/dm-mod kcopyd_client_destroy 0xfff6a491 +drivers/md/dm-mod kcopyd_copy 0x20f3c688 +drivers/md/dm-multipath dm_pg_init_complete 0xc85673cd +drivers/md/dm-multipath dm_register_hw_handler 0xf3e5f35f +drivers/md/dm-multipath dm_register_path_selector 0x33e8e17f +drivers/md/dm-multipath dm_scsi_err_handler 0xd2e6be1a +drivers/md/dm-multipath dm_unregister_hw_handler 0x3c4b0ea9 +drivers/md/dm-multipath dm_unregister_path_selector 0x38f3f8d4 +drivers/md/md-mod bitmap_close_sync 0x48145b5e +drivers/md/md-mod bitmap_daemon_work 0x5f130fd4 +drivers/md/md-mod bitmap_end_sync 0x32c18586 +drivers/md/md-mod bitmap_endwrite 0x97c29578 +drivers/md/md-mod bitmap_start_sync 0xfb315bd2 +drivers/md/md-mod bitmap_startwrite 0x48226f65 +drivers/md/md-mod bitmap_unplug 0x725bc298 +drivers/md/md-mod md_check_recovery 0x9a69b4f3 +drivers/md/md-mod md_done_sync 0xf0d4216d +drivers/md/md-mod md_error 0xf4d41fa0 +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x7b0001e5 +drivers/md/md-mod md_unregister_thread 0x17400ed4 +drivers/md/md-mod md_wakeup_thread 0x7e87d19a +drivers/md/md-mod md_write_end 0x27b6fb80 +drivers/md/md-mod md_write_start 0x9488f7f3 +drivers/md/md-mod register_md_personality 0xfd1f7e8a +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x95d28726 +drivers/media/common/ir-common ir_codes_hauppauge_new 0xa3dc60f8 +drivers/media/common/ir-common ir_codes_pinnacle 0x4fa2b03e +drivers/media/common/ir-common ir_codes_pixelview 0x43eda01a +drivers/media/common/ir-common ir_codes_rc5_tv 0x44c715df +drivers/media/common/ir-common ir_codes_winfast 0x828ace4d +drivers/media/common/ir-common ir_decode_biphase 0x953031a2 +drivers/media/common/ir-common ir_decode_pulsedistance 0x5e6fea37 +drivers/media/common/ir-common ir_dump_samples 0x6896a5f6 +drivers/media/common/ir-common ir_extract_bits 0xe9f08798 +drivers/media/common/ir-common ir_input_init 0xad92b29a +drivers/media/common/ir-common ir_input_keydown 0x50b21c8d +drivers/media/common/ir-common ir_input_nokey 0xb3434550 +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x89411105 +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0x813ca084 +drivers/media/common/saa7146 saa7146_i2c_transfer 0x88c1ae5d +drivers/media/common/saa7146 saa7146_pgtable_alloc 0x8d0364bb +drivers/media/common/saa7146 saa7146_pgtable_build_single 0xe2028e68 +drivers/media/common/saa7146 saa7146_pgtable_free 0x9f273d03 +drivers/media/common/saa7146 saa7146_register_extension 0x039d2019 +drivers/media/common/saa7146 saa7146_setgpio 0x134e4b26 +drivers/media/common/saa7146 saa7146_unregister_extension 0x60576af5 +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0x8c37aaac +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0x02820075 +drivers/media/common/saa7146_vv saa7146_register_device 0x682aa013 +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0x8fa787ae +drivers/media/common/saa7146_vv saa7146_start_preview 0x36bc6ce5 +drivers/media/common/saa7146_vv saa7146_stop_preview 0xb34b231f +drivers/media/common/saa7146_vv saa7146_unregister_device 0x52685a9b +drivers/media/common/saa7146_vv saa7146_vv_init 0x36a35d9f +drivers/media/common/saa7146_vv saa7146_vv_release 0xb82229d7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0xb7673a95 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0x804b3108 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0xd862a27c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0x58087340 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0x72d0e2c8 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0xd6800ffc +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0x2041eb38 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0x06c0bb82 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0x90022955 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0xbc7d5ec0 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0x832390d8 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0x53b1cd2a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0x79fdfd78 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0xdf360a0d +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0x01fa3375 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0x1b72bd75 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0x44cd274d +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0x98e3988e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0x6b165f4a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0x62cdc0f7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0x5d41bd66 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0xe3230de8 +drivers/media/dvb/bt8xx/bt878 bt878 0x11c794de +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0xb4d28ded +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0xf5555d06 +drivers/media/dvb/bt8xx/bt878 bt878_stop 0x89e15d3e +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0x94a0e90a +drivers/media/dvb/bt8xx/dst dst_check_sum 0x43a983fd +drivers/media/dvb/bt8xx/dst dst_comm_init 0x80caabda +drivers/media/dvb/bt8xx/dst dst_command 0xc9a0ed70 +drivers/media/dvb/bt8xx/dst dst_error_bailout 0xa1dc6504 +drivers/media/dvb/bt8xx/dst dst_error_recovery 0xf60615c7 +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0xbf7b1a56 +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0x3484e990 +drivers/media/dvb/bt8xx/dst dst_pio_disable 0x6c7cda4c +drivers/media/dvb/bt8xx/dst dst_pio_enable 0x328f980e +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0x84a5e48e +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0x4e7ffa89 +drivers/media/dvb/bt8xx/dst rdc_reset_state 0x0f635878 +drivers/media/dvb/bt8xx/dst read_dst 0x577620d7 +drivers/media/dvb/bt8xx/dst write_dst 0xbbeef42a +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0xfe2b3782 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0xea407073 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0x820d96cc +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0x9329db6b +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0xd35d281d +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0xc5026703 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0x3d79fc14 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0x9ea819e0 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0xb8c63656 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0x435af419 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x40c1a490 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0xb01c0516 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0x3af06208 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x1209ade6 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x4595ed1e +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0x73f11c5a +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0xd65dacd7 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0x528ab203 +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0xf7b6803a +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0xec3024f8 +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0xa8d6122a +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0x4724d9e1 +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0x97cff296 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0xae6166e2 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0xd3102edb +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0xe2304d72 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0x746276b0 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x98b1975c +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0xfdae3b30 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0xa89754a4 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0x24bf49d2 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0xd194f6ef +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0x88b586fb +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0x9bdcbc23 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0x2efff6c3 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0xf8ccf4f7 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0xac7f15ca +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0x96cf37b2 +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0xa1a8c7f9 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0xc7fbe18f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0xd41a7a97 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0x82559b0b +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0x3b1b7171 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0x93d22eef +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0x2799eb6e +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0xeefd9e92 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0xf3da062f +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0x8735b877 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0x2ebabe00 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0xef736df8 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0x2bc0f102 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0x7519cb76 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0x98618975 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0x7f82bcaf +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0x832aa8a8 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0x55c7c5af +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0x9792af5a +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0x313ad55b +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0x869c7e38 +drivers/media/dvb/frontends/at76c651 at76c651_attach 0xbb7cbcca +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0x33bb433a +drivers/media/dvb/frontends/cx22700 cx22700_attach 0xf8f0173d +drivers/media/dvb/frontends/cx22702 cx22702_attach 0x6c3d7ce2 +drivers/media/dvb/frontends/cx24110 cx24110_attach 0x1a48c68c +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0xf670960b +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0xca7a39be +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0x4ac49a93 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x0f739b55 +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0x7197ad40 +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0x1e7a30a1 +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0x60d5f3c1 +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x72b73801 +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0xf434f763 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x61716712 +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0x1536fd73 +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xa75bea99 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xaec96404 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x80e1bf15 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xbccde2e4 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x051954f8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0x8fc9fea7 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0xa0e34c4b +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0x431f1f05 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0x6719245e +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0x7e02151f +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xb6a3ccdf +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x3c620b08 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xb5a6ba8b +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x08fad2ed +drivers/media/dvb/frontends/l64781 l64781_attach 0xe339f868 +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0x9fc1ef81 +drivers/media/dvb/frontends/mt312 mt312_attach 0xab729838 +drivers/media/dvb/frontends/mt312 vp310_attach 0x689b5054 +drivers/media/dvb/frontends/mt352 mt352_attach 0xdaf54c78 +drivers/media/dvb/frontends/mt352 mt352_write 0x19375785 +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0x1c36705c +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x1e649698 +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0x42bb97bb +drivers/media/dvb/frontends/or51132 or51132_attach 0x6812975b +drivers/media/dvb/frontends/or51211 or51211_attach 0xab3784ee +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0x7cb475ca +drivers/media/dvb/frontends/sp8870 sp8870_attach 0x0fdff029 +drivers/media/dvb/frontends/sp887x sp887x_attach 0xa837b13f +drivers/media/dvb/frontends/stv0297 stv0297_attach 0x0945d05f +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0xb4949486 +drivers/media/dvb/frontends/stv0299 stv0299_attach 0xe7cc4f84 +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0xb6edf30d +drivers/media/dvb/frontends/tda10021 tda10021_attach 0x62e0275b +drivers/media/dvb/frontends/tda1004x tda10045_attach 0xc30a012e +drivers/media/dvb/frontends/tda1004x tda10046_attach 0x85f8b1aa +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0x8751add4 +drivers/media/dvb/frontends/tda8083 tda8083_attach 0x0f2aad14 +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0xfe007995 +drivers/media/dvb/frontends/ves1820 ves1820_attach 0x5cb3e25f +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0x80440f97 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0x94e02b8e +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0xe93e0d4b +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0x87f6fc3c +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0x4d4b2a48 +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0x0a0b782b +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0xb27ba016 +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0xc124309d +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0x5e48c463 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0x758fc5a9 +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0x108965c0 +drivers/media/video/btcx-risc btcx_riscmem_free 0xf40c64c7 +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x65934fbc +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0xb6174f63 +drivers/media/video/bttv bttv_gpio_bits 0x07848aa4 +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0x2ada8fb2 +drivers/media/video/bttv bttv_gpio_read 0xf444921a +drivers/media/video/bttv bttv_gpio_write 0xde59af63 +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0xb61f2dcc +drivers/media/video/bttv bttv_sub_register 0x840d5547 +drivers/media/video/bttv bttv_sub_unregister 0xfe59d702 +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0x2c10e847 +drivers/media/video/cpia cpia_unregister_camera 0x32ea4301 +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0x6a5e503b +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0xcf453a00 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0x0e7900e5 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0xd24ea6f9 +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0xab550eac +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0x62002a51 +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0x6e6e7725 +drivers/media/video/cx88/cx8802 cx8802_fini_common 0xc1b5d024 +drivers/media/video/cx88/cx8802 cx8802_init_common 0xf7f8ecbb +drivers/media/video/cx88/cx8802 cx8802_resume_common 0xe2325400 +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0xd3164730 +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x5b1a26b7 +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0xd5e375ce +drivers/media/video/cx88/cx88xx cx88_card_list 0x2b7ab46d +drivers/media/video/cx88/cx88xx cx88_card_setup 0xb8069c33 +drivers/media/video/cx88/cx88xx cx88_core_get 0xf9b5e531 +drivers/media/video/cx88/cx88xx cx88_core_irq 0x6a35e862 +drivers/media/video/cx88/cx88xx cx88_core_put 0x575c771f +drivers/media/video/cx88/cx88xx cx88_free_buffer 0xb47aea67 +drivers/media/video/cx88/cx88xx cx88_get_stereo 0xd865aa3d +drivers/media/video/cx88/cx88xx cx88_i2c_init 0xd268a0ae +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0x365a6c0c +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x4b35dc23 +drivers/media/video/cx88/cx88xx cx88_reset 0x87ed7446 +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0xfe2ec4b5 +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0x369a4183 +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0x1c7368e5 +drivers/media/video/cx88/cx88xx cx88_set_scale 0x8f3acf1d +drivers/media/video/cx88/cx88xx cx88_set_stereo 0x782b6e6c +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0x4e2089da +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0x2ba9e8ca +drivers/media/video/cx88/cx88xx cx88_shutdown 0xa4ab56f5 +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0x8a765ba3 +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0xa3671e0e +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x17a2e62e +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0x731dd23b +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0x8e5af3c2 +drivers/media/video/cx88/cx88xx cx88_subids 0x5804f888 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0xcbf8288d +drivers/media/video/cx88/cx88xx cx88_wakeup 0x3715ed94 +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0x128b9c41 +drivers/media/video/saa7134/saa7134 dmasound_exit 0x1728ca9c +drivers/media/video/saa7134/saa7134 dmasound_init 0xa128337f +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0x85b4e738 +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0xdbe8ee67 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0x0cddfb9c +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0xb1db1c46 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0x919f4f20 +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0x030a2213 +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0x8a6f0b98 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0xb188c47e +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0xe185611d +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0x3d4cdcb8 +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0x01b34173 +drivers/media/video/tveeprom tveeprom_read 0x7e6df8c8 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0xe00be9d1 +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x1cef839c +drivers/media/video/v4l2-common v4l2_prio_check 0x62c15600 +drivers/media/video/v4l2-common v4l2_prio_close 0x0a59df07 +drivers/media/video/v4l2-common v4l2_prio_init 0x931bfaa6 +drivers/media/video/v4l2-common v4l2_prio_max 0x7121c34d +drivers/media/video/v4l2-common v4l2_prio_open 0x379df2e3 +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0xea6b1ba9 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0x6a3d8843 +drivers/media/video/video-buf videobuf_dma_init 0x715c5464 +drivers/media/video/video-buf videobuf_dma_init_kernel 0x46e415ae +drivers/media/video/video-buf videobuf_dma_init_overlay 0x7c7f60df +drivers/media/video/video-buf videobuf_dma_init_user 0xa37631f0 +drivers/media/video/video-buf videobuf_dma_pci_map 0xc2707445 +drivers/media/video/video-buf videobuf_dma_pci_sync 0xdfe8baf9 +drivers/media/video/video-buf videobuf_dma_pci_unmap 0x0ea118b8 +drivers/media/video/video-buf videobuf_dqbuf 0x4cb9ba64 +drivers/media/video/video-buf videobuf_iolock 0xa73d76a9 +drivers/media/video/video-buf videobuf_mmap_free 0x66de50c6 +drivers/media/video/video-buf videobuf_mmap_mapper 0xb1d4a55f +drivers/media/video/video-buf videobuf_mmap_setup 0xdd8cb968 +drivers/media/video/video-buf videobuf_next_field 0x2751a32e +drivers/media/video/video-buf videobuf_poll_stream 0xbf616295 +drivers/media/video/video-buf videobuf_qbuf 0xd37a12ec +drivers/media/video/video-buf videobuf_querybuf 0xf8645e83 +drivers/media/video/video-buf videobuf_queue_cancel 0x55751953 +drivers/media/video/video-buf videobuf_queue_init 0xfca3ac15 +drivers/media/video/video-buf videobuf_queue_is_busy 0xd8071c16 +drivers/media/video/video-buf videobuf_read_one 0x95d86f6e +drivers/media/video/video-buf videobuf_read_start 0xaea9b36c +drivers/media/video/video-buf videobuf_read_stop 0xeb1493c0 +drivers/media/video/video-buf videobuf_read_stream 0x02ef832b +drivers/media/video/video-buf videobuf_reqbufs 0x668496bf +drivers/media/video/video-buf videobuf_status 0x7dc7e4a7 +drivers/media/video/video-buf videobuf_streamoff 0xbee20326 +drivers/media/video/video-buf videobuf_streamon 0xec00d6df +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0xfc5d81d5 +drivers/media/video/video-buf videobuf_waiton 0x132e21d9 +drivers/media/video/video-buf-dvb videobuf_dvb_register 0xb5c40a9c +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0x3125ac6b +drivers/media/video/videocodec videocodec_attach 0xc259037e +drivers/media/video/videocodec videocodec_detach 0xdf1ab027 +drivers/media/video/videocodec videocodec_register 0x97cdb469 +drivers/media/video/videocodec videocodec_unregister 0x8b5475d7 +drivers/media/video/videodev video_devdata 0xb0c7cb19 +drivers/media/video/videodev video_device_alloc 0x51bb7056 +drivers/media/video/videodev video_device_release 0x2380c2e1 +drivers/media/video/videodev video_exclusive_open 0xe616e828 +drivers/media/video/videodev video_exclusive_release 0xc37b41ad +drivers/media/video/videodev video_register_device 0x7fa6cbbe +drivers/media/video/videodev video_unregister_device 0xc5176854 +drivers/media/video/videodev video_usercopy 0xb493e2eb +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0xf28e400e +drivers/message/fusion/mptbase mpt_HardResetHandler 0xcf44fb13 +drivers/message/fusion/mptbase mpt_add_sge 0x89019e23 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0xe72f64c8 +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0x27b6d670 +drivers/message/fusion/mptbase mpt_attach 0x7b3a1d54 +drivers/message/fusion/mptbase mpt_config 0x59a2497e +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0x43575066 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0xa0091d12 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x86cc8a52 +drivers/message/fusion/mptbase mpt_findImVolumes 0x6b1803f6 +drivers/message/fusion/mptbase mpt_free_fw_memory 0x7177d429 +drivers/message/fusion/mptbase mpt_free_msg_frame 0x9f323eeb +drivers/message/fusion/mptbase mpt_get_msg_frame 0xe52a5ec5 +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0xe5acc498 +drivers/message/fusion/mptbase mpt_proc_root_dir 0xc6a64e53 +drivers/message/fusion/mptbase mpt_put_msg_frame 0x336f2f1d +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x44b3be9f +drivers/message/fusion/mptbase mpt_register 0x3c3d1579 +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x1e4b578a +drivers/message/fusion/mptbase mpt_resume 0x9a45e0b1 +drivers/message/fusion/mptbase mpt_send_handshake_request 0xbc5220ff +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0x64a6c47c +drivers/message/fusion/mptbase mpt_toolbox 0x50a4c144 +drivers/message/fusion/mptbase mpt_verify_adapter 0xf0024968 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x8059a23b +drivers/message/fusion/mptscsih mptscsih_abort 0x2b46bb40 +drivers/message/fusion/mptscsih mptscsih_bios_param 0x69e2bd7c +drivers/message/fusion/mptscsih mptscsih_bus_reset 0x3fb107c6 +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x49aa7d91 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0x7e5a8ea0 +drivers/message/fusion/mptscsih mptscsih_event_process 0x5727a3a3 +drivers/message/fusion/mptscsih mptscsih_host_reset 0x18a325bf +drivers/message/fusion/mptscsih mptscsih_info 0xc85a778c +drivers/message/fusion/mptscsih mptscsih_io_done 0xb80d79a2 +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x6cb60aaa +drivers/message/fusion/mptscsih mptscsih_proc_info 0x9ee9b71a +drivers/message/fusion/mptscsih mptscsih_qcmd 0x36a48a22 +drivers/message/fusion/mptscsih mptscsih_remove 0x16c8f97e +drivers/message/fusion/mptscsih mptscsih_resume 0x6b47f890 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0xc5042df4 +drivers/message/fusion/mptscsih mptscsih_shutdown 0x6dacbb2f +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0xd3c18e6e +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x8fab3175 +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x7e81be8c +drivers/message/fusion/mptscsih mptscsih_suspend 0x707c39e3 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x46a90813 +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_cntxt_list_add 0x11391530 +drivers/message/i2o/i2o_core i2o_cntxt_list_get 0x31555e7c +drivers/message/i2o/i2o_core i2o_cntxt_list_get_ptr 0x99c3228c +drivers/message/i2o/i2o_core i2o_cntxt_list_remove 0x15ca2d59 +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0x1e291a33 +drivers/message/i2o/i2o_core i2o_device_claim_release 0x69eb786a +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0x0d9d6bc6 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x84701e0d +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x9663dbd5 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0x4abd0d38 +drivers/message/i2o/i2o_core i2o_driver_register 0xb896aa2c +drivers/message/i2o/i2o_core i2o_driver_unregister 0x794862a2 +drivers/message/i2o/i2o_core i2o_dump_message 0xeb95f7f2 +drivers/message/i2o/i2o_core i2o_event_register 0xc4dc893e +drivers/message/i2o/i2o_core i2o_exec_lct_get 0xd960fed6 +drivers/message/i2o/i2o_core i2o_find_iop 0x3d9b7a75 +drivers/message/i2o/i2o_core i2o_iop_find_device 0x54e89785 +drivers/message/i2o/i2o_core i2o_msg_get_wait 0xdfcce4b3 +drivers/message/i2o/i2o_core i2o_msg_nop 0xd0b75f97 +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0xfbc889dd +drivers/message/i2o/i2o_core i2o_parm_field_get 0xb491df37 +drivers/message/i2o/i2o_core i2o_parm_issue 0x3372f131 +drivers/message/i2o/i2o_core i2o_parm_table_get 0x0605e90c +drivers/message/i2o/i2o_core i2o_status_get 0x25edd512 +drivers/mtd/chips/cfi_util cfi_fixup 0x1c51ca66 +drivers/mtd/chips/cfi_util cfi_read_pri 0xb7e8b7e5 +drivers/mtd/chips/cfi_util cfi_varsize_frob 0x690c19fe +drivers/mtd/chips/chipreg do_map_probe 0xabb8e647 +drivers/mtd/chips/chipreg map_destroy 0xf9a5f769 +drivers/mtd/chips/chipreg register_mtd_chip_driver 0x243c6966 +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0xa9a6ddd8 +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0xfe65480e +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0x2a20580a +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0xe6a2fbb3 +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0x46159b6e +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0x43c383a0 +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0x063608eb +drivers/mtd/mtdconcat mtd_concat_create 0x0513c000 +drivers/mtd/mtdconcat mtd_concat_destroy 0x9bc69da2 +drivers/mtd/mtdcore add_mtd_device 0x553c5f54 +drivers/mtd/mtdcore default_mtd_readv 0x16b59f28 +drivers/mtd/mtdcore default_mtd_writev 0x3d00d103 +drivers/mtd/mtdcore del_mtd_device 0xfb9836fe +drivers/mtd/mtdcore get_mtd_device 0x38164860 +drivers/mtd/mtdcore mtd_table 0xe1e1535f +drivers/mtd/mtdcore mtd_table_mutex 0x819ff03f +drivers/mtd/mtdcore put_mtd_device 0x266342e7 +drivers/mtd/mtdcore register_mtd_user 0x2d2e3ec1 +drivers/mtd/mtdcore unregister_mtd_user 0xabd26ac2 +drivers/mtd/mtdpart add_mtd_partitions 0xe9862dc2 +drivers/mtd/mtdpart del_mtd_partitions 0xbe35ab71 +drivers/mtd/mtdpart deregister_mtd_parser 0x78afd85c +drivers/mtd/mtdpart mtd_erase_callback 0x75fd2ef3 +drivers/mtd/mtdpart parse_mtd_partitions 0xadbf9416 +drivers/mtd/mtdpart register_mtd_parser 0x62257966 +drivers/mtd/nand/nand nand_default_bbt 0x907ee100 +drivers/mtd/nand/nand nand_release 0x73941fcc +drivers/mtd/nand/nand nand_scan 0x4e93e988 +drivers/mtd/nand/nand nand_scan_bbt 0x0a9f52e8 +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0x0c8a050a +drivers/mtd/onenand/onenand onenand_release 0xf7e119ff +drivers/mtd/onenand/onenand onenand_scan 0xb3714a4c +drivers/mtd/onenand/onenand onenand_scan_bbt 0x44bd3bd5 +drivers/net/8390 NS8390_init 0xf2e4d834 +drivers/net/8390 __alloc_ei_netdev 0x3e0eccbe +drivers/net/8390 ei_close 0x909fa428 +drivers/net/8390 ei_interrupt 0x7290cbe2 +drivers/net/8390 ei_open 0xc44ab886 +drivers/net/8390 ei_poll 0x825d64c1 +drivers/net/arcnet/arcnet alloc_arcdev 0x61ce9174 +drivers/net/arcnet/arcnet arc_bcast_proto 0x255277c1 +drivers/net/arcnet/arcnet arc_proto_default 0x4fce85ef +drivers/net/arcnet/arcnet arc_proto_map 0xf2b52286 +drivers/net/arcnet/arcnet arc_proto_null 0x73b46d07 +drivers/net/arcnet/arcnet arc_raw_proto 0x61b7e27a +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0xff19d19b +drivers/net/arcnet/arcnet arcnet_unregister_proto 0x2aa25b1c +drivers/net/arcnet/com20020 com20020_check 0xce274d36 +drivers/net/arcnet/com20020 com20020_found 0x69586db5 +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0x38775147 +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0x33421bd0 +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0x30120e3e +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0x544003fa +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0x5b84a302 +drivers/net/irda/sir-dev irda_register_dongle 0xb302c59a +drivers/net/irda/sir-dev irda_unregister_dongle 0xce22125e +drivers/net/irda/sir-dev sirdev_get_instance 0xa749cca9 +drivers/net/irda/sir-dev sirdev_put_instance 0xb79e649a +drivers/net/irda/sir-dev sirdev_raw_read 0x3160e6b0 +drivers/net/irda/sir-dev sirdev_raw_write 0xcec855db +drivers/net/irda/sir-dev sirdev_receive 0xa49feb07 +drivers/net/irda/sir-dev sirdev_set_dongle 0x6a674759 +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0x908c982a +drivers/net/irda/sir-dev sirdev_write_complete 0x082b6acf +drivers/net/mii generic_mii_ioctl 0x790a1d9d +drivers/net/mii mii_check_gmii_support 0x1432dc98 +drivers/net/mii mii_check_link 0x8448e0a8 +drivers/net/mii mii_check_media 0xfc28e477 +drivers/net/mii mii_ethtool_gset 0xecf66d8d +drivers/net/mii mii_ethtool_sset 0x171ab7ec +drivers/net/mii mii_link_ok 0xd8df08d4 +drivers/net/mii mii_nway_restart 0x366d1076 +drivers/net/phy/libphy genphy_config_advert 0x8ef900eb +drivers/net/phy/libphy genphy_config_aneg 0x1f3afca1 +drivers/net/phy/libphy genphy_read_status 0x8c7890c7 +drivers/net/phy/libphy mdiobus_register 0x648f9712 +drivers/net/phy/libphy mdiobus_unregister 0xa9531d8f +drivers/net/phy/libphy phy_attach 0xbdbb237d +drivers/net/phy/libphy phy_connect 0x434cde5c +drivers/net/phy/libphy phy_detach 0x711b2704 +drivers/net/phy/libphy phy_disable_interrupts 0x1ce9bb86 +drivers/net/phy/libphy phy_disconnect 0xadcdee34 +drivers/net/phy/libphy phy_driver_register 0x09fd0d3b +drivers/net/phy/libphy phy_driver_unregister 0xb5bcce22 +drivers/net/phy/libphy phy_enable_interrupts 0xf10b4115 +drivers/net/phy/libphy phy_print_status 0xe7fac4d2 +drivers/net/phy/libphy phy_read 0x97ed108e +drivers/net/phy/libphy phy_sanitize_settings 0xcc46b74d +drivers/net/phy/libphy phy_start 0xf98ff4f3 +drivers/net/phy/libphy phy_start_aneg 0xbe202fe4 +drivers/net/phy/libphy phy_start_interrupts 0xe188432b +drivers/net/phy/libphy phy_stop 0x5e774a4b +drivers/net/phy/libphy phy_stop_interrupts 0xbebd7302 +drivers/net/phy/libphy phy_write 0x8eb9abf4 +drivers/net/ppp_generic ppp_channel_index 0x24e4d127 +drivers/net/ppp_generic ppp_input 0x39b3809f +drivers/net/ppp_generic ppp_input_error 0x7a33880b +drivers/net/ppp_generic ppp_output_wakeup 0x25dfb280 +drivers/net/ppp_generic ppp_register_channel 0x942abd59 +drivers/net/ppp_generic ppp_register_compressor 0xffffafa0 +drivers/net/ppp_generic ppp_unit_number 0xc68cc25b +drivers/net/ppp_generic ppp_unregister_channel 0xbc3231cb +drivers/net/ppp_generic ppp_unregister_compressor 0x6ce55d52 +drivers/net/pppox pppox_unbind_sock 0x80182f67 +drivers/net/pppox register_pppox_proto 0xf4a59148 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x76135e6c +drivers/net/slhc slhc_free 0x2894cfb0 +drivers/net/slhc slhc_init 0x2e0e927f +drivers/net/slhc slhc_remember 0x0bc55868 +drivers/net/slhc slhc_toss 0xf89e3455 +drivers/net/slhc slhc_uncompress 0x3bc1319e +drivers/net/wan/hdlc alloc_hdlcdev 0x074095a4 +drivers/net/wan/hdlc hdlc_close 0xd99f4a89 +drivers/net/wan/hdlc hdlc_ioctl 0x87d4d1c0 +drivers/net/wan/hdlc hdlc_open 0xe25ed369 +drivers/net/wan/hdlc hdlc_set_carrier 0x30195f37 +drivers/net/wan/hdlc register_hdlc_device 0xaa707e08 +drivers/net/wan/hdlc unregister_hdlc_device 0xb6ca45ed +drivers/net/wan/syncppp sppp_attach 0xf0dc4cdf +drivers/net/wan/syncppp sppp_close 0xf03a72cc +drivers/net/wan/syncppp sppp_detach 0x206925ed +drivers/net/wan/syncppp sppp_do_ioctl 0x86e28de3 +drivers/net/wan/syncppp sppp_open 0x640bf221 +drivers/net/wan/syncppp sppp_reopen 0xcf5fe3fe +drivers/net/wireless/airo init_airo_card 0x941284b2 +drivers/net/wireless/airo reset_airo_card 0xb0d1a5a1 +drivers/net/wireless/airo stop_airo_card 0x3e35933a +drivers/net/wireless/atmel atmel_open 0x25a64182 +drivers/net/wireless/atmel init_atmel_card 0x62a67c18 +drivers/net/wireless/atmel stop_atmel_card 0xdf7211a8 +drivers/net/wireless/hermes hermes_allocate 0x52657e6d +drivers/net/wireless/hermes hermes_bap_pread 0x00f56735 +drivers/net/wireless/hermes hermes_bap_pwrite 0x66c87edb +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x9e63e63a +drivers/net/wireless/hermes hermes_docmd_wait 0x586026a5 +drivers/net/wireless/hermes hermes_init 0x2aa8b098 +drivers/net/wireless/hermes hermes_read_ltv 0x2743ed5f +drivers/net/wireless/hermes hermes_struct_init 0x7e23508a +drivers/net/wireless/hermes hermes_write_ltv 0xc0b735be +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x96c84ea1 +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0x9e81782e +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0x1c5f78bd +drivers/net/wireless/hostap/hostap hostap_80211_rx 0xbae77374 +drivers/net/wireless/hostap/hostap hostap_add_interface 0x2a863528 +drivers/net/wireless/hostap/hostap hostap_add_sta 0xc9db38b2 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0xa71a34c9 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0xf2e7b276 +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0x517d8c65 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x125371a4 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0x237e1ca4 +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3d91a091 +drivers/net/wireless/hostap/hostap hostap_free_data 0x21bfc2b5 +drivers/net/wireless/hostap/hostap hostap_get_porttype 0xc1911614 +drivers/net/wireless/hostap/hostap hostap_get_stats 0x246b410e +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0x3e2dc53e +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x7c46abce +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x83f7dcec +drivers/net/wireless/hostap/hostap hostap_info_init 0x7e80400c +drivers/net/wireless/hostap/hostap hostap_info_process 0xa3c34f17 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0x79bdf612 +drivers/net/wireless/hostap/hostap hostap_init_data 0x580997f8 +drivers/net/wireless/hostap/hostap hostap_init_proc 0x5181c08d +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0xd0c694da +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x801ebb52 +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0xd094dc13 +drivers/net/wireless/hostap/hostap hostap_proc 0xb147225b +drivers/net/wireless/hostap/hostap hostap_remove_interface 0x5d371b2e +drivers/net/wireless/hostap/hostap hostap_remove_proc 0xc958d11d +drivers/net/wireless/hostap/hostap hostap_set_antsel 0x1b493e87 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0x7a8f620a +drivers/net/wireless/hostap/hostap hostap_set_encryption 0xb04a2533 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x3a8e93e8 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0x7645ec66 +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0xe3b4c7d4 +drivers/net/wireless/hostap/hostap hostap_set_string 0x2b0a669f +drivers/net/wireless/hostap/hostap hostap_set_word 0x3e6eb2e9 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0xeb375891 +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x75b95b7c +drivers/net/wireless/hostap/hostap hostap_update_rates 0x1cd7130a +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0xe67a018e +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0xc18e0436 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0xee6d5731 +drivers/net/wireless/orinoco __orinoco_down 0x00ac8ac0 +drivers/net/wireless/orinoco __orinoco_up 0x364270e8 +drivers/net/wireless/orinoco alloc_orinocodev 0x9733dd94 +drivers/net/wireless/orinoco free_orinocodev 0xc04449f0 +drivers/net/wireless/orinoco orinoco_interrupt 0xa4f4105f +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x7272ae65 +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xe0d20df1 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0xeea16561 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0x900818de +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x61ef66a3 +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0x48649139 +drivers/net/wireless/prism54_softmac/islsm islsm_free 0xcecaec9c +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0x00bedcfa +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0xe0deab54 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0x9703fe91 +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x5e9a0a5a +drivers/net/wireless/prism54_softmac/islsm register_islsm 0xe9971caf +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0x989b5c49 +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0xc2782341 +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0xdf402992 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0x1c999585 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0xdb95b883 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0xb697f13c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x556e6ac6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0x876ddaab +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0x9c405b76 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0xcfb05f0c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xfd4d74ff +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0x1a757df8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0xd03c974e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x2dd94bc0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0xe90238b1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0x0d3a2f04 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0xe99c3f2f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0x554e94cc +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x0997183f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0xf926bca8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x55c4f2da +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0x6182bc15 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0xa3d06cf0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x40743225 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x751ed7ac +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x1883aac2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0x149d78a5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x5ba2cab6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0xa97b1a99 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0x90054c02 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0xfe7e3d00 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0xa09dcad5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x68842fd8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0x87bbb494 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0xdfe0dc91 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0xd3fe0ef6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x5bde79a1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0x57663a51 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0xd26763d5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x391d4b53 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x14432dae +drivers/parport/parport parport_announce_port 0x7bb1109b +drivers/parport/parport parport_claim 0xbabd2dba +drivers/parport/parport parport_claim_or_block 0x99876d52 +drivers/parport/parport parport_find_base 0xbb92db43 +drivers/parport/parport parport_find_number 0x1ad187e6 +drivers/parport/parport parport_get_port 0x731714cd +drivers/parport/parport parport_ieee1284_ecp_read_data 0xb1871aab +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xfa050088 +drivers/parport/parport parport_ieee1284_ecp_write_data 0xbbe9ae10 +drivers/parport/parport parport_ieee1284_epp_read_addr 0xa16c550b +drivers/parport/parport parport_ieee1284_epp_read_data 0xcf220db0 +drivers/parport/parport parport_ieee1284_epp_write_addr 0xb2283dd6 +drivers/parport/parport parport_ieee1284_epp_write_data 0xf3c4934e +drivers/parport/parport parport_ieee1284_interrupt 0x03ce1a9d +drivers/parport/parport parport_ieee1284_read_byte 0x1a71be58 +drivers/parport/parport parport_ieee1284_read_nibble 0x00e682cb +drivers/parport/parport parport_ieee1284_write_compat 0xba9d3ad5 +drivers/parport/parport parport_negotiate 0xe4d4019f +drivers/parport/parport parport_put_port 0x941abe31 +drivers/parport/parport parport_read 0xce8e5d06 +drivers/parport/parport parport_register_device 0xeb8a37c0 +drivers/parport/parport parport_register_driver 0x9d9ea26c +drivers/parport/parport parport_register_port 0xb9d84510 +drivers/parport/parport parport_release 0xf0838d05 +drivers/parport/parport parport_remove_port 0x329ecffb +drivers/parport/parport parport_set_timeout 0x76b41066 +drivers/parport/parport parport_unregister_device 0x50f9e498 +drivers/parport/parport parport_unregister_driver 0xaaf2a421 +drivers/parport/parport parport_wait_event 0xb233be72 +drivers/parport/parport parport_wait_peripheral 0x7233f36c +drivers/parport/parport parport_write 0x40051fa1 +drivers/parport/parport_pc parport_pc_probe_port 0xf5139d51 +drivers/parport/parport_pc parport_pc_unregister_port 0x484f53c1 +drivers/pci/hotplug/acpiphp acpiphp_register_attention 0x8100266e +drivers/pci/hotplug/acpiphp acpiphp_unregister_attention 0xe81299e7 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_bus 0x603129a8 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_controller 0xaa159246 +drivers/pci/hotplug/pci_hotplug cpci_hp_start 0x6a8441be +drivers/pci/hotplug/pci_hotplug cpci_hp_stop 0x94ef4d05 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_bus 0x63f9d11d +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_controller 0xd4d518a9 +drivers/pci/hotplug/pci_hotplug pci_hotplug_slots_subsys 0x45067e7a +drivers/pci/hotplug/pci_hotplug pci_hp_change_slot_info 0x6bc9ad1a +drivers/pci/hotplug/pci_hotplug pci_hp_deregister 0xb3d2995e +drivers/pci/hotplug/pci_hotplug pci_hp_register 0x5b6d1099 +drivers/pcmcia/pcmcia cs_error 0x57cec280 +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0x045cad1e +drivers/pcmcia/pcmcia pcmcia_deregister_client 0xae675800 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0x075b916a +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0xdca96ff9 +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0x0f1178b9 +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0x59ffae1b +drivers/pcmcia/pcmcia pcmcia_get_status 0xe774b512 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0xaf893c9b +drivers/pcmcia/pcmcia pcmcia_get_window 0x69b063e5 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0xab4c0e64 +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x9fa8a474 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0x4f30a9ed +drivers/pcmcia/pcmcia pcmcia_register_client 0x8bc8cee4 +drivers/pcmcia/pcmcia pcmcia_register_driver 0x219eeb24 +drivers/pcmcia/pcmcia pcmcia_release_configuration 0xde77e33a +drivers/pcmcia/pcmcia pcmcia_release_io 0x1154bbed +drivers/pcmcia/pcmcia pcmcia_release_irq 0x74d75e5d +drivers/pcmcia/pcmcia pcmcia_release_window 0xef402565 +drivers/pcmcia/pcmcia pcmcia_request_configuration 0x2a6a6e0d +drivers/pcmcia/pcmcia pcmcia_request_io 0x0e36176f +drivers/pcmcia/pcmcia pcmcia_request_irq 0xa2025435 +drivers/pcmcia/pcmcia pcmcia_request_window 0xbc9bb4f5 +drivers/pcmcia/pcmcia pcmcia_reset_card 0xeb83a849 +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0xe717d692 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0xb994050d +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0x5fa268c6 +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x87afd771 +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0x4874af57 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0x66960399 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0xc81c1154 +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0xf6cc48e1 +drivers/pcmcia/pcmcia_core pccard_reset_card 0xbcd22074 +drivers/pcmcia/pcmcia_core pccard_static_ops 0x08e15e46 +drivers/pcmcia/pcmcia_core pccard_validate_cis 0x9e3e3f20 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0x839f2b9d +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0x69c2f309 +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0xaf6f7e86 +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0x5a3ef03e +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0x934defc9 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0x278bfab0 +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x50f64851 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0x6c4d4094 +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0xceeb7714 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xe4b42c98 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0x1c617556 +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0x4318a79e +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x6bf27e54 +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0xd87f8d62 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0xc4144cb3 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0x09464267 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0xb533d105 +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0xff8ff075 +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0xdae848e0 +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0xd0953530 +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0xe7d8b8ed +drivers/pcmcia/pcmcia_core release_cis_mem 0xa48f23b9 +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0xb3a9a4f2 +drivers/scsi/libata __sata_phy_reset 0xe54d0d86 +drivers/scsi/libata ata_acpi_bus_register 0x4eb7c257 +drivers/scsi/libata ata_acpi_exec_tfs 0xd437dd47 +drivers/scsi/libata ata_acpi_get_timing 0x47dad9d3 +drivers/scsi/libata ata_acpi_push_id 0xa4db454a +drivers/scsi/libata ata_acpi_push_timing 0x0cfd3322 +drivers/scsi/libata ata_altstatus 0x641d230c +drivers/scsi/libata ata_bmdma_irq_clear 0xd2e32d75 +drivers/scsi/libata ata_bmdma_setup 0x0d0fda90 +drivers/scsi/libata ata_bmdma_start 0x015b8c98 +drivers/scsi/libata ata_bmdma_status 0xd7ae95c2 +drivers/scsi/libata ata_bmdma_stop 0x3fd8f9e9 +drivers/scsi/libata ata_bus_probe 0xd755fe75 +drivers/scsi/libata ata_bus_reset 0xbf7ec01b +drivers/scsi/libata ata_check_status 0xc8f0238c +drivers/scsi/libata ata_dev_classify 0xee64669b +drivers/scsi/libata ata_dev_config 0x23a862e0 +drivers/scsi/libata ata_dev_id_string 0x813edb38 +drivers/scsi/libata ata_device_add 0x935a926d +drivers/scsi/libata ata_device_resume 0x99f872cf +drivers/scsi/libata ata_device_shutdown 0xc7386f23 +drivers/scsi/libata ata_device_suspend 0x2b37b7ee +drivers/scsi/libata ata_eng_timeout 0x795d4f09 +drivers/scsi/libata ata_exec_command 0x1a74b671 +drivers/scsi/libata ata_host_intr 0xa4adab56 +drivers/scsi/libata ata_host_set_remove 0xac41519c +drivers/scsi/libata ata_host_stop 0x804df178 +drivers/scsi/libata ata_hotplug_plug 0xaf300197 +drivers/scsi/libata ata_hotplug_unplug 0x828b70b5 +drivers/scsi/libata ata_interrupt 0x1cf5f836 +drivers/scsi/libata ata_noop_dev_select 0xcb20281f +drivers/scsi/libata ata_pci_device_resume 0xec586f71 +drivers/scsi/libata ata_pci_device_suspend 0x34c054fc +drivers/scsi/libata ata_pci_host_stop 0x906f8598 +drivers/scsi/libata ata_pci_init_native_mode 0x9c0b75aa +drivers/scsi/libata ata_pci_init_one 0x856392b4 +drivers/scsi/libata ata_pci_remove_one 0x6a20d93b +drivers/scsi/libata ata_port_disable 0x4673c34c +drivers/scsi/libata ata_port_probe 0xbf407a11 +drivers/scsi/libata ata_port_start 0x4294d292 +drivers/scsi/libata ata_port_stop 0x4baf6b00 +drivers/scsi/libata ata_qc_complete 0x08c68d13 +drivers/scsi/libata ata_qc_issue_prot 0xbf9fd47d +drivers/scsi/libata ata_qc_prep 0x08612117 +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0xe1a45c73 +drivers/scsi/libata ata_scsi_device_shutdown 0xfcac206a +drivers/scsi/libata ata_scsi_device_suspend 0x8d63ace5 +drivers/scsi/libata ata_scsi_error 0x8a390a9e +drivers/scsi/libata ata_scsi_ioctl 0x33f2cc57 +drivers/scsi/libata ata_scsi_queuecmd 0x1b53d1c9 +drivers/scsi/libata ata_scsi_release 0xbddf434a +drivers/scsi/libata ata_scsi_simulate 0x1ba6815a +drivers/scsi/libata ata_scsi_slave_config 0x627161c1 +drivers/scsi/libata ata_sg_init 0xfac9c64e +drivers/scsi/libata ata_sg_init_one 0xe3a61d0b +drivers/scsi/libata ata_std_bios_param 0x3aa1f4e4 +drivers/scsi/libata ata_std_dev_select 0xa0117276 +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0xd25f9a2e +drivers/scsi/libata ata_tf_load 0xe67cf1af +drivers/scsi/libata ata_tf_read 0x31e90724 +drivers/scsi/libata ata_tf_to_fis 0x97bb9d3f +drivers/scsi/libata ata_timing_compute 0x08dc7e4c +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata do_drive_get_GTF 0x36909a5f +drivers/scsi/libata do_drive_set_taskfiles 0xd63218c6 +drivers/scsi/libata pci_test_config_bits 0x7e298270 +drivers/scsi/libata sata_phy_reset 0x71505f9e +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x50238de5 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0xd38ea5dc +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x83dd3fbe +drivers/scsi/qlogicfas408 qlogicfas408_abort 0xc354a865 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0x0ec1fbce +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0xbd5ce992 +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0xb58dcf15 +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x6a43a093 +drivers/scsi/qlogicfas408 qlogicfas408_info 0x0b15dec0 +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0xdbef4c63 +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0x384536a9 +drivers/scsi/raid_class raid_class_release 0x884e44ae +drivers/scsi/raid_class raid_component_add 0xf1644629 +drivers/scsi/sas/sas_class sas_register_ha 0x8e0f7aca +drivers/scsi/sas/sas_class sas_unregister_ha 0x8c937362 +drivers/scsi/scsi_transport_fc fc_attach_transport 0x1e70186b +drivers/scsi/scsi_transport_fc fc_release_transport 0xe3fe0d61 +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x8ac7863e +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0x4b7c1f6c +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x98eca66f +drivers/scsi/scsi_transport_fc fc_remove_host 0xc87bc9f4 +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0x6a14647a +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0x8677ed8d +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x200e54d7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x22696594 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x4f8c4bfc +drivers/scsi/scsi_transport_sas sas_attach_transport 0x1b1bba38 +drivers/scsi/scsi_transport_sas sas_phy_add 0x40b2eb6d +drivers/scsi/scsi_transport_sas sas_phy_alloc 0xa6bd5944 +drivers/scsi/scsi_transport_sas sas_phy_delete 0x77e1bf18 +drivers/scsi/scsi_transport_sas sas_phy_free 0x6e157f85 +drivers/scsi/scsi_transport_sas sas_release_transport 0x973c60d6 +drivers/scsi/scsi_transport_sas sas_remove_host 0x40ce95f7 +drivers/scsi/scsi_transport_sas sas_rphy_add 0xc8505966 +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x9c4710a4 +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x8b544eb8 +drivers/scsi/scsi_transport_sas sas_rphy_free 0x603797af +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0x30d2af0d +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0xa216156a +drivers/scsi/scsi_transport_spi spi_attach_transport 0x96f393c6 +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0x59febe91 +drivers/scsi/scsi_transport_spi spi_dv_device 0x9a517552 +drivers/scsi/scsi_transport_spi spi_release_transport 0xdcefd28c +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0x1d876546 +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x1b9679c9 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0xf7714635 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x6fc708f6 +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0x08c8f7f0 +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0x5addf94b +drivers/telephony/ixj ixj_pcmcia_probe 0x63dc93c8 +drivers/telephony/phonedev phone_register_device 0x5a025986 +drivers/telephony/phonedev phone_unregister_device 0x66b5ecfe +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x32a14648 +drivers/usb/core/usbcore usb_alloc_dev 0xbc630db4 +drivers/usb/core/usbcore usb_alloc_urb 0x88b491f5 +drivers/usb/core/usbcore usb_altnum_to_altsetting 0x244cb5b7 +drivers/usb/core/usbcore usb_buffer_alloc 0x6f840db5 +drivers/usb/core/usbcore usb_buffer_free 0x27467bfa +drivers/usb/core/usbcore usb_buffer_map_sg 0xbf231b46 +drivers/usb/core/usbcore usb_buffer_unmap_sg 0x7d2a5a36 +drivers/usb/core/usbcore usb_bulk_msg 0x287d226e +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0x2ec67843 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0x697b9658 +drivers/usb/core/usbcore usb_claim_bandwidth 0x4b97be0e +drivers/usb/core/usbcore usb_clear_halt 0x244cf624 +drivers/usb/core/usbcore usb_control_msg 0x910c6e45 +drivers/usb/core/usbcore usb_create_hcd 0x9ac86df6 +drivers/usb/core/usbcore usb_deregister 0xeba5fae3 +drivers/usb/core/usbcore usb_deregister_dev 0x1d3b00fa +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0xdaf6e67f +drivers/usb/core/usbcore usb_driver_claim_interface 0xb2d07dea +drivers/usb/core/usbcore usb_driver_release_interface 0xc92343b5 +drivers/usb/core/usbcore usb_find_device 0x89860d5c +drivers/usb/core/usbcore usb_find_interface 0xc6c9234e +drivers/usb/core/usbcore usb_free_urb 0x115ddb60 +drivers/usb/core/usbcore usb_get_current_frame_number 0xabaea177 +drivers/usb/core/usbcore usb_get_descriptor 0x8f83e54c +drivers/usb/core/usbcore usb_get_dev 0xa2a5ed76 +drivers/usb/core/usbcore usb_get_intf 0x394ed6fc +drivers/usb/core/usbcore usb_get_status 0x9e0f4b5f +drivers/usb/core/usbcore usb_get_string 0x11eb6850 +drivers/usb/core/usbcore usb_get_urb 0x98090304 +drivers/usb/core/usbcore usb_hc_died 0xa1d61ab6 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0x2ddbd064 +drivers/usb/core/usbcore usb_hcd_pci_probe 0xc32ba814 +drivers/usb/core/usbcore usb_hcd_pci_remove 0x428264f3 +drivers/usb/core/usbcore usb_hcd_pci_resume 0x2f7fc7f2 +drivers/usb/core/usbcore usb_hcd_pci_suspend 0x39eb6347 +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0xcdca9154 +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0x4b3426c1 +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0xadae84c7 +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0xf6799eef +drivers/usb/core/usbcore usb_ifnum_to_if 0x3054a579 +drivers/usb/core/usbcore usb_init_urb 0xa280a05b +drivers/usb/core/usbcore usb_kill_urb 0xf475f176 +drivers/usb/core/usbcore usb_lock_device 0xfc1fdadc +drivers/usb/core/usbcore usb_lock_device_for_reset 0x2e26f027 +drivers/usb/core/usbcore usb_match_id 0xd4ef6955 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0xd5d6c7a0 +drivers/usb/core/usbcore usb_put_dev 0xee4cc59f +drivers/usb/core/usbcore usb_put_hcd 0x3e8c26e1 +drivers/usb/core/usbcore usb_put_intf 0xd357aa58 +drivers/usb/core/usbcore usb_register 0xf00060ef +drivers/usb/core/usbcore usb_register_dev 0x1d3e8bc3 +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x1287dfc1 +drivers/usb/core/usbcore usb_remove_hcd 0xe4e3a26c +drivers/usb/core/usbcore usb_reset_configuration 0x5a0f5c00 +drivers/usb/core/usbcore usb_reset_device 0x706630e4 +drivers/usb/core/usbcore usb_set_device_state 0x61f6608e +drivers/usb/core/usbcore usb_set_interface 0x3063026d +drivers/usb/core/usbcore usb_sg_cancel 0x84352d28 +drivers/usb/core/usbcore usb_sg_init 0xfcb56ebd +drivers/usb/core/usbcore usb_sg_wait 0xcaf5fe73 +drivers/usb/core/usbcore usb_string 0xc408a1cd +drivers/usb/core/usbcore usb_submit_urb 0x1435f9c4 +drivers/usb/core/usbcore usb_trylock_device 0x4921de58 +drivers/usb/core/usbcore usb_unlink_urb 0xbe8d9924 +drivers/usb/core/usbcore usb_unlock_device 0x70218642 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/host/sl811-hcd sl811h_driver 0x04c426f1 +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0xb8cb0e94 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0xc67b2af3 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0xf6594546 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0xa7403276 +drivers/usb/media/usbvideo RingQueue_Dequeue 0xd5112b23 +drivers/usb/media/usbvideo RingQueue_Enqueue 0x23ecbae1 +drivers/usb/media/usbvideo RingQueue_Flush 0xf4dcb853 +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0x5e1d70f4 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0x2b499883 +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x576c525d +drivers/usb/media/usbvideo usbvideo_Deregister 0x6574021f +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0x99707a0e +drivers/usb/media/usbvideo usbvideo_TestPattern 0x7d3a03c4 +drivers/usb/media/usbvideo usbvideo_register 0x8a859d0f +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0xe8febec4 +drivers/usb/media/w9968cf w9968cf_vppmod_register 0x7241b0a2 +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0x53ae7542 +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0xc2030a87 +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0x398a8eb4 +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0x2da1216b +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0x28a713ff +drivers/usb/net/usbnet usbnet_defer_kevent 0x48c2f85c +drivers/usb/net/usbnet usbnet_disconnect 0xc63ef070 +drivers/usb/net/usbnet usbnet_get_drvinfo 0x720ca184 +drivers/usb/net/usbnet usbnet_get_endpoints 0x97e19922 +drivers/usb/net/usbnet usbnet_get_msglevel 0x16ae35b9 +drivers/usb/net/usbnet usbnet_probe 0xa4fc4ba4 +drivers/usb/net/usbnet usbnet_resume 0xc50998aa +drivers/usb/net/usbnet usbnet_set_msglevel 0x1f8c6538 +drivers/usb/net/usbnet usbnet_skb_return 0x3d35eb87 +drivers/usb/net/usbnet usbnet_suspend 0xc73dd9f5 +drivers/usb/serial/usbserial ezusb_set_reset 0xc748eabc +drivers/usb/serial/usbserial ezusb_writememory 0xd84a1b10 +drivers/usb/serial/usbserial usb_serial_deregister 0x3c4510a9 +drivers/usb/serial/usbserial usb_serial_disconnect 0xf31d4101 +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x1cb9381b +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0xf61ae369 +drivers/usb/serial/usbserial usb_serial_register 0xcc34c794 +drivers/video/backlight/backlight backlight_device_register 0x3493f32f +drivers/video/backlight/backlight backlight_device_unregister 0x130b9bbe +drivers/video/backlight/lcd lcd_device_register 0x1ff4bd2b +drivers/video/backlight/lcd lcd_device_unregister 0xfbf5f50a +drivers/video/console/bitblit fbcon_set_bitops 0x6dea825b +drivers/video/console/font find_font 0xf7584a9c +drivers/video/console/font get_default_font 0x093e3659 +drivers/video/console/softcursor soft_cursor 0x4e76150e +drivers/video/console/tileblit fbcon_set_tileops 0x60e5e3bc +drivers/video/cyber2000fb cyber2000fb_attach 0x536743b6 +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x046b3650 +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0xf58da538 +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0xca589508 +drivers/video/macmodes mac_find_mode 0x3822cec5 +drivers/video/macmodes mac_map_monitor_sense 0xe2304303 +drivers/video/macmodes mac_var_to_vmode 0x00907cd5 +drivers/video/macmodes mac_vmode_to_var 0x08ed0b62 +drivers/video/matrox/g450_pll g450_mnp2f 0xe2ea12fc +drivers/video/matrox/g450_pll matroxfb_g450_setclk 0xcb0a026d +drivers/video/matrox/g450_pll matroxfb_g450_setpll_cond 0x6d76a154 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_init 0x823e1c7e +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_restore 0x4a4a862f +drivers/video/matrox/matroxfb_DAC1064 matrox_G100 0x3ad58dc6 +drivers/video/matrox/matroxfb_DAC1064 matrox_mystique 0x5aff1056 +drivers/video/matrox/matroxfb_Ti3026 matrox_millennium 0xa28a9e08 +drivers/video/matrox/matroxfb_accel matrox_cfbX_init 0x41c74a64 +drivers/video/matrox/matroxfb_base matroxfb_enable_irq 0xd0ed3100 +drivers/video/matrox/matroxfb_base matroxfb_register_driver 0xf0a1dd5f +drivers/video/matrox/matroxfb_base matroxfb_unregister_driver 0x2df4ea9b +drivers/video/matrox/matroxfb_base matroxfb_wait_for_sync 0x2aef8034 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_connect 0x1ecf4b37 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_shutdown 0xf8892df4 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_in 0x968bbf16 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_out 0xd6c9ffe7 +drivers/video/matrox/matroxfb_misc matroxfb_PLL_calcclock 0x25cf8049 +drivers/video/matrox/matroxfb_misc matroxfb_read_pins 0x8fac674d +drivers/video/matrox/matroxfb_misc matroxfb_var2my 0xabd8e427 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWinit 0xf6833cd2 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWrestore 0x8b85a55b +drivers/video/sis/sisfb sis_free 0xfe963115 +drivers/video/sis/sisfb sis_free_new 0x53424c39 +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0x3da584bd +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0xe73d2dfd +drivers/w1/ds9490r ds_put_device 0xbfddc8cb +drivers/w1/ds9490r ds_read_bit 0x23852d4c +drivers/w1/ds9490r ds_read_block 0x770fd3ca +drivers/w1/ds9490r ds_read_byte 0xe31836df +drivers/w1/ds9490r ds_reset 0xd20df513 +drivers/w1/ds9490r ds_touch_bit 0x06680f9b +drivers/w1/ds9490r ds_write_bit 0x9f1e9ca1 +drivers/w1/ds9490r ds_write_block 0xb54eb6d4 +drivers/w1/ds9490r ds_write_byte 0xa2b0f0e4 +drivers/w1/wire w1_add_master_device 0x65e2815c +drivers/w1/wire w1_calc_crc8 0x63757e92 +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xdb5cf91c +drivers/w1/wire w1_family_put 0xd304807a +drivers/w1/wire w1_family_registered 0x2854d4f0 +drivers/w1/wire w1_read_8 0x4e9d2ec5 +drivers/w1/wire w1_read_block 0x93c9a6b2 +drivers/w1/wire w1_register_family 0xc3df11e5 +drivers/w1/wire w1_remove_master_device 0xf13283f7 +drivers/w1/wire w1_reset_bus 0x0ed75215 +drivers/w1/wire w1_reset_select_slave 0x0bebdd3e +drivers/w1/wire w1_search_devices 0x44719a50 +drivers/w1/wire w1_touch_bit 0x22441c05 +drivers/w1/wire w1_unregister_family 0x79444085 +drivers/w1/wire w1_write_8 0xd0b0ed72 +drivers/w1/wire w1_write_block 0x410386ac +fs/configfs/configfs config_group_init 0x400f15ea +fs/configfs/configfs config_group_init_type_name 0x045d397a +fs/configfs/configfs config_item_get 0x5be73321 +fs/configfs/configfs config_item_init 0xe88ef404 +fs/configfs/configfs config_item_init_type_name 0x8b5c7f3a +fs/configfs/configfs config_item_put 0x5b55ed63 +fs/configfs/configfs config_item_set_name 0x47d05708 +fs/configfs/configfs configfs_register_subsystem 0x80355cb6 +fs/configfs/configfs configfs_unregister_subsystem 0x7abb686e +fs/exportfs/exportfs export_op_default 0x93efa581 +fs/exportfs/exportfs find_exported_dentry 0x70a27442 +fs/fat/fat fat_add_entries 0x27b63028 +fs/fat/fat fat_alloc_new_dir 0x351a08f8 +fs/fat/fat fat_attach 0xdfa7febb +fs/fat/fat fat_build_inode 0xe9604f56 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0x3880d9f6 +fs/fat/fat fat_dir_empty 0x40460b55 +fs/fat/fat fat_fill_super 0x43dcb1c2 +fs/fat/fat fat_free_clusters 0x87505022 +fs/fat/fat fat_fs_panic 0x95954612 +fs/fat/fat fat_get_dotdot_entry 0x405ab65e +fs/fat/fat fat_notify_change 0x4ad0436e +fs/fat/fat fat_remove_entries 0xe31fcab9 +fs/fat/fat fat_scan 0x47b8ffb6 +fs/fat/fat fat_search_long 0x81a4dc98 +fs/fat/fat fat_sync_bhs 0x3174fc19 +fs/fat/fat fat_sync_inode 0x4da5ddf3 +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0xb804d440 +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0x0a245733 +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0xef2a705a +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0xd10f79ac +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0x00c9d44e +fs/jbd/jbd journal_abort 0x82651293 +fs/jbd/jbd journal_ack_err 0xea9edbdd +fs/jbd/jbd journal_blocks_per_page 0x73d164e7 +fs/jbd/jbd journal_check_available_features 0x57f38dc3 +fs/jbd/jbd journal_check_used_features 0x64c75e20 +fs/jbd/jbd journal_clear_err 0xde5383de +fs/jbd/jbd journal_create 0xdfabfe99 +fs/jbd/jbd journal_destroy 0x2b11edd8 +fs/jbd/jbd journal_dirty_data 0xa6033c58 +fs/jbd/jbd journal_dirty_metadata 0x992f475d +fs/jbd/jbd journal_errno 0x20441029 +fs/jbd/jbd journal_extend 0xaf696132 +fs/jbd/jbd journal_flush 0x70266a97 +fs/jbd/jbd journal_force_commit 0x7bfafa1e +fs/jbd/jbd journal_force_commit_nested 0x48b8e32d +fs/jbd/jbd journal_forget 0x829ef707 +fs/jbd/jbd journal_get_create_access 0xad3a0e08 +fs/jbd/jbd journal_get_undo_access 0x90e8d6ce +fs/jbd/jbd journal_get_write_access 0xfd5ac7d0 +fs/jbd/jbd journal_init_dev 0xc60279fb +fs/jbd/jbd journal_init_inode 0xed082282 +fs/jbd/jbd journal_invalidatepage 0xf9f7a6c9 +fs/jbd/jbd journal_load 0x46523560 +fs/jbd/jbd journal_lock_updates 0x18ed5ee8 +fs/jbd/jbd journal_release_buffer 0x05a68e2d +fs/jbd/jbd journal_restart 0x78251f14 +fs/jbd/jbd journal_revoke 0x254bf9a4 +fs/jbd/jbd journal_set_features 0xb204a810 +fs/jbd/jbd journal_start 0xe9817186 +fs/jbd/jbd journal_start_commit 0x26e3b8a6 +fs/jbd/jbd journal_stop 0xf4fa7494 +fs/jbd/jbd journal_try_to_free_buffers 0xa66d0ef4 +fs/jbd/jbd journal_unlock_updates 0x4d2c9910 +fs/jbd/jbd journal_update_format 0xadf2f7ad +fs/jbd/jbd journal_update_superblock 0x44ef78db +fs/jbd/jbd journal_wipe 0xc8d9f7be +fs/jbd/jbd log_wait_commit 0x4426e08e +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0xa42621ed +fs/lockd/lockd nlmsvc_ops 0x449bcee9 +fs/nfsd/nfsd nfs4_acl_add_ace 0xc9a24970 +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0xef013964 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0xd3452119 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xdae05306 +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x81a17396 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0xf56c2017 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0xb35a8de5 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xc4d99852 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0x45a74218 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0xa60232ab +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0x1043b1fb +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x7cdb58bd +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0xf982e6db +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0xfa83d357 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0x71bf5d78 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0x006c0960 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x82de34a4 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0x016dbbb0 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xb6ebf62a +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0x9d824eaa +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0xde787374 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0x1aac7722 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0x4fdac306 +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0xfb05676e +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0x3488cef6 +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0x558db037 +fs/relayfs/relayfs relay_buf_full 0x37e52c45 +fs/relayfs/relayfs relay_close 0x9fe629b3 +fs/relayfs/relayfs relay_flush 0x92e96138 +fs/relayfs/relayfs relay_open 0x28f67481 +fs/relayfs/relayfs relay_reset 0xd76fff9e +fs/relayfs/relayfs relay_subbufs_consumed 0xb4c351d4 +fs/relayfs/relayfs relay_switch_subbuf 0xf0b4f0dc +fs/relayfs/relayfs relayfs_create_dir 0x82d058db +fs/relayfs/relayfs relayfs_file_operations 0x4c92afdb +fs/relayfs/relayfs relayfs_remove_dir 0x9c4b61ad +lib/crc-ccitt crc_ccitt 0x7e821ba1 +lib/crc-ccitt crc_ccitt_table 0x7f03b6a9 +lib/crc16 crc16 0x84d4c8cc +lib/crc16 crc16_table 0x146289b7 +lib/libcrc32c crc32c_be 0xc2904b41 +lib/libcrc32c crc32c_le 0x90ec507c +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0x5dc12f83 +net/appletalk/appletalk alloc_ltalkdev 0x01ba87fc +net/appletalk/appletalk atalk_find_dev_addr 0xebcaf0c0 +net/appletalk/appletalk atrtr_get_dev 0x92353efd +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0xd39fa90e +net/ax25/ax25 ax25_findbyuid 0xf5550f68 +net/ax25/ax25 ax25_hard_header 0x88734b6c +net/ax25/ax25 ax25_linkfail_register 0x5b185262 +net/ax25/ax25 ax25_linkfail_release 0x0850ca23 +net/ax25/ax25 ax25_listen_register 0xff7d1e7c +net/ax25/ax25 ax25_listen_release 0x3ea6c7de +net/ax25/ax25 ax25_protocol_register 0xeba8edfd +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0x37e94bd7 +net/ax25/ax25 ax25_send_frame 0xb3230582 +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0x53269e6a +net/bluetooth/bluetooth bt_accept_enqueue 0xd259d342 +net/bluetooth/bluetooth bt_accept_unlink 0x472b1922 +net/bluetooth/bluetooth bt_class 0x081fae99 +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0x421e4859 +net/bluetooth/bluetooth bt_sock_poll 0x7af36d82 +net/bluetooth/bluetooth bt_sock_recvmsg 0x3d66efd2 +net/bluetooth/bluetooth bt_sock_register 0xc731cc7d +net/bluetooth/bluetooth bt_sock_unlink 0x94e527ff +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0xa8504944 +net/bluetooth/bluetooth hci_alloc_dev 0x29e64e55 +net/bluetooth/bluetooth hci_conn_auth 0x338af864 +net/bluetooth/bluetooth hci_conn_change_link_key 0x3635d82b +net/bluetooth/bluetooth hci_conn_encrypt 0x4b96fa59 +net/bluetooth/bluetooth hci_conn_switch_role 0x3a1dbe18 +net/bluetooth/bluetooth hci_connect 0x2183196e +net/bluetooth/bluetooth hci_free_dev 0xe48e084f +net/bluetooth/bluetooth hci_get_route 0x14777d3a +net/bluetooth/bluetooth hci_register_cb 0xde93d884 +net/bluetooth/bluetooth hci_register_dev 0x72d8d3af +net/bluetooth/bluetooth hci_register_proto 0xb596aa18 +net/bluetooth/bluetooth hci_resume_dev 0x22c0bc7f +net/bluetooth/bluetooth hci_send_acl 0xac6d0f47 +net/bluetooth/bluetooth hci_send_sco 0x0cff3180 +net/bluetooth/bluetooth hci_suspend_dev 0xb1cac090 +net/bluetooth/bluetooth hci_unregister_cb 0x23476a6d +net/bluetooth/bluetooth hci_unregister_dev 0x121b972d +net/bluetooth/bluetooth hci_unregister_proto 0xe2f4536e +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0x32b4ca2e +net/bridge/netfilter/ebtables ebt_do_table 0x3b329200 +net/bridge/netfilter/ebtables ebt_register_match 0x2448079c +net/bridge/netfilter/ebtables ebt_register_table 0x3bbab4a2 +net/bridge/netfilter/ebtables ebt_register_target 0xa0e23d8a +net/bridge/netfilter/ebtables ebt_register_watcher 0x03970169 +net/bridge/netfilter/ebtables ebt_unregister_match 0x06281c4f +net/bridge/netfilter/ebtables ebt_unregister_table 0xee7b4d6c +net/bridge/netfilter/ebtables ebt_unregister_target 0xdd977f49 +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x7e879de1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0x87634e95 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc83c96e5 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x2319ff67 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x864c046f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0xa2665cc8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x884c6ee3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0x180a9321 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0xa74eb8d4 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x3b3a928a +net/dccp/dccp ccid_exit 0x849c8826 +net/dccp/dccp ccid_init 0x8442ab4e +net/dccp/dccp ccid_register 0xbc09436a +net/dccp/dccp ccid_unregister 0x7fc8dd10 +net/dccp/dccp dccp_hashinfo 0xc865e547 +net/dccp/dccp dccp_insert_option 0xb426aa1f +net/dccp/dccp dccp_insert_option_elapsed_time 0x67fd6972 +net/dccp/dccp dccp_insert_option_timestamp 0x88885ebd +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0x5c67de58 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0x4878f4bb +net/ieee80211/ieee80211 alloc_ieee80211 0xc89416ff +net/ieee80211/ieee80211 escape_essid 0xb731e545 +net/ieee80211/ieee80211 free_ieee80211 0xc505d968 +net/ieee80211/ieee80211 ieee80211_channel_to_index 0x1a890ec9 +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0xc2d147b3 +net/ieee80211/ieee80211 ieee80211_get_channel 0xa82f4a22 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0x400d6b58 +net/ieee80211/ieee80211 ieee80211_get_geo 0x6b9a249a +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0xf7f441ed +net/ieee80211/ieee80211 ieee80211_rx 0xbefc99eb +net/ieee80211/ieee80211 ieee80211_rx_mgt 0xb121c429 +net/ieee80211/ieee80211 ieee80211_set_geo 0x02366cde +net/ieee80211/ieee80211 ieee80211_tx_frame 0xc425aede +net/ieee80211/ieee80211 ieee80211_txb_free 0x70cf7552 +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0xb4efc1a9 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0xe1444921 +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x119eb6c5 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0xfaff9a20 +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0x57a60ac8 +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x743cc4de +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x7ff59db5 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0xc0c6d295 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0xd58e957c +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0x236d7cd3 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x37ee5218 +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0xe7a86ee4 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x48625f52 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0x5f8555c0 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0xaab73786 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x91449903 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0xc199b1ae +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0x826dadf3 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0xbe4dc622 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0x2239f1b0 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0xee1aa3e4 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0x50eae894 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0xa7fb0b12 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0xbbc25a04 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x5b1c2db8 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x6636e4f1 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0xf120b69c +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x9dad1317 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x81944201 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0xb855e6d9 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0xdbe0c514 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0x72b6bf98 +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x355639a5 +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x08b26537 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0x9cefb520 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0x9dfa48a3 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0xd1501039 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0xe9d07b37 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0xf08a03fa +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0x4535aca1 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x3817ff29 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0x7bacd202 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0x052825e1 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x938369eb +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x1eaaa8a4 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x627c9364 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x257e8be7 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0x5ce12bd4 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x83f2bea3 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0x9a551f36 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0x55ada6a3 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0x1482d739 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0xa3ec9ed2 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x4e021800 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0x0cbdc860 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0xb5e3e4a0 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x97a0a3f4 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x9172f36c +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0xe99dad41 +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0x512dade3 +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0xeddb26bd +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0x19e57662 +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0xb6919438 +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0xa52ddbbb +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0x35ad4aee +net/ipv4/ipvs/ip_vs register_ip_vs_app 0xf9b07937 +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0x326820a7 +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0x711ab7ff +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0x07123083 +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0x42ca2771 +net/ipv4/netfilter/arp_tables arpt_do_table 0x0e186991 +net/ipv4/netfilter/arp_tables arpt_register_table 0xe450453f +net/ipv4/netfilter/arp_tables arpt_register_target 0x0dcb1470 +net/ipv4/netfilter/arp_tables arpt_unregister_table 0xb13a08eb +net/ipv4/netfilter/arp_tables arpt_unregister_target 0xa5ca73f4 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x6c5e24d1 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x729c3bb6 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0xd9e94d54 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x22625402 +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0x83298793 +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0x3f1625ae +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0xefeb1199 +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0x61fdc109 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0x67fcfebe +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0x68a31e9f +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0xff276a4d +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0xe48eeda4 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0xbcb88488 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0x0fe954bf +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x512a96cb +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0x9dbeaee4 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0x3b2f2489 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0x9b7e5172 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x24aea3d4 +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0xbf6603ec +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x0ccdf993 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0xf28370e1 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x78fae5c9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0xdcf05501 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0x15698fbf +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0xdb229cb2 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x43084b8b +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x95c8d879 +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0xb6174ea9 +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0x8a1fda86 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0xae6ea293 +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0x634de461 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0x632a4d86 +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0x6d5b5cae +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x230a2b97 +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x25e6869e +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0xb1cf5dc2 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0xbe263158 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0x5858a82c +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0xd9256d34 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0x0a570499 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0xa973b983 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x2ae452d0 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0x86d8cb12 +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0x1bcaa13c +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0x94e3c7b8 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0xea1f262f +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0x054413ad +net/ipv4/netfilter/ip_nat ip_nat_packet 0x3b0031a0 +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x37b4afbd +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x0a5f1801 +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x9175fb00 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0xef9dd5c5 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0xd10c81d7 +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0xded7a8ea +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0xd61b8377 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x81205bc9 +net/ipv4/netfilter/ip_tables ipt_do_table 0xfc9abd49 +net/ipv4/netfilter/ip_tables ipt_find_target 0x0e9abdff +net/ipv4/netfilter/ip_tables ipt_register_match 0x56660e32 +net/ipv4/netfilter/ip_tables ipt_register_table 0xa21a7936 +net/ipv4/netfilter/ip_tables ipt_register_target 0x1a6becde +net/ipv4/netfilter/ip_tables ipt_unregister_match 0x679cb5ca +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x669671a4 +net/ipv4/netfilter/ip_tables ipt_unregister_target 0xa8013a22 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0x1efe7d9d +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0x44b03d17 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0xa086377d +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0x9e3b60cf +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x198eb085 +net/ipv6/ipv6 inet6_add_protocol 0x83db818f +net/ipv6/ipv6 inet6_bind 0x1055e559 +net/ipv6/ipv6 inet6_del_protocol 0x7b13b110 +net/ipv6/ipv6 inet6_getname 0x954f9d2c +net/ipv6/ipv6 inet6_ioctl 0x7b3f7dce +net/ipv6/ipv6 inet6_register_protosw 0x89e1ed1c +net/ipv6/ipv6 inet6_release 0xad58f7bb +net/ipv6/ipv6 inet6_unregister_protosw 0xc270cb49 +net/ipv6/ipv6 ip6_route_me_harder 0x91883393 +net/ipv6/ipv6 ip6_route_output 0x38989463 +net/ipv6/ipv6 ip6_xmit 0x2cded149 +net/ipv6/ipv6 ipv6_chk_addr 0x8060bd87 +net/ipv6/ipv6 ipv6_get_saddr 0xc3ebca62 +net/ipv6/ipv6 ipv6_getsockopt 0xb2ae74c3 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0x09faecea +net/ipv6/ipv6 ipv6_setsockopt 0xb741e23b +net/ipv6/ipv6 ndisc_mc_map 0x5162a0ca +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x77e9eb6e +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0xb492aa95 +net/ipv6/ipv6 xfrm6_rcv_spi 0xe5924d9c +net/ipv6/netfilter/ip6_tables ip6t_do_table 0x8df5d49d +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0x80472a0b +net/ipv6/netfilter/ip6_tables ip6t_register_match 0x749fb3ac +net/ipv6/netfilter/ip6_tables ip6t_register_table 0x73a01d7d +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x8e2252d5 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0x245893e4 +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x2c1b296b +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0x40abd6d8 +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0x48031150 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x05511932 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0xc8450cf1 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0xb5474d18 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x16e3457a +net/irda/ircomm/ircomm ircomm_close 0x467861b4 +net/irda/ircomm/ircomm ircomm_connect_request 0x58d8845f +net/irda/ircomm/ircomm ircomm_connect_response 0xcbafe801 +net/irda/ircomm/ircomm ircomm_control_request 0x5e600096 +net/irda/ircomm/ircomm ircomm_data_request 0x684d0317 +net/irda/ircomm/ircomm ircomm_disconnect_request 0xf70d3ddd +net/irda/ircomm/ircomm ircomm_flow_request 0xcbb4d61d +net/irda/ircomm/ircomm ircomm_open 0x1db76f3d +net/irda/irda alloc_irdadev 0x93472131 +net/irda/irda async_unwrap_char 0x0364cc73 +net/irda/irda async_wrap_skb 0x302dfc20 +net/irda/irda hashbin_delete 0x4ba5dc74 +net/irda/irda hashbin_find 0xd3edad11 +net/irda/irda hashbin_get_first 0xa45993f4 +net/irda/irda hashbin_get_next 0x263f5ab4 +net/irda/irda hashbin_insert 0xbde32277 +net/irda/irda hashbin_lock_find 0x5b8b95bb +net/irda/irda hashbin_new 0x982b6b09 +net/irda/irda hashbin_remove 0x9fea5965 +net/irda/irda hashbin_remove_this 0x9694bb4c +net/irda/irda irda_device_dongle_cleanup 0xaaaf6a6e +net/irda/irda irda_device_dongle_init 0xf9a376a4 +net/irda/irda irda_device_register_dongle 0x4fad044a +net/irda/irda irda_device_set_media_busy 0x3007d829 +net/irda/irda irda_device_unregister_dongle 0xca38cbfd +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0x728bfcee +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0x0c79fe0f +net/irda/irda iriap_getvaluebyclass_request 0x44a6318d +net/irda/irda iriap_open 0x2f40ae2a +net/irda/irda irias_add_integer_attrib 0x62c83096 +net/irda/irda irias_add_octseq_attrib 0xe541e2c2 +net/irda/irda irias_add_string_attrib 0xdfaf55d4 +net/irda/irda irias_delete_object 0x4096621c +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x208f39c3 +net/irda/irda irias_find_object 0x1a617b1d +net/irda/irda irias_insert_object 0x5d1487c7 +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0xc10f5acd +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0xa5ef48e5 +net/irda/irda irlap_open 0xa0ac3676 +net/irda/irda irlmp_close_lsap 0x5056dea6 +net/irda/irda irlmp_connect_request 0xe2c054c7 +net/irda/irda irlmp_connect_response 0xa9844214 +net/irda/irda irlmp_data_request 0xf1af6279 +net/irda/irda irlmp_disconnect_request 0xfcf7da0a +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0x7218327f +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0x5bc99f76 +net/irda/irda irttp_connect_request 0x0fb882b6 +net/irda/irda irttp_connect_response 0x6d87bb6c +net/irda/irda irttp_data_request 0x520d8c58 +net/irda/irda irttp_disconnect_request 0x676eb119 +net/irda/irda irttp_dup 0xeb80758a +net/irda/irda irttp_flow_request 0x469b0aba +net/irda/irda irttp_open_tsap 0x6381cb91 +net/irda/irda irttp_udata_request 0x19abdc23 +net/irda/irda proc_irda 0x3e3a2256 +net/netfilter/nfnetlink __nfa_fill 0x7c9d335b +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0x207da1b8 +net/netfilter/nfnetlink nfnetlink_subsys_register 0xf9874c2d +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0x9b8ece5c +net/netfilter/nfnetlink nfnetlink_unicast 0x75ff5c75 +net/rxrpc/rxrpc rxrpc_add_service 0x26675a66 +net/rxrpc/rxrpc rxrpc_call_abort 0x0ff27d5d +net/rxrpc/rxrpc rxrpc_call_read_data 0x12ad5e74 +net/rxrpc/rxrpc rxrpc_call_write_data 0x0a41c69f +net/rxrpc/rxrpc rxrpc_create_call 0x56da3556 +net/rxrpc/rxrpc rxrpc_create_connection 0x79a1889f +net/rxrpc/rxrpc rxrpc_create_transport 0xa1b73ac5 +net/rxrpc/rxrpc rxrpc_del_service 0x8e5c278d +net/rxrpc/rxrpc rxrpc_put_call 0xf4ea5b4b +net/rxrpc/rxrpc rxrpc_put_connection 0xaed7a25a +net/rxrpc/rxrpc rxrpc_put_transport 0xb32ae2a2 +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x38d3dce5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0x482ac5a4 +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xd7673035 +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0xfec8cd36 +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0x9ab57780 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0x3fda792c +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0xb9bb29ad +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0xfcb47dd2 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0x325cdbbc +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0x1e5a081d +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0x7c2e61a8 +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0xe7869e54 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0x3ed78bdc +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0xb7e36013 +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0xfb3bf5eb +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0x7be573d3 +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x856f405e +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x0d9fd9d6 +net/sunrpc/sunrpc auth_domain_find 0x66473d18 +net/sunrpc/sunrpc auth_domain_lookup 0x8753673f +net/sunrpc/sunrpc auth_domain_put 0x0c1f8bcf +net/sunrpc/sunrpc auth_unix_add_addr 0xbb40b9c8 +net/sunrpc/sunrpc auth_unix_forget_old 0x6611c290 +net/sunrpc/sunrpc auth_unix_lookup 0xdea87810 +net/sunrpc/sunrpc cache_check 0x9f606e6e +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0xc80d2827 +net/sunrpc/sunrpc cache_init 0x404d68bb +net/sunrpc/sunrpc cache_purge 0x6d7181bd +net/sunrpc/sunrpc cache_register 0x751a7c9f +net/sunrpc/sunrpc cache_unregister 0xf6c5d94b +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0xd141d8bb +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0x27e0a1d3 +net/sunrpc/sunrpc rpc_bind_new_program 0x74d5b51e +net/sunrpc/sunrpc rpc_call_async 0x5ca2a4d6 +net/sunrpc/sunrpc rpc_call_setup 0x085d3d81 +net/sunrpc/sunrpc rpc_call_sync 0xaa408b1a +net/sunrpc/sunrpc rpc_clnt_sigmask 0xd5764ab6 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0x076372ed +net/sunrpc/sunrpc rpc_clone_client 0x182e2b74 +net/sunrpc/sunrpc rpc_create_client 0x5cf2880a +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0x3c401027 +net/sunrpc/sunrpc rpc_destroy_client 0x36a98f45 +net/sunrpc/sunrpc rpc_execute 0x2efca485 +net/sunrpc/sunrpc rpc_init_task 0x7a60f99c +net/sunrpc/sunrpc rpc_init_wait_queue 0x7ce2f559 +net/sunrpc/sunrpc rpc_killall_tasks 0x79282226 +net/sunrpc/sunrpc rpc_max_payload 0xe17fe0ac +net/sunrpc/sunrpc rpc_mkpipe 0x0a0fe658 +net/sunrpc/sunrpc rpc_new_child 0xa1c453d4 +net/sunrpc/sunrpc rpc_new_client 0x50d38d37 +net/sunrpc/sunrpc rpc_new_task 0x912c9f27 +net/sunrpc/sunrpc rpc_proc_register 0xd33c7d39 +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x552e2c3c +net/sunrpc/sunrpc rpc_release_client 0xa5a3d145 +net/sunrpc/sunrpc rpc_release_task 0xa7ffc31d +net/sunrpc/sunrpc rpc_restart_call 0x5f309231 +net/sunrpc/sunrpc rpc_run_child 0xb876c648 +net/sunrpc/sunrpc rpc_setbufsize 0x601bcf3a +net/sunrpc/sunrpc rpc_shutdown_client 0x793e4f10 +net/sunrpc/sunrpc rpc_sleep_on 0xcc9d9120 +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0xe6176378 +net/sunrpc/sunrpc rpc_wake_up_next 0xc3768387 +net/sunrpc/sunrpc rpc_wake_up_status 0xb3326cbd +net/sunrpc/sunrpc rpc_wake_up_task 0x36677efe +net/sunrpc/sunrpc rpcauth_create 0xd5416aec +net/sunrpc/sunrpc rpcauth_free_credcache 0xee68db11 +net/sunrpc/sunrpc rpcauth_init_credcache 0x2e6f34b5 +net/sunrpc/sunrpc rpcauth_lookup_credcache 0xd053cb70 +net/sunrpc/sunrpc rpcauth_lookupcred 0x4197cdce +net/sunrpc/sunrpc rpcauth_register 0xede14c3e +net/sunrpc/sunrpc rpcauth_unregister 0xe906915b +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x68c08d10 +net/sunrpc/sunrpc svc_auth_unregister 0x5a45ba31 +net/sunrpc/sunrpc svc_authenticate 0xd28dc391 +net/sunrpc/sunrpc svc_create 0x56b2306b +net/sunrpc/sunrpc svc_create_thread 0xe0056177 +net/sunrpc/sunrpc svc_destroy 0xf51184c8 +net/sunrpc/sunrpc svc_drop 0xa8e73bff +net/sunrpc/sunrpc svc_exit_thread 0x081a9c65 +net/sunrpc/sunrpc svc_makesock 0x7908c0f1 +net/sunrpc/sunrpc svc_proc_register 0xf34112b1 +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0x652e1b9f +net/sunrpc/sunrpc svc_recv 0x200fa075 +net/sunrpc/sunrpc svc_reserve 0xb946218d +net/sunrpc/sunrpc svc_seq_show 0xba4b0690 +net/sunrpc/sunrpc svc_set_client 0xb0e0b8f1 +net/sunrpc/sunrpc svc_wake_up 0xb82ce581 +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x3e482943 +net/sunrpc/sunrpc xdr_buf_from_iov 0x23f7a280 +net/sunrpc/sunrpc xdr_buf_read_netobj 0x728770bb +net/sunrpc/sunrpc xdr_buf_subsegment 0xb885aea3 +net/sunrpc/sunrpc xdr_decode_array2 0xf47480bb +net/sunrpc/sunrpc xdr_decode_netobj 0x1b431c8f +net/sunrpc/sunrpc xdr_decode_string 0xe7e08cbd +net/sunrpc/sunrpc xdr_decode_string_inplace 0xf3692830 +net/sunrpc/sunrpc xdr_decode_word 0x1ff10b41 +net/sunrpc/sunrpc xdr_encode_array2 0x75782128 +net/sunrpc/sunrpc xdr_encode_netobj 0x08366747 +net/sunrpc/sunrpc xdr_encode_opaque 0x7874c50f +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0xd75126a9 +net/sunrpc/sunrpc xdr_encode_pages 0x869c28ee +net/sunrpc/sunrpc xdr_encode_string 0x3d9bb42c +net/sunrpc/sunrpc xdr_encode_word 0x6a19f884 +net/sunrpc/sunrpc xdr_init_decode 0x2cc0a8e7 +net/sunrpc/sunrpc xdr_init_encode 0xd0cd9b48 +net/sunrpc/sunrpc xdr_inline_decode 0x622e9ce6 +net/sunrpc/sunrpc xdr_inline_pages 0xe115e1d8 +net/sunrpc/sunrpc xdr_read_pages 0x29f45e2a +net/sunrpc/sunrpc xdr_reserve_space 0x048bf056 +net/sunrpc/sunrpc xdr_shift_buf 0xb42bf6b0 +net/sunrpc/sunrpc xdr_write_pages 0xa90077f2 +net/sunrpc/sunrpc xprt_create_proto 0xbda829fa +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x38275091 +net/wanrouter/wanrouter register_wan_device 0xea1121ef +net/wanrouter/wanrouter unlock_adapter_irq 0x46d1849f +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0x6a86ff91 +net/wanrouter/wanrouter wanrouter_type_trans 0xaef6ba9b +security/commoncap cap_bprm_apply_creds 0x2f9dc080 +security/commoncap cap_bprm_secureexec 0x4550cdd7 +security/commoncap cap_bprm_set_security 0xacedce24 +security/commoncap cap_capable 0x757e309e +security/commoncap cap_capget 0xe27b62dc +security/commoncap cap_capset_check 0xf21bd88f +security/commoncap cap_capset_set 0x1d46e572 +security/commoncap cap_inode_removexattr 0xe2606fcb +security/commoncap cap_inode_setxattr 0x4d1c3015 +security/commoncap cap_netlink_recv 0xd3045f18 +security/commoncap cap_netlink_send 0x0dbb2101 +security/commoncap cap_ptrace 0xa9aba182 +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x13ea5cf8 +security/commoncap cap_task_reparent_to_init 0x4bd4f47f +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0xa30c3d59 +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0xe2737cfa +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0xa7b3ab00 +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0xdf1ceb1a +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0xd9e3c0e1 +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x6537bf89 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x3069198d +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0xc8702899 +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0xaca5354e +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x0286df8c +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x79d1edfd +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0x5a1363df +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0x8d95237b +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0x56b82710 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0xc8766ad5 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0x79c3b02f +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x12dd9a53 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x8c1e7257 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x5c097adb +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x157d41cf +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0xf73bbce4 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0xabe42868 +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0x92e32534 +sound/core/snd copy_from_user_toio 0x518bb7f8 +sound/core/snd copy_to_user_fromio 0xe243dde3 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0xa9fbf3df +sound/core/snd snd_card_file_add 0x1097012b +sound/core/snd snd_card_file_remove 0x2a1a1080 +sound/core/snd snd_card_free 0x3f1a7be8 +sound/core/snd snd_card_free_in_thread 0xe76d0192 +sound/core/snd snd_card_new 0x02483f0e +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0xaed39adc +sound/core/snd snd_card_register 0x020ea700 +sound/core/snd snd_card_set_generic_dev 0x2a86c2c1 +sound/core/snd snd_card_set_generic_pm_callback 0xe6aa5179 +sound/core/snd snd_card_set_pm_callback 0xed0c1663 +sound/core/snd snd_cards 0xa65e7b83 +sound/core/snd snd_component_add 0xf2dbe86a +sound/core/snd snd_ctl_add 0xeabd5c6a +sound/core/snd snd_ctl_elem_read 0x73846de3 +sound/core/snd snd_ctl_elem_write 0xf6c10407 +sound/core/snd snd_ctl_find_id 0x8ac5632a +sound/core/snd snd_ctl_find_numid 0x4c109738 +sound/core/snd snd_ctl_free_one 0x1dab84b5 +sound/core/snd snd_ctl_new 0xc8d0bd1e +sound/core/snd snd_ctl_new1 0x8855d6ff +sound/core/snd snd_ctl_notify 0xd4b61c5f +sound/core/snd snd_ctl_register_ioctl 0xf1e2e6f2 +sound/core/snd snd_ctl_register_ioctl_compat 0xe742218f +sound/core/snd snd_ctl_remove 0x3e436dc9 +sound/core/snd snd_ctl_remove_id 0x7c9cc86e +sound/core/snd snd_ctl_rename_id 0xbd2c5b4c +sound/core/snd snd_ctl_unregister_ioctl 0x4973319b +sound/core/snd snd_ctl_unregister_ioctl_compat 0xc2f76cfb +sound/core/snd snd_device_free 0x34cf0e0b +sound/core/snd snd_device_new 0x76b3040f +sound/core/snd snd_device_register 0xcaf44542 +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0xfe42d4eb +sound/core/snd snd_info_create_module_entry 0x1fdf91a0 +sound/core/snd snd_info_free_entry 0x42c806fc +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0x4e6a8a27 +sound/core/snd snd_info_unregister 0x75c37633 +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0x7136d43c +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0xbbf95dd3 +sound/core/snd snd_register_device 0x7e8044be +sound/core/snd snd_register_oss_device 0x2d62d47e +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0x021d9e41 +sound/core/snd snd_unregister_device 0xab614957 +sound/core/snd snd_unregister_oss_device 0x2f799789 +sound/core/snd-hwdep snd_hwdep_new 0x5bd1b61f +sound/core/snd-page-alloc snd_dma_alloc_pages 0x8435abba +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0xc653966d +sound/core/snd-page-alloc snd_dma_free_pages 0xb5301bdd +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0x883cad8f +sound/core/snd-page-alloc snd_dma_reserve_buf 0x82bda98b +sound/core/snd-page-alloc snd_free_pages 0x19cc2ce3 +sound/core/snd-page-alloc snd_malloc_pages 0xc6829020 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x0beab9b1 +sound/core/snd-pcm snd_pcm_devices 0x82fcc1f1 +sound/core/snd-pcm snd_pcm_format_big_endian 0x93878ece +sound/core/snd-pcm snd_pcm_format_linear 0x8733f967 +sound/core/snd-pcm snd_pcm_format_little_endian 0x8bbdc311 +sound/core/snd-pcm snd_pcm_format_name 0xedd5b5bd +sound/core/snd-pcm snd_pcm_format_physical_width 0xa8edfa41 +sound/core/snd-pcm snd_pcm_format_set_silence 0xdf124602 +sound/core/snd-pcm snd_pcm_format_signed 0xe2c5f868 +sound/core/snd-pcm snd_pcm_format_silence_64 0xda29bc77 +sound/core/snd-pcm snd_pcm_format_size 0xa2658908 +sound/core/snd-pcm snd_pcm_format_unsigned 0x95a60aa5 +sound/core/snd-pcm snd_pcm_format_width 0x55eb2175 +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0x81df9065 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0x1bc787b8 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0xcab825c2 +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x885ca1ef +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0x52a7ac36 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x1a01df69 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x653d3973 +sound/core/snd-pcm snd_pcm_hw_constraint_step 0x51db4c4f +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0xecb670bb +sound/core/snd-pcm snd_pcm_hw_constraints_init 0xc217a1b9 +sound/core/snd-pcm snd_pcm_hw_param_first 0x51439008 +sound/core/snd-pcm snd_pcm_hw_param_last 0x53242550 +sound/core/snd-pcm snd_pcm_hw_param_mask 0x5f95934f +sound/core/snd-pcm snd_pcm_hw_param_near 0x2593861e +sound/core/snd-pcm snd_pcm_hw_param_set 0xa4157091 +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0x0dd94924 +sound/core/snd-pcm snd_pcm_hw_rule_add 0x4869a1bb +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0xa38a05e8 +sound/core/snd-pcm snd_pcm_kernel_ioctl 0xeb278830 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x89e204c7 +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0xa1abd08c +sound/core/snd-pcm snd_pcm_lib_free_pages 0x46c53fa7 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x0265413e +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x3e3d1c2d +sound/core/snd-pcm snd_pcm_lib_period_bytes 0xd619ce13 +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x1d1172c4 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0xf0255f0a +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0xfa110847 +sound/core/snd-pcm snd_pcm_lib_read 0x979f79ad +sound/core/snd-pcm snd_pcm_lib_readv 0xa8a884ab +sound/core/snd-pcm snd_pcm_lib_write 0xe363453b +sound/core/snd-pcm snd_pcm_lib_writev 0x8d1b51e9 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x5e64472a +sound/core/snd-pcm snd_pcm_link_rwlock 0x34c35a38 +sound/core/snd-pcm snd_pcm_mmap_data 0x9eb9f0a6 +sound/core/snd-pcm snd_pcm_new 0xfbaec59d +sound/core/snd-pcm snd_pcm_new_stream 0x8e7a522b +sound/core/snd-pcm snd_pcm_notify 0x7970272a +sound/core/snd-pcm snd_pcm_open_substream 0x0a85eaf1 +sound/core/snd-pcm snd_pcm_period_elapsed 0x2fece8ae +sound/core/snd-pcm snd_pcm_release_substream 0x52436e67 +sound/core/snd-pcm snd_pcm_set_ops 0x504845a5 +sound/core/snd-pcm snd_pcm_set_sync 0xe44331ba +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0x81a0b0f8 +sound/core/snd-pcm snd_pcm_stop 0x8315724b +sound/core/snd-pcm snd_pcm_suspend 0x07eac66c +sound/core/snd-pcm snd_pcm_suspend_all 0xedba32dd +sound/core/snd-rawmidi snd_rawmidi_drain_input 0x2b6f2003 +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x4bd9dd9c +sound/core/snd-rawmidi snd_rawmidi_drop_output 0x9f25cb76 +sound/core/snd-rawmidi snd_rawmidi_info 0xb6edfd7f +sound/core/snd-rawmidi snd_rawmidi_info_select 0xa7ae9eec +sound/core/snd-rawmidi snd_rawmidi_input_params 0x7fc6cf70 +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x9aefc43d +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0xf4f22113 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0xce98ad27 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0xb3e6cf60 +sound/core/snd-rawmidi snd_rawmidi_new 0x60b2d781 +sound/core/snd-rawmidi snd_rawmidi_output_params 0x9a5d1c6d +sound/core/snd-rawmidi snd_rawmidi_receive 0x702d0c73 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x6af6c1ca +sound/core/snd-rawmidi snd_rawmidi_transmit 0x74bb9394 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x5c642a13 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0xcdf0369a +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0x7ecce1f7 +sound/core/snd-timer snd_timer_close 0x114e31a0 +sound/core/snd-timer snd_timer_continue 0x967dc238 +sound/core/snd-timer snd_timer_global_free 0x9a7c81cd +sound/core/snd-timer snd_timer_global_new 0x2fc2c934 +sound/core/snd-timer snd_timer_global_register 0x51c4aef6 +sound/core/snd-timer snd_timer_global_unregister 0x17c18f35 +sound/core/snd-timer snd_timer_interrupt 0xf194aac4 +sound/core/snd-timer snd_timer_new 0xc9887c04 +sound/core/snd-timer snd_timer_notify 0x4b8877dc +sound/core/snd-timer snd_timer_open 0x19bfe786 +sound/core/snd-timer snd_timer_pause 0x782402cc +sound/core/snd-timer snd_timer_resolution 0x8f85f0d3 +sound/core/snd-timer snd_timer_start 0xd0d9ab7e +sound/core/snd-timer snd_timer_stop 0xb8dbf53f +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0xa9507612 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x614daefa +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0xa3130f0e +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0xd9f765cf +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0x63707c65 +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0x6ef521d1 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0x7a0bc4d7 +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0xd493382e +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0x8a0a6950 +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x76f061cb +sound/drivers/vx/snd-vx-lib snd_vx_create 0xff8d32f7 +sound/drivers/vx/snd-vx-lib snd_vx_delay 0x92c87571 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x9d721956 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x96720e94 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0x0fa398e3 +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x27954d8d +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0x2de973da +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0x59e06f85 +sound/i2c/other/snd-ak4114 snd_ak4114_build 0x1b373d0d +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0x9b60565a +sound/i2c/other/snd-ak4114 snd_ak4114_create 0xec74f1fa +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0x09199654 +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0x793bfa24 +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0x071b3cae +sound/i2c/other/snd-ak4117 snd_ak4117_build 0xd61a00ef +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0x2c07d8a2 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0x6601e6b2 +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x2db923d0 +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x9cebb4b0 +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x3ffd4eab +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0x0d4e2ca0 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0xa1bc9e61 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0x02317d6e +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0x247cd014 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0x03d21fa0 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0x37ae302c +sound/i2c/snd-cs8427 snd_cs8427_create 0x42502163 +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0xceaba15c +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0x20e7aaef +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0x0041f40e +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0x2ad19a64 +sound/i2c/snd-cs8427 snd_cs8427_reset 0xf6e6086f +sound/i2c/snd-i2c snd_i2c_bus_create 0x36fda177 +sound/i2c/snd-i2c snd_i2c_device_create 0x37157b3f +sound/i2c/snd-i2c snd_i2c_device_free 0xcfa8ea9c +sound/i2c/snd-i2c snd_i2c_probeaddr 0xc3741f68 +sound/i2c/snd-i2c snd_i2c_readbytes 0x69d56ac4 +sound/i2c/snd-i2c snd_i2c_sendbytes 0xc8f41d6c +sound/oss/ac97_codec ac97_alloc_codec 0xdbc51868 +sound/oss/ac97_codec ac97_probe_codec 0xa6f0c367 +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0x9e8cb8d8 +sound/oss/ac97_codec ac97_release_codec 0x8f043dec +sound/oss/ac97_codec ac97_restore_state 0x34153f09 +sound/oss/ac97_codec ac97_save_state 0x9dd1e407 +sound/oss/ac97_codec ac97_set_adc_rate 0x584e6464 +sound/oss/ac97_codec ac97_set_dac_rate 0x76bb9060 +sound/oss/ac97_codec ac97_tune_hardware 0x85458b57 +sound/oss/ac97_codec ac97_unregister_driver 0x7542441a +sound/oss/msnd msnd_disable_irq 0x7f21b99e +sound/oss/msnd msnd_enable_irq 0x36cb540d +sound/oss/msnd msnd_fifo_alloc 0x9853d449 +sound/oss/msnd msnd_fifo_free 0x180cefff +sound/oss/msnd msnd_fifo_init 0x68473da1 +sound/oss/msnd msnd_fifo_make_empty 0x679297db +sound/oss/msnd msnd_fifo_read 0xca41668a +sound/oss/msnd msnd_fifo_read_io 0x141fba4d +sound/oss/msnd msnd_fifo_write 0xc8646b7f +sound/oss/msnd msnd_fifo_write_io 0x80504a66 +sound/oss/msnd msnd_init_queue 0x340a3ddf +sound/oss/msnd msnd_register 0xde217de5 +sound/oss/msnd msnd_send_dsp_cmd 0xf444d0a8 +sound/oss/msnd msnd_send_word 0x7bf1de6d +sound/oss/msnd msnd_unregister 0xc06dd6c2 +sound/oss/msnd msnd_upload_host 0xe5c02a67 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0xf2c9165d +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0x985b3a54 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0xac59a5dd +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0x4cb15e81 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0x7172cc64 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x8e5a9acb +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x98c649bb +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0xe3a76ae7 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0xf01cbfca +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0x9755ae24 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0x2228c7cc +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0xabce6e01 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x83928d66 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0xf4eb8861 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0xb065bd3f +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0x4908874d +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0x25e268a2 +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0x8d6601d9 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0x8c9887c0 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x804659a9 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0x8bf9a108 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0xd47642b8 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0xd48f253a +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0xc6dd3284 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0xec4df5a8 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0x1534f80c +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0x48b03a14 +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0x02944463 +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0x00bc185e +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0xdb18c840 +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0xab7c4d08 +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0x3c4ab250 +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0x3ee6e9ce +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x86b0750b +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0xdedc9222 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0xd5bedd58 +sound/pci/hda/snd-hda-codec snd_hda_resume 0x938fb21b +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0x306c19a5 +sound/pci/hda/snd-hda-codec snd_hda_suspend 0x4003d08e +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0xc6e25ffe +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0x205c0d8f +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0x71fb5194 +sound/pci/trident/snd-trident snd_trident_alloc_voice 0xf48f4f38 +sound/pci/trident/snd-trident snd_trident_free_voice 0x90850eae +sound/pci/trident/snd-trident snd_trident_start_voice 0x1505ceb0 +sound/pci/trident/snd-trident snd_trident_stop_voice 0x157bc4d2 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0xfcc209a9 +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0x3bca03a7 +sound/pci/trident/snd-trident snd_trident_synth_free 0x6b389039 +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0xc864814c +sound/synth/emux/snd-emux-synth snd_emux_free 0x80bceb80 +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0xeea20d57 +sound/synth/emux/snd-emux-synth snd_emux_new 0xb037db36 +sound/synth/emux/snd-emux-synth snd_emux_register 0x5c5d985e +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0xdab34c0c +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0xa9429bb2 +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0x5bd5023e +sound/synth/snd-util-mem __snd_util_mem_free 0x2ea4fa17 +sound/synth/snd-util-mem __snd_util_memblk_new 0x5bb43e44 +sound/synth/snd-util-mem snd_util_mem_alloc 0xe047f44f +sound/synth/snd-util-mem snd_util_mem_avail 0x57bf4dfa +sound/synth/snd-util-mem snd_util_mem_free 0x1596fc01 +sound/synth/snd-util-mem snd_util_memhdr_free 0x61f01d2c +sound/synth/snd-util-mem snd_util_memhdr_new 0x1d7d2b1d +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0x686959e6 +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux I_BDEV 0xb8edcbd9 +vmlinux SELECT_DRIVE 0xdb9c2655 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0x07b210fc +vmlinux __alloc_pages 0xfe26cc94 +vmlinux __alloc_percpu 0x55f2580b +vmlinux __alloc_skb 0x61a7b8c0 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0x73c99461 +vmlinux __bio_clone 0x2f327ebf +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0xe9afece2 +vmlinux __bread 0x6feee237 +vmlinux __breadahead 0x3e9eaaef +vmlinux __break_lease 0x7cbe7894 +vmlinux __brelse 0xeae36777 +vmlinux __check_region 0xf1d0cdab +vmlinux __copy_user 0x04d243f5 +vmlinux __cpufreq_driver_target 0xe8dc931c +vmlinux __create_workqueue 0x9d495dd1 +vmlinux __d_path 0x0c9ce9c9 +vmlinux __dev_get_by_index 0x3b9e0126 +vmlinux __dev_get_by_name 0x6f628f0c +vmlinux __dev_remove_pack 0xbd5a108b +vmlinux __divdi3 0xe8679178 +vmlinux __divsi3 0x211331fa +vmlinux __do_clear_user 0x3f6bc633 +vmlinux __down 0xc469bdc1 +vmlinux __down_interruptible 0x4f49ffbd +vmlinux __down_trylock 0x928ab4ba +vmlinux __dst_free 0x43fcfde6 +vmlinux __elv_add_request 0xd61484ad +vmlinux __find_get_block 0x97886ecf +vmlinux __find_next_bit 0x2bc63ecb +vmlinux __find_next_zero_bit 0x664fc2e7 +vmlinux __free_pages 0xbb86c479 +vmlinux __generic_file_aio_read 0x723465ee +vmlinux __generic_unplug_device 0x5412f581 +vmlinux __get_free_pages 0x93fca811 +vmlinux __getblk 0x0eed574e +vmlinux __ide_abort 0x899fb2cd +vmlinux __ide_dma_bad_drive 0x1e29fc46 +vmlinux __ide_dma_check 0xb6b51e2c +vmlinux __ide_dma_end 0x8c7a9ec5 +vmlinux __ide_dma_good_drive 0xc4b551cc +vmlinux __ide_dma_host_off 0x2da9d3f5 +vmlinux __ide_dma_host_on 0x7deecc0c +vmlinux __ide_dma_lostirq 0xf1044cef +vmlinux __ide_dma_off 0xe48dba6a +vmlinux __ide_dma_off_quietly 0x5e85e072 +vmlinux __ide_dma_on 0x55a7d57f +vmlinux __ide_dma_timeout 0xd20da898 +vmlinux __ide_end_request 0x7f23bb21 +vmlinux __ide_error 0xbba6044e +vmlinux __ide_pci_register_driver 0x41f2a907 +vmlinux __inet_lookup_listener 0xc5ff8974 +vmlinux __inet_twsk_hashdance 0x3b9ff6e7 +vmlinux __inet_twsk_kill 0x71e562b0 +vmlinux __init_timer_base 0x2719823e +vmlinux __inode_dir_notify 0x8dd5977f +vmlinux __insert_inode_hash 0xe8b87fa3 +vmlinux __invalidate_device 0xf91c4f1e +vmlinux __ip_route_output_key 0x01967417 +vmlinux __ip_select_ident 0x6f063246 +vmlinux __kfifo_get 0xb5e48e92 +vmlinux __kfifo_put 0x21e05e58 +vmlinux __kfree_skb 0x72a79f71 +vmlinux __kill_fasync 0x09e86adb +vmlinux __kmalloc 0x5a34a45c +vmlinux __lock_buffer 0xcceffbc4 +vmlinux __lock_page 0x6729371d +vmlinux __mark_inode_dirty 0x0b9efc56 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0x881c9dc0 +vmlinux __moddi3 0x903ab395 +vmlinux __modsi3 0x594e1317 +vmlinux __module_put_and_exit 0xd6e888d1 +vmlinux __neigh_event_send 0x5f140a13 +vmlinux __neigh_for_each_release 0x3a9ad2b6 +vmlinux __net_timestamp 0xd0c92027 +vmlinux __netdev_watchdog_up 0x2d88399e +vmlinux __nla_put 0xe4641f06 +vmlinux __nla_reserve 0xf5b3539f +vmlinux __page_cache_release 0xfa5c001e +vmlinux __pagevec_lru_add 0xdf31cadd +vmlinux __pagevec_release 0xcf008787 +vmlinux __pci_register_driver 0x27af4d28 +vmlinux __per_cpu_offset 0xc5844fb8 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0x5adec74d +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0x4ad1b1e8 +vmlinux __scm_destroy 0xe5f89579 +vmlinux __scm_send 0x33361ae2 +vmlinux __scsi_add_device 0xf28f71f2 +vmlinux __scsi_device_lookup 0xdcb0ca7d +vmlinux __scsi_device_lookup_by_target 0xc7c517ff +vmlinux __scsi_iterate_devices 0x4fe96eb2 +vmlinux __scsi_print_command 0xfef96e23 +vmlinux __scsi_print_sense 0x69d38ed9 +vmlinux __secpath_destroy 0x61b8e054 +vmlinux __serio_register_driver 0xe0111917 +vmlinux __serio_register_port 0x97704681 +vmlinux __serio_unregister_port_delayed 0xe5708bf7 +vmlinux __set_page_dirty_buffers 0xc2f5ef8e +vmlinux __set_page_dirty_nobuffers 0x3384b36b +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x85b1bd85 +vmlinux __skb_checksum_complete 0xafa3a36a +vmlinux __skb_linearize 0xc1c5f350 +vmlinux __sn_mmiowb 0x2ce1e27f +vmlinux __strlen_user 0xf1394a2a +vmlinux __strncpy_from_user 0x9a78a84c +vmlinux __strnlen_user 0x00eef49e +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x8ddb1a2b +vmlinux __tasklet_schedule 0xf9c58281 +vmlinux __tcf_em_tree_match 0xc0832d55 +vmlinux __udivdi3 0x32093cc7 +vmlinux __udivsi3 0xfb7d9c45 +vmlinux __umoddi3 0x4a541e2a +vmlinux __umodsi3 0x8320bea8 +vmlinux __up 0xe3337f11 +vmlinux __user_walk 0x9a6d10f7 +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0xd166c042 +vmlinux __wait_on_bit_lock 0xf1e4166e +vmlinux __wait_on_buffer 0x90d6b482 +vmlinux __wake_up 0xfaae85bc +vmlinux __wake_up_bit 0x343da08c +vmlinux __wake_up_sync 0x67dceb56 +vmlinux __xfrm_policy_check 0x74baa0a2 +vmlinux __xfrm_policy_destroy 0x061e501c +vmlinux __xfrm_route_forward 0x3e835417 +vmlinux __xfrm_state_destroy 0xa6bfc8bb +vmlinux _atomic_dec_and_lock 0x91510cbf +vmlinux _ctype 0x8d3894f2 +vmlinux _read_lock 0x0cd7d26b +vmlinux _read_lock_bh 0x6d824298 +vmlinux _read_lock_irq 0x25b4eb5e +vmlinux _read_lock_irqsave 0x3d18763c +vmlinux _read_trylock 0x282b5899 +vmlinux _read_unlock 0xca9694b5 +vmlinux _read_unlock_bh 0x4d6dc3e1 +vmlinux _read_unlock_irq 0x0c4dcd47 +vmlinux _read_unlock_irqrestore 0xb9446042 +vmlinux _spin_lock 0x8adeda8a +vmlinux _spin_lock_bh 0xd9ecbff9 +vmlinux _spin_lock_irq 0x56ca38ff +vmlinux _spin_lock_irqsave 0xfc2501cc +vmlinux _spin_trylock 0x8a0ba840 +vmlinux _spin_trylock_bh 0xae649140 +vmlinux _spin_unlock 0x99ef87e2 +vmlinux _spin_unlock_bh 0xc1e30651 +vmlinux _spin_unlock_irq 0x8edf1c9c +vmlinux _spin_unlock_irqrestore 0x575ea7c4 +vmlinux _write_lock 0x9b089cc2 +vmlinux _write_lock_bh 0xc3bd892e +vmlinux _write_lock_irq 0x0718c22c +vmlinux _write_lock_irqsave 0xe63ce738 +vmlinux _write_trylock 0xde96c72b +vmlinux _write_unlock 0x2437685d +vmlinux _write_unlock_bh 0xf3447fd8 +vmlinux _write_unlock_irq 0x53f66cf3 +vmlinux _write_unlock_irqrestore 0x789394b9 +vmlinux acpi_acquire_global_lock 0xc9f34c1d +vmlinux acpi_bus_add 0xb644134c +vmlinux acpi_bus_generate_event 0x9ef6071c +vmlinux acpi_bus_get_device 0xab839fb3 +vmlinux acpi_bus_get_power 0x7389c9a8 +vmlinux acpi_bus_get_status 0xaef8b2db +vmlinux acpi_bus_receive_event 0x272a109a +vmlinux acpi_bus_register_driver 0x090a543d +vmlinux acpi_bus_set_power 0xcb733bf2 +vmlinux acpi_bus_start 0x8f646e4d +vmlinux acpi_bus_unregister_driver 0xc004931f +vmlinux acpi_clear_event 0x17be68ca +vmlinux acpi_dbg_layer 0xa40ff01b +vmlinux acpi_dbg_level 0xddad7952 +vmlinux acpi_disable_event 0x2177bd71 +vmlinux acpi_ec_read 0xe10b733d +vmlinux acpi_ec_write 0x40deb461 +vmlinux acpi_enable_event 0x44902cff +vmlinux acpi_enable_gpe 0xa8d5b19f +vmlinux acpi_enter_sleep_state 0x0cdccbc8 +vmlinux acpi_enter_sleep_state_s4bios 0x2f97cc23 +vmlinux acpi_evaluate_integer 0x64f0e581 +vmlinux acpi_evaluate_object 0xee7b5bca +vmlinux acpi_evaluate_reference 0x2e34c276 +vmlinux acpi_extract_package 0x0ba654d0 +vmlinux acpi_fadt 0xfb174376 +vmlinux acpi_fadt_is_v1 0x3ec88a19 +vmlinux acpi_get_child 0x2011990a +vmlinux acpi_get_current_resources 0x2ca63452 +vmlinux acpi_get_devices 0x74bdf6d5 +vmlinux acpi_get_firmware_table 0x89d49aa1 +vmlinux acpi_get_handle 0x9975dc22 +vmlinux acpi_get_name 0xa9bc32c1 +vmlinux acpi_get_next_object 0x75871f5e +vmlinux acpi_get_object_info 0xaad70aea +vmlinux acpi_get_parent 0x7d12d76d +vmlinux acpi_get_pci_id 0x5e523a9e +vmlinux acpi_get_pci_rootbridge_handle 0x1f8ec1b3 +vmlinux acpi_get_physical_device 0x7115ed3e +vmlinux acpi_get_pxm 0x0a372247 +vmlinux acpi_get_register 0xd62b16af +vmlinux acpi_get_sleep_type_data 0x130afd75 +vmlinux acpi_get_table 0x007547e5 +vmlinux acpi_get_type 0x42578e80 +vmlinux acpi_install_address_space_handler 0x79fac840 +vmlinux acpi_install_fixed_event_handler 0x3b029f48 +vmlinux acpi_install_gpe_block 0x2091d63e +vmlinux acpi_install_gpe_handler 0x0ec136bc +vmlinux acpi_install_notify_handler 0x170ddf79 +vmlinux acpi_os_create_semaphore 0xb2faaf74 +vmlinux acpi_os_delete_semaphore 0xeaedfad9 +vmlinux acpi_os_free 0x43b9bbb4 +vmlinux acpi_os_printf 0x667cecc9 +vmlinux acpi_os_queue_for_execution 0xba5c8e12 +vmlinux acpi_os_read_pci_configuration 0xb21fd99e +vmlinux acpi_os_read_port 0x68092d39 +vmlinux acpi_os_signal 0xa1ed3038 +vmlinux acpi_os_signal_semaphore 0x499d825d +vmlinux acpi_os_sleep 0x540db81f +vmlinux acpi_os_stall 0x4fc25521 +vmlinux acpi_os_wait_events_complete 0xc9ab2eef +vmlinux acpi_os_wait_semaphore 0x69efe8d8 +vmlinux acpi_os_write_port 0x18339ef0 +vmlinux acpi_pci_irq_enable 0x863b22ab +vmlinux acpi_pci_register_driver 0xd1472061 +vmlinux acpi_pci_unregister_driver 0x43385ad9 +vmlinux acpi_register_gsi 0x24fb243b +vmlinux acpi_register_ioapic 0xd8dc4cbe +vmlinux acpi_release_global_lock 0xa805ecfc +vmlinux acpi_remove_address_space_handler 0x76cee5d4 +vmlinux acpi_remove_fixed_event_handler 0x4055a920 +vmlinux acpi_remove_gpe_block 0xf79ca3bb +vmlinux acpi_remove_gpe_handler 0x24d68408 +vmlinux acpi_remove_notify_handler 0x1c58427f +vmlinux acpi_resource_to_address64 0xe92b3071 +vmlinux acpi_root_dir 0xf65f4e88 +vmlinux acpi_set_current_resources 0x0be7e3d7 +vmlinux acpi_set_gpe_type 0xbde7c789 +vmlinux acpi_set_register 0xcb67d3ff +vmlinux acpi_specific_hotkey_enabled 0x46621493 +vmlinux acpi_unregister_gsi 0x7b5452b8 +vmlinux acpi_unregister_ioapic 0xbf3193ec +vmlinux acpi_ut_debug_print 0x9a71ebee +vmlinux acpi_ut_debug_print_raw 0x4381d7f5 +vmlinux acpi_ut_exit 0x0ec2a92b +vmlinux acpi_ut_status_exit 0x57c1e9c2 +vmlinux acpi_ut_trace 0x00f12cd5 +vmlinux acpi_ut_value_exit 0xe4e9cc50 +vmlinux acpi_walk_namespace 0x6f1fe2a2 +vmlinux acpi_walk_resources 0x4532cb1a +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0xa1adaf84 +vmlinux add_disk_randomness 0x19e6647f +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0x0f22bd06 +vmlinux add_wait_queue 0x242d6041 +vmlinux add_wait_queue_exclusive 0x1be1babf +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0x24b375af +vmlinux aio_put_req 0x14a14819 +vmlinux alloc_buffer_head 0x5447ba7f +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0x913c1fa0 +vmlinux alloc_disk_node 0xa9d9d34f +vmlinux alloc_etherdev 0x39f0999e +vmlinux alloc_fcdev 0x454e9526 +vmlinux alloc_fddidev 0xf4d6877f +vmlinux alloc_netdev 0x44b61016 +vmlinux alloc_page_buffers 0x93ebd610 +vmlinux alloc_pages_current 0xd971e6c7 +vmlinux alloc_trdev 0xab0312b8 +vmlinux alloc_tty_driver 0xd5ab4335 +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0x6b7fd004 +vmlinux anon_transport_class_unregister 0x589ff1e5 +vmlinux arch_acpi_processor_init_pdc 0xaf005cfe +vmlinux arp_broken_ops 0xfaad3b3f +vmlinux arp_create 0x00d6087f +vmlinux arp_find 0xaf86d48a +vmlinux arp_rcv 0x04d4bef5 +vmlinux arp_send 0xaa26c6e8 +vmlinux arp_tbl 0x97a5999a +vmlinux arp_xmit 0xbd678768 +vmlinux attribute_container_add_attrs 0x30537cd6 +vmlinux attribute_container_add_class_device 0xf6dccb2e +vmlinux attribute_container_add_class_device_adapter 0xc02d61d3 +vmlinux attribute_container_class_device_del 0x61be8086 +vmlinux attribute_container_classdev_to_container 0x3250a221 +vmlinux attribute_container_device_trigger 0x283ee991 +vmlinux attribute_container_find_class_device 0x0f6ed327 +vmlinux attribute_container_register 0x673f573f +vmlinux attribute_container_remove_attrs 0x4ef2f1a3 +vmlinux attribute_container_remove_device 0x258fbfcc +vmlinux attribute_container_trigger 0xbe34b011 +vmlinux attribute_container_unregister 0xaa1b14d2 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x22618d62 +vmlinux bd_claim 0x503a643f +vmlinux bd_release 0xc4705e0e +vmlinux bd_set_size 0xc0876e16 +vmlinux bdev_read_only 0xd5cd33e8 +vmlinux bdevname 0xd952c21c +vmlinux bdget 0x5b7cd61b +vmlinux bdput 0x7737db23 +vmlinux bfifo_qdisc_ops 0x628a3675 +vmlinux bio_add_page 0xe94978fc +vmlinux bio_alloc 0xf613ff4e +vmlinux bio_alloc_bioset 0x13aa82c9 +vmlinux bio_clone 0xeec64ac9 +vmlinux bio_copy_user 0x23dfe3b3 +vmlinux bio_endio 0x014813ad +vmlinux bio_free 0x7ac47da7 +vmlinux bio_get_nr_vecs 0x4cf619d8 +vmlinux bio_hw_segments 0x401264b5 +vmlinux bio_init 0xdb94d0fd +vmlinux bio_map_kern 0xf2ea1ff8 +vmlinux bio_map_user 0x16f1e638 +vmlinux bio_pair_release 0x5bfecd88 +vmlinux bio_phys_segments 0xe2b11535 +vmlinux bio_put 0x01675360 +vmlinux bio_split 0x8e2f9586 +vmlinux bio_split_pool 0x16e4e378 +vmlinux bio_uncopy_user 0xf5ee50dd +vmlinux bio_unmap_user 0x002bc8a1 +vmlinux bioset_create 0x58d198f4 +vmlinux bioset_free 0x28bcefa4 +vmlinux bit_waitqueue 0xa57003b0 +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xefe7520f +vmlinux blk_alloc_queue 0x132ade36 +vmlinux blk_alloc_queue_node 0x89937df5 +vmlinux blk_cleanup_queue 0x120f2de1 +vmlinux blk_complete_barrier_rq 0xa71b111d +vmlinux blk_complete_barrier_rq_locked 0x67510ebd +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x9b1bacbc +vmlinux blk_end_sync_rq 0xe1980b69 +vmlinux blk_execute_rq 0x1e18e80e +vmlinux blk_get_backing_dev_info 0xfa3beb56 +vmlinux blk_get_queue 0x92a91214 +vmlinux blk_get_request 0x2414a0ba +vmlinux blk_init_queue 0xd1240864 +vmlinux blk_init_queue_node 0x82fed124 +vmlinux blk_insert_request 0xad24d783 +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0x65764d1e +vmlinux blk_put_request 0x228e0f91 +vmlinux blk_queue_activity_fn 0x9865dd11 +vmlinux blk_queue_bounce 0xe86d5198 +vmlinux blk_queue_bounce_limit 0xf1f799a8 +vmlinux blk_queue_dma_alignment 0x550c6c49 +vmlinux blk_queue_end_tag 0x682e92a2 +vmlinux blk_queue_find_tag 0xf01bed6a +vmlinux blk_queue_free_tags 0xf09f6dfb +vmlinux blk_queue_hardsect_size 0xb21626d7 +vmlinux blk_queue_init_tags 0xa162cbcc +vmlinux blk_queue_invalidate_tags 0x7590551a +vmlinux blk_queue_issue_flush_fn 0x48319b47 +vmlinux blk_queue_make_request 0x6fb98c9f +vmlinux blk_queue_max_hw_segments 0xb33eff8a +vmlinux blk_queue_max_phys_segments 0xa20417f7 +vmlinux blk_queue_max_sectors 0x99060a7b +vmlinux blk_queue_max_segment_size 0x09f82281 +vmlinux blk_queue_merge_bvec 0xcf6779c6 +vmlinux blk_queue_ordered 0x55ea625a +vmlinux blk_queue_prep_rq 0x1c667fd0 +vmlinux blk_queue_resize_tags 0xf16ec004 +vmlinux blk_queue_segment_boundary 0x08da4f9a +vmlinux blk_queue_stack_limits 0x50f717f5 +vmlinux blk_queue_start_tag 0x05956253 +vmlinux blk_register_region 0xcbc6a4cf +vmlinux blk_remove_plug 0x299897b4 +vmlinux blk_requeue_request 0x2458f92e +vmlinux blk_rq_bio_prep 0xc9b28d5c +vmlinux blk_rq_map_kern 0x8c5556fc +vmlinux blk_rq_map_sg 0x8a866a32 +vmlinux blk_rq_map_user 0x3ac93708 +vmlinux blk_rq_map_user_iov 0x2dd24002 +vmlinux blk_rq_unmap_user 0x266fa4ad +vmlinux blk_run_queue 0xb7dd18c3 +vmlinux blk_start_queue 0x2788d432 +vmlinux blk_stop_queue 0x4a0da11f +vmlinux blk_sync_queue 0xfc2c7eeb +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0x2f02b6b6 +vmlinux blkdev_ioctl 0x61c6b029 +vmlinux blkdev_issue_flush 0xe922958c +vmlinux blkdev_put 0x5b67396a +vmlinux block_all_signals 0x4edd72f7 +vmlinux block_commit_write 0x476bbdbd +vmlinux block_invalidatepage 0xaf76455e +vmlinux block_prepare_write 0xbf9ab8b2 +vmlinux block_read_full_page 0x779bfcc9 +vmlinux block_sync_page 0x73bec227 +vmlinux block_truncate_page 0xd7780ea0 +vmlinux block_write_full_page 0x342815d9 +vmlinux bmap 0x763f9034 +vmlinux boot_option_idle_override 0xef9aedfc +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0xb4cdb08f +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bte_copy 0x26feac2d +vmlinux bte_unaligned_copy 0x3a265e0c +vmlinux bus_add_device 0x0b736b06 +vmlinux bus_create_file 0xaa4a8d03 +vmlinux bus_find_device 0x2c57d0bd +vmlinux bus_for_each_dev 0xe6c0b20e +vmlinux bus_for_each_drv 0xeb292cd2 +vmlinux bus_register 0xdbc08c34 +vmlinux bus_remove_device 0xb2ea3695 +vmlinux bus_remove_file 0x8c94fc0b +vmlinux bus_rescan_devices 0xa15797d3 +vmlinux bus_unregister 0x8af66280 +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x43c852aa +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x9e233b0f +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x520f6c8f +vmlinux cdev_alloc 0xd4855f5c +vmlinux cdev_del 0x0ac04c72 +vmlinux cdev_init 0xebd3d1bd +vmlinux cfb_copyarea 0x32bffcac +vmlinux cfb_fillrect 0x678bd1ee +vmlinux cfb_imageblit 0x866313cc +vmlinux check_disk_change 0x49ca9ae1 +vmlinux class_create 0x571a752c +vmlinux class_create_file 0x1b65fa40 +vmlinux class_destroy 0x2d4325d8 +vmlinux class_device_add 0xefe80bc9 +vmlinux class_device_create 0xfa78ca6d +vmlinux class_device_create_bin_file 0x2b537580 +vmlinux class_device_create_file 0xde564aca +vmlinux class_device_del 0x0450adb7 +vmlinux class_device_destroy 0x219d4025 +vmlinux class_device_get 0x008b750c +vmlinux class_device_initialize 0x834c798d +vmlinux class_device_put 0xca39d311 +vmlinux class_device_register 0x6b098589 +vmlinux class_device_remove_bin_file 0x9ad4b422 +vmlinux class_device_remove_file 0x44208a42 +vmlinux class_device_unregister 0x9639ff32 +vmlinux class_get 0x153fc5c3 +vmlinux class_interface_register 0x562bdd65 +vmlinux class_interface_unregister 0x423c7eca +vmlinux class_put 0xdb4b34b9 +vmlinux class_register 0x86c414c1 +vmlinux class_remove_file 0x576b6ad7 +vmlinux class_unregister 0x8cb3284d +vmlinux clear_inode 0x3d0d4f24 +vmlinux clear_page 0x3d9ee9f0 +vmlinux clear_page_dirty_for_io 0x6f4d7409 +vmlinux close_bdev_excl 0x0394bc0f +vmlinux color_table 0xf6bb4729 +vmlinux complete 0x866a7695 +vmlinux complete_all 0xdb5c8104 +vmlinux complete_and_exit 0x869b2831 +vmlinux compute_creds 0xab5a63e3 +vmlinux con_copy_unimap 0x55a773f2 +vmlinux con_set_default_unimap 0x1b62a8d0 +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0xa2b3179a +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0x7fd6f2f5 +vmlinux console_stop 0x6cd98cd9 +vmlinux cont_prepare_write 0xa27793e8 +vmlinux copy_fs_struct 0xbc020e07 +vmlinux copy_io_context 0x7a50c4f2 +vmlinux copy_strings_kernel 0x34becd25 +vmlinux cpu_idle_wait 0xb53ae573 +vmlinux cpu_online_map 0xeef3d1eb +vmlinux cpu_possible_map 0xcac044db +vmlinux cpu_present_map 0xc5afbdd4 +vmlinux cpu_sysdev_class 0x6fe69519 +vmlinux cpu_to_node_map 0xe10cdf92 +vmlinux cpufreq_cpu_get 0x5bbddb31 +vmlinux cpufreq_cpu_put 0x24236d97 +vmlinux cpufreq_driver_target 0x62e41e09 +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0xff4344ce +vmlinux cpufreq_gov_performance 0x9f400b8b +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0x68c0b459 +vmlinux cpufreq_parse_governor 0xa0efe93e +vmlinux cpufreq_register_driver 0x133feef8 +vmlinux cpufreq_register_governor 0xe5b5305b +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0x75a4cbbd +vmlinux cpufreq_unregister_driver 0x99ae4696 +vmlinux cpufreq_unregister_governor 0x684e2a98 +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0x3f8064ce +vmlinux crc32_le 0x6dfc7ff3 +vmlinux create_empty_buffers 0xc467ed13 +vmlinux create_proc_entry 0xd1fe6018 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x8ae1d969 +vmlinux crypto_alloc_tfm 0x6d5c8cdb +vmlinux crypto_free_tfm 0xa9ba3890 +vmlinux crypto_hmac 0x5fcfb268 +vmlinux crypto_hmac_final 0x85dfa30a +vmlinux crypto_hmac_init 0x7c0a78e4 +vmlinux crypto_hmac_update 0xe7c2de65 +vmlinux crypto_register_alg 0x0b56c046 +vmlinux crypto_unregister_alg 0x344372fc +vmlinux csum_partial 0x94095c16 +vmlinux csum_partial_copy_fromiovecend 0x883c8eca +vmlinux csum_partial_copy_nocheck 0xa2963be1 +vmlinux csum_tcpudp_magic 0x40d7f766 +vmlinux current_fs_time 0x86631431 +vmlinux current_io_context 0x23029114 +vmlinux current_kernel_time 0x74cc238d +vmlinux cx_device_register 0xaf0f45e2 +vmlinux cx_device_unregister 0x26c45d74 +vmlinux cx_driver_register 0x4f3707ac +vmlinux cx_driver_unregister 0xa5157f53 +vmlinux d_alloc 0x12440687 +vmlinux d_alloc_anon 0xb3cc4753 +vmlinux d_alloc_name 0xd700d0ef +vmlinux d_alloc_root 0x85186175 +vmlinux d_delete 0x3a27ab0b +vmlinux d_find_alias 0xd1392db2 +vmlinux d_genocide 0x2a3fe470 +vmlinux d_instantiate 0xb5f04cc1 +vmlinux d_instantiate_unique 0x6a3c8a99 +vmlinux d_invalidate 0x92cc676f +vmlinux d_lookup 0xbfc8ae03 +vmlinux d_move 0x1a71223c +vmlinux d_path 0xd53cb816 +vmlinux d_prune_aliases 0xfc64509a +vmlinux d_rehash 0x6d51f0b2 +vmlinux d_splice_alias 0x00d74424 +vmlinux d_validate 0x145c18e8 +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0xb7f6861f +vmlinux dcache_dir_close 0x2db42dff +vmlinux dcache_dir_lseek 0x5b32eac9 +vmlinux dcache_dir_open 0xa386413d +vmlinux dcache_lock 0x6ecb6645 +vmlinux dcache_readdir 0x2921b821 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0xc5abe00e +vmlinux default_backing_dev_info 0xc889ef11 +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0x52876266 +vmlinux default_llseek 0x2db70af9 +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x5bb05b03 +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0xd31cb353 +vmlinux del_timer 0xa2d4c5eb +vmlinux del_timer_sync 0xafab4aeb +vmlinux dentry_open 0xc9254b49 +vmlinux dentry_unhash 0xb1163fe2 +vmlinux dequeue_signal 0x35f72c29 +vmlinux destroy_8023_client 0x5d334e84 +vmlinux destroy_EII_client 0x6cd9f6e2 +vmlinux destroy_workqueue 0xb6d1e6ab +vmlinux dev_add_pack 0x6e1f9c4c +vmlinux dev_alloc_name 0x75c7fbcd +vmlinux dev_base 0xa09f4e03 +vmlinux dev_base_lock 0xa5cebfed +vmlinux dev_change_flags 0x49b09ecb +vmlinux dev_close 0x25a2cda1 +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0xce4dd45a +vmlinux dev_get_by_index 0x0f95a972 +vmlinux dev_get_by_name 0xf42c01bc +vmlinux dev_get_flags 0xabe94584 +vmlinux dev_getbyhwaddr 0x78a14489 +vmlinux dev_getfirstbyhwtype 0x96d0dc57 +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0xe39ac1ae +vmlinux dev_mc_delete 0x7b06ffb0 +vmlinux dev_mc_upload 0x49ffebc8 +vmlinux dev_open 0x79989884 +vmlinux dev_queue_xmit 0xf3de7bda +vmlinux dev_remove_pack 0xf4f5caf8 +vmlinux dev_set_allmulti 0x2a9ba93e +vmlinux dev_set_mac_address 0xa69562dd +vmlinux dev_set_mtu 0x69c5f01d +vmlinux dev_set_promiscuity 0x5bbe0ac2 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0xc1ec8339 +vmlinux device_attach 0xa4aeff3d +vmlinux device_bind_driver 0x456333c3 +vmlinux device_create_file 0xb313b37e +vmlinux device_del 0xa24e56c2 +vmlinux device_for_each_child 0x19f64af3 +vmlinux device_initialize 0x6ecabdf4 +vmlinux device_pm_set_parent 0x2199c357 +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0x9336c291 +vmlinux device_release_driver 0x16b6d893 +vmlinux device_remove_file 0xcc8c29ea +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0x9b4a62df +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0xb5be1db7 +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_get_cache_alignment 0x47297f48 +vmlinux dma_get_required_mask 0x4468ed66 +vmlinux dma_pool_alloc 0xdc6e52e6 +vmlinux dma_pool_create 0x7066520d +vmlinux dma_pool_destroy 0x51e18734 +vmlinux dma_pool_free 0x610e43d8 +vmlinux dnotify_parent 0xae044487 +vmlinux do_SAK 0x8bb96e64 +vmlinux do_add_mount 0xf5f3b24e +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0xc022aca4 +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0x3bbdb5a5 +vmlinux do_mmap_pgoff 0xcb1e751d +vmlinux do_munmap 0x631281f2 +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x0b529342 +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0x9c305378 +vmlinux do_sync_read 0xe0c995b1 +vmlinux do_sync_write 0xd64d443b +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0xbb670ef1 +vmlinux dput 0x643583d3 +vmlinux dq_data_lock 0xe1bf97c0 +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x6530bd42 +vmlinux dquot_alloc_inode 0x976e1a5c +vmlinux dquot_alloc_space 0x93b76cc1 +vmlinux dquot_commit 0xf9a68488 +vmlinux dquot_commit_info 0x53a8a254 +vmlinux dquot_drop 0xbd75ddc3 +vmlinux dquot_free_inode 0x9456ab5b +vmlinux dquot_free_space 0x9e0cd34e +vmlinux dquot_initialize 0x6e8c8ec9 +vmlinux dquot_mark_dquot_dirty 0xd2b592a8 +vmlinux dquot_release 0xad951756 +vmlinux dquot_transfer 0xfda72ba1 +vmlinux drive_is_ready 0x2aff3ac9 +vmlinux driver_attach 0xf275ecb6 +vmlinux driver_create_file 0x0f1ece73 +vmlinux driver_find 0xf4599eb2 +vmlinux driver_find_device 0x20ff6b31 +vmlinux driver_for_each_device 0x5c43f363 +vmlinux driver_register 0x76c94e08 +vmlinux driver_remove_file 0xc86ea972 +vmlinux driver_unregister 0x125f9c77 +vmlinux drop_super 0xcad2d949 +vmlinux dst_alloc 0x6cd4ed5b +vmlinux dst_destroy 0xc146b69f +vmlinux dump_stack 0x6b2dc060 +vmlinux ec_read 0xfc4152fc +vmlinux ec_write 0xc708f1fe +vmlinux efi 0x5116b2ee +vmlinux efi_mem_attributes 0x5ddb3d56 +vmlinux eighty_ninty_three 0x4c5f3f01 +vmlinux elevator_exit 0xa352eda0 +vmlinux elevator_init 0x2aad4f4a +vmlinux elv_add_request 0x4026a7d2 +vmlinux elv_completed_request 0xb5d3525e +vmlinux elv_dequeue_request 0x567f625f +vmlinux elv_dispatch_sort 0x4b5cc211 +vmlinux elv_next_request 0x8d4d9333 +vmlinux elv_queue_empty 0xd2e8f191 +vmlinux elv_register 0xee2f062b +vmlinux elv_requeue_request 0x755cb221 +vmlinux elv_rq_merge_ok 0xae19d823 +vmlinux elv_try_merge 0x11adddb9 +vmlinux elv_unregister 0x4f1786fe +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_irq 0xfcec0987 +vmlinux end_buffer_async_write 0x4cf9d4e3 +vmlinux end_buffer_read_sync 0x6aa87e31 +vmlinux end_buffer_write_sync 0xcca54ca5 +vmlinux end_page_writeback 0xb8b9c716 +vmlinux end_request 0x065644dd +vmlinux end_that_request_chunk 0xd92d96c1 +vmlinux end_that_request_first 0xd20c5427 +vmlinux end_that_request_last 0x4aea1607 +vmlinux eth_type_trans 0xfecbeb7e +vmlinux ether_setup 0xd7756cb3 +vmlinux ethtool_op_get_link 0xc70dbbc7 +vmlinux ethtool_op_get_perm_addr 0xdc933ea1 +vmlinux ethtool_op_get_sg 0xf03ab71f +vmlinux ethtool_op_get_tso 0x464704f0 +vmlinux ethtool_op_get_tx_csum 0x6c6562bd +vmlinux ethtool_op_get_ufo 0x226ac4e4 +vmlinux ethtool_op_set_sg 0xa8475f2f +vmlinux ethtool_op_set_tso 0xf505411d +vmlinux ethtool_op_set_tx_csum 0xd01e5906 +vmlinux ethtool_op_set_tx_hw_csum 0xe205c2ea +vmlinux ethtool_op_set_ufo 0x975cc2c1 +vmlinux exit_fs 0x0f994365 +vmlinux f_setown 0x49375be7 +vmlinux fasync_helper 0xe55afdb7 +vmlinux fb_add_videomode 0x4b1f60ae +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0xb2c3f03e +vmlinux fb_con_duit 0xd7f39b6f +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xe42d2279 +vmlinux fb_destroy_modedb 0xc07b0863 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0x0397edd5 +vmlinux fb_find_best_display 0x3711e07e +vmlinux fb_find_best_mode 0x8306185a +vmlinux fb_find_mode 0xf1c4bc1b +vmlinux fb_find_mode_cvt 0xf93fd09c +vmlinux fb_find_nearest_mode 0x7538617b +vmlinux fb_firmware_edid 0x3978b20e +vmlinux fb_get_buffer_offset 0xa4e27931 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0xe4ebbdca +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x2ecf82c7 +vmlinux fb_mode_is_equal 0xb9d7ba2b +vmlinux fb_new_modelist 0x61e3f2c5 +vmlinux fb_pad_aligned_buffer 0x61ea189b +vmlinux fb_pad_unaligned_buffer 0x42f1b900 +vmlinux fb_pan_display 0x6b5728b1 +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x922ebd46 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0xa27dfc27 +vmlinux fb_set_suspend 0x68bf7b31 +vmlinux fb_set_var 0x9cd67393 +vmlinux fb_show_logo 0x6dab5745 +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x38727e23 +vmlinux fb_var_to_videomode 0x3369b3ff +vmlinux fb_videomode_to_modelist 0x9f84cecb +vmlinux fb_videomode_to_var 0xe12a6201 +vmlinux fd_install 0x452f74de +vmlinux fddi_type_trans 0xf033a460 +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x323f6e7f +vmlinux file_fsync 0x062b261e +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0xedd7bb7f +vmlinux filemap_fdatawait 0x27eb90ac +vmlinux filemap_fdatawrite 0x4afbd387 +vmlinux filemap_flush 0xfed9a1a2 +vmlinux filemap_nopage 0x0f0691d6 +vmlinux filemap_populate 0xc67b28d8 +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0x15a12b72 +vmlinux filp_open 0x92694b59 +vmlinux find_bus 0x979ba306 +vmlinux find_get_page 0x0c7fc2d9 +vmlinux find_inode_number 0x9ea84217 +vmlinux find_lock_page 0xc16299a4 +vmlinux find_or_create_page 0x0982f8fe +vmlinux find_task_by_pid_type 0x2268ec15 +vmlinux find_trylock_page 0x39daf037 +vmlinux find_vma 0xf48e8ef2 +vmlinux finish_wait 0xb66445a3 +vmlinux firmware_register 0x7affcb13 +vmlinux firmware_unregister 0x216dde83 +vmlinux flock_lock_file_wait 0x4dc60694 +vmlinux flow_cache_genid 0xa33a289f +vmlinux flow_cache_lookup 0x57726d68 +vmlinux flush_old_exec 0x3b72844d +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0xce94c96a +vmlinux flush_tlb_range 0x2c04c37f +vmlinux flush_workqueue 0x92e9c4e8 +vmlinux follow_down 0xb32f029b +vmlinux follow_up 0xe59b6af7 +vmlinux force_sig 0x512de60d +vmlinux fpswa_interface 0xa2755c7b +vmlinux fput 0xdecb96ff +vmlinux framebuffer_alloc 0x783a928a +vmlinux framebuffer_release 0xcf440cec +vmlinux free_buffer_head 0xcddd748a +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0x9f7359c1 +vmlinux free_pages 0x4302d0eb +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0x295e406f +vmlinux freeze_bdev 0xdbf388ab +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0x6ffeb49f +vmlinux gen_kill_estimator 0xa4a74611 +vmlinux gen_new_estimator 0xa3632b59 +vmlinux gen_pool_alloc 0x4b6c8600 +vmlinux gen_pool_create 0x4b3cabfe +vmlinux gen_pool_free 0x5d629ec7 +vmlinux gen_replace_estimator 0xa46ea42a +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x8b6b8bf3 +vmlinux generic_block_bmap 0x6f4b1ebd +vmlinux generic_commit_write 0x17940ac6 +vmlinux generic_cont_expand 0xbcf26240 +vmlinux generic_delete_inode 0x9cc8128c +vmlinux generic_drop_inode 0xaf1e177f +vmlinux generic_file_aio_read 0x15cf61c0 +vmlinux generic_file_aio_write 0xf75940ac +vmlinux generic_file_aio_write_nolock 0xf423fd3a +vmlinux generic_file_buffered_write 0x56c50c35 +vmlinux generic_file_direct_write 0xc66e48ac +vmlinux generic_file_llseek 0x1b3a2f6c +vmlinux generic_file_mmap 0x872013d5 +vmlinux generic_file_open 0x8ab49619 +vmlinux generic_file_read 0xdc9a45fa +vmlinux generic_file_readonly_mmap 0xf2902e42 +vmlinux generic_file_readv 0x1f634292 +vmlinux generic_file_sendfile 0xb9ca36e2 +vmlinux generic_file_write 0xdac190d3 +vmlinux generic_file_write_nolock 0x371fdca1 +vmlinux generic_file_writev 0xf38d8d8e +vmlinux generic_fillattr 0xdc584288 +vmlinux generic_getxattr 0xbbd97dcb +vmlinux generic_ide_ioctl 0xdfd1cf6a +vmlinux generic_listxattr 0x95d08b0f +vmlinux generic_make_request 0x1e33cb14 +vmlinux generic_osync_inode 0x2697197c +vmlinux generic_permission 0xdc24e04b +vmlinux generic_read_dir 0x17344af2 +vmlinux generic_readlink 0x7245467f +vmlinux generic_removexattr 0x832f718c +vmlinux generic_ro_fops 0x21add1ed +vmlinux generic_setxattr 0x0e1be41d +vmlinux generic_shutdown_super 0xc924b9b7 +vmlinux generic_unplug_device 0xfef76011 +vmlinux generic_write_checks 0x116e4892 +vmlinux genl_register_family 0xe773d5fb +vmlinux genl_register_ops 0x9f073418 +vmlinux genl_sock 0x2b1d1be1 +vmlinux genl_unregister_family 0xc4ec179f +vmlinux genl_unregister_ops 0xced32607 +vmlinux get_bus 0x168b8eb7 +vmlinux get_cpu_sysdev 0x8111f4c2 +vmlinux get_dcookie 0x6f2be371 +vmlinux get_device 0x72b6179b +vmlinux get_disk 0xf601613b +vmlinux get_driver 0x5ba907e0 +vmlinux get_empty_filp 0x0b8c2fcb +vmlinux get_fs_type 0x6d7e4b48 +vmlinux get_io_context 0xfe4b6616 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0x22a5e636 +vmlinux get_sb_nodev 0x1e056df0 +vmlinux get_sb_pseudo 0x4dee9455 +vmlinux get_sb_single 0xd08e7410 +vmlinux get_super 0x05227e17 +vmlinux get_task_mm 0xc7c437ff +vmlinux get_unmapped_area 0xb9c8adc1 +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x53cfe0cf +vmlinux get_write_access 0x393af5c3 +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x4563b1eb +vmlinux gnet_stats_copy_app 0x29cc9c2b +vmlinux gnet_stats_copy_basic 0x02f50739 +vmlinux gnet_stats_copy_queue 0x5d2b92cf +vmlinux gnet_stats_copy_rate_est 0xde1b6e12 +vmlinux gnet_stats_finish_copy 0x3dddd8d6 +vmlinux gnet_stats_start_copy 0xf109238c +vmlinux gnet_stats_start_copy_compat 0x788e3196 +vmlinux grab_cache_page_nowait 0x31beece0 +vmlinux groups_alloc 0x705f28cd +vmlinux groups_free 0x436a7f98 +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0x0fdd2fc6 +vmlinux have_submounts 0xa1451403 +vmlinux high_memory 0x8a7d1c31 +vmlinux hp_acpi_csr_space 0x05b8f2bc +vmlinux hwmon_device_register 0xb6e2c919 +vmlinux hwmon_device_unregister 0xf7fd4c71 +vmlinux hwsw_alloc_coherent 0xe9b212ef +vmlinux hwsw_dma_mapping_error 0x30f56b6f +vmlinux hwsw_dma_supported 0x4f760041 +vmlinux hwsw_free_coherent 0x0253a664 +vmlinux hwsw_map_sg 0x2242f8ee +vmlinux hwsw_map_single 0xc453ccfb +vmlinux hwsw_unmap_sg 0x294356e7 +vmlinux hwsw_unmap_single 0xc5dd8a45 +vmlinux ia64_acpiid_to_sapicid 0x3ac96696 +vmlinux ia64_cpu_to_sapicid 0xe52d755f +vmlinux ia64_iobase 0x08e6b007 +vmlinux ia64_ivt 0x3cdde3b7 +vmlinux ia64_load_scratch_fpregs 0xc9266a5a +vmlinux ia64_max_iommu_merge_mask 0xb1f32d3d +vmlinux ia64_mv 0x016b9518 +vmlinux ia64_pal_call_phys_stacked 0xfbbca7dc +vmlinux ia64_pal_call_phys_static 0x0e402370 +vmlinux ia64_pal_call_stacked 0xafc13e64 +vmlinux ia64_pal_call_static 0xca484b2c +vmlinux ia64_pfn_valid 0x3717dbf9 +vmlinux ia64_reg_MCA_extension 0x2a372c6c +vmlinux ia64_sal_oemcall 0x5c7a8717 +vmlinux ia64_sal_oemcall_nolock 0xd64d24a3 +vmlinux ia64_sal_oemcall_reentrant 0xd67440e7 +vmlinux ia64_save_scratch_fpregs 0x83998b0b +vmlinux ia64_spinlock_contention 0xdd7906b9 +vmlinux ia64_unreg_MCA_extension 0x79a2fd35 +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x5e6c49f0 +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_acpi_exec_tfs 0x68e2eb07 +vmlinux ide_acpi_get_timing 0x1ef58db3 +vmlinux ide_acpi_init 0x9094c364 +vmlinux ide_acpi_push_timing 0x8578e02c +vmlinux ide_add_setting 0x64193020 +vmlinux ide_build_dmatable 0x5adfc6a9 +vmlinux ide_build_sglist 0xacb8be01 +vmlinux ide_bus_type 0x65ebeef4 +vmlinux ide_config_drive_speed 0x1d57ebed +vmlinux ide_destroy_dmatable 0xda21da04 +vmlinux ide_dma_enable 0x18022d3d +vmlinux ide_dma_intr 0x9a05509f +vmlinux ide_dma_setup 0x4230e13f +vmlinux ide_dma_speed 0x5e028bd4 +vmlinux ide_dma_start 0xdb692d82 +vmlinux ide_dma_verbose 0x08542009 +vmlinux ide_do_drive_cmd 0x06a06df4 +vmlinux ide_do_reset 0x22528a6d +vmlinux ide_dump_status 0x390055e9 +vmlinux ide_end_drive_cmd 0x32051d35 +vmlinux ide_end_request 0xf03e8bb3 +vmlinux ide_error 0xb8267b8a +vmlinux ide_execute_command 0x1813f264 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x3aa7cf21 +vmlinux ide_get_best_pio_mode 0xaaab82c2 +vmlinux ide_get_error_location 0x053ec14f +vmlinux ide_hwifs 0x3583c90b +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0x8f21b0d3 +vmlinux ide_init_drive_cmd 0x58655898 +vmlinux ide_init_sg_cmd 0xd2367339 +vmlinux ide_lock 0xce2d3d11 +vmlinux ide_map_sg 0x1b9d8e55 +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x219964f7 +vmlinux ide_pci_unregister_driver 0xcb29ea8b +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x99cbccf3 +vmlinux ide_raw_taskfile 0x1292619d +vmlinux ide_register_hw 0x1b35a817 +vmlinux ide_register_hw_with_fixup 0x9c9ce389 +vmlinux ide_register_region 0xff15d2ec +vmlinux ide_register_subdriver 0xe4f46933 +vmlinux ide_set_handler 0x9f9880a4 +vmlinux ide_set_xfer_rate 0xfacc175d +vmlinux ide_setup_dma 0x7acfff23 +vmlinux ide_setup_pci_device 0x6dbbf486 +vmlinux ide_setup_pci_devices 0x3c954161 +vmlinux ide_setup_pci_noise 0xa00ae904 +vmlinux ide_spin_wait_hwgroup 0x73dc71eb +vmlinux ide_stall_queue 0xef13fe7d +vmlinux ide_undecoded_slave 0xd2261778 +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0x0caeb1bf +vmlinux ide_unregister_subdriver 0xb3b5b5a6 +vmlinux ide_use_dma 0xbf26b763 +vmlinux ide_wait_not_busy 0x9e6341a9 +vmlinux ide_wait_stat 0x0027aa88 +vmlinux ide_xfer_verbose 0xc05d558d +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0xdcc6e32a +vmlinux idr_find 0xe7f7140d +vmlinux idr_get_new 0x7af0e1a6 +vmlinux idr_get_new_above 0x44c0d7d0 +vmlinux idr_init 0x28aa8e90 +vmlinux idr_pre_get 0x56f2a4ce +vmlinux idr_remove 0xd0e7663c +vmlinux iget5_locked 0x7abfcb74 +vmlinux iget_locked 0x19088d49 +vmlinux igrab 0x8596c3c4 +vmlinux ilookup 0x181c17d0 +vmlinux ilookup5 0x7cb9fb38 +vmlinux ilookup5_nowait 0x2d4a08f9 +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0x0ca5bfcc +vmlinux in_egroup_p 0x42a4bdf2 +vmlinux in_group_p 0x31ebadcd +vmlinux in_lock_functions 0x09d44df9 +vmlinux inet6_lookup 0xa4e14e9a +vmlinux inet6_lookup_listener 0x58e25cdb +vmlinux inet_accept 0x0ac3c520 +vmlinux inet_add_protocol 0xf9592892 +vmlinux inet_addr_type 0x9f8197db +vmlinux inet_bind 0xebf28794 +vmlinux inet_bind_bucket_create 0x2b59ce82 +vmlinux inet_bind_hash 0x18d71bf5 +vmlinux inet_csk_accept 0x4abe1d5d +vmlinux inet_csk_clear_xmit_timers 0x7a89db81 +vmlinux inet_csk_clone 0x59902558 +vmlinux inet_csk_delete_keepalive_timer 0x7ec47241 +vmlinux inet_csk_destroy_sock 0x0563106f +vmlinux inet_csk_get_port 0xe6eb064b +vmlinux inet_csk_init_xmit_timers 0x1632f86d +vmlinux inet_csk_listen_start 0x7879a603 +vmlinux inet_csk_listen_stop 0x9ce9b23d +vmlinux inet_csk_reqsk_queue_hash_add 0xff82fa0e +vmlinux inet_csk_reqsk_queue_prune 0x30282e72 +vmlinux inet_csk_reset_keepalive_timer 0x1300d413 +vmlinux inet_csk_route_req 0xe3c7019d +vmlinux inet_csk_search_req 0x82c42939 +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0x5777d353 +vmlinux inet_dgram_connect 0x7dd92273 +vmlinux inet_dgram_ops 0xed4abbc2 +vmlinux inet_diag_register 0x688b620d +vmlinux inet_diag_unregister 0x3b91d7b1 +vmlinux inet_getname 0x28531909 +vmlinux inet_ioctl 0x8d1044aa +vmlinux inet_listen 0x204d83b4 +vmlinux inet_listen_wlock 0x7631d074 +vmlinux inet_put_port 0x4ebedca0 +vmlinux inet_register_protosw 0x05857a74 +vmlinux inet_release 0x66738042 +vmlinux inet_select_addr 0x30140adb +vmlinux inet_sendmsg 0x25367bc0 +vmlinux inet_shutdown 0xbdb70ec1 +vmlinux inet_sk_rebuild_header 0x80f8f314 +vmlinux inet_sock_destruct 0x6f289f33 +vmlinux inet_stream_connect 0xaf2a0b98 +vmlinux inet_stream_ops 0xe76c4068 +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x0c57208d +vmlinux inet_twsk_deschedule 0x98958c59 +vmlinux inet_twsk_schedule 0x93131644 +vmlinux inet_unregister_protosw 0x19a7e5de +vmlinux inetdev_by_index 0x6e791404 +vmlinux init_buffer 0xcb00b9b0 +vmlinux init_mm 0x17b455e7 +vmlinux init_special_inode 0x60055c12 +vmlinux init_task 0x979e96a5 +vmlinux init_timer 0x98957132 +vmlinux inode_add_bytes 0x5514770a +vmlinux inode_change_ok 0x49d346de +vmlinux inode_get_bytes 0xa223112b +vmlinux inode_init_once 0x3df2b893 +vmlinux inode_needs_sync 0x97bd675e +vmlinux inode_set_bytes 0x835bc86e +vmlinux inode_setattr 0x39a585fb +vmlinux inode_sub_bytes 0xdb1aec0f +vmlinux inode_update_time 0x524c85f5 +vmlinux inotify_dentry_parent_queue_event 0x61bcfbde +vmlinux inotify_get_cookie 0x0fef6e6d +vmlinux inotify_inode_is_dead 0x7455ef46 +vmlinux inotify_inode_queue_event 0xcd6fc3a4 +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0x08520fd3 +vmlinux input_allocate_device 0xf268a4b3 +vmlinux input_class 0x9af725ec +vmlinux input_close_device 0x99ecff3e +vmlinux input_event 0x6ef7bf09 +vmlinux input_flush_device 0x309a3248 +vmlinux input_grab_device 0x7f693796 +vmlinux input_open_device 0xb5c3b144 +vmlinux input_register_device 0xa950a539 +vmlinux input_register_handler 0x7ab2f456 +vmlinux input_release_device 0x1357fa04 +vmlinux input_unregister_device 0xa1e8957a +vmlinux input_unregister_handler 0x97c32b87 +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0xceb406c5 +vmlinux int_sqrt 0xb678366f +vmlinux int_to_scsilun 0xea10212a +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x225f6817 +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0x06bfd4f6 +vmlinux interruptible_sleep_on_timeout 0x5c4e5b7e +vmlinux invalidate_bdev 0x0d7ef351 +vmlinux invalidate_inode_pages 0x5d053189 +vmlinux invalidate_inode_pages2 0xe39f226e +vmlinux invalidate_inode_pages2_range 0x059f4c45 +vmlinux invalidate_inodes 0xbfbff198 +vmlinux invalidate_partition 0xcefafae6 +vmlinux io_schedule 0x93a6e0b2 +vmlinux io_space 0xeb16163b +vmlinux ioctl_by_bdev 0xeb11f7eb +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0xc5534d64 +vmlinux ioread16_rep 0x5857b225 +vmlinux ioread16be 0xf065f629 +vmlinux ioread32 0xe484e35f +vmlinux ioread32_rep 0x3f0546a8 +vmlinux ioread32be 0xfdb9b629 +vmlinux ioread8 0xf10de535 +vmlinux ioread8_rep 0xf441ac43 +vmlinux iov_shorten 0x92392cd9 +vmlinux iowrite16 0x06a86bc1 +vmlinux iowrite16_rep 0x8cc79cab +vmlinux iowrite16be 0x26f8f0b8 +vmlinux iowrite32 0x4a453f53 +vmlinux iowrite32_rep 0xbfc177bc +vmlinux iowrite32be 0xe419bc99 +vmlinux iowrite8 0x848d372e +vmlinux iowrite8_rep 0xa4b94fea +vmlinux ip4_datagram_connect 0x37f5fb9b +vmlinux ip_build_and_send_pkt 0xd0c51ed8 +vmlinux ip_cmsg_recv 0x99d0be62 +vmlinux ip_compute_csum 0xe5e298ea +vmlinux ip_ct_attach 0x1e9acb27 +vmlinux ip_defrag 0xfcd66232 +vmlinux ip_fast_csum 0xe4627d16 +vmlinux ip_fragment 0xcbf97ca0 +vmlinux ip_generic_getfrag 0xc04e97c9 +vmlinux ip_getsockopt 0x82602dac +vmlinux ip_mc_dec_group 0x5505d0dd +vmlinux ip_mc_inc_group 0x759bb8b2 +vmlinux ip_mc_join_group 0x5546c7b0 +vmlinux ip_queue_xmit 0x1a864a32 +vmlinux ip_route_input 0xdfb27523 +vmlinux ip_route_me_harder 0x19a79424 +vmlinux ip_route_output_flow 0x6c02d82f +vmlinux ip_route_output_key 0x195744c0 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0xa37b7441 +vmlinux ip_setsockopt 0x166d4a1f +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0x3e8f0dfd +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0xa9b0e090 +vmlinux ipv6_ext_hdr 0x969ad2d6 +vmlinux ipv6_skip_exthdr 0xc925ab7b +vmlinux is_bad_inode 0xa4ec019c +vmlinux is_console_locked 0x944a564d +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux isa_irq_to_vector_map 0x3aed7527 +vmlinux iunique 0x33c3ba45 +vmlinux iw_handler_get_spy 0x4442a8e8 +vmlinux iw_handler_get_thrspy 0x4dc42849 +vmlinux iw_handler_set_spy 0xf3b7bee8 +vmlinux iw_handler_set_thrspy 0x9c8b9bba +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0x7ef0512f +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0xb5e908ae +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0xa26eab00 +vmlinux kernel_recvmsg 0xdbc065ce +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0x2aa64e8c +vmlinux kernel_subsys 0xf70af17f +vmlinux kernel_thread 0x439090b9 +vmlinux kfifo_alloc 0xdf2fb3ba +vmlinux kfifo_free 0x104d432b +vmlinux kfifo_init 0x09991e7b +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0x7446dda9 +vmlinux kill_anon_super 0xb2f07e4a +vmlinux kill_block_super 0xe0ef07dd +vmlinux kill_fasync 0x6fab964a +vmlinux kill_litter_super 0x5e837bbc +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0x7c0c631a +vmlinux klist_add_head 0x4e5495c5 +vmlinux klist_add_tail 0xdf2ffe9c +vmlinux klist_del 0x04a4a7b3 +vmlinux klist_init 0xc920554e +vmlinux klist_iter_exit 0xf8eb0593 +vmlinux klist_iter_init 0x3999c5fb +vmlinux klist_iter_init_node 0xf1569412 +vmlinux klist_next 0x3d5c15a1 +vmlinux klist_node_attached 0xde2a3fc2 +vmlinux klist_remove 0x5389f09e +vmlinux km_new_mapping 0x70b0d02c +vmlinux km_policy_notify 0x84af29bf +vmlinux km_state_notify 0x0b0e557b +vmlinux km_waitq 0xc03c6f5f +vmlinux kmalloc_node 0xce0123e0 +vmlinux kmem_cache_alloc 0x09895cff +vmlinux kmem_cache_alloc_node 0xb5f15280 +vmlinux kmem_cache_create 0xb06e0387 +vmlinux kmem_cache_destroy 0x70031eaf +vmlinux kmem_cache_free 0x823c9650 +vmlinux kmem_cache_name 0x9d994b7a +vmlinux kmem_cache_shrink 0x4e76447c +vmlinux kmem_cache_size 0xe3101eb2 +vmlinux kmem_find_general_cachep 0x3bff4c71 +vmlinux kobject_add 0x185eb00a +vmlinux kobject_del 0x83e8c670 +vmlinux kobject_get 0x1ace7a22 +vmlinux kobject_hotplug 0xf1c84588 +vmlinux kobject_init 0xf88a523b +vmlinux kobject_put 0x94b99e5f +vmlinux kobject_register 0x33eda1c7 +vmlinux kobject_set_name 0x7d49dee2 +vmlinux kobject_uevent 0x5f50e8fc +vmlinux kobject_uevent_atomic 0x26aacf70 +vmlinux kobject_unregister 0x791adfc2 +vmlinux kref_get 0xbd0712b5 +vmlinux kref_init 0xd1aebf8a +vmlinux kref_put 0xd23c3f86 +vmlinux kset_find_obj 0x4a7a40b6 +vmlinux kset_register 0xa35e5f59 +vmlinux kset_unregister 0x83b01d03 +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x17fdc99b +vmlinux kthread_create 0xbf82a1b8 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0xe4f3d64b +vmlinux kthread_stop_sem 0xca1ea4fc +vmlinux kzalloc 0x5a3b6eca +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0x1b638381 +vmlinux lease_modify 0x0508c913 +vmlinux linkwatch_fire_event 0x00faef54 +vmlinux ll_rw_block 0x46a4cc51 +vmlinux llc_add_pack 0x88955c84 +vmlinux llc_build_and_send_ui_pkt 0x8255bd35 +vmlinux llc_mac_hdr_init 0x18bdcdc5 +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0x9ab21c09 +vmlinux llc_sap_find 0xb647530e +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0x428c8d73 +vmlinux llc_sap_open 0xc67f0b44 +vmlinux llc_set_station_handler 0x5543392e +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_nls 0x2a35f545 +vmlinux load_nls_default 0x96f2e10d +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_kernel 0x3656bf5a +vmlinux lock_may_read 0x62f7cbef +vmlinux lock_may_write 0x11569a93 +vmlinux lock_rename 0xd6606e16 +vmlinux lock_sock 0xb0ab895f +vmlinux locks_copy_lock 0xd676fe84 +vmlinux locks_init_lock 0x04e38928 +vmlinux locks_mandatory_area 0x9614782d +vmlinux locks_remove_posix 0x1b092278 +vmlinux lookup_create 0x63131807 +vmlinux lookup_hash 0x37170f60 +vmlinux lookup_instantiate_filp 0x5339a58d +vmlinux lookup_one_len 0x29674d05 +vmlinux loopback_dev 0x4d7c41b5 +vmlinux loops_per_jiffy 0xba497f13 +vmlinux machvec_dma_sync_sg 0x17bd35b0 +vmlinux machvec_dma_sync_single 0x7aa0f563 +vmlinux machvec_setup 0xaf6bbc60 +vmlinux machvec_timer_interrupt 0x18d3f88f +vmlinux make_8023_client 0xbf1faa77 +vmlinux make_EII_client 0xf224099e +vmlinux make_bad_inode 0xb4918d9e +vmlinux malloc_sizes 0x8913efd9 +vmlinux mapping_tagged 0x7a9670f2 +vmlinux mark_buffer_async_write 0xd681fbde +vmlinux mark_buffer_dirty 0xbf8976df +vmlinux mark_buffer_dirty_inode 0xf70efca3 +vmlinux mark_info_dirty 0x7cc776c3 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x4ebabdac +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_cstate 0x93805374 +vmlinux max_low_pfn 0x9abfb6dd +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0xa2b92d41 +vmlinux may_umount_tree 0xe26ed0ef +vmlinux mb_cache_create 0xc9ad570b +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0xe77c6856 +vmlinux mb_cache_entry_find_first 0x7f79fd25 +vmlinux mb_cache_entry_find_next 0xb77489b3 +vmlinux mb_cache_entry_free 0x25a9e8de +vmlinux mb_cache_entry_get 0x6044e608 +vmlinux mb_cache_entry_insert 0x8d264c8e +vmlinux mb_cache_entry_release 0x37791039 +vmlinux mb_cache_shrink 0xdccb7046 +vmlinux memchr 0xc740c64a +vmlinux memcmp 0xc7ec28b0 +vmlinux memcpy 0x6067a146 +vmlinux memcpy_fromio 0xfd19eaeb +vmlinux memcpy_fromiovec 0x36139a51 +vmlinux memcpy_fromiovecend 0x9bc565c5 +vmlinux memcpy_toio 0x129697b8 +vmlinux memcpy_toiovec 0x2876a6d3 +vmlinux memmove 0x5dbbe98e +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xa5faba0d +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0x2c9367fb +vmlinux mempool_create_node 0xeda88a82 +vmlinux mempool_destroy 0x89ed4fee +vmlinux mempool_free 0x2a6bb2c8 +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x937958a6 +vmlinux memscan 0x9c0ea3cd +vmlinux memset 0x3fa03a97 +vmlinux memset_io 0xcd473329 +vmlinux min_low_pfn 0x0acca637 +vmlinux misc_deregister 0x44c6904c +vmlinux misc_register 0x05e89f00 +vmlinux mmput 0xcd36a3e7 +vmlinux mnt_pin 0x981d4424 +vmlinux mnt_unpin 0xd6859af4 +vmlinux mntput_no_expire 0x5eaa91b7 +vmlinux mod_firmware_load 0x39e3dd23 +vmlinux mod_reg_security 0x89163020 +vmlinux mod_timer 0x71505c19 +vmlinux mod_unreg_security 0xb77ed87b +vmlinux module_add_driver 0xff4a0bf9 +vmlinux module_refcount 0x05e2a435 +vmlinux module_remove_driver 0x09d98297 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0xb9d17d06 +vmlinux mpage_readpages 0x8066d0a6 +vmlinux mpage_writepage 0x135957cc +vmlinux mpage_writepages 0x6d0872b0 +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux multipath_alg_register 0xf58e3bff +vmlinux multipath_alg_unregister 0x75e7197b +vmlinux n_tty_ioctl 0xc0f0e3b9 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x67da02dc +vmlinux neigh_changeaddr 0x7a0c374e +vmlinux neigh_compat_output 0x6fdff82e +vmlinux neigh_connected_output 0x3e0ff724 +vmlinux neigh_create 0x0021eaaf +vmlinux neigh_delete 0x91e54a15 +vmlinux neigh_destroy 0xc9e0137d +vmlinux neigh_dump_info 0xbf70b9c6 +vmlinux neigh_event_ns 0x21e455a3 +vmlinux neigh_for_each 0x26dc253d +vmlinux neigh_ifdown 0xeeba959c +vmlinux neigh_lookup 0x09cf31ea +vmlinux neigh_lookup_nodev 0x132b3072 +vmlinux neigh_parms_alloc 0x7551f000 +vmlinux neigh_parms_release 0x2b8d1910 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0x8eccfd3e +vmlinux neigh_seq_next 0xdc7869a6 +vmlinux neigh_seq_start 0x645c574a +vmlinux neigh_seq_stop 0xbf373281 +vmlinux neigh_sysctl_register 0x65aa2112 +vmlinux neigh_sysctl_unregister 0xc49d6f5e +vmlinux neigh_table_clear 0xac571e7c +vmlinux neigh_table_init 0xe319c39c +vmlinux neigh_update 0x67228c0e +vmlinux neigh_update_hhs 0xc66b80c3 +vmlinux neightbl_dump_info 0xef25108b +vmlinux neightbl_set 0xc72827a9 +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0x29160cca +vmlinux netdev_features_change 0x60c8f4e2 +vmlinux netdev_rx_csum_fault 0x6c111832 +vmlinux netdev_set_master 0xe00d16d8 +vmlinux netdev_state_change 0x34c0f149 +vmlinux netif_carrier_off 0x93e0274b +vmlinux netif_carrier_on 0xf7a8012e +vmlinux netif_receive_skb 0x7391d799 +vmlinux netif_rx 0x27373744 +vmlinux netif_rx_ni 0x3a0db7d2 +vmlinux netlink_ack 0x4cc182f7 +vmlinux netlink_broadcast 0xc017639a +vmlinux netlink_dump_start 0xf99eb528 +vmlinux netlink_kernel_create 0xde07c43a +vmlinux netlink_queue_skip 0x8f7522b4 +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0xea960919 +vmlinux netlink_set_err 0xd7cb4712 +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0x0fba265b +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0xe5e6e3df +vmlinux netpoll_parse_options 0xa417e39a +vmlinux netpoll_poll 0xbd13c4f3 +vmlinux netpoll_queue 0x2690e3b7 +vmlinux netpoll_send_udp 0xb434c68d +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0xdee05ff2 +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0x49608eb0 +vmlinux next_thread 0x00fd69f6 +vmlinux nf_ct_attach 0x4c4fb44f +vmlinux nf_getsockopt 0xcc5fb398 +vmlinux nf_hook_slow 0x0b19e33b +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0x753cad64 +vmlinux nf_log_register 0x8d54921a +vmlinux nf_log_unregister_logger 0x949694b9 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0x09247c3f +vmlinux nf_register_queue_handler 0x1720699a +vmlinux nf_register_queue_rerouter 0x07ad83ac +vmlinux nf_register_sockopt 0x119a17cf +vmlinux nf_reinject 0x4132eee2 +vmlinux nf_setsockopt 0xf91d9b77 +vmlinux nf_unregister_hook 0x95014cee +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0xcf10b6d7 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0xb74e9dd6 +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0x4c4c956e +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x9b4f3684 +vmlinux nla_put 0x6a0ee024 +vmlinux nla_reserve 0xd9e93e6c +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0xa33f7c7c +vmlinux nla_validate 0x71798dc7 +vmlinux no_llseek 0xe4ebda41 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x80844b3c +vmlinux nobh_prepare_write 0xfe632637 +vmlinux nobh_truncate_page 0x2da23eef +vmlinux nobh_writepage 0x538193c8 +vmlinux node_online_map 0xaf2c5c03 +vmlinux node_possible_map 0xcf6e837d +vmlinux nonseekable_open 0xc819adde +vmlinux noop_qdisc 0xeafc1ce5 +vmlinux noop_qdisc_ops 0x77c47a26 +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x7d21067e +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0xd13e8915 +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0xf579bb12 +vmlinux open_by_devnum 0xc9c8335a +vmlinux open_exec 0x0e4a437c +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux p80211_resume 0x9d9ac199 +vmlinux p80211_suspend 0xe9f07ef1 +vmlinux p80211netdev_hwremoved 0xc57df0e5 +vmlinux p80211netdev_rx 0xc27b7515 +vmlinux p80211skb_free 0x536ef0ff +vmlinux p80211skb_rxmeta_attach 0x5068fc57 +vmlinux page_follow_link_light 0xdc682429 +vmlinux page_put_link 0x755a6822 +vmlinux page_readlink 0xc271cb07 +vmlinux page_symlink 0x3eaee1e4 +vmlinux page_symlink_inode_operations 0x2310a70c +vmlinux pagevec_lookup_tag 0xa221ed01 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0xa35e4255 +vmlinux path_release 0x5c1b8fde +vmlinux path_walk 0xffba592d +vmlinux pci_add_new_bus 0x243da5e7 +vmlinux pci_assign_resource 0xdb80287c +vmlinux pci_block_user_cfg_access 0x2da9e7e7 +vmlinux pci_bus_add_device 0x1b40ec48 +vmlinux pci_bus_add_devices 0x8d6bcd7d +vmlinux pci_bus_alloc_resource 0xf8e62b06 +vmlinux pci_bus_assign_resources 0xc37a7195 +vmlinux pci_bus_find_capability 0x105b37e0 +vmlinux pci_bus_max_busnr 0xac0a599d +vmlinux pci_bus_read_config_byte 0x933a0d9d +vmlinux pci_bus_read_config_dword 0x01be386e +vmlinux pci_bus_read_config_word 0x0b5351be +vmlinux pci_bus_size_bridges 0x0e2ce1e1 +vmlinux pci_bus_type 0x2d5c4c7e +vmlinux pci_bus_write_config_byte 0xecad5e14 +vmlinux pci_bus_write_config_dword 0xaa7cde79 +vmlinux pci_bus_write_config_word 0x667b917e +vmlinux pci_choose_state 0xfb7b662a +vmlinux pci_clear_mwi 0x40c73e8d +vmlinux pci_create_bus 0x8cc55c1c +vmlinux pci_dev_driver 0x2d7eb7c0 +vmlinux pci_dev_get 0x7bd48c55 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0xa2274f9f +vmlinux pci_disable_device 0x8265eedc +vmlinux pci_disable_msi 0x63266345 +vmlinux pci_disable_msix 0x2a40acb3 +vmlinux pci_do_scan_bus 0xe7135c23 +vmlinux pci_enable_bridges 0xcbc5671f +vmlinux pci_enable_device 0x75c9b45f +vmlinux pci_enable_device_bars 0x0cf6f657 +vmlinux pci_enable_msi 0xff671da0 +vmlinux pci_enable_msix 0xe6dead6f +vmlinux pci_enable_wake 0xf7ca927c +vmlinux pci_find_bus 0xb9f526c2 +vmlinux pci_find_capability 0x0d8c0719 +vmlinux pci_find_device 0xe6da24a6 +vmlinux pci_find_device_reverse 0x2a978a7e +vmlinux pci_find_next_bus 0x96f9a396 +vmlinux pci_find_next_capability 0x9176b213 +vmlinux pci_find_parent_resource 0xd7dd6d86 +vmlinux pci_find_slot 0x65474091 +vmlinux pci_fixup_device 0x57801f35 +vmlinux pci_get_class 0xee6c5746 +vmlinux pci_get_device 0x25edbe06 +vmlinux pci_get_slot 0xe5207621 +vmlinux pci_get_subsys 0xc5612fba +vmlinux pci_intx 0x4b08025e +vmlinux pci_iomap 0x1018fe54 +vmlinux pci_iounmap 0xd6835f7f +vmlinux pci_map_rom 0x5a88804e +vmlinux pci_map_rom_copy 0x2a94546e +vmlinux pci_match_device 0x91be2785 +vmlinux pci_match_id 0xc810822c +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_osc_control_set 0xbd163c66 +vmlinux pci_osc_support_set 0xcaadcf83 +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0xa6b2a0fb +vmlinux pci_proc_attach_device 0x37d39bb7 +vmlinux pci_proc_detach_bus 0xc5dc4a87 +vmlinux pci_release_region 0x85d8a183 +vmlinux pci_release_regions 0xf0d808fd +vmlinux pci_remove_behind_bridge 0x76eb41d9 +vmlinux pci_remove_bus 0xbd762dc1 +vmlinux pci_remove_bus_device 0xb793a328 +vmlinux pci_remove_device_safe 0x49b9ea58 +vmlinux pci_remove_rom 0x8cf0bb34 +vmlinux pci_request_region 0x765e17cc +vmlinux pci_request_regions 0x4007c5d0 +vmlinux pci_restore_bars 0x09cab306 +vmlinux pci_restore_state 0xf688fd84 +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0x37b3fc57 +vmlinux pci_scan_bridge 0x58942916 +vmlinux pci_scan_bus_parented 0xb58d9f5f +vmlinux pci_scan_child_bus 0xc75f97cb +vmlinux pci_scan_single_device 0x7a5f4a3b +vmlinux pci_scan_slot 0x704fc20c +vmlinux pci_set_consistent_dma_mask 0x156ba543 +vmlinux pci_set_dma_mask 0x8e457a9d +vmlinux pci_set_master 0xfe21fd0f +vmlinux pci_set_mwi 0x4d61dca9 +vmlinux pci_set_power_state 0xea8e3a72 +vmlinux pci_setup_cardbus 0x5ee181b6 +vmlinux pci_unblock_user_cfg_access 0xf5879d4d +vmlinux pci_unmap_rom 0x271b8ed4 +vmlinux pci_unregister_driver 0xd97e6ffe +vmlinux pci_walk_bus 0x21563e13 +vmlinux pcibios_bus_to_resource 0x1bcb18d4 +vmlinux pcibios_resource_to_bus 0xc5a67589 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pciserial_init_ports 0x12b0bcb0 +vmlinux pciserial_remove_ports 0x007da916 +vmlinux pciserial_resume_ports 0xe6ff5c4f +vmlinux pciserial_suspend_ports 0xcff1b20d +vmlinux per_cpu____sn_cnodeid_to_nasid 0x8e4c910b +vmlinux per_cpu____sn_hub_info 0x538fd0d0 +vmlinux per_cpu____sn_nodepda 0x00000000 +vmlinux per_cpu__cpu_info 0xbe06c773 +vmlinux per_cpu__kstat 0x97ca28ec +vmlinux per_cpu__local_per_cpu_offset 0xe3d3394f +vmlinux per_cpu__pfm_syst_info 0xa2d17b9f +vmlinux per_cpu__softnet_data 0x62bcb1e1 +vmlinux percpu_counter_mod 0x49ff89cb +vmlinux permission 0x191b7534 +vmlinux pfifo_qdisc_ops 0x030d2d88 +vmlinux pfm_install_alt_pmu_interrupt 0x4a419738 +vmlinux pfm_mod_read_pmds 0xae61854e +vmlinux pfm_mod_write_dbrs 0xa38c7d89 +vmlinux pfm_mod_write_ibrs 0x7bf0a619 +vmlinux pfm_mod_write_pmcs 0x26d3396d +vmlinux pfm_register_buffer_fmt 0x7588dcf5 +vmlinux pfm_remove_alt_pmu_interrupt 0x6fba9ec7 +vmlinux pfm_sysctl 0x9ebc1b3a +vmlinux pfm_unregister_buffer_fmt 0x2d23d64f +vmlinux physical_node_map 0x20301636 +vmlinux platform_add_devices 0x4b97d914 +vmlinux platform_bus 0x5e96c5b0 +vmlinux platform_bus_type 0x54c52bd8 +vmlinux platform_device_add 0x348ffa89 +vmlinux platform_device_add_data 0xa561de1c +vmlinux platform_device_add_resources 0x19707d57 +vmlinux platform_device_alloc 0xf640d6a4 +vmlinux platform_device_put 0xe201e88c +vmlinux platform_device_register 0x358faa76 +vmlinux platform_device_register_simple 0xb69f71a5 +vmlinux platform_device_unregister 0x5c2a1de1 +vmlinux platform_driver_register 0xade4e454 +vmlinux platform_driver_unregister 0xd2981407 +vmlinux platform_get_irq 0x48c77f46 +vmlinux platform_get_irq_byname 0x992825ab +vmlinux platform_get_resource 0x5563749c +vmlinux platform_get_resource_byname 0xa95f4884 +vmlinux pm_active 0xebd387f6 +vmlinux pm_idle 0xf890fe7f +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pneigh_enqueue 0x487902cd +vmlinux pneigh_lookup 0x54898a7b +vmlinux pnp_activate_dev 0x3578bc03 +vmlinux pnp_device_attach 0xfd25baf9 +vmlinux pnp_device_detach 0x29a62ed2 +vmlinux pnp_disable_dev 0x0b7bb736 +vmlinux pnp_init_resource_table 0x16084899 +vmlinux pnp_is_active 0x169fee5f +vmlinux pnp_manual_config_dev 0x0827f0dc +vmlinux pnp_register_card_driver 0xc5ab91b9 +vmlinux pnp_register_driver 0x0842c3f1 +vmlinux pnp_release_card_device 0x4ecca26e +vmlinux pnp_request_card_device 0x5c636822 +vmlinux pnp_resource_change 0xf577ec2b +vmlinux pnp_unregister_card_driver 0xca0d96b1 +vmlinux pnp_unregister_driver 0xae1c5bfd +vmlinux poll_freewait 0x15010747 +vmlinux poll_initwait 0x0a79219c +vmlinux posix_acl_alloc 0xcbe9d892 +vmlinux posix_acl_chmod_masq 0xf8a0a1ff +vmlinux posix_acl_clone 0x40f5b6d6 +vmlinux posix_acl_create_masq 0x1e4ebfe9 +vmlinux posix_acl_equiv_mode 0x9bb11d25 +vmlinux posix_acl_from_mode 0x63b6b18a +vmlinux posix_acl_from_xattr 0x9f3bf87b +vmlinux posix_acl_permission 0x4ee38018 +vmlinux posix_acl_to_xattr 0x8791cd7d +vmlinux posix_acl_valid 0x62fb7285 +vmlinux posix_block_lock 0xb1a05f27 +vmlinux posix_lock_file 0x0169a99d +vmlinux posix_lock_file_wait 0xf139bd6c +vmlinux posix_locks_deadlock 0x69f1258d +vmlinux posix_test_lock 0xa679de07 +vmlinux posix_timer_event 0x42b07187 +vmlinux posix_unblock_lock 0xa8cc09af +vmlinux pre_task_out_intr 0xa16d7660 +vmlinux prepare_binprm 0x81cf2d6d +vmlinux prepare_to_wait 0x124c9939 +vmlinux prepare_to_wait_exclusive 0xc86fa40c +vmlinux printk 0x827d5807 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0xc64e0f71 +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0xcf0711bc +vmlinux proc_dointvec 0x8083cf90 +vmlinux proc_dointvec_jiffies 0x3c9e08c4 +vmlinux proc_dointvec_minmax 0x250a5734 +vmlinux proc_dointvec_ms_jiffies 0x8838e60a +vmlinux proc_dointvec_userhz_jiffies 0x4801f98f +vmlinux proc_dostring 0x48a04790 +vmlinux proc_doulongvec_minmax 0x7b85c4c3 +vmlinux proc_doulongvec_ms_jiffies_minmax 0x9f96543d +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0xb664cdc2 +vmlinux proc_net 0xd6b69bb3 +vmlinux proc_net_netfilter 0x5f7e0c23 +vmlinux proc_net_stat 0x74c62caa +vmlinux proc_root 0x6e3e7dde +vmlinux proc_root_driver 0x06e739bb +vmlinux proc_root_fs 0xc9445544 +vmlinux proc_symlink 0x067e3538 +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux proto_register 0x1d4231be +vmlinux proto_unregister 0xb087c534 +vmlinux ps2_cmd_aborted 0x941dac5f +vmlinux ps2_command 0x65e65304 +vmlinux ps2_drain 0x47ef2d61 +vmlinux ps2_handle_ack 0x646fbbf0 +vmlinux ps2_handle_response 0x8d873810 +vmlinux ps2_init 0xe38beed7 +vmlinux ps2_schedule_command 0x0da4443f +vmlinux ps2_sendbyte 0x6e4a5964 +vmlinux pskb_copy 0x24db8b38 +vmlinux pskb_expand_head 0x64f8a780 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0xb72870bb +vmlinux put_cmsg 0x43ec913a +vmlinux put_device 0xfc2a3eca +vmlinux put_disk 0x01b62838 +vmlinux put_driver 0x28a1f07f +vmlinux put_files_struct 0xef3c63bf +vmlinux put_io_context 0x22bab3e3 +vmlinux put_page 0x1c5704bf +vmlinux put_tty_driver 0x843581ee +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0x8584a25b +vmlinux qdisc_create_dflt 0x0d1635c1 +vmlinux qdisc_destroy 0x206b3130 +vmlinux qdisc_get_rtab 0xbb20ee2e +vmlinux qdisc_lock_tree 0xc6fdd0ec +vmlinux qdisc_lookup 0x4c798d93 +vmlinux qdisc_put_rtab 0xc50fe814 +vmlinux qdisc_reset 0x78b810e0 +vmlinux qdisc_restart 0xc8e43480 +vmlinux qdisc_unlock_tree 0x756e830d +vmlinux queue_delayed_work 0x627ecf1c +vmlinux queue_work 0x12c2c216 +vmlinux radix_tree_delete 0x898049c9 +vmlinux radix_tree_gang_lookup 0x35ef380e +vmlinux radix_tree_gang_lookup_tag 0xed493232 +vmlinux radix_tree_insert 0x72e6283f +vmlinux radix_tree_lookup 0x76e635da +vmlinux radix_tree_lookup_slot 0x41706e2f +vmlinux radix_tree_tag_clear 0x9ee300df +vmlinux radix_tree_tag_set 0xd73b9fb5 +vmlinux radix_tree_tagged 0xb52b2186 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0x227bcb5b +vmlinux read_cache_pages 0x634e7363 +vmlinux read_dev_sector 0xce08df62 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0x5a36af93 +vmlinux redraw_screen 0x4ab61cb3 +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0xd64ccadd +vmlinux register_acpi_bus_type 0x017dc2d8 +vmlinux register_binfmt 0x857f8817 +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0x4f4db520 +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0xb6ac4d26 +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_die_notifier 0x53986488 +vmlinux register_exec_domain 0xc0348f5e +vmlinux register_filesystem 0x4fff41d1 +vmlinux register_firmware 0xf6f77a91 +vmlinux register_framebuffer 0x06492318 +vmlinux register_gifconf 0x3c0b4bbf +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0x49e7c973 +vmlinux register_netdevice 0xba988838 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x80000af1 +vmlinux register_posix_clock 0x7acfbba9 +vmlinux register_qdisc 0x040300f4 +vmlinux register_quota_format 0x9199fb3c +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0xefe5b2ea +vmlinux register_snap_client 0xa11e875c +vmlinux register_sound_dsp 0x1e7d3a7c +vmlinux register_sound_midi 0xc3fe0492 +vmlinux register_sound_mixer 0xfc49a2cb +vmlinux register_sound_special 0xbb0f80da +vmlinux register_sound_special_device 0x83509019 +vmlinux register_sound_synth 0x5a4f55b9 +vmlinux register_sysctl_table 0xfad2a929 +vmlinux register_sysrq_key 0x47f149e6 +vmlinux register_tcf_proto_ops 0x06f217c2 +vmlinux register_timer_hook 0x1b15acf9 +vmlinux register_wlandev 0xbc2f4142 +vmlinux registered_fb 0xbed40c49 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x433a4d61 +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x92ed7cfe +vmlinux remap_pfn_range 0xdb94a17f +vmlinux remote_llseek 0xfef2ce67 +vmlinux remove_arg_zero 0x5f9e1d0e +vmlinux remove_inode_hash 0xf2b09751 +vmlinux remove_proc_entry 0x4065e99b +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0x2ac6180e +vmlinux remove_wait_queue 0x82ca29da +vmlinux reqsk_queue_alloc 0x20a921d2 +vmlinux reqsk_queue_destroy 0x18a74701 +vmlinux request_firmware 0xe0e95c6f +vmlinux request_firmware_nowait 0x30fed9ee +vmlinux request_irq 0x512f11b0 +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x83230e05 +vmlinux rtnetlink_links 0x2b8ee57e +vmlinux rtnetlink_put_metrics 0x9be41993 +vmlinux rtnl 0xf3ae7c85 +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0xef8a7705 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux rwsem_down_read_failed 0x3b78cd1a +vmlinux rwsem_down_write_failed 0xb4c2afa5 +vmlinux rwsem_downgrade_wake 0x737172bd +vmlinux rwsem_wake 0x673aa1de +vmlinux sal_pcibr_slot_disable 0xf9f4450c +vmlinux sal_pcibr_slot_enable 0x915e60ce +vmlinux sb_min_blocksize 0xba98d385 +vmlinux sb_set_blocksize 0xee7a312a +vmlinux sba_alloc_coherent 0x1eb2b76e +vmlinux sba_dma_mapping_error 0xfd79eb7a +vmlinux sba_dma_supported 0x257d09c3 +vmlinux sba_free_coherent 0x6919a84b +vmlinux sba_map_sg 0x284aef96 +vmlinux sba_map_single 0xbdf96931 +vmlinux sba_unmap_sg 0x1d00584d +vmlinux sba_unmap_single 0xa78a6d05 +vmlinux sched_setscheduler 0xba517c68 +vmlinux schedule 0xa44fffc1 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0xe349f0d1 +vmlinux scm_fp_dup 0xe557bd59 +vmlinux scnprintf 0x7bb4de17 +vmlinux screen_info 0x59b7e373 +vmlinux scsi_add_device 0xf40a3fbd +vmlinux scsi_add_host 0xb6ccfc5f +vmlinux scsi_adjust_queue_depth 0x0ca3d60a +vmlinux scsi_allocate_request 0x2cfe3661 +vmlinux scsi_bios_ptable 0xb4dd5263 +vmlinux scsi_block_requests 0xe0b55dde +vmlinux scsi_block_when_processing_errors 0x68dc2b16 +vmlinux scsi_bus_type 0x9899dda4 +vmlinux scsi_calculate_bounce_limit 0xaea1a95d +vmlinux scsi_cmd_ioctl 0x746e1ef9 +vmlinux scsi_command_normalize_sense 0x65a19aaf +vmlinux scsi_command_size 0x9b05ea5c +vmlinux scsi_device_cancel 0xe45ece85 +vmlinux scsi_device_get 0x41a4bf61 +vmlinux scsi_device_lookup 0x332b3c9a +vmlinux scsi_device_lookup_by_target 0x258b001d +vmlinux scsi_device_put 0xf8e8a4fa +vmlinux scsi_device_quiesce 0xd7357737 +vmlinux scsi_device_resume 0x6a5a20f6 +vmlinux scsi_device_set_state 0x552d517a +vmlinux scsi_device_types 0x6df713c9 +vmlinux scsi_do_req 0x33964798 +vmlinux scsi_execute 0x567ff8fe +vmlinux scsi_execute_req 0x88def1e8 +vmlinux scsi_extd_sense_format 0x11267875 +vmlinux scsi_finish_command 0xe32aa6ab +vmlinux scsi_flush_work 0xf404830c +vmlinux scsi_free_host_dev 0x65fe1aa2 +vmlinux scsi_get_command 0xf78a7a53 +vmlinux scsi_get_host_dev 0x1d051410 +vmlinux scsi_get_sense_info_fld 0xc369234b +vmlinux scsi_host_alloc 0x30ad6fa9 +vmlinux scsi_host_get 0xff164f05 +vmlinux scsi_host_lookup 0x4ff4ca5f +vmlinux scsi_host_put 0xf590a34c +vmlinux scsi_host_set_state 0x6f9dc6e7 +vmlinux scsi_internal_device_block 0xb1235225 +vmlinux scsi_internal_device_unblock 0xb9a1aa69 +vmlinux scsi_io_completion 0xa162b9bb +vmlinux scsi_ioctl 0xdf5dec51 +vmlinux scsi_ioctl_send_command 0x81508838 +vmlinux scsi_is_host_device 0xd212d015 +vmlinux scsi_is_sdev_device 0x66b6f575 +vmlinux scsi_is_target_device 0xf11a8293 +vmlinux scsi_logging_level 0xaf3dd7dc +vmlinux scsi_mode_sense 0x0bd6d178 +vmlinux scsi_nonblockable_ioctl 0x48929ec5 +vmlinux scsi_normalize_sense 0x813cd63f +vmlinux scsi_partsize 0x4afe9a77 +vmlinux scsi_print_command 0x86e74b0b +vmlinux scsi_print_msg 0x67f88938 +vmlinux scsi_print_req_sense 0xd1e93348 +vmlinux scsi_print_sense 0x82c3c86b +vmlinux scsi_print_sense_hdr 0xb83c35a3 +vmlinux scsi_print_status 0x9cfd56c5 +vmlinux scsi_put_command 0x79dd53e8 +vmlinux scsi_queue_work 0x7fef5d84 +vmlinux scsi_register 0xb4c6e57b +vmlinux scsi_register_driver 0xf7901c0d +vmlinux scsi_register_interface 0x034f27a3 +vmlinux scsi_release_request 0x1ad75885 +vmlinux scsi_remove_device 0xd6748504 +vmlinux scsi_remove_host 0x8df3586a +vmlinux scsi_remove_target 0xba606ed1 +vmlinux scsi_report_bus_reset 0x9524bb6b +vmlinux scsi_report_device_reset 0x83033e67 +vmlinux scsi_request_normalize_sense 0xc84ec0d0 +vmlinux scsi_rescan_device 0xd4ffb5d3 +vmlinux scsi_reset_provider 0xafc16e55 +vmlinux scsi_scan_host 0x26b1d9e0 +vmlinux scsi_scan_target 0xa9e71987 +vmlinux scsi_sense_desc_find 0x10d9f885 +vmlinux scsi_sense_key_string 0x96cd2b04 +vmlinux scsi_set_medium_removal 0x64355ba5 +vmlinux scsi_setup_blk_pc_cmnd 0xade418e4 +vmlinux scsi_target_block 0xfd1dd5ce +vmlinux scsi_target_quiesce 0x68c16301 +vmlinux scsi_target_resume 0xb4bab85a +vmlinux scsi_target_unblock 0x5fd71797 +vmlinux scsi_test_unit_ready 0xe9e92a28 +vmlinux scsi_track_queue_full 0x3e00bd3b +vmlinux scsi_unblock_requests 0xf332598d +vmlinux scsi_unregister 0xb318a75c +vmlinux scsicam_bios_param 0x96955b4d +vmlinux search_binary_handler 0xef8fa157 +vmlinux secpath_dup 0x32e7b799 +vmlinux secure_dccp_sequence_number 0xd47b06b2 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0xb0412cda +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0x6d2f9511 +vmlinux securityfs_create_dir 0x33e6b90f +vmlinux securityfs_create_file 0x06c6e1e0 +vmlinux securityfs_remove 0xcef049dd +vmlinux send_sig 0xea4d6fe7 +vmlinux send_sig_info 0xfbcd1c1b +vmlinux seq_escape 0x4d23637d +vmlinux seq_lseek 0x32071592 +vmlinux seq_open 0x1db03f75 +vmlinux seq_path 0x0e8eae28 +vmlinux seq_printf 0xd959e84c +vmlinux seq_putc 0x08b22346 +vmlinux seq_puts 0x00334928 +vmlinux seq_read 0x8c09b35e +vmlinux seq_release 0x121ebaf7 +vmlinux seq_release_private 0x2bf3abbb +vmlinux serial8250_register_port 0xb137195b +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0x2b7f477f +vmlinux serio_interrupt 0xea0b9c90 +vmlinux serio_open 0xbb72379c +vmlinux serio_reconnect 0x3909518f +vmlinux serio_rescan 0x2c837612 +vmlinux serio_unregister_child_port 0xc63876f8 +vmlinux serio_unregister_driver 0x78bea881 +vmlinux serio_unregister_port 0xbb2fd761 +vmlinux set_anon_super 0x54a53cf6 +vmlinux set_bh_page 0x3fca272e +vmlinux set_binfmt 0x1c209cf4 +vmlinux set_blocksize 0xe30bf5a6 +vmlinux set_cpus_allowed 0xf00e55da +vmlinux set_current_groups 0x4f18770b +vmlinux set_device_ro 0x9a41eda8 +vmlinux set_disk_ro 0x2fbbe6fd +vmlinux set_page_dirty 0x940c9119 +vmlinux set_page_dirty_lock 0xf2761587 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0xada30a66 +vmlinux setlease 0x709541dc +vmlinux setup_arg_pages 0x4db289fe +vmlinux sget 0x8fef402a +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x2181507f +vmlinux shrink_dcache_sb 0x5ef9616b +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x6a5fa363 +vmlinux simple_attr_close 0x49dc577a +vmlinux simple_attr_open 0x7e23a572 +vmlinux simple_attr_read 0x82fb7448 +vmlinux simple_attr_write 0x25bea675 +vmlinux simple_commit_write 0x8f23ec8a +vmlinux simple_dir_inode_operations 0xd2231cbc +vmlinux simple_dir_operations 0x6f46d9ee +vmlinux simple_empty 0xa238e272 +vmlinux simple_fill_super 0x822a1167 +vmlinux simple_getattr 0x1c13b115 +vmlinux simple_link 0xbb63ac6c +vmlinux simple_lookup 0x5b6eeea4 +vmlinux simple_pin_fs 0x57d459b2 +vmlinux simple_prepare_write 0x94e79531 +vmlinux simple_read_from_buffer 0x5a5e7ea3 +vmlinux simple_readpage 0x78dd7884 +vmlinux simple_release_fs 0x8a6974ec +vmlinux simple_rename 0x8938d2cb +vmlinux simple_rmdir 0xc47aaa71 +vmlinux simple_statfs 0x0bc6cb97 +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0x77856378 +vmlinux simple_transaction_get 0x2cea3c31 +vmlinux simple_transaction_read 0x31074fab +vmlinux simple_transaction_release 0x7a1d6f2f +vmlinux simple_unlink 0x612d7621 +vmlinux single_open 0xf5f7942f +vmlinux single_release 0xe40561a1 +vmlinux sk_alloc 0x9f129c0c +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0x7148e9a6 +vmlinux sk_common_release 0x483200dd +vmlinux sk_free 0x73604870 +vmlinux sk_reset_timer 0x8cd151cf +vmlinux sk_run_filter 0x51e1a401 +vmlinux sk_send_sigurg 0x1e2810d6 +vmlinux sk_stop_timer 0x1d16a877 +vmlinux sk_stream_error 0x4bb0737d +vmlinux sk_stream_kill_queues 0xba4ef444 +vmlinux sk_stream_mem_schedule 0x7e4d003d +vmlinux sk_stream_rfree 0x567651c6 +vmlinux sk_stream_wait_close 0xe1bf92d5 +vmlinux sk_stream_wait_connect 0xbef3e49f +vmlinux sk_stream_wait_memory 0xf66f8fdb +vmlinux sk_stream_write_space 0xdb4c837f +vmlinux sk_wait_data 0x9e837a71 +vmlinux skb_abort_seq_read 0xce65fdbd +vmlinux skb_append 0x12b11bf9 +vmlinux skb_append_datato_frags 0xf8c4f53d +vmlinux skb_checksum 0x19e0f591 +vmlinux skb_checksum_help 0x12a4f9b7 +vmlinux skb_clone 0x0b169a87 +vmlinux skb_clone_fraglist 0x4ba2a669 +vmlinux skb_copy 0x460aa834 +vmlinux skb_copy_and_csum_bits 0x610f3952 +vmlinux skb_copy_and_csum_datagram_iovec 0xad241eb7 +vmlinux skb_copy_and_csum_dev 0xca7fa4f5 +vmlinux skb_copy_bits 0x8a81e7e7 +vmlinux skb_copy_datagram_iovec 0x65811383 +vmlinux skb_copy_expand 0xd81b4cd9 +vmlinux skb_dequeue 0x720e2960 +vmlinux skb_dequeue_tail 0x458cc48e +vmlinux skb_find_text 0xe2aec8bc +vmlinux skb_free_datagram 0xdc0d1cc1 +vmlinux skb_icv_walk 0x5b65c9d0 +vmlinux skb_insert 0xf3d71ead +vmlinux skb_make_writable 0xcbdc5942 +vmlinux skb_over_panic 0x6c391ac0 +vmlinux skb_pad 0xba84981b +vmlinux skb_prepare_seq_read 0xd0920226 +vmlinux skb_queue_head 0xd84a94f2 +vmlinux skb_queue_purge 0x6a581b4b +vmlinux skb_queue_tail 0xf38c99a2 +vmlinux skb_realloc_headroom 0x85e2da2f +vmlinux skb_recv_datagram 0x86489bc9 +vmlinux skb_seq_read 0x307c45c7 +vmlinux skb_split 0x6f6ee892 +vmlinux skb_store_bits 0x25d0ff94 +vmlinux skb_under_panic 0xb359b937 +vmlinux skb_unlink 0x94113d12 +vmlinux sleep_on 0xf37728a9 +vmlinux sleep_on_timeout 0x80671888 +vmlinux smp_call_function 0x0014bfd1 +vmlinux smp_call_function_single 0xaf7e6801 +vmlinux sn_bus_free_sysdata 0xd93cb8be +vmlinux sn_bus_store_sysdata 0xcf428aac +vmlinux sn_coherency_id 0x171826ab +vmlinux sn_dma_alloc_coherent 0x0d0ff4d1 +vmlinux sn_dma_flush 0x42bd091d +vmlinux sn_dma_free_coherent 0x625a23a9 +vmlinux sn_dma_map_sg 0x10b93266 +vmlinux sn_dma_map_single 0x5c6c6fbb +vmlinux sn_dma_mapping_error 0xacae6d43 +vmlinux sn_dma_set_mask 0xaed3387c +vmlinux sn_dma_supported 0xf30c79bb +vmlinux sn_dma_sync_sg_for_cpu 0x25cbecb4 +vmlinux sn_dma_sync_sg_for_device 0x116af662 +vmlinux sn_dma_sync_single_for_cpu 0x8efc811c +vmlinux sn_dma_sync_single_for_device 0xbaaf1b8b +vmlinux sn_dma_unmap_sg 0x92b7535b +vmlinux sn_dma_unmap_single 0xf90c655c +vmlinux sn_flush_all_caches 0xc29d5343 +vmlinux sn_hwperf_get_nearest_node 0xa1d2934d +vmlinux sn_io_addr 0xdc477230 +vmlinux sn_partition_id 0x8df01146 +vmlinux sn_partition_serial_number 0x9a61ea6d +vmlinux sn_pci_controller_fixup 0xf92e50c8 +vmlinux sn_pci_fixup_slot 0x5b9c7784 +vmlinux sn_pci_unfixup_slot 0x052c5acf +vmlinux sn_prom_feature_available 0xdb22ec6b +vmlinux sn_region_size 0x3b3be38d +vmlinux sn_rtc_cycles_per_second 0x8b966b63 +vmlinux sn_send_IPI_phys 0xac812950 +vmlinux sn_sharing_domain_size 0xcb32ae05 +vmlinux sn_system_serial_number_string 0x102b5b21 +vmlinux sn_system_size 0xd7907b0f +vmlinux snprintf 0xaf25400d +vmlinux sock_alloc_send_skb 0xb674dcf1 +vmlinux sock_common_getsockopt 0xc8ecdd98 +vmlinux sock_common_recvmsg 0xd38fe166 +vmlinux sock_common_setsockopt 0x3c2bd835 +vmlinux sock_create 0xa21687e3 +vmlinux sock_create_kern 0x99a0745c +vmlinux sock_create_lite 0xc986ed09 +vmlinux sock_enable_timestamp 0xf35ff18f +vmlinux sock_get_timestamp 0xc4fbb24f +vmlinux sock_i_ino 0x5f4bcce1 +vmlinux sock_i_uid 0x093341d7 +vmlinux sock_init_data 0xa40e487c +vmlinux sock_kfree_s 0x2448b251 +vmlinux sock_kmalloc 0xd900da11 +vmlinux sock_map_fd 0x29fe06d8 +vmlinux sock_no_accept 0x7b7b4317 +vmlinux sock_no_bind 0xceefc7c0 +vmlinux sock_no_connect 0x77517cda +vmlinux sock_no_getname 0xd820f84f +vmlinux sock_no_getsockopt 0xcf6e5eed +vmlinux sock_no_ioctl 0x2332805b +vmlinux sock_no_listen 0xc0b2eacf +vmlinux sock_no_mmap 0x6c02d0cb +vmlinux sock_no_poll 0x80600210 +vmlinux sock_no_recvmsg 0x57574328 +vmlinux sock_no_sendmsg 0x18175c64 +vmlinux sock_no_sendpage 0x994bf9ef +vmlinux sock_no_setsockopt 0xae57f676 +vmlinux sock_no_shutdown 0x19c8735b +vmlinux sock_no_socketpair 0xd9998576 +vmlinux sock_recvmsg 0x5ae1ec3b +vmlinux sock_register 0xb30f76e3 +vmlinux sock_release 0x3b24b80f +vmlinux sock_rfree 0xf5b499e8 +vmlinux sock_sendmsg 0xf7c1ac29 +vmlinux sock_setsockopt 0x63b9a535 +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0x6b77a151 +vmlinux sock_wfree 0x9882cf44 +vmlinux sock_wmalloc 0xa458c640 +vmlinux sockfd_lookup 0x110e337c +vmlinux sort 0x9ca95a0e +vmlinux sound_class 0xa14d403f +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux starget_for_each_device 0x562a6a7f +vmlinux start_tty 0x696751ba +vmlinux steal_locks 0x15c9b30e +vmlinux stop_tty 0x0a3c6449 +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0xafe82e10 +vmlinux strlcat 0xb11fa1ce +vmlinux strlcpy 0x672144bd +vmlinux strlen 0xdcb5671d +vmlinux strncat 0x234509f3 +vmlinux strnchr 0x7242e96d +vmlinux strncmp 0x85abc85f +vmlinux strncpy 0x7ec9bfbc +vmlinux strnicmp 0x756e6992 +vmlinux strnlen 0xcc07af75 +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0x3fa913da +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0xabec677a +vmlinux submit_bh 0x4d2bb1a0 +vmlinux submit_bio 0x4715b57b +vmlinux subsys_create_file 0x36320ced +vmlinux subsys_remove_file 0x7ddd7d9c +vmlinux subsystem_init 0x05a63009 +vmlinux subsystem_register 0x87e8e3f0 +vmlinux subsystem_unregister 0x12d2dadc +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0xfc2c1a9b +vmlinux swiotlb_alloc_coherent 0x035fa166 +vmlinux swiotlb_dma_mapping_error 0x0da9776d +vmlinux swiotlb_dma_supported 0x438555be +vmlinux swiotlb_free_coherent 0x9f311273 +vmlinux swiotlb_init 0xc2ed2fce +vmlinux swiotlb_map_sg 0xbe60da7b +vmlinux swiotlb_map_single 0xee79751d +vmlinux swiotlb_sync_sg_for_cpu 0x6815ffa9 +vmlinux swiotlb_sync_sg_for_device 0x2950a16a +vmlinux swiotlb_sync_single_for_cpu 0x8e625e82 +vmlinux swiotlb_sync_single_for_device 0x12da6ad6 +vmlinux swiotlb_sync_single_range_for_cpu 0x38f2932d +vmlinux swiotlb_sync_single_range_for_device 0xc275ce82 +vmlinux swiotlb_unmap_sg 0xa23d539e +vmlinux swiotlb_unmap_single 0x1ae59420 +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0xb101cdd2 +vmlinux sync_dirty_buffer 0x1a5af770 +vmlinux sync_inode 0xc693bc27 +vmlinux sync_mapping_buffers 0x359a4206 +vmlinux sync_page_range 0xe11ed886 +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xde76e7bc +vmlinux sys_ioctl 0x1b610907 +vmlinux sys_open 0x701039bd +vmlinux sys_read 0xd4e65327 +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0x46882b0f +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0xc38e9a1d +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0x1f733cfc +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0xc86851fe +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x77699f15 +vmlinux sysdev_class_unregister 0x876d3f84 +vmlinux sysdev_create_file 0x972bed49 +vmlinux sysdev_driver_register 0x1ed9125f +vmlinux sysdev_driver_unregister 0x537b921c +vmlinux sysdev_register 0x239a9e33 +vmlinux sysdev_remove_file 0x63f9405b +vmlinux sysdev_unregister 0x22804929 +vmlinux sysfs_chmod_file 0x48b088a7 +vmlinux sysfs_create_bin_file 0x1b8e2e69 +vmlinux sysfs_create_dir 0x9a481273 +vmlinux sysfs_create_file 0x2f4a48a0 +vmlinux sysfs_create_group 0x67cc7e58 +vmlinux sysfs_create_link 0x06c3fca5 +vmlinux sysfs_remove_bin_file 0xf91366fb +vmlinux sysfs_remove_dir 0x37668632 +vmlinux sysfs_remove_file 0x1e9a5870 +vmlinux sysfs_remove_group 0x14a7bfc4 +vmlinux sysfs_remove_link 0xffbdb81f +vmlinux sysfs_rename_dir 0x13f8c81f +vmlinux sysfs_update_file 0xda3d193b +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0x20e51bb6 +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0xf63545a3 +vmlinux task_nice 0x2330d6ff +vmlinux task_no_data_intr 0xc391ecca +vmlinux tasklet_init 0x69575bcc +vmlinux tasklet_kill 0x74e05d8c +vmlinux tasklist_lock 0x676da348 +vmlinux tc_classify 0xcddb72dc +vmlinux tcf_em_register 0xa35aa096 +vmlinux tcf_em_tree_destroy 0x1bd6ce5d +vmlinux tcf_em_tree_dump 0xe7b7eb72 +vmlinux tcf_em_tree_validate 0x6e5da21c +vmlinux tcf_em_unregister 0x187f306a +vmlinux tcf_exts_change 0xaffe790c +vmlinux tcf_exts_destroy 0x39988c7c +vmlinux tcf_exts_dump 0xe2917109 +vmlinux tcf_exts_dump_stats 0xb4e3b36d +vmlinux tcf_exts_validate 0x86d44945 +vmlinux tcf_police 0x15bd579a +vmlinux tcf_police_destroy 0x2b5092f4 +vmlinux tcf_police_dump 0x04000688 +vmlinux tcf_police_dump_stats 0xc48f420e +vmlinux tcf_police_hash 0xc81dc21b +vmlinux tcf_police_ht 0x27f40e10 +vmlinux tcf_police_locate 0x24561b32 +vmlinux tcf_police_lookup 0x742b33fb +vmlinux tcf_police_new_index 0x5ed742fd +vmlinux tcp_check_req 0xe2fc1419 +vmlinux tcp_child_process 0x883cf33f +vmlinux tcp_close 0xe178c38d +vmlinux tcp_connect 0xbdc8f9ad +vmlinux tcp_create_openreq_child 0xe58de0e9 +vmlinux tcp_death_row 0xc9c47e7a +vmlinux tcp_disconnect 0x796b6c4d +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0xa6842aaf +vmlinux tcp_getsockopt 0x5d88aa19 +vmlinux tcp_hashinfo 0xd5d1850f +vmlinux tcp_init_congestion_ops 0xbf61c98e +vmlinux tcp_init_xmit_timers 0x2c3d3783 +vmlinux tcp_ioctl 0x5f66b66e +vmlinux tcp_make_synack 0xf49803ce +vmlinux tcp_memory_allocated 0x6f4fc248 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0xef4bf493 +vmlinux tcp_parse_options 0x65f65864 +vmlinux tcp_poll 0x25c65b82 +vmlinux tcp_proc_register 0x1c65e71a +vmlinux tcp_proc_unregister 0x24fa6545 +vmlinux tcp_prot 0x2c0c8a09 +vmlinux tcp_rcv_established 0x3d68f053 +vmlinux tcp_rcv_state_process 0xe08a92b6 +vmlinux tcp_read_sock 0x78c33a7c +vmlinux tcp_recvmsg 0x1c3db647 +vmlinux tcp_register_congestion_control 0xfc84f030 +vmlinux tcp_reno_cong_avoid 0xd8f48c82 +vmlinux tcp_reno_min_cwnd 0x41af6c51 +vmlinux tcp_reno_ssthresh 0xd8bb9942 +vmlinux tcp_sendmsg 0x3cf43b47 +vmlinux tcp_sendpage 0xdabe6112 +vmlinux tcp_setsockopt 0x8090bc2d +vmlinux tcp_shutdown 0x1bf42e8e +vmlinux tcp_simple_retransmit 0x9571c8b3 +vmlinux tcp_sockets_allocated 0x3947c486 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0x2eff0710 +vmlinux tcp_timewait_state_process 0xa8bfb12a +vmlinux tcp_unhash 0x8df0c079 +vmlinux tcp_unregister_congestion_control 0x8de845bb +vmlinux tcp_v4_conn_request 0x16ac3e2a +vmlinux tcp_v4_connect 0xde7d0db7 +vmlinux tcp_v4_destroy_sock 0x190e1943 +vmlinux tcp_v4_do_rcv 0x4660768c +vmlinux tcp_v4_remember_stamp 0xbe8e56f2 +vmlinux tcp_v4_send_check 0x7ce313a6 +vmlinux tcp_v4_syn_recv_sock 0xfde81f6c +vmlinux test_clear_page_dirty 0x9c97f119 +vmlinux test_set_page_writeback 0x7a0dde83 +vmlinux textsearch_destroy 0x4ebff8db +vmlinux textsearch_find_continuous 0x53f857c0 +vmlinux textsearch_prepare 0xed3633b1 +vmlinux textsearch_register 0x2edfa4ae +vmlinux textsearch_unregister 0x7569bd7a +vmlinux thaw_bdev 0xd20b230f +vmlinux timespec_trunc 0xc045ad4e +vmlinux tioca_fastwrite_enable 0x1e94cc43 +vmlinux tioca_gart_found 0xad4cf1ca +vmlinux tioca_list 0x8716021f +vmlinux tiocx_bus_type 0x31323307 +vmlinux tiocx_dma_addr 0xa049e49a +vmlinux tiocx_irq_alloc 0x600cd584 +vmlinux tiocx_irq_free 0xc3ecf245 +vmlinux tiocx_swin_base 0x883a0061 +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0xe86934ab +vmlinux tr_type_trans 0x3863412c +vmlinux transport_add_device 0xf7e7ba6c +vmlinux transport_class_register 0xbcb12726 +vmlinux transport_class_unregister 0xdda9765d +vmlinux transport_configure_device 0x8eae5b6c +vmlinux transport_destroy_device 0xbc86e9f5 +vmlinux transport_remove_device 0xc71cc8ed +vmlinux transport_setup_device 0x26892e09 +vmlinux truncate_inode_pages 0x372e18fc +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0x7ec9d2dc +vmlinux try_to_release_page 0x6e9f73bd +vmlinux tty_check_change 0x08644eca +vmlinux tty_flip_buffer_push 0x4029bc96 +vmlinux tty_get_baud_rate 0x436220a6 +vmlinux tty_hangup 0x894c4f48 +vmlinux tty_hung_up_p 0xe1b399bf +vmlinux tty_ldisc_deref 0x0940343b +vmlinux tty_ldisc_flush 0xe8a917b5 +vmlinux tty_ldisc_get 0x3128204a +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x22951b4d +vmlinux tty_ldisc_ref_wait 0x86791206 +vmlinux tty_name 0x9d65671d +vmlinux tty_register_device 0x3b6bac6d +vmlinux tty_register_driver 0x1997e665 +vmlinux tty_register_ldisc 0xc9369a61 +vmlinux tty_set_operations 0xeb639c67 +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0xe5a50907 +vmlinux tty_unregister_driver 0xeee328c9 +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0xd9297611 +vmlinux tty_wait_until_sent 0x7ac9b31e +vmlinux tty_wakeup 0x1bae0ab2 +vmlinux uart_add_one_port 0xb0b97888 +vmlinux uart_get_baud_rate 0x7c35bf62 +vmlinux uart_get_divisor 0x9b219b90 +vmlinux uart_match_port 0x15eeb2ea +vmlinux uart_register_driver 0xc89afb0f +vmlinux uart_remove_one_port 0x8398864c +vmlinux uart_resume_port 0x5d205e58 +vmlinux uart_suspend_port 0xf841ea58 +vmlinux uart_unregister_driver 0x87361829 +vmlinux uart_update_timeout 0x720fbc58 +vmlinux uart_write_wakeup 0xe2d8bdbf +vmlinux udelay 0xa39b4cf2 +vmlinux udp_disconnect 0xa0a45be4 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0x1a2def9b +vmlinux udp_ioctl 0x5362fadc +vmlinux udp_poll 0x5917e854 +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x5dd541d3 +vmlinux udp_proc_unregister 0xcc13541f +vmlinux udp_prot 0x31b29753 +vmlinux udp_sendmsg 0x78665143 +vmlinux uhci_check_and_reset_hc 0x14b588db +vmlinux uhci_reset_hc 0x882c9f81 +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux uncached_alloc_page 0x4bb9a7ee +vmlinux uncached_free_page 0x5f6b0c84 +vmlinux unload_nls 0xe3430fef +vmlinux unlock_buffer 0x2c037ac1 +vmlinux unlock_kernel 0xb1f975aa +vmlinux unlock_new_inode 0xa0bb7557 +vmlinux unlock_page 0x0452eb42 +vmlinux unlock_rename 0xa12b5271 +vmlinux unmap_mapping_range 0x09c3dde6 +vmlinux unmap_underlying_metadata 0x1a80e5b3 +vmlinux unregister_8022_client 0xef4bb9f4 +vmlinux unregister_acpi_bus_type 0xbd293557 +vmlinux unregister_binfmt 0x832bdc84 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0x8488c868 +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_die_notifier 0x01a4ea6d +vmlinux unregister_exec_domain 0x8c94e0f8 +vmlinux unregister_filesystem 0x5c04bee2 +vmlinux unregister_framebuffer 0xe784cd22 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0xf1459b43 +vmlinux unregister_netdevice 0x0e4d8a93 +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0x1ed7b010 +vmlinux unregister_qdisc 0x03b03e8c +vmlinux unregister_quota_format 0xd585dd55 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0x62b2cb9f +vmlinux unregister_snap_client 0x812a90b5 +vmlinux unregister_sound_dsp 0xcd083b10 +vmlinux unregister_sound_midi 0xfdab6de3 +vmlinux unregister_sound_mixer 0x7afc9d8a +vmlinux unregister_sound_special 0x99c95fa5 +vmlinux unregister_sound_synth 0xdf03108a +vmlinux unregister_sysctl_table 0x82597398 +vmlinux unregister_sysrq_key 0x8d82765e +vmlinux unregister_tcf_proto_ops 0xf1a667b2 +vmlinux unregister_timer_hook 0xe3e1f28b +vmlinux unregister_wlandev 0x2a54c2ee +vmlinux unshare_files 0x04a20170 +vmlinux unw_access_ar 0x5285ca5f +vmlinux unw_access_br 0xf4ecdc1d +vmlinux unw_access_fr 0xfa3356d8 +vmlinux unw_access_gr 0x14b4a6e8 +vmlinux unw_access_pr 0x285538aa +vmlinux unw_init_frame_info 0xc9dea42e +vmlinux unw_init_from_blocked_task 0x61c5cee9 +vmlinux unw_init_running 0x7540d5ce +vmlinux unw_unwind 0x5730d18e +vmlinux unw_unwind_to_user 0x361dcfcd +vmlinux update_atime 0xbb15a84d +vmlinux update_region 0x8d9997db +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0x9e20cbce +vmlinux vc_cons 0xbabe9103 +vmlinux vc_resize 0x3af748b6 +vmlinux vesa_modes 0xdffc80fc +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0xb84bcb72 +vmlinux vfs_follow_link 0xbd04ce13 +vmlinux vfs_fstat 0x49afabd6 +vmlinux vfs_get_dqblk 0xeb4fb10e +vmlinux vfs_get_dqinfo 0xc630f24a +vmlinux vfs_getattr 0x617f3ff5 +vmlinux vfs_link 0xf26a8d20 +vmlinux vfs_llseek 0x9baa7415 +vmlinux vfs_lstat 0xfa7b025a +vmlinux vfs_mkdir 0xfbac20a2 +vmlinux vfs_mknod 0x9a18e8b4 +vmlinux vfs_permission 0x50290bca +vmlinux vfs_quota_off 0x271e016a +vmlinux vfs_quota_on 0xbe740583 +vmlinux vfs_quota_on_mount 0xf5bf0b02 +vmlinux vfs_quota_sync 0x31774052 +vmlinux vfs_read 0x92ac5699 +vmlinux vfs_readdir 0x3cefe60c +vmlinux vfs_readlink 0x64284a2d +vmlinux vfs_readv 0xcb0a17bd +vmlinux vfs_rename 0x6c5c42e0 +vmlinux vfs_rmdir 0x20d8757c +vmlinux vfs_set_dqblk 0x504cdbab +vmlinux vfs_set_dqinfo 0x3de41b29 +vmlinux vfs_stat 0xa90a7605 +vmlinux vfs_statfs 0xb10467c4 +vmlinux vfs_symlink 0x71584401 +vmlinux vfs_unlink 0x9ac63bc5 +vmlinux vfs_write 0x2d87cff0 +vmlinux vfs_writev 0xf1abc303 +vmlinux vga_console_membase 0x455fbbb2 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x1cbd209c +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_end 0x2a5465cf +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0xe8be7572 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0xa8981110 +vmlinux vmem_map 0xc5bf1db5 +vmlinux vmtruncate 0x32d45acc +vmlinux vprintk 0xdef29882 +vmlinux vscnprintf 0xf3522c9c +vmlinux vsnprintf 0x0e57f111 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0x4a2e39f2 +vmlinux wait_for_completion_interruptible 0x126be65c +vmlinux wait_for_completion_interruptible_timeout 0xae13f703 +vmlinux wait_for_completion_timeout 0x4696be0a +vmlinux wait_on_page_bit 0x603d1a7b +vmlinux wait_on_sync_kiocb 0x65c8548c +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0xc71bc751 +vmlinux wireless_send_event 0x92c18078 +vmlinux wireless_spy_update 0x0ee7033c +vmlinux wlan_setup 0xe7bc5978 +vmlinux wlan_unsetup 0xf4d1be98 +vmlinux write_inode_now 0x2b1716db +vmlinux write_one_page 0xaa42c82f +vmlinux xfrm4_rcv 0x23be4327 +vmlinux xfrm_aalg_get_byid 0xa0fc38f1 +vmlinux xfrm_aalg_get_byidx 0x8e69ed47 +vmlinux xfrm_aalg_get_byname 0x4af7a738 +vmlinux xfrm_alloc_spi 0x3f1cc514 +vmlinux xfrm_bundle_ok 0x6a6152a6 +vmlinux xfrm_calg_get_byid 0x8eacf171 +vmlinux xfrm_calg_get_byname 0x271286de +vmlinux xfrm_cfg_sem 0x6c4ebaf1 +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0x57bef3a3 +vmlinux xfrm_dst_lookup 0x999c3bf3 +vmlinux xfrm_ealg_get_byid 0xfc5dabf1 +vmlinux xfrm_ealg_get_byidx 0xffe3f76d +vmlinux xfrm_ealg_get_byname 0x913de4f4 +vmlinux xfrm_find_acq 0x1bac30f5 +vmlinux xfrm_find_acq_byseq 0xc712f4d8 +vmlinux xfrm_get_acqseq 0xb01bebf9 +vmlinux xfrm_init_pmtu 0x51358219 +vmlinux xfrm_init_state 0x3017f333 +vmlinux xfrm_lookup 0xd06b4bf1 +vmlinux xfrm_parse_spi 0xde6cc50c +vmlinux xfrm_policy_alloc 0x72398d01 +vmlinux xfrm_policy_byid 0xf1fc8769 +vmlinux xfrm_policy_bysel 0x35a910e8 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x3ca0015e +vmlinux xfrm_policy_list 0x355fc6b4 +vmlinux xfrm_policy_register_afinfo 0xc7604cd8 +vmlinux xfrm_policy_unregister_afinfo 0xc147f204 +vmlinux xfrm_policy_walk 0x75e8047c +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0x6321b9c3 +vmlinux xfrm_register_type 0x2179ff7b +vmlinux xfrm_replay_advance 0x48af8879 +vmlinux xfrm_replay_check 0x8c7c04ce +vmlinux xfrm_state_add 0xaee6cc6c +vmlinux xfrm_state_alloc 0x092d4372 +vmlinux xfrm_state_check 0xad6cb430 +vmlinux xfrm_state_check_expire 0xf25c9166 +vmlinux xfrm_state_delete 0x4705fd49 +vmlinux xfrm_state_delete_tunnel 0xa8005c62 +vmlinux xfrm_state_flush 0x4d093dfa +vmlinux xfrm_state_insert 0xc234fde5 +vmlinux xfrm_state_lookup 0xcc0828c9 +vmlinux xfrm_state_mtu 0xcf9aa8ef +vmlinux xfrm_state_register_afinfo 0xcf2619f3 +vmlinux xfrm_state_unregister_afinfo 0x14f8d1e9 +vmlinux xfrm_state_update 0x32033c2b +vmlinux xfrm_state_walk 0x6ec650e6 +vmlinux xfrm_unregister_km 0xf4afc1f4 +vmlinux xfrm_unregister_type 0x65815bfc +vmlinux xfrm_user_policy 0x592442fa +vmlinux xor_ia64_2 0xeeb8a24c +vmlinux xor_ia64_3 0x2f367d8c +vmlinux xor_ia64_4 0x060d680f +vmlinux xor_ia64_5 0xc783b7cf +vmlinux xrlim_allow 0x7723d809 +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xd58b0eb8 +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x432f337e +vmlinux zero_page_memmap_ptr 0x433c7443 +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0x3d5edf82 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/ia64/mckinley.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/ia64/mckinley.modules @@ -0,0 +1,1327 @@ +3c359 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +8021q +8139cp +8139too +8390 +9p2000 +a100u2w +a3d +aacraid +ac97_codec +acecad +acenic +acpiphp +acpiphp_ibm +acx +adfs +adi +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +adv7170 +adv7175 +adv717x +aec62xx +aes +affs +af_key +agpgart +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airprime +alim15x3 +amd8111e +analog +anubis +aoe +appletalk +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atp870u +atxp1 +aty128fb +atyfb +auerswald +auth_rpcgss +autofs +autofs4 +ax25 +axnet_cs +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_misc +bitblit +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bnep +bnx2 +bonding +bpa10x +bpck +bpqether +bridge +bsd_comp +bt3c_cs +bt819 +bt856 +bt865 +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +button +bw-qcam +capability +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm4000_cs +cm4040_cs +cman +cmd64x +cn +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +comm +commoncap +configfs +container +cp2101 +cpia +cpia_pp +cpia_usb +cpqarray +cpufreq_conservative +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cs5520 +cs5530 +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxgb +cy82c693 +cyber2000fb +cyberjack +cyblafb +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +des +dev_acpi +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +diskonchip +dl2k +dlci +dlm +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +dpc7146 +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dst +dst_ca +dstr +ds_w1_bridge +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +eagle-usb +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +eepro100 +eeprom +efivars +efs +ehci-hcd +em28xx +em8300 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +epat +epia +epic100 +eql +eth1394 +evbug +evdev +exportfs +ext2 +ext3 +fakephp +fan +farsync +fat +faulty +fbcon +fdomain_cs +fealnx +fit2 +fit3 +fm801-gp +fmvj18x_cs +font +forcedeth +freevxfs +freq_table +friq +frpw +fscher +fscpos +ftdi_sio +ftl +fuse +g450_pll +gamecon +gameport +garmin_gps +generic +gen_probe +gf2k +gfs +gl518sm +gl520sm +gl620a +gnbd +grip +grip_mp +guillemot +hamachi +hangcheck-timer +hci_uart +hci_usb +hci_vhci +hdlc +hdlcdrv +hermes +hexium_gemini +hexium_orion +hfs +hfsplus +hidp +hostap +hostap_cs +hostap_pci +hostap_plx +hp4x +hp-agp +hpfs +hpt34x +hpt366 +hwmon-vid +i2c-algo-bit +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-core +i2c-dev +i2c-i801 +i2c-i810 +i2c-isa +i2c-matroxfb +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i460-agp +i8042 +i810_audio +i82092 +ib_cm +ib_core +ib_ipoib +ib_mad +ibmcam +ib_mthca +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ide-cd +ide-cs +ide-disk +ide-floppy +ide-generic +ide-pnp +ide-scsi +ide-tape +idmouse +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +inftl +initio +interact +io_edgeport +io_ti +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irtty-sir +ir-usb +iscsi_tcp +islsm +islsm_device +islsm_pci +islsm_usb +isofs +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kaweth +kbic +kbtab +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l64781 +lcd +ldusb +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lockd +lock_dlm +lock_gulm +lock_harness +lock_nolock +loop +lp +lpfc +lxt +macmodes +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1619 +max6875 +mbcs +mca_recovery +mct_u232 +md4 +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mga +michael_mic +microtek +mii +minix +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mrv8k +msdos +msnd +msnd_classic +msnd_pinnacle +msp3400 +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mxb +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +ne2k-pci +neofb +net1080 +netconsole +netrom +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +ntfs +nvidiafb +nxt2002 +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ohci1394 +ohci-hcd +olympic +omninet +on20 +on26 +onenand +oprofile +opti621 +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +palinfo +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pc300 +pc87360 +pca9539 +pcd +pcf8574 +pcf8591 +pci +pci200syn +pci_hotplug +pcilynx +pcips2 +pcmcia +pcmcia_core +pcnet32 +pcnet_cs +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +piix +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmc551 +podxtpro +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +processor +psmouse +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radeonfb +radio-gemtek-pci +radio-maestro +radio-maxiradio +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio500 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc8564 +rtl8150 +rxrpc +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7110 +saa7111 +saa7114 +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +saa7185 +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb1000 +sbp2 +sc1200 +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200_acb +sd_mod +se401 +seclvl +serial_cs +serio_raw +sermouse +serpent +serport +serverworks +sg +sha1 +sha256 +sha512 +shaper +shpchp +sidewinder +siimage +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sk98lin +skfp +skge +sky2 +sl811_cs +sl811-hcd +slc90e66 +slhc +slip +slram +smbfs +smc91c92_cs +smsc47b397 +smsc47m1 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1889 +snd-ainstr-fm +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fm801 +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +softcursor +sp8870 +sp887x +spaceball +spaceorb +spca5xx +spectrum_cs +squashfs +sr_mod +sstfb +st +starfire +stinger +stir4200 +stradis +strip +stv0297 +stv0299 +stv680 +sundance +sunkbd +sunrpc +sx8 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink_cs +synclinkmp +syncppp +sysv +tc1100-wmi +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tdfxfb +tea +tea6415c +tea6420 +tg3 +tgr192 +thermal +tileblit +tipar +ti_usb_3410_5052 +tlclk +tmdc +tmscsim +touchkitusb +tpm +tpm_atmel +tpm_infineon +tpm_nsc +trident +tridentfb +triflex +trm290 +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +tvp5150 +twidjoy +twofish +typhoon +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +umem +unionfs +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vesafb +vfat +vga16fb +vgastate +via +via686a +via82cxxx +via-rhine +via-velocity +vicam +video1394 +video-buf +video-buf-dvb +videocodec +videodev +visor +vpx3220 +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w83627ehf +w83627hf +w83781d +w83792d +w83l785ts +w9966 +w9968cf +wacom +wanrouter +wanxl +warrior +wavelan_cs +winbond-840 +wire +wl3501_cs +wm8775 +wp512 +x1205 +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xircom_tulip_cb +xor +xp +xpad +xpc +xpnet +xtkbd +yam +yealink +yellowfin +yenta_socket +zaurus +zd1201 +zd1211 +zlib_deflate +zr36016 +zr36050 +zr36060 +zr36067 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/ia64/mckinley-smp.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/ia64/mckinley-smp.modules @@ -0,0 +1,1326 @@ +3c359 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +8021q +8139cp +8139too +8390 +9p2000 +a100u2w +a3d +aacraid +ac97_codec +acecad +acenic +acpiphp +acpiphp_ibm +acx +adfs +adi +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +adv7170 +adv7175 +adv717x +aec62xx +aes +affs +af_key +agpgart +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airprime +alim15x3 +amd8111e +analog +anubis +aoe +appletalk +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atp870u +atxp1 +aty128fb +atyfb +auerswald +auth_rpcgss +autofs +autofs4 +ax25 +axnet_cs +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_misc +bitblit +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bnep +bnx2 +bonding +bpa10x +bpck +bpqether +bridge +bsd_comp +bt3c_cs +bt819 +bt856 +bt865 +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +button +bw-qcam +capability +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm4000_cs +cm4040_cs +cman +cmd64x +cn +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +comm +commoncap +configfs +container +cp2101 +cpia +cpia_pp +cpia_usb +cpqarray +cpufreq_conservative +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cs5520 +cs5530 +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxgb +cy82c693 +cyber2000fb +cyberjack +cyblafb +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +des +dev_acpi +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +diskonchip +dl2k +dlci +dlm +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +dpc7146 +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dst +dst_ca +dstr +ds_w1_bridge +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +eagle-usb +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +eepro100 +eeprom +efivars +efs +ehci-hcd +em28xx +em8300 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +epat +epia +epic100 +eql +eth1394 +evbug +evdev +exportfs +ext2 +ext3 +fakephp +fan +farsync +fat +faulty +fbcon +fdomain_cs +fealnx +fit2 +fit3 +fm801-gp +fmvj18x_cs +font +forcedeth +freevxfs +freq_table +friq +frpw +fscher +fscpos +ftdi_sio +ftl +fuse +g450_pll +gamecon +gameport +garmin_gps +generic +gen_probe +gf2k +gfs +gl518sm +gl520sm +gl620a +gnbd +grip +grip_mp +guillemot +hamachi +hangcheck-timer +hci_uart +hci_usb +hci_vhci +hdlc +hdlcdrv +hermes +hexium_gemini +hexium_orion +hfs +hfsplus +hidp +hostap +hostap_cs +hostap_pci +hostap_plx +hp4x +hp-agp +hpfs +hpt34x +hpt366 +hwmon-vid +i2c-algo-bit +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-core +i2c-dev +i2c-i801 +i2c-i810 +i2c-isa +i2c-matroxfb +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i460-agp +i8042 +i810_audio +i82092 +ib_cm +ib_core +ib_ipoib +ib_mad +ibmcam +ib_mthca +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ide-cd +ide-cs +ide-disk +ide-floppy +ide-generic +ide-pnp +ide-scsi +ide-tape +idmouse +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +inftl +initio +interact +io_edgeport +io_ti +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irtty-sir +ir-usb +iscsi_tcp +islsm +islsm_device +islsm_pci +islsm_usb +isofs +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kaweth +kbic +kbtab +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l64781 +lcd +ldusb +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lockd +lock_dlm +lock_gulm +lock_harness +lock_nolock +loop +lp +lpfc +lxt +macmodes +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1619 +max6875 +mbcs +mca_recovery +mct_u232 +md4 +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mga +michael_mic +microtek +mii +minix +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mrv8k +msdos +msnd +msnd_classic +msnd_pinnacle +msp3400 +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mxb +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +ne2k-pci +neofb +net1080 +netconsole +netrom +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +ntfs +nvidiafb +nxt2002 +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ohci1394 +ohci-hcd +olympic +omninet +on20 +on26 +onenand +oprofile +opti621 +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +palinfo +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pc300 +pc87360 +pca9539 +pcd +pcf8574 +pcf8591 +pci +pci200syn +pci_hotplug +pcilynx +pcips2 +pcmcia +pcmcia_core +pcnet32 +pcnet_cs +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +piix +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmc551 +podxtpro +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +processor +psmouse +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radeonfb +radio-gemtek-pci +radio-maestro +radio-maxiradio +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio500 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc8564 +rtl8150 +rxrpc +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7110 +saa7111 +saa7114 +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +saa7185 +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb1000 +sbp2 +sc1200 +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200_acb +sd_mod +se401 +seclvl +serial_cs +serio_raw +sermouse +serpent +serport +serverworks +sg +sha1 +sha256 +sha512 +shaper +shpchp +sidewinder +siimage +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sk98lin +skfp +skge +sky2 +sl811_cs +sl811-hcd +slc90e66 +slhc +slip +slram +smbfs +smc91c92_cs +smsc47b397 +smsc47m1 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1889 +snd-ainstr-fm +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fm801 +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +softcursor +sp8870 +sp887x +spaceball +spaceorb +spca5xx +spectrum_cs +squashfs +sr_mod +sstfb +st +starfire +stinger +stir4200 +stradis +strip +stv0297 +stv0299 +stv680 +sundance +sunkbd +sunrpc +sx8 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink_cs +synclinkmp +syncppp +sysv +tc1100-wmi +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tdfxfb +tea +tea6415c +tea6420 +tg3 +tgr192 +thermal +tileblit +tipar +ti_usb_3410_5052 +tlclk +tmdc +tmscsim +touchkitusb +tpm +tpm_atmel +tpm_infineon +tpm_nsc +trident +tridentfb +triflex +trm290 +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +tvp5150 +twidjoy +twofish +typhoon +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +umem +unionfs +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vesafb +vfat +vga16fb +vgastate +via +via686a +via82cxxx +via-rhine +via-velocity +vicam +video1394 +video-buf +video-buf-dvb +videocodec +videodev +visor +vpx3220 +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w83627ehf +w83627hf +w83781d +w83792d +w83l785ts +w9966 +w9968cf +wacom +wanrouter +wanxl +warrior +wavelan_cs +winbond-840 +wire +wl3501_cs +wm8775 +wp512 +x1205 +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xor +xp +xpad +xpc +xpnet +xtkbd +yam +yealink +yellowfin +yenta_socket +zaurus +zd1201 +zd1211 +zlib_deflate +zr36016 +zr36050 +zr36060 +zr36067 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/ia64/itanium.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/ia64/itanium.modules @@ -0,0 +1,1327 @@ +3c359 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +8021q +8139cp +8139too +8390 +9p2000 +a100u2w +a3d +aacraid +ac97_codec +acecad +acenic +acpiphp +acpiphp_ibm +acx +adfs +adi +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +adv7170 +adv7175 +adv717x +aec62xx +aes +affs +af_key +agpgart +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airprime +alim15x3 +amd8111e +analog +anubis +aoe +appletalk +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atp870u +atxp1 +aty128fb +atyfb +auerswald +auth_rpcgss +autofs +autofs4 +ax25 +axnet_cs +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_misc +bitblit +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bnep +bnx2 +bonding +bpa10x +bpck +bpqether +bridge +bsd_comp +bt3c_cs +bt819 +bt856 +bt865 +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +button +bw-qcam +capability +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm4000_cs +cm4040_cs +cman +cmd64x +cn +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +comm +commoncap +configfs +container +cp2101 +cpia +cpia_pp +cpia_usb +cpqarray +cpufreq_conservative +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cs5520 +cs5530 +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxgb +cy82c693 +cyber2000fb +cyberjack +cyblafb +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +des +dev_acpi +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +diskonchip +dl2k +dlci +dlm +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +dpc7146 +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dst +dst_ca +dstr +ds_w1_bridge +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +eagle-usb +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +eepro100 +eeprom +efivars +efs +ehci-hcd +em28xx +em8300 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +epat +epia +epic100 +eql +eth1394 +evbug +evdev +exportfs +ext2 +ext3 +fakephp +fan +farsync +fat +faulty +fbcon +fdomain_cs +fealnx +fit2 +fit3 +fm801-gp +fmvj18x_cs +font +forcedeth +freevxfs +freq_table +friq +frpw +fscher +fscpos +ftdi_sio +ftl +fuse +g450_pll +gamecon +gameport +garmin_gps +generic +gen_probe +gf2k +gfs +gl518sm +gl520sm +gl620a +gnbd +grip +grip_mp +guillemot +hamachi +hangcheck-timer +hci_uart +hci_usb +hci_vhci +hdlc +hdlcdrv +hermes +hexium_gemini +hexium_orion +hfs +hfsplus +hidp +hostap +hostap_cs +hostap_pci +hostap_plx +hp4x +hp-agp +hpfs +hpt34x +hpt366 +hwmon-vid +i2c-algo-bit +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-core +i2c-dev +i2c-i801 +i2c-i810 +i2c-isa +i2c-matroxfb +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i460-agp +i8042 +i810_audio +i82092 +ib_cm +ib_core +ib_ipoib +ib_mad +ibmcam +ib_mthca +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ide-cd +ide-cs +ide-disk +ide-floppy +ide-generic +ide-pnp +ide-scsi +ide-tape +idmouse +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +inftl +initio +interact +io_edgeport +io_ti +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irtty-sir +ir-usb +iscsi_tcp +islsm +islsm_device +islsm_pci +islsm_usb +isofs +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kaweth +kbic +kbtab +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l64781 +lcd +ldusb +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lockd +lock_dlm +lock_gulm +lock_harness +lock_nolock +loop +lp +lpfc +lxt +macmodes +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1619 +max6875 +mbcs +mca_recovery +mct_u232 +md4 +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mga +michael_mic +microtek +mii +minix +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mrv8k +msdos +msnd +msnd_classic +msnd_pinnacle +msp3400 +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mxb +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +ne2k-pci +neofb +net1080 +netconsole +netrom +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +ntfs +nvidiafb +nxt2002 +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ohci1394 +ohci-hcd +olympic +omninet +on20 +on26 +onenand +oprofile +opti621 +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +palinfo +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pc300 +pc87360 +pca9539 +pcd +pcf8574 +pcf8591 +pci +pci200syn +pci_hotplug +pcilynx +pcips2 +pcmcia +pcmcia_core +pcnet32 +pcnet_cs +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +piix +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmc551 +podxtpro +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +processor +psmouse +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radeonfb +radio-gemtek-pci +radio-maestro +radio-maxiradio +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio500 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc8564 +rtl8150 +rxrpc +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7110 +saa7111 +saa7114 +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +saa7185 +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb1000 +sbp2 +sc1200 +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200_acb +sd_mod +se401 +seclvl +serial_cs +serio_raw +sermouse +serpent +serport +serverworks +sg +sha1 +sha256 +sha512 +shaper +shpchp +sidewinder +siimage +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sk98lin +skfp +skge +sky2 +sl811_cs +sl811-hcd +slc90e66 +slhc +slip +slram +smbfs +smc91c92_cs +smsc47b397 +smsc47m1 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1889 +snd-ainstr-fm +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fm801 +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +softcursor +sp8870 +sp887x +spaceball +spaceorb +spca5xx +spectrum_cs +squashfs +sr_mod +sstfb +st +starfire +stinger +stir4200 +stradis +strip +stv0297 +stv0299 +stv680 +sundance +sunkbd +sunrpc +sx8 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink_cs +synclinkmp +syncppp +sysv +tc1100-wmi +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tdfxfb +tea +tea6415c +tea6420 +tg3 +tgr192 +thermal +tileblit +tipar +ti_usb_3410_5052 +tlclk +tmdc +tmscsim +touchkitusb +tpm +tpm_atmel +tpm_infineon +tpm_nsc +trident +tridentfb +triflex +trm290 +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +tvp5150 +twidjoy +twofish +typhoon +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +umem +unionfs +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vesafb +vfat +vga16fb +vgastate +via +via686a +via82cxxx +via-rhine +via-velocity +vicam +video1394 +video-buf +video-buf-dvb +videocodec +videodev +visor +vpx3220 +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w83627ehf +w83627hf +w83781d +w83792d +w83l785ts +w9966 +w9968cf +wacom +wanrouter +wanxl +warrior +wavelan_cs +winbond-840 +wire +wl3501_cs +wm8775 +wp512 +x1205 +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xircom_tulip_cb +xor +xp +xpad +xpc +xpnet +xtkbd +yam +yealink +yellowfin +yenta_socket +zaurus +zd1201 +zd1211 +zlib_deflate +zr36016 +zr36050 +zr36060 +zr36067 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/ia64/mckinley +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/ia64/mckinley @@ -0,0 +1,5290 @@ +arch/ia64/sn/kernel/xp xp_nofault_PIOR 0x7c3462de +arch/ia64/sn/kernel/xp xp_nofault_PIOR_target 0xa2083314 +arch/ia64/sn/kernel/xp xpc_clear_interface 0x39046c7a +arch/ia64/sn/kernel/xp xpc_connect 0xc091f7cd +arch/ia64/sn/kernel/xp xpc_disconnect 0x345c9217 +arch/ia64/sn/kernel/xp xpc_interface 0xd68368ee +arch/ia64/sn/kernel/xp xpc_registrations 0x5286c25f +arch/ia64/sn/kernel/xp xpc_set_interface 0x7c6b194b +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0xd97119fe +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0xf1becd7b +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0x8fd87408 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xfdd59660 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/acpi/processor acpi_processor_notify_smm 0x9d345eb2 +drivers/acpi/processor acpi_processor_register_performance 0xc18341bc +drivers/acpi/processor acpi_processor_set_thermal_limit 0xe8a3605f +drivers/acpi/processor acpi_processor_unregister_performance 0xc7c5a4ed +drivers/block/loop loop_register_transfer 0x751ac60f +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0xc6fef1ac +drivers/block/paride/paride pi_disconnect 0xaa6cb725 +drivers/block/paride/paride pi_do_claimed 0x44508ada +drivers/block/paride/paride pi_init 0x502cc76b +drivers/block/paride/paride pi_read_block 0x33dcd36d +drivers/block/paride/paride pi_read_regr 0xc2042ae1 +drivers/block/paride/paride pi_register 0xd8eadd41 +drivers/block/paride/paride pi_release 0x1a3b8245 +drivers/block/paride/paride pi_schedule_claimed 0xe934cd22 +drivers/block/paride/paride pi_unregister 0xee17d82c +drivers/block/paride/paride pi_write_block 0x329ff6f6 +drivers/block/paride/paride pi_write_regr 0xb155f99c +drivers/cdrom/cdrom cdrom_get_last_written 0x50f48bf6 +drivers/cdrom/cdrom cdrom_get_media_event 0x0b3e137f +drivers/cdrom/cdrom cdrom_ioctl 0x984aa40f +drivers/cdrom/cdrom cdrom_media_changed 0x3dd92b7a +drivers/cdrom/cdrom cdrom_mode_select 0xd9b202d0 +drivers/cdrom/cdrom cdrom_mode_sense 0xb87886f3 +drivers/cdrom/cdrom cdrom_number_of_slots 0xab58c379 +drivers/cdrom/cdrom cdrom_open 0xeaa03c03 +drivers/cdrom/cdrom cdrom_release 0x5f871051 +drivers/cdrom/cdrom init_cdrom_command 0x4f476e96 +drivers/cdrom/cdrom register_cdrom 0x9f215951 +drivers/cdrom/cdrom unregister_cdrom 0xb44f9a0d +drivers/char/agp/agpgart agp3_generic_cleanup 0xc2424641 +drivers/char/agp/agpgart agp3_generic_configure 0x4b085dbf +drivers/char/agp/agpgart agp3_generic_fetch_size 0xde9b17ed +drivers/char/agp/agpgart agp3_generic_sizes 0xb48f27c2 +drivers/char/agp/agpgart agp3_generic_tlbflush 0xbcb5465e +drivers/char/agp/agpgart agp_add_bridge 0x353b5995 +drivers/char/agp/agpgart agp_alloc_bridge 0x1af656a5 +drivers/char/agp/agpgart agp_allocate_memory 0x29c3d969 +drivers/char/agp/agpgart agp_backend_acquire 0x9e8640ce +drivers/char/agp/agpgart agp_backend_release 0x79fedccc +drivers/char/agp/agpgart agp_bind_memory 0x80a6e2b3 +drivers/char/agp/agpgart agp_bridge 0xb0f9ff05 +drivers/char/agp/agpgart agp_bridges 0x673f815e +drivers/char/agp/agpgart agp_collect_device_status 0xeae0790c +drivers/char/agp/agpgart agp_copy_info 0x11f43539 +drivers/char/agp/agpgart agp_create_memory 0x351b0381 +drivers/char/agp/agpgart agp_device_command 0xa57d8d70 +drivers/char/agp/agpgart agp_enable 0x55d2f38a +drivers/char/agp/agpgart agp_find_bridge 0x7251803a +drivers/char/agp/agpgart agp_free_key 0xd0fef3b2 +drivers/char/agp/agpgart agp_free_memory 0x93c8b8e1 +drivers/char/agp/agpgart agp_generic_alloc_by_type 0x38ee77c6 +drivers/char/agp/agpgart agp_generic_alloc_page 0xf84f922c +drivers/char/agp/agpgart agp_generic_create_gatt_table 0x00ac8032 +drivers/char/agp/agpgart agp_generic_destroy_page 0xbba27749 +drivers/char/agp/agpgart agp_generic_enable 0x7f702176 +drivers/char/agp/agpgart agp_generic_free_by_type 0xf8f47597 +drivers/char/agp/agpgart agp_generic_free_gatt_table 0x78ace632 +drivers/char/agp/agpgart agp_generic_insert_memory 0xd41f4f78 +drivers/char/agp/agpgart agp_generic_mask_memory 0x24d49598 +drivers/char/agp/agpgart agp_generic_remove_memory 0xf107a78e +drivers/char/agp/agpgart agp_memory_reserved 0xe089cfcc +drivers/char/agp/agpgart agp_num_entries 0xd6feefa5 +drivers/char/agp/agpgart agp_off 0x7538b132 +drivers/char/agp/agpgart agp_put_bridge 0x1dd7a526 +drivers/char/agp/agpgart agp_remove_bridge 0xc9bf0e34 +drivers/char/agp/agpgart agp_try_unsupported_boot 0xc5d9c46c +drivers/char/agp/agpgart agp_unbind_memory 0x86af6908 +drivers/char/agp/agpgart get_agp_version 0x00ad8712 +drivers/char/agp/agpgart global_cache_flush 0xa4d4f0e6 +drivers/char/drm/drm drm_addbufs_agp 0x10648507 +drivers/char/drm/drm drm_addbufs_fb 0x86dae0d0 +drivers/char/drm/drm drm_addbufs_pci 0x7757e62c +drivers/char/drm/drm drm_addmap 0x7131d8ec +drivers/char/drm/drm drm_agp_acquire 0xf8277aa8 +drivers/char/drm/drm drm_agp_alloc 0x1f063606 +drivers/char/drm/drm drm_agp_bind 0x98c4f301 +drivers/char/drm/drm drm_agp_bind_memory 0xa9f33241 +drivers/char/drm/drm drm_agp_enable 0x6fad2b84 +drivers/char/drm/drm drm_agp_free 0xcdaeefd2 +drivers/char/drm/drm drm_agp_info 0xd771d9d2 +drivers/char/drm/drm drm_agp_release 0x4dfbf275 +drivers/char/drm/drm drm_agp_unbind 0xa0c291ab +drivers/char/drm/drm drm_ati_pcigart_cleanup 0xcda7a6ea +drivers/char/drm/drm drm_ati_pcigart_init 0x136c391f +drivers/char/drm/drm drm_compat_ioctl 0xd24ec57f +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0xd1040044 +drivers/char/drm/drm drm_core_reclaim_buffers 0x9ed67f5f +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0x3fdad76b +drivers/char/drm/drm drm_fasync 0xbfca1975 +drivers/char/drm/drm drm_get_dev 0x3bfa9318 +drivers/char/drm/drm drm_get_resource_len 0x5636c5e5 +drivers/char/drm/drm drm_get_resource_start 0x2232cb8e +drivers/char/drm/drm drm_init 0x814b54ab +drivers/char/drm/drm drm_ioctl 0x73f1ed34 +drivers/char/drm/drm drm_irq_uninstall 0x8da709bc +drivers/char/drm/drm drm_mmap 0x667bbe91 +drivers/char/drm/drm drm_open 0xabf7233b +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0x52359cf3 +drivers/char/drm/drm drm_pci_free 0xcef88c60 +drivers/char/drm/drm drm_poll 0x9e9e0dab +drivers/char/drm/drm drm_release 0xbfae98eb +drivers/char/drm/drm drm_rmmap 0x4f55986b +drivers/char/drm/drm drm_rmmap_locked 0x35cb3eec +drivers/char/drm/drm drm_vbl_send_signals 0xe2cf59e3 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0x0efed808 +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0x022b85fd +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0x6c39f1bb +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0x6ece00f8 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0xff9059fe +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0xd27cdc54 +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0xa1157e6d +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0xa4f3c379 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0x558cee71 +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x30e5842a +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0xda63122d +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0x8cc2f9e2 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0xc61eca8a +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0x5040d5be +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0x1c084596 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0x0200ec84 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0xb8164d80 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0xe1675134 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0x555d01bb +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0x31f501e2 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0x1ab60097 +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0x9c22f22c +drivers/char/tpm/tpm tpm_open 0xb2c9de77 +drivers/char/tpm/tpm tpm_pm_resume 0x714d81ae +drivers/char/tpm/tpm tpm_pm_suspend 0x0d1a46c4 +drivers/char/tpm/tpm tpm_read 0x4a516c72 +drivers/char/tpm/tpm tpm_register_hardware 0x42bb5ffc +drivers/char/tpm/tpm tpm_release 0xa56bc737 +drivers/char/tpm/tpm tpm_remove_hardware 0x4eb50272 +drivers/char/tpm/tpm tpm_show_caps 0xf2ab7e1d +drivers/char/tpm/tpm tpm_show_pcrs 0xab584be4 +drivers/char/tpm/tpm tpm_show_pubek 0x7dd311b7 +drivers/char/tpm/tpm tpm_store_cancel 0x91aa2818 +drivers/char/tpm/tpm tpm_write 0x9d059acc +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0x969b8068 +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0xf9d6aaa5 +drivers/cpufreq/freq_table cpufreq_freq_attr_scaling_available_freqs 0x31a6dc45 +drivers/cpufreq/freq_table cpufreq_frequency_get_table 0x2f47d8c7 +drivers/cpufreq/freq_table cpufreq_frequency_table_cpuinfo 0x923ff117 +drivers/cpufreq/freq_table cpufreq_frequency_table_get_attr 0x706b3a33 +drivers/cpufreq/freq_table cpufreq_frequency_table_put_attr 0x7ae1ae8e +drivers/cpufreq/freq_table cpufreq_frequency_table_target 0xe1fe88cf +drivers/cpufreq/freq_table cpufreq_frequency_table_verify 0xf54d49fd +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-bit i2c_bit_add_bus 0xbc74dc70 +drivers/i2c/algos/i2c-algo-bit i2c_bit_del_bus 0x0c27eb14 +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0xdd2ac910 +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0x6d79fe74 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0x2d78d79d +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0x9d2be0f9 +drivers/i2c/busses/i2c-amd756 amd756_smbus 0xf315b331 +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0xa3ea466c +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0x1ac6fd93 +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/i2c/i2c-core i2c_adapter_class 0x8b70a063 +drivers/i2c/i2c-core i2c_adapter_dev_release 0x02176402 +drivers/i2c/i2c-core i2c_adapter_driver 0xddb2b5a4 +drivers/i2c/i2c-core i2c_add_adapter 0xd1367a2e +drivers/i2c/i2c-core i2c_add_driver 0x53681cd9 +drivers/i2c/i2c-core i2c_attach_client 0xcf5e5d68 +drivers/i2c/i2c-core i2c_bus_type 0x6e2858ed +drivers/i2c/i2c-core i2c_check_addr 0x481d397f +drivers/i2c/i2c-core i2c_clients_command 0xd8fa7ded +drivers/i2c/i2c-core i2c_control 0x2b441f96 +drivers/i2c/i2c-core i2c_del_adapter 0x8c5bae2b +drivers/i2c/i2c-core i2c_del_driver 0x9c38f51e +drivers/i2c/i2c-core i2c_detach_client 0x4dcf280b +drivers/i2c/i2c-core i2c_get_adapter 0x0c02a39e +drivers/i2c/i2c-core i2c_master_recv 0x84e4dd50 +drivers/i2c/i2c-core i2c_master_send 0x4deb7152 +drivers/i2c/i2c-core i2c_probe 0x50a9e390 +drivers/i2c/i2c-core i2c_put_adapter 0x7360cf2a +drivers/i2c/i2c-core i2c_release_client 0x88322c65 +drivers/i2c/i2c-core i2c_smbus_read_byte 0x92e5115e +drivers/i2c/i2c-core i2c_smbus_read_byte_data 0xa573d06b +drivers/i2c/i2c-core i2c_smbus_read_i2c_block_data 0x89d28757 +drivers/i2c/i2c-core i2c_smbus_read_word_data 0x1214fab2 +drivers/i2c/i2c-core i2c_smbus_write_block_data 0x839d14bf +drivers/i2c/i2c-core i2c_smbus_write_byte 0x848e20f8 +drivers/i2c/i2c-core i2c_smbus_write_byte_data 0x57fd0558 +drivers/i2c/i2c-core i2c_smbus_write_quick 0xf99d3e64 +drivers/i2c/i2c-core i2c_smbus_write_word_data 0xf25a5c1f +drivers/i2c/i2c-core i2c_smbus_xfer 0x4e848f36 +drivers/i2c/i2c-core i2c_transfer 0xaf7e45d8 +drivers/i2c/i2c-core i2c_use_client 0xd28ac228 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0xdd3d903c +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x07d47ac9 +drivers/ieee1394/ieee1394 csr1212_read 0xbde3eb37 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x3856321a +drivers/ieee1394/ieee1394 dma_prog_region_free 0x5465a81b +drivers/ieee1394/ieee1394 dma_prog_region_init 0x8c4242e7 +drivers/ieee1394/ieee1394 dma_region_alloc 0x15475084 +drivers/ieee1394/ieee1394 dma_region_free 0xca59ba22 +drivers/ieee1394/ieee1394 dma_region_init 0x8021712d +drivers/ieee1394/ieee1394 dma_region_mmap 0x4c394de8 +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0x723d33da +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0xd7c13526 +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x51be9954 +drivers/ieee1394/ieee1394 highlevel_host_reset 0x09b208af +drivers/ieee1394/ieee1394 hpsb_add_host 0x5d138961 +drivers/ieee1394/ieee1394 hpsb_alloc_host 0xe0994186 +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0xe9a38018 +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0x75066eeb +drivers/ieee1394/ieee1394 hpsb_bus_reset 0xda60a864 +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0x7859d74c +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0x8d3d0a9a +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0x6f37c7f6 +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0xc9f5ea2a +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0x738e0931 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0x891b0e8f +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0xbc65b4de +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0xb84cfae2 +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0xc78bd49f +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0x5abce1a2 +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0xba88a46e +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0x385762dd +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0xf855490d +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0x93d85fd1 +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0xdc501663 +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0x07e0f0fc +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0x6d3bbdfc +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0xdb584780 +drivers/ieee1394/ieee1394 hpsb_iso_stop 0x6f53f8cd +drivers/ieee1394/ieee1394 hpsb_iso_wake 0xbfd97be6 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x4f834dcf +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0xce05865a +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0xac0cb96d +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0x0e2ad4ea +drivers/ieee1394/ieee1394 hpsb_listen_channel 0xcf633ecc +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0x9dddd545 +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0x3686f154 +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0xf05d6de1 +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0xa1677920 +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0x54d0ae24 +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0x20ac80d1 +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0x0251ff3b +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0xa0b148a7 +drivers/ieee1394/ieee1394 hpsb_node_write 0x28d85ea1 +drivers/ieee1394/ieee1394 hpsb_packet_received 0x533d1ed4 +drivers/ieee1394/ieee1394 hpsb_packet_sent 0x465aa16c +drivers/ieee1394/ieee1394 hpsb_packet_success 0x3aa8f6a6 +drivers/ieee1394/ieee1394 hpsb_protocol_class 0x7d39f2dc +drivers/ieee1394/ieee1394 hpsb_read 0x1a1075b8 +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0x543e38ff +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0xe831718a +drivers/ieee1394/ieee1394 hpsb_register_protocol 0xacedd730 +drivers/ieee1394/ieee1394 hpsb_remove_host 0xb245b476 +drivers/ieee1394/ieee1394 hpsb_reset_bus 0x2ae2a063 +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0xd20050a1 +drivers/ieee1394/ieee1394 hpsb_selfid_received 0x6db44768 +drivers/ieee1394/ieee1394 hpsb_send_packet 0x9249143b +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0xd557ff04 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0x1d41f821 +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0xe330c2c7 +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0x521d59ef +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0x64fc8834 +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0x43531543 +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0xf850dd3b +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0xbe3e79f5 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0xd0075406 +drivers/ieee1394/ieee1394 hpsb_write 0x74ad873f +drivers/ieee1394/ieee1394 ieee1394_bus_type 0x429a4420 +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0xa7deb82c +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0x18f455ec +drivers/ieee1394/ohci1394 ohci1394_stop_context 0xd4f99a82 +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0x4cc65b98 +drivers/infiniband/core/ib_cm ib_cm_establish 0x6271ed8f +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0xaf25067a +drivers/infiniband/core/ib_cm ib_cm_listen 0x8db5e748 +drivers/infiniband/core/ib_cm ib_create_cm_id 0xf5183837 +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0x51d60baf +drivers/infiniband/core/ib_cm ib_send_cm_apr 0xb1fa5969 +drivers/infiniband/core/ib_cm ib_send_cm_drep 0x285c2770 +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0xdeee290f +drivers/infiniband/core/ib_cm ib_send_cm_lap 0x9dcee7ff +drivers/infiniband/core/ib_cm ib_send_cm_mra 0xdfea8bc8 +drivers/infiniband/core/ib_cm ib_send_cm_rej 0x202bc35c +drivers/infiniband/core/ib_cm ib_send_cm_rep 0xce1a5c4b +drivers/infiniband/core/ib_cm ib_send_cm_req 0xf13e17d7 +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0xb808dc5e +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0x64b1a685 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0x7d5e7c01 +drivers/infiniband/core/ib_core ib_alloc_device 0x140cf3c9 +drivers/infiniband/core/ib_core ib_alloc_fmr 0x3cac8f3b +drivers/infiniband/core/ib_core ib_alloc_mw 0xd0a38601 +drivers/infiniband/core/ib_core ib_alloc_pd 0xf4a12fc4 +drivers/infiniband/core/ib_core ib_attach_mcast 0xc9cddfb8 +drivers/infiniband/core/ib_core ib_create_ah 0x06bd7f52 +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0x5908c3f1 +drivers/infiniband/core/ib_core ib_create_cq 0xc554a533 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0x67ce9022 +drivers/infiniband/core/ib_core ib_create_qp 0x7785f71f +drivers/infiniband/core/ib_core ib_create_srq 0x3855d2c5 +drivers/infiniband/core/ib_core ib_dealloc_device 0x07bc38f9 +drivers/infiniband/core/ib_core ib_dealloc_fmr 0x83fc8ef7 +drivers/infiniband/core/ib_core ib_dealloc_mw 0x5efcf722 +drivers/infiniband/core/ib_core ib_dealloc_pd 0x6ceb7bad +drivers/infiniband/core/ib_core ib_dereg_mr 0x0b80bb33 +drivers/infiniband/core/ib_core ib_destroy_ah 0x620161b8 +drivers/infiniband/core/ib_core ib_destroy_cq 0x379a0654 +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x7683bcb0 +drivers/infiniband/core/ib_core ib_destroy_qp 0xb8513624 +drivers/infiniband/core/ib_core ib_destroy_srq 0x024644be +drivers/infiniband/core/ib_core ib_detach_mcast 0x71764286 +drivers/infiniband/core/ib_core ib_dispatch_event 0xea937841 +drivers/infiniband/core/ib_core ib_find_cached_gid 0x2c6afd6e +drivers/infiniband/core/ib_core ib_find_cached_pkey 0x4bb25e95 +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0x4d51148d +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0xfba7b00d +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0xbcd6e622 +drivers/infiniband/core/ib_core ib_get_cached_gid 0x945bb9b9 +drivers/infiniband/core/ib_core ib_get_cached_pkey 0xa250568b +drivers/infiniband/core/ib_core ib_get_client_data 0x02ce5894 +drivers/infiniband/core/ib_core ib_get_dma_mr 0x0d662d71 +drivers/infiniband/core/ib_core ib_modify_ah 0x560ce52e +drivers/infiniband/core/ib_core ib_modify_device 0x37c8d9bd +drivers/infiniband/core/ib_core ib_modify_port 0x0bdc74fb +drivers/infiniband/core/ib_core ib_modify_qp 0x0b5abc46 +drivers/infiniband/core/ib_core ib_modify_srq 0x51ea8437 +drivers/infiniband/core/ib_core ib_pack 0x06830b9a +drivers/infiniband/core/ib_core ib_query_ah 0x2724b228 +drivers/infiniband/core/ib_core ib_query_device 0xb05f5de9 +drivers/infiniband/core/ib_core ib_query_gid 0x1f8a57e6 +drivers/infiniband/core/ib_core ib_query_mr 0xf871a96e +drivers/infiniband/core/ib_core ib_query_pkey 0xe77960ec +drivers/infiniband/core/ib_core ib_query_port 0x991d64db +drivers/infiniband/core/ib_core ib_query_qp 0xf6f5befc +drivers/infiniband/core/ib_core ib_query_srq 0x008122d7 +drivers/infiniband/core/ib_core ib_reg_phys_mr 0xa77826db +drivers/infiniband/core/ib_core ib_register_client 0x9fb85775 +drivers/infiniband/core/ib_core ib_register_device 0xadc05f95 +drivers/infiniband/core/ib_core ib_register_event_handler 0x28611095 +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x1f15844f +drivers/infiniband/core/ib_core ib_resize_cq 0xb842192c +drivers/infiniband/core/ib_core ib_set_client_data 0xb557c3ee +drivers/infiniband/core/ib_core ib_ud_header_init 0x0632beb8 +drivers/infiniband/core/ib_core ib_ud_header_pack 0x82ddf2e5 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0xa192ed99 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xf96fc9de +drivers/infiniband/core/ib_core ib_unregister_client 0xa36db881 +drivers/infiniband/core/ib_core ib_unregister_device 0x4f2338b2 +drivers/infiniband/core/ib_core ib_unregister_event_handler 0x574f956f +drivers/infiniband/core/ib_mad ib_cancel_mad 0xeec3588d +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x629e035b +drivers/infiniband/core/ib_mad ib_create_send_mad 0x1d6520d7 +drivers/infiniband/core/ib_mad ib_free_recv_mad 0x30669027 +drivers/infiniband/core/ib_mad ib_free_send_mad 0x8ca4cdb6 +drivers/infiniband/core/ib_mad ib_modify_mad 0xf57c8435 +drivers/infiniband/core/ib_mad ib_post_send_mad 0x87eee307 +drivers/infiniband/core/ib_mad ib_process_mad_wc 0x71fdd622 +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x32c71c20 +drivers/infiniband/core/ib_mad ib_register_mad_agent 0x2512e00b +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0xb0eebe86 +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0x75a548df +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0xf0691f4f +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0x8c15cf8e +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0x8d0f2d5c +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0xdd525633 +drivers/input/gameport/gameport __gameport_register_driver 0x97e29e93 +drivers/input/gameport/gameport __gameport_register_port 0xd6f9786e +drivers/input/gameport/gameport gameport_close 0xfa4d5199 +drivers/input/gameport/gameport gameport_cooked_read 0x153465bc +drivers/input/gameport/gameport gameport_open 0xf65f1a7d +drivers/input/gameport/gameport gameport_rescan 0x383b0adf +drivers/input/gameport/gameport gameport_set_name 0x9caef133 +drivers/input/gameport/gameport gameport_set_phys 0xbe9be93c +drivers/input/gameport/gameport gameport_start_polling 0xf23e7e98 +drivers/input/gameport/gameport gameport_stop_polling 0xda5fad44 +drivers/input/gameport/gameport gameport_unregister_driver 0xf0b15e04 +drivers/input/gameport/gameport gameport_unregister_port 0xb2f87628 +drivers/md/dm-mirror dm_create_dirty_log 0xd5c733ce +drivers/md/dm-mirror dm_destroy_dirty_log 0xc5c0db42 +drivers/md/dm-mirror dm_register_dirty_log_type 0x28f0f977 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x58bfc819 +drivers/md/dm-mod dm_get_device 0x6a51b0ca +drivers/md/dm-mod dm_get_mapinfo 0x8d7b5bfa +drivers/md/dm-mod dm_io_async 0x6ce537dd +drivers/md/dm-mod dm_io_async_bvec 0x222c2957 +drivers/md/dm-mod dm_io_async_vm 0x340946b4 +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0x28e86599 +drivers/md/dm-mod dm_io_sync_bvec 0x2e809f79 +drivers/md/dm-mod dm_io_sync_vm 0x46f130aa +drivers/md/dm-mod dm_put_device 0x9ee3e90a +drivers/md/dm-mod dm_register_target 0xf35bd749 +drivers/md/dm-mod dm_table_event 0xbb6f7e04 +drivers/md/dm-mod dm_table_flush_all 0x483e3c25 +drivers/md/dm-mod dm_table_get 0x15d29634 +drivers/md/dm-mod dm_table_get_mode 0x2bc7e630 +drivers/md/dm-mod dm_table_get_size 0xcdc86a02 +drivers/md/dm-mod dm_table_put 0x993811a3 +drivers/md/dm-mod dm_table_unplug_all 0x97e37c64 +drivers/md/dm-mod dm_unregister_target 0xbaab9f01 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x3cbfeacf +drivers/md/dm-mod kcopyd_client_create 0x032bcdb4 +drivers/md/dm-mod kcopyd_client_destroy 0xdcb4a1ee +drivers/md/dm-mod kcopyd_copy 0x8b3fab2c +drivers/md/dm-multipath dm_pg_init_complete 0xadfea691 +drivers/md/dm-multipath dm_register_hw_handler 0x66864cb8 +drivers/md/dm-multipath dm_register_path_selector 0xdd8d7da2 +drivers/md/dm-multipath dm_scsi_err_handler 0x4e27cd3f +drivers/md/dm-multipath dm_unregister_hw_handler 0x36188d08 +drivers/md/dm-multipath dm_unregister_path_selector 0xb4be04be +drivers/md/md-mod bitmap_close_sync 0xf346b487 +drivers/md/md-mod bitmap_daemon_work 0x76fc9700 +drivers/md/md-mod bitmap_end_sync 0x5f2aa7c1 +drivers/md/md-mod bitmap_endwrite 0xbc23727a +drivers/md/md-mod bitmap_start_sync 0xb4d1c49d +drivers/md/md-mod bitmap_startwrite 0x2d91ed84 +drivers/md/md-mod bitmap_unplug 0x6051899f +drivers/md/md-mod md_check_recovery 0x6df9796f +drivers/md/md-mod md_done_sync 0xc4916c0c +drivers/md/md-mod md_error 0x8039cd84 +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x9fd1a58d +drivers/md/md-mod md_unregister_thread 0x4b842084 +drivers/md/md-mod md_wakeup_thread 0x26f85e3a +drivers/md/md-mod md_write_end 0x309dc2b3 +drivers/md/md-mod md_write_start 0xc602e92a +drivers/md/md-mod register_md_personality 0xfa5ad806 +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x95d28726 +drivers/media/common/ir-common ir_codes_hauppauge_new 0xa3dc60f8 +drivers/media/common/ir-common ir_codes_pinnacle 0x4fa2b03e +drivers/media/common/ir-common ir_codes_pixelview 0x43eda01a +drivers/media/common/ir-common ir_codes_rc5_tv 0x44c715df +drivers/media/common/ir-common ir_codes_winfast 0x828ace4d +drivers/media/common/ir-common ir_decode_biphase 0x953031a2 +drivers/media/common/ir-common ir_decode_pulsedistance 0x5e6fea37 +drivers/media/common/ir-common ir_dump_samples 0x6896a5f6 +drivers/media/common/ir-common ir_extract_bits 0xe9f08798 +drivers/media/common/ir-common ir_input_init 0x56236dcb +drivers/media/common/ir-common ir_input_keydown 0xdf02cfa3 +drivers/media/common/ir-common ir_input_nokey 0x18b31f21 +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x541aa1ac +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0x24b8bbe5 +drivers/media/common/saa7146 saa7146_i2c_transfer 0x17da4b4a +drivers/media/common/saa7146 saa7146_pgtable_alloc 0x1fb1f926 +drivers/media/common/saa7146 saa7146_pgtable_build_single 0x19009a73 +drivers/media/common/saa7146 saa7146_pgtable_free 0xbc2931e0 +drivers/media/common/saa7146 saa7146_register_extension 0x88516b47 +drivers/media/common/saa7146 saa7146_setgpio 0xd4bc1a8a +drivers/media/common/saa7146 saa7146_unregister_extension 0xaa1fb01d +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0x3d118eb5 +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0x8b297049 +drivers/media/common/saa7146_vv saa7146_register_device 0x11e11b5e +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0x3bb17b1c +drivers/media/common/saa7146_vv saa7146_start_preview 0xce1ae044 +drivers/media/common/saa7146_vv saa7146_stop_preview 0x6fe7e3a8 +drivers/media/common/saa7146_vv saa7146_unregister_device 0x5f22d21c +drivers/media/common/saa7146_vv saa7146_vv_init 0xf29ad0f7 +drivers/media/common/saa7146_vv saa7146_vv_release 0xd30dba7e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0x5105a6b7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0x944be830 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0x08c09f7f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0xddbfee7b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0x77f4e42a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0xc4871792 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0xda2ea89c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0x4c071fa2 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0x538a5f50 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0xe28e3e26 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0x040edc16 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0x533df6f7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0x9726fc01 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0x5b91a79b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0x92e79cb2 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0xfbc25336 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0xa29917b1 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0x68ba12c5 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0x7627e683 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0x802e9e2b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0xf512922f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0xad8edef0 +drivers/media/dvb/bt8xx/bt878 bt878 0x5452a750 +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0xc292fdaf +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0xcd02576b +drivers/media/dvb/bt8xx/bt878 bt878_stop 0x730f8ec8 +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0x2c1040d3 +drivers/media/dvb/bt8xx/dst dst_check_sum 0x43a983fd +drivers/media/dvb/bt8xx/dst dst_comm_init 0xfb0f76b6 +drivers/media/dvb/bt8xx/dst dst_command 0xb73aa7d9 +drivers/media/dvb/bt8xx/dst dst_error_bailout 0xba445b69 +drivers/media/dvb/bt8xx/dst dst_error_recovery 0x6d392e0a +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0xb9ec7534 +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0xe37ed9f5 +drivers/media/dvb/bt8xx/dst dst_pio_disable 0x7de69e73 +drivers/media/dvb/bt8xx/dst dst_pio_enable 0x65b94dfb +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0x59cc94cf +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0x4afcf7ee +drivers/media/dvb/bt8xx/dst rdc_reset_state 0xe1dfbc38 +drivers/media/dvb/bt8xx/dst read_dst 0x596decf3 +drivers/media/dvb/bt8xx/dst write_dst 0xac84b9d1 +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0x55ae1a31 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0xf04637fb +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0x2596ecd3 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0x05e7ea9b +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0x855353b2 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0x5b80968e +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0xae4721d5 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0xb6fa0764 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0xf12440e7 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0xbdb34872 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x0f3bd741 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0xb6af5bfd +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0x65574804 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x1209ade6 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x4595ed1e +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0x038aa795 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0xc2b96fca +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0x912c1eba +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0x438994c0 +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0x9df72fec +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0x37fa2356 +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0x641902bd +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0x2dc074d5 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0x56f19701 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0x7b852d14 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0xb95c5ed7 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0xc9918e98 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x2d80ad4a +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0x187399f4 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0xb09917ef +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0x875f23c6 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0x76628b88 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0x890db46a +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0x05445e5e +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0xdb86e38b +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0x374f37ab +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0xe7033895 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0xa4b3a220 +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0xa1a8c7f9 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0x6835d555 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0x29ef816d +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0x8fa4ac32 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0xe88035cb +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0xcec215d3 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0xf10927b3 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0x70db209d +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0x7e51b1e0 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0x3f72c79e +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0x441fe812 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0x00ca5520 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0x91f16651 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0xd36d125f +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0xa56dd257 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0x2ce78da3 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0x47a21986 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0x55c7c5af +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0xa94a2792 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0x47666f4e +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0x8943b349 +drivers/media/dvb/frontends/at76c651 at76c651_attach 0x56e8a691 +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0xd5816dfd +drivers/media/dvb/frontends/cx22700 cx22700_attach 0xb8151c83 +drivers/media/dvb/frontends/cx22702 cx22702_attach 0x4fbcce09 +drivers/media/dvb/frontends/cx24110 cx24110_attach 0x5aadcd32 +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0xf5e78495 +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0xfa4cac4f +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0x4ac49a93 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x0f739b55 +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0x464d4a4b +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0x019db807 +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0x7f327b67 +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x72b73801 +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0xf434f763 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x61716712 +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0x1536fd73 +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xa75bea99 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xaec96404 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x80e1bf15 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xbccde2e4 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x051954f8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0x8fc9fea7 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0xa0e34c4b +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0x431f1f05 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0x6719245e +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0x7e02151f +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xb6a3ccdf +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x3c620b08 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xb5a6ba8b +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x08fad2ed +drivers/media/dvb/frontends/l64781 l64781_attach 0x56b0dc09 +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0xdc18346d +drivers/media/dvb/frontends/mt312 mt312_attach 0xf31f3244 +drivers/media/dvb/frontends/mt312 vp310_attach 0x30f6fa28 +drivers/media/dvb/frontends/mt352 mt352_attach 0x15517d65 +drivers/media/dvb/frontends/mt352 mt352_write 0x23fa8afb +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0xfa0c5e9b +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x5dbd4d74 +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0x97b1ea75 +drivers/media/dvb/frontends/or51132 or51132_attach 0xb0affeb0 +drivers/media/dvb/frontends/or51211 or51211_attach 0xb13e0bf2 +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0x16885fe8 +drivers/media/dvb/frontends/sp8870 sp8870_attach 0xab9f54d6 +drivers/media/dvb/frontends/sp887x sp887x_attach 0x0c7715c0 +drivers/media/dvb/frontends/stv0297 stv0297_attach 0xc71a9c5a +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0x62c7521e +drivers/media/dvb/frontends/stv0299 stv0299_attach 0xf958d4a3 +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0x4417f9b9 +drivers/media/dvb/frontends/tda10021 tda10021_attach 0x034df3f7 +drivers/media/dvb/frontends/tda1004x tda10045_attach 0x8f5ec0b2 +drivers/media/dvb/frontends/tda1004x tda10046_attach 0xc9ac7036 +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0x3e0e578e +drivers/media/dvb/frontends/tda8083 tda8083_attach 0x4fcfa6aa +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0x50b2da17 +drivers/media/dvb/frontends/ves1820 ves1820_attach 0x3f7a2ab7 +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0xbeec95e0 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0x5e4747eb +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0x821e3708 +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0xc0d41506 +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0x5b01b730 +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0xda8749fc +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0x3864c71e +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0xcfe3c51d +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0x4339f246 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0x68fef38c +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0xe0938242 +drivers/media/video/btcx-risc btcx_riscmem_free 0x8504dc4e +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x357a7ad5 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0xf688ccd8 +drivers/media/video/bttv bttv_gpio_bits 0xa0dc9249 +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0xa59dfd21 +drivers/media/video/bttv bttv_gpio_read 0x8159a7ea +drivers/media/video/bttv bttv_gpio_write 0x26e33bb2 +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0x60466dff +drivers/media/video/bttv bttv_sub_register 0xc988e992 +drivers/media/video/bttv bttv_sub_unregister 0xb0327af9 +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0x7fa8c8e0 +drivers/media/video/cpia cpia_unregister_camera 0x5551bd77 +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0x1e6e1acb +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0x75703d36 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0x439f7081 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0x7b86f121 +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0xf9b0ac55 +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0x206e19d8 +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0x3da7abb8 +drivers/media/video/cx88/cx8802 cx8802_fini_common 0x8f163f79 +drivers/media/video/cx88/cx8802 cx8802_init_common 0x58a1e43b +drivers/media/video/cx88/cx8802 cx8802_resume_common 0xe26cdeef +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0x3a725d9a +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x5b1a26b7 +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0xa50a2549 +drivers/media/video/cx88/cx88xx cx88_card_list 0x8b0e9095 +drivers/media/video/cx88/cx88xx cx88_card_setup 0xe7b7dc40 +drivers/media/video/cx88/cx88xx cx88_core_get 0x3c574db7 +drivers/media/video/cx88/cx88xx cx88_core_irq 0x84c3552a +drivers/media/video/cx88/cx88xx cx88_core_put 0x1a3a7809 +drivers/media/video/cx88/cx88xx cx88_free_buffer 0x9e92327a +drivers/media/video/cx88/cx88xx cx88_get_stereo 0x43c81a34 +drivers/media/video/cx88/cx88xx cx88_i2c_init 0xb9313734 +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0x9a8eb1cb +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x4b35dc23 +drivers/media/video/cx88/cx88xx cx88_reset 0x5fe0568b +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0xc270e6f0 +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0xccf6e1e2 +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0x85715115 +drivers/media/video/cx88/cx88xx cx88_set_scale 0x19cce401 +drivers/media/video/cx88/cx88xx cx88_set_stereo 0xc8b7eff4 +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0x7a20968d +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0xcacb091b +drivers/media/video/cx88/cx88xx cx88_shutdown 0xc13d5aa5 +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0x2f2127cf +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0x2e35722d +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x17a2e62e +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0x93d954bb +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0x732a9006 +drivers/media/video/cx88/cx88xx cx88_subids 0x5804f888 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0x72e6699f +drivers/media/video/cx88/cx88xx cx88_wakeup 0xe992f43f +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0x87b8270b +drivers/media/video/saa7134/saa7134 dmasound_exit 0x4bd7abc0 +drivers/media/video/saa7134/saa7134 dmasound_init 0x2a1fcdb4 +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0x29274827 +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0x9de8ba13 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0x25e7bb8b +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0xc3ec1b99 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0x8efc4c28 +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0x836de72f +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0x00361365 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0xceaa428d +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0x4e669f66 +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0x953fe720 +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0x32426418 +drivers/media/video/tveeprom tveeprom_read 0xc8404754 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0x78f41133 +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x1cef839c +drivers/media/video/v4l2-common v4l2_prio_check 0x62c15600 +drivers/media/video/v4l2-common v4l2_prio_close 0x0a59df07 +drivers/media/video/v4l2-common v4l2_prio_init 0x931bfaa6 +drivers/media/video/v4l2-common v4l2_prio_max 0x7121c34d +drivers/media/video/v4l2-common v4l2_prio_open 0x379df2e3 +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0xea6b1ba9 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0x6ae95491 +drivers/media/video/video-buf videobuf_dma_init 0xf2b65172 +drivers/media/video/video-buf videobuf_dma_init_kernel 0xe6268a6a +drivers/media/video/video-buf videobuf_dma_init_overlay 0xf7a7ec07 +drivers/media/video/video-buf videobuf_dma_init_user 0xfbb8f440 +drivers/media/video/video-buf videobuf_dma_pci_map 0xa0bfd1fa +drivers/media/video/video-buf videobuf_dma_pci_sync 0x6848e73b +drivers/media/video/video-buf videobuf_dma_pci_unmap 0xe50cbc11 +drivers/media/video/video-buf videobuf_dqbuf 0x8f88fc5e +drivers/media/video/video-buf videobuf_iolock 0xc228d87a +drivers/media/video/video-buf videobuf_mmap_free 0xd2913bd5 +drivers/media/video/video-buf videobuf_mmap_mapper 0xecafd538 +drivers/media/video/video-buf videobuf_mmap_setup 0xed4004d9 +drivers/media/video/video-buf videobuf_next_field 0x6bbba33a +drivers/media/video/video-buf videobuf_poll_stream 0x45457e3a +drivers/media/video/video-buf videobuf_qbuf 0x4ee5f008 +drivers/media/video/video-buf videobuf_querybuf 0x719d093f +drivers/media/video/video-buf videobuf_queue_cancel 0x2b9e169e +drivers/media/video/video-buf videobuf_queue_init 0xbac31bc0 +drivers/media/video/video-buf videobuf_queue_is_busy 0x564fcce7 +drivers/media/video/video-buf videobuf_read_one 0xfc2f80f7 +drivers/media/video/video-buf videobuf_read_start 0x8d8777f0 +drivers/media/video/video-buf videobuf_read_stop 0xdcf34003 +drivers/media/video/video-buf videobuf_read_stream 0x47fcbd63 +drivers/media/video/video-buf videobuf_reqbufs 0x66662928 +drivers/media/video/video-buf videobuf_status 0x60cf4b67 +drivers/media/video/video-buf videobuf_streamoff 0x5c55bfea +drivers/media/video/video-buf videobuf_streamon 0xecaa9c21 +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0x2774271a +drivers/media/video/video-buf videobuf_waiton 0xc0f66aa6 +drivers/media/video/video-buf-dvb videobuf_dvb_register 0xf9157618 +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0xeda68ed7 +drivers/media/video/videocodec videocodec_attach 0x27ece86a +drivers/media/video/videocodec videocodec_detach 0x069503d8 +drivers/media/video/videocodec videocodec_register 0xa2a207b0 +drivers/media/video/videocodec videocodec_unregister 0x4310b39c +drivers/media/video/videodev video_devdata 0x58a9c54d +drivers/media/video/videodev video_device_alloc 0xe2443e90 +drivers/media/video/videodev video_device_release 0x90e86c1b +drivers/media/video/videodev video_exclusive_open 0x89316cce +drivers/media/video/videodev video_exclusive_release 0x0a71b487 +drivers/media/video/videodev video_register_device 0x047c9219 +drivers/media/video/videodev video_unregister_device 0x67d7b020 +drivers/media/video/videodev video_usercopy 0x3d32fbf6 +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0x217a9ee6 +drivers/message/fusion/mptbase mpt_HardResetHandler 0x8a4a2174 +drivers/message/fusion/mptbase mpt_add_sge 0x89019e23 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0xd8c22302 +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0x23a94cad +drivers/message/fusion/mptbase mpt_attach 0x8135ae5f +drivers/message/fusion/mptbase mpt_config 0x43b62818 +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0xc8a28cf6 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0xc100c37e +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0xd30eef3b +drivers/message/fusion/mptbase mpt_findImVolumes 0xbf9917b0 +drivers/message/fusion/mptbase mpt_free_fw_memory 0xd23b805a +drivers/message/fusion/mptbase mpt_free_msg_frame 0xd85fdf4f +drivers/message/fusion/mptbase mpt_get_msg_frame 0x9fe24093 +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0x639be801 +drivers/message/fusion/mptbase mpt_proc_root_dir 0x10c7bff9 +drivers/message/fusion/mptbase mpt_put_msg_frame 0x37ad6695 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x9839a3f9 +drivers/message/fusion/mptbase mpt_register 0x1e9bd96b +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x45fc9cae +drivers/message/fusion/mptbase mpt_resume 0xb4924a6a +drivers/message/fusion/mptbase mpt_send_handshake_request 0x67111b35 +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0x8e9025df +drivers/message/fusion/mptbase mpt_toolbox 0xd24ec6da +drivers/message/fusion/mptbase mpt_verify_adapter 0x7a49b641 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x9eab8cfe +drivers/message/fusion/mptscsih mptscsih_abort 0xb6d696ec +drivers/message/fusion/mptscsih mptscsih_bios_param 0xd709edc0 +drivers/message/fusion/mptscsih mptscsih_bus_reset 0xf551812e +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x058618f4 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0x2011291c +drivers/message/fusion/mptscsih mptscsih_event_process 0x7b67c3d9 +drivers/message/fusion/mptscsih mptscsih_host_reset 0x3b1fa0bd +drivers/message/fusion/mptscsih mptscsih_info 0xda5578a2 +drivers/message/fusion/mptscsih mptscsih_io_done 0x0e678b5b +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0xf2c87b42 +drivers/message/fusion/mptscsih mptscsih_proc_info 0x853f7932 +drivers/message/fusion/mptscsih mptscsih_qcmd 0xa30abd59 +drivers/message/fusion/mptscsih mptscsih_remove 0x826c36bc +drivers/message/fusion/mptscsih mptscsih_resume 0x24eb6362 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0xf9ec3482 +drivers/message/fusion/mptscsih mptscsih_shutdown 0xc69ff9d2 +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0x1d12682d +drivers/message/fusion/mptscsih mptscsih_slave_configure 0xaff7284a +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x722e99bd +drivers/message/fusion/mptscsih mptscsih_suspend 0x53605ca9 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x8e721bcc +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_cntxt_list_add 0x02e80fcb +drivers/message/i2o/i2o_core i2o_cntxt_list_get 0x922d7760 +drivers/message/i2o/i2o_core i2o_cntxt_list_get_ptr 0x2dd6d4cc +drivers/message/i2o/i2o_core i2o_cntxt_list_remove 0x1e772752 +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0xc4b80042 +drivers/message/i2o/i2o_core i2o_device_claim_release 0xb56bd233 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0xbee4d0fe +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x1caf81c3 +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x1e593471 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0x97357f12 +drivers/message/i2o/i2o_core i2o_driver_register 0xd44f6dbb +drivers/message/i2o/i2o_core i2o_driver_unregister 0xae1ec77a +drivers/message/i2o/i2o_core i2o_dump_message 0xeb95f7f2 +drivers/message/i2o/i2o_core i2o_event_register 0x7bb0b2d3 +drivers/message/i2o/i2o_core i2o_exec_lct_get 0x73567c7e +drivers/message/i2o/i2o_core i2o_find_iop 0xee4624ea +drivers/message/i2o/i2o_core i2o_iop_find_device 0xd92d2025 +drivers/message/i2o/i2o_core i2o_msg_get_wait 0xb42104f2 +drivers/message/i2o/i2o_core i2o_msg_nop 0xe38c4230 +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0xd863b80f +drivers/message/i2o/i2o_core i2o_parm_field_get 0xf7feed54 +drivers/message/i2o/i2o_core i2o_parm_issue 0xa8c18ea2 +drivers/message/i2o/i2o_core i2o_parm_table_get 0xd9062fb2 +drivers/message/i2o/i2o_core i2o_status_get 0x951b6575 +drivers/mtd/chips/cfi_util cfi_fixup 0xfad6e5e1 +drivers/mtd/chips/cfi_util cfi_read_pri 0x97cdaf8c +drivers/mtd/chips/cfi_util cfi_varsize_frob 0x6cca2ec0 +drivers/mtd/chips/chipreg do_map_probe 0xb4cdda35 +drivers/mtd/chips/chipreg map_destroy 0x762ae857 +drivers/mtd/chips/chipreg register_mtd_chip_driver 0x27aafc95 +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0x5b42faf4 +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0xe7acf8a4 +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0xe37c1357 +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0xb1b62ffa +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0x3de2a249 +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0x3d1f0d2d +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0x8fd5a6ff +drivers/mtd/mtdconcat mtd_concat_create 0xbfb2321f +drivers/mtd/mtdconcat mtd_concat_destroy 0x5b47a0b8 +drivers/mtd/mtdcore add_mtd_device 0xdf198578 +drivers/mtd/mtdcore default_mtd_readv 0x6529ffcc +drivers/mtd/mtdcore default_mtd_writev 0x78dadf23 +drivers/mtd/mtdcore del_mtd_device 0xf62d48ad +drivers/mtd/mtdcore get_mtd_device 0x566d9d8c +drivers/mtd/mtdcore mtd_table 0x8dc06ea9 +drivers/mtd/mtdcore mtd_table_mutex 0x84c9344a +drivers/mtd/mtdcore put_mtd_device 0x5169c1cc +drivers/mtd/mtdcore register_mtd_user 0xad353ed7 +drivers/mtd/mtdcore unregister_mtd_user 0xd72f7aa0 +drivers/mtd/mtdpart add_mtd_partitions 0x81f8d847 +drivers/mtd/mtdpart del_mtd_partitions 0xd2d2f7e4 +drivers/mtd/mtdpart deregister_mtd_parser 0x1297080e +drivers/mtd/mtdpart mtd_erase_callback 0xa44412dd +drivers/mtd/mtdpart parse_mtd_partitions 0xb2fbcd6d +drivers/mtd/mtdpart register_mtd_parser 0x34b7ae92 +drivers/mtd/nand/nand nand_default_bbt 0x9c840008 +drivers/mtd/nand/nand nand_release 0x2c4c1a0f +drivers/mtd/nand/nand nand_scan 0xfe961289 +drivers/mtd/nand/nand nand_scan_bbt 0x0a24cb25 +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0x92ca7a82 +drivers/mtd/onenand/onenand onenand_release 0x9673e1ce +drivers/mtd/onenand/onenand onenand_scan 0x6b64aa81 +drivers/mtd/onenand/onenand onenand_scan_bbt 0x00748d49 +drivers/net/8390 NS8390_init 0xc178fba6 +drivers/net/8390 __alloc_ei_netdev 0x5023bda9 +drivers/net/8390 ei_close 0xa945bdcd +drivers/net/8390 ei_interrupt 0x7290cbe2 +drivers/net/8390 ei_open 0xb4c8411f +drivers/net/8390 ei_poll 0x6cca4cc2 +drivers/net/arcnet/arcnet alloc_arcdev 0x1f473379 +drivers/net/arcnet/arcnet arc_bcast_proto 0xc122dac5 +drivers/net/arcnet/arcnet arc_proto_default 0x83c57bce +drivers/net/arcnet/arcnet arc_proto_map 0x2447e357 +drivers/net/arcnet/arcnet arc_proto_null 0xd6719b60 +drivers/net/arcnet/arcnet arc_raw_proto 0xb2c4d377 +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0xff19d19b +drivers/net/arcnet/arcnet arcnet_unregister_proto 0xedf725db +drivers/net/arcnet/com20020 com20020_check 0xafe8f47a +drivers/net/arcnet/com20020 com20020_found 0xc638bf25 +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0x26c3f568 +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0x92784110 +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0xef50e9dc +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0xfb16dda4 +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0x719b856c +drivers/net/irda/sir-dev irda_register_dongle 0x4b9e133e +drivers/net/irda/sir-dev irda_unregister_dongle 0x506a8b30 +drivers/net/irda/sir-dev sirdev_get_instance 0x0d6b3f8f +drivers/net/irda/sir-dev sirdev_put_instance 0x1fb5eb1b +drivers/net/irda/sir-dev sirdev_raw_read 0x5e38912c +drivers/net/irda/sir-dev sirdev_raw_write 0x95d09df4 +drivers/net/irda/sir-dev sirdev_receive 0xd699a8dc +drivers/net/irda/sir-dev sirdev_set_dongle 0x32726908 +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0xe2e5f612 +drivers/net/irda/sir-dev sirdev_write_complete 0x3fa50885 +drivers/net/mii generic_mii_ioctl 0x979b928b +drivers/net/mii mii_check_gmii_support 0xde38d748 +drivers/net/mii mii_check_link 0xc35c0153 +drivers/net/mii mii_check_media 0x217c8a30 +drivers/net/mii mii_ethtool_gset 0xf5b4bd1d +drivers/net/mii mii_ethtool_sset 0x213c3486 +drivers/net/mii mii_link_ok 0x38dda267 +drivers/net/mii mii_nway_restart 0x4c79f1e5 +drivers/net/phy/libphy genphy_config_advert 0x760e48b7 +drivers/net/phy/libphy genphy_config_aneg 0xfef8737b +drivers/net/phy/libphy genphy_read_status 0xdf4a4e95 +drivers/net/phy/libphy mdiobus_register 0x12974fdf +drivers/net/phy/libphy mdiobus_unregister 0x32ee94ae +drivers/net/phy/libphy phy_attach 0x19867771 +drivers/net/phy/libphy phy_connect 0xd06fc910 +drivers/net/phy/libphy phy_detach 0x4c05edc3 +drivers/net/phy/libphy phy_disable_interrupts 0xdff8b25e +drivers/net/phy/libphy phy_disconnect 0x03955a91 +drivers/net/phy/libphy phy_driver_register 0xb00e8e50 +drivers/net/phy/libphy phy_driver_unregister 0x2d7ad16e +drivers/net/phy/libphy phy_enable_interrupts 0xeb405edb +drivers/net/phy/libphy phy_print_status 0x3374f503 +drivers/net/phy/libphy phy_read 0x91c559a1 +drivers/net/phy/libphy phy_sanitize_settings 0xf94ded11 +drivers/net/phy/libphy phy_start 0x3d0b49a7 +drivers/net/phy/libphy phy_start_aneg 0xd59d535c +drivers/net/phy/libphy phy_start_interrupts 0xab61e5f8 +drivers/net/phy/libphy phy_stop 0xb96a32c3 +drivers/net/phy/libphy phy_stop_interrupts 0x230ed56f +drivers/net/phy/libphy phy_write 0xb0173acb +drivers/net/ppp_generic ppp_channel_index 0x1164c6dc +drivers/net/ppp_generic ppp_input 0x5b98b93f +drivers/net/ppp_generic ppp_input_error 0xb306ae49 +drivers/net/ppp_generic ppp_output_wakeup 0x68635425 +drivers/net/ppp_generic ppp_register_channel 0x5f4a0007 +drivers/net/ppp_generic ppp_register_compressor 0x96dc0b60 +drivers/net/ppp_generic ppp_unit_number 0x1f7566e8 +drivers/net/ppp_generic ppp_unregister_channel 0xc45ea1d4 +drivers/net/ppp_generic ppp_unregister_compressor 0xd7f12927 +drivers/net/pppox pppox_unbind_sock 0xcc2cd16c +drivers/net/pppox register_pppox_proto 0x751b9da3 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x76135e6c +drivers/net/slhc slhc_free 0x2894cfb0 +drivers/net/slhc slhc_init 0x2e0e927f +drivers/net/slhc slhc_remember 0x0bc55868 +drivers/net/slhc slhc_toss 0xf89e3455 +drivers/net/slhc slhc_uncompress 0x3bc1319e +drivers/net/wan/hdlc alloc_hdlcdev 0x60ae29c4 +drivers/net/wan/hdlc hdlc_close 0x04b2d566 +drivers/net/wan/hdlc hdlc_ioctl 0xa3ea1907 +drivers/net/wan/hdlc hdlc_open 0x636cb631 +drivers/net/wan/hdlc hdlc_set_carrier 0x67a726ed +drivers/net/wan/hdlc register_hdlc_device 0xd6d2fb5a +drivers/net/wan/hdlc unregister_hdlc_device 0xe129d9fe +drivers/net/wan/syncppp sppp_attach 0x0ec766ef +drivers/net/wan/syncppp sppp_close 0x1cd41680 +drivers/net/wan/syncppp sppp_detach 0x2b48ea6f +drivers/net/wan/syncppp sppp_do_ioctl 0x70b4abfa +drivers/net/wan/syncppp sppp_open 0xa37ee582 +drivers/net/wan/syncppp sppp_reopen 0xeddac5ff +drivers/net/wireless/airo init_airo_card 0x325e4f83 +drivers/net/wireless/airo reset_airo_card 0x01a1a34f +drivers/net/wireless/airo stop_airo_card 0xd99184d8 +drivers/net/wireless/atmel atmel_open 0x55176ca6 +drivers/net/wireless/atmel init_atmel_card 0x88129d9a +drivers/net/wireless/atmel stop_atmel_card 0xbf30116d +drivers/net/wireless/hermes hermes_allocate 0x52657e6d +drivers/net/wireless/hermes hermes_bap_pread 0x00f56735 +drivers/net/wireless/hermes hermes_bap_pwrite 0x66c87edb +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x9e63e63a +drivers/net/wireless/hermes hermes_docmd_wait 0x586026a5 +drivers/net/wireless/hermes hermes_init 0x2aa8b098 +drivers/net/wireless/hermes hermes_read_ltv 0x2743ed5f +drivers/net/wireless/hermes hermes_struct_init 0x7e23508a +drivers/net/wireless/hermes hermes_write_ltv 0xc0b735be +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x96c84ea1 +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0xbe96e8ac +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0x21b4c605 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0x03e78aec +drivers/net/wireless/hostap/hostap hostap_add_interface 0x0c84bcfd +drivers/net/wireless/hostap/hostap hostap_add_sta 0x1fde6708 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0xfdefbfa1 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0xbda2553b +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0xeac56899 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x125371a4 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0xbddde9d9 +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3d91a091 +drivers/net/wireless/hostap/hostap hostap_free_data 0x34996575 +drivers/net/wireless/hostap/hostap hostap_get_porttype 0xfc974442 +drivers/net/wireless/hostap/hostap hostap_get_stats 0x51d07d2a +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0x8af99f5d +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0xc30d1512 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x57b9fa61 +drivers/net/wireless/hostap/hostap hostap_info_init 0x0acb6c89 +drivers/net/wireless/hostap/hostap hostap_info_process 0x5aa9eaab +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0xa0c49089 +drivers/net/wireless/hostap/hostap hostap_init_data 0xdc80df9f +drivers/net/wireless/hostap/hostap hostap_init_proc 0x8b335012 +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0xc808a1aa +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0xf95d755a +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0xdaafd129 +drivers/net/wireless/hostap/hostap hostap_proc 0xd2a36403 +drivers/net/wireless/hostap/hostap hostap_remove_interface 0x43c8449e +drivers/net/wireless/hostap/hostap hostap_remove_proc 0x41daefa4 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0xda633fb6 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0x5f2db1d1 +drivers/net/wireless/hostap/hostap hostap_set_encryption 0x0b357ec4 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x6fdacca8 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0xa48c36c8 +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0xc29b3ea4 +drivers/net/wireless/hostap/hostap hostap_set_string 0x90c57f03 +drivers/net/wireless/hostap/hostap hostap_set_word 0xcbeee9a8 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0xae4fe6ab +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x4ec9ba74 +drivers/net/wireless/hostap/hostap hostap_update_rates 0x59dad6ff +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0xec86cefe +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x8fac4a14 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x112066ed +drivers/net/wireless/orinoco __orinoco_down 0x52c23873 +drivers/net/wireless/orinoco __orinoco_up 0xfa30cf0c +drivers/net/wireless/orinoco alloc_orinocodev 0x7af4fe9d +drivers/net/wireless/orinoco free_orinocodev 0x65ade03a +drivers/net/wireless/orinoco orinoco_interrupt 0xa4f4105f +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x770b15ee +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xcc5344b0 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x02a651ae +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0x0b628437 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x923f6681 +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0xe23d8160 +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x216e5fb1 +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0xebeb882c +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0x63008dfa +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0xa688a04d +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x594f4bd2 +drivers/net/wireless/prism54_softmac/islsm register_islsm 0xca9d3754 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0xb4bdc134 +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0x48b6260d +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0xcc6d6aa6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0xc57a4455 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0x3a1bfa6e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0x11f19818 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x61603b3f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0x2f0f8cfe +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0x776763e7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0xcfb05f0c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xfd4d74ff +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0x6391c565 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0x7213ee95 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0xd0e2ed28 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0xda40865f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0x3156b617 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0x3ae16f91 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0xfd9838de +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0xeee58828 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0xef1dfc77 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x81abbf89 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0x1f16c57e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0xe1020738 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0xbf347b61 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x9b92cee5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x0b50cbc9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0xfd747ff7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x353bd99a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x707b147b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0x752042bf +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0xc1f86b31 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0x5f929da1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x81f2f4f6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0x336a8202 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0x94c37964 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0x62e7cd5a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0xd883589c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0xeab3f012 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0xd41cf55f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x5e6bd99c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x73c495e7 +drivers/parport/parport parport_announce_port 0xa16a28b7 +drivers/parport/parport parport_claim 0xc176a0c8 +drivers/parport/parport parport_claim_or_block 0x274f7ec5 +drivers/parport/parport parport_find_base 0xc7dcfed1 +drivers/parport/parport parport_find_number 0xf24b748d +drivers/parport/parport parport_get_port 0x7b64545c +drivers/parport/parport parport_ieee1284_ecp_read_data 0x11e8c36b +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xa8985da3 +drivers/parport/parport parport_ieee1284_ecp_write_data 0xbc8828b0 +drivers/parport/parport parport_ieee1284_epp_read_addr 0x05c5eda6 +drivers/parport/parport parport_ieee1284_epp_read_data 0x3079f1e7 +drivers/parport/parport parport_ieee1284_epp_write_addr 0x5a74bd78 +drivers/parport/parport parport_ieee1284_epp_write_data 0x4e64c86b +drivers/parport/parport parport_ieee1284_interrupt 0x03ce1a9d +drivers/parport/parport parport_ieee1284_read_byte 0x96d50e32 +drivers/parport/parport parport_ieee1284_read_nibble 0xe6ab94a1 +drivers/parport/parport parport_ieee1284_write_compat 0x7058cdb9 +drivers/parport/parport parport_negotiate 0x60cbb67a +drivers/parport/parport parport_put_port 0x022b2223 +drivers/parport/parport parport_read 0xbc8cb2be +drivers/parport/parport parport_register_device 0xe08d4245 +drivers/parport/parport parport_register_driver 0x569e5b2d +drivers/parport/parport parport_register_port 0x3be762a2 +drivers/parport/parport parport_release 0xef3949b0 +drivers/parport/parport parport_remove_port 0x1a567e47 +drivers/parport/parport parport_set_timeout 0xd5d0ebb3 +drivers/parport/parport parport_unregister_device 0x9024d450 +drivers/parport/parport parport_unregister_driver 0xbd902215 +drivers/parport/parport parport_wait_event 0xd23b853d +drivers/parport/parport parport_wait_peripheral 0xdbe96c6c +drivers/parport/parport parport_write 0x946f7852 +drivers/parport/parport_pc parport_pc_probe_port 0x6418355c +drivers/parport/parport_pc parport_pc_unregister_port 0x2f44d05c +drivers/pci/hotplug/acpiphp acpiphp_register_attention 0xf05c08d3 +drivers/pci/hotplug/acpiphp acpiphp_unregister_attention 0xe5af795c +drivers/pci/hotplug/pci_hotplug cpci_hp_register_bus 0x334d8ee5 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_controller 0x0084d6bf +drivers/pci/hotplug/pci_hotplug cpci_hp_start 0x6a8441be +drivers/pci/hotplug/pci_hotplug cpci_hp_stop 0x94ef4d05 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_bus 0x72243eb4 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_controller 0x53203ba4 +drivers/pci/hotplug/pci_hotplug pci_hotplug_slots_subsys 0xa08fd745 +drivers/pci/hotplug/pci_hotplug pci_hp_change_slot_info 0xd45bdf4f +drivers/pci/hotplug/pci_hotplug pci_hp_deregister 0x90584e55 +drivers/pci/hotplug/pci_hotplug pci_hp_register 0x27b714e4 +drivers/pcmcia/pcmcia cs_error 0x67cebcc4 +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0x3c812f12 +drivers/pcmcia/pcmcia pcmcia_deregister_client 0xd48571b3 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0xd9d3d8f3 +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0xb5509223 +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0x3b798445 +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0x4c2f1ef3 +drivers/pcmcia/pcmcia pcmcia_get_status 0xc2f18a19 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0xb16ba15b +drivers/pcmcia/pcmcia pcmcia_get_window 0xd1f69ab6 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0x5b22ca07 +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x16a2f133 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0x4bd67b09 +drivers/pcmcia/pcmcia pcmcia_register_client 0xcc0ef54a +drivers/pcmcia/pcmcia pcmcia_register_driver 0xac9473c3 +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x50e7292c +drivers/pcmcia/pcmcia pcmcia_release_io 0xff85b114 +drivers/pcmcia/pcmcia pcmcia_release_irq 0xe0c07126 +drivers/pcmcia/pcmcia pcmcia_release_window 0x7050d6f5 +drivers/pcmcia/pcmcia pcmcia_request_configuration 0xcab9b8db +drivers/pcmcia/pcmcia pcmcia_request_io 0x27206d3b +drivers/pcmcia/pcmcia pcmcia_request_irq 0x7db90f11 +drivers/pcmcia/pcmcia pcmcia_request_window 0x440a8d92 +drivers/pcmcia/pcmcia pcmcia_reset_card 0x80f616e5 +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0x5ae7a4d9 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0x566577a9 +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0x7e48fcd5 +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x4045313e +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0x6d3ba8d7 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0xc4c5cf32 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0x83f3024b +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0x249cbe27 +drivers/pcmcia/pcmcia_core pccard_reset_card 0xbd2fa7d8 +drivers/pcmcia/pcmcia_core pccard_static_ops 0x0ba2282f +drivers/pcmcia/pcmcia_core pccard_validate_cis 0xd2c58af9 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0x42379e21 +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0x19f514fd +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0x06ad235a +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0x7640b00c +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0xf58a6d47 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0xa3387b46 +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x089b5c20 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0x06aec025 +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0xa5998a41 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xcbd4c2b1 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0xeb7de20b +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0xdad44528 +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x5d3d69e8 +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0x94d0eeb9 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0x9463b5a8 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0xcb694815 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0x5c0755d9 +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0xe452a598 +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x1d0e3511 +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0x4558969b +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0xf3cd9309 +drivers/pcmcia/pcmcia_core release_cis_mem 0x8f162b07 +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0x621f9a04 +drivers/scsi/libata __sata_phy_reset 0xc99029a9 +drivers/scsi/libata ata_acpi_bus_register 0x4eb7c257 +drivers/scsi/libata ata_acpi_exec_tfs 0xaffa3619 +drivers/scsi/libata ata_acpi_get_timing 0x4a328aa3 +drivers/scsi/libata ata_acpi_push_id 0x5852fe70 +drivers/scsi/libata ata_acpi_push_timing 0x49b665e3 +drivers/scsi/libata ata_altstatus 0xc85eb60c +drivers/scsi/libata ata_bmdma_irq_clear 0x5dfbde3c +drivers/scsi/libata ata_bmdma_setup 0xff259e0d +drivers/scsi/libata ata_bmdma_start 0xc4d06eed +drivers/scsi/libata ata_bmdma_status 0x53e8a430 +drivers/scsi/libata ata_bmdma_stop 0xb1f6ad27 +drivers/scsi/libata ata_bus_probe 0x00cb4d25 +drivers/scsi/libata ata_bus_reset 0x878ff911 +drivers/scsi/libata ata_check_status 0xf3d59d93 +drivers/scsi/libata ata_dev_classify 0xee64669b +drivers/scsi/libata ata_dev_config 0x44170709 +drivers/scsi/libata ata_dev_id_string 0x813edb38 +drivers/scsi/libata ata_device_add 0x1f881d51 +drivers/scsi/libata ata_device_resume 0x5b6e0078 +drivers/scsi/libata ata_device_shutdown 0xefcfe27e +drivers/scsi/libata ata_device_suspend 0xb2f9a19c +drivers/scsi/libata ata_eng_timeout 0x342e4c06 +drivers/scsi/libata ata_exec_command 0x4f3cca5d +drivers/scsi/libata ata_host_intr 0xa2eaac22 +drivers/scsi/libata ata_host_set_remove 0xaadce8cc +drivers/scsi/libata ata_host_stop 0x47207a9e +drivers/scsi/libata ata_hotplug_plug 0x49c23d06 +drivers/scsi/libata ata_hotplug_unplug 0x67778e0b +drivers/scsi/libata ata_interrupt 0x1cf5f836 +drivers/scsi/libata ata_noop_dev_select 0x9f2bf7bb +drivers/scsi/libata ata_pci_device_resume 0x6dd536d2 +drivers/scsi/libata ata_pci_device_suspend 0x07f45bcd +drivers/scsi/libata ata_pci_host_stop 0xb370e00f +drivers/scsi/libata ata_pci_init_native_mode 0x3bc235d2 +drivers/scsi/libata ata_pci_init_one 0xa0951651 +drivers/scsi/libata ata_pci_remove_one 0xcfb6646f +drivers/scsi/libata ata_port_disable 0x9b8507bc +drivers/scsi/libata ata_port_probe 0x0827d7d4 +drivers/scsi/libata ata_port_start 0xf4b83dfb +drivers/scsi/libata ata_port_stop 0x047ef044 +drivers/scsi/libata ata_qc_complete 0x7292c3e6 +drivers/scsi/libata ata_qc_issue_prot 0x8ed81950 +drivers/scsi/libata ata_qc_prep 0xcf33d9d6 +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0x81c7b615 +drivers/scsi/libata ata_scsi_device_shutdown 0xbccdefce +drivers/scsi/libata ata_scsi_device_suspend 0xf33f0d47 +drivers/scsi/libata ata_scsi_error 0x9eb7f21c +drivers/scsi/libata ata_scsi_ioctl 0xcce8fe00 +drivers/scsi/libata ata_scsi_queuecmd 0xb1b29df6 +drivers/scsi/libata ata_scsi_release 0x3812accb +drivers/scsi/libata ata_scsi_simulate 0x194e2d2b +drivers/scsi/libata ata_scsi_slave_config 0x5e89f4d5 +drivers/scsi/libata ata_sg_init 0xe92dc1b4 +drivers/scsi/libata ata_sg_init_one 0x402e8f69 +drivers/scsi/libata ata_std_bios_param 0xbb7d8609 +drivers/scsi/libata ata_std_dev_select 0x13052f22 +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0xd25f9a2e +drivers/scsi/libata ata_tf_load 0x901a65ba +drivers/scsi/libata ata_tf_read 0xf63041a3 +drivers/scsi/libata ata_tf_to_fis 0x97bb9d3f +drivers/scsi/libata ata_timing_compute 0x08dc7e4c +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata do_drive_get_GTF 0x3f87fad3 +drivers/scsi/libata do_drive_set_taskfiles 0x640735d3 +drivers/scsi/libata pci_test_config_bits 0xd33f34f7 +drivers/scsi/libata sata_phy_reset 0x3660246a +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0xb2e0b271 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0xb65e5fbe +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x7920073e +drivers/scsi/qlogicfas408 qlogicfas408_abort 0x9964f415 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0x92336ce0 +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0x7b446ee7 +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0x49ab9bc5 +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x6a43a093 +drivers/scsi/qlogicfas408 qlogicfas408_info 0x871c1088 +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0xb7d628df +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0x9289d78b +drivers/scsi/raid_class raid_class_release 0x66942da3 +drivers/scsi/raid_class raid_component_add 0x79bae1d8 +drivers/scsi/sas/sas_class sas_register_ha 0x86223672 +drivers/scsi/sas/sas_class sas_unregister_ha 0x49333e35 +drivers/scsi/scsi_transport_fc fc_attach_transport 0xfcec3605 +drivers/scsi/scsi_transport_fc fc_release_transport 0xe27e2eda +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x5cc6d6d5 +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0xae27215c +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x82d86306 +drivers/scsi/scsi_transport_fc fc_remove_host 0xd9ce64dd +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0x15b39f65 +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0x8677ed8d +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x200e54d7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x632aeaa2 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x82cd22e7 +drivers/scsi/scsi_transport_sas sas_attach_transport 0x494edd8d +drivers/scsi/scsi_transport_sas sas_phy_add 0xd148295a +drivers/scsi/scsi_transport_sas sas_phy_alloc 0x94a17130 +drivers/scsi/scsi_transport_sas sas_phy_delete 0xfed4c1fb +drivers/scsi/scsi_transport_sas sas_phy_free 0x674b6ae9 +drivers/scsi/scsi_transport_sas sas_release_transport 0x6f5acd89 +drivers/scsi/scsi_transport_sas sas_remove_host 0xe4c1868d +drivers/scsi/scsi_transport_sas sas_rphy_add 0x8822fb29 +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0xd5390947 +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x71f2b602 +drivers/scsi/scsi_transport_sas sas_rphy_free 0x696e55fb +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0xe4ed95b0 +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0xd6514d70 +drivers/scsi/scsi_transport_spi spi_attach_transport 0x1d9655fe +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0x74025fc6 +drivers/scsi/scsi_transport_spi spi_dv_device 0x70cd2db7 +drivers/scsi/scsi_transport_spi spi_release_transport 0xed788b60 +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0xd5f2bf9d +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x7e0e29d2 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0x39bfd4a9 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0xd552e84b +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0x65d81f32 +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0xc72740c8 +drivers/telephony/ixj ixj_pcmcia_probe 0x1d5ab2d2 +drivers/telephony/phonedev phone_register_device 0xd6d5bcd4 +drivers/telephony/phonedev phone_unregister_device 0x1c06f959 +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0xbf422d0e +drivers/usb/core/usbcore usb_alloc_dev 0x9491bf2a +drivers/usb/core/usbcore usb_alloc_urb 0xe560ba41 +drivers/usb/core/usbcore usb_altnum_to_altsetting 0xef71d046 +drivers/usb/core/usbcore usb_buffer_alloc 0x2bf04604 +drivers/usb/core/usbcore usb_buffer_free 0x36a15712 +drivers/usb/core/usbcore usb_buffer_map_sg 0x1d65f6fd +drivers/usb/core/usbcore usb_buffer_unmap_sg 0xf6ae3d37 +drivers/usb/core/usbcore usb_bulk_msg 0x866357ec +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0xe087f60f +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0xb1f1384f +drivers/usb/core/usbcore usb_claim_bandwidth 0xd55d7e54 +drivers/usb/core/usbcore usb_clear_halt 0xadf79c74 +drivers/usb/core/usbcore usb_control_msg 0xdba55ed1 +drivers/usb/core/usbcore usb_create_hcd 0x6f953ef3 +drivers/usb/core/usbcore usb_deregister 0x028ea92c +drivers/usb/core/usbcore usb_deregister_dev 0x5987f1f5 +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0x013158f9 +drivers/usb/core/usbcore usb_driver_claim_interface 0xb93d4d9f +drivers/usb/core/usbcore usb_driver_release_interface 0x08f45d1e +drivers/usb/core/usbcore usb_find_device 0xb93c3b53 +drivers/usb/core/usbcore usb_find_interface 0x6532d700 +drivers/usb/core/usbcore usb_free_urb 0x313826f4 +drivers/usb/core/usbcore usb_get_current_frame_number 0x9626554f +drivers/usb/core/usbcore usb_get_descriptor 0x51340c66 +drivers/usb/core/usbcore usb_get_dev 0x9ce3bd9a +drivers/usb/core/usbcore usb_get_intf 0x76a5fe58 +drivers/usb/core/usbcore usb_get_status 0x11adeab7 +drivers/usb/core/usbcore usb_get_string 0xb1233536 +drivers/usb/core/usbcore usb_get_urb 0x91c65c11 +drivers/usb/core/usbcore usb_hc_died 0xb2778916 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0x36ad2f75 +drivers/usb/core/usbcore usb_hcd_pci_probe 0xe0a0ac0a +drivers/usb/core/usbcore usb_hcd_pci_remove 0x29d9afde +drivers/usb/core/usbcore usb_hcd_pci_resume 0xe7f3ad4d +drivers/usb/core/usbcore usb_hcd_pci_suspend 0x4a669de9 +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0x33c67f56 +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0x4a636bae +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0xda428155 +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0x8e96c46e +drivers/usb/core/usbcore usb_ifnum_to_if 0xa6b3d508 +drivers/usb/core/usbcore usb_init_urb 0x3d96eceb +drivers/usb/core/usbcore usb_kill_urb 0x29147f59 +drivers/usb/core/usbcore usb_lock_device 0x1201cf7c +drivers/usb/core/usbcore usb_lock_device_for_reset 0x23814e7e +drivers/usb/core/usbcore usb_match_id 0xcb0ec9f6 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0xc705b646 +drivers/usb/core/usbcore usb_put_dev 0xdfc163e5 +drivers/usb/core/usbcore usb_put_hcd 0xa444c409 +drivers/usb/core/usbcore usb_put_intf 0xa651e08a +drivers/usb/core/usbcore usb_register 0xdf3cd392 +drivers/usb/core/usbcore usb_register_dev 0xf5b28d60 +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x5ed5b259 +drivers/usb/core/usbcore usb_remove_hcd 0xd573fb2e +drivers/usb/core/usbcore usb_reset_configuration 0x830290a4 +drivers/usb/core/usbcore usb_reset_device 0xea0c72be +drivers/usb/core/usbcore usb_set_device_state 0x71f05fe9 +drivers/usb/core/usbcore usb_set_interface 0x0137792e +drivers/usb/core/usbcore usb_sg_cancel 0xcc524868 +drivers/usb/core/usbcore usb_sg_init 0x4fab12a0 +drivers/usb/core/usbcore usb_sg_wait 0x79d8cef4 +drivers/usb/core/usbcore usb_string 0xd11c7e9e +drivers/usb/core/usbcore usb_submit_urb 0x2dcd0568 +drivers/usb/core/usbcore usb_trylock_device 0xb7512238 +drivers/usb/core/usbcore usb_unlink_urb 0xa35a6e53 +drivers/usb/core/usbcore usb_unlock_device 0xbd1fe1e9 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/host/sl811-hcd sl811h_driver 0x17add315 +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0x710261e5 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x2de053b5 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0x7c4e905c +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0x2e94dfc0 +drivers/usb/media/usbvideo RingQueue_Dequeue 0xb3f01b51 +drivers/usb/media/usbvideo RingQueue_Enqueue 0xa8caef21 +drivers/usb/media/usbvideo RingQueue_Flush 0xbc4a757d +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0x26af5b87 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0x17304228 +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x1c67248e +drivers/usb/media/usbvideo usbvideo_Deregister 0x26cc8ca4 +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0x4848e15e +drivers/usb/media/usbvideo usbvideo_TestPattern 0xf19c9ffc +drivers/usb/media/usbvideo usbvideo_register 0x0bc9d1b7 +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0xd90ce34f +drivers/usb/media/w9968cf w9968cf_vppmod_register 0x11add410 +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0x54f0ce92 +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0xaa4a13b9 +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0x48c7fd0c +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0xed3a0c91 +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0x146989de +drivers/usb/net/usbnet usbnet_defer_kevent 0xd6e800f2 +drivers/usb/net/usbnet usbnet_disconnect 0x8f04eb94 +drivers/usb/net/usbnet usbnet_get_drvinfo 0x5869c236 +drivers/usb/net/usbnet usbnet_get_endpoints 0xbec441ed +drivers/usb/net/usbnet usbnet_get_msglevel 0x099754b4 +drivers/usb/net/usbnet usbnet_probe 0xd0fee774 +drivers/usb/net/usbnet usbnet_resume 0xb9639b0e +drivers/usb/net/usbnet usbnet_set_msglevel 0xa4e3079e +drivers/usb/net/usbnet usbnet_skb_return 0xc26450c8 +drivers/usb/net/usbnet usbnet_suspend 0x8f847139 +drivers/usb/serial/usbserial ezusb_set_reset 0x773c2deb +drivers/usb/serial/usbserial ezusb_writememory 0x253159ce +drivers/usb/serial/usbserial usb_serial_deregister 0xf7dc152a +drivers/usb/serial/usbserial usb_serial_disconnect 0xa10e059b +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x0cbf4421 +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0x310cc0bf +drivers/usb/serial/usbserial usb_serial_register 0xd02d12f4 +drivers/video/backlight/backlight backlight_device_register 0x531b619c +drivers/video/backlight/backlight backlight_device_unregister 0x34e59f37 +drivers/video/backlight/lcd lcd_device_register 0x0501963f +drivers/video/backlight/lcd lcd_device_unregister 0x68634250 +drivers/video/console/bitblit fbcon_set_bitops 0xc6f13ab7 +drivers/video/console/font find_font 0xf7584a9c +drivers/video/console/font get_default_font 0x093e3659 +drivers/video/console/softcursor soft_cursor 0xc99ebc00 +drivers/video/console/tileblit fbcon_set_tileops 0x6fc50e60 +drivers/video/cyber2000fb cyber2000fb_attach 0x9f392771 +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x8c85af6a +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0x1ce5334d +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0x97086642 +drivers/video/macmodes mac_find_mode 0x886f654a +drivers/video/macmodes mac_map_monitor_sense 0xe2304303 +drivers/video/macmodes mac_var_to_vmode 0x00907cd5 +drivers/video/macmodes mac_vmode_to_var 0x08ed0b62 +drivers/video/matrox/g450_pll g450_mnp2f 0xdb4d7fa6 +drivers/video/matrox/g450_pll matroxfb_g450_setclk 0x4451dfd2 +drivers/video/matrox/g450_pll matroxfb_g450_setpll_cond 0xa8effdf9 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_init 0x0a07802c +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_restore 0x4dcd7c87 +drivers/video/matrox/matroxfb_DAC1064 matrox_G100 0xdb8e42f3 +drivers/video/matrox/matroxfb_DAC1064 matrox_mystique 0x89bb9fc9 +drivers/video/matrox/matroxfb_Ti3026 matrox_millennium 0x29544528 +drivers/video/matrox/matroxfb_accel matrox_cfbX_init 0xdd9108b9 +drivers/video/matrox/matroxfb_base matroxfb_enable_irq 0x631a6353 +drivers/video/matrox/matroxfb_base matroxfb_register_driver 0x786e430c +drivers/video/matrox/matroxfb_base matroxfb_unregister_driver 0x4c34eabd +drivers/video/matrox/matroxfb_base matroxfb_wait_for_sync 0xe36a67d4 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_connect 0xf512cac8 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_shutdown 0xba4b6751 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_in 0xf5c50ad9 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_out 0x7a824e68 +drivers/video/matrox/matroxfb_misc matroxfb_PLL_calcclock 0x25cf8049 +drivers/video/matrox/matroxfb_misc matroxfb_read_pins 0x24d77c59 +drivers/video/matrox/matroxfb_misc matroxfb_var2my 0xabd8e427 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWinit 0x1a6786f5 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWrestore 0x1ee4a9b6 +drivers/video/sis/sisfb sis_free 0xfe963115 +drivers/video/sis/sisfb sis_free_new 0xd49e3c4a +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0x509cd1c4 +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0x9bc0d261 +drivers/w1/ds9490r ds_put_device 0xd00432e0 +drivers/w1/ds9490r ds_read_bit 0xf064c03b +drivers/w1/ds9490r ds_read_block 0x18880fbf +drivers/w1/ds9490r ds_read_byte 0x3f1825fb +drivers/w1/ds9490r ds_reset 0x260019d6 +drivers/w1/ds9490r ds_touch_bit 0x703a2329 +drivers/w1/ds9490r ds_write_bit 0x0afcfcf1 +drivers/w1/ds9490r ds_write_block 0x9414843a +drivers/w1/ds9490r ds_write_byte 0x361f09b7 +drivers/w1/wire w1_add_master_device 0x65e2815c +drivers/w1/wire w1_calc_crc8 0x63757e92 +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xdb5cf91c +drivers/w1/wire w1_family_put 0xd304807a +drivers/w1/wire w1_family_registered 0x2854d4f0 +drivers/w1/wire w1_read_8 0x85b72634 +drivers/w1/wire w1_read_block 0x2250e9f7 +drivers/w1/wire w1_register_family 0xc3df11e5 +drivers/w1/wire w1_remove_master_device 0xf13283f7 +drivers/w1/wire w1_reset_bus 0x137748d0 +drivers/w1/wire w1_reset_select_slave 0x2c718a43 +drivers/w1/wire w1_search_devices 0xe7c1cec7 +drivers/w1/wire w1_touch_bit 0x3363d314 +drivers/w1/wire w1_unregister_family 0x79444085 +drivers/w1/wire w1_write_8 0xc477e776 +drivers/w1/wire w1_write_block 0x86f1dcb6 +fs/configfs/configfs config_group_init 0x00278e6e +fs/configfs/configfs config_group_init_type_name 0x6f1e592e +fs/configfs/configfs config_item_get 0x665f83aa +fs/configfs/configfs config_item_init 0xbbe184e9 +fs/configfs/configfs config_item_init_type_name 0x60f5e37c +fs/configfs/configfs config_item_put 0x5fbc4e98 +fs/configfs/configfs config_item_set_name 0x2a6d2d29 +fs/configfs/configfs configfs_register_subsystem 0x6a1e8eee +fs/configfs/configfs configfs_unregister_subsystem 0x7790df69 +fs/exportfs/exportfs export_op_default 0x7b84b596 +fs/exportfs/exportfs find_exported_dentry 0xf633b29d +fs/fat/fat fat_add_entries 0xd8254f86 +fs/fat/fat fat_alloc_new_dir 0xe03f036d +fs/fat/fat fat_attach 0xe40ceddc +fs/fat/fat fat_build_inode 0xcf21c38d +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0xe9aee86b +fs/fat/fat fat_dir_empty 0xe6cf2263 +fs/fat/fat fat_fill_super 0xf49f5e36 +fs/fat/fat fat_free_clusters 0xd745fbe3 +fs/fat/fat fat_fs_panic 0x92775404 +fs/fat/fat fat_get_dotdot_entry 0xb3024fad +fs/fat/fat fat_notify_change 0x7253674d +fs/fat/fat fat_remove_entries 0x8c1122a3 +fs/fat/fat fat_scan 0xf02637ec +fs/fat/fat fat_search_long 0x802908e0 +fs/fat/fat fat_sync_bhs 0x74e1614e +fs/fat/fat fat_sync_inode 0xcfd0761f +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0x141ea857 +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0x127ed483 +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0xc19f55d2 +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0x58353814 +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0x0b1d47f5 +fs/jbd/jbd journal_abort 0xf6254278 +fs/jbd/jbd journal_ack_err 0xabca37e3 +fs/jbd/jbd journal_blocks_per_page 0xe2acf660 +fs/jbd/jbd journal_check_available_features 0xff3166c7 +fs/jbd/jbd journal_check_used_features 0x7f07b33b +fs/jbd/jbd journal_clear_err 0x8d8386de +fs/jbd/jbd journal_create 0xed233bd1 +fs/jbd/jbd journal_destroy 0xb8005efa +fs/jbd/jbd journal_dirty_data 0xe32731fa +fs/jbd/jbd journal_dirty_metadata 0x457a22c2 +fs/jbd/jbd journal_errno 0x2629550b +fs/jbd/jbd journal_extend 0x5943a732 +fs/jbd/jbd journal_flush 0x0f7fc033 +fs/jbd/jbd journal_force_commit 0xe77b5c84 +fs/jbd/jbd journal_force_commit_nested 0xef27c09b +fs/jbd/jbd journal_forget 0x6efe5d56 +fs/jbd/jbd journal_get_create_access 0xfe2c295b +fs/jbd/jbd journal_get_undo_access 0xb3bcea39 +fs/jbd/jbd journal_get_write_access 0xcd70877b +fs/jbd/jbd journal_init_dev 0x067cd357 +fs/jbd/jbd journal_init_inode 0x666712e2 +fs/jbd/jbd journal_invalidatepage 0x5a9da698 +fs/jbd/jbd journal_load 0x25cc3fe3 +fs/jbd/jbd journal_lock_updates 0x15310152 +fs/jbd/jbd journal_release_buffer 0x56db2c3b +fs/jbd/jbd journal_restart 0x06624a46 +fs/jbd/jbd journal_revoke 0x5431620b +fs/jbd/jbd journal_set_features 0xcefd71d5 +fs/jbd/jbd journal_start 0x04370949 +fs/jbd/jbd journal_start_commit 0x656c3676 +fs/jbd/jbd journal_stop 0x038aba96 +fs/jbd/jbd journal_try_to_free_buffers 0xa775b159 +fs/jbd/jbd journal_unlock_updates 0xbba424eb +fs/jbd/jbd journal_update_format 0xb5ebe102 +fs/jbd/jbd journal_update_superblock 0xd9189df6 +fs/jbd/jbd journal_wipe 0xeac295e1 +fs/jbd/jbd log_wait_commit 0x121cd247 +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0x5f2d2e29 +fs/lockd/lockd nlmsvc_ops 0x82ac041d +fs/nfsd/nfsd nfs4_acl_add_ace 0xc9a24970 +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0xef013964 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0xd3452119 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xdae05306 +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x81a17396 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0xf56c2017 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0xb35a8de5 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xc4d99852 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0x6b3c52cb +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0x93dc8874 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0xc7fc9f76 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x7cdb58bd +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0xf982e6db +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0xfa83d357 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0x6aa0098d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0x19f5b574 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x89dc5ff9 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0xdb9726ee +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xb6ebf62a +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0x39feb474 +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0x894587e2 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0xc72a68f1 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0x524fea0e +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0x39a4f912 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0xf042b01b +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0xf0f7934b +fs/relayfs/relayfs relay_buf_full 0x400b8484 +fs/relayfs/relayfs relay_close 0x9be6981e +fs/relayfs/relayfs relay_flush 0x1698d5b3 +fs/relayfs/relayfs relay_open 0xaab09e98 +fs/relayfs/relayfs relay_reset 0xe807bb94 +fs/relayfs/relayfs relay_subbufs_consumed 0xf5b30617 +fs/relayfs/relayfs relay_switch_subbuf 0xf1a4c4f0 +fs/relayfs/relayfs relayfs_create_dir 0xf724ca9b +fs/relayfs/relayfs relayfs_file_operations 0x9d142841 +fs/relayfs/relayfs relayfs_remove_dir 0x42857a33 +lib/crc-ccitt crc_ccitt 0x7e821ba1 +lib/crc-ccitt crc_ccitt_table 0x7f03b6a9 +lib/crc16 crc16 0x84d4c8cc +lib/crc16 crc16_table 0x146289b7 +lib/libcrc32c crc32c_be 0xc2904b41 +lib/libcrc32c crc32c_le 0x90ec507c +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0x517151b5 +net/appletalk/appletalk alloc_ltalkdev 0xf40bf991 +net/appletalk/appletalk atalk_find_dev_addr 0x4c7fea25 +net/appletalk/appletalk atrtr_get_dev 0xdda2f605 +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0xb0777344 +net/ax25/ax25 ax25_findbyuid 0xf5550f68 +net/ax25/ax25 ax25_hard_header 0x02a5a840 +net/ax25/ax25 ax25_linkfail_register 0x4e09dbf6 +net/ax25/ax25 ax25_linkfail_release 0xbc773491 +net/ax25/ax25 ax25_listen_register 0x487f6bd4 +net/ax25/ax25 ax25_listen_release 0xfe5e66f8 +net/ax25/ax25 ax25_protocol_register 0x84c407fb +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0xc995efff +net/ax25/ax25 ax25_send_frame 0xdfeeb16c +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0x058a0ca8 +net/bluetooth/bluetooth bt_accept_enqueue 0x6fcefa8c +net/bluetooth/bluetooth bt_accept_unlink 0x2cece2ef +net/bluetooth/bluetooth bt_class 0x0b672af6 +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0x3d85b69e +net/bluetooth/bluetooth bt_sock_poll 0xb5275140 +net/bluetooth/bluetooth bt_sock_recvmsg 0x84bd5ca2 +net/bluetooth/bluetooth bt_sock_register 0x9479fbe9 +net/bluetooth/bluetooth bt_sock_unlink 0xbdc591e4 +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0xff91e724 +net/bluetooth/bluetooth hci_alloc_dev 0xd86d0d70 +net/bluetooth/bluetooth hci_conn_auth 0x1fbbe662 +net/bluetooth/bluetooth hci_conn_change_link_key 0xe92218c3 +net/bluetooth/bluetooth hci_conn_encrypt 0xa4716941 +net/bluetooth/bluetooth hci_conn_switch_role 0x9850a436 +net/bluetooth/bluetooth hci_connect 0x2c7e91d6 +net/bluetooth/bluetooth hci_free_dev 0xfb572922 +net/bluetooth/bluetooth hci_get_route 0x7e873b18 +net/bluetooth/bluetooth hci_register_cb 0x92e02a3e +net/bluetooth/bluetooth hci_register_dev 0xabca42f1 +net/bluetooth/bluetooth hci_register_proto 0xdfd035ac +net/bluetooth/bluetooth hci_resume_dev 0xac72362a +net/bluetooth/bluetooth hci_send_acl 0xb78d379f +net/bluetooth/bluetooth hci_send_sco 0xb9a6ea1a +net/bluetooth/bluetooth hci_suspend_dev 0x4a6c62df +net/bluetooth/bluetooth hci_unregister_cb 0x40983631 +net/bluetooth/bluetooth hci_unregister_dev 0xd715e208 +net/bluetooth/bluetooth hci_unregister_proto 0xd10bac71 +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0x65110596 +net/bridge/netfilter/ebtables ebt_do_table 0x99a5bf21 +net/bridge/netfilter/ebtables ebt_register_match 0xc8676b5b +net/bridge/netfilter/ebtables ebt_register_table 0x82739cda +net/bridge/netfilter/ebtables ebt_register_target 0x91360ccf +net/bridge/netfilter/ebtables ebt_register_watcher 0x045875a9 +net/bridge/netfilter/ebtables ebt_unregister_match 0xca1755b7 +net/bridge/netfilter/ebtables ebt_unregister_table 0x945f7fb8 +net/bridge/netfilter/ebtables ebt_unregister_target 0x35d42483 +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x5813562f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0x87634e95 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc83c96e5 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x2319ff67 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x864c046f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0xa2665cc8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x884c6ee3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0x180a9321 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0xa74eb8d4 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x3b3a928a +net/dccp/dccp ccid_exit 0x96e5ee45 +net/dccp/dccp ccid_init 0x0587d8d8 +net/dccp/dccp ccid_register 0x0b27aeac +net/dccp/dccp ccid_unregister 0xf1bdf83d +net/dccp/dccp dccp_hashinfo 0x4af177d3 +net/dccp/dccp dccp_insert_option 0xa7b78f86 +net/dccp/dccp dccp_insert_option_elapsed_time 0x01371d73 +net/dccp/dccp dccp_insert_option_timestamp 0x2f637b01 +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0x62b7df9f +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0x54e10d03 +net/ieee80211/ieee80211 alloc_ieee80211 0x0fadd463 +net/ieee80211/ieee80211 escape_essid 0xb731e545 +net/ieee80211/ieee80211 free_ieee80211 0x19c8a7ef +net/ieee80211/ieee80211 ieee80211_channel_to_index 0xa7f6a008 +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0x55c05319 +net/ieee80211/ieee80211 ieee80211_get_channel 0x80e96874 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0xc760bb5f +net/ieee80211/ieee80211 ieee80211_get_geo 0x40d17505 +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0xf4742758 +net/ieee80211/ieee80211 ieee80211_rx 0x7a843bb3 +net/ieee80211/ieee80211 ieee80211_rx_mgt 0x2e83576d +net/ieee80211/ieee80211 ieee80211_set_geo 0x09c0a80c +net/ieee80211/ieee80211 ieee80211_tx_frame 0x98ce412b +net/ieee80211/ieee80211 ieee80211_txb_free 0xfe8f88af +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0x1b30cbe5 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0x067aa3ce +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0xd7ed9960 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0xbd38fb33 +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0x848d015f +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0xdc23190e +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x4adfa098 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0xfa885937 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x9e4efa6a +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0x333938b1 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x550e7936 +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0x1a12b992 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x6cadd6f9 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0xad6588f3 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0xf8f900f0 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x5245578f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0xf70220d1 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0xd4ea8faf +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0x56b29cab +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0x03f01689 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0xd755a42b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0x533f216f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0xc1b25535 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0x21aa41d0 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x95e750fc +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x4452d907 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x11b4e692 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0xea99b26d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x0a81a688 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x0a5a9a46 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x139af9d4 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0x07df439b +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x3b8d88a7 +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x54e1993a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0xc696f274 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0x66ba6d25 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0x65f24bc8 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0x63dda54c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0xa0033f7c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0xbd6777b5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x166c25fd +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0xe6a8a7d2 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0xb100bec5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0xdcf66c6d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x1e94ba65 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x16c20622 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x3ac5d9cc +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0xc87a2e2c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x6edd16b4 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0x5bed3da8 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0x4a957b5b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0xc77c0fb6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x77d37069 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0xfdbec373 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0x6044eea3 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0x51d4b8a1 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0xa7a27221 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x11108154 +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0xef2bf227 +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0xb446de6b +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0x490c548f +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0x6435a3bf +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0xbb8d8597 +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0xe0ee4758 +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0x9eeba4d6 +net/ipv4/ipvs/ip_vs register_ip_vs_app 0x48d67443 +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0x22c71dc6 +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0xaa7d1373 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0xc5a607ba +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0x783aa952 +net/ipv4/netfilter/arp_tables arpt_do_table 0xc369be20 +net/ipv4/netfilter/arp_tables arpt_register_table 0xca06cd87 +net/ipv4/netfilter/arp_tables arpt_register_target 0x1a1bf651 +net/ipv4/netfilter/arp_tables arpt_unregister_table 0xe5d395ce +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x86b65ca9 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0xef6dcd30 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x91dbb89b +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0x0e8258f3 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x3435848c +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0x53dcbb5e +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0x282d1eea +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x27628b0d +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0x0facb386 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0x717a60dd +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0xd16c1795 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0x1100030d +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0xaf56e057 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0x0a86a816 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0xd98acf7b +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x1bfa7e58 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0x4b164126 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0x7ab3d182 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0xb244b341 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x6c0db7f1 +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0xa88ccd7c +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x2f1e88d5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x350c35ab +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x5d49778b +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x60cdbe01 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0xd95036eb +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0xafe5dcd9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x2226f993 +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x766e7ae6 +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0xce14928a +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0xbd786b11 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x7dfef863 +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0xfa84a7f3 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0xcb9f5d04 +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0x43f26a3c +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x8513f91b +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x9da73bc4 +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0x512d15e2 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0x4fb8f1dc +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0x6f647287 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0x26b2c81d +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0xb33feb1d +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0xf6927f86 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x6056e763 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0xd2fc7ead +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0x764a9124 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0x48b96675 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0xec5e6354 +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0xa0071d31 +net/ipv4/netfilter/ip_nat ip_nat_packet 0x3a299434 +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x4c880698 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x23d359ea +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x09bd76b1 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0xc7a40f1b +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x4da4aa1b +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0x9bd4bf71 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0xc5ec9112 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x42b4b5a4 +net/ipv4/netfilter/ip_tables ipt_do_table 0x20702e41 +net/ipv4/netfilter/ip_tables ipt_find_target 0x378b71f4 +net/ipv4/netfilter/ip_tables ipt_register_match 0x9ab45270 +net/ipv4/netfilter/ip_tables ipt_register_table 0x9d62d649 +net/ipv4/netfilter/ip_tables ipt_register_target 0x50cfb322 +net/ipv4/netfilter/ip_tables ipt_unregister_match 0xbc3e647e +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x9cba16e7 +net/ipv4/netfilter/ip_tables ipt_unregister_target 0x5a91ebaf +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0x88616962 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0xaa5c7fe4 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0x11065b31 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0xdd46c05f +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x7d58b841 +net/ipv6/ipv6 inet6_add_protocol 0xa13a2372 +net/ipv6/ipv6 inet6_bind 0x083162d3 +net/ipv6/ipv6 inet6_del_protocol 0x844c09c5 +net/ipv6/ipv6 inet6_getname 0x64277b38 +net/ipv6/ipv6 inet6_ioctl 0x33f583d5 +net/ipv6/ipv6 inet6_register_protosw 0x0673c5f1 +net/ipv6/ipv6 inet6_release 0xdb6707d3 +net/ipv6/ipv6 inet6_unregister_protosw 0x9d535f21 +net/ipv6/ipv6 ip6_route_me_harder 0xd95069a9 +net/ipv6/ipv6 ip6_route_output 0xb7a25f03 +net/ipv6/ipv6 ip6_xmit 0x2fe3943e +net/ipv6/ipv6 ipv6_chk_addr 0x21fe3aac +net/ipv6/ipv6 ipv6_get_saddr 0x70f88e7d +net/ipv6/ipv6 ipv6_getsockopt 0x0c0e850b +net/ipv6/ipv6 ipv6_push_nfrag_opts 0x20746df9 +net/ipv6/ipv6 ipv6_setsockopt 0x44780840 +net/ipv6/ipv6 ndisc_mc_map 0x7b48fa05 +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x6da9064e +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0x95f2fa22 +net/ipv6/ipv6 xfrm6_rcv_spi 0x6622cf83 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0xbe8bf644 +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0x80472a0b +net/ipv6/netfilter/ip6_tables ip6t_register_match 0xb3c9e629 +net/ipv6/netfilter/ip6_tables ip6t_register_table 0x8d7b5187 +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x7f83b8ff +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0x9a446175 +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x63fc6bcd +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0xabf21d8a +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0xe276b54b +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x05511932 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0x93c015c7 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0x02b26eea +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x16e3457a +net/irda/ircomm/ircomm ircomm_close 0x77ffc1ad +net/irda/ircomm/ircomm ircomm_connect_request 0xbd8c0a29 +net/irda/ircomm/ircomm ircomm_connect_response 0x98a12863 +net/irda/ircomm/ircomm ircomm_control_request 0xb2d6b753 +net/irda/ircomm/ircomm ircomm_data_request 0x7087f0bc +net/irda/ircomm/ircomm ircomm_disconnect_request 0xc555688e +net/irda/ircomm/ircomm ircomm_flow_request 0x00ce8c70 +net/irda/ircomm/ircomm ircomm_open 0xf9518be6 +net/irda/irda alloc_irdadev 0xf2faf123 +net/irda/irda async_unwrap_char 0x68247287 +net/irda/irda async_wrap_skb 0x1bf7cf42 +net/irda/irda hashbin_delete 0x1c51e992 +net/irda/irda hashbin_find 0x6621aa8a +net/irda/irda hashbin_get_first 0x538fe1e0 +net/irda/irda hashbin_get_next 0xe2f84c82 +net/irda/irda hashbin_insert 0x22b0f52d +net/irda/irda hashbin_lock_find 0x19d79c82 +net/irda/irda hashbin_new 0x5504cf7c +net/irda/irda hashbin_remove 0x3b2e9df9 +net/irda/irda hashbin_remove_this 0x57fb1ed2 +net/irda/irda irda_device_dongle_cleanup 0xe95289ad +net/irda/irda irda_device_dongle_init 0xf067f83e +net/irda/irda irda_device_register_dongle 0xc445b6bd +net/irda/irda irda_device_set_media_busy 0x4dac0634 +net/irda/irda irda_device_unregister_dongle 0x3e96f8db +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0xfea0dfb6 +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0x4165c707 +net/irda/irda iriap_getvaluebyclass_request 0x73209d00 +net/irda/irda iriap_open 0xdb04cbc1 +net/irda/irda irias_add_integer_attrib 0x519118cc +net/irda/irda irias_add_octseq_attrib 0x05d7cfe5 +net/irda/irda irias_add_string_attrib 0x701e028e +net/irda/irda irias_delete_object 0x5aad87aa +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x503ad245 +net/irda/irda irias_find_object 0x42c7c5ce +net/irda/irda irias_insert_object 0x30827e1c +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0x5d609063 +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0x7a8762f7 +net/irda/irda irlap_open 0xb15df9a7 +net/irda/irda irlmp_close_lsap 0x41fca8f0 +net/irda/irda irlmp_connect_request 0x94ed9ce9 +net/irda/irda irlmp_connect_response 0x842aa6a6 +net/irda/irda irlmp_data_request 0x89768c46 +net/irda/irda irlmp_disconnect_request 0x5132d1cd +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0xaf13ee91 +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0x95442e71 +net/irda/irda irttp_connect_request 0xd7591a5f +net/irda/irda irttp_connect_response 0xb27a18bd +net/irda/irda irttp_data_request 0x0865c78b +net/irda/irda irttp_disconnect_request 0xfad2b1d8 +net/irda/irda irttp_dup 0x379932b1 +net/irda/irda irttp_flow_request 0x81165f35 +net/irda/irda irttp_open_tsap 0x251b1893 +net/irda/irda irttp_udata_request 0x57c0ded9 +net/irda/irda proc_irda 0xc17d0ac7 +net/netfilter/nfnetlink __nfa_fill 0xa3f36339 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0x0a01409b +net/netfilter/nfnetlink nfnetlink_subsys_register 0x67fe2cc3 +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0x7caaaba2 +net/netfilter/nfnetlink nfnetlink_unicast 0x136f9b3b +net/rxrpc/rxrpc rxrpc_add_service 0x3c8b61c1 +net/rxrpc/rxrpc rxrpc_call_abort 0xc6c7b6e9 +net/rxrpc/rxrpc rxrpc_call_read_data 0xd5ff635e +net/rxrpc/rxrpc rxrpc_call_write_data 0x9833c38d +net/rxrpc/rxrpc rxrpc_create_call 0x0f967598 +net/rxrpc/rxrpc rxrpc_create_connection 0x6669f428 +net/rxrpc/rxrpc rxrpc_create_transport 0x52e13f95 +net/rxrpc/rxrpc rxrpc_del_service 0xf3aa84e3 +net/rxrpc/rxrpc rxrpc_put_call 0xf572f6ad +net/rxrpc/rxrpc rxrpc_put_connection 0xcdcb0ea2 +net/rxrpc/rxrpc rxrpc_put_transport 0x99faeaa9 +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x38d3dce5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0x482ac5a4 +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xd7673035 +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0xf249ae27 +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0x8cc19db7 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0x638fd39a +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0x5f7b9b16 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0x5f5ac79d +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0x010725cc +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0x6d78385f +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0x9dfd9ef2 +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0x34099853 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0xa09c634e +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0x92a0c9d6 +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0xf7ec31cd +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0xad518700 +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x856f405e +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x0d9fd9d6 +net/sunrpc/sunrpc auth_domain_find 0x66473d18 +net/sunrpc/sunrpc auth_domain_lookup 0x8753673f +net/sunrpc/sunrpc auth_domain_put 0x0c1f8bcf +net/sunrpc/sunrpc auth_unix_add_addr 0xbb40b9c8 +net/sunrpc/sunrpc auth_unix_forget_old 0x6611c290 +net/sunrpc/sunrpc auth_unix_lookup 0xdea87810 +net/sunrpc/sunrpc cache_check 0xe01cbff6 +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0xd8f5685e +net/sunrpc/sunrpc cache_init 0x404d68bb +net/sunrpc/sunrpc cache_purge 0x5e1cde53 +net/sunrpc/sunrpc cache_register 0x5acb1683 +net/sunrpc/sunrpc cache_unregister 0x84e83c39 +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0x8cd02719 +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0x25044746 +net/sunrpc/sunrpc rpc_bind_new_program 0x85c11580 +net/sunrpc/sunrpc rpc_call_async 0x380bb08b +net/sunrpc/sunrpc rpc_call_setup 0xd7ac1f61 +net/sunrpc/sunrpc rpc_call_sync 0xaa0af842 +net/sunrpc/sunrpc rpc_clnt_sigmask 0x0b01f7b9 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0xaea128e4 +net/sunrpc/sunrpc rpc_clone_client 0xb9b5c492 +net/sunrpc/sunrpc rpc_create_client 0xefbd9343 +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0x4f01c142 +net/sunrpc/sunrpc rpc_destroy_client 0xa253f634 +net/sunrpc/sunrpc rpc_execute 0x0d2cd889 +net/sunrpc/sunrpc rpc_init_task 0x1927a726 +net/sunrpc/sunrpc rpc_init_wait_queue 0x9b8a689d +net/sunrpc/sunrpc rpc_killall_tasks 0xd38aef5a +net/sunrpc/sunrpc rpc_max_payload 0x39f8c915 +net/sunrpc/sunrpc rpc_mkpipe 0xdfa147d2 +net/sunrpc/sunrpc rpc_new_child 0x6501be8f +net/sunrpc/sunrpc rpc_new_client 0x4316fb00 +net/sunrpc/sunrpc rpc_new_task 0x178e989b +net/sunrpc/sunrpc rpc_proc_register 0x865e1675 +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x0064cbe6 +net/sunrpc/sunrpc rpc_release_client 0x907fffa2 +net/sunrpc/sunrpc rpc_release_task 0x496fbc38 +net/sunrpc/sunrpc rpc_restart_call 0xcca3bae1 +net/sunrpc/sunrpc rpc_run_child 0x93f4b94a +net/sunrpc/sunrpc rpc_setbufsize 0xe1371d14 +net/sunrpc/sunrpc rpc_shutdown_client 0xdc4263c4 +net/sunrpc/sunrpc rpc_sleep_on 0x09404384 +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0x49e5e765 +net/sunrpc/sunrpc rpc_wake_up_next 0xd5e91889 +net/sunrpc/sunrpc rpc_wake_up_status 0x4e43d6e5 +net/sunrpc/sunrpc rpc_wake_up_task 0xc8d77002 +net/sunrpc/sunrpc rpcauth_create 0x187bd6c0 +net/sunrpc/sunrpc rpcauth_free_credcache 0x21428da2 +net/sunrpc/sunrpc rpcauth_init_credcache 0x992ace3d +net/sunrpc/sunrpc rpcauth_lookup_credcache 0x0f1d3a1c +net/sunrpc/sunrpc rpcauth_lookupcred 0x9e4c1403 +net/sunrpc/sunrpc rpcauth_register 0x1366fb8e +net/sunrpc/sunrpc rpcauth_unregister 0x56a276b8 +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x08b05f1a +net/sunrpc/sunrpc svc_auth_unregister 0x5a45ba31 +net/sunrpc/sunrpc svc_authenticate 0x30d9eecf +net/sunrpc/sunrpc svc_create 0x893087c2 +net/sunrpc/sunrpc svc_create_thread 0x7e31d88c +net/sunrpc/sunrpc svc_destroy 0xbf6f8e0e +net/sunrpc/sunrpc svc_drop 0x591bae0e +net/sunrpc/sunrpc svc_exit_thread 0x3ca8ed4c +net/sunrpc/sunrpc svc_makesock 0xa11920ee +net/sunrpc/sunrpc svc_proc_register 0xca977304 +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0x0d9cd9b1 +net/sunrpc/sunrpc svc_recv 0x7e193183 +net/sunrpc/sunrpc svc_reserve 0x4aae6dea +net/sunrpc/sunrpc svc_seq_show 0xed6f8252 +net/sunrpc/sunrpc svc_set_client 0xf604bfab +net/sunrpc/sunrpc svc_wake_up 0xd7b9e308 +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x3e482943 +net/sunrpc/sunrpc xdr_buf_from_iov 0xea120e20 +net/sunrpc/sunrpc xdr_buf_read_netobj 0xe2c53ef7 +net/sunrpc/sunrpc xdr_buf_subsegment 0xae210005 +net/sunrpc/sunrpc xdr_decode_array2 0x538a7c9e +net/sunrpc/sunrpc xdr_decode_netobj 0x1b431c8f +net/sunrpc/sunrpc xdr_decode_string 0xe7e08cbd +net/sunrpc/sunrpc xdr_decode_string_inplace 0xf3692830 +net/sunrpc/sunrpc xdr_decode_word 0xcb8492f0 +net/sunrpc/sunrpc xdr_encode_array2 0xde73a4c8 +net/sunrpc/sunrpc xdr_encode_netobj 0x08366747 +net/sunrpc/sunrpc xdr_encode_opaque 0x7874c50f +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0xd75126a9 +net/sunrpc/sunrpc xdr_encode_pages 0x2705b00f +net/sunrpc/sunrpc xdr_encode_string 0x3d9bb42c +net/sunrpc/sunrpc xdr_encode_word 0xe394d196 +net/sunrpc/sunrpc xdr_init_decode 0xfe6ddf1b +net/sunrpc/sunrpc xdr_init_encode 0x8ca17efc +net/sunrpc/sunrpc xdr_inline_decode 0xbf2c5f8b +net/sunrpc/sunrpc xdr_inline_pages 0x6a21c4f5 +net/sunrpc/sunrpc xdr_read_pages 0x8fc0f9a1 +net/sunrpc/sunrpc xdr_reserve_space 0xa811f1b4 +net/sunrpc/sunrpc xdr_shift_buf 0x03626b3c +net/sunrpc/sunrpc xdr_write_pages 0x237678ed +net/sunrpc/sunrpc xprt_create_proto 0x2a75d115 +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x9d20d394 +net/wanrouter/wanrouter register_wan_device 0x0e557033 +net/wanrouter/wanrouter unlock_adapter_irq 0xb684b986 +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0x6ac34049 +net/wanrouter/wanrouter wanrouter_type_trans 0x0849594f +security/commoncap cap_bprm_apply_creds 0x8b6e81e4 +security/commoncap cap_bprm_secureexec 0x0323b97f +security/commoncap cap_bprm_set_security 0xca9510a1 +security/commoncap cap_capable 0x0fe1a8ac +security/commoncap cap_capget 0x40480133 +security/commoncap cap_capset_check 0x8850102d +security/commoncap cap_capset_set 0xc1a372a1 +security/commoncap cap_inode_removexattr 0x48f83e71 +security/commoncap cap_inode_setxattr 0xf92a3909 +security/commoncap cap_netlink_recv 0xd3045f18 +security/commoncap cap_netlink_send 0x0dbb2101 +security/commoncap cap_ptrace 0x71004ac9 +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x13ea5cf8 +security/commoncap cap_task_reparent_to_init 0xe8835b59 +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x5f85393f +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x49f96187 +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0xa7c1ffe7 +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0xfa510305 +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x8503f4f1 +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x1f2c1c9e +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x6e647034 +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0xfd28dc28 +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x30402c03 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x4225c718 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0xf13a8648 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0x9958fec7 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0x4b315eb5 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x652e5613 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0xc45d349a +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x20b09520 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x94bcd226 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x2f00b54d +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x8d98548b +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0xc7bd34d4 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0xb9643a3b +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0x953a9818 +sound/core/snd copy_from_user_toio 0x518bb7f8 +sound/core/snd copy_to_user_fromio 0xe243dde3 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0xa572bccf +sound/core/snd snd_card_file_add 0x854d03a9 +sound/core/snd snd_card_file_remove 0xb3f07c3a +sound/core/snd snd_card_free 0xec2d4b81 +sound/core/snd snd_card_free_in_thread 0x0b81d71a +sound/core/snd snd_card_new 0xef1151b0 +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0x9f532e79 +sound/core/snd snd_card_register 0x1fb7a4bb +sound/core/snd snd_card_set_generic_dev 0xcae8f566 +sound/core/snd snd_card_set_generic_pm_callback 0x1cab491e +sound/core/snd snd_card_set_pm_callback 0x8a7c843b +sound/core/snd snd_cards 0xac82fd88 +sound/core/snd snd_component_add 0x564cf3fc +sound/core/snd snd_ctl_add 0xfd1ced40 +sound/core/snd snd_ctl_elem_read 0x210aeae6 +sound/core/snd snd_ctl_elem_write 0x8df76710 +sound/core/snd snd_ctl_find_id 0x755d2cad +sound/core/snd snd_ctl_find_numid 0x23565d19 +sound/core/snd snd_ctl_free_one 0xa81465c3 +sound/core/snd snd_ctl_new 0xf57b7d98 +sound/core/snd snd_ctl_new1 0xab6e5d11 +sound/core/snd snd_ctl_notify 0xca571018 +sound/core/snd snd_ctl_register_ioctl 0xeb2ccde0 +sound/core/snd snd_ctl_register_ioctl_compat 0x1c0a1c4b +sound/core/snd snd_ctl_remove 0x971eca1a +sound/core/snd snd_ctl_remove_id 0x4ab010ae +sound/core/snd snd_ctl_rename_id 0x82994846 +sound/core/snd snd_ctl_unregister_ioctl 0xca9422c5 +sound/core/snd snd_ctl_unregister_ioctl_compat 0x5ea428a9 +sound/core/snd snd_device_free 0x1f971c5a +sound/core/snd snd_device_new 0x86479987 +sound/core/snd snd_device_register 0x1e1aba75 +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0x5ebebe77 +sound/core/snd snd_info_create_module_entry 0x4d6b7a8b +sound/core/snd snd_info_free_entry 0x857b5850 +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0xe0806d03 +sound/core/snd snd_info_unregister 0xb7206abd +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0xf5bf0a5a +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0x8e6244f8 +sound/core/snd snd_register_device 0x99dc3fd5 +sound/core/snd snd_register_oss_device 0xccca9f01 +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0x93b7d255 +sound/core/snd snd_unregister_device 0x7ca1f577 +sound/core/snd snd_unregister_oss_device 0x71241a71 +sound/core/snd-hwdep snd_hwdep_new 0x2baaf414 +sound/core/snd-page-alloc snd_dma_alloc_pages 0x03ae78d6 +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0xadbaa442 +sound/core/snd-page-alloc snd_dma_free_pages 0xc95ff448 +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0x2f203ad5 +sound/core/snd-page-alloc snd_dma_reserve_buf 0xba275fdf +sound/core/snd-page-alloc snd_free_pages 0x19cc2ce3 +sound/core/snd-page-alloc snd_malloc_pages 0xc6829020 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x0beab9b1 +sound/core/snd-pcm snd_pcm_devices 0xf213afee +sound/core/snd-pcm snd_pcm_format_big_endian 0x93878ece +sound/core/snd-pcm snd_pcm_format_linear 0x8733f967 +sound/core/snd-pcm snd_pcm_format_little_endian 0x8bbdc311 +sound/core/snd-pcm snd_pcm_format_name 0xedd5b5bd +sound/core/snd-pcm snd_pcm_format_physical_width 0xa8edfa41 +sound/core/snd-pcm snd_pcm_format_set_silence 0xdf124602 +sound/core/snd-pcm snd_pcm_format_signed 0xe2c5f868 +sound/core/snd-pcm snd_pcm_format_silence_64 0xda29bc77 +sound/core/snd-pcm snd_pcm_format_size 0xa2658908 +sound/core/snd-pcm snd_pcm_format_unsigned 0x95a60aa5 +sound/core/snd-pcm snd_pcm_format_width 0x55eb2175 +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0xcf32f9bb +sound/core/snd-pcm snd_pcm_hw_constraint_list 0x08221364 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0xfb3b775f +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0xf85908e3 +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0x792e0e3c +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x306fa3ae +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x5f80ec25 +sound/core/snd-pcm snd_pcm_hw_constraint_step 0xb01c7597 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0xa745d613 +sound/core/snd-pcm snd_pcm_hw_constraints_init 0xb6189d25 +sound/core/snd-pcm snd_pcm_hw_param_first 0x07ca455c +sound/core/snd-pcm snd_pcm_hw_param_last 0xb9303c72 +sound/core/snd-pcm snd_pcm_hw_param_mask 0x544c9102 +sound/core/snd-pcm snd_pcm_hw_param_near 0x3d9788aa +sound/core/snd-pcm snd_pcm_hw_param_set 0xfc8c3e08 +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0x9660e4e7 +sound/core/snd-pcm snd_pcm_hw_rule_add 0x2a3a41fc +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0x42ebf2d6 +sound/core/snd-pcm snd_pcm_kernel_ioctl 0xbbe0708c +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0xe9c66079 +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0xa2159b89 +sound/core/snd-pcm snd_pcm_lib_free_pages 0x8dd91c60 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x6fd4537a +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x2fc45e96 +sound/core/snd-pcm snd_pcm_lib_period_bytes 0x723246b7 +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x59f79e1b +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0x45b96300 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0xa38e7168 +sound/core/snd-pcm snd_pcm_lib_read 0xbe55615f +sound/core/snd-pcm snd_pcm_lib_readv 0xfa2736b3 +sound/core/snd-pcm snd_pcm_lib_write 0x45db5d28 +sound/core/snd-pcm snd_pcm_lib_writev 0xa6f5f518 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x6db245ff +sound/core/snd-pcm snd_pcm_link_rwlock 0x395e287f +sound/core/snd-pcm snd_pcm_mmap_data 0x28e72c6e +sound/core/snd-pcm snd_pcm_new 0x5f1be883 +sound/core/snd-pcm snd_pcm_new_stream 0x5e54c80f +sound/core/snd-pcm snd_pcm_notify 0x6ceceff4 +sound/core/snd-pcm snd_pcm_open_substream 0xaec5863d +sound/core/snd-pcm snd_pcm_period_elapsed 0x9f73b31b +sound/core/snd-pcm snd_pcm_release_substream 0xec6f5ef4 +sound/core/snd-pcm snd_pcm_set_ops 0xc8da5958 +sound/core/snd-pcm snd_pcm_set_sync 0xeef7bb6f +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0xeed03eea +sound/core/snd-pcm snd_pcm_stop 0xc91c5f52 +sound/core/snd-pcm snd_pcm_suspend 0xd15a1d82 +sound/core/snd-pcm snd_pcm_suspend_all 0x2ced43a0 +sound/core/snd-rawmidi snd_rawmidi_drain_input 0xbb4d1797 +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x428485c8 +sound/core/snd-rawmidi snd_rawmidi_drop_output 0x97c42bcd +sound/core/snd-rawmidi snd_rawmidi_info 0x04a06b06 +sound/core/snd-rawmidi snd_rawmidi_info_select 0xa60cd6e1 +sound/core/snd-rawmidi snd_rawmidi_input_params 0x6023be8d +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0xe2c96c72 +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0xe22be6b4 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0xb7fbe6f8 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0xb673c40d +sound/core/snd-rawmidi snd_rawmidi_new 0xc7c4d61b +sound/core/snd-rawmidi snd_rawmidi_output_params 0x0f24da94 +sound/core/snd-rawmidi snd_rawmidi_receive 0x1e56f955 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x0d52834d +sound/core/snd-rawmidi snd_rawmidi_transmit 0xd22a8e6e +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0xc52493bc +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x5fdeef6d +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0xb466cd11 +sound/core/snd-timer snd_timer_close 0x53d316ed +sound/core/snd-timer snd_timer_continue 0x2bb16695 +sound/core/snd-timer snd_timer_global_free 0x5f36b9cc +sound/core/snd-timer snd_timer_global_new 0xb6afbcbc +sound/core/snd-timer snd_timer_global_register 0x4317721c +sound/core/snd-timer snd_timer_global_unregister 0xaf9eaf20 +sound/core/snd-timer snd_timer_interrupt 0x0407d38d +sound/core/snd-timer snd_timer_new 0xd3a4ed1a +sound/core/snd-timer snd_timer_notify 0x14d6bd63 +sound/core/snd-timer snd_timer_open 0x1a59b8c2 +sound/core/snd-timer snd_timer_pause 0xa9478b8b +sound/core/snd-timer snd_timer_resolution 0x381b3bb4 +sound/core/snd-timer snd_timer_start 0x28be4dee +sound/core/snd-timer snd_timer_stop 0x0c4c91dc +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0xa9507612 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x2581687c +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0x3b4501f5 +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0xe7e4868a +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0xe731ab66 +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0xfbc9e1d3 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0xd8d3ee2d +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0x02e16142 +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0x7424b7c6 +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x1d72c2e2 +sound/drivers/vx/snd-vx-lib snd_vx_create 0xa063fb48 +sound/drivers/vx/snd-vx-lib snd_vx_delay 0x4f8224f3 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x67a62641 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x4eb129ff +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0xf91f54fa +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x27954d8d +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0x71b7a9ef +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0xc491ae5a +sound/i2c/other/snd-ak4114 snd_ak4114_build 0x7471d663 +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0x58e794d0 +sound/i2c/other/snd-ak4114 snd_ak4114_create 0x3f10e00c +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0x467c6ee6 +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0x30e8ebf2 +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0xd4ad6cd4 +sound/i2c/other/snd-ak4117 snd_ak4117_build 0xaaf55f94 +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0x8e0440d8 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0x15ffe64f +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x0dc1419a +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x2de21903 +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x9526af1b +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0x3cf5067a +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0x1c9cc7b9 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0x091050c7 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0x78d4c8ce +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0x81ee86f5 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0xa7f36064 +sound/i2c/snd-cs8427 snd_cs8427_create 0xcde166ae +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0xe2f53cce +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0x81601618 +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0x21ba777c +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0x93083d33 +sound/i2c/snd-cs8427 snd_cs8427_reset 0x57147cd8 +sound/i2c/snd-i2c snd_i2c_bus_create 0x384bcc60 +sound/i2c/snd-i2c snd_i2c_device_create 0xcb16dc95 +sound/i2c/snd-i2c snd_i2c_device_free 0x78eb6795 +sound/i2c/snd-i2c snd_i2c_probeaddr 0xa2a1d111 +sound/i2c/snd-i2c snd_i2c_readbytes 0x5a044081 +sound/i2c/snd-i2c snd_i2c_sendbytes 0x86a7691b +sound/oss/ac97_codec ac97_alloc_codec 0x40693dc9 +sound/oss/ac97_codec ac97_probe_codec 0x3276671d +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0x051fc956 +sound/oss/ac97_codec ac97_release_codec 0x20de675d +sound/oss/ac97_codec ac97_restore_state 0xe699a976 +sound/oss/ac97_codec ac97_save_state 0x0c3dea90 +sound/oss/ac97_codec ac97_set_adc_rate 0x448ee762 +sound/oss/ac97_codec ac97_set_dac_rate 0x5bf565dd +sound/oss/ac97_codec ac97_tune_hardware 0x0370c04a +sound/oss/ac97_codec ac97_unregister_driver 0x4ac9699d +sound/oss/msnd msnd_disable_irq 0x0478cbe6 +sound/oss/msnd msnd_enable_irq 0xff3bbc77 +sound/oss/msnd msnd_fifo_alloc 0x9853d449 +sound/oss/msnd msnd_fifo_free 0x180cefff +sound/oss/msnd msnd_fifo_init 0x68473da1 +sound/oss/msnd msnd_fifo_make_empty 0x679297db +sound/oss/msnd msnd_fifo_read 0xca41668a +sound/oss/msnd msnd_fifo_read_io 0x141fba4d +sound/oss/msnd msnd_fifo_write 0xc8646b7f +sound/oss/msnd msnd_fifo_write_io 0x80504a66 +sound/oss/msnd msnd_init_queue 0x340a3ddf +sound/oss/msnd msnd_register 0x62c59df0 +sound/oss/msnd msnd_send_dsp_cmd 0x96a30190 +sound/oss/msnd msnd_send_word 0xe35868da +sound/oss/msnd msnd_unregister 0xefd56c1f +sound/oss/msnd msnd_upload_host 0x7c97deab +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x9e9271cb +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0xe33ec643 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0x6e8272a1 +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0x8fbedb53 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0x630484a4 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0xc3245e99 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x3c089303 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0x4eef4221 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0xb9cf36cf +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0x569ee412 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0xa7d3b374 +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0xe1829792 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x47eee627 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0xad2246c4 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0x422165aa +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0x1925979c +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0x1ac94ce9 +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0x403f8178 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0x660eefea +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x3db60046 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0xd57e759a +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0x69b15f6d +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0x3ace2515 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0x20aef35c +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0xe1922809 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0xc748cee5 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0x8e3337a4 +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0xd0692a2e +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0x7586184a +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0xd669c46e +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0xdbc1575c +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0x6d266def +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0xcc5f1a7c +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x2cd48d96 +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0x87feba95 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0x4ac427dc +sound/pci/hda/snd-hda-codec snd_hda_resume 0xa0081822 +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0x2498df34 +sound/pci/hda/snd-hda-codec snd_hda_suspend 0x89c53d00 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0x3068a330 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0xbd80daeb +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0x457ab6a9 +sound/pci/trident/snd-trident snd_trident_alloc_voice 0xebd20f6a +sound/pci/trident/snd-trident snd_trident_free_voice 0x734e6e84 +sound/pci/trident/snd-trident snd_trident_start_voice 0x45c0c8d6 +sound/pci/trident/snd-trident snd_trident_stop_voice 0x22c3beb5 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0xa41192d3 +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0x6091ae20 +sound/pci/trident/snd-trident snd_trident_synth_free 0x5e5f5de4 +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0x60b7add8 +sound/synth/emux/snd-emux-synth snd_emux_free 0x2d2963c7 +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0xe3bdd919 +sound/synth/emux/snd-emux-synth snd_emux_new 0x6623a4ba +sound/synth/emux/snd-emux-synth snd_emux_register 0x73dd7902 +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0xfbeb81d4 +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0xbbf1eb12 +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0x4286ad28 +sound/synth/snd-util-mem __snd_util_mem_free 0xdd436c87 +sound/synth/snd-util-mem __snd_util_memblk_new 0x47f7338e +sound/synth/snd-util-mem snd_util_mem_alloc 0xab9e1ecd +sound/synth/snd-util-mem snd_util_mem_avail 0x878f2255 +sound/synth/snd-util-mem snd_util_mem_free 0x678cd602 +sound/synth/snd-util-mem snd_util_memhdr_free 0xb2daa994 +sound/synth/snd-util-mem snd_util_memhdr_new 0xb07f874e +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0x01fa2f3d +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux I_BDEV 0x0b69535a +vmlinux SELECT_DRIVE 0x9997a956 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0xe7b64cc7 +vmlinux __alloc_pages 0xa9c0525e +vmlinux __alloc_skb 0xd50de68f +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0x3d7f2c10 +vmlinux __bio_clone 0xf676c176 +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0x42799190 +vmlinux __bread 0x33f2a09a +vmlinux __breadahead 0xfb5276ff +vmlinux __break_lease 0x536ec88f +vmlinux __brelse 0x6c6d90a4 +vmlinux __check_region 0xf1d0cdab +vmlinux __copy_user 0x04d243f5 +vmlinux __cpufreq_driver_target 0xcafc431e +vmlinux __create_workqueue 0xc96d6cfc +vmlinux __d_path 0xe0da3afe +vmlinux __dev_get_by_index 0x1cb519c0 +vmlinux __dev_get_by_name 0x606677a2 +vmlinux __dev_remove_pack 0x237c1687 +vmlinux __divdi3 0xe8679178 +vmlinux __divsi3 0x211331fa +vmlinux __do_clear_user 0x3f6bc633 +vmlinux __down 0x36f22991 +vmlinux __down_interruptible 0xb4596450 +vmlinux __down_trylock 0x2f91407d +vmlinux __dst_free 0x23cbfb50 +vmlinux __elv_add_request 0xfc116d84 +vmlinux __find_get_block 0x32e9f0d2 +vmlinux __find_next_bit 0x2bc63ecb +vmlinux __find_next_zero_bit 0x664fc2e7 +vmlinux __free_pages 0x6d0aecc2 +vmlinux __generic_file_aio_read 0x591ebc21 +vmlinux __generic_unplug_device 0x4d7ae646 +vmlinux __get_free_pages 0x93fca811 +vmlinux __getblk 0xa6d69459 +vmlinux __ide_abort 0xa9d6c584 +vmlinux __ide_dma_bad_drive 0x9f8f034a +vmlinux __ide_dma_check 0xf72a8238 +vmlinux __ide_dma_end 0x39ded164 +vmlinux __ide_dma_good_drive 0xfeee9e01 +vmlinux __ide_dma_host_off 0x16c9afbf +vmlinux __ide_dma_host_on 0x7ffafcc9 +vmlinux __ide_dma_lostirq 0x32de1e8f +vmlinux __ide_dma_off 0xf50a5ea6 +vmlinux __ide_dma_off_quietly 0x928421e3 +vmlinux __ide_dma_on 0xdf00f741 +vmlinux __ide_dma_timeout 0x53de5540 +vmlinux __ide_end_request 0x83a80a82 +vmlinux __ide_error 0xb2ac6246 +vmlinux __ide_pci_register_driver 0x7ee82869 +vmlinux __inet_lookup_listener 0xbccfd26b +vmlinux __inet_twsk_hashdance 0x9b94c8ce +vmlinux __inet_twsk_kill 0x0b443df3 +vmlinux __init_timer_base 0x82f04785 +vmlinux __inode_dir_notify 0x3b7a901b +vmlinux __insert_inode_hash 0x8383b208 +vmlinux __invalidate_device 0xd6c1a4fd +vmlinux __ip_route_output_key 0x2a8738f9 +vmlinux __ip_select_ident 0x8d780de4 +vmlinux __kfifo_get 0x043b8483 +vmlinux __kfifo_put 0xaa527612 +vmlinux __kfree_skb 0x6da20b83 +vmlinux __kill_fasync 0x9e7310ea +vmlinux __kmalloc 0x5a34a45c +vmlinux __lock_buffer 0xdfc09ef1 +vmlinux __lock_page 0x5135b9d7 +vmlinux __mark_inode_dirty 0x91a9e996 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xe051a0ac +vmlinux __moddi3 0x903ab395 +vmlinux __modsi3 0x594e1317 +vmlinux __module_put_and_exit 0x47245487 +vmlinux __neigh_event_send 0xd49ae31f +vmlinux __neigh_for_each_release 0x3b3a643f +vmlinux __net_timestamp 0x97803f88 +vmlinux __netdev_watchdog_up 0x32aaeca4 +vmlinux __nla_put 0x0a4a299e +vmlinux __nla_reserve 0xfa5f5033 +vmlinux __page_cache_release 0xfbeb2ccb +vmlinux __pagevec_lru_add 0x80dc569f +vmlinux __pagevec_release 0x4172da52 +vmlinux __pci_register_driver 0x611551a5 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0xf9a55121 +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0x4b572456 +vmlinux __scm_destroy 0x345234ca +vmlinux __scm_send 0x2dda8364 +vmlinux __scsi_add_device 0x940c0acd +vmlinux __scsi_device_lookup 0x33ba13d6 +vmlinux __scsi_device_lookup_by_target 0x6eab9753 +vmlinux __scsi_iterate_devices 0xe8fd702b +vmlinux __scsi_print_command 0xfef96e23 +vmlinux __scsi_print_sense 0x69d38ed9 +vmlinux __secpath_destroy 0x52a5216f +vmlinux __serio_register_driver 0xec9f3055 +vmlinux __serio_register_port 0x8d0aeafc +vmlinux __serio_unregister_port_delayed 0x5404f739 +vmlinux __set_page_dirty_buffers 0x9d9ddf6d +vmlinux __set_page_dirty_nobuffers 0x4e30c676 +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x90c997a3 +vmlinux __skb_checksum_complete 0xbe515533 +vmlinux __skb_linearize 0x08b74974 +vmlinux __sn_mmiowb 0x2ce1e27f +vmlinux __strlen_user 0xf1394a2a +vmlinux __strncpy_from_user 0x9a78a84c +vmlinux __strnlen_user 0x00eef49e +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x8ddb1a2b +vmlinux __tasklet_schedule 0xf9c58281 +vmlinux __tcf_em_tree_match 0x42517697 +vmlinux __udivdi3 0x32093cc7 +vmlinux __udivsi3 0xfb7d9c45 +vmlinux __umoddi3 0x4a541e2a +vmlinux __umodsi3 0x8320bea8 +vmlinux __up 0xc2b220b3 +vmlinux __user_walk 0x51e345df +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0x8f07d8ca +vmlinux __wait_on_bit_lock 0x9501d078 +vmlinux __wait_on_buffer 0xd2ef304b +vmlinux __wake_up 0xb6c70a7d +vmlinux __wake_up_bit 0x44c214d1 +vmlinux __wake_up_sync 0xffaf7bbb +vmlinux __xfrm_policy_check 0xdacc1872 +vmlinux __xfrm_policy_destroy 0x0428c2cf +vmlinux __xfrm_route_forward 0x3cbdbc5d +vmlinux __xfrm_state_destroy 0x71144d0e +vmlinux _atomic_dec_and_lock 0xb964d85d +vmlinux _ctype 0x8d3894f2 +vmlinux acpi_acquire_global_lock 0xc9f34c1d +vmlinux acpi_bus_add 0x0966bc8f +vmlinux acpi_bus_generate_event 0xa51ba641 +vmlinux acpi_bus_get_device 0xdc07d3d6 +vmlinux acpi_bus_get_power 0x7389c9a8 +vmlinux acpi_bus_get_status 0x1057c4ce +vmlinux acpi_bus_receive_event 0x272a109a +vmlinux acpi_bus_register_driver 0xb6cbda1e +vmlinux acpi_bus_set_power 0xcb733bf2 +vmlinux acpi_bus_start 0x39db8f1b +vmlinux acpi_bus_unregister_driver 0xcfae25d4 +vmlinux acpi_clear_event 0x17be68ca +vmlinux acpi_dbg_layer 0xa40ff01b +vmlinux acpi_dbg_level 0xddad7952 +vmlinux acpi_disable_event 0x2177bd71 +vmlinux acpi_ec_read 0x1cafbb1c +vmlinux acpi_ec_write 0xfe22467a +vmlinux acpi_enable_event 0x44902cff +vmlinux acpi_enable_gpe 0xa8d5b19f +vmlinux acpi_enter_sleep_state 0x0cdccbc8 +vmlinux acpi_enter_sleep_state_s4bios 0x2f97cc23 +vmlinux acpi_evaluate_integer 0x64f0e581 +vmlinux acpi_evaluate_object 0xee7b5bca +vmlinux acpi_evaluate_reference 0x2e34c276 +vmlinux acpi_extract_package 0x0ba654d0 +vmlinux acpi_fadt 0xfb174376 +vmlinux acpi_fadt_is_v1 0x3ec88a19 +vmlinux acpi_get_child 0x2011990a +vmlinux acpi_get_current_resources 0x2ca63452 +vmlinux acpi_get_devices 0x74bdf6d5 +vmlinux acpi_get_firmware_table 0x89d49aa1 +vmlinux acpi_get_handle 0x9975dc22 +vmlinux acpi_get_name 0xa9bc32c1 +vmlinux acpi_get_next_object 0x75871f5e +vmlinux acpi_get_object_info 0xaad70aea +vmlinux acpi_get_parent 0x7d12d76d +vmlinux acpi_get_pci_id 0x5e523a9e +vmlinux acpi_get_pci_rootbridge_handle 0x1f8ec1b3 +vmlinux acpi_get_physical_device 0xf119c651 +vmlinux acpi_get_pxm 0x0a372247 +vmlinux acpi_get_register 0xd62b16af +vmlinux acpi_get_sleep_type_data 0x130afd75 +vmlinux acpi_get_table 0x007547e5 +vmlinux acpi_get_type 0x42578e80 +vmlinux acpi_install_address_space_handler 0x79fac840 +vmlinux acpi_install_fixed_event_handler 0x3b029f48 +vmlinux acpi_install_gpe_block 0x2091d63e +vmlinux acpi_install_gpe_handler 0x0ec136bc +vmlinux acpi_install_notify_handler 0x170ddf79 +vmlinux acpi_os_create_semaphore 0xb2faaf74 +vmlinux acpi_os_delete_semaphore 0xeaedfad9 +vmlinux acpi_os_free 0x43b9bbb4 +vmlinux acpi_os_printf 0x667cecc9 +vmlinux acpi_os_queue_for_execution 0xba5c8e12 +vmlinux acpi_os_read_pci_configuration 0xb21fd99e +vmlinux acpi_os_read_port 0x68092d39 +vmlinux acpi_os_signal 0xa1ed3038 +vmlinux acpi_os_signal_semaphore 0x499d825d +vmlinux acpi_os_sleep 0x540db81f +vmlinux acpi_os_stall 0x4fc25521 +vmlinux acpi_os_wait_events_complete 0xc9ab2eef +vmlinux acpi_os_wait_semaphore 0x69efe8d8 +vmlinux acpi_os_write_port 0x18339ef0 +vmlinux acpi_pci_irq_enable 0xa0319f41 +vmlinux acpi_pci_register_driver 0xd1472061 +vmlinux acpi_pci_unregister_driver 0x43385ad9 +vmlinux acpi_register_gsi 0x24fb243b +vmlinux acpi_register_ioapic 0xd8dc4cbe +vmlinux acpi_release_global_lock 0xa805ecfc +vmlinux acpi_remove_address_space_handler 0x76cee5d4 +vmlinux acpi_remove_fixed_event_handler 0x4055a920 +vmlinux acpi_remove_gpe_block 0xf79ca3bb +vmlinux acpi_remove_gpe_handler 0x24d68408 +vmlinux acpi_remove_notify_handler 0x1c58427f +vmlinux acpi_resource_to_address64 0xe92b3071 +vmlinux acpi_root_dir 0x8f18b4ff +vmlinux acpi_set_current_resources 0x0be7e3d7 +vmlinux acpi_set_gpe_type 0xbde7c789 +vmlinux acpi_set_register 0xcb67d3ff +vmlinux acpi_specific_hotkey_enabled 0x46621493 +vmlinux acpi_unregister_gsi 0x7b5452b8 +vmlinux acpi_unregister_ioapic 0xbf3193ec +vmlinux acpi_ut_debug_print 0x9a71ebee +vmlinux acpi_ut_debug_print_raw 0x4381d7f5 +vmlinux acpi_ut_exit 0x0ec2a92b +vmlinux acpi_ut_status_exit 0x57c1e9c2 +vmlinux acpi_ut_trace 0x00f12cd5 +vmlinux acpi_ut_value_exit 0xe4e9cc50 +vmlinux acpi_walk_namespace 0x6f1fe2a2 +vmlinux acpi_walk_resources 0x4532cb1a +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0xeaec0664 +vmlinux add_disk_randomness 0x81dfddeb +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0x89288903 +vmlinux add_wait_queue 0xfd8dba4c +vmlinux add_wait_queue_exclusive 0x3e6caebd +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0xfbdf7a97 +vmlinux aio_put_req 0xdc519f5e +vmlinux alloc_buffer_head 0x991a1b30 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0xc68a17aa +vmlinux alloc_disk_node 0x3c3c88f7 +vmlinux alloc_etherdev 0x3d6ae39c +vmlinux alloc_fcdev 0x79252d8a +vmlinux alloc_fddidev 0x34995dbe +vmlinux alloc_netdev 0x0aedc335 +vmlinux alloc_page_buffers 0xf8c0a037 +vmlinux alloc_pages_current 0x0994c24a +vmlinux alloc_trdev 0x9768aa14 +vmlinux alloc_tty_driver 0x5e5ac466 +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0xc0aed071 +vmlinux anon_transport_class_unregister 0x213b628c +vmlinux arch_acpi_processor_init_pdc 0xaf005cfe +vmlinux arp_broken_ops 0x5d68d20c +vmlinux arp_create 0xe8bf5cab +vmlinux arp_find 0x10b70204 +vmlinux arp_rcv 0x7aca96a6 +vmlinux arp_send 0x9955afa3 +vmlinux arp_tbl 0xbd31786b +vmlinux arp_xmit 0xfa1ced27 +vmlinux attribute_container_add_attrs 0x27847670 +vmlinux attribute_container_add_class_device 0x21644885 +vmlinux attribute_container_add_class_device_adapter 0x6f283c20 +vmlinux attribute_container_class_device_del 0x67caa427 +vmlinux attribute_container_classdev_to_container 0x3b5bd20d +vmlinux attribute_container_device_trigger 0xc9d6a2a2 +vmlinux attribute_container_find_class_device 0x3c7773ad +vmlinux attribute_container_register 0x785aeffa +vmlinux attribute_container_remove_attrs 0x198b078a +vmlinux attribute_container_remove_device 0x895bfe5c +vmlinux attribute_container_trigger 0x31f7b5df +vmlinux attribute_container_unregister 0x853f1f40 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x4f4fe430 +vmlinux bd_claim 0x0d917db6 +vmlinux bd_release 0x3d6fd348 +vmlinux bd_set_size 0x797868e8 +vmlinux bdev_read_only 0xf09dcf5e +vmlinux bdevname 0x9cd1fcf7 +vmlinux bdget 0xf64c3419 +vmlinux bdput 0x3cc77eed +vmlinux bfifo_qdisc_ops 0x38882ad1 +vmlinux bio_add_page 0x9ff940ea +vmlinux bio_alloc 0x1b212c5e +vmlinux bio_alloc_bioset 0xa4fc3388 +vmlinux bio_clone 0x5fb2c560 +vmlinux bio_copy_user 0x45830339 +vmlinux bio_endio 0xcd6c862a +vmlinux bio_free 0xe48089e1 +vmlinux bio_get_nr_vecs 0x5ce362a4 +vmlinux bio_hw_segments 0x8dce742c +vmlinux bio_init 0x0ed0e8dd +vmlinux bio_map_kern 0x868e54b2 +vmlinux bio_map_user 0xde5f8b44 +vmlinux bio_pair_release 0x6e577ca4 +vmlinux bio_phys_segments 0xd288e011 +vmlinux bio_put 0x3f1d0cc0 +vmlinux bio_split 0xa346b2fc +vmlinux bio_split_pool 0x27b47413 +vmlinux bio_uncopy_user 0x38723d9c +vmlinux bio_unmap_user 0xf735b27e +vmlinux bioset_create 0x1c875572 +vmlinux bioset_free 0x661e6ec8 +vmlinux bit_waitqueue 0xa9f1ed23 +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xefe7520f +vmlinux blk_alloc_queue 0x485dc8cc +vmlinux blk_alloc_queue_node 0x54c1f23e +vmlinux blk_cleanup_queue 0xf7c33ce9 +vmlinux blk_complete_barrier_rq 0x690221fb +vmlinux blk_complete_barrier_rq_locked 0x9d4f4ea5 +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x5c4fe4cb +vmlinux blk_end_sync_rq 0x040a476a +vmlinux blk_execute_rq 0xbfe61bc0 +vmlinux blk_get_backing_dev_info 0x1cb945e5 +vmlinux blk_get_queue 0xfbcc8424 +vmlinux blk_get_request 0x3e6fbe5d +vmlinux blk_init_queue 0xf58ec870 +vmlinux blk_init_queue_node 0xe8d80c12 +vmlinux blk_insert_request 0x42415235 +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0x0931966d +vmlinux blk_put_request 0xaab3d4ee +vmlinux blk_queue_activity_fn 0xb0a330b6 +vmlinux blk_queue_bounce 0x378fb853 +vmlinux blk_queue_bounce_limit 0x92f27d13 +vmlinux blk_queue_dma_alignment 0xe16bb289 +vmlinux blk_queue_end_tag 0x838865a0 +vmlinux blk_queue_find_tag 0x7012d249 +vmlinux blk_queue_free_tags 0xf8ee9c1f +vmlinux blk_queue_hardsect_size 0x383afcf6 +vmlinux blk_queue_init_tags 0x41b646e9 +vmlinux blk_queue_invalidate_tags 0x24b4af72 +vmlinux blk_queue_issue_flush_fn 0xb96a1110 +vmlinux blk_queue_make_request 0xeafc2eb4 +vmlinux blk_queue_max_hw_segments 0x93b0addb +vmlinux blk_queue_max_phys_segments 0x1def8dcb +vmlinux blk_queue_max_sectors 0x8e4e4a68 +vmlinux blk_queue_max_segment_size 0xdfb7864f +vmlinux blk_queue_merge_bvec 0xcfdd2236 +vmlinux blk_queue_ordered 0xc86c4d71 +vmlinux blk_queue_prep_rq 0xbfec4e87 +vmlinux blk_queue_resize_tags 0x71d5454b +vmlinux blk_queue_segment_boundary 0x1a9dfb50 +vmlinux blk_queue_stack_limits 0x8f42789a +vmlinux blk_queue_start_tag 0x786a1b5f +vmlinux blk_register_region 0x99e4e852 +vmlinux blk_remove_plug 0x1e38d932 +vmlinux blk_requeue_request 0xa7f37845 +vmlinux blk_rq_bio_prep 0xed28348b +vmlinux blk_rq_map_kern 0x9fcfdcb6 +vmlinux blk_rq_map_sg 0xaae3b300 +vmlinux blk_rq_map_user 0x43d6104f +vmlinux blk_rq_map_user_iov 0xf74f9166 +vmlinux blk_rq_unmap_user 0xcbe3b0a4 +vmlinux blk_run_queue 0x55c0f655 +vmlinux blk_start_queue 0xc0e92f79 +vmlinux blk_stop_queue 0xf98c8a42 +vmlinux blk_sync_queue 0xdb3834bf +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0xaa2e26bc +vmlinux blkdev_ioctl 0xcdcdb346 +vmlinux blkdev_issue_flush 0x37b5dcc7 +vmlinux blkdev_put 0x4037f2a5 +vmlinux block_all_signals 0x4edd72f7 +vmlinux block_commit_write 0x2b921cdd +vmlinux block_invalidatepage 0xead76fa7 +vmlinux block_prepare_write 0xf716674d +vmlinux block_read_full_page 0xf9f100bf +vmlinux block_sync_page 0xd8b3566e +vmlinux block_truncate_page 0x7206ff58 +vmlinux block_write_full_page 0x60e7a4d2 +vmlinux bmap 0x80fcb9a4 +vmlinux boot_option_idle_override 0xef9aedfc +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0xc1df1242 +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bte_copy 0x26feac2d +vmlinux bte_unaligned_copy 0x3a265e0c +vmlinux bus_add_device 0xf99167c3 +vmlinux bus_create_file 0x1460a076 +vmlinux bus_find_device 0x01ecfde8 +vmlinux bus_for_each_dev 0x50f83f74 +vmlinux bus_for_each_drv 0x649b7e1f +vmlinux bus_register 0x64d11e54 +vmlinux bus_remove_device 0x1d7b3cc9 +vmlinux bus_remove_file 0xbb226f40 +vmlinux bus_rescan_devices 0xad408cd0 +vmlinux bus_unregister 0x5a4099ef +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x43c852aa +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x303d67bf +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x3b747910 +vmlinux cdev_alloc 0x6dda588d +vmlinux cdev_del 0xabe5f215 +vmlinux cdev_init 0x16c812ef +vmlinux cfb_copyarea 0x5a3048f2 +vmlinux cfb_fillrect 0x018faa05 +vmlinux cfb_imageblit 0xcada7fcc +vmlinux check_disk_change 0x5ebaf5a6 +vmlinux class_create 0x752c05c0 +vmlinux class_create_file 0xb9ab2eb8 +vmlinux class_destroy 0xedad00ee +vmlinux class_device_add 0x28fbae5c +vmlinux class_device_create 0x913a54ac +vmlinux class_device_create_bin_file 0x886dcadd +vmlinux class_device_create_file 0x1e4d4683 +vmlinux class_device_del 0xddb4d1ba +vmlinux class_device_destroy 0x322cf1c2 +vmlinux class_device_get 0x0a639948 +vmlinux class_device_initialize 0x9f5e5f28 +vmlinux class_device_put 0x3d8dfa7d +vmlinux class_device_register 0x5892ea53 +vmlinux class_device_remove_bin_file 0x38310ed8 +vmlinux class_device_remove_file 0x33364e68 +vmlinux class_device_unregister 0x9f73e73c +vmlinux class_get 0x626e7a2c +vmlinux class_interface_register 0x2ca36188 +vmlinux class_interface_unregister 0xc65b326a +vmlinux class_put 0xb79545d6 +vmlinux class_register 0xb10560ee +vmlinux class_remove_file 0x7c78fa26 +vmlinux class_unregister 0x8b7135b7 +vmlinux clear_inode 0x6dc3408f +vmlinux clear_page 0x3d9ee9f0 +vmlinux clear_page_dirty_for_io 0x1712b504 +vmlinux close_bdev_excl 0x4d067083 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0xa218bf61 +vmlinux complete_all 0x48f9f12d +vmlinux complete_and_exit 0x8e9eceaa +vmlinux compute_creds 0x40df0227 +vmlinux con_copy_unimap 0x14cca484 +vmlinux con_set_default_unimap 0xd14256c4 +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0xa3a4ed03 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0x16585a3e +vmlinux console_stop 0xe8f36678 +vmlinux cont_prepare_write 0x2048bd4d +vmlinux copy_fs_struct 0x6b4111e0 +vmlinux copy_io_context 0xe6a0f902 +vmlinux copy_strings_kernel 0x1b91f1c9 +vmlinux cpu_idle_wait 0xb53ae573 +vmlinux cpu_present_map 0x1a3f7887 +vmlinux cpu_sysdev_class 0x0f1a2ab8 +vmlinux cpu_to_node_map 0x67aa1573 +vmlinux cpufreq_cpu_get 0xcd94dae7 +vmlinux cpufreq_cpu_put 0xb5d99646 +vmlinux cpufreq_driver_target 0xeabbcde9 +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0x5ba382b3 +vmlinux cpufreq_gov_performance 0x93696126 +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0x68c0b459 +vmlinux cpufreq_parse_governor 0xbbf54338 +vmlinux cpufreq_register_driver 0xeb74d371 +vmlinux cpufreq_register_governor 0x7223773b +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0xca4e59d5 +vmlinux cpufreq_unregister_driver 0x86609c9a +vmlinux cpufreq_unregister_governor 0xe0f49555 +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0x3f8064ce +vmlinux crc32_le 0x6dfc7ff3 +vmlinux create_empty_buffers 0x89949e74 +vmlinux create_proc_entry 0xf3878722 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x8ae1d969 +vmlinux crypto_alloc_tfm 0xd8fa6463 +vmlinux crypto_free_tfm 0xefeadc2d +vmlinux crypto_hmac 0xed838cd7 +vmlinux crypto_hmac_final 0x99478f94 +vmlinux crypto_hmac_init 0x7789e611 +vmlinux crypto_hmac_update 0xc433f62e +vmlinux crypto_register_alg 0xa8da92e8 +vmlinux crypto_unregister_alg 0x462ebb1c +vmlinux csum_partial 0x94095c16 +vmlinux csum_partial_copy_fromiovecend 0x883c8eca +vmlinux csum_partial_copy_nocheck 0xa2963be1 +vmlinux csum_tcpudp_magic 0x40d7f766 +vmlinux current_fs_time 0x98aa8a1d +vmlinux current_io_context 0xca796225 +vmlinux current_kernel_time 0x74cc238d +vmlinux cx_device_register 0x0fcdf35a +vmlinux cx_device_unregister 0x9f2b4f5d +vmlinux cx_driver_register 0xc90ed0b5 +vmlinux cx_driver_unregister 0x8223eff3 +vmlinux d_alloc 0x75950bd3 +vmlinux d_alloc_anon 0x3526adc4 +vmlinux d_alloc_name 0xcd630bd3 +vmlinux d_alloc_root 0x03f28be2 +vmlinux d_delete 0x5e8e51b4 +vmlinux d_find_alias 0x57d3c725 +vmlinux d_genocide 0xac829a7a +vmlinux d_instantiate 0x49986e51 +vmlinux d_instantiate_unique 0x28f772b2 +vmlinux d_invalidate 0xb744a214 +vmlinux d_lookup 0x5af5427a +vmlinux d_move 0x518f4a6e +vmlinux d_path 0x2d5a68fa +vmlinux d_prune_aliases 0xe68bbee4 +vmlinux d_rehash 0xc15e767e +vmlinux d_splice_alias 0xa0b1c718 +vmlinux d_validate 0x61c0fcb8 +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0x228cd969 +vmlinux dcache_dir_close 0x0ecabea5 +vmlinux dcache_dir_lseek 0xca17a512 +vmlinux dcache_dir_open 0xe9971011 +vmlinux dcache_lock 0x412ddc0c +vmlinux dcache_readdir 0xe4054e83 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0xacb03edc +vmlinux default_backing_dev_info 0x7a09b96f +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0xa7efd44e +vmlinux default_llseek 0x10059a7e +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x1d156af9 +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0x83cc331f +vmlinux del_timer 0xda264347 +vmlinux dentry_open 0x318d0793 +vmlinux dentry_unhash 0x59df061f +vmlinux dequeue_signal 0x838b8ac1 +vmlinux destroy_8023_client 0x304de22e +vmlinux destroy_EII_client 0x51baf9ee +vmlinux destroy_workqueue 0x407064fb +vmlinux dev_add_pack 0x0dd70913 +vmlinux dev_alloc_name 0xf8b6d450 +vmlinux dev_base 0x4e7b46fc +vmlinux dev_base_lock 0x144ed3a1 +vmlinux dev_change_flags 0x6963a786 +vmlinux dev_close 0xb74b9c16 +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0x9cdc5d7d +vmlinux dev_get_by_index 0x8f10400b +vmlinux dev_get_by_name 0x2e905d3a +vmlinux dev_get_flags 0x598e802d +vmlinux dev_getbyhwaddr 0x7d5084ce +vmlinux dev_getfirstbyhwtype 0x9a8477fb +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0x731311b5 +vmlinux dev_mc_delete 0x37f01ffe +vmlinux dev_mc_upload 0x141b0ea6 +vmlinux dev_open 0x373f648c +vmlinux dev_queue_xmit 0xb6c9a768 +vmlinux dev_remove_pack 0xfa00a4fb +vmlinux dev_set_allmulti 0xfd52be19 +vmlinux dev_set_mac_address 0x2dfd4ebb +vmlinux dev_set_mtu 0x265cb975 +vmlinux dev_set_promiscuity 0x6eb719c9 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0x222a3f4f +vmlinux device_attach 0x4c92d2da +vmlinux device_bind_driver 0x2112f3da +vmlinux device_create_file 0xd0ff4472 +vmlinux device_del 0x3354a4a1 +vmlinux device_for_each_child 0x9bc72509 +vmlinux device_initialize 0x4f5ddffc +vmlinux device_pm_set_parent 0x77eb702f +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0x8514606a +vmlinux device_release_driver 0x17769252 +vmlinux device_remove_file 0x0eedbd36 +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0xa2dd9914 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0x3354f720 +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_get_cache_alignment 0x47297f48 +vmlinux dma_get_required_mask 0x830304c5 +vmlinux dma_pool_alloc 0xe8b61451 +vmlinux dma_pool_create 0xc9eee33d +vmlinux dma_pool_destroy 0x6e5845d5 +vmlinux dma_pool_free 0xf84045ea +vmlinux dnotify_parent 0xc0bf745a +vmlinux do_SAK 0x6b3c7bc8 +vmlinux do_add_mount 0xcdda2279 +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0xcd1cffad +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0x28a872bc +vmlinux do_mmap_pgoff 0xaa35c3cd +vmlinux do_munmap 0x36528e8f +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0xb33f1114 +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0x9c305378 +vmlinux do_sync_read 0xaa673591 +vmlinux do_sync_write 0x6700c670 +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0x92d470c6 +vmlinux dput 0xc2a7b132 +vmlinux dq_data_lock 0xee90884e +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x5353535d +vmlinux dquot_alloc_inode 0xf7bd1cee +vmlinux dquot_alloc_space 0x97f6f87c +vmlinux dquot_commit 0xb1652b49 +vmlinux dquot_commit_info 0xdb130195 +vmlinux dquot_drop 0xdccee08e +vmlinux dquot_free_inode 0xc4b7bc4d +vmlinux dquot_free_space 0x4b35e642 +vmlinux dquot_initialize 0x7614a947 +vmlinux dquot_mark_dquot_dirty 0x3005dd57 +vmlinux dquot_release 0x2d4e3a51 +vmlinux dquot_transfer 0x343e9bde +vmlinux drive_is_ready 0xf1c8807c +vmlinux driver_attach 0x97a985dc +vmlinux driver_create_file 0xe6e7857f +vmlinux driver_find 0x27576fed +vmlinux driver_find_device 0xda0fc6cc +vmlinux driver_for_each_device 0x61ea4ef2 +vmlinux driver_register 0xe6037c61 +vmlinux driver_remove_file 0xb895968c +vmlinux driver_unregister 0x63496948 +vmlinux drop_super 0x43de4027 +vmlinux dst_alloc 0x299b0e1b +vmlinux dst_destroy 0x2492ef24 +vmlinux dump_stack 0x6b2dc060 +vmlinux ec_read 0xfc4152fc +vmlinux ec_write 0xc708f1fe +vmlinux efi 0x5116b2ee +vmlinux efi_mem_attributes 0x5ddb3d56 +vmlinux eighty_ninty_three 0xd5d4620f +vmlinux elevator_exit 0x78d9a618 +vmlinux elevator_init 0x6f791d14 +vmlinux elv_add_request 0x0847cfa4 +vmlinux elv_completed_request 0x494298a2 +vmlinux elv_dequeue_request 0xf6b2e7a8 +vmlinux elv_dispatch_sort 0x03afadfc +vmlinux elv_next_request 0x4c0252ce +vmlinux elv_queue_empty 0xb37c18c3 +vmlinux elv_register 0x59aed81e +vmlinux elv_requeue_request 0xead5e0ba +vmlinux elv_rq_merge_ok 0x48842ae3 +vmlinux elv_try_merge 0x65742cb5 +vmlinux elv_unregister 0xb1a74484 +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_irq 0xfcec0987 +vmlinux end_buffer_async_write 0x641e2015 +vmlinux end_buffer_read_sync 0x6fd4c8db +vmlinux end_buffer_write_sync 0x62cec4f8 +vmlinux end_page_writeback 0x556c946f +vmlinux end_request 0x82c76107 +vmlinux end_that_request_chunk 0x4d54eba5 +vmlinux end_that_request_first 0x094ecf08 +vmlinux end_that_request_last 0xfaf36153 +vmlinux eth_type_trans 0xd80a65ec +vmlinux ether_setup 0x81a7ab2d +vmlinux ethtool_op_get_link 0x08596235 +vmlinux ethtool_op_get_perm_addr 0x0f36f9cf +vmlinux ethtool_op_get_sg 0x181cac7a +vmlinux ethtool_op_get_tso 0xd225dd58 +vmlinux ethtool_op_get_tx_csum 0x067fbbeb +vmlinux ethtool_op_get_ufo 0x633f7e38 +vmlinux ethtool_op_set_sg 0x2aad6429 +vmlinux ethtool_op_set_tso 0x3da258a6 +vmlinux ethtool_op_set_tx_csum 0x779c9309 +vmlinux ethtool_op_set_tx_hw_csum 0xed48c4ed +vmlinux ethtool_op_set_ufo 0x789bf002 +vmlinux exit_fs 0x8b5a290e +vmlinux f_setown 0x6fa7862f +vmlinux fasync_helper 0xc7e4ef49 +vmlinux fb_add_videomode 0x4b1f60ae +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x5e1c4f0c +vmlinux fb_con_duit 0x8d5a88d9 +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xe42d2279 +vmlinux fb_destroy_modedb 0xc07b0863 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0x0397edd5 +vmlinux fb_find_best_display 0x3711e07e +vmlinux fb_find_best_mode 0x8306185a +vmlinux fb_find_mode 0xbd158481 +vmlinux fb_find_mode_cvt 0xf93fd09c +vmlinux fb_find_nearest_mode 0x7538617b +vmlinux fb_firmware_edid 0xb07502d9 +vmlinux fb_get_buffer_offset 0xab34bfe8 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0xf61e96c8 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x2ecf82c7 +vmlinux fb_mode_is_equal 0xb9d7ba2b +vmlinux fb_new_modelist 0x74246721 +vmlinux fb_pad_aligned_buffer 0x61ea189b +vmlinux fb_pad_unaligned_buffer 0x42f1b900 +vmlinux fb_pan_display 0x0e2d76df +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0xadf02661 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0xb376dd7b +vmlinux fb_set_suspend 0x75bb02d3 +vmlinux fb_set_var 0x34db482d +vmlinux fb_show_logo 0xe12b81a9 +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x3d04f2cd +vmlinux fb_var_to_videomode 0x3369b3ff +vmlinux fb_videomode_to_modelist 0x9f84cecb +vmlinux fb_videomode_to_var 0xe12a6201 +vmlinux fd_install 0x3b9d56b7 +vmlinux fddi_type_trans 0x5b951631 +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x1b9afcfd +vmlinux file_fsync 0x340dd8ed +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0xf7548e04 +vmlinux filemap_fdatawait 0x0cbb1b34 +vmlinux filemap_fdatawrite 0x6767ee04 +vmlinux filemap_flush 0x12dba228 +vmlinux filemap_nopage 0x4526d639 +vmlinux filemap_populate 0xf2b165c8 +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0xf718dac8 +vmlinux filp_open 0xd92ec8f1 +vmlinux find_bus 0x0aee0e63 +vmlinux find_get_page 0x4541b2af +vmlinux find_inode_number 0x4924638f +vmlinux find_lock_page 0x784d73dd +vmlinux find_or_create_page 0xf1c6bef9 +vmlinux find_task_by_pid_type 0x9d261c3b +vmlinux find_trylock_page 0x6dba856e +vmlinux find_vma 0xad33e2da +vmlinux finish_wait 0x51493d94 +vmlinux firmware_register 0x2b433eba +vmlinux firmware_unregister 0x627f8017 +vmlinux flock_lock_file_wait 0x4c760f2e +vmlinux flow_cache_genid 0xa33a289f +vmlinux flow_cache_lookup 0x57726d68 +vmlinux flush_old_exec 0x39c69ea8 +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x4d2a844d +vmlinux flush_tlb_range 0x2325c367 +vmlinux flush_workqueue 0x84e1bc49 +vmlinux follow_down 0x30ff5d0b +vmlinux follow_up 0xf23863c8 +vmlinux force_sig 0xe3620abc +vmlinux fpswa_interface 0xa2755c7b +vmlinux fput 0x89b1e1de +vmlinux framebuffer_alloc 0x445e5ecc +vmlinux framebuffer_release 0x75b0aaa4 +vmlinux free_buffer_head 0x6d9cc97a +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0xbc443f24 +vmlinux free_pages 0x4302d0eb +vmlinux free_task 0x8c4778a3 +vmlinux freeze_bdev 0x4a1c7259 +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0x478a3ec1 +vmlinux gen_kill_estimator 0xa4a74611 +vmlinux gen_new_estimator 0x286fcb70 +vmlinux gen_pool_alloc 0x12fcb397 +vmlinux gen_pool_create 0x0422f300 +vmlinux gen_pool_free 0x45f3004f +vmlinux gen_replace_estimator 0xa58ebb71 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic_block_bmap 0x1c2fcc4c +vmlinux generic_commit_write 0x1f8091eb +vmlinux generic_cont_expand 0xb4f0d616 +vmlinux generic_delete_inode 0xe04576d2 +vmlinux generic_drop_inode 0x73412bfd +vmlinux generic_file_aio_read 0x447d6c14 +vmlinux generic_file_aio_write 0x28455bce +vmlinux generic_file_aio_write_nolock 0x44377348 +vmlinux generic_file_buffered_write 0xf8edf766 +vmlinux generic_file_direct_write 0x532fa428 +vmlinux generic_file_llseek 0xbea3a39d +vmlinux generic_file_mmap 0x3a2b1ab9 +vmlinux generic_file_open 0x3675529c +vmlinux generic_file_read 0x1da62ab7 +vmlinux generic_file_readonly_mmap 0x1b94d2a8 +vmlinux generic_file_readv 0xf0a8fd0f +vmlinux generic_file_sendfile 0xd7848775 +vmlinux generic_file_write 0xee094bbc +vmlinux generic_file_write_nolock 0xe26c8703 +vmlinux generic_file_writev 0xbd1b8ca0 +vmlinux generic_fillattr 0x004c9487 +vmlinux generic_getxattr 0xa5659e1b +vmlinux generic_ide_ioctl 0x0082c90e +vmlinux generic_listxattr 0xd42997ca +vmlinux generic_make_request 0x41ef0311 +vmlinux generic_osync_inode 0x5e2776fe +vmlinux generic_permission 0xade1d6ea +vmlinux generic_read_dir 0x3f8ea49a +vmlinux generic_readlink 0x6b1e3596 +vmlinux generic_removexattr 0x3e6760fe +vmlinux generic_ro_fops 0xfa63b38c +vmlinux generic_setxattr 0xf2732bdb +vmlinux generic_shutdown_super 0x628cd4cb +vmlinux generic_unplug_device 0x7b7eba8b +vmlinux generic_write_checks 0xf2b05f05 +vmlinux genl_register_family 0xb6204883 +vmlinux genl_register_ops 0xbf50ad46 +vmlinux genl_sock 0xda264a0f +vmlinux genl_unregister_family 0x0d585667 +vmlinux genl_unregister_ops 0x58739e8b +vmlinux get_bus 0x5e01ac30 +vmlinux get_cpu_sysdev 0xb8b4d031 +vmlinux get_dcookie 0xcd72cdf1 +vmlinux get_device 0xeb51ed07 +vmlinux get_disk 0xde60f540 +vmlinux get_driver 0x85e81300 +vmlinux get_empty_filp 0x1c380ecf +vmlinux get_fs_type 0x946cc2f7 +vmlinux get_io_context 0xa5e57576 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0xcf76c59c +vmlinux get_sb_nodev 0xfc985e9f +vmlinux get_sb_pseudo 0xde65cb78 +vmlinux get_sb_single 0x0d6195ea +vmlinux get_super 0xd7ccb2d7 +vmlinux get_task_mm 0x147977c5 +vmlinux get_unmapped_area 0x64eabfad +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0xae10b436 +vmlinux get_write_access 0xe6205cd9 +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x55f39b4f +vmlinux gnet_stats_copy_app 0x669cd04f +vmlinux gnet_stats_copy_basic 0x05057bcc +vmlinux gnet_stats_copy_queue 0x3ad066b7 +vmlinux gnet_stats_copy_rate_est 0x5a7efb22 +vmlinux gnet_stats_finish_copy 0x747244ff +vmlinux gnet_stats_start_copy 0xa12153d3 +vmlinux gnet_stats_start_copy_compat 0xcb68333e +vmlinux grab_cache_page_nowait 0xce5c4284 +vmlinux groups_alloc 0x705f28cd +vmlinux groups_free 0x436a7f98 +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0x505488c3 +vmlinux have_submounts 0x70d5a077 +vmlinux high_memory 0x8a7d1c31 +vmlinux hp_acpi_csr_space 0x05b8f2bc +vmlinux hwmon_device_register 0x5ea0aa97 +vmlinux hwmon_device_unregister 0x6d2f9786 +vmlinux hwsw_alloc_coherent 0x1856f0f8 +vmlinux hwsw_dma_mapping_error 0x30f56b6f +vmlinux hwsw_dma_supported 0x330bb9b1 +vmlinux hwsw_free_coherent 0x4d3b576c +vmlinux hwsw_map_sg 0x9d5b63e3 +vmlinux hwsw_map_single 0xae37ddee +vmlinux hwsw_unmap_sg 0xcb18283e +vmlinux hwsw_unmap_single 0x5bc95b97 +vmlinux ia64_acpiid_to_sapicid 0x3ac96696 +vmlinux ia64_iobase 0x08e6b007 +vmlinux ia64_ivt 0x3cdde3b7 +vmlinux ia64_load_scratch_fpregs 0xc9266a5a +vmlinux ia64_max_iommu_merge_mask 0xb1f32d3d +vmlinux ia64_mv 0xb546cea2 +vmlinux ia64_pal_call_phys_stacked 0xfbbca7dc +vmlinux ia64_pal_call_phys_static 0x0e402370 +vmlinux ia64_pal_call_stacked 0xafc13e64 +vmlinux ia64_pal_call_static 0xca484b2c +vmlinux ia64_pfn_valid 0x3717dbf9 +vmlinux ia64_reg_MCA_extension 0x5a2ab9c6 +vmlinux ia64_sal_oemcall 0x5c7a8717 +vmlinux ia64_sal_oemcall_nolock 0xd64d24a3 +vmlinux ia64_sal_oemcall_reentrant 0xd67440e7 +vmlinux ia64_save_scratch_fpregs 0x83998b0b +vmlinux ia64_unreg_MCA_extension 0x79a2fd35 +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0xac809f43 +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_acpi_exec_tfs 0xbc2dc387 +vmlinux ide_acpi_get_timing 0xe1a4b21f +vmlinux ide_acpi_init 0xfd709cd5 +vmlinux ide_acpi_push_timing 0x75efb395 +vmlinux ide_add_setting 0xfcfae8a9 +vmlinux ide_build_dmatable 0xb911e6e8 +vmlinux ide_build_sglist 0x7ffc08da +vmlinux ide_bus_type 0xc7964b34 +vmlinux ide_config_drive_speed 0x9cc583ba +vmlinux ide_destroy_dmatable 0xdb53a3cd +vmlinux ide_dma_enable 0x8d61cb47 +vmlinux ide_dma_intr 0x760e3088 +vmlinux ide_dma_setup 0x10d91eac +vmlinux ide_dma_speed 0x0f8c4d31 +vmlinux ide_dma_start 0xa14fa6da +vmlinux ide_dma_verbose 0x2ad97506 +vmlinux ide_do_drive_cmd 0x17777ca4 +vmlinux ide_do_reset 0x84e9064f +vmlinux ide_dump_status 0x7449e07a +vmlinux ide_end_drive_cmd 0x8ff88bdb +vmlinux ide_end_request 0x6f368568 +vmlinux ide_error 0xd0342238 +vmlinux ide_execute_command 0xe4fdfb63 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x3aa7cf21 +vmlinux ide_get_best_pio_mode 0x455b470a +vmlinux ide_get_error_location 0x16dba86f +vmlinux ide_hwifs 0x9f414ca9 +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0xd9c3cd04 +vmlinux ide_init_drive_cmd 0xa7c02751 +vmlinux ide_init_sg_cmd 0x36fc6e18 +vmlinux ide_lock 0xf1dced4c +vmlinux ide_map_sg 0x3bdfae30 +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x2f1bc560 +vmlinux ide_pci_unregister_driver 0xeea38e24 +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x99cbccf3 +vmlinux ide_raw_taskfile 0x51d43952 +vmlinux ide_register_hw 0x905957dc +vmlinux ide_register_hw_with_fixup 0xc68fc641 +vmlinux ide_register_region 0x56201d92 +vmlinux ide_register_subdriver 0x350a2a3c +vmlinux ide_set_handler 0x078471cf +vmlinux ide_set_xfer_rate 0x6b6eb5e4 +vmlinux ide_setup_dma 0x93c8d260 +vmlinux ide_setup_pci_device 0x7746aa1b +vmlinux ide_setup_pci_devices 0x3d11ddc6 +vmlinux ide_setup_pci_noise 0x1d461b83 +vmlinux ide_spin_wait_hwgroup 0x7db6f4f0 +vmlinux ide_stall_queue 0x725d9cc9 +vmlinux ide_undecoded_slave 0x980a0837 +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0xe889df81 +vmlinux ide_unregister_subdriver 0xf94b6727 +vmlinux ide_use_dma 0x59ae2c90 +vmlinux ide_wait_not_busy 0x41db6377 +vmlinux ide_wait_stat 0x1a71fd22 +vmlinux ide_xfer_verbose 0xc05d558d +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0x34f9e7d5 +vmlinux idr_find 0x3b17b71d +vmlinux idr_get_new 0xc29e86a1 +vmlinux idr_get_new_above 0x7b022e51 +vmlinux idr_init 0x54b9c5cd +vmlinux idr_pre_get 0x6c072e4f +vmlinux idr_remove 0x2d69aeff +vmlinux iget5_locked 0x1b6617c4 +vmlinux iget_locked 0xf354d4be +vmlinux igrab 0x3f5c550e +vmlinux ilookup 0xa27a01fc +vmlinux ilookup5 0x0ea105ad +vmlinux ilookup5_nowait 0x2e849d5f +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0xc7469b64 +vmlinux in_egroup_p 0x42a4bdf2 +vmlinux in_group_p 0x31ebadcd +vmlinux inet6_lookup 0x6a516f25 +vmlinux inet6_lookup_listener 0x10cf268f +vmlinux inet_accept 0x2014ce0c +vmlinux inet_add_protocol 0xbc90990a +vmlinux inet_addr_type 0x9f8197db +vmlinux inet_bind 0x0c6a9e8d +vmlinux inet_bind_bucket_create 0x34f6f317 +vmlinux inet_bind_hash 0xee5a1b1f +vmlinux inet_csk_accept 0x915d8590 +vmlinux inet_csk_clear_xmit_timers 0x63742187 +vmlinux inet_csk_clone 0x3c231bc1 +vmlinux inet_csk_delete_keepalive_timer 0xde072cc6 +vmlinux inet_csk_destroy_sock 0x77d5d88d +vmlinux inet_csk_get_port 0xdd0f39f5 +vmlinux inet_csk_init_xmit_timers 0x961ef87a +vmlinux inet_csk_listen_start 0x7bd636b8 +vmlinux inet_csk_listen_stop 0x36ab2bd7 +vmlinux inet_csk_reqsk_queue_hash_add 0xcbec698e +vmlinux inet_csk_reqsk_queue_prune 0xc6350dc1 +vmlinux inet_csk_reset_keepalive_timer 0x92dc77b1 +vmlinux inet_csk_route_req 0x1ce0ea55 +vmlinux inet_csk_search_req 0xc1a1f6ab +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0x7ff3f677 +vmlinux inet_dgram_connect 0x751b5976 +vmlinux inet_dgram_ops 0x9722c218 +vmlinux inet_diag_register 0x1507e78b +vmlinux inet_diag_unregister 0x09d11fb5 +vmlinux inet_getname 0xed952430 +vmlinux inet_ioctl 0x86a01b46 +vmlinux inet_listen 0xd242fb85 +vmlinux inet_listen_wlock 0x2d681e3f +vmlinux inet_put_port 0xaba99255 +vmlinux inet_register_protosw 0x319d9b9d +vmlinux inet_release 0x20ddfcc6 +vmlinux inet_select_addr 0xd13122c2 +vmlinux inet_sendmsg 0x73efeefc +vmlinux inet_shutdown 0x5f5fe753 +vmlinux inet_sk_rebuild_header 0x0b35b617 +vmlinux inet_sock_destruct 0xc56f0b65 +vmlinux inet_stream_connect 0xbb8599ac +vmlinux inet_stream_ops 0x811013db +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x720a5884 +vmlinux inet_twsk_deschedule 0xa41549ff +vmlinux inet_twsk_schedule 0x8df5fb69 +vmlinux inet_unregister_protosw 0x827e9980 +vmlinux inetdev_by_index 0x3f68a29f +vmlinux init_buffer 0x8dda190f +vmlinux init_mm 0x8037d322 +vmlinux init_special_inode 0x1e9dcda0 +vmlinux init_task 0x8dc995d6 +vmlinux init_timer 0x6c9087dd +vmlinux inode_add_bytes 0xb4d79724 +vmlinux inode_change_ok 0xe70aa49b +vmlinux inode_get_bytes 0x75d8237c +vmlinux inode_init_once 0x50fd8c67 +vmlinux inode_needs_sync 0xeb9e1491 +vmlinux inode_set_bytes 0x87c2e61f +vmlinux inode_setattr 0x0fe8539d +vmlinux inode_sub_bytes 0x204d3e98 +vmlinux inode_update_time 0x25dfadcf +vmlinux inotify_dentry_parent_queue_event 0xa0c5a449 +vmlinux inotify_get_cookie 0x0fef6e6d +vmlinux inotify_inode_is_dead 0xe0da9575 +vmlinux inotify_inode_queue_event 0xf56d475e +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0xfe75838f +vmlinux input_allocate_device 0x21f50e34 +vmlinux input_class 0xd1bfdf70 +vmlinux input_close_device 0x7942dee9 +vmlinux input_event 0xbd9b7548 +vmlinux input_flush_device 0xa3fb9cf9 +vmlinux input_grab_device 0xb9827fd3 +vmlinux input_open_device 0x00657327 +vmlinux input_register_device 0x5b715537 +vmlinux input_register_handler 0x601b3716 +vmlinux input_release_device 0x356f00b5 +vmlinux input_unregister_device 0x34ff6034 +vmlinux input_unregister_handler 0xf3849f20 +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0xc4b4decb +vmlinux int_sqrt 0xb678366f +vmlinux int_to_scsilun 0xea10212a +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x6400ee13 +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0xf9b28bac +vmlinux interruptible_sleep_on_timeout 0xf51c639f +vmlinux invalidate_bdev 0xc2ecfa15 +vmlinux invalidate_inode_pages 0x87bf0fe8 +vmlinux invalidate_inode_pages2 0xec55aa53 +vmlinux invalidate_inode_pages2_range 0xfe1a49a5 +vmlinux invalidate_inodes 0xe0c84d44 +vmlinux invalidate_partition 0x4ae70891 +vmlinux io_schedule 0x93a6e0b2 +vmlinux io_space 0xeb16163b +vmlinux ioctl_by_bdev 0x34c78a9e +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0xc5534d64 +vmlinux ioread16_rep 0x5857b225 +vmlinux ioread16be 0xf065f629 +vmlinux ioread32 0xe484e35f +vmlinux ioread32_rep 0x3f0546a8 +vmlinux ioread32be 0xfdb9b629 +vmlinux ioread8 0xf10de535 +vmlinux ioread8_rep 0xf441ac43 +vmlinux iov_shorten 0x92392cd9 +vmlinux iowrite16 0x06a86bc1 +vmlinux iowrite16_rep 0x8cc79cab +vmlinux iowrite16be 0x26f8f0b8 +vmlinux iowrite32 0x4a453f53 +vmlinux iowrite32_rep 0xbfc177bc +vmlinux iowrite32be 0xe419bc99 +vmlinux iowrite8 0x848d372e +vmlinux iowrite8_rep 0xa4b94fea +vmlinux ip4_datagram_connect 0x1ce85428 +vmlinux ip_build_and_send_pkt 0x4a6d4884 +vmlinux ip_cmsg_recv 0x93d41e63 +vmlinux ip_compute_csum 0xe5e298ea +vmlinux ip_ct_attach 0x9c7cf00e +vmlinux ip_defrag 0xdde136db +vmlinux ip_fast_csum 0xe4627d16 +vmlinux ip_fragment 0x83d269f7 +vmlinux ip_generic_getfrag 0x89d1358f +vmlinux ip_getsockopt 0x252a31da +vmlinux ip_mc_dec_group 0x1d729f10 +vmlinux ip_mc_inc_group 0x1f213cd1 +vmlinux ip_mc_join_group 0xaaa8fcd3 +vmlinux ip_queue_xmit 0x819b85cb +vmlinux ip_route_input 0xd879181f +vmlinux ip_route_me_harder 0xae562adc +vmlinux ip_route_output_flow 0xe1df7a4b +vmlinux ip_route_output_key 0xedc38e11 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0xa37b7441 +vmlinux ip_setsockopt 0x10ac2693 +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0xb45be6da +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0xa0d26e38 +vmlinux ipv6_ext_hdr 0x969ad2d6 +vmlinux ipv6_skip_exthdr 0x6882e334 +vmlinux is_bad_inode 0xfca669ae +vmlinux is_console_locked 0x944a564d +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux isa_irq_to_vector_map 0x3aed7527 +vmlinux iunique 0x25798ea3 +vmlinux iw_handler_get_spy 0xec24bbfa +vmlinux iw_handler_get_thrspy 0x6245bd94 +vmlinux iw_handler_set_spy 0x660d4d27 +vmlinux iw_handler_set_thrspy 0xe740c52a +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0x7ef0512f +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x4935f4a1 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0x5a678beb +vmlinux kernel_recvmsg 0xf2a37bda +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0xd77bccf1 +vmlinux kernel_subsys 0x28a2b03c +vmlinux kernel_thread 0x439090b9 +vmlinux kfifo_alloc 0x8f9b86b2 +vmlinux kfifo_free 0x4719ba4e +vmlinux kfifo_init 0x4b9f3684 +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0xb6b3fbd1 +vmlinux kill_anon_super 0x8ee3ef81 +vmlinux kill_block_super 0x36cca7e1 +vmlinux kill_fasync 0xea420639 +vmlinux kill_litter_super 0x3f4a7a34 +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0x7c0c631a +vmlinux klist_add_head 0x1b425968 +vmlinux klist_add_tail 0x2f0d483a +vmlinux klist_del 0x0ec3cdb0 +vmlinux klist_init 0xf1bc84aa +vmlinux klist_iter_exit 0x1605aaa9 +vmlinux klist_iter_init 0xa8cfef8a +vmlinux klist_iter_init_node 0x407c0ba9 +vmlinux klist_next 0xeffbec5a +vmlinux klist_node_attached 0x2c3f31ef +vmlinux klist_remove 0x98f7afa9 +vmlinux km_new_mapping 0xdc306c21 +vmlinux km_policy_notify 0x81b186de +vmlinux km_state_notify 0x69c77d3c +vmlinux km_waitq 0xef1a1668 +vmlinux kmalloc_node 0xce0123e0 +vmlinux kmem_cache_alloc 0x9727d888 +vmlinux kmem_cache_alloc_node 0xe71d44d6 +vmlinux kmem_cache_create 0xbbd0eec7 +vmlinux kmem_cache_destroy 0xf04ffb40 +vmlinux kmem_cache_free 0x47e8b990 +vmlinux kmem_cache_name 0xe369ee22 +vmlinux kmem_cache_shrink 0xe52d32ee +vmlinux kmem_cache_size 0x34aaea71 +vmlinux kmem_find_general_cachep 0x6356a001 +vmlinux kobject_add 0xe1f57a57 +vmlinux kobject_del 0xf64409fe +vmlinux kobject_get 0x74ff17c6 +vmlinux kobject_hotplug 0xb20ec28c +vmlinux kobject_init 0x34b394e3 +vmlinux kobject_put 0xa2a09e2a +vmlinux kobject_register 0x3dfcae3e +vmlinux kobject_set_name 0x873e83f1 +vmlinux kobject_uevent 0x3a666dae +vmlinux kobject_uevent_atomic 0x744366c7 +vmlinux kobject_unregister 0x38dc18f3 +vmlinux kref_get 0xbd0712b5 +vmlinux kref_init 0xd1aebf8a +vmlinux kref_put 0xd23c3f86 +vmlinux kset_find_obj 0x9889d213 +vmlinux kset_register 0x22867584 +vmlinux kset_unregister 0x157b72fc +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x905b495a +vmlinux kthread_create 0x9a1f451e +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0x2562224d +vmlinux kthread_stop_sem 0xa6dd443f +vmlinux kzalloc 0x5a3b6eca +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0xc537c395 +vmlinux lease_modify 0x289a7011 +vmlinux linkwatch_fire_event 0xb80ebf2b +vmlinux ll_rw_block 0x03c5ffbf +vmlinux llc_add_pack 0x191ec033 +vmlinux llc_build_and_send_ui_pkt 0x814533c5 +vmlinux llc_mac_hdr_init 0x13e8248a +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0xc2c6e13e +vmlinux llc_sap_find 0x8c622fcd +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0x556643e3 +vmlinux llc_sap_open 0xa9c424a6 +vmlinux llc_set_station_handler 0x1e217cd8 +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_nls 0x8844211b +vmlinux load_nls_default 0xd57c1fe4 +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_may_read 0xf4f37fff +vmlinux lock_may_write 0xa4628aaf +vmlinux lock_rename 0x771b3956 +vmlinux lock_sock 0x155ec07c +vmlinux locks_copy_lock 0x7a1be9b8 +vmlinux locks_init_lock 0x729c5c34 +vmlinux locks_mandatory_area 0xc36dad40 +vmlinux locks_remove_posix 0xbc5cffdc +vmlinux lookup_create 0xf4fa877d +vmlinux lookup_hash 0xf14fae2f +vmlinux lookup_instantiate_filp 0xf5d98120 +vmlinux lookup_one_len 0xc8884478 +vmlinux loopback_dev 0x6273996d +vmlinux loops_per_jiffy 0xba497f13 +vmlinux machvec_dma_sync_sg 0x17bd35b0 +vmlinux machvec_dma_sync_single 0x7aa0f563 +vmlinux machvec_setup 0xaf6bbc60 +vmlinux machvec_timer_interrupt 0x18d3f88f +vmlinux make_8023_client 0xd5874290 +vmlinux make_EII_client 0xdaec1c8f +vmlinux make_bad_inode 0x4c5b4946 +vmlinux malloc_sizes 0xb81ceaa5 +vmlinux mapping_tagged 0x8050efc7 +vmlinux mark_buffer_async_write 0x881aa750 +vmlinux mark_buffer_dirty 0x05e9eb78 +vmlinux mark_buffer_dirty_inode 0x18ff64c2 +vmlinux mark_info_dirty 0x54e2f0bb +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x0e407aa5 +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_cstate 0x93805374 +vmlinux max_low_pfn 0x9abfb6dd +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0xfab4fc1c +vmlinux may_umount_tree 0x13b70483 +vmlinux mb_cache_create 0xc86ae280 +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0xac43d2d4 +vmlinux mb_cache_entry_find_first 0xfce8b6dc +vmlinux mb_cache_entry_find_next 0x523a7dec +vmlinux mb_cache_entry_free 0x8fcf5829 +vmlinux mb_cache_entry_get 0xb1d1b897 +vmlinux mb_cache_entry_insert 0x1d68d457 +vmlinux mb_cache_entry_release 0x2cc102f8 +vmlinux mb_cache_shrink 0xe6db99f3 +vmlinux memchr 0xc740c64a +vmlinux memcmp 0xc7ec28b0 +vmlinux memcpy 0x6067a146 +vmlinux memcpy_fromio 0xfd19eaeb +vmlinux memcpy_fromiovec 0x36139a51 +vmlinux memcpy_fromiovecend 0x9bc565c5 +vmlinux memcpy_toio 0x129697b8 +vmlinux memcpy_toiovec 0x2876a6d3 +vmlinux memmove 0x5dbbe98e +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xab53b0a8 +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0x1f7cc628 +vmlinux mempool_create_node 0xd3427f73 +vmlinux mempool_destroy 0xac54fc9f +vmlinux mempool_free 0x062aba95 +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x25ba121c +vmlinux memscan 0x9c0ea3cd +vmlinux memset 0x3fa03a97 +vmlinux memset_io 0xcd473329 +vmlinux min_low_pfn 0x0acca637 +vmlinux misc_deregister 0x0a59f1c7 +vmlinux misc_register 0x3daaec29 +vmlinux mmput 0x7ca52f20 +vmlinux mnt_pin 0xef9517ab +vmlinux mnt_unpin 0x211f280c +vmlinux mntput_no_expire 0xb70af230 +vmlinux mod_firmware_load 0x39e3dd23 +vmlinux mod_reg_security 0x24ceee6a +vmlinux mod_timer 0x56662b32 +vmlinux mod_unreg_security 0x3421effd +vmlinux module_add_driver 0x480036a4 +vmlinux module_refcount 0x093eb35a +vmlinux module_remove_driver 0x37d36abc +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0xe0497e70 +vmlinux mpage_readpages 0xe963388a +vmlinux mpage_writepage 0xc1a427bd +vmlinux mpage_writepages 0x0778d6a1 +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux multipath_alg_register 0xae724b51 +vmlinux multipath_alg_unregister 0x59610240 +vmlinux n_tty_ioctl 0x5d5e3784 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x66fe5f85 +vmlinux neigh_changeaddr 0x436ff280 +vmlinux neigh_compat_output 0xc551e434 +vmlinux neigh_connected_output 0x013bdc49 +vmlinux neigh_create 0x70175cb7 +vmlinux neigh_delete 0xdc10baf9 +vmlinux neigh_destroy 0x4367ee0d +vmlinux neigh_dump_info 0x252cb67a +vmlinux neigh_event_ns 0x4ef43bbc +vmlinux neigh_for_each 0x0fbea76c +vmlinux neigh_ifdown 0xc6af25b5 +vmlinux neigh_lookup 0x79f987f2 +vmlinux neigh_lookup_nodev 0x7260f862 +vmlinux neigh_parms_alloc 0x16532762 +vmlinux neigh_parms_release 0xc7798951 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0xc15097c8 +vmlinux neigh_seq_next 0xe94c7497 +vmlinux neigh_seq_start 0xfb356c36 +vmlinux neigh_seq_stop 0x07b27335 +vmlinux neigh_sysctl_register 0x94d99b24 +vmlinux neigh_sysctl_unregister 0x994d1f32 +vmlinux neigh_table_clear 0xb87a1868 +vmlinux neigh_table_init 0xe02981c5 +vmlinux neigh_update 0x824773ae +vmlinux neigh_update_hhs 0x439952b6 +vmlinux neightbl_dump_info 0xf6fa3884 +vmlinux neightbl_set 0xfdd76baa +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0xbfe5cb53 +vmlinux netdev_features_change 0x444422ca +vmlinux netdev_rx_csum_fault 0x52988d00 +vmlinux netdev_set_master 0x0b80fb72 +vmlinux netdev_state_change 0xfdc52681 +vmlinux netif_carrier_off 0x9d878160 +vmlinux netif_carrier_on 0x5f6c33ee +vmlinux netif_receive_skb 0x20550f17 +vmlinux netif_rx 0xaf2248fd +vmlinux netif_rx_ni 0x865d2179 +vmlinux netlink_ack 0xfe89a515 +vmlinux netlink_broadcast 0x7d6a1259 +vmlinux netlink_dump_start 0x71267b32 +vmlinux netlink_kernel_create 0x3e99b0a8 +vmlinux netlink_queue_skip 0x7d894fc8 +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0xdf6e4344 +vmlinux netlink_set_err 0x5fc9b73f +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0x8533199f +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x22126d3a +vmlinux netpoll_parse_options 0x3e4a2538 +vmlinux netpoll_poll 0xc959f424 +vmlinux netpoll_queue 0xca944504 +vmlinux netpoll_send_udp 0xc28cfad5 +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0xe13fee0b +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0xf011607d +vmlinux next_thread 0x79472275 +vmlinux nf_ct_attach 0x5e562b97 +vmlinux nf_getsockopt 0x02d52231 +vmlinux nf_hook_slow 0xc563e940 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0x5da1a209 +vmlinux nf_log_register 0x25d21073 +vmlinux nf_log_unregister_logger 0x2e8b01e3 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0xb66f72a7 +vmlinux nf_register_queue_handler 0xe644ced6 +vmlinux nf_register_queue_rerouter 0xc92cd4d2 +vmlinux nf_register_sockopt 0x217ddbd8 +vmlinux nf_reinject 0x62d436d1 +vmlinux nf_setsockopt 0x8c7e142f +vmlinux nf_unregister_hook 0xb0431af3 +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0x92784116 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x09a4fb1e +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0x4c4c956e +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x9b4f3684 +vmlinux nla_put 0xc685d2a3 +vmlinux nla_reserve 0xa760d226 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0xa33f7c7c +vmlinux nla_validate 0x71798dc7 +vmlinux no_llseek 0xd8c42ca1 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x0755e5b6 +vmlinux nobh_prepare_write 0x77e855fd +vmlinux nobh_truncate_page 0xa0df2e26 +vmlinux nobh_writepage 0xbc5de721 +vmlinux node_online_map 0xaf2c5c03 +vmlinux node_possible_map 0xcf6e837d +vmlinux nonseekable_open 0x37d5a088 +vmlinux noop_qdisc 0xa12bd88e +vmlinux noop_qdisc_ops 0x4621a43c +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x8bef5a9e +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0xd13e8915 +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0xee499390 +vmlinux open_by_devnum 0x735bbf63 +vmlinux open_exec 0xd349a006 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux p80211_resume 0x144912c1 +vmlinux p80211_suspend 0x54e914cc +vmlinux p80211netdev_hwremoved 0x9653c310 +vmlinux p80211netdev_rx 0x83a9f30f +vmlinux p80211skb_free 0x4ded5f69 +vmlinux p80211skb_rxmeta_attach 0x6cc0f91c +vmlinux page_follow_link_light 0xa0d0a34c +vmlinux page_put_link 0x0dfd18a4 +vmlinux page_readlink 0x52437f8f +vmlinux page_symlink 0x54612177 +vmlinux page_symlink_inode_operations 0xe8642b7b +vmlinux pagevec_lookup_tag 0x414f09f3 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0xcd93e29b +vmlinux path_release 0x028e0878 +vmlinux path_walk 0x85b5ccaf +vmlinux pci_add_new_bus 0xcec1fd5d +vmlinux pci_assign_resource 0xdc33581f +vmlinux pci_block_user_cfg_access 0xb8013bd8 +vmlinux pci_bus_add_device 0x9431b15b +vmlinux pci_bus_add_devices 0x974f58e6 +vmlinux pci_bus_alloc_resource 0x34dcc64b +vmlinux pci_bus_assign_resources 0x860a9c45 +vmlinux pci_bus_find_capability 0x4fb10f86 +vmlinux pci_bus_max_busnr 0x9515f59f +vmlinux pci_bus_read_config_byte 0x1ddd3b80 +vmlinux pci_bus_read_config_dword 0x0d118eb6 +vmlinux pci_bus_read_config_word 0x5e900656 +vmlinux pci_bus_size_bridges 0x4824b725 +vmlinux pci_bus_type 0x931d4a21 +vmlinux pci_bus_write_config_byte 0x3ecf3951 +vmlinux pci_bus_write_config_dword 0xbb95cf2b +vmlinux pci_bus_write_config_word 0x2bdc6aeb +vmlinux pci_choose_state 0x297d1539 +vmlinux pci_clear_mwi 0x30194892 +vmlinux pci_create_bus 0xdc1bda68 +vmlinux pci_dev_driver 0x96b587ae +vmlinux pci_dev_get 0x1db5cfbc +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0x24d1ac19 +vmlinux pci_disable_device 0x52c764b7 +vmlinux pci_disable_msi 0x899a9968 +vmlinux pci_disable_msix 0xd39ccdc0 +vmlinux pci_do_scan_bus 0x82970f12 +vmlinux pci_enable_bridges 0xa4a861cd +vmlinux pci_enable_device 0xc00d9c39 +vmlinux pci_enable_device_bars 0x17917a61 +vmlinux pci_enable_msi 0xded584b8 +vmlinux pci_enable_msix 0x89cba393 +vmlinux pci_enable_wake 0x2abbc9eb +vmlinux pci_find_bus 0xdbab5417 +vmlinux pci_find_capability 0xf82034ba +vmlinux pci_find_device 0x8dcc9ad3 +vmlinux pci_find_device_reverse 0x850086ad +vmlinux pci_find_next_bus 0xfaad9c81 +vmlinux pci_find_next_capability 0xcec73379 +vmlinux pci_find_parent_resource 0x8c08830d +vmlinux pci_find_slot 0xf12780f2 +vmlinux pci_fixup_device 0xc8f0de2a +vmlinux pci_get_class 0xc4cfa511 +vmlinux pci_get_device 0x4b478aa3 +vmlinux pci_get_slot 0x29f9b5da +vmlinux pci_get_subsys 0x5d8b6e9b +vmlinux pci_intx 0x82e99b58 +vmlinux pci_iomap 0x852a50ce +vmlinux pci_iounmap 0xac97607f +vmlinux pci_map_rom 0x9fbd4fe2 +vmlinux pci_map_rom_copy 0x3f381cb3 +vmlinux pci_match_device 0x893203c5 +vmlinux pci_match_id 0x4e9fcf84 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_osc_control_set 0xbd163c66 +vmlinux pci_osc_support_set 0xcaadcf83 +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0xd85b73ed +vmlinux pci_proc_attach_device 0x6866456f +vmlinux pci_proc_detach_bus 0xe1edfb74 +vmlinux pci_release_region 0x2b1c2d3a +vmlinux pci_release_regions 0x72f6bc26 +vmlinux pci_remove_behind_bridge 0xc4a36524 +vmlinux pci_remove_bus 0x24f2a127 +vmlinux pci_remove_bus_device 0xc249697a +vmlinux pci_remove_device_safe 0x11855704 +vmlinux pci_remove_rom 0x7a45a8fe +vmlinux pci_request_region 0xf071cb84 +vmlinux pci_request_regions 0xf983f80b +vmlinux pci_restore_bars 0xece3ff18 +vmlinux pci_restore_state 0xa70e420f +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0xe3b88825 +vmlinux pci_scan_bridge 0x2b0e522c +vmlinux pci_scan_bus_parented 0x988b5238 +vmlinux pci_scan_child_bus 0xe58658e0 +vmlinux pci_scan_single_device 0x50fcb86c +vmlinux pci_scan_slot 0xcb4a3b51 +vmlinux pci_set_consistent_dma_mask 0xc1993561 +vmlinux pci_set_dma_mask 0x451cf255 +vmlinux pci_set_master 0x01618eee +vmlinux pci_set_mwi 0x3f8bbb6d +vmlinux pci_set_power_state 0xb738bfc0 +vmlinux pci_setup_cardbus 0xe7c7b4b6 +vmlinux pci_unblock_user_cfg_access 0x1cd0ca55 +vmlinux pci_unmap_rom 0x1a847d39 +vmlinux pci_unregister_driver 0xe73a19ff +vmlinux pci_walk_bus 0x6eb24ef1 +vmlinux pcibios_bus_to_resource 0xd57a6aff +vmlinux pcibios_resource_to_bus 0xa7c87133 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pciserial_init_ports 0x6f105b58 +vmlinux pciserial_remove_ports 0xe31b8761 +vmlinux pciserial_resume_ports 0xc380a9e1 +vmlinux pciserial_suspend_ports 0x8d85ad65 +vmlinux per_cpu____sn_cnodeid_to_nasid 0x8e4c910b +vmlinux per_cpu____sn_hub_info 0x538fd0d0 +vmlinux per_cpu____sn_nodepda 0x00000000 +vmlinux per_cpu__cpu_info 0x260e1315 +vmlinux per_cpu__kstat 0x97ca28ec +vmlinux per_cpu__pfm_syst_info 0xa2d17b9f +vmlinux per_cpu__softnet_data 0x44911be5 +vmlinux permission 0xefed1a80 +vmlinux pfifo_qdisc_ops 0x590f312c +vmlinux pfm_install_alt_pmu_interrupt 0x4a419738 +vmlinux pfm_mod_read_pmds 0xe32c6306 +vmlinux pfm_mod_write_dbrs 0xe06bc139 +vmlinux pfm_mod_write_ibrs 0x7c18aec2 +vmlinux pfm_mod_write_pmcs 0xaa390780 +vmlinux pfm_register_buffer_fmt 0x6f795649 +vmlinux pfm_remove_alt_pmu_interrupt 0x6fba9ec7 +vmlinux pfm_sysctl 0x9ebc1b3a +vmlinux pfm_unregister_buffer_fmt 0x2d23d64f +vmlinux physical_node_map 0x20301636 +vmlinux platform_add_devices 0x89dc100e +vmlinux platform_bus 0x68a1469d +vmlinux platform_bus_type 0x9c3de1e9 +vmlinux platform_device_add 0x8a658007 +vmlinux platform_device_add_data 0x8689b915 +vmlinux platform_device_add_resources 0x1783e6e7 +vmlinux platform_device_alloc 0x2102155f +vmlinux platform_device_put 0xa7597954 +vmlinux platform_device_register 0x40742221 +vmlinux platform_device_register_simple 0x9ba2d510 +vmlinux platform_device_unregister 0x6deaf1f5 +vmlinux platform_driver_register 0x072cf5f5 +vmlinux platform_driver_unregister 0xa8a34bbb +vmlinux platform_get_irq 0xf518dedf +vmlinux platform_get_irq_byname 0x8540b900 +vmlinux platform_get_resource 0x5bb39d49 +vmlinux platform_get_resource_byname 0xee3c8362 +vmlinux pm_active 0xebd387f6 +vmlinux pm_idle 0xf890fe7f +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pneigh_enqueue 0xaf07db65 +vmlinux pneigh_lookup 0x307831ff +vmlinux pnp_activate_dev 0x00874a22 +vmlinux pnp_device_attach 0x2172f954 +vmlinux pnp_device_detach 0x91875526 +vmlinux pnp_disable_dev 0xeb894687 +vmlinux pnp_init_resource_table 0x16084899 +vmlinux pnp_is_active 0x8054b918 +vmlinux pnp_manual_config_dev 0x041b425e +vmlinux pnp_register_card_driver 0x394bb2d0 +vmlinux pnp_register_driver 0x1827068d +vmlinux pnp_release_card_device 0xd34c9432 +vmlinux pnp_request_card_device 0x40c20c87 +vmlinux pnp_resource_change 0xf577ec2b +vmlinux pnp_unregister_card_driver 0xc03bffed +vmlinux pnp_unregister_driver 0xeaa9e636 +vmlinux poll_freewait 0x300929c7 +vmlinux poll_initwait 0xcf1c006a +vmlinux posix_acl_alloc 0xcbe9d892 +vmlinux posix_acl_chmod_masq 0xf8a0a1ff +vmlinux posix_acl_clone 0x40f5b6d6 +vmlinux posix_acl_create_masq 0x1e4ebfe9 +vmlinux posix_acl_equiv_mode 0x9bb11d25 +vmlinux posix_acl_from_mode 0x63b6b18a +vmlinux posix_acl_from_xattr 0x9f3bf87b +vmlinux posix_acl_permission 0xbe173a97 +vmlinux posix_acl_to_xattr 0x8791cd7d +vmlinux posix_acl_valid 0x62fb7285 +vmlinux posix_block_lock 0xbb076391 +vmlinux posix_lock_file 0xd485a355 +vmlinux posix_lock_file_wait 0x5ecb1da2 +vmlinux posix_locks_deadlock 0x122084d1 +vmlinux posix_test_lock 0x5f686fc5 +vmlinux posix_timer_event 0x952d1724 +vmlinux posix_unblock_lock 0x3dc00ea4 +vmlinux pre_task_out_intr 0x93d6119f +vmlinux prepare_binprm 0x8f9f4e7d +vmlinux prepare_to_wait 0x8085c7b1 +vmlinux prepare_to_wait_exclusive 0xadb792c2 +vmlinux printk 0x827d5807 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0xb806baf2 +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0x2024b3f5 +vmlinux proc_dointvec 0x0d83c28b +vmlinux proc_dointvec_jiffies 0x86f9784e +vmlinux proc_dointvec_minmax 0xb5dca5f2 +vmlinux proc_dointvec_ms_jiffies 0x8f6332cd +vmlinux proc_dointvec_userhz_jiffies 0xa3331cdb +vmlinux proc_dostring 0xd1bdc623 +vmlinux proc_doulongvec_minmax 0x112887ad +vmlinux proc_doulongvec_ms_jiffies_minmax 0xade2c428 +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0x5cb35d84 +vmlinux proc_net 0x399539fa +vmlinux proc_net_netfilter 0x82cc88e8 +vmlinux proc_net_stat 0x25aad086 +vmlinux proc_root 0x988c1e9d +vmlinux proc_root_driver 0xcbbd05ac +vmlinux proc_root_fs 0x7bb84375 +vmlinux proc_symlink 0xc050956d +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux proto_register 0x59f8c281 +vmlinux proto_unregister 0x23d308cd +vmlinux ps2_cmd_aborted 0xd192f01c +vmlinux ps2_command 0x3342472b +vmlinux ps2_drain 0xb67a3b10 +vmlinux ps2_handle_ack 0x6fe89f8f +vmlinux ps2_handle_response 0x713a5486 +vmlinux ps2_init 0x5eccab9b +vmlinux ps2_schedule_command 0x11dfa8aa +vmlinux ps2_sendbyte 0x7e58fab0 +vmlinux pskb_copy 0x4da5fd6a +vmlinux pskb_expand_head 0xc0920ae4 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0x982bdfe6 +vmlinux put_cmsg 0x43ec913a +vmlinux put_device 0xf8ec9da5 +vmlinux put_disk 0x48c2fee4 +vmlinux put_driver 0x6b8b522b +vmlinux put_files_struct 0xa518e442 +vmlinux put_io_context 0x9cd4903e +vmlinux put_page 0xd6ce3d8a +vmlinux put_tty_driver 0xb4864de5 +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0xe2edef88 +vmlinux qdisc_create_dflt 0x3269a294 +vmlinux qdisc_destroy 0x205a13b1 +vmlinux qdisc_get_rtab 0xbb20ee2e +vmlinux qdisc_lock_tree 0x647d3c4a +vmlinux qdisc_lookup 0xe04bc420 +vmlinux qdisc_put_rtab 0xc50fe814 +vmlinux qdisc_reset 0xefc4954c +vmlinux qdisc_restart 0x4ba778bc +vmlinux qdisc_unlock_tree 0xf55f46b4 +vmlinux queue_delayed_work 0x6f748ee3 +vmlinux queue_work 0x6af5537c +vmlinux radix_tree_delete 0x898049c9 +vmlinux radix_tree_gang_lookup 0x35ef380e +vmlinux radix_tree_gang_lookup_tag 0xed493232 +vmlinux radix_tree_insert 0x72e6283f +vmlinux radix_tree_lookup 0x76e635da +vmlinux radix_tree_lookup_slot 0x41706e2f +vmlinux radix_tree_tag_clear 0x9ee300df +vmlinux radix_tree_tag_set 0xd73b9fb5 +vmlinux radix_tree_tagged 0xb52b2186 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0x7a234492 +vmlinux read_cache_pages 0xf16492ed +vmlinux read_dev_sector 0xb43e0296 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0x08125cfd +vmlinux redraw_screen 0x95e56190 +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0xa80a7dae +vmlinux register_acpi_bus_type 0xa46e1bff +vmlinux register_binfmt 0x4689164d +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0x9cc13882 +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x48257aeb +vmlinux register_die_notifier 0x53986488 +vmlinux register_exec_domain 0x08c08c24 +vmlinux register_filesystem 0x0b4c5797 +vmlinux register_firmware 0xf6f77a91 +vmlinux register_framebuffer 0x4459a5eb +vmlinux register_gifconf 0x286b5304 +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0xeba26425 +vmlinux register_netdevice 0x1864c9f6 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x4cb813c4 +vmlinux register_posix_clock 0xcc3cbae8 +vmlinux register_qdisc 0xea20f131 +vmlinux register_quota_format 0x1393da76 +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0xc1513d30 +vmlinux register_snap_client 0xf009f500 +vmlinux register_sound_dsp 0xd39ed635 +vmlinux register_sound_midi 0x62e39d11 +vmlinux register_sound_mixer 0x302439df +vmlinux register_sound_special 0x09c9f8e5 +vmlinux register_sound_special_device 0x49f03b88 +vmlinux register_sound_synth 0xa7a0eabb +vmlinux register_sysctl_table 0x3263609d +vmlinux register_sysrq_key 0x79ef2289 +vmlinux register_tcf_proto_ops 0x2447705e +vmlinux register_timer_hook 0x1b15acf9 +vmlinux register_wlandev 0x557ebc78 +vmlinux registered_fb 0x67e22416 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x433a4d61 +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0xddc42f93 +vmlinux remap_pfn_range 0x01a98b7e +vmlinux remote_llseek 0xe92e4061 +vmlinux remove_arg_zero 0x3e789bc6 +vmlinux remove_inode_hash 0x8315ec4d +vmlinux remove_proc_entry 0x9f723c0c +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0xa33e63f3 +vmlinux remove_wait_queue 0x36e47222 +vmlinux reqsk_queue_alloc 0x886da460 +vmlinux reqsk_queue_destroy 0x88cc2e40 +vmlinux request_firmware 0x0de4fbb3 +vmlinux request_firmware_nowait 0xdb0ce639 +vmlinux request_irq 0x512f11b0 +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x83230e05 +vmlinux rtnetlink_links 0x4d67ad5d +vmlinux rtnetlink_put_metrics 0xdb9d1c57 +vmlinux rtnl 0xab1aad87 +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0x1c6b6da8 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux rwsem_down_read_failed 0x51d5684e +vmlinux rwsem_down_write_failed 0xd8ae97ed +vmlinux rwsem_downgrade_wake 0x41c707ad +vmlinux rwsem_wake 0xc233cb54 +vmlinux sal_pcibr_slot_disable 0xba71a810 +vmlinux sal_pcibr_slot_enable 0x89e9498e +vmlinux sb_min_blocksize 0x63cd02c0 +vmlinux sb_set_blocksize 0x400255e3 +vmlinux sba_alloc_coherent 0xa7a3c07c +vmlinux sba_dma_mapping_error 0xfd79eb7a +vmlinux sba_dma_supported 0x4ac6572e +vmlinux sba_free_coherent 0x68ffc0b4 +vmlinux sba_map_sg 0x50795c5c +vmlinux sba_map_single 0x59833f5d +vmlinux sba_unmap_sg 0xe0d139fe +vmlinux sba_unmap_single 0xe0040fa6 +vmlinux sched_setscheduler 0x109fd105 +vmlinux schedule 0xa44fffc1 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0xf31b5414 +vmlinux scm_fp_dup 0xafb3bb1d +vmlinux scnprintf 0x7bb4de17 +vmlinux screen_info 0x59b7e373 +vmlinux scsi_add_device 0xfd36924f +vmlinux scsi_add_host 0xa43d96fe +vmlinux scsi_adjust_queue_depth 0xe43210d3 +vmlinux scsi_allocate_request 0xc3ba780f +vmlinux scsi_bios_ptable 0xd36295c4 +vmlinux scsi_block_requests 0x14eae587 +vmlinux scsi_block_when_processing_errors 0x2f5a0a3a +vmlinux scsi_bus_type 0x5eaf8bee +vmlinux scsi_calculate_bounce_limit 0x261199c9 +vmlinux scsi_cmd_ioctl 0x4ca6cb92 +vmlinux scsi_command_normalize_sense 0x66b870f4 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux scsi_device_cancel 0xcdc2d93d +vmlinux scsi_device_get 0xce45f498 +vmlinux scsi_device_lookup 0x9a45bc36 +vmlinux scsi_device_lookup_by_target 0x06f1113b +vmlinux scsi_device_put 0x93e49730 +vmlinux scsi_device_quiesce 0x8ed7ec12 +vmlinux scsi_device_resume 0x6c889a92 +vmlinux scsi_device_set_state 0x596c2194 +vmlinux scsi_device_types 0x6df713c9 +vmlinux scsi_do_req 0xf0d6a311 +vmlinux scsi_execute 0x1e25e519 +vmlinux scsi_execute_req 0x39177781 +vmlinux scsi_extd_sense_format 0x11267875 +vmlinux scsi_finish_command 0x97810f22 +vmlinux scsi_flush_work 0x7bc9c22d +vmlinux scsi_free_host_dev 0x13329eee +vmlinux scsi_get_command 0xda0a8f54 +vmlinux scsi_get_host_dev 0x00444e8a +vmlinux scsi_get_sense_info_fld 0xc369234b +vmlinux scsi_host_alloc 0x6461e62d +vmlinux scsi_host_get 0xcb7703a5 +vmlinux scsi_host_lookup 0x40619636 +vmlinux scsi_host_put 0x8155ad2a +vmlinux scsi_host_set_state 0xc9096347 +vmlinux scsi_internal_device_block 0x70fd364b +vmlinux scsi_internal_device_unblock 0x1df8688b +vmlinux scsi_io_completion 0x9a9979eb +vmlinux scsi_ioctl 0xd3b205aa +vmlinux scsi_ioctl_send_command 0x1e176d21 +vmlinux scsi_is_host_device 0xcdd30136 +vmlinux scsi_is_sdev_device 0x56b9ae73 +vmlinux scsi_is_target_device 0xbca4e934 +vmlinux scsi_logging_level 0xaf3dd7dc +vmlinux scsi_mode_sense 0xee88b56b +vmlinux scsi_nonblockable_ioctl 0x82785875 +vmlinux scsi_normalize_sense 0x813cd63f +vmlinux scsi_partsize 0x4afe9a77 +vmlinux scsi_print_command 0x46f74104 +vmlinux scsi_print_msg 0x67f88938 +vmlinux scsi_print_req_sense 0x05371f95 +vmlinux scsi_print_sense 0xca1c2028 +vmlinux scsi_print_sense_hdr 0xb83c35a3 +vmlinux scsi_print_status 0x9cfd56c5 +vmlinux scsi_put_command 0x7b069348 +vmlinux scsi_queue_work 0xf6654a25 +vmlinux scsi_register 0xdd824322 +vmlinux scsi_register_driver 0xb7fa8260 +vmlinux scsi_register_interface 0xfa7ec18f +vmlinux scsi_release_request 0x4c846e94 +vmlinux scsi_remove_device 0x8926ff68 +vmlinux scsi_remove_host 0x83e67f92 +vmlinux scsi_remove_target 0x64df290a +vmlinux scsi_report_bus_reset 0xa73b3028 +vmlinux scsi_report_device_reset 0xa96decd9 +vmlinux scsi_request_normalize_sense 0x9e3633e3 +vmlinux scsi_rescan_device 0x5d1ef674 +vmlinux scsi_reset_provider 0x68768236 +vmlinux scsi_scan_host 0x57764a26 +vmlinux scsi_scan_target 0x0b7f8efe +vmlinux scsi_sense_desc_find 0x10d9f885 +vmlinux scsi_sense_key_string 0x96cd2b04 +vmlinux scsi_set_medium_removal 0x2cfa4244 +vmlinux scsi_setup_blk_pc_cmnd 0x4b3d19e5 +vmlinux scsi_target_block 0xd547e3c2 +vmlinux scsi_target_quiesce 0x1d7dc496 +vmlinux scsi_target_resume 0x51d18784 +vmlinux scsi_target_unblock 0xbcb9cba9 +vmlinux scsi_test_unit_ready 0x638c5d61 +vmlinux scsi_track_queue_full 0x957e9da5 +vmlinux scsi_unblock_requests 0x93030f4e +vmlinux scsi_unregister 0xaef48128 +vmlinux scsicam_bios_param 0xd308561e +vmlinux search_binary_handler 0x2590d0a2 +vmlinux secpath_dup 0xfc93d0e9 +vmlinux secure_dccp_sequence_number 0xd47b06b2 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0xb0412cda +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0xfbab4084 +vmlinux securityfs_create_dir 0x6bcdeb97 +vmlinux securityfs_create_file 0x47a64a01 +vmlinux securityfs_remove 0x6326a793 +vmlinux send_sig 0x38d1bd02 +vmlinux send_sig_info 0x4b07ee14 +vmlinux seq_escape 0xa6293808 +vmlinux seq_lseek 0x10b26bac +vmlinux seq_open 0x24af860f +vmlinux seq_path 0x432b77a7 +vmlinux seq_printf 0x1dc7a8bd +vmlinux seq_putc 0x4e1c6389 +vmlinux seq_puts 0x32708c56 +vmlinux seq_read 0x350bc765 +vmlinux seq_release 0xfb476d74 +vmlinux seq_release_private 0xd072df68 +vmlinux serial8250_register_port 0x2ccd2463 +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0xebdb9c92 +vmlinux serio_interrupt 0x1fb7d6bf +vmlinux serio_open 0x8f8082ff +vmlinux serio_reconnect 0xa2c952e2 +vmlinux serio_rescan 0x87b185d9 +vmlinux serio_unregister_child_port 0x7fcc3894 +vmlinux serio_unregister_driver 0xd1f0830d +vmlinux serio_unregister_port 0x9d19742c +vmlinux set_anon_super 0xe436d9e1 +vmlinux set_bh_page 0xfb58d1fc +vmlinux set_binfmt 0x8a961441 +vmlinux set_blocksize 0x43106466 +vmlinux set_current_groups 0x4f18770b +vmlinux set_device_ro 0x5878d1a6 +vmlinux set_disk_ro 0x9fe73f1f +vmlinux set_page_dirty 0x57f22e52 +vmlinux set_page_dirty_lock 0x3ad2fcd9 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0x2f8f661d +vmlinux setlease 0x3dbdf885 +vmlinux setup_arg_pages 0xb887324b +vmlinux sget 0x7d0fa773 +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x8148fc22 +vmlinux shrink_dcache_sb 0xc23f0070 +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x6a5fa363 +vmlinux simple_attr_close 0x70ad25f7 +vmlinux simple_attr_open 0xee20893f +vmlinux simple_attr_read 0x14dec00c +vmlinux simple_attr_write 0x4d0dd235 +vmlinux simple_commit_write 0x15047e70 +vmlinux simple_dir_inode_operations 0xe342ad75 +vmlinux simple_dir_operations 0xdabdd2f3 +vmlinux simple_empty 0x12e07df6 +vmlinux simple_fill_super 0x4c044dca +vmlinux simple_getattr 0x116b1f3a +vmlinux simple_link 0x28217797 +vmlinux simple_lookup 0xe9d31ca6 +vmlinux simple_pin_fs 0x2c169b3e +vmlinux simple_prepare_write 0x48782251 +vmlinux simple_read_from_buffer 0x5a5e7ea3 +vmlinux simple_readpage 0x9d881e4e +vmlinux simple_release_fs 0xa1d53282 +vmlinux simple_rename 0x3f6cabd9 +vmlinux simple_rmdir 0x569a5857 +vmlinux simple_statfs 0xc9d7add8 +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0x8021882a +vmlinux simple_transaction_get 0xd84838b7 +vmlinux simple_transaction_read 0xb4ca4aa2 +vmlinux simple_transaction_release 0x537a98a4 +vmlinux simple_unlink 0x0b7476ef +vmlinux single_open 0x22ea8218 +vmlinux single_release 0xecd6d0b0 +vmlinux sk_alloc 0xff6edafa +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0xbd80ca39 +vmlinux sk_common_release 0x4e5d398c +vmlinux sk_free 0x0a121a6f +vmlinux sk_reset_timer 0x446c7d3d +vmlinux sk_run_filter 0x92fe3fde +vmlinux sk_send_sigurg 0xd60b0843 +vmlinux sk_stop_timer 0x8f816356 +vmlinux sk_stream_error 0xe54f64d4 +vmlinux sk_stream_kill_queues 0xd6ea9482 +vmlinux sk_stream_mem_schedule 0x5d7d8589 +vmlinux sk_stream_rfree 0xa37b2c3e +vmlinux sk_stream_wait_close 0x0d6caae3 +vmlinux sk_stream_wait_connect 0x1d28d4a2 +vmlinux sk_stream_wait_memory 0x2bbdd94a +vmlinux sk_stream_write_space 0xac975229 +vmlinux sk_wait_data 0x500089bd +vmlinux skb_abort_seq_read 0xd7bb2ff5 +vmlinux skb_append 0xa0cc0ac8 +vmlinux skb_append_datato_frags 0xfc22219b +vmlinux skb_checksum 0xdcf69fba +vmlinux skb_checksum_help 0x0b64a129 +vmlinux skb_clone 0x6268ecd5 +vmlinux skb_clone_fraglist 0x32426853 +vmlinux skb_copy 0xa0dd5e6b +vmlinux skb_copy_and_csum_bits 0xba7c19b1 +vmlinux skb_copy_and_csum_datagram_iovec 0xbedbba99 +vmlinux skb_copy_and_csum_dev 0x8bde0624 +vmlinux skb_copy_bits 0x7ef2304b +vmlinux skb_copy_datagram_iovec 0x7c55354a +vmlinux skb_copy_expand 0x4a9581c4 +vmlinux skb_dequeue 0x0aba85f3 +vmlinux skb_dequeue_tail 0xf1269ac1 +vmlinux skb_find_text 0x4d394008 +vmlinux skb_free_datagram 0xe12e1ec7 +vmlinux skb_icv_walk 0x40bc6d4e +vmlinux skb_insert 0x904e30be +vmlinux skb_make_writable 0xd4ba3980 +vmlinux skb_over_panic 0x19ddfd6f +vmlinux skb_pad 0x47006c99 +vmlinux skb_prepare_seq_read 0x5057ab8f +vmlinux skb_queue_head 0x256f420a +vmlinux skb_queue_purge 0x44237fc9 +vmlinux skb_queue_tail 0xbe6e5767 +vmlinux skb_realloc_headroom 0x1c30f391 +vmlinux skb_recv_datagram 0xc71a5292 +vmlinux skb_seq_read 0xc9bb1d46 +vmlinux skb_split 0x132a0db2 +vmlinux skb_store_bits 0x2aeb3f82 +vmlinux skb_under_panic 0xb6c5d25b +vmlinux skb_unlink 0x54e2c426 +vmlinux sleep_on 0xa07a8d22 +vmlinux sleep_on_timeout 0x092b007a +vmlinux sn_bus_free_sysdata 0xd93cb8be +vmlinux sn_bus_store_sysdata 0x6b5c3a69 +vmlinux sn_coherency_id 0x171826ab +vmlinux sn_dma_alloc_coherent 0x4c8fabe3 +vmlinux sn_dma_flush 0x42bd091d +vmlinux sn_dma_free_coherent 0xfa97dec3 +vmlinux sn_dma_map_sg 0x4fa87b98 +vmlinux sn_dma_map_single 0x621ccf7c +vmlinux sn_dma_mapping_error 0xacae6d43 +vmlinux sn_dma_set_mask 0x225cf2de +vmlinux sn_dma_supported 0x444a7a4d +vmlinux sn_dma_sync_sg_for_cpu 0x122ec829 +vmlinux sn_dma_sync_sg_for_device 0xcb2cab47 +vmlinux sn_dma_sync_single_for_cpu 0x0d2fdfea +vmlinux sn_dma_sync_single_for_device 0xfd922d51 +vmlinux sn_dma_unmap_sg 0x0b8e06a9 +vmlinux sn_dma_unmap_single 0xfb0f053f +vmlinux sn_flush_all_caches 0xc29d5343 +vmlinux sn_hwperf_get_nearest_node 0xa1d2934d +vmlinux sn_io_addr 0xdc477230 +vmlinux sn_partition_id 0x8df01146 +vmlinux sn_partition_serial_number 0x9a61ea6d +vmlinux sn_pci_controller_fixup 0x98e9fdf2 +vmlinux sn_pci_fixup_slot 0x190fb3d9 +vmlinux sn_pci_unfixup_slot 0x4e11a68c +vmlinux sn_prom_feature_available 0xdb22ec6b +vmlinux sn_region_size 0x3b3be38d +vmlinux sn_rtc_cycles_per_second 0x8b966b63 +vmlinux sn_send_IPI_phys 0xac812950 +vmlinux sn_sharing_domain_size 0xcb32ae05 +vmlinux sn_system_serial_number_string 0x102b5b21 +vmlinux sn_system_size 0xd7907b0f +vmlinux snprintf 0xaf25400d +vmlinux sock_alloc_send_skb 0x24e55b29 +vmlinux sock_common_getsockopt 0x4a0cfe73 +vmlinux sock_common_recvmsg 0x6dde3c25 +vmlinux sock_common_setsockopt 0x687691ec +vmlinux sock_create 0xe3e1cb25 +vmlinux sock_create_kern 0x83aec391 +vmlinux sock_create_lite 0x77a3bbc1 +vmlinux sock_enable_timestamp 0x24076be4 +vmlinux sock_get_timestamp 0x96d3f551 +vmlinux sock_i_ino 0xefdce425 +vmlinux sock_i_uid 0x77ca7ba4 +vmlinux sock_init_data 0x5aea8767 +vmlinux sock_kfree_s 0x5fa120ff +vmlinux sock_kmalloc 0xa28440c9 +vmlinux sock_map_fd 0x5fa07234 +vmlinux sock_no_accept 0xb4d514e5 +vmlinux sock_no_bind 0x7e8f815a +vmlinux sock_no_connect 0x61599e15 +vmlinux sock_no_getname 0x4ef00194 +vmlinux sock_no_getsockopt 0x48cb93b1 +vmlinux sock_no_ioctl 0xd514a68a +vmlinux sock_no_listen 0xf72959af +vmlinux sock_no_mmap 0x72e8e45e +vmlinux sock_no_poll 0xb083012c +vmlinux sock_no_recvmsg 0x3a4b67b1 +vmlinux sock_no_sendmsg 0xa5fa143d +vmlinux sock_no_sendpage 0xab5b364a +vmlinux sock_no_setsockopt 0x9cf20d82 +vmlinux sock_no_shutdown 0x898ae5e3 +vmlinux sock_no_socketpair 0x10b87d6d +vmlinux sock_recvmsg 0x3b0af050 +vmlinux sock_register 0xec8a6b78 +vmlinux sock_release 0xacb02f0f +vmlinux sock_rfree 0x2ba7c4d8 +vmlinux sock_sendmsg 0xc0431f14 +vmlinux sock_setsockopt 0x9a513f7d +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0xf32a9168 +vmlinux sock_wfree 0xf2863acd +vmlinux sock_wmalloc 0x2299cba3 +vmlinux sockfd_lookup 0xc073e195 +vmlinux sort 0x9ca95a0e +vmlinux sound_class 0x87381323 +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux starget_for_each_device 0xd2daea3b +vmlinux start_tty 0x9534d056 +vmlinux steal_locks 0xd2ed8c7e +vmlinux stop_tty 0xc775a0a5 +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0xafe82e10 +vmlinux strlcat 0xb11fa1ce +vmlinux strlcpy 0x672144bd +vmlinux strlen 0xdcb5671d +vmlinux strncat 0x234509f3 +vmlinux strnchr 0x7242e96d +vmlinux strncmp 0x85abc85f +vmlinux strncpy 0x7ec9bfbc +vmlinux strnicmp 0x756e6992 +vmlinux strnlen 0xcc07af75 +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0x3fa913da +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0xa4ec393d +vmlinux submit_bh 0x94ce46bd +vmlinux submit_bio 0xadee8afa +vmlinux subsys_create_file 0x9cf8084c +vmlinux subsys_remove_file 0x57cc6332 +vmlinux subsystem_init 0x8c0839a6 +vmlinux subsystem_register 0x79e6b418 +vmlinux subsystem_unregister 0xd12b5ee4 +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0xa2c05720 +vmlinux swiotlb_alloc_coherent 0x42ddc02b +vmlinux swiotlb_dma_mapping_error 0x0da9776d +vmlinux swiotlb_dma_supported 0xda2c00dc +vmlinux swiotlb_free_coherent 0xa8413f84 +vmlinux swiotlb_init 0xc2ed2fce +vmlinux swiotlb_map_sg 0xd36fbc3d +vmlinux swiotlb_map_single 0x92436ef6 +vmlinux swiotlb_sync_sg_for_cpu 0xce5185b4 +vmlinux swiotlb_sync_sg_for_device 0xe55bd1a6 +vmlinux swiotlb_sync_single_for_cpu 0x4272d634 +vmlinux swiotlb_sync_single_for_device 0xf8b93ed4 +vmlinux swiotlb_sync_single_range_for_cpu 0xfeba8f4c +vmlinux swiotlb_sync_single_range_for_device 0x63bccb48 +vmlinux swiotlb_unmap_sg 0xe83a54d6 +vmlinux swiotlb_unmap_single 0xd0898729 +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0xbe7758f4 +vmlinux sync_dirty_buffer 0x672cdb66 +vmlinux sync_inode 0xf00bc372 +vmlinux sync_mapping_buffers 0xc59cf993 +vmlinux sync_page_range 0x715b9634 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xde76e7bc +vmlinux sys_ioctl 0x1b610907 +vmlinux sys_open 0x701039bd +vmlinux sys_read 0xd4e65327 +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0x05b14fd3 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0x4ca83d86 +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0xdd7ec4b1 +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0x8b513522 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0xfa462173 +vmlinux sysdev_class_unregister 0x0f8128fc +vmlinux sysdev_create_file 0xbc480a05 +vmlinux sysdev_driver_register 0xf27fd921 +vmlinux sysdev_driver_unregister 0x386a4841 +vmlinux sysdev_register 0xb6458ed0 +vmlinux sysdev_remove_file 0x0b17f911 +vmlinux sysdev_unregister 0xd80e8f62 +vmlinux sysfs_chmod_file 0xb37c0fa4 +vmlinux sysfs_create_bin_file 0x978c9e45 +vmlinux sysfs_create_dir 0x12b1a5ef +vmlinux sysfs_create_file 0x72ba8cf5 +vmlinux sysfs_create_group 0xb8c5ac66 +vmlinux sysfs_create_link 0x0e5a3f8d +vmlinux sysfs_remove_bin_file 0x0a0f2177 +vmlinux sysfs_remove_dir 0xdfe7f31f +vmlinux sysfs_remove_file 0xd3c0c94d +vmlinux sysfs_remove_group 0x39bf3f70 +vmlinux sysfs_remove_link 0x3241f24f +vmlinux sysfs_rename_dir 0x50154af3 +vmlinux sysfs_update_file 0x9cf0daf6 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0xb8b40df3 +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0x8faefbd5 +vmlinux task_nice 0x706db912 +vmlinux task_no_data_intr 0xa75a9855 +vmlinux tasklet_init 0x69575bcc +vmlinux tasklet_kill 0x74e05d8c +vmlinux tasklist_lock 0xd6edcf04 +vmlinux tc_classify 0xdbe99d72 +vmlinux tcf_em_register 0xc7113c70 +vmlinux tcf_em_tree_destroy 0x1818a812 +vmlinux tcf_em_tree_dump 0x74940a67 +vmlinux tcf_em_tree_validate 0x513d4566 +vmlinux tcf_em_unregister 0xa1ae6c5e +vmlinux tcf_exts_change 0xe18a0caf +vmlinux tcf_exts_destroy 0x7b881b32 +vmlinux tcf_exts_dump 0xc21c2733 +vmlinux tcf_exts_dump_stats 0xbf8d862c +vmlinux tcf_exts_validate 0xd2aec12b +vmlinux tcf_police 0x0a279518 +vmlinux tcf_police_destroy 0xc0fcdb01 +vmlinux tcf_police_dump 0xae4795c8 +vmlinux tcf_police_dump_stats 0xea9a96a9 +vmlinux tcf_police_hash 0xc81dc21b +vmlinux tcf_police_ht 0xe6da3c75 +vmlinux tcf_police_locate 0xcf588cb7 +vmlinux tcf_police_lookup 0x6bccd035 +vmlinux tcf_police_new_index 0x5ed742fd +vmlinux tcp_check_req 0xd415a75e +vmlinux tcp_child_process 0x51bf46b9 +vmlinux tcp_close 0x14ddbcfd +vmlinux tcp_connect 0xa5662358 +vmlinux tcp_create_openreq_child 0x5a589e17 +vmlinux tcp_death_row 0xcfd9ba41 +vmlinux tcp_disconnect 0xf18d88d4 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x6c9ebdf5 +vmlinux tcp_getsockopt 0x740f65d8 +vmlinux tcp_hashinfo 0x49b7d059 +vmlinux tcp_init_congestion_ops 0x3c18a635 +vmlinux tcp_init_xmit_timers 0x0abf2367 +vmlinux tcp_ioctl 0x80cfb915 +vmlinux tcp_make_synack 0xb24d4481 +vmlinux tcp_memory_allocated 0x6f4fc248 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0xef4bf493 +vmlinux tcp_parse_options 0xf37107ce +vmlinux tcp_poll 0x1dd39ba1 +vmlinux tcp_proc_register 0x26c145af +vmlinux tcp_proc_unregister 0x73a73b27 +vmlinux tcp_prot 0x45e67599 +vmlinux tcp_rcv_established 0x78d0efb7 +vmlinux tcp_rcv_state_process 0x476e165a +vmlinux tcp_read_sock 0xa85b2785 +vmlinux tcp_recvmsg 0x1465cdbf +vmlinux tcp_register_congestion_control 0xd4ffc40a +vmlinux tcp_reno_cong_avoid 0x3c3a96ff +vmlinux tcp_reno_min_cwnd 0xeb5ecc5f +vmlinux tcp_reno_ssthresh 0x8258e335 +vmlinux tcp_sendmsg 0x12d69823 +vmlinux tcp_sendpage 0x3184112e +vmlinux tcp_setsockopt 0x789bbd1e +vmlinux tcp_shutdown 0x3ef8ced0 +vmlinux tcp_simple_retransmit 0x3befd569 +vmlinux tcp_sockets_allocated 0x3947c486 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0x81e4bc90 +vmlinux tcp_timewait_state_process 0x7f3b57ce +vmlinux tcp_unhash 0xfd8d45df +vmlinux tcp_unregister_congestion_control 0x3550c0df +vmlinux tcp_v4_conn_request 0xf2402308 +vmlinux tcp_v4_connect 0xa87bdb43 +vmlinux tcp_v4_destroy_sock 0xe058586a +vmlinux tcp_v4_do_rcv 0xe68bb7f0 +vmlinux tcp_v4_remember_stamp 0xf1600ef8 +vmlinux tcp_v4_send_check 0x999e4497 +vmlinux tcp_v4_syn_recv_sock 0x9e14ed83 +vmlinux test_clear_page_dirty 0xbedb3ab4 +vmlinux test_set_page_writeback 0xb6b84371 +vmlinux textsearch_destroy 0x44efa5bb +vmlinux textsearch_find_continuous 0xb5fe96d0 +vmlinux textsearch_prepare 0x32ce2c88 +vmlinux textsearch_register 0x7daa9b85 +vmlinux textsearch_unregister 0xcae5e4ba +vmlinux thaw_bdev 0xad37d6f6 +vmlinux timespec_trunc 0xc045ad4e +vmlinux tioca_fastwrite_enable 0xced859b2 +vmlinux tioca_gart_found 0xad4cf1ca +vmlinux tioca_list 0x8716021f +vmlinux tiocx_bus_type 0x067ab85f +vmlinux tiocx_dma_addr 0xa049e49a +vmlinux tiocx_irq_alloc 0x600cd584 +vmlinux tiocx_irq_free 0xc3ecf245 +vmlinux tiocx_swin_base 0x883a0061 +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0x5006749c +vmlinux tr_type_trans 0x1a62bff7 +vmlinux transport_add_device 0x9a76ef16 +vmlinux transport_class_register 0xa4b40062 +vmlinux transport_class_unregister 0x690e342b +vmlinux transport_configure_device 0x6aa0291e +vmlinux transport_destroy_device 0x1e23b06c +vmlinux transport_remove_device 0xc4ad9685 +vmlinux transport_setup_device 0x37a10d71 +vmlinux truncate_inode_pages 0x0f136160 +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0x0e50ac81 +vmlinux try_to_release_page 0x344911a7 +vmlinux tty_check_change 0xc8b1f9bf +vmlinux tty_flip_buffer_push 0xa17b4eb7 +vmlinux tty_get_baud_rate 0xfeda6143 +vmlinux tty_hangup 0xe77450c5 +vmlinux tty_hung_up_p 0xcc8ea602 +vmlinux tty_ldisc_deref 0x77d78c45 +vmlinux tty_ldisc_flush 0x1ba5c8a2 +vmlinux tty_ldisc_get 0xe49d70ce +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x3c093a42 +vmlinux tty_ldisc_ref_wait 0x3cef33c7 +vmlinux tty_name 0xba1d30b0 +vmlinux tty_register_device 0xa64de1fa +vmlinux tty_register_driver 0x11b82702 +vmlinux tty_register_ldisc 0x9c54c5fa +vmlinux tty_set_operations 0xdd3a8972 +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0xef16768c +vmlinux tty_unregister_driver 0xf852625c +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0x1bfa259b +vmlinux tty_wait_until_sent 0x29b1df68 +vmlinux tty_wakeup 0x40db9244 +vmlinux uart_add_one_port 0x3df7873e +vmlinux uart_get_baud_rate 0xc733dabe +vmlinux uart_get_divisor 0x323aa120 +vmlinux uart_match_port 0x34a8908b +vmlinux uart_register_driver 0xe77bc9e7 +vmlinux uart_remove_one_port 0x2115795d +vmlinux uart_resume_port 0x71d5b75d +vmlinux uart_suspend_port 0x65a1faa8 +vmlinux uart_unregister_driver 0x3158b702 +vmlinux uart_update_timeout 0xa73e6f40 +vmlinux uart_write_wakeup 0xd75a0437 +vmlinux udelay 0xa39b4cf2 +vmlinux udp_disconnect 0xa4045c58 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0xabad83d7 +vmlinux udp_ioctl 0xf9b4bc03 +vmlinux udp_poll 0x3858a337 +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x1b78ae76 +vmlinux udp_proc_unregister 0x1530b3e7 +vmlinux udp_prot 0x585868c3 +vmlinux udp_sendmsg 0x45451520 +vmlinux uhci_check_and_reset_hc 0x5c0246f0 +vmlinux uhci_reset_hc 0xaa0d44ca +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux uncached_alloc_page 0x4bb9a7ee +vmlinux uncached_free_page 0x5f6b0c84 +vmlinux unload_nls 0xbe0dc049 +vmlinux unlock_buffer 0x6cf2b047 +vmlinux unlock_new_inode 0x77a22cd7 +vmlinux unlock_page 0x4c115766 +vmlinux unlock_rename 0x3908b5f1 +vmlinux unmap_mapping_range 0xfeb13f3f +vmlinux unmap_underlying_metadata 0xfdf080d8 +vmlinux unregister_8022_client 0x3418d5a8 +vmlinux unregister_acpi_bus_type 0x9f1ffa79 +vmlinux unregister_binfmt 0x204da300 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0xf9201b41 +vmlinux unregister_die_notifier 0x01a4ea6d +vmlinux unregister_exec_domain 0xb9903ddc +vmlinux unregister_filesystem 0xc8378e5d +vmlinux unregister_framebuffer 0xcea51803 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0x8277d570 +vmlinux unregister_netdevice 0xaedce213 +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0xe107bd1e +vmlinux unregister_qdisc 0xcb09ee5e +vmlinux unregister_quota_format 0xb208c277 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0x8ffde86f +vmlinux unregister_snap_client 0x32cdb935 +vmlinux unregister_sound_dsp 0xcd083b10 +vmlinux unregister_sound_midi 0xfdab6de3 +vmlinux unregister_sound_mixer 0x7afc9d8a +vmlinux unregister_sound_special 0x99c95fa5 +vmlinux unregister_sound_synth 0xdf03108a +vmlinux unregister_sysctl_table 0x2ee4b04c +vmlinux unregister_sysrq_key 0xd03b6b39 +vmlinux unregister_tcf_proto_ops 0xee6c7e27 +vmlinux unregister_timer_hook 0xe3e1f28b +vmlinux unregister_wlandev 0x05779aa6 +vmlinux unshare_files 0x04a20170 +vmlinux unw_access_ar 0xf62871a5 +vmlinux unw_access_br 0x2e1c6592 +vmlinux unw_access_fr 0x595f4c64 +vmlinux unw_access_gr 0xf5060848 +vmlinux unw_access_pr 0x4d16da2b +vmlinux unw_init_frame_info 0x0ecbf58b +vmlinux unw_init_from_blocked_task 0x1037cb94 +vmlinux unw_init_running 0x110f0dee +vmlinux unw_unwind 0x1e3a5368 +vmlinux unw_unwind_to_user 0x94ad0718 +vmlinux update_atime 0x5126457c +vmlinux update_region 0x70d454d2 +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0xf7249fea +vmlinux vc_cons 0xf27f1bba +vmlinux vc_resize 0xaf22ffca +vmlinux vesa_modes 0xdffc80fc +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0x16c06318 +vmlinux vfs_follow_link 0xffe00699 +vmlinux vfs_fstat 0x49afabd6 +vmlinux vfs_get_dqblk 0xe87efd14 +vmlinux vfs_get_dqinfo 0x05510687 +vmlinux vfs_getattr 0x1df0718a +vmlinux vfs_link 0xad309088 +vmlinux vfs_llseek 0x404eb9d4 +vmlinux vfs_lstat 0xfa7b025a +vmlinux vfs_mkdir 0xe2f95236 +vmlinux vfs_mknod 0xf2966aa7 +vmlinux vfs_permission 0x8c67b9d2 +vmlinux vfs_quota_off 0x4bf974bf +vmlinux vfs_quota_on 0x4c30d2f9 +vmlinux vfs_quota_on_mount 0x9f27b7c2 +vmlinux vfs_quota_sync 0x5b4dec57 +vmlinux vfs_read 0xcacb91fe +vmlinux vfs_readdir 0x774bac8f +vmlinux vfs_readlink 0xad48db21 +vmlinux vfs_readv 0xe14d313d +vmlinux vfs_rename 0x477841be +vmlinux vfs_rmdir 0x2cfa97f9 +vmlinux vfs_set_dqblk 0x2f00155e +vmlinux vfs_set_dqinfo 0xe6453964 +vmlinux vfs_stat 0xa90a7605 +vmlinux vfs_statfs 0xe4f2a7d3 +vmlinux vfs_symlink 0x1506176f +vmlinux vfs_unlink 0xbe39f53d +vmlinux vfs_write 0x16822c10 +vmlinux vfs_writev 0xd6912357 +vmlinux vga_console_membase 0x455fbbb2 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x29e829bb +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_end 0x2a5465cf +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0x673ab975 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0x16912c88 +vmlinux vmem_map 0xead20fa3 +vmlinux vmtruncate 0xe663f440 +vmlinux vprintk 0xdef29882 +vmlinux vscnprintf 0xf3522c9c +vmlinux vsnprintf 0x0e57f111 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0x25fa6f17 +vmlinux wait_for_completion_interruptible 0x891e32b8 +vmlinux wait_for_completion_interruptible_timeout 0x8d5642fc +vmlinux wait_for_completion_timeout 0x1fae7a0b +vmlinux wait_on_page_bit 0x83a5a4d5 +vmlinux wait_on_sync_kiocb 0xd8d38c82 +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0x37a6a644 +vmlinux wireless_send_event 0xfc04015a +vmlinux wireless_spy_update 0x03084b2c +vmlinux wlan_setup 0xa086ba3c +vmlinux wlan_unsetup 0x1b225340 +vmlinux write_inode_now 0xbdd9427a +vmlinux write_one_page 0x8a31b2db +vmlinux xfrm4_rcv 0x0db3400c +vmlinux xfrm_aalg_get_byid 0xa0fc38f1 +vmlinux xfrm_aalg_get_byidx 0x8e69ed47 +vmlinux xfrm_aalg_get_byname 0x4af7a738 +vmlinux xfrm_alloc_spi 0xd738453b +vmlinux xfrm_bundle_ok 0x043f35fb +vmlinux xfrm_calg_get_byid 0x8eacf171 +vmlinux xfrm_calg_get_byname 0x271286de +vmlinux xfrm_cfg_sem 0xa12f3c84 +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0xea280158 +vmlinux xfrm_dst_lookup 0x97a61501 +vmlinux xfrm_ealg_get_byid 0xfc5dabf1 +vmlinux xfrm_ealg_get_byidx 0xffe3f76d +vmlinux xfrm_ealg_get_byname 0x913de4f4 +vmlinux xfrm_find_acq 0x28a79b82 +vmlinux xfrm_find_acq_byseq 0xf96b2706 +vmlinux xfrm_get_acqseq 0xb01bebf9 +vmlinux xfrm_init_pmtu 0x8f099bde +vmlinux xfrm_init_state 0x86a93250 +vmlinux xfrm_lookup 0xf72e775c +vmlinux xfrm_parse_spi 0x39f52cee +vmlinux xfrm_policy_alloc 0x5ed31478 +vmlinux xfrm_policy_byid 0x4a8d6129 +vmlinux xfrm_policy_bysel 0x7cdeaf5d +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x0d9be9eb +vmlinux xfrm_policy_list 0x69b31028 +vmlinux xfrm_policy_register_afinfo 0x4f15e671 +vmlinux xfrm_policy_unregister_afinfo 0x11854ed1 +vmlinux xfrm_policy_walk 0xfe3e0d30 +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0xe578885f +vmlinux xfrm_register_type 0xdbb1e4a8 +vmlinux xfrm_replay_advance 0xfc8cc1eb +vmlinux xfrm_replay_check 0x2c6faec1 +vmlinux xfrm_state_add 0xa5cb9f86 +vmlinux xfrm_state_alloc 0x1a96e7ec +vmlinux xfrm_state_check 0xa5aad806 +vmlinux xfrm_state_check_expire 0xad49b5f6 +vmlinux xfrm_state_delete 0xd1570d7e +vmlinux xfrm_state_delete_tunnel 0x16dd67c3 +vmlinux xfrm_state_flush 0x4d093dfa +vmlinux xfrm_state_insert 0xc4b935c8 +vmlinux xfrm_state_lookup 0x14be5cfc +vmlinux xfrm_state_mtu 0x08ca16a3 +vmlinux xfrm_state_register_afinfo 0x777b383b +vmlinux xfrm_state_unregister_afinfo 0x5e015fc7 +vmlinux xfrm_state_update 0x0c8031fe +vmlinux xfrm_state_walk 0x98e2a487 +vmlinux xfrm_unregister_km 0xf7d98f62 +vmlinux xfrm_unregister_type 0x7c5aa755 +vmlinux xfrm_user_policy 0x76973d1b +vmlinux xor_ia64_2 0xeeb8a24c +vmlinux xor_ia64_3 0x2f367d8c +vmlinux xor_ia64_4 0x060d680f +vmlinux xor_ia64_5 0xc783b7cf +vmlinux xrlim_allow 0x7a2f6e4e +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xf448c4e8 +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x47ac8104 +vmlinux zero_page_memmap_ptr 0x2fd283e7 +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0x1b839779 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/ia64/itanium +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/ia64/itanium @@ -0,0 +1,5290 @@ +arch/ia64/sn/kernel/xp xp_nofault_PIOR 0x7c3462de +arch/ia64/sn/kernel/xp xp_nofault_PIOR_target 0xa2083314 +arch/ia64/sn/kernel/xp xpc_clear_interface 0x39046c7a +arch/ia64/sn/kernel/xp xpc_connect 0xc091f7cd +arch/ia64/sn/kernel/xp xpc_disconnect 0x345c9217 +arch/ia64/sn/kernel/xp xpc_interface 0xd68368ee +arch/ia64/sn/kernel/xp xpc_registrations 0x5286c25f +arch/ia64/sn/kernel/xp xpc_set_interface 0x7c6b194b +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0xd97119fe +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0xf1becd7b +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0x8fd87408 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xfdd59660 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/acpi/processor acpi_processor_notify_smm 0x9d345eb2 +drivers/acpi/processor acpi_processor_register_performance 0xc18341bc +drivers/acpi/processor acpi_processor_set_thermal_limit 0xe8a3605f +drivers/acpi/processor acpi_processor_unregister_performance 0xc7c5a4ed +drivers/block/loop loop_register_transfer 0x751ac60f +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0xc6fef1ac +drivers/block/paride/paride pi_disconnect 0xaa6cb725 +drivers/block/paride/paride pi_do_claimed 0x44508ada +drivers/block/paride/paride pi_init 0x502cc76b +drivers/block/paride/paride pi_read_block 0x33dcd36d +drivers/block/paride/paride pi_read_regr 0xc2042ae1 +drivers/block/paride/paride pi_register 0xd8eadd41 +drivers/block/paride/paride pi_release 0x1a3b8245 +drivers/block/paride/paride pi_schedule_claimed 0xe934cd22 +drivers/block/paride/paride pi_unregister 0xee17d82c +drivers/block/paride/paride pi_write_block 0x329ff6f6 +drivers/block/paride/paride pi_write_regr 0xb155f99c +drivers/cdrom/cdrom cdrom_get_last_written 0x50f48bf6 +drivers/cdrom/cdrom cdrom_get_media_event 0x0b3e137f +drivers/cdrom/cdrom cdrom_ioctl 0x984aa40f +drivers/cdrom/cdrom cdrom_media_changed 0x3dd92b7a +drivers/cdrom/cdrom cdrom_mode_select 0xd9b202d0 +drivers/cdrom/cdrom cdrom_mode_sense 0xb87886f3 +drivers/cdrom/cdrom cdrom_number_of_slots 0xab58c379 +drivers/cdrom/cdrom cdrom_open 0xeaa03c03 +drivers/cdrom/cdrom cdrom_release 0x5f871051 +drivers/cdrom/cdrom init_cdrom_command 0x4f476e96 +drivers/cdrom/cdrom register_cdrom 0x9f215951 +drivers/cdrom/cdrom unregister_cdrom 0xb44f9a0d +drivers/char/agp/agpgart agp3_generic_cleanup 0xc2424641 +drivers/char/agp/agpgart agp3_generic_configure 0x4b085dbf +drivers/char/agp/agpgart agp3_generic_fetch_size 0xde9b17ed +drivers/char/agp/agpgart agp3_generic_sizes 0xb48f27c2 +drivers/char/agp/agpgart agp3_generic_tlbflush 0xbcb5465e +drivers/char/agp/agpgart agp_add_bridge 0x353b5995 +drivers/char/agp/agpgart agp_alloc_bridge 0x1af656a5 +drivers/char/agp/agpgart agp_allocate_memory 0x29c3d969 +drivers/char/agp/agpgart agp_backend_acquire 0x9e8640ce +drivers/char/agp/agpgart agp_backend_release 0x79fedccc +drivers/char/agp/agpgart agp_bind_memory 0x80a6e2b3 +drivers/char/agp/agpgart agp_bridge 0xb0f9ff05 +drivers/char/agp/agpgart agp_bridges 0x673f815e +drivers/char/agp/agpgart agp_collect_device_status 0xeae0790c +drivers/char/agp/agpgart agp_copy_info 0x11f43539 +drivers/char/agp/agpgart agp_create_memory 0x351b0381 +drivers/char/agp/agpgart agp_device_command 0xa57d8d70 +drivers/char/agp/agpgart agp_enable 0x55d2f38a +drivers/char/agp/agpgart agp_find_bridge 0x7251803a +drivers/char/agp/agpgart agp_free_key 0xd0fef3b2 +drivers/char/agp/agpgart agp_free_memory 0x93c8b8e1 +drivers/char/agp/agpgart agp_generic_alloc_by_type 0x38ee77c6 +drivers/char/agp/agpgart agp_generic_alloc_page 0xf84f922c +drivers/char/agp/agpgart agp_generic_create_gatt_table 0x00ac8032 +drivers/char/agp/agpgart agp_generic_destroy_page 0xbba27749 +drivers/char/agp/agpgart agp_generic_enable 0x7f702176 +drivers/char/agp/agpgart agp_generic_free_by_type 0xf8f47597 +drivers/char/agp/agpgart agp_generic_free_gatt_table 0x78ace632 +drivers/char/agp/agpgart agp_generic_insert_memory 0xd41f4f78 +drivers/char/agp/agpgart agp_generic_mask_memory 0x24d49598 +drivers/char/agp/agpgart agp_generic_remove_memory 0xf107a78e +drivers/char/agp/agpgart agp_memory_reserved 0xe089cfcc +drivers/char/agp/agpgart agp_num_entries 0xd6feefa5 +drivers/char/agp/agpgart agp_off 0x7538b132 +drivers/char/agp/agpgart agp_put_bridge 0x1dd7a526 +drivers/char/agp/agpgart agp_remove_bridge 0xc9bf0e34 +drivers/char/agp/agpgart agp_try_unsupported_boot 0xc5d9c46c +drivers/char/agp/agpgart agp_unbind_memory 0x86af6908 +drivers/char/agp/agpgart get_agp_version 0x00ad8712 +drivers/char/agp/agpgart global_cache_flush 0xa4d4f0e6 +drivers/char/drm/drm drm_addbufs_agp 0x10648507 +drivers/char/drm/drm drm_addbufs_fb 0x86dae0d0 +drivers/char/drm/drm drm_addbufs_pci 0x7757e62c +drivers/char/drm/drm drm_addmap 0x7131d8ec +drivers/char/drm/drm drm_agp_acquire 0xf8277aa8 +drivers/char/drm/drm drm_agp_alloc 0x1f063606 +drivers/char/drm/drm drm_agp_bind 0x98c4f301 +drivers/char/drm/drm drm_agp_bind_memory 0xa9f33241 +drivers/char/drm/drm drm_agp_enable 0x6fad2b84 +drivers/char/drm/drm drm_agp_free 0xcdaeefd2 +drivers/char/drm/drm drm_agp_info 0xd771d9d2 +drivers/char/drm/drm drm_agp_release 0x4dfbf275 +drivers/char/drm/drm drm_agp_unbind 0xa0c291ab +drivers/char/drm/drm drm_ati_pcigart_cleanup 0xcda7a6ea +drivers/char/drm/drm drm_ati_pcigart_init 0x136c391f +drivers/char/drm/drm drm_compat_ioctl 0xd24ec57f +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0xd1040044 +drivers/char/drm/drm drm_core_reclaim_buffers 0x9ed67f5f +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0x3fdad76b +drivers/char/drm/drm drm_fasync 0xbfca1975 +drivers/char/drm/drm drm_get_dev 0x3bfa9318 +drivers/char/drm/drm drm_get_resource_len 0x5636c5e5 +drivers/char/drm/drm drm_get_resource_start 0x2232cb8e +drivers/char/drm/drm drm_init 0x814b54ab +drivers/char/drm/drm drm_ioctl 0x73f1ed34 +drivers/char/drm/drm drm_irq_uninstall 0x8da709bc +drivers/char/drm/drm drm_mmap 0x667bbe91 +drivers/char/drm/drm drm_open 0xabf7233b +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0x52359cf3 +drivers/char/drm/drm drm_pci_free 0xcef88c60 +drivers/char/drm/drm drm_poll 0x9e9e0dab +drivers/char/drm/drm drm_release 0xbfae98eb +drivers/char/drm/drm drm_rmmap 0x4f55986b +drivers/char/drm/drm drm_rmmap_locked 0x35cb3eec +drivers/char/drm/drm drm_vbl_send_signals 0xe2cf59e3 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0x0efed808 +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0x022b85fd +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0x6c39f1bb +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0x6ece00f8 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0xff9059fe +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0xd27cdc54 +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0xa1157e6d +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0xa4f3c379 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0x558cee71 +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x30e5842a +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0xda63122d +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0x8cc2f9e2 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0xc61eca8a +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0x5040d5be +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0x1c084596 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0x0200ec84 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0xb8164d80 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0xe1675134 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0x555d01bb +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0x31f501e2 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0x1ab60097 +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0x9c22f22c +drivers/char/tpm/tpm tpm_open 0xb2c9de77 +drivers/char/tpm/tpm tpm_pm_resume 0x714d81ae +drivers/char/tpm/tpm tpm_pm_suspend 0x0d1a46c4 +drivers/char/tpm/tpm tpm_read 0x4a516c72 +drivers/char/tpm/tpm tpm_register_hardware 0x42bb5ffc +drivers/char/tpm/tpm tpm_release 0xa56bc737 +drivers/char/tpm/tpm tpm_remove_hardware 0x4eb50272 +drivers/char/tpm/tpm tpm_show_caps 0xf2ab7e1d +drivers/char/tpm/tpm tpm_show_pcrs 0xab584be4 +drivers/char/tpm/tpm tpm_show_pubek 0x7dd311b7 +drivers/char/tpm/tpm tpm_store_cancel 0x91aa2818 +drivers/char/tpm/tpm tpm_write 0x9d059acc +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0x969b8068 +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0xf9d6aaa5 +drivers/cpufreq/freq_table cpufreq_freq_attr_scaling_available_freqs 0x31a6dc45 +drivers/cpufreq/freq_table cpufreq_frequency_get_table 0x2f47d8c7 +drivers/cpufreq/freq_table cpufreq_frequency_table_cpuinfo 0x923ff117 +drivers/cpufreq/freq_table cpufreq_frequency_table_get_attr 0x706b3a33 +drivers/cpufreq/freq_table cpufreq_frequency_table_put_attr 0x7ae1ae8e +drivers/cpufreq/freq_table cpufreq_frequency_table_target 0xe1fe88cf +drivers/cpufreq/freq_table cpufreq_frequency_table_verify 0xf54d49fd +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-bit i2c_bit_add_bus 0xbc74dc70 +drivers/i2c/algos/i2c-algo-bit i2c_bit_del_bus 0x0c27eb14 +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0xdd2ac910 +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0x6d79fe74 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0x2d78d79d +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0x9d2be0f9 +drivers/i2c/busses/i2c-amd756 amd756_smbus 0xf315b331 +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0xa3ea466c +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0x1ac6fd93 +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/i2c/i2c-core i2c_adapter_class 0x8b70a063 +drivers/i2c/i2c-core i2c_adapter_dev_release 0x02176402 +drivers/i2c/i2c-core i2c_adapter_driver 0xddb2b5a4 +drivers/i2c/i2c-core i2c_add_adapter 0xd1367a2e +drivers/i2c/i2c-core i2c_add_driver 0x53681cd9 +drivers/i2c/i2c-core i2c_attach_client 0xcf5e5d68 +drivers/i2c/i2c-core i2c_bus_type 0x6e2858ed +drivers/i2c/i2c-core i2c_check_addr 0x481d397f +drivers/i2c/i2c-core i2c_clients_command 0xd8fa7ded +drivers/i2c/i2c-core i2c_control 0x2b441f96 +drivers/i2c/i2c-core i2c_del_adapter 0x8c5bae2b +drivers/i2c/i2c-core i2c_del_driver 0x9c38f51e +drivers/i2c/i2c-core i2c_detach_client 0x4dcf280b +drivers/i2c/i2c-core i2c_get_adapter 0x0c02a39e +drivers/i2c/i2c-core i2c_master_recv 0x84e4dd50 +drivers/i2c/i2c-core i2c_master_send 0x4deb7152 +drivers/i2c/i2c-core i2c_probe 0x50a9e390 +drivers/i2c/i2c-core i2c_put_adapter 0x7360cf2a +drivers/i2c/i2c-core i2c_release_client 0x88322c65 +drivers/i2c/i2c-core i2c_smbus_read_byte 0x92e5115e +drivers/i2c/i2c-core i2c_smbus_read_byte_data 0xa573d06b +drivers/i2c/i2c-core i2c_smbus_read_i2c_block_data 0x89d28757 +drivers/i2c/i2c-core i2c_smbus_read_word_data 0x1214fab2 +drivers/i2c/i2c-core i2c_smbus_write_block_data 0x839d14bf +drivers/i2c/i2c-core i2c_smbus_write_byte 0x848e20f8 +drivers/i2c/i2c-core i2c_smbus_write_byte_data 0x57fd0558 +drivers/i2c/i2c-core i2c_smbus_write_quick 0xf99d3e64 +drivers/i2c/i2c-core i2c_smbus_write_word_data 0xf25a5c1f +drivers/i2c/i2c-core i2c_smbus_xfer 0x4e848f36 +drivers/i2c/i2c-core i2c_transfer 0xaf7e45d8 +drivers/i2c/i2c-core i2c_use_client 0xd28ac228 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0xdd3d903c +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x07d47ac9 +drivers/ieee1394/ieee1394 csr1212_read 0xbde3eb37 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x3856321a +drivers/ieee1394/ieee1394 dma_prog_region_free 0x5465a81b +drivers/ieee1394/ieee1394 dma_prog_region_init 0x8c4242e7 +drivers/ieee1394/ieee1394 dma_region_alloc 0x15475084 +drivers/ieee1394/ieee1394 dma_region_free 0xca59ba22 +drivers/ieee1394/ieee1394 dma_region_init 0x8021712d +drivers/ieee1394/ieee1394 dma_region_mmap 0x4c394de8 +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0x723d33da +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0xd7c13526 +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x51be9954 +drivers/ieee1394/ieee1394 highlevel_host_reset 0x09b208af +drivers/ieee1394/ieee1394 hpsb_add_host 0x5d138961 +drivers/ieee1394/ieee1394 hpsb_alloc_host 0xe0994186 +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0xe9a38018 +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0x75066eeb +drivers/ieee1394/ieee1394 hpsb_bus_reset 0xda60a864 +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0x7859d74c +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0x8d3d0a9a +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0x6f37c7f6 +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0xc9f5ea2a +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0x738e0931 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0x891b0e8f +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0xbc65b4de +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0xb84cfae2 +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0xc78bd49f +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0x5abce1a2 +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0xba88a46e +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0x385762dd +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0xf855490d +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0x93d85fd1 +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0xdc501663 +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0x07e0f0fc +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0x6d3bbdfc +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0xdb584780 +drivers/ieee1394/ieee1394 hpsb_iso_stop 0x6f53f8cd +drivers/ieee1394/ieee1394 hpsb_iso_wake 0xbfd97be6 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x4f834dcf +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0xce05865a +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0xac0cb96d +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0x0e2ad4ea +drivers/ieee1394/ieee1394 hpsb_listen_channel 0xcf633ecc +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0x9dddd545 +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0x3686f154 +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0xf05d6de1 +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0xa1677920 +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0x54d0ae24 +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0x20ac80d1 +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0x0251ff3b +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0xa0b148a7 +drivers/ieee1394/ieee1394 hpsb_node_write 0x28d85ea1 +drivers/ieee1394/ieee1394 hpsb_packet_received 0x533d1ed4 +drivers/ieee1394/ieee1394 hpsb_packet_sent 0x465aa16c +drivers/ieee1394/ieee1394 hpsb_packet_success 0x3aa8f6a6 +drivers/ieee1394/ieee1394 hpsb_protocol_class 0x7d39f2dc +drivers/ieee1394/ieee1394 hpsb_read 0x1a1075b8 +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0x543e38ff +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0xe831718a +drivers/ieee1394/ieee1394 hpsb_register_protocol 0xacedd730 +drivers/ieee1394/ieee1394 hpsb_remove_host 0xb245b476 +drivers/ieee1394/ieee1394 hpsb_reset_bus 0x2ae2a063 +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0xd20050a1 +drivers/ieee1394/ieee1394 hpsb_selfid_received 0x6db44768 +drivers/ieee1394/ieee1394 hpsb_send_packet 0x9249143b +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0xd557ff04 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0x1d41f821 +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0xe330c2c7 +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0x521d59ef +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0x64fc8834 +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0x43531543 +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0xf850dd3b +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0xbe3e79f5 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0xd0075406 +drivers/ieee1394/ieee1394 hpsb_write 0x74ad873f +drivers/ieee1394/ieee1394 ieee1394_bus_type 0x429a4420 +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0xa7deb82c +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0x18f455ec +drivers/ieee1394/ohci1394 ohci1394_stop_context 0xd4f99a82 +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0x4cc65b98 +drivers/infiniband/core/ib_cm ib_cm_establish 0x6271ed8f +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0xaf25067a +drivers/infiniband/core/ib_cm ib_cm_listen 0x8db5e748 +drivers/infiniband/core/ib_cm ib_create_cm_id 0xf5183837 +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0x51d60baf +drivers/infiniband/core/ib_cm ib_send_cm_apr 0xb1fa5969 +drivers/infiniband/core/ib_cm ib_send_cm_drep 0x285c2770 +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0xdeee290f +drivers/infiniband/core/ib_cm ib_send_cm_lap 0x9dcee7ff +drivers/infiniband/core/ib_cm ib_send_cm_mra 0xdfea8bc8 +drivers/infiniband/core/ib_cm ib_send_cm_rej 0x202bc35c +drivers/infiniband/core/ib_cm ib_send_cm_rep 0xce1a5c4b +drivers/infiniband/core/ib_cm ib_send_cm_req 0xf13e17d7 +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0xb808dc5e +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0x64b1a685 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0x7d5e7c01 +drivers/infiniband/core/ib_core ib_alloc_device 0x140cf3c9 +drivers/infiniband/core/ib_core ib_alloc_fmr 0x3cac8f3b +drivers/infiniband/core/ib_core ib_alloc_mw 0xd0a38601 +drivers/infiniband/core/ib_core ib_alloc_pd 0xf4a12fc4 +drivers/infiniband/core/ib_core ib_attach_mcast 0xc9cddfb8 +drivers/infiniband/core/ib_core ib_create_ah 0x06bd7f52 +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0x5908c3f1 +drivers/infiniband/core/ib_core ib_create_cq 0xc554a533 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0x67ce9022 +drivers/infiniband/core/ib_core ib_create_qp 0x7785f71f +drivers/infiniband/core/ib_core ib_create_srq 0x3855d2c5 +drivers/infiniband/core/ib_core ib_dealloc_device 0x07bc38f9 +drivers/infiniband/core/ib_core ib_dealloc_fmr 0x83fc8ef7 +drivers/infiniband/core/ib_core ib_dealloc_mw 0x5efcf722 +drivers/infiniband/core/ib_core ib_dealloc_pd 0x6ceb7bad +drivers/infiniband/core/ib_core ib_dereg_mr 0x0b80bb33 +drivers/infiniband/core/ib_core ib_destroy_ah 0x620161b8 +drivers/infiniband/core/ib_core ib_destroy_cq 0x379a0654 +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x7683bcb0 +drivers/infiniband/core/ib_core ib_destroy_qp 0xb8513624 +drivers/infiniband/core/ib_core ib_destroy_srq 0x024644be +drivers/infiniband/core/ib_core ib_detach_mcast 0x71764286 +drivers/infiniband/core/ib_core ib_dispatch_event 0xea937841 +drivers/infiniband/core/ib_core ib_find_cached_gid 0x2c6afd6e +drivers/infiniband/core/ib_core ib_find_cached_pkey 0x4bb25e95 +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0x4d51148d +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0xfba7b00d +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0xbcd6e622 +drivers/infiniband/core/ib_core ib_get_cached_gid 0x945bb9b9 +drivers/infiniband/core/ib_core ib_get_cached_pkey 0xa250568b +drivers/infiniband/core/ib_core ib_get_client_data 0x02ce5894 +drivers/infiniband/core/ib_core ib_get_dma_mr 0x0d662d71 +drivers/infiniband/core/ib_core ib_modify_ah 0x560ce52e +drivers/infiniband/core/ib_core ib_modify_device 0x37c8d9bd +drivers/infiniband/core/ib_core ib_modify_port 0x0bdc74fb +drivers/infiniband/core/ib_core ib_modify_qp 0x0b5abc46 +drivers/infiniband/core/ib_core ib_modify_srq 0x51ea8437 +drivers/infiniband/core/ib_core ib_pack 0x06830b9a +drivers/infiniband/core/ib_core ib_query_ah 0x2724b228 +drivers/infiniband/core/ib_core ib_query_device 0xb05f5de9 +drivers/infiniband/core/ib_core ib_query_gid 0x1f8a57e6 +drivers/infiniband/core/ib_core ib_query_mr 0xf871a96e +drivers/infiniband/core/ib_core ib_query_pkey 0xe77960ec +drivers/infiniband/core/ib_core ib_query_port 0x991d64db +drivers/infiniband/core/ib_core ib_query_qp 0xf6f5befc +drivers/infiniband/core/ib_core ib_query_srq 0x008122d7 +drivers/infiniband/core/ib_core ib_reg_phys_mr 0xa77826db +drivers/infiniband/core/ib_core ib_register_client 0x9fb85775 +drivers/infiniband/core/ib_core ib_register_device 0xadc05f95 +drivers/infiniband/core/ib_core ib_register_event_handler 0x28611095 +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x1f15844f +drivers/infiniband/core/ib_core ib_resize_cq 0xb842192c +drivers/infiniband/core/ib_core ib_set_client_data 0xb557c3ee +drivers/infiniband/core/ib_core ib_ud_header_init 0x0632beb8 +drivers/infiniband/core/ib_core ib_ud_header_pack 0x82ddf2e5 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0xa192ed99 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xf96fc9de +drivers/infiniband/core/ib_core ib_unregister_client 0xa36db881 +drivers/infiniband/core/ib_core ib_unregister_device 0x4f2338b2 +drivers/infiniband/core/ib_core ib_unregister_event_handler 0x574f956f +drivers/infiniband/core/ib_mad ib_cancel_mad 0xeec3588d +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x629e035b +drivers/infiniband/core/ib_mad ib_create_send_mad 0x1d6520d7 +drivers/infiniband/core/ib_mad ib_free_recv_mad 0x30669027 +drivers/infiniband/core/ib_mad ib_free_send_mad 0x8ca4cdb6 +drivers/infiniband/core/ib_mad ib_modify_mad 0xf57c8435 +drivers/infiniband/core/ib_mad ib_post_send_mad 0x87eee307 +drivers/infiniband/core/ib_mad ib_process_mad_wc 0x71fdd622 +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x32c71c20 +drivers/infiniband/core/ib_mad ib_register_mad_agent 0x2512e00b +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0xb0eebe86 +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0x75a548df +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0xf0691f4f +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0x8c15cf8e +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0x8d0f2d5c +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0xdd525633 +drivers/input/gameport/gameport __gameport_register_driver 0x97e29e93 +drivers/input/gameport/gameport __gameport_register_port 0xd6f9786e +drivers/input/gameport/gameport gameport_close 0xfa4d5199 +drivers/input/gameport/gameport gameport_cooked_read 0x153465bc +drivers/input/gameport/gameport gameport_open 0xf65f1a7d +drivers/input/gameport/gameport gameport_rescan 0x383b0adf +drivers/input/gameport/gameport gameport_set_name 0x9caef133 +drivers/input/gameport/gameport gameport_set_phys 0xbe9be93c +drivers/input/gameport/gameport gameport_start_polling 0xf23e7e98 +drivers/input/gameport/gameport gameport_stop_polling 0xda5fad44 +drivers/input/gameport/gameport gameport_unregister_driver 0xf0b15e04 +drivers/input/gameport/gameport gameport_unregister_port 0xb2f87628 +drivers/md/dm-mirror dm_create_dirty_log 0xd5c733ce +drivers/md/dm-mirror dm_destroy_dirty_log 0xc5c0db42 +drivers/md/dm-mirror dm_register_dirty_log_type 0x28f0f977 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x58bfc819 +drivers/md/dm-mod dm_get_device 0x6a51b0ca +drivers/md/dm-mod dm_get_mapinfo 0x8d7b5bfa +drivers/md/dm-mod dm_io_async 0x6ce537dd +drivers/md/dm-mod dm_io_async_bvec 0x222c2957 +drivers/md/dm-mod dm_io_async_vm 0x340946b4 +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0x28e86599 +drivers/md/dm-mod dm_io_sync_bvec 0x2e809f79 +drivers/md/dm-mod dm_io_sync_vm 0x46f130aa +drivers/md/dm-mod dm_put_device 0x9ee3e90a +drivers/md/dm-mod dm_register_target 0xf35bd749 +drivers/md/dm-mod dm_table_event 0xbb6f7e04 +drivers/md/dm-mod dm_table_flush_all 0x483e3c25 +drivers/md/dm-mod dm_table_get 0x15d29634 +drivers/md/dm-mod dm_table_get_mode 0x2bc7e630 +drivers/md/dm-mod dm_table_get_size 0xcdc86a02 +drivers/md/dm-mod dm_table_put 0x993811a3 +drivers/md/dm-mod dm_table_unplug_all 0x97e37c64 +drivers/md/dm-mod dm_unregister_target 0xbaab9f01 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x3cbfeacf +drivers/md/dm-mod kcopyd_client_create 0x032bcdb4 +drivers/md/dm-mod kcopyd_client_destroy 0xdcb4a1ee +drivers/md/dm-mod kcopyd_copy 0x8b3fab2c +drivers/md/dm-multipath dm_pg_init_complete 0xadfea691 +drivers/md/dm-multipath dm_register_hw_handler 0x66864cb8 +drivers/md/dm-multipath dm_register_path_selector 0xdd8d7da2 +drivers/md/dm-multipath dm_scsi_err_handler 0x4e27cd3f +drivers/md/dm-multipath dm_unregister_hw_handler 0x36188d08 +drivers/md/dm-multipath dm_unregister_path_selector 0xb4be04be +drivers/md/md-mod bitmap_close_sync 0xf346b487 +drivers/md/md-mod bitmap_daemon_work 0x76fc9700 +drivers/md/md-mod bitmap_end_sync 0x5f2aa7c1 +drivers/md/md-mod bitmap_endwrite 0xbc23727a +drivers/md/md-mod bitmap_start_sync 0xb4d1c49d +drivers/md/md-mod bitmap_startwrite 0x2d91ed84 +drivers/md/md-mod bitmap_unplug 0x6051899f +drivers/md/md-mod md_check_recovery 0x6df9796f +drivers/md/md-mod md_done_sync 0xc4916c0c +drivers/md/md-mod md_error 0x8039cd84 +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x9fd1a58d +drivers/md/md-mod md_unregister_thread 0x4b842084 +drivers/md/md-mod md_wakeup_thread 0x26f85e3a +drivers/md/md-mod md_write_end 0x309dc2b3 +drivers/md/md-mod md_write_start 0xc602e92a +drivers/md/md-mod register_md_personality 0xfa5ad806 +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x95d28726 +drivers/media/common/ir-common ir_codes_hauppauge_new 0xa3dc60f8 +drivers/media/common/ir-common ir_codes_pinnacle 0x4fa2b03e +drivers/media/common/ir-common ir_codes_pixelview 0x43eda01a +drivers/media/common/ir-common ir_codes_rc5_tv 0x44c715df +drivers/media/common/ir-common ir_codes_winfast 0x828ace4d +drivers/media/common/ir-common ir_decode_biphase 0x953031a2 +drivers/media/common/ir-common ir_decode_pulsedistance 0x5e6fea37 +drivers/media/common/ir-common ir_dump_samples 0x6896a5f6 +drivers/media/common/ir-common ir_extract_bits 0xe9f08798 +drivers/media/common/ir-common ir_input_init 0x56236dcb +drivers/media/common/ir-common ir_input_keydown 0xdf02cfa3 +drivers/media/common/ir-common ir_input_nokey 0x18b31f21 +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x541aa1ac +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0x24b8bbe5 +drivers/media/common/saa7146 saa7146_i2c_transfer 0x17da4b4a +drivers/media/common/saa7146 saa7146_pgtable_alloc 0x1fb1f926 +drivers/media/common/saa7146 saa7146_pgtable_build_single 0x19009a73 +drivers/media/common/saa7146 saa7146_pgtable_free 0xbc2931e0 +drivers/media/common/saa7146 saa7146_register_extension 0x88516b47 +drivers/media/common/saa7146 saa7146_setgpio 0xd4bc1a8a +drivers/media/common/saa7146 saa7146_unregister_extension 0xaa1fb01d +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0x3d118eb5 +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0x8b297049 +drivers/media/common/saa7146_vv saa7146_register_device 0x11e11b5e +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0x3bb17b1c +drivers/media/common/saa7146_vv saa7146_start_preview 0xce1ae044 +drivers/media/common/saa7146_vv saa7146_stop_preview 0x6fe7e3a8 +drivers/media/common/saa7146_vv saa7146_unregister_device 0x5f22d21c +drivers/media/common/saa7146_vv saa7146_vv_init 0xf29ad0f7 +drivers/media/common/saa7146_vv saa7146_vv_release 0xd30dba7e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0x5105a6b7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0x944be830 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0x08c09f7f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0xddbfee7b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0x77f4e42a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0xc4871792 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0xda2ea89c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0x4c071fa2 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0x538a5f50 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0xe28e3e26 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0x040edc16 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0x533df6f7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0x9726fc01 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0x5b91a79b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0x92e79cb2 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0xfbc25336 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0xa29917b1 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0x68ba12c5 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0x7627e683 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0x802e9e2b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0xf512922f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0xad8edef0 +drivers/media/dvb/bt8xx/bt878 bt878 0x5452a750 +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0xc292fdaf +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0xcd02576b +drivers/media/dvb/bt8xx/bt878 bt878_stop 0x730f8ec8 +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0x2c1040d3 +drivers/media/dvb/bt8xx/dst dst_check_sum 0x43a983fd +drivers/media/dvb/bt8xx/dst dst_comm_init 0xfb0f76b6 +drivers/media/dvb/bt8xx/dst dst_command 0xb73aa7d9 +drivers/media/dvb/bt8xx/dst dst_error_bailout 0xba445b69 +drivers/media/dvb/bt8xx/dst dst_error_recovery 0x6d392e0a +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0xb9ec7534 +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0xe37ed9f5 +drivers/media/dvb/bt8xx/dst dst_pio_disable 0x7de69e73 +drivers/media/dvb/bt8xx/dst dst_pio_enable 0x65b94dfb +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0x59cc94cf +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0x4afcf7ee +drivers/media/dvb/bt8xx/dst rdc_reset_state 0xe1dfbc38 +drivers/media/dvb/bt8xx/dst read_dst 0x596decf3 +drivers/media/dvb/bt8xx/dst write_dst 0xac84b9d1 +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0x55ae1a31 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0xf04637fb +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0x2596ecd3 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0x05e7ea9b +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0x855353b2 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0x5b80968e +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0xae4721d5 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0xb6fa0764 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0xf12440e7 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0xbdb34872 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x0f3bd741 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0xb6af5bfd +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0x65574804 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x1209ade6 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x4595ed1e +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0x038aa795 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0xc2b96fca +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0x912c1eba +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0x438994c0 +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0x9df72fec +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0x37fa2356 +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0x641902bd +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0x2dc074d5 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0x56f19701 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0x7b852d14 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0xb95c5ed7 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0xc9918e98 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x2d80ad4a +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0x187399f4 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0xb09917ef +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0x875f23c6 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0x76628b88 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0x890db46a +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0x05445e5e +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0xdb86e38b +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0x374f37ab +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0xe7033895 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0xa4b3a220 +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0xa1a8c7f9 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0x6835d555 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0x29ef816d +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0x8fa4ac32 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0xe88035cb +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0xcec215d3 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0xf10927b3 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0x70db209d +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0x7e51b1e0 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0x3f72c79e +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0x441fe812 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0x00ca5520 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0x91f16651 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0xd36d125f +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0xa56dd257 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0x2ce78da3 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0x47a21986 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0x55c7c5af +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0xa94a2792 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0x47666f4e +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0x8943b349 +drivers/media/dvb/frontends/at76c651 at76c651_attach 0x56e8a691 +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0xd5816dfd +drivers/media/dvb/frontends/cx22700 cx22700_attach 0xb8151c83 +drivers/media/dvb/frontends/cx22702 cx22702_attach 0x4fbcce09 +drivers/media/dvb/frontends/cx24110 cx24110_attach 0x5aadcd32 +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0xf5e78495 +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0xfa4cac4f +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0x4ac49a93 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x0f739b55 +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0x464d4a4b +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0x019db807 +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0x7f327b67 +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x72b73801 +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0xf434f763 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x61716712 +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0x1536fd73 +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xa75bea99 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xaec96404 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x80e1bf15 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xbccde2e4 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x051954f8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0x8fc9fea7 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0xa0e34c4b +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0x431f1f05 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0x6719245e +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0x7e02151f +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xb6a3ccdf +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x3c620b08 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xb5a6ba8b +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x08fad2ed +drivers/media/dvb/frontends/l64781 l64781_attach 0x56b0dc09 +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0xdc18346d +drivers/media/dvb/frontends/mt312 mt312_attach 0xf31f3244 +drivers/media/dvb/frontends/mt312 vp310_attach 0x30f6fa28 +drivers/media/dvb/frontends/mt352 mt352_attach 0x15517d65 +drivers/media/dvb/frontends/mt352 mt352_write 0x23fa8afb +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0xfa0c5e9b +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x5dbd4d74 +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0x97b1ea75 +drivers/media/dvb/frontends/or51132 or51132_attach 0xb0affeb0 +drivers/media/dvb/frontends/or51211 or51211_attach 0xb13e0bf2 +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0x16885fe8 +drivers/media/dvb/frontends/sp8870 sp8870_attach 0xab9f54d6 +drivers/media/dvb/frontends/sp887x sp887x_attach 0x0c7715c0 +drivers/media/dvb/frontends/stv0297 stv0297_attach 0xc71a9c5a +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0x62c7521e +drivers/media/dvb/frontends/stv0299 stv0299_attach 0xf958d4a3 +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0x4417f9b9 +drivers/media/dvb/frontends/tda10021 tda10021_attach 0x034df3f7 +drivers/media/dvb/frontends/tda1004x tda10045_attach 0x8f5ec0b2 +drivers/media/dvb/frontends/tda1004x tda10046_attach 0xc9ac7036 +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0x3e0e578e +drivers/media/dvb/frontends/tda8083 tda8083_attach 0x4fcfa6aa +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0x50b2da17 +drivers/media/dvb/frontends/ves1820 ves1820_attach 0x3f7a2ab7 +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0xbeec95e0 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0x5e4747eb +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0x821e3708 +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0xc0d41506 +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0x5b01b730 +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0xda8749fc +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0x3864c71e +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0xcfe3c51d +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0x4339f246 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0x68fef38c +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0xe0938242 +drivers/media/video/btcx-risc btcx_riscmem_free 0x8504dc4e +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x357a7ad5 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0xf688ccd8 +drivers/media/video/bttv bttv_gpio_bits 0xa0dc9249 +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0xa59dfd21 +drivers/media/video/bttv bttv_gpio_read 0x8159a7ea +drivers/media/video/bttv bttv_gpio_write 0x26e33bb2 +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0x60466dff +drivers/media/video/bttv bttv_sub_register 0xc988e992 +drivers/media/video/bttv bttv_sub_unregister 0xb0327af9 +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0x7fa8c8e0 +drivers/media/video/cpia cpia_unregister_camera 0x5551bd77 +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0x1e6e1acb +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0x75703d36 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0x439f7081 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0x7b86f121 +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0xf9b0ac55 +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0x206e19d8 +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0x3da7abb8 +drivers/media/video/cx88/cx8802 cx8802_fini_common 0x8f163f79 +drivers/media/video/cx88/cx8802 cx8802_init_common 0x58a1e43b +drivers/media/video/cx88/cx8802 cx8802_resume_common 0xe26cdeef +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0x3a725d9a +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x5b1a26b7 +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0xa50a2549 +drivers/media/video/cx88/cx88xx cx88_card_list 0x8b0e9095 +drivers/media/video/cx88/cx88xx cx88_card_setup 0xe7b7dc40 +drivers/media/video/cx88/cx88xx cx88_core_get 0x3c574db7 +drivers/media/video/cx88/cx88xx cx88_core_irq 0x84c3552a +drivers/media/video/cx88/cx88xx cx88_core_put 0x1a3a7809 +drivers/media/video/cx88/cx88xx cx88_free_buffer 0x9e92327a +drivers/media/video/cx88/cx88xx cx88_get_stereo 0x43c81a34 +drivers/media/video/cx88/cx88xx cx88_i2c_init 0xb9313734 +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0x9a8eb1cb +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x4b35dc23 +drivers/media/video/cx88/cx88xx cx88_reset 0x5fe0568b +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0xc270e6f0 +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0xccf6e1e2 +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0x85715115 +drivers/media/video/cx88/cx88xx cx88_set_scale 0x19cce401 +drivers/media/video/cx88/cx88xx cx88_set_stereo 0xc8b7eff4 +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0x7a20968d +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0xcacb091b +drivers/media/video/cx88/cx88xx cx88_shutdown 0xc13d5aa5 +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0x2f2127cf +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0x2e35722d +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x17a2e62e +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0x93d954bb +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0x732a9006 +drivers/media/video/cx88/cx88xx cx88_subids 0x5804f888 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0x72e6699f +drivers/media/video/cx88/cx88xx cx88_wakeup 0xe992f43f +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0x87b8270b +drivers/media/video/saa7134/saa7134 dmasound_exit 0x4bd7abc0 +drivers/media/video/saa7134/saa7134 dmasound_init 0x2a1fcdb4 +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0x29274827 +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0x9de8ba13 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0x25e7bb8b +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0xc3ec1b99 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0x8efc4c28 +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0x836de72f +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0x00361365 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0xceaa428d +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0x4e669f66 +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0x953fe720 +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0x32426418 +drivers/media/video/tveeprom tveeprom_read 0xc8404754 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0x78f41133 +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x1cef839c +drivers/media/video/v4l2-common v4l2_prio_check 0x62c15600 +drivers/media/video/v4l2-common v4l2_prio_close 0x0a59df07 +drivers/media/video/v4l2-common v4l2_prio_init 0x931bfaa6 +drivers/media/video/v4l2-common v4l2_prio_max 0x7121c34d +drivers/media/video/v4l2-common v4l2_prio_open 0x379df2e3 +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0xea6b1ba9 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0x6ae95491 +drivers/media/video/video-buf videobuf_dma_init 0xf2b65172 +drivers/media/video/video-buf videobuf_dma_init_kernel 0xe6268a6a +drivers/media/video/video-buf videobuf_dma_init_overlay 0xf7a7ec07 +drivers/media/video/video-buf videobuf_dma_init_user 0xfbb8f440 +drivers/media/video/video-buf videobuf_dma_pci_map 0xa0bfd1fa +drivers/media/video/video-buf videobuf_dma_pci_sync 0x6848e73b +drivers/media/video/video-buf videobuf_dma_pci_unmap 0xe50cbc11 +drivers/media/video/video-buf videobuf_dqbuf 0x8f88fc5e +drivers/media/video/video-buf videobuf_iolock 0xc228d87a +drivers/media/video/video-buf videobuf_mmap_free 0xd2913bd5 +drivers/media/video/video-buf videobuf_mmap_mapper 0xecafd538 +drivers/media/video/video-buf videobuf_mmap_setup 0xed4004d9 +drivers/media/video/video-buf videobuf_next_field 0x6bbba33a +drivers/media/video/video-buf videobuf_poll_stream 0x45457e3a +drivers/media/video/video-buf videobuf_qbuf 0x4ee5f008 +drivers/media/video/video-buf videobuf_querybuf 0x719d093f +drivers/media/video/video-buf videobuf_queue_cancel 0x2b9e169e +drivers/media/video/video-buf videobuf_queue_init 0xbac31bc0 +drivers/media/video/video-buf videobuf_queue_is_busy 0x564fcce7 +drivers/media/video/video-buf videobuf_read_one 0xfc2f80f7 +drivers/media/video/video-buf videobuf_read_start 0x8d8777f0 +drivers/media/video/video-buf videobuf_read_stop 0xdcf34003 +drivers/media/video/video-buf videobuf_read_stream 0x47fcbd63 +drivers/media/video/video-buf videobuf_reqbufs 0x66662928 +drivers/media/video/video-buf videobuf_status 0x60cf4b67 +drivers/media/video/video-buf videobuf_streamoff 0x5c55bfea +drivers/media/video/video-buf videobuf_streamon 0xecaa9c21 +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0x2774271a +drivers/media/video/video-buf videobuf_waiton 0xc0f66aa6 +drivers/media/video/video-buf-dvb videobuf_dvb_register 0xf9157618 +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0xeda68ed7 +drivers/media/video/videocodec videocodec_attach 0x27ece86a +drivers/media/video/videocodec videocodec_detach 0x069503d8 +drivers/media/video/videocodec videocodec_register 0xa2a207b0 +drivers/media/video/videocodec videocodec_unregister 0x4310b39c +drivers/media/video/videodev video_devdata 0x58a9c54d +drivers/media/video/videodev video_device_alloc 0xe2443e90 +drivers/media/video/videodev video_device_release 0x90e86c1b +drivers/media/video/videodev video_exclusive_open 0x89316cce +drivers/media/video/videodev video_exclusive_release 0x0a71b487 +drivers/media/video/videodev video_register_device 0x047c9219 +drivers/media/video/videodev video_unregister_device 0x67d7b020 +drivers/media/video/videodev video_usercopy 0x3d32fbf6 +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0x217a9ee6 +drivers/message/fusion/mptbase mpt_HardResetHandler 0x8a4a2174 +drivers/message/fusion/mptbase mpt_add_sge 0x89019e23 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0xd8c22302 +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0x23a94cad +drivers/message/fusion/mptbase mpt_attach 0x8135ae5f +drivers/message/fusion/mptbase mpt_config 0x43b62818 +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0xc8a28cf6 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0xc100c37e +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0xd30eef3b +drivers/message/fusion/mptbase mpt_findImVolumes 0xbf9917b0 +drivers/message/fusion/mptbase mpt_free_fw_memory 0xd23b805a +drivers/message/fusion/mptbase mpt_free_msg_frame 0xd85fdf4f +drivers/message/fusion/mptbase mpt_get_msg_frame 0x9fe24093 +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0x639be801 +drivers/message/fusion/mptbase mpt_proc_root_dir 0x10c7bff9 +drivers/message/fusion/mptbase mpt_put_msg_frame 0x37ad6695 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x9839a3f9 +drivers/message/fusion/mptbase mpt_register 0x1e9bd96b +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x45fc9cae +drivers/message/fusion/mptbase mpt_resume 0xb4924a6a +drivers/message/fusion/mptbase mpt_send_handshake_request 0x67111b35 +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0x8e9025df +drivers/message/fusion/mptbase mpt_toolbox 0xd24ec6da +drivers/message/fusion/mptbase mpt_verify_adapter 0x7a49b641 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x9eab8cfe +drivers/message/fusion/mptscsih mptscsih_abort 0xb6d696ec +drivers/message/fusion/mptscsih mptscsih_bios_param 0xd709edc0 +drivers/message/fusion/mptscsih mptscsih_bus_reset 0xf551812e +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x058618f4 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0x2011291c +drivers/message/fusion/mptscsih mptscsih_event_process 0x7b67c3d9 +drivers/message/fusion/mptscsih mptscsih_host_reset 0x3b1fa0bd +drivers/message/fusion/mptscsih mptscsih_info 0xda5578a2 +drivers/message/fusion/mptscsih mptscsih_io_done 0x0e678b5b +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0xf2c87b42 +drivers/message/fusion/mptscsih mptscsih_proc_info 0x853f7932 +drivers/message/fusion/mptscsih mptscsih_qcmd 0xa30abd59 +drivers/message/fusion/mptscsih mptscsih_remove 0x826c36bc +drivers/message/fusion/mptscsih mptscsih_resume 0x24eb6362 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0xf9ec3482 +drivers/message/fusion/mptscsih mptscsih_shutdown 0xc69ff9d2 +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0x1d12682d +drivers/message/fusion/mptscsih mptscsih_slave_configure 0xaff7284a +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x722e99bd +drivers/message/fusion/mptscsih mptscsih_suspend 0x53605ca9 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x8e721bcc +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_cntxt_list_add 0x02e80fcb +drivers/message/i2o/i2o_core i2o_cntxt_list_get 0x922d7760 +drivers/message/i2o/i2o_core i2o_cntxt_list_get_ptr 0x2dd6d4cc +drivers/message/i2o/i2o_core i2o_cntxt_list_remove 0x1e772752 +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0xc4b80042 +drivers/message/i2o/i2o_core i2o_device_claim_release 0xb56bd233 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0xbee4d0fe +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x1caf81c3 +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x1e593471 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0x97357f12 +drivers/message/i2o/i2o_core i2o_driver_register 0xd44f6dbb +drivers/message/i2o/i2o_core i2o_driver_unregister 0xae1ec77a +drivers/message/i2o/i2o_core i2o_dump_message 0xeb95f7f2 +drivers/message/i2o/i2o_core i2o_event_register 0x7bb0b2d3 +drivers/message/i2o/i2o_core i2o_exec_lct_get 0x73567c7e +drivers/message/i2o/i2o_core i2o_find_iop 0xee4624ea +drivers/message/i2o/i2o_core i2o_iop_find_device 0xd92d2025 +drivers/message/i2o/i2o_core i2o_msg_get_wait 0xb42104f2 +drivers/message/i2o/i2o_core i2o_msg_nop 0xe38c4230 +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0xd863b80f +drivers/message/i2o/i2o_core i2o_parm_field_get 0xf7feed54 +drivers/message/i2o/i2o_core i2o_parm_issue 0xa8c18ea2 +drivers/message/i2o/i2o_core i2o_parm_table_get 0xd9062fb2 +drivers/message/i2o/i2o_core i2o_status_get 0x951b6575 +drivers/mtd/chips/cfi_util cfi_fixup 0xfad6e5e1 +drivers/mtd/chips/cfi_util cfi_read_pri 0x97cdaf8c +drivers/mtd/chips/cfi_util cfi_varsize_frob 0x6cca2ec0 +drivers/mtd/chips/chipreg do_map_probe 0xb4cdda35 +drivers/mtd/chips/chipreg map_destroy 0x762ae857 +drivers/mtd/chips/chipreg register_mtd_chip_driver 0x27aafc95 +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0x5b42faf4 +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0xe7acf8a4 +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0xe37c1357 +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0xb1b62ffa +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0x3de2a249 +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0x3d1f0d2d +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0x8fd5a6ff +drivers/mtd/mtdconcat mtd_concat_create 0xbfb2321f +drivers/mtd/mtdconcat mtd_concat_destroy 0x5b47a0b8 +drivers/mtd/mtdcore add_mtd_device 0xdf198578 +drivers/mtd/mtdcore default_mtd_readv 0x6529ffcc +drivers/mtd/mtdcore default_mtd_writev 0x78dadf23 +drivers/mtd/mtdcore del_mtd_device 0xf62d48ad +drivers/mtd/mtdcore get_mtd_device 0x566d9d8c +drivers/mtd/mtdcore mtd_table 0x8dc06ea9 +drivers/mtd/mtdcore mtd_table_mutex 0x84c9344a +drivers/mtd/mtdcore put_mtd_device 0x5169c1cc +drivers/mtd/mtdcore register_mtd_user 0xad353ed7 +drivers/mtd/mtdcore unregister_mtd_user 0xd72f7aa0 +drivers/mtd/mtdpart add_mtd_partitions 0x81f8d847 +drivers/mtd/mtdpart del_mtd_partitions 0xd2d2f7e4 +drivers/mtd/mtdpart deregister_mtd_parser 0x1297080e +drivers/mtd/mtdpart mtd_erase_callback 0xa44412dd +drivers/mtd/mtdpart parse_mtd_partitions 0xb2fbcd6d +drivers/mtd/mtdpart register_mtd_parser 0x34b7ae92 +drivers/mtd/nand/nand nand_default_bbt 0x9c840008 +drivers/mtd/nand/nand nand_release 0x2c4c1a0f +drivers/mtd/nand/nand nand_scan 0xfe961289 +drivers/mtd/nand/nand nand_scan_bbt 0x0a24cb25 +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0x92ca7a82 +drivers/mtd/onenand/onenand onenand_release 0x9673e1ce +drivers/mtd/onenand/onenand onenand_scan 0x6b64aa81 +drivers/mtd/onenand/onenand onenand_scan_bbt 0x00748d49 +drivers/net/8390 NS8390_init 0xc178fba6 +drivers/net/8390 __alloc_ei_netdev 0x5023bda9 +drivers/net/8390 ei_close 0xa945bdcd +drivers/net/8390 ei_interrupt 0x7290cbe2 +drivers/net/8390 ei_open 0xb4c8411f +drivers/net/8390 ei_poll 0x6cca4cc2 +drivers/net/arcnet/arcnet alloc_arcdev 0x1f473379 +drivers/net/arcnet/arcnet arc_bcast_proto 0xc122dac5 +drivers/net/arcnet/arcnet arc_proto_default 0x83c57bce +drivers/net/arcnet/arcnet arc_proto_map 0x2447e357 +drivers/net/arcnet/arcnet arc_proto_null 0xd6719b60 +drivers/net/arcnet/arcnet arc_raw_proto 0xb2c4d377 +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0xff19d19b +drivers/net/arcnet/arcnet arcnet_unregister_proto 0xedf725db +drivers/net/arcnet/com20020 com20020_check 0xafe8f47a +drivers/net/arcnet/com20020 com20020_found 0xc638bf25 +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0x26c3f568 +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0x92784110 +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0xef50e9dc +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0xfb16dda4 +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0x719b856c +drivers/net/irda/sir-dev irda_register_dongle 0x4b9e133e +drivers/net/irda/sir-dev irda_unregister_dongle 0x506a8b30 +drivers/net/irda/sir-dev sirdev_get_instance 0x0d6b3f8f +drivers/net/irda/sir-dev sirdev_put_instance 0x1fb5eb1b +drivers/net/irda/sir-dev sirdev_raw_read 0x5e38912c +drivers/net/irda/sir-dev sirdev_raw_write 0x95d09df4 +drivers/net/irda/sir-dev sirdev_receive 0xd699a8dc +drivers/net/irda/sir-dev sirdev_set_dongle 0x32726908 +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0xe2e5f612 +drivers/net/irda/sir-dev sirdev_write_complete 0x3fa50885 +drivers/net/mii generic_mii_ioctl 0x979b928b +drivers/net/mii mii_check_gmii_support 0xde38d748 +drivers/net/mii mii_check_link 0xc35c0153 +drivers/net/mii mii_check_media 0x217c8a30 +drivers/net/mii mii_ethtool_gset 0xf5b4bd1d +drivers/net/mii mii_ethtool_sset 0x213c3486 +drivers/net/mii mii_link_ok 0x38dda267 +drivers/net/mii mii_nway_restart 0x4c79f1e5 +drivers/net/phy/libphy genphy_config_advert 0x760e48b7 +drivers/net/phy/libphy genphy_config_aneg 0xfef8737b +drivers/net/phy/libphy genphy_read_status 0xdf4a4e95 +drivers/net/phy/libphy mdiobus_register 0x12974fdf +drivers/net/phy/libphy mdiobus_unregister 0x32ee94ae +drivers/net/phy/libphy phy_attach 0x19867771 +drivers/net/phy/libphy phy_connect 0xd06fc910 +drivers/net/phy/libphy phy_detach 0x4c05edc3 +drivers/net/phy/libphy phy_disable_interrupts 0xdff8b25e +drivers/net/phy/libphy phy_disconnect 0x03955a91 +drivers/net/phy/libphy phy_driver_register 0xb00e8e50 +drivers/net/phy/libphy phy_driver_unregister 0x2d7ad16e +drivers/net/phy/libphy phy_enable_interrupts 0xeb405edb +drivers/net/phy/libphy phy_print_status 0x3374f503 +drivers/net/phy/libphy phy_read 0x91c559a1 +drivers/net/phy/libphy phy_sanitize_settings 0xf94ded11 +drivers/net/phy/libphy phy_start 0x3d0b49a7 +drivers/net/phy/libphy phy_start_aneg 0xd59d535c +drivers/net/phy/libphy phy_start_interrupts 0xab61e5f8 +drivers/net/phy/libphy phy_stop 0xb96a32c3 +drivers/net/phy/libphy phy_stop_interrupts 0x230ed56f +drivers/net/phy/libphy phy_write 0xb0173acb +drivers/net/ppp_generic ppp_channel_index 0x1164c6dc +drivers/net/ppp_generic ppp_input 0x5b98b93f +drivers/net/ppp_generic ppp_input_error 0xb306ae49 +drivers/net/ppp_generic ppp_output_wakeup 0x68635425 +drivers/net/ppp_generic ppp_register_channel 0x5f4a0007 +drivers/net/ppp_generic ppp_register_compressor 0x96dc0b60 +drivers/net/ppp_generic ppp_unit_number 0x1f7566e8 +drivers/net/ppp_generic ppp_unregister_channel 0xc45ea1d4 +drivers/net/ppp_generic ppp_unregister_compressor 0xd7f12927 +drivers/net/pppox pppox_unbind_sock 0xcc2cd16c +drivers/net/pppox register_pppox_proto 0x751b9da3 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x76135e6c +drivers/net/slhc slhc_free 0x2894cfb0 +drivers/net/slhc slhc_init 0x2e0e927f +drivers/net/slhc slhc_remember 0x0bc55868 +drivers/net/slhc slhc_toss 0xf89e3455 +drivers/net/slhc slhc_uncompress 0x3bc1319e +drivers/net/wan/hdlc alloc_hdlcdev 0x60ae29c4 +drivers/net/wan/hdlc hdlc_close 0x04b2d566 +drivers/net/wan/hdlc hdlc_ioctl 0xa3ea1907 +drivers/net/wan/hdlc hdlc_open 0x636cb631 +drivers/net/wan/hdlc hdlc_set_carrier 0x67a726ed +drivers/net/wan/hdlc register_hdlc_device 0xd6d2fb5a +drivers/net/wan/hdlc unregister_hdlc_device 0xe129d9fe +drivers/net/wan/syncppp sppp_attach 0x0ec766ef +drivers/net/wan/syncppp sppp_close 0x1cd41680 +drivers/net/wan/syncppp sppp_detach 0x2b48ea6f +drivers/net/wan/syncppp sppp_do_ioctl 0x70b4abfa +drivers/net/wan/syncppp sppp_open 0xa37ee582 +drivers/net/wan/syncppp sppp_reopen 0xeddac5ff +drivers/net/wireless/airo init_airo_card 0x325e4f83 +drivers/net/wireless/airo reset_airo_card 0x01a1a34f +drivers/net/wireless/airo stop_airo_card 0xd99184d8 +drivers/net/wireless/atmel atmel_open 0x55176ca6 +drivers/net/wireless/atmel init_atmel_card 0x88129d9a +drivers/net/wireless/atmel stop_atmel_card 0xbf30116d +drivers/net/wireless/hermes hermes_allocate 0x52657e6d +drivers/net/wireless/hermes hermes_bap_pread 0x00f56735 +drivers/net/wireless/hermes hermes_bap_pwrite 0x66c87edb +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x9e63e63a +drivers/net/wireless/hermes hermes_docmd_wait 0x586026a5 +drivers/net/wireless/hermes hermes_init 0x2aa8b098 +drivers/net/wireless/hermes hermes_read_ltv 0x2743ed5f +drivers/net/wireless/hermes hermes_struct_init 0x7e23508a +drivers/net/wireless/hermes hermes_write_ltv 0xc0b735be +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x96c84ea1 +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0xbe96e8ac +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0x21b4c605 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0x03e78aec +drivers/net/wireless/hostap/hostap hostap_add_interface 0x0c84bcfd +drivers/net/wireless/hostap/hostap hostap_add_sta 0x1fde6708 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0xfdefbfa1 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0xbda2553b +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0xeac56899 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x125371a4 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0xbddde9d9 +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3d91a091 +drivers/net/wireless/hostap/hostap hostap_free_data 0x34996575 +drivers/net/wireless/hostap/hostap hostap_get_porttype 0xfc974442 +drivers/net/wireless/hostap/hostap hostap_get_stats 0x51d07d2a +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0x8af99f5d +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0xc30d1512 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x57b9fa61 +drivers/net/wireless/hostap/hostap hostap_info_init 0x0acb6c89 +drivers/net/wireless/hostap/hostap hostap_info_process 0x5aa9eaab +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0xa0c49089 +drivers/net/wireless/hostap/hostap hostap_init_data 0xdc80df9f +drivers/net/wireless/hostap/hostap hostap_init_proc 0x8b335012 +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0xc808a1aa +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0xf95d755a +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0xdaafd129 +drivers/net/wireless/hostap/hostap hostap_proc 0xd2a36403 +drivers/net/wireless/hostap/hostap hostap_remove_interface 0x43c8449e +drivers/net/wireless/hostap/hostap hostap_remove_proc 0x41daefa4 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0xda633fb6 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0x5f2db1d1 +drivers/net/wireless/hostap/hostap hostap_set_encryption 0x0b357ec4 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x6fdacca8 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0xa48c36c8 +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0xc29b3ea4 +drivers/net/wireless/hostap/hostap hostap_set_string 0x90c57f03 +drivers/net/wireless/hostap/hostap hostap_set_word 0xcbeee9a8 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0xae4fe6ab +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x4ec9ba74 +drivers/net/wireless/hostap/hostap hostap_update_rates 0x59dad6ff +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0xec86cefe +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x8fac4a14 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x112066ed +drivers/net/wireless/orinoco __orinoco_down 0x52c23873 +drivers/net/wireless/orinoco __orinoco_up 0xfa30cf0c +drivers/net/wireless/orinoco alloc_orinocodev 0x7af4fe9d +drivers/net/wireless/orinoco free_orinocodev 0x65ade03a +drivers/net/wireless/orinoco orinoco_interrupt 0xa4f4105f +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x770b15ee +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xcc5344b0 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x02a651ae +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0x0b628437 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x923f6681 +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0xe23d8160 +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x216e5fb1 +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0xebeb882c +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0x63008dfa +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0xa688a04d +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x594f4bd2 +drivers/net/wireless/prism54_softmac/islsm register_islsm 0xca9d3754 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0xb4bdc134 +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0x48b6260d +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0xcc6d6aa6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0xc57a4455 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0x3a1bfa6e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0x11f19818 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x61603b3f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0x2f0f8cfe +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0x776763e7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0xcfb05f0c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xfd4d74ff +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0x6391c565 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0x7213ee95 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0xd0e2ed28 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0xda40865f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0x3156b617 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0x3ae16f91 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0xfd9838de +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0xeee58828 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0xef1dfc77 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x81abbf89 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0x1f16c57e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0xe1020738 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0xbf347b61 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x9b92cee5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x0b50cbc9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0xfd747ff7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x353bd99a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x707b147b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0x752042bf +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0xc1f86b31 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0x5f929da1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x81f2f4f6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0x336a8202 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0x94c37964 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0x62e7cd5a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0xd883589c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0xeab3f012 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0xd41cf55f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x5e6bd99c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x73c495e7 +drivers/parport/parport parport_announce_port 0xa16a28b7 +drivers/parport/parport parport_claim 0xc176a0c8 +drivers/parport/parport parport_claim_or_block 0x274f7ec5 +drivers/parport/parport parport_find_base 0xc7dcfed1 +drivers/parport/parport parport_find_number 0xf24b748d +drivers/parport/parport parport_get_port 0x7b64545c +drivers/parport/parport parport_ieee1284_ecp_read_data 0x11e8c36b +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xa8985da3 +drivers/parport/parport parport_ieee1284_ecp_write_data 0xbc8828b0 +drivers/parport/parport parport_ieee1284_epp_read_addr 0x05c5eda6 +drivers/parport/parport parport_ieee1284_epp_read_data 0x3079f1e7 +drivers/parport/parport parport_ieee1284_epp_write_addr 0x5a74bd78 +drivers/parport/parport parport_ieee1284_epp_write_data 0x4e64c86b +drivers/parport/parport parport_ieee1284_interrupt 0x03ce1a9d +drivers/parport/parport parport_ieee1284_read_byte 0x96d50e32 +drivers/parport/parport parport_ieee1284_read_nibble 0xe6ab94a1 +drivers/parport/parport parport_ieee1284_write_compat 0x7058cdb9 +drivers/parport/parport parport_negotiate 0x60cbb67a +drivers/parport/parport parport_put_port 0x022b2223 +drivers/parport/parport parport_read 0xbc8cb2be +drivers/parport/parport parport_register_device 0xe08d4245 +drivers/parport/parport parport_register_driver 0x569e5b2d +drivers/parport/parport parport_register_port 0x3be762a2 +drivers/parport/parport parport_release 0xef3949b0 +drivers/parport/parport parport_remove_port 0x1a567e47 +drivers/parport/parport parport_set_timeout 0xd5d0ebb3 +drivers/parport/parport parport_unregister_device 0x9024d450 +drivers/parport/parport parport_unregister_driver 0xbd902215 +drivers/parport/parport parport_wait_event 0xd23b853d +drivers/parport/parport parport_wait_peripheral 0xdbe96c6c +drivers/parport/parport parport_write 0x946f7852 +drivers/parport/parport_pc parport_pc_probe_port 0x6418355c +drivers/parport/parport_pc parport_pc_unregister_port 0x2f44d05c +drivers/pci/hotplug/acpiphp acpiphp_register_attention 0xf05c08d3 +drivers/pci/hotplug/acpiphp acpiphp_unregister_attention 0xe5af795c +drivers/pci/hotplug/pci_hotplug cpci_hp_register_bus 0x334d8ee5 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_controller 0x0084d6bf +drivers/pci/hotplug/pci_hotplug cpci_hp_start 0x6a8441be +drivers/pci/hotplug/pci_hotplug cpci_hp_stop 0x94ef4d05 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_bus 0x72243eb4 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_controller 0x53203ba4 +drivers/pci/hotplug/pci_hotplug pci_hotplug_slots_subsys 0xa08fd745 +drivers/pci/hotplug/pci_hotplug pci_hp_change_slot_info 0xd45bdf4f +drivers/pci/hotplug/pci_hotplug pci_hp_deregister 0x90584e55 +drivers/pci/hotplug/pci_hotplug pci_hp_register 0x27b714e4 +drivers/pcmcia/pcmcia cs_error 0x67cebcc4 +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0x3c812f12 +drivers/pcmcia/pcmcia pcmcia_deregister_client 0xd48571b3 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0xd9d3d8f3 +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0xb5509223 +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0x3b798445 +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0x4c2f1ef3 +drivers/pcmcia/pcmcia pcmcia_get_status 0xc2f18a19 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0xb16ba15b +drivers/pcmcia/pcmcia pcmcia_get_window 0xd1f69ab6 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0x5b22ca07 +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x16a2f133 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0x4bd67b09 +drivers/pcmcia/pcmcia pcmcia_register_client 0xcc0ef54a +drivers/pcmcia/pcmcia pcmcia_register_driver 0xac9473c3 +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x50e7292c +drivers/pcmcia/pcmcia pcmcia_release_io 0xff85b114 +drivers/pcmcia/pcmcia pcmcia_release_irq 0xe0c07126 +drivers/pcmcia/pcmcia pcmcia_release_window 0x7050d6f5 +drivers/pcmcia/pcmcia pcmcia_request_configuration 0xcab9b8db +drivers/pcmcia/pcmcia pcmcia_request_io 0x27206d3b +drivers/pcmcia/pcmcia pcmcia_request_irq 0x7db90f11 +drivers/pcmcia/pcmcia pcmcia_request_window 0x440a8d92 +drivers/pcmcia/pcmcia pcmcia_reset_card 0x80f616e5 +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0x5ae7a4d9 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0x566577a9 +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0x7e48fcd5 +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x4045313e +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0x6d3ba8d7 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0xc4c5cf32 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0x83f3024b +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0x249cbe27 +drivers/pcmcia/pcmcia_core pccard_reset_card 0xbd2fa7d8 +drivers/pcmcia/pcmcia_core pccard_static_ops 0x0ba2282f +drivers/pcmcia/pcmcia_core pccard_validate_cis 0xd2c58af9 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0x42379e21 +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0x19f514fd +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0x06ad235a +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0x7640b00c +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0xf58a6d47 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0xa3387b46 +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x089b5c20 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0x06aec025 +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0xa5998a41 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xcbd4c2b1 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0xeb7de20b +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0xdad44528 +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x5d3d69e8 +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0x94d0eeb9 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0x9463b5a8 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0xcb694815 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0x5c0755d9 +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0xe452a598 +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x1d0e3511 +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0x4558969b +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0xf3cd9309 +drivers/pcmcia/pcmcia_core release_cis_mem 0x8f162b07 +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0x621f9a04 +drivers/scsi/libata __sata_phy_reset 0xc99029a9 +drivers/scsi/libata ata_acpi_bus_register 0x4eb7c257 +drivers/scsi/libata ata_acpi_exec_tfs 0xaffa3619 +drivers/scsi/libata ata_acpi_get_timing 0x4a328aa3 +drivers/scsi/libata ata_acpi_push_id 0x5852fe70 +drivers/scsi/libata ata_acpi_push_timing 0x49b665e3 +drivers/scsi/libata ata_altstatus 0xc85eb60c +drivers/scsi/libata ata_bmdma_irq_clear 0x5dfbde3c +drivers/scsi/libata ata_bmdma_setup 0xff259e0d +drivers/scsi/libata ata_bmdma_start 0xc4d06eed +drivers/scsi/libata ata_bmdma_status 0x53e8a430 +drivers/scsi/libata ata_bmdma_stop 0xb1f6ad27 +drivers/scsi/libata ata_bus_probe 0x00cb4d25 +drivers/scsi/libata ata_bus_reset 0x878ff911 +drivers/scsi/libata ata_check_status 0xf3d59d93 +drivers/scsi/libata ata_dev_classify 0xee64669b +drivers/scsi/libata ata_dev_config 0x44170709 +drivers/scsi/libata ata_dev_id_string 0x813edb38 +drivers/scsi/libata ata_device_add 0x1f881d51 +drivers/scsi/libata ata_device_resume 0x5b6e0078 +drivers/scsi/libata ata_device_shutdown 0xefcfe27e +drivers/scsi/libata ata_device_suspend 0xb2f9a19c +drivers/scsi/libata ata_eng_timeout 0x342e4c06 +drivers/scsi/libata ata_exec_command 0x4f3cca5d +drivers/scsi/libata ata_host_intr 0xa2eaac22 +drivers/scsi/libata ata_host_set_remove 0xaadce8cc +drivers/scsi/libata ata_host_stop 0x47207a9e +drivers/scsi/libata ata_hotplug_plug 0x49c23d06 +drivers/scsi/libata ata_hotplug_unplug 0x67778e0b +drivers/scsi/libata ata_interrupt 0x1cf5f836 +drivers/scsi/libata ata_noop_dev_select 0x9f2bf7bb +drivers/scsi/libata ata_pci_device_resume 0x6dd536d2 +drivers/scsi/libata ata_pci_device_suspend 0x07f45bcd +drivers/scsi/libata ata_pci_host_stop 0xb370e00f +drivers/scsi/libata ata_pci_init_native_mode 0x3bc235d2 +drivers/scsi/libata ata_pci_init_one 0xa0951651 +drivers/scsi/libata ata_pci_remove_one 0xcfb6646f +drivers/scsi/libata ata_port_disable 0x9b8507bc +drivers/scsi/libata ata_port_probe 0x0827d7d4 +drivers/scsi/libata ata_port_start 0xf4b83dfb +drivers/scsi/libata ata_port_stop 0x047ef044 +drivers/scsi/libata ata_qc_complete 0x7292c3e6 +drivers/scsi/libata ata_qc_issue_prot 0x8ed81950 +drivers/scsi/libata ata_qc_prep 0xcf33d9d6 +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0x81c7b615 +drivers/scsi/libata ata_scsi_device_shutdown 0xbccdefce +drivers/scsi/libata ata_scsi_device_suspend 0xf33f0d47 +drivers/scsi/libata ata_scsi_error 0x9eb7f21c +drivers/scsi/libata ata_scsi_ioctl 0xcce8fe00 +drivers/scsi/libata ata_scsi_queuecmd 0xb1b29df6 +drivers/scsi/libata ata_scsi_release 0x3812accb +drivers/scsi/libata ata_scsi_simulate 0x194e2d2b +drivers/scsi/libata ata_scsi_slave_config 0x5e89f4d5 +drivers/scsi/libata ata_sg_init 0xe92dc1b4 +drivers/scsi/libata ata_sg_init_one 0x402e8f69 +drivers/scsi/libata ata_std_bios_param 0xbb7d8609 +drivers/scsi/libata ata_std_dev_select 0x13052f22 +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0xd25f9a2e +drivers/scsi/libata ata_tf_load 0x901a65ba +drivers/scsi/libata ata_tf_read 0xf63041a3 +drivers/scsi/libata ata_tf_to_fis 0x97bb9d3f +drivers/scsi/libata ata_timing_compute 0x08dc7e4c +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata do_drive_get_GTF 0x3f87fad3 +drivers/scsi/libata do_drive_set_taskfiles 0x640735d3 +drivers/scsi/libata pci_test_config_bits 0xd33f34f7 +drivers/scsi/libata sata_phy_reset 0x3660246a +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0xb2e0b271 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0xb65e5fbe +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x7920073e +drivers/scsi/qlogicfas408 qlogicfas408_abort 0x9964f415 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0x92336ce0 +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0x7b446ee7 +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0x49ab9bc5 +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x6a43a093 +drivers/scsi/qlogicfas408 qlogicfas408_info 0x871c1088 +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0xb7d628df +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0x9289d78b +drivers/scsi/raid_class raid_class_release 0x66942da3 +drivers/scsi/raid_class raid_component_add 0x79bae1d8 +drivers/scsi/sas/sas_class sas_register_ha 0x86223672 +drivers/scsi/sas/sas_class sas_unregister_ha 0x49333e35 +drivers/scsi/scsi_transport_fc fc_attach_transport 0xfcec3605 +drivers/scsi/scsi_transport_fc fc_release_transport 0xe27e2eda +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x5cc6d6d5 +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0xae27215c +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x82d86306 +drivers/scsi/scsi_transport_fc fc_remove_host 0xd9ce64dd +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0x15b39f65 +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0x8677ed8d +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x200e54d7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x632aeaa2 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x82cd22e7 +drivers/scsi/scsi_transport_sas sas_attach_transport 0x494edd8d +drivers/scsi/scsi_transport_sas sas_phy_add 0xd148295a +drivers/scsi/scsi_transport_sas sas_phy_alloc 0x94a17130 +drivers/scsi/scsi_transport_sas sas_phy_delete 0xfed4c1fb +drivers/scsi/scsi_transport_sas sas_phy_free 0x674b6ae9 +drivers/scsi/scsi_transport_sas sas_release_transport 0x6f5acd89 +drivers/scsi/scsi_transport_sas sas_remove_host 0xe4c1868d +drivers/scsi/scsi_transport_sas sas_rphy_add 0x8822fb29 +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0xd5390947 +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x71f2b602 +drivers/scsi/scsi_transport_sas sas_rphy_free 0x696e55fb +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0xe4ed95b0 +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0xd6514d70 +drivers/scsi/scsi_transport_spi spi_attach_transport 0x1d9655fe +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0x74025fc6 +drivers/scsi/scsi_transport_spi spi_dv_device 0x70cd2db7 +drivers/scsi/scsi_transport_spi spi_release_transport 0xed788b60 +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0xd5f2bf9d +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x7e0e29d2 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0x39bfd4a9 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0xd552e84b +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0x65d81f32 +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0xc72740c8 +drivers/telephony/ixj ixj_pcmcia_probe 0x1d5ab2d2 +drivers/telephony/phonedev phone_register_device 0xd6d5bcd4 +drivers/telephony/phonedev phone_unregister_device 0x1c06f959 +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0xbf422d0e +drivers/usb/core/usbcore usb_alloc_dev 0x9491bf2a +drivers/usb/core/usbcore usb_alloc_urb 0xe560ba41 +drivers/usb/core/usbcore usb_altnum_to_altsetting 0xef71d046 +drivers/usb/core/usbcore usb_buffer_alloc 0x2bf04604 +drivers/usb/core/usbcore usb_buffer_free 0x36a15712 +drivers/usb/core/usbcore usb_buffer_map_sg 0x1d65f6fd +drivers/usb/core/usbcore usb_buffer_unmap_sg 0xf6ae3d37 +drivers/usb/core/usbcore usb_bulk_msg 0x866357ec +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0xe087f60f +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0xb1f1384f +drivers/usb/core/usbcore usb_claim_bandwidth 0xd55d7e54 +drivers/usb/core/usbcore usb_clear_halt 0xadf79c74 +drivers/usb/core/usbcore usb_control_msg 0xdba55ed1 +drivers/usb/core/usbcore usb_create_hcd 0x6f953ef3 +drivers/usb/core/usbcore usb_deregister 0x028ea92c +drivers/usb/core/usbcore usb_deregister_dev 0x5987f1f5 +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0x013158f9 +drivers/usb/core/usbcore usb_driver_claim_interface 0xb93d4d9f +drivers/usb/core/usbcore usb_driver_release_interface 0x08f45d1e +drivers/usb/core/usbcore usb_find_device 0xb93c3b53 +drivers/usb/core/usbcore usb_find_interface 0x6532d700 +drivers/usb/core/usbcore usb_free_urb 0x313826f4 +drivers/usb/core/usbcore usb_get_current_frame_number 0x9626554f +drivers/usb/core/usbcore usb_get_descriptor 0x51340c66 +drivers/usb/core/usbcore usb_get_dev 0x9ce3bd9a +drivers/usb/core/usbcore usb_get_intf 0x76a5fe58 +drivers/usb/core/usbcore usb_get_status 0x11adeab7 +drivers/usb/core/usbcore usb_get_string 0xb1233536 +drivers/usb/core/usbcore usb_get_urb 0x91c65c11 +drivers/usb/core/usbcore usb_hc_died 0xb2778916 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0x36ad2f75 +drivers/usb/core/usbcore usb_hcd_pci_probe 0xe0a0ac0a +drivers/usb/core/usbcore usb_hcd_pci_remove 0x29d9afde +drivers/usb/core/usbcore usb_hcd_pci_resume 0xe7f3ad4d +drivers/usb/core/usbcore usb_hcd_pci_suspend 0x4a669de9 +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0x33c67f56 +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0x4a636bae +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0xda428155 +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0x8e96c46e +drivers/usb/core/usbcore usb_ifnum_to_if 0xa6b3d508 +drivers/usb/core/usbcore usb_init_urb 0x3d96eceb +drivers/usb/core/usbcore usb_kill_urb 0x29147f59 +drivers/usb/core/usbcore usb_lock_device 0x1201cf7c +drivers/usb/core/usbcore usb_lock_device_for_reset 0x23814e7e +drivers/usb/core/usbcore usb_match_id 0xcb0ec9f6 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0xc705b646 +drivers/usb/core/usbcore usb_put_dev 0xdfc163e5 +drivers/usb/core/usbcore usb_put_hcd 0xa444c409 +drivers/usb/core/usbcore usb_put_intf 0xa651e08a +drivers/usb/core/usbcore usb_register 0xdf3cd392 +drivers/usb/core/usbcore usb_register_dev 0xf5b28d60 +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x5ed5b259 +drivers/usb/core/usbcore usb_remove_hcd 0xd573fb2e +drivers/usb/core/usbcore usb_reset_configuration 0x830290a4 +drivers/usb/core/usbcore usb_reset_device 0xea0c72be +drivers/usb/core/usbcore usb_set_device_state 0x71f05fe9 +drivers/usb/core/usbcore usb_set_interface 0x0137792e +drivers/usb/core/usbcore usb_sg_cancel 0xcc524868 +drivers/usb/core/usbcore usb_sg_init 0x4fab12a0 +drivers/usb/core/usbcore usb_sg_wait 0x79d8cef4 +drivers/usb/core/usbcore usb_string 0xd11c7e9e +drivers/usb/core/usbcore usb_submit_urb 0x2dcd0568 +drivers/usb/core/usbcore usb_trylock_device 0xb7512238 +drivers/usb/core/usbcore usb_unlink_urb 0xa35a6e53 +drivers/usb/core/usbcore usb_unlock_device 0xbd1fe1e9 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/host/sl811-hcd sl811h_driver 0x17add315 +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0x710261e5 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x2de053b5 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0x7c4e905c +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0x2e94dfc0 +drivers/usb/media/usbvideo RingQueue_Dequeue 0xb3f01b51 +drivers/usb/media/usbvideo RingQueue_Enqueue 0xa8caef21 +drivers/usb/media/usbvideo RingQueue_Flush 0xbc4a757d +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0x26af5b87 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0x17304228 +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x1c67248e +drivers/usb/media/usbvideo usbvideo_Deregister 0x26cc8ca4 +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0x4848e15e +drivers/usb/media/usbvideo usbvideo_TestPattern 0xf19c9ffc +drivers/usb/media/usbvideo usbvideo_register 0x0bc9d1b7 +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0xd90ce34f +drivers/usb/media/w9968cf w9968cf_vppmod_register 0x11add410 +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0x54f0ce92 +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0xaa4a13b9 +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0x48c7fd0c +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0xed3a0c91 +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0x146989de +drivers/usb/net/usbnet usbnet_defer_kevent 0xd6e800f2 +drivers/usb/net/usbnet usbnet_disconnect 0x8f04eb94 +drivers/usb/net/usbnet usbnet_get_drvinfo 0x5869c236 +drivers/usb/net/usbnet usbnet_get_endpoints 0xbec441ed +drivers/usb/net/usbnet usbnet_get_msglevel 0x099754b4 +drivers/usb/net/usbnet usbnet_probe 0xd0fee774 +drivers/usb/net/usbnet usbnet_resume 0xb9639b0e +drivers/usb/net/usbnet usbnet_set_msglevel 0xa4e3079e +drivers/usb/net/usbnet usbnet_skb_return 0xc26450c8 +drivers/usb/net/usbnet usbnet_suspend 0x8f847139 +drivers/usb/serial/usbserial ezusb_set_reset 0x773c2deb +drivers/usb/serial/usbserial ezusb_writememory 0x253159ce +drivers/usb/serial/usbserial usb_serial_deregister 0xf7dc152a +drivers/usb/serial/usbserial usb_serial_disconnect 0xa10e059b +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x0cbf4421 +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0x310cc0bf +drivers/usb/serial/usbserial usb_serial_register 0xd02d12f4 +drivers/video/backlight/backlight backlight_device_register 0x531b619c +drivers/video/backlight/backlight backlight_device_unregister 0x34e59f37 +drivers/video/backlight/lcd lcd_device_register 0x0501963f +drivers/video/backlight/lcd lcd_device_unregister 0x68634250 +drivers/video/console/bitblit fbcon_set_bitops 0xc6f13ab7 +drivers/video/console/font find_font 0xf7584a9c +drivers/video/console/font get_default_font 0x093e3659 +drivers/video/console/softcursor soft_cursor 0xc99ebc00 +drivers/video/console/tileblit fbcon_set_tileops 0x6fc50e60 +drivers/video/cyber2000fb cyber2000fb_attach 0x9f392771 +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x8c85af6a +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0x1ce5334d +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0x97086642 +drivers/video/macmodes mac_find_mode 0x886f654a +drivers/video/macmodes mac_map_monitor_sense 0xe2304303 +drivers/video/macmodes mac_var_to_vmode 0x00907cd5 +drivers/video/macmodes mac_vmode_to_var 0x08ed0b62 +drivers/video/matrox/g450_pll g450_mnp2f 0xdb4d7fa6 +drivers/video/matrox/g450_pll matroxfb_g450_setclk 0x4451dfd2 +drivers/video/matrox/g450_pll matroxfb_g450_setpll_cond 0xa8effdf9 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_init 0x0a07802c +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_restore 0x4dcd7c87 +drivers/video/matrox/matroxfb_DAC1064 matrox_G100 0xdb8e42f3 +drivers/video/matrox/matroxfb_DAC1064 matrox_mystique 0x89bb9fc9 +drivers/video/matrox/matroxfb_Ti3026 matrox_millennium 0x29544528 +drivers/video/matrox/matroxfb_accel matrox_cfbX_init 0xdd9108b9 +drivers/video/matrox/matroxfb_base matroxfb_enable_irq 0x631a6353 +drivers/video/matrox/matroxfb_base matroxfb_register_driver 0x786e430c +drivers/video/matrox/matroxfb_base matroxfb_unregister_driver 0x4c34eabd +drivers/video/matrox/matroxfb_base matroxfb_wait_for_sync 0xe36a67d4 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_connect 0xf512cac8 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_shutdown 0xba4b6751 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_in 0xf5c50ad9 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_out 0x7a824e68 +drivers/video/matrox/matroxfb_misc matroxfb_PLL_calcclock 0x25cf8049 +drivers/video/matrox/matroxfb_misc matroxfb_read_pins 0x24d77c59 +drivers/video/matrox/matroxfb_misc matroxfb_var2my 0xabd8e427 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWinit 0x1a6786f5 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWrestore 0x1ee4a9b6 +drivers/video/sis/sisfb sis_free 0xfe963115 +drivers/video/sis/sisfb sis_free_new 0xd49e3c4a +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0x509cd1c4 +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0x9bc0d261 +drivers/w1/ds9490r ds_put_device 0xd00432e0 +drivers/w1/ds9490r ds_read_bit 0xf064c03b +drivers/w1/ds9490r ds_read_block 0x18880fbf +drivers/w1/ds9490r ds_read_byte 0x3f1825fb +drivers/w1/ds9490r ds_reset 0x260019d6 +drivers/w1/ds9490r ds_touch_bit 0x703a2329 +drivers/w1/ds9490r ds_write_bit 0x0afcfcf1 +drivers/w1/ds9490r ds_write_block 0x9414843a +drivers/w1/ds9490r ds_write_byte 0x361f09b7 +drivers/w1/wire w1_add_master_device 0x65e2815c +drivers/w1/wire w1_calc_crc8 0x63757e92 +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xdb5cf91c +drivers/w1/wire w1_family_put 0xd304807a +drivers/w1/wire w1_family_registered 0x2854d4f0 +drivers/w1/wire w1_read_8 0x85b72634 +drivers/w1/wire w1_read_block 0x2250e9f7 +drivers/w1/wire w1_register_family 0xc3df11e5 +drivers/w1/wire w1_remove_master_device 0xf13283f7 +drivers/w1/wire w1_reset_bus 0x137748d0 +drivers/w1/wire w1_reset_select_slave 0x2c718a43 +drivers/w1/wire w1_search_devices 0xe7c1cec7 +drivers/w1/wire w1_touch_bit 0x3363d314 +drivers/w1/wire w1_unregister_family 0x79444085 +drivers/w1/wire w1_write_8 0xc477e776 +drivers/w1/wire w1_write_block 0x86f1dcb6 +fs/configfs/configfs config_group_init 0x00278e6e +fs/configfs/configfs config_group_init_type_name 0x6f1e592e +fs/configfs/configfs config_item_get 0x665f83aa +fs/configfs/configfs config_item_init 0xbbe184e9 +fs/configfs/configfs config_item_init_type_name 0x60f5e37c +fs/configfs/configfs config_item_put 0x5fbc4e98 +fs/configfs/configfs config_item_set_name 0x2a6d2d29 +fs/configfs/configfs configfs_register_subsystem 0x6a1e8eee +fs/configfs/configfs configfs_unregister_subsystem 0x7790df69 +fs/exportfs/exportfs export_op_default 0x7b84b596 +fs/exportfs/exportfs find_exported_dentry 0xf633b29d +fs/fat/fat fat_add_entries 0xd8254f86 +fs/fat/fat fat_alloc_new_dir 0xe03f036d +fs/fat/fat fat_attach 0xe40ceddc +fs/fat/fat fat_build_inode 0xcf21c38d +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0xe9aee86b +fs/fat/fat fat_dir_empty 0xe6cf2263 +fs/fat/fat fat_fill_super 0xf49f5e36 +fs/fat/fat fat_free_clusters 0xd745fbe3 +fs/fat/fat fat_fs_panic 0x92775404 +fs/fat/fat fat_get_dotdot_entry 0xb3024fad +fs/fat/fat fat_notify_change 0x7253674d +fs/fat/fat fat_remove_entries 0x8c1122a3 +fs/fat/fat fat_scan 0xf02637ec +fs/fat/fat fat_search_long 0x802908e0 +fs/fat/fat fat_sync_bhs 0x74e1614e +fs/fat/fat fat_sync_inode 0xcfd0761f +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0x141ea857 +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0x127ed483 +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0xc19f55d2 +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0x58353814 +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0x0b1d47f5 +fs/jbd/jbd journal_abort 0xf6254278 +fs/jbd/jbd journal_ack_err 0xabca37e3 +fs/jbd/jbd journal_blocks_per_page 0xe2acf660 +fs/jbd/jbd journal_check_available_features 0xff3166c7 +fs/jbd/jbd journal_check_used_features 0x7f07b33b +fs/jbd/jbd journal_clear_err 0x8d8386de +fs/jbd/jbd journal_create 0xed233bd1 +fs/jbd/jbd journal_destroy 0xb8005efa +fs/jbd/jbd journal_dirty_data 0xe32731fa +fs/jbd/jbd journal_dirty_metadata 0x457a22c2 +fs/jbd/jbd journal_errno 0x2629550b +fs/jbd/jbd journal_extend 0x5943a732 +fs/jbd/jbd journal_flush 0x0f7fc033 +fs/jbd/jbd journal_force_commit 0xe77b5c84 +fs/jbd/jbd journal_force_commit_nested 0xef27c09b +fs/jbd/jbd journal_forget 0x6efe5d56 +fs/jbd/jbd journal_get_create_access 0xfe2c295b +fs/jbd/jbd journal_get_undo_access 0xb3bcea39 +fs/jbd/jbd journal_get_write_access 0xcd70877b +fs/jbd/jbd journal_init_dev 0x067cd357 +fs/jbd/jbd journal_init_inode 0x666712e2 +fs/jbd/jbd journal_invalidatepage 0x5a9da698 +fs/jbd/jbd journal_load 0x25cc3fe3 +fs/jbd/jbd journal_lock_updates 0x15310152 +fs/jbd/jbd journal_release_buffer 0x56db2c3b +fs/jbd/jbd journal_restart 0x06624a46 +fs/jbd/jbd journal_revoke 0x5431620b +fs/jbd/jbd journal_set_features 0xcefd71d5 +fs/jbd/jbd journal_start 0x04370949 +fs/jbd/jbd journal_start_commit 0x656c3676 +fs/jbd/jbd journal_stop 0x038aba96 +fs/jbd/jbd journal_try_to_free_buffers 0xa775b159 +fs/jbd/jbd journal_unlock_updates 0xbba424eb +fs/jbd/jbd journal_update_format 0xb5ebe102 +fs/jbd/jbd journal_update_superblock 0xd9189df6 +fs/jbd/jbd journal_wipe 0xeac295e1 +fs/jbd/jbd log_wait_commit 0x121cd247 +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0x5f2d2e29 +fs/lockd/lockd nlmsvc_ops 0x82ac041d +fs/nfsd/nfsd nfs4_acl_add_ace 0xc9a24970 +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0xef013964 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0xd3452119 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xdae05306 +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x81a17396 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0xf56c2017 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0xb35a8de5 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xc4d99852 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0x6b3c52cb +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0x93dc8874 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0xc7fc9f76 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x7cdb58bd +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0xf982e6db +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0xfa83d357 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0x6aa0098d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0x19f5b574 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x89dc5ff9 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0xdb9726ee +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xb6ebf62a +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0x39feb474 +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0x894587e2 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0xc72a68f1 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0x524fea0e +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0x39a4f912 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0xf042b01b +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0xf0f7934b +fs/relayfs/relayfs relay_buf_full 0x400b8484 +fs/relayfs/relayfs relay_close 0x9be6981e +fs/relayfs/relayfs relay_flush 0x1698d5b3 +fs/relayfs/relayfs relay_open 0xaab09e98 +fs/relayfs/relayfs relay_reset 0xe807bb94 +fs/relayfs/relayfs relay_subbufs_consumed 0xf5b30617 +fs/relayfs/relayfs relay_switch_subbuf 0xf1a4c4f0 +fs/relayfs/relayfs relayfs_create_dir 0xf724ca9b +fs/relayfs/relayfs relayfs_file_operations 0x9d142841 +fs/relayfs/relayfs relayfs_remove_dir 0x42857a33 +lib/crc-ccitt crc_ccitt 0x7e821ba1 +lib/crc-ccitt crc_ccitt_table 0x7f03b6a9 +lib/crc16 crc16 0x84d4c8cc +lib/crc16 crc16_table 0x146289b7 +lib/libcrc32c crc32c_be 0xc2904b41 +lib/libcrc32c crc32c_le 0x90ec507c +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0x517151b5 +net/appletalk/appletalk alloc_ltalkdev 0xf40bf991 +net/appletalk/appletalk atalk_find_dev_addr 0x4c7fea25 +net/appletalk/appletalk atrtr_get_dev 0xdda2f605 +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0xb0777344 +net/ax25/ax25 ax25_findbyuid 0xf5550f68 +net/ax25/ax25 ax25_hard_header 0x02a5a840 +net/ax25/ax25 ax25_linkfail_register 0x4e09dbf6 +net/ax25/ax25 ax25_linkfail_release 0xbc773491 +net/ax25/ax25 ax25_listen_register 0x487f6bd4 +net/ax25/ax25 ax25_listen_release 0xfe5e66f8 +net/ax25/ax25 ax25_protocol_register 0x84c407fb +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0xc995efff +net/ax25/ax25 ax25_send_frame 0xdfeeb16c +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0x058a0ca8 +net/bluetooth/bluetooth bt_accept_enqueue 0x6fcefa8c +net/bluetooth/bluetooth bt_accept_unlink 0x2cece2ef +net/bluetooth/bluetooth bt_class 0x0b672af6 +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0x3d85b69e +net/bluetooth/bluetooth bt_sock_poll 0xb5275140 +net/bluetooth/bluetooth bt_sock_recvmsg 0x84bd5ca2 +net/bluetooth/bluetooth bt_sock_register 0x9479fbe9 +net/bluetooth/bluetooth bt_sock_unlink 0xbdc591e4 +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0xff91e724 +net/bluetooth/bluetooth hci_alloc_dev 0xd86d0d70 +net/bluetooth/bluetooth hci_conn_auth 0x1fbbe662 +net/bluetooth/bluetooth hci_conn_change_link_key 0xe92218c3 +net/bluetooth/bluetooth hci_conn_encrypt 0xa4716941 +net/bluetooth/bluetooth hci_conn_switch_role 0x9850a436 +net/bluetooth/bluetooth hci_connect 0x2c7e91d6 +net/bluetooth/bluetooth hci_free_dev 0xfb572922 +net/bluetooth/bluetooth hci_get_route 0x7e873b18 +net/bluetooth/bluetooth hci_register_cb 0x92e02a3e +net/bluetooth/bluetooth hci_register_dev 0xabca42f1 +net/bluetooth/bluetooth hci_register_proto 0xdfd035ac +net/bluetooth/bluetooth hci_resume_dev 0xac72362a +net/bluetooth/bluetooth hci_send_acl 0xb78d379f +net/bluetooth/bluetooth hci_send_sco 0xb9a6ea1a +net/bluetooth/bluetooth hci_suspend_dev 0x4a6c62df +net/bluetooth/bluetooth hci_unregister_cb 0x40983631 +net/bluetooth/bluetooth hci_unregister_dev 0xd715e208 +net/bluetooth/bluetooth hci_unregister_proto 0xd10bac71 +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0x65110596 +net/bridge/netfilter/ebtables ebt_do_table 0x99a5bf21 +net/bridge/netfilter/ebtables ebt_register_match 0xc8676b5b +net/bridge/netfilter/ebtables ebt_register_table 0x82739cda +net/bridge/netfilter/ebtables ebt_register_target 0x91360ccf +net/bridge/netfilter/ebtables ebt_register_watcher 0x045875a9 +net/bridge/netfilter/ebtables ebt_unregister_match 0xca1755b7 +net/bridge/netfilter/ebtables ebt_unregister_table 0x945f7fb8 +net/bridge/netfilter/ebtables ebt_unregister_target 0x35d42483 +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x5813562f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0x87634e95 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc83c96e5 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x2319ff67 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x864c046f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0xa2665cc8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x884c6ee3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0x180a9321 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0xa74eb8d4 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x3b3a928a +net/dccp/dccp ccid_exit 0x96e5ee45 +net/dccp/dccp ccid_init 0x0587d8d8 +net/dccp/dccp ccid_register 0x0b27aeac +net/dccp/dccp ccid_unregister 0xf1bdf83d +net/dccp/dccp dccp_hashinfo 0x4af177d3 +net/dccp/dccp dccp_insert_option 0xa7b78f86 +net/dccp/dccp dccp_insert_option_elapsed_time 0x01371d73 +net/dccp/dccp dccp_insert_option_timestamp 0x2f637b01 +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0x62b7df9f +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0x54e10d03 +net/ieee80211/ieee80211 alloc_ieee80211 0x0fadd463 +net/ieee80211/ieee80211 escape_essid 0xb731e545 +net/ieee80211/ieee80211 free_ieee80211 0x19c8a7ef +net/ieee80211/ieee80211 ieee80211_channel_to_index 0xa7f6a008 +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0x55c05319 +net/ieee80211/ieee80211 ieee80211_get_channel 0x80e96874 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0xc760bb5f +net/ieee80211/ieee80211 ieee80211_get_geo 0x40d17505 +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0xf4742758 +net/ieee80211/ieee80211 ieee80211_rx 0x7a843bb3 +net/ieee80211/ieee80211 ieee80211_rx_mgt 0x2e83576d +net/ieee80211/ieee80211 ieee80211_set_geo 0x09c0a80c +net/ieee80211/ieee80211 ieee80211_tx_frame 0x98ce412b +net/ieee80211/ieee80211 ieee80211_txb_free 0xfe8f88af +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0x1b30cbe5 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0x067aa3ce +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0xd7ed9960 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0xbd38fb33 +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0x848d015f +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0xdc23190e +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x4adfa098 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0xfa885937 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x9e4efa6a +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0x333938b1 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x550e7936 +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0x1a12b992 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x6cadd6f9 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0xad6588f3 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0xf8f900f0 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x5245578f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0xf70220d1 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0xd4ea8faf +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0x56b29cab +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0x03f01689 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0xd755a42b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0x533f216f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0xc1b25535 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0x21aa41d0 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x95e750fc +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x4452d907 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x11b4e692 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0xea99b26d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x0a81a688 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x0a5a9a46 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x139af9d4 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0x07df439b +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x3b8d88a7 +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x54e1993a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0xc696f274 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0x66ba6d25 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0x65f24bc8 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0x63dda54c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0xa0033f7c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0xbd6777b5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x166c25fd +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0xe6a8a7d2 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0xb100bec5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0xdcf66c6d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x1e94ba65 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x16c20622 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x3ac5d9cc +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0xc87a2e2c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x6edd16b4 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0x5bed3da8 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0x4a957b5b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0xc77c0fb6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x77d37069 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0xfdbec373 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0x6044eea3 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0x51d4b8a1 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0xa7a27221 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x11108154 +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0xef2bf227 +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0xb446de6b +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0x490c548f +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0x6435a3bf +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0xbb8d8597 +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0xe0ee4758 +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0x9eeba4d6 +net/ipv4/ipvs/ip_vs register_ip_vs_app 0x48d67443 +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0x22c71dc6 +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0xaa7d1373 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0xc5a607ba +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0x783aa952 +net/ipv4/netfilter/arp_tables arpt_do_table 0xc369be20 +net/ipv4/netfilter/arp_tables arpt_register_table 0xca06cd87 +net/ipv4/netfilter/arp_tables arpt_register_target 0x1a1bf651 +net/ipv4/netfilter/arp_tables arpt_unregister_table 0xe5d395ce +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x86b65ca9 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0xef6dcd30 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x91dbb89b +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0x0e8258f3 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x3435848c +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0x53dcbb5e +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0x282d1eea +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x27628b0d +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0x0facb386 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0x717a60dd +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0xd16c1795 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0x1100030d +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0xaf56e057 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0x0a86a816 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0xd98acf7b +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x1bfa7e58 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0x4b164126 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0x7ab3d182 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0xb244b341 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x6c0db7f1 +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0xa88ccd7c +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x2f1e88d5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x350c35ab +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x5d49778b +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x60cdbe01 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0xd95036eb +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0xafe5dcd9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x2226f993 +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x766e7ae6 +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0xce14928a +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0xbd786b11 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x7dfef863 +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0xfa84a7f3 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0xcb9f5d04 +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0x43f26a3c +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x8513f91b +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x9da73bc4 +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0x512d15e2 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0x4fb8f1dc +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0x6f647287 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0x26b2c81d +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0xb33feb1d +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0xf6927f86 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x6056e763 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0xd2fc7ead +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0x764a9124 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0x48b96675 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0xec5e6354 +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0xa0071d31 +net/ipv4/netfilter/ip_nat ip_nat_packet 0x3a299434 +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x4c880698 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x23d359ea +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x09bd76b1 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0xc7a40f1b +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x4da4aa1b +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0x9bd4bf71 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0xc5ec9112 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x42b4b5a4 +net/ipv4/netfilter/ip_tables ipt_do_table 0x20702e41 +net/ipv4/netfilter/ip_tables ipt_find_target 0x378b71f4 +net/ipv4/netfilter/ip_tables ipt_register_match 0x9ab45270 +net/ipv4/netfilter/ip_tables ipt_register_table 0x9d62d649 +net/ipv4/netfilter/ip_tables ipt_register_target 0x50cfb322 +net/ipv4/netfilter/ip_tables ipt_unregister_match 0xbc3e647e +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x9cba16e7 +net/ipv4/netfilter/ip_tables ipt_unregister_target 0x5a91ebaf +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0x88616962 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0xaa5c7fe4 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0x11065b31 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0xdd46c05f +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x7d58b841 +net/ipv6/ipv6 inet6_add_protocol 0xa13a2372 +net/ipv6/ipv6 inet6_bind 0x083162d3 +net/ipv6/ipv6 inet6_del_protocol 0x844c09c5 +net/ipv6/ipv6 inet6_getname 0x64277b38 +net/ipv6/ipv6 inet6_ioctl 0x33f583d5 +net/ipv6/ipv6 inet6_register_protosw 0x0673c5f1 +net/ipv6/ipv6 inet6_release 0xdb6707d3 +net/ipv6/ipv6 inet6_unregister_protosw 0x9d535f21 +net/ipv6/ipv6 ip6_route_me_harder 0xd95069a9 +net/ipv6/ipv6 ip6_route_output 0xb7a25f03 +net/ipv6/ipv6 ip6_xmit 0x2fe3943e +net/ipv6/ipv6 ipv6_chk_addr 0x21fe3aac +net/ipv6/ipv6 ipv6_get_saddr 0x70f88e7d +net/ipv6/ipv6 ipv6_getsockopt 0x0c0e850b +net/ipv6/ipv6 ipv6_push_nfrag_opts 0x20746df9 +net/ipv6/ipv6 ipv6_setsockopt 0x44780840 +net/ipv6/ipv6 ndisc_mc_map 0x7b48fa05 +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x6da9064e +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0x95f2fa22 +net/ipv6/ipv6 xfrm6_rcv_spi 0x6622cf83 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0xbe8bf644 +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0x80472a0b +net/ipv6/netfilter/ip6_tables ip6t_register_match 0xb3c9e629 +net/ipv6/netfilter/ip6_tables ip6t_register_table 0x8d7b5187 +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x7f83b8ff +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0x9a446175 +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x63fc6bcd +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0xabf21d8a +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0xe276b54b +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x05511932 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0x93c015c7 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0x02b26eea +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x16e3457a +net/irda/ircomm/ircomm ircomm_close 0x77ffc1ad +net/irda/ircomm/ircomm ircomm_connect_request 0xbd8c0a29 +net/irda/ircomm/ircomm ircomm_connect_response 0x98a12863 +net/irda/ircomm/ircomm ircomm_control_request 0xb2d6b753 +net/irda/ircomm/ircomm ircomm_data_request 0x7087f0bc +net/irda/ircomm/ircomm ircomm_disconnect_request 0xc555688e +net/irda/ircomm/ircomm ircomm_flow_request 0x00ce8c70 +net/irda/ircomm/ircomm ircomm_open 0xf9518be6 +net/irda/irda alloc_irdadev 0xf2faf123 +net/irda/irda async_unwrap_char 0x68247287 +net/irda/irda async_wrap_skb 0x1bf7cf42 +net/irda/irda hashbin_delete 0x1c51e992 +net/irda/irda hashbin_find 0x6621aa8a +net/irda/irda hashbin_get_first 0x538fe1e0 +net/irda/irda hashbin_get_next 0xe2f84c82 +net/irda/irda hashbin_insert 0x22b0f52d +net/irda/irda hashbin_lock_find 0x19d79c82 +net/irda/irda hashbin_new 0x5504cf7c +net/irda/irda hashbin_remove 0x3b2e9df9 +net/irda/irda hashbin_remove_this 0x57fb1ed2 +net/irda/irda irda_device_dongle_cleanup 0xe95289ad +net/irda/irda irda_device_dongle_init 0xf067f83e +net/irda/irda irda_device_register_dongle 0xc445b6bd +net/irda/irda irda_device_set_media_busy 0x4dac0634 +net/irda/irda irda_device_unregister_dongle 0x3e96f8db +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0xfea0dfb6 +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0x4165c707 +net/irda/irda iriap_getvaluebyclass_request 0x73209d00 +net/irda/irda iriap_open 0xdb04cbc1 +net/irda/irda irias_add_integer_attrib 0x519118cc +net/irda/irda irias_add_octseq_attrib 0x05d7cfe5 +net/irda/irda irias_add_string_attrib 0x701e028e +net/irda/irda irias_delete_object 0x5aad87aa +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x503ad245 +net/irda/irda irias_find_object 0x42c7c5ce +net/irda/irda irias_insert_object 0x30827e1c +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0x5d609063 +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0x7a8762f7 +net/irda/irda irlap_open 0xb15df9a7 +net/irda/irda irlmp_close_lsap 0x41fca8f0 +net/irda/irda irlmp_connect_request 0x94ed9ce9 +net/irda/irda irlmp_connect_response 0x842aa6a6 +net/irda/irda irlmp_data_request 0x89768c46 +net/irda/irda irlmp_disconnect_request 0x5132d1cd +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0xaf13ee91 +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0x95442e71 +net/irda/irda irttp_connect_request 0xd7591a5f +net/irda/irda irttp_connect_response 0xb27a18bd +net/irda/irda irttp_data_request 0x0865c78b +net/irda/irda irttp_disconnect_request 0xfad2b1d8 +net/irda/irda irttp_dup 0x379932b1 +net/irda/irda irttp_flow_request 0x81165f35 +net/irda/irda irttp_open_tsap 0x251b1893 +net/irda/irda irttp_udata_request 0x57c0ded9 +net/irda/irda proc_irda 0xc17d0ac7 +net/netfilter/nfnetlink __nfa_fill 0xa3f36339 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0x0a01409b +net/netfilter/nfnetlink nfnetlink_subsys_register 0x67fe2cc3 +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0x7caaaba2 +net/netfilter/nfnetlink nfnetlink_unicast 0x136f9b3b +net/rxrpc/rxrpc rxrpc_add_service 0x3c8b61c1 +net/rxrpc/rxrpc rxrpc_call_abort 0xc6c7b6e9 +net/rxrpc/rxrpc rxrpc_call_read_data 0xd5ff635e +net/rxrpc/rxrpc rxrpc_call_write_data 0x9833c38d +net/rxrpc/rxrpc rxrpc_create_call 0x0f967598 +net/rxrpc/rxrpc rxrpc_create_connection 0x6669f428 +net/rxrpc/rxrpc rxrpc_create_transport 0x52e13f95 +net/rxrpc/rxrpc rxrpc_del_service 0xf3aa84e3 +net/rxrpc/rxrpc rxrpc_put_call 0xf572f6ad +net/rxrpc/rxrpc rxrpc_put_connection 0xcdcb0ea2 +net/rxrpc/rxrpc rxrpc_put_transport 0x99faeaa9 +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x38d3dce5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0x482ac5a4 +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xd7673035 +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0xf249ae27 +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0x8cc19db7 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0x638fd39a +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0x5f7b9b16 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0x5f5ac79d +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0x010725cc +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0x6d78385f +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0x9dfd9ef2 +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0x34099853 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0xa09c634e +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0x92a0c9d6 +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0xf7ec31cd +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0xad518700 +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x856f405e +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x0d9fd9d6 +net/sunrpc/sunrpc auth_domain_find 0x66473d18 +net/sunrpc/sunrpc auth_domain_lookup 0x8753673f +net/sunrpc/sunrpc auth_domain_put 0x0c1f8bcf +net/sunrpc/sunrpc auth_unix_add_addr 0xbb40b9c8 +net/sunrpc/sunrpc auth_unix_forget_old 0x6611c290 +net/sunrpc/sunrpc auth_unix_lookup 0xdea87810 +net/sunrpc/sunrpc cache_check 0xe01cbff6 +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0xd8f5685e +net/sunrpc/sunrpc cache_init 0x404d68bb +net/sunrpc/sunrpc cache_purge 0x5e1cde53 +net/sunrpc/sunrpc cache_register 0x5acb1683 +net/sunrpc/sunrpc cache_unregister 0x84e83c39 +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0x8cd02719 +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0x25044746 +net/sunrpc/sunrpc rpc_bind_new_program 0x85c11580 +net/sunrpc/sunrpc rpc_call_async 0x380bb08b +net/sunrpc/sunrpc rpc_call_setup 0xd7ac1f61 +net/sunrpc/sunrpc rpc_call_sync 0xaa0af842 +net/sunrpc/sunrpc rpc_clnt_sigmask 0x0b01f7b9 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0xaea128e4 +net/sunrpc/sunrpc rpc_clone_client 0xb9b5c492 +net/sunrpc/sunrpc rpc_create_client 0xefbd9343 +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0x4f01c142 +net/sunrpc/sunrpc rpc_destroy_client 0xa253f634 +net/sunrpc/sunrpc rpc_execute 0x0d2cd889 +net/sunrpc/sunrpc rpc_init_task 0x1927a726 +net/sunrpc/sunrpc rpc_init_wait_queue 0x9b8a689d +net/sunrpc/sunrpc rpc_killall_tasks 0xd38aef5a +net/sunrpc/sunrpc rpc_max_payload 0x39f8c915 +net/sunrpc/sunrpc rpc_mkpipe 0xdfa147d2 +net/sunrpc/sunrpc rpc_new_child 0x6501be8f +net/sunrpc/sunrpc rpc_new_client 0x4316fb00 +net/sunrpc/sunrpc rpc_new_task 0x178e989b +net/sunrpc/sunrpc rpc_proc_register 0x865e1675 +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x0064cbe6 +net/sunrpc/sunrpc rpc_release_client 0x907fffa2 +net/sunrpc/sunrpc rpc_release_task 0x496fbc38 +net/sunrpc/sunrpc rpc_restart_call 0xcca3bae1 +net/sunrpc/sunrpc rpc_run_child 0x93f4b94a +net/sunrpc/sunrpc rpc_setbufsize 0xe1371d14 +net/sunrpc/sunrpc rpc_shutdown_client 0xdc4263c4 +net/sunrpc/sunrpc rpc_sleep_on 0x09404384 +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0x49e5e765 +net/sunrpc/sunrpc rpc_wake_up_next 0xd5e91889 +net/sunrpc/sunrpc rpc_wake_up_status 0x4e43d6e5 +net/sunrpc/sunrpc rpc_wake_up_task 0xc8d77002 +net/sunrpc/sunrpc rpcauth_create 0x187bd6c0 +net/sunrpc/sunrpc rpcauth_free_credcache 0x21428da2 +net/sunrpc/sunrpc rpcauth_init_credcache 0x992ace3d +net/sunrpc/sunrpc rpcauth_lookup_credcache 0x0f1d3a1c +net/sunrpc/sunrpc rpcauth_lookupcred 0x9e4c1403 +net/sunrpc/sunrpc rpcauth_register 0x1366fb8e +net/sunrpc/sunrpc rpcauth_unregister 0x56a276b8 +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x08b05f1a +net/sunrpc/sunrpc svc_auth_unregister 0x5a45ba31 +net/sunrpc/sunrpc svc_authenticate 0x30d9eecf +net/sunrpc/sunrpc svc_create 0x893087c2 +net/sunrpc/sunrpc svc_create_thread 0x7e31d88c +net/sunrpc/sunrpc svc_destroy 0xbf6f8e0e +net/sunrpc/sunrpc svc_drop 0x591bae0e +net/sunrpc/sunrpc svc_exit_thread 0x3ca8ed4c +net/sunrpc/sunrpc svc_makesock 0xa11920ee +net/sunrpc/sunrpc svc_proc_register 0xca977304 +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0x0d9cd9b1 +net/sunrpc/sunrpc svc_recv 0x7e193183 +net/sunrpc/sunrpc svc_reserve 0x4aae6dea +net/sunrpc/sunrpc svc_seq_show 0xed6f8252 +net/sunrpc/sunrpc svc_set_client 0xf604bfab +net/sunrpc/sunrpc svc_wake_up 0xd7b9e308 +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x3e482943 +net/sunrpc/sunrpc xdr_buf_from_iov 0xea120e20 +net/sunrpc/sunrpc xdr_buf_read_netobj 0xe2c53ef7 +net/sunrpc/sunrpc xdr_buf_subsegment 0xae210005 +net/sunrpc/sunrpc xdr_decode_array2 0x538a7c9e +net/sunrpc/sunrpc xdr_decode_netobj 0x1b431c8f +net/sunrpc/sunrpc xdr_decode_string 0xe7e08cbd +net/sunrpc/sunrpc xdr_decode_string_inplace 0xf3692830 +net/sunrpc/sunrpc xdr_decode_word 0xcb8492f0 +net/sunrpc/sunrpc xdr_encode_array2 0xde73a4c8 +net/sunrpc/sunrpc xdr_encode_netobj 0x08366747 +net/sunrpc/sunrpc xdr_encode_opaque 0x7874c50f +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0xd75126a9 +net/sunrpc/sunrpc xdr_encode_pages 0x2705b00f +net/sunrpc/sunrpc xdr_encode_string 0x3d9bb42c +net/sunrpc/sunrpc xdr_encode_word 0xe394d196 +net/sunrpc/sunrpc xdr_init_decode 0xfe6ddf1b +net/sunrpc/sunrpc xdr_init_encode 0x8ca17efc +net/sunrpc/sunrpc xdr_inline_decode 0xbf2c5f8b +net/sunrpc/sunrpc xdr_inline_pages 0x6a21c4f5 +net/sunrpc/sunrpc xdr_read_pages 0x8fc0f9a1 +net/sunrpc/sunrpc xdr_reserve_space 0xa811f1b4 +net/sunrpc/sunrpc xdr_shift_buf 0x03626b3c +net/sunrpc/sunrpc xdr_write_pages 0x237678ed +net/sunrpc/sunrpc xprt_create_proto 0x2a75d115 +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x9d20d394 +net/wanrouter/wanrouter register_wan_device 0x0e557033 +net/wanrouter/wanrouter unlock_adapter_irq 0xb684b986 +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0x6ac34049 +net/wanrouter/wanrouter wanrouter_type_trans 0x0849594f +security/commoncap cap_bprm_apply_creds 0x8b6e81e4 +security/commoncap cap_bprm_secureexec 0x0323b97f +security/commoncap cap_bprm_set_security 0xca9510a1 +security/commoncap cap_capable 0x0fe1a8ac +security/commoncap cap_capget 0x40480133 +security/commoncap cap_capset_check 0x8850102d +security/commoncap cap_capset_set 0xc1a372a1 +security/commoncap cap_inode_removexattr 0x48f83e71 +security/commoncap cap_inode_setxattr 0xf92a3909 +security/commoncap cap_netlink_recv 0xd3045f18 +security/commoncap cap_netlink_send 0x0dbb2101 +security/commoncap cap_ptrace 0x71004ac9 +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x13ea5cf8 +security/commoncap cap_task_reparent_to_init 0xe8835b59 +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x5f85393f +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x49f96187 +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0xa7c1ffe7 +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0xfa510305 +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x8503f4f1 +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x1f2c1c9e +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x6e647034 +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0xfd28dc28 +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x30402c03 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x4225c718 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0xf13a8648 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0x9958fec7 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0x4b315eb5 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x652e5613 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0xc45d349a +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x20b09520 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x94bcd226 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x2f00b54d +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x8d98548b +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0xc7bd34d4 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0xb9643a3b +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0x953a9818 +sound/core/snd copy_from_user_toio 0x518bb7f8 +sound/core/snd copy_to_user_fromio 0xe243dde3 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0xa572bccf +sound/core/snd snd_card_file_add 0x854d03a9 +sound/core/snd snd_card_file_remove 0xb3f07c3a +sound/core/snd snd_card_free 0xec2d4b81 +sound/core/snd snd_card_free_in_thread 0x0b81d71a +sound/core/snd snd_card_new 0xef1151b0 +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0x9f532e79 +sound/core/snd snd_card_register 0x1fb7a4bb +sound/core/snd snd_card_set_generic_dev 0xcae8f566 +sound/core/snd snd_card_set_generic_pm_callback 0x1cab491e +sound/core/snd snd_card_set_pm_callback 0x8a7c843b +sound/core/snd snd_cards 0xac82fd88 +sound/core/snd snd_component_add 0x564cf3fc +sound/core/snd snd_ctl_add 0xfd1ced40 +sound/core/snd snd_ctl_elem_read 0x210aeae6 +sound/core/snd snd_ctl_elem_write 0x8df76710 +sound/core/snd snd_ctl_find_id 0x755d2cad +sound/core/snd snd_ctl_find_numid 0x23565d19 +sound/core/snd snd_ctl_free_one 0xa81465c3 +sound/core/snd snd_ctl_new 0xf57b7d98 +sound/core/snd snd_ctl_new1 0xab6e5d11 +sound/core/snd snd_ctl_notify 0xca571018 +sound/core/snd snd_ctl_register_ioctl 0xeb2ccde0 +sound/core/snd snd_ctl_register_ioctl_compat 0x1c0a1c4b +sound/core/snd snd_ctl_remove 0x971eca1a +sound/core/snd snd_ctl_remove_id 0x4ab010ae +sound/core/snd snd_ctl_rename_id 0x82994846 +sound/core/snd snd_ctl_unregister_ioctl 0xca9422c5 +sound/core/snd snd_ctl_unregister_ioctl_compat 0x5ea428a9 +sound/core/snd snd_device_free 0x1f971c5a +sound/core/snd snd_device_new 0x86479987 +sound/core/snd snd_device_register 0x1e1aba75 +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0x5ebebe77 +sound/core/snd snd_info_create_module_entry 0x4d6b7a8b +sound/core/snd snd_info_free_entry 0x857b5850 +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0xe0806d03 +sound/core/snd snd_info_unregister 0xb7206abd +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0xf5bf0a5a +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0x8e6244f8 +sound/core/snd snd_register_device 0x99dc3fd5 +sound/core/snd snd_register_oss_device 0xccca9f01 +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0x93b7d255 +sound/core/snd snd_unregister_device 0x7ca1f577 +sound/core/snd snd_unregister_oss_device 0x71241a71 +sound/core/snd-hwdep snd_hwdep_new 0x2baaf414 +sound/core/snd-page-alloc snd_dma_alloc_pages 0x03ae78d6 +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0xadbaa442 +sound/core/snd-page-alloc snd_dma_free_pages 0xc95ff448 +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0x2f203ad5 +sound/core/snd-page-alloc snd_dma_reserve_buf 0xba275fdf +sound/core/snd-page-alloc snd_free_pages 0x19cc2ce3 +sound/core/snd-page-alloc snd_malloc_pages 0xc6829020 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x0beab9b1 +sound/core/snd-pcm snd_pcm_devices 0xf213afee +sound/core/snd-pcm snd_pcm_format_big_endian 0x93878ece +sound/core/snd-pcm snd_pcm_format_linear 0x8733f967 +sound/core/snd-pcm snd_pcm_format_little_endian 0x8bbdc311 +sound/core/snd-pcm snd_pcm_format_name 0xedd5b5bd +sound/core/snd-pcm snd_pcm_format_physical_width 0xa8edfa41 +sound/core/snd-pcm snd_pcm_format_set_silence 0xdf124602 +sound/core/snd-pcm snd_pcm_format_signed 0xe2c5f868 +sound/core/snd-pcm snd_pcm_format_silence_64 0xda29bc77 +sound/core/snd-pcm snd_pcm_format_size 0xa2658908 +sound/core/snd-pcm snd_pcm_format_unsigned 0x95a60aa5 +sound/core/snd-pcm snd_pcm_format_width 0x55eb2175 +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0xcf32f9bb +sound/core/snd-pcm snd_pcm_hw_constraint_list 0x08221364 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0xfb3b775f +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0xf85908e3 +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0x792e0e3c +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x306fa3ae +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x5f80ec25 +sound/core/snd-pcm snd_pcm_hw_constraint_step 0xb01c7597 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0xa745d613 +sound/core/snd-pcm snd_pcm_hw_constraints_init 0xb6189d25 +sound/core/snd-pcm snd_pcm_hw_param_first 0x07ca455c +sound/core/snd-pcm snd_pcm_hw_param_last 0xb9303c72 +sound/core/snd-pcm snd_pcm_hw_param_mask 0x544c9102 +sound/core/snd-pcm snd_pcm_hw_param_near 0x3d9788aa +sound/core/snd-pcm snd_pcm_hw_param_set 0xfc8c3e08 +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0x9660e4e7 +sound/core/snd-pcm snd_pcm_hw_rule_add 0x2a3a41fc +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0x42ebf2d6 +sound/core/snd-pcm snd_pcm_kernel_ioctl 0xbbe0708c +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0xe9c66079 +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0xa2159b89 +sound/core/snd-pcm snd_pcm_lib_free_pages 0x8dd91c60 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x6fd4537a +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x2fc45e96 +sound/core/snd-pcm snd_pcm_lib_period_bytes 0x723246b7 +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x59f79e1b +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0x45b96300 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0xa38e7168 +sound/core/snd-pcm snd_pcm_lib_read 0xbe55615f +sound/core/snd-pcm snd_pcm_lib_readv 0xfa2736b3 +sound/core/snd-pcm snd_pcm_lib_write 0x45db5d28 +sound/core/snd-pcm snd_pcm_lib_writev 0xa6f5f518 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x6db245ff +sound/core/snd-pcm snd_pcm_link_rwlock 0x395e287f +sound/core/snd-pcm snd_pcm_mmap_data 0x28e72c6e +sound/core/snd-pcm snd_pcm_new 0x5f1be883 +sound/core/snd-pcm snd_pcm_new_stream 0x5e54c80f +sound/core/snd-pcm snd_pcm_notify 0x6ceceff4 +sound/core/snd-pcm snd_pcm_open_substream 0xaec5863d +sound/core/snd-pcm snd_pcm_period_elapsed 0x9f73b31b +sound/core/snd-pcm snd_pcm_release_substream 0xec6f5ef4 +sound/core/snd-pcm snd_pcm_set_ops 0xc8da5958 +sound/core/snd-pcm snd_pcm_set_sync 0xeef7bb6f +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0xeed03eea +sound/core/snd-pcm snd_pcm_stop 0xc91c5f52 +sound/core/snd-pcm snd_pcm_suspend 0xd15a1d82 +sound/core/snd-pcm snd_pcm_suspend_all 0x2ced43a0 +sound/core/snd-rawmidi snd_rawmidi_drain_input 0xbb4d1797 +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x428485c8 +sound/core/snd-rawmidi snd_rawmidi_drop_output 0x97c42bcd +sound/core/snd-rawmidi snd_rawmidi_info 0x04a06b06 +sound/core/snd-rawmidi snd_rawmidi_info_select 0xa60cd6e1 +sound/core/snd-rawmidi snd_rawmidi_input_params 0x6023be8d +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0xe2c96c72 +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0xe22be6b4 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0xb7fbe6f8 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0xb673c40d +sound/core/snd-rawmidi snd_rawmidi_new 0xc7c4d61b +sound/core/snd-rawmidi snd_rawmidi_output_params 0x0f24da94 +sound/core/snd-rawmidi snd_rawmidi_receive 0x1e56f955 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x0d52834d +sound/core/snd-rawmidi snd_rawmidi_transmit 0xd22a8e6e +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0xc52493bc +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x5fdeef6d +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0xb466cd11 +sound/core/snd-timer snd_timer_close 0x53d316ed +sound/core/snd-timer snd_timer_continue 0x2bb16695 +sound/core/snd-timer snd_timer_global_free 0x5f36b9cc +sound/core/snd-timer snd_timer_global_new 0xb6afbcbc +sound/core/snd-timer snd_timer_global_register 0x4317721c +sound/core/snd-timer snd_timer_global_unregister 0xaf9eaf20 +sound/core/snd-timer snd_timer_interrupt 0x0407d38d +sound/core/snd-timer snd_timer_new 0xd3a4ed1a +sound/core/snd-timer snd_timer_notify 0x14d6bd63 +sound/core/snd-timer snd_timer_open 0x1a59b8c2 +sound/core/snd-timer snd_timer_pause 0xa9478b8b +sound/core/snd-timer snd_timer_resolution 0x381b3bb4 +sound/core/snd-timer snd_timer_start 0x28be4dee +sound/core/snd-timer snd_timer_stop 0x0c4c91dc +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0xa9507612 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x2581687c +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0x3b4501f5 +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0xe7e4868a +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0xe731ab66 +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0xfbc9e1d3 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0xd8d3ee2d +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0x02e16142 +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0x7424b7c6 +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x1d72c2e2 +sound/drivers/vx/snd-vx-lib snd_vx_create 0xa063fb48 +sound/drivers/vx/snd-vx-lib snd_vx_delay 0x4f8224f3 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x67a62641 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x4eb129ff +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0xf91f54fa +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x27954d8d +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0x71b7a9ef +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0xc491ae5a +sound/i2c/other/snd-ak4114 snd_ak4114_build 0x7471d663 +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0x58e794d0 +sound/i2c/other/snd-ak4114 snd_ak4114_create 0x3f10e00c +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0x467c6ee6 +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0x30e8ebf2 +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0xd4ad6cd4 +sound/i2c/other/snd-ak4117 snd_ak4117_build 0xaaf55f94 +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0x8e0440d8 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0x15ffe64f +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x0dc1419a +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x2de21903 +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x9526af1b +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0x3cf5067a +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0x1c9cc7b9 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0x091050c7 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0x78d4c8ce +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0x81ee86f5 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0xa7f36064 +sound/i2c/snd-cs8427 snd_cs8427_create 0xcde166ae +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0xe2f53cce +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0x81601618 +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0x21ba777c +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0x93083d33 +sound/i2c/snd-cs8427 snd_cs8427_reset 0x57147cd8 +sound/i2c/snd-i2c snd_i2c_bus_create 0x384bcc60 +sound/i2c/snd-i2c snd_i2c_device_create 0xcb16dc95 +sound/i2c/snd-i2c snd_i2c_device_free 0x78eb6795 +sound/i2c/snd-i2c snd_i2c_probeaddr 0xa2a1d111 +sound/i2c/snd-i2c snd_i2c_readbytes 0x5a044081 +sound/i2c/snd-i2c snd_i2c_sendbytes 0x86a7691b +sound/oss/ac97_codec ac97_alloc_codec 0x40693dc9 +sound/oss/ac97_codec ac97_probe_codec 0x3276671d +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0x051fc956 +sound/oss/ac97_codec ac97_release_codec 0x20de675d +sound/oss/ac97_codec ac97_restore_state 0xe699a976 +sound/oss/ac97_codec ac97_save_state 0x0c3dea90 +sound/oss/ac97_codec ac97_set_adc_rate 0x448ee762 +sound/oss/ac97_codec ac97_set_dac_rate 0x5bf565dd +sound/oss/ac97_codec ac97_tune_hardware 0x0370c04a +sound/oss/ac97_codec ac97_unregister_driver 0x4ac9699d +sound/oss/msnd msnd_disable_irq 0x0478cbe6 +sound/oss/msnd msnd_enable_irq 0xff3bbc77 +sound/oss/msnd msnd_fifo_alloc 0x9853d449 +sound/oss/msnd msnd_fifo_free 0x180cefff +sound/oss/msnd msnd_fifo_init 0x68473da1 +sound/oss/msnd msnd_fifo_make_empty 0x679297db +sound/oss/msnd msnd_fifo_read 0xca41668a +sound/oss/msnd msnd_fifo_read_io 0x141fba4d +sound/oss/msnd msnd_fifo_write 0xc8646b7f +sound/oss/msnd msnd_fifo_write_io 0x80504a66 +sound/oss/msnd msnd_init_queue 0x340a3ddf +sound/oss/msnd msnd_register 0x62c59df0 +sound/oss/msnd msnd_send_dsp_cmd 0x96a30190 +sound/oss/msnd msnd_send_word 0xe35868da +sound/oss/msnd msnd_unregister 0xefd56c1f +sound/oss/msnd msnd_upload_host 0x7c97deab +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x9e9271cb +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0xe33ec643 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0x6e8272a1 +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0x8fbedb53 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0x630484a4 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0xc3245e99 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x3c089303 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0x4eef4221 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0xb9cf36cf +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0x569ee412 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0xa7d3b374 +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0xe1829792 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x47eee627 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0xad2246c4 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0x422165aa +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0x1925979c +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0x1ac94ce9 +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0x403f8178 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0x660eefea +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x3db60046 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0xd57e759a +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0x69b15f6d +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0x3ace2515 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0x20aef35c +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0xe1922809 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0xc748cee5 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0x8e3337a4 +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0xd0692a2e +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0x7586184a +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0xd669c46e +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0xdbc1575c +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0x6d266def +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0xcc5f1a7c +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x2cd48d96 +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0x87feba95 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0x4ac427dc +sound/pci/hda/snd-hda-codec snd_hda_resume 0xa0081822 +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0x2498df34 +sound/pci/hda/snd-hda-codec snd_hda_suspend 0x89c53d00 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0x3068a330 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0xbd80daeb +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0x457ab6a9 +sound/pci/trident/snd-trident snd_trident_alloc_voice 0xebd20f6a +sound/pci/trident/snd-trident snd_trident_free_voice 0x734e6e84 +sound/pci/trident/snd-trident snd_trident_start_voice 0x45c0c8d6 +sound/pci/trident/snd-trident snd_trident_stop_voice 0x22c3beb5 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0xa41192d3 +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0x6091ae20 +sound/pci/trident/snd-trident snd_trident_synth_free 0x5e5f5de4 +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0x60b7add8 +sound/synth/emux/snd-emux-synth snd_emux_free 0x2d2963c7 +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0xe3bdd919 +sound/synth/emux/snd-emux-synth snd_emux_new 0x6623a4ba +sound/synth/emux/snd-emux-synth snd_emux_register 0x73dd7902 +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0xfbeb81d4 +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0xbbf1eb12 +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0x4286ad28 +sound/synth/snd-util-mem __snd_util_mem_free 0xdd436c87 +sound/synth/snd-util-mem __snd_util_memblk_new 0x47f7338e +sound/synth/snd-util-mem snd_util_mem_alloc 0xab9e1ecd +sound/synth/snd-util-mem snd_util_mem_avail 0x878f2255 +sound/synth/snd-util-mem snd_util_mem_free 0x678cd602 +sound/synth/snd-util-mem snd_util_memhdr_free 0xb2daa994 +sound/synth/snd-util-mem snd_util_memhdr_new 0xb07f874e +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0x01fa2f3d +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux I_BDEV 0x0b69535a +vmlinux SELECT_DRIVE 0x9997a956 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0xe7b64cc7 +vmlinux __alloc_pages 0xa9c0525e +vmlinux __alloc_skb 0xd50de68f +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0x3d7f2c10 +vmlinux __bio_clone 0xf676c176 +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0x42799190 +vmlinux __bread 0x33f2a09a +vmlinux __breadahead 0xfb5276ff +vmlinux __break_lease 0x536ec88f +vmlinux __brelse 0x6c6d90a4 +vmlinux __check_region 0xf1d0cdab +vmlinux __copy_user 0x04d243f5 +vmlinux __cpufreq_driver_target 0xcafc431e +vmlinux __create_workqueue 0xc96d6cfc +vmlinux __d_path 0xe0da3afe +vmlinux __dev_get_by_index 0x1cb519c0 +vmlinux __dev_get_by_name 0x606677a2 +vmlinux __dev_remove_pack 0x237c1687 +vmlinux __divdi3 0xe8679178 +vmlinux __divsi3 0x211331fa +vmlinux __do_clear_user 0x3f6bc633 +vmlinux __down 0x36f22991 +vmlinux __down_interruptible 0xb4596450 +vmlinux __down_trylock 0x2f91407d +vmlinux __dst_free 0x23cbfb50 +vmlinux __elv_add_request 0xfc116d84 +vmlinux __find_get_block 0x32e9f0d2 +vmlinux __find_next_bit 0x2bc63ecb +vmlinux __find_next_zero_bit 0x664fc2e7 +vmlinux __free_pages 0x6d0aecc2 +vmlinux __generic_file_aio_read 0x591ebc21 +vmlinux __generic_unplug_device 0x4d7ae646 +vmlinux __get_free_pages 0x93fca811 +vmlinux __getblk 0xa6d69459 +vmlinux __ide_abort 0xa9d6c584 +vmlinux __ide_dma_bad_drive 0x9f8f034a +vmlinux __ide_dma_check 0xf72a8238 +vmlinux __ide_dma_end 0x39ded164 +vmlinux __ide_dma_good_drive 0xfeee9e01 +vmlinux __ide_dma_host_off 0x16c9afbf +vmlinux __ide_dma_host_on 0x7ffafcc9 +vmlinux __ide_dma_lostirq 0x32de1e8f +vmlinux __ide_dma_off 0xf50a5ea6 +vmlinux __ide_dma_off_quietly 0x928421e3 +vmlinux __ide_dma_on 0xdf00f741 +vmlinux __ide_dma_timeout 0x53de5540 +vmlinux __ide_end_request 0x83a80a82 +vmlinux __ide_error 0xb2ac6246 +vmlinux __ide_pci_register_driver 0x7ee82869 +vmlinux __inet_lookup_listener 0xbccfd26b +vmlinux __inet_twsk_hashdance 0x9b94c8ce +vmlinux __inet_twsk_kill 0x0b443df3 +vmlinux __init_timer_base 0x82f04785 +vmlinux __inode_dir_notify 0x3b7a901b +vmlinux __insert_inode_hash 0x8383b208 +vmlinux __invalidate_device 0xd6c1a4fd +vmlinux __ip_route_output_key 0x2a8738f9 +vmlinux __ip_select_ident 0x8d780de4 +vmlinux __kfifo_get 0x043b8483 +vmlinux __kfifo_put 0xaa527612 +vmlinux __kfree_skb 0x6da20b83 +vmlinux __kill_fasync 0x9e7310ea +vmlinux __kmalloc 0x5a34a45c +vmlinux __lock_buffer 0xdfc09ef1 +vmlinux __lock_page 0x5135b9d7 +vmlinux __mark_inode_dirty 0x91a9e996 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xe051a0ac +vmlinux __moddi3 0x903ab395 +vmlinux __modsi3 0x594e1317 +vmlinux __module_put_and_exit 0x47245487 +vmlinux __neigh_event_send 0xd49ae31f +vmlinux __neigh_for_each_release 0x3b3a643f +vmlinux __net_timestamp 0x97803f88 +vmlinux __netdev_watchdog_up 0x32aaeca4 +vmlinux __nla_put 0x0a4a299e +vmlinux __nla_reserve 0xfa5f5033 +vmlinux __page_cache_release 0xfbeb2ccb +vmlinux __pagevec_lru_add 0x80dc569f +vmlinux __pagevec_release 0x4172da52 +vmlinux __pci_register_driver 0x611551a5 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0xf9a55121 +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0x4b572456 +vmlinux __scm_destroy 0x345234ca +vmlinux __scm_send 0x2dda8364 +vmlinux __scsi_add_device 0x940c0acd +vmlinux __scsi_device_lookup 0x33ba13d6 +vmlinux __scsi_device_lookup_by_target 0x6eab9753 +vmlinux __scsi_iterate_devices 0xe8fd702b +vmlinux __scsi_print_command 0xfef96e23 +vmlinux __scsi_print_sense 0x69d38ed9 +vmlinux __secpath_destroy 0x52a5216f +vmlinux __serio_register_driver 0xec9f3055 +vmlinux __serio_register_port 0x8d0aeafc +vmlinux __serio_unregister_port_delayed 0x5404f739 +vmlinux __set_page_dirty_buffers 0x9d9ddf6d +vmlinux __set_page_dirty_nobuffers 0x4e30c676 +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x90c997a3 +vmlinux __skb_checksum_complete 0xbe515533 +vmlinux __skb_linearize 0x08b74974 +vmlinux __sn_mmiowb 0x2ce1e27f +vmlinux __strlen_user 0xf1394a2a +vmlinux __strncpy_from_user 0x9a78a84c +vmlinux __strnlen_user 0x00eef49e +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x8ddb1a2b +vmlinux __tasklet_schedule 0xf9c58281 +vmlinux __tcf_em_tree_match 0x42517697 +vmlinux __udivdi3 0x32093cc7 +vmlinux __udivsi3 0xfb7d9c45 +vmlinux __umoddi3 0x4a541e2a +vmlinux __umodsi3 0x8320bea8 +vmlinux __up 0xc2b220b3 +vmlinux __user_walk 0x51e345df +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0x8f07d8ca +vmlinux __wait_on_bit_lock 0x9501d078 +vmlinux __wait_on_buffer 0xd2ef304b +vmlinux __wake_up 0xb6c70a7d +vmlinux __wake_up_bit 0x44c214d1 +vmlinux __wake_up_sync 0xffaf7bbb +vmlinux __xfrm_policy_check 0xdacc1872 +vmlinux __xfrm_policy_destroy 0x0428c2cf +vmlinux __xfrm_route_forward 0x3cbdbc5d +vmlinux __xfrm_state_destroy 0x71144d0e +vmlinux _atomic_dec_and_lock 0xb964d85d +vmlinux _ctype 0x8d3894f2 +vmlinux acpi_acquire_global_lock 0xc9f34c1d +vmlinux acpi_bus_add 0x0966bc8f +vmlinux acpi_bus_generate_event 0xa51ba641 +vmlinux acpi_bus_get_device 0xdc07d3d6 +vmlinux acpi_bus_get_power 0x7389c9a8 +vmlinux acpi_bus_get_status 0x1057c4ce +vmlinux acpi_bus_receive_event 0x272a109a +vmlinux acpi_bus_register_driver 0xb6cbda1e +vmlinux acpi_bus_set_power 0xcb733bf2 +vmlinux acpi_bus_start 0x39db8f1b +vmlinux acpi_bus_unregister_driver 0xcfae25d4 +vmlinux acpi_clear_event 0x17be68ca +vmlinux acpi_dbg_layer 0xa40ff01b +vmlinux acpi_dbg_level 0xddad7952 +vmlinux acpi_disable_event 0x2177bd71 +vmlinux acpi_ec_read 0x1cafbb1c +vmlinux acpi_ec_write 0xfe22467a +vmlinux acpi_enable_event 0x44902cff +vmlinux acpi_enable_gpe 0xa8d5b19f +vmlinux acpi_enter_sleep_state 0x0cdccbc8 +vmlinux acpi_enter_sleep_state_s4bios 0x2f97cc23 +vmlinux acpi_evaluate_integer 0x64f0e581 +vmlinux acpi_evaluate_object 0xee7b5bca +vmlinux acpi_evaluate_reference 0x2e34c276 +vmlinux acpi_extract_package 0x0ba654d0 +vmlinux acpi_fadt 0xfb174376 +vmlinux acpi_fadt_is_v1 0x3ec88a19 +vmlinux acpi_get_child 0x2011990a +vmlinux acpi_get_current_resources 0x2ca63452 +vmlinux acpi_get_devices 0x74bdf6d5 +vmlinux acpi_get_firmware_table 0x89d49aa1 +vmlinux acpi_get_handle 0x9975dc22 +vmlinux acpi_get_name 0xa9bc32c1 +vmlinux acpi_get_next_object 0x75871f5e +vmlinux acpi_get_object_info 0xaad70aea +vmlinux acpi_get_parent 0x7d12d76d +vmlinux acpi_get_pci_id 0x5e523a9e +vmlinux acpi_get_pci_rootbridge_handle 0x1f8ec1b3 +vmlinux acpi_get_physical_device 0xf119c651 +vmlinux acpi_get_pxm 0x0a372247 +vmlinux acpi_get_register 0xd62b16af +vmlinux acpi_get_sleep_type_data 0x130afd75 +vmlinux acpi_get_table 0x007547e5 +vmlinux acpi_get_type 0x42578e80 +vmlinux acpi_install_address_space_handler 0x79fac840 +vmlinux acpi_install_fixed_event_handler 0x3b029f48 +vmlinux acpi_install_gpe_block 0x2091d63e +vmlinux acpi_install_gpe_handler 0x0ec136bc +vmlinux acpi_install_notify_handler 0x170ddf79 +vmlinux acpi_os_create_semaphore 0xb2faaf74 +vmlinux acpi_os_delete_semaphore 0xeaedfad9 +vmlinux acpi_os_free 0x43b9bbb4 +vmlinux acpi_os_printf 0x667cecc9 +vmlinux acpi_os_queue_for_execution 0xba5c8e12 +vmlinux acpi_os_read_pci_configuration 0xb21fd99e +vmlinux acpi_os_read_port 0x68092d39 +vmlinux acpi_os_signal 0xa1ed3038 +vmlinux acpi_os_signal_semaphore 0x499d825d +vmlinux acpi_os_sleep 0x540db81f +vmlinux acpi_os_stall 0x4fc25521 +vmlinux acpi_os_wait_events_complete 0xc9ab2eef +vmlinux acpi_os_wait_semaphore 0x69efe8d8 +vmlinux acpi_os_write_port 0x18339ef0 +vmlinux acpi_pci_irq_enable 0xa0319f41 +vmlinux acpi_pci_register_driver 0xd1472061 +vmlinux acpi_pci_unregister_driver 0x43385ad9 +vmlinux acpi_register_gsi 0x24fb243b +vmlinux acpi_register_ioapic 0xd8dc4cbe +vmlinux acpi_release_global_lock 0xa805ecfc +vmlinux acpi_remove_address_space_handler 0x76cee5d4 +vmlinux acpi_remove_fixed_event_handler 0x4055a920 +vmlinux acpi_remove_gpe_block 0xf79ca3bb +vmlinux acpi_remove_gpe_handler 0x24d68408 +vmlinux acpi_remove_notify_handler 0x1c58427f +vmlinux acpi_resource_to_address64 0xe92b3071 +vmlinux acpi_root_dir 0x8f18b4ff +vmlinux acpi_set_current_resources 0x0be7e3d7 +vmlinux acpi_set_gpe_type 0xbde7c789 +vmlinux acpi_set_register 0xcb67d3ff +vmlinux acpi_specific_hotkey_enabled 0x46621493 +vmlinux acpi_unregister_gsi 0x7b5452b8 +vmlinux acpi_unregister_ioapic 0xbf3193ec +vmlinux acpi_ut_debug_print 0x9a71ebee +vmlinux acpi_ut_debug_print_raw 0x4381d7f5 +vmlinux acpi_ut_exit 0x0ec2a92b +vmlinux acpi_ut_status_exit 0x57c1e9c2 +vmlinux acpi_ut_trace 0x00f12cd5 +vmlinux acpi_ut_value_exit 0xe4e9cc50 +vmlinux acpi_walk_namespace 0x6f1fe2a2 +vmlinux acpi_walk_resources 0x4532cb1a +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0xeaec0664 +vmlinux add_disk_randomness 0x81dfddeb +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0x89288903 +vmlinux add_wait_queue 0xfd8dba4c +vmlinux add_wait_queue_exclusive 0x3e6caebd +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0xfbdf7a97 +vmlinux aio_put_req 0xdc519f5e +vmlinux alloc_buffer_head 0x991a1b30 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0xc68a17aa +vmlinux alloc_disk_node 0x3c3c88f7 +vmlinux alloc_etherdev 0x3d6ae39c +vmlinux alloc_fcdev 0x79252d8a +vmlinux alloc_fddidev 0x34995dbe +vmlinux alloc_netdev 0x0aedc335 +vmlinux alloc_page_buffers 0xf8c0a037 +vmlinux alloc_pages_current 0x0994c24a +vmlinux alloc_trdev 0x9768aa14 +vmlinux alloc_tty_driver 0x5e5ac466 +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0xc0aed071 +vmlinux anon_transport_class_unregister 0x213b628c +vmlinux arch_acpi_processor_init_pdc 0xaf005cfe +vmlinux arp_broken_ops 0x5d68d20c +vmlinux arp_create 0xe8bf5cab +vmlinux arp_find 0x10b70204 +vmlinux arp_rcv 0x7aca96a6 +vmlinux arp_send 0x9955afa3 +vmlinux arp_tbl 0xbd31786b +vmlinux arp_xmit 0xfa1ced27 +vmlinux attribute_container_add_attrs 0x27847670 +vmlinux attribute_container_add_class_device 0x21644885 +vmlinux attribute_container_add_class_device_adapter 0x6f283c20 +vmlinux attribute_container_class_device_del 0x67caa427 +vmlinux attribute_container_classdev_to_container 0x3b5bd20d +vmlinux attribute_container_device_trigger 0xc9d6a2a2 +vmlinux attribute_container_find_class_device 0x3c7773ad +vmlinux attribute_container_register 0x785aeffa +vmlinux attribute_container_remove_attrs 0x198b078a +vmlinux attribute_container_remove_device 0x895bfe5c +vmlinux attribute_container_trigger 0x31f7b5df +vmlinux attribute_container_unregister 0x853f1f40 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x4f4fe430 +vmlinux bd_claim 0x0d917db6 +vmlinux bd_release 0x3d6fd348 +vmlinux bd_set_size 0x797868e8 +vmlinux bdev_read_only 0xf09dcf5e +vmlinux bdevname 0x9cd1fcf7 +vmlinux bdget 0xf64c3419 +vmlinux bdput 0x3cc77eed +vmlinux bfifo_qdisc_ops 0x38882ad1 +vmlinux bio_add_page 0x9ff940ea +vmlinux bio_alloc 0x1b212c5e +vmlinux bio_alloc_bioset 0xa4fc3388 +vmlinux bio_clone 0x5fb2c560 +vmlinux bio_copy_user 0x45830339 +vmlinux bio_endio 0xcd6c862a +vmlinux bio_free 0xe48089e1 +vmlinux bio_get_nr_vecs 0x5ce362a4 +vmlinux bio_hw_segments 0x8dce742c +vmlinux bio_init 0x0ed0e8dd +vmlinux bio_map_kern 0x868e54b2 +vmlinux bio_map_user 0xde5f8b44 +vmlinux bio_pair_release 0x6e577ca4 +vmlinux bio_phys_segments 0xd288e011 +vmlinux bio_put 0x3f1d0cc0 +vmlinux bio_split 0xa346b2fc +vmlinux bio_split_pool 0x27b47413 +vmlinux bio_uncopy_user 0x38723d9c +vmlinux bio_unmap_user 0xf735b27e +vmlinux bioset_create 0x1c875572 +vmlinux bioset_free 0x661e6ec8 +vmlinux bit_waitqueue 0xa9f1ed23 +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xefe7520f +vmlinux blk_alloc_queue 0x485dc8cc +vmlinux blk_alloc_queue_node 0x54c1f23e +vmlinux blk_cleanup_queue 0xf7c33ce9 +vmlinux blk_complete_barrier_rq 0x690221fb +vmlinux blk_complete_barrier_rq_locked 0x9d4f4ea5 +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x5c4fe4cb +vmlinux blk_end_sync_rq 0x040a476a +vmlinux blk_execute_rq 0xbfe61bc0 +vmlinux blk_get_backing_dev_info 0x1cb945e5 +vmlinux blk_get_queue 0xfbcc8424 +vmlinux blk_get_request 0x3e6fbe5d +vmlinux blk_init_queue 0xf58ec870 +vmlinux blk_init_queue_node 0xe8d80c12 +vmlinux blk_insert_request 0x42415235 +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0x0931966d +vmlinux blk_put_request 0xaab3d4ee +vmlinux blk_queue_activity_fn 0xb0a330b6 +vmlinux blk_queue_bounce 0x378fb853 +vmlinux blk_queue_bounce_limit 0x92f27d13 +vmlinux blk_queue_dma_alignment 0xe16bb289 +vmlinux blk_queue_end_tag 0x838865a0 +vmlinux blk_queue_find_tag 0x7012d249 +vmlinux blk_queue_free_tags 0xf8ee9c1f +vmlinux blk_queue_hardsect_size 0x383afcf6 +vmlinux blk_queue_init_tags 0x41b646e9 +vmlinux blk_queue_invalidate_tags 0x24b4af72 +vmlinux blk_queue_issue_flush_fn 0xb96a1110 +vmlinux blk_queue_make_request 0xeafc2eb4 +vmlinux blk_queue_max_hw_segments 0x93b0addb +vmlinux blk_queue_max_phys_segments 0x1def8dcb +vmlinux blk_queue_max_sectors 0x8e4e4a68 +vmlinux blk_queue_max_segment_size 0xdfb7864f +vmlinux blk_queue_merge_bvec 0xcfdd2236 +vmlinux blk_queue_ordered 0xc86c4d71 +vmlinux blk_queue_prep_rq 0xbfec4e87 +vmlinux blk_queue_resize_tags 0x71d5454b +vmlinux blk_queue_segment_boundary 0x1a9dfb50 +vmlinux blk_queue_stack_limits 0x8f42789a +vmlinux blk_queue_start_tag 0x786a1b5f +vmlinux blk_register_region 0x99e4e852 +vmlinux blk_remove_plug 0x1e38d932 +vmlinux blk_requeue_request 0xa7f37845 +vmlinux blk_rq_bio_prep 0xed28348b +vmlinux blk_rq_map_kern 0x9fcfdcb6 +vmlinux blk_rq_map_sg 0xaae3b300 +vmlinux blk_rq_map_user 0x43d6104f +vmlinux blk_rq_map_user_iov 0xf74f9166 +vmlinux blk_rq_unmap_user 0xcbe3b0a4 +vmlinux blk_run_queue 0x55c0f655 +vmlinux blk_start_queue 0xc0e92f79 +vmlinux blk_stop_queue 0xf98c8a42 +vmlinux blk_sync_queue 0xdb3834bf +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0xaa2e26bc +vmlinux blkdev_ioctl 0xcdcdb346 +vmlinux blkdev_issue_flush 0x37b5dcc7 +vmlinux blkdev_put 0x4037f2a5 +vmlinux block_all_signals 0x4edd72f7 +vmlinux block_commit_write 0x2b921cdd +vmlinux block_invalidatepage 0xead76fa7 +vmlinux block_prepare_write 0xf716674d +vmlinux block_read_full_page 0xf9f100bf +vmlinux block_sync_page 0xd8b3566e +vmlinux block_truncate_page 0x7206ff58 +vmlinux block_write_full_page 0x60e7a4d2 +vmlinux bmap 0x80fcb9a4 +vmlinux boot_option_idle_override 0xef9aedfc +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0xc1df1242 +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bte_copy 0x26feac2d +vmlinux bte_unaligned_copy 0x3a265e0c +vmlinux bus_add_device 0xf99167c3 +vmlinux bus_create_file 0x1460a076 +vmlinux bus_find_device 0x01ecfde8 +vmlinux bus_for_each_dev 0x50f83f74 +vmlinux bus_for_each_drv 0x649b7e1f +vmlinux bus_register 0x64d11e54 +vmlinux bus_remove_device 0x1d7b3cc9 +vmlinux bus_remove_file 0xbb226f40 +vmlinux bus_rescan_devices 0xad408cd0 +vmlinux bus_unregister 0x5a4099ef +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x43c852aa +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x303d67bf +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x3b747910 +vmlinux cdev_alloc 0x6dda588d +vmlinux cdev_del 0xabe5f215 +vmlinux cdev_init 0x16c812ef +vmlinux cfb_copyarea 0x5a3048f2 +vmlinux cfb_fillrect 0x018faa05 +vmlinux cfb_imageblit 0xcada7fcc +vmlinux check_disk_change 0x5ebaf5a6 +vmlinux class_create 0x752c05c0 +vmlinux class_create_file 0xb9ab2eb8 +vmlinux class_destroy 0xedad00ee +vmlinux class_device_add 0x28fbae5c +vmlinux class_device_create 0x913a54ac +vmlinux class_device_create_bin_file 0x886dcadd +vmlinux class_device_create_file 0x1e4d4683 +vmlinux class_device_del 0xddb4d1ba +vmlinux class_device_destroy 0x322cf1c2 +vmlinux class_device_get 0x0a639948 +vmlinux class_device_initialize 0x9f5e5f28 +vmlinux class_device_put 0x3d8dfa7d +vmlinux class_device_register 0x5892ea53 +vmlinux class_device_remove_bin_file 0x38310ed8 +vmlinux class_device_remove_file 0x33364e68 +vmlinux class_device_unregister 0x9f73e73c +vmlinux class_get 0x626e7a2c +vmlinux class_interface_register 0x2ca36188 +vmlinux class_interface_unregister 0xc65b326a +vmlinux class_put 0xb79545d6 +vmlinux class_register 0xb10560ee +vmlinux class_remove_file 0x7c78fa26 +vmlinux class_unregister 0x8b7135b7 +vmlinux clear_inode 0x6dc3408f +vmlinux clear_page 0x3d9ee9f0 +vmlinux clear_page_dirty_for_io 0x1712b504 +vmlinux close_bdev_excl 0x4d067083 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0xa218bf61 +vmlinux complete_all 0x48f9f12d +vmlinux complete_and_exit 0x8e9eceaa +vmlinux compute_creds 0x40df0227 +vmlinux con_copy_unimap 0x14cca484 +vmlinux con_set_default_unimap 0xd14256c4 +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0xa3a4ed03 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0x16585a3e +vmlinux console_stop 0xe8f36678 +vmlinux cont_prepare_write 0x2048bd4d +vmlinux copy_fs_struct 0x6b4111e0 +vmlinux copy_io_context 0xe6a0f902 +vmlinux copy_strings_kernel 0x1b91f1c9 +vmlinux cpu_idle_wait 0xb53ae573 +vmlinux cpu_present_map 0x1a3f7887 +vmlinux cpu_sysdev_class 0x0f1a2ab8 +vmlinux cpu_to_node_map 0x67aa1573 +vmlinux cpufreq_cpu_get 0xcd94dae7 +vmlinux cpufreq_cpu_put 0xb5d99646 +vmlinux cpufreq_driver_target 0xeabbcde9 +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0x5ba382b3 +vmlinux cpufreq_gov_performance 0x93696126 +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0x68c0b459 +vmlinux cpufreq_parse_governor 0xbbf54338 +vmlinux cpufreq_register_driver 0xeb74d371 +vmlinux cpufreq_register_governor 0x7223773b +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0xca4e59d5 +vmlinux cpufreq_unregister_driver 0x86609c9a +vmlinux cpufreq_unregister_governor 0xe0f49555 +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0x3f8064ce +vmlinux crc32_le 0x6dfc7ff3 +vmlinux create_empty_buffers 0x89949e74 +vmlinux create_proc_entry 0xf3878722 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x8ae1d969 +vmlinux crypto_alloc_tfm 0xd8fa6463 +vmlinux crypto_free_tfm 0xefeadc2d +vmlinux crypto_hmac 0xed838cd7 +vmlinux crypto_hmac_final 0x99478f94 +vmlinux crypto_hmac_init 0x7789e611 +vmlinux crypto_hmac_update 0xc433f62e +vmlinux crypto_register_alg 0xa8da92e8 +vmlinux crypto_unregister_alg 0x462ebb1c +vmlinux csum_partial 0x94095c16 +vmlinux csum_partial_copy_fromiovecend 0x883c8eca +vmlinux csum_partial_copy_nocheck 0xa2963be1 +vmlinux csum_tcpudp_magic 0x40d7f766 +vmlinux current_fs_time 0x98aa8a1d +vmlinux current_io_context 0xca796225 +vmlinux current_kernel_time 0x74cc238d +vmlinux cx_device_register 0x0fcdf35a +vmlinux cx_device_unregister 0x9f2b4f5d +vmlinux cx_driver_register 0xc90ed0b5 +vmlinux cx_driver_unregister 0x8223eff3 +vmlinux d_alloc 0x75950bd3 +vmlinux d_alloc_anon 0x3526adc4 +vmlinux d_alloc_name 0xcd630bd3 +vmlinux d_alloc_root 0x03f28be2 +vmlinux d_delete 0x5e8e51b4 +vmlinux d_find_alias 0x57d3c725 +vmlinux d_genocide 0xac829a7a +vmlinux d_instantiate 0x49986e51 +vmlinux d_instantiate_unique 0x28f772b2 +vmlinux d_invalidate 0xb744a214 +vmlinux d_lookup 0x5af5427a +vmlinux d_move 0x518f4a6e +vmlinux d_path 0x2d5a68fa +vmlinux d_prune_aliases 0xe68bbee4 +vmlinux d_rehash 0xc15e767e +vmlinux d_splice_alias 0xa0b1c718 +vmlinux d_validate 0x61c0fcb8 +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0x228cd969 +vmlinux dcache_dir_close 0x0ecabea5 +vmlinux dcache_dir_lseek 0xca17a512 +vmlinux dcache_dir_open 0xe9971011 +vmlinux dcache_lock 0x412ddc0c +vmlinux dcache_readdir 0xe4054e83 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0xacb03edc +vmlinux default_backing_dev_info 0x7a09b96f +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0xa7efd44e +vmlinux default_llseek 0x10059a7e +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x1d156af9 +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0x83cc331f +vmlinux del_timer 0xda264347 +vmlinux dentry_open 0x318d0793 +vmlinux dentry_unhash 0x59df061f +vmlinux dequeue_signal 0x838b8ac1 +vmlinux destroy_8023_client 0x304de22e +vmlinux destroy_EII_client 0x51baf9ee +vmlinux destroy_workqueue 0x407064fb +vmlinux dev_add_pack 0x0dd70913 +vmlinux dev_alloc_name 0xf8b6d450 +vmlinux dev_base 0x4e7b46fc +vmlinux dev_base_lock 0x144ed3a1 +vmlinux dev_change_flags 0x6963a786 +vmlinux dev_close 0xb74b9c16 +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0x9cdc5d7d +vmlinux dev_get_by_index 0x8f10400b +vmlinux dev_get_by_name 0x2e905d3a +vmlinux dev_get_flags 0x598e802d +vmlinux dev_getbyhwaddr 0x7d5084ce +vmlinux dev_getfirstbyhwtype 0x9a8477fb +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0x731311b5 +vmlinux dev_mc_delete 0x37f01ffe +vmlinux dev_mc_upload 0x141b0ea6 +vmlinux dev_open 0x373f648c +vmlinux dev_queue_xmit 0xb6c9a768 +vmlinux dev_remove_pack 0xfa00a4fb +vmlinux dev_set_allmulti 0xfd52be19 +vmlinux dev_set_mac_address 0x2dfd4ebb +vmlinux dev_set_mtu 0x265cb975 +vmlinux dev_set_promiscuity 0x6eb719c9 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0x222a3f4f +vmlinux device_attach 0x4c92d2da +vmlinux device_bind_driver 0x2112f3da +vmlinux device_create_file 0xd0ff4472 +vmlinux device_del 0x3354a4a1 +vmlinux device_for_each_child 0x9bc72509 +vmlinux device_initialize 0x4f5ddffc +vmlinux device_pm_set_parent 0x77eb702f +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0x8514606a +vmlinux device_release_driver 0x17769252 +vmlinux device_remove_file 0x0eedbd36 +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0xa2dd9914 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0x3354f720 +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_get_cache_alignment 0x47297f48 +vmlinux dma_get_required_mask 0x830304c5 +vmlinux dma_pool_alloc 0xe8b61451 +vmlinux dma_pool_create 0xc9eee33d +vmlinux dma_pool_destroy 0x6e5845d5 +vmlinux dma_pool_free 0xf84045ea +vmlinux dnotify_parent 0xc0bf745a +vmlinux do_SAK 0x6b3c7bc8 +vmlinux do_add_mount 0xcdda2279 +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0xcd1cffad +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0x28a872bc +vmlinux do_mmap_pgoff 0xaa35c3cd +vmlinux do_munmap 0x36528e8f +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0xb33f1114 +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0x9c305378 +vmlinux do_sync_read 0xaa673591 +vmlinux do_sync_write 0x6700c670 +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0x92d470c6 +vmlinux dput 0xc2a7b132 +vmlinux dq_data_lock 0xee90884e +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x5353535d +vmlinux dquot_alloc_inode 0xf7bd1cee +vmlinux dquot_alloc_space 0x97f6f87c +vmlinux dquot_commit 0xb1652b49 +vmlinux dquot_commit_info 0xdb130195 +vmlinux dquot_drop 0xdccee08e +vmlinux dquot_free_inode 0xc4b7bc4d +vmlinux dquot_free_space 0x4b35e642 +vmlinux dquot_initialize 0x7614a947 +vmlinux dquot_mark_dquot_dirty 0x3005dd57 +vmlinux dquot_release 0x2d4e3a51 +vmlinux dquot_transfer 0x343e9bde +vmlinux drive_is_ready 0xf1c8807c +vmlinux driver_attach 0x97a985dc +vmlinux driver_create_file 0xe6e7857f +vmlinux driver_find 0x27576fed +vmlinux driver_find_device 0xda0fc6cc +vmlinux driver_for_each_device 0x61ea4ef2 +vmlinux driver_register 0xe6037c61 +vmlinux driver_remove_file 0xb895968c +vmlinux driver_unregister 0x63496948 +vmlinux drop_super 0x43de4027 +vmlinux dst_alloc 0x299b0e1b +vmlinux dst_destroy 0x2492ef24 +vmlinux dump_stack 0x6b2dc060 +vmlinux ec_read 0xfc4152fc +vmlinux ec_write 0xc708f1fe +vmlinux efi 0x5116b2ee +vmlinux efi_mem_attributes 0x5ddb3d56 +vmlinux eighty_ninty_three 0xd5d4620f +vmlinux elevator_exit 0x78d9a618 +vmlinux elevator_init 0x6f791d14 +vmlinux elv_add_request 0x0847cfa4 +vmlinux elv_completed_request 0x494298a2 +vmlinux elv_dequeue_request 0xf6b2e7a8 +vmlinux elv_dispatch_sort 0x03afadfc +vmlinux elv_next_request 0x4c0252ce +vmlinux elv_queue_empty 0xb37c18c3 +vmlinux elv_register 0x59aed81e +vmlinux elv_requeue_request 0xead5e0ba +vmlinux elv_rq_merge_ok 0x48842ae3 +vmlinux elv_try_merge 0x65742cb5 +vmlinux elv_unregister 0xb1a74484 +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_irq 0xfcec0987 +vmlinux end_buffer_async_write 0x641e2015 +vmlinux end_buffer_read_sync 0x6fd4c8db +vmlinux end_buffer_write_sync 0x62cec4f8 +vmlinux end_page_writeback 0x556c946f +vmlinux end_request 0x82c76107 +vmlinux end_that_request_chunk 0x4d54eba5 +vmlinux end_that_request_first 0x094ecf08 +vmlinux end_that_request_last 0xfaf36153 +vmlinux eth_type_trans 0xd80a65ec +vmlinux ether_setup 0x81a7ab2d +vmlinux ethtool_op_get_link 0x08596235 +vmlinux ethtool_op_get_perm_addr 0x0f36f9cf +vmlinux ethtool_op_get_sg 0x181cac7a +vmlinux ethtool_op_get_tso 0xd225dd58 +vmlinux ethtool_op_get_tx_csum 0x067fbbeb +vmlinux ethtool_op_get_ufo 0x633f7e38 +vmlinux ethtool_op_set_sg 0x2aad6429 +vmlinux ethtool_op_set_tso 0x3da258a6 +vmlinux ethtool_op_set_tx_csum 0x779c9309 +vmlinux ethtool_op_set_tx_hw_csum 0xed48c4ed +vmlinux ethtool_op_set_ufo 0x789bf002 +vmlinux exit_fs 0x8b5a290e +vmlinux f_setown 0x6fa7862f +vmlinux fasync_helper 0xc7e4ef49 +vmlinux fb_add_videomode 0x4b1f60ae +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x5e1c4f0c +vmlinux fb_con_duit 0x8d5a88d9 +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xe42d2279 +vmlinux fb_destroy_modedb 0xc07b0863 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0x0397edd5 +vmlinux fb_find_best_display 0x3711e07e +vmlinux fb_find_best_mode 0x8306185a +vmlinux fb_find_mode 0xbd158481 +vmlinux fb_find_mode_cvt 0xf93fd09c +vmlinux fb_find_nearest_mode 0x7538617b +vmlinux fb_firmware_edid 0xb07502d9 +vmlinux fb_get_buffer_offset 0xab34bfe8 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0xf61e96c8 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x2ecf82c7 +vmlinux fb_mode_is_equal 0xb9d7ba2b +vmlinux fb_new_modelist 0x74246721 +vmlinux fb_pad_aligned_buffer 0x61ea189b +vmlinux fb_pad_unaligned_buffer 0x42f1b900 +vmlinux fb_pan_display 0x0e2d76df +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0xadf02661 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0xb376dd7b +vmlinux fb_set_suspend 0x75bb02d3 +vmlinux fb_set_var 0x34db482d +vmlinux fb_show_logo 0xe12b81a9 +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x3d04f2cd +vmlinux fb_var_to_videomode 0x3369b3ff +vmlinux fb_videomode_to_modelist 0x9f84cecb +vmlinux fb_videomode_to_var 0xe12a6201 +vmlinux fd_install 0x3b9d56b7 +vmlinux fddi_type_trans 0x5b951631 +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x1b9afcfd +vmlinux file_fsync 0x340dd8ed +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0xf7548e04 +vmlinux filemap_fdatawait 0x0cbb1b34 +vmlinux filemap_fdatawrite 0x6767ee04 +vmlinux filemap_flush 0x12dba228 +vmlinux filemap_nopage 0x4526d639 +vmlinux filemap_populate 0xf2b165c8 +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0xf718dac8 +vmlinux filp_open 0xd92ec8f1 +vmlinux find_bus 0x0aee0e63 +vmlinux find_get_page 0x4541b2af +vmlinux find_inode_number 0x4924638f +vmlinux find_lock_page 0x784d73dd +vmlinux find_or_create_page 0xf1c6bef9 +vmlinux find_task_by_pid_type 0x9d261c3b +vmlinux find_trylock_page 0x6dba856e +vmlinux find_vma 0xad33e2da +vmlinux finish_wait 0x51493d94 +vmlinux firmware_register 0x2b433eba +vmlinux firmware_unregister 0x627f8017 +vmlinux flock_lock_file_wait 0x4c760f2e +vmlinux flow_cache_genid 0xa33a289f +vmlinux flow_cache_lookup 0x57726d68 +vmlinux flush_old_exec 0x39c69ea8 +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x4d2a844d +vmlinux flush_tlb_range 0x2325c367 +vmlinux flush_workqueue 0x84e1bc49 +vmlinux follow_down 0x30ff5d0b +vmlinux follow_up 0xf23863c8 +vmlinux force_sig 0xe3620abc +vmlinux fpswa_interface 0xa2755c7b +vmlinux fput 0x89b1e1de +vmlinux framebuffer_alloc 0x445e5ecc +vmlinux framebuffer_release 0x75b0aaa4 +vmlinux free_buffer_head 0x6d9cc97a +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0xbc443f24 +vmlinux free_pages 0x4302d0eb +vmlinux free_task 0x8c4778a3 +vmlinux freeze_bdev 0x4a1c7259 +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0x478a3ec1 +vmlinux gen_kill_estimator 0xa4a74611 +vmlinux gen_new_estimator 0x286fcb70 +vmlinux gen_pool_alloc 0x12fcb397 +vmlinux gen_pool_create 0x0422f300 +vmlinux gen_pool_free 0x45f3004f +vmlinux gen_replace_estimator 0xa58ebb71 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic_block_bmap 0x1c2fcc4c +vmlinux generic_commit_write 0x1f8091eb +vmlinux generic_cont_expand 0xb4f0d616 +vmlinux generic_delete_inode 0xe04576d2 +vmlinux generic_drop_inode 0x73412bfd +vmlinux generic_file_aio_read 0x447d6c14 +vmlinux generic_file_aio_write 0x28455bce +vmlinux generic_file_aio_write_nolock 0x44377348 +vmlinux generic_file_buffered_write 0xf8edf766 +vmlinux generic_file_direct_write 0x532fa428 +vmlinux generic_file_llseek 0xbea3a39d +vmlinux generic_file_mmap 0x3a2b1ab9 +vmlinux generic_file_open 0x3675529c +vmlinux generic_file_read 0x1da62ab7 +vmlinux generic_file_readonly_mmap 0x1b94d2a8 +vmlinux generic_file_readv 0xf0a8fd0f +vmlinux generic_file_sendfile 0xd7848775 +vmlinux generic_file_write 0xee094bbc +vmlinux generic_file_write_nolock 0xe26c8703 +vmlinux generic_file_writev 0xbd1b8ca0 +vmlinux generic_fillattr 0x004c9487 +vmlinux generic_getxattr 0xa5659e1b +vmlinux generic_ide_ioctl 0x0082c90e +vmlinux generic_listxattr 0xd42997ca +vmlinux generic_make_request 0x41ef0311 +vmlinux generic_osync_inode 0x5e2776fe +vmlinux generic_permission 0xade1d6ea +vmlinux generic_read_dir 0x3f8ea49a +vmlinux generic_readlink 0x6b1e3596 +vmlinux generic_removexattr 0x3e6760fe +vmlinux generic_ro_fops 0xfa63b38c +vmlinux generic_setxattr 0xf2732bdb +vmlinux generic_shutdown_super 0x628cd4cb +vmlinux generic_unplug_device 0x7b7eba8b +vmlinux generic_write_checks 0xf2b05f05 +vmlinux genl_register_family 0xb6204883 +vmlinux genl_register_ops 0xbf50ad46 +vmlinux genl_sock 0xda264a0f +vmlinux genl_unregister_family 0x0d585667 +vmlinux genl_unregister_ops 0x58739e8b +vmlinux get_bus 0x5e01ac30 +vmlinux get_cpu_sysdev 0xb8b4d031 +vmlinux get_dcookie 0xcd72cdf1 +vmlinux get_device 0xeb51ed07 +vmlinux get_disk 0xde60f540 +vmlinux get_driver 0x85e81300 +vmlinux get_empty_filp 0x1c380ecf +vmlinux get_fs_type 0x946cc2f7 +vmlinux get_io_context 0xa5e57576 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0xcf76c59c +vmlinux get_sb_nodev 0xfc985e9f +vmlinux get_sb_pseudo 0xde65cb78 +vmlinux get_sb_single 0x0d6195ea +vmlinux get_super 0xd7ccb2d7 +vmlinux get_task_mm 0x147977c5 +vmlinux get_unmapped_area 0x64eabfad +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0xae10b436 +vmlinux get_write_access 0xe6205cd9 +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x55f39b4f +vmlinux gnet_stats_copy_app 0x669cd04f +vmlinux gnet_stats_copy_basic 0x05057bcc +vmlinux gnet_stats_copy_queue 0x3ad066b7 +vmlinux gnet_stats_copy_rate_est 0x5a7efb22 +vmlinux gnet_stats_finish_copy 0x747244ff +vmlinux gnet_stats_start_copy 0xa12153d3 +vmlinux gnet_stats_start_copy_compat 0xcb68333e +vmlinux grab_cache_page_nowait 0xce5c4284 +vmlinux groups_alloc 0x705f28cd +vmlinux groups_free 0x436a7f98 +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0x505488c3 +vmlinux have_submounts 0x70d5a077 +vmlinux high_memory 0x8a7d1c31 +vmlinux hp_acpi_csr_space 0x05b8f2bc +vmlinux hwmon_device_register 0x5ea0aa97 +vmlinux hwmon_device_unregister 0x6d2f9786 +vmlinux hwsw_alloc_coherent 0x1856f0f8 +vmlinux hwsw_dma_mapping_error 0x30f56b6f +vmlinux hwsw_dma_supported 0x330bb9b1 +vmlinux hwsw_free_coherent 0x4d3b576c +vmlinux hwsw_map_sg 0x9d5b63e3 +vmlinux hwsw_map_single 0xae37ddee +vmlinux hwsw_unmap_sg 0xcb18283e +vmlinux hwsw_unmap_single 0x5bc95b97 +vmlinux ia64_acpiid_to_sapicid 0x3ac96696 +vmlinux ia64_iobase 0x08e6b007 +vmlinux ia64_ivt 0x3cdde3b7 +vmlinux ia64_load_scratch_fpregs 0xc9266a5a +vmlinux ia64_max_iommu_merge_mask 0xb1f32d3d +vmlinux ia64_mv 0xb546cea2 +vmlinux ia64_pal_call_phys_stacked 0xfbbca7dc +vmlinux ia64_pal_call_phys_static 0x0e402370 +vmlinux ia64_pal_call_stacked 0xafc13e64 +vmlinux ia64_pal_call_static 0xca484b2c +vmlinux ia64_pfn_valid 0x3717dbf9 +vmlinux ia64_reg_MCA_extension 0x5a2ab9c6 +vmlinux ia64_sal_oemcall 0x5c7a8717 +vmlinux ia64_sal_oemcall_nolock 0xd64d24a3 +vmlinux ia64_sal_oemcall_reentrant 0xd67440e7 +vmlinux ia64_save_scratch_fpregs 0x83998b0b +vmlinux ia64_unreg_MCA_extension 0x79a2fd35 +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0xac809f43 +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_acpi_exec_tfs 0xbc2dc387 +vmlinux ide_acpi_get_timing 0xe1a4b21f +vmlinux ide_acpi_init 0xfd709cd5 +vmlinux ide_acpi_push_timing 0x75efb395 +vmlinux ide_add_setting 0xfcfae8a9 +vmlinux ide_build_dmatable 0xb911e6e8 +vmlinux ide_build_sglist 0x7ffc08da +vmlinux ide_bus_type 0xc7964b34 +vmlinux ide_config_drive_speed 0x9cc583ba +vmlinux ide_destroy_dmatable 0xdb53a3cd +vmlinux ide_dma_enable 0x8d61cb47 +vmlinux ide_dma_intr 0x760e3088 +vmlinux ide_dma_setup 0x10d91eac +vmlinux ide_dma_speed 0x0f8c4d31 +vmlinux ide_dma_start 0xa14fa6da +vmlinux ide_dma_verbose 0x2ad97506 +vmlinux ide_do_drive_cmd 0x17777ca4 +vmlinux ide_do_reset 0x84e9064f +vmlinux ide_dump_status 0x7449e07a +vmlinux ide_end_drive_cmd 0x8ff88bdb +vmlinux ide_end_request 0x6f368568 +vmlinux ide_error 0xd0342238 +vmlinux ide_execute_command 0xe4fdfb63 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x3aa7cf21 +vmlinux ide_get_best_pio_mode 0x455b470a +vmlinux ide_get_error_location 0x16dba86f +vmlinux ide_hwifs 0x9f414ca9 +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0xd9c3cd04 +vmlinux ide_init_drive_cmd 0xa7c02751 +vmlinux ide_init_sg_cmd 0x36fc6e18 +vmlinux ide_lock 0xf1dced4c +vmlinux ide_map_sg 0x3bdfae30 +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x2f1bc560 +vmlinux ide_pci_unregister_driver 0xeea38e24 +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x99cbccf3 +vmlinux ide_raw_taskfile 0x51d43952 +vmlinux ide_register_hw 0x905957dc +vmlinux ide_register_hw_with_fixup 0xc68fc641 +vmlinux ide_register_region 0x56201d92 +vmlinux ide_register_subdriver 0x350a2a3c +vmlinux ide_set_handler 0x078471cf +vmlinux ide_set_xfer_rate 0x6b6eb5e4 +vmlinux ide_setup_dma 0x93c8d260 +vmlinux ide_setup_pci_device 0x7746aa1b +vmlinux ide_setup_pci_devices 0x3d11ddc6 +vmlinux ide_setup_pci_noise 0x1d461b83 +vmlinux ide_spin_wait_hwgroup 0x7db6f4f0 +vmlinux ide_stall_queue 0x725d9cc9 +vmlinux ide_undecoded_slave 0x980a0837 +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0xe889df81 +vmlinux ide_unregister_subdriver 0xf94b6727 +vmlinux ide_use_dma 0x59ae2c90 +vmlinux ide_wait_not_busy 0x41db6377 +vmlinux ide_wait_stat 0x1a71fd22 +vmlinux ide_xfer_verbose 0xc05d558d +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0x34f9e7d5 +vmlinux idr_find 0x3b17b71d +vmlinux idr_get_new 0xc29e86a1 +vmlinux idr_get_new_above 0x7b022e51 +vmlinux idr_init 0x54b9c5cd +vmlinux idr_pre_get 0x6c072e4f +vmlinux idr_remove 0x2d69aeff +vmlinux iget5_locked 0x1b6617c4 +vmlinux iget_locked 0xf354d4be +vmlinux igrab 0x3f5c550e +vmlinux ilookup 0xa27a01fc +vmlinux ilookup5 0x0ea105ad +vmlinux ilookup5_nowait 0x2e849d5f +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0xc7469b64 +vmlinux in_egroup_p 0x42a4bdf2 +vmlinux in_group_p 0x31ebadcd +vmlinux inet6_lookup 0x6a516f25 +vmlinux inet6_lookup_listener 0x10cf268f +vmlinux inet_accept 0x2014ce0c +vmlinux inet_add_protocol 0xbc90990a +vmlinux inet_addr_type 0x9f8197db +vmlinux inet_bind 0x0c6a9e8d +vmlinux inet_bind_bucket_create 0x34f6f317 +vmlinux inet_bind_hash 0xee5a1b1f +vmlinux inet_csk_accept 0x915d8590 +vmlinux inet_csk_clear_xmit_timers 0x63742187 +vmlinux inet_csk_clone 0x3c231bc1 +vmlinux inet_csk_delete_keepalive_timer 0xde072cc6 +vmlinux inet_csk_destroy_sock 0x77d5d88d +vmlinux inet_csk_get_port 0xdd0f39f5 +vmlinux inet_csk_init_xmit_timers 0x961ef87a +vmlinux inet_csk_listen_start 0x7bd636b8 +vmlinux inet_csk_listen_stop 0x36ab2bd7 +vmlinux inet_csk_reqsk_queue_hash_add 0xcbec698e +vmlinux inet_csk_reqsk_queue_prune 0xc6350dc1 +vmlinux inet_csk_reset_keepalive_timer 0x92dc77b1 +vmlinux inet_csk_route_req 0x1ce0ea55 +vmlinux inet_csk_search_req 0xc1a1f6ab +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0x7ff3f677 +vmlinux inet_dgram_connect 0x751b5976 +vmlinux inet_dgram_ops 0x9722c218 +vmlinux inet_diag_register 0x1507e78b +vmlinux inet_diag_unregister 0x09d11fb5 +vmlinux inet_getname 0xed952430 +vmlinux inet_ioctl 0x86a01b46 +vmlinux inet_listen 0xd242fb85 +vmlinux inet_listen_wlock 0x2d681e3f +vmlinux inet_put_port 0xaba99255 +vmlinux inet_register_protosw 0x319d9b9d +vmlinux inet_release 0x20ddfcc6 +vmlinux inet_select_addr 0xd13122c2 +vmlinux inet_sendmsg 0x73efeefc +vmlinux inet_shutdown 0x5f5fe753 +vmlinux inet_sk_rebuild_header 0x0b35b617 +vmlinux inet_sock_destruct 0xc56f0b65 +vmlinux inet_stream_connect 0xbb8599ac +vmlinux inet_stream_ops 0x811013db +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x720a5884 +vmlinux inet_twsk_deschedule 0xa41549ff +vmlinux inet_twsk_schedule 0x8df5fb69 +vmlinux inet_unregister_protosw 0x827e9980 +vmlinux inetdev_by_index 0x3f68a29f +vmlinux init_buffer 0x8dda190f +vmlinux init_mm 0x8037d322 +vmlinux init_special_inode 0x1e9dcda0 +vmlinux init_task 0x8dc995d6 +vmlinux init_timer 0x6c9087dd +vmlinux inode_add_bytes 0xb4d79724 +vmlinux inode_change_ok 0xe70aa49b +vmlinux inode_get_bytes 0x75d8237c +vmlinux inode_init_once 0x50fd8c67 +vmlinux inode_needs_sync 0xeb9e1491 +vmlinux inode_set_bytes 0x87c2e61f +vmlinux inode_setattr 0x0fe8539d +vmlinux inode_sub_bytes 0x204d3e98 +vmlinux inode_update_time 0x25dfadcf +vmlinux inotify_dentry_parent_queue_event 0xa0c5a449 +vmlinux inotify_get_cookie 0x0fef6e6d +vmlinux inotify_inode_is_dead 0xe0da9575 +vmlinux inotify_inode_queue_event 0xf56d475e +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0xfe75838f +vmlinux input_allocate_device 0x21f50e34 +vmlinux input_class 0xd1bfdf70 +vmlinux input_close_device 0x7942dee9 +vmlinux input_event 0xbd9b7548 +vmlinux input_flush_device 0xa3fb9cf9 +vmlinux input_grab_device 0xb9827fd3 +vmlinux input_open_device 0x00657327 +vmlinux input_register_device 0x5b715537 +vmlinux input_register_handler 0x601b3716 +vmlinux input_release_device 0x356f00b5 +vmlinux input_unregister_device 0x34ff6034 +vmlinux input_unregister_handler 0xf3849f20 +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0xc4b4decb +vmlinux int_sqrt 0xb678366f +vmlinux int_to_scsilun 0xea10212a +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x6400ee13 +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0xf9b28bac +vmlinux interruptible_sleep_on_timeout 0xf51c639f +vmlinux invalidate_bdev 0xc2ecfa15 +vmlinux invalidate_inode_pages 0x87bf0fe8 +vmlinux invalidate_inode_pages2 0xec55aa53 +vmlinux invalidate_inode_pages2_range 0xfe1a49a5 +vmlinux invalidate_inodes 0xe0c84d44 +vmlinux invalidate_partition 0x4ae70891 +vmlinux io_schedule 0x93a6e0b2 +vmlinux io_space 0xeb16163b +vmlinux ioctl_by_bdev 0x34c78a9e +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0xc5534d64 +vmlinux ioread16_rep 0x5857b225 +vmlinux ioread16be 0xf065f629 +vmlinux ioread32 0xe484e35f +vmlinux ioread32_rep 0x3f0546a8 +vmlinux ioread32be 0xfdb9b629 +vmlinux ioread8 0xf10de535 +vmlinux ioread8_rep 0xf441ac43 +vmlinux iov_shorten 0x92392cd9 +vmlinux iowrite16 0x06a86bc1 +vmlinux iowrite16_rep 0x8cc79cab +vmlinux iowrite16be 0x26f8f0b8 +vmlinux iowrite32 0x4a453f53 +vmlinux iowrite32_rep 0xbfc177bc +vmlinux iowrite32be 0xe419bc99 +vmlinux iowrite8 0x848d372e +vmlinux iowrite8_rep 0xa4b94fea +vmlinux ip4_datagram_connect 0x1ce85428 +vmlinux ip_build_and_send_pkt 0x4a6d4884 +vmlinux ip_cmsg_recv 0x93d41e63 +vmlinux ip_compute_csum 0xe5e298ea +vmlinux ip_ct_attach 0x9c7cf00e +vmlinux ip_defrag 0xdde136db +vmlinux ip_fast_csum 0xe4627d16 +vmlinux ip_fragment 0x83d269f7 +vmlinux ip_generic_getfrag 0x89d1358f +vmlinux ip_getsockopt 0x252a31da +vmlinux ip_mc_dec_group 0x1d729f10 +vmlinux ip_mc_inc_group 0x1f213cd1 +vmlinux ip_mc_join_group 0xaaa8fcd3 +vmlinux ip_queue_xmit 0x819b85cb +vmlinux ip_route_input 0xd879181f +vmlinux ip_route_me_harder 0xae562adc +vmlinux ip_route_output_flow 0xe1df7a4b +vmlinux ip_route_output_key 0xedc38e11 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0xa37b7441 +vmlinux ip_setsockopt 0x10ac2693 +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0xb45be6da +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0xa0d26e38 +vmlinux ipv6_ext_hdr 0x969ad2d6 +vmlinux ipv6_skip_exthdr 0x6882e334 +vmlinux is_bad_inode 0xfca669ae +vmlinux is_console_locked 0x944a564d +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux isa_irq_to_vector_map 0x3aed7527 +vmlinux iunique 0x25798ea3 +vmlinux iw_handler_get_spy 0xec24bbfa +vmlinux iw_handler_get_thrspy 0x6245bd94 +vmlinux iw_handler_set_spy 0x660d4d27 +vmlinux iw_handler_set_thrspy 0xe740c52a +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0x7ef0512f +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x4935f4a1 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0x5a678beb +vmlinux kernel_recvmsg 0xf2a37bda +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0xd77bccf1 +vmlinux kernel_subsys 0x28a2b03c +vmlinux kernel_thread 0x439090b9 +vmlinux kfifo_alloc 0x8f9b86b2 +vmlinux kfifo_free 0x4719ba4e +vmlinux kfifo_init 0x4b9f3684 +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0xb6b3fbd1 +vmlinux kill_anon_super 0x8ee3ef81 +vmlinux kill_block_super 0x36cca7e1 +vmlinux kill_fasync 0xea420639 +vmlinux kill_litter_super 0x3f4a7a34 +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0x7c0c631a +vmlinux klist_add_head 0x1b425968 +vmlinux klist_add_tail 0x2f0d483a +vmlinux klist_del 0x0ec3cdb0 +vmlinux klist_init 0xf1bc84aa +vmlinux klist_iter_exit 0x1605aaa9 +vmlinux klist_iter_init 0xa8cfef8a +vmlinux klist_iter_init_node 0x407c0ba9 +vmlinux klist_next 0xeffbec5a +vmlinux klist_node_attached 0x2c3f31ef +vmlinux klist_remove 0x98f7afa9 +vmlinux km_new_mapping 0xdc306c21 +vmlinux km_policy_notify 0x81b186de +vmlinux km_state_notify 0x69c77d3c +vmlinux km_waitq 0xef1a1668 +vmlinux kmalloc_node 0xce0123e0 +vmlinux kmem_cache_alloc 0x9727d888 +vmlinux kmem_cache_alloc_node 0xe71d44d6 +vmlinux kmem_cache_create 0xbbd0eec7 +vmlinux kmem_cache_destroy 0xf04ffb40 +vmlinux kmem_cache_free 0x47e8b990 +vmlinux kmem_cache_name 0xe369ee22 +vmlinux kmem_cache_shrink 0xe52d32ee +vmlinux kmem_cache_size 0x34aaea71 +vmlinux kmem_find_general_cachep 0x6356a001 +vmlinux kobject_add 0xe1f57a57 +vmlinux kobject_del 0xf64409fe +vmlinux kobject_get 0x74ff17c6 +vmlinux kobject_hotplug 0xb20ec28c +vmlinux kobject_init 0x34b394e3 +vmlinux kobject_put 0xa2a09e2a +vmlinux kobject_register 0x3dfcae3e +vmlinux kobject_set_name 0x873e83f1 +vmlinux kobject_uevent 0x3a666dae +vmlinux kobject_uevent_atomic 0x744366c7 +vmlinux kobject_unregister 0x38dc18f3 +vmlinux kref_get 0xbd0712b5 +vmlinux kref_init 0xd1aebf8a +vmlinux kref_put 0xd23c3f86 +vmlinux kset_find_obj 0x9889d213 +vmlinux kset_register 0x22867584 +vmlinux kset_unregister 0x157b72fc +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x905b495a +vmlinux kthread_create 0x9a1f451e +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0x2562224d +vmlinux kthread_stop_sem 0xa6dd443f +vmlinux kzalloc 0x5a3b6eca +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0xc537c395 +vmlinux lease_modify 0x289a7011 +vmlinux linkwatch_fire_event 0xb80ebf2b +vmlinux ll_rw_block 0x03c5ffbf +vmlinux llc_add_pack 0x191ec033 +vmlinux llc_build_and_send_ui_pkt 0x814533c5 +vmlinux llc_mac_hdr_init 0x13e8248a +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0xc2c6e13e +vmlinux llc_sap_find 0x8c622fcd +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0x556643e3 +vmlinux llc_sap_open 0xa9c424a6 +vmlinux llc_set_station_handler 0x1e217cd8 +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_nls 0x8844211b +vmlinux load_nls_default 0xd57c1fe4 +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_may_read 0xf4f37fff +vmlinux lock_may_write 0xa4628aaf +vmlinux lock_rename 0x771b3956 +vmlinux lock_sock 0x155ec07c +vmlinux locks_copy_lock 0x7a1be9b8 +vmlinux locks_init_lock 0x729c5c34 +vmlinux locks_mandatory_area 0xc36dad40 +vmlinux locks_remove_posix 0xbc5cffdc +vmlinux lookup_create 0xf4fa877d +vmlinux lookup_hash 0xf14fae2f +vmlinux lookup_instantiate_filp 0xf5d98120 +vmlinux lookup_one_len 0xc8884478 +vmlinux loopback_dev 0x6273996d +vmlinux loops_per_jiffy 0xba497f13 +vmlinux machvec_dma_sync_sg 0x17bd35b0 +vmlinux machvec_dma_sync_single 0x7aa0f563 +vmlinux machvec_setup 0xaf6bbc60 +vmlinux machvec_timer_interrupt 0x18d3f88f +vmlinux make_8023_client 0xd5874290 +vmlinux make_EII_client 0xdaec1c8f +vmlinux make_bad_inode 0x4c5b4946 +vmlinux malloc_sizes 0xb81ceaa5 +vmlinux mapping_tagged 0x8050efc7 +vmlinux mark_buffer_async_write 0x881aa750 +vmlinux mark_buffer_dirty 0x05e9eb78 +vmlinux mark_buffer_dirty_inode 0x18ff64c2 +vmlinux mark_info_dirty 0x54e2f0bb +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x0e407aa5 +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_cstate 0x93805374 +vmlinux max_low_pfn 0x9abfb6dd +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0xfab4fc1c +vmlinux may_umount_tree 0x13b70483 +vmlinux mb_cache_create 0xc86ae280 +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0xac43d2d4 +vmlinux mb_cache_entry_find_first 0xfce8b6dc +vmlinux mb_cache_entry_find_next 0x523a7dec +vmlinux mb_cache_entry_free 0x8fcf5829 +vmlinux mb_cache_entry_get 0xb1d1b897 +vmlinux mb_cache_entry_insert 0x1d68d457 +vmlinux mb_cache_entry_release 0x2cc102f8 +vmlinux mb_cache_shrink 0xe6db99f3 +vmlinux memchr 0xc740c64a +vmlinux memcmp 0xc7ec28b0 +vmlinux memcpy 0x6067a146 +vmlinux memcpy_fromio 0xfd19eaeb +vmlinux memcpy_fromiovec 0x36139a51 +vmlinux memcpy_fromiovecend 0x9bc565c5 +vmlinux memcpy_toio 0x129697b8 +vmlinux memcpy_toiovec 0x2876a6d3 +vmlinux memmove 0x5dbbe98e +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xab53b0a8 +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0x1f7cc628 +vmlinux mempool_create_node 0xd3427f73 +vmlinux mempool_destroy 0xac54fc9f +vmlinux mempool_free 0x062aba95 +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x25ba121c +vmlinux memscan 0x9c0ea3cd +vmlinux memset 0x3fa03a97 +vmlinux memset_io 0xcd473329 +vmlinux min_low_pfn 0x0acca637 +vmlinux misc_deregister 0x0a59f1c7 +vmlinux misc_register 0x3daaec29 +vmlinux mmput 0x7ca52f20 +vmlinux mnt_pin 0xef9517ab +vmlinux mnt_unpin 0x211f280c +vmlinux mntput_no_expire 0xb70af230 +vmlinux mod_firmware_load 0x39e3dd23 +vmlinux mod_reg_security 0x24ceee6a +vmlinux mod_timer 0x56662b32 +vmlinux mod_unreg_security 0x3421effd +vmlinux module_add_driver 0x480036a4 +vmlinux module_refcount 0x093eb35a +vmlinux module_remove_driver 0x37d36abc +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0xe0497e70 +vmlinux mpage_readpages 0xe963388a +vmlinux mpage_writepage 0xc1a427bd +vmlinux mpage_writepages 0x0778d6a1 +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux multipath_alg_register 0xae724b51 +vmlinux multipath_alg_unregister 0x59610240 +vmlinux n_tty_ioctl 0x5d5e3784 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x66fe5f85 +vmlinux neigh_changeaddr 0x436ff280 +vmlinux neigh_compat_output 0xc551e434 +vmlinux neigh_connected_output 0x013bdc49 +vmlinux neigh_create 0x70175cb7 +vmlinux neigh_delete 0xdc10baf9 +vmlinux neigh_destroy 0x4367ee0d +vmlinux neigh_dump_info 0x252cb67a +vmlinux neigh_event_ns 0x4ef43bbc +vmlinux neigh_for_each 0x0fbea76c +vmlinux neigh_ifdown 0xc6af25b5 +vmlinux neigh_lookup 0x79f987f2 +vmlinux neigh_lookup_nodev 0x7260f862 +vmlinux neigh_parms_alloc 0x16532762 +vmlinux neigh_parms_release 0xc7798951 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0xc15097c8 +vmlinux neigh_seq_next 0xe94c7497 +vmlinux neigh_seq_start 0xfb356c36 +vmlinux neigh_seq_stop 0x07b27335 +vmlinux neigh_sysctl_register 0x94d99b24 +vmlinux neigh_sysctl_unregister 0x994d1f32 +vmlinux neigh_table_clear 0xb87a1868 +vmlinux neigh_table_init 0xe02981c5 +vmlinux neigh_update 0x824773ae +vmlinux neigh_update_hhs 0x439952b6 +vmlinux neightbl_dump_info 0xf6fa3884 +vmlinux neightbl_set 0xfdd76baa +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0xbfe5cb53 +vmlinux netdev_features_change 0x444422ca +vmlinux netdev_rx_csum_fault 0x52988d00 +vmlinux netdev_set_master 0x0b80fb72 +vmlinux netdev_state_change 0xfdc52681 +vmlinux netif_carrier_off 0x9d878160 +vmlinux netif_carrier_on 0x5f6c33ee +vmlinux netif_receive_skb 0x20550f17 +vmlinux netif_rx 0xaf2248fd +vmlinux netif_rx_ni 0x865d2179 +vmlinux netlink_ack 0xfe89a515 +vmlinux netlink_broadcast 0x7d6a1259 +vmlinux netlink_dump_start 0x71267b32 +vmlinux netlink_kernel_create 0x3e99b0a8 +vmlinux netlink_queue_skip 0x7d894fc8 +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0xdf6e4344 +vmlinux netlink_set_err 0x5fc9b73f +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0x8533199f +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x22126d3a +vmlinux netpoll_parse_options 0x3e4a2538 +vmlinux netpoll_poll 0xc959f424 +vmlinux netpoll_queue 0xca944504 +vmlinux netpoll_send_udp 0xc28cfad5 +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0xe13fee0b +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0xf011607d +vmlinux next_thread 0x79472275 +vmlinux nf_ct_attach 0x5e562b97 +vmlinux nf_getsockopt 0x02d52231 +vmlinux nf_hook_slow 0xc563e940 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0x5da1a209 +vmlinux nf_log_register 0x25d21073 +vmlinux nf_log_unregister_logger 0x2e8b01e3 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0xb66f72a7 +vmlinux nf_register_queue_handler 0xe644ced6 +vmlinux nf_register_queue_rerouter 0xc92cd4d2 +vmlinux nf_register_sockopt 0x217ddbd8 +vmlinux nf_reinject 0x62d436d1 +vmlinux nf_setsockopt 0x8c7e142f +vmlinux nf_unregister_hook 0xb0431af3 +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0x92784116 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x09a4fb1e +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0x4c4c956e +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x9b4f3684 +vmlinux nla_put 0xc685d2a3 +vmlinux nla_reserve 0xa760d226 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0xa33f7c7c +vmlinux nla_validate 0x71798dc7 +vmlinux no_llseek 0xd8c42ca1 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x0755e5b6 +vmlinux nobh_prepare_write 0x77e855fd +vmlinux nobh_truncate_page 0xa0df2e26 +vmlinux nobh_writepage 0xbc5de721 +vmlinux node_online_map 0xaf2c5c03 +vmlinux node_possible_map 0xcf6e837d +vmlinux nonseekable_open 0x37d5a088 +vmlinux noop_qdisc 0xa12bd88e +vmlinux noop_qdisc_ops 0x4621a43c +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x8bef5a9e +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0xd13e8915 +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0xee499390 +vmlinux open_by_devnum 0x735bbf63 +vmlinux open_exec 0xd349a006 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux p80211_resume 0x144912c1 +vmlinux p80211_suspend 0x54e914cc +vmlinux p80211netdev_hwremoved 0x9653c310 +vmlinux p80211netdev_rx 0x83a9f30f +vmlinux p80211skb_free 0x4ded5f69 +vmlinux p80211skb_rxmeta_attach 0x6cc0f91c +vmlinux page_follow_link_light 0xa0d0a34c +vmlinux page_put_link 0x0dfd18a4 +vmlinux page_readlink 0x52437f8f +vmlinux page_symlink 0x54612177 +vmlinux page_symlink_inode_operations 0xe8642b7b +vmlinux pagevec_lookup_tag 0x414f09f3 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0xcd93e29b +vmlinux path_release 0x028e0878 +vmlinux path_walk 0x85b5ccaf +vmlinux pci_add_new_bus 0xcec1fd5d +vmlinux pci_assign_resource 0xdc33581f +vmlinux pci_block_user_cfg_access 0xb8013bd8 +vmlinux pci_bus_add_device 0x9431b15b +vmlinux pci_bus_add_devices 0x974f58e6 +vmlinux pci_bus_alloc_resource 0x34dcc64b +vmlinux pci_bus_assign_resources 0x860a9c45 +vmlinux pci_bus_find_capability 0x4fb10f86 +vmlinux pci_bus_max_busnr 0x9515f59f +vmlinux pci_bus_read_config_byte 0x1ddd3b80 +vmlinux pci_bus_read_config_dword 0x0d118eb6 +vmlinux pci_bus_read_config_word 0x5e900656 +vmlinux pci_bus_size_bridges 0x4824b725 +vmlinux pci_bus_type 0x931d4a21 +vmlinux pci_bus_write_config_byte 0x3ecf3951 +vmlinux pci_bus_write_config_dword 0xbb95cf2b +vmlinux pci_bus_write_config_word 0x2bdc6aeb +vmlinux pci_choose_state 0x297d1539 +vmlinux pci_clear_mwi 0x30194892 +vmlinux pci_create_bus 0xdc1bda68 +vmlinux pci_dev_driver 0x96b587ae +vmlinux pci_dev_get 0x1db5cfbc +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0x24d1ac19 +vmlinux pci_disable_device 0x52c764b7 +vmlinux pci_disable_msi 0x899a9968 +vmlinux pci_disable_msix 0xd39ccdc0 +vmlinux pci_do_scan_bus 0x82970f12 +vmlinux pci_enable_bridges 0xa4a861cd +vmlinux pci_enable_device 0xc00d9c39 +vmlinux pci_enable_device_bars 0x17917a61 +vmlinux pci_enable_msi 0xded584b8 +vmlinux pci_enable_msix 0x89cba393 +vmlinux pci_enable_wake 0x2abbc9eb +vmlinux pci_find_bus 0xdbab5417 +vmlinux pci_find_capability 0xf82034ba +vmlinux pci_find_device 0x8dcc9ad3 +vmlinux pci_find_device_reverse 0x850086ad +vmlinux pci_find_next_bus 0xfaad9c81 +vmlinux pci_find_next_capability 0xcec73379 +vmlinux pci_find_parent_resource 0x8c08830d +vmlinux pci_find_slot 0xf12780f2 +vmlinux pci_fixup_device 0xc8f0de2a +vmlinux pci_get_class 0xc4cfa511 +vmlinux pci_get_device 0x4b478aa3 +vmlinux pci_get_slot 0x29f9b5da +vmlinux pci_get_subsys 0x5d8b6e9b +vmlinux pci_intx 0x82e99b58 +vmlinux pci_iomap 0x852a50ce +vmlinux pci_iounmap 0xac97607f +vmlinux pci_map_rom 0x9fbd4fe2 +vmlinux pci_map_rom_copy 0x3f381cb3 +vmlinux pci_match_device 0x893203c5 +vmlinux pci_match_id 0x4e9fcf84 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_osc_control_set 0xbd163c66 +vmlinux pci_osc_support_set 0xcaadcf83 +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0xd85b73ed +vmlinux pci_proc_attach_device 0x6866456f +vmlinux pci_proc_detach_bus 0xe1edfb74 +vmlinux pci_release_region 0x2b1c2d3a +vmlinux pci_release_regions 0x72f6bc26 +vmlinux pci_remove_behind_bridge 0xc4a36524 +vmlinux pci_remove_bus 0x24f2a127 +vmlinux pci_remove_bus_device 0xc249697a +vmlinux pci_remove_device_safe 0x11855704 +vmlinux pci_remove_rom 0x7a45a8fe +vmlinux pci_request_region 0xf071cb84 +vmlinux pci_request_regions 0xf983f80b +vmlinux pci_restore_bars 0xece3ff18 +vmlinux pci_restore_state 0xa70e420f +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0xe3b88825 +vmlinux pci_scan_bridge 0x2b0e522c +vmlinux pci_scan_bus_parented 0x988b5238 +vmlinux pci_scan_child_bus 0xe58658e0 +vmlinux pci_scan_single_device 0x50fcb86c +vmlinux pci_scan_slot 0xcb4a3b51 +vmlinux pci_set_consistent_dma_mask 0xc1993561 +vmlinux pci_set_dma_mask 0x451cf255 +vmlinux pci_set_master 0x01618eee +vmlinux pci_set_mwi 0x3f8bbb6d +vmlinux pci_set_power_state 0xb738bfc0 +vmlinux pci_setup_cardbus 0xe7c7b4b6 +vmlinux pci_unblock_user_cfg_access 0x1cd0ca55 +vmlinux pci_unmap_rom 0x1a847d39 +vmlinux pci_unregister_driver 0xe73a19ff +vmlinux pci_walk_bus 0x6eb24ef1 +vmlinux pcibios_bus_to_resource 0xd57a6aff +vmlinux pcibios_resource_to_bus 0xa7c87133 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pciserial_init_ports 0x6f105b58 +vmlinux pciserial_remove_ports 0xe31b8761 +vmlinux pciserial_resume_ports 0xc380a9e1 +vmlinux pciserial_suspend_ports 0x8d85ad65 +vmlinux per_cpu____sn_cnodeid_to_nasid 0x8e4c910b +vmlinux per_cpu____sn_hub_info 0x538fd0d0 +vmlinux per_cpu____sn_nodepda 0x00000000 +vmlinux per_cpu__cpu_info 0x260e1315 +vmlinux per_cpu__kstat 0x97ca28ec +vmlinux per_cpu__pfm_syst_info 0xa2d17b9f +vmlinux per_cpu__softnet_data 0x44911be5 +vmlinux permission 0xefed1a80 +vmlinux pfifo_qdisc_ops 0x590f312c +vmlinux pfm_install_alt_pmu_interrupt 0x4a419738 +vmlinux pfm_mod_read_pmds 0xe32c6306 +vmlinux pfm_mod_write_dbrs 0xe06bc139 +vmlinux pfm_mod_write_ibrs 0x7c18aec2 +vmlinux pfm_mod_write_pmcs 0xaa390780 +vmlinux pfm_register_buffer_fmt 0x6f795649 +vmlinux pfm_remove_alt_pmu_interrupt 0x6fba9ec7 +vmlinux pfm_sysctl 0x9ebc1b3a +vmlinux pfm_unregister_buffer_fmt 0x2d23d64f +vmlinux physical_node_map 0x20301636 +vmlinux platform_add_devices 0x89dc100e +vmlinux platform_bus 0x68a1469d +vmlinux platform_bus_type 0x9c3de1e9 +vmlinux platform_device_add 0x8a658007 +vmlinux platform_device_add_data 0x8689b915 +vmlinux platform_device_add_resources 0x1783e6e7 +vmlinux platform_device_alloc 0x2102155f +vmlinux platform_device_put 0xa7597954 +vmlinux platform_device_register 0x40742221 +vmlinux platform_device_register_simple 0x9ba2d510 +vmlinux platform_device_unregister 0x6deaf1f5 +vmlinux platform_driver_register 0x072cf5f5 +vmlinux platform_driver_unregister 0xa8a34bbb +vmlinux platform_get_irq 0xf518dedf +vmlinux platform_get_irq_byname 0x8540b900 +vmlinux platform_get_resource 0x5bb39d49 +vmlinux platform_get_resource_byname 0xee3c8362 +vmlinux pm_active 0xebd387f6 +vmlinux pm_idle 0xf890fe7f +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pneigh_enqueue 0xaf07db65 +vmlinux pneigh_lookup 0x307831ff +vmlinux pnp_activate_dev 0x00874a22 +vmlinux pnp_device_attach 0x2172f954 +vmlinux pnp_device_detach 0x91875526 +vmlinux pnp_disable_dev 0xeb894687 +vmlinux pnp_init_resource_table 0x16084899 +vmlinux pnp_is_active 0x8054b918 +vmlinux pnp_manual_config_dev 0x041b425e +vmlinux pnp_register_card_driver 0x394bb2d0 +vmlinux pnp_register_driver 0x1827068d +vmlinux pnp_release_card_device 0xd34c9432 +vmlinux pnp_request_card_device 0x40c20c87 +vmlinux pnp_resource_change 0xf577ec2b +vmlinux pnp_unregister_card_driver 0xc03bffed +vmlinux pnp_unregister_driver 0xeaa9e636 +vmlinux poll_freewait 0x300929c7 +vmlinux poll_initwait 0xcf1c006a +vmlinux posix_acl_alloc 0xcbe9d892 +vmlinux posix_acl_chmod_masq 0xf8a0a1ff +vmlinux posix_acl_clone 0x40f5b6d6 +vmlinux posix_acl_create_masq 0x1e4ebfe9 +vmlinux posix_acl_equiv_mode 0x9bb11d25 +vmlinux posix_acl_from_mode 0x63b6b18a +vmlinux posix_acl_from_xattr 0x9f3bf87b +vmlinux posix_acl_permission 0xbe173a97 +vmlinux posix_acl_to_xattr 0x8791cd7d +vmlinux posix_acl_valid 0x62fb7285 +vmlinux posix_block_lock 0xbb076391 +vmlinux posix_lock_file 0xd485a355 +vmlinux posix_lock_file_wait 0x5ecb1da2 +vmlinux posix_locks_deadlock 0x122084d1 +vmlinux posix_test_lock 0x5f686fc5 +vmlinux posix_timer_event 0x952d1724 +vmlinux posix_unblock_lock 0x3dc00ea4 +vmlinux pre_task_out_intr 0x93d6119f +vmlinux prepare_binprm 0x8f9f4e7d +vmlinux prepare_to_wait 0x8085c7b1 +vmlinux prepare_to_wait_exclusive 0xadb792c2 +vmlinux printk 0x827d5807 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0xb806baf2 +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0x2024b3f5 +vmlinux proc_dointvec 0x0d83c28b +vmlinux proc_dointvec_jiffies 0x86f9784e +vmlinux proc_dointvec_minmax 0xb5dca5f2 +vmlinux proc_dointvec_ms_jiffies 0x8f6332cd +vmlinux proc_dointvec_userhz_jiffies 0xa3331cdb +vmlinux proc_dostring 0xd1bdc623 +vmlinux proc_doulongvec_minmax 0x112887ad +vmlinux proc_doulongvec_ms_jiffies_minmax 0xade2c428 +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0x5cb35d84 +vmlinux proc_net 0x399539fa +vmlinux proc_net_netfilter 0x82cc88e8 +vmlinux proc_net_stat 0x25aad086 +vmlinux proc_root 0x988c1e9d +vmlinux proc_root_driver 0xcbbd05ac +vmlinux proc_root_fs 0x7bb84375 +vmlinux proc_symlink 0xc050956d +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux proto_register 0x59f8c281 +vmlinux proto_unregister 0x23d308cd +vmlinux ps2_cmd_aborted 0xd192f01c +vmlinux ps2_command 0x3342472b +vmlinux ps2_drain 0xb67a3b10 +vmlinux ps2_handle_ack 0x6fe89f8f +vmlinux ps2_handle_response 0x713a5486 +vmlinux ps2_init 0x5eccab9b +vmlinux ps2_schedule_command 0x11dfa8aa +vmlinux ps2_sendbyte 0x7e58fab0 +vmlinux pskb_copy 0x4da5fd6a +vmlinux pskb_expand_head 0xc0920ae4 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0x982bdfe6 +vmlinux put_cmsg 0x43ec913a +vmlinux put_device 0xf8ec9da5 +vmlinux put_disk 0x48c2fee4 +vmlinux put_driver 0x6b8b522b +vmlinux put_files_struct 0xa518e442 +vmlinux put_io_context 0x9cd4903e +vmlinux put_page 0xd6ce3d8a +vmlinux put_tty_driver 0xb4864de5 +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0xe2edef88 +vmlinux qdisc_create_dflt 0x3269a294 +vmlinux qdisc_destroy 0x205a13b1 +vmlinux qdisc_get_rtab 0xbb20ee2e +vmlinux qdisc_lock_tree 0x647d3c4a +vmlinux qdisc_lookup 0xe04bc420 +vmlinux qdisc_put_rtab 0xc50fe814 +vmlinux qdisc_reset 0xefc4954c +vmlinux qdisc_restart 0x4ba778bc +vmlinux qdisc_unlock_tree 0xf55f46b4 +vmlinux queue_delayed_work 0x6f748ee3 +vmlinux queue_work 0x6af5537c +vmlinux radix_tree_delete 0x898049c9 +vmlinux radix_tree_gang_lookup 0x35ef380e +vmlinux radix_tree_gang_lookup_tag 0xed493232 +vmlinux radix_tree_insert 0x72e6283f +vmlinux radix_tree_lookup 0x76e635da +vmlinux radix_tree_lookup_slot 0x41706e2f +vmlinux radix_tree_tag_clear 0x9ee300df +vmlinux radix_tree_tag_set 0xd73b9fb5 +vmlinux radix_tree_tagged 0xb52b2186 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0x7a234492 +vmlinux read_cache_pages 0xf16492ed +vmlinux read_dev_sector 0xb43e0296 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0x08125cfd +vmlinux redraw_screen 0x95e56190 +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0xa80a7dae +vmlinux register_acpi_bus_type 0xa46e1bff +vmlinux register_binfmt 0x4689164d +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0x9cc13882 +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x48257aeb +vmlinux register_die_notifier 0x53986488 +vmlinux register_exec_domain 0x08c08c24 +vmlinux register_filesystem 0x0b4c5797 +vmlinux register_firmware 0xf6f77a91 +vmlinux register_framebuffer 0x4459a5eb +vmlinux register_gifconf 0x286b5304 +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0xeba26425 +vmlinux register_netdevice 0x1864c9f6 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x4cb813c4 +vmlinux register_posix_clock 0xcc3cbae8 +vmlinux register_qdisc 0xea20f131 +vmlinux register_quota_format 0x1393da76 +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0xc1513d30 +vmlinux register_snap_client 0xf009f500 +vmlinux register_sound_dsp 0xd39ed635 +vmlinux register_sound_midi 0x62e39d11 +vmlinux register_sound_mixer 0x302439df +vmlinux register_sound_special 0x09c9f8e5 +vmlinux register_sound_special_device 0x49f03b88 +vmlinux register_sound_synth 0xa7a0eabb +vmlinux register_sysctl_table 0x3263609d +vmlinux register_sysrq_key 0x79ef2289 +vmlinux register_tcf_proto_ops 0x2447705e +vmlinux register_timer_hook 0x1b15acf9 +vmlinux register_wlandev 0x557ebc78 +vmlinux registered_fb 0x67e22416 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x433a4d61 +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0xddc42f93 +vmlinux remap_pfn_range 0x01a98b7e +vmlinux remote_llseek 0xe92e4061 +vmlinux remove_arg_zero 0x3e789bc6 +vmlinux remove_inode_hash 0x8315ec4d +vmlinux remove_proc_entry 0x9f723c0c +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0xa33e63f3 +vmlinux remove_wait_queue 0x36e47222 +vmlinux reqsk_queue_alloc 0x886da460 +vmlinux reqsk_queue_destroy 0x88cc2e40 +vmlinux request_firmware 0x0de4fbb3 +vmlinux request_firmware_nowait 0xdb0ce639 +vmlinux request_irq 0x512f11b0 +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x83230e05 +vmlinux rtnetlink_links 0x4d67ad5d +vmlinux rtnetlink_put_metrics 0xdb9d1c57 +vmlinux rtnl 0xab1aad87 +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0x1c6b6da8 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux rwsem_down_read_failed 0x51d5684e +vmlinux rwsem_down_write_failed 0xd8ae97ed +vmlinux rwsem_downgrade_wake 0x41c707ad +vmlinux rwsem_wake 0xc233cb54 +vmlinux sal_pcibr_slot_disable 0xba71a810 +vmlinux sal_pcibr_slot_enable 0x89e9498e +vmlinux sb_min_blocksize 0x63cd02c0 +vmlinux sb_set_blocksize 0x400255e3 +vmlinux sba_alloc_coherent 0xa7a3c07c +vmlinux sba_dma_mapping_error 0xfd79eb7a +vmlinux sba_dma_supported 0x4ac6572e +vmlinux sba_free_coherent 0x68ffc0b4 +vmlinux sba_map_sg 0x50795c5c +vmlinux sba_map_single 0x59833f5d +vmlinux sba_unmap_sg 0xe0d139fe +vmlinux sba_unmap_single 0xe0040fa6 +vmlinux sched_setscheduler 0x109fd105 +vmlinux schedule 0xa44fffc1 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0xf31b5414 +vmlinux scm_fp_dup 0xafb3bb1d +vmlinux scnprintf 0x7bb4de17 +vmlinux screen_info 0x59b7e373 +vmlinux scsi_add_device 0xfd36924f +vmlinux scsi_add_host 0xa43d96fe +vmlinux scsi_adjust_queue_depth 0xe43210d3 +vmlinux scsi_allocate_request 0xc3ba780f +vmlinux scsi_bios_ptable 0xd36295c4 +vmlinux scsi_block_requests 0x14eae587 +vmlinux scsi_block_when_processing_errors 0x2f5a0a3a +vmlinux scsi_bus_type 0x5eaf8bee +vmlinux scsi_calculate_bounce_limit 0x261199c9 +vmlinux scsi_cmd_ioctl 0x4ca6cb92 +vmlinux scsi_command_normalize_sense 0x66b870f4 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux scsi_device_cancel 0xcdc2d93d +vmlinux scsi_device_get 0xce45f498 +vmlinux scsi_device_lookup 0x9a45bc36 +vmlinux scsi_device_lookup_by_target 0x06f1113b +vmlinux scsi_device_put 0x93e49730 +vmlinux scsi_device_quiesce 0x8ed7ec12 +vmlinux scsi_device_resume 0x6c889a92 +vmlinux scsi_device_set_state 0x596c2194 +vmlinux scsi_device_types 0x6df713c9 +vmlinux scsi_do_req 0xf0d6a311 +vmlinux scsi_execute 0x1e25e519 +vmlinux scsi_execute_req 0x39177781 +vmlinux scsi_extd_sense_format 0x11267875 +vmlinux scsi_finish_command 0x97810f22 +vmlinux scsi_flush_work 0x7bc9c22d +vmlinux scsi_free_host_dev 0x13329eee +vmlinux scsi_get_command 0xda0a8f54 +vmlinux scsi_get_host_dev 0x00444e8a +vmlinux scsi_get_sense_info_fld 0xc369234b +vmlinux scsi_host_alloc 0x6461e62d +vmlinux scsi_host_get 0xcb7703a5 +vmlinux scsi_host_lookup 0x40619636 +vmlinux scsi_host_put 0x8155ad2a +vmlinux scsi_host_set_state 0xc9096347 +vmlinux scsi_internal_device_block 0x70fd364b +vmlinux scsi_internal_device_unblock 0x1df8688b +vmlinux scsi_io_completion 0x9a9979eb +vmlinux scsi_ioctl 0xd3b205aa +vmlinux scsi_ioctl_send_command 0x1e176d21 +vmlinux scsi_is_host_device 0xcdd30136 +vmlinux scsi_is_sdev_device 0x56b9ae73 +vmlinux scsi_is_target_device 0xbca4e934 +vmlinux scsi_logging_level 0xaf3dd7dc +vmlinux scsi_mode_sense 0xee88b56b +vmlinux scsi_nonblockable_ioctl 0x82785875 +vmlinux scsi_normalize_sense 0x813cd63f +vmlinux scsi_partsize 0x4afe9a77 +vmlinux scsi_print_command 0x46f74104 +vmlinux scsi_print_msg 0x67f88938 +vmlinux scsi_print_req_sense 0x05371f95 +vmlinux scsi_print_sense 0xca1c2028 +vmlinux scsi_print_sense_hdr 0xb83c35a3 +vmlinux scsi_print_status 0x9cfd56c5 +vmlinux scsi_put_command 0x7b069348 +vmlinux scsi_queue_work 0xf6654a25 +vmlinux scsi_register 0xdd824322 +vmlinux scsi_register_driver 0xb7fa8260 +vmlinux scsi_register_interface 0xfa7ec18f +vmlinux scsi_release_request 0x4c846e94 +vmlinux scsi_remove_device 0x8926ff68 +vmlinux scsi_remove_host 0x83e67f92 +vmlinux scsi_remove_target 0x64df290a +vmlinux scsi_report_bus_reset 0xa73b3028 +vmlinux scsi_report_device_reset 0xa96decd9 +vmlinux scsi_request_normalize_sense 0x9e3633e3 +vmlinux scsi_rescan_device 0x5d1ef674 +vmlinux scsi_reset_provider 0x68768236 +vmlinux scsi_scan_host 0x57764a26 +vmlinux scsi_scan_target 0x0b7f8efe +vmlinux scsi_sense_desc_find 0x10d9f885 +vmlinux scsi_sense_key_string 0x96cd2b04 +vmlinux scsi_set_medium_removal 0x2cfa4244 +vmlinux scsi_setup_blk_pc_cmnd 0x4b3d19e5 +vmlinux scsi_target_block 0xd547e3c2 +vmlinux scsi_target_quiesce 0x1d7dc496 +vmlinux scsi_target_resume 0x51d18784 +vmlinux scsi_target_unblock 0xbcb9cba9 +vmlinux scsi_test_unit_ready 0x638c5d61 +vmlinux scsi_track_queue_full 0x957e9da5 +vmlinux scsi_unblock_requests 0x93030f4e +vmlinux scsi_unregister 0xaef48128 +vmlinux scsicam_bios_param 0xd308561e +vmlinux search_binary_handler 0x2590d0a2 +vmlinux secpath_dup 0xfc93d0e9 +vmlinux secure_dccp_sequence_number 0xd47b06b2 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0xb0412cda +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0xfbab4084 +vmlinux securityfs_create_dir 0x6bcdeb97 +vmlinux securityfs_create_file 0x47a64a01 +vmlinux securityfs_remove 0x6326a793 +vmlinux send_sig 0x38d1bd02 +vmlinux send_sig_info 0x4b07ee14 +vmlinux seq_escape 0xa6293808 +vmlinux seq_lseek 0x10b26bac +vmlinux seq_open 0x24af860f +vmlinux seq_path 0x432b77a7 +vmlinux seq_printf 0x1dc7a8bd +vmlinux seq_putc 0x4e1c6389 +vmlinux seq_puts 0x32708c56 +vmlinux seq_read 0x350bc765 +vmlinux seq_release 0xfb476d74 +vmlinux seq_release_private 0xd072df68 +vmlinux serial8250_register_port 0x2ccd2463 +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0xebdb9c92 +vmlinux serio_interrupt 0x1fb7d6bf +vmlinux serio_open 0x8f8082ff +vmlinux serio_reconnect 0xa2c952e2 +vmlinux serio_rescan 0x87b185d9 +vmlinux serio_unregister_child_port 0x7fcc3894 +vmlinux serio_unregister_driver 0xd1f0830d +vmlinux serio_unregister_port 0x9d19742c +vmlinux set_anon_super 0xe436d9e1 +vmlinux set_bh_page 0xfb58d1fc +vmlinux set_binfmt 0x8a961441 +vmlinux set_blocksize 0x43106466 +vmlinux set_current_groups 0x4f18770b +vmlinux set_device_ro 0x5878d1a6 +vmlinux set_disk_ro 0x9fe73f1f +vmlinux set_page_dirty 0x57f22e52 +vmlinux set_page_dirty_lock 0x3ad2fcd9 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0x2f8f661d +vmlinux setlease 0x3dbdf885 +vmlinux setup_arg_pages 0xb887324b +vmlinux sget 0x7d0fa773 +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x8148fc22 +vmlinux shrink_dcache_sb 0xc23f0070 +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x6a5fa363 +vmlinux simple_attr_close 0x70ad25f7 +vmlinux simple_attr_open 0xee20893f +vmlinux simple_attr_read 0x14dec00c +vmlinux simple_attr_write 0x4d0dd235 +vmlinux simple_commit_write 0x15047e70 +vmlinux simple_dir_inode_operations 0xe342ad75 +vmlinux simple_dir_operations 0xdabdd2f3 +vmlinux simple_empty 0x12e07df6 +vmlinux simple_fill_super 0x4c044dca +vmlinux simple_getattr 0x116b1f3a +vmlinux simple_link 0x28217797 +vmlinux simple_lookup 0xe9d31ca6 +vmlinux simple_pin_fs 0x2c169b3e +vmlinux simple_prepare_write 0x48782251 +vmlinux simple_read_from_buffer 0x5a5e7ea3 +vmlinux simple_readpage 0x9d881e4e +vmlinux simple_release_fs 0xa1d53282 +vmlinux simple_rename 0x3f6cabd9 +vmlinux simple_rmdir 0x569a5857 +vmlinux simple_statfs 0xc9d7add8 +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0x8021882a +vmlinux simple_transaction_get 0xd84838b7 +vmlinux simple_transaction_read 0xb4ca4aa2 +vmlinux simple_transaction_release 0x537a98a4 +vmlinux simple_unlink 0x0b7476ef +vmlinux single_open 0x22ea8218 +vmlinux single_release 0xecd6d0b0 +vmlinux sk_alloc 0xff6edafa +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0xbd80ca39 +vmlinux sk_common_release 0x4e5d398c +vmlinux sk_free 0x0a121a6f +vmlinux sk_reset_timer 0x446c7d3d +vmlinux sk_run_filter 0x92fe3fde +vmlinux sk_send_sigurg 0xd60b0843 +vmlinux sk_stop_timer 0x8f816356 +vmlinux sk_stream_error 0xe54f64d4 +vmlinux sk_stream_kill_queues 0xd6ea9482 +vmlinux sk_stream_mem_schedule 0x5d7d8589 +vmlinux sk_stream_rfree 0xa37b2c3e +vmlinux sk_stream_wait_close 0x0d6caae3 +vmlinux sk_stream_wait_connect 0x1d28d4a2 +vmlinux sk_stream_wait_memory 0x2bbdd94a +vmlinux sk_stream_write_space 0xac975229 +vmlinux sk_wait_data 0x500089bd +vmlinux skb_abort_seq_read 0xd7bb2ff5 +vmlinux skb_append 0xa0cc0ac8 +vmlinux skb_append_datato_frags 0xfc22219b +vmlinux skb_checksum 0xdcf69fba +vmlinux skb_checksum_help 0x0b64a129 +vmlinux skb_clone 0x6268ecd5 +vmlinux skb_clone_fraglist 0x32426853 +vmlinux skb_copy 0xa0dd5e6b +vmlinux skb_copy_and_csum_bits 0xba7c19b1 +vmlinux skb_copy_and_csum_datagram_iovec 0xbedbba99 +vmlinux skb_copy_and_csum_dev 0x8bde0624 +vmlinux skb_copy_bits 0x7ef2304b +vmlinux skb_copy_datagram_iovec 0x7c55354a +vmlinux skb_copy_expand 0x4a9581c4 +vmlinux skb_dequeue 0x0aba85f3 +vmlinux skb_dequeue_tail 0xf1269ac1 +vmlinux skb_find_text 0x4d394008 +vmlinux skb_free_datagram 0xe12e1ec7 +vmlinux skb_icv_walk 0x40bc6d4e +vmlinux skb_insert 0x904e30be +vmlinux skb_make_writable 0xd4ba3980 +vmlinux skb_over_panic 0x19ddfd6f +vmlinux skb_pad 0x47006c99 +vmlinux skb_prepare_seq_read 0x5057ab8f +vmlinux skb_queue_head 0x256f420a +vmlinux skb_queue_purge 0x44237fc9 +vmlinux skb_queue_tail 0xbe6e5767 +vmlinux skb_realloc_headroom 0x1c30f391 +vmlinux skb_recv_datagram 0xc71a5292 +vmlinux skb_seq_read 0xc9bb1d46 +vmlinux skb_split 0x132a0db2 +vmlinux skb_store_bits 0x2aeb3f82 +vmlinux skb_under_panic 0xb6c5d25b +vmlinux skb_unlink 0x54e2c426 +vmlinux sleep_on 0xa07a8d22 +vmlinux sleep_on_timeout 0x092b007a +vmlinux sn_bus_free_sysdata 0xd93cb8be +vmlinux sn_bus_store_sysdata 0x6b5c3a69 +vmlinux sn_coherency_id 0x171826ab +vmlinux sn_dma_alloc_coherent 0x4c8fabe3 +vmlinux sn_dma_flush 0x42bd091d +vmlinux sn_dma_free_coherent 0xfa97dec3 +vmlinux sn_dma_map_sg 0x4fa87b98 +vmlinux sn_dma_map_single 0x621ccf7c +vmlinux sn_dma_mapping_error 0xacae6d43 +vmlinux sn_dma_set_mask 0x225cf2de +vmlinux sn_dma_supported 0x444a7a4d +vmlinux sn_dma_sync_sg_for_cpu 0x122ec829 +vmlinux sn_dma_sync_sg_for_device 0xcb2cab47 +vmlinux sn_dma_sync_single_for_cpu 0x0d2fdfea +vmlinux sn_dma_sync_single_for_device 0xfd922d51 +vmlinux sn_dma_unmap_sg 0x0b8e06a9 +vmlinux sn_dma_unmap_single 0xfb0f053f +vmlinux sn_flush_all_caches 0xc29d5343 +vmlinux sn_hwperf_get_nearest_node 0xa1d2934d +vmlinux sn_io_addr 0xdc477230 +vmlinux sn_partition_id 0x8df01146 +vmlinux sn_partition_serial_number 0x9a61ea6d +vmlinux sn_pci_controller_fixup 0x98e9fdf2 +vmlinux sn_pci_fixup_slot 0x190fb3d9 +vmlinux sn_pci_unfixup_slot 0x4e11a68c +vmlinux sn_prom_feature_available 0xdb22ec6b +vmlinux sn_region_size 0x3b3be38d +vmlinux sn_rtc_cycles_per_second 0x8b966b63 +vmlinux sn_send_IPI_phys 0xac812950 +vmlinux sn_sharing_domain_size 0xcb32ae05 +vmlinux sn_system_serial_number_string 0x102b5b21 +vmlinux sn_system_size 0xd7907b0f +vmlinux snprintf 0xaf25400d +vmlinux sock_alloc_send_skb 0x24e55b29 +vmlinux sock_common_getsockopt 0x4a0cfe73 +vmlinux sock_common_recvmsg 0x6dde3c25 +vmlinux sock_common_setsockopt 0x687691ec +vmlinux sock_create 0xe3e1cb25 +vmlinux sock_create_kern 0x83aec391 +vmlinux sock_create_lite 0x77a3bbc1 +vmlinux sock_enable_timestamp 0x24076be4 +vmlinux sock_get_timestamp 0x96d3f551 +vmlinux sock_i_ino 0xefdce425 +vmlinux sock_i_uid 0x77ca7ba4 +vmlinux sock_init_data 0x5aea8767 +vmlinux sock_kfree_s 0x5fa120ff +vmlinux sock_kmalloc 0xa28440c9 +vmlinux sock_map_fd 0x5fa07234 +vmlinux sock_no_accept 0xb4d514e5 +vmlinux sock_no_bind 0x7e8f815a +vmlinux sock_no_connect 0x61599e15 +vmlinux sock_no_getname 0x4ef00194 +vmlinux sock_no_getsockopt 0x48cb93b1 +vmlinux sock_no_ioctl 0xd514a68a +vmlinux sock_no_listen 0xf72959af +vmlinux sock_no_mmap 0x72e8e45e +vmlinux sock_no_poll 0xb083012c +vmlinux sock_no_recvmsg 0x3a4b67b1 +vmlinux sock_no_sendmsg 0xa5fa143d +vmlinux sock_no_sendpage 0xab5b364a +vmlinux sock_no_setsockopt 0x9cf20d82 +vmlinux sock_no_shutdown 0x898ae5e3 +vmlinux sock_no_socketpair 0x10b87d6d +vmlinux sock_recvmsg 0x3b0af050 +vmlinux sock_register 0xec8a6b78 +vmlinux sock_release 0xacb02f0f +vmlinux sock_rfree 0x2ba7c4d8 +vmlinux sock_sendmsg 0xc0431f14 +vmlinux sock_setsockopt 0x9a513f7d +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0xf32a9168 +vmlinux sock_wfree 0xf2863acd +vmlinux sock_wmalloc 0x2299cba3 +vmlinux sockfd_lookup 0xc073e195 +vmlinux sort 0x9ca95a0e +vmlinux sound_class 0x87381323 +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux starget_for_each_device 0xd2daea3b +vmlinux start_tty 0x9534d056 +vmlinux steal_locks 0xd2ed8c7e +vmlinux stop_tty 0xc775a0a5 +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0xafe82e10 +vmlinux strlcat 0xb11fa1ce +vmlinux strlcpy 0x672144bd +vmlinux strlen 0xdcb5671d +vmlinux strncat 0x234509f3 +vmlinux strnchr 0x7242e96d +vmlinux strncmp 0x85abc85f +vmlinux strncpy 0x7ec9bfbc +vmlinux strnicmp 0x756e6992 +vmlinux strnlen 0xcc07af75 +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0x3fa913da +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0xa4ec393d +vmlinux submit_bh 0x94ce46bd +vmlinux submit_bio 0xadee8afa +vmlinux subsys_create_file 0x9cf8084c +vmlinux subsys_remove_file 0x57cc6332 +vmlinux subsystem_init 0x8c0839a6 +vmlinux subsystem_register 0x79e6b418 +vmlinux subsystem_unregister 0xd12b5ee4 +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0xa2c05720 +vmlinux swiotlb_alloc_coherent 0x42ddc02b +vmlinux swiotlb_dma_mapping_error 0x0da9776d +vmlinux swiotlb_dma_supported 0xda2c00dc +vmlinux swiotlb_free_coherent 0xa8413f84 +vmlinux swiotlb_init 0xc2ed2fce +vmlinux swiotlb_map_sg 0xd36fbc3d +vmlinux swiotlb_map_single 0x92436ef6 +vmlinux swiotlb_sync_sg_for_cpu 0xce5185b4 +vmlinux swiotlb_sync_sg_for_device 0xe55bd1a6 +vmlinux swiotlb_sync_single_for_cpu 0x4272d634 +vmlinux swiotlb_sync_single_for_device 0xf8b93ed4 +vmlinux swiotlb_sync_single_range_for_cpu 0xfeba8f4c +vmlinux swiotlb_sync_single_range_for_device 0x63bccb48 +vmlinux swiotlb_unmap_sg 0xe83a54d6 +vmlinux swiotlb_unmap_single 0xd0898729 +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0xbe7758f4 +vmlinux sync_dirty_buffer 0x672cdb66 +vmlinux sync_inode 0xf00bc372 +vmlinux sync_mapping_buffers 0xc59cf993 +vmlinux sync_page_range 0x715b9634 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xde76e7bc +vmlinux sys_ioctl 0x1b610907 +vmlinux sys_open 0x701039bd +vmlinux sys_read 0xd4e65327 +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0x05b14fd3 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0x4ca83d86 +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0xdd7ec4b1 +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0x8b513522 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0xfa462173 +vmlinux sysdev_class_unregister 0x0f8128fc +vmlinux sysdev_create_file 0xbc480a05 +vmlinux sysdev_driver_register 0xf27fd921 +vmlinux sysdev_driver_unregister 0x386a4841 +vmlinux sysdev_register 0xb6458ed0 +vmlinux sysdev_remove_file 0x0b17f911 +vmlinux sysdev_unregister 0xd80e8f62 +vmlinux sysfs_chmod_file 0xb37c0fa4 +vmlinux sysfs_create_bin_file 0x978c9e45 +vmlinux sysfs_create_dir 0x12b1a5ef +vmlinux sysfs_create_file 0x72ba8cf5 +vmlinux sysfs_create_group 0xb8c5ac66 +vmlinux sysfs_create_link 0x0e5a3f8d +vmlinux sysfs_remove_bin_file 0x0a0f2177 +vmlinux sysfs_remove_dir 0xdfe7f31f +vmlinux sysfs_remove_file 0xd3c0c94d +vmlinux sysfs_remove_group 0x39bf3f70 +vmlinux sysfs_remove_link 0x3241f24f +vmlinux sysfs_rename_dir 0x50154af3 +vmlinux sysfs_update_file 0x9cf0daf6 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0xb8b40df3 +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0x8faefbd5 +vmlinux task_nice 0x706db912 +vmlinux task_no_data_intr 0xa75a9855 +vmlinux tasklet_init 0x69575bcc +vmlinux tasklet_kill 0x74e05d8c +vmlinux tasklist_lock 0xd6edcf04 +vmlinux tc_classify 0xdbe99d72 +vmlinux tcf_em_register 0xc7113c70 +vmlinux tcf_em_tree_destroy 0x1818a812 +vmlinux tcf_em_tree_dump 0x74940a67 +vmlinux tcf_em_tree_validate 0x513d4566 +vmlinux tcf_em_unregister 0xa1ae6c5e +vmlinux tcf_exts_change 0xe18a0caf +vmlinux tcf_exts_destroy 0x7b881b32 +vmlinux tcf_exts_dump 0xc21c2733 +vmlinux tcf_exts_dump_stats 0xbf8d862c +vmlinux tcf_exts_validate 0xd2aec12b +vmlinux tcf_police 0x0a279518 +vmlinux tcf_police_destroy 0xc0fcdb01 +vmlinux tcf_police_dump 0xae4795c8 +vmlinux tcf_police_dump_stats 0xea9a96a9 +vmlinux tcf_police_hash 0xc81dc21b +vmlinux tcf_police_ht 0xe6da3c75 +vmlinux tcf_police_locate 0xcf588cb7 +vmlinux tcf_police_lookup 0x6bccd035 +vmlinux tcf_police_new_index 0x5ed742fd +vmlinux tcp_check_req 0xd415a75e +vmlinux tcp_child_process 0x51bf46b9 +vmlinux tcp_close 0x14ddbcfd +vmlinux tcp_connect 0xa5662358 +vmlinux tcp_create_openreq_child 0x5a589e17 +vmlinux tcp_death_row 0xcfd9ba41 +vmlinux tcp_disconnect 0xf18d88d4 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x6c9ebdf5 +vmlinux tcp_getsockopt 0x740f65d8 +vmlinux tcp_hashinfo 0x49b7d059 +vmlinux tcp_init_congestion_ops 0x3c18a635 +vmlinux tcp_init_xmit_timers 0x0abf2367 +vmlinux tcp_ioctl 0x80cfb915 +vmlinux tcp_make_synack 0xb24d4481 +vmlinux tcp_memory_allocated 0x6f4fc248 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0xef4bf493 +vmlinux tcp_parse_options 0xf37107ce +vmlinux tcp_poll 0x1dd39ba1 +vmlinux tcp_proc_register 0x26c145af +vmlinux tcp_proc_unregister 0x73a73b27 +vmlinux tcp_prot 0x45e67599 +vmlinux tcp_rcv_established 0x78d0efb7 +vmlinux tcp_rcv_state_process 0x476e165a +vmlinux tcp_read_sock 0xa85b2785 +vmlinux tcp_recvmsg 0x1465cdbf +vmlinux tcp_register_congestion_control 0xd4ffc40a +vmlinux tcp_reno_cong_avoid 0x3c3a96ff +vmlinux tcp_reno_min_cwnd 0xeb5ecc5f +vmlinux tcp_reno_ssthresh 0x8258e335 +vmlinux tcp_sendmsg 0x12d69823 +vmlinux tcp_sendpage 0x3184112e +vmlinux tcp_setsockopt 0x789bbd1e +vmlinux tcp_shutdown 0x3ef8ced0 +vmlinux tcp_simple_retransmit 0x3befd569 +vmlinux tcp_sockets_allocated 0x3947c486 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0x81e4bc90 +vmlinux tcp_timewait_state_process 0x7f3b57ce +vmlinux tcp_unhash 0xfd8d45df +vmlinux tcp_unregister_congestion_control 0x3550c0df +vmlinux tcp_v4_conn_request 0xf2402308 +vmlinux tcp_v4_connect 0xa87bdb43 +vmlinux tcp_v4_destroy_sock 0xe058586a +vmlinux tcp_v4_do_rcv 0xe68bb7f0 +vmlinux tcp_v4_remember_stamp 0xf1600ef8 +vmlinux tcp_v4_send_check 0x999e4497 +vmlinux tcp_v4_syn_recv_sock 0x9e14ed83 +vmlinux test_clear_page_dirty 0xbedb3ab4 +vmlinux test_set_page_writeback 0xb6b84371 +vmlinux textsearch_destroy 0x44efa5bb +vmlinux textsearch_find_continuous 0xb5fe96d0 +vmlinux textsearch_prepare 0x32ce2c88 +vmlinux textsearch_register 0x7daa9b85 +vmlinux textsearch_unregister 0xcae5e4ba +vmlinux thaw_bdev 0xad37d6f6 +vmlinux timespec_trunc 0xc045ad4e +vmlinux tioca_fastwrite_enable 0xced859b2 +vmlinux tioca_gart_found 0xad4cf1ca +vmlinux tioca_list 0x8716021f +vmlinux tiocx_bus_type 0x067ab85f +vmlinux tiocx_dma_addr 0xa049e49a +vmlinux tiocx_irq_alloc 0x600cd584 +vmlinux tiocx_irq_free 0xc3ecf245 +vmlinux tiocx_swin_base 0x883a0061 +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0x5006749c +vmlinux tr_type_trans 0x1a62bff7 +vmlinux transport_add_device 0x9a76ef16 +vmlinux transport_class_register 0xa4b40062 +vmlinux transport_class_unregister 0x690e342b +vmlinux transport_configure_device 0x6aa0291e +vmlinux transport_destroy_device 0x1e23b06c +vmlinux transport_remove_device 0xc4ad9685 +vmlinux transport_setup_device 0x37a10d71 +vmlinux truncate_inode_pages 0x0f136160 +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0x0e50ac81 +vmlinux try_to_release_page 0x344911a7 +vmlinux tty_check_change 0xc8b1f9bf +vmlinux tty_flip_buffer_push 0xa17b4eb7 +vmlinux tty_get_baud_rate 0xfeda6143 +vmlinux tty_hangup 0xe77450c5 +vmlinux tty_hung_up_p 0xcc8ea602 +vmlinux tty_ldisc_deref 0x77d78c45 +vmlinux tty_ldisc_flush 0x1ba5c8a2 +vmlinux tty_ldisc_get 0xe49d70ce +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x3c093a42 +vmlinux tty_ldisc_ref_wait 0x3cef33c7 +vmlinux tty_name 0xba1d30b0 +vmlinux tty_register_device 0xa64de1fa +vmlinux tty_register_driver 0x11b82702 +vmlinux tty_register_ldisc 0x9c54c5fa +vmlinux tty_set_operations 0xdd3a8972 +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0xef16768c +vmlinux tty_unregister_driver 0xf852625c +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0x1bfa259b +vmlinux tty_wait_until_sent 0x29b1df68 +vmlinux tty_wakeup 0x40db9244 +vmlinux uart_add_one_port 0x3df7873e +vmlinux uart_get_baud_rate 0xc733dabe +vmlinux uart_get_divisor 0x323aa120 +vmlinux uart_match_port 0x34a8908b +vmlinux uart_register_driver 0xe77bc9e7 +vmlinux uart_remove_one_port 0x2115795d +vmlinux uart_resume_port 0x71d5b75d +vmlinux uart_suspend_port 0x65a1faa8 +vmlinux uart_unregister_driver 0x3158b702 +vmlinux uart_update_timeout 0xa73e6f40 +vmlinux uart_write_wakeup 0xd75a0437 +vmlinux udelay 0xa39b4cf2 +vmlinux udp_disconnect 0xa4045c58 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0xabad83d7 +vmlinux udp_ioctl 0xf9b4bc03 +vmlinux udp_poll 0x3858a337 +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x1b78ae76 +vmlinux udp_proc_unregister 0x1530b3e7 +vmlinux udp_prot 0x585868c3 +vmlinux udp_sendmsg 0x45451520 +vmlinux uhci_check_and_reset_hc 0x5c0246f0 +vmlinux uhci_reset_hc 0xaa0d44ca +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux uncached_alloc_page 0x4bb9a7ee +vmlinux uncached_free_page 0x5f6b0c84 +vmlinux unload_nls 0xbe0dc049 +vmlinux unlock_buffer 0x6cf2b047 +vmlinux unlock_new_inode 0x77a22cd7 +vmlinux unlock_page 0x4c115766 +vmlinux unlock_rename 0x3908b5f1 +vmlinux unmap_mapping_range 0xfeb13f3f +vmlinux unmap_underlying_metadata 0xfdf080d8 +vmlinux unregister_8022_client 0x3418d5a8 +vmlinux unregister_acpi_bus_type 0x9f1ffa79 +vmlinux unregister_binfmt 0x204da300 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0xf9201b41 +vmlinux unregister_die_notifier 0x01a4ea6d +vmlinux unregister_exec_domain 0xb9903ddc +vmlinux unregister_filesystem 0xc8378e5d +vmlinux unregister_framebuffer 0xcea51803 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0x8277d570 +vmlinux unregister_netdevice 0xaedce213 +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0xe107bd1e +vmlinux unregister_qdisc 0xcb09ee5e +vmlinux unregister_quota_format 0xb208c277 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0x8ffde86f +vmlinux unregister_snap_client 0x32cdb935 +vmlinux unregister_sound_dsp 0xcd083b10 +vmlinux unregister_sound_midi 0xfdab6de3 +vmlinux unregister_sound_mixer 0x7afc9d8a +vmlinux unregister_sound_special 0x99c95fa5 +vmlinux unregister_sound_synth 0xdf03108a +vmlinux unregister_sysctl_table 0x2ee4b04c +vmlinux unregister_sysrq_key 0xd03b6b39 +vmlinux unregister_tcf_proto_ops 0xee6c7e27 +vmlinux unregister_timer_hook 0xe3e1f28b +vmlinux unregister_wlandev 0x05779aa6 +vmlinux unshare_files 0x04a20170 +vmlinux unw_access_ar 0xf62871a5 +vmlinux unw_access_br 0x2e1c6592 +vmlinux unw_access_fr 0x595f4c64 +vmlinux unw_access_gr 0xf5060848 +vmlinux unw_access_pr 0x4d16da2b +vmlinux unw_init_frame_info 0x0ecbf58b +vmlinux unw_init_from_blocked_task 0x1037cb94 +vmlinux unw_init_running 0x110f0dee +vmlinux unw_unwind 0x1e3a5368 +vmlinux unw_unwind_to_user 0x94ad0718 +vmlinux update_atime 0x5126457c +vmlinux update_region 0x70d454d2 +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0xf7249fea +vmlinux vc_cons 0xf27f1bba +vmlinux vc_resize 0xaf22ffca +vmlinux vesa_modes 0xdffc80fc +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0x16c06318 +vmlinux vfs_follow_link 0xffe00699 +vmlinux vfs_fstat 0x49afabd6 +vmlinux vfs_get_dqblk 0xe87efd14 +vmlinux vfs_get_dqinfo 0x05510687 +vmlinux vfs_getattr 0x1df0718a +vmlinux vfs_link 0xad309088 +vmlinux vfs_llseek 0x404eb9d4 +vmlinux vfs_lstat 0xfa7b025a +vmlinux vfs_mkdir 0xe2f95236 +vmlinux vfs_mknod 0xf2966aa7 +vmlinux vfs_permission 0x8c67b9d2 +vmlinux vfs_quota_off 0x4bf974bf +vmlinux vfs_quota_on 0x4c30d2f9 +vmlinux vfs_quota_on_mount 0x9f27b7c2 +vmlinux vfs_quota_sync 0x5b4dec57 +vmlinux vfs_read 0xcacb91fe +vmlinux vfs_readdir 0x774bac8f +vmlinux vfs_readlink 0xad48db21 +vmlinux vfs_readv 0xe14d313d +vmlinux vfs_rename 0x477841be +vmlinux vfs_rmdir 0x2cfa97f9 +vmlinux vfs_set_dqblk 0x2f00155e +vmlinux vfs_set_dqinfo 0xe6453964 +vmlinux vfs_stat 0xa90a7605 +vmlinux vfs_statfs 0xe4f2a7d3 +vmlinux vfs_symlink 0x1506176f +vmlinux vfs_unlink 0xbe39f53d +vmlinux vfs_write 0x16822c10 +vmlinux vfs_writev 0xd6912357 +vmlinux vga_console_membase 0x455fbbb2 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x29e829bb +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_end 0x2a5465cf +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0x673ab975 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0x16912c88 +vmlinux vmem_map 0xead20fa3 +vmlinux vmtruncate 0xe663f440 +vmlinux vprintk 0xdef29882 +vmlinux vscnprintf 0xf3522c9c +vmlinux vsnprintf 0x0e57f111 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0x25fa6f17 +vmlinux wait_for_completion_interruptible 0x891e32b8 +vmlinux wait_for_completion_interruptible_timeout 0x8d5642fc +vmlinux wait_for_completion_timeout 0x1fae7a0b +vmlinux wait_on_page_bit 0x83a5a4d5 +vmlinux wait_on_sync_kiocb 0xd8d38c82 +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0x37a6a644 +vmlinux wireless_send_event 0xfc04015a +vmlinux wireless_spy_update 0x03084b2c +vmlinux wlan_setup 0xa086ba3c +vmlinux wlan_unsetup 0x1b225340 +vmlinux write_inode_now 0xbdd9427a +vmlinux write_one_page 0x8a31b2db +vmlinux xfrm4_rcv 0x0db3400c +vmlinux xfrm_aalg_get_byid 0xa0fc38f1 +vmlinux xfrm_aalg_get_byidx 0x8e69ed47 +vmlinux xfrm_aalg_get_byname 0x4af7a738 +vmlinux xfrm_alloc_spi 0xd738453b +vmlinux xfrm_bundle_ok 0x043f35fb +vmlinux xfrm_calg_get_byid 0x8eacf171 +vmlinux xfrm_calg_get_byname 0x271286de +vmlinux xfrm_cfg_sem 0xa12f3c84 +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0xea280158 +vmlinux xfrm_dst_lookup 0x97a61501 +vmlinux xfrm_ealg_get_byid 0xfc5dabf1 +vmlinux xfrm_ealg_get_byidx 0xffe3f76d +vmlinux xfrm_ealg_get_byname 0x913de4f4 +vmlinux xfrm_find_acq 0x28a79b82 +vmlinux xfrm_find_acq_byseq 0xf96b2706 +vmlinux xfrm_get_acqseq 0xb01bebf9 +vmlinux xfrm_init_pmtu 0x8f099bde +vmlinux xfrm_init_state 0x86a93250 +vmlinux xfrm_lookup 0xf72e775c +vmlinux xfrm_parse_spi 0x39f52cee +vmlinux xfrm_policy_alloc 0x5ed31478 +vmlinux xfrm_policy_byid 0x4a8d6129 +vmlinux xfrm_policy_bysel 0x7cdeaf5d +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x0d9be9eb +vmlinux xfrm_policy_list 0x69b31028 +vmlinux xfrm_policy_register_afinfo 0x4f15e671 +vmlinux xfrm_policy_unregister_afinfo 0x11854ed1 +vmlinux xfrm_policy_walk 0xfe3e0d30 +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0xe578885f +vmlinux xfrm_register_type 0xdbb1e4a8 +vmlinux xfrm_replay_advance 0xfc8cc1eb +vmlinux xfrm_replay_check 0x2c6faec1 +vmlinux xfrm_state_add 0xa5cb9f86 +vmlinux xfrm_state_alloc 0x1a96e7ec +vmlinux xfrm_state_check 0xa5aad806 +vmlinux xfrm_state_check_expire 0xad49b5f6 +vmlinux xfrm_state_delete 0xd1570d7e +vmlinux xfrm_state_delete_tunnel 0x16dd67c3 +vmlinux xfrm_state_flush 0x4d093dfa +vmlinux xfrm_state_insert 0xc4b935c8 +vmlinux xfrm_state_lookup 0x14be5cfc +vmlinux xfrm_state_mtu 0x08ca16a3 +vmlinux xfrm_state_register_afinfo 0x777b383b +vmlinux xfrm_state_unregister_afinfo 0x5e015fc7 +vmlinux xfrm_state_update 0x0c8031fe +vmlinux xfrm_state_walk 0x98e2a487 +vmlinux xfrm_unregister_km 0xf7d98f62 +vmlinux xfrm_unregister_type 0x7c5aa755 +vmlinux xfrm_user_policy 0x76973d1b +vmlinux xor_ia64_2 0xeeb8a24c +vmlinux xor_ia64_3 0x2f367d8c +vmlinux xor_ia64_4 0x060d680f +vmlinux xor_ia64_5 0xc783b7cf +vmlinux xrlim_allow 0x7a2f6e4e +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xf448c4e8 +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x47ac8104 +vmlinux zero_page_memmap_ptr 0x2fd283e7 +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0x1b839779 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/powerpc/powerpc64-smp.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/powerpc/powerpc64-smp.modules @@ -0,0 +1,1397 @@ +3c359 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +6pack +8021q +8139cp +8139too +8250 +8250_pci +8390 +9p2000 +a3d +aacraid +abyss +ac97_codec +acecad +acenic +aci +act200l-sir +actisys-sir +acx +ad1848 +ad1889 +adfs +adi +adlib_card +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +advansys +aec62xx +aedsp16 +aes +affs +af_key +af_packet +agpgart +ah4 +ah6 +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airport +airprime +ali-ircc +ambassador +amd8111e +analog +anubis +aoe +appletalk +appletouch +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atmtcp +atp870u +atxp1 +auerswald +auth_rpcgss +autofs +autofs4 +ax25 +axnet_cs +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_misc +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bnep +bnx2 +bonding +bpa10x +bpck +bpqether +br2684 +bridge +bsd_comp +bt3c_cs +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +bw-qcam +capability +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cman +cmd64x +cn +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comm +commoncap +configfs +cp2101 +cpia +cpia_pp +cpia_usb +cpqarray +cpufreq_conservative +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxacru +cxgb +cyber2000fb +cyberjack +cyblafb +cyclades +cyclomx +cycx_drv +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +des +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +diskonchip +dl2k +dlci +dlm +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +dpc7146 +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dst +dst_ca +dstr +ds_w1_bridge +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +eagle-usb +eata +eata_pio +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +econet +eepro100 +eeprom +efs +ehci-hcd +elo +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +eni +epat +epca +epia +epic100 +eql +esi-sir +esp4 +esp6 +eth1394 +evbug +evdev +exportfs +ext2 +ext3 +farsync +fat +faulty +fdomain +fdomain_cs +fealnx +firestream +fit2 +fit3 +floppy +fm801-gp +fmvj18x_cs +forcedeth +fore_200e +freevxfs +friq +frpw +fscher +fscpos +ftdi_sio +ftl +fuse +gadgetfs +gamecon +gameport +garmin_gps +gdth +generic +generic_serial +gen_probe +g_ether +gf2k +g_file_storage +gfs +girbil-sir +gl518sm +gl520sm +gl620a +gnbd +grip +grip_mp +g_serial +guillemot +gunze +g_zero +hamachi +hangcheck-timer +hci_uart +hci_usb +hci_vhci +hdlc +hdlcdrv +he +hermes +hexium_gemini +hexium_orion +hfs +hfsplus +hidp +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hp4x +hpfs +hpt34x +hpt366 +hvcs +hvcserver +hwmon-vid +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-dev +i2c-i801 +i2c-i810 +i2c-isa +i2c-keywest +i2c-matroxfb +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-pmac-smu +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i810_audio +i82092 +ib_cm +ib_core +ib_ipoib +ib_mad +ibmcam +ib_mthca +ibmveth +ibmvscsic +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +icom +ide-cd +ide-cs +ide-disk +ide-floppy +ide-scsi +ide-tape +idmouse +idt77252 +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +inftl +initio +interact +io_edgeport +io_ti +ip2 +ip2main +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ip_gre +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irport +irtty-sir +ir-usb +iscsi_tcp +islsm +islsm_device +islsm_pci +islsm_usb +isofs +isp116x-hcd +istallion +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kahlua +kaweth +kbic +kbtab +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l64781 +lanai +lapb +lapbether +lcd +ldusb +lec +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +litelink-sir +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lockd +lock_dlm +lock_gulm +lock_harness +lock_nolock +loop +lp +lparcfg +lpfc +lxt +ma600-sir +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_maven +matrox_w1 +max1619 +max6875 +mcp2120-sir +mct_u232 +md4 +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mga +michael_mic +microtek +mii +minix +mk712 +mkiss +mmc_core +moxa +mpoa +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu401 +mrv8k +msdos +msp3400 +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouch +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mv643xx_eth +mxb +mxser +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +ne2k-pci +neofb +net1080 +net2280 +netconsole +netrom +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +nsc-ircc +ntfs +nvidiafb +nxt2002 +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ohci1394 +ohci-hcd +old_belkin-sir +olympic +omninet +on20 +on26 +onenand +opl3 +opl3sa2 +oprofile +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pas2 +pc300 +pc87360 +pca9539 +pcd +pcf8574 +pcf8591 +pci +pci200syn +pcilynx +pcips2 +pcmcia +pcmcia_core +pcmciamtd +pcnet32 +pcnet_cs +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmac_zilog +pmc551 +podxtpro +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +prism54 +psmouse +pss +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radio-gemtek-pci +radio-maestro +radio-maxiradio +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio500 +riscom8 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rrunner +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtas_flash +rtc8564 +rtl8150 +rxrpc +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7111 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb +sb_lib +sbp2 +sc1200 +scanlog +sch_atm +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_debug +scsi_mod +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200_acb +sdhci +sd_mod +se401 +seclvl +serial_core +serial_cs +serio_raw +sermouse +serpent +serport +sg +sha1 +sha256 +sha512 +shaper +sidewinder +siimage +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sk98lin +skfp +skge +sky2 +sl811_cs +sl811-hcd +sl82c105 +slhc +slip +slram +smbfs +smc91c92_cs +smsc47b397 +smsc47m1 +smsc-ircc2 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1889 +snd-ainstr-fm +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fm801 +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-powermac +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +softdog +sound +soundcore +sp8870 +sp887x +spaceball +spaceorb +spca5xx +specialix +spectrum_cs +speedtch +squashfs +sr_mod +st +stallion +starfire +stinger +stir4200 +strip +stv0297 +stv0299 +stv680 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sx +sx8 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink +synclink_cs +synclinkmp +syncppp +sysv +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tea +tea6415c +tea6420 +tekram-sir +tg3 +tgr192 +therm_pm72 +tipar +ti_usb_3410_5052 +tlclk +tmdc +tms380tr +tmscsim +tmspci +touchkitusb +tpm +tpm_atmel +tpm_nsc +trident +tridentfb +trix +trm290 +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +twidjoy +twofish +typhoon +uart401 +uart6850 +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +umem +uninorth-agp +unionfs +uPD98402 +usbatm +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vfat +vgastate +via +via686a +via82cxxx +via-ircc +via-rhine +via-velocity +vicam +video1394 +video-buf +video-buf-dvb +videodev +visor +vlsi_ir +v_midi +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w83627ehf +w83627hf +w83781d +w83792d +w83977af_ir +w83l785ts +w9966 +w9968cf +wacom +wanrouter +wanxl +warrior +wavelan_cs +wbsd +wdrtas +wdt_pci +whiteheat +winbond-840 +windfarm_core +windfarm_cpufreq_clamp +windfarm_lm75_sensor +windfarm_pid +windfarm_pm81 +windfarm_pm91 +windfarm_smu_controls +windfarm_smu_sensors +wire +wl3501_cs +wm8775 +wp512 +x1205 +x25 +x25_asy +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xircom_tulip_cb +xor +xpad +xtkbd +xusbatm +yam +yealink +yellowfin +yenta_socket +zatm +zaurus +zd1201 +zd1211 +zlib_deflate --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/powerpc/powerpc64-smp +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/powerpc/powerpc64-smp @@ -0,0 +1,5431 @@ +arch/powerpc/platforms/pseries/hvcserver hvcs_free_connection 0xd0a02396 +arch/powerpc/platforms/pseries/hvcserver hvcs_free_partner_info 0xc39c3704 +arch/powerpc/platforms/pseries/hvcserver hvcs_get_partner_info 0x536d329b +arch/powerpc/platforms/pseries/hvcserver hvcs_register_connection 0x048d27cc +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0x33ceb53f +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0x2f1c35c5 +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0x8fd87408 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xfdd59660 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/atm/suni suni_init 0x4ca6d277 +drivers/atm/uPD98402 uPD98402_init 0x28d733cf +drivers/block/loop loop_register_transfer 0x45aa0290 +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0x32b29792 +drivers/block/paride/paride pi_disconnect 0xfe77b65f +drivers/block/paride/paride pi_do_claimed 0x5938ca48 +drivers/block/paride/paride pi_init 0xfa3b8ad4 +drivers/block/paride/paride pi_read_block 0x151b6423 +drivers/block/paride/paride pi_read_regr 0xf82dfce2 +drivers/block/paride/paride pi_register 0xa26c81fe +drivers/block/paride/paride pi_release 0xc1d1886a +drivers/block/paride/paride pi_schedule_claimed 0x7e2be814 +drivers/block/paride/paride pi_unregister 0xc1e16bba +drivers/block/paride/paride pi_write_block 0x1e051eff +drivers/block/paride/paride pi_write_regr 0xc3a7e0dc +drivers/cdrom/cdrom cdrom_get_last_written 0xcb8dddba +drivers/cdrom/cdrom cdrom_get_media_event 0xf9fa50be +drivers/cdrom/cdrom cdrom_ioctl 0x88ba1043 +drivers/cdrom/cdrom cdrom_media_changed 0x4517f372 +drivers/cdrom/cdrom cdrom_mode_select 0xf541d2a7 +drivers/cdrom/cdrom cdrom_mode_sense 0xba42656f +drivers/cdrom/cdrom cdrom_number_of_slots 0x0eebe943 +drivers/cdrom/cdrom cdrom_open 0x74ecff62 +drivers/cdrom/cdrom cdrom_release 0x5a9e0028 +drivers/cdrom/cdrom init_cdrom_command 0x344adbd5 +drivers/cdrom/cdrom register_cdrom 0x292793e1 +drivers/cdrom/cdrom unregister_cdrom 0xa81761ef +drivers/char/agp/agpgart agp3_generic_cleanup 0xc2424641 +drivers/char/agp/agpgart agp3_generic_configure 0x4b085dbf +drivers/char/agp/agpgart agp3_generic_fetch_size 0xde9b17ed +drivers/char/agp/agpgart agp3_generic_sizes 0x546264cf +drivers/char/agp/agpgart agp3_generic_tlbflush 0x2550dfa2 +drivers/char/agp/agpgart agp_add_bridge 0x3b0885d5 +drivers/char/agp/agpgart agp_alloc_bridge 0xd2a49670 +drivers/char/agp/agpgart agp_allocate_memory 0x917772b5 +drivers/char/agp/agpgart agp_backend_acquire 0x90abde0b +drivers/char/agp/agpgart agp_backend_release 0xa5122413 +drivers/char/agp/agpgart agp_bind_memory 0x0a31ab87 +drivers/char/agp/agpgart agp_bridge 0xc6bc8d07 +drivers/char/agp/agpgart agp_bridges 0x673f815e +drivers/char/agp/agpgart agp_collect_device_status 0x37eea5ed +drivers/char/agp/agpgart agp_copy_info 0xe75c0818 +drivers/char/agp/agpgart agp_create_memory 0xc8126a67 +drivers/char/agp/agpgart agp_device_command 0xe6d5c272 +drivers/char/agp/agpgart agp_enable 0x3c0cec7f +drivers/char/agp/agpgart agp_find_bridge 0xd36b135f +drivers/char/agp/agpgart agp_free_key 0xd0fef3b2 +drivers/char/agp/agpgart agp_free_memory 0x343205d8 +drivers/char/agp/agpgart agp_generic_alloc_by_type 0x1a1de4e2 +drivers/char/agp/agpgart agp_generic_alloc_page 0x1a47c82e +drivers/char/agp/agpgart agp_generic_create_gatt_table 0x5fc0ef4b +drivers/char/agp/agpgart agp_generic_destroy_page 0xbba27749 +drivers/char/agp/agpgart agp_generic_enable 0xaefbff9b +drivers/char/agp/agpgart agp_generic_free_by_type 0x6201562a +drivers/char/agp/agpgart agp_generic_free_gatt_table 0x525612f3 +drivers/char/agp/agpgart agp_generic_insert_memory 0x98835a88 +drivers/char/agp/agpgart agp_generic_mask_memory 0xb72a6806 +drivers/char/agp/agpgart agp_generic_remove_memory 0x4471c50d +drivers/char/agp/agpgart agp_memory_reserved 0xe089cfcc +drivers/char/agp/agpgart agp_num_entries 0xd6feefa5 +drivers/char/agp/agpgart agp_off 0x7538b132 +drivers/char/agp/agpgart agp_put_bridge 0xedcbf78b +drivers/char/agp/agpgart agp_remove_bridge 0xbb2af824 +drivers/char/agp/agpgart agp_try_unsupported_boot 0xc5d9c46c +drivers/char/agp/agpgart agp_unbind_memory 0xdbff2b5a +drivers/char/agp/agpgart get_agp_version 0xcbe12e99 +drivers/char/agp/agpgart global_cache_flush 0xa4d4f0e6 +drivers/char/drm/drm drm_addbufs_agp 0x27e81544 +drivers/char/drm/drm drm_addbufs_fb 0x8e013e33 +drivers/char/drm/drm drm_addbufs_pci 0x6a55aa2f +drivers/char/drm/drm drm_addmap 0xe525a30c +drivers/char/drm/drm drm_agp_acquire 0x1419fc74 +drivers/char/drm/drm drm_agp_alloc 0x9515b6ad +drivers/char/drm/drm drm_agp_bind 0x1f7fec5c +drivers/char/drm/drm drm_agp_bind_memory 0xbcaeaf26 +drivers/char/drm/drm drm_agp_enable 0xd5a30916 +drivers/char/drm/drm drm_agp_free 0x8ff890ed +drivers/char/drm/drm drm_agp_info 0x9e0c6766 +drivers/char/drm/drm drm_agp_release 0x4d2b448b +drivers/char/drm/drm drm_agp_unbind 0x7b9d4275 +drivers/char/drm/drm drm_ati_pcigart_cleanup 0x818294b1 +drivers/char/drm/drm drm_ati_pcigart_init 0x4d1cbb6e +drivers/char/drm/drm drm_compat_ioctl 0x9c6a4349 +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0x9687b0f7 +drivers/char/drm/drm drm_core_reclaim_buffers 0x5be88feb +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0xe5e01814 +drivers/char/drm/drm drm_fasync 0x995d8b26 +drivers/char/drm/drm drm_get_dev 0xf26aab51 +drivers/char/drm/drm drm_get_resource_len 0xbcba6f20 +drivers/char/drm/drm drm_get_resource_start 0x39b74514 +drivers/char/drm/drm drm_init 0x417c8394 +drivers/char/drm/drm drm_ioctl 0x354b5caf +drivers/char/drm/drm drm_irq_uninstall 0x179504f3 +drivers/char/drm/drm drm_mmap 0x06558bb9 +drivers/char/drm/drm drm_open 0x99a27491 +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0xad94d29c +drivers/char/drm/drm drm_pci_free 0x4a61a3aa +drivers/char/drm/drm drm_poll 0x13f37105 +drivers/char/drm/drm drm_release 0x87736776 +drivers/char/drm/drm drm_rmmap 0x0723fa4d +drivers/char/drm/drm drm_rmmap_locked 0xb1307dc9 +drivers/char/drm/drm drm_vbl_send_signals 0x02f7e2c1 +drivers/char/generic_serial gs_block_til_ready 0xa3e3f20f +drivers/char/generic_serial gs_chars_in_buffer 0xe1956599 +drivers/char/generic_serial gs_close 0x4fa14e2a +drivers/char/generic_serial gs_flush_buffer 0xe103201c +drivers/char/generic_serial gs_flush_chars 0xea629866 +drivers/char/generic_serial gs_getserial 0xe1c51066 +drivers/char/generic_serial gs_got_break 0x0abcaca3 +drivers/char/generic_serial gs_hangup 0xa4b37970 +drivers/char/generic_serial gs_init_port 0x7a6f6ad7 +drivers/char/generic_serial gs_put_char 0xad1e0d44 +drivers/char/generic_serial gs_set_termios 0x6dd69012 +drivers/char/generic_serial gs_setserial 0x4b2eb5bd +drivers/char/generic_serial gs_start 0x83921143 +drivers/char/generic_serial gs_stop 0x5b4ba19a +drivers/char/generic_serial gs_write 0xc6568ef7 +drivers/char/generic_serial gs_write_room 0xd431c446 +drivers/char/ip2main ip2_loadmain 0x5f735f69 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0xd25d4247 +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0xaf52a193 +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0xefe8c617 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0x364622ed +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0x5ee7dd03 +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0x489943d6 +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0x9e1b4a41 +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0x3a68c092 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0x3e8ca5d8 +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x16c2a90c +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0xb0f180c4 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0xa2c99063 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0xa2de06a2 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0x61b4b1bd +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0x3bf31d5e +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0x35195715 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0x30bd6070 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0xe1014af1 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0x425b0dca +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0xccf27f4b +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0xb33235aa +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0x94368fed +drivers/char/tpm/tpm tpm_open 0xc5663397 +drivers/char/tpm/tpm tpm_pm_resume 0x4259b704 +drivers/char/tpm/tpm tpm_pm_suspend 0xb493dfe4 +drivers/char/tpm/tpm tpm_read 0x6dd61084 +drivers/char/tpm/tpm tpm_register_hardware 0x9c2909b6 +drivers/char/tpm/tpm tpm_release 0xa4960668 +drivers/char/tpm/tpm tpm_remove_hardware 0x478a6a52 +drivers/char/tpm/tpm tpm_show_caps 0x7e37256c +drivers/char/tpm/tpm tpm_show_pcrs 0x8829712c +drivers/char/tpm/tpm tpm_show_pubek 0xb76b624e +drivers/char/tpm/tpm tpm_store_cancel 0xadda255c +drivers/char/tpm/tpm tpm_write 0x85a7733b +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0x315f246a +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0x185042a8 +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0x19ce35bb +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0xe3a52e28 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0xe23b593b +drivers/i2c/busses/i2c-amd756 amd756_smbus 0x341c6fe7 +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0x7b02d961 +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0xd48c7df2 +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0xdd3d903c +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x07d47ac9 +drivers/ieee1394/ieee1394 csr1212_read 0xbde3eb37 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x8e84f7e2 +drivers/ieee1394/ieee1394 dma_prog_region_free 0x3ebada0d +drivers/ieee1394/ieee1394 dma_prog_region_init 0xae3544de +drivers/ieee1394/ieee1394 dma_region_alloc 0xde56ca9f +drivers/ieee1394/ieee1394 dma_region_free 0x50ab38b7 +drivers/ieee1394/ieee1394 dma_region_init 0xa0f0527a +drivers/ieee1394/ieee1394 dma_region_mmap 0x80f22be5 +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0x8dc84929 +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0x0af5cffe +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0xfdcde640 +drivers/ieee1394/ieee1394 highlevel_host_reset 0xb4e6bfd8 +drivers/ieee1394/ieee1394 hpsb_add_host 0xdbeb1b79 +drivers/ieee1394/ieee1394 hpsb_alloc_host 0xbf712818 +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0x3136bf50 +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0x4dd6879c +drivers/ieee1394/ieee1394 hpsb_bus_reset 0xf63350eb +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0x0c047d99 +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0x2d7f864b +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0x832a6ef7 +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0xf645d574 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0xa4ed51bf +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0x56f2ea34 +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0x470c968d +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0x2b98be1c +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0x72c1c500 +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0x9f8a5a37 +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0x98bad594 +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0x6d288d8b +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0x60270d6a +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0x49d757e7 +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0xfca86092 +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0x93a8c471 +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0x172df75a +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0xd6da53a5 +drivers/ieee1394/ieee1394 hpsb_iso_stop 0xf611129d +drivers/ieee1394/ieee1394 hpsb_iso_wake 0x1832e749 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x1afca299 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0x6be58889 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0x7ec1f7ee +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0x0743599d +drivers/ieee1394/ieee1394 hpsb_listen_channel 0x35f0d17a +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0x87fcf6c0 +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0x9e1625bb +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0x797ce0fe +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0xef92aa07 +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0x41ee106a +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0x6d8e5dba +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0xafc31996 +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0x8494f293 +drivers/ieee1394/ieee1394 hpsb_node_write 0x43870c4f +drivers/ieee1394/ieee1394 hpsb_packet_received 0x53decf47 +drivers/ieee1394/ieee1394 hpsb_packet_sent 0x782a19fc +drivers/ieee1394/ieee1394 hpsb_packet_success 0x2d90e840 +drivers/ieee1394/ieee1394 hpsb_protocol_class 0x0d61377f +drivers/ieee1394/ieee1394 hpsb_read 0xf22d98b5 +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0x59d94492 +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0x163ac036 +drivers/ieee1394/ieee1394 hpsb_register_protocol 0x718983a6 +drivers/ieee1394/ieee1394 hpsb_remove_host 0xddd747af +drivers/ieee1394/ieee1394 hpsb_reset_bus 0xbd4801b2 +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0x7a66679c +drivers/ieee1394/ieee1394 hpsb_selfid_received 0xffe8c879 +drivers/ieee1394/ieee1394 hpsb_send_packet 0x5880fbe2 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0xe7c1f6d8 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0x98b1d38d +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0x1287831d +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0xf663eeea +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0x4ba4d67e +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0xfa0d17e2 +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0x7568e31e +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0x07de76e5 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0xa47b54c2 +drivers/ieee1394/ieee1394 hpsb_write 0x00b21804 +drivers/ieee1394/ieee1394 ieee1394_bus_type 0xc9a86f60 +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0x1d5aeebc +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0xfe21ffcb +drivers/ieee1394/ohci1394 ohci1394_stop_context 0x90dd96bf +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0x13f937d4 +drivers/infiniband/core/ib_cm ib_cm_establish 0xc8b7785e +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0x3d4b84ce +drivers/infiniband/core/ib_cm ib_cm_listen 0x64dbb671 +drivers/infiniband/core/ib_cm ib_create_cm_id 0x6734fa1d +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0xaf51b4b3 +drivers/infiniband/core/ib_cm ib_send_cm_apr 0xb92bd1cb +drivers/infiniband/core/ib_cm ib_send_cm_drep 0x46f56b12 +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0x14f48554 +drivers/infiniband/core/ib_cm ib_send_cm_lap 0x6746b430 +drivers/infiniband/core/ib_cm ib_send_cm_mra 0x177e9fb1 +drivers/infiniband/core/ib_cm ib_send_cm_rej 0x1b6dff5b +drivers/infiniband/core/ib_cm ib_send_cm_rep 0xe113ea74 +drivers/infiniband/core/ib_cm ib_send_cm_req 0x4f8be251 +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0x0ca0b1a3 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0xeb791990 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0xfe4d87e6 +drivers/infiniband/core/ib_core ib_alloc_device 0xc10ebc6c +drivers/infiniband/core/ib_core ib_alloc_fmr 0x56de10ae +drivers/infiniband/core/ib_core ib_alloc_mw 0x01ad7922 +drivers/infiniband/core/ib_core ib_alloc_pd 0x8a823146 +drivers/infiniband/core/ib_core ib_attach_mcast 0xe9ef0a58 +drivers/infiniband/core/ib_core ib_create_ah 0x40c26009 +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0x86c66cee +drivers/infiniband/core/ib_core ib_create_cq 0x83206a81 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0x8200c172 +drivers/infiniband/core/ib_core ib_create_qp 0xf21ff60d +drivers/infiniband/core/ib_core ib_create_srq 0xbb78ca3d +drivers/infiniband/core/ib_core ib_dealloc_device 0x800ec643 +drivers/infiniband/core/ib_core ib_dealloc_fmr 0xe6fc1346 +drivers/infiniband/core/ib_core ib_dealloc_mw 0x500e278e +drivers/infiniband/core/ib_core ib_dealloc_pd 0x8f6f67ef +drivers/infiniband/core/ib_core ib_dereg_mr 0x2df5093d +drivers/infiniband/core/ib_core ib_destroy_ah 0x88b3df58 +drivers/infiniband/core/ib_core ib_destroy_cq 0x1f9cb65d +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x11c5d226 +drivers/infiniband/core/ib_core ib_destroy_qp 0xdc87cd35 +drivers/infiniband/core/ib_core ib_destroy_srq 0x25338064 +drivers/infiniband/core/ib_core ib_detach_mcast 0xeab1ec74 +drivers/infiniband/core/ib_core ib_dispatch_event 0xd323f311 +drivers/infiniband/core/ib_core ib_find_cached_gid 0x07fcf5b7 +drivers/infiniband/core/ib_core ib_find_cached_pkey 0x7bd12f7e +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0x827078d6 +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0x19288287 +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0xde259c8d +drivers/infiniband/core/ib_core ib_get_cached_gid 0x714e2a3b +drivers/infiniband/core/ib_core ib_get_cached_pkey 0xa6c2abfe +drivers/infiniband/core/ib_core ib_get_client_data 0x4260c2ab +drivers/infiniband/core/ib_core ib_get_dma_mr 0xb2d52906 +drivers/infiniband/core/ib_core ib_modify_ah 0x8bfc70c6 +drivers/infiniband/core/ib_core ib_modify_device 0x7eb69fb8 +drivers/infiniband/core/ib_core ib_modify_port 0x1a6dfa36 +drivers/infiniband/core/ib_core ib_modify_qp 0x56472f5f +drivers/infiniband/core/ib_core ib_modify_srq 0xf610616c +drivers/infiniband/core/ib_core ib_pack 0x06830b9a +drivers/infiniband/core/ib_core ib_query_ah 0xd9c932b4 +drivers/infiniband/core/ib_core ib_query_device 0x28df2520 +drivers/infiniband/core/ib_core ib_query_gid 0xb9dbae96 +drivers/infiniband/core/ib_core ib_query_mr 0x6ad35462 +drivers/infiniband/core/ib_core ib_query_pkey 0xd94cf9f5 +drivers/infiniband/core/ib_core ib_query_port 0xb22f38f1 +drivers/infiniband/core/ib_core ib_query_qp 0x689d65ee +drivers/infiniband/core/ib_core ib_query_srq 0x034028d3 +drivers/infiniband/core/ib_core ib_reg_phys_mr 0x9153a18e +drivers/infiniband/core/ib_core ib_register_client 0xb10e5d3f +drivers/infiniband/core/ib_core ib_register_device 0xcb0ae175 +drivers/infiniband/core/ib_core ib_register_event_handler 0x278c798f +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x84bd6619 +drivers/infiniband/core/ib_core ib_resize_cq 0x2f36da02 +drivers/infiniband/core/ib_core ib_set_client_data 0xc88960ab +drivers/infiniband/core/ib_core ib_ud_header_init 0x78f1b190 +drivers/infiniband/core/ib_core ib_ud_header_pack 0xa925443e +drivers/infiniband/core/ib_core ib_ud_header_unpack 0xa7cc5de5 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xf96fc9de +drivers/infiniband/core/ib_core ib_unregister_client 0xaf07069e +drivers/infiniband/core/ib_core ib_unregister_device 0x8daa04ad +drivers/infiniband/core/ib_core ib_unregister_event_handler 0xf5bf7c28 +drivers/infiniband/core/ib_mad ib_cancel_mad 0xe6d0663a +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0xe4f2bf9a +drivers/infiniband/core/ib_mad ib_create_send_mad 0x8cd1105e +drivers/infiniband/core/ib_mad ib_free_recv_mad 0xa38bb8f6 +drivers/infiniband/core/ib_mad ib_free_send_mad 0xe2d9e902 +drivers/infiniband/core/ib_mad ib_modify_mad 0xfc963fe7 +drivers/infiniband/core/ib_mad ib_post_send_mad 0x52ae9fd4 +drivers/infiniband/core/ib_mad ib_process_mad_wc 0x71d2d0bc +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x471535c8 +drivers/infiniband/core/ib_mad ib_register_mad_agent 0x0e12e0c1 +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0xbb2ddd71 +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0x7ee36019 +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0x94630534 +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0x10a194b8 +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0x13fd5200 +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0x838caaf2 +drivers/input/gameport/gameport __gameport_register_driver 0x865b6a30 +drivers/input/gameport/gameport __gameport_register_port 0xb8bd42ac +drivers/input/gameport/gameport gameport_close 0x6665266c +drivers/input/gameport/gameport gameport_cooked_read 0xe06ea4fc +drivers/input/gameport/gameport gameport_open 0x6b59c49a +drivers/input/gameport/gameport gameport_rescan 0x5356dac5 +drivers/input/gameport/gameport gameport_set_name 0xf111cd14 +drivers/input/gameport/gameport gameport_set_phys 0x31ace6d4 +drivers/input/gameport/gameport gameport_start_polling 0xdaecd82b +drivers/input/gameport/gameport gameport_stop_polling 0x9177eb2f +drivers/input/gameport/gameport gameport_unregister_driver 0xbd9c536b +drivers/input/gameport/gameport gameport_unregister_port 0x4f9d500b +drivers/macintosh/windfarm_core wf_clear_overtemp 0xed82a14f +drivers/macintosh/windfarm_core wf_critical_overtemp 0x94765fac +drivers/macintosh/windfarm_core wf_find_control 0x44f1d7e9 +drivers/macintosh/windfarm_core wf_find_sensor 0x848e6b0b +drivers/macintosh/windfarm_core wf_get_control 0x424def6c +drivers/macintosh/windfarm_core wf_get_sensor 0x4283ae14 +drivers/macintosh/windfarm_core wf_is_overtemp 0xa2f19a49 +drivers/macintosh/windfarm_core wf_put_control 0x75a17f43 +drivers/macintosh/windfarm_core wf_put_sensor 0x2bd8a3de +drivers/macintosh/windfarm_core wf_register_client 0xdb7e8499 +drivers/macintosh/windfarm_core wf_register_control 0x9e50b779 +drivers/macintosh/windfarm_core wf_register_sensor 0x7b51a867 +drivers/macintosh/windfarm_core wf_set_overtemp 0x75147afa +drivers/macintosh/windfarm_core wf_unregister_client 0xaf15726f +drivers/macintosh/windfarm_core wf_unregister_control 0xcc9c7cba +drivers/macintosh/windfarm_core wf_unregister_sensor 0x8430ae98 +drivers/macintosh/windfarm_pid wf_cpu_pid_init 0x729d6a78 +drivers/macintosh/windfarm_pid wf_cpu_pid_run 0x5ca34fc1 +drivers/macintosh/windfarm_pid wf_pid_init 0xcd9a18ef +drivers/macintosh/windfarm_pid wf_pid_run 0x9808f147 +drivers/md/dm-mirror dm_create_dirty_log 0xf852089f +drivers/md/dm-mirror dm_destroy_dirty_log 0x0e82f689 +drivers/md/dm-mirror dm_register_dirty_log_type 0x2dd79951 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x4ebffbdf +drivers/md/dm-mod dm_get_device 0xfce85ce9 +drivers/md/dm-mod dm_get_mapinfo 0xdcdd63ba +drivers/md/dm-mod dm_io_async 0x93c43d50 +drivers/md/dm-mod dm_io_async_bvec 0xc8b10ae5 +drivers/md/dm-mod dm_io_async_vm 0x7ae5de1b +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0xcc95ea11 +drivers/md/dm-mod dm_io_sync_bvec 0x4ac00551 +drivers/md/dm-mod dm_io_sync_vm 0xcafa962d +drivers/md/dm-mod dm_put_device 0xc0b27902 +drivers/md/dm-mod dm_register_target 0xc36640b5 +drivers/md/dm-mod dm_table_event 0xab772cbb +drivers/md/dm-mod dm_table_flush_all 0x5f3098fb +drivers/md/dm-mod dm_table_get 0x3b7b0e09 +drivers/md/dm-mod dm_table_get_mode 0x2569b950 +drivers/md/dm-mod dm_table_get_size 0xc67f8034 +drivers/md/dm-mod dm_table_put 0x949b4c99 +drivers/md/dm-mod dm_table_unplug_all 0xce128dbd +drivers/md/dm-mod dm_unregister_target 0xa93b47a8 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0xf8087465 +drivers/md/dm-mod kcopyd_client_create 0x6a794945 +drivers/md/dm-mod kcopyd_client_destroy 0x9a30c435 +drivers/md/dm-mod kcopyd_copy 0x105dce15 +drivers/md/dm-multipath dm_pg_init_complete 0xb503c3e1 +drivers/md/dm-multipath dm_register_hw_handler 0xedc537cc +drivers/md/dm-multipath dm_register_path_selector 0x992bea04 +drivers/md/dm-multipath dm_scsi_err_handler 0x02fccc65 +drivers/md/dm-multipath dm_unregister_hw_handler 0x4798acbb +drivers/md/dm-multipath dm_unregister_path_selector 0x8afed383 +drivers/md/md-mod bitmap_close_sync 0xb1c6faa4 +drivers/md/md-mod bitmap_daemon_work 0x8dca55b3 +drivers/md/md-mod bitmap_end_sync 0xa2ff37cd +drivers/md/md-mod bitmap_endwrite 0xb5fcc1ce +drivers/md/md-mod bitmap_start_sync 0xf9bb9fa1 +drivers/md/md-mod bitmap_startwrite 0xb86912b8 +drivers/md/md-mod bitmap_unplug 0x9cf8593f +drivers/md/md-mod md_check_recovery 0x8937d3e3 +drivers/md/md-mod md_done_sync 0xbf990ecf +drivers/md/md-mod md_error 0xb603a847 +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x0d9f8be1 +drivers/md/md-mod md_unregister_thread 0xbd48fa06 +drivers/md/md-mod md_wakeup_thread 0xbe969ce4 +drivers/md/md-mod md_write_end 0x19ec63b0 +drivers/md/md-mod md_write_start 0xa17bc4a5 +drivers/md/md-mod register_md_personality 0x719a12dc +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x4740e7a3 +drivers/media/common/ir-common ir_codes_hauppauge_new 0x902a3cd2 +drivers/media/common/ir-common ir_codes_pinnacle 0xd3a0f048 +drivers/media/common/ir-common ir_codes_pixelview 0xfa177653 +drivers/media/common/ir-common ir_codes_rc5_tv 0xd9c7f010 +drivers/media/common/ir-common ir_codes_winfast 0x89cc1189 +drivers/media/common/ir-common ir_decode_biphase 0x43c89ef4 +drivers/media/common/ir-common ir_decode_pulsedistance 0x2456e513 +drivers/media/common/ir-common ir_dump_samples 0x6d6511e7 +drivers/media/common/ir-common ir_extract_bits 0x1cb148f5 +drivers/media/common/ir-common ir_input_init 0xf37df01a +drivers/media/common/ir-common ir_input_keydown 0xbd561371 +drivers/media/common/ir-common ir_input_nokey 0x0aa147a2 +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x0f0fb48c +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0xe09fae68 +drivers/media/common/saa7146 saa7146_i2c_transfer 0x6a298a55 +drivers/media/common/saa7146 saa7146_pgtable_alloc 0xa73a87f5 +drivers/media/common/saa7146 saa7146_pgtable_build_single 0x3bc341ba +drivers/media/common/saa7146 saa7146_pgtable_free 0xd83a78bd +drivers/media/common/saa7146 saa7146_register_extension 0xa4ae5f5b +drivers/media/common/saa7146 saa7146_setgpio 0x55028c6c +drivers/media/common/saa7146 saa7146_unregister_extension 0xb294b332 +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0x40b64c70 +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0x608b5e32 +drivers/media/common/saa7146_vv saa7146_register_device 0x8515c9a0 +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0xe274d03a +drivers/media/common/saa7146_vv saa7146_start_preview 0xd5e15068 +drivers/media/common/saa7146_vv saa7146_stop_preview 0xd0012041 +drivers/media/common/saa7146_vv saa7146_unregister_device 0xc44b9058 +drivers/media/common/saa7146_vv saa7146_vv_init 0x4681bdea +drivers/media/common/saa7146_vv saa7146_vv_release 0x79086d88 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0xe3efd9d5 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0x92d927b9 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0x72896034 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0x4c694e6f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0x86169fe3 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0x44194120 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0x4d9dff86 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0x82a8f51f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0xba6fd63d +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0xec355efc +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0xc5f9b295 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0x8d07bc8e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0x534cf05c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0x10123d13 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0x168f01a0 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0x9e00f701 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0x3fcbe14d +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0xb45a0fa7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0x20a20827 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0x417559b4 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0x78f855c8 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0xb0594e08 +drivers/media/dvb/bt8xx/bt878 bt878 0x7b67670e +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0x8c5bf178 +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0xb175fff0 +drivers/media/dvb/bt8xx/bt878 bt878_stop 0xbfcbdc32 +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0xddf09da2 +drivers/media/dvb/bt8xx/dst dst_check_sum 0xe94b8c9c +drivers/media/dvb/bt8xx/dst dst_comm_init 0x867f4187 +drivers/media/dvb/bt8xx/dst dst_command 0xfd2732ac +drivers/media/dvb/bt8xx/dst dst_error_bailout 0x754656a8 +drivers/media/dvb/bt8xx/dst dst_error_recovery 0xe71fb01b +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0xa4a52138 +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0x6e65b14e +drivers/media/dvb/bt8xx/dst dst_pio_disable 0xc6714efd +drivers/media/dvb/bt8xx/dst dst_pio_enable 0x80913e97 +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0x67fdbdc1 +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0x62da9ee1 +drivers/media/dvb/bt8xx/dst rdc_reset_state 0x091d84d4 +drivers/media/dvb/bt8xx/dst read_dst 0x8e1fb878 +drivers/media/dvb/bt8xx/dst write_dst 0x5cf81f1d +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0x5b97e993 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0x19919b91 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0x1e29f7da +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0x0c8b3a30 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0xf3720d46 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0x8ba61e92 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0x7454a1c5 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0x7b675cb1 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0x9b5939f1 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0x3fa3cee3 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x0e1f4a6a +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0xa60efaa0 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0x1048298a +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x80e3832d +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x36c8ea1f +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0xe5bb5c7d +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0x2d2c6850 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0x79c23980 +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0x206a2d46 +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0x5c36d72a +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0x7115eda6 +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0xa902dfbb +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0x3690d718 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0x7e451d7e +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0x33d9fb7e +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0xe4efd655 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0x7992ef6b +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x89d21ab3 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0x78bba99a +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0x403a8dfa +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0x9ce31215 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0xb582da47 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0xc4f2ea77 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0x2cab119a +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0x67f4542a +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0x7a0cef62 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0xf454626e +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0x2f992b36 +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0x8b49a23f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0xb9338533 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0xf30527c9 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0x1f05e20a +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0x067f6a0e +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0x77902cd2 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0xb92545e2 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0x9644c18f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0x152ce367 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0x272a2be1 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0xbe540a0b +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0x6043b95a +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0xbfa2b403 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0xea8aea01 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0x353f311b +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0x048a7c36 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0xb07178c5 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0xd4d3dddc +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0xd37e01fa +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0xd8cc890c +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0xc8da20f3 +drivers/media/dvb/frontends/at76c651 at76c651_attach 0xab738847 +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0x6ddca59f +drivers/media/dvb/frontends/cx22700 cx22700_attach 0xd666691f +drivers/media/dvb/frontends/cx22702 cx22702_attach 0x736da5c8 +drivers/media/dvb/frontends/cx24110 cx24110_attach 0x34deb8ae +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0xc123ccf6 +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0x1c0b38f7 +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0xe762d459 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x05f13eee +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0x3e15bbf6 +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0x3c2a6819 +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0x4285ab79 +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x02689b7f +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0x5b259391 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x7a0ed9bb +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0xbf98157e +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xd15aca20 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xfdd5e650 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x2a4f5718 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xc95be182 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x708f579e +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0xe39c77c8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0x12284643 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0xf1d4150d +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0xd5d22e56 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0xccc91f17 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xaddc7276 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x96cce305 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xcbbd68de +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x13856c44 +drivers/media/dvb/frontends/l64781 l64781_attach 0x928c3cde +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0xf9ba0e77 +drivers/media/dvb/frontends/mt312 mt312_attach 0x316bc9be +drivers/media/dvb/frontends/mt312 vp310_attach 0xf28201d2 +drivers/media/dvb/frontends/mt352 mt352_attach 0x7c3ce38f +drivers/media/dvb/frontends/mt352 mt352_write 0x4e2aaded +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0x425196f9 +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x781f776e +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0x03a3c233 +drivers/media/dvb/frontends/or51132 or51132_attach 0x334928f1 +drivers/media/dvb/frontends/or51211 or51211_attach 0xebecaca3 +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0x609b9d61 +drivers/media/dvb/frontends/sp8870 sp8870_attach 0x32cf1e0d +drivers/media/dvb/frontends/sp887x sp887x_attach 0x95275f1b +drivers/media/dvb/frontends/stv0297 stv0297_attach 0xefa09ed6 +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0xb09b7a9e +drivers/media/dvb/frontends/stv0299 stv0299_attach 0x06c82d26 +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0x384270ff +drivers/media/dvb/frontends/tda10021 tda10021_attach 0x154169e2 +drivers/media/dvb/frontends/tda1004x tda10045_attach 0x949b93d2 +drivers/media/dvb/frontends/tda1004x tda10046_attach 0xd2692356 +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0xce3ff7b1 +drivers/media/dvb/frontends/tda8083 tda8083_attach 0x21bcd336 +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0xe394165f +drivers/media/dvb/frontends/ves1820 ves1820_attach 0x7fcc4c4f +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0x065687d8 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0xf7286e58 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0xca879222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0x79cabbed +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0x0e495eb5 +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0x1caccc74 +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0xc28433a0 +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0x743fe74c +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0x9a9da8b7 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0xb15aa97d +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0xc1816810 +drivers/media/video/btcx-risc btcx_riscmem_free 0xaa6b3c60 +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x0e0f3e97 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0xbd81bbf8 +drivers/media/video/bttv bttv_gpio_bits 0xf60d90d1 +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0xac2eafb8 +drivers/media/video/bttv bttv_gpio_read 0x29750868 +drivers/media/video/bttv bttv_gpio_write 0xf94eb1b4 +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0x0a5dc483 +drivers/media/video/bttv bttv_sub_register 0x6d3fafac +drivers/media/video/bttv bttv_sub_unregister 0xe62cd144 +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0x2288e1e6 +drivers/media/video/cpia cpia_unregister_camera 0xf53d829f +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0xeb1a6b28 +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0x975f289b +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0x174ff910 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0xfd5e76a0 +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0xc3bef575 +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0xfdad9a87 +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0x16c2bd08 +drivers/media/video/cx88/cx8802 cx8802_fini_common 0xbfdbf7e4 +drivers/media/video/cx88/cx8802 cx8802_init_common 0x46a3da81 +drivers/media/video/cx88/cx8802 cx8802_resume_common 0x97026082 +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0xf67b563e +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x4e6954bf +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0x3c37e9e6 +drivers/media/video/cx88/cx88xx cx88_card_list 0x9b7f0a93 +drivers/media/video/cx88/cx88xx cx88_card_setup 0xce2f4f43 +drivers/media/video/cx88/cx88xx cx88_core_get 0x637bcd61 +drivers/media/video/cx88/cx88xx cx88_core_irq 0x9f7b0996 +drivers/media/video/cx88/cx88xx cx88_core_put 0xdb40c711 +drivers/media/video/cx88/cx88xx cx88_free_buffer 0xd0259ef3 +drivers/media/video/cx88/cx88xx cx88_get_stereo 0x3c7926c5 +drivers/media/video/cx88/cx88xx cx88_i2c_init 0x19cdddeb +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0x1045fd79 +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x777b6d7f +drivers/media/video/cx88/cx88xx cx88_reset 0xddcb1e51 +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0x21401fb3 +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0x0a06f3dd +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0x732a88e2 +drivers/media/video/cx88/cx88xx cx88_set_scale 0x203c6858 +drivers/media/video/cx88/cx88xx cx88_set_stereo 0xec0fc952 +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0xe74b3ce9 +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0xc6a3ae24 +drivers/media/video/cx88/cx88xx cx88_shutdown 0x227070b6 +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0xb55f48b3 +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0xe7ea97cf +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x9b140fff +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0x98bfef1d +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0xe49caadb +drivers/media/video/cx88/cx88xx cx88_subids 0x6b626846 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0x350187b5 +drivers/media/video/cx88/cx88xx cx88_wakeup 0xdd4e498c +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0x2e79631e +drivers/media/video/saa7134/saa7134 dmasound_exit 0x42d09147 +drivers/media/video/saa7134/saa7134 dmasound_init 0x5ae56de6 +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0xc7649be5 +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0xacc0c6c7 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0x1b1bdd69 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0x9f12ab23 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0xaa79910b +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0x0a4c69ad +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0x8a154a06 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0x372c4a71 +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0xc27b571f +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0xbbe5aff5 +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0xffe3fa8a +drivers/media/video/tveeprom tveeprom_read 0x276622a7 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0x7842b613 +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x9c7de443 +drivers/media/video/v4l2-common v4l2_prio_check 0x2f639468 +drivers/media/video/v4l2-common v4l2_prio_close 0x95284709 +drivers/media/video/v4l2-common v4l2_prio_init 0xbecd2858 +drivers/media/video/v4l2-common v4l2_prio_max 0x1dcaa0c8 +drivers/media/video/v4l2-common v4l2_prio_open 0x76ba9a9a +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0xea6b1ba9 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0xaa386025 +drivers/media/video/video-buf videobuf_dma_init 0x50d09c82 +drivers/media/video/video-buf videobuf_dma_init_kernel 0x55d7a499 +drivers/media/video/video-buf videobuf_dma_init_overlay 0x09040be1 +drivers/media/video/video-buf videobuf_dma_init_user 0x685c575f +drivers/media/video/video-buf videobuf_dma_pci_map 0x08ab8b69 +drivers/media/video/video-buf videobuf_dma_pci_sync 0x51755bc3 +drivers/media/video/video-buf videobuf_dma_pci_unmap 0xda226404 +drivers/media/video/video-buf videobuf_dqbuf 0xf6b02aa7 +drivers/media/video/video-buf videobuf_iolock 0x4b33450f +drivers/media/video/video-buf videobuf_mmap_free 0x0f24a0cc +drivers/media/video/video-buf videobuf_mmap_mapper 0x3a64e0dd +drivers/media/video/video-buf videobuf_mmap_setup 0x3d1eaa68 +drivers/media/video/video-buf videobuf_next_field 0x81b2c270 +drivers/media/video/video-buf videobuf_poll_stream 0x65025261 +drivers/media/video/video-buf videobuf_qbuf 0x7a7a1b7e +drivers/media/video/video-buf videobuf_querybuf 0xf990faf3 +drivers/media/video/video-buf videobuf_queue_cancel 0xa748f93d +drivers/media/video/video-buf videobuf_queue_init 0x8d8b6267 +drivers/media/video/video-buf videobuf_queue_is_busy 0xfd37bf51 +drivers/media/video/video-buf videobuf_read_one 0xc1540b83 +drivers/media/video/video-buf videobuf_read_start 0x318bf961 +drivers/media/video/video-buf videobuf_read_stop 0xbd8a597b +drivers/media/video/video-buf videobuf_read_stream 0xae169f19 +drivers/media/video/video-buf videobuf_reqbufs 0x40301fd9 +drivers/media/video/video-buf videobuf_status 0x49d4a777 +drivers/media/video/video-buf videobuf_streamoff 0x37944ae0 +drivers/media/video/video-buf videobuf_streamon 0x0e770352 +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0xcbdaf537 +drivers/media/video/video-buf videobuf_waiton 0xc1575bfa +drivers/media/video/video-buf-dvb videobuf_dvb_register 0x2e0e6a39 +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0x953006df +drivers/media/video/videodev video_devdata 0xa4b59c77 +drivers/media/video/videodev video_device_alloc 0xa9835f37 +drivers/media/video/videodev video_device_release 0x3e965274 +drivers/media/video/videodev video_exclusive_open 0xc22a6198 +drivers/media/video/videodev video_exclusive_release 0x2fafc1c7 +drivers/media/video/videodev video_register_device 0x9a17b2d4 +drivers/media/video/videodev video_unregister_device 0x3d70e1b7 +drivers/media/video/videodev video_usercopy 0x6d7c3be6 +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0x8978fe66 +drivers/message/fusion/mptbase mpt_HardResetHandler 0x219e7ea4 +drivers/message/fusion/mptbase mpt_add_sge 0x231724a0 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0xf27b814b +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0x73635c62 +drivers/message/fusion/mptbase mpt_attach 0x13925c7e +drivers/message/fusion/mptbase mpt_config 0x9880d47e +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0xdcab6251 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0xd874b7c7 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0xe7b5188c +drivers/message/fusion/mptbase mpt_findImVolumes 0xaa36ae42 +drivers/message/fusion/mptbase mpt_free_fw_memory 0x9967e75f +drivers/message/fusion/mptbase mpt_free_msg_frame 0x27762e8b +drivers/message/fusion/mptbase mpt_get_msg_frame 0xb25f24d7 +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0x7228c42c +drivers/message/fusion/mptbase mpt_proc_root_dir 0xd5d2c9ca +drivers/message/fusion/mptbase mpt_put_msg_frame 0x496ab29e +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0xd8d20fef +drivers/message/fusion/mptbase mpt_register 0xc15b243e +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x61ab1f58 +drivers/message/fusion/mptbase mpt_resume 0xaaff633b +drivers/message/fusion/mptbase mpt_send_handshake_request 0x1ede608a +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0x8593cb6c +drivers/message/fusion/mptbase mpt_toolbox 0x472d0501 +drivers/message/fusion/mptbase mpt_verify_adapter 0x537422e2 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x4069d864 +drivers/message/fusion/mptscsih mptscsih_abort 0x23a061ed +drivers/message/fusion/mptscsih mptscsih_bios_param 0xab79c8d5 +drivers/message/fusion/mptscsih mptscsih_bus_reset 0xc67e3b7d +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x1ea1e920 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0x3ab8ae11 +drivers/message/fusion/mptscsih mptscsih_event_process 0xe61149c4 +drivers/message/fusion/mptscsih mptscsih_host_reset 0xa315f288 +drivers/message/fusion/mptscsih mptscsih_info 0x545fb7d0 +drivers/message/fusion/mptscsih mptscsih_io_done 0xf2e8a18c +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x85aae4bc +drivers/message/fusion/mptscsih mptscsih_proc_info 0x76ac15c8 +drivers/message/fusion/mptscsih mptscsih_qcmd 0x83883a90 +drivers/message/fusion/mptscsih mptscsih_remove 0x8a55324f +drivers/message/fusion/mptscsih mptscsih_resume 0x646ca283 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0xff4b2d6d +drivers/message/fusion/mptscsih mptscsih_shutdown 0xd02e1503 +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0x3d63cf8b +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x588351ec +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0xac5170f6 +drivers/message/fusion/mptscsih mptscsih_suspend 0x1843e243 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x10d1d66e +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_cntxt_list_add 0x00c4cc15 +drivers/message/i2o/i2o_core i2o_cntxt_list_get 0xa7304e7a +drivers/message/i2o/i2o_core i2o_cntxt_list_get_ptr 0xc7aba037 +drivers/message/i2o/i2o_core i2o_cntxt_list_remove 0x426f0735 +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0xe4b475ac +drivers/message/i2o/i2o_core i2o_device_claim_release 0xb3df7ec0 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0x7ac0bd48 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x892c682f +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x65d9cbf1 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0x30e5ba3f +drivers/message/i2o/i2o_core i2o_driver_register 0x340ed50b +drivers/message/i2o/i2o_core i2o_driver_unregister 0x6999370d +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0xf0628f58 +drivers/message/i2o/i2o_core i2o_exec_lct_get 0x8da7888c +drivers/message/i2o/i2o_core i2o_find_iop 0x58c300a9 +drivers/message/i2o/i2o_core i2o_iop_find_device 0xfb2160ce +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x36527daf +drivers/message/i2o/i2o_core i2o_msg_nop 0xbef37c01 +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0xfe972afe +drivers/message/i2o/i2o_core i2o_parm_field_get 0x46c954de +drivers/message/i2o/i2o_core i2o_parm_issue 0x4979715a +drivers/message/i2o/i2o_core i2o_parm_table_get 0xb523b7f9 +drivers/message/i2o/i2o_core i2o_status_get 0xcab4730b +drivers/mmc/mmc_core __mmc_claim_host 0xf8f5eabe +drivers/mmc/mmc_core mmc_add_host 0x18ed6c55 +drivers/mmc/mmc_core mmc_alloc_host 0x99207766 +drivers/mmc/mmc_core mmc_cleanup_queue 0x2dbff11a +drivers/mmc/mmc_core mmc_detect_change 0x8df8eaeb +drivers/mmc/mmc_core mmc_free_host 0x93240a13 +drivers/mmc/mmc_core mmc_init_queue 0x2e967048 +drivers/mmc/mmc_core mmc_queue_resume 0xcbe10ef9 +drivers/mmc/mmc_core mmc_queue_suspend 0xee563528 +drivers/mmc/mmc_core mmc_register_driver 0x669d049f +drivers/mmc/mmc_core mmc_release_host 0x3efed6eb +drivers/mmc/mmc_core mmc_remove_host 0x1695cca8 +drivers/mmc/mmc_core mmc_request_done 0xe17139df +drivers/mmc/mmc_core mmc_resume_host 0x06fb26ac +drivers/mmc/mmc_core mmc_start_request 0x5529e12b +drivers/mmc/mmc_core mmc_suspend_host 0xe2a6add0 +drivers/mmc/mmc_core mmc_unregister_driver 0x1347569b +drivers/mmc/mmc_core mmc_wait_for_app_cmd 0x9de2f0e7 +drivers/mmc/mmc_core mmc_wait_for_cmd 0xb7bf1cd7 +drivers/mmc/mmc_core mmc_wait_for_req 0x354cdf6d +drivers/mtd/chips/cfi_util cfi_fixup 0xba9905ed +drivers/mtd/chips/cfi_util cfi_read_pri 0x83ec24e1 +drivers/mtd/chips/cfi_util cfi_varsize_frob 0x336ae0ef +drivers/mtd/chips/chipreg do_map_probe 0x509ac181 +drivers/mtd/chips/chipreg map_destroy 0x97952921 +drivers/mtd/chips/chipreg register_mtd_chip_driver 0x6093a9bd +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0x6cf3bb58 +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0x4b08b02a +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0x82c372cf +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0x01f6200e +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0x7310f028 +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0x30924c74 +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0x7e442718 +drivers/mtd/mtdconcat mtd_concat_create 0xa6cf062a +drivers/mtd/mtdconcat mtd_concat_destroy 0xc789b817 +drivers/mtd/mtdcore add_mtd_device 0xb64b0ac3 +drivers/mtd/mtdcore default_mtd_readv 0x34044f85 +drivers/mtd/mtdcore default_mtd_writev 0x9d58c9b1 +drivers/mtd/mtdcore del_mtd_device 0x050c4a03 +drivers/mtd/mtdcore get_mtd_device 0x75523ee3 +drivers/mtd/mtdcore mtd_table 0x7a309992 +drivers/mtd/mtdcore mtd_table_mutex 0xe0beee18 +drivers/mtd/mtdcore put_mtd_device 0x7c479055 +drivers/mtd/mtdcore register_mtd_user 0xfd410453 +drivers/mtd/mtdcore unregister_mtd_user 0x41f92814 +drivers/mtd/mtdpart add_mtd_partitions 0xcde1d3fb +drivers/mtd/mtdpart del_mtd_partitions 0xd1363945 +drivers/mtd/mtdpart deregister_mtd_parser 0xd21e1702 +drivers/mtd/mtdpart mtd_erase_callback 0xf61a7085 +drivers/mtd/mtdpart parse_mtd_partitions 0xbf4bba3e +drivers/mtd/mtdpart register_mtd_parser 0x58f06429 +drivers/mtd/nand/nand nand_default_bbt 0xa843bf02 +drivers/mtd/nand/nand nand_release 0xd646aac8 +drivers/mtd/nand/nand nand_scan 0x93828c49 +drivers/mtd/nand/nand nand_scan_bbt 0x8d9f74d8 +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0xa0ecd87d +drivers/mtd/onenand/onenand onenand_release 0x93fd5f2b +drivers/mtd/onenand/onenand onenand_scan 0x51d8de04 +drivers/mtd/onenand/onenand onenand_scan_bbt 0x90a63c48 +drivers/net/8390 NS8390_init 0x7b4cc2c9 +drivers/net/8390 __alloc_ei_netdev 0x1f5921ee +drivers/net/8390 ei_close 0x7a6c3676 +drivers/net/8390 ei_interrupt 0xdd4aeca2 +drivers/net/8390 ei_open 0xd679ac67 +drivers/net/8390 ei_poll 0x1d476b97 +drivers/net/arcnet/arcnet alloc_arcdev 0x245dbf67 +drivers/net/arcnet/arcnet arc_bcast_proto 0xc066bfc4 +drivers/net/arcnet/arcnet arc_proto_default 0xa706de1c +drivers/net/arcnet/arcnet arc_proto_map 0xab7d6d92 +drivers/net/arcnet/arcnet arc_proto_null 0xe4a8844f +drivers/net/arcnet/arcnet arc_raw_proto 0x19273731 +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0x90452f60 +drivers/net/arcnet/arcnet arcnet_unregister_proto 0x7d7ae35b +drivers/net/arcnet/com20020 com20020_check 0x9bef8666 +drivers/net/arcnet/com20020 com20020_found 0x5af9aaf9 +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0x26b8add4 +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0xd9acb7a3 +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0x42251b41 +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0x5a218164 +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0x6177cc71 +drivers/net/irda/sir-dev irda_register_dongle 0xd2169de0 +drivers/net/irda/sir-dev irda_unregister_dongle 0x1e2d0592 +drivers/net/irda/sir-dev sirdev_get_instance 0x02a532f4 +drivers/net/irda/sir-dev sirdev_put_instance 0x6cfffeeb +drivers/net/irda/sir-dev sirdev_raw_read 0xce5ebabe +drivers/net/irda/sir-dev sirdev_raw_write 0xcffd060a +drivers/net/irda/sir-dev sirdev_receive 0x39dc0268 +drivers/net/irda/sir-dev sirdev_set_dongle 0xbce44101 +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0xbb14d60a +drivers/net/irda/sir-dev sirdev_write_complete 0x5ad18e53 +drivers/net/mii generic_mii_ioctl 0xc5038971 +drivers/net/mii mii_check_gmii_support 0x8740ad70 +drivers/net/mii mii_check_link 0x3047bd5d +drivers/net/mii mii_check_media 0x1dae7c05 +drivers/net/mii mii_ethtool_gset 0xcee9ec0e +drivers/net/mii mii_ethtool_sset 0x2427c4a6 +drivers/net/mii mii_link_ok 0x4c39583f +drivers/net/mii mii_nway_restart 0x8a329697 +drivers/net/phy/libphy genphy_config_advert 0x19fa5f57 +drivers/net/phy/libphy genphy_config_aneg 0xd8142515 +drivers/net/phy/libphy genphy_read_status 0xfeb51286 +drivers/net/phy/libphy mdiobus_register 0xf8990c11 +drivers/net/phy/libphy mdiobus_unregister 0xbfaf546d +drivers/net/phy/libphy phy_attach 0xa44e82bf +drivers/net/phy/libphy phy_connect 0x3da77b39 +drivers/net/phy/libphy phy_detach 0x30dae998 +drivers/net/phy/libphy phy_disable_interrupts 0x60bc6270 +drivers/net/phy/libphy phy_disconnect 0x54e10c17 +drivers/net/phy/libphy phy_driver_register 0xfd01e4bb +drivers/net/phy/libphy phy_driver_unregister 0x678e2c38 +drivers/net/phy/libphy phy_enable_interrupts 0x29738873 +drivers/net/phy/libphy phy_print_status 0x3ba55255 +drivers/net/phy/libphy phy_read 0x1adc6011 +drivers/net/phy/libphy phy_sanitize_settings 0x0cca72a1 +drivers/net/phy/libphy phy_start 0x87917a19 +drivers/net/phy/libphy phy_start_aneg 0xc5f0bdb2 +drivers/net/phy/libphy phy_start_interrupts 0xb68e8c8b +drivers/net/phy/libphy phy_stop 0x726cdf4f +drivers/net/phy/libphy phy_stop_interrupts 0x49639d21 +drivers/net/phy/libphy phy_write 0xb1d479de +drivers/net/ppp_generic ppp_channel_index 0x87f4b6a3 +drivers/net/ppp_generic ppp_input 0xffe77808 +drivers/net/ppp_generic ppp_input_error 0x1951fc10 +drivers/net/ppp_generic ppp_output_wakeup 0x5fc608ca +drivers/net/ppp_generic ppp_register_channel 0xfd72b662 +drivers/net/ppp_generic ppp_register_compressor 0xd78ca9b9 +drivers/net/ppp_generic ppp_unit_number 0x3bf358fe +drivers/net/ppp_generic ppp_unregister_channel 0xcb972c7b +drivers/net/ppp_generic ppp_unregister_compressor 0x0f881fd3 +drivers/net/pppox pppox_unbind_sock 0x6257133f +drivers/net/pppox register_pppox_proto 0x06277415 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x6a47fcc2 +drivers/net/slhc slhc_free 0xeb3c59ef +drivers/net/slhc slhc_init 0x86de1d74 +drivers/net/slhc slhc_remember 0x9536b7c2 +drivers/net/slhc slhc_toss 0x3b36a20a +drivers/net/slhc slhc_uncompress 0xa532de34 +drivers/net/sungem_phy mii_phy_probe 0xa9c2a0b4 +drivers/net/tokenring/tms380tr tms380tr_close 0x330e761f +drivers/net/tokenring/tms380tr tms380tr_interrupt 0xf1529a22 +drivers/net/tokenring/tms380tr tms380tr_open 0xdd7e8881 +drivers/net/tokenring/tms380tr tms380tr_wait 0xd2328794 +drivers/net/tokenring/tms380tr tmsdev_init 0x63385260 +drivers/net/tokenring/tms380tr tmsdev_term 0xbcd37a62 +drivers/net/wan/cycx_drv cycx_down 0x66a4c4e6 +drivers/net/wan/cycx_drv cycx_exec 0xfe7cd576 +drivers/net/wan/cycx_drv cycx_intr 0x38da4725 +drivers/net/wan/cycx_drv cycx_peek 0x968458a6 +drivers/net/wan/cycx_drv cycx_poke 0xb6f383de +drivers/net/wan/cycx_drv cycx_setup 0x62be23ea +drivers/net/wan/hdlc alloc_hdlcdev 0xb9f0f784 +drivers/net/wan/hdlc hdlc_close 0x0d1dde42 +drivers/net/wan/hdlc hdlc_ioctl 0x3c3695e4 +drivers/net/wan/hdlc hdlc_open 0x838457e0 +drivers/net/wan/hdlc hdlc_set_carrier 0x48436c4a +drivers/net/wan/hdlc register_hdlc_device 0x8827d2a2 +drivers/net/wan/hdlc unregister_hdlc_device 0x7c3bab95 +drivers/net/wan/syncppp sppp_attach 0x9e61473a +drivers/net/wan/syncppp sppp_close 0x212bae9e +drivers/net/wan/syncppp sppp_detach 0x1816f584 +drivers/net/wan/syncppp sppp_do_ioctl 0x6a31e7e0 +drivers/net/wan/syncppp sppp_open 0xaa2858f9 +drivers/net/wan/syncppp sppp_reopen 0x48f39b6e +drivers/net/wireless/airo init_airo_card 0x7feb9345 +drivers/net/wireless/airo reset_airo_card 0x12d85ae4 +drivers/net/wireless/airo stop_airo_card 0xef3a1f8a +drivers/net/wireless/atmel atmel_open 0x68bcbc9e +drivers/net/wireless/atmel init_atmel_card 0x65d5f426 +drivers/net/wireless/atmel stop_atmel_card 0x6582afb9 +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0x7d1d4da0 +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0xdbf703e4 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0xfc2b3c0c +drivers/net/wireless/hostap/hostap hostap_add_interface 0x3528e05a +drivers/net/wireless/hostap/hostap hostap_add_sta 0x4b5b534d +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0x6bcf7cca +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0x3db0aa3f +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0xc558387a +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0xe693821b +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0x120bf14e +drivers/net/wireless/hostap/hostap hostap_get_porttype 0x54b4f392 +drivers/net/wireless/hostap/hostap hostap_get_stats 0x97907fd9 +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0x2d0dd43e +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0xe2ac6000 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x76e52aea +drivers/net/wireless/hostap/hostap hostap_info_init 0xd5ff5639 +drivers/net/wireless/hostap/hostap hostap_info_process 0x79835b4b +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0x79bdbb2c +drivers/net/wireless/hostap/hostap hostap_init_data 0xfbab5f0b +drivers/net/wireless/hostap/hostap hostap_init_proc 0x266ce844 +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0xf25d8895 +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0xef79b024 +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0xe8076bbd +drivers/net/wireless/hostap/hostap hostap_proc 0xbebb6944 +drivers/net/wireless/hostap/hostap hostap_remove_interface 0xa2e12ff5 +drivers/net/wireless/hostap/hostap hostap_remove_proc 0xd14f6105 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0x20f9ef85 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0x6aeba0d5 +drivers/net/wireless/hostap/hostap hostap_set_encryption 0x888fb12a +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x214bf023 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0x445268ac +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0x6596eba9 +drivers/net/wireless/hostap/hostap hostap_set_string 0x252841aa +drivers/net/wireless/hostap/hostap hostap_set_word 0x470b4b85 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0xc24f4281 +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x9a0caa6f +drivers/net/wireless/hostap/hostap hostap_update_rates 0x389ac226 +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x1cb7535f +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x8006d984 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0xd9d6fc6e +drivers/net/wireless/orinoco __orinoco_down 0xe7c2997c +drivers/net/wireless/orinoco __orinoco_up 0xf8cb7ad1 +drivers/net/wireless/orinoco alloc_orinocodev 0x16042505 +drivers/net/wireless/orinoco free_orinocodev 0x666a6e86 +drivers/net/wireless/orinoco orinoco_interrupt 0x58f8aba7 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x8522527b +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xda28d475 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x0e5ad43e +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0x6553d9d9 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x82823e5a +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0x74083a6f +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x9bb64e49 +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0xd77b0f42 +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0xeea3668d +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0x22cd05e0 +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x16ab3c79 +drivers/net/wireless/prism54_softmac/islsm register_islsm 0x3f3daead +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0xebb25a24 +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0x7e8b4aec +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0xc9bf6b1c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0x3ef7cb20 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0xc138ea14 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0x1a859c56 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0xd595b7b1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0x8324275c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0x63d94694 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0x7aa715a6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0x5668557c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0x35f1ea9f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0x71d27efc +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x4037a0c8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0xbd879e78 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0xb759988d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0x3eee7b06 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0x2bbc6eac +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x2197554f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0x3788a77c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x2779c035 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0x51304a9c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0x0473c370 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0xa6a6bf49 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x23b993c5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x10dcbd82 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0x8bb2d807 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x9946d653 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0xf8695aff +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0xb48fb0e5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0x2ce0ee1a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0x8df066c1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0xd71011ca +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0x24929981 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0x5612e086 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0xcd7c8503 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0xff4250bb +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0xf241ede1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0x59ea2a5b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x6a2eb31e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x2a131b6e +drivers/parport/parport parport_announce_port 0x2eac3505 +drivers/parport/parport parport_claim 0x1565931f +drivers/parport/parport parport_claim_or_block 0x53d54363 +drivers/parport/parport parport_find_base 0x81617579 +drivers/parport/parport parport_find_number 0xd2ba1072 +drivers/parport/parport parport_get_port 0x67d07ea8 +drivers/parport/parport parport_ieee1284_ecp_read_data 0xa49156c3 +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xff5aedba +drivers/parport/parport parport_ieee1284_ecp_write_data 0x669c66fb +drivers/parport/parport parport_ieee1284_epp_read_addr 0xdc761c82 +drivers/parport/parport parport_ieee1284_epp_read_data 0x9ae72383 +drivers/parport/parport parport_ieee1284_epp_write_addr 0x86d89e4c +drivers/parport/parport parport_ieee1284_epp_write_data 0x1f1e150d +drivers/parport/parport parport_ieee1284_interrupt 0xa9f973e5 +drivers/parport/parport parport_ieee1284_read_byte 0x1a03cbce +drivers/parport/parport parport_ieee1284_read_nibble 0xf2c7b1ed +drivers/parport/parport parport_ieee1284_write_compat 0xb9b015f3 +drivers/parport/parport parport_negotiate 0x338d4a0b +drivers/parport/parport parport_put_port 0xca65a6ad +drivers/parport/parport parport_read 0xae8a6c2d +drivers/parport/parport parport_register_device 0x3b606f61 +drivers/parport/parport parport_register_driver 0x2612a7a3 +drivers/parport/parport parport_register_port 0x2d57f676 +drivers/parport/parport parport_release 0x4f0a9a23 +drivers/parport/parport parport_remove_port 0x5b4ecf19 +drivers/parport/parport parport_set_timeout 0xdfec4fb1 +drivers/parport/parport parport_unregister_device 0xe9b096d7 +drivers/parport/parport parport_unregister_driver 0xf4415626 +drivers/parport/parport parport_wait_event 0x7970224e +drivers/parport/parport parport_wait_peripheral 0xe1d67061 +drivers/parport/parport parport_write 0xd142d682 +drivers/parport/parport_pc parport_pc_probe_port 0x31c1633b +drivers/parport/parport_pc parport_pc_unregister_port 0x0ea0f713 +drivers/pcmcia/pcmcia cs_error 0xba89d0e7 +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0x5d0b0e34 +drivers/pcmcia/pcmcia pcmcia_deregister_client 0x1a3fe5ea +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0x6e3658d5 +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0x6ab5bd2c +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0xb050058d +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0x33a6b03b +drivers/pcmcia/pcmcia pcmcia_get_status 0x83081003 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0x4be24ae5 +drivers/pcmcia/pcmcia pcmcia_get_window 0x58a36964 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0x67e4a242 +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x2b0ca725 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0xbfb3c92e +drivers/pcmcia/pcmcia pcmcia_register_client 0x702ac895 +drivers/pcmcia/pcmcia pcmcia_register_driver 0x2b7ed1a8 +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x7a955995 +drivers/pcmcia/pcmcia pcmcia_release_io 0x92545f90 +drivers/pcmcia/pcmcia pcmcia_release_irq 0x70adb76d +drivers/pcmcia/pcmcia pcmcia_release_window 0xa7617217 +drivers/pcmcia/pcmcia pcmcia_request_configuration 0xfedb9762 +drivers/pcmcia/pcmcia pcmcia_request_io 0xb82d0309 +drivers/pcmcia/pcmcia pcmcia_request_irq 0xb2f3b198 +drivers/pcmcia/pcmcia pcmcia_request_window 0x58b7401b +drivers/pcmcia/pcmcia pcmcia_reset_card 0xb9415b7c +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0x6ff28809 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0x89473a7e +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0xc34500a5 +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x80b725f5 +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0x78cb678b +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0xb179fa67 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0x7c65ac1f +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0xd7973636 +drivers/pcmcia/pcmcia_core pccard_reset_card 0x431afc79 +drivers/pcmcia/pcmcia_core pccard_static_ops 0x7cbc4153 +drivers/pcmcia/pcmcia_core pccard_validate_cis 0xf1fda455 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0x25dc2b0f +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0x167e7a6a +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0x397375ab +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0xbf08c83d +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0xcc567e60 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0x3fa1263c +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x160c6951 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0xed1f11ab +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0x5f4a5504 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xa5b0b4b7 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0xe1084046 +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0x78c5405f +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x4c1b863b +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0xed047485 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0xbb8e90b6 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0xd8bbf969 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0xd905150a +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0x5d5426ec +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0xa58419e7 +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0x3ff55a30 +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0xc29d34cf +drivers/pcmcia/pcmcia_core release_cis_mem 0x02cc3e7e +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0x71c4e6ca +drivers/scsi/libata __sata_phy_reset 0xdaa2dba6 +drivers/scsi/libata ata_altstatus 0x2c2fcd7f +drivers/scsi/libata ata_bmdma_irq_clear 0xf0ba240d +drivers/scsi/libata ata_bmdma_setup 0xf4d0af5e +drivers/scsi/libata ata_bmdma_start 0xa219c80e +drivers/scsi/libata ata_bmdma_status 0x483ceb56 +drivers/scsi/libata ata_bmdma_stop 0x2a43a2e5 +drivers/scsi/libata ata_bus_probe 0x64e56f96 +drivers/scsi/libata ata_bus_reset 0xc778dd24 +drivers/scsi/libata ata_check_status 0x91167755 +drivers/scsi/libata ata_dev_classify 0x0531dcb8 +drivers/scsi/libata ata_dev_config 0x2267efe9 +drivers/scsi/libata ata_dev_id_string 0x07d45a53 +drivers/scsi/libata ata_device_add 0x9a59f053 +drivers/scsi/libata ata_device_resume 0x25946358 +drivers/scsi/libata ata_device_shutdown 0x3638f3f5 +drivers/scsi/libata ata_device_suspend 0xecb7beec +drivers/scsi/libata ata_eng_timeout 0x56ba19ae +drivers/scsi/libata ata_exec_command 0x8581a665 +drivers/scsi/libata ata_host_intr 0x905be02a +drivers/scsi/libata ata_host_set_remove 0x4f802f60 +drivers/scsi/libata ata_host_stop 0xa6ee822d +drivers/scsi/libata ata_hotplug_plug 0xd11a5818 +drivers/scsi/libata ata_hotplug_unplug 0x69b93735 +drivers/scsi/libata ata_interrupt 0xf485e134 +drivers/scsi/libata ata_noop_dev_select 0x13325980 +drivers/scsi/libata ata_pci_device_resume 0x5143e45c +drivers/scsi/libata ata_pci_device_suspend 0xd5d0bb89 +drivers/scsi/libata ata_pci_host_stop 0xd6dc600a +drivers/scsi/libata ata_pci_init_native_mode 0xecfa2bb7 +drivers/scsi/libata ata_pci_init_one 0x04a2f05d +drivers/scsi/libata ata_pci_remove_one 0xf0da003f +drivers/scsi/libata ata_port_disable 0x824d888d +drivers/scsi/libata ata_port_probe 0x5e1a7e46 +drivers/scsi/libata ata_port_start 0xd04537db +drivers/scsi/libata ata_port_stop 0x2bbec02b +drivers/scsi/libata ata_qc_complete 0x8608a64d +drivers/scsi/libata ata_qc_issue_prot 0x3bf597e5 +drivers/scsi/libata ata_qc_prep 0xcbad2687 +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0x78441484 +drivers/scsi/libata ata_scsi_device_shutdown 0x64705362 +drivers/scsi/libata ata_scsi_device_suspend 0xd3128da6 +drivers/scsi/libata ata_scsi_error 0x71a7fbce +drivers/scsi/libata ata_scsi_ioctl 0x52c4f4ff +drivers/scsi/libata ata_scsi_queuecmd 0x97428207 +drivers/scsi/libata ata_scsi_release 0xcede5ac6 +drivers/scsi/libata ata_scsi_simulate 0xb7999341 +drivers/scsi/libata ata_scsi_slave_config 0x08dec3a4 +drivers/scsi/libata ata_sg_init 0x2376ed63 +drivers/scsi/libata ata_sg_init_one 0x387e29a5 +drivers/scsi/libata ata_std_bios_param 0xcf9d6a38 +drivers/scsi/libata ata_std_dev_select 0x45742889 +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0x0067df75 +drivers/scsi/libata ata_tf_load 0x77f556f4 +drivers/scsi/libata ata_tf_read 0x2ab4f0b9 +drivers/scsi/libata ata_tf_to_fis 0x28177a3f +drivers/scsi/libata ata_timing_compute 0xe3d43215 +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata pci_test_config_bits 0x63cbb9b4 +drivers/scsi/libata sata_phy_reset 0x352a8f92 +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0xe2625897 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0x4ceb9527 +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0xc0beddfa +drivers/scsi/qlogicfas408 qlogicfas408_abort 0xfce2c488 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0x1454b8f3 +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0xb57db4fd +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0xb17a48b8 +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x1931d71a +drivers/scsi/qlogicfas408 qlogicfas408_info 0x1ee3c3ef +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0x44fb9433 +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0xd636fda5 +drivers/scsi/raid_class raid_class_release 0x3ec831be +drivers/scsi/raid_class raid_component_add 0xcd73f441 +drivers/scsi/sas/sas_class sas_register_ha 0xc7dde9db +drivers/scsi/sas/sas_class sas_unregister_ha 0x99180616 +drivers/scsi/scsi_mod __scsi_add_device 0x0cf3f4f4 +drivers/scsi/scsi_mod __scsi_device_lookup 0xfacd2bbb +drivers/scsi/scsi_mod __scsi_device_lookup_by_target 0xc76b4a99 +drivers/scsi/scsi_mod __scsi_iterate_devices 0xf720af77 +drivers/scsi/scsi_mod __scsi_print_command 0xfef96e23 +drivers/scsi/scsi_mod __scsi_print_sense 0x69d38ed9 +drivers/scsi/scsi_mod int_to_scsilun 0xea10212a +drivers/scsi/scsi_mod scsi_add_device 0x3eb8c08f +drivers/scsi/scsi_mod scsi_add_host 0x38a73e81 +drivers/scsi/scsi_mod scsi_adjust_queue_depth 0x3bdbd043 +drivers/scsi/scsi_mod scsi_allocate_request 0xdfd8f3c0 +drivers/scsi/scsi_mod scsi_bios_ptable 0xc7c49276 +drivers/scsi/scsi_mod scsi_block_requests 0xa8f93d3d +drivers/scsi/scsi_mod scsi_block_when_processing_errors 0x646f1ab3 +drivers/scsi/scsi_mod scsi_bus_type 0xfe72aaa0 +drivers/scsi/scsi_mod scsi_calculate_bounce_limit 0xb6627839 +drivers/scsi/scsi_mod scsi_command_normalize_sense 0xea0ad545 +drivers/scsi/scsi_mod scsi_device_cancel 0xc11c3e37 +drivers/scsi/scsi_mod scsi_device_get 0xfb67fbd6 +drivers/scsi/scsi_mod scsi_device_lookup 0x338561fc +drivers/scsi/scsi_mod scsi_device_lookup_by_target 0xa9874af5 +drivers/scsi/scsi_mod scsi_device_put 0x10b3fb51 +drivers/scsi/scsi_mod scsi_device_quiesce 0x47e99293 +drivers/scsi/scsi_mod scsi_device_resume 0x6d603212 +drivers/scsi/scsi_mod scsi_device_set_state 0x5e448f9c +drivers/scsi/scsi_mod scsi_device_types 0x6df713c9 +drivers/scsi/scsi_mod scsi_do_req 0x72ee2e30 +drivers/scsi/scsi_mod scsi_execute 0xf10b79c2 +drivers/scsi/scsi_mod scsi_execute_req 0x7efde792 +drivers/scsi/scsi_mod scsi_extd_sense_format 0x11267875 +drivers/scsi/scsi_mod scsi_finish_command 0x669f5784 +drivers/scsi/scsi_mod scsi_flush_work 0x8a81ca7e +drivers/scsi/scsi_mod scsi_free_host_dev 0xcf2cf310 +drivers/scsi/scsi_mod scsi_get_command 0xb75f71eb +drivers/scsi/scsi_mod scsi_get_host_dev 0x8e1e981f +drivers/scsi/scsi_mod scsi_get_sense_info_fld 0x56987c01 +drivers/scsi/scsi_mod scsi_host_alloc 0x29f7c729 +drivers/scsi/scsi_mod scsi_host_get 0x721decdc +drivers/scsi/scsi_mod scsi_host_lookup 0x4c5ae640 +drivers/scsi/scsi_mod scsi_host_put 0x8c9e34d3 +drivers/scsi/scsi_mod scsi_host_set_state 0x0fde250f +drivers/scsi/scsi_mod scsi_internal_device_block 0x7c419226 +drivers/scsi/scsi_mod scsi_internal_device_unblock 0xa4a1ed25 +drivers/scsi/scsi_mod scsi_io_completion 0x285aa682 +drivers/scsi/scsi_mod scsi_ioctl 0x0d973887 +drivers/scsi/scsi_mod scsi_ioctl_send_command 0xa3901ba8 +drivers/scsi/scsi_mod scsi_is_host_device 0x12484b81 +drivers/scsi/scsi_mod scsi_is_sdev_device 0x97584453 +drivers/scsi/scsi_mod scsi_is_target_device 0x4d9d71a5 +drivers/scsi/scsi_mod scsi_logging_level 0xaf3dd7dc +drivers/scsi/scsi_mod scsi_mode_sense 0x5dffbc01 +drivers/scsi/scsi_mod scsi_nonblockable_ioctl 0x1be24787 +drivers/scsi/scsi_mod scsi_normalize_sense 0x0c65e73c +drivers/scsi/scsi_mod scsi_partsize 0x4afe9a77 +drivers/scsi/scsi_mod scsi_print_command 0xe2b45da7 +drivers/scsi/scsi_mod scsi_print_msg 0x67f88938 +drivers/scsi/scsi_mod scsi_print_req_sense 0x40b24549 +drivers/scsi/scsi_mod scsi_print_sense 0xfbed26ed +drivers/scsi/scsi_mod scsi_print_sense_hdr 0xca5dbc50 +drivers/scsi/scsi_mod scsi_print_status 0x9cfd56c5 +drivers/scsi/scsi_mod scsi_put_command 0x2cb9314d +drivers/scsi/scsi_mod scsi_queue_work 0x7a821c05 +drivers/scsi/scsi_mod scsi_register 0x297d85d1 +drivers/scsi/scsi_mod scsi_register_driver 0x3b283b8b +drivers/scsi/scsi_mod scsi_register_interface 0x391a7c1b +drivers/scsi/scsi_mod scsi_release_request 0x620dea6b +drivers/scsi/scsi_mod scsi_remove_device 0x6e6203d2 +drivers/scsi/scsi_mod scsi_remove_host 0x439b141d +drivers/scsi/scsi_mod scsi_remove_target 0xaa4e0b5e +drivers/scsi/scsi_mod scsi_report_bus_reset 0x75b9ecc6 +drivers/scsi/scsi_mod scsi_report_device_reset 0x990fd8c1 +drivers/scsi/scsi_mod scsi_request_normalize_sense 0x8bf36982 +drivers/scsi/scsi_mod scsi_rescan_device 0x3c53a9e1 +drivers/scsi/scsi_mod scsi_reset_provider 0x5e9c141b +drivers/scsi/scsi_mod scsi_scan_host 0xe6b88e38 +drivers/scsi/scsi_mod scsi_scan_target 0xeafd8728 +drivers/scsi/scsi_mod scsi_sense_desc_find 0x2b0ba2b0 +drivers/scsi/scsi_mod scsi_sense_key_string 0x96cd2b04 +drivers/scsi/scsi_mod scsi_set_medium_removal 0x4447816d +drivers/scsi/scsi_mod scsi_setup_blk_pc_cmnd 0xe80ede2c +drivers/scsi/scsi_mod scsi_target_block 0x792ad66a +drivers/scsi/scsi_mod scsi_target_quiesce 0x2e8a74c0 +drivers/scsi/scsi_mod scsi_target_resume 0xde7b3904 +drivers/scsi/scsi_mod scsi_target_unblock 0xcdfa41f3 +drivers/scsi/scsi_mod scsi_test_unit_ready 0xf83cb4c8 +drivers/scsi/scsi_mod scsi_track_queue_full 0x904cc664 +drivers/scsi/scsi_mod scsi_unblock_requests 0x86b84842 +drivers/scsi/scsi_mod scsi_unregister 0x853c1f6c +drivers/scsi/scsi_mod scsicam_bios_param 0xb16f822f +drivers/scsi/scsi_mod starget_for_each_device 0x9d9f495f +drivers/scsi/scsi_transport_fc fc_attach_transport 0xffffe5b7 +drivers/scsi/scsi_transport_fc fc_release_transport 0x95775112 +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x981ff748 +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0xabeff1a1 +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x904bb1ea +drivers/scsi/scsi_transport_fc fc_remove_host 0xe4560dbf +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0xffdf2cf1 +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0x8677ed8d +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x200e54d7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x3ff3cd10 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x93a83853 +drivers/scsi/scsi_transport_sas sas_attach_transport 0x1e32ebe0 +drivers/scsi/scsi_transport_sas sas_phy_add 0x52d1b023 +drivers/scsi/scsi_transport_sas sas_phy_alloc 0xb3d357e6 +drivers/scsi/scsi_transport_sas sas_phy_delete 0xdc489189 +drivers/scsi/scsi_transport_sas sas_phy_free 0x2366518a +drivers/scsi/scsi_transport_sas sas_release_transport 0x81de1a99 +drivers/scsi/scsi_transport_sas sas_remove_host 0xd0933c82 +drivers/scsi/scsi_transport_sas sas_rphy_add 0x5c4811a9 +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x3169721e +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x1bd47bae +drivers/scsi/scsi_transport_sas sas_rphy_free 0x1c99be9c +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0x1db8ad33 +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0x24e7c654 +drivers/scsi/scsi_transport_spi spi_attach_transport 0xde4d67bc +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0x7426dd50 +drivers/scsi/scsi_transport_spi spi_dv_device 0x1d2674ec +drivers/scsi/scsi_transport_spi spi_release_transport 0x4ea1875d +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0x333ca2b6 +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x7496960e +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0x59c97090 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x1915946b +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0xdfe23d0b +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0xb0c21788 +drivers/serial/8250 serial8250_register_port 0x5f043f5b +drivers/serial/8250 serial8250_resume_port 0xc7208c3a +drivers/serial/8250 serial8250_suspend_port 0xcc248d26 +drivers/serial/8250 serial8250_unregister_port 0xcefcd99a +drivers/serial/8250_pci pciserial_init_ports 0x2c2b8c95 +drivers/serial/8250_pci pciserial_remove_ports 0x49233859 +drivers/serial/8250_pci pciserial_resume_ports 0xf69de5db +drivers/serial/8250_pci pciserial_suspend_ports 0x89d7b8aa +drivers/serial/serial_core uart_add_one_port 0xc334f685 +drivers/serial/serial_core uart_get_baud_rate 0x969b9e53 +drivers/serial/serial_core uart_get_divisor 0x07754ffc +drivers/serial/serial_core uart_match_port 0xc32ce83d +drivers/serial/serial_core uart_register_driver 0xbb015cf8 +drivers/serial/serial_core uart_remove_one_port 0xc63cf7b2 +drivers/serial/serial_core uart_resume_port 0xed684ffb +drivers/serial/serial_core uart_suspend_port 0x5198f3d5 +drivers/serial/serial_core uart_unregister_driver 0xdf777ba1 +drivers/serial/serial_core uart_update_timeout 0x365a821a +drivers/serial/serial_core uart_write_wakeup 0xc81c7f67 +drivers/telephony/ixj ixj_pcmcia_probe 0x51cf6d5d +drivers/telephony/phonedev phone_register_device 0x0fbd1123 +drivers/telephony/phonedev phone_unregister_device 0x4e79a7c7 +drivers/usb/atm/usbatm usbatm_usb_disconnect 0xa9c98623 +drivers/usb/atm/usbatm usbatm_usb_probe 0xfe21d1ab +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x7338dcbb +drivers/usb/core/usbcore usb_alloc_dev 0x29e4781d +drivers/usb/core/usbcore usb_alloc_urb 0x409ca0dc +drivers/usb/core/usbcore usb_altnum_to_altsetting 0xb6b4fa1e +drivers/usb/core/usbcore usb_buffer_alloc 0x6666ba97 +drivers/usb/core/usbcore usb_buffer_free 0x16923c08 +drivers/usb/core/usbcore usb_buffer_map_sg 0x32d47270 +drivers/usb/core/usbcore usb_buffer_unmap_sg 0xd3f84d9d +drivers/usb/core/usbcore usb_bulk_msg 0x7f6daff1 +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0x0e0c9664 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0x4f6a9884 +drivers/usb/core/usbcore usb_claim_bandwidth 0x97c4bd09 +drivers/usb/core/usbcore usb_clear_halt 0x30b5f63f +drivers/usb/core/usbcore usb_control_msg 0xd51ee9b0 +drivers/usb/core/usbcore usb_create_hcd 0x7b9eb7dc +drivers/usb/core/usbcore usb_deregister 0xa4da4832 +drivers/usb/core/usbcore usb_deregister_dev 0x76693d3a +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0xb2563833 +drivers/usb/core/usbcore usb_driver_claim_interface 0x8ffe5006 +drivers/usb/core/usbcore usb_driver_release_interface 0x0f78d011 +drivers/usb/core/usbcore usb_find_device 0xd7329c1c +drivers/usb/core/usbcore usb_find_interface 0x3b98a5af +drivers/usb/core/usbcore usb_free_urb 0x680cc635 +drivers/usb/core/usbcore usb_get_current_frame_number 0x9f3b07e7 +drivers/usb/core/usbcore usb_get_descriptor 0xfb531dff +drivers/usb/core/usbcore usb_get_dev 0xc11eb682 +drivers/usb/core/usbcore usb_get_intf 0x4fc6dc5c +drivers/usb/core/usbcore usb_get_status 0xf1bc0612 +drivers/usb/core/usbcore usb_get_string 0x38912a14 +drivers/usb/core/usbcore usb_get_urb 0x6769aa36 +drivers/usb/core/usbcore usb_hc_died 0xe3337fe2 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0x4730afd3 +drivers/usb/core/usbcore usb_hcd_pci_probe 0x319c91a5 +drivers/usb/core/usbcore usb_hcd_pci_remove 0xbfc41768 +drivers/usb/core/usbcore usb_hcd_pci_resume 0x6f23df62 +drivers/usb/core/usbcore usb_hcd_pci_suspend 0x7f8a5dbe +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0x0f84e362 +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0xf51f56c5 +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0x642a0609 +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0x555e6aa0 +drivers/usb/core/usbcore usb_ifnum_to_if 0xf68a8796 +drivers/usb/core/usbcore usb_init_urb 0x0936547b +drivers/usb/core/usbcore usb_kill_urb 0x92de2600 +drivers/usb/core/usbcore usb_lock_device 0xcfb21801 +drivers/usb/core/usbcore usb_lock_device_for_reset 0xf4d5ab10 +drivers/usb/core/usbcore usb_match_id 0x495b419c +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0x75154e8b +drivers/usb/core/usbcore usb_put_dev 0x38da17f4 +drivers/usb/core/usbcore usb_put_hcd 0x4d86fccf +drivers/usb/core/usbcore usb_put_intf 0xf45ae4f2 +drivers/usb/core/usbcore usb_register 0x29a500a5 +drivers/usb/core/usbcore usb_register_dev 0x5bcdfa9a +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0xd3bf74da +drivers/usb/core/usbcore usb_remove_hcd 0x74d9a7fe +drivers/usb/core/usbcore usb_reset_configuration 0xf20acec8 +drivers/usb/core/usbcore usb_reset_device 0x8b6588a6 +drivers/usb/core/usbcore usb_set_device_state 0xda991062 +drivers/usb/core/usbcore usb_set_interface 0x3fcf6239 +drivers/usb/core/usbcore usb_sg_cancel 0xcce3ebc0 +drivers/usb/core/usbcore usb_sg_init 0xda3831b9 +drivers/usb/core/usbcore usb_sg_wait 0xba67f206 +drivers/usb/core/usbcore usb_string 0x917de052 +drivers/usb/core/usbcore usb_submit_urb 0x711c3aeb +drivers/usb/core/usbcore usb_trylock_device 0x7251aabb +drivers/usb/core/usbcore usb_unlink_urb 0xd6eb1f15 +drivers/usb/core/usbcore usb_unlock_device 0x40c6de00 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/gadget/net2280 net2280_set_fifo_mode 0x473754be +drivers/usb/gadget/net2280 usb_gadget_register_driver 0x7fb6612e +drivers/usb/gadget/net2280 usb_gadget_unregister_driver 0x9007f383 +drivers/usb/host/sl811-hcd sl811h_driver 0x85e23753 +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0x5cd5b135 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x4c1bd6ae +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0xdd5ff0af +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0xbc6a2ad1 +drivers/usb/media/usbvideo RingQueue_Dequeue 0x54ded406 +drivers/usb/media/usbvideo RingQueue_Enqueue 0x5293ede2 +drivers/usb/media/usbvideo RingQueue_Flush 0x9778abda +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0xdf605c59 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0x8325c5d8 +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x5382af3b +drivers/usb/media/usbvideo usbvideo_Deregister 0xd3fab312 +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0x83578f7a +drivers/usb/media/usbvideo usbvideo_TestPattern 0x4f52044e +drivers/usb/media/usbvideo usbvideo_register 0x5e6e5ae8 +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0xaed5fddd +drivers/usb/media/w9968cf w9968cf_vppmod_register 0x8639482d +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0x91539c42 +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0x76a50674 +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0x0fa4a9b4 +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0x238c6314 +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0x9705f9d0 +drivers/usb/net/usbnet usbnet_defer_kevent 0x293493f6 +drivers/usb/net/usbnet usbnet_disconnect 0x8c765c69 +drivers/usb/net/usbnet usbnet_get_drvinfo 0x34a1736c +drivers/usb/net/usbnet usbnet_get_endpoints 0x763b4e23 +drivers/usb/net/usbnet usbnet_get_msglevel 0x4c4c3e89 +drivers/usb/net/usbnet usbnet_probe 0x58c4b463 +drivers/usb/net/usbnet usbnet_resume 0xec25590d +drivers/usb/net/usbnet usbnet_set_msglevel 0x0e6782a0 +drivers/usb/net/usbnet usbnet_skb_return 0x0deb5e6a +drivers/usb/net/usbnet usbnet_suspend 0xc43bb465 +drivers/usb/serial/usbserial ezusb_set_reset 0x6335fdd7 +drivers/usb/serial/usbserial ezusb_writememory 0x37436e64 +drivers/usb/serial/usbserial usb_serial_deregister 0x33e80c25 +drivers/usb/serial/usbserial usb_serial_disconnect 0xbea10295 +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x55f5eb57 +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0xbabb4f92 +drivers/usb/serial/usbserial usb_serial_register 0x26b508e9 +drivers/video/backlight/backlight backlight_device_register 0xf2a9be62 +drivers/video/backlight/backlight backlight_device_unregister 0xa23d29a5 +drivers/video/backlight/lcd lcd_device_register 0x1357875e +drivers/video/backlight/lcd lcd_device_unregister 0x9d39089d +drivers/video/cyber2000fb cyber2000fb_attach 0xcdfbf465 +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x4806f7e3 +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0xcc4ebbea +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0x87559160 +drivers/video/sis/sisfb sis_free 0x454a3cf0 +drivers/video/sis/sisfb sis_free_new 0x17bcf11c +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0x4074cebb +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0xa94eea83 +drivers/w1/ds9490r ds_put_device 0xe8ef4fd1 +drivers/w1/ds9490r ds_read_bit 0xfb9467d5 +drivers/w1/ds9490r ds_read_block 0x0e91fa92 +drivers/w1/ds9490r ds_read_byte 0x6b511f3f +drivers/w1/ds9490r ds_reset 0xa231393a +drivers/w1/ds9490r ds_touch_bit 0xc52986d8 +drivers/w1/ds9490r ds_write_bit 0xc49d63bc +drivers/w1/ds9490r ds_write_block 0x0a12c6a0 +drivers/w1/ds9490r ds_write_byte 0xaaf0e4c1 +drivers/w1/wire w1_add_master_device 0x31fe0891 +drivers/w1/wire w1_calc_crc8 0x7c2f2afb +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xb0c86d52 +drivers/w1/wire w1_family_put 0x45181a35 +drivers/w1/wire w1_family_registered 0x345f469c +drivers/w1/wire w1_read_8 0xd876008c +drivers/w1/wire w1_read_block 0x47b8cc35 +drivers/w1/wire w1_register_family 0xadeb1de9 +drivers/w1/wire w1_remove_master_device 0x19fc269c +drivers/w1/wire w1_reset_bus 0x6c51b4c6 +drivers/w1/wire w1_reset_select_slave 0xd86bc9ee +drivers/w1/wire w1_search_devices 0xc34ea9f0 +drivers/w1/wire w1_touch_bit 0x9fc29b37 +drivers/w1/wire w1_unregister_family 0x2616cdb9 +drivers/w1/wire w1_write_8 0xe30dcc1a +drivers/w1/wire w1_write_block 0x4fdc4fe7 +fs/configfs/configfs config_group_init 0x002b2a41 +fs/configfs/configfs config_group_init_type_name 0xabe3fdd4 +fs/configfs/configfs config_item_get 0xc7c8e09d +fs/configfs/configfs config_item_init 0xc9a3c46e +fs/configfs/configfs config_item_init_type_name 0x5fbb3797 +fs/configfs/configfs config_item_put 0x5d5fe587 +fs/configfs/configfs config_item_set_name 0x06c91623 +fs/configfs/configfs configfs_register_subsystem 0xf56550b1 +fs/configfs/configfs configfs_unregister_subsystem 0xc80fde75 +fs/exportfs/exportfs export_op_default 0xfa58a888 +fs/exportfs/exportfs find_exported_dentry 0x08d02ff1 +fs/fat/fat fat_add_entries 0x4bdebcb4 +fs/fat/fat fat_alloc_new_dir 0xaea6814a +fs/fat/fat fat_attach 0xb81615b9 +fs/fat/fat fat_build_inode 0xc07c8cca +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0x46d43880 +fs/fat/fat fat_dir_empty 0x5d205195 +fs/fat/fat fat_fill_super 0xc03556bc +fs/fat/fat fat_free_clusters 0x631fbb01 +fs/fat/fat fat_fs_panic 0xe800f575 +fs/fat/fat fat_get_dotdot_entry 0x28af9ac3 +fs/fat/fat fat_notify_change 0xbb9de35c +fs/fat/fat fat_remove_entries 0x3118dde1 +fs/fat/fat fat_scan 0x6f8a98b0 +fs/fat/fat fat_search_long 0x4d095162 +fs/fat/fat fat_sync_bhs 0x818365dc +fs/fat/fat fat_sync_inode 0xebdb6c56 +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0xcf75915d +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0xac609209 +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0x814b0e26 +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0x6a1ddb54 +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0xaeb72466 +fs/jbd/jbd journal_abort 0x6729d226 +fs/jbd/jbd journal_ack_err 0xe9bfe3c6 +fs/jbd/jbd journal_blocks_per_page 0xb3d84e43 +fs/jbd/jbd journal_check_available_features 0x4d6a38eb +fs/jbd/jbd journal_check_used_features 0xf7f5c0f5 +fs/jbd/jbd journal_clear_err 0x852c7f14 +fs/jbd/jbd journal_create 0xa2e1cea4 +fs/jbd/jbd journal_destroy 0x2499c1df +fs/jbd/jbd journal_dirty_data 0xf5e96b32 +fs/jbd/jbd journal_dirty_metadata 0x8ebef0dd +fs/jbd/jbd journal_errno 0x92c5f5dd +fs/jbd/jbd journal_extend 0x384620a4 +fs/jbd/jbd journal_flush 0x255bdf9e +fs/jbd/jbd journal_force_commit 0xaf95ea12 +fs/jbd/jbd journal_force_commit_nested 0x5a229373 +fs/jbd/jbd journal_forget 0x881c0f81 +fs/jbd/jbd journal_get_create_access 0x742f0e34 +fs/jbd/jbd journal_get_undo_access 0x42737436 +fs/jbd/jbd journal_get_write_access 0x646e299a +fs/jbd/jbd journal_init_dev 0xc7aa9a12 +fs/jbd/jbd journal_init_inode 0x0e9deb73 +fs/jbd/jbd journal_invalidatepage 0xf94d8034 +fs/jbd/jbd journal_load 0x966d9602 +fs/jbd/jbd journal_lock_updates 0x3530723c +fs/jbd/jbd journal_release_buffer 0x74c65ab1 +fs/jbd/jbd journal_restart 0x37c05025 +fs/jbd/jbd journal_revoke 0xa6781273 +fs/jbd/jbd journal_set_features 0x0a4de537 +fs/jbd/jbd journal_start 0xb9314753 +fs/jbd/jbd journal_start_commit 0xe72e3a26 +fs/jbd/jbd journal_stop 0x0828f441 +fs/jbd/jbd journal_try_to_free_buffers 0xf6eafaed +fs/jbd/jbd journal_unlock_updates 0x23560a36 +fs/jbd/jbd journal_update_format 0xe0fc673a +fs/jbd/jbd journal_update_superblock 0xe0198ff2 +fs/jbd/jbd journal_wipe 0x19d76e9b +fs/jbd/jbd log_wait_commit 0xa5b25ff6 +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0xff2be112 +fs/lockd/lockd nlmsvc_ops 0x06c8f5f1 +fs/nfsd/nfsd nfs4_acl_add_ace 0x1bb3671e +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x81a17396 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0xf56c2017 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0x1d747ce3 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xbaeb4700 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0xc3725327 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0x78d45a56 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0x377b8767 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x43bce54e +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0x36418553 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0x521e0726 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0xd3c26c16 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0xf92452d3 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x34cbbedd +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0x355aa222 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xa82a8645 +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0x5cc6c6d4 +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0xa140c3ec +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0xb755cb12 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0xa6f5977d +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0x00a077be +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0xd53fcd6a +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0xd01d9b51 +fs/relayfs/relayfs relay_buf_full 0x4dbe7b05 +fs/relayfs/relayfs relay_close 0x9100d9a5 +fs/relayfs/relayfs relay_flush 0xa6f9d5c3 +fs/relayfs/relayfs relay_open 0x1843d7d6 +fs/relayfs/relayfs relay_reset 0x5194d6be +fs/relayfs/relayfs relay_subbufs_consumed 0xaf842303 +fs/relayfs/relayfs relay_switch_subbuf 0xf717cb7f +fs/relayfs/relayfs relayfs_create_dir 0x34fa847d +fs/relayfs/relayfs relayfs_file_operations 0xc53a2688 +fs/relayfs/relayfs relayfs_remove_dir 0xecc1ce19 +lib/crc-ccitt crc_ccitt 0x651c2313 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x9aabc564 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x41bcd8b3 +lib/libcrc32c crc32c_le 0x13c0c38e +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0x4f87275e +net/appletalk/appletalk alloc_ltalkdev 0x78cdf649 +net/appletalk/appletalk atalk_find_dev_addr 0xb5f1ad82 +net/appletalk/appletalk atrtr_get_dev 0x975fcef2 +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0xb809d06c +net/ax25/ax25 ax25_findbyuid 0x564d9f14 +net/ax25/ax25 ax25_hard_header 0x3c8f586d +net/ax25/ax25 ax25_linkfail_register 0xcff2957c +net/ax25/ax25 ax25_linkfail_release 0xf9280e62 +net/ax25/ax25 ax25_listen_register 0x82502481 +net/ax25/ax25 ax25_listen_release 0xc8ac26a3 +net/ax25/ax25 ax25_protocol_register 0x80dd4308 +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0x1060f8a6 +net/ax25/ax25 ax25_send_frame 0xd2143e76 +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0x5bf3e7a7 +net/bluetooth/bluetooth bt_accept_enqueue 0xa2245452 +net/bluetooth/bluetooth bt_accept_unlink 0x538076cc +net/bluetooth/bluetooth bt_class 0x4b761cde +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0x14ebc7e7 +net/bluetooth/bluetooth bt_sock_poll 0x62c6e7cb +net/bluetooth/bluetooth bt_sock_recvmsg 0x02f5bb7c +net/bluetooth/bluetooth bt_sock_register 0xda9755a0 +net/bluetooth/bluetooth bt_sock_unlink 0xa44919ce +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0x23b2118a +net/bluetooth/bluetooth hci_alloc_dev 0x5ff0ac00 +net/bluetooth/bluetooth hci_conn_auth 0x05a2fdab +net/bluetooth/bluetooth hci_conn_change_link_key 0x6c458465 +net/bluetooth/bluetooth hci_conn_encrypt 0x7e6543f0 +net/bluetooth/bluetooth hci_conn_switch_role 0xf53f7864 +net/bluetooth/bluetooth hci_connect 0x09c923ac +net/bluetooth/bluetooth hci_free_dev 0x31149214 +net/bluetooth/bluetooth hci_get_route 0x04519678 +net/bluetooth/bluetooth hci_register_cb 0xbae99728 +net/bluetooth/bluetooth hci_register_dev 0xb33c5726 +net/bluetooth/bluetooth hci_register_proto 0xd04d2bf5 +net/bluetooth/bluetooth hci_resume_dev 0x346c51b1 +net/bluetooth/bluetooth hci_send_acl 0x073181e4 +net/bluetooth/bluetooth hci_send_sco 0xd0498b2f +net/bluetooth/bluetooth hci_suspend_dev 0x503f4002 +net/bluetooth/bluetooth hci_unregister_cb 0xa90ee97c +net/bluetooth/bluetooth hci_unregister_dev 0xdb41ef96 +net/bluetooth/bluetooth hci_unregister_proto 0x4241c11a +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0xfdce7cc2 +net/bridge/netfilter/ebtables ebt_do_table 0x2cd78af6 +net/bridge/netfilter/ebtables ebt_register_match 0xf8b583bd +net/bridge/netfilter/ebtables ebt_register_table 0x96e0aeed +net/bridge/netfilter/ebtables ebt_register_target 0x05d3358f +net/bridge/netfilter/ebtables ebt_register_watcher 0xec5f86ef +net/bridge/netfilter/ebtables ebt_unregister_match 0x51640b8e +net/bridge/netfilter/ebtables ebt_unregister_table 0x2c1a04f1 +net/bridge/netfilter/ebtables ebt_unregister_target 0x65245fd4 +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x5a702438 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xf352cf8b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0xcfedf7ca +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x79e8107c +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0xfe984ab9 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0xc08dc396 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0x7c5d3fa2 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0x19eb1835 +net/dccp/dccp ccid_init 0x259eb724 +net/dccp/dccp ccid_register 0x481250ec +net/dccp/dccp ccid_unregister 0x3011060c +net/dccp/dccp dccp_hashinfo 0x4a4ccf2f +net/dccp/dccp dccp_insert_option 0x91c05d50 +net/dccp/dccp dccp_insert_option_elapsed_time 0x3e9c07c2 +net/dccp/dccp dccp_insert_option_timestamp 0xff36e4dd +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0x2270b600 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0x5ce07edb +net/ieee80211/ieee80211 alloc_ieee80211 0x88c7bd76 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0xf8b6238b +net/ieee80211/ieee80211 ieee80211_channel_to_index 0xc6f4d4ee +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0x682158cb +net/ieee80211/ieee80211 ieee80211_get_channel 0x99acc6aa +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0x72a2c7c6 +net/ieee80211/ieee80211 ieee80211_get_geo 0xdc994ae7 +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0xff8674be +net/ieee80211/ieee80211 ieee80211_rx 0xe84d1e8a +net/ieee80211/ieee80211 ieee80211_rx_mgt 0xd64ba03c +net/ieee80211/ieee80211 ieee80211_set_geo 0x24824f2d +net/ieee80211/ieee80211 ieee80211_tx_frame 0xfb0c62bb +net/ieee80211/ieee80211 ieee80211_txb_free 0xdf44953c +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0x24271a5d +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0x03a529a5 +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0xfb2f70a0 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0x91059320 +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0x477c656f +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x66b628ce +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x2208249b +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0xcf4c1a22 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x7c3f2ecd +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0xaccfc278 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0xcd402f73 +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0x450d8893 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x8c066d60 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0x8947fc22 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0x55b72762 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x3b794689 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0xac124741 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0xe5d24a64 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0x9a561f6e +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0xe1e08679 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0x07e2dbdf +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0x009364b4 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0xf39ab22f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0xfedeac17 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x25e977fe +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0xc0de2713 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0xb6435e63 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x3b2eb8d0 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x366aa6e8 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x46b208cc +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0xeb50b57e +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0xb62fb3e7 +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x411ae018 +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x22278933 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0x77ccae56 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0xbebec575 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0x37ac20e9 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0x78f25416 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0xc9171b04 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0xdc2c04e7 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x5ed03630 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0x231308ec +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0xe242dbbe +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0xca094124 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x751db0b2 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x8d158afb +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x353ca028 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0xff936e87 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x3ec4f715 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0x34a9505a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0xf31268d5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0x9d7ade4b +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x065253d5 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x276d8059 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0x103b8f16 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0x148092f8 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0xc1e9d97e +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x70d0965a +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0x8b2cf3ce +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0xfb000107 +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0x90be0952 +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0x92680632 +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0xe0fd4e9c +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0x786c5f1e +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0x01c6aadf +net/ipv4/ipvs/ip_vs register_ip_vs_app 0x049ad1d7 +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0xc073ae53 +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0x86f3f101 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0x6e652637 +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0xa33f2e20 +net/ipv4/netfilter/arp_tables arpt_do_table 0xa0d3a29c +net/ipv4/netfilter/arp_tables arpt_register_table 0x299cbd25 +net/ipv4/netfilter/arp_tables arpt_register_target 0x46ae936e +net/ipv4/netfilter/arp_tables arpt_unregister_table 0xba0ec3f0 +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x86475db4 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0xaccc78a3 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x524739f2 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0x6f8ac091 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0xeb4577bb +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0x3e326b74 +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0xcfb40418 +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0xd92138e0 +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0xc3424661 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0x7bc5499b +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0x5ac4ffa7 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0xdff42bd6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x157e4a3b +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0x82115e59 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0x5e15857d +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0xd147d3a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0xd0a7575c +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0x6ae542d2 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0x5e3b0ad0 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0xc31aa98e +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0x1bd5da57 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x9bad5437 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x2d07f40a +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0xd0dc843b +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x31ff8f4f +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0xa341844e +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0x97a1b420 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x7deeaace +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x6c09eeaa +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0x814d0bf1 +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0x0893b83c +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x434201e1 +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0x9c476086 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0x35794553 +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0xfecf26c0 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x3868e0ac +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x31b197c0 +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0x470f3ffe +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0x0fc29f65 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0x12c58074 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0xc974b3da +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0xdcaf83d9 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0x418b8293 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0xc9547b6b +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0x6a081488 +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0x3bca3e23 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0x8170f198 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0xbc5ca2ea +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0xaeb9ca9a +net/ipv4/netfilter/ip_nat ip_nat_packet 0xb6177e53 +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x90b4be31 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x884427b5 +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0xd3c081af +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0xc6f6bc24 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x379992fc +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0xc5c8d837 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0x502b1f89 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0xb014f4c0 +net/ipv4/netfilter/ip_tables ipt_do_table 0x10e7c511 +net/ipv4/netfilter/ip_tables ipt_find_target 0x03a522a4 +net/ipv4/netfilter/ip_tables ipt_register_match 0x1fc53a82 +net/ipv4/netfilter/ip_tables ipt_register_table 0xb40fab2c +net/ipv4/netfilter/ip_tables ipt_register_target 0xb0a80584 +net/ipv4/netfilter/ip_tables ipt_unregister_match 0x33953b03 +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x59eb7bb0 +net/ipv4/netfilter/ip_tables ipt_unregister_target 0x26334332 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0x746683a7 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0xf8ee1a76 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0xc4f2c139 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0xf796c2a0 +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x221b120b +net/ipv6/ipv6 inet6_add_protocol 0x8c7d79d8 +net/ipv6/ipv6 inet6_bind 0xb01f93b5 +net/ipv6/ipv6 inet6_del_protocol 0x0ed72bef +net/ipv6/ipv6 inet6_getname 0xed5bd17a +net/ipv6/ipv6 inet6_ioctl 0x36a6b679 +net/ipv6/ipv6 inet6_register_protosw 0xbe216bb9 +net/ipv6/ipv6 inet6_release 0x09f7583b +net/ipv6/ipv6 inet6_unregister_protosw 0x5db05e0a +net/ipv6/ipv6 ip6_route_me_harder 0x2d449e07 +net/ipv6/ipv6 ip6_route_output 0x47a819c8 +net/ipv6/ipv6 ip6_xmit 0x9ff7c051 +net/ipv6/ipv6 ipv6_chk_addr 0xd7fcd8c3 +net/ipv6/ipv6 ipv6_get_saddr 0x7c2d459e +net/ipv6/ipv6 ipv6_getsockopt 0x5fb53a21 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0x9de92daf +net/ipv6/ipv6 ipv6_setsockopt 0xef4cfa02 +net/ipv6/ipv6 ndisc_mc_map 0x4a772dff +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x0da78870 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0x60643556 +net/ipv6/ipv6 xfrm6_rcv_spi 0xaa3c49c5 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0xb034a9c9 +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0x29af5144 +net/ipv6/netfilter/ip6_tables ip6t_register_table 0xefe49c52 +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x4aaa37a9 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0xe47a472d +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0xa4d5db66 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0x9c4bdaa5 +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0xff881177 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0xba0e276c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0xddb1f9b0 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/irda/ircomm/ircomm ircomm_close 0x74f3913d +net/irda/ircomm/ircomm ircomm_connect_request 0x248ad8e3 +net/irda/ircomm/ircomm ircomm_connect_response 0x7f695535 +net/irda/ircomm/ircomm ircomm_control_request 0x8bf746ea +net/irda/ircomm/ircomm ircomm_data_request 0xeb4cc5a2 +net/irda/ircomm/ircomm ircomm_disconnect_request 0x0ab70e5d +net/irda/ircomm/ircomm ircomm_flow_request 0x0d236213 +net/irda/ircomm/ircomm ircomm_open 0x82ae53d1 +net/irda/irda alloc_irdadev 0xedb6b04f +net/irda/irda async_unwrap_char 0xfa0201fe +net/irda/irda async_wrap_skb 0x80523896 +net/irda/irda hashbin_delete 0x94a8156e +net/irda/irda hashbin_find 0xe0acf0d4 +net/irda/irda hashbin_get_first 0x29783db6 +net/irda/irda hashbin_get_next 0x5f261aef +net/irda/irda hashbin_insert 0x5861b834 +net/irda/irda hashbin_lock_find 0xd627dc1a +net/irda/irda hashbin_new 0x543a6db5 +net/irda/irda hashbin_remove 0xb7884205 +net/irda/irda hashbin_remove_this 0x7f933922 +net/irda/irda irda_debug 0x38a20e5b +net/irda/irda irda_device_dongle_cleanup 0x9ccbc352 +net/irda/irda irda_device_dongle_init 0x210d9761 +net/irda/irda irda_device_register_dongle 0x822b5196 +net/irda/irda irda_device_set_media_busy 0x31b3d9b7 +net/irda/irda irda_device_unregister_dongle 0xe8ebf6dc +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0x646ad960 +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_setup_dma 0xb1da15a1 +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0x59ff1aa4 +net/irda/irda iriap_getvaluebyclass_request 0x749217ff +net/irda/irda iriap_open 0x84c409b3 +net/irda/irda irias_add_integer_attrib 0xc10a5281 +net/irda/irda irias_add_octseq_attrib 0x550a5e27 +net/irda/irda irias_add_string_attrib 0x18edd399 +net/irda/irda irias_delete_object 0x89136cd1 +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x45a03a53 +net/irda/irda irias_find_object 0xa26f32f8 +net/irda/irda irias_insert_object 0x980fe568 +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0xe1a50c6f +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0x69b4f044 +net/irda/irda irlap_open 0x7b435ae2 +net/irda/irda irlmp_close_lsap 0x1de6cf73 +net/irda/irda irlmp_connect_request 0x74c0eaba +net/irda/irda irlmp_connect_response 0xf57e5bbc +net/irda/irda irlmp_data_request 0xfa5072f9 +net/irda/irda irlmp_disconnect_request 0x3781d8e0 +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0x3fd64d40 +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0xdca30d4c +net/irda/irda irttp_connect_request 0x78a99972 +net/irda/irda irttp_connect_response 0xe04d0a9f +net/irda/irda irttp_data_request 0x60bb06a9 +net/irda/irda irttp_disconnect_request 0x0b7f3a80 +net/irda/irda irttp_dup 0x723cfbbd +net/irda/irda irttp_flow_request 0xd23cc306 +net/irda/irda irttp_open_tsap 0x2475f757 +net/irda/irda irttp_udata_request 0xfa66c491 +net/irda/irda proc_irda 0x16584e97 +net/lapb/lapb lapb_connect_request 0x044cdda7 +net/lapb/lapb lapb_data_received 0xd70a0d9a +net/lapb/lapb lapb_data_request 0x9a23d678 +net/lapb/lapb lapb_disconnect_request 0x6cbce79b +net/lapb/lapb lapb_getparms 0xfa2df1ec +net/lapb/lapb lapb_register 0xdc8797d7 +net/lapb/lapb lapb_setparms 0xf37606d9 +net/lapb/lapb lapb_unregister 0x9b2f1b2a +net/netfilter/nfnetlink __nfa_fill 0x14cb7ec6 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0x20ac0199 +net/netfilter/nfnetlink nfnetlink_subsys_register 0x5ee1174f +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0x27e79042 +net/netfilter/nfnetlink nfnetlink_unicast 0x365e3bb4 +net/rxrpc/rxrpc rxrpc_add_service 0xeec8b6c7 +net/rxrpc/rxrpc rxrpc_call_abort 0xe76d6810 +net/rxrpc/rxrpc rxrpc_call_read_data 0xf64e5b65 +net/rxrpc/rxrpc rxrpc_call_write_data 0x1c8c728d +net/rxrpc/rxrpc rxrpc_create_call 0x9b416fcf +net/rxrpc/rxrpc rxrpc_create_connection 0x30672395 +net/rxrpc/rxrpc rxrpc_create_transport 0x9a8d1069 +net/rxrpc/rxrpc rxrpc_del_service 0xfcb45816 +net/rxrpc/rxrpc rxrpc_put_call 0x5f84ae46 +net/rxrpc/rxrpc rxrpc_put_connection 0x953eb7e8 +net/rxrpc/rxrpc rxrpc_put_transport 0x37af5a6d +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x00c52ef5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0xb5dea7ef +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xf8b2ff6e +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0xc39dd765 +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0x78f88186 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0x175bdb8b +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0x3aa11095 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0x350882c5 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0x4b89be16 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0xc3c9828b +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0x37f78908 +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0x3d249c91 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0x11a9a204 +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0xda3a2195 +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0x684afff8 +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0xd419110f +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x4c2f4b6d +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x8d1a827e +net/sunrpc/sunrpc auth_domain_find 0xce9b7a1f +net/sunrpc/sunrpc auth_domain_lookup 0xa74157e3 +net/sunrpc/sunrpc auth_domain_put 0xb7e2b4a5 +net/sunrpc/sunrpc auth_unix_add_addr 0xb8520a43 +net/sunrpc/sunrpc auth_unix_forget_old 0x758f9c49 +net/sunrpc/sunrpc auth_unix_lookup 0xd1d4e136 +net/sunrpc/sunrpc cache_check 0xbbc1789f +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0x00bcf607 +net/sunrpc/sunrpc cache_init 0xc244025c +net/sunrpc/sunrpc cache_purge 0xcf2eef88 +net/sunrpc/sunrpc cache_register 0x284acf33 +net/sunrpc/sunrpc cache_unregister 0xf635c9e8 +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0xb3ac95e1 +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0x78ec7c43 +net/sunrpc/sunrpc rpc_bind_new_program 0x35643643 +net/sunrpc/sunrpc rpc_call_async 0x53b55a5b +net/sunrpc/sunrpc rpc_call_setup 0x735a1680 +net/sunrpc/sunrpc rpc_call_sync 0xb8802cd9 +net/sunrpc/sunrpc rpc_clnt_sigmask 0xe9696fcd +net/sunrpc/sunrpc rpc_clnt_sigunmask 0xeb8c005e +net/sunrpc/sunrpc rpc_clone_client 0x16f1278a +net/sunrpc/sunrpc rpc_create_client 0x964434fa +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0xa1b0fcc1 +net/sunrpc/sunrpc rpc_destroy_client 0x950214e8 +net/sunrpc/sunrpc rpc_execute 0xecfde104 +net/sunrpc/sunrpc rpc_init_task 0x30f99860 +net/sunrpc/sunrpc rpc_init_wait_queue 0x916aaa11 +net/sunrpc/sunrpc rpc_killall_tasks 0x8a002d97 +net/sunrpc/sunrpc rpc_max_payload 0x7384fbb9 +net/sunrpc/sunrpc rpc_mkpipe 0x17585aef +net/sunrpc/sunrpc rpc_new_child 0x6991399b +net/sunrpc/sunrpc rpc_new_client 0xe64bc605 +net/sunrpc/sunrpc rpc_new_task 0xf3393685 +net/sunrpc/sunrpc rpc_proc_register 0x45aa4c4f +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x25d803f7 +net/sunrpc/sunrpc rpc_release_client 0x9c2b92de +net/sunrpc/sunrpc rpc_release_task 0x9ee48594 +net/sunrpc/sunrpc rpc_restart_call 0xc32700bf +net/sunrpc/sunrpc rpc_run_child 0x053d0aa8 +net/sunrpc/sunrpc rpc_setbufsize 0x29903050 +net/sunrpc/sunrpc rpc_shutdown_client 0xb0d45ee4 +net/sunrpc/sunrpc rpc_sleep_on 0xc86c8807 +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0x6d71e3af +net/sunrpc/sunrpc rpc_wake_up_next 0xbc976adc +net/sunrpc/sunrpc rpc_wake_up_status 0xa5509e00 +net/sunrpc/sunrpc rpc_wake_up_task 0xc2b0f87b +net/sunrpc/sunrpc rpcauth_create 0x6c9bb3d4 +net/sunrpc/sunrpc rpcauth_free_credcache 0x6284e899 +net/sunrpc/sunrpc rpcauth_init_credcache 0xea22febf +net/sunrpc/sunrpc rpcauth_lookup_credcache 0x9a0ea0c3 +net/sunrpc/sunrpc rpcauth_lookupcred 0x01da718b +net/sunrpc/sunrpc rpcauth_register 0xc495ad86 +net/sunrpc/sunrpc rpcauth_unregister 0xdf7a2fdf +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x26322e7d +net/sunrpc/sunrpc svc_auth_unregister 0x0f668ba9 +net/sunrpc/sunrpc svc_authenticate 0x93f22041 +net/sunrpc/sunrpc svc_create 0x46a0e3e6 +net/sunrpc/sunrpc svc_create_thread 0x61fc9e9a +net/sunrpc/sunrpc svc_destroy 0x76f9a759 +net/sunrpc/sunrpc svc_drop 0xca5cb947 +net/sunrpc/sunrpc svc_exit_thread 0x6e91ad6e +net/sunrpc/sunrpc svc_makesock 0x43f37277 +net/sunrpc/sunrpc svc_proc_register 0x24367b5b +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0x9d3e3d42 +net/sunrpc/sunrpc svc_recv 0x47ce3a44 +net/sunrpc/sunrpc svc_reserve 0x3683d1e6 +net/sunrpc/sunrpc svc_seq_show 0x244b6973 +net/sunrpc/sunrpc svc_set_client 0xbec0126d +net/sunrpc/sunrpc svc_wake_up 0xe283537a +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x96946e44 +net/sunrpc/sunrpc xdr_buf_from_iov 0xcf7e9d0f +net/sunrpc/sunrpc xdr_buf_read_netobj 0x31305169 +net/sunrpc/sunrpc xdr_buf_subsegment 0x75902e5c +net/sunrpc/sunrpc xdr_decode_array2 0x021f38c2 +net/sunrpc/sunrpc xdr_decode_netobj 0x1be57115 +net/sunrpc/sunrpc xdr_decode_string 0x6755aa62 +net/sunrpc/sunrpc xdr_decode_string_inplace 0x7bd87272 +net/sunrpc/sunrpc xdr_decode_word 0x87d89ec6 +net/sunrpc/sunrpc xdr_encode_array2 0x7cab5552 +net/sunrpc/sunrpc xdr_encode_netobj 0x29c6f164 +net/sunrpc/sunrpc xdr_encode_opaque 0x0e9e79d5 +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0x587d494b +net/sunrpc/sunrpc xdr_encode_pages 0x27ef98e1 +net/sunrpc/sunrpc xdr_encode_string 0xabc0fe0c +net/sunrpc/sunrpc xdr_encode_word 0x90fb538d +net/sunrpc/sunrpc xdr_init_decode 0x29c9669e +net/sunrpc/sunrpc xdr_init_encode 0x2a5fa6f2 +net/sunrpc/sunrpc xdr_inline_decode 0x1b6906a2 +net/sunrpc/sunrpc xdr_inline_pages 0x6a37c65d +net/sunrpc/sunrpc xdr_read_pages 0xf27440be +net/sunrpc/sunrpc xdr_reserve_space 0xbff97fe0 +net/sunrpc/sunrpc xdr_shift_buf 0x2a16e775 +net/sunrpc/sunrpc xdr_write_pages 0xd427ffe4 +net/sunrpc/sunrpc xprt_create_proto 0xa6268090 +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x8ea05364 +net/wanrouter/wanrouter register_wan_device 0xe2452134 +net/wanrouter/wanrouter unlock_adapter_irq 0x696688b7 +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0x698677b7 +net/wanrouter/wanrouter wanrouter_type_trans 0xe5bb0436 +security/commoncap cap_bprm_apply_creds 0x57770f0f +security/commoncap cap_bprm_secureexec 0xfdda9f14 +security/commoncap cap_bprm_set_security 0x8b268557 +security/commoncap cap_capable 0x6c95f673 +security/commoncap cap_capget 0xaa85ee02 +security/commoncap cap_capset_check 0x8fd49bce +security/commoncap cap_capset_set 0xcc27c3d2 +security/commoncap cap_inode_removexattr 0xbf1409c4 +security/commoncap cap_inode_setxattr 0xe8a70801 +security/commoncap cap_netlink_recv 0x25114759 +security/commoncap cap_netlink_send 0x7beaf41f +security/commoncap cap_ptrace 0x251da880 +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x372390b2 +security/commoncap cap_task_reparent_to_init 0x2efdc0ec +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x76e0d868 +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x37fe3b4d +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0x555c0b7f +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0xad850599 +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x8ada0c52 +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x89947013 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x01f44bd1 +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0xd9f3a97a +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0x49d52b6a +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x14ecf456 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x5ff165f8 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0xc62dd2d4 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0x8584d516 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0xcd3a7775 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x20a6608e +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0x7d7fce56 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x5c9108a3 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x2b68e19a +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x27b4902e +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0xc4780079 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0x797b2662 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0x9d2936fd +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0xa9a0beb8 +sound/core/snd copy_from_user_toio 0x518bb7f8 +sound/core/snd copy_to_user_fromio 0xe243dde3 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0x29ff7d8c +sound/core/snd snd_card_file_add 0xd4a079d4 +sound/core/snd snd_card_file_remove 0x2ff96032 +sound/core/snd snd_card_free 0xed09275b +sound/core/snd snd_card_free_in_thread 0xbce09a40 +sound/core/snd snd_card_new 0xdc193f22 +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0xa924fbb3 +sound/core/snd snd_card_register 0xe33aa206 +sound/core/snd snd_card_set_generic_dev 0xa681a4a2 +sound/core/snd snd_card_set_generic_pm_callback 0x2a1eb19d +sound/core/snd snd_card_set_pm_callback 0x44cd958e +sound/core/snd snd_cards 0x9175d579 +sound/core/snd snd_component_add 0xedb09ff8 +sound/core/snd snd_ctl_add 0x546c8de8 +sound/core/snd snd_ctl_elem_read 0x3eaabf6b +sound/core/snd snd_ctl_elem_write 0xfe58a094 +sound/core/snd snd_ctl_find_id 0x3e0fb1cd +sound/core/snd snd_ctl_find_numid 0x7bf265d8 +sound/core/snd snd_ctl_free_one 0xb2d0640b +sound/core/snd snd_ctl_new 0x551a6bd0 +sound/core/snd snd_ctl_new1 0xede4154b +sound/core/snd snd_ctl_notify 0xe504c24b +sound/core/snd snd_ctl_register_ioctl 0xda281698 +sound/core/snd snd_ctl_register_ioctl_compat 0xb87ff9bc +sound/core/snd snd_ctl_remove 0x245ece40 +sound/core/snd snd_ctl_remove_id 0xb27c8830 +sound/core/snd snd_ctl_rename_id 0x2c063a41 +sound/core/snd snd_ctl_unregister_ioctl 0x0a59feee +sound/core/snd snd_ctl_unregister_ioctl_compat 0x2f36f5a4 +sound/core/snd snd_device_free 0x44c0f5c1 +sound/core/snd snd_device_new 0x7355b1be +sound/core/snd snd_device_register 0x489ecaaf +sound/core/snd snd_dma_disable 0x70c15ac1 +sound/core/snd snd_dma_pointer 0x191e88cf +sound/core/snd snd_dma_program 0x18e1683f +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0x0b18a089 +sound/core/snd snd_info_create_module_entry 0x10903cd8 +sound/core/snd snd_info_free_entry 0x10aa0d66 +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0xddebc64c +sound/core/snd snd_info_unregister 0x4275daae +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0x9e350d27 +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0x7127f1c1 +sound/core/snd snd_register_device 0x96b64bf1 +sound/core/snd snd_register_oss_device 0xdcf97428 +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0x405af763 +sound/core/snd snd_unregister_device 0x70f4eb12 +sound/core/snd snd_unregister_oss_device 0x260fa615 +sound/core/snd-hwdep snd_hwdep_new 0x0477a1d7 +sound/core/snd-page-alloc snd_dma_alloc_pages 0x76bbb550 +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0x24a12647 +sound/core/snd-page-alloc snd_dma_free_pages 0x3757f01e +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0x7d33b65d +sound/core/snd-page-alloc snd_dma_reserve_buf 0x9a9cc022 +sound/core/snd-page-alloc snd_free_pages 0x19cc2ce3 +sound/core/snd-page-alloc snd_malloc_pages 0xc6829020 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x65f0da5e +sound/core/snd-pcm snd_pcm_devices 0x336eb8e1 +sound/core/snd-pcm snd_pcm_format_big_endian 0x09d405a0 +sound/core/snd-pcm snd_pcm_format_linear 0x1d607209 +sound/core/snd-pcm snd_pcm_format_little_endian 0x11ee487f +sound/core/snd-pcm snd_pcm_format_name 0x77863ed3 +sound/core/snd-pcm snd_pcm_format_physical_width 0x32be712f +sound/core/snd-pcm snd_pcm_format_set_silence 0xfa4027da +sound/core/snd-pcm snd_pcm_format_signed 0x78967306 +sound/core/snd-pcm snd_pcm_format_silence_64 0x407a3719 +sound/core/snd-pcm snd_pcm_format_size 0xe8decdc0 +sound/core/snd-pcm snd_pcm_format_unsigned 0x0ff581cb +sound/core/snd-pcm snd_pcm_format_width 0xcfb8aa1b +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0xdc33db71 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0x6a2ba61a +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0x4f6903c3 +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x6471ae84 +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0xb354a031 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0xd3d99754 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x30da167b +sound/core/snd-pcm snd_pcm_hw_constraint_step 0xecab95be +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0x3fe30317 +sound/core/snd-pcm snd_pcm_hw_constraints_init 0x83dad698 +sound/core/snd-pcm snd_pcm_hw_param_first 0xdb1f01b1 +sound/core/snd-pcm snd_pcm_hw_param_last 0x21f58945 +sound/core/snd-pcm snd_pcm_hw_param_mask 0xb7b68bd3 +sound/core/snd-pcm snd_pcm_hw_param_near 0xda3ab36f +sound/core/snd-pcm snd_pcm_hw_param_set 0x177906cb +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0xdfbcc741 +sound/core/snd-pcm snd_pcm_hw_rule_add 0x00f53b2a +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0x05dcefe5 +sound/core/snd-pcm snd_pcm_kernel_ioctl 0x1776533c +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0xcf390c48 +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0xa2a407c0 +sound/core/snd-pcm snd_pcm_lib_free_pages 0x7545965a +sound/core/snd-pcm snd_pcm_lib_ioctl 0xce958f12 +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x9342236e +sound/core/snd-pcm snd_pcm_lib_mmap_iomem 0xaa0cc185 +sound/core/snd-pcm snd_pcm_lib_period_bytes 0x998a3027 +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0xd1306bfa +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0xf9dd7d30 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0xc1a61a6b +sound/core/snd-pcm snd_pcm_lib_read 0x9b660282 +sound/core/snd-pcm snd_pcm_lib_readv 0xb0937ce7 +sound/core/snd-pcm snd_pcm_lib_write 0x615cdbf2 +sound/core/snd-pcm snd_pcm_lib_writev 0x20368148 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x0c93e29e +sound/core/snd-pcm snd_pcm_link_rwlock 0xccfde388 +sound/core/snd-pcm snd_pcm_mmap_data 0x8da1f8e1 +sound/core/snd-pcm snd_pcm_new 0xd714006b +sound/core/snd-pcm snd_pcm_new_stream 0x8890aada +sound/core/snd-pcm snd_pcm_notify 0x1a592fac +sound/core/snd-pcm snd_pcm_open_substream 0x2e9177e1 +sound/core/snd-pcm snd_pcm_period_elapsed 0x8cda344a +sound/core/snd-pcm snd_pcm_release_substream 0x8170ea5d +sound/core/snd-pcm snd_pcm_set_ops 0xe5612575 +sound/core/snd-pcm snd_pcm_set_sync 0x3784a959 +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0x9daeb751 +sound/core/snd-pcm snd_pcm_stop 0x5d0c8270 +sound/core/snd-pcm snd_pcm_suspend 0x043d1be1 +sound/core/snd-pcm snd_pcm_suspend_all 0xed9b46f0 +sound/core/snd-rawmidi snd_rawmidi_drain_input 0xb3f58c0f +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x7c217376 +sound/core/snd-rawmidi snd_rawmidi_drop_output 0x689eb234 +sound/core/snd-rawmidi snd_rawmidi_info 0x4ca126d9 +sound/core/snd-rawmidi snd_rawmidi_info_select 0x8deeeea2 +sound/core/snd-rawmidi snd_rawmidi_input_params 0xadf6839a +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x571f9a8c +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0x94bd9f46 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0x839b4746 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0xf262562e +sound/core/snd-rawmidi snd_rawmidi_new 0xf5955e82 +sound/core/snd-rawmidi snd_rawmidi_output_params 0x5253ad78 +sound/core/snd-rawmidi snd_rawmidi_receive 0x0a210fab +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x224670ad +sound/core/snd-rawmidi snd_rawmidi_transmit 0xbe7951a9 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x83de01bf +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x09e485fc +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0x75c942fe +sound/core/snd-timer snd_timer_close 0xb4a69ba2 +sound/core/snd-timer snd_timer_continue 0xcd657b74 +sound/core/snd-timer snd_timer_global_free 0x3c8c6cfa +sound/core/snd-timer snd_timer_global_new 0xd6b04813 +sound/core/snd-timer snd_timer_global_register 0x72788518 +sound/core/snd-timer snd_timer_global_unregister 0x24281e69 +sound/core/snd-timer snd_timer_interrupt 0x7ca29f76 +sound/core/snd-timer snd_timer_new 0x18a4dacf +sound/core/snd-timer snd_timer_notify 0x26bfb756 +sound/core/snd-timer snd_timer_open 0x9ef3fb8a +sound/core/snd-timer snd_timer_pause 0x42a860fc +sound/core/snd-timer snd_timer_resolution 0x94ba2684 +sound/core/snd-timer snd_timer_start 0x9a82414f +sound/core/snd-timer snd_timer_stop 0x12d041a4 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0xc7a27071 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x7c23755e +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0xe48b9389 +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0xf5726864 +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0xabecd57f +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0x6e115302 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0x0b97ecd7 +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0xd00770b2 +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0x0424c0c7 +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x94b11183 +sound/drivers/vx/snd-vx-lib snd_vx_create 0x4508c48b +sound/drivers/vx/snd-vx-lib snd_vx_delay 0xd424b95b +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x76bc8187 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x68b1707f +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0x51778e12 +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x9feaa81d +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0x45572e7b +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0xc00e4719 +sound/i2c/other/snd-ak4114 snd_ak4114_build 0x515d24d7 +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0xcb36a6a9 +sound/i2c/other/snd-ak4114 snd_ak4114_create 0x07942a10 +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0x5daa9935 +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0x988ea61e +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0xdba33d8e +sound/i2c/other/snd-ak4117 snd_ak4117_build 0x060b0fb8 +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0x28e9390d +sound/i2c/other/snd-ak4117 snd_ak4117_create 0x8574fdbf +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x0aa6e258 +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0xe2aacfff +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0xce9f70dd +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0x2743877b +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0x160a5e2c +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0xca107dad +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0x9026c998 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0xc401d8ba +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0x7b7c436a +sound/i2c/snd-cs8427 snd_cs8427_create 0x2f8778d9 +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0x0d1a5474 +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0xb030e198 +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0x30b7288e +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0x3a0f7453 +sound/i2c/snd-cs8427 snd_cs8427_reset 0x99705535 +sound/i2c/snd-i2c snd_i2c_bus_create 0x1f73b8df +sound/i2c/snd-i2c snd_i2c_device_create 0xcbc5bcf9 +sound/i2c/snd-i2c snd_i2c_device_free 0x94f30766 +sound/i2c/snd-i2c snd_i2c_probeaddr 0x9dc57828 +sound/i2c/snd-i2c snd_i2c_readbytes 0x578216db +sound/i2c/snd-i2c snd_i2c_sendbytes 0x540a4e7c +sound/isa/sb/snd-sb-common snd_sbdsp_command 0x78522a4e +sound/isa/sb/snd-sb-common snd_sbdsp_create 0x3770cd74 +sound/isa/sb/snd-sb-common snd_sbdsp_get_byte 0xdcf89ac7 +sound/isa/sb/snd-sb-common snd_sbdsp_reset 0x1431a46e +sound/isa/sb/snd-sb-common snd_sbmixer_add_ctl 0x3cdaa41c +sound/isa/sb/snd-sb-common snd_sbmixer_new 0x8139c517 +sound/isa/sb/snd-sb-common snd_sbmixer_read 0x59a34722 +sound/isa/sb/snd-sb-common snd_sbmixer_write 0x7342ce26 +sound/oss/ac97_codec ac97_alloc_codec 0x3ff65ffe +sound/oss/ac97_codec ac97_probe_codec 0x0083452d +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0xa98a2a2b +sound/oss/ac97_codec ac97_release_codec 0x66042b4e +sound/oss/ac97_codec ac97_restore_state 0x4d8f7d81 +sound/oss/ac97_codec ac97_save_state 0xd0116496 +sound/oss/ac97_codec ac97_set_adc_rate 0x75ef9b04 +sound/oss/ac97_codec ac97_set_dac_rate 0x3f30b14e +sound/oss/ac97_codec ac97_tune_hardware 0x64d24aa3 +sound/oss/ac97_codec ac97_unregister_driver 0xfa32ee5d +sound/oss/aci aci_port 0x0d82adb6 +sound/oss/aci aci_rw_cmd 0xcc7c4cd8 +sound/oss/aci aci_version 0x93350c87 +sound/oss/ad1848 ad1848_control 0xc04f6f67 +sound/oss/ad1848 ad1848_detect 0x845a1638 +sound/oss/ad1848 ad1848_init 0x413d53c1 +sound/oss/ad1848 ad1848_unload 0x9bf1cc62 +sound/oss/ad1848 adintr 0x8597ce80 +sound/oss/ad1848 attach_ms_sound 0xda934843 +sound/oss/ad1848 probe_ms_sound 0x65e6d1ca +sound/oss/ad1848 unload_ms_sound 0xb29a9148 +sound/oss/mpu401 attach_mpu401 0x1157fd13 +sound/oss/mpu401 intchk_mpu401 0x5fe6dd42 +sound/oss/mpu401 mpuintr 0xa50172ee +sound/oss/mpu401 probe_mpu401 0x5c8d3e32 +sound/oss/mpu401 unload_mpu401 0x5febf284 +sound/oss/opl3 opl3_detect 0x67481767 +sound/oss/opl3 opl3_init 0xb000ae36 +sound/oss/sb_lib probe_sbmpu 0x88bd4775 +sound/oss/sb_lib sb_be_quiet 0x42424109 +sound/oss/sb_lib sb_dsp_detect 0xd8a2731c +sound/oss/sb_lib sb_dsp_init 0x8942d834 +sound/oss/sb_lib sb_dsp_unload 0xc4884969 +sound/oss/sb_lib smw_free 0x450f9aea +sound/oss/sb_lib unload_sbmpu 0x74afd69c +sound/oss/sound DMAbuf_close_dma 0xc88b42ab +sound/oss/sound DMAbuf_inputintr 0xeb315d99 +sound/oss/sound DMAbuf_open_dma 0x06b3013d +sound/oss/sound DMAbuf_outputintr 0x987bcf12 +sound/oss/sound DMAbuf_start_dma 0xe056b71c +sound/oss/sound MIDIbuf_avail 0x1f395686 +sound/oss/sound audio_devs 0x9e80306a +sound/oss/sound cent_tuning 0x03ce7ff7 +sound/oss/sound compute_finetune 0x04c87ec8 +sound/oss/sound conf_printf 0x0f280035 +sound/oss/sound conf_printf2 0x7bdf0907 +sound/oss/sound do_midi_msg 0xb51587f6 +sound/oss/sound load_mixer_volumes 0xa1d5f04f +sound/oss/sound midi_devs 0xa5a92a3e +sound/oss/sound midi_synth_aftertouch 0xf1ea8a20 +sound/oss/sound midi_synth_bender 0xba7dd041 +sound/oss/sound midi_synth_close 0xad45df73 +sound/oss/sound midi_synth_controller 0x892093e0 +sound/oss/sound midi_synth_hw_control 0xb14b22cd +sound/oss/sound midi_synth_ioctl 0xaef743b2 +sound/oss/sound midi_synth_kill_note 0x2aa31695 +sound/oss/sound midi_synth_load_patch 0xf7426da3 +sound/oss/sound midi_synth_open 0xf6b3a2fb +sound/oss/sound midi_synth_panning 0xdb400afa +sound/oss/sound midi_synth_reset 0x56504ca2 +sound/oss/sound midi_synth_send_sysex 0xfddcbfb3 +sound/oss/sound midi_synth_set_instr 0xd85be938 +sound/oss/sound midi_synth_setup_voice 0x4ff47e9d +sound/oss/sound midi_synth_start_note 0x9bdaf24d +sound/oss/sound mixer_devs 0x158a6c73 +sound/oss/sound note_to_freq 0x5d986fc9 +sound/oss/sound num_audiodevs 0x4cd01bdd +sound/oss/sound num_midis 0xa1eae7cf +sound/oss/sound num_mixers 0x9d845b18 +sound/oss/sound semitone_tuning 0x8b84aeb1 +sound/oss/sound seq_copy_to_input 0x7679ee76 +sound/oss/sound seq_input_event 0x17ba231d +sound/oss/sound sequencer_init 0xf78f6363 +sound/oss/sound sequencer_timer 0x90bd9714 +sound/oss/sound sound_alloc_dma 0x9a95733f +sound/oss/sound sound_alloc_mididev 0xba413f87 +sound/oss/sound sound_alloc_mixerdev 0x1b3df3cf +sound/oss/sound sound_alloc_synthdev 0xc748d109 +sound/oss/sound sound_alloc_timerdev 0x51e354b2 +sound/oss/sound sound_close_dma 0x418f5fbe +sound/oss/sound sound_free_dma 0x394cb088 +sound/oss/sound sound_install_audiodrv 0x316a77a4 +sound/oss/sound sound_install_mixer 0x42221710 +sound/oss/sound sound_open_dma 0xcc4b8797 +sound/oss/sound sound_timer_devs 0xc0d08023 +sound/oss/sound sound_timer_init 0x2161d5e8 +sound/oss/sound sound_timer_interrupt 0xe2675a79 +sound/oss/sound sound_timer_syncinterval 0xfa6871be +sound/oss/sound sound_unload_audiodev 0xa948751e +sound/oss/sound sound_unload_mididev 0xa6bb414c +sound/oss/sound sound_unload_mixerdev 0xa51c913b +sound/oss/sound sound_unload_synthdev 0x06339815 +sound/oss/sound sound_unload_timerdev 0xa41ead5f +sound/oss/sound synth_devs 0xf220d4cd +sound/oss/uart401 probe_uart401 0xe9011fb8 +sound/oss/uart401 uart401intr 0x6bc2a656 +sound/oss/uart401 unload_uart401 0xecfdd9c9 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0xe29b12d4 +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0x7b842572 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0xd8ba2bfc +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0x9470d1cd +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0xb71b0fa8 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0xd132c9c3 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x4a8cb908 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0x9b1ee8c1 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0x76505c9e +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0x8a61cbd3 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0x507794eb +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0xfc8584ec +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x15f2c784 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0x3d35ffce +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0xd95a9e80 +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0x57234338 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0x3b66e82c +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0x51499e80 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0xbdafb05d +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x9dcc2799 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0xc9c68d9f +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0xecb87273 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0x0fa2d182 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0xe588f5c9 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0xfb1c6872 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0xb465eec9 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0x784e8626 +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0xb46a8c11 +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0xef2c8ba9 +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0xdfbf0529 +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0x3b4ca946 +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0x2969f212 +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0x73bd6798 +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x9747fc0c +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0x3194eca0 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0x9331c74f +sound/pci/hda/snd-hda-codec snd_hda_resume 0x4361c5b2 +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0xaeec4b68 +sound/pci/hda/snd-hda-codec snd_hda_suspend 0xdd5ac078 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0xd580a057 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0x78382aaa +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0xf5ee40ba +sound/pci/trident/snd-trident snd_trident_alloc_voice 0x2a7e43d1 +sound/pci/trident/snd-trident snd_trident_free_voice 0x8931f6c0 +sound/pci/trident/snd-trident snd_trident_start_voice 0x514ef672 +sound/pci/trident/snd-trident snd_trident_stop_voice 0x76d0b5c0 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0xd37688ad +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0x09863cb9 +sound/pci/trident/snd-trident snd_trident_synth_free 0x8bbd5650 +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0x704301cf +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0xdb7c0e06 +sound/soundcore register_sound_midi 0xb7ca6af3 +sound/soundcore register_sound_mixer 0x86fcbacf +sound/soundcore register_sound_special 0xef0e8221 +sound/soundcore register_sound_special_device 0x1d75aeb9 +sound/soundcore register_sound_synth 0x56dfbea6 +sound/soundcore sound_class 0x7f3e3df3 +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +sound/synth/emux/snd-emux-synth snd_emux_free 0x6725d31f +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0xd336bf18 +sound/synth/emux/snd-emux-synth snd_emux_new 0xa2db5973 +sound/synth/emux/snd-emux-synth snd_emux_register 0xbbd7ffe5 +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0x9ea69b24 +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0xf2c3d1ea +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0x6171d7ba +sound/synth/snd-util-mem __snd_util_mem_free 0x7a0b8574 +sound/synth/snd-util-mem __snd_util_memblk_new 0x2a4ac4a9 +sound/synth/snd-util-mem snd_util_mem_alloc 0x455af10e +sound/synth/snd-util-mem snd_util_mem_avail 0xbdc114ea +sound/synth/snd-util-mem snd_util_mem_free 0x3ea14434 +sound/synth/snd-util-mem snd_util_memhdr_free 0xff01f382 +sound/synth/snd-util-mem snd_util_memhdr_new 0x66da5b73 +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0x08ae1d24 +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux DAC1064_global_init 0x11bcbf24 +vmlinux DAC1064_global_restore 0xf33cba74 +vmlinux I_BDEV 0xd9e1890c +vmlinux SELECT_DRIVE 0xcdfd8d47 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0x9d04e1cd +vmlinux __alloc_pages 0x8d3142fd +vmlinux __alloc_percpu 0x55f2580b +vmlinux __alloc_skb 0xb7336082 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0x03f078de +vmlinux __bio_clone 0x7a4f7a4a +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0xd98bda9b +vmlinux __bread 0x029060dd +vmlinux __breadahead 0xe0479598 +vmlinux __break_lease 0xfbf5046b +vmlinux __brelse 0x59594fc4 +vmlinux __check_region 0xf1d0cdab +vmlinux __clear_user 0xf3341268 +vmlinux __copy_tofrom_user 0x461ebfa0 +vmlinux __cpufreq_driver_target 0x81272d64 +vmlinux __create_workqueue 0x5d91d268 +vmlinux __d_path 0x425429ef +vmlinux __delay 0x466c14a7 +vmlinux __dev_get_by_index 0x8920c716 +vmlinux __dev_get_by_name 0x0fa55fb1 +vmlinux __dev_remove_pack 0x7c7c3e22 +vmlinux __down 0x32058a66 +vmlinux __down_interruptible 0x4b2cb78b +vmlinux __dst_free 0x01d77f4b +vmlinux __elv_add_request 0x5e710def +vmlinux __find_get_block 0x21b350ef +vmlinux __flush_icache_range 0xe2e0c7c6 +vmlinux __free_pages 0x1292ebe2 +vmlinux __generic_file_aio_read 0x1f0f6c5d +vmlinux __generic_unplug_device 0x2ef032ce +vmlinux __get_free_pages 0x93fca811 +vmlinux __getblk 0x4e5f22aa +vmlinux __ide_abort 0xcda3e0e5 +vmlinux __ide_dma_bad_drive 0x959de198 +vmlinux __ide_dma_check 0xc95c4c75 +vmlinux __ide_dma_end 0xc34ba9a2 +vmlinux __ide_dma_good_drive 0x8f5c2b2d +vmlinux __ide_dma_host_off 0xf44cbbf8 +vmlinux __ide_dma_host_on 0xe0a0d6d2 +vmlinux __ide_dma_lostirq 0xc2d077fe +vmlinux __ide_dma_off 0xc567ea5e +vmlinux __ide_dma_off_quietly 0xb10cb269 +vmlinux __ide_dma_on 0xa57f9f7c +vmlinux __ide_dma_timeout 0xe7360432 +vmlinux __ide_end_request 0xf4c64875 +vmlinux __ide_error 0x6c1b28af +vmlinux __ide_pci_register_driver 0x7c16b7ba +vmlinux __inet_lookup_listener 0x1059db34 +vmlinux __inet_twsk_hashdance 0x56f41430 +vmlinux __inet_twsk_kill 0xe7fa2677 +vmlinux __init_timer_base 0x049a5196 +vmlinux __inode_dir_notify 0xa740f671 +vmlinux __insert_inode_hash 0x6206d92f +vmlinux __invalidate_device 0x1a4700e7 +vmlinux __ioremap 0x9eac042a +vmlinux __ip_route_output_key 0x45acfb4a +vmlinux __ip_select_ident 0x51415e69 +vmlinux __kfifo_get 0x07527e0d +vmlinux __kfifo_put 0x7c775173 +vmlinux __kfree_skb 0xb92480a3 +vmlinux __kill_fasync 0x211a0dfc +vmlinux __kmalloc 0x5a34a45c +vmlinux __lock_buffer 0xc6b93466 +vmlinux __lock_page 0x8347ecdf +vmlinux __mark_inode_dirty 0xf3c9cf36 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xbffc0a90 +vmlinux __module_put_and_exit 0xad06587b +vmlinux __neigh_event_send 0x696f2ee2 +vmlinux __neigh_for_each_release 0x5679cc81 +vmlinux __net_timestamp 0x8ca1f1d9 +vmlinux __netdev_watchdog_up 0x9dc8bc35 +vmlinux __nla_put 0x74bc53c3 +vmlinux __nla_reserve 0xbc31f878 +vmlinux __page_cache_release 0x72b79e80 +vmlinux __pagevec_lru_add 0x823fab84 +vmlinux __pagevec_release 0x0c71e73f +vmlinux __pci_register_driver 0x08b5a944 +vmlinux __per_cpu_offset 0x341dbfa3 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0x0cef3adc +vmlinux __raw_spin_unlock_wait 0x801d66cb +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0xb850433a +vmlinux __scm_destroy 0xcf55919d +vmlinux __scm_send 0xd89c2702 +vmlinux __secpath_destroy 0x0d319da5 +vmlinux __serio_register_driver 0x6f499d74 +vmlinux __serio_register_port 0x756ef253 +vmlinux __serio_unregister_port_delayed 0xbddc743c +vmlinux __set_page_dirty_buffers 0x4f256d72 +vmlinux __set_page_dirty_nobuffers 0x2bfa9155 +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x9ad007be +vmlinux __skb_checksum_complete 0xa34bff1c +vmlinux __skb_linearize 0xb6c01876 +vmlinux __strncpy_from_user 0x801f5a3f +vmlinux __strnlen_user 0xcf901697 +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x267fc65b +vmlinux __tasklet_schedule 0xf397b9aa +vmlinux __tcf_em_tree_match 0xa8a01467 +vmlinux __up 0xb6966575 +vmlinux __user_walk 0x58b2ddd1 +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x26477c07 +vmlinux __vmalloc_node 0xffe71055 +vmlinux __wait_on_bit 0xb2ba62b5 +vmlinux __wait_on_bit_lock 0x80428c80 +vmlinux __wait_on_buffer 0x98cf2601 +vmlinux __wake_up 0xdb09708f +vmlinux __wake_up_bit 0x5315f750 +vmlinux __wake_up_sync 0xf4488540 +vmlinux __xfrm_policy_check 0x1fd513e7 +vmlinux __xfrm_policy_destroy 0xcc6f22ff +vmlinux __xfrm_route_forward 0xc389e507 +vmlinux __xfrm_state_destroy 0xc8b1808f +vmlinux _atomic_dec_and_lock 0x16250200 +vmlinux _ctype 0x8d3894f2 +vmlinux _insb 0xe9dd3999 +vmlinux _insl 0x3f826b33 +vmlinux _insl_ns 0x05bbde85 +vmlinux _insw 0x1933b437 +vmlinux _insw_ns 0x7e30bd26 +vmlinux _machine 0x8db2d7ee +vmlinux _outsb 0x1b52cb9e +vmlinux _outsl 0xfb6c33cb +vmlinux _outsl_ns 0xd890cca4 +vmlinux _outsw 0xe5032325 +vmlinux _outsw_ns 0x1ae3105d +vmlinux _read_lock 0x15ed95d3 +vmlinux _read_lock_bh 0x4b17de47 +vmlinux _read_lock_irq 0xa922f240 +vmlinux _read_lock_irqsave 0x0985da55 +vmlinux _read_trylock 0xd69ebc51 +vmlinux _read_unlock 0xa0e44065 +vmlinux _read_unlock_bh 0x0f57d5ae +vmlinux _read_unlock_irq 0x70b0e897 +vmlinux _read_unlock_irqrestore 0x50b15c53 +vmlinux _spin_lock 0x429328d9 +vmlinux _spin_lock_bh 0x8bcc3a3a +vmlinux _spin_lock_irq 0x6220b988 +vmlinux _spin_lock_irqsave 0xdd5a37a7 +vmlinux _spin_trylock 0x3922d605 +vmlinux _spin_trylock_bh 0x3906b93c +vmlinux _spin_unlock 0x01e9f0ee +vmlinux _spin_unlock_bh 0x53d91e59 +vmlinux _spin_unlock_irq 0xb6439c4e +vmlinux _spin_unlock_irqrestore 0x0df15005 +vmlinux _write_lock 0xdde25489 +vmlinux _write_lock_bh 0x68628e77 +vmlinux _write_lock_irq 0x8fd8b7bc +vmlinux _write_lock_irqsave 0x11a41041 +vmlinux _write_trylock 0x989d4082 +vmlinux _write_unlock 0x0cd3cf92 +vmlinux _write_unlock_bh 0xbb7a91dc +vmlinux _write_unlock_irq 0xce0fd5c3 +vmlinux _write_unlock_irqrestore 0xad4ebe22 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0x0db2ac84 +vmlinux add_disk_randomness 0x885ae53e +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0xb1426c26 +vmlinux add_wait_queue 0x6989875b +vmlinux add_wait_queue_exclusive 0x33b3949a +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0x3188e7ec +vmlinux aio_put_req 0x93ac15f9 +vmlinux alloc_buffer_head 0x0da21e17 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0x3967e0a1 +vmlinux alloc_disk_node 0x00bff809 +vmlinux alloc_etherdev 0xee6d5e96 +vmlinux alloc_fcdev 0x6d84cfac +vmlinux alloc_fddidev 0x82de4de9 +vmlinux alloc_hippi_dev 0x4867760a +vmlinux alloc_netdev 0x68c18296 +vmlinux alloc_page_buffers 0xcef8cb2f +vmlinux alloc_pages_current 0x030c8b20 +vmlinux alloc_trdev 0x83c94832 +vmlinux alloc_tty_driver 0xb5ca0df3 +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0x647c2fce +vmlinux anon_transport_class_unregister 0xa520da1c +vmlinux arp_broken_ops 0xd8a94abe +vmlinux arp_create 0xc5dc79c3 +vmlinux arp_find 0xad00066f +vmlinux arp_rcv 0x7969b04a +vmlinux arp_send 0xf3ac55c3 +vmlinux arp_tbl 0xf08cbfad +vmlinux arp_xmit 0x27402e88 +vmlinux atm_alloc_charge 0xce474b09 +vmlinux atm_charge 0x0a645ee6 +vmlinux atm_dev_deregister 0x3c2ba512 +vmlinux atm_dev_lookup 0x8c675798 +vmlinux atm_dev_register 0x099df991 +vmlinux atm_init_aal5 0x27ce4c79 +vmlinux atm_pcr_goal 0xf49bc67a +vmlinux atm_proc_root 0xc76422a8 +vmlinux attribute_container_add_attrs 0x608017cf +vmlinux attribute_container_add_class_device 0xf33223da +vmlinux attribute_container_add_class_device_adapter 0x29df4c10 +vmlinux attribute_container_class_device_del 0x006f5c9d +vmlinux attribute_container_classdev_to_container 0x8b5bc5c7 +vmlinux attribute_container_device_trigger 0x2665d78a +vmlinux attribute_container_find_class_device 0xa94e93e0 +vmlinux attribute_container_register 0x0e0796a1 +vmlinux attribute_container_remove_attrs 0x59d0cb09 +vmlinux attribute_container_remove_device 0x694f0ef0 +vmlinux attribute_container_trigger 0xcaaa6d8c +vmlinux attribute_container_unregister 0x029db8e6 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x6c2ffa75 +vmlinux bd_claim 0x1732f4f1 +vmlinux bd_release 0x3da05c72 +vmlinux bd_set_size 0xadceb654 +vmlinux bdev_read_only 0xe946fcbb +vmlinux bdevname 0x2833dd53 +vmlinux bdget 0x61dbdfaa +vmlinux bdput 0x2a67387a +vmlinux bfifo_qdisc_ops 0xc39afed8 +vmlinux bio_add_page 0x7c688ac0 +vmlinux bio_alloc 0xb98531ae +vmlinux bio_alloc_bioset 0xdeecccf9 +vmlinux bio_clone 0xc9ca6598 +vmlinux bio_copy_user 0x06dcd9e6 +vmlinux bio_endio 0x76032b4c +vmlinux bio_free 0x7d380add +vmlinux bio_get_nr_vecs 0xa751732e +vmlinux bio_hw_segments 0x1878c618 +vmlinux bio_init 0x9a1502df +vmlinux bio_map_kern 0x80790632 +vmlinux bio_map_user 0x757507f6 +vmlinux bio_pair_release 0x2e99c655 +vmlinux bio_phys_segments 0xb5ea792a +vmlinux bio_put 0x7ca7cce6 +vmlinux bio_split 0xa264c453 +vmlinux bio_split_pool 0x2146f99f +vmlinux bio_uncopy_user 0x01875656 +vmlinux bio_unmap_user 0xcf4cc670 +vmlinux bioset_create 0x68c208d9 +vmlinux bioset_free 0x35146399 +vmlinux bit_waitqueue 0xcb7bc48a +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0xe779b9ed +vmlinux blk_alloc_queue_node 0xa6286a00 +vmlinux blk_cleanup_queue 0xe06f6e59 +vmlinux blk_complete_barrier_rq 0xed0243d2 +vmlinux blk_complete_barrier_rq_locked 0x9b13ff29 +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x3141d043 +vmlinux blk_end_sync_rq 0x23d9a2fb +vmlinux blk_execute_rq 0x6d0dc01a +vmlinux blk_get_backing_dev_info 0x613c8f23 +vmlinux blk_get_queue 0x211967d4 +vmlinux blk_get_request 0x9fccbe5f +vmlinux blk_init_queue 0x83783946 +vmlinux blk_init_queue_node 0x585a48ed +vmlinux blk_insert_request 0xf83fe000 +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0x9cb6f6ad +vmlinux blk_put_request 0xb2bc494c +vmlinux blk_queue_activity_fn 0xdc94c18f +vmlinux blk_queue_bounce 0x2301de58 +vmlinux blk_queue_bounce_limit 0x1ea895ee +vmlinux blk_queue_dma_alignment 0x99da02d4 +vmlinux blk_queue_end_tag 0x06a79e9d +vmlinux blk_queue_find_tag 0x5583028b +vmlinux blk_queue_free_tags 0xd8a935ef +vmlinux blk_queue_hardsect_size 0x42490634 +vmlinux blk_queue_init_tags 0x6a9a2ac7 +vmlinux blk_queue_invalidate_tags 0xd43ca262 +vmlinux blk_queue_issue_flush_fn 0xb2f4cacc +vmlinux blk_queue_make_request 0x269353a6 +vmlinux blk_queue_max_hw_segments 0x1f3b1c0e +vmlinux blk_queue_max_phys_segments 0xf087f4af +vmlinux blk_queue_max_sectors 0xe0a09728 +vmlinux blk_queue_max_segment_size 0xcd17cf49 +vmlinux blk_queue_merge_bvec 0x81bff923 +vmlinux blk_queue_ordered 0x8085fafa +vmlinux blk_queue_prep_rq 0x7b72468c +vmlinux blk_queue_resize_tags 0x54bdde95 +vmlinux blk_queue_segment_boundary 0xc01e67c4 +vmlinux blk_queue_stack_limits 0x5caa8fa9 +vmlinux blk_queue_start_tag 0x9b5d3e4f +vmlinux blk_register_region 0x7dfc5fb0 +vmlinux blk_remove_plug 0xbf128eba +vmlinux blk_requeue_request 0xa7724e17 +vmlinux blk_rq_bio_prep 0x714d8a82 +vmlinux blk_rq_map_kern 0xbf581d16 +vmlinux blk_rq_map_sg 0x642dad92 +vmlinux blk_rq_map_user 0xaf6b5378 +vmlinux blk_rq_map_user_iov 0x96f8c7de +vmlinux blk_rq_unmap_user 0xe4d2cbc6 +vmlinux blk_run_queue 0xedd236b6 +vmlinux blk_start_queue 0x21472fe3 +vmlinux blk_stop_queue 0x4c9c9a9a +vmlinux blk_sync_queue 0xc590d306 +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0xcb2133e4 +vmlinux blkdev_ioctl 0xa9ad8ea7 +vmlinux blkdev_issue_flush 0xd3ec968c +vmlinux blkdev_put 0xe098935e +vmlinux block_all_signals 0xc74785b2 +vmlinux block_commit_write 0x5ef00e0d +vmlinux block_invalidatepage 0x20802692 +vmlinux block_prepare_write 0xc77a05d6 +vmlinux block_read_full_page 0x66f49872 +vmlinux block_sync_page 0x29dc4e0c +vmlinux block_truncate_page 0x2860a858 +vmlinux block_write_full_page 0x1fb1365d +vmlinux bmap 0xdc9fd6b7 +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0xd00b7a4d +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0xa21db427 +vmlinux bus_create_file 0x5859e771 +vmlinux bus_find_device 0xf152f6e5 +vmlinux bus_for_each_dev 0x649d48f9 +vmlinux bus_for_each_drv 0x9b13ab4a +vmlinux bus_register 0x288d9d69 +vmlinux bus_remove_device 0xd0960cfb +vmlinux bus_remove_file 0xd5a0a91f +vmlinux bus_rescan_devices 0x34ba1b78 +vmlinux bus_unregister 0x54de824a +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x0e93284c +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0xaa987de9 +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0xd44693a5 +vmlinux cdev_alloc 0xde72ac8b +vmlinux cdev_del 0xd1a768c4 +vmlinux cdev_init 0x06116f6b +vmlinux cfb_copyarea 0x0d9bb7db +vmlinux cfb_fillrect 0xf2000452 +vmlinux cfb_imageblit 0xeef250e7 +vmlinux check_disk_change 0xf85af664 +vmlinux check_legacy_ioport 0x371d2130 +vmlinux class_create 0x90f376ce +vmlinux class_create_file 0xd831fb44 +vmlinux class_destroy 0x7f0c77d7 +vmlinux class_device_add 0x485ce9b3 +vmlinux class_device_create 0xba8df89b +vmlinux class_device_create_bin_file 0x977205d1 +vmlinux class_device_create_file 0x32fb5e1a +vmlinux class_device_del 0xbc62f21e +vmlinux class_device_destroy 0x89284d25 +vmlinux class_device_get 0x3dca95a3 +vmlinux class_device_initialize 0xbd4f51eb +vmlinux class_device_put 0xd0c65584 +vmlinux class_device_register 0x84de86be +vmlinux class_device_remove_bin_file 0x28bc145f +vmlinux class_device_remove_file 0x5f22810c +vmlinux class_device_unregister 0x568bc785 +vmlinux class_get 0x8c128258 +vmlinux class_interface_register 0x81d55d7e +vmlinux class_interface_unregister 0x4fe5f175 +vmlinux class_put 0x23fd1d33 +vmlinux class_register 0xfee7278e +vmlinux class_remove_file 0x5917a5b2 +vmlinux class_unregister 0x756b59ff +vmlinux clear_inode 0xb2db76b9 +vmlinux clear_page_dirty_for_io 0xfaff5bfb +vmlinux clear_user_page 0x642113d2 +vmlinux clip_tbl_hook 0x8e77c07d +vmlinux close_bdev_excl 0x2df5dbda +vmlinux color_table 0xf6bb4729 +vmlinux complete 0x2581543c +vmlinux complete_all 0xa2d4c119 +vmlinux complete_and_exit 0xfd59d987 +vmlinux compute_creds 0x510e0b6e +vmlinux con_copy_unimap 0xaf715909 +vmlinux con_set_default_unimap 0x131a31c7 +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0x5f0c5570 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0x0b5429c4 +vmlinux console_stop 0xc138f95f +vmlinux cont_prepare_write 0x694f3aba +vmlinux copy_from_user 0x0d6c963c +vmlinux copy_fs_struct 0x5a555abc +vmlinux copy_in_user 0x8d944cbb +vmlinux copy_io_context 0x8887bde8 +vmlinux copy_strings_kernel 0x570525e9 +vmlinux copy_to_user 0x2f287f0d +vmlinux cpu_online_map 0x40123643 +vmlinux cpu_possible_map 0x9270ab00 +vmlinux cpu_present_map 0x1d0c77e9 +vmlinux cpu_sysdev_class 0xa2a58a7c +vmlinux cpufreq_cpu_get 0xbf59b9a7 +vmlinux cpufreq_cpu_put 0x1c0e45ec +vmlinux cpufreq_driver_target 0x61c006f8 +vmlinux cpufreq_freq_attr_scaling_available_freqs 0x03c1f00e +vmlinux cpufreq_frequency_get_table 0x2f47d8c7 +vmlinux cpufreq_frequency_table_cpuinfo 0x78c74320 +vmlinux cpufreq_frequency_table_get_attr 0x706b3a33 +vmlinux cpufreq_frequency_table_put_attr 0x7ae1ae8e +vmlinux cpufreq_frequency_table_target 0x86fb5ad0 +vmlinux cpufreq_frequency_table_verify 0x27802235 +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0x2e031684 +vmlinux cpufreq_gov_performance 0xd5f1bbce +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0xe6488b47 +vmlinux cpufreq_parse_governor 0x1a4acb19 +vmlinux cpufreq_register_driver 0xe85210a3 +vmlinux cpufreq_register_governor 0x26b11f8a +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0x3f281134 +vmlinux cpufreq_unregister_driver 0x6064f568 +vmlinux cpufreq_unregister_governor 0x31fff707 +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0xc09651d9 +vmlinux crc32_le 0x92ea4ae4 +vmlinux create_empty_buffers 0x4340ad97 +vmlinux create_proc_entry 0xf8f77a36 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0xfdd79654 +vmlinux crypto_free_tfm 0xbdb921b5 +vmlinux crypto_hmac 0xae60ae07 +vmlinux crypto_hmac_final 0x10cf601f +vmlinux crypto_hmac_init 0xa46b813c +vmlinux crypto_hmac_update 0x301cd55d +vmlinux crypto_register_alg 0x9bb186de +vmlinux crypto_unregister_alg 0xe8ad9055 +vmlinux csum_partial 0x94095c16 +vmlinux csum_partial_copy_fromiovecend 0x883c8eca +vmlinux csum_partial_copy_generic 0xc107c326 +vmlinux csum_tcpudp_magic 0x12d43649 +vmlinux cur_cpu_spec 0xbc212236 +vmlinux current_fs_time 0x9ad19554 +vmlinux current_io_context 0x2e51170a +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0x50971a38 +vmlinux d_alloc_anon 0x4969bf6b +vmlinux d_alloc_name 0xde5251e8 +vmlinux d_alloc_root 0x7fbd994d +vmlinux d_delete 0xaea772e4 +vmlinux d_find_alias 0x2b9cd58a +vmlinux d_genocide 0x22053cd2 +vmlinux d_instantiate 0x2a3c70ec +vmlinux d_instantiate_unique 0x730ddd80 +vmlinux d_invalidate 0x56a43124 +vmlinux d_lookup 0x277702f1 +vmlinux d_move 0x5b5fa762 +vmlinux d_path 0xe3ed2b3f +vmlinux d_prune_aliases 0x387aad30 +vmlinux d_rehash 0xef410221 +vmlinux d_splice_alias 0x778be8cf +vmlinux d_validate 0x4635d348 +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0x7132bd21 +vmlinux dcache_dir_close 0x959cfeba +vmlinux dcache_dir_lseek 0x8bad75c5 +vmlinux dcache_dir_open 0xd5768c7e +vmlinux dcache_lock 0x179ec4b8 +vmlinux dcache_readdir 0x9c3aa298 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0xcca5110d +vmlinux default_backing_dev_info 0x206d75ea +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0x7eabf756 +vmlinux default_llseek 0x6df87a80 +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0xeb93c97d +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0xb5bfe6cd +vmlinux del_timer 0x5943d3e7 +vmlinux del_timer_sync 0x594eac68 +vmlinux dentry_open 0xd2911aab +vmlinux dentry_unhash 0x74a53557 +vmlinux dequeue_signal 0xd5964966 +vmlinux deregister_atm_ioctl 0xc2ab451e +vmlinux destroy_8023_client 0x7a669ff7 +vmlinux destroy_EII_client 0xf7b20a32 +vmlinux destroy_workqueue 0xf3e49cc8 +vmlinux dev_add_pack 0xf9931e04 +vmlinux dev_alloc_name 0x4df8fcf5 +vmlinux dev_base 0xf85c5a71 +vmlinux dev_base_lock 0xc1ba49a9 +vmlinux dev_change_flags 0x0ab01c1b +vmlinux dev_close 0x7e8282b5 +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0xddb788e1 +vmlinux dev_get_by_index 0x746f1cf0 +vmlinux dev_get_by_name 0xad7408bd +vmlinux dev_get_flags 0xc76c1c8e +vmlinux dev_getbyhwaddr 0xc6d9bb00 +vmlinux dev_getfirstbyhwtype 0xa9ce4209 +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0x7ca1615f +vmlinux dev_mc_delete 0x2caf9958 +vmlinux dev_mc_upload 0x0a926d72 +vmlinux dev_open 0x4b4d5973 +vmlinux dev_queue_xmit 0x46295a87 +vmlinux dev_remove_pack 0x614f74fd +vmlinux dev_set_allmulti 0x7142bb44 +vmlinux dev_set_mac_address 0x741b963a +vmlinux dev_set_mtu 0x52fe43d2 +vmlinux dev_set_promiscuity 0x5efe3526 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0x8c841722 +vmlinux device_attach 0x1d82fbe2 +vmlinux device_bind_driver 0x9b0131e7 +vmlinux device_create_file 0xa4f157b4 +vmlinux device_del 0x93ead658 +vmlinux device_for_each_child 0xf5214e36 +vmlinux device_initialize 0x024aedfe +vmlinux device_is_compatible 0xf8071f7a +vmlinux device_pm_set_parent 0x70d34ba8 +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0x03196728 +vmlinux device_release_driver 0xe0a59ac0 +vmlinux device_remove_file 0x7eea4ccd +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0x584c1ab9 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0x4f1be58f +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_alloc_coherent 0xf334092b +vmlinux dma_free_coherent 0x992b22f3 +vmlinux dma_get_required_mask 0x6c87f190 +vmlinux dma_map_page 0x2d672bc3 +vmlinux dma_map_sg 0x05f4ab3b +vmlinux dma_map_single 0x82551720 +vmlinux dma_pool_alloc 0xafaea613 +vmlinux dma_pool_create 0xe6c217d7 +vmlinux dma_pool_destroy 0x2bc0482a +vmlinux dma_pool_free 0x399ee6b9 +vmlinux dma_set_mask 0xa4337d89 +vmlinux dma_spin_lock 0x028d62f7 +vmlinux dma_supported 0x2bce7c87 +vmlinux dma_unmap_page 0x01d40dba +vmlinux dma_unmap_sg 0x2e61cef1 +vmlinux dma_unmap_single 0x2f8e3544 +vmlinux dnotify_parent 0x4c7cd8bd +vmlinux do_SAK 0x923a8915 +vmlinux do_add_mount 0xf3c41348 +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0x4d683750 +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0xec22b5b2 +vmlinux do_mmap_pgoff 0x53b2c567 +vmlinux do_munmap 0x34196fe4 +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x1b2b7dd4 +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_signal 0x2c01f83a +vmlinux do_softirq 0x27cbbea7 +vmlinux do_sync_read 0xce67ab16 +vmlinux do_sync_write 0x3f277d20 +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0x390e7b3f +vmlinux dput 0x4af52d38 +vmlinux dq_data_lock 0x22ca4cc3 +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x52838a9a +vmlinux dquot_alloc_inode 0x8d442ef5 +vmlinux dquot_alloc_space 0xf1aefeed +vmlinux dquot_commit 0xb34f5646 +vmlinux dquot_commit_info 0xdf5a7369 +vmlinux dquot_drop 0xba02bed3 +vmlinux dquot_free_inode 0x27a27e19 +vmlinux dquot_free_space 0x188f374f +vmlinux dquot_initialize 0xad0f38b3 +vmlinux dquot_mark_dquot_dirty 0x3b35beab +vmlinux dquot_release 0xeec8e0b3 +vmlinux dquot_transfer 0x4d9df20c +vmlinux drive_is_ready 0xa8981f40 +vmlinux driver_attach 0x47aaf4f6 +vmlinux driver_create_file 0xe599c74e +vmlinux driver_find 0x70e3142a +vmlinux driver_find_device 0x2bf9a5bf +vmlinux driver_for_each_device 0x4fbc25b0 +vmlinux driver_register 0xacf24bae +vmlinux driver_remove_file 0xaba15f80 +vmlinux driver_unregister 0xc7a907f5 +vmlinux drop_super 0xe0afe0db +vmlinux dst_alloc 0xef9547e9 +vmlinux dst_destroy 0xd94099c6 +vmlinux dump_stack 0x6b2dc060 +vmlinux eeh_add_device_early 0x9db25576 +vmlinux eeh_add_device_late 0xc08f59ff +vmlinux eeh_check_failure 0x2960019b +vmlinux eeh_dn_check_failure 0xc9c63c5d +vmlinux eeh_remove_device 0xd842e7e8 +vmlinux eeh_subsystem_enabled 0x2e1bef92 +vmlinux eighty_ninty_three 0xc8640cda +vmlinux elevator_exit 0x30f1fc6d +vmlinux elevator_init 0x26e52d5a +vmlinux elv_add_request 0x8664ad02 +vmlinux elv_completed_request 0x7499d56d +vmlinux elv_dequeue_request 0xc8e333e6 +vmlinux elv_dispatch_sort 0xeb69b8c1 +vmlinux elv_next_request 0xf01e5692 +vmlinux elv_queue_empty 0xac761cd5 +vmlinux elv_register 0xde96e805 +vmlinux elv_requeue_request 0x89c84b87 +vmlinux elv_rq_merge_ok 0xd9dfdc9c +vmlinux elv_try_merge 0xfabd0a1e +vmlinux elv_unregister 0xb8728721 +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_irq 0xfcec0987 +vmlinux enable_kernel_altivec 0x3f406a3b +vmlinux enable_kernel_fp 0xfded48ed +vmlinux end_buffer_async_write 0xd93d5b41 +vmlinux end_buffer_read_sync 0x5fccd733 +vmlinux end_buffer_write_sync 0x5f8c97bb +vmlinux end_page_writeback 0xefa9bb04 +vmlinux end_request 0x283e5f01 +vmlinux end_that_request_chunk 0x3525fca5 +vmlinux end_that_request_first 0xd434afdc +vmlinux end_that_request_last 0x58c48c98 +vmlinux eth_type_trans 0x7e6852fc +vmlinux ether_setup 0xc2a097cb +vmlinux ethtool_op_get_link 0x1975fc33 +vmlinux ethtool_op_get_perm_addr 0xb27c5bbd +vmlinux ethtool_op_get_sg 0x011eaaae +vmlinux ethtool_op_get_tso 0x9d125d24 +vmlinux ethtool_op_get_tx_csum 0x8c6ef5ac +vmlinux ethtool_op_get_ufo 0xba3bfbc4 +vmlinux ethtool_op_set_sg 0xfe6b4051 +vmlinux ethtool_op_set_tso 0xbcf54726 +vmlinux ethtool_op_set_tx_csum 0x7f1c879c +vmlinux ethtool_op_set_tx_hw_csum 0x791f8949 +vmlinux ethtool_op_set_ufo 0x2827cb9d +vmlinux exit_fs 0xe3703728 +vmlinux f_setown 0x154d4d66 +vmlinux fasync_helper 0x53abd503 +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x2ebdb30c +vmlinux fb_con_duit 0x5c88c05e +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0x28870486 +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0xf2dddcef +vmlinux fb_get_buffer_offset 0xd51829d5 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0xd0071d12 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0x71831b71 +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0xbfbe1372 +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x439b46ac +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0xc980ab57 +vmlinux fb_set_suspend 0xb76412f5 +vmlinux fb_set_var 0xb1f0c747 +vmlinux fb_show_logo 0x5e8da010 +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0xf6b63f3e +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fbcon_set_bitops 0x462c1a7b +vmlinux fbcon_set_tileops 0xe457dd1d +vmlinux fd_install 0xbbe47deb +vmlinux fddi_type_trans 0xda63dd3e +vmlinux fetch_dev_dn 0x6763e4fc +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x1cf9a8b9 +vmlinux file_fsync 0xd3ba454c +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0x7916f2a8 +vmlinux filemap_fdatawait 0x51967208 +vmlinux filemap_fdatawrite 0xfe648749 +vmlinux filemap_flush 0x0f58981c +vmlinux filemap_nopage 0x79bce491 +vmlinux filemap_populate 0xce54f9bd +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0x8493b3d8 +vmlinux filp_open 0xc666df5e +vmlinux find_all_nodes 0x77d17364 +vmlinux find_bus 0x0e06279a +vmlinux find_compatible_devices 0xbcfc7a67 +vmlinux find_devices 0x1f99757f +vmlinux find_font 0xf7584a9c +vmlinux find_get_page 0xbf2b4400 +vmlinux find_inode_number 0x9fd78371 +vmlinux find_lock_page 0x3edea752 +vmlinux find_next_bit 0xc0a3d105 +vmlinux find_next_zero_bit 0x479c3c86 +vmlinux find_next_zero_le_bit 0xa0c45bfc +vmlinux find_or_create_page 0xfa37a0fa +vmlinux find_path_device 0xe8f03c45 +vmlinux find_task_by_pid_type 0x372b93cf +vmlinux find_trylock_page 0x0b811b70 +vmlinux find_type_devices 0x650149ec +vmlinux find_vma 0xada49111 +vmlinux finish_wait 0x271f4d2a +vmlinux firmware_register 0x491882a2 +vmlinux firmware_unregister 0x0d620980 +vmlinux flock_lock_file_wait 0x5b94b41c +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_dcache_page 0xa66ed6b8 +vmlinux flush_dcache_range 0xefde1bbe +vmlinux flush_icache_user_range 0x5cfc249d +vmlinux flush_old_exec 0x942bdd8b +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x17d15f3b +vmlinux flush_workqueue 0xb38edc4a +vmlinux follow_down 0x66281c3b +vmlinux follow_up 0xb536ad2c +vmlinux force_sig 0x5114f1b2 +vmlinux fput 0x554c068f +vmlinux framebuffer_alloc 0xd5fb7723 +vmlinux framebuffer_release 0x139f8a21 +vmlinux free_buffer_head 0xdd303248 +vmlinux free_dma 0x72b243d4 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0x1313187d +vmlinux free_pages 0x4302d0eb +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0x7cfd0fa2 +vmlinux freeze_bdev 0xdab0a573 +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0x34551b34 +vmlinux g450_mnp2f 0xc1f7a77f +vmlinux gen_kill_estimator 0xa4a74611 +vmlinux gen_new_estimator 0x8bebe904 +vmlinux gen_replace_estimator 0x42e0c40d +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x8da4ad05 +vmlinux generic_block_bmap 0xfb8aa277 +vmlinux generic_commit_write 0x5940124a +vmlinux generic_cont_expand 0x52d6a0f8 +vmlinux generic_delete_inode 0x2d76175f +vmlinux generic_drop_inode 0x9f66f5e6 +vmlinux generic_file_aio_read 0xad06f943 +vmlinux generic_file_aio_write 0xed242d46 +vmlinux generic_file_aio_write_nolock 0x72150bda +vmlinux generic_file_buffered_write 0x4b4f78e3 +vmlinux generic_file_direct_write 0xf4457745 +vmlinux generic_file_llseek 0xa64db178 +vmlinux generic_file_mmap 0x76886ae1 +vmlinux generic_file_open 0xe688b75e +vmlinux generic_file_read 0x3baab804 +vmlinux generic_file_readonly_mmap 0xf6f09644 +vmlinux generic_file_readv 0x8c21fda3 +vmlinux generic_file_sendfile 0x82ad207b +vmlinux generic_file_write 0xe62afbf1 +vmlinux generic_file_write_nolock 0x9e43541b +vmlinux generic_file_writev 0x2d801d78 +vmlinux generic_fillattr 0xd851cec1 +vmlinux generic_getxattr 0x2476be3e +vmlinux generic_ide_ioctl 0xfe1964e3 +vmlinux generic_listxattr 0xf2cf666c +vmlinux generic_make_request 0xbb200f53 +vmlinux generic_osync_inode 0x465a31f3 +vmlinux generic_permission 0x92ae1033 +vmlinux generic_read_dir 0x7f1a37ee +vmlinux generic_readlink 0x065f198e +vmlinux generic_removexattr 0x927b0526 +vmlinux generic_ro_fops 0xc48ec894 +vmlinux generic_setxattr 0x2ef5b1c9 +vmlinux generic_shutdown_super 0x7b77d6b4 +vmlinux generic_unplug_device 0xc896d7f9 +vmlinux generic_write_checks 0x9abe7b3b +vmlinux genl_register_family 0x79efb062 +vmlinux genl_register_ops 0x0656a13e +vmlinux genl_sock 0x14a72dc0 +vmlinux genl_unregister_family 0x934d8bfd +vmlinux genl_unregister_ops 0xdd314783 +vmlinux get_backlight_enable 0xeeccc4af +vmlinux get_backlight_level 0x9fbc6790 +vmlinux get_bus 0x3870255c +vmlinux get_cpu_sysdev 0x59608a27 +vmlinux get_dcookie 0xf7448ac1 +vmlinux get_default_font 0x093e3659 +vmlinux get_device 0xf7bc395a +vmlinux get_disk 0xd1349f2c +vmlinux get_driver 0xf8bf3aea +vmlinux get_empty_filp 0xe42b1640 +vmlinux get_fs_type 0xabbecac3 +vmlinux get_io_context 0x5ee5382f +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_property 0xaaccb349 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0xbfd19cfc +vmlinux get_sb_nodev 0xb4518fe4 +vmlinux get_sb_pseudo 0x4e85f70a +vmlinux get_sb_single 0xcafef48f +vmlinux get_super 0xe3d65099 +vmlinux get_task_mm 0x90cce5b3 +vmlinux get_unmapped_area 0x73e6f7ae +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x1db76aab +vmlinux get_wchan 0x1fe1830f +vmlinux get_write_access 0xa7cc4aee +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x2d713c2e +vmlinux giveup_altivec 0x9520db15 +vmlinux giveup_fpu 0x15265ff5 +vmlinux gnet_stats_copy_app 0x1104e698 +vmlinux gnet_stats_copy_basic 0x4ddceccf +vmlinux gnet_stats_copy_queue 0x1a39182b +vmlinux gnet_stats_copy_rate_est 0xe6059692 +vmlinux gnet_stats_finish_copy 0x6ff03fe7 +vmlinux gnet_stats_start_copy 0x7b6ef2a5 +vmlinux gnet_stats_start_copy_compat 0xf5b2a963 +vmlinux grab_cache_page_nowait 0x578a3ba0 +vmlinux groups_alloc 0x51cd47e2 +vmlinux groups_free 0x111bcb2c +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0x0b3525c1 +vmlinux have_submounts 0x831ee0ed +vmlinux high_memory 0x8a7d1c31 +vmlinux hippi_type_trans 0xa6ec54de +vmlinux hwmon_device_register 0x2f97b17c +vmlinux hwmon_device_unregister 0xfcfc88ee +vmlinux i2c_adapter_class 0xbe909d7d +vmlinux i2c_adapter_dev_release 0x15d5b690 +vmlinux i2c_adapter_driver 0x52c1faa9 +vmlinux i2c_add_adapter 0xbe960f6d +vmlinux i2c_add_driver 0x6fb70891 +vmlinux i2c_attach_client 0x8a681c8d +vmlinux i2c_bit_add_bus 0xc728400d +vmlinux i2c_bit_del_bus 0xc6b6371e +vmlinux i2c_bus_type 0x889720a4 +vmlinux i2c_check_addr 0x1b01a9fc +vmlinux i2c_clients_command 0xffe7bedf +vmlinux i2c_control 0xdb7439fe +vmlinux i2c_del_adapter 0xce3527d1 +vmlinux i2c_del_driver 0xbfa48be2 +vmlinux i2c_detach_client 0xa827a9be +vmlinux i2c_get_adapter 0xa618abeb +vmlinux i2c_master_recv 0x8206467c +vmlinux i2c_master_send 0x2444a0bb +vmlinux i2c_probe 0x98389add +vmlinux i2c_put_adapter 0xe03c6194 +vmlinux i2c_release_client 0xc4bf1eb0 +vmlinux i2c_smbus_read_byte 0x71c530a6 +vmlinux i2c_smbus_read_byte_data 0xbc3fac6c +vmlinux i2c_smbus_read_i2c_block_data 0x22397cea +vmlinux i2c_smbus_read_word_data 0xece3bcd8 +vmlinux i2c_smbus_write_block_data 0x4470732f +vmlinux i2c_smbus_write_byte 0x9e64fb4f +vmlinux i2c_smbus_write_byte_data 0x563e4b8e +vmlinux i2c_smbus_write_quick 0x54bd273a +vmlinux i2c_smbus_write_word_data 0xa4ce5bad +vmlinux i2c_smbus_xfer 0xd8be2b28 +vmlinux i2c_transfer 0x6eb72ec2 +vmlinux i2c_use_client 0x16a092d4 +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x022d6889 +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_add_setting 0x0478eff2 +vmlinux ide_build_dmatable 0xf83245b0 +vmlinux ide_build_sglist 0x9abf4ff8 +vmlinux ide_bus_type 0x9b74b506 +vmlinux ide_config_drive_speed 0x11c1628a +vmlinux ide_destroy_dmatable 0x839653b9 +vmlinux ide_dma_enable 0xdd868e75 +vmlinux ide_dma_intr 0x63d79c75 +vmlinux ide_dma_setup 0x4d5e66cb +vmlinux ide_dma_speed 0xd512e57d +vmlinux ide_dma_start 0xb1489329 +vmlinux ide_dma_verbose 0x7aa1788a +vmlinux ide_do_drive_cmd 0x36179674 +vmlinux ide_do_reset 0xf3912c9c +vmlinux ide_dump_status 0x1a7701eb +vmlinux ide_end_drive_cmd 0x6cbd0ca5 +vmlinux ide_end_request 0x478e97f3 +vmlinux ide_error 0x5149acbb +vmlinux ide_execute_command 0xc729420a +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x8acd6301 +vmlinux ide_get_error_location 0xf2bfd827 +vmlinux ide_hwifs 0x7c2ac3d8 +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0xe94896a9 +vmlinux ide_init_drive_cmd 0x1f7caafa +vmlinux ide_init_sg_cmd 0xed82240b +vmlinux ide_lock 0xb0e42262 +vmlinux ide_map_sg 0x51e667f0 +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x2a7c5465 +vmlinux ide_pci_unregister_driver 0x489590f7 +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0xf3460b54 +vmlinux ide_register_hw 0x70d788df +vmlinux ide_register_hw_with_fixup 0xa503b9b3 +vmlinux ide_register_region 0x0ada3278 +vmlinux ide_register_subdriver 0x3d68967d +vmlinux ide_set_handler 0x2d591969 +vmlinux ide_set_xfer_rate 0xbd300c23 +vmlinux ide_setup_dma 0xf25e4ce6 +vmlinux ide_setup_pci_device 0xf4f8ef91 +vmlinux ide_setup_pci_devices 0x73863855 +vmlinux ide_setup_pci_noise 0xc71d364d +vmlinux ide_spin_wait_hwgroup 0xe05edd2a +vmlinux ide_stall_queue 0xfe0f2c6c +vmlinux ide_undecoded_slave 0x15ef5e6a +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0x3434cd86 +vmlinux ide_unregister_subdriver 0x460f4937 +vmlinux ide_use_dma 0xb64eb131 +vmlinux ide_wait_not_busy 0xf54682f5 +vmlinux ide_wait_stat 0x588a1763 +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0x3e7c8d66 +vmlinux idr_find 0x63e984fa +vmlinux idr_get_new 0xef70e5e7 +vmlinux idr_get_new_above 0x9ad5aa16 +vmlinux idr_init 0x153cbb99 +vmlinux idr_pre_get 0xf226f24b +vmlinux idr_remove 0x320094b2 +vmlinux iget5_locked 0x409c4ff4 +vmlinux iget_locked 0x57e5c086 +vmlinux igrab 0xe952eba8 +vmlinux ilookup 0xf4616aac +vmlinux ilookup5 0x822705bb +vmlinux ilookup5_nowait 0xb3a3781a +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0x1a904be4 +vmlinux in_egroup_p 0xd8a2ab95 +vmlinux in_group_p 0xc3cf1128 +vmlinux in_lock_functions 0x09d44df9 +vmlinux inet6_lookup 0xaa498fcf +vmlinux inet6_lookup_listener 0xc998ecf2 +vmlinux inet_accept 0x8f231d15 +vmlinux inet_add_protocol 0xccdfa4e5 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0x9af2d414 +vmlinux inet_bind_bucket_create 0xa36f819b +vmlinux inet_bind_hash 0x2038a12b +vmlinux inet_csk_accept 0x59b0aa54 +vmlinux inet_csk_clear_xmit_timers 0xbfd0b6b2 +vmlinux inet_csk_clone 0x41820bb0 +vmlinux inet_csk_delete_keepalive_timer 0x05c52b53 +vmlinux inet_csk_destroy_sock 0x03cf6ace +vmlinux inet_csk_get_port 0x136f0b93 +vmlinux inet_csk_init_xmit_timers 0xa00abf22 +vmlinux inet_csk_listen_start 0x71d40d2d +vmlinux inet_csk_listen_stop 0x323a7385 +vmlinux inet_csk_reqsk_queue_hash_add 0xafc92f6b +vmlinux inet_csk_reqsk_queue_prune 0x418d4e98 +vmlinux inet_csk_reset_keepalive_timer 0x69c33a67 +vmlinux inet_csk_route_req 0xc59def71 +vmlinux inet_csk_search_req 0xf58ed1ef +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0xa8f5c304 +vmlinux inet_dgram_connect 0x377862a9 +vmlinux inet_dgram_ops 0x35784594 +vmlinux inet_diag_register 0xd4f460f2 +vmlinux inet_diag_unregister 0x0e2dc25c +vmlinux inet_getname 0x0b5a4337 +vmlinux inet_ioctl 0xdaa230af +vmlinux inet_listen 0x32b46f36 +vmlinux inet_listen_wlock 0xda731418 +vmlinux inet_put_port 0x06354dbc +vmlinux inet_register_protosw 0xc184ad2d +vmlinux inet_release 0xdf8683d4 +vmlinux inet_select_addr 0x160fbfd0 +vmlinux inet_sendmsg 0x41fb0fe6 +vmlinux inet_shutdown 0x764d84b2 +vmlinux inet_sk_rebuild_header 0x4b237b5d +vmlinux inet_sock_destruct 0x1231686e +vmlinux inet_stream_connect 0x72fe0138 +vmlinux inet_stream_ops 0x65bc8657 +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x89a08fdf +vmlinux inet_twsk_deschedule 0x7672d651 +vmlinux inet_twsk_schedule 0x61f546bf +vmlinux inet_unregister_protosw 0x49662e2f +vmlinux inetdev_by_index 0x6c9c9524 +vmlinux init_buffer 0x8b99d7c6 +vmlinux init_mm 0x413429da +vmlinux init_phb_dynamic 0x0257bf20 +vmlinux init_special_inode 0x1a755806 +vmlinux init_task 0x6e0d75f1 +vmlinux init_timer 0xa676f823 +vmlinux inode_add_bytes 0x2d296698 +vmlinux inode_change_ok 0x626f6752 +vmlinux inode_get_bytes 0xb37bf0de +vmlinux inode_init_once 0xa9e13288 +vmlinux inode_needs_sync 0x54441cf5 +vmlinux inode_set_bytes 0x54418392 +vmlinux inode_setattr 0x116a6a5f +vmlinux inode_sub_bytes 0x73b02ca0 +vmlinux inode_update_time 0x0505ee99 +vmlinux inotify_dentry_parent_queue_event 0x5113a12f +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0x59d2f091 +vmlinux inotify_inode_queue_event 0x8d5f73be +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0x5389f89e +vmlinux input_allocate_device 0xacfef236 +vmlinux input_class 0xdb6bcb04 +vmlinux input_close_device 0xb2d070fc +vmlinux input_event 0xf26b089d +vmlinux input_flush_device 0x17ffafef +vmlinux input_grab_device 0x07977f44 +vmlinux input_open_device 0x535f8c1c +vmlinux input_register_device 0xf8fc0fa7 +vmlinux input_register_handler 0xc26d9e8f +vmlinux input_release_device 0x44ca4b17 +vmlinux input_unregister_device 0x7997d613 +vmlinux input_unregister_handler 0x64080bb6 +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0xdd04aa8e +vmlinux int_sqrt 0xb678366f +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x99860708 +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0x7e613127 +vmlinux interruptible_sleep_on_timeout 0xd96c8608 +vmlinux invalidate_bdev 0x90003235 +vmlinux invalidate_inode_pages 0x5acde14d +vmlinux invalidate_inode_pages2 0xa4211e1d +vmlinux invalidate_inode_pages2_range 0x423d2c05 +vmlinux invalidate_inodes 0xdfee5411 +vmlinux invalidate_partition 0x89b0339c +vmlinux io_page_mask 0xf9d21979 +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0x64eeacc6 +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0xc5534d64 +vmlinux ioread16_rep 0x5857b225 +vmlinux ioread16be 0xf065f629 +vmlinux ioread32 0xe484e35f +vmlinux ioread32_rep 0x3f0546a8 +vmlinux ioread32be 0xfdb9b629 +vmlinux ioread8 0xf10de535 +vmlinux ioread8_rep 0xf441ac43 +vmlinux ioremap 0x454fb519 +vmlinux iounmap 0xedc03953 +vmlinux iov_shorten 0x92392cd9 +vmlinux iowrite16 0x8c183cbe +vmlinux iowrite16_rep 0x8cc79cab +vmlinux iowrite16be 0x69a0ca7d +vmlinux iowrite32 0x436c2179 +vmlinux iowrite32_rep 0xbfc177bc +vmlinux iowrite32be 0x6acb973d +vmlinux iowrite8 0x0727c4f3 +vmlinux iowrite8_rep 0xa4b94fea +vmlinux ip4_datagram_connect 0xf756f42f +vmlinux ip_build_and_send_pkt 0x34bc04f3 +vmlinux ip_cmsg_recv 0x6d1320cb +vmlinux ip_ct_attach 0xa64d6403 +vmlinux ip_defrag 0x0ceba9fc +vmlinux ip_fast_csum 0xe4627d16 +vmlinux ip_fragment 0x55661baa +vmlinux ip_generic_getfrag 0xe18ebe07 +vmlinux ip_getsockopt 0xf1b6564a +vmlinux ip_mc_dec_group 0x7d522293 +vmlinux ip_mc_inc_group 0x5bc9431d +vmlinux ip_mc_join_group 0xf31b1df3 +vmlinux ip_queue_xmit 0x2f194009 +vmlinux ip_route_input 0x448fa7af +vmlinux ip_route_me_harder 0x9833e653 +vmlinux ip_route_output_flow 0x10876800 +vmlinux ip_route_output_key 0xafc4bfc9 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0x434ccab0 +vmlinux ip_setsockopt 0xe43a5110 +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0x133aba0c +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0xa024b053 +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0x752b5de4 +vmlinux irq_desc 0x6de483e0 +vmlinux irq_stat 0xc41b8fbf +vmlinux is_bad_inode 0x296c407b +vmlinux is_console_locked 0x944a564d +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux isa_io_base 0x5f8a2728 +vmlinux iunique 0xc6e25455 +vmlinux iw_handler_get_spy 0x73f94fe5 +vmlinux iw_handler_get_thrspy 0x25443380 +vmlinux iw_handler_set_spy 0x1eba2468 +vmlinux iw_handler_set_thrspy 0xa5751978 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xd8c98779 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kd_mksound 0x22b325d5 +vmlinux kern_mount 0x7a2d58b4 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0x93f3e1ac +vmlinux kernel_recvmsg 0xd5d5e05e +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0x3bd23a50 +vmlinux kernel_subsys 0x50136557 +vmlinux kernel_thread 0x7ca341af +vmlinux key_alloc 0x7913654d +vmlinux key_create_or_update 0x550f044e +vmlinux key_instantiate_and_link 0x9c189614 +vmlinux key_link 0xe08db6fe +vmlinux key_negate_and_link 0x0d043d32 +vmlinux key_payload_reserve 0xb526c294 +vmlinux key_put 0x43ef5e3b +vmlinux key_revoke 0x3a243d2a +vmlinux key_task_permission 0xd1eb157f +vmlinux key_type_user 0x3ac4f316 +vmlinux key_unlink 0x65947eef +vmlinux key_update 0x95ceb864 +vmlinux key_validate 0x8d009f23 +vmlinux keyring_clear 0x06bc0ec7 +vmlinux keyring_search 0xabd3fffa +vmlinux kfifo_alloc 0x5cc5b658 +vmlinux kfifo_free 0x08a64e7c +vmlinux kfifo_init 0xfa31cd3b +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0x05f790de +vmlinux kill_anon_super 0x930a32d9 +vmlinux kill_block_super 0x5bf368fc +vmlinux kill_fasync 0x7885b8fc +vmlinux kill_litter_super 0x6cf18115 +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0x044dfb5c +vmlinux klist_add_head 0xe14bb3a2 +vmlinux klist_add_tail 0x8bd126f9 +vmlinux klist_del 0x7081deed +vmlinux klist_init 0x83ba3c87 +vmlinux klist_iter_exit 0x5dbca5b8 +vmlinux klist_iter_init 0xba799312 +vmlinux klist_iter_init_node 0xee8c66d5 +vmlinux klist_next 0x0d1a949b +vmlinux klist_node_attached 0x1d1ee37c +vmlinux klist_remove 0x88277446 +vmlinux km_new_mapping 0xda29ee65 +vmlinux km_policy_notify 0x4ef25306 +vmlinux km_state_notify 0x1d06de73 +vmlinux km_waitq 0x9b0f1de9 +vmlinux kmalloc_node 0xce0123e0 +vmlinux kmem_cache_alloc 0xa2ad87cf +vmlinux kmem_cache_alloc_node 0xb5d3918d +vmlinux kmem_cache_create 0x1b7505d1 +vmlinux kmem_cache_destroy 0x24e7f348 +vmlinux kmem_cache_free 0xa44e8227 +vmlinux kmem_cache_name 0xc97da69d +vmlinux kmem_cache_shrink 0x1a92a99b +vmlinux kmem_cache_size 0xb7f4f355 +vmlinux kmem_find_general_cachep 0x24ac8093 +vmlinux kobject_add 0x4aea90b8 +vmlinux kobject_del 0x6fb632c3 +vmlinux kobject_get 0x534c3d0e +vmlinux kobject_hotplug 0x8ee225e8 +vmlinux kobject_init 0x43c7aa8d +vmlinux kobject_put 0x2b7e2a95 +vmlinux kobject_register 0x6f79c4ac +vmlinux kobject_set_name 0xce030b12 +vmlinux kobject_uevent 0xf20c76ad +vmlinux kobject_uevent_atomic 0x6274ed2e +vmlinux kobject_unregister 0xfe34e147 +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x4cece8a5 +vmlinux kset_register 0x9d2dd604 +vmlinux kset_unregister 0x0b20be2e +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0xdcae3f51 +vmlinux kthread_create 0x4e0cfcb7 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0x02c2ea70 +vmlinux kthread_stop_sem 0xe7e898c6 +vmlinux kzalloc 0x5a3b6eca +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0xa3475385 +vmlinux lease_modify 0x1d99a09c +vmlinux linkwatch_fire_event 0xdb41c3de +vmlinux ll_rw_block 0x526281b9 +vmlinux llc_add_pack 0xd26d4d60 +vmlinux llc_build_and_send_ui_pkt 0x24d3af35 +vmlinux llc_mac_hdr_init 0x5226eb21 +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0xa0e1f6b3 +vmlinux llc_sap_find 0xb4d81a80 +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0xe63f54c8 +vmlinux llc_sap_open 0xfbbe8892 +vmlinux llc_set_station_handler 0x5d7066c7 +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_nls 0xc07b1e56 +vmlinux load_nls_default 0x930a1d8e +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_kernel 0x3656bf5a +vmlinux lock_may_read 0x03de2a21 +vmlinux lock_may_write 0xdd4d73b4 +vmlinux lock_rename 0x65f25c79 +vmlinux lock_sock 0x71619d3a +vmlinux locks_copy_lock 0x901d5174 +vmlinux locks_init_lock 0x3d02c43f +vmlinux locks_mandatory_area 0x3770b97f +vmlinux locks_remove_posix 0x253aa090 +vmlinux lookup_create 0x507c9929 +vmlinux lookup_hash 0xa2128bb0 +vmlinux lookup_instantiate_filp 0xb0af5996 +vmlinux lookup_one_len 0xdb75720a +vmlinux loopback_dev 0xf5143fb0 +vmlinux loops_per_jiffy 0xba497f13 +vmlinux mac_find_mode 0xd68456de +vmlinux mac_map_monitor_sense 0xe2304303 +vmlinux mac_var_to_vmode 0x00907cd5 +vmlinux mac_vmode_to_var 0x08ed0b62 +vmlinux machine_is_compatible 0x952e843b +vmlinux machine_power_off 0x091c824a +vmlinux macio_dev_get 0xa25d2fd1 +vmlinux macio_dev_put 0x024ba43a +vmlinux macio_find 0xf3b74425 +vmlinux macio_register_driver 0x34c2a5c4 +vmlinux macio_release_resource 0x75becb59 +vmlinux macio_release_resources 0xf9cea6ce +vmlinux macio_request_resource 0x5dbe7b78 +vmlinux macio_request_resources 0xe9a2f89e +vmlinux macio_unregister_driver 0x15bc61f6 +vmlinux make_8023_client 0x4cb57854 +vmlinux make_EII_client 0xe187628c +vmlinux make_bad_inode 0x1b77e4d0 +vmlinux malloc_sizes 0xabd0e2d9 +vmlinux mapping_tagged 0x220038af +vmlinux mark_buffer_async_write 0x2a60452d +vmlinux mark_buffer_dirty 0x5a8514f3 +vmlinux mark_buffer_dirty_inode 0x21bf1551 +vmlinux mark_info_dirty 0xbbb6033f +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0xbebc2af9 +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux matrox_G100 0xbe92acd6 +vmlinux matrox_cfbX_init 0xe9c9dcca +vmlinux matrox_millennium 0xbd0249ff +vmlinux matrox_mystique 0x6684f5e5 +vmlinux matroxfb_DAC_in 0x01a03269 +vmlinux matroxfb_DAC_out 0x38a8bec9 +vmlinux matroxfb_PLL_calcclock 0x25cf8049 +vmlinux matroxfb_enable_irq 0x2206b1f8 +vmlinux matroxfb_g450_connect 0x7d83ed4d +vmlinux matroxfb_g450_setclk 0x5cb028a4 +vmlinux matroxfb_g450_setpll_cond 0x824ec3e4 +vmlinux matroxfb_g450_shutdown 0x7e01fcca +vmlinux matroxfb_read_pins 0xeb235868 +vmlinux matroxfb_register_driver 0xefce1611 +vmlinux matroxfb_unregister_driver 0x190d9fc0 +vmlinux matroxfb_var2my 0xabd8e427 +vmlinux matroxfb_vgaHWinit 0xcbef5d29 +vmlinux matroxfb_vgaHWrestore 0x2306a729 +vmlinux matroxfb_wait_for_sync 0xa9d0fed4 +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0xc04f7125 +vmlinux may_umount_tree 0xe9e5bcfa +vmlinux mb_cache_create 0xafef5fd3 +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0xf5847291 +vmlinux mb_cache_entry_find_first 0x7d9991ca +vmlinux mb_cache_entry_find_next 0xf7d42324 +vmlinux mb_cache_entry_free 0x1eb31720 +vmlinux mb_cache_entry_get 0x08fa274b +vmlinux mb_cache_entry_insert 0x92e9c666 +vmlinux mb_cache_entry_release 0x337de939 +vmlinux mb_cache_shrink 0x8d71a392 +vmlinux mem_section 0x399e14e1 +vmlinux memchr 0xc740c64a +vmlinux memcmp 0xc7ec28b0 +vmlinux memcpy 0x6067a146 +vmlinux memcpy_fromiovec 0x36139a51 +vmlinux memcpy_fromiovecend 0x9bc565c5 +vmlinux memcpy_toiovec 0x2876a6d3 +vmlinux memmove 0x5dbbe98e +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xcfaf79ba +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0xbe8a1485 +vmlinux mempool_create_node 0x31448a4a +vmlinux mempool_destroy 0xe5077a8f +vmlinux mempool_free 0x37a9798f +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x931d2521 +vmlinux memscan 0x9c0ea3cd +vmlinux memset 0x3fa03a97 +vmlinux misc_deregister 0x6b9f9d16 +vmlinux misc_register 0x542a7d4a +vmlinux mmput 0xf1b40446 +vmlinux mnt_pin 0x2e127708 +vmlinux mnt_unpin 0x84c25bef +vmlinux mntput_no_expire 0xee1b5caf +vmlinux mod_reg_security 0xf2878d3e +vmlinux mod_timer 0x400a2c21 +vmlinux mod_unreg_security 0x8ef02891 +vmlinux module_add_driver 0x357188cd +vmlinux module_refcount 0xcfe2cc8e +vmlinux module_remove_driver 0x87e479ec +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0x0c73706e +vmlinux mpage_readpages 0xf74ed6c9 +vmlinux mpage_writepage 0x869560c3 +vmlinux mpage_writepages 0xca1ab6ff +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux multipath_alg_register 0xa975b5ff +vmlinux multipath_alg_unregister 0xe9d413e6 +vmlinux n_tty_ioctl 0x69ba5488 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x64f1a92c +vmlinux neigh_changeaddr 0xf6d2c857 +vmlinux neigh_compat_output 0x38e417a4 +vmlinux neigh_connected_output 0x707dbea4 +vmlinux neigh_create 0x9eddf9fc +vmlinux neigh_delete 0x33323e9c +vmlinux neigh_destroy 0x707c1af4 +vmlinux neigh_dump_info 0xc8891cad +vmlinux neigh_event_ns 0x9afa3a71 +vmlinux neigh_for_each 0x350405a2 +vmlinux neigh_ifdown 0x2c007c64 +vmlinux neigh_lookup 0x973322b9 +vmlinux neigh_lookup_nodev 0x9cca2953 +vmlinux neigh_parms_alloc 0x31d2c88b +vmlinux neigh_parms_release 0xedde2b53 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0xa7f03d34 +vmlinux neigh_seq_next 0x330d9a6f +vmlinux neigh_seq_start 0x4e15147c +vmlinux neigh_seq_stop 0xd8703e28 +vmlinux neigh_sysctl_register 0xa3af0c3e +vmlinux neigh_sysctl_unregister 0x9032dee5 +vmlinux neigh_table_clear 0x9988210f +vmlinux neigh_table_init 0x913c3fa2 +vmlinux neigh_update 0xede11e33 +vmlinux neigh_update_hhs 0xa0ac492f +vmlinux neightbl_dump_info 0x8056c841 +vmlinux neightbl_set 0x541dbc30 +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0x0ddf3de7 +vmlinux netdev_features_change 0xe553e342 +vmlinux netdev_rx_csum_fault 0x7959554f +vmlinux netdev_set_master 0x9cd14a3c +vmlinux netdev_state_change 0xbb7dcafe +vmlinux netif_carrier_off 0x04607386 +vmlinux netif_carrier_on 0xece3b370 +vmlinux netif_receive_skb 0xa54a91b0 +vmlinux netif_rx 0x8a341cf2 +vmlinux netif_rx_ni 0xc0e30d41 +vmlinux netlink_ack 0x9fb775b0 +vmlinux netlink_broadcast 0x77bc884f +vmlinux netlink_dump_start 0x4bdf634c +vmlinux netlink_kernel_create 0x8143940a +vmlinux netlink_queue_skip 0x555fec45 +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0x0c079f2d +vmlinux netlink_set_err 0x947809bf +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0xab35a18f +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x5f75d1fb +vmlinux netpoll_parse_options 0x0ba36b71 +vmlinux netpoll_poll 0x59164c3e +vmlinux netpoll_queue 0x58e706bf +vmlinux netpoll_send_udp 0x327775bf +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0x30c189cd +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0x096825a9 +vmlinux next_thread 0x2dfb116c +vmlinux nf_ct_attach 0x41ffdbd8 +vmlinux nf_getsockopt 0xe2ab898f +vmlinux nf_hook_slow 0x983198c0 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0x98a2aeee +vmlinux nf_log_register 0x6e7025c1 +vmlinux nf_log_unregister_logger 0xc09a04e6 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0xdab8e3e7 +vmlinux nf_register_queue_handler 0xe522b334 +vmlinux nf_register_queue_rerouter 0x438e0762 +vmlinux nf_register_sockopt 0xe204e22d +vmlinux nf_reinject 0x7c2e9ad9 +vmlinux nf_setsockopt 0xa8021c3d +vmlinux nf_unregister_hook 0x405f5a72 +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0x9733c2f6 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x566cd7ae +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0x4c4c956e +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0xe4305ac2 +vmlinux nla_reserve 0x775c6381 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0xa33f7c7c +vmlinux nla_validate 0x2cc98162 +vmlinux no_llseek 0x09369fa2 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x4554e7a5 +vmlinux nobh_prepare_write 0x6a4db87e +vmlinux nobh_truncate_page 0xa81e13e8 +vmlinux nobh_writepage 0x022455e5 +vmlinux node_data 0x2ac737e2 +vmlinux node_online_map 0x08d186b3 +vmlinux node_possible_map 0x4dadb1f2 +vmlinux nonseekable_open 0xbd96489a +vmlinux noop_qdisc 0xe8748d83 +vmlinux noop_qdisc_ops 0xa2191bfd +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0xf19b200e +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux numa_cpu_lookup_table 0x895577b0 +vmlinux numa_cpumask_lookup_table 0x0bd8662b +vmlinux nvram_find_partition 0xfeb4646c +vmlinux of_address_to_resource 0x3a34b6fb +vmlinux of_create_pci_dev 0x155d67fc +vmlinux of_dev_get 0x0f5ee36e +vmlinux of_dev_put 0x1cdffde1 +vmlinux of_device_register 0x4aea500f +vmlinux of_device_unregister 0xd3c52ff1 +vmlinux of_find_all_nodes 0x52b3eaff +vmlinux of_find_compatible_node 0x74d6479d +vmlinux of_find_node_by_name 0x73c5b976 +vmlinux of_find_node_by_path 0x8860df12 +vmlinux of_find_node_by_phandle 0x7d484848 +vmlinux of_find_node_by_type 0xf0aab88f +vmlinux of_get_address 0xf68cb20d +vmlinux of_get_next_child 0xb9485005 +vmlinux of_get_parent 0x10c14c6d +vmlinux of_get_pci_address 0xc52b5e6b +vmlinux of_match_device 0x5b58be31 +vmlinux of_node_get 0x01e0aaac +vmlinux of_node_put 0x5eaed212 +vmlinux of_pci_address_to_resource 0x1b772df7 +vmlinux of_platform_bus_type 0xc7bd8526 +vmlinux of_platform_device_create 0x3fc7c9ec +vmlinux of_register_driver 0xabb64117 +vmlinux of_release_dev 0xbaf10425 +vmlinux of_scan_bus 0x1839d9af +vmlinux of_scan_pci_bridge 0x4dbb35bd +vmlinux of_translate_address 0xb903b77b +vmlinux of_unregister_driver 0xc15b5648 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0xe28a46c5 +vmlinux open_by_devnum 0xfafa0ec8 +vmlinux open_exec 0x34024385 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux paca 0x9b92aa76 +vmlinux page_follow_link_light 0xd12c3686 +vmlinux page_is_ram 0xfc03d97a +vmlinux page_put_link 0xedfd334f +vmlinux page_readlink 0x62e38767 +vmlinux page_symlink 0x0d0d7c8d +vmlinux page_symlink_inode_operations 0xb37f8a5d +vmlinux pagevec_lookup_tag 0x089661cf +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0x484aa244 +vmlinux path_release 0x21187047 +vmlinux path_walk 0xf2836182 +vmlinux pci_add_new_bus 0xc65b6873 +vmlinux pci_address_to_pio 0xbef9267b +vmlinux pci_assign_resource 0xa489aa01 +vmlinux pci_block_user_cfg_access 0x48a2d4b2 +vmlinux pci_bus_add_device 0xfcca8113 +vmlinux pci_bus_add_devices 0x54da6107 +vmlinux pci_bus_alloc_resource 0x025ac06a +vmlinux pci_bus_assign_resources 0x37c33ddc +vmlinux pci_bus_find_capability 0xa325f1b4 +vmlinux pci_bus_max_busnr 0xd24967a4 +vmlinux pci_bus_read_config_byte 0xb1d43852 +vmlinux pci_bus_read_config_dword 0xb4108019 +vmlinux pci_bus_read_config_word 0x4ba2cb8a +vmlinux pci_bus_size_bridges 0x573496ba +vmlinux pci_bus_type 0x38e3b182 +vmlinux pci_bus_write_config_byte 0x993f9e9d +vmlinux pci_bus_write_config_dword 0x3f8d7f9b +vmlinux pci_bus_write_config_word 0x213e4cc2 +vmlinux pci_choose_state 0x594dd29a +vmlinux pci_clear_mwi 0xb727a792 +vmlinux pci_create_bus 0x50300807 +vmlinux pci_dev_driver 0x1602723c +vmlinux pci_dev_get 0x76250e28 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0x6029f05c +vmlinux pci_disable_device 0x3a25e1a1 +vmlinux pci_dma_ops 0x500fdde7 +vmlinux pci_do_scan_bus 0xabadf967 +vmlinux pci_domain_nr 0xbf370190 +vmlinux pci_enable_bridges 0xa3713b07 +vmlinux pci_enable_device 0x2db7f4bc +vmlinux pci_enable_device_bars 0x853dd82f +vmlinux pci_enable_wake 0x62d9cb4b +vmlinux pci_find_bus 0xdb2528d8 +vmlinux pci_find_capability 0x00726070 +vmlinux pci_find_device 0xabb8566e +vmlinux pci_find_device_reverse 0x1d7c2557 +vmlinux pci_find_next_bus 0x95e71375 +vmlinux pci_find_next_capability 0xf3d42d21 +vmlinux pci_find_parent_resource 0x3b13f66f +vmlinux pci_find_slot 0xdb7c95cb +vmlinux pci_fixup_device 0x51b30b37 +vmlinux pci_get_class 0xd1f53ee8 +vmlinux pci_get_device 0x117f987c +vmlinux pci_get_slot 0xc94f0587 +vmlinux pci_get_subsys 0x0ab4bae6 +vmlinux pci_intx 0xba972523 +vmlinux pci_io_base 0x731a747a +vmlinux pci_iomap 0xe885a255 +vmlinux pci_iounmap 0x7725b850 +vmlinux pci_map_rom 0xf8ebdff3 +vmlinux pci_map_rom_copy 0x5633e0bb +vmlinux pci_match_device 0xc1cd0c90 +vmlinux pci_match_id 0x36ea2b79 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0xeca59342 +vmlinux pci_proc_attach_device 0x0e476ff6 +vmlinux pci_proc_detach_bus 0x9aef9050 +vmlinux pci_read_irq_line 0xa15486c1 +vmlinux pci_release_region 0xd0a9b418 +vmlinux pci_release_regions 0xf8361922 +vmlinux pci_remove_behind_bridge 0x6d701f7b +vmlinux pci_remove_bus 0xd6f04725 +vmlinux pci_remove_bus_device 0x9a26089e +vmlinux pci_remove_device_safe 0x7aa78b9d +vmlinux pci_remove_rom 0x812bf146 +vmlinux pci_request_region 0x86942bbf +vmlinux pci_request_regions 0xeb198b7a +vmlinux pci_restore_bars 0xd32496ec +vmlinux pci_restore_state 0xe39a1756 +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0x50e98136 +vmlinux pci_scan_bridge 0x2d2c0917 +vmlinux pci_scan_bus_parented 0xab1dc486 +vmlinux pci_scan_child_bus 0xf2b50ec1 +vmlinux pci_scan_single_device 0x45c62395 +vmlinux pci_scan_slot 0x49a1baf3 +vmlinux pci_set_consistent_dma_mask 0xbd137d19 +vmlinux pci_set_dma_mask 0x279a3624 +vmlinux pci_set_master 0x107527c5 +vmlinux pci_set_mwi 0x12452872 +vmlinux pci_set_power_state 0xc0fe8519 +vmlinux pci_setup_cardbus 0x0ddee524 +vmlinux pci_unblock_user_cfg_access 0x6005b316 +vmlinux pci_unmap_rom 0xa06267e7 +vmlinux pci_unregister_driver 0xba7a0083 +vmlinux pci_walk_bus 0xb9fa59e0 +vmlinux pcibios_bus_to_resource 0x0082a92f +vmlinux pcibios_fixup_bus 0xfc68ed5f +vmlinux pcibios_fixup_device_resources 0x17a587b1 +vmlinux pcibios_remove_root_bus 0xf408c7f3 +vmlinux pcibios_resource_to_bus 0x223f5aa9 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux per_cpu__kstat 0x42e327b4 +vmlinux per_cpu__softnet_data 0x3ef2c4f0 +vmlinux percpu_counter_mod 0x921ec48a +vmlinux permission 0x1b400c3b +vmlinux pfifo_qdisc_ops 0xa21de525 +vmlinux phys_mem_access_prot 0xd4f552cf +vmlinux platform_add_devices 0x85eb422a +vmlinux platform_bus 0x9348fa46 +vmlinux platform_bus_type 0x5a27f891 +vmlinux platform_device_add 0x7b56d64d +vmlinux platform_device_add_data 0x425608e7 +vmlinux platform_device_add_resources 0x296ba135 +vmlinux platform_device_alloc 0x3ae1901d +vmlinux platform_device_put 0xd0a01af5 +vmlinux platform_device_register 0x7a25f514 +vmlinux platform_device_register_simple 0x2c0a4555 +vmlinux platform_device_unregister 0x51675fd3 +vmlinux platform_driver_register 0x5134e66f +vmlinux platform_driver_unregister 0xd19f4b33 +vmlinux platform_get_irq 0x69f09b48 +vmlinux platform_get_irq_byname 0x86cab329 +vmlinux platform_get_resource 0x3f3fb74b +vmlinux platform_get_resource_byname 0x109657a2 +vmlinux plpar_hcall 0x85853ae3 +vmlinux plpar_hcall_4out 0x228a0337 +vmlinux plpar_hcall_8arg_2ret 0x607b0659 +vmlinux plpar_hcall_norets 0xbff8182c +vmlinux pm_active 0xebd387f6 +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pmac_get_partition 0x4881efab +vmlinux pmac_low_i2c_close 0xcac08cce +vmlinux pmac_low_i2c_lock 0x1315ed52 +vmlinux pmac_low_i2c_open 0x52339680 +vmlinux pmac_low_i2c_setmode 0x9c0bd3b1 +vmlinux pmac_low_i2c_unlock 0xb986dae1 +vmlinux pmac_low_i2c_xfer 0x35a1d077 +vmlinux pmac_register_agp_pm 0x870aa851 +vmlinux pmac_resume_agp_for_card 0xedb3c355 +vmlinux pmac_set_early_video_resume 0xce409cda +vmlinux pmac_suspend_agp_for_card 0xef44d438 +vmlinux pmac_xpram_read 0x527830ff +vmlinux pmac_xpram_write 0x66cbf14b +vmlinux pmf_call_function 0xcbb3c9ed +vmlinux pmf_call_one 0xb8dcbc3d +vmlinux pmf_do_functions 0xa497c88e +vmlinux pmf_do_irq 0x3a97e43b +vmlinux pmf_find_function 0x5e8c3dfe +vmlinux pmf_get_function 0x0abe50ad +vmlinux pmf_put_function 0xe9dbf590 +vmlinux pmf_register_driver 0xd3f12702 +vmlinux pmf_register_irq_client 0xcd286547 +vmlinux pmf_unregister_driver 0x1bda67a2 +vmlinux pmf_unregister_irq_client 0x687e0ed5 +vmlinux pmu_i2c_combined_read 0x245922c3 +vmlinux pmu_i2c_simple_read 0xe62e9555 +vmlinux pmu_i2c_simple_write 0x14ad4129 +vmlinux pmu_i2c_stdsub_write 0x5854d548 +vmlinux pmu_poll 0x646cc6ab +vmlinux pmu_poll_adb 0x327b9c1b +vmlinux pmu_register_sleep_notifier 0x1509c48d +vmlinux pmu_request 0xd409383c +vmlinux pmu_resume 0xdcefb9a5 +vmlinux pmu_suspend 0xca825895 +vmlinux pmu_unlock 0xfadb5750 +vmlinux pmu_unregister_sleep_notifier 0x3dee7f25 +vmlinux pmu_wait_complete 0x1c5b2c15 +vmlinux pneigh_enqueue 0xb2116370 +vmlinux pneigh_lookup 0x2af196ad +vmlinux poll_freewait 0x7ed904d3 +vmlinux poll_initwait 0x940b2128 +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0x83c43dc1 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x886aa274 +vmlinux posix_acl_equiv_mode 0x50d56018 +vmlinux posix_acl_from_mode 0x8c537c45 +vmlinux posix_acl_from_xattr 0x42acbf72 +vmlinux posix_acl_permission 0xc6b22f45 +vmlinux posix_acl_to_xattr 0xb055d8da +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0x4d22acf4 +vmlinux posix_lock_file 0x20837db1 +vmlinux posix_lock_file_wait 0x03938047 +vmlinux posix_locks_deadlock 0x990d016c +vmlinux posix_test_lock 0x7c882392 +vmlinux posix_timer_event 0xf3b4bec0 +vmlinux posix_unblock_lock 0xfa5650c6 +vmlinux ppc64_caches 0x6acb8d84 +vmlinux ppc64_enable_pmcs 0x8769a19f +vmlinux ppc_md 0x50c1df2f +vmlinux pre_task_out_intr 0xeadfedf9 +vmlinux prepare_binprm 0x97056e30 +vmlinux prepare_to_wait 0x65f4af5f +vmlinux prepare_to_wait_exclusive 0x339d4841 +vmlinux printk 0xdd132261 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0x358509df +vmlinux proc_bus 0x74269665 +vmlinux proc_dointvec 0xd81d7188 +vmlinux proc_dointvec_jiffies 0xff66d11d +vmlinux proc_dointvec_minmax 0xd47551ef +vmlinux proc_dointvec_ms_jiffies 0x87b5289d +vmlinux proc_dointvec_userhz_jiffies 0x502a2a20 +vmlinux proc_dostring 0xe22e44a5 +vmlinux proc_doulongvec_minmax 0xae5cba22 +vmlinux proc_doulongvec_ms_jiffies_minmax 0xafd65e4b +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0x8f0e1ccd +vmlinux proc_net 0x6d971c6a +vmlinux proc_net_netfilter 0x5cbbda90 +vmlinux proc_net_stat 0xbe13e4a4 +vmlinux proc_root 0x44fea76b +vmlinux proc_root_driver 0xf9e36f66 +vmlinux proc_root_fs 0xa64ed1b5 +vmlinux proc_symlink 0xda8131ed +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux profile_pc 0xce3b3f09 +vmlinux prom_n_addr_cells 0x367c9150 +vmlinux prom_n_size_cells 0x13412b84 +vmlinux proto_register 0x2924d66a +vmlinux proto_unregister 0x8595b8be +vmlinux ps2_cmd_aborted 0x19cb4c26 +vmlinux ps2_command 0xc75e75e4 +vmlinux ps2_drain 0x110dc453 +vmlinux ps2_handle_ack 0xf8aa6a71 +vmlinux ps2_handle_response 0x5b6fd4f1 +vmlinux ps2_init 0x29fb232a +vmlinux ps2_schedule_command 0x0f854075 +vmlinux ps2_sendbyte 0xa932d1a9 +vmlinux pskb_copy 0xa60323df +vmlinux pskb_expand_head 0x26bdf58e +vmlinux pskb_put 0xaf92e91f +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0xafda410e +vmlinux put_cmsg 0x43ec913a +vmlinux put_device 0x9d140312 +vmlinux put_disk 0x4f6f09c9 +vmlinux put_driver 0x53990dea +vmlinux put_files_struct 0x2ea57e9d +vmlinux put_io_context 0x18d85fd2 +vmlinux put_page 0xaa85a604 +vmlinux put_tty_driver 0x75d7867b +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0xa0633722 +vmlinux qdisc_create_dflt 0x4df33c22 +vmlinux qdisc_destroy 0x3f48a708 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0x7a1999cc +vmlinux qdisc_lookup 0xea5dd470 +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0x3e4b6651 +vmlinux qdisc_restart 0xfd49889d +vmlinux qdisc_unlock_tree 0x0cf1b8b2 +vmlinux queue_delayed_work 0x93f92ac3 +vmlinux queue_work 0x6a7ba085 +vmlinux radix_tree_delete 0x898049c9 +vmlinux radix_tree_gang_lookup 0x35ef380e +vmlinux radix_tree_gang_lookup_tag 0xed493232 +vmlinux radix_tree_insert 0x72e6283f +vmlinux radix_tree_lookup 0x76e635da +vmlinux radix_tree_lookup_slot 0x41706e2f +vmlinux radix_tree_tag_clear 0x9ee300df +vmlinux radix_tree_tag_set 0xd73b9fb5 +vmlinux radix_tree_tagged 0xb52b2186 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0x72359e85 +vmlinux read_cache_pages 0xcd67e55b +vmlinux read_dev_sector 0xe4287ed6 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0x426e063c +vmlinux redraw_screen 0x46f45693 +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0x201714a1 +vmlinux register_atm_ioctl 0x2a0335ec +vmlinux register_backlight_controller 0xe5c34893 +vmlinux register_binfmt 0xa02c0ea6 +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0x091c898c +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x2a67505c +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_exec_domain 0xf90ca148 +vmlinux register_filesystem 0x7576c953 +vmlinux register_firmware 0x40359ccb +vmlinux register_framebuffer 0xb91c6224 +vmlinux register_gifconf 0x1e7b5303 +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_key_type 0x9963ffcd +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0x560222d3 +vmlinux register_netdevice 0x3e84ff18 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x5895e9f5 +vmlinux register_posix_clock 0x1be83cc3 +vmlinux register_qdisc 0x4e7747cd +vmlinux register_quota_format 0x7c42176d +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0x9c8feab4 +vmlinux register_snap_client 0x43ffb82e +vmlinux register_sysctl_table 0xe58889ed +vmlinux register_sysrq_key 0x7375f099 +vmlinux register_tcf_proto_ops 0x2080fa95 +vmlinux register_timer_hook 0xb2883f30 +vmlinux registered_fb 0xe643e947 +vmlinux release_OF_resource 0x0368e98f +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x6ef56f31 +vmlinux release_pmc_hardware 0x5892f832 +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x9defdbfd +vmlinux remap_bus_range 0xfe183a6c +vmlinux remap_pfn_range 0xc8fe27a7 +vmlinux remote_llseek 0x75a89a7c +vmlinux remove_arg_zero 0x17f02e07 +vmlinux remove_inode_hash 0xad2cdc0c +vmlinux remove_proc_entry 0xe500a292 +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0x4c11d8fc +vmlinux remove_wait_queue 0x0ef22ade +vmlinux reqsk_queue_alloc 0x6d4dc15c +vmlinux reqsk_queue_destroy 0x072fc9c4 +vmlinux request_OF_resource 0xc9909961 +vmlinux request_dma 0x7054a3e4 +vmlinux request_firmware 0x639386df +vmlinux request_firmware_nowait 0x415160c5 +vmlinux request_irq 0x40ea1c8d +vmlinux request_key 0xd6acee2c +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux reserve_pmc_hardware 0x5ee7542e +vmlinux rtas 0xeb6aa6be +vmlinux rtas_call 0xff1765c7 +vmlinux rtas_data_buf 0xd1262886 +vmlinux rtas_data_buf_lock 0x717242e7 +vmlinux rtas_extended_busy_delay_time 0x731c2074 +vmlinux rtas_flash_term_hook 0x86db1cbb +vmlinux rtas_get_error_log_max 0x7dc97879 +vmlinux rtas_get_power_level 0x37383edd +vmlinux rtas_get_sensor 0x9168c033 +vmlinux rtas_progress 0x56c2b95b +vmlinux rtas_set_indicator 0x81c0a84f +vmlinux rtas_set_power_level 0x12e5ef0c +vmlinux rtas_token 0x160bd45c +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x83230e05 +vmlinux rtc_lock 0x811afadf +vmlinux rtnetlink_links 0x6be65785 +vmlinux rtnetlink_put_metrics 0x9bdc16c0 +vmlinux rtnl 0xbaa42fe2 +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0x93326584 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux rwsem_down_read_failed 0x6d625f3b +vmlinux rwsem_down_write_failed 0xf8fda569 +vmlinux rwsem_downgrade_wake 0x99dd1451 +vmlinux rwsem_wake 0x4d2a5c19 +vmlinux sb_min_blocksize 0x84962749 +vmlinux sb_set_blocksize 0x4a27acf0 +vmlinux sched_setscheduler 0x1decb761 +vmlinux schedule 0x01000e51 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0xbd661ca4 +vmlinux scm_fp_dup 0xdcf49220 +vmlinux scnprintf 0x7bb4de17 +vmlinux scsi_cmd_ioctl 0x94f54c4d +vmlinux scsi_command_size 0x9b05ea5c +vmlinux search_binary_handler 0xf7fb58d1 +vmlinux secpath_dup 0x1d70337e +vmlinux secure_dccp_sequence_number 0x0abd4d41 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0x79a1c473 +vmlinux securityfs_create_dir 0x51c88442 +vmlinux securityfs_create_file 0xdcffc9e7 +vmlinux securityfs_remove 0xdee9b17f +vmlinux send_sig 0x7a161b39 +vmlinux send_sig_info 0xdcef8bde +vmlinux seq_escape 0xd8d03b74 +vmlinux seq_lseek 0x6faa2906 +vmlinux seq_open 0x1a55d00a +vmlinux seq_path 0x5770ccc1 +vmlinux seq_printf 0x23743e8f +vmlinux seq_putc 0x22ffb4e4 +vmlinux seq_puts 0xc6046e69 +vmlinux seq_read 0x0928633b +vmlinux seq_release 0xa104350d +vmlinux seq_release_private 0x647c310c +vmlinux serio_close 0x3ea31d1a +vmlinux serio_interrupt 0x6a83107a +vmlinux serio_open 0xb953932d +vmlinux serio_reconnect 0x6080f9bd +vmlinux serio_rescan 0x68556d47 +vmlinux serio_unregister_child_port 0x8be474ef +vmlinux serio_unregister_driver 0xcb7181af +vmlinux serio_unregister_port 0x4b771e80 +vmlinux set_anon_super 0xf89c08f7 +vmlinux set_backlight_enable 0xae772c9d +vmlinux set_backlight_level 0xa37f50a9 +vmlinux set_bh_page 0xfc1fc311 +vmlinux set_binfmt 0xf9955751 +vmlinux set_blocksize 0x95b8977e +vmlinux set_cpus_allowed 0xdfe8ef40 +vmlinux set_current_groups 0x72fbae28 +vmlinux set_device_ro 0xd634fb9f +vmlinux set_disk_ro 0xbbcd3356 +vmlinux set_page_dirty 0x97e979a0 +vmlinux set_page_dirty_lock 0xdca164f9 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0xc06de03e +vmlinux setlease 0xfcbd7cfb +vmlinux setup_arg_pages 0x2b3b983e +vmlinux sget 0xed89faa7 +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x7bac1467 +vmlinux shrink_dcache_sb 0xdddb7d11 +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x8ed6f0ed +vmlinux simple_attr_close 0x4a4a95e8 +vmlinux simple_attr_open 0xeed4c510 +vmlinux simple_attr_read 0xcb7ab216 +vmlinux simple_attr_write 0xfb0c3de4 +vmlinux simple_commit_write 0xc20ef19d +vmlinux simple_dir_inode_operations 0xabb5cc1e +vmlinux simple_dir_operations 0x6955aabe +vmlinux simple_empty 0x5915fb30 +vmlinux simple_fill_super 0x06a7a5b2 +vmlinux simple_getattr 0x0104c975 +vmlinux simple_link 0x01b02070 +vmlinux simple_lookup 0x0d502b89 +vmlinux simple_pin_fs 0xdd71ce3c +vmlinux simple_prepare_write 0x72c437fc +vmlinux simple_read_from_buffer 0x5a5e7ea3 +vmlinux simple_readpage 0x7c450a8d +vmlinux simple_release_fs 0x633125fb +vmlinux simple_rename 0x6107a371 +vmlinux simple_rmdir 0x8e576212 +vmlinux simple_statfs 0x12f03bbe +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0x6607a051 +vmlinux simple_transaction_get 0xab1bcfba +vmlinux simple_transaction_read 0xd06f9384 +vmlinux simple_transaction_release 0xbd9d3763 +vmlinux simple_unlink 0xfbd181fc +vmlinux single_open 0x62703489 +vmlinux single_release 0x7b026300 +vmlinux sk_alloc 0x8a868dd7 +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0x3f747bfb +vmlinux sk_common_release 0x403f0b47 +vmlinux sk_free 0xc3d51e03 +vmlinux sk_reset_timer 0x38fd6729 +vmlinux sk_run_filter 0x48750c9e +vmlinux sk_send_sigurg 0x4ccc56fb +vmlinux sk_stop_timer 0x62f91aaa +vmlinux sk_stream_error 0x788269cf +vmlinux sk_stream_kill_queues 0x54629795 +vmlinux sk_stream_mem_schedule 0xefb08cf7 +vmlinux sk_stream_rfree 0xb43f9c7c +vmlinux sk_stream_wait_close 0xb2f82a0f +vmlinux sk_stream_wait_connect 0xa027724e +vmlinux sk_stream_wait_memory 0xf8ad64ea +vmlinux sk_stream_write_space 0xa721fa0b +vmlinux sk_wait_data 0xe35e726a +vmlinux skb_abort_seq_read 0xe09865b5 +vmlinux skb_append 0x31958cbd +vmlinux skb_append_datato_frags 0x1e5c288e +vmlinux skb_checksum 0x322fde13 +vmlinux skb_checksum_help 0x1071da54 +vmlinux skb_clone 0x89ce3260 +vmlinux skb_clone_fraglist 0x6e46f046 +vmlinux skb_copy 0xde0e1c50 +vmlinux skb_copy_and_csum_bits 0x45873ef8 +vmlinux skb_copy_and_csum_datagram_iovec 0x6d659586 +vmlinux skb_copy_and_csum_dev 0x5aa5e8be +vmlinux skb_copy_bits 0x4646e688 +vmlinux skb_copy_datagram_iovec 0x6535b07c +vmlinux skb_copy_expand 0x36186542 +vmlinux skb_cow_data 0xb6cea770 +vmlinux skb_dequeue 0xa2520f36 +vmlinux skb_dequeue_tail 0x93181ccc +vmlinux skb_find_text 0x7be38db6 +vmlinux skb_free_datagram 0x73955037 +vmlinux skb_icv_walk 0xd604e04b +vmlinux skb_insert 0xc0350958 +vmlinux skb_make_writable 0xbdde48b8 +vmlinux skb_migrate 0xd703c593 +vmlinux skb_over_panic 0xc83fc1a5 +vmlinux skb_pad 0xfcad5976 +vmlinux skb_prepare_seq_read 0x49ddbf0f +vmlinux skb_queue_head 0xe1588f3f +vmlinux skb_queue_purge 0x40773077 +vmlinux skb_queue_tail 0xb75187c1 +vmlinux skb_realloc_headroom 0x5ee5b3e3 +vmlinux skb_recv_datagram 0xcfcd9074 +vmlinux skb_seq_read 0x87ce433d +vmlinux skb_split 0xa99a90cf +vmlinux skb_store_bits 0x44d83967 +vmlinux skb_to_sgvec 0xe05252d7 +vmlinux skb_under_panic 0x0169377c +vmlinux skb_unlink 0xf61a863c +vmlinux sleep_on 0x8540b5be +vmlinux sleep_on_timeout 0x8d6ef862 +vmlinux smp_call_function 0x0014bfd1 +vmlinux smu_cmdbuf_abs 0xd2ef2638 +vmlinux smu_done_complete 0xba122a2c +vmlinux smu_get_ofdev 0x60b5b191 +vmlinux smu_get_sdb_partition 0x9e41ffda +vmlinux smu_poll 0x8eea1bc9 +vmlinux smu_present 0x68e1ef51 +vmlinux smu_queue_cmd 0x2ee4337f +vmlinux smu_queue_simple 0xe7cd99b7 +vmlinux smu_spinwait_cmd 0xb56bfd9e +vmlinux snprintf 0xaf25400d +vmlinux sock_alloc_send_skb 0x35074b64 +vmlinux sock_common_getsockopt 0x35b510f7 +vmlinux sock_common_recvmsg 0x9d2d40af +vmlinux sock_common_setsockopt 0xa2e38760 +vmlinux sock_create 0x0352179f +vmlinux sock_create_kern 0xc13c8ff6 +vmlinux sock_create_lite 0xf7f75efa +vmlinux sock_enable_timestamp 0x8ed89eb2 +vmlinux sock_get_timestamp 0xd439d61e +vmlinux sock_i_ino 0xf6d84e56 +vmlinux sock_i_uid 0xde382efe +vmlinux sock_init_data 0xff0e7f39 +vmlinux sock_kfree_s 0x80659e93 +vmlinux sock_kmalloc 0xf2901735 +vmlinux sock_map_fd 0x23de9946 +vmlinux sock_no_accept 0xdf8984e2 +vmlinux sock_no_bind 0x62fa2563 +vmlinux sock_no_connect 0xb057b5eb +vmlinux sock_no_getname 0xe4af88d7 +vmlinux sock_no_getsockopt 0xc07e8288 +vmlinux sock_no_ioctl 0xe11b4b47 +vmlinux sock_no_listen 0xc72c142c +vmlinux sock_no_mmap 0xef426244 +vmlinux sock_no_poll 0x00a36eb2 +vmlinux sock_no_recvmsg 0x88df16f2 +vmlinux sock_no_sendmsg 0x16635006 +vmlinux sock_no_sendpage 0x0d5a8cad +vmlinux sock_no_setsockopt 0x95816899 +vmlinux sock_no_shutdown 0x159c29b1 +vmlinux sock_no_socketpair 0xed2c074e +vmlinux sock_recvmsg 0x2a3393d3 +vmlinux sock_register 0x6d1da1a2 +vmlinux sock_release 0x036d2c41 +vmlinux sock_rfree 0xddd5cedc +vmlinux sock_sendmsg 0xe135df0b +vmlinux sock_setsockopt 0xc955125c +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0x182a87b9 +vmlinux sock_wfree 0xbacd0904 +vmlinux sock_wmalloc 0xadfcf8eb +vmlinux sockfd_lookup 0xd094ef96 +vmlinux soft_cursor 0xd0872902 +vmlinux sonet_copy_stats 0x89195dc3 +vmlinux sonet_subtract_stats 0x1a24e5e2 +vmlinux sort 0x9ca95a0e +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux start_thread 0x27646df3 +vmlinux start_tty 0x8aa79e97 +vmlinux steal_locks 0x133f218d +vmlinux stop_tty 0x7eae4692 +vmlinux strcasecmp 0xaafdc258 +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0xafe82e10 +vmlinux strlcat 0xb11fa1ce +vmlinux strlcpy 0x672144bd +vmlinux strlen 0xdcb5671d +vmlinux strncat 0x234509f3 +vmlinux strnchr 0x7242e96d +vmlinux strncmp 0x85abc85f +vmlinux strncpy 0x7ec9bfbc +vmlinux strnicmp 0x756e6992 +vmlinux strnlen 0xcc07af75 +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0x3fa913da +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0x76ef09eb +vmlinux submit_bh 0x8246ec8e +vmlinux submit_bio 0x46d0fe8a +vmlinux subsys_create_file 0xc970053f +vmlinux subsys_remove_file 0xa2ed36c3 +vmlinux subsystem_init 0xe3dc79b1 +vmlinux subsystem_register 0xf033f9f7 +vmlinux subsystem_unregister 0xc6b2fd30 +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0x3fdf5bea +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0x6d45d32a +vmlinux sync_dirty_buffer 0x78989ff6 +vmlinux sync_inode 0x61af2158 +vmlinux sync_mapping_buffers 0xd7848578 +vmlinux sync_page_range 0x2c95a9dc +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xdcb0349b +vmlinux sys_ctrler 0x74fe8730 +vmlinux sys_ioctl 0x208ce54a +vmlinux sys_open 0xe269ea1c +vmlinux sys_read 0x12703a3e +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0xd2ce1f17 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0xd076447f +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0xf8fdb11e +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0x5c2e65e6 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x196a9d30 +vmlinux sysdev_class_unregister 0xe1d5effd +vmlinux sysdev_create_file 0xc7772de1 +vmlinux sysdev_driver_register 0x2fa67eaf +vmlinux sysdev_driver_unregister 0x4a389aa9 +vmlinux sysdev_register 0x6b97f7f1 +vmlinux sysdev_remove_file 0xc837e54f +vmlinux sysdev_unregister 0x9e6cda6e +vmlinux sysfs_chmod_file 0x42d1f2ef +vmlinux sysfs_create_bin_file 0xb614a23f +vmlinux sysfs_create_dir 0xda4304ab +vmlinux sysfs_create_file 0x14c633f1 +vmlinux sysfs_create_group 0x2cae4b39 +vmlinux sysfs_create_link 0xb8b45a37 +vmlinux sysfs_remove_bin_file 0x5e08a38e +vmlinux sysfs_remove_dir 0xd90ddeb2 +vmlinux sysfs_remove_file 0xc900c75b +vmlinux sysfs_remove_group 0x32b4a8f4 +vmlinux sysfs_remove_link 0x62360797 +vmlinux sysfs_rename_dir 0x0a40cf4b +vmlinux sysfs_update_file 0xeea288f0 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0xacb5ff2d +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0x249242f5 +vmlinux task_nice 0x8151ebdb +vmlinux task_no_data_intr 0x4444c858 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0x0319550c +vmlinux tb_ticks_per_usec 0x915e1208 +vmlinux tc_classify 0xf11570dd +vmlinux tcf_em_register 0x97750078 +vmlinux tcf_em_tree_destroy 0xa316e2a5 +vmlinux tcf_em_tree_dump 0xbda9d4d5 +vmlinux tcf_em_tree_validate 0x48e8a34a +vmlinux tcf_em_unregister 0x8e891f59 +vmlinux tcf_exts_change 0x84d0c296 +vmlinux tcf_exts_destroy 0x6e6c65c6 +vmlinux tcf_exts_dump 0x24c9a237 +vmlinux tcf_exts_dump_stats 0x5712e95c +vmlinux tcf_exts_validate 0xbe9fd782 +vmlinux tcf_police 0x52370cff +vmlinux tcf_police_destroy 0xd8f45891 +vmlinux tcf_police_dump 0x7ccdcee9 +vmlinux tcf_police_dump_stats 0xdea2927e +vmlinux tcf_police_hash 0x8493d6e7 +vmlinux tcf_police_ht 0x0b60a2af +vmlinux tcf_police_locate 0x15c85158 +vmlinux tcf_police_lookup 0x3159f35f +vmlinux tcf_police_new_index 0x7ae0f6c9 +vmlinux tcp_check_req 0xa3657c9d +vmlinux tcp_child_process 0xcbf03778 +vmlinux tcp_close 0x7dad4756 +vmlinux tcp_connect 0xbdb6aa72 +vmlinux tcp_create_openreq_child 0x975bbe6f +vmlinux tcp_death_row 0x61101977 +vmlinux tcp_disconnect 0x2200425d +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x503847b3 +vmlinux tcp_getsockopt 0x037ca6f8 +vmlinux tcp_hashinfo 0xf40f2c59 +vmlinux tcp_init_congestion_ops 0xb83ad59d +vmlinux tcp_init_xmit_timers 0xc9ca9fd1 +vmlinux tcp_ioctl 0x5a9528e3 +vmlinux tcp_make_synack 0x71c911db +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0xc486d79c +vmlinux tcp_poll 0x32fa468e +vmlinux tcp_proc_register 0x25dfb724 +vmlinux tcp_proc_unregister 0x99bfc416 +vmlinux tcp_prot 0x965d9cb6 +vmlinux tcp_rcv_established 0x63f238d1 +vmlinux tcp_rcv_state_process 0x53ece042 +vmlinux tcp_read_sock 0xcbf6e262 +vmlinux tcp_recvmsg 0x38c11b35 +vmlinux tcp_register_congestion_control 0x94329a8c +vmlinux tcp_reno_cong_avoid 0x3fa0fce2 +vmlinux tcp_reno_min_cwnd 0x0de625d5 +vmlinux tcp_reno_ssthresh 0xb7ac308d +vmlinux tcp_sendmsg 0x8f1d489f +vmlinux tcp_sendpage 0xaca9d838 +vmlinux tcp_setsockopt 0xef7fdff1 +vmlinux tcp_shutdown 0xc90c1faa +vmlinux tcp_simple_retransmit 0x6f8b01d8 +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0xdb4838dc +vmlinux tcp_timewait_state_process 0x72f32781 +vmlinux tcp_unhash 0xee3b7bcf +vmlinux tcp_unregister_congestion_control 0x8616aa91 +vmlinux tcp_v4_conn_request 0xb015bccc +vmlinux tcp_v4_connect 0x1d95304f +vmlinux tcp_v4_destroy_sock 0xbadef6e5 +vmlinux tcp_v4_do_rcv 0x766cf7a0 +vmlinux tcp_v4_remember_stamp 0x8bb418c7 +vmlinux tcp_v4_send_check 0x90ad473a +vmlinux tcp_v4_syn_recv_sock 0x464fe2b5 +vmlinux test_clear_page_dirty 0xe9c84fa2 +vmlinux test_set_page_writeback 0xbf01e42f +vmlinux textsearch_destroy 0xc28c4ae2 +vmlinux textsearch_find_continuous 0x7ace54f1 +vmlinux textsearch_prepare 0xc0242752 +vmlinux textsearch_register 0xf27b0710 +vmlinux textsearch_unregister 0x7b0effd5 +vmlinux thaw_bdev 0x317a4a42 +vmlinux timespec_trunc 0xc045ad4e +vmlinux to_tm 0x6a61f874 +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0x92e421bd +vmlinux tr_type_trans 0x5e81cb1f +vmlinux transport_add_device 0x2413f2d0 +vmlinux transport_class_register 0xe1d2052a +vmlinux transport_class_unregister 0x0ebb0947 +vmlinux transport_configure_device 0x929cba84 +vmlinux transport_destroy_device 0x5cd03e5f +vmlinux transport_remove_device 0x7ed16074 +vmlinux transport_setup_device 0x284abdcb +vmlinux truncate_inode_pages 0xebe54a8e +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0xe4743619 +vmlinux try_to_release_page 0x3e9d06bb +vmlinux tty_check_change 0x9bcfe563 +vmlinux tty_flip_buffer_push 0x5ffadd04 +vmlinux tty_get_baud_rate 0xda763a78 +vmlinux tty_hangup 0x6657948b +vmlinux tty_hung_up_p 0x1d42bcfe +vmlinux tty_ldisc_deref 0x41139701 +vmlinux tty_ldisc_flush 0x7559e2ce +vmlinux tty_ldisc_get 0x6719a2fe +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x22f6f399 +vmlinux tty_ldisc_ref_wait 0xa356d731 +vmlinux tty_name 0x2d8750e5 +vmlinux tty_register_device 0xf00314e4 +vmlinux tty_register_driver 0x77a71c76 +vmlinux tty_register_ldisc 0xc32e4f82 +vmlinux tty_set_operations 0x3bc6d44b +vmlinux tty_std_termios 0x09f417e8 +vmlinux tty_termios_baud_rate 0x9aaa02f4 +vmlinux tty_unregister_device 0xd36b348e +vmlinux tty_unregister_driver 0xf71ea2f0 +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0xcf4e2081 +vmlinux tty_wait_until_sent 0x0cfbc807 +vmlinux tty_wakeup 0x38b9a772 +vmlinux udelay 0xa39b4cf2 +vmlinux udp_disconnect 0xf0cbe5b2 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0x7e5919df +vmlinux udp_ioctl 0xb3dcfb93 +vmlinux udp_poll 0x65cfd7a6 +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x687e3641 +vmlinux udp_proc_unregister 0x43bc2c87 +vmlinux udp_prot 0x8be381ec +vmlinux udp_sendmsg 0xe7f6eb49 +vmlinux uhci_check_and_reset_hc 0x6ed28f4d +vmlinux uhci_reset_hc 0xdd321085 +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unload_nls 0x1d098861 +vmlinux unlock_buffer 0x70085bd6 +vmlinux unlock_kernel 0xb1f975aa +vmlinux unlock_new_inode 0x6874657a +vmlinux unlock_page 0xce18b95e +vmlinux unlock_rename 0xff0ae825 +vmlinux unmap_bus_range 0x69c5fa37 +vmlinux unmap_mapping_range 0x8f41ca3d +vmlinux unmap_underlying_metadata 0xe42248c4 +vmlinux unregister_8022_client 0x05011a27 +vmlinux unregister_backlight_controller 0x44e90ac6 +vmlinux unregister_binfmt 0x24f6d1c0 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0x589840e6 +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_exec_domain 0x1ca29f4d +vmlinux unregister_filesystem 0xf2efd183 +vmlinux unregister_framebuffer 0x7e816c06 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_key_type 0x840240b3 +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0x141e05dd +vmlinux unregister_netdevice 0xe80ec1db +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0x4a8296d5 +vmlinux unregister_qdisc 0x517f8006 +vmlinux unregister_quota_format 0xb2cf629d +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0xa0d38e0a +vmlinux unregister_snap_client 0xecaf80e6 +vmlinux unregister_sysctl_table 0xd50103bb +vmlinux unregister_sysrq_key 0x91c6e29c +vmlinux unregister_tcf_proto_ops 0x260d52dc +vmlinux unregister_timer_hook 0xce60429b +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0x8d10fd98 +vmlinux update_region 0x0179f1a3 +vmlinux user_describe 0xc071823b +vmlinux user_destroy 0x03bba70f +vmlinux user_duplicate 0x2116cae6 +vmlinux user_instantiate 0x5840acba +vmlinux user_match 0x25902c2f +vmlinux user_read 0xfd4edeb6 +vmlinux user_update 0x5424ee2b +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0xd7a3b03f +vmlinux vc_cons 0x1643600e +vmlinux vc_resize 0x09f9eddf +vmlinux vcc_hash 0x2cc2d52d +vmlinux vcc_insert_socket 0x2ab0e110 +vmlinux vcc_release_async 0x0e771263 +vmlinux vcc_sklist_lock 0xe9e8631f +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0x30ef35be +vmlinux vfs_follow_link 0xcff7d035 +vmlinux vfs_fstat 0x471f48c2 +vmlinux vfs_get_dqblk 0x7578d502 +vmlinux vfs_get_dqinfo 0x987c37c3 +vmlinux vfs_getattr 0x51ccf0eb +vmlinux vfs_link 0x59087c29 +vmlinux vfs_llseek 0xf56ee503 +vmlinux vfs_lstat 0x39f0a1be +vmlinux vfs_mkdir 0xf4ae83a6 +vmlinux vfs_mknod 0x56507836 +vmlinux vfs_permission 0x9fff1428 +vmlinux vfs_quota_off 0xd091d0e9 +vmlinux vfs_quota_on 0x83a64309 +vmlinux vfs_quota_on_mount 0x6e2e3459 +vmlinux vfs_quota_sync 0xf283d433 +vmlinux vfs_read 0x26d8fc22 +vmlinux vfs_readdir 0x0497249a +vmlinux vfs_readlink 0xf4f97c8a +vmlinux vfs_readv 0xfa116816 +vmlinux vfs_rename 0x2f2ba4d0 +vmlinux vfs_rmdir 0xa77b8342 +vmlinux vfs_set_dqblk 0x6778efa2 +vmlinux vfs_set_dqinfo 0xa99ceab7 +vmlinux vfs_stat 0x3b1f731f +vmlinux vfs_statfs 0x58c5f374 +vmlinux vfs_symlink 0x4b8ef00c +vmlinux vfs_unlink 0xff6ccf44 +vmlinux vfs_write 0xf3dc323c +vmlinux vfs_writev 0xd7924863 +vmlinux vio_disable_interrupts 0xc50b4afc +vmlinux vio_enable_interrupts 0xdedf0f74 +vmlinux vio_find_node 0x948ebc28 +vmlinux vio_get_attribute 0xfa30ccf2 +vmlinux vio_register_device_node 0xd0278a79 +vmlinux vio_register_driver 0x22b2d189 +vmlinux vio_unregister_device 0x4a73720b +vmlinux vio_unregister_driver 0x3618de7b +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x59367d06 +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0xf1856592 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0x94190246 +vmlinux vmtruncate 0xa69bab55 +vmlinux vprintk 0x777a8e29 +vmlinux vscnprintf 0xf3522c9c +vmlinux vsnprintf 0x0e57f111 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0xf69be488 +vmlinux wait_for_completion_interruptible 0xc7ad2fb8 +vmlinux wait_for_completion_interruptible_timeout 0xbf82ea61 +vmlinux wait_for_completion_timeout 0xc6b6d78c +vmlinux wait_on_page_bit 0x8d21cc39 +vmlinux wait_on_sync_kiocb 0x4d5d7fbe +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0xc6c23fb2 +vmlinux wireless_send_event 0x6f7bd026 +vmlinux wireless_spy_update 0x1d3deacd +vmlinux write_inode_now 0x477e0a56 +vmlinux write_one_page 0x7abfc13d +vmlinux xfrm4_rcv 0xe26d8b46 +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0xbaceece0 +vmlinux xfrm_bundle_ok 0x3604686b +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0x53a60516 +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0x152f2579 +vmlinux xfrm_dst_lookup 0xf7d5564d +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0x8658fbcf +vmlinux xfrm_find_acq_byseq 0xdf3278db +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0x2463d062 +vmlinux xfrm_init_state 0x18a9f68e +vmlinux xfrm_lookup 0x7045c62e +vmlinux xfrm_parse_spi 0x391a225a +vmlinux xfrm_policy_alloc 0x47985dae +vmlinux xfrm_policy_byid 0x7997f28c +vmlinux xfrm_policy_bysel 0x5a126302 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x69cdb046 +vmlinux xfrm_policy_list 0xe3ae647b +vmlinux xfrm_policy_register_afinfo 0xaa682463 +vmlinux xfrm_policy_unregister_afinfo 0xc100c5b5 +vmlinux xfrm_policy_walk 0xd5401e20 +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0xb78d73ee +vmlinux xfrm_register_type 0xd3861932 +vmlinux xfrm_replay_advance 0xfc71cc11 +vmlinux xfrm_replay_check 0xe9eb7eec +vmlinux xfrm_state_add 0xadb7b961 +vmlinux xfrm_state_alloc 0x10801c79 +vmlinux xfrm_state_check 0xb61f0b9b +vmlinux xfrm_state_check_expire 0x26aec9c4 +vmlinux xfrm_state_delete 0x46a1badc +vmlinux xfrm_state_delete_tunnel 0xc81ccfd7 +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0x5c95d9b3 +vmlinux xfrm_state_lookup 0x0b1bd148 +vmlinux xfrm_state_mtu 0x80f739a3 +vmlinux xfrm_state_register_afinfo 0x29f80f8c +vmlinux xfrm_state_unregister_afinfo 0x30061a09 +vmlinux xfrm_state_update 0xc77a64cc +vmlinux xfrm_state_walk 0x7c15378b +vmlinux xfrm_unregister_km 0x185cfd31 +vmlinux xfrm_unregister_type 0xa0130d59 +vmlinux xfrm_user_policy 0xd8f794e4 +vmlinux xrlim_allow 0xb953d922 +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xe2628d76 +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0xccd709cd +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0xce3be354 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/powerpc/powerpc-smp.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/powerpc/powerpc-smp.modules @@ -0,0 +1,1413 @@ +3c359 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +6pack +8021q +8139cp +8139too +8250 +8250_pci +8390 +9p2000 +a3d +aacraid +abyss +ac97_codec +acecad +acenic +aci +act200l-sir +actisys-sir +acx +ad1848 +ad1889 +adfs +adi +adlib_card +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +advansys +aec62xx +aedsp16 +aes +affs +af_key +af_packet +agpgart +ah4 +ah6 +aha152x_cs +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airport +airprime +ali-ircc +ambassador +amd8111e +analog +ans-lcd +anubis +aoe +apm_emu +appletalk +appletouch +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atmtcp +atp870u +atxp1 +auerswald +auth_rpcgss +autofs +autofs4 +ax25 +axnet_cs +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_misc +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bmac +bnep +bnx2 +bonding +bpa10x +bpck +bpck6 +bpqether +br2684 +bridge +bsd_comp +bt3c_cs +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +bw-qcam +capability +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cman +cmd64x +cn +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comm +commoncap +configfs +cp2101 +cpia +cpia_pp +cpia_usb +cpqarray +cpufreq_conservative +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxacru +cxgb +cyber2000fb +cyberjack +cyblafb +cyclades +cyclomx +cycx_drv +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +des +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +diskonchip +dl2k +dlci +dlm +dmasound_core +dmasound_pmac +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +donauboe +dpc7146 +dpt_i2o +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dst +dst_ca +dstr +ds_w1_bridge +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +eagle-usb +eata +eata_pio +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +econet +eepro100 +eeprom +efs +ehci-hcd +elo +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +eni +epat +epca +epia +epic100 +eql +esi-sir +esp4 +esp6 +eth1394 +evbug +evdev +exportfs +ext2 +ext3 +farsync +fat +faulty +fdomain +fdomain_cs +fealnx +firestream +fit2 +fit3 +floppy +fm801-gp +fmvj18x_cs +forcedeth +fore_200e +freevxfs +friq +frpw +fscher +fscpos +ftdi_sio +ftl +fuse +gadgetfs +gamecon +gameport +garmin_gps +gdth +generic +generic_nvram +generic_serial +gen_probe +genrtc +g_ether +gf2k +g_file_storage +gfs +girbil-sir +gl518sm +gl520sm +gl620a +gnbd +grip +grip_mp +g_serial +guillemot +gunze +g_zero +hamachi +hci_uart +hci_usb +hci_vhci +hdlc +hdlcdrv +he +hermes +hexium_gemini +hexium_orion +hfs +hfsplus +hidp +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hp4x +hpfs +hpt34x +hpt366 +hwmon-vid +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-dev +i2c-hydra +i2c-i801 +i2c-i810 +i2c-isa +i2c-keywest +i2c-matroxfb +i2c-mpc +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i810_audio +i82092 +ib_cm +ib_core +ib_ipoib +ib_mad +ibmcam +ib_mthca +ibmtr_cs +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ide-cd +ide-cs +ide-disk +ide-floppy +ide-scsi +ide-tape +idmouse +idt77252 +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +inftl +initio +interact +io_edgeport +io_ti +ip2 +ip2main +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ip_gre +iphase +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irport +irtty-sir +ir-usb +iscsi_tcp +islsm +islsm_device +islsm_pci +islsm_usb +isofs +isp116x-hcd +istallion +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kahlua +kaweth +kbic +kbtab +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l64781 +lanai +lanstreamer +lapb +lapbether +lcd +ldusb +lec +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +litelink-sir +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lockd +lock_dlm +lock_gulm +lock_harness +lock_nolock +loop +lp +lpfc +lxt +m41t00 +ma600-sir +mace +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_maven +matrox_w1 +max1619 +max6875 +mcp2120-sir +mct_u232 +md4 +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mesh +mga +michael_mic +microtek +mii +minix +mk712 +mkiss +mmc_core +mol +moxa +mpoa +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu401 +mrv8k +msdos +msp3400 +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouch +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mv643xx_eth +mxb +mxser +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +ne2k-pci +neofb +net1080 +net2280 +netconsole +netrom +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +nicstar +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +nsc-ircc +nsp32 +nsp_cs +ntfs +nvidiafb +nvram +nxt2002 +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ohci1394 +ohci-hcd +old_belkin-sir +olympic +omninet +on20 +on26 +onenand +opl3 +opl3sa2 +oprofile +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pas2 +pc300 +pc87360 +pca9539 +pcd +pcf8574 +pcf8591 +pci +pci200syn +pcilynx +pcips2 +pcmcia +pcmcia_core +pcmciamtd +pcnet32 +pcnet_cs +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmac_zilog +pmc551 +podxtpro +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +psmouse +pss +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radio-gemtek-pci +radio-maestro +radio-maxiradio +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio +rio500 +riscom8 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rrunner +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc8564 +rtl8150 +rxrpc +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7111 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb +sb_lib +sbp2 +sc1200 +sch_atm +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_debug +scsi_mod +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200_acb +sdhci +sd_mod +se401 +seclvl +serial_core +serial_cs +serio_raw +sermouse +serpent +serport +sg +sha1 +sha256 +sha512 +shaper +sidewinder +siimage +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sk98lin +skfp +skge +sky2 +sl811_cs +sl811-hcd +sl82c105 +slhc +slip +slram +smbfs +smc91c92_cs +smsc47b397 +smsc47m1 +smsc-ircc2 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1889 +snd-ainstr-fm +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fm801 +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-powermac +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +softdog +sound +soundcore +sp8870 +sp887x +spaceball +spaceorb +spca5xx +specialix +spectrum_cs +speedtch +squashfs +sr_mod +st +stallion +starfire +stinger +stir4200 +strip +stv0297 +stv0299 +stv680 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +swim3 +sx +sx8 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink +synclink_cs +synclinkmp +syncppp +sysv +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tea +tea6415c +tea6420 +tekram-sir +tg3 +tgr192 +therm_adt746x +therm_windtunnel +tipar +ti_usb_3410_5052 +tlan +tlclk +tmdc +tms380tr +tmscsim +tmspci +touchkitusb +tpm +tpm_atmel +tpm_nsc +trident +tridentfb +trix +trm290 +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +twidjoy +twofish +typhoon +uart401 +uart6850 +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +umem +uninorth-agp +unionfs +uPD98402 +usbatm +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vfat +vgastate +via +via686a +via82cxxx +via-ircc +via-rhine +via-velocity +vicam +video1394 +video-buf +video-buf-dvb +videodev +visor +vlsi_ir +v_midi +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w83627ehf +w83627hf +w83781d +w83792d +w83977af_ir +w83l785ts +w9966 +w9968cf +wacom +wanrouter +wanxl +warrior +wavelan_cs +wbsd +wdrtas +wdt_pci +whiteheat +winbond-840 +windfarm_core +wire +wl3501_cs +wm8775 +wp512 +x1205 +x25 +x25_asy +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xircom_tulip_cb +xor +xpad +xtkbd +xusbatm +yam +yealink +yellowfin +yenta_socket +zatm +zaurus +zd1201 +zd1211 +zlib_deflate --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/powerpc/powerpc +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/powerpc/powerpc @@ -0,0 +1,5382 @@ +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0x225c7726 +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0x4fd9e1a1 +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0xac5db655 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xdc30c180 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/atm/suni suni_init 0x6ac9f829 +drivers/atm/uPD98402 uPD98402_init 0xe44aed94 +drivers/block/loop loop_register_transfer 0x2c3081bb +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0x1c2059dd +drivers/block/paride/paride pi_disconnect 0x83767573 +drivers/block/paride/paride pi_do_claimed 0x3f94dc30 +drivers/block/paride/paride pi_init 0x51b0423c +drivers/block/paride/paride pi_read_block 0xc10a74e4 +drivers/block/paride/paride pi_read_regr 0x75f06815 +drivers/block/paride/paride pi_register 0x9fc3a946 +drivers/block/paride/paride pi_release 0x7d491e8d +drivers/block/paride/paride pi_schedule_claimed 0xfd2f9a11 +drivers/block/paride/paride pi_unregister 0x4026f402 +drivers/block/paride/paride pi_write_block 0x33e54f96 +drivers/block/paride/paride pi_write_regr 0x304935b0 +drivers/cdrom/cdrom cdrom_get_last_written 0xce1bf845 +drivers/cdrom/cdrom cdrom_get_media_event 0xaa8af9b8 +drivers/cdrom/cdrom cdrom_ioctl 0x7efdf1c1 +drivers/cdrom/cdrom cdrom_media_changed 0xca0edce6 +drivers/cdrom/cdrom cdrom_mode_select 0x19fb7212 +drivers/cdrom/cdrom cdrom_mode_sense 0x6b881c61 +drivers/cdrom/cdrom cdrom_number_of_slots 0xa3125860 +drivers/cdrom/cdrom cdrom_open 0xad17b0d9 +drivers/cdrom/cdrom cdrom_release 0xafc98f9d +drivers/cdrom/cdrom init_cdrom_command 0x344adbd5 +drivers/cdrom/cdrom register_cdrom 0x27b8465e +drivers/cdrom/cdrom unregister_cdrom 0xf9903821 +drivers/char/agp/agpgart agp3_generic_cleanup 0xc2424641 +drivers/char/agp/agpgart agp3_generic_configure 0x4b085dbf +drivers/char/agp/agpgart agp3_generic_fetch_size 0xde9b17ed +drivers/char/agp/agpgart agp3_generic_sizes 0x546264cf +drivers/char/agp/agpgart agp3_generic_tlbflush 0xc3c44f32 +drivers/char/agp/agpgart agp_add_bridge 0x19d5ed02 +drivers/char/agp/agpgart agp_alloc_bridge 0x7202a9c8 +drivers/char/agp/agpgart agp_allocate_memory 0x3bfcf5a6 +drivers/char/agp/agpgart agp_backend_acquire 0xeb47b683 +drivers/char/agp/agpgart agp_backend_release 0x3a2ead90 +drivers/char/agp/agpgart agp_bind_memory 0x28ae0653 +drivers/char/agp/agpgart agp_bridge 0x93996ba0 +drivers/char/agp/agpgart agp_bridges 0x673f815e +drivers/char/agp/agpgart agp_collect_device_status 0xc8091a9b +drivers/char/agp/agpgart agp_copy_info 0x14abff67 +drivers/char/agp/agpgart agp_create_memory 0xab8ba79b +drivers/char/agp/agpgart agp_device_command 0xe6d5c272 +drivers/char/agp/agpgart agp_enable 0xe1213d86 +drivers/char/agp/agpgart agp_find_bridge 0x6358939a +drivers/char/agp/agpgart agp_free_key 0xd0fef3b2 +drivers/char/agp/agpgart agp_free_memory 0x9522d13a +drivers/char/agp/agpgart agp_generic_alloc_by_type 0xa6df0216 +drivers/char/agp/agpgart agp_generic_alloc_page 0x3ee213cf +drivers/char/agp/agpgart agp_generic_create_gatt_table 0x3550bc58 +drivers/char/agp/agpgart agp_generic_destroy_page 0xbba27749 +drivers/char/agp/agpgart agp_generic_enable 0x8dfd2db8 +drivers/char/agp/agpgart agp_generic_free_by_type 0x75dddebf +drivers/char/agp/agpgart agp_generic_free_gatt_table 0x0cd8291b +drivers/char/agp/agpgart agp_generic_insert_memory 0x756be657 +drivers/char/agp/agpgart agp_generic_mask_memory 0x72b8edae +drivers/char/agp/agpgart agp_generic_remove_memory 0x68a15fe6 +drivers/char/agp/agpgart agp_memory_reserved 0xe089cfcc +drivers/char/agp/agpgart agp_num_entries 0xd6feefa5 +drivers/char/agp/agpgart agp_off 0x7538b132 +drivers/char/agp/agpgart agp_put_bridge 0xd578ec62 +drivers/char/agp/agpgart agp_remove_bridge 0x7c2ef4f4 +drivers/char/agp/agpgart agp_try_unsupported_boot 0xc5d9c46c +drivers/char/agp/agpgart agp_unbind_memory 0xc7073761 +drivers/char/agp/agpgart get_agp_version 0x79031c01 +drivers/char/agp/agpgart global_cache_flush 0xa4d4f0e6 +drivers/char/drm/drm drm_addbufs_agp 0xc390709b +drivers/char/drm/drm drm_addbufs_fb 0x21a2acb8 +drivers/char/drm/drm drm_addbufs_pci 0xe9b494c4 +drivers/char/drm/drm drm_addmap 0x2107a236 +drivers/char/drm/drm drm_agp_acquire 0x4a9a445b +drivers/char/drm/drm drm_agp_alloc 0x998c6c63 +drivers/char/drm/drm drm_agp_bind 0x7c35b5db +drivers/char/drm/drm drm_agp_bind_memory 0x47899393 +drivers/char/drm/drm drm_agp_enable 0xe5a784bd +drivers/char/drm/drm drm_agp_free 0x1bdf64ed +drivers/char/drm/drm drm_agp_info 0xa87a45ba +drivers/char/drm/drm drm_agp_release 0xf2c12b39 +drivers/char/drm/drm drm_agp_unbind 0x5af313e6 +drivers/char/drm/drm drm_ati_pcigart_cleanup 0x51ee1ebe +drivers/char/drm/drm drm_ati_pcigart_init 0xdcc4e700 +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0x2188d06c +drivers/char/drm/drm drm_core_reclaim_buffers 0x759b661b +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0xb67a2263 +drivers/char/drm/drm drm_fasync 0xc87a6476 +drivers/char/drm/drm drm_get_dev 0xca8479c7 +drivers/char/drm/drm drm_get_resource_len 0x6d04fd13 +drivers/char/drm/drm drm_get_resource_start 0x6de30edb +drivers/char/drm/drm drm_init 0x44763450 +drivers/char/drm/drm drm_ioctl 0xbf85a800 +drivers/char/drm/drm drm_irq_uninstall 0x1744ae57 +drivers/char/drm/drm drm_mmap 0x9dfdc679 +drivers/char/drm/drm drm_open 0x60acd8f6 +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0xfa2c5358 +drivers/char/drm/drm drm_pci_free 0x95983f2b +drivers/char/drm/drm drm_poll 0x76e9fb46 +drivers/char/drm/drm drm_release 0x79633e5a +drivers/char/drm/drm drm_rmmap 0x78f38625 +drivers/char/drm/drm drm_rmmap_locked 0x8835da5a +drivers/char/drm/drm drm_vbl_send_signals 0xa732d79b +drivers/char/generic_serial gs_block_til_ready 0x3d726a95 +drivers/char/generic_serial gs_chars_in_buffer 0x38da99f7 +drivers/char/generic_serial gs_close 0x6a54c94a +drivers/char/generic_serial gs_flush_buffer 0x24e06c37 +drivers/char/generic_serial gs_flush_chars 0xfe59ffa7 +drivers/char/generic_serial gs_getserial 0x7b6938c0 +drivers/char/generic_serial gs_got_break 0xb4a71046 +drivers/char/generic_serial gs_hangup 0x3a0e7cb6 +drivers/char/generic_serial gs_init_port 0xf8fc5059 +drivers/char/generic_serial gs_put_char 0x99d94315 +drivers/char/generic_serial gs_set_termios 0xa018458e +drivers/char/generic_serial gs_setserial 0x95f2e15c +drivers/char/generic_serial gs_start 0xee828d29 +drivers/char/generic_serial gs_stop 0x3b6b4ca8 +drivers/char/generic_serial gs_write 0x72d2ba76 +drivers/char/generic_serial gs_write_room 0x6de15493 +drivers/char/ip2main ip2_loadmain 0x5f735f69 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0x5da6b1bc +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0xf185e3a1 +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0xc726f014 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0x2843c184 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0x5972049a +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0xae70d88d +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0x05455efb +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0xb634b4fb +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0x455ff0e5 +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x23e5b0b1 +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0xd9d9bde0 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0x1284355a +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0x8ceabc32 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0x6057b265 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0x992c5ad6 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0x3c73906e +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0x65f26f56 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0xe4e5c2b0 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0xa1e40634 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0x6bf4c351 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0x2fa7a313 +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0x34580707 +drivers/char/tpm/tpm tpm_open 0x06929681 +drivers/char/tpm/tpm tpm_pm_resume 0x1508ab65 +drivers/char/tpm/tpm tpm_pm_suspend 0x0eba9c02 +drivers/char/tpm/tpm tpm_read 0xf0b9644d +drivers/char/tpm/tpm tpm_register_hardware 0x2db691b8 +drivers/char/tpm/tpm tpm_release 0x38ed38af +drivers/char/tpm/tpm tpm_remove_hardware 0xda5f2852 +drivers/char/tpm/tpm tpm_show_caps 0xff585104 +drivers/char/tpm/tpm tpm_show_pcrs 0xa39aaf0c +drivers/char/tpm/tpm tpm_show_pubek 0xa05e5fe7 +drivers/char/tpm/tpm tpm_store_cancel 0x86a2d8ed +drivers/char/tpm/tpm tpm_write 0x19926e10 +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0x5383180c +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0xbd404b82 +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0x9a2d1481 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0xf9fb2057 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0xde967f54 +drivers/i2c/busses/i2c-amd756 amd756_smbus 0x9c0cf0eb +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0x8ab4d7c9 +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0x5a4def02 +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0x9a262204 +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x4358bad7 +drivers/ieee1394/ieee1394 csr1212_read 0x85bc1770 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x9304be3b +drivers/ieee1394/ieee1394 dma_prog_region_free 0x178ee524 +drivers/ieee1394/ieee1394 dma_prog_region_init 0x7fe8e9ca +drivers/ieee1394/ieee1394 dma_region_alloc 0x55ebe3ab +drivers/ieee1394/ieee1394 dma_region_free 0xc7ed0cec +drivers/ieee1394/ieee1394 dma_region_init 0xdf2f871e +drivers/ieee1394/ieee1394 dma_region_mmap 0xb0b6feca +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0xa9915e9e +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0x3a8c981d +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x2d055129 +drivers/ieee1394/ieee1394 highlevel_host_reset 0xff8bf5c8 +drivers/ieee1394/ieee1394 hpsb_add_host 0x92e3827f +drivers/ieee1394/ieee1394 hpsb_alloc_host 0x016a593e +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0xf8535b00 +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0x2524403a +drivers/ieee1394/ieee1394 hpsb_bus_reset 0xa6a964c3 +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0xf3ffe5e2 +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0x78f03699 +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0xdd38d6d8 +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0xb1555d78 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0xc4bce688 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0xe233fae3 +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0x5e0369ca +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0xf14638ae +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0xc9948a38 +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0xe2b04044 +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0x542ee23e +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0x48f5b3b2 +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0x37b0b282 +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0xe12b4f12 +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0x8b184334 +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0x1e1721a7 +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0xad3af394 +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0x58dd840b +drivers/ieee1394/ieee1394 hpsb_iso_stop 0x6c81457e +drivers/ieee1394/ieee1394 hpsb_iso_wake 0xb57e879d +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x3f219ca0 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0x990080b3 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0x07833e85 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0xedfd35b7 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0x55b121de +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0xa38bf2f2 +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0xb508407d +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0x26cceb2d +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0x79334524 +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0xcc0c002b +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0xc103dbb5 +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0x8adca163 +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0x07aad256 +drivers/ieee1394/ieee1394 hpsb_node_write 0x34996689 +drivers/ieee1394/ieee1394 hpsb_packet_received 0xbfea3721 +drivers/ieee1394/ieee1394 hpsb_packet_sent 0xe8647780 +drivers/ieee1394/ieee1394 hpsb_packet_success 0x9b55b817 +drivers/ieee1394/ieee1394 hpsb_protocol_class 0xb17084bc +drivers/ieee1394/ieee1394 hpsb_read 0xe06081cd +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0x6d18ac34 +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0x01cdc7f8 +drivers/ieee1394/ieee1394 hpsb_register_protocol 0x2b7aaccf +drivers/ieee1394/ieee1394 hpsb_remove_host 0x6519c582 +drivers/ieee1394/ieee1394 hpsb_reset_bus 0x58249315 +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0x2bbdbe15 +drivers/ieee1394/ieee1394 hpsb_selfid_received 0x19116c6b +drivers/ieee1394/ieee1394 hpsb_send_packet 0x3df92efc +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0x260dc2d6 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0x17e601f7 +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0xc1361386 +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0x4ac7f579 +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0x1f72b2d5 +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0x05a47b5b +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0xc3e528d2 +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0x94ca2318 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0x17626f0c +drivers/ieee1394/ieee1394 hpsb_write 0xdea20d32 +drivers/ieee1394/ieee1394 ieee1394_bus_type 0x35df3f28 +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0x1d5aeebc +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0x5da94dbb +drivers/ieee1394/ohci1394 ohci1394_stop_context 0xd3361655 +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0xe9bc80cc +drivers/infiniband/core/ib_cm ib_cm_establish 0x2fd287ba +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0xf7a7282a +drivers/infiniband/core/ib_cm ib_cm_listen 0x7b5fbf5a +drivers/infiniband/core/ib_cm ib_create_cm_id 0xf8410cfb +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0xffec5c37 +drivers/infiniband/core/ib_cm ib_send_cm_apr 0x11d91b24 +drivers/infiniband/core/ib_cm ib_send_cm_drep 0x55eb5289 +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0x2b1afb4c +drivers/infiniband/core/ib_cm ib_send_cm_lap 0x58fc6ebf +drivers/infiniband/core/ib_cm ib_send_cm_mra 0xba907009 +drivers/infiniband/core/ib_cm ib_send_cm_rej 0xae45eac3 +drivers/infiniband/core/ib_cm ib_send_cm_rep 0x6300c1e3 +drivers/infiniband/core/ib_cm ib_send_cm_req 0xcbb6c880 +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0x01701698 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0x331f57d1 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0x6052a5c8 +drivers/infiniband/core/ib_core ib_alloc_device 0xbbb1d05c +drivers/infiniband/core/ib_core ib_alloc_fmr 0x03d76913 +drivers/infiniband/core/ib_core ib_alloc_mw 0xba8ad8c0 +drivers/infiniband/core/ib_core ib_alloc_pd 0x2aecc243 +drivers/infiniband/core/ib_core ib_attach_mcast 0x0ec2b641 +drivers/infiniband/core/ib_core ib_create_ah 0xa5f390af +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0x0d3a82fe +drivers/infiniband/core/ib_core ib_create_cq 0x4212cbf8 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0x5c526b4a +drivers/infiniband/core/ib_core ib_create_qp 0x66fde2bb +drivers/infiniband/core/ib_core ib_create_srq 0xbdb82cf0 +drivers/infiniband/core/ib_core ib_dealloc_device 0xff9acb48 +drivers/infiniband/core/ib_core ib_dealloc_fmr 0x411bc5ff +drivers/infiniband/core/ib_core ib_dealloc_mw 0xbdc85f4b +drivers/infiniband/core/ib_core ib_dealloc_pd 0xa93c653d +drivers/infiniband/core/ib_core ib_dereg_mr 0x75b4f758 +drivers/infiniband/core/ib_core ib_destroy_ah 0xca6e4f46 +drivers/infiniband/core/ib_core ib_destroy_cq 0x3448327a +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x06081ed9 +drivers/infiniband/core/ib_core ib_destroy_qp 0xb1984972 +drivers/infiniband/core/ib_core ib_destroy_srq 0xd35ba77d +drivers/infiniband/core/ib_core ib_detach_mcast 0x5fb8779b +drivers/infiniband/core/ib_core ib_dispatch_event 0x1c2e6535 +drivers/infiniband/core/ib_core ib_find_cached_gid 0xab118fd8 +drivers/infiniband/core/ib_core ib_find_cached_pkey 0x5c07b6f3 +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0xa025b9a8 +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0x4638123c +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0xfb6a0ace +drivers/infiniband/core/ib_core ib_get_cached_gid 0xc5306d99 +drivers/infiniband/core/ib_core ib_get_cached_pkey 0x5487f4db +drivers/infiniband/core/ib_core ib_get_client_data 0x6fa3c0b0 +drivers/infiniband/core/ib_core ib_get_dma_mr 0x3e8b2bf9 +drivers/infiniband/core/ib_core ib_modify_ah 0xcd5d69d2 +drivers/infiniband/core/ib_core ib_modify_device 0xcac33277 +drivers/infiniband/core/ib_core ib_modify_port 0x215e06ca +drivers/infiniband/core/ib_core ib_modify_qp 0xb61f93ce +drivers/infiniband/core/ib_core ib_modify_srq 0xff3d8f44 +drivers/infiniband/core/ib_core ib_pack 0x520b2638 +drivers/infiniband/core/ib_core ib_query_ah 0xadeaddc4 +drivers/infiniband/core/ib_core ib_query_device 0x0f77849b +drivers/infiniband/core/ib_core ib_query_gid 0xd4351257 +drivers/infiniband/core/ib_core ib_query_mr 0xb0e1cd7c +drivers/infiniband/core/ib_core ib_query_pkey 0x7b7f8477 +drivers/infiniband/core/ib_core ib_query_port 0x3727ca43 +drivers/infiniband/core/ib_core ib_query_qp 0xedcdc9c3 +drivers/infiniband/core/ib_core ib_query_srq 0x60b4a717 +drivers/infiniband/core/ib_core ib_reg_phys_mr 0xc29da925 +drivers/infiniband/core/ib_core ib_register_client 0x178f8443 +drivers/infiniband/core/ib_core ib_register_device 0x7d8bf6c8 +drivers/infiniband/core/ib_core ib_register_event_handler 0x891bb8c4 +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x0dfdb66b +drivers/infiniband/core/ib_core ib_resize_cq 0x5c78bf5e +drivers/infiniband/core/ib_core ib_set_client_data 0x44349969 +drivers/infiniband/core/ib_core ib_ud_header_init 0x965c1dae +drivers/infiniband/core/ib_core ib_ud_header_pack 0x8d12f837 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0x11d42382 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xb1a312e1 +drivers/infiniband/core/ib_core ib_unregister_client 0x9879c8b0 +drivers/infiniband/core/ib_core ib_unregister_device 0x9dbf1a32 +drivers/infiniband/core/ib_core ib_unregister_event_handler 0xab1c2c2f +drivers/infiniband/core/ib_mad ib_cancel_mad 0xc926a92e +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x6a3bbc94 +drivers/infiniband/core/ib_mad ib_create_send_mad 0x20d6ddd8 +drivers/infiniband/core/ib_mad ib_free_recv_mad 0xd6f8244e +drivers/infiniband/core/ib_mad ib_free_send_mad 0x3ed6f62c +drivers/infiniband/core/ib_mad ib_modify_mad 0x9ec28f24 +drivers/infiniband/core/ib_mad ib_post_send_mad 0xba030334 +drivers/infiniband/core/ib_mad ib_process_mad_wc 0x0b11abcc +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0xd1ca0e7d +drivers/infiniband/core/ib_mad ib_register_mad_agent 0xbea74969 +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0x558959da +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0xa16e6630 +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0x7abdd2a2 +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0xab549c71 +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0x4da85733 +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0x28e79933 +drivers/input/gameport/gameport __gameport_register_driver 0xbc36b498 +drivers/input/gameport/gameport __gameport_register_port 0x5fdc9291 +drivers/input/gameport/gameport gameport_close 0x93eecae9 +drivers/input/gameport/gameport gameport_cooked_read 0x08fd205c +drivers/input/gameport/gameport gameport_open 0xe3717947 +drivers/input/gameport/gameport gameport_rescan 0xd056bb21 +drivers/input/gameport/gameport gameport_set_name 0x0046d15d +drivers/input/gameport/gameport gameport_set_phys 0x1dc2c820 +drivers/input/gameport/gameport gameport_start_polling 0xefca6d77 +drivers/input/gameport/gameport gameport_stop_polling 0xd9e74207 +drivers/input/gameport/gameport gameport_unregister_driver 0x2fa9bbb8 +drivers/input/gameport/gameport gameport_unregister_port 0xf4752f08 +drivers/macintosh/windfarm_core wf_clear_overtemp 0xed82a14f +drivers/macintosh/windfarm_core wf_critical_overtemp 0x94765fac +drivers/macintosh/windfarm_core wf_find_control 0xc1e98c90 +drivers/macintosh/windfarm_core wf_find_sensor 0xda4aecb8 +drivers/macintosh/windfarm_core wf_get_control 0x0a8470a8 +drivers/macintosh/windfarm_core wf_get_sensor 0x0db7767c +drivers/macintosh/windfarm_core wf_is_overtemp 0xa2f19a49 +drivers/macintosh/windfarm_core wf_put_control 0xf47d650c +drivers/macintosh/windfarm_core wf_put_sensor 0x8aa673a6 +drivers/macintosh/windfarm_core wf_register_client 0xdb7e8499 +drivers/macintosh/windfarm_core wf_register_control 0x6bc2fed4 +drivers/macintosh/windfarm_core wf_register_sensor 0xcf784874 +drivers/macintosh/windfarm_core wf_set_overtemp 0x75147afa +drivers/macintosh/windfarm_core wf_unregister_client 0xaf15726f +drivers/macintosh/windfarm_core wf_unregister_control 0x45761102 +drivers/macintosh/windfarm_core wf_unregister_sensor 0x20f4a3e5 +drivers/md/dm-mirror dm_create_dirty_log 0x4467bdb9 +drivers/md/dm-mirror dm_destroy_dirty_log 0xc0a35025 +drivers/md/dm-mirror dm_register_dirty_log_type 0xb4bcf688 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x4462a54c +drivers/md/dm-mod dm_get_device 0x534c4039 +drivers/md/dm-mod dm_get_mapinfo 0x862db42e +drivers/md/dm-mod dm_io_async 0x702032f2 +drivers/md/dm-mod dm_io_async_bvec 0xc56ea5b2 +drivers/md/dm-mod dm_io_async_vm 0x8a287371 +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0x02815281 +drivers/md/dm-mod dm_io_sync_bvec 0x631b9cf6 +drivers/md/dm-mod dm_io_sync_vm 0x25bcbb1b +drivers/md/dm-mod dm_put_device 0x273c3948 +drivers/md/dm-mod dm_register_target 0x0e2c750f +drivers/md/dm-mod dm_table_event 0xd8cbd87d +drivers/md/dm-mod dm_table_flush_all 0x027f29a3 +drivers/md/dm-mod dm_table_get 0xfbb6a1e3 +drivers/md/dm-mod dm_table_get_mode 0xf9701cec +drivers/md/dm-mod dm_table_get_size 0xc53052fb +drivers/md/dm-mod dm_table_put 0x9cf0be5d +drivers/md/dm-mod dm_table_unplug_all 0xce7a7216 +drivers/md/dm-mod dm_unregister_target 0x8fc6723b +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x44cdf6c7 +drivers/md/dm-mod kcopyd_client_create 0x5cdcb064 +drivers/md/dm-mod kcopyd_client_destroy 0xe6cc3ca4 +drivers/md/dm-mod kcopyd_copy 0x7bef7778 +drivers/md/dm-multipath dm_pg_init_complete 0x55755d9a +drivers/md/dm-multipath dm_register_hw_handler 0xcd77e571 +drivers/md/dm-multipath dm_register_path_selector 0x634a1145 +drivers/md/dm-multipath dm_scsi_err_handler 0x4e8bd75e +drivers/md/dm-multipath dm_unregister_hw_handler 0x2274a22d +drivers/md/dm-multipath dm_unregister_path_selector 0xca69b740 +drivers/md/md-mod bitmap_close_sync 0x4026d1ac +drivers/md/md-mod bitmap_daemon_work 0x6f43afff +drivers/md/md-mod bitmap_end_sync 0x3fd8d364 +drivers/md/md-mod bitmap_endwrite 0x1344ed0a +drivers/md/md-mod bitmap_start_sync 0x579b39ff +drivers/md/md-mod bitmap_startwrite 0xfc5e7d62 +drivers/md/md-mod bitmap_unplug 0xbc6e68d8 +drivers/md/md-mod md_check_recovery 0xfbf42b94 +drivers/md/md-mod md_done_sync 0xe1399ae1 +drivers/md/md-mod md_error 0xd3dd927e +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x14c742ee +drivers/md/md-mod md_unregister_thread 0x2261945c +drivers/md/md-mod md_wakeup_thread 0x9e2fdcea +drivers/md/md-mod md_write_end 0x4cafbcf8 +drivers/md/md-mod md_write_start 0x7cb237ba +drivers/md/md-mod register_md_personality 0x3c7e2cec +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x4740e7a3 +drivers/media/common/ir-common ir_codes_hauppauge_new 0x902a3cd2 +drivers/media/common/ir-common ir_codes_pinnacle 0xd3a0f048 +drivers/media/common/ir-common ir_codes_pixelview 0xfa177653 +drivers/media/common/ir-common ir_codes_rc5_tv 0xd9c7f010 +drivers/media/common/ir-common ir_codes_winfast 0x89cc1189 +drivers/media/common/ir-common ir_decode_biphase 0x43c89ef4 +drivers/media/common/ir-common ir_decode_pulsedistance 0x2456e513 +drivers/media/common/ir-common ir_dump_samples 0x6d6511e7 +drivers/media/common/ir-common ir_extract_bits 0x1cb148f5 +drivers/media/common/ir-common ir_input_init 0xd9313e9d +drivers/media/common/ir-common ir_input_keydown 0xfcb7514d +drivers/media/common/ir-common ir_input_nokey 0x686442b1 +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x29e6c7b5 +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0xe7e29276 +drivers/media/common/saa7146 saa7146_i2c_transfer 0x217f75cd +drivers/media/common/saa7146 saa7146_pgtable_alloc 0x4714c38e +drivers/media/common/saa7146 saa7146_pgtable_build_single 0xb1ba7ae7 +drivers/media/common/saa7146 saa7146_pgtable_free 0x039ca65d +drivers/media/common/saa7146 saa7146_register_extension 0x27440410 +drivers/media/common/saa7146 saa7146_setgpio 0x109f6d58 +drivers/media/common/saa7146 saa7146_unregister_extension 0xb7c5a2b4 +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0xbe7ee12c +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0x534a6cd9 +drivers/media/common/saa7146_vv saa7146_register_device 0x8adef07f +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0xc236455b +drivers/media/common/saa7146_vv saa7146_start_preview 0xd4dd612b +drivers/media/common/saa7146_vv saa7146_stop_preview 0xad22daa0 +drivers/media/common/saa7146_vv saa7146_unregister_device 0xcf0a12ac +drivers/media/common/saa7146_vv saa7146_vv_init 0xa87574a7 +drivers/media/common/saa7146_vv saa7146_vv_release 0x0fa5e14a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0xf4567a15 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0x5a602e78 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0x2723bc64 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0x819cfffd +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0xb751e8f0 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0xe5b023b3 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0x94e6fefd +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0x90a3188c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0xd6a05b13 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0xe75bd48f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0xf51b502c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0xcb9c9f94 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0xad31356c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0x9863d5e2 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0xd9bc2745 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0x7efb923e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0xaf45f394 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0xd2d3c4d7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0x3764c5e6 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0x947358f3 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0xe108dea3 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0x800075ad +drivers/media/dvb/bt8xx/bt878 bt878 0x0732e20a +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0xbf3fa86e +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0x0581d203 +drivers/media/dvb/bt8xx/bt878 bt878_stop 0x1706fdf8 +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0x1a2624bd +drivers/media/dvb/bt8xx/dst dst_check_sum 0xe94b8c9c +drivers/media/dvb/bt8xx/dst dst_comm_init 0x7b8707e8 +drivers/media/dvb/bt8xx/dst dst_command 0x020e9525 +drivers/media/dvb/bt8xx/dst dst_error_bailout 0x83d6f003 +drivers/media/dvb/bt8xx/dst dst_error_recovery 0x4ba786cf +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0x29b733e1 +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0x78e95eec +drivers/media/dvb/bt8xx/dst dst_pio_disable 0xdc118d74 +drivers/media/dvb/bt8xx/dst dst_pio_enable 0x36e17ea9 +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0x48ee7835 +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0x1b56443d +drivers/media/dvb/bt8xx/dst rdc_reset_state 0xeeac373a +drivers/media/dvb/bt8xx/dst read_dst 0x1b59f3b7 +drivers/media/dvb/bt8xx/dst write_dst 0xacf5afd4 +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0x2f9e074d +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0x2d75af35 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0xa62a345d +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0x60e9cfa1 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0x330d9a25 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0xe70b265d +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0x94df41cf +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0x8f78a333 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0x3d9cf902 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0x9ee8928a +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x1e920805 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0x73d99383 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0x2e21bc3c +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x80e3832d +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x36c8ea1f +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0xf96f0143 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0x3fae8fdc +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0xc63611e9 +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0x1ffd7710 +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0x6373eea7 +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0xdf71aa42 +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0xe800812b +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0x5d76fbf9 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0xfe8c4bdb +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0x5da3ccb5 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0x84ae661e +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0x988a2906 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x490e87d6 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0x00eda5a0 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0x420f157b +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0xefb44973 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0x2a1c7033 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0xd39d3873 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0x96a240fc +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0x52c878f1 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0x4cbe1e40 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0x26f64f6b +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0x7a655e20 +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0x8b49a23f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0xa537bbd6 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0x63b8438a +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0x2fce636b +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0x7b7e8330 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0x5589456b +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0x38e3e405 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0x411556ff +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0x02dbb8a2 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0x481c17d5 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0x11c83c3f +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0x41889c9e +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0x45d23248 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0xf9aaa76c +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0x8699bdf8 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0x81ab10d3 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0x5be7b045 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0xd4d3dddc +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0x8790c2aa +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0xa457b3b6 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0x0349efd6 +drivers/media/dvb/frontends/at76c651 at76c651_attach 0x176be1bb +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0xd0cf9259 +drivers/media/dvb/frontends/cx22700 cx22700_attach 0x8dfc6512 +drivers/media/dvb/frontends/cx22702 cx22702_attach 0xd52c9ef7 +drivers/media/dvb/frontends/cx24110 cx24110_attach 0x6f44b4a3 +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0x45cb1d73 +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0xead743e9 +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0xe762d459 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x05f13eee +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0x23708028 +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0xdeffd519 +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0xa0501679 +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x02689b7f +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0x5b259391 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x7a0ed9bb +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0xbf98157e +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xd15aca20 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xfdd5e650 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x2a4f5718 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xc95be182 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x708f579e +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0xe39c77c8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0x12284643 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0xf1d4150d +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0xd5d22e56 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0xccc91f17 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xaddc7276 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x96cce305 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xcbbd68de +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x13856c44 +drivers/media/dvb/frontends/l64781 l64781_attach 0x34b1f0b2 +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0x9bbd8f8a +drivers/media/dvb/frontends/mt312 mt312_attach 0x1476a16a +drivers/media/dvb/frontends/mt312 vp310_attach 0xd79f6906 +drivers/media/dvb/frontends/mt352 mt352_attach 0xbcb7454f +drivers/media/dvb/frontends/mt352 mt352_write 0xa3d54773 +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0xff42a13f +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x1a18f693 +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0xcedeefb5 +drivers/media/dvb/frontends/or51132 or51132_attach 0x608c3200 +drivers/media/dvb/frontends/or51211 or51211_attach 0x4df499b6 +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0xcab08894 +drivers/media/dvb/frontends/sp8870 sp8870_attach 0x136f6707 +drivers/media/dvb/frontends/sp887x sp887x_attach 0xb4872611 +drivers/media/dvb/frontends/stv0297 stv0297_attach 0x1e3afff4 +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0x0e9988c6 +drivers/media/dvb/frontends/stv0299 stv0299_attach 0x3bba8dad +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0x3f24b4d7 +drivers/media/dvb/frontends/tda10021 tda10021_attach 0x84ee7f4b +drivers/media/dvb/frontends/tda1004x tda10045_attach 0xb4548130 +drivers/media/dvb/frontends/tda1004x tda10046_attach 0xf2a631b4 +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0x88ea3d0d +drivers/media/dvb/frontends/tda8083 tda8083_attach 0x7a26df3b +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0x17db0747 +drivers/media/dvb/frontends/ves1820 ves1820_attach 0xe4680559 +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0x48d5e709 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0xd99ed0c2 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0x946fe3f6 +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0xc9beeea3 +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0xf659a061 +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0x73d2527b +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0x62aebb32 +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0x4139fc9d +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0x91330023 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0xbaf401e9 +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0x48db6686 +drivers/media/video/btcx-risc btcx_riscmem_free 0xd5830c56 +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x357a7ad5 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0xf9ee6817 +drivers/media/video/bttv bttv_gpio_bits 0x79626e47 +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0x09c8e8e8 +drivers/media/video/bttv bttv_gpio_read 0x68448237 +drivers/media/video/bttv bttv_gpio_write 0xe794d111 +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0xb6559e7b +drivers/media/video/bttv bttv_sub_register 0xcaa91a8d +drivers/media/video/bttv bttv_sub_unregister 0xbabcaca7 +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0x133be062 +drivers/media/video/cpia cpia_unregister_camera 0x2469e44c +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0xa710e1c6 +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0xd3ff1bc2 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0xa94b2404 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0x9df47553 +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0x40f5c1f1 +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0x542bc884 +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0x32dff089 +drivers/media/video/cx88/cx8802 cx8802_fini_common 0x6ed55560 +drivers/media/video/cx88/cx8802 cx8802_init_common 0x4b440339 +drivers/media/video/cx88/cx8802 cx8802_resume_common 0xe904fdb9 +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0x4c787be2 +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x4e6954bf +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0xa093c5db +drivers/media/video/cx88/cx88xx cx88_card_list 0xc7188789 +drivers/media/video/cx88/cx88xx cx88_card_setup 0x9d96673f +drivers/media/video/cx88/cx88xx cx88_core_get 0xbd448b6e +drivers/media/video/cx88/cx88xx cx88_core_irq 0x6c148708 +drivers/media/video/cx88/cx88xx cx88_core_put 0xa1650a22 +drivers/media/video/cx88/cx88xx cx88_free_buffer 0x6af12858 +drivers/media/video/cx88/cx88xx cx88_get_stereo 0x4d6863c7 +drivers/media/video/cx88/cx88xx cx88_i2c_init 0x07bcd0f0 +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0x32ae0eb9 +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x777b6d7f +drivers/media/video/cx88/cx88xx cx88_reset 0x8c14aa18 +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0x88af3d3c +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0x4a88a806 +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0xca392bab +drivers/media/video/cx88/cx88xx cx88_set_scale 0xcfa2bebf +drivers/media/video/cx88/cx88xx cx88_set_stereo 0xeda8476d +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0x13547bc1 +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0x85412e89 +drivers/media/video/cx88/cx88xx cx88_shutdown 0xf1703380 +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0x7c00bf72 +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0x3b53951d +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x9b140fff +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0x07334697 +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0x655284b3 +drivers/media/video/cx88/cx88xx cx88_subids 0x6b626846 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0x9008879a +drivers/media/video/cx88/cx88xx cx88_wakeup 0x9e3466a0 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0x693b9508 +drivers/media/video/saa7134/saa7134 dmasound_exit 0x0ca1990e +drivers/media/video/saa7134/saa7134 dmasound_init 0x47edde25 +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0x46293291 +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0x639b5222 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0x810414bc +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0x7eaa4db2 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0xc5e5eae4 +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0x5150a869 +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0xad0ee8ae +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0x203b45d5 +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0x060c246d +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0x3ed9e8c8 +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0x3f1af0b3 +drivers/media/video/tveeprom tveeprom_read 0xc1799ca2 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0xf3b205c9 +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x9c7de443 +drivers/media/video/v4l2-common v4l2_prio_check 0x2f639468 +drivers/media/video/v4l2-common v4l2_prio_close 0x95284709 +drivers/media/video/v4l2-common v4l2_prio_init 0xbecd2858 +drivers/media/video/v4l2-common v4l2_prio_max 0x1dcaa0c8 +drivers/media/video/v4l2-common v4l2_prio_open 0x76ba9a9a +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0x33b3b664 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0x03469df7 +drivers/media/video/video-buf videobuf_dma_init 0x00aa4a0a +drivers/media/video/video-buf videobuf_dma_init_kernel 0x623ef240 +drivers/media/video/video-buf videobuf_dma_init_overlay 0xa7fd58d2 +drivers/media/video/video-buf videobuf_dma_init_user 0x62a416e3 +drivers/media/video/video-buf videobuf_dma_pci_map 0x9109219c +drivers/media/video/video-buf videobuf_dma_pci_sync 0x3a78d4bd +drivers/media/video/video-buf videobuf_dma_pci_unmap 0x2c6f3239 +drivers/media/video/video-buf videobuf_dqbuf 0x95fa2277 +drivers/media/video/video-buf videobuf_iolock 0x738a500b +drivers/media/video/video-buf videobuf_mmap_free 0x5e2874fa +drivers/media/video/video-buf videobuf_mmap_mapper 0xc4f4c443 +drivers/media/video/video-buf videobuf_mmap_setup 0x02a6ff38 +drivers/media/video/video-buf videobuf_next_field 0x65eda300 +drivers/media/video/video-buf videobuf_poll_stream 0xf51d935a +drivers/media/video/video-buf videobuf_qbuf 0xcc5f3564 +drivers/media/video/video-buf videobuf_querybuf 0x6d2f1d2e +drivers/media/video/video-buf videobuf_queue_cancel 0x05c1399f +drivers/media/video/video-buf videobuf_queue_init 0x438e598b +drivers/media/video/video-buf videobuf_queue_is_busy 0x89da5e1d +drivers/media/video/video-buf videobuf_read_one 0xc81e323d +drivers/media/video/video-buf videobuf_read_start 0x8f2c7e7c +drivers/media/video/video-buf videobuf_read_stop 0xed8b811a +drivers/media/video/video-buf videobuf_read_stream 0x3f140d04 +drivers/media/video/video-buf videobuf_reqbufs 0x970fdafe +drivers/media/video/video-buf videobuf_status 0x2d75aa88 +drivers/media/video/video-buf videobuf_streamoff 0x2b7b6cdc +drivers/media/video/video-buf videobuf_streamon 0xa39c7745 +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0x4f358176 +drivers/media/video/video-buf videobuf_waiton 0x8b400a92 +drivers/media/video/video-buf-dvb videobuf_dvb_register 0x8397d21c +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0xae69a789 +drivers/media/video/videodev video_devdata 0x8a199a6a +drivers/media/video/videodev video_device_alloc 0x9dbcf2c7 +drivers/media/video/videodev video_device_release 0x7b5192a5 +drivers/media/video/videodev video_exclusive_open 0xfd7e1ded +drivers/media/video/videodev video_exclusive_release 0xd342eba3 +drivers/media/video/videodev video_register_device 0xccf3b56b +drivers/media/video/videodev video_unregister_device 0x6b2a1739 +drivers/media/video/videodev video_usercopy 0xa40e044a +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0xa6a20ce0 +drivers/message/fusion/mptbase mpt_HardResetHandler 0x44311c0f +drivers/message/fusion/mptbase mpt_add_sge 0x375d8126 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0xcb1f72f0 +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0xc9266c7b +drivers/message/fusion/mptbase mpt_attach 0xcd396274 +drivers/message/fusion/mptbase mpt_config 0xfd7d9d10 +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0x55bf4528 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0x519e70dd +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0xf71b3d58 +drivers/message/fusion/mptbase mpt_findImVolumes 0xd5776515 +drivers/message/fusion/mptbase mpt_free_fw_memory 0x33adc23e +drivers/message/fusion/mptbase mpt_free_msg_frame 0x6795b5d5 +drivers/message/fusion/mptbase mpt_get_msg_frame 0x1cf7c154 +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0x06c58ccb +drivers/message/fusion/mptbase mpt_proc_root_dir 0x8c495311 +drivers/message/fusion/mptbase mpt_put_msg_frame 0x1587abb5 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x699013e7 +drivers/message/fusion/mptbase mpt_register 0x812115ce +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0xf03d0631 +drivers/message/fusion/mptbase mpt_resume 0x3a2b3fd1 +drivers/message/fusion/mptbase mpt_send_handshake_request 0x8b1fbf4d +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0x3b325c84 +drivers/message/fusion/mptbase mpt_toolbox 0x44b3b4da +drivers/message/fusion/mptbase mpt_verify_adapter 0xe4681b91 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x8c034842 +drivers/message/fusion/mptscsih mptscsih_abort 0x55f1b9f7 +drivers/message/fusion/mptscsih mptscsih_bios_param 0x7864799b +drivers/message/fusion/mptscsih mptscsih_bus_reset 0x20d89d7c +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x601f7f92 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0xe8da8c54 +drivers/message/fusion/mptscsih mptscsih_event_process 0x2ed5e2c0 +drivers/message/fusion/mptscsih mptscsih_host_reset 0x491011a3 +drivers/message/fusion/mptscsih mptscsih_info 0x136e97fb +drivers/message/fusion/mptscsih mptscsih_io_done 0x2c39bee6 +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x1b926e16 +drivers/message/fusion/mptscsih mptscsih_proc_info 0xa86baef9 +drivers/message/fusion/mptscsih mptscsih_qcmd 0x3dfe97fb +drivers/message/fusion/mptscsih mptscsih_remove 0xa0846d10 +drivers/message/fusion/mptscsih mptscsih_resume 0x201c8b12 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0x6cb4f3e2 +drivers/message/fusion/mptscsih mptscsih_shutdown 0x26c004ff +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0x9c5e9676 +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x4f3a87cd +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x6c3e39c3 +drivers/message/fusion/mptscsih mptscsih_suspend 0x2866e9f9 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0xd09ef46b +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0x59b210bf +drivers/message/i2o/i2o_core i2o_device_claim_release 0x2b899ea2 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0x775a77b1 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0xc3879b37 +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0xc55e0712 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0xcdb0ae1e +drivers/message/i2o/i2o_core i2o_driver_register 0x141d8072 +drivers/message/i2o/i2o_core i2o_driver_unregister 0x7acfb5ab +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0xb63f2b9a +drivers/message/i2o/i2o_core i2o_exec_lct_get 0x402e095e +drivers/message/i2o/i2o_core i2o_find_iop 0x30cb3220 +drivers/message/i2o/i2o_core i2o_iop_find_device 0xa2776151 +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x25aade6e +drivers/message/i2o/i2o_core i2o_msg_nop 0x7e8ebed6 +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0xd53694fa +drivers/message/i2o/i2o_core i2o_parm_field_get 0xc7009041 +drivers/message/i2o/i2o_core i2o_parm_issue 0x0eee0080 +drivers/message/i2o/i2o_core i2o_parm_table_get 0xb95b0696 +drivers/message/i2o/i2o_core i2o_status_get 0x1b311e79 +drivers/mmc/mmc_core __mmc_claim_host 0x50acdb42 +drivers/mmc/mmc_core mmc_add_host 0xabd9648e +drivers/mmc/mmc_core mmc_alloc_host 0xf0fd67d8 +drivers/mmc/mmc_core mmc_cleanup_queue 0xead3a426 +drivers/mmc/mmc_core mmc_detect_change 0x5948c404 +drivers/mmc/mmc_core mmc_free_host 0x9ab415ea +drivers/mmc/mmc_core mmc_init_queue 0xe898f14e +drivers/mmc/mmc_core mmc_queue_resume 0x39cfbbc5 +drivers/mmc/mmc_core mmc_queue_suspend 0xd440c90e +drivers/mmc/mmc_core mmc_register_driver 0xff799d80 +drivers/mmc/mmc_core mmc_release_host 0xcd5234a1 +drivers/mmc/mmc_core mmc_remove_host 0x964acc8e +drivers/mmc/mmc_core mmc_request_done 0xe741e9eb +drivers/mmc/mmc_core mmc_resume_host 0xdc45d63f +drivers/mmc/mmc_core mmc_start_request 0xfbea787a +drivers/mmc/mmc_core mmc_suspend_host 0x8c331123 +drivers/mmc/mmc_core mmc_unregister_driver 0xc7a012be +drivers/mmc/mmc_core mmc_wait_for_app_cmd 0x898c3212 +drivers/mmc/mmc_core mmc_wait_for_cmd 0xa9f5a822 +drivers/mmc/mmc_core mmc_wait_for_req 0x444637a1 +drivers/mtd/chips/cfi_util cfi_fixup 0x496cbe35 +drivers/mtd/chips/cfi_util cfi_read_pri 0xf0412966 +drivers/mtd/chips/cfi_util cfi_varsize_frob 0x42de3390 +drivers/mtd/chips/chipreg do_map_probe 0x307d488a +drivers/mtd/chips/chipreg map_destroy 0x647d4a65 +drivers/mtd/chips/chipreg register_mtd_chip_driver 0x9a4b4074 +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0xb05ba709 +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0x65087d7d +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0x8c0d0524 +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0x72d2d000 +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0xd5648644 +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0x4afec8a7 +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0x3735793d +drivers/mtd/mtdconcat mtd_concat_create 0x1eb4a992 +drivers/mtd/mtdconcat mtd_concat_destroy 0x4da1f8a0 +drivers/mtd/mtdcore add_mtd_device 0xfa164e5e +drivers/mtd/mtdcore default_mtd_readv 0x38a86ec5 +drivers/mtd/mtdcore default_mtd_writev 0xddeb8810 +drivers/mtd/mtdcore del_mtd_device 0x7a8b9b3c +drivers/mtd/mtdcore get_mtd_device 0x85cf56da +drivers/mtd/mtdcore mtd_table 0xb736c1a4 +drivers/mtd/mtdcore mtd_table_mutex 0x79591161 +drivers/mtd/mtdcore put_mtd_device 0xe62b70bd +drivers/mtd/mtdcore register_mtd_user 0x6c7835e7 +drivers/mtd/mtdcore unregister_mtd_user 0x628d541f +drivers/mtd/mtdpart add_mtd_partitions 0xd2ad1063 +drivers/mtd/mtdpart del_mtd_partitions 0x293583d3 +drivers/mtd/mtdpart deregister_mtd_parser 0xc03e1263 +drivers/mtd/mtdpart mtd_erase_callback 0x0253a45f +drivers/mtd/mtdpart parse_mtd_partitions 0x3672836d +drivers/mtd/mtdpart register_mtd_parser 0xb7e6e7eb +drivers/mtd/nand/nand nand_default_bbt 0x93cceecf +drivers/mtd/nand/nand nand_release 0x1d1df4c7 +drivers/mtd/nand/nand nand_scan 0x7bdeba3c +drivers/mtd/nand/nand nand_scan_bbt 0xb88933ff +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0xb710f3b6 +drivers/mtd/onenand/onenand onenand_release 0x7b1bb0bf +drivers/mtd/onenand/onenand onenand_scan 0x136065cf +drivers/mtd/onenand/onenand onenand_scan_bbt 0xa44e07e6 +drivers/net/8390 NS8390_init 0xb9bae7ab +drivers/net/8390 __alloc_ei_netdev 0x08dfc6e8 +drivers/net/8390 ei_close 0x30271cf6 +drivers/net/8390 ei_interrupt 0xdb4b5bbb +drivers/net/8390 ei_open 0x385acd68 +drivers/net/8390 ei_poll 0x85e546c8 +drivers/net/arcnet/arcnet alloc_arcdev 0x2dea45d8 +drivers/net/arcnet/arcnet arc_bcast_proto 0xa67e87e8 +drivers/net/arcnet/arcnet arc_proto_default 0xb6356b34 +drivers/net/arcnet/arcnet arc_proto_map 0x93b5937a +drivers/net/arcnet/arcnet arc_proto_null 0x9d891c8c +drivers/net/arcnet/arcnet arc_raw_proto 0x1b3385a3 +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0x69b4c568 +drivers/net/arcnet/arcnet arcnet_unregister_proto 0x14caede3 +drivers/net/arcnet/com20020 com20020_check 0x9145596a +drivers/net/arcnet/com20020 com20020_found 0x53c0ad73 +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0xbc4cdae6 +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0x064f7c32 +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0x26794e4b +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0x3235a401 +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0x10855331 +drivers/net/irda/sir-dev irda_register_dongle 0x091ff7e3 +drivers/net/irda/sir-dev irda_unregister_dongle 0x4fb25c1a +drivers/net/irda/sir-dev sirdev_get_instance 0x5f0721e9 +drivers/net/irda/sir-dev sirdev_put_instance 0xa3236eb1 +drivers/net/irda/sir-dev sirdev_raw_read 0xc9791169 +drivers/net/irda/sir-dev sirdev_raw_write 0xde5cf999 +drivers/net/irda/sir-dev sirdev_receive 0x28048f31 +drivers/net/irda/sir-dev sirdev_set_dongle 0xd9aec379 +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0xbea8d007 +drivers/net/irda/sir-dev sirdev_write_complete 0x11684669 +drivers/net/mii generic_mii_ioctl 0xef5477d7 +drivers/net/mii mii_check_gmii_support 0x4bbf8653 +drivers/net/mii mii_check_link 0x90ab5ad6 +drivers/net/mii mii_check_media 0x8c03d9dc +drivers/net/mii mii_ethtool_gset 0xa18f9255 +drivers/net/mii mii_ethtool_sset 0xc95882f1 +drivers/net/mii mii_link_ok 0xc7d39f4a +drivers/net/mii mii_nway_restart 0x67706508 +drivers/net/phy/libphy genphy_config_advert 0xbd81df1d +drivers/net/phy/libphy genphy_config_aneg 0x1c7dc6de +drivers/net/phy/libphy genphy_read_status 0xc961851a +drivers/net/phy/libphy mdiobus_register 0x52487afd +drivers/net/phy/libphy mdiobus_unregister 0x672044f5 +drivers/net/phy/libphy phy_attach 0x1abc3d7b +drivers/net/phy/libphy phy_connect 0x0088bf4e +drivers/net/phy/libphy phy_detach 0x3334710f +drivers/net/phy/libphy phy_disable_interrupts 0x8a054d1d +drivers/net/phy/libphy phy_disconnect 0xd99eac2d +drivers/net/phy/libphy phy_driver_register 0x02c825b9 +drivers/net/phy/libphy phy_driver_unregister 0x7eda4122 +drivers/net/phy/libphy phy_enable_interrupts 0x40dc3b61 +drivers/net/phy/libphy phy_print_status 0x9db2f7f6 +drivers/net/phy/libphy phy_read 0xcba0b81a +drivers/net/phy/libphy phy_sanitize_settings 0xb8d7eb8b +drivers/net/phy/libphy phy_start 0x17578422 +drivers/net/phy/libphy phy_start_aneg 0xea6407cd +drivers/net/phy/libphy phy_start_interrupts 0x199132af +drivers/net/phy/libphy phy_stop 0x312fa6d3 +drivers/net/phy/libphy phy_stop_interrupts 0xb475981a +drivers/net/phy/libphy phy_write 0x78b64ae6 +drivers/net/ppp_generic ppp_channel_index 0x938f8eb0 +drivers/net/ppp_generic ppp_input 0x3082cc83 +drivers/net/ppp_generic ppp_input_error 0x13755241 +drivers/net/ppp_generic ppp_output_wakeup 0xf6a9536d +drivers/net/ppp_generic ppp_register_channel 0x36b54800 +drivers/net/ppp_generic ppp_register_compressor 0xdea4bc88 +drivers/net/ppp_generic ppp_unit_number 0x4e63f170 +drivers/net/ppp_generic ppp_unregister_channel 0x8717b15d +drivers/net/ppp_generic ppp_unregister_compressor 0xf56c5196 +drivers/net/pppox pppox_unbind_sock 0x3d2c3873 +drivers/net/pppox register_pppox_proto 0x5ab11b95 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x6a47fcc2 +drivers/net/slhc slhc_free 0xeb3c59ef +drivers/net/slhc slhc_init 0x86de1d74 +drivers/net/slhc slhc_remember 0x9536b7c2 +drivers/net/slhc slhc_toss 0x3b36a20a +drivers/net/slhc slhc_uncompress 0xa532de34 +drivers/net/sungem_phy mii_phy_probe 0xa4c23a32 +drivers/net/tokenring/tms380tr tms380tr_close 0x591ca054 +drivers/net/tokenring/tms380tr tms380tr_interrupt 0x1e758522 +drivers/net/tokenring/tms380tr tms380tr_open 0x052491fb +drivers/net/tokenring/tms380tr tms380tr_wait 0xd2328794 +drivers/net/tokenring/tms380tr tmsdev_init 0x0e7f5134 +drivers/net/tokenring/tms380tr tmsdev_term 0x6fd39e0c +drivers/net/wan/cycx_drv cycx_down 0x66a4c4e6 +drivers/net/wan/cycx_drv cycx_exec 0xfe7cd576 +drivers/net/wan/cycx_drv cycx_intr 0x38da4725 +drivers/net/wan/cycx_drv cycx_peek 0x968458a6 +drivers/net/wan/cycx_drv cycx_poke 0xb6f383de +drivers/net/wan/cycx_drv cycx_setup 0x62be23ea +drivers/net/wan/hdlc alloc_hdlcdev 0x32bf37ff +drivers/net/wan/hdlc hdlc_close 0x782a5aeb +drivers/net/wan/hdlc hdlc_ioctl 0xca5396f1 +drivers/net/wan/hdlc hdlc_open 0x75cd9395 +drivers/net/wan/hdlc hdlc_set_carrier 0x4b34fa12 +drivers/net/wan/hdlc register_hdlc_device 0x53b615ec +drivers/net/wan/hdlc unregister_hdlc_device 0xc1096307 +drivers/net/wan/syncppp sppp_attach 0xcc8083ff +drivers/net/wan/syncppp sppp_close 0x851f1882 +drivers/net/wan/syncppp sppp_detach 0xb1ea3884 +drivers/net/wan/syncppp sppp_do_ioctl 0xd1975cac +drivers/net/wan/syncppp sppp_open 0xe93af514 +drivers/net/wan/syncppp sppp_reopen 0xe80423c7 +drivers/net/wireless/airo init_airo_card 0x57fd1f80 +drivers/net/wireless/airo reset_airo_card 0x5a2c4b87 +drivers/net/wireless/airo stop_airo_card 0xbbb9bbe9 +drivers/net/wireless/atmel atmel_open 0xee1d369e +drivers/net/wireless/atmel init_atmel_card 0x45e61326 +drivers/net/wireless/atmel stop_atmel_card 0xcb899297 +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0x0c346a06 +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0x6989befc +drivers/net/wireless/hostap/hostap hostap_80211_rx 0xfcd08633 +drivers/net/wireless/hostap/hostap hostap_add_interface 0x537ae4da +drivers/net/wireless/hostap/hostap hostap_add_sta 0x4f383f7c +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0x08c3e90d +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0x8841302a +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0xde2b1be6 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0x17ffa1a5 +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0xc1de58be +drivers/net/wireless/hostap/hostap hostap_get_porttype 0xf00f5b7d +drivers/net/wireless/hostap/hostap hostap_get_stats 0x2a652d07 +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0xb1679efb +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x0f90b207 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x80446466 +drivers/net/wireless/hostap/hostap hostap_info_init 0xbf4838cb +drivers/net/wireless/hostap/hostap hostap_info_process 0x434eb556 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0xb9ab5f88 +drivers/net/wireless/hostap/hostap hostap_init_data 0xedac847a +drivers/net/wireless/hostap/hostap hostap_init_proc 0x2cf2faca +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0x9c35192f +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x1defef7e +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0xccd02e06 +drivers/net/wireless/hostap/hostap hostap_proc 0xd69b4fae +drivers/net/wireless/hostap/hostap hostap_remove_interface 0x678f96f3 +drivers/net/wireless/hostap/hostap hostap_remove_proc 0x6b967774 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0x94aec661 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0x950b8838 +drivers/net/wireless/hostap/hostap hostap_set_encryption 0x703f72e3 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0xe276d9e5 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0x2b71be95 +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0x09966bbf +drivers/net/wireless/hostap/hostap hostap_set_string 0xd1fe4cd5 +drivers/net/wireless/hostap/hostap hostap_set_word 0xb6da056e +drivers/net/wireless/hostap/hostap hostap_setup_dev 0xc5983c7d +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x6b555943 +drivers/net/wireless/hostap/hostap hostap_update_rates 0xfc4f5186 +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x84ff627f +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x45c5ca18 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x018f1a5c +drivers/net/wireless/orinoco __orinoco_down 0xae5d00aa +drivers/net/wireless/orinoco __orinoco_up 0x6fe894f4 +drivers/net/wireless/orinoco alloc_orinocodev 0x32ba30ae +drivers/net/wireless/orinoco free_orinocodev 0x7f765c9d +drivers/net/wireless/orinoco orinoco_interrupt 0xbead1230 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x7a9bd476 +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xdff83c98 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x0556bdfc +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0xeeb75383 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x57366821 +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0x13972cfc +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x216e5fb1 +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0xd027ac82 +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0x994c4489 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0xc19d532e +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x86213e45 +drivers/net/wireless/prism54_softmac/islsm register_islsm 0xa4b6d362 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0x0d02a7e2 +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0x940bd768 +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0x0d175a56 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0x203ab56e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0x47962edf +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0xaf094caa +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x7cb40088 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0xcc1f09b2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0xb8b9b479 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0xc623eea6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xd0fdbf18 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0xa57db6d1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0x597d1c0f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x60c8e5c5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0xe97ba1bd +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0xd1a52520 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0x9fd1b1ee +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0xde72fce8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x4f7786b9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0x72414c2a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0xa981c05e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0xdd3cf54a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0xaabb9c99 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x01ff5701 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x606027cb +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x0777d0be +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0x65acf43a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x99b360c4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x91bee3ef +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0xc6c65e06 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0xebfae31a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0x42ba1506 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0xf13cbd5a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0xac19385b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0x721fd50a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0x10c4f18e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x5dc7fc7f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0xb3ae5bb2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0x1d1b8f58 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x9e92e6ae +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x401c3dc4 +drivers/parport/parport parport_announce_port 0xb338ba80 +drivers/parport/parport parport_claim 0x1d417f04 +drivers/parport/parport parport_claim_or_block 0x8f76a555 +drivers/parport/parport parport_find_base 0xdefceb6c +drivers/parport/parport parport_find_number 0x0ebd9c18 +drivers/parport/parport parport_get_port 0x47d27962 +drivers/parport/parport parport_ieee1284_ecp_read_data 0x41f4852d +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xb0ee463e +drivers/parport/parport parport_ieee1284_ecp_write_data 0x888d5177 +drivers/parport/parport parport_ieee1284_epp_read_addr 0xecaa4484 +drivers/parport/parport parport_ieee1284_epp_read_data 0x63c39ea1 +drivers/parport/parport parport_ieee1284_epp_write_addr 0x8f7337c3 +drivers/parport/parport parport_ieee1284_epp_write_data 0xb710208a +drivers/parport/parport parport_ieee1284_interrupt 0xfa472bce +drivers/parport/parport parport_ieee1284_read_byte 0x7e03689a +drivers/parport/parport parport_ieee1284_read_nibble 0x7be35f4e +drivers/parport/parport parport_ieee1284_write_compat 0x371ad63d +drivers/parport/parport parport_negotiate 0xb9cd15e4 +drivers/parport/parport parport_put_port 0x838dbe63 +drivers/parport/parport parport_read 0x525ca86b +drivers/parport/parport parport_register_device 0xa129d26f +drivers/parport/parport parport_register_driver 0x77b7ceed +drivers/parport/parport parport_register_port 0x954cbdbd +drivers/parport/parport parport_release 0xfafba086 +drivers/parport/parport parport_remove_port 0x78f4d5bf +drivers/parport/parport parport_set_timeout 0x42c57990 +drivers/parport/parport parport_unregister_device 0x6371a07c +drivers/parport/parport parport_unregister_driver 0x5460c9f8 +drivers/parport/parport parport_wait_event 0xfb0984ad +drivers/parport/parport parport_wait_peripheral 0xb22a46b8 +drivers/parport/parport parport_write 0x7f517942 +drivers/parport/parport_pc parport_pc_probe_port 0xdbdf6c7a +drivers/parport/parport_pc parport_pc_unregister_port 0xfe840533 +drivers/pcmcia/pcmcia cs_error 0x44cc8a4c +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0x6e59770a +drivers/pcmcia/pcmcia pcmcia_deregister_client 0xc8107263 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0x554c60e9 +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0x2285382d +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0x10392c73 +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0x4226641c +drivers/pcmcia/pcmcia pcmcia_get_status 0xfad66db6 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0x2d22e077 +drivers/pcmcia/pcmcia pcmcia_get_window 0x3a6c4c79 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0x4326bb5b +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0xa9adca33 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0x38785436 +drivers/pcmcia/pcmcia pcmcia_register_client 0x3aedd6d4 +drivers/pcmcia/pcmcia pcmcia_register_driver 0x25cde9f0 +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x7d164b6d +drivers/pcmcia/pcmcia pcmcia_release_io 0x9185a596 +drivers/pcmcia/pcmcia pcmcia_release_irq 0xf3c1052b +drivers/pcmcia/pcmcia pcmcia_release_window 0x08e0a6a6 +drivers/pcmcia/pcmcia pcmcia_request_configuration 0xad574f09 +drivers/pcmcia/pcmcia pcmcia_request_io 0xb5881672 +drivers/pcmcia/pcmcia pcmcia_request_irq 0x9bbbf5f8 +drivers/pcmcia/pcmcia pcmcia_request_window 0x6fac2a7c +drivers/pcmcia/pcmcia pcmcia_reset_card 0x18a4ac91 +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0xac11dd24 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0xce027522 +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0xc19a8767 +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x728b9f2d +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0x534a0247 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0x84f476f0 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0xd6fcd17e +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0x85eb8fa8 +drivers/pcmcia/pcmcia_core pccard_reset_card 0x8f539946 +drivers/pcmcia/pcmcia_core pccard_static_ops 0xef4d8a9f +drivers/pcmcia/pcmcia_core pccard_validate_cis 0x9dd3ba71 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0xa31178cc +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0x8e7daa5d +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0xd7a3b8e9 +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0x0688b6b6 +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0x520587cd +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0x180a01db +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x587ee557 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0x3ab2e653 +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0x8e9103b0 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xb0f3e25a +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0xa4fad27e +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0x50fe336d +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0xe18ce7f7 +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0xab45765a +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0x373571eb +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0xb9303825 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0x33f691ac +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0x17b40963 +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x2d26e6aa +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0xc55177c9 +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0x9e95caab +drivers/pcmcia/pcmcia_core release_cis_mem 0x3b58721b +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0x0bc54572 +drivers/scsi/libata __sata_phy_reset 0x257accc6 +drivers/scsi/libata ata_altstatus 0x79cef333 +drivers/scsi/libata ata_bmdma_irq_clear 0xc0638354 +drivers/scsi/libata ata_bmdma_setup 0x6e73dc54 +drivers/scsi/libata ata_bmdma_start 0x130c4e2c +drivers/scsi/libata ata_bmdma_status 0xa7329a08 +drivers/scsi/libata ata_bmdma_stop 0x6378ee75 +drivers/scsi/libata ata_bus_probe 0xdbe507f2 +drivers/scsi/libata ata_bus_reset 0x78597ebe +drivers/scsi/libata ata_check_status 0xf56413c1 +drivers/scsi/libata ata_dev_classify 0x0531dcb8 +drivers/scsi/libata ata_dev_config 0xe7997973 +drivers/scsi/libata ata_dev_id_string 0x07d45a53 +drivers/scsi/libata ata_device_add 0x31c3c133 +drivers/scsi/libata ata_device_resume 0x61cf6049 +drivers/scsi/libata ata_device_shutdown 0xe499156b +drivers/scsi/libata ata_device_suspend 0xde4bd2f7 +drivers/scsi/libata ata_eng_timeout 0x9f4381ea +drivers/scsi/libata ata_exec_command 0x26868768 +drivers/scsi/libata ata_host_intr 0x2129e1cb +drivers/scsi/libata ata_host_set_remove 0x126a0f22 +drivers/scsi/libata ata_host_stop 0x882dd8ee +drivers/scsi/libata ata_hotplug_plug 0x45f69b2a +drivers/scsi/libata ata_hotplug_unplug 0xf62b0b76 +drivers/scsi/libata ata_interrupt 0x7da8d116 +drivers/scsi/libata ata_noop_dev_select 0xa8cf3f3b +drivers/scsi/libata ata_pci_device_resume 0x99f1cc7b +drivers/scsi/libata ata_pci_device_suspend 0x4506031e +drivers/scsi/libata ata_pci_host_stop 0xcaf717c0 +drivers/scsi/libata ata_pci_init_native_mode 0xc2efcd4b +drivers/scsi/libata ata_pci_init_one 0x23549029 +drivers/scsi/libata ata_pci_remove_one 0x004c631f +drivers/scsi/libata ata_port_disable 0x7e2e3542 +drivers/scsi/libata ata_port_probe 0x78260715 +drivers/scsi/libata ata_port_start 0xd1f94011 +drivers/scsi/libata ata_port_stop 0x2d6c09ac +drivers/scsi/libata ata_qc_complete 0x871abdab +drivers/scsi/libata ata_qc_issue_prot 0x2b08ae4d +drivers/scsi/libata ata_qc_prep 0x01502d59 +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0x022131ae +drivers/scsi/libata ata_scsi_device_shutdown 0x527604db +drivers/scsi/libata ata_scsi_device_suspend 0xa1f1c2fb +drivers/scsi/libata ata_scsi_error 0x1363c10e +drivers/scsi/libata ata_scsi_ioctl 0x58fd04ce +drivers/scsi/libata ata_scsi_queuecmd 0x85ee365f +drivers/scsi/libata ata_scsi_release 0x2b6b385b +drivers/scsi/libata ata_scsi_simulate 0xb8032642 +drivers/scsi/libata ata_scsi_slave_config 0x0473a0a6 +drivers/scsi/libata ata_sg_init 0xb818a482 +drivers/scsi/libata ata_sg_init_one 0x7a0a9527 +drivers/scsi/libata ata_std_bios_param 0x6b978180 +drivers/scsi/libata ata_std_dev_select 0x69bc924c +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0x0067df75 +drivers/scsi/libata ata_tf_load 0x15ea7df2 +drivers/scsi/libata ata_tf_read 0x082e084b +drivers/scsi/libata ata_tf_to_fis 0x28177a3f +drivers/scsi/libata ata_timing_compute 0x1d29459b +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata pci_test_config_bits 0x4d25afb0 +drivers/scsi/libata sata_phy_reset 0xd56deb1c +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x6f370bce +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0xf8464599 +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0xf9fa57d0 +drivers/scsi/qlogicfas408 qlogicfas408_abort 0xdbce20c4 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0x39198ced +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0x9f426159 +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0xfddef872 +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0xdef21694 +drivers/scsi/qlogicfas408 qlogicfas408_info 0x0455eef2 +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0x5178b137 +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0xbc033a50 +drivers/scsi/raid_class raid_class_release 0x04cf5166 +drivers/scsi/raid_class raid_component_add 0x929658b7 +drivers/scsi/sas/sas_class sas_register_ha 0x7a093c8b +drivers/scsi/sas/sas_class sas_unregister_ha 0x74305409 +drivers/scsi/scsi_mod __scsi_add_device 0xa0daa03b +drivers/scsi/scsi_mod __scsi_device_lookup 0xc45ef64e +drivers/scsi/scsi_mod __scsi_device_lookup_by_target 0x0fbcd783 +drivers/scsi/scsi_mod __scsi_iterate_devices 0xd85f604d +drivers/scsi/scsi_mod __scsi_print_command 0xfef96e23 +drivers/scsi/scsi_mod __scsi_print_sense 0x69d38ed9 +drivers/scsi/scsi_mod int_to_scsilun 0xea10212a +drivers/scsi/scsi_mod scsi_add_device 0xe76fcd0e +drivers/scsi/scsi_mod scsi_add_host 0x79ba77ff +drivers/scsi/scsi_mod scsi_adjust_queue_depth 0x8277eb31 +drivers/scsi/scsi_mod scsi_allocate_request 0xbfd5eae0 +drivers/scsi/scsi_mod scsi_bios_ptable 0x092c3327 +drivers/scsi/scsi_mod scsi_block_requests 0x483dc654 +drivers/scsi/scsi_mod scsi_block_when_processing_errors 0x10cd3a1f +drivers/scsi/scsi_mod scsi_bus_type 0x33d3a8a1 +drivers/scsi/scsi_mod scsi_calculate_bounce_limit 0x415957b1 +drivers/scsi/scsi_mod scsi_command_normalize_sense 0x2453df61 +drivers/scsi/scsi_mod scsi_device_cancel 0x9db2ed89 +drivers/scsi/scsi_mod scsi_device_get 0x1e3d31d7 +drivers/scsi/scsi_mod scsi_device_lookup 0xfb52fce6 +drivers/scsi/scsi_mod scsi_device_lookup_by_target 0x651d78f5 +drivers/scsi/scsi_mod scsi_device_put 0x27e7db73 +drivers/scsi/scsi_mod scsi_device_quiesce 0xf9073796 +drivers/scsi/scsi_mod scsi_device_resume 0xfe882897 +drivers/scsi/scsi_mod scsi_device_set_state 0x69004dd7 +drivers/scsi/scsi_mod scsi_device_types 0x6df713c9 +drivers/scsi/scsi_mod scsi_do_req 0x9953412f +drivers/scsi/scsi_mod scsi_execute 0xf4cb49a0 +drivers/scsi/scsi_mod scsi_execute_req 0xa839ab59 +drivers/scsi/scsi_mod scsi_extd_sense_format 0x11267875 +drivers/scsi/scsi_mod scsi_finish_command 0x36d791df +drivers/scsi/scsi_mod scsi_flush_work 0xb9859cac +drivers/scsi/scsi_mod scsi_free_host_dev 0xb4d7bf3d +drivers/scsi/scsi_mod scsi_get_command 0xaa567946 +drivers/scsi/scsi_mod scsi_get_host_dev 0x6f4daad9 +drivers/scsi/scsi_mod scsi_get_sense_info_fld 0x796fc5ce +drivers/scsi/scsi_mod scsi_host_alloc 0x12aa6fae +drivers/scsi/scsi_mod scsi_host_get 0x54c4975d +drivers/scsi/scsi_mod scsi_host_lookup 0x4c11cb70 +drivers/scsi/scsi_mod scsi_host_put 0x31221e09 +drivers/scsi/scsi_mod scsi_host_set_state 0x83cecd1a +drivers/scsi/scsi_mod scsi_internal_device_block 0x0421c9ed +drivers/scsi/scsi_mod scsi_internal_device_unblock 0x0eddd323 +drivers/scsi/scsi_mod scsi_io_completion 0x76da21fe +drivers/scsi/scsi_mod scsi_ioctl 0x0f8f6498 +drivers/scsi/scsi_mod scsi_ioctl_send_command 0xd7beb3c1 +drivers/scsi/scsi_mod scsi_is_host_device 0x95d68846 +drivers/scsi/scsi_mod scsi_is_sdev_device 0xc5746c34 +drivers/scsi/scsi_mod scsi_is_target_device 0x79aaa8f3 +drivers/scsi/scsi_mod scsi_logging_level 0xaf3dd7dc +drivers/scsi/scsi_mod scsi_mode_sense 0x02f85ce2 +drivers/scsi/scsi_mod scsi_nonblockable_ioctl 0x09a82ea3 +drivers/scsi/scsi_mod scsi_normalize_sense 0x0c65e73c +drivers/scsi/scsi_mod scsi_partsize 0x4afe9a77 +drivers/scsi/scsi_mod scsi_print_command 0x8ee788b6 +drivers/scsi/scsi_mod scsi_print_msg 0x67f88938 +drivers/scsi/scsi_mod scsi_print_req_sense 0xe7ef4200 +drivers/scsi/scsi_mod scsi_print_sense 0x62d66dc4 +drivers/scsi/scsi_mod scsi_print_sense_hdr 0xca5dbc50 +drivers/scsi/scsi_mod scsi_print_status 0x9cfd56c5 +drivers/scsi/scsi_mod scsi_put_command 0xbf47eb10 +drivers/scsi/scsi_mod scsi_queue_work 0xf078c2c9 +drivers/scsi/scsi_mod scsi_register 0xa22f40bc +drivers/scsi/scsi_mod scsi_register_driver 0x0c127077 +drivers/scsi/scsi_mod scsi_register_interface 0xd264c122 +drivers/scsi/scsi_mod scsi_release_request 0xd3ccfe86 +drivers/scsi/scsi_mod scsi_remove_device 0x4ceb2434 +drivers/scsi/scsi_mod scsi_remove_host 0x42e6218d +drivers/scsi/scsi_mod scsi_remove_target 0x0d29876c +drivers/scsi/scsi_mod scsi_report_bus_reset 0x0c83151c +drivers/scsi/scsi_mod scsi_report_device_reset 0x71b74fb1 +drivers/scsi/scsi_mod scsi_request_normalize_sense 0xc0233ed3 +drivers/scsi/scsi_mod scsi_rescan_device 0x081ccd62 +drivers/scsi/scsi_mod scsi_reset_provider 0xa8c0309a +drivers/scsi/scsi_mod scsi_scan_host 0xdcff4c54 +drivers/scsi/scsi_mod scsi_scan_target 0x14733798 +drivers/scsi/scsi_mod scsi_sense_desc_find 0x2b0ba2b0 +drivers/scsi/scsi_mod scsi_sense_key_string 0x96cd2b04 +drivers/scsi/scsi_mod scsi_set_medium_removal 0xdc564463 +drivers/scsi/scsi_mod scsi_setup_blk_pc_cmnd 0x6e334cf9 +drivers/scsi/scsi_mod scsi_target_block 0x390bd714 +drivers/scsi/scsi_mod scsi_target_quiesce 0xa1218e07 +drivers/scsi/scsi_mod scsi_target_resume 0x5067ec52 +drivers/scsi/scsi_mod scsi_target_unblock 0xbe874628 +drivers/scsi/scsi_mod scsi_test_unit_ready 0xf6920577 +drivers/scsi/scsi_mod scsi_track_queue_full 0x668ff017 +drivers/scsi/scsi_mod scsi_unblock_requests 0x601796ce +drivers/scsi/scsi_mod scsi_unregister 0x85b4c28d +drivers/scsi/scsi_mod scsicam_bios_param 0xd5a711d0 +drivers/scsi/scsi_mod starget_for_each_device 0x5fa8d65d +drivers/scsi/scsi_transport_fc fc_attach_transport 0x497e2283 +drivers/scsi/scsi_transport_fc fc_release_transport 0x7d4f8c70 +drivers/scsi/scsi_transport_fc fc_remote_port_add 0xe868511a +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0x66abe129 +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x0cc5fa57 +drivers/scsi/scsi_transport_fc fc_remove_host 0x2c2239e1 +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0x1d91aad7 +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x141f695f +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x1b31de65 +drivers/scsi/scsi_transport_sas sas_attach_transport 0x24d31ec8 +drivers/scsi/scsi_transport_sas sas_phy_add 0x3b355a0a +drivers/scsi/scsi_transport_sas sas_phy_alloc 0x203a6d0b +drivers/scsi/scsi_transport_sas sas_phy_delete 0x4165dac9 +drivers/scsi/scsi_transport_sas sas_phy_free 0x62698933 +drivers/scsi/scsi_transport_sas sas_release_transport 0x7a7533a1 +drivers/scsi/scsi_transport_sas sas_remove_host 0xc3090e88 +drivers/scsi/scsi_transport_sas sas_rphy_add 0x9062464f +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0xb56fd301 +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x1441fe9a +drivers/scsi/scsi_transport_sas sas_rphy_free 0xe2945e8f +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0x58055afd +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0x280ced44 +drivers/scsi/scsi_transport_spi spi_attach_transport 0x6aebce08 +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0xdd564eec +drivers/scsi/scsi_transport_spi spi_dv_device 0xbb937944 +drivers/scsi/scsi_transport_spi spi_release_transport 0xbe1c220a +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0x45f14ce2 +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x5b355258 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0x2cd35065 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x731b5856 +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0xdd92a0e0 +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0xb4597c91 +drivers/serial/8250 serial8250_register_port 0x368b92ed +drivers/serial/8250 serial8250_resume_port 0xc7208c3a +drivers/serial/8250 serial8250_suspend_port 0xcc248d26 +drivers/serial/8250 serial8250_unregister_port 0xcefcd99a +drivers/serial/8250_pci pciserial_init_ports 0xd448dc8b +drivers/serial/8250_pci pciserial_remove_ports 0x1e5e80a6 +drivers/serial/8250_pci pciserial_resume_ports 0x25137e41 +drivers/serial/8250_pci pciserial_suspend_ports 0xb5109c83 +drivers/serial/serial_core uart_add_one_port 0x0f0060df +drivers/serial/serial_core uart_get_baud_rate 0x31e46f78 +drivers/serial/serial_core uart_get_divisor 0x4f4c3194 +drivers/serial/serial_core uart_match_port 0x58c0099a +drivers/serial/serial_core uart_register_driver 0x211df9a3 +drivers/serial/serial_core uart_remove_one_port 0x6af5448b +drivers/serial/serial_core uart_resume_port 0x44bd210f +drivers/serial/serial_core uart_suspend_port 0xfbaf0d15 +drivers/serial/serial_core uart_unregister_driver 0x2f6a8765 +drivers/serial/serial_core uart_update_timeout 0x5e337dc9 +drivers/serial/serial_core uart_write_wakeup 0xe05ef918 +drivers/telephony/ixj ixj_pcmcia_probe 0xb96fff6d +drivers/telephony/phonedev phone_register_device 0x302470f6 +drivers/telephony/phonedev phone_unregister_device 0x25a5b108 +drivers/usb/atm/usbatm usbatm_usb_disconnect 0x619f4111 +drivers/usb/atm/usbatm usbatm_usb_probe 0x732148da +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0xb4df3fd7 +drivers/usb/core/usbcore usb_alloc_dev 0x7357efaa +drivers/usb/core/usbcore usb_alloc_urb 0xde19699b +drivers/usb/core/usbcore usb_altnum_to_altsetting 0x56f0547c +drivers/usb/core/usbcore usb_buffer_alloc 0x2f797be6 +drivers/usb/core/usbcore usb_buffer_free 0xeccb61e2 +drivers/usb/core/usbcore usb_buffer_map_sg 0xd2921acd +drivers/usb/core/usbcore usb_buffer_unmap_sg 0x95e5673a +drivers/usb/core/usbcore usb_bulk_msg 0x0a371d6e +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0xddf322b1 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0x7a623048 +drivers/usb/core/usbcore usb_claim_bandwidth 0x1e0b3694 +drivers/usb/core/usbcore usb_clear_halt 0x9bc370aa +drivers/usb/core/usbcore usb_control_msg 0xace5daf1 +drivers/usb/core/usbcore usb_create_hcd 0xb743dc51 +drivers/usb/core/usbcore usb_deregister 0xe83e4973 +drivers/usb/core/usbcore usb_deregister_dev 0x3241f164 +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0xae97b628 +drivers/usb/core/usbcore usb_driver_claim_interface 0x5870e11a +drivers/usb/core/usbcore usb_driver_release_interface 0x3fc5c401 +drivers/usb/core/usbcore usb_find_device 0x4eda5e02 +drivers/usb/core/usbcore usb_find_interface 0x4f0b0ee8 +drivers/usb/core/usbcore usb_free_urb 0x281edc9d +drivers/usb/core/usbcore usb_get_current_frame_number 0x66ce61a0 +drivers/usb/core/usbcore usb_get_descriptor 0xff5af901 +drivers/usb/core/usbcore usb_get_dev 0x1cb2cf8d +drivers/usb/core/usbcore usb_get_intf 0x90782fb6 +drivers/usb/core/usbcore usb_get_status 0x9846d083 +drivers/usb/core/usbcore usb_get_string 0x59448728 +drivers/usb/core/usbcore usb_get_urb 0x86354e31 +drivers/usb/core/usbcore usb_hc_died 0xf82f8844 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0x72ee8c14 +drivers/usb/core/usbcore usb_hcd_pci_probe 0xe09b73fc +drivers/usb/core/usbcore usb_hcd_pci_remove 0x11366370 +drivers/usb/core/usbcore usb_hcd_pci_resume 0x5ad13373 +drivers/usb/core/usbcore usb_hcd_pci_suspend 0x5bc2b5f5 +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0x331745bb +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0xaca9ffd7 +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0x9b8d1eff +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0xbcfc2e3c +drivers/usb/core/usbcore usb_ifnum_to_if 0xa71aadf9 +drivers/usb/core/usbcore usb_init_urb 0x9205d515 +drivers/usb/core/usbcore usb_kill_urb 0xeb8bdfb1 +drivers/usb/core/usbcore usb_lock_device 0xfedcb73f +drivers/usb/core/usbcore usb_lock_device_for_reset 0xf967d866 +drivers/usb/core/usbcore usb_match_id 0xfebba561 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0x837aa430 +drivers/usb/core/usbcore usb_put_dev 0xa6b6795e +drivers/usb/core/usbcore usb_put_hcd 0xb8253699 +drivers/usb/core/usbcore usb_put_intf 0xd3f1d6c8 +drivers/usb/core/usbcore usb_register 0xb4657217 +drivers/usb/core/usbcore usb_register_dev 0x5fcc4355 +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0xaceb8ce9 +drivers/usb/core/usbcore usb_remove_hcd 0x89859c53 +drivers/usb/core/usbcore usb_reset_configuration 0x07ea23f6 +drivers/usb/core/usbcore usb_reset_device 0xce4ef24f +drivers/usb/core/usbcore usb_set_device_state 0x6c4d7e47 +drivers/usb/core/usbcore usb_set_interface 0x2e72ebad +drivers/usb/core/usbcore usb_sg_cancel 0xe9984c33 +drivers/usb/core/usbcore usb_sg_init 0x06ecd7d6 +drivers/usb/core/usbcore usb_sg_wait 0x0e102d6f +drivers/usb/core/usbcore usb_string 0xf32db403 +drivers/usb/core/usbcore usb_submit_urb 0x47f85f50 +drivers/usb/core/usbcore usb_trylock_device 0x0f81b4d0 +drivers/usb/core/usbcore usb_unlink_urb 0x0ffa8769 +drivers/usb/core/usbcore usb_unlock_device 0x0ecd6ab2 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/gadget/net2280 net2280_set_fifo_mode 0x8b3cb685 +drivers/usb/gadget/net2280 usb_gadget_register_driver 0x06aa5602 +drivers/usb/gadget/net2280 usb_gadget_unregister_driver 0x82bfc0eb +drivers/usb/host/sl811-hcd sl811h_driver 0x489ef824 +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0xbfe17e96 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x7d0a1493 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0xf4280198 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0xdcac4abe +drivers/usb/media/usbvideo RingQueue_Dequeue 0xb3f01b51 +drivers/usb/media/usbvideo RingQueue_Enqueue 0xa8caef21 +drivers/usb/media/usbvideo RingQueue_Flush 0xbc4a757d +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0x26af5b87 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0xabcbd845 +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x9857de8e +drivers/usb/media/usbvideo usbvideo_Deregister 0xd458b824 +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0x583d3b78 +drivers/usb/media/usbvideo usbvideo_TestPattern 0x72372f72 +drivers/usb/media/usbvideo usbvideo_register 0x5fc957fe +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0xd526fbd6 +drivers/usb/media/w9968cf w9968cf_vppmod_register 0x9a6f7a5e +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0xbb7e2e63 +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0xc02380b5 +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0x86ff0ee5 +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0x9e1341b5 +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0x17ef894a +drivers/usb/net/usbnet usbnet_defer_kevent 0x7de919a3 +drivers/usb/net/usbnet usbnet_disconnect 0x011cad3b +drivers/usb/net/usbnet usbnet_get_drvinfo 0xb5c7a08e +drivers/usb/net/usbnet usbnet_get_endpoints 0x7657315d +drivers/usb/net/usbnet usbnet_get_msglevel 0xa7841559 +drivers/usb/net/usbnet usbnet_probe 0xfdfeeb26 +drivers/usb/net/usbnet usbnet_resume 0xbe2f854f +drivers/usb/net/usbnet usbnet_set_msglevel 0x9b180aeb +drivers/usb/net/usbnet usbnet_skb_return 0x5aa316a0 +drivers/usb/net/usbnet usbnet_suspend 0x101dd983 +drivers/usb/serial/usbserial ezusb_set_reset 0xdca906a7 +drivers/usb/serial/usbserial ezusb_writememory 0xf05f72da +drivers/usb/serial/usbserial usb_serial_deregister 0xc5f97292 +drivers/usb/serial/usbserial usb_serial_disconnect 0x1daaaed6 +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x3de11085 +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0x82d56183 +drivers/usb/serial/usbserial usb_serial_register 0x5aba5732 +drivers/video/backlight/backlight backlight_device_register 0x454b92c0 +drivers/video/backlight/backlight backlight_device_unregister 0x5337285d +drivers/video/backlight/lcd lcd_device_register 0xf45e742a +drivers/video/backlight/lcd lcd_device_unregister 0x66098c6f +drivers/video/cyber2000fb cyber2000fb_attach 0x533e09a7 +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x780f37c9 +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0x8df96e89 +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0x495e01b2 +drivers/video/sis/sisfb sis_free 0x454a3cf0 +drivers/video/sis/sisfb sis_free_new 0x3c84c8e6 +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0xe7c9dae9 +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0x4eaa59b9 +drivers/w1/ds9490r ds_put_device 0xdd55c624 +drivers/w1/ds9490r ds_read_bit 0x169577c5 +drivers/w1/ds9490r ds_read_block 0xa4ea5aa0 +drivers/w1/ds9490r ds_read_byte 0xccde4e70 +drivers/w1/ds9490r ds_reset 0x13393309 +drivers/w1/ds9490r ds_touch_bit 0x83ab5e62 +drivers/w1/ds9490r ds_write_bit 0x1e5e02df +drivers/w1/ds9490r ds_write_block 0x2a462df7 +drivers/w1/ds9490r ds_write_byte 0x08f8f085 +drivers/w1/wire w1_add_master_device 0xd703c624 +drivers/w1/wire w1_calc_crc8 0x7c2f2afb +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xb0c86d52 +drivers/w1/wire w1_family_put 0x45181a35 +drivers/w1/wire w1_family_registered 0x345f469c +drivers/w1/wire w1_read_8 0x8489d4d8 +drivers/w1/wire w1_read_block 0x60ea0330 +drivers/w1/wire w1_register_family 0xadeb1de9 +drivers/w1/wire w1_remove_master_device 0x31a7a05c +drivers/w1/wire w1_reset_bus 0xe072793c +drivers/w1/wire w1_reset_select_slave 0x49e9a4e8 +drivers/w1/wire w1_search_devices 0xd3eb2fba +drivers/w1/wire w1_touch_bit 0xac1f2233 +drivers/w1/wire w1_unregister_family 0x2616cdb9 +drivers/w1/wire w1_write_8 0xcad120e2 +drivers/w1/wire w1_write_block 0xbdfcbe66 +fs/configfs/configfs config_group_init 0xc027f19d +fs/configfs/configfs config_group_init_type_name 0x021e3c43 +fs/configfs/configfs config_item_get 0x41863821 +fs/configfs/configfs config_item_init 0x85e95c42 +fs/configfs/configfs config_item_init_type_name 0x39a70e78 +fs/configfs/configfs config_item_put 0x44b3a1a1 +fs/configfs/configfs config_item_set_name 0xe23c5e11 +fs/configfs/configfs configfs_register_subsystem 0xc78068a0 +fs/configfs/configfs configfs_unregister_subsystem 0x71e9170e +fs/exportfs/exportfs export_op_default 0x3e18bc07 +fs/exportfs/exportfs find_exported_dentry 0xb99568ae +fs/fat/fat fat_add_entries 0x3a1db444 +fs/fat/fat fat_alloc_new_dir 0xad6496a9 +fs/fat/fat fat_attach 0x7d08bf9b +fs/fat/fat fat_build_inode 0xae61909e +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0x63fe495c +fs/fat/fat fat_dir_empty 0x3b8bec34 +fs/fat/fat fat_fill_super 0x2a73ceb2 +fs/fat/fat fat_free_clusters 0x54529869 +fs/fat/fat fat_fs_panic 0xad357a04 +fs/fat/fat fat_get_dotdot_entry 0x000782a8 +fs/fat/fat fat_notify_change 0xe157302d +fs/fat/fat fat_remove_entries 0x531e7007 +fs/fat/fat fat_scan 0xccee96c5 +fs/fat/fat fat_search_long 0xf99cdf87 +fs/fat/fat fat_sync_bhs 0xd650516c +fs/fat/fat fat_sync_inode 0x320fb9af +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0x6989b23a +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0xd0c98cd8 +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0xb0a87383 +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0x750ff397 +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0x51576cb4 +fs/jbd/jbd journal_abort 0xcd6bfc3b +fs/jbd/jbd journal_ack_err 0xc1c29fc1 +fs/jbd/jbd journal_blocks_per_page 0xe605497e +fs/jbd/jbd journal_check_available_features 0x75f1f742 +fs/jbd/jbd journal_check_used_features 0x41e90bd5 +fs/jbd/jbd journal_clear_err 0x445dbc71 +fs/jbd/jbd journal_create 0x658bd379 +fs/jbd/jbd journal_destroy 0xefc7da0b +fs/jbd/jbd journal_dirty_data 0x81b11420 +fs/jbd/jbd journal_dirty_metadata 0x4a05ef09 +fs/jbd/jbd journal_errno 0x82fcfa37 +fs/jbd/jbd journal_extend 0xcdceec77 +fs/jbd/jbd journal_flush 0xc9c23711 +fs/jbd/jbd journal_force_commit 0x91fa1d2e +fs/jbd/jbd journal_force_commit_nested 0x0aab0b42 +fs/jbd/jbd journal_forget 0xb44e0827 +fs/jbd/jbd journal_get_create_access 0xd4a6f314 +fs/jbd/jbd journal_get_undo_access 0xb3999581 +fs/jbd/jbd journal_get_write_access 0xe3fcbfdd +fs/jbd/jbd journal_init_dev 0xf5c19b0b +fs/jbd/jbd journal_init_inode 0x511f511e +fs/jbd/jbd journal_invalidatepage 0x80c2c1f2 +fs/jbd/jbd journal_load 0xad9a621a +fs/jbd/jbd journal_lock_updates 0xcd7744eb +fs/jbd/jbd journal_release_buffer 0x8ea95f64 +fs/jbd/jbd journal_restart 0x8c5a2122 +fs/jbd/jbd journal_revoke 0xb368afef +fs/jbd/jbd journal_set_features 0x6430ad5d +fs/jbd/jbd journal_start 0xb2fdca9f +fs/jbd/jbd journal_start_commit 0xa4169beb +fs/jbd/jbd journal_stop 0x1af29e4b +fs/jbd/jbd journal_try_to_free_buffers 0x7bf9ecf0 +fs/jbd/jbd journal_unlock_updates 0xd0cf8022 +fs/jbd/jbd journal_update_format 0x8f262c8e +fs/jbd/jbd journal_update_superblock 0x4e7423a8 +fs/jbd/jbd journal_wipe 0x579f3d9b +fs/jbd/jbd log_wait_commit 0x33530539 +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0xc74c00ef +fs/lockd/lockd nlmsvc_ops 0xdfff1bad +fs/nfsd/nfsd nfs4_acl_add_ace 0x1bb3671e +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x687f6251 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0x1cb231d0 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0x1d747ce3 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xbaeb4700 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0xea4c9cfb +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0x18336000 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0x65938371 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x43bce54e +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0x36418553 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0xa9f5379a +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0xf3492607 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0x8db5f8e1 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x2bf06b2e +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0xfc165893 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xa82a8645 +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0xd7897206 +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0xbd0c9387 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0x662bbbe9 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0xffe47418 +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0xa15ff88d +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0x1eee6780 +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0x0de1b14c +fs/relayfs/relayfs relay_buf_full 0x1a65def3 +fs/relayfs/relayfs relay_close 0xff59a490 +fs/relayfs/relayfs relay_flush 0x730171c0 +fs/relayfs/relayfs relay_open 0xa4288db7 +fs/relayfs/relayfs relay_reset 0x30e1c6e2 +fs/relayfs/relayfs relay_subbufs_consumed 0x335933a0 +fs/relayfs/relayfs relay_switch_subbuf 0xcce11c29 +fs/relayfs/relayfs relayfs_create_dir 0x70fe07a6 +fs/relayfs/relayfs relayfs_file_operations 0xdffd3783 +fs/relayfs/relayfs relayfs_remove_dir 0x3cd015aa +lib/crc-ccitt crc_ccitt 0x3771b461 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x8ffdb3b8 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x2329b292 +lib/libcrc32c crc32c_le 0x37d0b921 +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0xa126f552 +net/appletalk/appletalk alloc_ltalkdev 0xd4beee98 +net/appletalk/appletalk atalk_find_dev_addr 0xb1852aa5 +net/appletalk/appletalk atrtr_get_dev 0x7040d0b9 +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0xfb70afde +net/ax25/ax25 ax25_findbyuid 0x564d9f14 +net/ax25/ax25 ax25_hard_header 0xb21fb44a +net/ax25/ax25 ax25_linkfail_register 0x0269823a +net/ax25/ax25 ax25_linkfail_release 0x42809f70 +net/ax25/ax25 ax25_listen_register 0xe8076414 +net/ax25/ax25 ax25_listen_release 0xb868ccee +net/ax25/ax25 ax25_protocol_register 0x12ee156c +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0xe0d05d76 +net/ax25/ax25 ax25_send_frame 0xaba1d431 +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0x37600ec0 +net/bluetooth/bluetooth bt_accept_enqueue 0x573aeee1 +net/bluetooth/bluetooth bt_accept_unlink 0x910154df +net/bluetooth/bluetooth bt_class 0xddfb76c0 +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0xc40221b9 +net/bluetooth/bluetooth bt_sock_poll 0x3c8a0ec0 +net/bluetooth/bluetooth bt_sock_recvmsg 0x5fc6e1e3 +net/bluetooth/bluetooth bt_sock_register 0xb5c4f665 +net/bluetooth/bluetooth bt_sock_unlink 0x391601b5 +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0x819f36b2 +net/bluetooth/bluetooth hci_alloc_dev 0x0ba5ffcf +net/bluetooth/bluetooth hci_conn_auth 0xaab2b5fa +net/bluetooth/bluetooth hci_conn_change_link_key 0xb590c840 +net/bluetooth/bluetooth hci_conn_encrypt 0x9608957f +net/bluetooth/bluetooth hci_conn_switch_role 0x5c9f756a +net/bluetooth/bluetooth hci_connect 0xde4a523c +net/bluetooth/bluetooth hci_free_dev 0x5091c1c1 +net/bluetooth/bluetooth hci_get_route 0x4cae5132 +net/bluetooth/bluetooth hci_register_cb 0x61b866a5 +net/bluetooth/bluetooth hci_register_dev 0x2d8d8461 +net/bluetooth/bluetooth hci_register_proto 0x556504ae +net/bluetooth/bluetooth hci_resume_dev 0x673c975a +net/bluetooth/bluetooth hci_send_acl 0x14028817 +net/bluetooth/bluetooth hci_send_sco 0x87cc16fc +net/bluetooth/bluetooth hci_suspend_dev 0xecccdbd8 +net/bluetooth/bluetooth hci_unregister_cb 0x7c391754 +net/bluetooth/bluetooth hci_unregister_dev 0x05568f76 +net/bluetooth/bluetooth hci_unregister_proto 0xd1ae7953 +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0x8da92e5f +net/bridge/netfilter/ebtables ebt_do_table 0xc1d1488d +net/bridge/netfilter/ebtables ebt_register_match 0xc0948eba +net/bridge/netfilter/ebtables ebt_register_table 0x5447d158 +net/bridge/netfilter/ebtables ebt_register_target 0xeddda5a8 +net/bridge/netfilter/ebtables ebt_register_watcher 0xb1fada71 +net/bridge/netfilter/ebtables ebt_unregister_match 0xd4759e00 +net/bridge/netfilter/ebtables ebt_unregister_table 0x16c0d63a +net/bridge/netfilter/ebtables ebt_unregister_target 0x6e578a71 +net/bridge/netfilter/ebtables ebt_unregister_watcher 0xd83003cf +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x3a18e70d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0x71ecc67f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x7824d7b3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xded46fa7 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0x878f4529 +net/dccp/dccp ccid_init 0xfd7373a7 +net/dccp/dccp ccid_register 0x029cc687 +net/dccp/dccp ccid_unregister 0x5c1832b5 +net/dccp/dccp dccp_hashinfo 0xa4d92219 +net/dccp/dccp dccp_insert_option 0x45888f50 +net/dccp/dccp dccp_insert_option_elapsed_time 0x0a547fa2 +net/dccp/dccp dccp_insert_option_timestamp 0xa0ff346a +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0xb5617100 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0xca07528c +net/ieee80211/ieee80211 alloc_ieee80211 0x0058f867 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0x87480678 +net/ieee80211/ieee80211 ieee80211_channel_to_index 0xd4d26f5a +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0x5d83e621 +net/ieee80211/ieee80211 ieee80211_get_channel 0xb1754b12 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0x0e573d63 +net/ieee80211/ieee80211 ieee80211_get_geo 0x368c7524 +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0xcc3bf897 +net/ieee80211/ieee80211 ieee80211_rx 0x73a0fab4 +net/ieee80211/ieee80211 ieee80211_rx_mgt 0x7632b543 +net/ieee80211/ieee80211 ieee80211_set_geo 0x6ac23cea +net/ieee80211/ieee80211 ieee80211_tx_frame 0x9d9923c0 +net/ieee80211/ieee80211 ieee80211_txb_free 0x68da0ab0 +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0x1a2b51e3 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0x276d854f +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x5049216a +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0x57cec47d +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0x69bece7d +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0xf73e38b6 +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x4955b95e +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0x834bcf3e +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x75c81db7 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0xf0e55485 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x603109f0 +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0xb859c8c6 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0xd1d2ca6e +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0xcb697446 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0x2b98dd50 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x05396287 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0xf025a615 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0x8374d656 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0xed1cd455 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0x57f905e2 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0x96de3677 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0xbb9e1285 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0xfe443fa9 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0x9d7fdbc1 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x485b523d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x92a432d9 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x6559ed12 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0xe9801475 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x8abbf01d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x3bcecda3 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x2cd0f095 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0xfbe22e4c +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x6f77aab9 +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x28b087a7 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0xa6bf7c49 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0x5228a832 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0xb708daac +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0xcfe6be4b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0x97480152 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0x9b4afba3 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0xcefc48aa +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0xabefdb11 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0x1bf32835 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0xc1921a3d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x7ae5c7e9 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x303044fd +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x7707e421 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0x56d6eca8 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x0c1efc27 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0xb15a817c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0xb96b801a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0x3b7d65c7 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x811768bd +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x0365504b +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0xb60933dd +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0xc0b6e6f1 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x0e85188d +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0xdfd660de +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0x36c821c8 +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0x7ef55fcf +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0x796048b5 +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0xeff40172 +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0x45026814 +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0xa463ffed +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0xa01528af +net/ipv4/ipvs/ip_vs register_ip_vs_app 0x86d3723d +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0x9d21d519 +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0xc6ad1162 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0x7dc79304 +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0xd1b27b98 +net/ipv4/netfilter/arp_tables arpt_do_table 0xddafee99 +net/ipv4/netfilter/arp_tables arpt_register_table 0x47bdc8b9 +net/ipv4/netfilter/arp_tables arpt_register_target 0x5fc94ace +net/ipv4/netfilter/arp_tables arpt_unregister_table 0xa3e22a40 +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x4cfdf44d +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x43815848 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0xea332f00 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0xad3084bc +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x79202e9c +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0xb0a5c458 +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0x2888afc2 +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x77e803fa +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0xb757d71e +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0x0658b9eb +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0xb82500e5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0x99277667 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x4abd6fd3 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0xa365e152 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0xcb2de447 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x636769df +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0x097c005c +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0xaa32e47a +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0xa0f3b815 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x171971aa +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0xa88ccd7c +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x53df9d67 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x5bf384c1 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x1417e31e +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x8efa4c63 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0x2bf057d6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0x8e43bf63 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x999a8e88 +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x8cfaf084 +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0x0f70f9e4 +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0xf15f74be +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x01e6a37d +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0x2d0421cd +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0x7fd8e041 +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0xe63de2f7 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x7ba913e7 +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0xf88a0cd7 +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0xb67969ba +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0xefe7d436 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0xe8714f45 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0x1d311f8d +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0x7f24dd33 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0xd9340a21 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x20898676 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0xeba44761 +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0xda974192 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0xd29cc160 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0x823c0b22 +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0x2f99f732 +net/ipv4/netfilter/ip_nat ip_nat_packet 0x337d001c +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x3b5a6713 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x70a21909 +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x2cf364d4 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0xf9cb00c8 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0xc17aad0b +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0xd1f895c1 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0x5ea075f3 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x59ad959f +net/ipv4/netfilter/ip_tables ipt_do_table 0x201065b2 +net/ipv4/netfilter/ip_tables ipt_find_target 0xfab5b3f3 +net/ipv4/netfilter/ip_tables ipt_register_match 0x900ece7d +net/ipv4/netfilter/ip_tables ipt_register_table 0x4d3071f5 +net/ipv4/netfilter/ip_tables ipt_register_target 0x678123ab +net/ipv4/netfilter/ip_tables ipt_unregister_match 0xa2a17aed +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x1ccbd8cc +net/ipv4/netfilter/ip_tables ipt_unregister_target 0x47305144 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0x4c2123fd +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0xe738557b +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0x11065b31 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0x3f6d9b5f +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x46244449 +net/ipv6/ipv6 inet6_add_protocol 0xcd866f51 +net/ipv6/ipv6 inet6_bind 0xbee4020a +net/ipv6/ipv6 inet6_del_protocol 0xb36bfbbe +net/ipv6/ipv6 inet6_getname 0xe80de589 +net/ipv6/ipv6 inet6_ioctl 0xf4c4c284 +net/ipv6/ipv6 inet6_register_protosw 0x5c7b489b +net/ipv6/ipv6 inet6_release 0x52f591eb +net/ipv6/ipv6 inet6_unregister_protosw 0x317ea52b +net/ipv6/ipv6 ip6_route_me_harder 0x8b3568bc +net/ipv6/ipv6 ip6_route_output 0x4ec91077 +net/ipv6/ipv6 ip6_xmit 0x33c4d8e4 +net/ipv6/ipv6 ipv6_chk_addr 0x08d33d15 +net/ipv6/ipv6 ipv6_get_saddr 0x1cce68b5 +net/ipv6/ipv6 ipv6_getsockopt 0xcb7fc08e +net/ipv6/ipv6 ipv6_push_nfrag_opts 0xf99d4793 +net/ipv6/ipv6 ipv6_setsockopt 0xc80a7b86 +net/ipv6/ipv6 ndisc_mc_map 0x6b7b2478 +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0xe2a62490 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0x36f80305 +net/ipv6/ipv6 xfrm6_rcv_spi 0x0bf890e7 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0xb56acc35 +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0x5f13bca4 +net/ipv6/netfilter/ip6_tables ip6t_register_table 0x4ff5b950 +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x2db91130 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0xa738e004 +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0xdfeaf348 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0x9d32bfc9 +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0xa1f622f7 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0xbbb2bcef +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0xd210be0c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/irda/ircomm/ircomm ircomm_close 0x9bf175d6 +net/irda/ircomm/ircomm ircomm_connect_request 0x31d2dd19 +net/irda/ircomm/ircomm ircomm_connect_response 0xc947ffa8 +net/irda/ircomm/ircomm ircomm_control_request 0x5b4d8716 +net/irda/ircomm/ircomm ircomm_data_request 0x3c722cf3 +net/irda/ircomm/ircomm ircomm_disconnect_request 0x99e95449 +net/irda/ircomm/ircomm ircomm_flow_request 0x6c0488ac +net/irda/ircomm/ircomm ircomm_open 0x354c5a79 +net/irda/irda alloc_irdadev 0xea4859aa +net/irda/irda async_unwrap_char 0x44664522 +net/irda/irda async_wrap_skb 0x7dc9d778 +net/irda/irda hashbin_delete 0x1c51e992 +net/irda/irda hashbin_find 0x6621aa8a +net/irda/irda hashbin_get_first 0x538fe1e0 +net/irda/irda hashbin_get_next 0xe2f84c82 +net/irda/irda hashbin_insert 0x22b0f52d +net/irda/irda hashbin_lock_find 0x19d79c82 +net/irda/irda hashbin_new 0x5504cf7c +net/irda/irda hashbin_remove 0x3b2e9df9 +net/irda/irda hashbin_remove_this 0x57fb1ed2 +net/irda/irda irda_debug 0x38a20e5b +net/irda/irda irda_device_dongle_cleanup 0xbcc45404 +net/irda/irda irda_device_dongle_init 0x24f04270 +net/irda/irda irda_device_register_dongle 0x77b9804c +net/irda/irda irda_device_set_media_busy 0x8595068a +net/irda/irda irda_device_unregister_dongle 0x5fc17d9a +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0xb6181975 +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_setup_dma 0xf39b7fe0 +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0x35ac61bc +net/irda/irda iriap_getvaluebyclass_request 0xe331fe06 +net/irda/irda iriap_open 0x2a5347c4 +net/irda/irda irias_add_integer_attrib 0x519118cc +net/irda/irda irias_add_octseq_attrib 0x05d7cfe5 +net/irda/irda irias_add_string_attrib 0x701e028e +net/irda/irda irias_delete_object 0x5aad87aa +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x503ad245 +net/irda/irda irias_find_object 0x42c7c5ce +net/irda/irda irias_insert_object 0x30827e1c +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0x5d609063 +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0xe84e470e +net/irda/irda irlap_open 0x9b7b09a1 +net/irda/irda irlmp_close_lsap 0x760a36eb +net/irda/irda irlmp_connect_request 0x387b0a9e +net/irda/irda irlmp_connect_response 0xa6e0caef +net/irda/irda irlmp_data_request 0x72aadef6 +net/irda/irda irlmp_disconnect_request 0xa5de4291 +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0xfa863c80 +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0x150137b0 +net/irda/irda irttp_connect_request 0x6580f397 +net/irda/irda irttp_connect_response 0x5f560ad0 +net/irda/irda irttp_data_request 0xe8673505 +net/irda/irda irttp_disconnect_request 0xa257475c +net/irda/irda irttp_dup 0xcb0f6826 +net/irda/irda irttp_flow_request 0x542ed348 +net/irda/irda irttp_open_tsap 0xf7b7f943 +net/irda/irda irttp_udata_request 0x5b62dc30 +net/irda/irda proc_irda 0x093d4a6f +net/lapb/lapb lapb_connect_request 0x2b002da3 +net/lapb/lapb lapb_data_received 0xb26bb167 +net/lapb/lapb lapb_data_request 0x928d5852 +net/lapb/lapb lapb_disconnect_request 0x89645274 +net/lapb/lapb lapb_getparms 0x5b828da2 +net/lapb/lapb lapb_register 0x71f3c9fe +net/lapb/lapb lapb_setparms 0x0d232e18 +net/lapb/lapb lapb_unregister 0xcaeb93e2 +net/netfilter/nfnetlink __nfa_fill 0xc352296a +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0x8326db98 +net/netfilter/nfnetlink nfnetlink_subsys_register 0xf844eefc +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0x031fb81b +net/netfilter/nfnetlink nfnetlink_unicast 0x65fd41bf +net/rxrpc/rxrpc rxrpc_add_service 0x11f333b7 +net/rxrpc/rxrpc rxrpc_call_abort 0x8efcc304 +net/rxrpc/rxrpc rxrpc_call_read_data 0x6ad2b505 +net/rxrpc/rxrpc rxrpc_call_write_data 0xd68d056a +net/rxrpc/rxrpc rxrpc_create_call 0xd700f787 +net/rxrpc/rxrpc rxrpc_create_connection 0x9e8e311b +net/rxrpc/rxrpc rxrpc_create_transport 0x2514d40c +net/rxrpc/rxrpc rxrpc_del_service 0xc91a5a90 +net/rxrpc/rxrpc rxrpc_put_call 0xf3ef80f3 +net/rxrpc/rxrpc rxrpc_put_connection 0x6ce248aa +net/rxrpc/rxrpc rxrpc_put_transport 0x97bf1996 +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x00c52ef5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0xb5dea7ef +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xf8b2ff6e +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0xf783dcac +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0x0a3b2951 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0xb91beb4f +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0xabfb9e7d +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0x0beafd8b +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0x9263babf +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0x1ada5b8b +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0xdda1f3f2 +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0x2ade25b9 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0xe9958532 +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0xb1e22196 +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0xb44c1419 +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0x9921b37a +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x4c2f4b6d +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x8d1a827e +net/sunrpc/sunrpc auth_domain_find 0xce9b7a1f +net/sunrpc/sunrpc auth_domain_lookup 0xa74157e3 +net/sunrpc/sunrpc auth_domain_put 0xb7e2b4a5 +net/sunrpc/sunrpc auth_unix_add_addr 0xb8520a43 +net/sunrpc/sunrpc auth_unix_forget_old 0x758f9c49 +net/sunrpc/sunrpc auth_unix_lookup 0xd1d4e136 +net/sunrpc/sunrpc cache_check 0x7ba11e57 +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0x6c6d8cdd +net/sunrpc/sunrpc cache_init 0xc244025c +net/sunrpc/sunrpc cache_purge 0xd4a087dd +net/sunrpc/sunrpc cache_register 0xe7c14b84 +net/sunrpc/sunrpc cache_unregister 0xb5359d3c +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0xe34cf53d +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0x0384f059 +net/sunrpc/sunrpc rpc_bind_new_program 0xbd2b67e4 +net/sunrpc/sunrpc rpc_call_async 0x78aebec4 +net/sunrpc/sunrpc rpc_call_setup 0x9d1a622d +net/sunrpc/sunrpc rpc_call_sync 0xfc1fd27e +net/sunrpc/sunrpc rpc_clnt_sigmask 0x6629a6db +net/sunrpc/sunrpc rpc_clnt_sigunmask 0x1803ac35 +net/sunrpc/sunrpc rpc_clone_client 0x0ce3aba9 +net/sunrpc/sunrpc rpc_create_client 0x18e6f2e5 +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0xad202591 +net/sunrpc/sunrpc rpc_destroy_client 0x3597ccd4 +net/sunrpc/sunrpc rpc_execute 0x6a68efd1 +net/sunrpc/sunrpc rpc_init_task 0xf0e364da +net/sunrpc/sunrpc rpc_init_wait_queue 0x9b8a689d +net/sunrpc/sunrpc rpc_killall_tasks 0x3b930f70 +net/sunrpc/sunrpc rpc_max_payload 0x761c1448 +net/sunrpc/sunrpc rpc_mkpipe 0xddbce026 +net/sunrpc/sunrpc rpc_new_child 0x5cf18d88 +net/sunrpc/sunrpc rpc_new_client 0xbee8e228 +net/sunrpc/sunrpc rpc_new_task 0x22a80212 +net/sunrpc/sunrpc rpc_proc_register 0x09eec784 +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x313aab82 +net/sunrpc/sunrpc rpc_release_client 0x9f550c8a +net/sunrpc/sunrpc rpc_release_task 0x8a496a83 +net/sunrpc/sunrpc rpc_restart_call 0xfd775081 +net/sunrpc/sunrpc rpc_run_child 0x28008bd8 +net/sunrpc/sunrpc rpc_setbufsize 0xcde15e55 +net/sunrpc/sunrpc rpc_shutdown_client 0x03684bf7 +net/sunrpc/sunrpc rpc_sleep_on 0xd7f9f7d1 +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0x49e5e765 +net/sunrpc/sunrpc rpc_wake_up_next 0x395ed072 +net/sunrpc/sunrpc rpc_wake_up_status 0x4e43d6e5 +net/sunrpc/sunrpc rpc_wake_up_task 0x1b8153c4 +net/sunrpc/sunrpc rpcauth_create 0x474131ad +net/sunrpc/sunrpc rpcauth_free_credcache 0xbd76f381 +net/sunrpc/sunrpc rpcauth_init_credcache 0x38a0e565 +net/sunrpc/sunrpc rpcauth_lookup_credcache 0xe00e8152 +net/sunrpc/sunrpc rpcauth_lookupcred 0x46c1fede +net/sunrpc/sunrpc rpcauth_register 0x1e30772c +net/sunrpc/sunrpc rpcauth_unregister 0xdd9d1531 +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x2aa47ac8 +net/sunrpc/sunrpc svc_auth_unregister 0x0f668ba9 +net/sunrpc/sunrpc svc_authenticate 0xafb3cb1c +net/sunrpc/sunrpc svc_create 0x01d54a55 +net/sunrpc/sunrpc svc_create_thread 0xab23c438 +net/sunrpc/sunrpc svc_destroy 0x04ef2dc2 +net/sunrpc/sunrpc svc_drop 0x9801057e +net/sunrpc/sunrpc svc_exit_thread 0x4fbe6feb +net/sunrpc/sunrpc svc_makesock 0x66a1ffba +net/sunrpc/sunrpc svc_proc_register 0x40cc2867 +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0xc4676b69 +net/sunrpc/sunrpc svc_recv 0xb6b07108 +net/sunrpc/sunrpc svc_reserve 0xc167b9ff +net/sunrpc/sunrpc svc_seq_show 0x42ef9dc8 +net/sunrpc/sunrpc svc_set_client 0xfc2b4c73 +net/sunrpc/sunrpc svc_wake_up 0xad3e812d +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x96946e44 +net/sunrpc/sunrpc xdr_buf_from_iov 0xed914600 +net/sunrpc/sunrpc xdr_buf_read_netobj 0xa39bfc95 +net/sunrpc/sunrpc xdr_buf_subsegment 0x56f5bdf2 +net/sunrpc/sunrpc xdr_decode_array2 0x69ab207e +net/sunrpc/sunrpc xdr_decode_netobj 0x1be57115 +net/sunrpc/sunrpc xdr_decode_string 0x6755aa62 +net/sunrpc/sunrpc xdr_decode_string_inplace 0x7bd87272 +net/sunrpc/sunrpc xdr_decode_word 0x916c1f19 +net/sunrpc/sunrpc xdr_encode_array2 0xc2629d08 +net/sunrpc/sunrpc xdr_encode_netobj 0x29c6f164 +net/sunrpc/sunrpc xdr_encode_opaque 0x0e9e79d5 +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0x587d494b +net/sunrpc/sunrpc xdr_encode_pages 0xe06ff0a7 +net/sunrpc/sunrpc xdr_encode_string 0xabc0fe0c +net/sunrpc/sunrpc xdr_encode_word 0x937f69f9 +net/sunrpc/sunrpc xdr_init_decode 0xa769ddda +net/sunrpc/sunrpc xdr_init_encode 0xeee93799 +net/sunrpc/sunrpc xdr_inline_decode 0x93dbb41b +net/sunrpc/sunrpc xdr_inline_pages 0xb5f5eebe +net/sunrpc/sunrpc xdr_read_pages 0xf1b7a23c +net/sunrpc/sunrpc xdr_reserve_space 0xd5252b6d +net/sunrpc/sunrpc xdr_shift_buf 0xb3b1a9bf +net/sunrpc/sunrpc xdr_write_pages 0x7d1a04c2 +net/sunrpc/sunrpc xprt_create_proto 0x7b62470b +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x9d20d394 +net/wanrouter/wanrouter register_wan_device 0xbdf4d638 +net/wanrouter/wanrouter unlock_adapter_irq 0xb684b986 +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0xe2f1883b +net/wanrouter/wanrouter wanrouter_type_trans 0x3c39eebf +security/commoncap cap_bprm_apply_creds 0x98b81ef0 +security/commoncap cap_bprm_secureexec 0xdcf9b9b2 +security/commoncap cap_bprm_set_security 0xc1b66619 +security/commoncap cap_capable 0x3869b801 +security/commoncap cap_capget 0x25f97334 +security/commoncap cap_capset_check 0xc91c262e +security/commoncap cap_capset_set 0x978a05fd +security/commoncap cap_inode_removexattr 0xa24b5597 +security/commoncap cap_inode_setxattr 0x8d189a15 +security/commoncap cap_netlink_recv 0x25114759 +security/commoncap cap_netlink_send 0x7beaf41f +security/commoncap cap_ptrace 0x257719e8 +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x372390b2 +security/commoncap cap_task_reparent_to_init 0x512d4501 +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0xdb943ab6 +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0xdc5881c1 +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0x32dcece0 +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0x886c4716 +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0xb8df6c4e +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x739948fc +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0xe1e08015 +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0xbd8893b4 +sound/core/seq/snd-seq-instr snd_seq_instr_find 0xec0696a2 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x69e81be7 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0xb281c141 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0x09bb2f08 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0x9072a609 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x652e5613 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0xc45d349a +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x20b09520 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x94bcd226 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x2f00b54d +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x8d98548b +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0xc7bd34d4 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0xb9643a3b +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0x815ef39e +sound/core/snd copy_from_user_toio 0xce3ca308 +sound/core/snd copy_to_user_fromio 0x602c96f0 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0xf55059cb +sound/core/snd snd_card_file_add 0xfe44f52b +sound/core/snd snd_card_file_remove 0xf005578d +sound/core/snd snd_card_free 0x23638666 +sound/core/snd snd_card_free_in_thread 0x2fb4e4ca +sound/core/snd snd_card_new 0x6a5767f9 +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0x4e19a31b +sound/core/snd snd_card_register 0x4dbc2832 +sound/core/snd snd_card_set_generic_dev 0xd9965cb4 +sound/core/snd snd_card_set_generic_pm_callback 0x2461f3d6 +sound/core/snd snd_card_set_pm_callback 0x66f64ce0 +sound/core/snd snd_cards 0xfe4833b4 +sound/core/snd snd_component_add 0xceefc3cc +sound/core/snd snd_ctl_add 0x43295ed0 +sound/core/snd snd_ctl_elem_read 0xfe772c78 +sound/core/snd snd_ctl_elem_write 0x7e2b2c23 +sound/core/snd snd_ctl_find_id 0x3662a2e3 +sound/core/snd snd_ctl_find_numid 0x862f23a6 +sound/core/snd snd_ctl_free_one 0xbb4013db +sound/core/snd snd_ctl_new 0x8061b906 +sound/core/snd snd_ctl_new1 0x98bb878c +sound/core/snd snd_ctl_notify 0xf312d992 +sound/core/snd snd_ctl_register_ioctl 0x6aac9256 +sound/core/snd snd_ctl_remove 0x403a7aea +sound/core/snd snd_ctl_remove_id 0x982d8018 +sound/core/snd snd_ctl_rename_id 0x36ec6e57 +sound/core/snd snd_ctl_unregister_ioctl 0xae59959f +sound/core/snd snd_device_free 0x30ad4845 +sound/core/snd snd_device_new 0x84fae55b +sound/core/snd snd_device_register 0x6ee5045d +sound/core/snd snd_dma_disable 0x70c15ac1 +sound/core/snd snd_dma_pointer 0x191e88cf +sound/core/snd snd_dma_program 0x18e1683f +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0xcc1b13e7 +sound/core/snd snd_info_create_module_entry 0xbfa8eb50 +sound/core/snd snd_info_free_entry 0x76e7e33f +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0xcfa9f54c +sound/core/snd snd_info_unregister 0xfa8d76fc +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0x4a5ee0bb +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0x348283a5 +sound/core/snd snd_register_device 0x4ed85839 +sound/core/snd snd_register_oss_device 0xeac1a075 +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0xa0753482 +sound/core/snd snd_unregister_device 0x9ae6a10b +sound/core/snd snd_unregister_oss_device 0x88c515df +sound/core/snd-hwdep snd_hwdep_new 0xd7c5a46b +sound/core/snd-page-alloc snd_dma_alloc_pages 0x0aea5abe +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0x64b142b7 +sound/core/snd-page-alloc snd_dma_free_pages 0x4514819f +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0xe461264d +sound/core/snd-page-alloc snd_dma_reserve_buf 0x66539adb +sound/core/snd-page-alloc snd_free_pages 0x3b91f3af +sound/core/snd-page-alloc snd_malloc_pages 0xade88e76 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x65f0da5e +sound/core/snd-pcm snd_pcm_devices 0x5bc8430d +sound/core/snd-pcm snd_pcm_format_big_endian 0x09d405a0 +sound/core/snd-pcm snd_pcm_format_linear 0x1d607209 +sound/core/snd-pcm snd_pcm_format_little_endian 0x11ee487f +sound/core/snd-pcm snd_pcm_format_name 0x77863ed3 +sound/core/snd-pcm snd_pcm_format_physical_width 0x32be712f +sound/core/snd-pcm snd_pcm_format_set_silence 0xfa4027da +sound/core/snd-pcm snd_pcm_format_signed 0x78967306 +sound/core/snd-pcm snd_pcm_format_silence_64 0x407a3719 +sound/core/snd-pcm snd_pcm_format_size 0x0bde331d +sound/core/snd-pcm snd_pcm_format_unsigned 0x0ff581cb +sound/core/snd-pcm snd_pcm_format_width 0xcfb8aa1b +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0x24854d29 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0xfb4a0c7e +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0xf4f345d7 +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x84d04e81 +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0x52d1470e +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x16d64c1a +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0xac707423 +sound/core/snd-pcm snd_pcm_hw_constraint_step 0x2697f389 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0x2105825a +sound/core/snd-pcm snd_pcm_hw_constraints_init 0x458369b9 +sound/core/snd-pcm snd_pcm_hw_param_first 0xf299a9a9 +sound/core/snd-pcm snd_pcm_hw_param_last 0x35c2efde +sound/core/snd-pcm snd_pcm_hw_param_mask 0x2c4012ef +sound/core/snd-pcm snd_pcm_hw_param_near 0xc461767e +sound/core/snd-pcm snd_pcm_hw_param_set 0xfc25e581 +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0xf5e27bf7 +sound/core/snd-pcm snd_pcm_hw_rule_add 0x8281df6d +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0xa87fe480 +sound/core/snd-pcm snd_pcm_kernel_ioctl 0xe9fcd557 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x5f29097d +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0x919d7eff +sound/core/snd-pcm snd_pcm_lib_free_pages 0x3b4163c5 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x10ccc1e8 +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0xbf36141d +sound/core/snd-pcm snd_pcm_lib_mmap_iomem 0xef5dae9f +sound/core/snd-pcm snd_pcm_lib_period_bytes 0x5cbef8ab +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x12207829 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0xe33ced5d +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0x58fc08d2 +sound/core/snd-pcm snd_pcm_lib_read 0x63a43d0e +sound/core/snd-pcm snd_pcm_lib_readv 0x92c09648 +sound/core/snd-pcm snd_pcm_lib_write 0x6ede81d2 +sound/core/snd-pcm snd_pcm_lib_writev 0xf64b0f74 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0xb1522d68 +sound/core/snd-pcm snd_pcm_link_rwlock 0x395e287f +sound/core/snd-pcm snd_pcm_mmap_data 0xc817eb19 +sound/core/snd-pcm snd_pcm_new 0x9f9cbf21 +sound/core/snd-pcm snd_pcm_new_stream 0x35dce5f1 +sound/core/snd-pcm snd_pcm_notify 0x9522b32c +sound/core/snd-pcm snd_pcm_open_substream 0xcb3d8d85 +sound/core/snd-pcm snd_pcm_period_elapsed 0x6bb7fbc9 +sound/core/snd-pcm snd_pcm_release_substream 0x9573d2bd +sound/core/snd-pcm snd_pcm_set_ops 0x1ebbf240 +sound/core/snd-pcm snd_pcm_set_sync 0xd114c637 +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0xf5da131d +sound/core/snd-pcm snd_pcm_stop 0x31dbf7f2 +sound/core/snd-pcm snd_pcm_suspend 0x436bd5d2 +sound/core/snd-pcm snd_pcm_suspend_all 0x6a7771fe +sound/core/snd-rawmidi snd_rawmidi_drain_input 0x0784bdba +sound/core/snd-rawmidi snd_rawmidi_drain_output 0xb181c602 +sound/core/snd-rawmidi snd_rawmidi_drop_output 0xcc755008 +sound/core/snd-rawmidi snd_rawmidi_info 0x8b614949 +sound/core/snd-rawmidi snd_rawmidi_info_select 0xb114a940 +sound/core/snd-rawmidi snd_rawmidi_input_params 0x2723f2c2 +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x5f2399cc +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0x2de942fb +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0xeb084c08 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x52056d00 +sound/core/snd-rawmidi snd_rawmidi_new 0x02cbe0f3 +sound/core/snd-rawmidi snd_rawmidi_output_params 0xedeafb3a +sound/core/snd-rawmidi snd_rawmidi_receive 0xfcd6a21a +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x0f46b67d +sound/core/snd-rawmidi snd_rawmidi_transmit 0x5048d633 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0xde3e7795 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x86ff252c +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0xfcad7c0d +sound/core/snd-timer snd_timer_close 0x1ce63295 +sound/core/snd-timer snd_timer_continue 0xfe5aa32e +sound/core/snd-timer snd_timer_global_free 0x549e2568 +sound/core/snd-timer snd_timer_global_new 0x8640bd73 +sound/core/snd-timer snd_timer_global_register 0x0b93f27a +sound/core/snd-timer snd_timer_global_unregister 0xd0ae060f +sound/core/snd-timer snd_timer_interrupt 0x43973071 +sound/core/snd-timer snd_timer_new 0x5ac7aa0f +sound/core/snd-timer snd_timer_notify 0xe6786e19 +sound/core/snd-timer snd_timer_open 0xed078656 +sound/core/snd-timer snd_timer_pause 0xad3a357c +sound/core/snd-timer snd_timer_resolution 0x69216519 +sound/core/snd-timer snd_timer_start 0x0f89d8e5 +sound/core/snd-timer snd_timer_stop 0xc86f477c +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0xa6a1e6b4 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x9df85164 +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0x2fe51ee1 +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0x166d6d9a +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0x4687796a +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0x7f2626b9 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0xbbb07658 +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0x87c53e17 +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0xfbe03d89 +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0xb6662441 +sound/drivers/vx/snd-vx-lib snd_vx_create 0x53b02446 +sound/drivers/vx/snd-vx-lib snd_vx_delay 0x798bbcba +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x11ae0230 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x446abb00 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0x0e186300 +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x8a63f6eb +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0xd03d727c +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0x563a2d0b +sound/i2c/other/snd-ak4114 snd_ak4114_build 0x63c46f34 +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0x529449a5 +sound/i2c/other/snd-ak4114 snd_ak4114_create 0xc1a72297 +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0x5a4fd27e +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0x525dd7fb +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0xa80dbb66 +sound/i2c/other/snd-ak4117 snd_ak4117_build 0xc70de08b +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0x2def5eb9 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0xf93d085a +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x3895d856 +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x7831bd18 +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x423b7e52 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0xf43fcc35 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0x54c46f7b +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0xff94c91b +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0xff19e9cf +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0xc3adb806 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0xcada562c +sound/i2c/snd-cs8427 snd_cs8427_create 0x77f1234f +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0x2197c82a +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0x960b642a +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0x22e73cec +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0x96fd15d2 +sound/i2c/snd-cs8427 snd_cs8427_reset 0xae058ed1 +sound/i2c/snd-i2c snd_i2c_bus_create 0xe24a780b +sound/i2c/snd-i2c snd_i2c_device_create 0x8e093151 +sound/i2c/snd-i2c snd_i2c_device_free 0xacd8bae0 +sound/i2c/snd-i2c snd_i2c_probeaddr 0xe49d2c6a +sound/i2c/snd-i2c snd_i2c_readbytes 0x97b351b9 +sound/i2c/snd-i2c snd_i2c_sendbytes 0x6f04c9df +sound/isa/sb/snd-sb-common snd_sbdsp_command 0xbdf7b329 +sound/isa/sb/snd-sb-common snd_sbdsp_create 0xcba2ec41 +sound/isa/sb/snd-sb-common snd_sbdsp_get_byte 0x26d25f29 +sound/isa/sb/snd-sb-common snd_sbdsp_reset 0xc723fc66 +sound/isa/sb/snd-sb-common snd_sbmixer_add_ctl 0xe04522f7 +sound/isa/sb/snd-sb-common snd_sbmixer_new 0xaf865b9f +sound/isa/sb/snd-sb-common snd_sbmixer_read 0xdd7b2673 +sound/isa/sb/snd-sb-common snd_sbmixer_write 0x367a0cf0 +sound/oss/ac97_codec ac97_alloc_codec 0x68d8dbe9 +sound/oss/ac97_codec ac97_probe_codec 0xb2c62f5a +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0x9eb12877 +sound/oss/ac97_codec ac97_release_codec 0x79f0c796 +sound/oss/ac97_codec ac97_restore_state 0x69f6ad10 +sound/oss/ac97_codec ac97_save_state 0x0bba42d0 +sound/oss/ac97_codec ac97_set_adc_rate 0xb34f5352 +sound/oss/ac97_codec ac97_set_dac_rate 0x6f79f5ac +sound/oss/ac97_codec ac97_tune_hardware 0xe3a27b82 +sound/oss/ac97_codec ac97_unregister_driver 0x859b2874 +sound/oss/aci aci_port 0x0d82adb6 +sound/oss/aci aci_rw_cmd 0xcc7c4cd8 +sound/oss/aci aci_version 0x93350c87 +sound/oss/ad1848 ad1848_control 0xc04f6f67 +sound/oss/ad1848 ad1848_detect 0x845a1638 +sound/oss/ad1848 ad1848_init 0x821bf6c5 +sound/oss/ad1848 ad1848_unload 0x9bf1cc62 +sound/oss/ad1848 adintr 0x2c57f6c9 +sound/oss/ad1848 attach_ms_sound 0x0850da3d +sound/oss/ad1848 probe_ms_sound 0x65e6d1ca +sound/oss/ad1848 unload_ms_sound 0xb29a9148 +sound/oss/dmasound/dmasound_core dmasound 0xba959421 +sound/oss/dmasound/dmasound_core dmasound_catchRadius 0x4b9f5770 +sound/oss/dmasound/dmasound_core dmasound_deinit 0x7cfb4436 +sound/oss/dmasound/dmasound_core dmasound_read_sq 0xf98d65ca +sound/oss/dmasound/dmasound_core dmasound_write_sq 0x3fa550d5 +sound/oss/dmasound/dmasound_core get_afmt_string 0x4fe63f06 +sound/oss/dmasound/dmasound_core software_input_volume 0xb2211a34 +sound/oss/mpu401 attach_mpu401 0x1fbb7fc6 +sound/oss/mpu401 intchk_mpu401 0x5fe6dd42 +sound/oss/mpu401 mpuintr 0x4b2aa15c +sound/oss/mpu401 probe_mpu401 0x5c8d3e32 +sound/oss/mpu401 unload_mpu401 0x5febf284 +sound/oss/opl3 opl3_detect 0x67481767 +sound/oss/opl3 opl3_init 0xe20b012b +sound/oss/sb_lib probe_sbmpu 0xd730268a +sound/oss/sb_lib sb_be_quiet 0x42424109 +sound/oss/sb_lib sb_dsp_detect 0xd8a2731c +sound/oss/sb_lib sb_dsp_init 0xa196636f +sound/oss/sb_lib sb_dsp_unload 0xc4884969 +sound/oss/sb_lib smw_free 0x450f9aea +sound/oss/sb_lib unload_sbmpu 0x74afd69c +sound/oss/sound DMAbuf_close_dma 0xc88b42ab +sound/oss/sound DMAbuf_inputintr 0xeb315d99 +sound/oss/sound DMAbuf_open_dma 0x06b3013d +sound/oss/sound DMAbuf_outputintr 0x987bcf12 +sound/oss/sound DMAbuf_start_dma 0xe056b71c +sound/oss/sound MIDIbuf_avail 0x1f395686 +sound/oss/sound audio_devs 0xa68469ec +sound/oss/sound cent_tuning 0x03ce7ff7 +sound/oss/sound compute_finetune 0x04c87ec8 +sound/oss/sound conf_printf 0x0f280035 +sound/oss/sound conf_printf2 0x7bdf0907 +sound/oss/sound do_midi_msg 0xb51587f6 +sound/oss/sound load_mixer_volumes 0xa1d5f04f +sound/oss/sound midi_devs 0x4456a0ef +sound/oss/sound midi_synth_aftertouch 0xf1ea8a20 +sound/oss/sound midi_synth_bender 0xba7dd041 +sound/oss/sound midi_synth_close 0xad45df73 +sound/oss/sound midi_synth_controller 0x892093e0 +sound/oss/sound midi_synth_hw_control 0xb14b22cd +sound/oss/sound midi_synth_ioctl 0xaef743b2 +sound/oss/sound midi_synth_kill_note 0x2aa31695 +sound/oss/sound midi_synth_load_patch 0xf7426da3 +sound/oss/sound midi_synth_open 0xf6b3a2fb +sound/oss/sound midi_synth_panning 0xdb400afa +sound/oss/sound midi_synth_reset 0x56504ca2 +sound/oss/sound midi_synth_send_sysex 0xfddcbfb3 +sound/oss/sound midi_synth_set_instr 0xd85be938 +sound/oss/sound midi_synth_setup_voice 0x4ff47e9d +sound/oss/sound midi_synth_start_note 0x9bdaf24d +sound/oss/sound mixer_devs 0xbc4ed00a +sound/oss/sound note_to_freq 0x5d986fc9 +sound/oss/sound num_audiodevs 0x4cd01bdd +sound/oss/sound num_midis 0xa1eae7cf +sound/oss/sound num_mixers 0x9d845b18 +sound/oss/sound semitone_tuning 0x8b84aeb1 +sound/oss/sound seq_copy_to_input 0x7679ee76 +sound/oss/sound seq_input_event 0x17ba231d +sound/oss/sound sequencer_init 0xf78f6363 +sound/oss/sound sequencer_timer 0x90bd9714 +sound/oss/sound sound_alloc_dma 0x9a95733f +sound/oss/sound sound_alloc_mididev 0xba413f87 +sound/oss/sound sound_alloc_mixerdev 0x1b3df3cf +sound/oss/sound sound_alloc_synthdev 0xc748d109 +sound/oss/sound sound_alloc_timerdev 0x51e354b2 +sound/oss/sound sound_close_dma 0x418f5fbe +sound/oss/sound sound_free_dma 0x394cb088 +sound/oss/sound sound_install_audiodrv 0xf355404b +sound/oss/sound sound_install_mixer 0x21138b9b +sound/oss/sound sound_open_dma 0xcc4b8797 +sound/oss/sound sound_timer_devs 0x1a6b8635 +sound/oss/sound sound_timer_init 0x2161d5e8 +sound/oss/sound sound_timer_interrupt 0xe2675a79 +sound/oss/sound sound_timer_syncinterval 0xfa6871be +sound/oss/sound sound_unload_audiodev 0xa948751e +sound/oss/sound sound_unload_mididev 0xa6bb414c +sound/oss/sound sound_unload_mixerdev 0xa51c913b +sound/oss/sound sound_unload_synthdev 0x06339815 +sound/oss/sound sound_unload_timerdev 0xa41ead5f +sound/oss/sound synth_devs 0x101e5fb3 +sound/oss/uart401 probe_uart401 0xe9370662 +sound/oss/uart401 uart401intr 0x759aa728 +sound/oss/uart401 unload_uart401 0xecfdd9c9 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x756a48cf +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0xd58c39d6 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0x2052908c +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0x9c8c47ca +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0x531aee55 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x5e16be85 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x3d705571 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0x2975e976 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0x887df9cf +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0x5efb5c47 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0xf71c3756 +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0xb666be61 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x3c223ead +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0xa335f07c +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0x8da6bda8 +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0x166460ea +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0x8afbf9f6 +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0x6d911189 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0x0a718b50 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0xbe32fcc5 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0xe62fe450 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0xf6e9a342 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0xa7bd1cf8 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0x55ce6cc2 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0x3ec31cb4 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0x935d2a6f +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0x26a0e6c7 +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0xe1347a7e +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0x267a5b51 +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0xb7c40e1f +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0xbdc1d384 +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0x230a278d +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0xdb858875 +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0xa9e6fd29 +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0x593de31c +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0x52b50558 +sound/pci/hda/snd-hda-codec snd_hda_resume 0x37b81fae +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0xd1f1b7f4 +sound/pci/hda/snd-hda-codec snd_hda_suspend 0xbe243792 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0xb9c1e1c5 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0x00b431f9 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0xb4fec300 +sound/pci/trident/snd-trident snd_trident_alloc_voice 0xdf00674c +sound/pci/trident/snd-trident snd_trident_free_voice 0x79be950a +sound/pci/trident/snd-trident snd_trident_start_voice 0xa1a1b9fc +sound/pci/trident/snd-trident snd_trident_stop_voice 0x71e23224 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0xbbcade08 +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0x36170fd5 +sound/pci/trident/snd-trident snd_trident_synth_free 0xfa1130de +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0xf918b543 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0x114ce257 +sound/soundcore register_sound_midi 0x02d0e33e +sound/soundcore register_sound_mixer 0xbc7ea4dc +sound/soundcore register_sound_special 0xb5f041cf +sound/soundcore register_sound_special_device 0x05cb4921 +sound/soundcore register_sound_synth 0xda42e420 +sound/soundcore sound_class 0xd211556f +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +sound/synth/emux/snd-emux-synth snd_emux_free 0xd7867121 +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0xdafdd3dd +sound/synth/emux/snd-emux-synth snd_emux_new 0x6973f873 +sound/synth/emux/snd-emux-synth snd_emux_register 0x17b03394 +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0x66ccdb35 +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0x9c0165b6 +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0xa1c7119c +sound/synth/snd-util-mem __snd_util_mem_free 0xba9608d2 +sound/synth/snd-util-mem __snd_util_memblk_new 0x25fd6672 +sound/synth/snd-util-mem snd_util_mem_alloc 0xa914e616 +sound/synth/snd-util-mem snd_util_mem_avail 0x44e3fc4e +sound/synth/snd-util-mem snd_util_mem_free 0xd7974408 +sound/synth/snd-util-mem snd_util_memhdr_free 0x026c0548 +sound/synth/snd-util-mem snd_util_memhdr_new 0x23903703 +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0x26ae480e +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux DAC1064_global_init 0x81d54ca5 +vmlinux DAC1064_global_restore 0x438a5b54 +vmlinux DMA_MODE_READ 0x98fe7882 +vmlinux DMA_MODE_WRITE 0xa9571d6d +vmlinux ISA_DMA_THRESHOLD 0x844404cf +vmlinux I_BDEV 0x143578ad +vmlinux SELECT_DRIVE 0x7b481e9a +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0x33786eca +vmlinux __alloc_pages 0x1ee641b8 +vmlinux __alloc_skb 0x2221b827 +vmlinux __ashldi3 0xa89464b7 +vmlinux __ashrdi3 0xb753bcc8 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0xa64f52da +vmlinux __bio_clone 0x68f2925e +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0xb9dd3ce2 +vmlinux __bread 0x89b5e035 +vmlinux __breadahead 0x03d07465 +vmlinux __break_lease 0xd69d4d05 +vmlinux __brelse 0xc247580e +vmlinux __check_region 0xf1d0cdab +vmlinux __clear_user 0xf3341268 +vmlinux __copy_tofrom_user 0x461ebfa0 +vmlinux __cpufreq_driver_target 0x0f513c25 +vmlinux __create_workqueue 0xfe5eacad +vmlinux __d_path 0x2ef87571 +vmlinux __delay 0x466c14a7 +vmlinux __dev_get_by_index 0x5e88473f +vmlinux __dev_get_by_name 0xaf10fcf4 +vmlinux __dev_remove_pack 0xd4c486a4 +vmlinux __div64_32 0x8ebf25f5 +vmlinux __down 0x34851eed +vmlinux __down_interruptible 0x78c0ffec +vmlinux __dst_free 0xc1e598ff +vmlinux __elv_add_request 0xa7dc5f77 +vmlinux __find_get_block 0x1a9404e6 +vmlinux __flush_icache_range 0xe2e0c7c6 +vmlinux __free_pages 0x348c7492 +vmlinux __generic_file_aio_read 0x68657aa1 +vmlinux __generic_unplug_device 0x8fd7ced1 +vmlinux __get_free_pages 0x93fca811 +vmlinux __getblk 0xe0056d60 +vmlinux __handle_mm_fault 0x74130a76 +vmlinux __ide_abort 0x00446c8b +vmlinux __ide_dma_bad_drive 0xfbef39b8 +vmlinux __ide_dma_check 0x65db49c0 +vmlinux __ide_dma_end 0xc62ecf21 +vmlinux __ide_dma_good_drive 0xef934030 +vmlinux __ide_dma_host_off 0x4b339b2d +vmlinux __ide_dma_host_on 0x4714a1d2 +vmlinux __ide_dma_lostirq 0x62df96de +vmlinux __ide_dma_off 0xb2ae52af +vmlinux __ide_dma_off_quietly 0xe73d318f +vmlinux __ide_dma_on 0x63024c4e +vmlinux __ide_dma_timeout 0xe03a88cd +vmlinux __ide_end_request 0x8afd8c6d +vmlinux __ide_error 0x8d5a0537 +vmlinux __ide_mm_insl 0x30eedda2 +vmlinux __ide_mm_insw 0x432f1bb5 +vmlinux __ide_mm_outsl 0xe8c5eb1a +vmlinux __ide_mm_outsw 0x9b042d0d +vmlinux __ide_pci_register_driver 0xbf1eef79 +vmlinux __inet_lookup_listener 0x08d4901e +vmlinux __inet_twsk_hashdance 0x065c7f8a +vmlinux __inet_twsk_kill 0xac097ce4 +vmlinux __init_timer_base 0x82f04785 +vmlinux __inode_dir_notify 0xc421300f +vmlinux __insert_inode_hash 0x490ad39d +vmlinux __invalidate_device 0x56e92349 +vmlinux __ioremap 0xeda953fb +vmlinux __ip_route_output_key 0x51f1cf46 +vmlinux __ip_select_ident 0xa6eebb66 +vmlinux __irq_offset_value 0x65400222 +vmlinux __kfifo_get 0x043b8483 +vmlinux __kfifo_put 0xaa527612 +vmlinux __kfree_skb 0x40c623a9 +vmlinux __kill_fasync 0xb51396a6 +vmlinux __kmalloc 0x12da5bb2 +vmlinux __lock_buffer 0xd64b9eaf +vmlinux __lock_page 0x3f3f35b4 +vmlinux __lshrdi3 0xbd9e5d49 +vmlinux __mark_inode_dirty 0x56c27a5e +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xe051a0ac +vmlinux __module_put_and_exit 0xac95349e +vmlinux __neigh_event_send 0xe0f159d3 +vmlinux __neigh_for_each_release 0x0a629e6d +vmlinux __net_timestamp 0xec5b04c0 +vmlinux __netdev_watchdog_up 0x82cd899f +vmlinux __nla_put 0x6051ddd8 +vmlinux __nla_reserve 0x78d63a50 +vmlinux __page_cache_release 0x63403bf0 +vmlinux __pagevec_lru_add 0x7beabd1d +vmlinux __pagevec_release 0x948fe4fd +vmlinux __pci_register_driver 0xf088b534 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0x9f9fc19e +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0xbf8b9218 +vmlinux __scm_destroy 0x50203c16 +vmlinux __scm_send 0xda344bf2 +vmlinux __secpath_destroy 0xfe973921 +vmlinux __serio_register_driver 0xffe5a286 +vmlinux __serio_register_port 0x248b3122 +vmlinux __serio_unregister_port_delayed 0xe975d47d +vmlinux __set_page_dirty_buffers 0x75b2e7ff +vmlinux __set_page_dirty_nobuffers 0xb73e89ea +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x91d3a99b +vmlinux __skb_checksum_complete 0x3c1fb272 +vmlinux __skb_linearize 0x97bee621 +vmlinux __strncpy_from_user 0x801f5a3f +vmlinux __strnlen_user 0xcf901697 +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x267fc65b +vmlinux __tasklet_schedule 0xf397b9aa +vmlinux __tcf_em_tree_match 0x42fde107 +vmlinux __up 0x3fe5fc36 +vmlinux __user_walk 0xd528113b +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x26477c07 +vmlinux __vmalloc_node 0xffe71055 +vmlinux __wait_on_bit 0x8f07d8ca +vmlinux __wait_on_bit_lock 0x9501d078 +vmlinux __wait_on_buffer 0x73ae7277 +vmlinux __wake_up 0xb6c70a7d +vmlinux __wake_up_bit 0x44c214d1 +vmlinux __wake_up_sync 0xffaf7bbb +vmlinux __xfrm_policy_check 0x1c9b73a1 +vmlinux __xfrm_policy_destroy 0xf06f5ec3 +vmlinux __xfrm_route_forward 0xac306c71 +vmlinux __xfrm_state_destroy 0x14ffac3b +vmlinux _atomic_dec_and_lock 0x1edc9598 +vmlinux _chrp_type 0x623d7182 +vmlinux _ctype 0x8d3894f2 +vmlinux _insb 0xe9dd3999 +vmlinux _insl 0x3f826b33 +vmlinux _insl_ns 0x05bbde85 +vmlinux _insw 0x1933b437 +vmlinux _insw_ns 0x7e30bd26 +vmlinux _machine 0x8db2d7ee +vmlinux _outsb 0x1b52cb9e +vmlinux _outsl 0xfb6c33cb +vmlinux _outsl_ns 0xd890cca4 +vmlinux _outsw 0xe5032325 +vmlinux _outsw_ns 0x1ae3105d +vmlinux _tlbie 0x96c98233 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux adb_client_list 0x7fbb3ff8 +vmlinux adb_controller 0xb21bd6ef +vmlinux adb_poll 0xdff56e64 +vmlinux adb_register 0xa9ac8283 +vmlinux adb_request 0xc1dd4a7f +vmlinux adb_try_handler_change 0xee59412f +vmlinux adb_unregister 0xfd0c5038 +vmlinux add_disk 0x69f4207b +vmlinux add_disk_randomness 0xd44b0be2 +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0x8d901c9b +vmlinux add_wait_queue 0xfd8dba4c +vmlinux add_wait_queue_exclusive 0x3e6caebd +vmlinux adjust_resource 0xfd05bd8a +vmlinux agp_special_page 0xd92514ca +vmlinux aio_complete 0xdc75ef68 +vmlinux aio_put_req 0xd77cd840 +vmlinux alignment_exception 0xadd1e971 +vmlinux alloc_buffer_head 0x3acdd191 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0x25555d0a +vmlinux alloc_disk_node 0x823809bc +vmlinux alloc_etherdev 0x79b0d73e +vmlinux alloc_fcdev 0x5e19328f +vmlinux alloc_fddidev 0x21ce30d2 +vmlinux alloc_hippi_dev 0x5a6137a3 +vmlinux alloc_netdev 0x8350ad76 +vmlinux alloc_page_buffers 0x878c0a0f +vmlinux alloc_trdev 0xb054b511 +vmlinux alloc_tty_driver 0xb5593b1b +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0x65286b65 +vmlinux anon_transport_class_unregister 0x54960c13 +vmlinux arp_broken_ops 0xa3af39b1 +vmlinux arp_create 0xac44cab2 +vmlinux arp_find 0xc62207ac +vmlinux arp_rcv 0x11acad9c +vmlinux arp_send 0x6836650c +vmlinux arp_tbl 0x05d05ace +vmlinux arp_xmit 0x36c82dd0 +vmlinux atm_alloc_charge 0x633828d6 +vmlinux atm_charge 0xffe9ecfc +vmlinux atm_dev_deregister 0xca5111cb +vmlinux atm_dev_lookup 0x672569cc +vmlinux atm_dev_register 0xa496068c +vmlinux atm_init_aal5 0xed386f62 +vmlinux atm_pcr_goal 0xf49bc67a +vmlinux atm_proc_root 0x74390bb6 +vmlinux attribute_container_add_attrs 0xa019aa73 +vmlinux attribute_container_add_class_device 0xd32a9ba1 +vmlinux attribute_container_add_class_device_adapter 0x6cf75279 +vmlinux attribute_container_class_device_del 0xefc60a56 +vmlinux attribute_container_classdev_to_container 0xb363385d +vmlinux attribute_container_device_trigger 0x8140d019 +vmlinux attribute_container_find_class_device 0xf517fad8 +vmlinux attribute_container_register 0xf0eb286c +vmlinux attribute_container_remove_attrs 0x4a84be69 +vmlinux attribute_container_remove_device 0xc228053c +vmlinux attribute_container_trigger 0x2018ade6 +vmlinux attribute_container_unregister 0x91d2c920 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x4b03ad22 +vmlinux bd_claim 0x6e0f3067 +vmlinux bd_release 0x5544a5f5 +vmlinux bd_set_size 0xa81d973e +vmlinux bdev_read_only 0xa35d4221 +vmlinux bdevname 0xbd19dc84 +vmlinux bdget 0x0f754850 +vmlinux bdput 0x4bbba354 +vmlinux bfifo_qdisc_ops 0xe89a00b2 +vmlinux bio_add_page 0xf43d001a +vmlinux bio_alloc 0x42722c8c +vmlinux bio_alloc_bioset 0xd11d11b1 +vmlinux bio_clone 0x5cff06ca +vmlinux bio_copy_user 0xe5fc1237 +vmlinux bio_endio 0xaca8e5f2 +vmlinux bio_free 0x9ec0f653 +vmlinux bio_get_nr_vecs 0x7cef03a4 +vmlinux bio_hw_segments 0x77ae7148 +vmlinux bio_init 0x7a3c0e9a +vmlinux bio_map_kern 0xd7567513 +vmlinux bio_map_user 0x98267155 +vmlinux bio_pair_release 0x482272f2 +vmlinux bio_phys_segments 0x394766ce +vmlinux bio_put 0xdc17eaa2 +vmlinux bio_split 0xe474bd7b +vmlinux bio_split_pool 0x27b47413 +vmlinux bio_uncopy_user 0xb425b32b +vmlinux bio_unmap_user 0xc693096f +vmlinux bioset_create 0x1c875572 +vmlinux bioset_free 0x661e6ec8 +vmlinux bit_waitqueue 0xa9f1ed23 +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0x0ca2fab0 +vmlinux blk_alloc_queue_node 0x2867a053 +vmlinux blk_cleanup_queue 0x1a67ea1b +vmlinux blk_complete_barrier_rq 0x89d7f152 +vmlinux blk_complete_barrier_rq_locked 0x5d2a1db0 +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x6e66495e +vmlinux blk_end_sync_rq 0xe20e4e34 +vmlinux blk_execute_rq 0xfee66b2e +vmlinux blk_get_backing_dev_info 0xf941d11a +vmlinux blk_get_queue 0x492e4ba0 +vmlinux blk_get_request 0xfc1063c5 +vmlinux blk_init_queue 0x1f6a8de5 +vmlinux blk_init_queue_node 0x4dc174ae +vmlinux blk_insert_request 0x87a45c54 +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0xd3820df5 +vmlinux blk_put_request 0xd0d36668 +vmlinux blk_queue_activity_fn 0x4269f049 +vmlinux blk_queue_bounce 0xca9928be +vmlinux blk_queue_bounce_limit 0x648ca96f +vmlinux blk_queue_dma_alignment 0x295903bc +vmlinux blk_queue_end_tag 0x2b8501ca +vmlinux blk_queue_find_tag 0xaee27449 +vmlinux blk_queue_free_tags 0x1f9d0971 +vmlinux blk_queue_hardsect_size 0x3af648a9 +vmlinux blk_queue_init_tags 0x391ceaec +vmlinux blk_queue_invalidate_tags 0x12906e9b +vmlinux blk_queue_issue_flush_fn 0x82fca01e +vmlinux blk_queue_make_request 0xd7d58e97 +vmlinux blk_queue_max_hw_segments 0x2611ba25 +vmlinux blk_queue_max_phys_segments 0x33aaca13 +vmlinux blk_queue_max_sectors 0x04f71e53 +vmlinux blk_queue_max_segment_size 0x9821bf3a +vmlinux blk_queue_merge_bvec 0xfc9db29d +vmlinux blk_queue_ordered 0x156a1430 +vmlinux blk_queue_prep_rq 0x18eb7d8e +vmlinux blk_queue_resize_tags 0x91dd384b +vmlinux blk_queue_segment_boundary 0x216f2e92 +vmlinux blk_queue_stack_limits 0xf15ca882 +vmlinux blk_queue_start_tag 0xa2405bd6 +vmlinux blk_register_region 0xf9378f37 +vmlinux blk_remove_plug 0xc5cf4228 +vmlinux blk_requeue_request 0xc9389871 +vmlinux blk_rq_bio_prep 0x866255cd +vmlinux blk_rq_map_kern 0x0486ec08 +vmlinux blk_rq_map_sg 0x129d33e1 +vmlinux blk_rq_map_user 0xcb28e044 +vmlinux blk_rq_map_user_iov 0x050f7a4c +vmlinux blk_rq_unmap_user 0xd1b04b02 +vmlinux blk_run_queue 0x6648942d +vmlinux blk_start_queue 0xd914b7ec +vmlinux blk_stop_queue 0xd508e98f +vmlinux blk_sync_queue 0x67c5358d +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0x353014df +vmlinux blkdev_ioctl 0x4821756e +vmlinux blkdev_issue_flush 0xd03724e7 +vmlinux blkdev_put 0xdc65e7d0 +vmlinux block_all_signals 0xc74785b2 +vmlinux block_commit_write 0x08bad9aa +vmlinux block_invalidatepage 0xae06e6ae +vmlinux block_prepare_write 0xf78967b9 +vmlinux block_read_full_page 0xbf57fcc3 +vmlinux block_sync_page 0x954bb27e +vmlinux block_truncate_page 0x0074c3bc +vmlinux block_write_full_page 0xb17dcbc9 +vmlinux bmap 0x77ea27b6 +vmlinux boot_cpuid 0xc606cd3c +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0x42212286 +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0xe035cf15 +vmlinux bus_create_file 0xdd3db442 +vmlinux bus_find_device 0xca7c710a +vmlinux bus_for_each_dev 0x70b4a7d3 +vmlinux bus_for_each_drv 0x2f180892 +vmlinux bus_register 0xa32099cf +vmlinux bus_remove_device 0xe458b1b3 +vmlinux bus_remove_file 0x630a8470 +vmlinux bus_rescan_devices 0x20e31bc7 +vmlinux bus_unregister 0xf80f15cb +vmlinux cacheable_memcpy 0x582a4747 +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0xf0a07376 +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x2124275d +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0xa01bec20 +vmlinux cdev_alloc 0x494e9001 +vmlinux cdev_del 0x65993413 +vmlinux cdev_init 0x844a0701 +vmlinux cfb_copyarea 0x41949c75 +vmlinux cfb_fillrect 0xc8be9d0d +vmlinux cfb_imageblit 0x0470546b +vmlinux check_disk_change 0xc701053c +vmlinux check_media_bay 0x6c5f5535 +vmlinux class_create 0x0609e225 +vmlinux class_create_file 0x4f3792b6 +vmlinux class_destroy 0x9f829f60 +vmlinux class_device_add 0x7d20cfb0 +vmlinux class_device_create 0xaa38c231 +vmlinux class_device_create_bin_file 0x8f39a7d1 +vmlinux class_device_create_file 0x304efeb7 +vmlinux class_device_del 0x8456b7db +vmlinux class_device_destroy 0xe6b39381 +vmlinux class_device_get 0x5b3f0887 +vmlinux class_device_initialize 0x70a85cfc +vmlinux class_device_put 0x396679ea +vmlinux class_device_register 0x4d106780 +vmlinux class_device_remove_bin_file 0xc9ef7a4e +vmlinux class_device_remove_file 0x6e0dd15a +vmlinux class_device_unregister 0x1a2acdaf +vmlinux class_get 0x4a63a66c +vmlinux class_interface_register 0xc790a276 +vmlinux class_interface_unregister 0xe906c94e +vmlinux class_put 0xe613d66c +vmlinux class_register 0xbec3851e +vmlinux class_remove_file 0x09dc2bb4 +vmlinux class_unregister 0x68e035c7 +vmlinux clear_inode 0x9d72f3fb +vmlinux clear_page_dirty_for_io 0x235149c3 +vmlinux clear_pages 0xe6dd236d +vmlinux clear_user_page 0x4ee863c8 +vmlinux clip_tbl_hook 0x7a13f934 +vmlinux close_bdev_excl 0x4c633814 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0xa218bf61 +vmlinux complete_all 0x48f9f12d +vmlinux complete_and_exit 0x8e9eceaa +vmlinux compute_creds 0x642e534d +vmlinux con_copy_unimap 0xcafbf536 +vmlinux con_set_default_unimap 0xe5a81281 +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0xa3a4ed03 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_drivers 0x0ce3318e +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0xcc483be9 +vmlinux console_stop 0x80575ba9 +vmlinux cont_prepare_write 0x43d46000 +vmlinux contig_page_data 0x8fb01bf9 +vmlinux copy_fs_struct 0xb167af83 +vmlinux copy_io_context 0x26f15db2 +vmlinux copy_strings_kernel 0x88620b8e +vmlinux cpu_present_map 0x5a4dac68 +vmlinux cpu_sysdev_class 0x20444cd8 +vmlinux cpufreq_cpu_get 0x129d8db0 +vmlinux cpufreq_cpu_put 0x05c88ba1 +vmlinux cpufreq_driver_target 0xff6338f2 +vmlinux cpufreq_freq_attr_scaling_available_freqs 0xb470c524 +vmlinux cpufreq_frequency_get_table 0x2f47d8c7 +vmlinux cpufreq_frequency_table_cpuinfo 0x52f03652 +vmlinux cpufreq_frequency_table_get_attr 0x706b3a33 +vmlinux cpufreq_frequency_table_put_attr 0x7ae1ae8e +vmlinux cpufreq_frequency_table_target 0xbd7f38ae +vmlinux cpufreq_frequency_table_verify 0x516960ab +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0x792405df +vmlinux cpufreq_gov_performance 0xf9c5b0bc +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0xe6488b47 +vmlinux cpufreq_parse_governor 0xb327b60c +vmlinux cpufreq_register_driver 0xdf91aea9 +vmlinux cpufreq_register_governor 0xde0b3178 +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0xbeb9adc4 +vmlinux cpufreq_unregister_driver 0x42d0ccc0 +vmlinux cpufreq_unregister_governor 0x216e6a46 +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0xb7b61546 +vmlinux crc32_le 0xa34f1ef5 +vmlinux create_empty_buffers 0x36d2619c +vmlinux create_proc_entry 0x934426bd +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0xe3c14d0b +vmlinux crypto_free_tfm 0x0f37a472 +vmlinux crypto_hmac 0xa923017f +vmlinux crypto_hmac_final 0xbfffb260 +vmlinux crypto_hmac_init 0x4f11f898 +vmlinux crypto_hmac_update 0x4ac8a3d4 +vmlinux crypto_register_alg 0xfb3acee3 +vmlinux crypto_unregister_alg 0xaec498e7 +vmlinux csum_partial 0x94095c16 +vmlinux csum_partial_copy_fromiovecend 0x02876657 +vmlinux csum_partial_copy_generic 0xc107c326 +vmlinux csum_tcpudp_magic 0x12d43649 +vmlinux cuda_poll 0xc0d84ced +vmlinux cuda_request 0x9309de94 +vmlinux cur_cpu_spec 0x259304d2 +vmlinux current_fs_time 0xbeca9683 +vmlinux current_io_context 0x79f48590 +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0x0eda1438 +vmlinux d_alloc_anon 0xd37d33d6 +vmlinux d_alloc_name 0xdb43a8fb +vmlinux d_alloc_root 0xe5a915f0 +vmlinux d_delete 0xcc5edf61 +vmlinux d_find_alias 0xb1885937 +vmlinux d_genocide 0x70ff881d +vmlinux d_instantiate 0x31b2a3be +vmlinux d_instantiate_unique 0x17d7cec5 +vmlinux d_invalidate 0x9b155e69 +vmlinux d_lookup 0x6a2327bf +vmlinux d_move 0xc54a617e +vmlinux d_path 0x8665c4b8 +vmlinux d_prune_aliases 0xd41aea6f +vmlinux d_rehash 0xa6794296 +vmlinux d_splice_alias 0x90339b85 +vmlinux d_validate 0x3a09f14f +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0xd064c662 +vmlinux dcache_dir_close 0x38525f73 +vmlinux dcache_dir_lseek 0x6429563d +vmlinux dcache_dir_open 0xffda99e3 +vmlinux dcache_lock 0x412ddc0c +vmlinux dcache_readdir 0x0ea57922 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0xcc0eb2c2 +vmlinux default_backing_dev_info 0x43172b09 +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0x1126aead +vmlinux default_llseek 0xc260e4c7 +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x09ce5afb +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0xfa36c285 +vmlinux del_timer 0xda264347 +vmlinux dentry_open 0x7ee5f143 +vmlinux dentry_unhash 0xbfda0614 +vmlinux dequeue_signal 0x9008edf0 +vmlinux deregister_atm_ioctl 0xd43f8117 +vmlinux destroy_8023_client 0xfc7cd317 +vmlinux destroy_EII_client 0xe7076b62 +vmlinux destroy_workqueue 0xa93a205c +vmlinux dev_add_pack 0xc9561aaf +vmlinux dev_alloc_name 0x89cb5002 +vmlinux dev_base 0xc1d42481 +vmlinux dev_base_lock 0x144ed3a1 +vmlinux dev_change_flags 0x2e514f63 +vmlinux dev_close 0x6f907f72 +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0x558b80d4 +vmlinux dev_get_by_index 0x2c1d96d7 +vmlinux dev_get_by_name 0x3c28fe8e +vmlinux dev_get_flags 0x376d8bd6 +vmlinux dev_getbyhwaddr 0x1d4f6cce +vmlinux dev_getfirstbyhwtype 0x0b91a3c9 +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0x3c642f8c +vmlinux dev_mc_delete 0x0bcd9aae +vmlinux dev_mc_upload 0x149efbd1 +vmlinux dev_open 0xfeac35bc +vmlinux dev_queue_xmit 0xe0051f7c +vmlinux dev_remove_pack 0x3dae1c00 +vmlinux dev_set_allmulti 0xd7865f02 +vmlinux dev_set_mac_address 0xa37c7f9a +vmlinux dev_set_mtu 0xcb587d30 +vmlinux dev_set_promiscuity 0x3f2c0ff1 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0xbcd7eb00 +vmlinux device_attach 0x9cce7052 +vmlinux device_bind_driver 0x8e715056 +vmlinux device_create_file 0xb91a3e98 +vmlinux device_del 0x9344f13f +vmlinux device_for_each_child 0xdff97acf +vmlinux device_initialize 0x496e92b3 +vmlinux device_is_compatible 0x509dc1b9 +vmlinux device_pm_set_parent 0xcbca1185 +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0x851564d9 +vmlinux device_release_driver 0xf00e3fee +vmlinux device_remove_file 0x02b6039a +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0xd90d7183 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0xd50f6932 +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_get_required_mask 0xefb73bea +vmlinux dma_pool_alloc 0x89592ff2 +vmlinux dma_pool_create 0xecc83f8d +vmlinux dma_pool_destroy 0x82903bac +vmlinux dma_pool_free 0x18dd7ffc +vmlinux dma_spin_lock 0x9148c7ae +vmlinux dnotify_parent 0xb20d2589 +vmlinux do_IRQ 0x5ab67931 +vmlinux do_SAK 0xb4eea042 +vmlinux do_add_mount 0xc5e32fdc +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0xafbdc2bb +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0x07aad0f2 +vmlinux do_mmap_pgoff 0xe7e4c2dc +vmlinux do_munmap 0x537ad277 +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x475505c0 +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_signal 0x8c78505d +vmlinux do_softirq 0x27cbbea7 +vmlinux do_sync_read 0xc5e9b103 +vmlinux do_sync_write 0x8d376498 +vmlinux do_syscall_trace_enter 0x569d24d8 +vmlinux do_syscall_trace_leave 0x7d50f79f +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0x746b4632 +vmlinux dput 0x29ddcdcd +vmlinux dq_data_lock 0xee90884e +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x6500c964 +vmlinux dquot_alloc_inode 0x720eead8 +vmlinux dquot_alloc_space 0x8387e5d2 +vmlinux dquot_commit 0xdd0c4cd8 +vmlinux dquot_commit_info 0xfe7048ed +vmlinux dquot_drop 0xa5261049 +vmlinux dquot_free_inode 0x7f229eaa +vmlinux dquot_free_space 0x66abcdb2 +vmlinux dquot_initialize 0x556195ee +vmlinux dquot_mark_dquot_dirty 0xd284f70b +vmlinux dquot_release 0x4c6302bd +vmlinux dquot_transfer 0xa8d20ad1 +vmlinux drive_is_ready 0xc23e5f8c +vmlinux driver_attach 0x175301c8 +vmlinux driver_create_file 0x5bb01a2f +vmlinux driver_find 0xf4fdf3cf +vmlinux driver_find_device 0xd7efabdf +vmlinux driver_for_each_device 0xfa32c70d +vmlinux driver_register 0x6063fcae +vmlinux driver_remove_file 0x0b6fa479 +vmlinux driver_unregister 0xbf12c357 +vmlinux drop_super 0x882ac685 +vmlinux dst_alloc 0xa92055eb +vmlinux dst_destroy 0xd4881395 +vmlinux dump_stack 0x6b2dc060 +vmlinux eighty_ninty_three 0xa9239a64 +vmlinux elevator_exit 0x0ae5415d +vmlinux elevator_init 0x0edb6052 +vmlinux elv_add_request 0x1a9efe25 +vmlinux elv_completed_request 0xddc76d4f +vmlinux elv_dequeue_request 0x5f3ba55a +vmlinux elv_dispatch_sort 0xd52f6cb4 +vmlinux elv_next_request 0xdad7d9a7 +vmlinux elv_queue_empty 0x320e4862 +vmlinux elv_register 0xca6792cd +vmlinux elv_requeue_request 0x32f9fff3 +vmlinux elv_rq_merge_ok 0x92298ad9 +vmlinux elv_try_merge 0x8858ac05 +vmlinux elv_unregister 0x919fde8c +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_irq 0xfcec0987 +vmlinux enable_kernel_altivec 0x3f406a3b +vmlinux enable_kernel_fp 0xfded48ed +vmlinux end_buffer_async_write 0xdc0fcae7 +vmlinux end_buffer_read_sync 0x90a20ace +vmlinux end_buffer_write_sync 0xb7fef63e +vmlinux end_page_writeback 0xb4cfa117 +vmlinux end_request 0xf0b9d0a9 +vmlinux end_that_request_chunk 0xb1fc16f2 +vmlinux end_that_request_first 0x44ccca9b +vmlinux end_that_request_last 0x1737644a +vmlinux eth_type_trans 0xb9579d6f +vmlinux ether_setup 0x43635d93 +vmlinux ethtool_op_get_link 0x001228ca +vmlinux ethtool_op_get_perm_addr 0x2dd66823 +vmlinux ethtool_op_get_sg 0x2e25005d +vmlinux ethtool_op_get_tso 0x0d0516e1 +vmlinux ethtool_op_get_tx_csum 0xb0461ac1 +vmlinux ethtool_op_get_ufo 0xe155fefb +vmlinux ethtool_op_set_sg 0x5dcd733e +vmlinux ethtool_op_set_tso 0xe2712b02 +vmlinux ethtool_op_set_tx_csum 0x5e2d71d0 +vmlinux ethtool_op_set_tx_hw_csum 0x273041a0 +vmlinux ethtool_op_set_ufo 0x22febda5 +vmlinux exit_fs 0x0f89f4aa +vmlinux f_setown 0x93b4ddd0 +vmlinux fasync_helper 0xde27def1 +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x261ebb93 +vmlinux fb_con_duit 0xcd2f62cb +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0xd8082e3a +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0x059cbb0e +vmlinux fb_get_buffer_offset 0xe00ddca1 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0x4f486d29 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0xe6758646 +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0x60cabea9 +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x04ed1b5c +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0x580c8960 +vmlinux fb_set_suspend 0x9216a761 +vmlinux fb_set_var 0x92c2b9d1 +vmlinux fb_show_logo 0x00738761 +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x1751bd9e +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fbcon_set_bitops 0x7f5c7c48 +vmlinux fbcon_set_tileops 0x436e511e +vmlinux fd_install 0xa8045e60 +vmlinux fddi_type_trans 0xca225db2 +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x7de56048 +vmlinux file_fsync 0x185496a8 +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0x475e2c1a +vmlinux filemap_fdatawait 0xc76d9843 +vmlinux filemap_fdatawrite 0x63531313 +vmlinux filemap_flush 0x0635fae2 +vmlinux filemap_nopage 0x8b018c51 +vmlinux filemap_populate 0x292ebe45 +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0x2f4b52c1 +vmlinux filp_open 0x7a970725 +vmlinux find_all_nodes 0xb01d4246 +vmlinux find_bus 0x159a8da2 +vmlinux find_compatible_devices 0xd09c113e +vmlinux find_devices 0x61c7910f +vmlinux find_font 0xf7584a9c +vmlinux find_get_page 0xf63faaee +vmlinux find_inode_number 0x883cfa3a +vmlinux find_lock_page 0x79257cc3 +vmlinux find_next_bit 0xc0a3d105 +vmlinux find_next_zero_bit 0x479c3c86 +vmlinux find_next_zero_le_bit 0xa0c45bfc +vmlinux find_or_create_page 0xc86697a1 +vmlinux find_path_device 0xbea1c844 +vmlinux find_task_by_pid_type 0x55ff8bce +vmlinux find_trylock_page 0xbff3feb0 +vmlinux find_type_devices 0x1250288e +vmlinux find_vma 0x8c8fa62f +vmlinux finish_wait 0x51493d94 +vmlinux firmware_register 0x04010a38 +vmlinux firmware_unregister 0x9b4160cc +vmlinux flock_lock_file_wait 0xb0ff98cc +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_dcache_page 0x4b688b5b +vmlinux flush_dcache_range 0xefde1bbe +vmlinux flush_hash_pages 0xbd8d541d +vmlinux flush_icache_user_range 0x2d080dc0 +vmlinux flush_instruction_cache 0x515e24a7 +vmlinux flush_old_exec 0xbd5fcc49 +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0xbb398c65 +vmlinux flush_tlb_kernel_range 0xa3e75545 +vmlinux flush_tlb_page 0xc640eda5 +vmlinux flush_workqueue 0x5cfee484 +vmlinux follow_down 0x4fc4bd79 +vmlinux follow_up 0x1320bf0d +vmlinux force_sig 0xfbb5f637 +vmlinux fput 0x63ca84fb +vmlinux framebuffer_alloc 0xeea2a556 +vmlinux framebuffer_release 0xd4cb04e1 +vmlinux free_buffer_head 0x04a05390 +vmlinux free_dma 0x72b243d4 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0xca46534a +vmlinux free_pages 0x4302d0eb +vmlinux free_task 0xb147f0db +vmlinux freeze_bdev 0xb83ef8b7 +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0xacdab7f3 +vmlinux g450_mnp2f 0xfaaaf70c +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0x1c725e84 +vmlinux gen_replace_estimator 0x6c208b39 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic_block_bmap 0x1260d20b +vmlinux generic_commit_write 0x7b98bb1c +vmlinux generic_cont_expand 0xcc7a5cdc +vmlinux generic_delete_inode 0xfced0968 +vmlinux generic_drop_inode 0x78f4cac5 +vmlinux generic_file_aio_read 0xb2519ce9 +vmlinux generic_file_aio_write 0xd13fc34d +vmlinux generic_file_aio_write_nolock 0xe6f73373 +vmlinux generic_file_buffered_write 0xd207543d +vmlinux generic_file_direct_write 0x18637886 +vmlinux generic_file_llseek 0x3f883451 +vmlinux generic_file_mmap 0xfc9b844c +vmlinux generic_file_open 0xbcb45fa5 +vmlinux generic_file_read 0x32bf2bc9 +vmlinux generic_file_readonly_mmap 0x102186a2 +vmlinux generic_file_readv 0x9b7230c7 +vmlinux generic_file_sendfile 0x6e048a2e +vmlinux generic_file_write 0x3219bb47 +vmlinux generic_file_write_nolock 0xe3f90a4b +vmlinux generic_file_writev 0xd09d2b8e +vmlinux generic_fillattr 0xf26a6ef5 +vmlinux generic_getxattr 0x32248e51 +vmlinux generic_ide_ioctl 0x90932077 +vmlinux generic_listxattr 0xe35f38ff +vmlinux generic_make_request 0x77912f11 +vmlinux generic_osync_inode 0xee5fe09a +vmlinux generic_permission 0x2b513e5d +vmlinux generic_read_dir 0x5ebb7400 +vmlinux generic_readlink 0xd8ceced5 +vmlinux generic_removexattr 0xb42e39ac +vmlinux generic_ro_fops 0xa3be7008 +vmlinux generic_setxattr 0x798d5d58 +vmlinux generic_shutdown_super 0x9a31df43 +vmlinux generic_unplug_device 0xf47a5dab +vmlinux generic_write_checks 0x56e28e39 +vmlinux genl_register_family 0x99764b2c +vmlinux genl_register_ops 0x0c049c2c +vmlinux genl_sock 0x1bdfb799 +vmlinux genl_unregister_family 0xb33c5e69 +vmlinux genl_unregister_ops 0x9a0ad74b +vmlinux get_backlight_enable 0xeeccc4af +vmlinux get_backlight_level 0x9fbc6790 +vmlinux get_bus 0x2f288668 +vmlinux get_cpu_sysdev 0x04574e13 +vmlinux get_dcookie 0xf8061bbe +vmlinux get_default_font 0x093e3659 +vmlinux get_device 0xd38c9b20 +vmlinux get_disk 0x09273457 +vmlinux get_driver 0x9429184a +vmlinux get_empty_filp 0x7c33ed22 +vmlinux get_fs_type 0x4c4d8d3d +vmlinux get_io_context 0x4c799510 +vmlinux get_jiffies_64 0x37e74642 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_property 0xfadc465b +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0x55ddc4ed +vmlinux get_sb_nodev 0xd6c37f75 +vmlinux get_sb_pseudo 0x28f26e32 +vmlinux get_sb_single 0x4d94c5ad +vmlinux get_super 0xafb2e2bc +vmlinux get_task_mm 0xb2749257 +vmlinux get_unmapped_area 0x0832a1bb +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x2a154bec +vmlinux get_wchan 0xc03939a6 +vmlinux get_write_access 0xe160b815 +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x591d8aff +vmlinux giveup_altivec 0xb5577488 +vmlinux giveup_fpu 0x0b529007 +vmlinux gnet_stats_copy_app 0x317abfdb +vmlinux gnet_stats_copy_basic 0x1e0ee2a3 +vmlinux gnet_stats_copy_queue 0xf9d6b62c +vmlinux gnet_stats_copy_rate_est 0x14acf8d6 +vmlinux gnet_stats_finish_copy 0x5ada11d0 +vmlinux gnet_stats_start_copy 0x40a39698 +vmlinux gnet_stats_start_copy_compat 0xdbb75c91 +vmlinux grab_cache_page_nowait 0x88e2b5f3 +vmlinux groups_alloc 0x51cd47e2 +vmlinux groups_free 0x111bcb2c +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0xa019805a +vmlinux have_submounts 0x74a3f08b +vmlinux high_memory 0x8a7d1c31 +vmlinux hippi_type_trans 0x945e1be5 +vmlinux hwmon_device_register 0xdc315fa6 +vmlinux hwmon_device_unregister 0xdc09b516 +vmlinux i2c_adapter_class 0xa2c5a501 +vmlinux i2c_adapter_dev_release 0x9fdd10bf +vmlinux i2c_adapter_driver 0x4b6ddf7f +vmlinux i2c_add_adapter 0xa57ac904 +vmlinux i2c_add_driver 0x10c579f5 +vmlinux i2c_attach_client 0xb951e79a +vmlinux i2c_bit_add_bus 0x8021b134 +vmlinux i2c_bit_del_bus 0xa74cee37 +vmlinux i2c_bus_type 0x6ec5da77 +vmlinux i2c_check_addr 0x9d7a4fd7 +vmlinux i2c_clients_command 0x3119d8b0 +vmlinux i2c_control 0x389d2ab0 +vmlinux i2c_del_adapter 0x398c26de +vmlinux i2c_del_driver 0xf6dccd2c +vmlinux i2c_detach_client 0x05fdadfc +vmlinux i2c_get_adapter 0xfbbd3617 +vmlinux i2c_master_recv 0x8b1ea183 +vmlinux i2c_master_send 0x466925ef +vmlinux i2c_probe 0x4799610e +vmlinux i2c_put_adapter 0xd76a2827 +vmlinux i2c_release_client 0xacb389f3 +vmlinux i2c_smbus_read_byte 0x9a59603e +vmlinux i2c_smbus_read_byte_data 0xf3cca4e4 +vmlinux i2c_smbus_read_i2c_block_data 0x79a10586 +vmlinux i2c_smbus_read_word_data 0xb0f07be5 +vmlinux i2c_smbus_write_block_data 0xfe0f835c +vmlinux i2c_smbus_write_byte 0x47b59e0d +vmlinux i2c_smbus_write_byte_data 0xff9fd02d +vmlinux i2c_smbus_write_quick 0x51725a34 +vmlinux i2c_smbus_write_word_data 0x02e5a9b9 +vmlinux i2c_smbus_xfer 0x71a94224 +vmlinux i2c_transfer 0xabee60be +vmlinux i2c_use_client 0x5be9957b +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x4a0b3fdf +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_add_setting 0x2548e7a4 +vmlinux ide_build_dmatable 0x36df21cf +vmlinux ide_build_sglist 0xac5a27ac +vmlinux ide_bus_type 0x866a9add +vmlinux ide_config_drive_speed 0xa3908212 +vmlinux ide_destroy_dmatable 0xe0b2c384 +vmlinux ide_dma_enable 0xcd069f0f +vmlinux ide_dma_intr 0xf677f743 +vmlinux ide_dma_setup 0x3bdb772e +vmlinux ide_dma_speed 0x2120f418 +vmlinux ide_dma_start 0xfdd2f2c9 +vmlinux ide_dma_verbose 0xb9a064b4 +vmlinux ide_do_drive_cmd 0x425ffc81 +vmlinux ide_do_reset 0xd6cd7c04 +vmlinux ide_dump_status 0xa1131710 +vmlinux ide_end_drive_cmd 0xdf8e481f +vmlinux ide_end_request 0x557cae71 +vmlinux ide_error 0x8ae8006b +vmlinux ide_execute_command 0xfe02248e +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x26fbd046 +vmlinux ide_get_error_location 0x7b81f678 +vmlinux ide_hwifs 0x5feb83dc +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0xfa2a097c +vmlinux ide_init_drive_cmd 0xd0d68f3c +vmlinux ide_init_sg_cmd 0x2d39ccf8 +vmlinux ide_lock 0xf1dced4c +vmlinux ide_map_sg 0x9464d045 +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0xa47759a2 +vmlinux ide_pci_unregister_driver 0x84c2d30d +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0x8be01ca5 +vmlinux ide_register_hw 0x40aa5418 +vmlinux ide_register_hw_with_fixup 0x39cde941 +vmlinux ide_register_region 0x62e253ff +vmlinux ide_register_subdriver 0x3edb769d +vmlinux ide_set_handler 0x6dc9fd58 +vmlinux ide_set_xfer_rate 0x6408ecca +vmlinux ide_setup_dma 0xcd5b1d64 +vmlinux ide_setup_pci_device 0x5a25a97d +vmlinux ide_setup_pci_devices 0x3c97b661 +vmlinux ide_setup_pci_noise 0x6479ccd2 +vmlinux ide_spin_wait_hwgroup 0x1ef797cd +vmlinux ide_stall_queue 0x238cad1e +vmlinux ide_undecoded_slave 0xa5ad178a +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0x9af02a49 +vmlinux ide_unregister_subdriver 0x9b612f47 +vmlinux ide_use_dma 0xe324f3ff +vmlinux ide_wait_not_busy 0xb5afab90 +vmlinux ide_wait_stat 0xcd0a0728 +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0xdad53732 +vmlinux idr_find 0xf03b0e52 +vmlinux idr_get_new 0xb6c4e1ad +vmlinux idr_get_new_above 0xd09a6a3d +vmlinux idr_init 0xba95152a +vmlinux idr_pre_get 0xd4fe24f5 +vmlinux idr_remove 0xe64517b0 +vmlinux iget5_locked 0xa7e1b92d +vmlinux iget_locked 0x56548677 +vmlinux igrab 0xf07de6bf +vmlinux ilookup 0x844d3800 +vmlinux ilookup5 0x5db9b3b2 +vmlinux ilookup5_nowait 0xfaa9fd1f +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0x0c3a8747 +vmlinux in_egroup_p 0xd8a2ab95 +vmlinux in_group_p 0xc3cf1128 +vmlinux inet6_lookup 0x11e2ba0a +vmlinux inet6_lookup_listener 0xd2572314 +vmlinux inet_accept 0x7875c3ad +vmlinux inet_add_protocol 0xbb8f6b05 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0x397f4682 +vmlinux inet_bind_bucket_create 0x34f6f317 +vmlinux inet_bind_hash 0x2b8440e2 +vmlinux inet_csk_accept 0x6cc4d886 +vmlinux inet_csk_clear_xmit_timers 0x8281dc89 +vmlinux inet_csk_clone 0x10135ea1 +vmlinux inet_csk_delete_keepalive_timer 0x0aa4ff8c +vmlinux inet_csk_destroy_sock 0x74f89ee1 +vmlinux inet_csk_get_port 0xde0c77bc +vmlinux inet_csk_init_xmit_timers 0x8fd1db5a +vmlinux inet_csk_listen_start 0x26ec741b +vmlinux inet_csk_listen_stop 0x0d2f0987 +vmlinux inet_csk_reqsk_queue_hash_add 0xc548fb9a +vmlinux inet_csk_reqsk_queue_prune 0xdf8098bd +vmlinux inet_csk_reset_keepalive_timer 0x659ba55e +vmlinux inet_csk_route_req 0x2643ec3f +vmlinux inet_csk_search_req 0x4e311673 +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0x981bcb83 +vmlinux inet_dgram_connect 0xb7ee283a +vmlinux inet_dgram_ops 0xd9f89799 +vmlinux inet_diag_register 0x9c3e8154 +vmlinux inet_diag_unregister 0x99f6066d +vmlinux inet_getname 0xd095d8ca +vmlinux inet_ioctl 0x86fbcf0a +vmlinux inet_listen 0xa66f1326 +vmlinux inet_listen_wlock 0x5a5d88ea +vmlinux inet_put_port 0xd41d5b52 +vmlinux inet_register_protosw 0xd608f594 +vmlinux inet_release 0x8a543d53 +vmlinux inet_select_addr 0xaf3084af +vmlinux inet_sendmsg 0xfb04d98d +vmlinux inet_shutdown 0x83cd9d4e +vmlinux inet_sk_rebuild_header 0x534b38bf +vmlinux inet_sock_destruct 0x30dcb268 +vmlinux inet_stream_connect 0xf7d4a016 +vmlinux inet_stream_ops 0x1be17a38 +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x5e05a112 +vmlinux inet_twsk_deschedule 0x94e0b6b5 +vmlinux inet_twsk_schedule 0xc581e12c +vmlinux inet_unregister_protosw 0x05fc7d74 +vmlinux inetdev_by_index 0x09227f4b +vmlinux init_buffer 0x58aa5c3b +vmlinux init_mm 0x9237c493 +vmlinux init_special_inode 0x3e399ef1 +vmlinux init_task 0xaa32839a +vmlinux init_timer 0x6c9087dd +vmlinux inode_add_bytes 0xa3ef585e +vmlinux inode_change_ok 0x3a290cf3 +vmlinux inode_get_bytes 0x6bddaf30 +vmlinux inode_init_once 0xffe5b245 +vmlinux inode_needs_sync 0x2e37d9b9 +vmlinux inode_set_bytes 0x824d612c +vmlinux inode_setattr 0xdc43a0bb +vmlinux inode_sub_bytes 0xb9cc2d55 +vmlinux inode_update_time 0xcaef2eea +vmlinux inotify_dentry_parent_queue_event 0x9118cc16 +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0x33b0e2b8 +vmlinux inotify_inode_queue_event 0x5939985c +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0xa4080d82 +vmlinux input_allocate_device 0xa2395364 +vmlinux input_class 0x4b000be3 +vmlinux input_close_device 0xa14e8070 +vmlinux input_event 0x5d34bab2 +vmlinux input_flush_device 0x58e12f38 +vmlinux input_grab_device 0x9eac088a +vmlinux input_open_device 0x2cf8ebde +vmlinux input_register_device 0x40d10ec0 +vmlinux input_register_handler 0xbcfb68de +vmlinux input_release_device 0xe90d7f6c +vmlinux input_unregister_device 0x423fb6c6 +vmlinux input_unregister_handler 0x7e995e43 +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0x59b5c865 +vmlinux int_sqrt 0xb678366f +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x777359a8 +vmlinux inter_module_unregister 0x4b569905 +vmlinux intercept_table 0x8541bccc +vmlinux interruptible_sleep_on 0xf9b28bac +vmlinux interruptible_sleep_on_timeout 0xf51c639f +vmlinux invalidate_bdev 0x7447a07b +vmlinux invalidate_inode_pages 0xd6e9ae47 +vmlinux invalidate_inode_pages2 0x2b1e05dc +vmlinux invalidate_inode_pages2_range 0xf8cd8c7c +vmlinux invalidate_inodes 0x1cda4b02 +vmlinux invalidate_partition 0xe4081196 +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0x9949bb34 +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioremap 0x80cc7af9 +vmlinux ioremap_bot 0xa38e691a +vmlinux iounmap 0xedc03953 +vmlinux iov_shorten 0xc11d8093 +vmlinux ip4_datagram_connect 0x1e38b46e +vmlinux ip_build_and_send_pkt 0xce3e8a9c +vmlinux ip_cmsg_recv 0x887667ce +vmlinux ip_ct_attach 0x6eed7a90 +vmlinux ip_defrag 0x34e2311f +vmlinux ip_fast_csum 0xe4627d16 +vmlinux ip_fragment 0x3bce3069 +vmlinux ip_generic_getfrag 0x574fca1a +vmlinux ip_getsockopt 0x90eb906e +vmlinux ip_mc_dec_group 0xb0f918de +vmlinux ip_mc_inc_group 0x55ec5e85 +vmlinux ip_mc_join_group 0x8e2f6c33 +vmlinux ip_queue_xmit 0xaf8ba100 +vmlinux ip_route_input 0xedc20c76 +vmlinux ip_route_me_harder 0x61225a73 +vmlinux ip_route_output_flow 0x44f48750 +vmlinux ip_route_output_key 0xd029cfdf +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0x434ccab0 +vmlinux ip_setsockopt 0xfcdf9939 +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0x6ddd8e88 +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0xc9b89c97 +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0x96be0b1b +vmlinux irq_desc 0x65121f5a +vmlinux irq_stat 0x1e8aa7c0 +vmlinux is_bad_inode 0xf7a5627a +vmlinux is_console_locked 0x944a564d +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux isa_io_base 0x5f8a2728 +vmlinux isa_mem_base 0xbfa78112 +vmlinux iunique 0x6bc79512 +vmlinux iw_handler_get_spy 0x786418f3 +vmlinux iw_handler_get_thrspy 0x3cbf2c28 +vmlinux iw_handler_set_spy 0x28515a96 +vmlinux iw_handler_set_thrspy 0xe65fcc17 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kd_mksound 0x22b325d5 +vmlinux kern_mount 0x2aa25a78 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0xfabe8eaa +vmlinux kernel_recvmsg 0x95c9b64e +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0x28168ac6 +vmlinux kernel_subsys 0x58d447d3 +vmlinux kernel_thread 0x7ca341af +vmlinux key_alloc 0xa2a31aaa +vmlinux key_create_or_update 0x459db887 +vmlinux key_instantiate_and_link 0x7095ef46 +vmlinux key_link 0xd95bf4e9 +vmlinux key_negate_and_link 0x90867356 +vmlinux key_payload_reserve 0x29e64297 +vmlinux key_put 0x9a977f50 +vmlinux key_revoke 0x9573ac58 +vmlinux key_task_permission 0xbb564033 +vmlinux key_type_user 0x42713a7a +vmlinux key_unlink 0xa1733c77 +vmlinux key_update 0xea7987f1 +vmlinux key_validate 0x25122e8d +vmlinux keyring_clear 0x3c22aa10 +vmlinux keyring_search 0x016a89dc +vmlinux kfifo_alloc 0x8f9b86b2 +vmlinux kfifo_free 0x4719ba4e +vmlinux kfifo_init 0x4b9f3684 +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0x091c43ee +vmlinux kill_anon_super 0xbaf20c16 +vmlinux kill_block_super 0x33844241 +vmlinux kill_fasync 0x1757f1f3 +vmlinux kill_litter_super 0x2c7d5f50 +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xec10e63a +vmlinux klist_add_head 0x915acc1f +vmlinux klist_add_tail 0x89578b6b +vmlinux klist_del 0x84a1bc7c +vmlinux klist_init 0x9ea2eecb +vmlinux klist_iter_exit 0xb4d64e3c +vmlinux klist_iter_init 0x2cd3a4fb +vmlinux klist_iter_init_node 0xa3e837a8 +vmlinux klist_next 0xd5dd30ac +vmlinux klist_node_attached 0xba549831 +vmlinux klist_remove 0x99b82416 +vmlinux km_new_mapping 0x59b948ef +vmlinux km_policy_notify 0xf1226d4a +vmlinux km_state_notify 0xebe41996 +vmlinux km_waitq 0xef1a1668 +vmlinux kmap_high 0x3e6e0794 +vmlinux kmap_prot 0x1407c6e7 +vmlinux kmap_pte 0xb53a4336 +vmlinux kmem_cache_alloc 0x819e11d6 +vmlinux kmem_cache_create 0x35564826 +vmlinux kmem_cache_destroy 0x66ac6a6a +vmlinux kmem_cache_free 0x3613bb7a +vmlinux kmem_cache_name 0x2c215e72 +vmlinux kmem_cache_shrink 0xde488d37 +vmlinux kmem_cache_size 0xe2f7e393 +vmlinux kmem_find_general_cachep 0x8aeb508b +vmlinux kobject_add 0xa0a7535a +vmlinux kobject_del 0x13edde99 +vmlinux kobject_get 0xb46d54f4 +vmlinux kobject_hotplug 0xa15086d3 +vmlinux kobject_init 0x814bf33a +vmlinux kobject_put 0xfb7cc999 +vmlinux kobject_register 0xd0a61c96 +vmlinux kobject_set_name 0x4f72a7e5 +vmlinux kobject_uevent 0xc87a5de2 +vmlinux kobject_uevent_atomic 0xbf76142e +vmlinux kobject_unregister 0x8ad0d5bf +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0xf33b9f9c +vmlinux kset_register 0xcd8f89cf +vmlinux kset_unregister 0xa9930c4a +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x764174c7 +vmlinux kthread_create 0xb11b3b39 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0x39b5dbd2 +vmlinux kthread_stop_sem 0xa3f32786 +vmlinux kunmap_high 0x90702d7b +vmlinux kzalloc 0x1d10cdb2 +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0x35abce90 +vmlinux lease_modify 0xe461d858 +vmlinux linkwatch_fire_event 0xa28e304c +vmlinux ll_rw_block 0xfcdc4632 +vmlinux llc_add_pack 0x7905c754 +vmlinux llc_build_and_send_ui_pkt 0xe4b98a15 +vmlinux llc_mac_hdr_init 0x6fa6d4be +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0x8de793a5 +vmlinux llc_sap_find 0x28785508 +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0x556643e3 +vmlinux llc_sap_open 0xd6cef25d +vmlinux llc_set_station_handler 0x564359c1 +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_nls 0x5d5fd1dd +vmlinux load_nls_default 0x56a39555 +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_may_read 0x7b461903 +vmlinux lock_may_write 0xc21e7d1b +vmlinux lock_rename 0x27585278 +vmlinux lock_sock 0x5be3120a +vmlinux locks_copy_lock 0xa69f3786 +vmlinux locks_init_lock 0xe551bc9c +vmlinux locks_mandatory_area 0xd237f4c6 +vmlinux locks_remove_posix 0x22a8b60f +vmlinux lookup_create 0x0adf7ba2 +vmlinux lookup_hash 0x52658d25 +vmlinux lookup_instantiate_filp 0xc9ecd050 +vmlinux lookup_one_len 0xfed1bf01 +vmlinux loopback_dev 0x49be050c +vmlinux loops_per_jiffy 0xba497f13 +vmlinux mac_find_mode 0x5a05b5dc +vmlinux mac_hid_mouse_emulate_buttons 0x371dde90 +vmlinux mac_map_monitor_sense 0xe2304303 +vmlinux mac_var_to_vmode 0x00907cd5 +vmlinux mac_vmode_to_var 0x08ed0b62 +vmlinux machine_check_exception 0xb6599b9a +vmlinux machine_is_compatible 0x952e843b +vmlinux machine_power_off 0x091c824a +vmlinux macio_dev_get 0x8ba77c50 +vmlinux macio_dev_put 0xae052f66 +vmlinux macio_find 0xaa63d2ce +vmlinux macio_register_driver 0x7250cfb2 +vmlinux macio_release_resource 0x5e540978 +vmlinux macio_release_resources 0xddb1bf99 +vmlinux macio_request_resource 0x6008a2b1 +vmlinux macio_request_resources 0xde53ebd5 +vmlinux macio_unregister_driver 0x5e5eecbb +vmlinux make_8023_client 0x91997ed6 +vmlinux make_EII_client 0xc0fd29e3 +vmlinux make_bad_inode 0x75b82c34 +vmlinux malloc_sizes 0xa47da14e +vmlinux mapping_tagged 0x343ba223 +vmlinux mark_buffer_async_write 0x914b03ee +vmlinux mark_buffer_dirty 0xab8838ce +vmlinux mark_buffer_dirty_inode 0x2ba2a238 +vmlinux mark_info_dirty 0xf6e73553 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x378fc0cf +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux matrox_G100 0x7ba6a3b5 +vmlinux matrox_cfbX_init 0xa941738d +vmlinux matrox_millennium 0x591f9887 +vmlinux matrox_mystique 0x146f2ffd +vmlinux matroxfb_DAC_in 0xffe2d6cd +vmlinux matroxfb_DAC_out 0x4107b62e +vmlinux matroxfb_PLL_calcclock 0x25cf8049 +vmlinux matroxfb_enable_irq 0xb6a11ba0 +vmlinux matroxfb_g450_connect 0x894fb9d3 +vmlinux matroxfb_g450_setclk 0x5511fd1a +vmlinux matroxfb_g450_setpll_cond 0xc4fd8745 +vmlinux matroxfb_g450_shutdown 0x4bcb1349 +vmlinux matroxfb_read_pins 0x979cc3f1 +vmlinux matroxfb_register_driver 0x0cbea17b +vmlinux matroxfb_unregister_driver 0xdb977529 +vmlinux matroxfb_var2my 0xabd8e427 +vmlinux matroxfb_vgaHWinit 0x8b1ab5df +vmlinux matroxfb_vgaHWrestore 0x418b301e +vmlinux matroxfb_wait_for_sync 0x27ec8488 +vmlinux max_mapnr 0x01139ffc +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0xd1123b3d +vmlinux may_umount_tree 0x59a8406e +vmlinux mb_cache_create 0x0eb6ef1b +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0x0fc0a687 +vmlinux mb_cache_entry_find_first 0xa4307c43 +vmlinux mb_cache_entry_find_next 0xe964709b +vmlinux mb_cache_entry_free 0x8ccdf39a +vmlinux mb_cache_entry_get 0x5825e3b6 +vmlinux mb_cache_entry_insert 0x1ef6f25f +vmlinux mb_cache_entry_release 0xe9ed541b +vmlinux mb_cache_shrink 0xee6dd679 +vmlinux mem_map 0xebf730ee +vmlinux memchr 0xdd27fa87 +vmlinux memcmp 0x71c90087 +vmlinux memcpy 0x9d669763 +vmlinux memcpy_fromiovec 0x9fb3dd30 +vmlinux memcpy_fromiovecend 0x6e440b58 +vmlinux memcpy_toiovec 0x9ceb163c +vmlinux memmove 0x99bb8806 +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xab53b0a8 +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0x1f7cc628 +vmlinux mempool_create_node 0xd3427f73 +vmlinux mempool_destroy 0xac54fc9f +vmlinux mempool_free 0x062aba95 +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x25ba121c +vmlinux memscan 0x4dec6038 +vmlinux memset 0x5f754e5a +vmlinux misc_deregister 0xa9943c65 +vmlinux misc_register 0x2d834dd8 +vmlinux mmput 0x340bb3d4 +vmlinux mnt_pin 0x197d2342 +vmlinux mnt_unpin 0x5d4e862b +vmlinux mntput_no_expire 0x2104f556 +vmlinux mod_reg_security 0xfb22c006 +vmlinux mod_timer 0x56662b32 +vmlinux mod_unreg_security 0x3cc555a4 +vmlinux module_add_driver 0x2e174d43 +vmlinux module_refcount 0x2ca90a37 +vmlinux module_remove_driver 0x56f3868c +vmlinux mol_trampoline 0x0dbf38b8 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0xc7e5daf4 +vmlinux mpage_readpages 0xa2da8a86 +vmlinux mpage_writepage 0x50a590b3 +vmlinux mpage_writepages 0xa7d1c7b8 +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux multipath_alg_register 0xed8031df +vmlinux multipath_alg_unregister 0x76c460ab +vmlinux n_tty_ioctl 0x4f46f77b +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x97e7a6d9 +vmlinux neigh_changeaddr 0x36285644 +vmlinux neigh_compat_output 0x190ad56c +vmlinux neigh_connected_output 0xe8aed768 +vmlinux neigh_create 0x556feca8 +vmlinux neigh_delete 0xc72dcc10 +vmlinux neigh_destroy 0xd6d8a1ce +vmlinux neigh_dump_info 0x8549d1bb +vmlinux neigh_event_ns 0xe3958862 +vmlinux neigh_for_each 0x5f47333f +vmlinux neigh_ifdown 0xb39047df +vmlinux neigh_lookup 0x5c8137ed +vmlinux neigh_lookup_nodev 0x2b932086 +vmlinux neigh_parms_alloc 0x8153eaa0 +vmlinux neigh_parms_release 0xea25d1a9 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0xc8b37c06 +vmlinux neigh_seq_next 0xd7328c9c +vmlinux neigh_seq_start 0x4445da26 +vmlinux neigh_seq_stop 0x0a839198 +vmlinux neigh_sysctl_register 0x8e0d40a8 +vmlinux neigh_sysctl_unregister 0x5b45baeb +vmlinux neigh_table_clear 0x6e97428f +vmlinux neigh_table_init 0x25de0b92 +vmlinux neigh_update 0x2d4f8958 +vmlinux neigh_update_hhs 0x8a8d01b4 +vmlinux neightbl_dump_info 0xf5d19adf +vmlinux neightbl_set 0x293de3db +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0xd74c15fd +vmlinux netdev_features_change 0xdc957764 +vmlinux netdev_rx_csum_fault 0xf7eb9c35 +vmlinux netdev_set_master 0x317f6680 +vmlinux netdev_state_change 0xc1e08898 +vmlinux netif_carrier_off 0x2417290c +vmlinux netif_carrier_on 0xd1ccb272 +vmlinux netif_receive_skb 0xb17553fd +vmlinux netif_rx 0xe8161ce6 +vmlinux netif_rx_ni 0xfe954ed0 +vmlinux netlink_ack 0xb017fa2e +vmlinux netlink_broadcast 0x946d2ee0 +vmlinux netlink_dump_start 0x70072794 +vmlinux netlink_kernel_create 0xa2e23497 +vmlinux netlink_queue_skip 0xb6930a1d +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0xd8f04910 +vmlinux netlink_set_err 0xcb5aab75 +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0x2089d22a +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x52b51a27 +vmlinux netpoll_parse_options 0x7d27eea0 +vmlinux netpoll_poll 0x187c58f1 +vmlinux netpoll_queue 0xa053ce49 +vmlinux netpoll_send_udp 0xc3c9b200 +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0x9982cb51 +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0xef45f188 +vmlinux next_mmu_context 0xbb5af863 +vmlinux next_thread 0xe5d14596 +vmlinux nf_ct_attach 0x486aed63 +vmlinux nf_getsockopt 0xbf90eae3 +vmlinux nf_hook_slow 0xb5e2c7fa +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0x0a030c15 +vmlinux nf_log_register 0xd9556b1e +vmlinux nf_log_unregister_logger 0xd4b7701c +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0x3852112e +vmlinux nf_register_queue_handler 0x513b6bac +vmlinux nf_register_queue_rerouter 0x05b0748d +vmlinux nf_register_sockopt 0x36b9d10c +vmlinux nf_reinject 0x548bf93d +vmlinux nf_setsockopt 0x188c145e +vmlinux nf_unregister_hook 0xf5a2011b +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0xb04a3dab +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0xc15d7ced +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0xbe0e5118 +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0xa5bb9ff2 +vmlinux nla_reserve 0x73fe4bf2 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0x6cdc5c6b +vmlinux nla_validate 0x2cc98162 +vmlinux no_llseek 0x1bf278a6 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0xcc0cef46 +vmlinux nobh_prepare_write 0x241deff4 +vmlinux nobh_truncate_page 0xa7c3d5de +vmlinux nobh_writepage 0xcdd54dc0 +vmlinux node_online_map 0x5a8f421e +vmlinux node_possible_map 0xca0d27a1 +vmlinux nonseekable_open 0x4916e5c9 +vmlinux noop_qdisc 0x28391720 +vmlinux noop_qdisc_ops 0xad0dda9f +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0xdd62d80a +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux nvram_read_byte 0x0f28cb91 +vmlinux nvram_sync 0xc368849f +vmlinux nvram_write_byte 0x9ce3f83f +vmlinux of_address_to_resource 0x366e1b60 +vmlinux of_dev_get 0x07b0df60 +vmlinux of_dev_put 0x10e842c2 +vmlinux of_device_register 0x0f3390d4 +vmlinux of_device_unregister 0x9170a903 +vmlinux of_find_all_nodes 0x619cede5 +vmlinux of_find_compatible_node 0xb655ee88 +vmlinux of_find_node_by_name 0x2b7e8b45 +vmlinux of_find_node_by_path 0xa3b9fbaf +vmlinux of_find_node_by_phandle 0xde83195d +vmlinux of_find_node_by_type 0xa8118abc +vmlinux of_get_address 0xfdca5f9d +vmlinux of_get_next_child 0x2834992e +vmlinux of_get_parent 0x3e88103a +vmlinux of_get_pci_address 0x8a118175 +vmlinux of_match_device 0xec9dc145 +vmlinux of_node_get 0x6c9e8516 +vmlinux of_node_put 0xd831fa3f +vmlinux of_pci_address_to_resource 0x1456040f +vmlinux of_platform_bus_type 0x2662193b +vmlinux of_platform_device_create 0xc087288d +vmlinux of_register_driver 0x7cf51b02 +vmlinux of_release_dev 0x7a5b0dfa +vmlinux of_translate_address 0xf2092111 +vmlinux of_unregister_driver 0xfbb1c1f4 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0xd30106e8 +vmlinux open_by_devnum 0x12703e53 +vmlinux open_exec 0x62395172 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux p80211_resume 0x6a1c0d0a +vmlinux p80211_suspend 0x4d56295e +vmlinux p80211netdev_hwremoved 0x48e1155a +vmlinux p80211netdev_rx 0x8f1a9ef1 +vmlinux p80211skb_free 0xf0f55b76 +vmlinux p80211skb_rxmeta_attach 0xf4bcff12 +vmlinux page_address 0x76e0a176 +vmlinux page_follow_link_light 0x30ca2195 +vmlinux page_is_ram 0xfc03d97a +vmlinux page_put_link 0xa0654220 +vmlinux page_readlink 0x13534221 +vmlinux page_symlink 0xe95b3595 +vmlinux page_symlink_inode_operations 0x09729576 +vmlinux pagevec_lookup_tag 0x9af0f54d +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0x84d2adfe +vmlinux path_release 0x903d2104 +vmlinux path_walk 0xe6a315ee +vmlinux pci_add_new_bus 0x093640d1 +vmlinux pci_address_to_pio 0xbef9267b +vmlinux pci_alloc_consistent 0xc800ab33 +vmlinux pci_assign_resource 0xcb45b7a9 +vmlinux pci_block_user_cfg_access 0x09c0bac4 +vmlinux pci_bus_add_device 0x739443db +vmlinux pci_bus_add_devices 0x26cadeeb +vmlinux pci_bus_alloc_resource 0x0a229e6c +vmlinux pci_bus_assign_resources 0xa6c36029 +vmlinux pci_bus_find_capability 0x777d2c0d +vmlinux pci_bus_io_base 0xe8494630 +vmlinux pci_bus_io_base_phys 0xeaa1ced1 +vmlinux pci_bus_max_busnr 0x5a144be9 +vmlinux pci_bus_mem_base_phys 0x579083b7 +vmlinux pci_bus_read_config_byte 0xe0caa405 +vmlinux pci_bus_read_config_dword 0x44a2cdb6 +vmlinux pci_bus_read_config_word 0x65143b96 +vmlinux pci_bus_size_bridges 0x31215a71 +vmlinux pci_bus_to_hose 0x6996c195 +vmlinux pci_bus_type 0x3a84e4c8 +vmlinux pci_bus_write_config_byte 0xa69a5871 +vmlinux pci_bus_write_config_dword 0x8d468bfc +vmlinux pci_bus_write_config_word 0x2f7ecbf4 +vmlinux pci_busdev_to_OF_node 0x40abcd74 +vmlinux pci_choose_state 0xcbe7814f +vmlinux pci_clear_mwi 0x417fd46b +vmlinux pci_create_bus 0x247700b7 +vmlinux pci_dev_driver 0x7702c7ab +vmlinux pci_dev_get 0xa5aeb039 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0x085595fd +vmlinux pci_device_from_OF_node 0xec893e6b +vmlinux pci_device_to_OF_node 0x43c2a616 +vmlinux pci_disable_device 0xb02e5f32 +vmlinux pci_do_scan_bus 0x20439d42 +vmlinux pci_dram_offset 0x7be4827c +vmlinux pci_enable_bridges 0xa1b62a39 +vmlinux pci_enable_device 0xca1d0c36 +vmlinux pci_enable_device_bars 0xa567b3a4 +vmlinux pci_enable_wake 0xdab39232 +vmlinux pci_find_bus 0x9c692597 +vmlinux pci_find_capability 0x169b7e0d +vmlinux pci_find_device 0x4a1d0e48 +vmlinux pci_find_device_reverse 0x6e3a8764 +vmlinux pci_find_next_bus 0x130d353a +vmlinux pci_find_next_capability 0x739e998f +vmlinux pci_find_parent_resource 0x7867c4cb +vmlinux pci_find_slot 0xbf905ec4 +vmlinux pci_fixup_device 0x6a6b91b8 +vmlinux pci_free_consistent 0x70a10a8f +vmlinux pci_get_class 0xac784ebe +vmlinux pci_get_device 0x45ba6013 +vmlinux pci_get_slot 0x43a1e208 +vmlinux pci_get_subsys 0x36ab3fab +vmlinux pci_intx 0x463a78d1 +vmlinux pci_iomap 0xbad2e32f +vmlinux pci_iounmap 0xe6af5518 +vmlinux pci_map_rom 0xaa7a49af +vmlinux pci_map_rom_copy 0x942274ae +vmlinux pci_match_device 0x03ea8ced +vmlinux pci_match_id 0x547ce680 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0xfe7cc0d7 +vmlinux pci_proc_attach_device 0x0a656f7b +vmlinux pci_proc_detach_bus 0xe8d07497 +vmlinux pci_release_region 0x740dd172 +vmlinux pci_release_regions 0x28e1d494 +vmlinux pci_remove_behind_bridge 0x8f7ae11f +vmlinux pci_remove_bus 0x344eb61f +vmlinux pci_remove_bus_device 0xa8c5faf5 +vmlinux pci_remove_device_safe 0x5ad2f219 +vmlinux pci_remove_rom 0xc08ec2e9 +vmlinux pci_request_region 0x7815530e +vmlinux pci_request_regions 0x72cdb3b6 +vmlinux pci_restore_bars 0xf196ac26 +vmlinux pci_restore_state 0xbf4c9841 +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0xa8ac52a1 +vmlinux pci_scan_bridge 0x37e2336c +vmlinux pci_scan_bus_parented 0x69b5bad9 +vmlinux pci_scan_child_bus 0x284affde +vmlinux pci_scan_single_device 0x384b53c3 +vmlinux pci_scan_slot 0x74a1e078 +vmlinux pci_set_consistent_dma_mask 0xbfb6fb31 +vmlinux pci_set_dma_mask 0xca46a373 +vmlinux pci_set_master 0x3ee04465 +vmlinux pci_set_mwi 0x65cf819e +vmlinux pci_set_power_state 0x6bffa7d6 +vmlinux pci_setup_cardbus 0x36b2b835 +vmlinux pci_unblock_user_cfg_access 0xb1315825 +vmlinux pci_unmap_rom 0xa36856c2 +vmlinux pci_unregister_driver 0xf63df057 +vmlinux pci_walk_bus 0x8d700c77 +vmlinux pcibios_align_resource 0xc2b513de +vmlinux pcibios_bus_to_resource 0xd0f259c0 +vmlinux pcibios_resource_to_bus 0x3d7af0d4 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux per_cpu__kstat 0x70bf2a4e +vmlinux per_cpu__softnet_data 0xd3f16dfc +vmlinux permission 0xd9c77b0a +vmlinux pfifo_qdisc_ops 0x891d1b4f +vmlinux phys_mem_access_prot 0xab08ff5c +vmlinux platform_add_devices 0xcbcf0d48 +vmlinux platform_bus 0xdf155908 +vmlinux platform_bus_type 0xbfe80737 +vmlinux platform_device_add 0x6a67adea +vmlinux platform_device_add_data 0xbb4de6b0 +vmlinux platform_device_add_resources 0xcee933ea +vmlinux platform_device_alloc 0xdfe7f7d4 +vmlinux platform_device_put 0x2bfb4f58 +vmlinux platform_device_register 0x6ad0a55e +vmlinux platform_device_register_simple 0xba6bbf33 +vmlinux platform_device_unregister 0xcb5816f7 +vmlinux platform_driver_register 0x3119687a +vmlinux platform_driver_unregister 0xb6b9f332 +vmlinux platform_get_irq 0x2e4ee9fa +vmlinux platform_get_irq_byname 0x78c7914d +vmlinux platform_get_resource 0x4e8130f3 +vmlinux platform_get_resource_byname 0xd305e18e +vmlinux pm_active 0xebd387f6 +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pmac_get_partition 0x4881efab +vmlinux pmac_low_i2c_close 0x4ea4ae6c +vmlinux pmac_low_i2c_lock 0x2dd6ede0 +vmlinux pmac_low_i2c_open 0x8a5288d2 +vmlinux pmac_low_i2c_setmode 0x74484b5f +vmlinux pmac_low_i2c_unlock 0xff66fef4 +vmlinux pmac_low_i2c_xfer 0xe1f5d817 +vmlinux pmac_register_agp_pm 0xf041f65f +vmlinux pmac_resume_agp_for_card 0x8ed12b88 +vmlinux pmac_set_early_video_resume 0xce409cda +vmlinux pmac_suspend_agp_for_card 0x4db7030b +vmlinux pmac_xpram_read 0x527830ff +vmlinux pmac_xpram_write 0x66cbf14b +vmlinux pmf_call_function 0x8785bb67 +vmlinux pmf_call_one 0x3dd32bb3 +vmlinux pmf_do_functions 0x1c24a1a8 +vmlinux pmf_do_irq 0x4eeb1400 +vmlinux pmf_find_function 0xf9926a03 +vmlinux pmf_get_function 0x0cc245a9 +vmlinux pmf_put_function 0x5566d2ca +vmlinux pmf_register_driver 0xc13fd9fa +vmlinux pmf_register_irq_client 0x8f00e22f +vmlinux pmf_unregister_driver 0x87e130a7 +vmlinux pmf_unregister_irq_client 0x2dd91403 +vmlinux pmu_batteries 0xaa4df512 +vmlinux pmu_battery_count 0x272c9acd +vmlinux pmu_enable_irled 0xd0a45fa5 +vmlinux pmu_i2c_combined_read 0x245922c3 +vmlinux pmu_i2c_simple_read 0xe62e9555 +vmlinux pmu_i2c_simple_write 0x14ad4129 +vmlinux pmu_i2c_stdsub_write 0x5854d548 +vmlinux pmu_poll 0x646cc6ab +vmlinux pmu_poll_adb 0x327b9c1b +vmlinux pmu_power_flags 0x628332e8 +vmlinux pmu_register_sleep_notifier 0x1509c48d +vmlinux pmu_request 0xd409383c +vmlinux pmu_resume 0xdcefb9a5 +vmlinux pmu_suspend 0xca825895 +vmlinux pmu_unlock 0xfadb5750 +vmlinux pmu_unregister_sleep_notifier 0x3dee7f25 +vmlinux pmu_wait_complete 0x1c5b2c15 +vmlinux pneigh_enqueue 0x2abd0d26 +vmlinux pneigh_lookup 0x5eecc7f4 +vmlinux poll_freewait 0x2f4918de +vmlinux poll_initwait 0xe6be3277 +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0x83c43dc1 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x886aa274 +vmlinux posix_acl_equiv_mode 0x50d56018 +vmlinux posix_acl_from_mode 0x8c537c45 +vmlinux posix_acl_from_xattr 0x85ac7f10 +vmlinux posix_acl_permission 0x6bc775e4 +vmlinux posix_acl_to_xattr 0x1ecb9943 +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0xa19fa9cc +vmlinux posix_lock_file 0x75c60989 +vmlinux posix_lock_file_wait 0x922b4dae +vmlinux posix_locks_deadlock 0x7c78d0eb +vmlinux posix_test_lock 0xa6042394 +vmlinux posix_timer_event 0x8e1d4f3c +vmlinux posix_unblock_lock 0x7874ee63 +vmlinux ppc_do_canonicalize_irqs 0x75ee7676 +vmlinux ppc_ide_md 0x9b0f14a8 +vmlinux ppc_md 0x7fca69dc +vmlinux pre_task_out_intr 0xd1348cf8 +vmlinux prepare_binprm 0xf4a45d1f +vmlinux prepare_to_wait 0x8085c7b1 +vmlinux prepare_to_wait_exclusive 0xadb792c2 +vmlinux printk 0xdd132261 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0x1b85cb44 +vmlinux proc_bus 0xfdaf75c4 +vmlinux proc_dointvec 0xdf1b01c3 +vmlinux proc_dointvec_jiffies 0x5c6d3e0c +vmlinux proc_dointvec_minmax 0xe6baf18d +vmlinux proc_dointvec_ms_jiffies 0xb53084b2 +vmlinux proc_dointvec_userhz_jiffies 0xd8dac578 +vmlinux proc_dostring 0xa82fca63 +vmlinux proc_doulongvec_minmax 0x51f40de4 +vmlinux proc_doulongvec_ms_jiffies_minmax 0xebd8658a +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0x463e0ce0 +vmlinux proc_net 0xe41effcb +vmlinux proc_net_netfilter 0xf5dd535f +vmlinux proc_net_stat 0x333bbf59 +vmlinux proc_root 0x1e36e6f2 +vmlinux proc_root_driver 0x2805a30d +vmlinux proc_root_fs 0x8618d9aa +vmlinux proc_symlink 0xa080d819 +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux program_check_exception 0x2bc61da1 +vmlinux prom_n_addr_cells 0xdda8fabe +vmlinux prom_n_size_cells 0xc880d56b +vmlinux proto_register 0x0ff528b1 +vmlinux proto_unregister 0xbbb07850 +vmlinux ps2_cmd_aborted 0xc8691828 +vmlinux ps2_command 0x4f0290ae +vmlinux ps2_drain 0xda5a7dd4 +vmlinux ps2_handle_ack 0x991d603a +vmlinux ps2_handle_response 0xab2c1ef0 +vmlinux ps2_init 0x5e1f8ebe +vmlinux ps2_schedule_command 0xe199eae2 +vmlinux ps2_sendbyte 0xaae7a5fe +vmlinux pskb_copy 0xe6dc0c3f +vmlinux pskb_expand_head 0xccb7b27a +vmlinux pskb_put 0xb389a3ed +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0x3e88ba51 +vmlinux put_cmsg 0xf39bf4d9 +vmlinux put_device 0xcc1abe1d +vmlinux put_disk 0x40e563f9 +vmlinux put_driver 0x358336f2 +vmlinux put_files_struct 0xdc912f6a +vmlinux put_io_context 0x2142add6 +vmlinux put_page 0xb0ee1261 +vmlinux put_tty_driver 0x36119cb8 +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0xf11e1852 +vmlinux qdisc_create_dflt 0xf16bb5f0 +vmlinux qdisc_destroy 0xfdc1e3c4 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0x69844db9 +vmlinux qdisc_lookup 0xdfdc7903 +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0x5aa6a556 +vmlinux qdisc_restart 0x763d8e65 +vmlinux qdisc_unlock_tree 0x00ead557 +vmlinux queue_delayed_work 0xf552681b +vmlinux queue_work 0xaaa451e5 +vmlinux radix_tree_delete 0xa34bdcd0 +vmlinux radix_tree_gang_lookup 0x883e226b +vmlinux radix_tree_gang_lookup_tag 0xcc4e9047 +vmlinux radix_tree_insert 0x7dc88ba1 +vmlinux radix_tree_lookup 0x5c2da0c3 +vmlinux radix_tree_lookup_slot 0x6bbbfb36 +vmlinux radix_tree_tag_clear 0x374a51dd +vmlinux radix_tree_tag_set 0x7e92ceb7 +vmlinux radix_tree_tagged 0xdacd0c37 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0x53463168 +vmlinux read_cache_pages 0x795f8173 +vmlinux read_dev_sector 0x05aca253 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0xe17779d2 +vmlinux redraw_screen 0xc4cee272 +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0x6db524f0 +vmlinux register_atm_ioctl 0x8e413a98 +vmlinux register_backlight_controller 0xe5c34893 +vmlinux register_binfmt 0x7551d6f9 +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0x589a7b31 +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x45dcd1a0 +vmlinux register_exec_domain 0x11b9853f +vmlinux register_filesystem 0x110637c9 +vmlinux register_firmware 0x711cccd3 +vmlinux register_framebuffer 0x078f9a4b +vmlinux register_gifconf 0xf149f9cf +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_key_type 0x8ece7aa8 +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0x0f5174a7 +vmlinux register_netdevice 0x933d745d +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x034bbc42 +vmlinux register_posix_clock 0x68716c4f +vmlinux register_qdisc 0x40caad73 +vmlinux register_quota_format 0x5671a300 +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0x7617a413 +vmlinux register_snap_client 0xc686a935 +vmlinux register_sysctl_table 0x09f05bee +vmlinux register_sysrq_key 0x32bdab25 +vmlinux register_tcf_proto_ops 0x62626859 +vmlinux register_timer_hook 0xdf27877b +vmlinux register_wlandev 0x6897f5f6 +vmlinux registered_fb 0xf3a1a0b1 +vmlinux release_OF_resource 0x0b41d8df +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x33934162 +vmlinux release_pmc_hardware 0x5892f832 +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0xb6dab99e +vmlinux remap_pfn_range 0xf2d5893b +vmlinux remote_llseek 0x624da167 +vmlinux remove_arg_zero 0xe1b3d3af +vmlinux remove_inode_hash 0x466c880d +vmlinux remove_proc_entry 0x8cfcc37a +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0xbe225e27 +vmlinux remove_wait_queue 0x36e47222 +vmlinux reqsk_queue_alloc 0xab082706 +vmlinux reqsk_queue_destroy 0xc7eeb23e +vmlinux request_OF_resource 0x2823f611 +vmlinux request_dma 0x7054a3e4 +vmlinux request_firmware 0x27d40774 +vmlinux request_firmware_nowait 0xf19e1405 +vmlinux request_irq 0x8acf5d0d +vmlinux request_key 0x63b58813 +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux reserve_pmc_hardware 0x93a2cb47 +vmlinux rtas 0xc3ff6055 +vmlinux rtas_call 0xff1765c7 +vmlinux rtas_data_buf 0xd1262886 +vmlinux rtas_data_buf_lock 0xf3cc8b18 +vmlinux rtas_extended_busy_delay_time 0x731c2074 +vmlinux rtas_flash_term_hook 0x86db1cbb +vmlinux rtas_get_power_level 0x37383edd +vmlinux rtas_get_sensor 0x9168c033 +vmlinux rtas_progress 0x56c2b95b +vmlinux rtas_set_indicator 0x81c0a84f +vmlinux rtas_set_power_level 0x12e5ef0c +vmlinux rtas_token 0x160bd45c +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x85902f79 +vmlinux rtc_lock 0xc02235f1 +vmlinux rtnetlink_links 0x740477b1 +vmlinux rtnetlink_put_metrics 0x4d5cd129 +vmlinux rtnl 0xc860a45f +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0xc3618496 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux rwsem_down_read_failed 0x8a6911c3 +vmlinux rwsem_down_write_failed 0x4b7cd409 +vmlinux rwsem_downgrade_wake 0x9c5834a9 +vmlinux rwsem_wake 0x6da508d3 +vmlinux sb_min_blocksize 0x8bad2a67 +vmlinux sb_set_blocksize 0x6c22093c +vmlinux sched_setscheduler 0x50281f4a +vmlinux schedule 0x01000e51 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0xccb08e21 +vmlinux scm_fp_dup 0xa4628aac +vmlinux scnprintf 0x28f35813 +vmlinux scsi_cmd_ioctl 0x3ffeba99 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux search_binary_handler 0x980c916b +vmlinux secpath_dup 0x60c4efb6 +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0xc2acc56f +vmlinux securityfs_create_dir 0xba2c50ab +vmlinux securityfs_create_file 0x6c2d0ecd +vmlinux securityfs_remove 0xa2fa868b +vmlinux send_sig 0xecfc792c +vmlinux send_sig_info 0x0185db30 +vmlinux seq_escape 0xb6dcdcc9 +vmlinux seq_lseek 0x311d0fa2 +vmlinux seq_open 0xf2d4768d +vmlinux seq_path 0x606eba45 +vmlinux seq_printf 0x508bf1de +vmlinux seq_putc 0xe48dea41 +vmlinux seq_puts 0xd550b887 +vmlinux seq_read 0x3fefa251 +vmlinux seq_release 0x174c5631 +vmlinux seq_release_private 0x09999b0e +vmlinux serio_close 0x220133ca +vmlinux serio_interrupt 0x7c6d9dcb +vmlinux serio_open 0x49848268 +vmlinux serio_reconnect 0x187a10dc +vmlinux serio_rescan 0x5c61b60e +vmlinux serio_unregister_child_port 0x124752b5 +vmlinux serio_unregister_driver 0x1838c42b +vmlinux serio_unregister_port 0x310e9b87 +vmlinux set_anon_super 0x995f142f +vmlinux set_backlight_enable 0xae772c9d +vmlinux set_backlight_level 0xa37f50a9 +vmlinux set_bh_page 0x44ddcb0c +vmlinux set_binfmt 0xeac9e4fb +vmlinux set_blocksize 0xf5267382 +vmlinux set_context 0xec62906c +vmlinux set_current_groups 0x72fbae28 +vmlinux set_device_ro 0xcc36c4a8 +vmlinux set_disk_ro 0x57774817 +vmlinux set_page_dirty 0x2fc26221 +vmlinux set_page_dirty_lock 0xf6d61a44 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0x6746072b +vmlinux setlease 0xc1aa29b6 +vmlinux setup_arg_pages 0xb848aa5f +vmlinux sget 0x0d6d8cae +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x03ddf18b +vmlinux shrink_dcache_sb 0x3cbf365b +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x8ed6f0ed +vmlinux simple_attr_close 0x4c799882 +vmlinux simple_attr_open 0x371ad80c +vmlinux simple_attr_read 0x39e81e14 +vmlinux simple_attr_write 0x403696ec +vmlinux simple_commit_write 0x504d51e6 +vmlinux simple_dir_inode_operations 0x63195c11 +vmlinux simple_dir_operations 0xae6a80ef +vmlinux simple_empty 0xce9622ea +vmlinux simple_fill_super 0xb09de33b +vmlinux simple_getattr 0xb0e7cdb5 +vmlinux simple_link 0x6154f559 +vmlinux simple_lookup 0x8fda5c4e +vmlinux simple_pin_fs 0xb89dca09 +vmlinux simple_prepare_write 0x4450a132 +vmlinux simple_read_from_buffer 0x528c709d +vmlinux simple_readpage 0x072be97d +vmlinux simple_release_fs 0x8375f52e +vmlinux simple_rename 0x4e090b58 +vmlinux simple_rmdir 0xff435062 +vmlinux simple_statfs 0x20fd96da +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0x3afcbc88 +vmlinux simple_transaction_get 0x7679598b +vmlinux simple_transaction_read 0x883cfce7 +vmlinux simple_transaction_release 0x62878e1d +vmlinux simple_unlink 0x40c35124 +vmlinux single_open 0xe6b02a60 +vmlinux single_release 0x6a126ca0 +vmlinux single_step_exception 0xd5b2e52a +vmlinux sk_alloc 0x7d65a69e +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0xbe086f6f +vmlinux sk_common_release 0x8f4dd7b6 +vmlinux sk_free 0x2a5575a2 +vmlinux sk_reset_timer 0x60be9a21 +vmlinux sk_run_filter 0xee35075b +vmlinux sk_send_sigurg 0xd55ed950 +vmlinux sk_stop_timer 0xab391aa4 +vmlinux sk_stream_error 0xcc6424cd +vmlinux sk_stream_kill_queues 0xfa4a2dec +vmlinux sk_stream_mem_schedule 0x0f7b46a7 +vmlinux sk_stream_rfree 0x55eaba9c +vmlinux sk_stream_wait_close 0x1d241345 +vmlinux sk_stream_wait_connect 0x735abfb9 +vmlinux sk_stream_wait_memory 0x8f1c20f8 +vmlinux sk_stream_write_space 0x94d05af4 +vmlinux sk_wait_data 0xf7270ccc +vmlinux skb_abort_seq_read 0x0413e7b0 +vmlinux skb_append 0x8081fee5 +vmlinux skb_append_datato_frags 0x5e6922ae +vmlinux skb_checksum 0xb99bdbd5 +vmlinux skb_checksum_help 0xde8fac6c +vmlinux skb_clone 0xc9111d80 +vmlinux skb_clone_fraglist 0x2ee4c306 +vmlinux skb_copy 0x782759ef +vmlinux skb_copy_and_csum_bits 0x6cbfe0ee +vmlinux skb_copy_and_csum_datagram_iovec 0x441f0638 +vmlinux skb_copy_and_csum_dev 0xdf888daa +vmlinux skb_copy_bits 0x59044512 +vmlinux skb_copy_datagram_iovec 0xcf6f0186 +vmlinux skb_copy_expand 0xd3613e0f +vmlinux skb_cow_data 0xccbd98d4 +vmlinux skb_dequeue 0xa27689dc +vmlinux skb_dequeue_tail 0x060ac469 +vmlinux skb_find_text 0xe0c68e7c +vmlinux skb_free_datagram 0x384df5a8 +vmlinux skb_icv_walk 0x20ee5696 +vmlinux skb_insert 0x383f5fb4 +vmlinux skb_make_writable 0x61febcab +vmlinux skb_migrate 0xa9385076 +vmlinux skb_over_panic 0x2550ca66 +vmlinux skb_pad 0x6d67495a +vmlinux skb_prepare_seq_read 0x99af7eda +vmlinux skb_queue_head 0xc5004ebc +vmlinux skb_queue_purge 0xfb8acd78 +vmlinux skb_queue_tail 0xc648f708 +vmlinux skb_realloc_headroom 0x2fd1a5ca +vmlinux skb_recv_datagram 0x9c5ee5cc +vmlinux skb_seq_read 0xa86976aa +vmlinux skb_split 0x50c24e02 +vmlinux skb_store_bits 0x7e074c33 +vmlinux skb_to_sgvec 0x4adfe41b +vmlinux skb_under_panic 0x4c8c5dd1 +vmlinux skb_unlink 0xf84fff5b +vmlinux sleep_on 0xa07a8d22 +vmlinux sleep_on_timeout 0x092b007a +vmlinux snprintf 0x025da070 +vmlinux sock_alloc_send_skb 0x5f763c37 +vmlinux sock_common_getsockopt 0xa0befae0 +vmlinux sock_common_recvmsg 0x219df8fd +vmlinux sock_common_setsockopt 0x15d84428 +vmlinux sock_create 0xa95e2698 +vmlinux sock_create_kern 0x4f399ebd +vmlinux sock_create_lite 0x3388b0db +vmlinux sock_enable_timestamp 0x55315457 +vmlinux sock_get_timestamp 0x95f68440 +vmlinux sock_i_ino 0x8c4a96f8 +vmlinux sock_i_uid 0xb485fa7e +vmlinux sock_init_data 0x7c644ae3 +vmlinux sock_kfree_s 0xc3c0fe8a +vmlinux sock_kmalloc 0x9cceba55 +vmlinux sock_map_fd 0x75728cf3 +vmlinux sock_no_accept 0x785fa1fd +vmlinux sock_no_bind 0xbdbaa2b9 +vmlinux sock_no_connect 0x5108f01e +vmlinux sock_no_getname 0x05806683 +vmlinux sock_no_getsockopt 0xe3af71bd +vmlinux sock_no_ioctl 0x7e8716fd +vmlinux sock_no_listen 0x4799eab8 +vmlinux sock_no_mmap 0x3f3b8405 +vmlinux sock_no_poll 0xb75864c2 +vmlinux sock_no_recvmsg 0xdad77a97 +vmlinux sock_no_sendmsg 0x507667d1 +vmlinux sock_no_sendpage 0xa634edd2 +vmlinux sock_no_setsockopt 0x70268e60 +vmlinux sock_no_shutdown 0x7318ed0f +vmlinux sock_no_socketpair 0x672d6274 +vmlinux sock_recvmsg 0x042980bc +vmlinux sock_register 0xa2ab6219 +vmlinux sock_release 0x5588c846 +vmlinux sock_rfree 0xa7a0c097 +vmlinux sock_sendmsg 0xaed2d261 +vmlinux sock_setsockopt 0xb7a0d7d6 +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0x7c301a40 +vmlinux sock_wfree 0x57e2dabe +vmlinux sock_wmalloc 0x419338c3 +vmlinux sockfd_lookup 0x7a31e967 +vmlinux soft_cursor 0x4fdef8c8 +vmlinux sonet_copy_stats 0x89195dc3 +vmlinux sonet_subtract_stats 0x1a24e5e2 +vmlinux sort 0x310917fe +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux start_thread 0x756dd160 +vmlinux start_tty 0xa2de6abf +vmlinux steal_locks 0xa3da141f +vmlinux stop_tty 0xd9b62582 +vmlinux strcasecmp 0xaafdc258 +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0x6c1ce5ce +vmlinux strlcat 0xdd0a2ba2 +vmlinux strlcpy 0x73e20c1c +vmlinux strlen 0x97255bdf +vmlinux strncat 0xd627480b +vmlinux strnchr 0x0a3131f6 +vmlinux strncmp 0x84b183ae +vmlinux strncpy 0x328a05f1 +vmlinux strnicmp 0x4e830a3e +vmlinux strnlen 0xd9ce8f0c +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0xc7ec6c27 +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0x1a9ed740 +vmlinux submit_bh 0x938e9788 +vmlinux submit_bio 0x5e4709e4 +vmlinux subsys_create_file 0x5914888f +vmlinux subsys_remove_file 0xa6fea0e1 +vmlinux subsystem_init 0x34945ef9 +vmlinux subsystem_register 0x4a50a3f7 +vmlinux subsystem_unregister 0xc034f209 +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0xd7203156 +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0xdec96aab +vmlinux sync_dirty_buffer 0x56f23f6d +vmlinux sync_inode 0xd3224365 +vmlinux sync_mapping_buffers 0x393a4069 +vmlinux sync_page_range 0xe04af7b8 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xdcb0349b +vmlinux sys_ctrler 0x74fe8730 +vmlinux sys_open 0xe269ea1c +vmlinux sys_read 0x2efa450d +vmlinux sys_sigreturn 0x4596db6a +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0x7a967972 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0xed0689ce +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0x1230fd3b +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0xf4760383 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x958e7047 +vmlinux sysdev_class_unregister 0x50d864aa +vmlinux sysdev_create_file 0x3022b006 +vmlinux sysdev_driver_register 0xa41ea996 +vmlinux sysdev_driver_unregister 0x234da38b +vmlinux sysdev_register 0xe1d178fb +vmlinux sysdev_remove_file 0x51cf231b +vmlinux sysdev_unregister 0x9ce470c6 +vmlinux sysfs_chmod_file 0x1048ac99 +vmlinux sysfs_create_bin_file 0x467ffeaf +vmlinux sysfs_create_dir 0xceb9807a +vmlinux sysfs_create_file 0x742dd3a9 +vmlinux sysfs_create_group 0x4b3c5112 +vmlinux sysfs_create_link 0xe5c4e626 +vmlinux sysfs_remove_bin_file 0x356f1c69 +vmlinux sysfs_remove_dir 0x780ca699 +vmlinux sysfs_remove_file 0xe760138b +vmlinux sysfs_remove_group 0x39a1f264 +vmlinux sysfs_remove_link 0x93d18983 +vmlinux sysfs_rename_dir 0x92ee1785 +vmlinux sysfs_update_file 0x0728e1f5 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0xd1951257 +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0xb339d1b3 +vmlinux task_nice 0xad718c1c +vmlinux task_no_data_intr 0x4fafac8b +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0xd6edcf04 +vmlinux tb_ticks_per_jiffy 0x40f1ad10 +vmlinux tb_ticks_per_usec 0x915e1208 +vmlinux tc_classify 0x530d53c9 +vmlinux tcf_em_register 0xa5af4fd4 +vmlinux tcf_em_tree_destroy 0xbd8a6b42 +vmlinux tcf_em_tree_dump 0xc9fe509a +vmlinux tcf_em_tree_validate 0x11df283e +vmlinux tcf_em_unregister 0xc975bbb6 +vmlinux tcf_exts_change 0xab2b2d87 +vmlinux tcf_exts_destroy 0x906eb444 +vmlinux tcf_exts_dump 0x147832bf +vmlinux tcf_exts_dump_stats 0x12f28462 +vmlinux tcf_exts_validate 0x9d8099c9 +vmlinux tcf_police 0xedbb9ac8 +vmlinux tcf_police_destroy 0x872f17f6 +vmlinux tcf_police_dump 0xe7fc219f +vmlinux tcf_police_dump_stats 0x4b549960 +vmlinux tcf_police_hash 0x8493d6e7 +vmlinux tcf_police_ht 0x93da8ff5 +vmlinux tcf_police_locate 0x55c50a07 +vmlinux tcf_police_lookup 0xf2477819 +vmlinux tcf_police_new_index 0x7ae0f6c9 +vmlinux tcp_check_req 0x13510171 +vmlinux tcp_child_process 0xb5ceeb4e +vmlinux tcp_close 0xc610e9ec +vmlinux tcp_connect 0x999b7245 +vmlinux tcp_create_openreq_child 0xbf4bb325 +vmlinux tcp_death_row 0x63e66782 +vmlinux tcp_disconnect 0x106f9295 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x9508d50f +vmlinux tcp_getsockopt 0x9599c0fb +vmlinux tcp_hashinfo 0x6f83365b +vmlinux tcp_init_congestion_ops 0x42f3630b +vmlinux tcp_init_xmit_timers 0x85c5fcce +vmlinux tcp_ioctl 0xabcf9e33 +vmlinux tcp_make_synack 0xf7389b7d +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0xf052799c +vmlinux tcp_poll 0x01f3890d +vmlinux tcp_proc_register 0x9a538985 +vmlinux tcp_proc_unregister 0x4d8abe23 +vmlinux tcp_prot 0x5d5b512c +vmlinux tcp_rcv_established 0x1ce355af +vmlinux tcp_rcv_state_process 0xd8135298 +vmlinux tcp_read_sock 0xe555b1d4 +vmlinux tcp_recvmsg 0xb33920e8 +vmlinux tcp_register_congestion_control 0xe0c5ce68 +vmlinux tcp_reno_cong_avoid 0x79f40a4b +vmlinux tcp_reno_min_cwnd 0x8c1d527f +vmlinux tcp_reno_ssthresh 0xee892ac0 +vmlinux tcp_sendmsg 0xbc0fbb6b +vmlinux tcp_sendpage 0xfec31009 +vmlinux tcp_setsockopt 0x39e8cad9 +vmlinux tcp_shutdown 0x7a43cb36 +vmlinux tcp_simple_retransmit 0x8eabc710 +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0x47c9268a +vmlinux tcp_timewait_state_process 0xced19c13 +vmlinux tcp_unhash 0x37bb3f1f +vmlinux tcp_unregister_congestion_control 0xf7045620 +vmlinux tcp_v4_conn_request 0xce9b2160 +vmlinux tcp_v4_connect 0x22c09fde +vmlinux tcp_v4_destroy_sock 0x157ad13c +vmlinux tcp_v4_do_rcv 0xcde5ea6c +vmlinux tcp_v4_remember_stamp 0xc2555490 +vmlinux tcp_v4_send_check 0xdc53a600 +vmlinux tcp_v4_syn_recv_sock 0xdc8e924a +vmlinux test_clear_page_dirty 0xdefd89fa +vmlinux test_set_page_writeback 0xbfd1af6f +vmlinux textsearch_destroy 0xce5200d0 +vmlinux textsearch_find_continuous 0x1ca23f44 +vmlinux textsearch_prepare 0x18a9d8ff +vmlinux textsearch_register 0xccb1b0ac +vmlinux textsearch_unregister 0x93f26bf2 +vmlinux thaw_bdev 0x5d6c23d6 +vmlinux timer_interrupt 0xf4449388 +vmlinux timespec_trunc 0xc045ad4e +vmlinux to_tm 0x6a61f874 +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0xcdd72944 +vmlinux tr_type_trans 0xb2c38b96 +vmlinux transfer_to_handler 0x90501868 +vmlinux transport_add_device 0x4c4e68a8 +vmlinux transport_class_register 0x31d44892 +vmlinux transport_class_unregister 0x8eebcd65 +vmlinux transport_configure_device 0x65a3c54d +vmlinux transport_destroy_device 0xdb6b87d4 +vmlinux transport_remove_device 0x95822a67 +vmlinux transport_setup_device 0x91028c14 +vmlinux truncate_inode_pages 0xffee78b1 +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0xd0d19272 +vmlinux try_to_release_page 0x3710587f +vmlinux tty_check_change 0x8d711380 +vmlinux tty_flip_buffer_push 0x4d5a136f +vmlinux tty_get_baud_rate 0x60c5574c +vmlinux tty_hangup 0x3ab7b37c +vmlinux tty_hung_up_p 0xec1accc9 +vmlinux tty_ldisc_deref 0x74b82b32 +vmlinux tty_ldisc_flush 0x2c77d152 +vmlinux tty_ldisc_get 0x0b489221 +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0xda5259ac +vmlinux tty_ldisc_ref_wait 0xea5587af +vmlinux tty_name 0xeff2d418 +vmlinux tty_register_device 0x1a98f300 +vmlinux tty_register_driver 0x20a20012 +vmlinux tty_register_ldisc 0x544caa76 +vmlinux tty_set_operations 0x80fd353e +vmlinux tty_std_termios 0x09f417e8 +vmlinux tty_termios_baud_rate 0x9aaa02f4 +vmlinux tty_unregister_device 0xe5086336 +vmlinux tty_unregister_driver 0xdb35251d +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0x50ee703f +vmlinux tty_wait_until_sent 0x119671f3 +vmlinux tty_wakeup 0x22437847 +vmlinux udelay 0xa39b4cf2 +vmlinux udp_disconnect 0x94ad68ed +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0xabad83d7 +vmlinux udp_ioctl 0xdf6f50ce +vmlinux udp_poll 0xcc5b52eb +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x536ef9e1 +vmlinux udp_proc_unregister 0x4f3584ba +vmlinux udp_prot 0x40e54c76 +vmlinux udp_sendmsg 0x8df67027 +vmlinux uhci_check_and_reset_hc 0xa985ba77 +vmlinux uhci_reset_hc 0xf31b2b5a +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unload_nls 0x470127ea +vmlinux unlock_buffer 0x0eaaceb7 +vmlinux unlock_new_inode 0x43e206d4 +vmlinux unlock_page 0xa358ffaf +vmlinux unlock_rename 0xc52f6573 +vmlinux unmap_mapping_range 0xc652cc9d +vmlinux unmap_underlying_metadata 0xd4adb47c +vmlinux unregister_8022_client 0x766f05f2 +vmlinux unregister_backlight_controller 0x44e90ac6 +vmlinux unregister_binfmt 0x14b430cb +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0xd824cf1f +vmlinux unregister_exec_domain 0x776c3298 +vmlinux unregister_filesystem 0xbe0a619c +vmlinux unregister_framebuffer 0x80f0a6e3 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_key_type 0x76fac3ee +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0xb3a721d9 +vmlinux unregister_netdevice 0x614f0e15 +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0x40b61a61 +vmlinux unregister_qdisc 0x7f2f0fc5 +vmlinux unregister_quota_format 0xfcdb50b3 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0x3dbdcef7 +vmlinux unregister_snap_client 0x1beca22a +vmlinux unregister_sysctl_table 0x2d4f2bf3 +vmlinux unregister_sysrq_key 0x79c50962 +vmlinux unregister_tcf_proto_ops 0x130cd434 +vmlinux unregister_timer_hook 0xa39d9220 +vmlinux unregister_wlandev 0xd41bcccc +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0x8f5b0c50 +vmlinux update_region 0x9ea6ed64 +vmlinux user_describe 0x0f7c4b18 +vmlinux user_destroy 0x2ac2d7d4 +vmlinux user_duplicate 0x70f87009 +vmlinux user_instantiate 0xc1a3e5d3 +vmlinux user_match 0xd447f7cb +vmlinux user_read 0xe1c8b33b +vmlinux user_update 0x31561441 +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0xe3b8d8d1 +vmlinux vc_cons 0x38e3cefa +vmlinux vc_resize 0x88ecbc70 +vmlinux vcc_hash 0x2cc2d52d +vmlinux vcc_insert_socket 0xb08f8bfb +vmlinux vcc_release_async 0xd7cdb76a +vmlinux vcc_sklist_lock 0x31eb46b9 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0xdc19e0f3 +vmlinux vfs_follow_link 0xd3277c30 +vmlinux vfs_fstat 0xcb841136 +vmlinux vfs_get_dqblk 0x6fde55a4 +vmlinux vfs_get_dqinfo 0xb21b9c95 +vmlinux vfs_getattr 0xf4468649 +vmlinux vfs_link 0x8cf0c2c4 +vmlinux vfs_llseek 0xd6090685 +vmlinux vfs_lstat 0x91d803ff +vmlinux vfs_mkdir 0x5e976791 +vmlinux vfs_mknod 0xdf515083 +vmlinux vfs_permission 0x44225a11 +vmlinux vfs_quota_off 0x72ae305b +vmlinux vfs_quota_on 0x2efd886f +vmlinux vfs_quota_on_mount 0x82121ad7 +vmlinux vfs_quota_sync 0x6bd0dcbc +vmlinux vfs_read 0x9e73b212 +vmlinux vfs_readdir 0xd420035d +vmlinux vfs_readlink 0x8da8b1ab +vmlinux vfs_readv 0xe2b7cc43 +vmlinux vfs_rename 0xad309ee6 +vmlinux vfs_rmdir 0xcfd5b76f +vmlinux vfs_set_dqblk 0xe39d41cb +vmlinux vfs_set_dqinfo 0xfd5297ce +vmlinux vfs_stat 0x4e193f40 +vmlinux vfs_statfs 0xb687eacc +vmlinux vfs_symlink 0x495010f9 +vmlinux vfs_unlink 0x106e51ac +vmlinux vfs_write 0x4db0365e +vmlinux vfs_writev 0xe33b616a +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0xe45c63eb +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0x5d31e771 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0xa31bea24 +vmlinux vmtruncate 0xc170bd3d +vmlinux vprintk 0x777a8e29 +vmlinux vscnprintf 0x0ead5073 +vmlinux vsnprintf 0x6989a769 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0x25fa6f17 +vmlinux wait_for_completion_interruptible 0x891e32b8 +vmlinux wait_for_completion_interruptible_timeout 0x8d5642fc +vmlinux wait_for_completion_timeout 0x1fae7a0b +vmlinux wait_on_page_bit 0x0825f6ef +vmlinux wait_on_sync_kiocb 0xa25317fa +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0xe7223c85 +vmlinux wireless_send_event 0x664c7b88 +vmlinux wireless_spy_update 0x775a5491 +vmlinux wlan_setup 0x04bebdb8 +vmlinux wlan_unsetup 0xdfa8a2e0 +vmlinux write_inode_now 0x292381f9 +vmlinux write_one_page 0x9bc6f032 +vmlinux xfrm4_rcv 0x8eaa831e +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0x0d5069c4 +vmlinux xfrm_bundle_ok 0x586e56b7 +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0xfb6b7ff6 +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0x61b50115 +vmlinux xfrm_dst_lookup 0x9490172f +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0x1007daa9 +vmlinux xfrm_find_acq_byseq 0xf80fe730 +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0x41f85f71 +vmlinux xfrm_init_state 0xf51715b5 +vmlinux xfrm_lookup 0xc7090986 +vmlinux xfrm_parse_spi 0x77b353b9 +vmlinux xfrm_policy_alloc 0x5eca9f67 +vmlinux xfrm_policy_byid 0xc5e3ac18 +vmlinux xfrm_policy_bysel 0x8159e996 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x1df8a140 +vmlinux xfrm_policy_list 0x3e2a5267 +vmlinux xfrm_policy_register_afinfo 0xc5aadad4 +vmlinux xfrm_policy_unregister_afinfo 0x94433961 +vmlinux xfrm_policy_walk 0x848a3039 +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0xadf17950 +vmlinux xfrm_register_type 0xebe0b227 +vmlinux xfrm_replay_advance 0x5340235a +vmlinux xfrm_replay_check 0x90f626d9 +vmlinux xfrm_state_add 0xc75ffa77 +vmlinux xfrm_state_alloc 0x7bc7b0df +vmlinux xfrm_state_check 0x988e06c0 +vmlinux xfrm_state_check_expire 0x7d391f2b +vmlinux xfrm_state_delete 0x40ef59fd +vmlinux xfrm_state_delete_tunnel 0x963e06af +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0x933c46ed +vmlinux xfrm_state_lookup 0x4661924c +vmlinux xfrm_state_mtu 0xd3d2c293 +vmlinux xfrm_state_register_afinfo 0x6b5d7db6 +vmlinux xfrm_state_unregister_afinfo 0xba504340 +vmlinux xfrm_state_update 0x897a0918 +vmlinux xfrm_state_walk 0x459a331e +vmlinux xfrm_unregister_km 0x65392f18 +vmlinux xfrm_unregister_type 0x7c6d49d1 +vmlinux xfrm_user_policy 0xc166d77c +vmlinux xrlim_allow 0x06d8281f +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xf448c4e8 +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x9309ffde +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0xd91fb722 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/powerpc/powerpc-smp +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/powerpc/powerpc-smp @@ -0,0 +1,5430 @@ +arch/powerpc/platforms/powermac/nvram pmac_get_partition 0x4881efab +arch/powerpc/platforms/powermac/nvram pmac_xpram_read 0x527830ff +arch/powerpc/platforms/powermac/nvram pmac_xpram_write 0x66cbf14b +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0x54678b1e +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0x68832aa2 +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0xac5db655 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xdc30c180 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/atm/suni suni_init 0xa4d8f2c1 +drivers/atm/uPD98402 uPD98402_init 0xda8b221b +drivers/block/loop loop_register_transfer 0xb6b28ba4 +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0x7538e382 +drivers/block/paride/paride pi_disconnect 0x1a608eff +drivers/block/paride/paride pi_do_claimed 0x5e37469d +drivers/block/paride/paride pi_init 0x8b15887d +drivers/block/paride/paride pi_read_block 0x3582f10d +drivers/block/paride/paride pi_read_regr 0x80ca71b3 +drivers/block/paride/paride pi_register 0x159f18ac +drivers/block/paride/paride pi_release 0x1fb71fa7 +drivers/block/paride/paride pi_schedule_claimed 0xf2f5aa87 +drivers/block/paride/paride pi_unregister 0x63a4a374 +drivers/block/paride/paride pi_write_block 0xddbaa337 +drivers/block/paride/paride pi_write_regr 0x3bcd4986 +drivers/cdrom/cdrom cdrom_get_last_written 0x92f0b005 +drivers/cdrom/cdrom cdrom_get_media_event 0x86a2859c +drivers/cdrom/cdrom cdrom_ioctl 0xc12ba0c5 +drivers/cdrom/cdrom cdrom_media_changed 0x6f0465a3 +drivers/cdrom/cdrom cdrom_mode_select 0x76b70e39 +drivers/cdrom/cdrom cdrom_mode_sense 0xecc6e208 +drivers/cdrom/cdrom cdrom_number_of_slots 0xd99e0d4b +drivers/cdrom/cdrom cdrom_open 0xaecd245c +drivers/cdrom/cdrom cdrom_release 0xd40dcc41 +drivers/cdrom/cdrom init_cdrom_command 0x344adbd5 +drivers/cdrom/cdrom register_cdrom 0x1344bec6 +drivers/cdrom/cdrom unregister_cdrom 0x3d768543 +drivers/char/agp/agpgart agp3_generic_cleanup 0xc2424641 +drivers/char/agp/agpgart agp3_generic_configure 0x4b085dbf +drivers/char/agp/agpgart agp3_generic_fetch_size 0xde9b17ed +drivers/char/agp/agpgart agp3_generic_sizes 0x546264cf +drivers/char/agp/agpgart agp3_generic_tlbflush 0x7074d9c8 +drivers/char/agp/agpgart agp_add_bridge 0x6d90489d +drivers/char/agp/agpgart agp_alloc_bridge 0x697cc30c +drivers/char/agp/agpgart agp_allocate_memory 0xc7af5cd2 +drivers/char/agp/agpgart agp_backend_acquire 0x86353452 +drivers/char/agp/agpgart agp_backend_release 0xa16c7ffd +drivers/char/agp/agpgart agp_bind_memory 0xd2a77e33 +drivers/char/agp/agpgart agp_bridge 0xac470c1c +drivers/char/agp/agpgart agp_bridges 0x673f815e +drivers/char/agp/agpgart agp_collect_device_status 0xe0931537 +drivers/char/agp/agpgart agp_copy_info 0x963ecb09 +drivers/char/agp/agpgart agp_create_memory 0xc354f071 +drivers/char/agp/agpgart agp_device_command 0xe6d5c272 +drivers/char/agp/agpgart agp_enable 0xe310016d +drivers/char/agp/agpgart agp_find_bridge 0xf8cde8ba +drivers/char/agp/agpgart agp_free_key 0xd0fef3b2 +drivers/char/agp/agpgart agp_free_memory 0x6e1082a5 +drivers/char/agp/agpgart agp_generic_alloc_by_type 0x432837b3 +drivers/char/agp/agpgart agp_generic_alloc_page 0x4ac4cbe8 +drivers/char/agp/agpgart agp_generic_create_gatt_table 0x66b1aa34 +drivers/char/agp/agpgart agp_generic_destroy_page 0xbba27749 +drivers/char/agp/agpgart agp_generic_enable 0x83924836 +drivers/char/agp/agpgart agp_generic_free_by_type 0x2e2ad740 +drivers/char/agp/agpgart agp_generic_free_gatt_table 0x9fe6fc20 +drivers/char/agp/agpgart agp_generic_insert_memory 0xd3274ea1 +drivers/char/agp/agpgart agp_generic_mask_memory 0x2d28bd11 +drivers/char/agp/agpgart agp_generic_remove_memory 0xf9024d87 +drivers/char/agp/agpgart agp_memory_reserved 0xe089cfcc +drivers/char/agp/agpgart agp_num_entries 0xd6feefa5 +drivers/char/agp/agpgart agp_off 0x7538b132 +drivers/char/agp/agpgart agp_put_bridge 0x615aadc5 +drivers/char/agp/agpgart agp_remove_bridge 0x58f781dd +drivers/char/agp/agpgart agp_try_unsupported_boot 0xc5d9c46c +drivers/char/agp/agpgart agp_unbind_memory 0x78dfbf47 +drivers/char/agp/agpgart get_agp_version 0x186fff80 +drivers/char/agp/agpgart global_cache_flush 0xa4d4f0e6 +drivers/char/drm/drm drm_addbufs_agp 0xabc76933 +drivers/char/drm/drm drm_addbufs_fb 0x894e7c49 +drivers/char/drm/drm drm_addbufs_pci 0xdeb4c62f +drivers/char/drm/drm drm_addmap 0x40ed7b82 +drivers/char/drm/drm drm_agp_acquire 0x630592d8 +drivers/char/drm/drm drm_agp_alloc 0xfff02ecf +drivers/char/drm/drm drm_agp_bind 0x98cf539d +drivers/char/drm/drm drm_agp_bind_memory 0x47899393 +drivers/char/drm/drm drm_agp_enable 0x646271df +drivers/char/drm/drm drm_agp_free 0x78b1db87 +drivers/char/drm/drm drm_agp_info 0xdbbf5e29 +drivers/char/drm/drm drm_agp_release 0x0b207a91 +drivers/char/drm/drm drm_agp_unbind 0xfcff8e73 +drivers/char/drm/drm drm_ati_pcigart_cleanup 0x04a39756 +drivers/char/drm/drm drm_ati_pcigart_init 0x4b18eb4a +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0xdaf6f42f +drivers/char/drm/drm drm_core_reclaim_buffers 0x17df07c2 +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0xa7941707 +drivers/char/drm/drm drm_fasync 0x1667498f +drivers/char/drm/drm drm_get_dev 0x89c29847 +drivers/char/drm/drm drm_get_resource_len 0xcd478c21 +drivers/char/drm/drm drm_get_resource_start 0x3929650f +drivers/char/drm/drm drm_init 0x3decc11a +drivers/char/drm/drm drm_ioctl 0x91857bd8 +drivers/char/drm/drm drm_irq_uninstall 0x1b2faff2 +drivers/char/drm/drm drm_mmap 0xe5692629 +drivers/char/drm/drm drm_open 0xd9280134 +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0x6f2e1ce5 +drivers/char/drm/drm drm_pci_free 0xecd5ba3a +drivers/char/drm/drm drm_poll 0x848b181e +drivers/char/drm/drm drm_release 0x71a2e80b +drivers/char/drm/drm drm_rmmap 0x63dffd6e +drivers/char/drm/drm drm_rmmap_locked 0xe8dc3883 +drivers/char/drm/drm drm_vbl_send_signals 0x27825210 +drivers/char/generic_serial gs_block_til_ready 0x4816065b +drivers/char/generic_serial gs_chars_in_buffer 0x1deaaa7f +drivers/char/generic_serial gs_close 0x790d94d3 +drivers/char/generic_serial gs_flush_buffer 0xc0698330 +drivers/char/generic_serial gs_flush_chars 0xeb99089c +drivers/char/generic_serial gs_getserial 0x59b4cb8a +drivers/char/generic_serial gs_got_break 0x89239662 +drivers/char/generic_serial gs_hangup 0xdd11add3 +drivers/char/generic_serial gs_init_port 0x479892bd +drivers/char/generic_serial gs_put_char 0xf8cd68d1 +drivers/char/generic_serial gs_set_termios 0x9b40c765 +drivers/char/generic_serial gs_setserial 0x5d30fa72 +drivers/char/generic_serial gs_start 0x388eabb2 +drivers/char/generic_serial gs_stop 0x8481af3c +drivers/char/generic_serial gs_write 0xa9172354 +drivers/char/generic_serial gs_write_room 0x9dca2f52 +drivers/char/ip2main ip2_loadmain 0x5f735f69 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0x1044dd73 +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0x209e98e5 +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0x0224f08b +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0x0ebf1aa3 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0xbff91054 +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0xadd9957f +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0xc8539f8d +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0xbc261647 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0x2bcfafdb +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x0eeacdc1 +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0xa61739b9 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0xcd6497f7 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0x9ada2bcf +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0x55d201cb +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0xc7bc1be1 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0x5f3b9abf +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0xb4a94d7d +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0x7ae961f1 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0x3ac6994f +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0x59cd66e6 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0x85215217 +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0xeb9c10e3 +drivers/char/tpm/tpm tpm_open 0xb99453cf +drivers/char/tpm/tpm tpm_pm_resume 0x1b0a81bc +drivers/char/tpm/tpm tpm_pm_suspend 0x4acf72cc +drivers/char/tpm/tpm tpm_read 0x650d9cba +drivers/char/tpm/tpm tpm_register_hardware 0x80a8d033 +drivers/char/tpm/tpm tpm_release 0x2dc74c67 +drivers/char/tpm/tpm tpm_remove_hardware 0xd359337c +drivers/char/tpm/tpm tpm_show_caps 0xe2231761 +drivers/char/tpm/tpm tpm_show_pcrs 0xea8d1805 +drivers/char/tpm/tpm tpm_show_pubek 0xe410104d +drivers/char/tpm/tpm tpm_store_cancel 0xa4e471ce +drivers/char/tpm/tpm tpm_write 0x2e9667c7 +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0x3f114f23 +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0xf8656e57 +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0x5c996517 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0xe81587e5 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0x4ce98ca5 +drivers/i2c/busses/i2c-amd756 amd756_smbus 0x20750602 +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0x32ab2936 +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0x55001b47 +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0x9a262204 +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x4358bad7 +drivers/ieee1394/ieee1394 csr1212_read 0x85bc1770 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0xf7de4c81 +drivers/ieee1394/ieee1394 dma_prog_region_free 0x0100a5db +drivers/ieee1394/ieee1394 dma_prog_region_init 0x9ee373d8 +drivers/ieee1394/ieee1394 dma_region_alloc 0xdc0c7fa4 +drivers/ieee1394/ieee1394 dma_region_free 0x624ec41e +drivers/ieee1394/ieee1394 dma_region_init 0x9f12f4bb +drivers/ieee1394/ieee1394 dma_region_mmap 0x8866a6d4 +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0x17ceb012 +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0x55d8c7b6 +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x23bd4c85 +drivers/ieee1394/ieee1394 highlevel_host_reset 0x10042411 +drivers/ieee1394/ieee1394 hpsb_add_host 0xec241ee9 +drivers/ieee1394/ieee1394 hpsb_alloc_host 0xa58cddf5 +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0xc6f3721d +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0x7857fb83 +drivers/ieee1394/ieee1394 hpsb_bus_reset 0x2384e223 +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0xc5b6895e +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0xfd0ba958 +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0xd27ba589 +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0xd1b2fd47 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0xcd689e70 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0xa8a18add +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0xe5f22be2 +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0x79d2583c +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0x9f948cf8 +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0xa86804db +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0x87cecedf +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0xf62e6f01 +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0xd3862c6f +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0xf5cfb80f +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0xe3a8a26e +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0xf6ee6455 +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0x57af3cc2 +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0x94537604 +drivers/ieee1394/ieee1394 hpsb_iso_stop 0x1dbbee15 +drivers/ieee1394/ieee1394 hpsb_iso_wake 0x9ae68901 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x81fa4013 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0xe825b7d2 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0xac5e103c +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0xd5168d37 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0xe5e13c50 +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0x47ee260d +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0x9963a3ff +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0x91dd4769 +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0x2fe4fe54 +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0xaa18a1ee +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0x064b304f +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0x5deee7c6 +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0xee93f154 +drivers/ieee1394/ieee1394 hpsb_node_write 0x0a8bc8cc +drivers/ieee1394/ieee1394 hpsb_packet_received 0x22e4776b +drivers/ieee1394/ieee1394 hpsb_packet_sent 0x03208dd9 +drivers/ieee1394/ieee1394 hpsb_packet_success 0xd662171e +drivers/ieee1394/ieee1394 hpsb_protocol_class 0x1bb66fff +drivers/ieee1394/ieee1394 hpsb_read 0x77b46593 +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0x4529993c +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0x643b53c8 +drivers/ieee1394/ieee1394 hpsb_register_protocol 0xab5b482c +drivers/ieee1394/ieee1394 hpsb_remove_host 0xe999b644 +drivers/ieee1394/ieee1394 hpsb_reset_bus 0xe80d9a39 +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0xaa69f9ba +drivers/ieee1394/ieee1394 hpsb_selfid_received 0xc9730b66 +drivers/ieee1394/ieee1394 hpsb_send_packet 0x74b1e311 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0xa7ec541f +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0xabac631b +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0xe7fcca84 +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0x364fa401 +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0x3fc416dc +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0xbbccec52 +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0x5488c4df +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0xe6fb6e44 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0xe6826373 +drivers/ieee1394/ieee1394 hpsb_write 0x4f39acc8 +drivers/ieee1394/ieee1394 ieee1394_bus_type 0xa8475945 +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0x1d5aeebc +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0x9817bfc7 +drivers/ieee1394/ohci1394 ohci1394_stop_context 0x17b6ba6f +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0xa2a55edd +drivers/infiniband/core/ib_cm ib_cm_establish 0x6e5760e7 +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0x16b9e97b +drivers/infiniband/core/ib_cm ib_cm_listen 0x6ad81286 +drivers/infiniband/core/ib_cm ib_create_cm_id 0x1b2047ed +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0x37b87ae8 +drivers/infiniband/core/ib_cm ib_send_cm_apr 0xe531f5cc +drivers/infiniband/core/ib_cm ib_send_cm_drep 0xa852c99d +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0x8110a50a +drivers/infiniband/core/ib_cm ib_send_cm_lap 0x811d58d9 +drivers/infiniband/core/ib_cm ib_send_cm_mra 0x9141d6ef +drivers/infiniband/core/ib_cm ib_send_cm_rej 0x174c4d6c +drivers/infiniband/core/ib_cm ib_send_cm_rep 0x4635e434 +drivers/infiniband/core/ib_cm ib_send_cm_req 0x159d0e4b +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0xa39a1b40 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0x3153cf4b +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0xf6775521 +drivers/infiniband/core/ib_core ib_alloc_device 0x72c03dae +drivers/infiniband/core/ib_core ib_alloc_fmr 0xc9d1f658 +drivers/infiniband/core/ib_core ib_alloc_mw 0x1cbc77e4 +drivers/infiniband/core/ib_core ib_alloc_pd 0xd8e46768 +drivers/infiniband/core/ib_core ib_attach_mcast 0x1ef2b311 +drivers/infiniband/core/ib_core ib_create_ah 0x6c5540c7 +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0xcbca2e16 +drivers/infiniband/core/ib_core ib_create_cq 0x94ba3022 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0x782466a6 +drivers/infiniband/core/ib_core ib_create_qp 0x1cab03cc +drivers/infiniband/core/ib_core ib_create_srq 0xca57d573 +drivers/infiniband/core/ib_core ib_dealloc_device 0x6e416ad5 +drivers/infiniband/core/ib_core ib_dealloc_fmr 0xce356466 +drivers/infiniband/core/ib_core ib_dealloc_mw 0x617e7e70 +drivers/infiniband/core/ib_core ib_dealloc_pd 0x22425a97 +drivers/infiniband/core/ib_core ib_dereg_mr 0x85a04c45 +drivers/infiniband/core/ib_core ib_destroy_ah 0xf70d03e6 +drivers/infiniband/core/ib_core ib_destroy_cq 0xa26f3fcf +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x5dd58902 +drivers/infiniband/core/ib_core ib_destroy_qp 0x887e8bd5 +drivers/infiniband/core/ib_core ib_destroy_srq 0xb93e19bb +drivers/infiniband/core/ib_core ib_detach_mcast 0xa6d21f4a +drivers/infiniband/core/ib_core ib_dispatch_event 0x4cb6dd67 +drivers/infiniband/core/ib_core ib_find_cached_gid 0x78177e10 +drivers/infiniband/core/ib_core ib_find_cached_pkey 0x55c23ab8 +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0x6b6f7cce +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0x57bdb827 +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0x504454f7 +drivers/infiniband/core/ib_core ib_get_cached_gid 0x6c66e4ed +drivers/infiniband/core/ib_core ib_get_cached_pkey 0x469d4610 +drivers/infiniband/core/ib_core ib_get_client_data 0xf4f9196d +drivers/infiniband/core/ib_core ib_get_dma_mr 0xf27ef671 +drivers/infiniband/core/ib_core ib_modify_ah 0x4c878d93 +drivers/infiniband/core/ib_core ib_modify_device 0xe5690294 +drivers/infiniband/core/ib_core ib_modify_port 0xe3026854 +drivers/infiniband/core/ib_core ib_modify_qp 0x86449992 +drivers/infiniband/core/ib_core ib_modify_srq 0xf5ccdf72 +drivers/infiniband/core/ib_core ib_pack 0x520b2638 +drivers/infiniband/core/ib_core ib_query_ah 0x41108731 +drivers/infiniband/core/ib_core ib_query_device 0x8eeecda5 +drivers/infiniband/core/ib_core ib_query_gid 0xc2796ec2 +drivers/infiniband/core/ib_core ib_query_mr 0x21852a87 +drivers/infiniband/core/ib_core ib_query_pkey 0x271df438 +drivers/infiniband/core/ib_core ib_query_port 0x2d49b6b6 +drivers/infiniband/core/ib_core ib_query_qp 0xf7ab4d38 +drivers/infiniband/core/ib_core ib_query_srq 0x3c84b938 +drivers/infiniband/core/ib_core ib_reg_phys_mr 0xc9399940 +drivers/infiniband/core/ib_core ib_register_client 0x68bd8d32 +drivers/infiniband/core/ib_core ib_register_device 0x6e1d9fc7 +drivers/infiniband/core/ib_core ib_register_event_handler 0x46e01c6a +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x0b5c1f40 +drivers/infiniband/core/ib_core ib_resize_cq 0xad596c16 +drivers/infiniband/core/ib_core ib_set_client_data 0x409c89e9 +drivers/infiniband/core/ib_core ib_ud_header_init 0x965c1dae +drivers/infiniband/core/ib_core ib_ud_header_pack 0x8d12f837 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0x11d42382 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xb1a312e1 +drivers/infiniband/core/ib_core ib_unregister_client 0xcd367d8d +drivers/infiniband/core/ib_core ib_unregister_device 0x589f2385 +drivers/infiniband/core/ib_core ib_unregister_event_handler 0x9b8f1bbe +drivers/infiniband/core/ib_mad ib_cancel_mad 0x652d4d6a +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x6a3bbc94 +drivers/infiniband/core/ib_mad ib_create_send_mad 0x80caa91c +drivers/infiniband/core/ib_mad ib_free_recv_mad 0xd6f8244e +drivers/infiniband/core/ib_mad ib_free_send_mad 0x02f1c2ba +drivers/infiniband/core/ib_mad ib_modify_mad 0x9b8e7f54 +drivers/infiniband/core/ib_mad ib_post_send_mad 0x6c293865 +drivers/infiniband/core/ib_mad ib_process_mad_wc 0x1971f8eb +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x89a043fc +drivers/infiniband/core/ib_mad ib_register_mad_agent 0xa57a572a +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0xe4cc3ecb +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0x68b7b520 +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0x10db85e9 +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0xdcdcf48e +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0xf248c00a +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0xed949127 +drivers/input/gameport/gameport __gameport_register_driver 0x497abe47 +drivers/input/gameport/gameport __gameport_register_port 0x6fb3ba89 +drivers/input/gameport/gameport gameport_close 0xa73be084 +drivers/input/gameport/gameport gameport_cooked_read 0x0ae0c33b +drivers/input/gameport/gameport gameport_open 0x45c37376 +drivers/input/gameport/gameport gameport_rescan 0x540e7473 +drivers/input/gameport/gameport gameport_set_name 0xe97c3027 +drivers/input/gameport/gameport gameport_set_phys 0x1a8763cc +drivers/input/gameport/gameport gameport_start_polling 0x9a6ede47 +drivers/input/gameport/gameport gameport_stop_polling 0xc6d8546d +drivers/input/gameport/gameport gameport_unregister_driver 0x48c9b8c4 +drivers/input/gameport/gameport gameport_unregister_port 0x06edb2cc +drivers/macintosh/windfarm_core wf_clear_overtemp 0xed82a14f +drivers/macintosh/windfarm_core wf_critical_overtemp 0x94765fac +drivers/macintosh/windfarm_core wf_find_control 0xd3d44d66 +drivers/macintosh/windfarm_core wf_find_sensor 0x4b98a42a +drivers/macintosh/windfarm_core wf_get_control 0x2ec2b6e2 +drivers/macintosh/windfarm_core wf_get_sensor 0x9d50bcad +drivers/macintosh/windfarm_core wf_is_overtemp 0xa2f19a49 +drivers/macintosh/windfarm_core wf_put_control 0xa66b036d +drivers/macintosh/windfarm_core wf_put_sensor 0x02ede13a +drivers/macintosh/windfarm_core wf_register_client 0xdb7e8499 +drivers/macintosh/windfarm_core wf_register_control 0xb8812412 +drivers/macintosh/windfarm_core wf_register_sensor 0x48137a63 +drivers/macintosh/windfarm_core wf_set_overtemp 0x75147afa +drivers/macintosh/windfarm_core wf_unregister_client 0xaf15726f +drivers/macintosh/windfarm_core wf_unregister_control 0x3ca0baf2 +drivers/macintosh/windfarm_core wf_unregister_sensor 0x4bddaeb9 +drivers/md/dm-mirror dm_create_dirty_log 0xffa1a0dd +drivers/md/dm-mirror dm_destroy_dirty_log 0x7b108072 +drivers/md/dm-mirror dm_register_dirty_log_type 0xd6b8da31 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x432403fb +drivers/md/dm-mod dm_get_device 0x8b4f1438 +drivers/md/dm-mod dm_get_mapinfo 0x7324240c +drivers/md/dm-mod dm_io_async 0xed42523d +drivers/md/dm-mod dm_io_async_bvec 0xe0549995 +drivers/md/dm-mod dm_io_async_vm 0x5d46da18 +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0xc1d9a249 +drivers/md/dm-mod dm_io_sync_bvec 0xeebfb93a +drivers/md/dm-mod dm_io_sync_vm 0xe492c03c +drivers/md/dm-mod dm_put_device 0xdae560a5 +drivers/md/dm-mod dm_register_target 0x1498745b +drivers/md/dm-mod dm_table_event 0x3f9db2db +drivers/md/dm-mod dm_table_flush_all 0x12faacff +drivers/md/dm-mod dm_table_get 0x0eba72c0 +drivers/md/dm-mod dm_table_get_mode 0x8bd41f55 +drivers/md/dm-mod dm_table_get_size 0x7a3f2233 +drivers/md/dm-mod dm_table_put 0x815f43dd +drivers/md/dm-mod dm_table_unplug_all 0x13a2fa8a +drivers/md/dm-mod dm_unregister_target 0x4bde2f85 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0xa906d818 +drivers/md/dm-mod kcopyd_client_create 0x14739539 +drivers/md/dm-mod kcopyd_client_destroy 0xd0ab6d9e +drivers/md/dm-mod kcopyd_copy 0x6950599d +drivers/md/dm-multipath dm_pg_init_complete 0xc188f8a0 +drivers/md/dm-multipath dm_register_hw_handler 0x2e2dd17a +drivers/md/dm-multipath dm_register_path_selector 0x460d25c4 +drivers/md/dm-multipath dm_scsi_err_handler 0x955cd9d8 +drivers/md/dm-multipath dm_unregister_hw_handler 0xd0004650 +drivers/md/dm-multipath dm_unregister_path_selector 0x667c52c0 +drivers/md/md-mod bitmap_close_sync 0x7be8977f +drivers/md/md-mod bitmap_daemon_work 0x85e6bf3f +drivers/md/md-mod bitmap_end_sync 0x47e615e2 +drivers/md/md-mod bitmap_endwrite 0xb0116f3b +drivers/md/md-mod bitmap_start_sync 0x93fc0d18 +drivers/md/md-mod bitmap_startwrite 0x96131c0f +drivers/md/md-mod bitmap_unplug 0x224522de +drivers/md/md-mod md_check_recovery 0x604bb7ff +drivers/md/md-mod md_done_sync 0x4457f5a5 +drivers/md/md-mod md_error 0x4cd2930e +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x4b43040e +drivers/md/md-mod md_unregister_thread 0x5096be2c +drivers/md/md-mod md_wakeup_thread 0x66b96c99 +drivers/md/md-mod md_write_end 0x2a040fa7 +drivers/md/md-mod md_write_start 0x9defb6fb +drivers/md/md-mod register_md_personality 0x28e2a0ef +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x4740e7a3 +drivers/media/common/ir-common ir_codes_hauppauge_new 0x902a3cd2 +drivers/media/common/ir-common ir_codes_pinnacle 0xd3a0f048 +drivers/media/common/ir-common ir_codes_pixelview 0xfa177653 +drivers/media/common/ir-common ir_codes_rc5_tv 0xd9c7f010 +drivers/media/common/ir-common ir_codes_winfast 0x89cc1189 +drivers/media/common/ir-common ir_decode_biphase 0x43c89ef4 +drivers/media/common/ir-common ir_decode_pulsedistance 0x2456e513 +drivers/media/common/ir-common ir_dump_samples 0x6d6511e7 +drivers/media/common/ir-common ir_extract_bits 0x1cb148f5 +drivers/media/common/ir-common ir_input_init 0xbc034a5a +drivers/media/common/ir-common ir_input_keydown 0x92a55a3a +drivers/media/common/ir-common ir_input_nokey 0xb02c0963 +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x0f0fb48c +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0xe3346700 +drivers/media/common/saa7146 saa7146_i2c_transfer 0xacb8e982 +drivers/media/common/saa7146 saa7146_pgtable_alloc 0xd3a32a0a +drivers/media/common/saa7146 saa7146_pgtable_build_single 0x9a785b55 +drivers/media/common/saa7146 saa7146_pgtable_free 0x01f09459 +drivers/media/common/saa7146 saa7146_register_extension 0xcd35cc04 +drivers/media/common/saa7146 saa7146_setgpio 0xff49c0e5 +drivers/media/common/saa7146 saa7146_unregister_extension 0x32b8658f +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0x86cac722 +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0xbc6e6ae6 +drivers/media/common/saa7146_vv saa7146_register_device 0x63651264 +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0xd524c5c1 +drivers/media/common/saa7146_vv saa7146_start_preview 0x3e4a5be5 +drivers/media/common/saa7146_vv saa7146_stop_preview 0x404e3b03 +drivers/media/common/saa7146_vv saa7146_unregister_device 0xa949965b +drivers/media/common/saa7146_vv saa7146_vv_init 0x53759cf5 +drivers/media/common/saa7146_vv saa7146_vv_release 0x017492ae +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0x8f28cb6c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0x112d565d +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0x0c3398d8 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0xaaccd070 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0xbf3f991e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0xd11897ba +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0x65ef5e7f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0xeb76d014 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0xb6af8e41 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0xcd78098d +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0x5118765a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0x2a767588 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0x0239ed95 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0x06cf2948 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0xc8055efd +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0xb42b537b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0xb099d66e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0x3a836588 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0x68804e27 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0xe43f05fc +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0xe6233b23 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0x02afa7e7 +drivers/media/dvb/bt8xx/bt878 bt878 0x0d4ad986 +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0xd5846454 +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0x9297b89e +drivers/media/dvb/bt8xx/bt878 bt878_stop 0x627da1c6 +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0x95464305 +drivers/media/dvb/bt8xx/dst dst_check_sum 0xe94b8c9c +drivers/media/dvb/bt8xx/dst dst_comm_init 0x4e43848b +drivers/media/dvb/bt8xx/dst dst_command 0x4faa16cd +drivers/media/dvb/bt8xx/dst dst_error_bailout 0x719d425d +drivers/media/dvb/bt8xx/dst dst_error_recovery 0x7a093a72 +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0xd4507cbe +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0xb0fd771d +drivers/media/dvb/bt8xx/dst dst_pio_disable 0x108af279 +drivers/media/dvb/bt8xx/dst dst_pio_enable 0x28956573 +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0x01887a21 +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0xe6eb08d2 +drivers/media/dvb/bt8xx/dst rdc_reset_state 0xb6251bf4 +drivers/media/dvb/bt8xx/dst read_dst 0x0e0d2487 +drivers/media/dvb/bt8xx/dst write_dst 0xea90a413 +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0x6bd81798 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0x1704e4aa +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0xb3886665 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0x0b0990ab +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0xe5a9f6a2 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0x026faa76 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0xb444183d +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0x89d1b7d4 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0xe0a738dc +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0x95d4ac5b +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0xfa170738 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0xdc0f268e +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0x145ccaff +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x80e3832d +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x36c8ea1f +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0x13a7aa03 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0xecfd4c17 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0x8d345bb4 +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0x15a20529 +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0x68d1b4b6 +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0xaf238ca8 +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0x50c31e92 +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0x33eaa233 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0x77ed7134 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0x8e964c42 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0xb56989a3 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0x1a271826 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x97f27bbf +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0x77762220 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0xba98e261 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0x18afc019 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0xe891dadc +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0xf8f45459 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0xb4133c94 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0x4f7e5d2c +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0x13e716b4 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0x6282ba3d +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0x8471c517 +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0x8b49a23f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0x1e60ebcf +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0x69022a71 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0xfa752678 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0xad5e0ca4 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0x0a172dba +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0x49906eea +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0x4147e407 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0x5aff2c28 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0x2033ac29 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0x1b52f00d +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0x8fdd2b1a +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0x7075688b +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0x59079c0b +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0x120f0298 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0xcb89cced +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0x24d29e25 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0xd4d3dddc +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0x0d186495 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0xd8eb90b9 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0x366378ff +drivers/media/dvb/frontends/at76c651 at76c651_attach 0x55cb3834 +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0x25b55bf4 +drivers/media/dvb/frontends/cx22700 cx22700_attach 0x7bf61c4b +drivers/media/dvb/frontends/cx22702 cx22702_attach 0x6a4557a2 +drivers/media/dvb/frontends/cx24110 cx24110_attach 0x994ecdfa +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0xd19c3911 +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0x9867ae54 +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0xe762d459 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x05f13eee +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0xd9d62d05 +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0x615517f2 +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0x1ffad492 +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x02689b7f +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0x5b259391 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x7a0ed9bb +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0xbf98157e +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xd15aca20 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xfdd5e650 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x2a4f5718 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xc95be182 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x708f579e +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0xe39c77c8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0x12284643 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0xf1d4150d +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0xd5d22e56 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0xccc91f17 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xaddc7276 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x96cce305 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xcbbd68de +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x13856c44 +drivers/media/dvb/frontends/l64781 l64781_attach 0x0dc90b4a +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0xe1bf1252 +drivers/media/dvb/frontends/mt312 mt312_attach 0xed67eca0 +drivers/media/dvb/frontends/mt312 vp310_attach 0x2e8e24cc +drivers/media/dvb/frontends/mt352 mt352_attach 0x07361859 +drivers/media/dvb/frontends/mt352 mt352_write 0xe3700cc8 +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0x0a386892 +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x601a6b4b +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0x6b380235 +drivers/media/dvb/frontends/or51132 or51132_attach 0x512a17c1 +drivers/media/dvb/frontends/or51211 or51211_attach 0x17a78162 +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0x26e863b3 +drivers/media/dvb/frontends/sp8870 sp8870_attach 0xc0182cfc +drivers/media/dvb/frontends/sp887x sp887x_attach 0x67f06dea +drivers/media/dvb/frontends/stv0297 stv0297_attach 0xfc69692d +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0xbb0a7235 +drivers/media/dvb/frontends/stv0299 stv0299_attach 0x5c75a178 +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0x20338b8c +drivers/media/dvb/frontends/tda10021 tda10021_attach 0xf733defc +drivers/media/dvb/frontends/tda1004x tda10045_attach 0xfe9ea950 +drivers/media/dvb/frontends/tda1004x tda10046_attach 0xb86c19d4 +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0x383cb90f +drivers/media/dvb/frontends/tda8083 tda8083_attach 0x8c2ca662 +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0x1e992458 +drivers/media/dvb/frontends/ves1820 ves1820_attach 0x10073155 +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0xa3392ac0 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0x2012a36f +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0xafb9e115 +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0x8ae44c37 +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0xd87fe4c0 +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0x33ba9eb6 +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0x70727463 +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0x089b512f +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0xf64d3641 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0xdd8a378b +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0x39bd4257 +drivers/media/video/btcx-risc btcx_riscmem_free 0x09515192 +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x0e0f3e97 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0x4ff3fa3a +drivers/media/video/bttv bttv_gpio_bits 0xaff10476 +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0x064d0581 +drivers/media/video/bttv bttv_gpio_read 0x0b8853a2 +drivers/media/video/bttv bttv_gpio_write 0x91f9dfac +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0xad8ea751 +drivers/media/video/bttv bttv_sub_register 0xdb20a4b6 +drivers/media/video/bttv bttv_sub_unregister 0x2643068b +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0x6bc0855d +drivers/media/video/cpia cpia_unregister_camera 0xd2bb48cb +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0xed770d2b +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0xb76443ff +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0x67a4ade2 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0x9c21d813 +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0x96a46cff +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0x55d1e53d +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0xf3eb4b31 +drivers/media/video/cx88/cx8802 cx8802_fini_common 0xebbcbbb7 +drivers/media/video/cx88/cx8802 cx8802_init_common 0x5d4fc7fe +drivers/media/video/cx88/cx8802 cx8802_resume_common 0x50a1c6ec +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0xac09cd16 +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x4e6954bf +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0x768f0f30 +drivers/media/video/cx88/cx88xx cx88_card_list 0x1a50a91d +drivers/media/video/cx88/cx88xx cx88_card_setup 0xb560df8b +drivers/media/video/cx88/cx88xx cx88_core_get 0x7b4a5779 +drivers/media/video/cx88/cx88xx cx88_core_irq 0x190edcca +drivers/media/video/cx88/cx88xx cx88_core_put 0x682dc337 +drivers/media/video/cx88/cx88xx cx88_free_buffer 0x8587c0f3 +drivers/media/video/cx88/cx88xx cx88_get_stereo 0x552c52a9 +drivers/media/video/cx88/cx88xx cx88_i2c_init 0x84a530ef +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0x04cdbc42 +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x777b6d7f +drivers/media/video/cx88/cx88xx cx88_reset 0x75a778a7 +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0x26ec0397 +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0x71cbfca2 +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0x08626d89 +drivers/media/video/cx88/cx88xx cx88_set_scale 0x44229fca +drivers/media/video/cx88/cx88xx cx88_set_stereo 0xedbea36c +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0x72dac753 +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0x4fc75810 +drivers/media/video/cx88/cx88xx cx88_shutdown 0x750814c4 +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0x72fae6a5 +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0xa2025936 +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x9b140fff +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0x73fdbdde +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0x5f827b47 +drivers/media/video/cx88/cx88xx cx88_subids 0x6b626846 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0x892d7216 +drivers/media/video/cx88/cx88xx cx88_wakeup 0xdb0ff113 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0x607cd43a +drivers/media/video/saa7134/saa7134 dmasound_exit 0x2451ac2f +drivers/media/video/saa7134/saa7134 dmasound_init 0x47edde25 +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0x1291d75a +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0x2e0ec385 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0xd0c84563 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0xcd3efbf4 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0x3b87f534 +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0xf1b8fb80 +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0xa092a740 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0x687fd027 +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0x92321843 +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0xaa286812 +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0xa84f2e5d +drivers/media/video/tveeprom tveeprom_read 0x6a0ed329 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0x8425a59e +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x9c7de443 +drivers/media/video/v4l2-common v4l2_prio_check 0x2f639468 +drivers/media/video/v4l2-common v4l2_prio_close 0x95284709 +drivers/media/video/v4l2-common v4l2_prio_init 0xbecd2858 +drivers/media/video/v4l2-common v4l2_prio_max 0x1dcaa0c8 +drivers/media/video/v4l2-common v4l2_prio_open 0x76ba9a9a +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0x33b3b664 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0x381b67b0 +drivers/media/video/video-buf videobuf_dma_init 0x462cee22 +drivers/media/video/video-buf videobuf_dma_init_kernel 0xca7012c2 +drivers/media/video/video-buf videobuf_dma_init_overlay 0x730efe0c +drivers/media/video/video-buf videobuf_dma_init_user 0x1fcd119f +drivers/media/video/video-buf videobuf_dma_pci_map 0x48590f56 +drivers/media/video/video-buf videobuf_dma_pci_sync 0x7c9c3486 +drivers/media/video/video-buf videobuf_dma_pci_unmap 0x5a993c73 +drivers/media/video/video-buf videobuf_dqbuf 0x37d6c869 +drivers/media/video/video-buf videobuf_iolock 0x778e7bb4 +drivers/media/video/video-buf videobuf_mmap_free 0xd4bce7b6 +drivers/media/video/video-buf videobuf_mmap_mapper 0x53749e72 +drivers/media/video/video-buf videobuf_mmap_setup 0xd83d29c5 +drivers/media/video/video-buf videobuf_next_field 0x7b2bc114 +drivers/media/video/video-buf videobuf_poll_stream 0x52515f18 +drivers/media/video/video-buf videobuf_qbuf 0x217ffd94 +drivers/media/video/video-buf videobuf_querybuf 0x07a3427e +drivers/media/video/video-buf videobuf_queue_cancel 0x1f56e59c +drivers/media/video/video-buf videobuf_queue_init 0x14c4540c +drivers/media/video/video-buf videobuf_queue_is_busy 0x63eff166 +drivers/media/video/video-buf videobuf_read_one 0x2ff9bd40 +drivers/media/video/video-buf videobuf_read_start 0xfcc8f6bd +drivers/media/video/video-buf videobuf_read_stop 0xdb724b0a +drivers/media/video/video-buf videobuf_read_stream 0xec95c6aa +drivers/media/video/video-buf videobuf_reqbufs 0xbb434bf0 +drivers/media/video/video-buf videobuf_status 0x120eab0a +drivers/media/video/video-buf videobuf_streamoff 0x5257fda9 +drivers/media/video/video-buf videobuf_streamon 0xde730317 +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0x3c8943fb +drivers/media/video/video-buf videobuf_waiton 0xd352968e +drivers/media/video/video-buf-dvb videobuf_dvb_register 0x9edd5709 +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0x6cf7e801 +drivers/media/video/videodev video_devdata 0x4b15c1a2 +drivers/media/video/videodev video_device_alloc 0xe912204f +drivers/media/video/videodev video_device_release 0xd8edf2fb +drivers/media/video/videodev video_exclusive_open 0xf3b67b0a +drivers/media/video/videodev video_exclusive_release 0x1effe4b1 +drivers/media/video/videodev video_register_device 0xb723fef8 +drivers/media/video/videodev video_unregister_device 0xc5b73f60 +drivers/media/video/videodev video_usercopy 0xa262151e +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0x4d939382 +drivers/message/fusion/mptbase mpt_HardResetHandler 0x15017f66 +drivers/message/fusion/mptbase mpt_add_sge 0x375d8126 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0xe4b12ed6 +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0x07b9726a +drivers/message/fusion/mptbase mpt_attach 0xde39a371 +drivers/message/fusion/mptbase mpt_config 0x181892b7 +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0x6d6bb380 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0x6d2a1053 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x0e0dc878 +drivers/message/fusion/mptbase mpt_findImVolumes 0x994bf533 +drivers/message/fusion/mptbase mpt_free_fw_memory 0x8935cd21 +drivers/message/fusion/mptbase mpt_free_msg_frame 0xdfe429d3 +drivers/message/fusion/mptbase mpt_get_msg_frame 0x784bd59f +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0xca434ef0 +drivers/message/fusion/mptbase mpt_proc_root_dir 0xfb34f383 +drivers/message/fusion/mptbase mpt_put_msg_frame 0x406c3847 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0xac78e04b +drivers/message/fusion/mptbase mpt_register 0x0a0d7173 +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x38d37741 +drivers/message/fusion/mptbase mpt_resume 0x7188b2a7 +drivers/message/fusion/mptbase mpt_send_handshake_request 0xb6b2a519 +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0x7ba3cbc3 +drivers/message/fusion/mptbase mpt_toolbox 0x46dd26f2 +drivers/message/fusion/mptbase mpt_verify_adapter 0x49873b44 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x9681330a +drivers/message/fusion/mptscsih mptscsih_abort 0x2b0306cd +drivers/message/fusion/mptscsih mptscsih_bios_param 0x8331e628 +drivers/message/fusion/mptscsih mptscsih_bus_reset 0x7ef20c15 +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0xcbff10ae +drivers/message/fusion/mptscsih mptscsih_dev_reset 0xd51cbef6 +drivers/message/fusion/mptscsih mptscsih_event_process 0x9b922dc8 +drivers/message/fusion/mptscsih mptscsih_host_reset 0x4ef2623d +drivers/message/fusion/mptscsih mptscsih_info 0x8730efee +drivers/message/fusion/mptscsih mptscsih_io_done 0x6be6e7d4 +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x9c5bc1a8 +drivers/message/fusion/mptscsih mptscsih_proc_info 0x23365795 +drivers/message/fusion/mptscsih mptscsih_qcmd 0x84c54375 +drivers/message/fusion/mptscsih mptscsih_remove 0xbfd02ead +drivers/message/fusion/mptscsih mptscsih_resume 0xc46047dc +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0x4ae704d8 +drivers/message/fusion/mptscsih mptscsih_shutdown 0x968d31bb +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0x702cc104 +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x44d52e37 +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x017714ee +drivers/message/fusion/mptscsih mptscsih_suspend 0x0389c22d +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x5f276bbc +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0x73a75a89 +drivers/message/i2o/i2o_core i2o_device_claim_release 0xd7e7ba9c +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0x579ce127 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x10377182 +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x9bb48db5 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0x1bf2ffc1 +drivers/message/i2o/i2o_core i2o_driver_register 0x79a0bd54 +drivers/message/i2o/i2o_core i2o_driver_unregister 0x0eb467f4 +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0x1ff5d0ca +drivers/message/i2o/i2o_core i2o_exec_lct_get 0x09e90022 +drivers/message/i2o/i2o_core i2o_find_iop 0xeba74400 +drivers/message/i2o/i2o_core i2o_iop_find_device 0x7adda0b3 +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x26c34dbc +drivers/message/i2o/i2o_core i2o_msg_nop 0x15b28290 +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0x7bf12a84 +drivers/message/i2o/i2o_core i2o_parm_field_get 0x7e8d50d8 +drivers/message/i2o/i2o_core i2o_parm_issue 0x3f56c75d +drivers/message/i2o/i2o_core i2o_parm_table_get 0x86aea57f +drivers/message/i2o/i2o_core i2o_status_get 0x7672ff3f +drivers/mmc/mmc_core __mmc_claim_host 0x783f40dd +drivers/mmc/mmc_core mmc_add_host 0x7fa9dcd6 +drivers/mmc/mmc_core mmc_alloc_host 0x1da6cae3 +drivers/mmc/mmc_core mmc_cleanup_queue 0x0a70c0f6 +drivers/mmc/mmc_core mmc_detect_change 0x3e62daaa +drivers/mmc/mmc_core mmc_free_host 0x9e0d6931 +drivers/mmc/mmc_core mmc_init_queue 0x0d49db8c +drivers/mmc/mmc_core mmc_queue_resume 0x28b30040 +drivers/mmc/mmc_core mmc_queue_suspend 0x82b36218 +drivers/mmc/mmc_core mmc_register_driver 0x08b783af +drivers/mmc/mmc_core mmc_release_host 0x7e1dae59 +drivers/mmc/mmc_core mmc_remove_host 0x6cde594a +drivers/mmc/mmc_core mmc_request_done 0xeb8261d8 +drivers/mmc/mmc_core mmc_resume_host 0x5ff62d6d +drivers/mmc/mmc_core mmc_start_request 0x8efa99d7 +drivers/mmc/mmc_core mmc_suspend_host 0x905f1248 +drivers/mmc/mmc_core mmc_unregister_driver 0x7f124f50 +drivers/mmc/mmc_core mmc_wait_for_app_cmd 0x0c9d1346 +drivers/mmc/mmc_core mmc_wait_for_cmd 0x745df9f8 +drivers/mmc/mmc_core mmc_wait_for_req 0x4253b4d4 +drivers/mtd/chips/cfi_util cfi_fixup 0x269fdfe2 +drivers/mtd/chips/cfi_util cfi_read_pri 0x8e6cb8d6 +drivers/mtd/chips/cfi_util cfi_varsize_frob 0x7e9c5eba +drivers/mtd/chips/chipreg do_map_probe 0x69e19cb7 +drivers/mtd/chips/chipreg map_destroy 0x242141cb +drivers/mtd/chips/chipreg register_mtd_chip_driver 0xe10592e6 +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0x94f237ca +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0x2c2efc62 +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0xfddc22f5 +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0x4067a197 +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0x7b8091ba +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0x7c8121d8 +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0x6b339433 +drivers/mtd/mtdconcat mtd_concat_create 0x6bc6aef6 +drivers/mtd/mtdconcat mtd_concat_destroy 0xda64001f +drivers/mtd/mtdcore add_mtd_device 0x6ee1b81a +drivers/mtd/mtdcore default_mtd_readv 0x1276b836 +drivers/mtd/mtdcore default_mtd_writev 0x09285b6f +drivers/mtd/mtdcore del_mtd_device 0xa87d49a8 +drivers/mtd/mtdcore get_mtd_device 0x2324efd6 +drivers/mtd/mtdcore mtd_table 0x800abc06 +drivers/mtd/mtdcore mtd_table_mutex 0xe0beee18 +drivers/mtd/mtdcore put_mtd_device 0xf36b5ed0 +drivers/mtd/mtdcore register_mtd_user 0xa3df4d16 +drivers/mtd/mtdcore unregister_mtd_user 0x636a5d9c +drivers/mtd/mtdpart add_mtd_partitions 0x750bdeba +drivers/mtd/mtdpart del_mtd_partitions 0x0fce08ee +drivers/mtd/mtdpart deregister_mtd_parser 0x0a549920 +drivers/mtd/mtdpart mtd_erase_callback 0x4a18d34c +drivers/mtd/mtdpart parse_mtd_partitions 0xeb6a0f92 +drivers/mtd/mtdpart register_mtd_parser 0x88024547 +drivers/mtd/nand/nand nand_default_bbt 0xce29cae8 +drivers/mtd/nand/nand nand_release 0xdeec642f +drivers/mtd/nand/nand nand_scan 0x32d86405 +drivers/mtd/nand/nand nand_scan_bbt 0xa6625a2c +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0xbcfff8f6 +drivers/mtd/onenand/onenand onenand_release 0x9474d945 +drivers/mtd/onenand/onenand onenand_scan 0xe38dffc3 +drivers/mtd/onenand/onenand onenand_scan_bbt 0x03bfb6eb +drivers/net/8390 NS8390_init 0xd75fd5ca +drivers/net/8390 __alloc_ei_netdev 0x2038a765 +drivers/net/8390 ei_close 0xcf7de08c +drivers/net/8390 ei_interrupt 0xdb4b5bbb +drivers/net/8390 ei_open 0x8d520569 +drivers/net/8390 ei_poll 0x59723007 +drivers/net/arcnet/arcnet alloc_arcdev 0x569da7bb +drivers/net/arcnet/arcnet arc_bcast_proto 0xda1798cb +drivers/net/arcnet/arcnet arc_proto_default 0x85946dc9 +drivers/net/arcnet/arcnet arc_proto_map 0xebf8cd0c +drivers/net/arcnet/arcnet arc_proto_null 0xa9f312f9 +drivers/net/arcnet/arcnet arc_raw_proto 0x3b687a1e +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0x69b4c568 +drivers/net/arcnet/arcnet arcnet_unregister_proto 0xecd72edf +drivers/net/arcnet/com20020 com20020_check 0xea8aca99 +drivers/net/arcnet/com20020 com20020_found 0x8ae91c74 +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0xfbafdb44 +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0x87a2fd2c +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0x158c2ac7 +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0xd777ccb2 +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0x55c89c84 +drivers/net/irda/sir-dev irda_register_dongle 0x0eb0a8e1 +drivers/net/irda/sir-dev irda_unregister_dongle 0x9e161700 +drivers/net/irda/sir-dev sirdev_get_instance 0x7cddcd56 +drivers/net/irda/sir-dev sirdev_put_instance 0x96b476c6 +drivers/net/irda/sir-dev sirdev_raw_read 0x07bfb0d3 +drivers/net/irda/sir-dev sirdev_raw_write 0x0446c0f3 +drivers/net/irda/sir-dev sirdev_receive 0x951486e1 +drivers/net/irda/sir-dev sirdev_set_dongle 0xbe2e6288 +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0xc57eac66 +drivers/net/irda/sir-dev sirdev_write_complete 0x2b346c1f +drivers/net/mii generic_mii_ioctl 0x32c8a56f +drivers/net/mii mii_check_gmii_support 0xfac8673d +drivers/net/mii mii_check_link 0xa48aece4 +drivers/net/mii mii_check_media 0x430d9bb0 +drivers/net/mii mii_ethtool_gset 0x53bbe133 +drivers/net/mii mii_ethtool_sset 0x3b3c327b +drivers/net/mii mii_link_ok 0x53d95326 +drivers/net/mii mii_nway_restart 0x43841325 +drivers/net/phy/libphy genphy_config_advert 0xdcb00f23 +drivers/net/phy/libphy genphy_config_aneg 0x3fbf0904 +drivers/net/phy/libphy genphy_read_status 0x71a131a3 +drivers/net/phy/libphy mdiobus_register 0x32239d8f +drivers/net/phy/libphy mdiobus_unregister 0xd7f85f83 +drivers/net/phy/libphy phy_attach 0xe656061d +drivers/net/phy/libphy phy_connect 0x1874bc93 +drivers/net/phy/libphy phy_detach 0xbb976472 +drivers/net/phy/libphy phy_disable_interrupts 0x0c6097ec +drivers/net/phy/libphy phy_disconnect 0x6460585e +drivers/net/phy/libphy phy_driver_register 0xd0551567 +drivers/net/phy/libphy phy_driver_unregister 0x66fe68bd +drivers/net/phy/libphy phy_enable_interrupts 0xec1074b9 +drivers/net/phy/libphy phy_print_status 0x0cf16bbe +drivers/net/phy/libphy phy_read 0x428c4032 +drivers/net/phy/libphy phy_sanitize_settings 0xc106a30c +drivers/net/phy/libphy phy_start 0xcee80667 +drivers/net/phy/libphy phy_start_aneg 0xaa9e8a2c +drivers/net/phy/libphy phy_start_interrupts 0x19a48559 +drivers/net/phy/libphy phy_stop 0x326b42cc +drivers/net/phy/libphy phy_stop_interrupts 0x8fd84965 +drivers/net/phy/libphy phy_write 0x6c2183a0 +drivers/net/ppp_generic ppp_channel_index 0x59ab0cb7 +drivers/net/ppp_generic ppp_input 0xdfc6aa0e +drivers/net/ppp_generic ppp_input_error 0x201d507e +drivers/net/ppp_generic ppp_output_wakeup 0xfc1b4019 +drivers/net/ppp_generic ppp_register_channel 0xb5dce1c9 +drivers/net/ppp_generic ppp_register_compressor 0xe0069ff8 +drivers/net/ppp_generic ppp_unit_number 0xdf8c4eed +drivers/net/ppp_generic ppp_unregister_channel 0xa33ff62e +drivers/net/ppp_generic ppp_unregister_compressor 0xc26287fe +drivers/net/pppox pppox_unbind_sock 0x3630eb09 +drivers/net/pppox register_pppox_proto 0xeb20ced5 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x6a47fcc2 +drivers/net/slhc slhc_free 0xeb3c59ef +drivers/net/slhc slhc_init 0x86de1d74 +drivers/net/slhc slhc_remember 0x9536b7c2 +drivers/net/slhc slhc_toss 0x3b36a20a +drivers/net/slhc slhc_uncompress 0xa532de34 +drivers/net/sungem_phy mii_phy_probe 0x56e46d93 +drivers/net/tokenring/tms380tr tms380tr_close 0x3566efd4 +drivers/net/tokenring/tms380tr tms380tr_interrupt 0x1e758522 +drivers/net/tokenring/tms380tr tms380tr_open 0x99603e77 +drivers/net/tokenring/tms380tr tms380tr_wait 0xd2328794 +drivers/net/tokenring/tms380tr tmsdev_init 0xeb9703fe +drivers/net/tokenring/tms380tr tmsdev_term 0x4fa57918 +drivers/net/wan/cycx_drv cycx_down 0x66a4c4e6 +drivers/net/wan/cycx_drv cycx_exec 0xfe7cd576 +drivers/net/wan/cycx_drv cycx_intr 0x38da4725 +drivers/net/wan/cycx_drv cycx_peek 0x968458a6 +drivers/net/wan/cycx_drv cycx_poke 0xb6f383de +drivers/net/wan/cycx_drv cycx_setup 0x62be23ea +drivers/net/wan/hdlc alloc_hdlcdev 0x121b221c +drivers/net/wan/hdlc hdlc_close 0x45ae4942 +drivers/net/wan/hdlc hdlc_ioctl 0x9f1a07a8 +drivers/net/wan/hdlc hdlc_open 0xc3b6d4ef +drivers/net/wan/hdlc hdlc_set_carrier 0xd71aa641 +drivers/net/wan/hdlc register_hdlc_device 0x2b4b5d1a +drivers/net/wan/hdlc unregister_hdlc_device 0x2c8a2d6a +drivers/net/wan/syncppp sppp_attach 0xe1549e5a +drivers/net/wan/syncppp sppp_close 0x09425968 +drivers/net/wan/syncppp sppp_detach 0x4e719f8e +drivers/net/wan/syncppp sppp_do_ioctl 0xfd7392eb +drivers/net/wan/syncppp sppp_open 0x06651b3c +drivers/net/wan/syncppp sppp_reopen 0x69d5ddad +drivers/net/wireless/airo init_airo_card 0xab9c6e27 +drivers/net/wireless/airo reset_airo_card 0x5ec2310d +drivers/net/wireless/airo stop_airo_card 0x00428f93 +drivers/net/wireless/atmel atmel_open 0xe569355a +drivers/net/wireless/atmel init_atmel_card 0xc8a31cb4 +drivers/net/wireless/atmel stop_atmel_card 0x53214877 +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0xb2ffc42d +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0xbf36660a +drivers/net/wireless/hostap/hostap hostap_80211_rx 0x92371747 +drivers/net/wireless/hostap/hostap hostap_add_interface 0xcf671751 +drivers/net/wireless/hostap/hostap hostap_add_sta 0x33d7aa84 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0xd647c036 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0xb8c3a28c +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0x3bf2ee97 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0x4fd70fd8 +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0x4a3077f0 +drivers/net/wireless/hostap/hostap hostap_get_porttype 0x56535ea0 +drivers/net/wireless/hostap/hostap hostap_get_stats 0xd29c35a8 +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0x561a382f +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x259266d0 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x45d3b8e3 +drivers/net/wireless/hostap/hostap hostap_info_init 0x584e3ea7 +drivers/net/wireless/hostap/hostap hostap_info_process 0xbc94c24e +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0x9b6a2b64 +drivers/net/wireless/hostap/hostap hostap_init_data 0xfb008280 +drivers/net/wireless/hostap/hostap hostap_init_proc 0xdc7f571a +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0x6d49dc69 +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x0d476093 +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0x7ac4d11e +drivers/net/wireless/hostap/hostap hostap_proc 0xbc680216 +drivers/net/wireless/hostap/hostap hostap_remove_interface 0xd8f13a1e +drivers/net/wireless/hostap/hostap hostap_remove_proc 0xde2b85b9 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0x77d61a83 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0x5545217f +drivers/net/wireless/hostap/hostap hostap_set_encryption 0xb5541fb8 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x40fff20a +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0x5867c4bc +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0x3d6debf1 +drivers/net/wireless/hostap/hostap hostap_set_string 0xfb89081a +drivers/net/wireless/hostap/hostap hostap_set_word 0x3ee6f069 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0x8177ab3f +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x725bdc4d +drivers/net/wireless/hostap/hostap hostap_update_rates 0x8fe7a992 +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x22487663 +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0xad758001 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x9a2c97e9 +drivers/net/wireless/orinoco __orinoco_down 0xd1e8e5e2 +drivers/net/wireless/orinoco __orinoco_up 0xe87fe2d9 +drivers/net/wireless/orinoco alloc_orinocodev 0xea8a1e87 +drivers/net/wireless/orinoco free_orinocodev 0x0633cec9 +drivers/net/wireless/orinoco orinoco_interrupt 0xbead1230 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x4fa8f9aa +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xbb231247 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x70d36c28 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0xff17f605 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x39b170cd +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0xb4584511 +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x9bb64e49 +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0xac78a57b +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0x6b3259e1 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0x3fa9c0c9 +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0xbe73203a +drivers/net/wireless/prism54_softmac/islsm register_islsm 0xb2936dad +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0x9c3b93ca +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0xaa87ec9f +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0x4f0ee0fe +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0x5b393c81 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0xce88d9b2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0xb09d6536 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x2e0827c6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0xf44d1c9c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0x45a1af49 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0xc623eea6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xd0fdbf18 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0xc8bc0bcb +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0xfe1b8efb +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x82b556bf +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0x57bb1728 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0xe004b123 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0x6850ee78 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0xead59620 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x3c909580 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0xffce8535 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0xeac361c3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0x44e22b3a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0xd36d9bae +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x34818fae +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x84b57cdf +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x28e4784a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0xe9fbd2ae +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0xc09b66a5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x45ac532b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0x548c1379 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0xab4591f5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0x98c87001 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0xfc8edc11 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0x5cb743ed +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0x27f090e2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0xe6ef3a06 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x9dae6c19 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0x5b98fbd1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0x7b7daef0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0xa451795d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x8cd9ec48 +drivers/parport/parport parport_announce_port 0x14b6c326 +drivers/parport/parport parport_claim 0x695049fe +drivers/parport/parport parport_claim_or_block 0x0ad20de6 +drivers/parport/parport parport_find_base 0xd9f6eaf8 +drivers/parport/parport parport_find_number 0x6e29e787 +drivers/parport/parport parport_get_port 0x25f801e0 +drivers/parport/parport parport_ieee1284_ecp_read_data 0x898d90fe +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xa836b5c1 +drivers/parport/parport parport_ieee1284_ecp_write_data 0xfbd7132a +drivers/parport/parport parport_ieee1284_epp_read_addr 0x04a1488e +drivers/parport/parport parport_ieee1284_epp_read_data 0x05b6fb9f +drivers/parport/parport parport_ieee1284_epp_write_addr 0x96ba8d1d +drivers/parport/parport parport_ieee1284_epp_write_data 0xc55b2bf6 +drivers/parport/parport parport_ieee1284_interrupt 0xfa472bce +drivers/parport/parport parport_ieee1284_read_byte 0xca1312ac +drivers/parport/parport parport_ieee1284_read_nibble 0x4bef2584 +drivers/parport/parport parport_ieee1284_write_compat 0x53515e71 +drivers/parport/parport parport_negotiate 0x30c484c2 +drivers/parport/parport parport_put_port 0xe9bb6340 +drivers/parport/parport parport_read 0x70cafc4b +drivers/parport/parport parport_register_device 0x5b889d2f +drivers/parport/parport parport_register_driver 0x50240f64 +drivers/parport/parport parport_register_port 0x02713adb +drivers/parport/parport parport_release 0x169a3f9a +drivers/parport/parport parport_remove_port 0x3106ce7a +drivers/parport/parport parport_set_timeout 0x591ec33a +drivers/parport/parport parport_unregister_device 0xaf01a836 +drivers/parport/parport parport_unregister_driver 0x2876876f +drivers/parport/parport parport_wait_event 0x9f1bdb01 +drivers/parport/parport parport_wait_peripheral 0xcb48f226 +drivers/parport/parport parport_write 0xd61372b4 +drivers/parport/parport_pc parport_pc_probe_port 0x3e915483 +drivers/parport/parport_pc parport_pc_unregister_port 0xa1cd2c17 +drivers/pcmcia/pcmcia cs_error 0x73ed971c +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0x2133933d +drivers/pcmcia/pcmcia pcmcia_deregister_client 0xa9d41006 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0x6014fe54 +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0x74d7c34e +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0x2dca3459 +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0x837d9fd2 +drivers/pcmcia/pcmcia pcmcia_get_status 0x415ce3f2 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0x6c421824 +drivers/pcmcia/pcmcia pcmcia_get_window 0x45c19a94 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0xbf50e5b8 +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x0143b142 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0x87368f48 +drivers/pcmcia/pcmcia pcmcia_register_client 0xd77359aa +drivers/pcmcia/pcmcia pcmcia_register_driver 0xdd38938b +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x5fce5298 +drivers/pcmcia/pcmcia pcmcia_release_io 0xe2de2b2b +drivers/pcmcia/pcmcia pcmcia_release_irq 0xbace8989 +drivers/pcmcia/pcmcia pcmcia_release_window 0x711e2013 +drivers/pcmcia/pcmcia pcmcia_request_configuration 0xf5be63d2 +drivers/pcmcia/pcmcia pcmcia_request_io 0xde8d5b11 +drivers/pcmcia/pcmcia pcmcia_request_irq 0xcf621a9f +drivers/pcmcia/pcmcia pcmcia_request_window 0x72cf7864 +drivers/pcmcia/pcmcia pcmcia_reset_card 0x7c96aa70 +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0x74d60a44 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0xb93ce44e +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0x4116fafa +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0xb3df0e66 +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0xe2377be3 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0x40ac6815 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0xab62da71 +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0xfff1c62f +drivers/pcmcia/pcmcia_core pccard_reset_card 0xe0e1b7e3 +drivers/pcmcia/pcmcia_core pccard_static_ops 0x893985e7 +drivers/pcmcia/pcmcia_core pccard_validate_cis 0x13ed2632 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0xa10577e1 +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0x21cea14f +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0xec1ea726 +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0xd1e7b659 +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0xc6638a82 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0xe6066a0b +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0xb0aef4bb +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0x0477e70b +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0xadfe974b +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0x0b956d33 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0x20abf9cf +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0xf7341825 +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x5551a574 +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0x9cba174b +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0x4ef9dbf7 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0x2047e105 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0xd905150a +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0xdb16646a +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x89456000 +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0xb145a36f +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0xf69a543c +drivers/pcmcia/pcmcia_core release_cis_mem 0xd57c5ff8 +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0x81d7d516 +drivers/scsi/libata __sata_phy_reset 0x96cf108e +drivers/scsi/libata ata_altstatus 0xe7f9deca +drivers/scsi/libata ata_bmdma_irq_clear 0xb9590164 +drivers/scsi/libata ata_bmdma_setup 0x86e6aa0b +drivers/scsi/libata ata_bmdma_start 0x79b56379 +drivers/scsi/libata ata_bmdma_status 0x474f1be9 +drivers/scsi/libata ata_bmdma_stop 0x74246d29 +drivers/scsi/libata ata_bus_probe 0xc339883b +drivers/scsi/libata ata_bus_reset 0xc7844546 +drivers/scsi/libata ata_check_status 0x4df22d1d +drivers/scsi/libata ata_dev_classify 0x0531dcb8 +drivers/scsi/libata ata_dev_config 0x2da17173 +drivers/scsi/libata ata_dev_id_string 0x07d45a53 +drivers/scsi/libata ata_device_add 0xa7846cd2 +drivers/scsi/libata ata_device_resume 0x286c635f +drivers/scsi/libata ata_device_shutdown 0x55690aa6 +drivers/scsi/libata ata_device_suspend 0xae3f852c +drivers/scsi/libata ata_eng_timeout 0xc4ebf121 +drivers/scsi/libata ata_exec_command 0x56902846 +drivers/scsi/libata ata_host_intr 0xf4107986 +drivers/scsi/libata ata_host_set_remove 0x967ca134 +drivers/scsi/libata ata_host_stop 0x5f339ebc +drivers/scsi/libata ata_hotplug_plug 0x0fc710d4 +drivers/scsi/libata ata_hotplug_unplug 0xe9433ed2 +drivers/scsi/libata ata_interrupt 0x7da8d116 +drivers/scsi/libata ata_noop_dev_select 0xde5f3a6d +drivers/scsi/libata ata_pci_device_resume 0xaba68b74 +drivers/scsi/libata ata_pci_device_suspend 0xbb5757d0 +drivers/scsi/libata ata_pci_host_stop 0xe548f8fd +drivers/scsi/libata ata_pci_init_native_mode 0x328aebf4 +drivers/scsi/libata ata_pci_init_one 0xf09686f3 +drivers/scsi/libata ata_pci_remove_one 0x01be1219 +drivers/scsi/libata ata_port_disable 0x7dc2131e +drivers/scsi/libata ata_port_probe 0x169a1d98 +drivers/scsi/libata ata_port_start 0xa2d32dab +drivers/scsi/libata ata_port_stop 0x3758eebd +drivers/scsi/libata ata_qc_complete 0x78ce78aa +drivers/scsi/libata ata_qc_issue_prot 0xaa2f58b9 +drivers/scsi/libata ata_qc_prep 0xe11656f5 +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0xdccab0f5 +drivers/scsi/libata ata_scsi_device_shutdown 0x60b4051c +drivers/scsi/libata ata_scsi_device_suspend 0xa4f25d8d +drivers/scsi/libata ata_scsi_error 0x7efe6ea9 +drivers/scsi/libata ata_scsi_ioctl 0xce321b4b +drivers/scsi/libata ata_scsi_queuecmd 0x4968fd14 +drivers/scsi/libata ata_scsi_release 0x10477a48 +drivers/scsi/libata ata_scsi_simulate 0xbdfb88b0 +drivers/scsi/libata ata_scsi_slave_config 0x9e0ceb35 +drivers/scsi/libata ata_sg_init 0xf562621d +drivers/scsi/libata ata_sg_init_one 0xc36b09a6 +drivers/scsi/libata ata_std_bios_param 0x37e05db6 +drivers/scsi/libata ata_std_dev_select 0xcfa7702f +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0x0067df75 +drivers/scsi/libata ata_tf_load 0xa677f634 +drivers/scsi/libata ata_tf_read 0x6e13280f +drivers/scsi/libata ata_tf_to_fis 0x28177a3f +drivers/scsi/libata ata_timing_compute 0x1d29459b +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata pci_test_config_bits 0x88b5f240 +drivers/scsi/libata sata_phy_reset 0x6e8f9d1c +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x617f929b +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0xad703d72 +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0xa80bdb33 +drivers/scsi/qlogicfas408 qlogicfas408_abort 0x02795d57 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0x70024e35 +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0xb6758824 +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0xd5aedc1a +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0xdef21694 +drivers/scsi/qlogicfas408 qlogicfas408_info 0x72f75c53 +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0x9191c57c +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0x1770da31 +drivers/scsi/raid_class raid_class_release 0xca1387ba +drivers/scsi/raid_class raid_component_add 0xec7784d4 +drivers/scsi/sas/sas_class sas_register_ha 0x8a76245b +drivers/scsi/sas/sas_class sas_unregister_ha 0x71b1ae2c +drivers/scsi/scsi_mod __scsi_add_device 0x7a40450c +drivers/scsi/scsi_mod __scsi_device_lookup 0xfa1c289d +drivers/scsi/scsi_mod __scsi_device_lookup_by_target 0x7f2abb3d +drivers/scsi/scsi_mod __scsi_iterate_devices 0x7b40a0ab +drivers/scsi/scsi_mod __scsi_print_command 0xfef96e23 +drivers/scsi/scsi_mod __scsi_print_sense 0x69d38ed9 +drivers/scsi/scsi_mod int_to_scsilun 0xea10212a +drivers/scsi/scsi_mod scsi_add_device 0xcc4dffea +drivers/scsi/scsi_mod scsi_add_host 0x2595f260 +drivers/scsi/scsi_mod scsi_adjust_queue_depth 0x67015ac5 +drivers/scsi/scsi_mod scsi_allocate_request 0xae617024 +drivers/scsi/scsi_mod scsi_bios_ptable 0xc9792727 +drivers/scsi/scsi_mod scsi_block_requests 0x4c39aad2 +drivers/scsi/scsi_mod scsi_block_when_processing_errors 0x68d632eb +drivers/scsi/scsi_mod scsi_bus_type 0x1ace548b +drivers/scsi/scsi_mod scsi_calculate_bounce_limit 0xdb5268f4 +drivers/scsi/scsi_mod scsi_command_normalize_sense 0x7c46b48c +drivers/scsi/scsi_mod scsi_device_cancel 0xcd0f819c +drivers/scsi/scsi_mod scsi_device_get 0xb51d7ac2 +drivers/scsi/scsi_mod scsi_device_lookup 0x8bc49058 +drivers/scsi/scsi_mod scsi_device_lookup_by_target 0x44a401ae +drivers/scsi/scsi_mod scsi_device_put 0x8d77dd5d +drivers/scsi/scsi_mod scsi_device_quiesce 0x81bc6551 +drivers/scsi/scsi_mod scsi_device_resume 0xee54b65a +drivers/scsi/scsi_mod scsi_device_set_state 0x04bb72f3 +drivers/scsi/scsi_mod scsi_device_types 0x6df713c9 +drivers/scsi/scsi_mod scsi_do_req 0x4b6f4d7e +drivers/scsi/scsi_mod scsi_execute 0x5dfbfb5d +drivers/scsi/scsi_mod scsi_execute_req 0x1a4deb8e +drivers/scsi/scsi_mod scsi_extd_sense_format 0x11267875 +drivers/scsi/scsi_mod scsi_finish_command 0x669adfb0 +drivers/scsi/scsi_mod scsi_flush_work 0xb81a75d7 +drivers/scsi/scsi_mod scsi_free_host_dev 0xe7e4f445 +drivers/scsi/scsi_mod scsi_get_command 0x3dfc4455 +drivers/scsi/scsi_mod scsi_get_host_dev 0xe62ee700 +drivers/scsi/scsi_mod scsi_get_sense_info_fld 0x796fc5ce +drivers/scsi/scsi_mod scsi_host_alloc 0xb300f049 +drivers/scsi/scsi_mod scsi_host_get 0xe4f9ee71 +drivers/scsi/scsi_mod scsi_host_lookup 0xa1f0c50a +drivers/scsi/scsi_mod scsi_host_put 0xd7e1dfc5 +drivers/scsi/scsi_mod scsi_host_set_state 0x6589f248 +drivers/scsi/scsi_mod scsi_internal_device_block 0xee97721e +drivers/scsi/scsi_mod scsi_internal_device_unblock 0xe8097b5e +drivers/scsi/scsi_mod scsi_io_completion 0x574c1e9e +drivers/scsi/scsi_mod scsi_ioctl 0xab062a68 +drivers/scsi/scsi_mod scsi_ioctl_send_command 0xa0e06ca0 +drivers/scsi/scsi_mod scsi_is_host_device 0x9e3749c3 +drivers/scsi/scsi_mod scsi_is_sdev_device 0xe0e1612a +drivers/scsi/scsi_mod scsi_is_target_device 0xcfb7abaf +drivers/scsi/scsi_mod scsi_logging_level 0xaf3dd7dc +drivers/scsi/scsi_mod scsi_mode_sense 0x69e09299 +drivers/scsi/scsi_mod scsi_nonblockable_ioctl 0x5aa51790 +drivers/scsi/scsi_mod scsi_normalize_sense 0x0c65e73c +drivers/scsi/scsi_mod scsi_partsize 0x4afe9a77 +drivers/scsi/scsi_mod scsi_print_command 0x8dc653b1 +drivers/scsi/scsi_mod scsi_print_msg 0x67f88938 +drivers/scsi/scsi_mod scsi_print_req_sense 0x4ce5c589 +drivers/scsi/scsi_mod scsi_print_sense 0xf7af8daf +drivers/scsi/scsi_mod scsi_print_sense_hdr 0xca5dbc50 +drivers/scsi/scsi_mod scsi_print_status 0x9cfd56c5 +drivers/scsi/scsi_mod scsi_put_command 0x8df2423f +drivers/scsi/scsi_mod scsi_queue_work 0x7271854f +drivers/scsi/scsi_mod scsi_register 0x1f9d4f76 +drivers/scsi/scsi_mod scsi_register_driver 0xd969938c +drivers/scsi/scsi_mod scsi_register_interface 0xb0388922 +drivers/scsi/scsi_mod scsi_release_request 0x296b0576 +drivers/scsi/scsi_mod scsi_remove_device 0x02f4d35e +drivers/scsi/scsi_mod scsi_remove_host 0xb907b919 +drivers/scsi/scsi_mod scsi_remove_target 0x52afc686 +drivers/scsi/scsi_mod scsi_report_bus_reset 0xad632270 +drivers/scsi/scsi_mod scsi_report_device_reset 0x642ceaec +drivers/scsi/scsi_mod scsi_request_normalize_sense 0xb3efef16 +drivers/scsi/scsi_mod scsi_rescan_device 0x5345209d +drivers/scsi/scsi_mod scsi_reset_provider 0x54199dd2 +drivers/scsi/scsi_mod scsi_scan_host 0x219bb732 +drivers/scsi/scsi_mod scsi_scan_target 0xf26dff5f +drivers/scsi/scsi_mod scsi_sense_desc_find 0x2b0ba2b0 +drivers/scsi/scsi_mod scsi_sense_key_string 0x96cd2b04 +drivers/scsi/scsi_mod scsi_set_medium_removal 0xb1937e49 +drivers/scsi/scsi_mod scsi_setup_blk_pc_cmnd 0x5ec817f3 +drivers/scsi/scsi_mod scsi_target_block 0xe062792f +drivers/scsi/scsi_mod scsi_target_quiesce 0x28e1443b +drivers/scsi/scsi_mod scsi_target_resume 0xa3fbe8c6 +drivers/scsi/scsi_mod scsi_target_unblock 0xc8e9a79d +drivers/scsi/scsi_mod scsi_test_unit_ready 0xf42afd3d +drivers/scsi/scsi_mod scsi_track_queue_full 0x68cd1d2a +drivers/scsi/scsi_mod scsi_unblock_requests 0xc41c5073 +drivers/scsi/scsi_mod scsi_unregister 0xac8e70d7 +drivers/scsi/scsi_mod scsicam_bios_param 0xc0ecf5b7 +drivers/scsi/scsi_mod starget_for_each_device 0xd718df83 +drivers/scsi/scsi_transport_fc fc_attach_transport 0xfb66ab2e +drivers/scsi/scsi_transport_fc fc_release_transport 0x3b2881f4 +drivers/scsi/scsi_transport_fc fc_remote_port_add 0xc65e9553 +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0xd1f0ec6d +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0xf3a5a8e9 +drivers/scsi/scsi_transport_fc fc_remove_host 0x48a5563f +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0xa55234fd +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x3fa4c2dc +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x7cf76da8 +drivers/scsi/scsi_transport_sas sas_attach_transport 0x5443b51f +drivers/scsi/scsi_transport_sas sas_phy_add 0xa3f6986e +drivers/scsi/scsi_transport_sas sas_phy_alloc 0xbcb433f4 +drivers/scsi/scsi_transport_sas sas_phy_delete 0x85de1410 +drivers/scsi/scsi_transport_sas sas_phy_free 0x7199d11f +drivers/scsi/scsi_transport_sas sas_release_transport 0x6d0e9954 +drivers/scsi/scsi_transport_sas sas_remove_host 0x644bf020 +drivers/scsi/scsi_transport_sas sas_rphy_add 0x7658b1ff +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x3c37804c +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x422146af +drivers/scsi/scsi_transport_sas sas_rphy_free 0x8cb28bed +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0x8fbcdcc7 +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0x00c38bff +drivers/scsi/scsi_transport_spi spi_attach_transport 0x5ae00fa1 +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0x69d7e854 +drivers/scsi/scsi_transport_spi spi_dv_device 0x00f73dc7 +drivers/scsi/scsi_transport_spi spi_release_transport 0x076132ef +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0xc03c3bf1 +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0xc89397d5 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0x47fbeab5 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x6a141a08 +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0xaba2244f +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0xcfd60c91 +drivers/serial/8250 serial8250_register_port 0xa9b55424 +drivers/serial/8250 serial8250_resume_port 0xc7208c3a +drivers/serial/8250 serial8250_suspend_port 0xcc248d26 +drivers/serial/8250 serial8250_unregister_port 0xcefcd99a +drivers/serial/8250_pci pciserial_init_ports 0x32fe01e9 +drivers/serial/8250_pci pciserial_remove_ports 0x435f6496 +drivers/serial/8250_pci pciserial_resume_ports 0x62449351 +drivers/serial/8250_pci pciserial_suspend_ports 0x1376ac7b +drivers/serial/serial_core uart_add_one_port 0xc7524d30 +drivers/serial/serial_core uart_get_baud_rate 0xb9dd5583 +drivers/serial/serial_core uart_get_divisor 0xcf33c992 +drivers/serial/serial_core uart_match_port 0x562fdaef +drivers/serial/serial_core uart_register_driver 0x1e705fd3 +drivers/serial/serial_core uart_remove_one_port 0xb95a0ab9 +drivers/serial/serial_core uart_resume_port 0x2b164195 +drivers/serial/serial_core uart_suspend_port 0x0cbdadfd +drivers/serial/serial_core uart_unregister_driver 0x1ca8cc78 +drivers/serial/serial_core uart_update_timeout 0xc474dcf7 +drivers/serial/serial_core uart_write_wakeup 0x6822253a +drivers/telephony/ixj ixj_pcmcia_probe 0x343ff59b +drivers/telephony/phonedev phone_register_device 0x80f37b48 +drivers/telephony/phonedev phone_unregister_device 0x7fa069b1 +drivers/usb/atm/usbatm usbatm_usb_disconnect 0x9dea184b +drivers/usb/atm/usbatm usbatm_usb_probe 0x2ba8ba1c +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x10e80fed +drivers/usb/core/usbcore usb_alloc_dev 0x7b779712 +drivers/usb/core/usbcore usb_alloc_urb 0x14efa9ce +drivers/usb/core/usbcore usb_altnum_to_altsetting 0x6b5366a0 +drivers/usb/core/usbcore usb_buffer_alloc 0xc1b84e2c +drivers/usb/core/usbcore usb_buffer_free 0x4e028605 +drivers/usb/core/usbcore usb_buffer_map_sg 0x86d5d5f5 +drivers/usb/core/usbcore usb_buffer_unmap_sg 0x75641ad2 +drivers/usb/core/usbcore usb_bulk_msg 0xfc35ed08 +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0x0e0c9664 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0xd3a7000e +drivers/usb/core/usbcore usb_claim_bandwidth 0xf6bb9b82 +drivers/usb/core/usbcore usb_clear_halt 0x148ac24c +drivers/usb/core/usbcore usb_control_msg 0x997ec057 +drivers/usb/core/usbcore usb_create_hcd 0x797bb8e5 +drivers/usb/core/usbcore usb_deregister 0xf1e9749b +drivers/usb/core/usbcore usb_deregister_dev 0xc45520a2 +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0x9eec3d26 +drivers/usb/core/usbcore usb_driver_claim_interface 0xde441b39 +drivers/usb/core/usbcore usb_driver_release_interface 0xac9423d7 +drivers/usb/core/usbcore usb_find_device 0xf3708379 +drivers/usb/core/usbcore usb_find_interface 0x581b6f18 +drivers/usb/core/usbcore usb_free_urb 0x03606f9f +drivers/usb/core/usbcore usb_get_current_frame_number 0x3dcc1e8a +drivers/usb/core/usbcore usb_get_descriptor 0x6a8aff20 +drivers/usb/core/usbcore usb_get_dev 0x93cb29c9 +drivers/usb/core/usbcore usb_get_intf 0x986cb4bb +drivers/usb/core/usbcore usb_get_status 0x604a40bd +drivers/usb/core/usbcore usb_get_string 0x2dcf9fe9 +drivers/usb/core/usbcore usb_get_urb 0xca3791c0 +drivers/usb/core/usbcore usb_hc_died 0xc8011264 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0xf74c52f0 +drivers/usb/core/usbcore usb_hcd_pci_probe 0x15e3444a +drivers/usb/core/usbcore usb_hcd_pci_remove 0xaaa678cc +drivers/usb/core/usbcore usb_hcd_pci_resume 0x2d6c4b11 +drivers/usb/core/usbcore usb_hcd_pci_suspend 0xed4a472b +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0x5fd9dc1f +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0xfcea480f +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0xab4727a7 +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0x120bc679 +drivers/usb/core/usbcore usb_ifnum_to_if 0x86e8c9b4 +drivers/usb/core/usbcore usb_init_urb 0xd20a054b +drivers/usb/core/usbcore usb_kill_urb 0xcaa1826b +drivers/usb/core/usbcore usb_lock_device 0x0bdb12c6 +drivers/usb/core/usbcore usb_lock_device_for_reset 0x5d45745e +drivers/usb/core/usbcore usb_match_id 0xa473a986 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0xb99217f5 +drivers/usb/core/usbcore usb_put_dev 0x43fb0b2d +drivers/usb/core/usbcore usb_put_hcd 0x4a92fc49 +drivers/usb/core/usbcore usb_put_intf 0xee27b251 +drivers/usb/core/usbcore usb_register 0x8b8d7517 +drivers/usb/core/usbcore usb_register_dev 0x86057a92 +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0xbc73c1c6 +drivers/usb/core/usbcore usb_remove_hcd 0x41dbfec9 +drivers/usb/core/usbcore usb_reset_configuration 0xebddcea8 +drivers/usb/core/usbcore usb_reset_device 0x6fba2e04 +drivers/usb/core/usbcore usb_set_device_state 0x57626182 +drivers/usb/core/usbcore usb_set_interface 0x866ee1d8 +drivers/usb/core/usbcore usb_sg_cancel 0x3b3a31d7 +drivers/usb/core/usbcore usb_sg_init 0xe3491965 +drivers/usb/core/usbcore usb_sg_wait 0xa1abd680 +drivers/usb/core/usbcore usb_string 0x15849e47 +drivers/usb/core/usbcore usb_submit_urb 0x656d6368 +drivers/usb/core/usbcore usb_trylock_device 0x91dd6fcd +drivers/usb/core/usbcore usb_unlink_urb 0xe99b5f3e +drivers/usb/core/usbcore usb_unlock_device 0x6772914f +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/gadget/net2280 net2280_set_fifo_mode 0x0890b39f +drivers/usb/gadget/net2280 usb_gadget_register_driver 0xb30d77f5 +drivers/usb/gadget/net2280 usb_gadget_unregister_driver 0xbba53b2b +drivers/usb/host/sl811-hcd sl811h_driver 0x0b394f3f +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0xad21531e +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x4b44a715 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0x60645157 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0x494115e8 +drivers/usb/media/usbvideo RingQueue_Dequeue 0x54ded406 +drivers/usb/media/usbvideo RingQueue_Enqueue 0x5293ede2 +drivers/usb/media/usbvideo RingQueue_Flush 0x9778abda +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0xdf605c59 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0x37c6b7f3 +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x41371069 +drivers/usb/media/usbvideo usbvideo_Deregister 0x1a947c7b +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0xe3fde2bb +drivers/usb/media/usbvideo usbvideo_TestPattern 0x47396043 +drivers/usb/media/usbvideo usbvideo_register 0x50224267 +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0x40a864cd +drivers/usb/media/w9968cf w9968cf_vppmod_register 0xd99acd2e +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0xd911576e +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0xd315ff06 +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0x6f8ba431 +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0x963eab5b +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0x66a91d64 +drivers/usb/net/usbnet usbnet_defer_kevent 0x209a40c8 +drivers/usb/net/usbnet usbnet_disconnect 0xfe81cb5e +drivers/usb/net/usbnet usbnet_get_drvinfo 0x6f432096 +drivers/usb/net/usbnet usbnet_get_endpoints 0xf24f68f9 +drivers/usb/net/usbnet usbnet_get_msglevel 0xdb4dfda0 +drivers/usb/net/usbnet usbnet_probe 0x701d98e5 +drivers/usb/net/usbnet usbnet_resume 0x134cde7c +drivers/usb/net/usbnet usbnet_set_msglevel 0x5d33fb53 +drivers/usb/net/usbnet usbnet_skb_return 0xb64ca8ac +drivers/usb/net/usbnet usbnet_suspend 0x68b9f1aa +drivers/usb/serial/usbserial ezusb_set_reset 0x73878db2 +drivers/usb/serial/usbserial ezusb_writememory 0x339f2aab +drivers/usb/serial/usbserial usb_serial_deregister 0x9b4e1d58 +drivers/usb/serial/usbserial usb_serial_disconnect 0xd67580f1 +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x30d8f2f2 +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0x953ccdd8 +drivers/usb/serial/usbserial usb_serial_register 0x2c5df7e7 +drivers/video/backlight/backlight backlight_device_register 0x10d66230 +drivers/video/backlight/backlight backlight_device_unregister 0x6fd05915 +drivers/video/backlight/lcd lcd_device_register 0x5803b114 +drivers/video/backlight/lcd lcd_device_unregister 0xfcdfa979 +drivers/video/cyber2000fb cyber2000fb_attach 0xc7ca2d8d +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0xd846243d +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0xd3e190a0 +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0x1cb16764 +drivers/video/sis/sisfb sis_free 0x454a3cf0 +drivers/video/sis/sisfb sis_free_new 0x1c169f64 +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0x7f502485 +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0xd6d811ae +drivers/w1/ds9490r ds_put_device 0x2fb2a7a9 +drivers/w1/ds9490r ds_read_bit 0x0fbd160a +drivers/w1/ds9490r ds_read_block 0x837b8bc7 +drivers/w1/ds9490r ds_read_byte 0x35dcdae0 +drivers/w1/ds9490r ds_reset 0x6ba336e8 +drivers/w1/ds9490r ds_touch_bit 0xe3c797e3 +drivers/w1/ds9490r ds_write_bit 0xe23f3552 +drivers/w1/ds9490r ds_write_block 0xe3ab43d0 +drivers/w1/ds9490r ds_write_byte 0x9fe24f0c +drivers/w1/wire w1_add_master_device 0xd703c624 +drivers/w1/wire w1_calc_crc8 0x7c2f2afb +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xb0c86d52 +drivers/w1/wire w1_family_put 0x45181a35 +drivers/w1/wire w1_family_registered 0x345f469c +drivers/w1/wire w1_read_8 0x9525fc41 +drivers/w1/wire w1_read_block 0x9a223988 +drivers/w1/wire w1_register_family 0xadeb1de9 +drivers/w1/wire w1_remove_master_device 0x31a7a05c +drivers/w1/wire w1_reset_bus 0x4e71e06f +drivers/w1/wire w1_reset_select_slave 0x858555c5 +drivers/w1/wire w1_search_devices 0x5d89217d +drivers/w1/wire w1_touch_bit 0x22bbee06 +drivers/w1/wire w1_unregister_family 0x2616cdb9 +drivers/w1/wire w1_write_8 0xf9bb1509 +drivers/w1/wire w1_write_block 0xffab2d12 +fs/configfs/configfs config_group_init 0xf6f2a4ca +fs/configfs/configfs config_group_init_type_name 0xbb01afd3 +fs/configfs/configfs config_item_get 0x5b96309f +fs/configfs/configfs config_item_init 0xf56dd45c +fs/configfs/configfs config_item_init_type_name 0x0759ba8b +fs/configfs/configfs config_item_put 0x0301ba44 +fs/configfs/configfs config_item_set_name 0x9d43974b +fs/configfs/configfs configfs_register_subsystem 0xec3b9c85 +fs/configfs/configfs configfs_unregister_subsystem 0xd99511fa +fs/exportfs/exportfs export_op_default 0x977d9d53 +fs/exportfs/exportfs find_exported_dentry 0xbaed5c2f +fs/fat/fat fat_add_entries 0xb4525408 +fs/fat/fat fat_alloc_new_dir 0xbf05a548 +fs/fat/fat fat_attach 0x370d71fd +fs/fat/fat fat_build_inode 0xe694f786 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0x6350d562 +fs/fat/fat fat_dir_empty 0xfc4c3fbb +fs/fat/fat fat_fill_super 0x70b2ba5c +fs/fat/fat fat_free_clusters 0xaf856f4e +fs/fat/fat fat_fs_panic 0x98f0e57a +fs/fat/fat fat_get_dotdot_entry 0x2dda8587 +fs/fat/fat fat_notify_change 0xda6f5a9b +fs/fat/fat fat_remove_entries 0x4518a782 +fs/fat/fat fat_scan 0x636457a8 +fs/fat/fat fat_search_long 0xc8444fc4 +fs/fat/fat fat_sync_bhs 0x774f2064 +fs/fat/fat fat_sync_inode 0xc7ed5648 +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0xd6b49e90 +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0xb54051ca +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0x7c16080a +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0x42ed1eb0 +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0xe67a611f +fs/jbd/jbd journal_abort 0x322cf544 +fs/jbd/jbd journal_ack_err 0x461e4ec8 +fs/jbd/jbd journal_blocks_per_page 0x033d988b +fs/jbd/jbd journal_check_available_features 0x2cba37a4 +fs/jbd/jbd journal_check_used_features 0x97f36e32 +fs/jbd/jbd journal_clear_err 0x4b3d808f +fs/jbd/jbd journal_create 0xcc8d257c +fs/jbd/jbd journal_destroy 0xa1d1cae4 +fs/jbd/jbd journal_dirty_data 0xf15662ef +fs/jbd/jbd journal_dirty_metadata 0x646dcee2 +fs/jbd/jbd journal_errno 0x739dab29 +fs/jbd/jbd journal_extend 0x6a7baa64 +fs/jbd/jbd journal_flush 0xe0ffa092 +fs/jbd/jbd journal_force_commit 0x2e827bc8 +fs/jbd/jbd journal_force_commit_nested 0xce79e611 +fs/jbd/jbd journal_forget 0x11f66835 +fs/jbd/jbd journal_get_create_access 0x370b329a +fs/jbd/jbd journal_get_undo_access 0xc342e825 +fs/jbd/jbd journal_get_write_access 0xe255126b +fs/jbd/jbd journal_init_dev 0xde6291ff +fs/jbd/jbd journal_init_inode 0x5dae76b1 +fs/jbd/jbd journal_invalidatepage 0xf32f8ac2 +fs/jbd/jbd journal_load 0x5720d8d7 +fs/jbd/jbd journal_lock_updates 0x828f255a +fs/jbd/jbd journal_release_buffer 0x72b3406f +fs/jbd/jbd journal_restart 0x8dc7f1b9 +fs/jbd/jbd journal_revoke 0x62ac518d +fs/jbd/jbd journal_set_features 0xbd11a3e9 +fs/jbd/jbd journal_start 0x3e4d6619 +fs/jbd/jbd journal_start_commit 0x06f22225 +fs/jbd/jbd journal_stop 0x9badba0a +fs/jbd/jbd journal_try_to_free_buffers 0x0a54efe5 +fs/jbd/jbd journal_unlock_updates 0x0a187f1c +fs/jbd/jbd journal_update_format 0x0eb54dd5 +fs/jbd/jbd journal_update_superblock 0x639310a8 +fs/jbd/jbd journal_wipe 0xbff7401b +fs/jbd/jbd log_wait_commit 0xc28ff560 +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0x0fe8c66a +fs/lockd/lockd nlmsvc_ops 0x17e494c4 +fs/nfsd/nfsd nfs4_acl_add_ace 0x1bb3671e +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x687f6251 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0x1cb231d0 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0x1d747ce3 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xbaeb4700 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0x95418705 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0x21fdc3ad +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0x84d47495 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x43bce54e +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0x36418553 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0xa9f5379a +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0x5a09fa05 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0x1442b040 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x5a008112 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0x7defa1ae +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xa82a8645 +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0xd20d2db6 +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0x549c1545 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0x7271291c +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0xbe54f25c +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0x63700556 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0xc8a5b4c2 +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0xed9bbb38 +fs/relayfs/relayfs relay_buf_full 0x680e9959 +fs/relayfs/relayfs relay_close 0x87bf88e2 +fs/relayfs/relayfs relay_flush 0x7093fc48 +fs/relayfs/relayfs relay_open 0x8c9e0bef +fs/relayfs/relayfs relay_reset 0x55ee5342 +fs/relayfs/relayfs relay_subbufs_consumed 0x80b0afaf +fs/relayfs/relayfs relay_switch_subbuf 0xe55be914 +fs/relayfs/relayfs relayfs_create_dir 0xd35755e6 +fs/relayfs/relayfs relayfs_file_operations 0x60614636 +fs/relayfs/relayfs relayfs_remove_dir 0x1d0a5d17 +lib/crc-ccitt crc_ccitt 0x3771b461 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x8ffdb3b8 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x2329b292 +lib/libcrc32c crc32c_le 0x37d0b921 +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0xa126f990 +net/appletalk/appletalk alloc_ltalkdev 0x255d1728 +net/appletalk/appletalk atalk_find_dev_addr 0xf818c9e1 +net/appletalk/appletalk atrtr_get_dev 0x6233a4fd +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0x6470a7b7 +net/ax25/ax25 ax25_findbyuid 0x564d9f14 +net/ax25/ax25 ax25_hard_header 0xdfc680d2 +net/ax25/ax25 ax25_linkfail_register 0x56b1e001 +net/ax25/ax25 ax25_linkfail_release 0xf5b63b5e +net/ax25/ax25 ax25_listen_register 0x2c6bba89 +net/ax25/ax25 ax25_listen_release 0x970fc302 +net/ax25/ax25 ax25_protocol_register 0x3e5448c3 +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0x17dd44d8 +net/ax25/ax25 ax25_send_frame 0x299f8a6c +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0x71b530be +net/bluetooth/bluetooth bt_accept_enqueue 0xb737b59a +net/bluetooth/bluetooth bt_accept_unlink 0xf1836ff7 +net/bluetooth/bluetooth bt_class 0x8d0c7788 +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0xa062f9e8 +net/bluetooth/bluetooth bt_sock_poll 0xc0d7cad4 +net/bluetooth/bluetooth bt_sock_recvmsg 0x7b5eede1 +net/bluetooth/bluetooth bt_sock_register 0x44b437eb +net/bluetooth/bluetooth bt_sock_unlink 0x3ef5e31d +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0xc67e79db +net/bluetooth/bluetooth hci_alloc_dev 0x21ffdd78 +net/bluetooth/bluetooth hci_conn_auth 0x2894cc04 +net/bluetooth/bluetooth hci_conn_change_link_key 0x41f2f0e0 +net/bluetooth/bluetooth hci_conn_encrypt 0xf062c49d +net/bluetooth/bluetooth hci_conn_switch_role 0x35b96b27 +net/bluetooth/bluetooth hci_connect 0xa3aef485 +net/bluetooth/bluetooth hci_free_dev 0x94cbdee8 +net/bluetooth/bluetooth hci_get_route 0x6a627e05 +net/bluetooth/bluetooth hci_register_cb 0x5cca1fab +net/bluetooth/bluetooth hci_register_dev 0xb1b07d75 +net/bluetooth/bluetooth hci_register_proto 0xbca83604 +net/bluetooth/bluetooth hci_resume_dev 0x79af8b88 +net/bluetooth/bluetooth hci_send_acl 0x237c76b5 +net/bluetooth/bluetooth hci_send_sco 0xcccdcd22 +net/bluetooth/bluetooth hci_suspend_dev 0x75e73fcf +net/bluetooth/bluetooth hci_unregister_cb 0xf7f4374e +net/bluetooth/bluetooth hci_unregister_dev 0x73c28f0c +net/bluetooth/bluetooth hci_unregister_proto 0x78227ed6 +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0xac2be6b2 +net/bridge/netfilter/ebtables ebt_do_table 0x07b206fd +net/bridge/netfilter/ebtables ebt_register_match 0x0c6c5c75 +net/bridge/netfilter/ebtables ebt_register_table 0x856b604e +net/bridge/netfilter/ebtables ebt_register_target 0x13873aa4 +net/bridge/netfilter/ebtables ebt_register_watcher 0x08fd3783 +net/bridge/netfilter/ebtables ebt_unregister_match 0x451edfbc +net/bridge/netfilter/ebtables ebt_unregister_table 0xa895f0ac +net/bridge/netfilter/ebtables ebt_unregister_target 0x07cfac2f +net/bridge/netfilter/ebtables ebt_unregister_watcher 0xfcdf544a +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x3a18e70d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0x71ecc67f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x7824d7b3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xded46fa7 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0x493060a8 +net/dccp/dccp ccid_init 0x13df74f2 +net/dccp/dccp ccid_register 0x34a10655 +net/dccp/dccp ccid_unregister 0xe8dd1f13 +net/dccp/dccp dccp_hashinfo 0xb485e3f2 +net/dccp/dccp dccp_insert_option 0x175f0ac3 +net/dccp/dccp dccp_insert_option_elapsed_time 0x0086511e +net/dccp/dccp dccp_insert_option_timestamp 0x517fef41 +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0x819f80ad +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0x86db99ba +net/ieee80211/ieee80211 alloc_ieee80211 0xb421ac40 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0xd615a88c +net/ieee80211/ieee80211 ieee80211_channel_to_index 0x7d73014d +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0x1c208005 +net/ieee80211/ieee80211 ieee80211_get_channel 0x8558f393 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0x5940043f +net/ieee80211/ieee80211 ieee80211_get_geo 0x35b9bdd7 +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0xd150947b +net/ieee80211/ieee80211 ieee80211_rx 0xa790abbc +net/ieee80211/ieee80211 ieee80211_rx_mgt 0x07800332 +net/ieee80211/ieee80211 ieee80211_set_geo 0x8f979efa +net/ieee80211/ieee80211 ieee80211_tx_frame 0x74d10c95 +net/ieee80211/ieee80211 ieee80211_txb_free 0xf478e2b3 +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0xce2eef08 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0xe948474d +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x7a4d2654 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0x588d290e +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0x4f917829 +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x91e155b5 +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x16646fdb +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0x57699cbb +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0xdf59ca65 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0x331a85b4 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0xd369828e +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0x65e025ab +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x928886fa +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0x494932df +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0x83959011 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0xfdcc9cd4 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0x6dc5ddd9 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0x5ef5b657 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0x665df8a0 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0x8928864d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0x7e435d6d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0x96f7542d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0xc62c022f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0x19f257d8 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x666885e9 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x7a53aa03 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x6bc50105 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x8ac4ade6 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x551af811 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0xe7d712c8 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x6a44edd1 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0xa87d96b7 +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0xbe814fe7 +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0xbb1d6551 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0x42aac1cf +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0x0744f129 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0x22c61211 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0xe94ae661 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0x518b8470 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0x885b8a1f +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0xc958a524 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0xacaf84c8 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0x70caccf3 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x84fae3cc +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x9e2ea27c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0xfb277ef2 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x77e1dd0f +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0xcc6f52c6 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0xbf455c8e +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0x5ee71960 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0xc5d93bbe +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0x28d52aa7 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x6d9d8697 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x0e908cd5 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0xafa26693 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0x183d4f42 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0xbcd267fa +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x08e9535d +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0x82913fe7 +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0x6670db98 +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0xd2052cf2 +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0x02125895 +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0x2022460b +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0x44be1a41 +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0x40dfc9ba +net/ipv4/ipvs/ip_vs register_ip_vs_app 0xe7b712b0 +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0xa2a0c81b +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0x11778cdd +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0xbf792e93 +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0xcea5f7c5 +net/ipv4/netfilter/arp_tables arpt_do_table 0xf7fd6aae +net/ipv4/netfilter/arp_tables arpt_register_table 0x3c0e3396 +net/ipv4/netfilter/arp_tables arpt_register_target 0x050e8859 +net/ipv4/netfilter/arp_tables arpt_unregister_table 0xdd5cd39c +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x903d7470 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x5ee69528 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x805a4fd4 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0x86a6f4ef +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x1b4e7442 +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0x829d7251 +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0x7cca1604 +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x55a03e3a +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0xad810704 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0x22fc433e +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0x0537e700 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0x89520261 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x8c9179e0 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0x86e41691 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0xd9b4d8f5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x0fed8a0a +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0xa705ca08 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0x66dc6b45 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0xc8124ad9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0xf80dbcab +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0x1bd5da57 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0xc7daaf72 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0xb726381e +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0xea6576ff +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x8d912a6c +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0x688b3b27 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0x6dc72396 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0xdb599e9d +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0xb97704cf +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0xd62bf0d0 +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0xdb351416 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x501b60af +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0x2e28187b +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0xf79e0110 +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0x4166cb33 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x50aba819 +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x439ccd6d +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0xe177c0f3 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0x4bec3cd6 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0x6c9df3c3 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0x0b0f6dc1 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0x016989ca +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0x80b0c0d3 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x5483f7d4 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0x017b3b4e +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0xc1e47729 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0xaa7b95bd +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0x00b6fe2b +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0x0d30669e +net/ipv4/netfilter/ip_nat ip_nat_packet 0x80ce650b +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x459efde8 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0xb17658f3 +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x7fd01e99 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0x30e1d86a +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x11f21f77 +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0x2d29cc5d +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0x0985787c +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x357a2d97 +net/ipv4/netfilter/ip_tables ipt_do_table 0x8ec9d667 +net/ipv4/netfilter/ip_tables ipt_find_target 0x9cd9de2a +net/ipv4/netfilter/ip_tables ipt_register_match 0xfde2092a +net/ipv4/netfilter/ip_tables ipt_register_table 0x1f40ae9c +net/ipv4/netfilter/ip_tables ipt_register_target 0x989d7ebc +net/ipv4/netfilter/ip_tables ipt_unregister_match 0xc0043122 +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x23a3ab87 +net/ipv4/netfilter/ip_tables ipt_unregister_target 0xafc39dda +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0x8b186543 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0x9e094902 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0xc4f2c139 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0x6c79fa61 +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x5da26574 +net/ipv6/ipv6 inet6_add_protocol 0xa00cd3fb +net/ipv6/ipv6 inet6_bind 0xa1229237 +net/ipv6/ipv6 inet6_del_protocol 0x67ebde1c +net/ipv6/ipv6 inet6_getname 0x3dbd32ee +net/ipv6/ipv6 inet6_ioctl 0xc14c2489 +net/ipv6/ipv6 inet6_register_protosw 0x8e7e207a +net/ipv6/ipv6 inet6_release 0xe00a2936 +net/ipv6/ipv6 inet6_unregister_protosw 0x07cf3e8b +net/ipv6/ipv6 ip6_route_me_harder 0x36ffd4f7 +net/ipv6/ipv6 ip6_route_output 0xb92e796e +net/ipv6/ipv6 ip6_xmit 0x78cb1f9a +net/ipv6/ipv6 ipv6_chk_addr 0x6c9f9752 +net/ipv6/ipv6 ipv6_get_saddr 0x0dab0ee2 +net/ipv6/ipv6 ipv6_getsockopt 0x9680aab4 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0x452b185f +net/ipv6/ipv6 ipv6_setsockopt 0x252ae0e9 +net/ipv6/ipv6 ndisc_mc_map 0x08472cd7 +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x508f4d6c +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0xe3179133 +net/ipv6/ipv6 xfrm6_rcv_spi 0x859e59b0 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0x76d6e23b +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0x9efefb21 +net/ipv6/netfilter/ip6_tables ip6t_register_table 0xdb0ea1b6 +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x926f6884 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0x919faa14 +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x7de10af6 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0xc90f3c5b +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0xcb74877c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0x56bba043 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0xdd41091f +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/irda/ircomm/ircomm ircomm_close 0x30a97c49 +net/irda/ircomm/ircomm ircomm_connect_request 0x5b554a7a +net/irda/ircomm/ircomm ircomm_connect_response 0x13c7e800 +net/irda/ircomm/ircomm ircomm_control_request 0x0e76b660 +net/irda/ircomm/ircomm ircomm_data_request 0xa22582ee +net/irda/ircomm/ircomm ircomm_disconnect_request 0x98784e47 +net/irda/ircomm/ircomm ircomm_flow_request 0x38ed76f4 +net/irda/ircomm/ircomm ircomm_open 0xf65a91df +net/irda/irda alloc_irdadev 0x1c619fd2 +net/irda/irda async_unwrap_char 0x10955bbb +net/irda/irda async_wrap_skb 0x58130a83 +net/irda/irda hashbin_delete 0x94a8156e +net/irda/irda hashbin_find 0xe0acf0d4 +net/irda/irda hashbin_get_first 0x29783db6 +net/irda/irda hashbin_get_next 0x5f261aef +net/irda/irda hashbin_insert 0x5861b834 +net/irda/irda hashbin_lock_find 0xd627dc1a +net/irda/irda hashbin_new 0x543a6db5 +net/irda/irda hashbin_remove 0xb7884205 +net/irda/irda hashbin_remove_this 0x7f933922 +net/irda/irda irda_debug 0x38a20e5b +net/irda/irda irda_device_dongle_cleanup 0xae081ace +net/irda/irda irda_device_dongle_init 0xa21ad6ca +net/irda/irda irda_device_register_dongle 0xad4f4b84 +net/irda/irda irda_device_set_media_busy 0xa85f4b57 +net/irda/irda irda_device_unregister_dongle 0x8241cc58 +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0x68c07071 +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_setup_dma 0xf39b7fe0 +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0xbfb4dcec +net/irda/irda iriap_getvaluebyclass_request 0x5b0bec21 +net/irda/irda iriap_open 0x0d3d0e65 +net/irda/irda irias_add_integer_attrib 0xc10a5281 +net/irda/irda irias_add_octseq_attrib 0x550a5e27 +net/irda/irda irias_add_string_attrib 0x18edd399 +net/irda/irda irias_delete_object 0x89136cd1 +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x45a03a53 +net/irda/irda irias_find_object 0xa26f32f8 +net/irda/irda irias_insert_object 0x980fe568 +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0xe1a50c6f +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0x45b71d4a +net/irda/irda irlap_open 0x0a1e173e +net/irda/irda irlmp_close_lsap 0xac0b286a +net/irda/irda irlmp_connect_request 0x01719695 +net/irda/irda irlmp_connect_response 0x9840db00 +net/irda/irda irlmp_data_request 0xc71f3d0b +net/irda/irda irlmp_disconnect_request 0x380ad4c2 +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0x3b9612b8 +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0x96f63873 +net/irda/irda irttp_connect_request 0x09af958c +net/irda/irda irttp_connect_response 0x79339011 +net/irda/irda irttp_data_request 0xdb2dc57a +net/irda/irda irttp_disconnect_request 0xaeae8da5 +net/irda/irda irttp_dup 0xd3e4c153 +net/irda/irda irttp_flow_request 0xfe853fee +net/irda/irda irttp_open_tsap 0xd3197d73 +net/irda/irda irttp_udata_request 0x990a7991 +net/irda/irda proc_irda 0x9a6b3b19 +net/lapb/lapb lapb_connect_request 0x7a381696 +net/lapb/lapb lapb_data_received 0x16dbb847 +net/lapb/lapb lapb_data_request 0x0fd4f4e1 +net/lapb/lapb lapb_disconnect_request 0xf4cd0962 +net/lapb/lapb lapb_getparms 0x899bb290 +net/lapb/lapb lapb_register 0x12544d6c +net/lapb/lapb lapb_setparms 0x2513c28f +net/lapb/lapb lapb_unregister 0xe928aa3f +net/netfilter/nfnetlink __nfa_fill 0x08e04a98 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0x614dc3a9 +net/netfilter/nfnetlink nfnetlink_subsys_register 0x931a90cb +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0x0e505a28 +net/netfilter/nfnetlink nfnetlink_unicast 0xf4176a2d +net/rxrpc/rxrpc rxrpc_add_service 0xda84d292 +net/rxrpc/rxrpc rxrpc_call_abort 0x26003f0a +net/rxrpc/rxrpc rxrpc_call_read_data 0x89b4754c +net/rxrpc/rxrpc rxrpc_call_write_data 0x1ea55057 +net/rxrpc/rxrpc rxrpc_create_call 0xd533c4d9 +net/rxrpc/rxrpc rxrpc_create_connection 0x2510b233 +net/rxrpc/rxrpc rxrpc_create_transport 0xe0548c72 +net/rxrpc/rxrpc rxrpc_del_service 0x49deb4b0 +net/rxrpc/rxrpc rxrpc_put_call 0x5655779d +net/rxrpc/rxrpc rxrpc_put_connection 0x75f24aa6 +net/rxrpc/rxrpc rxrpc_put_transport 0x8158bfbb +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x00c52ef5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0xb5dea7ef +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xf8b2ff6e +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0x5dacbf63 +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0xabd24919 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0x81703424 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0x18e631df +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0x703f7173 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0xa5b96134 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0x79488845 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0x2a7b36e3 +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0xd5ea1d84 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0x9be3a063 +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0x1136d1d6 +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0x5825b5bb +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0x67748613 +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x4c2f4b6d +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x8d1a827e +net/sunrpc/sunrpc auth_domain_find 0xce9b7a1f +net/sunrpc/sunrpc auth_domain_lookup 0xa74157e3 +net/sunrpc/sunrpc auth_domain_put 0xb7e2b4a5 +net/sunrpc/sunrpc auth_unix_add_addr 0xb8520a43 +net/sunrpc/sunrpc auth_unix_forget_old 0x758f9c49 +net/sunrpc/sunrpc auth_unix_lookup 0xd1d4e136 +net/sunrpc/sunrpc cache_check 0xa840df9a +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0x144d285a +net/sunrpc/sunrpc cache_init 0xc244025c +net/sunrpc/sunrpc cache_purge 0xf8e2446b +net/sunrpc/sunrpc cache_register 0x40a35fe6 +net/sunrpc/sunrpc cache_unregister 0x0a1b86ba +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0x84716a79 +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0xe0879cb4 +net/sunrpc/sunrpc rpc_bind_new_program 0x537d5a5d +net/sunrpc/sunrpc rpc_call_async 0xd50f6729 +net/sunrpc/sunrpc rpc_call_setup 0xc526b6ee +net/sunrpc/sunrpc rpc_call_sync 0x40711130 +net/sunrpc/sunrpc rpc_clnt_sigmask 0x0f948fe0 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0x9d3dd85d +net/sunrpc/sunrpc rpc_clone_client 0x3fe24ad3 +net/sunrpc/sunrpc rpc_create_client 0x401a8e91 +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0xd946361a +net/sunrpc/sunrpc rpc_destroy_client 0x7b683e63 +net/sunrpc/sunrpc rpc_execute 0xc668106e +net/sunrpc/sunrpc rpc_init_task 0xe06f2c46 +net/sunrpc/sunrpc rpc_init_wait_queue 0x916aaa11 +net/sunrpc/sunrpc rpc_killall_tasks 0x9bfdd69c +net/sunrpc/sunrpc rpc_max_payload 0xc885df07 +net/sunrpc/sunrpc rpc_mkpipe 0xcd5773fd +net/sunrpc/sunrpc rpc_new_child 0xff7c4961 +net/sunrpc/sunrpc rpc_new_client 0x3e0642de +net/sunrpc/sunrpc rpc_new_task 0x5878c771 +net/sunrpc/sunrpc rpc_proc_register 0x2af6a185 +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0xc457abb2 +net/sunrpc/sunrpc rpc_release_client 0xc8bfd8f2 +net/sunrpc/sunrpc rpc_release_task 0x4f38a8bb +net/sunrpc/sunrpc rpc_restart_call 0x41879922 +net/sunrpc/sunrpc rpc_run_child 0xe0921a5d +net/sunrpc/sunrpc rpc_setbufsize 0xff2f7fb1 +net/sunrpc/sunrpc rpc_shutdown_client 0x68d0b45d +net/sunrpc/sunrpc rpc_sleep_on 0xb403f583 +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0x6d71e3af +net/sunrpc/sunrpc rpc_wake_up_next 0x305b53de +net/sunrpc/sunrpc rpc_wake_up_status 0xa5509e00 +net/sunrpc/sunrpc rpc_wake_up_task 0x33c8cda1 +net/sunrpc/sunrpc rpcauth_create 0x56eb38cb +net/sunrpc/sunrpc rpcauth_free_credcache 0x3b421593 +net/sunrpc/sunrpc rpcauth_init_credcache 0xe66ff312 +net/sunrpc/sunrpc rpcauth_lookup_credcache 0x3f907fd5 +net/sunrpc/sunrpc rpcauth_lookupcred 0xffdab94c +net/sunrpc/sunrpc rpcauth_register 0x16980da0 +net/sunrpc/sunrpc rpcauth_unregister 0x5ab9a681 +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x10fbd25e +net/sunrpc/sunrpc svc_auth_unregister 0x0f668ba9 +net/sunrpc/sunrpc svc_authenticate 0x51dbaf99 +net/sunrpc/sunrpc svc_create 0xe4e0ee84 +net/sunrpc/sunrpc svc_create_thread 0x11a7f3f3 +net/sunrpc/sunrpc svc_destroy 0xdbe8114e +net/sunrpc/sunrpc svc_drop 0x79aad856 +net/sunrpc/sunrpc svc_exit_thread 0x982fe3ec +net/sunrpc/sunrpc svc_makesock 0x2e540775 +net/sunrpc/sunrpc svc_proc_register 0x9dcf2d90 +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0xdb7d2a7b +net/sunrpc/sunrpc svc_recv 0xec232c97 +net/sunrpc/sunrpc svc_reserve 0x0491b515 +net/sunrpc/sunrpc svc_seq_show 0xeb895709 +net/sunrpc/sunrpc svc_set_client 0x0aa60979 +net/sunrpc/sunrpc svc_wake_up 0x480e8d0e +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x96946e44 +net/sunrpc/sunrpc xdr_buf_from_iov 0x7a07b316 +net/sunrpc/sunrpc xdr_buf_read_netobj 0xf4866516 +net/sunrpc/sunrpc xdr_buf_subsegment 0x93bc6ffa +net/sunrpc/sunrpc xdr_decode_array2 0xb3a321c4 +net/sunrpc/sunrpc xdr_decode_netobj 0x1be57115 +net/sunrpc/sunrpc xdr_decode_string 0x6755aa62 +net/sunrpc/sunrpc xdr_decode_string_inplace 0x7bd87272 +net/sunrpc/sunrpc xdr_decode_word 0xd286b1f0 +net/sunrpc/sunrpc xdr_encode_array2 0x62987b06 +net/sunrpc/sunrpc xdr_encode_netobj 0x29c6f164 +net/sunrpc/sunrpc xdr_encode_opaque 0x0e9e79d5 +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0x587d494b +net/sunrpc/sunrpc xdr_encode_pages 0x864e2300 +net/sunrpc/sunrpc xdr_encode_string 0xabc0fe0c +net/sunrpc/sunrpc xdr_encode_word 0x718c5194 +net/sunrpc/sunrpc xdr_init_decode 0x17a323d3 +net/sunrpc/sunrpc xdr_init_encode 0x77282697 +net/sunrpc/sunrpc xdr_inline_decode 0xfb06d631 +net/sunrpc/sunrpc xdr_inline_pages 0xf21d0068 +net/sunrpc/sunrpc xdr_read_pages 0x8792429f +net/sunrpc/sunrpc xdr_reserve_space 0x3ab72a4f +net/sunrpc/sunrpc xdr_shift_buf 0x3e9d3c97 +net/sunrpc/sunrpc xdr_write_pages 0x765666b0 +net/sunrpc/sunrpc xprt_create_proto 0xda967306 +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x8ea05364 +net/wanrouter/wanrouter register_wan_device 0x22700dcd +net/wanrouter/wanrouter unlock_adapter_irq 0x696688b7 +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0x3af37d10 +net/wanrouter/wanrouter wanrouter_type_trans 0xec76f510 +security/commoncap cap_bprm_apply_creds 0xc487774f +security/commoncap cap_bprm_secureexec 0x1b967697 +security/commoncap cap_bprm_set_security 0x1c41e775 +security/commoncap cap_capable 0x8a85b416 +security/commoncap cap_capget 0x24458dc7 +security/commoncap cap_capset_check 0xce450cbe +security/commoncap cap_capset_set 0xa21aa659 +security/commoncap cap_inode_removexattr 0x75455876 +security/commoncap cap_inode_setxattr 0x7bdb012b +security/commoncap cap_netlink_recv 0x25114759 +security/commoncap cap_netlink_send 0x7beaf41f +security/commoncap cap_ptrace 0xd7efd45a +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x372390b2 +security/commoncap cap_task_reparent_to_init 0x6e4004f8 +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x0da9f4ec +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0xbd86c663 +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0xf25599fb +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0xfb47f88b +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0xbeb1311d +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x89947013 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0xea2a2388 +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x3c89a12c +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0x49d52b6a +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x14ecf456 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x5ff165f8 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0xc62dd2d4 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0x8584d516 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0xcd3a7775 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x20a6608e +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0x7d7fce56 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x5c9108a3 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x2b68e19a +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x27b4902e +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0xc4780079 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0x797b2662 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0x9d2936fd +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0x680db841 +sound/core/snd copy_from_user_toio 0xce3ca308 +sound/core/snd copy_to_user_fromio 0x602c96f0 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0xe4da0a33 +sound/core/snd snd_card_file_add 0x9b8ee881 +sound/core/snd snd_card_file_remove 0x5c0d705f +sound/core/snd snd_card_free 0x33561ac3 +sound/core/snd snd_card_free_in_thread 0x39040c7b +sound/core/snd snd_card_new 0xaafb5772 +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0x49aec478 +sound/core/snd snd_card_register 0xeec57f5f +sound/core/snd snd_card_set_generic_dev 0x552d0f3c +sound/core/snd snd_card_set_generic_pm_callback 0x81885a38 +sound/core/snd snd_card_set_pm_callback 0x2e03d042 +sound/core/snd snd_cards 0xa7ed727e +sound/core/snd snd_component_add 0x2603ca15 +sound/core/snd snd_ctl_add 0x21b399b1 +sound/core/snd snd_ctl_elem_read 0xc6d9620a +sound/core/snd snd_ctl_elem_write 0x9ae26eb8 +sound/core/snd snd_ctl_find_id 0x8881b579 +sound/core/snd snd_ctl_find_numid 0x1891e93b +sound/core/snd snd_ctl_free_one 0x61712890 +sound/core/snd snd_ctl_new 0xb3b00fa0 +sound/core/snd snd_ctl_new1 0x55c2e3f4 +sound/core/snd snd_ctl_notify 0xd1e36b3a +sound/core/snd snd_ctl_register_ioctl 0x55cd72fb +sound/core/snd snd_ctl_remove 0x58447b1e +sound/core/snd snd_ctl_remove_id 0xa735d474 +sound/core/snd snd_ctl_rename_id 0x0d6fc319 +sound/core/snd snd_ctl_unregister_ioctl 0xaa0c5364 +sound/core/snd snd_device_free 0xf5b7a4e6 +sound/core/snd snd_device_new 0xcd840568 +sound/core/snd snd_device_register 0xc72a49d8 +sound/core/snd snd_dma_disable 0x70c15ac1 +sound/core/snd snd_dma_pointer 0x191e88cf +sound/core/snd snd_dma_program 0x18e1683f +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0x9d71f280 +sound/core/snd snd_info_create_module_entry 0x1c9944b3 +sound/core/snd snd_info_free_entry 0x140695eb +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0xf4728add +sound/core/snd snd_info_unregister 0x4903a41b +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0x6b3aba53 +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0x76eee501 +sound/core/snd snd_register_device 0xe1a454e0 +sound/core/snd snd_register_oss_device 0x2ddd6def +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0xa1503c1d +sound/core/snd snd_unregister_device 0x40af4029 +sound/core/snd snd_unregister_oss_device 0x46af8631 +sound/core/snd-hwdep snd_hwdep_new 0xae05566c +sound/core/snd-page-alloc snd_dma_alloc_pages 0x9ece3faf +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0xbb8022c4 +sound/core/snd-page-alloc snd_dma_free_pages 0x8fda73ee +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0x47e9bcde +sound/core/snd-page-alloc snd_dma_reserve_buf 0x4256a7d5 +sound/core/snd-page-alloc snd_free_pages 0x3b91f3af +sound/core/snd-page-alloc snd_malloc_pages 0xade88e76 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x65f0da5e +sound/core/snd-pcm snd_pcm_devices 0xbcfb2246 +sound/core/snd-pcm snd_pcm_format_big_endian 0x09d405a0 +sound/core/snd-pcm snd_pcm_format_linear 0x1d607209 +sound/core/snd-pcm snd_pcm_format_little_endian 0x11ee487f +sound/core/snd-pcm snd_pcm_format_name 0x77863ed3 +sound/core/snd-pcm snd_pcm_format_physical_width 0x32be712f +sound/core/snd-pcm snd_pcm_format_set_silence 0xfa4027da +sound/core/snd-pcm snd_pcm_format_signed 0x78967306 +sound/core/snd-pcm snd_pcm_format_silence_64 0x407a3719 +sound/core/snd-pcm snd_pcm_format_size 0x0bde331d +sound/core/snd-pcm snd_pcm_format_unsigned 0x0ff581cb +sound/core/snd-pcm snd_pcm_format_width 0xcfb8aa1b +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0x00c77960 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0x3ff8166b +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0x57159662 +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0xbbe2faa0 +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0x1fd4491f +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x9e95da13 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0xc5aa50e3 +sound/core/snd-pcm snd_pcm_hw_constraint_step 0x816e3d57 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0x7e635ba5 +sound/core/snd-pcm snd_pcm_hw_constraints_init 0xaf3e0647 +sound/core/snd-pcm snd_pcm_hw_param_first 0xde96ca82 +sound/core/snd-pcm snd_pcm_hw_param_last 0x85e766ba +sound/core/snd-pcm snd_pcm_hw_param_mask 0xeb7c9de9 +sound/core/snd-pcm snd_pcm_hw_param_near 0x04d38f98 +sound/core/snd-pcm snd_pcm_hw_param_set 0x34635bf8 +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0x32429af8 +sound/core/snd-pcm snd_pcm_hw_rule_add 0xa8784eee +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0xf32462d6 +sound/core/snd-pcm snd_pcm_kernel_ioctl 0x383b29c7 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x70dda13d +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0xfc6f8c0a +sound/core/snd-pcm snd_pcm_lib_free_pages 0x03915f3e +sound/core/snd-pcm snd_pcm_lib_ioctl 0x1ceab170 +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x2967988c +sound/core/snd-pcm snd_pcm_lib_mmap_iomem 0xf94bf6ec +sound/core/snd-pcm snd_pcm_lib_period_bytes 0x1768674c +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x95e1b4c8 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0x0d4c1233 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0x3584fae0 +sound/core/snd-pcm snd_pcm_lib_read 0x5736e2fb +sound/core/snd-pcm snd_pcm_lib_readv 0x2dc2e0be +sound/core/snd-pcm snd_pcm_lib_write 0x9b37f9f7 +sound/core/snd-pcm snd_pcm_lib_writev 0xac5e6f99 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0xf90f2432 +sound/core/snd-pcm snd_pcm_link_rwlock 0xccfde388 +sound/core/snd-pcm snd_pcm_mmap_data 0xadb3e64d +sound/core/snd-pcm snd_pcm_new 0x42edae63 +sound/core/snd-pcm snd_pcm_new_stream 0x9ea13187 +sound/core/snd-pcm snd_pcm_notify 0x5d424063 +sound/core/snd-pcm snd_pcm_open_substream 0x6968cbeb +sound/core/snd-pcm snd_pcm_period_elapsed 0x3a3bbe86 +sound/core/snd-pcm snd_pcm_release_substream 0x1059a8dd +sound/core/snd-pcm snd_pcm_set_ops 0xe09aa011 +sound/core/snd-pcm snd_pcm_set_sync 0x41ef81ed +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0x621f57ba +sound/core/snd-pcm snd_pcm_stop 0x5dd5d050 +sound/core/snd-pcm snd_pcm_suspend 0x8aa1e8ef +sound/core/snd-pcm snd_pcm_suspend_all 0x7cb3614c +sound/core/snd-rawmidi snd_rawmidi_drain_input 0x440032d1 +sound/core/snd-rawmidi snd_rawmidi_drain_output 0xd3c04861 +sound/core/snd-rawmidi snd_rawmidi_drop_output 0x144ae11b +sound/core/snd-rawmidi snd_rawmidi_info 0xc56c3b01 +sound/core/snd-rawmidi snd_rawmidi_info_select 0x9000f94c +sound/core/snd-rawmidi snd_rawmidi_input_params 0xa336ad16 +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x283f05a2 +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0xfc770abc +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0x3ee1fe41 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0xcd8a2096 +sound/core/snd-rawmidi snd_rawmidi_new 0xc28ef9a0 +sound/core/snd-rawmidi snd_rawmidi_output_params 0x60a4bd85 +sound/core/snd-rawmidi snd_rawmidi_receive 0x8fc9ea09 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x85637009 +sound/core/snd-rawmidi snd_rawmidi_transmit 0x06f235d2 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0xed9a3512 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0xeb929806 +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0xeb3fef1b +sound/core/snd-timer snd_timer_close 0x7bdb7a2e +sound/core/snd-timer snd_timer_continue 0x627d1140 +sound/core/snd-timer snd_timer_global_free 0xfec4beee +sound/core/snd-timer snd_timer_global_new 0x175810ab +sound/core/snd-timer snd_timer_global_register 0x43d3562e +sound/core/snd-timer snd_timer_global_unregister 0x16cd337c +sound/core/snd-timer snd_timer_interrupt 0x7c1eb05c +sound/core/snd-timer snd_timer_new 0xcb594da6 +sound/core/snd-timer snd_timer_notify 0xb4ce55bb +sound/core/snd-timer snd_timer_open 0x49f82adf +sound/core/snd-timer snd_timer_pause 0xb69586ea +sound/core/snd-timer snd_timer_resolution 0xaa2868de +sound/core/snd-timer snd_timer_start 0xe2123d7b +sound/core/snd-timer snd_timer_stop 0xb972859f +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0xa6a1e6b4 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x7d69936e +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0x12cba3dd +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0x51ecb3e3 +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0xf481df30 +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0xb3013509 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0xb5d9ca98 +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0x30600028 +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0x347be9ff +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x333c9128 +sound/drivers/vx/snd-vx-lib snd_vx_create 0x56d274ca +sound/drivers/vx/snd-vx-lib snd_vx_delay 0xb767baf4 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x63c2ee38 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x8ae05b26 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0x5d6bf03c +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x8a63f6eb +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0x4c39cb28 +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0xa7a9c858 +sound/i2c/other/snd-ak4114 snd_ak4114_build 0x8b11c9a4 +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0x3241f02a +sound/i2c/other/snd-ak4114 snd_ak4114_create 0xb7d8a078 +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0x9cd84f99 +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0xae1a50c1 +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0xc3a357a4 +sound/i2c/other/snd-ak4117 snd_ak4117_build 0xddc4aa8f +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0xbb739f88 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0x3f17d021 +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0xb3109f67 +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x487fe11f +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x45ebf2ee +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0xa56189c0 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0xf7a6a162 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0xee5b7c72 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0x9623bc19 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0x67790cf4 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0xa835b83f +sound/i2c/snd-cs8427 snd_cs8427_create 0x28802cbb +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0x8b64f3a6 +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0xa3d873eb +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0x54f2b64c +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0x26733eaf +sound/i2c/snd-cs8427 snd_cs8427_reset 0x93d422ee +sound/i2c/snd-i2c snd_i2c_bus_create 0x8223a0c1 +sound/i2c/snd-i2c snd_i2c_device_create 0x284ceca1 +sound/i2c/snd-i2c snd_i2c_device_free 0x02e1e66c +sound/i2c/snd-i2c snd_i2c_probeaddr 0x404ae051 +sound/i2c/snd-i2c snd_i2c_readbytes 0x44c24e0a +sound/i2c/snd-i2c snd_i2c_sendbytes 0x11b42a00 +sound/isa/sb/snd-sb-common snd_sbdsp_command 0xc414ada4 +sound/isa/sb/snd-sb-common snd_sbdsp_create 0xd184be6c +sound/isa/sb/snd-sb-common snd_sbdsp_get_byte 0x7f75ec5e +sound/isa/sb/snd-sb-common snd_sbdsp_reset 0xf808369f +sound/isa/sb/snd-sb-common snd_sbmixer_add_ctl 0x45ed88ab +sound/isa/sb/snd-sb-common snd_sbmixer_new 0x033bc986 +sound/isa/sb/snd-sb-common snd_sbmixer_read 0x4db84974 +sound/isa/sb/snd-sb-common snd_sbmixer_write 0xb6b8349c +sound/oss/ac97_codec ac97_alloc_codec 0x3ff65ffe +sound/oss/ac97_codec ac97_probe_codec 0x0083452d +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0xa98a2a2b +sound/oss/ac97_codec ac97_release_codec 0x66042b4e +sound/oss/ac97_codec ac97_restore_state 0x4d8f7d81 +sound/oss/ac97_codec ac97_save_state 0xd0116496 +sound/oss/ac97_codec ac97_set_adc_rate 0x75ef9b04 +sound/oss/ac97_codec ac97_set_dac_rate 0x3f30b14e +sound/oss/ac97_codec ac97_tune_hardware 0x5515d6a4 +sound/oss/ac97_codec ac97_unregister_driver 0xfa32ee5d +sound/oss/aci aci_port 0x0d82adb6 +sound/oss/aci aci_rw_cmd 0xcc7c4cd8 +sound/oss/aci aci_version 0x93350c87 +sound/oss/ad1848 ad1848_control 0xc04f6f67 +sound/oss/ad1848 ad1848_detect 0x845a1638 +sound/oss/ad1848 ad1848_init 0x24c7dff3 +sound/oss/ad1848 ad1848_unload 0x9bf1cc62 +sound/oss/ad1848 adintr 0x2c57f6c9 +sound/oss/ad1848 attach_ms_sound 0xa9527878 +sound/oss/ad1848 probe_ms_sound 0x65e6d1ca +sound/oss/ad1848 unload_ms_sound 0xb29a9148 +sound/oss/dmasound/dmasound_core dmasound 0x6796d66b +sound/oss/dmasound/dmasound_core dmasound_catchRadius 0x4b9f5770 +sound/oss/dmasound/dmasound_core dmasound_deinit 0x7cfb4436 +sound/oss/dmasound/dmasound_core dmasound_read_sq 0xce568d79 +sound/oss/dmasound/dmasound_core dmasound_write_sq 0x6dfa690b +sound/oss/dmasound/dmasound_core get_afmt_string 0x4fe63f06 +sound/oss/dmasound/dmasound_core software_input_volume 0xb2211a34 +sound/oss/mpu401 attach_mpu401 0x4ddf81a7 +sound/oss/mpu401 intchk_mpu401 0x5fe6dd42 +sound/oss/mpu401 mpuintr 0x4b2aa15c +sound/oss/mpu401 probe_mpu401 0x5c8d3e32 +sound/oss/mpu401 unload_mpu401 0x5febf284 +sound/oss/opl3 opl3_detect 0x67481767 +sound/oss/opl3 opl3_init 0x337eb99e +sound/oss/sb_lib probe_sbmpu 0x107e75d7 +sound/oss/sb_lib sb_be_quiet 0x42424109 +sound/oss/sb_lib sb_dsp_detect 0xd8a2731c +sound/oss/sb_lib sb_dsp_init 0x54b5b92e +sound/oss/sb_lib sb_dsp_unload 0xc4884969 +sound/oss/sb_lib smw_free 0x450f9aea +sound/oss/sb_lib unload_sbmpu 0x74afd69c +sound/oss/sound DMAbuf_close_dma 0xc88b42ab +sound/oss/sound DMAbuf_inputintr 0xeb315d99 +sound/oss/sound DMAbuf_open_dma 0x06b3013d +sound/oss/sound DMAbuf_outputintr 0x987bcf12 +sound/oss/sound DMAbuf_start_dma 0xe056b71c +sound/oss/sound MIDIbuf_avail 0x1f395686 +sound/oss/sound audio_devs 0x5e933244 +sound/oss/sound cent_tuning 0x03ce7ff7 +sound/oss/sound compute_finetune 0x04c87ec8 +sound/oss/sound conf_printf 0x0f280035 +sound/oss/sound conf_printf2 0x7bdf0907 +sound/oss/sound do_midi_msg 0xb51587f6 +sound/oss/sound load_mixer_volumes 0xa1d5f04f +sound/oss/sound midi_devs 0xaaeec178 +sound/oss/sound midi_synth_aftertouch 0xf1ea8a20 +sound/oss/sound midi_synth_bender 0xba7dd041 +sound/oss/sound midi_synth_close 0xad45df73 +sound/oss/sound midi_synth_controller 0x892093e0 +sound/oss/sound midi_synth_hw_control 0xb14b22cd +sound/oss/sound midi_synth_ioctl 0xaef743b2 +sound/oss/sound midi_synth_kill_note 0x2aa31695 +sound/oss/sound midi_synth_load_patch 0xf7426da3 +sound/oss/sound midi_synth_open 0xf6b3a2fb +sound/oss/sound midi_synth_panning 0xdb400afa +sound/oss/sound midi_synth_reset 0x56504ca2 +sound/oss/sound midi_synth_send_sysex 0xfddcbfb3 +sound/oss/sound midi_synth_set_instr 0xd85be938 +sound/oss/sound midi_synth_setup_voice 0x4ff47e9d +sound/oss/sound midi_synth_start_note 0x9bdaf24d +sound/oss/sound mixer_devs 0x05ca1ffb +sound/oss/sound note_to_freq 0x5d986fc9 +sound/oss/sound num_audiodevs 0x4cd01bdd +sound/oss/sound num_midis 0xa1eae7cf +sound/oss/sound num_mixers 0x9d845b18 +sound/oss/sound semitone_tuning 0x8b84aeb1 +sound/oss/sound seq_copy_to_input 0x7679ee76 +sound/oss/sound seq_input_event 0x17ba231d +sound/oss/sound sequencer_init 0xf78f6363 +sound/oss/sound sequencer_timer 0x90bd9714 +sound/oss/sound sound_alloc_dma 0x9a95733f +sound/oss/sound sound_alloc_mididev 0xba413f87 +sound/oss/sound sound_alloc_mixerdev 0x1b3df3cf +sound/oss/sound sound_alloc_synthdev 0xc748d109 +sound/oss/sound sound_alloc_timerdev 0x51e354b2 +sound/oss/sound sound_close_dma 0x418f5fbe +sound/oss/sound sound_free_dma 0x394cb088 +sound/oss/sound sound_install_audiodrv 0x7f335109 +sound/oss/sound sound_install_mixer 0x42286b05 +sound/oss/sound sound_open_dma 0xcc4b8797 +sound/oss/sound sound_timer_devs 0xc493c81d +sound/oss/sound sound_timer_init 0x2161d5e8 +sound/oss/sound sound_timer_interrupt 0xe2675a79 +sound/oss/sound sound_timer_syncinterval 0xfa6871be +sound/oss/sound sound_unload_audiodev 0xa948751e +sound/oss/sound sound_unload_mididev 0xa6bb414c +sound/oss/sound sound_unload_mixerdev 0xa51c913b +sound/oss/sound sound_unload_synthdev 0x06339815 +sound/oss/sound sound_unload_timerdev 0xa41ead5f +sound/oss/sound synth_devs 0x949249f2 +sound/oss/uart401 probe_uart401 0xfb5b061e +sound/oss/uart401 uart401intr 0x759aa728 +sound/oss/uart401 unload_uart401 0xecfdd9c9 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x98bbb0be +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0x18049ac8 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0xadade300 +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0x64802ac4 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0x830adbc3 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x0c2d3dad +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x3c6682ce +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0xf2da246b +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0x8dab4020 +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0xdd0e9829 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0x8f795b2b +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0xda974bed +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x356fc5f0 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0x5ccc22c4 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0x04fb7418 +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0x098d0358 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0x88c902bb +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0x04038991 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0xffe9adb1 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x16c05b9b +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0x1c81e0f1 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0xbaaf7ad0 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0xc173c6b4 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0x0749bf08 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0x6c2cc804 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0xc4d4c136 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0xff0e5542 +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0xb4f23ec8 +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0xada51eba +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0x35115f1c +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0x7ca9bf14 +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0x273c834d +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0xf3ae0ac5 +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x0b59bb4a +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0x7ce791f6 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0xe0a426b7 +sound/pci/hda/snd-hda-codec snd_hda_resume 0x7e7918a9 +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0x95f76035 +sound/pci/hda/snd-hda-codec snd_hda_suspend 0xd8c81409 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0x625afad1 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0xb0ef8719 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0x30bd3e78 +sound/pci/trident/snd-trident snd_trident_alloc_voice 0xd879a27c +sound/pci/trident/snd-trident snd_trident_free_voice 0xccb795d8 +sound/pci/trident/snd-trident snd_trident_start_voice 0xbaa6c77f +sound/pci/trident/snd-trident snd_trident_stop_voice 0xc72b4b71 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0xb9f9f418 +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0x25a020b3 +sound/pci/trident/snd-trident snd_trident_synth_free 0xd7704ff9 +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0x360e9370 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0x07c09722 +sound/soundcore register_sound_midi 0x88077fd8 +sound/soundcore register_sound_mixer 0xc8f81cb4 +sound/soundcore register_sound_special 0x46ba6e6e +sound/soundcore register_sound_special_device 0x6204ae40 +sound/soundcore register_sound_synth 0xe4e7b989 +sound/soundcore sound_class 0xa833f602 +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +sound/synth/emux/snd-emux-synth snd_emux_free 0xc6dbf1cd +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0x8bd0d700 +sound/synth/emux/snd-emux-synth snd_emux_new 0x0ddb3da1 +sound/synth/emux/snd-emux-synth snd_emux_register 0x86d140ba +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0x6ff9ec53 +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0x8fa925ec +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0x6171d7ba +sound/synth/snd-util-mem __snd_util_mem_free 0x7a0b8574 +sound/synth/snd-util-mem __snd_util_memblk_new 0x2a4ac4a9 +sound/synth/snd-util-mem snd_util_mem_alloc 0x455af10e +sound/synth/snd-util-mem snd_util_mem_avail 0xbdc114ea +sound/synth/snd-util-mem snd_util_mem_free 0x3ea14434 +sound/synth/snd-util-mem snd_util_memhdr_free 0xff01f382 +sound/synth/snd-util-mem snd_util_memhdr_new 0x66da5b73 +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0x6180e3fe +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux DAC1064_global_init 0x20450a68 +vmlinux DAC1064_global_restore 0x8c7561ab +vmlinux DMA_MODE_READ 0x98fe7882 +vmlinux DMA_MODE_WRITE 0xa9571d6d +vmlinux ISA_DMA_THRESHOLD 0x844404cf +vmlinux I_BDEV 0x371e8434 +vmlinux SELECT_DRIVE 0x00f3bcc7 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0x3bbaa252 +vmlinux __alloc_pages 0x05bd56a4 +vmlinux __alloc_percpu 0x50c89f23 +vmlinux __alloc_skb 0xf42508cd +vmlinux __ashldi3 0xa89464b7 +vmlinux __ashrdi3 0xb753bcc8 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0x40a67092 +vmlinux __bio_clone 0xbdee0871 +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0x691a2e54 +vmlinux __bread 0x79c3fc4b +vmlinux __breadahead 0x4a96561c +vmlinux __break_lease 0x7b15d0d4 +vmlinux __brelse 0xf704dc05 +vmlinux __check_region 0xf1d0cdab +vmlinux __clear_user 0xf3341268 +vmlinux __copy_tofrom_user 0x461ebfa0 +vmlinux __cpufreq_driver_target 0xc3fc14be +vmlinux __create_workqueue 0x0bbef543 +vmlinux __d_path 0x22eda0fa +vmlinux __delay 0x466c14a7 +vmlinux __dev_get_by_index 0x9dc661d6 +vmlinux __dev_get_by_name 0x0405370f +vmlinux __dev_remove_pack 0xda46fef5 +vmlinux __div64_32 0x8ebf25f5 +vmlinux __down 0x32058a66 +vmlinux __down_interruptible 0x4b2cb78b +vmlinux __dst_free 0x6a3ea391 +vmlinux __elv_add_request 0x0bd96758 +vmlinux __find_get_block 0x93cbc4cd +vmlinux __flush_icache_range 0xe2e0c7c6 +vmlinux __free_pages 0x56fd58d6 +vmlinux __generic_file_aio_read 0xb54242fd +vmlinux __generic_unplug_device 0x9a8521ad +vmlinux __get_free_pages 0x93fca811 +vmlinux __getblk 0x57484747 +vmlinux __handle_mm_fault 0xbfec3216 +vmlinux __ide_abort 0xd805e268 +vmlinux __ide_dma_bad_drive 0xeba25771 +vmlinux __ide_dma_check 0xf408fa5d +vmlinux __ide_dma_end 0xe953e358 +vmlinux __ide_dma_good_drive 0x994b176b +vmlinux __ide_dma_host_off 0x1ed248b4 +vmlinux __ide_dma_host_on 0x79987e4f +vmlinux __ide_dma_lostirq 0xa989b097 +vmlinux __ide_dma_off 0xbe965037 +vmlinux __ide_dma_off_quietly 0xb7292979 +vmlinux __ide_dma_on 0x376285af +vmlinux __ide_dma_timeout 0xae733814 +vmlinux __ide_end_request 0x6ee7d028 +vmlinux __ide_error 0xa2bf94c5 +vmlinux __ide_mm_insl 0x30eedda2 +vmlinux __ide_mm_insw 0x432f1bb5 +vmlinux __ide_mm_outsl 0xe8c5eb1a +vmlinux __ide_mm_outsw 0x9b042d0d +vmlinux __ide_pci_register_driver 0xba599c68 +vmlinux __inet_lookup_listener 0x18dcf807 +vmlinux __inet_twsk_hashdance 0xb9f8ee60 +vmlinux __inet_twsk_kill 0xd06609c2 +vmlinux __init_timer_base 0x049a5196 +vmlinux __inode_dir_notify 0x86699970 +vmlinux __insert_inode_hash 0x196c8c30 +vmlinux __invalidate_device 0x088c18a3 +vmlinux __ioremap 0xeda953fb +vmlinux __ip_route_output_key 0xda1a691f +vmlinux __ip_select_ident 0x6f7c2711 +vmlinux __irq_offset_value 0x65400222 +vmlinux __kfifo_get 0x07527e0d +vmlinux __kfifo_put 0x7c775173 +vmlinux __kfree_skb 0x1dfc373c +vmlinux __kill_fasync 0x39ec5b96 +vmlinux __kmalloc 0x12da5bb2 +vmlinux __lock_buffer 0x89f1f607 +vmlinux __lock_page 0x57f8f61c +vmlinux __lshrdi3 0xbd9e5d49 +vmlinux __mark_inode_dirty 0xfcf5fea5 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xbffc0a90 +vmlinux __module_put_and_exit 0xe152f651 +vmlinux __neigh_event_send 0xf6293a40 +vmlinux __neigh_for_each_release 0x2313ea88 +vmlinux __net_timestamp 0x743c3ed4 +vmlinux __netdev_watchdog_up 0xa43c2110 +vmlinux __nla_put 0xf64f9f15 +vmlinux __nla_reserve 0xc25947af +vmlinux __page_cache_release 0xaff33c88 +vmlinux __pagevec_lru_add 0x5f304533 +vmlinux __pagevec_release 0x8494f8bb +vmlinux __pci_register_driver 0xb89f8d1e +vmlinux __per_cpu_offset 0x341dbfa3 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0x45c039a0 +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0x0a68b8fd +vmlinux __scm_destroy 0x06c9c951 +vmlinux __scm_send 0xd141c93c +vmlinux __secpath_destroy 0x201968e5 +vmlinux __serio_register_driver 0x35f309db +vmlinux __serio_register_port 0x145e26e9 +vmlinux __serio_unregister_port_delayed 0x3348878b +vmlinux __set_page_dirty_buffers 0xd2417a32 +vmlinux __set_page_dirty_nobuffers 0x6ebd3b55 +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x8a32436b +vmlinux __skb_checksum_complete 0x7c7666ac +vmlinux __skb_linearize 0xbc595bf3 +vmlinux __strncpy_from_user 0x801f5a3f +vmlinux __strnlen_user 0xcf901697 +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x267fc65b +vmlinux __tasklet_schedule 0xf397b9aa +vmlinux __tcf_em_tree_match 0x9088e808 +vmlinux __up 0xb6966575 +vmlinux __user_walk 0x69da0801 +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x26477c07 +vmlinux __vmalloc_node 0xffe71055 +vmlinux __wait_on_bit 0xb2ba62b5 +vmlinux __wait_on_bit_lock 0x80428c80 +vmlinux __wait_on_buffer 0x5036dc77 +vmlinux __wake_up 0xdb09708f +vmlinux __wake_up_bit 0x5315f750 +vmlinux __wake_up_sync 0xf4488540 +vmlinux __xfrm_policy_check 0x9a8e7b58 +vmlinux __xfrm_policy_destroy 0x1d3c9c45 +vmlinux __xfrm_route_forward 0x08560a75 +vmlinux __xfrm_state_destroy 0x677f5510 +vmlinux _atomic_dec_and_lock 0x16250200 +vmlinux _chrp_type 0x623d7182 +vmlinux _ctype 0x8d3894f2 +vmlinux _insb 0xe9dd3999 +vmlinux _insl 0x3f826b33 +vmlinux _insl_ns 0x05bbde85 +vmlinux _insw 0x1933b437 +vmlinux _insw_ns 0x7e30bd26 +vmlinux _machine 0x8db2d7ee +vmlinux _outsb 0x1b52cb9e +vmlinux _outsl 0xfb6c33cb +vmlinux _outsl_ns 0xd890cca4 +vmlinux _outsw 0xe5032325 +vmlinux _outsw_ns 0x1ae3105d +vmlinux _read_lock 0x15ed95d3 +vmlinux _read_lock_bh 0x4b17de47 +vmlinux _read_lock_irq 0xa922f240 +vmlinux _read_lock_irqsave 0x0985da55 +vmlinux _read_trylock 0xd69ebc51 +vmlinux _read_unlock 0xa0e44065 +vmlinux _read_unlock_bh 0x0f57d5ae +vmlinux _read_unlock_irq 0x70b0e897 +vmlinux _read_unlock_irqrestore 0x50b15c53 +vmlinux _spin_lock 0x429328d9 +vmlinux _spin_lock_bh 0x8bcc3a3a +vmlinux _spin_lock_irq 0x6220b988 +vmlinux _spin_lock_irqsave 0xdd5a37a7 +vmlinux _spin_trylock 0x3922d605 +vmlinux _spin_trylock_bh 0x3906b93c +vmlinux _spin_unlock 0x01e9f0ee +vmlinux _spin_unlock_bh 0x53d91e59 +vmlinux _spin_unlock_irq 0xb6439c4e +vmlinux _spin_unlock_irqrestore 0x0df15005 +vmlinux _tlbie 0x96c98233 +vmlinux _write_lock 0xdde25489 +vmlinux _write_lock_bh 0x68628e77 +vmlinux _write_lock_irq 0x8fd8b7bc +vmlinux _write_lock_irqsave 0x11a41041 +vmlinux _write_trylock 0x989d4082 +vmlinux _write_unlock 0x0cd3cf92 +vmlinux _write_unlock_bh 0xbb7a91dc +vmlinux _write_unlock_irq 0xce0fd5c3 +vmlinux _write_unlock_irqrestore 0xad4ebe22 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux adb_client_list 0x7fbb3ff8 +vmlinux adb_controller 0xb21bd6ef +vmlinux adb_poll 0xdff56e64 +vmlinux adb_register 0xa9ac8283 +vmlinux adb_request 0xc1dd4a7f +vmlinux adb_try_handler_change 0xee59412f +vmlinux adb_unregister 0xfd0c5038 +vmlinux add_disk 0x37cf0c73 +vmlinux add_disk_randomness 0x7ddd16a2 +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0x4e66bc7e +vmlinux add_wait_queue 0x6989875b +vmlinux add_wait_queue_exclusive 0x33b3949a +vmlinux adjust_resource 0xfd05bd8a +vmlinux agp_special_page 0xd92514ca +vmlinux aio_complete 0x17de3370 +vmlinux aio_put_req 0xd8f8bf3b +vmlinux alignment_exception 0xadd1e971 +vmlinux alloc_buffer_head 0x560eebf5 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0xe2716ec6 +vmlinux alloc_disk_node 0x053113b1 +vmlinux alloc_etherdev 0x0e650af4 +vmlinux alloc_fcdev 0xd7a21fd3 +vmlinux alloc_fddidev 0x9e36d28d +vmlinux alloc_hippi_dev 0x29464a94 +vmlinux alloc_netdev 0x98e2d527 +vmlinux alloc_page_buffers 0x0b67c196 +vmlinux alloc_trdev 0x39ef984d +vmlinux alloc_tty_driver 0x576ee12c +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0x09600083 +vmlinux anon_transport_class_unregister 0x18953e91 +vmlinux arp_broken_ops 0x4fa41663 +vmlinux arp_create 0xb418b6a2 +vmlinux arp_find 0xd380b984 +vmlinux arp_rcv 0xfe02ff89 +vmlinux arp_send 0x39dfc139 +vmlinux arp_tbl 0x34b99c63 +vmlinux arp_xmit 0x40e1d2d8 +vmlinux atm_alloc_charge 0xfdb40687 +vmlinux atm_charge 0x656df14b +vmlinux atm_dev_deregister 0x12eff976 +vmlinux atm_dev_lookup 0x082d4dcc +vmlinux atm_dev_register 0x45198be3 +vmlinux atm_init_aal5 0x20e8d813 +vmlinux atm_pcr_goal 0xf49bc67a +vmlinux atm_proc_root 0x6b7ece3a +vmlinux attribute_container_add_attrs 0x4794d155 +vmlinux attribute_container_add_class_device 0xcd7ed760 +vmlinux attribute_container_add_class_device_adapter 0x234e242a +vmlinux attribute_container_class_device_del 0x813d8ae7 +vmlinux attribute_container_classdev_to_container 0x409ff0f7 +vmlinux attribute_container_device_trigger 0xaafd2c37 +vmlinux attribute_container_find_class_device 0x40c4d069 +vmlinux attribute_container_register 0xf0bd25c0 +vmlinux attribute_container_remove_attrs 0xdae0beb2 +vmlinux attribute_container_remove_device 0x48e3c51a +vmlinux attribute_container_trigger 0x1e8db813 +vmlinux attribute_container_unregister 0x0c854240 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x94360d55 +vmlinux bd_claim 0x4c641e4d +vmlinux bd_release 0xf6bcd4e3 +vmlinux bd_set_size 0x5f6586e5 +vmlinux bdev_read_only 0x7634f3ca +vmlinux bdevname 0x620232c6 +vmlinux bdget 0xc1ce8d3a +vmlinux bdput 0xc59a65d4 +vmlinux bfifo_qdisc_ops 0x2d25b189 +vmlinux bio_add_page 0xdb99c0ba +vmlinux bio_alloc 0x11400d28 +vmlinux bio_alloc_bioset 0xb7f076b1 +vmlinux bio_clone 0x658d79c0 +vmlinux bio_copy_user 0xd816629e +vmlinux bio_endio 0xef4dd90e +vmlinux bio_free 0x605828e7 +vmlinux bio_get_nr_vecs 0xcfcddef2 +vmlinux bio_hw_segments 0x6dbae621 +vmlinux bio_init 0x0d5f166c +vmlinux bio_map_kern 0xf3c44141 +vmlinux bio_map_user 0x3d7c1d18 +vmlinux bio_pair_release 0x60709bbe +vmlinux bio_phys_segments 0xff87ceae +vmlinux bio_put 0xeeaf84e5 +vmlinux bio_split 0x9dbcccaf +vmlinux bio_split_pool 0x2146f99f +vmlinux bio_uncopy_user 0x7359733d +vmlinux bio_unmap_user 0x100e2cc3 +vmlinux bioset_create 0x68c208d9 +vmlinux bioset_free 0x35146399 +vmlinux bit_waitqueue 0xcb7bc48a +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0x38fc7cd5 +vmlinux blk_alloc_queue_node 0x59e8240c +vmlinux blk_cleanup_queue 0x91309d79 +vmlinux blk_complete_barrier_rq 0xe16115d0 +vmlinux blk_complete_barrier_rq_locked 0xdfcb47de +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x6fd906fd +vmlinux blk_end_sync_rq 0xb1715bb3 +vmlinux blk_execute_rq 0xac54a1e8 +vmlinux blk_get_backing_dev_info 0x276bb374 +vmlinux blk_get_queue 0xc0f6f80c +vmlinux blk_get_request 0x95fa1c3b +vmlinux blk_init_queue 0x6751f70a +vmlinux blk_init_queue_node 0xcbb6e2b4 +vmlinux blk_insert_request 0xd6376e83 +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0x30a74c20 +vmlinux blk_put_request 0xfaf60063 +vmlinux blk_queue_activity_fn 0x71eb31f4 +vmlinux blk_queue_bounce 0x08ef23b7 +vmlinux blk_queue_bounce_limit 0x08411687 +vmlinux blk_queue_dma_alignment 0xce28c517 +vmlinux blk_queue_end_tag 0x1989fcbd +vmlinux blk_queue_find_tag 0x5fdafe60 +vmlinux blk_queue_free_tags 0x62283675 +vmlinux blk_queue_hardsect_size 0x30706436 +vmlinux blk_queue_init_tags 0x7442a315 +vmlinux blk_queue_invalidate_tags 0x55cf091b +vmlinux blk_queue_issue_flush_fn 0x0e6c51f2 +vmlinux blk_queue_make_request 0xb7a7ced3 +vmlinux blk_queue_max_hw_segments 0x54bcc97c +vmlinux blk_queue_max_phys_segments 0x57fa054d +vmlinux blk_queue_max_sectors 0xd16f20fb +vmlinux blk_queue_max_segment_size 0xf108c36a +vmlinux blk_queue_merge_bvec 0x1bcdfe62 +vmlinux blk_queue_ordered 0x5fc53d49 +vmlinux blk_queue_prep_rq 0x2f1946e5 +vmlinux blk_queue_resize_tags 0xad10503c +vmlinux blk_queue_segment_boundary 0xdedba36f +vmlinux blk_queue_stack_limits 0xb97fc1f1 +vmlinux blk_queue_start_tag 0x7aaf9aae +vmlinux blk_register_region 0x9d1abbf9 +vmlinux blk_remove_plug 0x3f00c486 +vmlinux blk_requeue_request 0x587bac2d +vmlinux blk_rq_bio_prep 0xa4a4b4ff +vmlinux blk_rq_map_kern 0x61fe67f4 +vmlinux blk_rq_map_sg 0x33f70bb8 +vmlinux blk_rq_map_user 0x81142305 +vmlinux blk_rq_map_user_iov 0x057cbd98 +vmlinux blk_rq_unmap_user 0xbfdf374e +vmlinux blk_run_queue 0x7c5f0a90 +vmlinux blk_start_queue 0xb06d140c +vmlinux blk_stop_queue 0xe085430a +vmlinux blk_sync_queue 0x98575849 +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0x2c328900 +vmlinux blkdev_ioctl 0x58cce2e3 +vmlinux blkdev_issue_flush 0x78b3becd +vmlinux blkdev_put 0xf260e694 +vmlinux block_all_signals 0xc74785b2 +vmlinux block_commit_write 0x026e9f08 +vmlinux block_invalidatepage 0xf8145491 +vmlinux block_prepare_write 0x954c05cd +vmlinux block_read_full_page 0xe0780fff +vmlinux block_sync_page 0x15ad5152 +vmlinux block_truncate_page 0x2d9f0a5e +vmlinux block_write_full_page 0x796c5d3f +vmlinux bmap 0x8c4745fe +vmlinux boot_cpuid 0xc606cd3c +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0x17688c33 +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0x4d0f8648 +vmlinux bus_create_file 0x43fe99fe +vmlinux bus_find_device 0x83807ccd +vmlinux bus_for_each_dev 0x42080838 +vmlinux bus_for_each_drv 0xb4d26186 +vmlinux bus_register 0x8f365e36 +vmlinux bus_remove_device 0x2a54100a +vmlinux bus_remove_file 0x5b6941d0 +vmlinux bus_rescan_devices 0xba32c5bc +vmlinux bus_unregister 0xc3c414a5 +vmlinux cacheable_memcpy 0x582a4747 +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0xb09c6044 +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x41efb488 +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0xbf7475e7 +vmlinux cdev_alloc 0x4074dd51 +vmlinux cdev_del 0x29cdc3b8 +vmlinux cdev_init 0xae1216ca +vmlinux cfb_copyarea 0x042c45cf +vmlinux cfb_fillrect 0xacfbe54a +vmlinux cfb_imageblit 0x7a0ff411 +vmlinux check_disk_change 0x1a1be0b4 +vmlinux check_media_bay 0xcff5df0c +vmlinux class_create 0xbb1d3fff +vmlinux class_create_file 0x2cce934d +vmlinux class_destroy 0x26528a24 +vmlinux class_device_add 0xc30e8de6 +vmlinux class_device_create 0x8e5d9c41 +vmlinux class_device_create_bin_file 0x1311c28f +vmlinux class_device_create_file 0xab75933e +vmlinux class_device_del 0x662280cf +vmlinux class_device_destroy 0xc795679a +vmlinux class_device_get 0xdb661d0e +vmlinux class_device_initialize 0x2c4f220e +vmlinux class_device_put 0xa9e31f50 +vmlinux class_device_register 0xd28a2385 +vmlinux class_device_remove_bin_file 0x638de805 +vmlinux class_device_remove_file 0x43d10065 +vmlinux class_device_unregister 0x0f3d8916 +vmlinux class_get 0x616befef +vmlinux class_interface_register 0x445117f4 +vmlinux class_interface_unregister 0x63a28867 +vmlinux class_put 0x013ac0a6 +vmlinux class_register 0xf01e880b +vmlinux class_remove_file 0x00f06054 +vmlinux class_unregister 0xfeda75eb +vmlinux clear_inode 0xbfcccba3 +vmlinux clear_page_dirty_for_io 0x2bdea6c6 +vmlinux clear_pages 0xe6dd236d +vmlinux clear_user_page 0xf7424e8c +vmlinux clip_tbl_hook 0x572c6e7c +vmlinux close_bdev_excl 0x36665251 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0x2581543c +vmlinux complete_all 0xa2d4c119 +vmlinux complete_and_exit 0xfd59d987 +vmlinux compute_creds 0xd8a19d43 +vmlinux con_copy_unimap 0x93eaf47c +vmlinux con_set_default_unimap 0xac73bec4 +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0x5f0c5570 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_drivers 0x1a3a4ce6 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0x347d4c02 +vmlinux console_stop 0xd92c2568 +vmlinux cont_prepare_write 0x7342393d +vmlinux contig_page_data 0xdb19d467 +vmlinux copy_fs_struct 0x558691e8 +vmlinux copy_io_context 0xee78828d +vmlinux copy_strings_kernel 0x26942a0b +vmlinux cpu_online_map 0xedcdbfa9 +vmlinux cpu_possible_map 0xa285263d +vmlinux cpu_present_map 0x5d7ea306 +vmlinux cpu_sysdev_class 0xa753b61d +vmlinux cpufreq_cpu_get 0x59a49720 +vmlinux cpufreq_cpu_put 0x7da7d391 +vmlinux cpufreq_driver_target 0x6f9fdccf +vmlinux cpufreq_freq_attr_scaling_available_freqs 0x9fbdcc09 +vmlinux cpufreq_frequency_get_table 0x2f47d8c7 +vmlinux cpufreq_frequency_table_cpuinfo 0x734ed2e5 +vmlinux cpufreq_frequency_table_get_attr 0x706b3a33 +vmlinux cpufreq_frequency_table_put_attr 0x7ae1ae8e +vmlinux cpufreq_frequency_table_target 0x6dccda14 +vmlinux cpufreq_frequency_table_verify 0xe36dc413 +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0xebb19d1a +vmlinux cpufreq_gov_performance 0xbb7ff851 +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0xe6488b47 +vmlinux cpufreq_parse_governor 0x25692b3f +vmlinux cpufreq_register_driver 0x75dd1b8d +vmlinux cpufreq_register_governor 0x4f2ca592 +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0x05aafddf +vmlinux cpufreq_unregister_driver 0xb3585865 +vmlinux cpufreq_unregister_governor 0x66f518f4 +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0xb7b61546 +vmlinux crc32_le 0xa34f1ef5 +vmlinux create_empty_buffers 0x77327370 +vmlinux create_proc_entry 0xcc525081 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0x9d8fcac0 +vmlinux crypto_free_tfm 0xc8ce852e +vmlinux crypto_hmac 0xddbced04 +vmlinux crypto_hmac_final 0xa2031301 +vmlinux crypto_hmac_init 0x6b4f89c0 +vmlinux crypto_hmac_update 0x2c8336e5 +vmlinux crypto_register_alg 0xeb377c24 +vmlinux crypto_unregister_alg 0x050289da +vmlinux csum_partial 0x94095c16 +vmlinux csum_partial_copy_fromiovecend 0x02876657 +vmlinux csum_partial_copy_generic 0xc107c326 +vmlinux csum_tcpudp_magic 0x12d43649 +vmlinux cuda_poll 0xc0d84ced +vmlinux cuda_request 0x9309de94 +vmlinux cur_cpu_spec 0x259304d2 +vmlinux current_fs_time 0xa170057b +vmlinux current_io_context 0x75059aea +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0x95ba39c4 +vmlinux d_alloc_anon 0x5ad72d53 +vmlinux d_alloc_name 0x7aa0e8eb +vmlinux d_alloc_root 0x6c030b75 +vmlinux d_delete 0x8d3fb6d5 +vmlinux d_find_alias 0x382247b2 +vmlinux d_genocide 0x5bcecfe8 +vmlinux d_instantiate 0xc98479ea +vmlinux d_instantiate_unique 0xbf5b8ec7 +vmlinux d_invalidate 0xac84ea6f +vmlinux d_lookup 0x3b8d4f5e +vmlinux d_move 0xed23faa0 +vmlinux d_path 0xf7f31a25 +vmlinux d_prune_aliases 0x311f9503 +vmlinux d_rehash 0x714e9d16 +vmlinux d_splice_alias 0x6de5f221 +vmlinux d_validate 0x5174a8a1 +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0x4fa21fa8 +vmlinux dcache_dir_close 0x6736858a +vmlinux dcache_dir_lseek 0x3848014c +vmlinux dcache_dir_open 0x1b0de119 +vmlinux dcache_lock 0x179ec4b8 +vmlinux dcache_readdir 0x8e33150a +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0x27f2df41 +vmlinux default_backing_dev_info 0x6e6cff93 +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0x9c65c89e +vmlinux default_llseek 0x137a73b0 +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0xc7f5b458 +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0xd5c3f64f +vmlinux del_timer 0x5943d3e7 +vmlinux del_timer_sync 0x594eac68 +vmlinux dentry_open 0x54c83f2b +vmlinux dentry_unhash 0x62ed1f86 +vmlinux dequeue_signal 0xcef5d4b6 +vmlinux deregister_atm_ioctl 0xf4d9e007 +vmlinux destroy_8023_client 0x9d2c8b66 +vmlinux destroy_EII_client 0x9fc1f6c6 +vmlinux destroy_workqueue 0x04c96690 +vmlinux dev_add_pack 0xaf38ccae +vmlinux dev_alloc_name 0xf83b5840 +vmlinux dev_base 0x3facc35f +vmlinux dev_base_lock 0xc1ba49a9 +vmlinux dev_change_flags 0xa8dda0e4 +vmlinux dev_close 0xb4183cde +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0x19d7b026 +vmlinux dev_get_by_index 0x36cd07fe +vmlinux dev_get_by_name 0xabc06977 +vmlinux dev_get_flags 0xbc4e308d +vmlinux dev_getbyhwaddr 0x681d38ac +vmlinux dev_getfirstbyhwtype 0xc227af3b +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0x47cb9b07 +vmlinux dev_mc_delete 0x7674c044 +vmlinux dev_mc_upload 0xe76d9a3e +vmlinux dev_open 0xb83affab +vmlinux dev_queue_xmit 0x78cbcd0d +vmlinux dev_remove_pack 0x308efe54 +vmlinux dev_set_allmulti 0xf18f69a6 +vmlinux dev_set_mac_address 0x68097aca +vmlinux dev_set_mtu 0x4d6e9a22 +vmlinux dev_set_promiscuity 0x427acd50 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0x1e56f15a +vmlinux device_attach 0x92d2a918 +vmlinux device_bind_driver 0x4632e37f +vmlinux device_create_file 0x3c9f874f +vmlinux device_del 0x8e6d5c40 +vmlinux device_for_each_child 0x914eb14f +vmlinux device_initialize 0xd88292c2 +vmlinux device_is_compatible 0xc8db8840 +vmlinux device_pm_set_parent 0xec0e3359 +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0xbbf286bd +vmlinux device_release_driver 0x1e972f68 +vmlinux device_remove_file 0x3bff45dd +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0xb463bd25 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0x5ca577b7 +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_get_required_mask 0x2c45015c +vmlinux dma_pool_alloc 0xfa6cb18e +vmlinux dma_pool_create 0xb1c3a81e +vmlinux dma_pool_destroy 0x4c9fc62b +vmlinux dma_pool_free 0x04a02f51 +vmlinux dma_spin_lock 0x028d62f7 +vmlinux dnotify_parent 0x1eb20a30 +vmlinux do_IRQ 0x5ab67931 +vmlinux do_SAK 0xaef3f01d +vmlinux do_add_mount 0x50dd81d4 +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0x7ab34365 +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0x95234428 +vmlinux do_mmap_pgoff 0xfc6fe96a +vmlinux do_munmap 0x60a512b1 +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x19d243f5 +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_signal 0x8c78505d +vmlinux do_softirq 0x27cbbea7 +vmlinux do_sync_read 0xdd8c74c7 +vmlinux do_sync_write 0x067f1e3a +vmlinux do_syscall_trace_enter 0x569d24d8 +vmlinux do_syscall_trace_leave 0x7d50f79f +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0xadf70b53 +vmlinux dput 0xb3d27cd7 +vmlinux dq_data_lock 0x22ca4cc3 +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x97536932 +vmlinux dquot_alloc_inode 0x5180325d +vmlinux dquot_alloc_space 0x2e0c4c7a +vmlinux dquot_commit 0x57d85ff4 +vmlinux dquot_commit_info 0x4490d21f +vmlinux dquot_drop 0xe81e6a03 +vmlinux dquot_free_inode 0x888dbad6 +vmlinux dquot_free_space 0xdf21c02e +vmlinux dquot_initialize 0x4a11aba8 +vmlinux dquot_mark_dquot_dirty 0xdd3c7df3 +vmlinux dquot_release 0xff7dd0c7 +vmlinux dquot_transfer 0xe043f170 +vmlinux drive_is_ready 0x8324bfb2 +vmlinux driver_attach 0x5d218279 +vmlinux driver_create_file 0x6cd7f794 +vmlinux driver_find 0xd6de299e +vmlinux driver_find_device 0xf1e8676b +vmlinux driver_for_each_device 0xd1512ae1 +vmlinux driver_register 0x26357658 +vmlinux driver_remove_file 0x4c4560ca +vmlinux driver_unregister 0xa3f658f3 +vmlinux drop_super 0x45d302d9 +vmlinux dst_alloc 0x842506ef +vmlinux dst_destroy 0x220261cb +vmlinux dump_stack 0x6b2dc060 +vmlinux eighty_ninty_three 0xba69fcf4 +vmlinux elevator_exit 0x3cb5d212 +vmlinux elevator_init 0xe80afc80 +vmlinux elv_add_request 0xb527bdb6 +vmlinux elv_completed_request 0x9462ea3f +vmlinux elv_dequeue_request 0xbfb2e1c1 +vmlinux elv_dispatch_sort 0xf3137e15 +vmlinux elv_next_request 0xe27e2573 +vmlinux elv_queue_empty 0x7453829c +vmlinux elv_register 0xa62888d0 +vmlinux elv_requeue_request 0xea2bcde8 +vmlinux elv_rq_merge_ok 0x5721f9de +vmlinux elv_try_merge 0xfd28d69a +vmlinux elv_unregister 0x454bc872 +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_irq 0xfcec0987 +vmlinux enable_kernel_altivec 0x3f406a3b +vmlinux enable_kernel_fp 0xfded48ed +vmlinux end_buffer_async_write 0x36d3d72c +vmlinux end_buffer_read_sync 0x91e5e47a +vmlinux end_buffer_write_sync 0x02452e95 +vmlinux end_page_writeback 0xcda49c8f +vmlinux end_request 0x342ff14a +vmlinux end_that_request_chunk 0xcfe44bf7 +vmlinux end_that_request_first 0xc4af0679 +vmlinux end_that_request_last 0x82679e45 +vmlinux eth_type_trans 0xbce76fd6 +vmlinux ether_setup 0x8d8ba46a +vmlinux ethtool_op_get_link 0x93f436b9 +vmlinux ethtool_op_get_perm_addr 0x6b8c7a95 +vmlinux ethtool_op_get_sg 0xaa8f3fc5 +vmlinux ethtool_op_get_tso 0x53146ac7 +vmlinux ethtool_op_get_tx_csum 0xce2fe59b +vmlinux ethtool_op_get_ufo 0x08e9fe20 +vmlinux ethtool_op_set_sg 0x7811e0ba +vmlinux ethtool_op_set_tso 0x008e35d8 +vmlinux ethtool_op_set_tx_csum 0x8f76127b +vmlinux ethtool_op_set_tx_hw_csum 0x20a22464 +vmlinux ethtool_op_set_ufo 0xdf83418f +vmlinux exit_fs 0xbd03f861 +vmlinux f_setown 0xabffef8a +vmlinux fasync_helper 0xd83c266d +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x6a2aacec +vmlinux fb_con_duit 0xa5fa913b +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0xb69138f1 +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0x2ba3a8c2 +vmlinux fb_get_buffer_offset 0xbb1d97a9 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0x4ee5ca27 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0xbbc9079b +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0x24deb134 +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x4aae7236 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0xebf76167 +vmlinux fb_set_suspend 0xe11d4f5a +vmlinux fb_set_var 0x36f3571f +vmlinux fb_show_logo 0x0677f247 +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x9e2146be +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fbcon_set_bitops 0xd7a2ad62 +vmlinux fbcon_set_tileops 0xc992dd9e +vmlinux fd_install 0x441d3ba9 +vmlinux fddi_type_trans 0xcaeca844 +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x2d6a7cd5 +vmlinux file_fsync 0x8a51a65f +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0x1250f3c5 +vmlinux filemap_fdatawait 0xdc25bb84 +vmlinux filemap_fdatawrite 0x5a1b9a51 +vmlinux filemap_flush 0xc1e5c06e +vmlinux filemap_nopage 0x325a0405 +vmlinux filemap_populate 0x740131d6 +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0xd06f749c +vmlinux filp_open 0xc726be95 +vmlinux find_all_nodes 0xf353fe5b +vmlinux find_bus 0x2bd7a4f6 +vmlinux find_compatible_devices 0x6fafa6f9 +vmlinux find_devices 0x02af79c8 +vmlinux find_font 0xf7584a9c +vmlinux find_get_page 0x9641bbf4 +vmlinux find_inode_number 0x210893a3 +vmlinux find_lock_page 0x8427fba8 +vmlinux find_next_bit 0xc0a3d105 +vmlinux find_next_zero_bit 0x479c3c86 +vmlinux find_next_zero_le_bit 0xa0c45bfc +vmlinux find_or_create_page 0x88ddcadb +vmlinux find_path_device 0x8b554eae +vmlinux find_task_by_pid_type 0x8429a4fa +vmlinux find_trylock_page 0x61bdb52c +vmlinux find_type_devices 0x52bad76e +vmlinux find_vma 0x459b0da4 +vmlinux finish_wait 0x271f4d2a +vmlinux firmware_register 0x5b4031f4 +vmlinux firmware_unregister 0xa09e120c +vmlinux flock_lock_file_wait 0x94487229 +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_dcache_page 0x6951770a +vmlinux flush_dcache_range 0xefde1bbe +vmlinux flush_hash_pages 0xbd8d541d +vmlinux flush_icache_user_range 0x01442372 +vmlinux flush_instruction_cache 0x515e24a7 +vmlinux flush_old_exec 0x87ebfb91 +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x8bd104cb +vmlinux flush_tlb_kernel_range 0xa3e75545 +vmlinux flush_tlb_page 0xfb158cdd +vmlinux flush_workqueue 0xe85cc827 +vmlinux follow_down 0x7438e6fc +vmlinux follow_up 0x5d7fe21c +vmlinux force_sig 0xa00b7427 +vmlinux fput 0x6a5762c6 +vmlinux framebuffer_alloc 0x953ca96f +vmlinux framebuffer_release 0x05048d62 +vmlinux free_buffer_head 0xa9a0a3f1 +vmlinux free_dma 0x72b243d4 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0xdd71f934 +vmlinux free_pages 0x4302d0eb +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0xfe7616a9 +vmlinux freeze_bdev 0x9f2ba96e +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0x875fcef6 +vmlinux g450_mnp2f 0x88d2845f +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0x0f93d64c +vmlinux gen_replace_estimator 0x46b64038 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x8da4ad05 +vmlinux generic_block_bmap 0x2f61e8e5 +vmlinux generic_commit_write 0x4646dca7 +vmlinux generic_cont_expand 0xa5924487 +vmlinux generic_delete_inode 0x60a8c65b +vmlinux generic_drop_inode 0xf7ecbae4 +vmlinux generic_file_aio_read 0x4a8fab4b +vmlinux generic_file_aio_write 0x1c9cce6a +vmlinux generic_file_aio_write_nolock 0x70fb157c +vmlinux generic_file_buffered_write 0x2b99ee6e +vmlinux generic_file_direct_write 0xa51fb163 +vmlinux generic_file_llseek 0x564e2c75 +vmlinux generic_file_mmap 0xb9fe1a3d +vmlinux generic_file_open 0x0d5b1d99 +vmlinux generic_file_read 0xe2bf2c4c +vmlinux generic_file_readonly_mmap 0xae5ac71b +vmlinux generic_file_readv 0x32438999 +vmlinux generic_file_sendfile 0x2288079b +vmlinux generic_file_write 0x6011d3f4 +vmlinux generic_file_write_nolock 0xf887a794 +vmlinux generic_file_writev 0x8361a478 +vmlinux generic_fillattr 0xf24892c3 +vmlinux generic_getxattr 0xaaec5953 +vmlinux generic_ide_ioctl 0x554a33fc +vmlinux generic_listxattr 0xd282e4a3 +vmlinux generic_make_request 0xe0eff2a7 +vmlinux generic_osync_inode 0xc79bea3b +vmlinux generic_permission 0xf5a4dada +vmlinux generic_read_dir 0xb20e45d7 +vmlinux generic_readlink 0x14a43d78 +vmlinux generic_removexattr 0x943c8299 +vmlinux generic_ro_fops 0x26094a59 +vmlinux generic_setxattr 0x5f50d01a +vmlinux generic_shutdown_super 0x013da58e +vmlinux generic_unplug_device 0xb4c533c9 +vmlinux generic_write_checks 0xf2ff40ad +vmlinux genl_register_family 0x1584cf78 +vmlinux genl_register_ops 0x61cc7d3d +vmlinux genl_sock 0x6e84dd6e +vmlinux genl_unregister_family 0xdbe324ac +vmlinux genl_unregister_ops 0x5b740cec +vmlinux get_backlight_enable 0xeeccc4af +vmlinux get_backlight_level 0x9fbc6790 +vmlinux get_bus 0xfb419d91 +vmlinux get_cpu_sysdev 0xcf47f70c +vmlinux get_dcookie 0x3795c658 +vmlinux get_default_font 0x093e3659 +vmlinux get_device 0xfa416ad9 +vmlinux get_disk 0xadc00c51 +vmlinux get_driver 0xdb8902cf +vmlinux get_empty_filp 0xacdd15b5 +vmlinux get_fs_type 0x8c5f78cb +vmlinux get_io_context 0xdb9c95d5 +vmlinux get_jiffies_64 0x37e74642 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_property 0x2135b340 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0x33b2841d +vmlinux get_sb_nodev 0xcca91c26 +vmlinux get_sb_pseudo 0x25b1a4b4 +vmlinux get_sb_single 0xbfecaf80 +vmlinux get_super 0xd206c16c +vmlinux get_task_mm 0x05b5f1db +vmlinux get_unmapped_area 0xc2901254 +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x07cb2ab7 +vmlinux get_wchan 0xe98ba02e +vmlinux get_write_access 0x45f2f097 +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x15dda119 +vmlinux giveup_altivec 0x41fcef8c +vmlinux giveup_fpu 0x61d1317c +vmlinux gnet_stats_copy_app 0x69eced7e +vmlinux gnet_stats_copy_basic 0xe8225dd5 +vmlinux gnet_stats_copy_queue 0x831bd453 +vmlinux gnet_stats_copy_rate_est 0x230d9c16 +vmlinux gnet_stats_finish_copy 0x686b1e25 +vmlinux gnet_stats_start_copy 0x175c6178 +vmlinux gnet_stats_start_copy_compat 0x4c968d31 +vmlinux grab_cache_page_nowait 0xb5bee885 +vmlinux groups_alloc 0x51cd47e2 +vmlinux groups_free 0x111bcb2c +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0xb27b8da4 +vmlinux have_submounts 0xf36e6a8f +vmlinux high_memory 0x8a7d1c31 +vmlinux hippi_type_trans 0xb8fcc18a +vmlinux hwmon_device_register 0xe0431d33 +vmlinux hwmon_device_unregister 0xaa1c44b5 +vmlinux i2c_adapter_class 0xbccba59c +vmlinux i2c_adapter_dev_release 0xe9149230 +vmlinux i2c_adapter_driver 0x3b8cdd19 +vmlinux i2c_add_adapter 0xac77099e +vmlinux i2c_add_driver 0xe2f3e88d +vmlinux i2c_attach_client 0xa03769a0 +vmlinux i2c_bit_add_bus 0xd0ea22a3 +vmlinux i2c_bit_del_bus 0x741629e3 +vmlinux i2c_bus_type 0x8ee6883b +vmlinux i2c_check_addr 0x8bc00a0d +vmlinux i2c_clients_command 0x835e772f +vmlinux i2c_control 0x762dd55b +vmlinux i2c_del_adapter 0x3e795d64 +vmlinux i2c_del_driver 0xee9feba3 +vmlinux i2c_detach_client 0x68be2efc +vmlinux i2c_get_adapter 0x83f951bf +vmlinux i2c_master_recv 0x7f9c1d27 +vmlinux i2c_master_send 0xa64ba7ba +vmlinux i2c_probe 0x3ee70220 +vmlinux i2c_put_adapter 0x1ef54123 +vmlinux i2c_release_client 0x6cc7b0de +vmlinux i2c_smbus_read_byte 0x158c26dd +vmlinux i2c_smbus_read_byte_data 0x74a05c8c +vmlinux i2c_smbus_read_i2c_block_data 0x148ee890 +vmlinux i2c_smbus_read_word_data 0xfd6a7ac6 +vmlinux i2c_smbus_write_block_data 0x67c0f30d +vmlinux i2c_smbus_write_byte 0x5ee10d79 +vmlinux i2c_smbus_write_byte_data 0x0db3a39b +vmlinux i2c_smbus_write_quick 0x3c064c6d +vmlinux i2c_smbus_write_word_data 0x3f9b011d +vmlinux i2c_smbus_xfer 0x946767d1 +vmlinux i2c_transfer 0x50ef7d95 +vmlinux i2c_use_client 0x1bdeb2f8 +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x3a1e032a +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_add_setting 0x4a4f5e5b +vmlinux ide_build_dmatable 0xa480b69d +vmlinux ide_build_sglist 0xbbf3f509 +vmlinux ide_bus_type 0x008b18cf +vmlinux ide_config_drive_speed 0x71b031ec +vmlinux ide_destroy_dmatable 0xeec37743 +vmlinux ide_dma_enable 0x78fddd26 +vmlinux ide_dma_intr 0x686275ac +vmlinux ide_dma_setup 0xd2a09281 +vmlinux ide_dma_speed 0xc9a502bc +vmlinux ide_dma_start 0x32fccdf1 +vmlinux ide_dma_verbose 0x40728b5c +vmlinux ide_do_drive_cmd 0xfdab926d +vmlinux ide_do_reset 0xadab11e0 +vmlinux ide_dump_status 0x6290b729 +vmlinux ide_end_drive_cmd 0xdc6b86c6 +vmlinux ide_end_request 0x2b8a6e9b +vmlinux ide_error 0x529ffcb4 +vmlinux ide_execute_command 0x9541f3ae +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x738d880b +vmlinux ide_get_error_location 0x54b0412f +vmlinux ide_hwifs 0x0d223e3c +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0x99f4d0c3 +vmlinux ide_init_drive_cmd 0xa73b5f11 +vmlinux ide_init_sg_cmd 0x563ca687 +vmlinux ide_lock 0xb0e42262 +vmlinux ide_map_sg 0xfafac2df +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x0f0f8227 +vmlinux ide_pci_unregister_driver 0xe7eaefad +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0x18a8772e +vmlinux ide_register_hw 0x0ca684cc +vmlinux ide_register_hw_with_fixup 0xfefd4a01 +vmlinux ide_register_region 0xa7fa7176 +vmlinux ide_register_subdriver 0x265c9eff +vmlinux ide_set_handler 0xda8e3cd3 +vmlinux ide_set_xfer_rate 0xc14d50df +vmlinux ide_setup_dma 0xc7b36076 +vmlinux ide_setup_pci_device 0x88895585 +vmlinux ide_setup_pci_devices 0x5bae875e +vmlinux ide_setup_pci_noise 0x0d29a854 +vmlinux ide_spin_wait_hwgroup 0x7e165882 +vmlinux ide_stall_queue 0xc744e90c +vmlinux ide_undecoded_slave 0xe70c246a +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0x6d1356c4 +vmlinux ide_unregister_subdriver 0x182bb9df +vmlinux ide_use_dma 0x36f2746a +vmlinux ide_wait_not_busy 0x8b209594 +vmlinux ide_wait_stat 0x8861f48c +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0x9dbf1158 +vmlinux idr_find 0xf6a98ae7 +vmlinux idr_get_new 0x2d29e50a +vmlinux idr_get_new_above 0x1421a04c +vmlinux idr_init 0xb6ff27a7 +vmlinux idr_pre_get 0x52a7207f +vmlinux idr_remove 0xa7409aaf +vmlinux iget5_locked 0xba4efa47 +vmlinux iget_locked 0x100b14ab +vmlinux igrab 0x73002207 +vmlinux ilookup 0xc407cf95 +vmlinux ilookup5 0xfc01d1d0 +vmlinux ilookup5_nowait 0x76dc3337 +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0x369173d6 +vmlinux in_egroup_p 0xd8a2ab95 +vmlinux in_group_p 0xc3cf1128 +vmlinux in_lock_functions 0x09d44df9 +vmlinux inet6_lookup 0x8223277c +vmlinux inet6_lookup_listener 0xd140c357 +vmlinux inet_accept 0x6f5cc7c9 +vmlinux inet_add_protocol 0x79e3c911 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0x1ae11b2f +vmlinux inet_bind_bucket_create 0xa36f819b +vmlinux inet_bind_hash 0x5818263e +vmlinux inet_csk_accept 0xdeb13f20 +vmlinux inet_csk_clear_xmit_timers 0x96a2f811 +vmlinux inet_csk_clone 0x123c38a1 +vmlinux inet_csk_delete_keepalive_timer 0x8dd3756a +vmlinux inet_csk_destroy_sock 0x764766be +vmlinux inet_csk_get_port 0x8e3930c6 +vmlinux inet_csk_init_xmit_timers 0x4709668f +vmlinux inet_csk_listen_start 0xaf4928f8 +vmlinux inet_csk_listen_stop 0x5fe52b85 +vmlinux inet_csk_reqsk_queue_hash_add 0x72fc2bb2 +vmlinux inet_csk_reqsk_queue_prune 0x46ac6ddd +vmlinux inet_csk_reset_keepalive_timer 0x1b2bc56d +vmlinux inet_csk_route_req 0xf00287c2 +vmlinux inet_csk_search_req 0x9bf513aa +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0xacd5eee7 +vmlinux inet_dgram_connect 0x1488902f +vmlinux inet_dgram_ops 0x2cca3080 +vmlinux inet_diag_register 0xf4182940 +vmlinux inet_diag_unregister 0xe0a00582 +vmlinux inet_getname 0x6b5ec59a +vmlinux inet_ioctl 0xb08628d0 +vmlinux inet_listen 0xd900ba78 +vmlinux inet_listen_wlock 0x502302b7 +vmlinux inet_put_port 0xb8c7a604 +vmlinux inet_register_protosw 0xbaf6481c +vmlinux inet_release 0x8c68942b +vmlinux inet_select_addr 0x654aade2 +vmlinux inet_sendmsg 0x0cf3b25c +vmlinux inet_shutdown 0x4aea0842 +vmlinux inet_sk_rebuild_header 0x74b4f2ea +vmlinux inet_sock_destruct 0xf9858420 +vmlinux inet_stream_connect 0x4421bdf2 +vmlinux inet_stream_ops 0x7f7fe05f +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0xfea93f1e +vmlinux inet_twsk_deschedule 0x09d951ed +vmlinux inet_twsk_schedule 0xdbedd77e +vmlinux inet_unregister_protosw 0x746abf82 +vmlinux inetdev_by_index 0x480352fb +vmlinux init_buffer 0x6ec9adfd +vmlinux init_mm 0xe022bba0 +vmlinux init_special_inode 0xe110ad9f +vmlinux init_task 0x0bd0cf82 +vmlinux init_timer 0xa676f823 +vmlinux inode_add_bytes 0xcd58ac0a +vmlinux inode_change_ok 0xf01987c3 +vmlinux inode_get_bytes 0xef698483 +vmlinux inode_init_once 0xe3daed37 +vmlinux inode_needs_sync 0xe9269510 +vmlinux inode_set_bytes 0x62f4082b +vmlinux inode_setattr 0x5dff211a +vmlinux inode_sub_bytes 0xab276076 +vmlinux inode_update_time 0xda926a36 +vmlinux inotify_dentry_parent_queue_event 0x8762fecb +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0x2578a6e6 +vmlinux inotify_inode_queue_event 0x9380f769 +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0xc16ee173 +vmlinux input_allocate_device 0x2c5cdb09 +vmlinux input_class 0xe8e50026 +vmlinux input_close_device 0x71709d20 +vmlinux input_event 0xf88f5a6e +vmlinux input_flush_device 0xc17ded37 +vmlinux input_grab_device 0x4b78b6cd +vmlinux input_open_device 0x84350ed9 +vmlinux input_register_device 0xab89800c +vmlinux input_register_handler 0xf28a90d3 +vmlinux input_release_device 0x54954482 +vmlinux input_unregister_device 0x473f1e38 +vmlinux input_unregister_handler 0x9e17eca6 +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0xbf54cd67 +vmlinux int_sqrt 0xb678366f +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x11d24cb6 +vmlinux inter_module_unregister 0x4b569905 +vmlinux intercept_table 0x8541bccc +vmlinux interruptible_sleep_on 0x7e613127 +vmlinux interruptible_sleep_on_timeout 0xd96c8608 +vmlinux invalidate_bdev 0x55df5787 +vmlinux invalidate_inode_pages 0x5f293898 +vmlinux invalidate_inode_pages2 0x20281ddf +vmlinux invalidate_inode_pages2_range 0xb3314790 +vmlinux invalidate_inodes 0x02e19bf0 +vmlinux invalidate_partition 0x13bce8a1 +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0xb758ea5b +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioremap 0x80cc7af9 +vmlinux ioremap_bot 0xa38e691a +vmlinux iounmap 0xedc03953 +vmlinux iov_shorten 0xc11d8093 +vmlinux ip4_datagram_connect 0x6e4dfd9e +vmlinux ip_build_and_send_pkt 0xc69c99f2 +vmlinux ip_cmsg_recv 0xcbf4fbaf +vmlinux ip_ct_attach 0x197477a0 +vmlinux ip_defrag 0x113f9125 +vmlinux ip_fast_csum 0xe4627d16 +vmlinux ip_fragment 0x8a12e244 +vmlinux ip_generic_getfrag 0xe4995356 +vmlinux ip_getsockopt 0x6f271e9c +vmlinux ip_mc_dec_group 0xb1e87ebf +vmlinux ip_mc_inc_group 0x4fd10ba7 +vmlinux ip_mc_join_group 0x9b78897b +vmlinux ip_queue_xmit 0xb739066d +vmlinux ip_route_input 0x75d9f62c +vmlinux ip_route_me_harder 0x55538224 +vmlinux ip_route_output_flow 0xeae1113e +vmlinux ip_route_output_key 0x85d19f80 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0x434ccab0 +vmlinux ip_setsockopt 0xa28f1c54 +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0x3b7c124b +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0xc1712523 +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0xa45e3048 +vmlinux irq_desc 0x8b157904 +vmlinux irq_stat 0x1e8aa7c0 +vmlinux is_bad_inode 0x081fa30f +vmlinux is_console_locked 0x944a564d +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux isa_io_base 0x5f8a2728 +vmlinux isa_mem_base 0xbfa78112 +vmlinux iunique 0x5d59a632 +vmlinux iw_handler_get_spy 0x46f3fc6b +vmlinux iw_handler_get_thrspy 0xef5127dc +vmlinux iw_handler_set_spy 0x97e9f3b5 +vmlinux iw_handler_set_thrspy 0x12bcda82 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kd_mksound 0x22b325d5 +vmlinux kern_mount 0x801bf288 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0xa23c2bef +vmlinux kernel_recvmsg 0xe7ac6a1e +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0x2c41df81 +vmlinux kernel_subsys 0x16a5fc2b +vmlinux kernel_thread 0x7ca341af +vmlinux key_alloc 0x3ca726c9 +vmlinux key_create_or_update 0x459db887 +vmlinux key_instantiate_and_link 0x7682b77f +vmlinux key_link 0xe728420e +vmlinux key_negate_and_link 0x6b07f9db +vmlinux key_payload_reserve 0xe79d0421 +vmlinux key_put 0xf41a834e +vmlinux key_revoke 0xe3c13647 +vmlinux key_task_permission 0xa7690d72 +vmlinux key_type_user 0x16a2ccf9 +vmlinux key_unlink 0x9bd08b5c +vmlinux key_update 0xea7987f1 +vmlinux key_validate 0x7a3f0439 +vmlinux keyring_clear 0x38fc564b +vmlinux keyring_search 0x1551bea2 +vmlinux kfifo_alloc 0x5cc5b658 +vmlinux kfifo_free 0x08a64e7c +vmlinux kfifo_init 0xfa31cd3b +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0x5b264244 +vmlinux kill_anon_super 0xf67906e5 +vmlinux kill_block_super 0x1f40703d +vmlinux kill_fasync 0x09b93ec4 +vmlinux kill_litter_super 0x44b01710 +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xec10e63a +vmlinux klist_add_head 0xe14bb3a2 +vmlinux klist_add_tail 0x8bd126f9 +vmlinux klist_del 0x7081deed +vmlinux klist_init 0x83ba3c87 +vmlinux klist_iter_exit 0x5dbca5b8 +vmlinux klist_iter_init 0xba799312 +vmlinux klist_iter_init_node 0xee8c66d5 +vmlinux klist_next 0x0d1a949b +vmlinux klist_node_attached 0x1d1ee37c +vmlinux klist_remove 0x88277446 +vmlinux km_new_mapping 0xc7f0d982 +vmlinux km_policy_notify 0x9694da77 +vmlinux km_state_notify 0x5b557852 +vmlinux km_waitq 0x9b0f1de9 +vmlinux kmap_high 0x2a404de3 +vmlinux kmap_prot 0x1407c6e7 +vmlinux kmap_pte 0xb53a4336 +vmlinux kmem_cache_alloc 0x1ea11333 +vmlinux kmem_cache_create 0x9442ef82 +vmlinux kmem_cache_destroy 0x8c7c1b1a +vmlinux kmem_cache_free 0x16566840 +vmlinux kmem_cache_name 0xaeaaee9a +vmlinux kmem_cache_shrink 0x975113fd +vmlinux kmem_cache_size 0x96839b97 +vmlinux kmem_find_general_cachep 0xab0a6cb0 +vmlinux kobject_add 0x07ff7031 +vmlinux kobject_del 0x8cace314 +vmlinux kobject_get 0xdafaaa2c +vmlinux kobject_hotplug 0x96fef74a +vmlinux kobject_init 0xe757030a +vmlinux kobject_put 0x52fbbc1a +vmlinux kobject_register 0x4072f530 +vmlinux kobject_set_name 0xd5c233f4 +vmlinux kobject_uevent 0xaa83caef +vmlinux kobject_uevent_atomic 0xa6f43f86 +vmlinux kobject_unregister 0x597d777e +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x9e87265b +vmlinux kset_register 0x9596ebd7 +vmlinux kset_unregister 0x438a8a8c +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x2d563822 +vmlinux kthread_create 0x6e228567 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0x8cea9879 +vmlinux kthread_stop_sem 0x49133abb +vmlinux kunmap_high 0xa3b64d68 +vmlinux kzalloc 0x1d10cdb2 +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0x97be5b47 +vmlinux lease_modify 0x01c0c871 +vmlinux linkwatch_fire_event 0x39811e72 +vmlinux ll_rw_block 0x0f27872d +vmlinux llc_add_pack 0x97858547 +vmlinux llc_build_and_send_ui_pkt 0x1d1201ed +vmlinux llc_mac_hdr_init 0x6df470b6 +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0x87ce4bc2 +vmlinux llc_sap_find 0x68555a6a +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0xe63f54c8 +vmlinux llc_sap_open 0xf1e9914c +vmlinux llc_set_station_handler 0xef419f99 +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_nls 0xd9ae537a +vmlinux load_nls_default 0x417a956f +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_kernel 0x3656bf5a +vmlinux lock_may_read 0x4988c34a +vmlinux lock_may_write 0xd684c3c2 +vmlinux lock_rename 0xeaebc905 +vmlinux lock_sock 0x0392bfa3 +vmlinux locks_copy_lock 0xff84a56d +vmlinux locks_init_lock 0x1ff1dc0f +vmlinux locks_mandatory_area 0x9ec67cf0 +vmlinux locks_remove_posix 0x241033c3 +vmlinux lookup_create 0x2691badd +vmlinux lookup_hash 0xf7c1e0bd +vmlinux lookup_instantiate_filp 0x8b3254ac +vmlinux lookup_one_len 0x790b5378 +vmlinux loopback_dev 0x2bfc2b27 +vmlinux loops_per_jiffy 0xba497f13 +vmlinux mac_find_mode 0xb555baca +vmlinux mac_hid_mouse_emulate_buttons 0x371dde90 +vmlinux mac_map_monitor_sense 0xe2304303 +vmlinux mac_var_to_vmode 0x00907cd5 +vmlinux mac_vmode_to_var 0x08ed0b62 +vmlinux machine_check_exception 0xb6599b9a +vmlinux machine_is_compatible 0x952e843b +vmlinux machine_power_off 0x091c824a +vmlinux macio_dev_get 0x3598e25c +vmlinux macio_dev_put 0xe9146766 +vmlinux macio_find 0xde5a493e +vmlinux macio_register_driver 0x88fc04a2 +vmlinux macio_release_resource 0xb1a06f39 +vmlinux macio_release_resources 0x003d48df +vmlinux macio_request_resource 0xa780c8c3 +vmlinux macio_request_resources 0xc3ccbc0b +vmlinux macio_unregister_driver 0x5a05d038 +vmlinux make_8023_client 0x03905119 +vmlinux make_EII_client 0x1b5c7d2f +vmlinux make_bad_inode 0x4c7868b9 +vmlinux malloc_sizes 0x49d80d58 +vmlinux mapping_tagged 0xef4ff345 +vmlinux mark_buffer_async_write 0x6ef94d34 +vmlinux mark_buffer_dirty 0xed75f0f5 +vmlinux mark_buffer_dirty_inode 0xf6bc043a +vmlinux mark_info_dirty 0xab773ac9 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x92f22a9b +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux matrox_G100 0x0fdec300 +vmlinux matrox_cfbX_init 0x1479ed9b +vmlinux matrox_millennium 0x775925f3 +vmlinux matrox_mystique 0xc69a1cae +vmlinux matroxfb_DAC_in 0x63785961 +vmlinux matroxfb_DAC_out 0x31e51a39 +vmlinux matroxfb_PLL_calcclock 0x25cf8049 +vmlinux matroxfb_enable_irq 0xf1b60058 +vmlinux matroxfb_g450_connect 0x4a28bfbc +vmlinux matroxfb_g450_setclk 0x8486da99 +vmlinux matroxfb_g450_setpll_cond 0xa59a8b03 +vmlinux matroxfb_g450_shutdown 0xb1ed85d1 +vmlinux matroxfb_read_pins 0xbe30db1a +vmlinux matroxfb_register_driver 0x21e1ed3a +vmlinux matroxfb_unregister_driver 0xec61d5d9 +vmlinux matroxfb_var2my 0xabd8e427 +vmlinux matroxfb_vgaHWinit 0xb45fd474 +vmlinux matroxfb_vgaHWrestore 0x1a59e7e6 +vmlinux matroxfb_wait_for_sync 0xad8efa98 +vmlinux max_mapnr 0x01139ffc +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0xc4824145 +vmlinux may_umount_tree 0x43d145cc +vmlinux mb_cache_create 0x28156e1b +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0x470f1fca +vmlinux mb_cache_entry_find_first 0x174dddfa +vmlinux mb_cache_entry_find_next 0x92a562e6 +vmlinux mb_cache_entry_free 0x0e2c7706 +vmlinux mb_cache_entry_get 0xb9cf3b26 +vmlinux mb_cache_entry_insert 0xc2553ede +vmlinux mb_cache_entry_release 0xa93f8280 +vmlinux mb_cache_shrink 0x625cace4 +vmlinux mem_map 0x69b98842 +vmlinux memchr 0xdd27fa87 +vmlinux memcmp 0x71c90087 +vmlinux memcpy 0x9d669763 +vmlinux memcpy_fromiovec 0x9fb3dd30 +vmlinux memcpy_fromiovecend 0x6e440b58 +vmlinux memcpy_toiovec 0x9ceb163c +vmlinux memmove 0x99bb8806 +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xcfaf79ba +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0xbe8a1485 +vmlinux mempool_create_node 0x31448a4a +vmlinux mempool_destroy 0xe5077a8f +vmlinux mempool_free 0x37a9798f +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x931d2521 +vmlinux memscan 0x4dec6038 +vmlinux memset 0x5f754e5a +vmlinux misc_deregister 0x3534656d +vmlinux misc_register 0xc120830c +vmlinux mmput 0xef2f5fa6 +vmlinux mmu_hash_lock 0xcad08e48 +vmlinux mnt_pin 0x99145e76 +vmlinux mnt_unpin 0x2b1a60e7 +vmlinux mntput_no_expire 0x5b69d86b +vmlinux mod_reg_security 0xbeb39d0a +vmlinux mod_timer 0x400a2c21 +vmlinux mod_unreg_security 0x2d9905ac +vmlinux module_add_driver 0x54a95083 +vmlinux module_refcount 0x610e9028 +vmlinux module_remove_driver 0x6e68ca73 +vmlinux mol_trampoline 0x0dbf38b8 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0x7f62339b +vmlinux mpage_readpages 0x5a67db0c +vmlinux mpage_writepage 0xec44c73f +vmlinux mpage_writepages 0x9cca176c +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux multipath_alg_register 0xed2cb49d +vmlinux multipath_alg_unregister 0x79c7f63c +vmlinux n_tty_ioctl 0x6450a570 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0xf871ae33 +vmlinux neigh_changeaddr 0xd6630311 +vmlinux neigh_compat_output 0x4c81b6f4 +vmlinux neigh_connected_output 0xc9f7698d +vmlinux neigh_create 0xd1fd2b72 +vmlinux neigh_delete 0xbde7b599 +vmlinux neigh_destroy 0x2ea6a8f6 +vmlinux neigh_dump_info 0x61391597 +vmlinux neigh_event_ns 0xf9318be1 +vmlinux neigh_for_each 0x6cfb24ac +vmlinux neigh_ifdown 0xa351c437 +vmlinux neigh_lookup 0xd813f037 +vmlinux neigh_lookup_nodev 0x11717480 +vmlinux neigh_parms_alloc 0xa97582c7 +vmlinux neigh_parms_release 0xdfa6a060 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0x7d5da7b2 +vmlinux neigh_seq_next 0x4e8b188e +vmlinux neigh_seq_start 0x49779c9f +vmlinux neigh_seq_stop 0x01ce4fbc +vmlinux neigh_sysctl_register 0xeca36437 +vmlinux neigh_sysctl_unregister 0xe3fb20ed +vmlinux neigh_table_clear 0x3e0b6863 +vmlinux neigh_table_init 0x385877c1 +vmlinux neigh_update 0x51c91020 +vmlinux neigh_update_hhs 0x8e4a09f8 +vmlinux neightbl_dump_info 0x94ef9153 +vmlinux neightbl_set 0xd85d8a90 +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0xf9772da1 +vmlinux netdev_features_change 0x253151b7 +vmlinux netdev_rx_csum_fault 0x9db86559 +vmlinux netdev_set_master 0x5e1878c7 +vmlinux netdev_state_change 0x63e397f4 +vmlinux netif_carrier_off 0xa910a8ff +vmlinux netif_carrier_on 0x52e09833 +vmlinux netif_receive_skb 0xc58f4711 +vmlinux netif_rx 0x34244d63 +vmlinux netif_rx_ni 0x0cd9e264 +vmlinux netlink_ack 0x0e8b4fa2 +vmlinux netlink_broadcast 0x80f74a0c +vmlinux netlink_dump_start 0x8e294792 +vmlinux netlink_kernel_create 0x13168f39 +vmlinux netlink_queue_skip 0x83f22a4f +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0xc3a75795 +vmlinux netlink_set_err 0x0f035f89 +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0xbd1cc605 +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0xf2da9eea +vmlinux netpoll_parse_options 0xe675f1aa +vmlinux netpoll_poll 0x71f17c02 +vmlinux netpoll_queue 0x88cf8e4c +vmlinux netpoll_send_udp 0x9b5bb9dd +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0x2353dc55 +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0x19e41c2f +vmlinux next_mmu_context 0xbb5af863 +vmlinux next_thread 0x1c6f88e6 +vmlinux nf_ct_attach 0x7d84c7b6 +vmlinux nf_getsockopt 0x7ce90c7e +vmlinux nf_hook_slow 0xf64f7bb6 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0xeda546d4 +vmlinux nf_log_register 0x80f712e7 +vmlinux nf_log_unregister_logger 0xa3661319 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0xc462bbb6 +vmlinux nf_register_queue_handler 0x3949207b +vmlinux nf_register_queue_rerouter 0xececb386 +vmlinux nf_register_sockopt 0x6b5356a6 +vmlinux nf_reinject 0x1ab5d81f +vmlinux nf_setsockopt 0x63c3ad88 +vmlinux nf_unregister_hook 0x5417abb9 +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0xb2b5de6e +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x00a630be +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0xbe0e5118 +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0xbce5f432 +vmlinux nla_reserve 0xe1dc673f +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0x6cdc5c6b +vmlinux nla_validate 0x2cc98162 +vmlinux no_llseek 0xc863fae6 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x9383cb30 +vmlinux nobh_prepare_write 0xe8ada0b2 +vmlinux nobh_truncate_page 0x57ea868e +vmlinux nobh_writepage 0x4e74c72a +vmlinux node_online_map 0x5a8f421e +vmlinux node_possible_map 0xca0d27a1 +vmlinux nonseekable_open 0xe9b96707 +vmlinux noop_qdisc 0x67b5a6a3 +vmlinux noop_qdisc_ops 0x4712ce42 +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0xdd655ab7 +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux nvram_read_byte 0x0f28cb91 +vmlinux nvram_sync 0xc368849f +vmlinux nvram_write_byte 0x9ce3f83f +vmlinux of_address_to_resource 0x140f3f4d +vmlinux of_dev_get 0xc013dc24 +vmlinux of_dev_put 0xfefd549d +vmlinux of_device_register 0x56a1a3f3 +vmlinux of_device_unregister 0x09c02ece +vmlinux of_find_all_nodes 0x9f56e219 +vmlinux of_find_compatible_node 0x8f88848f +vmlinux of_find_node_by_name 0xb59e2013 +vmlinux of_find_node_by_path 0xd9a0dd5b +vmlinux of_find_node_by_phandle 0x7ec911da +vmlinux of_find_node_by_type 0x36f121ea +vmlinux of_get_address 0x6e72dc1e +vmlinux of_get_next_child 0xe9bb5847 +vmlinux of_get_parent 0x163e5dd0 +vmlinux of_get_pci_address 0x2d0d5af0 +vmlinux of_match_device 0x7d37cbaa +vmlinux of_node_get 0x1fe2d99d +vmlinux of_node_put 0xeec4b9fa +vmlinux of_pci_address_to_resource 0x13193616 +vmlinux of_platform_bus_type 0x90e950b4 +vmlinux of_platform_device_create 0x9800963f +vmlinux of_register_driver 0x251ca62a +vmlinux of_release_dev 0xf12d00e3 +vmlinux of_translate_address 0x78a215d8 +vmlinux of_unregister_driver 0xadab5eff +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0x5cc8adda +vmlinux open_by_devnum 0x0545f0ff +vmlinux open_exec 0x0689b186 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux p80211_resume 0x613c51dc +vmlinux p80211_suspend 0x1e201e61 +vmlinux p80211netdev_hwremoved 0x10b44030 +vmlinux p80211netdev_rx 0x106cee78 +vmlinux p80211skb_free 0x9b93c6e6 +vmlinux p80211skb_rxmeta_attach 0x209d8be4 +vmlinux page_address 0x5d7d185f +vmlinux page_follow_link_light 0xe331777c +vmlinux page_is_ram 0xfc03d97a +vmlinux page_put_link 0x40adb526 +vmlinux page_readlink 0x721cc3a8 +vmlinux page_symlink 0x7cad9345 +vmlinux page_symlink_inode_operations 0x68abc27b +vmlinux pagevec_lookup_tag 0xae1a5870 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0xd1a698fc +vmlinux path_release 0xc0e07c48 +vmlinux path_walk 0xb4762430 +vmlinux pci_add_new_bus 0x6b5f24d9 +vmlinux pci_address_to_pio 0xbef9267b +vmlinux pci_alloc_consistent 0x49ffdbe3 +vmlinux pci_assign_resource 0x17678277 +vmlinux pci_block_user_cfg_access 0x410c7929 +vmlinux pci_bus_add_device 0xa0b8e87e +vmlinux pci_bus_add_devices 0x674bcd30 +vmlinux pci_bus_alloc_resource 0x50f60d45 +vmlinux pci_bus_assign_resources 0xbcd4d97e +vmlinux pci_bus_find_capability 0x3a80efe6 +vmlinux pci_bus_io_base 0xe8494630 +vmlinux pci_bus_io_base_phys 0xeaa1ced1 +vmlinux pci_bus_max_busnr 0x00cd981a +vmlinux pci_bus_mem_base_phys 0x579083b7 +vmlinux pci_bus_read_config_byte 0xf21fa3bf +vmlinux pci_bus_read_config_dword 0xe44a1a5e +vmlinux pci_bus_read_config_word 0xa6422f44 +vmlinux pci_bus_size_bridges 0x0580a1b8 +vmlinux pci_bus_to_hose 0x3425fd53 +vmlinux pci_bus_type 0x6302088c +vmlinux pci_bus_write_config_byte 0x910c5841 +vmlinux pci_bus_write_config_dword 0xcd3f79ea +vmlinux pci_bus_write_config_word 0x728d1a41 +vmlinux pci_busdev_to_OF_node 0x248bdde3 +vmlinux pci_choose_state 0x64f79c17 +vmlinux pci_clear_mwi 0x02531908 +vmlinux pci_create_bus 0x81f02928 +vmlinux pci_dev_driver 0xfdebeead +vmlinux pci_dev_get 0x17736de5 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0x591d5496 +vmlinux pci_device_from_OF_node 0xb56e591a +vmlinux pci_device_to_OF_node 0xa1d0cdd7 +vmlinux pci_disable_device 0xd6fd02b3 +vmlinux pci_do_scan_bus 0x098e7013 +vmlinux pci_dram_offset 0x7be4827c +vmlinux pci_enable_bridges 0x1bc30339 +vmlinux pci_enable_device 0xf17f026d +vmlinux pci_enable_device_bars 0x9c82225d +vmlinux pci_enable_wake 0x43d47bee +vmlinux pci_find_bus 0x2e77eb0a +vmlinux pci_find_capability 0xbcfb945f +vmlinux pci_find_device 0xaf83b138 +vmlinux pci_find_device_reverse 0xd30f1621 +vmlinux pci_find_next_bus 0x2a833e0c +vmlinux pci_find_next_capability 0x834f96dc +vmlinux pci_find_parent_resource 0xaabd34c5 +vmlinux pci_find_slot 0x00113fe3 +vmlinux pci_fixup_device 0x428fd452 +vmlinux pci_free_consistent 0x9008d5b9 +vmlinux pci_get_class 0xa1ce7f39 +vmlinux pci_get_device 0x06a98f35 +vmlinux pci_get_slot 0x98fa5b82 +vmlinux pci_get_subsys 0x470ece93 +vmlinux pci_intx 0x281073b4 +vmlinux pci_iomap 0x4e8dbf5a +vmlinux pci_iounmap 0x5dfbed28 +vmlinux pci_map_rom 0x76fc4158 +vmlinux pci_map_rom_copy 0xa7697a9b +vmlinux pci_match_device 0x63591075 +vmlinux pci_match_id 0xc80c5efe +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0xaf7d304b +vmlinux pci_proc_attach_device 0x92c7c49c +vmlinux pci_proc_detach_bus 0xf089f9de +vmlinux pci_release_region 0xd5435526 +vmlinux pci_release_regions 0x46a01b66 +vmlinux pci_remove_behind_bridge 0x548723ea +vmlinux pci_remove_bus 0x00be45d1 +vmlinux pci_remove_bus_device 0x9806d415 +vmlinux pci_remove_device_safe 0xe1ad0968 +vmlinux pci_remove_rom 0x61bd06a1 +vmlinux pci_request_region 0x00c32885 +vmlinux pci_request_regions 0x270d9281 +vmlinux pci_restore_bars 0xd1a5dc95 +vmlinux pci_restore_state 0x44f01514 +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0x16c8b559 +vmlinux pci_scan_bridge 0xd9d2a646 +vmlinux pci_scan_bus_parented 0x29e56d47 +vmlinux pci_scan_child_bus 0x57b9a077 +vmlinux pci_scan_single_device 0x35fd6244 +vmlinux pci_scan_slot 0x50329348 +vmlinux pci_set_consistent_dma_mask 0x83a53ecd +vmlinux pci_set_dma_mask 0x470247b8 +vmlinux pci_set_master 0x4c715440 +vmlinux pci_set_mwi 0x2fa4c18d +vmlinux pci_set_power_state 0x29cc6df8 +vmlinux pci_setup_cardbus 0x5c6d0471 +vmlinux pci_unblock_user_cfg_access 0x3ad9bb4c +vmlinux pci_unmap_rom 0x557ba931 +vmlinux pci_unregister_driver 0x3c1ecb0a +vmlinux pci_walk_bus 0xc8f2732b +vmlinux pcibios_align_resource 0xc2b513de +vmlinux pcibios_bus_to_resource 0x27cac8d7 +vmlinux pcibios_resource_to_bus 0xa5cbc4d4 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux per_cpu__kstat 0x70bf2a4e +vmlinux per_cpu__softnet_data 0xb2c537d0 +vmlinux percpu_counter_mod 0x921ec48a +vmlinux permission 0xc9bdeb43 +vmlinux pfifo_qdisc_ops 0x4ca2aa74 +vmlinux phys_mem_access_prot 0xbfd3b29c +vmlinux platform_add_devices 0x3d3d6273 +vmlinux platform_bus 0x6aa4d61c +vmlinux platform_bus_type 0x7bed462f +vmlinux platform_device_add 0xbe3de1d8 +vmlinux platform_device_add_data 0x1104d7d2 +vmlinux platform_device_add_resources 0xc60ff03d +vmlinux platform_device_alloc 0x76f5e5d7 +vmlinux platform_device_put 0x53be2b25 +vmlinux platform_device_register 0x88cc6c76 +vmlinux platform_device_register_simple 0x3f637544 +vmlinux platform_device_unregister 0xfb830817 +vmlinux platform_driver_register 0x54cf6450 +vmlinux platform_driver_unregister 0x100dd673 +vmlinux platform_get_irq 0x3c5b2e87 +vmlinux platform_get_irq_byname 0x3408cb64 +vmlinux platform_get_resource 0x41d66f4a +vmlinux platform_get_resource_byname 0xd441e673 +vmlinux pm_active 0xebd387f6 +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pmac_low_i2c_close 0x3ffd2e1d +vmlinux pmac_low_i2c_lock 0x30b5d93d +vmlinux pmac_low_i2c_open 0xca116a30 +vmlinux pmac_low_i2c_setmode 0x2dc5a50f +vmlinux pmac_low_i2c_unlock 0xad50b7f6 +vmlinux pmac_low_i2c_xfer 0x95b0a9ba +vmlinux pmac_register_agp_pm 0x2960f4de +vmlinux pmac_resume_agp_for_card 0x5538619e +vmlinux pmac_set_early_video_resume 0xce409cda +vmlinux pmac_suspend_agp_for_card 0xa0f5f30b +vmlinux pmf_call_function 0x0b517d28 +vmlinux pmf_call_one 0xbe1bb152 +vmlinux pmf_do_functions 0x2dd020d1 +vmlinux pmf_do_irq 0x8a89e1d0 +vmlinux pmf_find_function 0x417ee251 +vmlinux pmf_get_function 0x785568dd +vmlinux pmf_put_function 0xee2a61ca +vmlinux pmf_register_driver 0x4e0765d7 +vmlinux pmf_register_irq_client 0xd6b4cc17 +vmlinux pmf_unregister_driver 0x81f3396f +vmlinux pmf_unregister_irq_client 0xf99105ca +vmlinux pmu_batteries 0xaa4df512 +vmlinux pmu_battery_count 0x272c9acd +vmlinux pmu_enable_irled 0xd0a45fa5 +vmlinux pmu_i2c_combined_read 0x245922c3 +vmlinux pmu_i2c_simple_read 0xe62e9555 +vmlinux pmu_i2c_simple_write 0x14ad4129 +vmlinux pmu_i2c_stdsub_write 0x5854d548 +vmlinux pmu_poll 0x646cc6ab +vmlinux pmu_poll_adb 0x327b9c1b +vmlinux pmu_power_flags 0x628332e8 +vmlinux pmu_register_sleep_notifier 0x1509c48d +vmlinux pmu_request 0xd409383c +vmlinux pmu_resume 0xdcefb9a5 +vmlinux pmu_suspend 0xca825895 +vmlinux pmu_unlock 0xfadb5750 +vmlinux pmu_unregister_sleep_notifier 0x3dee7f25 +vmlinux pmu_wait_complete 0x1c5b2c15 +vmlinux pneigh_enqueue 0xf13c9d41 +vmlinux pneigh_lookup 0x7a6e1b8a +vmlinux poll_freewait 0x1ea14bb0 +vmlinux poll_initwait 0xd8ee14ad +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0x83c43dc1 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x886aa274 +vmlinux posix_acl_equiv_mode 0x50d56018 +vmlinux posix_acl_from_mode 0x8c537c45 +vmlinux posix_acl_from_xattr 0x85ac7f10 +vmlinux posix_acl_permission 0xfa1ffb30 +vmlinux posix_acl_to_xattr 0x1ecb9943 +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0xb0e5c892 +vmlinux posix_lock_file 0xe311aea2 +vmlinux posix_lock_file_wait 0x136d7bc0 +vmlinux posix_locks_deadlock 0xca91d9aa +vmlinux posix_test_lock 0x2457fd59 +vmlinux posix_timer_event 0xdb2f1bb0 +vmlinux posix_unblock_lock 0x30664e67 +vmlinux ppc_do_canonicalize_irqs 0x75ee7676 +vmlinux ppc_ide_md 0x1e22af02 +vmlinux ppc_md 0x1bbe0e92 +vmlinux pre_task_out_intr 0xc99aea7f +vmlinux prepare_binprm 0xc5c6b471 +vmlinux prepare_to_wait 0x65f4af5f +vmlinux prepare_to_wait_exclusive 0x339d4841 +vmlinux printk 0xdd132261 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0xfeab3311 +vmlinux proc_bus 0x8934ee2e +vmlinux proc_dointvec 0xf5263641 +vmlinux proc_dointvec_jiffies 0x120c155f +vmlinux proc_dointvec_minmax 0xf5719bd2 +vmlinux proc_dointvec_ms_jiffies 0xe26b2447 +vmlinux proc_dointvec_userhz_jiffies 0x0cbb8a23 +vmlinux proc_dostring 0xfc71c0bc +vmlinux proc_doulongvec_minmax 0x7c675dc5 +vmlinux proc_doulongvec_ms_jiffies_minmax 0xd4d0f402 +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0x4418bc64 +vmlinux proc_net 0x90856421 +vmlinux proc_net_netfilter 0x78d78523 +vmlinux proc_net_stat 0x810bed61 +vmlinux proc_root 0x347f9671 +vmlinux proc_root_driver 0xac2918ed +vmlinux proc_root_fs 0x0b41c913 +vmlinux proc_symlink 0x8fb0b2e8 +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux profile_pc 0x8fbf37e0 +vmlinux program_check_exception 0x2bc61da1 +vmlinux prom_n_addr_cells 0x81140126 +vmlinux prom_n_size_cells 0x04236653 +vmlinux proto_register 0x6ea47d19 +vmlinux proto_unregister 0xddae177f +vmlinux ps2_cmd_aborted 0x231ccd9e +vmlinux ps2_command 0x7fd8e2e3 +vmlinux ps2_drain 0xfd571303 +vmlinux ps2_handle_ack 0x78739243 +vmlinux ps2_handle_response 0xa4c881ba +vmlinux ps2_init 0xec34cdf4 +vmlinux ps2_schedule_command 0xfcaa9721 +vmlinux ps2_sendbyte 0x35048249 +vmlinux pskb_copy 0x9a404aef +vmlinux pskb_expand_head 0xc61f05c9 +vmlinux pskb_put 0x2b0d1a88 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0x1a1bd41d +vmlinux put_cmsg 0xf39bf4d9 +vmlinux put_device 0x1680ccff +vmlinux put_disk 0x12631d66 +vmlinux put_driver 0x41e29c25 +vmlinux put_files_struct 0x30178ce5 +vmlinux put_io_context 0x3f37bb29 +vmlinux put_page 0xcfba6d4b +vmlinux put_tty_driver 0x8de87411 +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0xac6530df +vmlinux qdisc_create_dflt 0x7aae4c4d +vmlinux qdisc_destroy 0xcb634215 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0x397594b7 +vmlinux qdisc_lookup 0x7d1fc55b +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0x07a01793 +vmlinux qdisc_restart 0x2fa1d908 +vmlinux qdisc_unlock_tree 0xcfeef837 +vmlinux queue_delayed_work 0x154e6b98 +vmlinux queue_work 0x4cef91ae +vmlinux radix_tree_delete 0xa34bdcd0 +vmlinux radix_tree_gang_lookup 0x883e226b +vmlinux radix_tree_gang_lookup_tag 0xcc4e9047 +vmlinux radix_tree_insert 0x7dc88ba1 +vmlinux radix_tree_lookup 0x5c2da0c3 +vmlinux radix_tree_lookup_slot 0x6bbbfb36 +vmlinux radix_tree_tag_clear 0x374a51dd +vmlinux radix_tree_tag_set 0x7e92ceb7 +vmlinux radix_tree_tagged 0xdacd0c37 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0x693d9526 +vmlinux read_cache_pages 0x6019dc0e +vmlinux read_dev_sector 0x37ff1e63 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0xdb1ae2c8 +vmlinux redraw_screen 0x239028aa +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0xbd642168 +vmlinux register_atm_ioctl 0x6ceb94ce +vmlinux register_backlight_controller 0xe5c34893 +vmlinux register_binfmt 0x8d4cdc42 +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0x75ce22bf +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x579122a6 +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_exec_domain 0x4d63ce06 +vmlinux register_filesystem 0x9fd1d656 +vmlinux register_firmware 0x711cccd3 +vmlinux register_framebuffer 0x30186313 +vmlinux register_gifconf 0xd9f16120 +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_key_type 0x7c7cdccd +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0x09cbc8b4 +vmlinux register_netdevice 0x8d92cde0 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x60b7b8fa +vmlinux register_posix_clock 0xea725bec +vmlinux register_qdisc 0x158d3cd1 +vmlinux register_quota_format 0x10a79d82 +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0x20821955 +vmlinux register_snap_client 0x0f748d79 +vmlinux register_sysctl_table 0x3b1f06db +vmlinux register_sysrq_key 0x999ac666 +vmlinux register_tcf_proto_ops 0x916c645f +vmlinux register_timer_hook 0xdf27877b +vmlinux register_wlandev 0x965d6fe0 +vmlinux registered_fb 0xa2635b8a +vmlinux release_OF_resource 0x2b572bd6 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x33934162 +vmlinux release_pmc_hardware 0x5892f832 +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x7473f5e1 +vmlinux remap_pfn_range 0x95e4a05b +vmlinux remote_llseek 0xe7a9d5c3 +vmlinux remove_arg_zero 0x8568e56d +vmlinux remove_inode_hash 0x5f75eaae +vmlinux remove_proc_entry 0x821cb6bb +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0x2cc96551 +vmlinux remove_wait_queue 0x0ef22ade +vmlinux reqsk_queue_alloc 0x513525fd +vmlinux reqsk_queue_destroy 0x3db131e3 +vmlinux request_OF_resource 0x731a46b8 +vmlinux request_dma 0x7054a3e4 +vmlinux request_firmware 0x4fc2fd2a +vmlinux request_firmware_nowait 0x006b1e35 +vmlinux request_irq 0x8acf5d0d +vmlinux request_key 0xbbc5a479 +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux reserve_pmc_hardware 0x93a2cb47 +vmlinux rtas 0x0caa9829 +vmlinux rtas_call 0xff1765c7 +vmlinux rtas_data_buf 0xd1262886 +vmlinux rtas_data_buf_lock 0x717242e7 +vmlinux rtas_extended_busy_delay_time 0x731c2074 +vmlinux rtas_flash_term_hook 0x86db1cbb +vmlinux rtas_get_power_level 0x37383edd +vmlinux rtas_get_sensor 0x9168c033 +vmlinux rtas_progress 0x56c2b95b +vmlinux rtas_set_indicator 0x81c0a84f +vmlinux rtas_set_power_level 0x12e5ef0c +vmlinux rtas_token 0x160bd45c +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x85902f79 +vmlinux rtc_lock 0x811afadf +vmlinux rtnetlink_links 0x5d5fb96d +vmlinux rtnetlink_put_metrics 0xbd5cccb9 +vmlinux rtnl 0xa0e76202 +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0x93326584 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux rwsem_down_read_failed 0x6d625f3b +vmlinux rwsem_down_write_failed 0xf8fda569 +vmlinux rwsem_downgrade_wake 0x99dd1451 +vmlinux rwsem_wake 0x4d2a5c19 +vmlinux sb_min_blocksize 0xfb17dffb +vmlinux sb_set_blocksize 0x69a425eb +vmlinux sched_setscheduler 0xcbeb7db1 +vmlinux schedule 0x01000e51 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0x443ec996 +vmlinux scm_fp_dup 0x48a272cd +vmlinux scnprintf 0x28f35813 +vmlinux scsi_cmd_ioctl 0x5fd2a4b9 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux search_binary_handler 0x907f6028 +vmlinux secpath_dup 0x456e47d0 +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0x4efb585d +vmlinux securityfs_create_dir 0x2ea3a3aa +vmlinux securityfs_create_file 0x3b3eeede +vmlinux securityfs_remove 0x353f3740 +vmlinux send_sig 0x337cc431 +vmlinux send_sig_info 0xad4c7b29 +vmlinux seq_escape 0xe671118b +vmlinux seq_lseek 0x70dc31a7 +vmlinux seq_open 0x91541b2e +vmlinux seq_path 0x918feaf5 +vmlinux seq_printf 0xee80e531 +vmlinux seq_putc 0x175c3293 +vmlinux seq_puts 0x9a66b2a4 +vmlinux seq_read 0x7e90e3bf +vmlinux seq_release 0x5e18fc46 +vmlinux seq_release_private 0x66132214 +vmlinux serio_close 0xa28b40fe +vmlinux serio_interrupt 0xa1735e88 +vmlinux serio_open 0x455155c4 +vmlinux serio_reconnect 0xe525445d +vmlinux serio_rescan 0xa8ef0270 +vmlinux serio_unregister_child_port 0x1e6f24f9 +vmlinux serio_unregister_driver 0xc78bb373 +vmlinux serio_unregister_port 0x7cb9e934 +vmlinux set_anon_super 0x4be16f24 +vmlinux set_backlight_enable 0xae772c9d +vmlinux set_backlight_level 0xa37f50a9 +vmlinux set_bh_page 0x019cb27e +vmlinux set_binfmt 0xef0e5775 +vmlinux set_blocksize 0x500ef4bd +vmlinux set_context 0xec62906c +vmlinux set_cpus_allowed 0x4d1669ca +vmlinux set_current_groups 0x72fbae28 +vmlinux set_device_ro 0xd7eae778 +vmlinux set_disk_ro 0x918f3493 +vmlinux set_page_dirty 0x29bd1948 +vmlinux set_page_dirty_lock 0xee1c9dd9 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0x0a073a25 +vmlinux setlease 0x2ade3c90 +vmlinux setup_arg_pages 0x4bbd049d +vmlinux sget 0x903ddc86 +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0xcfe72b4e +vmlinux shrink_dcache_sb 0xd91e83c3 +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x8ed6f0ed +vmlinux simple_attr_close 0xc4d9df2b +vmlinux simple_attr_open 0xe98991f8 +vmlinux simple_attr_read 0x1850c51f +vmlinux simple_attr_write 0xae2aca08 +vmlinux simple_commit_write 0x52d8adaf +vmlinux simple_dir_inode_operations 0x696e01dc +vmlinux simple_dir_operations 0x26afe893 +vmlinux simple_empty 0xeb9ad8cd +vmlinux simple_fill_super 0xdef79d69 +vmlinux simple_getattr 0xee133bd8 +vmlinux simple_link 0x95acae0a +vmlinux simple_lookup 0xfb9e5c2d +vmlinux simple_pin_fs 0x08873e53 +vmlinux simple_prepare_write 0x3419632c +vmlinux simple_read_from_buffer 0x528c709d +vmlinux simple_readpage 0x77e651e0 +vmlinux simple_release_fs 0x5df4d7f7 +vmlinux simple_rename 0x4e4cf214 +vmlinux simple_rmdir 0xf3a80d94 +vmlinux simple_statfs 0xc6b2ba25 +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0x0fa101d0 +vmlinux simple_transaction_get 0x6bfb22b7 +vmlinux simple_transaction_read 0x902061a5 +vmlinux simple_transaction_release 0x2eab031a +vmlinux simple_unlink 0x4d91c211 +vmlinux single_open 0xd5134847 +vmlinux single_release 0x4a770aef +vmlinux single_step_exception 0xd5b2e52a +vmlinux sk_alloc 0xd48224a0 +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0xe5240283 +vmlinux sk_common_release 0xa29cbba4 +vmlinux sk_free 0x65183e07 +vmlinux sk_reset_timer 0x28e5b22d +vmlinux sk_run_filter 0xadb8efbb +vmlinux sk_send_sigurg 0x58163237 +vmlinux sk_stop_timer 0xc2c7a2a1 +vmlinux sk_stream_error 0x620f141c +vmlinux sk_stream_kill_queues 0xb388318b +vmlinux sk_stream_mem_schedule 0x14344b8e +vmlinux sk_stream_rfree 0x1fc3120a +vmlinux sk_stream_wait_close 0xa58b695c +vmlinux sk_stream_wait_connect 0xaa24407b +vmlinux sk_stream_wait_memory 0xcab05c33 +vmlinux sk_stream_write_space 0x7ca0946e +vmlinux sk_wait_data 0x10d1b844 +vmlinux skb_abort_seq_read 0x39137a4a +vmlinux skb_append 0x1ca68d02 +vmlinux skb_append_datato_frags 0x113ed7ec +vmlinux skb_checksum 0x72cf4a20 +vmlinux skb_checksum_help 0xa89602de +vmlinux skb_clone 0xb58d5b50 +vmlinux skb_clone_fraglist 0x013e01bd +vmlinux skb_copy 0x382e5639 +vmlinux skb_copy_and_csum_bits 0xb4b97f9b +vmlinux skb_copy_and_csum_datagram_iovec 0xc55f2585 +vmlinux skb_copy_and_csum_dev 0xfa4a1c00 +vmlinux skb_copy_bits 0xf578bed1 +vmlinux skb_copy_datagram_iovec 0xa429ab37 +vmlinux skb_copy_expand 0x3351ec21 +vmlinux skb_cow_data 0x931100f5 +vmlinux skb_dequeue 0xe2dfee12 +vmlinux skb_dequeue_tail 0xd00e7483 +vmlinux skb_find_text 0xf436486a +vmlinux skb_free_datagram 0x252eac27 +vmlinux skb_icv_walk 0x27681e26 +vmlinux skb_insert 0x9539886b +vmlinux skb_make_writable 0x5d06c6d7 +vmlinux skb_migrate 0x2d60c937 +vmlinux skb_over_panic 0x6af0dca5 +vmlinux skb_pad 0x54852b20 +vmlinux skb_prepare_seq_read 0x1049587b +vmlinux skb_queue_head 0x658102a9 +vmlinux skb_queue_purge 0x7a699027 +vmlinux skb_queue_tail 0x1cc772ce +vmlinux skb_realloc_headroom 0xb1b7ce25 +vmlinux skb_recv_datagram 0xa89f0573 +vmlinux skb_seq_read 0x73d4a3f7 +vmlinux skb_split 0x0a6e5dab +vmlinux skb_store_bits 0x4a20fc9b +vmlinux skb_to_sgvec 0xbadf3e53 +vmlinux skb_under_panic 0xf9ecdfaf +vmlinux skb_unlink 0x77ebba83 +vmlinux sleep_on 0x8540b5be +vmlinux sleep_on_timeout 0x8d6ef862 +vmlinux smp_call_function 0x0014bfd1 +vmlinux smp_hw_index 0xff6dea25 +vmlinux snprintf 0x025da070 +vmlinux sock_alloc_send_skb 0x4df05b32 +vmlinux sock_common_getsockopt 0x89165f21 +vmlinux sock_common_recvmsg 0x2a39128f +vmlinux sock_common_setsockopt 0x8f91e048 +vmlinux sock_create 0x70cf7427 +vmlinux sock_create_kern 0xcd9b7dfc +vmlinux sock_create_lite 0x031bf6ca +vmlinux sock_enable_timestamp 0x6d4b0b91 +vmlinux sock_get_timestamp 0xcc9fe32c +vmlinux sock_i_ino 0x239a4e93 +vmlinux sock_i_uid 0x2292cfc9 +vmlinux sock_init_data 0x422d94bb +vmlinux sock_kfree_s 0x43df6477 +vmlinux sock_kmalloc 0x3780773d +vmlinux sock_map_fd 0x54c20711 +vmlinux sock_no_accept 0x749bff73 +vmlinux sock_no_bind 0xcd653fa8 +vmlinux sock_no_connect 0x3a62a80a +vmlinux sock_no_getname 0xbfd3ec82 +vmlinux sock_no_getsockopt 0x5d51b49b +vmlinux sock_no_ioctl 0x3dd13e07 +vmlinux sock_no_listen 0x8788446b +vmlinux sock_no_mmap 0xc326f28e +vmlinux sock_no_poll 0xb3efe96f +vmlinux sock_no_recvmsg 0x00342230 +vmlinux sock_no_sendmsg 0xe2e04b22 +vmlinux sock_no_sendpage 0x05679ec1 +vmlinux sock_no_setsockopt 0xed41ff13 +vmlinux sock_no_shutdown 0x1f79fd74 +vmlinux sock_no_socketpair 0xda754a04 +vmlinux sock_recvmsg 0xd3ceeb04 +vmlinux sock_register 0x95d75cf3 +vmlinux sock_release 0x89ba8887 +vmlinux sock_rfree 0xa206b6e9 +vmlinux sock_sendmsg 0x843553e9 +vmlinux sock_setsockopt 0x1cab7ce0 +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0xb8e7126f +vmlinux sock_wfree 0x8ac50a49 +vmlinux sock_wmalloc 0x4f18b7ad +vmlinux sockfd_lookup 0xd3d4a7a9 +vmlinux soft_cursor 0x95d32ca9 +vmlinux sonet_copy_stats 0x89195dc3 +vmlinux sonet_subtract_stats 0x1a24e5e2 +vmlinux sort 0x310917fe +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux start_thread 0x756dd160 +vmlinux start_tty 0xf05a9d48 +vmlinux steal_locks 0xa2f7df8e +vmlinux stop_tty 0xfae6e74c +vmlinux strcasecmp 0xaafdc258 +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0x6c1ce5ce +vmlinux strlcat 0xdd0a2ba2 +vmlinux strlcpy 0x73e20c1c +vmlinux strlen 0x97255bdf +vmlinux strncat 0xd627480b +vmlinux strnchr 0x0a3131f6 +vmlinux strncmp 0x84b183ae +vmlinux strncpy 0x328a05f1 +vmlinux strnicmp 0x4e830a3e +vmlinux strnlen 0xd9ce8f0c +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0xc7ec6c27 +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0x5e463c65 +vmlinux submit_bh 0xdd1cc397 +vmlinux submit_bio 0xd92b7226 +vmlinux subsys_create_file 0x419497ce +vmlinux subsys_remove_file 0xc702a8e1 +vmlinux subsystem_init 0x6d18053b +vmlinux subsystem_register 0xb94534f9 +vmlinux subsystem_unregister 0xa8d73db4 +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0x5495b9b2 +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0x7b857b0d +vmlinux sync_dirty_buffer 0x29b8e09a +vmlinux sync_inode 0xb6f1bb46 +vmlinux sync_mapping_buffers 0xed6cbeef +vmlinux sync_page_range 0x509d3e7f +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xdcb0349b +vmlinux sys_ctrler 0x74fe8730 +vmlinux sys_open 0xe269ea1c +vmlinux sys_read 0x2efa450d +vmlinux sys_sigreturn 0x4596db6a +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0x647208b0 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0x9872ce23 +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0x5b5ad25a +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0xea927241 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x45c11e02 +vmlinux sysdev_class_unregister 0x946e99d9 +vmlinux sysdev_create_file 0xca58095e +vmlinux sysdev_driver_register 0xff9ec75e +vmlinux sysdev_driver_unregister 0xcf34c72b +vmlinux sysdev_register 0xd0ec43a7 +vmlinux sysdev_remove_file 0xa2260b12 +vmlinux sysdev_unregister 0x8adfb7e4 +vmlinux sysfs_chmod_file 0x8aa46b96 +vmlinux sysfs_create_bin_file 0xf7281b32 +vmlinux sysfs_create_dir 0x018456db +vmlinux sysfs_create_file 0x770e6e78 +vmlinux sysfs_create_group 0xe04e2703 +vmlinux sysfs_create_link 0xd634bb5d +vmlinux sysfs_remove_bin_file 0xc67e1fcf +vmlinux sysfs_remove_dir 0x724b2a1a +vmlinux sysfs_remove_file 0xf57228e8 +vmlinux sysfs_remove_group 0x23c0c5aa +vmlinux sysfs_remove_link 0x69b2af41 +vmlinux sysfs_rename_dir 0xd9363c37 +vmlinux sysfs_update_file 0xd8e34053 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0xf0c12cba +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0xcc8bb163 +vmlinux task_nice 0xe0479d3e +vmlinux task_no_data_intr 0x136662b7 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0x0319550c +vmlinux tb_ticks_per_jiffy 0x40f1ad10 +vmlinux tb_ticks_per_usec 0x915e1208 +vmlinux tc_classify 0x410a31ff +vmlinux tcf_em_register 0x05afcdf4 +vmlinux tcf_em_tree_destroy 0xed08f846 +vmlinux tcf_em_tree_dump 0x147cec34 +vmlinux tcf_em_tree_validate 0x2a651d3c +vmlinux tcf_em_unregister 0x77388868 +vmlinux tcf_exts_change 0x596fa10b +vmlinux tcf_exts_destroy 0xfcf49ee9 +vmlinux tcf_exts_dump 0x0a3d7ba5 +vmlinux tcf_exts_dump_stats 0x8c848307 +vmlinux tcf_exts_validate 0x88f3b503 +vmlinux tcf_police 0x715b6969 +vmlinux tcf_police_destroy 0xbc4b72c6 +vmlinux tcf_police_dump 0xefef4445 +vmlinux tcf_police_dump_stats 0xb891f766 +vmlinux tcf_police_hash 0x8493d6e7 +vmlinux tcf_police_ht 0x8d894736 +vmlinux tcf_police_locate 0xf7c6bc6b +vmlinux tcf_police_lookup 0x6c6e4ce9 +vmlinux tcf_police_new_index 0x7ae0f6c9 +vmlinux tcp_check_req 0x4975ed5d +vmlinux tcp_child_process 0x1e61977a +vmlinux tcp_close 0x75c9eae2 +vmlinux tcp_connect 0xb6fb1f7f +vmlinux tcp_create_openreq_child 0xddf2f267 +vmlinux tcp_death_row 0x45ec1365 +vmlinux tcp_disconnect 0xd39880a0 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x137c2bc3 +vmlinux tcp_getsockopt 0xbc806fdb +vmlinux tcp_hashinfo 0xe93887c1 +vmlinux tcp_init_congestion_ops 0xd5ee4c59 +vmlinux tcp_init_xmit_timers 0xb81bc8cc +vmlinux tcp_ioctl 0xda503f2d +vmlinux tcp_make_synack 0x3bac18bb +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0x28768ae0 +vmlinux tcp_poll 0xd8c5c3b2 +vmlinux tcp_proc_register 0x5375e2bb +vmlinux tcp_proc_unregister 0xf94110dd +vmlinux tcp_prot 0x0ccc4aa5 +vmlinux tcp_rcv_established 0x861c7d4b +vmlinux tcp_rcv_state_process 0x7b02170a +vmlinux tcp_read_sock 0xf821b270 +vmlinux tcp_recvmsg 0xe73f7d93 +vmlinux tcp_register_congestion_control 0x0b0b4945 +vmlinux tcp_reno_cong_avoid 0x8976eb9f +vmlinux tcp_reno_min_cwnd 0x37bb71e8 +vmlinux tcp_reno_ssthresh 0xdae8dc66 +vmlinux tcp_sendmsg 0x8e3a3ec1 +vmlinux tcp_sendpage 0x8772dd92 +vmlinux tcp_setsockopt 0x69f81681 +vmlinux tcp_shutdown 0x25a34425 +vmlinux tcp_simple_retransmit 0xb1b291b3 +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0x6e54b5e4 +vmlinux tcp_timewait_state_process 0x370de468 +vmlinux tcp_unhash 0x691c118d +vmlinux tcp_unregister_congestion_control 0x28c2bb9b +vmlinux tcp_v4_conn_request 0xb4f6fcde +vmlinux tcp_v4_connect 0x9f5c8578 +vmlinux tcp_v4_destroy_sock 0x45e6f35a +vmlinux tcp_v4_do_rcv 0x02cdaeb8 +vmlinux tcp_v4_remember_stamp 0x742b9acf +vmlinux tcp_v4_send_check 0xd6fa34c9 +vmlinux tcp_v4_syn_recv_sock 0xb061cb0d +vmlinux test_clear_page_dirty 0x3f1ecdc2 +vmlinux test_set_page_writeback 0x8d61bd32 +vmlinux textsearch_destroy 0x2fd8e9b6 +vmlinux textsearch_find_continuous 0xb7c25488 +vmlinux textsearch_prepare 0xe060b2cf +vmlinux textsearch_register 0x2b8140e2 +vmlinux textsearch_unregister 0x56853372 +vmlinux thaw_bdev 0xbc544d29 +vmlinux timer_interrupt 0xf4449388 +vmlinux timespec_trunc 0xc045ad4e +vmlinux to_tm 0x6a61f874 +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0x2a725601 +vmlinux tr_type_trans 0xb5846749 +vmlinux transfer_to_handler 0x90501868 +vmlinux transport_add_device 0x115e56bf +vmlinux transport_class_register 0x195be26a +vmlinux transport_class_unregister 0xb99eefa8 +vmlinux transport_configure_device 0x19a16cee +vmlinux transport_destroy_device 0x77d7ef38 +vmlinux transport_remove_device 0xf7cc4520 +vmlinux transport_setup_device 0x5c08693d +vmlinux truncate_inode_pages 0x21226715 +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0x0cdd221d +vmlinux try_to_release_page 0x055eac95 +vmlinux tty_check_change 0x4bfe9dcd +vmlinux tty_flip_buffer_push 0xe5a44c04 +vmlinux tty_get_baud_rate 0x57596642 +vmlinux tty_hangup 0x320a1480 +vmlinux tty_hung_up_p 0x99cc5275 +vmlinux tty_ldisc_deref 0x607b8329 +vmlinux tty_ldisc_flush 0x273411cd +vmlinux tty_ldisc_get 0x3651ebc3 +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0xc0d19f02 +vmlinux tty_ldisc_ref_wait 0x253a4880 +vmlinux tty_name 0x64a0a053 +vmlinux tty_register_device 0x459271fe +vmlinux tty_register_driver 0x18b5eeb2 +vmlinux tty_register_ldisc 0x968832f4 +vmlinux tty_set_operations 0x68b20898 +vmlinux tty_std_termios 0x09f417e8 +vmlinux tty_termios_baud_rate 0x9aaa02f4 +vmlinux tty_unregister_device 0xd81a686a +vmlinux tty_unregister_driver 0x5a69808f +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0xf7681caf +vmlinux tty_wait_until_sent 0x7a18d5ff +vmlinux tty_wakeup 0x2aa8e2d3 +vmlinux udelay 0xa39b4cf2 +vmlinux udp_disconnect 0x4bc12968 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0x7e5919df +vmlinux udp_ioctl 0x153bb7af +vmlinux udp_poll 0x5876a04b +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x0f8f4f41 +vmlinux udp_proc_unregister 0x636626b2 +vmlinux udp_prot 0x117257ff +vmlinux udp_sendmsg 0x8f72b7c8 +vmlinux uhci_check_and_reset_hc 0xa3ba28cb +vmlinux uhci_reset_hc 0x796d0795 +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unload_nls 0xa9bee7d8 +vmlinux unlock_buffer 0x4b7ca2bb +vmlinux unlock_kernel 0xb1f975aa +vmlinux unlock_new_inode 0x6dbefb54 +vmlinux unlock_page 0xc5efdc22 +vmlinux unlock_rename 0x12777d1d +vmlinux unmap_mapping_range 0x3c8bf3f4 +vmlinux unmap_underlying_metadata 0x67b850b9 +vmlinux unregister_8022_client 0xfb60a004 +vmlinux unregister_backlight_controller 0x44e90ac6 +vmlinux unregister_binfmt 0x0d8e07ca +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0x2766d3a7 +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_exec_domain 0x92c364a8 +vmlinux unregister_filesystem 0x14838238 +vmlinux unregister_framebuffer 0xe5b98322 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_key_type 0xaad3c6dd +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0x15ec7697 +vmlinux unregister_netdevice 0x0e646bf1 +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0xbe445afd +vmlinux unregister_qdisc 0x65fb543e +vmlinux unregister_quota_format 0xfdf86790 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0x4185b22f +vmlinux unregister_snap_client 0xa281b626 +vmlinux unregister_sysctl_table 0xda092fdc +vmlinux unregister_sysrq_key 0x2face6f3 +vmlinux unregister_tcf_proto_ops 0x41782283 +vmlinux unregister_timer_hook 0xa39d9220 +vmlinux unregister_wlandev 0xb5f08a6b +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0xc05cd27f +vmlinux update_region 0x1dc9c5ec +vmlinux user_describe 0x4abfe2e0 +vmlinux user_destroy 0x3f028d8c +vmlinux user_duplicate 0x33c328fb +vmlinux user_instantiate 0xd21c2b04 +vmlinux user_match 0x909a3d2e +vmlinux user_read 0xa609825b +vmlinux user_update 0x004582cf +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0xd7a3b03f +vmlinux vc_cons 0xda5135b7 +vmlinux vc_resize 0xa192da93 +vmlinux vcc_hash 0x2cc2d52d +vmlinux vcc_insert_socket 0xeeaf914f +vmlinux vcc_release_async 0x55e4258f +vmlinux vcc_sklist_lock 0xe9e8631f +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0x0240f425 +vmlinux vfs_follow_link 0xe8634719 +vmlinux vfs_fstat 0xcb841136 +vmlinux vfs_get_dqblk 0x1250152f +vmlinux vfs_get_dqinfo 0xf17788c3 +vmlinux vfs_getattr 0x63f2eeb4 +vmlinux vfs_link 0xb0129078 +vmlinux vfs_llseek 0xe17b073d +vmlinux vfs_lstat 0x91d803ff +vmlinux vfs_mkdir 0x556b2796 +vmlinux vfs_mknod 0x3faa3d2d +vmlinux vfs_permission 0xdeafa6c5 +vmlinux vfs_quota_off 0x29681775 +vmlinux vfs_quota_on 0xfb172ee1 +vmlinux vfs_quota_on_mount 0xc1683eac +vmlinux vfs_quota_sync 0x418ec6b0 +vmlinux vfs_read 0xddb96585 +vmlinux vfs_readdir 0xe8253d0f +vmlinux vfs_readlink 0xdd5603e7 +vmlinux vfs_readv 0xeb0e47c6 +vmlinux vfs_rename 0xe11ba59d +vmlinux vfs_rmdir 0x8ccec3ad +vmlinux vfs_set_dqblk 0x92c4ab4e +vmlinux vfs_set_dqinfo 0xebc7472c +vmlinux vfs_stat 0x4e193f40 +vmlinux vfs_statfs 0xb43a17c4 +vmlinux vfs_symlink 0xf820e9e0 +vmlinux vfs_unlink 0xcfb4a27d +vmlinux vfs_write 0x74a09ca2 +vmlinux vfs_writev 0x09f854ff +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x6c32977a +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0x0c8da002 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0xd82124b8 +vmlinux vmtruncate 0x5f85362f +vmlinux vprintk 0x777a8e29 +vmlinux vscnprintf 0x0ead5073 +vmlinux vsnprintf 0x6989a769 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0xf69be488 +vmlinux wait_for_completion_interruptible 0xc7ad2fb8 +vmlinux wait_for_completion_interruptible_timeout 0xbf82ea61 +vmlinux wait_for_completion_timeout 0xc6b6d78c +vmlinux wait_on_page_bit 0x76284160 +vmlinux wait_on_sync_kiocb 0xb351b1c9 +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0x2958e968 +vmlinux wireless_send_event 0x9b7fb36a +vmlinux wireless_spy_update 0x3c665902 +vmlinux wlan_setup 0xdb55b745 +vmlinux wlan_unsetup 0x105e097e +vmlinux write_inode_now 0x828d6132 +vmlinux write_one_page 0x3269436e +vmlinux xfrm4_rcv 0xcba745fa +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0x138cd26e +vmlinux xfrm_bundle_ok 0x49edc4d8 +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0x53a60516 +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0xe3373932 +vmlinux xfrm_dst_lookup 0x8902da95 +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0x364f4865 +vmlinux xfrm_find_acq_byseq 0x568d69d7 +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0xa121bead +vmlinux xfrm_init_state 0xea05e9ff +vmlinux xfrm_lookup 0x14693171 +vmlinux xfrm_parse_spi 0x245b5564 +vmlinux xfrm_policy_alloc 0xeac08794 +vmlinux xfrm_policy_byid 0xe0ed77f4 +vmlinux xfrm_policy_bysel 0xbb163ced +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x57baf61b +vmlinux xfrm_policy_list 0xf6d88fff +vmlinux xfrm_policy_register_afinfo 0x5e78cd7f +vmlinux xfrm_policy_unregister_afinfo 0x7c3c5287 +vmlinux xfrm_policy_walk 0x354be87e +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0x1a1dbbe8 +vmlinux xfrm_register_type 0xe5fbf9f7 +vmlinux xfrm_replay_advance 0x3a84a248 +vmlinux xfrm_replay_check 0x6ecd799d +vmlinux xfrm_state_add 0x2d98917e +vmlinux xfrm_state_alloc 0x2cf9682d +vmlinux xfrm_state_check 0xe7a31493 +vmlinux xfrm_state_check_expire 0xc7127405 +vmlinux xfrm_state_delete 0x1cf8f9fb +vmlinux xfrm_state_delete_tunnel 0xaa3b43a4 +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0x974f8190 +vmlinux xfrm_state_lookup 0xa06006fa +vmlinux xfrm_state_mtu 0xb7e93eb6 +vmlinux xfrm_state_register_afinfo 0x715636e7 +vmlinux xfrm_state_unregister_afinfo 0x6146daf8 +vmlinux xfrm_state_update 0x1d78616b +vmlinux xfrm_state_walk 0x4d2b1770 +vmlinux xfrm_unregister_km 0x32a4172d +vmlinux xfrm_unregister_type 0x91e25e5a +vmlinux xfrm_user_policy 0xde1820be +vmlinux xrlim_allow 0x21e74835 +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xe2628d76 +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x6d920dee +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0x852ed507 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/powerpc/powerpc.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/powerpc/powerpc.modules @@ -0,0 +1,1411 @@ +3c359 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +6pack +8021q +8139cp +8139too +8250 +8250_pci +8390 +9p2000 +a3d +aacraid +abyss +ac97_codec +acecad +acenic +aci +act200l-sir +actisys-sir +acx +ad1848 +ad1889 +adfs +adi +adlib_card +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +advansys +aec62xx +aedsp16 +aes +affs +af_key +af_packet +agpgart +ah4 +ah6 +aha152x_cs +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airport +airprime +ali-ircc +ambassador +amd8111e +analog +ans-lcd +anubis +aoe +apm_emu +appletalk +appletouch +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atmtcp +atp870u +atxp1 +auerswald +auth_rpcgss +autofs +autofs4 +ax25 +axnet_cs +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_misc +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bmac +bnep +bnx2 +bonding +bpa10x +bpck +bpck6 +bpqether +br2684 +bridge +bsd_comp +bt3c_cs +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +bw-qcam +capability +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cman +cmd64x +cn +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comm +commoncap +configfs +cp2101 +cpia +cpia_pp +cpia_usb +cpqarray +cpufreq_conservative +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxacru +cxgb +cyber2000fb +cyberjack +cyblafb +cyclades +cyclomx +cycx_drv +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +des +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +diskonchip +dl2k +dlci +dlm +dmasound_core +dmasound_pmac +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +donauboe +dpc7146 +dpt_i2o +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dst +dst_ca +dstr +ds_w1_bridge +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +eagle-usb +eata +eata_pio +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +econet +eepro100 +eeprom +efs +ehci-hcd +elo +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +eni +epat +epca +epia +epic100 +eql +esi-sir +esp4 +esp6 +eth1394 +evbug +evdev +exportfs +ext2 +ext3 +farsync +fat +faulty +fdomain +fdomain_cs +fealnx +firestream +fit2 +fit3 +floppy +fm801-gp +fmvj18x_cs +forcedeth +fore_200e +freevxfs +friq +frpw +fscher +fscpos +ftdi_sio +ftl +fuse +gadgetfs +gamecon +gameport +garmin_gps +gdth +generic +generic_serial +gen_probe +genrtc +g_ether +gf2k +g_file_storage +gfs +girbil-sir +gl518sm +gl520sm +gl620a +gnbd +grip +grip_mp +g_serial +guillemot +gunze +g_zero +hamachi +hci_uart +hci_usb +hci_vhci +hdlc +hdlcdrv +he +hermes +hexium_gemini +hexium_orion +hfs +hfsplus +hidp +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hp4x +hpfs +hpt34x +hpt366 +hwmon-vid +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-dev +i2c-hydra +i2c-i801 +i2c-i810 +i2c-isa +i2c-keywest +i2c-matroxfb +i2c-mpc +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i810_audio +i82092 +ib_cm +ib_core +ib_ipoib +ib_mad +ibmcam +ib_mthca +ibmtr_cs +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ide-cd +ide-cs +ide-disk +ide-floppy +ide-scsi +ide-tape +idmouse +idt77252 +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +inftl +initio +interact +io_edgeport +io_ti +ip2 +ip2main +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ip_gre +iphase +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irport +irtty-sir +ir-usb +iscsi_tcp +islsm +islsm_device +islsm_pci +islsm_usb +isofs +isp116x-hcd +istallion +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kahlua +kaweth +kbic +kbtab +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l64781 +lanai +lanstreamer +lapb +lapbether +lcd +ldusb +lec +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +litelink-sir +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lockd +lock_dlm +lock_gulm +lock_harness +lock_nolock +loop +lp +lpfc +lxt +m41t00 +ma600-sir +mace +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_maven +matrox_w1 +max1619 +max6875 +mcp2120-sir +mct_u232 +md4 +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mesh +mga +michael_mic +microtek +mii +minix +mk712 +mkiss +mmc_core +mol +moxa +mpoa +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu401 +mrv8k +msdos +msp3400 +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouch +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mv643xx_eth +mxb +mxser +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +ne2k-pci +neofb +net1080 +net2280 +netconsole +netrom +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +nicstar +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +nsc-ircc +nsp32 +nsp_cs +ntfs +nvidiafb +nxt2002 +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ohci1394 +ohci-hcd +old_belkin-sir +olympic +omninet +on20 +on26 +onenand +opl3 +opl3sa2 +oprofile +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pas2 +pc300 +pc87360 +pca9539 +pcd +pcf8574 +pcf8591 +pci +pci200syn +pcilynx +pcips2 +pcmcia +pcmcia_core +pcmciamtd +pcnet32 +pcnet_cs +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmac_zilog +pmc551 +podxtpro +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +psmouse +pss +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radio-gemtek-pci +radio-maestro +radio-maxiradio +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio +rio500 +riscom8 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rrunner +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc8564 +rtl8150 +rxrpc +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7111 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb +sb_lib +sbp2 +sc1200 +sch_atm +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_debug +scsi_mod +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200_acb +sdhci +sd_mod +se401 +seclvl +serial_core +serial_cs +serio_raw +sermouse +serpent +serport +sg +sha1 +sha256 +sha512 +shaper +sidewinder +siimage +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sk98lin +skfp +skge +sky2 +sl811_cs +sl811-hcd +sl82c105 +slhc +slip +slram +smbfs +smc91c92_cs +smsc47b397 +smsc47m1 +smsc-ircc2 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1889 +snd-ainstr-fm +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fm801 +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-powermac +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +softdog +sound +soundcore +sp8870 +sp887x +spaceball +spaceorb +spca5xx +specialix +spectrum_cs +speedtch +squashfs +sr_mod +st +stallion +starfire +stinger +stir4200 +strip +stv0297 +stv0299 +stv680 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +swim3 +sx +sx8 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink +synclink_cs +synclinkmp +syncppp +sysv +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tea +tea6415c +tea6420 +tekram-sir +tg3 +tgr192 +therm_adt746x +therm_windtunnel +tipar +ti_usb_3410_5052 +tlan +tlclk +tmdc +tms380tr +tmscsim +tmspci +touchkitusb +tpm +tpm_atmel +tpm_nsc +trident +tridentfb +trix +trm290 +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +twidjoy +twofish +typhoon +uart401 +uart6850 +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +umem +uninorth-agp +unionfs +uPD98402 +usbatm +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vfat +vgastate +via +via686a +via82cxxx +via-ircc +via-rhine +via-velocity +vicam +video1394 +video-buf +video-buf-dvb +videodev +visor +vlsi_ir +v_midi +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w83627ehf +w83627hf +w83781d +w83792d +w83977af_ir +w83l785ts +w9966 +w9968cf +wacom +wanrouter +wanxl +warrior +wavelan_cs +wbsd +wdrtas +wdt_pci +whiteheat +winbond-840 +windfarm_core +wire +wl3501_cs +wm8775 +wp512 +x1205 +x25 +x25_asy +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xircom_tulip_cb +xor +xpad +xtkbd +xusbatm +yam +yealink +yellowfin +yenta_socket +zatm +zaurus +zd1201 +zd1211 +zlib_deflate --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/sparc/sparc64-smp +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/sparc/sparc64-smp @@ -0,0 +1,4356 @@ +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0x3004658a +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0x72ebe844 +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0x8fd87408 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xfdd59660 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/cdrom/cdrom cdrom_get_last_written 0x40bd79da +drivers/cdrom/cdrom cdrom_get_media_event 0xf66a793c +drivers/cdrom/cdrom cdrom_ioctl 0xd377e5d1 +drivers/cdrom/cdrom cdrom_media_changed 0xd5059b80 +drivers/cdrom/cdrom cdrom_mode_select 0x8a5a6a91 +drivers/cdrom/cdrom cdrom_mode_sense 0x21c29ad2 +drivers/cdrom/cdrom cdrom_number_of_slots 0x3853a6c4 +drivers/cdrom/cdrom cdrom_open 0xac1e8a1f +drivers/cdrom/cdrom cdrom_release 0x56e14732 +drivers/cdrom/cdrom init_cdrom_command 0x344adbd5 +drivers/cdrom/cdrom register_cdrom 0x2d849ee7 +drivers/cdrom/cdrom unregister_cdrom 0x0c841080 +drivers/char/generic_serial gs_block_til_ready 0xc3adbf11 +drivers/char/generic_serial gs_chars_in_buffer 0x1b3777dc +drivers/char/generic_serial gs_close 0x036cc901 +drivers/char/generic_serial gs_flush_buffer 0x77869172 +drivers/char/generic_serial gs_flush_chars 0xa051037c +drivers/char/generic_serial gs_getserial 0xdaf6fa7c +drivers/char/generic_serial gs_got_break 0xaa52d371 +drivers/char/generic_serial gs_hangup 0x32eaa3db +drivers/char/generic_serial gs_init_port 0x92605ccf +drivers/char/generic_serial gs_put_char 0x42389c0e +drivers/char/generic_serial gs_set_termios 0x8135184b +drivers/char/generic_serial gs_setserial 0xdf80d5c2 +drivers/char/generic_serial gs_start 0xcfe09415 +drivers/char/generic_serial gs_stop 0x9d80d023 +drivers/char/generic_serial gs_write 0xe5401d8d +drivers/char/generic_serial gs_write_room 0x7089c24a +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0xa72f18c7 +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0xc4ae6c34 +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0xf706015b +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0x1425b506 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0x05c4c3a9 +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0x57f6923a +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0x07bba9f8 +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0x376fdf21 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0xbbbcc520 +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x01d76538 +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0x92b9a9a4 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0x36e68807 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0xe07e30b7 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0x3a55f4bc +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0xf5d2753e +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0x25a886b3 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0xc9929d9c +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0x12aa2ae9 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0x2bab19aa +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0x6d2b2de7 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0x759abd32 +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0x0bcf4c5f +drivers/char/tpm/tpm tpm_open 0x0cb99c45 +drivers/char/tpm/tpm tpm_pm_resume 0x0533d66f +drivers/char/tpm/tpm tpm_pm_suspend 0x7c1a9cba +drivers/char/tpm/tpm tpm_read 0x57a460f9 +drivers/char/tpm/tpm tpm_register_hardware 0xd3d0d3b3 +drivers/char/tpm/tpm tpm_release 0x4a6c7289 +drivers/char/tpm/tpm tpm_remove_hardware 0x2550420e +drivers/char/tpm/tpm tpm_show_caps 0x3ce7f03b +drivers/char/tpm/tpm tpm_show_pcrs 0x40d2e8fa +drivers/char/tpm/tpm tpm_show_pubek 0x4dda8de5 +drivers/char/tpm/tpm tpm_store_cancel 0x20237c67 +drivers/char/tpm/tpm tpm_write 0xa5dd3b6b +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/fc4/fc4 fc_channels 0xf4a8693c +drivers/fc4/fc4 fc_do_plogi 0xf1998a47 +drivers/fc4/fc4 fc_do_prli 0x47aa9a15 +drivers/fc4/fc4 fcp_init 0xba07ca54 +drivers/fc4/fc4 fcp_queue_empty 0x328bcdba +drivers/fc4/fc4 fcp_receive_solicited 0xc3fcdbef +drivers/fc4/fc4 fcp_release 0x421fab06 +drivers/fc4/fc4 fcp_scsi_abort 0xda692b21 +drivers/fc4/fc4 fcp_scsi_dev_reset 0xfa59a786 +drivers/fc4/fc4 fcp_scsi_host_reset 0x24730f9a +drivers/fc4/fc4 fcp_scsi_queuecommand 0x8f5b5e23 +drivers/fc4/fc4 fcp_state_change 0xd23a258a +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0xf79edf9f +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0x95691acd +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0xad7370f2 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0xcf84b5a0 +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0x9ab033d9 +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0xf93358c7 +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0xdd3d903c +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x07d47ac9 +drivers/ieee1394/ieee1394 csr1212_read 0xbde3eb37 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0xf68f47ea +drivers/ieee1394/ieee1394 dma_prog_region_free 0x391072de +drivers/ieee1394/ieee1394 dma_prog_region_init 0x6c3e2e38 +drivers/ieee1394/ieee1394 dma_region_alloc 0xf14b81c0 +drivers/ieee1394/ieee1394 dma_region_free 0xf86e2425 +drivers/ieee1394/ieee1394 dma_region_init 0xbb892134 +drivers/ieee1394/ieee1394 dma_region_mmap 0x9e5e5d1b +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0x711fe756 +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0x91ad8798 +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x911a9305 +drivers/ieee1394/ieee1394 highlevel_host_reset 0x14344526 +drivers/ieee1394/ieee1394 hpsb_add_host 0xf7c34317 +drivers/ieee1394/ieee1394 hpsb_alloc_host 0x97462934 +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0x865a27a9 +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0x89b0c357 +drivers/ieee1394/ieee1394 hpsb_bus_reset 0xe59f1bf4 +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0xcfd789f0 +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0x78d0ef42 +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0x173355b7 +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0xc815a63e +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0xc42094c5 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0x1d1fc01f +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0x64c87574 +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0xa95b2dee +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0xe71d2f0e +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0xf0de3539 +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0xcd9ad248 +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0x1025e282 +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0xa1ccd487 +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0xb0c999f9 +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0x22eda71f +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0x635b3b94 +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0xe05f89d6 +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0xa0b1bbd2 +drivers/ieee1394/ieee1394 hpsb_iso_stop 0x5a468259 +drivers/ieee1394/ieee1394 hpsb_iso_wake 0x268db50f +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x67f1cd90 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0xfb99246e +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0xe8a0a351 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0x46c872c2 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0xe2c837a8 +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0x1453927c +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0xa74e2bdc +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0xad446a44 +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0x2ab3669f +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0xca520757 +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0x55867f24 +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0xb0e9e6ca +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0x3c7c0d05 +drivers/ieee1394/ieee1394 hpsb_node_write 0x63c546d7 +drivers/ieee1394/ieee1394 hpsb_packet_received 0xa98653ff +drivers/ieee1394/ieee1394 hpsb_packet_sent 0xea7b24d6 +drivers/ieee1394/ieee1394 hpsb_packet_success 0x24f1a0ec +drivers/ieee1394/ieee1394 hpsb_protocol_class 0x4dbf30cb +drivers/ieee1394/ieee1394 hpsb_read 0xbbe8dd28 +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0x15f938a4 +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0xf529ebd9 +drivers/ieee1394/ieee1394 hpsb_register_protocol 0x62d626bb +drivers/ieee1394/ieee1394 hpsb_remove_host 0x1082dab3 +drivers/ieee1394/ieee1394 hpsb_reset_bus 0x6b7ad70c +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0x646291b1 +drivers/ieee1394/ieee1394 hpsb_selfid_received 0x2d4e6c04 +drivers/ieee1394/ieee1394 hpsb_send_packet 0xaf8ff8fa +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0xaf2a52c9 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0xf21adaba +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0x0e9c3b91 +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0x36b17552 +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0x5c5feb63 +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0x2a32af5e +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0xa75951df +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0x6fe3edf4 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0x5c82e736 +drivers/ieee1394/ieee1394 hpsb_write 0xe6fe7b66 +drivers/ieee1394/ieee1394 ieee1394_bus_type 0x06e7b85f +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0x1d5aeebc +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0xcc8d576a +drivers/ieee1394/ohci1394 ohci1394_stop_context 0x1e097da9 +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0x2ba5ad2e +drivers/infiniband/core/ib_cm ib_cm_establish 0xe24a51e7 +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0x95669945 +drivers/infiniband/core/ib_cm ib_cm_listen 0x3e5a186e +drivers/infiniband/core/ib_cm ib_create_cm_id 0x99d5f58a +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0x7819414d +drivers/infiniband/core/ib_cm ib_send_cm_apr 0x9d503103 +drivers/infiniband/core/ib_cm ib_send_cm_drep 0xb302a4f4 +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0x6dc852e9 +drivers/infiniband/core/ib_cm ib_send_cm_lap 0x665e2f62 +drivers/infiniband/core/ib_cm ib_send_cm_mra 0x6084ee8f +drivers/infiniband/core/ib_cm ib_send_cm_rej 0xcc95df3b +drivers/infiniband/core/ib_cm ib_send_cm_rep 0x9343a0a9 +drivers/infiniband/core/ib_cm ib_send_cm_req 0x5a882a89 +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0x00f90d4c +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0x3b940e54 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0xf6fe4c78 +drivers/infiniband/core/ib_core ib_alloc_device 0xa2fd8447 +drivers/infiniband/core/ib_core ib_alloc_fmr 0xab83f1eb +drivers/infiniband/core/ib_core ib_alloc_mw 0xbe33c429 +drivers/infiniband/core/ib_core ib_alloc_pd 0x8b8fea07 +drivers/infiniband/core/ib_core ib_attach_mcast 0x7e22f7f9 +drivers/infiniband/core/ib_core ib_create_ah 0x2489e7be +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0xe1812205 +drivers/infiniband/core/ib_core ib_create_cq 0x8c1dcf0e +drivers/infiniband/core/ib_core ib_create_fmr_pool 0xfeeddb2e +drivers/infiniband/core/ib_core ib_create_qp 0xa779163b +drivers/infiniband/core/ib_core ib_create_srq 0x54af4b72 +drivers/infiniband/core/ib_core ib_dealloc_device 0x1dbdb046 +drivers/infiniband/core/ib_core ib_dealloc_fmr 0x21e31012 +drivers/infiniband/core/ib_core ib_dealloc_mw 0xabcca74d +drivers/infiniband/core/ib_core ib_dealloc_pd 0x8c26341a +drivers/infiniband/core/ib_core ib_dereg_mr 0x70beea45 +drivers/infiniband/core/ib_core ib_destroy_ah 0xa95925f2 +drivers/infiniband/core/ib_core ib_destroy_cq 0x9009b404 +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x6ec14414 +drivers/infiniband/core/ib_core ib_destroy_qp 0x22175146 +drivers/infiniband/core/ib_core ib_destroy_srq 0x6a8233b1 +drivers/infiniband/core/ib_core ib_detach_mcast 0x1f353c04 +drivers/infiniband/core/ib_core ib_dispatch_event 0x47762788 +drivers/infiniband/core/ib_core ib_find_cached_gid 0xba659520 +drivers/infiniband/core/ib_core ib_find_cached_pkey 0x8213d128 +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0xccf51938 +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0x5404f5df +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0xff4f942f +drivers/infiniband/core/ib_core ib_get_cached_gid 0xbd0d7710 +drivers/infiniband/core/ib_core ib_get_cached_pkey 0x31c62935 +drivers/infiniband/core/ib_core ib_get_client_data 0x9a543c94 +drivers/infiniband/core/ib_core ib_get_dma_mr 0xa60d5ede +drivers/infiniband/core/ib_core ib_modify_ah 0x80fc82b3 +drivers/infiniband/core/ib_core ib_modify_device 0x8e87fcda +drivers/infiniband/core/ib_core ib_modify_port 0xdee93303 +drivers/infiniband/core/ib_core ib_modify_qp 0x3cabfa6e +drivers/infiniband/core/ib_core ib_modify_srq 0x050cc43b +drivers/infiniband/core/ib_core ib_pack 0x06830b9a +drivers/infiniband/core/ib_core ib_query_ah 0x81585399 +drivers/infiniband/core/ib_core ib_query_device 0xa07d2c0b +drivers/infiniband/core/ib_core ib_query_gid 0xd6335c86 +drivers/infiniband/core/ib_core ib_query_mr 0xa2e8fa73 +drivers/infiniband/core/ib_core ib_query_pkey 0xb644d30a +drivers/infiniband/core/ib_core ib_query_port 0x9c3234ce +drivers/infiniband/core/ib_core ib_query_qp 0x3fa3e4c8 +drivers/infiniband/core/ib_core ib_query_srq 0x0d43dacc +drivers/infiniband/core/ib_core ib_reg_phys_mr 0x4647558d +drivers/infiniband/core/ib_core ib_register_client 0x381833c5 +drivers/infiniband/core/ib_core ib_register_device 0xcdf0aef4 +drivers/infiniband/core/ib_core ib_register_event_handler 0xffa1e3e7 +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0xd6476d7a +drivers/infiniband/core/ib_core ib_resize_cq 0x3deb4cad +drivers/infiniband/core/ib_core ib_set_client_data 0x3241ca7f +drivers/infiniband/core/ib_core ib_ud_header_init 0x78f1b190 +drivers/infiniband/core/ib_core ib_ud_header_pack 0xa925443e +drivers/infiniband/core/ib_core ib_ud_header_unpack 0xa7cc5de5 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xf96fc9de +drivers/infiniband/core/ib_core ib_unregister_client 0x84e71850 +drivers/infiniband/core/ib_core ib_unregister_device 0xc5ed5da3 +drivers/infiniband/core/ib_core ib_unregister_event_handler 0xcf71bced +drivers/infiniband/core/ib_mad ib_cancel_mad 0x93931232 +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0xe4f2bf9a +drivers/infiniband/core/ib_mad ib_create_send_mad 0x0c5b603f +drivers/infiniband/core/ib_mad ib_free_recv_mad 0xa38bb8f6 +drivers/infiniband/core/ib_mad ib_free_send_mad 0x7ef857df +drivers/infiniband/core/ib_mad ib_modify_mad 0xda3be5a9 +drivers/infiniband/core/ib_mad ib_post_send_mad 0xf2852cf7 +drivers/infiniband/core/ib_mad ib_process_mad_wc 0xf352b954 +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x0d2b6ff8 +drivers/infiniband/core/ib_mad ib_register_mad_agent 0x507aa11e +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0x293215b8 +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0xfbe6e1da +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0x555c7e08 +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0x988de246 +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0xc733163e +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0xb80970ed +drivers/md/dm-mirror dm_create_dirty_log 0xa024275e +drivers/md/dm-mirror dm_destroy_dirty_log 0xeb824eab +drivers/md/dm-mirror dm_register_dirty_log_type 0x77d33bbd +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x34b2b2c1 +drivers/md/dm-mod dm_get_device 0xe7a9597d +drivers/md/dm-mod dm_get_mapinfo 0xc9598a95 +drivers/md/dm-mod dm_io_async 0x09aef5f2 +drivers/md/dm-mod dm_io_async_bvec 0xdf6588a3 +drivers/md/dm-mod dm_io_async_vm 0xdaff2915 +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0x64c5e26c +drivers/md/dm-mod dm_io_sync_bvec 0xc69d2ad6 +drivers/md/dm-mod dm_io_sync_vm 0x2a69d5b1 +drivers/md/dm-mod dm_put_device 0xcc97ce76 +drivers/md/dm-mod dm_register_target 0x28a8667e +drivers/md/dm-mod dm_table_event 0xf17c5028 +drivers/md/dm-mod dm_table_flush_all 0x18cba628 +drivers/md/dm-mod dm_table_get 0x97e2d765 +drivers/md/dm-mod dm_table_get_mode 0xd6d98000 +drivers/md/dm-mod dm_table_get_size 0xee41836c +drivers/md/dm-mod dm_table_put 0x6f3c32da +drivers/md/dm-mod dm_table_unplug_all 0x40cc5ccb +drivers/md/dm-mod dm_unregister_target 0x18e44176 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x27bf77f4 +drivers/md/dm-mod kcopyd_client_create 0x4a380cac +drivers/md/dm-mod kcopyd_client_destroy 0x537986cb +drivers/md/dm-mod kcopyd_copy 0x6259ded5 +drivers/md/dm-multipath dm_pg_init_complete 0x5c3cac29 +drivers/md/dm-multipath dm_register_hw_handler 0x254c1091 +drivers/md/dm-multipath dm_register_path_selector 0xa92ae74b +drivers/md/dm-multipath dm_scsi_err_handler 0x0cab2e20 +drivers/md/dm-multipath dm_unregister_hw_handler 0xb4ad0a99 +drivers/md/dm-multipath dm_unregister_path_selector 0xe8e842e9 +drivers/md/md-mod bitmap_close_sync 0x203a7350 +drivers/md/md-mod bitmap_daemon_work 0x385bedd8 +drivers/md/md-mod bitmap_end_sync 0x3e3ead2d +drivers/md/md-mod bitmap_endwrite 0xc54dad82 +drivers/md/md-mod bitmap_start_sync 0xc92a4865 +drivers/md/md-mod bitmap_startwrite 0x2eeb567c +drivers/md/md-mod bitmap_unplug 0x47bcea09 +drivers/md/md-mod md_check_recovery 0x31e056af +drivers/md/md-mod md_done_sync 0xd126d87a +drivers/md/md-mod md_error 0x5d6dded2 +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x038285a9 +drivers/md/md-mod md_unregister_thread 0x27d10e72 +drivers/md/md-mod md_wakeup_thread 0x2dad80a8 +drivers/md/md-mod md_write_end 0x9b997aef +drivers/md/md-mod md_write_start 0x5167f222 +drivers/md/md-mod register_md_personality 0x38c6300f +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x4740e7a3 +drivers/media/common/ir-common ir_codes_hauppauge_new 0x902a3cd2 +drivers/media/common/ir-common ir_codes_pinnacle 0xd3a0f048 +drivers/media/common/ir-common ir_codes_pixelview 0xfa177653 +drivers/media/common/ir-common ir_codes_rc5_tv 0xd9c7f010 +drivers/media/common/ir-common ir_codes_winfast 0x89cc1189 +drivers/media/common/ir-common ir_decode_biphase 0x43c89ef4 +drivers/media/common/ir-common ir_decode_pulsedistance 0x2456e513 +drivers/media/common/ir-common ir_dump_samples 0x6d6511e7 +drivers/media/common/ir-common ir_extract_bits 0x1cb148f5 +drivers/media/common/ir-common ir_input_init 0xffb12d51 +drivers/media/common/ir-common ir_input_keydown 0xa32737b6 +drivers/media/common/ir-common ir_input_nokey 0x5fcd5128 +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0xa6021c54 +drivers/media/video/btcx-risc btcx_riscmem_free 0x8e8eb0d3 +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0xc87b2ca1 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0x07d2610b +drivers/media/video/bttv bttv_gpio_bits 0x45c40977 +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0x59ee7922 +drivers/media/video/bttv bttv_gpio_read 0xc01a4213 +drivers/media/video/bttv bttv_gpio_write 0x6099c438 +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0xb6d3c4e5 +drivers/media/video/bttv bttv_sub_register 0x1fca2514 +drivers/media/video/bttv bttv_sub_unregister 0x2c5033e2 +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0xeed25557 +drivers/media/video/saa7134/saa7134 dmasound_exit 0x7e8d5a23 +drivers/media/video/saa7134/saa7134 dmasound_init 0x1497d498 +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0xd2b28e4d +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0x321ebc3a +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0x5298dc97 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0x9ac78734 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0x8b9ab907 +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0xce618fb8 +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0x48e8b20e +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0x56d74a48 +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0x096107d0 +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0xe3db2bc5 +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0xbd6869b4 +drivers/media/video/tveeprom tveeprom_read 0xa255d056 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0x8f800a88 +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x9c7de443 +drivers/media/video/v4l2-common v4l2_prio_check 0x2f639468 +drivers/media/video/v4l2-common v4l2_prio_close 0x95284709 +drivers/media/video/v4l2-common v4l2_prio_init 0xbecd2858 +drivers/media/video/v4l2-common v4l2_prio_max 0x1dcaa0c8 +drivers/media/video/v4l2-common v4l2_prio_open 0x76ba9a9a +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0xea6b1ba9 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0xa2072b8e +drivers/media/video/video-buf videobuf_dma_init 0xffd8bd7d +drivers/media/video/video-buf videobuf_dma_init_kernel 0x33d194f3 +drivers/media/video/video-buf videobuf_dma_init_overlay 0x3b9d672e +drivers/media/video/video-buf videobuf_dma_init_user 0x0aabb719 +drivers/media/video/video-buf videobuf_dma_pci_map 0x739f3c02 +drivers/media/video/video-buf videobuf_dma_pci_sync 0xdce12439 +drivers/media/video/video-buf videobuf_dma_pci_unmap 0x0b2d16dd +drivers/media/video/video-buf videobuf_dqbuf 0x50d5b2c1 +drivers/media/video/video-buf videobuf_iolock 0x64fafb2c +drivers/media/video/video-buf videobuf_mmap_free 0xcbff2e21 +drivers/media/video/video-buf videobuf_mmap_mapper 0x4f22a573 +drivers/media/video/video-buf videobuf_mmap_setup 0x354ea934 +drivers/media/video/video-buf videobuf_next_field 0xe114beb7 +drivers/media/video/video-buf videobuf_poll_stream 0xdfb77879 +drivers/media/video/video-buf videobuf_qbuf 0xf6fbbc40 +drivers/media/video/video-buf videobuf_querybuf 0x7f8b242f +drivers/media/video/video-buf videobuf_queue_cancel 0x524e030a +drivers/media/video/video-buf videobuf_queue_init 0xe9c67a4c +drivers/media/video/video-buf videobuf_queue_is_busy 0x2021afe1 +drivers/media/video/video-buf videobuf_read_one 0x41632064 +drivers/media/video/video-buf videobuf_read_start 0x4eb385e3 +drivers/media/video/video-buf videobuf_read_stop 0xf5bc6dbe +drivers/media/video/video-buf videobuf_read_stream 0xc201d8d2 +drivers/media/video/video-buf videobuf_reqbufs 0x575b5a3a +drivers/media/video/video-buf videobuf_status 0x7d2dd477 +drivers/media/video/video-buf videobuf_streamoff 0x4e3f2b89 +drivers/media/video/video-buf videobuf_streamon 0x98147f1e +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0x192a127d +drivers/media/video/video-buf videobuf_waiton 0xf327dfe1 +drivers/media/video/videodev video_devdata 0xd8d16984 +drivers/media/video/videodev video_device_alloc 0x9d076fe7 +drivers/media/video/videodev video_device_release 0x4df84778 +drivers/media/video/videodev video_exclusive_open 0xfc084e9b +drivers/media/video/videodev video_exclusive_release 0xc2134ec4 +drivers/media/video/videodev video_register_device 0x1cedb288 +drivers/media/video/videodev video_unregister_device 0x0b52d50a +drivers/media/video/videodev video_usercopy 0xb6fed03c +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0x5f374bc5 +drivers/message/fusion/mptbase mpt_HardResetHandler 0x9d1b6d1b +drivers/message/fusion/mptbase mpt_add_sge 0x375d8126 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0xe2068feb +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0xd28142e5 +drivers/message/fusion/mptbase mpt_attach 0x7e39ecbc +drivers/message/fusion/mptbase mpt_config 0xb494a2a1 +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0x0dc17b64 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0x66403929 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x66b243e5 +drivers/message/fusion/mptbase mpt_findImVolumes 0x319c8cb3 +drivers/message/fusion/mptbase mpt_free_fw_memory 0x6488e45c +drivers/message/fusion/mptbase mpt_free_msg_frame 0xcfce7559 +drivers/message/fusion/mptbase mpt_get_msg_frame 0xe0b86c8a +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0x28e2cec6 +drivers/message/fusion/mptbase mpt_proc_root_dir 0x5157465c +drivers/message/fusion/mptbase mpt_put_msg_frame 0xe24628f8 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x3eb1615e +drivers/message/fusion/mptbase mpt_register 0x8fdd44e7 +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x7d570396 +drivers/message/fusion/mptbase mpt_send_handshake_request 0x259b482e +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_toolbox 0xfbd9d13f +drivers/message/fusion/mptbase mpt_verify_adapter 0xafd29993 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x22878474 +drivers/message/fusion/mptscsih mptscsih_abort 0xe33d7b9b +drivers/message/fusion/mptscsih mptscsih_bios_param 0xb146e1a9 +drivers/message/fusion/mptscsih mptscsih_bus_reset 0x52b1ecd8 +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x6ed3674f +drivers/message/fusion/mptscsih mptscsih_dev_reset 0xc84bdf2a +drivers/message/fusion/mptscsih mptscsih_event_process 0xc37e67c4 +drivers/message/fusion/mptscsih mptscsih_host_reset 0xde932d5a +drivers/message/fusion/mptscsih mptscsih_info 0x11c626f0 +drivers/message/fusion/mptscsih mptscsih_io_done 0xa98cf6d4 +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x3eb9ab21 +drivers/message/fusion/mptscsih mptscsih_proc_info 0xf5e45bb9 +drivers/message/fusion/mptscsih mptscsih_qcmd 0xbabd7fbf +drivers/message/fusion/mptscsih mptscsih_remove 0xa31d5155 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0x9fe9c0bc +drivers/message/fusion/mptscsih mptscsih_shutdown 0x65f4662b +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0x29483f5b +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x3c2d0c0b +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x55255459 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0xc1fb2ff3 +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_cntxt_list_add 0xafabb5ba +drivers/message/i2o/i2o_core i2o_cntxt_list_get 0x5eb2b4d3 +drivers/message/i2o/i2o_core i2o_cntxt_list_get_ptr 0x298c1ce0 +drivers/message/i2o/i2o_core i2o_cntxt_list_remove 0x9c3fb3e6 +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0xfdea0a3d +drivers/message/i2o/i2o_core i2o_device_claim_release 0x5e6012ba +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0x592ef050 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x7406f2de +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x81998ddc +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0x5df082d9 +drivers/message/i2o/i2o_core i2o_driver_register 0xe74eea68 +drivers/message/i2o/i2o_core i2o_driver_unregister 0x2715ab1b +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0xf0002679 +drivers/message/i2o/i2o_core i2o_exec_lct_get 0xee4d7f0f +drivers/message/i2o/i2o_core i2o_find_iop 0x11570747 +drivers/message/i2o/i2o_core i2o_iop_find_device 0x6a45d791 +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x9f9e1487 +drivers/message/i2o/i2o_core i2o_msg_nop 0x3a3d098f +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0x504b17f7 +drivers/message/i2o/i2o_core i2o_parm_field_get 0xd3a7c61d +drivers/message/i2o/i2o_core i2o_parm_issue 0x7d42be50 +drivers/message/i2o/i2o_core i2o_parm_table_get 0xe42c3d67 +drivers/message/i2o/i2o_core i2o_status_get 0x32b33456 +drivers/mmc/mmc_core __mmc_claim_host 0xb94159e1 +drivers/mmc/mmc_core mmc_add_host 0x24501f49 +drivers/mmc/mmc_core mmc_alloc_host 0x46182c91 +drivers/mmc/mmc_core mmc_cleanup_queue 0xde062d66 +drivers/mmc/mmc_core mmc_detect_change 0xb61f321b +drivers/mmc/mmc_core mmc_free_host 0x35bf392d +drivers/mmc/mmc_core mmc_init_queue 0x36c39eee +drivers/mmc/mmc_core mmc_queue_resume 0x6801cb97 +drivers/mmc/mmc_core mmc_queue_suspend 0xd2e09d76 +drivers/mmc/mmc_core mmc_register_driver 0xf047f897 +drivers/mmc/mmc_core mmc_release_host 0xa1d02e0e +drivers/mmc/mmc_core mmc_remove_host 0x707e25fc +drivers/mmc/mmc_core mmc_request_done 0xac31d681 +drivers/mmc/mmc_core mmc_start_request 0x1e726e22 +drivers/mmc/mmc_core mmc_unregister_driver 0xef56d02d +drivers/mmc/mmc_core mmc_wait_for_app_cmd 0x6dad3523 +drivers/mmc/mmc_core mmc_wait_for_cmd 0x2e38d72d +drivers/mmc/mmc_core mmc_wait_for_req 0x68257090 +drivers/net/8390 NS8390_init 0x9360c135 +drivers/net/8390 __alloc_ei_netdev 0x6bec5c89 +drivers/net/8390 ei_close 0x5abbf33a +drivers/net/8390 ei_interrupt 0x9be3b971 +drivers/net/8390 ei_open 0x2ed478fc +drivers/net/8390 ei_poll 0xebc330aa +drivers/net/mii generic_mii_ioctl 0x3bd1a24f +drivers/net/mii mii_check_gmii_support 0x2b311bc9 +drivers/net/mii mii_check_link 0xe04d0ffd +drivers/net/mii mii_check_media 0x05cae6d9 +drivers/net/mii mii_ethtool_gset 0x71890cdc +drivers/net/mii mii_ethtool_sset 0xd1e49484 +drivers/net/mii mii_link_ok 0xdd9e3d85 +drivers/net/mii mii_nway_restart 0x8a0e87ae +drivers/net/phy/libphy genphy_config_advert 0x2bd9533d +drivers/net/phy/libphy genphy_config_aneg 0xfbaeae83 +drivers/net/phy/libphy genphy_read_status 0xdc58194d +drivers/net/phy/libphy mdiobus_register 0x9361c151 +drivers/net/phy/libphy mdiobus_unregister 0xc2d45a0e +drivers/net/phy/libphy phy_attach 0x78b8e488 +drivers/net/phy/libphy phy_connect 0x93c576b9 +drivers/net/phy/libphy phy_detach 0x50878644 +drivers/net/phy/libphy phy_disable_interrupts 0x0cd288e8 +drivers/net/phy/libphy phy_disconnect 0x3834c4d5 +drivers/net/phy/libphy phy_driver_register 0x543e9be1 +drivers/net/phy/libphy phy_driver_unregister 0xc39a90ab +drivers/net/phy/libphy phy_enable_interrupts 0xb68afd39 +drivers/net/phy/libphy phy_print_status 0x4c871e2e +drivers/net/phy/libphy phy_read 0x3de5b823 +drivers/net/phy/libphy phy_sanitize_settings 0xce620fb1 +drivers/net/phy/libphy phy_start 0x8054f5b0 +drivers/net/phy/libphy phy_start_aneg 0x7aed9687 +drivers/net/phy/libphy phy_start_interrupts 0x6e83504f +drivers/net/phy/libphy phy_stop 0x981ff39e +drivers/net/phy/libphy phy_stop_interrupts 0x5f631dcd +drivers/net/phy/libphy phy_write 0x4bc0937d +drivers/net/ppp_generic ppp_channel_index 0x386c1e06 +drivers/net/ppp_generic ppp_input 0x63c0dca4 +drivers/net/ppp_generic ppp_input_error 0xa51ae1e3 +drivers/net/ppp_generic ppp_output_wakeup 0x73eb813a +drivers/net/ppp_generic ppp_register_channel 0xecd7b4f8 +drivers/net/ppp_generic ppp_register_compressor 0x714c4ee1 +drivers/net/ppp_generic ppp_unit_number 0xe4444acc +drivers/net/ppp_generic ppp_unregister_channel 0x67ee5b62 +drivers/net/ppp_generic ppp_unregister_compressor 0x126282a5 +drivers/net/pppox pppox_unbind_sock 0xd3169be0 +drivers/net/pppox register_pppox_proto 0xaebf55b1 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x6a47fcc2 +drivers/net/slhc slhc_free 0xeb3c59ef +drivers/net/slhc slhc_init 0x86de1d74 +drivers/net/slhc slhc_remember 0x9536b7c2 +drivers/net/slhc slhc_toss 0x3b36a20a +drivers/net/slhc slhc_uncompress 0xa532de34 +drivers/net/wireless/atmel atmel_open 0x3b0594ac +drivers/net/wireless/atmel init_atmel_card 0x1dd47cb9 +drivers/net/wireless/atmel stop_atmel_card 0x61e0513f +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0x13402a18 +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0x481dc170 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0x408d277a +drivers/net/wireless/hostap/hostap hostap_add_interface 0xf57242ca +drivers/net/wireless/hostap/hostap hostap_add_sta 0x62345953 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0xaa3dcfa7 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0x0b277642 +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0x93444691 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0xd9d9dbc0 +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0x13ac629f +drivers/net/wireless/hostap/hostap hostap_get_porttype 0xe53e684f +drivers/net/wireless/hostap/hostap hostap_get_stats 0x2504f371 +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0xf30166cb +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x4d2bd4d5 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x15747ecd +drivers/net/wireless/hostap/hostap hostap_info_init 0x69eda52f +drivers/net/wireless/hostap/hostap hostap_info_process 0xe3bd8688 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0x2b3af128 +drivers/net/wireless/hostap/hostap hostap_init_data 0x13d5a34b +drivers/net/wireless/hostap/hostap hostap_init_proc 0x6210c934 +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0xcb56beea +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x0a15f17a +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0x45e895af +drivers/net/wireless/hostap/hostap hostap_proc 0xa7ce0f1c +drivers/net/wireless/hostap/hostap hostap_remove_interface 0x53997074 +drivers/net/wireless/hostap/hostap hostap_remove_proc 0x1459c34b +drivers/net/wireless/hostap/hostap hostap_set_antsel 0x80aba8af +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0xf8c034f5 +drivers/net/wireless/hostap/hostap hostap_set_encryption 0x90682024 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x7147dac0 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0xe8e1a05c +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0x7e8c0923 +drivers/net/wireless/hostap/hostap hostap_set_string 0x2129a199 +drivers/net/wireless/hostap/hostap hostap_set_word 0xca3e7882 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0x0de514ea +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x38f4e06b +drivers/net/wireless/hostap/hostap hostap_update_rates 0x2a006fac +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x02f86378 +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x47a446d1 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0xde810f10 +drivers/net/wireless/orinoco __orinoco_down 0x24cc95d6 +drivers/net/wireless/orinoco __orinoco_up 0x046ed8e0 +drivers/net/wireless/orinoco alloc_orinocodev 0x8db3e083 +drivers/net/wireless/orinoco free_orinocodev 0xafe70065 +drivers/net/wireless/orinoco orinoco_interrupt 0x0178e1ea +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x56d6e7c4 +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xefa578b4 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x3bd09850 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0x97a70cb3 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0xb1bf73de +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0x111d55ad +drivers/net/wireless/prism54_softmac/islsm islsm_free 0xf21d19cb +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0x8f6bba24 +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0x1e864e52 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0x3c093f20 +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x92e33727 +drivers/net/wireless/prism54_softmac/islsm register_islsm 0x956cc72d +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0xe7dd31b3 +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0x5a2c325b +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0x800d1963 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0x3dbb6ae5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0x6ffdd26d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0x4b443bc7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0xb175e1e2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0xe251a05c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0xf52f124f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0x8abcf2a6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xcd7581f9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0xd83af198 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0xbb9262db +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x7417ec18 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0x8f51f623 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0x8a95d22b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0x51dc24ed +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0x38cc7e10 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x8b4ab12c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0x797826a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x861b01f9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0xd322fc52 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0x693a77f7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x656da41e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x68a58af7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x907c4767 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0xce9a3126 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x497c8e73 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x27165a4e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0x30359290 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0xafdb3333 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0x70088fa5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x398ef549 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0x389ed94c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0xae5ec017 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0xf0b8b656 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x772d09f5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0x0e1715e0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0x1d62361d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x91f9b443 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x3cf82442 +drivers/parport/parport parport_announce_port 0xb1982938 +drivers/parport/parport parport_claim 0xb02f3068 +drivers/parport/parport parport_claim_or_block 0xf9eda15d +drivers/parport/parport parport_find_base 0xf39b7a11 +drivers/parport/parport parport_find_number 0x294f2d90 +drivers/parport/parport parport_get_port 0x5a4bf06c +drivers/parport/parport parport_ieee1284_ecp_read_data 0x1d28d242 +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xcfec99f1 +drivers/parport/parport parport_ieee1284_ecp_write_data 0xe6f4035d +drivers/parport/parport parport_ieee1284_epp_read_addr 0x6705d706 +drivers/parport/parport parport_ieee1284_epp_read_data 0x4cb839da +drivers/parport/parport parport_ieee1284_epp_write_addr 0xcdff053c +drivers/parport/parport parport_ieee1284_epp_write_data 0xe4e79f90 +drivers/parport/parport parport_ieee1284_interrupt 0x3deb08f4 +drivers/parport/parport parport_ieee1284_read_byte 0xed1ee23b +drivers/parport/parport parport_ieee1284_read_nibble 0xce5d6113 +drivers/parport/parport parport_ieee1284_write_compat 0xb06c3334 +drivers/parport/parport parport_negotiate 0xce4895dd +drivers/parport/parport parport_put_port 0x09a11d02 +drivers/parport/parport parport_read 0x939f4487 +drivers/parport/parport parport_register_device 0x23683887 +drivers/parport/parport parport_register_driver 0xddf34182 +drivers/parport/parport parport_register_port 0x0a0a88c3 +drivers/parport/parport parport_release 0x3d9b408d +drivers/parport/parport parport_remove_port 0x22fbfa5c +drivers/parport/parport parport_set_timeout 0x66776b0f +drivers/parport/parport parport_unregister_device 0x7904828a +drivers/parport/parport parport_unregister_driver 0x3ed9572b +drivers/parport/parport parport_wait_event 0x122962de +drivers/parport/parport parport_wait_peripheral 0x211be48c +drivers/parport/parport parport_write 0x95e7538c +drivers/parport/parport_pc parport_pc_probe_port 0x3ffdf8f2 +drivers/parport/parport_pc parport_pc_unregister_port 0x02ea878c +drivers/sbus/char/bbc bbc_i2c_attach 0x0064c918 +drivers/sbus/char/bbc bbc_i2c_detach 0x1b2f4d27 +drivers/sbus/char/bbc bbc_i2c_getdev 0xc11fd97d +drivers/sbus/char/bbc bbc_i2c_read_buf 0x6011ece2 +drivers/sbus/char/bbc bbc_i2c_readb 0xcb8c263f +drivers/sbus/char/bbc bbc_i2c_write_buf 0x9be9eadc +drivers/sbus/char/bbc bbc_i2c_writeb 0x724d7e99 +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x7b7751a0 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0x74cd5be7 +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x3a1137a8 +drivers/scsi/raid_class raid_class_attach 0xa0b70ad7 +drivers/scsi/raid_class raid_class_release 0x96bed553 +drivers/scsi/raid_class raid_component_add 0x462ec884 +drivers/scsi/sas/sas_class sas_register_ha 0xc77eb678 +drivers/scsi/sas/sas_class sas_unregister_ha 0xbde6be64 +drivers/scsi/scsi_mod __scsi_add_device 0x777ac4cc +drivers/scsi/scsi_mod __scsi_device_lookup 0x7ee011e7 +drivers/scsi/scsi_mod __scsi_device_lookup_by_target 0xb516c414 +drivers/scsi/scsi_mod __scsi_iterate_devices 0xe018dcbb +drivers/scsi/scsi_mod __scsi_print_command 0xfef96e23 +drivers/scsi/scsi_mod __scsi_print_sense 0x69d38ed9 +drivers/scsi/scsi_mod int_to_scsilun 0xea10212a +drivers/scsi/scsi_mod scsi_add_device 0xec766761 +drivers/scsi/scsi_mod scsi_add_host 0x3572c6be +drivers/scsi/scsi_mod scsi_adjust_queue_depth 0x2acf0134 +drivers/scsi/scsi_mod scsi_allocate_request 0x50b94772 +drivers/scsi/scsi_mod scsi_bios_ptable 0x37d6b64b +drivers/scsi/scsi_mod scsi_block_requests 0x480c2f83 +drivers/scsi/scsi_mod scsi_block_when_processing_errors 0x20f37c15 +drivers/scsi/scsi_mod scsi_bus_type 0xce6f5b4d +drivers/scsi/scsi_mod scsi_calculate_bounce_limit 0x1693346d +drivers/scsi/scsi_mod scsi_command_normalize_sense 0xeb833b7d +drivers/scsi/scsi_mod scsi_device_cancel 0xd836cb1a +drivers/scsi/scsi_mod scsi_device_get 0xf69db21a +drivers/scsi/scsi_mod scsi_device_lookup 0x41f8ef71 +drivers/scsi/scsi_mod scsi_device_lookup_by_target 0x2ad5247e +drivers/scsi/scsi_mod scsi_device_put 0x4f1f5371 +drivers/scsi/scsi_mod scsi_device_quiesce 0x0dc74598 +drivers/scsi/scsi_mod scsi_device_resume 0xb287af93 +drivers/scsi/scsi_mod scsi_device_set_state 0xc18a505c +drivers/scsi/scsi_mod scsi_device_types 0x6df713c9 +drivers/scsi/scsi_mod scsi_do_req 0x48cde9ba +drivers/scsi/scsi_mod scsi_execute 0xab32c711 +drivers/scsi/scsi_mod scsi_execute_req 0xa779bf6c +drivers/scsi/scsi_mod scsi_extd_sense_format 0x11267875 +drivers/scsi/scsi_mod scsi_finish_command 0xe803761d +drivers/scsi/scsi_mod scsi_flush_work 0xedc38fb1 +drivers/scsi/scsi_mod scsi_free_host_dev 0x8ab6cf89 +drivers/scsi/scsi_mod scsi_get_command 0xf32173e1 +drivers/scsi/scsi_mod scsi_get_host_dev 0x5762c5ca +drivers/scsi/scsi_mod scsi_get_sense_info_fld 0x56987c01 +drivers/scsi/scsi_mod scsi_host_alloc 0xe4ec0bab +drivers/scsi/scsi_mod scsi_host_get 0x74b9ee4f +drivers/scsi/scsi_mod scsi_host_lookup 0x5eed6a05 +drivers/scsi/scsi_mod scsi_host_put 0xa0f17dea +drivers/scsi/scsi_mod scsi_host_set_state 0xe391ff34 +drivers/scsi/scsi_mod scsi_internal_device_block 0x95cb169a +drivers/scsi/scsi_mod scsi_internal_device_unblock 0x08180426 +drivers/scsi/scsi_mod scsi_io_completion 0x5fa70291 +drivers/scsi/scsi_mod scsi_ioctl 0x1ca30040 +drivers/scsi/scsi_mod scsi_ioctl_send_command 0x41e85117 +drivers/scsi/scsi_mod scsi_is_host_device 0xd5a115b3 +drivers/scsi/scsi_mod scsi_is_sdev_device 0xe8efe85e +drivers/scsi/scsi_mod scsi_is_target_device 0x62c6ce97 +drivers/scsi/scsi_mod scsi_mode_sense 0xa4a3f237 +drivers/scsi/scsi_mod scsi_nonblockable_ioctl 0xa3bac177 +drivers/scsi/scsi_mod scsi_normalize_sense 0x0c65e73c +drivers/scsi/scsi_mod scsi_partsize 0x4afe9a77 +drivers/scsi/scsi_mod scsi_print_command 0x0c479072 +drivers/scsi/scsi_mod scsi_print_msg 0x67f88938 +drivers/scsi/scsi_mod scsi_print_req_sense 0x91a479b0 +drivers/scsi/scsi_mod scsi_print_sense 0x6cd92a9d +drivers/scsi/scsi_mod scsi_print_sense_hdr 0xca5dbc50 +drivers/scsi/scsi_mod scsi_print_status 0x9cfd56c5 +drivers/scsi/scsi_mod scsi_put_command 0xda4d85b2 +drivers/scsi/scsi_mod scsi_queue_work 0x5f779cfd +drivers/scsi/scsi_mod scsi_register 0xef1be565 +drivers/scsi/scsi_mod scsi_register_driver 0x0533bbcc +drivers/scsi/scsi_mod scsi_register_interface 0x9a13da86 +drivers/scsi/scsi_mod scsi_release_request 0x90aa38ee +drivers/scsi/scsi_mod scsi_remove_device 0x0bdbfe82 +drivers/scsi/scsi_mod scsi_remove_host 0x4a861c64 +drivers/scsi/scsi_mod scsi_remove_target 0xa5d4a9e1 +drivers/scsi/scsi_mod scsi_report_bus_reset 0x61042068 +drivers/scsi/scsi_mod scsi_report_device_reset 0x4741c0e1 +drivers/scsi/scsi_mod scsi_request_normalize_sense 0xbe74f23e +drivers/scsi/scsi_mod scsi_rescan_device 0xa77cd3e7 +drivers/scsi/scsi_mod scsi_reset_provider 0xde3bcb64 +drivers/scsi/scsi_mod scsi_scan_host 0x59c6605f +drivers/scsi/scsi_mod scsi_scan_target 0xa0468595 +drivers/scsi/scsi_mod scsi_sense_desc_find 0x2b0ba2b0 +drivers/scsi/scsi_mod scsi_sense_key_string 0x96cd2b04 +drivers/scsi/scsi_mod scsi_set_medium_removal 0xdcd62d13 +drivers/scsi/scsi_mod scsi_setup_blk_pc_cmnd 0x45accd1a +drivers/scsi/scsi_mod scsi_target_block 0x55707d75 +drivers/scsi/scsi_mod scsi_target_quiesce 0x8fb4abda +drivers/scsi/scsi_mod scsi_target_resume 0xdc089374 +drivers/scsi/scsi_mod scsi_target_unblock 0x221ebebc +drivers/scsi/scsi_mod scsi_test_unit_ready 0x7fe6eaac +drivers/scsi/scsi_mod scsi_track_queue_full 0x83ee8302 +drivers/scsi/scsi_mod scsi_unblock_requests 0x8b9b60a1 +drivers/scsi/scsi_mod scsi_unregister 0x57db7caf +drivers/scsi/scsi_mod scsicam_bios_param 0xa9476bdd +drivers/scsi/scsi_mod starget_for_each_device 0x5e9c0e6f +drivers/scsi/scsi_transport_fc fc_attach_transport 0xa3609a5c +drivers/scsi/scsi_transport_fc fc_release_transport 0xc94789c1 +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x3c73282a +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0xc167a9ac +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x2d91724f +drivers/scsi/scsi_transport_fc fc_remove_host 0xaeb2e7b1 +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0x8803b2b8 +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0x8677ed8d +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x200e54d7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x2c112bd6 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0xbeb007b7 +drivers/scsi/scsi_transport_sas sas_attach_transport 0x53300158 +drivers/scsi/scsi_transport_sas sas_phy_add 0x342fdaa4 +drivers/scsi/scsi_transport_sas sas_phy_alloc 0xee66dec1 +drivers/scsi/scsi_transport_sas sas_phy_delete 0xe1172d46 +drivers/scsi/scsi_transport_sas sas_phy_free 0x1e5f66bb +drivers/scsi/scsi_transport_sas sas_release_transport 0x072b24ae +drivers/scsi/scsi_transport_sas sas_remove_host 0x8ba32b98 +drivers/scsi/scsi_transport_sas sas_rphy_add 0xfa702fa8 +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x82f0ceb2 +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x7210d6ae +drivers/scsi/scsi_transport_sas sas_rphy_free 0xdeae4def +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0xd0160743 +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0xe8bcd166 +drivers/scsi/scsi_transport_spi spi_attach_transport 0xc240c01b +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0xfb91acb6 +drivers/scsi/scsi_transport_spi spi_dv_device 0x70a39968 +drivers/scsi/scsi_transport_spi spi_release_transport 0xc8914174 +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0x0d3794f6 +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0xdd629666 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0x2adf5d3a +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x7111b673 +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0x20c2339a +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0x7f42b58c +drivers/usb/host/sl811-hcd sl811h_driver 0x33383967 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x18207e08 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0x35498526 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0x029d1425 +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0x91070a3e +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0xcdd40b74 +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0x6818450b +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0x844affa6 +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0x1cd17bd1 +drivers/usb/net/usbnet usbnet_defer_kevent 0xc1d63797 +drivers/usb/net/usbnet usbnet_disconnect 0x7b39cf7b +drivers/usb/net/usbnet usbnet_get_drvinfo 0xb4f2295f +drivers/usb/net/usbnet usbnet_get_endpoints 0x7a0c5c63 +drivers/usb/net/usbnet usbnet_get_msglevel 0x3d83fd04 +drivers/usb/net/usbnet usbnet_probe 0xb573ebdd +drivers/usb/net/usbnet usbnet_resume 0x8bd55895 +drivers/usb/net/usbnet usbnet_set_msglevel 0xeae5eba7 +drivers/usb/net/usbnet usbnet_skb_return 0xb534b1ed +drivers/usb/net/usbnet usbnet_suspend 0xe9bde300 +drivers/video/backlight/backlight backlight_device_register 0x3648943e +drivers/video/backlight/backlight backlight_device_unregister 0xe9f51300 +drivers/video/backlight/lcd lcd_device_register 0x967cdece +drivers/video/backlight/lcd lcd_device_unregister 0xf4a2a9c0 +drivers/w1/ds9490r ds_get_device 0xa84b75e5 +drivers/w1/ds9490r ds_put_device 0x5a301add +drivers/w1/ds9490r ds_read_bit 0xe5fd9e21 +drivers/w1/ds9490r ds_read_block 0x335202e7 +drivers/w1/ds9490r ds_read_byte 0x5f39beb4 +drivers/w1/ds9490r ds_reset 0xc5bfdfea +drivers/w1/ds9490r ds_touch_bit 0xbf2e5a52 +drivers/w1/ds9490r ds_write_bit 0xb72408c6 +drivers/w1/ds9490r ds_write_block 0x6659210c +drivers/w1/ds9490r ds_write_byte 0xbc9a2f5f +drivers/w1/wire w1_add_master_device 0x31fe0891 +drivers/w1/wire w1_calc_crc8 0x7c2f2afb +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xb0c86d52 +drivers/w1/wire w1_family_put 0x45181a35 +drivers/w1/wire w1_family_registered 0x345f469c +drivers/w1/wire w1_read_8 0x11e06d13 +drivers/w1/wire w1_read_block 0x11f97136 +drivers/w1/wire w1_register_family 0xadeb1de9 +drivers/w1/wire w1_remove_master_device 0x19fc269c +drivers/w1/wire w1_reset_bus 0x2bf3faba +drivers/w1/wire w1_reset_select_slave 0x8b6cc414 +drivers/w1/wire w1_search_devices 0x943d4bc3 +drivers/w1/wire w1_touch_bit 0xbf26e468 +drivers/w1/wire w1_unregister_family 0x2616cdb9 +drivers/w1/wire w1_write_8 0x8e76fcfc +drivers/w1/wire w1_write_block 0x353c2064 +fs/configfs/configfs config_group_init 0xe11e1742 +fs/configfs/configfs config_group_init_type_name 0xb2af59ba +fs/configfs/configfs config_item_get 0xe69b3562 +fs/configfs/configfs config_item_init 0xf6584267 +fs/configfs/configfs config_item_init_type_name 0x3abcf9e6 +fs/configfs/configfs config_item_put 0x3fb1b025 +fs/configfs/configfs config_item_set_name 0xa070f252 +fs/configfs/configfs configfs_register_subsystem 0xde65b0bd +fs/configfs/configfs configfs_unregister_subsystem 0x5484c26b +fs/exportfs/exportfs export_op_default 0xbeb08585 +fs/exportfs/exportfs find_exported_dentry 0xf200c633 +fs/fat/fat fat_add_entries 0x6e6c21b1 +fs/fat/fat fat_alloc_new_dir 0x0ba32c7d +fs/fat/fat fat_attach 0x100fd052 +fs/fat/fat fat_build_inode 0x6377a711 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0xc0fded60 +fs/fat/fat fat_dir_empty 0xf345cd58 +fs/fat/fat fat_fill_super 0xafb10a4c +fs/fat/fat fat_free_clusters 0xbf8e33b6 +fs/fat/fat fat_fs_panic 0x8310e8ef +fs/fat/fat fat_get_dotdot_entry 0xb08adfe6 +fs/fat/fat fat_notify_change 0xd1de53d8 +fs/fat/fat fat_remove_entries 0x340db253 +fs/fat/fat fat_scan 0xb096770d +fs/fat/fat fat_search_long 0x1d656e35 +fs/fat/fat fat_sync_bhs 0x4e5ed069 +fs/fat/fat fat_sync_inode 0x381e3921 +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0xbc4ffacb +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0x6499747d +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0xd2be8089 +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0x72e9a0a7 +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0xe7f17c10 +fs/jbd/jbd journal_abort 0x50f4f0ad +fs/jbd/jbd journal_ack_err 0x137958fd +fs/jbd/jbd journal_blocks_per_page 0x0b4133d8 +fs/jbd/jbd journal_check_available_features 0x14139d73 +fs/jbd/jbd journal_check_used_features 0xef64d121 +fs/jbd/jbd journal_clear_err 0xfe673402 +fs/jbd/jbd journal_create 0xa63c5b89 +fs/jbd/jbd journal_destroy 0x085e70f7 +fs/jbd/jbd journal_dirty_data 0x8f38eef5 +fs/jbd/jbd journal_dirty_metadata 0x2b3be2a2 +fs/jbd/jbd journal_errno 0x860e2a3a +fs/jbd/jbd journal_extend 0xe6122a85 +fs/jbd/jbd journal_flush 0xc66b5a6b +fs/jbd/jbd journal_force_commit 0xf203555f +fs/jbd/jbd journal_force_commit_nested 0xa6f0fab1 +fs/jbd/jbd journal_forget 0xc98f3963 +fs/jbd/jbd journal_get_create_access 0x7fb98bd6 +fs/jbd/jbd journal_get_undo_access 0x8fd534c9 +fs/jbd/jbd journal_get_write_access 0xa8a59346 +fs/jbd/jbd journal_init_dev 0xb99ce209 +fs/jbd/jbd journal_init_inode 0xaf5e3d63 +fs/jbd/jbd journal_invalidatepage 0x10ad847b +fs/jbd/jbd journal_load 0x8bb7710f +fs/jbd/jbd journal_lock_updates 0x3fd7095f +fs/jbd/jbd journal_release_buffer 0x4b603810 +fs/jbd/jbd journal_restart 0x71489e16 +fs/jbd/jbd journal_revoke 0x8ba70f44 +fs/jbd/jbd journal_set_features 0xf2240e1b +fs/jbd/jbd journal_start 0x6684b981 +fs/jbd/jbd journal_start_commit 0x14895aed +fs/jbd/jbd journal_stop 0x263a7c85 +fs/jbd/jbd journal_try_to_free_buffers 0x6bb4f453 +fs/jbd/jbd journal_unlock_updates 0x19f6a9d9 +fs/jbd/jbd journal_update_format 0x84d57c83 +fs/jbd/jbd journal_update_superblock 0xbb929773 +fs/jbd/jbd journal_wipe 0xf4242bb5 +fs/jbd/jbd log_wait_commit 0x63889680 +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0x2ed04bd6 +fs/lockd/lockd nlmsvc_ops 0x8f7a788c +fs/nfsd/nfsd nfs4_acl_add_ace 0x8b0e8bec +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x81a17396 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0xf56c2017 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0x1d747ce3 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xbaeb4700 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0x42a080ec +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0x66552470 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0x26259158 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x43bce54e +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0x36418553 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0x521e0726 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0x80e6c4ac +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0x73a045f7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x6028a2c9 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0x484cedca +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xa82a8645 +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0x0cc5009b +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0xe4cf3db1 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0x43633877 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0x6686fbbb +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0xa2c9dd3e +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0x2a33184e +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0x40c58626 +fs/relayfs/relayfs relay_buf_full 0x1959ddde +fs/relayfs/relayfs relay_close 0xc91d6060 +fs/relayfs/relayfs relay_flush 0x4a7f3e54 +fs/relayfs/relayfs relay_open 0xd0ba2ee6 +fs/relayfs/relayfs relay_reset 0x1ea69e1d +fs/relayfs/relayfs relay_subbufs_consumed 0xbf02512c +fs/relayfs/relayfs relay_switch_subbuf 0xa036d7ea +fs/relayfs/relayfs relayfs_create_dir 0x91728661 +fs/relayfs/relayfs relayfs_file_operations 0x49328506 +fs/relayfs/relayfs relayfs_remove_dir 0x9d006091 +lib/crc-ccitt crc_ccitt 0x651c2313 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x9aabc564 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x41bcd8b3 +lib/libcrc32c crc32c_le 0x13c0c38e +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/802/p8022 register_8022_client 0x4037e52c +net/802/p8022 unregister_8022_client 0xe5e8399d +net/802/psnap register_snap_client 0x0768fc82 +net/802/psnap unregister_snap_client 0xa713fe46 +net/appletalk/appletalk aarp_send_ddp 0xa9fc7954 +net/appletalk/appletalk alloc_ltalkdev 0x2712d461 +net/appletalk/appletalk atalk_find_dev_addr 0xae012b1e +net/appletalk/appletalk atrtr_get_dev 0x588a1552 +net/bridge/bridge br_should_route_hook 0x65034314 +net/bridge/netfilter/ebtables ebt_do_table 0xa6cddd83 +net/bridge/netfilter/ebtables ebt_register_match 0x29b140fc +net/bridge/netfilter/ebtables ebt_register_table 0x524b2a2c +net/bridge/netfilter/ebtables ebt_register_target 0x1add4d84 +net/bridge/netfilter/ebtables ebt_register_watcher 0xc99ac8e4 +net/bridge/netfilter/ebtables ebt_unregister_match 0xec4bf353 +net/bridge/netfilter/ebtables ebt_unregister_table 0xcf5d54a4 +net/bridge/netfilter/ebtables ebt_unregister_target 0x66c34cf9 +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x5d462934 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xf352cf8b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x22923cee +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x79e8107c +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0xa4a467ae +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x1b5dcb3a +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0x5d68719b +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0x5d8fe01b +net/dccp/dccp ccid_init 0x757f0ba8 +net/dccp/dccp ccid_register 0x9407efdc +net/dccp/dccp ccid_unregister 0x07cfe2ca +net/dccp/dccp dccp_hashinfo 0xcbc1915f +net/dccp/dccp dccp_insert_option 0xfc4fc271 +net/dccp/dccp dccp_insert_option_elapsed_time 0x15df0364 +net/dccp/dccp dccp_insert_option_timestamp 0x579a3f06 +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0xafbb17e5 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0x84ec1e5f +net/ieee80211/ieee80211 alloc_ieee80211 0x1887a7d9 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0x3ad6fc7c +net/ieee80211/ieee80211 ieee80211_channel_to_index 0x0742a99c +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0x92339504 +net/ieee80211/ieee80211 ieee80211_get_channel 0xba3ce8b8 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0xfabce820 +net/ieee80211/ieee80211 ieee80211_get_geo 0xbd8de031 +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0x2b18e915 +net/ieee80211/ieee80211 ieee80211_rx 0x38813d98 +net/ieee80211/ieee80211 ieee80211_rx_mgt 0x0dba3739 +net/ieee80211/ieee80211 ieee80211_set_geo 0x4ccc9793 +net/ieee80211/ieee80211 ieee80211_tx_frame 0x7188cd62 +net/ieee80211/ieee80211 ieee80211_txb_free 0x2a650903 +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0x73699b5a +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0xca4e9c98 +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0xec0ba9c1 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0xc914e6ea +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0x1ce5bd97 +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0xf590f6e7 +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x4ddffa6d +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0x9ddb5328 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0xef98f968 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0xe41c7538 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0xc0ec6b1f +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0xcd250426 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0xd226f886 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0x0cafc74d +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0x79edd761 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x7b7f8857 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0xe13c925c +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0xa768d4ed +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0x0382bfc8 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0xd268a7db +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0xa1c64198 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0xecaa45ec +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0x13a38830 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0xb0d25596 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x01452953 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x8a54ccf9 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x4ae85ab3 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0xf619ba1b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x556867bd +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x6ec90f9e +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x76b97665 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0x65622350 +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x435b823c +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x04fbe129 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0x70cc5809 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0x69a7a603 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0x1acb00c9 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0xf1b27d78 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0xed9cde4d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0xa7a96256 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x67ebc17a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0x6464cc81 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0xa55317d3 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x9dd57b34 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x117ea2ec +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0xd0e8878b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x6f92c401 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0x17253175 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x41b9280a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0xaf807e67 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0x84da5bde +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0x1f2e1ce4 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0xe2ca5411 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x77a3e5cd +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0x2411f719 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0xe90efb24 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x23438edc +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x6d666b8f +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0x467d5905 +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0x833f83e0 +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0x9cc543c0 +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0xddf0ae01 +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0x3046e7c0 +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0xa8a95713 +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0x3dce0579 +net/ipv4/ipvs/ip_vs register_ip_vs_app 0x5dd9d1d0 +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0xa91b40fd +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0x03bd80d0 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0x5d73d62a +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0xdc8778a4 +net/ipv4/netfilter/arp_tables arpt_do_table 0x74eec308 +net/ipv4/netfilter/arp_tables arpt_register_table 0xa038bb7c +net/ipv4/netfilter/arp_tables arpt_register_target 0x5dfed919 +net/ipv4/netfilter/arp_tables arpt_unregister_table 0x3ce57e44 +net/ipv4/netfilter/arp_tables arpt_unregister_target 0xd32c3610 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x2886fe3b +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x2dfe0bad +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0x4161c1aa +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x9cbdee4d +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0x1bef6a32 +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0x9050e558 +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x9732d546 +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0x56fbaae9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0x2465ba3e +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0x4937bdb1 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0xb277f284 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0xfc82a427 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0xc8d9b6e3 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0xf81442a9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0xc8e83535 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0xcb91fe89 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0x093e5721 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0x817d05d1 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x0187e5db +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0xa2834c44 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x50984e14 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x7ad7cb7c +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x7f2757ac +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x13cc2ff0 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0x2883d758 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0x7aea2f63 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x757175ef +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x097af100 +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0x051b41a7 +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0x49ab5849 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x037f35e3 +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0xcd5dffe9 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0xf6255b5b +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0xc66bfce2 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0xbed10bd4 +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0xb31a3200 +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0x50d709fa +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0x3c0ff398 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0xfb5b50cc +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0xb7e3534a +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0x0fed6734 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0x788383bb +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x782bf682 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0x51072415 +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0x223eb8b6 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0x914cb2cc +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0x517e02ad +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0x43d37882 +net/ipv4/netfilter/ip_nat ip_nat_packet 0x7bfcb736 +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x5ecd6864 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x444504fb +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0xc91bebb6 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0x474d89f6 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x98e16980 +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0x62b3dc39 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0x572e188e +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x327e4e68 +net/ipv4/netfilter/ip_tables ipt_do_table 0xf7451316 +net/ipv4/netfilter/ip_tables ipt_find_target 0xb53ee38d +net/ipv4/netfilter/ip_tables ipt_register_match 0x387c852b +net/ipv4/netfilter/ip_tables ipt_register_table 0x95c136f9 +net/ipv4/netfilter/ip_tables ipt_register_target 0x8702156e +net/ipv4/netfilter/ip_tables ipt_unregister_match 0x6aa36523 +net/ipv4/netfilter/ip_tables ipt_unregister_table 0xbabede0c +net/ipv4/netfilter/ip_tables ipt_unregister_target 0x1fb04d4d +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0x9cd2a03e +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0xacd1fc2e +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0x04e387a8 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0x80e2ed99 +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0xc1f27ef5 +net/ipv6/ipv6 inet6_add_protocol 0x7d4036ff +net/ipv6/ipv6 inet6_bind 0xe221d5db +net/ipv6/ipv6 inet6_del_protocol 0xf722a299 +net/ipv6/ipv6 inet6_getname 0xdb42a9a3 +net/ipv6/ipv6 inet6_ioctl 0x89e89b61 +net/ipv6/ipv6 inet6_register_protosw 0xea6a20f1 +net/ipv6/ipv6 inet6_release 0xcf499b62 +net/ipv6/ipv6 inet6_unregister_protosw 0x31af617f +net/ipv6/ipv6 ip6_route_me_harder 0xd510c5b1 +net/ipv6/ipv6 ip6_route_output 0xb758854f +net/ipv6/ipv6 ip6_xmit 0xcf79da53 +net/ipv6/ipv6 ipv6_chk_addr 0xec78fe97 +net/ipv6/ipv6 ipv6_get_saddr 0x0ad7dd50 +net/ipv6/ipv6 ipv6_getsockopt 0x1848cdf0 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0xd067ab5d +net/ipv6/ipv6 ipv6_setsockopt 0x3c8fd560 +net/ipv6/ipv6 ndisc_mc_map 0x3804700f +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x057c6ba3 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0x64c66b5c +net/ipv6/ipv6 xfrm6_rcv_spi 0x9bdf9d6f +net/ipv6/netfilter/ip6_tables ip6t_do_table 0x0d512e7d +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0xf60ad63a +net/ipv6/netfilter/ip6_tables ip6t_register_table 0xa42cf3fe +net/ipv6/netfilter/ip6_tables ip6t_register_target 0xdbd4cc07 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0xb04aab45 +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0xff3dc4fb +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0x922605da +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0x5e0197fa +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0x0d6a19ed +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0xbb07dd1a +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/llc/llc llc_add_pack 0xb9112c35 +net/llc/llc llc_build_and_send_ui_pkt 0x1f6a1d97 +net/llc/llc llc_mac_hdr_init 0xd897615a +net/llc/llc llc_remove_pack 0x38b92846 +net/llc/llc llc_sap_close 0x80f9324f +net/llc/llc llc_sap_find 0x49d9bf57 +net/llc/llc llc_sap_list 0x52d7b2fd +net/llc/llc llc_sap_list_lock 0x5f69c2db +net/llc/llc llc_sap_open 0xf220c7b0 +net/llc/llc llc_set_station_handler 0x4456fb75 +net/llc/llc llc_station_mac_sa 0x5c372971 +net/netfilter/nfnetlink __nfa_fill 0xfa9aa5d8 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0x5d815d37 +net/netfilter/nfnetlink nfnetlink_subsys_register 0xd4264ce6 +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0xb2d35e3c +net/netfilter/nfnetlink nfnetlink_unicast 0x19614e7f +net/rxrpc/rxrpc rxrpc_add_service 0xbc7254bb +net/rxrpc/rxrpc rxrpc_call_abort 0x8ebe17f1 +net/rxrpc/rxrpc rxrpc_call_read_data 0x1e865b58 +net/rxrpc/rxrpc rxrpc_call_write_data 0xd6f0a215 +net/rxrpc/rxrpc rxrpc_create_call 0xab260b0b +net/rxrpc/rxrpc rxrpc_create_connection 0x26da2c75 +net/rxrpc/rxrpc rxrpc_create_transport 0x651ebb2c +net/rxrpc/rxrpc rxrpc_del_service 0x3cfedf7e +net/rxrpc/rxrpc rxrpc_put_call 0x3f7d26a5 +net/rxrpc/rxrpc rxrpc_put_connection 0xdcd27ca8 +net/rxrpc/rxrpc rxrpc_put_transport 0xe2bbc27c +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x00c52ef5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0xb5dea7ef +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xf8b2ff6e +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0x6807f864 +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0x5cd1fef9 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0x44b504a9 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0x67ed0267 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0x1101723f +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0x0865310c +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0x629e3981 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0x99c8995c +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0x9b8f8a15 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0x90221476 +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0x4c87928d +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0x8152d734 +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0x8deec2a3 +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x4c2f4b6d +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x8d1a827e +net/sunrpc/sunrpc auth_domain_find 0xce9b7a1f +net/sunrpc/sunrpc auth_domain_lookup 0xa74157e3 +net/sunrpc/sunrpc auth_domain_put 0xb7e2b4a5 +net/sunrpc/sunrpc auth_unix_add_addr 0xb8520a43 +net/sunrpc/sunrpc auth_unix_forget_old 0x758f9c49 +net/sunrpc/sunrpc auth_unix_lookup 0xd1d4e136 +net/sunrpc/sunrpc cache_check 0x81a9b06a +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0xf2a06b61 +net/sunrpc/sunrpc cache_init 0xc244025c +net/sunrpc/sunrpc cache_purge 0x7fafc458 +net/sunrpc/sunrpc cache_register 0x7faafa2c +net/sunrpc/sunrpc cache_unregister 0xb3479681 +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0x2d09d4ef +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0xafa11dea +net/sunrpc/sunrpc rpc_bind_new_program 0xb2c92520 +net/sunrpc/sunrpc rpc_call_async 0x82cd8972 +net/sunrpc/sunrpc rpc_call_setup 0xc5c9f294 +net/sunrpc/sunrpc rpc_call_sync 0x014061cf +net/sunrpc/sunrpc rpc_clnt_sigmask 0x0e9c119b +net/sunrpc/sunrpc rpc_clnt_sigunmask 0xfb755628 +net/sunrpc/sunrpc rpc_clone_client 0xd07e2c1f +net/sunrpc/sunrpc rpc_create_client 0x370cc88f +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0x0c7a3e1f +net/sunrpc/sunrpc rpc_destroy_client 0x43770a37 +net/sunrpc/sunrpc rpc_execute 0x5ce8a09c +net/sunrpc/sunrpc rpc_init_task 0xadcd0327 +net/sunrpc/sunrpc rpc_init_wait_queue 0x741a7159 +net/sunrpc/sunrpc rpc_killall_tasks 0x151449f1 +net/sunrpc/sunrpc rpc_max_payload 0x050ab60b +net/sunrpc/sunrpc rpc_mkpipe 0x15c62631 +net/sunrpc/sunrpc rpc_new_child 0x8f5197c5 +net/sunrpc/sunrpc rpc_new_client 0xba6b0fdf +net/sunrpc/sunrpc rpc_new_task 0x2a37f957 +net/sunrpc/sunrpc rpc_proc_register 0xda5ee433 +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x2a102643 +net/sunrpc/sunrpc rpc_release_client 0x4074bd23 +net/sunrpc/sunrpc rpc_release_task 0x84cf13df +net/sunrpc/sunrpc rpc_restart_call 0xa99b665b +net/sunrpc/sunrpc rpc_run_child 0xb250d005 +net/sunrpc/sunrpc rpc_setbufsize 0x0476fa77 +net/sunrpc/sunrpc rpc_shutdown_client 0x4f000a80 +net/sunrpc/sunrpc rpc_sleep_on 0xa752c9df +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0x6febcce6 +net/sunrpc/sunrpc rpc_wake_up_next 0x3b9959a0 +net/sunrpc/sunrpc rpc_wake_up_status 0x1fefa8df +net/sunrpc/sunrpc rpc_wake_up_task 0x76d31f5e +net/sunrpc/sunrpc rpcauth_create 0x2ed64f62 +net/sunrpc/sunrpc rpcauth_free_credcache 0xbe01a0cc +net/sunrpc/sunrpc rpcauth_init_credcache 0xbdd88034 +net/sunrpc/sunrpc rpcauth_lookup_credcache 0x2d783868 +net/sunrpc/sunrpc rpcauth_lookupcred 0xb82a6204 +net/sunrpc/sunrpc rpcauth_register 0xe42a36d2 +net/sunrpc/sunrpc rpcauth_unregister 0xd6a14c60 +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x23751293 +net/sunrpc/sunrpc svc_auth_unregister 0x0f668ba9 +net/sunrpc/sunrpc svc_authenticate 0x7f5a54f9 +net/sunrpc/sunrpc svc_create 0x7f8dd9ae +net/sunrpc/sunrpc svc_create_thread 0xc4a08297 +net/sunrpc/sunrpc svc_destroy 0x904a86ba +net/sunrpc/sunrpc svc_drop 0x7a2d73e7 +net/sunrpc/sunrpc svc_exit_thread 0x1a73b331 +net/sunrpc/sunrpc svc_makesock 0x1967976c +net/sunrpc/sunrpc svc_proc_register 0x0e29d10a +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0x86b90f6b +net/sunrpc/sunrpc svc_recv 0x01bd11f8 +net/sunrpc/sunrpc svc_reserve 0xedf47e46 +net/sunrpc/sunrpc svc_seq_show 0x13e80f31 +net/sunrpc/sunrpc svc_set_client 0xd83cd1a0 +net/sunrpc/sunrpc svc_wake_up 0x7e0c94b3 +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x96946e44 +net/sunrpc/sunrpc xdr_buf_from_iov 0x59653081 +net/sunrpc/sunrpc xdr_buf_read_netobj 0x399408ff +net/sunrpc/sunrpc xdr_buf_subsegment 0xad0fb998 +net/sunrpc/sunrpc xdr_decode_array2 0xb0dac918 +net/sunrpc/sunrpc xdr_decode_netobj 0x1be57115 +net/sunrpc/sunrpc xdr_decode_string 0x6755aa62 +net/sunrpc/sunrpc xdr_decode_string_inplace 0x7bd87272 +net/sunrpc/sunrpc xdr_decode_word 0xc0bad70a +net/sunrpc/sunrpc xdr_encode_array2 0x458b6711 +net/sunrpc/sunrpc xdr_encode_netobj 0x29c6f164 +net/sunrpc/sunrpc xdr_encode_opaque 0x0e9e79d5 +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0x587d494b +net/sunrpc/sunrpc xdr_encode_pages 0x3ccbde60 +net/sunrpc/sunrpc xdr_encode_string 0xabc0fe0c +net/sunrpc/sunrpc xdr_encode_word 0x635e10b6 +net/sunrpc/sunrpc xdr_init_decode 0xa72777f8 +net/sunrpc/sunrpc xdr_init_encode 0xf0775a98 +net/sunrpc/sunrpc xdr_inline_decode 0x4c8d71b1 +net/sunrpc/sunrpc xdr_inline_pages 0x694bea83 +net/sunrpc/sunrpc xdr_read_pages 0x89339543 +net/sunrpc/sunrpc xdr_reserve_space 0x7f5fd3c7 +net/sunrpc/sunrpc xdr_shift_buf 0xd992b7bb +net/sunrpc/sunrpc xdr_write_pages 0x3d46e7a2 +net/sunrpc/sunrpc xprt_create_proto 0xb415b40f +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +security/commoncap cap_bprm_apply_creds 0x4905288b +security/commoncap cap_bprm_secureexec 0xe854b316 +security/commoncap cap_bprm_set_security 0x1cf45f49 +security/commoncap cap_capable 0x2c1d8e1c +security/commoncap cap_capget 0xef5519a5 +security/commoncap cap_capset_check 0x189a8ff6 +security/commoncap cap_capset_set 0xb1dc0134 +security/commoncap cap_inode_removexattr 0x5ce72709 +security/commoncap cap_inode_setxattr 0x2e827a60 +security/commoncap cap_netlink_recv 0x25114759 +security/commoncap cap_netlink_send 0x7beaf41f +security/commoncap cap_ptrace 0x94b5eb94 +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x13ea5cf8 +security/commoncap cap_task_reparent_to_init 0x516b5f35 +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x423d4724 +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x61afffb5 +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0x5a87a19a +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0xd657da4a +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x1bd634db +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x89947013 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x6bf64478 +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x932563fb +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0xb10d538e +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x1f32dfb4 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x6a67f51b +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0xce1393b4 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0xe07ffa4b +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0x39aeabb2 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0xa960a7dc +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0xf4b90904 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x1aa6479d +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x11cb9443 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x57215168 +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0xb659f48c +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0x43d853bb +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0xa78a4324 +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0x29a9d8b7 +sound/core/snd copy_from_user_toio 0x518bb7f8 +sound/core/snd copy_to_user_fromio 0xe243dde3 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0x2be3073f +sound/core/snd snd_card_file_add 0x82f2bb1e +sound/core/snd snd_card_file_remove 0xc9145339 +sound/core/snd snd_card_free 0xd5ee9118 +sound/core/snd snd_card_free_in_thread 0x0a868415 +sound/core/snd snd_card_new 0x2036bb5e +sound/core/snd snd_card_proc_new 0x3e646dfc +sound/core/snd snd_card_register 0xdc62c15b +sound/core/snd snd_card_set_generic_dev 0x915fca0d +sound/core/snd snd_cards 0x0dcb6f76 +sound/core/snd snd_component_add 0xba3d44a6 +sound/core/snd snd_ctl_add 0x00edfd98 +sound/core/snd snd_ctl_elem_read 0xe6cc7f83 +sound/core/snd snd_ctl_elem_write 0xd0f90a9b +sound/core/snd snd_ctl_find_id 0xf14b8d7b +sound/core/snd snd_ctl_find_numid 0xa6c60fb5 +sound/core/snd snd_ctl_free_one 0x424a342c +sound/core/snd snd_ctl_new 0x989ac18d +sound/core/snd snd_ctl_new1 0x4af64fbf +sound/core/snd snd_ctl_notify 0x89656138 +sound/core/snd snd_ctl_register_ioctl 0x240ba808 +sound/core/snd snd_ctl_register_ioctl_compat 0xa52a39d7 +sound/core/snd snd_ctl_remove 0x1817f651 +sound/core/snd snd_ctl_remove_id 0x71a653de +sound/core/snd snd_ctl_rename_id 0xae93226a +sound/core/snd snd_ctl_unregister_ioctl 0x467e0956 +sound/core/snd snd_ctl_unregister_ioctl_compat 0xa49d3941 +sound/core/snd snd_device_free 0xceac99c7 +sound/core/snd snd_device_new 0xca384020 +sound/core/snd snd_device_register 0x3ecc8ffa +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0x2e9d4ce2 +sound/core/snd snd_info_create_module_entry 0x6dd68d88 +sound/core/snd snd_info_free_entry 0xcb217cc3 +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0x2ed01823 +sound/core/snd snd_info_unregister 0x1ee4ebbe +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0xc15c252a +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_register_device 0xac740594 +sound/core/snd snd_register_oss_device 0x4aad69a2 +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0xaddd8e28 +sound/core/snd snd_unregister_device 0xc50cb012 +sound/core/snd snd_unregister_oss_device 0xb7b6d025 +sound/core/snd-hwdep snd_hwdep_new 0xf18fb7e4 +sound/core/snd-page-alloc snd_dma_alloc_pages 0x13dc48b0 +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0x62c8570b +sound/core/snd-page-alloc snd_dma_free_pages 0x619a47a2 +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0x6fb15352 +sound/core/snd-page-alloc snd_dma_reserve_buf 0x11b25c08 +sound/core/snd-page-alloc snd_free_pages 0x19cc2ce3 +sound/core/snd-page-alloc snd_malloc_pages 0xc6829020 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x65f0da5e +sound/core/snd-pcm snd_pcm_devices 0x229c214d +sound/core/snd-pcm snd_pcm_format_big_endian 0x09d405a0 +sound/core/snd-pcm snd_pcm_format_linear 0x1d607209 +sound/core/snd-pcm snd_pcm_format_little_endian 0x11ee487f +sound/core/snd-pcm snd_pcm_format_name 0x77863ed3 +sound/core/snd-pcm snd_pcm_format_physical_width 0x32be712f +sound/core/snd-pcm snd_pcm_format_set_silence 0xfa4027da +sound/core/snd-pcm snd_pcm_format_signed 0x78967306 +sound/core/snd-pcm snd_pcm_format_silence_64 0x407a3719 +sound/core/snd-pcm snd_pcm_format_size 0xe8decdc0 +sound/core/snd-pcm snd_pcm_format_unsigned 0x0ff581cb +sound/core/snd-pcm snd_pcm_format_width 0xcfb8aa1b +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0x4d139c00 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0xef5ffb06 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0x2a37bc5a +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x1a31d08e +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0xe2c84435 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x9118a728 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x16875d0c +sound/core/snd-pcm snd_pcm_hw_constraint_step 0x6e2d9f54 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0x4f654be3 +sound/core/snd-pcm snd_pcm_hw_constraints_init 0x81ecbfd7 +sound/core/snd-pcm snd_pcm_hw_param_first 0x11529f14 +sound/core/snd-pcm snd_pcm_hw_param_last 0xfca8f15d +sound/core/snd-pcm snd_pcm_hw_param_mask 0xd1c3bef4 +sound/core/snd-pcm snd_pcm_hw_param_near 0xd7b4eb9d +sound/core/snd-pcm snd_pcm_hw_param_set 0x5d1e911e +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0xfcdc626c +sound/core/snd-pcm snd_pcm_hw_rule_add 0xeaebcfab +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0xb2d38275 +sound/core/snd-pcm snd_pcm_kernel_ioctl 0x3c2f63dc +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0xde962a38 +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0x3db2240c +sound/core/snd-pcm snd_pcm_lib_free_pages 0xf43009af +sound/core/snd-pcm snd_pcm_lib_ioctl 0xacc80af6 +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x2466e3f7 +sound/core/snd-pcm snd_pcm_lib_period_bytes 0xefeaf83a +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x9c7e8cef +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0x6e53be54 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0x95f5f2d6 +sound/core/snd-pcm snd_pcm_lib_read 0xb94523bf +sound/core/snd-pcm snd_pcm_lib_readv 0x58d1afc4 +sound/core/snd-pcm snd_pcm_lib_write 0xeac9c40d +sound/core/snd-pcm snd_pcm_lib_writev 0xe96fac03 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x6463ca23 +sound/core/snd-pcm snd_pcm_link_rwlock 0xb47e2d3d +sound/core/snd-pcm snd_pcm_mmap_data 0x96ea2800 +sound/core/snd-pcm snd_pcm_new 0xadf5a13e +sound/core/snd-pcm snd_pcm_new_stream 0xd7359030 +sound/core/snd-pcm snd_pcm_notify 0xf1c740f4 +sound/core/snd-pcm snd_pcm_open_substream 0x1aa02fac +sound/core/snd-pcm snd_pcm_period_elapsed 0x0c704510 +sound/core/snd-pcm snd_pcm_release_substream 0x97fe5a17 +sound/core/snd-pcm snd_pcm_set_ops 0x31553cef +sound/core/snd-pcm snd_pcm_set_sync 0x1f496c7f +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0xe0a0c77b +sound/core/snd-pcm snd_pcm_stop 0x99163e3f +sound/core/snd-rawmidi snd_rawmidi_drain_input 0xcb9f4738 +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x3bb7c1e8 +sound/core/snd-rawmidi snd_rawmidi_drop_output 0x4e89e547 +sound/core/snd-rawmidi snd_rawmidi_info 0xd5c8f155 +sound/core/snd-rawmidi snd_rawmidi_info_select 0xb71a06df +sound/core/snd-rawmidi snd_rawmidi_input_params 0xebbffe5c +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x5937c337 +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0xc60a14fc +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0x4087801a +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0xbeafe40f +sound/core/snd-rawmidi snd_rawmidi_new 0xab0c9155 +sound/core/snd-rawmidi snd_rawmidi_output_params 0xf8a6f5bd +sound/core/snd-rawmidi snd_rawmidi_receive 0x25fcb7bf +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x60e742af +sound/core/snd-rawmidi snd_rawmidi_transmit 0x7e5cf883 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x81094631 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x55e6f2c9 +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0xa5ed1402 +sound/core/snd-timer snd_timer_close 0x805b8ba3 +sound/core/snd-timer snd_timer_continue 0x4521e633 +sound/core/snd-timer snd_timer_global_free 0x61a7dcdb +sound/core/snd-timer snd_timer_global_new 0xb077e1ea +sound/core/snd-timer snd_timer_global_register 0xfd191c37 +sound/core/snd-timer snd_timer_global_unregister 0x619c50bc +sound/core/snd-timer snd_timer_interrupt 0xfd4e404a +sound/core/snd-timer snd_timer_new 0x29d5c0e2 +sound/core/snd-timer snd_timer_notify 0x5660e718 +sound/core/snd-timer snd_timer_open 0x6c34ca83 +sound/core/snd-timer snd_timer_pause 0x119a005d +sound/core/snd-timer snd_timer_resolution 0xedf11213 +sound/core/snd-timer snd_timer_start 0x0b4fb7e2 +sound/core/snd-timer snd_timer_stop 0xba3acecb +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0xcb05790a +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x03a1fbe6 +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0x07f91026 +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0x49f513fc +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0xc0042c7f +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0x25ca0ab7 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0xe301f2d4 +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0x38cd950b +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0x8d7129c5 +sound/oss/ac97_codec ac97_alloc_codec 0x3e5c2d5e +sound/oss/ac97_codec ac97_probe_codec 0xcb913736 +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0x97d71e11 +sound/oss/ac97_codec ac97_release_codec 0xad165955 +sound/oss/ac97_codec ac97_restore_state 0x869d0f9a +sound/oss/ac97_codec ac97_save_state 0x1b03168d +sound/oss/ac97_codec ac97_set_adc_rate 0x1115bad2 +sound/oss/ac97_codec ac97_set_dac_rate 0x5bca9098 +sound/oss/ac97_codec ac97_tune_hardware 0x6af2fa23 +sound/oss/ac97_codec ac97_unregister_driver 0xc46fda67 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x2c4e31c0 +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0x3ae77004 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0x4d2d1f78 +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0xc064ade4 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0xba4f9638 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x46ebe2ff +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x3e6e551b +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0x031ad9b2 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0xfc035e88 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0x09d23b77 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0xeed2c45c +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0x8dac1141 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0xfee06775 +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0xea285112 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0x571f3082 +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0xcab9f91d +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0x01570cd8 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0xb698d359 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0x6d619fbf +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0x97371d24 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0xfaf12bda +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0x69e6e6d1 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0xc3337516 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0x4e3c2690 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0x477a3a38 +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0x13ce3b78 +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0xcd9ee3f4 +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0x7f491c2a +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0x9f5969f3 +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0xabeac88d +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0x189c2b5a +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x4d271036 +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0xd6e0ea99 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0xbb9555ca +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0x302aed0a +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0xf47ce685 +sound/soundcore register_sound_midi 0x56e2a6ae +sound/soundcore register_sound_mixer 0x233bf8fc +sound/soundcore register_sound_special 0x8196506f +sound/soundcore register_sound_special_device 0xa134f71e +sound/soundcore register_sound_synth 0x8e2e1d62 +sound/soundcore sound_class 0x43acf256 +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +sound/synth/emux/snd-emux-synth snd_emux_free 0x6261df49 +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0x6b9df641 +sound/synth/emux/snd-emux-synth snd_emux_new 0xda811790 +sound/synth/emux/snd-emux-synth snd_emux_register 0x5802d56a +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0x9cb31d19 +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0x2a5c7413 +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0x08da8038 +sound/synth/snd-util-mem __snd_util_mem_free 0xcaa690a2 +sound/synth/snd-util-mem __snd_util_memblk_new 0x6f4f4118 +sound/synth/snd-util-mem snd_util_mem_alloc 0x2cf1a68c +sound/synth/snd-util-mem snd_util_mem_avail 0x689b2114 +sound/synth/snd-util-mem snd_util_mem_free 0x8e0c51e2 +sound/synth/snd-util-mem snd_util_memhdr_free 0x2a5bc67c +sound/synth/snd-util-mem snd_util_memhdr_new 0xcf38cfb6 +vmlinux I_BDEV 0xec14f48f +vmlinux PAGE_KERNEL 0xde7502a8 +vmlinux PAGE_SHARED 0xc38c4ca2 +vmlinux SELECT_DRIVE 0x7e0d36cf +vmlinux VISenter 0x1a35bcbc +vmlinux _PAGE_CACHE 0xa0ebb2ba +vmlinux _PAGE_E 0x9e771285 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___copy_from_user 0x53688617 +vmlinux ___copy_in_user 0x0409e4d0 +vmlinux ___copy_to_user 0xa6b5d766 +vmlinux ___pskb_trim 0xdad5be69 +vmlinux __alloc_pages 0x53815892 +vmlinux __alloc_percpu 0x55f2580b +vmlinux __alloc_skb 0xe5dc9b42 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0xc9a4fbd7 +vmlinux __bio_clone 0x88919359 +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0x11c97f4e +vmlinux __bread 0xd1dafa49 +vmlinux __breadahead 0x73b65e58 +vmlinux __break_lease 0xd6ae3916 +vmlinux __brelse 0xa83f0acd +vmlinux __bzero 0x8bf87169 +vmlinux __check_region 0xf1d0cdab +vmlinux __clear_user 0x2455c156 +vmlinux __const_udelay 0xeae3dfd6 +vmlinux __create_workqueue 0x8d095cbb +vmlinux __csum_partial_copy_from_user 0xa0780a23 +vmlinux __csum_partial_copy_to_user 0xa1f82002 +vmlinux __d_path 0x16a9e41c +vmlinux __delay 0x466c14a7 +vmlinux __dev_get_by_index 0x9580ed8c +vmlinux __dev_get_by_name 0x6624fa37 +vmlinux __dev_remove_pack 0xeb542e06 +vmlinux __down_read 0xf78b83d3 +vmlinux __down_read_trylock 0x8ee88d1c +vmlinux __down_write 0x687c2f32 +vmlinux __down_write_trylock 0xe88bdc28 +vmlinux __downgrade_write 0x3a7de31a +vmlinux __dst_free 0x72fae17b +vmlinux __elv_add_request 0x5cb79bd9 +vmlinux __find_get_block 0x7c5baf52 +vmlinux __flush_dcache_range 0x0826b0dc +vmlinux __flushw_user 0x712730a7 +vmlinux __free_pages 0xae2c640a +vmlinux __generic_file_aio_read 0x0abdfed7 +vmlinux __generic_unplug_device 0x6a42ee18 +vmlinux __get_free_pages 0x93fca811 +vmlinux __getblk 0xb9ee3f6d +vmlinux __ide_abort 0x2c148573 +vmlinux __ide_dma_bad_drive 0xe2207a4f +vmlinux __ide_dma_check 0x3e85165f +vmlinux __ide_dma_end 0x6fe248c8 +vmlinux __ide_dma_good_drive 0xb6899780 +vmlinux __ide_dma_host_off 0xd9973c19 +vmlinux __ide_dma_host_on 0x21bdbc87 +vmlinux __ide_dma_lostirq 0x98442e1a +vmlinux __ide_dma_off 0xbb54e538 +vmlinux __ide_dma_off_quietly 0x34e58547 +vmlinux __ide_dma_on 0x3f7942db +vmlinux __ide_dma_timeout 0x3bf14d11 +vmlinux __ide_end_request 0xf3e3b228 +vmlinux __ide_error 0x262d3786 +vmlinux __ide_pci_register_driver 0x13cf870c +vmlinux __inet_lookup_listener 0x8fcb8e9a +vmlinux __inet_twsk_hashdance 0x472b01da +vmlinux __inet_twsk_kill 0x2e48c579 +vmlinux __init_timer_base 0x2d3b7ab7 +vmlinux __inode_dir_notify 0x23e053c6 +vmlinux __insert_inode_hash 0xcbd9b8c5 +vmlinux __invalidate_device 0xcff4afff +vmlinux __ip_route_output_key 0xa7317ffc +vmlinux __ip_select_ident 0x04f9b7d6 +vmlinux __kfifo_get 0x9cac705a +vmlinux __kfifo_put 0xe7895f24 +vmlinux __kfree_skb 0x4a446fea +vmlinux __kill_fasync 0xea3ec4cd +vmlinux __kmalloc 0x5a34a45c +vmlinux __lock_buffer 0x9c0e357d +vmlinux __lock_page 0xb0244c8a +vmlinux __mark_inode_dirty 0xc5da133a +vmlinux __memcmp 0xcf025be3 +vmlinux __memscan_generic 0x702f162c +vmlinux __memscan_zero 0xbf993764 +vmlinux __memset 0xd0be1a2e +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0x86ba63c7 +vmlinux __module_put_and_exit 0xafd25728 +vmlinux __ndelay 0xdf8c695a +vmlinux __neigh_event_send 0x1617d66b +vmlinux __neigh_for_each_release 0x70edbba6 +vmlinux __net_timestamp 0x08047d45 +vmlinux __netdev_watchdog_up 0x04a5406f +vmlinux __nla_put 0x5a846a50 +vmlinux __nla_reserve 0x3910a254 +vmlinux __page_cache_release 0x69e14650 +vmlinux __pagevec_lru_add 0x17692366 +vmlinux __pagevec_release 0x7a49f34d +vmlinux __pci_register_driver 0x3ce9adf3 +vmlinux __per_cpu_base 0x946f187e +vmlinux __per_cpu_shift 0x78eadedb +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __prom_getchild 0x8ca0e65d +vmlinux __prom_getsibling 0x8da618dc +vmlinux __pskb_pull_tail 0x1f326729 +vmlinux __read_lock 0x2384b8e8 +vmlinux __read_unlock 0x880d7ea4 +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __ret_efault 0x2b937a6f +vmlinux __rta_fill 0xfd6dfbae +vmlinux __scm_destroy 0x6a7559dc +vmlinux __scm_send 0xea2ac1a2 +vmlinux __secpath_destroy 0xbf9d8451 +vmlinux __serio_register_driver 0x5a58cfe0 +vmlinux __serio_register_port 0x62656bbd +vmlinux __serio_unregister_port_delayed 0x415c8f9e +vmlinux __set_page_dirty_buffers 0xd0d921d7 +vmlinux __set_page_dirty_nobuffers 0x7218590d +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x4e47aef4 +vmlinux __skb_checksum_complete 0x72aa3f5d +vmlinux __skb_linearize 0xc286aa8a +vmlinux __strlen_user 0xf80c69d2 +vmlinux __strncpy_from_user 0x9a78a84c +vmlinux __strnlen_user 0x8b922c0f +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x267fc65b +vmlinux __tasklet_schedule 0xf397b9aa +vmlinux __tcf_em_tree_match 0x724f0cb6 +vmlinux __udelay 0x9e7d6bd0 +vmlinux __up_read 0x5a779140 +vmlinux __up_write 0x01d711de +vmlinux __usb_get_extra_descriptor 0x9924c496 +vmlinux __user_walk 0x67e10489 +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0x593ea8f7 +vmlinux __wait_on_bit_lock 0x6bc646c2 +vmlinux __wait_on_buffer 0xbe39022b +vmlinux __wake_up 0x72ebe44a +vmlinux __wake_up_bit 0xaffb41d6 +vmlinux __wake_up_sync 0x2958338e +vmlinux __write_lock 0xd6f2f31f +vmlinux __write_trylock 0x78bcb02b +vmlinux __write_unlock 0x32fe64b0 +vmlinux __xfrm_policy_check 0xb46c9b63 +vmlinux __xfrm_policy_destroy 0x4a2118c6 +vmlinux __xfrm_route_forward 0xca360336 +vmlinux __xfrm_state_destroy 0xd8c059ae +vmlinux _atomic_dec_and_lock 0x570f0f41 +vmlinux _clear_page 0x62a9293f +vmlinux _ctype 0x8d3894f2 +vmlinux _read_lock 0x3ee75e03 +vmlinux _read_lock_bh 0xcac4d7ff +vmlinux _read_lock_irq 0xb75dcfee +vmlinux _read_lock_irqsave 0xb55d21a7 +vmlinux _read_trylock 0x75e0ffd5 +vmlinux _read_unlock 0x7ac1c46f +vmlinux _read_unlock_bh 0xd2aa0292 +vmlinux _read_unlock_irq 0x8446bcde +vmlinux _read_unlock_irqrestore 0xc91fb9aa +vmlinux _sigpause_common 0x28282f54 +vmlinux _spin_lock 0x03b92598 +vmlinux _spin_lock_bh 0xcae6377b +vmlinux _spin_lock_irq 0x230ab4c9 +vmlinux _spin_lock_irqsave 0x9c703ae6 +vmlinux _spin_trylock 0x7808db44 +vmlinux _spin_trylock_bh 0x782cb47d +vmlinux _spin_unlock 0x40c3fdaf +vmlinux _spin_unlock_bh 0x12f31318 +vmlinux _spin_unlock_irq 0xf769910f +vmlinux _spin_unlock_irqrestore 0x0ea1af0f +vmlinux _write_lock 0x92d0d1f4 +vmlinux _write_lock_bh 0x7ee9938d +vmlinux _write_lock_irq 0x09e2f2ba +vmlinux _write_lock_irqsave 0xe042c57d +vmlinux _write_trylock 0x6bfe993d +vmlinux _write_unlock 0x5c3b8193 +vmlinux _write_unlock_bh 0xbe122842 +vmlinux _write_unlock_irq 0x02f9d620 +vmlinux _write_unlock_irqrestore 0xb13f8fb6 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0x1aaf71ac +vmlinux add_disk_randomness 0x2dcc8cd6 +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0xca3d6fce +vmlinux add_wait_queue 0xf8191240 +vmlinux add_wait_queue_exclusive 0xa2230181 +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0x56dbcfec +vmlinux aio_put_req 0xf6788e4f +vmlinux alloc_buffer_head 0x49485fa5 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0xff4a1a7c +vmlinux alloc_disk_node 0x0c6d6aa1 +vmlinux alloc_etherdev 0x536a0cde +vmlinux alloc_fcdev 0x3a0fdf07 +vmlinux alloc_fddidev 0xf342ec8a +vmlinux alloc_netdev 0x5f02ed00 +vmlinux alloc_page_buffers 0x4e1c74d5 +vmlinux alloc_tty_driver 0xf5439b15 +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0x3f67a8cf +vmlinux anon_transport_class_unregister 0x87cf14ec +vmlinux arp_broken_ops 0x75c9d7c6 +vmlinux arp_create 0x515b70e5 +vmlinux arp_find 0x285693ef +vmlinux arp_rcv 0xb0cd8fad +vmlinux arp_send 0xab0ec00f +vmlinux arp_tbl 0xde26a623 +vmlinux arp_xmit 0x02601764 +vmlinux atomic64_add 0x588c6d29 +vmlinux atomic64_add_ret 0xb169b9b8 +vmlinux atomic64_sub 0xea2125dc +vmlinux atomic64_sub_ret 0x409e9351 +vmlinux atomic_add 0x921f4390 +vmlinux atomic_add_ret 0xf84b38c3 +vmlinux atomic_sub 0x52046e13 +vmlinux atomic_sub_ret 0x0560fd8f +vmlinux attribute_container_add_attrs 0x7d0e0e85 +vmlinux attribute_container_add_class_device 0x024850c4 +vmlinux attribute_container_add_class_device_adapter 0xa56e42b1 +vmlinux attribute_container_class_device_del 0x4e66f487 +vmlinux attribute_container_classdev_to_container 0x3fafd152 +vmlinux attribute_container_device_trigger 0x6c75a456 +vmlinux attribute_container_find_class_device 0x4eeaf2ac +vmlinux attribute_container_register 0xc9baa66f +vmlinux attribute_container_remove_attrs 0xd2d38f74 +vmlinux attribute_container_remove_device 0x54bba433 +vmlinux attribute_container_trigger 0xb7965519 +vmlinux attribute_container_unregister 0xd24b6ceb +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux auxio_set_led 0xd8959f23 +vmlinux auxio_set_lte 0x582fef16 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0xdcc774a3 +vmlinux bd_claim 0xa898f07e +vmlinux bd_release 0x48014900 +vmlinux bd_set_size 0xe3d1c424 +vmlinux bdev_read_only 0xba32515d +vmlinux bdevname 0x22f9647d +vmlinux bdget 0xdfe760aa +vmlinux bdput 0x25e9e875 +vmlinux bfifo_qdisc_ops 0x72df02f1 +vmlinux bio_add_page 0xc8f51442 +vmlinux bio_alloc 0x5ef25650 +vmlinux bio_alloc_bioset 0x4670aab6 +vmlinux bio_clone 0x6f5e11ad +vmlinux bio_copy_user 0x6830a79e +vmlinux bio_endio 0x077f58e1 +vmlinux bio_free 0xc5ff2507 +vmlinux bio_get_nr_vecs 0xf55612dc +vmlinux bio_hw_segments 0x66250c1a +vmlinux bio_init 0x6915f575 +vmlinux bio_map_kern 0x881afe4c +vmlinux bio_map_user 0x036813cc +vmlinux bio_pair_release 0xb145b888 +vmlinux bio_phys_segments 0x050b43a3 +vmlinux bio_put 0x48e0708e +vmlinux bio_split 0xe5b0d472 +vmlinux bio_split_pool 0xebc8210c +vmlinux bio_uncopy_user 0x04584306 +vmlinux bio_unmap_user 0x3334538a +vmlinux bioset_create 0x20fabbab +vmlinux bioset_free 0x886cc29a +vmlinux bit_waitqueue 0x95415266 +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0x03daa942 +vmlinux blk_alloc_queue_node 0x39b030d4 +vmlinux blk_cleanup_queue 0xd027ebdd +vmlinux blk_complete_barrier_rq 0x6f714114 +vmlinux blk_complete_barrier_rq_locked 0xd6e8a2ce +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x60f30225 +vmlinux blk_end_sync_rq 0xe45f1691 +vmlinux blk_execute_rq 0x0dc52563 +vmlinux blk_get_backing_dev_info 0x0111ec15 +vmlinux blk_get_queue 0x6f0b5190 +vmlinux blk_get_request 0xa4960cb2 +vmlinux blk_init_queue 0x6c031467 +vmlinux blk_init_queue_node 0x8dedfa5f +vmlinux blk_insert_request 0x62912a00 +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0x0fc51e6f +vmlinux blk_put_request 0x2f16a10d +vmlinux blk_queue_activity_fn 0x0789c720 +vmlinux blk_queue_bounce 0x624722a3 +vmlinux blk_queue_bounce_limit 0xe30849b9 +vmlinux blk_queue_dma_alignment 0x5064ac98 +vmlinux blk_queue_end_tag 0xe35289ff +vmlinux blk_queue_find_tag 0xa215c5d1 +vmlinux blk_queue_free_tags 0xfe790a45 +vmlinux blk_queue_hardsect_size 0xbaf3b057 +vmlinux blk_queue_init_tags 0x38d9ba42 +vmlinux blk_queue_invalidate_tags 0x9f138e26 +vmlinux blk_queue_issue_flush_fn 0xb6b824ee +vmlinux blk_queue_make_request 0x61dd7f5b +vmlinux blk_queue_max_hw_segments 0xc8973768 +vmlinux blk_queue_max_phys_segments 0x367c6ec5 +vmlinux blk_queue_max_sectors 0x13df8aa0 +vmlinux blk_queue_max_segment_size 0xb12cc324 +vmlinux blk_queue_merge_bvec 0xd5719cb8 +vmlinux blk_queue_ordered 0xa2d19073 +vmlinux blk_queue_prep_rq 0x5871f582 +vmlinux blk_queue_resize_tags 0x3dddc595 +vmlinux blk_queue_segment_boundary 0xfa43e540 +vmlinux blk_queue_stack_limits 0x860efbfb +vmlinux blk_queue_start_tag 0x74831e59 +vmlinux blk_register_region 0x0303ef57 +vmlinux blk_remove_plug 0x587075fc +vmlinux blk_requeue_request 0x4fec1589 +vmlinux blk_rq_bio_prep 0x698ef821 +vmlinux blk_rq_map_kern 0xddc15ae4 +vmlinux blk_rq_map_sg 0x1edef971 +vmlinux blk_rq_map_user 0x8231f196 +vmlinux blk_rq_map_user_iov 0x9a9394f9 +vmlinux blk_rq_unmap_user 0xfae4dfba +vmlinux blk_run_queue 0x72c19c37 +vmlinux blk_start_queue 0xd79594db +vmlinux blk_stop_queue 0x95c72373 +vmlinux blk_sync_queue 0x4f58e896 +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0x1fc05d4e +vmlinux blkdev_ioctl 0x51d663d5 +vmlinux blkdev_issue_flush 0x3129eed7 +vmlinux blkdev_put 0x2262cc45 +vmlinux block_all_signals 0x4edd72f7 +vmlinux block_commit_write 0xc4a2b429 +vmlinux block_invalidatepage 0xd4819f49 +vmlinux block_prepare_write 0x90221d2f +vmlinux block_read_full_page 0x95c64d59 +vmlinux block_sync_page 0xedcdf447 +vmlinux block_truncate_page 0x47f51c58 +vmlinux block_write_full_page 0x2d19166a +vmlinux bmap 0xcfbb85d4 +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0x942864b1 +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0x1507fa6d +vmlinux bus_create_file 0xaac567ca +vmlinux bus_find_device 0xa06ec5b9 +vmlinux bus_for_each_dev 0x7f69f30f +vmlinux bus_for_each_drv 0x669445d3 +vmlinux bus_register 0x7b552e6d +vmlinux bus_remove_device 0x8331324b +vmlinux bus_remove_file 0xb262b9f8 +vmlinux bus_rescan_devices 0xa480b3fa +vmlinux bus_unregister 0x6714fb5e +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x43c852aa +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x8b286b20 +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x21bfe5f0 +vmlinux cdev_alloc 0xf44b4cd7 +vmlinux cdev_del 0x9b829d18 +vmlinux cdev_init 0xb00a491e +vmlinux cfb_copyarea 0x0d08ea6a +vmlinux cfb_fillrect 0x59c1825c +vmlinux cfb_imageblit 0x7fc8aae1 +vmlinux change_bit 0x9db37875 +vmlinux check_disk_change 0x5cea8343 +vmlinux class_create 0x7631f81d +vmlinux class_create_file 0xd1b1f456 +vmlinux class_destroy 0x4189f9de +vmlinux class_device_add 0xe57ec7cf +vmlinux class_device_create 0x05878e72 +vmlinux class_device_create_bin_file 0x440fe7eb +vmlinux class_device_create_file 0xd63f3f3d +vmlinux class_device_del 0x235929b2 +vmlinux class_device_destroy 0xb3578886 +vmlinux class_device_get 0x72b9de1d +vmlinux class_device_initialize 0x38a70ece +vmlinux class_device_put 0xb3ede771 +vmlinux class_device_register 0xa1e6eca7 +vmlinux class_device_remove_bin_file 0x5ff63aeb +vmlinux class_device_remove_file 0x09c16845 +vmlinux class_device_unregister 0x976a1c52 +vmlinux class_get 0x9a4b3dc9 +vmlinux class_interface_register 0x123184b2 +vmlinux class_interface_unregister 0x85e05261 +vmlinux class_put 0x5ed2e2ff +vmlinux class_register 0xfd0ea47c +vmlinux class_remove_file 0x8bb4c060 +vmlinux class_unregister 0x5dfa4f98 +vmlinux clear_bit 0x3a9aa54d +vmlinux clear_inode 0xa1611cfc +vmlinux clear_page_dirty_for_io 0xab93adb0 +vmlinux clear_user_page 0x3b98e810 +vmlinux close_bdev_excl 0xc8e97837 +vmlinux color_table 0xf6bb4729 +vmlinux compat_sys_ioctl 0x32624a56 +vmlinux complete 0x881428af +vmlinux complete_all 0x0f41bd8a +vmlinux complete_and_exit 0xc4a86849 +vmlinux compute_creds 0x38ee8d75 +vmlinux con_copy_unimap 0x3b1677bd +vmlinux con_set_default_unimap 0x34d5bc8d +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0x1e265831 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0xefbbf563 +vmlinux console_stop 0x7ae308bb +vmlinux cont_prepare_write 0x648aeed2 +vmlinux contig_page_data 0x51aa14de +vmlinux copy_from_user_fixup 0x323cefec +vmlinux copy_fs_struct 0x9cba7817 +vmlinux copy_in_user_fixup 0xf1c3b00e +vmlinux copy_io_context 0xd0d718e8 +vmlinux copy_strings_kernel 0x98f296b3 +vmlinux copy_to_user_fixup 0xf761c3ae +vmlinux copy_user_page 0x3e6d3ab1 +vmlinux cpu_online_map 0x34627942 +vmlinux cpu_present_map 0x6a7f3730 +vmlinux cpu_sysdev_class 0x59f0296f +vmlinux crc32_be 0xc09651d9 +vmlinux crc32_le 0x92ea4ae4 +vmlinux create_empty_buffers 0x0c43cecf +vmlinux create_proc_entry 0xe3304532 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0xf0055635 +vmlinux crypto_free_tfm 0xaf6292d1 +vmlinux crypto_hmac 0x428528db +vmlinux crypto_hmac_final 0xf6ff46f1 +vmlinux crypto_hmac_init 0x4d6d0b36 +vmlinux crypto_hmac_update 0x0881e447 +vmlinux crypto_register_alg 0x74aac004 +vmlinux crypto_unregister_alg 0x46cc1e87 +vmlinux csum_partial 0x94095c16 +vmlinux csum_partial_copy_fromiovecend 0x883c8eca +vmlinux csum_partial_copy_nocheck 0xa2963be1 +vmlinux current_fs_time 0xfa5ef4d2 +vmlinux current_io_context 0xc4856f63 +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0x50ff398f +vmlinux d_alloc_anon 0xf24810e5 +vmlinux d_alloc_name 0x714a3bac +vmlinux d_alloc_root 0xc49c36c3 +vmlinux d_delete 0x8e076e1c +vmlinux d_find_alias 0x90bd7a04 +vmlinux d_genocide 0x1934b96d +vmlinux d_instantiate 0xc3e18a73 +vmlinux d_instantiate_unique 0xb5ccac08 +vmlinux d_invalidate 0x3d8f3a73 +vmlinux d_lookup 0x469d20e6 +vmlinux d_move 0x8b02ac8a +vmlinux d_path 0xdb11a275 +vmlinux d_prune_aliases 0xe7b7affc +vmlinux d_rehash 0xfa080a22 +vmlinux d_splice_alias 0x7e68a1aa +vmlinux d_validate 0x96405095 +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0x643fb22d +vmlinux dcache_dir_close 0xd75a3f25 +vmlinux dcache_dir_lseek 0x73667777 +vmlinux dcache_dir_open 0xd13d8291 +vmlinux dcache_lock 0x50da30a2 +vmlinux dcache_readdir 0xa211085b +vmlinux deactivate_super 0xea65aee3 +vmlinux default_backing_dev_info 0xd4402bf4 +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0xf6fc727a +vmlinux default_llseek 0xd206674f +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x763cbd95 +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0x13db9288 +vmlinux del_timer 0x05932bab +vmlinux del_timer_sync 0x059e5424 +vmlinux dentry_open 0xec4a488a +vmlinux dentry_unhash 0x2521c3e3 +vmlinux dequeue_signal 0xe489f458 +vmlinux destroy_8023_client 0xf3312f33 +vmlinux destroy_EII_client 0xd559c13c +vmlinux destroy_workqueue 0x50fecaae +vmlinux dev_add_pack 0xa8de558a +vmlinux dev_alloc_name 0x7f6c431e +vmlinux dev_base 0x9bb743bb +vmlinux dev_base_lock 0x01ab0f38 +vmlinux dev_change_flags 0x69aaa1df +vmlinux dev_close 0xd82a15ba +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0xdbf8e992 +vmlinux dev_get_by_index 0x33e0d844 +vmlinux dev_get_by_name 0xc2af492c +vmlinux dev_get_flags 0x279bf4fb +vmlinux dev_getbyhwaddr 0x30a194f9 +vmlinux dev_getfirstbyhwtype 0xb9154f55 +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0xeaf676a0 +vmlinux dev_mc_delete 0xb877136b +vmlinux dev_mc_upload 0xf74a9313 +vmlinux dev_open 0x2c0be44a +vmlinux dev_queue_xmit 0xbaebf7a8 +vmlinux dev_remove_pack 0xc253b6da +vmlinux dev_set_allmulti 0x77a377bf +vmlinux dev_set_mac_address 0xe568e220 +vmlinux dev_set_mtu 0xc66e80ef +vmlinux dev_set_promiscuity 0x4cd855bc +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0x692fb86c +vmlinux device_attach 0x1e6a8b80 +vmlinux device_bind_driver 0x849a3877 +vmlinux device_create_file 0xb23942f6 +vmlinux device_del 0x5268c6fe +vmlinux device_for_each_child 0x6616829f +vmlinux device_initialize 0x25f32305 +vmlinux device_register 0x59755771 +vmlinux device_release_driver 0x99a5c567 +vmlinux device_remove_file 0xf574ed39 +vmlinux device_unregister 0xae9f9d39 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0xf43a4a01 +vmlinux die_if_kernel 0xecd99124 +vmlinux disable_irq 0x3ce4ca6f +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_chain 0x037082d9 +vmlinux dma_get_required_mask 0x0d590fd7 +vmlinux dma_pool_alloc 0x9cbb3200 +vmlinux dma_pool_create 0xb400612d +vmlinux dma_pool_destroy 0x827bd393 +vmlinux dma_pool_free 0x8d0c3217 +vmlinux dma_spin_lock 0x0870e96d +vmlinux dnotify_parent 0xe4fe0628 +vmlinux do_BUG 0x577f4bff +vmlinux do_SAK 0xb5883e6f +vmlinux do_add_mount 0xe757b3ec +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0xac829443 +vmlinux do_gettimeofday 0x836a55de +vmlinux do_kern_mount 0x1bc3764f +vmlinux do_mmap_pgoff 0xb5b34d9a +vmlinux do_munmap 0x8e60353c +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x3c87c56d +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0x27cbbea7 +vmlinux do_sync_read 0xf6033b3c +vmlinux do_sync_write 0x081f18d0 +vmlinux do_unblank_screen 0x600683d3 +vmlinux down 0x0b6bcef0 +vmlinux down_interruptible 0xd85edf12 +vmlinux down_trylock 0x9bbf7223 +vmlinux dput 0x8e3c1d48 +vmlinux dq_data_lock 0xdfeff14d +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0xf9051c14 +vmlinux dquot_alloc_inode 0x928d6a1d +vmlinux dquot_alloc_space 0x74fadedb +vmlinux dquot_commit 0x4ca4a335 +vmlinux dquot_commit_info 0x476f308d +vmlinux dquot_drop 0xb3696ba2 +vmlinux dquot_free_inode 0x6d31c96a +vmlinux dquot_free_space 0xfac04e6b +vmlinux dquot_initialize 0x4c5475a3 +vmlinux dquot_mark_dquot_dirty 0x027ca8a7 +vmlinux dquot_release 0x08812c31 +vmlinux dquot_transfer 0x0b2d754d +vmlinux drive_is_ready 0x3630414e +vmlinux driver_attach 0x20999498 +vmlinux driver_create_file 0xb55f89bd +vmlinux driver_find 0x2dd4c31a +vmlinux driver_find_device 0xc630dd54 +vmlinux driver_for_each_device 0xfd5f5239 +vmlinux driver_register 0xf022134e +vmlinux driver_remove_file 0xc1e03998 +vmlinux driver_unregister 0xa622c66a +vmlinux drm_addbufs_fb 0x9c9dfca0 +vmlinux drm_addbufs_pci 0xeeac2900 +vmlinux drm_addmap 0xd9547c1c +vmlinux drm_ati_pcigart_cleanup 0x3d487524 +vmlinux drm_ati_pcigart_init 0xd8c6c868 +vmlinux drm_compat_ioctl 0xe0e7afe1 +vmlinux drm_core_get_map_ofs 0x064df683 +vmlinux drm_core_get_reg_ofs 0x799c648a +vmlinux drm_core_reclaim_buffers 0xa89667b7 +vmlinux drm_debug 0x20645642 +vmlinux drm_exit 0xe226a451 +vmlinux drm_fasync 0xb6be2308 +vmlinux drm_get_dev 0x03ef2f5a +vmlinux drm_get_resource_len 0x05c5dc3a +vmlinux drm_get_resource_start 0x169bc8b4 +vmlinux drm_init 0x8f14306e +vmlinux drm_ioctl 0xdacbc431 +vmlinux drm_irq_uninstall 0x9142dde0 +vmlinux drm_mmap 0x301f2a6a +vmlinux drm_open 0xf670f17a +vmlinux drm_order 0x3074f033 +vmlinux drm_pci_alloc 0xbf093792 +vmlinux drm_pci_free 0xecab4587 +vmlinux drm_poll 0x056bfcff +vmlinux drm_release 0xec54eace +vmlinux drm_rmmap 0xb8512351 +vmlinux drm_rmmap_locked 0x1af66529 +vmlinux drm_vbl_send_signals 0x65d6cda2 +vmlinux drop_super 0xa178f593 +vmlinux dst_alloc 0x79584134 +vmlinux dst_destroy 0x103c10e4 +vmlinux dump_fpu 0x9f866e26 +vmlinux dump_stack 0x6b2dc060 +vmlinux dump_thread 0xe2c24899 +vmlinux ebus_chain 0xeb72752b +vmlinux ebus_dma_addr 0xfeea700c +vmlinux ebus_dma_enable 0x56791257 +vmlinux ebus_dma_irq_enable 0xc3b61c7c +vmlinux ebus_dma_prepare 0x35d84066 +vmlinux ebus_dma_register 0x67881bd6 +vmlinux ebus_dma_request 0xb2da6a0f +vmlinux ebus_dma_residue 0x8fca34f5 +vmlinux ebus_dma_unregister 0x11793d13 +vmlinux eighty_ninty_three 0x10964ab8 +vmlinux elevator_exit 0x7e72e655 +vmlinux elevator_init 0xa51c7852 +vmlinux elv_add_request 0xef421ad7 +vmlinux elv_completed_request 0x807c09e7 +vmlinux elv_dequeue_request 0xd983684b +vmlinux elv_dispatch_sort 0x2fd54ca3 +vmlinux elv_next_request 0x91a8d532 +vmlinux elv_queue_empty 0x84c641e7 +vmlinux elv_register 0xd0af08b9 +vmlinux elv_requeue_request 0x077c3963 +vmlinux elv_rq_merge_ok 0xfacb03ec +vmlinux elv_try_merge 0x7f34e09e +vmlinux elv_unregister 0x2ab53076 +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_irq 0xfcec0987 +vmlinux end_buffer_async_write 0xbd2e585e +vmlinux end_buffer_read_sync 0xd6219515 +vmlinux end_buffer_write_sync 0x8c7527bf +vmlinux end_page_writeback 0x21764b91 +vmlinux end_request 0x346c7b96 +vmlinux end_that_request_chunk 0x02a70034 +vmlinux end_that_request_first 0x4ff13da0 +vmlinux end_that_request_last 0x5b5d14fc +vmlinux eth_type_trans 0x53d571ba +vmlinux ether_setup 0x85a959e4 +vmlinux ethtool_op_get_link 0x8696c450 +vmlinux ethtool_op_get_perm_addr 0x9c5bc81c +vmlinux ethtool_op_get_sg 0xea4dd5a2 +vmlinux ethtool_op_get_tso 0xe685ade6 +vmlinux ethtool_op_get_tx_csum 0xd703e698 +vmlinux ethtool_op_get_ufo 0x3cb05fdc +vmlinux ethtool_op_set_sg 0x332dae34 +vmlinux ethtool_op_set_tso 0x73ef6564 +vmlinux ethtool_op_set_tx_csum 0x0e966c04 +vmlinux ethtool_op_set_tx_hw_csum 0xc6291d2e +vmlinux ethtool_op_set_ufo 0x810d4405 +vmlinux exit_fs 0xa9a2a9c0 +vmlinux f_setown 0xeafde8e0 +vmlinux fasync_helper 0xb4cde77c +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0xd42a06b5 +vmlinux fb_con_duit 0xf3369008 +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0xaaa12328 +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0x717cb67a +vmlinux fb_get_buffer_offset 0x09c16cba +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0x4bc46607 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0x7480e4e8 +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0x194e3ee8 +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x09fd0fa2 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0x95ac6e86 +vmlinux fb_set_suspend 0x9be08b9b +vmlinux fb_set_var 0xfda1a0e5 +vmlinux fb_show_logo 0x820b5867 +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0xd37313e3 +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fbcon_set_bitops 0xcab17199 +vmlinux fbcon_set_tileops 0x93d796f0 +vmlinux fd_install 0x9682faf5 +vmlinux fddi_type_trans 0x53fb88f0 +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x2cc8cf2a +vmlinux file_fsync 0xfca396ae +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0x4831f64b +vmlinux filemap_fdatawait 0xe601af08 +vmlinux filemap_fdatawrite 0x4f538ca6 +vmlinux filemap_flush 0x8c300ea4 +vmlinux filemap_nopage 0x40deec13 +vmlinux filemap_populate 0xc626439d +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0x8eaa36bf +vmlinux filp_open 0x726c3b53 +vmlinux find_bus 0x1c74e06c +vmlinux find_font 0xf7584a9c +vmlinux find_get_page 0x6826e3d8 +vmlinux find_inode_number 0x873a1a45 +vmlinux find_lock_page 0xb601f013 +vmlinux find_next_bit 0xc0a3d105 +vmlinux find_next_zero_bit 0x479c3c86 +vmlinux find_next_zero_le_bit 0x39d87fb5 +vmlinux find_or_create_page 0xbbba0edf +vmlinux find_task_by_pid_type 0x12b4ce2b +vmlinux find_trylock_page 0x994ff8d9 +vmlinux find_vma 0x85cfbbb9 +vmlinux finish_wait 0xb68fd831 +vmlinux firmware_register 0x4390b89c +vmlinux firmware_unregister 0x74e11df9 +vmlinux flock_lock_file_wait 0x6bf4c261 +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_dcache_page 0x89f41a78 +vmlinux flush_icache_range 0x05186ca4 +vmlinux flush_old_exec 0xd3f55516 +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x4684bb21 +vmlinux flush_workqueue 0xbbbb7d1e +vmlinux follow_down 0x0272d399 +vmlinux follow_up 0x56dedb88 +vmlinux force_sig 0xbdc3d6e3 +vmlinux fput 0xfd4ec080 +vmlinux framebuffer_alloc 0xbc564ae8 +vmlinux framebuffer_release 0xa32361a0 +vmlinux free_buffer_head 0x557bae42 +vmlinux free_dma 0x72b243d4 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0x3ef5d91b +vmlinux free_pages 0x4302d0eb +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0xacf37b6f +vmlinux freeze_bdev 0x182b2ee7 +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0x1438d070 +vmlinux gen_kill_estimator 0xa4a74611 +vmlinux gen_new_estimator 0x7edd6b3a +vmlinux gen_replace_estimator 0xb7d64633 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x37e92a58 +vmlinux generic_block_bmap 0xaafb4863 +vmlinux generic_commit_write 0x15120d0c +vmlinux generic_cont_expand 0x73af2bb8 +vmlinux generic_delete_inode 0x3afdc9ea +vmlinux generic_drop_inode 0xf9204968 +vmlinux generic_file_aio_read 0x518116f4 +vmlinux generic_file_aio_write 0xac7f281c +vmlinux generic_file_aio_write_nolock 0x00e2bbb2 +vmlinux generic_file_buffered_write 0xf6456ad9 +vmlinux generic_file_direct_write 0x3cc26cd0 +vmlinux generic_file_llseek 0x3c604beb +vmlinux generic_file_mmap 0xa4b19c17 +vmlinux generic_file_open 0x9d016f5b +vmlinux generic_file_read 0x1623f180 +vmlinux generic_file_readonly_mmap 0x16512ba8 +vmlinux generic_file_readv 0xf944873c +vmlinux generic_file_sendfile 0x824d3f5e +vmlinux generic_file_write 0xf4953c5a +vmlinux generic_file_write_nolock 0x08120c5d +vmlinux generic_file_writev 0x238c0c1b +vmlinux generic_fillattr 0x287aab44 +vmlinux generic_getxattr 0x6310376a +vmlinux generic_ide_ioctl 0x80a2383e +vmlinux generic_listxattr 0xe2795245 +vmlinux generic_make_request 0x8e642e7d +vmlinux generic_osync_inode 0xf98ba567 +vmlinux generic_permission 0xdfcbec2e +vmlinux generic_read_dir 0x93b72ed6 +vmlinux generic_readlink 0xc0461a2b +vmlinux generic_removexattr 0x4a24cca6 +vmlinux generic_ro_fops 0xde84f6f1 +vmlinux generic_setxattr 0x9447a570 +vmlinux generic_shutdown_super 0x749fa358 +vmlinux generic_unplug_device 0x604a6a64 +vmlinux generic_write_checks 0x5f219972 +vmlinux genl_register_family 0x0c8ae50e +vmlinux genl_register_ops 0x00bac4d6 +vmlinux genl_sock 0x3d14b0c1 +vmlinux genl_unregister_family 0x9da1fbfb +vmlinux genl_unregister_ops 0xa87bf46f +vmlinux get_bus 0xe7b0ac09 +vmlinux get_cpu_sysdev 0x90891afa +vmlinux get_default_font 0x093e3659 +vmlinux get_device 0x26de8a5a +vmlinux get_disk 0x2817b5fa +vmlinux get_driver 0x8a5ab93b +vmlinux get_empty_filp 0x6d910b53 +vmlinux get_fb_unmapped_area 0x66b49f9a +vmlinux get_fs_type 0xbd7cfb09 +vmlinux get_io_context 0x7cd33313 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0x0e0033a9 +vmlinux get_sb_nodev 0xc8a41403 +vmlinux get_sb_pseudo 0xc03b97ff +vmlinux get_sb_single 0xf4ec76cf +vmlinux get_super 0xaf9e73b0 +vmlinux get_task_mm 0x84768353 +vmlinux get_unmapped_area 0x8bc85f63 +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0xd3a96a96 +vmlinux get_write_access 0xa72f1fae +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x52ec9f01 +vmlinux gnet_stats_copy_app 0xdcbe33fb +vmlinux gnet_stats_copy_basic 0x10b46ff4 +vmlinux gnet_stats_copy_queue 0x8d5ffb06 +vmlinux gnet_stats_copy_rate_est 0x0ddf2ad0 +vmlinux gnet_stats_finish_copy 0xe18066f2 +vmlinux gnet_stats_start_copy 0xa90abb14 +vmlinux gnet_stats_start_copy_compat 0x27d6e0d2 +vmlinux grab_cache_page_nowait 0x36317b43 +vmlinux groups_alloc 0xda9f6355 +vmlinux groups_free 0x41ac4793 +vmlinux half_md4_transform 0x6def2db2 +vmlinux have_submounts 0x031a44b2 +vmlinux high_memory 0x8a7d1c31 +vmlinux hwmon_device_register 0x832e5ddf +vmlinux hwmon_device_unregister 0x0e3a55dc +vmlinux i2c_adapter_class 0xdb680aa7 +vmlinux i2c_adapter_dev_release 0x262a2dec +vmlinux i2c_adapter_driver 0xb871ef07 +vmlinux i2c_add_adapter 0x0e536449 +vmlinux i2c_add_driver 0xfb6d94da +vmlinux i2c_attach_client 0x3433523b +vmlinux i2c_bit_add_bus 0x23b7a877 +vmlinux i2c_bit_del_bus 0x41406d25 +vmlinux i2c_bus_type 0xfd2e7e1e +vmlinux i2c_check_addr 0xf2973c44 +vmlinux i2c_clients_command 0x420f3e58 +vmlinux i2c_control 0x7e058ea6 +vmlinux i2c_del_adapter 0x007280c5 +vmlinux i2c_del_driver 0x98eeffc4 +vmlinux i2c_detach_client 0x2eaaec06 +vmlinux i2c_get_adapter 0x21103c4b +vmlinux i2c_master_recv 0x9da8ba13 +vmlinux i2c_master_send 0x3c0cd576 +vmlinux i2c_probe 0x93a491fc +vmlinux i2c_put_adapter 0x08098285 +vmlinux i2c_release_client 0xa58b9d47 +vmlinux i2c_smbus_read_byte 0xa9297aee +vmlinux i2c_smbus_read_byte_data 0xa582ed15 +vmlinux i2c_smbus_read_i2c_block_data 0xac0a0b99 +vmlinux i2c_smbus_read_word_data 0xcfa0a85e +vmlinux i2c_smbus_write_block_data 0x526760cc +vmlinux i2c_smbus_write_byte 0x25d4b3f5 +vmlinux i2c_smbus_write_byte_data 0x27a7da11 +vmlinux i2c_smbus_write_quick 0x82d6b82a +vmlinux i2c_smbus_write_word_data 0x9f7da64c +vmlinux i2c_smbus_xfer 0x71c9651f +vmlinux i2c_transfer 0x35ae1750 +vmlinux i2c_use_client 0x47afba16 +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x2d220539 +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_add_setting 0x444ec9b1 +vmlinux ide_build_dmatable 0x21a729f8 +vmlinux ide_build_sglist 0x6d958ba9 +vmlinux ide_bus_type 0xc75fa550 +vmlinux ide_config_drive_speed 0x25913f23 +vmlinux ide_destroy_dmatable 0x65b3eed8 +vmlinux ide_dma_enable 0x2a5a209b +vmlinux ide_dma_intr 0xc404034f +vmlinux ide_dma_setup 0x4a21e0d4 +vmlinux ide_dma_speed 0x700b5d91 +vmlinux ide_dma_start 0x803e8740 +vmlinux ide_dma_verbose 0xa0dffe0c +vmlinux ide_do_drive_cmd 0xe7247952 +vmlinux ide_do_reset 0x6216d074 +vmlinux ide_dump_status 0x3c7e6199 +vmlinux ide_end_drive_cmd 0xffb7685a +vmlinux ide_end_request 0x6ab873cd +vmlinux ide_error 0xcd584eb2 +vmlinux ide_execute_command 0xdeef3bf8 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x737dfb7f +vmlinux ide_get_error_location 0x415bb0df +vmlinux ide_hwifs 0x5f486072 +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0x6583be1a +vmlinux ide_init_drive_cmd 0xa6bf1042 +vmlinux ide_init_sg_cmd 0x51d161d1 +vmlinux ide_lock 0xfba53634 +vmlinux ide_map_sg 0xa59d9946 +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x973447ed +vmlinux ide_pci_unregister_driver 0x1a480b5c +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0xe83eb82a +vmlinux ide_register_hw 0xadb99ce7 +vmlinux ide_register_hw_with_fixup 0x4b78e19a +vmlinux ide_register_region 0x6fb003a0 +vmlinux ide_register_subdriver 0x71faae5b +vmlinux ide_set_handler 0x951178e1 +vmlinux ide_set_xfer_rate 0xe4572cc4 +vmlinux ide_setup_dma 0xb2fdb07f +vmlinux ide_setup_pci_device 0xa452d84f +vmlinux ide_setup_pci_devices 0x6bd9c322 +vmlinux ide_setup_pci_noise 0xd7829c39 +vmlinux ide_spin_wait_hwgroup 0xafd3b1e7 +vmlinux ide_stall_queue 0x15429ba3 +vmlinux ide_undecoded_slave 0xebbf743c +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0x0a608cca +vmlinux ide_unregister_subdriver 0x0391af31 +vmlinux ide_use_dma 0xeae46af7 +vmlinux ide_wait_not_busy 0x57ea9ef5 +vmlinux ide_wait_stat 0xe72a6276 +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idprom 0x807c20ca +vmlinux idr_destroy 0xc35930e8 +vmlinux idr_find 0x85f48278 +vmlinux idr_get_new 0xd5d3903e +vmlinux idr_get_new_above 0xe8f45ee3 +vmlinux idr_init 0xe8190617 +vmlinux idr_pre_get 0x213da397 +vmlinux idr_remove 0xd41d9230 +vmlinux iget5_locked 0x50e40365 +vmlinux iget_locked 0xaadff5f3 +vmlinux igrab 0xaf7302ef +vmlinux ilookup 0xe9bf9760 +vmlinux ilookup5 0xa2f2e48d +vmlinux ilookup5_nowait 0x442f7f42 +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0x6dd996d8 +vmlinux in_egroup_p 0x42a4bdf2 +vmlinux in_group_p 0x31ebadcd +vmlinux in_lock_functions 0x09d44df9 +vmlinux inet6_lookup 0x8ab34384 +vmlinux inet6_lookup_listener 0x96344f65 +vmlinux inet_accept 0x3ee6929c +vmlinux inet_add_protocol 0x28e90157 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0x7617b42e +vmlinux inet_bind_bucket_create 0x4cc5a76c +vmlinux inet_bind_hash 0x2d12f456 +vmlinux inet_csk_accept 0xc4e9d601 +vmlinux inet_csk_clear_xmit_timers 0x0e8206da +vmlinux inet_csk_clone 0xfe9b693a +vmlinux inet_csk_delete_keepalive_timer 0x63d3790a +vmlinux inet_csk_destroy_sock 0xef664401 +vmlinux inet_csk_get_port 0x62c69346 +vmlinux inet_csk_init_xmit_timers 0x8ad99830 +vmlinux inet_csk_listen_start 0x9994e78c +vmlinux inet_csk_listen_stop 0x9c8c8305 +vmlinux inet_csk_reqsk_queue_hash_add 0xba89683d +vmlinux inet_csk_reqsk_queue_prune 0x0a78999f +vmlinux inet_csk_reset_keepalive_timer 0xca22521b +vmlinux inet_csk_route_req 0x406b9aef +vmlinux inet_csk_search_req 0xe749d7a6 +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0xe44a3a63 +vmlinux inet_dgram_connect 0x1b3debe8 +vmlinux inet_dgram_ops 0xf263cc78 +vmlinux inet_diag_register 0x3b1b13bd +vmlinux inet_diag_unregister 0xc91fc6dd +vmlinux inet_getname 0xc083ff96 +vmlinux inet_ioctl 0x7516f5b0 +vmlinux inet_listen 0x08703f41 +vmlinux inet_listen_wlock 0xeac93689 +vmlinux inet_put_port 0xfb44ebb1 +vmlinux inet_register_protosw 0xd2c791d1 +vmlinux inet_release 0x0110e29c +vmlinux inet_select_addr 0x895e4434 +vmlinux inet_sendmsg 0xf049790d +vmlinux inet_shutdown 0x645370b1 +vmlinux inet_sk_rebuild_header 0xe0b70212 +vmlinux inet_sock_destruct 0xa0a5755c +vmlinux inet_stream_connect 0x44f0c971 +vmlinux inet_stream_ops 0xccc7338d +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0xfe2de8f9 +vmlinux inet_twsk_deschedule 0x1308de95 +vmlinux inet_twsk_schedule 0xaf01f6c6 +vmlinux inet_unregister_protosw 0x7ad28614 +vmlinux inetdev_by_index 0xc117e8e8 +vmlinux init_buffer 0x2f51a80d +vmlinux init_mm 0xbb597456 +vmlinux init_special_inode 0x160ec78f +vmlinux init_task 0x589ea942 +vmlinux init_timer 0xfaa6006f +vmlinux inode_add_bytes 0x7910ff83 +vmlinux inode_change_ok 0xfad5c626 +vmlinux inode_get_bytes 0xddda0e11 +vmlinux inode_init_once 0xf4d7de7c +vmlinux inode_needs_sync 0x35cdd169 +vmlinux inode_set_bytes 0x5197a21f +vmlinux inode_setattr 0x7979c863 +vmlinux inode_sub_bytes 0xab1494ce +vmlinux inode_update_time 0xbedf5976 +vmlinux inotify_dentry_parent_queue_event 0xd878eddb +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0xd5162a01 +vmlinux inotify_inode_queue_event 0xbb7fc5b0 +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0xaeed4cf6 +vmlinux input_allocate_device 0xf2d0c000 +vmlinux input_class 0xeb56436e +vmlinux input_close_device 0x9ad0bc14 +vmlinux input_event 0x3084ebed +vmlinux input_flush_device 0xed78ca92 +vmlinux input_grab_device 0x9b5558e7 +vmlinux input_open_device 0x56a4f746 +vmlinux input_register_device 0xe48d3462 +vmlinux input_register_handler 0xd0615474 +vmlinux input_release_device 0x0aede055 +vmlinux input_unregister_device 0xd66dbe74 +vmlinux input_unregister_handler 0x9fbf35e9 +vmlinux insb 0x10902bf7 +vmlinux insert_resource 0xdc3992ac +vmlinux insl 0x73e0877a +vmlinux install_page 0xca14bdde +vmlinux insw 0x69010b06 +vmlinux int_sqrt 0xb678366f +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x4d8c144f +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0xe0809bdc +vmlinux interruptible_sleep_on_timeout 0x8e527c53 +vmlinux invalidate_bdev 0xb9b96f53 +vmlinux invalidate_inode_pages 0x45ab68c3 +vmlinux invalidate_inode_pages2 0xa2131be7 +vmlinux invalidate_inode_pages2_range 0x3e2076d9 +vmlinux invalidate_inodes 0xc50c5d63 +vmlinux invalidate_partition 0x6c8e167a +vmlinux io_remap_pfn_range 0xe6c30733 +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0xbd58f3e8 +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux iov_shorten 0x92392cd9 +vmlinux ip4_datagram_connect 0xfc99c61d +vmlinux ip_build_and_send_pkt 0xb30846ed +vmlinux ip_cmsg_recv 0xa2ff3de3 +vmlinux ip_ct_attach 0x4a187760 +vmlinux ip_defrag 0x86b7f4a3 +vmlinux ip_fast_csum 0x567801ab +vmlinux ip_fragment 0x4c81f667 +vmlinux ip_generic_getfrag 0x7054573c +vmlinux ip_getsockopt 0x856ee78d +vmlinux ip_mc_dec_group 0xde639ca6 +vmlinux ip_mc_inc_group 0x9f532b5e +vmlinux ip_mc_join_group 0x03f77102 +vmlinux ip_queue_xmit 0xb52a1dc7 +vmlinux ip_route_input 0x274617d6 +vmlinux ip_route_me_harder 0x8213422c +vmlinux ip_route_output_flow 0x4f7dcaff +vmlinux ip_route_output_key 0x3c1f85ec +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0x434ccab0 +vmlinux ip_setsockopt 0x43b2c14f +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0xcb93d4c2 +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0xe5f56e19 +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0xec9ead19 +vmlinux is_bad_inode 0xe61730e9 +vmlinux is_console_locked 0x944a564d +vmlinux isa_chain 0x70a5de2b +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux iunique 0x425edffc +vmlinux ivector_table 0xd848f03f +vmlinux iw_handler_get_spy 0x0328fe70 +vmlinux iw_handler_get_thrspy 0xe8ea0a3b +vmlinux iw_handler_set_spy 0x0e4ebaca +vmlinux iw_handler_set_thrspy 0x10e73f9c +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xd8c98779 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x5b7b140d +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0xb78dcfc6 +vmlinux kernel_recvmsg 0xbc5403eb +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0x1f774bd2 +vmlinux kernel_subsys 0xbc75a910 +vmlinux kernel_thread 0x439090b9 +vmlinux kfifo_alloc 0x4ca942d5 +vmlinux kfifo_free 0x1876c9ad +vmlinux kfifo_init 0x64d067c0 +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0x0a492931 +vmlinux kill_anon_super 0x7f4f3825 +vmlinux kill_block_super 0x476798ea +vmlinux kill_fasync 0x0e7a2903 +vmlinux kill_litter_super 0x84066c18 +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xfe8c2a28 +vmlinux klist_add_head 0x4d55d338 +vmlinux klist_add_tail 0x27cf4663 +vmlinux klist_del 0xdca02bed +vmlinux klist_init 0xba4bfd49 +vmlinux klist_iter_exit 0x5c16d718 +vmlinux klist_iter_init 0xc4fb30d1 +vmlinux klist_iter_init_node 0xc1be1205 +vmlinux klist_next 0x38778b26 +vmlinux klist_node_attached 0xb13f167c +vmlinux klist_remove 0x24068146 +vmlinux km_new_mapping 0xb0368fcc +vmlinux km_policy_notify 0x4cef7065 +vmlinux km_state_notify 0x52672ac4 +vmlinux km_waitq 0xc1df98c7 +vmlinux kmem_cache_alloc 0x1cd3f064 +vmlinux kmem_cache_create 0x083c0e68 +vmlinux kmem_cache_destroy 0x14636c0f +vmlinux kmem_cache_free 0x79fb2fc1 +vmlinux kmem_cache_name 0xe237d001 +vmlinux kmem_cache_shrink 0x0b879a3b +vmlinux kmem_cache_size 0x77f613d6 +vmlinux kmem_find_general_cachep 0xdaac6164 +vmlinux kobject_add 0x80484ade +vmlinux kobject_del 0xae1f0b88 +vmlinux kobject_get 0xd91f1357 +vmlinux kobject_hotplug 0x92ab083d +vmlinux kobject_init 0x7ab8bfb4 +vmlinux kobject_put 0x760022b7 +vmlinux kobject_register 0x1c9ade4b +vmlinux kobject_set_name 0xc215a65d +vmlinux kobject_uevent 0x866e7ffc +vmlinux kobject_uevent_atomic 0x8679e4d3 +vmlinux kobject_unregister 0x3501b740 +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x52827eda +vmlinux kset_register 0x5f3372c3 +vmlinux kset_unregister 0xbd4a66fd +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x53399844 +vmlinux kthread_create 0x1e2014b8 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0xcfceba00 +vmlinux kthread_stop_sem 0xde930c67 +vmlinux kzalloc 0x5a3b6eca +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0x56ac4968 +vmlinux lease_modify 0xf8ea30e7 +vmlinux linkwatch_fire_event 0x3af58ec8 +vmlinux linux_sparc_syscall 0x1fc8cd4d +vmlinux ll_rw_block 0x3fbb0d10 +vmlinux load_nls 0x00c28c7e +vmlinux load_nls_default 0x22e679f5 +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_kernel 0x3656bf5a +vmlinux lock_may_read 0xb59f50e5 +vmlinux lock_may_write 0xb70088f6 +vmlinux lock_rename 0x539d4f6e +vmlinux lock_sock 0xc46f76b4 +vmlinux locks_copy_lock 0x65c06747 +vmlinux locks_init_lock 0x27f31fd1 +vmlinux locks_mandatory_area 0x41972ac1 +vmlinux locks_remove_posix 0x39803cc7 +vmlinux lookup_create 0x1b8217f2 +vmlinux lookup_hash 0xcc159dfb +vmlinux lookup_instantiate_filp 0xd543d449 +vmlinux lookup_one_len 0xa145d30c +vmlinux loop_register_transfer 0x3d03f521 +vmlinux loop_unregister_transfer 0xbfee3ad5 +vmlinux loopback_dev 0x920c6800 +vmlinux loops_per_jiffy 0xba497f13 +vmlinux mac_find_mode 0x4c61aa52 +vmlinux mac_map_monitor_sense 0xe2304303 +vmlinux mac_var_to_vmode 0x00907cd5 +vmlinux mac_vmode_to_var 0x08ed0b62 +vmlinux make_8023_client 0xa9c418e6 +vmlinux make_EII_client 0x4559dd41 +vmlinux make_bad_inode 0x41d07510 +vmlinux malloc_sizes 0xc44d456c +vmlinux mapping_tagged 0xc8099966 +vmlinux mark_buffer_async_write 0x7de71c13 +vmlinux mark_buffer_dirty 0xd01e5fc6 +vmlinux mark_buffer_dirty_inode 0x545dd7f8 +vmlinux mark_info_dirty 0x8140fdfc +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x902608b8 +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_mapnr 0x01139ffc +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0x4f795ad9 +vmlinux may_umount_tree 0x7d7efa27 +vmlinux mb_cache_create 0xdbe9b080 +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0x394cb9a2 +vmlinux mb_cache_entry_find_first 0xf4090ff4 +vmlinux mb_cache_entry_find_next 0xa30828a6 +vmlinux mb_cache_entry_free 0xb4dbfb4c +vmlinux mb_cache_entry_get 0xd1c4e3fa +vmlinux mb_cache_entry_insert 0x1be2428b +vmlinux mb_cache_entry_release 0xc6da64f4 +vmlinux mb_cache_shrink 0x77370a09 +vmlinux mem_map 0xd831cb79 +vmlinux mem_section 0xa1dd15ba +vmlinux memchr 0xc740c64a +vmlinux memcmp 0xc7ec28b0 +vmlinux memcpy 0x6067a146 +vmlinux memcpy_fromiovec 0x36139a51 +vmlinux memcpy_fromiovecend 0x9bc565c5 +vmlinux memcpy_toiovec 0x2876a6d3 +vmlinux memmove 0x5dbbe98e +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xd2a3da2d +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0x32905468 +vmlinux mempool_create_node 0x7e253b30 +vmlinux mempool_destroy 0x643ceefa +vmlinux mempool_free 0xb692edfa +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0xfad16907 +vmlinux memset 0x3fa03a97 +vmlinux mii_phy_probe 0xb07c8c78 +vmlinux misc_deregister 0xa0d207c6 +vmlinux misc_register 0x2f3eec60 +vmlinux mmput 0xbe124a62 +vmlinux mnt_pin 0xaad4e786 +vmlinux mnt_unpin 0x37c0360f +vmlinux mntput_no_expire 0xa22b031c +vmlinux mod_reg_security 0xa072f4ef +vmlinux mod_timer 0x794c4576 +vmlinux mod_unreg_security 0x4e8abd72 +vmlinux module_add_driver 0x7a84475a +vmlinux module_refcount 0xe39ef46c +vmlinux module_remove_driver 0xbb6b0c1e +vmlinux mostek_lock 0xe7a98815 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0xda95c5bb +vmlinux mpage_readpages 0x83ff79fa +vmlinux mpage_writepage 0x02d28119 +vmlinux mpage_writepages 0x928f7851 +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux mstk48t02_regs 0xe2e47af7 +vmlinux n_tty_ioctl 0x8cf38b05 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x6a246fcc +vmlinux neigh_app_ns 0x3d63240b +vmlinux neigh_changeaddr 0xd64dac7e +vmlinux neigh_compat_output 0xa854d7f7 +vmlinux neigh_connected_output 0x5d879d0c +vmlinux neigh_create 0x578a004f +vmlinux neigh_delete 0x537aa5d2 +vmlinux neigh_destroy 0x8ce31706 +vmlinux neigh_dump_info 0xa3555fd4 +vmlinux neigh_event_ns 0x6d93e452 +vmlinux neigh_for_each 0x5d025343 +vmlinux neigh_ifdown 0x034660dc +vmlinux neigh_lookup 0x5e64db0a +vmlinux neigh_lookup_nodev 0x1402f3b3 +vmlinux neigh_parms_alloc 0x4ce586a4 +vmlinux neigh_parms_release 0xcfd74526 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0xb6c20859 +vmlinux neigh_seq_next 0x0466681d +vmlinux neigh_seq_start 0x4c15caae +vmlinux neigh_seq_stop 0xb606346c +vmlinux neigh_sysctl_register 0x19bf0b3a +vmlinux neigh_sysctl_unregister 0xebf51259 +vmlinux neigh_table_clear 0x31961611 +vmlinux neigh_table_init 0x8b916d24 +vmlinux neigh_update 0x19f528a3 +vmlinux neigh_update_hhs 0xa4a99f0a +vmlinux neightbl_dump_info 0x04c4b070 +vmlinux neightbl_set 0x8151afa8 +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0x77d83161 +vmlinux netdev_features_change 0xe87e1041 +vmlinux netdev_rx_csum_fault 0x1998bd0d +vmlinux netdev_set_master 0x3dd4b6b9 +vmlinux netdev_state_change 0x1a540ddd +vmlinux netif_carrier_off 0x0ec4caaa +vmlinux netif_carrier_on 0x5633e076 +vmlinux netif_receive_skb 0xac3c82f2 +vmlinux netif_rx 0xe639d5a6 +vmlinux netif_rx_ni 0x3001df93 +vmlinux netlink_ack 0x5fefafa8 +vmlinux netlink_broadcast 0xb90f61a5 +vmlinux netlink_dump_start 0xce166563 +vmlinux netlink_kernel_create 0x729171d9 +vmlinux netlink_queue_skip 0x443e8f3d +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0x570cdc13 +vmlinux netlink_set_err 0x537bd22c +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0xe8e9ef09 +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x3a660cde +vmlinux netpoll_parse_options 0x09af9e6e +vmlinux netpoll_poll 0x3dbfbb75 +vmlinux netpoll_queue 0x9455f3c7 +vmlinux netpoll_send_udp 0x79d44523 +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0x729749fb +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0xf19c2c4b +vmlinux next_thread 0x3016199e +vmlinux nf_ct_attach 0x9a94be08 +vmlinux nf_getsockopt 0xadf9f49b +vmlinux nf_hook_slow 0x3539509f +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0x3f8d3cab +vmlinux nf_log_register 0x8aba8844 +vmlinux nf_log_unregister_logger 0x75dc8670 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0x9a381500 +vmlinux nf_register_queue_handler 0x9809ca41 +vmlinux nf_register_queue_rerouter 0x034a0a8d +vmlinux nf_register_sockopt 0xd8448575 +vmlinux nf_reinject 0x0107fd43 +vmlinux nf_setsockopt 0xa4bf9c79 +vmlinux nf_unregister_hook 0x2e502083 +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0x04d54d8e +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x8dc1ab9f +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0x4c4c956e +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0x533256c4 +vmlinux nla_reserve 0xa7f3ef29 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0xa33f7c7c +vmlinux nla_validate 0x2cc98162 +vmlinux no_llseek 0x03b8f126 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x1acd48a6 +vmlinux nobh_prepare_write 0xadbf2259 +vmlinux nobh_truncate_page 0xc34371e2 +vmlinux nobh_writepage 0x40bb1539 +vmlinux node_online_map 0x6a7acf23 +vmlinux node_possible_map 0x33eca077 +vmlinux nonseekable_open 0xd6b1ecf5 +vmlinux noop_qdisc 0x69ef43dc +vmlinux noop_qdisc_ops 0x2e9093fb +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x9d2a7fc7 +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux ns87303_lock 0x677eea7d +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0x99fe7503 +vmlinux open_by_devnum 0xbbf40893 +vmlinux open_exec 0x858834aa +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux outsb 0x12ea337e +vmlinux outsl 0x24bd930a +vmlinux outsw 0x533903d8 +vmlinux overflowgid 0x7171121c +vmlinux overflowuid 0x8b618d08 +vmlinux p80211_resume 0xe0faa809 +vmlinux p80211_suspend 0xa5f97ceb +vmlinux p80211netdev_hwremoved 0xd84809dd +vmlinux p80211netdev_rx 0x27e2f0a6 +vmlinux p80211skb_free 0x22bd2691 +vmlinux p80211skb_rxmeta_attach 0xb10d83a2 +vmlinux page_follow_link_light 0x4ec0a6b7 +vmlinux page_put_link 0x795d747e +vmlinux page_readlink 0xc71706b5 +vmlinux page_symlink 0x0f12aa9c +vmlinux page_symlink_inode_operations 0x6b7912c8 +vmlinux pagevec_lookup_tag 0x99e1bd76 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0x1f57ff54 +vmlinux path_release 0x517b128b +vmlinux path_walk 0xd4349c92 +vmlinux pci_add_new_bus 0x495578ea +vmlinux pci_alloc_consistent 0x8a04957b +vmlinux pci_assign_resource 0x81d8b0f7 +vmlinux pci_block_user_cfg_access 0x8c09f18c +vmlinux pci_bus_add_device 0x13038054 +vmlinux pci_bus_add_devices 0xb38cf250 +vmlinux pci_bus_alloc_resource 0x00a19c52 +vmlinux pci_bus_assign_resources 0xad724c2a +vmlinux pci_bus_find_capability 0x5b06708a +vmlinux pci_bus_max_busnr 0xbb40aa25 +vmlinux pci_bus_read_config_byte 0x5f3ed655 +vmlinux pci_bus_read_config_dword 0x993b316e +vmlinux pci_bus_read_config_word 0xb9fb80f4 +vmlinux pci_bus_size_bridges 0x21d505bb +vmlinux pci_bus_type 0xdd4bbb71 +vmlinux pci_bus_write_config_byte 0x6b786e2e +vmlinux pci_bus_write_config_dword 0x24010bc5 +vmlinux pci_bus_write_config_word 0x2a56d741 +vmlinux pci_choose_state 0xad707a22 +vmlinux pci_clear_mwi 0x4f99032c +vmlinux pci_create_bus 0x23bc217f +vmlinux pci_dev_driver 0xb9d39156 +vmlinux pci_dev_get 0x0c390e38 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0x504face6 +vmlinux pci_disable_device 0x24e62769 +vmlinux pci_dma_supported 0xeb38b8f7 +vmlinux pci_dma_sync_sg_for_cpu 0xaa748b10 +vmlinux pci_dma_sync_single_for_cpu 0xf4fa5f8d +vmlinux pci_do_scan_bus 0xa41ebb4a +vmlinux pci_domain_nr 0x82a58d47 +vmlinux pci_enable_bridges 0x74d1b865 +vmlinux pci_enable_device 0x270a5f16 +vmlinux pci_enable_device_bars 0x471e7530 +vmlinux pci_enable_wake 0xc82dcc70 +vmlinux pci_find_bus 0x6585f2ca +vmlinux pci_find_capability 0x2f0e0bdc +vmlinux pci_find_device 0xa3de1767 +vmlinux pci_find_device_reverse 0x0e92e737 +vmlinux pci_find_next_bus 0x58b61340 +vmlinux pci_find_next_capability 0xfc755899 +vmlinux pci_find_parent_resource 0x7f22c55b +vmlinux pci_find_slot 0x5ab8c877 +vmlinux pci_fixup_device 0xaca57ce6 +vmlinux pci_free_consistent 0x240b7d9c +vmlinux pci_get_class 0xd71cd3d5 +vmlinux pci_get_device 0x188718c4 +vmlinux pci_get_slot 0x961727c2 +vmlinux pci_get_subsys 0x44d7ef4e +vmlinux pci_intx 0xe0ce93a8 +vmlinux pci_iomap 0x93313dfe +vmlinux pci_iommu_ops 0xf4519920 +vmlinux pci_iounmap 0x7fe9c8fc +vmlinux pci_map_rom 0x4ef4b080 +vmlinux pci_map_rom_copy 0xd7782fe4 +vmlinux pci_map_sg 0x3293e6f5 +vmlinux pci_map_single 0x38cb3b06 +vmlinux pci_match_device 0xe14fe733 +vmlinux pci_match_id 0xd28588d1 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_memspace_mask 0xa495fc39 +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0xec5704de +vmlinux pci_proc_attach_device 0xa3765647 +vmlinux pci_proc_detach_bus 0x460e3847 +vmlinux pci_release_region 0x133e820f +vmlinux pci_release_regions 0xf2da8325 +vmlinux pci_remove_behind_bridge 0x2c69d862 +vmlinux pci_remove_bus 0xa1f6329d +vmlinux pci_remove_bus_device 0x289f6c13 +vmlinux pci_remove_device_safe 0x9b23ea41 +vmlinux pci_remove_rom 0xe95ea1b8 +vmlinux pci_request_region 0x27cfc7ea +vmlinux pci_request_regions 0x254c1af7 +vmlinux pci_restore_bars 0x01d4d072 +vmlinux pci_restore_state 0x0384fa01 +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0xc2a518a9 +vmlinux pci_scan_bridge 0xe70b88f8 +vmlinux pci_scan_bus_parented 0x59a55cd5 +vmlinux pci_scan_child_bus 0xa9369a3d +vmlinux pci_scan_single_device 0x432fcea8 +vmlinux pci_scan_slot 0xfb864b6b +vmlinux pci_set_consistent_dma_mask 0x17547ca6 +vmlinux pci_set_dma_mask 0xe189e4be +vmlinux pci_set_master 0x09083b3e +vmlinux pci_set_mwi 0xe07fed5a +vmlinux pci_set_power_state 0x06c16b85 +vmlinux pci_setup_cardbus 0xd260c9cc +vmlinux pci_unblock_user_cfg_access 0x03132e40 +vmlinux pci_unmap_rom 0x3ec7a4db +vmlinux pci_unmap_sg 0xfa205466 +vmlinux pci_unmap_single 0x6b600558 +vmlinux pci_unregister_driver 0xfbf7eb62 +vmlinux pci_walk_bus 0xe41488be +vmlinux pcibios_bus_to_resource 0x211bbcb5 +vmlinux pcibios_resource_to_bus 0xa2757c57 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux per_cpu____cpu_data 0x174c5f20 +vmlinux per_cpu__kstat 0x11abe0a7 +vmlinux per_cpu__softnet_data 0x9c41df76 +vmlinux percpu_counter_mod 0x3f6b0eb1 +vmlinux permission 0xa9a6cb0e +vmlinux pfifo_qdisc_ops 0x1358190c +vmlinux phys_cpu_present_map 0x280e038b +vmlinux platform_add_devices 0xea0b89d3 +vmlinux platform_bus 0x4a8a8e03 +vmlinux platform_bus_type 0x5d8fa949 +vmlinux platform_device_add 0x79348121 +vmlinux platform_device_add_data 0x77f2e5ec +vmlinux platform_device_add_resources 0x9174e39f +vmlinux platform_device_alloc 0xac59902f +vmlinux platform_device_put 0x5878176d +vmlinux platform_device_register 0xe70f2681 +vmlinux platform_device_register_simple 0x776f9caa +vmlinux platform_device_unregister 0x0671c43d +vmlinux platform_driver_register 0xe51e406f +vmlinux platform_driver_unregister 0x651ef35d +vmlinux platform_get_irq 0xf0931f93 +vmlinux platform_get_irq_byname 0xe588f612 +vmlinux platform_get_resource 0x5faa03c0 +vmlinux platform_get_resource_byname 0x5d6ddb90 +vmlinux pneigh_enqueue 0x336f1dd0 +vmlinux pneigh_lookup 0x670cfeb8 +vmlinux poll_freewait 0x913ee005 +vmlinux poll_initwait 0x91216a70 +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0x83c43dc1 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x886aa274 +vmlinux posix_acl_equiv_mode 0x50d56018 +vmlinux posix_acl_from_mode 0x8c537c45 +vmlinux posix_acl_from_xattr 0x42acbf72 +vmlinux posix_acl_permission 0x85696d82 +vmlinux posix_acl_to_xattr 0xb055d8da +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0x629414a9 +vmlinux posix_lock_file 0x95b1f9d4 +vmlinux posix_lock_file_wait 0x0ce272ee +vmlinux posix_locks_deadlock 0x32d944aa +vmlinux posix_test_lock 0x4a6bf91d +vmlinux posix_timer_event 0x4d4c33e4 +vmlinux posix_unblock_lock 0xb02cd9c1 +vmlinux pre_task_out_intr 0x0474fc98 +vmlinux prepare_binprm 0x1f4be701 +vmlinux prepare_to_wait 0x5492c604 +vmlinux prepare_to_wait_exclusive 0x02fb211a +vmlinux printk 0xdd132261 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0x4f233165 +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0xd894caf4 +vmlinux proc_dointvec 0x042b6595 +vmlinux proc_dointvec_jiffies 0xd4fa34a2 +vmlinux proc_dointvec_minmax 0x8feb4100 +vmlinux proc_dointvec_ms_jiffies 0x0e938e37 +vmlinux proc_dointvec_userhz_jiffies 0x9dc647a6 +vmlinux proc_dostring 0x36cf222b +vmlinux proc_doulongvec_minmax 0xa52aaddc +vmlinux proc_doulongvec_ms_jiffies_minmax 0x83c735a1 +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0xc3b00f30 +vmlinux proc_net 0xc12540fb +vmlinux proc_net_netfilter 0x91fddcdf +vmlinux proc_net_stat 0x17c68385 +vmlinux proc_root 0x4a5b7640 +vmlinux proc_root_driver 0x1c699823 +vmlinux proc_root_fs 0xcf87a359 +vmlinux proc_symlink 0xddf732cb +vmlinux profile_event_register 0x8a02f409 +vmlinux profile_event_unregister 0x3259dcce +vmlinux profile_pc 0x61bc8a5c +vmlinux prom_feval 0xda3d2c3c +vmlinux prom_finddevice 0x1ad9f95a +vmlinux prom_firstprop 0x807b7089 +vmlinux prom_getbool 0x5251cae4 +vmlinux prom_getchild 0x5ee0a984 +vmlinux prom_getint 0xac2dab09 +vmlinux prom_getintdefault 0x9aacd62b +vmlinux prom_getname 0xb0d1f9ef +vmlinux prom_getproperty 0x8b0403e6 +vmlinux prom_getproplen 0xdf8fef53 +vmlinux prom_getsibling 0x3b3fe8cb +vmlinux prom_getstring 0x9117a881 +vmlinux prom_nextprop 0x25c3dbca +vmlinux prom_node_has_property 0x4a15ae23 +vmlinux prom_palette 0x11a046ce +vmlinux prom_root_node 0x5ce875cf +vmlinux prom_searchsiblings 0xe782899e +vmlinux prom_setprop 0x4cbda2bf +vmlinux proto_register 0x2adba8f5 +vmlinux proto_unregister 0x64835ed4 +vmlinux ps2_cmd_aborted 0x7a31227f +vmlinux ps2_command 0xb1f96ec7 +vmlinux ps2_drain 0xd26f9f79 +vmlinux ps2_handle_ack 0xcf5c34eb +vmlinux ps2_handle_response 0x7254c04d +vmlinux ps2_init 0x236646e3 +vmlinux ps2_schedule_command 0xbb01fc1b +vmlinux ps2_sendbyte 0xd2d30dc1 +vmlinux pskb_copy 0x1299d129 +vmlinux pskb_expand_head 0x98d0998e +vmlinux pskb_put 0x4828f616 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0xb7c29663 +vmlinux put_cmsg 0x43ec913a +vmlinux put_device 0x68ddd756 +vmlinux put_disk 0x7fe0a914 +vmlinux put_driver 0x6f9fa013 +vmlinux put_files_struct 0x096b4244 +vmlinux put_fs_struct 0x6b43d1d8 +vmlinux put_io_context 0x1715dc62 +vmlinux put_page 0x8dc387f5 +vmlinux put_tty_driver 0x0d1315e7 +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0x9e916f54 +vmlinux qdisc_create_dflt 0x9a714042 +vmlinux qdisc_destroy 0xf8600b7d +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0x70527378 +vmlinux qdisc_lookup 0x672c4394 +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0xac35cf58 +vmlinux qdisc_restart 0xad03d546 +vmlinux qdisc_unlock_tree 0x7e8eafea +vmlinux queue_delayed_work 0x1ce86d4c +vmlinux queue_work 0x1924681d +vmlinux radix_tree_delete 0x898049c9 +vmlinux radix_tree_gang_lookup 0x35ef380e +vmlinux radix_tree_gang_lookup_tag 0xed493232 +vmlinux radix_tree_insert 0x72e6283f +vmlinux radix_tree_lookup 0x76e635da +vmlinux radix_tree_lookup_slot 0x41706e2f +vmlinux radix_tree_tag_clear 0x9ee300df +vmlinux radix_tree_tag_set 0xd73b9fb5 +vmlinux radix_tree_tagged 0xb52b2186 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0x91811fae +vmlinux read_cache_pages 0x22dbdfa2 +vmlinux read_dev_sector 0x11dadd61 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0x2fc886d6 +vmlinux redraw_screen 0xe02d1f8f +vmlinux register_binfmt 0xb08f264c +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0x7baaacca +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x9ff253af +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_exec_domain 0x9847ae02 +vmlinux register_filesystem 0xb806edc2 +vmlinux register_firmware 0x40359ccb +vmlinux register_framebuffer 0x714bebe2 +vmlinux register_gifconf 0xbcf53ee1 +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0x0c2cfd03 +vmlinux register_netdevice 0x7ee5769f +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0xde16cfd1 +vmlinux register_posix_clock 0x261df321 +vmlinux register_qdisc 0x2d360c9e +vmlinux register_quota_format 0x3772df8b +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0x32e52d22 +vmlinux register_sysctl_table 0x77b1f267 +vmlinux register_tcf_proto_ops 0x3542f696 +vmlinux register_wlandev 0x796bbd1b +vmlinux registered_fb 0x98a05198 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x6ef56f31 +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0xacf3c924 +vmlinux remap_pfn_range 0x11e6bbd8 +vmlinux remote_llseek 0x2683c67a +vmlinux remove_arg_zero 0x764b0cec +vmlinux remove_inode_hash 0x0f1980f4 +vmlinux remove_proc_entry 0x6a2a3181 +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0xd77ad0e0 +vmlinux remove_wait_queue 0x9f62bfc5 +vmlinux reqsk_queue_alloc 0x39b89734 +vmlinux reqsk_queue_destroy 0xedcd94e7 +vmlinux request_dma 0x4ea37b78 +vmlinux request_firmware 0x2065cdfe +vmlinux request_firmware_nowait 0xc5932162 +vmlinux request_irq 0xe9bd243a +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x83230e05 +vmlinux rtc_control 0xc9b27289 +vmlinux rtc_register 0xfdab2b9c +vmlinux rtc_unregister 0xeddfe49d +vmlinux rtnetlink_links 0x63313b85 +vmlinux rtnetlink_put_metrics 0x93f49bd6 +vmlinux rtnl 0xe75602ab +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0xc40c9fdf +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux rtrap 0x3042f3a3 +vmlinux rwsem_down_read_failed 0x39e14282 +vmlinux rwsem_down_write_failed 0x4a142d5c +vmlinux rwsem_downgrade_wake 0xd832c9e5 +vmlinux rwsem_wake 0x312ba318 +vmlinux saved_command_line 0x04f5f35f +vmlinux sb_min_blocksize 0x2492e83f +vmlinux sb_set_blocksize 0xa0df9f9b +vmlinux sbus_alloc_consistent 0x32f66bd7 +vmlinux sbus_dma_sync_sg_for_cpu 0x3e64e2d7 +vmlinux sbus_dma_sync_sg_for_device 0xaed526d9 +vmlinux sbus_dma_sync_single_for_cpu 0x3ed33b81 +vmlinux sbus_dma_sync_single_for_device 0x0a3b050a +vmlinux sbus_free_consistent 0x8c954a3e +vmlinux sbus_map_sg 0xf114a585 +vmlinux sbus_map_single 0xf9a5d26d +vmlinux sbus_root 0x6c6773c9 +vmlinux sbus_set_sbus64 0xe2369125 +vmlinux sbus_unmap_sg 0x08bcb765 +vmlinux sbus_unmap_single 0x2ccaf4dd +vmlinux sbusfb_compat_ioctl 0xa610462c +vmlinux sbusfb_fill_var 0x9a895f7a +vmlinux sbusfb_ioctl_helper 0x13306705 +vmlinux sbusfb_mmap_helper 0x6470eea1 +vmlinux sched_setscheduler 0xe39a8b57 +vmlinux schedule 0x01000e51 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0x1a1a71cf +vmlinux scm_fp_dup 0x5e646672 +vmlinux scnprintf 0x7bb4de17 +vmlinux scsi_cmd_ioctl 0x4d8f3821 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux search_binary_handler 0xc1e703cf +vmlinux secpath_dup 0xe47c11da +vmlinux secure_dccp_sequence_number 0x0abd4d41 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0x4e99043d +vmlinux securityfs_create_dir 0x6f1b59a4 +vmlinux securityfs_create_file 0xdc3828c2 +vmlinux securityfs_remove 0xe40812e7 +vmlinux send_sig 0x39bd66c9 +vmlinux send_sig_info 0x6d1a3320 +vmlinux seq_escape 0x7229a2fc +vmlinux seq_lseek 0x1ff5ea5b +vmlinux seq_open 0x5d1474fd +vmlinux seq_path 0xf7a8e5ed +vmlinux seq_printf 0xaf6e7e62 +vmlinux seq_putc 0x994c47f4 +vmlinux seq_puts 0x146027d8 +vmlinux seq_read 0x4f9d9448 +vmlinux seq_release 0xc7b38590 +vmlinux seq_release_private 0x870e5c4b +vmlinux serial_console 0xb8be6eaa +vmlinux serio_close 0x78bdd8d5 +vmlinux serio_interrupt 0x830a41c2 +vmlinux serio_open 0x8e5bdc39 +vmlinux serio_reconnect 0x71a47e88 +vmlinux serio_rescan 0x3c1f6843 +vmlinux serio_unregister_child_port 0xd447f07d +vmlinux serio_unregister_driver 0x5fc77ef1 +vmlinux serio_unregister_port 0xe942347d +vmlinux set_anon_super 0xf5069dc0 +vmlinux set_bh_page 0x40c15678 +vmlinux set_binfmt 0xebf49ced +vmlinux set_bit 0x9443289e +vmlinux set_blocksize 0xc504b294 +vmlinux set_cpus_allowed 0x05d5aaf6 +vmlinux set_current_groups 0x999fe899 +vmlinux set_device_ro 0x33c8b499 +vmlinux set_disk_ro 0xa39df0d2 +vmlinux set_page_dirty 0x64ef2111 +vmlinux set_page_dirty_lock 0xe76dcba0 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0x4d978de9 +vmlinux setlease 0x68365d09 +vmlinux setup_arg_pages 0xbb4d4d8d +vmlinux sget 0xc418a99c +vmlinux sha_transform 0xf313da4e +vmlinux show_regs 0x176ab54b +vmlinux shrink_dcache_parent 0x5cbaddd6 +vmlinux shrink_dcache_sb 0xad2ce688 +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x6a5fa363 +vmlinux simple_attr_close 0xd3b114ec +vmlinux simple_attr_open 0x0a90e12c +vmlinux simple_attr_read 0x08ce42a6 +vmlinux simple_attr_write 0x80dd929a +vmlinux simple_commit_write 0xc5c22532 +vmlinux simple_dir_inode_operations 0x242574c7 +vmlinux simple_dir_operations 0x3001a932 +vmlinux simple_empty 0x5fce53cd +vmlinux simple_fill_super 0x4db1b37c +vmlinux simple_getattr 0x75d1d7e8 +vmlinux simple_link 0x07b64d27 +vmlinux simple_lookup 0x51509110 +vmlinux simple_pin_fs 0xae1b7b54 +vmlinux simple_prepare_write 0xec84ef21 +vmlinux simple_read_from_buffer 0x5a5e7ea3 +vmlinux simple_readpage 0xf9ce7f0b +vmlinux simple_release_fs 0xa2442e8d +vmlinux simple_rename 0x84730bda +vmlinux simple_rmdir 0xa3ea0cd1 +vmlinux simple_statfs 0x1a05b802 +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0xca0fda24 +vmlinux simple_transaction_get 0xa6d33502 +vmlinux simple_transaction_read 0xd8e486f4 +vmlinux simple_transaction_release 0xa5c6095e +vmlinux simple_unlink 0xfa697226 +vmlinux single_open 0x8c11592f +vmlinux single_release 0xa074d51b +vmlinux sk_alloc 0x85d111ca +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0x681152b2 +vmlinux sk_common_release 0xf1169a0a +vmlinux sk_free 0x9ab7a75c +vmlinux sk_reset_timer 0xb5ce1d38 +vmlinux sk_run_filter 0x80087ab3 +vmlinux sk_send_sigurg 0x3142392e +vmlinux sk_stop_timer 0x273cd520 +vmlinux sk_stream_error 0xeab01f99 +vmlinux sk_stream_kill_queues 0x0b7a7a61 +vmlinux sk_stream_mem_schedule 0xa4a1598a +vmlinux sk_stream_rfree 0x580e917d +vmlinux sk_stream_wait_close 0xa93c66af +vmlinux sk_stream_wait_connect 0x6cac633e +vmlinux sk_stream_wait_memory 0xabb3df2d +vmlinux sk_stream_write_space 0x4b4f8b1a +vmlinux sk_wait_data 0x1f7486fe +vmlinux skb_abort_seq_read 0xb429b624 +vmlinux skb_append 0x19df6b06 +vmlinux skb_append_datato_frags 0x3cbf5112 +vmlinux skb_checksum 0x74a43419 +vmlinux skb_checksum_help 0xb4cd171e +vmlinux skb_clone 0x3d54c096 +vmlinux skb_clone_fraglist 0x5c4e8d8b +vmlinux skb_copy 0x4538311b +vmlinux skb_copy_and_csum_bits 0xc4559d05 +vmlinux skb_copy_and_csum_datagram_iovec 0x78bf3e96 +vmlinux skb_copy_and_csum_dev 0x6c73c44d +vmlinux skb_copy_bits 0x975f285e +vmlinux skb_copy_datagram_iovec 0x7e0721d1 +vmlinux skb_copy_expand 0x01cd81c5 +vmlinux skb_cow_data 0xccb3f192 +vmlinux skb_dequeue 0x331ececa +vmlinux skb_dequeue_tail 0xc1f7e70c +vmlinux skb_find_text 0x3ed52db0 +vmlinux skb_free_datagram 0x883d73c9 +vmlinux skb_icv_walk 0x48417e02 +vmlinux skb_insert 0xab2d7745 +vmlinux skb_make_writable 0x2dc08ea6 +vmlinux skb_over_panic 0x88baf46f +vmlinux skb_pad 0x25662ddf +vmlinux skb_prepare_seq_read 0x15e6082a +vmlinux skb_queue_head 0xe944fd16 +vmlinux skb_queue_purge 0xb20ae5fb +vmlinux skb_queue_tail 0x4ecc18ab +vmlinux skb_realloc_headroom 0x7babb5bc +vmlinux skb_recv_datagram 0x017389c0 +vmlinux skb_seq_read 0x493e1b9f +vmlinux skb_split 0xfbd73bb6 +vmlinux skb_store_bits 0xc2e36323 +vmlinux skb_to_sgvec 0xbdba6978 +vmlinux skb_under_panic 0x714c01f8 +vmlinux skb_unlink 0x3a588b5b +vmlinux sleep_on 0x1ba11f45 +vmlinux sleep_on_timeout 0xda500239 +vmlinux smp_call_function 0x0014bfd1 +vmlinux snprintf 0xaf25400d +vmlinux sock_alloc_send_skb 0xc0389843 +vmlinux sock_common_getsockopt 0x2a63582e +vmlinux sock_common_recvmsg 0xb13f2d22 +vmlinux sock_common_setsockopt 0xb2b53dd1 +vmlinux sock_create 0xec7cd863 +vmlinux sock_create_kern 0x39c73332 +vmlinux sock_create_lite 0xae43c961 +vmlinux sock_enable_timestamp 0x568b069d +vmlinux sock_get_timestamp 0x3b4f683f +vmlinux sock_i_ino 0x4ae7986e +vmlinux sock_i_uid 0xc7bf31dc +vmlinux sock_init_data 0x140087dd +vmlinux sock_kfree_s 0xbc52e2e1 +vmlinux sock_kmalloc 0x06bb70e7 +vmlinux sock_map_fd 0xd7b1195f +vmlinux sock_no_accept 0xd41b06d5 +vmlinux sock_no_bind 0x56532008 +vmlinux sock_no_connect 0x2f0dfd23 +vmlinux sock_no_getname 0xcb3239f7 +vmlinux sock_no_getsockopt 0xe02d335d +vmlinux sock_no_ioctl 0x7bebc770 +vmlinux sock_no_listen 0xdd2e4762 +vmlinux sock_no_mmap 0x58a47490 +vmlinux sock_no_poll 0x57b8d29d +vmlinux sock_no_recvmsg 0xb931d19d +vmlinux sock_no_sendmsg 0xcbcca436 +vmlinux sock_no_sendpage 0x0b6c23fa +vmlinux sock_no_setsockopt 0xcff99dc7 +vmlinux sock_no_shutdown 0x14ff0627 +vmlinux sock_no_socketpair 0x96c828b1 +vmlinux sock_recvmsg 0x1ceea2c8 +vmlinux sock_register 0x7df45fa0 +vmlinux sock_release 0xb67be890 +vmlinux sock_rfree 0x49940d34 +vmlinux sock_sendmsg 0x22c90b0c +vmlinux sock_setsockopt 0x98c2ddc8 +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0xf2c27fce +vmlinux sock_wfree 0xcbbbd8b8 +vmlinux sock_wmalloc 0x4b0abc18 +vmlinux sockfd_lookup 0x22a6d6d5 +vmlinux soft_cursor 0x6fc5a345 +vmlinux solaris_syscall 0x1eb7debc +vmlinux sort 0x9ca95a0e +vmlinux sparc32_open 0xd4c66be3 +vmlinux sparc64_get_clock_tick 0xcfe13710 +vmlinux sparc64_valid_addr_bitmap 0x4d481436 +vmlinux sparc_floppy_irq 0xce3fbbf6 +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux start_tty 0xda2825ea +vmlinux steal_locks 0x0af58d56 +vmlinux stop_a_enabled 0x66cae227 +vmlinux stop_tty 0x4605019a +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0xafe82e10 +vmlinux strlcat 0xb11fa1ce +vmlinux strlcpy 0x672144bd +vmlinux strlen 0xdcb5671d +vmlinux strncat 0x234509f3 +vmlinux strnchr 0x7242e96d +vmlinux strncmp 0x85abc85f +vmlinux strncpy 0x7ec9bfbc +vmlinux strnicmp 0x756e6992 +vmlinux strnlen 0xcc07af75 +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0x3fa913da +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0x6de614ef +vmlinux submit_bh 0x7153679e +vmlinux submit_bio 0x5584f44f +vmlinux subsys_create_file 0xdffe6d05 +vmlinux subsys_remove_file 0x255ea244 +vmlinux subsystem_init 0x6d697c89 +vmlinux subsystem_register 0x55a057ed +vmlinux subsystem_unregister 0xd33b71fa +vmlinux suid_dumpable 0xb694c524 +vmlinux sun_do_break 0xfec05366 +vmlinux suncore_mouse_baud_cflag_next 0xf6aeeb15 +vmlinux suncore_mouse_baud_detection 0x872bd087 +vmlinux sunos_sys_table 0xe5476ea6 +vmlinux sunserial_console_termios 0x781f52d7 +vmlinux sunserial_current_minor 0x2a8115cb +vmlinux svr4_getcontext 0x68576339 +vmlinux svr4_setcontext 0x9bfaed0a +vmlinux swap_io_context 0xa5b9cafa +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0xba535073 +vmlinux sync_dirty_buffer 0x75377efb +vmlinux sync_inode 0x1850fa82 +vmlinux sync_mapping_buffers 0xcb8b3213 +vmlinux sync_page_range 0xa23edcfc +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_call_table 0xd801b512 +vmlinux sys_call_table32 0x3f5533cb +vmlinux sys_close 0xdcb0349b +vmlinux sys_getegid 0xc00d230b +vmlinux sys_geteuid 0x1456309a +vmlinux sys_getgid 0xc3cb670e +vmlinux sys_getpid 0x0abfc78c +vmlinux sys_getppid 0xeb68d188 +vmlinux sys_getuid 0x1790749f +vmlinux sys_ioctl 0x208ce54a +vmlinux sys_open 0xe269ea1c +vmlinux sys_read 0x12703a3e +vmlinux sys_sigsuspend 0xde2a99c5 +vmlinux sys_tz 0xfe5d4bb2 +vmlinux syscall_trace 0xed5f03d8 +vmlinux sysctl_intvec 0x56783f0e +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0xb4995a9f +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0xb5eba1ec +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0xd89845ff +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x0ef6aae8 +vmlinux sysdev_class_unregister 0x119d81bb +vmlinux sysdev_create_file 0x93c6d87e +vmlinux sysdev_driver_register 0xc25164ef +vmlinux sysdev_driver_unregister 0x1f977863 +vmlinux sysdev_register 0xeb74e494 +vmlinux sysdev_remove_file 0xa1548e93 +vmlinux sysdev_unregister 0x4eb931f8 +vmlinux sysfs_chmod_file 0x2c76260b +vmlinux sysfs_create_bin_file 0x1cec4715 +vmlinux sysfs_create_dir 0x3afdc15e +vmlinux sysfs_create_file 0x839d265c +vmlinux sysfs_create_group 0x210af87f +vmlinux sysfs_create_link 0xf4ad6dc9 +vmlinux sysfs_remove_bin_file 0x330f7a06 +vmlinux sysfs_remove_dir 0x2b9742b2 +vmlinux sysfs_remove_file 0x8547f744 +vmlinux sysfs_remove_group 0x27020280 +vmlinux sysfs_remove_link 0xca8a038f +vmlinux sysfs_rename_dir 0x24c85ab4 +vmlinux sysfs_update_file 0xa38f04d1 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0x80fb57e5 +vmlinux task_in_intr 0xb4f4fd11 +vmlinux task_nice 0x9edbf8f2 +vmlinux task_no_data_intr 0x2ad7c802 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0xc308139d +vmlinux tc_classify 0x653692da +vmlinux tcf_em_register 0x5da8dc63 +vmlinux tcf_em_tree_destroy 0x53f562bf +vmlinux tcf_em_tree_dump 0x4bf76ec1 +vmlinux tcf_em_tree_validate 0x0846f204 +vmlinux tcf_em_unregister 0xd84b776f +vmlinux tcf_exts_change 0xb3f36a8b +vmlinux tcf_exts_destroy 0xa3515dce +vmlinux tcf_exts_dump 0x5f4d08af +vmlinux tcf_exts_dump_stats 0x728b2409 +vmlinux tcf_exts_validate 0xc325be73 +vmlinux tcf_police 0x6faaab27 +vmlinux tcf_police_destroy 0x686ba102 +vmlinux tcf_police_dump 0xa290b9bc +vmlinux tcf_police_dump_stats 0xc58ffac7 +vmlinux tcf_police_hash 0x8493d6e7 +vmlinux tcf_police_ht 0x78df642f +vmlinux tcf_police_locate 0x20a54ee5 +vmlinux tcf_police_lookup 0x1989610f +vmlinux tcf_police_new_index 0x7ae0f6c9 +vmlinux tcp_check_req 0xaa45923f +vmlinux tcp_child_process 0x2e966a80 +vmlinux tcp_close 0xe7d99953 +vmlinux tcp_connect 0xbcdf20d9 +vmlinux tcp_create_openreq_child 0xef34ebc5 +vmlinux tcp_death_row 0x7daddf78 +vmlinux tcp_disconnect 0x002fc581 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x82d4fdb5 +vmlinux tcp_getsockopt 0x8816c29d +vmlinux tcp_hashinfo 0xc747918d +vmlinux tcp_init_congestion_ops 0xfdb12109 +vmlinux tcp_init_xmit_timers 0x3ee027ae +vmlinux tcp_ioctl 0xc0c0c7d8 +vmlinux tcp_make_synack 0x2027c7be +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0x65fd539b +vmlinux tcp_poll 0xfd1d172a +vmlinux tcp_proc_register 0x18b83f48 +vmlinux tcp_proc_unregister 0x4199783f +vmlinux tcp_prot 0x275fe037 +vmlinux tcp_rcv_established 0xd2cee389 +vmlinux tcp_rcv_state_process 0x8ae6a2af +vmlinux tcp_read_sock 0xcdf6eeee +vmlinux tcp_recvmsg 0x8c443c7f +vmlinux tcp_register_congestion_control 0xd451843f +vmlinux tcp_reno_cong_avoid 0x14742e71 +vmlinux tcp_reno_min_cwnd 0x4fcf8fa9 +vmlinux tcp_reno_ssthresh 0xc11d1a81 +vmlinux tcp_sendmsg 0x96a018a9 +vmlinux tcp_sendpage 0x8732a315 +vmlinux tcp_setsockopt 0x7dadfe54 +vmlinux tcp_shutdown 0xd1db347b +vmlinux tcp_simple_retransmit 0x9d80b7cc +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0x7bd2a180 +vmlinux tcp_timewait_state_process 0xdd45e3ab +vmlinux tcp_unhash 0x87a6e79d +vmlinux tcp_unregister_congestion_control 0x276bd48e +vmlinux tcp_v4_conn_request 0x0d9b4422 +vmlinux tcp_v4_connect 0xe38d41da +vmlinux tcp_v4_destroy_sock 0x5a6ec507 +vmlinux tcp_v4_do_rcv 0x1984a9a5 +vmlinux tcp_v4_remember_stamp 0x7ec74943 +vmlinux tcp_v4_send_check 0x869b297c +vmlinux tcp_v4_syn_recv_sock 0x9568dd3f +vmlinux test_and_change_bit 0xc1ee17ca +vmlinux test_and_clear_bit 0xd49f1ef6 +vmlinux test_and_set_bit 0x950b0b51 +vmlinux test_clear_page_dirty 0x3b2a3af8 +vmlinux test_set_page_writeback 0x35e75452 +vmlinux textsearch_destroy 0x432fc774 +vmlinux textsearch_find_continuous 0x7ef892bf +vmlinux textsearch_prepare 0x38fec75f +vmlinux textsearch_register 0x834bd9c3 +vmlinux textsearch_unregister 0x9e755e0e +vmlinux thaw_bdev 0x5d821320 +vmlinux tick_ops 0xcf71a801 +vmlinux timespec_trunc 0xc045ad4e +vmlinux tl0_solaris 0x0d7c9bc5 +vmlinux tlb_type 0xa5e68673 +vmlinux totalram_pages 0xde9360ba +vmlinux transport_add_device 0x12d88948 +vmlinux transport_class_register 0x5943dbd7 +vmlinux transport_class_unregister 0x1020a800 +vmlinux transport_configure_device 0x7ad3e45b +vmlinux transport_destroy_device 0x73d92615 +vmlinux transport_remove_device 0xc4b87815 +vmlinux transport_setup_device 0x0797900d +vmlinux truncate_inode_pages 0xa9375278 +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0x250aee5b +vmlinux try_to_release_page 0xa0b6270b +vmlinux tty_check_change 0x687cc6a3 +vmlinux tty_flip_buffer_push 0x93cb051b +vmlinux tty_get_baud_rate 0xa912db8b +vmlinux tty_hangup 0x07756fbb +vmlinux tty_hung_up_p 0xe2d43612 +vmlinux tty_ldisc_deref 0xefe771ee +vmlinux tty_ldisc_flush 0x155278d1 +vmlinux tty_ldisc_get 0x6cd9a229 +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x6ea889cc +vmlinux tty_ldisc_ref_wait 0x6dc9d4c1 +vmlinux tty_name 0x3ead86ed +vmlinux tty_register_device 0x809b9ac5 +vmlinux tty_register_driver 0x9b9a22f6 +vmlinux tty_register_ldisc 0x023123b8 +vmlinux tty_set_operations 0xd059a99b +vmlinux tty_std_termios 0x5bafda46 +vmlinux tty_termios_baud_rate 0x451ecac6 +vmlinux tty_unregister_device 0x95ab1f86 +vmlinux tty_unregister_driver 0xf1deaf5b +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0x8b9296bf +vmlinux tty_wait_until_sent 0x2a1dfde7 +vmlinux tty_wakeup 0xbc4fe2e2 +vmlinux uart_add_one_port 0xa6739edf +vmlinux uart_get_baud_rate 0x65974580 +vmlinux uart_get_divisor 0xe1fa01fa +vmlinux uart_match_port 0xfad4025f +vmlinux uart_register_driver 0x39e2e23c +vmlinux uart_remove_one_port 0xae7a751f +vmlinux uart_resume_port 0xa99f8e7c +vmlinux uart_suspend_port 0xa503df1a +vmlinux uart_unregister_driver 0x58e53757 +vmlinux uart_update_timeout 0x1363367e +vmlinux uart_write_wakeup 0xf0687fec +vmlinux udp_disconnect 0xd1524d9f +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0xbe485f4e +vmlinux udp_ioctl 0x35a42119 +vmlinux udp_poll 0xb59fe80c +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x21ce1446 +vmlinux udp_proc_unregister 0x9f183278 +vmlinux udp_prot 0x3ae1fd6d +vmlinux udp_sendmsg 0x260e5030 +vmlinux uhci_check_and_reset_hc 0xd1b4294e +vmlinux uhci_reset_hc 0x013c7db5 +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unload_nls 0xf39a6111 +vmlinux unlock_buffer 0xbab54ab5 +vmlinux unlock_kernel 0xb1f975aa +vmlinux unlock_new_inode 0xf99faa03 +vmlinux unlock_page 0xa8ae5c68 +vmlinux unlock_rename 0xd34cf95f +vmlinux unmap_mapping_range 0x4b6f5ea2 +vmlinux unmap_underlying_metadata 0x8e60faa8 +vmlinux unregister_binfmt 0x2d7cf18e +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0x35a011fc +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_exec_domain 0x7b718505 +vmlinux unregister_filesystem 0xe532efd4 +vmlinux unregister_framebuffer 0x166ca8c4 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0xbe06edcd +vmlinux unregister_netdevice 0x90b151f9 +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0x492b54a4 +vmlinux unregister_qdisc 0xbf7e4296 +vmlinux unregister_quota_format 0x9028597a +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0x689d2cb0 +vmlinux unregister_sysctl_table 0x441cf60f +vmlinux unregister_tcf_proto_ops 0x7ce66137 +vmlinux unregister_wlandev 0x5a306826 +vmlinux unshare_files 0x04a20170 +vmlinux up 0xa76635a0 +vmlinux update_atime 0x8b182caf +vmlinux update_region 0x27a1ac6a +vmlinux usb_add_hcd 0x2ef05284 +vmlinux usb_alloc_dev 0x55eddef3 +vmlinux usb_alloc_urb 0x81ef129a +vmlinux usb_altnum_to_altsetting 0x64677bf2 +vmlinux usb_buffer_alloc 0xd787aafe +vmlinux usb_buffer_free 0x92e2ca6c +vmlinux usb_buffer_map_sg 0x294d5a94 +vmlinux usb_buffer_unmap_sg 0x1a451e40 +vmlinux usb_bulk_msg 0x631b28b3 +vmlinux usb_bus_list 0xace5c0fc +vmlinux usb_bus_list_lock 0x7977a70d +vmlinux usb_calc_bus_time 0x7e64181d +vmlinux usb_check_bandwidth 0xec09f9e9 +vmlinux usb_claim_bandwidth 0xc1483f79 +vmlinux usb_clear_halt 0x4c477155 +vmlinux usb_control_msg 0x8682ecaa +vmlinux usb_create_hcd 0xf2ed4f1e +vmlinux usb_deregister 0xb97b4858 +vmlinux usb_deregister_dev 0x06d5e331 +vmlinux usb_disabled 0x19a304ba +vmlinux usb_disconnect 0xd969df75 +vmlinux usb_driver_claim_interface 0x69786822 +vmlinux usb_driver_release_interface 0x4a1203ef +vmlinux usb_find_device 0x886c4729 +vmlinux usb_find_interface 0x0c026dee +vmlinux usb_free_urb 0xba9926cb +vmlinux usb_get_current_frame_number 0x20afbdae +vmlinux usb_get_descriptor 0x62a62104 +vmlinux usb_get_dev 0xf4222f81 +vmlinux usb_get_intf 0x8390b66d +vmlinux usb_get_status 0x2d96f995 +vmlinux usb_get_string 0xe49f7811 +vmlinux usb_get_urb 0x75c64708 +vmlinux usb_hc_died 0x2fb51cac +vmlinux usb_hcd_giveback_urb 0x0b35d87c +vmlinux usb_hcd_pci_probe 0x2d64e49c +vmlinux usb_hcd_pci_remove 0x1b463c40 +vmlinux usb_hcd_poll_rh_status 0x2e753b97 +vmlinux usb_hub_tt_clear_buffer 0xab8bc429 +vmlinux usb_ifnum_to_if 0xa5271ad9 +vmlinux usb_init_urb 0xe8150a73 +vmlinux usb_kill_urb 0xbce5a733 +vmlinux usb_lock_device 0xf5b4fc38 +vmlinux usb_lock_device_for_reset 0x9bb17797 +vmlinux usb_match_id 0x052956a5 +vmlinux usb_mon_deregister 0xfed11ed1 +vmlinux usb_mon_register 0xc57279a9 +vmlinux usb_put_dev 0xcafae311 +vmlinux usb_put_hcd 0xde3006d1 +vmlinux usb_put_intf 0xff1b97d8 +vmlinux usb_register 0x9d8d1de4 +vmlinux usb_register_dev 0xf9511763 +vmlinux usb_register_notify 0x3be89d3c +vmlinux usb_release_bandwidth 0x3852cd39 +vmlinux usb_remove_hcd 0xc4b6c102 +vmlinux usb_reset_configuration 0x91a5720b +vmlinux usb_reset_device 0x4a04cd9a +vmlinux usb_set_device_state 0x4e6c1db6 +vmlinux usb_set_interface 0xd604be55 +vmlinux usb_sg_cancel 0xe60a97e2 +vmlinux usb_sg_init 0x2e3429df +vmlinux usb_sg_wait 0xe0bc0194 +vmlinux usb_string 0x7837ccca +vmlinux usb_submit_urb 0x16443645 +vmlinux usb_trylock_device 0xaf804cf6 +vmlinux usb_unlink_urb 0x89031d98 +vmlinux usb_unlock_device 0x9bf25988 +vmlinux usb_unregister_notify 0xe9587909 +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0x907a665d +vmlinux vc_cons 0x733595b5 +vmlinux vc_resize 0xdff0c845 +vmlinux verify_compat_iovec 0x0f265553 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0x4b307d7a +vmlinux vfs_follow_link 0x880e939b +vmlinux vfs_fstat 0x2a0837e6 +vmlinux vfs_get_dqblk 0xe4fa9ecc +vmlinux vfs_get_dqinfo 0x8e90ae0f +vmlinux vfs_getattr 0xe2d19506 +vmlinux vfs_link 0x3f15a582 +vmlinux vfs_llseek 0x16ad38f4 +vmlinux vfs_lstat 0x12344839 +vmlinux vfs_mkdir 0xe112b909 +vmlinux vfs_mknod 0x225547c2 +vmlinux vfs_permission 0x56dad7d9 +vmlinux vfs_quota_off 0xd4e8c80d +vmlinux vfs_quota_on 0x14ecd29c +vmlinux vfs_quota_on_mount 0x59cdee45 +vmlinux vfs_quota_sync 0xa7e20a87 +vmlinux vfs_read 0xea4606c1 +vmlinux vfs_readdir 0x03eeb5dc +vmlinux vfs_readlink 0x00cbbf22 +vmlinux vfs_readv 0xfcb79944 +vmlinux vfs_rename 0x7a4fc1df +vmlinux vfs_rmdir 0x4cfa3fec +vmlinux vfs_set_dqblk 0x3c791686 +vmlinux vfs_set_dqinfo 0x67bf9aae +vmlinux vfs_stat 0x787feff6 +vmlinux vfs_statfs 0x42df75c3 +vmlinux vfs_symlink 0xebeac5eb +vmlinux vfs_unlink 0x68d84605 +vmlinux vfs_write 0x3f8e68a4 +vmlinux vfs_writev 0xfa4058d0 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x2266111f +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0x9ca666c2 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0x1bf00f82 +vmlinux vmtruncate 0x82252e0c +vmlinux vprintk 0x777a8e29 +vmlinux vscnprintf 0xf3522c9c +vmlinux vsnprintf 0x0e57f111 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0x5b0e981b +vmlinux wait_for_completion_interruptible 0x6a38532b +vmlinux wait_for_completion_interruptible_timeout 0x5a634dce +vmlinux wait_for_completion_timeout 0x23577023 +vmlinux wait_on_page_bit 0x304cf6a2 +vmlinux wait_on_sync_kiocb 0xf4ab1aad +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0xdac8fb0a +vmlinux wireless_send_event 0xdcd8c838 +vmlinux wireless_spy_update 0x87e70d65 +vmlinux wlan_setup 0x17da6e03 +vmlinux wlan_unsetup 0x92d48c3c +vmlinux write_inode_now 0x39c39259 +vmlinux write_one_page 0xb2348df0 +vmlinux xfrm4_rcv 0xc2cb462c +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0x4914f540 +vmlinux xfrm_bundle_ok 0x130356d1 +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0x4333a499 +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0xa3293ea8 +vmlinux xfrm_dst_lookup 0xb15b86fc +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0x5525eff7 +vmlinux xfrm_find_acq_byseq 0x1197cfe2 +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0xb5069427 +vmlinux xfrm_init_state 0x548dbbf1 +vmlinux xfrm_lookup 0xeb66ca54 +vmlinux xfrm_parse_spi 0xbaca6159 +vmlinux xfrm_policy_alloc 0x9927ae05 +vmlinux xfrm_policy_byid 0x908bbf02 +vmlinux xfrm_policy_bysel 0xc8bd2977 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x89b73f66 +vmlinux xfrm_policy_list 0xa9cbbc61 +vmlinux xfrm_policy_register_afinfo 0x1a7be573 +vmlinux xfrm_policy_unregister_afinfo 0x5fbf752f +vmlinux xfrm_policy_walk 0x79bcfe46 +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0x2c85f5f3 +vmlinux xfrm_register_type 0x1e956d5a +vmlinux xfrm_replay_advance 0x4e36c1db +vmlinux xfrm_replay_check 0xb89084ef +vmlinux xfrm_state_add 0x75b4036f +vmlinux xfrm_state_alloc 0x226cd380 +vmlinux xfrm_state_check 0x48755ada +vmlinux xfrm_state_check_expire 0x9a4a0ebe +vmlinux xfrm_state_delete 0xff8d6982 +vmlinux xfrm_state_delete_tunnel 0x3a2c0897 +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0x50a923c6 +vmlinux xfrm_state_lookup 0xd63fc351 +vmlinux xfrm_state_mtu 0x2c90b3a7 +vmlinux xfrm_state_register_afinfo 0x7a66847e +vmlinux xfrm_state_unregister_afinfo 0x787e6f3b +vmlinux xfrm_state_update 0x2c961074 +vmlinux xfrm_state_walk 0x4d5d14ad +vmlinux xfrm_unregister_km 0xb8b467e9 +vmlinux xfrm_unregister_type 0x85de2acc +vmlinux xfrm_user_policy 0x8486dc51 +vmlinux xor_niagara_2 0x031ee678 +vmlinux xor_niagara_3 0x27b81daa +vmlinux xor_niagara_4 0xfe78010d +vmlinux xor_niagara_5 0x6de375c1 +vmlinux xor_vis_2 0xde589e60 +vmlinux xor_vis_3 0xdd1197c8 +vmlinux xor_vis_4 0x2daa7939 +vmlinux xor_vis_5 0x556db901 +vmlinux xrlim_allow 0x2a34192b +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xd8c1f8af +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x3e7ae15d +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0x827d6aaf --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/sparc/sparc64 +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/sparc/sparc64 @@ -0,0 +1,4305 @@ +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0x7c7bccce +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0x5a358c63 +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0x8fd87408 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xfdd59660 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/cdrom/cdrom cdrom_get_last_written 0xde091e38 +drivers/cdrom/cdrom cdrom_get_media_event 0x6ae8a36d +drivers/cdrom/cdrom cdrom_ioctl 0x80fb7f90 +drivers/cdrom/cdrom cdrom_media_changed 0x71d00520 +drivers/cdrom/cdrom cdrom_mode_select 0x8897947b +drivers/cdrom/cdrom cdrom_mode_sense 0x08c72091 +drivers/cdrom/cdrom cdrom_number_of_slots 0x3b56e782 +drivers/cdrom/cdrom cdrom_open 0xbf59e02b +drivers/cdrom/cdrom cdrom_release 0x16be6d1c +drivers/cdrom/cdrom init_cdrom_command 0x344adbd5 +drivers/cdrom/cdrom register_cdrom 0x64cdcd5f +drivers/cdrom/cdrom unregister_cdrom 0xd62a905c +drivers/char/generic_serial gs_block_til_ready 0x474d31f7 +drivers/char/generic_serial gs_chars_in_buffer 0x611a9a0f +drivers/char/generic_serial gs_close 0x86a83eef +drivers/char/generic_serial gs_flush_buffer 0x67d5693d +drivers/char/generic_serial gs_flush_chars 0xa611711f +drivers/char/generic_serial gs_getserial 0x0e92138d +drivers/char/generic_serial gs_got_break 0x5fdafef5 +drivers/char/generic_serial gs_hangup 0x3e46fba5 +drivers/char/generic_serial gs_init_port 0xee3efedc +drivers/char/generic_serial gs_put_char 0x2c6eb7f9 +drivers/char/generic_serial gs_set_termios 0x3aed437e +drivers/char/generic_serial gs_setserial 0xe70e1468 +drivers/char/generic_serial gs_start 0xcbc203c8 +drivers/char/generic_serial gs_stop 0xfdaa3bd2 +drivers/char/generic_serial gs_write 0x7e4a8858 +drivers/char/generic_serial gs_write_room 0x32022a4f +drivers/char/ip2main ip2_loadmain 0x5f735f69 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0x1098914a +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0xd1a5c3a0 +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0x8c7cdf06 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0xaf9f94f7 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0x4bd82d33 +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0x216a50d6 +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0xd4190c12 +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0x4014e815 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0x0dd740cf +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x71cdccc3 +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0xa8114046 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0x5b2b21d4 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0xd4261a06 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0x65b7c282 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0x305dc97e +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0x93fca849 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0x4284fa63 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0x0424a0d9 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0x40e1f1be +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0xe77c75a3 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0x3e522903 +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0xeaf343eb +drivers/char/tpm/tpm tpm_open 0x6f7915a3 +drivers/char/tpm/tpm tpm_pm_resume 0x4c1a4512 +drivers/char/tpm/tpm tpm_pm_suspend 0xa973dcf7 +drivers/char/tpm/tpm tpm_read 0x4a241b9a +drivers/char/tpm/tpm tpm_register_hardware 0xf4043dcd +drivers/char/tpm/tpm tpm_release 0x31dd3e40 +drivers/char/tpm/tpm tpm_remove_hardware 0xd8f24366 +drivers/char/tpm/tpm tpm_show_caps 0x966b1b82 +drivers/char/tpm/tpm tpm_show_pcrs 0x77e40112 +drivers/char/tpm/tpm tpm_show_pubek 0x5c503123 +drivers/char/tpm/tpm tpm_store_cancel 0x33d6e3bb +drivers/char/tpm/tpm tpm_write 0x8f8b32cc +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/fc4/fc4 fc_channels 0xcc86faba +drivers/fc4/fc4 fc_do_plogi 0x147fc17a +drivers/fc4/fc4 fc_do_prli 0x51ebe7d8 +drivers/fc4/fc4 fcp_init 0xc0faf90d +drivers/fc4/fc4 fcp_queue_empty 0x001f7228 +drivers/fc4/fc4 fcp_receive_solicited 0x60b2c8d9 +drivers/fc4/fc4 fcp_release 0xed3cda0a +drivers/fc4/fc4 fcp_scsi_abort 0x4f7fae1e +drivers/fc4/fc4 fcp_scsi_dev_reset 0x2375bdd0 +drivers/fc4/fc4 fcp_scsi_host_reset 0xa2549fb5 +drivers/fc4/fc4 fcp_scsi_queuecommand 0x02993cdf +drivers/fc4/fc4 fcp_state_change 0x4dfc8132 +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0x13246025 +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0x9bc12830 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0x3ab328de +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0xb25660cb +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0x0f2f225f +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0x409d850c +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0xdd3d903c +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x07d47ac9 +drivers/ieee1394/ieee1394 csr1212_read 0xbde3eb37 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x13725c58 +drivers/ieee1394/ieee1394 dma_prog_region_free 0xcdfc269f +drivers/ieee1394/ieee1394 dma_prog_region_init 0xbf2e077c +drivers/ieee1394/ieee1394 dma_region_alloc 0xb4396b4d +drivers/ieee1394/ieee1394 dma_region_free 0x176018bc +drivers/ieee1394/ieee1394 dma_region_init 0xeeb568e3 +drivers/ieee1394/ieee1394 dma_region_mmap 0x83e666d8 +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0x5ca92289 +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0x63c40b37 +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x17db6b0b +drivers/ieee1394/ieee1394 highlevel_host_reset 0x2adaa4a3 +drivers/ieee1394/ieee1394 hpsb_add_host 0x03b2dc7f +drivers/ieee1394/ieee1394 hpsb_alloc_host 0x49295e30 +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0x40eecb15 +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0xcd0c944b +drivers/ieee1394/ieee1394 hpsb_bus_reset 0xebe7d504 +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0xfcb30eda +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0x2366642f +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0x103a3930 +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0x50f9b89c +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0x84351199 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0x6f328507 +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0x19ff1c68 +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0x96c4a8c5 +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0x74afed81 +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0x614ba9cd +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0x1f7bfbbb +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0xc8418814 +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0x7a2134e7 +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0x69e994b8 +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0xb36bc537 +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0x0b1c7b1b +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0x3870d829 +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0x92b7cabb +drivers/ieee1394/ieee1394 hpsb_iso_stop 0x4d06aee5 +drivers/ieee1394/ieee1394 hpsb_iso_wake 0x1bf4e740 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0xbf95a706 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0x42b23474 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0x3094b618 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0xb56a0c72 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0x8d4d6384 +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0x4fca67cf +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0x770d4963 +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0x9b478bd6 +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0x154570b1 +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0xed52795d +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0xfd3bdb5c +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0x9abb4f6e +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0xf5cb5d58 +drivers/ieee1394/ieee1394 hpsb_node_write 0xade57a96 +drivers/ieee1394/ieee1394 hpsb_packet_received 0x77b5feaa +drivers/ieee1394/ieee1394 hpsb_packet_sent 0x299f243b +drivers/ieee1394/ieee1394 hpsb_packet_success 0xda0d50d7 +drivers/ieee1394/ieee1394 hpsb_protocol_class 0x6b4437e0 +drivers/ieee1394/ieee1394 hpsb_read 0x1ec723c0 +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0xb2418d64 +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0x136332bc +drivers/ieee1394/ieee1394 hpsb_register_protocol 0xd784ef5f +drivers/ieee1394/ieee1394 hpsb_remove_host 0x721da53e +drivers/ieee1394/ieee1394 hpsb_reset_bus 0x57702aa5 +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0x6b37b680 +drivers/ieee1394/ieee1394 hpsb_selfid_received 0x546076fd +drivers/ieee1394/ieee1394 hpsb_send_packet 0x4e034f39 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0x60fd0a84 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0xc249511d +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0x507d5ce7 +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0xa5fd27be +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0x2ddf1050 +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0x105c88cd +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0x2e429af2 +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0x40220f0c +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0xf6fb8717 +drivers/ieee1394/ieee1394 hpsb_write 0x704ed3cd +drivers/ieee1394/ieee1394 ieee1394_bus_type 0xbd06a7b4 +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0x1d5aeebc +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0x8ce6b1a8 +drivers/ieee1394/ohci1394 ohci1394_stop_context 0x401eb1d8 +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0xc6a79269 +drivers/infiniband/core/ib_cm ib_cm_establish 0xa6a80fb4 +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0x7e7cddfc +drivers/infiniband/core/ib_cm ib_cm_listen 0xce3cce08 +drivers/infiniband/core/ib_cm ib_create_cm_id 0x6d09f131 +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0x5fcfa0c2 +drivers/infiniband/core/ib_cm ib_send_cm_apr 0x47cd2425 +drivers/infiniband/core/ib_cm ib_send_cm_drep 0xdcaaf55d +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0x5726be85 +drivers/infiniband/core/ib_cm ib_send_cm_lap 0x0dcb6850 +drivers/infiniband/core/ib_cm ib_send_cm_mra 0x482ac47a +drivers/infiniband/core/ib_cm ib_send_cm_rej 0x3a26c167 +drivers/infiniband/core/ib_cm ib_send_cm_rep 0x993a76e0 +drivers/infiniband/core/ib_cm ib_send_cm_req 0xc43ff0cb +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0xcd68183e +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0xc07c60ff +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0x13adeef9 +drivers/infiniband/core/ib_core ib_alloc_device 0x64afcddd +drivers/infiniband/core/ib_core ib_alloc_fmr 0x9eca4472 +drivers/infiniband/core/ib_core ib_alloc_mw 0x5bdabc73 +drivers/infiniband/core/ib_core ib_alloc_pd 0xf6f028ef +drivers/infiniband/core/ib_core ib_attach_mcast 0xf71c5cdc +drivers/infiniband/core/ib_core ib_create_ah 0xf1c6884c +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0xffc1809a +drivers/infiniband/core/ib_core ib_create_cq 0xbf974160 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0xb7c8e45a +drivers/infiniband/core/ib_core ib_create_qp 0xb787f11f +drivers/infiniband/core/ib_core ib_create_srq 0xa119dded +drivers/infiniband/core/ib_core ib_dealloc_device 0x29295557 +drivers/infiniband/core/ib_core ib_dealloc_fmr 0x34fdc880 +drivers/infiniband/core/ib_core ib_dealloc_mw 0xa96668e3 +drivers/infiniband/core/ib_core ib_dealloc_pd 0xf7681ed6 +drivers/infiniband/core/ib_core ib_dereg_mr 0x00250db1 +drivers/infiniband/core/ib_core ib_destroy_ah 0x72187761 +drivers/infiniband/core/ib_core ib_destroy_cq 0x8d77a049 +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x62cbbfff +drivers/infiniband/core/ib_core ib_destroy_qp 0xf924745a +drivers/infiniband/core/ib_core ib_destroy_srq 0x3d625c51 +drivers/infiniband/core/ib_core ib_detach_mcast 0xde2e351d +drivers/infiniband/core/ib_core ib_dispatch_event 0x36483080 +drivers/infiniband/core/ib_core ib_find_cached_gid 0x8d8023ad +drivers/infiniband/core/ib_core ib_find_cached_pkey 0x696c7119 +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0x3da3ee89 +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0x808be1bf +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0x8c97cbfa +drivers/infiniband/core/ib_core ib_get_cached_gid 0x9e7ef1d8 +drivers/infiniband/core/ib_core ib_get_cached_pkey 0x952a4122 +drivers/infiniband/core/ib_core ib_get_client_data 0x2908aacf +drivers/infiniband/core/ib_core ib_get_dma_mr 0xac40c710 +drivers/infiniband/core/ib_core ib_modify_ah 0x7ae3cfd4 +drivers/infiniband/core/ib_core ib_modify_device 0x6b3653c8 +drivers/infiniband/core/ib_core ib_modify_port 0x665cbe29 +drivers/infiniband/core/ib_core ib_modify_qp 0x8cb4aa69 +drivers/infiniband/core/ib_core ib_modify_srq 0x8e1a359e +drivers/infiniband/core/ib_core ib_pack 0x06830b9a +drivers/infiniband/core/ib_core ib_query_ah 0xedfef46b +drivers/infiniband/core/ib_core ib_query_device 0x8eb9be7d +drivers/infiniband/core/ib_core ib_query_gid 0x828ad305 +drivers/infiniband/core/ib_core ib_query_mr 0x0fb9511f +drivers/infiniband/core/ib_core ib_query_pkey 0x82b5515f +drivers/infiniband/core/ib_core ib_query_port 0x8c8143b1 +drivers/infiniband/core/ib_core ib_query_qp 0x81528c62 +drivers/infiniband/core/ib_core ib_query_srq 0xe06a3eaf +drivers/infiniband/core/ib_core ib_reg_phys_mr 0x856bdfb1 +drivers/infiniband/core/ib_core ib_register_client 0xabcd1c70 +drivers/infiniband/core/ib_core ib_register_device 0xeb79dd95 +drivers/infiniband/core/ib_core ib_register_event_handler 0x8315dd8c +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x4f609fdd +drivers/infiniband/core/ib_core ib_resize_cq 0xdde7776e +drivers/infiniband/core/ib_core ib_set_client_data 0x6f8cd846 +drivers/infiniband/core/ib_core ib_ud_header_init 0x78f1b190 +drivers/infiniband/core/ib_core ib_ud_header_pack 0xa925443e +drivers/infiniband/core/ib_core ib_ud_header_unpack 0xa7cc5de5 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xf96fc9de +drivers/infiniband/core/ib_core ib_unregister_client 0x2a197777 +drivers/infiniband/core/ib_core ib_unregister_device 0xb6d38bea +drivers/infiniband/core/ib_core ib_unregister_event_handler 0xaebc3a47 +drivers/infiniband/core/ib_mad ib_cancel_mad 0xd9eb262d +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0xe4f2bf9a +drivers/infiniband/core/ib_mad ib_create_send_mad 0xad6e3fbe +drivers/infiniband/core/ib_mad ib_free_recv_mad 0xa38bb8f6 +drivers/infiniband/core/ib_mad ib_free_send_mad 0xe79755a3 +drivers/infiniband/core/ib_mad ib_modify_mad 0x4feca3d9 +drivers/infiniband/core/ib_mad ib_post_send_mad 0x992122ce +drivers/infiniband/core/ib_mad ib_process_mad_wc 0x3f2a5f19 +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x5f77b261 +drivers/infiniband/core/ib_mad ib_register_mad_agent 0xd7cc6dfd +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0xe6d1ad5c +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0x8d24416b +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0xd03241f2 +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0xe98658fd +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0xdf71ebbf +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0x56e1c9cb +drivers/md/dm-mirror dm_create_dirty_log 0x3b557fd5 +drivers/md/dm-mirror dm_destroy_dirty_log 0x28b50b76 +drivers/md/dm-mirror dm_register_dirty_log_type 0x7af8644c +drivers/md/dm-mirror dm_unregister_dirty_log_type 0xe79ad3a8 +drivers/md/dm-mod dm_get_device 0x16b668aa +drivers/md/dm-mod dm_get_mapinfo 0x78ec79b4 +drivers/md/dm-mod dm_io_async 0xc1816dd0 +drivers/md/dm-mod dm_io_async_bvec 0x830c228f +drivers/md/dm-mod dm_io_async_vm 0x08ce597f +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0xc47ea034 +drivers/md/dm-mod dm_io_sync_bvec 0x3ab4d603 +drivers/md/dm-mod dm_io_sync_vm 0x9f3199c9 +drivers/md/dm-mod dm_put_device 0xe34ac5de +drivers/md/dm-mod dm_register_target 0x8809cc4d +drivers/md/dm-mod dm_table_event 0x62371278 +drivers/md/dm-mod dm_table_flush_all 0x89c72cd6 +drivers/md/dm-mod dm_table_get 0x18fa38cf +drivers/md/dm-mod dm_table_get_mode 0xe51d687a +drivers/md/dm-mod dm_table_get_size 0x8009923a +drivers/md/dm-mod dm_table_put 0xa87aceb2 +drivers/md/dm-mod dm_table_unplug_all 0xde954684 +drivers/md/dm-mod dm_unregister_target 0x0aae3717 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x0f78261c +drivers/md/dm-mod kcopyd_client_create 0xa65b27b7 +drivers/md/dm-mod kcopyd_client_destroy 0x3294d09f +drivers/md/dm-mod kcopyd_copy 0xbfadc5c8 +drivers/md/dm-multipath dm_pg_init_complete 0xe39168d9 +drivers/md/dm-multipath dm_register_hw_handler 0x6be0dc01 +drivers/md/dm-multipath dm_register_path_selector 0x0458ab07 +drivers/md/dm-multipath dm_scsi_err_handler 0x3e318e69 +drivers/md/dm-multipath dm_unregister_hw_handler 0x1b02aff1 +drivers/md/dm-multipath dm_unregister_path_selector 0x47792231 +drivers/md/md-mod bitmap_close_sync 0xc1d75417 +drivers/md/md-mod bitmap_daemon_work 0x32e30b0d +drivers/md/md-mod bitmap_end_sync 0x0a2bde84 +drivers/md/md-mod bitmap_endwrite 0x1080f2c1 +drivers/md/md-mod bitmap_start_sync 0xc882d412 +drivers/md/md-mod bitmap_startwrite 0x9f2cbfb8 +drivers/md/md-mod bitmap_unplug 0x24b39572 +drivers/md/md-mod md_check_recovery 0xbb7b749d +drivers/md/md-mod md_done_sync 0x023f34fc +drivers/md/md-mod md_error 0x11dcd5ab +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x33e82f7b +drivers/md/md-mod md_unregister_thread 0x94855b3c +drivers/md/md-mod md_wakeup_thread 0x4d40ec99 +drivers/md/md-mod md_write_end 0x9e03eb3b +drivers/md/md-mod md_write_start 0xec0d5e74 +drivers/md/md-mod register_md_personality 0x984ce281 +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x4740e7a3 +drivers/media/common/ir-common ir_codes_hauppauge_new 0x902a3cd2 +drivers/media/common/ir-common ir_codes_pinnacle 0xd3a0f048 +drivers/media/common/ir-common ir_codes_pixelview 0xfa177653 +drivers/media/common/ir-common ir_codes_rc5_tv 0xd9c7f010 +drivers/media/common/ir-common ir_codes_winfast 0x89cc1189 +drivers/media/common/ir-common ir_decode_biphase 0x43c89ef4 +drivers/media/common/ir-common ir_decode_pulsedistance 0x2456e513 +drivers/media/common/ir-common ir_dump_samples 0x6d6511e7 +drivers/media/common/ir-common ir_extract_bits 0x1cb148f5 +drivers/media/common/ir-common ir_input_init 0x63126ae8 +drivers/media/common/ir-common ir_input_keydown 0x60dceb74 +drivers/media/common/ir-common ir_input_nokey 0xe646e485 +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0xe17ab9f6 +drivers/media/video/btcx-risc btcx_riscmem_free 0xc25d8114 +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x357a7ad5 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0x0aad6747 +drivers/media/video/bttv bttv_gpio_bits 0x859fb5a3 +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0x0c333c28 +drivers/media/video/bttv bttv_gpio_read 0xfae4f930 +drivers/media/video/bttv bttv_gpio_write 0xf6ece91c +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0xec365bba +drivers/media/video/bttv bttv_sub_register 0xfdc5b349 +drivers/media/video/bttv bttv_sub_unregister 0x2af54c13 +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0x9558dcb6 +drivers/media/video/saa7134/saa7134 dmasound_exit 0x3b3df275 +drivers/media/video/saa7134/saa7134 dmasound_init 0x7a74f681 +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0x31dfd78b +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0xce0bc5d2 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0x48517882 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0x04fcf9d9 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0xf97da7ae +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0x4364b325 +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0x9e1ab401 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0x05848b9b +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0xe1f2dd61 +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0xbd140483 +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0x3327f752 +drivers/media/video/tveeprom tveeprom_read 0x3df7d3b6 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0x677e40b7 +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x9c7de443 +drivers/media/video/v4l2-common v4l2_prio_check 0x2f639468 +drivers/media/video/v4l2-common v4l2_prio_close 0x95284709 +drivers/media/video/v4l2-common v4l2_prio_init 0xbecd2858 +drivers/media/video/v4l2-common v4l2_prio_max 0x1dcaa0c8 +drivers/media/video/v4l2-common v4l2_prio_open 0x76ba9a9a +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0xea6b1ba9 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0x92f1c3d8 +drivers/media/video/video-buf videobuf_dma_init 0x8e403cbc +drivers/media/video/video-buf videobuf_dma_init_kernel 0x070fb1bb +drivers/media/video/video-buf videobuf_dma_init_overlay 0x49960339 +drivers/media/video/video-buf videobuf_dma_init_user 0x98355a82 +drivers/media/video/video-buf videobuf_dma_pci_map 0xce0764fc +drivers/media/video/video-buf videobuf_dma_pci_sync 0xd24d37e5 +drivers/media/video/video-buf videobuf_dma_pci_unmap 0xe226670b +drivers/media/video/video-buf videobuf_dqbuf 0x12fc022c +drivers/media/video/video-buf videobuf_iolock 0xbd66c3cc +drivers/media/video/video-buf videobuf_mmap_free 0xc80a1c5c +drivers/media/video/video-buf videobuf_mmap_mapper 0x608a98b5 +drivers/media/video/video-buf videobuf_mmap_setup 0xed04840c +drivers/media/video/video-buf videobuf_next_field 0x98af9141 +drivers/media/video/video-buf videobuf_poll_stream 0xb3b07a36 +drivers/media/video/video-buf videobuf_qbuf 0x32a1e664 +drivers/media/video/video-buf videobuf_querybuf 0xd526ded6 +drivers/media/video/video-buf videobuf_queue_cancel 0x4ee83a65 +drivers/media/video/video-buf videobuf_queue_init 0x3f6ed8ed +drivers/media/video/video-buf videobuf_queue_is_busy 0x02294a26 +drivers/media/video/video-buf videobuf_read_one 0x0f2057df +drivers/media/video/video-buf videobuf_read_start 0x86b3dd34 +drivers/media/video/video-buf videobuf_read_stop 0xe532bb2a +drivers/media/video/video-buf videobuf_read_stream 0xe9ad8351 +drivers/media/video/video-buf videobuf_reqbufs 0xbfade4d8 +drivers/media/video/video-buf videobuf_status 0x2c33a84e +drivers/media/video/video-buf videobuf_streamoff 0x4fd0ec22 +drivers/media/video/video-buf videobuf_streamon 0x1acfbd25 +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0x125cf591 +drivers/media/video/video-buf videobuf_waiton 0xee21d26a +drivers/media/video/videodev video_devdata 0xf2b205e8 +drivers/media/video/videodev video_device_alloc 0x64b54e0c +drivers/media/video/videodev video_device_release 0x485355b9 +drivers/media/video/videodev video_exclusive_open 0x1b12fde2 +drivers/media/video/videodev video_exclusive_release 0x0c4218f7 +drivers/media/video/videodev video_register_device 0x21766df7 +drivers/media/video/videodev video_unregister_device 0xb46596d4 +drivers/media/video/videodev video_usercopy 0x6a0fa9b6 +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0x4fb0ba90 +drivers/message/fusion/mptbase mpt_HardResetHandler 0x48d71bb9 +drivers/message/fusion/mptbase mpt_add_sge 0x375d8126 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0x908cab4d +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0xcad32978 +drivers/message/fusion/mptbase mpt_attach 0xf65cb0de +drivers/message/fusion/mptbase mpt_config 0x7a0cdd5c +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0xa191303f +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0xbbae6239 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x82b5ff81 +drivers/message/fusion/mptbase mpt_findImVolumes 0x4fa42451 +drivers/message/fusion/mptbase mpt_free_fw_memory 0x19c4dd5f +drivers/message/fusion/mptbase mpt_free_msg_frame 0x6a55c01d +drivers/message/fusion/mptbase mpt_get_msg_frame 0xceb7420f +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0x832b85f6 +drivers/message/fusion/mptbase mpt_proc_root_dir 0x7019a7d7 +drivers/message/fusion/mptbase mpt_put_msg_frame 0xced812f8 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0xc68f2d68 +drivers/message/fusion/mptbase mpt_register 0x06194d44 +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x71c587eb +drivers/message/fusion/mptbase mpt_send_handshake_request 0xfa9a5300 +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_toolbox 0x85e7b5d5 +drivers/message/fusion/mptbase mpt_verify_adapter 0xb3596d16 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0xaae59147 +drivers/message/fusion/mptscsih mptscsih_abort 0xc6198c61 +drivers/message/fusion/mptscsih mptscsih_bios_param 0xa9ca13fa +drivers/message/fusion/mptscsih mptscsih_bus_reset 0xb4ca2962 +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x5f465c56 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0x9c7f4955 +drivers/message/fusion/mptscsih mptscsih_event_process 0xc69117db +drivers/message/fusion/mptscsih mptscsih_host_reset 0xf91396c8 +drivers/message/fusion/mptscsih mptscsih_info 0x4e324792 +drivers/message/fusion/mptscsih mptscsih_io_done 0x84c6df65 +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x853241e0 +drivers/message/fusion/mptscsih mptscsih_proc_info 0x1a26266b +drivers/message/fusion/mptscsih mptscsih_qcmd 0xca57fd5b +drivers/message/fusion/mptscsih mptscsih_remove 0x9bf589b3 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0xe0249be0 +drivers/message/fusion/mptscsih mptscsih_shutdown 0xe06b7ec1 +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0xd1a8a474 +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x413fd446 +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x28d91f15 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x5b6cb7b9 +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_cntxt_list_add 0x95bf8602 +drivers/message/i2o/i2o_core i2o_cntxt_list_get 0x9281709f +drivers/message/i2o/i2o_core i2o_cntxt_list_get_ptr 0xe92c51a1 +drivers/message/i2o/i2o_core i2o_cntxt_list_remove 0x023f6218 +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0x2e02cdf2 +drivers/message/i2o/i2o_core i2o_device_claim_release 0xfd3d3143 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0x48cf3615 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0xa9bf7388 +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x6b1b8e8c +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0xb0273389 +drivers/message/i2o/i2o_core i2o_driver_register 0xc4750ccd +drivers/message/i2o/i2o_core i2o_driver_unregister 0x7c974b14 +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0x084c3818 +drivers/message/i2o/i2o_core i2o_exec_lct_get 0xff6df843 +drivers/message/i2o/i2o_core i2o_find_iop 0xef9069c0 +drivers/message/i2o/i2o_core i2o_iop_find_device 0x53e04fef +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x15f5b253 +drivers/message/i2o/i2o_core i2o_msg_nop 0x22a1a3c8 +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0xaba621c3 +drivers/message/i2o/i2o_core i2o_parm_field_get 0x807b490d +drivers/message/i2o/i2o_core i2o_parm_issue 0x7048fc51 +drivers/message/i2o/i2o_core i2o_parm_table_get 0x63a59a15 +drivers/message/i2o/i2o_core i2o_status_get 0xdebaf1b9 +drivers/mmc/mmc_core __mmc_claim_host 0x8f174d5a +drivers/mmc/mmc_core mmc_add_host 0x83efa760 +drivers/mmc/mmc_core mmc_alloc_host 0xf1a91a3f +drivers/mmc/mmc_core mmc_cleanup_queue 0x4a75880f +drivers/mmc/mmc_core mmc_detect_change 0xcfc12315 +drivers/mmc/mmc_core mmc_free_host 0x526ddf7c +drivers/mmc/mmc_core mmc_init_queue 0xa0f1376b +drivers/mmc/mmc_core mmc_queue_resume 0xbb20ade3 +drivers/mmc/mmc_core mmc_queue_suspend 0x34f6af12 +drivers/mmc/mmc_core mmc_register_driver 0x2d4df086 +drivers/mmc/mmc_core mmc_release_host 0x9d7d111b +drivers/mmc/mmc_core mmc_remove_host 0x16e3baaf +drivers/mmc/mmc_core mmc_request_done 0xb7681c52 +drivers/mmc/mmc_core mmc_start_request 0xe81ebd50 +drivers/mmc/mmc_core mmc_unregister_driver 0xa13a624b +drivers/mmc/mmc_core mmc_wait_for_app_cmd 0x3729cb7e +drivers/mmc/mmc_core mmc_wait_for_cmd 0x68ac29d2 +drivers/mmc/mmc_core mmc_wait_for_req 0xadb0c024 +drivers/net/8390 NS8390_init 0x507b6b09 +drivers/net/8390 __alloc_ei_netdev 0x728f1b40 +drivers/net/8390 ei_close 0xfe024445 +drivers/net/8390 ei_interrupt 0x9be3b971 +drivers/net/8390 ei_open 0x170d4b70 +drivers/net/8390 ei_poll 0x8eda1368 +drivers/net/mii generic_mii_ioctl 0x4d10d379 +drivers/net/mii mii_check_gmii_support 0x79ca78a1 +drivers/net/mii mii_check_link 0x6c7dcae9 +drivers/net/mii mii_check_media 0xf44bb5dc +drivers/net/mii mii_ethtool_gset 0x46fd504e +drivers/net/mii mii_ethtool_sset 0x245f76ef +drivers/net/mii mii_link_ok 0x6a3b1497 +drivers/net/mii mii_nway_restart 0x148eaa7d +drivers/net/phy/libphy genphy_config_advert 0xe44523c6 +drivers/net/phy/libphy genphy_config_aneg 0xbfff1d07 +drivers/net/phy/libphy genphy_read_status 0xdb050d28 +drivers/net/phy/libphy mdiobus_register 0xd43fcd2e +drivers/net/phy/libphy mdiobus_unregister 0x7cd6ea7f +drivers/net/phy/libphy phy_attach 0x85d5b719 +drivers/net/phy/libphy phy_connect 0x31e08b92 +drivers/net/phy/libphy phy_detach 0x46a98494 +drivers/net/phy/libphy phy_disable_interrupts 0x6486de10 +drivers/net/phy/libphy phy_disconnect 0x154375d4 +drivers/net/phy/libphy phy_driver_register 0x3715e7cf +drivers/net/phy/libphy phy_driver_unregister 0xca788e91 +drivers/net/phy/libphy phy_enable_interrupts 0xd1514c4c +drivers/net/phy/libphy phy_print_status 0xed60ed3e +drivers/net/phy/libphy phy_read 0xafec2074 +drivers/net/phy/libphy phy_sanitize_settings 0xc42fa13b +drivers/net/phy/libphy phy_start 0x5e71455c +drivers/net/phy/libphy phy_start_aneg 0x1a37d3da +drivers/net/phy/libphy phy_start_interrupts 0x93db8903 +drivers/net/phy/libphy phy_stop 0xec6758df +drivers/net/phy/libphy phy_stop_interrupts 0xdcf280b8 +drivers/net/phy/libphy phy_write 0xe9448e0e +drivers/net/ppp_generic ppp_channel_index 0xfbb5f1a8 +drivers/net/ppp_generic ppp_input 0xfe06ac1e +drivers/net/ppp_generic ppp_input_error 0x45adf829 +drivers/net/ppp_generic ppp_output_wakeup 0xcc98e109 +drivers/net/ppp_generic ppp_register_channel 0xca45e14a +drivers/net/ppp_generic ppp_register_compressor 0x1ee239ea +drivers/net/ppp_generic ppp_unit_number 0x32650634 +drivers/net/ppp_generic ppp_unregister_channel 0x0c19b790 +drivers/net/ppp_generic ppp_unregister_compressor 0xd0b09055 +drivers/net/pppox pppox_unbind_sock 0xffec909a +drivers/net/pppox register_pppox_proto 0xc15ba643 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x6a47fcc2 +drivers/net/slhc slhc_free 0xeb3c59ef +drivers/net/slhc slhc_init 0x86de1d74 +drivers/net/slhc slhc_remember 0x9536b7c2 +drivers/net/slhc slhc_toss 0x3b36a20a +drivers/net/slhc slhc_uncompress 0xa532de34 +drivers/net/wireless/atmel atmel_open 0xfe6470df +drivers/net/wireless/atmel init_atmel_card 0xc3f3bffe +drivers/net/wireless/atmel stop_atmel_card 0x16d529db +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0xe3d1043f +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0x7ea480f8 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0x65c677a1 +drivers/net/wireless/hostap/hostap hostap_add_interface 0xeecfc129 +drivers/net/wireless/hostap/hostap hostap_add_sta 0xae18da38 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0xd4587181 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0x0b73abff +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0xd8891303 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0x510ef7cb +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0x8efa001b +drivers/net/wireless/hostap/hostap hostap_get_porttype 0x534046fc +drivers/net/wireless/hostap/hostap hostap_get_stats 0xe32655fe +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0xec8d0214 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0xe180043b +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x8aba7e9d +drivers/net/wireless/hostap/hostap hostap_info_init 0x31fdef75 +drivers/net/wireless/hostap/hostap hostap_info_process 0xc21ed010 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0x34bc3cd0 +drivers/net/wireless/hostap/hostap hostap_init_data 0xe140f07b +drivers/net/wireless/hostap/hostap hostap_init_proc 0x84a96b90 +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0xcdd4318f +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0xd6c2ca03 +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0x069fcb42 +drivers/net/wireless/hostap/hostap hostap_proc 0x724e1149 +drivers/net/wireless/hostap/hostap hostap_remove_interface 0xfd3dd94a +drivers/net/wireless/hostap/hostap hostap_remove_proc 0x390b2bad +drivers/net/wireless/hostap/hostap hostap_set_antsel 0xf845efb8 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0x327b73fa +drivers/net/wireless/hostap/hostap hostap_set_encryption 0xc572ce88 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x83678b69 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0xbbef2885 +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0x42a1c208 +drivers/net/wireless/hostap/hostap hostap_set_string 0x92f2db54 +drivers/net/wireless/hostap/hostap hostap_set_word 0xe7f90257 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0x2e755dd5 +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0xe069249a +drivers/net/wireless/hostap/hostap hostap_update_rates 0x04003a7f +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0xbfc813e2 +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x35b24577 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x83a54623 +drivers/net/wireless/orinoco __orinoco_down 0x0f6855a3 +drivers/net/wireless/orinoco __orinoco_up 0xbcef3bfb +drivers/net/wireless/orinoco alloc_orinocodev 0x353150f9 +drivers/net/wireless/orinoco free_orinocodev 0x20f6ca23 +drivers/net/wireless/orinoco orinoco_interrupt 0x0178e1ea +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x463c5de7 +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0x2bde89c3 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x2a5911c0 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0x0b628437 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0xfc8ee83f +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0x63544819 +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x216e5fb1 +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0x48771a49 +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0xacf20842 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0x42b66440 +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x9666a144 +drivers/net/wireless/prism54_softmac/islsm register_islsm 0xfafda5a8 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0xa11b4aef +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0x21e76f64 +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0xbab4ddc7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0x67b96cdd +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0x44a4fc14 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0x80354010 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x2e1fa0b8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0x2d14b4fe +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0xd8620e83 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0x8abcf2a6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xcd7581f9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0x360c4d96 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0xbc0fa808 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x031c1980 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0x581c6a84 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0x87d15ce7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0x60b3dd28 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0x5f91c32f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0xe9267d40 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0xdaa3cff0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0xe71f2cd8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0x94911236 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0x7e8e6bc5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0xb3f82ecb +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0xcb5e9aba +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x5b556aae +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0x3d11008a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x430dd966 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x849dbff6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0x822a3685 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0x52d8bed9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0x2dc0f8c0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x7ded2d10 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0xbfb9decd +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0x0dc3872d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0x6b87ed09 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0xf07afb81 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0xd4bcdb06 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0x81c81159 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x044e535a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x08e958f5 +drivers/parport/parport parport_announce_port 0xc0f03d6c +drivers/parport/parport parport_claim 0xdd1c9b25 +drivers/parport/parport parport_claim_or_block 0x63f882c6 +drivers/parport/parport parport_find_base 0x23b688bc +drivers/parport/parport parport_find_number 0x63e49d9a +drivers/parport/parport parport_get_port 0x125171d5 +drivers/parport/parport parport_ieee1284_ecp_read_data 0xe9992684 +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xe1f4bd4f +drivers/parport/parport parport_ieee1284_ecp_write_data 0x760abb71 +drivers/parport/parport parport_ieee1284_epp_read_addr 0x3994d2b3 +drivers/parport/parport parport_ieee1284_epp_read_data 0x0aeeda37 +drivers/parport/parport parport_ieee1284_epp_write_addr 0x1d01e319 +drivers/parport/parport parport_ieee1284_epp_write_data 0x8affe527 +drivers/parport/parport parport_ieee1284_interrupt 0x3deb08f4 +drivers/parport/parport parport_ieee1284_read_byte 0xd5567791 +drivers/parport/parport parport_ieee1284_read_nibble 0xd043a35c +drivers/parport/parport parport_ieee1284_write_compat 0x696012fc +drivers/parport/parport parport_negotiate 0x07eddcdd +drivers/parport/parport parport_put_port 0xdb981268 +drivers/parport/parport parport_read 0x09c302fd +drivers/parport/parport parport_register_device 0x9fa1e1e7 +drivers/parport/parport parport_register_driver 0x76eba135 +drivers/parport/parport parport_register_port 0xe78e822c +drivers/parport/parport parport_release 0xd9cb221d +drivers/parport/parport parport_remove_port 0xbb405b75 +drivers/parport/parport parport_set_timeout 0x4a672290 +drivers/parport/parport parport_unregister_device 0xb0689a15 +drivers/parport/parport parport_unregister_driver 0xfdacdc03 +drivers/parport/parport parport_wait_event 0x6b73a186 +drivers/parport/parport parport_wait_peripheral 0x0ab67037 +drivers/parport/parport parport_write 0x084d41e9 +drivers/parport/parport_pc parport_pc_probe_port 0xd82d171e +drivers/parport/parport_pc parport_pc_unregister_port 0xe770a512 +drivers/sbus/char/bbc bbc_i2c_attach 0x9e58ac0a +drivers/sbus/char/bbc bbc_i2c_detach 0x3c7437fe +drivers/sbus/char/bbc bbc_i2c_getdev 0x2e940f22 +drivers/sbus/char/bbc bbc_i2c_read_buf 0xbfeaf0c1 +drivers/sbus/char/bbc bbc_i2c_readb 0x51ab47b5 +drivers/sbus/char/bbc bbc_i2c_write_buf 0x9cd7b1be +drivers/sbus/char/bbc bbc_i2c_writeb 0xc99b6be9 +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x5fdbc76a +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0x60a95e03 +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x7dbe3a58 +drivers/scsi/raid_class raid_class_attach 0x3e88668c +drivers/scsi/raid_class raid_class_release 0xbde097a6 +drivers/scsi/raid_class raid_component_add 0x8cb2fcb1 +drivers/scsi/sas/sas_class sas_register_ha 0x9d2a0b92 +drivers/scsi/sas/sas_class sas_unregister_ha 0x2f8c91c9 +drivers/scsi/scsi_mod __scsi_add_device 0xe6321c06 +drivers/scsi/scsi_mod __scsi_device_lookup 0xf8716fd3 +drivers/scsi/scsi_mod __scsi_device_lookup_by_target 0xab6e783d +drivers/scsi/scsi_mod __scsi_iterate_devices 0x7de4cb05 +drivers/scsi/scsi_mod __scsi_print_command 0xfef96e23 +drivers/scsi/scsi_mod __scsi_print_sense 0x69d38ed9 +drivers/scsi/scsi_mod int_to_scsilun 0xea10212a +drivers/scsi/scsi_mod scsi_add_device 0x48da042f +drivers/scsi/scsi_mod scsi_add_host 0x039b64f4 +drivers/scsi/scsi_mod scsi_adjust_queue_depth 0x3e9ab5ef +drivers/scsi/scsi_mod scsi_allocate_request 0x0344ab14 +drivers/scsi/scsi_mod scsi_bios_ptable 0x9af838bc +drivers/scsi/scsi_mod scsi_block_requests 0x18d97aa8 +drivers/scsi/scsi_mod scsi_block_when_processing_errors 0xf66683fd +drivers/scsi/scsi_mod scsi_bus_type 0x1c0d5791 +drivers/scsi/scsi_mod scsi_calculate_bounce_limit 0x4dcbe652 +drivers/scsi/scsi_mod scsi_command_normalize_sense 0x3df2cde5 +drivers/scsi/scsi_mod scsi_device_cancel 0xa141dfcb +drivers/scsi/scsi_mod scsi_device_get 0x27511262 +drivers/scsi/scsi_mod scsi_device_lookup 0x5f805358 +drivers/scsi/scsi_mod scsi_device_lookup_by_target 0xb82c1277 +drivers/scsi/scsi_mod scsi_device_put 0xb529df32 +drivers/scsi/scsi_mod scsi_device_quiesce 0xcbc53deb +drivers/scsi/scsi_mod scsi_device_resume 0xcd4c9878 +drivers/scsi/scsi_mod scsi_device_set_state 0x2e11a538 +drivers/scsi/scsi_mod scsi_device_types 0x6df713c9 +drivers/scsi/scsi_mod scsi_do_req 0x86c5fcea +drivers/scsi/scsi_mod scsi_execute 0x54b09b20 +drivers/scsi/scsi_mod scsi_execute_req 0xb8735391 +drivers/scsi/scsi_mod scsi_extd_sense_format 0x11267875 +drivers/scsi/scsi_mod scsi_finish_command 0x4604f685 +drivers/scsi/scsi_mod scsi_flush_work 0x580b885a +drivers/scsi/scsi_mod scsi_free_host_dev 0xaec09b64 +drivers/scsi/scsi_mod scsi_get_command 0x7ef13c74 +drivers/scsi/scsi_mod scsi_get_host_dev 0x4a790a86 +drivers/scsi/scsi_mod scsi_get_sense_info_fld 0x56987c01 +drivers/scsi/scsi_mod scsi_host_alloc 0x7dfbcd65 +drivers/scsi/scsi_mod scsi_host_get 0xf9c29b98 +drivers/scsi/scsi_mod scsi_host_lookup 0x2d95481a +drivers/scsi/scsi_mod scsi_host_put 0xe0e12b7a +drivers/scsi/scsi_mod scsi_host_set_state 0x37c853e3 +drivers/scsi/scsi_mod scsi_internal_device_block 0x62659d3b +drivers/scsi/scsi_mod scsi_internal_device_unblock 0xd117aa57 +drivers/scsi/scsi_mod scsi_io_completion 0x1a60cf97 +drivers/scsi/scsi_mod scsi_ioctl 0x33520970 +drivers/scsi/scsi_mod scsi_ioctl_send_command 0x7c2163f5 +drivers/scsi/scsi_mod scsi_is_host_device 0x08158f5d +drivers/scsi/scsi_mod scsi_is_sdev_device 0xaa28a3f7 +drivers/scsi/scsi_mod scsi_is_target_device 0x1b58a7f6 +drivers/scsi/scsi_mod scsi_mode_sense 0x20aaaff8 +drivers/scsi/scsi_mod scsi_nonblockable_ioctl 0x29d8540b +drivers/scsi/scsi_mod scsi_normalize_sense 0x0c65e73c +drivers/scsi/scsi_mod scsi_partsize 0x4afe9a77 +drivers/scsi/scsi_mod scsi_print_command 0xabd87d5c +drivers/scsi/scsi_mod scsi_print_msg 0x67f88938 +drivers/scsi/scsi_mod scsi_print_req_sense 0x2b191fb3 +drivers/scsi/scsi_mod scsi_print_sense 0x2bffd2f6 +drivers/scsi/scsi_mod scsi_print_sense_hdr 0xca5dbc50 +drivers/scsi/scsi_mod scsi_print_status 0x9cfd56c5 +drivers/scsi/scsi_mod scsi_put_command 0x09c00dd4 +drivers/scsi/scsi_mod scsi_queue_work 0xdda69e31 +drivers/scsi/scsi_mod scsi_register 0x799d8ef7 +drivers/scsi/scsi_mod scsi_register_driver 0x85c22e45 +drivers/scsi/scsi_mod scsi_register_interface 0x1ebf25df +drivers/scsi/scsi_mod scsi_release_request 0xdbf4eefd +drivers/scsi/scsi_mod scsi_remove_device 0x07842f43 +drivers/scsi/scsi_mod scsi_remove_host 0x728a23ac +drivers/scsi/scsi_mod scsi_remove_target 0x8c54990f +drivers/scsi/scsi_mod scsi_report_bus_reset 0xd41d39d5 +drivers/scsi/scsi_mod scsi_report_device_reset 0xbf119b48 +drivers/scsi/scsi_mod scsi_request_normalize_sense 0x9f8f33a2 +drivers/scsi/scsi_mod scsi_rescan_device 0x0dbc707c +drivers/scsi/scsi_mod scsi_reset_provider 0x2369455d +drivers/scsi/scsi_mod scsi_scan_host 0x14cce7d8 +drivers/scsi/scsi_mod scsi_scan_target 0xf55a4333 +drivers/scsi/scsi_mod scsi_sense_desc_find 0x2b0ba2b0 +drivers/scsi/scsi_mod scsi_sense_key_string 0x96cd2b04 +drivers/scsi/scsi_mod scsi_set_medium_removal 0xbcfce003 +drivers/scsi/scsi_mod scsi_setup_blk_pc_cmnd 0x225cd837 +drivers/scsi/scsi_mod scsi_target_block 0x768dcc2f +drivers/scsi/scsi_mod scsi_target_quiesce 0xb51e28cf +drivers/scsi/scsi_mod scsi_target_resume 0x47909001 +drivers/scsi/scsi_mod scsi_target_unblock 0xe092b07d +drivers/scsi/scsi_mod scsi_test_unit_ready 0x39c9e7a0 +drivers/scsi/scsi_mod scsi_track_queue_full 0x3cb7c277 +drivers/scsi/scsi_mod scsi_unblock_requests 0x41c9fa3a +drivers/scsi/scsi_mod scsi_unregister 0xe6ca76ba +drivers/scsi/scsi_mod scsicam_bios_param 0xc2305d98 +drivers/scsi/scsi_mod starget_for_each_device 0x4cb5c6b9 +drivers/scsi/scsi_transport_fc fc_attach_transport 0x554420f8 +drivers/scsi/scsi_transport_fc fc_release_transport 0xeefb9c69 +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x6b84394a +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0xf316f386 +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0xb3d4cb46 +drivers/scsi/scsi_transport_fc fc_remove_host 0x39797e9f +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0x8077da40 +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0x8677ed8d +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x200e54d7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0xec8c1d47 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x25989518 +drivers/scsi/scsi_transport_sas sas_attach_transport 0x598b16dc +drivers/scsi/scsi_transport_sas sas_phy_add 0x14782c2a +drivers/scsi/scsi_transport_sas sas_phy_alloc 0x38150b3c +drivers/scsi/scsi_transport_sas sas_phy_delete 0x06329239 +drivers/scsi/scsi_transport_sas sas_phy_free 0xef3347fe +drivers/scsi/scsi_transport_sas sas_release_transport 0x28b59527 +drivers/scsi/scsi_transport_sas sas_remove_host 0x0e372521 +drivers/scsi/scsi_transport_sas sas_rphy_add 0x1eac839b +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x2ee98e97 +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x506e9f01 +drivers/scsi/scsi_transport_sas sas_rphy_free 0x16ca9e51 +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0x6f7034b4 +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0x86c9ef8c +drivers/scsi/scsi_transport_spi spi_attach_transport 0x3f9b84fc +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0xbb02f342 +drivers/scsi/scsi_transport_spi spi_dv_device 0x0b069dea +drivers/scsi/scsi_transport_spi spi_release_transport 0xed3c0951 +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0xad7c6121 +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0xbdec8b1f +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0xb3cf5850 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x1159aa0f +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0xba97611e +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0x25054742 +drivers/usb/host/sl811-hcd sl811h_driver 0xbc977b92 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x622005f6 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0x68b63a80 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0x355e3e04 +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0x3e992b45 +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0x7a32d28a +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0xaee84b01 +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0x527872ce +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0x45d1acdc +drivers/usb/net/usbnet usbnet_defer_kevent 0xbf369ec7 +drivers/usb/net/usbnet usbnet_disconnect 0x9b43f69a +drivers/usb/net/usbnet usbnet_get_drvinfo 0x97daab95 +drivers/usb/net/usbnet usbnet_get_endpoints 0xe4bfda2e +drivers/usb/net/usbnet usbnet_get_msglevel 0x1e6126fc +drivers/usb/net/usbnet usbnet_probe 0xf966183d +drivers/usb/net/usbnet usbnet_resume 0x34e4fcb9 +drivers/usb/net/usbnet usbnet_set_msglevel 0x04bfc4dc +drivers/usb/net/usbnet usbnet_skb_return 0x4e89e5c9 +drivers/usb/net/usbnet usbnet_suspend 0x69b6c389 +drivers/video/backlight/backlight backlight_device_register 0xe47cd196 +drivers/video/backlight/backlight backlight_device_unregister 0x3881a245 +drivers/video/backlight/lcd lcd_device_register 0xa0435f93 +drivers/video/backlight/lcd lcd_device_unregister 0xa46c5620 +drivers/w1/ds9490r ds_get_device 0x38854ce1 +drivers/w1/ds9490r ds_put_device 0xace36e92 +drivers/w1/ds9490r ds_read_bit 0x399451eb +drivers/w1/ds9490r ds_read_block 0x657e9463 +drivers/w1/ds9490r ds_read_byte 0x2901ebec +drivers/w1/ds9490r ds_reset 0x9cce3b52 +drivers/w1/ds9490r ds_touch_bit 0xf22b1205 +drivers/w1/ds9490r ds_write_bit 0x71ac23a1 +drivers/w1/ds9490r ds_write_block 0x9e34f876 +drivers/w1/ds9490r ds_write_byte 0xca4f1d2d +drivers/w1/wire w1_add_master_device 0x31fe0891 +drivers/w1/wire w1_calc_crc8 0x7c2f2afb +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xb0c86d52 +drivers/w1/wire w1_family_put 0x45181a35 +drivers/w1/wire w1_family_registered 0x345f469c +drivers/w1/wire w1_read_8 0x23ba4c60 +drivers/w1/wire w1_read_block 0xfcb35f9e +drivers/w1/wire w1_register_family 0xadeb1de9 +drivers/w1/wire w1_remove_master_device 0x19fc269c +drivers/w1/wire w1_reset_bus 0x02524d84 +drivers/w1/wire w1_reset_select_slave 0x3c4e188f +drivers/w1/wire w1_search_devices 0x6dfd3012 +drivers/w1/wire w1_touch_bit 0x9962f23e +drivers/w1/wire w1_unregister_family 0x2616cdb9 +drivers/w1/wire w1_write_8 0xa7f9eef3 +drivers/w1/wire w1_write_block 0x8f080845 +fs/configfs/configfs config_group_init 0x5d89a8b7 +fs/configfs/configfs config_group_init_type_name 0x3561e337 +fs/configfs/configfs config_item_get 0x11be62f8 +fs/configfs/configfs config_item_init 0x91a71c47 +fs/configfs/configfs config_item_init_type_name 0x499716f0 +fs/configfs/configfs config_item_put 0xa573ba33 +fs/configfs/configfs config_item_set_name 0xe3415bcb +fs/configfs/configfs configfs_register_subsystem 0x0d1778f3 +fs/configfs/configfs configfs_unregister_subsystem 0xca5b6d69 +fs/exportfs/exportfs export_op_default 0xbfecd2de +fs/exportfs/exportfs find_exported_dentry 0x4d76ec53 +fs/fat/fat fat_add_entries 0x15e10135 +fs/fat/fat fat_alloc_new_dir 0x9b6a9449 +fs/fat/fat fat_attach 0x31bbd139 +fs/fat/fat fat_build_inode 0x6598cea9 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0x067642a5 +fs/fat/fat fat_dir_empty 0xe6395d1a +fs/fat/fat fat_fill_super 0xb2033dcc +fs/fat/fat fat_free_clusters 0x9c9a30a1 +fs/fat/fat fat_fs_panic 0x5c67e236 +fs/fat/fat fat_get_dotdot_entry 0x3b708d92 +fs/fat/fat fat_notify_change 0x70070dc8 +fs/fat/fat fat_remove_entries 0xdd9b71e2 +fs/fat/fat fat_scan 0xd106a78f +fs/fat/fat fat_search_long 0x6c6aa7d8 +fs/fat/fat fat_sync_bhs 0xe7e0769f +fs/fat/fat fat_sync_inode 0x8e03f09a +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0xcd5c3370 +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0x9ee0f6c0 +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0x63055b3b +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0x50fb854a +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0x38385024 +fs/jbd/jbd journal_abort 0xb51b0c12 +fs/jbd/jbd journal_ack_err 0x4f658bb2 +fs/jbd/jbd journal_blocks_per_page 0x99f2e006 +fs/jbd/jbd journal_check_available_features 0xb33cbf15 +fs/jbd/jbd journal_check_used_features 0x43f77345 +fs/jbd/jbd journal_clear_err 0x6274b109 +fs/jbd/jbd journal_create 0xde08e31b +fs/jbd/jbd journal_destroy 0x8cf0ea51 +fs/jbd/jbd journal_dirty_data 0xa816247b +fs/jbd/jbd journal_dirty_metadata 0x101972af +fs/jbd/jbd journal_errno 0xe7ae3074 +fs/jbd/jbd journal_extend 0xfb0d2fa1 +fs/jbd/jbd journal_flush 0x8d4d68c8 +fs/jbd/jbd journal_force_commit 0x8662f7c9 +fs/jbd/jbd journal_force_commit_nested 0xad307561 +fs/jbd/jbd journal_forget 0xb9581b23 +fs/jbd/jbd journal_get_create_access 0xf13fd78f +fs/jbd/jbd journal_get_undo_access 0x7985f34f +fs/jbd/jbd journal_get_write_access 0x37d47b0f +fs/jbd/jbd journal_init_dev 0x91851c43 +fs/jbd/jbd journal_init_inode 0x836db9bc +fs/jbd/jbd journal_invalidatepage 0xcef5267b +fs/jbd/jbd journal_load 0xcdeabd16 +fs/jbd/jbd journal_lock_updates 0x5e94d7cf +fs/jbd/jbd journal_release_buffer 0x92b58ef8 +fs/jbd/jbd journal_restart 0x3c27f12f +fs/jbd/jbd journal_revoke 0x810d3d8e +fs/jbd/jbd journal_set_features 0x1065cbfb +fs/jbd/jbd journal_start 0x25d0c84e +fs/jbd/jbd journal_start_commit 0xf5cc087f +fs/jbd/jbd journal_stop 0xec02f0cb +fs/jbd/jbd journal_try_to_free_buffers 0x25a7e4f4 +fs/jbd/jbd journal_unlock_updates 0x722bd7ca +fs/jbd/jbd journal_update_format 0xa6361d51 +fs/jbd/jbd journal_update_superblock 0x2955ff53 +fs/jbd/jbd journal_wipe 0xa3c00021 +fs/jbd/jbd log_wait_commit 0x6b34a0ab +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0x6935cdbd +fs/lockd/lockd nlmsvc_ops 0xf33f327e +fs/nfsd/nfsd nfs4_acl_add_ace 0x8b0e8bec +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x81a17396 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0xf56c2017 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0x1d747ce3 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xbaeb4700 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0x277ad3a6 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0x03dfbc41 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0x5f3cdd84 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x43bce54e +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0x36418553 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0x521e0726 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0xfc265cd4 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0x0ad8231c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x1132a985 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0xa5b3a3b0 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xa82a8645 +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0xb017f126 +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0x91842531 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0xe321fe9c +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0x7b4bb768 +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0xc491c593 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0x48728bfc +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0x6454ff83 +fs/relayfs/relayfs relay_buf_full 0xe47986e7 +fs/relayfs/relayfs relay_close 0x11f3e3e1 +fs/relayfs/relayfs relay_flush 0x331a41da +fs/relayfs/relayfs relay_open 0xb747de37 +fs/relayfs/relayfs relay_reset 0x7d32c48d +fs/relayfs/relayfs relay_subbufs_consumed 0x2b4f9617 +fs/relayfs/relayfs relay_switch_subbuf 0x0c8019bf +fs/relayfs/relayfs relayfs_create_dir 0xabd78cfb +fs/relayfs/relayfs relayfs_file_operations 0xf2a94aee +fs/relayfs/relayfs relayfs_remove_dir 0x700c5b0a +lib/crc-ccitt crc_ccitt 0x651c2313 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x9aabc564 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x41bcd8b3 +lib/libcrc32c crc32c_le 0x13c0c38e +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/802/p8022 register_8022_client 0x625febf5 +net/802/p8022 unregister_8022_client 0x99463b90 +net/802/psnap register_snap_client 0xb02a8dbb +net/802/psnap unregister_snap_client 0x6176bff7 +net/appletalk/appletalk aarp_send_ddp 0xd761b9a5 +net/appletalk/appletalk alloc_ltalkdev 0xe5e215c3 +net/appletalk/appletalk atalk_find_dev_addr 0x8828120b +net/appletalk/appletalk atrtr_get_dev 0x7db9c3be +net/bridge/bridge br_should_route_hook 0x8d11b4a5 +net/bridge/netfilter/ebtables ebt_do_table 0xb871bb7b +net/bridge/netfilter/ebtables ebt_register_match 0x3eef9e0c +net/bridge/netfilter/ebtables ebt_register_table 0xd3a3e5aa +net/bridge/netfilter/ebtables ebt_register_target 0xb19c85f2 +net/bridge/netfilter/ebtables ebt_register_watcher 0xe7018354 +net/bridge/netfilter/ebtables ebt_unregister_match 0x992b0ea9 +net/bridge/netfilter/ebtables ebt_unregister_table 0xec9b010c +net/bridge/netfilter/ebtables ebt_unregister_target 0xe4a1b3cc +net/bridge/netfilter/ebtables ebt_unregister_watcher 0xf4e206bb +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xf352cf8b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x22923cee +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x79e8107c +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0xa4a467ae +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x1b5dcb3a +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0x5d68719b +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0xc98286d1 +net/dccp/dccp ccid_init 0x27e1b703 +net/dccp/dccp ccid_register 0x46517975 +net/dccp/dccp ccid_unregister 0x38196d04 +net/dccp/dccp dccp_hashinfo 0xc8cc1b8a +net/dccp/dccp dccp_insert_option 0x6e30a0d3 +net/dccp/dccp dccp_insert_option_elapsed_time 0xe892b9ad +net/dccp/dccp dccp_insert_option_timestamp 0x53196ea0 +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0x0e57a82e +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0x9373126f +net/ieee80211/ieee80211 alloc_ieee80211 0xa866bb38 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0xf60f921f +net/ieee80211/ieee80211 ieee80211_channel_to_index 0xe8dce9b9 +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0xb04be831 +net/ieee80211/ieee80211 ieee80211_get_channel 0x52f0d683 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0x9fcce010 +net/ieee80211/ieee80211 ieee80211_get_geo 0x46cb3e6b +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0xa4eb5056 +net/ieee80211/ieee80211 ieee80211_rx 0xdb4e7886 +net/ieee80211/ieee80211 ieee80211_rx_mgt 0x9f32c880 +net/ieee80211/ieee80211 ieee80211_set_geo 0x675a57b7 +net/ieee80211/ieee80211 ieee80211_tx_frame 0xa41484cb +net/ieee80211/ieee80211 ieee80211_txb_free 0x852748d4 +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0x7c32f5db +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0xbafc5776 +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x622ca855 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0xde234372 +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0xac443266 +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0xaa3ba480 +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0xe9f4424a +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0x0ab580bf +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x91ad07a2 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0x2c0fe84d +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x29046046 +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0x69fe7fb0 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x24b8b55c +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0x848178b2 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0xa3a2382a +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0xed04fdd0 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0xe09665e6 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0x8627b603 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0x72fb44af +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0xa1511355 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0x5d887e88 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0x83c4c153 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0x179819ca +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0xaa481821 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x5e44f77a +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x35cd9860 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x05c88ae1 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0xa298a03c +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x1f48a1d7 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x8e3230c7 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x1319c004 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0x35f7bab7 +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0xa223eb2e +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x92f636b3 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0x961138dc +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0xe15a3403 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0x99749288 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0x7eb3a95a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0x1df21f90 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0x7c9e0a6f +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x57e5249d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0xda576a70 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0x7e56821d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x3e2d258a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x156c8574 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x5ac25b26 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x1fb76267 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0xa7c70188 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x2fa78807 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0xdc236572 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0xad4fd147 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0xe304c08f +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x0d0a7e7b +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0xf81800c3 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0x889f7955 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0x71cfa96f +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x896087d3 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0xa9479491 +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0xaec3b22c +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0x9294a699 +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0xde9f6547 +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0x9951a93a +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0xb9e2990d +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0xa5d05f48 +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0x2c075739 +net/ipv4/ipvs/ip_vs register_ip_vs_app 0xd2cc5fe9 +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0xb21f5187 +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0xcf327559 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0xfc0d2b5b +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0x4fed383d +net/ipv4/netfilter/arp_tables arpt_do_table 0x674ea989 +net/ipv4/netfilter/arp_tables arpt_register_table 0x0f790833 +net/ipv4/netfilter/arp_tables arpt_register_target 0xa74f0f6f +net/ipv4/netfilter/arp_tables arpt_unregister_table 0x6b2b2610 +net/ipv4/netfilter/arp_tables arpt_unregister_target 0xf3005918 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x6e0acbd7 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x0febfba1 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0x4183aedb +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x9f5a2171 +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0x8522077c +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0x8a2deb7a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x15cfb79f +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0xe0cd9381 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0xf911e916 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0x171c1f7c +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0x6195735d +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0xac8dd05a +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0x7ea1f9f4 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0xd9ecd493 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x951a2f58 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0x42e9fe19 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0xb43b6290 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0x00f7bc29 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x9587fdb8 +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0xa88ccd7c +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x28b0eb2d +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0xbff898c1 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x8ac8b112 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x465e2305 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0xecb3b797 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0xecbbb6ee +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0xc3332892 +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x5d72f8ca +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0x237999b0 +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0xc48c65f0 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x2252bfb9 +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0xf1771c92 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0x582d447a +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0x51b4f6d0 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x518497d6 +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0xa4104ca4 +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0x86673dc1 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0x21f022b3 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0xa6b9c8b0 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0x27f0f7b2 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0xaf759730 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0xc555b68e +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0xab15ebdf +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0x83f235b8 +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0x19efd51a +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0xe1479350 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0x9a14b242 +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0x8268e403 +net/ipv4/netfilter/ip_nat ip_nat_packet 0xfbab0d80 +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x5d125d72 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0xb534bc1d +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x840f41f2 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0x5cd5c052 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x3688be27 +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0xeea8a2f2 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0x04b4fef5 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x0ee16f29 +net/ipv4/netfilter/ip_tables ipt_do_table 0xe30240f8 +net/ipv4/netfilter/ip_tables ipt_find_target 0x9c1a93a2 +net/ipv4/netfilter/ip_tables ipt_register_match 0x863a7f52 +net/ipv4/netfilter/ip_tables ipt_register_table 0xb6a4f542 +net/ipv4/netfilter/ip_tables ipt_register_target 0x0ed97418 +net/ipv4/netfilter/ip_tables ipt_unregister_match 0xfb9c3394 +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x8cdde03c +net/ipv4/netfilter/ip_tables ipt_unregister_target 0xa3759ad4 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0x50ad0999 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0xa1779e12 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0x11065b31 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0x156c4aa5 +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x2187a858 +net/ipv6/ipv6 inet6_add_protocol 0x873c4e1b +net/ipv6/ipv6 inet6_bind 0xbab8d25c +net/ipv6/ipv6 inet6_del_protocol 0xaf2d8b3d +net/ipv6/ipv6 inet6_getname 0xa4149df8 +net/ipv6/ipv6 inet6_ioctl 0xef24d6a9 +net/ipv6/ipv6 inet6_register_protosw 0x6c94f8e1 +net/ipv6/ipv6 inet6_release 0xd2bf0c10 +net/ipv6/ipv6 inet6_unregister_protosw 0x15057714 +net/ipv6/ipv6 ip6_route_me_harder 0xd98400be +net/ipv6/ipv6 ip6_route_output 0x1fec11d7 +net/ipv6/ipv6 ip6_xmit 0x3ef12dee +net/ipv6/ipv6 ipv6_chk_addr 0x155592bd +net/ipv6/ipv6 ipv6_get_saddr 0x08a27c92 +net/ipv6/ipv6 ipv6_getsockopt 0x9eab1e1a +net/ipv6/ipv6 ipv6_push_nfrag_opts 0x3f4718ce +net/ipv6/ipv6 ipv6_setsockopt 0x132def11 +net/ipv6/ipv6 ndisc_mc_map 0x9ea430d9 +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x57571970 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0xcc931077 +net/ipv6/ipv6 xfrm6_rcv_spi 0xe23b78ad +net/ipv6/netfilter/ip6_tables ip6t_do_table 0x11c21a32 +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0xaf1b50e8 +net/ipv6/netfilter/ip6_tables ip6t_register_table 0x6592bd9f +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x49fd52ec +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0x4de3c82b +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x35e699b6 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0xd2373cbe +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0x7d7a25a2 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0x95e06145 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0x2105bb55 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/llc/llc llc_add_pack 0x768279a2 +net/llc/llc llc_build_and_send_ui_pkt 0xc7ce4527 +net/llc/llc llc_mac_hdr_init 0xbe1a422f +net/llc/llc llc_remove_pack 0x38b92846 +net/llc/llc llc_sap_close 0x9c2d5959 +net/llc/llc llc_sap_find 0xf10b89cf +net/llc/llc llc_sap_list 0x52d7b2fd +net/llc/llc llc_sap_list_lock 0x556643e3 +net/llc/llc llc_sap_open 0x535ada2b +net/llc/llc llc_set_station_handler 0x444981ff +net/llc/llc llc_station_mac_sa 0x5c372971 +net/netfilter/nfnetlink __nfa_fill 0x8c2cb4e9 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0xa711847e +net/netfilter/nfnetlink nfnetlink_subsys_register 0xf322776a +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0x3c3caa6a +net/netfilter/nfnetlink nfnetlink_unicast 0xda450ab1 +net/rxrpc/rxrpc rxrpc_add_service 0xda32ef99 +net/rxrpc/rxrpc rxrpc_call_abort 0xf5755a07 +net/rxrpc/rxrpc rxrpc_call_read_data 0xf214594b +net/rxrpc/rxrpc rxrpc_call_write_data 0xd9b6960a +net/rxrpc/rxrpc rxrpc_create_call 0xf5aebc94 +net/rxrpc/rxrpc rxrpc_create_connection 0x74fae2b0 +net/rxrpc/rxrpc rxrpc_create_transport 0xd70d12cc +net/rxrpc/rxrpc rxrpc_del_service 0xf6a715ea +net/rxrpc/rxrpc rxrpc_put_call 0x522ac7b8 +net/rxrpc/rxrpc rxrpc_put_connection 0xcbb722c3 +net/rxrpc/rxrpc rxrpc_put_transport 0x8079c40d +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x00c52ef5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0xb5dea7ef +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xf8b2ff6e +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0x4d784604 +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0x134b8c6e +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0x346241f6 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0xda5cd262 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0x1d236bcf +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0x9f5a9a02 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0xe63cf221 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0x20e21f7f +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0x0eb7a71e +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0x3814fcab +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0x5dd8d998 +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0x1eb1b43e +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0xda65999a +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x4c2f4b6d +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x8d1a827e +net/sunrpc/sunrpc auth_domain_find 0xce9b7a1f +net/sunrpc/sunrpc auth_domain_lookup 0xa74157e3 +net/sunrpc/sunrpc auth_domain_put 0xb7e2b4a5 +net/sunrpc/sunrpc auth_unix_add_addr 0xb8520a43 +net/sunrpc/sunrpc auth_unix_forget_old 0x758f9c49 +net/sunrpc/sunrpc auth_unix_lookup 0xd1d4e136 +net/sunrpc/sunrpc cache_check 0x08e05846 +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0xf376ea45 +net/sunrpc/sunrpc cache_init 0xc244025c +net/sunrpc/sunrpc cache_purge 0xe0ee21f1 +net/sunrpc/sunrpc cache_register 0x842119f7 +net/sunrpc/sunrpc cache_unregister 0xdfe26c23 +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0xfac3aab0 +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0xc02dcc04 +net/sunrpc/sunrpc rpc_bind_new_program 0x33ffce72 +net/sunrpc/sunrpc rpc_call_async 0xbf52b080 +net/sunrpc/sunrpc rpc_call_setup 0x7b593f81 +net/sunrpc/sunrpc rpc_call_sync 0x7ae8d024 +net/sunrpc/sunrpc rpc_clnt_sigmask 0x65e220a5 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0x745ef88a +net/sunrpc/sunrpc rpc_clone_client 0xeae966be +net/sunrpc/sunrpc rpc_create_client 0xed68ebd7 +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0xe73584db +net/sunrpc/sunrpc rpc_destroy_client 0xf6614156 +net/sunrpc/sunrpc rpc_execute 0x8dd7da15 +net/sunrpc/sunrpc rpc_init_task 0x676361ce +net/sunrpc/sunrpc rpc_init_wait_queue 0x9b8a689d +net/sunrpc/sunrpc rpc_killall_tasks 0xcf169fbb +net/sunrpc/sunrpc rpc_max_payload 0x60074ec2 +net/sunrpc/sunrpc rpc_mkpipe 0xbff71b7c +net/sunrpc/sunrpc rpc_new_child 0x68f1000a +net/sunrpc/sunrpc rpc_new_client 0xcb1eef35 +net/sunrpc/sunrpc rpc_new_task 0xf505e113 +net/sunrpc/sunrpc rpc_proc_register 0x9f586c87 +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x4f82e327 +net/sunrpc/sunrpc rpc_release_client 0xfb4b2be3 +net/sunrpc/sunrpc rpc_release_task 0x1f1a2ef5 +net/sunrpc/sunrpc rpc_restart_call 0x20288a58 +net/sunrpc/sunrpc rpc_run_child 0xebcabf1a +net/sunrpc/sunrpc rpc_setbufsize 0x1aa5b7fb +net/sunrpc/sunrpc rpc_shutdown_client 0x0548b5f3 +net/sunrpc/sunrpc rpc_sleep_on 0xdd7ef1d6 +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0x49e5e765 +net/sunrpc/sunrpc rpc_wake_up_next 0x71b2e952 +net/sunrpc/sunrpc rpc_wake_up_status 0x4e43d6e5 +net/sunrpc/sunrpc rpc_wake_up_task 0xcdef04e2 +net/sunrpc/sunrpc rpcauth_create 0x3118c9d0 +net/sunrpc/sunrpc rpcauth_free_credcache 0x704cbaae +net/sunrpc/sunrpc rpcauth_init_credcache 0xfd6f7a22 +net/sunrpc/sunrpc rpcauth_lookup_credcache 0xc4ff3ff6 +net/sunrpc/sunrpc rpcauth_lookupcred 0x48186508 +net/sunrpc/sunrpc rpcauth_register 0x4a4e5817 +net/sunrpc/sunrpc rpcauth_unregister 0xbff75e5b +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0xe61644f7 +net/sunrpc/sunrpc svc_auth_unregister 0x0f668ba9 +net/sunrpc/sunrpc svc_authenticate 0xba81de12 +net/sunrpc/sunrpc svc_create 0xbd176a69 +net/sunrpc/sunrpc svc_create_thread 0x20fbbd84 +net/sunrpc/sunrpc svc_destroy 0xeab8525b +net/sunrpc/sunrpc svc_drop 0xdd85d16c +net/sunrpc/sunrpc svc_exit_thread 0xe5f74256 +net/sunrpc/sunrpc svc_makesock 0x9a47d75a +net/sunrpc/sunrpc svc_proc_register 0x4debf878 +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0x4ac593c2 +net/sunrpc/sunrpc svc_recv 0x97a98828 +net/sunrpc/sunrpc svc_reserve 0x38a45eaf +net/sunrpc/sunrpc svc_seq_show 0x1ffc5de2 +net/sunrpc/sunrpc svc_set_client 0x2e1ca696 +net/sunrpc/sunrpc svc_wake_up 0x88cd09b9 +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x96946e44 +net/sunrpc/sunrpc xdr_buf_from_iov 0x2b8bda49 +net/sunrpc/sunrpc xdr_buf_read_netobj 0x5a49bf6d +net/sunrpc/sunrpc xdr_buf_subsegment 0xf980d1a0 +net/sunrpc/sunrpc xdr_decode_array2 0xd8358b11 +net/sunrpc/sunrpc xdr_decode_netobj 0x1be57115 +net/sunrpc/sunrpc xdr_decode_string 0x6755aa62 +net/sunrpc/sunrpc xdr_decode_string_inplace 0x7bd87272 +net/sunrpc/sunrpc xdr_decode_word 0x59be4937 +net/sunrpc/sunrpc xdr_encode_array2 0xc5a1a1f4 +net/sunrpc/sunrpc xdr_encode_netobj 0x29c6f164 +net/sunrpc/sunrpc xdr_encode_opaque 0x0e9e79d5 +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0x587d494b +net/sunrpc/sunrpc xdr_encode_pages 0xf8825e45 +net/sunrpc/sunrpc xdr_encode_string 0xabc0fe0c +net/sunrpc/sunrpc xdr_encode_word 0x827c351a +net/sunrpc/sunrpc xdr_init_decode 0x0a98918b +net/sunrpc/sunrpc xdr_init_encode 0x7ec3bcb5 +net/sunrpc/sunrpc xdr_inline_decode 0x1780e051 +net/sunrpc/sunrpc xdr_inline_pages 0x38e18ead +net/sunrpc/sunrpc xdr_read_pages 0x1b6d2bdb +net/sunrpc/sunrpc xdr_reserve_space 0x32b64853 +net/sunrpc/sunrpc xdr_shift_buf 0x7b4a5237 +net/sunrpc/sunrpc xdr_write_pages 0x1089d9fe +net/sunrpc/sunrpc xprt_create_proto 0x166be373 +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +security/commoncap cap_bprm_apply_creds 0x1e586b66 +security/commoncap cap_bprm_secureexec 0xd4f269f1 +security/commoncap cap_bprm_set_security 0xdad74a32 +security/commoncap cap_capable 0x34decf65 +security/commoncap cap_capget 0x7c3c3ec9 +security/commoncap cap_capset_check 0x74d82868 +security/commoncap cap_capset_set 0x7361a01f +security/commoncap cap_inode_removexattr 0x2d8ffc63 +security/commoncap cap_inode_setxattr 0x48fa4c3c +security/commoncap cap_netlink_recv 0x25114759 +security/commoncap cap_netlink_send 0x7beaf41f +security/commoncap cap_ptrace 0x6ff78db1 +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x13ea5cf8 +security/commoncap cap_task_reparent_to_init 0xba4459cd +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x95c6aa49 +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x450869cd +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0x5788986f +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0xaec62a65 +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x93e5bdeb +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0xe789d013 +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x26b39b6d +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0xbd8893b4 +sound/core/seq/snd-seq-instr snd_seq_instr_find 0xec0696a2 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x69e81be7 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0xb281c141 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0x09bb2f08 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0x9072a609 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x652e5613 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0xc45d349a +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x20b09520 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x94bcd226 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x2f00b54d +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x8d98548b +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0xc7bd34d4 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0xb9643a3b +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0x3d183959 +sound/core/snd copy_from_user_toio 0x518bb7f8 +sound/core/snd copy_to_user_fromio 0xe243dde3 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0x93407229 +sound/core/snd snd_card_file_add 0xf033c6f7 +sound/core/snd snd_card_file_remove 0xccc1ea90 +sound/core/snd snd_card_free 0xe9cc2f6a +sound/core/snd snd_card_free_in_thread 0x37103f58 +sound/core/snd snd_card_new 0xe1b025f0 +sound/core/snd snd_card_proc_new 0x1e3aceb0 +sound/core/snd snd_card_register 0x18b8621a +sound/core/snd snd_card_set_generic_dev 0x7156d527 +sound/core/snd snd_cards 0x38167772 +sound/core/snd snd_component_add 0x62b9ab68 +sound/core/snd snd_ctl_add 0x2b0edcdd +sound/core/snd snd_ctl_elem_read 0x70aa5230 +sound/core/snd snd_ctl_elem_write 0x29698a6c +sound/core/snd snd_ctl_find_id 0xe7a8f61a +sound/core/snd snd_ctl_find_numid 0x3a9aadf4 +sound/core/snd snd_ctl_free_one 0x50894f24 +sound/core/snd snd_ctl_new 0x87e2082c +sound/core/snd snd_ctl_new1 0x0c844543 +sound/core/snd snd_ctl_notify 0x598fd7be +sound/core/snd snd_ctl_register_ioctl 0xe799509c +sound/core/snd snd_ctl_register_ioctl_compat 0x4c2369ed +sound/core/snd snd_ctl_remove 0xeb7cb79d +sound/core/snd snd_ctl_remove_id 0x215ba30f +sound/core/snd snd_ctl_rename_id 0x1c3dba66 +sound/core/snd snd_ctl_unregister_ioctl 0xafe2cd7d +sound/core/snd snd_ctl_unregister_ioctl_compat 0x98ae60df +sound/core/snd snd_device_free 0x5f26c279 +sound/core/snd snd_device_new 0x19d76e81 +sound/core/snd snd_device_register 0x66454406 +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0x4ec93251 +sound/core/snd snd_info_create_module_entry 0xbf19c528 +sound/core/snd snd_info_free_entry 0x6d82a7f4 +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0xf48e72e6 +sound/core/snd snd_info_unregister 0x072bc13a +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0xf8dd6269 +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_register_device 0x4fd698aa +sound/core/snd snd_register_oss_device 0x2784ca38 +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0xb98d1f2d +sound/core/snd snd_unregister_device 0x2d433f45 +sound/core/snd snd_unregister_oss_device 0x6a451d1d +sound/core/snd-hwdep snd_hwdep_new 0xba8bed7c +sound/core/snd-page-alloc snd_dma_alloc_pages 0xdb2cf2a5 +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0xaf5036d8 +sound/core/snd-page-alloc snd_dma_free_pages 0xe2b2bba0 +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0xa22c9d0a +sound/core/snd-page-alloc snd_dma_reserve_buf 0xa42bb2f1 +sound/core/snd-page-alloc snd_free_pages 0x19cc2ce3 +sound/core/snd-page-alloc snd_malloc_pages 0xc6829020 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x65f0da5e +sound/core/snd-pcm snd_pcm_devices 0x68a199b9 +sound/core/snd-pcm snd_pcm_format_big_endian 0x09d405a0 +sound/core/snd-pcm snd_pcm_format_linear 0x1d607209 +sound/core/snd-pcm snd_pcm_format_little_endian 0x11ee487f +sound/core/snd-pcm snd_pcm_format_name 0x77863ed3 +sound/core/snd-pcm snd_pcm_format_physical_width 0x32be712f +sound/core/snd-pcm snd_pcm_format_set_silence 0xfa4027da +sound/core/snd-pcm snd_pcm_format_signed 0x78967306 +sound/core/snd-pcm snd_pcm_format_silence_64 0x407a3719 +sound/core/snd-pcm snd_pcm_format_size 0xe8decdc0 +sound/core/snd-pcm snd_pcm_format_unsigned 0x0ff581cb +sound/core/snd-pcm snd_pcm_format_width 0xcfb8aa1b +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0x330b0dbe +sound/core/snd-pcm snd_pcm_hw_constraint_list 0x1beac837 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0x561b3882 +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0xf8521b0f +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0xa3dd3500 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0xe5075d87 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0xaa9e1ad5 +sound/core/snd-pcm snd_pcm_hw_constraint_step 0x18f4de76 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0x3bc915cf +sound/core/snd-pcm snd_pcm_hw_constraints_init 0x9a3c7186 +sound/core/snd-pcm snd_pcm_hw_param_first 0x066bf4e4 +sound/core/snd-pcm snd_pcm_hw_param_last 0x3a1937cd +sound/core/snd-pcm snd_pcm_hw_param_mask 0x1a2e195a +sound/core/snd-pcm snd_pcm_hw_param_near 0x44266595 +sound/core/snd-pcm snd_pcm_hw_param_set 0x04be317f +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0x37ddfc0d +sound/core/snd-pcm snd_pcm_hw_rule_add 0x0adc042e +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0x726f0f9c +sound/core/snd-pcm snd_pcm_kernel_ioctl 0xf3f75e27 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x9bd0ccda +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0x5cc96c3e +sound/core/snd-pcm snd_pcm_lib_free_pages 0x5b95738d +sound/core/snd-pcm snd_pcm_lib_ioctl 0x598154f2 +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0xbe049a14 +sound/core/snd-pcm snd_pcm_lib_period_bytes 0x4b5f467d +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0xc4b7d601 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0x20f3a902 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0x034df933 +sound/core/snd-pcm snd_pcm_lib_read 0x58d1bc2f +sound/core/snd-pcm snd_pcm_lib_readv 0xf8297233 +sound/core/snd-pcm snd_pcm_lib_write 0xcd9c4074 +sound/core/snd-pcm snd_pcm_lib_writev 0xb4e33a07 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x42e1330a +sound/core/snd-pcm snd_pcm_link_rwlock 0x395e287f +sound/core/snd-pcm snd_pcm_mmap_data 0x05c41253 +sound/core/snd-pcm snd_pcm_new 0xe8a8b560 +sound/core/snd-pcm snd_pcm_new_stream 0x89662426 +sound/core/snd-pcm snd_pcm_notify 0x359e9704 +sound/core/snd-pcm snd_pcm_open_substream 0xf2c98c00 +sound/core/snd-pcm snd_pcm_period_elapsed 0x835c9455 +sound/core/snd-pcm snd_pcm_release_substream 0x2f1719d9 +sound/core/snd-pcm snd_pcm_set_ops 0x83c18a78 +sound/core/snd-pcm snd_pcm_set_sync 0xe5c9ac13 +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0x34a2d49c +sound/core/snd-pcm snd_pcm_stop 0x38c09a4c +sound/core/snd-rawmidi snd_rawmidi_drain_input 0x1a096b60 +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x3234b841 +sound/core/snd-rawmidi snd_rawmidi_drop_output 0x3077933b +sound/core/snd-rawmidi snd_rawmidi_info 0x549a13be +sound/core/snd-rawmidi snd_rawmidi_info_select 0xb410030b +sound/core/snd-rawmidi snd_rawmidi_input_params 0xf7f69bab +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x5383855d +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0x155d8fdf +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0xf4d73688 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x1c0fa707 +sound/core/snd-rawmidi snd_rawmidi_new 0xf1a088c9 +sound/core/snd-rawmidi snd_rawmidi_output_params 0x01ccb824 +sound/core/snd-rawmidi snd_rawmidi_receive 0xc143efcc +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x7c3bdc53 +sound/core/snd-rawmidi snd_rawmidi_transmit 0x2ae21d57 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x431ad520 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x53e76ade +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0x6b1bad5e +sound/core/snd-timer snd_timer_close 0xa3ff85b9 +sound/core/snd-timer snd_timer_continue 0x404f068a +sound/core/snd-timer snd_timer_global_free 0xdbc3fd31 +sound/core/snd-timer snd_timer_global_new 0xf0b7db7f +sound/core/snd-timer snd_timer_global_register 0x08ff1fc3 +sound/core/snd-timer snd_timer_global_unregister 0xd657644f +sound/core/snd-timer snd_timer_interrupt 0xcdaff12e +sound/core/snd-timer snd_timer_new 0x51cf1c13 +sound/core/snd-timer snd_timer_notify 0x1c82079e +sound/core/snd-timer snd_timer_open 0x8baff08f +sound/core/snd-timer snd_timer_pause 0xdf85ec2f +sound/core/snd-timer snd_timer_resolution 0xa0fe77c6 +sound/core/snd-timer snd_timer_start 0xa614a0b4 +sound/core/snd-timer snd_timer_stop 0xb8566eab +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0xcb05790a +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0xf0eaec32 +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0x877634dc +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0xf57a6e94 +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0xe7f31d50 +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0xf815b290 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0x612ff83f +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0x5bef36a7 +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0x208ee853 +sound/oss/ac97_codec ac97_alloc_codec 0x68d8dbe9 +sound/oss/ac97_codec ac97_probe_codec 0xb2c62f5a +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0x9eb12877 +sound/oss/ac97_codec ac97_release_codec 0x79f0c796 +sound/oss/ac97_codec ac97_restore_state 0x69f6ad10 +sound/oss/ac97_codec ac97_save_state 0x0bba42d0 +sound/oss/ac97_codec ac97_set_adc_rate 0xb34f5352 +sound/oss/ac97_codec ac97_set_dac_rate 0x6f79f5ac +sound/oss/ac97_codec ac97_tune_hardware 0xae254c9e +sound/oss/ac97_codec ac97_unregister_driver 0x859b2874 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x0f9ae4c4 +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0x3eae6724 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0xa0eb40b2 +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0x57fe2d7f +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0x708a0760 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0xb5cde18d +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x32d542c1 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0xd1648670 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0xbc34d8df +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0xadc87af5 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0xaf1f53f3 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0xb0f4bb13 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0x824e1d10 +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0xb1f9e33d +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0xb3952880 +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0x8e59396f +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0x85c20526 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0xd163404c +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0xe1cd2acd +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0x5d3b62af +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0x015c6fd7 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0x76e89c3a +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0x8cc1f2c4 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0x6d9b405e +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0x0dcda2df +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0x8679507a +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0x79f75d7b +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0x274567e9 +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0xdfc0a6f5 +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0x2eaed9d2 +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0xfd17156a +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x233fc919 +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0x6d79efcf +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0x287ac8cc +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0x48e29630 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0x80531c77 +sound/soundcore register_sound_midi 0x1edf6744 +sound/soundcore register_sound_mixer 0x5d354e26 +sound/soundcore register_sound_special 0x5d27ecbd +sound/soundcore register_sound_special_device 0x755baba3 +sound/soundcore register_sound_synth 0x31f4fe96 +sound/soundcore sound_class 0xd18590a4 +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +sound/synth/emux/snd-emux-synth snd_emux_free 0x7831f6df +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0x69525924 +sound/synth/emux/snd-emux-synth snd_emux_new 0xe4036086 +sound/synth/emux/snd-emux-synth snd_emux_register 0x107c9550 +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0xf07875c2 +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0x97553b0d +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0xa1c7119c +sound/synth/snd-util-mem __snd_util_mem_free 0xba9608d2 +sound/synth/snd-util-mem __snd_util_memblk_new 0x25fd6672 +sound/synth/snd-util-mem snd_util_mem_alloc 0xa914e616 +sound/synth/snd-util-mem snd_util_mem_avail 0x44e3fc4e +sound/synth/snd-util-mem snd_util_mem_free 0xd7974408 +sound/synth/snd-util-mem snd_util_memhdr_free 0x026c0548 +sound/synth/snd-util-mem snd_util_memhdr_new 0x23903703 +vmlinux I_BDEV 0x59a4b8f4 +vmlinux PAGE_KERNEL 0xde7502a8 +vmlinux PAGE_SHARED 0xc38c4ca2 +vmlinux SELECT_DRIVE 0xd67820e6 +vmlinux VISenter 0x1a35bcbc +vmlinux _PAGE_CACHE 0xa0ebb2ba +vmlinux _PAGE_E 0x9e771285 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___copy_from_user 0x53688617 +vmlinux ___copy_in_user 0x0409e4d0 +vmlinux ___copy_to_user 0xa6b5d766 +vmlinux ___pskb_trim 0x4d824ec6 +vmlinux __alloc_pages 0xc321c9ed +vmlinux __alloc_skb 0xa1062f26 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0x75e85b93 +vmlinux __bio_clone 0x01373f96 +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0xcb338f65 +vmlinux __bread 0xb21a35a2 +vmlinux __breadahead 0xd0830cbd +vmlinux __break_lease 0xaf9f4031 +vmlinux __brelse 0x7b3350e3 +vmlinux __bzero 0x8bf87169 +vmlinux __check_region 0xf1d0cdab +vmlinux __clear_user 0x2455c156 +vmlinux __const_udelay 0xeae3dfd6 +vmlinux __create_workqueue 0xa1a3ac4e +vmlinux __csum_partial_copy_from_user 0xa0780a23 +vmlinux __csum_partial_copy_to_user 0xa1f82002 +vmlinux __d_path 0x1094aadf +vmlinux __delay 0x466c14a7 +vmlinux __dev_get_by_index 0x4bdfb9ee +vmlinux __dev_get_by_name 0xe86deb4f +vmlinux __dev_remove_pack 0x61032980 +vmlinux __down_read 0xa99648d0 +vmlinux __down_read_trylock 0x9cc4ba07 +vmlinux __down_write 0xcdbcda53 +vmlinux __down_write_trylock 0xf497eebb +vmlinux __downgrade_write 0x425faacb +vmlinux __dst_free 0x07fc15d5 +vmlinux __elv_add_request 0x3e464796 +vmlinux __find_get_block 0x25c30780 +vmlinux __flush_dcache_range 0x0826b0dc +vmlinux __flushw_user 0x712730a7 +vmlinux __free_pages 0x6ab69bc8 +vmlinux __generic_file_aio_read 0x3f6d8e6a +vmlinux __generic_unplug_device 0x4708065b +vmlinux __get_free_pages 0x93fca811 +vmlinux __getblk 0x8e55c452 +vmlinux __ide_abort 0x6d611b32 +vmlinux __ide_dma_bad_drive 0x7739f310 +vmlinux __ide_dma_check 0x824ef548 +vmlinux __ide_dma_end 0x1e737c11 +vmlinux __ide_dma_good_drive 0xf72ae5a2 +vmlinux __ide_dma_host_off 0x4b722451 +vmlinux __ide_dma_host_on 0xbdaeca57 +vmlinux __ide_dma_lostirq 0x64415aa7 +vmlinux __ide_dma_off 0x5874a345 +vmlinux __ide_dma_off_quietly 0x9bc3dce9 +vmlinux __ide_dma_on 0xd7b1884f +vmlinux __ide_dma_timeout 0x9cfa1348 +vmlinux __ide_end_request 0x476d6001 +vmlinux __ide_error 0x8f0cc1c6 +vmlinux __ide_pci_register_driver 0x8ebe60c1 +vmlinux __inet_lookup_listener 0xc6f25f0c +vmlinux __inet_twsk_hashdance 0x1f58d7fd +vmlinux __inet_twsk_kill 0xc066367a +vmlinux __init_timer_base 0x82f04785 +vmlinux __inode_dir_notify 0xa5c6b7ec +vmlinux __insert_inode_hash 0x57178149 +vmlinux __invalidate_device 0x366ab85e +vmlinux __ip_route_output_key 0x45a59d3e +vmlinux __ip_select_ident 0x3bf08f9a +vmlinux __kfifo_get 0x043b8483 +vmlinux __kfifo_put 0xaa527612 +vmlinux __kfree_skb 0xf697c0f1 +vmlinux __kill_fasync 0x68eabd0d +vmlinux __kmalloc 0x5a34a45c +vmlinux __lock_buffer 0xc54e0fd7 +vmlinux __lock_page 0xa40eae33 +vmlinux __mark_inode_dirty 0x50204fe2 +vmlinux __memcmp 0xcf025be3 +vmlinux __memscan_generic 0x702f162c +vmlinux __memscan_zero 0xbf993764 +vmlinux __memset 0xd0be1a2e +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xe051a0ac +vmlinux __module_put_and_exit 0x09672ae4 +vmlinux __ndelay 0xdf8c695a +vmlinux __neigh_event_send 0x12af4e60 +vmlinux __neigh_for_each_release 0xc39d1782 +vmlinux __net_timestamp 0xe0e2fd2d +vmlinux __netdev_watchdog_up 0x95d2adfc +vmlinux __nla_put 0xe9d35b1a +vmlinux __nla_reserve 0xa1504888 +vmlinux __page_cache_release 0x0f7357ae +vmlinux __pagevec_lru_add 0x03ba774f +vmlinux __pagevec_release 0x84e290eb +vmlinux __pci_register_driver 0xf9da543f +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __prom_getchild 0x8ca0e65d +vmlinux __prom_getsibling 0x8da618dc +vmlinux __pskb_pull_tail 0x7d9573c6 +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __ret_efault 0x2b937a6f +vmlinux __rta_fill 0x968473ad +vmlinux __scm_destroy 0x93417cbc +vmlinux __scm_send 0xba14f8b1 +vmlinux __secpath_destroy 0xf1e30495 +vmlinux __serio_register_driver 0xd00e15bd +vmlinux __serio_register_port 0x44bf6015 +vmlinux __serio_unregister_port_delayed 0x85134c37 +vmlinux __set_page_dirty_buffers 0xaf602657 +vmlinux __set_page_dirty_nobuffers 0xb1fa28a1 +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x413036f7 +vmlinux __skb_checksum_complete 0x3b1e94d8 +vmlinux __skb_linearize 0xb22877e1 +vmlinux __strlen_user 0xf80c69d2 +vmlinux __strncpy_from_user 0x9a78a84c +vmlinux __strnlen_user 0x8b922c0f +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x267fc65b +vmlinux __tasklet_schedule 0xf397b9aa +vmlinux __tcf_em_tree_match 0xfa2feaae +vmlinux __udelay 0x9e7d6bd0 +vmlinux __up_read 0x262eea91 +vmlinux __up_write 0xcce813f7 +vmlinux __usb_get_extra_descriptor 0x9924c496 +vmlinux __user_walk 0x2ff40400 +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0x8f07d8ca +vmlinux __wait_on_bit_lock 0x9501d078 +vmlinux __wait_on_buffer 0x824b0945 +vmlinux __wake_up 0xb6c70a7d +vmlinux __wake_up_bit 0x44c214d1 +vmlinux __wake_up_sync 0xffaf7bbb +vmlinux __xfrm_policy_check 0x2472dda7 +vmlinux __xfrm_policy_destroy 0x90cd3615 +vmlinux __xfrm_route_forward 0x66778aaf +vmlinux __xfrm_state_destroy 0x3427e3a4 +vmlinux _atomic_dec_and_lock 0x1edc9598 +vmlinux _clear_page 0x62a9293f +vmlinux _ctype 0x8d3894f2 +vmlinux _sigpause_common 0x28282f54 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0x095a2f0e +vmlinux add_disk_randomness 0x7758ee58 +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0x37fc9777 +vmlinux add_wait_queue 0xfd8dba4c +vmlinux add_wait_queue_exclusive 0x3e6caebd +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0xcb3cd990 +vmlinux aio_put_req 0x41ed799d +vmlinux alloc_buffer_head 0x9ec68878 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0xabb3e91a +vmlinux alloc_disk_node 0xa44e89bd +vmlinux alloc_etherdev 0x96cd97ab +vmlinux alloc_fcdev 0xe5d7e121 +vmlinux alloc_fddidev 0x669c3977 +vmlinux alloc_netdev 0x76b59b11 +vmlinux alloc_page_buffers 0x6589b1a9 +vmlinux alloc_tty_driver 0x9b475207 +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0x25961e6a +vmlinux anon_transport_class_unregister 0x5cac7bd7 +vmlinux arp_broken_ops 0x4dd6ac06 +vmlinux arp_create 0x1926de9d +vmlinux arp_find 0x7ccb89fa +vmlinux arp_rcv 0xa2927f5b +vmlinux arp_send 0x9bf0d21f +vmlinux arp_tbl 0xd6b9bf9f +vmlinux arp_xmit 0x96dc9b63 +vmlinux atomic64_add 0x588c6d29 +vmlinux atomic64_add_ret 0xb169b9b8 +vmlinux atomic64_sub 0xea2125dc +vmlinux atomic64_sub_ret 0x409e9351 +vmlinux atomic_add 0x921f4390 +vmlinux atomic_add_ret 0xf84b38c3 +vmlinux atomic_sub 0x52046e13 +vmlinux atomic_sub_ret 0x0560fd8f +vmlinux attribute_container_add_attrs 0xfd5c255a +vmlinux attribute_container_add_class_device 0x59c6952f +vmlinux attribute_container_add_class_device_adapter 0x8c36e636 +vmlinux attribute_container_class_device_del 0x426c1cc7 +vmlinux attribute_container_classdev_to_container 0x9267b606 +vmlinux attribute_container_device_trigger 0x417d1279 +vmlinux attribute_container_find_class_device 0x1858cdd2 +vmlinux attribute_container_register 0x2ff3b300 +vmlinux attribute_container_remove_attrs 0x89c36b6e +vmlinux attribute_container_remove_device 0x4fd99182 +vmlinux attribute_container_trigger 0x13c397f9 +vmlinux attribute_container_unregister 0xcd85a6a4 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux auxio_set_led 0xd8959f23 +vmlinux auxio_set_lte 0x582fef16 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x78f126df +vmlinux bd_claim 0x575b2ee1 +vmlinux bd_release 0xfea4a0f7 +vmlinux bd_set_size 0xf5bba27f +vmlinux bdev_read_only 0xf4ad8b31 +vmlinux bdevname 0x69d45e6c +vmlinux bdget 0x0759698c +vmlinux bdput 0x714fdda3 +vmlinux bfifo_qdisc_ops 0x7c6849f9 +vmlinux bio_add_page 0xef54f52c +vmlinux bio_alloc 0xa77a3207 +vmlinux bio_alloc_bioset 0x7b8a61f6 +vmlinux bio_clone 0xa4a87f17 +vmlinux bio_copy_user 0xd297d1dc +vmlinux bio_endio 0xc28b3563 +vmlinux bio_free 0x1810c650 +vmlinux bio_get_nr_vecs 0x89a59b7e +vmlinux bio_hw_segments 0xf53e1d71 +vmlinux bio_init 0x25daa1eb +vmlinux bio_map_kern 0x04e12e1f +vmlinux bio_map_user 0x78a15dcf +vmlinux bio_pair_release 0xf4cd678f +vmlinux bio_phys_segments 0x033381b0 +vmlinux bio_put 0xeba37b35 +vmlinux bio_split 0x59ef8c5f +vmlinux bio_split_pool 0x27b47413 +vmlinux bio_uncopy_user 0x4a33aecd +vmlinux bio_unmap_user 0x72a214f0 +vmlinux bioset_create 0x1c875572 +vmlinux bioset_free 0x661e6ec8 +vmlinux bit_waitqueue 0xa9f1ed23 +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0x5ea44234 +vmlinux blk_alloc_queue_node 0x1667a0b2 +vmlinux blk_cleanup_queue 0x027f7944 +vmlinux blk_complete_barrier_rq 0x04fd2d80 +vmlinux blk_complete_barrier_rq_locked 0x8f74919c +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x425a2dcb +vmlinux blk_end_sync_rq 0x93195c5c +vmlinux blk_execute_rq 0xc7888220 +vmlinux blk_get_backing_dev_info 0x080201cb +vmlinux blk_get_queue 0xe51c6078 +vmlinux blk_get_request 0xaa916401 +vmlinux blk_init_queue 0x5730064f +vmlinux blk_init_queue_node 0x5df27624 +vmlinux blk_insert_request 0x0e374711 +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0xa771d978 +vmlinux blk_put_request 0xd2354a8d +vmlinux blk_queue_activity_fn 0x2083a0bc +vmlinux blk_queue_bounce 0xdf520fc9 +vmlinux blk_queue_bounce_limit 0xe7a252fe +vmlinux blk_queue_dma_alignment 0x7e62fbfb +vmlinux blk_queue_end_tag 0xef93c8b2 +vmlinux blk_queue_find_tag 0x5c942a96 +vmlinux blk_queue_free_tags 0xb8617c6d +vmlinux blk_queue_hardsect_size 0xa9115340 +vmlinux blk_queue_init_tags 0xbc23287e +vmlinux blk_queue_invalidate_tags 0x39713400 +vmlinux blk_queue_issue_flush_fn 0x09f17877 +vmlinux blk_queue_make_request 0xc298788e +vmlinux blk_queue_max_hw_segments 0x6d356b53 +vmlinux blk_queue_max_phys_segments 0xda201d5e +vmlinux blk_queue_max_sectors 0x4ea55b7f +vmlinux blk_queue_max_segment_size 0xda8b7b5f +vmlinux blk_queue_merge_bvec 0xe2b517d3 +vmlinux blk_queue_ordered 0x1464b330 +vmlinux blk_queue_prep_rq 0x545ea39d +vmlinux blk_queue_resize_tags 0x5498f430 +vmlinux blk_queue_segment_boundary 0xd8297246 +vmlinux blk_queue_stack_limits 0x452958f4 +vmlinux blk_queue_start_tag 0xa507462e +vmlinux blk_register_region 0xea17e3df +vmlinux blk_remove_plug 0xd1b5afa1 +vmlinux blk_requeue_request 0xed4b9c7b +vmlinux blk_rq_bio_prep 0xb885fa16 +vmlinux blk_rq_map_kern 0xd4d9e56c +vmlinux blk_rq_map_sg 0xf7a11fdd +vmlinux blk_rq_map_user 0xb86d9b26 +vmlinux blk_rq_map_user_iov 0x0565dc2a +vmlinux blk_rq_unmap_user 0x2f0110a4 +vmlinux blk_run_queue 0x0ac73015 +vmlinux blk_start_queue 0x748ef424 +vmlinux blk_stop_queue 0x88008d1c +vmlinux blk_sync_queue 0x3d146464 +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0x3a546e28 +vmlinux blkdev_ioctl 0x1262c921 +vmlinux blkdev_issue_flush 0x384f270d +vmlinux blkdev_put 0x4772bf4e +vmlinux block_all_signals 0x4edd72f7 +vmlinux block_commit_write 0xfd453a60 +vmlinux block_invalidatepage 0xe8e0234e +vmlinux block_prepare_write 0xdf349001 +vmlinux block_read_full_page 0xa120a907 +vmlinux block_sync_page 0xf3156def +vmlinux block_truncate_page 0xb18e9918 +vmlinux block_write_full_page 0xed1ac2cb +vmlinux bmap 0xf5a0ecdb +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0x971ee7a1 +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0x24ff1d77 +vmlinux bus_create_file 0xf45e5a5b +vmlinux bus_find_device 0xa3d4f558 +vmlinux bus_for_each_dev 0x9b7db897 +vmlinux bus_for_each_drv 0xca32f050 +vmlinux bus_register 0xc1920d18 +vmlinux bus_remove_device 0x3e4df014 +vmlinux bus_remove_file 0x13aaf506 +vmlinux bus_rescan_devices 0x3f625e3f +vmlinux bus_unregister 0xbfee7a6a +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x43c852aa +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x5e432be3 +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x595d8ae1 +vmlinux cdev_alloc 0xe8ef5616 +vmlinux cdev_del 0xf888f880 +vmlinux cdev_init 0x4b05961d +vmlinux cfb_copyarea 0xdc69a65d +vmlinux cfb_fillrect 0x28a741a7 +vmlinux cfb_imageblit 0xbc732aac +vmlinux change_bit 0x9db37875 +vmlinux check_disk_change 0x6bad550d +vmlinux class_create 0x37eadf47 +vmlinux class_create_file 0xceb15e2f +vmlinux class_destroy 0x476de4ab +vmlinux class_device_add 0xb29c8db2 +vmlinux class_device_create 0xdbe37e3d +vmlinux class_device_create_bin_file 0x8ac434f6 +vmlinux class_device_create_file 0x37925c08 +vmlinux class_device_del 0x9a33e57f +vmlinux class_device_destroy 0x28918fd9 +vmlinux class_device_get 0x6739433d +vmlinux class_device_initialize 0xa421ec46 +vmlinux class_device_put 0x02f894b7 +vmlinux class_device_register 0xfd3ec11f +vmlinux class_device_remove_bin_file 0xd4460081 +vmlinux class_device_remove_file 0xd422f64c +vmlinux class_device_unregister 0x7a6e161b +vmlinux class_get 0x4083f1c4 +vmlinux class_interface_register 0x83c973ee +vmlinux class_interface_unregister 0x4e058fa6 +vmlinux class_put 0xe29a3cdb +vmlinux class_register 0xb9c36ca5 +vmlinux class_remove_file 0x3cc7d0f4 +vmlinux class_unregister 0xe15b115c +vmlinux clear_bit 0x3a9aa54d +vmlinux clear_inode 0xd4356680 +vmlinux clear_page_dirty_for_io 0xf047d978 +vmlinux clear_user_page 0xd6f7211d +vmlinux close_bdev_excl 0x997cd1ef +vmlinux color_table 0xf6bb4729 +vmlinux compat_sys_ioctl 0x32624a56 +vmlinux complete 0xa218bf61 +vmlinux complete_all 0x48f9f12d +vmlinux complete_and_exit 0x8e9eceaa +vmlinux compute_creds 0x4366f546 +vmlinux con_copy_unimap 0x0deadb0c +vmlinux con_set_default_unimap 0x334365a2 +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0xa3a4ed03 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0x2cc77aac +vmlinux console_stop 0x1b52bd62 +vmlinux cont_prepare_write 0xcc3495bd +vmlinux contig_page_data 0xce809c64 +vmlinux copy_from_user_fixup 0x323cefec +vmlinux copy_fs_struct 0xb8e94a30 +vmlinux copy_in_user_fixup 0xf1c3b00e +vmlinux copy_io_context 0xfc0a19b0 +vmlinux copy_strings_kernel 0x556496d2 +vmlinux copy_to_user_fixup 0xf761c3ae +vmlinux copy_user_page 0x48720dce +vmlinux cpu_present_map 0x1a3f7887 +vmlinux cpu_sysdev_class 0x3acc7ae0 +vmlinux crc32_be 0xc09651d9 +vmlinux crc32_le 0x92ea4ae4 +vmlinux create_empty_buffers 0x9f9af60b +vmlinux create_proc_entry 0x37844591 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0x8a481687 +vmlinux crypto_free_tfm 0xcbff6c0b +vmlinux crypto_hmac 0xcdbb8fc5 +vmlinux crypto_hmac_final 0xbc15be94 +vmlinux crypto_hmac_init 0x1e372bcd +vmlinux crypto_hmac_update 0xaf64fa31 +vmlinux crypto_register_alg 0xfafd01e2 +vmlinux crypto_unregister_alg 0x6a987311 +vmlinux csum_partial 0x94095c16 +vmlinux csum_partial_copy_fromiovecend 0x883c8eca +vmlinux csum_partial_copy_nocheck 0xa2963be1 +vmlinux current_fs_time 0xff0312e0 +vmlinux current_io_context 0x5fc493f8 +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0x51ac72e1 +vmlinux d_alloc_anon 0x8f851075 +vmlinux d_alloc_name 0x23aa85ca +vmlinux d_alloc_root 0xb9513653 +vmlinux d_delete 0x6f6d10bd +vmlinux d_find_alias 0xed707a94 +vmlinux d_genocide 0x34b8cdb7 +vmlinux d_instantiate 0xd643fd0b +vmlinux d_instantiate_unique 0x81db6ceb +vmlinux d_invalidate 0x836295b3 +vmlinux d_lookup 0x3b7acc74 +vmlinux d_move 0xea8dd44b +vmlinux d_path 0x0af880f7 +vmlinux d_prune_aliases 0x48b8d458 +vmlinux d_rehash 0x39b5e90b +vmlinux d_splice_alias 0x64187ec8 +vmlinux d_validate 0xea2927e2 +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0x3faef274 +vmlinux dcache_dir_close 0x4ff46c8a +vmlinux dcache_dir_lseek 0x37962347 +vmlinux dcache_dir_open 0x37a8a25a +vmlinux dcache_lock 0x412ddc0c +vmlinux dcache_readdir 0x45c661f9 +vmlinux deactivate_super 0x2a612c36 +vmlinux default_backing_dev_info 0xad201779 +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0xa4b4ed28 +vmlinux default_llseek 0xf42ec039 +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x9a68c8fc +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0x962e1d93 +vmlinux del_timer 0xda264347 +vmlinux dentry_open 0x41723fdf +vmlinux dentry_unhash 0x2f0b9c5a +vmlinux dequeue_signal 0xa5105424 +vmlinux destroy_8023_client 0x3dae88df +vmlinux destroy_EII_client 0x4bce0142 +vmlinux destroy_workqueue 0x4d7537db +vmlinux dev_add_pack 0x1c8983a2 +vmlinux dev_alloc_name 0xed64dcb4 +vmlinux dev_base 0x8a2ac1d5 +vmlinux dev_base_lock 0x144ed3a1 +vmlinux dev_change_flags 0xa5b25e1f +vmlinux dev_close 0x15fc2f17 +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0xc5c79102 +vmlinux dev_get_by_index 0xf7883ec8 +vmlinux dev_get_by_name 0x5e7989b8 +vmlinux dev_get_flags 0xa8ae7a71 +vmlinux dev_getbyhwaddr 0x3ee28183 +vmlinux dev_getfirstbyhwtype 0x4259d72b +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0x9a415b6f +vmlinux dev_mc_delete 0xa448483a +vmlinux dev_mc_upload 0x9fa28abf +vmlinux dev_open 0x1cd9d3ed +vmlinux dev_queue_xmit 0x6a9ee434 +vmlinux dev_remove_pack 0x0631492a +vmlinux dev_set_allmulti 0x03cf1502 +vmlinux dev_set_mac_address 0x6b95b28f +vmlinux dev_set_mtu 0xf479b1aa +vmlinux dev_set_promiscuity 0x3d38c30e +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0xe0ad5ece +vmlinux device_attach 0x37595719 +vmlinux device_bind_driver 0x8dd96cda +vmlinux device_create_file 0x1f532b58 +vmlinux device_del 0x96978955 +vmlinux device_for_each_child 0xeb04ea55 +vmlinux device_initialize 0xf71548ff +vmlinux device_register 0x971bc4d3 +vmlinux device_release_driver 0xb52aa0ed +vmlinux device_remove_file 0x3c1f7aae +vmlinux device_unregister 0x19400908 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0x89f74a91 +vmlinux die_if_kernel 0xecd99124 +vmlinux disable_irq 0x3ce4ca6f +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_chain 0x037082d9 +vmlinux dma_get_required_mask 0x6f178d1b +vmlinux dma_pool_alloc 0xfcf0978b +vmlinux dma_pool_create 0x0bdbddf7 +vmlinux dma_pool_destroy 0x70121a3a +vmlinux dma_pool_free 0x2f7b20cd +vmlinux dma_spin_lock 0x9148c7ae +vmlinux dnotify_parent 0x31425f25 +vmlinux do_BUG 0x577f4bff +vmlinux do_SAK 0x892dcc48 +vmlinux do_add_mount 0xe7a48817 +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0xbba0ee92 +vmlinux do_gettimeofday 0x836a55de +vmlinux do_kern_mount 0x86fd9e57 +vmlinux do_mmap_pgoff 0x55f4a32b +vmlinux do_munmap 0x69ad28f4 +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x0fb0f3cf +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0x27cbbea7 +vmlinux do_sync_read 0x3ba7c762 +vmlinux do_sync_write 0x70c57830 +vmlinux do_unblank_screen 0x600683d3 +vmlinux down 0x9bdfa0ae +vmlinux down_interruptible 0xae8fd82a +vmlinux down_trylock 0x2564b90a +vmlinux dput 0x4fb26a1d +vmlinux dq_data_lock 0xee90884e +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x746b6527 +vmlinux dquot_alloc_inode 0xf68a2c6c +vmlinux dquot_alloc_space 0x32eafddc +vmlinux dquot_commit 0x304046ba +vmlinux dquot_commit_info 0xd319cb9c +vmlinux dquot_drop 0xc08b2efa +vmlinux dquot_free_inode 0x72d6a4e8 +vmlinux dquot_free_space 0xdcf9ea79 +vmlinux dquot_initialize 0xf3220571 +vmlinux dquot_mark_dquot_dirty 0xb66e2333 +vmlinux dquot_release 0x592d615e +vmlinux dquot_transfer 0x5c034146 +vmlinux drive_is_ready 0x2e190301 +vmlinux driver_attach 0xb5b60f01 +vmlinux driver_create_file 0x041b3d0c +vmlinux driver_find 0x0a1c6b81 +vmlinux driver_find_device 0xddd8173a +vmlinux driver_for_each_device 0xa32dfece +vmlinux driver_register 0xdfebfb2e +vmlinux driver_remove_file 0xebe35c25 +vmlinux driver_unregister 0x28f3f063 +vmlinux drm_addbufs_fb 0x69fba72c +vmlinux drm_addbufs_pci 0x4247dd72 +vmlinux drm_addmap 0x4f0beca4 +vmlinux drm_ati_pcigart_cleanup 0xd7235ddb +vmlinux drm_ati_pcigart_init 0x864bc1ca +vmlinux drm_compat_ioctl 0xafdb4c0b +vmlinux drm_core_get_map_ofs 0x064df683 +vmlinux drm_core_get_reg_ofs 0xc486425d +vmlinux drm_core_reclaim_buffers 0x7381070d +vmlinux drm_debug 0x20645642 +vmlinux drm_exit 0x78d3aaf2 +vmlinux drm_fasync 0xc18f8cc7 +vmlinux drm_get_dev 0x2a0b1e23 +vmlinux drm_get_resource_len 0x0b99aa4e +vmlinux drm_get_resource_start 0x5305b79f +vmlinux drm_init 0x10cfa23f +vmlinux drm_ioctl 0x9fa63f90 +vmlinux drm_irq_uninstall 0xd02c228f +vmlinux drm_mmap 0x380c66bf +vmlinux drm_open 0x54a5d386 +vmlinux drm_order 0x3074f033 +vmlinux drm_pci_alloc 0x04baaf84 +vmlinux drm_pci_free 0xf63d88c3 +vmlinux drm_poll 0xf3a824e6 +vmlinux drm_release 0xfcba630a +vmlinux drm_rmmap 0x73e4eb11 +vmlinux drm_rmmap_locked 0x5d43063a +vmlinux drm_vbl_send_signals 0xba893d5c +vmlinux drop_super 0xd212b2b0 +vmlinux dst_alloc 0x511b8f86 +vmlinux dst_destroy 0x39958ccf +vmlinux dump_fpu 0x9f866e26 +vmlinux dump_stack 0x6b2dc060 +vmlinux dump_thread 0xe2c24899 +vmlinux ebus_chain 0x328d339f +vmlinux ebus_dma_addr 0x35cdb1c6 +vmlinux ebus_dma_enable 0x4ed03247 +vmlinux ebus_dma_irq_enable 0xef8ff1ff +vmlinux ebus_dma_prepare 0x249e893f +vmlinux ebus_dma_register 0xd11a73c9 +vmlinux ebus_dma_request 0xd69532ef +vmlinux ebus_dma_residue 0xe175bd3a +vmlinux ebus_dma_unregister 0xa444111b +vmlinux eighty_ninty_three 0xe93412d5 +vmlinux elevator_exit 0x8d6f30d5 +vmlinux elevator_init 0xeb6ac082 +vmlinux elv_add_request 0xf3125ab0 +vmlinux elv_completed_request 0xc336fb31 +vmlinux elv_dequeue_request 0xf99b15c6 +vmlinux elv_dispatch_sort 0xf448ced3 +vmlinux elv_next_request 0xed980e64 +vmlinux elv_queue_empty 0xe02b3979 +vmlinux elv_register 0xda9060af +vmlinux elv_requeue_request 0x6a56c495 +vmlinux elv_rq_merge_ok 0xe6b10876 +vmlinux elv_try_merge 0x6fe83007 +vmlinux elv_unregister 0x91f3e4c3 +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_irq 0xfcec0987 +vmlinux end_buffer_async_write 0x0436cdbb +vmlinux end_buffer_read_sync 0x75e20e5d +vmlinux end_buffer_write_sync 0x370eb1ae +vmlinux end_page_writeback 0x74bba0ee +vmlinux end_request 0x1a415263 +vmlinux end_that_request_chunk 0xb3642b81 +vmlinux end_that_request_first 0x8bbfb1a5 +vmlinux end_that_request_last 0x020a464d +vmlinux eth_type_trans 0x4808a65d +vmlinux ether_setup 0xe3810add +vmlinux ethtool_op_get_link 0x54dbeb43 +vmlinux ethtool_op_get_perm_addr 0x75b3b9e6 +vmlinux ethtool_op_get_sg 0x9f2f7b30 +vmlinux ethtool_op_get_tso 0xb68cea20 +vmlinux ethtool_op_get_tx_csum 0x35b639c5 +vmlinux ethtool_op_get_ufo 0x40bd9dce +vmlinux ethtool_op_set_sg 0xb57cd90f +vmlinux ethtool_op_set_tso 0x57ff78a0 +vmlinux ethtool_op_set_tx_csum 0xe39a9373 +vmlinux ethtool_op_set_tx_hw_csum 0xe58f9213 +vmlinux ethtool_op_set_ufo 0x87918c81 +vmlinux exit_fs 0x56bd44b6 +vmlinux f_setown 0xe5d526dc +vmlinux fasync_helper 0x1ba0a816 +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x51596d8a +vmlinux fb_con_duit 0xfd829f55 +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0x621cdab7 +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0x492ddf5c +vmlinux fb_get_buffer_offset 0xcd4f986f +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0xe008788f +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0x5d88d5ae +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0x847e36fd +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0xfc35fb42 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0x0d9746d6 +vmlinux fb_set_suspend 0xa3290b43 +vmlinux fb_set_var 0x68087d23 +vmlinux fb_show_logo 0xd302a4dc +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x6f9f88eb +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fbcon_set_bitops 0x79e380cb +vmlinux fbcon_set_tileops 0x86744fc3 +vmlinux fd_install 0xff9b5f33 +vmlinux fddi_type_trans 0xdd0ab1ff +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x8d40ae6b +vmlinux file_fsync 0x922d51b5 +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0xf67cc23e +vmlinux filemap_fdatawait 0xba9eab19 +vmlinux filemap_fdatawrite 0x9fbbf19b +vmlinux filemap_flush 0xa0f2c489 +vmlinux filemap_nopage 0xa444d55d +vmlinux filemap_populate 0xb4777034 +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0x49d8cbbc +vmlinux filp_open 0xfd3abb6b +vmlinux find_bus 0x6e0bc999 +vmlinux find_font 0xf7584a9c +vmlinux find_get_page 0xa3659b37 +vmlinux find_inode_number 0x4d0197cd +vmlinux find_lock_page 0x867f4c82 +vmlinux find_next_bit 0xc0a3d105 +vmlinux find_next_zero_bit 0x479c3c86 +vmlinux find_next_zero_le_bit 0x39d87fb5 +vmlinux find_or_create_page 0xc702bb3f +vmlinux find_task_by_pid_type 0xad86d0af +vmlinux find_trylock_page 0x9a5397a1 +vmlinux find_vma 0xa05de8b3 +vmlinux finish_wait 0x51493d94 +vmlinux firmware_register 0x32df19bb +vmlinux firmware_unregister 0x60b6c96e +vmlinux flock_lock_file_wait 0x45967f07 +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_dcache_page 0xaed5cffe +vmlinux flush_icache_range 0x05186ca4 +vmlinux flush_old_exec 0x5bea2bc1 +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x22631e02 +vmlinux flush_workqueue 0xeb3a44ce +vmlinux follow_down 0xf8c9bfad +vmlinux follow_up 0x856783e6 +vmlinux force_sig 0x82be34ae +vmlinux fput 0x8d33c647 +vmlinux framebuffer_alloc 0xaad6e780 +vmlinux framebuffer_release 0x336e7747 +vmlinux free_buffer_head 0xc24eace0 +vmlinux free_dma 0x72b243d4 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0x3d0e7512 +vmlinux free_pages 0x4302d0eb +vmlinux free_task 0x853b4da5 +vmlinux freeze_bdev 0x7980daab +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0xdf8d9495 +vmlinux gen_kill_estimator 0xa4a74611 +vmlinux gen_new_estimator 0x286fcb70 +vmlinux gen_replace_estimator 0xa58ebb71 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic_block_bmap 0x34ba231f +vmlinux generic_commit_write 0x3d2e3d4e +vmlinux generic_cont_expand 0x5282047c +vmlinux generic_delete_inode 0x9a8264e9 +vmlinux generic_drop_inode 0xe0024efe +vmlinux generic_file_aio_read 0x03ea21ce +vmlinux generic_file_aio_write 0x31cf0a5c +vmlinux generic_file_aio_write_nolock 0x62cef7e1 +vmlinux generic_file_buffered_write 0xb5521462 +vmlinux generic_file_direct_write 0x1898569f +vmlinux generic_file_llseek 0xb3b4674c +vmlinux generic_file_mmap 0xff44dff2 +vmlinux generic_file_open 0xa3b2581f +vmlinux generic_file_read 0x28f372f5 +vmlinux generic_file_readonly_mmap 0x94800019 +vmlinux generic_file_readv 0x35e0e086 +vmlinux generic_file_sendfile 0xcce13690 +vmlinux generic_file_write 0x7a0de872 +vmlinux generic_file_write_nolock 0x1eb66f15 +vmlinux generic_file_writev 0xbb041934 +vmlinux generic_fillattr 0xf6eb65af +vmlinux generic_getxattr 0x8b2d1fb6 +vmlinux generic_ide_ioctl 0xa55a9874 +vmlinux generic_listxattr 0xd1bcbfdc +vmlinux generic_make_request 0xe6a0fdc0 +vmlinux generic_osync_inode 0xa5be84d9 +vmlinux generic_permission 0x732f3ef2 +vmlinux generic_read_dir 0xc1fdad10 +vmlinux generic_readlink 0xedbc853e +vmlinux generic_removexattr 0xda5e6b03 +vmlinux generic_ro_fops 0x1865ff94 +vmlinux generic_setxattr 0x6827702e +vmlinux generic_shutdown_super 0x0bd37de3 +vmlinux generic_unplug_device 0xc8263600 +vmlinux generic_write_checks 0xade607a4 +vmlinux genl_register_family 0x071a39a9 +vmlinux genl_register_ops 0x1929c50b +vmlinux genl_sock 0x7cb99718 +vmlinux genl_unregister_family 0x5a8609cb +vmlinux genl_unregister_ops 0x779fc25b +vmlinux get_bus 0x31009d12 +vmlinux get_cpu_sysdev 0x27c38966 +vmlinux get_default_font 0x093e3659 +vmlinux get_device 0x4b948b10 +vmlinux get_disk 0x77ee3788 +vmlinux get_driver 0x8c57f6d9 +vmlinux get_empty_filp 0xbe468551 +vmlinux get_fb_unmapped_area 0xea8831c8 +vmlinux get_fs_type 0x5406aa2c +vmlinux get_io_context 0x1e1aa862 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0x498f2891 +vmlinux get_sb_nodev 0xde3ce788 +vmlinux get_sb_pseudo 0xb20e1f13 +vmlinux get_sb_single 0x8e90b494 +vmlinux get_super 0x9915ea86 +vmlinux get_task_mm 0xd8eaddfd +vmlinux get_unmapped_area 0xe4f1d357 +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x1d109044 +vmlinux get_write_access 0xe6a20be4 +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x11ddee23 +vmlinux gnet_stats_copy_app 0x9d2f8b6a +vmlinux gnet_stats_copy_basic 0x3f69739b +vmlinux gnet_stats_copy_queue 0x257c3314 +vmlinux gnet_stats_copy_rate_est 0x8753668e +vmlinux gnet_stats_finish_copy 0x22e6f378 +vmlinux gnet_stats_start_copy 0x890e925f +vmlinux gnet_stats_start_copy_compat 0xf640bddf +vmlinux grab_cache_page_nowait 0xa2c73ecf +vmlinux groups_alloc 0xda9f6355 +vmlinux groups_free 0x41ac4793 +vmlinux half_md4_transform 0x6def2db2 +vmlinux have_submounts 0xe51ceb4f +vmlinux high_memory 0x8a7d1c31 +vmlinux hwmon_device_register 0xd99e3482 +vmlinux hwmon_device_unregister 0x6f712036 +vmlinux i2c_adapter_class 0x22459748 +vmlinux i2c_adapter_dev_release 0x14d1caf8 +vmlinux i2c_adapter_driver 0xb47bd707 +vmlinux i2c_add_adapter 0x15e24dc7 +vmlinux i2c_add_driver 0x1191c6b0 +vmlinux i2c_attach_client 0xf46e6f66 +vmlinux i2c_bit_add_bus 0x3667c364 +vmlinux i2c_bit_del_bus 0xbe828b71 +vmlinux i2c_bus_type 0xf09cc5e9 +vmlinux i2c_check_addr 0x4ec29d8e +vmlinux i2c_clients_command 0x52964c2d +vmlinux i2c_control 0x93a3b8ea +vmlinux i2c_del_adapter 0xccc63aa9 +vmlinux i2c_del_driver 0x5e2361e3 +vmlinux i2c_detach_client 0x58511f0a +vmlinux i2c_get_adapter 0x099ca0e4 +vmlinux i2c_master_recv 0x6329d465 +vmlinux i2c_master_send 0x6b50e04d +vmlinux i2c_probe 0xe68e95b9 +vmlinux i2c_put_adapter 0xe0d5e7ae +vmlinux i2c_release_client 0xb3da90b3 +vmlinux i2c_smbus_read_byte 0xe7fdebd1 +vmlinux i2c_smbus_read_byte_data 0x58c9220f +vmlinux i2c_smbus_read_i2c_block_data 0xa57eb52e +vmlinux i2c_smbus_read_word_data 0x4c444c85 +vmlinux i2c_smbus_write_block_data 0xec84ec20 +vmlinux i2c_smbus_write_byte 0xb642a385 +vmlinux i2c_smbus_write_byte_data 0xc3a80c27 +vmlinux i2c_smbus_write_quick 0x45524975 +vmlinux i2c_smbus_write_word_data 0x77e1a30e +vmlinux i2c_smbus_xfer 0x05a9f88f +vmlinux i2c_transfer 0x5da842e1 +vmlinux i2c_use_client 0x30b7f464 +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0xbc3f8ac6 +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_add_setting 0x861adcc3 +vmlinux ide_build_dmatable 0xae393119 +vmlinux ide_build_sglist 0x22a586fd +vmlinux ide_bus_type 0xf8aa84c8 +vmlinux ide_config_drive_speed 0x1a5ee207 +vmlinux ide_destroy_dmatable 0xde18dc4f +vmlinux ide_dma_enable 0x912e7201 +vmlinux ide_dma_intr 0x5791f058 +vmlinux ide_dma_setup 0xd62995c6 +vmlinux ide_dma_speed 0x4f6c14d7 +vmlinux ide_dma_start 0xaa41fd9c +vmlinux ide_dma_verbose 0x79f5c4e8 +vmlinux ide_do_drive_cmd 0xd5528f99 +vmlinux ide_do_reset 0x3225c7d5 +vmlinux ide_dump_status 0x190d2c1d +vmlinux ide_end_drive_cmd 0x33c4ba47 +vmlinux ide_end_request 0xccecd223 +vmlinux ide_error 0x0a1d527b +vmlinux ide_execute_command 0x344e8685 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x142a890d +vmlinux ide_get_error_location 0x717084ef +vmlinux ide_hwifs 0x742062e2 +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0x2e08a3a4 +vmlinux ide_init_drive_cmd 0xf5cf323b +vmlinux ide_init_sg_cmd 0x3e0f6b88 +vmlinux ide_lock 0xf1dced4c +vmlinux ide_map_sg 0x4efa3d6b +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x8a3c6d0c +vmlinux ide_pci_unregister_driver 0xd3bc54a7 +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0x32988ee3 +vmlinux ide_register_hw 0x67bae53b +vmlinux ide_register_hw_with_fixup 0xae600805 +vmlinux ide_register_region 0xc56d3d68 +vmlinux ide_register_subdriver 0x8f7bb675 +vmlinux ide_set_handler 0x258a66fb +vmlinux ide_set_xfer_rate 0xd3cb1535 +vmlinux ide_setup_dma 0xd8c7e255 +vmlinux ide_setup_pci_device 0x69f343e6 +vmlinux ide_setup_pci_devices 0xeee2e56d +vmlinux ide_setup_pci_noise 0x5f35b870 +vmlinux ide_spin_wait_hwgroup 0xa10b2bbd +vmlinux ide_stall_queue 0xf797a7e5 +vmlinux ide_undecoded_slave 0x83ee0ebd +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0xf8bbabfc +vmlinux ide_unregister_subdriver 0xd06f1cb5 +vmlinux ide_use_dma 0x9631d0d4 +vmlinux ide_wait_not_busy 0x53161fca +vmlinux ide_wait_stat 0x18a97e93 +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idprom 0x807c20ca +vmlinux idr_destroy 0x34f9e7d5 +vmlinux idr_find 0x3b17b71d +vmlinux idr_get_new 0xc29e86a1 +vmlinux idr_get_new_above 0x7b022e51 +vmlinux idr_init 0x54b9c5cd +vmlinux idr_pre_get 0x6c072e4f +vmlinux idr_remove 0x2d69aeff +vmlinux iget5_locked 0x822fe5b1 +vmlinux iget_locked 0x33aa909a +vmlinux igrab 0x6d085372 +vmlinux ilookup 0x37030e73 +vmlinux ilookup5 0xfabead04 +vmlinux ilookup5_nowait 0xe24c19c2 +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0x8ca72357 +vmlinux in_egroup_p 0x42a4bdf2 +vmlinux in_group_p 0x31ebadcd +vmlinux inet6_lookup 0xa8b1f882 +vmlinux inet6_lookup_listener 0xcdd7be38 +vmlinux inet_accept 0xeeab2853 +vmlinux inet_add_protocol 0xd41b9154 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0x2961409f +vmlinux inet_bind_bucket_create 0x34f6f317 +vmlinux inet_bind_hash 0x16864b00 +vmlinux inet_csk_accept 0xa24690ff +vmlinux inet_csk_clear_xmit_timers 0x6a8eb9bb +vmlinux inet_csk_clone 0x24477bd6 +vmlinux inet_csk_delete_keepalive_timer 0xd8617dd1 +vmlinux inet_csk_destroy_sock 0xe676974a +vmlinux inet_csk_get_port 0x499ad038 +vmlinux inet_csk_init_xmit_timers 0xa4a0870c +vmlinux inet_csk_listen_start 0x3211d5fd +vmlinux inet_csk_listen_stop 0x6cbe5ee3 +vmlinux inet_csk_reqsk_queue_hash_add 0x32469d0c +vmlinux inet_csk_reqsk_queue_prune 0x0fd5445f +vmlinux inet_csk_reset_keepalive_timer 0xa0d66808 +vmlinux inet_csk_route_req 0x36429638 +vmlinux inet_csk_search_req 0xaef0f3ff +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0xc0959070 +vmlinux inet_dgram_connect 0x20b73257 +vmlinux inet_dgram_ops 0xe578d69e +vmlinux inet_diag_register 0xa7ece9a8 +vmlinux inet_diag_unregister 0xcd6ec8f7 +vmlinux inet_getname 0x76247410 +vmlinux inet_ioctl 0xe3720f6a +vmlinux inet_listen 0x78503a86 +vmlinux inet_listen_wlock 0x789d1632 +vmlinux inet_put_port 0xb4c0e685 +vmlinux inet_register_protosw 0x8d51fd36 +vmlinux inet_release 0xbc0921e2 +vmlinux inet_select_addr 0x9f0d5bf0 +vmlinux inet_sendmsg 0x3d9456f6 +vmlinux inet_shutdown 0xbd6be8b4 +vmlinux inet_sk_rebuild_header 0xa6de1fb4 +vmlinux inet_sock_destruct 0x2b09f7d6 +vmlinux inet_stream_connect 0x4ccf3bd3 +vmlinux inet_stream_ops 0x85b96fda +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x55dbc4e9 +vmlinux inet_twsk_deschedule 0xfcd50cc3 +vmlinux inet_twsk_schedule 0x6c1db4b2 +vmlinux inet_unregister_protosw 0xd3b23ac8 +vmlinux inetdev_by_index 0x5e0cbbaf +vmlinux init_buffer 0x67423112 +vmlinux init_mm 0xe718738a +vmlinux init_special_inode 0x90183f28 +vmlinux init_task 0x666bcf90 +vmlinux init_timer 0x6c9087dd +vmlinux inode_add_bytes 0xa2045a98 +vmlinux inode_change_ok 0x0cc2e4fe +vmlinux inode_get_bytes 0xe0fb032a +vmlinux inode_init_once 0x8067970f +vmlinux inode_needs_sync 0x6c18b3b1 +vmlinux inode_set_bytes 0xbe955fa3 +vmlinux inode_setattr 0x2467ee03 +vmlinux inode_sub_bytes 0x9c0dceca +vmlinux inode_update_time 0xdbad9d6f +vmlinux inotify_dentry_parent_queue_event 0xdd206c0a +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0x854b6fc4 +vmlinux inotify_inode_queue_event 0x7cd60cee +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0x40bfe513 +vmlinux input_allocate_device 0xcab9631b +vmlinux input_class 0x15581a81 +vmlinux input_close_device 0x7fa2e26e +vmlinux input_event 0x42181211 +vmlinux input_flush_device 0x5d422521 +vmlinux input_grab_device 0xade092d8 +vmlinux input_open_device 0xca3ee7ec +vmlinux input_register_device 0xcc07b585 +vmlinux input_register_handler 0x63209f3f +vmlinux input_release_device 0xeadc090e +vmlinux input_unregister_device 0xb7c0af78 +vmlinux input_unregister_handler 0x6d9068e3 +vmlinux insb 0x10902bf7 +vmlinux insert_resource 0xdc3992ac +vmlinux insl 0x73e0877a +vmlinux install_page 0xf1f5813e +vmlinux insw 0x69010b06 +vmlinux int_sqrt 0xb678366f +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0xd2d2878e +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0xf9b28bac +vmlinux interruptible_sleep_on_timeout 0xf51c639f +vmlinux invalidate_bdev 0x9e678b1d +vmlinux invalidate_inode_pages 0x4152ea56 +vmlinux invalidate_inode_pages2 0x5a741009 +vmlinux invalidate_inode_pages2_range 0x7724ce15 +vmlinux invalidate_inodes 0xa9593445 +vmlinux invalidate_partition 0xcc8bb7de +vmlinux io_remap_pfn_range 0xd8455bfd +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0x6cdbd6c1 +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux iov_shorten 0x92392cd9 +vmlinux ip4_datagram_connect 0xa4483802 +vmlinux ip_build_and_send_pkt 0x37bc748b +vmlinux ip_cmsg_recv 0xbaff27fa +vmlinux ip_ct_attach 0xd53d04c7 +vmlinux ip_defrag 0x2b5c540c +vmlinux ip_fast_csum 0x567801ab +vmlinux ip_fragment 0xc656eafb +vmlinux ip_generic_getfrag 0x0f91411a +vmlinux ip_getsockopt 0x6ff17093 +vmlinux ip_mc_dec_group 0x534cf3d6 +vmlinux ip_mc_inc_group 0x2353f4a7 +vmlinux ip_mc_join_group 0x35822997 +vmlinux ip_queue_xmit 0xeb988f5b +vmlinux ip_route_input 0x41354e26 +vmlinux ip_route_me_harder 0x7c12253b +vmlinux ip_route_output_flow 0x47fcd811 +vmlinux ip_route_output_key 0x947fa37f +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0x434ccab0 +vmlinux ip_setsockopt 0x5a6fc34a +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0x810e3c0e +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0x1b05f632 +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0x3239ba9b +vmlinux is_bad_inode 0x00305263 +vmlinux is_console_locked 0x944a564d +vmlinux isa_chain 0x7a87e7ca +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux iunique 0x6eaea858 +vmlinux ivector_table 0x69eeaab3 +vmlinux iw_handler_get_spy 0x544c93b5 +vmlinux iw_handler_get_thrspy 0xc0ce7a48 +vmlinux iw_handler_set_spy 0x061577ef +vmlinux iw_handler_set_thrspy 0x89400ec4 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xd8c98779 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x67807582 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0x8792c859 +vmlinux kernel_recvmsg 0x3682c3b7 +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0x474898cc +vmlinux kernel_subsys 0x2ae9a0d4 +vmlinux kernel_thread 0x439090b9 +vmlinux kfifo_alloc 0x8f9b86b2 +vmlinux kfifo_free 0x4719ba4e +vmlinux kfifo_init 0x4b9f3684 +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0xb95357c9 +vmlinux kill_anon_super 0x1d8856d8 +vmlinux kill_block_super 0x5ff6d201 +vmlinux kill_fasync 0x20e5b851 +vmlinux kill_litter_super 0x7b3af939 +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xfe8c2a28 +vmlinux klist_add_head 0x915acc1f +vmlinux klist_add_tail 0x89578b6b +vmlinux klist_del 0x84a1bc7c +vmlinux klist_init 0x9ea2eecb +vmlinux klist_iter_exit 0xb4d64e3c +vmlinux klist_iter_init 0x2cd3a4fb +vmlinux klist_iter_init_node 0xa3e837a8 +vmlinux klist_next 0xd5dd30ac +vmlinux klist_node_attached 0xba549831 +vmlinux klist_remove 0x99b82416 +vmlinux km_new_mapping 0xaed47433 +vmlinux km_policy_notify 0xd0f0d004 +vmlinux km_state_notify 0x9fb1e4ce +vmlinux km_waitq 0xef1a1668 +vmlinux kmem_cache_alloc 0x98517e6b +vmlinux kmem_cache_create 0x53d50378 +vmlinux kmem_cache_destroy 0xbee5c8f9 +vmlinux kmem_cache_free 0x7ee47cf4 +vmlinux kmem_cache_name 0xadc3dd9b +vmlinux kmem_cache_shrink 0xab870157 +vmlinux kmem_cache_size 0x7a00d9c8 +vmlinux kmem_find_general_cachep 0xc7c96f0d +vmlinux kobject_add 0xcece92cf +vmlinux kobject_del 0x149d05ba +vmlinux kobject_get 0xa393f684 +vmlinux kobject_hotplug 0x4da6ab35 +vmlinux kobject_init 0x1d936d7d +vmlinux kobject_put 0xc9350a8f +vmlinux kobject_register 0x7197d155 +vmlinux kobject_set_name 0x8fee5956 +vmlinux kobject_uevent 0x1c3ce7a4 +vmlinux kobject_uevent_atomic 0xe97c1665 +vmlinux kobject_unregister 0x208bab70 +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x406d1b32 +vmlinux kset_register 0x0102e508 +vmlinux kset_unregister 0xf40876c9 +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0xf39f8d0b +vmlinux kthread_create 0x735a0dea +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0x17e1c70b +vmlinux kthread_stop_sem 0xbaa27cd6 +vmlinux kzalloc 0x5a3b6eca +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0xf64d160b +vmlinux lease_modify 0x7375a590 +vmlinux linkwatch_fire_event 0x51c82fe3 +vmlinux linux_sparc_syscall 0x1fc8cd4d +vmlinux ll_rw_block 0xd76de5c4 +vmlinux load_nls 0x68e2016e +vmlinux load_nls_default 0x8eb03aeb +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_may_read 0xf0b9b2a5 +vmlinux lock_may_write 0xe27da447 +vmlinux lock_rename 0x184b26b9 +vmlinux lock_sock 0x20311b7a +vmlinux locks_copy_lock 0xc0c8862b +vmlinux locks_init_lock 0xe4973df2 +vmlinux locks_mandatory_area 0x12311e25 +vmlinux locks_remove_posix 0xbbe9cc5d +vmlinux lookup_create 0x5665a6d3 +vmlinux lookup_hash 0x49785c05 +vmlinux lookup_instantiate_filp 0x84125754 +vmlinux lookup_one_len 0x45ac6ec3 +vmlinux loop_register_transfer 0x7f1920ce +vmlinux loop_unregister_transfer 0xbfee3ad5 +vmlinux loopback_dev 0xb3c69e68 +vmlinux loops_per_jiffy 0xba497f13 +vmlinux mac_find_mode 0x2171cbba +vmlinux mac_map_monitor_sense 0xe2304303 +vmlinux mac_var_to_vmode 0x00907cd5 +vmlinux mac_vmode_to_var 0x08ed0b62 +vmlinux make_8023_client 0x278024d0 +vmlinux make_EII_client 0xbf8a12dc +vmlinux make_bad_inode 0xdd58cd83 +vmlinux malloc_sizes 0x688c195e +vmlinux mapping_tagged 0xddde7336 +vmlinux mark_buffer_async_write 0xd3a77ada +vmlinux mark_buffer_dirty 0x4fc8532e +vmlinux mark_buffer_dirty_inode 0x65d4baea +vmlinux mark_info_dirty 0xaaca333b +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0xf3b5148e +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_mapnr 0x01139ffc +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0x4d261f8a +vmlinux may_umount_tree 0x7405e8af +vmlinux mb_cache_create 0xc93fa6e4 +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0x246ddea1 +vmlinux mb_cache_entry_find_first 0x71889786 +vmlinux mb_cache_entry_find_next 0xfeed4ffb +vmlinux mb_cache_entry_free 0xce8debb7 +vmlinux mb_cache_entry_get 0xf1839f97 +vmlinux mb_cache_entry_insert 0xe185728a +vmlinux mb_cache_entry_release 0x67308c29 +vmlinux mb_cache_shrink 0xb3e3084a +vmlinux mem_map 0x35d05531 +vmlinux mem_section 0xa1dd15ba +vmlinux memchr 0xc740c64a +vmlinux memcmp 0xc7ec28b0 +vmlinux memcpy 0x6067a146 +vmlinux memcpy_fromiovec 0x36139a51 +vmlinux memcpy_fromiovecend 0x9bc565c5 +vmlinux memcpy_toiovec 0x2876a6d3 +vmlinux memmove 0x5dbbe98e +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xab53b0a8 +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0x1f7cc628 +vmlinux mempool_create_node 0xd3427f73 +vmlinux mempool_destroy 0xac54fc9f +vmlinux mempool_free 0x062aba95 +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x25ba121c +vmlinux memset 0x3fa03a97 +vmlinux mii_phy_probe 0x4e07f552 +vmlinux misc_deregister 0x173e3b00 +vmlinux misc_register 0xbf875327 +vmlinux mmput 0x9aa31365 +vmlinux mnt_pin 0x123f0aca +vmlinux mnt_unpin 0x2a9ded19 +vmlinux mntput_no_expire 0x2d67f119 +vmlinux mod_reg_security 0x1c500cd5 +vmlinux mod_timer 0x56662b32 +vmlinux mod_unreg_security 0x68d68401 +vmlinux module_add_driver 0x82a1a4fd +vmlinux module_refcount 0xaef3e588 +vmlinux module_remove_driver 0xfb5baf21 +vmlinux mostek_lock 0xf65e64bb +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0xec75ac14 +vmlinux mpage_readpages 0x6f13e991 +vmlinux mpage_writepage 0xe283b00e +vmlinux mpage_writepages 0x818a2720 +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux mstk48t02_regs 0xe2e47af7 +vmlinux n_tty_ioctl 0x5ee94bd3 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x92a06c02 +vmlinux neigh_app_ns 0x3fdab7cb +vmlinux neigh_changeaddr 0xcb47edfc +vmlinux neigh_compat_output 0xc14ee689 +vmlinux neigh_connected_output 0xbd5a5c53 +vmlinux neigh_create 0x5d813c5c +vmlinux neigh_delete 0x572caca4 +vmlinux neigh_destroy 0xe96bfba5 +vmlinux neigh_dump_info 0xf03351e3 +vmlinux neigh_event_ns 0x97d25906 +vmlinux neigh_for_each 0x60dc92f9 +vmlinux neigh_ifdown 0xe72f4aa2 +vmlinux neigh_lookup 0x546fe719 +vmlinux neigh_lookup_nodev 0x1193148e +vmlinux neigh_parms_alloc 0x35160973 +vmlinux neigh_parms_release 0x58a84af6 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0xe37b06e9 +vmlinux neigh_seq_next 0x6a7cf15d +vmlinux neigh_seq_start 0x7bd43faf +vmlinux neigh_seq_stop 0x8e35a759 +vmlinux neigh_sysctl_register 0xc20a467c +vmlinux neigh_sysctl_unregister 0x52a621d2 +vmlinux neigh_table_clear 0x7ae04186 +vmlinux neigh_table_init 0xcf161b72 +vmlinux neigh_update 0xc5c5baa3 +vmlinux neigh_update_hhs 0xf7d1069f +vmlinux neightbl_dump_info 0x53863f29 +vmlinux neightbl_set 0x715e87b3 +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0xcf55a61e +vmlinux netdev_features_change 0x5a918e8e +vmlinux netdev_rx_csum_fault 0xed7ad04f +vmlinux netdev_set_master 0xe8bb8ed0 +vmlinux netdev_state_change 0x81eb02c9 +vmlinux netif_carrier_off 0x5e7f8a8c +vmlinux netif_carrier_on 0xb5f3444d +vmlinux netif_receive_skb 0x29939aa2 +vmlinux netif_rx 0xb71a8581 +vmlinux netif_rx_ni 0xdd522872 +vmlinux netlink_ack 0x1b2df1f5 +vmlinux netlink_broadcast 0x42292a52 +vmlinux netlink_dump_start 0x7103464c +vmlinux netlink_kernel_create 0x73789b85 +vmlinux netlink_queue_skip 0x38145689 +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0x12be7c78 +vmlinux netlink_set_err 0xdd349119 +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0x253b7b4f +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x95cc017b +vmlinux netpoll_parse_options 0x98bd4dba +vmlinux netpoll_poll 0x1edc7afe +vmlinux netpoll_queue 0xfe1adf3c +vmlinux netpoll_send_udp 0xbf2b0ecc +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0x7a157739 +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0x0a587943 +vmlinux next_thread 0x24138547 +vmlinux nf_ct_attach 0xcfd8e317 +vmlinux nf_getsockopt 0x2d495301 +vmlinux nf_hook_slow 0xb690aa77 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0xdc6e8b84 +vmlinux nf_log_register 0x6bd0f113 +vmlinux nf_log_unregister_logger 0x3663584b +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0x2f902e96 +vmlinux nf_register_queue_handler 0x4fb5a4af +vmlinux nf_register_queue_rerouter 0x829b40ce +vmlinux nf_register_sockopt 0x35e7c04d +vmlinux nf_reinject 0x1716098a +vmlinux nf_setsockopt 0x377237c8 +vmlinux nf_unregister_hook 0x463b10e8 +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0xfeca2327 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x2142e0f8 +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0x4c4c956e +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0x160bae9c +vmlinux nla_reserve 0x8ebca0b1 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0xa33f7c7c +vmlinux nla_validate 0x2cc98162 +vmlinux no_llseek 0xfa3c083e +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x2f162283 +vmlinux nobh_prepare_write 0xd8ed936c +vmlinux nobh_truncate_page 0xaec5e3fd +vmlinux nobh_writepage 0x935081bb +vmlinux node_online_map 0x6a7acf23 +vmlinux node_possible_map 0x33eca077 +vmlinux nonseekable_open 0x33a00c01 +vmlinux noop_qdisc 0x3fe0b0c0 +vmlinux noop_qdisc_ops 0x45636044 +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x71e82de6 +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux ns87303_lock 0x5601937e +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0x9fb2efae +vmlinux open_by_devnum 0x2940304f +vmlinux open_exec 0x714f1388 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux outsb 0x12ea337e +vmlinux outsl 0x24bd930a +vmlinux outsw 0x533903d8 +vmlinux overflowgid 0x7171121c +vmlinux overflowuid 0x8b618d08 +vmlinux p80211_resume 0x1891213c +vmlinux p80211_suspend 0x3aa07a53 +vmlinux p80211netdev_hwremoved 0x289c8852 +vmlinux p80211netdev_rx 0x6ef038ed +vmlinux p80211skb_free 0xf33ab496 +vmlinux p80211skb_rxmeta_attach 0x74758b6b +vmlinux page_follow_link_light 0x53c7f42c +vmlinux page_put_link 0x288af9ec +vmlinux page_readlink 0xf2e271a8 +vmlinux page_symlink 0xb6bf9aea +vmlinux page_symlink_inode_operations 0xc9f4f53b +vmlinux pagevec_lookup_tag 0xeeda2a14 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0x3b76b2fa +vmlinux path_release 0xddefc1ab +vmlinux path_walk 0x7f69868a +vmlinux pci_add_new_bus 0x4e1b75a9 +vmlinux pci_alloc_consistent 0x002e4291 +vmlinux pci_assign_resource 0x525b993e +vmlinux pci_block_user_cfg_access 0x607714e9 +vmlinux pci_bus_add_device 0x9d7141c2 +vmlinux pci_bus_add_devices 0x10bf64c3 +vmlinux pci_bus_alloc_resource 0x622e5315 +vmlinux pci_bus_assign_resources 0x727c9a6e +vmlinux pci_bus_find_capability 0x3bd1477b +vmlinux pci_bus_max_busnr 0xadad85fa +vmlinux pci_bus_read_config_byte 0x8f3bf907 +vmlinux pci_bus_read_config_dword 0x1bc2cc5a +vmlinux pci_bus_read_config_word 0xdbd88483 +vmlinux pci_bus_size_bridges 0x9c45d5b0 +vmlinux pci_bus_type 0x411609bc +vmlinux pci_bus_write_config_byte 0x5d3cbd99 +vmlinux pci_bus_write_config_dword 0x9d4dbd13 +vmlinux pci_bus_write_config_word 0xa62b7d0a +vmlinux pci_choose_state 0x95e5bee2 +vmlinux pci_clear_mwi 0xe9169780 +vmlinux pci_create_bus 0x90d583d4 +vmlinux pci_dev_driver 0x2460bb3c +vmlinux pci_dev_get 0x727119c3 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0x62fd8e80 +vmlinux pci_disable_device 0x61a84000 +vmlinux pci_dma_supported 0xbe166247 +vmlinux pci_dma_sync_sg_for_cpu 0xe800c73a +vmlinux pci_dma_sync_single_for_cpu 0xaa44a132 +vmlinux pci_do_scan_bus 0x19f1f976 +vmlinux pci_domain_nr 0x0a38bbbd +vmlinux pci_enable_bridges 0x376e3d5b +vmlinux pci_enable_device 0x768d26ed +vmlinux pci_enable_device_bars 0x63b1631c +vmlinux pci_enable_wake 0x44c8e122 +vmlinux pci_find_bus 0xd2378282 +vmlinux pci_find_capability 0x4d03b0c6 +vmlinux pci_find_device 0x0a2ac5f8 +vmlinux pci_find_device_reverse 0x375af5ee +vmlinux pci_find_next_bus 0xa2bad05b +vmlinux pci_find_next_capability 0x2606551f +vmlinux pci_find_parent_resource 0x5434f573 +vmlinux pci_find_slot 0x5b6467b5 +vmlinux pci_fixup_device 0xed80bb0f +vmlinux pci_free_consistent 0xbdf69aa6 +vmlinux pci_get_class 0x83f65580 +vmlinux pci_get_device 0xd250ce48 +vmlinux pci_get_slot 0xa2c65b34 +vmlinux pci_get_subsys 0xbb037f2d +vmlinux pci_intx 0x66dd1408 +vmlinux pci_iomap 0x6d143298 +vmlinux pci_iommu_ops 0xfbc638b4 +vmlinux pci_iounmap 0xc4d61f1b +vmlinux pci_map_rom 0xa9b26c34 +vmlinux pci_map_rom_copy 0x0b92cbf4 +vmlinux pci_map_sg 0x497bac9b +vmlinux pci_map_single 0x6392d370 +vmlinux pci_match_device 0x76a4910a +vmlinux pci_match_id 0x79b39c5b +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_memspace_mask 0xa495fc39 +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0xe746372e +vmlinux pci_proc_attach_device 0xf2184ad3 +vmlinux pci_proc_detach_bus 0x2c306893 +vmlinux pci_release_region 0x8b1aaa4c +vmlinux pci_release_regions 0xb2b00148 +vmlinux pci_remove_behind_bridge 0xbd388f35 +vmlinux pci_remove_bus 0x754b6e55 +vmlinux pci_remove_bus_device 0xdfd3fd55 +vmlinux pci_remove_device_safe 0xb4d88b3c +vmlinux pci_remove_rom 0x4aa47419 +vmlinux pci_request_region 0xc4c1ef65 +vmlinux pci_request_regions 0x387ef9ec +vmlinux pci_restore_bars 0xd0175483 +vmlinux pci_restore_state 0x148c5378 +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0x40fccf53 +vmlinux pci_scan_bridge 0x0b0c7653 +vmlinux pci_scan_bus_parented 0xd3389fec +vmlinux pci_scan_child_bus 0x9b2c5908 +vmlinux pci_scan_single_device 0x17c548fd +vmlinux pci_scan_slot 0x3400a1d4 +vmlinux pci_set_consistent_dma_mask 0xc0912c18 +vmlinux pci_set_dma_mask 0x402a2e3b +vmlinux pci_set_master 0xe9cd6534 +vmlinux pci_set_mwi 0xbbf26073 +vmlinux pci_set_power_state 0x7c1de879 +vmlinux pci_setup_cardbus 0xf2374dda +vmlinux pci_unblock_user_cfg_access 0xcc6774ca +vmlinux pci_unmap_rom 0xe751986a +vmlinux pci_unmap_sg 0x71d3e023 +vmlinux pci_unmap_single 0xb0fd8423 +vmlinux pci_unregister_driver 0x4f2390af +vmlinux pci_walk_bus 0x8556553e +vmlinux pcibios_bus_to_resource 0x31c5305d +vmlinux pcibios_resource_to_bus 0x58613dd5 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux per_cpu____cpu_data 0x174c5f20 +vmlinux per_cpu__kstat 0x11abe0a7 +vmlinux per_cpu__softnet_data 0x9ecaaa0d +vmlinux permission 0x34edf5b1 +vmlinux pfifo_qdisc_ops 0x1def5204 +vmlinux platform_add_devices 0x3bb9a57f +vmlinux platform_bus 0x1b8066e5 +vmlinux platform_bus_type 0x42e17bc7 +vmlinux platform_device_add 0x61851922 +vmlinux platform_device_add_data 0x163025c5 +vmlinux platform_device_add_resources 0xff040d3a +vmlinux platform_device_alloc 0x1f47cf64 +vmlinux platform_device_put 0x35fab9b9 +vmlinux platform_device_register 0x15d9f57f +vmlinux platform_device_register_simple 0x2de3079e +vmlinux platform_device_unregister 0x2f03666f +vmlinux platform_driver_register 0x25a50f3f +vmlinux platform_driver_unregister 0x654d2042 +vmlinux platform_get_irq 0x555e8e74 +vmlinux platform_get_irq_byname 0xbefbc846 +vmlinux platform_get_resource 0xfa6055bd +vmlinux platform_get_resource_byname 0x34c327df +vmlinux pneigh_enqueue 0x97899cd8 +vmlinux pneigh_lookup 0xab9b5ff7 +vmlinux poll_freewait 0xfe9ff25b +vmlinux poll_initwait 0x5996caa5 +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0x83c43dc1 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x886aa274 +vmlinux posix_acl_equiv_mode 0x50d56018 +vmlinux posix_acl_from_mode 0x8c537c45 +vmlinux posix_acl_from_xattr 0x42acbf72 +vmlinux posix_acl_permission 0x43e084cf +vmlinux posix_acl_to_xattr 0xb055d8da +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0x16375f29 +vmlinux posix_lock_file 0xa7960079 +vmlinux posix_lock_file_wait 0x1b8fa3a7 +vmlinux posix_locks_deadlock 0x0ece1c99 +vmlinux posix_test_lock 0xe6049d83 +vmlinux posix_timer_event 0x3979b8c7 +vmlinux posix_unblock_lock 0x878153cc +vmlinux pre_task_out_intr 0xe40fee68 +vmlinux prepare_binprm 0x2dbe6bee +vmlinux prepare_to_wait 0x8085c7b1 +vmlinux prepare_to_wait_exclusive 0xadb792c2 +vmlinux printk 0xdd132261 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0xb6476f36 +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0x98abaaf2 +vmlinux proc_dointvec 0x01ff7b2e +vmlinux proc_dointvec_jiffies 0x5b2453ad +vmlinux proc_dointvec_minmax 0xb6ede57b +vmlinux proc_dointvec_ms_jiffies 0x2694b61d +vmlinux proc_dointvec_userhz_jiffies 0xedb926f5 +vmlinux proc_dostring 0x9313f405 +vmlinux proc_doulongvec_minmax 0x966d2d27 +vmlinux proc_doulongvec_ms_jiffies_minmax 0xd7f8e5aa +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0x4153848b +vmlinux proc_net 0x811a20fd +vmlinux proc_net_netfilter 0x092b8c37 +vmlinux proc_net_stat 0x7cee6c8e +vmlinux proc_root 0xaa3016aa +vmlinux proc_root_driver 0xfc6f3070 +vmlinux proc_root_fs 0x8c395c09 +vmlinux proc_symlink 0x92fc7499 +vmlinux profile_event_register 0x8a02f409 +vmlinux profile_event_unregister 0x3259dcce +vmlinux prom_feval 0xda3d2c3c +vmlinux prom_finddevice 0x1ad9f95a +vmlinux prom_firstprop 0x807b7089 +vmlinux prom_getbool 0x5251cae4 +vmlinux prom_getchild 0x5ee0a984 +vmlinux prom_getint 0xac2dab09 +vmlinux prom_getintdefault 0x9aacd62b +vmlinux prom_getname 0xb0d1f9ef +vmlinux prom_getproperty 0x8b0403e6 +vmlinux prom_getproplen 0xdf8fef53 +vmlinux prom_getsibling 0x3b3fe8cb +vmlinux prom_getstring 0x9117a881 +vmlinux prom_nextprop 0x25c3dbca +vmlinux prom_node_has_property 0x4a15ae23 +vmlinux prom_palette 0x11a046ce +vmlinux prom_root_node 0x5ce875cf +vmlinux prom_searchsiblings 0xe782899e +vmlinux prom_setprop 0x4cbda2bf +vmlinux proto_register 0x3a5d2e58 +vmlinux proto_unregister 0x1354d372 +vmlinux ps2_cmd_aborted 0x226b3400 +vmlinux ps2_command 0x033e019d +vmlinux ps2_drain 0xf021c5f6 +vmlinux ps2_handle_ack 0x3cb882fa +vmlinux ps2_handle_response 0x7cfc16a2 +vmlinux ps2_init 0x2d49c4da +vmlinux ps2_schedule_command 0x1252d63a +vmlinux ps2_sendbyte 0xc8cf8344 +vmlinux pskb_copy 0x13758d73 +vmlinux pskb_expand_head 0x71b4133f +vmlinux pskb_put 0x506a2e09 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0xfe3904c9 +vmlinux put_cmsg 0x43ec913a +vmlinux put_device 0x5c680134 +vmlinux put_disk 0x9e6c8862 +vmlinux put_driver 0xb343730a +vmlinux put_files_struct 0xb1aeea2a +vmlinux put_fs_struct 0x3b2c626f +vmlinux put_io_context 0x76f70ff8 +vmlinux put_page 0x4f667a37 +vmlinux put_tty_driver 0x47f3fcb7 +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0xf0b0b614 +vmlinux qdisc_create_dflt 0x4b0b7977 +vmlinux qdisc_destroy 0x5ff6a1d6 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0xd5d05399 +vmlinux qdisc_lookup 0xb888c714 +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0x0e995e4e +vmlinux qdisc_restart 0xf5b4dd78 +vmlinux qdisc_unlock_tree 0x89146586 +vmlinux queue_delayed_work 0xcf425e12 +vmlinux queue_work 0x9a546d1a +vmlinux radix_tree_delete 0x898049c9 +vmlinux radix_tree_gang_lookup 0x35ef380e +vmlinux radix_tree_gang_lookup_tag 0xed493232 +vmlinux radix_tree_insert 0x72e6283f +vmlinux radix_tree_lookup 0x76e635da +vmlinux radix_tree_lookup_slot 0x41706e2f +vmlinux radix_tree_tag_clear 0x9ee300df +vmlinux radix_tree_tag_set 0xd73b9fb5 +vmlinux radix_tree_tagged 0xb52b2186 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0xaedf00d1 +vmlinux read_cache_pages 0x3e3dc20c +vmlinux read_dev_sector 0x4a81846c +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0x0c2322e1 +vmlinux redraw_screen 0xc026eb08 +vmlinux register_binfmt 0xdb5777f6 +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0x02185245 +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x9004c5b6 +vmlinux register_exec_domain 0xd432e0c0 +vmlinux register_filesystem 0x80f3f1bd +vmlinux register_firmware 0x40359ccb +vmlinux register_framebuffer 0xb21dc745 +vmlinux register_gifconf 0xf0261058 +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0xd4debdb8 +vmlinux register_netdevice 0xb36d0ea2 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0xeb276161 +vmlinux register_posix_clock 0xb335968f +vmlinux register_qdisc 0xe1dd4b3e +vmlinux register_quota_format 0xab1d632d +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0xf1683a90 +vmlinux register_sysctl_table 0xdd805469 +vmlinux register_tcf_proto_ops 0x9582306a +vmlinux register_wlandev 0xcd2a4004 +vmlinux registered_fb 0x26d3fda6 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x6ef56f31 +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0xa3d96db3 +vmlinux remap_pfn_range 0xadb22102 +vmlinux remote_llseek 0x60eaf16f +vmlinux remove_arg_zero 0xffdbf8c8 +vmlinux remove_inode_hash 0xc390fa5e +vmlinux remove_proc_entry 0x1aa2e158 +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0xd93534e0 +vmlinux remove_wait_queue 0x36e47222 +vmlinux reqsk_queue_alloc 0x9f866f76 +vmlinux reqsk_queue_destroy 0x85504793 +vmlinux request_dma 0x4ea37b78 +vmlinux request_firmware 0x4c0f75e0 +vmlinux request_firmware_nowait 0x3d9826a7 +vmlinux request_irq 0xe9bd243a +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x83230e05 +vmlinux rtc_control 0xc9b27289 +vmlinux rtc_register 0xfdab2b9c +vmlinux rtc_unregister 0xeddfe49d +vmlinux rtnetlink_links 0xab1b03cb +vmlinux rtnetlink_put_metrics 0x1f5e2ba3 +vmlinux rtnl 0x6c0d73ba +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0xc3618496 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux rtrap 0x3042f3a3 +vmlinux rwsem_down_read_failed 0xb4468f80 +vmlinux rwsem_down_write_failed 0xa497ebbd +vmlinux rwsem_downgrade_wake 0x9c5834a9 +vmlinux rwsem_wake 0x6da508d3 +vmlinux saved_command_line 0x04f5f35f +vmlinux sb_min_blocksize 0x9a65f095 +vmlinux sb_set_blocksize 0xbf052315 +vmlinux sbus_alloc_consistent 0x32f66bd7 +vmlinux sbus_dma_sync_sg_for_cpu 0xc3e8653d +vmlinux sbus_dma_sync_sg_for_device 0xbd3fda84 +vmlinux sbus_dma_sync_single_for_cpu 0x3ed33b81 +vmlinux sbus_dma_sync_single_for_device 0x0a3b050a +vmlinux sbus_free_consistent 0x8c954a3e +vmlinux sbus_map_sg 0xd171fa34 +vmlinux sbus_map_single 0xf9a5d26d +vmlinux sbus_root 0x6c6773c9 +vmlinux sbus_set_sbus64 0xe2369125 +vmlinux sbus_unmap_sg 0xfad8ff04 +vmlinux sbus_unmap_single 0x2ccaf4dd +vmlinux sbusfb_compat_ioctl 0xd0e1e741 +vmlinux sbusfb_fill_var 0x9a895f7a +vmlinux sbusfb_ioctl_helper 0xec1c0de9 +vmlinux sbusfb_mmap_helper 0xf5525aae +vmlinux sched_setscheduler 0xf8d97478 +vmlinux schedule 0x01000e51 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0x133ef1f8 +vmlinux scm_fp_dup 0x6f301deb +vmlinux scnprintf 0x7bb4de17 +vmlinux scsi_cmd_ioctl 0xb41e89d8 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux search_binary_handler 0x3777137c +vmlinux secpath_dup 0xaa3e65dd +vmlinux secure_dccp_sequence_number 0x0abd4d41 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0x0bdbbbd4 +vmlinux securityfs_create_dir 0x3163829e +vmlinux securityfs_create_file 0x127f48c0 +vmlinux securityfs_remove 0x48f6d561 +vmlinux send_sig 0xe08dc2e2 +vmlinux send_sig_info 0x23d1c3c1 +vmlinux seq_escape 0xce074a96 +vmlinux seq_lseek 0x52d86d3e +vmlinux seq_open 0x1331dfe1 +vmlinux seq_path 0xfb96387f +vmlinux seq_printf 0x4bc97803 +vmlinux seq_putc 0x38a4bdde +vmlinux seq_puts 0xd81b3330 +vmlinux seq_read 0x2a3e77f1 +vmlinux seq_release 0x2a313fdc +vmlinux seq_release_private 0x0732809d +vmlinux serial_console 0xb8be6eaa +vmlinux serio_close 0x72f0ba52 +vmlinux serio_interrupt 0x3bfae2b7 +vmlinux serio_open 0x9e5e1826 +vmlinux serio_reconnect 0x3887fda6 +vmlinux serio_rescan 0x4b2bf672 +vmlinux serio_unregister_child_port 0x8d79197e +vmlinux serio_unregister_driver 0x9b21d0ab +vmlinux serio_unregister_port 0xf47e1372 +vmlinux set_anon_super 0xa9cf9fde +vmlinux set_bh_page 0x5cb3bf41 +vmlinux set_binfmt 0x48852120 +vmlinux set_bit 0x9443289e +vmlinux set_blocksize 0xc870d217 +vmlinux set_current_groups 0x999fe899 +vmlinux set_device_ro 0xe9aa7036 +vmlinux set_disk_ro 0x27216d71 +vmlinux set_page_dirty 0x59f986f6 +vmlinux set_page_dirty_lock 0x4db5131d +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0xb39e01f8 +vmlinux setlease 0x20399990 +vmlinux setup_arg_pages 0x10d17048 +vmlinux sget 0xf61796ab +vmlinux sha_transform 0xf313da4e +vmlinux show_regs 0x176ab54b +vmlinux shrink_dcache_parent 0x46a18020 +vmlinux shrink_dcache_sb 0x9dcb81e3 +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x6a5fa363 +vmlinux simple_attr_close 0x320fc831 +vmlinux simple_attr_open 0xf505908e +vmlinux simple_attr_read 0x61a03ef8 +vmlinux simple_attr_write 0x67c5128f +vmlinux simple_commit_write 0xa0c7d2bc +vmlinux simple_dir_inode_operations 0x3056f6d7 +vmlinux simple_dir_operations 0x4ad95b11 +vmlinux simple_empty 0xeb7c3fe7 +vmlinux simple_fill_super 0x3ce36536 +vmlinux simple_getattr 0x96598d25 +vmlinux simple_link 0xea0c2937 +vmlinux simple_lookup 0x8aeae0cc +vmlinux simple_pin_fs 0x905a6388 +vmlinux simple_prepare_write 0x0e646abb +vmlinux simple_read_from_buffer 0x5a5e7ea3 +vmlinux simple_readpage 0xfef794d0 +vmlinux simple_release_fs 0x277ca0bc +vmlinux simple_rename 0x2c51e430 +vmlinux simple_rmdir 0xe6c893e6 +vmlinux simple_statfs 0xd448ff8c +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0x95d2e459 +vmlinux simple_transaction_get 0xfcfc77a6 +vmlinux simple_transaction_read 0x03239fa4 +vmlinux simple_transaction_release 0x080801dd +vmlinux simple_unlink 0xb03db09a +vmlinux single_open 0xd361535b +vmlinux single_release 0xe2e414b5 +vmlinux sk_alloc 0xc12c0efb +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0x912310de +vmlinux sk_common_release 0x8be00b4b +vmlinux sk_free 0x9225d895 +vmlinux sk_reset_timer 0x958d3b6e +vmlinux sk_run_filter 0xd8eafd88 +vmlinux sk_send_sigurg 0x803ce2c4 +vmlinux sk_stop_timer 0x7c69e3c5 +vmlinux sk_stream_error 0xa329c824 +vmlinux sk_stream_kill_queues 0x55e7f13f +vmlinux sk_stream_mem_schedule 0x0f10a338 +vmlinux sk_stream_rfree 0xa7a6cb20 +vmlinux sk_stream_wait_close 0xce74be4b +vmlinux sk_stream_wait_connect 0xc5bd638d +vmlinux sk_stream_wait_memory 0x5e8ac30b +vmlinux sk_stream_write_space 0xc0228b6a +vmlinux sk_wait_data 0xc550e4f3 +vmlinux skb_abort_seq_read 0x2cb9505b +vmlinux skb_append 0xa3ecfc0a +vmlinux skb_append_datato_frags 0x72da331e +vmlinux skb_checksum 0xa72aef35 +vmlinux skb_checksum_help 0xb1608298 +vmlinux skb_clone 0x3cb89ccc +vmlinux skb_clone_fraglist 0x8d48b40a +vmlinux skb_copy 0x0fa34eee +vmlinux skb_copy_and_csum_bits 0x4b423ebb +vmlinux skb_copy_and_csum_datagram_iovec 0xd2f9befc +vmlinux skb_copy_and_csum_dev 0xb3019107 +vmlinux skb_copy_bits 0xb6f41989 +vmlinux skb_copy_datagram_iovec 0x62585b92 +vmlinux skb_copy_expand 0x20154f60 +vmlinux skb_cow_data 0x3368ecd8 +vmlinux skb_dequeue 0x0433928b +vmlinux skb_dequeue_tail 0x852d5368 +vmlinux skb_find_text 0x73514911 +vmlinux skb_free_datagram 0x4f71f28e +vmlinux skb_icv_walk 0xca843000 +vmlinux skb_insert 0xc0b88189 +vmlinux skb_make_writable 0x7df1e079 +vmlinux skb_over_panic 0x0cbcd723 +vmlinux skb_pad 0x8d69820d +vmlinux skb_prepare_seq_read 0xb735cc12 +vmlinux skb_queue_head 0x465b4482 +vmlinux skb_queue_purge 0x56826491 +vmlinux skb_queue_tail 0x3477e951 +vmlinux skb_realloc_headroom 0x596aa0c0 +vmlinux skb_recv_datagram 0x05df88ca +vmlinux skb_seq_read 0x148edf78 +vmlinux skb_split 0xef8abf1a +vmlinux skb_store_bits 0x620c445e +vmlinux skb_to_sgvec 0x2ed450de +vmlinux skb_under_panic 0xce6e1776 +vmlinux skb_unlink 0xa138e61a +vmlinux sleep_on 0xa07a8d22 +vmlinux sleep_on_timeout 0x092b007a +vmlinux snprintf 0xaf25400d +vmlinux sock_alloc_send_skb 0xf5124ffc +vmlinux sock_common_getsockopt 0x2d1f08c1 +vmlinux sock_common_recvmsg 0x42223737 +vmlinux sock_common_setsockopt 0x275f0799 +vmlinux sock_create 0x2c49c9be +vmlinux sock_create_kern 0xd06e63fb +vmlinux sock_create_lite 0x65c85c33 +vmlinux sock_enable_timestamp 0x4317806d +vmlinux sock_get_timestamp 0xf2488a7e +vmlinux sock_i_ino 0xd06a781b +vmlinux sock_i_uid 0x3f0ae22e +vmlinux sock_init_data 0xc98f5915 +vmlinux sock_kfree_s 0xedda166e +vmlinux sock_kmalloc 0x81326f4c +vmlinux sock_map_fd 0xfecf1836 +vmlinux sock_no_accept 0xf2785d29 +vmlinux sock_no_bind 0x3ecbaedd +vmlinux sock_no_connect 0x5603d837 +vmlinux sock_no_getname 0xd6fbf077 +vmlinux sock_no_getsockopt 0xb2ff4498 +vmlinux sock_no_ioctl 0x46023fb6 +vmlinux sock_no_listen 0xb96bc544 +vmlinux sock_no_mmap 0x1ad24f64 +vmlinux sock_no_poll 0x1929ef83 +vmlinux sock_no_recvmsg 0xdd80c21d +vmlinux sock_no_sendmsg 0x6fa21b05 +vmlinux sock_no_sendpage 0x2a7c1aff +vmlinux sock_no_setsockopt 0x8a2b49a0 +vmlinux sock_no_shutdown 0xe1d934e6 +vmlinux sock_no_socketpair 0x498e6e7e +vmlinux sock_recvmsg 0x0b3bf617 +vmlinux sock_register 0x6365f8bc +vmlinux sock_release 0x836fbd1e +vmlinux sock_rfree 0x7a7724bb +vmlinux sock_sendmsg 0x68c69c6f +vmlinux sock_setsockopt 0xe982de83 +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0xf2d6074d +vmlinux sock_wfree 0x7eff8460 +vmlinux sock_wmalloc 0x119b9c81 +vmlinux sockfd_lookup 0xb3fe8b07 +vmlinux soft_cursor 0x2ce66d45 +vmlinux solaris_syscall 0x1eb7debc +vmlinux sort 0x9ca95a0e +vmlinux sparc32_open 0xd4c66be3 +vmlinux sparc64_get_clock_tick 0xcfe13710 +vmlinux sparc64_valid_addr_bitmap 0x4d481436 +vmlinux sparc_floppy_irq 0xce3fbbf6 +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux start_tty 0x8175a9c0 +vmlinux steal_locks 0xd9f71754 +vmlinux stop_a_enabled 0x66cae227 +vmlinux stop_tty 0xe988fdbd +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0xafe82e10 +vmlinux strlcat 0xb11fa1ce +vmlinux strlcpy 0x672144bd +vmlinux strlen 0xdcb5671d +vmlinux strncat 0x234509f3 +vmlinux strnchr 0x7242e96d +vmlinux strncmp 0x85abc85f +vmlinux strncpy 0x7ec9bfbc +vmlinux strnicmp 0x756e6992 +vmlinux strnlen 0xcc07af75 +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0x3fa913da +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0x65b4e621 +vmlinux submit_bh 0x79504e23 +vmlinux submit_bio 0xa6e7b63c +vmlinux subsys_create_file 0x1b18059d +vmlinux subsys_remove_file 0x0fb4492f +vmlinux subsystem_init 0x8b414868 +vmlinux subsystem_register 0x245cca80 +vmlinux subsystem_unregister 0x43d95dff +vmlinux suid_dumpable 0xb694c524 +vmlinux sun_do_break 0xfec05366 +vmlinux suncore_mouse_baud_cflag_next 0xf6aeeb15 +vmlinux suncore_mouse_baud_detection 0x872bd087 +vmlinux sunos_sys_table 0xe5476ea6 +vmlinux sunserial_console_termios 0x6a8a8dd0 +vmlinux sunserial_current_minor 0x2a8115cb +vmlinux svr4_getcontext 0x68576339 +vmlinux svr4_setcontext 0x9bfaed0a +vmlinux swap_io_context 0x329681a0 +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0x63ff9c83 +vmlinux sync_dirty_buffer 0x0521fa80 +vmlinux sync_inode 0x05c233f7 +vmlinux sync_mapping_buffers 0xd83b6e26 +vmlinux sync_page_range 0x720edca5 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_call_table 0xd801b512 +vmlinux sys_call_table32 0x3f5533cb +vmlinux sys_close 0xdcb0349b +vmlinux sys_getegid 0xc00d230b +vmlinux sys_geteuid 0x1456309a +vmlinux sys_getgid 0xc3cb670e +vmlinux sys_getpid 0x0abfc78c +vmlinux sys_getppid 0xeb68d188 +vmlinux sys_getuid 0x1790749f +vmlinux sys_ioctl 0x208ce54a +vmlinux sys_open 0xe269ea1c +vmlinux sys_read 0x12703a3e +vmlinux sys_sigsuspend 0xde2a99c5 +vmlinux sys_tz 0xfe5d4bb2 +vmlinux syscall_trace 0xed5f03d8 +vmlinux sysctl_intvec 0xfa7ff9e2 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0x1d89f30a +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0x2c41cc9a +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0x749f8313 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x2f445caf +vmlinux sysdev_class_unregister 0xddb0548f +vmlinux sysdev_create_file 0x0d7266f7 +vmlinux sysdev_driver_register 0x85b0aaaa +vmlinux sysdev_driver_unregister 0x19546eb0 +vmlinux sysdev_register 0xc721d063 +vmlinux sysdev_remove_file 0x0a363e8e +vmlinux sysdev_unregister 0xc5fed776 +vmlinux sysfs_chmod_file 0x2ffdc7f1 +vmlinux sysfs_create_bin_file 0xf0ddd52e +vmlinux sysfs_create_dir 0x6aa8bb6b +vmlinux sysfs_create_file 0x7636d785 +vmlinux sysfs_create_group 0x6cbbbb6c +vmlinux sysfs_create_link 0x8ed81f57 +vmlinux sysfs_remove_bin_file 0xbd40a839 +vmlinux sysfs_remove_dir 0x9b77f4b4 +vmlinux sysfs_remove_file 0x0d6f2f87 +vmlinux sysfs_remove_group 0x4c23f737 +vmlinux sysfs_remove_link 0x96ac7827 +vmlinux sysfs_rename_dir 0x92052d6b +vmlinux sysfs_update_file 0x079c5d26 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0x48f689d4 +vmlinux task_in_intr 0xbecdf23e +vmlinux task_nice 0xecaa0043 +vmlinux task_no_data_intr 0xc52d8c48 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0xd6edcf04 +vmlinux tc_classify 0x22a507be +vmlinux tcf_em_register 0x2dc9a20f +vmlinux tcf_em_tree_destroy 0x7c174a6c +vmlinux tcf_em_tree_dump 0xc08deb15 +vmlinux tcf_em_tree_validate 0x35d08c38 +vmlinux tcf_em_unregister 0xf1aa9d8e +vmlinux tcf_exts_change 0xd4b8f3f4 +vmlinux tcf_exts_destroy 0xe93e4a10 +vmlinux tcf_exts_dump 0x04f88e74 +vmlinux tcf_exts_dump_stats 0x5f624349 +vmlinux tcf_exts_validate 0xfaeac4c9 +vmlinux tcf_police 0x2be90447 +vmlinux tcf_police_destroy 0x68ea57d9 +vmlinux tcf_police_dump 0x6eb0b66d +vmlinux tcf_police_dump_stats 0x7df705b0 +vmlinux tcf_police_hash 0x8493d6e7 +vmlinux tcf_police_ht 0x7385aaf7 +vmlinux tcf_police_locate 0x4dbb0e87 +vmlinux tcf_police_lookup 0x1677f6e4 +vmlinux tcf_police_new_index 0x7ae0f6c9 +vmlinux tcp_check_req 0xed2fc322 +vmlinux tcp_child_process 0x5f52f077 +vmlinux tcp_close 0x94b5aced +vmlinux tcp_connect 0xaaf08a69 +vmlinux tcp_create_openreq_child 0xd26ef914 +vmlinux tcp_death_row 0x55646899 +vmlinux tcp_disconnect 0x9234cdac +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x71e781d7 +vmlinux tcp_getsockopt 0x8a814993 +vmlinux tcp_hashinfo 0x7c2f480f +vmlinux tcp_init_congestion_ops 0xe6732eb1 +vmlinux tcp_init_xmit_timers 0xabb3d647 +vmlinux tcp_ioctl 0x3315ee1b +vmlinux tcp_make_synack 0x6ba72ade +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0x6fd8d0fd +vmlinux tcp_poll 0xdc7ed69d +vmlinux tcp_proc_register 0xebfe5236 +vmlinux tcp_proc_unregister 0xcc647600 +vmlinux tcp_prot 0xd2c39069 +vmlinux tcp_rcv_established 0x25f6a7e8 +vmlinux tcp_rcv_state_process 0x64eb8552 +vmlinux tcp_read_sock 0x7bee33a3 +vmlinux tcp_recvmsg 0xa97cb9b9 +vmlinux tcp_register_congestion_control 0xaaf9f53c +vmlinux tcp_reno_cong_avoid 0x1c7778fa +vmlinux tcp_reno_min_cwnd 0xd220024e +vmlinux tcp_reno_ssthresh 0xc727814a +vmlinux tcp_sendmsg 0x90f0bfb0 +vmlinux tcp_sendpage 0xc74f5407 +vmlinux tcp_setsockopt 0xe35a32ac +vmlinux tcp_shutdown 0xf4698469 +vmlinux tcp_simple_retransmit 0xd5d20fd1 +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0x3abaa244 +vmlinux tcp_timewait_state_process 0x275b803b +vmlinux tcp_unhash 0x52d34409 +vmlinux tcp_unregister_congestion_control 0xa99bbcb7 +vmlinux tcp_v4_conn_request 0xaf205966 +vmlinux tcp_v4_connect 0xd5f945ec +vmlinux tcp_v4_destroy_sock 0xd4a1ecc3 +vmlinux tcp_v4_do_rcv 0x289f631c +vmlinux tcp_v4_remember_stamp 0xee657b70 +vmlinux tcp_v4_send_check 0xd1b0e5b0 +vmlinux tcp_v4_syn_recv_sock 0x5b4ce49b +vmlinux test_and_change_bit 0xc1ee17ca +vmlinux test_and_clear_bit 0xd49f1ef6 +vmlinux test_and_set_bit 0x950b0b51 +vmlinux test_clear_page_dirty 0x35a07269 +vmlinux test_set_page_writeback 0xe183dbf7 +vmlinux textsearch_destroy 0x1c148c62 +vmlinux textsearch_find_continuous 0xb49e905a +vmlinux textsearch_prepare 0x723c399f +vmlinux textsearch_register 0xc4a4b3d6 +vmlinux textsearch_unregister 0x8520262d +vmlinux thaw_bdev 0x4ac25336 +vmlinux tick_ops 0xcf71a801 +vmlinux timespec_trunc 0xc045ad4e +vmlinux tl0_solaris 0x0d7c9bc5 +vmlinux tlb_type 0xa5e68673 +vmlinux totalram_pages 0xde9360ba +vmlinux transport_add_device 0xda7f1609 +vmlinux transport_class_register 0x9d40e1c7 +vmlinux transport_class_unregister 0x4e77209c +vmlinux transport_configure_device 0x32114321 +vmlinux transport_destroy_device 0xb391c795 +vmlinux transport_remove_device 0xa38ba0fa +vmlinux transport_setup_device 0x83b5236c +vmlinux truncate_inode_pages 0xfa0002e9 +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0xae49a887 +vmlinux try_to_release_page 0xfb4a45a2 +vmlinux tty_check_change 0x2fddc4b5 +vmlinux tty_flip_buffer_push 0x230ee722 +vmlinux tty_get_baud_rate 0x1dd947e8 +vmlinux tty_hangup 0x2d8bc5fc +vmlinux tty_hung_up_p 0xf2a96506 +vmlinux tty_ldisc_deref 0x477719c1 +vmlinux tty_ldisc_flush 0x90b254de +vmlinux tty_ldisc_get 0xdaf0486d +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x9b956b82 +vmlinux tty_ldisc_ref_wait 0xb304d861 +vmlinux tty_name 0x716d1e3e +vmlinux tty_register_device 0xafd6c190 +vmlinux tty_register_driver 0x5651c4f0 +vmlinux tty_register_ldisc 0x7c4f4660 +vmlinux tty_set_operations 0x66b94a80 +vmlinux tty_std_termios 0x5bafda46 +vmlinux tty_termios_baud_rate 0x451ecac6 +vmlinux tty_unregister_device 0xe1e75f37 +vmlinux tty_unregister_driver 0xcf315824 +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0x621b2e9d +vmlinux tty_wait_until_sent 0xb12bcf7a +vmlinux tty_wakeup 0xf5f8a1f5 +vmlinux uart_add_one_port 0x7c41bea2 +vmlinux uart_get_baud_rate 0x47cd7af0 +vmlinux uart_get_divisor 0xa642a365 +vmlinux uart_match_port 0x273588ea +vmlinux uart_register_driver 0x9128b544 +vmlinux uart_remove_one_port 0x3e9ecb2b +vmlinux uart_resume_port 0xaa20159d +vmlinux uart_suspend_port 0x7416878e +vmlinux uart_unregister_driver 0x2296cd44 +vmlinux uart_update_timeout 0xf45b40bb +vmlinux uart_write_wakeup 0x64ca917f +vmlinux udp_disconnect 0xd0a9aaec +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0xabad83d7 +vmlinux udp_ioctl 0xa2ed348b +vmlinux udp_poll 0xc3a62936 +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x7437453f +vmlinux udp_proc_unregister 0x7573cf24 +vmlinux udp_prot 0xcf7d8d33 +vmlinux udp_sendmsg 0x40f9cb9e +vmlinux uhci_check_and_reset_hc 0x355bbeda +vmlinux uhci_reset_hc 0xee1a1424 +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unload_nls 0x00eaae4d +vmlinux unlock_buffer 0x55ddfa17 +vmlinux unlock_new_inode 0x62eb2920 +vmlinux unlock_page 0x07b04187 +vmlinux unlock_rename 0xe6669168 +vmlinux unmap_mapping_range 0xf375e2b7 +vmlinux unmap_underlying_metadata 0xc4b78aeb +vmlinux unregister_binfmt 0x1aa24c27 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0x63ab5b09 +vmlinux unregister_exec_domain 0x147a33c1 +vmlinux unregister_filesystem 0x8b9a1970 +vmlinux unregister_framebuffer 0x9960f0d5 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0x9e1c354c +vmlinux unregister_netdevice 0xe4a9be6a +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0x38dad6d1 +vmlinux unregister_qdisc 0x47b0baf3 +vmlinux unregister_quota_format 0x0936e64d +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0x58368c89 +vmlinux unregister_sysctl_table 0x9462eaf0 +vmlinux unregister_tcf_proto_ops 0xe7627b23 +vmlinux unregister_wlandev 0x75cb2f9c +vmlinux unshare_files 0x04a20170 +vmlinux up 0x9f9b6946 +vmlinux update_atime 0xafca3528 +vmlinux update_region 0x97a8a0f7 +vmlinux usb_add_hcd 0x94b394f9 +vmlinux usb_alloc_dev 0xed0ec1b4 +vmlinux usb_alloc_urb 0xde83d083 +vmlinux usb_altnum_to_altsetting 0xeb08f94c +vmlinux usb_buffer_alloc 0xdd3b3864 +vmlinux usb_buffer_free 0x05143f0d +vmlinux usb_buffer_map_sg 0xa0b8eb87 +vmlinux usb_buffer_unmap_sg 0x178059a6 +vmlinux usb_bulk_msg 0x4c2af65e +vmlinux usb_bus_list 0xace5c0fc +vmlinux usb_bus_list_lock 0xddf322b1 +vmlinux usb_calc_bus_time 0x7e64181d +vmlinux usb_check_bandwidth 0xf092ed36 +vmlinux usb_claim_bandwidth 0xc8a33cb5 +vmlinux usb_clear_halt 0x2357c1f2 +vmlinux usb_control_msg 0x249de820 +vmlinux usb_create_hcd 0x2717766f +vmlinux usb_deregister 0xeb5ce25f +vmlinux usb_deregister_dev 0xc37758e2 +vmlinux usb_disabled 0x19a304ba +vmlinux usb_disconnect 0x10da8e45 +vmlinux usb_driver_claim_interface 0xd15edc4e +vmlinux usb_driver_release_interface 0xff6a1171 +vmlinux usb_find_device 0xab0ed40b +vmlinux usb_find_interface 0x16e14c60 +vmlinux usb_free_urb 0x8bcc2cbe +vmlinux usb_get_current_frame_number 0x97be667a +vmlinux usb_get_descriptor 0xe5cefc83 +vmlinux usb_get_dev 0x7493dd1b +vmlinux usb_get_intf 0x08890b7c +vmlinux usb_get_status 0x876c589a +vmlinux usb_get_string 0x5f23f39d +vmlinux usb_get_urb 0x1c8c5631 +vmlinux usb_hc_died 0xe90619f6 +vmlinux usb_hcd_giveback_urb 0x68024115 +vmlinux usb_hcd_pci_probe 0x44b51aa3 +vmlinux usb_hcd_pci_remove 0x1bc8fd6b +vmlinux usb_hcd_poll_rh_status 0xeceee605 +vmlinux usb_hub_tt_clear_buffer 0x67572725 +vmlinux usb_ifnum_to_if 0x12604f83 +vmlinux usb_init_urb 0x23752563 +vmlinux usb_kill_urb 0x7ba5ebf2 +vmlinux usb_lock_device 0xbc223d7d +vmlinux usb_lock_device_for_reset 0x1284f49f +vmlinux usb_match_id 0xcb9f392f +vmlinux usb_mon_deregister 0xfed11ed1 +vmlinux usb_mon_register 0xc10e9ab1 +vmlinux usb_put_dev 0x693d2036 +vmlinux usb_put_hcd 0xc16f4e76 +vmlinux usb_put_intf 0x3c9153f6 +vmlinux usb_register 0x7cfd5bc0 +vmlinux usb_register_dev 0x422c97ae +vmlinux usb_register_notify 0x3be89d3c +vmlinux usb_release_bandwidth 0x6f97d53a +vmlinux usb_remove_hcd 0x17d814b2 +vmlinux usb_reset_configuration 0x4177d429 +vmlinux usb_reset_device 0x7d1a743c +vmlinux usb_set_device_state 0x201181cd +vmlinux usb_set_interface 0xff7d78aa +vmlinux usb_sg_cancel 0x324c97e3 +vmlinux usb_sg_init 0xfc503d87 +vmlinux usb_sg_wait 0xb0867592 +vmlinux usb_string 0x26a76f96 +vmlinux usb_submit_urb 0x26eb8c55 +vmlinux usb_trylock_device 0xfeb6ce9f +vmlinux usb_unlink_urb 0x3afd6b0d +vmlinux usb_unlock_device 0x6a91c006 +vmlinux usb_unregister_notify 0xe9587909 +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0xe3b8d8d1 +vmlinux vc_cons 0xd1559861 +vmlinux vc_resize 0xd479ce5f +vmlinux verify_compat_iovec 0x0f265553 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0x0e7bb860 +vmlinux vfs_follow_link 0x1b472b02 +vmlinux vfs_fstat 0x2a0837e6 +vmlinux vfs_get_dqblk 0x4bc45cf1 +vmlinux vfs_get_dqinfo 0xc9ab7765 +vmlinux vfs_getattr 0x36323200 +vmlinux vfs_link 0x43264bc1 +vmlinux vfs_llseek 0xd01f26ad +vmlinux vfs_lstat 0x12344839 +vmlinux vfs_mkdir 0x5682ca68 +vmlinux vfs_mknod 0x6b189ab8 +vmlinux vfs_permission 0xe565db34 +vmlinux vfs_quota_off 0x535276a6 +vmlinux vfs_quota_on 0x30ee9cd7 +vmlinux vfs_quota_on_mount 0xef5f9cbe +vmlinux vfs_quota_sync 0x8f26ee46 +vmlinux vfs_read 0x2c61e5a0 +vmlinux vfs_readdir 0x80141e85 +vmlinux vfs_readlink 0x54ac8cf3 +vmlinux vfs_readv 0x098e2b30 +vmlinux vfs_rename 0x6f4a7041 +vmlinux vfs_rmdir 0x5cf776a9 +vmlinux vfs_set_dqblk 0x5fc54b16 +vmlinux vfs_set_dqinfo 0x7ee3c02c +vmlinux vfs_stat 0x787feff6 +vmlinux vfs_statfs 0xbca76052 +vmlinux vfs_symlink 0xdd13f69d +vmlinux vfs_unlink 0x185d68f9 +vmlinux vfs_write 0xcab820f2 +vmlinux vfs_writev 0x0b667202 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0xb9cfb711 +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0x63d34af0 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0xa0dc9e22 +vmlinux vmtruncate 0x89f1ea51 +vmlinux vprintk 0x777a8e29 +vmlinux vscnprintf 0xf3522c9c +vmlinux vsnprintf 0x0e57f111 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0x25fa6f17 +vmlinux wait_for_completion_interruptible 0x891e32b8 +vmlinux wait_for_completion_interruptible_timeout 0x8d5642fc +vmlinux wait_for_completion_timeout 0x1fae7a0b +vmlinux wait_on_page_bit 0x4806eb78 +vmlinux wait_on_sync_kiocb 0x33b0f328 +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0x231d691d +vmlinux wireless_send_event 0x5cf1e7ff +vmlinux wireless_spy_update 0x36bcd325 +vmlinux wlan_setup 0xcaf2cd77 +vmlinux wlan_unsetup 0x1289dd38 +vmlinux write_inode_now 0xe40c6487 +vmlinux write_one_page 0xac3b1e12 +vmlinux xfrm4_rcv 0x9a7612d1 +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0x69805df9 +vmlinux xfrm_bundle_ok 0x05c51bed +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0xfb6b7ff6 +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0xf0e6bc25 +vmlinux xfrm_dst_lookup 0x9e616657 +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0x740cdb29 +vmlinux xfrm_find_acq_byseq 0x9c112712 +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0x623a2fd2 +vmlinux xfrm_init_state 0x3b85fab3 +vmlinux xfrm_lookup 0x37236b86 +vmlinux xfrm_parse_spi 0x5720ce86 +vmlinux xfrm_policy_alloc 0x0497fbf6 +vmlinux xfrm_policy_byid 0xa3bbf7c2 +vmlinux xfrm_policy_bysel 0xcb902ccb +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0xd8af66c7 +vmlinux xfrm_policy_list 0xc199d9fa +vmlinux xfrm_policy_register_afinfo 0x04129839 +vmlinux xfrm_policy_unregister_afinfo 0x75c51da5 +vmlinux xfrm_policy_walk 0xe727dbff +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0x0f1a6fab +vmlinux xfrm_register_type 0x3dcc9a3d +vmlinux xfrm_replay_advance 0xe9df3eff +vmlinux xfrm_replay_check 0xdc20ac2c +vmlinux xfrm_state_add 0xfbb28c86 +vmlinux xfrm_state_alloc 0x7986351d +vmlinux xfrm_state_check 0x94e195e3 +vmlinux xfrm_state_check_expire 0x2dc5b344 +vmlinux xfrm_state_delete 0xbadb6e1e +vmlinux xfrm_state_delete_tunnel 0x76f93e3a +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0x1d859c1e +vmlinux xfrm_state_lookup 0xb29a0475 +vmlinux xfrm_state_mtu 0xca2d8fe2 +vmlinux xfrm_state_register_afinfo 0x364baebb +vmlinux xfrm_state_unregister_afinfo 0x7835e6c2 +vmlinux xfrm_state_update 0x3b8eacd2 +vmlinux xfrm_state_walk 0xe5dec094 +vmlinux xfrm_unregister_km 0xe9d49fdc +vmlinux xfrm_unregister_type 0x2b633333 +vmlinux xfrm_user_policy 0xc8c67830 +vmlinux xor_niagara_2 0x031ee678 +vmlinux xor_niagara_3 0x27b81daa +vmlinux xor_niagara_4 0xfe78010d +vmlinux xor_niagara_5 0x6de375c1 +vmlinux xor_vis_2 0xde589e60 +vmlinux xor_vis_3 0xdd1197c8 +vmlinux xor_vis_4 0x2daa7939 +vmlinux xor_vis_5 0x556db901 +vmlinux xrlim_allow 0x626aea2c +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xf448c4e8 +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x248c4764 +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0xd769ba71 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/sparc/sparc64.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/sparc/sparc64.modules @@ -0,0 +1,778 @@ +3c59x +3w-9xxx +3w-xxxx +8021q +8139cp +8139too +8390 +9p2000 +aacraid +ac97_codec +acecad +acenic +acx +adm1026 +adm8211 +adm9240 +aes +affs +af_key +ah4 +ah6 +aic79xx +aic94xx +alim15x3 +anubis +aoe +appletalk +applicom +arc4 +arcmsr +arptable_filter +arp_tables +arpt_mangle +asix +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76_usbdfu +ati_remote +ati_remote2 +atmel +atmel_pci +atp870u +atxp1 +auth_rpcgss +autofs +autofs4 +b44 +backlight +bbc +bcm43xx +befs +bfs +binfmt_misc +blowfish +bnx2 +bonding +bridge +bsd_comp +btcx-risc +bttv +capability +cassini +cast5 +cast6 +catc +cdc_ether +cdc_subset +cdrom +cicada +cifs +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cman +cmd64x +cn +coda +commoncap +configfs +crc16 +crc32c +crc-ccitt +crypto_null +cs53l32a +cs5520 +cs5530 +cx25840 +cxgb +cy82c693 +cyblafb +cyclades +cytherm +dabusb +davicom +dazuko +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +de600 +de620 +decnet +deflate +dgrs +display7seg +dl2k +dlm +dm-bbr +dm-crypt +dm-emc +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +ds1337 +ds1374 +ds9490r +ds_w1_bridge +dtlk +dummy +dv1394 +e100 +e1000 +eagle-usb +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +efs +ehci-hcd +em28xx +em_cmp +emi26 +emi62 +em_meta +em_nbyte +em_text +em_u32 +envctrl +epca +epic100 +eql +esp +esp4 +esp6 +eth1394 +evdev +exportfs +ext2 +ext3 +fat +faulty +fc4 +fcal +fealnx +flash +fscpos +fuse +generic +generic_serial +gfs +gl520sm +gl620a +gnbd +hermes +hfs +hfsplus +hostap +hostap_pci +hostap_plx +hpfs +hwmon-vid +i2c-algo-pca +i2c-algo-pcf +i2c-dev +i2c-isa +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-stub +i2o_block +i2o_bus +i2o_core +i2o_proc +i2o_scsi +i810_audio +ib_cm +ib_core +ib_ipoib +ib_mad +ib_mthca +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ide-cd +ide-disk +ide-floppy +ide-generic +ide-tape +idmouse +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +imm +initio +ip2 +ip2main +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipg +ipip +ipmi_devintf +ipmi_msghandler +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw2100 +ipw2200 +ipx +ir-common +ir-kbd-gpio +ir-kbd-i2c +iscsi_tcp +islsm +islsm_device +islsm_pci +islsm_usb +isofs +istallion +it821x +itmtouch +ixgb +jbd +jsm +kafs +kaweth +khazad +lcd +ldusb +libcrc32c +libphy +linear +lkkbd +llc +llc2 +lm63 +lm87 +lm92 +lockd +lock_dlm +lock_gulm +lock_harness +lock_nolock +lp +lpfc +lxt +marvell +matrox_w1 +max6875 +md4 +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mga +michael_mic +microtek +mii +minix +mmc_core +moxa +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mrv8k +msdos +msp3400 +multipath +mxser +myri_sbus +natsemi +nbd +ncpfs +ne2k-pci +net1080 +netconsole +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +n_hdlc +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +n_r3964 +ns83820 +ns87415 +nvidiafb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ohci1394 +ohci-hcd +openpromfs +orinoco +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +p8022 +parport +parport_pc +parport_sunbpp +pc87360 +pca9539 +pcilynx +pcnet32 +pdc202xx_new +pdc202xx_old +pegasus +phidgetkit +pktcdvd +plip +plusb +pluto +podxtpro +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +psnap +pwc +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogicfc +qlogicpti +qsemi +quickcam +quota_v2 +r1000 +r128 +r8187 +r818x +radeon +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +realcap +reiserfs +relayfs +rio500 +riscom8 +rndis_host +rocket +romfs +root_plug +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rt2400 +rt2500 +rt2570 +rt61 +rtl8150 +rxrpc +s1d13xxxfb +s2io +saa6588 +saa6752hs +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-empress +saa7134-oss +sas_class +savage +savagefb +sbp2 +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +scsi_mod +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sdhci +sd_mod +seclvl +serio_raw +serpent +serverworks +sg +sha1 +sha256 +sha512 +shaper +siimage +sis190 +sis5595 +sis900 +sisusbvga +sk98lin +skfp +skge +sky2 +sl811-hcd +slhc +slip +smbfs +smsc47b397 +smsc47m1 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1889 +snd-ainstr-fm +snd-ak4531-codec +snd-ali5451 +snd-atiixp-modem +snd-ca0106 +snd-cmipci +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-hda-codec +snd-hda-intel +snd-hdspm +snd-hwdep +snd-maestro3 +snd-mixer-oss +snd-mpu401-uart +snd-opl3-lib +snd-opl3-synth +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-rawmidi +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-sun-amd7930 +snd-sun-cs4231 +snd-sun-dbri +snd-timer +snd-util-mem +snd-via82xx-modem +snd-virmidi +soc +socal +solaris +soundcore +spca5xx +specialix +squashfs +sr_mod +st +stallion +starfire +strip +sunbmac +sundance +sunlance +sunqe +sunrpc +sx +sx8 +sym53c8xx +synaptics-usb +synclinkmp +sysv +tda7432 +tda9875 +tda9887 +tdfx +tea +tg3 +tgr192 +tipar +tlclk +tpm +tpm_atmel +tpm_nsc +trident +trm290 +ts_bm +ts_fsm +ts_kmp +tulip +tun +tuner +tvaudio +tveeprom +tvmixer +tvp5150 +twofish +typhoon +udf +ufs +uhci-hcd +uli526x +unionfs +usblcd +usbled +usblp +usbnet +usb-storage +v4l1-compat +v4l2-common +vfat +via +via82cxxx +via-rhine +via-velocity +video1394 +video-buf +videodev +w1_ds2433 +w1_smem +w1_therm +w83627ehf +w83792d +winbond-840 +wire +wm8775 +wp512 +x1205 +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xor +yealink +yellowfin +zaurus +zd1201 +zd1211 +zlib_deflate --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/sparc/sparc64-smp.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/sparc/sparc64-smp.modules @@ -0,0 +1,772 @@ +3c59x +3w-9xxx +3w-xxxx +8021q +8139cp +8139too +8390 +9p2000 +aacraid +ac97_codec +acecad +acenic +acx +adm1026 +adm8211 +adm9240 +aes +affs +af_key +ah4 +ah6 +aic79xx +aic94xx +alim15x3 +anubis +aoe +appletalk +applicom +arc4 +arcmsr +arptable_filter +arp_tables +arpt_mangle +asix +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76_usbdfu +ati_remote +ati_remote2 +atmel +atmel_pci +atp870u +atxp1 +auth_rpcgss +autofs +autofs4 +b44 +backlight +bbc +bcm43xx +befs +bfs +binfmt_misc +blowfish +bnx2 +bonding +bridge +bsd_comp +btcx-risc +bttv +capability +cassini +cast5 +cast6 +catc +cdc_ether +cdc_subset +cdrom +cicada +cifs +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cman +cmd64x +cn +coda +commoncap +configfs +crc16 +crc32c +crc-ccitt +crypto_null +cs53l32a +cs5520 +cs5530 +cx25840 +cxgb +cy82c693 +cyblafb +cyclades +cytherm +dabusb +davicom +dazuko +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +de600 +de620 +decnet +deflate +dgrs +display7seg +dl2k +dlm +dm-bbr +dm-crypt +dm-emc +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +ds1337 +ds1374 +ds9490r +ds_w1_bridge +dtlk +dummy +dv1394 +e100 +e1000 +eagle-usb +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +efs +ehci-hcd +em28xx +em_cmp +emi26 +emi62 +em_meta +em_nbyte +em_text +em_u32 +envctrl +epca +epic100 +eql +esp +esp4 +esp6 +eth1394 +evdev +exportfs +ext2 +ext3 +fat +faulty +fc4 +fcal +fealnx +flash +fscpos +fuse +generic +generic_serial +gfs +gl520sm +gl620a +gnbd +hermes +hfs +hfsplus +hostap +hostap_pci +hostap_plx +hpfs +hwmon-vid +i2c-algo-pca +i2c-algo-pcf +i2c-dev +i2c-isa +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-stub +i2o_block +i2o_bus +i2o_core +i2o_proc +i2o_scsi +i810_audio +ib_cm +ib_core +ib_ipoib +ib_mad +ib_mthca +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ide-cd +ide-disk +ide-floppy +ide-generic +ide-tape +idmouse +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +imm +initio +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipg +ipip +ipmi_devintf +ipmi_msghandler +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw2100 +ipw2200 +ipx +ir-common +ir-kbd-gpio +ir-kbd-i2c +iscsi_tcp +islsm +islsm_device +islsm_pci +islsm_usb +isofs +it821x +itmtouch +ixgb +jbd +jsm +kafs +kaweth +khazad +lcd +ldusb +libcrc32c +libphy +linear +lkkbd +llc +llc2 +lm63 +lm87 +lm92 +lockd +lock_dlm +lock_gulm +lock_harness +lock_nolock +lp +lpfc +lxt +marvell +matrox_w1 +max6875 +md4 +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mga +michael_mic +microtek +mii +minix +mmc_core +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mrv8k +msdos +msp3400 +multipath +mxser +myri_sbus +natsemi +nbd +ncpfs +ne2k-pci +net1080 +netconsole +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +n_hdlc +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +n_r3964 +ns83820 +ns87415 +nvidiafb +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ohci1394 +ohci-hcd +openpromfs +orinoco +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +p8022 +parport +parport_pc +parport_sunbpp +pc87360 +pca9539 +pcilynx +pcnet32 +pdc202xx_new +pdc202xx_old +pegasus +phidgetkit +pktcdvd +plip +plusb +pluto +podxtpro +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +psnap +pwc +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogicfc +qlogicpti +qsemi +quickcam +quota_v2 +r1000 +r128 +r8187 +r818x +radeon +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +realcap +reiserfs +relayfs +rio500 +rndis_host +rocket +romfs +root_plug +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rt2400 +rt2500 +rt2570 +rt61 +rtl8150 +rxrpc +s1d13xxxfb +s2io +saa6588 +saa6752hs +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-empress +saa7134-oss +sas_class +savage +savagefb +sbp2 +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +scsi_mod +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sdhci +sd_mod +seclvl +serio_raw +serpent +serverworks +sg +sha1 +sha256 +sha512 +shaper +siimage +sis190 +sis5595 +sis900 +sisusbvga +sk98lin +skfp +skge +sky2 +sl811-hcd +slhc +slip +smbfs +smsc47b397 +smsc47m1 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1889 +snd-ainstr-fm +snd-ak4531-codec +snd-ali5451 +snd-atiixp-modem +snd-ca0106 +snd-cmipci +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-hda-codec +snd-hda-intel +snd-hdspm +snd-hwdep +snd-maestro3 +snd-mixer-oss +snd-mpu401-uart +snd-opl3-lib +snd-opl3-synth +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-rawmidi +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-sun-amd7930 +snd-sun-cs4231 +snd-sun-dbri +snd-timer +snd-util-mem +snd-via82xx-modem +snd-virmidi +soc +socal +solaris +soundcore +spca5xx +specialix +squashfs +sr_mod +st +starfire +strip +sunbmac +sundance +sunlance +sunqe +sunrpc +sx +sx8 +sym53c8xx +synaptics-usb +synclinkmp +sysv +tda7432 +tda9875 +tda9887 +tdfx +tea +tg3 +tgr192 +tipar +tlclk +tpm +tpm_atmel +tpm_nsc +trident +trm290 +ts_bm +ts_fsm +ts_kmp +tulip +tun +tuner +tvaudio +tveeprom +tvmixer +tvp5150 +twofish +typhoon +udf +ufs +uhci-hcd +uli526x +unionfs +usblcd +usbled +usblp +usbnet +usb-storage +v4l1-compat +v4l2-common +vfat +via +via82cxxx +via-rhine +via-velocity +video1394 +video-buf +videodev +w1_ds2433 +w1_smem +w1_therm +w83627ehf +w83792d +winbond-840 +wire +wm8775 +wp512 +x1205 +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xor +yealink +yellowfin +zaurus +zd1201 +zd1211 +zlib_deflate --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/abiname +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/abiname @@ -0,0 +1 @@ +52 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/amd64/amd64-k8 +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/amd64/amd64-k8 @@ -0,0 +1,5599 @@ +drivers/acpi/ac acpi_get_ac_dir 0x25ad6be9 +drivers/acpi/battery acpi_get_battery_dir 0x866ae2fc +drivers/acpi/i2c_acpi_ec acpi_get_ec_hc 0xf96a0c49 +drivers/acpi/processor acpi_processor_notify_smm 0xf59bc440 +drivers/acpi/processor acpi_processor_register_performance 0x858fc2e6 +drivers/acpi/processor acpi_processor_set_thermal_limit 0xe8a3605f +drivers/acpi/processor acpi_processor_unregister_performance 0x70b3538a +drivers/atm/suni suni_init 0x3ac16b00 +drivers/atm/uPD98402 uPD98402_init 0x5324f91a +drivers/block/loop loop_register_transfer 0xadbdacdd +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0x892f9f90 +drivers/block/paride/paride pi_disconnect 0x0a43e0ff +drivers/block/paride/paride pi_do_claimed 0x1d8f5f3b +drivers/block/paride/paride pi_init 0x236bf8aa +drivers/block/paride/paride pi_read_block 0x4fac14c0 +drivers/block/paride/paride pi_read_regr 0x079fc2c7 +drivers/block/paride/paride pi_register 0x9d95a879 +drivers/block/paride/paride pi_release 0x6dd2999c +drivers/block/paride/paride pi_schedule_claimed 0xaeb9d46a +drivers/block/paride/paride pi_unregister 0x8eb5c29f +drivers/block/paride/paride pi_write_block 0x2eed158f +drivers/block/paride/paride pi_write_regr 0x588863cf +drivers/cdrom/cdrom cdrom_get_last_written 0xc5450602 +drivers/cdrom/cdrom cdrom_get_media_event 0x4b6049a2 +drivers/cdrom/cdrom cdrom_ioctl 0x1856a709 +drivers/cdrom/cdrom cdrom_media_changed 0xe25a8510 +drivers/cdrom/cdrom cdrom_mode_select 0x79503b0b +drivers/cdrom/cdrom cdrom_mode_sense 0xdbda896d +drivers/cdrom/cdrom cdrom_number_of_slots 0x03910641 +drivers/cdrom/cdrom cdrom_open 0x9151cab9 +drivers/cdrom/cdrom cdrom_release 0x04dd9cdf +drivers/cdrom/cdrom init_cdrom_command 0x4f476e96 +drivers/cdrom/cdrom register_cdrom 0x0fd32fc4 +drivers/cdrom/cdrom unregister_cdrom 0x87424e21 +drivers/char/drm/drm drm_addbufs_agp 0x2bef0f91 +drivers/char/drm/drm drm_addbufs_fb 0xdad5765b +drivers/char/drm/drm drm_addbufs_pci 0x97a18296 +drivers/char/drm/drm drm_addmap 0x6f0e62e6 +drivers/char/drm/drm drm_agp_acquire 0x8692373e +drivers/char/drm/drm drm_agp_alloc 0xa5a7bd33 +drivers/char/drm/drm drm_agp_bind 0x92dadb31 +drivers/char/drm/drm drm_agp_bind_memory 0xbcaeaf26 +drivers/char/drm/drm drm_agp_enable 0x13a34ddd +drivers/char/drm/drm drm_agp_free 0xd37052c4 +drivers/char/drm/drm drm_agp_info 0x7c9af09a +drivers/char/drm/drm drm_agp_release 0x5c5fdb3c +drivers/char/drm/drm drm_agp_unbind 0x7bd1c1b3 +drivers/char/drm/drm drm_ati_pcigart_cleanup 0x6a42be7d +drivers/char/drm/drm drm_ati_pcigart_init 0xef950eab +drivers/char/drm/drm drm_compat_ioctl 0xddc1f1f0 +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0x1b983432 +drivers/char/drm/drm drm_core_reclaim_buffers 0x3360659b +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0x91287970 +drivers/char/drm/drm drm_fasync 0x7e02510b +drivers/char/drm/drm drm_get_dev 0xc7d88559 +drivers/char/drm/drm drm_get_resource_len 0xba76b6d1 +drivers/char/drm/drm drm_get_resource_start 0x072f5a37 +drivers/char/drm/drm drm_init 0x1650b182 +drivers/char/drm/drm drm_ioctl 0xe3a222dc +drivers/char/drm/drm drm_irq_uninstall 0x7116c05c +drivers/char/drm/drm drm_mmap 0x1fe42837 +drivers/char/drm/drm drm_open 0x7340f9db +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0x2d612fb9 +drivers/char/drm/drm drm_pci_free 0xfbcf8b6e +drivers/char/drm/drm drm_poll 0x0373d488 +drivers/char/drm/drm drm_release 0x27aabf03 +drivers/char/drm/drm drm_rmmap 0xae76fa14 +drivers/char/drm/drm drm_rmmap_locked 0xb1e97f57 +drivers/char/drm/drm drm_vbl_send_signals 0xacab7386 +drivers/char/ftape/lowlevel/ftape ftape_abort_operation 0xd90df519 +drivers/char/ftape/lowlevel/ftape ftape_calibrate_data_rate 0x82bcf52a +drivers/char/ftape/lowlevel/ftape ftape_command 0x799305e4 +drivers/char/ftape/lowlevel/ftape ftape_decode_header_segment 0x08b665ef +drivers/char/ftape/lowlevel/ftape ftape_disable 0x7b52f04b +drivers/char/ftape/lowlevel/ftape ftape_enable 0x7ec0d5d4 +drivers/char/ftape/lowlevel/ftape ftape_find_end_of_bsm_list 0x46738687 +drivers/char/ftape/lowlevel/ftape ftape_format_status 0xe9849eee +drivers/char/ftape/lowlevel/ftape ftape_format_track 0x40febb40 +drivers/char/ftape/lowlevel/ftape ftape_function_nest_level 0x50196743 +drivers/char/ftape/lowlevel/ftape ftape_get_bad_sector_entry 0xfed5a53d +drivers/char/ftape/lowlevel/ftape ftape_get_status 0x46f47070 +drivers/char/ftape/lowlevel/ftape ftape_loop_until_writes_done 0x003ed2ea +drivers/char/ftape/lowlevel/ftape ftape_mmap 0x3889625d +drivers/char/ftape/lowlevel/ftape ftape_parameter 0xc17b60e3 +drivers/char/ftape/lowlevel/ftape ftape_read_header_segment 0xa2b14b3c +drivers/char/ftape/lowlevel/ftape ftape_read_segment_fraction 0xc87f4ed7 +drivers/char/ftape/lowlevel/ftape ftape_ready_wait 0xc780ed08 +drivers/char/ftape/lowlevel/ftape ftape_report_error 0x999edffd +drivers/char/ftape/lowlevel/ftape ftape_report_operation 0xf5ac4591 +drivers/char/ftape/lowlevel/ftape ftape_reset_drive 0x2bdba6aa +drivers/char/ftape/lowlevel/ftape ftape_seek_to_bot 0x4815ac3c +drivers/char/ftape/lowlevel/ftape ftape_seek_to_eot 0x3566aa64 +drivers/char/ftape/lowlevel/ftape ftape_set_nr_buffers 0x8b56caaa +drivers/char/ftape/lowlevel/ftape ftape_set_state 0x5b52d4b8 +drivers/char/ftape/lowlevel/ftape ftape_start_writing 0xa99d81e3 +drivers/char/ftape/lowlevel/ftape ftape_trace_call 0x63f7f6d0 +drivers/char/ftape/lowlevel/ftape ftape_trace_exit 0x4e755dcf +drivers/char/ftape/lowlevel/ftape ftape_trace_log 0x92ce7eb1 +drivers/char/ftape/lowlevel/ftape ftape_tracing 0x6b6253d3 +drivers/char/ftape/lowlevel/ftape ftape_verify_segment 0x82675be7 +drivers/char/ftape/lowlevel/ftape ftape_write_segment 0x8a09c846 +drivers/char/ftape/lowlevel/ftape ftape_zap_read_buffers 0xdd9f0ae0 +drivers/char/ftape/zftape/zftape zft_cmpr_register 0xe27489d5 +drivers/char/ftape/zftape/zftape zft_fetch_segment_fraction 0x41f166c1 +drivers/char/ftape/zftape/zftape zft_vfree 0x02da35e5 +drivers/char/ftape/zftape/zftape zft_vmalloc_always 0x1770d505 +drivers/char/ftape/zftape/zftape zft_vmalloc_once 0x3c4b9c89 +drivers/char/generic_serial gs_block_til_ready 0xeba3741c +drivers/char/generic_serial gs_chars_in_buffer 0xd49ea2a0 +drivers/char/generic_serial gs_close 0x10bd5c83 +drivers/char/generic_serial gs_flush_buffer 0xe3509e8d +drivers/char/generic_serial gs_flush_chars 0x20bfbf8e +drivers/char/generic_serial gs_getserial 0x7e32d1f6 +drivers/char/generic_serial gs_got_break 0x4268dcfb +drivers/char/generic_serial gs_hangup 0xc4992124 +drivers/char/generic_serial gs_init_port 0x1fdac3b3 +drivers/char/generic_serial gs_put_char 0xe2d6402e +drivers/char/generic_serial gs_set_termios 0x6329a775 +drivers/char/generic_serial gs_setserial 0x467122f5 +drivers/char/generic_serial gs_start 0x69e16ae1 +drivers/char/generic_serial gs_stop 0x48e2186d +drivers/char/generic_serial gs_write 0xc21502a5 +drivers/char/generic_serial gs_write_room 0xe82099f0 +drivers/char/ip2main ip2_loadmain 0x5f735f69 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0xb6c79056 +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0xeaa9a9ba +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0x6b651694 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0xf936ecb5 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0xfa421011 +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0xfeebda43 +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0x0490d64a +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0xe747f055 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0xe296f36b +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x1bd256e7 +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0x77333e34 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0x86f76fe8 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0xedcbf7c1 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0xc452f876 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0x569a2b9a +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0x8880d2bd +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0x2d733d5d +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0xad658fed +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0xfc4d7df5 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0x0e87de52 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0xf3f0bb92 +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0xd5016049 +drivers/char/nvram __nvram_check_checksum 0x2adec1e0 +drivers/char/nvram __nvram_read_byte 0x17ff2c1d +drivers/char/nvram __nvram_write_byte 0xa8813189 +drivers/char/nvram nvram_check_checksum 0x7da28f12 +drivers/char/nvram nvram_read_byte 0x0f28cb91 +drivers/char/nvram nvram_write_byte 0x9ce3f83f +drivers/char/tpm/tpm tpm_open 0xd4f9610b +drivers/char/tpm/tpm tpm_pm_resume 0xc5cdc029 +drivers/char/tpm/tpm tpm_pm_suspend 0xa1c21852 +drivers/char/tpm/tpm tpm_read 0xbfcb530b +drivers/char/tpm/tpm tpm_register_hardware 0x68fd4c55 +drivers/char/tpm/tpm tpm_release 0xd64f4946 +drivers/char/tpm/tpm tpm_remove_hardware 0xfadbf60e +drivers/char/tpm/tpm tpm_show_caps 0x0745d7a8 +drivers/char/tpm/tpm tpm_show_pcrs 0x39d5481b +drivers/char/tpm/tpm tpm_show_pubek 0x1f410664 +drivers/char/tpm/tpm tpm_store_cancel 0x01bf1978 +drivers/char/tpm/tpm tpm_write 0x1a180afc +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0x230e71d5 +drivers/cpufreq/freq_table cpufreq_freq_attr_scaling_available_freqs 0x6234281e +drivers/cpufreq/freq_table cpufreq_frequency_get_table 0x2f47d8c7 +drivers/cpufreq/freq_table cpufreq_frequency_table_cpuinfo 0x80ffe640 +drivers/cpufreq/freq_table cpufreq_frequency_table_get_attr 0x706b3a33 +drivers/cpufreq/freq_table cpufreq_frequency_table_put_attr 0x7ae1ae8e +drivers/cpufreq/freq_table cpufreq_frequency_table_target 0x42f0a01f +drivers/cpufreq/freq_table cpufreq_frequency_table_verify 0xb411fde4 +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-bit i2c_bit_add_bus 0x8ffb129c +drivers/i2c/algos/i2c-algo-bit i2c_bit_del_bus 0x7f9d9735 +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0x704c67df +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0x802ae276 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0x91f30de2 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0x6195884b +drivers/i2c/busses/i2c-amd756 amd756_smbus 0x33ede29f +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0x303a8fd4 +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0xd22d0fbd +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/i2c/i2c-core i2c_adapter_class 0x86ba8329 +drivers/i2c/i2c-core i2c_adapter_dev_release 0x34c3eb9a +drivers/i2c/i2c-core i2c_adapter_driver 0x41714cae +drivers/i2c/i2c-core i2c_add_adapter 0x0f3bb9ac +drivers/i2c/i2c-core i2c_add_driver 0xc2e092c5 +drivers/i2c/i2c-core i2c_attach_client 0x489e0390 +drivers/i2c/i2c-core i2c_bus_type 0x115cf82d +drivers/i2c/i2c-core i2c_check_addr 0x6bab5f2a +drivers/i2c/i2c-core i2c_clients_command 0xf09023f5 +drivers/i2c/i2c-core i2c_control 0xe62d0a48 +drivers/i2c/i2c-core i2c_del_adapter 0x700b1630 +drivers/i2c/i2c-core i2c_del_driver 0x6518c53b +drivers/i2c/i2c-core i2c_detach_client 0xc0e65ae7 +drivers/i2c/i2c-core i2c_get_adapter 0x008e05f2 +drivers/i2c/i2c-core i2c_master_recv 0x98e5af6f +drivers/i2c/i2c-core i2c_master_send 0xd3ccf2e3 +drivers/i2c/i2c-core i2c_probe 0x7a491700 +drivers/i2c/i2c-core i2c_put_adapter 0x78ce28ce +drivers/i2c/i2c-core i2c_release_client 0x034ace01 +drivers/i2c/i2c-core i2c_smbus_read_byte 0xf849bcdf +drivers/i2c/i2c-core i2c_smbus_read_byte_data 0xb1aa5216 +drivers/i2c/i2c-core i2c_smbus_read_i2c_block_data 0x6447b592 +drivers/i2c/i2c-core i2c_smbus_read_word_data 0xb2365e95 +drivers/i2c/i2c-core i2c_smbus_write_block_data 0x358d4240 +drivers/i2c/i2c-core i2c_smbus_write_byte 0x64146891 +drivers/i2c/i2c-core i2c_smbus_write_byte_data 0x0d1b99b5 +drivers/i2c/i2c-core i2c_smbus_write_quick 0x99df60c7 +drivers/i2c/i2c-core i2c_smbus_write_word_data 0x5c1f1219 +drivers/i2c/i2c-core i2c_smbus_xfer 0x3e59c1a9 +drivers/i2c/i2c-core i2c_transfer 0x4226e786 +drivers/i2c/i2c-core i2c_use_client 0x78087e09 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0x336406db +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x07d47ac9 +drivers/ieee1394/ieee1394 csr1212_read 0x62913498 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x33805a4e +drivers/ieee1394/ieee1394 dma_prog_region_free 0xbf2040c7 +drivers/ieee1394/ieee1394 dma_prog_region_init 0x33495565 +drivers/ieee1394/ieee1394 dma_region_alloc 0x13ec9b65 +drivers/ieee1394/ieee1394 dma_region_free 0x3933224a +drivers/ieee1394/ieee1394 dma_region_init 0x1eb47908 +drivers/ieee1394/ieee1394 dma_region_mmap 0xffeec6f1 +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0x7ba85245 +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0x1379a49f +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x6bd63a8e +drivers/ieee1394/ieee1394 highlevel_host_reset 0x75c66426 +drivers/ieee1394/ieee1394 hpsb_add_host 0xeb60832c +drivers/ieee1394/ieee1394 hpsb_alloc_host 0x7f9a41b0 +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0x5ae21cf5 +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0x762d55fb +drivers/ieee1394/ieee1394 hpsb_bus_reset 0xb767e6a5 +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0x52282a81 +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0xe2b72235 +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0x48019da4 +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0x116a7f12 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0x3aaf9b1f +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0x88e23fb4 +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0x76b2b4a3 +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0x58cc3be0 +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0x3f4f1e15 +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0xb81895cc +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0x43e4fbe2 +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0x1df2e20f +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0x0b37a7be +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0x5a1a753f +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0x3e001f98 +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0xe327ea26 +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0xadfb6615 +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0x3cbc215b +drivers/ieee1394/ieee1394 hpsb_iso_stop 0x4cbba547 +drivers/ieee1394/ieee1394 hpsb_iso_wake 0x88847449 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x6a26cd1d +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0x57067176 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0x696a7df9 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0xf1f01ee2 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0x10ac5f90 +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0xc2ca4517 +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0xe2af53b1 +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0x426900b6 +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0xdb99aaca +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0xc97a5b78 +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0xf43b35f6 +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0xffb90b11 +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0x8ee56640 +drivers/ieee1394/ieee1394 hpsb_node_write 0x90bffd9a +drivers/ieee1394/ieee1394 hpsb_packet_received 0xac13a232 +drivers/ieee1394/ieee1394 hpsb_packet_sent 0xf6643cdd +drivers/ieee1394/ieee1394 hpsb_packet_success 0x4bd9c8e7 +drivers/ieee1394/ieee1394 hpsb_protocol_class 0x70b4dc1b +drivers/ieee1394/ieee1394 hpsb_read 0x8098623e +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0xd6828acf +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0x17ace745 +drivers/ieee1394/ieee1394 hpsb_register_protocol 0xa293dad9 +drivers/ieee1394/ieee1394 hpsb_remove_host 0x17b63793 +drivers/ieee1394/ieee1394 hpsb_reset_bus 0x3a89a78f +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0x0601feb8 +drivers/ieee1394/ieee1394 hpsb_selfid_received 0x2cb43dc4 +drivers/ieee1394/ieee1394 hpsb_send_packet 0x5c25c63e +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0xa47ecf40 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0xc9333f4b +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0x9d4077ea +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0xf77592c0 +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0x7097b155 +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0xf7b12b8a +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0x4e5cfca2 +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0x0a4d16c5 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0x7dc8af54 +drivers/ieee1394/ieee1394 hpsb_write 0xab5bfd43 +drivers/ieee1394/ieee1394 ieee1394_bus_type 0x22c60c6d +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0x1d5aeebc +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0xdd044585 +drivers/ieee1394/ohci1394 ohci1394_stop_context 0x23f419b8 +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0x79107db8 +drivers/infiniband/core/ib_cm ib_cm_establish 0x113ac3ee +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0x5f796794 +drivers/infiniband/core/ib_cm ib_cm_listen 0x2b86c470 +drivers/infiniband/core/ib_cm ib_create_cm_id 0x894ca976 +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0x2412eca5 +drivers/infiniband/core/ib_cm ib_send_cm_apr 0x6b2a9311 +drivers/infiniband/core/ib_cm ib_send_cm_drep 0xbd1c746d +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0x49879902 +drivers/infiniband/core/ib_cm ib_send_cm_lap 0xeae7612f +drivers/infiniband/core/ib_cm ib_send_cm_mra 0x919ac0b0 +drivers/infiniband/core/ib_cm ib_send_cm_rej 0x23258290 +drivers/infiniband/core/ib_cm ib_send_cm_rep 0x5de571cf +drivers/infiniband/core/ib_cm ib_send_cm_req 0x48805f80 +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0xc0c4ba21 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0xcfd01ef9 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0x171ad101 +drivers/infiniband/core/ib_core ib_alloc_device 0xcacddc09 +drivers/infiniband/core/ib_core ib_alloc_fmr 0xe9edecb6 +drivers/infiniband/core/ib_core ib_alloc_mw 0xe803e4bf +drivers/infiniband/core/ib_core ib_alloc_pd 0xce371288 +drivers/infiniband/core/ib_core ib_attach_mcast 0x430b6d74 +drivers/infiniband/core/ib_core ib_create_ah 0x502c894d +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0xb1d0633b +drivers/infiniband/core/ib_core ib_create_cq 0x07d9d4c6 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0x5ada691b +drivers/infiniband/core/ib_core ib_create_qp 0x340b761c +drivers/infiniband/core/ib_core ib_create_srq 0x135dc22a +drivers/infiniband/core/ib_core ib_dealloc_device 0xe75b804e +drivers/infiniband/core/ib_core ib_dealloc_fmr 0xb18917f7 +drivers/infiniband/core/ib_core ib_dealloc_mw 0x292ca10f +drivers/infiniband/core/ib_core ib_dealloc_pd 0x567f4ed9 +drivers/infiniband/core/ib_core ib_dereg_mr 0x6ecff4ff +drivers/infiniband/core/ib_core ib_destroy_ah 0x8244b658 +drivers/infiniband/core/ib_core ib_destroy_cq 0xa16a2bca +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x74d97c93 +drivers/infiniband/core/ib_core ib_destroy_qp 0x8c18f9ee +drivers/infiniband/core/ib_core ib_destroy_srq 0x7b6bf321 +drivers/infiniband/core/ib_core ib_detach_mcast 0x1a33dc0c +drivers/infiniband/core/ib_core ib_dispatch_event 0x7d51a799 +drivers/infiniband/core/ib_core ib_find_cached_gid 0xdeae85f2 +drivers/infiniband/core/ib_core ib_find_cached_pkey 0xfe0876ca +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0xfd2b1128 +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0xa1d56996 +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0x88d9132c +drivers/infiniband/core/ib_core ib_get_cached_gid 0x426254dd +drivers/infiniband/core/ib_core ib_get_cached_pkey 0x8c6aca05 +drivers/infiniband/core/ib_core ib_get_client_data 0xe643eee3 +drivers/infiniband/core/ib_core ib_get_dma_mr 0xb78df10b +drivers/infiniband/core/ib_core ib_modify_ah 0x361b3902 +drivers/infiniband/core/ib_core ib_modify_device 0x248158bf +drivers/infiniband/core/ib_core ib_modify_port 0xd224db0f +drivers/infiniband/core/ib_core ib_modify_qp 0xdcb5ff45 +drivers/infiniband/core/ib_core ib_modify_srq 0x1af0a780 +drivers/infiniband/core/ib_core ib_pack 0x06830b9a +drivers/infiniband/core/ib_core ib_query_ah 0x81a0e1ca +drivers/infiniband/core/ib_core ib_query_device 0x91614db5 +drivers/infiniband/core/ib_core ib_query_gid 0x4efad20e +drivers/infiniband/core/ib_core ib_query_mr 0x305910ef +drivers/infiniband/core/ib_core ib_query_pkey 0x85c425c0 +drivers/infiniband/core/ib_core ib_query_port 0xaf9386a4 +drivers/infiniband/core/ib_core ib_query_qp 0x934df211 +drivers/infiniband/core/ib_core ib_query_srq 0xbe9fbb40 +drivers/infiniband/core/ib_core ib_reg_phys_mr 0x5f122547 +drivers/infiniband/core/ib_core ib_register_client 0x6225b151 +drivers/infiniband/core/ib_core ib_register_device 0xf00f474a +drivers/infiniband/core/ib_core ib_register_event_handler 0x78e94894 +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x769d3b6d +drivers/infiniband/core/ib_core ib_resize_cq 0x5a6b3495 +drivers/infiniband/core/ib_core ib_set_client_data 0x1656f00d +drivers/infiniband/core/ib_core ib_ud_header_init 0x965c1dae +drivers/infiniband/core/ib_core ib_ud_header_pack 0x8d12f837 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0x11d42382 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xf96fc9de +drivers/infiniband/core/ib_core ib_unregister_client 0x26e9d232 +drivers/infiniband/core/ib_core ib_unregister_device 0xc9c5f9bf +drivers/infiniband/core/ib_core ib_unregister_event_handler 0x2ed649cc +drivers/infiniband/core/ib_mad ib_cancel_mad 0x4ed0b0ce +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x6a3bbc94 +drivers/infiniband/core/ib_mad ib_create_send_mad 0x70921ac5 +drivers/infiniband/core/ib_mad ib_free_recv_mad 0xd6f8244e +drivers/infiniband/core/ib_mad ib_free_send_mad 0xf7409496 +drivers/infiniband/core/ib_mad ib_modify_mad 0xaf2df74c +drivers/infiniband/core/ib_mad ib_post_send_mad 0xd2372c84 +drivers/infiniband/core/ib_mad ib_process_mad_wc 0xa8feb5e6 +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x0360e8db +drivers/infiniband/core/ib_mad ib_register_mad_agent 0xb9390812 +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0xb7b3f30d +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0x9e57e70f +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0x22563b11 +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0xbd857fde +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0xe42447f2 +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0xcad62cfb +drivers/input/gameport/gameport __gameport_register_driver 0x31e85eba +drivers/input/gameport/gameport __gameport_register_port 0x10fedf58 +drivers/input/gameport/gameport gameport_close 0x43587d87 +drivers/input/gameport/gameport gameport_cooked_read 0x2105c8b5 +drivers/input/gameport/gameport gameport_open 0x923485f3 +drivers/input/gameport/gameport gameport_rescan 0x567e7e0e +drivers/input/gameport/gameport gameport_set_name 0xb13db0c9 +drivers/input/gameport/gameport gameport_set_phys 0x3b1e4919 +drivers/input/gameport/gameport gameport_start_polling 0x7c28b95e +drivers/input/gameport/gameport gameport_stop_polling 0x12fceb76 +drivers/input/gameport/gameport gameport_unregister_driver 0xd55f698f +drivers/input/gameport/gameport gameport_unregister_port 0xa9d230a3 +drivers/isdn/capi/capifs capifs_free_ncci 0x2c54c957 +drivers/isdn/capi/capifs capifs_new_ncci 0xd0bc06ce +drivers/isdn/capi/kernelcapi attach_capi_ctr 0x2dec7ed5 +drivers/isdn/capi/kernelcapi capi20_get_manufacturer 0x7e6f1307 +drivers/isdn/capi/kernelcapi capi20_get_profile 0xe19a11ac +drivers/isdn/capi/kernelcapi capi20_get_serial 0x7a33596c +drivers/isdn/capi/kernelcapi capi20_get_version 0x14f2aa5a +drivers/isdn/capi/kernelcapi capi20_isinstalled 0x31c24aa4 +drivers/isdn/capi/kernelcapi capi20_manufacturer 0xed061606 +drivers/isdn/capi/kernelcapi capi20_put_message 0xb757ea13 +drivers/isdn/capi/kernelcapi capi20_register 0x345ddae0 +drivers/isdn/capi/kernelcapi capi20_release 0x537ad720 +drivers/isdn/capi/kernelcapi capi20_set_callback 0x7711576c +drivers/isdn/capi/kernelcapi capi_cmd2str 0xb19fda8d +drivers/isdn/capi/kernelcapi capi_cmsg2message 0x50b33ca4 +drivers/isdn/capi/kernelcapi capi_cmsg2str 0xd45b5eb5 +drivers/isdn/capi/kernelcapi capi_cmsg_header 0xb60e5e5f +drivers/isdn/capi/kernelcapi capi_ctr_handle_message 0x669768d0 +drivers/isdn/capi/kernelcapi capi_ctr_ready 0xea6a88df +drivers/isdn/capi/kernelcapi capi_ctr_reseted 0x059de561 +drivers/isdn/capi/kernelcapi capi_ctr_resume_output 0xfb977902 +drivers/isdn/capi/kernelcapi capi_ctr_suspend_output 0x07ce2a17 +drivers/isdn/capi/kernelcapi capi_info2str 0x47d3fc51 +drivers/isdn/capi/kernelcapi capi_message2cmsg 0x6057c6f3 +drivers/isdn/capi/kernelcapi capi_message2str 0xa7abc5e3 +drivers/isdn/capi/kernelcapi capilib_data_b3_conf 0x62e32d43 +drivers/isdn/capi/kernelcapi capilib_data_b3_req 0x71e8d5ba +drivers/isdn/capi/kernelcapi capilib_free_ncci 0x2b8eab1f +drivers/isdn/capi/kernelcapi capilib_new_ncci 0x2baa6586 +drivers/isdn/capi/kernelcapi capilib_release 0x8f699913 +drivers/isdn/capi/kernelcapi capilib_release_appl 0xaa165d27 +drivers/isdn/capi/kernelcapi detach_capi_ctr 0x8cf902c8 +drivers/isdn/capi/kernelcapi register_capi_driver 0x9f823278 +drivers/isdn/capi/kernelcapi unregister_capi_driver 0x04403fcf +drivers/isdn/hardware/avm/b1 avmcard_dma_alloc 0xb3f1b082 +drivers/isdn/hardware/avm/b1 avmcard_dma_free 0x44b9ec81 +drivers/isdn/hardware/avm/b1 b1_alloc_card 0x57b9afcb +drivers/isdn/hardware/avm/b1 b1_detect 0xdfd28376 +drivers/isdn/hardware/avm/b1 b1_free_card 0x02a274f7 +drivers/isdn/hardware/avm/b1 b1_getrevision 0x42eeb55b +drivers/isdn/hardware/avm/b1 b1_interrupt 0x42fe58a1 +drivers/isdn/hardware/avm/b1 b1_irq_table 0x85f09690 +drivers/isdn/hardware/avm/b1 b1_load_config 0x17d56939 +drivers/isdn/hardware/avm/b1 b1_load_firmware 0x4437a256 +drivers/isdn/hardware/avm/b1 b1_load_t4file 0xe3dfddd6 +drivers/isdn/hardware/avm/b1 b1_loaded 0x320d14ce +drivers/isdn/hardware/avm/b1 b1_parse_version 0x861746b4 +drivers/isdn/hardware/avm/b1 b1_register_appl 0xca39bbc1 +drivers/isdn/hardware/avm/b1 b1_release_appl 0x28d5b4c4 +drivers/isdn/hardware/avm/b1 b1_reset_ctr 0x0453d040 +drivers/isdn/hardware/avm/b1 b1_send_message 0xb3d72aa5 +drivers/isdn/hardware/avm/b1 b1ctl_read_proc 0xd4f44425 +drivers/isdn/hardware/avm/b1dma b1dma_interrupt 0x405cf7b2 +drivers/isdn/hardware/avm/b1dma b1dma_load_firmware 0x50bc7f98 +drivers/isdn/hardware/avm/b1dma b1dma_register_appl 0x4cdc5d09 +drivers/isdn/hardware/avm/b1dma b1dma_release_appl 0x89335768 +drivers/isdn/hardware/avm/b1dma b1dma_reset 0x49d0c595 +drivers/isdn/hardware/avm/b1dma b1dma_reset_ctr 0x0f8ff0be +drivers/isdn/hardware/avm/b1dma b1dma_send_message 0xb791a12c +drivers/isdn/hardware/avm/b1dma b1dmactl_read_proc 0xdfd05cb1 +drivers/isdn/hardware/avm/b1dma b1pciv4_detect 0xb1d93bf0 +drivers/isdn/hardware/avm/b1dma t1pci_detect 0x24bf3d77 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_b1 0xf14bf8b1 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m1 0xaec3240e +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m2 0xea620116 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_delcard 0x29562993 +drivers/isdn/hardware/eicon/divadidd DIVA_DIDD_Read 0x2974ead1 +drivers/isdn/hardware/eicon/divadidd proc_net_eicon 0x31e7015d +drivers/isdn/hisax/hisax FsmChangeState 0x93a64734 +drivers/isdn/hisax/hisax FsmDelTimer 0x799088e0 +drivers/isdn/hisax/hisax FsmEvent 0x9df0cd27 +drivers/isdn/hisax/hisax FsmFree 0x148f0c99 +drivers/isdn/hisax/hisax FsmInitTimer 0x52866abe +drivers/isdn/hisax/hisax FsmNew 0xf0a16657 +drivers/isdn/hisax/hisax FsmRestartTimer 0xde7e7906 +drivers/isdn/hisax/hisax HiSax_closecard 0xfc27303b +drivers/isdn/hisax/hisax hisax_init_pcmcia 0x14e932c3 +drivers/isdn/hisax/hisax hisax_register 0xee93522c +drivers/isdn/hisax/hisax hisax_unregister 0x07f4f2ce +drivers/isdn/hisax/hisax_isac isac_d_l2l1 0x3f3b323a +drivers/isdn/hisax/hisax_isac isac_init 0x83ba9ffa +drivers/isdn/hisax/hisax_isac isac_irq 0x9a0b0d45 +drivers/isdn/hisax/hisax_isac isac_setup 0x9349a3ed +drivers/isdn/hisax/hisax_isac isacsx_irq 0x3c3e4782 +drivers/isdn/hisax/hisax_isac isacsx_setup 0x81fbecdf +drivers/isdn/hisax/isdnhdlc isdnhdlc_bit_rev_tab 0xe82c3e32 +drivers/isdn/hisax/isdnhdlc isdnhdlc_decode 0x1a1afeef +drivers/isdn/hisax/isdnhdlc isdnhdlc_encode 0x52a6537c +drivers/isdn/hisax/isdnhdlc isdnhdlc_out_init 0x277685da +drivers/isdn/hisax/isdnhdlc isdnhdlc_rcv_init 0x1dc6a9fc +drivers/isdn/i4l/isdn isdn_ppp_register_compressor 0xb1ba305f +drivers/isdn/i4l/isdn isdn_ppp_unregister_compressor 0x6ef52c01 +drivers/isdn/i4l/isdn isdn_register_divert 0xb7757abb +drivers/isdn/i4l/isdn register_isdn 0x2ce71d56 +drivers/isdn/misdn/mISDN_core mISDN_AddIE 0x482819d0 +drivers/isdn/misdn/mISDN_core mISDN_AddvarIE 0x3ab86062 +drivers/isdn/misdn/mISDN_core mISDN_ConnectIF 0xf2b8d993 +drivers/isdn/misdn/mISDN_core mISDN_DisConnectIF 0xe0822b42 +drivers/isdn/misdn/mISDN_core mISDN_FsmAddTimer 0x7214e53f +drivers/isdn/misdn/mISDN_core mISDN_FsmChangeState 0x50c2230c +drivers/isdn/misdn/mISDN_core mISDN_FsmDelTimer 0x3010393f +drivers/isdn/misdn/mISDN_core mISDN_FsmEvent 0xd5145151 +drivers/isdn/misdn/mISDN_core mISDN_FsmFree 0x2348cc3c +drivers/isdn/misdn/mISDN_core mISDN_FsmInitTimer 0x172da300 +drivers/isdn/misdn/mISDN_core mISDN_FsmNew 0xf9e7832f +drivers/isdn/misdn/mISDN_core mISDN_FsmRestartTimer 0x50a5d950 +drivers/isdn/misdn/mISDN_core mISDN_HasProtocol 0xb558f75b +drivers/isdn/misdn/mISDN_core mISDN_LogL3Msg 0x2a006e4e +drivers/isdn/misdn/mISDN_core mISDN_QuickHex 0x91b96ea6 +drivers/isdn/misdn/mISDN_core mISDN_RemoveUsedPID 0xd956d2e8 +drivers/isdn/misdn/mISDN_core mISDN_SetHandledPID 0x020cda6d +drivers/isdn/misdn/mISDN_core mISDN_SetIF 0xb60678ab +drivers/isdn/misdn/mISDN_core mISDN_alloc_l3msg 0x1b825e46 +drivers/isdn/misdn/mISDN_core mISDN_bprotocol2pid 0xed673eae +drivers/isdn/misdn/mISDN_core mISDN_debug 0xff10c7d9 +drivers/isdn/misdn/mISDN_core mISDN_debugprint 0x3378b310 +drivers/isdn/misdn/mISDN_core mISDN_free_bch 0x661b47c2 +drivers/isdn/misdn/mISDN_core mISDN_free_dch 0x00182cfa +drivers/isdn/misdn/mISDN_core mISDN_get_down_layer 0xd1c0ae73 +drivers/isdn/misdn/mISDN_core mISDN_get_lowlayer 0x9f6faa8f +drivers/isdn/misdn/mISDN_core mISDN_get_protocol 0x0696ceb5 +drivers/isdn/misdn/mISDN_core mISDN_get_up_layer 0xc6091c92 +drivers/isdn/misdn/mISDN_core mISDN_getrev 0x91f1a1b8 +drivers/isdn/misdn/mISDN_core mISDN_initQ931_info 0x45d57ad5 +drivers/isdn/misdn/mISDN_core mISDN_init_bch 0x7c11782a +drivers/isdn/misdn/mISDN_core mISDN_init_dch 0x7e2bdbe1 +drivers/isdn/misdn/mISDN_core mISDN_init_instance 0x29873341 +drivers/isdn/misdn/mISDN_core mISDN_l3_ie2pos 0x6a35c630 +drivers/isdn/misdn/mISDN_core mISDN_l3_pos2ie 0x31559777 +drivers/isdn/misdn/mISDN_core mISDN_layermask2layer 0x48cbe644 +drivers/isdn/misdn/mISDN_core mISDN_register 0x4dd56bfa +drivers/isdn/misdn/mISDN_core mISDN_set_dchannel_pid 0xca03ed9e +drivers/isdn/misdn/mISDN_core mISDN_unregister 0xe0c125f2 +drivers/isdn/misdn/mISDN_core vmISDN_debug 0x85718442 +drivers/isdn/misdn/mISDN_isac mISDN_ISAC_l1hw 0xfa4022bc +drivers/isdn/misdn/mISDN_isac mISDN_clear_isac 0x5c548212 +drivers/isdn/misdn/mISDN_isac mISDN_isac_free 0xa14378a4 +drivers/isdn/misdn/mISDN_isac mISDN_isac_init 0x3100b9e1 +drivers/isdn/misdn/mISDN_isac mISDN_isac_interrupt 0xd6ca3b26 +drivers/md/dm-mirror dm_create_dirty_log 0xc09c5d97 +drivers/md/dm-mirror dm_destroy_dirty_log 0xad666d06 +drivers/md/dm-mirror dm_register_dirty_log_type 0xfb0ef7f7 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x0d705c30 +drivers/md/dm-mod dm_get_device 0x0f21e56e +drivers/md/dm-mod dm_get_mapinfo 0xcb1b933d +drivers/md/dm-mod dm_io_async 0xe854a998 +drivers/md/dm-mod dm_io_async_bvec 0x08c04618 +drivers/md/dm-mod dm_io_async_vm 0xce9d269a +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0x8f0a0129 +drivers/md/dm-mod dm_io_sync_bvec 0x7d66ed64 +drivers/md/dm-mod dm_io_sync_vm 0x418448a7 +drivers/md/dm-mod dm_put_device 0x6a108e5c +drivers/md/dm-mod dm_register_target 0x640b7c82 +drivers/md/dm-mod dm_table_event 0x7c5044fc +drivers/md/dm-mod dm_table_flush_all 0xe9ff318b +drivers/md/dm-mod dm_table_get 0x8d21c1a3 +drivers/md/dm-mod dm_table_get_mode 0xb6284af5 +drivers/md/dm-mod dm_table_get_size 0xb91073d8 +drivers/md/dm-mod dm_table_put 0xd6c2f5f6 +drivers/md/dm-mod dm_table_unplug_all 0x80a4f0d0 +drivers/md/dm-mod dm_unregister_target 0x4730b1ec +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0xa7b834fa +drivers/md/dm-mod kcopyd_client_create 0xd5782fe2 +drivers/md/dm-mod kcopyd_client_destroy 0x02f8b169 +drivers/md/dm-mod kcopyd_copy 0xd8cd65fc +drivers/md/dm-multipath dm_pg_init_complete 0x54e4b3c4 +drivers/md/dm-multipath dm_register_hw_handler 0x29dd34f8 +drivers/md/dm-multipath dm_register_path_selector 0xc19a890e +drivers/md/dm-multipath dm_scsi_err_handler 0x79ce36e9 +drivers/md/dm-multipath dm_unregister_hw_handler 0x1e3c7526 +drivers/md/dm-multipath dm_unregister_path_selector 0x30f738b2 +drivers/md/md-mod bitmap_close_sync 0xc10c3173 +drivers/md/md-mod bitmap_daemon_work 0x5972090a +drivers/md/md-mod bitmap_end_sync 0xa0984c11 +drivers/md/md-mod bitmap_endwrite 0xc1803290 +drivers/md/md-mod bitmap_start_sync 0x8dc46f22 +drivers/md/md-mod bitmap_startwrite 0xf77cbc5c +drivers/md/md-mod bitmap_unplug 0x7823761d +drivers/md/md-mod md_check_recovery 0xd571f66c +drivers/md/md-mod md_done_sync 0x07d4ffa4 +drivers/md/md-mod md_error 0x3fdf618d +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x59aa28b5 +drivers/md/md-mod md_unregister_thread 0xa1077459 +drivers/md/md-mod md_wakeup_thread 0x2c60729c +drivers/md/md-mod md_write_end 0x16e7d46a +drivers/md/md-mod md_write_start 0xbec0519e +drivers/md/md-mod register_md_personality 0xb05c2cc9 +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x4740e7a3 +drivers/media/common/ir-common ir_codes_hauppauge_new 0x902a3cd2 +drivers/media/common/ir-common ir_codes_pinnacle 0xd3a0f048 +drivers/media/common/ir-common ir_codes_pixelview 0xfa177653 +drivers/media/common/ir-common ir_codes_rc5_tv 0xd9c7f010 +drivers/media/common/ir-common ir_codes_winfast 0x89cc1189 +drivers/media/common/ir-common ir_decode_biphase 0x43c89ef4 +drivers/media/common/ir-common ir_decode_pulsedistance 0x2456e513 +drivers/media/common/ir-common ir_dump_samples 0x6d6511e7 +drivers/media/common/ir-common ir_extract_bits 0x1cb148f5 +drivers/media/common/ir-common ir_input_init 0x029419cb +drivers/media/common/ir-common ir_input_keydown 0xfb25820b +drivers/media/common/ir-common ir_input_nokey 0xc72a889d +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x1bedd28f +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0x122eea56 +drivers/media/common/saa7146 saa7146_i2c_transfer 0x6aea1fdd +drivers/media/common/saa7146 saa7146_pgtable_alloc 0x6949763d +drivers/media/common/saa7146 saa7146_pgtable_build_single 0xaac77fd6 +drivers/media/common/saa7146 saa7146_pgtable_free 0x59e46529 +drivers/media/common/saa7146 saa7146_register_extension 0x94f20606 +drivers/media/common/saa7146 saa7146_setgpio 0x80d73f8d +drivers/media/common/saa7146 saa7146_unregister_extension 0x0fce4bb3 +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0xb0d9c6a5 +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0x011bc7b5 +drivers/media/common/saa7146_vv saa7146_register_device 0x236592cc +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0x9a69b705 +drivers/media/common/saa7146_vv saa7146_start_preview 0x6299cd9e +drivers/media/common/saa7146_vv saa7146_stop_preview 0xc6fc6bc6 +drivers/media/common/saa7146_vv saa7146_unregister_device 0x0b6080b0 +drivers/media/common/saa7146_vv saa7146_vv_init 0x1d42d866 +drivers/media/common/saa7146_vv saa7146_vv_release 0x54cd6438 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0x6b2587b8 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0xf3cadc37 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0x5e2f8395 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0xe9a7866e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0x60882a37 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0x1b3f8f00 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0x1dfc64c6 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0x9c242a17 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0xf3895980 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0xf89e675d +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0x0d2811e8 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0xfbc938ae +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0xdd2b6566 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0xfa68e297 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0xd6b7c786 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0x740dd917 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0x3e8d76d2 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0xd35d0f7f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0x7afeddd3 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0xf8bb5cc9 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0x4b9a8832 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0x7496f881 +drivers/media/dvb/bt8xx/bt878 bt878 0xf169d4f8 +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0x8a926b42 +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0xb35dee81 +drivers/media/dvb/bt8xx/bt878 bt878_stop 0xc318050f +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0xfc00f86a +drivers/media/dvb/bt8xx/dst dst_check_sum 0xe94b8c9c +drivers/media/dvb/bt8xx/dst dst_comm_init 0xd7250544 +drivers/media/dvb/bt8xx/dst dst_command 0xaa3c2cb6 +drivers/media/dvb/bt8xx/dst dst_error_bailout 0x7854f5ac +drivers/media/dvb/bt8xx/dst dst_error_recovery 0x63603de2 +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0x68ffab98 +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0x52a7973f +drivers/media/dvb/bt8xx/dst dst_pio_disable 0x6f705be2 +drivers/media/dvb/bt8xx/dst dst_pio_enable 0xfa5a5634 +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0x20c346b1 +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0xe338680f +drivers/media/dvb/bt8xx/dst rdc_reset_state 0x0261194d +drivers/media/dvb/bt8xx/dst read_dst 0x1f8a6401 +drivers/media/dvb/bt8xx/dst write_dst 0x5cf8524e +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0x144c3025 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0x5800f6e8 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0x404bfe74 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0xfd74c11c +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0x156f5c2a +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0x476a36f3 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0xbbfdace1 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0x942eae58 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0xe4228c73 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0xe6cf3689 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x72146fe4 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0xe5117b63 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0x92f5ecb2 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x80e3832d +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x36c8ea1f +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0x3a4a4152 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0x24c05e82 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0x694628b9 +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0xe70aadf1 +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0xe79fae07 +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0x4a0a5062 +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0x003e84e7 +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0xc7ab19c5 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0xf285f7a6 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0x28f24671 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0x8a5fd7bf +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0xa8a9a609 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x4ad03dd5 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0xc70b6fa2 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0x4b48388a +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0xd8ffb173 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0x6d41fb77 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0x4642822d +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0xaef94a45 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0xd9c33fce +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0x18d9aefd +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0x598bdca3 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0x609d1072 +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0x8b49a23f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0x7458bb9c +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0x55ffb3c9 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0xcd8c6add +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0x6f8fa6ab +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0xb8e5d506 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0x25d2bbf8 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0x499d1517 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0x64a4181a +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0x97d89346 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0x29bec59f +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0x076cf415 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0xc6a5a9a1 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0xe6ddd0e4 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0x3f831762 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0x1a49e440 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0x1fd81938 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0xd4d3dddc +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0x3b5a62d5 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0xae38042c +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0xad9f8774 +drivers/media/dvb/frontends/at76c651 at76c651_attach 0x1cb0e605 +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0xea08b0c4 +drivers/media/dvb/frontends/cx22700 cx22700_attach 0x5563aa12 +drivers/media/dvb/frontends/cx22702 cx22702_attach 0xbec56d32 +drivers/media/dvb/frontends/cx24110 cx24110_attach 0xb7db7ba3 +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0x26f371d8 +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0xfd437578 +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0xe762d459 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x05f13eee +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0x32719c82 +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0xba9b5a8d +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0xc43499ed +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x02689b7f +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0x5b259391 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x7a0ed9bb +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0xbf98157e +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xd15aca20 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xfdd5e650 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x2a4f5718 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xc95be182 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x708f579e +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0xe39c77c8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0x12284643 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0xf1d4150d +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0xd5d22e56 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0xccc91f17 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xaddc7276 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x96cce305 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xcbbd68de +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x13856c44 +drivers/media/dvb/frontends/l64781 l64781_attach 0x02e5c37e +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0xe8c30295 +drivers/media/dvb/frontends/mt312 mt312_attach 0x05f92e1e +drivers/media/dvb/frontends/mt312 vp310_attach 0xc610e672 +drivers/media/dvb/frontends/mt352 mt352_attach 0xb9c12f07 +drivers/media/dvb/frontends/mt352 mt352_write 0xe56a4d81 +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0xc58583a2 +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x69667b8c +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0xaf5f8a4e +drivers/media/dvb/frontends/or51132 or51132_attach 0xcfce1b2b +drivers/media/dvb/frontends/or51211 or51211_attach 0xd0b4d109 +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0x202aa04a +drivers/media/dvb/frontends/sp8870 sp8870_attach 0x3b1c84ff +drivers/media/dvb/frontends/sp887x sp887x_attach 0x9cf4c5e9 +drivers/media/dvb/frontends/stv0297 stv0297_attach 0x2c4d9e5a +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0xce9aa3f3 +drivers/media/dvb/frontends/stv0299 stv0299_attach 0x5c267a9b +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0x342c5e52 +drivers/media/dvb/frontends/tda10021 tda10021_attach 0xd4e6f29d +drivers/media/dvb/frontends/tda1004x tda10045_attach 0x545ba012 +drivers/media/dvb/frontends/tda1004x tda10046_attach 0x12a91096 +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0x24449512 +drivers/media/dvb/frontends/tda8083 tda8083_attach 0xa2b9103b +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0x821c4f7a +drivers/media/dvb/frontends/ves1820 ves1820_attach 0x9c6aba91 +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0xe7d8aa25 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0x0c63784a +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0x9b1273e7 +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0xb79fb230 +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0x6ed87252 +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0x61383e19 +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0x90dba372 +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0xe35b190c +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0x100dae11 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0x3bcaafdb +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0x2e44be41 +drivers/media/video/btcx-risc btcx_riscmem_free 0x1a9f075c +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x450eaeb9 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0xef896544 +drivers/media/video/bttv bttv_gpio_bits 0x37be23bc +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0x5fa5c214 +drivers/media/video/bttv bttv_gpio_read 0x3a3e42e8 +drivers/media/video/bttv bttv_gpio_write 0xe0a307ec +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0xcabb6f93 +drivers/media/video/bttv bttv_sub_register 0x5c0f316f +drivers/media/video/bttv bttv_sub_unregister 0xc227060a +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0x94f54729 +drivers/media/video/cpia cpia_unregister_camera 0xfcdd30d2 +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0xae26075c +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0xbcedd71b +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0xc1e53aff +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0x3a7719fb +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0x5f08e3f6 +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0x1fc3fde4 +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0x5d66ce0c +drivers/media/video/cx88/cx8802 cx8802_fini_common 0xf5fc966a +drivers/media/video/cx88/cx8802 cx8802_init_common 0xb887dc3f +drivers/media/video/cx88/cx8802 cx8802_resume_common 0xe30fd483 +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0x826fd549 +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x4e6954bf +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0x32a3102f +drivers/media/video/cx88/cx88xx cx88_card_list 0xafe119fe +drivers/media/video/cx88/cx88xx cx88_card_setup 0xdd89645b +drivers/media/video/cx88/cx88xx cx88_core_get 0xf8063339 +drivers/media/video/cx88/cx88xx cx88_core_irq 0xdb5a5359 +drivers/media/video/cx88/cx88xx cx88_core_put 0xbaec7586 +drivers/media/video/cx88/cx88xx cx88_free_buffer 0x19153f42 +drivers/media/video/cx88/cx88xx cx88_get_stereo 0x74d190b2 +drivers/media/video/cx88/cx88xx cx88_i2c_init 0xfd05f7df +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0xbb366bf9 +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x777b6d7f +drivers/media/video/cx88/cx88xx cx88_reset 0x4077e7f3 +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0x2e232e7c +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0xd88dfc77 +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0x2a27513b +drivers/media/video/cx88/cx88xx cx88_set_scale 0x7b12acfc +drivers/media/video/cx88/cx88xx cx88_set_stereo 0xfd0ce9e0 +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0x4a9615a5 +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0x5d3ad066 +drivers/media/video/cx88/cx88xx cx88_shutdown 0x602dc820 +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0xb061dfb2 +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0x2a93e546 +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x9b140fff +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0xde8bff27 +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0x1a2dc348 +drivers/media/video/cx88/cx88xx cx88_subids 0x6b626846 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0x5d45eaad +drivers/media/video/cx88/cx88xx cx88_wakeup 0xce197503 +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0x978c17df +drivers/media/video/saa7134/saa7134 dmasound_exit 0x505c367b +drivers/media/video/saa7134/saa7134 dmasound_init 0x1e7af754 +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0xce207cb4 +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0xf03e2b6c +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0xc1636f8a +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0x26dfc39f +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0xd372b017 +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0xce647c0e +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0x388eba27 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0x2f8186e8 +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0xedab3b94 +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0xc09e3a35 +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0xf424b4b5 +drivers/media/video/tveeprom tveeprom_read 0xe0e72050 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0xf6f8f59f +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x9c7de443 +drivers/media/video/v4l2-common v4l2_prio_check 0x2f639468 +drivers/media/video/v4l2-common v4l2_prio_close 0x95284709 +drivers/media/video/v4l2-common v4l2_prio_init 0xbecd2858 +drivers/media/video/v4l2-common v4l2_prio_max 0x1dcaa0c8 +drivers/media/video/v4l2-common v4l2_prio_open 0x76ba9a9a +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0x33b3b664 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0x38365f24 +drivers/media/video/video-buf videobuf_dma_init 0xa02765f0 +drivers/media/video/video-buf videobuf_dma_init_kernel 0x03b1c225 +drivers/media/video/video-buf videobuf_dma_init_overlay 0xc1277304 +drivers/media/video/video-buf videobuf_dma_init_user 0xbb19b074 +drivers/media/video/video-buf videobuf_dma_pci_map 0xf689926e +drivers/media/video/video-buf videobuf_dma_pci_sync 0x017528f9 +drivers/media/video/video-buf videobuf_dma_pci_unmap 0x49e9c548 +drivers/media/video/video-buf videobuf_dqbuf 0x6859d0ee +drivers/media/video/video-buf videobuf_iolock 0x15c6f475 +drivers/media/video/video-buf videobuf_mmap_free 0xeb71dd10 +drivers/media/video/video-buf videobuf_mmap_mapper 0xe8811632 +drivers/media/video/video-buf videobuf_mmap_setup 0xe5675dd1 +drivers/media/video/video-buf videobuf_next_field 0x4b8884f8 +drivers/media/video/video-buf videobuf_poll_stream 0x790a991e +drivers/media/video/video-buf videobuf_qbuf 0xabef80ac +drivers/media/video/video-buf videobuf_querybuf 0x50b98cd4 +drivers/media/video/video-buf videobuf_queue_cancel 0x2a3e7d2f +drivers/media/video/video-buf videobuf_queue_init 0x2149a660 +drivers/media/video/video-buf videobuf_queue_is_busy 0xebd74bf3 +drivers/media/video/video-buf videobuf_read_one 0xebc8f733 +drivers/media/video/video-buf videobuf_read_start 0xdc001a31 +drivers/media/video/video-buf videobuf_read_stop 0x160602a9 +drivers/media/video/video-buf videobuf_read_stream 0xba7de2cc +drivers/media/video/video-buf videobuf_reqbufs 0xf2f3be48 +drivers/media/video/video-buf videobuf_status 0xe089a23c +drivers/media/video/video-buf videobuf_streamoff 0x09d5b91d +drivers/media/video/video-buf videobuf_streamon 0xc6f4235b +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0x78ed30dd +drivers/media/video/video-buf videobuf_waiton 0xa37172c5 +drivers/media/video/video-buf-dvb videobuf_dvb_register 0x443e5ff6 +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0x7b2bd949 +drivers/media/video/videocodec videocodec_attach 0xb94dc192 +drivers/media/video/videocodec videocodec_detach 0x9d7c02f6 +drivers/media/video/videocodec videocodec_register 0xb3b47abd +drivers/media/video/videocodec videocodec_unregister 0xab9eb8e6 +drivers/media/video/videodev video_devdata 0x914c023a +drivers/media/video/videodev video_device_alloc 0x30db1414 +drivers/media/video/videodev video_device_release 0x16529deb +drivers/media/video/videodev video_exclusive_open 0x323f526d +drivers/media/video/videodev video_exclusive_release 0x1c79fc87 +drivers/media/video/videodev video_register_device 0x6da71eba +drivers/media/video/videodev video_unregister_device 0xbdb29544 +drivers/media/video/videodev video_usercopy 0x5bc63527 +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0x742a7a66 +drivers/message/fusion/mptbase mpt_HardResetHandler 0x3ebbaba8 +drivers/message/fusion/mptbase mpt_add_sge 0x105d4f47 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0x1ef7abfd +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0xdbb7db03 +drivers/message/fusion/mptbase mpt_attach 0xb451c0c9 +drivers/message/fusion/mptbase mpt_config 0x6f2296ff +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0x7f724963 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0x94d56b33 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x7a51dc13 +drivers/message/fusion/mptbase mpt_findImVolumes 0x21cda44e +drivers/message/fusion/mptbase mpt_free_fw_memory 0xc0dd4ccd +drivers/message/fusion/mptbase mpt_free_msg_frame 0x34bb1188 +drivers/message/fusion/mptbase mpt_get_msg_frame 0xe6ebdeaa +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0xe1e0e0b2 +drivers/message/fusion/mptbase mpt_proc_root_dir 0xe3b3daa5 +drivers/message/fusion/mptbase mpt_put_msg_frame 0xe4a75380 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x32e5a24a +drivers/message/fusion/mptbase mpt_register 0x38dbf365 +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x72e7aa53 +drivers/message/fusion/mptbase mpt_resume 0xdfd026a8 +drivers/message/fusion/mptbase mpt_send_handshake_request 0x2438ca20 +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0x3c52921c +drivers/message/fusion/mptbase mpt_toolbox 0x8f6068e4 +drivers/message/fusion/mptbase mpt_verify_adapter 0xeb965a52 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x6a510177 +drivers/message/fusion/mptscsih mptscsih_abort 0x51a202e9 +drivers/message/fusion/mptscsih mptscsih_bios_param 0xea18851d +drivers/message/fusion/mptscsih mptscsih_bus_reset 0xbebc2e6a +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x417023a5 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0x23c07074 +drivers/message/fusion/mptscsih mptscsih_event_process 0xbb0cd65b +drivers/message/fusion/mptscsih mptscsih_host_reset 0x11bd94a1 +drivers/message/fusion/mptscsih mptscsih_info 0x6ff68eef +drivers/message/fusion/mptscsih mptscsih_io_done 0xb6a5817f +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x72804e31 +drivers/message/fusion/mptscsih mptscsih_proc_info 0xaf029cc6 +drivers/message/fusion/mptscsih mptscsih_qcmd 0xdc6f9735 +drivers/message/fusion/mptscsih mptscsih_remove 0xab2b7db8 +drivers/message/fusion/mptscsih mptscsih_resume 0x89395936 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0xd1f40ad1 +drivers/message/fusion/mptscsih mptscsih_shutdown 0xc83381b1 +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0xdb5e64a8 +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x2daf6cae +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x5acb3341 +drivers/message/fusion/mptscsih mptscsih_suspend 0xfc49d9cb +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0xe9d618e8 +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_cntxt_list_add 0xd65a228a +drivers/message/i2o/i2o_core i2o_cntxt_list_get 0x5cb11c72 +drivers/message/i2o/i2o_core i2o_cntxt_list_get_ptr 0xb8d25381 +drivers/message/i2o/i2o_core i2o_cntxt_list_remove 0x272638d7 +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0x7a3200ed +drivers/message/i2o/i2o_core i2o_device_claim_release 0xb2157159 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0x22b5cc26 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x307c18c3 +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x308658b8 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0xab6f2e43 +drivers/message/i2o/i2o_core i2o_driver_register 0xbacc5dd5 +drivers/message/i2o/i2o_core i2o_driver_unregister 0xdcb773fe +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0x74c3ab2c +drivers/message/i2o/i2o_core i2o_exec_lct_get 0x58c9eeb4 +drivers/message/i2o/i2o_core i2o_find_iop 0x5284135e +drivers/message/i2o/i2o_core i2o_iop_find_device 0xa831fb36 +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x9b735cc6 +drivers/message/i2o/i2o_core i2o_msg_nop 0x4cd8bab6 +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0xe945263f +drivers/message/i2o/i2o_core i2o_parm_field_get 0x03309ec0 +drivers/message/i2o/i2o_core i2o_parm_issue 0x2bc6ac2f +drivers/message/i2o/i2o_core i2o_parm_table_get 0x0d485155 +drivers/message/i2o/i2o_core i2o_status_get 0x5fcb6541 +drivers/mmc/mmc_core __mmc_claim_host 0xeed611cf +drivers/mmc/mmc_core mmc_add_host 0x61725aba +drivers/mmc/mmc_core mmc_alloc_host 0xd57ee588 +drivers/mmc/mmc_core mmc_cleanup_queue 0x48e9710e +drivers/mmc/mmc_core mmc_detect_change 0x35af4207 +drivers/mmc/mmc_core mmc_free_host 0xc7b436ef +drivers/mmc/mmc_core mmc_init_queue 0x972df0d4 +drivers/mmc/mmc_core mmc_queue_resume 0x302deaff +drivers/mmc/mmc_core mmc_queue_suspend 0x5bebc613 +drivers/mmc/mmc_core mmc_register_driver 0x3fc1a88b +drivers/mmc/mmc_core mmc_release_host 0xe72eefc9 +drivers/mmc/mmc_core mmc_remove_host 0xf16bb129 +drivers/mmc/mmc_core mmc_request_done 0xfafb4031 +drivers/mmc/mmc_core mmc_resume_host 0x711edc1d +drivers/mmc/mmc_core mmc_start_request 0x81997d28 +drivers/mmc/mmc_core mmc_suspend_host 0xa2aa0d5d +drivers/mmc/mmc_core mmc_unregister_driver 0xa67d94d1 +drivers/mmc/mmc_core mmc_wait_for_app_cmd 0xf6a13a3f +drivers/mmc/mmc_core mmc_wait_for_cmd 0xf17f69f9 +drivers/mmc/mmc_core mmc_wait_for_req 0x35413d5a +drivers/mtd/chips/cfi_util cfi_fixup 0xd77942b8 +drivers/mtd/chips/cfi_util cfi_read_pri 0x41c8f60d +drivers/mtd/chips/cfi_util cfi_varsize_frob 0x26c99716 +drivers/mtd/chips/chipreg do_map_probe 0x4668c2f1 +drivers/mtd/chips/chipreg map_destroy 0x93c1949f +drivers/mtd/chips/chipreg register_mtd_chip_driver 0x86bd7ebe +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0xafa75844 +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0x6220caad +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0x38ea098d +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0xcd17006e +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0xb209666b +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0x08d874da +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0xc5e87cb3 +drivers/mtd/mtdconcat mtd_concat_create 0x39fae2bd +drivers/mtd/mtdconcat mtd_concat_destroy 0xb7e94862 +drivers/mtd/mtdcore add_mtd_device 0x5a87efd5 +drivers/mtd/mtdcore default_mtd_readv 0x2608793c +drivers/mtd/mtdcore default_mtd_writev 0x10eaa749 +drivers/mtd/mtdcore del_mtd_device 0xfd9b2b6d +drivers/mtd/mtdcore get_mtd_device 0xfe72d9d5 +drivers/mtd/mtdcore mtd_table 0x38252fba +drivers/mtd/mtdcore mtd_table_mutex 0x72beff16 +drivers/mtd/mtdcore put_mtd_device 0x8cbc9bfb +drivers/mtd/mtdcore register_mtd_user 0x7e8abf9b +drivers/mtd/mtdcore unregister_mtd_user 0x82da20a7 +drivers/mtd/mtdpart add_mtd_partitions 0xea4212f0 +drivers/mtd/mtdpart del_mtd_partitions 0x1226d985 +drivers/mtd/mtdpart deregister_mtd_parser 0xd6abd10a +drivers/mtd/mtdpart mtd_erase_callback 0x9b9c9bae +drivers/mtd/mtdpart parse_mtd_partitions 0x55636c49 +drivers/mtd/mtdpart register_mtd_parser 0xd2c660cb +drivers/mtd/nand/nand nand_default_bbt 0x800c085a +drivers/mtd/nand/nand nand_release 0x967ff7d3 +drivers/mtd/nand/nand nand_scan 0x1606bb1b +drivers/mtd/nand/nand nand_scan_bbt 0xc407635b +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0x901da7ba +drivers/mtd/onenand/onenand onenand_release 0x6426d88e +drivers/mtd/onenand/onenand onenand_scan 0xddd30181 +drivers/mtd/onenand/onenand onenand_scan_bbt 0x8456d8c9 +drivers/net/8390 NS8390_init 0xe5672473 +drivers/net/8390 __alloc_ei_netdev 0xca7cb816 +drivers/net/8390 ei_close 0x4afed7aa +drivers/net/8390 ei_interrupt 0x4ed4936f +drivers/net/8390 ei_open 0x65068160 +drivers/net/8390 ei_poll 0x00e9cb78 +drivers/net/arcnet/arcnet alloc_arcdev 0xdba09e11 +drivers/net/arcnet/arcnet arc_bcast_proto 0x3f951dca +drivers/net/arcnet/arcnet arc_proto_default 0x015dcea5 +drivers/net/arcnet/arcnet arc_proto_map 0xb1db4db0 +drivers/net/arcnet/arcnet arc_proto_null 0xa388560b +drivers/net/arcnet/arcnet arc_raw_proto 0x68d1926a +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0x51fd033d +drivers/net/arcnet/arcnet arcnet_unregister_proto 0x6980c80a +drivers/net/arcnet/com20020 com20020_check 0x49157ded +drivers/net/arcnet/com20020 com20020_found 0x1709d6c7 +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0xbdc5544e +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0xffa759e5 +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0x930b5966 +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0x545060be +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0x4657cf20 +drivers/net/irda/sir-dev irda_register_dongle 0x28ced918 +drivers/net/irda/sir-dev irda_unregister_dongle 0x3a2e133b +drivers/net/irda/sir-dev sirdev_get_instance 0x572e5564 +drivers/net/irda/sir-dev sirdev_put_instance 0x60a5cbeb +drivers/net/irda/sir-dev sirdev_raw_read 0xd78be59d +drivers/net/irda/sir-dev sirdev_raw_write 0xcbcc9393 +drivers/net/irda/sir-dev sirdev_receive 0x00424b74 +drivers/net/irda/sir-dev sirdev_set_dongle 0xe38d5d76 +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0x035e164d +drivers/net/irda/sir-dev sirdev_write_complete 0x2da35ae0 +drivers/net/mii generic_mii_ioctl 0xf02b9cb0 +drivers/net/mii mii_check_gmii_support 0xe363e2c4 +drivers/net/mii mii_check_link 0x172c662e +drivers/net/mii mii_check_media 0xc90851ff +drivers/net/mii mii_ethtool_gset 0xc6210ccb +drivers/net/mii mii_ethtool_sset 0x11a235d9 +drivers/net/mii mii_link_ok 0xad68f470 +drivers/net/mii mii_nway_restart 0x7c06ed00 +drivers/net/phy/libphy genphy_config_advert 0xf77436f1 +drivers/net/phy/libphy genphy_config_aneg 0x39a32245 +drivers/net/phy/libphy genphy_read_status 0x358a225c +drivers/net/phy/libphy mdiobus_register 0x868a1cfe +drivers/net/phy/libphy mdiobus_unregister 0x12ddcb65 +drivers/net/phy/libphy phy_attach 0x66aa8ed9 +drivers/net/phy/libphy phy_connect 0xd8d1a585 +drivers/net/phy/libphy phy_detach 0x0e906899 +drivers/net/phy/libphy phy_disable_interrupts 0x45e528ff +drivers/net/phy/libphy phy_disconnect 0xc3d565ae +drivers/net/phy/libphy phy_driver_register 0x16da93a0 +drivers/net/phy/libphy phy_driver_unregister 0x162911df +drivers/net/phy/libphy phy_enable_interrupts 0x85959388 +drivers/net/phy/libphy phy_print_status 0xec5cee16 +drivers/net/phy/libphy phy_read 0x472f069f +drivers/net/phy/libphy phy_sanitize_settings 0xe41243db +drivers/net/phy/libphy phy_start 0x0b76567f +drivers/net/phy/libphy phy_start_aneg 0x2d067a6d +drivers/net/phy/libphy phy_start_interrupts 0xe354a1d8 +drivers/net/phy/libphy phy_stop 0xe3d7319c +drivers/net/phy/libphy phy_stop_interrupts 0x55109dd8 +drivers/net/phy/libphy phy_write 0x8d0e98ff +drivers/net/ppp_generic ppp_channel_index 0x96fb24d2 +drivers/net/ppp_generic ppp_input 0x9d4448a0 +drivers/net/ppp_generic ppp_input_error 0x4c960735 +drivers/net/ppp_generic ppp_output_wakeup 0x838a968e +drivers/net/ppp_generic ppp_register_channel 0xb2a98929 +drivers/net/ppp_generic ppp_register_compressor 0x682b50c7 +drivers/net/ppp_generic ppp_unit_number 0x10f4f638 +drivers/net/ppp_generic ppp_unregister_channel 0x976aeaaf +drivers/net/ppp_generic ppp_unregister_compressor 0xd440005a +drivers/net/pppox pppox_unbind_sock 0x50d49403 +drivers/net/pppox register_pppox_proto 0x838007f6 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x76135e6c +drivers/net/slhc slhc_free 0x2894cfb0 +drivers/net/slhc slhc_init 0x2e0e927f +drivers/net/slhc slhc_remember 0x0bc55868 +drivers/net/slhc slhc_toss 0xf89e3455 +drivers/net/slhc slhc_uncompress 0x3bc1319e +drivers/net/sungem_phy mii_phy_probe 0x8c4e049d +drivers/net/tokenring/tms380tr tms380tr_close 0x99c48f9e +drivers/net/tokenring/tms380tr tms380tr_interrupt 0xc5847c91 +drivers/net/tokenring/tms380tr tms380tr_open 0x89aa4e07 +drivers/net/tokenring/tms380tr tms380tr_wait 0xd2328794 +drivers/net/tokenring/tms380tr tmsdev_init 0xa5ef2003 +drivers/net/tokenring/tms380tr tmsdev_term 0xcbf419ee +drivers/net/wan/cycx_drv cycx_down 0x66a4c4e6 +drivers/net/wan/cycx_drv cycx_exec 0xfe7cd576 +drivers/net/wan/cycx_drv cycx_intr 0x38da4725 +drivers/net/wan/cycx_drv cycx_peek 0x968458a6 +drivers/net/wan/cycx_drv cycx_poke 0xb6f383de +drivers/net/wan/cycx_drv cycx_setup 0x62be23ea +drivers/net/wan/hdlc alloc_hdlcdev 0xad565cf9 +drivers/net/wan/hdlc hdlc_close 0xe45d3885 +drivers/net/wan/hdlc hdlc_ioctl 0xe7a61680 +drivers/net/wan/hdlc hdlc_open 0x3f3a5798 +drivers/net/wan/hdlc hdlc_set_carrier 0x00418a3e +drivers/net/wan/hdlc register_hdlc_device 0x6eb65bf3 +drivers/net/wan/hdlc unregister_hdlc_device 0x1afcbe5d +drivers/net/wan/syncppp sppp_attach 0xf80b67e6 +drivers/net/wan/syncppp sppp_close 0xe5074df7 +drivers/net/wan/syncppp sppp_detach 0xfb81b085 +drivers/net/wan/syncppp sppp_do_ioctl 0x29316da5 +drivers/net/wan/syncppp sppp_open 0xf4b2b07c +drivers/net/wan/syncppp sppp_reopen 0x3e3d8be7 +drivers/net/wireless/airo init_airo_card 0x4dc397f9 +drivers/net/wireless/airo reset_airo_card 0x557558b2 +drivers/net/wireless/airo stop_airo_card 0xa5e85f61 +drivers/net/wireless/atmel atmel_open 0x41d30ebc +drivers/net/wireless/atmel init_atmel_card 0xb1cd8c7f +drivers/net/wireless/atmel stop_atmel_card 0xcb98f1ed +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0x416deb4c +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0xf77055fb +drivers/net/wireless/hostap/hostap hostap_80211_rx 0x87c54aad +drivers/net/wireless/hostap/hostap hostap_add_interface 0x07f63a1e +drivers/net/wireless/hostap/hostap hostap_add_sta 0x7d4696ff +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0x6a239a54 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0x40a9a149 +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0x30072cf4 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0xc71c77a4 +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0x619fdebd +drivers/net/wireless/hostap/hostap hostap_get_porttype 0x7492b239 +drivers/net/wireless/hostap/hostap hostap_get_stats 0x8f428347 +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0x3be6502b +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0xb0993afb +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x6f3226c4 +drivers/net/wireless/hostap/hostap hostap_info_init 0x15768b3c +drivers/net/wireless/hostap/hostap hostap_info_process 0xa8aa7810 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0xab996ad6 +drivers/net/wireless/hostap/hostap hostap_init_data 0x2557beef +drivers/net/wireless/hostap/hostap hostap_init_proc 0x0bd4062a +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0x1b830368 +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x415cccbc +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0xc1232873 +drivers/net/wireless/hostap/hostap hostap_proc 0xc6322a69 +drivers/net/wireless/hostap/hostap hostap_remove_interface 0x14861caf +drivers/net/wireless/hostap/hostap hostap_remove_proc 0xe59b3b2f +drivers/net/wireless/hostap/hostap hostap_set_antsel 0xcf050703 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0xeec41f50 +drivers/net/wireless/hostap/hostap hostap_set_encryption 0xd7119287 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0xa8eaacc3 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0xe2488a27 +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0xeb8ecc5a +drivers/net/wireless/hostap/hostap hostap_set_string 0x25f906c6 +drivers/net/wireless/hostap/hostap hostap_set_word 0xd1a56a8c +drivers/net/wireless/hostap/hostap hostap_setup_dev 0x42d2ecad +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x09b8a41e +drivers/net/wireless/hostap/hostap hostap_update_rates 0x9c40f860 +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x3b0f7332 +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x0ed8f1d6 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x5e27f5f4 +drivers/net/wireless/orinoco __orinoco_down 0xcf98b6b6 +drivers/net/wireless/orinoco __orinoco_up 0xe111e29e +drivers/net/wireless/orinoco alloc_orinocodev 0x94241cad +drivers/net/wireless/orinoco free_orinocodev 0x1ab3b8e1 +drivers/net/wireless/orinoco orinoco_interrupt 0x6634d729 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0xcfb692eb +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xe730f6df +drivers/net/wireless/prism54_softmac/islsm free_islsm 0xc7ae7acd +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0xca28b574 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x29c34003 +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0x1f2d9581 +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x08ed644f +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0x46871795 +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0x6f65e804 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0x74bdaf7f +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0xe7220f2b +drivers/net/wireless/prism54_softmac/islsm register_islsm 0x5e8f30af +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0x0199689e +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0x906162d2 +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0xd6d72812 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0xa61172da +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0x5063482a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0x69eb487b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x00c84ab2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0x2103d214 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0xcaeef3b8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0x7aa715a6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0x5668557c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0x801b5bdf +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0x23afa6b4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x8882e3b9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0x674f9a83 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0xb05c5a1a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0x864090a0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0xf707fbc2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x0789de2a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0x84b8e0eb +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x0ba9fbd1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0x746ffdcb +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0xdcb06c51 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x64883a21 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x995e422c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x6bfdb07a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0xb06e07cc +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x77350e2a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x0446b557 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0x321a4de1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0x1c74a7f5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0xd72130c3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x57ec36bd +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0xfe4f3b41 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0xa7ce11e1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0x7c5da657 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x6357cc3a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0xfe29ec7a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0xf2eae8cd +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0xd047066e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0xe8f73e77 +drivers/parport/parport parport_announce_port 0xe79cb03b +drivers/parport/parport parport_claim 0x564469b4 +drivers/parport/parport parport_claim_or_block 0xe0ffd816 +drivers/parport/parport parport_find_base 0x579418d8 +drivers/parport/parport parport_find_number 0xce017927 +drivers/parport/parport parport_get_port 0xe3cf3810 +drivers/parport/parport parport_ieee1284_ecp_read_data 0x118b71e5 +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xe489f2f5 +drivers/parport/parport parport_ieee1284_ecp_write_data 0xa2966591 +drivers/parport/parport parport_ieee1284_epp_read_addr 0xf3aab9b1 +drivers/parport/parport parport_ieee1284_epp_read_data 0xa159e81b +drivers/parport/parport parport_ieee1284_epp_write_addr 0x04e69659 +drivers/parport/parport parport_ieee1284_epp_write_data 0x42f9013d +drivers/parport/parport parport_ieee1284_interrupt 0x94f45aa3 +drivers/parport/parport parport_ieee1284_read_byte 0x53380509 +drivers/parport/parport parport_ieee1284_read_nibble 0x92bcf2fe +drivers/parport/parport parport_ieee1284_write_compat 0x197aec35 +drivers/parport/parport parport_negotiate 0x551fac5c +drivers/parport/parport parport_put_port 0x5e06e8ab +drivers/parport/parport parport_read 0xebe825d7 +drivers/parport/parport parport_register_device 0x6964c12e +drivers/parport/parport parport_register_driver 0x12712ef6 +drivers/parport/parport parport_register_port 0x08bc418a +drivers/parport/parport parport_release 0x0b32068f +drivers/parport/parport parport_remove_port 0xd250988a +drivers/parport/parport parport_set_timeout 0x4271e13d +drivers/parport/parport parport_unregister_device 0x90d56bde +drivers/parport/parport parport_unregister_driver 0xfa3a8a0a +drivers/parport/parport parport_wait_event 0xe1199b5b +drivers/parport/parport parport_wait_peripheral 0x5842f5ba +drivers/parport/parport parport_write 0xfb40dd8c +drivers/parport/parport_pc parport_pc_probe_port 0xdeb045d8 +drivers/parport/parport_pc parport_pc_unregister_port 0xfa66e3c5 +drivers/pci/hotplug/acpiphp acpiphp_register_attention 0x3d2f2e8f +drivers/pci/hotplug/acpiphp acpiphp_unregister_attention 0xcdffd0bf +drivers/pci/hotplug/pci_hotplug cpci_hp_register_bus 0x19314fb6 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_controller 0xa566bf23 +drivers/pci/hotplug/pci_hotplug cpci_hp_start 0x6a8441be +drivers/pci/hotplug/pci_hotplug cpci_hp_stop 0x94ef4d05 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_bus 0x56a78b90 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_controller 0x7f82322a +drivers/pci/hotplug/pci_hotplug pci_hotplug_slots_subsys 0x2cf07e34 +drivers/pci/hotplug/pci_hotplug pci_hp_change_slot_info 0x8ff2c895 +drivers/pci/hotplug/pci_hotplug pci_hp_deregister 0x99327e19 +drivers/pci/hotplug/pci_hotplug pci_hp_register 0x7cb3c760 +drivers/pcmcia/pcmcia cs_error 0x27af07ff +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0x26dea305 +drivers/pcmcia/pcmcia pcmcia_deregister_client 0x2b7e4ee7 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0xf784fb12 +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0x88c0e88b +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0xc0a4f73c +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0xb74d12b9 +drivers/pcmcia/pcmcia pcmcia_get_status 0xcb8967b4 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0x8cdcd89f +drivers/pcmcia/pcmcia pcmcia_get_window 0xbea32d59 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0xda31c329 +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x7493d307 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0xa65793df +drivers/pcmcia/pcmcia pcmcia_register_client 0x1c063406 +drivers/pcmcia/pcmcia pcmcia_register_driver 0xdf6c72ab +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x9b797adb +drivers/pcmcia/pcmcia pcmcia_release_io 0x96e10aa3 +drivers/pcmcia/pcmcia pcmcia_release_irq 0xf36be899 +drivers/pcmcia/pcmcia pcmcia_release_window 0xd46d452d +drivers/pcmcia/pcmcia pcmcia_request_configuration 0xe17839fa +drivers/pcmcia/pcmcia pcmcia_request_io 0x6bc32de6 +drivers/pcmcia/pcmcia pcmcia_request_irq 0xdb6f1b90 +drivers/pcmcia/pcmcia pcmcia_request_window 0x7da7eb7e +drivers/pcmcia/pcmcia pcmcia_reset_card 0xd316793c +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0x9bcb68b2 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0x281bef47 +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0xdce28a0b +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x7d0999d6 +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0xc6c229d2 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0xc3567f14 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0x98090b8e +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0x5d744942 +drivers/pcmcia/pcmcia_core pccard_reset_card 0x670cb5b2 +drivers/pcmcia/pcmcia_core pccard_static_ops 0x31d7c8ae +drivers/pcmcia/pcmcia_core pccard_validate_cis 0x86d10428 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0xee658bd4 +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0x15463fb9 +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0xb469e990 +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0xdbbd46bb +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0x55d610f7 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0x9ec72164 +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x3fc4af83 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0x5c9038b7 +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0x490576f8 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xe37ae11e +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0xdf252065 +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0xf3654d28 +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x220c364b +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0x9ce98021 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0x46cd2bcb +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0x675c28a1 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0x8b08eeac +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0x291b6b1d +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x9b823a7c +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0x872e1e71 +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0xaf987fe9 +drivers/pcmcia/pcmcia_core release_cis_mem 0x3d076128 +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0xfcf99dd6 +drivers/scsi/libata __sata_phy_reset 0xb61118ba +drivers/scsi/libata ata_acpi_bus_register 0x4eb7c257 +drivers/scsi/libata ata_acpi_exec_tfs 0x458c17c6 +drivers/scsi/libata ata_acpi_get_timing 0xa90f2781 +drivers/scsi/libata ata_acpi_push_id 0x54ac595b +drivers/scsi/libata ata_acpi_push_timing 0x201d9cb7 +drivers/scsi/libata ata_altstatus 0x76449bba +drivers/scsi/libata ata_bmdma_irq_clear 0x20c49333 +drivers/scsi/libata ata_bmdma_setup 0xc63ede6e +drivers/scsi/libata ata_bmdma_start 0x81356702 +drivers/scsi/libata ata_bmdma_status 0x5b83fe63 +drivers/scsi/libata ata_bmdma_stop 0x285720fd +drivers/scsi/libata ata_bus_probe 0xfd2ae980 +drivers/scsi/libata ata_bus_reset 0xa4f93d4b +drivers/scsi/libata ata_check_status 0x03d02e5a +drivers/scsi/libata ata_dev_classify 0x0531dcb8 +drivers/scsi/libata ata_dev_config 0xf45e3ac8 +drivers/scsi/libata ata_dev_id_string 0x07d45a53 +drivers/scsi/libata ata_device_add 0xce40cdf9 +drivers/scsi/libata ata_device_resume 0x7de20021 +drivers/scsi/libata ata_device_shutdown 0x2bfbcc78 +drivers/scsi/libata ata_device_suspend 0xea8cca6f +drivers/scsi/libata ata_eng_timeout 0x321acfa0 +drivers/scsi/libata ata_exec_command 0xfcf8993d +drivers/scsi/libata ata_host_intr 0x2af94e9a +drivers/scsi/libata ata_host_set_remove 0x88cff9d3 +drivers/scsi/libata ata_host_stop 0x9d69ec8a +drivers/scsi/libata ata_hotplug_plug 0x8d52d26c +drivers/scsi/libata ata_hotplug_unplug 0xcfe3b4d0 +drivers/scsi/libata ata_interrupt 0x4cc5af75 +drivers/scsi/libata ata_noop_dev_select 0xfd53ca5a +drivers/scsi/libata ata_pci_device_resume 0x48f4124d +drivers/scsi/libata ata_pci_device_suspend 0x02897055 +drivers/scsi/libata ata_pci_host_stop 0x1e30a9b7 +drivers/scsi/libata ata_pci_init_native_mode 0x6f2ecfbb +drivers/scsi/libata ata_pci_init_one 0x11edaebc +drivers/scsi/libata ata_pci_remove_one 0xe7a1b089 +drivers/scsi/libata ata_port_disable 0x282245b9 +drivers/scsi/libata ata_port_probe 0x5f2c4023 +drivers/scsi/libata ata_port_start 0xb508f2b5 +drivers/scsi/libata ata_port_stop 0x7af6e6b9 +drivers/scsi/libata ata_qc_complete 0x2305b278 +drivers/scsi/libata ata_qc_issue_prot 0xa2478032 +drivers/scsi/libata ata_qc_prep 0x9ac1917e +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0x4a10693e +drivers/scsi/libata ata_scsi_device_shutdown 0x6a2d08fb +drivers/scsi/libata ata_scsi_device_suspend 0x44384255 +drivers/scsi/libata ata_scsi_error 0xccf06a65 +drivers/scsi/libata ata_scsi_ioctl 0xf214bf0a +drivers/scsi/libata ata_scsi_queuecmd 0x4b91f11d +drivers/scsi/libata ata_scsi_release 0x854d748b +drivers/scsi/libata ata_scsi_simulate 0xf62bf45c +drivers/scsi/libata ata_scsi_slave_config 0x632d0f3d +drivers/scsi/libata ata_sg_init 0x775a900e +drivers/scsi/libata ata_sg_init_one 0xecfb633b +drivers/scsi/libata ata_std_bios_param 0x1566889f +drivers/scsi/libata ata_std_dev_select 0x2ca52aa6 +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0x0067df75 +drivers/scsi/libata ata_tf_load 0x5f36a8a5 +drivers/scsi/libata ata_tf_read 0x58a8a824 +drivers/scsi/libata ata_tf_to_fis 0x28177a3f +drivers/scsi/libata ata_timing_compute 0xf6f94640 +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata do_drive_get_GTF 0x7325a919 +drivers/scsi/libata do_drive_set_taskfiles 0x9ae24eee +drivers/scsi/libata pci_test_config_bits 0xcd1b780c +drivers/scsi/libata sata_phy_reset 0x7c451cb9 +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x86f60f09 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0x0157279d +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x1262b339 +drivers/scsi/qlogicfas408 qlogicfas408_abort 0xc06bdfd9 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0x3daa85da +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0xdf4c3caf +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0xd80758f8 +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x6af07c89 +drivers/scsi/qlogicfas408 qlogicfas408_info 0xa98431b5 +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0x9a9c5f5f +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0xab2cd66b +drivers/scsi/raid_class raid_class_release 0x56119043 +drivers/scsi/raid_class raid_component_add 0xdaf22543 +drivers/scsi/sas/sas_class sas_register_ha 0x09af34e7 +drivers/scsi/sas/sas_class sas_unregister_ha 0x400f2f99 +drivers/scsi/scsi_mod __scsi_add_device 0x3f964743 +drivers/scsi/scsi_mod __scsi_device_lookup 0xa5b75097 +drivers/scsi/scsi_mod __scsi_device_lookup_by_target 0x5e42c8d5 +drivers/scsi/scsi_mod __scsi_iterate_devices 0x7af028e1 +drivers/scsi/scsi_mod __scsi_print_command 0xfef96e23 +drivers/scsi/scsi_mod __scsi_print_sense 0x69d38ed9 +drivers/scsi/scsi_mod int_to_scsilun 0xea10212a +drivers/scsi/scsi_mod scsi_add_device 0x2327d20e +drivers/scsi/scsi_mod scsi_add_host 0x04e2b35d +drivers/scsi/scsi_mod scsi_adjust_queue_depth 0x97596cbe +drivers/scsi/scsi_mod scsi_allocate_request 0x5b5a1820 +drivers/scsi/scsi_mod scsi_bios_ptable 0x10258201 +drivers/scsi/scsi_mod scsi_block_requests 0x413687a0 +drivers/scsi/scsi_mod scsi_block_when_processing_errors 0xde3d3690 +drivers/scsi/scsi_mod scsi_bus_type 0xbfe5e0d7 +drivers/scsi/scsi_mod scsi_calculate_bounce_limit 0x34164ed5 +drivers/scsi/scsi_mod scsi_command_normalize_sense 0x1455f244 +drivers/scsi/scsi_mod scsi_device_cancel 0x2c2b3531 +drivers/scsi/scsi_mod scsi_device_get 0xf7a9cac8 +drivers/scsi/scsi_mod scsi_device_lookup 0xaaace3b0 +drivers/scsi/scsi_mod scsi_device_lookup_by_target 0x15f4fa80 +drivers/scsi/scsi_mod scsi_device_put 0x33c34ae0 +drivers/scsi/scsi_mod scsi_device_quiesce 0x38f1b174 +drivers/scsi/scsi_mod scsi_device_resume 0xacff1262 +drivers/scsi/scsi_mod scsi_device_set_state 0x6efb48ff +drivers/scsi/scsi_mod scsi_device_types 0x6df713c9 +drivers/scsi/scsi_mod scsi_do_req 0x70f6d179 +drivers/scsi/scsi_mod scsi_execute 0xd36ec0f3 +drivers/scsi/scsi_mod scsi_execute_req 0xc1e8b860 +drivers/scsi/scsi_mod scsi_extd_sense_format 0x11267875 +drivers/scsi/scsi_mod scsi_finish_command 0x66df5a5b +drivers/scsi/scsi_mod scsi_flush_work 0x47109bf7 +drivers/scsi/scsi_mod scsi_free_host_dev 0x1dcb7e8b +drivers/scsi/scsi_mod scsi_get_command 0x9a035a59 +drivers/scsi/scsi_mod scsi_get_host_dev 0x429b4135 +drivers/scsi/scsi_mod scsi_get_sense_info_fld 0x796fc5ce +drivers/scsi/scsi_mod scsi_host_alloc 0x63cc1f45 +drivers/scsi/scsi_mod scsi_host_get 0x3f67775d +drivers/scsi/scsi_mod scsi_host_lookup 0x84a03f20 +drivers/scsi/scsi_mod scsi_host_put 0x6c777ba8 +drivers/scsi/scsi_mod scsi_host_set_state 0xd742874d +drivers/scsi/scsi_mod scsi_internal_device_block 0x382dce4d +drivers/scsi/scsi_mod scsi_internal_device_unblock 0xde10ce8e +drivers/scsi/scsi_mod scsi_io_completion 0xdb1bf3bd +drivers/scsi/scsi_mod scsi_ioctl 0x3225201c +drivers/scsi/scsi_mod scsi_ioctl_send_command 0x5fb29cbc +drivers/scsi/scsi_mod scsi_is_host_device 0xa9867b64 +drivers/scsi/scsi_mod scsi_is_sdev_device 0x299e897e +drivers/scsi/scsi_mod scsi_is_target_device 0x574a4283 +drivers/scsi/scsi_mod scsi_logging_level 0xaf3dd7dc +drivers/scsi/scsi_mod scsi_mode_sense 0xa8f7ef94 +drivers/scsi/scsi_mod scsi_nonblockable_ioctl 0x720b7f81 +drivers/scsi/scsi_mod scsi_normalize_sense 0x0c65e73c +drivers/scsi/scsi_mod scsi_partsize 0x4afe9a77 +drivers/scsi/scsi_mod scsi_print_command 0xcfbfd08b +drivers/scsi/scsi_mod scsi_print_msg 0x67f88938 +drivers/scsi/scsi_mod scsi_print_req_sense 0x40a0e0c8 +drivers/scsi/scsi_mod scsi_print_sense 0xe5617ce3 +drivers/scsi/scsi_mod scsi_print_sense_hdr 0xca5dbc50 +drivers/scsi/scsi_mod scsi_print_status 0x9cfd56c5 +drivers/scsi/scsi_mod scsi_put_command 0xc52739e3 +drivers/scsi/scsi_mod scsi_queue_work 0x263eb9da +drivers/scsi/scsi_mod scsi_register 0x5a9fea5d +drivers/scsi/scsi_mod scsi_register_driver 0x16ef977e +drivers/scsi/scsi_mod scsi_register_interface 0x1b9ca603 +drivers/scsi/scsi_mod scsi_release_request 0x5a320ef5 +drivers/scsi/scsi_mod scsi_remove_device 0x693da3e3 +drivers/scsi/scsi_mod scsi_remove_host 0xd6162cf6 +drivers/scsi/scsi_mod scsi_remove_target 0xb24396e2 +drivers/scsi/scsi_mod scsi_report_bus_reset 0xce3df7eb +drivers/scsi/scsi_mod scsi_report_device_reset 0x3e600e85 +drivers/scsi/scsi_mod scsi_request_normalize_sense 0x96b78e29 +drivers/scsi/scsi_mod scsi_rescan_device 0xcd0efc1e +drivers/scsi/scsi_mod scsi_reset_provider 0x3c8c6778 +drivers/scsi/scsi_mod scsi_scan_host 0x21eb3c2e +drivers/scsi/scsi_mod scsi_scan_target 0xd573f699 +drivers/scsi/scsi_mod scsi_sense_desc_find 0x2b0ba2b0 +drivers/scsi/scsi_mod scsi_sense_key_string 0x96cd2b04 +drivers/scsi/scsi_mod scsi_set_medium_removal 0xcff3dd94 +drivers/scsi/scsi_mod scsi_setup_blk_pc_cmnd 0xdadf89bb +drivers/scsi/scsi_mod scsi_target_block 0x2edaed62 +drivers/scsi/scsi_mod scsi_target_quiesce 0xc6d69abe +drivers/scsi/scsi_mod scsi_target_resume 0x8eed2903 +drivers/scsi/scsi_mod scsi_target_unblock 0x758e8275 +drivers/scsi/scsi_mod scsi_test_unit_ready 0x345994cb +drivers/scsi/scsi_mod scsi_track_queue_full 0xcde13c14 +drivers/scsi/scsi_mod scsi_unblock_requests 0x6753c6f5 +drivers/scsi/scsi_mod scsi_unregister 0x4584d2e6 +drivers/scsi/scsi_mod scsicam_bios_param 0x7e1c8ca5 +drivers/scsi/scsi_mod starget_for_each_device 0x51328fd8 +drivers/scsi/scsi_transport_fc fc_attach_transport 0x95a61936 +drivers/scsi/scsi_transport_fc fc_release_transport 0xa1b2d1e8 +drivers/scsi/scsi_transport_fc fc_remote_port_add 0xf6ece767 +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0x1e897f19 +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x0815a62d +drivers/scsi/scsi_transport_fc fc_remove_host 0xc31b6457 +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0xf51062fb +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x0e986460 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x5436aefb +drivers/scsi/scsi_transport_sas sas_attach_transport 0x8bff7978 +drivers/scsi/scsi_transport_sas sas_phy_add 0x225e0a46 +drivers/scsi/scsi_transport_sas sas_phy_alloc 0x0d9f3fb1 +drivers/scsi/scsi_transport_sas sas_phy_delete 0xdae7fdbf +drivers/scsi/scsi_transport_sas sas_phy_free 0xb327f24a +drivers/scsi/scsi_transport_sas sas_release_transport 0xde303047 +drivers/scsi/scsi_transport_sas sas_remove_host 0xfe8f86f2 +drivers/scsi/scsi_transport_sas sas_rphy_add 0xb35730cc +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0xa6f1f4cd +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x700f9a39 +drivers/scsi/scsi_transport_sas sas_rphy_free 0x07b1009f +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0x0c2ebbcf +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0xb9dc190a +drivers/scsi/scsi_transport_spi spi_attach_transport 0x5d1576ae +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0xa6e17d65 +drivers/scsi/scsi_transport_spi spi_dv_device 0x36f72a16 +drivers/scsi/scsi_transport_spi spi_release_transport 0x3ea6579b +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0xf7ee343a +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x66d24577 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0xf22d8c54 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0xac9988c5 +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0x86f6aeee +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0x5578abaa +drivers/telephony/ixj ixj_pcmcia_probe 0x6d787c3d +drivers/telephony/phonedev phone_register_device 0xc4014503 +drivers/telephony/phonedev phone_unregister_device 0xa6a2e53c +drivers/usb/atm/usbatm usbatm_usb_disconnect 0xc7f68646 +drivers/usb/atm/usbatm usbatm_usb_probe 0xdb47a578 +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x7ff819c8 +drivers/usb/core/usbcore usb_alloc_dev 0xe40bc651 +drivers/usb/core/usbcore usb_alloc_urb 0x1c96dac9 +drivers/usb/core/usbcore usb_altnum_to_altsetting 0x9faf6800 +drivers/usb/core/usbcore usb_buffer_alloc 0xef339ba7 +drivers/usb/core/usbcore usb_buffer_free 0x6aae7997 +drivers/usb/core/usbcore usb_buffer_map_sg 0x46c37796 +drivers/usb/core/usbcore usb_buffer_unmap_sg 0x4d31886e +drivers/usb/core/usbcore usb_bulk_msg 0xd25c56ed +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0xfa3f0918 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0x75b55984 +drivers/usb/core/usbcore usb_claim_bandwidth 0x0133ab13 +drivers/usb/core/usbcore usb_clear_halt 0x79a0cf90 +drivers/usb/core/usbcore usb_control_msg 0x537ccf76 +drivers/usb/core/usbcore usb_create_hcd 0x76bec288 +drivers/usb/core/usbcore usb_deregister 0x4df8496b +drivers/usb/core/usbcore usb_deregister_dev 0xcc4adc84 +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0xd7d623b3 +drivers/usb/core/usbcore usb_driver_claim_interface 0x1ff79b47 +drivers/usb/core/usbcore usb_driver_release_interface 0xedcfd048 +drivers/usb/core/usbcore usb_find_device 0x257ba975 +drivers/usb/core/usbcore usb_find_interface 0x6d954adc +drivers/usb/core/usbcore usb_free_urb 0xbbc08c04 +drivers/usb/core/usbcore usb_get_current_frame_number 0x6dfa87e0 +drivers/usb/core/usbcore usb_get_descriptor 0x6993116f +drivers/usb/core/usbcore usb_get_dev 0xd7786fef +drivers/usb/core/usbcore usb_get_intf 0x98e46bb7 +drivers/usb/core/usbcore usb_get_status 0x65a7bb91 +drivers/usb/core/usbcore usb_get_string 0x8f044b9f +drivers/usb/core/usbcore usb_get_urb 0xde79bb8d +drivers/usb/core/usbcore usb_hc_died 0x7bbfbc35 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0xed9c1686 +drivers/usb/core/usbcore usb_hcd_pci_probe 0x03d3d590 +drivers/usb/core/usbcore usb_hcd_pci_remove 0xc3a14616 +drivers/usb/core/usbcore usb_hcd_pci_resume 0x7b84bc8f +drivers/usb/core/usbcore usb_hcd_pci_suspend 0x75e8c83f +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0xe78d2404 +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0xb3f83596 +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0x1b75d3cf +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0x44ad51f7 +drivers/usb/core/usbcore usb_ifnum_to_if 0x33e4ce09 +drivers/usb/core/usbcore usb_init_urb 0xaae5e3f7 +drivers/usb/core/usbcore usb_kill_urb 0x08fadaa7 +drivers/usb/core/usbcore usb_lock_device 0xb9e9e4a1 +drivers/usb/core/usbcore usb_lock_device_for_reset 0x70766d46 +drivers/usb/core/usbcore usb_match_id 0x1d67b315 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0xb6b6f65b +drivers/usb/core/usbcore usb_put_dev 0xb18bf7d6 +drivers/usb/core/usbcore usb_put_hcd 0xa83777d2 +drivers/usb/core/usbcore usb_put_intf 0x79be308b +drivers/usb/core/usbcore usb_register 0xaeab6b3f +drivers/usb/core/usbcore usb_register_dev 0x651786ec +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x438fa8d7 +drivers/usb/core/usbcore usb_remove_hcd 0x1fdc0ee9 +drivers/usb/core/usbcore usb_reset_configuration 0x474d795c +drivers/usb/core/usbcore usb_reset_device 0x56329f00 +drivers/usb/core/usbcore usb_set_device_state 0x872f3067 +drivers/usb/core/usbcore usb_set_interface 0x2ee9bf9d +drivers/usb/core/usbcore usb_sg_cancel 0xb8597b2e +drivers/usb/core/usbcore usb_sg_init 0x41e14baf +drivers/usb/core/usbcore usb_sg_wait 0x0a8248e6 +drivers/usb/core/usbcore usb_string 0x3fd6b549 +drivers/usb/core/usbcore usb_submit_urb 0xf8845852 +drivers/usb/core/usbcore usb_trylock_device 0xff8286a2 +drivers/usb/core/usbcore usb_unlink_urb 0xa1d2bb3e +drivers/usb/core/usbcore usb_unlock_device 0x03cdaed4 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/gadget/net2280 net2280_set_fifo_mode 0x6b10a6f7 +drivers/usb/gadget/net2280 usb_gadget_register_driver 0x0906c25e +drivers/usb/gadget/net2280 usb_gadget_unregister_driver 0x517878ee +drivers/usb/host/sl811-hcd sl811h_driver 0x511e7e0c +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0x47409355 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x74b87e96 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0xcd47dbd0 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0x5fa21c34 +drivers/usb/media/usbvideo RingQueue_Dequeue 0xc62c3f97 +drivers/usb/media/usbvideo RingQueue_Enqueue 0x079325e3 +drivers/usb/media/usbvideo RingQueue_Flush 0x99ede02c +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0xa104e316 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0x79697977 +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x1554904d +drivers/usb/media/usbvideo usbvideo_Deregister 0xea823c54 +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0xbdaf0e8b +drivers/usb/media/usbvideo usbvideo_TestPattern 0x11d565e8 +drivers/usb/media/usbvideo usbvideo_register 0xf194e911 +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0x85a6e452 +drivers/usb/media/w9968cf w9968cf_vppmod_register 0x1d2a7009 +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0xcefa0e3b +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0xb4889133 +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0x05367620 +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0x17cdb8c6 +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0x8c264c08 +drivers/usb/net/usbnet usbnet_defer_kevent 0x349fc0a2 +drivers/usb/net/usbnet usbnet_disconnect 0xbee63f53 +drivers/usb/net/usbnet usbnet_get_drvinfo 0xfc95e05e +drivers/usb/net/usbnet usbnet_get_endpoints 0x68c236ea +drivers/usb/net/usbnet usbnet_get_msglevel 0xdf6e3869 +drivers/usb/net/usbnet usbnet_probe 0x3c786e7f +drivers/usb/net/usbnet usbnet_resume 0x3dae9fc4 +drivers/usb/net/usbnet usbnet_set_msglevel 0xc9b7ff83 +drivers/usb/net/usbnet usbnet_skb_return 0x1fd8266a +drivers/usb/net/usbnet usbnet_suspend 0xe60aa8b1 +drivers/usb/serial/usbserial ezusb_set_reset 0x70e54512 +drivers/usb/serial/usbserial ezusb_writememory 0x9fecba51 +drivers/usb/serial/usbserial usb_serial_deregister 0x0645a24b +drivers/usb/serial/usbserial usb_serial_disconnect 0xa74d857a +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x2b4e86e1 +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0x190f47aa +drivers/usb/serial/usbserial usb_serial_register 0xdfaac859 +drivers/video/backlight/backlight backlight_device_register 0x0e30470d +drivers/video/backlight/backlight backlight_device_unregister 0x3b17338b +drivers/video/backlight/lcd lcd_device_register 0x4d3f2d53 +drivers/video/backlight/lcd lcd_device_unregister 0xf91b583e +drivers/video/cfbcopyarea cfb_copyarea 0x1b23d62b +drivers/video/cfbfillrect cfb_fillrect 0xac887799 +drivers/video/cfbimgblt cfb_imageblit 0x4958446c +drivers/video/console/bitblit fbcon_set_bitops 0x144897f8 +drivers/video/console/font find_font 0xf7584a9c +drivers/video/console/font get_default_font 0x093e3659 +drivers/video/console/softcursor soft_cursor 0x059eeec2 +drivers/video/console/tileblit fbcon_set_tileops 0xa1afb2ee +drivers/video/cyber2000fb cyber2000fb_attach 0xa2551aac +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x72141251 +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0x3018de34 +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0xfee04c8e +drivers/video/macmodes mac_find_mode 0xb7a18c0f +drivers/video/macmodes mac_map_monitor_sense 0xe2304303 +drivers/video/macmodes mac_var_to_vmode 0x00907cd5 +drivers/video/macmodes mac_vmode_to_var 0x08ed0b62 +drivers/video/matrox/g450_pll g450_mnp2f 0x8d40a850 +drivers/video/matrox/g450_pll matroxfb_g450_setclk 0xe67ad5b9 +drivers/video/matrox/g450_pll matroxfb_g450_setpll_cond 0x443f4bf2 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_init 0xaaa3757a +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_restore 0xaf861844 +drivers/video/matrox/matroxfb_DAC1064 matrox_G100 0x21e01968 +drivers/video/matrox/matroxfb_DAC1064 matrox_mystique 0x25056516 +drivers/video/matrox/matroxfb_Ti3026 matrox_millennium 0x729c2b44 +drivers/video/matrox/matroxfb_accel matrox_cfbX_init 0xa73da4b5 +drivers/video/matrox/matroxfb_base matroxfb_enable_irq 0x76282af8 +drivers/video/matrox/matroxfb_base matroxfb_register_driver 0x036e75cc +drivers/video/matrox/matroxfb_base matroxfb_unregister_driver 0xb940d06e +drivers/video/matrox/matroxfb_base matroxfb_wait_for_sync 0x5f8de5bf +drivers/video/matrox/matroxfb_g450 matroxfb_g450_connect 0x5c429202 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_shutdown 0x8b54fefa +drivers/video/matrox/matroxfb_misc matroxfb_DAC_in 0x36c69990 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_out 0xc4ff975e +drivers/video/matrox/matroxfb_misc matroxfb_PLL_calcclock 0x25cf8049 +drivers/video/matrox/matroxfb_misc matroxfb_read_pins 0x8302cbc7 +drivers/video/matrox/matroxfb_misc matroxfb_var2my 0xabd8e427 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWinit 0xf7d21c34 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWrestore 0x697a2f9b +drivers/video/sis/sisfb sis_free 0x454a3cf0 +drivers/video/sis/sisfb sis_free_new 0x1e6f55e6 +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0x8b6453a7 +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0x6aba6dcc +drivers/w1/ds9490r ds_put_device 0x617b6fab +drivers/w1/ds9490r ds_read_bit 0x301dfaa3 +drivers/w1/ds9490r ds_read_block 0x3ccf11ae +drivers/w1/ds9490r ds_read_byte 0x719b2ce7 +drivers/w1/ds9490r ds_reset 0x719459c7 +drivers/w1/ds9490r ds_touch_bit 0x9c714ce3 +drivers/w1/ds9490r ds_write_bit 0xd63010c0 +drivers/w1/ds9490r ds_write_block 0x9f44db11 +drivers/w1/ds9490r ds_write_byte 0x26a0c08f +drivers/w1/wire w1_add_master_device 0xd703c624 +drivers/w1/wire w1_calc_crc8 0x7c2f2afb +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xb0c86d52 +drivers/w1/wire w1_family_put 0x45181a35 +drivers/w1/wire w1_family_registered 0x345f469c +drivers/w1/wire w1_read_8 0xf748112c +drivers/w1/wire w1_read_block 0xd6da6ecd +drivers/w1/wire w1_register_family 0xadeb1de9 +drivers/w1/wire w1_remove_master_device 0x31a7a05c +drivers/w1/wire w1_reset_bus 0x020c6d50 +drivers/w1/wire w1_reset_select_slave 0xda482642 +drivers/w1/wire w1_search_devices 0x1d4e638b +drivers/w1/wire w1_touch_bit 0x8a40d0a9 +drivers/w1/wire w1_unregister_family 0x2616cdb9 +drivers/w1/wire w1_write_8 0x939ce909 +drivers/w1/wire w1_write_block 0xf2a06b75 +fs/configfs/configfs config_group_init 0xb47982bf +fs/configfs/configfs config_group_init_type_name 0x7731af76 +fs/configfs/configfs config_item_get 0x042b096e +fs/configfs/configfs config_item_init 0x694c52e4 +fs/configfs/configfs config_item_init_type_name 0xa90f2002 +fs/configfs/configfs config_item_put 0xa7456a70 +fs/configfs/configfs config_item_set_name 0x6b2caa5b +fs/configfs/configfs configfs_register_subsystem 0x4fc3011c +fs/configfs/configfs configfs_unregister_subsystem 0x72bae839 +fs/exportfs/exportfs export_op_default 0xe2080618 +fs/exportfs/exportfs find_exported_dentry 0xa0953f5b +fs/fat/fat fat_add_entries 0xc54a1500 +fs/fat/fat fat_alloc_new_dir 0xbc010610 +fs/fat/fat fat_attach 0x058b4ab6 +fs/fat/fat fat_build_inode 0x60faa916 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0xb7e738e2 +fs/fat/fat fat_dir_empty 0xdeb1c354 +fs/fat/fat fat_fill_super 0xe1ad342a +fs/fat/fat fat_free_clusters 0x3f7fd735 +fs/fat/fat fat_fs_panic 0x746add2e +fs/fat/fat fat_get_dotdot_entry 0x8bdb9844 +fs/fat/fat fat_notify_change 0x59489118 +fs/fat/fat fat_remove_entries 0x3fb54cdf +fs/fat/fat fat_scan 0x7c43e713 +fs/fat/fat fat_search_long 0x0ce66e4b +fs/fat/fat fat_sync_bhs 0xae954fb2 +fs/fat/fat fat_sync_inode 0x974bbf2e +fs/jbd/jbd journal_abort 0x93a03fa2 +fs/jbd/jbd journal_ack_err 0x4433a34f +fs/jbd/jbd journal_blocks_per_page 0x7e4f277d +fs/jbd/jbd journal_check_available_features 0x12ff835e +fs/jbd/jbd journal_check_used_features 0x407041ad +fs/jbd/jbd journal_clear_err 0x1cef67d4 +fs/jbd/jbd journal_create 0xd828b491 +fs/jbd/jbd journal_destroy 0x95189282 +fs/jbd/jbd journal_dirty_data 0x4f0712ea +fs/jbd/jbd journal_dirty_metadata 0x53b9e353 +fs/jbd/jbd journal_errno 0x8a1b3c4b +fs/jbd/jbd journal_extend 0x1c84eeae +fs/jbd/jbd journal_flush 0x0bfd272d +fs/jbd/jbd journal_force_commit 0x42642e3b +fs/jbd/jbd journal_force_commit_nested 0x8ab6275f +fs/jbd/jbd journal_forget 0xb2556921 +fs/jbd/jbd journal_get_create_access 0xc7da39ea +fs/jbd/jbd journal_get_undo_access 0xa5104ae4 +fs/jbd/jbd journal_get_write_access 0x1082ff9e +fs/jbd/jbd journal_init_dev 0x5a674391 +fs/jbd/jbd journal_init_inode 0xe9e527d7 +fs/jbd/jbd journal_invalidatepage 0xef1ea5df +fs/jbd/jbd journal_load 0x93ed71f2 +fs/jbd/jbd journal_lock_updates 0x7ffe06d8 +fs/jbd/jbd journal_release_buffer 0x454f47f9 +fs/jbd/jbd journal_restart 0xcea26b40 +fs/jbd/jbd journal_revoke 0xe4cf71b6 +fs/jbd/jbd journal_set_features 0x7578c712 +fs/jbd/jbd journal_start 0x06a5904c +fs/jbd/jbd journal_start_commit 0x73503d69 +fs/jbd/jbd journal_stop 0xb819c7c5 +fs/jbd/jbd journal_try_to_free_buffers 0xe6d48914 +fs/jbd/jbd journal_unlock_updates 0xbbb22733 +fs/jbd/jbd journal_update_format 0x8da239df +fs/jbd/jbd journal_update_superblock 0x66d23e31 +fs/jbd/jbd journal_wipe 0xba9bea2a +fs/jbd/jbd log_wait_commit 0xf2e3cf60 +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0x9b3a0b88 +fs/lockd/lockd nlmsvc_ops 0x69214415 +fs/nfsd/nfsd nfs4_acl_add_ace 0x8b0e8bec +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/relayfs/relayfs relay_buf_full 0x55ac9420 +fs/relayfs/relayfs relay_close 0x6fb833e3 +fs/relayfs/relayfs relay_flush 0xa988f007 +fs/relayfs/relayfs relay_open 0xa9078181 +fs/relayfs/relayfs relay_reset 0xe64d66c5 +fs/relayfs/relayfs relay_subbufs_consumed 0x43388890 +fs/relayfs/relayfs relay_switch_subbuf 0x33560de7 +fs/relayfs/relayfs relayfs_create_dir 0x4c53653d +fs/relayfs/relayfs relayfs_file_operations 0x051473c2 +fs/relayfs/relayfs relayfs_remove_dir 0x70ead029 +lib/crc-ccitt crc_ccitt 0x651c2313 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x9aabc564 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x41bcd8b3 +lib/libcrc32c crc32c_le 0x13c0c38e +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0x8acbc444 +net/appletalk/appletalk alloc_ltalkdev 0xe8d98bad +net/appletalk/appletalk atalk_find_dev_addr 0xfabd375e +net/appletalk/appletalk atrtr_get_dev 0xeed8dd4e +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0xdfee6268 +net/ax25/ax25 ax25_findbyuid 0x5fc6280f +net/ax25/ax25 ax25_hard_header 0x13d54d7b +net/ax25/ax25 ax25_linkfail_register 0xc1679ccf +net/ax25/ax25 ax25_linkfail_release 0x6bd6c5d8 +net/ax25/ax25 ax25_listen_register 0x182601e6 +net/ax25/ax25 ax25_listen_release 0x39bfe3c5 +net/ax25/ax25 ax25_protocol_register 0xe8c63bd7 +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0x37f50d74 +net/ax25/ax25 ax25_send_frame 0x712a1c2a +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0x44b28e6a +net/bluetooth/bluetooth bt_accept_enqueue 0x7aafbb12 +net/bluetooth/bluetooth bt_accept_unlink 0x0e2ceb51 +net/bluetooth/bluetooth bt_class 0x9c0affdf +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0xd2a5e78d +net/bluetooth/bluetooth bt_sock_poll 0xc050c339 +net/bluetooth/bluetooth bt_sock_recvmsg 0x3c57d0eb +net/bluetooth/bluetooth bt_sock_register 0x7268f8a3 +net/bluetooth/bluetooth bt_sock_unlink 0xf6627b54 +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0x2f6861ee +net/bluetooth/bluetooth hci_alloc_dev 0xa34ae08c +net/bluetooth/bluetooth hci_conn_auth 0xea01082d +net/bluetooth/bluetooth hci_conn_change_link_key 0xb3457506 +net/bluetooth/bluetooth hci_conn_encrypt 0xe3230094 +net/bluetooth/bluetooth hci_conn_switch_role 0xa1578db8 +net/bluetooth/bluetooth hci_connect 0x185f1e68 +net/bluetooth/bluetooth hci_free_dev 0x5dbc7b35 +net/bluetooth/bluetooth hci_get_route 0x4d166536 +net/bluetooth/bluetooth hci_register_cb 0x4f1b39f3 +net/bluetooth/bluetooth hci_register_dev 0x0d00e7fb +net/bluetooth/bluetooth hci_register_proto 0xbe94a273 +net/bluetooth/bluetooth hci_resume_dev 0xc9c9be9c +net/bluetooth/bluetooth hci_send_acl 0x34276574 +net/bluetooth/bluetooth hci_send_sco 0xc70089ba +net/bluetooth/bluetooth hci_suspend_dev 0x50477da3 +net/bluetooth/bluetooth hci_unregister_cb 0x864607a3 +net/bluetooth/bluetooth hci_unregister_dev 0x81dab705 +net/bluetooth/bluetooth hci_unregister_proto 0xe0b7ae2d +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0x13662f1b +net/bridge/netfilter/ebtables ebt_do_table 0x9cdd2de0 +net/bridge/netfilter/ebtables ebt_register_match 0x795abbb5 +net/bridge/netfilter/ebtables ebt_register_table 0x398344c3 +net/bridge/netfilter/ebtables ebt_register_target 0x48bb20e6 +net/bridge/netfilter/ebtables ebt_register_watcher 0xf9184871 +net/bridge/netfilter/ebtables ebt_unregister_match 0x13c09ac1 +net/bridge/netfilter/ebtables ebt_unregister_table 0xe9e5bdc5 +net/bridge/netfilter/ebtables ebt_unregister_target 0xe1032a09 +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x8c364c0d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x3a18e70d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0x71ecc67f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x7824d7b3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xded46fa7 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0xa8edb94d +net/dccp/dccp ccid_init 0x9e2e6183 +net/dccp/dccp ccid_register 0x92c4c17e +net/dccp/dccp ccid_unregister 0x2c1c9e4d +net/dccp/dccp dccp_hashinfo 0xff3742f0 +net/dccp/dccp dccp_insert_option 0xc948d434 +net/dccp/dccp dccp_insert_option_elapsed_time 0x9d3f3158 +net/dccp/dccp dccp_insert_option_timestamp 0xd19afb5b +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0x4571ee5c +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0xf76f35ec +net/ieee80211/ieee80211 alloc_ieee80211 0x3a15d279 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0x58abf72d +net/ieee80211/ieee80211 ieee80211_channel_to_index 0x5455ffbe +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0xeb73df8a +net/ieee80211/ieee80211 ieee80211_get_channel 0x050c912c +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0x47d3bcca +net/ieee80211/ieee80211 ieee80211_get_geo 0x5a50aae4 +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0x65182345 +net/ieee80211/ieee80211 ieee80211_rx 0x4c016ed3 +net/ieee80211/ieee80211 ieee80211_rx_mgt 0x64d6a50d +net/ieee80211/ieee80211 ieee80211_set_geo 0x810f5961 +net/ieee80211/ieee80211 ieee80211_tx_frame 0xecaf7ec7 +net/ieee80211/ieee80211 ieee80211_txb_free 0x3839fe60 +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0x579abd6a +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0x70ea6795 +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x8873e826 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0xcdb0d801 +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0x736e49ee +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x8de820b4 +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0xe0ca7ce2 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0xc20d2417 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x82a572a6 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0x2ad10f94 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0xc53e20f5 +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0x2196a31c +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0xc0ebb82e +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0x00696555 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0xa4c325b2 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x0b06502e +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0x00756a75 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0xf4ceba8a +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0x225dc36f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0x492af98a +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0xfa742136 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0x42cf6303 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0x560550a6 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0xce54e814 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0xa25cd9f7 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0xfce94b2c +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x2eef1ba8 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0xbcf4e36b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x24a55bd9 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x86a82d73 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x6eb8395b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0x76022211 +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x6c2c6a52 +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x3fb63602 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0x5544447a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0xe8a19db6 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0x6c8e7b32 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0x0a46f051 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0x180ae624 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0x173b4433 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0xefe7ecb4 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0xb3c7e85d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0x25b6c3c1 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x782b7835 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0xae5e720b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0xa9cdf81b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0xe2df92bb +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0x73141dd0 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0xa90e9f30 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0xa7b542af +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0x0c6964f5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0x69f4ed76 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x82174418 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x306c83ac +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0x4f7a2b1a +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0x4d1b5d55 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x749a9de6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x679190f6 +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0x5f71ea31 +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0x35e39f89 +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0xbd68bbc6 +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0xbef7ac6c +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0x20ed911f +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0x32fb4aea +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0xcf47e189 +net/ipv4/ipvs/ip_vs register_ip_vs_app 0xb42ee952 +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0x700aea5c +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0x3784cb6f +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0xb52fefc2 +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0xc19cc5e3 +net/ipv4/netfilter/arp_tables arpt_do_table 0x8a2c7cc7 +net/ipv4/netfilter/arp_tables arpt_register_table 0xe45dd1eb +net/ipv4/netfilter/arp_tables arpt_register_target 0x9766af09 +net/ipv4/netfilter/arp_tables arpt_unregister_table 0x21d0c9f7 +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x07f882ed +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x16096c8d +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x9b751d06 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0xb29decf5 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x6c3044d0 +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0xa589f566 +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0xd7a153db +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x4547e327 +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0xbc8a741e +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0x41bba606 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0xa2c242fa +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0xb802fd23 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x25e3a160 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0x8c117200 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0xaaebb780 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0xb05f7ae4 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0x1d54e592 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0xaa4e2e57 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0x262c114b +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x6dd7d529 +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0x2b4ec0f9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0xa2740038 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x02a159fe +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x7c78d129 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x49c8b7e0 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0x7f56591a +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0x4a76d40e +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x4a5aa66d +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x8740f7e9 +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0x32242da3 +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0x07e3dfb8 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x0560f26e +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0x6bdc08df +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0xdbde740b +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0xa0232e95 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x9153ccfc +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0xe77fdccf +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0xba977315 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0xa11c151f +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0xe1146fe1 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0x52711bbd +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0x253edaa7 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0xa1057c28 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x44acb876 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0x1ffd14c4 +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0x038535e9 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0xb7606a53 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0xdce3939a +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0xb04dc725 +net/ipv4/netfilter/ip_nat ip_nat_packet 0xed817542 +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0xc1e1b791 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x08f33e32 +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x95755859 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0xce42310e +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x493cb83a +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0x21eac550 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0x31362986 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0xc9caf9cd +net/ipv4/netfilter/ip_tables ipt_do_table 0x2e152176 +net/ipv4/netfilter/ip_tables ipt_find_target 0xbe7abb40 +net/ipv4/netfilter/ip_tables ipt_register_match 0x46e55ff1 +net/ipv4/netfilter/ip_tables ipt_register_table 0xf3963f3e +net/ipv4/netfilter/ip_tables ipt_register_target 0x2f404054 +net/ipv4/netfilter/ip_tables ipt_unregister_match 0x594f7856 +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x0e17076e +net/ipv4/netfilter/ip_tables ipt_unregister_target 0xd935e47f +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0xc19bc720 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0xeaa655a3 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0xce8e74b0 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0x42b0a826 +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0xdb5c6361 +net/ipv6/ipv6 inet6_add_protocol 0x6f85baa0 +net/ipv6/ipv6 inet6_bind 0x3d6b051b +net/ipv6/ipv6 inet6_del_protocol 0x7ef7d4a7 +net/ipv6/ipv6 inet6_getname 0x5bd14dbc +net/ipv6/ipv6 inet6_ioctl 0x1c00711c +net/ipv6/ipv6 inet6_register_protosw 0xb8b5cccf +net/ipv6/ipv6 inet6_release 0xabdfa48c +net/ipv6/ipv6 inet6_unregister_protosw 0x45405a2f +net/ipv6/ipv6 ip6_route_me_harder 0x62db3c84 +net/ipv6/ipv6 ip6_route_output 0x01b1ee93 +net/ipv6/ipv6 ip6_xmit 0xafebf3a8 +net/ipv6/ipv6 ipv6_chk_addr 0x103da20f +net/ipv6/ipv6 ipv6_get_saddr 0xb9d2150e +net/ipv6/ipv6 ipv6_getsockopt 0xe4e97999 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0x930f3713 +net/ipv6/ipv6 ipv6_setsockopt 0x0a5590f9 +net/ipv6/ipv6 ndisc_mc_map 0x34742b64 +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0xe715dbe9 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0xed7439a0 +net/ipv6/ipv6 xfrm6_rcv_spi 0xcf63b6a5 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0xb6f71f24 +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0x313733b9 +net/ipv6/netfilter/ip6_tables ip6t_register_table 0x88d690eb +net/ipv6/netfilter/ip6_tables ip6t_register_target 0xbfe8383f +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0x6d72901a +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0xb6f21e82 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0x0a26fe6f +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0x80b51bdd +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0xcd70d8cf +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0xa77af458 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/irda/ircomm/ircomm ircomm_close 0xc19c9cf9 +net/irda/ircomm/ircomm ircomm_connect_request 0xf2af04bd +net/irda/ircomm/ircomm ircomm_connect_response 0xc1d919d4 +net/irda/ircomm/ircomm ircomm_control_request 0x0eab1282 +net/irda/ircomm/ircomm ircomm_data_request 0x709dc7ad +net/irda/ircomm/ircomm ircomm_disconnect_request 0xfcca954a +net/irda/ircomm/ircomm ircomm_flow_request 0xf1dd7b4f +net/irda/ircomm/ircomm ircomm_open 0xc644b099 +net/irda/irda alloc_irdadev 0x7f805366 +net/irda/irda async_unwrap_char 0x1bf9c6b8 +net/irda/irda async_wrap_skb 0x29db4b68 +net/irda/irda hashbin_delete 0x9f3fdb15 +net/irda/irda hashbin_find 0xc9697ed6 +net/irda/irda hashbin_get_first 0xafb532f6 +net/irda/irda hashbin_get_next 0xdd673d0a +net/irda/irda hashbin_insert 0xf10e95cc +net/irda/irda hashbin_lock_find 0x7bee2e3d +net/irda/irda hashbin_new 0x96c5cfee +net/irda/irda hashbin_remove 0x229d35b6 +net/irda/irda hashbin_remove_this 0x9722368a +net/irda/irda irda_debug 0x38a20e5b +net/irda/irda irda_device_dongle_cleanup 0xf27b6016 +net/irda/irda irda_device_dongle_init 0x705f7c76 +net/irda/irda irda_device_register_dongle 0xc7bf9862 +net/irda/irda irda_device_set_media_busy 0x7b4695f6 +net/irda/irda irda_device_unregister_dongle 0xfd41e248 +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0x4c91f430 +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_setup_dma 0xd6deeaae +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0x3647f0b3 +net/irda/irda iriap_getvaluebyclass_request 0x8e23a431 +net/irda/irda iriap_open 0xe2b27dd6 +net/irda/irda irias_add_integer_attrib 0x87b3f3d3 +net/irda/irda irias_add_octseq_attrib 0x26c6095d +net/irda/irda irias_add_string_attrib 0x315da11c +net/irda/irda irias_delete_object 0x1c8a1c31 +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x49291c9d +net/irda/irda irias_find_object 0x09676c38 +net/irda/irda irias_insert_object 0xa337379a +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0x6082a8bf +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0xcd917f74 +net/irda/irda irlap_open 0x8f09e045 +net/irda/irda irlmp_close_lsap 0xa02d39e4 +net/irda/irda irlmp_connect_request 0x73b999d1 +net/irda/irda irlmp_connect_response 0xb52b1706 +net/irda/irda irlmp_data_request 0xe71383c5 +net/irda/irda irlmp_disconnect_request 0xea20e860 +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0xdb32c53c +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0x3024caa1 +net/irda/irda irttp_connect_request 0x83052381 +net/irda/irda irttp_connect_response 0x53e1be03 +net/irda/irda irttp_data_request 0x66cccced +net/irda/irda irttp_disconnect_request 0xe8622b94 +net/irda/irda irttp_dup 0x42be7b9d +net/irda/irda irttp_flow_request 0x22d831b3 +net/irda/irda irttp_open_tsap 0x4a1e898c +net/irda/irda irttp_udata_request 0xc2e16af6 +net/irda/irda proc_irda 0xd0794cbb +net/lapb/lapb lapb_connect_request 0x2bffdf1d +net/lapb/lapb lapb_data_received 0x0889f14a +net/lapb/lapb lapb_data_request 0x79637fe9 +net/lapb/lapb lapb_disconnect_request 0x7e2d4cea +net/lapb/lapb lapb_getparms 0xbe8af0b5 +net/lapb/lapb lapb_register 0x2740783f +net/lapb/lapb lapb_setparms 0xbb57ae0f +net/lapb/lapb lapb_unregister 0xe6a85096 +net/netfilter/nfnetlink __nfa_fill 0xd06a9231 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0x68eaff23 +net/netfilter/nfnetlink nfnetlink_subsys_register 0xd336e537 +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0xacf49717 +net/netfilter/nfnetlink nfnetlink_unicast 0xfe278b58 +net/rxrpc/rxrpc rxrpc_add_service 0x05b0fe74 +net/rxrpc/rxrpc rxrpc_call_abort 0x50be9fcd +net/rxrpc/rxrpc rxrpc_call_read_data 0xfc5a3e31 +net/rxrpc/rxrpc rxrpc_call_write_data 0x178921ac +net/rxrpc/rxrpc rxrpc_create_call 0x3f0922d0 +net/rxrpc/rxrpc rxrpc_create_connection 0x5f5e222c +net/rxrpc/rxrpc rxrpc_create_transport 0xc41c778d +net/rxrpc/rxrpc rxrpc_del_service 0x56d8a77b +net/rxrpc/rxrpc rxrpc_put_call 0x09c48df0 +net/rxrpc/rxrpc rxrpc_put_connection 0x07c85821 +net/rxrpc/rxrpc rxrpc_put_transport 0x4afb2928 +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x00c52ef5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0xb5dea7ef +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xf8b2ff6e +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0x8efd47c0 +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0x967ac6ce +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0xd5245379 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0x92d64529 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0x25826b68 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0x26a96222 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0xe6bd9d73 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0xf4f1a8ab +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0x113119c0 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0x814f7193 +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0x7123d954 +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0x3046aa01 +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0x1def3fab +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x4c2f4b6d +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x8d1a827e +net/sunrpc/sunrpc auth_domain_find 0xce9b7a1f +net/sunrpc/sunrpc auth_domain_lookup 0xa74157e3 +net/sunrpc/sunrpc auth_domain_put 0xb7e2b4a5 +net/sunrpc/sunrpc auth_unix_add_addr 0xb8520a43 +net/sunrpc/sunrpc auth_unix_forget_old 0x758f9c49 +net/sunrpc/sunrpc auth_unix_lookup 0xd1d4e136 +net/sunrpc/sunrpc cache_check 0x9eab08bf +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0x8d27260d +net/sunrpc/sunrpc cache_init 0xc244025c +net/sunrpc/sunrpc cache_purge 0x2fd173e0 +net/sunrpc/sunrpc cache_register 0x53012f1a +net/sunrpc/sunrpc cache_unregister 0x0afb6f16 +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0xc44b1529 +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0x1e9490f8 +net/sunrpc/sunrpc rpc_bind_new_program 0x1efdeea6 +net/sunrpc/sunrpc rpc_call_async 0x7d1c9b4c +net/sunrpc/sunrpc rpc_call_setup 0x54938f0b +net/sunrpc/sunrpc rpc_call_sync 0x0c07452b +net/sunrpc/sunrpc rpc_clnt_sigmask 0x03fbced7 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0x3f8874bb +net/sunrpc/sunrpc rpc_clone_client 0xca5b3de6 +net/sunrpc/sunrpc rpc_create_client 0x31d04298 +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0x11d656b5 +net/sunrpc/sunrpc rpc_destroy_client 0xf47e1982 +net/sunrpc/sunrpc rpc_execute 0xea2f8e7f +net/sunrpc/sunrpc rpc_init_task 0x5196a982 +net/sunrpc/sunrpc rpc_init_wait_queue 0x11e11d3f +net/sunrpc/sunrpc rpc_killall_tasks 0xae7684ac +net/sunrpc/sunrpc rpc_max_payload 0x97b4c0ac +net/sunrpc/sunrpc rpc_mkpipe 0x880443a1 +net/sunrpc/sunrpc rpc_new_child 0xdb4a5c83 +net/sunrpc/sunrpc rpc_new_client 0xf742e103 +net/sunrpc/sunrpc rpc_new_task 0x7ab6be0b +net/sunrpc/sunrpc rpc_proc_register 0xb4c021cf +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x63a6e54e +net/sunrpc/sunrpc rpc_release_client 0x002b2558 +net/sunrpc/sunrpc rpc_release_task 0x99c67057 +net/sunrpc/sunrpc rpc_restart_call 0x9149ba4e +net/sunrpc/sunrpc rpc_run_child 0x76f62035 +net/sunrpc/sunrpc rpc_setbufsize 0xceace69f +net/sunrpc/sunrpc rpc_shutdown_client 0x80b288ee +net/sunrpc/sunrpc rpc_sleep_on 0x647532e0 +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0xe2c0d089 +net/sunrpc/sunrpc rpc_wake_up_next 0xb4bbeae1 +net/sunrpc/sunrpc rpc_wake_up_status 0x6bd6a967 +net/sunrpc/sunrpc rpc_wake_up_task 0x730937eb +net/sunrpc/sunrpc rpcauth_create 0xafbc5898 +net/sunrpc/sunrpc rpcauth_free_credcache 0x9e728a21 +net/sunrpc/sunrpc rpcauth_init_credcache 0x6fbd580b +net/sunrpc/sunrpc rpcauth_lookup_credcache 0xdb07b9e1 +net/sunrpc/sunrpc rpcauth_lookupcred 0x9b70899f +net/sunrpc/sunrpc rpcauth_register 0x2a3ceec5 +net/sunrpc/sunrpc rpcauth_unregister 0x0dd5bfee +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x7a34b76e +net/sunrpc/sunrpc svc_auth_unregister 0x0f668ba9 +net/sunrpc/sunrpc svc_authenticate 0x3725b10c +net/sunrpc/sunrpc svc_create 0x10531ebd +net/sunrpc/sunrpc svc_create_thread 0x0f1e511a +net/sunrpc/sunrpc svc_destroy 0x849f900d +net/sunrpc/sunrpc svc_drop 0x3ce19324 +net/sunrpc/sunrpc svc_exit_thread 0xa04ca75c +net/sunrpc/sunrpc svc_makesock 0x2ffd4d1b +net/sunrpc/sunrpc svc_proc_register 0x58e55f08 +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0xa4a55a0a +net/sunrpc/sunrpc svc_recv 0x54101872 +net/sunrpc/sunrpc svc_reserve 0x5758baf4 +net/sunrpc/sunrpc svc_seq_show 0x8d55dfac +net/sunrpc/sunrpc svc_set_client 0x1e3eda25 +net/sunrpc/sunrpc svc_wake_up 0xe11c7495 +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x96946e44 +net/sunrpc/sunrpc xdr_buf_from_iov 0xcbaa0004 +net/sunrpc/sunrpc xdr_buf_read_netobj 0x45754a4e +net/sunrpc/sunrpc xdr_buf_subsegment 0xf07e9e3d +net/sunrpc/sunrpc xdr_decode_array2 0x452140bd +net/sunrpc/sunrpc xdr_decode_netobj 0x1be57115 +net/sunrpc/sunrpc xdr_decode_string 0x6755aa62 +net/sunrpc/sunrpc xdr_decode_string_inplace 0x7bd87272 +net/sunrpc/sunrpc xdr_decode_word 0xf71eb46e +net/sunrpc/sunrpc xdr_encode_array2 0x36bcdfc5 +net/sunrpc/sunrpc xdr_encode_netobj 0x29c6f164 +net/sunrpc/sunrpc xdr_encode_opaque 0x0e9e79d5 +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0x587d494b +net/sunrpc/sunrpc xdr_encode_pages 0xfc71b8f8 +net/sunrpc/sunrpc xdr_encode_string 0xabc0fe0c +net/sunrpc/sunrpc xdr_encode_word 0xafc4c4a3 +net/sunrpc/sunrpc xdr_init_decode 0x2692cbc4 +net/sunrpc/sunrpc xdr_init_encode 0x4c500f01 +net/sunrpc/sunrpc xdr_inline_decode 0x8540236d +net/sunrpc/sunrpc xdr_inline_pages 0x15735968 +net/sunrpc/sunrpc xdr_read_pages 0xd69fe6eb +net/sunrpc/sunrpc xdr_reserve_space 0x812014cb +net/sunrpc/sunrpc xdr_shift_buf 0x40301f8e +net/sunrpc/sunrpc xdr_write_pages 0x9efe525b +net/sunrpc/sunrpc xprt_create_proto 0xb94c8073 +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x6b14bb8d +net/wanrouter/wanrouter register_wan_device 0x3a7194d7 +net/wanrouter/wanrouter unlock_adapter_irq 0x53a2e800 +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0xd65e4f79 +net/wanrouter/wanrouter wanrouter_type_trans 0x2b04ed94 +security/commoncap cap_bprm_apply_creds 0x6c485999 +security/commoncap cap_bprm_secureexec 0xf846c211 +security/commoncap cap_bprm_set_security 0x9707b41c +security/commoncap cap_capable 0xa65c0095 +security/commoncap cap_capget 0x9ad31867 +security/commoncap cap_capset_check 0x3e94939b +security/commoncap cap_capset_set 0xfb2ef334 +security/commoncap cap_inode_removexattr 0x3e6b380d +security/commoncap cap_inode_setxattr 0xadf4947b +security/commoncap cap_netlink_recv 0x25114759 +security/commoncap cap_netlink_send 0x7beaf41f +security/commoncap cap_ptrace 0x42d96e55 +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x13ea5cf8 +security/commoncap cap_task_reparent_to_init 0xeccb85b1 +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0xc5d4b4ee +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x603f1cdb +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0x05a97b16 +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0x3864ca41 +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x071ac002 +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x89947013 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x3aa87bdf +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x29f775e3 +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0xf02bb907 +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x3a6ab315 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x9a4c5e93 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0x8b6d0c74 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0x2a687b76 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0x4f46dcf1 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x30657d29 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0xdbdd9ad1 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x24b8399a +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x195c80b1 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x866949af +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x8db6a0a8 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0xe9e12582 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0x48e008d5 +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0xb502e59d +sound/core/snd copy_from_user_toio 0x518bb7f8 +sound/core/snd copy_to_user_fromio 0xe243dde3 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0x4a6c3b71 +sound/core/snd snd_card_file_add 0xfb15af2f +sound/core/snd snd_card_file_remove 0x6ed3c157 +sound/core/snd snd_card_free 0x5ec81c20 +sound/core/snd snd_card_free_in_thread 0x8357e3c5 +sound/core/snd snd_card_new 0x784c5bd2 +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0xeddf936d +sound/core/snd snd_card_register 0xe0b00c0b +sound/core/snd snd_card_set_generic_dev 0x55e3c269 +sound/core/snd snd_card_set_generic_pm_callback 0xaa60edbd +sound/core/snd snd_card_set_pm_callback 0x5dc2ef89 +sound/core/snd snd_cards 0x3682b2a0 +sound/core/snd snd_component_add 0x9d01da2a +sound/core/snd snd_ctl_add 0x0480c79a +sound/core/snd snd_ctl_elem_read 0xfb468f65 +sound/core/snd snd_ctl_elem_write 0x3ecb1a3e +sound/core/snd snd_ctl_find_id 0x3a80e7b7 +sound/core/snd snd_ctl_find_numid 0xddebb8de +sound/core/snd snd_ctl_free_one 0xca659f25 +sound/core/snd snd_ctl_new 0xe4b38745 +sound/core/snd snd_ctl_new1 0xcf8b4ea0 +sound/core/snd snd_ctl_notify 0x55cf308e +sound/core/snd snd_ctl_register_ioctl 0x6fdcaf8a +sound/core/snd snd_ctl_register_ioctl_compat 0xf497721a +sound/core/snd snd_ctl_remove 0xf14be8d0 +sound/core/snd snd_ctl_remove_id 0x74751990 +sound/core/snd snd_ctl_rename_id 0x70f1d4c8 +sound/core/snd snd_ctl_unregister_ioctl 0x6c84f7ff +sound/core/snd snd_ctl_unregister_ioctl_compat 0xb0cc2ce8 +sound/core/snd snd_device_free 0x497d3d97 +sound/core/snd snd_device_new 0x2f15efad +sound/core/snd snd_device_register 0xcf84b63d +sound/core/snd snd_dma_disable 0x70c15ac1 +sound/core/snd snd_dma_pointer 0x191e88cf +sound/core/snd snd_dma_program 0x18e1683f +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0x066d8659 +sound/core/snd snd_info_create_module_entry 0xfba86795 +sound/core/snd snd_info_free_entry 0x65940232 +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0xceb317dc +sound/core/snd snd_info_unregister 0x79b3bef6 +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0xd99bab4d +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0xff5948c0 +sound/core/snd snd_register_device 0x67dcdd3e +sound/core/snd snd_register_oss_device 0x865b54b6 +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0xfaa463dd +sound/core/snd snd_unregister_device 0x746eee67 +sound/core/snd snd_unregister_oss_device 0x907d0e0a +sound/core/snd-hwdep snd_hwdep_new 0x70b5ac43 +sound/core/snd-page-alloc snd_dma_alloc_pages 0xd276501b +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0xdc167f2a +sound/core/snd-page-alloc snd_dma_free_pages 0x462043a6 +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0x39e57c1d +sound/core/snd-page-alloc snd_dma_reserve_buf 0x29734ce6 +sound/core/snd-page-alloc snd_free_pages 0x19cc2ce3 +sound/core/snd-page-alloc snd_malloc_pages 0xc6829020 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x0beab9b1 +sound/core/snd-pcm snd_pcm_devices 0x22289b1e +sound/core/snd-pcm snd_pcm_format_big_endian 0x93878ece +sound/core/snd-pcm snd_pcm_format_linear 0x8733f967 +sound/core/snd-pcm snd_pcm_format_little_endian 0x8bbdc311 +sound/core/snd-pcm snd_pcm_format_name 0xedd5b5bd +sound/core/snd-pcm snd_pcm_format_physical_width 0xa8edfa41 +sound/core/snd-pcm snd_pcm_format_set_silence 0xdf124602 +sound/core/snd-pcm snd_pcm_format_signed 0xe2c5f868 +sound/core/snd-pcm snd_pcm_format_silence_64 0xda29bc77 +sound/core/snd-pcm snd_pcm_format_size 0xa2658908 +sound/core/snd-pcm snd_pcm_format_unsigned 0x95a60aa5 +sound/core/snd-pcm snd_pcm_format_width 0x55eb2175 +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0x730d2a6c +sound/core/snd-pcm snd_pcm_hw_constraint_list 0x156ab7c3 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0x61a1981d +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x1dceefdd +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0xafdda2f6 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0xc076a160 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x24d479b6 +sound/core/snd-pcm snd_pcm_hw_constraint_step 0xdd814ad7 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0xf134d5a9 +sound/core/snd-pcm snd_pcm_hw_constraints_init 0x63d2f15b +sound/core/snd-pcm snd_pcm_hw_param_first 0x1f128d0f +sound/core/snd-pcm snd_pcm_hw_param_last 0x64a63562 +sound/core/snd-pcm snd_pcm_hw_param_mask 0x40e8d09e +sound/core/snd-pcm snd_pcm_hw_param_near 0xac8f52ac +sound/core/snd-pcm snd_pcm_hw_param_set 0xe75e2b39 +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0xdac6fccc +sound/core/snd-pcm snd_pcm_hw_rule_add 0xe155706c +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0xd573d08c +sound/core/snd-pcm snd_pcm_kernel_ioctl 0x2a2714d4 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x2bcce4c9 +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0xd38ec693 +sound/core/snd-pcm snd_pcm_lib_free_pages 0x37650906 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x1a6cf761 +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x287ecc2b +sound/core/snd-pcm snd_pcm_lib_mmap_iomem 0xff3b4351 +sound/core/snd-pcm snd_pcm_lib_period_bytes 0x86680ef2 +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x9719532f +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0x2c7675f1 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0x516a7035 +sound/core/snd-pcm snd_pcm_lib_read 0x73ed316b +sound/core/snd-pcm snd_pcm_lib_readv 0xdbb7cecb +sound/core/snd-pcm snd_pcm_lib_write 0xb7bc135f +sound/core/snd-pcm snd_pcm_lib_writev 0xb1c5b5e9 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0xa9e4a893 +sound/core/snd-pcm snd_pcm_link_rwlock 0x011bbb0e +sound/core/snd-pcm snd_pcm_mmap_data 0xcedc162c +sound/core/snd-pcm snd_pcm_new 0xfaa0af70 +sound/core/snd-pcm snd_pcm_new_stream 0xbf94cd8b +sound/core/snd-pcm snd_pcm_notify 0x6d3259e8 +sound/core/snd-pcm snd_pcm_open_substream 0x810604a2 +sound/core/snd-pcm snd_pcm_period_elapsed 0x9931acd3 +sound/core/snd-pcm snd_pcm_release_substream 0x0fa45b4f +sound/core/snd-pcm snd_pcm_set_ops 0x52cf262e +sound/core/snd-pcm snd_pcm_set_sync 0x5e544493 +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0x75c88f32 +sound/core/snd-pcm snd_pcm_stop 0x0c7f5efe +sound/core/snd-pcm snd_pcm_suspend 0x5ace386f +sound/core/snd-pcm snd_pcm_suspend_all 0xb18c1b9a +sound/core/snd-rawmidi snd_rawmidi_drain_input 0x4e49e714 +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x049298fb +sound/core/snd-rawmidi snd_rawmidi_drop_output 0x70c6cd6a +sound/core/snd-rawmidi snd_rawmidi_info 0x795824c3 +sound/core/snd-rawmidi snd_rawmidi_info_select 0xaa25959e +sound/core/snd-rawmidi snd_rawmidi_input_params 0x4eed5fce +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x7261a730 +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0xdc1a91a5 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0x248190d4 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x9ca2dcd8 +sound/core/snd-rawmidi snd_rawmidi_new 0x5a2f2d0d +sound/core/snd-rawmidi snd_rawmidi_output_params 0x88048698 +sound/core/snd-rawmidi snd_rawmidi_receive 0x63b50506 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0xf4e78dfd +sound/core/snd-rawmidi snd_rawmidi_transmit 0x50baa5f1 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x4f5f8d67 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x52ed1a01 +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0x4dc54a50 +sound/core/snd-timer snd_timer_close 0xedc90fde +sound/core/snd-timer snd_timer_continue 0x290fd7f2 +sound/core/snd-timer snd_timer_global_free 0xeed7ab4b +sound/core/snd-timer snd_timer_global_new 0xf33d4bb9 +sound/core/snd-timer snd_timer_global_register 0xa12033aa +sound/core/snd-timer snd_timer_global_unregister 0x4308f682 +sound/core/snd-timer snd_timer_interrupt 0x19f0ebc4 +sound/core/snd-timer snd_timer_new 0xc19b2c11 +sound/core/snd-timer snd_timer_notify 0x77b8fe6a +sound/core/snd-timer snd_timer_open 0x3ac9ea2f +sound/core/snd-timer snd_timer_pause 0x643b0a46 +sound/core/snd-timer snd_timer_resolution 0xfc260b23 +sound/core/snd-timer snd_timer_start 0x34edf30c +sound/core/snd-timer snd_timer_stop 0x327911d0 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0x93762478 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x7a3fbf38 +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0x262ac27c +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0x6ab99a7a +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0x8c2fd169 +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0xdf28ab93 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0x24b6d56f +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0x785885a6 +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0xe60ee273 +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x16525e55 +sound/drivers/vx/snd-vx-lib snd_vx_create 0xaa1be938 +sound/drivers/vx/snd-vx-lib snd_vx_delay 0x7252aeeb +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x770632a7 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x49da8eb7 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0xf6a3a31c +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0xa1fdbe0c +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0x3e98f519 +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0x91bd82c5 +sound/i2c/other/snd-ak4114 snd_ak4114_build 0x148fb47e +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0xd01a793d +sound/i2c/other/snd-ak4114 snd_ak4114_create 0x9e9fbca1 +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0x1eed009c +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0x4faa28e3 +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0xec03b04a +sound/i2c/other/snd-ak4117 snd_ak4117_build 0x01389184 +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0x42e4db2b +sound/i2c/other/snd-ak4117 snd_ak4117_create 0xee6b897d +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x970975c0 +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x6707d319 +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x647fab28 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0xb5427490 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0xd3f95eba +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0x618ec1f6 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0xdc9de07e +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0x2bf33424 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0xb26ba99d +sound/i2c/snd-cs8427 snd_cs8427_create 0x34a840af +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0xf823307a +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0x66115a67 +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0x6f1d17bf +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0x3b73e253 +sound/i2c/snd-cs8427 snd_cs8427_reset 0xbfd7f38a +sound/i2c/snd-i2c snd_i2c_bus_create 0x38075201 +sound/i2c/snd-i2c snd_i2c_device_create 0x1c2ec3ee +sound/i2c/snd-i2c snd_i2c_device_free 0x14a52757 +sound/i2c/snd-i2c snd_i2c_probeaddr 0x226bfc86 +sound/i2c/snd-i2c snd_i2c_readbytes 0xe2a14b1e +sound/i2c/snd-i2c snd_i2c_sendbytes 0x8cfef7e0 +sound/isa/sb/snd-sb-common snd_sbdsp_command 0x36643a97 +sound/isa/sb/snd-sb-common snd_sbdsp_create 0x3e526804 +sound/isa/sb/snd-sb-common snd_sbdsp_get_byte 0xf0bef721 +sound/isa/sb/snd-sb-common snd_sbdsp_reset 0x645ecf6b +sound/isa/sb/snd-sb-common snd_sbmixer_add_ctl 0xfc3002ff +sound/isa/sb/snd-sb-common snd_sbmixer_new 0x410b6fb1 +sound/isa/sb/snd-sb-common snd_sbmixer_read 0xd26aad3d +sound/isa/sb/snd-sb-common snd_sbmixer_write 0xd5da886e +sound/oss/ac97_codec ac97_alloc_codec 0xa5567a6a +sound/oss/ac97_codec ac97_probe_codec 0x07581ca0 +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0x681c9f5d +sound/oss/ac97_codec ac97_release_codec 0x6497a931 +sound/oss/ac97_codec ac97_restore_state 0x449096c1 +sound/oss/ac97_codec ac97_save_state 0x2604cabc +sound/oss/ac97_codec ac97_set_adc_rate 0xfc96dcda +sound/oss/ac97_codec ac97_set_dac_rate 0x6b92d4c8 +sound/oss/ac97_codec ac97_tune_hardware 0xe5a35bd2 +sound/oss/ac97_codec ac97_unregister_driver 0x3771c065 +sound/oss/aci aci_port 0x0d82adb6 +sound/oss/aci aci_rw_cmd 0xcc7c4cd8 +sound/oss/aci aci_version 0x93350c87 +sound/oss/ad1848 ad1848_control 0xc04f6f67 +sound/oss/ad1848 ad1848_detect 0x845a1638 +sound/oss/ad1848 ad1848_init 0xc41f977c +sound/oss/ad1848 ad1848_unload 0x9bf1cc62 +sound/oss/ad1848 adintr 0xf8832770 +sound/oss/ad1848 attach_ms_sound 0xfb08f365 +sound/oss/ad1848 probe_ms_sound 0x65e6d1ca +sound/oss/ad1848 unload_ms_sound 0xb29a9148 +sound/oss/mpu401 attach_mpu401 0x0f68d249 +sound/oss/mpu401 intchk_mpu401 0x5fe6dd42 +sound/oss/mpu401 mpuintr 0x871374e3 +sound/oss/mpu401 probe_mpu401 0x5c8d3e32 +sound/oss/mpu401 unload_mpu401 0x5febf284 +sound/oss/opl3 opl3_detect 0x67481767 +sound/oss/opl3 opl3_init 0x04cb1a8a +sound/oss/sb_lib probe_sbmpu 0x4b446bb0 +sound/oss/sb_lib sb_be_quiet 0x42424109 +sound/oss/sb_lib sb_dsp_detect 0xd8a2731c +sound/oss/sb_lib sb_dsp_init 0xd56fcb31 +sound/oss/sb_lib sb_dsp_unload 0xc4884969 +sound/oss/sb_lib smw_free 0x450f9aea +sound/oss/sb_lib unload_sbmpu 0x74afd69c +sound/oss/sound DMAbuf_close_dma 0xc88b42ab +sound/oss/sound DMAbuf_inputintr 0xeb315d99 +sound/oss/sound DMAbuf_open_dma 0x06b3013d +sound/oss/sound DMAbuf_outputintr 0x987bcf12 +sound/oss/sound DMAbuf_start_dma 0xe056b71c +sound/oss/sound MIDIbuf_avail 0x1f395686 +sound/oss/sound audio_devs 0x322ba90d +sound/oss/sound cent_tuning 0x03ce7ff7 +sound/oss/sound compute_finetune 0x04c87ec8 +sound/oss/sound conf_printf 0x0f280035 +sound/oss/sound conf_printf2 0x7bdf0907 +sound/oss/sound do_midi_msg 0xb51587f6 +sound/oss/sound load_mixer_volumes 0xa1d5f04f +sound/oss/sound midi_devs 0x1749053a +sound/oss/sound midi_synth_aftertouch 0xf1ea8a20 +sound/oss/sound midi_synth_bender 0xba7dd041 +sound/oss/sound midi_synth_close 0xad45df73 +sound/oss/sound midi_synth_controller 0x892093e0 +sound/oss/sound midi_synth_hw_control 0xb14b22cd +sound/oss/sound midi_synth_ioctl 0xaef743b2 +sound/oss/sound midi_synth_kill_note 0x2aa31695 +sound/oss/sound midi_synth_load_patch 0xf7426da3 +sound/oss/sound midi_synth_open 0xf6b3a2fb +sound/oss/sound midi_synth_panning 0xdb400afa +sound/oss/sound midi_synth_reset 0x56504ca2 +sound/oss/sound midi_synth_send_sysex 0xfddcbfb3 +sound/oss/sound midi_synth_set_instr 0xd85be938 +sound/oss/sound midi_synth_setup_voice 0x4ff47e9d +sound/oss/sound midi_synth_start_note 0x9bdaf24d +sound/oss/sound mixer_devs 0x707cdbd9 +sound/oss/sound note_to_freq 0x5d986fc9 +sound/oss/sound num_audiodevs 0x4cd01bdd +sound/oss/sound num_midis 0xa1eae7cf +sound/oss/sound num_mixers 0x9d845b18 +sound/oss/sound semitone_tuning 0x8b84aeb1 +sound/oss/sound seq_copy_to_input 0x7679ee76 +sound/oss/sound seq_input_event 0x17ba231d +sound/oss/sound sequencer_init 0xf78f6363 +sound/oss/sound sequencer_timer 0x90bd9714 +sound/oss/sound sound_alloc_dma 0x9a95733f +sound/oss/sound sound_alloc_mididev 0xba413f87 +sound/oss/sound sound_alloc_mixerdev 0x1b3df3cf +sound/oss/sound sound_alloc_synthdev 0xc748d109 +sound/oss/sound sound_alloc_timerdev 0x51e354b2 +sound/oss/sound sound_close_dma 0x418f5fbe +sound/oss/sound sound_free_dma 0x394cb088 +sound/oss/sound sound_install_audiodrv 0x88561811 +sound/oss/sound sound_install_mixer 0x9ae1f9cc +sound/oss/sound sound_open_dma 0xcc4b8797 +sound/oss/sound sound_timer_devs 0x782db65f +sound/oss/sound sound_timer_init 0x2161d5e8 +sound/oss/sound sound_timer_interrupt 0xe2675a79 +sound/oss/sound sound_timer_syncinterval 0xfa6871be +sound/oss/sound sound_unload_audiodev 0xa948751e +sound/oss/sound sound_unload_mididev 0xa6bb414c +sound/oss/sound sound_unload_mixerdev 0xa51c913b +sound/oss/sound sound_unload_synthdev 0x06339815 +sound/oss/sound sound_unload_timerdev 0xa41ead5f +sound/oss/sound synth_devs 0x76017cab +sound/oss/uart401 probe_uart401 0x4e070b06 +sound/oss/uart401 uart401intr 0x8a87560a +sound/oss/uart401 unload_uart401 0xecfdd9c9 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x4e16bf15 +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0x1a066d98 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0x25d3a4da +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0xa807163c +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0x174617c2 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x156c363a +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x2883e050 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0x95c2a4c3 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0xc20d3f06 +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0x6d0fb3c8 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0xc7c89a93 +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0xe5ff7b13 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x71b1d647 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0x6bf0a088 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0xe3669086 +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0xe2098335 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0xa1f26525 +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0xccba6ba4 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0x518c7c1f +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x4a91dc5d +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0x8607fc61 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0x49201780 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0x5d2c644f +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0x8a671ddb +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0x570470c6 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0x8419d7c5 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0xcf17cf68 +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0x67da8429 +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0x4557578d +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0x05838b88 +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0x520b8ea6 +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0x2f4c2ecc +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0x1bbc3df4 +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x8367a61d +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0x0f246449 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0x0ee2c377 +sound/pci/hda/snd-hda-codec snd_hda_resume 0x85bbf488 +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0xdf339964 +sound/pci/hda/snd-hda-codec snd_hda_suspend 0xdfea3c1e +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0x81d9b735 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0x478e9b38 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0x7e0afcbc +sound/pci/trident/snd-trident snd_trident_alloc_voice 0x29401634 +sound/pci/trident/snd-trident snd_trident_free_voice 0x06779000 +sound/pci/trident/snd-trident snd_trident_start_voice 0xcf939025 +sound/pci/trident/snd-trident snd_trident_stop_voice 0x4c86f778 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0x7725136c +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0xbdec6be0 +sound/pci/trident/snd-trident snd_trident_synth_free 0x9ae9a193 +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0x739fd8b6 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0x518a1dcd +sound/soundcore register_sound_midi 0xbcf6b625 +sound/soundcore register_sound_mixer 0xbfe0b83c +sound/soundcore register_sound_special 0xc59d4ae9 +sound/soundcore register_sound_special_device 0x6442215a +sound/soundcore register_sound_synth 0xd8a5c8d8 +sound/soundcore sound_class 0xa8eb0363 +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +sound/synth/emux/snd-emux-synth snd_emux_free 0x7d5d3b40 +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0xaa0335b7 +sound/synth/emux/snd-emux-synth snd_emux_new 0xce1e4978 +sound/synth/emux/snd-emux-synth snd_emux_register 0x83ad9b18 +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0x68d3f72b +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0x6bbf5b15 +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0xd3c1adac +sound/synth/snd-util-mem __snd_util_mem_free 0x1fd6c8dc +sound/synth/snd-util-mem __snd_util_memblk_new 0x6b442bbf +sound/synth/snd-util-mem snd_util_mem_alloc 0xb13b09a0 +sound/synth/snd-util-mem snd_util_mem_avail 0xc6d9c71f +sound/synth/snd-util-mem snd_util_mem_free 0xea2de30c +sound/synth/snd-util-mem snd_util_memhdr_free 0x7ad0c23d +sound/synth/snd-util-mem snd_util_memhdr_new 0x0c5322df +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0x64330270 +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux I_BDEV 0xd0fea7fc +vmlinux SELECT_DRIVE 0x8245ca2b +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0x7024878f +vmlinux __alloc_pages 0x2ff5c4f6 +vmlinux __alloc_percpu 0x55f2580b +vmlinux __alloc_skb 0xed054854 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0x5c85d66b +vmlinux __bio_clone 0x57909a6b +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0x4c940120 +vmlinux __bread 0x4a30a919 +vmlinux __breadahead 0x99892633 +vmlinux __break_lease 0x0d2a4381 +vmlinux __brelse 0x0713c5ec +vmlinux __builtin_strlen 0xe3ed7844 +vmlinux __check_region 0xf1d0cdab +vmlinux __clear_user 0xf3341268 +vmlinux __const_udelay 0xeae3dfd6 +vmlinux __cpufreq_driver_target 0x68edd384 +vmlinux __create_workqueue 0x64d78ed6 +vmlinux __d_path 0xef9908f3 +vmlinux __delay 0x466c14a7 +vmlinux __dev_get_by_index 0xebb88732 +vmlinux __dev_get_by_name 0x2455f667 +vmlinux __dev_remove_pack 0x0662b700 +vmlinux __down_failed 0x7a7ef853 +vmlinux __down_failed_interruptible 0xccd52b12 +vmlinux __down_failed_trylock 0xe9a60ad6 +vmlinux __down_read 0x8df63884 +vmlinux __down_read_trylock 0x7bfad8b0 +vmlinux __down_write 0x0d4c5812 +vmlinux __down_write_trylock 0x3810bd1a +vmlinux __downgrade_write 0x158c90d5 +vmlinux __dst_free 0x5635dc75 +vmlinux __elv_add_request 0x6219add4 +vmlinux __find_get_block 0x05d105d8 +vmlinux __free_pages 0x802514d6 +vmlinux __generic_file_aio_read 0x76a7bb58 +vmlinux __generic_unplug_device 0x69dfa959 +vmlinux __get_free_pages 0x93fca811 +vmlinux __get_user_1 0x167e7f9d +vmlinux __get_user_2 0x8f9c199c +vmlinux __get_user_4 0x6729d3df +vmlinux __get_user_8 0x6d334118 +vmlinux __getblk 0xd21e84ca +vmlinux __ide_abort 0x9e9724ab +vmlinux __ide_dma_bad_drive 0xd3aaacf8 +vmlinux __ide_dma_check 0x83749e55 +vmlinux __ide_dma_end 0xec4d0252 +vmlinux __ide_dma_good_drive 0x9f710763 +vmlinux __ide_dma_host_off 0xe35e80d3 +vmlinux __ide_dma_host_on 0xb420c72b +vmlinux __ide_dma_lostirq 0xaf121400 +vmlinux __ide_dma_off 0xa54119c8 +vmlinux __ide_dma_off_quietly 0xe1faee70 +vmlinux __ide_dma_on 0xc207a584 +vmlinux __ide_dma_timeout 0x6ed4a44a +vmlinux __ide_end_request 0x277d4b58 +vmlinux __ide_error 0x37116188 +vmlinux __ide_pci_register_driver 0x7c4cc158 +vmlinux __inet_lookup_listener 0x31c4595f +vmlinux __inet_twsk_hashdance 0xb0d6c002 +vmlinux __inet_twsk_kill 0xccc45d6a +vmlinux __init_timer_base 0xfcafa2e2 +vmlinux __inode_dir_notify 0xcfad727e +vmlinux __insert_inode_hash 0xd17ee5b8 +vmlinux __invalidate_device 0x4dd9f586 +vmlinux __ioremap 0x9eac042a +vmlinux __ip_route_output_key 0x96bcecd5 +vmlinux __ip_select_ident 0x298695e8 +vmlinux __kfifo_get 0x69a6b354 +vmlinux __kfifo_put 0xd68d028d +vmlinux __kfree_skb 0xebc7b672 +vmlinux __kill_fasync 0x89647b17 +vmlinux __kmalloc 0x5a34a45c +vmlinux __lock_buffer 0x98badd4a +vmlinux __lock_page 0xb0e5fe97 +vmlinux __mark_inode_dirty 0xc52cf6da +vmlinux __memcpy 0xc16fe12d +vmlinux __memcpy_fromio 0xf666cbb3 +vmlinux __memcpy_toio 0x5252f304 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xb0edb54a +vmlinux __module_put_and_exit 0x4ad3e58f +vmlinux __ndelay 0xdf8c695a +vmlinux __neigh_event_send 0x3659e705 +vmlinux __neigh_for_each_release 0x9f4f4d05 +vmlinux __net_timestamp 0xccad9eab +vmlinux __netdev_watchdog_up 0x2028d339 +vmlinux __nla_put 0xcaf52919 +vmlinux __nla_reserve 0xa2d4d4ba +vmlinux __node_distance 0x46c47fb6 +vmlinux __page_cache_release 0x3af8b54e +vmlinux __pagevec_lru_add 0xaeedbc34 +vmlinux __pagevec_release 0xd447bc34 +vmlinux __pci_register_driver 0xe7f91694 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0xeb03a406 +vmlinux __put_user_1 0xc3aaf0a9 +vmlinux __put_user_2 0x5a4896a8 +vmlinux __put_user_4 0xb2fd5ceb +vmlinux __put_user_8 0xb8e7ce2c +vmlinux __read_lock_failed 0xa1bf4e7d +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0x515ff491 +vmlinux __scm_destroy 0x50de7034 +vmlinux __scm_send 0x618be764 +vmlinux __secpath_destroy 0xd7026503 +vmlinux __serio_register_driver 0x9d83d0ec +vmlinux __serio_register_port 0x35ee2523 +vmlinux __serio_unregister_port_delayed 0x09914384 +vmlinux __set_page_dirty_buffers 0x62891d03 +vmlinux __set_page_dirty_nobuffers 0x835fe223 +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x04752492 +vmlinux __skb_checksum_complete 0x5c885d04 +vmlinux __skb_linearize 0xbbb88d89 +vmlinux __strncpy_from_user 0xc003c637 +vmlinux __supported_pte_mask 0xfb3a28c3 +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x267fc65b +vmlinux __tasklet_schedule 0xf397b9aa +vmlinux __tcf_em_tree_match 0xec0e53ff +vmlinux __udelay 0x9e7d6bd0 +vmlinux __up_read 0x6f4da02b +vmlinux __up_wakeup 0x1042cbb5 +vmlinux __up_write 0x4bc75df3 +vmlinux __user_walk 0x4ce05212 +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0x7cb5e9a9 +vmlinux __wait_on_bit_lock 0xa396c2b5 +vmlinux __wait_on_buffer 0x4078534a +vmlinux __wake_up 0xb505bbf8 +vmlinux __wake_up_bit 0xd2d4e0b6 +vmlinux __wake_up_sync 0xe72be616 +vmlinux __write_lock_failed 0xc8a0c38e +vmlinux __xfrm_policy_check 0x5cbc9d42 +vmlinux __xfrm_policy_destroy 0x7aaa339b +vmlinux __xfrm_route_forward 0xac2b5284 +vmlinux __xfrm_state_destroy 0xa83fbce2 +vmlinux _atomic_dec_and_lock 0x9f334253 +vmlinux _ctype 0x8d3894f2 +vmlinux _read_lock 0xce0f1efc +vmlinux _read_lock_bh 0x8ddd843c +vmlinux _read_lock_irq 0x48bf8541 +vmlinux _read_lock_irqsave 0x323ea127 +vmlinux _read_trylock 0x379d8c2c +vmlinux _read_unlock 0xf890c5b2 +vmlinux _read_unlock_bh 0xf5a5b6c1 +vmlinux _read_unlock_irq 0x8bcb73d2 +vmlinux _read_unlock_irqrestore 0x16df1f51 +vmlinux _spin_lock 0x65d4de80 +vmlinux _spin_lock_bh 0x690e213d +vmlinux _spin_lock_irq 0x2a081302 +vmlinux _spin_lock_irqsave 0x1099d3f4 +vmlinux _spin_trylock 0xa2ea55a2 +vmlinux _spin_trylock_bh 0x4bd1ef5f +vmlinux _spin_unlock 0x25f3fbb2 +vmlinux _spin_unlock_bh 0x0318750f +vmlinux _spin_unlock_irq 0xe2b554d6 +vmlinux _spin_unlock_irqrestore 0x7601ed74 +vmlinux _write_lock 0x531415e6 +vmlinux _write_lock_bh 0xf5fdb220 +vmlinux _write_lock_irq 0x5cc6f938 +vmlinux _write_lock_irqsave 0x106d3d0a +vmlinux _write_trylock 0xeafca145 +vmlinux _write_unlock 0xdf6f7bfa +vmlinux _write_unlock_bh 0xdc680625 +vmlinux _write_unlock_irq 0x2c859803 +vmlinux _write_unlock_irqrestore 0xb8e0d4e7 +vmlinux acpi_acquire_global_lock 0x70d8ab82 +vmlinux acpi_bus_add 0x02e9e6eb +vmlinux acpi_bus_generate_event 0x889109e1 +vmlinux acpi_bus_get_device 0x16472972 +vmlinux acpi_bus_get_power 0x7389c9a8 +vmlinux acpi_bus_get_status 0x07dc16d2 +vmlinux acpi_bus_receive_event 0x141dbf9b +vmlinux acpi_bus_register_driver 0x4c1c7a68 +vmlinux acpi_bus_set_power 0xcb733bf2 +vmlinux acpi_bus_start 0xf68c671d +vmlinux acpi_bus_unregister_driver 0xc5404011 +vmlinux acpi_clear_event 0x0fd00a68 +vmlinux acpi_dbg_layer 0xb3284531 +vmlinux acpi_dbg_level 0xca8acc78 +vmlinux acpi_disable_event 0xb758b225 +vmlinux acpi_disabled 0x1a45cb6c +vmlinux acpi_ec_read 0x50a0e15a +vmlinux acpi_ec_write 0x7ff7a286 +vmlinux acpi_enable_event 0x6237f6b5 +vmlinux acpi_enable_gpe 0xf47d47e0 +vmlinux acpi_enter_sleep_state 0xfe047ce6 +vmlinux acpi_enter_sleep_state_s4bios 0x20092385 +vmlinux acpi_evaluate_integer 0xc598bf3e +vmlinux acpi_evaluate_object 0x1d146440 +vmlinux acpi_evaluate_reference 0x9044cb34 +vmlinux acpi_extract_package 0xd041334b +vmlinux acpi_fadt 0xddcb58d9 +vmlinux acpi_fadt_is_v1 0x01438985 +vmlinux acpi_get_child 0xda268faa +vmlinux acpi_get_current_resources 0x967c2a85 +vmlinux acpi_get_devices 0xee46feef +vmlinux acpi_get_firmware_table 0x5331e1b5 +vmlinux acpi_get_handle 0x2bfeb410 +vmlinux acpi_get_name 0x08c4f629 +vmlinux acpi_get_next_object 0x170c25ee +vmlinux acpi_get_object_info 0x797435d0 +vmlinux acpi_get_parent 0xfb0443fb +vmlinux acpi_get_pci_id 0x058c75d9 +vmlinux acpi_get_pci_rootbridge_handle 0x1f8ec1b3 +vmlinux acpi_get_physical_device 0xbffb279a +vmlinux acpi_get_pxm 0x0a372247 +vmlinux acpi_get_register 0x2b5d6f73 +vmlinux acpi_get_sleep_type_data 0x8d8d96c6 +vmlinux acpi_get_table 0x3b289c5b +vmlinux acpi_get_type 0x0d3dda14 +vmlinux acpi_in_suspend 0xf78a658e +vmlinux acpi_install_address_space_handler 0xff03752f +vmlinux acpi_install_fixed_event_handler 0x5ac376a5 +vmlinux acpi_install_gpe_block 0xda8ddbdf +vmlinux acpi_install_gpe_handler 0x02aff2f4 +vmlinux acpi_install_notify_handler 0xd9091363 +vmlinux acpi_map_lsapic 0xda0a6b0e +vmlinux acpi_os_create_semaphore 0x9f8733e2 +vmlinux acpi_os_delete_semaphore 0xe65a005c +vmlinux acpi_os_free 0x43b9bbb4 +vmlinux acpi_os_printf 0x667cecc9 +vmlinux acpi_os_queue_for_execution 0xdb9d67ff +vmlinux acpi_os_read_pci_configuration 0xd94c1770 +vmlinux acpi_os_read_port 0xbdaf5b07 +vmlinux acpi_os_signal 0x874aea72 +vmlinux acpi_os_signal_semaphore 0x8cdbc08d +vmlinux acpi_os_sleep 0x540f9040 +vmlinux acpi_os_stall 0x69005013 +vmlinux acpi_os_wait_events_complete 0xc9ab2eef +vmlinux acpi_os_wait_semaphore 0x2565a159 +vmlinux acpi_os_write_port 0x7d94f746 +vmlinux acpi_pci_irq_enable 0x141b6a9c +vmlinux acpi_pci_register_driver 0xd1472061 +vmlinux acpi_pci_unregister_driver 0x43385ad9 +vmlinux acpi_register_gsi 0x36d5355b +vmlinux acpi_register_ioapic 0x636a5691 +vmlinux acpi_release_global_lock 0x3e2ae3a8 +vmlinux acpi_remove_address_space_handler 0xfcfaa928 +vmlinux acpi_remove_fixed_event_handler 0x2005e68a +vmlinux acpi_remove_gpe_block 0x8e002cda +vmlinux acpi_remove_gpe_handler 0xb07dfb3d +vmlinux acpi_remove_notify_handler 0x2bb55d6e +vmlinux acpi_resource_to_address64 0x263b54cc +vmlinux acpi_root_dir 0x2ec881cd +vmlinux acpi_set_current_resources 0xdc24d101 +vmlinux acpi_set_gpe_type 0xa3bbcd80 +vmlinux acpi_set_register 0x4a9d86e3 +vmlinux acpi_specific_hotkey_enabled 0x46621493 +vmlinux acpi_strict 0xa59c0666 +vmlinux acpi_unmap_lsapic 0xd18b6eb2 +vmlinux acpi_unregister_ioapic 0xe716baed +vmlinux acpi_walk_namespace 0x19d5d20a +vmlinux acpi_walk_resources 0x375c5115 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0x622947ce +vmlinux add_disk_randomness 0xd7627d18 +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0x79682b65 +vmlinux add_wait_queue 0x4dbc2aea +vmlinux add_wait_queue_exclusive 0x3258cc21 +vmlinux adjust_resource 0xfd05bd8a +vmlinux agp3_generic_cleanup 0xc2424641 +vmlinux agp3_generic_configure 0x4b085dbf +vmlinux agp3_generic_fetch_size 0xde9b17ed +vmlinux agp3_generic_sizes 0x546264cf +vmlinux agp3_generic_tlbflush 0x9d571081 +vmlinux agp_add_bridge 0xf64d306a +vmlinux agp_alloc_bridge 0x1d60193c +vmlinux agp_allocate_memory 0xb9429736 +vmlinux agp_backend_acquire 0x352ccecd +vmlinux agp_backend_release 0xb0661510 +vmlinux agp_bind_memory 0x9e8f8f3a +vmlinux agp_bridge 0xb846f1d1 +vmlinux agp_bridges 0x673f815e +vmlinux agp_collect_device_status 0x60e336a9 +vmlinux agp_copy_info 0x9cee41d1 +vmlinux agp_create_memory 0xd7e7f880 +vmlinux agp_device_command 0xe6d5c272 +vmlinux agp_enable 0x56e49412 +vmlinux agp_find_bridge 0x537cd674 +vmlinux agp_free_key 0xd0fef3b2 +vmlinux agp_free_memory 0x96dcafa0 +vmlinux agp_generic_alloc_by_type 0x85e6ee40 +vmlinux agp_generic_alloc_page 0x0c4065ea +vmlinux agp_generic_create_gatt_table 0x646b69a1 +vmlinux agp_generic_destroy_page 0xbba27749 +vmlinux agp_generic_enable 0x8a029389 +vmlinux agp_generic_free_by_type 0x2711a60c +vmlinux agp_generic_free_gatt_table 0x1e2668cb +vmlinux agp_generic_insert_memory 0xce5a0a50 +vmlinux agp_generic_mask_memory 0x8b3327db +vmlinux agp_generic_remove_memory 0xadb71d1b +vmlinux agp_memory_reserved 0xe089cfcc +vmlinux agp_num_entries 0xd6feefa5 +vmlinux agp_off 0x7538b132 +vmlinux agp_put_bridge 0x356b9e1f +vmlinux agp_remove_bridge 0x9ba4ac37 +vmlinux agp_try_unsupported_boot 0xc5d9c46c +vmlinux agp_unbind_memory 0x4a99cc56 +vmlinux aio_complete 0x522dffc9 +vmlinux aio_put_req 0xc3cf23c8 +vmlinux alloc_buffer_head 0x61706179 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0xbe251d99 +vmlinux alloc_disk_node 0xde3ef23b +vmlinux alloc_etherdev 0x6234920c +vmlinux alloc_fcdev 0xf8482e5a +vmlinux alloc_fddidev 0x3456b140 +vmlinux alloc_hippi_dev 0x83a97915 +vmlinux alloc_netdev 0x1dededa5 +vmlinux alloc_page_buffers 0x180e5adc +vmlinux alloc_pages_current 0x8f330a79 +vmlinux alloc_trdev 0x1605a9c4 +vmlinux alloc_tty_driver 0x01c156fe +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0x5d1b338d +vmlinux anon_transport_class_unregister 0x7e96ebd3 +vmlinux arch_acpi_processor_init_pdc 0x576df302 +vmlinux arch_register_cpu 0x2dd16564 +vmlinux arch_unregister_cpu 0x0237b57a +vmlinux arp_broken_ops 0x2ad82060 +vmlinux arp_create 0x6a691119 +vmlinux arp_find 0xa16ff284 +vmlinux arp_rcv 0x102cb691 +vmlinux arp_send 0x55fd40d3 +vmlinux arp_tbl 0x23770ea8 +vmlinux arp_xmit 0xca9f4c8d +vmlinux atm_alloc_charge 0xcf02e188 +vmlinux atm_charge 0xdebc5afb +vmlinux atm_dev_deregister 0x52aeb1a0 +vmlinux atm_dev_lookup 0x2ba8897f +vmlinux atm_dev_register 0x7bcc37b6 +vmlinux atm_init_aal5 0x11ead6bd +vmlinux atm_pcr_goal 0xf49bc67a +vmlinux atm_proc_root 0x0ffcb4a7 +vmlinux attribute_container_add_attrs 0x602b48bb +vmlinux attribute_container_add_class_device 0xf8d2cec0 +vmlinux attribute_container_add_class_device_adapter 0x1ecbe57a +vmlinux attribute_container_class_device_del 0x8844c23e +vmlinux attribute_container_classdev_to_container 0x2880c707 +vmlinux attribute_container_device_trigger 0x3ada488b +vmlinux attribute_container_find_class_device 0xa2ba9c3d +vmlinux attribute_container_register 0xd450ee77 +vmlinux attribute_container_remove_attrs 0x4ac317aa +vmlinux attribute_container_remove_device 0x282d0fa6 +vmlinux attribute_container_trigger 0x2438cc15 +vmlinux attribute_container_unregister 0x7e7aaa85 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux bad_dma_address 0x1675606f +vmlinux balance_dirty_pages_ratelimited 0x36b22659 +vmlinux bd_claim 0xf05885df +vmlinux bd_release 0x3373cf93 +vmlinux bd_set_size 0x32fc26ad +vmlinux bdev_read_only 0x26362ac6 +vmlinux bdevname 0x6aa5e79c +vmlinux bdget 0xbe09f955 +vmlinux bdput 0xbabcb6c7 +vmlinux bfifo_qdisc_ops 0x4c74134a +vmlinux bio_add_page 0xc66a0f5a +vmlinux bio_alloc 0x66c930a3 +vmlinux bio_alloc_bioset 0x98a58651 +vmlinux bio_clone 0x94ec33a6 +vmlinux bio_copy_user 0x2c244f5b +vmlinux bio_endio 0x770acd88 +vmlinux bio_free 0x712bb2a0 +vmlinux bio_get_nr_vecs 0x06fceb07 +vmlinux bio_hw_segments 0x8b741065 +vmlinux bio_init 0xa61f9833 +vmlinux bio_map_kern 0xfc9a37cc +vmlinux bio_map_user 0x006ef808 +vmlinux bio_pair_release 0x6b8a9b20 +vmlinux bio_phys_segments 0x12c488c1 +vmlinux bio_put 0x749bf06d +vmlinux bio_split 0xbe9ee903 +vmlinux bio_split_pool 0x44722aee +vmlinux bio_uncopy_user 0x79c40941 +vmlinux bio_unmap_user 0xf1a19ec0 +vmlinux bioset_create 0xb9b704ad +vmlinux bioset_free 0x2f2c32e4 +vmlinux bit_waitqueue 0x6d89d0e3 +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0x82c5c435 +vmlinux blk_alloc_queue_node 0x2658f080 +vmlinux blk_cleanup_queue 0x14130598 +vmlinux blk_complete_barrier_rq 0xd958f557 +vmlinux blk_complete_barrier_rq_locked 0x62a0d80b +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x64864248 +vmlinux blk_end_sync_rq 0xbb934a76 +vmlinux blk_execute_rq 0xb0d21f29 +vmlinux blk_get_backing_dev_info 0x936f16cd +vmlinux blk_get_queue 0x9360c707 +vmlinux blk_get_request 0x56a6fb59 +vmlinux blk_init_queue 0x203ad38c +vmlinux blk_init_queue_node 0xef3a6a4f +vmlinux blk_insert_request 0x998ae68c +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0x6f1b53bf +vmlinux blk_put_request 0x041cac36 +vmlinux blk_queue_activity_fn 0x83cc4173 +vmlinux blk_queue_bounce 0x9f948372 +vmlinux blk_queue_bounce_limit 0xa085f122 +vmlinux blk_queue_dma_alignment 0x1387675a +vmlinux blk_queue_end_tag 0xbb5698c2 +vmlinux blk_queue_find_tag 0x79310a59 +vmlinux blk_queue_free_tags 0x41a2b960 +vmlinux blk_queue_hardsect_size 0xe0cb660c +vmlinux blk_queue_init_tags 0x5d480571 +vmlinux blk_queue_invalidate_tags 0x0437530d +vmlinux blk_queue_issue_flush_fn 0xadde8865 +vmlinux blk_queue_make_request 0x02598bcc +vmlinux blk_queue_max_hw_segments 0xa1b6dfad +vmlinux blk_queue_max_phys_segments 0x157df7b8 +vmlinux blk_queue_max_sectors 0xf39849c3 +vmlinux blk_queue_max_segment_size 0x7e999748 +vmlinux blk_queue_merge_bvec 0x1a11b59e +vmlinux blk_queue_ordered 0x0e395f0e +vmlinux blk_queue_prep_rq 0x3294c7a1 +vmlinux blk_queue_resize_tags 0x16c33315 +vmlinux blk_queue_segment_boundary 0xee097813 +vmlinux blk_queue_stack_limits 0xae84f40b +vmlinux blk_queue_start_tag 0x4526fd8f +vmlinux blk_register_region 0x9dafe9ae +vmlinux blk_remove_plug 0xc151c39e +vmlinux blk_requeue_request 0xc61a28ec +vmlinux blk_rq_bio_prep 0x159ac127 +vmlinux blk_rq_map_kern 0x01a5cb6b +vmlinux blk_rq_map_sg 0xc23c6d5c +vmlinux blk_rq_map_user 0xfa5b5be8 +vmlinux blk_rq_map_user_iov 0x2258a03b +vmlinux blk_rq_unmap_user 0xa29b7f4a +vmlinux blk_run_queue 0x9770c42c +vmlinux blk_start_queue 0xa9c4b163 +vmlinux blk_stop_queue 0x5b03619b +vmlinux blk_sync_queue 0x5f4963ac +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0xdb9fd1ea +vmlinux blkdev_ioctl 0xde7853a3 +vmlinux blkdev_issue_flush 0x83bf6b8f +vmlinux blkdev_put 0xfd40d82a +vmlinux block_all_signals 0x4edd72f7 +vmlinux block_commit_write 0x85481672 +vmlinux block_invalidatepage 0x5d964b86 +vmlinux block_prepare_write 0x8130be1f +vmlinux block_read_full_page 0x78dc0571 +vmlinux block_sync_page 0x36ee75c5 +vmlinux block_truncate_page 0xc5f595e0 +vmlinux block_write_full_page 0xcbf510c1 +vmlinux bmap 0xfe90331d +vmlinux boot_cpu_data 0x0f47f5b5 +vmlinux boot_option_idle_override 0xef9aedfc +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0x708f5211 +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0x525925ad +vmlinux bus_create_file 0x08e9d813 +vmlinux bus_find_device 0x8d95df4b +vmlinux bus_for_each_dev 0x043ce7a9 +vmlinux bus_for_each_drv 0x803e9e65 +vmlinux bus_register 0xaae4639a +vmlinux bus_remove_device 0x8652f970 +vmlinux bus_remove_file 0x5e27b307 +vmlinux bus_rescan_devices 0x99c9042d +vmlinux bus_unregister 0x5ae1c2f3 +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x4d5b49eb +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0xd48a0bbf +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x500916b2 +vmlinux cdev_alloc 0xaa541aa9 +vmlinux cdev_del 0x89cb767e +vmlinux cdev_init 0x6258f1d6 +vmlinux change_page_attr 0x419cc561 +vmlinux check_disk_change 0xc5311c78 +vmlinux class_create 0x3437f089 +vmlinux class_create_file 0x78708ae3 +vmlinux class_destroy 0x47905677 +vmlinux class_device_add 0x08a968fc +vmlinux class_device_create 0x58ab54a3 +vmlinux class_device_create_bin_file 0x834eccb6 +vmlinux class_device_create_file 0x57873cae +vmlinux class_device_del 0x9a52b031 +vmlinux class_device_destroy 0x764e0b31 +vmlinux class_device_get 0x2be3c672 +vmlinux class_device_initialize 0xce6fc55f +vmlinux class_device_put 0xf80ab2ff +vmlinux class_device_register 0x356f9ace +vmlinux class_device_remove_bin_file 0xb760962c +vmlinux class_device_remove_file 0x959a5200 +vmlinux class_device_unregister 0xa6a3ce27 +vmlinux class_get 0xb7d32eb1 +vmlinux class_interface_register 0x2b7e60af +vmlinux class_interface_unregister 0x8a5a07cf +vmlinux class_put 0xcc09270b +vmlinux class_register 0xbb6f58b9 +vmlinux class_remove_file 0x73c4e45a +vmlinux class_unregister 0x57fb48af +vmlinux clear_inode 0x177233ae +vmlinux clear_page 0x3d9ee9f0 +vmlinux clear_page_dirty_for_io 0xb9d0f366 +vmlinux clear_user 0x7aec9089 +vmlinux clip_tbl_hook 0xf195665e +vmlinux close_bdev_excl 0x5fbae128 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0xcaf5516c +vmlinux complete_all 0xef1bc982 +vmlinux complete_and_exit 0x0f167e68 +vmlinux compute_creds 0xb51dde96 +vmlinux con_copy_unimap 0xc319b00a +vmlinux con_set_default_unimap 0x9eb0c3ea +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0x60fa99a7 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0x031ad3aa +vmlinux console_stop 0xbe463561 +vmlinux cont_prepare_write 0x69fa9bb2 +vmlinux copy_from_user 0x945bc6a7 +vmlinux copy_fs_struct 0xf40401e0 +vmlinux copy_in_user 0xf116d4b5 +vmlinux copy_io_context 0x7af34c1d +vmlinux copy_page 0x33b84f74 +vmlinux copy_strings_kernel 0x63a21bdb +vmlinux copy_to_user 0xbe499d81 +vmlinux copy_user_generic 0x21e5679c +vmlinux cpu_callout_map 0x215073d1 +vmlinux cpu_core_map 0xff0700b2 +vmlinux cpu_data 0x75de9530 +vmlinux cpu_idle_wait 0xb53ae573 +vmlinux cpu_khz 0xd6b33026 +vmlinux cpu_online_map 0x20267f8c +vmlinux cpu_pda 0x098f4398 +vmlinux cpu_possible_map 0xd112f981 +vmlinux cpu_present_map 0x16b79c81 +vmlinux cpu_sibling_map 0x82ca1de2 +vmlinux cpu_sysdev_class 0x90510d33 +vmlinux cpu_to_node 0x2e75b744 +vmlinux cpufreq_cpu_get 0x3ed6655d +vmlinux cpufreq_cpu_put 0xc812501d +vmlinux cpufreq_driver_target 0xd5c689b5 +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0xbcf8dc0f +vmlinux cpufreq_gov_performance 0xdf87ea6c +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0xe6488b47 +vmlinux cpufreq_parse_governor 0x5de7f37b +vmlinux cpufreq_register_driver 0x9e925624 +vmlinux cpufreq_register_governor 0xbee6e711 +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0x7e8f6774 +vmlinux cpufreq_unregister_driver 0xad78f46b +vmlinux cpufreq_unregister_governor 0xebc37ca0 +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0xc09651d9 +vmlinux crc32_le 0x92ea4ae4 +vmlinux create_empty_buffers 0x213a26d4 +vmlinux create_proc_entry 0xc6101da8 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0x6e05db90 +vmlinux crypto_free_tfm 0x85c2a376 +vmlinux crypto_hmac 0xe7034001 +vmlinux crypto_hmac_final 0x75b90af5 +vmlinux crypto_hmac_init 0xec6e2cdd +vmlinux crypto_hmac_update 0x68c0e2d5 +vmlinux crypto_register_alg 0xfff02c97 +vmlinux crypto_unregister_alg 0x58776db3 +vmlinux csum_ipv6_magic 0xd79301a3 +vmlinux csum_partial 0xf1e29eae +vmlinux csum_partial_copy_from_user 0x7cf86690 +vmlinux csum_partial_copy_fromiovecend 0x883c8eca +vmlinux csum_partial_copy_nocheck 0xa2963be1 +vmlinux csum_partial_copy_to_user 0xeb7268d1 +vmlinux current_fs_time 0x4fe9de59 +vmlinux current_io_context 0xd2ca84a5 +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0x0a4f7428 +vmlinux d_alloc_anon 0xd7c8a55d +vmlinux d_alloc_name 0xe52d8b62 +vmlinux d_alloc_root 0xe11c837b +vmlinux d_delete 0x9dbb4677 +vmlinux d_find_alias 0xb53dcfbc +vmlinux d_genocide 0xa7457522 +vmlinux d_instantiate 0x9705f5ef +vmlinux d_instantiate_unique 0x58f1923b +vmlinux d_invalidate 0x5538d234 +vmlinux d_lookup 0x8955e84c +vmlinux d_move 0x2fcdb759 +vmlinux d_path 0x34a05dff +vmlinux d_prune_aliases 0xa8550787 +vmlinux d_rehash 0x3200b223 +vmlinux d_splice_alias 0x9743ec19 +vmlinux d_validate 0xfee2624d +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0xa4ba20bb +vmlinux dcache_dir_close 0x301bcc15 +vmlinux dcache_dir_lseek 0xffc1b549 +vmlinux dcache_dir_open 0xb795686b +vmlinux dcache_lock 0x9c4fb5fb +vmlinux dcache_readdir 0x59422155 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0x6fe234fb +vmlinux default_backing_dev_info 0x3002519d +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0x86ae43bf +vmlinux default_llseek 0xe127b9a3 +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0xcc7c5a80 +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0xff2bf1b3 +vmlinux del_timer 0x9b1622fc +vmlinux del_timer_sync 0xcf58e6f3 +vmlinux dentry_open 0x3109b160 +vmlinux dentry_unhash 0x97b8dcba +vmlinux dequeue_signal 0x901406da +vmlinux deregister_atm_ioctl 0x9f31fde1 +vmlinux destroy_8023_client 0x78ab1664 +vmlinux destroy_EII_client 0xb805cb57 +vmlinux destroy_workqueue 0xdf5ea9ef +vmlinux dev_add_pack 0xc53abc9e +vmlinux dev_alloc_name 0xc7c79570 +vmlinux dev_base 0xf920bae2 +vmlinux dev_base_lock 0xcbc6fc20 +vmlinux dev_change_flags 0x97736ff2 +vmlinux dev_close 0xb83f9e6a +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0xc9bd45df +vmlinux dev_get_by_index 0xf6c835dd +vmlinux dev_get_by_name 0x5a1dc1d1 +vmlinux dev_get_flags 0x026c9eec +vmlinux dev_getbyhwaddr 0x1dd3b038 +vmlinux dev_getfirstbyhwtype 0x5cac10c6 +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0x4eaed21a +vmlinux dev_mc_delete 0x2d77c8cc +vmlinux dev_mc_upload 0xa23f38ce +vmlinux dev_open 0x4f29f278 +vmlinux dev_queue_xmit 0xbc6fc51d +vmlinux dev_remove_pack 0x037cde5f +vmlinux dev_set_allmulti 0x1453b4e9 +vmlinux dev_set_mac_address 0xedd8f258 +vmlinux dev_set_mtu 0x10adc81f +vmlinux dev_set_promiscuity 0x7dba9291 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0xce35f74a +vmlinux device_attach 0x9cf9d4af +vmlinux device_bind_driver 0x73723a8d +vmlinux device_create_file 0x78cce648 +vmlinux device_del 0xc6d67015 +vmlinux device_for_each_child 0x4ed15a39 +vmlinux device_initialize 0x86370a03 +vmlinux device_pm_set_parent 0xd7f49c42 +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0x3052e379 +vmlinux device_release_driver 0xd324d899 +vmlinux device_remove_file 0x45a810d1 +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0x07566657 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0xd1baffb9 +vmlinux die_chain 0x492a6534 +vmlinux disable_hlt 0x794487ee +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disable_timer_nmi_watchdog 0xf2fb62ee +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_alloc_coherent 0x9bdaeb30 +vmlinux dma_free_coherent 0xb3b1a957 +vmlinux dma_get_required_mask 0xce9bffb1 +vmlinux dma_ops 0x3f720a1e +vmlinux dma_pool_alloc 0x249078e6 +vmlinux dma_pool_create 0xd00b7bc8 +vmlinux dma_pool_destroy 0x9551bbdd +vmlinux dma_pool_free 0xdeadb281 +vmlinux dma_set_mask 0x575c0df0 +vmlinux dma_spin_lock 0xfedbb44a +vmlinux dma_supported 0xd77ef479 +vmlinux dnotify_parent 0x395aef18 +vmlinux do_SAK 0xebf89a5f +vmlinux do_add_mount 0x9535a1f2 +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0x14011966 +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0xfbbd5ef1 +vmlinux do_mmap_pgoff 0xa5323aff +vmlinux do_munmap 0x4c9a99ae +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x023ed34c +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0x27cbbea7 +vmlinux do_softirq_thunk 0xfd0315f0 +vmlinux do_sync_read 0x180f8f7b +vmlinux do_sync_write 0xc4927455 +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0x7307cfd7 +vmlinux dput 0xb3bb9078 +vmlinux dq_data_lock 0xcd948d98 +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x50703435 +vmlinux dquot_alloc_inode 0x7ad8ef82 +vmlinux dquot_alloc_space 0x9058d84e +vmlinux dquot_commit 0xd76e22a6 +vmlinux dquot_commit_info 0x4d613b0c +vmlinux dquot_drop 0x165ec46b +vmlinux dquot_free_inode 0x401c8807 +vmlinux dquot_free_space 0xd8b1fb35 +vmlinux dquot_initialize 0x05a3b9c4 +vmlinux dquot_mark_dquot_dirty 0x583c99c8 +vmlinux dquot_release 0x5b4266de +vmlinux dquot_transfer 0xeb54cc63 +vmlinux drive_info 0x744aa133 +vmlinux drive_is_ready 0xcfdf68ed +vmlinux driver_attach 0xf6c70651 +vmlinux driver_create_file 0x6035108f +vmlinux driver_find 0xe2bb8151 +vmlinux driver_find_device 0xfed40f8c +vmlinux driver_for_each_device 0x913070df +vmlinux driver_register 0xc6e884ed +vmlinux driver_remove_file 0xb75d2895 +vmlinux driver_unregister 0x5ccc154b +vmlinux drop_super 0x82f13f03 +vmlinux dst_alloc 0x262f7b19 +vmlinux dst_destroy 0xbbd6754d +vmlinux dump_stack 0x6b2dc060 +vmlinux ec_read 0xba2d8594 +vmlinux ec_write 0x876dafc3 +vmlinux eighty_ninty_three 0x61e26357 +vmlinux elevator_exit 0x87c11004 +vmlinux elevator_init 0x98544ea7 +vmlinux elv_add_request 0x38ae0f8d +vmlinux elv_completed_request 0x4ea81b5e +vmlinux elv_dequeue_request 0x7ba5f39e +vmlinux elv_dispatch_sort 0x541b9473 +vmlinux elv_next_request 0xf439bf01 +vmlinux elv_queue_empty 0x80edc79f +vmlinux elv_register 0xee1b8187 +vmlinux elv_requeue_request 0x80e5f5f8 +vmlinux elv_rq_merge_ok 0xf30c672b +vmlinux elv_try_merge 0x0a458010 +vmlinux elv_unregister 0x9512bfcd +vmlinux emergency_restart 0xd0c05159 +vmlinux empty_zero_page 0xc2c8ec85 +vmlinux enable_hlt 0x9c7077bd +vmlinux enable_irq 0xfcec0987 +vmlinux enable_timer_nmi_watchdog 0x13f54343 +vmlinux end_buffer_async_write 0x4a035f29 +vmlinux end_buffer_read_sync 0x8b6921fa +vmlinux end_buffer_write_sync 0x047daf5b +vmlinux end_page_writeback 0x912f0c54 +vmlinux end_pfn 0xefe8e01c +vmlinux end_request 0x3a086b6d +vmlinux end_that_request_chunk 0x282fe636 +vmlinux end_that_request_first 0x2f603057 +vmlinux end_that_request_last 0x7766b2bd +vmlinux eth_type_trans 0x758c6539 +vmlinux ether_setup 0x77fd4847 +vmlinux ethtool_op_get_link 0xd9681c9f +vmlinux ethtool_op_get_perm_addr 0x282ed18c +vmlinux ethtool_op_get_sg 0xf26f68d0 +vmlinux ethtool_op_get_tso 0x945b919f +vmlinux ethtool_op_get_tx_csum 0x951669e0 +vmlinux ethtool_op_get_ufo 0x07a399ab +vmlinux ethtool_op_set_sg 0x97ebe5fb +vmlinux ethtool_op_set_tso 0x4c79bd98 +vmlinux ethtool_op_set_tx_csum 0xef1ecd9a +vmlinux ethtool_op_set_tx_hw_csum 0x0ca0807e +vmlinux ethtool_op_set_ufo 0x227575ae +vmlinux exit_fs 0xaeeb2118 +vmlinux f_setown 0x0840fcc4 +vmlinux fasync_helper 0x83264172 +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x5a8f5903 +vmlinux fb_con_duit 0x55ae9e08 +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0x5f09f731 +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0x1ee6efed +vmlinux fb_get_buffer_offset 0x0199c346 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0x087c6ec8 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0xc8ff8e4a +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0x10d2b48a +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x52679549 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0x22ba496b +vmlinux fb_set_suspend 0xf9b6970a +vmlinux fb_set_var 0x75b7659d +vmlinux fb_show_logo 0x4e751b1d +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0xef904975 +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fd_install 0x7f483b36 +vmlinux fddi_type_trans 0x692bffee +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x06105b74 +vmlinux file_fsync 0x1c53e69e +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0x07f1ac8e +vmlinux filemap_fdatawait 0x95c38755 +vmlinux filemap_fdatawrite 0x367a8088 +vmlinux filemap_flush 0x1292d5b2 +vmlinux filemap_nopage 0xbf2ce075 +vmlinux filemap_populate 0x00ac069a +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0x7ddc5541 +vmlinux filp_open 0x9782c65a +vmlinux find_bus 0x898fa70c +vmlinux find_first_bit 0x2274556d +vmlinux find_first_zero_bit 0xb3d2bf12 +vmlinux find_get_page 0xdfe9d007 +vmlinux find_inode_number 0x60394feb +vmlinux find_lock_page 0xa0daf065 +vmlinux find_next_bit 0x44809893 +vmlinux find_next_zero_bit 0x699ce795 +vmlinux find_next_zero_string 0x9e6fe266 +vmlinux find_or_create_page 0xa76533d6 +vmlinux find_task_by_pid_type 0xdec99236 +vmlinux find_trylock_page 0xd832e771 +vmlinux find_vma 0xaed357ab +vmlinux finish_wait 0x8bc0ef5c +vmlinux firmware_register 0xedce2f86 +vmlinux firmware_unregister 0xe2b7c972 +vmlinux flock_lock_file_wait 0xdc09321b +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_old_exec 0x64178e89 +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x21c37411 +vmlinux flush_tlb_page 0x074fc55b +vmlinux flush_workqueue 0xcaebc52a +vmlinux follow_down 0x3a8e1888 +vmlinux follow_up 0x02c935d5 +vmlinux force_sig 0x3c07b2dd +vmlinux fput 0xb0db20c4 +vmlinux framebuffer_alloc 0x6185c2f2 +vmlinux framebuffer_release 0x8c268ff9 +vmlinux free_buffer_head 0x720b52ad +vmlinux free_dma 0x72b243d4 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0xac45e4cb +vmlinux free_pages 0x4302d0eb +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0x13119e34 +vmlinux freeze_bdev 0xc8c3e01b +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0xd200a119 +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0xcc16aa57 +vmlinux gen_replace_estimator 0x11cc7fd8 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x37e92a58 +vmlinux generic_block_bmap 0x64dd4050 +vmlinux generic_commit_write 0xed043d95 +vmlinux generic_cont_expand 0x7c8cbb20 +vmlinux generic_delete_inode 0xd238e4b5 +vmlinux generic_drop_inode 0x15f68a02 +vmlinux generic_file_aio_read 0x7e260020 +vmlinux generic_file_aio_write 0xa105fffb +vmlinux generic_file_aio_write_nolock 0xe9a887f6 +vmlinux generic_file_buffered_write 0x792b02ca +vmlinux generic_file_direct_write 0xf574c70e +vmlinux generic_file_llseek 0x5773d0e8 +vmlinux generic_file_mmap 0x0bad3ad1 +vmlinux generic_file_open 0x72ca7d23 +vmlinux generic_file_read 0x11e88cf3 +vmlinux generic_file_readonly_mmap 0x81e189d8 +vmlinux generic_file_readv 0xf119c434 +vmlinux generic_file_sendfile 0xb1f49422 +vmlinux generic_file_write 0x8f8451a4 +vmlinux generic_file_write_nolock 0x8b4570c8 +vmlinux generic_file_writev 0xe47f9c1d +vmlinux generic_fillattr 0xfe247fd8 +vmlinux generic_getxattr 0xf3462ac0 +vmlinux generic_ide_ioctl 0x1213549f +vmlinux generic_listxattr 0xa2611e1e +vmlinux generic_make_request 0x0322fbff +vmlinux generic_osync_inode 0x11e6968b +vmlinux generic_permission 0x1c8e5ca7 +vmlinux generic_read_dir 0x0f5087ed +vmlinux generic_readlink 0x635fe5a6 +vmlinux generic_removexattr 0xca99a183 +vmlinux generic_ro_fops 0xe8b1abb0 +vmlinux generic_setxattr 0xbde6086c +vmlinux generic_shutdown_super 0x2a484317 +vmlinux generic_unplug_device 0x3c63c891 +vmlinux generic_write_checks 0x201581ca +vmlinux genl_register_family 0x50debf9c +vmlinux genl_register_ops 0xbf5bccb6 +vmlinux genl_sock 0x349b033c +vmlinux genl_unregister_family 0xc2eca49c +vmlinux genl_unregister_ops 0x271dc0cc +vmlinux get_agp_version 0x5e208c18 +vmlinux get_bus 0x93559730 +vmlinux get_cmos_time 0xb31ddfb4 +vmlinux get_cpu_sysdev 0xd4e3e187 +vmlinux get_dcookie 0x4fac4a82 +vmlinux get_device 0xef73d3e2 +vmlinux get_disk 0x98b4f391 +vmlinux get_driver 0x18f4839b +vmlinux get_empty_filp 0xbecb060c +vmlinux get_fs_type 0x54aeba33 +vmlinux get_io_context 0x368cfdc3 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0x7b0cefc1 +vmlinux get_sb_nodev 0xbbbb610d +vmlinux get_sb_pseudo 0x1257e0f0 +vmlinux get_sb_single 0x132744bd +vmlinux get_super 0x1d748eb8 +vmlinux get_task_mm 0x393038e0 +vmlinux get_unmapped_area 0x7155498e +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x56177784 +vmlinux get_wchan 0xcc53ef63 +vmlinux get_write_access 0xe9409cad +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x7298d653 +vmlinux global_cache_flush 0xa4d4f0e6 +vmlinux global_flush_tlb 0x3167ea19 +vmlinux gnet_stats_copy_app 0x438635a3 +vmlinux gnet_stats_copy_basic 0xb8dd1da3 +vmlinux gnet_stats_copy_queue 0x68fc5dd7 +vmlinux gnet_stats_copy_rate_est 0xb8e57f47 +vmlinux gnet_stats_finish_copy 0xaa818a86 +vmlinux gnet_stats_start_copy 0x4d58382c +vmlinux gnet_stats_start_copy_compat 0x589ef3f7 +vmlinux grab_cache_page_nowait 0xcb576d9a +vmlinux groups_alloc 0xda9f6355 +vmlinux groups_free 0x41ac4793 +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0x2e9b8d1c +vmlinux have_submounts 0x5bf26d41 +vmlinux high_memory 0x8a7d1c31 +vmlinux hippi_type_trans 0x2d63f142 +vmlinux hpet_alloc 0x686f1325 +vmlinux hpet_control 0x1de314f3 +vmlinux hpet_register 0x741f1f6e +vmlinux hpet_unregister 0x63dfe1b4 +vmlinux hwmon_device_register 0x6a0b25a3 +vmlinux hwmon_device_unregister 0x143108a0 +vmlinux ia32_setup_arg_pages 0xd214e787 +vmlinux ia32_sys_call_table 0x3cf4209c +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x4ef8c371 +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_acpi_exec_tfs 0x7897aa8a +vmlinux ide_acpi_get_timing 0x07cfa340 +vmlinux ide_acpi_init 0xb771e2fa +vmlinux ide_acpi_push_timing 0xe7f43f30 +vmlinux ide_add_setting 0x21a8772f +vmlinux ide_build_dmatable 0xc7c8bcd6 +vmlinux ide_build_sglist 0x0bb3b977 +vmlinux ide_bus_type 0x26eeb9e1 +vmlinux ide_config_drive_speed 0xe9c00ed1 +vmlinux ide_destroy_dmatable 0xd0d422cc +vmlinux ide_dma_enable 0xd649b733 +vmlinux ide_dma_intr 0xa1118135 +vmlinux ide_dma_setup 0x0c36cf7c +vmlinux ide_dma_speed 0xb7b8c89f +vmlinux ide_dma_start 0x3ebc7e7d +vmlinux ide_dma_verbose 0x58c19d49 +vmlinux ide_do_drive_cmd 0x1127538f +vmlinux ide_do_reset 0xfea0fc3b +vmlinux ide_dump_status 0x6ed78d5f +vmlinux ide_end_drive_cmd 0xbe1144bb +vmlinux ide_end_request 0xc4809931 +vmlinux ide_error 0x64719c9c +vmlinux ide_execute_command 0x9ca3882c +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x94e67035 +vmlinux ide_get_error_location 0xf20957d2 +vmlinux ide_hwifs 0x152c37c8 +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0xa9f26da8 +vmlinux ide_init_drive_cmd 0x64d55f76 +vmlinux ide_init_sg_cmd 0x575dcd7f +vmlinux ide_lock 0xb2e7506b +vmlinux ide_map_sg 0xb7f292da +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x3c9a5245 +vmlinux ide_pci_unregister_driver 0x4336f3b4 +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0x7cf8ba10 +vmlinux ide_register_hw 0x6c879b23 +vmlinux ide_register_hw_with_fixup 0x5ff3308c +vmlinux ide_register_region 0xc79c3edb +vmlinux ide_register_subdriver 0x65cfd921 +vmlinux ide_set_handler 0xa669273d +vmlinux ide_set_xfer_rate 0xb9f294ff +vmlinux ide_setup_dma 0x26863bb2 +vmlinux ide_setup_pci_device 0x1bc44c06 +vmlinux ide_setup_pci_devices 0xbe359f50 +vmlinux ide_setup_pci_noise 0xebe89338 +vmlinux ide_spin_wait_hwgroup 0xffa59d97 +vmlinux ide_stall_queue 0xb94c827d +vmlinux ide_undecoded_slave 0x1928d0c7 +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0xa54d0154 +vmlinux ide_unregister_subdriver 0xce770159 +vmlinux ide_use_dma 0x6e15740c +vmlinux ide_wait_not_busy 0x318fce54 +vmlinux ide_wait_stat 0x2ec0979c +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0xa45faea7 +vmlinux idr_find 0x9ee01363 +vmlinux idr_get_new 0x4e4e7628 +vmlinux idr_get_new_above 0x7ad6c0fa +vmlinux idr_init 0x4baa35f2 +vmlinux idr_pre_get 0x18cab6cd +vmlinux idr_remove 0x0e54a306 +vmlinux iget5_locked 0x30ae64bc +vmlinux iget_locked 0xc9e1607c +vmlinux igrab 0x045df9df +vmlinux ilookup 0xab2d1015 +vmlinux ilookup5 0x0c1e148b +vmlinux ilookup5_nowait 0x72fd1789 +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0x486b46f2 +vmlinux in_egroup_p 0x42a4bdf2 +vmlinux in_group_p 0x31ebadcd +vmlinux in_lock_functions 0x09d44df9 +vmlinux inet6_lookup 0xf68dd2b5 +vmlinux inet6_lookup_listener 0x637baa9d +vmlinux inet_accept 0x179fded2 +vmlinux inet_add_protocol 0x2ff2ccf3 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0x7858903d +vmlinux inet_bind_bucket_create 0x1c6cfb8c +vmlinux inet_bind_hash 0x3931aa79 +vmlinux inet_csk_accept 0x107b1ae5 +vmlinux inet_csk_clear_xmit_timers 0xa4a99da7 +vmlinux inet_csk_clone 0x53bc2ebb +vmlinux inet_csk_delete_keepalive_timer 0x191930e2 +vmlinux inet_csk_destroy_sock 0x45886039 +vmlinux inet_csk_get_port 0x17f783ef +vmlinux inet_csk_init_xmit_timers 0x2ce92760 +vmlinux inet_csk_listen_start 0x96219f2f +vmlinux inet_csk_listen_stop 0xfd6a4862 +vmlinux inet_csk_reqsk_queue_hash_add 0x93595e21 +vmlinux inet_csk_reqsk_queue_prune 0x680fb3cc +vmlinux inet_csk_reset_keepalive_timer 0x53c91e4a +vmlinux inet_csk_route_req 0x485f862e +vmlinux inet_csk_search_req 0x48804af3 +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0xdf9489c2 +vmlinux inet_dgram_connect 0x23403ac6 +vmlinux inet_dgram_ops 0x4b55a995 +vmlinux inet_diag_register 0xd90e74c4 +vmlinux inet_diag_unregister 0xe1671007 +vmlinux inet_getname 0x0e83767f +vmlinux inet_ioctl 0x48c2e8c2 +vmlinux inet_listen 0xe1607537 +vmlinux inet_listen_wlock 0x7c56aabd +vmlinux inet_put_port 0x90b27a10 +vmlinux inet_register_protosw 0x9918e004 +vmlinux inet_release 0x98c48ee9 +vmlinux inet_select_addr 0x45b8e687 +vmlinux inet_sendmsg 0x18f87c4d +vmlinux inet_shutdown 0x1695b71f +vmlinux inet_sk_rebuild_header 0x91ddd649 +vmlinux inet_sock_destruct 0x5ba01024 +vmlinux inet_stream_connect 0x721f0bcb +vmlinux inet_stream_ops 0x12c59b2d +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0xc64bcc92 +vmlinux inet_twsk_deschedule 0x7b11003e +vmlinux inet_twsk_schedule 0xe0499c48 +vmlinux inet_unregister_protosw 0x20fc3a28 +vmlinux inetdev_by_index 0xac307192 +vmlinux init_buffer 0x5384fdff +vmlinux init_level4_pgt 0x95e0a76b +vmlinux init_mm 0xae8ee606 +vmlinux init_rwsem 0x43bd96e0 +vmlinux init_special_inode 0x0702d947 +vmlinux init_task 0x67131586 +vmlinux init_timer 0x9c02700d +vmlinux inode_add_bytes 0xda0aa85b +vmlinux inode_change_ok 0x3a38c721 +vmlinux inode_get_bytes 0x9f0ae662 +vmlinux inode_init_once 0xedac572a +vmlinux inode_needs_sync 0x98ebd4e1 +vmlinux inode_set_bytes 0xf520bd7c +vmlinux inode_setattr 0x8130ed09 +vmlinux inode_sub_bytes 0x72ef870b +vmlinux inode_update_time 0xb3737f77 +vmlinux inotify_dentry_parent_queue_event 0x5eef5900 +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0x2a7daaa9 +vmlinux inotify_inode_queue_event 0x20eff7ef +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0xbb78bee6 +vmlinux input_allocate_device 0xcf74627a +vmlinux input_class 0x8f5f2b96 +vmlinux input_close_device 0x28346f77 +vmlinux input_event 0x9c8a95f7 +vmlinux input_flush_device 0x90b76bbe +vmlinux input_grab_device 0x23bee072 +vmlinux input_open_device 0x733a882c +vmlinux input_register_device 0xeca9f039 +vmlinux input_register_handler 0x38b67e45 +vmlinux input_release_device 0x103ff0ec +vmlinux input_unregister_device 0xfaef0bcf +vmlinux input_unregister_handler 0x3285273a +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0x345babbd +vmlinux int_sqrt 0xb678366f +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x19f7d1a0 +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0x50719384 +vmlinux interruptible_sleep_on_timeout 0xf57cb5c1 +vmlinux invalidate_bdev 0x7149dbfa +vmlinux invalidate_inode_pages 0xdff47163 +vmlinux invalidate_inode_pages2 0x1cc5b468 +vmlinux invalidate_inode_pages2_range 0x473eadb3 +vmlinux invalidate_inodes 0x49b55f32 +vmlinux invalidate_partition 0x36ba22d0 +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0x3e7966b3 +vmlinux iomem_resource 0x9efed5af +vmlinux iommu_bio_merge 0xaf52c2d3 +vmlinux iommu_merge 0x634cd7ee +vmlinux iommu_sac_force 0xac37dfec +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0xc5534d64 +vmlinux ioread16_rep 0x5857b225 +vmlinux ioread16be 0xf065f629 +vmlinux ioread32 0xe484e35f +vmlinux ioread32_rep 0x3f0546a8 +vmlinux ioread32be 0xfdb9b629 +vmlinux ioread8 0xf10de535 +vmlinux ioread8_rep 0xf441ac43 +vmlinux ioremap_nocache 0x3762cb6e +vmlinux iounmap 0xedc03953 +vmlinux iov_shorten 0x92392cd9 +vmlinux iowrite16 0x8c183cbe +vmlinux iowrite16_rep 0x8cc79cab +vmlinux iowrite16be 0x69a0ca7d +vmlinux iowrite32 0x436c2179 +vmlinux iowrite32_rep 0xbfc177bc +vmlinux iowrite32be 0x6acb973d +vmlinux iowrite8 0x0727c4f3 +vmlinux iowrite8_rep 0xa4b94fea +vmlinux ip4_datagram_connect 0x2f9ca635 +vmlinux ip_build_and_send_pkt 0x3453b881 +vmlinux ip_cmsg_recv 0x4d79dce5 +vmlinux ip_compute_csum 0xe5e298ea +vmlinux ip_ct_attach 0x319b87bb +vmlinux ip_defrag 0xbe10f7f7 +vmlinux ip_fragment 0x30cbe647 +vmlinux ip_generic_getfrag 0x3fee3cc9 +vmlinux ip_getsockopt 0x734723f2 +vmlinux ip_mc_dec_group 0x57e90ddd +vmlinux ip_mc_inc_group 0xff8f77d6 +vmlinux ip_mc_join_group 0x856f1add +vmlinux ip_queue_xmit 0xf2755652 +vmlinux ip_route_input 0x24e22946 +vmlinux ip_route_me_harder 0x86a14638 +vmlinux ip_route_output_flow 0x9f77ee63 +vmlinux ip_route_output_key 0x68d4fe9d +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0xa37b7441 +vmlinux ip_setsockopt 0xe24f7f6a +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0xf3e52886 +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0x5a036623 +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0x05639d9f +vmlinux is_bad_inode 0xb66e2119 +vmlinux is_console_locked 0x944a564d +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux iunique 0x519a3fb7 +vmlinux iw_handler_get_spy 0x88cac05c +vmlinux iw_handler_get_thrspy 0x81d3020e +vmlinux iw_handler_set_spy 0xd61bff9a +vmlinux iw_handler_set_thrspy 0xbdfb20dc +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x549546f4 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0x478f3447 +vmlinux kernel_recvmsg 0xc45f8af3 +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0x377941b2 +vmlinux kernel_subsys 0x1f051bb8 +vmlinux kernel_thread 0x7ca341af +vmlinux key_alloc 0xc1464a22 +vmlinux key_create_or_update 0x550f044e +vmlinux key_instantiate_and_link 0xcb293155 +vmlinux key_link 0x49a74aa4 +vmlinux key_negate_and_link 0x49577c7d +vmlinux key_payload_reserve 0xbb3a3325 +vmlinux key_put 0x547dd8ea +vmlinux key_revoke 0x4107cbbe +vmlinux key_task_permission 0xe1fb8019 +vmlinux key_type_user 0x71a9140b +vmlinux key_unlink 0x7b8df84a +vmlinux key_update 0x95ceb864 +vmlinux key_validate 0x140dfb83 +vmlinux keyring_clear 0x438b2a41 +vmlinux keyring_search 0x37fc3c65 +vmlinux kfifo_alloc 0xc0fe22d7 +vmlinux kfifo_free 0xe1837904 +vmlinux kfifo_init 0x35b3ef67 +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0xfd678e59 +vmlinux kill_anon_super 0x6f30164f +vmlinux kill_block_super 0xbd8f4d14 +vmlinux kill_fasync 0xbee2fd00 +vmlinux kill_litter_super 0x53694a1f +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xf679e5b3 +vmlinux klist_add_head 0xf6466d8d +vmlinux klist_add_tail 0x475fa23b +vmlinux klist_del 0x6d53788c +vmlinux klist_init 0xaeaa2d96 +vmlinux klist_iter_exit 0x89233c35 +vmlinux klist_iter_init 0xbd66c03e +vmlinux klist_iter_init_node 0x7af9ca0d +vmlinux klist_next 0x96a3499c +vmlinux klist_node_attached 0xa5a3f1c3 +vmlinux klist_remove 0xb876b119 +vmlinux km_new_mapping 0x65de94ae +vmlinux km_policy_notify 0x868ae496 +vmlinux km_state_notify 0xd3d6ce92 +vmlinux km_waitq 0xcf8432ef +vmlinux kmalloc_node 0xce0123e0 +vmlinux kmem_cache_alloc 0xc5f4b33d +vmlinux kmem_cache_alloc_node 0x615170e6 +vmlinux kmem_cache_create 0x3726b40d +vmlinux kmem_cache_destroy 0x5bbe38ff +vmlinux kmem_cache_free 0xf6888edf +vmlinux kmem_cache_name 0xb9bfcfc7 +vmlinux kmem_cache_shrink 0x6b551324 +vmlinux kmem_cache_size 0x323a2576 +vmlinux kmem_find_general_cachep 0xd11777e5 +vmlinux kobject_add 0x5a45a0c0 +vmlinux kobject_del 0x67a55a3a +vmlinux kobject_get 0x55271264 +vmlinux kobject_hotplug 0x8da4025d +vmlinux kobject_init 0xee3a3e19 +vmlinux kobject_put 0xbbf6f620 +vmlinux kobject_register 0x3e9ec53d +vmlinux kobject_set_name 0xfb20ef5e +vmlinux kobject_uevent 0x3e666019 +vmlinux kobject_uevent_atomic 0x9b469c09 +vmlinux kobject_unregister 0x7e1fd65a +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x377d2192 +vmlinux kset_register 0x56110f93 +vmlinux kset_unregister 0x228470cc +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x935b8a19 +vmlinux kthread_create 0xb7a07c44 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0x4d01529c +vmlinux kthread_stop_sem 0xd9c670d3 +vmlinux kzalloc 0x5a3b6eca +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0x549f4cdb +vmlinux lease_modify 0x50f1bbff +vmlinux linkwatch_fire_event 0x46d1bece +vmlinux ll_rw_block 0x459d1248 +vmlinux llc_add_pack 0x9673d8b5 +vmlinux llc_build_and_send_ui_pkt 0x3b683f98 +vmlinux llc_mac_hdr_init 0x2bce0126 +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0xfb6856e7 +vmlinux llc_sap_find 0x3175205a +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0xd6a44e66 +vmlinux llc_sap_open 0x971db08a +vmlinux llc_set_station_handler 0x00d5b1d0 +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_gs_index 0xc79e571d +vmlinux load_nls 0xb3bd42e2 +vmlinux load_nls_default 0xea2309f4 +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_cpu_hotplug 0xba813bd6 +vmlinux lock_cpu_hotplug_interruptible 0xdd7ee0f9 +vmlinux lock_kernel 0x3656bf5a +vmlinux lock_may_read 0x99c21e6a +vmlinux lock_may_write 0xed2fb557 +vmlinux lock_rename 0x4c7029b9 +vmlinux lock_sock 0x84d190f9 +vmlinux locks_copy_lock 0xb1b50658 +vmlinux locks_init_lock 0xdd91fec2 +vmlinux locks_mandatory_area 0x186e43b2 +vmlinux locks_remove_posix 0xba2c86b8 +vmlinux lookup_create 0x905d962c +vmlinux lookup_hash 0x442f0423 +vmlinux lookup_instantiate_filp 0xc9df17da +vmlinux lookup_one_len 0x8b6300de +vmlinux loopback_dev 0xddb1c33c +vmlinux loops_per_jiffy 0xba497f13 +vmlinux make_8023_client 0xd2ac5587 +vmlinux make_EII_client 0x9c3f128b +vmlinux make_bad_inode 0x6f89a223 +vmlinux malloc_sizes 0xb0a67814 +vmlinux map_page_into_agp 0xe940bef0 +vmlinux mapping_tagged 0x2468d9dd +vmlinux mark_buffer_async_write 0x11e7e17c +vmlinux mark_buffer_dirty 0xb4044b1a +vmlinux mark_buffer_dirty_inode 0xb2f14b8c +vmlinux mark_info_dirty 0xb189afc5 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x29a34ee1 +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_cstate 0x93805374 +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0x9a8838dc +vmlinux may_umount_tree 0x7fff72c2 +vmlinux mb_cache_create 0x738e8f9e +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0x20902016 +vmlinux mb_cache_entry_find_first 0x54d2aa31 +vmlinux mb_cache_entry_find_next 0xd793c002 +vmlinux mb_cache_entry_free 0xa9002434 +vmlinux mb_cache_entry_get 0xe19f68ba +vmlinux mb_cache_entry_insert 0x1c889119 +vmlinux mb_cache_entry_release 0xb0ae73cc +vmlinux mb_cache_shrink 0x9b0765c9 +vmlinux memchr 0xc740c64a +vmlinux memcmp 0x2fa5a500 +vmlinux memcpy 0x6067a146 +vmlinux memcpy_fromiovec 0x36139a51 +vmlinux memcpy_fromiovecend 0x9bc565c5 +vmlinux memcpy_toiovec 0x2876a6d3 +vmlinux memmove 0xa3a5be95 +vmlinux memnode_shift 0x676c5f99 +vmlinux memnodemap 0x56d452a0 +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0x3d84bcc6 +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0xaaa24b26 +vmlinux mempool_create_node 0xd01c94ac +vmlinux mempool_destroy 0x794a03ee +vmlinux mempool_free 0x7f42aeb6 +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x68d1b773 +vmlinux memscan 0x9c0ea3cd +vmlinux memset 0x3fa03a97 +vmlinux memset_io 0x4327f0d5 +vmlinux misc_deregister 0x62e7a38c +vmlinux misc_register 0x1818e645 +vmlinux mmput 0x1ea64765 +vmlinux mnt_pin 0xeb655766 +vmlinux mnt_unpin 0x0a83dbb5 +vmlinux mntput_no_expire 0x34d77a33 +vmlinux mod_reg_security 0xfda5833c +vmlinux mod_timer 0xda6bb4ad +vmlinux mod_unreg_security 0x926d490e +vmlinux module_add_driver 0x486a201c +vmlinux module_refcount 0x5f8b37d9 +vmlinux module_remove_driver 0x3d596227 +vmlinux monotonic_clock 0x9669ecc8 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0x266e145c +vmlinux mpage_readpages 0x61df67c0 +vmlinux mpage_writepage 0x1e50398c +vmlinux mpage_writepages 0xbb33b7ac +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux mtrr_add 0x56179c5f +vmlinux mtrr_del 0x272d394e +vmlinux multipath_alg_register 0x35b20eef +vmlinux multipath_alg_unregister 0xd1017c53 +vmlinux n_tty_ioctl 0x48a9e364 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0xe8b56a09 +vmlinux neigh_changeaddr 0x82d8fec6 +vmlinux neigh_compat_output 0x1b34906d +vmlinux neigh_connected_output 0xb2370b4e +vmlinux neigh_create 0xcc9e2fb8 +vmlinux neigh_delete 0x1d057708 +vmlinux neigh_destroy 0x384211fb +vmlinux neigh_dump_info 0x2a394bf4 +vmlinux neigh_event_ns 0xd5de6d8c +vmlinux neigh_for_each 0x24cf1262 +vmlinux neigh_ifdown 0xdad69a32 +vmlinux neigh_lookup 0xc570f4fd +vmlinux neigh_lookup_nodev 0x7ff523d1 +vmlinux neigh_parms_alloc 0xac22269f +vmlinux neigh_parms_release 0x5f32b404 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0xf5daed5c +vmlinux neigh_seq_next 0x0e4059f3 +vmlinux neigh_seq_start 0x4c187737 +vmlinux neigh_seq_stop 0xffa7ddaa +vmlinux neigh_sysctl_register 0x0a0bf5f6 +vmlinux neigh_sysctl_unregister 0xaa2a923b +vmlinux neigh_table_clear 0x54069a00 +vmlinux neigh_table_init 0x2b755484 +vmlinux neigh_update 0xb4631ce4 +vmlinux neigh_update_hhs 0xb928297f +vmlinux neightbl_dump_info 0xcf54a7a8 +vmlinux neightbl_set 0x83661dbe +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0x1145ca51 +vmlinux netdev_features_change 0x58b75209 +vmlinux netdev_rx_csum_fault 0xb93cfb50 +vmlinux netdev_set_master 0xd160a412 +vmlinux netdev_state_change 0x9afd0556 +vmlinux netif_carrier_off 0x0014a454 +vmlinux netif_carrier_on 0xee21bdf9 +vmlinux netif_receive_skb 0x771f3dce +vmlinux netif_rx 0x74f31c74 +vmlinux netif_rx_ni 0x2895d522 +vmlinux netlink_ack 0x38a3b8f4 +vmlinux netlink_broadcast 0x2fd41e5a +vmlinux netlink_dump_start 0x93ffe0db +vmlinux netlink_kernel_create 0xef0e8413 +vmlinux netlink_queue_skip 0x38dbad1b +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0x2924175c +vmlinux netlink_set_err 0xe169700d +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0xfe514d59 +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x8f724cfd +vmlinux netpoll_parse_options 0xa3712af3 +vmlinux netpoll_poll 0x6d631f3c +vmlinux netpoll_queue 0x48b152d8 +vmlinux netpoll_send_udp 0xa85d0e07 +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0x238c49b8 +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0x249c04c4 +vmlinux next_thread 0xb6db22ee +vmlinux nf_ct_attach 0xfe5e93f4 +vmlinux nf_getsockopt 0x9109f072 +vmlinux nf_hook_slow 0xcdf12ceb +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0x11c90980 +vmlinux nf_log_register 0xe040b93b +vmlinux nf_log_unregister_logger 0x8014f041 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0xa73eae0f +vmlinux nf_register_queue_handler 0xacb7b077 +vmlinux nf_register_queue_rerouter 0xa9080924 +vmlinux nf_register_sockopt 0x01042e13 +vmlinux nf_reinject 0x4ddf8ef6 +vmlinux nf_setsockopt 0xe86197bc +vmlinux nf_unregister_hook 0xacb5ffba +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0x68c81ab9 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x637554a3 +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0x4c4c956e +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0x57891bea +vmlinux nla_reserve 0x1dd78b39 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0xa33f7c7c +vmlinux nla_validate 0x2cc98162 +vmlinux nmi_active 0x069dcda8 +vmlinux nmi_watchdog 0xda928914 +vmlinux no_llseek 0x5ab03117 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0xcdb82303 +vmlinux nobh_prepare_write 0x0164f50f +vmlinux nobh_truncate_page 0x8ee5396d +vmlinux nobh_writepage 0x0f60ca20 +vmlinux node_data 0x44f5d1ee +vmlinux node_online_map 0x3984227b +vmlinux node_possible_map 0x9f35ba10 +vmlinux node_to_cpumask 0x91fa79b3 +vmlinux nonseekable_open 0x9d66e3e4 +vmlinux noop_qdisc 0x56d4f372 +vmlinux noop_qdisc_ops 0x239f3475 +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x0be70008 +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0x532e0fe6 +vmlinux open_by_devnum 0x9086bd34 +vmlinux open_exec 0xe74d2492 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_bug 0x189c5fd1 +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux overflowgid 0x7171121c +vmlinux overflowuid 0x8b618d08 +vmlinux p80211_resume 0x13d58771 +vmlinux p80211_suspend 0xb263eb5a +vmlinux p80211netdev_hwremoved 0x8b2465c7 +vmlinux p80211netdev_rx 0x5d053569 +vmlinux p80211skb_free 0xfdda7a80 +vmlinux p80211skb_rxmeta_attach 0xf6eed154 +vmlinux page_follow_link_light 0xda2a1c3d +vmlinux page_put_link 0x573f5001 +vmlinux page_readlink 0xbbbca849 +vmlinux page_symlink 0xc7a44433 +vmlinux page_symlink_inode_operations 0x90b9cedd +vmlinux pagevec_lookup_tag 0x2543b8ef +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0xb23d4f6d +vmlinux path_release 0x8d9c5d78 +vmlinux path_walk 0x07622abc +vmlinux pci_add_new_bus 0x74c35c72 +vmlinux pci_alloc_consistent 0xeccd029e +vmlinux pci_assign_resource 0x479383e4 +vmlinux pci_block_user_cfg_access 0x6f2d860d +vmlinux pci_bus_add_device 0x0ffbd97f +vmlinux pci_bus_add_devices 0x8b067eb0 +vmlinux pci_bus_alloc_resource 0x254b8232 +vmlinux pci_bus_assign_resources 0x616d4059 +vmlinux pci_bus_find_capability 0xf653b38a +vmlinux pci_bus_max_busnr 0x79d4a75a +vmlinux pci_bus_read_config_byte 0x9fada7a0 +vmlinux pci_bus_read_config_dword 0x74511409 +vmlinux pci_bus_read_config_word 0x993eb1ee +vmlinux pci_bus_size_bridges 0x8bfcd042 +vmlinux pci_bus_type 0x54550db0 +vmlinux pci_bus_write_config_byte 0x3930c1ba +vmlinux pci_bus_write_config_dword 0x1c14a439 +vmlinux pci_bus_write_config_word 0xd2f334c5 +vmlinux pci_choose_state 0x6d6c2bf3 +vmlinux pci_clear_mwi 0xa745d3b9 +vmlinux pci_create_bus 0x3fa1acc8 +vmlinux pci_dev_driver 0x31666ee6 +vmlinux pci_dev_get 0x6716b01d +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0x61ab569c +vmlinux pci_disable_device 0x6d8cb7c0 +vmlinux pci_disable_msi 0x531e8c74 +vmlinux pci_disable_msix 0xff208018 +vmlinux pci_do_scan_bus 0x16a4b63f +vmlinux pci_enable_bridges 0xa4c60884 +vmlinux pci_enable_device 0x28465117 +vmlinux pci_enable_device_bars 0xe9e90587 +vmlinux pci_enable_msi 0x06b03b79 +vmlinux pci_enable_msix 0x58f5fc9b +vmlinux pci_enable_wake 0xb07447a7 +vmlinux pci_find_bus 0x92101c0e +vmlinux pci_find_capability 0xa9fade75 +vmlinux pci_find_device 0x17e084a5 +vmlinux pci_find_device_reverse 0x330603d5 +vmlinux pci_find_next_bus 0xdcec1da6 +vmlinux pci_find_next_capability 0xb0114680 +vmlinux pci_find_parent_resource 0xc70ae2c0 +vmlinux pci_find_slot 0xb5cf89e1 +vmlinux pci_fixup_device 0x13f5d817 +vmlinux pci_free_consistent 0x0245e9ef +vmlinux pci_get_class 0x6ea49a82 +vmlinux pci_get_device 0xaad43377 +vmlinux pci_get_slot 0x488a79b4 +vmlinux pci_get_subsys 0xa8b8dae6 +vmlinux pci_intx 0xc009d8af +vmlinux pci_iomap 0x1560bdfc +vmlinux pci_iounmap 0x9437b28a +vmlinux pci_map_rom 0xa636b74a +vmlinux pci_map_rom_copy 0xdc97e00c +vmlinux pci_match_device 0x4054e203 +vmlinux pci_match_id 0x3c3ec641 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_mem_start 0x3da171f9 +vmlinux pci_osc_control_set 0x20c8fc33 +vmlinux pci_osc_support_set 0xed9003ef +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0x4aff8d8b +vmlinux pci_proc_attach_device 0x97bdfe84 +vmlinux pci_proc_detach_bus 0x89b831a1 +vmlinux pci_release_region 0x149825a1 +vmlinux pci_release_regions 0x7490235b +vmlinux pci_remove_behind_bridge 0x2a5f5541 +vmlinux pci_remove_bus 0xe8d52227 +vmlinux pci_remove_bus_device 0x846056c5 +vmlinux pci_remove_device_safe 0x6dd43149 +vmlinux pci_remove_rom 0xbaf9f30b +vmlinux pci_request_region 0x0a0f4fe8 +vmlinux pci_request_regions 0x4e88f920 +vmlinux pci_restore_bars 0xc0e0f221 +vmlinux pci_restore_state 0x1369ef02 +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0x4d11ee31 +vmlinux pci_scan_bridge 0xd301969c +vmlinux pci_scan_bus_parented 0x9ce691e9 +vmlinux pci_scan_child_bus 0xf94bd2b5 +vmlinux pci_scan_single_device 0xfa9787ff +vmlinux pci_scan_slot 0xbb714a13 +vmlinux pci_set_consistent_dma_mask 0xf365eebe +vmlinux pci_set_dma_mask 0xe848e3eb +vmlinux pci_set_master 0x47e037b8 +vmlinux pci_set_mwi 0x4cc03b31 +vmlinux pci_set_power_state 0x463bc526 +vmlinux pci_setup_cardbus 0x191c0fbe +vmlinux pci_unblock_user_cfg_access 0xf7e0bd50 +vmlinux pci_unmap_rom 0xa3a18fea +vmlinux pci_unregister_driver 0x248c836b +vmlinux pci_walk_bus 0x3ded291f +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pcie_port_service_register 0x19abb475 +vmlinux pcie_port_service_unregister 0x6007b18d +vmlinux pciserial_init_ports 0x0eca26b6 +vmlinux pciserial_remove_ports 0x65596a16 +vmlinux pciserial_resume_ports 0xef0f3e35 +vmlinux pciserial_suspend_ports 0x58cb4d1f +vmlinux per_cpu__kstat 0xca09a9af +vmlinux per_cpu__softnet_data 0xcacfa44e +vmlinux percpu_counter_mod 0xa6fe1216 +vmlinux permission 0x4d107452 +vmlinux pfifo_qdisc_ops 0x2df308b7 +vmlinux platform_add_devices 0x5d8f9a35 +vmlinux platform_bus 0xb8e7e54a +vmlinux platform_bus_type 0x18bb1b92 +vmlinux platform_device_add 0x515a7b55 +vmlinux platform_device_add_data 0x2e24b21b +vmlinux platform_device_add_resources 0x9d30e5d9 +vmlinux platform_device_alloc 0x4be0e5c7 +vmlinux platform_device_put 0x7a747e89 +vmlinux platform_device_register 0xf7bcf997 +vmlinux platform_device_register_simple 0xa5785ac6 +vmlinux platform_device_unregister 0x6d33dcaa +vmlinux platform_driver_register 0x90f10c21 +vmlinux platform_driver_unregister 0x4d18b729 +vmlinux platform_get_irq 0xdddf0273 +vmlinux platform_get_irq_byname 0x17dbc51c +vmlinux platform_get_resource 0x9c8032e3 +vmlinux platform_get_resource_byname 0x0698fad8 +vmlinux pm_active 0xebd387f6 +vmlinux pm_idle 0xf890fe7f +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pneigh_enqueue 0x7374eb27 +vmlinux pneigh_lookup 0x9c240097 +vmlinux pnp_activate_dev 0x42171df4 +vmlinux pnp_device_attach 0xc02ef3b3 +vmlinux pnp_device_detach 0x1871c016 +vmlinux pnp_disable_dev 0xa256f4c7 +vmlinux pnp_init_resource_table 0x16084899 +vmlinux pnp_is_active 0x030241f2 +vmlinux pnp_manual_config_dev 0x602bb7c4 +vmlinux pnp_register_card_driver 0x6c31f278 +vmlinux pnp_register_driver 0x3566dc14 +vmlinux pnp_release_card_device 0x07a2c56b +vmlinux pnp_request_card_device 0xe88ea2f1 +vmlinux pnp_resource_change 0xf577ec2b +vmlinux pnp_unregister_card_driver 0x1e3dedb2 +vmlinux pnp_unregister_driver 0xdb997ba0 +vmlinux poll_freewait 0xaddfa0ba +vmlinux poll_initwait 0x5b9ae54c +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0x83c43dc1 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x886aa274 +vmlinux posix_acl_equiv_mode 0x50d56018 +vmlinux posix_acl_from_mode 0x8c537c45 +vmlinux posix_acl_from_xattr 0x42acbf72 +vmlinux posix_acl_permission 0xe328c333 +vmlinux posix_acl_to_xattr 0xb055d8da +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0xa141f08d +vmlinux posix_lock_file 0xd366c652 +vmlinux posix_lock_file_wait 0x647fb06b +vmlinux posix_locks_deadlock 0xaa3fab51 +vmlinux posix_test_lock 0xa4e14f78 +vmlinux posix_timer_event 0x90cca710 +vmlinux posix_unblock_lock 0x93de346b +vmlinux pre_task_out_intr 0x85730943 +vmlinux preempt_schedule 0x43b0c9c3 +vmlinux prepare_binprm 0x555ef794 +vmlinux prepare_to_wait 0x43b27463 +vmlinux prepare_to_wait_exclusive 0x893e7778 +vmlinux printk 0xdd132261 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0xa99c0709 +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0xac77e273 +vmlinux proc_dointvec 0xf4e59c74 +vmlinux proc_dointvec_jiffies 0x2fb0dd70 +vmlinux proc_dointvec_minmax 0x2433196b +vmlinux proc_dointvec_ms_jiffies 0x83a64a9f +vmlinux proc_dointvec_userhz_jiffies 0xbfe35233 +vmlinux proc_dostring 0x12c02388 +vmlinux proc_doulongvec_minmax 0x0b4c1841 +vmlinux proc_doulongvec_ms_jiffies_minmax 0x8cf56e9b +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0x862fd28c +vmlinux proc_net 0xb5c6687c +vmlinux proc_net_netfilter 0xb6e34737 +vmlinux proc_net_stat 0x9171badd +vmlinux proc_root 0x18a16bc3 +vmlinux proc_root_driver 0x25474c38 +vmlinux proc_root_fs 0xab6c2f89 +vmlinux proc_symlink 0xcd0868c9 +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux profile_pc 0x875e1a1b +vmlinux proto_register 0x00292eb8 +vmlinux proto_unregister 0x4aa0638c +vmlinux ps2_cmd_aborted 0x54074efa +vmlinux ps2_command 0x654d1163 +vmlinux ps2_drain 0x04872924 +vmlinux ps2_handle_ack 0xebeb203e +vmlinux ps2_handle_response 0xd68fad09 +vmlinux ps2_init 0xfb07b684 +vmlinux ps2_schedule_command 0x7214c9e0 +vmlinux ps2_sendbyte 0x4500fe42 +vmlinux pskb_copy 0xd3192059 +vmlinux pskb_expand_head 0x98e91fdc +vmlinux pskb_put 0x93cf3d67 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0xc1c9b3f6 +vmlinux put_cmsg 0x43ec913a +vmlinux put_device 0x0aba0fb5 +vmlinux put_disk 0xf0260fd7 +vmlinux put_driver 0x34528ce5 +vmlinux put_files_struct 0x934ca9b2 +vmlinux put_io_context 0x218f8219 +vmlinux put_page 0xae2a856f +vmlinux put_tty_driver 0xad840599 +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0xbcd4af5c +vmlinux qdisc_create_dflt 0x08341075 +vmlinux qdisc_destroy 0x117d66a2 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0xe4111a75 +vmlinux qdisc_lookup 0xfee547ad +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0x5eae13f8 +vmlinux qdisc_restart 0x836a581c +vmlinux qdisc_unlock_tree 0xca02345b +vmlinux queue_delayed_work 0x6351bf5c +vmlinux queue_work 0x01fa9857 +vmlinux radix_tree_delete 0x898049c9 +vmlinux radix_tree_gang_lookup 0x35ef380e +vmlinux radix_tree_gang_lookup_tag 0xed493232 +vmlinux radix_tree_insert 0x72e6283f +vmlinux radix_tree_lookup 0x76e635da +vmlinux radix_tree_lookup_slot 0x41706e2f +vmlinux radix_tree_tag_clear 0x9ee300df +vmlinux radix_tree_tag_set 0xd73b9fb5 +vmlinux radix_tree_tagged 0xb52b2186 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0x46cc1b33 +vmlinux read_cache_pages 0x8ea14acd +vmlinux read_dev_sector 0x0870e576 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0x935d5b61 +vmlinux redraw_screen 0x40b2eeec +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0xbb431751 +vmlinux register_acpi_bus_type 0x75600cbb +vmlinux register_atm_ioctl 0xf2e748a9 +vmlinux register_binfmt 0x5f2051cd +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0xae090aa2 +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0xb856a1bc +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_die_notifier 0x53986488 +vmlinux register_exec_domain 0xb080ecc2 +vmlinux register_filesystem 0xf660fd32 +vmlinux register_firmware 0x40359ccb +vmlinux register_framebuffer 0xbc930acb +vmlinux register_gifconf 0x5241bf9f +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_key_type 0xe211efc2 +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0x2fa6bb70 +vmlinux register_netdevice 0x21ffff7f +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0xae6db9be +vmlinux register_posix_clock 0x042948fd +vmlinux register_qdisc 0x44a24f18 +vmlinux register_quota_format 0x7f91c1e2 +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0xdbec0534 +vmlinux register_snap_client 0xce4a937d +vmlinux register_sysctl_table 0xba95f7ea +vmlinux register_sysrq_key 0x44e52c3b +vmlinux register_tcf_proto_ops 0x92040aab +vmlinux register_timer_hook 0x93817c41 +vmlinux register_wlandev 0xd1a6058b +vmlinux registered_fb 0x69e9cae5 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x6ef56f31 +vmlinux release_lapic_nmi 0x4129043e +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x72bf25dd +vmlinux remap_pfn_range 0x6734d490 +vmlinux remote_llseek 0xb4bdd417 +vmlinux remove_arg_zero 0x0de21e8c +vmlinux remove_inode_hash 0xc65d91e9 +vmlinux remove_proc_entry 0x637f577d +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0xb6da31ab +vmlinux remove_wait_queue 0xe12d87eb +vmlinux reqsk_queue_alloc 0x8ca8f75c +vmlinux reqsk_queue_destroy 0xc2e19c3c +vmlinux request_dma 0x7054a3e4 +vmlinux request_firmware 0xc8c71ee2 +vmlinux request_firmware_nowait 0x87c2bbe4 +vmlinux request_irq 0x5271af5d +vmlinux request_key 0x80532adf +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux reserve_lapic_nmi 0xb903b498 +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x83230e05 +vmlinux rtc_control 0xc9b27289 +vmlinux rtc_lock 0x831988d6 +vmlinux rtc_register 0xfdab2b9c +vmlinux rtc_unregister 0xeddfe49d +vmlinux rtnetlink_links 0x14c0729b +vmlinux rtnetlink_put_metrics 0xb19eed4c +vmlinux rtnl 0x3e3ece17 +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0xee0fef1f +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux sb_min_blocksize 0x0233c584 +vmlinux sb_set_blocksize 0x77ebeef3 +vmlinux sched_setscheduler 0x8c6276eb +vmlinux schedule 0x01000e51 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0x9fdbe73b +vmlinux scm_fp_dup 0x0de44999 +vmlinux scnprintf 0x7bb4de17 +vmlinux screen_info 0xe7bf7d05 +vmlinux scsi_cmd_ioctl 0x6b10b520 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux search_binary_handler 0x8eb8fe86 +vmlinux secpath_dup 0x28ead25e +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0x67e96536 +vmlinux securityfs_create_dir 0x0aa77884 +vmlinux securityfs_create_file 0x5984f4bb +vmlinux securityfs_remove 0x493d7039 +vmlinux send_sig 0xcde33ea6 +vmlinux send_sig_info 0x6793745c +vmlinux seq_escape 0x3028e926 +vmlinux seq_lseek 0xe0e6f1e7 +vmlinux seq_open 0xde8f5a27 +vmlinux seq_path 0x2ad63dec +vmlinux seq_printf 0x56820594 +vmlinux seq_putc 0x6eef5d4d +vmlinux seq_puts 0x0516c869 +vmlinux seq_read 0x7a8279db +vmlinux seq_release 0x6d0f5608 +vmlinux seq_release_private 0xb89ade69 +vmlinux serial8250_register_port 0x5e32b01b +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0x0e635a63 +vmlinux serio_interrupt 0xe6d17647 +vmlinux serio_open 0x3fe7f20a +vmlinux serio_reconnect 0x7d327200 +vmlinux serio_rescan 0x61614175 +vmlinux serio_unregister_child_port 0x72671b4a +vmlinux serio_unregister_driver 0xa068adc9 +vmlinux serio_unregister_port 0x68d2ad78 +vmlinux set_anon_super 0xeb5300c3 +vmlinux set_bh_page 0xefc96fc0 +vmlinux set_binfmt 0xed421f37 +vmlinux set_blocksize 0x885db42b +vmlinux set_cpus_allowed 0x92283b38 +vmlinux set_current_groups 0x999fe899 +vmlinux set_device_ro 0x9f694411 +vmlinux set_disk_ro 0x9bd2fc82 +vmlinux set_nmi_callback 0x2285b831 +vmlinux set_page_dirty 0x8fc1f7bd +vmlinux set_page_dirty_lock 0x83d43aff +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0x7d06aaa8 +vmlinux setlease 0xf0a3b708 +vmlinux setup_arg_pages 0x2341aa5c +vmlinux sget 0x4f0baf02 +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x9c6f2e6f +vmlinux shrink_dcache_sb 0x58c28c2a +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x6a5fa363 +vmlinux simple_attr_close 0x819a17d5 +vmlinux simple_attr_open 0xfc437b37 +vmlinux simple_attr_read 0x2dfcda1a +vmlinux simple_attr_write 0x6bde96f6 +vmlinux simple_commit_write 0x7930e189 +vmlinux simple_dir_inode_operations 0x49f2fc8d +vmlinux simple_dir_operations 0xdc196527 +vmlinux simple_empty 0x134c111c +vmlinux simple_fill_super 0xf0f516ee +vmlinux simple_getattr 0xc658a0b6 +vmlinux simple_link 0x48c9037c +vmlinux simple_lookup 0x1ca04c25 +vmlinux simple_pin_fs 0x401ef5c0 +vmlinux simple_prepare_write 0x10b70264 +vmlinux simple_read_from_buffer 0x5a5e7ea3 +vmlinux simple_readpage 0x6acd6844 +vmlinux simple_release_fs 0xd3410650 +vmlinux simple_rename 0x91dca93d +vmlinux simple_rmdir 0x908ef172 +vmlinux simple_statfs 0x0cff81d9 +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0x7ca426de +vmlinux simple_transaction_get 0x14ff73d6 +vmlinux simple_transaction_read 0x545fa26b +vmlinux simple_transaction_release 0xc0ca14a4 +vmlinux simple_unlink 0x803c8afd +vmlinux single_open 0x49cabe87 +vmlinux single_release 0x5a5e988a +vmlinux sk_alloc 0x76b74f99 +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0xb73e49a0 +vmlinux sk_common_release 0x10751c17 +vmlinux sk_free 0xe58c8c5c +vmlinux sk_reset_timer 0xb7e1b5ee +vmlinux sk_run_filter 0x59210f12 +vmlinux sk_send_sigurg 0x2bef3a2e +vmlinux sk_stop_timer 0xce38feb8 +vmlinux sk_stream_error 0x5708d290 +vmlinux sk_stream_kill_queues 0x7a42af74 +vmlinux sk_stream_mem_schedule 0x90c5dafa +vmlinux sk_stream_rfree 0x22956bf9 +vmlinux sk_stream_wait_close 0xfd63f0b6 +vmlinux sk_stream_wait_connect 0xcabfe546 +vmlinux sk_stream_wait_memory 0x6db0af40 +vmlinux sk_stream_write_space 0xef949c90 +vmlinux sk_wait_data 0x0e5b0147 +vmlinux skb_abort_seq_read 0x5ccadf91 +vmlinux skb_append 0xf1853e7f +vmlinux skb_append_datato_frags 0xe0b7414e +vmlinux skb_checksum 0x75137a87 +vmlinux skb_checksum_help 0x09da24bd +vmlinux skb_clone 0xfcd431e6 +vmlinux skb_clone_fraglist 0x661499a4 +vmlinux skb_copy 0xb1e45d99 +vmlinux skb_copy_and_csum_bits 0x6da3f587 +vmlinux skb_copy_and_csum_datagram_iovec 0xab264473 +vmlinux skb_copy_and_csum_dev 0x1205dc88 +vmlinux skb_copy_bits 0x0470c7a9 +vmlinux skb_copy_datagram_iovec 0xdd29c830 +vmlinux skb_copy_expand 0x2673a364 +vmlinux skb_cow_data 0x5ef31292 +vmlinux skb_dequeue 0xd2f215f4 +vmlinux skb_dequeue_tail 0xc92e341a +vmlinux skb_find_text 0x626e3940 +vmlinux skb_free_datagram 0x7218b692 +vmlinux skb_icv_walk 0xc9ccfe40 +vmlinux skb_insert 0xba885483 +vmlinux skb_make_writable 0x83cfa16f +vmlinux skb_migrate 0x4845410f +vmlinux skb_over_panic 0xb951889f +vmlinux skb_pad 0xad758180 +vmlinux skb_prepare_seq_read 0x91c48259 +vmlinux skb_queue_head 0x5a618169 +vmlinux skb_queue_purge 0x66eefef3 +vmlinux skb_queue_tail 0x749b4984 +vmlinux skb_realloc_headroom 0x8a2752f6 +vmlinux skb_recv_datagram 0x3d085047 +vmlinux skb_seq_read 0x4cd58d0b +vmlinux skb_split 0xd937d607 +vmlinux skb_store_bits 0x75fff6c6 +vmlinux skb_to_sgvec 0x91d0d330 +vmlinux skb_under_panic 0x4fc9231b +vmlinux skb_unlink 0x00fe247e +vmlinux sleep_on 0x4823b05a +vmlinux sleep_on_timeout 0x370bfb3a +vmlinux smp_call_function 0x0014bfd1 +vmlinux smp_num_siblings 0xd1f6c5f3 +vmlinux snprintf 0xaf25400d +vmlinux sock_alloc_send_skb 0xb04a7bd0 +vmlinux sock_common_getsockopt 0x3f31a981 +vmlinux sock_common_recvmsg 0x0c57d664 +vmlinux sock_common_setsockopt 0xf80a47f8 +vmlinux sock_create 0xbda276cc +vmlinux sock_create_kern 0x0dd42b18 +vmlinux sock_create_lite 0xd77d5c14 +vmlinux sock_enable_timestamp 0xbdc379dd +vmlinux sock_get_timestamp 0x40997ea2 +vmlinux sock_i_ino 0x1590ad70 +vmlinux sock_i_uid 0xa1ff47ab +vmlinux sock_init_data 0x0a4d88c8 +vmlinux sock_kfree_s 0x8ef857d0 +vmlinux sock_kmalloc 0x1de835c1 +vmlinux sock_map_fd 0x3fa9803a +vmlinux sock_no_accept 0x12f11564 +vmlinux sock_no_bind 0x6aa27699 +vmlinux sock_no_connect 0x16be1026 +vmlinux sock_no_getname 0xc083259e +vmlinux sock_no_getsockopt 0x5be4019e +vmlinux sock_no_ioctl 0x8fbc8157 +vmlinux sock_no_listen 0x4ce88a58 +vmlinux sock_no_mmap 0xdc2264a9 +vmlinux sock_no_poll 0x42cd18ce +vmlinux sock_no_recvmsg 0x800b409e +vmlinux sock_no_sendmsg 0xbf0a733d +vmlinux sock_no_sendpage 0x6805410d +vmlinux sock_no_setsockopt 0xf3c54e8a +vmlinux sock_no_shutdown 0xebd3753e +vmlinux sock_no_socketpair 0x3d4be67e +vmlinux sock_recvmsg 0x3bd7ed0b +vmlinux sock_register 0x882e9f42 +vmlinux sock_release 0xace3ac0d +vmlinux sock_rfree 0x140184b1 +vmlinux sock_sendmsg 0x80174c08 +vmlinux sock_setsockopt 0x5d959bda +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0x9ea0c395 +vmlinux sock_wfree 0x1deae7d5 +vmlinux sock_wmalloc 0x1beb75c0 +vmlinux sockfd_lookup 0x7c85a9c1 +vmlinux sonet_copy_stats 0x89195dc3 +vmlinux sonet_subtract_stats 0x1a24e5e2 +vmlinux sort 0x9ca95a0e +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux start_tty 0x4c438add +vmlinux steal_locks 0xeb249cf7 +vmlinux stop_tty 0xdc1dbec8 +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0xafe82e10 +vmlinux strlcat 0xb11fa1ce +vmlinux strlcpy 0x672144bd +vmlinux strlen 0x25ec1b28 +vmlinux strncat 0x234509f3 +vmlinux strnchr 0x7242e96d +vmlinux strncmp 0x85abc85f +vmlinux strncpy 0x7ec9bfbc +vmlinux strncpy_from_user 0x24428be5 +vmlinux strnicmp 0x756e6992 +vmlinux strnlen 0xcc07af75 +vmlinux strnlen_user 0xbcc308bb +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0x3fa913da +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0xd283e20a +vmlinux submit_bh 0x8d3dce10 +vmlinux submit_bio 0x3d4f768f +vmlinux subsys_create_file 0x4f3b6eca +vmlinux subsys_remove_file 0x6e04f0e7 +vmlinux subsystem_init 0x29ba7385 +vmlinux subsystem_register 0x443c8af6 +vmlinux subsystem_unregister 0xbb5f83df +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0x01423a04 +vmlinux swiotlb 0x47636033 +vmlinux swiotlb_alloc_coherent 0xb61d9a7b +vmlinux swiotlb_dma_mapping_error 0xaaeb10d3 +vmlinux swiotlb_dma_supported 0xbfcf5a99 +vmlinux swiotlb_free_coherent 0x07a45c60 +vmlinux swiotlb_init 0x8e0594bc +vmlinux swiotlb_map_sg 0x909b3cb7 +vmlinux swiotlb_map_single 0xaa1d1197 +vmlinux swiotlb_sync_sg_for_cpu 0x98b6f5ae +vmlinux swiotlb_sync_sg_for_device 0xeafd18f4 +vmlinux swiotlb_sync_single_for_cpu 0x65c9302a +vmlinux swiotlb_sync_single_for_device 0xb82ce4a4 +vmlinux swiotlb_sync_single_range_for_cpu 0xa081d28d +vmlinux swiotlb_sync_single_range_for_device 0x4956b987 +vmlinux swiotlb_unmap_sg 0x439468d0 +vmlinux swiotlb_unmap_single 0xeaf0cf00 +vmlinux switch_APIC_timer_to_ipi 0xa5c79544 +vmlinux switch_ipi_to_APIC_timer 0xac7eb84c +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0x48ae6969 +vmlinux sync_dirty_buffer 0x1530e907 +vmlinux sync_inode 0xfbafcc7b +vmlinux sync_mapping_buffers 0xb128a754 +vmlinux sync_page_range 0xb5fc6bc2 +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xdcb0349b +vmlinux sys_ioctl 0x208ce54a +vmlinux sys_open 0xe269ea1c +vmlinux sys_read 0x12703a3e +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0xb9664fc4 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0xcfc76f41 +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0x1c1e07e8 +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0x37863535 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0xc5818e5b +vmlinux sysdev_class_unregister 0xd27c5a4a +vmlinux sysdev_create_file 0x5786ffed +vmlinux sysdev_driver_register 0xc9ac3f5e +vmlinux sysdev_driver_unregister 0x91cbb347 +vmlinux sysdev_register 0x242338ab +vmlinux sysdev_remove_file 0x933e683f +vmlinux sysdev_unregister 0x9ce482fd +vmlinux sysfs_chmod_file 0x78e22f66 +vmlinux sysfs_create_bin_file 0x6ed1cc27 +vmlinux sysfs_create_dir 0x56d8f247 +vmlinux sysfs_create_file 0x7e6789c8 +vmlinux sysfs_create_group 0xa431b017 +vmlinux sysfs_create_link 0x429f3574 +vmlinux sysfs_remove_bin_file 0xce4240d2 +vmlinux sysfs_remove_dir 0x35364fda +vmlinux sysfs_remove_file 0x5bdbfa62 +vmlinux sysfs_remove_group 0xe79e68fc +vmlinux sysfs_remove_link 0xc2af9f39 +vmlinux sysfs_rename_dir 0x18d47cd8 +vmlinux sysfs_update_file 0x93d01e8a +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0xd9e0f14f +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0x39cc2b80 +vmlinux task_nice 0xa7068f1d +vmlinux task_no_data_intr 0xd5575507 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0x0965e085 +vmlinux tc_classify 0x3da638a6 +vmlinux tcf_em_register 0x167af265 +vmlinux tcf_em_tree_destroy 0x71e5cea2 +vmlinux tcf_em_tree_dump 0x7e8197a4 +vmlinux tcf_em_tree_validate 0x4214dfbe +vmlinux tcf_em_unregister 0xeaa2c077 +vmlinux tcf_exts_change 0xadf36b31 +vmlinux tcf_exts_destroy 0xaae887de +vmlinux tcf_exts_dump 0xd9f9f936 +vmlinux tcf_exts_dump_stats 0xa3a01058 +vmlinux tcf_exts_validate 0xc565f714 +vmlinux tcf_police 0x74d9a1fa +vmlinux tcf_police_destroy 0x9db102ce +vmlinux tcf_police_dump 0x60a5456f +vmlinux tcf_police_dump_stats 0xa8bab8bc +vmlinux tcf_police_hash 0x8493d6e7 +vmlinux tcf_police_ht 0x59979e7f +vmlinux tcf_police_locate 0xdc0b2fa6 +vmlinux tcf_police_lookup 0x33fcccbc +vmlinux tcf_police_new_index 0x7ae0f6c9 +vmlinux tcp_check_req 0xf5461947 +vmlinux tcp_child_process 0x199fc39e +vmlinux tcp_close 0x8a7e3695 +vmlinux tcp_connect 0x3f5098f9 +vmlinux tcp_create_openreq_child 0x12da311f +vmlinux tcp_death_row 0x1123ecd0 +vmlinux tcp_disconnect 0x4d543f48 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0xed731267 +vmlinux tcp_getsockopt 0xb5c5ed49 +vmlinux tcp_hashinfo 0x5f4dc2e4 +vmlinux tcp_init_congestion_ops 0x7f3bc061 +vmlinux tcp_init_xmit_timers 0xf84a0a10 +vmlinux tcp_ioctl 0x050f9f0a +vmlinux tcp_make_synack 0x12d638ad +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0xa0eaa990 +vmlinux tcp_poll 0x58c3bbf6 +vmlinux tcp_proc_register 0x9b6e0024 +vmlinux tcp_proc_unregister 0x3b67a376 +vmlinux tcp_prot 0x1b56489f +vmlinux tcp_rcv_established 0x52cafbb3 +vmlinux tcp_rcv_state_process 0xc3ba2a73 +vmlinux tcp_read_sock 0xe30a4c1d +vmlinux tcp_recvmsg 0xcceab6fa +vmlinux tcp_register_congestion_control 0x73540736 +vmlinux tcp_reno_cong_avoid 0xb1a282db +vmlinux tcp_reno_min_cwnd 0x21063023 +vmlinux tcp_reno_ssthresh 0x9cd49b8e +vmlinux tcp_sendmsg 0x96409e0b +vmlinux tcp_sendpage 0x0c079a02 +vmlinux tcp_setsockopt 0x60a0ce3f +vmlinux tcp_shutdown 0x4fcae087 +vmlinux tcp_simple_retransmit 0x2e76ff23 +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0x60753e65 +vmlinux tcp_timewait_state_process 0xfe15c64f +vmlinux tcp_unhash 0x861e62f8 +vmlinux tcp_unregister_congestion_control 0x838c4647 +vmlinux tcp_v4_conn_request 0xc66215df +vmlinux tcp_v4_connect 0x530b4d23 +vmlinux tcp_v4_destroy_sock 0xb2225bf8 +vmlinux tcp_v4_do_rcv 0x51cf0c04 +vmlinux tcp_v4_remember_stamp 0x9aa47729 +vmlinux tcp_v4_send_check 0xb2f79710 +vmlinux tcp_v4_syn_recv_sock 0x5f3483e1 +vmlinux test_clear_page_dirty 0x20f23c93 +vmlinux test_set_page_writeback 0xd23cfcad +vmlinux textsearch_destroy 0xd5e5af4b +vmlinux textsearch_find_continuous 0x70d01ce7 +vmlinux textsearch_prepare 0xd4411f4c +vmlinux textsearch_register 0x1339a666 +vmlinux textsearch_unregister 0x7928872b +vmlinux thaw_bdev 0x2b6c007e +vmlinux timespec_trunc 0xc045ad4e +vmlinux totalram_pages 0xde9360ba +vmlinux touch_nmi_watchdog 0xf51ae235 +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0xfdb7ef1e +vmlinux tr_type_trans 0x5fc1abae +vmlinux transport_add_device 0x59de7313 +vmlinux transport_class_register 0x6dbb76cf +vmlinux transport_class_unregister 0x3177ef25 +vmlinux transport_configure_device 0xa78e21e8 +vmlinux transport_destroy_device 0x6eea6f15 +vmlinux transport_remove_device 0x81b95da9 +vmlinux transport_setup_device 0x03722a1e +vmlinux truncate_inode_pages 0x1325efea +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0x388a9f89 +vmlinux try_to_release_page 0x6187a6c4 +vmlinux tty_check_change 0xea96f7be +vmlinux tty_flip_buffer_push 0x3770f68b +vmlinux tty_get_baud_rate 0x0efe6695 +vmlinux tty_hangup 0x4a2c4f04 +vmlinux tty_hung_up_p 0x39828d93 +vmlinux tty_ldisc_deref 0x160a1571 +vmlinux tty_ldisc_flush 0xe6a6e2a6 +vmlinux tty_ldisc_get 0x237fc2d2 +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0xd9fe216d +vmlinux tty_ldisc_ref_wait 0x6be43970 +vmlinux tty_name 0x34dd080c +vmlinux tty_register_device 0x22c81a87 +vmlinux tty_register_driver 0xf211901d +vmlinux tty_register_ldisc 0x85a521d8 +vmlinux tty_set_operations 0x9f3da3af +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0xbd5cb004 +vmlinux tty_unregister_driver 0xb45664dd +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0xf74f2ca7 +vmlinux tty_wait_until_sent 0x7bd4eadf +vmlinux tty_wakeup 0x13ea968a +vmlinux uart_add_one_port 0x0e0295d6 +vmlinux uart_get_baud_rate 0x5f99f033 +vmlinux uart_get_divisor 0x32768543 +vmlinux uart_match_port 0x092819ea +vmlinux uart_register_driver 0xb0ab535e +vmlinux uart_remove_one_port 0x0cb75fc5 +vmlinux uart_resume_port 0x55b1efff +vmlinux uart_suspend_port 0xae4252ef +vmlinux uart_unregister_driver 0xbd81b81b +vmlinux uart_update_timeout 0x4c578d4c +vmlinux uart_write_wakeup 0x940c87ac +vmlinux udp_disconnect 0xbc892587 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0x7425ac56 +vmlinux udp_ioctl 0x681e99ad +vmlinux udp_poll 0x82a6306a +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0xd64ac029 +vmlinux udp_proc_unregister 0x35d34b12 +vmlinux udp_prot 0x06e855c5 +vmlinux udp_sendmsg 0xece41c3d +vmlinux uhci_check_and_reset_hc 0xb883126f +vmlinux uhci_reset_hc 0xaa82b784 +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unload_nls 0x0b43b50d +vmlinux unlock_buffer 0xe8adf0ff +vmlinux unlock_cpu_hotplug 0xdbb6cbd9 +vmlinux unlock_kernel 0xb1f975aa +vmlinux unlock_new_inode 0x3438c24f +vmlinux unlock_page 0xe7ff101b +vmlinux unlock_rename 0x02d90a39 +vmlinux unmap_mapping_range 0xea599015 +vmlinux unmap_page_from_agp 0x65b08a03 +vmlinux unmap_underlying_metadata 0x958e28d2 +vmlinux unregister_8022_client 0xa591e778 +vmlinux unregister_acpi_bus_type 0x003bba4c +vmlinux unregister_binfmt 0x74943729 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0xddd54a5f +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_exec_domain 0xbbba56ff +vmlinux unregister_filesystem 0xb07c6e16 +vmlinux unregister_framebuffer 0x79200f0e +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_key_type 0xbb2eeeb7 +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0xd5f95b9f +vmlinux unregister_netdevice 0x7fe845b7 +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0x91bb98d8 +vmlinux unregister_qdisc 0x98217577 +vmlinux unregister_quota_format 0xe6978bdb +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0xe124fd0b +vmlinux unregister_snap_client 0x16256d15 +vmlinux unregister_sysctl_table 0x28a9bcba +vmlinux unregister_sysrq_key 0x988a8992 +vmlinux unregister_tcf_proto_ops 0xf19b4c2c +vmlinux unregister_timer_hook 0x57da507b +vmlinux unregister_wlandev 0x9640eb1a +vmlinux unset_nmi_callback 0x2ef9373e +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0x2b65c444 +vmlinux update_region 0xa9bfbbae +vmlinux user_describe 0x45cc541d +vmlinux user_destroy 0x64ba8f80 +vmlinux user_duplicate 0x7c947788 +vmlinux user_instantiate 0x9ef2d1a7 +vmlinux user_match 0x8e3bbf39 +vmlinux user_read 0xbe9f2657 +vmlinux user_update 0x49a9c8f2 +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0x67cd4622 +vmlinux vc_cons 0x7e56827f +vmlinux vc_resize 0xc931c839 +vmlinux vcc_hash 0x2cc2d52d +vmlinux vcc_insert_socket 0x6dfbe418 +vmlinux vcc_release_async 0xce3552c0 +vmlinux vcc_sklist_lock 0xb8a20d62 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0x5321f847 +vmlinux vfs_follow_link 0x4fc16aaa +vmlinux vfs_fstat 0x2a0837e6 +vmlinux vfs_get_dqblk 0x90c9b51f +vmlinux vfs_get_dqinfo 0xdcf78e0c +vmlinux vfs_getattr 0x6bd26904 +vmlinux vfs_link 0x464b08d0 +vmlinux vfs_llseek 0x73375f8d +vmlinux vfs_lstat 0x12344839 +vmlinux vfs_mkdir 0x6dd596d8 +vmlinux vfs_mknod 0x63156945 +vmlinux vfs_permission 0xd400e2bf +vmlinux vfs_quota_off 0xb970f4c0 +vmlinux vfs_quota_on 0xed446d84 +vmlinux vfs_quota_on_mount 0x9ece89a4 +vmlinux vfs_quota_sync 0xdef65dbb +vmlinux vfs_read 0xc77a2cc4 +vmlinux vfs_readdir 0xe438e62e +vmlinux vfs_readlink 0xe54cb979 +vmlinux vfs_readv 0x8c0a1a64 +vmlinux vfs_rename 0xbb520aab +vmlinux vfs_rmdir 0xa0171d6b +vmlinux vfs_set_dqblk 0x18dc2973 +vmlinux vfs_set_dqinfo 0x660b1dbc +vmlinux vfs_stat 0x787feff6 +vmlinux vfs_statfs 0xdcf7e53c +vmlinux vfs_symlink 0x2a7ddf67 +vmlinux vfs_unlink 0x2e7bd238 +vmlinux vfs_write 0xc222ee2c +vmlinux vfs_writev 0xd5ea4805 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x1328f2bc +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0x7131b987 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0x36aba731 +vmlinux vmtruncate 0xdbfb819e +vmlinux vprintk 0x777a8e29 +vmlinux vscnprintf 0xf3522c9c +vmlinux vsnprintf 0x0e57f111 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0xdfa4a7d0 +vmlinux wait_for_completion_interruptible 0x5ca670a0 +vmlinux wait_for_completion_interruptible_timeout 0x7dde7069 +vmlinux wait_for_completion_timeout 0x139c77f7 +vmlinux wait_on_page_bit 0x0a3a3695 +vmlinux wait_on_sync_kiocb 0x752fb9ac +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0xa31d6515 +vmlinux wireless_send_event 0x32633113 +vmlinux wireless_spy_update 0x090b07be +vmlinux wlan_setup 0x1890a739 +vmlinux wlan_unsetup 0x2c083d2a +vmlinux write_inode_now 0x85ace714 +vmlinux write_one_page 0x2226d78e +vmlinux x86_acpiid_to_apicid 0x062bdb0e +vmlinux x86_cpu_to_apicid 0xc39d1fd0 +vmlinux xfrm4_rcv 0x8c4e2c69 +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0x1edd0796 +vmlinux xfrm_bundle_ok 0x3593f1bd +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0x9119b8da +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0x2ed25afe +vmlinux xfrm_dst_lookup 0xb17919fe +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0x89e71747 +vmlinux xfrm_find_acq_byseq 0x7548e2d3 +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0x33991a68 +vmlinux xfrm_init_state 0x4e732a21 +vmlinux xfrm_lookup 0xf3c0eadc +vmlinux xfrm_parse_spi 0xe02f5470 +vmlinux xfrm_policy_alloc 0x43711df7 +vmlinux xfrm_policy_byid 0x8352669e +vmlinux xfrm_policy_bysel 0x0c297dd7 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x4b94e8a6 +vmlinux xfrm_policy_list 0x0841d34a +vmlinux xfrm_policy_register_afinfo 0xf5750635 +vmlinux xfrm_policy_unregister_afinfo 0x7f42f981 +vmlinux xfrm_policy_walk 0x8fa55b14 +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0xbf9d24fc +vmlinux xfrm_register_type 0xa36b7b7b +vmlinux xfrm_replay_advance 0xd8ed5e7e +vmlinux xfrm_replay_check 0xde9eea6c +vmlinux xfrm_state_add 0xab2e5eaa +vmlinux xfrm_state_alloc 0xac23fd7c +vmlinux xfrm_state_check 0x4df1dd17 +vmlinux xfrm_state_check_expire 0x1466f9ec +vmlinux xfrm_state_delete 0xce95cd92 +vmlinux xfrm_state_delete_tunnel 0x63b5939b +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0xc7ecf459 +vmlinux xfrm_state_lookup 0x714c3939 +vmlinux xfrm_state_mtu 0x5bbb8c16 +vmlinux xfrm_state_register_afinfo 0x64b33ff8 +vmlinux xfrm_state_unregister_afinfo 0x8ff274db +vmlinux xfrm_state_update 0x5bab1028 +vmlinux xfrm_state_walk 0xcab9cb30 +vmlinux xfrm_unregister_km 0x54ff2352 +vmlinux xfrm_unregister_type 0x367ffd2d +vmlinux xfrm_user_policy 0x04a57a3d +vmlinux xrlim_allow 0xd45c9ce2 +vmlinux xtime 0xb56717cf +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0xe75f0c1b +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0xdfaa6760 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/amd64/amd64-server.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/amd64/amd64-server.modules @@ -0,0 +1,1572 @@ +3c359 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +6pack +8021q +8139cp +8139too +8390 +9p2000 +a3d +aacraid +abyss +ac +ac97_codec +acecad +acenic +aci +acpi-cpufreq +acpiphp +acpiphp_ibm +acpi_sbs +acquirewdt +act200l-sir +actisys-sir +acx +ad1848 +ad1889 +adfs +adi +adlib_card +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +adv7170 +adv7175 +adv717x +advansys +advantechwdt +aec62xx +aedsp16 +aes +aes-x86_64 +affs +af_key +af_packet +ah4 +ah6 +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airprime +ali-ircc +alim1535_wdt +alim15x3 +alim7101_wdt +ambassador +amd74xx +amd76xrom +amd8111e +analog +anubis +aoe +appletalk +appletouch +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +asus_acpi +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +atiixp +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +auerswald +auth_rpcgss +autofs +autofs4 +av5100 +avma1_cs +avm_cs +avmfritz +ax25 +axnet_cs +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +battery +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_misc +bitblit +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bnep +bnx2 +bonding +bpa10x +bpck +bpqether +br2684 +bridge +bsd_comp +bt3c_cs +bt819 +bt856 +bt865 +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +button +bw-qcam +c4 +capability +capi +capidrv +capifs +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cfbcopyarea +cfbfillrect +cfbimgblt +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm4000_cs +cm4040_cs +cman +cmd64x +cmtp +cn +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comm +commoncap +configfs +container +cp2101 +cpcihp_generic +cpcihp_zt5550 +cpia +cpia_pp +cpia_usb +cpqarray +cpu5wdt +cpufreq_conservative +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +cpuid +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cs5520 +cs5530 +ct82c710 +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxacru +cxgb +cy82c693 +cyber2000fb +cyberjack +cyblafb +cyclades +cyclomx +cycx_drv +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +dcdbas +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +dell_rbu +des +dev_acpi +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +dilnetpc +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +dpc7146 +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +ds_w1_bridge +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +eagle-usb +eata +eata_pio +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +econet +eepro100 +eeprom +efs +ehci-hcd +elo +elsa_cs +em28xx +em8300 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +eni +epat +epca +epia +epic100 +eql +esi-sir +esp4 +esp6 +eth1394 +eurotechwdt +evbug +evdev +exportfs +ext2 +ext3 +fakephp +fan +farsync +fat +faulty +faxl3 +fbcon +fdomain +fdomain_cs +fealnx +firestream +fit2 +fit3 +floppy +fm801-gp +fmvj18x_cs +font +forcedeth +fore_200e +freevxfs +freq_table +friq +frpw +fsam7400 +fscher +fscpos +ftape +ftdi_sio +ftl +fuse +g450_pll +gadgetfs +gamecon +gameport +garmin_gps +gdth +generic +generic_serial +gen_probe +g_ether +gf2k +g_file_storage +gfs +girbil-sir +gl518sm +gl520sm +gl620a +gnbd +grip +grip_mp +g_serial +guillemot +gunze +gx1fb +g_zero +hamachi +hangcheck-timer +hci_uart +hci_usb +hci_vhci +hdaps +hdlc +hdlcdrv +he +hermes +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hidp +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hotkey +hp100 +hp4x +hpfs +hpt34x +hpt366 +hwmon-vid +hw_random +hysdn +i2c_acpi_ec +i2c-algo-bit +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-core +i2c-dev +i2c-i801 +i2c-i810 +i2c-isa +i2c-matroxfb +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i6300esb +i810 +i810_audio +i82092 +i830 +i8xx_tco +i915 +ib700wdt +ib_cm +ib_core +ib_ipoib +ibm_acpi +ib_mad +ibmasm +ibmasr +ibmcam +ib_mthca +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ichxrom +ide-cd +ide-cs +ide-disk +ide-floppy +ide-generic +ide-pnp +ide-scsi +ide-tape +idmouse +idt77252 +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +inftl +initio +intel-agp +interact +io_edgeport +io_ti +ip2 +ip2main +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ip_gre +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipw3945 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irport +irtty-sir +ir-usb +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isdnloop +islsm +islsm_device +islsm_pci +islsm_usb +isofs +istallion +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kahlua +kaweth +kbic +kbtab +kernelcapi +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l3udss1 +l440gx +l64781 +lanai +lapb +lapbether +lcd +ldusb +lec +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +litelink-sir +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lockd +lock_dlm +lock_gulm +lock_harness +lock_nolock +loop +lp +lpfc +lxt +ma600-sir +machzwd +macmodes +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1619 +max6875 +mcp2120-sir +mct_u232 +md4 +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mga +michael_mic +microcode +microtek +mii +minix +mISDN_capi +mISDN_core +mISDN_dsp +mISDN_dtmf +mISDN_isac +mISDN_l1 +mISDN_l2 +mISDN_x25dte +mk712 +mkiss +mmc_core +moxa +mpoa +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu401 +mrv8k +msdos +msp3400 +msr +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouch +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mwave +mxb +mxser +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +ndiswrapper +ne2k-pci +neofb +net1080 +net2280 +netconsole +netrom +netsc520 +nettel +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +nsc-ircc +ntfs +nvidiafb +nvram +nxt2002 +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ohci1394 +ohci-hcd +old_belkin-sir +olympic +omninet +on20 +on26 +onenand +opl3 +opl3sa2 +oprofile +opti621 +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pas2 +pbe5 +pc300 +pc87360 +pca9539 +pcc_acpi +pcd +pcf8574 +pcf8591 +pci +pci200syn +pciehp +pci_hotplug +pcilynx +pcips2 +pcmcia +pcmcia_core +pcmciamtd +pcnet32 +pcnet_cs +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +piix +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmc551 +pnc2000 +podxtpro +powermate +powernow-k8 +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +processor +psmouse +pss +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radeonfb +radio-gemtek-pci +radio-maestro +radio-maxiradio +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio500 +riscom8 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rrunner +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc8564 +rtl8150 +rxrpc +rz1000 +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7110 +saa7111 +saa7114 +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +saa7185 +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb +sb1000 +sbc60xxwdt +sbc8360 +sbc_gxx +sb_lib +sbni +sbp2 +sc1200 +sc1200wdt +sc520cdp +sc520_wdt +scb2_flash +sch_atm +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_debug +scsi_mod +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200_acb +sdhci +sd_mod +se401 +seclvl +sedlbauer_cs +sedlfax +serial_cs +serio_raw +sermouse +serpent +serport +serverworks +sg +sha1 +sha256 +sha512 +shaper +shpchp +sidewinder +siimage +sir-dev +sis +sis190 +sis5513 +sis5595 +sis900 +sisfb +sisusbvga +sk98lin +skfp +skge +sky2 +sl811_cs +sl811-hcd +slc90e66 +slhc +slip +slram +smbfs +smc91c92_cs +smsc47b397 +smsc47m1 +smsc-ircc2 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1889 +snd-ainstr-fm +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fm801 +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-rtctimer +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +softcursor +softdog +sony_acpi +sound +soundcore +sp8870 +sp887x +spaceball +spaceorb +spca5xx +specialix +spectrum_cs +speedstep-centrino +speedtch +squashfs +sr_mod +sstfb +st +stallion +starfire +stinger +stir4200 +stradis +strip +stv0297 +stv0299 +stv680 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sx +sx8 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink +synclink_cs +synclinkmp +syncppp +sysv +t1pci +tc1100-wmi +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tdfxfb +tea +tea6415c +tea6420 +tekram-sir +teles_cs +tg3 +tgr192 +thermal +tileblit +tipar +ti_usb_3410_5052 +tlclk +tmdc +tms380tr +tmscsim +tmspci +toshiba_acpi +touchkitusb +tpm +tpm_atmel +tpm_infineon +tpm_nsc +trident +tridentfb +triflex +trix +trm290 +ts5500_flash +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +tvp5150 +twidjoy +twofish +typhoon +uart401 +uart6850 +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +umem +unionfs +uPD98402 +usbatm +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vesafb +vfat +vga16fb +vgastate +via +via686a +via82cxxx +via-ircc +via-rhine +via-velocity +vicam +video +video1394 +video-buf +video-buf-dvb +videocodec +videodev +visor +vlsi_ir +v_midi +vpx3220 +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w6692pci +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83792d +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w9966 +w9968cf +wacom +wafer5823wdt +wanrouter +wanxl +warrior +wavelan_cs +wbsd +wdt_pci +whiteheat +winbond-840 +wire +wl3501_cs +wm8775 +wp512 +x1205 +x25 +x25_asy +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xircom_tulip_cb +xor +xpad +xtkbd +xusbatm +yam +yealink +yellowfin +yenta_socket +zatm +zaurus +zd1201 +zd1211 +zftape +zft-compressor +zlib_deflate +zr36016 +zr36050 +zr36060 +zr36067 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/amd64/amd64-generic +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/amd64/amd64-generic @@ -0,0 +1,5599 @@ +drivers/acpi/ac acpi_get_ac_dir 0x25ad6be9 +drivers/acpi/battery acpi_get_battery_dir 0x866ae2fc +drivers/acpi/i2c_acpi_ec acpi_get_ec_hc 0xf96a0c49 +drivers/acpi/processor acpi_processor_notify_smm 0xf59bc440 +drivers/acpi/processor acpi_processor_register_performance 0x858fc2e6 +drivers/acpi/processor acpi_processor_set_thermal_limit 0xe8a3605f +drivers/acpi/processor acpi_processor_unregister_performance 0x70b3538a +drivers/atm/suni suni_init 0x24dd656c +drivers/atm/uPD98402 uPD98402_init 0x4d38f776 +drivers/block/loop loop_register_transfer 0xadbdacdd +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0x892f9f90 +drivers/block/paride/paride pi_disconnect 0x0a43e0ff +drivers/block/paride/paride pi_do_claimed 0x1d8f5f3b +drivers/block/paride/paride pi_init 0x236bf8aa +drivers/block/paride/paride pi_read_block 0x4fac14c0 +drivers/block/paride/paride pi_read_regr 0x079fc2c7 +drivers/block/paride/paride pi_register 0x9d95a879 +drivers/block/paride/paride pi_release 0x6dd2999c +drivers/block/paride/paride pi_schedule_claimed 0xaeb9d46a +drivers/block/paride/paride pi_unregister 0x8eb5c29f +drivers/block/paride/paride pi_write_block 0x2eed158f +drivers/block/paride/paride pi_write_regr 0x588863cf +drivers/cdrom/cdrom cdrom_get_last_written 0xc5450602 +drivers/cdrom/cdrom cdrom_get_media_event 0x4b6049a2 +drivers/cdrom/cdrom cdrom_ioctl 0x1856a709 +drivers/cdrom/cdrom cdrom_media_changed 0xe25a8510 +drivers/cdrom/cdrom cdrom_mode_select 0x79503b0b +drivers/cdrom/cdrom cdrom_mode_sense 0xdbda896d +drivers/cdrom/cdrom cdrom_number_of_slots 0x03910641 +drivers/cdrom/cdrom cdrom_open 0x9151cab9 +drivers/cdrom/cdrom cdrom_release 0x04dd9cdf +drivers/cdrom/cdrom init_cdrom_command 0x4f476e96 +drivers/cdrom/cdrom register_cdrom 0x0fd32fc4 +drivers/cdrom/cdrom unregister_cdrom 0x87424e21 +drivers/char/drm/drm drm_addbufs_agp 0x2bef0f91 +drivers/char/drm/drm drm_addbufs_fb 0xdad5765b +drivers/char/drm/drm drm_addbufs_pci 0x97a18296 +drivers/char/drm/drm drm_addmap 0x6f0e62e6 +drivers/char/drm/drm drm_agp_acquire 0x8692373e +drivers/char/drm/drm drm_agp_alloc 0xa5a7bd33 +drivers/char/drm/drm drm_agp_bind 0x92dadb31 +drivers/char/drm/drm drm_agp_bind_memory 0xbcaeaf26 +drivers/char/drm/drm drm_agp_enable 0x13a34ddd +drivers/char/drm/drm drm_agp_free 0xd37052c4 +drivers/char/drm/drm drm_agp_info 0x7c9af09a +drivers/char/drm/drm drm_agp_release 0x5c5fdb3c +drivers/char/drm/drm drm_agp_unbind 0x7bd1c1b3 +drivers/char/drm/drm drm_ati_pcigart_cleanup 0x6a42be7d +drivers/char/drm/drm drm_ati_pcigart_init 0xef950eab +drivers/char/drm/drm drm_compat_ioctl 0xddc1f1f0 +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0x1b983432 +drivers/char/drm/drm drm_core_reclaim_buffers 0x3360659b +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0x91287970 +drivers/char/drm/drm drm_fasync 0x7e02510b +drivers/char/drm/drm drm_get_dev 0xc7d88559 +drivers/char/drm/drm drm_get_resource_len 0xba76b6d1 +drivers/char/drm/drm drm_get_resource_start 0x072f5a37 +drivers/char/drm/drm drm_init 0x1650b182 +drivers/char/drm/drm drm_ioctl 0xe3a222dc +drivers/char/drm/drm drm_irq_uninstall 0x7116c05c +drivers/char/drm/drm drm_mmap 0x1fe42837 +drivers/char/drm/drm drm_open 0x7340f9db +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0x2d612fb9 +drivers/char/drm/drm drm_pci_free 0xfbcf8b6e +drivers/char/drm/drm drm_poll 0x0373d488 +drivers/char/drm/drm drm_release 0x27aabf03 +drivers/char/drm/drm drm_rmmap 0xae76fa14 +drivers/char/drm/drm drm_rmmap_locked 0xb1e97f57 +drivers/char/drm/drm drm_vbl_send_signals 0xacab7386 +drivers/char/ftape/lowlevel/ftape ftape_abort_operation 0xd90df519 +drivers/char/ftape/lowlevel/ftape ftape_calibrate_data_rate 0x82bcf52a +drivers/char/ftape/lowlevel/ftape ftape_command 0x799305e4 +drivers/char/ftape/lowlevel/ftape ftape_decode_header_segment 0x08b665ef +drivers/char/ftape/lowlevel/ftape ftape_disable 0x7b52f04b +drivers/char/ftape/lowlevel/ftape ftape_enable 0x7ec0d5d4 +drivers/char/ftape/lowlevel/ftape ftape_find_end_of_bsm_list 0x46738687 +drivers/char/ftape/lowlevel/ftape ftape_format_status 0xe9849eee +drivers/char/ftape/lowlevel/ftape ftape_format_track 0x40febb40 +drivers/char/ftape/lowlevel/ftape ftape_function_nest_level 0x50196743 +drivers/char/ftape/lowlevel/ftape ftape_get_bad_sector_entry 0xfed5a53d +drivers/char/ftape/lowlevel/ftape ftape_get_status 0x46f47070 +drivers/char/ftape/lowlevel/ftape ftape_loop_until_writes_done 0x003ed2ea +drivers/char/ftape/lowlevel/ftape ftape_mmap 0x3889625d +drivers/char/ftape/lowlevel/ftape ftape_parameter 0xc17b60e3 +drivers/char/ftape/lowlevel/ftape ftape_read_header_segment 0xa2b14b3c +drivers/char/ftape/lowlevel/ftape ftape_read_segment_fraction 0xc87f4ed7 +drivers/char/ftape/lowlevel/ftape ftape_ready_wait 0xc780ed08 +drivers/char/ftape/lowlevel/ftape ftape_report_error 0x999edffd +drivers/char/ftape/lowlevel/ftape ftape_report_operation 0xf5ac4591 +drivers/char/ftape/lowlevel/ftape ftape_reset_drive 0x2bdba6aa +drivers/char/ftape/lowlevel/ftape ftape_seek_to_bot 0x4815ac3c +drivers/char/ftape/lowlevel/ftape ftape_seek_to_eot 0x3566aa64 +drivers/char/ftape/lowlevel/ftape ftape_set_nr_buffers 0x8b56caaa +drivers/char/ftape/lowlevel/ftape ftape_set_state 0x5b52d4b8 +drivers/char/ftape/lowlevel/ftape ftape_start_writing 0xa99d81e3 +drivers/char/ftape/lowlevel/ftape ftape_trace_call 0x63f7f6d0 +drivers/char/ftape/lowlevel/ftape ftape_trace_exit 0x4e755dcf +drivers/char/ftape/lowlevel/ftape ftape_trace_log 0x92ce7eb1 +drivers/char/ftape/lowlevel/ftape ftape_tracing 0x6b6253d3 +drivers/char/ftape/lowlevel/ftape ftape_verify_segment 0x82675be7 +drivers/char/ftape/lowlevel/ftape ftape_write_segment 0x8a09c846 +drivers/char/ftape/lowlevel/ftape ftape_zap_read_buffers 0xdd9f0ae0 +drivers/char/ftape/zftape/zftape zft_cmpr_register 0xe27489d5 +drivers/char/ftape/zftape/zftape zft_fetch_segment_fraction 0x41f166c1 +drivers/char/ftape/zftape/zftape zft_vfree 0x02da35e5 +drivers/char/ftape/zftape/zftape zft_vmalloc_always 0x1770d505 +drivers/char/ftape/zftape/zftape zft_vmalloc_once 0x3c4b9c89 +drivers/char/generic_serial gs_block_til_ready 0xeba3741c +drivers/char/generic_serial gs_chars_in_buffer 0xd49ea2a0 +drivers/char/generic_serial gs_close 0x10bd5c83 +drivers/char/generic_serial gs_flush_buffer 0xe3509e8d +drivers/char/generic_serial gs_flush_chars 0x20bfbf8e +drivers/char/generic_serial gs_getserial 0x7e32d1f6 +drivers/char/generic_serial gs_got_break 0x4268dcfb +drivers/char/generic_serial gs_hangup 0xc4992124 +drivers/char/generic_serial gs_init_port 0x1fdac3b3 +drivers/char/generic_serial gs_put_char 0xe2d6402e +drivers/char/generic_serial gs_set_termios 0x6329a775 +drivers/char/generic_serial gs_setserial 0x467122f5 +drivers/char/generic_serial gs_start 0x69e16ae1 +drivers/char/generic_serial gs_stop 0x48e2186d +drivers/char/generic_serial gs_write 0xc21502a5 +drivers/char/generic_serial gs_write_room 0xe82099f0 +drivers/char/ip2main ip2_loadmain 0x5f735f69 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0xb6c79056 +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0xeaa9a9ba +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0x6b651694 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0xf936ecb5 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0xfa421011 +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0xfeebda43 +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0x0490d64a +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0xe747f055 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0xe296f36b +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x1bd256e7 +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0x77333e34 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0x86f76fe8 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0xedcbf7c1 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0xc452f876 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0x569a2b9a +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0x8880d2bd +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0x2d733d5d +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0xad658fed +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0xfc4d7df5 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0x0e87de52 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0xf3f0bb92 +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0xd5016049 +drivers/char/nvram __nvram_check_checksum 0x2adec1e0 +drivers/char/nvram __nvram_read_byte 0x17ff2c1d +drivers/char/nvram __nvram_write_byte 0xa8813189 +drivers/char/nvram nvram_check_checksum 0x7da28f12 +drivers/char/nvram nvram_read_byte 0x0f28cb91 +drivers/char/nvram nvram_write_byte 0x9ce3f83f +drivers/char/tpm/tpm tpm_open 0xd4f9610b +drivers/char/tpm/tpm tpm_pm_resume 0xc5cdc029 +drivers/char/tpm/tpm tpm_pm_suspend 0xa1c21852 +drivers/char/tpm/tpm tpm_read 0xbfcb530b +drivers/char/tpm/tpm tpm_register_hardware 0x68fd4c55 +drivers/char/tpm/tpm tpm_release 0xd64f4946 +drivers/char/tpm/tpm tpm_remove_hardware 0xfadbf60e +drivers/char/tpm/tpm tpm_show_caps 0x0745d7a8 +drivers/char/tpm/tpm tpm_show_pcrs 0x39d5481b +drivers/char/tpm/tpm tpm_show_pubek 0x1f410664 +drivers/char/tpm/tpm tpm_store_cancel 0x01bf1978 +drivers/char/tpm/tpm tpm_write 0x1a180afc +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0x230e71d5 +drivers/cpufreq/freq_table cpufreq_freq_attr_scaling_available_freqs 0x6234281e +drivers/cpufreq/freq_table cpufreq_frequency_get_table 0x2f47d8c7 +drivers/cpufreq/freq_table cpufreq_frequency_table_cpuinfo 0x80ffe640 +drivers/cpufreq/freq_table cpufreq_frequency_table_get_attr 0x706b3a33 +drivers/cpufreq/freq_table cpufreq_frequency_table_put_attr 0x7ae1ae8e +drivers/cpufreq/freq_table cpufreq_frequency_table_target 0x42f0a01f +drivers/cpufreq/freq_table cpufreq_frequency_table_verify 0xb411fde4 +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-bit i2c_bit_add_bus 0x8ffb129c +drivers/i2c/algos/i2c-algo-bit i2c_bit_del_bus 0x7f9d9735 +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0x704c67df +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0x802ae276 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0x91f30de2 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0x6195884b +drivers/i2c/busses/i2c-amd756 amd756_smbus 0x33ede29f +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0x303a8fd4 +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0xd22d0fbd +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/i2c/i2c-core i2c_adapter_class 0x86ba8329 +drivers/i2c/i2c-core i2c_adapter_dev_release 0x34c3eb9a +drivers/i2c/i2c-core i2c_adapter_driver 0x41714cae +drivers/i2c/i2c-core i2c_add_adapter 0x0f3bb9ac +drivers/i2c/i2c-core i2c_add_driver 0xc2e092c5 +drivers/i2c/i2c-core i2c_attach_client 0x489e0390 +drivers/i2c/i2c-core i2c_bus_type 0x115cf82d +drivers/i2c/i2c-core i2c_check_addr 0x6bab5f2a +drivers/i2c/i2c-core i2c_clients_command 0xf09023f5 +drivers/i2c/i2c-core i2c_control 0xe62d0a48 +drivers/i2c/i2c-core i2c_del_adapter 0x700b1630 +drivers/i2c/i2c-core i2c_del_driver 0x6518c53b +drivers/i2c/i2c-core i2c_detach_client 0xc0e65ae7 +drivers/i2c/i2c-core i2c_get_adapter 0x008e05f2 +drivers/i2c/i2c-core i2c_master_recv 0x98e5af6f +drivers/i2c/i2c-core i2c_master_send 0xd3ccf2e3 +drivers/i2c/i2c-core i2c_probe 0x7a491700 +drivers/i2c/i2c-core i2c_put_adapter 0x78ce28ce +drivers/i2c/i2c-core i2c_release_client 0x034ace01 +drivers/i2c/i2c-core i2c_smbus_read_byte 0xf849bcdf +drivers/i2c/i2c-core i2c_smbus_read_byte_data 0xb1aa5216 +drivers/i2c/i2c-core i2c_smbus_read_i2c_block_data 0x6447b592 +drivers/i2c/i2c-core i2c_smbus_read_word_data 0xb2365e95 +drivers/i2c/i2c-core i2c_smbus_write_block_data 0x358d4240 +drivers/i2c/i2c-core i2c_smbus_write_byte 0x64146891 +drivers/i2c/i2c-core i2c_smbus_write_byte_data 0x0d1b99b5 +drivers/i2c/i2c-core i2c_smbus_write_quick 0x99df60c7 +drivers/i2c/i2c-core i2c_smbus_write_word_data 0x5c1f1219 +drivers/i2c/i2c-core i2c_smbus_xfer 0x3e59c1a9 +drivers/i2c/i2c-core i2c_transfer 0x4226e786 +drivers/i2c/i2c-core i2c_use_client 0x78087e09 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0x336406db +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x07d47ac9 +drivers/ieee1394/ieee1394 csr1212_read 0x62913498 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x33805a4e +drivers/ieee1394/ieee1394 dma_prog_region_free 0xbf2040c7 +drivers/ieee1394/ieee1394 dma_prog_region_init 0x33495565 +drivers/ieee1394/ieee1394 dma_region_alloc 0x13ec9b65 +drivers/ieee1394/ieee1394 dma_region_free 0x3933224a +drivers/ieee1394/ieee1394 dma_region_init 0x1eb47908 +drivers/ieee1394/ieee1394 dma_region_mmap 0xffeec6f1 +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0x7ba85245 +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0x1379a49f +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x6bd63a8e +drivers/ieee1394/ieee1394 highlevel_host_reset 0x75c66426 +drivers/ieee1394/ieee1394 hpsb_add_host 0xeb60832c +drivers/ieee1394/ieee1394 hpsb_alloc_host 0x7f9a41b0 +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0x5ae21cf5 +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0x762d55fb +drivers/ieee1394/ieee1394 hpsb_bus_reset 0xb767e6a5 +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0x52282a81 +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0xe2b72235 +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0x48019da4 +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0x116a7f12 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0x3aaf9b1f +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0x88e23fb4 +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0x76b2b4a3 +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0x58cc3be0 +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0x3f4f1e15 +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0xb81895cc +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0x43e4fbe2 +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0x1df2e20f +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0x0b37a7be +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0x5a1a753f +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0x3e001f98 +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0xe327ea26 +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0xadfb6615 +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0x3cbc215b +drivers/ieee1394/ieee1394 hpsb_iso_stop 0x4cbba547 +drivers/ieee1394/ieee1394 hpsb_iso_wake 0x88847449 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x6a26cd1d +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0x57067176 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0x696a7df9 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0xf1f01ee2 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0x10ac5f90 +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0xc2ca4517 +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0xe2af53b1 +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0x426900b6 +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0xdb99aaca +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0xc97a5b78 +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0xf43b35f6 +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0xffb90b11 +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0x8ee56640 +drivers/ieee1394/ieee1394 hpsb_node_write 0x90bffd9a +drivers/ieee1394/ieee1394 hpsb_packet_received 0xac13a232 +drivers/ieee1394/ieee1394 hpsb_packet_sent 0xf6643cdd +drivers/ieee1394/ieee1394 hpsb_packet_success 0x4bd9c8e7 +drivers/ieee1394/ieee1394 hpsb_protocol_class 0x70b4dc1b +drivers/ieee1394/ieee1394 hpsb_read 0x8098623e +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0xd6828acf +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0x17ace745 +drivers/ieee1394/ieee1394 hpsb_register_protocol 0xa293dad9 +drivers/ieee1394/ieee1394 hpsb_remove_host 0x17b63793 +drivers/ieee1394/ieee1394 hpsb_reset_bus 0x3a89a78f +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0x0601feb8 +drivers/ieee1394/ieee1394 hpsb_selfid_received 0x2cb43dc4 +drivers/ieee1394/ieee1394 hpsb_send_packet 0x5c25c63e +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0xa47ecf40 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0xc9333f4b +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0x9d4077ea +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0xf77592c0 +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0x7097b155 +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0xf7b12b8a +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0x4e5cfca2 +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0x0a4d16c5 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0x7dc8af54 +drivers/ieee1394/ieee1394 hpsb_write 0xab5bfd43 +drivers/ieee1394/ieee1394 ieee1394_bus_type 0x22c60c6d +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0x1d5aeebc +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0xdd044585 +drivers/ieee1394/ohci1394 ohci1394_stop_context 0x23f419b8 +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0x79107db8 +drivers/infiniband/core/ib_cm ib_cm_establish 0x113ac3ee +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0x5f796794 +drivers/infiniband/core/ib_cm ib_cm_listen 0x2b86c470 +drivers/infiniband/core/ib_cm ib_create_cm_id 0x894ca976 +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0x2412eca5 +drivers/infiniband/core/ib_cm ib_send_cm_apr 0x6b2a9311 +drivers/infiniband/core/ib_cm ib_send_cm_drep 0xbd1c746d +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0x49879902 +drivers/infiniband/core/ib_cm ib_send_cm_lap 0xeae7612f +drivers/infiniband/core/ib_cm ib_send_cm_mra 0x919ac0b0 +drivers/infiniband/core/ib_cm ib_send_cm_rej 0x23258290 +drivers/infiniband/core/ib_cm ib_send_cm_rep 0x5de571cf +drivers/infiniband/core/ib_cm ib_send_cm_req 0x48805f80 +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0xc0c4ba21 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0xcfd01ef9 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0x171ad101 +drivers/infiniband/core/ib_core ib_alloc_device 0xcacddc09 +drivers/infiniband/core/ib_core ib_alloc_fmr 0xe9edecb6 +drivers/infiniband/core/ib_core ib_alloc_mw 0xe803e4bf +drivers/infiniband/core/ib_core ib_alloc_pd 0xce371288 +drivers/infiniband/core/ib_core ib_attach_mcast 0x430b6d74 +drivers/infiniband/core/ib_core ib_create_ah 0x502c894d +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0xb1d0633b +drivers/infiniband/core/ib_core ib_create_cq 0x07d9d4c6 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0x5ada691b +drivers/infiniband/core/ib_core ib_create_qp 0x340b761c +drivers/infiniband/core/ib_core ib_create_srq 0x135dc22a +drivers/infiniband/core/ib_core ib_dealloc_device 0xe75b804e +drivers/infiniband/core/ib_core ib_dealloc_fmr 0xb18917f7 +drivers/infiniband/core/ib_core ib_dealloc_mw 0x292ca10f +drivers/infiniband/core/ib_core ib_dealloc_pd 0x567f4ed9 +drivers/infiniband/core/ib_core ib_dereg_mr 0x6ecff4ff +drivers/infiniband/core/ib_core ib_destroy_ah 0x8244b658 +drivers/infiniband/core/ib_core ib_destroy_cq 0xa16a2bca +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x74d97c93 +drivers/infiniband/core/ib_core ib_destroy_qp 0x8c18f9ee +drivers/infiniband/core/ib_core ib_destroy_srq 0x7b6bf321 +drivers/infiniband/core/ib_core ib_detach_mcast 0x1a33dc0c +drivers/infiniband/core/ib_core ib_dispatch_event 0x7d51a799 +drivers/infiniband/core/ib_core ib_find_cached_gid 0xdeae85f2 +drivers/infiniband/core/ib_core ib_find_cached_pkey 0xfe0876ca +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0xfd2b1128 +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0xa1d56996 +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0x88d9132c +drivers/infiniband/core/ib_core ib_get_cached_gid 0x426254dd +drivers/infiniband/core/ib_core ib_get_cached_pkey 0x8c6aca05 +drivers/infiniband/core/ib_core ib_get_client_data 0xe643eee3 +drivers/infiniband/core/ib_core ib_get_dma_mr 0xb78df10b +drivers/infiniband/core/ib_core ib_modify_ah 0x361b3902 +drivers/infiniband/core/ib_core ib_modify_device 0x248158bf +drivers/infiniband/core/ib_core ib_modify_port 0xd224db0f +drivers/infiniband/core/ib_core ib_modify_qp 0xdcb5ff45 +drivers/infiniband/core/ib_core ib_modify_srq 0x1af0a780 +drivers/infiniband/core/ib_core ib_pack 0x06830b9a +drivers/infiniband/core/ib_core ib_query_ah 0x81a0e1ca +drivers/infiniband/core/ib_core ib_query_device 0x91614db5 +drivers/infiniband/core/ib_core ib_query_gid 0x4efad20e +drivers/infiniband/core/ib_core ib_query_mr 0x305910ef +drivers/infiniband/core/ib_core ib_query_pkey 0x85c425c0 +drivers/infiniband/core/ib_core ib_query_port 0xaf9386a4 +drivers/infiniband/core/ib_core ib_query_qp 0x934df211 +drivers/infiniband/core/ib_core ib_query_srq 0xbe9fbb40 +drivers/infiniband/core/ib_core ib_reg_phys_mr 0x5f122547 +drivers/infiniband/core/ib_core ib_register_client 0x6225b151 +drivers/infiniband/core/ib_core ib_register_device 0xf00f474a +drivers/infiniband/core/ib_core ib_register_event_handler 0x78e94894 +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x769d3b6d +drivers/infiniband/core/ib_core ib_resize_cq 0x5a6b3495 +drivers/infiniband/core/ib_core ib_set_client_data 0x1656f00d +drivers/infiniband/core/ib_core ib_ud_header_init 0x965c1dae +drivers/infiniband/core/ib_core ib_ud_header_pack 0x8d12f837 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0x11d42382 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xf96fc9de +drivers/infiniband/core/ib_core ib_unregister_client 0x26e9d232 +drivers/infiniband/core/ib_core ib_unregister_device 0xc9c5f9bf +drivers/infiniband/core/ib_core ib_unregister_event_handler 0x2ed649cc +drivers/infiniband/core/ib_mad ib_cancel_mad 0x4ed0b0ce +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x6a3bbc94 +drivers/infiniband/core/ib_mad ib_create_send_mad 0x70921ac5 +drivers/infiniband/core/ib_mad ib_free_recv_mad 0xd6f8244e +drivers/infiniband/core/ib_mad ib_free_send_mad 0xf7409496 +drivers/infiniband/core/ib_mad ib_modify_mad 0xaf2df74c +drivers/infiniband/core/ib_mad ib_post_send_mad 0xd2372c84 +drivers/infiniband/core/ib_mad ib_process_mad_wc 0xa8feb5e6 +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0x0360e8db +drivers/infiniband/core/ib_mad ib_register_mad_agent 0xb9390812 +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0xb7b3f30d +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0x9e57e70f +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0x22563b11 +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0xbd857fde +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0xe42447f2 +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0xcad62cfb +drivers/input/gameport/gameport __gameport_register_driver 0x31e85eba +drivers/input/gameport/gameport __gameport_register_port 0x10fedf58 +drivers/input/gameport/gameport gameport_close 0x43587d87 +drivers/input/gameport/gameport gameport_cooked_read 0x2105c8b5 +drivers/input/gameport/gameport gameport_open 0x923485f3 +drivers/input/gameport/gameport gameport_rescan 0x567e7e0e +drivers/input/gameport/gameport gameport_set_name 0xb13db0c9 +drivers/input/gameport/gameport gameport_set_phys 0x3b1e4919 +drivers/input/gameport/gameport gameport_start_polling 0x7c28b95e +drivers/input/gameport/gameport gameport_stop_polling 0x12fceb76 +drivers/input/gameport/gameport gameport_unregister_driver 0xd55f698f +drivers/input/gameport/gameport gameport_unregister_port 0xa9d230a3 +drivers/isdn/capi/capifs capifs_free_ncci 0x2c54c957 +drivers/isdn/capi/capifs capifs_new_ncci 0xd0bc06ce +drivers/isdn/capi/kernelcapi attach_capi_ctr 0x2dec7ed5 +drivers/isdn/capi/kernelcapi capi20_get_manufacturer 0x7e6f1307 +drivers/isdn/capi/kernelcapi capi20_get_profile 0xe19a11ac +drivers/isdn/capi/kernelcapi capi20_get_serial 0x7a33596c +drivers/isdn/capi/kernelcapi capi20_get_version 0x14f2aa5a +drivers/isdn/capi/kernelcapi capi20_isinstalled 0x31c24aa4 +drivers/isdn/capi/kernelcapi capi20_manufacturer 0xed061606 +drivers/isdn/capi/kernelcapi capi20_put_message 0xb757ea13 +drivers/isdn/capi/kernelcapi capi20_register 0x345ddae0 +drivers/isdn/capi/kernelcapi capi20_release 0x537ad720 +drivers/isdn/capi/kernelcapi capi20_set_callback 0x7711576c +drivers/isdn/capi/kernelcapi capi_cmd2str 0xb19fda8d +drivers/isdn/capi/kernelcapi capi_cmsg2message 0x50b33ca4 +drivers/isdn/capi/kernelcapi capi_cmsg2str 0xd45b5eb5 +drivers/isdn/capi/kernelcapi capi_cmsg_header 0xb60e5e5f +drivers/isdn/capi/kernelcapi capi_ctr_handle_message 0x669768d0 +drivers/isdn/capi/kernelcapi capi_ctr_ready 0xea6a88df +drivers/isdn/capi/kernelcapi capi_ctr_reseted 0x059de561 +drivers/isdn/capi/kernelcapi capi_ctr_resume_output 0xfb977902 +drivers/isdn/capi/kernelcapi capi_ctr_suspend_output 0x07ce2a17 +drivers/isdn/capi/kernelcapi capi_info2str 0x47d3fc51 +drivers/isdn/capi/kernelcapi capi_message2cmsg 0x6057c6f3 +drivers/isdn/capi/kernelcapi capi_message2str 0xa7abc5e3 +drivers/isdn/capi/kernelcapi capilib_data_b3_conf 0x62e32d43 +drivers/isdn/capi/kernelcapi capilib_data_b3_req 0x71e8d5ba +drivers/isdn/capi/kernelcapi capilib_free_ncci 0x2b8eab1f +drivers/isdn/capi/kernelcapi capilib_new_ncci 0x2baa6586 +drivers/isdn/capi/kernelcapi capilib_release 0x8f699913 +drivers/isdn/capi/kernelcapi capilib_release_appl 0xaa165d27 +drivers/isdn/capi/kernelcapi detach_capi_ctr 0x8cf902c8 +drivers/isdn/capi/kernelcapi register_capi_driver 0x9f823278 +drivers/isdn/capi/kernelcapi unregister_capi_driver 0x04403fcf +drivers/isdn/hardware/avm/b1 avmcard_dma_alloc 0x9e645050 +drivers/isdn/hardware/avm/b1 avmcard_dma_free 0x883a2e41 +drivers/isdn/hardware/avm/b1 b1_alloc_card 0x6700f7f9 +drivers/isdn/hardware/avm/b1 b1_detect 0xdfd28376 +drivers/isdn/hardware/avm/b1 b1_free_card 0x69e9e6ca +drivers/isdn/hardware/avm/b1 b1_getrevision 0x29a52766 +drivers/isdn/hardware/avm/b1 b1_interrupt 0x42fe58a1 +drivers/isdn/hardware/avm/b1 b1_irq_table 0x85f09690 +drivers/isdn/hardware/avm/b1 b1_load_config 0xdf3281e1 +drivers/isdn/hardware/avm/b1 b1_load_firmware 0x469c5ae4 +drivers/isdn/hardware/avm/b1 b1_load_t4file 0x2b38350e +drivers/isdn/hardware/avm/b1 b1_loaded 0x594686f3 +drivers/isdn/hardware/avm/b1 b1_parse_version 0xc7165f6b +drivers/isdn/hardware/avm/b1 b1_register_appl 0x1267f713 +drivers/isdn/hardware/avm/b1 b1_release_appl 0x6a853df3 +drivers/isdn/hardware/avm/b1 b1_reset_ctr 0x5e134e46 +drivers/isdn/hardware/avm/b1 b1_send_message 0xd6429e1a +drivers/isdn/hardware/avm/b1 b1ctl_read_proc 0x1b9aa487 +drivers/isdn/hardware/avm/b1dma b1dma_interrupt 0x405cf7b2 +drivers/isdn/hardware/avm/b1dma b1dma_load_firmware 0x5217872a +drivers/isdn/hardware/avm/b1dma b1dma_register_appl 0x948211db +drivers/isdn/hardware/avm/b1dma b1dma_release_appl 0xcb63de5f +drivers/isdn/hardware/avm/b1dma b1dma_reset 0x894ea0c9 +drivers/isdn/hardware/avm/b1dma b1dma_reset_ctr 0x55cf6eb8 +drivers/isdn/hardware/avm/b1dma b1dma_send_message 0xd2041593 +drivers/isdn/hardware/avm/b1dma b1dmactl_read_proc 0x10bebc13 +drivers/isdn/hardware/avm/b1dma b1pciv4_detect 0x71475eac +drivers/isdn/hardware/avm/b1dma t1pci_detect 0xe421582b +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_b1 0xf14bf8b1 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m1 0xaec3240e +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m2 0xea620116 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_delcard 0x29562993 +drivers/isdn/hardware/eicon/divadidd DIVA_DIDD_Read 0x2974ead1 +drivers/isdn/hardware/eicon/divadidd proc_net_eicon 0x31e7015d +drivers/isdn/hisax/hisax FsmChangeState 0x93a64734 +drivers/isdn/hisax/hisax FsmDelTimer 0x799088e0 +drivers/isdn/hisax/hisax FsmEvent 0x9df0cd27 +drivers/isdn/hisax/hisax FsmFree 0x148f0c99 +drivers/isdn/hisax/hisax FsmInitTimer 0x52866abe +drivers/isdn/hisax/hisax FsmNew 0xf0a16657 +drivers/isdn/hisax/hisax FsmRestartTimer 0xde7e7906 +drivers/isdn/hisax/hisax HiSax_closecard 0xfc27303b +drivers/isdn/hisax/hisax hisax_init_pcmcia 0xedaa54f1 +drivers/isdn/hisax/hisax hisax_register 0xee93522c +drivers/isdn/hisax/hisax hisax_unregister 0x07f4f2ce +drivers/isdn/hisax/hisax_isac isac_d_l2l1 0x3f3b323a +drivers/isdn/hisax/hisax_isac isac_init 0xda57b070 +drivers/isdn/hisax/hisax_isac isac_irq 0xc3e622cf +drivers/isdn/hisax/hisax_isac isac_setup 0xcaa48c67 +drivers/isdn/hisax/hisax_isac isacsx_irq 0x65d36808 +drivers/isdn/hisax/hisax_isac isacsx_setup 0xd816c355 +drivers/isdn/hisax/isdnhdlc isdnhdlc_bit_rev_tab 0xe82c3e32 +drivers/isdn/hisax/isdnhdlc isdnhdlc_decode 0x1a1afeef +drivers/isdn/hisax/isdnhdlc isdnhdlc_encode 0x52a6537c +drivers/isdn/hisax/isdnhdlc isdnhdlc_out_init 0x277685da +drivers/isdn/hisax/isdnhdlc isdnhdlc_rcv_init 0x1dc6a9fc +drivers/isdn/i4l/isdn isdn_ppp_register_compressor 0x7cbcd8bb +drivers/isdn/i4l/isdn isdn_ppp_unregister_compressor 0xa3f3c4e5 +drivers/isdn/i4l/isdn isdn_register_divert 0xb7757abb +drivers/isdn/i4l/isdn register_isdn 0x7dcf08fe +drivers/isdn/misdn/mISDN_core mISDN_AddIE 0xcd11293e +drivers/isdn/misdn/mISDN_core mISDN_AddvarIE 0x37252c3a +drivers/isdn/misdn/mISDN_core mISDN_ConnectIF 0x610b81ba +drivers/isdn/misdn/mISDN_core mISDN_DisConnectIF 0x40914c7b +drivers/isdn/misdn/mISDN_core mISDN_FsmAddTimer 0x7214e53f +drivers/isdn/misdn/mISDN_core mISDN_FsmChangeState 0x50c2230c +drivers/isdn/misdn/mISDN_core mISDN_FsmDelTimer 0x3010393f +drivers/isdn/misdn/mISDN_core mISDN_FsmEvent 0xd5145151 +drivers/isdn/misdn/mISDN_core mISDN_FsmFree 0x2348cc3c +drivers/isdn/misdn/mISDN_core mISDN_FsmInitTimer 0x172da300 +drivers/isdn/misdn/mISDN_core mISDN_FsmNew 0xf9e7832f +drivers/isdn/misdn/mISDN_core mISDN_FsmRestartTimer 0x50a5d950 +drivers/isdn/misdn/mISDN_core mISDN_HasProtocol 0xb558f75b +drivers/isdn/misdn/mISDN_core mISDN_LogL3Msg 0x1a902bb3 +drivers/isdn/misdn/mISDN_core mISDN_QuickHex 0x91b96ea6 +drivers/isdn/misdn/mISDN_core mISDN_RemoveUsedPID 0xd956d2e8 +drivers/isdn/misdn/mISDN_core mISDN_SetHandledPID 0x020cda6d +drivers/isdn/misdn/mISDN_core mISDN_SetIF 0x134df8ce +drivers/isdn/misdn/mISDN_core mISDN_alloc_l3msg 0x08df2c67 +drivers/isdn/misdn/mISDN_core mISDN_bprotocol2pid 0xed673eae +drivers/isdn/misdn/mISDN_core mISDN_debug 0xff10c7d9 +drivers/isdn/misdn/mISDN_core mISDN_debugprint 0x6cdd287f +drivers/isdn/misdn/mISDN_core mISDN_free_bch 0x7a3f8644 +drivers/isdn/misdn/mISDN_core mISDN_free_dch 0x8e9f12ad +drivers/isdn/misdn/mISDN_core mISDN_get_down_layer 0xd1c0ae73 +drivers/isdn/misdn/mISDN_core mISDN_get_lowlayer 0x9f6faa8f +drivers/isdn/misdn/mISDN_core mISDN_get_protocol 0x4c842e5a +drivers/isdn/misdn/mISDN_core mISDN_get_up_layer 0xc6091c92 +drivers/isdn/misdn/mISDN_core mISDN_getrev 0x91f1a1b8 +drivers/isdn/misdn/mISDN_core mISDN_initQ931_info 0x45d57ad5 +drivers/isdn/misdn/mISDN_core mISDN_init_bch 0x6035b9ac +drivers/isdn/misdn/mISDN_core mISDN_init_dch 0xf0ace5b6 +drivers/isdn/misdn/mISDN_core mISDN_init_instance 0x6bedf91a +drivers/isdn/misdn/mISDN_core mISDN_l3_ie2pos 0x6a35c630 +drivers/isdn/misdn/mISDN_core mISDN_l3_pos2ie 0x31559777 +drivers/isdn/misdn/mISDN_core mISDN_layermask2layer 0x48cbe644 +drivers/isdn/misdn/mISDN_core mISDN_register 0x4dd56bfa +drivers/isdn/misdn/mISDN_core mISDN_set_dchannel_pid 0xca03ed9e +drivers/isdn/misdn/mISDN_core mISDN_unregister 0xe0c125f2 +drivers/isdn/misdn/mISDN_core vmISDN_debug 0x85718442 +drivers/isdn/misdn/mISDN_isac mISDN_ISAC_l1hw 0x6dacc6ff +drivers/isdn/misdn/mISDN_isac mISDN_clear_isac 0xd2d3bc45 +drivers/isdn/misdn/mISDN_isac mISDN_isac_free 0x2fc446f3 +drivers/isdn/misdn/mISDN_isac mISDN_isac_init 0xbf8787b6 +drivers/isdn/misdn/mISDN_isac mISDN_isac_interrupt 0x39b5f702 +drivers/md/dm-mirror dm_create_dirty_log 0xc09c5d97 +drivers/md/dm-mirror dm_destroy_dirty_log 0xad666d06 +drivers/md/dm-mirror dm_register_dirty_log_type 0xfb0ef7f7 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x0d705c30 +drivers/md/dm-mod dm_get_device 0x0f21e56e +drivers/md/dm-mod dm_get_mapinfo 0xcb1b933d +drivers/md/dm-mod dm_io_async 0xe854a998 +drivers/md/dm-mod dm_io_async_bvec 0x08c04618 +drivers/md/dm-mod dm_io_async_vm 0xce9d269a +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0x8f0a0129 +drivers/md/dm-mod dm_io_sync_bvec 0x7d66ed64 +drivers/md/dm-mod dm_io_sync_vm 0x418448a7 +drivers/md/dm-mod dm_put_device 0x6a108e5c +drivers/md/dm-mod dm_register_target 0x640b7c82 +drivers/md/dm-mod dm_table_event 0x7c5044fc +drivers/md/dm-mod dm_table_flush_all 0xe9ff318b +drivers/md/dm-mod dm_table_get 0x8d21c1a3 +drivers/md/dm-mod dm_table_get_mode 0xb6284af5 +drivers/md/dm-mod dm_table_get_size 0xb91073d8 +drivers/md/dm-mod dm_table_put 0xd6c2f5f6 +drivers/md/dm-mod dm_table_unplug_all 0x80a4f0d0 +drivers/md/dm-mod dm_unregister_target 0x4730b1ec +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0xa7b834fa +drivers/md/dm-mod kcopyd_client_create 0xd5782fe2 +drivers/md/dm-mod kcopyd_client_destroy 0x02f8b169 +drivers/md/dm-mod kcopyd_copy 0xd8cd65fc +drivers/md/dm-multipath dm_pg_init_complete 0x54e4b3c4 +drivers/md/dm-multipath dm_register_hw_handler 0x29dd34f8 +drivers/md/dm-multipath dm_register_path_selector 0xc19a890e +drivers/md/dm-multipath dm_scsi_err_handler 0x79ce36e9 +drivers/md/dm-multipath dm_unregister_hw_handler 0x1e3c7526 +drivers/md/dm-multipath dm_unregister_path_selector 0x30f738b2 +drivers/md/md-mod bitmap_close_sync 0xc10c3173 +drivers/md/md-mod bitmap_daemon_work 0x5972090a +drivers/md/md-mod bitmap_end_sync 0xa0984c11 +drivers/md/md-mod bitmap_endwrite 0xc1803290 +drivers/md/md-mod bitmap_start_sync 0x8dc46f22 +drivers/md/md-mod bitmap_startwrite 0xf77cbc5c +drivers/md/md-mod bitmap_unplug 0x7823761d +drivers/md/md-mod md_check_recovery 0xd571f66c +drivers/md/md-mod md_done_sync 0x07d4ffa4 +drivers/md/md-mod md_error 0x3fdf618d +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x59aa28b5 +drivers/md/md-mod md_unregister_thread 0xa1077459 +drivers/md/md-mod md_wakeup_thread 0x2c60729c +drivers/md/md-mod md_write_end 0x16e7d46a +drivers/md/md-mod md_write_start 0xbec0519e +drivers/md/md-mod register_md_personality 0xb05c2cc9 +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x4740e7a3 +drivers/media/common/ir-common ir_codes_hauppauge_new 0x902a3cd2 +drivers/media/common/ir-common ir_codes_pinnacle 0xd3a0f048 +drivers/media/common/ir-common ir_codes_pixelview 0xfa177653 +drivers/media/common/ir-common ir_codes_rc5_tv 0xd9c7f010 +drivers/media/common/ir-common ir_codes_winfast 0x89cc1189 +drivers/media/common/ir-common ir_decode_biphase 0x43c89ef4 +drivers/media/common/ir-common ir_decode_pulsedistance 0x2456e513 +drivers/media/common/ir-common ir_dump_samples 0x6d6511e7 +drivers/media/common/ir-common ir_extract_bits 0x1cb148f5 +drivers/media/common/ir-common ir_input_init 0x029419cb +drivers/media/common/ir-common ir_input_keydown 0xfb25820b +drivers/media/common/ir-common ir_input_nokey 0xc72a889d +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x1bedd28f +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0x122eea56 +drivers/media/common/saa7146 saa7146_i2c_transfer 0x6aea1fdd +drivers/media/common/saa7146 saa7146_pgtable_alloc 0x6949763d +drivers/media/common/saa7146 saa7146_pgtable_build_single 0xaac77fd6 +drivers/media/common/saa7146 saa7146_pgtable_free 0x59e46529 +drivers/media/common/saa7146 saa7146_register_extension 0x94f20606 +drivers/media/common/saa7146 saa7146_setgpio 0x80d73f8d +drivers/media/common/saa7146 saa7146_unregister_extension 0x0fce4bb3 +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0xb0d9c6a5 +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0x011bc7b5 +drivers/media/common/saa7146_vv saa7146_register_device 0x236592cc +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0x9a69b705 +drivers/media/common/saa7146_vv saa7146_start_preview 0x6299cd9e +drivers/media/common/saa7146_vv saa7146_stop_preview 0xc6fc6bc6 +drivers/media/common/saa7146_vv saa7146_unregister_device 0x0b6080b0 +drivers/media/common/saa7146_vv saa7146_vv_init 0x1d42d866 +drivers/media/common/saa7146_vv saa7146_vv_release 0x54cd6438 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0x09e42415 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0x910b7f9a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0x3cee2038 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0x23723ab1 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0x60882a37 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0x978cd075 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0x45cf4066 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0xc4170eb7 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0x2507c94c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0x2e10f791 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0xdba68124 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0xfbc938ae +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0x27674a76 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0xb99cabe0 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0xc110b6dd +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0x36dff4ac +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0xd0e8395b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0x3d3840f6 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0x183f7e7e +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0x09db11e8 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0x2e3eab22 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0x00f8aa79 +drivers/media/dvb/bt8xx/bt878 bt878 0xf169d4f8 +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0x8a926b42 +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0xb35dee81 +drivers/media/dvb/bt8xx/bt878 bt878_stop 0xc318050f +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0xfc00f86a +drivers/media/dvb/bt8xx/dst dst_check_sum 0xe94b8c9c +drivers/media/dvb/bt8xx/dst dst_comm_init 0xd7250544 +drivers/media/dvb/bt8xx/dst dst_command 0xaa3c2cb6 +drivers/media/dvb/bt8xx/dst dst_error_bailout 0x7854f5ac +drivers/media/dvb/bt8xx/dst dst_error_recovery 0x63603de2 +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0x68ffab98 +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0x52a7973f +drivers/media/dvb/bt8xx/dst dst_pio_disable 0x6f705be2 +drivers/media/dvb/bt8xx/dst dst_pio_enable 0xfa5a5634 +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0x20c346b1 +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0xe338680f +drivers/media/dvb/bt8xx/dst rdc_reset_state 0x0261194d +drivers/media/dvb/bt8xx/dst read_dst 0x1f8a6401 +drivers/media/dvb/bt8xx/dst write_dst 0x5cf8524e +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0x144c3025 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0x5800f6e8 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0x404bfe74 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0xfd74c11c +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0x156f5c2a +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0x476a36f3 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0xbbfdace1 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0x942eae58 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0xe4228c73 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0xe6cf3689 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x72146fe4 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0xe5117b63 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0x92f5ecb2 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x80e3832d +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x36c8ea1f +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0x3a4a4152 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0x24c05e82 +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0x694628b9 +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0xe3b2d6a6 +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0x7c4d0ad4 +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0x4a0a5062 +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0x003e84e7 +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0xc7ab19c5 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0xf285f7a6 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0x28f24671 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0x8a5fd7bf +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0xa8a9a609 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x4ad03dd5 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0xc70b6fa2 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0x4b48388a +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0xd8ffb173 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0x6d41fb77 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0x4642822d +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0xaef94a45 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0xd9c33fce +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0x18d9aefd +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0x598bdca3 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0x609d1072 +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0x8b49a23f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0x7458bb9c +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0x67d9bb05 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0x8d4ff9e1 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0x6afa906b +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0x726987da +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0x25d2bbf8 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0x499d1517 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0x64a4181a +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0x85669889 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0x3b00ce50 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0x9b54290f +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0x5a9d74bb +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0xe6ddd0e4 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0x2c9b063a +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0x08f7ef8f +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0x0d6612f7 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0xd4d3dddc +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0x0386e056 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0xdb59d7eb +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0xbf218cbb +drivers/media/dvb/frontends/at76c651 at76c651_attach 0x1cb0e605 +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0xea08b0c4 +drivers/media/dvb/frontends/cx22700 cx22700_attach 0x5563aa12 +drivers/media/dvb/frontends/cx22702 cx22702_attach 0xbec56d32 +drivers/media/dvb/frontends/cx24110 cx24110_attach 0xb7db7ba3 +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0x26f371d8 +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0xfd437578 +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0xe762d459 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x05f13eee +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0x32719c82 +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0xba9b5a8d +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0xc43499ed +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x02689b7f +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0x5b259391 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x7a0ed9bb +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0xbf98157e +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xd15aca20 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xfdd5e650 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x2a4f5718 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xc95be182 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x708f579e +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0xe39c77c8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0x12284643 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0xf1d4150d +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0xd5d22e56 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0xccc91f17 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xaddc7276 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x96cce305 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xcbbd68de +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x13856c44 +drivers/media/dvb/frontends/l64781 l64781_attach 0x02e5c37e +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0xe8c30295 +drivers/media/dvb/frontends/mt312 mt312_attach 0x05f92e1e +drivers/media/dvb/frontends/mt312 vp310_attach 0xc610e672 +drivers/media/dvb/frontends/mt352 mt352_attach 0xb9c12f07 +drivers/media/dvb/frontends/mt352 mt352_write 0xe56a4d81 +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0xc58583a2 +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x69667b8c +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0xaf5f8a4e +drivers/media/dvb/frontends/or51132 or51132_attach 0xcfce1b2b +drivers/media/dvb/frontends/or51211 or51211_attach 0xd0b4d109 +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0x202aa04a +drivers/media/dvb/frontends/sp8870 sp8870_attach 0x3b1c84ff +drivers/media/dvb/frontends/sp887x sp887x_attach 0x9cf4c5e9 +drivers/media/dvb/frontends/stv0297 stv0297_attach 0x2c4d9e5a +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0xce9aa3f3 +drivers/media/dvb/frontends/stv0299 stv0299_attach 0x5c267a9b +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0x342c5e52 +drivers/media/dvb/frontends/tda10021 tda10021_attach 0xd4e6f29d +drivers/media/dvb/frontends/tda1004x tda10045_attach 0x545ba012 +drivers/media/dvb/frontends/tda1004x tda10046_attach 0x12a91096 +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0x24449512 +drivers/media/dvb/frontends/tda8083 tda8083_attach 0xa2b9103b +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0x821c4f7a +drivers/media/dvb/frontends/ves1820 ves1820_attach 0x9c6aba91 +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0xe7d8aa25 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0x7b267403 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0x8bc11398 +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0x9acb7718 +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0xf837b4eb +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0x61383e19 +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0x90dba372 +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0xe35b190c +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0x100dae11 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0x3bcaafdb +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0x2e44be41 +drivers/media/video/btcx-risc btcx_riscmem_free 0x1a9f075c +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x450eaeb9 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0xef896544 +drivers/media/video/bttv bttv_gpio_bits 0x37be23bc +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0x5fa5c214 +drivers/media/video/bttv bttv_gpio_read 0x3a3e42e8 +drivers/media/video/bttv bttv_gpio_write 0xe0a307ec +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0xcabb6f93 +drivers/media/video/bttv bttv_sub_register 0x5c0f316f +drivers/media/video/bttv bttv_sub_unregister 0xc227060a +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0x94f54729 +drivers/media/video/cpia cpia_unregister_camera 0xfcdd30d2 +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0x5c1d1e21 +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0x25b77e14 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0xc1e53aff +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0x3a7719fb +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0xc9fac4b3 +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0xc82e3c58 +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0xe5d29d04 +drivers/media/video/cx88/cx8802 cx8802_fini_common 0x4d48c562 +drivers/media/video/cx88/cx8802 cx8802_init_common 0x00338f37 +drivers/media/video/cx88/cx8802 cx8802_resume_common 0xe30fd483 +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0x826fd549 +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x4e6954bf +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0x32a3102f +drivers/media/video/cx88/cx88xx cx88_card_list 0xafe119fe +drivers/media/video/cx88/cx88xx cx88_card_setup 0xdd89645b +drivers/media/video/cx88/cx88xx cx88_core_get 0xf8063339 +drivers/media/video/cx88/cx88xx cx88_core_irq 0xdb5a5359 +drivers/media/video/cx88/cx88xx cx88_core_put 0xbaec7586 +drivers/media/video/cx88/cx88xx cx88_free_buffer 0x19153f42 +drivers/media/video/cx88/cx88xx cx88_get_stereo 0x74d190b2 +drivers/media/video/cx88/cx88xx cx88_i2c_init 0xfd05f7df +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0xbb366bf9 +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x777b6d7f +drivers/media/video/cx88/cx88xx cx88_reset 0x4077e7f3 +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0x2e232e7c +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0xd88dfc77 +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0x2a27513b +drivers/media/video/cx88/cx88xx cx88_set_scale 0x7b12acfc +drivers/media/video/cx88/cx88xx cx88_set_stereo 0xfd0ce9e0 +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0x4a9615a5 +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0x5d3ad066 +drivers/media/video/cx88/cx88xx cx88_shutdown 0x602dc820 +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0xb061dfb2 +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0x2a93e546 +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x9b140fff +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0xde8bff27 +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0x1a2dc348 +drivers/media/video/cx88/cx88xx cx88_subids 0x6b626846 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0x5d45eaad +drivers/media/video/cx88/cx88xx cx88_wakeup 0xce197503 +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0x978c17df +drivers/media/video/saa7134/saa7134 dmasound_exit 0x408f2db3 +drivers/media/video/saa7134/saa7134 dmasound_init 0x0ea9ec9c +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0x5eae2467 +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0x60b073bf +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0xc1636f8a +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0x26dfc39f +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0xd372b017 +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0xdeb767c6 +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0x388eba27 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0xb823feaf +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0x7a0943d3 +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0x0307a16f +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0xf424b4b5 +drivers/media/video/tveeprom tveeprom_read 0xe0e72050 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0xf6f8f59f +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x9c7de443 +drivers/media/video/v4l2-common v4l2_prio_check 0x2f639468 +drivers/media/video/v4l2-common v4l2_prio_close 0x95284709 +drivers/media/video/v4l2-common v4l2_prio_init 0xbecd2858 +drivers/media/video/v4l2-common v4l2_prio_max 0x1dcaa0c8 +drivers/media/video/v4l2-common v4l2_prio_open 0x76ba9a9a +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0x33b3b664 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0x38365f24 +drivers/media/video/video-buf videobuf_dma_init 0xa02765f0 +drivers/media/video/video-buf videobuf_dma_init_kernel 0x03b1c225 +drivers/media/video/video-buf videobuf_dma_init_overlay 0xc1277304 +drivers/media/video/video-buf videobuf_dma_init_user 0xbb19b074 +drivers/media/video/video-buf videobuf_dma_pci_map 0xf689926e +drivers/media/video/video-buf videobuf_dma_pci_sync 0x017528f9 +drivers/media/video/video-buf videobuf_dma_pci_unmap 0x49e9c548 +drivers/media/video/video-buf videobuf_dqbuf 0x6859d0ee +drivers/media/video/video-buf videobuf_iolock 0x15c6f475 +drivers/media/video/video-buf videobuf_mmap_free 0xeb71dd10 +drivers/media/video/video-buf videobuf_mmap_mapper 0xe8811632 +drivers/media/video/video-buf videobuf_mmap_setup 0xe5675dd1 +drivers/media/video/video-buf videobuf_next_field 0x4b8884f8 +drivers/media/video/video-buf videobuf_poll_stream 0x790a991e +drivers/media/video/video-buf videobuf_qbuf 0xabef80ac +drivers/media/video/video-buf videobuf_querybuf 0x50b98cd4 +drivers/media/video/video-buf videobuf_queue_cancel 0x2a3e7d2f +drivers/media/video/video-buf videobuf_queue_init 0x2149a660 +drivers/media/video/video-buf videobuf_queue_is_busy 0xebd74bf3 +drivers/media/video/video-buf videobuf_read_one 0xebc8f733 +drivers/media/video/video-buf videobuf_read_start 0xdc001a31 +drivers/media/video/video-buf videobuf_read_stop 0x160602a9 +drivers/media/video/video-buf videobuf_read_stream 0xba7de2cc +drivers/media/video/video-buf videobuf_reqbufs 0xf2f3be48 +drivers/media/video/video-buf videobuf_status 0xe089a23c +drivers/media/video/video-buf videobuf_streamoff 0x09d5b91d +drivers/media/video/video-buf videobuf_streamon 0xc6f4235b +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0x78ed30dd +drivers/media/video/video-buf videobuf_waiton 0xa37172c5 +drivers/media/video/video-buf-dvb videobuf_dvb_register 0x45eb7d7d +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0x5b81e413 +drivers/media/video/videocodec videocodec_attach 0xb94dc192 +drivers/media/video/videocodec videocodec_detach 0x9d7c02f6 +drivers/media/video/videocodec videocodec_register 0xb3b47abd +drivers/media/video/videocodec videocodec_unregister 0xab9eb8e6 +drivers/media/video/videodev video_devdata 0x914c023a +drivers/media/video/videodev video_device_alloc 0x30db1414 +drivers/media/video/videodev video_device_release 0x16529deb +drivers/media/video/videodev video_exclusive_open 0x323f526d +drivers/media/video/videodev video_exclusive_release 0x1c79fc87 +drivers/media/video/videodev video_register_device 0x6da71eba +drivers/media/video/videodev video_unregister_device 0xbdb29544 +drivers/media/video/videodev video_usercopy 0x5bc63527 +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0x742a7a66 +drivers/message/fusion/mptbase mpt_HardResetHandler 0x3ebbaba8 +drivers/message/fusion/mptbase mpt_add_sge 0x105d4f47 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0x1ef7abfd +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0xdbb7db03 +drivers/message/fusion/mptbase mpt_attach 0xb451c0c9 +drivers/message/fusion/mptbase mpt_config 0x6f2296ff +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0x7f724963 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0x94d56b33 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x7a51dc13 +drivers/message/fusion/mptbase mpt_findImVolumes 0x21cda44e +drivers/message/fusion/mptbase mpt_free_fw_memory 0xc0dd4ccd +drivers/message/fusion/mptbase mpt_free_msg_frame 0x34bb1188 +drivers/message/fusion/mptbase mpt_get_msg_frame 0xe6ebdeaa +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0xe1e0e0b2 +drivers/message/fusion/mptbase mpt_proc_root_dir 0xe3b3daa5 +drivers/message/fusion/mptbase mpt_put_msg_frame 0xe4a75380 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x32e5a24a +drivers/message/fusion/mptbase mpt_register 0x38dbf365 +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x72e7aa53 +drivers/message/fusion/mptbase mpt_resume 0xdfd026a8 +drivers/message/fusion/mptbase mpt_send_handshake_request 0x2438ca20 +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0x3c52921c +drivers/message/fusion/mptbase mpt_toolbox 0x8f6068e4 +drivers/message/fusion/mptbase mpt_verify_adapter 0xeb965a52 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x6a510177 +drivers/message/fusion/mptscsih mptscsih_abort 0x51a202e9 +drivers/message/fusion/mptscsih mptscsih_bios_param 0xea18851d +drivers/message/fusion/mptscsih mptscsih_bus_reset 0xbebc2e6a +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x417023a5 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0x23c07074 +drivers/message/fusion/mptscsih mptscsih_event_process 0xbb0cd65b +drivers/message/fusion/mptscsih mptscsih_host_reset 0x11bd94a1 +drivers/message/fusion/mptscsih mptscsih_info 0x6ff68eef +drivers/message/fusion/mptscsih mptscsih_io_done 0xb6a5817f +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x72804e31 +drivers/message/fusion/mptscsih mptscsih_proc_info 0xaf029cc6 +drivers/message/fusion/mptscsih mptscsih_qcmd 0xdc6f9735 +drivers/message/fusion/mptscsih mptscsih_remove 0xab2b7db8 +drivers/message/fusion/mptscsih mptscsih_resume 0x89395936 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0xd1f40ad1 +drivers/message/fusion/mptscsih mptscsih_shutdown 0xc83381b1 +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0xdb5e64a8 +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x2daf6cae +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x5acb3341 +drivers/message/fusion/mptscsih mptscsih_suspend 0xfc49d9cb +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0xe9d618e8 +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_cntxt_list_add 0xd65a228a +drivers/message/i2o/i2o_core i2o_cntxt_list_get 0x5cb11c72 +drivers/message/i2o/i2o_core i2o_cntxt_list_get_ptr 0xb8d25381 +drivers/message/i2o/i2o_core i2o_cntxt_list_remove 0x272638d7 +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0x7a3200ed +drivers/message/i2o/i2o_core i2o_device_claim_release 0xb2157159 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0x22b5cc26 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x307c18c3 +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x308658b8 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0xab6f2e43 +drivers/message/i2o/i2o_core i2o_driver_register 0xbacc5dd5 +drivers/message/i2o/i2o_core i2o_driver_unregister 0xdcb773fe +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0x74c3ab2c +drivers/message/i2o/i2o_core i2o_exec_lct_get 0x58c9eeb4 +drivers/message/i2o/i2o_core i2o_find_iop 0x5284135e +drivers/message/i2o/i2o_core i2o_iop_find_device 0xa831fb36 +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x9b735cc6 +drivers/message/i2o/i2o_core i2o_msg_nop 0x4cd8bab6 +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0xe945263f +drivers/message/i2o/i2o_core i2o_parm_field_get 0x03309ec0 +drivers/message/i2o/i2o_core i2o_parm_issue 0x2bc6ac2f +drivers/message/i2o/i2o_core i2o_parm_table_get 0x0d485155 +drivers/message/i2o/i2o_core i2o_status_get 0x5fcb6541 +drivers/mmc/mmc_core __mmc_claim_host 0x41928388 +drivers/mmc/mmc_core mmc_add_host 0x041561fc +drivers/mmc/mmc_core mmc_alloc_host 0xbc32e079 +drivers/mmc/mmc_core mmc_cleanup_queue 0x5df0f6ec +drivers/mmc/mmc_core mmc_detect_change 0xa0df9692 +drivers/mmc/mmc_core mmc_free_host 0xa2d30da9 +drivers/mmc/mmc_core mmc_init_queue 0xadd6714f +drivers/mmc/mmc_core mmc_queue_resume 0x25346d1d +drivers/mmc/mmc_core mmc_queue_suspend 0x4ef241f1 +drivers/mmc/mmc_core mmc_register_driver 0x56282115 +drivers/mmc/mmc_core mmc_release_host 0x8249d48f +drivers/mmc/mmc_core mmc_remove_host 0x940c8a6f +drivers/mmc/mmc_core mmc_request_done 0xbde8b6ca +drivers/mmc/mmc_core mmc_resume_host 0x1479e75b +drivers/mmc/mmc_core mmc_start_request 0xc68a8bd3 +drivers/mmc/mmc_core mmc_suspend_host 0x6d341a95 +drivers/mmc/mmc_core mmc_unregister_driver 0xcf941d4f +drivers/mmc/mmc_core mmc_wait_for_app_cmd 0x799417aa +drivers/mmc/mmc_core mmc_wait_for_cmd 0x7e2746ea +drivers/mmc/mmc_core mmc_wait_for_req 0x7252cba1 +drivers/mtd/chips/cfi_util cfi_fixup 0xd77942b8 +drivers/mtd/chips/cfi_util cfi_read_pri 0x41c8f60d +drivers/mtd/chips/cfi_util cfi_varsize_frob 0x26c99716 +drivers/mtd/chips/chipreg do_map_probe 0x4668c2f1 +drivers/mtd/chips/chipreg map_destroy 0x93c1949f +drivers/mtd/chips/chipreg register_mtd_chip_driver 0x86bd7ebe +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0xafa75844 +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0x6220caad +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0x38ea098d +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0xcd17006e +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0xb209666b +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0x08d874da +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0xc5e87cb3 +drivers/mtd/mtdconcat mtd_concat_create 0x39fae2bd +drivers/mtd/mtdconcat mtd_concat_destroy 0xb7e94862 +drivers/mtd/mtdcore add_mtd_device 0x5a87efd5 +drivers/mtd/mtdcore default_mtd_readv 0x2608793c +drivers/mtd/mtdcore default_mtd_writev 0x10eaa749 +drivers/mtd/mtdcore del_mtd_device 0xfd9b2b6d +drivers/mtd/mtdcore get_mtd_device 0xfe72d9d5 +drivers/mtd/mtdcore mtd_table 0x38252fba +drivers/mtd/mtdcore mtd_table_mutex 0x72beff16 +drivers/mtd/mtdcore put_mtd_device 0x8cbc9bfb +drivers/mtd/mtdcore register_mtd_user 0x7e8abf9b +drivers/mtd/mtdcore unregister_mtd_user 0x82da20a7 +drivers/mtd/mtdpart add_mtd_partitions 0xea4212f0 +drivers/mtd/mtdpart del_mtd_partitions 0x1226d985 +drivers/mtd/mtdpart deregister_mtd_parser 0xd6abd10a +drivers/mtd/mtdpart mtd_erase_callback 0x9b9c9bae +drivers/mtd/mtdpart parse_mtd_partitions 0x55636c49 +drivers/mtd/mtdpart register_mtd_parser 0xd2c660cb +drivers/mtd/nand/nand nand_default_bbt 0x800c085a +drivers/mtd/nand/nand nand_release 0x967ff7d3 +drivers/mtd/nand/nand nand_scan 0x1606bb1b +drivers/mtd/nand/nand nand_scan_bbt 0xc407635b +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0x901da7ba +drivers/mtd/onenand/onenand onenand_release 0x6426d88e +drivers/mtd/onenand/onenand onenand_scan 0xddd30181 +drivers/mtd/onenand/onenand onenand_scan_bbt 0x8456d8c9 +drivers/net/8390 NS8390_init 0xbe81df47 +drivers/net/8390 __alloc_ei_netdev 0xbfc3d1e2 +drivers/net/8390 ei_close 0xb9ed5e7a +drivers/net/8390 ei_interrupt 0x4ed4936f +drivers/net/8390 ei_open 0x961508b0 +drivers/net/8390 ei_poll 0xf3fa42a8 +drivers/net/arcnet/arcnet alloc_arcdev 0x2bf38275 +drivers/net/arcnet/arcnet arc_bcast_proto 0xf78027ce +drivers/net/arcnet/arcnet arc_proto_default 0xa33d1a06 +drivers/net/arcnet/arcnet arc_proto_map 0x39a0cfd4 +drivers/net/arcnet/arcnet arc_proto_null 0xbe9ef0ba +drivers/net/arcnet/arcnet arc_raw_proto 0xd4aa07d6 +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0x51fd033d +drivers/net/arcnet/arcnet arcnet_unregister_proto 0xb2d5a26c +drivers/net/arcnet/com20020 com20020_check 0xba06f43d +drivers/net/arcnet/com20020 com20020_found 0x4cef2df3 +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0x2a1b2b72 +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0x687926d9 +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0x2c536eb5 +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0xc38e1f82 +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0x68d5358b +drivers/net/irda/sir-dev irda_register_dongle 0x522cb68a +drivers/net/irda/sir-dev irda_unregister_dongle 0x40cc7ca9 +drivers/net/irda/sir-dev sirdev_get_instance 0x59e6bf72 +drivers/net/irda/sir-dev sirdev_put_instance 0xf084e8b4 +drivers/net/irda/sir-dev sirdev_raw_read 0xbea88f5d +drivers/net/irda/sir-dev sirdev_raw_write 0xfc2712b4 +drivers/net/irda/sir-dev sirdev_receive 0x5fd6c8c1 +drivers/net/irda/sir-dev sirdev_set_dongle 0xc62563e5 +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0x38c51036 +drivers/net/irda/sir-dev sirdev_write_complete 0xbd8279bf +drivers/net/mii generic_mii_ioctl 0x0723c4d5 +drivers/net/mii mii_check_gmii_support 0x42fe1fb0 +drivers/net/mii mii_check_link 0xb6b19b5a +drivers/net/mii mii_check_media 0x670f60a1 +drivers/net/mii mii_ethtool_gset 0x53cd7f8b +drivers/net/mii mii_ethtool_sset 0x844e4699 +drivers/net/mii mii_link_ok 0x0cf50904 +drivers/net/mii mii_nway_restart 0xdd9b1074 +drivers/net/phy/libphy genphy_config_advert 0x4f2c91ff +drivers/net/phy/libphy genphy_config_aneg 0x81fb854b +drivers/net/phy/libphy genphy_read_status 0x8dd28552 +drivers/net/phy/libphy mdiobus_register 0xda686e57 +drivers/net/phy/libphy mdiobus_unregister 0x4e3fb9cc +drivers/net/phy/libphy phy_attach 0xc27b2337 +drivers/net/phy/libphy phy_connect 0x26a78720 +drivers/net/phy/libphy phy_detach 0xb6c8cf97 +drivers/net/phy/libphy phy_disable_interrupts 0xfdbd8ff1 +drivers/net/phy/libphy phy_disconnect 0x7b8dc2a0 +drivers/net/phy/libphy phy_driver_register 0x7ba13299 +drivers/net/phy/libphy phy_driver_unregister 0x7b52b0e6 +drivers/net/phy/libphy phy_enable_interrupts 0x3dcd3486 +drivers/net/phy/libphy phy_print_status 0x54044918 +drivers/net/phy/libphy phy_read 0x7ad6ac8c +drivers/net/phy/libphy phy_sanitize_settings 0x5c4ae4d5 +drivers/net/phy/libphy phy_start 0xb32ef171 +drivers/net/phy/libphy phy_start_aneg 0x955edd63 +drivers/net/phy/libphy phy_start_interrupts 0x5b0c06d6 +drivers/net/phy/libphy phy_stop 0x5b8f9692 +drivers/net/phy/libphy phy_stop_interrupts 0xed483ad6 +drivers/net/phy/libphy phy_write 0xe5064013 +drivers/net/ppp_generic ppp_channel_index 0x983a3761 +drivers/net/ppp_generic ppp_input 0x150e49c9 +drivers/net/ppp_generic ppp_input_error 0x33e72fd5 +drivers/net/ppp_generic ppp_output_wakeup 0x8d4b853d +drivers/net/ppp_generic ppp_register_channel 0xbc689a9a +drivers/net/ppp_generic ppp_register_compressor 0x682b50c7 +drivers/net/ppp_generic ppp_unit_number 0x1e35e58b +drivers/net/ppp_generic ppp_unregister_channel 0x99abf91c +drivers/net/ppp_generic ppp_unregister_compressor 0xd440005a +drivers/net/pppox pppox_unbind_sock 0x943f7788 +drivers/net/pppox register_pppox_proto 0x9d1560dc +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x76135e6c +drivers/net/slhc slhc_free 0x2894cfb0 +drivers/net/slhc slhc_init 0x2e0e927f +drivers/net/slhc slhc_remember 0x0bc55868 +drivers/net/slhc slhc_toss 0xf89e3455 +drivers/net/slhc slhc_uncompress 0x3bc1319e +drivers/net/sungem_phy mii_phy_probe 0x5a151075 +drivers/net/tokenring/tms380tr tms380tr_close 0x6ad7064e +drivers/net/tokenring/tms380tr tms380tr_interrupt 0xc5847c91 +drivers/net/tokenring/tms380tr tms380tr_open 0x7ab9c7d7 +drivers/net/tokenring/tms380tr tms380tr_wait 0xd2328794 +drivers/net/tokenring/tms380tr tmsdev_init 0xd2d96fcd +drivers/net/tokenring/tms380tr tmsdev_term 0x38e7903e +drivers/net/wan/cycx_drv cycx_down 0x66a4c4e6 +drivers/net/wan/cycx_drv cycx_exec 0xfe7cd576 +drivers/net/wan/cycx_drv cycx_intr 0x38da4725 +drivers/net/wan/cycx_drv cycx_peek 0x968458a6 +drivers/net/wan/cycx_drv cycx_poke 0xb6f383de +drivers/net/wan/cycx_drv cycx_setup 0x62be23ea +drivers/net/wan/hdlc alloc_hdlcdev 0x34d0caa2 +drivers/net/wan/hdlc hdlc_close 0xcadfc22e +drivers/net/wan/hdlc hdlc_ioctl 0x7e2080db +drivers/net/wan/hdlc hdlc_open 0x11b8ad33 +drivers/net/wan/hdlc hdlc_set_carrier 0x2ec37095 +drivers/net/wan/hdlc register_hdlc_device 0x4034a158 +drivers/net/wan/hdlc unregister_hdlc_device 0x347e44f6 +drivers/net/wan/syncppp sppp_attach 0x50281df6 +drivers/net/wan/syncppp sppp_close 0xcb85b75c +drivers/net/wan/syncppp sppp_detach 0xd5034a2e +drivers/net/wan/syncppp sppp_do_ioctl 0xb0b7fbfe +drivers/net/wan/syncppp sppp_open 0xda304ad7 +drivers/net/wan/syncppp sppp_reopen 0x10bf714c +drivers/net/wireless/airo init_airo_card 0xbb7b8f73 +drivers/net/wireless/airo reset_airo_card 0x12666e54 +drivers/net/wireless/airo stop_airo_card 0x7ced89ec +drivers/net/wireless/atmel atmel_open 0x40313134 +drivers/net/wireless/atmel init_atmel_card 0xc97d5a7d +drivers/net/wireless/atmel stop_atmel_card 0xca7ace65 +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0xbfd0a797 +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0x09cd1920 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0x7d2de918 +drivers/net/wireless/hostap/hostap hostap_add_interface 0xac43804b +drivers/net/wireless/hostap/hostap hostap_add_sta 0xab2cbc6a +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0x62a4e94c +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0xfc20dce9 +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0xafe3da65 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0x2e8a280e +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0xd6f11bbe +drivers/net/wireless/hostap/hostap hostap_get_porttype 0x7c15c121 +drivers/net/wireless/hostap/hostap hostap_get_stats 0x8ea0bccf +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0xc2583edf +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x9875eff3 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0xbf32618d +drivers/net/wireless/hostap/hostap hostap_info_init 0x1df1f824 +drivers/net/wireless/hostap/hostap hostap_info_process 0x78aa3f59 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0xa31e19ce +drivers/net/wireless/hostap/hostap hostap_init_data 0x2dd0cdf7 +drivers/net/wireless/hostap/hostap hostap_init_proc 0x03537532 +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0xcde929fd +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x9736e629 +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0x42986da1 +drivers/net/wireless/hostap/hostap hostap_proc 0xc6322a69 +drivers/net/wireless/hostap/hostap hostap_remove_interface 0xedb37364 +drivers/net/wireless/hostap/hostap hostap_remove_proc 0xed1c4837 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0xc782741b +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0xe6436c48 +drivers/net/wireless/hostap/hostap hostap_set_encryption 0xdf96e19f +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x7a3fb353 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0x309d95b7 +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0xe309bf42 +drivers/net/wireless/hostap/hostap hostap_set_string 0xde66eb60 +drivers/net/wireless/hostap/hostap hostap_set_word 0x28900547 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0x8e48b712 +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x13fb6edb +drivers/net/wireless/hostap/hostap hostap_update_rates 0x94c78b78 +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0xf8c6fa81 +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x1bc2aff0 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x5fc5ca7c +drivers/net/wireless/orinoco __orinoco_down 0xce7a893e +drivers/net/wireless/orinoco __orinoco_up 0xe0f3dd16 +drivers/net/wireless/orinoco alloc_orinocodev 0x0716ab51 +drivers/net/wireless/orinoco free_orinocodev 0x1b518769 +drivers/net/wireless/orinoco orinoco_interrupt 0x6634d729 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0xce54ad63 +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xfa9db8f8 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0xc64c4545 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0xca28b574 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0xc0551fa9 +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0xf6bbca2b +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x08ed644f +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0xeaa14df3 +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0xf7d4f238 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0x93dde22d +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x4f64ea1b +drivers/net/wireless/prism54_softmac/islsm register_islsm 0x5f6d0f27 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0x007b5716 +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0x65e021bb +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0x23566b7b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0xe2e11c06 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0xbe05d8a4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0xbce35124 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0xb5d7f1ff +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0xe238189b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0x1a58faa7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0x7aa715a6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0x5668557c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0xd953678c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0x35bd8ac4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x092dfe13 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0xc2070ec9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0x14d8ec75 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0x07ef8d0a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0x76a8e668 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x8626c380 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0x4866890e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x1dbbd7a1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0xf5c0e061 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0xe6b98d0f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x389de858 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0xc54b9055 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x37e86203 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0xec7bd5b5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x2b20dc53 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x5853672e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0x6e0f9f98 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0x4061758c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0x8b34e2ba +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x0bf9e4c4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0xa25ae938 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0xfbdbc398 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0x2048742e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x3f421e43 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0xa23c3e03 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0xaeff3ab4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x8c52d417 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0xb4e2ec0e +drivers/parport/parport parport_announce_port 0xe79cb03b +drivers/parport/parport parport_claim 0x564469b4 +drivers/parport/parport parport_claim_or_block 0xe0ffd816 +drivers/parport/parport parport_find_base 0x579418d8 +drivers/parport/parport parport_find_number 0xce017927 +drivers/parport/parport parport_get_port 0xe3cf3810 +drivers/parport/parport parport_ieee1284_ecp_read_data 0x118b71e5 +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xe489f2f5 +drivers/parport/parport parport_ieee1284_ecp_write_data 0xa2966591 +drivers/parport/parport parport_ieee1284_epp_read_addr 0xf3aab9b1 +drivers/parport/parport parport_ieee1284_epp_read_data 0xa159e81b +drivers/parport/parport parport_ieee1284_epp_write_addr 0x04e69659 +drivers/parport/parport parport_ieee1284_epp_write_data 0x42f9013d +drivers/parport/parport parport_ieee1284_interrupt 0x94f45aa3 +drivers/parport/parport parport_ieee1284_read_byte 0x53380509 +drivers/parport/parport parport_ieee1284_read_nibble 0x92bcf2fe +drivers/parport/parport parport_ieee1284_write_compat 0x197aec35 +drivers/parport/parport parport_negotiate 0x551fac5c +drivers/parport/parport parport_put_port 0x5e06e8ab +drivers/parport/parport parport_read 0xebe825d7 +drivers/parport/parport parport_register_device 0x6964c12e +drivers/parport/parport parport_register_driver 0x12712ef6 +drivers/parport/parport parport_register_port 0x08bc418a +drivers/parport/parport parport_release 0x0b32068f +drivers/parport/parport parport_remove_port 0xd250988a +drivers/parport/parport parport_set_timeout 0x4271e13d +drivers/parport/parport parport_unregister_device 0x90d56bde +drivers/parport/parport parport_unregister_driver 0xfa3a8a0a +drivers/parport/parport parport_wait_event 0xe1199b5b +drivers/parport/parport parport_wait_peripheral 0x5842f5ba +drivers/parport/parport parport_write 0xfb40dd8c +drivers/parport/parport_pc parport_pc_probe_port 0xdeb045d8 +drivers/parport/parport_pc parport_pc_unregister_port 0xfa66e3c5 +drivers/pci/hotplug/acpiphp acpiphp_register_attention 0x3d2f2e8f +drivers/pci/hotplug/acpiphp acpiphp_unregister_attention 0xcdffd0bf +drivers/pci/hotplug/pci_hotplug cpci_hp_register_bus 0x19314fb6 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_controller 0xa566bf23 +drivers/pci/hotplug/pci_hotplug cpci_hp_start 0x6a8441be +drivers/pci/hotplug/pci_hotplug cpci_hp_stop 0x94ef4d05 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_bus 0x56a78b90 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_controller 0x7f82322a +drivers/pci/hotplug/pci_hotplug pci_hotplug_slots_subsys 0x2cf07e34 +drivers/pci/hotplug/pci_hotplug pci_hp_change_slot_info 0x8ff2c895 +drivers/pci/hotplug/pci_hotplug pci_hp_deregister 0x99327e19 +drivers/pci/hotplug/pci_hotplug pci_hp_register 0x7cb3c760 +drivers/pcmcia/pcmcia cs_error 0x27af07ff +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0x26dea305 +drivers/pcmcia/pcmcia pcmcia_deregister_client 0x2b7e4ee7 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0xf784fb12 +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0x88c0e88b +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0xc0a4f73c +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0xb74d12b9 +drivers/pcmcia/pcmcia pcmcia_get_status 0xcb8967b4 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0x8cdcd89f +drivers/pcmcia/pcmcia pcmcia_get_window 0xbea32d59 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0xda31c329 +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x7493d307 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0xa65793df +drivers/pcmcia/pcmcia pcmcia_register_client 0x1c063406 +drivers/pcmcia/pcmcia pcmcia_register_driver 0xdf6c72ab +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x9b797adb +drivers/pcmcia/pcmcia pcmcia_release_io 0x96e10aa3 +drivers/pcmcia/pcmcia pcmcia_release_irq 0xf36be899 +drivers/pcmcia/pcmcia pcmcia_release_window 0xd46d452d +drivers/pcmcia/pcmcia pcmcia_request_configuration 0xe17839fa +drivers/pcmcia/pcmcia pcmcia_request_io 0x6bc32de6 +drivers/pcmcia/pcmcia pcmcia_request_irq 0xdb6f1b90 +drivers/pcmcia/pcmcia pcmcia_request_window 0x7da7eb7e +drivers/pcmcia/pcmcia pcmcia_reset_card 0xd316793c +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0x9bcb68b2 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0x281bef47 +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0xdce28a0b +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x7d0999d6 +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0xc6c229d2 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0xc3567f14 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0x98090b8e +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0x5d744942 +drivers/pcmcia/pcmcia_core pccard_reset_card 0x670cb5b2 +drivers/pcmcia/pcmcia_core pccard_static_ops 0x31d7c8ae +drivers/pcmcia/pcmcia_core pccard_validate_cis 0x86d10428 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0xee658bd4 +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0x15463fb9 +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0xb469e990 +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0xdbbd46bb +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0x55d610f7 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0x9ec72164 +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x3fc4af83 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0x5c9038b7 +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0x490576f8 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xe37ae11e +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0xdf252065 +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0xf3654d28 +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x220c364b +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0x9ce98021 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0x46cd2bcb +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0x675c28a1 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0x8b08eeac +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0x291b6b1d +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x9b823a7c +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0x872e1e71 +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0xaf987fe9 +drivers/pcmcia/pcmcia_core release_cis_mem 0x3d076128 +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0xfcf99dd6 +drivers/scsi/libata __sata_phy_reset 0xb61118ba +drivers/scsi/libata ata_acpi_bus_register 0x4eb7c257 +drivers/scsi/libata ata_acpi_exec_tfs 0x458c17c6 +drivers/scsi/libata ata_acpi_get_timing 0xa90f2781 +drivers/scsi/libata ata_acpi_push_id 0x54ac595b +drivers/scsi/libata ata_acpi_push_timing 0x201d9cb7 +drivers/scsi/libata ata_altstatus 0x76449bba +drivers/scsi/libata ata_bmdma_irq_clear 0x20c49333 +drivers/scsi/libata ata_bmdma_setup 0xc63ede6e +drivers/scsi/libata ata_bmdma_start 0x81356702 +drivers/scsi/libata ata_bmdma_status 0x5b83fe63 +drivers/scsi/libata ata_bmdma_stop 0x285720fd +drivers/scsi/libata ata_bus_probe 0xfd2ae980 +drivers/scsi/libata ata_bus_reset 0xa4f93d4b +drivers/scsi/libata ata_check_status 0x03d02e5a +drivers/scsi/libata ata_dev_classify 0x0531dcb8 +drivers/scsi/libata ata_dev_config 0xf45e3ac8 +drivers/scsi/libata ata_dev_id_string 0x07d45a53 +drivers/scsi/libata ata_device_add 0xce40cdf9 +drivers/scsi/libata ata_device_resume 0x7de20021 +drivers/scsi/libata ata_device_shutdown 0x2bfbcc78 +drivers/scsi/libata ata_device_suspend 0xea8cca6f +drivers/scsi/libata ata_eng_timeout 0x321acfa0 +drivers/scsi/libata ata_exec_command 0xfcf8993d +drivers/scsi/libata ata_host_intr 0x2af94e9a +drivers/scsi/libata ata_host_set_remove 0x88cff9d3 +drivers/scsi/libata ata_host_stop 0x9d69ec8a +drivers/scsi/libata ata_hotplug_plug 0x8d52d26c +drivers/scsi/libata ata_hotplug_unplug 0xcfe3b4d0 +drivers/scsi/libata ata_interrupt 0x4cc5af75 +drivers/scsi/libata ata_noop_dev_select 0xfd53ca5a +drivers/scsi/libata ata_pci_device_resume 0x48f4124d +drivers/scsi/libata ata_pci_device_suspend 0x02897055 +drivers/scsi/libata ata_pci_host_stop 0x1e30a9b7 +drivers/scsi/libata ata_pci_init_native_mode 0x6f2ecfbb +drivers/scsi/libata ata_pci_init_one 0x11edaebc +drivers/scsi/libata ata_pci_remove_one 0xe7a1b089 +drivers/scsi/libata ata_port_disable 0x282245b9 +drivers/scsi/libata ata_port_probe 0x5f2c4023 +drivers/scsi/libata ata_port_start 0xb508f2b5 +drivers/scsi/libata ata_port_stop 0x7af6e6b9 +drivers/scsi/libata ata_qc_complete 0x2305b278 +drivers/scsi/libata ata_qc_issue_prot 0xa2478032 +drivers/scsi/libata ata_qc_prep 0x9ac1917e +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0x4a10693e +drivers/scsi/libata ata_scsi_device_shutdown 0x6a2d08fb +drivers/scsi/libata ata_scsi_device_suspend 0x44384255 +drivers/scsi/libata ata_scsi_error 0xccf06a65 +drivers/scsi/libata ata_scsi_ioctl 0xf214bf0a +drivers/scsi/libata ata_scsi_queuecmd 0x4b91f11d +drivers/scsi/libata ata_scsi_release 0x854d748b +drivers/scsi/libata ata_scsi_simulate 0xf62bf45c +drivers/scsi/libata ata_scsi_slave_config 0x632d0f3d +drivers/scsi/libata ata_sg_init 0x775a900e +drivers/scsi/libata ata_sg_init_one 0xecfb633b +drivers/scsi/libata ata_std_bios_param 0x1566889f +drivers/scsi/libata ata_std_dev_select 0x2ca52aa6 +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0x0067df75 +drivers/scsi/libata ata_tf_load 0x5f36a8a5 +drivers/scsi/libata ata_tf_read 0x58a8a824 +drivers/scsi/libata ata_tf_to_fis 0x28177a3f +drivers/scsi/libata ata_timing_compute 0xf6f94640 +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata do_drive_get_GTF 0x7325a919 +drivers/scsi/libata do_drive_set_taskfiles 0x9ae24eee +drivers/scsi/libata pci_test_config_bits 0xcd1b780c +drivers/scsi/libata sata_phy_reset 0x7c451cb9 +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x86f60f09 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0x0157279d +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x1262b339 +drivers/scsi/qlogicfas408 qlogicfas408_abort 0xc06bdfd9 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0x3daa85da +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0xdf4c3caf +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0xd80758f8 +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x6af07c89 +drivers/scsi/qlogicfas408 qlogicfas408_info 0xa98431b5 +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0x9a9c5f5f +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0xab2cd66b +drivers/scsi/raid_class raid_class_release 0x56119043 +drivers/scsi/raid_class raid_component_add 0xdaf22543 +drivers/scsi/sas/sas_class sas_register_ha 0x09af34e7 +drivers/scsi/sas/sas_class sas_unregister_ha 0x400f2f99 +drivers/scsi/scsi_mod __scsi_add_device 0x3f964743 +drivers/scsi/scsi_mod __scsi_device_lookup 0xa5b75097 +drivers/scsi/scsi_mod __scsi_device_lookup_by_target 0x5e42c8d5 +drivers/scsi/scsi_mod __scsi_iterate_devices 0x7af028e1 +drivers/scsi/scsi_mod __scsi_print_command 0xfef96e23 +drivers/scsi/scsi_mod __scsi_print_sense 0x69d38ed9 +drivers/scsi/scsi_mod int_to_scsilun 0xea10212a +drivers/scsi/scsi_mod scsi_add_device 0x2327d20e +drivers/scsi/scsi_mod scsi_add_host 0x04e2b35d +drivers/scsi/scsi_mod scsi_adjust_queue_depth 0x97596cbe +drivers/scsi/scsi_mod scsi_allocate_request 0x5b5a1820 +drivers/scsi/scsi_mod scsi_bios_ptable 0x10258201 +drivers/scsi/scsi_mod scsi_block_requests 0x413687a0 +drivers/scsi/scsi_mod scsi_block_when_processing_errors 0xde3d3690 +drivers/scsi/scsi_mod scsi_bus_type 0xbfe5e0d7 +drivers/scsi/scsi_mod scsi_calculate_bounce_limit 0x34164ed5 +drivers/scsi/scsi_mod scsi_command_normalize_sense 0x1455f244 +drivers/scsi/scsi_mod scsi_device_cancel 0x2c2b3531 +drivers/scsi/scsi_mod scsi_device_get 0xf7a9cac8 +drivers/scsi/scsi_mod scsi_device_lookup 0xaaace3b0 +drivers/scsi/scsi_mod scsi_device_lookup_by_target 0x15f4fa80 +drivers/scsi/scsi_mod scsi_device_put 0x33c34ae0 +drivers/scsi/scsi_mod scsi_device_quiesce 0x38f1b174 +drivers/scsi/scsi_mod scsi_device_resume 0xacff1262 +drivers/scsi/scsi_mod scsi_device_set_state 0x6efb48ff +drivers/scsi/scsi_mod scsi_device_types 0x6df713c9 +drivers/scsi/scsi_mod scsi_do_req 0x70f6d179 +drivers/scsi/scsi_mod scsi_execute 0xd36ec0f3 +drivers/scsi/scsi_mod scsi_execute_req 0xc1e8b860 +drivers/scsi/scsi_mod scsi_extd_sense_format 0x11267875 +drivers/scsi/scsi_mod scsi_finish_command 0x66df5a5b +drivers/scsi/scsi_mod scsi_flush_work 0x47109bf7 +drivers/scsi/scsi_mod scsi_free_host_dev 0x1dcb7e8b +drivers/scsi/scsi_mod scsi_get_command 0x9a035a59 +drivers/scsi/scsi_mod scsi_get_host_dev 0x429b4135 +drivers/scsi/scsi_mod scsi_get_sense_info_fld 0x796fc5ce +drivers/scsi/scsi_mod scsi_host_alloc 0x63cc1f45 +drivers/scsi/scsi_mod scsi_host_get 0x3f67775d +drivers/scsi/scsi_mod scsi_host_lookup 0x84a03f20 +drivers/scsi/scsi_mod scsi_host_put 0x6c777ba8 +drivers/scsi/scsi_mod scsi_host_set_state 0xd742874d +drivers/scsi/scsi_mod scsi_internal_device_block 0x382dce4d +drivers/scsi/scsi_mod scsi_internal_device_unblock 0xde10ce8e +drivers/scsi/scsi_mod scsi_io_completion 0xdb1bf3bd +drivers/scsi/scsi_mod scsi_ioctl 0x3225201c +drivers/scsi/scsi_mod scsi_ioctl_send_command 0x5fb29cbc +drivers/scsi/scsi_mod scsi_is_host_device 0xa9867b64 +drivers/scsi/scsi_mod scsi_is_sdev_device 0x299e897e +drivers/scsi/scsi_mod scsi_is_target_device 0x574a4283 +drivers/scsi/scsi_mod scsi_logging_level 0xaf3dd7dc +drivers/scsi/scsi_mod scsi_mode_sense 0xa8f7ef94 +drivers/scsi/scsi_mod scsi_nonblockable_ioctl 0x720b7f81 +drivers/scsi/scsi_mod scsi_normalize_sense 0x0c65e73c +drivers/scsi/scsi_mod scsi_partsize 0x4afe9a77 +drivers/scsi/scsi_mod scsi_print_command 0xcfbfd08b +drivers/scsi/scsi_mod scsi_print_msg 0x67f88938 +drivers/scsi/scsi_mod scsi_print_req_sense 0x40a0e0c8 +drivers/scsi/scsi_mod scsi_print_sense 0xe5617ce3 +drivers/scsi/scsi_mod scsi_print_sense_hdr 0xca5dbc50 +drivers/scsi/scsi_mod scsi_print_status 0x9cfd56c5 +drivers/scsi/scsi_mod scsi_put_command 0xc52739e3 +drivers/scsi/scsi_mod scsi_queue_work 0x263eb9da +drivers/scsi/scsi_mod scsi_register 0x5a9fea5d +drivers/scsi/scsi_mod scsi_register_driver 0x16ef977e +drivers/scsi/scsi_mod scsi_register_interface 0x1b9ca603 +drivers/scsi/scsi_mod scsi_release_request 0x5a320ef5 +drivers/scsi/scsi_mod scsi_remove_device 0x693da3e3 +drivers/scsi/scsi_mod scsi_remove_host 0xd6162cf6 +drivers/scsi/scsi_mod scsi_remove_target 0xb24396e2 +drivers/scsi/scsi_mod scsi_report_bus_reset 0xce3df7eb +drivers/scsi/scsi_mod scsi_report_device_reset 0x3e600e85 +drivers/scsi/scsi_mod scsi_request_normalize_sense 0x96b78e29 +drivers/scsi/scsi_mod scsi_rescan_device 0xcd0efc1e +drivers/scsi/scsi_mod scsi_reset_provider 0x3c8c6778 +drivers/scsi/scsi_mod scsi_scan_host 0x21eb3c2e +drivers/scsi/scsi_mod scsi_scan_target 0xd573f699 +drivers/scsi/scsi_mod scsi_sense_desc_find 0x2b0ba2b0 +drivers/scsi/scsi_mod scsi_sense_key_string 0x96cd2b04 +drivers/scsi/scsi_mod scsi_set_medium_removal 0xcff3dd94 +drivers/scsi/scsi_mod scsi_setup_blk_pc_cmnd 0xdadf89bb +drivers/scsi/scsi_mod scsi_target_block 0x2edaed62 +drivers/scsi/scsi_mod scsi_target_quiesce 0xc6d69abe +drivers/scsi/scsi_mod scsi_target_resume 0x8eed2903 +drivers/scsi/scsi_mod scsi_target_unblock 0x758e8275 +drivers/scsi/scsi_mod scsi_test_unit_ready 0x345994cb +drivers/scsi/scsi_mod scsi_track_queue_full 0xcde13c14 +drivers/scsi/scsi_mod scsi_unblock_requests 0x6753c6f5 +drivers/scsi/scsi_mod scsi_unregister 0x4584d2e6 +drivers/scsi/scsi_mod scsicam_bios_param 0x7e1c8ca5 +drivers/scsi/scsi_mod starget_for_each_device 0x51328fd8 +drivers/scsi/scsi_transport_fc fc_attach_transport 0x95a61936 +drivers/scsi/scsi_transport_fc fc_release_transport 0xa1b2d1e8 +drivers/scsi/scsi_transport_fc fc_remote_port_add 0xf6ece767 +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0x1e897f19 +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x0815a62d +drivers/scsi/scsi_transport_fc fc_remove_host 0xc31b6457 +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0xf51062fb +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x0e986460 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x5436aefb +drivers/scsi/scsi_transport_sas sas_attach_transport 0x8bff7978 +drivers/scsi/scsi_transport_sas sas_phy_add 0x225e0a46 +drivers/scsi/scsi_transport_sas sas_phy_alloc 0x0d9f3fb1 +drivers/scsi/scsi_transport_sas sas_phy_delete 0xdae7fdbf +drivers/scsi/scsi_transport_sas sas_phy_free 0xb327f24a +drivers/scsi/scsi_transport_sas sas_release_transport 0xde303047 +drivers/scsi/scsi_transport_sas sas_remove_host 0xfe8f86f2 +drivers/scsi/scsi_transport_sas sas_rphy_add 0xb35730cc +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0xa6f1f4cd +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x700f9a39 +drivers/scsi/scsi_transport_sas sas_rphy_free 0x07b1009f +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0x0c2ebbcf +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0xb9dc190a +drivers/scsi/scsi_transport_spi spi_attach_transport 0x5d1576ae +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0xa6e17d65 +drivers/scsi/scsi_transport_spi spi_dv_device 0x36f72a16 +drivers/scsi/scsi_transport_spi spi_release_transport 0x3ea6579b +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0xf7ee343a +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x66d24577 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0xf22d8c54 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0xac9988c5 +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0x86f6aeee +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0x5578abaa +drivers/telephony/ixj ixj_pcmcia_probe 0x6d787c3d +drivers/telephony/phonedev phone_register_device 0xc4014503 +drivers/telephony/phonedev phone_unregister_device 0xa6a2e53c +drivers/usb/atm/usbatm usbatm_usb_disconnect 0xc7f68646 +drivers/usb/atm/usbatm usbatm_usb_probe 0x10ad699f +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x7ff819c8 +drivers/usb/core/usbcore usb_alloc_dev 0xe40bc651 +drivers/usb/core/usbcore usb_alloc_urb 0x1c96dac9 +drivers/usb/core/usbcore usb_altnum_to_altsetting 0x9faf6800 +drivers/usb/core/usbcore usb_buffer_alloc 0xef339ba7 +drivers/usb/core/usbcore usb_buffer_free 0x6aae7997 +drivers/usb/core/usbcore usb_buffer_map_sg 0x46c37796 +drivers/usb/core/usbcore usb_buffer_unmap_sg 0x4d31886e +drivers/usb/core/usbcore usb_bulk_msg 0xd25c56ed +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0xfa3f0918 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0x75b55984 +drivers/usb/core/usbcore usb_claim_bandwidth 0x0133ab13 +drivers/usb/core/usbcore usb_clear_halt 0x79a0cf90 +drivers/usb/core/usbcore usb_control_msg 0x537ccf76 +drivers/usb/core/usbcore usb_create_hcd 0x76bec288 +drivers/usb/core/usbcore usb_deregister 0x4df8496b +drivers/usb/core/usbcore usb_deregister_dev 0xcc4adc84 +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0xd7d623b3 +drivers/usb/core/usbcore usb_driver_claim_interface 0x1ff79b47 +drivers/usb/core/usbcore usb_driver_release_interface 0xedcfd048 +drivers/usb/core/usbcore usb_find_device 0x257ba975 +drivers/usb/core/usbcore usb_find_interface 0x6d954adc +drivers/usb/core/usbcore usb_free_urb 0xbbc08c04 +drivers/usb/core/usbcore usb_get_current_frame_number 0x6dfa87e0 +drivers/usb/core/usbcore usb_get_descriptor 0x6993116f +drivers/usb/core/usbcore usb_get_dev 0xd7786fef +drivers/usb/core/usbcore usb_get_intf 0x98e46bb7 +drivers/usb/core/usbcore usb_get_status 0x65a7bb91 +drivers/usb/core/usbcore usb_get_string 0x8f044b9f +drivers/usb/core/usbcore usb_get_urb 0xde79bb8d +drivers/usb/core/usbcore usb_hc_died 0x7bbfbc35 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0xed9c1686 +drivers/usb/core/usbcore usb_hcd_pci_probe 0x03d3d590 +drivers/usb/core/usbcore usb_hcd_pci_remove 0xc3a14616 +drivers/usb/core/usbcore usb_hcd_pci_resume 0x7b84bc8f +drivers/usb/core/usbcore usb_hcd_pci_suspend 0x75e8c83f +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0xe78d2404 +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0xb3f83596 +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0x1b75d3cf +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0x44ad51f7 +drivers/usb/core/usbcore usb_ifnum_to_if 0x33e4ce09 +drivers/usb/core/usbcore usb_init_urb 0xaae5e3f7 +drivers/usb/core/usbcore usb_kill_urb 0x08fadaa7 +drivers/usb/core/usbcore usb_lock_device 0xb9e9e4a1 +drivers/usb/core/usbcore usb_lock_device_for_reset 0x70766d46 +drivers/usb/core/usbcore usb_match_id 0x1d67b315 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0xb6b6f65b +drivers/usb/core/usbcore usb_put_dev 0xb18bf7d6 +drivers/usb/core/usbcore usb_put_hcd 0xa83777d2 +drivers/usb/core/usbcore usb_put_intf 0x79be308b +drivers/usb/core/usbcore usb_register 0xaeab6b3f +drivers/usb/core/usbcore usb_register_dev 0x651786ec +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x438fa8d7 +drivers/usb/core/usbcore usb_remove_hcd 0x1fdc0ee9 +drivers/usb/core/usbcore usb_reset_configuration 0x474d795c +drivers/usb/core/usbcore usb_reset_device 0x56329f00 +drivers/usb/core/usbcore usb_set_device_state 0x872f3067 +drivers/usb/core/usbcore usb_set_interface 0x2ee9bf9d +drivers/usb/core/usbcore usb_sg_cancel 0xb8597b2e +drivers/usb/core/usbcore usb_sg_init 0x41e14baf +drivers/usb/core/usbcore usb_sg_wait 0x0a8248e6 +drivers/usb/core/usbcore usb_string 0x3fd6b549 +drivers/usb/core/usbcore usb_submit_urb 0xf8845852 +drivers/usb/core/usbcore usb_trylock_device 0xff8286a2 +drivers/usb/core/usbcore usb_unlink_urb 0xa1d2bb3e +drivers/usb/core/usbcore usb_unlock_device 0x03cdaed4 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/gadget/net2280 net2280_set_fifo_mode 0x6b10a6f7 +drivers/usb/gadget/net2280 usb_gadget_register_driver 0x0906c25e +drivers/usb/gadget/net2280 usb_gadget_unregister_driver 0x517878ee +drivers/usb/host/sl811-hcd sl811h_driver 0x511e7e0c +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0x47409355 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x74b87e96 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0xcd47dbd0 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0x5fa21c34 +drivers/usb/media/usbvideo RingQueue_Dequeue 0xc62c3f97 +drivers/usb/media/usbvideo RingQueue_Enqueue 0x079325e3 +drivers/usb/media/usbvideo RingQueue_Flush 0x99ede02c +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0xa104e316 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0x79697977 +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x1554904d +drivers/usb/media/usbvideo usbvideo_Deregister 0xea823c54 +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0xbdaf0e8b +drivers/usb/media/usbvideo usbvideo_TestPattern 0x11d565e8 +drivers/usb/media/usbvideo usbvideo_register 0xf194e911 +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0x85a6e452 +drivers/usb/media/w9968cf w9968cf_vppmod_register 0x1d2a7009 +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0xcefa0e3b +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0x6b078745 +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0x05367620 +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0x4aeb2cc9 +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0xd100d807 +drivers/usb/net/usbnet usbnet_defer_kevent 0x0a6e8340 +drivers/usb/net/usbnet usbnet_disconnect 0xbee63f53 +drivers/usb/net/usbnet usbnet_get_drvinfo 0x61674af5 +drivers/usb/net/usbnet usbnet_get_endpoints 0x35e4a2e5 +drivers/usb/net/usbnet usbnet_get_msglevel 0x068a28cc +drivers/usb/net/usbnet usbnet_probe 0x3c786e7f +drivers/usb/net/usbnet usbnet_resume 0x3dae9fc4 +drivers/usb/net/usbnet usbnet_set_msglevel 0x3bc3308c +drivers/usb/net/usbnet usbnet_skb_return 0xa897034f +drivers/usb/net/usbnet usbnet_suspend 0xe60aa8b1 +drivers/usb/serial/usbserial ezusb_set_reset 0x70e54512 +drivers/usb/serial/usbserial ezusb_writememory 0x9fecba51 +drivers/usb/serial/usbserial usb_serial_deregister 0x0645a24b +drivers/usb/serial/usbserial usb_serial_disconnect 0xa74d857a +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x2b4e86e1 +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0x190f47aa +drivers/usb/serial/usbserial usb_serial_register 0xdfaac859 +drivers/video/backlight/backlight backlight_device_register 0x0e30470d +drivers/video/backlight/backlight backlight_device_unregister 0x3b17338b +drivers/video/backlight/lcd lcd_device_register 0x4d3f2d53 +drivers/video/backlight/lcd lcd_device_unregister 0xf91b583e +drivers/video/cfbcopyarea cfb_copyarea 0x1b23d62b +drivers/video/cfbfillrect cfb_fillrect 0xac887799 +drivers/video/cfbimgblt cfb_imageblit 0x4958446c +drivers/video/console/bitblit fbcon_set_bitops 0x144897f8 +drivers/video/console/font find_font 0xf7584a9c +drivers/video/console/font get_default_font 0x093e3659 +drivers/video/console/softcursor soft_cursor 0x059eeec2 +drivers/video/console/tileblit fbcon_set_tileops 0xa1afb2ee +drivers/video/cyber2000fb cyber2000fb_attach 0xa2551aac +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x72141251 +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0x3018de34 +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0xfee04c8e +drivers/video/macmodes mac_find_mode 0xb7a18c0f +drivers/video/macmodes mac_map_monitor_sense 0xe2304303 +drivers/video/macmodes mac_var_to_vmode 0x00907cd5 +drivers/video/macmodes mac_vmode_to_var 0x08ed0b62 +drivers/video/matrox/g450_pll g450_mnp2f 0x8d40a850 +drivers/video/matrox/g450_pll matroxfb_g450_setclk 0xe67ad5b9 +drivers/video/matrox/g450_pll matroxfb_g450_setpll_cond 0x443f4bf2 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_init 0xaaa3757a +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_restore 0xaf861844 +drivers/video/matrox/matroxfb_DAC1064 matrox_G100 0x21e01968 +drivers/video/matrox/matroxfb_DAC1064 matrox_mystique 0x25056516 +drivers/video/matrox/matroxfb_Ti3026 matrox_millennium 0x729c2b44 +drivers/video/matrox/matroxfb_accel matrox_cfbX_init 0xa73da4b5 +drivers/video/matrox/matroxfb_base matroxfb_enable_irq 0x76282af8 +drivers/video/matrox/matroxfb_base matroxfb_register_driver 0x036e75cc +drivers/video/matrox/matroxfb_base matroxfb_unregister_driver 0xb940d06e +drivers/video/matrox/matroxfb_base matroxfb_wait_for_sync 0x5f8de5bf +drivers/video/matrox/matroxfb_g450 matroxfb_g450_connect 0x5c429202 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_shutdown 0x8b54fefa +drivers/video/matrox/matroxfb_misc matroxfb_DAC_in 0x36c69990 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_out 0xc4ff975e +drivers/video/matrox/matroxfb_misc matroxfb_PLL_calcclock 0x25cf8049 +drivers/video/matrox/matroxfb_misc matroxfb_read_pins 0x8302cbc7 +drivers/video/matrox/matroxfb_misc matroxfb_var2my 0xabd8e427 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWinit 0xf7d21c34 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWrestore 0x697a2f9b +drivers/video/sis/sisfb sis_free 0x454a3cf0 +drivers/video/sis/sisfb sis_free_new 0x1e6f55e6 +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0x8b6453a7 +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0x6aba6dcc +drivers/w1/ds9490r ds_put_device 0x617b6fab +drivers/w1/ds9490r ds_read_bit 0x301dfaa3 +drivers/w1/ds9490r ds_read_block 0x3ccf11ae +drivers/w1/ds9490r ds_read_byte 0x719b2ce7 +drivers/w1/ds9490r ds_reset 0x719459c7 +drivers/w1/ds9490r ds_touch_bit 0x9c714ce3 +drivers/w1/ds9490r ds_write_bit 0xd63010c0 +drivers/w1/ds9490r ds_write_block 0x9f44db11 +drivers/w1/ds9490r ds_write_byte 0x26a0c08f +drivers/w1/wire w1_add_master_device 0xd703c624 +drivers/w1/wire w1_calc_crc8 0x7c2f2afb +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xb0c86d52 +drivers/w1/wire w1_family_put 0x45181a35 +drivers/w1/wire w1_family_registered 0x345f469c +drivers/w1/wire w1_read_8 0x925650a6 +drivers/w1/wire w1_read_block 0x2c67f69a +drivers/w1/wire w1_register_family 0xadeb1de9 +drivers/w1/wire w1_remove_master_device 0x31a7a05c +drivers/w1/wire w1_reset_bus 0x67122cda +drivers/w1/wire w1_reset_select_slave 0x409a5194 +drivers/w1/wire w1_search_devices 0x90158994 +drivers/w1/wire w1_touch_bit 0xae22bf89 +drivers/w1/wire w1_unregister_family 0x2616cdb9 +drivers/w1/wire w1_write_8 0x45506ffa +drivers/w1/wire w1_write_block 0x55165faa +fs/configfs/configfs config_group_init 0xb47982bf +fs/configfs/configfs config_group_init_type_name 0x7731af76 +fs/configfs/configfs config_item_get 0x042b096e +fs/configfs/configfs config_item_init 0x694c52e4 +fs/configfs/configfs config_item_init_type_name 0xa90f2002 +fs/configfs/configfs config_item_put 0xa7456a70 +fs/configfs/configfs config_item_set_name 0x6b2caa5b +fs/configfs/configfs configfs_register_subsystem 0x4fc3011c +fs/configfs/configfs configfs_unregister_subsystem 0x72bae839 +fs/exportfs/exportfs export_op_default 0xe2080618 +fs/exportfs/exportfs find_exported_dentry 0xa0953f5b +fs/fat/fat fat_add_entries 0xc54a1500 +fs/fat/fat fat_alloc_new_dir 0xbc010610 +fs/fat/fat fat_attach 0x058b4ab6 +fs/fat/fat fat_build_inode 0x60faa916 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0xb7e738e2 +fs/fat/fat fat_dir_empty 0xdeb1c354 +fs/fat/fat fat_fill_super 0xe1ad342a +fs/fat/fat fat_free_clusters 0x3f7fd735 +fs/fat/fat fat_fs_panic 0x746add2e +fs/fat/fat fat_get_dotdot_entry 0x8bdb9844 +fs/fat/fat fat_notify_change 0x59489118 +fs/fat/fat fat_remove_entries 0x3fb54cdf +fs/fat/fat fat_scan 0x7c43e713 +fs/fat/fat fat_search_long 0x0ce66e4b +fs/fat/fat fat_sync_bhs 0xae954fb2 +fs/fat/fat fat_sync_inode 0x974bbf2e +fs/jbd/jbd journal_abort 0x93a03fa2 +fs/jbd/jbd journal_ack_err 0x4433a34f +fs/jbd/jbd journal_blocks_per_page 0x7e4f277d +fs/jbd/jbd journal_check_available_features 0x12ff835e +fs/jbd/jbd journal_check_used_features 0x407041ad +fs/jbd/jbd journal_clear_err 0x1cef67d4 +fs/jbd/jbd journal_create 0xd828b491 +fs/jbd/jbd journal_destroy 0x95189282 +fs/jbd/jbd journal_dirty_data 0x4f0712ea +fs/jbd/jbd journal_dirty_metadata 0x53b9e353 +fs/jbd/jbd journal_errno 0x8a1b3c4b +fs/jbd/jbd journal_extend 0x1c84eeae +fs/jbd/jbd journal_flush 0x0bfd272d +fs/jbd/jbd journal_force_commit 0x42642e3b +fs/jbd/jbd journal_force_commit_nested 0x8ab6275f +fs/jbd/jbd journal_forget 0xb2556921 +fs/jbd/jbd journal_get_create_access 0xc7da39ea +fs/jbd/jbd journal_get_undo_access 0xa5104ae4 +fs/jbd/jbd journal_get_write_access 0x1082ff9e +fs/jbd/jbd journal_init_dev 0x5a674391 +fs/jbd/jbd journal_init_inode 0xe9e527d7 +fs/jbd/jbd journal_invalidatepage 0xef1ea5df +fs/jbd/jbd journal_load 0x93ed71f2 +fs/jbd/jbd journal_lock_updates 0x7ffe06d8 +fs/jbd/jbd journal_release_buffer 0x454f47f9 +fs/jbd/jbd journal_restart 0xcea26b40 +fs/jbd/jbd journal_revoke 0xe4cf71b6 +fs/jbd/jbd journal_set_features 0x7578c712 +fs/jbd/jbd journal_start 0x06a5904c +fs/jbd/jbd journal_start_commit 0x73503d69 +fs/jbd/jbd journal_stop 0xb819c7c5 +fs/jbd/jbd journal_try_to_free_buffers 0xe6d48914 +fs/jbd/jbd journal_unlock_updates 0xbbb22733 +fs/jbd/jbd journal_update_format 0x8da239df +fs/jbd/jbd journal_update_superblock 0x66d23e31 +fs/jbd/jbd journal_wipe 0xba9bea2a +fs/jbd/jbd log_wait_commit 0xf2e3cf60 +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0x9b3a0b88 +fs/lockd/lockd nlmsvc_ops 0x69214415 +fs/nfsd/nfsd nfs4_acl_add_ace 0x8b0e8bec +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/relayfs/relayfs relay_buf_full 0x55ac9420 +fs/relayfs/relayfs relay_close 0x6fb833e3 +fs/relayfs/relayfs relay_flush 0xa988f007 +fs/relayfs/relayfs relay_open 0xa9078181 +fs/relayfs/relayfs relay_reset 0xe64d66c5 +fs/relayfs/relayfs relay_subbufs_consumed 0x43388890 +fs/relayfs/relayfs relay_switch_subbuf 0x33560de7 +fs/relayfs/relayfs relayfs_create_dir 0x4c53653d +fs/relayfs/relayfs relayfs_file_operations 0x051473c2 +fs/relayfs/relayfs relayfs_remove_dir 0x70ead029 +lib/crc-ccitt crc_ccitt 0x651c2313 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x9aabc564 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x41bcd8b3 +lib/libcrc32c crc32c_le 0x13c0c38e +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0x35e1e77d +net/appletalk/appletalk alloc_ltalkdev 0x4aa67771 +net/appletalk/appletalk atalk_find_dev_addr 0x87db8317 +net/appletalk/appletalk atrtr_get_dev 0xdeaecc68 +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0x0ff2a18f +net/ax25/ax25 ax25_findbyuid 0x5fc6280f +net/ax25/ax25 ax25_hard_header 0xf779af64 +net/ax25/ax25 ax25_linkfail_register 0xcaa8103d +net/ax25/ax25 ax25_linkfail_release 0x6019492a +net/ax25/ax25 ax25_listen_register 0xb385d03b +net/ax25/ax25 ax25_listen_release 0x921c3218 +net/ax25/ax25 ax25_protocol_register 0xbfe4d5d7 +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0x614fc391 +net/ax25/ax25 ax25_send_frame 0xe0e33e9a +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0x7a5b71a5 +net/bluetooth/bluetooth bt_accept_enqueue 0xfc852776 +net/bluetooth/bluetooth bt_accept_unlink 0xcac708da +net/bluetooth/bluetooth bt_class 0x9c0affdf +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0x164e0406 +net/bluetooth/bluetooth bt_sock_poll 0x00c997b3 +net/bluetooth/bluetooth bt_sock_recvmsg 0x2c356eb3 +net/bluetooth/bluetooth bt_sock_register 0xe6fdba31 +net/bluetooth/bluetooth bt_sock_unlink 0x328998df +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0x82cccedb +net/bluetooth/bluetooth hci_alloc_dev 0xa4c2109c +net/bluetooth/bluetooth hci_conn_auth 0x589e1f77 +net/bluetooth/bluetooth hci_conn_change_link_key 0x01da625c +net/bluetooth/bluetooth hci_conn_encrypt 0x51bc17ce +net/bluetooth/bluetooth hci_conn_switch_role 0xeaa93be5 +net/bluetooth/bluetooth hci_connect 0x747a1513 +net/bluetooth/bluetooth hci_free_dev 0x821666ad +net/bluetooth/bluetooth hci_get_route 0x983250f6 +net/bluetooth/bluetooth hci_register_cb 0x0b4ce6c2 +net/bluetooth/bluetooth hci_register_dev 0xd2aafa63 +net/bluetooth/bluetooth hci_register_proto 0x58323f7e +net/bluetooth/bluetooth hci_resume_dev 0x1663a304 +net/bluetooth/bluetooth hci_send_acl 0xa7a26482 +net/bluetooth/bluetooth hci_send_sco 0x6ac8ffa4 +net/bluetooth/bluetooth hci_suspend_dev 0x8fed603b +net/bluetooth/bluetooth hci_unregister_cb 0xc211d892 +net/bluetooth/bluetooth hci_unregister_dev 0x5e70aa9d +net/bluetooth/bluetooth hci_unregister_proto 0x06113320 +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0x5bccb6f1 +net/bridge/netfilter/ebtables ebt_do_table 0x67f2aac8 +net/bridge/netfilter/ebtables ebt_register_match 0x1b2b4e5d +net/bridge/netfilter/ebtables ebt_register_table 0xc707b8ef +net/bridge/netfilter/ebtables ebt_register_target 0x4c143aa5 +net/bridge/netfilter/ebtables ebt_register_watcher 0x749c54f2 +net/bridge/netfilter/ebtables ebt_unregister_match 0x71b16f29 +net/bridge/netfilter/ebtables ebt_unregister_table 0x176141e9 +net/bridge/netfilter/ebtables ebt_unregister_target 0xe5ac304a +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x01b2508e +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x3a18e70d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0x71ecc67f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x7824d7b3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xded46fa7 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0xfbcb3469 +net/dccp/dccp ccid_init 0xd8ce3576 +net/dccp/dccp ccid_register 0xc96b8931 +net/dccp/dccp ccid_unregister 0x77b3d602 +net/dccp/dccp dccp_hashinfo 0xfc10564c +net/dccp/dccp dccp_insert_option 0xdfb191f9 +net/dccp/dccp dccp_insert_option_elapsed_time 0xdbac6504 +net/dccp/dccp dccp_insert_option_timestamp 0xe087b288 +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0xd91e4019 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0xc6727c3f +net/ieee80211/ieee80211 alloc_ieee80211 0xb3ea24ab +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0xbfcecde4 +net/ieee80211/ieee80211 ieee80211_channel_to_index 0x95b66897 +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0xf16656f4 +net/ieee80211/ieee80211 ieee80211_get_channel 0x024fb317 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0x888ebfde +net/ieee80211/ieee80211 ieee80211_get_geo 0x195f2bfb +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0xa4fbb46c +net/ieee80211/ieee80211 ieee80211_rx 0x7443f962 +net/ieee80211/ieee80211 ieee80211_rx_mgt 0x82e6d90f +net/ieee80211/ieee80211 ieee80211_set_geo 0xdf031187 +net/ieee80211/ieee80211 ieee80211_tx_frame 0xb0917210 +net/ieee80211/ieee80211 ieee80211_txb_free 0xf4e79785 +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0xf86c09c9 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0x86533fb1 +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x7ecab002 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0x3b098025 +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0xdc98fd4d +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x7b517890 +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x167324c6 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0x2572c583 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0xafedad59 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0x23417c2b +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0xa52c51bd +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0x893be922 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x6846f210 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0xdde88953 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0xa5211a3a +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0xf668992d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0xac533013 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0xd6796234 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0xdf330a6c +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0xb01f9641 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0xfb961ebe +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0x432d5c8b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0xf9f3e405 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0x61a25cb7 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x0daa6d54 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x531fff8f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x8119af0b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x130257c8 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x8b53ef7a +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x295e99d0 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0xc14e8df8 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0xd9f496b2 +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x0f4a55ca +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0xb2492684 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0x2a11467e +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0x901f7c71 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0xb94beffb +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0xb36e9519 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0xc69648c4 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0x686e4637 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0xb6f98335 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0xca3b36e5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0x16067629 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x1cf08b47 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x62801bee +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x2b58231f +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x2dfc6778 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0xbc37e813 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x662d6af3 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0x252099ab +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0xc34a9136 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0xa6d718b5 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x0ac0e987 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0xa974f32a +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0xeef302dd +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0x75a685ba +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x1f426d63 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x0c496073 +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0x7389f6cd +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0xd7d28551 +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0x094ffded +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0xee3bcd7f +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0x7c0273d9 +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0xce4b3b2f +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0x9f8b809a +net/ipv4/ipvs/ip_vs register_ip_vs_app 0x8dd7b647 +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0x71c36a5b +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0x29239b06 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0x8cd6b0d7 +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0xdf3b958a +net/ipv4/netfilter/arp_tables arpt_do_table 0x94b1126b +net/ipv4/netfilter/arp_tables arpt_register_table 0x930f3cc8 +net/ipv4/netfilter/arp_tables arpt_register_target 0xf71182e9 +net/ipv4/netfilter/arp_tables arpt_unregister_table 0xba6cedc8 +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x678faf0d +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0xb2bc3f8c +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x550941a1 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0xb0df8758 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x34382eeb +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0xf8c210cb +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0xa110d563 +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0xbe28d4f1 +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0x35f15a7e +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0x57cd1445 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0x5e06e4e3 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0x811cb8df +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x1cfde49c +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0x426d2ea7 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0x239099e0 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x39245484 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0x039d5448 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0x9c0d568c +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0x106f6990 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x5b94adf2 +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0x2b4ec0f9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x33a13f4e +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x4be52f76 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x353ca7a1 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x008cc168 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0x4e67165d +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0xc30dfa6e +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x7344e391 +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0xf81ffe2f +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0x9f88cce0 +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0xf02d8dba +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x7718cae2 +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0x29053b5e +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0x52a55a6b +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0x993d6b69 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0xf8da9365 +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0xdf57aa9d +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0x0283436a +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0xcaa41972 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0x8580b18c +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0xaba6409c +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0x098a06b0 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0x84d06f37 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x6179ab69 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0x0368caa2 +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0x66f107dd +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0xc2cbd038 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0x992cf537 +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0xf582a188 +net/ipv4/netfilter/ip_nat ip_nat_packet 0x56c8a8f9 +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0xd828a52e +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x9562c26d +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x50ebd019 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0x0bdcb94e +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x8ca2307a +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0x07c2460b +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0xc136ef7e +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x3c2bf7e1 +net/ipv4/netfilter/ip_tables ipt_do_table 0x619cd1b3 +net/ipv4/netfilter/ip_tables ipt_find_target 0xd3636682 +net/ipv4/netfilter/ip_tables ipt_register_match 0xbf6754b3 +net/ipv4/netfilter/ip_tables ipt_register_table 0x44b357d6 +net/ipv4/netfilter/ip_tables ipt_register_target 0xbe15a1bf +net/ipv4/netfilter/ip_tables ipt_unregister_match 0xa0cd7314 +net/ipv4/netfilter/ip_tables ipt_unregister_table 0xcccabe9c +net/ipv4/netfilter/ip_tables ipt_unregister_target 0x48600594 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0xa9ed176a +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0x82d085e9 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0xce8e74b0 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0x62528f35 +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0xf18eaaaf +net/ipv6/ipv6 inet6_add_protocol 0x66fdeec0 +net/ipv6/ipv6 inet6_bind 0xf2ed500a +net/ipv6/ipv6 inet6_del_protocol 0x778f80c7 +net/ipv6/ipv6 inet6_getname 0x398132d6 +net/ipv6/ipv6 inet6_ioctl 0x14899c0d +net/ipv6/ipv6 inet6_register_protosw 0xdb6d14b0 +net/ipv6/ipv6 inet6_release 0xdf59045e +net/ipv6/ipv6 inet6_unregister_protosw 0x26988250 +net/ipv6/ipv6 ip6_route_me_harder 0x38c22403 +net/ipv6/ipv6 ip6_route_output 0x74c08b13 +net/ipv6/ipv6 ip6_xmit 0xa5d43a70 +net/ipv6/ipv6 ipv6_chk_addr 0x51e21974 +net/ipv6/ipv6 ipv6_get_saddr 0x912f19b2 +net/ipv6/ipv6 ipv6_getsockopt 0x7c108189 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0xbad395fa +net/ipv6/ipv6 ipv6_setsockopt 0x66a34043 +net/ipv6/ipv6 ndisc_mc_map 0x75ab901f +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x4bb966f8 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0xc516a10f +net/ipv6/ipv6 xfrm6_rcv_spi 0xbe96bb56 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0x6ebb1bf3 +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0x9b57548f +net/ipv6/netfilter/ip6_tables ip6t_register_table 0x2e2b0e1f +net/ipv6/netfilter/ip6_tables ip6t_register_target 0xe25319aa +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0xc712f72c +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x742fa770 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0x579ddffa +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0xe7b42560 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0x4422d0af +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0x2e28fc38 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/irda/ircomm/ircomm ircomm_close 0x60185195 +net/irda/ircomm/ircomm ircomm_connect_request 0xd5d68cd6 +net/irda/ircomm/ircomm ircomm_connect_response 0x81ff21ba +net/irda/ircomm/ircomm ircomm_control_request 0x4e8d2aec +net/irda/ircomm/ircomm ircomm_data_request 0x30bbffc3 +net/irda/ircomm/ircomm ircomm_disconnect_request 0xbcecad24 +net/irda/ircomm/ircomm ircomm_flow_request 0x2a3de6e6 +net/irda/ircomm/ircomm ircomm_open 0xfae8051f +net/irda/irda alloc_irdadev 0x1fd26d82 +net/irda/irda async_unwrap_char 0x721ea479 +net/irda/irda async_wrap_skb 0xeb688c63 +net/irda/irda hashbin_delete 0x9f3fdb15 +net/irda/irda hashbin_find 0xc9697ed6 +net/irda/irda hashbin_get_first 0xafb532f6 +net/irda/irda hashbin_get_next 0xdd673d0a +net/irda/irda hashbin_insert 0xf10e95cc +net/irda/irda hashbin_lock_find 0x7bee2e3d +net/irda/irda hashbin_new 0x96c5cfee +net/irda/irda hashbin_remove 0x229d35b6 +net/irda/irda hashbin_remove_this 0x9722368a +net/irda/irda irda_debug 0x38a20e5b +net/irda/irda irda_device_dongle_cleanup 0x6a24f171 +net/irda/irda irda_device_dongle_init 0x5af915a5 +net/irda/irda irda_device_register_dongle 0x7e997ec6 +net/irda/irda irda_device_set_media_busy 0x376e3043 +net/irda/irda irda_device_unregister_dongle 0x446704ec +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0xa9e09ccf +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_setup_dma 0xd6deeaae +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0x98e298ec +net/irda/irda iriap_getvaluebyclass_request 0xf0978d4a +net/irda/irda iriap_open 0x0be30a9e +net/irda/irda irias_add_integer_attrib 0x87b3f3d3 +net/irda/irda irias_add_octseq_attrib 0x26c6095d +net/irda/irda irias_add_string_attrib 0x315da11c +net/irda/irda irias_delete_object 0x1c8a1c31 +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x49291c9d +net/irda/irda irias_find_object 0x09676c38 +net/irda/irda irias_insert_object 0xa337379a +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0x6082a8bf +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0xbc33405e +net/irda/irda irlap_open 0x5742be87 +net/irda/irda irlmp_close_lsap 0xd8351ea9 +net/irda/irda irlmp_connect_request 0xbf405ce8 +net/irda/irda irlmp_connect_response 0x2e5423f0 +net/irda/irda irlmp_data_request 0x7c6cb733 +net/irda/irda irlmp_disconnect_request 0x715fdc96 +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0x921bd56c +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0xf42e7c1c +net/irda/irda irttp_connect_request 0x62616c53 +net/irda/irda irttp_connect_response 0x14976f0c +net/irda/irda irttp_data_request 0xb95cff60 +net/irda/irda irttp_disconnect_request 0x97587d6d +net/irda/irda irttp_dup 0xc1741a87 +net/irda/irda irttp_flow_request 0xcacf93ae +net/irda/irda irttp_open_tsap 0x790b723e +net/irda/irda irttp_udata_request 0x1d71597b +net/irda/irda proc_irda 0xd0794cbb +net/lapb/lapb lapb_connect_request 0x0b82db1b +net/lapb/lapb lapb_data_received 0xffc83b43 +net/lapb/lapb lapb_data_request 0x8e22b5e0 +net/lapb/lapb lapb_disconnect_request 0x5e5048ec +net/lapb/lapb lapb_getparms 0x28ab62bb +net/lapb/lapb lapb_register 0x60266d1d +net/lapb/lapb lapb_setparms 0x2d763c01 +net/lapb/lapb lapb_unregister 0xc6d55490 +net/netfilter/nfnetlink __nfa_fill 0x7dd6d3c2 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0x026e97e9 +net/netfilter/nfnetlink nfnetlink_subsys_register 0x32e7681b +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0x4d251a3b +net/netfilter/nfnetlink nfnetlink_unicast 0x05f65b5d +net/rxrpc/rxrpc rxrpc_add_service 0x05b0fe74 +net/rxrpc/rxrpc rxrpc_call_abort 0x50be9fcd +net/rxrpc/rxrpc rxrpc_call_read_data 0xfc5a3e31 +net/rxrpc/rxrpc rxrpc_call_write_data 0x178921ac +net/rxrpc/rxrpc rxrpc_create_call 0x3f0922d0 +net/rxrpc/rxrpc rxrpc_create_connection 0x5f5e222c +net/rxrpc/rxrpc rxrpc_create_transport 0xc41c778d +net/rxrpc/rxrpc rxrpc_del_service 0x56d8a77b +net/rxrpc/rxrpc rxrpc_put_call 0x09c48df0 +net/rxrpc/rxrpc rxrpc_put_connection 0x07c85821 +net/rxrpc/rxrpc rxrpc_put_transport 0x4afb2928 +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x00c52ef5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0xb5dea7ef +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xf8b2ff6e +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0x8efd47c0 +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0x967ac6ce +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0xd5245379 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0x92d64529 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0x25826b68 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0x26a96222 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0xe6bd9d73 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0xf4f1a8ab +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0x113119c0 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0x814f7193 +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0x7123d954 +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0x3046aa01 +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0x1def3fab +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x4c2f4b6d +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x8d1a827e +net/sunrpc/sunrpc auth_domain_find 0xce9b7a1f +net/sunrpc/sunrpc auth_domain_lookup 0xa74157e3 +net/sunrpc/sunrpc auth_domain_put 0xb7e2b4a5 +net/sunrpc/sunrpc auth_unix_add_addr 0xb8520a43 +net/sunrpc/sunrpc auth_unix_forget_old 0x758f9c49 +net/sunrpc/sunrpc auth_unix_lookup 0xd1d4e136 +net/sunrpc/sunrpc cache_check 0x9eab08bf +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0x8d27260d +net/sunrpc/sunrpc cache_init 0xc244025c +net/sunrpc/sunrpc cache_purge 0x2fd173e0 +net/sunrpc/sunrpc cache_register 0x53012f1a +net/sunrpc/sunrpc cache_unregister 0x0afb6f16 +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0xc44b1529 +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0x1e9490f8 +net/sunrpc/sunrpc rpc_bind_new_program 0x1efdeea6 +net/sunrpc/sunrpc rpc_call_async 0x7d1c9b4c +net/sunrpc/sunrpc rpc_call_setup 0x54938f0b +net/sunrpc/sunrpc rpc_call_sync 0x0c07452b +net/sunrpc/sunrpc rpc_clnt_sigmask 0x03fbced7 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0x3f8874bb +net/sunrpc/sunrpc rpc_clone_client 0xca5b3de6 +net/sunrpc/sunrpc rpc_create_client 0x31d04298 +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0x11d656b5 +net/sunrpc/sunrpc rpc_destroy_client 0xf47e1982 +net/sunrpc/sunrpc rpc_execute 0xea2f8e7f +net/sunrpc/sunrpc rpc_init_task 0x5196a982 +net/sunrpc/sunrpc rpc_init_wait_queue 0x11e11d3f +net/sunrpc/sunrpc rpc_killall_tasks 0xae7684ac +net/sunrpc/sunrpc rpc_max_payload 0x97b4c0ac +net/sunrpc/sunrpc rpc_mkpipe 0x880443a1 +net/sunrpc/sunrpc rpc_new_child 0xdb4a5c83 +net/sunrpc/sunrpc rpc_new_client 0xf742e103 +net/sunrpc/sunrpc rpc_new_task 0x7ab6be0b +net/sunrpc/sunrpc rpc_proc_register 0xb4c021cf +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x63a6e54e +net/sunrpc/sunrpc rpc_release_client 0x002b2558 +net/sunrpc/sunrpc rpc_release_task 0x99c67057 +net/sunrpc/sunrpc rpc_restart_call 0x9149ba4e +net/sunrpc/sunrpc rpc_run_child 0x76f62035 +net/sunrpc/sunrpc rpc_setbufsize 0xceace69f +net/sunrpc/sunrpc rpc_shutdown_client 0x80b288ee +net/sunrpc/sunrpc rpc_sleep_on 0x647532e0 +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0xe2c0d089 +net/sunrpc/sunrpc rpc_wake_up_next 0xb4bbeae1 +net/sunrpc/sunrpc rpc_wake_up_status 0x6bd6a967 +net/sunrpc/sunrpc rpc_wake_up_task 0x730937eb +net/sunrpc/sunrpc rpcauth_create 0xafbc5898 +net/sunrpc/sunrpc rpcauth_free_credcache 0x9e728a21 +net/sunrpc/sunrpc rpcauth_init_credcache 0x6fbd580b +net/sunrpc/sunrpc rpcauth_lookup_credcache 0xdb07b9e1 +net/sunrpc/sunrpc rpcauth_lookupcred 0x9b70899f +net/sunrpc/sunrpc rpcauth_register 0x2a3ceec5 +net/sunrpc/sunrpc rpcauth_unregister 0x0dd5bfee +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x7a34b76e +net/sunrpc/sunrpc svc_auth_unregister 0x0f668ba9 +net/sunrpc/sunrpc svc_authenticate 0x3725b10c +net/sunrpc/sunrpc svc_create 0x10531ebd +net/sunrpc/sunrpc svc_create_thread 0x0f1e511a +net/sunrpc/sunrpc svc_destroy 0x849f900d +net/sunrpc/sunrpc svc_drop 0x3ce19324 +net/sunrpc/sunrpc svc_exit_thread 0xa04ca75c +net/sunrpc/sunrpc svc_makesock 0x2ffd4d1b +net/sunrpc/sunrpc svc_proc_register 0x58e55f08 +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0xa4a55a0a +net/sunrpc/sunrpc svc_recv 0x54101872 +net/sunrpc/sunrpc svc_reserve 0x5758baf4 +net/sunrpc/sunrpc svc_seq_show 0x8d55dfac +net/sunrpc/sunrpc svc_set_client 0x1e3eda25 +net/sunrpc/sunrpc svc_wake_up 0xe11c7495 +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x96946e44 +net/sunrpc/sunrpc xdr_buf_from_iov 0xcbaa0004 +net/sunrpc/sunrpc xdr_buf_read_netobj 0x45754a4e +net/sunrpc/sunrpc xdr_buf_subsegment 0xf07e9e3d +net/sunrpc/sunrpc xdr_decode_array2 0x452140bd +net/sunrpc/sunrpc xdr_decode_netobj 0x1be57115 +net/sunrpc/sunrpc xdr_decode_string 0x6755aa62 +net/sunrpc/sunrpc xdr_decode_string_inplace 0x7bd87272 +net/sunrpc/sunrpc xdr_decode_word 0xf71eb46e +net/sunrpc/sunrpc xdr_encode_array2 0x36bcdfc5 +net/sunrpc/sunrpc xdr_encode_netobj 0x29c6f164 +net/sunrpc/sunrpc xdr_encode_opaque 0x0e9e79d5 +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0x587d494b +net/sunrpc/sunrpc xdr_encode_pages 0xfc71b8f8 +net/sunrpc/sunrpc xdr_encode_string 0xabc0fe0c +net/sunrpc/sunrpc xdr_encode_word 0xafc4c4a3 +net/sunrpc/sunrpc xdr_init_decode 0x2692cbc4 +net/sunrpc/sunrpc xdr_init_encode 0x4c500f01 +net/sunrpc/sunrpc xdr_inline_decode 0x8540236d +net/sunrpc/sunrpc xdr_inline_pages 0x15735968 +net/sunrpc/sunrpc xdr_read_pages 0xd69fe6eb +net/sunrpc/sunrpc xdr_reserve_space 0x812014cb +net/sunrpc/sunrpc xdr_shift_buf 0x40301f8e +net/sunrpc/sunrpc xdr_write_pages 0x9efe525b +net/sunrpc/sunrpc xprt_create_proto 0xb94c8073 +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x6b14bb8d +net/wanrouter/wanrouter register_wan_device 0x8421f54e +net/wanrouter/wanrouter unlock_adapter_irq 0x53a2e800 +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0xec72da81 +net/wanrouter/wanrouter wanrouter_type_trans 0x93e113f7 +security/commoncap cap_bprm_apply_creds 0x6c485999 +security/commoncap cap_bprm_secureexec 0xf846c211 +security/commoncap cap_bprm_set_security 0x9707b41c +security/commoncap cap_capable 0xa65c0095 +security/commoncap cap_capget 0x9ad31867 +security/commoncap cap_capset_check 0x3e94939b +security/commoncap cap_capset_set 0xfb2ef334 +security/commoncap cap_inode_removexattr 0x3e6b380d +security/commoncap cap_inode_setxattr 0xadf4947b +security/commoncap cap_netlink_recv 0x25114759 +security/commoncap cap_netlink_send 0x7beaf41f +security/commoncap cap_ptrace 0x42d96e55 +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x13ea5cf8 +security/commoncap cap_task_reparent_to_init 0xeccb85b1 +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0xc5d4b4ee +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x603f1cdb +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0x05a97b16 +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0x3864ca41 +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x071ac002 +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x89947013 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x3aa87bdf +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x29f775e3 +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0xf02bb907 +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x3a6ab315 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x9a4c5e93 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0x8b6d0c74 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0x2a687b76 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0x4f46dcf1 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x30657d29 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0xdbdd9ad1 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x24b8399a +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x195c80b1 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x866949af +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x8db6a0a8 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0xe9e12582 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0x48e008d5 +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0xb502e59d +sound/core/snd copy_from_user_toio 0x518bb7f8 +sound/core/snd copy_to_user_fromio 0xe243dde3 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0x4a6c3b71 +sound/core/snd snd_card_file_add 0xfb15af2f +sound/core/snd snd_card_file_remove 0x6ed3c157 +sound/core/snd snd_card_free 0x5ec81c20 +sound/core/snd snd_card_free_in_thread 0x8357e3c5 +sound/core/snd snd_card_new 0x784c5bd2 +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0xeddf936d +sound/core/snd snd_card_register 0xe0b00c0b +sound/core/snd snd_card_set_generic_dev 0x55e3c269 +sound/core/snd snd_card_set_generic_pm_callback 0xaa60edbd +sound/core/snd snd_card_set_pm_callback 0x5dc2ef89 +sound/core/snd snd_cards 0x3682b2a0 +sound/core/snd snd_component_add 0x9d01da2a +sound/core/snd snd_ctl_add 0x0480c79a +sound/core/snd snd_ctl_elem_read 0xfb468f65 +sound/core/snd snd_ctl_elem_write 0x3ecb1a3e +sound/core/snd snd_ctl_find_id 0x3a80e7b7 +sound/core/snd snd_ctl_find_numid 0xddebb8de +sound/core/snd snd_ctl_free_one 0xca659f25 +sound/core/snd snd_ctl_new 0xe4b38745 +sound/core/snd snd_ctl_new1 0xcf8b4ea0 +sound/core/snd snd_ctl_notify 0x55cf308e +sound/core/snd snd_ctl_register_ioctl 0x6fdcaf8a +sound/core/snd snd_ctl_register_ioctl_compat 0xf497721a +sound/core/snd snd_ctl_remove 0xf14be8d0 +sound/core/snd snd_ctl_remove_id 0x74751990 +sound/core/snd snd_ctl_rename_id 0x70f1d4c8 +sound/core/snd snd_ctl_unregister_ioctl 0x6c84f7ff +sound/core/snd snd_ctl_unregister_ioctl_compat 0xb0cc2ce8 +sound/core/snd snd_device_free 0x497d3d97 +sound/core/snd snd_device_new 0x2f15efad +sound/core/snd snd_device_register 0xcf84b63d +sound/core/snd snd_dma_disable 0x70c15ac1 +sound/core/snd snd_dma_pointer 0x191e88cf +sound/core/snd snd_dma_program 0x18e1683f +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0x066d8659 +sound/core/snd snd_info_create_module_entry 0xfba86795 +sound/core/snd snd_info_free_entry 0x65940232 +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0xceb317dc +sound/core/snd snd_info_unregister 0x79b3bef6 +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0xd99bab4d +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0xff5948c0 +sound/core/snd snd_register_device 0x67dcdd3e +sound/core/snd snd_register_oss_device 0x865b54b6 +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0xfaa463dd +sound/core/snd snd_unregister_device 0x746eee67 +sound/core/snd snd_unregister_oss_device 0x907d0e0a +sound/core/snd-hwdep snd_hwdep_new 0x70b5ac43 +sound/core/snd-page-alloc snd_dma_alloc_pages 0xd276501b +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0xdc167f2a +sound/core/snd-page-alloc snd_dma_free_pages 0x462043a6 +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0x39e57c1d +sound/core/snd-page-alloc snd_dma_reserve_buf 0x29734ce6 +sound/core/snd-page-alloc snd_free_pages 0x19cc2ce3 +sound/core/snd-page-alloc snd_malloc_pages 0xc6829020 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x0beab9b1 +sound/core/snd-pcm snd_pcm_devices 0x22289b1e +sound/core/snd-pcm snd_pcm_format_big_endian 0x93878ece +sound/core/snd-pcm snd_pcm_format_linear 0x8733f967 +sound/core/snd-pcm snd_pcm_format_little_endian 0x8bbdc311 +sound/core/snd-pcm snd_pcm_format_name 0xedd5b5bd +sound/core/snd-pcm snd_pcm_format_physical_width 0xa8edfa41 +sound/core/snd-pcm snd_pcm_format_set_silence 0xdf124602 +sound/core/snd-pcm snd_pcm_format_signed 0xe2c5f868 +sound/core/snd-pcm snd_pcm_format_silence_64 0xda29bc77 +sound/core/snd-pcm snd_pcm_format_size 0xa2658908 +sound/core/snd-pcm snd_pcm_format_unsigned 0x95a60aa5 +sound/core/snd-pcm snd_pcm_format_width 0x55eb2175 +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0x730d2a6c +sound/core/snd-pcm snd_pcm_hw_constraint_list 0x156ab7c3 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0x61a1981d +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x1dceefdd +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0xafdda2f6 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0xc076a160 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x24d479b6 +sound/core/snd-pcm snd_pcm_hw_constraint_step 0xdd814ad7 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0xf134d5a9 +sound/core/snd-pcm snd_pcm_hw_constraints_init 0x63d2f15b +sound/core/snd-pcm snd_pcm_hw_param_first 0x1f128d0f +sound/core/snd-pcm snd_pcm_hw_param_last 0x64a63562 +sound/core/snd-pcm snd_pcm_hw_param_mask 0x40e8d09e +sound/core/snd-pcm snd_pcm_hw_param_near 0xac8f52ac +sound/core/snd-pcm snd_pcm_hw_param_set 0xe75e2b39 +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0xdac6fccc +sound/core/snd-pcm snd_pcm_hw_rule_add 0xe155706c +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0xd573d08c +sound/core/snd-pcm snd_pcm_kernel_ioctl 0x2a2714d4 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x2bcce4c9 +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0xd38ec693 +sound/core/snd-pcm snd_pcm_lib_free_pages 0x37650906 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x1a6cf761 +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x287ecc2b +sound/core/snd-pcm snd_pcm_lib_mmap_iomem 0xff3b4351 +sound/core/snd-pcm snd_pcm_lib_period_bytes 0x86680ef2 +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x9719532f +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0x2c7675f1 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0x516a7035 +sound/core/snd-pcm snd_pcm_lib_read 0x73ed316b +sound/core/snd-pcm snd_pcm_lib_readv 0xdbb7cecb +sound/core/snd-pcm snd_pcm_lib_write 0xb7bc135f +sound/core/snd-pcm snd_pcm_lib_writev 0xb1c5b5e9 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0xa9e4a893 +sound/core/snd-pcm snd_pcm_link_rwlock 0x011bbb0e +sound/core/snd-pcm snd_pcm_mmap_data 0xcedc162c +sound/core/snd-pcm snd_pcm_new 0xfaa0af70 +sound/core/snd-pcm snd_pcm_new_stream 0xbf94cd8b +sound/core/snd-pcm snd_pcm_notify 0x6d3259e8 +sound/core/snd-pcm snd_pcm_open_substream 0x810604a2 +sound/core/snd-pcm snd_pcm_period_elapsed 0x9931acd3 +sound/core/snd-pcm snd_pcm_release_substream 0x0fa45b4f +sound/core/snd-pcm snd_pcm_set_ops 0x52cf262e +sound/core/snd-pcm snd_pcm_set_sync 0x5e544493 +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0x75c88f32 +sound/core/snd-pcm snd_pcm_stop 0x0c7f5efe +sound/core/snd-pcm snd_pcm_suspend 0x5ace386f +sound/core/snd-pcm snd_pcm_suspend_all 0xb18c1b9a +sound/core/snd-rawmidi snd_rawmidi_drain_input 0x4e49e714 +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x049298fb +sound/core/snd-rawmidi snd_rawmidi_drop_output 0x70c6cd6a +sound/core/snd-rawmidi snd_rawmidi_info 0x795824c3 +sound/core/snd-rawmidi snd_rawmidi_info_select 0xaa25959e +sound/core/snd-rawmidi snd_rawmidi_input_params 0x4eed5fce +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x7261a730 +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0xdc1a91a5 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0x248190d4 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x9ca2dcd8 +sound/core/snd-rawmidi snd_rawmidi_new 0x5a2f2d0d +sound/core/snd-rawmidi snd_rawmidi_output_params 0x88048698 +sound/core/snd-rawmidi snd_rawmidi_receive 0x63b50506 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0xf4e78dfd +sound/core/snd-rawmidi snd_rawmidi_transmit 0x50baa5f1 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x4f5f8d67 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x52ed1a01 +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0x4dc54a50 +sound/core/snd-timer snd_timer_close 0xedc90fde +sound/core/snd-timer snd_timer_continue 0x290fd7f2 +sound/core/snd-timer snd_timer_global_free 0xeed7ab4b +sound/core/snd-timer snd_timer_global_new 0xf33d4bb9 +sound/core/snd-timer snd_timer_global_register 0xa12033aa +sound/core/snd-timer snd_timer_global_unregister 0x4308f682 +sound/core/snd-timer snd_timer_interrupt 0x19f0ebc4 +sound/core/snd-timer snd_timer_new 0xc19b2c11 +sound/core/snd-timer snd_timer_notify 0x77b8fe6a +sound/core/snd-timer snd_timer_open 0x3ac9ea2f +sound/core/snd-timer snd_timer_pause 0x643b0a46 +sound/core/snd-timer snd_timer_resolution 0xfc260b23 +sound/core/snd-timer snd_timer_start 0x34edf30c +sound/core/snd-timer snd_timer_stop 0x327911d0 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0x93762478 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x7a3fbf38 +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0x262ac27c +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0x6ab99a7a +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0x8c2fd169 +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0xdf28ab93 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0x24b6d56f +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0x785885a6 +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0xe60ee273 +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x16525e55 +sound/drivers/vx/snd-vx-lib snd_vx_create 0xaa1be938 +sound/drivers/vx/snd-vx-lib snd_vx_delay 0x7252aeeb +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x770632a7 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x49da8eb7 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0xf6a3a31c +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0xa1fdbe0c +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0x3e98f519 +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0x91bd82c5 +sound/i2c/other/snd-ak4114 snd_ak4114_build 0x148fb47e +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0xd01a793d +sound/i2c/other/snd-ak4114 snd_ak4114_create 0x9e9fbca1 +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0x1eed009c +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0x4faa28e3 +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0xec03b04a +sound/i2c/other/snd-ak4117 snd_ak4117_build 0x01389184 +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0x42e4db2b +sound/i2c/other/snd-ak4117 snd_ak4117_create 0xee6b897d +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x970975c0 +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x6707d319 +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x647fab28 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0xb5427490 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0xd3f95eba +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0x618ec1f6 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0xdc9de07e +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0x2bf33424 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0xb26ba99d +sound/i2c/snd-cs8427 snd_cs8427_create 0x34a840af +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0xf823307a +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0x66115a67 +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0x6f1d17bf +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0x3b73e253 +sound/i2c/snd-cs8427 snd_cs8427_reset 0xbfd7f38a +sound/i2c/snd-i2c snd_i2c_bus_create 0x38075201 +sound/i2c/snd-i2c snd_i2c_device_create 0x1c2ec3ee +sound/i2c/snd-i2c snd_i2c_device_free 0x14a52757 +sound/i2c/snd-i2c snd_i2c_probeaddr 0x226bfc86 +sound/i2c/snd-i2c snd_i2c_readbytes 0xe2a14b1e +sound/i2c/snd-i2c snd_i2c_sendbytes 0x8cfef7e0 +sound/isa/sb/snd-sb-common snd_sbdsp_command 0x36643a97 +sound/isa/sb/snd-sb-common snd_sbdsp_create 0x3e526804 +sound/isa/sb/snd-sb-common snd_sbdsp_get_byte 0xf0bef721 +sound/isa/sb/snd-sb-common snd_sbdsp_reset 0x645ecf6b +sound/isa/sb/snd-sb-common snd_sbmixer_add_ctl 0xfc3002ff +sound/isa/sb/snd-sb-common snd_sbmixer_new 0x410b6fb1 +sound/isa/sb/snd-sb-common snd_sbmixer_read 0xd26aad3d +sound/isa/sb/snd-sb-common snd_sbmixer_write 0xd5da886e +sound/oss/ac97_codec ac97_alloc_codec 0xa5567a6a +sound/oss/ac97_codec ac97_probe_codec 0x07581ca0 +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0x681c9f5d +sound/oss/ac97_codec ac97_release_codec 0x6497a931 +sound/oss/ac97_codec ac97_restore_state 0x449096c1 +sound/oss/ac97_codec ac97_save_state 0x2604cabc +sound/oss/ac97_codec ac97_set_adc_rate 0xfc96dcda +sound/oss/ac97_codec ac97_set_dac_rate 0x6b92d4c8 +sound/oss/ac97_codec ac97_tune_hardware 0xe5a35bd2 +sound/oss/ac97_codec ac97_unregister_driver 0x3771c065 +sound/oss/aci aci_port 0x0d82adb6 +sound/oss/aci aci_rw_cmd 0xcc7c4cd8 +sound/oss/aci aci_version 0x93350c87 +sound/oss/ad1848 ad1848_control 0xc04f6f67 +sound/oss/ad1848 ad1848_detect 0x845a1638 +sound/oss/ad1848 ad1848_init 0xc41f977c +sound/oss/ad1848 ad1848_unload 0x9bf1cc62 +sound/oss/ad1848 adintr 0xf8832770 +sound/oss/ad1848 attach_ms_sound 0xfb08f365 +sound/oss/ad1848 probe_ms_sound 0x65e6d1ca +sound/oss/ad1848 unload_ms_sound 0xb29a9148 +sound/oss/mpu401 attach_mpu401 0x0f68d249 +sound/oss/mpu401 intchk_mpu401 0x5fe6dd42 +sound/oss/mpu401 mpuintr 0x871374e3 +sound/oss/mpu401 probe_mpu401 0x5c8d3e32 +sound/oss/mpu401 unload_mpu401 0x5febf284 +sound/oss/opl3 opl3_detect 0x67481767 +sound/oss/opl3 opl3_init 0x04cb1a8a +sound/oss/sb_lib probe_sbmpu 0x4b446bb0 +sound/oss/sb_lib sb_be_quiet 0x42424109 +sound/oss/sb_lib sb_dsp_detect 0xd8a2731c +sound/oss/sb_lib sb_dsp_init 0xd56fcb31 +sound/oss/sb_lib sb_dsp_unload 0xc4884969 +sound/oss/sb_lib smw_free 0x450f9aea +sound/oss/sb_lib unload_sbmpu 0x74afd69c +sound/oss/sound DMAbuf_close_dma 0xc88b42ab +sound/oss/sound DMAbuf_inputintr 0xeb315d99 +sound/oss/sound DMAbuf_open_dma 0x06b3013d +sound/oss/sound DMAbuf_outputintr 0x987bcf12 +sound/oss/sound DMAbuf_start_dma 0xe056b71c +sound/oss/sound MIDIbuf_avail 0x1f395686 +sound/oss/sound audio_devs 0x322ba90d +sound/oss/sound cent_tuning 0x03ce7ff7 +sound/oss/sound compute_finetune 0x04c87ec8 +sound/oss/sound conf_printf 0x0f280035 +sound/oss/sound conf_printf2 0x7bdf0907 +sound/oss/sound do_midi_msg 0xb51587f6 +sound/oss/sound load_mixer_volumes 0xa1d5f04f +sound/oss/sound midi_devs 0x1749053a +sound/oss/sound midi_synth_aftertouch 0xf1ea8a20 +sound/oss/sound midi_synth_bender 0xba7dd041 +sound/oss/sound midi_synth_close 0xad45df73 +sound/oss/sound midi_synth_controller 0x892093e0 +sound/oss/sound midi_synth_hw_control 0xb14b22cd +sound/oss/sound midi_synth_ioctl 0xaef743b2 +sound/oss/sound midi_synth_kill_note 0x2aa31695 +sound/oss/sound midi_synth_load_patch 0xf7426da3 +sound/oss/sound midi_synth_open 0xf6b3a2fb +sound/oss/sound midi_synth_panning 0xdb400afa +sound/oss/sound midi_synth_reset 0x56504ca2 +sound/oss/sound midi_synth_send_sysex 0xfddcbfb3 +sound/oss/sound midi_synth_set_instr 0xd85be938 +sound/oss/sound midi_synth_setup_voice 0x4ff47e9d +sound/oss/sound midi_synth_start_note 0x9bdaf24d +sound/oss/sound mixer_devs 0x707cdbd9 +sound/oss/sound note_to_freq 0x5d986fc9 +sound/oss/sound num_audiodevs 0x4cd01bdd +sound/oss/sound num_midis 0xa1eae7cf +sound/oss/sound num_mixers 0x9d845b18 +sound/oss/sound semitone_tuning 0x8b84aeb1 +sound/oss/sound seq_copy_to_input 0x7679ee76 +sound/oss/sound seq_input_event 0x17ba231d +sound/oss/sound sequencer_init 0xf78f6363 +sound/oss/sound sequencer_timer 0x90bd9714 +sound/oss/sound sound_alloc_dma 0x9a95733f +sound/oss/sound sound_alloc_mididev 0xba413f87 +sound/oss/sound sound_alloc_mixerdev 0x1b3df3cf +sound/oss/sound sound_alloc_synthdev 0xc748d109 +sound/oss/sound sound_alloc_timerdev 0x51e354b2 +sound/oss/sound sound_close_dma 0x418f5fbe +sound/oss/sound sound_free_dma 0x394cb088 +sound/oss/sound sound_install_audiodrv 0x88561811 +sound/oss/sound sound_install_mixer 0x9ae1f9cc +sound/oss/sound sound_open_dma 0xcc4b8797 +sound/oss/sound sound_timer_devs 0x782db65f +sound/oss/sound sound_timer_init 0x2161d5e8 +sound/oss/sound sound_timer_interrupt 0xe2675a79 +sound/oss/sound sound_timer_syncinterval 0xfa6871be +sound/oss/sound sound_unload_audiodev 0xa948751e +sound/oss/sound sound_unload_mididev 0xa6bb414c +sound/oss/sound sound_unload_mixerdev 0xa51c913b +sound/oss/sound sound_unload_synthdev 0x06339815 +sound/oss/sound sound_unload_timerdev 0xa41ead5f +sound/oss/sound synth_devs 0x76017cab +sound/oss/uart401 probe_uart401 0x4e070b06 +sound/oss/uart401 uart401intr 0x8a87560a +sound/oss/uart401 unload_uart401 0xecfdd9c9 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x4e16bf15 +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0x1a066d98 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0x25d3a4da +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0xa807163c +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0x174617c2 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x156c363a +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x2883e050 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0x95c2a4c3 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0xc20d3f06 +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0x6d0fb3c8 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0xc7c89a93 +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0xe5ff7b13 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x71b1d647 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0x6bf0a088 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0xe3669086 +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0xe2098335 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0xa1f26525 +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0xccba6ba4 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0x518c7c1f +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x4a91dc5d +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0x8607fc61 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0x49201780 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0x5d2c644f +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0x8a671ddb +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0x570470c6 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0x8419d7c5 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0xcf17cf68 +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0x67da8429 +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0x4557578d +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0x05838b88 +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0x520b8ea6 +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0x2f4c2ecc +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0x1bbc3df4 +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x8367a61d +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0x0f246449 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0x0ee2c377 +sound/pci/hda/snd-hda-codec snd_hda_resume 0x85bbf488 +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0xdf339964 +sound/pci/hda/snd-hda-codec snd_hda_suspend 0xdfea3c1e +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0x81d9b735 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0x478e9b38 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0x7e0afcbc +sound/pci/trident/snd-trident snd_trident_alloc_voice 0x29401634 +sound/pci/trident/snd-trident snd_trident_free_voice 0x06779000 +sound/pci/trident/snd-trident snd_trident_start_voice 0xcf939025 +sound/pci/trident/snd-trident snd_trident_stop_voice 0x4c86f778 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0x7725136c +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0xbdec6be0 +sound/pci/trident/snd-trident snd_trident_synth_free 0x9ae9a193 +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0x739fd8b6 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0x518a1dcd +sound/soundcore register_sound_midi 0xbcf6b625 +sound/soundcore register_sound_mixer 0xbfe0b83c +sound/soundcore register_sound_special 0xc59d4ae9 +sound/soundcore register_sound_special_device 0x6442215a +sound/soundcore register_sound_synth 0xd8a5c8d8 +sound/soundcore sound_class 0xa8eb0363 +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +sound/synth/emux/snd-emux-synth snd_emux_free 0x7d5d3b40 +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0xaa0335b7 +sound/synth/emux/snd-emux-synth snd_emux_new 0xce1e4978 +sound/synth/emux/snd-emux-synth snd_emux_register 0x83ad9b18 +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0x68d3f72b +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0x6bbf5b15 +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0xd3c1adac +sound/synth/snd-util-mem __snd_util_mem_free 0x1fd6c8dc +sound/synth/snd-util-mem __snd_util_memblk_new 0x6b442bbf +sound/synth/snd-util-mem snd_util_mem_alloc 0xb13b09a0 +sound/synth/snd-util-mem snd_util_mem_avail 0xc6d9c71f +sound/synth/snd-util-mem snd_util_mem_free 0xea2de30c +sound/synth/snd-util-mem snd_util_memhdr_free 0x7ad0c23d +sound/synth/snd-util-mem snd_util_memhdr_new 0x0c5322df +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0x64330270 +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux I_BDEV 0xd0fea7fc +vmlinux SELECT_DRIVE 0x8245ca2b +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0xa76f14bd +vmlinux __alloc_pages 0x2ff5c4f6 +vmlinux __alloc_percpu 0x55f2580b +vmlinux __alloc_skb 0x60a7e821 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0x5c85d66b +vmlinux __bio_clone 0x57909a6b +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0x4c940120 +vmlinux __bread 0x4a30a919 +vmlinux __breadahead 0x99892633 +vmlinux __break_lease 0x0d2a4381 +vmlinux __brelse 0x0713c5ec +vmlinux __builtin_strlen 0xe3ed7844 +vmlinux __check_region 0xf1d0cdab +vmlinux __clear_user 0xf3341268 +vmlinux __const_udelay 0xeae3dfd6 +vmlinux __cpufreq_driver_target 0x68edd384 +vmlinux __create_workqueue 0x64d78ed6 +vmlinux __d_path 0xef9908f3 +vmlinux __delay 0x466c14a7 +vmlinux __dev_get_by_index 0x1e64c831 +vmlinux __dev_get_by_name 0xfdb1f76d +vmlinux __dev_remove_pack 0x0a327498 +vmlinux __down_failed 0x7a7ef853 +vmlinux __down_failed_interruptible 0xccd52b12 +vmlinux __down_failed_trylock 0xe9a60ad6 +vmlinux __down_read 0x8df63884 +vmlinux __down_read_trylock 0x7bfad8b0 +vmlinux __down_write 0x0d4c5812 +vmlinux __down_write_trylock 0x3810bd1a +vmlinux __downgrade_write 0x158c90d5 +vmlinux __dst_free 0x00b80499 +vmlinux __elv_add_request 0x6219add4 +vmlinux __find_get_block 0x05d105d8 +vmlinux __free_pages 0x802514d6 +vmlinux __generic_file_aio_read 0x76a7bb58 +vmlinux __generic_unplug_device 0x69dfa959 +vmlinux __get_free_pages 0x93fca811 +vmlinux __get_user_1 0x167e7f9d +vmlinux __get_user_2 0x8f9c199c +vmlinux __get_user_4 0x6729d3df +vmlinux __get_user_8 0x6d334118 +vmlinux __getblk 0xd21e84ca +vmlinux __ide_abort 0x9e9724ab +vmlinux __ide_dma_bad_drive 0xd3aaacf8 +vmlinux __ide_dma_check 0x83749e55 +vmlinux __ide_dma_end 0xec4d0252 +vmlinux __ide_dma_good_drive 0x9f710763 +vmlinux __ide_dma_host_off 0xe35e80d3 +vmlinux __ide_dma_host_on 0xb420c72b +vmlinux __ide_dma_lostirq 0xaf121400 +vmlinux __ide_dma_off 0xa54119c8 +vmlinux __ide_dma_off_quietly 0xe1faee70 +vmlinux __ide_dma_on 0xc207a584 +vmlinux __ide_dma_timeout 0x6ed4a44a +vmlinux __ide_end_request 0x277d4b58 +vmlinux __ide_error 0x37116188 +vmlinux __ide_pci_register_driver 0x7c4cc158 +vmlinux __inet_lookup_listener 0x3fdbae21 +vmlinux __inet_twsk_hashdance 0x70e1d79c +vmlinux __inet_twsk_kill 0xa5eea9aa +vmlinux __init_timer_base 0xfcafa2e2 +vmlinux __inode_dir_notify 0xcfad727e +vmlinux __insert_inode_hash 0xd17ee5b8 +vmlinux __invalidate_device 0x4dd9f586 +vmlinux __ioremap 0x9eac042a +vmlinux __ip_route_output_key 0x30ce6999 +vmlinux __ip_select_ident 0x2dddbf07 +vmlinux __kfifo_get 0x69a6b354 +vmlinux __kfifo_put 0xd68d028d +vmlinux __kfree_skb 0xd0cda2bd +vmlinux __kill_fasync 0x89647b17 +vmlinux __kmalloc 0x5a34a45c +vmlinux __lock_buffer 0x98badd4a +vmlinux __lock_page 0xb0e5fe97 +vmlinux __mark_inode_dirty 0xc52cf6da +vmlinux __memcpy 0xc16fe12d +vmlinux __memcpy_fromio 0xf666cbb3 +vmlinux __memcpy_toio 0x5252f304 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xb0edb54a +vmlinux __module_put_and_exit 0x4ad3e58f +vmlinux __ndelay 0xdf8c695a +vmlinux __neigh_event_send 0x56425591 +vmlinux __neigh_for_each_release 0xf48ef76a +vmlinux __net_timestamp 0xeeeaa197 +vmlinux __netdev_watchdog_up 0xaedd5ed9 +vmlinux __nla_put 0xa46149e6 +vmlinux __nla_reserve 0xd2aeee9a +vmlinux __node_distance 0x46c47fb6 +vmlinux __page_cache_release 0x3af8b54e +vmlinux __pagevec_lru_add 0xaeedbc34 +vmlinux __pagevec_release 0xd447bc34 +vmlinux __pci_register_driver 0xe7f91694 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0xd95ed330 +vmlinux __put_user_1 0xc3aaf0a9 +vmlinux __put_user_2 0x5a4896a8 +vmlinux __put_user_4 0xb2fd5ceb +vmlinux __put_user_8 0xb8e7ce2c +vmlinux __read_lock_failed 0xa1bf4e7d +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0xa73bb91c +vmlinux __scm_destroy 0x50de7034 +vmlinux __scm_send 0xc30c6381 +vmlinux __secpath_destroy 0x9d36f422 +vmlinux __serio_register_driver 0x9d83d0ec +vmlinux __serio_register_port 0x35ee2523 +vmlinux __serio_unregister_port_delayed 0x09914384 +vmlinux __set_page_dirty_buffers 0x62891d03 +vmlinux __set_page_dirty_nobuffers 0x835fe223 +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0xc4748d7f +vmlinux __skb_checksum_complete 0xfe413508 +vmlinux __skb_linearize 0x9ead58b0 +vmlinux __strncpy_from_user 0xc003c637 +vmlinux __supported_pte_mask 0xfb3a28c3 +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x267fc65b +vmlinux __tasklet_schedule 0xf397b9aa +vmlinux __tcf_em_tree_match 0x63cda8f5 +vmlinux __udelay 0x9e7d6bd0 +vmlinux __up_read 0x6f4da02b +vmlinux __up_wakeup 0x1042cbb5 +vmlinux __up_write 0x4bc75df3 +vmlinux __user_walk 0x4ce05212 +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0x7cb5e9a9 +vmlinux __wait_on_bit_lock 0xa396c2b5 +vmlinux __wait_on_buffer 0x4078534a +vmlinux __wake_up 0xb505bbf8 +vmlinux __wake_up_bit 0xd2d4e0b6 +vmlinux __wake_up_sync 0xe72be616 +vmlinux __write_lock_failed 0xc8a0c38e +vmlinux __xfrm_policy_check 0x4cbaeaf2 +vmlinux __xfrm_policy_destroy 0x86c6b522 +vmlinux __xfrm_route_forward 0xb961003a +vmlinux __xfrm_state_destroy 0xd95a2e50 +vmlinux _atomic_dec_and_lock 0x9f334253 +vmlinux _ctype 0x8d3894f2 +vmlinux _read_lock 0xce0f1efc +vmlinux _read_lock_bh 0x8ddd843c +vmlinux _read_lock_irq 0x48bf8541 +vmlinux _read_lock_irqsave 0x323ea127 +vmlinux _read_trylock 0x379d8c2c +vmlinux _read_unlock 0xf890c5b2 +vmlinux _read_unlock_bh 0xf5a5b6c1 +vmlinux _read_unlock_irq 0x8bcb73d2 +vmlinux _read_unlock_irqrestore 0x16df1f51 +vmlinux _spin_lock 0x65d4de80 +vmlinux _spin_lock_bh 0x690e213d +vmlinux _spin_lock_irq 0x2a081302 +vmlinux _spin_lock_irqsave 0x1099d3f4 +vmlinux _spin_trylock 0xa2ea55a2 +vmlinux _spin_trylock_bh 0x4bd1ef5f +vmlinux _spin_unlock 0x25f3fbb2 +vmlinux _spin_unlock_bh 0x0318750f +vmlinux _spin_unlock_irq 0xe2b554d6 +vmlinux _spin_unlock_irqrestore 0x7601ed74 +vmlinux _write_lock 0x531415e6 +vmlinux _write_lock_bh 0xf5fdb220 +vmlinux _write_lock_irq 0x5cc6f938 +vmlinux _write_lock_irqsave 0x106d3d0a +vmlinux _write_trylock 0xeafca145 +vmlinux _write_unlock 0xdf6f7bfa +vmlinux _write_unlock_bh 0xdc680625 +vmlinux _write_unlock_irq 0x2c859803 +vmlinux _write_unlock_irqrestore 0xb8e0d4e7 +vmlinux acpi_acquire_global_lock 0x70d8ab82 +vmlinux acpi_bus_add 0x02e9e6eb +vmlinux acpi_bus_generate_event 0x889109e1 +vmlinux acpi_bus_get_device 0x16472972 +vmlinux acpi_bus_get_power 0x7389c9a8 +vmlinux acpi_bus_get_status 0x07dc16d2 +vmlinux acpi_bus_receive_event 0x141dbf9b +vmlinux acpi_bus_register_driver 0x4c1c7a68 +vmlinux acpi_bus_set_power 0xcb733bf2 +vmlinux acpi_bus_start 0xf68c671d +vmlinux acpi_bus_unregister_driver 0xc5404011 +vmlinux acpi_clear_event 0x0fd00a68 +vmlinux acpi_dbg_layer 0xb3284531 +vmlinux acpi_dbg_level 0xca8acc78 +vmlinux acpi_disable_event 0xb758b225 +vmlinux acpi_disabled 0x1a45cb6c +vmlinux acpi_ec_read 0x50a0e15a +vmlinux acpi_ec_write 0x7ff7a286 +vmlinux acpi_enable_event 0x6237f6b5 +vmlinux acpi_enable_gpe 0xf47d47e0 +vmlinux acpi_enter_sleep_state 0xfe047ce6 +vmlinux acpi_enter_sleep_state_s4bios 0x20092385 +vmlinux acpi_evaluate_integer 0xc598bf3e +vmlinux acpi_evaluate_object 0x1d146440 +vmlinux acpi_evaluate_reference 0x9044cb34 +vmlinux acpi_extract_package 0xd041334b +vmlinux acpi_fadt 0xddcb58d9 +vmlinux acpi_fadt_is_v1 0x01438985 +vmlinux acpi_get_child 0xda268faa +vmlinux acpi_get_current_resources 0x967c2a85 +vmlinux acpi_get_devices 0xee46feef +vmlinux acpi_get_firmware_table 0x5331e1b5 +vmlinux acpi_get_handle 0x2bfeb410 +vmlinux acpi_get_name 0x08c4f629 +vmlinux acpi_get_next_object 0x170c25ee +vmlinux acpi_get_object_info 0x797435d0 +vmlinux acpi_get_parent 0xfb0443fb +vmlinux acpi_get_pci_id 0x058c75d9 +vmlinux acpi_get_pci_rootbridge_handle 0x1f8ec1b3 +vmlinux acpi_get_physical_device 0xbffb279a +vmlinux acpi_get_pxm 0x0a372247 +vmlinux acpi_get_register 0x2b5d6f73 +vmlinux acpi_get_sleep_type_data 0x8d8d96c6 +vmlinux acpi_get_table 0x3b289c5b +vmlinux acpi_get_type 0x0d3dda14 +vmlinux acpi_in_suspend 0xf78a658e +vmlinux acpi_install_address_space_handler 0xff03752f +vmlinux acpi_install_fixed_event_handler 0x5ac376a5 +vmlinux acpi_install_gpe_block 0xda8ddbdf +vmlinux acpi_install_gpe_handler 0x02aff2f4 +vmlinux acpi_install_notify_handler 0xd9091363 +vmlinux acpi_map_lsapic 0xda0a6b0e +vmlinux acpi_os_create_semaphore 0x9f8733e2 +vmlinux acpi_os_delete_semaphore 0xe65a005c +vmlinux acpi_os_free 0x43b9bbb4 +vmlinux acpi_os_printf 0x667cecc9 +vmlinux acpi_os_queue_for_execution 0xdb9d67ff +vmlinux acpi_os_read_pci_configuration 0xd94c1770 +vmlinux acpi_os_read_port 0xbdaf5b07 +vmlinux acpi_os_signal 0x874aea72 +vmlinux acpi_os_signal_semaphore 0x8cdbc08d +vmlinux acpi_os_sleep 0x540f9040 +vmlinux acpi_os_stall 0x69005013 +vmlinux acpi_os_wait_events_complete 0xc9ab2eef +vmlinux acpi_os_wait_semaphore 0x2565a159 +vmlinux acpi_os_write_port 0x7d94f746 +vmlinux acpi_pci_irq_enable 0x141b6a9c +vmlinux acpi_pci_register_driver 0xd1472061 +vmlinux acpi_pci_unregister_driver 0x43385ad9 +vmlinux acpi_register_gsi 0x36d5355b +vmlinux acpi_register_ioapic 0x636a5691 +vmlinux acpi_release_global_lock 0x3e2ae3a8 +vmlinux acpi_remove_address_space_handler 0xfcfaa928 +vmlinux acpi_remove_fixed_event_handler 0x2005e68a +vmlinux acpi_remove_gpe_block 0x8e002cda +vmlinux acpi_remove_gpe_handler 0xb07dfb3d +vmlinux acpi_remove_notify_handler 0x2bb55d6e +vmlinux acpi_resource_to_address64 0x263b54cc +vmlinux acpi_root_dir 0x2ec881cd +vmlinux acpi_set_current_resources 0xdc24d101 +vmlinux acpi_set_gpe_type 0xa3bbcd80 +vmlinux acpi_set_register 0x4a9d86e3 +vmlinux acpi_specific_hotkey_enabled 0x46621493 +vmlinux acpi_strict 0xa59c0666 +vmlinux acpi_unmap_lsapic 0xd18b6eb2 +vmlinux acpi_unregister_ioapic 0xe716baed +vmlinux acpi_walk_namespace 0x19d5d20a +vmlinux acpi_walk_resources 0x375c5115 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0x622947ce +vmlinux add_disk_randomness 0xd7627d18 +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0x79682b65 +vmlinux add_wait_queue 0x4dbc2aea +vmlinux add_wait_queue_exclusive 0x3258cc21 +vmlinux adjust_resource 0xfd05bd8a +vmlinux agp3_generic_cleanup 0xc2424641 +vmlinux agp3_generic_configure 0x4b085dbf +vmlinux agp3_generic_fetch_size 0xde9b17ed +vmlinux agp3_generic_sizes 0x546264cf +vmlinux agp3_generic_tlbflush 0x9d571081 +vmlinux agp_add_bridge 0xf64d306a +vmlinux agp_alloc_bridge 0x1d60193c +vmlinux agp_allocate_memory 0xb9429736 +vmlinux agp_backend_acquire 0x352ccecd +vmlinux agp_backend_release 0xb0661510 +vmlinux agp_bind_memory 0x9e8f8f3a +vmlinux agp_bridge 0xb846f1d1 +vmlinux agp_bridges 0x673f815e +vmlinux agp_collect_device_status 0x60e336a9 +vmlinux agp_copy_info 0x9cee41d1 +vmlinux agp_create_memory 0xd7e7f880 +vmlinux agp_device_command 0xe6d5c272 +vmlinux agp_enable 0x56e49412 +vmlinux agp_find_bridge 0x537cd674 +vmlinux agp_free_key 0xd0fef3b2 +vmlinux agp_free_memory 0x96dcafa0 +vmlinux agp_generic_alloc_by_type 0x85e6ee40 +vmlinux agp_generic_alloc_page 0x0c4065ea +vmlinux agp_generic_create_gatt_table 0x646b69a1 +vmlinux agp_generic_destroy_page 0xbba27749 +vmlinux agp_generic_enable 0x8a029389 +vmlinux agp_generic_free_by_type 0x2711a60c +vmlinux agp_generic_free_gatt_table 0x1e2668cb +vmlinux agp_generic_insert_memory 0xce5a0a50 +vmlinux agp_generic_mask_memory 0x8b3327db +vmlinux agp_generic_remove_memory 0xadb71d1b +vmlinux agp_memory_reserved 0xe089cfcc +vmlinux agp_num_entries 0xd6feefa5 +vmlinux agp_off 0x7538b132 +vmlinux agp_put_bridge 0x356b9e1f +vmlinux agp_remove_bridge 0x9ba4ac37 +vmlinux agp_try_unsupported_boot 0xc5d9c46c +vmlinux agp_unbind_memory 0x4a99cc56 +vmlinux aio_complete 0x522dffc9 +vmlinux aio_put_req 0xc3cf23c8 +vmlinux alloc_buffer_head 0x61706179 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0xbe251d99 +vmlinux alloc_disk_node 0xde3ef23b +vmlinux alloc_etherdev 0xe04e3f35 +vmlinux alloc_fcdev 0x6fc4ecf3 +vmlinux alloc_fddidev 0x4d7d482e +vmlinux alloc_hippi_dev 0xbcb60caf +vmlinux alloc_netdev 0x236f24a1 +vmlinux alloc_page_buffers 0x180e5adc +vmlinux alloc_pages_current 0x8f330a79 +vmlinux alloc_trdev 0x81896b6d +vmlinux alloc_tty_driver 0x01c156fe +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0x5d1b338d +vmlinux anon_transport_class_unregister 0x7e96ebd3 +vmlinux arch_acpi_processor_init_pdc 0x576df302 +vmlinux arch_register_cpu 0x2dd16564 +vmlinux arch_unregister_cpu 0x0237b57a +vmlinux arp_broken_ops 0xc8c7fafd +vmlinux arp_create 0x84eed27a +vmlinux arp_find 0x539d34d5 +vmlinux arp_rcv 0xdb0aed18 +vmlinux arp_send 0x344ae279 +vmlinux arp_tbl 0x8b9ec1a6 +vmlinux arp_xmit 0x386d8adc +vmlinux atm_alloc_charge 0xe2f3baa8 +vmlinux atm_charge 0xb4ee5a51 +vmlinux atm_dev_deregister 0x4cb2bfcc +vmlinux atm_dev_lookup 0xa277c200 +vmlinux atm_dev_register 0x6f25afd0 +vmlinux atm_init_aal5 0xefc5cd24 +vmlinux atm_pcr_goal 0xf49bc67a +vmlinux atm_proc_root 0x0ffcb4a7 +vmlinux attribute_container_add_attrs 0x602b48bb +vmlinux attribute_container_add_class_device 0xf8d2cec0 +vmlinux attribute_container_add_class_device_adapter 0x1ecbe57a +vmlinux attribute_container_class_device_del 0x8844c23e +vmlinux attribute_container_classdev_to_container 0x2880c707 +vmlinux attribute_container_device_trigger 0x3ada488b +vmlinux attribute_container_find_class_device 0xa2ba9c3d +vmlinux attribute_container_register 0xd450ee77 +vmlinux attribute_container_remove_attrs 0x4ac317aa +vmlinux attribute_container_remove_device 0x282d0fa6 +vmlinux attribute_container_trigger 0x2438cc15 +vmlinux attribute_container_unregister 0x7e7aaa85 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux bad_dma_address 0x1675606f +vmlinux balance_dirty_pages_ratelimited 0x36b22659 +vmlinux bd_claim 0xf05885df +vmlinux bd_release 0x3373cf93 +vmlinux bd_set_size 0x32fc26ad +vmlinux bdev_read_only 0x26362ac6 +vmlinux bdevname 0x6aa5e79c +vmlinux bdget 0xbe09f955 +vmlinux bdput 0xbabcb6c7 +vmlinux bfifo_qdisc_ops 0x8f8ee800 +vmlinux bio_add_page 0xc66a0f5a +vmlinux bio_alloc 0x66c930a3 +vmlinux bio_alloc_bioset 0x98a58651 +vmlinux bio_clone 0x94ec33a6 +vmlinux bio_copy_user 0x2c244f5b +vmlinux bio_endio 0x770acd88 +vmlinux bio_free 0x712bb2a0 +vmlinux bio_get_nr_vecs 0x06fceb07 +vmlinux bio_hw_segments 0x8b741065 +vmlinux bio_init 0xa61f9833 +vmlinux bio_map_kern 0xfc9a37cc +vmlinux bio_map_user 0x006ef808 +vmlinux bio_pair_release 0x6b8a9b20 +vmlinux bio_phys_segments 0x12c488c1 +vmlinux bio_put 0x749bf06d +vmlinux bio_split 0xbe9ee903 +vmlinux bio_split_pool 0x44722aee +vmlinux bio_uncopy_user 0x79c40941 +vmlinux bio_unmap_user 0xf1a19ec0 +vmlinux bioset_create 0xb9b704ad +vmlinux bioset_free 0x2f2c32e4 +vmlinux bit_waitqueue 0x6d89d0e3 +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0x82c5c435 +vmlinux blk_alloc_queue_node 0x2658f080 +vmlinux blk_cleanup_queue 0x14130598 +vmlinux blk_complete_barrier_rq 0xd958f557 +vmlinux blk_complete_barrier_rq_locked 0x62a0d80b +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x64864248 +vmlinux blk_end_sync_rq 0xbb934a76 +vmlinux blk_execute_rq 0xb0d21f29 +vmlinux blk_get_backing_dev_info 0x936f16cd +vmlinux blk_get_queue 0x9360c707 +vmlinux blk_get_request 0x56a6fb59 +vmlinux blk_init_queue 0x203ad38c +vmlinux blk_init_queue_node 0xef3a6a4f +vmlinux blk_insert_request 0x998ae68c +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0x6f1b53bf +vmlinux blk_put_request 0x041cac36 +vmlinux blk_queue_activity_fn 0x83cc4173 +vmlinux blk_queue_bounce 0x9f948372 +vmlinux blk_queue_bounce_limit 0xa085f122 +vmlinux blk_queue_dma_alignment 0x1387675a +vmlinux blk_queue_end_tag 0xbb5698c2 +vmlinux blk_queue_find_tag 0x79310a59 +vmlinux blk_queue_free_tags 0x41a2b960 +vmlinux blk_queue_hardsect_size 0xe0cb660c +vmlinux blk_queue_init_tags 0x5d480571 +vmlinux blk_queue_invalidate_tags 0x0437530d +vmlinux blk_queue_issue_flush_fn 0xadde8865 +vmlinux blk_queue_make_request 0x02598bcc +vmlinux blk_queue_max_hw_segments 0xa1b6dfad +vmlinux blk_queue_max_phys_segments 0x157df7b8 +vmlinux blk_queue_max_sectors 0xf39849c3 +vmlinux blk_queue_max_segment_size 0x7e999748 +vmlinux blk_queue_merge_bvec 0x1a11b59e +vmlinux blk_queue_ordered 0x0e395f0e +vmlinux blk_queue_prep_rq 0x3294c7a1 +vmlinux blk_queue_resize_tags 0x16c33315 +vmlinux blk_queue_segment_boundary 0xee097813 +vmlinux blk_queue_stack_limits 0xae84f40b +vmlinux blk_queue_start_tag 0x4526fd8f +vmlinux blk_register_region 0x9dafe9ae +vmlinux blk_remove_plug 0xc151c39e +vmlinux blk_requeue_request 0xc61a28ec +vmlinux blk_rq_bio_prep 0x159ac127 +vmlinux blk_rq_map_kern 0x01a5cb6b +vmlinux blk_rq_map_sg 0xc23c6d5c +vmlinux blk_rq_map_user 0xfa5b5be8 +vmlinux blk_rq_map_user_iov 0x2258a03b +vmlinux blk_rq_unmap_user 0xa29b7f4a +vmlinux blk_run_queue 0x9770c42c +vmlinux blk_start_queue 0xa9c4b163 +vmlinux blk_stop_queue 0x5b03619b +vmlinux blk_sync_queue 0x5f4963ac +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0xdb9fd1ea +vmlinux blkdev_ioctl 0xde7853a3 +vmlinux blkdev_issue_flush 0x83bf6b8f +vmlinux blkdev_put 0xfd40d82a +vmlinux block_all_signals 0x4edd72f7 +vmlinux block_commit_write 0x85481672 +vmlinux block_invalidatepage 0x5d964b86 +vmlinux block_prepare_write 0x8130be1f +vmlinux block_read_full_page 0x78dc0571 +vmlinux block_sync_page 0x36ee75c5 +vmlinux block_truncate_page 0xc5f595e0 +vmlinux block_write_full_page 0xcbf510c1 +vmlinux bmap 0xfe90331d +vmlinux boot_cpu_data 0x0f47f5b5 +vmlinux boot_option_idle_override 0xef9aedfc +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0x1657348e +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0x525925ad +vmlinux bus_create_file 0x08e9d813 +vmlinux bus_find_device 0x8d95df4b +vmlinux bus_for_each_dev 0x043ce7a9 +vmlinux bus_for_each_drv 0x803e9e65 +vmlinux bus_register 0xaae4639a +vmlinux bus_remove_device 0x8652f970 +vmlinux bus_remove_file 0x5e27b307 +vmlinux bus_rescan_devices 0x99c9042d +vmlinux bus_unregister 0x5ae1c2f3 +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x4d5b49eb +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0xd48a0bbf +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x500916b2 +vmlinux cdev_alloc 0xaa541aa9 +vmlinux cdev_del 0x89cb767e +vmlinux cdev_init 0x6258f1d6 +vmlinux change_page_attr 0x419cc561 +vmlinux check_disk_change 0xc5311c78 +vmlinux class_create 0x3437f089 +vmlinux class_create_file 0x78708ae3 +vmlinux class_destroy 0x47905677 +vmlinux class_device_add 0x08a968fc +vmlinux class_device_create 0x58ab54a3 +vmlinux class_device_create_bin_file 0x834eccb6 +vmlinux class_device_create_file 0x57873cae +vmlinux class_device_del 0x9a52b031 +vmlinux class_device_destroy 0x764e0b31 +vmlinux class_device_get 0x2be3c672 +vmlinux class_device_initialize 0xce6fc55f +vmlinux class_device_put 0xf80ab2ff +vmlinux class_device_register 0x356f9ace +vmlinux class_device_remove_bin_file 0xb760962c +vmlinux class_device_remove_file 0x959a5200 +vmlinux class_device_unregister 0xa6a3ce27 +vmlinux class_get 0xb7d32eb1 +vmlinux class_interface_register 0x2b7e60af +vmlinux class_interface_unregister 0x8a5a07cf +vmlinux class_put 0xcc09270b +vmlinux class_register 0xbb6f58b9 +vmlinux class_remove_file 0x73c4e45a +vmlinux class_unregister 0x57fb48af +vmlinux clear_inode 0x177233ae +vmlinux clear_page 0x3d9ee9f0 +vmlinux clear_page_dirty_for_io 0xb9d0f366 +vmlinux clear_user 0x7aec9089 +vmlinux clip_tbl_hook 0xaf560513 +vmlinux close_bdev_excl 0x5fbae128 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0xcaf5516c +vmlinux complete_all 0xef1bc982 +vmlinux complete_and_exit 0x0f167e68 +vmlinux compute_creds 0xb51dde96 +vmlinux con_copy_unimap 0xc319b00a +vmlinux con_set_default_unimap 0x9eb0c3ea +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0x60fa99a7 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0x031ad3aa +vmlinux console_stop 0xbe463561 +vmlinux cont_prepare_write 0x69fa9bb2 +vmlinux copy_from_user 0x945bc6a7 +vmlinux copy_fs_struct 0xf40401e0 +vmlinux copy_in_user 0xf116d4b5 +vmlinux copy_io_context 0x7af34c1d +vmlinux copy_page 0x33b84f74 +vmlinux copy_strings_kernel 0x63a21bdb +vmlinux copy_to_user 0xbe499d81 +vmlinux copy_user_generic 0x21e5679c +vmlinux cpu_callout_map 0x215073d1 +vmlinux cpu_core_map 0xff0700b2 +vmlinux cpu_data 0x75de9530 +vmlinux cpu_idle_wait 0xb53ae573 +vmlinux cpu_khz 0xd6b33026 +vmlinux cpu_online_map 0x20267f8c +vmlinux cpu_pda 0x098f4398 +vmlinux cpu_possible_map 0xd112f981 +vmlinux cpu_present_map 0x16b79c81 +vmlinux cpu_sibling_map 0x82ca1de2 +vmlinux cpu_sysdev_class 0x90510d33 +vmlinux cpu_to_node 0x2e75b744 +vmlinux cpufreq_cpu_get 0x3ed6655d +vmlinux cpufreq_cpu_put 0xc812501d +vmlinux cpufreq_driver_target 0xd5c689b5 +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0xbcf8dc0f +vmlinux cpufreq_gov_performance 0xdf87ea6c +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0xe6488b47 +vmlinux cpufreq_parse_governor 0x5de7f37b +vmlinux cpufreq_register_driver 0x9e925624 +vmlinux cpufreq_register_governor 0xbee6e711 +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0x7e8f6774 +vmlinux cpufreq_unregister_driver 0xad78f46b +vmlinux cpufreq_unregister_governor 0xebc37ca0 +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0xc09651d9 +vmlinux crc32_le 0x92ea4ae4 +vmlinux create_empty_buffers 0x213a26d4 +vmlinux create_proc_entry 0xc6101da8 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0x6e05db90 +vmlinux crypto_free_tfm 0x85c2a376 +vmlinux crypto_hmac 0xe7034001 +vmlinux crypto_hmac_final 0x75b90af5 +vmlinux crypto_hmac_init 0xec6e2cdd +vmlinux crypto_hmac_update 0x68c0e2d5 +vmlinux crypto_register_alg 0xfff02c97 +vmlinux crypto_unregister_alg 0x58776db3 +vmlinux csum_ipv6_magic 0xd79301a3 +vmlinux csum_partial 0xf1e29eae +vmlinux csum_partial_copy_from_user 0x7cf86690 +vmlinux csum_partial_copy_fromiovecend 0x883c8eca +vmlinux csum_partial_copy_nocheck 0xa2963be1 +vmlinux csum_partial_copy_to_user 0xeb7268d1 +vmlinux current_fs_time 0x4fe9de59 +vmlinux current_io_context 0xd2ca84a5 +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0x0a4f7428 +vmlinux d_alloc_anon 0xd7c8a55d +vmlinux d_alloc_name 0xe52d8b62 +vmlinux d_alloc_root 0xe11c837b +vmlinux d_delete 0x9dbb4677 +vmlinux d_find_alias 0xb53dcfbc +vmlinux d_genocide 0xa7457522 +vmlinux d_instantiate 0x9705f5ef +vmlinux d_instantiate_unique 0x58f1923b +vmlinux d_invalidate 0x5538d234 +vmlinux d_lookup 0x8955e84c +vmlinux d_move 0x2fcdb759 +vmlinux d_path 0x34a05dff +vmlinux d_prune_aliases 0xa8550787 +vmlinux d_rehash 0x3200b223 +vmlinux d_splice_alias 0x9743ec19 +vmlinux d_validate 0xfee2624d +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0x39e3be99 +vmlinux dcache_dir_close 0x301bcc15 +vmlinux dcache_dir_lseek 0xffc1b549 +vmlinux dcache_dir_open 0xb795686b +vmlinux dcache_lock 0x9c4fb5fb +vmlinux dcache_readdir 0x59422155 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0x6fe234fb +vmlinux default_backing_dev_info 0x3002519d +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0x86ae43bf +vmlinux default_llseek 0xe127b9a3 +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0xcc7c5a80 +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0xff2bf1b3 +vmlinux del_timer 0x9b1622fc +vmlinux del_timer_sync 0xcf58e6f3 +vmlinux dentry_open 0x3109b160 +vmlinux dentry_unhash 0x97b8dcba +vmlinux dequeue_signal 0x901406da +vmlinux deregister_atm_ioctl 0xf21f5631 +vmlinux destroy_8023_client 0xac128599 +vmlinux destroy_EII_client 0x6cbc58aa +vmlinux destroy_workqueue 0xdf5ea9ef +vmlinux dev_add_pack 0xc96a7f06 +vmlinux dev_alloc_name 0x1d66d45c +vmlinux dev_base 0x22dd6a1d +vmlinux dev_base_lock 0xcbc6fc20 +vmlinux dev_change_flags 0x74ecc89f +vmlinux dev_close 0xc2c6ef43 +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0x5b7f6401 +vmlinux dev_get_by_index 0xab6899ba +vmlinux dev_get_by_name 0xd9a7cbfd +vmlinux dev_get_flags 0x7895efc5 +vmlinux dev_getbyhwaddr 0x8689f5db +vmlinux dev_getfirstbyhwtype 0x50b16928 +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0xa158eb9c +vmlinux dev_mc_delete 0xc281f14a +vmlinux dev_mc_upload 0x099ce913 +vmlinux dev_open 0x35d08351 +vmlinux dev_queue_xmit 0x9e28fa21 +vmlinux dev_remove_pack 0x0f2c1dc7 +vmlinux dev_set_allmulti 0x524a9dc3 +vmlinux dev_set_mac_address 0x692c15c7 +vmlinux dev_set_mtu 0x56b4e135 +vmlinux dev_set_promiscuity 0x3ba3bbbb +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0xce35f74a +vmlinux device_attach 0x9cf9d4af +vmlinux device_bind_driver 0x73723a8d +vmlinux device_create_file 0x78cce648 +vmlinux device_del 0xc6d67015 +vmlinux device_for_each_child 0x4ed15a39 +vmlinux device_initialize 0x86370a03 +vmlinux device_pm_set_parent 0xd7f49c42 +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0x3052e379 +vmlinux device_release_driver 0xd324d899 +vmlinux device_remove_file 0x45a810d1 +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0x07566657 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0xd1baffb9 +vmlinux die_chain 0x492a6534 +vmlinux disable_hlt 0x794487ee +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disable_timer_nmi_watchdog 0xf2fb62ee +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_alloc_coherent 0x9bdaeb30 +vmlinux dma_free_coherent 0xb3b1a957 +vmlinux dma_get_required_mask 0xce9bffb1 +vmlinux dma_ops 0x3f720a1e +vmlinux dma_pool_alloc 0x249078e6 +vmlinux dma_pool_create 0xd00b7bc8 +vmlinux dma_pool_destroy 0x9551bbdd +vmlinux dma_pool_free 0xdeadb281 +vmlinux dma_set_mask 0x575c0df0 +vmlinux dma_spin_lock 0xfedbb44a +vmlinux dma_supported 0xd77ef479 +vmlinux dnotify_parent 0x395aef18 +vmlinux do_SAK 0xebf89a5f +vmlinux do_add_mount 0x9535a1f2 +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0x14011966 +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0xfbbd5ef1 +vmlinux do_mmap_pgoff 0xa5323aff +vmlinux do_munmap 0x4c9a99ae +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x023ed34c +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0x27cbbea7 +vmlinux do_softirq_thunk 0xfd0315f0 +vmlinux do_sync_read 0x180f8f7b +vmlinux do_sync_write 0xc4927455 +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0x7307cfd7 +vmlinux dput 0xb3bb9078 +vmlinux dq_data_lock 0xcd948d98 +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x50703435 +vmlinux dquot_alloc_inode 0x7ad8ef82 +vmlinux dquot_alloc_space 0x9058d84e +vmlinux dquot_commit 0xd76e22a6 +vmlinux dquot_commit_info 0x4d613b0c +vmlinux dquot_drop 0x165ec46b +vmlinux dquot_free_inode 0x401c8807 +vmlinux dquot_free_space 0xd8b1fb35 +vmlinux dquot_initialize 0x05a3b9c4 +vmlinux dquot_mark_dquot_dirty 0x583c99c8 +vmlinux dquot_release 0x5b4266de +vmlinux dquot_transfer 0xeb54cc63 +vmlinux drive_info 0x744aa133 +vmlinux drive_is_ready 0xcfdf68ed +vmlinux driver_attach 0xf6c70651 +vmlinux driver_create_file 0x6035108f +vmlinux driver_find 0xe2bb8151 +vmlinux driver_find_device 0xfed40f8c +vmlinux driver_for_each_device 0x913070df +vmlinux driver_register 0xc6e884ed +vmlinux driver_remove_file 0xb75d2895 +vmlinux driver_unregister 0x5ccc154b +vmlinux drop_super 0x82f13f03 +vmlinux dst_alloc 0x69e84ff0 +vmlinux dst_destroy 0x11c6dc51 +vmlinux dump_stack 0x6b2dc060 +vmlinux ec_read 0xba2d8594 +vmlinux ec_write 0x876dafc3 +vmlinux eighty_ninty_three 0x61e26357 +vmlinux elevator_exit 0x87c11004 +vmlinux elevator_init 0x98544ea7 +vmlinux elv_add_request 0x38ae0f8d +vmlinux elv_completed_request 0x4ea81b5e +vmlinux elv_dequeue_request 0x7ba5f39e +vmlinux elv_dispatch_sort 0x541b9473 +vmlinux elv_next_request 0xf439bf01 +vmlinux elv_queue_empty 0x80edc79f +vmlinux elv_register 0xee1b8187 +vmlinux elv_requeue_request 0x80e5f5f8 +vmlinux elv_rq_merge_ok 0xf30c672b +vmlinux elv_try_merge 0x0a458010 +vmlinux elv_unregister 0x9512bfcd +vmlinux emergency_restart 0xd0c05159 +vmlinux empty_zero_page 0xc2c8ec85 +vmlinux enable_hlt 0x9c7077bd +vmlinux enable_irq 0xfcec0987 +vmlinux enable_timer_nmi_watchdog 0x13f54343 +vmlinux end_buffer_async_write 0x4a035f29 +vmlinux end_buffer_read_sync 0x8b6921fa +vmlinux end_buffer_write_sync 0x047daf5b +vmlinux end_page_writeback 0x912f0c54 +vmlinux end_pfn 0xefe8e01c +vmlinux end_request 0x3a086b6d +vmlinux end_that_request_chunk 0x282fe636 +vmlinux end_that_request_first 0x2f603057 +vmlinux end_that_request_last 0x7766b2bd +vmlinux eth_type_trans 0x1062da76 +vmlinux ether_setup 0xc1c7db2c +vmlinux ethtool_op_get_link 0x008c0c3a +vmlinux ethtool_op_get_perm_addr 0x274b1894 +vmlinux ethtool_op_get_sg 0x2b8b7875 +vmlinux ethtool_op_get_tso 0x4dbf813a +vmlinux ethtool_op_get_tx_csum 0x4cf27945 +vmlinux ethtool_op_get_ufo 0xde47890e +vmlinux ethtool_op_set_sg 0x659f2af4 +vmlinux ethtool_op_set_tso 0xbe0d7297 +vmlinux ethtool_op_set_tx_csum 0x1d6a0295 +vmlinux ethtool_op_set_tx_hw_csum 0xfed44f71 +vmlinux ethtool_op_set_ufo 0xd001baa1 +vmlinux exit_fs 0xaeeb2118 +vmlinux f_setown 0x0840fcc4 +vmlinux fasync_helper 0x83264172 +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x5a8f5903 +vmlinux fb_con_duit 0x55ae9e08 +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0x5f09f731 +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0x1ee6efed +vmlinux fb_get_buffer_offset 0x0199c346 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0x087c6ec8 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0xc8ff8e4a +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0x10d2b48a +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x52679549 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0x22ba496b +vmlinux fb_set_suspend 0xf9b6970a +vmlinux fb_set_var 0x75b7659d +vmlinux fb_show_logo 0x4e751b1d +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0xef904975 +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fd_install 0x7f483b36 +vmlinux fddi_type_trans 0xcaa2649b +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x06105b74 +vmlinux file_fsync 0x1c53e69e +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0x07f1ac8e +vmlinux filemap_fdatawait 0x95c38755 +vmlinux filemap_fdatawrite 0x367a8088 +vmlinux filemap_flush 0x1292d5b2 +vmlinux filemap_nopage 0xbf2ce075 +vmlinux filemap_populate 0x00ac069a +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0x7ddc5541 +vmlinux filp_open 0x9782c65a +vmlinux find_bus 0x898fa70c +vmlinux find_first_bit 0x2274556d +vmlinux find_first_zero_bit 0xb3d2bf12 +vmlinux find_get_page 0xdfe9d007 +vmlinux find_inode_number 0x60394feb +vmlinux find_lock_page 0xa0daf065 +vmlinux find_next_bit 0x44809893 +vmlinux find_next_zero_bit 0x699ce795 +vmlinux find_next_zero_string 0x9e6fe266 +vmlinux find_or_create_page 0xa76533d6 +vmlinux find_task_by_pid_type 0xdec99236 +vmlinux find_trylock_page 0xd832e771 +vmlinux find_vma 0xaed357ab +vmlinux finish_wait 0x8bc0ef5c +vmlinux firmware_register 0xedce2f86 +vmlinux firmware_unregister 0xe2b7c972 +vmlinux flock_lock_file_wait 0xdc09321b +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_old_exec 0x64178e89 +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x21c37411 +vmlinux flush_tlb_page 0x074fc55b +vmlinux flush_workqueue 0xcaebc52a +vmlinux follow_down 0x3a8e1888 +vmlinux follow_up 0x02c935d5 +vmlinux force_sig 0x3c07b2dd +vmlinux fput 0xb0db20c4 +vmlinux framebuffer_alloc 0x6185c2f2 +vmlinux framebuffer_release 0x8c268ff9 +vmlinux free_buffer_head 0x720b52ad +vmlinux free_dma 0x72b243d4 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0xd6bc95e2 +vmlinux free_pages 0x4302d0eb +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0x13119e34 +vmlinux freeze_bdev 0xc8c3e01b +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0xd200a119 +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0xcc16aa57 +vmlinux gen_replace_estimator 0x11cc7fd8 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x37e92a58 +vmlinux generic_block_bmap 0x64dd4050 +vmlinux generic_commit_write 0xed043d95 +vmlinux generic_cont_expand 0x7c8cbb20 +vmlinux generic_delete_inode 0xd238e4b5 +vmlinux generic_drop_inode 0x15f68a02 +vmlinux generic_file_aio_read 0x7e260020 +vmlinux generic_file_aio_write 0xa105fffb +vmlinux generic_file_aio_write_nolock 0xe9a887f6 +vmlinux generic_file_buffered_write 0x792b02ca +vmlinux generic_file_direct_write 0xf574c70e +vmlinux generic_file_llseek 0x5773d0e8 +vmlinux generic_file_mmap 0x0bad3ad1 +vmlinux generic_file_open 0x72ca7d23 +vmlinux generic_file_read 0x11e88cf3 +vmlinux generic_file_readonly_mmap 0x81e189d8 +vmlinux generic_file_readv 0xf119c434 +vmlinux generic_file_sendfile 0xb1f49422 +vmlinux generic_file_write 0x8f8451a4 +vmlinux generic_file_write_nolock 0x8b4570c8 +vmlinux generic_file_writev 0xe47f9c1d +vmlinux generic_fillattr 0xfe247fd8 +vmlinux generic_getxattr 0xf3462ac0 +vmlinux generic_ide_ioctl 0x1213549f +vmlinux generic_listxattr 0xa2611e1e +vmlinux generic_make_request 0x0322fbff +vmlinux generic_osync_inode 0x11e6968b +vmlinux generic_permission 0x1c8e5ca7 +vmlinux generic_read_dir 0x0f5087ed +vmlinux generic_readlink 0x635fe5a6 +vmlinux generic_removexattr 0xca99a183 +vmlinux generic_ro_fops 0xe8b1abb0 +vmlinux generic_setxattr 0xbde6086c +vmlinux generic_shutdown_super 0x2a484317 +vmlinux generic_unplug_device 0x3c63c891 +vmlinux generic_write_checks 0x201581ca +vmlinux genl_register_family 0x50debf9c +vmlinux genl_register_ops 0x149bbaa0 +vmlinux genl_sock 0x68948360 +vmlinux genl_unregister_family 0xc2eca49c +vmlinux genl_unregister_ops 0x8cddb6da +vmlinux get_agp_version 0x5e208c18 +vmlinux get_bus 0x93559730 +vmlinux get_cmos_time 0xb31ddfb4 +vmlinux get_cpu_sysdev 0xd4e3e187 +vmlinux get_dcookie 0x4fac4a82 +vmlinux get_device 0xef73d3e2 +vmlinux get_disk 0x98b4f391 +vmlinux get_driver 0x18f4839b +vmlinux get_empty_filp 0xbecb060c +vmlinux get_fs_type 0x54aeba33 +vmlinux get_io_context 0x368cfdc3 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0x7b0cefc1 +vmlinux get_sb_nodev 0xbbbb610d +vmlinux get_sb_pseudo 0x1257e0f0 +vmlinux get_sb_single 0x132744bd +vmlinux get_super 0x1d748eb8 +vmlinux get_task_mm 0x393038e0 +vmlinux get_unmapped_area 0x7155498e +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x56177784 +vmlinux get_wchan 0xcc53ef63 +vmlinux get_write_access 0xe9409cad +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x7298d653 +vmlinux global_cache_flush 0xa4d4f0e6 +vmlinux global_flush_tlb 0x3167ea19 +vmlinux gnet_stats_copy_app 0x438635a3 +vmlinux gnet_stats_copy_basic 0xb8dd1da3 +vmlinux gnet_stats_copy_queue 0x68fc5dd7 +vmlinux gnet_stats_copy_rate_est 0xb8e57f47 +vmlinux gnet_stats_finish_copy 0xaa818a86 +vmlinux gnet_stats_start_copy 0x4d58382c +vmlinux gnet_stats_start_copy_compat 0x589ef3f7 +vmlinux grab_cache_page_nowait 0xcb576d9a +vmlinux groups_alloc 0xda9f6355 +vmlinux groups_free 0x41ac4793 +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0x2e9b8d1c +vmlinux have_submounts 0x5bf26d41 +vmlinux high_memory 0x8a7d1c31 +vmlinux hippi_type_trans 0x8eea6a37 +vmlinux hpet_alloc 0x686f1325 +vmlinux hpet_control 0x1de314f3 +vmlinux hpet_register 0x741f1f6e +vmlinux hpet_unregister 0x63dfe1b4 +vmlinux hwmon_device_register 0x6a0b25a3 +vmlinux hwmon_device_unregister 0x143108a0 +vmlinux ia32_setup_arg_pages 0xd214e787 +vmlinux ia32_sys_call_table 0x3cf4209c +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x911ca0f4 +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_acpi_exec_tfs 0x7897aa8a +vmlinux ide_acpi_get_timing 0x07cfa340 +vmlinux ide_acpi_init 0xb771e2fa +vmlinux ide_acpi_push_timing 0xe7f43f30 +vmlinux ide_add_setting 0x21a8772f +vmlinux ide_build_dmatable 0xc7c8bcd6 +vmlinux ide_build_sglist 0x0bb3b977 +vmlinux ide_bus_type 0x26eeb9e1 +vmlinux ide_config_drive_speed 0xe9c00ed1 +vmlinux ide_destroy_dmatable 0xd0d422cc +vmlinux ide_dma_enable 0xd649b733 +vmlinux ide_dma_intr 0xa1118135 +vmlinux ide_dma_setup 0x0c36cf7c +vmlinux ide_dma_speed 0xb7b8c89f +vmlinux ide_dma_start 0x3ebc7e7d +vmlinux ide_dma_verbose 0x58c19d49 +vmlinux ide_do_drive_cmd 0x1127538f +vmlinux ide_do_reset 0xfea0fc3b +vmlinux ide_dump_status 0x6ed78d5f +vmlinux ide_end_drive_cmd 0xbe1144bb +vmlinux ide_end_request 0xc4809931 +vmlinux ide_error 0x64719c9c +vmlinux ide_execute_command 0x9ca3882c +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x94e67035 +vmlinux ide_get_error_location 0xf20957d2 +vmlinux ide_hwifs 0x152c37c8 +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0xa9f26da8 +vmlinux ide_init_drive_cmd 0x64d55f76 +vmlinux ide_init_sg_cmd 0x575dcd7f +vmlinux ide_lock 0xb2e7506b +vmlinux ide_map_sg 0xb7f292da +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x3c9a5245 +vmlinux ide_pci_unregister_driver 0x4336f3b4 +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0x7cf8ba10 +vmlinux ide_register_hw 0x6c879b23 +vmlinux ide_register_hw_with_fixup 0x5ff3308c +vmlinux ide_register_region 0xc79c3edb +vmlinux ide_register_subdriver 0x65cfd921 +vmlinux ide_set_handler 0xa669273d +vmlinux ide_set_xfer_rate 0xb9f294ff +vmlinux ide_setup_dma 0x26863bb2 +vmlinux ide_setup_pci_device 0x1bc44c06 +vmlinux ide_setup_pci_devices 0xbe359f50 +vmlinux ide_setup_pci_noise 0xebe89338 +vmlinux ide_spin_wait_hwgroup 0xffa59d97 +vmlinux ide_stall_queue 0xb94c827d +vmlinux ide_undecoded_slave 0x1928d0c7 +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0xa54d0154 +vmlinux ide_unregister_subdriver 0xce770159 +vmlinux ide_use_dma 0x6e15740c +vmlinux ide_wait_not_busy 0x318fce54 +vmlinux ide_wait_stat 0x2ec0979c +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0xa45faea7 +vmlinux idr_find 0x9ee01363 +vmlinux idr_get_new 0x4e4e7628 +vmlinux idr_get_new_above 0x7ad6c0fa +vmlinux idr_init 0x4baa35f2 +vmlinux idr_pre_get 0x18cab6cd +vmlinux idr_remove 0x0e54a306 +vmlinux iget5_locked 0x30ae64bc +vmlinux iget_locked 0xc9e1607c +vmlinux igrab 0x045df9df +vmlinux ilookup 0xab2d1015 +vmlinux ilookup5 0x0c1e148b +vmlinux ilookup5_nowait 0x72fd1789 +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0x90be983b +vmlinux in_egroup_p 0x42a4bdf2 +vmlinux in_group_p 0x31ebadcd +vmlinux in_lock_functions 0x09d44df9 +vmlinux inet6_lookup 0x9e1d8cbb +vmlinux inet6_lookup_listener 0x6a10c339 +vmlinux inet_accept 0xa4b3f068 +vmlinux inet_add_protocol 0xfea8c978 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0xbaa468ec +vmlinux inet_bind_bucket_create 0x1c6cfb8c +vmlinux inet_bind_hash 0xcd7c3698 +vmlinux inet_csk_accept 0x175a9d48 +vmlinux inet_csk_clear_xmit_timers 0xf7e83998 +vmlinux inet_csk_clone 0x26da7a17 +vmlinux inet_csk_delete_keepalive_timer 0x4a5894dd +vmlinux inet_csk_destroy_sock 0x16c9c406 +vmlinux inet_csk_get_port 0x251e5384 +vmlinux inet_csk_init_xmit_timers 0xa5295bd9 +vmlinux inet_csk_listen_start 0x8b9feebd +vmlinux inet_csk_listen_stop 0xae2bec5d +vmlinux inet_csk_reqsk_queue_hash_add 0x4f54b4bb +vmlinux inet_csk_reqsk_queue_prune 0xedfa84c7 +vmlinux inet_csk_reset_keepalive_timer 0x08f3daed +vmlinux inet_csk_route_req 0x13c7e9bf +vmlinux inet_csk_search_req 0xdcfe957d +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0x0ece8c49 +vmlinux inet_dgram_connect 0xdcfd05e1 +vmlinux inet_dgram_ops 0xa154e380 +vmlinux inet_diag_register 0x5d5dc122 +vmlinux inet_diag_unregister 0x6534a5e1 +vmlinux inet_getname 0x6220169a +vmlinux inet_ioctl 0xfa97bf1b +vmlinux inet_listen 0xe3f0b016 +vmlinux inet_listen_wlock 0xff4be60e +vmlinux inet_put_port 0xd66693c0 +vmlinux inet_register_protosw 0xb500b210 +vmlinux inet_release 0x889e308e +vmlinux inet_select_addr 0xfb3ab73f +vmlinux inet_sendmsg 0xe9ee62f7 +vmlinux inet_shutdown 0x1405723e +vmlinux inet_sk_rebuild_header 0x56cb5bf8 +vmlinux inet_sock_destruct 0x9cb69d95 +vmlinux inet_stream_connect 0x8da234ec +vmlinux inet_stream_ops 0x7ff27e8c +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x1ed36806 +vmlinux inet_twsk_deschedule 0x5d533487 +vmlinux inet_twsk_schedule 0xf94550e2 +vmlinux inet_unregister_protosw 0x0ce4683c +vmlinux inetdev_by_index 0xfdc37fcf +vmlinux init_buffer 0x5384fdff +vmlinux init_level4_pgt 0x95e0a76b +vmlinux init_mm 0xae8ee606 +vmlinux init_rwsem 0x43bd96e0 +vmlinux init_special_inode 0x0702d947 +vmlinux init_task 0x67131586 +vmlinux init_timer 0x9c02700d +vmlinux inode_add_bytes 0xda0aa85b +vmlinux inode_change_ok 0x3a38c721 +vmlinux inode_get_bytes 0x9f0ae662 +vmlinux inode_init_once 0xedac572a +vmlinux inode_needs_sync 0x98ebd4e1 +vmlinux inode_set_bytes 0xf520bd7c +vmlinux inode_setattr 0x8130ed09 +vmlinux inode_sub_bytes 0x72ef870b +vmlinux inode_update_time 0xb3737f77 +vmlinux inotify_dentry_parent_queue_event 0x5eef5900 +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0x2a7daaa9 +vmlinux inotify_inode_queue_event 0x20eff7ef +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0xbb78bee6 +vmlinux input_allocate_device 0xcf74627a +vmlinux input_class 0x8f5f2b96 +vmlinux input_close_device 0x28346f77 +vmlinux input_event 0x9c8a95f7 +vmlinux input_flush_device 0x90b76bbe +vmlinux input_grab_device 0x23bee072 +vmlinux input_open_device 0x733a882c +vmlinux input_register_device 0xeca9f039 +vmlinux input_register_handler 0x38b67e45 +vmlinux input_release_device 0x103ff0ec +vmlinux input_unregister_device 0xfaef0bcf +vmlinux input_unregister_handler 0x3285273a +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0x345babbd +vmlinux int_sqrt 0xb678366f +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x19f7d1a0 +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0x50719384 +vmlinux interruptible_sleep_on_timeout 0xf57cb5c1 +vmlinux invalidate_bdev 0x7149dbfa +vmlinux invalidate_inode_pages 0xdff47163 +vmlinux invalidate_inode_pages2 0x1cc5b468 +vmlinux invalidate_inode_pages2_range 0x473eadb3 +vmlinux invalidate_inodes 0x49b55f32 +vmlinux invalidate_partition 0x36ba22d0 +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0x3e7966b3 +vmlinux iomem_resource 0x9efed5af +vmlinux iommu_bio_merge 0xaf52c2d3 +vmlinux iommu_merge 0x634cd7ee +vmlinux iommu_sac_force 0xac37dfec +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0xc5534d64 +vmlinux ioread16_rep 0x5857b225 +vmlinux ioread16be 0xf065f629 +vmlinux ioread32 0xe484e35f +vmlinux ioread32_rep 0x3f0546a8 +vmlinux ioread32be 0xfdb9b629 +vmlinux ioread8 0xf10de535 +vmlinux ioread8_rep 0xf441ac43 +vmlinux ioremap_nocache 0x3762cb6e +vmlinux iounmap 0xedc03953 +vmlinux iov_shorten 0x92392cd9 +vmlinux iowrite16 0x8c183cbe +vmlinux iowrite16_rep 0x8cc79cab +vmlinux iowrite16be 0x69a0ca7d +vmlinux iowrite32 0x436c2179 +vmlinux iowrite32_rep 0xbfc177bc +vmlinux iowrite32be 0x6acb973d +vmlinux iowrite8 0x0727c4f3 +vmlinux iowrite8_rep 0xa4b94fea +vmlinux ip4_datagram_connect 0x4d0728be +vmlinux ip_build_and_send_pkt 0xd9984936 +vmlinux ip_cmsg_recv 0x8b405e7b +vmlinux ip_compute_csum 0xe5e298ea +vmlinux ip_ct_attach 0x924b495c +vmlinux ip_defrag 0x9492a954 +vmlinux ip_fragment 0xfd7f3dc7 +vmlinux ip_generic_getfrag 0xcd1cfa98 +vmlinux ip_getsockopt 0xd1c85ba7 +vmlinux ip_mc_dec_group 0x25cf9de0 +vmlinux ip_mc_inc_group 0x8da9e7eb +vmlinux ip_mc_join_group 0x4669d852 +vmlinux ip_queue_xmit 0xc9dde9e9 +vmlinux ip_route_input 0x3e56c3fb +vmlinux ip_route_me_harder 0xff87e550 +vmlinux ip_route_output_flow 0xd3db43b6 +vmlinux ip_route_output_key 0x4fc7f17f +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0xa37b7441 +vmlinux ip_setsockopt 0x53bc6f2d +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0xf3e52886 +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0xaf6648ab +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0xc6cef68b +vmlinux is_bad_inode 0xb66e2119 +vmlinux is_console_locked 0x944a564d +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux iunique 0x519a3fb7 +vmlinux iw_handler_get_spy 0x77a5e3e1 +vmlinux iw_handler_get_thrspy 0x7ebc21b3 +vmlinux iw_handler_set_spy 0x2974dc27 +vmlinux iw_handler_set_thrspy 0x42940361 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x549546f4 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0x478f3447 +vmlinux kernel_recvmsg 0x1b9e4282 +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0xd8757d30 +vmlinux kernel_subsys 0x1f051bb8 +vmlinux kernel_thread 0x7ca341af +vmlinux key_alloc 0xc1464a22 +vmlinux key_create_or_update 0x550f044e +vmlinux key_instantiate_and_link 0xcb293155 +vmlinux key_link 0x49a74aa4 +vmlinux key_negate_and_link 0x49577c7d +vmlinux key_payload_reserve 0xbb3a3325 +vmlinux key_put 0x547dd8ea +vmlinux key_revoke 0x4107cbbe +vmlinux key_task_permission 0xe1fb8019 +vmlinux key_type_user 0x71a9140b +vmlinux key_unlink 0x7b8df84a +vmlinux key_update 0x95ceb864 +vmlinux key_validate 0x140dfb83 +vmlinux keyring_clear 0x438b2a41 +vmlinux keyring_search 0x37fc3c65 +vmlinux kfifo_alloc 0xc0fe22d7 +vmlinux kfifo_free 0xe1837904 +vmlinux kfifo_init 0x35b3ef67 +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0xfd678e59 +vmlinux kill_anon_super 0x6f30164f +vmlinux kill_block_super 0xbd8f4d14 +vmlinux kill_fasync 0xbee2fd00 +vmlinux kill_litter_super 0x53694a1f +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xf679e5b3 +vmlinux klist_add_head 0xf6466d8d +vmlinux klist_add_tail 0x475fa23b +vmlinux klist_del 0x6d53788c +vmlinux klist_init 0xaeaa2d96 +vmlinux klist_iter_exit 0x89233c35 +vmlinux klist_iter_init 0xbd66c03e +vmlinux klist_iter_init_node 0x7af9ca0d +vmlinux klist_next 0x96a3499c +vmlinux klist_node_attached 0xa5a3f1c3 +vmlinux klist_remove 0xb876b119 +vmlinux km_new_mapping 0x3b4c6dc0 +vmlinux km_policy_notify 0x7c692761 +vmlinux km_state_notify 0x3935d761 +vmlinux km_waitq 0xcf8432ef +vmlinux kmalloc_node 0xce0123e0 +vmlinux kmem_cache_alloc 0xc5f4b33d +vmlinux kmem_cache_alloc_node 0x615170e6 +vmlinux kmem_cache_create 0x3726b40d +vmlinux kmem_cache_destroy 0x5bbe38ff +vmlinux kmem_cache_free 0xf6888edf +vmlinux kmem_cache_name 0xb9bfcfc7 +vmlinux kmem_cache_shrink 0x6b551324 +vmlinux kmem_cache_size 0x323a2576 +vmlinux kmem_find_general_cachep 0xd11777e5 +vmlinux kobject_add 0x5a45a0c0 +vmlinux kobject_del 0x67a55a3a +vmlinux kobject_get 0x55271264 +vmlinux kobject_hotplug 0x8da4025d +vmlinux kobject_init 0xee3a3e19 +vmlinux kobject_put 0xbbf6f620 +vmlinux kobject_register 0x3e9ec53d +vmlinux kobject_set_name 0xfb20ef5e +vmlinux kobject_uevent 0x3e666019 +vmlinux kobject_uevent_atomic 0x9b469c09 +vmlinux kobject_unregister 0x7e1fd65a +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x377d2192 +vmlinux kset_register 0x56110f93 +vmlinux kset_unregister 0x228470cc +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x935b8a19 +vmlinux kthread_create 0xb7a07c44 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0x4d01529c +vmlinux kthread_stop_sem 0xd9c670d3 +vmlinux kzalloc 0x5a3b6eca +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0x549f4cdb +vmlinux lease_modify 0x50f1bbff +vmlinux linkwatch_fire_event 0xc824332e +vmlinux ll_rw_block 0x459d1248 +vmlinux llc_add_pack 0xc376b155 +vmlinux llc_build_and_send_ui_pkt 0x765fd80f +vmlinux llc_mac_hdr_init 0x0e91660e +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0x2bcc3260 +vmlinux llc_sap_find 0x0cb5dd05 +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0xd6a44e66 +vmlinux llc_sap_open 0x8c515521 +vmlinux llc_set_station_handler 0xa771abaf +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_gs_index 0xc79e571d +vmlinux load_nls 0xb3bd42e2 +vmlinux load_nls_default 0xea2309f4 +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_cpu_hotplug 0xba813bd6 +vmlinux lock_cpu_hotplug_interruptible 0xdd7ee0f9 +vmlinux lock_kernel 0x3656bf5a +vmlinux lock_may_read 0x99c21e6a +vmlinux lock_may_write 0xed2fb557 +vmlinux lock_rename 0x4c7029b9 +vmlinux lock_sock 0xea267378 +vmlinux locks_copy_lock 0xb1b50658 +vmlinux locks_init_lock 0xdd91fec2 +vmlinux locks_mandatory_area 0x186e43b2 +vmlinux locks_remove_posix 0xba2c86b8 +vmlinux lookup_create 0x905d962c +vmlinux lookup_hash 0x442f0423 +vmlinux lookup_instantiate_filp 0xc9df17da +vmlinux lookup_one_len 0x8b6300de +vmlinux loopback_dev 0x8d600d55 +vmlinux loops_per_jiffy 0xba497f13 +vmlinux make_8023_client 0x21f88c40 +vmlinux make_EII_client 0x71979d99 +vmlinux make_bad_inode 0x6f89a223 +vmlinux malloc_sizes 0xb0a67814 +vmlinux map_page_into_agp 0xe940bef0 +vmlinux mapping_tagged 0x2468d9dd +vmlinux mark_buffer_async_write 0x11e7e17c +vmlinux mark_buffer_dirty 0xb4044b1a +vmlinux mark_buffer_dirty_inode 0xb2f14b8c +vmlinux mark_info_dirty 0xb189afc5 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x29a34ee1 +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_cstate 0x93805374 +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0x9a8838dc +vmlinux may_umount_tree 0x7fff72c2 +vmlinux mb_cache_create 0x738e8f9e +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0x20902016 +vmlinux mb_cache_entry_find_first 0x54d2aa31 +vmlinux mb_cache_entry_find_next 0xd793c002 +vmlinux mb_cache_entry_free 0xa9002434 +vmlinux mb_cache_entry_get 0xe19f68ba +vmlinux mb_cache_entry_insert 0x1c889119 +vmlinux mb_cache_entry_release 0xb0ae73cc +vmlinux mb_cache_shrink 0x9b0765c9 +vmlinux memchr 0xc740c64a +vmlinux memcmp 0x2fa5a500 +vmlinux memcpy 0x6067a146 +vmlinux memcpy_fromiovec 0x36139a51 +vmlinux memcpy_fromiovecend 0x9bc565c5 +vmlinux memcpy_toiovec 0x2876a6d3 +vmlinux memmove 0xa3a5be95 +vmlinux memnode_shift 0x676c5f99 +vmlinux memnodemap 0x56d452a0 +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0x3d84bcc6 +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0xaaa24b26 +vmlinux mempool_create_node 0xd01c94ac +vmlinux mempool_destroy 0x794a03ee +vmlinux mempool_free 0x7f42aeb6 +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x68d1b773 +vmlinux memscan 0x9c0ea3cd +vmlinux memset 0x3fa03a97 +vmlinux memset_io 0x4327f0d5 +vmlinux misc_deregister 0x62e7a38c +vmlinux misc_register 0x1818e645 +vmlinux mmput 0x1ea64765 +vmlinux mnt_pin 0xeb655766 +vmlinux mnt_unpin 0x0a83dbb5 +vmlinux mntput_no_expire 0x34d77a33 +vmlinux mod_reg_security 0xfda5833c +vmlinux mod_timer 0xda6bb4ad +vmlinux mod_unreg_security 0x926d490e +vmlinux module_add_driver 0x486a201c +vmlinux module_refcount 0x5f8b37d9 +vmlinux module_remove_driver 0x3d596227 +vmlinux monotonic_clock 0x9669ecc8 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0x266e145c +vmlinux mpage_readpages 0x61df67c0 +vmlinux mpage_writepage 0x1e50398c +vmlinux mpage_writepages 0xbb33b7ac +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux mtrr_add 0x56179c5f +vmlinux mtrr_del 0x272d394e +vmlinux multipath_alg_register 0x05e07244 +vmlinux multipath_alg_unregister 0xe15300f8 +vmlinux n_tty_ioctl 0x48a9e364 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x24186954 +vmlinux neigh_changeaddr 0xf820d89b +vmlinux neigh_compat_output 0x52058346 +vmlinux neigh_connected_output 0xfb061865 +vmlinux neigh_create 0x695b46ab +vmlinux neigh_delete 0xd1a87455 +vmlinux neigh_destroy 0x3dc566cd +vmlinux neigh_dump_info 0xb0159906 +vmlinux neigh_event_ns 0x948f96d1 +vmlinux neigh_for_each 0xc0211ad3 +vmlinux neigh_ifdown 0xa02ebc6f +vmlinux neigh_lookup 0x60b59dee +vmlinux neigh_lookup_nodev 0x698fb6fd +vmlinux neigh_parms_alloc 0xe19841c7 +vmlinux neigh_parms_release 0x4a92616b +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0xbcebfe77 +vmlinux neigh_seq_next 0x0e4059f3 +vmlinux neigh_seq_start 0x527e948e +vmlinux neigh_seq_stop 0xffa7ddaa +vmlinux neigh_sysctl_register 0xc108005d +vmlinux neigh_sysctl_unregister 0x24253726 +vmlinux neigh_table_clear 0x2d7ace2c +vmlinux neigh_table_init 0x520900a8 +vmlinux neigh_update 0x52103c13 +vmlinux neigh_update_hhs 0xbcaf5e49 +vmlinux neightbl_dump_info 0x5578755a +vmlinux neightbl_set 0x4fcb1ee3 +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0x6bbcbb78 +vmlinux netdev_features_change 0x224e2320 +vmlinux netdev_rx_csum_fault 0xc3c58a79 +vmlinux netdev_set_master 0x19d7c1e8 +vmlinux netdev_state_change 0xe004747f +vmlinux netif_carrier_off 0x8ee129b4 +vmlinux netif_carrier_on 0x60d43019 +vmlinux netif_receive_skb 0x555802f2 +vmlinux netif_rx 0x56b42348 +vmlinux netif_rx_ni 0x0ad2ea1e +vmlinux netlink_ack 0x9f0b1f93 +vmlinux netlink_broadcast 0x26ed647f +vmlinux netlink_dump_start 0xd5b607f0 +vmlinux netlink_kernel_create 0x63a65d68 +vmlinux netlink_queue_skip 0x86aa0645 +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0xd60c196e +vmlinux netlink_set_err 0xe908ad93 +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0x47221da0 +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x49d24d27 +vmlinux netpoll_parse_options 0x6ee8cf0d +vmlinux netpoll_poll 0xabc31ee6 +vmlinux netpoll_queue 0x793e4907 +vmlinux netpoll_send_udp 0x27b57bd4 +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0xe52c4862 +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0x249c04c4 +vmlinux next_thread 0xb6db22ee +vmlinux nf_ct_attach 0x5d8e5d13 +vmlinux nf_getsockopt 0x50eb4f68 +vmlinux nf_hook_slow 0x644b0818 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0x55a7055c +vmlinux nf_log_register 0x199868a6 +vmlinux nf_log_unregister_logger 0x79cc21dc +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0x432b5190 +vmlinux nf_register_queue_handler 0x4dc70e90 +vmlinux nf_register_queue_rerouter 0x208a0275 +vmlinux nf_register_sockopt 0x6b5b8b84 +vmlinux nf_reinject 0x38d834b7 +vmlinux nf_setsockopt 0x99556eab +vmlinux nf_unregister_hook 0x48a00025 +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0x89b8a45e +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x092af134 +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0x4c4c956e +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0x391d7b15 +vmlinux nla_reserve 0x6dadb119 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0xa33f7c7c +vmlinux nla_validate 0x2cc98162 +vmlinux nmi_active 0x069dcda8 +vmlinux nmi_watchdog 0xda928914 +vmlinux no_llseek 0x5ab03117 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0xcdb82303 +vmlinux nobh_prepare_write 0x0164f50f +vmlinux nobh_truncate_page 0x8ee5396d +vmlinux nobh_writepage 0x0f60ca20 +vmlinux node_data 0x44f5d1ee +vmlinux node_online_map 0x3984227b +vmlinux node_possible_map 0x9f35ba10 +vmlinux node_to_cpumask 0x91fa79b3 +vmlinux nonseekable_open 0x9d66e3e4 +vmlinux noop_qdisc 0x5770cf8a +vmlinux noop_qdisc_ops 0x71f74e62 +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x0be70008 +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0x532e0fe6 +vmlinux open_by_devnum 0x9086bd34 +vmlinux open_exec 0xe74d2492 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_bug 0x189c5fd1 +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux overflowgid 0x7171121c +vmlinux overflowuid 0x8b618d08 +vmlinux p80211_resume 0x8bfdab78 +vmlinux p80211_suspend 0x2a4bc753 +vmlinux p80211netdev_hwremoved 0x130c49ce +vmlinux p80211netdev_rx 0xc38358cf +vmlinux p80211skb_free 0x486287d4 +vmlinux p80211skb_rxmeta_attach 0x43562c00 +vmlinux page_follow_link_light 0xda2a1c3d +vmlinux page_put_link 0x573f5001 +vmlinux page_readlink 0xbbbca849 +vmlinux page_symlink 0xc7a44433 +vmlinux page_symlink_inode_operations 0x90b9cedd +vmlinux pagevec_lookup_tag 0x2543b8ef +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0xb23d4f6d +vmlinux path_release 0x8d9c5d78 +vmlinux path_walk 0x07622abc +vmlinux pci_add_new_bus 0x74c35c72 +vmlinux pci_alloc_consistent 0xeccd029e +vmlinux pci_assign_resource 0x479383e4 +vmlinux pci_block_user_cfg_access 0x6f2d860d +vmlinux pci_bus_add_device 0x0ffbd97f +vmlinux pci_bus_add_devices 0x8b067eb0 +vmlinux pci_bus_alloc_resource 0x254b8232 +vmlinux pci_bus_assign_resources 0x616d4059 +vmlinux pci_bus_find_capability 0xf653b38a +vmlinux pci_bus_max_busnr 0x79d4a75a +vmlinux pci_bus_read_config_byte 0x9fada7a0 +vmlinux pci_bus_read_config_dword 0x74511409 +vmlinux pci_bus_read_config_word 0x993eb1ee +vmlinux pci_bus_size_bridges 0x8bfcd042 +vmlinux pci_bus_type 0x54550db0 +vmlinux pci_bus_write_config_byte 0x3930c1ba +vmlinux pci_bus_write_config_dword 0x1c14a439 +vmlinux pci_bus_write_config_word 0xd2f334c5 +vmlinux pci_choose_state 0x6d6c2bf3 +vmlinux pci_clear_mwi 0xa745d3b9 +vmlinux pci_create_bus 0x3fa1acc8 +vmlinux pci_dev_driver 0x31666ee6 +vmlinux pci_dev_get 0x6716b01d +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0x61ab569c +vmlinux pci_disable_device 0x6d8cb7c0 +vmlinux pci_disable_msi 0x531e8c74 +vmlinux pci_disable_msix 0xff208018 +vmlinux pci_do_scan_bus 0x16a4b63f +vmlinux pci_enable_bridges 0xa4c60884 +vmlinux pci_enable_device 0x28465117 +vmlinux pci_enable_device_bars 0xe9e90587 +vmlinux pci_enable_msi 0x06b03b79 +vmlinux pci_enable_msix 0x58f5fc9b +vmlinux pci_enable_wake 0xb07447a7 +vmlinux pci_find_bus 0x92101c0e +vmlinux pci_find_capability 0xa9fade75 +vmlinux pci_find_device 0x17e084a5 +vmlinux pci_find_device_reverse 0x330603d5 +vmlinux pci_find_next_bus 0xdcec1da6 +vmlinux pci_find_next_capability 0xb0114680 +vmlinux pci_find_parent_resource 0xc70ae2c0 +vmlinux pci_find_slot 0xb5cf89e1 +vmlinux pci_fixup_device 0x13f5d817 +vmlinux pci_free_consistent 0x0245e9ef +vmlinux pci_get_class 0x6ea49a82 +vmlinux pci_get_device 0xaad43377 +vmlinux pci_get_slot 0x488a79b4 +vmlinux pci_get_subsys 0xa8b8dae6 +vmlinux pci_intx 0xc009d8af +vmlinux pci_iomap 0x1560bdfc +vmlinux pci_iounmap 0x9437b28a +vmlinux pci_map_rom 0xa636b74a +vmlinux pci_map_rom_copy 0xdc97e00c +vmlinux pci_match_device 0x4054e203 +vmlinux pci_match_id 0x3c3ec641 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_mem_start 0x3da171f9 +vmlinux pci_osc_control_set 0x20c8fc33 +vmlinux pci_osc_support_set 0xed9003ef +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0x4aff8d8b +vmlinux pci_proc_attach_device 0x97bdfe84 +vmlinux pci_proc_detach_bus 0x89b831a1 +vmlinux pci_release_region 0x149825a1 +vmlinux pci_release_regions 0x7490235b +vmlinux pci_remove_behind_bridge 0x2a5f5541 +vmlinux pci_remove_bus 0xe8d52227 +vmlinux pci_remove_bus_device 0x846056c5 +vmlinux pci_remove_device_safe 0x6dd43149 +vmlinux pci_remove_rom 0xbaf9f30b +vmlinux pci_request_region 0x0a0f4fe8 +vmlinux pci_request_regions 0x4e88f920 +vmlinux pci_restore_bars 0xc0e0f221 +vmlinux pci_restore_state 0x1369ef02 +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0x4d11ee31 +vmlinux pci_scan_bridge 0xd301969c +vmlinux pci_scan_bus_parented 0x9ce691e9 +vmlinux pci_scan_child_bus 0xf94bd2b5 +vmlinux pci_scan_single_device 0xfa9787ff +vmlinux pci_scan_slot 0xbb714a13 +vmlinux pci_set_consistent_dma_mask 0xf365eebe +vmlinux pci_set_dma_mask 0xe848e3eb +vmlinux pci_set_master 0x47e037b8 +vmlinux pci_set_mwi 0x4cc03b31 +vmlinux pci_set_power_state 0x463bc526 +vmlinux pci_setup_cardbus 0x191c0fbe +vmlinux pci_unblock_user_cfg_access 0xf7e0bd50 +vmlinux pci_unmap_rom 0xa3a18fea +vmlinux pci_unregister_driver 0x248c836b +vmlinux pci_walk_bus 0x3ded291f +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pcie_port_service_register 0x19abb475 +vmlinux pcie_port_service_unregister 0x6007b18d +vmlinux pciserial_init_ports 0x0eca26b6 +vmlinux pciserial_remove_ports 0x65596a16 +vmlinux pciserial_resume_ports 0xef0f3e35 +vmlinux pciserial_suspend_ports 0x58cb4d1f +vmlinux per_cpu__kstat 0xca09a9af +vmlinux per_cpu__softnet_data 0x4ba6af48 +vmlinux percpu_counter_mod 0xa6fe1216 +vmlinux permission 0x4d107452 +vmlinux pfifo_qdisc_ops 0xee09f3fd +vmlinux platform_add_devices 0x5d8f9a35 +vmlinux platform_bus 0xb8e7e54a +vmlinux platform_bus_type 0x18bb1b92 +vmlinux platform_device_add 0x515a7b55 +vmlinux platform_device_add_data 0x2e24b21b +vmlinux platform_device_add_resources 0x9d30e5d9 +vmlinux platform_device_alloc 0x4be0e5c7 +vmlinux platform_device_put 0x7a747e89 +vmlinux platform_device_register 0xf7bcf997 +vmlinux platform_device_register_simple 0xa5785ac6 +vmlinux platform_device_unregister 0x6d33dcaa +vmlinux platform_driver_register 0x90f10c21 +vmlinux platform_driver_unregister 0x4d18b729 +vmlinux platform_get_irq 0xdddf0273 +vmlinux platform_get_irq_byname 0x17dbc51c +vmlinux platform_get_resource 0x9c8032e3 +vmlinux platform_get_resource_byname 0x0698fad8 +vmlinux pm_active 0xebd387f6 +vmlinux pm_idle 0xf890fe7f +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pneigh_enqueue 0x8d895651 +vmlinux pneigh_lookup 0x675eff7b +vmlinux pnp_activate_dev 0x42171df4 +vmlinux pnp_device_attach 0xc02ef3b3 +vmlinux pnp_device_detach 0x1871c016 +vmlinux pnp_disable_dev 0xa256f4c7 +vmlinux pnp_init_resource_table 0x16084899 +vmlinux pnp_is_active 0x030241f2 +vmlinux pnp_manual_config_dev 0x602bb7c4 +vmlinux pnp_register_card_driver 0x6c31f278 +vmlinux pnp_register_driver 0x3566dc14 +vmlinux pnp_release_card_device 0x07a2c56b +vmlinux pnp_request_card_device 0xe88ea2f1 +vmlinux pnp_resource_change 0xf577ec2b +vmlinux pnp_unregister_card_driver 0x1e3dedb2 +vmlinux pnp_unregister_driver 0xdb997ba0 +vmlinux poll_freewait 0xaddfa0ba +vmlinux poll_initwait 0x5b9ae54c +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0x83c43dc1 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x886aa274 +vmlinux posix_acl_equiv_mode 0x50d56018 +vmlinux posix_acl_from_mode 0x8c537c45 +vmlinux posix_acl_from_xattr 0x42acbf72 +vmlinux posix_acl_permission 0xe328c333 +vmlinux posix_acl_to_xattr 0xb055d8da +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0xa141f08d +vmlinux posix_lock_file 0xd366c652 +vmlinux posix_lock_file_wait 0x647fb06b +vmlinux posix_locks_deadlock 0xaa3fab51 +vmlinux posix_test_lock 0xa4e14f78 +vmlinux posix_timer_event 0x90cca710 +vmlinux posix_unblock_lock 0x93de346b +vmlinux pre_task_out_intr 0x85730943 +vmlinux preempt_schedule 0x43b0c9c3 +vmlinux prepare_binprm 0x555ef794 +vmlinux prepare_to_wait 0x43b27463 +vmlinux prepare_to_wait_exclusive 0x893e7778 +vmlinux printk 0xdd132261 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0xa99c0709 +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0xac77e273 +vmlinux proc_dointvec 0xf4e59c74 +vmlinux proc_dointvec_jiffies 0x2fb0dd70 +vmlinux proc_dointvec_minmax 0x2433196b +vmlinux proc_dointvec_ms_jiffies 0x83a64a9f +vmlinux proc_dointvec_userhz_jiffies 0xbfe35233 +vmlinux proc_dostring 0x12c02388 +vmlinux proc_doulongvec_minmax 0x0b4c1841 +vmlinux proc_doulongvec_ms_jiffies_minmax 0x8cf56e9b +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0x862fd28c +vmlinux proc_net 0xb5c6687c +vmlinux proc_net_netfilter 0xb6e34737 +vmlinux proc_net_stat 0x9171badd +vmlinux proc_root 0x18a16bc3 +vmlinux proc_root_driver 0x25474c38 +vmlinux proc_root_fs 0xab6c2f89 +vmlinux proc_symlink 0xcd0868c9 +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux profile_pc 0x875e1a1b +vmlinux proto_register 0x5cb0edba +vmlinux proto_unregister 0x5d017ec5 +vmlinux ps2_cmd_aborted 0x54074efa +vmlinux ps2_command 0x654d1163 +vmlinux ps2_drain 0x04872924 +vmlinux ps2_handle_ack 0xebeb203e +vmlinux ps2_handle_response 0xd68fad09 +vmlinux ps2_init 0xfb07b684 +vmlinux ps2_schedule_command 0x7214c9e0 +vmlinux ps2_sendbyte 0x4500fe42 +vmlinux pskb_copy 0x642b9d76 +vmlinux pskb_expand_head 0xdea8c33d +vmlinux pskb_put 0x3d82da5d +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0xc1c9b3f6 +vmlinux put_cmsg 0x43ec913a +vmlinux put_device 0x0aba0fb5 +vmlinux put_disk 0xf0260fd7 +vmlinux put_driver 0x34528ce5 +vmlinux put_files_struct 0x934ca9b2 +vmlinux put_io_context 0x218f8219 +vmlinux put_page 0xae2a856f +vmlinux put_tty_driver 0xad840599 +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0x46b81cee +vmlinux qdisc_create_dflt 0xc1f26e72 +vmlinux qdisc_destroy 0x406ec801 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0x6ae49795 +vmlinux qdisc_lookup 0xeffb2490 +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0x0fbdbd5b +vmlinux qdisc_restart 0x0d9fd5fc +vmlinux qdisc_unlock_tree 0x44f7b9bb +vmlinux queue_delayed_work 0x6351bf5c +vmlinux queue_work 0x01fa9857 +vmlinux radix_tree_delete 0x898049c9 +vmlinux radix_tree_gang_lookup 0x35ef380e +vmlinux radix_tree_gang_lookup_tag 0xed493232 +vmlinux radix_tree_insert 0x72e6283f +vmlinux radix_tree_lookup 0x76e635da +vmlinux radix_tree_lookup_slot 0x41706e2f +vmlinux radix_tree_tag_clear 0x9ee300df +vmlinux radix_tree_tag_set 0xd73b9fb5 +vmlinux radix_tree_tagged 0xb52b2186 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0x46cc1b33 +vmlinux read_cache_pages 0x8ea14acd +vmlinux read_dev_sector 0x0870e576 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0x935d5b61 +vmlinux redraw_screen 0x40b2eeec +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0x410e45e7 +vmlinux register_acpi_bus_type 0x75600cbb +vmlinux register_atm_ioctl 0x9fc9e379 +vmlinux register_binfmt 0x5f2051cd +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0xae090aa2 +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0xb856a1bc +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_die_notifier 0x53986488 +vmlinux register_exec_domain 0xb080ecc2 +vmlinux register_filesystem 0xf660fd32 +vmlinux register_firmware 0x40359ccb +vmlinux register_framebuffer 0xbc930acb +vmlinux register_gifconf 0x18e7fe8c +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_key_type 0xe211efc2 +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0x555fca59 +vmlinux register_netdevice 0x5b068e56 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0xae6db9be +vmlinux register_posix_clock 0x042948fd +vmlinux register_qdisc 0xe2d9f71f +vmlinux register_quota_format 0x7f91c1e2 +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0xdbec0534 +vmlinux register_snap_client 0xf9b050d6 +vmlinux register_sysctl_table 0xba95f7ea +vmlinux register_sysrq_key 0x44e52c3b +vmlinux register_tcf_proto_ops 0x6dc57ade +vmlinux register_timer_hook 0x93817c41 +vmlinux register_wlandev 0x498e2982 +vmlinux registered_fb 0x69e9cae5 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x6ef56f31 +vmlinux release_lapic_nmi 0x4129043e +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x1c48c65c +vmlinux remap_pfn_range 0x6734d490 +vmlinux remote_llseek 0xb4bdd417 +vmlinux remove_arg_zero 0x0de21e8c +vmlinux remove_inode_hash 0xc65d91e9 +vmlinux remove_proc_entry 0x637f577d +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0xb6da31ab +vmlinux remove_wait_queue 0xe12d87eb +vmlinux reqsk_queue_alloc 0x7f33b701 +vmlinux reqsk_queue_destroy 0xe1dfb236 +vmlinux request_dma 0x7054a3e4 +vmlinux request_firmware 0xc8c71ee2 +vmlinux request_firmware_nowait 0x87c2bbe4 +vmlinux request_irq 0x5271af5d +vmlinux request_key 0x80532adf +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux reserve_lapic_nmi 0xb903b498 +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x83230e05 +vmlinux rtc_control 0xc9b27289 +vmlinux rtc_lock 0x831988d6 +vmlinux rtc_register 0xfdab2b9c +vmlinux rtc_unregister 0xeddfe49d +vmlinux rtnetlink_links 0x8d2ab7b1 +vmlinux rtnetlink_put_metrics 0xb159af9b +vmlinux rtnl 0x27344a8f +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0xee0fef1f +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux sb_min_blocksize 0x0233c584 +vmlinux sb_set_blocksize 0x77ebeef3 +vmlinux sched_setscheduler 0x8c6276eb +vmlinux schedule 0x01000e51 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0x9fdbe73b +vmlinux scm_fp_dup 0x0de44999 +vmlinux scnprintf 0x7bb4de17 +vmlinux screen_info 0xe7bf7d05 +vmlinux scsi_cmd_ioctl 0x6b10b520 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux search_binary_handler 0x8eb8fe86 +vmlinux secpath_dup 0x63fe9f78 +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0x67e96536 +vmlinux securityfs_create_dir 0x0aa77884 +vmlinux securityfs_create_file 0x5984f4bb +vmlinux securityfs_remove 0x493d7039 +vmlinux send_sig 0xcde33ea6 +vmlinux send_sig_info 0x6793745c +vmlinux seq_escape 0x3028e926 +vmlinux seq_lseek 0xe0e6f1e7 +vmlinux seq_open 0xde8f5a27 +vmlinux seq_path 0x2ad63dec +vmlinux seq_printf 0x56820594 +vmlinux seq_putc 0x6eef5d4d +vmlinux seq_puts 0x0516c869 +vmlinux seq_read 0x7a8279db +vmlinux seq_release 0x6d0f5608 +vmlinux seq_release_private 0xb89ade69 +vmlinux serial8250_register_port 0x5e32b01b +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0x0e635a63 +vmlinux serio_interrupt 0xe6d17647 +vmlinux serio_open 0x3fe7f20a +vmlinux serio_reconnect 0x7d327200 +vmlinux serio_rescan 0x61614175 +vmlinux serio_unregister_child_port 0x72671b4a +vmlinux serio_unregister_driver 0xa068adc9 +vmlinux serio_unregister_port 0x68d2ad78 +vmlinux set_anon_super 0xeb5300c3 +vmlinux set_bh_page 0xefc96fc0 +vmlinux set_binfmt 0xed421f37 +vmlinux set_blocksize 0x885db42b +vmlinux set_cpus_allowed 0x92283b38 +vmlinux set_current_groups 0x999fe899 +vmlinux set_device_ro 0x9f694411 +vmlinux set_disk_ro 0x9bd2fc82 +vmlinux set_nmi_callback 0x2285b831 +vmlinux set_page_dirty 0x8fc1f7bd +vmlinux set_page_dirty_lock 0x83d43aff +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0x7d06aaa8 +vmlinux setlease 0xf0a3b708 +vmlinux setup_arg_pages 0x2341aa5c +vmlinux sget 0x4f0baf02 +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x9c6f2e6f +vmlinux shrink_dcache_sb 0x58c28c2a +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x6a5fa363 +vmlinux simple_attr_close 0x819a17d5 +vmlinux simple_attr_open 0xfc437b37 +vmlinux simple_attr_read 0x2dfcda1a +vmlinux simple_attr_write 0x6bde96f6 +vmlinux simple_commit_write 0x7930e189 +vmlinux simple_dir_inode_operations 0x49f2fc8d +vmlinux simple_dir_operations 0xdc196527 +vmlinux simple_empty 0x134c111c +vmlinux simple_fill_super 0xf0f516ee +vmlinux simple_getattr 0xc658a0b6 +vmlinux simple_link 0x48c9037c +vmlinux simple_lookup 0x1ca04c25 +vmlinux simple_pin_fs 0x401ef5c0 +vmlinux simple_prepare_write 0x10b70264 +vmlinux simple_read_from_buffer 0x5a5e7ea3 +vmlinux simple_readpage 0x6acd6844 +vmlinux simple_release_fs 0xd3410650 +vmlinux simple_rename 0x91dca93d +vmlinux simple_rmdir 0x908ef172 +vmlinux simple_statfs 0x0cff81d9 +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0x7ca426de +vmlinux simple_transaction_get 0x14ff73d6 +vmlinux simple_transaction_read 0x545fa26b +vmlinux simple_transaction_release 0xc0ca14a4 +vmlinux simple_unlink 0x803c8afd +vmlinux single_open 0x49cabe87 +vmlinux single_release 0x5a5e988a +vmlinux sk_alloc 0xa8688943 +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0xd366564d +vmlinux sk_common_release 0x7e82ff96 +vmlinux sk_free 0x8b7b6fdd +vmlinux sk_reset_timer 0x70e49231 +vmlinux sk_run_filter 0x6a50fba3 +vmlinux sk_send_sigurg 0x4518d9af +vmlinux sk_stop_timer 0x06ff9df3 +vmlinux sk_stream_error 0x5c073c2d +vmlinux sk_stream_kill_queues 0xba430699 +vmlinux sk_stream_mem_schedule 0x9bca3447 +vmlinux sk_stream_rfree 0x0461b220 +vmlinux sk_stream_wait_close 0xea2ab0f1 +vmlinux sk_stream_wait_connect 0x035b6a5d +vmlinux sk_stream_wait_memory 0xa454205b +vmlinux sk_stream_write_space 0x2f95357d +vmlinux sk_wait_data 0xe10d5db4 +vmlinux skb_abort_seq_read 0x5adca73a +vmlinux skb_append 0x751b9d86 +vmlinux skb_append_datato_frags 0xd97f8106 +vmlinux skb_checksum 0x6ed47d68 +vmlinux skb_checksum_help 0x64193e36 +vmlinux skb_clone 0x4be68cc9 +vmlinux skb_clone_fraglist 0x5d1e8d6b +vmlinux skb_copy 0x91067a8a +vmlinux skb_copy_and_csum_bits 0x5963f794 +vmlinux skb_copy_and_csum_datagram_iovec 0x97e80dd3 +vmlinux skb_copy_and_csum_dev 0xdd8d1466 +vmlinux skb_copy_bits 0xd33b549b +vmlinux skb_copy_datagram_iovec 0x2a356627 +vmlinux skb_copy_expand 0x2065dbcf +vmlinux skb_cow_data 0x4534157d +vmlinux skb_dequeue 0x5d13018a +vmlinux skb_dequeue_tail 0x448c946f +vmlinux skb_find_text 0x2b1267d7 +vmlinux skb_free_datagram 0xffcbfb78 +vmlinux skb_icv_walk 0x1756919b +vmlinux skb_insert 0x3e16f77a +vmlinux skb_make_writable 0x4bc92e3b +vmlinux skb_migrate 0x7ae0dadd +vmlinux skb_over_panic 0x495f879f +vmlinux skb_pad 0x03ae6ee9 +vmlinux skb_prepare_seq_read 0xdbac5069 +vmlinux skb_queue_head 0x03124910 +vmlinux skb_queue_purge 0x80bfe730 +vmlinux skb_queue_tail 0x2de881fd +vmlinux skb_realloc_headroom 0xdf47b323 +vmlinux skb_recv_datagram 0xe0033ce8 +vmlinux skb_seq_read 0x4ac3f5a0 +vmlinux skb_split 0x5cba1989 +vmlinux skb_store_bits 0xa2b465f4 +vmlinux skb_to_sgvec 0xc9bb891c +vmlinux skb_under_panic 0xbfc72c1b +vmlinux skb_unlink 0x9c735496 +vmlinux sleep_on 0x4823b05a +vmlinux sleep_on_timeout 0x370bfb3a +vmlinux smp_call_function 0x0014bfd1 +vmlinux smp_num_siblings 0xd1f6c5f3 +vmlinux snprintf 0xaf25400d +vmlinux sock_alloc_send_skb 0x1e76d88e +vmlinux sock_common_getsockopt 0xf17dff91 +vmlinux sock_common_recvmsg 0x146f3c47 +vmlinux sock_common_setsockopt 0x486abd07 +vmlinux sock_create 0x68f3c0b2 +vmlinux sock_create_kern 0xd8859d66 +vmlinux sock_create_lite 0x022cea6a +vmlinux sock_enable_timestamp 0xd3349a5c +vmlinux sock_get_timestamp 0x4925d7e5 +vmlinux sock_i_ino 0x7b674ef1 +vmlinux sock_i_uid 0xcf08a42a +vmlinux sock_init_data 0x5a2d6e34 +vmlinux sock_kfree_s 0xacc5d94e +vmlinux sock_kmalloc 0x22701277 +vmlinux sock_map_fd 0xa6bd4d94 +vmlinux sock_no_accept 0xeaa247dd +vmlinux sock_no_bind 0xdac0abe3 +vmlinux sock_no_connect 0x991344f1 +vmlinux sock_no_getname 0x62fc6c06 +vmlinux sock_no_getsockopt 0x95a8578e +vmlinux sock_no_ioctl 0x4776a98b +vmlinux sock_no_listen 0x75bd74c9 +vmlinux sock_no_mmap 0x6c40b9d3 +vmlinux sock_no_poll 0x8c814ede +vmlinux sock_no_recvmsg 0x9833aabd +vmlinux sock_no_sendmsg 0x0f6a89c2 +vmlinux sock_no_sendpage 0x7a043006 +vmlinux sock_no_setsockopt 0x43a5b475 +vmlinux sock_no_shutdown 0xd2868baf +vmlinux sock_no_socketpair 0xcc2b5fe2 +vmlinux sock_recvmsg 0x9d65e9fd +vmlinux sock_register 0x325d329a +vmlinux sock_release 0x35f761a3 +vmlinux sock_rfree 0x3c1c0f3d +vmlinux sock_sendmsg 0x10fccd0e +vmlinux sock_setsockopt 0xedf56125 +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0x2d291013 +vmlinux sock_wfree 0x35f76c59 +vmlinux sock_wmalloc 0xbf278c75 +vmlinux sockfd_lookup 0x9576e775 +vmlinux sonet_copy_stats 0x89195dc3 +vmlinux sonet_subtract_stats 0x1a24e5e2 +vmlinux sort 0x9ca95a0e +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux start_tty 0x4c438add +vmlinux steal_locks 0xeb249cf7 +vmlinux stop_tty 0xdc1dbec8 +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0xafe82e10 +vmlinux strlcat 0xb11fa1ce +vmlinux strlcpy 0x672144bd +vmlinux strlen 0x25ec1b28 +vmlinux strncat 0x234509f3 +vmlinux strnchr 0x7242e96d +vmlinux strncmp 0x85abc85f +vmlinux strncpy 0x7ec9bfbc +vmlinux strncpy_from_user 0x24428be5 +vmlinux strnicmp 0x756e6992 +vmlinux strnlen 0xcc07af75 +vmlinux strnlen_user 0xbcc308bb +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0x3fa913da +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0xd283e20a +vmlinux submit_bh 0x8d3dce10 +vmlinux submit_bio 0x3d4f768f +vmlinux subsys_create_file 0x4f3b6eca +vmlinux subsys_remove_file 0x6e04f0e7 +vmlinux subsystem_init 0x29ba7385 +vmlinux subsystem_register 0x443c8af6 +vmlinux subsystem_unregister 0xbb5f83df +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0x01423a04 +vmlinux swiotlb 0x47636033 +vmlinux swiotlb_alloc_coherent 0xb61d9a7b +vmlinux swiotlb_dma_mapping_error 0xaaeb10d3 +vmlinux swiotlb_dma_supported 0xbfcf5a99 +vmlinux swiotlb_free_coherent 0x07a45c60 +vmlinux swiotlb_init 0x8e0594bc +vmlinux swiotlb_map_sg 0x909b3cb7 +vmlinux swiotlb_map_single 0xaa1d1197 +vmlinux swiotlb_sync_sg_for_cpu 0x98b6f5ae +vmlinux swiotlb_sync_sg_for_device 0xeafd18f4 +vmlinux swiotlb_sync_single_for_cpu 0x65c9302a +vmlinux swiotlb_sync_single_for_device 0xb82ce4a4 +vmlinux swiotlb_sync_single_range_for_cpu 0xa081d28d +vmlinux swiotlb_sync_single_range_for_device 0x4956b987 +vmlinux swiotlb_unmap_sg 0x439468d0 +vmlinux swiotlb_unmap_single 0xeaf0cf00 +vmlinux switch_APIC_timer_to_ipi 0xa5c79544 +vmlinux switch_ipi_to_APIC_timer 0xac7eb84c +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0x48ae6969 +vmlinux sync_dirty_buffer 0x1530e907 +vmlinux sync_inode 0xfbafcc7b +vmlinux sync_mapping_buffers 0xb128a754 +vmlinux sync_page_range 0xb5fc6bc2 +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xdcb0349b +vmlinux sys_ioctl 0x208ce54a +vmlinux sys_open 0xe269ea1c +vmlinux sys_read 0x12703a3e +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0xb9664fc4 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0xcfc76f41 +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0x1c1e07e8 +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0x37863535 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0xc5818e5b +vmlinux sysdev_class_unregister 0xd27c5a4a +vmlinux sysdev_create_file 0x5786ffed +vmlinux sysdev_driver_register 0xc9ac3f5e +vmlinux sysdev_driver_unregister 0x91cbb347 +vmlinux sysdev_register 0x242338ab +vmlinux sysdev_remove_file 0x933e683f +vmlinux sysdev_unregister 0x9ce482fd +vmlinux sysfs_chmod_file 0x78e22f66 +vmlinux sysfs_create_bin_file 0x6ed1cc27 +vmlinux sysfs_create_dir 0x56d8f247 +vmlinux sysfs_create_file 0x7e6789c8 +vmlinux sysfs_create_group 0xa431b017 +vmlinux sysfs_create_link 0x429f3574 +vmlinux sysfs_remove_bin_file 0xce4240d2 +vmlinux sysfs_remove_dir 0x35364fda +vmlinux sysfs_remove_file 0x5bdbfa62 +vmlinux sysfs_remove_group 0xe79e68fc +vmlinux sysfs_remove_link 0xc2af9f39 +vmlinux sysfs_rename_dir 0x18d47cd8 +vmlinux sysfs_update_file 0x93d01e8a +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0xd9e0f14f +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0x39cc2b80 +vmlinux task_nice 0xa7068f1d +vmlinux task_no_data_intr 0xd5575507 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0x0965e085 +vmlinux tc_classify 0x7c3daf1e +vmlinux tcf_em_register 0x4632bfd5 +vmlinux tcf_em_tree_destroy 0x8b558c7b +vmlinux tcf_em_tree_dump 0x2a990fe5 +vmlinux tcf_em_tree_validate 0x8b19078f +vmlinux tcf_em_unregister 0xbaea8dc7 +vmlinux tcf_exts_change 0xd0bcf646 +vmlinux tcf_exts_destroy 0x0bf7dd0b +vmlinux tcf_exts_dump 0xd9fd371e +vmlinux tcf_exts_dump_stats 0xa3a4de70 +vmlinux tcf_exts_validate 0xd8546f55 +vmlinux tcf_police 0xc4b25a74 +vmlinux tcf_police_destroy 0x9db102ce +vmlinux tcf_police_dump 0xd0cebee1 +vmlinux tcf_police_dump_stats 0x18d14332 +vmlinux tcf_police_hash 0x8493d6e7 +vmlinux tcf_police_ht 0x59979e7f +vmlinux tcf_police_locate 0xdc0b2fa6 +vmlinux tcf_police_lookup 0x33fcccbc +vmlinux tcf_police_new_index 0x7ae0f6c9 +vmlinux tcp_check_req 0x6c08983d +vmlinux tcp_child_process 0x69263071 +vmlinux tcp_close 0xac135645 +vmlinux tcp_connect 0xa33f36bc +vmlinux tcp_create_openreq_child 0x72af5876 +vmlinux tcp_death_row 0xb08bb168 +vmlinux tcp_disconnect 0xf9044378 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0xe53c4449 +vmlinux tcp_getsockopt 0xd8b5269e +vmlinux tcp_hashinfo 0xcebb7266 +vmlinux tcp_init_congestion_ops 0x0cd8ccac +vmlinux tcp_init_xmit_timers 0x6425a455 +vmlinux tcp_ioctl 0xf71fc092 +vmlinux tcp_make_synack 0x4172c7a8 +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0xac01fd93 +vmlinux tcp_poll 0xa0357e92 +vmlinux tcp_proc_register 0x9b6e0024 +vmlinux tcp_proc_unregister 0x3b67a376 +vmlinux tcp_prot 0xf4a9cb17 +vmlinux tcp_rcv_established 0xda1d4c93 +vmlinux tcp_rcv_state_process 0x4b6d9d53 +vmlinux tcp_read_sock 0x0ee4fad7 +vmlinux tcp_recvmsg 0x24974897 +vmlinux tcp_register_congestion_control 0x83365256 +vmlinux tcp_reno_cong_avoid 0x4b48a774 +vmlinux tcp_reno_min_cwnd 0xbd699e66 +vmlinux tcp_reno_ssthresh 0x00bb35cb +vmlinux tcp_sendmsg 0xdef4cd61 +vmlinux tcp_sendpage 0x7d0c65f7 +vmlinux tcp_setsockopt 0x28149d55 +vmlinux tcp_shutdown 0xfb9a9cb7 +vmlinux tcp_simple_retransmit 0xb2195166 +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0x67bb228c +vmlinux tcp_timewait_state_process 0x148dd15e +vmlinux tcp_unhash 0x4108ef49 +vmlinux tcp_unregister_congestion_control 0x73ee1327 +vmlinux tcp_v4_conn_request 0xdc88e4ad +vmlinux tcp_v4_connect 0xabf22e18 +vmlinux tcp_v4_destroy_sock 0x7534d649 +vmlinux tcp_v4_do_rcv 0x4b25fd76 +vmlinux tcp_v4_remember_stamp 0x5db2fa98 +vmlinux tcp_v4_send_check 0x4aea6e11 +vmlinux tcp_v4_syn_recv_sock 0x30c637ab +vmlinux test_clear_page_dirty 0x20f23c93 +vmlinux test_set_page_writeback 0xd23cfcad +vmlinux textsearch_destroy 0xd5e5af4b +vmlinux textsearch_find_continuous 0x70d01ce7 +vmlinux textsearch_prepare 0xd4411f4c +vmlinux textsearch_register 0x1339a666 +vmlinux textsearch_unregister 0x7928872b +vmlinux thaw_bdev 0x2b6c007e +vmlinux timespec_trunc 0xc045ad4e +vmlinux totalram_pages 0xde9360ba +vmlinux touch_nmi_watchdog 0xf51ae235 +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0xd208541f +vmlinux tr_type_trans 0xa3c825bc +vmlinux transport_add_device 0x59de7313 +vmlinux transport_class_register 0x6dbb76cf +vmlinux transport_class_unregister 0x3177ef25 +vmlinux transport_configure_device 0xa78e21e8 +vmlinux transport_destroy_device 0x6eea6f15 +vmlinux transport_remove_device 0x81b95da9 +vmlinux transport_setup_device 0x03722a1e +vmlinux truncate_inode_pages 0x1325efea +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0x388a9f89 +vmlinux try_to_release_page 0x6187a6c4 +vmlinux tty_check_change 0xea96f7be +vmlinux tty_flip_buffer_push 0x3770f68b +vmlinux tty_get_baud_rate 0x0efe6695 +vmlinux tty_hangup 0x4a2c4f04 +vmlinux tty_hung_up_p 0x39828d93 +vmlinux tty_ldisc_deref 0x160a1571 +vmlinux tty_ldisc_flush 0xe6a6e2a6 +vmlinux tty_ldisc_get 0x237fc2d2 +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0xd9fe216d +vmlinux tty_ldisc_ref_wait 0x6be43970 +vmlinux tty_name 0x34dd080c +vmlinux tty_register_device 0x22c81a87 +vmlinux tty_register_driver 0xf211901d +vmlinux tty_register_ldisc 0x85a521d8 +vmlinux tty_set_operations 0x9f3da3af +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0xbd5cb004 +vmlinux tty_unregister_driver 0xb45664dd +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0xf74f2ca7 +vmlinux tty_wait_until_sent 0x7bd4eadf +vmlinux tty_wakeup 0x13ea968a +vmlinux uart_add_one_port 0x0e0295d6 +vmlinux uart_get_baud_rate 0x5f99f033 +vmlinux uart_get_divisor 0x32768543 +vmlinux uart_match_port 0x092819ea +vmlinux uart_register_driver 0xb0ab535e +vmlinux uart_remove_one_port 0x0cb75fc5 +vmlinux uart_resume_port 0x55b1efff +vmlinux uart_suspend_port 0xae4252ef +vmlinux uart_unregister_driver 0xbd81b81b +vmlinux uart_update_timeout 0x4c578d4c +vmlinux uart_write_wakeup 0x940c87ac +vmlinux udp_disconnect 0xc5fb19f2 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0x7425ac56 +vmlinux udp_ioctl 0x7213fe13 +vmlinux udp_poll 0x52fe8685 +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0xd64ac029 +vmlinux udp_proc_unregister 0x35d34b12 +vmlinux udp_prot 0xe917d64d +vmlinux udp_sendmsg 0x5d170c7a +vmlinux uhci_check_and_reset_hc 0xb883126f +vmlinux uhci_reset_hc 0xaa82b784 +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unload_nls 0x0b43b50d +vmlinux unlock_buffer 0xe8adf0ff +vmlinux unlock_cpu_hotplug 0xdbb6cbd9 +vmlinux unlock_kernel 0xb1f975aa +vmlinux unlock_new_inode 0x3438c24f +vmlinux unlock_page 0xe7ff101b +vmlinux unlock_rename 0x02d90a39 +vmlinux unmap_mapping_range 0xea599015 +vmlinux unmap_page_from_agp 0x65b08a03 +vmlinux unmap_underlying_metadata 0x958e28d2 +vmlinux unregister_8022_client 0x50a3487e +vmlinux unregister_acpi_bus_type 0x003bba4c +vmlinux unregister_binfmt 0x74943729 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0xddd54a5f +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_exec_domain 0xbbba56ff +vmlinux unregister_filesystem 0xb07c6e16 +vmlinux unregister_framebuffer 0x79200f0e +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_key_type 0xbb2eeeb7 +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0xaf002ab6 +vmlinux unregister_netdevice 0x0511349e +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0x91bb98d8 +vmlinux unregister_qdisc 0x3e5acd70 +vmlinux unregister_quota_format 0xe6978bdb +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0xe124fd0b +vmlinux unregister_snap_client 0xe317c213 +vmlinux unregister_sysctl_table 0x28a9bcba +vmlinux unregister_sysrq_key 0x988a8992 +vmlinux unregister_tcf_proto_ops 0x0e5a3c59 +vmlinux unregister_timer_hook 0x57da507b +vmlinux unregister_wlandev 0x0e68c713 +vmlinux unset_nmi_callback 0x2ef9373e +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0x2b65c444 +vmlinux update_region 0xa9bfbbae +vmlinux user_describe 0x45cc541d +vmlinux user_destroy 0x64ba8f80 +vmlinux user_duplicate 0x7c947788 +vmlinux user_instantiate 0x9ef2d1a7 +vmlinux user_match 0x8e3bbf39 +vmlinux user_read 0xbe9f2657 +vmlinux user_update 0x49a9c8f2 +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0x67cd4622 +vmlinux vc_cons 0x7e56827f +vmlinux vc_resize 0xc931c839 +vmlinux vcc_hash 0x2cc2d52d +vmlinux vcc_insert_socket 0x10a1acb8 +vmlinux vcc_release_async 0xa467526a +vmlinux vcc_sklist_lock 0xb8a20d62 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0x5321f847 +vmlinux vfs_follow_link 0x4fc16aaa +vmlinux vfs_fstat 0x2a0837e6 +vmlinux vfs_get_dqblk 0x90c9b51f +vmlinux vfs_get_dqinfo 0xdcf78e0c +vmlinux vfs_getattr 0x6bd26904 +vmlinux vfs_link 0x464b08d0 +vmlinux vfs_llseek 0x73375f8d +vmlinux vfs_lstat 0x12344839 +vmlinux vfs_mkdir 0x6dd596d8 +vmlinux vfs_mknod 0x63156945 +vmlinux vfs_permission 0xd400e2bf +vmlinux vfs_quota_off 0xb970f4c0 +vmlinux vfs_quota_on 0xed446d84 +vmlinux vfs_quota_on_mount 0x9ece89a4 +vmlinux vfs_quota_sync 0xdef65dbb +vmlinux vfs_read 0xc77a2cc4 +vmlinux vfs_readdir 0xe438e62e +vmlinux vfs_readlink 0xe54cb979 +vmlinux vfs_readv 0x8c0a1a64 +vmlinux vfs_rename 0xbb520aab +vmlinux vfs_rmdir 0xa0171d6b +vmlinux vfs_set_dqblk 0x18dc2973 +vmlinux vfs_set_dqinfo 0x660b1dbc +vmlinux vfs_stat 0x787feff6 +vmlinux vfs_statfs 0xdcf7e53c +vmlinux vfs_symlink 0x2a7ddf67 +vmlinux vfs_unlink 0x2e7bd238 +vmlinux vfs_write 0xc222ee2c +vmlinux vfs_writev 0xd5ea4805 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x1328f2bc +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0x7131b987 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0x36aba731 +vmlinux vmtruncate 0xdbfb819e +vmlinux vprintk 0x777a8e29 +vmlinux vscnprintf 0xf3522c9c +vmlinux vsnprintf 0x0e57f111 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0xdfa4a7d0 +vmlinux wait_for_completion_interruptible 0x5ca670a0 +vmlinux wait_for_completion_interruptible_timeout 0x7dde7069 +vmlinux wait_for_completion_timeout 0x139c77f7 +vmlinux wait_on_page_bit 0x0a3a3695 +vmlinux wait_on_sync_kiocb 0x752fb9ac +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0xa31d6515 +vmlinux wireless_send_event 0x8a3a5281 +vmlinux wireless_spy_update 0x58dc78f3 +vmlinux wlan_setup 0x80b88b30 +vmlinux wlan_unsetup 0xb4201123 +vmlinux write_inode_now 0x85ace714 +vmlinux write_one_page 0x2226d78e +vmlinux x86_acpiid_to_apicid 0x062bdb0e +vmlinux x86_cpu_to_apicid 0xc39d1fd0 +vmlinux xfrm4_rcv 0xd142f74e +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0xd76590da +vmlinux xfrm_bundle_ok 0x232a6bed +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0x9119b8da +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0x179ada70 +vmlinux xfrm_dst_lookup 0x306df55b +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0x00dbb69b +vmlinux xfrm_find_acq_byseq 0xdf1c3c75 +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0x5bb50e66 +vmlinux xfrm_init_state 0x3f16b893 +vmlinux xfrm_lookup 0xd3a7f65a +vmlinux xfrm_parse_spi 0x15f1d463 +vmlinux xfrm_policy_alloc 0x2edb0d18 +vmlinux xfrm_policy_byid 0x4dd7892b +vmlinux xfrm_policy_bysel 0xe8151384 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x85d92d26 +vmlinux xfrm_policy_list 0xba7b79c6 +vmlinux xfrm_policy_register_afinfo 0x0bf9f69c +vmlinux xfrm_policy_unregister_afinfo 0x81ce0928 +vmlinux xfrm_policy_walk 0x6a8ec4d3 +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0x7bc3462b +vmlinux xfrm_register_type 0xda756b00 +vmlinux xfrm_replay_advance 0x7de29d26 +vmlinux xfrm_replay_check 0x7b912934 +vmlinux xfrm_state_add 0xda4bcc18 +vmlinux xfrm_state_alloc 0xe0239d04 +vmlinux xfrm_state_check 0xe5cb06b8 +vmlinux xfrm_state_check_expire 0x65036b5e +vmlinux xfrm_state_delete 0xbff05f20 +vmlinux xfrm_state_delete_tunnel 0x12d00129 +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0xb68966eb +vmlinux xfrm_state_lookup 0x03dac951 +vmlinux xfrm_state_mtu 0xfeb44f4e +vmlinux xfrm_state_register_afinfo 0xe2be8f69 +vmlinux xfrm_state_unregister_afinfo 0x09ffc44a +vmlinux xfrm_state_update 0x2ace829a +vmlinux xfrm_state_walk 0x60ed1596 +vmlinux xfrm_unregister_km 0x90a14185 +vmlinux xfrm_unregister_type 0x4f61ed56 +vmlinux xfrm_user_policy 0x2bedf835 +vmlinux xrlim_allow 0x2edfab5d +vmlinux xtime 0xb56717cf +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0xe75f0c1b +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0xdfaa6760 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/amd64/amd64-k8.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/amd64/amd64-k8.modules @@ -0,0 +1,1561 @@ +3c359 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +6pack +8021q +8139cp +8139too +8390 +9p2000 +a3d +aacraid +abyss +ac +ac97_codec +acecad +acenic +aci +acpi-cpufreq +acpiphp +acpiphp_ibm +acpi_sbs +acquirewdt +act200l-sir +actisys-sir +acx +ad1848 +ad1889 +adfs +adi +adlib_card +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +adv7170 +adv7175 +adv717x +advansys +advantechwdt +aec62xx +aedsp16 +aes +aes-x86_64 +affs +af_key +af_packet +ah4 +ah6 +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airprime +ali-ircc +alim1535_wdt +alim15x3 +alim7101_wdt +ambassador +amd74xx +amd76xrom +amd8111e +analog +anubis +aoe +appletalk +appletouch +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +asus_acpi +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +atiixp +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +auerswald +auth_rpcgss +autofs +autofs4 +av5100 +avma1_cs +avm_cs +avmfritz +ax25 +axnet_cs +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +battery +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_misc +bitblit +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bnep +bnx2 +bonding +bpa10x +bpck +bpqether +br2684 +bridge +bsd_comp +bt3c_cs +bt819 +bt856 +bt865 +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +button +bw-qcam +c4 +capability +capi +capidrv +capifs +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cfbcopyarea +cfbfillrect +cfbimgblt +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm4000_cs +cm4040_cs +cmd64x +cmtp +cn +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comm +commoncap +configfs +container +cp2101 +cpcihp_generic +cpcihp_zt5550 +cpia +cpia_pp +cpia_usb +cpqarray +cpu5wdt +cpufreq_conservative +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +cpuid +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cs5520 +cs5530 +ct82c710 +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxacru +cxgb +cy82c693 +cyber2000fb +cyberjack +cyblafb +cyclades +cyclomx +cycx_drv +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +dcdbas +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +dell_rbu +des +dev_acpi +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +dilnetpc +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +dpc7146 +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +ds_w1_bridge +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +eagle-usb +eata +eata_pio +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +econet +eepro100 +eeprom +efs +ehci-hcd +elo +elsa_cs +em28xx +em8300 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +eni +epat +epca +epia +epic100 +eql +esi-sir +esp4 +esp6 +eth1394 +eurotechwdt +evbug +evdev +exportfs +ext2 +ext3 +fakephp +fan +farsync +fat +faulty +faxl3 +fbcon +fdomain +fdomain_cs +fealnx +firestream +fit2 +fit3 +floppy +fm801-gp +fmvj18x_cs +font +forcedeth +fore_200e +freevxfs +freq_table +friq +frpw +fsam7400 +fscher +fscpos +ftape +ftdi_sio +ftl +fuse +g450_pll +gadgetfs +gamecon +gameport +garmin_gps +gdth +generic +generic_serial +gen_probe +g_ether +gf2k +g_file_storage +girbil-sir +gl518sm +gl520sm +gl620a +gnbd +grip +grip_mp +g_serial +guillemot +gunze +gx1fb +g_zero +hamachi +hangcheck-timer +hci_uart +hci_usb +hci_vhci +hdaps +hdlc +hdlcdrv +he +hermes +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hidp +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hotkey +hp100 +hp4x +hpfs +hpt34x +hpt366 +hwmon-vid +hw_random +hysdn +i2c_acpi_ec +i2c-algo-bit +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-core +i2c-dev +i2c-i801 +i2c-i810 +i2c-isa +i2c-matroxfb +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i6300esb +i810 +i810_audio +i82092 +i830 +i8xx_tco +i915 +ib700wdt +ib_cm +ib_core +ib_ipoib +ibm_acpi +ib_mad +ibmasm +ibmasr +ibmcam +ib_mthca +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ichxrom +ide-cd +ide-cs +ide-disk +ide-floppy +ide-generic +ide-pnp +ide-scsi +ide-tape +idmouse +idt77252 +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +inftl +initio +intel-agp +interact +io_edgeport +io_ti +ip2 +ip2main +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ip_gre +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipw3945 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irport +irtty-sir +ir-usb +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isdnloop +islsm +islsm_device +islsm_pci +islsm_usb +isofs +istallion +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kahlua +kaweth +kbic +kbtab +kernelcapi +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l3udss1 +l440gx +l64781 +lanai +lapb +lapbether +lcd +ldusb +lec +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +litelink-sir +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lockd +loop +lp +lpfc +lxt +ma600-sir +machzwd +macmodes +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1619 +max6875 +mcp2120-sir +mct_u232 +md4 +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mga +michael_mic +microcode +microtek +mii +minix +mISDN_capi +mISDN_core +mISDN_dsp +mISDN_dtmf +mISDN_isac +mISDN_l1 +mISDN_l2 +mISDN_x25dte +mk712 +mkiss +mmc_core +moxa +mpoa +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu401 +mrv8k +msdos +msp3400 +msr +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouch +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mwave +mxb +mxser +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +ndiswrapper +ne2k-pci +neofb +net1080 +net2280 +netconsole +netrom +netsc520 +nettel +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +nsc-ircc +ntfs +nvidiafb +nvram +nxt2002 +nxt200x +nxt6000 +ohci1394 +ohci-hcd +old_belkin-sir +olympic +omninet +on20 +on26 +onenand +opl3 +opl3sa2 +oprofile +opti621 +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pas2 +pbe5 +pc300 +pc87360 +pca9539 +pcc_acpi +pcd +pcf8574 +pcf8591 +pci +pci200syn +pciehp +pci_hotplug +pcilynx +pcips2 +pcmcia +pcmcia_core +pcmciamtd +pcnet32 +pcnet_cs +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +piix +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmc551 +pnc2000 +podxtpro +powermate +powernow-k8 +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +processor +psmouse +pss +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radeonfb +radio-gemtek-pci +radio-maestro +radio-maxiradio +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio500 +riscom8 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rrunner +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc8564 +rtl8150 +rxrpc +rz1000 +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7110 +saa7111 +saa7114 +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +saa7185 +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb +sb1000 +sbc60xxwdt +sbc8360 +sbc_gxx +sb_lib +sbni +sbp2 +sc1200 +sc1200wdt +sc520cdp +sc520_wdt +scb2_flash +sch_atm +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_debug +scsi_mod +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200_acb +sdhci +sd_mod +se401 +seclvl +sedlbauer_cs +sedlfax +serial_cs +serio_raw +sermouse +serpent +serport +serverworks +sg +sha1 +sha256 +sha512 +shaper +shpchp +sidewinder +siimage +sir-dev +sis +sis190 +sis5513 +sis5595 +sis900 +sisfb +sisusbvga +sk98lin +skfp +skge +sky2 +sl811_cs +sl811-hcd +slc90e66 +slhc +slip +slram +smbfs +smc91c92_cs +smsc47b397 +smsc47m1 +smsc-ircc2 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1889 +snd-ainstr-fm +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fm801 +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-rtctimer +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +softcursor +softdog +sony_acpi +sound +soundcore +sp8870 +sp887x +spaceball +spaceorb +spca5xx +specialix +spectrum_cs +speedstep-centrino +speedtch +squashfs +sr_mod +sstfb +st +stallion +starfire +stinger +stir4200 +stradis +strip +stv0297 +stv0299 +stv680 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sx +sx8 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink +synclink_cs +synclinkmp +syncppp +sysv +t1pci +tc1100-wmi +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tdfxfb +tea +tea6415c +tea6420 +tekram-sir +teles_cs +tg3 +tgr192 +thermal +tileblit +tipar +ti_usb_3410_5052 +tlclk +tmdc +tms380tr +tmscsim +tmspci +toshiba_acpi +touchkitusb +tpm +tpm_atmel +tpm_infineon +tpm_nsc +trident +tridentfb +triflex +trix +trm290 +ts5500_flash +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +tvp5150 +twidjoy +twofish +typhoon +uart401 +uart6850 +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +umem +unionfs +uPD98402 +usbatm +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vesafb +vfat +vga16fb +vgastate +via +via686a +via82cxxx +via-ircc +via-rhine +via-velocity +vicam +video +video1394 +video-buf +video-buf-dvb +videocodec +videodev +visor +vlsi_ir +v_midi +vpx3220 +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w6692pci +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83792d +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w9966 +w9968cf +wacom +wafer5823wdt +wanrouter +wanxl +warrior +wavelan_cs +wbsd +wdt_pci +whiteheat +winbond-840 +wire +wl3501_cs +wm8775 +wp512 +x1205 +x25 +x25_asy +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xircom_tulip_cb +xor +xpad +xtkbd +xusbatm +yam +yealink +yellowfin +yenta_socket +zatm +zaurus +zd1201 +zd1211 +zftape +zft-compressor +zlib_deflate +zr36016 +zr36050 +zr36060 +zr36067 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/amd64/amd64-generic.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/amd64/amd64-generic.modules @@ -0,0 +1,1561 @@ +3c359 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +6pack +8021q +8139cp +8139too +8390 +9p2000 +a3d +aacraid +abyss +ac +ac97_codec +acecad +acenic +aci +acpi-cpufreq +acpiphp +acpiphp_ibm +acpi_sbs +acquirewdt +act200l-sir +actisys-sir +acx +ad1848 +ad1889 +adfs +adi +adlib_card +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +adv7170 +adv7175 +adv717x +advansys +advantechwdt +aec62xx +aedsp16 +aes +aes-x86_64 +affs +af_key +af_packet +ah4 +ah6 +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airprime +ali-ircc +alim1535_wdt +alim15x3 +alim7101_wdt +ambassador +amd74xx +amd76xrom +amd8111e +analog +anubis +aoe +appletalk +appletouch +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +asus_acpi +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +atiixp +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +auerswald +auth_rpcgss +autofs +autofs4 +av5100 +avma1_cs +avm_cs +avmfritz +ax25 +axnet_cs +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +battery +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_misc +bitblit +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bnep +bnx2 +bonding +bpa10x +bpck +bpqether +br2684 +bridge +bsd_comp +bt3c_cs +bt819 +bt856 +bt865 +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +button +bw-qcam +c4 +capability +capi +capidrv +capifs +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cfbcopyarea +cfbfillrect +cfbimgblt +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm4000_cs +cm4040_cs +cmd64x +cmtp +cn +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comm +commoncap +configfs +container +cp2101 +cpcihp_generic +cpcihp_zt5550 +cpia +cpia_pp +cpia_usb +cpqarray +cpu5wdt +cpufreq_conservative +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +cpuid +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cs5520 +cs5530 +ct82c710 +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxacru +cxgb +cy82c693 +cyber2000fb +cyberjack +cyblafb +cyclades +cyclomx +cycx_drv +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +dcdbas +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +dell_rbu +des +dev_acpi +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +dilnetpc +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +dpc7146 +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +ds_w1_bridge +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +eagle-usb +eata +eata_pio +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +econet +eepro100 +eeprom +efs +ehci-hcd +elo +elsa_cs +em28xx +em8300 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +eni +epat +epca +epia +epic100 +eql +esi-sir +esp4 +esp6 +eth1394 +eurotechwdt +evbug +evdev +exportfs +ext2 +ext3 +fakephp +fan +farsync +fat +faulty +faxl3 +fbcon +fdomain +fdomain_cs +fealnx +firestream +fit2 +fit3 +floppy +fm801-gp +fmvj18x_cs +font +forcedeth +fore_200e +freevxfs +freq_table +friq +frpw +fsam7400 +fscher +fscpos +ftape +ftdi_sio +ftl +fuse +g450_pll +gadgetfs +gamecon +gameport +garmin_gps +gdth +generic +generic_serial +gen_probe +g_ether +gf2k +g_file_storage +girbil-sir +gl518sm +gl520sm +gl620a +gnbd +grip +grip_mp +g_serial +guillemot +gunze +gx1fb +g_zero +hamachi +hangcheck-timer +hci_uart +hci_usb +hci_vhci +hdaps +hdlc +hdlcdrv +he +hermes +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hidp +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hotkey +hp100 +hp4x +hpfs +hpt34x +hpt366 +hwmon-vid +hw_random +hysdn +i2c_acpi_ec +i2c-algo-bit +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-core +i2c-dev +i2c-i801 +i2c-i810 +i2c-isa +i2c-matroxfb +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i6300esb +i810 +i810_audio +i82092 +i830 +i8xx_tco +i915 +ib700wdt +ib_cm +ib_core +ib_ipoib +ibm_acpi +ib_mad +ibmasm +ibmasr +ibmcam +ib_mthca +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ichxrom +ide-cd +ide-cs +ide-disk +ide-floppy +ide-generic +ide-pnp +ide-scsi +ide-tape +idmouse +idt77252 +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +inftl +initio +intel-agp +interact +io_edgeport +io_ti +ip2 +ip2main +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ip_gre +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipw3945 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irport +irtty-sir +ir-usb +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isdnloop +islsm +islsm_device +islsm_pci +islsm_usb +isofs +istallion +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kahlua +kaweth +kbic +kbtab +kernelcapi +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l3udss1 +l440gx +l64781 +lanai +lapb +lapbether +lcd +ldusb +lec +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +litelink-sir +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lockd +loop +lp +lpfc +lxt +ma600-sir +machzwd +macmodes +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1619 +max6875 +mcp2120-sir +mct_u232 +md4 +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mga +michael_mic +microcode +microtek +mii +minix +mISDN_capi +mISDN_core +mISDN_dsp +mISDN_dtmf +mISDN_isac +mISDN_l1 +mISDN_l2 +mISDN_x25dte +mk712 +mkiss +mmc_core +moxa +mpoa +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu401 +mrv8k +msdos +msp3400 +msr +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouch +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mwave +mxb +mxser +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +ndiswrapper +ne2k-pci +neofb +net1080 +net2280 +netconsole +netrom +netsc520 +nettel +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +nsc-ircc +ntfs +nvidiafb +nvram +nxt2002 +nxt200x +nxt6000 +ohci1394 +ohci-hcd +old_belkin-sir +olympic +omninet +on20 +on26 +onenand +opl3 +opl3sa2 +oprofile +opti621 +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pas2 +pbe5 +pc300 +pc87360 +pca9539 +pcc_acpi +pcd +pcf8574 +pcf8591 +pci +pci200syn +pciehp +pci_hotplug +pcilynx +pcips2 +pcmcia +pcmcia_core +pcmciamtd +pcnet32 +pcnet_cs +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +piix +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmc551 +pnc2000 +podxtpro +powermate +powernow-k8 +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +processor +psmouse +pss +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radeonfb +radio-gemtek-pci +radio-maestro +radio-maxiradio +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio500 +riscom8 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rrunner +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc8564 +rtl8150 +rxrpc +rz1000 +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7110 +saa7111 +saa7114 +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +saa7185 +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb +sb1000 +sbc60xxwdt +sbc8360 +sbc_gxx +sb_lib +sbni +sbp2 +sc1200 +sc1200wdt +sc520cdp +sc520_wdt +scb2_flash +sch_atm +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_debug +scsi_mod +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200_acb +sdhci +sd_mod +se401 +seclvl +sedlbauer_cs +sedlfax +serial_cs +serio_raw +sermouse +serpent +serport +serverworks +sg +sha1 +sha256 +sha512 +shaper +shpchp +sidewinder +siimage +sir-dev +sis +sis190 +sis5513 +sis5595 +sis900 +sisfb +sisusbvga +sk98lin +skfp +skge +sky2 +sl811_cs +sl811-hcd +slc90e66 +slhc +slip +slram +smbfs +smc91c92_cs +smsc47b397 +smsc47m1 +smsc-ircc2 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1889 +snd-ainstr-fm +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fm801 +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-rtctimer +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +softcursor +softdog +sony_acpi +sound +soundcore +sp8870 +sp887x +spaceball +spaceorb +spca5xx +specialix +spectrum_cs +speedstep-centrino +speedtch +squashfs +sr_mod +sstfb +st +stallion +starfire +stinger +stir4200 +stradis +strip +stv0297 +stv0299 +stv680 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sx +sx8 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink +synclink_cs +synclinkmp +syncppp +sysv +t1pci +tc1100-wmi +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tdfxfb +tea +tea6415c +tea6420 +tekram-sir +teles_cs +tg3 +tgr192 +thermal +tileblit +tipar +ti_usb_3410_5052 +tlclk +tmdc +tms380tr +tmscsim +tmspci +toshiba_acpi +touchkitusb +tpm +tpm_atmel +tpm_infineon +tpm_nsc +trident +tridentfb +triflex +trix +trm290 +ts5500_flash +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +tvp5150 +twidjoy +twofish +typhoon +uart401 +uart6850 +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +umem +unionfs +uPD98402 +usbatm +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vesafb +vfat +vga16fb +vgastate +via +via686a +via82cxxx +via-ircc +via-rhine +via-velocity +vicam +video +video1394 +video-buf +video-buf-dvb +videocodec +videodev +visor +vlsi_ir +v_midi +vpx3220 +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w6692pci +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83792d +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w9966 +w9968cf +wacom +wafer5823wdt +wanrouter +wanxl +warrior +wavelan_cs +wbsd +wdt_pci +whiteheat +winbond-840 +wire +wl3501_cs +wm8775 +wp512 +x1205 +x25 +x25_asy +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xircom_tulip_cb +xor +xpad +xtkbd +xusbatm +yam +yealink +yellowfin +yenta_socket +zatm +zaurus +zd1201 +zd1211 +zftape +zft-compressor +zlib_deflate +zr36016 +zr36050 +zr36060 +zr36067 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/amd64/amd64-server +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/amd64/amd64-server @@ -0,0 +1,5676 @@ +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0xdd411798 +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0xfc837de9 +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0xac5db655 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xdc30c180 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/acpi/ac acpi_get_ac_dir 0x7db85073 +drivers/acpi/battery acpi_get_battery_dir 0x601a01fb +drivers/acpi/i2c_acpi_ec acpi_get_ec_hc 0x5864eb91 +drivers/acpi/processor acpi_processor_notify_smm 0x060c0557 +drivers/acpi/processor acpi_processor_register_performance 0x858fc2e6 +drivers/acpi/processor acpi_processor_set_thermal_limit 0xe8a3605f +drivers/acpi/processor acpi_processor_unregister_performance 0x70b3538a +drivers/atm/suni suni_init 0x5b825bb9 +drivers/atm/uPD98402 uPD98402_init 0xe1f9ae93 +drivers/block/loop loop_register_transfer 0x2c80235f +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0x708e0184 +drivers/block/paride/paride pi_disconnect 0x55f9369c +drivers/block/paride/paride pi_do_claimed 0xa695d024 +drivers/block/paride/paride pi_init 0x9c63bd07 +drivers/block/paride/paride pi_read_block 0x2ad2860f +drivers/block/paride/paride pi_read_regr 0xef015aaa +drivers/block/paride/paride pi_register 0xf54d8a5c +drivers/block/paride/paride pi_release 0x8e593a28 +drivers/block/paride/paride pi_schedule_claimed 0xa9ea1f20 +drivers/block/paride/paride pi_unregister 0x4ebe7312 +drivers/block/paride/paride pi_write_block 0x83015b36 +drivers/block/paride/paride pi_write_regr 0x3259aa6e +drivers/cdrom/cdrom cdrom_get_last_written 0xa60388fb +drivers/cdrom/cdrom cdrom_get_media_event 0xb3c39d81 +drivers/cdrom/cdrom cdrom_ioctl 0x98c95c11 +drivers/cdrom/cdrom cdrom_media_changed 0xdd1fd67d +drivers/cdrom/cdrom cdrom_mode_select 0x6882172f +drivers/cdrom/cdrom cdrom_mode_sense 0xcb3dabf0 +drivers/cdrom/cdrom cdrom_number_of_slots 0xf8ae7c5a +drivers/cdrom/cdrom cdrom_open 0x2162a28a +drivers/cdrom/cdrom cdrom_release 0x0c013d0f +drivers/cdrom/cdrom init_cdrom_command 0x4f476e96 +drivers/cdrom/cdrom register_cdrom 0xed8f826f +drivers/cdrom/cdrom unregister_cdrom 0x8c66fb33 +drivers/char/drm/drm drm_addbufs_agp 0x2f182a3c +drivers/char/drm/drm drm_addbufs_fb 0xeba4a48d +drivers/char/drm/drm drm_addbufs_pci 0x074c4370 +drivers/char/drm/drm drm_addmap 0xd277f99b +drivers/char/drm/drm drm_agp_acquire 0xc8b69bcd +drivers/char/drm/drm drm_agp_alloc 0x7fd73f4c +drivers/char/drm/drm drm_agp_bind 0xe0e1c44f +drivers/char/drm/drm drm_agp_bind_memory 0xbcaeaf26 +drivers/char/drm/drm drm_agp_enable 0x484a4405 +drivers/char/drm/drm drm_agp_free 0xdcddd56e +drivers/char/drm/drm drm_agp_info 0xc164a616 +drivers/char/drm/drm drm_agp_release 0xd716d6a3 +drivers/char/drm/drm drm_agp_unbind 0xce9a81c8 +drivers/char/drm/drm drm_ati_pcigart_cleanup 0xec412dfb +drivers/char/drm/drm drm_ati_pcigart_init 0x5ebb0c00 +drivers/char/drm/drm drm_compat_ioctl 0x5de50c3e +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0x91bc6d12 +drivers/char/drm/drm drm_core_reclaim_buffers 0x97505fb4 +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0xa404d9bf +drivers/char/drm/drm drm_fasync 0xc5abeee6 +drivers/char/drm/drm drm_get_dev 0xdbc86f37 +drivers/char/drm/drm drm_get_resource_len 0x85debdec +drivers/char/drm/drm drm_get_resource_start 0xa166091d +drivers/char/drm/drm drm_init 0xbe9a4da6 +drivers/char/drm/drm drm_ioctl 0x10798560 +drivers/char/drm/drm drm_irq_uninstall 0x3d107f77 +drivers/char/drm/drm drm_mmap 0x124e5070 +drivers/char/drm/drm drm_open 0xbfbe9875 +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0xdaec9022 +drivers/char/drm/drm drm_pci_free 0xbb945acf +drivers/char/drm/drm drm_poll 0xf33b9626 +drivers/char/drm/drm drm_release 0x242e03b2 +drivers/char/drm/drm drm_rmmap 0x6f22b995 +drivers/char/drm/drm drm_rmmap_locked 0xdb7ca276 +drivers/char/drm/drm drm_vbl_send_signals 0xee3009cf +drivers/char/ftape/lowlevel/ftape ftape_abort_operation 0xd90df519 +drivers/char/ftape/lowlevel/ftape ftape_calibrate_data_rate 0x82bcf52a +drivers/char/ftape/lowlevel/ftape ftape_command 0x799305e4 +drivers/char/ftape/lowlevel/ftape ftape_decode_header_segment 0x08b665ef +drivers/char/ftape/lowlevel/ftape ftape_disable 0x7b52f04b +drivers/char/ftape/lowlevel/ftape ftape_enable 0x7ec0d5d4 +drivers/char/ftape/lowlevel/ftape ftape_find_end_of_bsm_list 0x46738687 +drivers/char/ftape/lowlevel/ftape ftape_format_status 0xe9849eee +drivers/char/ftape/lowlevel/ftape ftape_format_track 0x40febb40 +drivers/char/ftape/lowlevel/ftape ftape_function_nest_level 0x50196743 +drivers/char/ftape/lowlevel/ftape ftape_get_bad_sector_entry 0xfed5a53d +drivers/char/ftape/lowlevel/ftape ftape_get_status 0x46f47070 +drivers/char/ftape/lowlevel/ftape ftape_loop_until_writes_done 0x003ed2ea +drivers/char/ftape/lowlevel/ftape ftape_mmap 0xe3755554 +drivers/char/ftape/lowlevel/ftape ftape_parameter 0xc17b60e3 +drivers/char/ftape/lowlevel/ftape ftape_read_header_segment 0xa2b14b3c +drivers/char/ftape/lowlevel/ftape ftape_read_segment_fraction 0xc87f4ed7 +drivers/char/ftape/lowlevel/ftape ftape_ready_wait 0xc780ed08 +drivers/char/ftape/lowlevel/ftape ftape_report_error 0x999edffd +drivers/char/ftape/lowlevel/ftape ftape_report_operation 0xf5ac4591 +drivers/char/ftape/lowlevel/ftape ftape_reset_drive 0x2bdba6aa +drivers/char/ftape/lowlevel/ftape ftape_seek_to_bot 0x4815ac3c +drivers/char/ftape/lowlevel/ftape ftape_seek_to_eot 0x3566aa64 +drivers/char/ftape/lowlevel/ftape ftape_set_nr_buffers 0x8b56caaa +drivers/char/ftape/lowlevel/ftape ftape_set_state 0x5b52d4b8 +drivers/char/ftape/lowlevel/ftape ftape_start_writing 0xa99d81e3 +drivers/char/ftape/lowlevel/ftape ftape_trace_call 0x63f7f6d0 +drivers/char/ftape/lowlevel/ftape ftape_trace_exit 0x4e755dcf +drivers/char/ftape/lowlevel/ftape ftape_trace_log 0x92ce7eb1 +drivers/char/ftape/lowlevel/ftape ftape_tracing 0x6b6253d3 +drivers/char/ftape/lowlevel/ftape ftape_verify_segment 0x82675be7 +drivers/char/ftape/lowlevel/ftape ftape_write_segment 0x8a09c846 +drivers/char/ftape/lowlevel/ftape ftape_zap_read_buffers 0xdd9f0ae0 +drivers/char/ftape/zftape/zftape zft_cmpr_register 0xe27489d5 +drivers/char/ftape/zftape/zftape zft_fetch_segment_fraction 0x41f166c1 +drivers/char/ftape/zftape/zftape zft_vfree 0x02da35e5 +drivers/char/ftape/zftape/zftape zft_vmalloc_always 0x1770d505 +drivers/char/ftape/zftape/zftape zft_vmalloc_once 0x3c4b9c89 +drivers/char/generic_serial gs_block_til_ready 0x1b31cf2e +drivers/char/generic_serial gs_chars_in_buffer 0xbc08106d +drivers/char/generic_serial gs_close 0x5ab9a70e +drivers/char/generic_serial gs_flush_buffer 0xf45da116 +drivers/char/generic_serial gs_flush_chars 0xec92f31f +drivers/char/generic_serial gs_getserial 0x3f4d2f8d +drivers/char/generic_serial gs_got_break 0x7be157b6 +drivers/char/generic_serial gs_hangup 0x2708ef69 +drivers/char/generic_serial gs_init_port 0xc8032fc8 +drivers/char/generic_serial gs_put_char 0x5d3e0913 +drivers/char/generic_serial gs_set_termios 0x2632b9ee +drivers/char/generic_serial gs_setserial 0x76c8fc88 +drivers/char/generic_serial gs_start 0xb94fe3d1 +drivers/char/generic_serial gs_stop 0x0b2f5579 +drivers/char/generic_serial gs_write 0x53c46cb3 +drivers/char/generic_serial gs_write_room 0xa284b5f5 +drivers/char/ip2main ip2_loadmain 0x5f735f69 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0xba832dbf +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0xf164f90d +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0x8c6eda13 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0x31d47baf +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0xab4eccb6 +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0xdd41b0ba +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0x02128088 +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0x920c4b52 +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0x26504353 +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0x3b5b96c0 +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0xe97eceae +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0x8d03197d +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0xdf75f77c +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0x3f9c8a39 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0x2daa69df +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0x62ef2f98 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0x97310691 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0xf1cd8595 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0x4000cd64 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0xca009c3a +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0x637f509f +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0x135bb133 +drivers/char/nvram __nvram_check_checksum 0x2adec1e0 +drivers/char/nvram __nvram_read_byte 0x17ff2c1d +drivers/char/nvram __nvram_write_byte 0xa8813189 +drivers/char/nvram nvram_check_checksum 0x7da28f12 +drivers/char/nvram nvram_read_byte 0x0f28cb91 +drivers/char/nvram nvram_write_byte 0x9ce3f83f +drivers/char/tpm/tpm tpm_open 0xac38a0b3 +drivers/char/tpm/tpm tpm_pm_resume 0x6f7a8a34 +drivers/char/tpm/tpm tpm_pm_suspend 0x74faf0a5 +drivers/char/tpm/tpm tpm_read 0x6911e0b6 +drivers/char/tpm/tpm tpm_register_hardware 0x9652121c +drivers/char/tpm/tpm tpm_release 0x421688eb +drivers/char/tpm/tpm tpm_remove_hardware 0xd65ca715 +drivers/char/tpm/tpm tpm_show_caps 0x18279c1e +drivers/char/tpm/tpm tpm_show_pcrs 0xc8e8d5b5 +drivers/char/tpm/tpm tpm_show_pubek 0xfdb7bd6e +drivers/char/tpm/tpm tpm_store_cancel 0xf2542160 +drivers/char/tpm/tpm tpm_write 0xeb0671c0 +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0x9692e897 +drivers/cpufreq/freq_table cpufreq_freq_attr_scaling_available_freqs 0x9710ce09 +drivers/cpufreq/freq_table cpufreq_frequency_get_table 0x2f47d8c7 +drivers/cpufreq/freq_table cpufreq_frequency_table_cpuinfo 0x1f3ea53e +drivers/cpufreq/freq_table cpufreq_frequency_table_get_attr 0x706b3a33 +drivers/cpufreq/freq_table cpufreq_frequency_table_put_attr 0x7ae1ae8e +drivers/cpufreq/freq_table cpufreq_frequency_table_target 0x8a5872eb +drivers/cpufreq/freq_table cpufreq_frequency_table_verify 0x09a5121d +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-bit i2c_bit_add_bus 0x39666614 +drivers/i2c/algos/i2c-algo-bit i2c_bit_del_bus 0x8f96fd9e +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0xb608200f +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0x00f8bb85 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0x974a09ec +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0x21ba9266 +drivers/i2c/busses/i2c-amd756 amd756_smbus 0x4571f350 +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0x6475abfd +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0xc2c42700 +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/i2c/i2c-core i2c_adapter_class 0xab56622e +drivers/i2c/i2c-core i2c_adapter_dev_release 0x8e8ecfb5 +drivers/i2c/i2c-core i2c_adapter_driver 0x9a101941 +drivers/i2c/i2c-core i2c_add_adapter 0xb5ac5752 +drivers/i2c/i2c-core i2c_add_driver 0xa1ad3571 +drivers/i2c/i2c-core i2c_attach_client 0x6151a645 +drivers/i2c/i2c-core i2c_bus_type 0xb58d6279 +drivers/i2c/i2c-core i2c_check_addr 0xe0c50551 +drivers/i2c/i2c-core i2c_clients_command 0x60ceff2a +drivers/i2c/i2c-core i2c_control 0xdc139c37 +drivers/i2c/i2c-core i2c_del_adapter 0x0d97ae83 +drivers/i2c/i2c-core i2c_del_driver 0x2ea1d6a1 +drivers/i2c/i2c-core i2c_detach_client 0x570e7e8d +drivers/i2c/i2c-core i2c_get_adapter 0x3922c7c0 +drivers/i2c/i2c-core i2c_master_recv 0x85189bcc +drivers/i2c/i2c-core i2c_master_send 0xf69367ae +drivers/i2c/i2c-core i2c_probe 0x1308b50c +drivers/i2c/i2c-core i2c_put_adapter 0x9a74e5a5 +drivers/i2c/i2c-core i2c_release_client 0x54beaef3 +drivers/i2c/i2c-core i2c_smbus_read_byte 0xfbeab4c4 +drivers/i2c/i2c-core i2c_smbus_read_byte_data 0x9bfbfd77 +drivers/i2c/i2c-core i2c_smbus_read_i2c_block_data 0xda6b9d48 +drivers/i2c/i2c-core i2c_smbus_read_word_data 0x19e08fce +drivers/i2c/i2c-core i2c_smbus_write_block_data 0x98df1fce +drivers/i2c/i2c-core i2c_smbus_write_byte 0x30711c9c +drivers/i2c/i2c-core i2c_smbus_write_byte_data 0xd9fbcbfd +drivers/i2c/i2c-core i2c_smbus_write_quick 0xf42071ac +drivers/i2c/i2c-core i2c_smbus_write_word_data 0x57b6beb9 +drivers/i2c/i2c-core i2c_smbus_xfer 0x7601736f +drivers/i2c/i2c-core i2c_transfer 0xb2e08355 +drivers/i2c/i2c-core i2c_use_client 0x6a1190c6 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0x336406db +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x07d47ac9 +drivers/ieee1394/ieee1394 csr1212_read 0x62913498 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x86e16c22 +drivers/ieee1394/ieee1394 dma_prog_region_free 0x42a06225 +drivers/ieee1394/ieee1394 dma_prog_region_init 0x690f65f2 +drivers/ieee1394/ieee1394 dma_region_alloc 0x2d7a2cbd +drivers/ieee1394/ieee1394 dma_region_free 0x0bbe0201 +drivers/ieee1394/ieee1394 dma_region_init 0xd9382914 +drivers/ieee1394/ieee1394 dma_region_mmap 0x7454b30e +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0xd338077b +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0xdbdcbfa5 +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x7f8e853c +drivers/ieee1394/ieee1394 highlevel_host_reset 0x151cca0c +drivers/ieee1394/ieee1394 hpsb_add_host 0xae166075 +drivers/ieee1394/ieee1394 hpsb_alloc_host 0xe40a55e7 +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0xaf801142 +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0x21af21b4 +drivers/ieee1394/ieee1394 hpsb_bus_reset 0x39dcde05 +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0x90772ac1 +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0x376415fc +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0x884c8fae +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0x89f67cf5 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0xdfcb0a3d +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0x04abf133 +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0x49c75d5f +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0x9f59fa56 +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0x575f2522 +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0xdfb54b5c +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0x5f22b84b +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0x1c3514cd +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0xaa79eee3 +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0xe209de3c +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0xdea4cec2 +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0x96abef22 +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0x74ea645c +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0x496ae7db +drivers/ieee1394/ieee1394 hpsb_iso_stop 0x7195979d +drivers/ieee1394/ieee1394 hpsb_iso_wake 0xc421f7f5 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x6be13bdf +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0x1e59d635 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0xefc108e1 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0x6d72d372 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0xa0cbaeab +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0xf4a6909d +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0x3e4c44d3 +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0xcdb5a733 +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0x91f29963 +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0x9d93d931 +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0x177b8dd4 +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0x375cd89e +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0x3991fa94 +drivers/ieee1394/ieee1394 hpsb_node_write 0xbeb485b1 +drivers/ieee1394/ieee1394 hpsb_packet_received 0xc9d4105a +drivers/ieee1394/ieee1394 hpsb_packet_sent 0x0266b10d +drivers/ieee1394/ieee1394 hpsb_packet_success 0xb9a17a01 +drivers/ieee1394/ieee1394 hpsb_protocol_class 0x7bc0ce4b +drivers/ieee1394/ieee1394 hpsb_read 0x54f1f540 +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0xf1235680 +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0xb3272085 +drivers/ieee1394/ieee1394 hpsb_register_protocol 0x14eabe7e +drivers/ieee1394/ieee1394 hpsb_remove_host 0x89bdf7b9 +drivers/ieee1394/ieee1394 hpsb_reset_bus 0x24203658 +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0xe1b3ecb8 +drivers/ieee1394/ieee1394 hpsb_selfid_received 0x27844a0d +drivers/ieee1394/ieee1394 hpsb_send_packet 0xbb54a62b +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0x17b873f6 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0x7dfa32a9 +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0x044bbb78 +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0xe376294b +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0xa2933320 +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0xf9416762 +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0xdfde8a91 +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0xa1894424 +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0x70f24c91 +drivers/ieee1394/ieee1394 hpsb_write 0xb73f145f +drivers/ieee1394/ieee1394 ieee1394_bus_type 0x16803030 +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0x1d5aeebc +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0x7427325e +drivers/ieee1394/ohci1394 ohci1394_stop_context 0x1a3ffbb9 +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0x78700bbf +drivers/infiniband/core/ib_cm ib_cm_establish 0x435b96fd +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0x1a23d846 +drivers/infiniband/core/ib_cm ib_cm_listen 0x28b8528d +drivers/infiniband/core/ib_cm ib_create_cm_id 0x115509d2 +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0xc1cbc311 +drivers/infiniband/core/ib_cm ib_send_cm_apr 0x3ff5d532 +drivers/infiniband/core/ib_cm ib_send_cm_drep 0x0e8f244e +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0xbad8b9ef +drivers/infiniband/core/ib_cm ib_send_cm_lap 0x613b1033 +drivers/infiniband/core/ib_cm ib_send_cm_mra 0x4647038a +drivers/infiniband/core/ib_cm ib_send_cm_rej 0x829ec2c0 +drivers/infiniband/core/ib_cm ib_send_cm_rep 0x673e4ddf +drivers/infiniband/core/ib_cm ib_send_cm_req 0x3a3bc716 +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0xdc35e65e +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0xb56b814b +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0x0ccb1871 +drivers/infiniband/core/ib_core ib_alloc_device 0x0c256648 +drivers/infiniband/core/ib_core ib_alloc_fmr 0xf7931480 +drivers/infiniband/core/ib_core ib_alloc_mw 0xc1724c0b +drivers/infiniband/core/ib_core ib_alloc_pd 0xa2787544 +drivers/infiniband/core/ib_core ib_attach_mcast 0x3019e854 +drivers/infiniband/core/ib_core ib_create_ah 0xb1831f23 +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0xc97cf31a +drivers/infiniband/core/ib_core ib_create_cq 0x9c375583 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0xc836cc69 +drivers/infiniband/core/ib_core ib_create_qp 0x48eacf2a +drivers/infiniband/core/ib_core ib_create_srq 0x48ef0956 +drivers/infiniband/core/ib_core ib_dealloc_device 0x9a755a9b +drivers/infiniband/core/ib_core ib_dealloc_fmr 0x18cf67d7 +drivers/infiniband/core/ib_core ib_dealloc_mw 0x44b80f81 +drivers/infiniband/core/ib_core ib_dealloc_pd 0xa70718bd +drivers/infiniband/core/ib_core ib_dereg_mr 0x29653984 +drivers/infiniband/core/ib_core ib_destroy_ah 0xea6bf2f3 +drivers/infiniband/core/ib_core ib_destroy_cq 0xabeb2ace +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0xc2e0c7ca +drivers/infiniband/core/ib_core ib_destroy_qp 0x78858aba +drivers/infiniband/core/ib_core ib_destroy_srq 0x921c5ba8 +drivers/infiniband/core/ib_core ib_detach_mcast 0x5644cab2 +drivers/infiniband/core/ib_core ib_dispatch_event 0xc4d214b5 +drivers/infiniband/core/ib_core ib_find_cached_gid 0x489abd18 +drivers/infiniband/core/ib_core ib_find_cached_pkey 0x74953605 +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0x211b1130 +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0x32c05180 +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0xc60d8f70 +drivers/infiniband/core/ib_core ib_get_cached_gid 0x11e2fbc8 +drivers/infiniband/core/ib_core ib_get_cached_pkey 0x336e9790 +drivers/infiniband/core/ib_core ib_get_client_data 0x09ca6b97 +drivers/infiniband/core/ib_core ib_get_dma_mr 0x4b3079ca +drivers/infiniband/core/ib_core ib_modify_ah 0x2ed522ba +drivers/infiniband/core/ib_core ib_modify_device 0x6179b9ef +drivers/infiniband/core/ib_core ib_modify_port 0x31e7b37e +drivers/infiniband/core/ib_core ib_modify_qp 0x5ab71f71 +drivers/infiniband/core/ib_core ib_modify_srq 0x4549147e +drivers/infiniband/core/ib_core ib_pack 0x06830b9a +drivers/infiniband/core/ib_core ib_query_ah 0x483d0590 +drivers/infiniband/core/ib_core ib_query_device 0x00588cb3 +drivers/infiniband/core/ib_core ib_query_gid 0x20713b8c +drivers/infiniband/core/ib_core ib_query_mr 0xfc763928 +drivers/infiniband/core/ib_core ib_query_pkey 0x57fcb112 +drivers/infiniband/core/ib_core ib_query_port 0x64e5abc9 +drivers/infiniband/core/ib_core ib_query_qp 0xbcdcca63 +drivers/infiniband/core/ib_core ib_query_srq 0xbc5b784d +drivers/infiniband/core/ib_core ib_reg_phys_mr 0x99514488 +drivers/infiniband/core/ib_core ib_register_client 0x2c95eb1b +drivers/infiniband/core/ib_core ib_register_device 0x145c35e4 +drivers/infiniband/core/ib_core ib_register_event_handler 0x414b45e1 +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x11196626 +drivers/infiniband/core/ib_core ib_resize_cq 0xae2339e6 +drivers/infiniband/core/ib_core ib_set_client_data 0xfde08ace +drivers/infiniband/core/ib_core ib_ud_header_init 0x965c1dae +drivers/infiniband/core/ib_core ib_ud_header_pack 0x8d12f837 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0x11d42382 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xf96fc9de +drivers/infiniband/core/ib_core ib_unregister_client 0xb9a37a5c +drivers/infiniband/core/ib_core ib_unregister_device 0xb5018d5e +drivers/infiniband/core/ib_core ib_unregister_event_handler 0x1bd54b8c +drivers/infiniband/core/ib_mad ib_cancel_mad 0xecbfd0fb +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x6a3bbc94 +drivers/infiniband/core/ib_mad ib_create_send_mad 0xbdc3a4e2 +drivers/infiniband/core/ib_mad ib_free_recv_mad 0xd6f8244e +drivers/infiniband/core/ib_mad ib_free_send_mad 0xba56b986 +drivers/infiniband/core/ib_mad ib_modify_mad 0x5ce22240 +drivers/infiniband/core/ib_mad ib_post_send_mad 0x3473d9cd +drivers/infiniband/core/ib_mad ib_process_mad_wc 0x4d9d8b69 +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0xb76af0d2 +drivers/infiniband/core/ib_mad ib_register_mad_agent 0xd669d25e +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0x96af5f4b +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0xa6b718d0 +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0x8b990520 +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0xe55e344e +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0x7f27a858 +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0x42e87d21 +drivers/input/gameport/gameport __gameport_register_driver 0x7e48d964 +drivers/input/gameport/gameport __gameport_register_port 0x17842c68 +drivers/input/gameport/gameport gameport_close 0x9410b803 +drivers/input/gameport/gameport gameport_cooked_read 0x3b39a9bf +drivers/input/gameport/gameport gameport_open 0x16cb2fc7 +drivers/input/gameport/gameport gameport_rescan 0xe2e71aa4 +drivers/input/gameport/gameport gameport_set_name 0x222f8919 +drivers/input/gameport/gameport gameport_set_phys 0xf7a93f5d +drivers/input/gameport/gameport gameport_start_polling 0xdb37bbad +drivers/input/gameport/gameport gameport_stop_polling 0xe92024e1 +drivers/input/gameport/gameport gameport_unregister_driver 0xb5ffff55 +drivers/input/gameport/gameport gameport_unregister_port 0x2fe044bd +drivers/isdn/capi/capifs capifs_free_ncci 0x2c54c957 +drivers/isdn/capi/capifs capifs_new_ncci 0xd0bc06ce +drivers/isdn/capi/kernelcapi attach_capi_ctr 0x23814755 +drivers/isdn/capi/kernelcapi capi20_get_manufacturer 0x7e6f1307 +drivers/isdn/capi/kernelcapi capi20_get_profile 0xe19a11ac +drivers/isdn/capi/kernelcapi capi20_get_serial 0x7a33596c +drivers/isdn/capi/kernelcapi capi20_get_version 0x14f2aa5a +drivers/isdn/capi/kernelcapi capi20_isinstalled 0x31c24aa4 +drivers/isdn/capi/kernelcapi capi20_manufacturer 0xed061606 +drivers/isdn/capi/kernelcapi capi20_put_message 0x1b763fc8 +drivers/isdn/capi/kernelcapi capi20_register 0x83dd7354 +drivers/isdn/capi/kernelcapi capi20_release 0x2848218b +drivers/isdn/capi/kernelcapi capi20_set_callback 0xde18d9eb +drivers/isdn/capi/kernelcapi capi_cmd2str 0xb19fda8d +drivers/isdn/capi/kernelcapi capi_cmsg2message 0x50b33ca4 +drivers/isdn/capi/kernelcapi capi_cmsg2str 0xd45b5eb5 +drivers/isdn/capi/kernelcapi capi_cmsg_header 0xb60e5e5f +drivers/isdn/capi/kernelcapi capi_ctr_handle_message 0x855baced +drivers/isdn/capi/kernelcapi capi_ctr_ready 0x259cdd27 +drivers/isdn/capi/kernelcapi capi_ctr_reseted 0x60ce78ab +drivers/isdn/capi/kernelcapi capi_ctr_resume_output 0x7c6922ce +drivers/isdn/capi/kernelcapi capi_ctr_suspend_output 0xa9180448 +drivers/isdn/capi/kernelcapi capi_info2str 0x47d3fc51 +drivers/isdn/capi/kernelcapi capi_message2cmsg 0x6057c6f3 +drivers/isdn/capi/kernelcapi capi_message2str 0xa7abc5e3 +drivers/isdn/capi/kernelcapi capilib_data_b3_conf 0x62e32d43 +drivers/isdn/capi/kernelcapi capilib_data_b3_req 0x71e8d5ba +drivers/isdn/capi/kernelcapi capilib_free_ncci 0x2b8eab1f +drivers/isdn/capi/kernelcapi capilib_new_ncci 0x2baa6586 +drivers/isdn/capi/kernelcapi capilib_release 0x8f699913 +drivers/isdn/capi/kernelcapi capilib_release_appl 0xaa165d27 +drivers/isdn/capi/kernelcapi detach_capi_ctr 0xc87ec9e4 +drivers/isdn/capi/kernelcapi register_capi_driver 0x9f823278 +drivers/isdn/capi/kernelcapi unregister_capi_driver 0x04403fcf +drivers/isdn/hardware/avm/b1 avmcard_dma_alloc 0x6ede7722 +drivers/isdn/hardware/avm/b1 avmcard_dma_free 0x987e726a +drivers/isdn/hardware/avm/b1 b1_alloc_card 0x0e985c6a +drivers/isdn/hardware/avm/b1 b1_detect 0xdfd28376 +drivers/isdn/hardware/avm/b1 b1_free_card 0xd9db6fa7 +drivers/isdn/hardware/avm/b1 b1_getrevision 0x5a026faf +drivers/isdn/hardware/avm/b1 b1_interrupt 0x42fe58a1 +drivers/isdn/hardware/avm/b1 b1_irq_table 0x85f09690 +drivers/isdn/hardware/avm/b1 b1_load_config 0xe658722d +drivers/isdn/hardware/avm/b1 b1_load_firmware 0x55bf6411 +drivers/isdn/hardware/avm/b1 b1_load_t4file 0xd2fa20e2 +drivers/isdn/hardware/avm/b1 b1_loaded 0x7c771055 +drivers/isdn/hardware/avm/b1 b1_parse_version 0x8cc7d5f8 +drivers/isdn/hardware/avm/b1 b1_register_appl 0x95e03510 +drivers/isdn/hardware/avm/b1 b1_release_appl 0x7e3adc61 +drivers/isdn/hardware/avm/b1 b1_reset_ctr 0x3ccf1695 +drivers/isdn/hardware/avm/b1 b1_send_message 0x70b58ff8 +drivers/isdn/hardware/avm/b1 b1ctl_read_proc 0x616cf5e1 +drivers/isdn/hardware/avm/b1dma b1dma_interrupt 0x405cf7b2 +drivers/isdn/hardware/avm/b1dma b1dma_load_firmware 0xaa9abb4a +drivers/isdn/hardware/avm/b1dma b1dma_register_appl 0x6554cb14 +drivers/isdn/hardware/avm/b1dma b1dma_release_appl 0xfa1b6320 +drivers/isdn/hardware/avm/b1dma b1dma_reset 0x65e13b17 +drivers/isdn/hardware/avm/b1dma b1dma_reset_ctr 0xb41e92b7 +drivers/isdn/hardware/avm/b1dma b1dma_send_message 0x7bd4a1be +drivers/isdn/hardware/avm/b1dma b1dmactl_read_proc 0x5e999e20 +drivers/isdn/hardware/avm/b1dma b1pciv4_detect 0x146b11de +drivers/isdn/hardware/avm/b1dma t1pci_detect 0x122a143b +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_b1 0xf14bf8b1 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m1 0xaec3240e +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m2 0xea620116 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_delcard 0x29562993 +drivers/isdn/hardware/eicon/divadidd DIVA_DIDD_Read 0x2974ead1 +drivers/isdn/hardware/eicon/divadidd proc_net_eicon 0xf7bdd027 +drivers/isdn/hisax/hisax FsmChangeState 0x93a64734 +drivers/isdn/hisax/hisax FsmDelTimer 0x799088e0 +drivers/isdn/hisax/hisax FsmEvent 0x9df0cd27 +drivers/isdn/hisax/hisax FsmFree 0x148f0c99 +drivers/isdn/hisax/hisax FsmInitTimer 0x52866abe +drivers/isdn/hisax/hisax FsmNew 0xf0a16657 +drivers/isdn/hisax/hisax FsmRestartTimer 0xde7e7906 +drivers/isdn/hisax/hisax HiSax_closecard 0xfc27303b +drivers/isdn/hisax/hisax hisax_init_pcmcia 0x82f55d53 +drivers/isdn/hisax/hisax hisax_register 0xee93522c +drivers/isdn/hisax/hisax hisax_unregister 0x07f4f2ce +drivers/isdn/hisax/hisax_isac isac_d_l2l1 0x3f3b323a +drivers/isdn/hisax/hisax_isac isac_init 0x1a968a01 +drivers/isdn/hisax/hisax_isac isac_irq 0xbab9897f +drivers/isdn/hisax/hisax_isac isac_setup 0x01d9b9b5 +drivers/isdn/hisax/hisax_isac isacsx_irq 0x8357cc71 +drivers/isdn/hisax/hisax_isac isacsx_setup 0x99ec18ca +drivers/isdn/hisax/isdnhdlc isdnhdlc_bit_rev_tab 0xe82c3e32 +drivers/isdn/hisax/isdnhdlc isdnhdlc_decode 0x1a1afeef +drivers/isdn/hisax/isdnhdlc isdnhdlc_encode 0x52a6537c +drivers/isdn/hisax/isdnhdlc isdnhdlc_out_init 0x277685da +drivers/isdn/hisax/isdnhdlc isdnhdlc_rcv_init 0x1dc6a9fc +drivers/isdn/i4l/isdn isdn_ppp_register_compressor 0xe5be2248 +drivers/isdn/i4l/isdn isdn_ppp_unregister_compressor 0xe622823c +drivers/isdn/i4l/isdn isdn_register_divert 0xb7757abb +drivers/isdn/i4l/isdn register_isdn 0x4c1a3b82 +drivers/isdn/misdn/mISDN_core mISDN_AddIE 0xe4b3348b +drivers/isdn/misdn/mISDN_core mISDN_AddvarIE 0xf36e6308 +drivers/isdn/misdn/mISDN_core mISDN_ConnectIF 0x301cc54d +drivers/isdn/misdn/mISDN_core mISDN_DisConnectIF 0x932f7f20 +drivers/isdn/misdn/mISDN_core mISDN_FsmAddTimer 0x7214e53f +drivers/isdn/misdn/mISDN_core mISDN_FsmChangeState 0x50c2230c +drivers/isdn/misdn/mISDN_core mISDN_FsmDelTimer 0x3010393f +drivers/isdn/misdn/mISDN_core mISDN_FsmEvent 0xd5145151 +drivers/isdn/misdn/mISDN_core mISDN_FsmFree 0x2348cc3c +drivers/isdn/misdn/mISDN_core mISDN_FsmInitTimer 0x172da300 +drivers/isdn/misdn/mISDN_core mISDN_FsmNew 0xf9e7832f +drivers/isdn/misdn/mISDN_core mISDN_FsmRestartTimer 0x50a5d950 +drivers/isdn/misdn/mISDN_core mISDN_HasProtocol 0x4721b090 +drivers/isdn/misdn/mISDN_core mISDN_LogL3Msg 0x5b4e7314 +drivers/isdn/misdn/mISDN_core mISDN_QuickHex 0x91b96ea6 +drivers/isdn/misdn/mISDN_core mISDN_RemoveUsedPID 0xd956d2e8 +drivers/isdn/misdn/mISDN_core mISDN_SetHandledPID 0x0c9633e7 +drivers/isdn/misdn/mISDN_core mISDN_SetIF 0x207a2b8d +drivers/isdn/misdn/mISDN_core mISDN_alloc_l3msg 0x711b7632 +drivers/isdn/misdn/mISDN_core mISDN_bprotocol2pid 0xed673eae +drivers/isdn/misdn/mISDN_core mISDN_debug 0xff10c7d9 +drivers/isdn/misdn/mISDN_core mISDN_debugprint 0xbfcd5902 +drivers/isdn/misdn/mISDN_core mISDN_free_bch 0xa0649182 +drivers/isdn/misdn/mISDN_core mISDN_free_dch 0x3dd095ce +drivers/isdn/misdn/mISDN_core mISDN_get_down_layer 0xd1c0ae73 +drivers/isdn/misdn/mISDN_core mISDN_get_lowlayer 0x9f6faa8f +drivers/isdn/misdn/mISDN_core mISDN_get_protocol 0x394fddc1 +drivers/isdn/misdn/mISDN_core mISDN_get_up_layer 0xc6091c92 +drivers/isdn/misdn/mISDN_core mISDN_getrev 0x91f1a1b8 +drivers/isdn/misdn/mISDN_core mISDN_initQ931_info 0x45d57ad5 +drivers/isdn/misdn/mISDN_core mISDN_init_bch 0x4d778e5d +drivers/isdn/misdn/mISDN_core mISDN_init_dch 0x6022998e +drivers/isdn/misdn/mISDN_core mISDN_init_instance 0x311f7227 +drivers/isdn/misdn/mISDN_core mISDN_l3_ie2pos 0x6a35c630 +drivers/isdn/misdn/mISDN_core mISDN_l3_pos2ie 0x31559777 +drivers/isdn/misdn/mISDN_core mISDN_layermask2layer 0x48cbe644 +drivers/isdn/misdn/mISDN_core mISDN_register 0x86383216 +drivers/isdn/misdn/mISDN_core mISDN_set_dchannel_pid 0xca03ed9e +drivers/isdn/misdn/mISDN_core mISDN_unregister 0x7cce172f +drivers/isdn/misdn/mISDN_core vmISDN_debug 0x85718442 +drivers/isdn/misdn/mISDN_isac mISDN_ISAC_l1hw 0xb3b88425 +drivers/isdn/misdn/mISDN_isac mISDN_clear_isac 0xb3b75d10 +drivers/isdn/misdn/mISDN_isac mISDN_isac_free 0xec00e2ce +drivers/isdn/misdn/mISDN_isac mISDN_isac_init 0x2ef26198 +drivers/isdn/misdn/mISDN_isac mISDN_isac_interrupt 0x5e86f11a +drivers/md/dm-mirror dm_create_dirty_log 0x699c8255 +drivers/md/dm-mirror dm_destroy_dirty_log 0xacea1c1b +drivers/md/dm-mirror dm_register_dirty_log_type 0xd8e3c4c9 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0xb34c092b +drivers/md/dm-mod dm_get_device 0x48b9b713 +drivers/md/dm-mod dm_get_mapinfo 0x7d2f512e +drivers/md/dm-mod dm_io_async 0x79dcaf1b +drivers/md/dm-mod dm_io_async_bvec 0x0e7c4525 +drivers/md/dm-mod dm_io_async_vm 0x6120784f +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0x304b66f6 +drivers/md/dm-mod dm_io_sync_bvec 0x76785659 +drivers/md/dm-mod dm_io_sync_vm 0xc173c872 +drivers/md/dm-mod dm_put_device 0x0f650861 +drivers/md/dm-mod dm_register_target 0x1182c4c1 +drivers/md/dm-mod dm_table_event 0xd6644fc8 +drivers/md/dm-mod dm_table_flush_all 0xc9930d65 +drivers/md/dm-mod dm_table_get 0xf5b86afb +drivers/md/dm-mod dm_table_get_mode 0x0f8e663e +drivers/md/dm-mod dm_table_get_size 0x1ca8c833 +drivers/md/dm-mod dm_table_put 0x362170c7 +drivers/md/dm-mod dm_table_unplug_all 0x90d25a64 +drivers/md/dm-mod dm_unregister_target 0x89419c09 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x2c98d18a +drivers/md/dm-mod kcopyd_client_create 0x05898830 +drivers/md/dm-mod kcopyd_client_destroy 0xe7aa663a +drivers/md/dm-mod kcopyd_copy 0x77bc7fcc +drivers/md/dm-multipath dm_pg_init_complete 0x84f8205e +drivers/md/dm-multipath dm_register_hw_handler 0x4c001d94 +drivers/md/dm-multipath dm_register_path_selector 0xdbbb6314 +drivers/md/dm-multipath dm_scsi_err_handler 0xcb1e5d49 +drivers/md/dm-multipath dm_unregister_hw_handler 0xd86448f7 +drivers/md/dm-multipath dm_unregister_path_selector 0xfb1c8e84 +drivers/md/md-mod bitmap_close_sync 0x71f150c5 +drivers/md/md-mod bitmap_daemon_work 0x3b5542ac +drivers/md/md-mod bitmap_end_sync 0xe63a6257 +drivers/md/md-mod bitmap_endwrite 0x3519496c +drivers/md/md-mod bitmap_start_sync 0x1895d882 +drivers/md/md-mod bitmap_startwrite 0x4695653a +drivers/md/md-mod bitmap_unplug 0x4aca383c +drivers/md/md-mod md_check_recovery 0xd5609001 +drivers/md/md-mod md_done_sync 0x19968714 +drivers/md/md-mod md_error 0xec505ab7 +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x1ea3a3bf +drivers/md/md-mod md_unregister_thread 0x57a93259 +drivers/md/md-mod md_wakeup_thread 0x2510fe18 +drivers/md/md-mod md_write_end 0x889ddd0c +drivers/md/md-mod md_write_start 0xc1615f81 +drivers/md/md-mod register_md_personality 0x240116c7 +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x4740e7a3 +drivers/media/common/ir-common ir_codes_hauppauge_new 0x902a3cd2 +drivers/media/common/ir-common ir_codes_pinnacle 0xd3a0f048 +drivers/media/common/ir-common ir_codes_pixelview 0xfa177653 +drivers/media/common/ir-common ir_codes_rc5_tv 0xd9c7f010 +drivers/media/common/ir-common ir_codes_winfast 0x89cc1189 +drivers/media/common/ir-common ir_decode_biphase 0x43c89ef4 +drivers/media/common/ir-common ir_decode_pulsedistance 0x2456e513 +drivers/media/common/ir-common ir_dump_samples 0x6d6511e7 +drivers/media/common/ir-common ir_extract_bits 0x1cb148f5 +drivers/media/common/ir-common ir_input_init 0xa2d15cdc +drivers/media/common/ir-common ir_input_keydown 0x1722d725 +drivers/media/common/ir-common ir_input_nokey 0x5981cdff +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x489a5dd1 +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0x86fcb9f3 +drivers/media/common/saa7146 saa7146_i2c_transfer 0x5cd0f2b0 +drivers/media/common/saa7146 saa7146_pgtable_alloc 0x21e97537 +drivers/media/common/saa7146 saa7146_pgtable_build_single 0x90f12731 +drivers/media/common/saa7146 saa7146_pgtable_free 0xcdaa19c2 +drivers/media/common/saa7146 saa7146_register_extension 0xf1f43940 +drivers/media/common/saa7146 saa7146_setgpio 0xb94f5419 +drivers/media/common/saa7146 saa7146_unregister_extension 0xa5394bbf +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0x36f591a9 +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0x03d7553d +drivers/media/common/saa7146_vv saa7146_register_device 0x24c68b30 +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0x9a41129d +drivers/media/common/saa7146_vv saa7146_start_preview 0x663ca65a +drivers/media/common/saa7146_vv saa7146_stop_preview 0x2c88503b +drivers/media/common/saa7146_vv saa7146_unregister_device 0x53747f20 +drivers/media/common/saa7146_vv saa7146_vv_init 0xe5a2cf08 +drivers/media/common/saa7146_vv saa7146_vv_release 0xaae3bc10 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0x7db1ef9a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0xa5665244 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0x8e835c83 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0x9672d91c +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0x5b71eec4 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0x6bfad27f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0x378f0531 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0x37a5119b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0xa4624997 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0x33e2b138 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0x04a9ec10 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0x54fc91e6 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0xc9cac550 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0x8250e820 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0xbdc78498 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0xb5c13a8d +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0x6db9b213 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0x30d0369b +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0x57181f4d +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0x835e3846 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0x901f6356 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0xb8163adf +drivers/media/dvb/bt8xx/bt878 bt878 0x0de57c34 +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0x94eec99b +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0xf3c081e5 +drivers/media/dvb/bt8xx/bt878 bt878_stop 0xcaf626f9 +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0x7fb1ce93 +drivers/media/dvb/bt8xx/dst dst_check_sum 0xe94b8c9c +drivers/media/dvb/bt8xx/dst dst_comm_init 0x227a97c5 +drivers/media/dvb/bt8xx/dst dst_command 0x480e26a2 +drivers/media/dvb/bt8xx/dst dst_error_bailout 0xba7d2750 +drivers/media/dvb/bt8xx/dst dst_error_recovery 0x6288beea +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0x69fae608 +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0x4149b81a +drivers/media/dvb/bt8xx/dst dst_pio_disable 0x3f7c54e0 +drivers/media/dvb/bt8xx/dst dst_pio_enable 0x290b18cf +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0x13d6a1b1 +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0xd9639d97 +drivers/media/dvb/bt8xx/dst rdc_reset_state 0x91cda520 +drivers/media/dvb/bt8xx/dst read_dst 0x05cc5db9 +drivers/media/dvb/bt8xx/dst write_dst 0x78f326e0 +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0x05b48c89 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0x16bada3e +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0xe096a348 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0x49fa1cab +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0xee54acee +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0x02d7d76b +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0x5b5bdf86 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0x50618c21 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0x9bd29cda +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0x8b9adac5 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x148db9c8 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0xbbf0ad9b +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0x386a238f +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x80e3832d +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x36c8ea1f +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0x217ce66c +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0x484a360d +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0xafb53c09 +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0x4945aeb0 +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0x1ce49387 +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0xecd41750 +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0xbeb92130 +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0xa0e4477d +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0x7e451d7e +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0x33d9fb7e +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0xe4efd655 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0x7992ef6b +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x89d21ab3 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0x78bba99a +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0x403a8dfa +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0x9ce31215 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0xb582da47 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0xc4f2ea77 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0x2cab119a +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0x67f4542a +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0xebda4460 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0x50e4381c +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0xeb0b1094 +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0x8b49a23f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0xa960d373 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0x761e566d +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0x63edd00f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0x03ff9f7c +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0x3171eaba +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0x8deb1906 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0x9aead73e +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0x2fa12d68 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0x73f8ee0d +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0x118ff867 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0x2f7d6b8b +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0x97e03b0e +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0x545711f8 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0xb28a248e +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0x64ffb7fd +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0x53723708 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0xd4d3dddc +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0x29fe7f93 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0x62878de6 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0x5e0b56e3 +drivers/media/dvb/frontends/at76c651 at76c651_attach 0xa7b272ef +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0xb2a7249a +drivers/media/dvb/frontends/cx22700 cx22700_attach 0x30c6341e +drivers/media/dvb/frontends/cx22702 cx22702_attach 0x33702d95 +drivers/media/dvb/frontends/cx24110 cx24110_attach 0xd27ee5af +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0xb6548a3f +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0x17b0763c +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0xe762d459 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x05f13eee +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0xda7829d4 +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0x95ac449d +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0xeb0387fd +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x02689b7f +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0x5b259391 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x7a0ed9bb +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0xbf98157e +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xd15aca20 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xfdd5e650 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x2a4f5718 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xc95be182 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x708f579e +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0xe39c77c8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0x12284643 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0xf1d4150d +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0xd5d22e56 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0xccc91f17 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xaddc7276 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x96cce305 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xcbbd68de +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x13856c44 +drivers/media/dvb/frontends/l64781 l64781_attach 0x9f02d223 +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0x0c2e3e9a +drivers/media/dvb/frontends/mt312 mt312_attach 0xd6a35136 +drivers/media/dvb/frontends/mt312 vp310_attach 0x154a995a +drivers/media/dvb/frontends/mt352 mt352_attach 0x59e101b2 +drivers/media/dvb/frontends/mt352 mt352_write 0x00573b2a +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0x9d2a17fc +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x8d8b4783 +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0xb30d84c0 +drivers/media/dvb/frontends/or51132 or51132_attach 0x70407ad6 +drivers/media/dvb/frontends/or51211 or51211_attach 0xde5d6fd4 +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0x1e454c1b +drivers/media/dvb/frontends/sp8870 sp8870_attach 0xc1893032 +drivers/media/dvb/frontends/sp887x sp887x_attach 0x66617124 +drivers/media/dvb/frontends/stv0297 stv0297_attach 0xc3ffc8ae +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0x36df7091 +drivers/media/dvb/frontends/stv0299 stv0299_attach 0xc689a632 +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0xd3ad0470 +drivers/media/dvb/frontends/tda10021 tda10021_attach 0x8015f80d +drivers/media/dvb/frontends/tda1004x tda10045_attach 0x041be283 +drivers/media/dvb/frontends/tda1004x tda10046_attach 0x42e95207 +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0x1bbcb33f +drivers/media/dvb/frontends/tda8083 tda8083_attach 0xc71c8e37 +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0xc778f868 +drivers/media/dvb/frontends/ves1820 ves1820_attach 0x2781ddbc +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0x809e7466 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0x00804ccf +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0xbf1f6353 +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0x5a0c6606 +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0x6a427379 +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0xf6c703a2 +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0x4c1052df +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0x11cd7aa4 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0xed0b6f34 +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0xc6cc6efe +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0xd518b9f3 +drivers/media/video/btcx-risc btcx_riscmem_free 0x0a7d61d7 +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x0e0f3e97 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0x83c09263 +drivers/media/video/bttv bttv_gpio_bits 0x7d3174d2 +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0x59e4e5a3 +drivers/media/video/bttv bttv_gpio_read 0x08dad541 +drivers/media/video/bttv bttv_gpio_write 0x78e267eb +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0xf9ce23e5 +drivers/media/video/bttv bttv_sub_register 0x206b1694 +drivers/media/video/bttv bttv_sub_unregister 0x24acee99 +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0x7c2d81a4 +drivers/media/video/cpia cpia_unregister_camera 0x9d628868 +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0xc5444ffc +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0xb75e91fa +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0x75f62f52 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0x6ae02f42 +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0xd0ee23d9 +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0x7c6faf34 +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0x28e452e0 +drivers/media/video/cx88/cx8802 cx8802_fini_common 0x42883805 +drivers/media/video/cx88/cx8802 cx8802_init_common 0x1c0011d3 +drivers/media/video/cx88/cx8802 cx8802_resume_common 0xf62db77d +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0x6804d817 +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x4e6954bf +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0xc100643b +drivers/media/video/cx88/cx88xx cx88_card_list 0xf1d6ce83 +drivers/media/video/cx88/cx88xx cx88_card_setup 0xfbcdae70 +drivers/media/video/cx88/cx88xx cx88_core_get 0x0747de4a +drivers/media/video/cx88/cx88xx cx88_core_irq 0xe63523ed +drivers/media/video/cx88/cx88xx cx88_core_put 0x2ce940c4 +drivers/media/video/cx88/cx88xx cx88_free_buffer 0xc5ab2820 +drivers/media/video/cx88/cx88xx cx88_get_stereo 0xc9ca0a39 +drivers/media/video/cx88/cx88xx cx88_i2c_init 0x3c25ac27 +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0xe48f1989 +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x777b6d7f +drivers/media/video/cx88/cx88xx cx88_reset 0xca39004f +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0xfb4709a1 +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0xad8af06a +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0x6ef9c286 +drivers/media/video/cx88/cx88xx cx88_set_scale 0xa2e269a2 +drivers/media/video/cx88/cx88xx cx88_set_stereo 0xe198776f +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0xf42648da +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0x863c4018 +drivers/media/video/cx88/cx88xx cx88_shutdown 0xa2bdf4c4 +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0xc132411a +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0x4adbc8ab +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x9b140fff +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0xa78de459 +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0x94b0eaa4 +drivers/media/video/cx88/cx88xx cx88_subids 0x6b626846 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0x381190f6 +drivers/media/video/cx88/cx88xx cx88_wakeup 0x7b24dfe2 +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0x36db4dd7 +drivers/media/video/saa7134/saa7134 dmasound_exit 0x85682578 +drivers/media/video/saa7134/saa7134 dmasound_init 0xc5262b72 +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0x389c8b47 +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0xca5c84c3 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0x8b5bff1e +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0x7f6cd4d7 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0xd80f9422 +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0xff9aa188 +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0x8f066ea6 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0x52f7af5c +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0x6ba2f565 +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0x6bae7ecd +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0xa08fde0f +drivers/media/video/tveeprom tveeprom_read 0x19641f7d +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0x5853e6d1 +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x9c7de443 +drivers/media/video/v4l2-common v4l2_prio_check 0x2f639468 +drivers/media/video/v4l2-common v4l2_prio_close 0x95284709 +drivers/media/video/v4l2-common v4l2_prio_init 0xbecd2858 +drivers/media/video/v4l2-common v4l2_prio_max 0x1dcaa0c8 +drivers/media/video/v4l2-common v4l2_prio_open 0x76ba9a9a +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0x33b3b664 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0xe061672d +drivers/media/video/video-buf videobuf_dma_init 0xf194c405 +drivers/media/video/video-buf videobuf_dma_init_kernel 0xd27bb9b2 +drivers/media/video/video-buf videobuf_dma_init_overlay 0xaba33049 +drivers/media/video/video-buf videobuf_dma_init_user 0xc4390bdc +drivers/media/video/video-buf videobuf_dma_pci_map 0x1b35189e +drivers/media/video/video-buf videobuf_dma_pci_sync 0x408dafc5 +drivers/media/video/video-buf videobuf_dma_pci_unmap 0x89d05334 +drivers/media/video/video-buf videobuf_dqbuf 0x49f11c50 +drivers/media/video/video-buf videobuf_iolock 0x3b489074 +drivers/media/video/video-buf videobuf_mmap_free 0xb6a2674d +drivers/media/video/video-buf videobuf_mmap_mapper 0xc7800abb +drivers/media/video/video-buf videobuf_mmap_setup 0xa2f95468 +drivers/media/video/video-buf videobuf_next_field 0xde2d0eed +drivers/media/video/video-buf videobuf_poll_stream 0x00af7599 +drivers/media/video/video-buf videobuf_qbuf 0x3e69db64 +drivers/media/video/video-buf videobuf_querybuf 0x296f525b +drivers/media/video/video-buf videobuf_queue_cancel 0x80ec00e2 +drivers/media/video/video-buf videobuf_queue_init 0x50272890 +drivers/media/video/video-buf videobuf_queue_is_busy 0x3ce0bab9 +drivers/media/video/video-buf videobuf_read_one 0xdcfb365f +drivers/media/video/video-buf videobuf_read_start 0x729f63cb +drivers/media/video/video-buf videobuf_read_stop 0xab7b73c1 +drivers/media/video/video-buf videobuf_read_stream 0xe156e307 +drivers/media/video/video-buf videobuf_reqbufs 0x15c8a457 +drivers/media/video/video-buf videobuf_status 0x3c7ccd78 +drivers/media/video/video-buf videobuf_streamoff 0x46f531aa +drivers/media/video/video-buf videobuf_streamon 0x426befa7 +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0x54a2682b +drivers/media/video/video-buf videobuf_waiton 0x12488884 +drivers/media/video/video-buf-dvb videobuf_dvb_register 0xdc8ca703 +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0x91ef8e66 +drivers/media/video/videocodec videocodec_attach 0x99195c8a +drivers/media/video/videocodec videocodec_detach 0xf61b8714 +drivers/media/video/videocodec videocodec_register 0xf15059e3 +drivers/media/video/videocodec videocodec_unregister 0x33e7fd8e +drivers/media/video/videodev video_devdata 0xba64aab1 +drivers/media/video/videodev video_device_alloc 0x0ec9c7a4 +drivers/media/video/videodev video_device_release 0x955248c1 +drivers/media/video/videodev video_exclusive_open 0x0baa7d86 +drivers/media/video/videodev video_exclusive_release 0x4a21e60d +drivers/media/video/videodev video_register_device 0x1d1e2597 +drivers/media/video/videodev video_unregister_device 0xa4f37db4 +drivers/media/video/videodev video_usercopy 0x6aa008aa +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0xd938d2c9 +drivers/message/fusion/mptbase mpt_HardResetHandler 0xe9e8af7e +drivers/message/fusion/mptbase mpt_add_sge 0x105d4f47 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0x065a4aae +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0x7ae6267b +drivers/message/fusion/mptbase mpt_attach 0x6315c6d0 +drivers/message/fusion/mptbase mpt_config 0xab94dd96 +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0x787eef56 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0xdf783470 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x10fa99ae +drivers/message/fusion/mptbase mpt_findImVolumes 0x33dcef6b +drivers/message/fusion/mptbase mpt_free_fw_memory 0x9e32236d +drivers/message/fusion/mptbase mpt_free_msg_frame 0xd64463e8 +drivers/message/fusion/mptbase mpt_get_msg_frame 0xd2c8a50d +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0xcc744fb8 +drivers/message/fusion/mptbase mpt_proc_root_dir 0x5d29e992 +drivers/message/fusion/mptbase mpt_put_msg_frame 0x83a02267 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x3ed1ec8b +drivers/message/fusion/mptbase mpt_register 0x3f572ed3 +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0xb3ca6d28 +drivers/message/fusion/mptbase mpt_resume 0x2243b26e +drivers/message/fusion/mptbase mpt_send_handshake_request 0x21c20ae3 +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0x316aa79f +drivers/message/fusion/mptbase mpt_toolbox 0x3244ad2e +drivers/message/fusion/mptbase mpt_verify_adapter 0x6bf374c6 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x8fd3b133 +drivers/message/fusion/mptscsih mptscsih_abort 0x3f4b96d8 +drivers/message/fusion/mptscsih mptscsih_bios_param 0x80e6b1aa +drivers/message/fusion/mptscsih mptscsih_bus_reset 0x705d946e +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x3cdc9821 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0x2cef08de +drivers/message/fusion/mptscsih mptscsih_event_process 0x6c1ce455 +drivers/message/fusion/mptscsih mptscsih_host_reset 0xd7b331e8 +drivers/message/fusion/mptscsih mptscsih_info 0x211db18b +drivers/message/fusion/mptscsih mptscsih_io_done 0x2cd24156 +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x4e20a9e4 +drivers/message/fusion/mptscsih mptscsih_proc_info 0xe54eed9e +drivers/message/fusion/mptscsih mptscsih_qcmd 0x923520ab +drivers/message/fusion/mptscsih mptscsih_remove 0xaaea2fee +drivers/message/fusion/mptscsih mptscsih_resume 0xbb46b3d5 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0x9eb39d67 +drivers/message/fusion/mptscsih mptscsih_shutdown 0x3179f929 +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0xa2375a17 +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x77a8ce27 +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0xf10238d8 +drivers/message/fusion/mptscsih mptscsih_suspend 0x68f41895 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0xb3a589b6 +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_cntxt_list_add 0x96296dd9 +drivers/message/i2o/i2o_core i2o_cntxt_list_get 0xa8e5c7ba +drivers/message/i2o/i2o_core i2o_cntxt_list_get_ptr 0x9c6c49f9 +drivers/message/i2o/i2o_core i2o_cntxt_list_remove 0x2eab8882 +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0xc4438ffe +drivers/message/i2o/i2o_core i2o_device_claim_release 0xee51081b +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0xef57612b +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x4e6595f1 +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x4b4aab33 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0x65f3e01d +drivers/message/i2o/i2o_core i2o_driver_register 0x11b609bf +drivers/message/i2o/i2o_core i2o_driver_unregister 0x459fa1e9 +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0xeb81c339 +drivers/message/i2o/i2o_core i2o_exec_lct_get 0xa9fad3ad +drivers/message/i2o/i2o_core i2o_find_iop 0x9ee502aa +drivers/message/i2o/i2o_core i2o_iop_find_device 0x5979bc50 +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x218feccd +drivers/message/i2o/i2o_core i2o_msg_nop 0x15280f48 +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0x5b1b7df3 +drivers/message/i2o/i2o_core i2o_parm_field_get 0xca4aafd5 +drivers/message/i2o/i2o_core i2o_parm_issue 0xd3863805 +drivers/message/i2o/i2o_core i2o_parm_table_get 0xbbd4d63b +drivers/message/i2o/i2o_core i2o_status_get 0x225daa9d +drivers/mmc/mmc_core __mmc_claim_host 0x7e323090 +drivers/mmc/mmc_core mmc_add_host 0x503e9218 +drivers/mmc/mmc_core mmc_alloc_host 0xa2e61c46 +drivers/mmc/mmc_core mmc_cleanup_queue 0x1a265a95 +drivers/mmc/mmc_core mmc_detect_change 0x26c3008b +drivers/mmc/mmc_core mmc_free_host 0xb6dcd29e +drivers/mmc/mmc_core mmc_init_queue 0xfcbea07f +drivers/mmc/mmc_core mmc_queue_resume 0x724dd646 +drivers/mmc/mmc_core mmc_queue_suspend 0x7097bdfe +drivers/mmc/mmc_core mmc_register_driver 0xba3b1d85 +drivers/mmc/mmc_core mmc_release_host 0x32a17300 +drivers/mmc/mmc_core mmc_remove_host 0xc66605ff +drivers/mmc/mmc_core mmc_request_done 0x41d281ed +drivers/mmc/mmc_core mmc_resume_host 0xf9079950 +drivers/mmc/mmc_core mmc_start_request 0x7717c08b +drivers/mmc/mmc_core mmc_suspend_host 0xdd655ec2 +drivers/mmc/mmc_core mmc_unregister_driver 0xc5d920a8 +drivers/mmc/mmc_core mmc_wait_for_app_cmd 0xb3526b57 +drivers/mmc/mmc_core mmc_wait_for_cmd 0x42bd4fe6 +drivers/mmc/mmc_core mmc_wait_for_req 0x55f5edae +drivers/mtd/chips/cfi_util cfi_fixup 0x930a3199 +drivers/mtd/chips/cfi_util cfi_read_pri 0x5b684bfe +drivers/mtd/chips/cfi_util cfi_varsize_frob 0xdf0fc1b6 +drivers/mtd/chips/chipreg do_map_probe 0x08692267 +drivers/mtd/chips/chipreg map_destroy 0xb3ec4df6 +drivers/mtd/chips/chipreg register_mtd_chip_driver 0xcc140224 +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0x8429a4ab +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0x41220436 +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0x37d072df +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0xa05728d0 +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0xf6fc992c +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0x09c311b9 +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0x68057eae +drivers/mtd/mtdconcat mtd_concat_create 0xb7301269 +drivers/mtd/mtdconcat mtd_concat_destroy 0xbe7fc047 +drivers/mtd/mtdcore add_mtd_device 0x4dfb735e +drivers/mtd/mtdcore default_mtd_readv 0xb94b0e01 +drivers/mtd/mtdcore default_mtd_writev 0x2cf8ae55 +drivers/mtd/mtdcore del_mtd_device 0x6dad15bd +drivers/mtd/mtdcore get_mtd_device 0x600f0270 +drivers/mtd/mtdcore mtd_table 0x7ecbe850 +drivers/mtd/mtdcore mtd_table_mutex 0x30e4369c +drivers/mtd/mtdcore put_mtd_device 0x86628cfd +drivers/mtd/mtdcore register_mtd_user 0x6cb0ec26 +drivers/mtd/mtdcore unregister_mtd_user 0xadf086a7 +drivers/mtd/mtdpart add_mtd_partitions 0x81728e24 +drivers/mtd/mtdpart del_mtd_partitions 0xe3a5dc01 +drivers/mtd/mtdpart deregister_mtd_parser 0x6e60fa54 +drivers/mtd/mtdpart mtd_erase_callback 0x0a29e2f1 +drivers/mtd/mtdpart parse_mtd_partitions 0x7a8d92ca +drivers/mtd/mtdpart register_mtd_parser 0x807ee3e1 +drivers/mtd/nand/nand nand_default_bbt 0x1bd5a038 +drivers/mtd/nand/nand nand_release 0xf6e2bb4b +drivers/mtd/nand/nand nand_scan 0x9006ade2 +drivers/mtd/nand/nand nand_scan_bbt 0xaf18a6a2 +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0xd6cb123a +drivers/mtd/onenand/onenand onenand_release 0x32a29662 +drivers/mtd/onenand/onenand onenand_scan 0x59b23c17 +drivers/mtd/onenand/onenand onenand_scan_bbt 0xa55d382d +drivers/net/8390 NS8390_init 0x89fbda96 +drivers/net/8390 __alloc_ei_netdev 0x4a064701 +drivers/net/8390 ei_close 0xf390c919 +drivers/net/8390 ei_interrupt 0x4ed4936f +drivers/net/8390 ei_open 0x1ff1ab48 +drivers/net/8390 ei_poll 0xc73e6154 +drivers/net/arcnet/arcnet alloc_arcdev 0xaee51cc7 +drivers/net/arcnet/arcnet arc_bcast_proto 0xae863eff +drivers/net/arcnet/arcnet arc_proto_default 0x010bec72 +drivers/net/arcnet/arcnet arc_proto_map 0xdd70a4cc +drivers/net/arcnet/arcnet arc_proto_null 0x83661cac +drivers/net/arcnet/arcnet arc_raw_proto 0x20434a6b +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0x51fd033d +drivers/net/arcnet/arcnet arcnet_unregister_proto 0xaba8419e +drivers/net/arcnet/com20020 com20020_check 0xc009f683 +drivers/net/arcnet/com20020 com20020_found 0x065e8b7a +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0x8481434c +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0xab222dd6 +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0xde47edb9 +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0x6075718e +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0xab30828a +drivers/net/irda/sir-dev irda_register_dongle 0x2440140a +drivers/net/irda/sir-dev irda_unregister_dongle 0x9a16d4ce +drivers/net/irda/sir-dev sirdev_get_instance 0x562ff604 +drivers/net/irda/sir-dev sirdev_put_instance 0xd752f430 +drivers/net/irda/sir-dev sirdev_raw_read 0x14b6b2b3 +drivers/net/irda/sir-dev sirdev_raw_write 0x7e64635d +drivers/net/irda/sir-dev sirdev_receive 0x2eb93845 +drivers/net/irda/sir-dev sirdev_set_dongle 0xd51805dd +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0xb9e78a02 +drivers/net/irda/sir-dev sirdev_write_complete 0xe5dd9154 +drivers/net/mii generic_mii_ioctl 0x3c2a3f72 +drivers/net/mii mii_check_gmii_support 0x09fbd4b1 +drivers/net/mii mii_check_link 0x273b02c0 +drivers/net/mii mii_check_media 0xcb060371 +drivers/net/mii mii_ethtool_gset 0xcfbc0031 +drivers/net/mii mii_ethtool_sset 0xc7a692cb +drivers/net/mii mii_link_ok 0x07cf9102 +drivers/net/mii mii_nway_restart 0x3a12d3e7 +drivers/net/phy/libphy genphy_config_advert 0xa26a4882 +drivers/net/phy/libphy genphy_config_aneg 0xc5571a0b +drivers/net/phy/libphy genphy_read_status 0x32312004 +drivers/net/phy/libphy mdiobus_register 0xb8f920de +drivers/net/phy/libphy mdiobus_unregister 0xefbb1ae2 +drivers/net/phy/libphy phy_attach 0x15a8be32 +drivers/net/phy/libphy phy_connect 0x6c455f32 +drivers/net/phy/libphy phy_detach 0x04477d62 +drivers/net/phy/libphy phy_disable_interrupts 0x92049b7b +drivers/net/phy/libphy phy_disconnect 0x65530e05 +drivers/net/phy/libphy phy_driver_register 0x619cc537 +drivers/net/phy/libphy phy_driver_unregister 0x55cb16f3 +drivers/net/phy/libphy phy_enable_interrupts 0x9e5edf62 +drivers/net/phy/libphy phy_print_status 0x02880cd1 +drivers/net/phy/libphy phy_read 0x39722af6 +drivers/net/phy/libphy phy_sanitize_settings 0xbac1252d +drivers/net/phy/libphy phy_start 0x5658418c +drivers/net/phy/libphy phy_start_aneg 0xba49ab85 +drivers/net/phy/libphy phy_start_interrupts 0xbaa3f1ed +drivers/net/phy/libphy phy_stop 0xbc5027d1 +drivers/net/phy/libphy phy_stop_interrupts 0x391a4e24 +drivers/net/phy/libphy phy_write 0xd11bab7c +drivers/net/ppp_generic ppp_channel_index 0xe6b81988 +drivers/net/ppp_generic ppp_input 0xa788f96b +drivers/net/ppp_generic ppp_input_error 0x8fa2a833 +drivers/net/ppp_generic ppp_output_wakeup 0x71011153 +drivers/net/ppp_generic ppp_register_channel 0xdd0a42f3 +drivers/net/ppp_generic ppp_register_compressor 0xa310524f +drivers/net/ppp_generic ppp_unit_number 0x3fa7f1d9 +drivers/net/ppp_generic ppp_unregister_channel 0xc35f5908 +drivers/net/ppp_generic ppp_unregister_compressor 0x6d8c0da4 +drivers/net/pppox pppox_unbind_sock 0x301407ff +drivers/net/pppox register_pppox_proto 0x83cdf5fd +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x76135e6c +drivers/net/slhc slhc_free 0x2894cfb0 +drivers/net/slhc slhc_init 0x2e0e927f +drivers/net/slhc slhc_remember 0x0bc55868 +drivers/net/slhc slhc_toss 0xf89e3455 +drivers/net/slhc slhc_uncompress 0x3bc1319e +drivers/net/sungem_phy mii_phy_probe 0x8e938ecb +drivers/net/tokenring/tms380tr tms380tr_close 0xdcfe01c3 +drivers/net/tokenring/tms380tr tms380tr_interrupt 0xc5847c91 +drivers/net/tokenring/tms380tr tms380tr_open 0x1e45f674 +drivers/net/tokenring/tms380tr tms380tr_wait 0xd2328794 +drivers/net/tokenring/tms380tr tmsdev_init 0xc04de62f +drivers/net/tokenring/tms380tr tmsdev_term 0x3618920d +drivers/net/wan/cycx_drv cycx_down 0x66a4c4e6 +drivers/net/wan/cycx_drv cycx_exec 0xfe7cd576 +drivers/net/wan/cycx_drv cycx_intr 0x38da4725 +drivers/net/wan/cycx_drv cycx_peek 0x968458a6 +drivers/net/wan/cycx_drv cycx_poke 0xb6f383de +drivers/net/wan/cycx_drv cycx_setup 0x62be23ea +drivers/net/wan/hdlc alloc_hdlcdev 0x7fe3e22e +drivers/net/wan/hdlc hdlc_close 0xdf032013 +drivers/net/wan/hdlc hdlc_ioctl 0xd5c726d1 +drivers/net/wan/hdlc hdlc_open 0x53b61180 +drivers/net/wan/hdlc hdlc_set_carrier 0x8402426c +drivers/net/wan/hdlc register_hdlc_device 0x3b703faf +drivers/net/wan/hdlc unregister_hdlc_device 0xd3c22a59 +drivers/net/wan/syncppp sppp_attach 0xdd727155 +drivers/net/wan/syncppp sppp_close 0xd81a5d21 +drivers/net/wan/syncppp sppp_detach 0x55d6280a +drivers/net/wan/syncppp sppp_do_ioctl 0x47951fac +drivers/net/wan/syncppp sppp_open 0x266c1271 +drivers/net/wan/syncppp sppp_reopen 0xd2f243b0 +drivers/net/wireless/airo init_airo_card 0x3c5d6248 +drivers/net/wireless/airo reset_airo_card 0x346d5f8b +drivers/net/wireless/airo stop_airo_card 0x381f0739 +drivers/net/wireless/atmel atmel_open 0xad5bc521 +drivers/net/wireless/atmel init_atmel_card 0x1b4cf2ca +drivers/net/wireless/atmel stop_atmel_card 0x63f17d15 +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0xd56f41a4 +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0xddf52085 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0xd4eb2608 +drivers/net/wireless/hostap/hostap hostap_add_interface 0x5615d705 +drivers/net/wireless/hostap/hostap hostap_add_sta 0x83ed0074 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0xfa695dc2 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0x67f789dd +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0xbdaec619 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0x277850fa +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0x8300a671 +drivers/net/wireless/hostap/hostap hostap_get_porttype 0x8164a758 +drivers/net/wireless/hostap/hostap hostap_get_stats 0x3ead0717 +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0x2e75165e +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x4bbe9191 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x719c2295 +drivers/net/wireless/hostap/hostap hostap_info_init 0xebc73b4c +drivers/net/wireless/hostap/hostap hostap_info_process 0x45d64757 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0xe5e1a609 +drivers/net/wireless/hostap/hostap hostap_init_data 0x87ce3255 +drivers/net/wireless/hostap/hostap hostap_init_proc 0x204d3961 +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0x90052127 +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x1abb360c +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0x81d8b59e +drivers/net/wireless/hostap/hostap hostap_proc 0x250f998f +drivers/net/wireless/hostap/hostap hostap_remove_interface 0x34e63bce +drivers/net/wireless/hostap/hostap hostap_remove_proc 0x6f9fca40 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0xf4274af0 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0x1fe403c2 +drivers/net/wireless/hostap/hostap hostap_set_encryption 0x30bc232d +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0xf54b671f +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0x001399a0 +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0x8c4d27dd +drivers/net/wireless/hostap/hostap hostap_set_string 0x3e361ff6 +drivers/net/wireless/hostap/hostap hostap_set_word 0xb231cb98 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0xb937f282 +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0xaeeebc45 +drivers/net/wireless/hostap/hostap hostap_update_rates 0x263b0b4d +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x3648102e +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x718fd9a2 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x63712183 +drivers/net/wireless/orinoco __orinoco_down 0x7216aa89 +drivers/net/wireless/orinoco __orinoco_up 0xf0cfa84e +drivers/net/wireless/orinoco alloc_orinocodev 0x6b8dee37 +drivers/net/wireless/orinoco free_orinocodev 0xb29dd9ec +drivers/net/wireless/orinoco orinoco_interrupt 0x6634d729 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x9b2b043b +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xbf831e00 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x4829d1c0 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0x6553d9d9 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x82c4a3bb +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0xee1ecf9d +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x9bb64e49 +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0x9336e7a3 +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0xca94ff59 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0xc94b813f +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x87e41c49 +drivers/net/wireless/prism54_softmac/islsm register_islsm 0xbbeddbb8 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0x1102191f +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0xb0fa5b3b +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0xf136c33e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0x4398b1ac +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0x5f307488 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0xaab0e567 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x0a5ade54 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0xd9d44184 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0xace56bd6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0x7aa715a6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0x5668557c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0xc56a8508 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0xb4d90059 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x47d6325d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0x16b239a4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0x99e1b9aa +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0xa122e8ca +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0x25f7ada2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x99b142ce +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0xdbf040e3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x5a55a4c7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0x88f6068e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0x20d44e02 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x017e30da +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x7668766e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x697f9d50 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0xf813066a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0xd1de9b58 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0xe63d27a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0x203be28a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0x8afa5313 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0x892d3dff +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0xc2c35175 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0xc7877893 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0x8d98446b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0x1cf4df51 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x57d22955 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0xc4dc3bb1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0xa0a8993c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x6e1d8a28 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x603b0d73 +drivers/parport/parport parport_announce_port 0x9bc9b607 +drivers/parport/parport parport_claim 0x992807bc +drivers/parport/parport parport_claim_or_block 0x58379ecc +drivers/parport/parport parport_find_base 0x64b74e2a +drivers/parport/parport parport_find_number 0xca0b001a +drivers/parport/parport parport_get_port 0x474d7ccd +drivers/parport/parport parport_ieee1284_ecp_read_data 0x8c454b2e +drivers/parport/parport parport_ieee1284_ecp_write_addr 0x871ef75e +drivers/parport/parport parport_ieee1284_ecp_write_data 0xe5440f68 +drivers/parport/parport parport_ieee1284_epp_read_addr 0xaa48fbcc +drivers/parport/parport parport_ieee1284_epp_read_data 0xc88b2b8d +drivers/parport/parport parport_ieee1284_epp_write_addr 0xbbfaa827 +drivers/parport/parport parport_ieee1284_epp_write_data 0xd9a05011 +drivers/parport/parport parport_ieee1284_interrupt 0x94f45aa3 +drivers/parport/parport parport_ieee1284_read_byte 0xe65a5c70 +drivers/parport/parport parport_ieee1284_read_nibble 0x05512ad0 +drivers/parport/parport parport_ieee1284_write_compat 0xb300a6df +drivers/parport/parport parport_negotiate 0x787ee55d +drivers/parport/parport parport_put_port 0xe8736ed5 +drivers/parport/parport parport_read 0x9a765b22 +drivers/parport/parport parport_register_device 0x393a5271 +drivers/parport/parport parport_register_driver 0xa70e2d87 +drivers/parport/parport parport_register_port 0x90b819ef +drivers/parport/parport parport_release 0xacbc458e +drivers/parport/parport parport_remove_port 0x247d7ecb +drivers/parport/parport parport_set_timeout 0x3f97057c +drivers/parport/parport parport_unregister_device 0x6c1304f3 +drivers/parport/parport parport_unregister_driver 0x51a89a2e +drivers/parport/parport parport_wait_event 0x53de30c1 +drivers/parport/parport parport_wait_peripheral 0x30c4f222 +drivers/parport/parport parport_write 0xc6f51c64 +drivers/parport/parport_pc parport_pc_probe_port 0xe29fab66 +drivers/parport/parport_pc parport_pc_unregister_port 0x613dd2a8 +drivers/pci/hotplug/acpiphp acpiphp_register_attention 0xd55ac5f3 +drivers/pci/hotplug/acpiphp acpiphp_unregister_attention 0x6b58c37d +drivers/pci/hotplug/pci_hotplug cpci_hp_register_bus 0x798dee11 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_controller 0x2882ddba +drivers/pci/hotplug/pci_hotplug cpci_hp_start 0x6a8441be +drivers/pci/hotplug/pci_hotplug cpci_hp_stop 0x94ef4d05 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_bus 0x3b975df1 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_controller 0x36020f67 +drivers/pci/hotplug/pci_hotplug pci_hotplug_slots_subsys 0x374b3ae7 +drivers/pci/hotplug/pci_hotplug pci_hp_change_slot_info 0x0e53df93 +drivers/pci/hotplug/pci_hotplug pci_hp_deregister 0x0ea687d1 +drivers/pci/hotplug/pci_hotplug pci_hp_register 0xc8573325 +drivers/pcmcia/pcmcia cs_error 0x30765d99 +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0x9e165f59 +drivers/pcmcia/pcmcia pcmcia_deregister_client 0xfc98284f +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0xd89a9fbf +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0x77da5e43 +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0x8dd6e04c +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0xfe804b73 +drivers/pcmcia/pcmcia pcmcia_get_status 0xbbd67867 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0x8aaca2ba +drivers/pcmcia/pcmcia pcmcia_get_window 0x67797da5 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0x9e509940 +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x25537d3d +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0xb2b5e72e +drivers/pcmcia/pcmcia pcmcia_register_client 0x169d1c4a +drivers/pcmcia/pcmcia pcmcia_register_driver 0x7920c0eb +drivers/pcmcia/pcmcia pcmcia_release_configuration 0xabe92e70 +drivers/pcmcia/pcmcia pcmcia_release_io 0xd84cfc82 +drivers/pcmcia/pcmcia pcmcia_release_irq 0x50e2ef4e +drivers/pcmcia/pcmcia pcmcia_release_window 0x3527b3a0 +drivers/pcmcia/pcmcia pcmcia_request_configuration 0xe5f11ff8 +drivers/pcmcia/pcmcia pcmcia_request_io 0x2c0f2bb6 +drivers/pcmcia/pcmcia pcmcia_request_irq 0xf37faf8d +drivers/pcmcia/pcmcia pcmcia_request_window 0x8d401083 +drivers/pcmcia/pcmcia pcmcia_reset_card 0x7d198bc6 +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0x6bfc6204 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0x9f73a2ea +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0x328f833a +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x7752c992 +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0x5fedd80b +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0xc723a988 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0x025edd98 +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0x3dd226a2 +drivers/pcmcia/pcmcia_core pccard_reset_card 0x810de141 +drivers/pcmcia/pcmcia_core pccard_static_ops 0x0f86cf45 +drivers/pcmcia/pcmcia_core pccard_validate_cis 0x7dd5d413 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0x97a4f692 +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0xd40a3788 +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0x94485013 +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0xa347f676 +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0x0d217ba6 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0xfa7cf324 +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x526df02e +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0x200f1264 +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0xbed5c721 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0x23f6a648 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0x322f2633 +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0x2526bc7a +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x2d3fbe35 +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0xced5dd45 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0x5ecda4ff +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0x822d2d72 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0x0b2658a8 +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0x16792182 +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x20f384dc +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0xc1258c1e +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0x14f83832 +drivers/pcmcia/pcmcia_core release_cis_mem 0x482e49c7 +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0x0a63550c +drivers/scsi/libata __sata_phy_reset 0x8f7e978e +drivers/scsi/libata ata_acpi_bus_register 0x4eb7c257 +drivers/scsi/libata ata_acpi_exec_tfs 0xa5ad72fe +drivers/scsi/libata ata_acpi_get_timing 0xfd0d1d36 +drivers/scsi/libata ata_acpi_push_id 0x9caf08ea +drivers/scsi/libata ata_acpi_push_timing 0x489af920 +drivers/scsi/libata ata_altstatus 0x072a01e9 +drivers/scsi/libata ata_bmdma_irq_clear 0x856b46fc +drivers/scsi/libata ata_bmdma_setup 0xfdab0840 +drivers/scsi/libata ata_bmdma_start 0xc543df11 +drivers/scsi/libata ata_bmdma_status 0xe1952413 +drivers/scsi/libata ata_bmdma_stop 0x3a21629e +drivers/scsi/libata ata_bus_probe 0x9823a322 +drivers/scsi/libata ata_bus_reset 0x0e212513 +drivers/scsi/libata ata_check_status 0x92c76ad0 +drivers/scsi/libata ata_dev_classify 0x0531dcb8 +drivers/scsi/libata ata_dev_config 0x78be4182 +drivers/scsi/libata ata_dev_id_string 0x07d45a53 +drivers/scsi/libata ata_device_add 0x9258d88b +drivers/scsi/libata ata_device_resume 0x72047ab1 +drivers/scsi/libata ata_device_shutdown 0x4866651c +drivers/scsi/libata ata_device_suspend 0x544c7241 +drivers/scsi/libata ata_eng_timeout 0xdce32745 +drivers/scsi/libata ata_exec_command 0x669ce958 +drivers/scsi/libata ata_host_intr 0x4f11534c +drivers/scsi/libata ata_host_set_remove 0xeaca2312 +drivers/scsi/libata ata_host_stop 0xb0fc4ecf +drivers/scsi/libata ata_hotplug_plug 0x8825afae +drivers/scsi/libata ata_hotplug_unplug 0x0f2ea73e +drivers/scsi/libata ata_interrupt 0x4cc5af75 +drivers/scsi/libata ata_noop_dev_select 0xa12135be +drivers/scsi/libata ata_pci_device_resume 0xd45c3c31 +drivers/scsi/libata ata_pci_device_suspend 0x04105a13 +drivers/scsi/libata ata_pci_host_stop 0x030942a1 +drivers/scsi/libata ata_pci_init_native_mode 0x5254b05b +drivers/scsi/libata ata_pci_init_one 0x4225e1d0 +drivers/scsi/libata ata_pci_remove_one 0x14ecf134 +drivers/scsi/libata ata_port_disable 0xdf10eae1 +drivers/scsi/libata ata_port_probe 0x92f85fc7 +drivers/scsi/libata ata_port_start 0xcbd0088a +drivers/scsi/libata ata_port_stop 0x18015b40 +drivers/scsi/libata ata_qc_complete 0xb88e9984 +drivers/scsi/libata ata_qc_issue_prot 0x3492a6fd +drivers/scsi/libata ata_qc_prep 0xf030b403 +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0x97fa82b2 +drivers/scsi/libata ata_scsi_device_shutdown 0x3291fefc +drivers/scsi/libata ata_scsi_device_suspend 0x54d65168 +drivers/scsi/libata ata_scsi_error 0x35bddd64 +drivers/scsi/libata ata_scsi_ioctl 0x93b4352e +drivers/scsi/libata ata_scsi_queuecmd 0xa35adee8 +drivers/scsi/libata ata_scsi_release 0xb2b0c0a7 +drivers/scsi/libata ata_scsi_simulate 0xf9b7308d +drivers/scsi/libata ata_scsi_slave_config 0xf1ebec7d +drivers/scsi/libata ata_sg_init 0xed923b80 +drivers/scsi/libata ata_sg_init_one 0xa34408f4 +drivers/scsi/libata ata_std_bios_param 0x2c995339 +drivers/scsi/libata ata_std_dev_select 0xf4843658 +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0x0067df75 +drivers/scsi/libata ata_tf_load 0x196bf9ca +drivers/scsi/libata ata_tf_read 0xf7389cb2 +drivers/scsi/libata ata_tf_to_fis 0x28177a3f +drivers/scsi/libata ata_timing_compute 0xf6f94640 +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata do_drive_get_GTF 0x521210b0 +drivers/scsi/libata do_drive_set_taskfiles 0xd452cb63 +drivers/scsi/libata pci_test_config_bits 0x9a84b2c2 +drivers/scsi/libata sata_phy_reset 0x52912e9c +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x1953d737 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0xec312914 +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x3160009c +drivers/scsi/qlogicfas408 qlogicfas408_abort 0xabb994f5 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0x7f07a797 +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0x49f47643 +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0xe591b0f6 +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x6af07c89 +drivers/scsi/qlogicfas408 qlogicfas408_info 0x0b97438f +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0xf8a061a4 +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0x4fbf30ee +drivers/scsi/raid_class raid_class_release 0x388df916 +drivers/scsi/raid_class raid_component_add 0xcfd83d35 +drivers/scsi/sas/sas_class sas_register_ha 0xb0b71abc +drivers/scsi/sas/sas_class sas_unregister_ha 0x341ea732 +drivers/scsi/scsi_mod __scsi_add_device 0xb025e8f1 +drivers/scsi/scsi_mod __scsi_device_lookup 0x42e13712 +drivers/scsi/scsi_mod __scsi_device_lookup_by_target 0x1aa1ead7 +drivers/scsi/scsi_mod __scsi_iterate_devices 0xe9f8621a +drivers/scsi/scsi_mod __scsi_print_command 0xfef96e23 +drivers/scsi/scsi_mod __scsi_print_sense 0x69d38ed9 +drivers/scsi/scsi_mod int_to_scsilun 0xea10212a +drivers/scsi/scsi_mod scsi_add_device 0x644165a8 +drivers/scsi/scsi_mod scsi_add_host 0x33b96898 +drivers/scsi/scsi_mod scsi_adjust_queue_depth 0xb8beb414 +drivers/scsi/scsi_mod scsi_allocate_request 0x70931426 +drivers/scsi/scsi_mod scsi_bios_ptable 0xe8a5fced +drivers/scsi/scsi_mod scsi_block_requests 0x61fca9bc +drivers/scsi/scsi_mod scsi_block_when_processing_errors 0xaefccb55 +drivers/scsi/scsi_mod scsi_bus_type 0x8b99780e +drivers/scsi/scsi_mod scsi_calculate_bounce_limit 0xf995cbba +drivers/scsi/scsi_mod scsi_command_normalize_sense 0x5ad26af3 +drivers/scsi/scsi_mod scsi_device_cancel 0x76d950de +drivers/scsi/scsi_mod scsi_device_get 0x0c064178 +drivers/scsi/scsi_mod scsi_device_lookup 0xee4fc1b2 +drivers/scsi/scsi_mod scsi_device_lookup_by_target 0xa2a8918e +drivers/scsi/scsi_mod scsi_device_put 0xd387fb03 +drivers/scsi/scsi_mod scsi_device_quiesce 0x8324203b +drivers/scsi/scsi_mod scsi_device_resume 0xf2e4bd38 +drivers/scsi/scsi_mod scsi_device_set_state 0x5c6998c5 +drivers/scsi/scsi_mod scsi_device_types 0x6df713c9 +drivers/scsi/scsi_mod scsi_do_req 0x435eea41 +drivers/scsi/scsi_mod scsi_execute 0xcff74378 +drivers/scsi/scsi_mod scsi_execute_req 0x6bf15f43 +drivers/scsi/scsi_mod scsi_extd_sense_format 0x11267875 +drivers/scsi/scsi_mod scsi_finish_command 0x8229385b +drivers/scsi/scsi_mod scsi_flush_work 0xa8ad16e2 +drivers/scsi/scsi_mod scsi_free_host_dev 0xcaa0b8c4 +drivers/scsi/scsi_mod scsi_get_command 0x641cc90d +drivers/scsi/scsi_mod scsi_get_host_dev 0x47603c0d +drivers/scsi/scsi_mod scsi_get_sense_info_fld 0x796fc5ce +drivers/scsi/scsi_mod scsi_host_alloc 0x32ed0294 +drivers/scsi/scsi_mod scsi_host_get 0x885b8186 +drivers/scsi/scsi_mod scsi_host_lookup 0x050adf5e +drivers/scsi/scsi_mod scsi_host_put 0xd97e9afa +drivers/scsi/scsi_mod scsi_host_set_state 0x2cc33b37 +drivers/scsi/scsi_mod scsi_internal_device_block 0x728b27f4 +drivers/scsi/scsi_mod scsi_internal_device_unblock 0x3f69a77e +drivers/scsi/scsi_mod scsi_io_completion 0x1f4ce619 +drivers/scsi/scsi_mod scsi_ioctl 0x2440be6c +drivers/scsi/scsi_mod scsi_ioctl_send_command 0x93c3af04 +drivers/scsi/scsi_mod scsi_is_host_device 0xc48ebfe0 +drivers/scsi/scsi_mod scsi_is_sdev_device 0x39eb98e2 +drivers/scsi/scsi_mod scsi_is_target_device 0x60630bba +drivers/scsi/scsi_mod scsi_logging_level 0xaf3dd7dc +drivers/scsi/scsi_mod scsi_mode_sense 0x7d969712 +drivers/scsi/scsi_mod scsi_nonblockable_ioctl 0x80d46b0d +drivers/scsi/scsi_mod scsi_normalize_sense 0x0c65e73c +drivers/scsi/scsi_mod scsi_partsize 0x4afe9a77 +drivers/scsi/scsi_mod scsi_print_command 0xa16e86d2 +drivers/scsi/scsi_mod scsi_print_msg 0x67f88938 +drivers/scsi/scsi_mod scsi_print_req_sense 0xc3f44dbb +drivers/scsi/scsi_mod scsi_print_sense 0xde65aa3d +drivers/scsi/scsi_mod scsi_print_sense_hdr 0xca5dbc50 +drivers/scsi/scsi_mod scsi_print_status 0x9cfd56c5 +drivers/scsi/scsi_mod scsi_put_command 0xdbbcd585 +drivers/scsi/scsi_mod scsi_queue_work 0x73631cff +drivers/scsi/scsi_mod scsi_register 0x481eab84 +drivers/scsi/scsi_mod scsi_register_driver 0x15afd498 +drivers/scsi/scsi_mod scsi_register_interface 0xc71810f5 +drivers/scsi/scsi_mod scsi_release_request 0x72bfa409 +drivers/scsi/scsi_mod scsi_remove_device 0xfc02e1de +drivers/scsi/scsi_mod scsi_remove_host 0xac23f36f +drivers/scsi/scsi_mod scsi_remove_target 0xf287842e +drivers/scsi/scsi_mod scsi_report_bus_reset 0xe9d68067 +drivers/scsi/scsi_mod scsi_report_device_reset 0xd6399e87 +drivers/scsi/scsi_mod scsi_request_normalize_sense 0xb3c6e998 +drivers/scsi/scsi_mod scsi_rescan_device 0x25e47c31 +drivers/scsi/scsi_mod scsi_reset_provider 0xdfc640a5 +drivers/scsi/scsi_mod scsi_scan_host 0xf8620214 +drivers/scsi/scsi_mod scsi_scan_target 0xf82a705f +drivers/scsi/scsi_mod scsi_sense_desc_find 0x2b0ba2b0 +drivers/scsi/scsi_mod scsi_sense_key_string 0x96cd2b04 +drivers/scsi/scsi_mod scsi_set_medium_removal 0x80da0bef +drivers/scsi/scsi_mod scsi_setup_blk_pc_cmnd 0x5bf937fd +drivers/scsi/scsi_mod scsi_target_block 0x464e53b6 +drivers/scsi/scsi_mod scsi_target_quiesce 0x0bcfcd4b +drivers/scsi/scsi_mod scsi_target_resume 0xc471bdf8 +drivers/scsi/scsi_mod scsi_target_unblock 0x51d7ebdc +drivers/scsi/scsi_mod scsi_test_unit_ready 0x7d953486 +drivers/scsi/scsi_mod scsi_track_queue_full 0x2ef15b15 +drivers/scsi/scsi_mod scsi_unblock_requests 0xc1a217b2 +drivers/scsi/scsi_mod scsi_unregister 0x60e79467 +drivers/scsi/scsi_mod scsicam_bios_param 0xad55d6d0 +drivers/scsi/scsi_mod starget_for_each_device 0xc24d1b16 +drivers/scsi/scsi_transport_fc fc_attach_transport 0x16cff076 +drivers/scsi/scsi_transport_fc fc_release_transport 0x9e8a32ac +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x425fa3da +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0x57b4105b +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0xd408f003 +drivers/scsi/scsi_transport_fc fc_remove_host 0xc1279e7b +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0x0e41478d +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0x705c3927 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0xf10de35f +drivers/scsi/scsi_transport_sas sas_attach_transport 0xbdec2195 +drivers/scsi/scsi_transport_sas sas_phy_add 0x4748b26d +drivers/scsi/scsi_transport_sas sas_phy_alloc 0xc2834de6 +drivers/scsi/scsi_transport_sas sas_phy_delete 0xc43ceac9 +drivers/scsi/scsi_transport_sas sas_phy_free 0xe2dc4616 +drivers/scsi/scsi_transport_sas sas_release_transport 0xf3fed796 +drivers/scsi/scsi_transport_sas sas_remove_host 0x3891e37f +drivers/scsi/scsi_transport_sas sas_rphy_add 0xd603d558 +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x3d52c22c +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x502440eb +drivers/scsi/scsi_transport_sas sas_rphy_free 0x3fd0dd7b +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0x09ea0340 +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0x1a473019 +drivers/scsi/scsi_transport_spi spi_attach_transport 0xafc7d2be +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0xee6c7c15 +drivers/scsi/scsi_transport_spi spi_dv_device 0xbe2a5055 +drivers/scsi/scsi_transport_spi spi_release_transport 0x7bb53a42 +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0x732bb645 +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0xfdabc205 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0xfe2e1509 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x1e392d7c +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0x861acedc +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0x25069141 +drivers/telephony/ixj ixj_pcmcia_probe 0xa53c8225 +drivers/telephony/phonedev phone_register_device 0x34875712 +drivers/telephony/phonedev phone_unregister_device 0x546eee67 +drivers/usb/atm/usbatm usbatm_usb_disconnect 0x35b9f481 +drivers/usb/atm/usbatm usbatm_usb_probe 0xfadeb960 +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x4f1625aa +drivers/usb/core/usbcore usb_alloc_dev 0x3d689957 +drivers/usb/core/usbcore usb_alloc_urb 0x3e220fed +drivers/usb/core/usbcore usb_altnum_to_altsetting 0x2c49f0b6 +drivers/usb/core/usbcore usb_buffer_alloc 0x5dd29b62 +drivers/usb/core/usbcore usb_buffer_free 0x419e345f +drivers/usb/core/usbcore usb_buffer_map_sg 0x68a2ed8e +drivers/usb/core/usbcore usb_buffer_unmap_sg 0xab42d08f +drivers/usb/core/usbcore usb_bulk_msg 0x6bb7bc99 +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0xd9eb4197 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0x28c0c664 +drivers/usb/core/usbcore usb_claim_bandwidth 0x0fc33f3f +drivers/usb/core/usbcore usb_clear_halt 0xcdcd38c0 +drivers/usb/core/usbcore usb_control_msg 0x4e408851 +drivers/usb/core/usbcore usb_create_hcd 0x8bd368f4 +drivers/usb/core/usbcore usb_deregister 0xd576e206 +drivers/usb/core/usbcore usb_deregister_dev 0x6865b54f +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0x5d5bdd8d +drivers/usb/core/usbcore usb_driver_claim_interface 0x1e6fd02a +drivers/usb/core/usbcore usb_driver_release_interface 0xb339fae9 +drivers/usb/core/usbcore usb_find_device 0xd09c2e7c +drivers/usb/core/usbcore usb_find_interface 0xce614bf4 +drivers/usb/core/usbcore usb_free_urb 0x20e2ddcb +drivers/usb/core/usbcore usb_get_current_frame_number 0x0857dd8b +drivers/usb/core/usbcore usb_get_descriptor 0x354f22f0 +drivers/usb/core/usbcore usb_get_dev 0x0b169a1f +drivers/usb/core/usbcore usb_get_intf 0xe29816bf +drivers/usb/core/usbcore usb_get_status 0xfd9efc8d +drivers/usb/core/usbcore usb_get_string 0x61ce1d88 +drivers/usb/core/usbcore usb_get_urb 0x68ba263b +drivers/usb/core/usbcore usb_hc_died 0xf2f0c0b0 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0x4f9344c8 +drivers/usb/core/usbcore usb_hcd_pci_probe 0xcea7e4b4 +drivers/usb/core/usbcore usb_hcd_pci_remove 0x5ff6cda6 +drivers/usb/core/usbcore usb_hcd_pci_resume 0x4e21260f +drivers/usb/core/usbcore usb_hcd_pci_suspend 0x3fa0ad1a +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0xf12fba40 +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0xefb30967 +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0x9986318a +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0x305bfca9 +drivers/usb/core/usbcore usb_ifnum_to_if 0xc4acaaea +drivers/usb/core/usbcore usb_init_urb 0xbc9a0166 +drivers/usb/core/usbcore usb_kill_urb 0x41bfd024 +drivers/usb/core/usbcore usb_lock_device 0xf81df085 +drivers/usb/core/usbcore usb_lock_device_for_reset 0x61655cc2 +drivers/usb/core/usbcore usb_match_id 0x4073c12f +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0x037502e4 +drivers/usb/core/usbcore usb_put_dev 0x236114bd +drivers/usb/core/usbcore usb_put_hcd 0xbeb12bed +drivers/usb/core/usbcore usb_put_intf 0x0e4fa2d2 +drivers/usb/core/usbcore usb_register 0x24843b67 +drivers/usb/core/usbcore usb_register_dev 0x88a54ad1 +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x93dbf834 +drivers/usb/core/usbcore usb_remove_hcd 0x86c5486d +drivers/usb/core/usbcore usb_reset_configuration 0xe3378e4b +drivers/usb/core/usbcore usb_reset_device 0x6119c670 +drivers/usb/core/usbcore usb_set_device_state 0xdc40f489 +drivers/usb/core/usbcore usb_set_interface 0x70cce8c3 +drivers/usb/core/usbcore usb_sg_cancel 0x71f829b7 +drivers/usb/core/usbcore usb_sg_init 0x8ea20c04 +drivers/usb/core/usbcore usb_sg_wait 0xd43b99a6 +drivers/usb/core/usbcore usb_string 0x59df0e04 +drivers/usb/core/usbcore usb_submit_urb 0x0cb22a6d +drivers/usb/core/usbcore usb_trylock_device 0x6bd6efdc +drivers/usb/core/usbcore usb_unlink_urb 0xbf403ddf +drivers/usb/core/usbcore usb_unlock_device 0xe45b3209 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/gadget/net2280 net2280_set_fifo_mode 0x1dae3a4b +drivers/usb/gadget/net2280 usb_gadget_register_driver 0xfb768bb0 +drivers/usb/gadget/net2280 usb_gadget_unregister_driver 0x5af3c588 +drivers/usb/host/sl811-hcd sl811h_driver 0xcba33f1a +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0x96fb39f1 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x35dc9e5b +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0xd18f4215 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0x9360a801 +drivers/usb/media/usbvideo RingQueue_Dequeue 0x54ded406 +drivers/usb/media/usbvideo RingQueue_Enqueue 0x5293ede2 +drivers/usb/media/usbvideo RingQueue_Flush 0x9778abda +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0xdf605c59 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0x3bbb358e +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x8610172b +drivers/usb/media/usbvideo usbvideo_Deregister 0x836351bd +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0x9ddf08dc +drivers/usb/media/usbvideo usbvideo_TestPattern 0x5cd36776 +drivers/usb/media/usbvideo usbvideo_register 0x06622d6f +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0x1aba2b02 +drivers/usb/media/w9968cf w9968cf_vppmod_register 0x6bb6896f +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0x9f2f4e21 +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0xf6eef08c +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0xf2606268 +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0xba12a7d6 +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0xe7aa85e9 +drivers/usb/net/usbnet usbnet_defer_kevent 0x770b6798 +drivers/usb/net/usbnet usbnet_disconnect 0x3c4500f0 +drivers/usb/net/usbnet usbnet_get_drvinfo 0x8bc5ed2d +drivers/usb/net/usbnet usbnet_get_endpoints 0x0041ac3b +drivers/usb/net/usbnet usbnet_get_msglevel 0x6d625f75 +drivers/usb/net/usbnet usbnet_probe 0x4c608af4 +drivers/usb/net/usbnet usbnet_resume 0x57e1142d +drivers/usb/net/usbnet usbnet_set_msglevel 0x9d5ae424 +drivers/usb/net/usbnet usbnet_skb_return 0xa7b4ba6d +drivers/usb/net/usbnet usbnet_suspend 0x020f89dc +drivers/usb/serial/usbserial ezusb_set_reset 0xb8b4c341 +drivers/usb/serial/usbserial ezusb_writememory 0x8422ce19 +drivers/usb/serial/usbserial usb_serial_deregister 0xf29e4261 +drivers/usb/serial/usbserial usb_serial_disconnect 0xa242a5da +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0xe80bb631 +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0xdb93cd37 +drivers/usb/serial/usbserial usb_serial_register 0xb5ef62ad +drivers/video/backlight/backlight backlight_device_register 0xa9b6243a +drivers/video/backlight/backlight backlight_device_unregister 0xe02cf8db +drivers/video/backlight/lcd lcd_device_register 0x7b4988fd +drivers/video/backlight/lcd lcd_device_unregister 0xc1b63a87 +drivers/video/cfbcopyarea cfb_copyarea 0xb263f757 +drivers/video/cfbfillrect cfb_fillrect 0xeebdbe47 +drivers/video/cfbimgblt cfb_imageblit 0xa601c318 +drivers/video/console/bitblit fbcon_set_bitops 0xc787639c +drivers/video/console/font find_font 0xf7584a9c +drivers/video/console/font get_default_font 0x093e3659 +drivers/video/console/softcursor soft_cursor 0xff1ca06a +drivers/video/console/tileblit fbcon_set_tileops 0xc90c2594 +drivers/video/cyber2000fb cyber2000fb_attach 0xd8799e6c +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x7c4300f8 +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0xa909b89f +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0x38c84a55 +drivers/video/macmodes mac_find_mode 0xaeafe27f +drivers/video/macmodes mac_map_monitor_sense 0xe2304303 +drivers/video/macmodes mac_var_to_vmode 0x00907cd5 +drivers/video/macmodes mac_vmode_to_var 0x08ed0b62 +drivers/video/matrox/g450_pll g450_mnp2f 0x55b51b1e +drivers/video/matrox/g450_pll matroxfb_g450_setclk 0x0738990b +drivers/video/matrox/g450_pll matroxfb_g450_setpll_cond 0xf2df33fd +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_init 0x59eef0b9 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_restore 0x56e7279c +drivers/video/matrox/matroxfb_DAC1064 matrox_G100 0x5b49d200 +drivers/video/matrox/matroxfb_DAC1064 matrox_mystique 0x89785cd9 +drivers/video/matrox/matroxfb_Ti3026 matrox_millennium 0x61fbc4b0 +drivers/video/matrox/matroxfb_accel matrox_cfbX_init 0x5074bad8 +drivers/video/matrox/matroxfb_base matroxfb_enable_irq 0x32245a6c +drivers/video/matrox/matroxfb_base matroxfb_register_driver 0x20309173 +drivers/video/matrox/matroxfb_base matroxfb_unregister_driver 0x16bd4de8 +drivers/video/matrox/matroxfb_base matroxfb_wait_for_sync 0xec22438c +drivers/video/matrox/matroxfb_g450 matroxfb_g450_connect 0xdeb348b6 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_shutdown 0x45a33107 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_in 0x325a1b83 +drivers/video/matrox/matroxfb_misc matroxfb_DAC_out 0x1578b7b2 +drivers/video/matrox/matroxfb_misc matroxfb_PLL_calcclock 0x25cf8049 +drivers/video/matrox/matroxfb_misc matroxfb_read_pins 0x4dbee4e3 +drivers/video/matrox/matroxfb_misc matroxfb_var2my 0xabd8e427 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWinit 0x9fd5d934 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWrestore 0xeb742a51 +drivers/video/sis/sisfb sis_free 0x454a3cf0 +drivers/video/sis/sisfb sis_free_new 0x134da2fe +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0x651d9b55 +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0x7f98cad1 +drivers/w1/ds9490r ds_put_device 0x94f89b42 +drivers/w1/ds9490r ds_read_bit 0xc15f07f9 +drivers/w1/ds9490r ds_read_block 0xbe7ab491 +drivers/w1/ds9490r ds_read_byte 0x5ba1fc63 +drivers/w1/ds9490r ds_reset 0x6e1a0e45 +drivers/w1/ds9490r ds_touch_bit 0xa263e9ca +drivers/w1/ds9490r ds_write_bit 0x03adcae2 +drivers/w1/ds9490r ds_write_block 0x6c858d3b +drivers/w1/ds9490r ds_write_byte 0x9b3cd0d7 +drivers/w1/wire w1_add_master_device 0xd703c624 +drivers/w1/wire w1_calc_crc8 0x7c2f2afb +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xb0c86d52 +drivers/w1/wire w1_family_put 0x45181a35 +drivers/w1/wire w1_family_registered 0x345f469c +drivers/w1/wire w1_read_8 0x0b2d4653 +drivers/w1/wire w1_read_block 0x959faab9 +drivers/w1/wire w1_register_family 0xadeb1de9 +drivers/w1/wire w1_remove_master_device 0x31a7a05c +drivers/w1/wire w1_reset_bus 0x13dfca7c +drivers/w1/wire w1_reset_select_slave 0x5fce10b0 +drivers/w1/wire w1_search_devices 0x202bf723 +drivers/w1/wire w1_touch_bit 0xe7a19526 +drivers/w1/wire w1_unregister_family 0x2616cdb9 +drivers/w1/wire w1_write_8 0xaf0d9cf1 +drivers/w1/wire w1_write_block 0xe85b92a2 +fs/configfs/configfs config_group_init 0xbf9c767b +fs/configfs/configfs config_group_init_type_name 0x114de3b4 +fs/configfs/configfs config_item_get 0xe8934d30 +fs/configfs/configfs config_item_init 0xdd7aadd7 +fs/configfs/configfs config_item_init_type_name 0x0f5750e7 +fs/configfs/configfs config_item_put 0x78411117 +fs/configfs/configfs config_item_set_name 0xcc0f2202 +fs/configfs/configfs configfs_register_subsystem 0xe939262e +fs/configfs/configfs configfs_unregister_subsystem 0x6d3ea504 +fs/exportfs/exportfs export_op_default 0x7034f526 +fs/exportfs/exportfs find_exported_dentry 0xb2584b96 +fs/fat/fat fat_add_entries 0x76916e5d +fs/fat/fat fat_alloc_new_dir 0x9d93f1c5 +fs/fat/fat fat_attach 0xa27c1d7b +fs/fat/fat fat_build_inode 0x16e39054 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0xe358b4a1 +fs/fat/fat fat_dir_empty 0x2d0325ad +fs/fat/fat fat_fill_super 0x012ba32d +fs/fat/fat fat_free_clusters 0x905aca92 +fs/fat/fat fat_fs_panic 0x4255bdd4 +fs/fat/fat fat_get_dotdot_entry 0x3a7c1f00 +fs/fat/fat fat_notify_change 0x864e253d +fs/fat/fat fat_remove_entries 0x0a37adfb +fs/fat/fat fat_scan 0xdd5b226b +fs/fat/fat fat_search_long 0x29f0025f +fs/fat/fat fat_sync_bhs 0x4f94560c +fs/fat/fat fat_sync_inode 0x08501eb9 +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0xc16bbae9 +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0x7e3b97ab +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0x8cbdc6e6 +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0x04b8c27d +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0x988c4e89 +fs/jbd/jbd journal_abort 0x50e6df57 +fs/jbd/jbd journal_ack_err 0xd75b8f41 +fs/jbd/jbd journal_blocks_per_page 0x9b20e4f5 +fs/jbd/jbd journal_check_available_features 0xc3160e00 +fs/jbd/jbd journal_check_used_features 0xfc1190b2 +fs/jbd/jbd journal_clear_err 0x8a6edc35 +fs/jbd/jbd journal_create 0x25c38d91 +fs/jbd/jbd journal_destroy 0x34d62cb0 +fs/jbd/jbd journal_dirty_data 0x8a91d2b1 +fs/jbd/jbd journal_dirty_metadata 0x9744c9c5 +fs/jbd/jbd journal_errno 0x74162f57 +fs/jbd/jbd journal_extend 0x5e9b0906 +fs/jbd/jbd journal_flush 0x2086bc7e +fs/jbd/jbd journal_force_commit 0xc34d161d +fs/jbd/jbd journal_force_commit_nested 0xdf7e9163 +fs/jbd/jbd journal_forget 0x70828338 +fs/jbd/jbd journal_get_create_access 0xeb24a0ea +fs/jbd/jbd journal_get_undo_access 0x2c1709c6 +fs/jbd/jbd journal_get_write_access 0x88baa9df +fs/jbd/jbd journal_init_dev 0x11eaca7b +fs/jbd/jbd journal_init_inode 0x420c33ff +fs/jbd/jbd journal_invalidatepage 0xc3ae0900 +fs/jbd/jbd journal_load 0xffce6206 +fs/jbd/jbd journal_lock_updates 0xd8128463 +fs/jbd/jbd journal_release_buffer 0xd571e3a6 +fs/jbd/jbd journal_restart 0x22de3a0c +fs/jbd/jbd journal_revoke 0x59035fcc +fs/jbd/jbd journal_set_features 0x7163cbbd +fs/jbd/jbd journal_start 0x65aa24b9 +fs/jbd/jbd journal_start_commit 0x8d1f5de6 +fs/jbd/jbd journal_stop 0xc9180779 +fs/jbd/jbd journal_try_to_free_buffers 0x78e73611 +fs/jbd/jbd journal_unlock_updates 0xad5f4fdf +fs/jbd/jbd journal_update_format 0x260df38d +fs/jbd/jbd journal_update_superblock 0xd4c994b1 +fs/jbd/jbd journal_wipe 0xa45ad960 +fs/jbd/jbd log_wait_commit 0xccad6349 +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0xdaa32627 +fs/lockd/lockd nlmsvc_ops 0x22c6422b +fs/nfsd/nfsd nfs4_acl_add_ace 0x8b0e8bec +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x81a17396 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0xf56c2017 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0x1d747ce3 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xbaeb4700 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0x9e326b8d +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0x868b228b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0x29d4f2e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x43bce54e +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0x36418553 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0x521e0726 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0x057218f4 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0xfa86791b +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x2c2a5f73 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0xbdbdf132 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xa82a8645 +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0xc96d393b +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0x549c1545 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0x32545c88 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0x10c7aa71 +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0x31932a96 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0xcf9319b2 +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0xd3a4082e +fs/relayfs/relayfs relay_buf_full 0xca5d38ee +fs/relayfs/relayfs relay_close 0x78e38ea8 +fs/relayfs/relayfs relay_flush 0x3ad6f546 +fs/relayfs/relayfs relay_open 0x5fd8a6a9 +fs/relayfs/relayfs relay_reset 0xc12a3fb9 +fs/relayfs/relayfs relay_subbufs_consumed 0x173b469e +fs/relayfs/relayfs relay_switch_subbuf 0x7246fff3 +fs/relayfs/relayfs relayfs_create_dir 0x18be53d6 +fs/relayfs/relayfs relayfs_file_operations 0xd92a1636 +fs/relayfs/relayfs relayfs_remove_dir 0x17ed6134 +lib/crc-ccitt crc_ccitt 0x651c2313 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x9aabc564 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x41bcd8b3 +lib/libcrc32c crc32c_le 0x13c0c38e +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0x6d275d97 +net/appletalk/appletalk alloc_ltalkdev 0x6e56a29a +net/appletalk/appletalk atalk_find_dev_addr 0x28a6afec +net/appletalk/appletalk atrtr_get_dev 0x1dfc1826 +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0xb702d952 +net/ax25/ax25 ax25_findbyuid 0x5fc6280f +net/ax25/ax25 ax25_hard_header 0x5de4e235 +net/ax25/ax25 ax25_linkfail_register 0xf9210556 +net/ax25/ax25 ax25_linkfail_release 0xf858c5c0 +net/ax25/ax25 ax25_listen_register 0xb1d98235 +net/ax25/ax25 ax25_listen_release 0x046d78cd +net/ax25/ax25 ax25_protocol_register 0xdf80a606 +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0xafd9a67a +net/ax25/ax25 ax25_send_frame 0x1eccc830 +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0x9faf7b3a +net/bluetooth/bluetooth bt_accept_enqueue 0x54f5132f +net/bluetooth/bluetooth bt_accept_unlink 0x44b471ce +net/bluetooth/bluetooth bt_class 0xec4f0667 +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0x745aff78 +net/bluetooth/bluetooth bt_sock_poll 0x56d74d81 +net/bluetooth/bluetooth bt_sock_recvmsg 0x6fdbfe47 +net/bluetooth/bluetooth bt_sock_register 0x9b79663d +net/bluetooth/bluetooth bt_sock_unlink 0xb2dc175b +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0x1fe3792e +net/bluetooth/bluetooth hci_alloc_dev 0x4f737e3c +net/bluetooth/bluetooth hci_conn_auth 0xa5669e84 +net/bluetooth/bluetooth hci_conn_change_link_key 0xf53cd99d +net/bluetooth/bluetooth hci_conn_encrypt 0x51114efb +net/bluetooth/bluetooth hci_conn_switch_role 0x22660565 +net/bluetooth/bluetooth hci_connect 0x84368b27 +net/bluetooth/bluetooth hci_free_dev 0x707256d4 +net/bluetooth/bluetooth hci_get_route 0xe1fec489 +net/bluetooth/bluetooth hci_register_cb 0x7b3ad400 +net/bluetooth/bluetooth hci_register_dev 0x797005a5 +net/bluetooth/bluetooth hci_register_proto 0xdd1b5edc +net/bluetooth/bluetooth hci_resume_dev 0x546fecf7 +net/bluetooth/bluetooth hci_send_acl 0x899c17c4 +net/bluetooth/bluetooth hci_send_sco 0x36ab6638 +net/bluetooth/bluetooth hci_suspend_dev 0x4bd7ad41 +net/bluetooth/bluetooth hci_unregister_cb 0x5abfcdf1 +net/bluetooth/bluetooth hci_unregister_dev 0x0ba6e05c +net/bluetooth/bluetooth hci_unregister_proto 0x94b624c2 +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0xdee6da1c +net/bridge/netfilter/ebtables ebt_do_table 0x86a342ce +net/bridge/netfilter/ebtables ebt_register_match 0x4226c089 +net/bridge/netfilter/ebtables ebt_register_table 0xd26a8f0d +net/bridge/netfilter/ebtables ebt_register_target 0x5b00d7c1 +net/bridge/netfilter/ebtables ebt_register_watcher 0xe8d6679b +net/bridge/netfilter/ebtables ebt_unregister_match 0x9082dba3 +net/bridge/netfilter/ebtables ebt_unregister_table 0x08ce9c9a +net/bridge/netfilter/ebtables ebt_unregister_target 0x3b5eb2e6 +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x6d5d715c +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x3a18e70d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0x71ecc67f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x7824d7b3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xded46fa7 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0x2fde4754 +net/dccp/dccp ccid_init 0xb3a37b18 +net/dccp/dccp ccid_register 0x9e6853d7 +net/dccp/dccp ccid_unregister 0x0174772a +net/dccp/dccp dccp_hashinfo 0x8fb40600 +net/dccp/dccp dccp_insert_option 0x597d8805 +net/dccp/dccp dccp_insert_option_elapsed_time 0x22e1eebd +net/dccp/dccp dccp_insert_option_timestamp 0xe59586dc +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0xd4646db6 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0xc32e4c0e +net/ieee80211/ieee80211 alloc_ieee80211 0x3fcc1ab7 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0x860611f8 +net/ieee80211/ieee80211 ieee80211_channel_to_index 0xd544a100 +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0xa0444106 +net/ieee80211/ieee80211 ieee80211_get_channel 0xc01aec22 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0xb3e82ed2 +net/ieee80211/ieee80211 ieee80211_get_geo 0x026acca3 +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0x3c913bab +net/ieee80211/ieee80211 ieee80211_rx 0x34ea07e4 +net/ieee80211/ieee80211 ieee80211_rx_mgt 0x719e634a +net/ieee80211/ieee80211 ieee80211_set_geo 0x6a56349e +net/ieee80211/ieee80211 ieee80211_tx_frame 0x0986c021 +net/ieee80211/ieee80211 ieee80211_txb_free 0xff58db54 +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0xf3bd949f +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0x2f83551d +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x1dd9360c +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0x3cd6fab3 +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0x5f93ddb8 +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x85d21829 +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x67002bc0 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0x409aff11 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0xa7e9d934 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0xd5814d8c +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0xbd265d1e +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0x0e47769d +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x0f3602d5 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0xd166a156 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0xfea1d3f0 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x39420b46 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0x230aaf8b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0x61d58660 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0x64b66925 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0x921db3c5 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0xcc013a37 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0xcca129e9 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0xd8a1fa1d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0x776ca9a9 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0xa74e200d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0xf9241dbc +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x143ad469 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x7d07613f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0xd2ca328b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x0b60692a +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x868ab342 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0xf4108a7a +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0xedea2bd6 +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x9079f5d3 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0x3c4ea280 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0x0e9ae056 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0x260bf781 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0xf58ca985 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0x9273adec +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0x2e6ef92b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x57f8b8f7 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0x7ab04b48 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0xaa4acff2 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x12cc6b3c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x651b938f +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x42bf5ca5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x4af45049 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0xb5d6e1e3 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x683c29fb +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0x37ed58bd +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0x3b83092a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0x5a5f9669 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x5310b2a8 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x1f3c22c1 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0xc9d78d6e +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0x00c6f8b5 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x540c0699 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x376af115 +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0x4841abe4 +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0xecf9d890 +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0x4bc6addc +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0xa9625812 +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0x6c307303 +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0x75b32429 +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0xcae1ba2b +net/ipv4/ipvs/ip_vs register_ip_vs_app 0xc415654d +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0x4a652291 +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0xbce6ae57 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0xa921ffd5 +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0xc3fe6d9d +net/ipv4/netfilter/arp_tables arpt_do_table 0x7d9a5794 +net/ipv4/netfilter/arp_tables arpt_register_table 0xa7271b61 +net/ipv4/netfilter/arp_tables arpt_register_target 0x53a0947e +net/ipv4/netfilter/arp_tables arpt_unregister_table 0x2cfc0309 +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x3b8ec047 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x072b37ba +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x584229f0 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0x701e6234 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0xd5fe51a2 +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0x236faf90 +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0x6695cbd9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x8c8f4bba +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0x9c19fff3 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0xa3d5774e +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0x2bce260d +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0x038bbdcc +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x41126076 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0xca312de7 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0xdb7f7a69 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0xc9c4bbae +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0xe0e24c0d +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0xb9fc0d6a +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0xac92c4a7 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x8d1f9c5f +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0xa2834c44 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0xd2a04669 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x5e5bd5ec +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x0bf883a2 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x208c7cf3 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0x8f50d804 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0xf8df83db +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x2640dc8e +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x98d181c0 +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0xd734299f +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0x96051c03 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0xf4885a47 +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0xffed5bb0 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0xfd389703 +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0x3538d70f +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0xb75676fc +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0xcf2a303c +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0x559f75b5 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0xdb4e6751 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0x264441ea +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0x374d136c +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0x98a0b2f1 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0xde633716 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x8779ff0b +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0x40dbd6d6 +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0xc7c97dfd +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0xbbd00d00 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0x32dfff8a +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0x59dc79cc +net/ipv4/netfilter/ip_nat ip_nat_packet 0x44e72a1b +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x543ed203 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0xc60201d5 +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0xd826cb6a +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0x7f7b3549 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x8af90e8e +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0x7c5b1a2d +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0x7ee4d2d5 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0xc8d4fbf8 +net/ipv4/netfilter/ip_tables ipt_do_table 0x96840020 +net/ipv4/netfilter/ip_tables ipt_find_target 0x1fc8517d +net/ipv4/netfilter/ip_tables ipt_register_match 0x781044b3 +net/ipv4/netfilter/ip_tables ipt_register_table 0x6302f940 +net/ipv4/netfilter/ip_tables ipt_register_target 0xa532a1f2 +net/ipv4/netfilter/ip_tables ipt_unregister_match 0x2b163528 +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x17222d5a +net/ipv4/netfilter/ip_tables ipt_unregister_target 0x36c90c97 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0x31c7506e +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0xc4695e42 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0x04e387a8 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0xd5ff34df +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x1609ec73 +net/ipv6/ipv6 inet6_add_protocol 0x487ed279 +net/ipv6/ipv6 inet6_bind 0xf60e7e5a +net/ipv6/ipv6 inet6_del_protocol 0xf80e2783 +net/ipv6/ipv6 inet6_getname 0x32118ae0 +net/ipv6/ipv6 inet6_ioctl 0x7f15c475 +net/ipv6/ipv6 inet6_register_protosw 0x4dd9dd92 +net/ipv6/ipv6 inet6_release 0xe94fa9bf +net/ipv6/ipv6 inet6_unregister_protosw 0x655355fd +net/ipv6/ipv6 ip6_route_me_harder 0x29f583eb +net/ipv6/ipv6 ip6_route_output 0x094c4422 +net/ipv6/ipv6 ip6_xmit 0xdc23f780 +net/ipv6/ipv6 ipv6_chk_addr 0x9b52da6d +net/ipv6/ipv6 ipv6_get_saddr 0xf35ef587 +net/ipv6/ipv6 ipv6_getsockopt 0xc50a116f +net/ipv6/ipv6 ipv6_push_nfrag_opts 0xbb44554f +net/ipv6/ipv6 ipv6_setsockopt 0x49f81e89 +net/ipv6/ipv6 ndisc_mc_map 0x62a2b14a +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x4759ecff +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0xe0a58685 +net/ipv6/ipv6 xfrm6_rcv_spi 0xdba00874 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0x8d064d9b +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0x17153904 +net/ipv6/netfilter/ip6_tables ip6t_register_table 0x10b592bc +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x79581859 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0x5aa0d13f +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0xfcb247f5 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0xb787876d +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0xbdc6d272 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0x5fea4714 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0x165e7926 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/irda/ircomm/ircomm ircomm_close 0x479c307e +net/irda/ircomm/ircomm ircomm_connect_request 0xa24bec29 +net/irda/ircomm/ircomm ircomm_connect_response 0x841baefe +net/irda/ircomm/ircomm ircomm_control_request 0xbd695ef6 +net/irda/ircomm/ircomm ircomm_data_request 0x4ecc32eb +net/irda/ircomm/ircomm ircomm_disconnect_request 0xc44e4038 +net/irda/ircomm/ircomm ircomm_flow_request 0xbb767794 +net/irda/ircomm/ircomm ircomm_open 0xa72b1b96 +net/irda/irda alloc_irdadev 0xef44a515 +net/irda/irda async_unwrap_char 0xe114e748 +net/irda/irda async_wrap_skb 0x81bc7d02 +net/irda/irda hashbin_delete 0x94a8156e +net/irda/irda hashbin_find 0xe0acf0d4 +net/irda/irda hashbin_get_first 0x29783db6 +net/irda/irda hashbin_get_next 0x5f261aef +net/irda/irda hashbin_insert 0x5861b834 +net/irda/irda hashbin_lock_find 0xd627dc1a +net/irda/irda hashbin_new 0x543a6db5 +net/irda/irda hashbin_remove 0xb7884205 +net/irda/irda hashbin_remove_this 0x7f933922 +net/irda/irda irda_debug 0x38a20e5b +net/irda/irda irda_device_dongle_cleanup 0x188e9c33 +net/irda/irda irda_device_dongle_init 0xb8f0a801 +net/irda/irda irda_device_register_dongle 0xe90d381b +net/irda/irda irda_device_set_media_busy 0x4cfc8b63 +net/irda/irda irda_device_unregister_dongle 0x06db9566 +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0xd368e803 +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_setup_dma 0xd6deeaae +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0xda799d15 +net/irda/irda iriap_getvaluebyclass_request 0xe91bdbc5 +net/irda/irda iriap_open 0x55f96fe5 +net/irda/irda irias_add_integer_attrib 0xc10a5281 +net/irda/irda irias_add_octseq_attrib 0x550a5e27 +net/irda/irda irias_add_string_attrib 0x18edd399 +net/irda/irda irias_delete_object 0x89136cd1 +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x45a03a53 +net/irda/irda irias_find_object 0xa26f32f8 +net/irda/irda irias_insert_object 0x980fe568 +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0xe1a50c6f +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0xcefc651b +net/irda/irda irlap_open 0x86160db0 +net/irda/irda irlmp_close_lsap 0xe94236cd +net/irda/irda irlmp_connect_request 0xef5a7b29 +net/irda/irda irlmp_connect_response 0xf14d425d +net/irda/irda irlmp_data_request 0x44fbfcbd +net/irda/irda irlmp_disconnect_request 0xba839d6f +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0xe7745cc3 +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0x9d8e16c9 +net/irda/irda irttp_connect_request 0x5c8c5db8 +net/irda/irda irttp_connect_response 0x8bfb0ec8 +net/irda/irda irttp_data_request 0x5d7ce0c4 +net/irda/irda irttp_disconnect_request 0xe69620a5 +net/irda/irda irttp_dup 0x50a81424 +net/irda/irda irttp_flow_request 0x2b075a05 +net/irda/irda irttp_open_tsap 0x86cec01e +net/irda/irda irttp_udata_request 0x40d84d09 +net/irda/irda proc_irda 0x278eb2bc +net/lapb/lapb lapb_connect_request 0xa25ab3b4 +net/lapb/lapb lapb_data_received 0x8748b3d5 +net/lapb/lapb lapb_data_request 0x7c4daa01 +net/lapb/lapb lapb_disconnect_request 0x55340883 +net/lapb/lapb lapb_getparms 0x8810d91f +net/lapb/lapb lapb_register 0x8fc87f4b +net/lapb/lapb lapb_setparms 0x3cc2cdac +net/lapb/lapb lapb_unregister 0x848d1ba8 +net/netfilter/nfnetlink __nfa_fill 0xea65bf20 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0xfc6563c3 +net/netfilter/nfnetlink nfnetlink_subsys_register 0x0a43397c +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0xafa5c269 +net/netfilter/nfnetlink nfnetlink_unicast 0x67ecdfd6 +net/rxrpc/rxrpc rxrpc_add_service 0x6831c6d6 +net/rxrpc/rxrpc rxrpc_call_abort 0xd71f8776 +net/rxrpc/rxrpc rxrpc_call_read_data 0xf8b63dc2 +net/rxrpc/rxrpc rxrpc_call_write_data 0x6d22a302 +net/rxrpc/rxrpc rxrpc_create_call 0x15b33c04 +net/rxrpc/rxrpc rxrpc_create_connection 0x0b7f5eff +net/rxrpc/rxrpc rxrpc_create_transport 0xc9260c40 +net/rxrpc/rxrpc rxrpc_del_service 0x14e6b355 +net/rxrpc/rxrpc rxrpc_put_call 0x06837bfc +net/rxrpc/rxrpc rxrpc_put_connection 0xe496b8d8 +net/rxrpc/rxrpc rxrpc_put_transport 0x43a1ce17 +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x00c52ef5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0xb5dea7ef +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xf8b2ff6e +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0x29aeeb00 +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0xa8c220cb +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0xbc039b97 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0xb3dc55ba +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0x9b664d5c +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0xd890022c +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0x0f277d6e +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0xd969cd5e +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0x460a3304 +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0x5ab45d3a +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0x0211dc5b +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0x372487a5 +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0xabe991d4 +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x4c2f4b6d +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x8d1a827e +net/sunrpc/sunrpc auth_domain_find 0xce9b7a1f +net/sunrpc/sunrpc auth_domain_lookup 0xa74157e3 +net/sunrpc/sunrpc auth_domain_put 0xb7e2b4a5 +net/sunrpc/sunrpc auth_unix_add_addr 0xb8520a43 +net/sunrpc/sunrpc auth_unix_forget_old 0x758f9c49 +net/sunrpc/sunrpc auth_unix_lookup 0xd1d4e136 +net/sunrpc/sunrpc cache_check 0xe68f50d2 +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0x37997a9c +net/sunrpc/sunrpc cache_init 0xc244025c +net/sunrpc/sunrpc cache_purge 0xcdc25635 +net/sunrpc/sunrpc cache_register 0x6b0c2640 +net/sunrpc/sunrpc cache_unregister 0xb686a06c +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0x78d96601 +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0x54566840 +net/sunrpc/sunrpc rpc_bind_new_program 0x45653277 +net/sunrpc/sunrpc rpc_call_async 0x6cc79c4e +net/sunrpc/sunrpc rpc_call_setup 0x49ea1055 +net/sunrpc/sunrpc rpc_call_sync 0xeae8146e +net/sunrpc/sunrpc rpc_clnt_sigmask 0x9255bde6 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0x0f4f6f8d +net/sunrpc/sunrpc rpc_clone_client 0x302ae98c +net/sunrpc/sunrpc rpc_create_client 0x9c93987d +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0x0b1765d9 +net/sunrpc/sunrpc rpc_destroy_client 0xb44c4487 +net/sunrpc/sunrpc rpc_execute 0x343a29b3 +net/sunrpc/sunrpc rpc_init_task 0xe2f30aa2 +net/sunrpc/sunrpc rpc_init_wait_queue 0x916aaa11 +net/sunrpc/sunrpc rpc_killall_tasks 0x09478f23 +net/sunrpc/sunrpc rpc_max_payload 0x200cdd11 +net/sunrpc/sunrpc rpc_mkpipe 0xf192d37f +net/sunrpc/sunrpc rpc_new_child 0x5ed6a14a +net/sunrpc/sunrpc rpc_new_client 0x94d2134c +net/sunrpc/sunrpc rpc_new_task 0x6abb4f61 +net/sunrpc/sunrpc rpc_proc_register 0x7a209c0e +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0x402f7177 +net/sunrpc/sunrpc rpc_release_client 0x2f44d887 +net/sunrpc/sunrpc rpc_release_task 0x8fd7b796 +net/sunrpc/sunrpc rpc_restart_call 0xa57ce0ff +net/sunrpc/sunrpc rpc_run_child 0xe4bb39f4 +net/sunrpc/sunrpc rpc_setbufsize 0xd5b286a7 +net/sunrpc/sunrpc rpc_shutdown_client 0x26850476 +net/sunrpc/sunrpc rpc_sleep_on 0x7bc5875b +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0x6d71e3af +net/sunrpc/sunrpc rpc_wake_up_next 0x1648c250 +net/sunrpc/sunrpc rpc_wake_up_status 0xa5509e00 +net/sunrpc/sunrpc rpc_wake_up_task 0xae809901 +net/sunrpc/sunrpc rpcauth_create 0x31e7d68d +net/sunrpc/sunrpc rpcauth_free_credcache 0xb589d524 +net/sunrpc/sunrpc rpcauth_init_credcache 0xf376bbdb +net/sunrpc/sunrpc rpcauth_lookup_credcache 0x18ba6f06 +net/sunrpc/sunrpc rpcauth_lookupcred 0x57ab1f8d +net/sunrpc/sunrpc rpcauth_register 0x12749438 +net/sunrpc/sunrpc rpcauth_unregister 0xf763ec0b +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x3f591915 +net/sunrpc/sunrpc svc_auth_unregister 0x0f668ba9 +net/sunrpc/sunrpc svc_authenticate 0xfed2d8f9 +net/sunrpc/sunrpc svc_create 0xb51d2a01 +net/sunrpc/sunrpc svc_create_thread 0xc0aefc2a +net/sunrpc/sunrpc svc_destroy 0x17601ad3 +net/sunrpc/sunrpc svc_drop 0xe2176366 +net/sunrpc/sunrpc svc_exit_thread 0x6feb2b8a +net/sunrpc/sunrpc svc_makesock 0xb68b38d8 +net/sunrpc/sunrpc svc_proc_register 0x1cefe7cb +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0xe2831ca1 +net/sunrpc/sunrpc svc_recv 0xd11b5895 +net/sunrpc/sunrpc svc_reserve 0xcd308dbb +net/sunrpc/sunrpc svc_seq_show 0xf9d7af74 +net/sunrpc/sunrpc svc_set_client 0x3ae9ccda +net/sunrpc/sunrpc svc_wake_up 0xde4526bc +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x96946e44 +net/sunrpc/sunrpc xdr_buf_from_iov 0x398b82be +net/sunrpc/sunrpc xdr_buf_read_netobj 0x68cd9e55 +net/sunrpc/sunrpc xdr_buf_subsegment 0x1f06bde0 +net/sunrpc/sunrpc xdr_decode_array2 0x6c3f950d +net/sunrpc/sunrpc xdr_decode_netobj 0x1be57115 +net/sunrpc/sunrpc xdr_decode_string 0x6755aa62 +net/sunrpc/sunrpc xdr_decode_string_inplace 0x7bd87272 +net/sunrpc/sunrpc xdr_decode_word 0xa3bd6482 +net/sunrpc/sunrpc xdr_encode_array2 0x005570c5 +net/sunrpc/sunrpc xdr_encode_netobj 0x29c6f164 +net/sunrpc/sunrpc xdr_encode_opaque 0x0e9e79d5 +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0x587d494b +net/sunrpc/sunrpc xdr_encode_pages 0x60b3067b +net/sunrpc/sunrpc xdr_encode_string 0xabc0fe0c +net/sunrpc/sunrpc xdr_encode_word 0xe6a56a21 +net/sunrpc/sunrpc xdr_init_decode 0x79180cae +net/sunrpc/sunrpc xdr_init_encode 0x177917b9 +net/sunrpc/sunrpc xdr_inline_decode 0x9f21cf1e +net/sunrpc/sunrpc xdr_inline_pages 0xf950ada4 +net/sunrpc/sunrpc xdr_read_pages 0x7a962d64 +net/sunrpc/sunrpc xdr_reserve_space 0x1256dbf1 +net/sunrpc/sunrpc xdr_shift_buf 0x1491c2ec +net/sunrpc/sunrpc xdr_write_pages 0x2a46e221 +net/sunrpc/sunrpc xprt_create_proto 0x969f00b8 +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x8ea05364 +net/wanrouter/wanrouter register_wan_device 0x9c83caef +net/wanrouter/wanrouter unlock_adapter_irq 0x696688b7 +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0x05b15590 +net/wanrouter/wanrouter wanrouter_type_trans 0x342e46b6 +security/commoncap cap_bprm_apply_creds 0x930bd13c +security/commoncap cap_bprm_secureexec 0xf61372d5 +security/commoncap cap_bprm_set_security 0xabad9dac +security/commoncap cap_capable 0x9fc96cb1 +security/commoncap cap_capget 0x6335d369 +security/commoncap cap_capset_check 0x71e9b99f +security/commoncap cap_capset_set 0x9be695f3 +security/commoncap cap_inode_removexattr 0x0fd0a177 +security/commoncap cap_inode_setxattr 0x94f826fc +security/commoncap cap_netlink_recv 0x25114759 +security/commoncap cap_netlink_send 0x7beaf41f +security/commoncap cap_ptrace 0xbc288cff +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x13ea5cf8 +security/commoncap cap_task_reparent_to_init 0x9016b321 +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x045a1ea4 +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x1b6e331c +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0x960797b8 +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0x0bcd9ebd +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x7704c144 +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x89947013 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x82f7aea8 +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0xa833abfc +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0x74f92120 +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x28cd8b46 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x8b11a1fa +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0x1b896855 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0xc049cdd9 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0xbf028ef2 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x20a6608e +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0x7d7fce56 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x5c9108a3 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x2b68e19a +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x27b4902e +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0xc4780079 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0x797b2662 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0x9d2936fd +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0x1acecf5c +sound/core/snd copy_from_user_toio 0x518bb7f8 +sound/core/snd copy_to_user_fromio 0xe243dde3 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0x0817438a +sound/core/snd snd_card_file_add 0x6eccb3d2 +sound/core/snd snd_card_file_remove 0xd1e9b99d +sound/core/snd snd_card_free 0xd48db6af +sound/core/snd snd_card_free_in_thread 0x1550ed73 +sound/core/snd snd_card_new 0x5a032dd9 +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0x84459ef6 +sound/core/snd snd_card_register 0x493838a5 +sound/core/snd snd_card_set_generic_dev 0xa17fb15a +sound/core/snd snd_card_set_generic_pm_callback 0xde5e45fd +sound/core/snd snd_card_set_pm_callback 0x999e43ad +sound/core/snd snd_cards 0x968b15ea +sound/core/snd snd_component_add 0xddc5f6d9 +sound/core/snd snd_ctl_add 0xb5cafbea +sound/core/snd snd_ctl_elem_read 0xfd4ba08d +sound/core/snd snd_ctl_elem_write 0x3d0fee80 +sound/core/snd snd_ctl_find_id 0x0ec2cdc9 +sound/core/snd snd_ctl_find_numid 0xc8d7c059 +sound/core/snd snd_ctl_free_one 0x59aeaa74 +sound/core/snd snd_ctl_new 0x75a53eef +sound/core/snd snd_ctl_new1 0x4e85930b +sound/core/snd snd_ctl_notify 0xa73db862 +sound/core/snd snd_ctl_register_ioctl 0x98f7b132 +sound/core/snd snd_ctl_register_ioctl_compat 0x82827b19 +sound/core/snd snd_ctl_remove 0xc4767d56 +sound/core/snd snd_ctl_remove_id 0x3d8c2ef6 +sound/core/snd snd_ctl_rename_id 0x9034180e +sound/core/snd snd_ctl_unregister_ioctl 0xbd393aa8 +sound/core/snd snd_ctl_unregister_ioctl_compat 0x7c84bfc6 +sound/core/snd snd_device_free 0xb892fb79 +sound/core/snd snd_device_new 0x6dad6313 +sound/core/snd snd_device_register 0x94b22719 +sound/core/snd snd_dma_disable 0x70c15ac1 +sound/core/snd snd_dma_pointer 0x191e88cf +sound/core/snd snd_dma_program 0x18e1683f +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0x45e5806a +sound/core/snd snd_info_create_module_entry 0x0c30ace1 +sound/core/snd snd_info_free_entry 0xfd8d0338 +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0x24735edb +sound/core/snd snd_info_unregister 0xeda2ba11 +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0xd442e28c +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0xcceacabf +sound/core/snd snd_register_device 0xce9cd0ca +sound/core/snd snd_register_oss_device 0x12101da6 +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0x0f0607d8 +sound/core/snd snd_unregister_device 0x0270d887 +sound/core/snd snd_unregister_oss_device 0x6f028422 +sound/core/snd-hwdep snd_hwdep_new 0xa559741f +sound/core/snd-page-alloc snd_dma_alloc_pages 0xa590ead8 +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0x591ac6ba +sound/core/snd-page-alloc snd_dma_free_pages 0x1ed1b1ba +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0x93d98dac +sound/core/snd-page-alloc snd_dma_reserve_buf 0x65b225ce +sound/core/snd-page-alloc snd_free_pages 0x19cc2ce3 +sound/core/snd-page-alloc snd_malloc_pages 0xc6829020 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x0beab9b1 +sound/core/snd-pcm snd_pcm_devices 0xb4e21f8b +sound/core/snd-pcm snd_pcm_format_big_endian 0x93878ece +sound/core/snd-pcm snd_pcm_format_linear 0x8733f967 +sound/core/snd-pcm snd_pcm_format_little_endian 0x8bbdc311 +sound/core/snd-pcm snd_pcm_format_name 0xedd5b5bd +sound/core/snd-pcm snd_pcm_format_physical_width 0xa8edfa41 +sound/core/snd-pcm snd_pcm_format_set_silence 0xdf124602 +sound/core/snd-pcm snd_pcm_format_signed 0xe2c5f868 +sound/core/snd-pcm snd_pcm_format_silence_64 0xda29bc77 +sound/core/snd-pcm snd_pcm_format_size 0xa2658908 +sound/core/snd-pcm snd_pcm_format_unsigned 0x95a60aa5 +sound/core/snd-pcm snd_pcm_format_width 0x55eb2175 +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0xb031c6e2 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0xd6f00c93 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0x9c0f951e +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x3ba0e7a0 +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0x777eac70 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x970a4f80 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x11364c7c +sound/core/snd-pcm snd_pcm_hw_constraint_step 0x1e19f23d +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0x168dd395 +sound/core/snd-pcm snd_pcm_hw_constraints_init 0x672d2f2b +sound/core/snd-pcm snd_pcm_hw_param_first 0x88ce073f +sound/core/snd-pcm snd_pcm_hw_param_last 0x276a50bf +sound/core/snd-pcm snd_pcm_hw_param_mask 0x5f2102b6 +sound/core/snd-pcm snd_pcm_hw_param_near 0x3428d073 +sound/core/snd-pcm snd_pcm_hw_param_set 0x86f1f4f9 +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0x46d7f28c +sound/core/snd-pcm snd_pcm_hw_rule_add 0x614a047e +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0x1ebc500f +sound/core/snd-pcm snd_pcm_kernel_ioctl 0x07f9b9c8 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x900820fa +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0x865c7b44 +sound/core/snd-pcm snd_pcm_lib_free_pages 0xb4037ad4 +sound/core/snd-pcm snd_pcm_lib_ioctl 0xcdece65e +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x8dfb30bf +sound/core/snd-pcm snd_pcm_lib_mmap_iomem 0x7d116384 +sound/core/snd-pcm snd_pcm_lib_period_bytes 0x7924421d +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x8fa4bbc1 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0x6f172f8e +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0xc3b29d74 +sound/core/snd-pcm snd_pcm_lib_read 0x42218577 +sound/core/snd-pcm snd_pcm_lib_readv 0xef310074 +sound/core/snd-pcm snd_pcm_lib_write 0xe533b957 +sound/core/snd-pcm snd_pcm_lib_writev 0x9e238ec4 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0xb069f673 +sound/core/snd-pcm snd_pcm_link_rwlock 0xb47e2d3d +sound/core/snd-pcm snd_pcm_mmap_data 0xa605f2b3 +sound/core/snd-pcm snd_pcm_new 0x9a267703 +sound/core/snd-pcm snd_pcm_new_stream 0x9bbd568c +sound/core/snd-pcm snd_pcm_notify 0x9435fc84 +sound/core/snd-pcm snd_pcm_open_substream 0xbed57225 +sound/core/snd-pcm snd_pcm_period_elapsed 0xdd8110ef +sound/core/snd-pcm snd_pcm_release_substream 0xf894e78e +sound/core/snd-pcm snd_pcm_set_ops 0x5d2a68b2 +sound/core/snd-pcm snd_pcm_set_sync 0x75589f48 +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0xd2b8bc9a +sound/core/snd-pcm snd_pcm_stop 0x15e49d2e +sound/core/snd-pcm snd_pcm_suspend 0x23f13511 +sound/core/snd-pcm snd_pcm_suspend_all 0xe67d3050 +sound/core/snd-rawmidi snd_rawmidi_drain_input 0x7104c1c7 +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x95afaf4d +sound/core/snd-rawmidi snd_rawmidi_drop_output 0xfab9329b +sound/core/snd-rawmidi snd_rawmidi_info 0x7ea003d9 +sound/core/snd-rawmidi snd_rawmidi_info_select 0x4bfed147 +sound/core/snd-rawmidi snd_rawmidi_input_params 0xbe626e20 +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x50e7e999 +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0x055356cb +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0x2044132e +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x50e29795 +sound/core/snd-rawmidi snd_rawmidi_new 0xcd2cd315 +sound/core/snd-rawmidi snd_rawmidi_output_params 0xbac92c20 +sound/core/snd-rawmidi snd_rawmidi_receive 0x9a7a4ce6 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x995be58b +sound/core/snd-rawmidi snd_rawmidi_transmit 0x40b1b3e6 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0xa21d2ca8 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x0700c874 +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0x95121e85 +sound/core/snd-timer snd_timer_close 0x2cea2906 +sound/core/snd-timer snd_timer_continue 0x13fa5669 +sound/core/snd-timer snd_timer_global_free 0x7e17b00e +sound/core/snd-timer snd_timer_global_new 0x6fce7e16 +sound/core/snd-timer snd_timer_global_register 0x67a3f1e5 +sound/core/snd-timer snd_timer_global_unregister 0x51d0e690 +sound/core/snd-timer snd_timer_interrupt 0xc5e94074 +sound/core/snd-timer snd_timer_new 0x752cb553 +sound/core/snd-timer snd_timer_notify 0x3ec16026 +sound/core/snd-timer snd_timer_open 0x7b8462d0 +sound/core/snd-timer snd_timer_pause 0x86424e85 +sound/core/snd-timer snd_timer_resolution 0x10d33d96 +sound/core/snd-timer snd_timer_start 0x7a029ceb +sound/core/snd-timer snd_timer_stop 0xf54becfd +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0x93762478 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0xc555cf21 +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0xe96bb6c5 +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0x08425f5f +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0x93672561 +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0xebe5d195 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0x49fb14d0 +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0x47d53390 +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0xcfcfb520 +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x707742b3 +sound/drivers/vx/snd-vx-lib snd_vx_create 0x0c1d1029 +sound/drivers/vx/snd-vx-lib snd_vx_delay 0x23f66e5c +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x5f01afd3 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x02560df8 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0xdf040a38 +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0xa1fdbe0c +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0x4b6d0170 +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0x057ed97a +sound/i2c/other/snd-ak4114 snd_ak4114_build 0x3ad408a7 +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0x21fdaa1f +sound/i2c/other/snd-ak4114 snd_ak4114_create 0x9e70bcd2 +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0x1c761055 +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0x2c082d27 +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0xdd63da3d +sound/i2c/other/snd-ak4117 snd_ak4117_build 0x01602f9b +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0xaa776874 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0x95e6bf9e +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x4f3e6ac5 +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x9b28b6d8 +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0xc3619e83 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0x1dde1f1e +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0x80b268da +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0xe8705647 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0xd2bd8bf6 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0x5b73683f +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0x8bf1b7a7 +sound/i2c/snd-cs8427 snd_cs8427_create 0x1e6dfd77 +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0x0c820e52 +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0x2a8c7a3f +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0xb9372729 +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0xa4403215 +sound/i2c/snd-cs8427 snd_cs8427_reset 0x973b863e +sound/i2c/snd-i2c snd_i2c_bus_create 0x60dc30f9 +sound/i2c/snd-i2c snd_i2c_device_create 0x8b2232a2 +sound/i2c/snd-i2c snd_i2c_device_free 0x5e789572 +sound/i2c/snd-i2c snd_i2c_probeaddr 0x04ed3b0d +sound/i2c/snd-i2c snd_i2c_readbytes 0xcb78e94e +sound/i2c/snd-i2c snd_i2c_sendbytes 0xa1dad62c +sound/isa/sb/snd-sb-common snd_sbdsp_command 0xe8328620 +sound/isa/sb/snd-sb-common snd_sbdsp_create 0x387aa93d +sound/isa/sb/snd-sb-common snd_sbdsp_get_byte 0x4821924d +sound/isa/sb/snd-sb-common snd_sbdsp_reset 0x03e2e10a +sound/isa/sb/snd-sb-common snd_sbmixer_add_ctl 0xcd2d0edd +sound/isa/sb/snd-sb-common snd_sbmixer_new 0xb1a0c147 +sound/isa/sb/snd-sb-common snd_sbmixer_read 0xe6054297 +sound/isa/sb/snd-sb-common snd_sbmixer_write 0x0d8537a9 +sound/oss/ac97_codec ac97_alloc_codec 0x3ff65ffe +sound/oss/ac97_codec ac97_probe_codec 0x0083452d +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0xa98a2a2b +sound/oss/ac97_codec ac97_release_codec 0x66042b4e +sound/oss/ac97_codec ac97_restore_state 0x4d8f7d81 +sound/oss/ac97_codec ac97_save_state 0xd0116496 +sound/oss/ac97_codec ac97_set_adc_rate 0x75ef9b04 +sound/oss/ac97_codec ac97_set_dac_rate 0x3f30b14e +sound/oss/ac97_codec ac97_tune_hardware 0xad380fc0 +sound/oss/ac97_codec ac97_unregister_driver 0xfa32ee5d +sound/oss/aci aci_port 0x0d82adb6 +sound/oss/aci aci_rw_cmd 0xcc7c4cd8 +sound/oss/aci aci_version 0x93350c87 +sound/oss/ad1848 ad1848_control 0xc04f6f67 +sound/oss/ad1848 ad1848_detect 0x845a1638 +sound/oss/ad1848 ad1848_init 0x5fa78532 +sound/oss/ad1848 ad1848_unload 0x9bf1cc62 +sound/oss/ad1848 adintr 0xf8832770 +sound/oss/ad1848 attach_ms_sound 0xb9108b6a +sound/oss/ad1848 probe_ms_sound 0x65e6d1ca +sound/oss/ad1848 unload_ms_sound 0xb29a9148 +sound/oss/mpu401 attach_mpu401 0xba11f128 +sound/oss/mpu401 intchk_mpu401 0x5fe6dd42 +sound/oss/mpu401 mpuintr 0x871374e3 +sound/oss/mpu401 probe_mpu401 0x5c8d3e32 +sound/oss/mpu401 unload_mpu401 0x5febf284 +sound/oss/opl3 opl3_detect 0x67481767 +sound/oss/opl3 opl3_init 0x419c0739 +sound/oss/sb_lib probe_sbmpu 0xe36d8179 +sound/oss/sb_lib sb_be_quiet 0x42424109 +sound/oss/sb_lib sb_dsp_detect 0xd8a2731c +sound/oss/sb_lib sb_dsp_init 0xbb04857e +sound/oss/sb_lib sb_dsp_unload 0xc4884969 +sound/oss/sb_lib smw_free 0x450f9aea +sound/oss/sb_lib unload_sbmpu 0x74afd69c +sound/oss/sound DMAbuf_close_dma 0xc88b42ab +sound/oss/sound DMAbuf_inputintr 0xeb315d99 +sound/oss/sound DMAbuf_open_dma 0x06b3013d +sound/oss/sound DMAbuf_outputintr 0x987bcf12 +sound/oss/sound DMAbuf_start_dma 0xe056b71c +sound/oss/sound MIDIbuf_avail 0x1f395686 +sound/oss/sound audio_devs 0x1f6e644c +sound/oss/sound cent_tuning 0x03ce7ff7 +sound/oss/sound compute_finetune 0x04c87ec8 +sound/oss/sound conf_printf 0x0f280035 +sound/oss/sound conf_printf2 0x7bdf0907 +sound/oss/sound do_midi_msg 0xb51587f6 +sound/oss/sound load_mixer_volumes 0xa1d5f04f +sound/oss/sound midi_devs 0x28c16af1 +sound/oss/sound midi_synth_aftertouch 0xf1ea8a20 +sound/oss/sound midi_synth_bender 0xba7dd041 +sound/oss/sound midi_synth_close 0xad45df73 +sound/oss/sound midi_synth_controller 0x892093e0 +sound/oss/sound midi_synth_hw_control 0xb14b22cd +sound/oss/sound midi_synth_ioctl 0xaef743b2 +sound/oss/sound midi_synth_kill_note 0x2aa31695 +sound/oss/sound midi_synth_load_patch 0xf7426da3 +sound/oss/sound midi_synth_open 0xf6b3a2fb +sound/oss/sound midi_synth_panning 0xdb400afa +sound/oss/sound midi_synth_reset 0x56504ca2 +sound/oss/sound midi_synth_send_sysex 0xfddcbfb3 +sound/oss/sound midi_synth_set_instr 0xd85be938 +sound/oss/sound midi_synth_setup_voice 0x4ff47e9d +sound/oss/sound midi_synth_start_note 0x9bdaf24d +sound/oss/sound mixer_devs 0xc8697f2f +sound/oss/sound note_to_freq 0x5d986fc9 +sound/oss/sound num_audiodevs 0x4cd01bdd +sound/oss/sound num_midis 0xa1eae7cf +sound/oss/sound num_mixers 0x9d845b18 +sound/oss/sound semitone_tuning 0x8b84aeb1 +sound/oss/sound seq_copy_to_input 0x7679ee76 +sound/oss/sound seq_input_event 0x17ba231d +sound/oss/sound sequencer_init 0xf78f6363 +sound/oss/sound sequencer_timer 0x90bd9714 +sound/oss/sound sound_alloc_dma 0x9a95733f +sound/oss/sound sound_alloc_mididev 0xba413f87 +sound/oss/sound sound_alloc_mixerdev 0x1b3df3cf +sound/oss/sound sound_alloc_synthdev 0xc748d109 +sound/oss/sound sound_alloc_timerdev 0x51e354b2 +sound/oss/sound sound_close_dma 0x418f5fbe +sound/oss/sound sound_free_dma 0x394cb088 +sound/oss/sound sound_install_audiodrv 0xec2ca4b3 +sound/oss/sound sound_install_mixer 0xda1ccd9b +sound/oss/sound sound_open_dma 0xcc4b8797 +sound/oss/sound sound_timer_devs 0xd785df73 +sound/oss/sound sound_timer_init 0x2161d5e8 +sound/oss/sound sound_timer_interrupt 0xe2675a79 +sound/oss/sound sound_timer_syncinterval 0xfa6871be +sound/oss/sound sound_unload_audiodev 0xa948751e +sound/oss/sound sound_unload_mididev 0xa6bb414c +sound/oss/sound sound_unload_mixerdev 0xa51c913b +sound/oss/sound sound_unload_synthdev 0x06339815 +sound/oss/sound sound_unload_timerdev 0xa41ead5f +sound/oss/sound synth_devs 0x1fcdf6d1 +sound/oss/uart401 probe_uart401 0xd3924fa1 +sound/oss/uart401 uart401intr 0x8a87560a +sound/oss/uart401 unload_uart401 0xecfdd9c9 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0xbd02c9cd +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0xb3f728e9 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0x7f1666e8 +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0x53c54e85 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0x27bfb7f1 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x768e576b +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0xa5d869b1 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0xf05686d0 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0xc072aacf +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0x878e8e4e +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0xc079972a +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0xe0fd977c +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0xc04dd80c +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0xe3c43bd4 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0x2c863d32 +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0x9f54ded0 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0x1e40d1f1 +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0x9198eb73 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0x93436471 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x6d8fe47c +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0x14927b41 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0xc81ab10f +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0x47d422ab +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0xccfa9595 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0x723d7093 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0xc70a839a +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0x49efe555 +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0xa2b85c96 +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0xdcc4c983 +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0xe02e967d +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0x4326b82b +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0x03a260c9 +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0x253a0ecf +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0x68a23f58 +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0xf165dc11 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0xd5d6624b +sound/pci/hda/snd-hda-codec snd_hda_resume 0x7432e6b3 +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0xb047743d +sound/pci/hda/snd-hda-codec snd_hda_suspend 0xacf6ba6d +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0xf9e717d6 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0x344a8fe9 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0xc01de4d2 +sound/pci/trident/snd-trident snd_trident_alloc_voice 0xb9577208 +sound/pci/trident/snd-trident snd_trident_free_voice 0x5820bd5e +sound/pci/trident/snd-trident snd_trident_start_voice 0x4f4c1d97 +sound/pci/trident/snd-trident snd_trident_stop_voice 0x601535d7 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0xe962f453 +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0xd95d2fce +sound/pci/trident/snd-trident snd_trident_synth_free 0x89eb7167 +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0x6f5b0b48 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0x086d337e +sound/soundcore register_sound_midi 0xdab4658b +sound/soundcore register_sound_mixer 0x0f21fd41 +sound/soundcore register_sound_special 0xe254b021 +sound/soundcore register_sound_special_device 0x3af95e24 +sound/soundcore register_sound_synth 0xd621f1fa +sound/soundcore sound_class 0x82e1cb42 +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +sound/synth/emux/snd-emux-synth snd_emux_free 0x3cfa51b8 +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0x62c8a7d3 +sound/synth/emux/snd-emux-synth snd_emux_new 0x889ed903 +sound/synth/emux/snd-emux-synth snd_emux_register 0xb0eabda1 +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0x21cc8ead +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0xe686331a +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0x6659fbd6 +sound/synth/snd-util-mem __snd_util_mem_free 0xfb3d3b53 +sound/synth/snd-util-mem __snd_util_memblk_new 0x8817e75e +sound/synth/snd-util-mem snd_util_mem_alloc 0x1423e860 +sound/synth/snd-util-mem snd_util_mem_avail 0x7b8b6a47 +sound/synth/snd-util-mem snd_util_mem_free 0x742d3d00 +sound/synth/snd-util-mem snd_util_memhdr_free 0x5de0b4fb +sound/synth/snd-util-mem snd_util_memhdr_new 0x47ac597a +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0xf500c401 +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux I_BDEV 0xa7cf723d +vmlinux SELECT_DRIVE 0x620a2857 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0x94a23389 +vmlinux __alloc_pages 0xa95cb158 +vmlinux __alloc_percpu 0x55f2580b +vmlinux __alloc_skb 0xc2b8e4e2 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0x736b724e +vmlinux __bio_clone 0xa5c0d657 +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0xaaa5bd48 +vmlinux __bread 0x8b733dd7 +vmlinux __breadahead 0xadeef3fb +vmlinux __break_lease 0xb1898a98 +vmlinux __brelse 0x37ec6af4 +vmlinux __builtin_strlen 0xe3ed7844 +vmlinux __check_region 0xf1d0cdab +vmlinux __clear_user 0xf3341268 +vmlinux __const_udelay 0xeae3dfd6 +vmlinux __cpufreq_driver_target 0xf7d89aea +vmlinux __create_workqueue 0x6ab94307 +vmlinux __d_path 0x4b023137 +vmlinux __delay 0x466c14a7 +vmlinux __dev_get_by_index 0xec2170d2 +vmlinux __dev_get_by_name 0x8e154cca +vmlinux __dev_remove_pack 0xfd1121f2 +vmlinux __down_failed 0x7a7ef853 +vmlinux __down_failed_interruptible 0xccd52b12 +vmlinux __down_failed_trylock 0xe9a60ad6 +vmlinux __down_read 0x1bb20d36 +vmlinux __down_read_trylock 0x71bc891d +vmlinux __down_write 0xa99fba32 +vmlinux __down_write_trylock 0x2e5de2a7 +vmlinux __downgrade_write 0xd0828cee +vmlinux __dst_free 0xc1386189 +vmlinux __elv_add_request 0x23ffc0a1 +vmlinux __find_get_block 0x7149c5fc +vmlinux __free_pages 0x97870244 +vmlinux __generic_file_aio_read 0x455b6f96 +vmlinux __generic_unplug_device 0x11c87598 +vmlinux __get_free_pages 0x93fca811 +vmlinux __get_user_1 0x167e7f9d +vmlinux __get_user_2 0x8f9c199c +vmlinux __get_user_4 0x6729d3df +vmlinux __get_user_8 0x6d334118 +vmlinux __getblk 0xae0328e9 +vmlinux __ide_abort 0x3e5be0d2 +vmlinux __ide_dma_bad_drive 0x08001bac +vmlinux __ide_dma_check 0x07e56835 +vmlinux __ide_dma_end 0x7ccc614d +vmlinux __ide_dma_good_drive 0x3c9b986e +vmlinux __ide_dma_host_off 0x7c0cb2cf +vmlinux __ide_dma_host_on 0x2de063ba +vmlinux __ide_dma_lostirq 0x20e42d6a +vmlinux __ide_dma_off 0xd6e6d330 +vmlinux __ide_dma_off_quietly 0x7bd853bc +vmlinux __ide_dma_on 0xcdcdc3d4 +vmlinux __ide_dma_timeout 0xd202923b +vmlinux __ide_end_request 0xf1612994 +vmlinux __ide_error 0xf4085cf8 +vmlinux __ide_pci_register_driver 0x28ddf3e0 +vmlinux __inet_lookup_listener 0x4fe07e43 +vmlinux __inet_twsk_hashdance 0x9bbc1d84 +vmlinux __inet_twsk_kill 0x920b8139 +vmlinux __init_timer_base 0x049a5196 +vmlinux __inode_dir_notify 0x91bf2f3b +vmlinux __insert_inode_hash 0x84ca9284 +vmlinux __invalidate_device 0xe575adab +vmlinux __ioremap 0x9eac042a +vmlinux __ip_route_output_key 0x8d01834d +vmlinux __ip_select_ident 0xff488d2c +vmlinux __kfifo_get 0x07527e0d +vmlinux __kfifo_put 0x7c775173 +vmlinux __kfree_skb 0x844b4dd8 +vmlinux __kill_fasync 0x76cd2fe9 +vmlinux __kmalloc 0x5a34a45c +vmlinux __lock_buffer 0xca6c51f4 +vmlinux __lock_page 0x5866e0ba +vmlinux __mark_inode_dirty 0xe84091ed +vmlinux __memcpy 0xc16fe12d +vmlinux __memcpy_fromio 0xf666cbb3 +vmlinux __memcpy_toio 0x5252f304 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xbffc0a90 +vmlinux __module_put_and_exit 0xfcfc567e +vmlinux __ndelay 0xdf8c695a +vmlinux __neigh_event_send 0xbe40f14c +vmlinux __neigh_for_each_release 0x878f61a7 +vmlinux __net_timestamp 0x5a284b3c +vmlinux __netdev_watchdog_up 0xf50e68f8 +vmlinux __nla_put 0xeb32a184 +vmlinux __nla_reserve 0x28c39286 +vmlinux __node_distance 0x46c47fb6 +vmlinux __page_cache_release 0xc687b117 +vmlinux __pagevec_lru_add 0xe2e3e624 +vmlinux __pagevec_release 0xffaac6f4 +vmlinux __pci_register_driver 0x1ce00b32 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0xb896470a +vmlinux __put_user_1 0xc3aaf0a9 +vmlinux __put_user_2 0x5a4896a8 +vmlinux __put_user_4 0xb2fd5ceb +vmlinux __put_user_8 0xb8e7ce2c +vmlinux __read_lock_failed 0xefc3bbec +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0x484a05a2 +vmlinux __scm_destroy 0x274e1c7e +vmlinux __scm_send 0x934b7ad5 +vmlinux __secpath_destroy 0x3f1f1e6b +vmlinux __serio_register_driver 0xbdd74adc +vmlinux __serio_register_port 0xb2589fbb +vmlinux __serio_unregister_port_delayed 0xf9bea276 +vmlinux __set_page_dirty_buffers 0xb6be06fa +vmlinux __set_page_dirty_nobuffers 0x709ecb33 +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0xef771c73 +vmlinux __skb_checksum_complete 0xd9c2659d +vmlinux __skb_linearize 0x638db6fd +vmlinux __strncpy_from_user 0xc003c637 +vmlinux __supported_pte_mask 0xfb3a28c3 +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x267fc65b +vmlinux __tasklet_schedule 0xf397b9aa +vmlinux __tcf_em_tree_match 0x9e4e37af +vmlinux __udelay 0x9e7d6bd0 +vmlinux __up_read 0x31632568 +vmlinux __up_wakeup 0x1042cbb5 +vmlinux __up_write 0x256617e9 +vmlinux __user_walk 0x196835fd +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0xb2ba62b5 +vmlinux __wait_on_bit_lock 0x80428c80 +vmlinux __wait_on_buffer 0x1dcd7495 +vmlinux __wake_up 0xdb09708f +vmlinux __wake_up_bit 0x5315f750 +vmlinux __wake_up_sync 0xf4488540 +vmlinux __write_lock_failed 0x2e3ff269 +vmlinux __xfrm_policy_check 0x6c22ac8f +vmlinux __xfrm_policy_destroy 0xeb0ddf7c +vmlinux __xfrm_route_forward 0xfe637e9f +vmlinux __xfrm_state_destroy 0x1b5697b0 +vmlinux _atomic_dec_and_lock 0x16250200 +vmlinux _ctype 0x8d3894f2 +vmlinux _read_lock 0x3ee75e03 +vmlinux _read_lock_bh 0xcac4d7ff +vmlinux _read_lock_irq 0xb75dcfee +vmlinux _read_lock_irqsave 0xb55d21a7 +vmlinux _read_trylock 0x75e0ffd5 +vmlinux _read_unlock 0x7ac1c46f +vmlinux _read_unlock_bh 0xd2aa0292 +vmlinux _read_unlock_irq 0x8446bcde +vmlinux _read_unlock_irqrestore 0xc91fb9aa +vmlinux _spin_lock 0x429328d9 +vmlinux _spin_lock_bh 0x8bcc3a3a +vmlinux _spin_lock_irq 0x6220b988 +vmlinux _spin_lock_irqsave 0xdd5a37a7 +vmlinux _spin_trylock 0x3922d605 +vmlinux _spin_trylock_bh 0x3906b93c +vmlinux _spin_unlock 0x01e9f0ee +vmlinux _spin_unlock_bh 0x53d91e59 +vmlinux _spin_unlock_irq 0xb6439c4e +vmlinux _spin_unlock_irqrestore 0x0df15005 +vmlinux _write_lock 0x92d0d1f4 +vmlinux _write_lock_bh 0x7ee9938d +vmlinux _write_lock_irq 0x09e2f2ba +vmlinux _write_lock_irqsave 0xe042c57d +vmlinux _write_trylock 0x6bfe993d +vmlinux _write_unlock 0x5c3b8193 +vmlinux _write_unlock_bh 0xbe122842 +vmlinux _write_unlock_irq 0x02f9d620 +vmlinux _write_unlock_irqrestore 0xb13f8fb6 +vmlinux acpi_acquire_global_lock 0x70d8ab82 +vmlinux acpi_bus_add 0x4c218af0 +vmlinux acpi_bus_generate_event 0x0e423f79 +vmlinux acpi_bus_get_device 0xef0e9f0c +vmlinux acpi_bus_get_power 0x7389c9a8 +vmlinux acpi_bus_get_status 0xc5cc6d26 +vmlinux acpi_bus_receive_event 0x141dbf9b +vmlinux acpi_bus_register_driver 0x8f83f0e5 +vmlinux acpi_bus_set_power 0xcb733bf2 +vmlinux acpi_bus_start 0x81898ed2 +vmlinux acpi_bus_unregister_driver 0x9357139c +vmlinux acpi_clear_event 0x0fd00a68 +vmlinux acpi_dbg_layer 0xb3284531 +vmlinux acpi_dbg_level 0xca8acc78 +vmlinux acpi_disable_event 0xb758b225 +vmlinux acpi_disabled 0x1a45cb6c +vmlinux acpi_ec_read 0x0dd1015f +vmlinux acpi_ec_write 0xa2bb10ba +vmlinux acpi_enable_event 0x6237f6b5 +vmlinux acpi_enable_gpe 0xf47d47e0 +vmlinux acpi_enter_sleep_state 0xfe047ce6 +vmlinux acpi_enter_sleep_state_s4bios 0x20092385 +vmlinux acpi_evaluate_integer 0xc598bf3e +vmlinux acpi_evaluate_object 0x1d146440 +vmlinux acpi_evaluate_reference 0x9044cb34 +vmlinux acpi_extract_package 0xd041334b +vmlinux acpi_fadt 0xddcb58d9 +vmlinux acpi_fadt_is_v1 0x01438985 +vmlinux acpi_get_child 0xda268faa +vmlinux acpi_get_current_resources 0x967c2a85 +vmlinux acpi_get_devices 0xee46feef +vmlinux acpi_get_firmware_table 0x5331e1b5 +vmlinux acpi_get_handle 0x2bfeb410 +vmlinux acpi_get_name 0x08c4f629 +vmlinux acpi_get_next_object 0x170c25ee +vmlinux acpi_get_object_info 0x797435d0 +vmlinux acpi_get_parent 0xfb0443fb +vmlinux acpi_get_pci_id 0x058c75d9 +vmlinux acpi_get_pci_rootbridge_handle 0x1f8ec1b3 +vmlinux acpi_get_physical_device 0x4164f618 +vmlinux acpi_get_pxm 0x0a372247 +vmlinux acpi_get_register 0x2b5d6f73 +vmlinux acpi_get_sleep_type_data 0x8d8d96c6 +vmlinux acpi_get_table 0x3b289c5b +vmlinux acpi_get_type 0x0d3dda14 +vmlinux acpi_in_suspend 0xf78a658e +vmlinux acpi_install_address_space_handler 0xff03752f +vmlinux acpi_install_fixed_event_handler 0x5ac376a5 +vmlinux acpi_install_gpe_block 0xda8ddbdf +vmlinux acpi_install_gpe_handler 0x02aff2f4 +vmlinux acpi_install_notify_handler 0xd9091363 +vmlinux acpi_map_lsapic 0xda0a6b0e +vmlinux acpi_os_create_semaphore 0x9f8733e2 +vmlinux acpi_os_delete_semaphore 0xe65a005c +vmlinux acpi_os_free 0x43b9bbb4 +vmlinux acpi_os_printf 0x667cecc9 +vmlinux acpi_os_queue_for_execution 0xdb9d67ff +vmlinux acpi_os_read_pci_configuration 0xd94c1770 +vmlinux acpi_os_read_port 0xbdaf5b07 +vmlinux acpi_os_signal 0x874aea72 +vmlinux acpi_os_signal_semaphore 0x8cdbc08d +vmlinux acpi_os_sleep 0x540f9040 +vmlinux acpi_os_stall 0x69005013 +vmlinux acpi_os_wait_events_complete 0xc9ab2eef +vmlinux acpi_os_wait_semaphore 0x2565a159 +vmlinux acpi_os_write_port 0x7d94f746 +vmlinux acpi_pci_irq_enable 0x986276ca +vmlinux acpi_pci_register_driver 0xd1472061 +vmlinux acpi_pci_unregister_driver 0x43385ad9 +vmlinux acpi_register_gsi 0x36d5355b +vmlinux acpi_register_ioapic 0x636a5691 +vmlinux acpi_release_global_lock 0x3e2ae3a8 +vmlinux acpi_remove_address_space_handler 0xfcfaa928 +vmlinux acpi_remove_fixed_event_handler 0x2005e68a +vmlinux acpi_remove_gpe_block 0x8e002cda +vmlinux acpi_remove_gpe_handler 0xb07dfb3d +vmlinux acpi_remove_notify_handler 0x2bb55d6e +vmlinux acpi_resource_to_address64 0x263b54cc +vmlinux acpi_root_dir 0x2fb368c9 +vmlinux acpi_set_current_resources 0xdc24d101 +vmlinux acpi_set_gpe_type 0xa3bbcd80 +vmlinux acpi_set_register 0x4a9d86e3 +vmlinux acpi_specific_hotkey_enabled 0x46621493 +vmlinux acpi_strict 0xa59c0666 +vmlinux acpi_unmap_lsapic 0xd18b6eb2 +vmlinux acpi_unregister_ioapic 0xe716baed +vmlinux acpi_walk_namespace 0x19d5d20a +vmlinux acpi_walk_resources 0x375c5115 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0x69bb52f8 +vmlinux add_disk_randomness 0x71ce5e37 +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0x620a3dac +vmlinux add_wait_queue 0x6989875b +vmlinux add_wait_queue_exclusive 0x33b3949a +vmlinux adjust_resource 0xfd05bd8a +vmlinux agp3_generic_cleanup 0xc2424641 +vmlinux agp3_generic_configure 0x4b085dbf +vmlinux agp3_generic_fetch_size 0xde9b17ed +vmlinux agp3_generic_sizes 0x546264cf +vmlinux agp3_generic_tlbflush 0x3d84a5a4 +vmlinux agp_add_bridge 0x84e50748 +vmlinux agp_alloc_bridge 0xe450651c +vmlinux agp_allocate_memory 0x81c07272 +vmlinux agp_backend_acquire 0xa32eeb91 +vmlinux agp_backend_release 0x87b4c747 +vmlinux agp_bind_memory 0x055191b3 +vmlinux agp_bridge 0xb76ae70c +vmlinux agp_bridges 0x673f815e +vmlinux agp_collect_device_status 0x7ae03c84 +vmlinux agp_copy_info 0xb4e4ce5a +vmlinux agp_create_memory 0x7bd29957 +vmlinux agp_device_command 0xe6d5c272 +vmlinux agp_enable 0x452cd14a +vmlinux agp_find_bridge 0x0e768669 +vmlinux agp_free_key 0xd0fef3b2 +vmlinux agp_free_memory 0xf9aa8f5f +vmlinux agp_generic_alloc_by_type 0x5904a031 +vmlinux agp_generic_alloc_page 0x563c75b6 +vmlinux agp_generic_create_gatt_table 0x921ef982 +vmlinux agp_generic_destroy_page 0xbba27749 +vmlinux agp_generic_enable 0xed3348fd +vmlinux agp_generic_free_by_type 0x43c0566f +vmlinux agp_generic_free_gatt_table 0xd05d6eeb +vmlinux agp_generic_insert_memory 0x19cf4041 +vmlinux agp_generic_mask_memory 0xd7114102 +vmlinux agp_generic_remove_memory 0x158319ec +vmlinux agp_memory_reserved 0xe089cfcc +vmlinux agp_num_entries 0xd6feefa5 +vmlinux agp_off 0x7538b132 +vmlinux agp_put_bridge 0x14bd8a33 +vmlinux agp_remove_bridge 0x18d867ba +vmlinux agp_try_unsupported_boot 0xc5d9c46c +vmlinux agp_unbind_memory 0xf1326261 +vmlinux aio_complete 0x308dddb9 +vmlinux aio_put_req 0x18a99e71 +vmlinux alloc_buffer_head 0x1e260b47 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0x737abe43 +vmlinux alloc_disk_node 0x3de92f97 +vmlinux alloc_etherdev 0xa4d0a492 +vmlinux alloc_fcdev 0x0c427cbc +vmlinux alloc_fddidev 0x1be71e12 +vmlinux alloc_hippi_dev 0x4d4dd70b +vmlinux alloc_netdev 0x56495b29 +vmlinux alloc_page_buffers 0x311ce45f +vmlinux alloc_pages_current 0x2cb2dd8f +vmlinux alloc_trdev 0xe20ffb22 +vmlinux alloc_tty_driver 0x5d45eaee +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0x1e15c6c0 +vmlinux anon_transport_class_unregister 0xa4d50e80 +vmlinux arch_acpi_processor_init_pdc 0x576df302 +vmlinux arch_register_cpu 0x2dd16564 +vmlinux arch_unregister_cpu 0x0237b57a +vmlinux arp_broken_ops 0x4e2071c1 +vmlinux arp_create 0x5842c056 +vmlinux arp_find 0xb6d41dc2 +vmlinux arp_rcv 0xad4ae7e5 +vmlinux arp_send 0x5f4d8160 +vmlinux arp_tbl 0x72ea5ed8 +vmlinux arp_xmit 0xf88b8ceb +vmlinux atm_alloc_charge 0xddc34f2f +vmlinux atm_charge 0x0f906c86 +vmlinux atm_dev_deregister 0x52f4dd56 +vmlinux atm_dev_lookup 0x035ef459 +vmlinux atm_dev_register 0x5f8eeb4b +vmlinux atm_init_aal5 0x0a04d3d4 +vmlinux atm_pcr_goal 0xf49bc67a +vmlinux atm_proc_root 0xd4d51010 +vmlinux attribute_container_add_attrs 0xd455216b +vmlinux attribute_container_add_class_device 0x664d088c +vmlinux attribute_container_add_class_device_adapter 0xaadf0da1 +vmlinux attribute_container_class_device_del 0x6b58b895 +vmlinux attribute_container_classdev_to_container 0x7255379d +vmlinux attribute_container_device_trigger 0xd2377655 +vmlinux attribute_container_find_class_device 0xfffb2698 +vmlinux attribute_container_register 0xf6a48e53 +vmlinux attribute_container_remove_attrs 0xdf3efc4b +vmlinux attribute_container_remove_device 0xcb712f02 +vmlinux attribute_container_trigger 0x754fa027 +vmlinux attribute_container_unregister 0x2f129cf3 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux bad_dma_address 0x1675606f +vmlinux balance_dirty_pages_ratelimited 0x0f17b3da +vmlinux bd_claim 0x233fb7c6 +vmlinux bd_release 0xad817434 +vmlinux bd_set_size 0xda267c7c +vmlinux bdev_read_only 0xd0944315 +vmlinux bdevname 0x64c70391 +vmlinux bdget 0x2c14c9ba +vmlinux bdput 0x0603872c +vmlinux bfifo_qdisc_ops 0x1730991d +vmlinux bio_add_page 0x528d541d +vmlinux bio_alloc 0x062f75f4 +vmlinux bio_alloc_bioset 0xb7860673 +vmlinux bio_clone 0x8b264fe7 +vmlinux bio_copy_user 0x6f8c8e06 +vmlinux bio_endio 0xd9dfe83e +vmlinux bio_free 0x3816a8c6 +vmlinux bio_get_nr_vecs 0x1c00f30e +vmlinux bio_hw_segments 0xa10b823a +vmlinux bio_init 0xdf9216f9 +vmlinux bio_map_kern 0xf1c40e7a +vmlinux bio_map_user 0x1713350c +vmlinux bio_pair_release 0x59848b2b +vmlinux bio_phys_segments 0x35128b8b +vmlinux bio_put 0x57de4de4 +vmlinux bio_split 0xbb14c1e7 +vmlinux bio_split_pool 0x2146f99f +vmlinux bio_uncopy_user 0x761a5711 +vmlinux bio_unmap_user 0x1a2cd0a6 +vmlinux bioset_create 0x68c208d9 +vmlinux bioset_free 0x35146399 +vmlinux bit_waitqueue 0xcb7bc48a +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0x90c15a13 +vmlinux blk_alloc_queue_node 0xf4616a14 +vmlinux blk_cleanup_queue 0xcd9b07bf +vmlinux blk_complete_barrier_rq 0xa1d62e25 +vmlinux blk_complete_barrier_rq_locked 0x00cee71b +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0xff7d40fa +vmlinux blk_end_sync_rq 0xbd7dc4a2 +vmlinux blk_execute_rq 0x31337910 +vmlinux blk_get_backing_dev_info 0x00db6f93 +vmlinux blk_get_queue 0x048448c0 +vmlinux blk_get_request 0x59b1c9aa +vmlinux blk_init_queue 0xa73e9cba +vmlinux blk_init_queue_node 0x44466af2 +vmlinux blk_insert_request 0x47b992a5 +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0x5e56501f +vmlinux blk_put_request 0x5142dc17 +vmlinux blk_queue_activity_fn 0x6986829a +vmlinux blk_queue_bounce 0x6df91388 +vmlinux blk_queue_bounce_limit 0x55968350 +vmlinux blk_queue_dma_alignment 0x92cfbf48 +vmlinux blk_queue_end_tag 0x7d87d3d5 +vmlinux blk_queue_find_tag 0x3084071a +vmlinux blk_queue_free_tags 0x6bb62fa8 +vmlinux blk_queue_hardsect_size 0x49f95109 +vmlinux blk_queue_init_tags 0xbbfd72f8 +vmlinux blk_queue_invalidate_tags 0x38853980 +vmlinux blk_queue_issue_flush_fn 0x5fef9044 +vmlinux blk_queue_make_request 0x9b31880b +vmlinux blk_queue_max_hw_segments 0x9729d088 +vmlinux blk_queue_max_phys_segments 0x29b888dc +vmlinux blk_queue_max_sectors 0xdb583e1d +vmlinux blk_queue_max_segment_size 0x1a2fb4aa +vmlinux blk_queue_merge_bvec 0x19c5422b +vmlinux blk_queue_ordered 0xf4bd99c5 +vmlinux blk_queue_prep_rq 0x8ce07342 +vmlinux blk_queue_resize_tags 0x03bf327b +vmlinux blk_queue_segment_boundary 0x25cead5f +vmlinux blk_queue_stack_limits 0x74565415 +vmlinux blk_queue_start_tag 0x559df52c +vmlinux blk_register_region 0x9a2f893a +vmlinux blk_remove_plug 0x47a7e074 +vmlinux blk_requeue_request 0x7458ee09 +vmlinux blk_rq_bio_prep 0x10d79d28 +vmlinux blk_rq_map_kern 0x6c3721f8 +vmlinux blk_rq_map_sg 0xb5bae0d0 +vmlinux blk_rq_map_user 0x6bbde39f +vmlinux blk_rq_map_user_iov 0xfd3a372c +vmlinux blk_rq_unmap_user 0xf29bec54 +vmlinux blk_run_queue 0xd316fa5e +vmlinux blk_start_queue 0x04256ffc +vmlinux blk_stop_queue 0x3b4a48b3 +vmlinux blk_sync_queue 0xd97bc062 +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0x81230905 +vmlinux blkdev_ioctl 0xbef42b67 +vmlinux blkdev_issue_flush 0xeb2bf70b +vmlinux blkdev_put 0x286fe828 +vmlinux block_all_signals 0x4edd72f7 +vmlinux block_commit_write 0x02075735 +vmlinux block_invalidatepage 0x5ae23cc1 +vmlinux block_prepare_write 0xe28c5171 +vmlinux block_read_full_page 0x837631e6 +vmlinux block_sync_page 0x5ec25a38 +vmlinux block_truncate_page 0x705e1484 +vmlinux block_write_full_page 0xb25260e0 +vmlinux bmap 0x7d84ef85 +vmlinux boot_cpu_data 0x62c77f43 +vmlinux boot_option_idle_override 0xef9aedfc +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0xefd4b74d +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0x6a7d6e86 +vmlinux bus_create_file 0xc6ca744d +vmlinux bus_find_device 0x5e479f35 +vmlinux bus_for_each_dev 0xf4005149 +vmlinux bus_for_each_drv 0x0f9139c5 +vmlinux bus_register 0xaca6bdb8 +vmlinux bus_remove_device 0x191ae2e7 +vmlinux bus_remove_file 0x872793a1 +vmlinux bus_rescan_devices 0x82d6c517 +vmlinux bus_unregister 0x14145669 +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x3e3251aa +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x227887b8 +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0xcdac5bf2 +vmlinux cdev_alloc 0x70fc8899 +vmlinux cdev_del 0x9573f6ae +vmlinux cdev_init 0x3f6931c2 +vmlinux change_page_attr 0xdba86335 +vmlinux check_disk_change 0x7d186127 +vmlinux class_create 0x58ad5ed2 +vmlinux class_create_file 0xb3f57174 +vmlinux class_destroy 0xc98b4adf +vmlinux class_device_add 0x8038abe1 +vmlinux class_device_create 0xc1ef6318 +vmlinux class_device_create_bin_file 0xf76e0d2a +vmlinux class_device_create_file 0xd8575091 +vmlinux class_device_del 0x32b8b3bd +vmlinux class_device_destroy 0x2dd87a7c +vmlinux class_device_get 0xd1841b5f +vmlinux class_device_initialize 0x1c29bd24 +vmlinux class_device_put 0xf285d345 +vmlinux class_device_register 0xc71aa5b8 +vmlinux class_device_remove_bin_file 0x868299e5 +vmlinux class_device_remove_file 0x8cf0bd10 +vmlinux class_device_unregister 0xf9e8b3a0 +vmlinux class_get 0xff0d8d54 +vmlinux class_interface_register 0x716115ed +vmlinux class_interface_unregister 0x8943db32 +vmlinux class_put 0xb2434c0f +vmlinux class_register 0xd9890ac3 +vmlinux class_remove_file 0x5ec40442 +vmlinux class_unregister 0xdbdfd0ee +vmlinux clear_inode 0x86e34c16 +vmlinux clear_page 0x3d9ee9f0 +vmlinux clear_page_dirty_for_io 0x608b1aef +vmlinux clear_user 0x7aec9089 +vmlinux clip_tbl_hook 0xda9bfd9f +vmlinux close_bdev_excl 0xf236be0e +vmlinux color_table 0xf6bb4729 +vmlinux complete 0x2581543c +vmlinux complete_all 0xa2d4c119 +vmlinux complete_and_exit 0xfd59d987 +vmlinux compute_creds 0xcd7dd56c +vmlinux con_copy_unimap 0x21563571 +vmlinux con_set_default_unimap 0x94cd1e47 +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0x5f0c5570 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0x42234411 +vmlinux console_stop 0xc72104b9 +vmlinux cont_prepare_write 0xc7b94d68 +vmlinux copy_from_user 0x945bc6a7 +vmlinux copy_fs_struct 0xb909ae0c +vmlinux copy_in_user 0xf116d4b5 +vmlinux copy_io_context 0x99112530 +vmlinux copy_page 0x33b84f74 +vmlinux copy_strings_kernel 0x0d3ae292 +vmlinux copy_to_user 0xbe499d81 +vmlinux copy_user_generic 0x21e5679c +vmlinux cpu_callout_map 0xf2485284 +vmlinux cpu_core_map 0x32925084 +vmlinux cpu_data 0x28b08825 +vmlinux cpu_idle_wait 0xb53ae573 +vmlinux cpu_khz 0xd6b33026 +vmlinux cpu_online_map 0xeef3d1eb +vmlinux cpu_pda 0x5a206cf5 +vmlinux cpu_possible_map 0xcac044db +vmlinux cpu_present_map 0xc5afbdd4 +vmlinux cpu_sibling_map 0xd875deaa +vmlinux cpu_sysdev_class 0x336d76f7 +vmlinux cpu_to_node 0x2e75b744 +vmlinux cpufreq_cpu_get 0x5deb4035 +vmlinux cpufreq_cpu_put 0x03a03f1e +vmlinux cpufreq_driver_target 0xca37e03f +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0x9f3fcf06 +vmlinux cpufreq_gov_performance 0x90226911 +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0xe6488b47 +vmlinux cpufreq_parse_governor 0x35e0d9dd +vmlinux cpufreq_register_driver 0xc4c67603 +vmlinux cpufreq_register_governor 0xbe29cc98 +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0xa84b49df +vmlinux cpufreq_unregister_driver 0x204cfce6 +vmlinux cpufreq_unregister_governor 0x6de2fbf7 +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0xc09651d9 +vmlinux crc32_le 0x92ea4ae4 +vmlinux create_empty_buffers 0x270b4574 +vmlinux create_proc_entry 0x269d6a95 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0x19e75e4f +vmlinux crypto_free_tfm 0xe4c3b40a +vmlinux crypto_hmac 0xbdff472e +vmlinux crypto_hmac_final 0xd71952af +vmlinux crypto_hmac_init 0x4b4abf9d +vmlinux crypto_hmac_update 0xdb476cfb +vmlinux crypto_register_alg 0x18c62836 +vmlinux crypto_unregister_alg 0x8e669176 +vmlinux csum_ipv6_magic 0xd79301a3 +vmlinux csum_partial 0xf1e29eae +vmlinux csum_partial_copy_from_user 0x7cf86690 +vmlinux csum_partial_copy_fromiovecend 0x883c8eca +vmlinux csum_partial_copy_nocheck 0xa2963be1 +vmlinux csum_partial_copy_to_user 0xeb7268d1 +vmlinux current_fs_time 0xaa8e5691 +vmlinux current_io_context 0xe30cc1df +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0x30f54a21 +vmlinux d_alloc_anon 0xd870303b +vmlinux d_alloc_name 0xebad12b8 +vmlinux d_alloc_root 0xeea4161d +vmlinux d_delete 0x12af50dd +vmlinux d_find_alias 0xba855ada +vmlinux d_genocide 0x76d66cd2 +vmlinux d_instantiate 0x938e83ae +vmlinux d_instantiate_unique 0xef22c72b +vmlinux d_invalidate 0xacfab92e +vmlinux d_lookup 0xc77cdc88 +vmlinux d_move 0x8d5428c4 +vmlinux d_path 0x376f20f3 +vmlinux d_prune_aliases 0x0723fd55 +vmlinux d_rehash 0xcf95a1ee +vmlinux d_splice_alias 0x87e07041 +vmlinux d_validate 0x3dd2d146 +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0xbff6ec63 +vmlinux dcache_dir_close 0xa934c251 +vmlinux dcache_dir_lseek 0x4d8fd36b +vmlinux dcache_dir_open 0x22e5784e +vmlinux dcache_lock 0x179ec4b8 +vmlinux dcache_readdir 0xf9ef20db +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0x5b479c42 +vmlinux default_backing_dev_info 0xf9b5b72a +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0x31a87727 +vmlinux default_llseek 0x4581e92f +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x218f2bca +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0xb1347a64 +vmlinux del_timer 0x5943d3e7 +vmlinux del_timer_sync 0x594eac68 +vmlinux dentry_open 0x46c4aadb +vmlinux dentry_unhash 0xc1587e82 +vmlinux dequeue_signal 0xbbb702c3 +vmlinux deregister_atm_ioctl 0x1550d680 +vmlinux destroy_8023_client 0xc483f82d +vmlinux destroy_EII_client 0x4be55a09 +vmlinux destroy_workqueue 0xda715524 +vmlinux dev_add_pack 0x0d5e8f4d +vmlinux dev_alloc_name 0xd473bdb3 +vmlinux dev_base 0xf9bac3ad +vmlinux dev_base_lock 0x01ab0f38 +vmlinux dev_change_flags 0x9894796f +vmlinux dev_close 0x940deefb +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0xf75a2e7a +vmlinux dev_get_by_index 0x118460cb +vmlinux dev_get_by_name 0x734aeeb5 +vmlinux dev_get_flags 0x659cfc45 +vmlinux dev_getbyhwaddr 0xb382581d +vmlinux dev_getfirstbyhwtype 0x82a63cbc +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0x8d40c703 +vmlinux dev_mc_delete 0xa121982d +vmlinux dev_mc_upload 0x0d1a2235 +vmlinux dev_open 0x13005e40 +vmlinux dev_queue_xmit 0x6e275611 +vmlinux dev_remove_pack 0x07e09266 +vmlinux dev_set_allmulti 0x844b7064 +vmlinux dev_set_mac_address 0x4197237a +vmlinux dev_set_mtu 0x1265f5e4 +vmlinux dev_set_promiscuity 0x5aa8084b +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0xff1e7679 +vmlinux device_attach 0x5a38027f +vmlinux device_bind_driver 0x2bb10abf +vmlinux device_create_file 0x45906fe3 +vmlinux device_del 0xb20f5a64 +vmlinux device_for_each_child 0x95ac5638 +vmlinux device_initialize 0xf24f0ce4 +vmlinux device_pm_set_parent 0xd2a7d0f2 +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0xe27b004b +vmlinux device_release_driver 0x129808f7 +vmlinux device_remove_file 0x42a2c8cf +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0x65efe7c1 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0xde026adf +vmlinux die_chain 0x492a6534 +vmlinux disable_hlt 0x794487ee +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disable_timer_nmi_watchdog 0xf2fb62ee +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_alloc_coherent 0x643cc24b +vmlinux dma_free_coherent 0xbd789f1b +vmlinux dma_get_required_mask 0xf7f71a37 +vmlinux dma_ops 0xf1efa2a0 +vmlinux dma_pool_alloc 0x4002d92d +vmlinux dma_pool_create 0xa7cddb05 +vmlinux dma_pool_destroy 0xa4f4c31e +vmlinux dma_pool_free 0xf595403f +vmlinux dma_set_mask 0x83c7a9a8 +vmlinux dma_spin_lock 0x028d62f7 +vmlinux dma_supported 0x428bf513 +vmlinux dnotify_parent 0x500b06f7 +vmlinux do_SAK 0xa733e04b +vmlinux do_add_mount 0x43b8b37a +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0x0e7b12d9 +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0x6807d3dd +vmlinux do_mmap_pgoff 0xc5f10a82 +vmlinux do_munmap 0x7d82479f +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x66933e10 +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0x27cbbea7 +vmlinux do_softirq_thunk 0xfd0315f0 +vmlinux do_sync_read 0x57c2ac82 +vmlinux do_sync_write 0x90010357 +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0xb93dbea8 +vmlinux dput 0x5643ed03 +vmlinux dq_data_lock 0x22ca4cc3 +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0xfdf39693 +vmlinux dquot_alloc_inode 0x57ffe852 +vmlinux dquot_alloc_space 0xdacc6abe +vmlinux dquot_commit 0xdcf48dc6 +vmlinux dquot_commit_info 0x0997f0c5 +vmlinux dquot_drop 0x92bb7816 +vmlinux dquot_free_inode 0xf98a3f41 +vmlinux dquot_free_space 0x713c692a +vmlinux dquot_initialize 0x9cb0e4ec +vmlinux dquot_mark_dquot_dirty 0xa35de7e7 +vmlinux dquot_release 0x490bede8 +vmlinux dquot_transfer 0x8b21c105 +vmlinux drive_info 0x744aa133 +vmlinux drive_is_ready 0xc44bbcf7 +vmlinux driver_attach 0xe71fc196 +vmlinux driver_create_file 0xfaa386aa +vmlinux driver_find 0x00bdfaf8 +vmlinux driver_find_device 0x92a641fa +vmlinux driver_for_each_device 0x8d6b3682 +vmlinux driver_register 0xf678149c +vmlinux driver_remove_file 0xb091274b +vmlinux driver_unregister 0xcb2e8a81 +vmlinux drop_super 0xee3a6219 +vmlinux dst_alloc 0xc6cce8ee +vmlinux dst_destroy 0x75c85796 +vmlinux dump_stack 0x6b2dc060 +vmlinux ec_read 0xba2d8594 +vmlinux ec_write 0x876dafc3 +vmlinux eighty_ninty_three 0x3a4adbee +vmlinux elevator_exit 0x5ad51b8c +vmlinux elevator_init 0xec28ff77 +vmlinux elv_add_request 0x204bdf9b +vmlinux elv_completed_request 0xab00f368 +vmlinux elv_dequeue_request 0xcd49c553 +vmlinux elv_dispatch_sort 0x5afa87ca +vmlinux elv_next_request 0x7ae7fe1b +vmlinux elv_queue_empty 0x5727b6e8 +vmlinux elv_register 0x71e9550f +vmlinux elv_requeue_request 0x0c88537e +vmlinux elv_rq_merge_ok 0xe6083c09 +vmlinux elv_try_merge 0x7e524cd1 +vmlinux elv_unregister 0xbf5dbe33 +vmlinux emergency_restart 0xd0c05159 +vmlinux empty_zero_page 0xc2c8ec85 +vmlinux enable_hlt 0x9c7077bd +vmlinux enable_irq 0xfcec0987 +vmlinux enable_timer_nmi_watchdog 0x13f54343 +vmlinux end_buffer_async_write 0x4c968e4f +vmlinux end_buffer_read_sync 0x0c837fea +vmlinux end_buffer_write_sync 0x22dc1ed7 +vmlinux end_page_writeback 0xc107f75a +vmlinux end_pfn 0xefe8e01c +vmlinux end_request 0xfc8ab0f8 +vmlinux end_that_request_chunk 0xf642d628 +vmlinux end_that_request_first 0x497a023d +vmlinux end_that_request_last 0xc2c2bbe3 +vmlinux eth_type_trans 0x35df7af8 +vmlinux ether_setup 0x2f1ddcdb +vmlinux ethtool_op_get_link 0xcf9712f6 +vmlinux ethtool_op_get_perm_addr 0x0622256d +vmlinux ethtool_op_get_sg 0x02fabbec +vmlinux ethtool_op_get_tso 0x44f2a8fd +vmlinux ethtool_op_get_tx_csum 0x58c74c46 +vmlinux ethtool_op_get_ufo 0x91b7a69c +vmlinux ethtool_op_set_sg 0x56fe4680 +vmlinux ethtool_op_set_tso 0x1f1370da +vmlinux ethtool_op_set_tx_csum 0xd8431217 +vmlinux ethtool_op_set_tx_hw_csum 0x521f2605 +vmlinux ethtool_op_set_ufo 0x1c14acbf +vmlinux exit_fs 0x5d3e34ca +vmlinux f_setown 0xe9fb687e +vmlinux fasync_helper 0x79c73739 +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0xfc9cc6bd +vmlinux fb_con_duit 0x6dd10bb3 +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0xcd9496dc +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0x0f13a959 +vmlinux fb_get_buffer_offset 0x0f2d3d1a +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0xb4604010 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0xdb209b9b +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0x3f7535ff +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x9afe8296 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0x7baf81b3 +vmlinux fb_set_suspend 0x334500d4 +vmlinux fb_set_var 0x678fa552 +vmlinux fb_show_logo 0x2ed129dc +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0xe8455b2f +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fd_install 0x56b2480e +vmlinux fddi_type_trans 0xa8e85b5c +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x4824551f +vmlinux file_fsync 0x3ab485f9 +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0x5230e32e +vmlinux filemap_fdatawait 0x035f5ac6 +vmlinux filemap_fdatawrite 0xd7e4f47d +vmlinux filemap_flush 0x8ca80b1e +vmlinux filemap_nopage 0xb782de73 +vmlinux filemap_populate 0x2398045f +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0xdd16ae4a +vmlinux filp_open 0x02ae4e33 +vmlinux find_bus 0x441c45b4 +vmlinux find_first_bit 0x2274556d +vmlinux find_first_zero_bit 0xb3d2bf12 +vmlinux find_get_page 0xd659ddaf +vmlinux find_inode_number 0x102f4483 +vmlinux find_lock_page 0x78de6bb2 +vmlinux find_next_bit 0x44809893 +vmlinux find_next_zero_bit 0x699ce795 +vmlinux find_next_zero_string 0x9e6fe266 +vmlinux find_or_create_page 0x92a4bdc5 +vmlinux find_task_by_pid_type 0x4bcba907 +vmlinux find_trylock_page 0xc52c53d4 +vmlinux find_vma 0x7ccfba99 +vmlinux finish_wait 0x271f4d2a +vmlinux firmware_register 0x070e66a6 +vmlinux firmware_unregister 0xae859c12 +vmlinux flock_lock_file_wait 0x3893401a +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_old_exec 0x48a3b6dc +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x6329c72c +vmlinux flush_tlb_page 0x2abfc005 +vmlinux flush_workqueue 0xaac8d51c +vmlinux follow_down 0x3b2bead8 +vmlinux follow_up 0x593b23d1 +vmlinux force_sig 0xe712620c +vmlinux fput 0xcca0ea7a +vmlinux framebuffer_alloc 0x8355d8be +vmlinux framebuffer_release 0xd3ef7d99 +vmlinux free_buffer_head 0xb18fa5ed +vmlinux free_dma 0x72b243d4 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0xbc8ba0c6 +vmlinux free_pages 0x4302d0eb +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0x8afdfdd1 +vmlinux freeze_bdev 0x88821e1e +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0xa7cdb1d5 +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0x0f93d64c +vmlinux gen_replace_estimator 0x46b64038 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x37e92a58 +vmlinux generic_block_bmap 0xe393e8c7 +vmlinux generic_commit_write 0x89f6e26f +vmlinux generic_cont_expand 0x20e6ed21 +vmlinux generic_delete_inode 0xb28c1ad3 +vmlinux generic_drop_inode 0x3ed796fd +vmlinux generic_file_aio_read 0x505e5a8b +vmlinux generic_file_aio_write 0x78ba780c +vmlinux generic_file_aio_write_nolock 0x41f5d9a4 +vmlinux generic_file_buffered_write 0xe130b5d7 +vmlinux generic_file_direct_write 0x4646c227 +vmlinux generic_file_llseek 0x92905cd3 +vmlinux generic_file_mmap 0xf7b94425 +vmlinux generic_file_open 0x7acdcb14 +vmlinux generic_file_read 0xbac6d7a1 +vmlinux generic_file_readonly_mmap 0xe4209830 +vmlinux generic_file_readv 0x2cbb1542 +vmlinux generic_file_sendfile 0x242560ac +vmlinux generic_file_write 0x5a65923c +vmlinux generic_file_write_nolock 0x67081e5c +vmlinux generic_file_writev 0xfa1d9ab3 +vmlinux generic_fillattr 0x1dec3428 +vmlinux generic_getxattr 0x2e09373f +vmlinux generic_ide_ioctl 0x439a5b6c +vmlinux generic_listxattr 0x0748d622 +vmlinux generic_make_request 0x83318302 +vmlinux generic_osync_inode 0x361f27b8 +vmlinux generic_permission 0xabcc3243 +vmlinux generic_read_dir 0xe92d53e9 +vmlinux generic_readlink 0xac26d3fe +vmlinux generic_removexattr 0x72a90be0 +vmlinux generic_ro_fops 0x64fdd50f +vmlinux generic_setxattr 0x826e6b14 +vmlinux generic_shutdown_super 0xd63408b1 +vmlinux generic_unplug_device 0x1eb84076 +vmlinux generic_write_checks 0x37782e9c +vmlinux genl_register_family 0xef286f8d +vmlinux genl_register_ops 0x8142c589 +vmlinux genl_sock 0x55f9563d +vmlinux genl_unregister_family 0x22a99a3b +vmlinux genl_unregister_ops 0x3688b2b3 +vmlinux get_agp_version 0xf2399f7e +vmlinux get_bus 0x1671b8c9 +vmlinux get_cmos_time 0xb31ddfb4 +vmlinux get_cpu_sysdev 0x925e966f +vmlinux get_dcookie 0x977d4ce9 +vmlinux get_device 0x8b582d2d +vmlinux get_disk 0x04b948ff +vmlinux get_driver 0x61ab44df +vmlinux get_empty_filp 0xdf7ad753 +vmlinux get_fs_type 0xeae5e4c5 +vmlinux get_io_context 0x8d478d16 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0x439cb2c5 +vmlinux get_sb_nodev 0xba94420c +vmlinux get_sb_pseudo 0xb00648b1 +vmlinux get_sb_single 0x64215b08 +vmlinux get_super 0x006c4721 +vmlinux get_task_mm 0x5f6fa5ac +vmlinux get_unmapped_area 0xae414774 +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x1f18410c +vmlinux get_wchan 0x0aa6d949 +vmlinux get_write_access 0xc9e19183 +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0xfe106aae +vmlinux global_cache_flush 0xa4d4f0e6 +vmlinux global_flush_tlb 0x3167ea19 +vmlinux gnet_stats_copy_app 0x69eced7e +vmlinux gnet_stats_copy_basic 0xe8225dd5 +vmlinux gnet_stats_copy_queue 0x831bd453 +vmlinux gnet_stats_copy_rate_est 0x230d9c16 +vmlinux gnet_stats_finish_copy 0x686b1e25 +vmlinux gnet_stats_start_copy 0x175c6178 +vmlinux gnet_stats_start_copy_compat 0x4c968d31 +vmlinux grab_cache_page_nowait 0x085446d7 +vmlinux groups_alloc 0xda9f6355 +vmlinux groups_free 0x41ac4793 +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0xb2ec40d1 +vmlinux have_submounts 0x89e7e01e +vmlinux high_memory 0x8a7d1c31 +vmlinux hippi_type_trans 0xc6dbe3e7 +vmlinux hpet_alloc 0x686f1325 +vmlinux hpet_control 0x1de314f3 +vmlinux hpet_register 0x741f1f6e +vmlinux hpet_unregister 0x63dfe1b4 +vmlinux hwmon_device_register 0x02eb6bbd +vmlinux hwmon_device_unregister 0xec59204e +vmlinux ia32_setup_arg_pages 0x4479f908 +vmlinux ia32_sys_call_table 0x3cf4209c +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x7db95ce3 +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_acpi_exec_tfs 0xb02ffb32 +vmlinux ide_acpi_get_timing 0xc39abab8 +vmlinux ide_acpi_init 0xdae98483 +vmlinux ide_acpi_push_timing 0xea9f358f +vmlinux ide_add_setting 0x135b9467 +vmlinux ide_build_dmatable 0xf6b17057 +vmlinux ide_build_sglist 0xefa6d87c +vmlinux ide_bus_type 0x78339a64 +vmlinux ide_config_drive_speed 0xc043d746 +vmlinux ide_destroy_dmatable 0xa073aee9 +vmlinux ide_dma_enable 0x5e58dcd4 +vmlinux ide_dma_intr 0xb81347ef +vmlinux ide_dma_setup 0x98603944 +vmlinux ide_dma_speed 0xfa663953 +vmlinux ide_dma_start 0x38d8612e +vmlinux ide_dma_verbose 0x7eed95bf +vmlinux ide_do_drive_cmd 0xb37e89e9 +vmlinux ide_do_reset 0x7ceb0bb8 +vmlinux ide_dump_status 0x412547ab +vmlinux ide_end_drive_cmd 0x6b2fa351 +vmlinux ide_end_request 0xf78d1911 +vmlinux ide_error 0xe1bcc4fc +vmlinux ide_execute_command 0x51c9a722 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0xc0883104 +vmlinux ide_get_error_location 0x40f4445f +vmlinux ide_hwifs 0xbe5e6443 +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0x05855127 +vmlinux ide_init_drive_cmd 0xcd921641 +vmlinux ide_init_sg_cmd 0x7db7ebb4 +vmlinux ide_lock 0xb0e42262 +vmlinux ide_map_sg 0x748e69e5 +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0xc3c2bceb +vmlinux ide_pci_unregister_driver 0x75a82e4a +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0x0214646b +vmlinux ide_register_hw 0x5428fb5e +vmlinux ide_register_hw_with_fixup 0xd159b82e +vmlinux ide_register_region 0xbed3d299 +vmlinux ide_register_subdriver 0xe440dd30 +vmlinux ide_set_handler 0x9e262f52 +vmlinux ide_set_xfer_rate 0xc706fca2 +vmlinux ide_setup_dma 0xdf1a5dfa +vmlinux ide_setup_pci_device 0xad635736 +vmlinux ide_setup_pci_devices 0x515093b4 +vmlinux ide_setup_pci_noise 0x33d8906a +vmlinux ide_spin_wait_hwgroup 0xaa80989c +vmlinux ide_stall_queue 0x3063e1a3 +vmlinux ide_undecoded_slave 0x39ce4c74 +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0x316453d0 +vmlinux ide_unregister_subdriver 0x17af5188 +vmlinux ide_use_dma 0xbaaf886d +vmlinux ide_wait_not_busy 0x07e7bf47 +vmlinux ide_wait_stat 0xab3aee49 +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0x3e7c8d66 +vmlinux idr_find 0x63e984fa +vmlinux idr_get_new 0xef70e5e7 +vmlinux idr_get_new_above 0x9ad5aa16 +vmlinux idr_init 0x153cbb99 +vmlinux idr_pre_get 0xf226f24b +vmlinux idr_remove 0x320094b2 +vmlinux iget5_locked 0x054ac13d +vmlinux iget_locked 0x5372ce27 +vmlinux igrab 0x8ce9ed84 +vmlinux ilookup 0x5cc2b94c +vmlinux ilookup5 0x2658e097 +vmlinux ilookup5_nowait 0x44bc588f +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0xfb9ae8ba +vmlinux in_egroup_p 0x42a4bdf2 +vmlinux in_group_p 0x31ebadcd +vmlinux in_lock_functions 0x09d44df9 +vmlinux inet6_lookup 0xc49cc111 +vmlinux inet6_lookup_listener 0xb3fe9b3b +vmlinux inet_accept 0xe0dc28ce +vmlinux inet_add_protocol 0x3b5ef7ea +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0xe664abc1 +vmlinux inet_bind_bucket_create 0xa36f819b +vmlinux inet_bind_hash 0x44926242 +vmlinux inet_csk_accept 0x16657ebc +vmlinux inet_csk_clear_xmit_timers 0x5dd38f12 +vmlinux inet_csk_clone 0x2c786cd2 +vmlinux inet_csk_delete_keepalive_timer 0x1f15404c +vmlinux inet_csk_destroy_sock 0xc6341dcf +vmlinux inet_csk_get_port 0x2962bb6b +vmlinux inet_csk_init_xmit_timers 0xb7954305 +vmlinux inet_csk_listen_start 0xba1d7e6f +vmlinux inet_csk_listen_stop 0x6ea58e46 +vmlinux inet_csk_reqsk_queue_hash_add 0xabe86d20 +vmlinux inet_csk_reqsk_queue_prune 0x30fe4e5d +vmlinux inet_csk_reset_keepalive_timer 0xe1f5418c +vmlinux inet_csk_route_req 0xdf023776 +vmlinux inet_csk_search_req 0xa5561037 +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0x65edfff7 +vmlinux inet_dgram_connect 0x96f579e5 +vmlinux inet_dgram_ops 0x0e74c4f3 +vmlinux inet_diag_register 0x0180f406 +vmlinux inet_diag_unregister 0xee232fb9 +vmlinux inet_getname 0x1de8494f +vmlinux inet_ioctl 0xff68894e +vmlinux inet_listen 0xd7ba6fe5 +vmlinux inet_listen_wlock 0xa63eaa1c +vmlinux inet_put_port 0x79101975 +vmlinux inet_register_protosw 0x5e39c752 +vmlinux inet_release 0x9ecdac71 +vmlinux inet_select_addr 0x2a9dde3e +vmlinux inet_sendmsg 0x55550d6d +vmlinux inet_shutdown 0x645695b5 +vmlinux inet_sk_rebuild_header 0xdf5b86c3 +vmlinux inet_sock_destruct 0x245e7d5f +vmlinux inet_stream_connect 0x047ef03d +vmlinux inet_stream_ops 0xb6517e2d +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0xc9e5c62d +vmlinux inet_twsk_deschedule 0xad6acbf5 +vmlinux inet_twsk_schedule 0xf9d21348 +vmlinux inet_unregister_protosw 0x2f25bbb0 +vmlinux inetdev_by_index 0x534fb19f +vmlinux init_buffer 0x028b0ae1 +vmlinux init_level4_pgt 0x95e0a76b +vmlinux init_mm 0x30c0cda7 +vmlinux init_rwsem 0x493feefe +vmlinux init_special_inode 0xeeb7a093 +vmlinux init_task 0x04cf7a24 +vmlinux init_timer 0xa676f823 +vmlinux inode_add_bytes 0x77149e1b +vmlinux inode_change_ok 0x3a005cc2 +vmlinux inode_get_bytes 0xab5bbc66 +vmlinux inode_init_once 0x3735975d +vmlinux inode_needs_sync 0x2ab5dd64 +vmlinux inode_set_bytes 0x3e4b5fb4 +vmlinux inode_setattr 0xed18f172 +vmlinux inode_sub_bytes 0xec1c30de +vmlinux inode_update_time 0xcb32b823 +vmlinux inotify_dentry_parent_queue_event 0xdeaf5502 +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0x962962ca +vmlinux inotify_inode_queue_event 0xd68bc65a +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0xccc9b9b6 +vmlinux input_allocate_device 0xe58b2727 +vmlinux input_class 0x07dca1c8 +vmlinux input_close_device 0x1d58eeec +vmlinux input_event 0x9f322da1 +vmlinux input_flush_device 0xdcae6272 +vmlinux input_grab_device 0x89269fa7 +vmlinux input_open_device 0x18459c0b +vmlinux input_register_device 0x27b306b5 +vmlinux input_register_handler 0x07400e3d +vmlinux input_release_device 0x83f13712 +vmlinux input_unregister_device 0x5fc4569e +vmlinux input_unregister_handler 0x7ec8b443 +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0x072b60ef +vmlinux int_sqrt 0xb678366f +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x4383bef1 +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0x7e613127 +vmlinux interruptible_sleep_on_timeout 0xd96c8608 +vmlinux invalidate_bdev 0x9d85cd4d +vmlinux invalidate_inode_pages 0xc4f0fb48 +vmlinux invalidate_inode_pages2 0x586fa725 +vmlinux invalidate_inode_pages2_range 0xba2dc8d7 +vmlinux invalidate_inodes 0x3d6793e7 +vmlinux invalidate_partition 0xcf2a78ad +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0x8867a8f2 +vmlinux iomem_resource 0x9efed5af +vmlinux iommu_bio_merge 0xaf52c2d3 +vmlinux iommu_merge 0x634cd7ee +vmlinux iommu_sac_force 0xac37dfec +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0xc5534d64 +vmlinux ioread16_rep 0x5857b225 +vmlinux ioread16be 0xf065f629 +vmlinux ioread32 0xe484e35f +vmlinux ioread32_rep 0x3f0546a8 +vmlinux ioread32be 0xfdb9b629 +vmlinux ioread8 0xf10de535 +vmlinux ioread8_rep 0xf441ac43 +vmlinux ioremap_nocache 0x3762cb6e +vmlinux iounmap 0xedc03953 +vmlinux iov_shorten 0x92392cd9 +vmlinux iowrite16 0x8c183cbe +vmlinux iowrite16_rep 0x8cc79cab +vmlinux iowrite16be 0x69a0ca7d +vmlinux iowrite32 0x436c2179 +vmlinux iowrite32_rep 0xbfc177bc +vmlinux iowrite32be 0x6acb973d +vmlinux iowrite8 0x0727c4f3 +vmlinux iowrite8_rep 0xa4b94fea +vmlinux ip4_datagram_connect 0x192249cf +vmlinux ip_build_and_send_pkt 0x948d3e98 +vmlinux ip_cmsg_recv 0xfb63384d +vmlinux ip_compute_csum 0xe5e298ea +vmlinux ip_ct_attach 0x646d4152 +vmlinux ip_defrag 0xac37abe7 +vmlinux ip_fragment 0xe4aca4cb +vmlinux ip_generic_getfrag 0x9360723a +vmlinux ip_getsockopt 0x0c3e3a49 +vmlinux ip_mc_dec_group 0x16a2bf09 +vmlinux ip_mc_inc_group 0xa9c18748 +vmlinux ip_mc_join_group 0x6859dab7 +vmlinux ip_queue_xmit 0x1f5ba7c1 +vmlinux ip_route_input 0x3e5a3d68 +vmlinux ip_route_me_harder 0xcc006156 +vmlinux ip_route_output_flow 0x44f953df +vmlinux ip_route_output_key 0x85b94621 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0xa37b7441 +vmlinux ip_setsockopt 0x8097333c +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0xf00dcb1f +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0x5545662e +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0xd039bb4d +vmlinux is_bad_inode 0x462a9399 +vmlinux is_console_locked 0x944a564d +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux iunique 0x4d212260 +vmlinux iw_handler_get_spy 0x7fa753ab +vmlinux iw_handler_get_thrspy 0x64f27516 +vmlinux iw_handler_set_spy 0x53df0596 +vmlinux iw_handler_set_thrspy 0xfa7e0025 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x12dd1aa7 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0x9f8a5a7f +vmlinux kernel_recvmsg 0xfdcacc5a +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0x24142b2b +vmlinux kernel_subsys 0x1c62da6e +vmlinux kernel_thread 0x7ca341af +vmlinux key_alloc 0x22956348 +vmlinux key_create_or_update 0x550f044e +vmlinux key_instantiate_and_link 0xb54823b2 +vmlinux key_link 0x855da72e +vmlinux key_negate_and_link 0x12da7d8f +vmlinux key_payload_reserve 0xbe3c70a8 +vmlinux key_put 0x20bb2e5a +vmlinux key_revoke 0x38016248 +vmlinux key_task_permission 0x85a1946a +vmlinux key_type_user 0x29da21c5 +vmlinux key_unlink 0x0950ad3c +vmlinux key_update 0x95ceb864 +vmlinux key_validate 0xa604f2ff +vmlinux keyring_clear 0xb34f35b9 +vmlinux keyring_search 0x177b9e68 +vmlinux kfifo_alloc 0x5cc5b658 +vmlinux kfifo_free 0x08a64e7c +vmlinux kfifo_init 0xfa31cd3b +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0x3fc56d1c +vmlinux kill_anon_super 0x920ed31e +vmlinux kill_block_super 0x81d9f83a +vmlinux kill_fasync 0xec8195b9 +vmlinux kill_litter_super 0x1319faf1 +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xf679e5b3 +vmlinux klist_add_head 0xe14bb3a2 +vmlinux klist_add_tail 0x8bd126f9 +vmlinux klist_del 0x7081deed +vmlinux klist_init 0x83ba3c87 +vmlinux klist_iter_exit 0x5dbca5b8 +vmlinux klist_iter_init 0xba799312 +vmlinux klist_iter_init_node 0xee8c66d5 +vmlinux klist_next 0x0d1a949b +vmlinux klist_node_attached 0x1d1ee37c +vmlinux klist_remove 0x88277446 +vmlinux km_new_mapping 0x6bb83ad2 +vmlinux km_policy_notify 0x1feaf519 +vmlinux km_state_notify 0x1bda59bb +vmlinux km_waitq 0x9b0f1de9 +vmlinux kmalloc_node 0xce0123e0 +vmlinux kmem_cache_alloc 0x7104c2a0 +vmlinux kmem_cache_alloc_node 0xe1a306ef +vmlinux kmem_cache_create 0x3dcf8d51 +vmlinux kmem_cache_destroy 0x332ac40d +vmlinux kmem_cache_free 0xe59ffe5a +vmlinux kmem_cache_name 0xc57e7803 +vmlinux kmem_cache_shrink 0x2cce3239 +vmlinux kmem_cache_size 0x50bfbbd4 +vmlinux kmem_find_general_cachep 0x84c43236 +vmlinux kobject_add 0x3963fb88 +vmlinux kobject_del 0x20dc2cae +vmlinux kobject_get 0x3107946e +vmlinux kobject_hotplug 0xd1cf5068 +vmlinux kobject_init 0x8d5599e9 +vmlinux kobject_put 0xfdbd8e37 +vmlinux kobject_register 0x2667c615 +vmlinux kobject_set_name 0x57f8b9eb +vmlinux kobject_uevent 0x11436a6a +vmlinux kobject_uevent_atomic 0x7695f185 +vmlinux kobject_unregister 0x92000268 +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x1df93f81 +vmlinux kset_register 0xcec44f1f +vmlinux kset_unregister 0x990cdb5a +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x5a3aeca5 +vmlinux kthread_create 0x40b51b7f +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0x513626db +vmlinux kthread_stop_sem 0xb84ab4c6 +vmlinux kzalloc 0x5a3b6eca +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0x2727515d +vmlinux lease_modify 0x04f0a254 +vmlinux linkwatch_fire_event 0xb57bc992 +vmlinux ll_rw_block 0x9ebf73e1 +vmlinux llc_add_pack 0x24c4405e +vmlinux llc_build_and_send_ui_pkt 0x42623254 +vmlinux llc_mac_hdr_init 0xbb46e1b7 +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0x5aad9211 +vmlinux llc_sap_find 0xf02f0be9 +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0x5f69c2db +vmlinux llc_sap_open 0x047084a4 +vmlinux llc_set_station_handler 0xa9bc7abc +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_gs_index 0xc79e571d +vmlinux load_nls 0x2796f405 +vmlinux load_nls_default 0xf3cce769 +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_cpu_hotplug 0xba813bd6 +vmlinux lock_cpu_hotplug_interruptible 0xdd7ee0f9 +vmlinux lock_kernel 0x3656bf5a +vmlinux lock_may_read 0x46253d62 +vmlinux lock_may_write 0x02fd72eb +vmlinux lock_rename 0x31dfd74e +vmlinux lock_sock 0x33072b3d +vmlinux locks_copy_lock 0xe1e97502 +vmlinux locks_init_lock 0x6e0e7fc0 +vmlinux locks_mandatory_area 0x4961f1fe +vmlinux locks_remove_posix 0x2df56ebc +vmlinux lookup_create 0x42a98ae8 +vmlinux lookup_hash 0x010c5c2b +vmlinux lookup_instantiate_filp 0xc78622b9 +vmlinux lookup_one_len 0x3dd13513 +vmlinux loopback_dev 0xe352235f +vmlinux loops_per_jiffy 0xba497f13 +vmlinux make_8023_client 0x6ca0bb76 +vmlinux make_EII_client 0x9bc1f3f9 +vmlinux make_bad_inode 0x989004dc +vmlinux malloc_sizes 0xda6f0d02 +vmlinux map_page_into_agp 0x92ef2bf2 +vmlinux mapping_tagged 0x16c6ccaa +vmlinux mark_buffer_async_write 0x1558870c +vmlinux mark_buffer_dirty 0x6e9a3b0f +vmlinux mark_buffer_dirty_inode 0xac8f5ef5 +vmlinux mark_info_dirty 0xd175b651 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x0fa0554b +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_cstate 0x93805374 +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0x60326a34 +vmlinux may_umount_tree 0xe405b2de +vmlinux mb_cache_create 0x78460b25 +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0xe1bafd26 +vmlinux mb_cache_entry_find_first 0x78370335 +vmlinux mb_cache_entry_find_next 0x846849a8 +vmlinux mb_cache_entry_free 0x804e53a4 +vmlinux mb_cache_entry_get 0xc95e9164 +vmlinux mb_cache_entry_insert 0x861ee58f +vmlinux mb_cache_entry_release 0xcddbea53 +vmlinux mb_cache_shrink 0xbce8efff +vmlinux memchr 0xc740c64a +vmlinux memcmp 0x2fa5a500 +vmlinux memcpy 0x6067a146 +vmlinux memcpy_fromiovec 0x36139a51 +vmlinux memcpy_fromiovecend 0x9bc565c5 +vmlinux memcpy_toiovec 0x2876a6d3 +vmlinux memmove 0xa3a5be95 +vmlinux memnode_shift 0x676c5f99 +vmlinux memnodemap 0x56d452a0 +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xcfaf79ba +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0xbe8a1485 +vmlinux mempool_create_node 0x31448a4a +vmlinux mempool_destroy 0xe5077a8f +vmlinux mempool_free 0x37a9798f +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x931d2521 +vmlinux memscan 0x9c0ea3cd +vmlinux memset 0x3fa03a97 +vmlinux memset_io 0x4327f0d5 +vmlinux misc_deregister 0x0090a8cd +vmlinux misc_register 0x1235c734 +vmlinux mmput 0x794536ce +vmlinux mnt_pin 0xb2e8d3a8 +vmlinux mnt_unpin 0x91fa7f8b +vmlinux mntput_no_expire 0xfb1a9760 +vmlinux mod_reg_security 0xe42f4837 +vmlinux mod_timer 0x400a2c21 +vmlinux mod_unreg_security 0x8f435cbf +vmlinux module_add_driver 0x58d278a7 +vmlinux module_refcount 0x10226329 +vmlinux module_remove_driver 0x5a3107e4 +vmlinux monotonic_clock 0x9669ecc8 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0xb74af98b +vmlinux mpage_readpages 0x54db8634 +vmlinux mpage_writepage 0x7ea601a2 +vmlinux mpage_writepages 0x3448a8a8 +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux mtrr_add 0x56179c5f +vmlinux mtrr_del 0x272d394e +vmlinux multipath_alg_register 0xa37cd6af +vmlinux multipath_alg_unregister 0xb3f76a2b +vmlinux n_tty_ioctl 0xce083f95 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x2f0968ae +vmlinux neigh_changeaddr 0x17869e6e +vmlinux neigh_compat_output 0xb86732a5 +vmlinux neigh_connected_output 0x00272d97 +vmlinux neigh_create 0x437f35ca +vmlinux neigh_delete 0xf69034d2 +vmlinux neigh_destroy 0xc59cf7e0 +vmlinux neigh_dump_info 0x85f19218 +vmlinux neigh_event_ns 0xe58bf908 +vmlinux neigh_for_each 0x84bc149a +vmlinux neigh_ifdown 0x48e3ea49 +vmlinux neigh_lookup 0x4a91ee8f +vmlinux neigh_lookup_nodev 0xcb396f16 +vmlinux neigh_parms_alloc 0xa35fe8d4 +vmlinux neigh_parms_release 0xb7a6a24e +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0x6b6ca922 +vmlinux neigh_seq_next 0x198e7dd9 +vmlinux neigh_seq_start 0xd995e0a6 +vmlinux neigh_seq_stop 0x4d476e22 +vmlinux neigh_sysctl_register 0x9b034e8f +vmlinux neigh_sysctl_unregister 0xaaebcd56 +vmlinux neigh_table_clear 0xd0467923 +vmlinux neigh_table_init 0x083a4404 +vmlinux neigh_update 0xd9bf0c14 +vmlinux neigh_update_hhs 0x0cb167d8 +vmlinux neightbl_dump_info 0xb432be9f +vmlinux neightbl_set 0xcaa3aedd +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0xc9623e35 +vmlinux netdev_features_change 0x6287719b +vmlinux netdev_rx_csum_fault 0xa120b099 +vmlinux netdev_set_master 0xc3d26d61 +vmlinux netdev_state_change 0xfb863beb +vmlinux netif_carrier_off 0x2ecd662d +vmlinux netif_carrier_on 0x98ffb05b +vmlinux netif_receive_skb 0x40449364 +vmlinux netif_rx 0x99c5fe10 +vmlinux netif_rx_ni 0x0c87b310 +vmlinux netlink_ack 0xac0449a3 +vmlinux netlink_broadcast 0x4a20f3b5 +vmlinux netlink_dump_start 0x10cb17f1 +vmlinux netlink_kernel_create 0xaffee465 +vmlinux netlink_queue_skip 0x9a6b7a0a +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0x63704800 +vmlinux netlink_set_err 0xb59788ad +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0x1d94b623 +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0xbc1fbdef +vmlinux netpoll_parse_options 0x7c93078d +vmlinux netpoll_poll 0x94742a50 +vmlinux netpoll_queue 0x4a6aeb70 +vmlinux netpoll_send_udp 0x7c61bca5 +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0x7e862501 +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0x7d0116ce +vmlinux next_thread 0xcde59d85 +vmlinux nf_ct_attach 0xf0564f36 +vmlinux nf_getsockopt 0x96f938bc +vmlinux nf_hook_slow 0x449ee6e2 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0x7df1ba21 +vmlinux nf_log_register 0x9bc1f5a7 +vmlinux nf_log_unregister_logger 0xd0a8f715 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0xfccc5a3c +vmlinux nf_register_queue_handler 0x3b589714 +vmlinux nf_register_queue_rerouter 0xb23399e7 +vmlinux nf_register_sockopt 0x4c9fbe7c +vmlinux nf_reinject 0xf59d58ee +vmlinux nf_setsockopt 0x3db123d6 +vmlinux nf_unregister_hook 0xf4504ea5 +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0xf1801ab0 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x38f40d1f +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0x4c4c956e +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0x76ce7f1d +vmlinux nla_reserve 0xd016ea57 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0xa33f7c7c +vmlinux nla_validate 0x2cc98162 +vmlinux nmi_active 0x069dcda8 +vmlinux nmi_watchdog 0xda928914 +vmlinux no_llseek 0xa566e539 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x2dda38a8 +vmlinux nobh_prepare_write 0xf58473e4 +vmlinux nobh_truncate_page 0xeb7822d2 +vmlinux nobh_writepage 0x3c052e8a +vmlinux node_data 0xa714dbf0 +vmlinux node_online_map 0x3984227b +vmlinux node_possible_map 0x9f35ba10 +vmlinux node_to_cpumask 0xc967b1c3 +vmlinux nonseekable_open 0x1bad6dd5 +vmlinux noop_qdisc 0xec69d431 +vmlinux noop_qdisc_ops 0x9e9ad1ab +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x183da033 +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0x55819440 +vmlinux open_by_devnum 0x39c3619b +vmlinux open_exec 0xe9d882e2 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_bug 0x189c5fd1 +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux overflowgid 0x7171121c +vmlinux overflowuid 0x8b618d08 +vmlinux p80211_resume 0x501e99ed +vmlinux p80211_suspend 0xd060e89a +vmlinux p80211netdev_hwremoved 0x4be61cce +vmlinux p80211netdev_rx 0x464f7076 +vmlinux p80211skb_free 0x5d84d03c +vmlinux p80211skb_rxmeta_attach 0x95f7658f +vmlinux page_follow_link_light 0xaa4a0519 +vmlinux page_put_link 0x5a96620b +vmlinux page_readlink 0x56bb69e5 +vmlinux page_symlink 0xb3414148 +vmlinux page_symlink_inode_operations 0x72b97f31 +vmlinux pagevec_lookup_tag 0x158f4879 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0x208d963d +vmlinux path_release 0xa6f52508 +vmlinux path_walk 0x90ad5d9f +vmlinux pci_add_new_bus 0x58d8357a +vmlinux pci_alloc_consistent 0xf9993461 +vmlinux pci_assign_resource 0x91ea7c87 +vmlinux pci_block_user_cfg_access 0xe675fd41 +vmlinux pci_bus_add_device 0x9b9b2571 +vmlinux pci_bus_add_devices 0xd05c5be0 +vmlinux pci_bus_alloc_resource 0x08228953 +vmlinux pci_bus_assign_resources 0x60a51ff3 +vmlinux pci_bus_find_capability 0x4f78ca3e +vmlinux pci_bus_max_busnr 0x2006e850 +vmlinux pci_bus_read_config_byte 0x5c20dc5b +vmlinux pci_bus_read_config_dword 0x79e0deb2 +vmlinux pci_bus_read_config_word 0x33423a89 +vmlinux pci_bus_size_bridges 0x8e1e5c5e +vmlinux pci_bus_type 0xf0bab58b +vmlinux pci_bus_write_config_byte 0x09e81cf1 +vmlinux pci_bus_write_config_dword 0x42fe9293 +vmlinux pci_bus_write_config_word 0xa941d0bd +vmlinux pci_choose_state 0xb5eddbb8 +vmlinux pci_clear_mwi 0x801f4be2 +vmlinux pci_create_bus 0xde610a28 +vmlinux pci_dev_driver 0x19d39da5 +vmlinux pci_dev_get 0xf1dae2a8 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0xfba0c7e0 +vmlinux pci_disable_device 0xa746119b +vmlinux pci_disable_msi 0x34330eb3 +vmlinux pci_disable_msix 0x2e362f1b +vmlinux pci_do_scan_bus 0x44b437ea +vmlinux pci_enable_bridges 0xed954c89 +vmlinux pci_enable_device 0xad9b4410 +vmlinux pci_enable_device_bars 0x630a24db +vmlinux pci_enable_msi 0xb91b0b0f +vmlinux pci_enable_msix 0x317a6120 +vmlinux pci_enable_wake 0x0849d4f0 +vmlinux pci_find_bus 0x8f7494cf +vmlinux pci_find_capability 0x1a0e2d1e +vmlinux pci_find_device 0x61a83fb9 +vmlinux pci_find_device_reverse 0xaff9a185 +vmlinux pci_find_next_bus 0x2ed89593 +vmlinux pci_find_next_capability 0xf373f809 +vmlinux pci_find_parent_resource 0xeff2ad2a +vmlinux pci_find_slot 0x70c6c2cd +vmlinux pci_fixup_device 0x8f30c423 +vmlinux pci_free_consistent 0x44781819 +vmlinux pci_get_class 0xc2436553 +vmlinux pci_get_device 0x6f8673ee +vmlinux pci_get_slot 0x138ce89f +vmlinux pci_get_subsys 0xdd632e78 +vmlinux pci_intx 0xa892e68e +vmlinux pci_iomap 0x4a68274d +vmlinux pci_iounmap 0xa9c3358d +vmlinux pci_map_rom 0x3b0dd7f5 +vmlinux pci_map_rom_copy 0x5176f6d5 +vmlinux pci_match_device 0xba35b0d6 +vmlinux pci_match_id 0x44b80d40 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_mem_start 0x3da171f9 +vmlinux pci_osc_control_set 0x20c8fc33 +vmlinux pci_osc_support_set 0xed9003ef +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0x5c6c34cb +vmlinux pci_proc_attach_device 0x28007efa +vmlinux pci_proc_detach_bus 0x2e1ceb32 +vmlinux pci_release_region 0x670c0ecd +vmlinux pci_release_regions 0x8b08ddd8 +vmlinux pci_remove_behind_bridge 0x7f52f023 +vmlinux pci_remove_bus 0xf03d4158 +vmlinux pci_remove_bus_device 0xade72c36 +vmlinux pci_remove_device_safe 0xf71f8191 +vmlinux pci_remove_rom 0x2ce94e5e +vmlinux pci_request_region 0x0a4ac9f7 +vmlinux pci_request_regions 0x416c3189 +vmlinux pci_restore_bars 0x1801bd89 +vmlinux pci_restore_state 0x357def6d +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0xbf2f8f2c +vmlinux pci_scan_bridge 0x30edf655 +vmlinux pci_scan_bus_parented 0xd7d50b8b +vmlinux pci_scan_child_bus 0x720d5d3f +vmlinux pci_scan_single_device 0x5670782e +vmlinux pci_scan_slot 0x432893be +vmlinux pci_set_consistent_dma_mask 0x61bf9b92 +vmlinux pci_set_dma_mask 0x0067c35b +vmlinux pci_set_master 0x5529f9b3 +vmlinux pci_set_mwi 0xe7de05d8 +vmlinux pci_set_power_state 0x476d7ec7 +vmlinux pci_setup_cardbus 0xa0623621 +vmlinux pci_unblock_user_cfg_access 0x4e128df2 +vmlinux pci_unmap_rom 0x5598e806 +vmlinux pci_unregister_driver 0x9f1cbc42 +vmlinux pci_walk_bus 0x4b76bb89 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pcie_port_service_register 0x56233820 +vmlinux pcie_port_service_unregister 0x2bb099a3 +vmlinux pciserial_init_ports 0xc96b2ff8 +vmlinux pciserial_remove_ports 0x637f6638 +vmlinux pciserial_resume_ports 0x42ca72c3 +vmlinux pciserial_suspend_ports 0xa7d5089c +vmlinux per_cpu__kstat 0xca09a9af +vmlinux per_cpu__softnet_data 0x24a17aac +vmlinux percpu_counter_mod 0x921ec48a +vmlinux permission 0xc35be0cd +vmlinux pfifo_qdisc_ops 0x76b782e0 +vmlinux platform_add_devices 0x702c2949 +vmlinux platform_bus 0xb6785247 +vmlinux platform_bus_type 0xa13deaf5 +vmlinux platform_device_add 0x56a33ad5 +vmlinux platform_device_add_data 0xdd976f3a +vmlinux platform_device_add_resources 0xfca04844 +vmlinux platform_device_alloc 0xa1e505ca +vmlinux platform_device_put 0x575a8c27 +vmlinux platform_device_register 0x68c0e96c +vmlinux platform_device_register_simple 0x97bb9248 +vmlinux platform_device_unregister 0x8fa9768d +vmlinux platform_driver_register 0xfc18969e +vmlinux platform_driver_unregister 0xb397451d +vmlinux platform_get_irq 0x2f736159 +vmlinux platform_get_irq_byname 0xec1b6224 +vmlinux platform_get_resource 0x79d601e2 +vmlinux platform_get_resource_byname 0x734c10e9 +vmlinux pm_active 0xebd387f6 +vmlinux pm_idle 0xf890fe7f +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pneigh_enqueue 0x3c8b116a +vmlinux pneigh_lookup 0x5339f061 +vmlinux pnp_activate_dev 0xcb217af6 +vmlinux pnp_device_attach 0xe776805b +vmlinux pnp_device_detach 0x943490e9 +vmlinux pnp_disable_dev 0x0fb9bc91 +vmlinux pnp_init_resource_table 0x16084899 +vmlinux pnp_is_active 0x131b8984 +vmlinux pnp_manual_config_dev 0x10412728 +vmlinux pnp_register_card_driver 0x4695ae56 +vmlinux pnp_register_driver 0x3daa6cad +vmlinux pnp_release_card_device 0x63d56578 +vmlinux pnp_request_card_device 0x290c294a +vmlinux pnp_resource_change 0xf577ec2b +vmlinux pnp_unregister_card_driver 0x40e94c5e +vmlinux pnp_unregister_driver 0xbed7cd10 +vmlinux poll_freewait 0x6ce57749 +vmlinux poll_initwait 0x50c72a64 +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0x83c43dc1 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x886aa274 +vmlinux posix_acl_equiv_mode 0x50d56018 +vmlinux posix_acl_from_mode 0x8c537c45 +vmlinux posix_acl_from_xattr 0x42acbf72 +vmlinux posix_acl_permission 0x76db32c0 +vmlinux posix_acl_to_xattr 0xb055d8da +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0x3a0a1799 +vmlinux posix_lock_file 0xa354c9a9 +vmlinux posix_lock_file_wait 0x9bb58830 +vmlinux posix_locks_deadlock 0x0228c3d7 +vmlinux posix_test_lock 0x61219791 +vmlinux posix_timer_event 0xd8e05949 +vmlinux posix_unblock_lock 0x9c3b4047 +vmlinux pre_task_out_intr 0x5f71ac96 +vmlinux prepare_binprm 0x0995b4f5 +vmlinux prepare_to_wait 0x65f4af5f +vmlinux prepare_to_wait_exclusive 0x339d4841 +vmlinux printk 0xdd132261 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0xf34bfed5 +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0xa0b8c0f9 +vmlinux proc_dointvec 0xafa6fe4f +vmlinux proc_dointvec_jiffies 0xa61d4225 +vmlinux proc_dointvec_minmax 0xc2a89bda +vmlinux proc_dointvec_ms_jiffies 0x0cd66db8 +vmlinux proc_dointvec_userhz_jiffies 0xa12b6f2d +vmlinux proc_dostring 0xb9422f73 +vmlinux proc_doulongvec_minmax 0x79d1c63c +vmlinux proc_doulongvec_ms_jiffies_minmax 0x0a797627 +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0x2c02d09b +vmlinux proc_net 0xb9094af6 +vmlinux proc_net_netfilter 0x835d7cda +vmlinux proc_net_stat 0x565aeb2a +vmlinux proc_root 0x6198d908 +vmlinux proc_root_driver 0x9ad0bcff +vmlinux proc_root_fs 0x57956cf2 +vmlinux proc_symlink 0x9580a9af +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux profile_pc 0x875e1a1b +vmlinux proto_register 0x2b129f2f +vmlinux proto_unregister 0xbb9c7161 +vmlinux ps2_cmd_aborted 0x6c60257a +vmlinux ps2_command 0x15a8331b +vmlinux ps2_drain 0x8aaa9a06 +vmlinux ps2_handle_ack 0x29b3aac8 +vmlinux ps2_handle_response 0xae89090c +vmlinux ps2_init 0xf2accafc +vmlinux ps2_schedule_command 0xe7bbf650 +vmlinux ps2_sendbyte 0xdf1c7ff4 +vmlinux pskb_copy 0x0822462f +vmlinux pskb_expand_head 0xe6eeb12d +vmlinux pskb_put 0x85974923 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0x5c3b5c45 +vmlinux put_cmsg 0x43ec913a +vmlinux put_device 0xb3d38cc7 +vmlinux put_disk 0xa279fcd7 +vmlinux put_driver 0xeb3a9475 +vmlinux put_files_struct 0x0539926a +vmlinux put_io_context 0x2b9ab1f2 +vmlinux put_page 0xf936f840 +vmlinux put_tty_driver 0x35138d5d +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0xe447d203 +vmlinux qdisc_create_dflt 0x39f4bf6b +vmlinux qdisc_destroy 0x00b6c187 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0xb6973372 +vmlinux qdisc_lookup 0x3806bba2 +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0x207be076 +vmlinux qdisc_restart 0xca314510 +vmlinux qdisc_unlock_tree 0x98ca05fb +vmlinux queue_delayed_work 0xc6e2ac20 +vmlinux queue_work 0xdc83fb58 +vmlinux radix_tree_delete 0x898049c9 +vmlinux radix_tree_gang_lookup 0x35ef380e +vmlinux radix_tree_gang_lookup_tag 0xed493232 +vmlinux radix_tree_insert 0x72e6283f +vmlinux radix_tree_lookup 0x76e635da +vmlinux radix_tree_lookup_slot 0x41706e2f +vmlinux radix_tree_tag_clear 0x9ee300df +vmlinux radix_tree_tag_set 0xd73b9fb5 +vmlinux radix_tree_tagged 0xb52b2186 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0xfa0e489a +vmlinux read_cache_pages 0x16ef292e +vmlinux read_dev_sector 0x704bc717 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0x97aa2a34 +vmlinux redraw_screen 0xe5099427 +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0x0522787d +vmlinux register_acpi_bus_type 0x53ac24a8 +vmlinux register_atm_ioctl 0xb60117ab +vmlinux register_binfmt 0x109df2e9 +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0x3e7c240f +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0xb5797022 +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_die_notifier 0x53986488 +vmlinux register_exec_domain 0x31a9e61e +vmlinux register_filesystem 0xe7c51e5b +vmlinux register_firmware 0x40359ccb +vmlinux register_framebuffer 0x52557fa3 +vmlinux register_gifconf 0x2cb3006e +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_key_type 0x0feec531 +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0xcb8e4e49 +vmlinux register_netdevice 0x7b837193 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x733e2a3a +vmlinux register_posix_clock 0x5a711c4f +vmlinux register_qdisc 0x636a428b +vmlinux register_quota_format 0xb80381e7 +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0x30defbc4 +vmlinux register_snap_client 0x2a763a7b +vmlinux register_sysctl_table 0x122a78d7 +vmlinux register_sysrq_key 0xcc2ce0c8 +vmlinux register_tcf_proto_ops 0x19d08bd5 +vmlinux register_timer_hook 0x93817c41 +vmlinux register_wlandev 0xd174e073 +vmlinux registered_fb 0xd2034eaa +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x6ef56f31 +vmlinux release_lapic_nmi 0x4129043e +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x2a128cff +vmlinux remap_pfn_range 0xae1580ba +vmlinux remote_llseek 0x420152d9 +vmlinux remove_arg_zero 0xd1fbea60 +vmlinux remove_inode_hash 0x66ea4b9f +vmlinux remove_proc_entry 0xd8b58eef +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0xc14fbbf6 +vmlinux remove_wait_queue 0x0ef22ade +vmlinux reqsk_queue_alloc 0x13e950fe +vmlinux reqsk_queue_destroy 0x3b900636 +vmlinux request_dma 0x7054a3e4 +vmlinux request_firmware 0xa9fb0fb9 +vmlinux request_firmware_nowait 0x7f9930cd +vmlinux request_irq 0x5271af5d +vmlinux request_key 0x505a6306 +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux reserve_lapic_nmi 0xb903b498 +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x83230e05 +vmlinux rtc_control 0xc9b27289 +vmlinux rtc_lock 0x811afadf +vmlinux rtc_register 0xfdab2b9c +vmlinux rtc_unregister 0xeddfe49d +vmlinux rtnetlink_links 0x8d07090b +vmlinux rtnetlink_put_metrics 0x7f3af795 +vmlinux rtnl 0xfc68cbd9 +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0x30bb35b6 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux sb_min_blocksize 0xea5173d1 +vmlinux sb_set_blocksize 0xccb060ae +vmlinux sched_setscheduler 0x02d14dde +vmlinux schedule 0x01000e51 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0x1d0285eb +vmlinux scm_fp_dup 0x6223bc48 +vmlinux scnprintf 0x7bb4de17 +vmlinux screen_info 0xe7bf7d05 +vmlinux scsi_cmd_ioctl 0xcd02b172 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux search_binary_handler 0xc05387e9 +vmlinux secpath_dup 0x1c03e52f +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0xa2be1413 +vmlinux securityfs_create_dir 0xb8b5ae07 +vmlinux securityfs_create_file 0x5cc8d8f8 +vmlinux securityfs_remove 0x05a9cdf3 +vmlinux send_sig 0x893b648c +vmlinux send_sig_info 0x11c5e561 +vmlinux seq_escape 0xc18df51c +vmlinux seq_lseek 0x2e073853 +vmlinux seq_open 0x93074934 +vmlinux seq_path 0x74e283e0 +vmlinux seq_printf 0xf77b5ec7 +vmlinux seq_putc 0xdb0aa940 +vmlinux seq_puts 0x07ff9f07 +vmlinux seq_read 0x17181584 +vmlinux seq_release 0x4c8bc8a2 +vmlinux seq_release_private 0x2f6e5352 +vmlinux serial8250_register_port 0x06168486 +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0x3c7b475d +vmlinux serio_interrupt 0xa1ccdbfe +vmlinux serio_open 0xa9eb3230 +vmlinux serio_reconnect 0x3ea88e5d +vmlinux serio_rescan 0x04efc583 +vmlinux serio_unregister_child_port 0xb7097cc3 +vmlinux serio_unregister_driver 0x8bdda12d +vmlinux serio_unregister_port 0x19ebb73d +vmlinux set_anon_super 0xd1da2575 +vmlinux set_bh_page 0x3b3ba042 +vmlinux set_binfmt 0xb36163fd +vmlinux set_blocksize 0xb8325def +vmlinux set_cpus_allowed 0xbab16207 +vmlinux set_current_groups 0x999fe899 +vmlinux set_device_ro 0xb7e6acc9 +vmlinux set_disk_ro 0x3063a466 +vmlinux set_nmi_callback 0x2285b831 +vmlinux set_page_dirty 0xaa6ca90a +vmlinux set_page_dirty_lock 0x4552a8a4 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0xd67ee8de +vmlinux setlease 0x05f04791 +vmlinux setup_arg_pages 0xf009ff45 +vmlinux sget 0xab65ee7d +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x1ceacbb4 +vmlinux shrink_dcache_sb 0xd9b8a0df +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x6a5fa363 +vmlinux simple_attr_close 0x6c0972d5 +vmlinux simple_attr_open 0xb5a418ee +vmlinux simple_attr_read 0xc5f2b0d0 +vmlinux simple_attr_write 0x0d7f8806 +vmlinux simple_commit_write 0xdbdadb1b +vmlinux simple_dir_inode_operations 0xbd083ae7 +vmlinux simple_dir_operations 0x7f4a4283 +vmlinux simple_empty 0xc4954c8e +vmlinux simple_fill_super 0x1afece0e +vmlinux simple_getattr 0x7daf33a2 +vmlinux simple_link 0x8781fa43 +vmlinux simple_lookup 0x0e969cd7 +vmlinux simple_pin_fs 0x44b9554a +vmlinux simple_prepare_write 0x6891f7fc +vmlinux simple_read_from_buffer 0x5a5e7ea3 +vmlinux simple_readpage 0xecf56d14 +vmlinux simple_release_fs 0xa535c16e +vmlinux simple_rename 0x6fa15f84 +vmlinux simple_rmdir 0x0f736e87 +vmlinux simple_statfs 0xad922ebd +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0xd55d4eea +vmlinux simple_transaction_get 0xd3fbcc43 +vmlinux simple_transaction_read 0xe5f17b4d +vmlinux simple_transaction_release 0x077ae93c +vmlinux simple_unlink 0xec68eb7a +vmlinux single_open 0xf2fad7bb +vmlinux single_release 0xf418ef20 +vmlinux sk_alloc 0x5cb5e331 +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0xdab9755b +vmlinux sk_common_release 0x75fb7181 +vmlinux sk_free 0xa17c9f61 +vmlinux sk_reset_timer 0xd7417e9c +vmlinux sk_run_filter 0xc675b6b6 +vmlinux sk_send_sigurg 0xa645211f +vmlinux sk_stop_timer 0x84399d4d +vmlinux sk_stream_error 0xfdca90e3 +vmlinux sk_stream_kill_queues 0x6f75d8d0 +vmlinux sk_stream_mem_schedule 0x7442ac7e +vmlinux sk_stream_rfree 0x7c0f5471 +vmlinux sk_stream_wait_close 0xf4004aaf +vmlinux sk_stream_wait_connect 0x4167ffbb +vmlinux sk_stream_wait_memory 0xf60001d1 +vmlinux sk_stream_write_space 0x7b434813 +vmlinux sk_wait_data 0x61439fd6 +vmlinux skb_abort_seq_read 0x37874dc3 +vmlinux skb_append 0xac27b355 +vmlinux skb_append_datato_frags 0xc16dfca6 +vmlinux skb_checksum 0xdba70b31 +vmlinux skb_checksum_help 0x78c752e4 +vmlinux skb_clone 0x27ef5790 +vmlinux skb_clone_fraglist 0x47c793e6 +vmlinux skb_copy 0x93c9f68c +vmlinux skb_copy_and_csum_bits 0x500cf0b1 +vmlinux skb_copy_and_csum_datagram_iovec 0x627a3e2f +vmlinux skb_copy_and_csum_dev 0xde3fcda4 +vmlinux skb_copy_bits 0xa74e2af0 +vmlinux skb_copy_datagram_iovec 0x9ccb45f4 +vmlinux skb_copy_expand 0xa9c3f7fd +vmlinux skb_cow_data 0x7e13984a +vmlinux skb_dequeue 0x525db5de +vmlinux skb_dequeue_tail 0xe69398ac +vmlinux skb_find_text 0xcc7019cd +vmlinux skb_free_datagram 0x072db7ec +vmlinux skb_icv_walk 0xc9861032 +vmlinux skb_insert 0x2fee46ff +vmlinux skb_make_writable 0x0009bc66 +vmlinux skb_migrate 0xf9b703e8 +vmlinux skb_over_panic 0xf16db0c8 +vmlinux skb_pad 0x89f4c10f +vmlinux skb_prepare_seq_read 0x51075664 +vmlinux skb_queue_head 0xa7bdfa2b +vmlinux skb_queue_purge 0x732365ca +vmlinux skb_queue_tail 0x1ab31c32 +vmlinux skb_realloc_headroom 0x2ccb4614 +vmlinux skb_recv_datagram 0x00f5b113 +vmlinux skb_seq_read 0x86e48807 +vmlinux skb_split 0x58c24a01 +vmlinux skb_store_bits 0x5a342f96 +vmlinux skb_to_sgvec 0x6d82f2e4 +vmlinux skb_under_panic 0xb78aa3af +vmlinux skb_unlink 0xf4b5d594 +vmlinux sleep_on 0x8540b5be +vmlinux sleep_on_timeout 0x8d6ef862 +vmlinux smp_call_function 0x0014bfd1 +vmlinux smp_num_siblings 0xd1f6c5f3 +vmlinux snprintf 0xaf25400d +vmlinux sock_alloc_send_skb 0x7de2262e +vmlinux sock_common_getsockopt 0x882e643e +vmlinux sock_common_recvmsg 0x79b9eee4 +vmlinux sock_common_setsockopt 0x21aab8f7 +vmlinux sock_create 0xe44e0128 +vmlinux sock_create_kern 0xbc9b404e +vmlinux sock_create_lite 0x2b035e12 +vmlinux sock_enable_timestamp 0x21b55163 +vmlinux sock_get_timestamp 0xd213d803 +vmlinux sock_i_ino 0xcd2b6ef7 +vmlinux sock_i_uid 0xff3fa3f9 +vmlinux sock_init_data 0x63c3c6cf +vmlinux sock_kfree_s 0xbb736635 +vmlinux sock_kmalloc 0x67f52dac +vmlinux sock_map_fd 0x793cb578 +vmlinux sock_no_accept 0xcbd46a16 +vmlinux sock_no_bind 0x85d8aafa +vmlinux sock_no_connect 0xd9caa9e8 +vmlinux sock_no_getname 0x818f4c73 +vmlinux sock_no_getsockopt 0x8ae110ea +vmlinux sock_no_ioctl 0xf4d05ac6 +vmlinux sock_no_listen 0x5405a234 +vmlinux sock_no_mmap 0x74d0dd0d +vmlinux sock_no_poll 0xa624fd7a +vmlinux sock_no_recvmsg 0x0b07d702 +vmlinux sock_no_sendmsg 0xc89e663b +vmlinux sock_no_sendpage 0xce00b9d7 +vmlinux sock_no_setsockopt 0xa10509d4 +vmlinux sock_no_shutdown 0x02e6c901 +vmlinux sock_no_socketpair 0x4f3307ba +vmlinux sock_recvmsg 0x28b2e769 +vmlinux sock_register 0x8cc6ee93 +vmlinux sock_release 0xaff74bc2 +vmlinux sock_rfree 0x7cab726b +vmlinux sock_sendmsg 0x3d0d6706 +vmlinux sock_setsockopt 0xca971efc +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0x1f8d576f +vmlinux sock_wfree 0x8e2ecaca +vmlinux sock_wmalloc 0xf0eeadf5 +vmlinux sockfd_lookup 0xc1cb6c02 +vmlinux sonet_copy_stats 0x89195dc3 +vmlinux sonet_subtract_stats 0x1a24e5e2 +vmlinux sort 0x9ca95a0e +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux start_tty 0x4cfa32c0 +vmlinux steal_locks 0x2353f139 +vmlinux stop_tty 0x86cfaddc +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0xafe82e10 +vmlinux strlcat 0xb11fa1ce +vmlinux strlcpy 0x672144bd +vmlinux strlen 0x25ec1b28 +vmlinux strncat 0x234509f3 +vmlinux strnchr 0x7242e96d +vmlinux strncmp 0x85abc85f +vmlinux strncpy 0x7ec9bfbc +vmlinux strncpy_from_user 0x24428be5 +vmlinux strnicmp 0x756e6992 +vmlinux strnlen 0xcc07af75 +vmlinux strnlen_user 0xbcc308bb +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0x3fa913da +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0x8a8e45f6 +vmlinux submit_bh 0x936994d0 +vmlinux submit_bio 0xb6113709 +vmlinux subsys_create_file 0xea46f826 +vmlinux subsys_remove_file 0x5721cb74 +vmlinux subsystem_init 0x85d8d38f +vmlinux subsystem_register 0x95e7bafb +vmlinux subsystem_unregister 0x0af3afa2 +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0xd28b4ed0 +vmlinux swiotlb 0x47636033 +vmlinux swiotlb_alloc_coherent 0x5e1780da +vmlinux swiotlb_dma_mapping_error 0xaaeb10d3 +vmlinux swiotlb_dma_supported 0xf9cf5365 +vmlinux swiotlb_free_coherent 0x035a45f8 +vmlinux swiotlb_init 0x8e0594bc +vmlinux swiotlb_map_sg 0xfaa7f9a5 +vmlinux swiotlb_map_single 0xd7578f70 +vmlinux swiotlb_sync_sg_for_cpu 0xd98eb806 +vmlinux swiotlb_sync_sg_for_device 0x7feec2e0 +vmlinux swiotlb_sync_single_for_cpu 0xdf6f6b75 +vmlinux swiotlb_sync_single_for_device 0x0fe7146e +vmlinux swiotlb_sync_single_range_for_cpu 0xbbca3a48 +vmlinux swiotlb_sync_single_range_for_device 0x2e8328bb +vmlinux swiotlb_unmap_sg 0xedc00bf5 +vmlinux swiotlb_unmap_single 0x9fde3e29 +vmlinux switch_APIC_timer_to_ipi 0xa5c79544 +vmlinux switch_ipi_to_APIC_timer 0xac7eb84c +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0x2798dca7 +vmlinux sync_dirty_buffer 0x36d44612 +vmlinux sync_inode 0x8d938714 +vmlinux sync_mapping_buffers 0x3a2a66af +vmlinux sync_page_range 0x8347b86d +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xdcb0349b +vmlinux sys_ioctl 0x208ce54a +vmlinux sys_open 0xe269ea1c +vmlinux sys_read 0x12703a3e +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0x7036cf6b +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0x896781b8 +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0xb020327b +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0xfed6b59a +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x147a739a +vmlinux sysdev_class_unregister 0xcd2dcc4c +vmlinux sysdev_create_file 0xe6f9cead +vmlinux sysdev_driver_register 0xb7cde097 +vmlinux sysdev_driver_unregister 0xe1ff02a8 +vmlinux sysdev_register 0x6a130d09 +vmlinux sysdev_remove_file 0x99c33a3e +vmlinux sysdev_unregister 0xde0440b4 +vmlinux sysfs_chmod_file 0x08caaf74 +vmlinux sysfs_create_bin_file 0x1f7ce366 +vmlinux sysfs_create_dir 0x1ec90252 +vmlinux sysfs_create_file 0x95615653 +vmlinux sysfs_create_group 0xfaad72e7 +vmlinux sysfs_create_link 0x13e64b6c +vmlinux sysfs_remove_bin_file 0x8c52571f +vmlinux sysfs_remove_dir 0x261ec64a +vmlinux sysfs_remove_file 0xda29cea2 +vmlinux sysfs_remove_group 0x25dead49 +vmlinux sysfs_remove_link 0x37168450 +vmlinux sysfs_rename_dir 0x14ebd44f +vmlinux sysfs_update_file 0xd2ad0c54 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0x80e13f52 +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0xa8b217b3 +vmlinux task_nice 0xc2b264c3 +vmlinux task_no_data_intr 0xa776f1b6 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0xc308139d +vmlinux tc_classify 0x052ed5f9 +vmlinux tcf_em_register 0xc83bffd3 +vmlinux tcf_em_tree_destroy 0x7d707bd0 +vmlinux tcf_em_tree_dump 0x8c3a7b2b +vmlinux tcf_em_tree_validate 0xb69c836d +vmlinux tcf_em_unregister 0x22695d6d +vmlinux tcf_exts_change 0xd7dfe89e +vmlinux tcf_exts_destroy 0x267cb632 +vmlinux tcf_exts_dump 0xb73ef65a +vmlinux tcf_exts_dump_stats 0xe0483acf +vmlinux tcf_exts_validate 0x49b0e3a2 +vmlinux tcf_police 0x0ab8041e +vmlinux tcf_police_destroy 0xbc4b72c6 +vmlinux tcf_police_dump 0xf09e280b +vmlinux tcf_police_dump_stats 0x2c5cae9c +vmlinux tcf_police_hash 0x8493d6e7 +vmlinux tcf_police_ht 0x8d894736 +vmlinux tcf_police_locate 0xf7c6bc6b +vmlinux tcf_police_lookup 0x6c6e4ce9 +vmlinux tcf_police_new_index 0x7ae0f6c9 +vmlinux tcp_check_req 0x2be28a2b +vmlinux tcp_child_process 0x343a2741 +vmlinux tcp_close 0x2f951193 +vmlinux tcp_connect 0xe599fe59 +vmlinux tcp_create_openreq_child 0x4b84c7fc +vmlinux tcp_death_row 0xc4e4dfe4 +vmlinux tcp_disconnect 0x4707f399 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x555f18dc +vmlinux tcp_getsockopt 0x09b077b4 +vmlinux tcp_hashinfo 0xb6fdbde1 +vmlinux tcp_init_congestion_ops 0x4e651dd1 +vmlinux tcp_init_xmit_timers 0x51b8d0d8 +vmlinux tcp_ioctl 0x8da9618d +vmlinux tcp_make_synack 0xb6bee0e3 +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0xb5876aca +vmlinux tcp_poll 0xa8bf3577 +vmlinux tcp_proc_register 0xb8eae96f +vmlinux tcp_proc_unregister 0x9c7f62b8 +vmlinux tcp_prot 0xb52801df +vmlinux tcp_rcv_established 0xf4d38995 +vmlinux tcp_rcv_state_process 0xf202502e +vmlinux tcp_read_sock 0x7e29c716 +vmlinux tcp_recvmsg 0x2b164282 +vmlinux tcp_register_congestion_control 0x9039e93a +vmlinux tcp_reno_cong_avoid 0x48f6d4ee +vmlinux tcp_reno_min_cwnd 0xfc00b5af +vmlinux tcp_reno_ssthresh 0xa27d1ed9 +vmlinux tcp_sendmsg 0x8b14bde3 +vmlinux tcp_sendpage 0x7f236c61 +vmlinux tcp_setsockopt 0x58d1f684 +vmlinux tcp_shutdown 0x03690eee +vmlinux tcp_simple_retransmit 0x5b57800a +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0xecda634f +vmlinux tcp_timewait_state_process 0xfc71ee66 +vmlinux tcp_unhash 0xcecf53b4 +vmlinux tcp_unregister_congestion_control 0x49c3fd72 +vmlinux tcp_v4_conn_request 0x00dcd3d3 +vmlinux tcp_v4_connect 0x2e488fb8 +vmlinux tcp_v4_destroy_sock 0x5321bd28 +vmlinux tcp_v4_do_rcv 0xaf0e5111 +vmlinux tcp_v4_remember_stamp 0xc26643ce +vmlinux tcp_v4_send_check 0x25542c1c +vmlinux tcp_v4_syn_recv_sock 0xbc682f93 +vmlinux test_clear_page_dirty 0xe106bed0 +vmlinux test_set_page_writeback 0x8594d4c7 +vmlinux textsearch_destroy 0x7ed9dc87 +vmlinux textsearch_find_continuous 0x87c9ca23 +vmlinux textsearch_prepare 0x980df4dd +vmlinux textsearch_register 0xb7829766 +vmlinux textsearch_unregister 0x753cc5b8 +vmlinux thaw_bdev 0x82442e96 +vmlinux timespec_trunc 0xc045ad4e +vmlinux totalram_pages 0xde9360ba +vmlinux touch_nmi_watchdog 0xf51ae235 +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0xe112f5f4 +vmlinux tr_type_trans 0x1f16890d +vmlinux transport_add_device 0xe906bc87 +vmlinux transport_class_register 0xb3ac94ec +vmlinux transport_class_unregister 0x6a16595b +vmlinux transport_configure_device 0x317876e6 +vmlinux transport_destroy_device 0xd1b24029 +vmlinux transport_remove_device 0x4a9ac807 +vmlinux transport_setup_device 0x04899a17 +vmlinux truncate_inode_pages 0xa4ba8209 +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0xf0e0d62e +vmlinux try_to_release_page 0x23ff6a2a +vmlinux tty_check_change 0x171992a4 +vmlinux tty_flip_buffer_push 0x87320cc6 +vmlinux tty_get_baud_rate 0x71d351b9 +vmlinux tty_hangup 0x057716f8 +vmlinux tty_hung_up_p 0x8500ae6d +vmlinux tty_ldisc_deref 0x29823557 +vmlinux tty_ldisc_flush 0xb7bc7799 +vmlinux tty_ldisc_get 0x62b9fe61 +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x8e922e36 +vmlinux tty_ldisc_ref_wait 0xc8732e2b +vmlinux tty_name 0x274b0667 +vmlinux tty_register_device 0x14b6e577 +vmlinux tty_register_driver 0x89b03006 +vmlinux tty_register_ldisc 0xc79b8dc2 +vmlinux tty_set_operations 0xe340532d +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0x2ed2eb7c +vmlinux tty_unregister_driver 0x5088c440 +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0x9a6346e6 +vmlinux tty_wait_until_sent 0xdd240cda +vmlinux tty_wakeup 0x470d8f11 +vmlinux uart_add_one_port 0xdbb8f7e2 +vmlinux uart_get_baud_rate 0x0182c95f +vmlinux uart_get_divisor 0x300f1062 +vmlinux uart_match_port 0x2a8dd68f +vmlinux uart_register_driver 0x9c779875 +vmlinux uart_remove_one_port 0xb0513742 +vmlinux uart_resume_port 0xbc37b3d5 +vmlinux uart_suspend_port 0xdd519880 +vmlinux uart_unregister_driver 0xec2dd0ca +vmlinux uart_update_timeout 0x0ba06714 +vmlinux uart_write_wakeup 0xed5c0b77 +vmlinux udp_disconnect 0x9f332ccf +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0xbe485f4e +vmlinux udp_ioctl 0xdc7eb449 +vmlinux udp_poll 0x0e463c8f +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x16d62acc +vmlinux udp_proc_unregister 0x82c16b28 +vmlinux udp_prot 0xa8961c85 +vmlinux udp_sendmsg 0xa558ff37 +vmlinux uhci_check_and_reset_hc 0x1aadeca4 +vmlinux uhci_reset_hc 0x3a2c5359 +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unload_nls 0xc20194e0 +vmlinux unlock_buffer 0xc45b70bc +vmlinux unlock_cpu_hotplug 0xdbb6cbd9 +vmlinux unlock_kernel 0xb1f975aa +vmlinux unlock_new_inode 0xdb8d7c47 +vmlinux unlock_page 0xfec42814 +vmlinux unlock_rename 0x505671ff +vmlinux unmap_mapping_range 0x1ed7750d +vmlinux unmap_page_from_agp 0xe141b6b8 +vmlinux unmap_underlying_metadata 0xab00a2c7 +vmlinux unregister_8022_client 0x63c8faab +vmlinux unregister_acpi_bus_type 0x1be73645 +vmlinux unregister_binfmt 0x99c5a946 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0x8eb229f2 +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_exec_domain 0x8f2e3479 +vmlinux unregister_filesystem 0x4db57fa1 +vmlinux unregister_framebuffer 0x125271e7 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_key_type 0x15a085a8 +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0xeabc5b03 +vmlinux unregister_netdevice 0xfa945eac +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0xfa7c83d2 +vmlinux unregister_qdisc 0x0877c3ab +vmlinux unregister_quota_format 0xc6210e71 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0x1cfa979a +vmlinux unregister_snap_client 0x659eda29 +vmlinux unregister_sysctl_table 0xbed1b408 +vmlinux unregister_sysrq_key 0x1d44b205 +vmlinux unregister_tcf_proto_ops 0xe0d31ebf +vmlinux unregister_timer_hook 0x57da507b +vmlinux unregister_wlandev 0xb8f33f93 +vmlinux unset_nmi_callback 0x2ef9373e +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0x513c8bab +vmlinux update_region 0x4ac58e6a +vmlinux user_describe 0x63c7f124 +vmlinux user_destroy 0xbdc2b92f +vmlinux user_duplicate 0xb6ef4c9f +vmlinux user_instantiate 0xff9e91c0 +vmlinux user_match 0xeb7ab36b +vmlinux user_read 0xb6f34d4b +vmlinux user_update 0x28362501 +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0xa3796257 +vmlinux vc_cons 0x2ad29bc8 +vmlinux vc_resize 0xa3ed74bf +vmlinux vcc_hash 0x2cc2d52d +vmlinux vcc_insert_socket 0xb5ebb824 +vmlinux vcc_release_async 0x3aaf9228 +vmlinux vcc_sklist_lock 0x1e0dfcf0 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0xe9b722f1 +vmlinux vfs_follow_link 0xfae7640f +vmlinux vfs_fstat 0x2a0837e6 +vmlinux vfs_get_dqblk 0xc1c685a8 +vmlinux vfs_get_dqinfo 0xe1129fc0 +vmlinux vfs_getattr 0xedef0d08 +vmlinux vfs_link 0x590275a4 +vmlinux vfs_llseek 0xaa571361 +vmlinux vfs_lstat 0x12344839 +vmlinux vfs_mkdir 0x1c4aef99 +vmlinux vfs_mknod 0xe0e2de9d +vmlinux vfs_permission 0x0fad4f93 +vmlinux vfs_quota_off 0xec25f6e2 +vmlinux vfs_quota_on 0x269cf734 +vmlinux vfs_quota_on_mount 0x3e070652 +vmlinux vfs_quota_sync 0xb8cd4fca +vmlinux vfs_read 0x007bafc8 +vmlinux vfs_readdir 0x1b2542a1 +vmlinux vfs_readlink 0xa2c16938 +vmlinux vfs_readv 0xd0e96fba +vmlinux vfs_rename 0x414825b0 +vmlinux vfs_rmdir 0x165c2ad6 +vmlinux vfs_set_dqblk 0x5c03f1f6 +vmlinux vfs_set_dqinfo 0xe98540fd +vmlinux vfs_stat 0x787feff6 +vmlinux vfs_statfs 0x5eba34d3 +vmlinux vfs_symlink 0x9ab4e122 +vmlinux vfs_unlink 0x7c6a5b41 +vmlinux vfs_write 0xbde306b0 +vmlinux vfs_writev 0xc18f3a47 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0xd4cbd142 +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0xe5827206 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0x1757e8b8 +vmlinux vmtruncate 0xdc7ebdae +vmlinux vprintk 0x777a8e29 +vmlinux vscnprintf 0xf3522c9c +vmlinux vsnprintf 0x0e57f111 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0xf69be488 +vmlinux wait_for_completion_interruptible 0xc7ad2fb8 +vmlinux wait_for_completion_interruptible_timeout 0xbf82ea61 +vmlinux wait_for_completion_timeout 0xc6b6d78c +vmlinux wait_on_page_bit 0xac953f7a +vmlinux wait_on_sync_kiocb 0xf04d557d +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0x01bcbf08 +vmlinux wireless_send_event 0x3d55ec17 +vmlinux wireless_spy_update 0x13c85664 +vmlinux wlan_setup 0x08f77987 +vmlinux wlan_unsetup 0x88d924d2 +vmlinux write_inode_now 0x7b99e709 +vmlinux write_one_page 0x6d876aa5 +vmlinux x86_acpiid_to_apicid 0x062bdb0e +vmlinux x86_cpu_to_apicid 0xc98f029f +vmlinux xfrm4_rcv 0x716f385e +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0x35e665bc +vmlinux xfrm_bundle_ok 0xb9c6adc3 +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0xc0a6cadc +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0x245f99b3 +vmlinux xfrm_dst_lookup 0x263f5556 +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0x62908a9f +vmlinux xfrm_find_acq_byseq 0x8daf0f82 +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0x5bdc2d9a +vmlinux xfrm_init_state 0x080ecd01 +vmlinux xfrm_lookup 0xb751c522 +vmlinux xfrm_parse_spi 0x234d97d9 +vmlinux xfrm_policy_alloc 0xd899d630 +vmlinux xfrm_policy_byid 0x3fd65d8e +vmlinux xfrm_policy_bysel 0xc07b3979 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x77b1e12a +vmlinux xfrm_policy_list 0xed5e2c4c +vmlinux xfrm_policy_register_afinfo 0x044dda25 +vmlinux xfrm_policy_unregister_afinfo 0xe2cf8a60 +vmlinux xfrm_policy_walk 0x07f3640d +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0x5d16f681 +vmlinux xfrm_register_type 0x0040c554 +vmlinux xfrm_replay_advance 0x66c979d1 +vmlinux xfrm_replay_check 0x4f7002c4 +vmlinux xfrm_state_add 0x7050d0d1 +vmlinux xfrm_state_alloc 0x8a2bf82e +vmlinux xfrm_state_check 0x08945855 +vmlinux xfrm_state_check_expire 0xa790013e +vmlinux xfrm_state_delete 0x5837c6a2 +vmlinux xfrm_state_delete_tunnel 0x62255687 +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0x849e037f +vmlinux xfrm_state_lookup 0xdd8ca645 +vmlinux xfrm_state_mtu 0x68d9db17 +vmlinux xfrm_state_register_afinfo 0x043c4307 +vmlinux xfrm_state_unregister_afinfo 0x12931be5 +vmlinux xfrm_state_update 0xca95aa48 +vmlinux xfrm_state_walk 0x5c013ef2 +vmlinux xfrm_unregister_km 0xb9cb4ca6 +vmlinux xfrm_unregister_type 0xfc2fedb4 +vmlinux xfrm_user_policy 0xee0e82a2 +vmlinux xrlim_allow 0x5d54d01e +vmlinux xtime 0xb56717cf +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x52da8900 +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0x08b7e631 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/amd64/amd64-xeon +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/amd64/amd64-xeon @@ -0,0 +1,5592 @@ +drivers/acpi/ac acpi_get_ac_dir 0x63119b77 +drivers/acpi/battery acpi_get_battery_dir 0x753bfff0 +drivers/acpi/i2c_acpi_ec acpi_get_ec_hc 0x7be7f4b5 +drivers/acpi/processor acpi_processor_notify_smm 0xf0f746b2 +drivers/acpi/processor acpi_processor_register_performance 0x858fc2e6 +drivers/acpi/processor acpi_processor_set_thermal_limit 0xe8a3605f +drivers/acpi/processor acpi_processor_unregister_performance 0x70b3538a +drivers/atm/suni suni_init 0xe274a493 +drivers/atm/uPD98402 uPD98402_init 0x624ad4f4 +drivers/block/loop loop_register_transfer 0x1da3fd63 +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/block/paride/paride pi_connect 0x986461bd +drivers/block/paride/paride pi_disconnect 0xb3171a88 +drivers/block/paride/paride pi_do_claimed 0xe567b2f8 +drivers/block/paride/paride pi_init 0x5f568d04 +drivers/block/paride/paride pi_read_block 0x521b03e6 +drivers/block/paride/paride pi_read_regr 0x79ffe84b +drivers/block/paride/paride pi_register 0x2c8ea452 +drivers/block/paride/paride pi_release 0xeb54152e +drivers/block/paride/paride pi_schedule_claimed 0x5e3e00fc +drivers/block/paride/paride pi_unregister 0x725c076a +drivers/block/paride/paride pi_write_block 0x03dc0daf +drivers/block/paride/paride pi_write_regr 0x033af891 +drivers/cdrom/cdrom cdrom_get_last_written 0x88cf7bde +drivers/cdrom/cdrom cdrom_get_media_event 0x4158c05f +drivers/cdrom/cdrom cdrom_ioctl 0x1749c8ad +drivers/cdrom/cdrom cdrom_media_changed 0xaceeb34a +drivers/cdrom/cdrom cdrom_mode_select 0x4285f0cc +drivers/cdrom/cdrom cdrom_mode_sense 0xa541d2be +drivers/cdrom/cdrom cdrom_number_of_slots 0x406df0c3 +drivers/cdrom/cdrom cdrom_open 0xdf2b118b +drivers/cdrom/cdrom cdrom_release 0x4a67fee4 +drivers/cdrom/cdrom init_cdrom_command 0x4f476e96 +drivers/cdrom/cdrom register_cdrom 0x7f5f7bcf +drivers/cdrom/cdrom unregister_cdrom 0x877eab76 +drivers/char/drm/drm drm_addbufs_agp 0xdec9dc25 +drivers/char/drm/drm drm_addbufs_fb 0x00226aa1 +drivers/char/drm/drm drm_addbufs_pci 0x7a26c630 +drivers/char/drm/drm drm_addmap 0xe30c3237 +drivers/char/drm/drm drm_agp_acquire 0x3c540431 +drivers/char/drm/drm drm_agp_alloc 0xfd2c001e +drivers/char/drm/drm drm_agp_bind 0x28e64f3c +drivers/char/drm/drm drm_agp_bind_memory 0xbcaeaf26 +drivers/char/drm/drm drm_agp_enable 0x464b1384 +drivers/char/drm/drm drm_agp_free 0x847f10ef +drivers/char/drm/drm drm_agp_info 0x92f00763 +drivers/char/drm/drm drm_agp_release 0xde994a17 +drivers/char/drm/drm drm_agp_unbind 0x7624bd1e +drivers/char/drm/drm drm_ati_pcigart_cleanup 0x5c1b72f6 +drivers/char/drm/drm drm_ati_pcigart_init 0x18e1993b +drivers/char/drm/drm drm_compat_ioctl 0xb1e58e8b +drivers/char/drm/drm drm_core_get_map_ofs 0x064df683 +drivers/char/drm/drm drm_core_get_reg_ofs 0xb3e8ef6c +drivers/char/drm/drm drm_core_reclaim_buffers 0xadd79aae +drivers/char/drm/drm drm_debug 0x20645642 +drivers/char/drm/drm drm_exit 0x5dbffda4 +drivers/char/drm/drm drm_fasync 0x1e10ae6e +drivers/char/drm/drm drm_get_dev 0x46507093 +drivers/char/drm/drm drm_get_resource_len 0xa46300ff +drivers/char/drm/drm drm_get_resource_start 0x783c298d +drivers/char/drm/drm drm_init 0x382af136 +drivers/char/drm/drm drm_ioctl 0x4b4b7488 +drivers/char/drm/drm drm_irq_uninstall 0xc2990db1 +drivers/char/drm/drm drm_mmap 0x94b225ae +drivers/char/drm/drm drm_open 0x255a1f0e +drivers/char/drm/drm drm_order 0x3074f033 +drivers/char/drm/drm drm_pci_alloc 0x9b9a7200 +drivers/char/drm/drm drm_pci_free 0xf8cad780 +drivers/char/drm/drm drm_poll 0xeb6aa454 +drivers/char/drm/drm drm_release 0x2bff0a3b +drivers/char/drm/drm drm_rmmap 0x6a0592ec +drivers/char/drm/drm drm_rmmap_locked 0x30ee33ed +drivers/char/drm/drm drm_vbl_send_signals 0x4e30fe0f +drivers/char/ftape/lowlevel/ftape ftape_abort_operation 0xd90df519 +drivers/char/ftape/lowlevel/ftape ftape_calibrate_data_rate 0x82bcf52a +drivers/char/ftape/lowlevel/ftape ftape_command 0x799305e4 +drivers/char/ftape/lowlevel/ftape ftape_decode_header_segment 0x08b665ef +drivers/char/ftape/lowlevel/ftape ftape_disable 0x7b52f04b +drivers/char/ftape/lowlevel/ftape ftape_enable 0x7ec0d5d4 +drivers/char/ftape/lowlevel/ftape ftape_find_end_of_bsm_list 0x46738687 +drivers/char/ftape/lowlevel/ftape ftape_format_status 0xe9849eee +drivers/char/ftape/lowlevel/ftape ftape_format_track 0x40febb40 +drivers/char/ftape/lowlevel/ftape ftape_function_nest_level 0x50196743 +drivers/char/ftape/lowlevel/ftape ftape_get_bad_sector_entry 0xfed5a53d +drivers/char/ftape/lowlevel/ftape ftape_get_status 0x46f47070 +drivers/char/ftape/lowlevel/ftape ftape_loop_until_writes_done 0x003ed2ea +drivers/char/ftape/lowlevel/ftape ftape_mmap 0x0c6ffc2f +drivers/char/ftape/lowlevel/ftape ftape_parameter 0xc17b60e3 +drivers/char/ftape/lowlevel/ftape ftape_read_header_segment 0xa2b14b3c +drivers/char/ftape/lowlevel/ftape ftape_read_segment_fraction 0xc87f4ed7 +drivers/char/ftape/lowlevel/ftape ftape_ready_wait 0xc780ed08 +drivers/char/ftape/lowlevel/ftape ftape_report_error 0x999edffd +drivers/char/ftape/lowlevel/ftape ftape_report_operation 0xf5ac4591 +drivers/char/ftape/lowlevel/ftape ftape_reset_drive 0x2bdba6aa +drivers/char/ftape/lowlevel/ftape ftape_seek_to_bot 0x4815ac3c +drivers/char/ftape/lowlevel/ftape ftape_seek_to_eot 0x3566aa64 +drivers/char/ftape/lowlevel/ftape ftape_set_nr_buffers 0x8b56caaa +drivers/char/ftape/lowlevel/ftape ftape_set_state 0x5b52d4b8 +drivers/char/ftape/lowlevel/ftape ftape_start_writing 0xa99d81e3 +drivers/char/ftape/lowlevel/ftape ftape_trace_call 0x63f7f6d0 +drivers/char/ftape/lowlevel/ftape ftape_trace_exit 0x4e755dcf +drivers/char/ftape/lowlevel/ftape ftape_trace_log 0x92ce7eb1 +drivers/char/ftape/lowlevel/ftape ftape_tracing 0x6b6253d3 +drivers/char/ftape/lowlevel/ftape ftape_verify_segment 0x82675be7 +drivers/char/ftape/lowlevel/ftape ftape_write_segment 0x8a09c846 +drivers/char/ftape/lowlevel/ftape ftape_zap_read_buffers 0xdd9f0ae0 +drivers/char/ftape/zftape/zftape zft_cmpr_register 0xe27489d5 +drivers/char/ftape/zftape/zftape zft_fetch_segment_fraction 0x41f166c1 +drivers/char/ftape/zftape/zftape zft_vfree 0x02da35e5 +drivers/char/ftape/zftape/zftape zft_vmalloc_always 0x1770d505 +drivers/char/ftape/zftape/zftape zft_vmalloc_once 0x3c4b9c89 +drivers/char/generic_serial gs_block_til_ready 0x6ceda0b4 +drivers/char/generic_serial gs_chars_in_buffer 0x572c438a +drivers/char/generic_serial gs_close 0x6361dbd9 +drivers/char/generic_serial gs_flush_buffer 0xe4d6eef7 +drivers/char/generic_serial gs_flush_chars 0xcd5b8ff9 +drivers/char/generic_serial gs_getserial 0x099ff917 +drivers/char/generic_serial gs_got_break 0xcf4c4767 +drivers/char/generic_serial gs_hangup 0x1aee3ad8 +drivers/char/generic_serial gs_init_port 0x27765c7c +drivers/char/generic_serial gs_put_char 0xffd9e370 +drivers/char/generic_serial gs_set_termios 0x98f82c67 +drivers/char/generic_serial gs_setserial 0xe61cef51 +drivers/char/generic_serial gs_start 0x34f51054 +drivers/char/generic_serial gs_stop 0xa4a1d9b8 +drivers/char/generic_serial gs_write 0xb0f63aad +drivers/char/generic_serial gs_write_room 0x2b5cd264 +drivers/char/ip2main ip2_loadmain 0x5f735f69 +drivers/char/ipmi/ipmi_msghandler ipmi_addr_length 0x804f922a +drivers/char/ipmi/ipmi_msghandler ipmi_alloc_smi_msg 0x40f2b10c +drivers/char/ipmi/ipmi_msghandler ipmi_create_user 0x2c12218e +drivers/char/ipmi/ipmi_msghandler ipmi_destroy_user 0xa7fe2011 +drivers/char/ipmi/ipmi_msghandler ipmi_free_recv_msg 0x743f9840 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_LUN 0x6c611441 +drivers/char/ipmi/ipmi_msghandler ipmi_get_my_address 0x8357e2ba +drivers/char/ipmi/ipmi_msghandler ipmi_get_version 0x14722faf +drivers/char/ipmi/ipmi_msghandler ipmi_register_for_cmd 0x6ae32c1f +drivers/char/ipmi/ipmi_msghandler ipmi_register_smi 0x2da1753e +drivers/char/ipmi/ipmi_msghandler ipmi_request_settime 0xeef7553e +drivers/char/ipmi/ipmi_msghandler ipmi_request_supply_msgs 0xb553b603 +drivers/char/ipmi/ipmi_msghandler ipmi_set_gets_events 0x7ff58265 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_LUN 0x64369ec3 +drivers/char/ipmi/ipmi_msghandler ipmi_set_my_address 0x3782e7f1 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_add_proc_entry 0xd2ae7237 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_msg_received 0x50f16efc +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watchdog_pretimeout 0xfb8eed99 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_register 0xdb97a731 +drivers/char/ipmi/ipmi_msghandler ipmi_smi_watcher_unregister 0xe9b452a2 +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_for_cmd 0xc522930e +drivers/char/ipmi/ipmi_msghandler ipmi_unregister_smi 0xeec98118 +drivers/char/ipmi/ipmi_msghandler ipmi_user_set_run_to_completion 0xb773c57a +drivers/char/ipmi/ipmi_msghandler ipmi_validate_addr 0xe4f4665b +drivers/char/ipmi/ipmi_msghandler proc_ipmi_root 0xaf476ed3 +drivers/char/nvram __nvram_check_checksum 0x2adec1e0 +drivers/char/nvram __nvram_read_byte 0x17ff2c1d +drivers/char/nvram __nvram_write_byte 0xa8813189 +drivers/char/nvram nvram_check_checksum 0x7da28f12 +drivers/char/nvram nvram_read_byte 0x0f28cb91 +drivers/char/nvram nvram_write_byte 0x9ce3f83f +drivers/char/tpm/tpm tpm_open 0x49e5cf0a +drivers/char/tpm/tpm tpm_pm_resume 0x1a4f6ecd +drivers/char/tpm/tpm tpm_pm_suspend 0x809425c8 +drivers/char/tpm/tpm tpm_read 0x7f5fb61e +drivers/char/tpm/tpm tpm_register_hardware 0xf0377250 +drivers/char/tpm/tpm tpm_release 0x43291dd9 +drivers/char/tpm/tpm tpm_remove_hardware 0xc83a70af +drivers/char/tpm/tpm tpm_show_caps 0x363970a1 +drivers/char/tpm/tpm tpm_show_pcrs 0x82fcd6dc +drivers/char/tpm/tpm tpm_show_pubek 0x978c721f +drivers/char/tpm/tpm tpm_store_cancel 0x9b078d05 +drivers/char/tpm/tpm tpm_write 0x082098d6 +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/cpufreq/cpufreq_userspace cpufreq_gov_userspace 0x77674328 +drivers/cpufreq/freq_table cpufreq_freq_attr_scaling_available_freqs 0x7343ca7d +drivers/cpufreq/freq_table cpufreq_frequency_get_table 0x2f47d8c7 +drivers/cpufreq/freq_table cpufreq_frequency_table_cpuinfo 0xe9d96de2 +drivers/cpufreq/freq_table cpufreq_frequency_table_get_attr 0x706b3a33 +drivers/cpufreq/freq_table cpufreq_frequency_table_put_attr 0x7ae1ae8e +drivers/cpufreq/freq_table cpufreq_frequency_table_target 0x198b23ff +drivers/cpufreq/freq_table cpufreq_frequency_table_verify 0x253435a7 +drivers/hwmon/hwmon-vid vid_from_reg 0x9729a872 +drivers/hwmon/hwmon-vid vid_which_vrm 0xeb46a4c5 +drivers/i2c/algos/i2c-algo-bit i2c_bit_add_bus 0x875bc647 +drivers/i2c/algos/i2c-algo-bit i2c_bit_del_bus 0x59447cf7 +drivers/i2c/algos/i2c-algo-pca i2c_pca_add_bus 0x6c65854e +drivers/i2c/algos/i2c-algo-pca i2c_pca_del_bus 0xb27a3ffe +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_add_bus 0xd32b0db0 +drivers/i2c/algos/i2c-algo-pcf i2c_pcf_del_bus 0x0d34b700 +drivers/i2c/busses/i2c-amd756 amd756_smbus 0x95f502c2 +drivers/i2c/busses/i2c-isa i2c_isa_add_driver 0x6919f8dc +drivers/i2c/busses/i2c-isa i2c_isa_del_driver 0xa668d2e9 +drivers/i2c/chips/ds1337 ds1337_do_command 0x4c0b0237 +drivers/i2c/chips/x1205 x1205_direct_attach 0x9038db9b +drivers/i2c/chips/x1205 x1205_do_command 0x715bb0d7 +drivers/i2c/i2c-core i2c_adapter_class 0x46345de4 +drivers/i2c/i2c-core i2c_adapter_dev_release 0x07168929 +drivers/i2c/i2c-core i2c_adapter_driver 0xd99de59d +drivers/i2c/i2c-core i2c_add_adapter 0xee9ccddc +drivers/i2c/i2c-core i2c_add_driver 0x9b557800 +drivers/i2c/i2c-core i2c_attach_client 0x81bcdadc +drivers/i2c/i2c-core i2c_bus_type 0x02e9e9ef +drivers/i2c/i2c-core i2c_check_addr 0xc04ba968 +drivers/i2c/i2c-core i2c_clients_command 0xc1a6c8e4 +drivers/i2c/i2c-core i2c_control 0x29fd3f54 +drivers/i2c/i2c-core i2c_del_adapter 0xfc29184c +drivers/i2c/i2c-core i2c_del_driver 0xca062bc3 +drivers/i2c/i2c-core i2c_detach_client 0xee282bb4 +drivers/i2c/i2c-core i2c_get_adapter 0x4211e2d6 +drivers/i2c/i2c-core i2c_master_recv 0x32500d0d +drivers/i2c/i2c-core i2c_master_send 0x465b6e8a +drivers/i2c/i2c-core i2c_probe 0x52e06d4f +drivers/i2c/i2c-core i2c_put_adapter 0xa0784213 +drivers/i2c/i2c-core i2c_release_client 0xcf78e5c2 +drivers/i2c/i2c-core i2c_smbus_read_byte 0xd8564f76 +drivers/i2c/i2c-core i2c_smbus_read_byte_data 0xcceee29a +drivers/i2c/i2c-core i2c_smbus_read_i2c_block_data 0x1a844193 +drivers/i2c/i2c-core i2c_smbus_read_word_data 0xd5ca0e65 +drivers/i2c/i2c-core i2c_smbus_write_block_data 0x765331c9 +drivers/i2c/i2c-core i2c_smbus_write_byte 0x583423ed +drivers/i2c/i2c-core i2c_smbus_write_byte_data 0x8171f586 +drivers/i2c/i2c-core i2c_smbus_write_quick 0xcd0d61e2 +drivers/i2c/i2c-core i2c_smbus_write_word_data 0x7e0053d5 +drivers/i2c/i2c-core i2c_smbus_xfer 0x5c21aaba +drivers/i2c/i2c-core i2c_transfer 0x5237e053 +drivers/i2c/i2c-core i2c_use_client 0xe17844a1 +drivers/ieee1394/ieee1394 _csr1212_destroy_keyval 0x18269033 +drivers/ieee1394/ieee1394 _csr1212_read_keyval 0x336406db +drivers/ieee1394/ieee1394 csr1212_attach_keyval_to_directory 0xab652655 +drivers/ieee1394/ieee1394 csr1212_detach_keyval_from_directory 0x9de05239 +drivers/ieee1394/ieee1394 csr1212_new_directory 0xbf0cb97e +drivers/ieee1394/ieee1394 csr1212_parse_keyval 0x07d47ac9 +drivers/ieee1394/ieee1394 csr1212_read 0x62913498 +drivers/ieee1394/ieee1394 csr1212_release_keyval 0xf1490f9a +drivers/ieee1394/ieee1394 dma_prog_region_alloc 0x4b9bec1e +drivers/ieee1394/ieee1394 dma_prog_region_free 0x31a72b64 +drivers/ieee1394/ieee1394 dma_prog_region_init 0x31ca313b +drivers/ieee1394/ieee1394 dma_region_alloc 0xab575acc +drivers/ieee1394/ieee1394 dma_region_free 0x4219037a +drivers/ieee1394/ieee1394 dma_region_init 0x34168671 +drivers/ieee1394/ieee1394 dma_region_mmap 0xb93c0e51 +drivers/ieee1394/ieee1394 dma_region_offset_to_bus 0x7f602b95 +drivers/ieee1394/ieee1394 dma_region_sync_for_cpu 0x92c6111e +drivers/ieee1394/ieee1394 dma_region_sync_for_device 0x97854c92 +drivers/ieee1394/ieee1394 highlevel_host_reset 0xf09995a2 +drivers/ieee1394/ieee1394 hpsb_add_host 0x58724e84 +drivers/ieee1394/ieee1394 hpsb_alloc_host 0x03d069be +drivers/ieee1394/ieee1394 hpsb_alloc_packet 0x50a7a2cf +drivers/ieee1394/ieee1394 hpsb_allocate_and_register_addrspace 0x00e5970f +drivers/ieee1394/ieee1394 hpsb_bus_reset 0x3643792b +drivers/ieee1394/ieee1394 hpsb_create_hostinfo 0xbdf372b8 +drivers/ieee1394/ieee1394 hpsb_destroy_hostinfo 0xc6651e11 +drivers/ieee1394/ieee1394 hpsb_disable_irm 0xec8d18cf +drivers/ieee1394/ieee1394 hpsb_free_packet 0x3082fd14 +drivers/ieee1394/ieee1394 hpsb_free_tlabel 0xaf682009 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo 0xda871387 +drivers/ieee1394/ieee1394 hpsb_get_hostinfo_bykey 0xf690cd1e +drivers/ieee1394/ieee1394 hpsb_get_tlabel 0x2cb7075f +drivers/ieee1394/ieee1394 hpsb_iso_n_ready 0x20e82c18 +drivers/ieee1394/ieee1394 hpsb_iso_packet_received 0xc43057eb +drivers/ieee1394/ieee1394 hpsb_iso_packet_sent 0x2966325f +drivers/ieee1394/ieee1394 hpsb_iso_recv_flush 0xfaec5b21 +drivers/ieee1394/ieee1394 hpsb_iso_recv_init 0x346d775f +drivers/ieee1394/ieee1394 hpsb_iso_recv_listen_channel 0x5b7c9cfc +drivers/ieee1394/ieee1394 hpsb_iso_recv_release_packets 0x89c9789f +drivers/ieee1394/ieee1394 hpsb_iso_recv_set_channel_mask 0xeac569ca +drivers/ieee1394/ieee1394 hpsb_iso_recv_start 0x91368a77 +drivers/ieee1394/ieee1394 hpsb_iso_recv_unlisten_channel 0x807c22a1 +drivers/ieee1394/ieee1394 hpsb_iso_shutdown 0xdebd3a9d +drivers/ieee1394/ieee1394 hpsb_iso_stop 0xe332b464 +drivers/ieee1394/ieee1394 hpsb_iso_wake 0xdab4fcc5 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_init 0x43b9584d +drivers/ieee1394/ieee1394 hpsb_iso_xmit_queue_packet 0x94989c27 +drivers/ieee1394/ieee1394 hpsb_iso_xmit_start 0xe7276d3f +drivers/ieee1394/ieee1394 hpsb_iso_xmit_sync 0x9423b6d8 +drivers/ieee1394/ieee1394 hpsb_listen_channel 0x3012f478 +drivers/ieee1394/ieee1394 hpsb_make_isopacket 0xc9820fc5 +drivers/ieee1394/ieee1394 hpsb_make_lock64packet 0xd68348f5 +drivers/ieee1394/ieee1394 hpsb_make_lockpacket 0xeea32d86 +drivers/ieee1394/ieee1394 hpsb_make_phypacket 0x9f6e11c2 +drivers/ieee1394/ieee1394 hpsb_make_readpacket 0x35e6d400 +drivers/ieee1394/ieee1394 hpsb_make_streampacket 0x1c1c6eb9 +drivers/ieee1394/ieee1394 hpsb_make_writepacket 0x2cdbdf8d +drivers/ieee1394/ieee1394 hpsb_node_fill_packet 0x75c2e3d0 +drivers/ieee1394/ieee1394 hpsb_node_write 0x6c2f470c +drivers/ieee1394/ieee1394 hpsb_packet_received 0x1bfa2a98 +drivers/ieee1394/ieee1394 hpsb_packet_sent 0x59ac51f5 +drivers/ieee1394/ieee1394 hpsb_packet_success 0x8c11465f +drivers/ieee1394/ieee1394 hpsb_protocol_class 0x569fcb87 +drivers/ieee1394/ieee1394 hpsb_read 0xf205549b +drivers/ieee1394/ieee1394 hpsb_register_addrspace 0x63db094a +drivers/ieee1394/ieee1394 hpsb_register_highlevel 0xef5ac860 +drivers/ieee1394/ieee1394 hpsb_register_protocol 0xaa12c8d5 +drivers/ieee1394/ieee1394 hpsb_remove_host 0x47251d12 +drivers/ieee1394/ieee1394 hpsb_reset_bus 0x1766ba75 +drivers/ieee1394/ieee1394 hpsb_selfid_complete 0x29326766 +drivers/ieee1394/ieee1394 hpsb_selfid_received 0x9c37239d +drivers/ieee1394/ieee1394 hpsb_send_packet 0x8c3049ce +drivers/ieee1394/ieee1394 hpsb_set_hostinfo 0x153a00d0 +drivers/ieee1394/ieee1394 hpsb_set_hostinfo_key 0x26f3274f +drivers/ieee1394/ieee1394 hpsb_set_packet_complete_task 0xbb583549 +drivers/ieee1394/ieee1394 hpsb_speedto_str 0xfba57f51 +drivers/ieee1394/ieee1394 hpsb_unlisten_channel 0x64affe73 +drivers/ieee1394/ieee1394 hpsb_unregister_addrspace 0xd1d189ab +drivers/ieee1394/ieee1394 hpsb_unregister_highlevel 0xeff74485 +drivers/ieee1394/ieee1394 hpsb_unregister_protocol 0xccde8516 +drivers/ieee1394/ieee1394 hpsb_update_config_rom 0xb9b15e3a +drivers/ieee1394/ieee1394 hpsb_update_config_rom_image 0x572d1613 +drivers/ieee1394/ieee1394 hpsb_write 0x9c72af91 +drivers/ieee1394/ieee1394 ieee1394_bus_type 0xf244465f +drivers/ieee1394/ohci1394 ohci1394_init_iso_tasklet 0x1d5aeebc +drivers/ieee1394/ohci1394 ohci1394_register_iso_tasklet 0x56df0cd7 +drivers/ieee1394/ohci1394 ohci1394_stop_context 0x381a1f2b +drivers/ieee1394/ohci1394 ohci1394_unregister_iso_tasklet 0xc0dd646f +drivers/infiniband/core/ib_cm ib_cm_establish 0x56a1934b +drivers/infiniband/core/ib_cm ib_cm_init_qp_attr 0xf6f8f163 +drivers/infiniband/core/ib_cm ib_cm_listen 0xb4f4768e +drivers/infiniband/core/ib_cm ib_create_cm_id 0x9e7e9942 +drivers/infiniband/core/ib_cm ib_destroy_cm_id 0xfae36125 +drivers/infiniband/core/ib_cm ib_send_cm_apr 0xd10b3e78 +drivers/infiniband/core/ib_cm ib_send_cm_drep 0x01447a73 +drivers/infiniband/core/ib_cm ib_send_cm_dreq 0x3ecc734c +drivers/infiniband/core/ib_cm ib_send_cm_lap 0x86eb81b1 +drivers/infiniband/core/ib_cm ib_send_cm_mra 0x3a14b419 +drivers/infiniband/core/ib_cm ib_send_cm_rej 0xb073eb82 +drivers/infiniband/core/ib_cm ib_send_cm_rep 0xf7a43f32 +drivers/infiniband/core/ib_cm ib_send_cm_req 0x438813c0 +drivers/infiniband/core/ib_cm ib_send_cm_rtu 0x29836840 +drivers/infiniband/core/ib_cm ib_send_cm_sidr_rep 0xb4eb6a2f +drivers/infiniband/core/ib_cm ib_send_cm_sidr_req 0x0d0a4d98 +drivers/infiniband/core/ib_core ib_alloc_device 0x3c258594 +drivers/infiniband/core/ib_core ib_alloc_fmr 0x78e5bc80 +drivers/infiniband/core/ib_core ib_alloc_mw 0x21a5a4e7 +drivers/infiniband/core/ib_core ib_alloc_pd 0xafc5dd45 +drivers/infiniband/core/ib_core ib_attach_mcast 0x46a19d24 +drivers/infiniband/core/ib_core ib_create_ah 0x2f353b85 +drivers/infiniband/core/ib_core ib_create_ah_from_wc 0xfb8df137 +drivers/infiniband/core/ib_core ib_create_cq 0x59f41834 +drivers/infiniband/core/ib_core ib_create_fmr_pool 0x9b0c6ea4 +drivers/infiniband/core/ib_core ib_create_qp 0x054b1b28 +drivers/infiniband/core/ib_core ib_create_srq 0xdc7f4653 +drivers/infiniband/core/ib_core ib_dealloc_device 0xe2de61df +drivers/infiniband/core/ib_core ib_dealloc_fmr 0x9699db5d +drivers/infiniband/core/ib_core ib_dealloc_mw 0xc0d97bdb +drivers/infiniband/core/ib_core ib_dealloc_pd 0x4d0880b6 +drivers/infiniband/core/ib_core ib_dereg_mr 0x81f442aa +drivers/infiniband/core/ib_core ib_destroy_ah 0x4acd07f8 +drivers/infiniband/core/ib_core ib_destroy_cq 0x230b0c38 +drivers/infiniband/core/ib_core ib_destroy_fmr_pool 0x4a3e354d +drivers/infiniband/core/ib_core ib_destroy_qp 0x92f0f938 +drivers/infiniband/core/ib_core ib_destroy_srq 0x4d5a4e79 +drivers/infiniband/core/ib_core ib_detach_mcast 0x23482550 +drivers/infiniband/core/ib_core ib_dispatch_event 0x7c18d734 +drivers/infiniband/core/ib_core ib_find_cached_gid 0x36f4bdb9 +drivers/infiniband/core/ib_core ib_find_cached_pkey 0xdb4c64fc +drivers/infiniband/core/ib_core ib_flush_fmr_pool 0x36722af0 +drivers/infiniband/core/ib_core ib_fmr_pool_map_phys 0x3a27481a +drivers/infiniband/core/ib_core ib_fmr_pool_unmap 0xa9086ed5 +drivers/infiniband/core/ib_core ib_get_cached_gid 0xf5d96936 +drivers/infiniband/core/ib_core ib_get_cached_pkey 0xb92dac3e +drivers/infiniband/core/ib_core ib_get_client_data 0x8de9ad30 +drivers/infiniband/core/ib_core ib_get_dma_mr 0xea0dcfc3 +drivers/infiniband/core/ib_core ib_modify_ah 0xed994a83 +drivers/infiniband/core/ib_core ib_modify_device 0xff9cde7b +drivers/infiniband/core/ib_core ib_modify_port 0x7e015b06 +drivers/infiniband/core/ib_core ib_modify_qp 0xaf7a1b6a +drivers/infiniband/core/ib_core ib_modify_srq 0x667e8694 +drivers/infiniband/core/ib_core ib_pack 0x06830b9a +drivers/infiniband/core/ib_core ib_query_ah 0x9da30fa8 +drivers/infiniband/core/ib_core ib_query_device 0xaa9d56ba +drivers/infiniband/core/ib_core ib_query_gid 0xc83c0ccc +drivers/infiniband/core/ib_core ib_query_mr 0xde2a4cb2 +drivers/infiniband/core/ib_core ib_query_pkey 0x017e4040 +drivers/infiniband/core/ib_core ib_query_port 0x858e9ebd +drivers/infiniband/core/ib_core ib_query_qp 0x853c021f +drivers/infiniband/core/ib_core ib_query_srq 0xf502dcb3 +drivers/infiniband/core/ib_core ib_reg_phys_mr 0x71271bdd +drivers/infiniband/core/ib_core ib_register_client 0x8fce4206 +drivers/infiniband/core/ib_core ib_register_device 0x57b44e00 +drivers/infiniband/core/ib_core ib_register_event_handler 0x808e4779 +drivers/infiniband/core/ib_core ib_rereg_phys_mr 0x073a5f0e +drivers/infiniband/core/ib_core ib_resize_cq 0x3e40737c +drivers/infiniband/core/ib_core ib_set_client_data 0xf8ad1d38 +drivers/infiniband/core/ib_core ib_ud_header_init 0x965c1dae +drivers/infiniband/core/ib_core ib_ud_header_pack 0x8d12f837 +drivers/infiniband/core/ib_core ib_ud_header_unpack 0x11d42382 +drivers/infiniband/core/ib_core ib_unmap_fmr 0x1e491a04 +drivers/infiniband/core/ib_core ib_unpack 0xf96fc9de +drivers/infiniband/core/ib_core ib_unregister_client 0xe15be0c3 +drivers/infiniband/core/ib_core ib_unregister_device 0x9e04ad5e +drivers/infiniband/core/ib_core ib_unregister_event_handler 0x301f2de2 +drivers/infiniband/core/ib_mad ib_cancel_mad 0xf9aa794b +drivers/infiniband/core/ib_mad ib_coalesce_recv_mad 0x6a3bbc94 +drivers/infiniband/core/ib_mad ib_create_send_mad 0x5b8a1f98 +drivers/infiniband/core/ib_mad ib_free_recv_mad 0xd6f8244e +drivers/infiniband/core/ib_mad ib_free_send_mad 0x8e15d795 +drivers/infiniband/core/ib_mad ib_modify_mad 0x3a464a3d +drivers/infiniband/core/ib_mad ib_post_send_mad 0x8a492b13 +drivers/infiniband/core/ib_mad ib_process_mad_wc 0x44fd6d5d +drivers/infiniband/core/ib_mad ib_redirect_mad_qp 0xd581d4b7 +drivers/infiniband/core/ib_mad ib_register_mad_agent 0xa20f763b +drivers/infiniband/core/ib_mad ib_register_mad_snoop 0xb728508a +drivers/infiniband/core/ib_mad ib_unregister_mad_agent 0xe2547f16 +drivers/infiniband/core/ib_sa ib_sa_cancel_query 0x2fc946f0 +drivers/infiniband/core/ib_sa ib_sa_mcmember_rec_query 0x51a14be5 +drivers/infiniband/core/ib_sa ib_sa_path_rec_get 0xd04ef2a3 +drivers/infiniband/core/ib_sa ib_sa_service_rec_query 0xffd1b7ae +drivers/input/gameport/gameport __gameport_register_driver 0xdd6b38df +drivers/input/gameport/gameport __gameport_register_port 0xdb48d8a5 +drivers/input/gameport/gameport gameport_close 0xc8c859f1 +drivers/input/gameport/gameport gameport_cooked_read 0xcd91c196 +drivers/input/gameport/gameport gameport_open 0x653e8248 +drivers/input/gameport/gameport gameport_rescan 0x5b39f825 +drivers/input/gameport/gameport gameport_set_name 0x647accca +drivers/input/gameport/gameport gameport_set_phys 0x51bb4eda +drivers/input/gameport/gameport gameport_start_polling 0x396e80e1 +drivers/input/gameport/gameport gameport_stop_polling 0xde4149a9 +drivers/input/gameport/gameport gameport_unregister_driver 0x934f9fe3 +drivers/input/gameport/gameport gameport_unregister_port 0xd002eaf6 +drivers/isdn/capi/capifs capifs_free_ncci 0x2c54c957 +drivers/isdn/capi/capifs capifs_new_ncci 0xd0bc06ce +drivers/isdn/capi/kernelcapi attach_capi_ctr 0xaa04fc59 +drivers/isdn/capi/kernelcapi capi20_get_manufacturer 0x7e6f1307 +drivers/isdn/capi/kernelcapi capi20_get_profile 0xe19a11ac +drivers/isdn/capi/kernelcapi capi20_get_serial 0x7a33596c +drivers/isdn/capi/kernelcapi capi20_get_version 0x14f2aa5a +drivers/isdn/capi/kernelcapi capi20_isinstalled 0x31c24aa4 +drivers/isdn/capi/kernelcapi capi20_manufacturer 0xed061606 +drivers/isdn/capi/kernelcapi capi20_put_message 0xb757ea13 +drivers/isdn/capi/kernelcapi capi20_register 0x345ddae0 +drivers/isdn/capi/kernelcapi capi20_release 0x537ad720 +drivers/isdn/capi/kernelcapi capi20_set_callback 0x7711576c +drivers/isdn/capi/kernelcapi capi_cmd2str 0xb19fda8d +drivers/isdn/capi/kernelcapi capi_cmsg2message 0x50b33ca4 +drivers/isdn/capi/kernelcapi capi_cmsg2str 0xd45b5eb5 +drivers/isdn/capi/kernelcapi capi_cmsg_header 0xb60e5e5f +drivers/isdn/capi/kernelcapi capi_ctr_handle_message 0x503d2b83 +drivers/isdn/capi/kernelcapi capi_ctr_ready 0x2960c9a7 +drivers/isdn/capi/kernelcapi capi_ctr_reseted 0x8c0c2239 +drivers/isdn/capi/kernelcapi capi_ctr_resume_output 0x1794a9a4 +drivers/isdn/capi/kernelcapi capi_ctr_suspend_output 0x6b89966a +drivers/isdn/capi/kernelcapi capi_info2str 0x47d3fc51 +drivers/isdn/capi/kernelcapi capi_message2cmsg 0x6057c6f3 +drivers/isdn/capi/kernelcapi capi_message2str 0xa7abc5e3 +drivers/isdn/capi/kernelcapi capilib_data_b3_conf 0x62e32d43 +drivers/isdn/capi/kernelcapi capilib_data_b3_req 0x71e8d5ba +drivers/isdn/capi/kernelcapi capilib_free_ncci 0x2b8eab1f +drivers/isdn/capi/kernelcapi capilib_new_ncci 0x2baa6586 +drivers/isdn/capi/kernelcapi capilib_release 0x8f699913 +drivers/isdn/capi/kernelcapi capilib_release_appl 0xaa165d27 +drivers/isdn/capi/kernelcapi detach_capi_ctr 0x12717d00 +drivers/isdn/capi/kernelcapi register_capi_driver 0x9f823278 +drivers/isdn/capi/kernelcapi unregister_capi_driver 0x04403fcf +drivers/isdn/hardware/avm/b1 avmcard_dma_alloc 0xbdc13fcd +drivers/isdn/hardware/avm/b1 avmcard_dma_free 0x5a7dc24d +drivers/isdn/hardware/avm/b1 b1_alloc_card 0x9f494bb0 +drivers/isdn/hardware/avm/b1 b1_detect 0xdfd28376 +drivers/isdn/hardware/avm/b1 b1_free_card 0x665b6051 +drivers/isdn/hardware/avm/b1 b1_getrevision 0x173653bc +drivers/isdn/hardware/avm/b1 b1_interrupt 0x42fe58a1 +drivers/isdn/hardware/avm/b1 b1_irq_table 0x85f09690 +drivers/isdn/hardware/avm/b1 b1_load_config 0x89969548 +drivers/isdn/hardware/avm/b1 b1_load_firmware 0x58719b4c +drivers/isdn/hardware/avm/b1 b1_load_t4file 0xd503d743 +drivers/isdn/hardware/avm/b1 b1_loaded 0xb5f2bf3c +drivers/isdn/hardware/avm/b1 b1_parse_version 0x6a5f3a0f +drivers/isdn/hardware/avm/b1 b1_register_appl 0xd4fdde69 +drivers/isdn/hardware/avm/b1 b1_release_appl 0x9ef78a41 +drivers/isdn/hardware/avm/b1 b1_reset_ctr 0x57a35194 +drivers/isdn/hardware/avm/b1 b1_send_message 0xb25ae7e4 +drivers/isdn/hardware/avm/b1 b1ctl_read_proc 0x20609b2a +drivers/isdn/hardware/avm/b1dma b1dma_interrupt 0x405cf7b2 +drivers/isdn/hardware/avm/b1dma b1dma_load_firmware 0x925a19ce +drivers/isdn/hardware/avm/b1dma b1dma_register_appl 0xa5112c6d +drivers/isdn/hardware/avm/b1dma b1dma_release_appl 0xbe91430b +drivers/isdn/hardware/avm/b1dma b1dma_reset 0x0e31d112 +drivers/isdn/hardware/avm/b1dma b1dma_reset_ctr 0x8e5d4aa6 +drivers/isdn/hardware/avm/b1dma b1dma_send_message 0x6d61d127 +drivers/isdn/hardware/avm/b1dma b1dmactl_read_proc 0x5d20821c +drivers/isdn/hardware/avm/b1dma b1pciv4_detect 0x2f54ac57 +drivers/isdn/hardware/avm/b1dma t1pci_detect 0xe236138e +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_b1 0xf14bf8b1 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m1 0xaec3240e +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_addcard_m2 0xea620116 +drivers/isdn/hardware/avm/b1pcmcia b1pcmcia_delcard 0x29562993 +drivers/isdn/hardware/eicon/divadidd DIVA_DIDD_Read 0x2974ead1 +drivers/isdn/hardware/eicon/divadidd proc_net_eicon 0x4ba10fc7 +drivers/isdn/hisax/hisax FsmChangeState 0x93a64734 +drivers/isdn/hisax/hisax FsmDelTimer 0x799088e0 +drivers/isdn/hisax/hisax FsmEvent 0x9df0cd27 +drivers/isdn/hisax/hisax FsmFree 0x148f0c99 +drivers/isdn/hisax/hisax FsmInitTimer 0x52866abe +drivers/isdn/hisax/hisax FsmNew 0xf0a16657 +drivers/isdn/hisax/hisax FsmRestartTimer 0xde7e7906 +drivers/isdn/hisax/hisax HiSax_closecard 0xfc27303b +drivers/isdn/hisax/hisax hisax_init_pcmcia 0xcf953fc7 +drivers/isdn/hisax/hisax hisax_register 0xee93522c +drivers/isdn/hisax/hisax hisax_unregister 0x07f4f2ce +drivers/isdn/hisax/hisax_isac isac_d_l2l1 0x3f3b323a +drivers/isdn/hisax/hisax_isac isac_init 0x99f31686 +drivers/isdn/hisax/hisax_isac isac_irq 0x58eea646 +drivers/isdn/hisax/hisax_isac isac_setup 0xba231eb5 +drivers/isdn/hisax/hisax_isac isacsx_irq 0x8e5d0571 +drivers/isdn/hisax/hisax_isac isacsx_setup 0x65fb9a60 +drivers/isdn/hisax/isdnhdlc isdnhdlc_bit_rev_tab 0xe82c3e32 +drivers/isdn/hisax/isdnhdlc isdnhdlc_decode 0x1a1afeef +drivers/isdn/hisax/isdnhdlc isdnhdlc_encode 0x52a6537c +drivers/isdn/hisax/isdnhdlc isdnhdlc_out_init 0x277685da +drivers/isdn/hisax/isdnhdlc isdnhdlc_rcv_init 0x1dc6a9fc +drivers/isdn/i4l/isdn isdn_ppp_register_compressor 0x162c2aba +drivers/isdn/i4l/isdn isdn_ppp_unregister_compressor 0x061fa135 +drivers/isdn/i4l/isdn isdn_register_divert 0xb7757abb +drivers/isdn/i4l/isdn register_isdn 0xfaa18617 +drivers/isdn/misdn/mISDN_core mISDN_AddIE 0xaab0be76 +drivers/isdn/misdn/mISDN_core mISDN_AddvarIE 0xe081c836 +drivers/isdn/misdn/mISDN_core mISDN_ConnectIF 0xd52db7f1 +drivers/isdn/misdn/mISDN_core mISDN_DisConnectIF 0x47dc13cf +drivers/isdn/misdn/mISDN_core mISDN_FsmAddTimer 0x7214e53f +drivers/isdn/misdn/mISDN_core mISDN_FsmChangeState 0x50c2230c +drivers/isdn/misdn/mISDN_core mISDN_FsmDelTimer 0x3010393f +drivers/isdn/misdn/mISDN_core mISDN_FsmEvent 0xd5145151 +drivers/isdn/misdn/mISDN_core mISDN_FsmFree 0x2348cc3c +drivers/isdn/misdn/mISDN_core mISDN_FsmInitTimer 0x172da300 +drivers/isdn/misdn/mISDN_core mISDN_FsmNew 0xf9e7832f +drivers/isdn/misdn/mISDN_core mISDN_FsmRestartTimer 0x50a5d950 +drivers/isdn/misdn/mISDN_core mISDN_HasProtocol 0x8d687ba6 +drivers/isdn/misdn/mISDN_core mISDN_LogL3Msg 0xf61f8206 +drivers/isdn/misdn/mISDN_core mISDN_QuickHex 0x91b96ea6 +drivers/isdn/misdn/mISDN_core mISDN_RemoveUsedPID 0xd956d2e8 +drivers/isdn/misdn/mISDN_core mISDN_SetHandledPID 0x557fc8ab +drivers/isdn/misdn/mISDN_core mISDN_SetIF 0x90f53197 +drivers/isdn/misdn/mISDN_core mISDN_alloc_l3msg 0x7c8f3be2 +drivers/isdn/misdn/mISDN_core mISDN_bprotocol2pid 0xed673eae +drivers/isdn/misdn/mISDN_core mISDN_debug 0xff10c7d9 +drivers/isdn/misdn/mISDN_core mISDN_debugprint 0xf7797dc9 +drivers/isdn/misdn/mISDN_core mISDN_free_bch 0xa13a2751 +drivers/isdn/misdn/mISDN_core mISDN_free_dch 0xb3e02fac +drivers/isdn/misdn/mISDN_core mISDN_get_down_layer 0xd1c0ae73 +drivers/isdn/misdn/mISDN_core mISDN_get_lowlayer 0x9f6faa8f +drivers/isdn/misdn/mISDN_core mISDN_get_protocol 0x58720c8a +drivers/isdn/misdn/mISDN_core mISDN_get_up_layer 0xc6091c92 +drivers/isdn/misdn/mISDN_core mISDN_getrev 0x91f1a1b8 +drivers/isdn/misdn/mISDN_core mISDN_initQ931_info 0x45d57ad5 +drivers/isdn/misdn/mISDN_core mISDN_init_bch 0x45990163 +drivers/isdn/misdn/mISDN_core mISDN_init_dch 0x54dc6f25 +drivers/isdn/misdn/mISDN_core mISDN_init_instance 0x35ef2947 +drivers/isdn/misdn/mISDN_core mISDN_l3_ie2pos 0x6a35c630 +drivers/isdn/misdn/mISDN_core mISDN_l3_pos2ie 0x31559777 +drivers/isdn/misdn/mISDN_core mISDN_layermask2layer 0x48cbe644 +drivers/isdn/misdn/mISDN_core mISDN_register 0x00a72fc4 +drivers/isdn/misdn/mISDN_core mISDN_set_dchannel_pid 0xca03ed9e +drivers/isdn/misdn/mISDN_core mISDN_unregister 0x92ce6ebf +drivers/isdn/misdn/mISDN_core vmISDN_debug 0x85718442 +drivers/isdn/misdn/mISDN_isac mISDN_ISAC_l1hw 0x49864e31 +drivers/isdn/misdn/mISDN_isac mISDN_clear_isac 0x95e9118e +drivers/isdn/misdn/mISDN_isac mISDN_isac_free 0x8e2a9200 +drivers/isdn/misdn/mISDN_isac mISDN_isac_init 0xf04a310a +drivers/isdn/misdn/mISDN_isac mISDN_isac_interrupt 0x743270d5 +drivers/md/dm-mirror dm_create_dirty_log 0xe2255d74 +drivers/md/dm-mirror dm_destroy_dirty_log 0x9b3cb7df +drivers/md/dm-mirror dm_register_dirty_log_type 0x7e87cbe8 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x039e49da +drivers/md/dm-mod dm_get_device 0x035f2c45 +drivers/md/dm-mod dm_get_mapinfo 0x94e0565c +drivers/md/dm-mod dm_io_async 0x2b43ea3f +drivers/md/dm-mod dm_io_async_bvec 0x27de2e60 +drivers/md/dm-mod dm_io_async_vm 0x1399e41c +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0x7326fdfa +drivers/md/dm-mod dm_io_sync_bvec 0xaed24dc2 +drivers/md/dm-mod dm_io_sync_vm 0xde82753d +drivers/md/dm-mod dm_put_device 0x43bbb11e +drivers/md/dm-mod dm_register_target 0x73b1d78d +drivers/md/dm-mod dm_table_event 0x31200c72 +drivers/md/dm-mod dm_table_flush_all 0xdd6e4499 +drivers/md/dm-mod dm_table_get 0x2df467a3 +drivers/md/dm-mod dm_table_get_mode 0x7e962bf8 +drivers/md/dm-mod dm_table_get_size 0x0a81a419 +drivers/md/dm-mod dm_table_put 0x61cfe768 +drivers/md/dm-mod dm_table_unplug_all 0xc60640b9 +drivers/md/dm-mod dm_unregister_target 0x25200013 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0xae50252f +drivers/md/dm-mod kcopyd_client_create 0x0ac4affc +drivers/md/dm-mod kcopyd_client_destroy 0x1401d881 +drivers/md/dm-mod kcopyd_copy 0xf7918956 +drivers/md/dm-multipath dm_pg_init_complete 0x0cce74d1 +drivers/md/dm-multipath dm_register_hw_handler 0xfe74ca8f +drivers/md/dm-multipath dm_register_path_selector 0xcb4a5370 +drivers/md/dm-multipath dm_scsi_err_handler 0x28e807e8 +drivers/md/dm-multipath dm_unregister_hw_handler 0x21d6d1be +drivers/md/dm-multipath dm_unregister_path_selector 0x445e82db +drivers/md/md-mod bitmap_close_sync 0xc6bdbd97 +drivers/md/md-mod bitmap_daemon_work 0x05d48e7f +drivers/md/md-mod bitmap_end_sync 0xe217801c +drivers/md/md-mod bitmap_endwrite 0x3812afbb +drivers/md/md-mod bitmap_start_sync 0x2c0028b7 +drivers/md/md-mod bitmap_startwrite 0x7a123e67 +drivers/md/md-mod bitmap_unplug 0xdf1a8581 +drivers/md/md-mod md_check_recovery 0xc45c307b +drivers/md/md-mod md_done_sync 0xd7e5d314 +drivers/md/md-mod md_error 0x81a6d5b3 +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x65d5e567 +drivers/md/md-mod md_unregister_thread 0xd367a906 +drivers/md/md-mod md_wakeup_thread 0xd0984574 +drivers/md/md-mod md_write_end 0x63d6471d +drivers/md/md-mod md_write_start 0x7a7a570f +drivers/md/md-mod register_md_personality 0x4a4fae8d +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/media/common/ir-common ir_codes_empty 0x4740e7a3 +drivers/media/common/ir-common ir_codes_hauppauge_new 0x902a3cd2 +drivers/media/common/ir-common ir_codes_pinnacle 0xd3a0f048 +drivers/media/common/ir-common ir_codes_pixelview 0xfa177653 +drivers/media/common/ir-common ir_codes_rc5_tv 0xd9c7f010 +drivers/media/common/ir-common ir_codes_winfast 0x89cc1189 +drivers/media/common/ir-common ir_decode_biphase 0x43c89ef4 +drivers/media/common/ir-common ir_decode_pulsedistance 0x2456e513 +drivers/media/common/ir-common ir_dump_samples 0x6d6511e7 +drivers/media/common/ir-common ir_extract_bits 0x1cb148f5 +drivers/media/common/ir-common ir_input_init 0x7c87a1ce +drivers/media/common/ir-common ir_input_keydown 0x1d4ae531 +drivers/media/common/ir-common ir_input_nokey 0xd83f5d62 +drivers/media/common/saa7146 saa7146_debug 0xe3cd9b5c +drivers/media/common/saa7146 saa7146_devices 0xcf683cf2 +drivers/media/common/saa7146 saa7146_devices_lock 0x1bedd28f +drivers/media/common/saa7146 saa7146_i2c_adapter_prepare 0x6dfd480e +drivers/media/common/saa7146 saa7146_i2c_transfer 0xa655085b +drivers/media/common/saa7146 saa7146_pgtable_alloc 0xccf389c7 +drivers/media/common/saa7146 saa7146_pgtable_build_single 0xeb5f165a +drivers/media/common/saa7146 saa7146_pgtable_free 0x9388fb6d +drivers/media/common/saa7146 saa7146_register_extension 0x6cb11661 +drivers/media/common/saa7146 saa7146_setgpio 0xd2606ea3 +drivers/media/common/saa7146 saa7146_unregister_extension 0x9369ed4c +drivers/media/common/saa7146 saa7146_vmalloc_build_pgtable 0xd3dd125f +drivers/media/common/saa7146 saa7146_wait_for_debi_done 0x04d9e5bd +drivers/media/common/saa7146_vv saa7146_register_device 0xfe42aeeb +drivers/media/common/saa7146_vv saa7146_set_hps_source_and_sync 0x0da40df0 +drivers/media/common/saa7146_vv saa7146_start_preview 0x44f673c8 +drivers/media/common/saa7146_vv saa7146_stop_preview 0xb23357a9 +drivers/media/common/saa7146_vv saa7146_unregister_device 0xe077b8fb +drivers/media/common/saa7146_vv saa7146_vv_init 0x6c7815cc +drivers/media/common/saa7146_vv saa7146_vv_release 0x390aeb4a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_exit 0xef8e064d +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_initialize 0x3629ab00 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kfree 0x709f80dc +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_device_kmalloc 0x727fe7c8 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_allocate 0x4d041ab0 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config 0x7c807a97 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_packet_count 0x8a081326 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_config_timer 0x07379de8 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_packet_irq 0x3e1dc58a +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_size_irq 0x58bca3c3 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_control_timer_irq 0xa96cc7e5 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_free 0xbbab1173 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dma_xfer_control 0x8e973dda +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_dump_reg 0x6ee1a397 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_eeprom_check_mac_addr 0x003fb1c2 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_i2c_request 0xa4dc4352 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_data 0x84a86620 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_pass_dmx_packets 0x3244ddf0 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_reset_block_300 0xf9849266 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_ctrl 0xf121c53f +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_sram_set_dest 0xf35cd6b6 +drivers/media/dvb/b2c2/b2c2-flexcop flexcop_wan_set_speed 0x032954f2 +drivers/media/dvb/bt8xx/bt878 bt878 0xef3243d3 +drivers/media/dvb/bt8xx/bt878 bt878_debug 0x4ac84305 +drivers/media/dvb/bt8xx/bt878 bt878_device_control 0x5ffbc6e4 +drivers/media/dvb/bt8xx/bt878 bt878_num 0xd5d0bdef +drivers/media/dvb/bt8xx/bt878 bt878_start 0xa4fd1a86 +drivers/media/dvb/bt8xx/bt878 bt878_stop 0x7c195995 +drivers/media/dvb/bt8xx/bt878 bt878_verbose 0xb459c42b +drivers/media/dvb/bt8xx/dst dst_attach 0x2e00d6d9 +drivers/media/dvb/bt8xx/dst dst_check_sum 0xe94b8c9c +drivers/media/dvb/bt8xx/dst dst_comm_init 0x95e1d090 +drivers/media/dvb/bt8xx/dst dst_command 0xa044c406 +drivers/media/dvb/bt8xx/dst dst_error_bailout 0xe7647baa +drivers/media/dvb/bt8xx/dst dst_error_recovery 0x02e583c0 +drivers/media/dvb/bt8xx/dst dst_gpio_inb 0xc915b160 +drivers/media/dvb/bt8xx/dst dst_gpio_outb 0x35099664 +drivers/media/dvb/bt8xx/dst dst_pio_disable 0x2df39450 +drivers/media/dvb/bt8xx/dst dst_pio_enable 0x42d28323 +drivers/media/dvb/bt8xx/dst dst_wait_dst_ready 0x49674a99 +drivers/media/dvb/bt8xx/dst rdc_8820_reset 0x8ab6acf0 +drivers/media/dvb/bt8xx/dst rdc_reset_state 0x7ddd1330 +drivers/media/dvb/bt8xx/dst read_dst 0x87607303 +drivers/media/dvb/bt8xx/dst write_dst 0xd0f68548 +drivers/media/dvb/bt8xx/dst_ca dst_ca_attach 0xb3c6fd84 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camchange_irq 0x89bbf4d3 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_camready_irq 0x3501f1bb +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_frda_irq 0xb5970b22 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_init 0x009ddc11 +drivers/media/dvb/dvb-core/dvb-core dvb_ca_en50221_release 0x6b1af97b +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_init 0xbbfdace1 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_release 0x942eae58 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter 0xe4228c73 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_204 0xe6cf3689 +drivers/media/dvb/dvb-core/dvb-core dvb_dmx_swfilter_packets 0x72146fe4 +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_init 0x2e0bcefe +drivers/media/dvb/dvb-core/dvb-core dvb_dmxdev_release 0xe628d2b3 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_get_ac3info 0x80e3832d +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts 0xf826deb0 +drivers/media/dvb/dvb-core/dvb-core dvb_filter_pes2ts_init 0x74a5a698 +drivers/media/dvb/dvb-core/dvb-core dvb_frontend_sleep_until 0x36c8ea1f +drivers/media/dvb/dvb-core/dvb-core dvb_generic_ioctl 0xf7bd8d2d +drivers/media/dvb/dvb-core/dvb-core dvb_generic_open 0x54b52b8b +drivers/media/dvb/dvb-core/dvb-core dvb_generic_release 0x3f0203b4 +drivers/media/dvb/dvb-core/dvb-core dvb_net_init 0xefe989a7 +drivers/media/dvb/dvb-core/dvb-core dvb_net_release 0x01f688fa +drivers/media/dvb/dvb-core/dvb-core dvb_register_adapter 0x9b4faf5d +drivers/media/dvb/dvb-core/dvb-core dvb_register_device 0x4dd6263a +drivers/media/dvb/dvb-core/dvb-core dvb_register_frontend 0xee1ee10d +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_avail 0xf285f7a6 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_empty 0x28f24671 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush 0x8a5fd7bf +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_flush_spinlock_wakeup 0xa8a9a609 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_free 0x4ad03dd5 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_init 0xc70b6fa2 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_dispose 0x4b48388a +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_next 0xd8ffb173 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_read 0x6d41fb77 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_pkt_write 0x4642822d +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_read 0xaef94a45 +drivers/media/dvb/dvb-core/dvb-core dvb_ringbuffer_write 0xd9c33fce +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_adapter 0x5543a1e9 +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_device 0xea8b4b6b +drivers/media/dvb/dvb-core/dvb-core dvb_unregister_frontend 0x771a525b +drivers/media/dvb/dvb-core/dvb-core timeval_usec_diff 0x8b49a23f +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_exit 0x03194c64 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_device_init 0xc6999d55 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_rw 0xcdde20aa +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_generic_write 0x4d30f3a6 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_nec_rc_key_to_event 0x59ed43a2 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_init_i2c 0xf264da55 +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set 0x74ac7aab +drivers/media/dvb/dvb-usb/dvb-usb dvb_usb_pll_set_i2c 0xaf81926a +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_power_ctrl 0xc9900847 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb2_0_streaming_ctrl 0x071b9a91 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_frontend_attach 0x3a75a479 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_dib3000mc_tuner_attach 0x8c72f5c4 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_i2c_algo 0xd3fcba2f +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter 0x3795b6aa +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_pid_filter_ctrl 0x7ec8c159 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_power_ctrl 0x10df9fc6 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_keys 0xd4d3dddc +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_rc_query 0xd1882164 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_read_eeprom_byte 0xe1167744 +drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common dibusb_streaming_ctrl 0x224cdc00 +drivers/media/dvb/frontends/at76c651 at76c651_attach 0x9aa862ae +drivers/media/dvb/frontends/bcm3510 bcm3510_attach 0x1c1554ab +drivers/media/dvb/frontends/cx22700 cx22700_attach 0x62aff6a2 +drivers/media/dvb/frontends/cx22702 cx22702_attach 0x1458bb7d +drivers/media/dvb/frontends/cx24110 cx24110_attach 0x80172713 +drivers/media/dvb/frontends/cx24110 cx24110_pll_write 0x92ce8493 +drivers/media/dvb/frontends/dib3000-common dib3000_read_reg 0xbb7a1ebf +drivers/media/dvb/frontends/dib3000-common dib3000_search_status 0xe762d459 +drivers/media/dvb/frontends/dib3000-common dib3000_seq 0x05f13eee +drivers/media/dvb/frontends/dib3000-common dib3000_write_reg 0x56ea4bcb +drivers/media/dvb/frontends/dib3000mb dib3000mb_attach 0xc1a44f95 +drivers/media/dvb/frontends/dib3000mc dib3000mc_attach 0xbf0b8cf5 +drivers/media/dvb/frontends/dvb-pll dvb_pll_configure 0x02689b7f +drivers/media/dvb/frontends/dvb-pll dvb_pll_env57h1xd5 0x5b259391 +drivers/media/dvb/frontends/dvb-pll dvb_pll_fmd1216me 0x7a0ed9bb +drivers/media/dvb/frontends/dvb-pll dvb_pll_lg_z201 0xbf98157e +drivers/media/dvb/frontends/dvb-pll dvb_pll_microtune_4042 0xd15aca20 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tbmv30111in 0xfdd5e650 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tda665x 0x2a4f5718 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tded4 0xc95be182 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdhu2 0x708f579e +drivers/media/dvb/frontends/dvb-pll dvb_pll_tdvs_tua6034 0xe39c77c8 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7579 0x12284643 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt759x 0xf1d4150d +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7610 0xd5d22e56 +drivers/media/dvb/frontends/dvb-pll dvb_pll_thomson_dtt7611 0xccc91f17 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6010xs 0xaddc7276 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tua6034 0x96cce305 +drivers/media/dvb/frontends/dvb-pll dvb_pll_tuv1236d 0xcbbd68de +drivers/media/dvb/frontends/dvb-pll dvb_pll_unknown_1 0x13856c44 +drivers/media/dvb/frontends/l64781 l64781_attach 0x64f96762 +drivers/media/dvb/frontends/lgdt330x lgdt330x_attach 0x883bd6d2 +drivers/media/dvb/frontends/mt312 mt312_attach 0x40fb890a +drivers/media/dvb/frontends/mt312 vp310_attach 0x83124166 +drivers/media/dvb/frontends/mt352 mt352_attach 0xec1f242f +drivers/media/dvb/frontends/mt352 mt352_write 0x29d6d317 +drivers/media/dvb/frontends/nxt2002 nxt2002_attach 0x339867cd +drivers/media/dvb/frontends/nxt200x nxt200x_attach 0x099eafcb +drivers/media/dvb/frontends/nxt6000 nxt6000_attach 0x42fada01 +drivers/media/dvb/frontends/or51132 or51132_attach 0x3788e395 +drivers/media/dvb/frontends/or51211 or51211_attach 0x9305208d +drivers/media/dvb/frontends/s5h1420 s5h1420_attach 0x3df9cfca +drivers/media/dvb/frontends/sp8870 sp8870_attach 0x27121cc2 +drivers/media/dvb/frontends/sp887x sp887x_attach 0x80fa5dd4 +drivers/media/dvb/frontends/stv0297 stv0297_attach 0x31df43ec +drivers/media/dvb/frontends/stv0297 stv0297_enable_plli2c 0x122d60e0 +drivers/media/dvb/frontends/stv0299 stv0299_attach 0x3d4d7351 +drivers/media/dvb/frontends/stv0299 stv0299_writereg 0xe6ac67de +drivers/media/dvb/frontends/tda10021 tda10021_attach 0xcec6b073 +drivers/media/dvb/frontends/tda1004x tda10045_attach 0x7d8ab319 +drivers/media/dvb/frontends/tda1004x tda10046_attach 0x3b78039d +drivers/media/dvb/frontends/tda1004x tda1004x_write_byte 0x46576bf6 +drivers/media/dvb/frontends/tda8083 tda8083_attach 0x95754c8b +drivers/media/dvb/frontends/tda80xx tda80xx_attach 0x48936d86 +drivers/media/dvb/frontends/ves1820 ves1820_attach 0xa98acc60 +drivers/media/dvb/frontends/ves1x93 ves1x93_attach 0xc2157835 +drivers/media/dvb/ttpci/budget-core budget_debug 0x7948c222 +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiread 0x03e8116c +drivers/media/dvb/ttpci/budget-core ttpci_budget_debiwrite 0x7444dbff +drivers/media/dvb/ttpci/budget-core ttpci_budget_deinit 0x2bc00f0f +drivers/media/dvb/ttpci/budget-core ttpci_budget_init 0xb31e3bb9 +drivers/media/dvb/ttpci/budget-core ttpci_budget_irq10_handler 0x5c3a82fa +drivers/media/dvb/ttpci/budget-core ttpci_budget_set_video_port 0x740319a7 +drivers/media/dvb/ttpci/ttpci-eeprom ttpci_eeprom_parse_mac 0x2b7b39ce +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbs_attach 0x57d06d7a +drivers/media/dvb/ttusb-dec/ttusbdecfe ttusbdecfe_dvbt_attach 0x7c176cb0 +drivers/media/video/btcx-risc btcx_align 0xc368f8e6 +drivers/media/video/btcx-risc btcx_calc_skips 0x6200c4c9 +drivers/media/video/btcx-risc btcx_riscmem_alloc 0x66cf0299 +drivers/media/video/btcx-risc btcx_riscmem_free 0xdcfc6ff4 +drivers/media/video/btcx-risc btcx_screen_clips 0xcda0ded2 +drivers/media/video/btcx-risc btcx_sort_clips 0xad2fe38b +drivers/media/video/bttv bttv_get_cardinfo 0xeecd5cab +drivers/media/video/bttv bttv_get_gpio_queue 0x450eaeb9 +drivers/media/video/bttv bttv_get_id 0x294b5550 +drivers/media/video/bttv bttv_get_pcidev 0xef73d502 +drivers/media/video/bttv bttv_gpio_bits 0x7c49273c +drivers/media/video/bttv bttv_gpio_enable 0x11dc4b6d +drivers/media/video/bttv bttv_gpio_inout 0x93b2b164 +drivers/media/video/bttv bttv_gpio_read 0x13801987 +drivers/media/video/bttv bttv_gpio_write 0xaf6b2ce8 +drivers/media/video/bttv bttv_i2c_call 0xcf73f281 +drivers/media/video/bttv bttv_read_gpio 0xbcf2d2fb +drivers/media/video/bttv bttv_sub_bus_type 0x8afcf5db +drivers/media/video/bttv bttv_sub_register 0xed7a7296 +drivers/media/video/bttv bttv_sub_unregister 0x0afecb5f +drivers/media/video/bttv bttv_write_gpio 0x8ecf4acc +drivers/media/video/cpia cpia_register_camera 0x16800dde +drivers/media/video/cpia cpia_unregister_camera 0x8c54908c +drivers/media/video/cx88/cx88-blackbird blackbird_set_dnr_params 0xc46852b9 +drivers/media/video/cx88/cx88-blackbird blackbird_set_params 0x38bcd874 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_hook 0xbf65a777 +drivers/media/video/cx88/cx88-blackbird cx88_ioctl_translator 0x7ad45e7e +drivers/media/video/cx88/cx8800 cx88_do_ioctl 0xb8d88386 +drivers/media/video/cx88/cx8802 cx8802_buf_prepare 0x9e8be4ad +drivers/media/video/cx88/cx8802 cx8802_buf_queue 0xff3ac850 +drivers/media/video/cx88/cx8802 cx8802_cancel_buffers 0xe7d0fcfc +drivers/media/video/cx88/cx8802 cx8802_fini_common 0xc7a07391 +drivers/media/video/cx88/cx8802 cx8802_init_common 0x6ba08c6b +drivers/media/video/cx88/cx8802 cx8802_resume_common 0xaeb23920 +drivers/media/video/cx88/cx8802 cx8802_suspend_common 0xca8b89b3 +drivers/media/video/cx88/cx88xx cx88_audio_thread 0x904b8696 +drivers/media/video/cx88/cx88xx cx88_bcount 0x60837b45 +drivers/media/video/cx88/cx88xx cx88_boards 0x4e6954bf +drivers/media/video/cx88/cx88xx cx88_call_i2c_clients 0x472e7201 +drivers/media/video/cx88/cx88xx cx88_card_list 0x804f2d5d +drivers/media/video/cx88/cx88xx cx88_card_setup 0xd8fa63a1 +drivers/media/video/cx88/cx88xx cx88_core_get 0xe270d410 +drivers/media/video/cx88/cx88xx cx88_core_irq 0xbd6d8fb5 +drivers/media/video/cx88/cx88xx cx88_core_put 0x1e12c77e +drivers/media/video/cx88/cx88xx cx88_free_buffer 0x6fb66ede +drivers/media/video/cx88/cx88xx cx88_get_stereo 0x212f5c36 +drivers/media/video/cx88/cx88xx cx88_i2c_init 0x51e0b9b2 +drivers/media/video/cx88/cx88xx cx88_idcount 0x629bfac9 +drivers/media/video/cx88/cx88xx cx88_newstation 0x1125197f +drivers/media/video/cx88/cx88xx cx88_print_ioctl 0xc6998191 +drivers/media/video/cx88/cx88xx cx88_print_irqbits 0x777b6d7f +drivers/media/video/cx88/cx88xx cx88_reset 0xc124d53b +drivers/media/video/cx88/cx88xx cx88_risc_buffer 0x4284418c +drivers/media/video/cx88/cx88xx cx88_risc_databuffer 0xbf3aa82d +drivers/media/video/cx88/cx88xx cx88_risc_stopper 0xb6c7272f +drivers/media/video/cx88/cx88xx cx88_set_scale 0xe9b9d5d0 +drivers/media/video/cx88/cx88xx cx88_set_stereo 0x0e67bda6 +drivers/media/video/cx88/cx88xx cx88_set_tvaudio 0x11f73e70 +drivers/media/video/cx88/cx88xx cx88_set_tvnorm 0x26436c19 +drivers/media/video/cx88/cx88xx cx88_shutdown 0x7d888363 +drivers/media/video/cx88/cx88xx cx88_sram_channel_dump 0x6c5bbc43 +drivers/media/video/cx88/cx88xx cx88_sram_channel_setup 0xf3651439 +drivers/media/video/cx88/cx88xx cx88_sram_channels 0x9b140fff +drivers/media/video/cx88/cx88xx cx88_start_audio_dma 0x1d391ecf +drivers/media/video/cx88/cx88xx cx88_stop_audio_dma 0xa9d8872c +drivers/media/video/cx88/cx88xx cx88_subids 0x6b626846 +drivers/media/video/cx88/cx88xx cx88_vdev_init 0xba625d00 +drivers/media/video/cx88/cx88xx cx88_wakeup 0x87ff4455 +drivers/media/video/em28xx/em28xx em28xx_bcount 0xcd6db381 +drivers/media/video/em28xx/em28xx em28xx_boards 0x3ab9f5de +drivers/media/video/em28xx/em28xx em28xx_id_table 0xe6a1a0e4 +drivers/media/video/ir-kbd-i2c get_key_pinnacle 0xb19ce26b +drivers/media/video/saa7134/saa7134 dmasound_exit 0x4cc8d605 +drivers/media/video/saa7134/saa7134 dmasound_init 0xc165a044 +drivers/media/video/saa7134/saa7134 saa7134_boards 0x5d19925f +drivers/media/video/saa7134/saa7134 saa7134_common_ioctl 0x0df50f1d +drivers/media/video/saa7134/saa7134 saa7134_devlist 0x1211df5d +drivers/media/video/saa7134/saa7134 saa7134_i2c_call_clients 0x8a39c2d6 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_alloc 0x5d29faba +drivers/media/video/saa7134/saa7134 saa7134_pgtable_build 0x690ca867 +drivers/media/video/saa7134/saa7134 saa7134_pgtable_free 0xef1033b7 +drivers/media/video/saa7134/saa7134 saa7134_print_ioctl 0x1fd65780 +drivers/media/video/saa7134/saa7134 saa7134_set_dmabits 0x8aa86cdb +drivers/media/video/saa7134/saa7134 saa7134_ts_qops 0xb56e4370 +drivers/media/video/saa7134/saa7134 saa7134_ts_register 0xeb6d60e7 +drivers/media/video/saa7134/saa7134 saa7134_ts_unregister 0xf9626234 +drivers/media/video/saa7134/saa7134 saa_dsp_writel 0xb382ff23 +drivers/media/video/tveeprom tveeprom_hauppauge_analog 0x9279c1a8 +drivers/media/video/tveeprom tveeprom_read 0x3864e884 +drivers/media/video/v4l1-compat v4l_compat_translate_ioctl 0x515d7277 +drivers/media/video/v4l2-common v4l2_field_names 0xa021ef50 +drivers/media/video/v4l2-common v4l2_ioctl_names 0x1cfb1467 +drivers/media/video/v4l2-common v4l2_prio_change 0x9c7de443 +drivers/media/video/v4l2-common v4l2_prio_check 0x2f639468 +drivers/media/video/v4l2-common v4l2_prio_close 0x95284709 +drivers/media/video/v4l2-common v4l2_prio_init 0xbecd2858 +drivers/media/video/v4l2-common v4l2_prio_max 0x1dcaa0c8 +drivers/media/video/v4l2-common v4l2_prio_open 0x76ba9a9a +drivers/media/video/v4l2-common v4l2_type_names 0x57b02a20 +drivers/media/video/v4l2-common v4l2_video_std_construct 0x33b3b664 +drivers/media/video/video-buf videobuf_alloc 0xa9f01119 +drivers/media/video/video-buf videobuf_dma_free 0x2a383b61 +drivers/media/video/video-buf videobuf_dma_init 0xa522a759 +drivers/media/video/video-buf videobuf_dma_init_kernel 0x969910aa +drivers/media/video/video-buf videobuf_dma_init_overlay 0xd0eb6d8f +drivers/media/video/video-buf videobuf_dma_init_user 0xc1f59d8e +drivers/media/video/video-buf videobuf_dma_pci_map 0x0dd75ff6 +drivers/media/video/video-buf videobuf_dma_pci_sync 0x77bec320 +drivers/media/video/video-buf videobuf_dma_pci_unmap 0x440a5c62 +drivers/media/video/video-buf videobuf_dqbuf 0x2b4e2cc1 +drivers/media/video/video-buf videobuf_iolock 0x3f62b2bd +drivers/media/video/video-buf videobuf_mmap_free 0x50c5e71c +drivers/media/video/video-buf videobuf_mmap_mapper 0xf34ef67b +drivers/media/video/video-buf videobuf_mmap_setup 0x2a52573b +drivers/media/video/video-buf videobuf_next_field 0x0fe1436b +drivers/media/video/video-buf videobuf_poll_stream 0x65b8f256 +drivers/media/video/video-buf videobuf_qbuf 0x9cbfdc4a +drivers/media/video/video-buf videobuf_querybuf 0x915f1813 +drivers/media/video/video-buf videobuf_queue_cancel 0x8ff4d7f1 +drivers/media/video/video-buf videobuf_queue_init 0x912d0fda +drivers/media/video/video-buf videobuf_queue_is_busy 0x26df2386 +drivers/media/video/video-buf videobuf_read_one 0xb677a3e9 +drivers/media/video/video-buf videobuf_read_start 0xbf60179c +drivers/media/video/video-buf videobuf_read_stop 0x4ab6be06 +drivers/media/video/video-buf videobuf_read_stream 0x729215ec +drivers/media/video/video-buf videobuf_reqbufs 0x2f4642b2 +drivers/media/video/video-buf videobuf_status 0x3c0e2f05 +drivers/media/video/video-buf videobuf_streamoff 0xb82f56b0 +drivers/media/video/video-buf videobuf_streamon 0x5d00a7f6 +drivers/media/video/video-buf videobuf_vmalloc_to_sg 0x2f917ff6 +drivers/media/video/video-buf videobuf_waiton 0xdb27c13d +drivers/media/video/video-buf-dvb videobuf_dvb_register 0x900bd327 +drivers/media/video/video-buf-dvb videobuf_dvb_unregister 0xe9859ce0 +drivers/media/video/videocodec videocodec_attach 0x111e3f71 +drivers/media/video/videocodec videocodec_detach 0xa9bd79af +drivers/media/video/videocodec videocodec_register 0x6b5abe52 +drivers/media/video/videocodec videocodec_unregister 0xe26fece4 +drivers/media/video/videodev video_devdata 0x00e09f63 +drivers/media/video/videodev video_device_alloc 0xa7fb5dbb +drivers/media/video/videodev video_device_release 0xc7c7840b +drivers/media/video/videodev video_exclusive_open 0xd6801bd6 +drivers/media/video/videodev video_exclusive_release 0x1f3644de +drivers/media/video/videodev video_register_device 0x0859bfe5 +drivers/media/video/videodev video_unregister_device 0x41a7d60c +drivers/media/video/videodev video_usercopy 0xd8142aa9 +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0xa8338b71 +drivers/message/fusion/mptbase mpt_HardResetHandler 0x09b6acf4 +drivers/message/fusion/mptbase mpt_add_sge 0x105d4f47 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0x956b88b9 +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0xce82c956 +drivers/message/fusion/mptbase mpt_attach 0xcff63651 +drivers/message/fusion/mptbase mpt_config 0x699a0a0b +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0x7c9e9d7d +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0x9873ca32 +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x88fc68ff +drivers/message/fusion/mptbase mpt_findImVolumes 0xa1368c4f +drivers/message/fusion/mptbase mpt_free_fw_memory 0xf2e7ad05 +drivers/message/fusion/mptbase mpt_free_msg_frame 0x842ca26a +drivers/message/fusion/mptbase mpt_get_msg_frame 0x3d45a57a +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0xc8ee6e1c +drivers/message/fusion/mptbase mpt_proc_root_dir 0x4dc08d20 +drivers/message/fusion/mptbase mpt_put_msg_frame 0x34599ca3 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0xbb7388df +drivers/message/fusion/mptbase mpt_register 0x65b56654 +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x897f9420 +drivers/message/fusion/mptbase mpt_resume 0xdbee5da3 +drivers/message/fusion/mptbase mpt_send_handshake_request 0xcd206d9b +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_suspend 0xbac7393a +drivers/message/fusion/mptbase mpt_toolbox 0x22327026 +drivers/message/fusion/mptbase mpt_verify_adapter 0xe3eb424b +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0xbd41717d +drivers/message/fusion/mptscsih mptscsih_abort 0xafedfdb1 +drivers/message/fusion/mptscsih mptscsih_bios_param 0xaac5cac1 +drivers/message/fusion/mptscsih mptscsih_bus_reset 0xe003f9d6 +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0xa240e59b +drivers/message/fusion/mptscsih mptscsih_dev_reset 0xdfb38b17 +drivers/message/fusion/mptscsih mptscsih_event_process 0xd0f4773f +drivers/message/fusion/mptscsih mptscsih_host_reset 0xe279df8a +drivers/message/fusion/mptscsih mptscsih_info 0x36c09285 +drivers/message/fusion/mptscsih mptscsih_io_done 0x409a96dc +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x022bce37 +drivers/message/fusion/mptscsih mptscsih_proc_info 0x0211c327 +drivers/message/fusion/mptscsih mptscsih_qcmd 0x420982a8 +drivers/message/fusion/mptscsih mptscsih_remove 0x9b20439c +drivers/message/fusion/mptscsih mptscsih_resume 0x8b5af3ad +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0x0924f8e2 +drivers/message/fusion/mptscsih mptscsih_shutdown 0xb75cac3d +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0x563bb072 +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x58724822 +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0xfadf8098 +drivers/message/fusion/mptscsih mptscsih_suspend 0x89f70afd +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x8689a75c +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_cntxt_list_add 0xba9f128a +drivers/message/i2o/i2o_core i2o_cntxt_list_get 0x2134f50b +drivers/message/i2o/i2o_core i2o_cntxt_list_get_ptr 0x4bcff3d3 +drivers/message/i2o/i2o_core i2o_cntxt_list_remove 0x4cf1f1cf +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0xf778dd30 +drivers/message/i2o/i2o_core i2o_device_claim_release 0x6c21e2b8 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0x9ac9b6d1 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x1a0a3145 +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x405e05b5 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0x95c20fd3 +drivers/message/i2o/i2o_core i2o_driver_register 0x3d8ef623 +drivers/message/i2o/i2o_core i2o_driver_unregister 0x4f47fb42 +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0xce27fdb2 +drivers/message/i2o/i2o_core i2o_exec_lct_get 0x1f84fe26 +drivers/message/i2o/i2o_core i2o_find_iop 0x47f941dc +drivers/message/i2o/i2o_core i2o_iop_find_device 0x4a9a2b11 +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x7140e137 +drivers/message/i2o/i2o_core i2o_msg_nop 0x5bf3580f +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0x2c8d17ff +drivers/message/i2o/i2o_core i2o_parm_field_get 0x00efc7b0 +drivers/message/i2o/i2o_core i2o_parm_issue 0xfa6e517c +drivers/message/i2o/i2o_core i2o_parm_table_get 0x793d39db +drivers/message/i2o/i2o_core i2o_status_get 0xf0642cc1 +drivers/mmc/mmc_core __mmc_claim_host 0x9161880d +drivers/mmc/mmc_core mmc_add_host 0xeb6009ff +drivers/mmc/mmc_core mmc_alloc_host 0xa6a85ba0 +drivers/mmc/mmc_core mmc_cleanup_queue 0xff39a260 +drivers/mmc/mmc_core mmc_detect_change 0xd315abfe +drivers/mmc/mmc_core mmc_free_host 0xf8118ad0 +drivers/mmc/mmc_core mmc_init_queue 0xd75cb347 +drivers/mmc/mmc_core mmc_queue_resume 0xae39bb95 +drivers/mmc/mmc_core mmc_queue_suspend 0xadd75a51 +drivers/mmc/mmc_core mmc_register_driver 0xa4411fe6 +drivers/mmc/mmc_core mmc_release_host 0x0efdeef4 +drivers/mmc/mmc_core mmc_remove_host 0xa0d82b74 +drivers/mmc/mmc_core mmc_request_done 0x03757fac +drivers/mmc/mmc_core mmc_resume_host 0x74d128b0 +drivers/mmc/mmc_core mmc_start_request 0x7463b144 +drivers/mmc/mmc_core mmc_suspend_host 0x0788b802 +drivers/mmc/mmc_core mmc_unregister_driver 0xd48c2fad +drivers/mmc/mmc_core mmc_wait_for_app_cmd 0x55d3949b +drivers/mmc/mmc_core mmc_wait_for_cmd 0x38b08484 +drivers/mmc/mmc_core mmc_wait_for_req 0x22fe66dd +drivers/mtd/chips/cfi_util cfi_fixup 0xe66d2aa2 +drivers/mtd/chips/cfi_util cfi_read_pri 0xecf52437 +drivers/mtd/chips/cfi_util cfi_varsize_frob 0x98cb57d1 +drivers/mtd/chips/chipreg do_map_probe 0xb11f88f1 +drivers/mtd/chips/chipreg map_destroy 0x1d5c552f +drivers/mtd/chips/chipreg register_mtd_chip_driver 0x9170edce +drivers/mtd/chips/chipreg unregister_mtd_chip_driver 0xa2ff9e15 +drivers/mtd/chips/gen_probe mtd_do_chip_probe 0xece299c0 +drivers/mtd/devices/docecc doc_decode_ecc 0x45937659 +drivers/mtd/maps/map_funcs simple_map_init 0xa8512b71 +drivers/mtd/mtd_blkdevs add_mtd_blktrans_dev 0xbf0f9a6c +drivers/mtd/mtd_blkdevs del_mtd_blktrans_dev 0x7a7c0e85 +drivers/mtd/mtd_blkdevs deregister_mtd_blktrans 0x86012b22 +drivers/mtd/mtd_blkdevs register_mtd_blktrans 0x8db58dd0 +drivers/mtd/mtdconcat mtd_concat_create 0x0f636e20 +drivers/mtd/mtdconcat mtd_concat_destroy 0xb99c7e6c +drivers/mtd/mtdcore add_mtd_device 0xf6b5a499 +drivers/mtd/mtdcore default_mtd_readv 0x4d1f5b49 +drivers/mtd/mtdcore default_mtd_writev 0x45041746 +drivers/mtd/mtdcore del_mtd_device 0xa52a72b4 +drivers/mtd/mtdcore get_mtd_device 0xbcafaa19 +drivers/mtd/mtdcore mtd_table 0x8b8022b8 +drivers/mtd/mtdcore mtd_table_mutex 0x72beff16 +drivers/mtd/mtdcore put_mtd_device 0x8e68831f +drivers/mtd/mtdcore register_mtd_user 0x737dbbd2 +drivers/mtd/mtdcore unregister_mtd_user 0x6050696e +drivers/mtd/mtdpart add_mtd_partitions 0x4d7077cb +drivers/mtd/mtdpart del_mtd_partitions 0x9c8d4afc +drivers/mtd/mtdpart deregister_mtd_parser 0x28656806 +drivers/mtd/mtdpart mtd_erase_callback 0x6f7b68bc +drivers/mtd/mtdpart parse_mtd_partitions 0xe40a6c77 +drivers/mtd/mtdpart register_mtd_parser 0x4c890b45 +drivers/mtd/nand/nand nand_default_bbt 0x2c78b090 +drivers/mtd/nand/nand nand_release 0x46ffd4bf +drivers/mtd/nand/nand nand_scan 0x726b2c39 +drivers/mtd/nand/nand nand_scan_bbt 0x5a7c7973 +drivers/mtd/nand/nand_ecc nand_calculate_ecc 0x254f230c +drivers/mtd/nand/nand_ecc nand_correct_data 0x87406d9d +drivers/mtd/nand/nand_ids nand_flash_ids 0x836bdb72 +drivers/mtd/nand/nand_ids nand_manuf_ids 0xa336feb7 +drivers/mtd/onenand/onenand onenand_default_bbt 0xb09a8d71 +drivers/mtd/onenand/onenand onenand_release 0x935fd379 +drivers/mtd/onenand/onenand onenand_scan 0x995064fd +drivers/mtd/onenand/onenand onenand_scan_bbt 0x8a84e863 +drivers/net/8390 NS8390_init 0xd0200182 +drivers/net/8390 __alloc_ei_netdev 0xe0d93efa +drivers/net/8390 ei_close 0x621aa7ba +drivers/net/8390 ei_interrupt 0x4ed4936f +drivers/net/8390 ei_open 0x8790864a +drivers/net/8390 ei_poll 0x81431c60 +drivers/net/arcnet/arcnet alloc_arcdev 0xf41d6afd +drivers/net/arcnet/arcnet arc_bcast_proto 0x7479f768 +drivers/net/arcnet/arcnet arc_proto_default 0xddb35044 +drivers/net/arcnet/arcnet arc_proto_map 0x670dbe8a +drivers/net/arcnet/arcnet arc_proto_null 0x414cc5db +drivers/net/arcnet/arcnet arc_raw_proto 0xeee0842d +drivers/net/arcnet/arcnet arcnet_debug 0x6534792a +drivers/net/arcnet/arcnet arcnet_interrupt 0x51fd033d +drivers/net/arcnet/arcnet arcnet_unregister_proto 0xd80616d0 +drivers/net/arcnet/com20020 com20020_check 0x6bbcc4fe +drivers/net/arcnet/com20020 com20020_found 0x3df38d8f +drivers/net/hamradio/hdlcdrv hdlcdrv_arbitrate 0x321d30d5 +drivers/net/hamradio/hdlcdrv hdlcdrv_receiver 0xfc5406e5 +drivers/net/hamradio/hdlcdrv hdlcdrv_register 0x570ab514 +drivers/net/hamradio/hdlcdrv hdlcdrv_transmitter 0xf02d7177 +drivers/net/hamradio/hdlcdrv hdlcdrv_unregister 0xefbbbcb2 +drivers/net/irda/sir-dev irda_register_dongle 0x1aa8ef80 +drivers/net/irda/sir-dev irda_unregister_dongle 0xd0d4f864 +drivers/net/irda/sir-dev sirdev_get_instance 0xffc74996 +drivers/net/irda/sir-dev sirdev_put_instance 0x66dc8d3b +drivers/net/irda/sir-dev sirdev_raw_read 0x0cbe06a3 +drivers/net/irda/sir-dev sirdev_raw_write 0xef68cfa6 +drivers/net/irda/sir-dev sirdev_receive 0x3c24c5c1 +drivers/net/irda/sir-dev sirdev_set_dongle 0xde9c485b +drivers/net/irda/sir-dev sirdev_set_dtr_rts 0xb3931862 +drivers/net/irda/sir-dev sirdev_write_complete 0x6aa6dd4f +drivers/net/mii generic_mii_ioctl 0x9b7a0966 +drivers/net/mii mii_check_gmii_support 0x93cf956f +drivers/net/mii mii_check_link 0x6e9ebe76 +drivers/net/mii mii_check_media 0xfdc6b258 +drivers/net/mii mii_ethtool_gset 0xb3b656a7 +drivers/net/mii mii_ethtool_sset 0x5983b3db +drivers/net/mii mii_link_ok 0xd9af7cfe +drivers/net/mii mii_nway_restart 0x63233df3 +drivers/net/phy/libphy genphy_config_advert 0x449762b3 +drivers/net/phy/libphy genphy_config_aneg 0xdde5d73a +drivers/net/phy/libphy genphy_read_status 0xd4a7e627 +drivers/net/phy/libphy mdiobus_register 0xb31e5840 +drivers/net/phy/libphy mdiobus_unregister 0x40361602 +drivers/net/phy/libphy phy_attach 0x68bde352 +drivers/net/phy/libphy phy_connect 0x91066c89 +drivers/net/phy/libphy phy_detach 0x1b912255 +drivers/net/phy/libphy phy_disable_interrupts 0x5d9e9142 +drivers/net/phy/libphy phy_disconnect 0xba9be7ef +drivers/net/phy/libphy phy_driver_register 0x64f0ec2f +drivers/net/phy/libphy phy_driver_unregister 0x387b0f07 +drivers/net/phy/libphy phy_enable_interrupts 0xbebd707f +drivers/net/phy/libphy phy_print_status 0x8314cbe5 +drivers/net/phy/libphy phy_read 0x5aff7e22 +drivers/net/phy/libphy phy_sanitize_settings 0x8312a4a9 +drivers/net/phy/libphy phy_start 0x79dddffc +drivers/net/phy/libphy phy_start_aneg 0x87206495 +drivers/net/phy/libphy phy_start_interrupts 0x3a09a836 +drivers/net/phy/libphy phy_stop 0xfa75afe4 +drivers/net/phy/libphy phy_stop_interrupts 0xe6a3c212 +drivers/net/phy/libphy phy_write 0x80ec407e +drivers/net/ppp_generic ppp_channel_index 0x1fd437c0 +drivers/net/ppp_generic ppp_input 0x185fc07d +drivers/net/ppp_generic ppp_input_error 0x61c1226c +drivers/net/ppp_generic ppp_output_wakeup 0x97a010a0 +drivers/net/ppp_generic ppp_register_channel 0x80aee506 +drivers/net/ppp_generic ppp_register_compressor 0xaa72c026 +drivers/net/ppp_generic ppp_unit_number 0xf5a6800f +drivers/net/ppp_generic ppp_unregister_channel 0x01ee8a5d +drivers/net/ppp_generic ppp_unregister_compressor 0x64c607db +drivers/net/pppox pppox_unbind_sock 0x3feb7507 +drivers/net/pppox register_pppox_proto 0x8775d828 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x76135e6c +drivers/net/slhc slhc_free 0x2894cfb0 +drivers/net/slhc slhc_init 0x2e0e927f +drivers/net/slhc slhc_remember 0x0bc55868 +drivers/net/slhc slhc_toss 0xf89e3455 +drivers/net/slhc slhc_uncompress 0x3bc1319e +drivers/net/sungem_phy mii_phy_probe 0xc070f552 +drivers/net/tokenring/tms380tr tms380tr_close 0xead7f1b1 +drivers/net/tokenring/tms380tr tms380tr_interrupt 0xc5847c91 +drivers/net/tokenring/tms380tr tms380tr_open 0x429c6b92 +drivers/net/tokenring/tms380tr tms380tr_wait 0xd2328794 +drivers/net/tokenring/tms380tr tmsdev_init 0x2806fa85 +drivers/net/tokenring/tms380tr tmsdev_term 0x4849a870 +drivers/net/wan/cycx_drv cycx_down 0x66a4c4e6 +drivers/net/wan/cycx_drv cycx_exec 0xfe7cd576 +drivers/net/wan/cycx_drv cycx_intr 0x38da4725 +drivers/net/wan/cycx_drv cycx_peek 0x968458a6 +drivers/net/wan/cycx_drv cycx_poke 0xb6f383de +drivers/net/wan/cycx_drv cycx_setup 0x62be23ea +drivers/net/wan/hdlc alloc_hdlcdev 0x3955e1a1 +drivers/net/wan/hdlc hdlc_close 0x7c29f1c6 +drivers/net/wan/hdlc hdlc_ioctl 0xeece5bc9 +drivers/net/wan/hdlc hdlc_open 0xc80dd791 +drivers/net/wan/hdlc hdlc_set_carrier 0xfb344d12 +drivers/net/wan/hdlc register_hdlc_device 0xe4b2ab96 +drivers/net/wan/hdlc unregister_hdlc_device 0xc1ca8e32 +drivers/net/wan/syncppp sppp_attach 0xde87422c +drivers/net/wan/syncppp sppp_close 0x485addb5 +drivers/net/wan/syncppp sppp_detach 0x56f84532 +drivers/net/wan/syncppp sppp_do_ioctl 0x71544d14 +drivers/net/wan/syncppp sppp_open 0x6bf1db3a +drivers/net/wan/syncppp sppp_reopen 0x5fc57ea2 +drivers/net/wireless/airo init_airo_card 0xb9d1dcd4 +drivers/net/wireless/airo reset_airo_card 0xd5419591 +drivers/net/wireless/airo stop_airo_card 0xe6b73dc1 +drivers/net/wireless/atmel atmel_open 0xe2a84347 +drivers/net/wireless/atmel init_atmel_card 0xa01ba6e3 +drivers/net/wireless/atmel stop_atmel_card 0x5396a7db +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0x07ec4613 +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0x9ae28f27 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0xa10c804f +drivers/net/wireless/hostap/hostap hostap_add_interface 0xd443c4c7 +drivers/net/wireless/hostap/hostap hostap_add_sta 0xcb5cf573 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0x58511442 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0x7e0c3000 +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0x99738f35 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0x1f4b6281 +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0xa343daee +drivers/net/wireless/hostap/hostap hostap_get_porttype 0x733d0797 +drivers/net/wireless/hostap/hostap hostap_get_stats 0xbac12ef5 +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0x7e5be754 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x8ebbdbc5 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x27e30fb4 +drivers/net/wireless/hostap/hostap hostap_info_init 0xf8a586cc +drivers/net/wireless/hostap/hostap hostap_info_process 0xc6ead860 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0xe24303a8 +drivers/net/wireless/hostap/hostap hostap_init_data 0x55ea073d +drivers/net/wireless/hostap/hostap hostap_init_proc 0x2781e38c +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0x93bc740c +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x8c7720ad +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0x5d272c6a +drivers/net/wireless/hostap/hostap hostap_proc 0x2c458820 +drivers/net/wireless/hostap/hostap hostap_remove_interface 0x2a3cb282 +drivers/net/wireless/hostap/hostap hostap_remove_proc 0x0dc289e9 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0xbb19b24f +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0x14064c6a +drivers/net/wireless/hostap/hostap hostap_set_encryption 0xd019d676 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x9037c802 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0x16b2419a +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0xe99560f8 +drivers/net/wireless/hostap/hostap hostap_set_string 0x9ec8890d +drivers/net/wireless/hostap/hostap hostap_set_word 0x66266ebb +drivers/net/wireless/hostap/hostap hostap_setup_dev 0xfce377c0 +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x5c5e2368 +drivers/net/wireless/hostap/hostap hostap_update_rates 0x411c63b4 +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x6bf4e6e8 +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0xcb782b03 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x8b537757 +drivers/net/wireless/orinoco __orinoco_down 0xf5cb694a +drivers/net/wireless/orinoco __orinoco_up 0x3cbc9069 +drivers/net/wireless/orinoco alloc_orinocodev 0x991e77b7 +drivers/net/wireless/orinoco free_orinocodev 0xd42d4814 +drivers/net/wireless/orinoco orinoco_interrupt 0x6634d729 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x4d261006 +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0x12164286 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x31a1c267 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0xca28b574 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x74e94fcb +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0x68c11699 +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x08ed644f +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0xe76fada8 +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0x693bac3b +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0xd909d56d +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x5cc36253 +drivers/net/wireless/prism54_softmac/islsm register_islsm 0x5001fce2 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0x5a34bd3e +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0xc7701be1 +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0xc17bd629 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0x81b2dc9a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0x6fb889e4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0x821fc312 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x8d7b4f83 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0x3c7b8b78 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0xcd8f3d7f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0x7aa715a6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0x5668557c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0x8a08f822 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0xae5ac936 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x7615ccce +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0xb1515b7e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0x5ff4d4fa +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0xca7d90e2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0xe5763a98 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x6c6dd971 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0x7901eeed +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x28075930 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0xae0393e6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0x1ef13f7f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x2e1d1fe0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0xe6cdc8b5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x53a225c3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0xad0545a9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0xaef6f1ef +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x09c03d96 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0x0ea4faad +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0x2080f73d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0x1a2e4c1c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x9181a052 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0xaa136c86 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0xe41648e2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0x1ab12888 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x451e99a5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0xb910978c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0xa462722e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x97349a1c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x131f5662 +drivers/parport/parport parport_announce_port 0xf4524025 +drivers/parport/parport parport_claim 0x06fc53ad +drivers/parport/parport parport_claim_or_block 0x5cce33f0 +drivers/parport/parport parport_find_base 0x67bc310a +drivers/parport/parport parport_find_number 0xc1023c54 +drivers/parport/parport parport_get_port 0x127337c9 +drivers/parport/parport parport_ieee1284_ecp_read_data 0x0f2959fc +drivers/parport/parport parport_ieee1284_ecp_write_addr 0x76086e0c +drivers/parport/parport parport_ieee1284_ecp_write_data 0x164b69b8 +drivers/parport/parport parport_ieee1284_epp_read_addr 0xc1a3cfd9 +drivers/parport/parport parport_ieee1284_epp_read_data 0x3a2d27f8 +drivers/parport/parport parport_ieee1284_epp_write_addr 0x811a88fd +drivers/parport/parport parport_ieee1284_epp_write_data 0xe1598f49 +drivers/parport/parport parport_ieee1284_interrupt 0x94f45aa3 +drivers/parport/parport parport_ieee1284_read_byte 0x4048c793 +drivers/parport/parport parport_ieee1284_read_nibble 0xd856c0ec +drivers/parport/parport parport_ieee1284_write_compat 0x697a50f4 +drivers/parport/parport parport_negotiate 0xc2f23bdb +drivers/parport/parport parport_put_port 0xe70021e9 +drivers/parport/parport parport_read 0xc9109ae7 +drivers/parport/parport parport_register_device 0xbb62d124 +drivers/parport/parport parport_register_driver 0x3de0a79e +drivers/parport/parport parport_register_port 0x398f2517 +drivers/parport/parport parport_release 0x18384d9b +drivers/parport/parport parport_remove_port 0xed223494 +drivers/parport/parport parport_set_timeout 0xbefa9145 +drivers/parport/parport parport_unregister_device 0x0837895d +drivers/parport/parport parport_unregister_driver 0x848dc90c +drivers/parport/parport parport_wait_event 0x09b1b66f +drivers/parport/parport parport_wait_peripheral 0x3cbabda3 +drivers/parport/parport parport_write 0xee3eb034 +drivers/parport/parport_pc parport_pc_probe_port 0x2aca3ddd +drivers/parport/parport_pc parport_pc_unregister_port 0xae0794cd +drivers/pci/hotplug/acpiphp acpiphp_register_attention 0x3416e319 +drivers/pci/hotplug/acpiphp acpiphp_unregister_attention 0xa484b9d1 +drivers/pci/hotplug/pci_hotplug cpci_hp_register_bus 0xe76643af +drivers/pci/hotplug/pci_hotplug cpci_hp_register_controller 0xb3b92bac +drivers/pci/hotplug/pci_hotplug cpci_hp_start 0x6a8441be +drivers/pci/hotplug/pci_hotplug cpci_hp_stop 0x94ef4d05 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_bus 0x3b3d6532 +drivers/pci/hotplug/pci_hotplug cpci_hp_unregister_controller 0xea8a5cde +drivers/pci/hotplug/pci_hotplug pci_hotplug_slots_subsys 0x845d7371 +drivers/pci/hotplug/pci_hotplug pci_hp_change_slot_info 0xa1a43b5c +drivers/pci/hotplug/pci_hotplug pci_hp_deregister 0xb7345a88 +drivers/pci/hotplug/pci_hotplug pci_hp_register 0x687a19c8 +drivers/pcmcia/pcmcia cs_error 0x7ec35644 +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0xcf417492 +drivers/pcmcia/pcmcia pcmcia_deregister_client 0xbf47f070 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0xa00e385a +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0x57376bf7 +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0x376eb7bc +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0x8516d180 +drivers/pcmcia/pcmcia pcmcia_get_status 0xd2aac6a5 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0x2eacfe98 +drivers/pcmcia/pcmcia pcmcia_get_window 0x817fa310 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0x37f7aa35 +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x7e494d40 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0x71472a52 +drivers/pcmcia/pcmcia pcmcia_register_client 0xa8197f0f +drivers/pcmcia/pcmcia pcmcia_register_driver 0xbbd3c02f +drivers/pcmcia/pcmcia pcmcia_release_configuration 0xf2e8a571 +drivers/pcmcia/pcmcia pcmcia_release_io 0x9807d9b2 +drivers/pcmcia/pcmcia pcmcia_release_irq 0x76208e2b +drivers/pcmcia/pcmcia pcmcia_release_window 0x907a563f +drivers/pcmcia/pcmcia pcmcia_request_configuration 0x896c7180 +drivers/pcmcia/pcmcia pcmcia_request_io 0x941cd2e6 +drivers/pcmcia/pcmcia pcmcia_request_irq 0x3f25c3e8 +drivers/pcmcia/pcmcia pcmcia_request_window 0xfa5c8593 +drivers/pcmcia/pcmcia pcmcia_reset_card 0x4c3a6d4e +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0x73ab1eac +drivers/pcmcia/pcmcia pcmcia_validate_cis 0xfaaa100f +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0x542e1c1a +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x2e43aa4c +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0x706774d9 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0x87e49819 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0x7c2dba53 +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0x1fe7f2c9 +drivers/pcmcia/pcmcia_core pccard_reset_card 0x3861ab91 +drivers/pcmcia/pcmcia_core pccard_static_ops 0xe4b48799 +drivers/pcmcia/pcmcia_core pccard_validate_cis 0x8d5c0368 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0x95ebb7f6 +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0xf7031841 +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0xd110175d +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0x70c10931 +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0x3f366801 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0x1fa5bf74 +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0xdc62abf3 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0xc690e4c7 +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0x46a58556 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0x8215ac10 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0x42813136 +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0xd83a8b14 +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0xf569074e +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0xd2968587 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0xf02354b0 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0xaa3d0ad7 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0x8b08eeac +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0xe8e26675 +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x8af9efb5 +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0x77fd31d6 +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0x2fad53ad +drivers/pcmcia/pcmcia_core release_cis_mem 0x6e9ce517 +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0x7e870d3e +drivers/scsi/libata __sata_phy_reset 0xef044a20 +drivers/scsi/libata ata_acpi_bus_register 0x4eb7c257 +drivers/scsi/libata ata_acpi_exec_tfs 0x71c2a424 +drivers/scsi/libata ata_acpi_get_timing 0x2b857ca3 +drivers/scsi/libata ata_acpi_push_id 0x01bb7be0 +drivers/scsi/libata ata_acpi_push_timing 0x0ab98760 +drivers/scsi/libata ata_altstatus 0xa1bb47c8 +drivers/scsi/libata ata_bmdma_irq_clear 0x81b1de1b +drivers/scsi/libata ata_bmdma_setup 0xf42dbd67 +drivers/scsi/libata ata_bmdma_start 0xab2243d7 +drivers/scsi/libata ata_bmdma_status 0xb7deb40d +drivers/scsi/libata ata_bmdma_stop 0x4bc010f2 +drivers/scsi/libata ata_bus_probe 0x095d720a +drivers/scsi/libata ata_bus_reset 0x55774ee0 +drivers/scsi/libata ata_check_status 0x4cdef154 +drivers/scsi/libata ata_dev_classify 0x0531dcb8 +drivers/scsi/libata ata_dev_config 0x96dcbdc8 +drivers/scsi/libata ata_dev_id_string 0x07d45a53 +drivers/scsi/libata ata_device_add 0xaea5baf0 +drivers/scsi/libata ata_device_resume 0xc728b3a7 +drivers/scsi/libata ata_device_shutdown 0xe9436034 +drivers/scsi/libata ata_device_suspend 0x94683f79 +drivers/scsi/libata ata_eng_timeout 0x35ea88be +drivers/scsi/libata ata_exec_command 0x5d4b5904 +drivers/scsi/libata ata_host_intr 0xcd2fad19 +drivers/scsi/libata ata_host_set_remove 0x3e25ff00 +drivers/scsi/libata ata_host_stop 0x69fea312 +drivers/scsi/libata ata_hotplug_plug 0x11e9d513 +drivers/scsi/libata ata_hotplug_unplug 0x21737aa1 +drivers/scsi/libata ata_interrupt 0x4cc5af75 +drivers/scsi/libata ata_noop_dev_select 0xc15af795 +drivers/scsi/libata ata_pci_device_resume 0xa2f06d37 +drivers/scsi/libata ata_pci_device_suspend 0x4de809c3 +drivers/scsi/libata ata_pci_host_stop 0xc12396b5 +drivers/scsi/libata ata_pci_init_native_mode 0x7d7ffa22 +drivers/scsi/libata ata_pci_init_one 0xb43e4e67 +drivers/scsi/libata ata_pci_remove_one 0xb2534f6c +drivers/scsi/libata ata_port_disable 0x569204d9 +drivers/scsi/libata ata_port_probe 0x30303894 +drivers/scsi/libata ata_port_start 0xc9d5c6c0 +drivers/scsi/libata ata_port_stop 0xde7d5b1e +drivers/scsi/libata ata_qc_complete 0x79207192 +drivers/scsi/libata ata_qc_issue_prot 0x756b323c +drivers/scsi/libata ata_qc_prep 0xddd5b694 +drivers/scsi/libata ata_ratelimit 0xf8f3a0fb +drivers/scsi/libata ata_scsi_device_resume 0x64b4c9d4 +drivers/scsi/libata ata_scsi_device_shutdown 0xb85e4121 +drivers/scsi/libata ata_scsi_device_suspend 0x0aa1f3eb +drivers/scsi/libata ata_scsi_error 0x0383afb0 +drivers/scsi/libata ata_scsi_ioctl 0x68321a20 +drivers/scsi/libata ata_scsi_queuecmd 0x16fa145c +drivers/scsi/libata ata_scsi_release 0xb53e6036 +drivers/scsi/libata ata_scsi_simulate 0x3b5aca38 +drivers/scsi/libata ata_scsi_slave_config 0xbc746259 +drivers/scsi/libata ata_sg_init 0xa5fc283a +drivers/scsi/libata ata_sg_init_one 0x9a4113a3 +drivers/scsi/libata ata_std_bios_param 0x042cce38 +drivers/scsi/libata ata_std_dev_select 0x8335e986 +drivers/scsi/libata ata_std_ports 0x9c0148bd +drivers/scsi/libata ata_tf_from_fis 0x0067df75 +drivers/scsi/libata ata_tf_load 0x7cd256b2 +drivers/scsi/libata ata_tf_read 0xc95871ff +drivers/scsi/libata ata_tf_to_fis 0x28177a3f +drivers/scsi/libata ata_timing_compute 0xf6f94640 +drivers/scsi/libata ata_timing_merge 0xf3d5cc13 +drivers/scsi/libata do_drive_get_GTF 0x1b20277f +drivers/scsi/libata do_drive_set_taskfiles 0x008fc240 +drivers/scsi/libata pci_test_config_bits 0x3c4c5c81 +drivers/scsi/libata sata_phy_reset 0xe3368f21 +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0xf4aeef0a +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0x46655f06 +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0xb9a208b5 +drivers/scsi/qlogicfas408 qlogicfas408_abort 0x4faa8413 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0xb8dc7e1f +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0x25692a29 +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0x51562541 +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x6af07c89 +drivers/scsi/qlogicfas408 qlogicfas408_info 0xe233ba2c +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0x1d11a69b +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0xaec17f56 +drivers/scsi/raid_class raid_class_release 0x1e30cd88 +drivers/scsi/raid_class raid_component_add 0x249cc737 +drivers/scsi/sas/sas_class sas_register_ha 0x91faf658 +drivers/scsi/sas/sas_class sas_unregister_ha 0x41389e84 +drivers/scsi/scsi_mod __scsi_add_device 0x98923a45 +drivers/scsi/scsi_mod __scsi_device_lookup 0x0bf7eb53 +drivers/scsi/scsi_mod __scsi_device_lookup_by_target 0xeba0b79b +drivers/scsi/scsi_mod __scsi_iterate_devices 0x97db6a06 +drivers/scsi/scsi_mod __scsi_print_command 0xfef96e23 +drivers/scsi/scsi_mod __scsi_print_sense 0x69d38ed9 +drivers/scsi/scsi_mod int_to_scsilun 0xea10212a +drivers/scsi/scsi_mod scsi_add_device 0x8897cb11 +drivers/scsi/scsi_mod scsi_add_host 0x16f165d1 +drivers/scsi/scsi_mod scsi_adjust_queue_depth 0x26eaa46c +drivers/scsi/scsi_mod scsi_allocate_request 0xc312e5a3 +drivers/scsi/scsi_mod scsi_bios_ptable 0x858dfbd0 +drivers/scsi/scsi_mod scsi_block_requests 0xfc47e25d +drivers/scsi/scsi_mod scsi_block_when_processing_errors 0x1e692a72 +drivers/scsi/scsi_mod scsi_bus_type 0x09f6fd1b +drivers/scsi/scsi_mod scsi_calculate_bounce_limit 0x843d6daa +drivers/scsi/scsi_mod scsi_command_normalize_sense 0xafa5d31b +drivers/scsi/scsi_mod scsi_device_cancel 0x7d770833 +drivers/scsi/scsi_mod scsi_device_get 0xcb5ff016 +drivers/scsi/scsi_mod scsi_device_lookup 0x1f4e9cfe +drivers/scsi/scsi_mod scsi_device_lookup_by_target 0x7de7a4ac +drivers/scsi/scsi_mod scsi_device_put 0x0c5ae68d +drivers/scsi/scsi_mod scsi_device_quiesce 0x8ede5df4 +drivers/scsi/scsi_mod scsi_device_resume 0xc9178f1f +drivers/scsi/scsi_mod scsi_device_set_state 0x3eaa20a8 +drivers/scsi/scsi_mod scsi_device_types 0x6df713c9 +drivers/scsi/scsi_mod scsi_do_req 0x731f4f39 +drivers/scsi/scsi_mod scsi_execute 0xef1c44e6 +drivers/scsi/scsi_mod scsi_execute_req 0x7d74e7ae +drivers/scsi/scsi_mod scsi_extd_sense_format 0x11267875 +drivers/scsi/scsi_mod scsi_finish_command 0x5f3e0bd7 +drivers/scsi/scsi_mod scsi_flush_work 0xff4a488e +drivers/scsi/scsi_mod scsi_free_host_dev 0xc5d4ac1a +drivers/scsi/scsi_mod scsi_get_command 0x6939062c +drivers/scsi/scsi_mod scsi_get_host_dev 0xfbbe7395 +drivers/scsi/scsi_mod scsi_get_sense_info_fld 0x796fc5ce +drivers/scsi/scsi_mod scsi_host_alloc 0xc0e2748c +drivers/scsi/scsi_mod scsi_host_get 0x5c5c87e3 +drivers/scsi/scsi_mod scsi_host_lookup 0xb93c583d +drivers/scsi/scsi_mod scsi_host_put 0x1e15fdc0 +drivers/scsi/scsi_mod scsi_host_set_state 0x794f8cf8 +drivers/scsi/scsi_mod scsi_internal_device_block 0xe7d16a8b +drivers/scsi/scsi_mod scsi_internal_device_unblock 0xdb0df24a +drivers/scsi/scsi_mod scsi_io_completion 0x57272c92 +drivers/scsi/scsi_mod scsi_ioctl 0xb92a3e2a +drivers/scsi/scsi_mod scsi_ioctl_send_command 0xc03a7601 +drivers/scsi/scsi_mod scsi_is_host_device 0x0593e117 +drivers/scsi/scsi_mod scsi_is_sdev_device 0xb14ece89 +drivers/scsi/scsi_mod scsi_is_target_device 0x9721dfb6 +drivers/scsi/scsi_mod scsi_logging_level 0xaf3dd7dc +drivers/scsi/scsi_mod scsi_mode_sense 0x99621677 +drivers/scsi/scsi_mod scsi_nonblockable_ioctl 0xf324ec5f +drivers/scsi/scsi_mod scsi_normalize_sense 0x0c65e73c +drivers/scsi/scsi_mod scsi_partsize 0x4afe9a77 +drivers/scsi/scsi_mod scsi_print_command 0xe18db24d +drivers/scsi/scsi_mod scsi_print_msg 0x67f88938 +drivers/scsi/scsi_mod scsi_print_req_sense 0x0e49a046 +drivers/scsi/scsi_mod scsi_print_sense 0x3a914cb1 +drivers/scsi/scsi_mod scsi_print_sense_hdr 0xca5dbc50 +drivers/scsi/scsi_mod scsi_print_status 0x9cfd56c5 +drivers/scsi/scsi_mod scsi_put_command 0x90dbf9d1 +drivers/scsi/scsi_mod scsi_queue_work 0xc9dae3f8 +drivers/scsi/scsi_mod scsi_register 0xe3ac1391 +drivers/scsi/scsi_mod scsi_register_driver 0x564ead83 +drivers/scsi/scsi_mod scsi_register_interface 0x635df364 +drivers/scsi/scsi_mod scsi_release_request 0x03a85009 +drivers/scsi/scsi_mod scsi_remove_device 0x6c9b93da +drivers/scsi/scsi_mod scsi_remove_host 0x0fadc8b0 +drivers/scsi/scsi_mod scsi_remove_target 0xc752aaea +drivers/scsi/scsi_mod scsi_report_bus_reset 0xc4021cfd +drivers/scsi/scsi_mod scsi_report_device_reset 0x873afaa3 +drivers/scsi/scsi_mod scsi_request_normalize_sense 0xc96d8321 +drivers/scsi/scsi_mod scsi_rescan_device 0x72901b0c +drivers/scsi/scsi_mod scsi_reset_provider 0xd2e23175 +drivers/scsi/scsi_mod scsi_scan_host 0xf2fc9096 +drivers/scsi/scsi_mod scsi_scan_target 0x22ab0156 +drivers/scsi/scsi_mod scsi_sense_desc_find 0x2b0ba2b0 +drivers/scsi/scsi_mod scsi_sense_key_string 0x96cd2b04 +drivers/scsi/scsi_mod scsi_set_medium_removal 0xd38d4423 +drivers/scsi/scsi_mod scsi_setup_blk_pc_cmnd 0x441a0b8d +drivers/scsi/scsi_mod scsi_target_block 0xade0398e +drivers/scsi/scsi_mod scsi_target_quiesce 0x90cb80b1 +drivers/scsi/scsi_mod scsi_target_resume 0xa23b1f15 +drivers/scsi/scsi_mod scsi_target_unblock 0x64e1a85b +drivers/scsi/scsi_mod scsi_test_unit_ready 0xebd91ef0 +drivers/scsi/scsi_mod scsi_track_queue_full 0xbdead93d +drivers/scsi/scsi_mod scsi_unblock_requests 0xa29cfaf5 +drivers/scsi/scsi_mod scsi_unregister 0x3ecdef6f +drivers/scsi/scsi_mod scsicam_bios_param 0x7717c7b9 +drivers/scsi/scsi_mod starget_for_each_device 0xe6aa0531 +drivers/scsi/scsi_transport_fc fc_attach_transport 0x4a668fa9 +drivers/scsi/scsi_transport_fc fc_release_transport 0x9cb88b8e +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x91307679 +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0x0a9ab9b9 +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0xbc80903e +drivers/scsi/scsi_transport_fc fc_remove_host 0x937ee580 +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0xc0208b7c +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0xd876605e +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x92346d68 +drivers/scsi/scsi_transport_sas sas_attach_transport 0xea1eb58a +drivers/scsi/scsi_transport_sas sas_phy_add 0xe35a25c5 +drivers/scsi/scsi_transport_sas sas_phy_alloc 0x097c9919 +drivers/scsi/scsi_transport_sas sas_phy_delete 0x2d9ad3d8 +drivers/scsi/scsi_transport_sas sas_phy_free 0xc9f7f805 +drivers/scsi/scsi_transport_sas sas_release_transport 0xf48c4052 +drivers/scsi/scsi_transport_sas sas_remove_host 0x5de26161 +drivers/scsi/scsi_transport_sas sas_rphy_add 0x034efad8 +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x51c5ce84 +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x0e831a23 +drivers/scsi/scsi_transport_sas sas_rphy_free 0xd034875f +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0x5374caeb +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0xf7f0de5f +drivers/scsi/scsi_transport_spi spi_attach_transport 0xc5340cda +drivers/scsi/scsi_transport_spi spi_display_xfer_agreement 0xb2b61b31 +drivers/scsi/scsi_transport_spi spi_dv_device 0x7869deb1 +drivers/scsi/scsi_transport_spi spi_release_transport 0xf924745e +drivers/scsi/scsi_transport_spi spi_schedule_dv_device 0x2ee636a1 +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x9d51f986 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0x03c2327b +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x7849276c +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0x90606567 +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0xe437a632 +drivers/telephony/ixj ixj_pcmcia_probe 0x7a34a057 +drivers/telephony/phonedev phone_register_device 0x688f9560 +drivers/telephony/phonedev phone_unregister_device 0xb6334a76 +drivers/usb/atm/usbatm usbatm_usb_disconnect 0x04f19509 +drivers/usb/atm/usbatm usbatm_usb_probe 0x3cfa28f4 +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x74a85966 +drivers/usb/core/usbcore usb_alloc_dev 0xd63d117c +drivers/usb/core/usbcore usb_alloc_urb 0xdf7b60ec +drivers/usb/core/usbcore usb_altnum_to_altsetting 0xe801069d +drivers/usb/core/usbcore usb_buffer_alloc 0x387152ff +drivers/usb/core/usbcore usb_buffer_free 0xaef4f655 +drivers/usb/core/usbcore usb_buffer_map_sg 0x788dfa1e +drivers/usb/core/usbcore usb_buffer_unmap_sg 0xd2e03c9b +drivers/usb/core/usbcore usb_bulk_msg 0x3527abfe +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0xfa3f0918 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0xdadc79a0 +drivers/usb/core/usbcore usb_claim_bandwidth 0x492c74ca +drivers/usb/core/usbcore usb_clear_halt 0x673c8277 +drivers/usb/core/usbcore usb_control_msg 0xbca560c8 +drivers/usb/core/usbcore usb_create_hcd 0x0fa56aa0 +drivers/usb/core/usbcore usb_deregister 0x8f4f12d3 +drivers/usb/core/usbcore usb_deregister_dev 0xcd6f215e +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0x180c6061 +drivers/usb/core/usbcore usb_driver_claim_interface 0x33ce70fe +drivers/usb/core/usbcore usb_driver_release_interface 0xd5991a78 +drivers/usb/core/usbcore usb_find_device 0x5dae7184 +drivers/usb/core/usbcore usb_find_interface 0x2551673f +drivers/usb/core/usbcore usb_free_urb 0x14b610ea +drivers/usb/core/usbcore usb_get_current_frame_number 0x493cda41 +drivers/usb/core/usbcore usb_get_descriptor 0x2ebe0a7c +drivers/usb/core/usbcore usb_get_dev 0xfb5be188 +drivers/usb/core/usbcore usb_get_intf 0x713d80b0 +drivers/usb/core/usbcore usb_get_status 0x91c3bd90 +drivers/usb/core/usbcore usb_get_string 0xeaaebc61 +drivers/usb/core/usbcore usb_get_urb 0x3f4d3f70 +drivers/usb/core/usbcore usb_hc_died 0x8347cbed +drivers/usb/core/usbcore usb_hcd_giveback_urb 0xf45e5b05 +drivers/usb/core/usbcore usb_hcd_pci_probe 0x505c9d5a +drivers/usb/core/usbcore usb_hcd_pci_remove 0x44c429d3 +drivers/usb/core/usbcore usb_hcd_pci_resume 0xe2db1dc7 +drivers/usb/core/usbcore usb_hcd_pci_suspend 0xaaf75af1 +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0x61463299 +drivers/usb/core/usbcore usb_hcd_resume_root_hub 0xd0df342c +drivers/usb/core/usbcore usb_hcd_suspend_root_hub 0x76ba6a35 +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0x30cd3b01 +drivers/usb/core/usbcore usb_ifnum_to_if 0x10111e2d +drivers/usb/core/usbcore usb_init_urb 0x3f292c38 +drivers/usb/core/usbcore usb_kill_urb 0xae4ee091 +drivers/usb/core/usbcore usb_lock_device 0xd0babc26 +drivers/usb/core/usbcore usb_lock_device_for_reset 0x2c0f38bc +drivers/usb/core/usbcore usb_match_id 0x01431f4f +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0xfb116de3 +drivers/usb/core/usbcore usb_put_dev 0xa9ea1d89 +drivers/usb/core/usbcore usb_put_hcd 0x1fdbc633 +drivers/usb/core/usbcore usb_put_intf 0x6efaa91c +drivers/usb/core/usbcore usb_register 0x52683da7 +drivers/usb/core/usbcore usb_register_dev 0xda03effd +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x53e08cf6 +drivers/usb/core/usbcore usb_remove_hcd 0x6def1ea3 +drivers/usb/core/usbcore usb_reset_configuration 0x411b65cb +drivers/usb/core/usbcore usb_reset_device 0x065158eb +drivers/usb/core/usbcore usb_set_device_state 0xafe0da0c +drivers/usb/core/usbcore usb_set_interface 0x247ba57b +drivers/usb/core/usbcore usb_sg_cancel 0x246af286 +drivers/usb/core/usbcore usb_sg_init 0x13d71b10 +drivers/usb/core/usbcore usb_sg_wait 0x2c119555 +drivers/usb/core/usbcore usb_string 0x80e25d46 +drivers/usb/core/usbcore usb_submit_urb 0x6e5fb7a5 +drivers/usb/core/usbcore usb_trylock_device 0x76f889ee +drivers/usb/core/usbcore usb_unlink_urb 0xb6d6694b +drivers/usb/core/usbcore usb_unlock_device 0xd7726124 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/gadget/net2280 net2280_set_fifo_mode 0x5de7140c +drivers/usb/gadget/net2280 usb_gadget_register_driver 0x465ce190 +drivers/usb/gadget/net2280 usb_gadget_unregister_driver 0x35f476bb +drivers/usb/host/sl811-hcd sl811h_driver 0xb03ee344 +drivers/usb/media/ov511/ov511 ov511_deregister_decomp_module 0x7db9be3c +drivers/usb/media/ov511/ov511 ov511_register_decomp_module 0x3fefd0e4 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x2dfb2fe1 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0xf65386e5 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0xb57f461c +drivers/usb/media/usbvideo RingQueue_Dequeue 0xc62c3f97 +drivers/usb/media/usbvideo RingQueue_Enqueue 0x079325e3 +drivers/usb/media/usbvideo RingQueue_Flush 0x99ede02c +drivers/usb/media/usbvideo RingQueue_WakeUpInterruptible 0xa104e316 +drivers/usb/media/usbvideo usbvideo_AllocateDevice 0xd7c2e277 +drivers/usb/media/usbvideo usbvideo_DeinterlaceFrame 0x83223ce3 +drivers/usb/media/usbvideo usbvideo_Deregister 0xa58e2d6d +drivers/usb/media/usbvideo usbvideo_RegisterVideoDevice 0xf4487c09 +drivers/usb/media/usbvideo usbvideo_TestPattern 0x02dbec39 +drivers/usb/media/usbvideo usbvideo_register 0x4842901e +drivers/usb/media/w9968cf w9968cf_vppmod_deregister 0x5be632b1 +drivers/usb/media/w9968cf w9968cf_vppmod_register 0xbb92b250 +drivers/usb/net/atmel/at76_usbdfu usbdfu_download 0x9536cb3f +drivers/usb/net/atmel/at76c503 at76c503_delete_device 0x8d24bfec +drivers/usb/net/atmel/at76c503 at76c503_do_probe 0xa3117080 +drivers/usb/net/cdc_ether usbnet_cdc_unbind 0xefff04fd +drivers/usb/net/cdc_ether usbnet_generic_cdc_bind 0x2926bcd1 +drivers/usb/net/usbnet usbnet_defer_kevent 0x4c6d4052 +drivers/usb/net/usbnet usbnet_disconnect 0x686d97eb +drivers/usb/net/usbnet usbnet_get_drvinfo 0x5a57c3c1 +drivers/usb/net/usbnet usbnet_get_endpoints 0x81b18e34 +drivers/usb/net/usbnet usbnet_get_msglevel 0x6eef0d7b +drivers/usb/net/usbnet usbnet_probe 0x6b5852f5 +drivers/usb/net/usbnet usbnet_resume 0xc4d9b818 +drivers/usb/net/usbnet usbnet_set_msglevel 0x7e1d2877 +drivers/usb/net/usbnet usbnet_skb_return 0x9bf6b8aa +drivers/usb/net/usbnet usbnet_suspend 0x75ae1140 +drivers/usb/serial/usbserial ezusb_set_reset 0x508ae7d2 +drivers/usb/serial/usbserial ezusb_writememory 0xf984eea6 +drivers/usb/serial/usbserial usb_serial_deregister 0x8d118f1b +drivers/usb/serial/usbserial usb_serial_disconnect 0x5aa5b900 +drivers/usb/serial/usbserial usb_serial_generic_write_bulk_callback 0x3c3b7347 +drivers/usb/serial/usbserial usb_serial_port_softint 0xc78bbb05 +drivers/usb/serial/usbserial usb_serial_probe 0xd239926d +drivers/usb/serial/usbserial usb_serial_register 0x4442d25d +drivers/video/backlight/backlight backlight_device_register 0x8f2f8c16 +drivers/video/backlight/backlight backlight_device_unregister 0x1a976ef5 +drivers/video/backlight/lcd lcd_device_register 0x02ec3742 +drivers/video/backlight/lcd lcd_device_unregister 0x91db7145 +drivers/video/cfbcopyarea cfb_copyarea 0x145c43df +drivers/video/cfbfillrect cfb_fillrect 0xa9ffd277 +drivers/video/cfbimgblt cfb_imageblit 0xc4cf6c16 +drivers/video/console/bitblit fbcon_set_bitops 0xfeeda82d +drivers/video/console/font find_font 0xf7584a9c +drivers/video/console/font get_default_font 0x093e3659 +drivers/video/console/softcursor soft_cursor 0x0982af42 +drivers/video/console/tileblit fbcon_set_tileops 0x0966ee96 +drivers/video/cyber2000fb cyber2000fb_attach 0x28dc728e +drivers/video/cyber2000fb cyber2000fb_detach 0x0cc3ede5 +drivers/video/cyber2000fb cyber2000fb_disable_extregs 0x29a70b0b +drivers/video/cyber2000fb cyber2000fb_enable_extregs 0x1d97f9a0 +drivers/video/cyber2000fb cyber2000fb_get_fb_var 0x45d4f283 +drivers/video/macmodes mac_find_mode 0x7f54e2f2 +drivers/video/macmodes mac_map_monitor_sense 0xe2304303 +drivers/video/macmodes mac_var_to_vmode 0x00907cd5 +drivers/video/macmodes mac_vmode_to_var 0x08ed0b62 +drivers/video/matrox/g450_pll g450_mnp2f 0x369ed9d9 +drivers/video/matrox/g450_pll matroxfb_g450_setclk 0x1fb2f34e +drivers/video/matrox/g450_pll matroxfb_g450_setpll_cond 0xf8b31e23 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_init 0x2bacbad2 +drivers/video/matrox/matroxfb_DAC1064 DAC1064_global_restore 0x7e5a7e18 +drivers/video/matrox/matroxfb_DAC1064 matrox_G100 0x32c37a5f +drivers/video/matrox/matroxfb_DAC1064 matrox_mystique 0x387fe6c8 +drivers/video/matrox/matroxfb_Ti3026 matrox_millennium 0x19960c35 +drivers/video/matrox/matroxfb_accel matrox_cfbX_init 0x571e3658 +drivers/video/matrox/matroxfb_base matroxfb_enable_irq 0xb28c7bb3 +drivers/video/matrox/matroxfb_base matroxfb_register_driver 0x535547c6 +drivers/video/matrox/matroxfb_base matroxfb_unregister_driver 0x092b22b2 +drivers/video/matrox/matroxfb_base matroxfb_wait_for_sync 0xd4b0c214 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_connect 0x69e8ffd5 +drivers/video/matrox/matroxfb_g450 matroxfb_g450_shutdown 0xea67a0fd +drivers/video/matrox/matroxfb_misc matroxfb_DAC_in 0xc62f7bab +drivers/video/matrox/matroxfb_misc matroxfb_DAC_out 0x1f50530b +drivers/video/matrox/matroxfb_misc matroxfb_PLL_calcclock 0x25cf8049 +drivers/video/matrox/matroxfb_misc matroxfb_read_pins 0xb2daec28 +drivers/video/matrox/matroxfb_misc matroxfb_var2my 0xabd8e427 +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWinit 0x578abcfe +drivers/video/matrox/matroxfb_misc matroxfb_vgaHWrestore 0x9ed8e532 +drivers/video/sis/sisfb sis_free 0x454a3cf0 +drivers/video/sis/sisfb sis_free_new 0x649b70a3 +drivers/video/sis/sisfb sis_malloc 0x3037658e +drivers/video/sis/sisfb sis_malloc_new 0xb33445d9 +drivers/video/vgastate restore_vga 0x686de290 +drivers/video/vgastate save_vga 0xe7a2620e +drivers/w1/ds9490r ds_get_device 0x41894479 +drivers/w1/ds9490r ds_put_device 0xa187d459 +drivers/w1/ds9490r ds_read_bit 0x846b86c1 +drivers/w1/ds9490r ds_read_block 0xf0f88294 +drivers/w1/ds9490r ds_read_byte 0x2ec47fec +drivers/w1/ds9490r ds_reset 0xcd53f014 +drivers/w1/ds9490r ds_touch_bit 0x7b60f5a6 +drivers/w1/ds9490r ds_write_bit 0x4ec3b4d9 +drivers/w1/ds9490r ds_write_block 0x1d79478a +drivers/w1/ds9490r ds_write_byte 0xe14dece9 +drivers/w1/wire w1_add_master_device 0xd703c624 +drivers/w1/wire w1_calc_crc8 0x7c2f2afb +drivers/w1/wire w1_delay 0xcdad3759 +drivers/w1/wire w1_family_get 0xb0c86d52 +drivers/w1/wire w1_family_put 0x45181a35 +drivers/w1/wire w1_family_registered 0x345f469c +drivers/w1/wire w1_read_8 0x90b26b3e +drivers/w1/wire w1_read_block 0x961f5e8a +drivers/w1/wire w1_register_family 0xadeb1de9 +drivers/w1/wire w1_remove_master_device 0x31a7a05c +drivers/w1/wire w1_reset_bus 0x76878a10 +drivers/w1/wire w1_reset_select_slave 0xc145fe5a +drivers/w1/wire w1_search_devices 0x6bbebef8 +drivers/w1/wire w1_touch_bit 0x34712836 +drivers/w1/wire w1_unregister_family 0x2616cdb9 +drivers/w1/wire w1_write_8 0xa200c686 +drivers/w1/wire w1_write_block 0x96d4001d +fs/configfs/configfs config_group_init 0x9c96cf58 +fs/configfs/configfs config_group_init_type_name 0xc53a224a +fs/configfs/configfs config_item_get 0x90ae19a9 +fs/configfs/configfs config_item_init 0x6e3c00f2 +fs/configfs/configfs config_item_init_type_name 0x0575e81d +fs/configfs/configfs config_item_put 0xb7bacb8b +fs/configfs/configfs config_item_set_name 0x39e45827 +fs/configfs/configfs configfs_register_subsystem 0xee5ab6b0 +fs/configfs/configfs configfs_unregister_subsystem 0xb55cd03d +fs/exportfs/exportfs export_op_default 0xa1d200ee +fs/exportfs/exportfs find_exported_dentry 0x97c2b98b +fs/fat/fat fat_add_entries 0x99d2a7e6 +fs/fat/fat fat_alloc_new_dir 0xe7f7270a +fs/fat/fat fat_attach 0xc8370a96 +fs/fat/fat fat_build_inode 0x4330f611 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0x35b4d9f4 +fs/fat/fat fat_dir_empty 0x975779f9 +fs/fat/fat fat_fill_super 0x99691bc1 +fs/fat/fat fat_free_clusters 0x75962af0 +fs/fat/fat fat_fs_panic 0xe4e20b13 +fs/fat/fat fat_get_dotdot_entry 0x8b675721 +fs/fat/fat fat_notify_change 0x88b1e185 +fs/fat/fat fat_remove_entries 0xc44dfb50 +fs/fat/fat fat_scan 0xcdc064c2 +fs/fat/fat fat_search_long 0xc5a47f86 +fs/fat/fat fat_sync_bhs 0x978fe233 +fs/fat/fat fat_sync_inode 0xf3b35767 +fs/jbd/jbd journal_abort 0xb25c8fc7 +fs/jbd/jbd journal_ack_err 0x69ade650 +fs/jbd/jbd journal_blocks_per_page 0x6c2f9ab5 +fs/jbd/jbd journal_check_available_features 0x48ae82ec +fs/jbd/jbd journal_check_used_features 0x5fff447f +fs/jbd/jbd journal_clear_err 0xc0f9e3bd +fs/jbd/jbd journal_create 0x370b2db2 +fs/jbd/jbd journal_destroy 0x4ce8684a +fs/jbd/jbd journal_dirty_data 0x8d37ae91 +fs/jbd/jbd journal_dirty_metadata 0x1ec4d1d1 +fs/jbd/jbd journal_errno 0xc5c1ef36 +fs/jbd/jbd journal_extend 0xa37ca39c +fs/jbd/jbd journal_flush 0x99e68d9b +fs/jbd/jbd journal_force_commit 0xdced03a1 +fs/jbd/jbd journal_force_commit_nested 0x19cf4680 +fs/jbd/jbd journal_forget 0x1912873a +fs/jbd/jbd journal_get_create_access 0x57197202 +fs/jbd/jbd journal_get_undo_access 0xa39faedb +fs/jbd/jbd journal_get_write_access 0x4a8fe345 +fs/jbd/jbd journal_init_dev 0x79356510 +fs/jbd/jbd journal_init_inode 0x876fd152 +fs/jbd/jbd journal_invalidatepage 0x9ceb9c9d +fs/jbd/jbd journal_load 0x2df830f9 +fs/jbd/jbd journal_lock_updates 0x47f095f9 +fs/jbd/jbd journal_release_buffer 0xe43fe419 +fs/jbd/jbd journal_restart 0xd26b0fcd +fs/jbd/jbd journal_revoke 0x6dd43ffa +fs/jbd/jbd journal_set_features 0x208af4c4 +fs/jbd/jbd journal_start 0x2b1ff7da +fs/jbd/jbd journal_start_commit 0xed6c1ce7 +fs/jbd/jbd journal_stop 0x29926de3 +fs/jbd/jbd journal_try_to_free_buffers 0x389c1c9e +fs/jbd/jbd journal_unlock_updates 0x6f1b128b +fs/jbd/jbd journal_update_format 0x75d99780 +fs/jbd/jbd journal_update_superblock 0xc48e6fb6 +fs/jbd/jbd journal_wipe 0x94708d38 +fs/jbd/jbd log_wait_commit 0xeca85406 +fs/lockd/lockd lockd_down 0xa7b91a7b +fs/lockd/lockd lockd_up 0xf6933c48 +fs/lockd/lockd nlmclnt_proc 0x26e50c8a +fs/lockd/lockd nlmsvc_ops 0x78d18b5f +fs/nfsd/nfsd nfs4_acl_add_ace 0x8b0e8bec +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/relayfs/relayfs relay_buf_full 0xcbb76a3c +fs/relayfs/relayfs relay_close 0xc1010d23 +fs/relayfs/relayfs relay_flush 0x4b6f7fdb +fs/relayfs/relayfs relay_open 0x523d9dc3 +fs/relayfs/relayfs relay_reset 0x8197749b +fs/relayfs/relayfs relay_subbufs_consumed 0x0e2d248a +fs/relayfs/relayfs relay_switch_subbuf 0x1915cdb2 +fs/relayfs/relayfs relayfs_create_dir 0x6fc4dd9e +fs/relayfs/relayfs relayfs_file_operations 0x331a751d +fs/relayfs/relayfs relayfs_remove_dir 0xf847b629 +lib/crc-ccitt crc_ccitt 0x651c2313 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x9aabc564 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x41bcd8b3 +lib/libcrc32c crc32c_le 0x13c0c38e +lib/reed_solomon/reed_solomon decode_rs16 0x14dfb94e +lib/reed_solomon/reed_solomon free_rs 0x0e15ff31 +lib/reed_solomon/reed_solomon init_rs 0xf3ed347c +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/appletalk/appletalk aarp_send_ddp 0x1500448a +net/appletalk/appletalk alloc_ltalkdev 0xb34fce36 +net/appletalk/appletalk atalk_find_dev_addr 0xc243454d +net/appletalk/appletalk atrtr_get_dev 0x410e028d +net/ax25/ax25 asc2ax 0xd20bff63 +net/ax25/ax25 ax25_display_timer 0x0367a570 +net/ax25/ax25 ax25_find_cb 0x85747cab +net/ax25/ax25 ax25_findbyuid 0x5fc6280f +net/ax25/ax25 ax25_hard_header 0xd60dc91f +net/ax25/ax25 ax25_linkfail_register 0xec41750e +net/ax25/ax25 ax25_linkfail_release 0x7833e29c +net/ax25/ax25 ax25_listen_register 0x5c336d41 +net/ax25/ax25 ax25_listen_release 0x8773424d +net/ax25/ax25 ax25_protocol_register 0x38486201 +net/ax25/ax25 ax25_protocol_release 0x8ede9e26 +net/ax25/ax25 ax25_rebuild_header 0x274699b3 +net/ax25/ax25 ax25_send_frame 0x03790e04 +net/ax25/ax25 ax25_uid_policy 0x242852b9 +net/ax25/ax25 ax25cmp 0x5b5fef41 +net/ax25/ax25 ax2asc 0xd75839e6 +net/ax25/ax25 null_ax25_address 0x43621e18 +net/bluetooth/bluetooth baswap 0xcc1fb551 +net/bluetooth/bluetooth batostr 0xc2066af0 +net/bluetooth/bluetooth bt_accept_dequeue 0xac95c685 +net/bluetooth/bluetooth bt_accept_enqueue 0xd834347d +net/bluetooth/bluetooth bt_accept_unlink 0xf9f45aad +net/bluetooth/bluetooth bt_class 0xc902979c +net/bluetooth/bluetooth bt_err 0x7094f8ae +net/bluetooth/bluetooth bt_sock_link 0xf8931078 +net/bluetooth/bluetooth bt_sock_poll 0xdbfd9a4a +net/bluetooth/bluetooth bt_sock_recvmsg 0x9880d8df +net/bluetooth/bluetooth bt_sock_register 0x5fa51f0e +net/bluetooth/bluetooth bt_sock_unlink 0x9f4bd020 +net/bluetooth/bluetooth bt_sock_unregister 0xf19294db +net/bluetooth/bluetooth bt_sock_wait_state 0xbdd2c7b5 +net/bluetooth/bluetooth hci_alloc_dev 0x438e0e97 +net/bluetooth/bluetooth hci_conn_auth 0x2d206471 +net/bluetooth/bluetooth hci_conn_change_link_key 0x90e31f3b +net/bluetooth/bluetooth hci_conn_encrypt 0x11f39b3e +net/bluetooth/bluetooth hci_conn_switch_role 0xd4172b69 +net/bluetooth/bluetooth hci_connect 0xf9cda153 +net/bluetooth/bluetooth hci_free_dev 0x548579c2 +net/bluetooth/bluetooth hci_get_route 0x555010e8 +net/bluetooth/bluetooth hci_register_cb 0x5bc9fd3d +net/bluetooth/bluetooth hci_register_dev 0xd67a3a10 +net/bluetooth/bluetooth hci_register_proto 0xa525fe4b +net/bluetooth/bluetooth hci_resume_dev 0x4a435036 +net/bluetooth/bluetooth hci_send_acl 0x858db6b6 +net/bluetooth/bluetooth hci_send_sco 0x944edf1a +net/bluetooth/bluetooth hci_suspend_dev 0x506c1945 +net/bluetooth/bluetooth hci_unregister_cb 0x4cbe5d31 +net/bluetooth/bluetooth hci_unregister_dev 0x0203fc66 +net/bluetooth/bluetooth hci_unregister_proto 0x2e748759 +net/bluetooth/l2cap l2cap_load 0xfc31fe88 +net/bridge/bridge br_should_route_hook 0x0e372425 +net/bridge/netfilter/ebtables ebt_do_table 0x096eea51 +net/bridge/netfilter/ebtables ebt_register_match 0x03d2bf4d +net/bridge/netfilter/ebtables ebt_register_table 0xc1bdee4d +net/bridge/netfilter/ebtables ebt_register_target 0x8bb7b0e6 +net/bridge/netfilter/ebtables ebt_register_watcher 0x8d6cfc14 +net/bridge/netfilter/ebtables ebt_unregister_match 0xe9852f4d +net/bridge/netfilter/ebtables ebt_unregister_table 0xe751d0af +net/bridge/netfilter/ebtables ebt_unregister_target 0x12a37b8b +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x4cc987e3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0x3a18e70d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0x71ecc67f +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x7824d7b3 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xded46fa7 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0xb67d8828 +net/dccp/dccp ccid_init 0x6b3fa629 +net/dccp/dccp ccid_register 0x9254398f +net/dccp/dccp ccid_unregister 0xdf581336 +net/dccp/dccp dccp_hashinfo 0xfc10564c +net/dccp/dccp dccp_insert_option 0xba5a36c6 +net/dccp/dccp dccp_insert_option_elapsed_time 0x33356550 +net/dccp/dccp dccp_insert_option_timestamp 0x6bbafea3 +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0x0f140379 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0xb42e49a0 +net/ieee80211/ieee80211 alloc_ieee80211 0x71b0576a +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0x8f250c8b +net/ieee80211/ieee80211 ieee80211_channel_to_index 0xd766c15c +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0x42e70866 +net/ieee80211/ieee80211 ieee80211_get_channel 0x37254aec +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0x5c31dfbe +net/ieee80211/ieee80211 ieee80211_get_geo 0x3e155853 +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0xd997d687 +net/ieee80211/ieee80211 ieee80211_rx 0x7cb41699 +net/ieee80211/ieee80211 ieee80211_rx_mgt 0xd0aa0f81 +net/ieee80211/ieee80211 ieee80211_set_geo 0xbf753c4c +net/ieee80211/ieee80211 ieee80211_tx_frame 0x873a1e6c +net/ieee80211/ieee80211 ieee80211_txb_free 0xbda474dd +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0xc4b73a83 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0x08937b1f +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0xf20ca4b9 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0x75e2fbf2 +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0x5f17df0e +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x2eff654b +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x09fc305f +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0xaf35c8b0 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x2921a993 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0x08535abe +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x79958149 +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0xe39ae73f +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x1296d847 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0x2573e8c7 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0x51f4f8d3 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x8d883dd8 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0x93a3beb1 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0x9f098278 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0x3ae3dabc +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0xb2c0ee89 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0x0fac7677 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0xf79d378d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0x1b01058b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0xedcc34b8 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x8447f50f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x68041bdf +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0xd4bc553c +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x88935af3 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x7e5e6bc0 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x1fe71082 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x109b68fc +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0x2de5d9d2 +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x7d9563bc +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0xa5101437 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0xc2baea55 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0xa914e8ed +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0x9ff0b3af +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0xf0e47987 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0x0dd7fac5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0x87b3707a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0xd98b88f5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0x8a64634b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0x5407dbd5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x182ec48b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0xac0ac847 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0xc6395d23 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x04b23947 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0xca3e905a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x56da258f +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0xff072da4 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0x49b983de +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0xb1048cd2 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0xb8ad247d +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x549073f8 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0xb7c6f8bd +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0xdfccddb7 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x1a2b3792 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x297cf169 +net/ipv4/ipvs/ip_vs ip_vs_conn_in_get 0xffb033c0 +net/ipv4/ipvs/ip_vs ip_vs_conn_new 0x9e6f78f5 +net/ipv4/ipvs/ip_vs ip_vs_conn_out_get 0x7772b895 +net/ipv4/ipvs/ip_vs ip_vs_conn_put 0xc872aa45 +net/ipv4/ipvs/ip_vs ip_vs_make_skb_writable 0x677519da +net/ipv4/ipvs/ip_vs ip_vs_proto_name 0xa1dbc2d8 +net/ipv4/ipvs/ip_vs ip_vs_skb_replace 0x1971cf05 +net/ipv4/ipvs/ip_vs ip_vs_tcp_conn_listen 0x74fd084d +net/ipv4/ipvs/ip_vs register_ip_vs_app 0x6991bd7d +net/ipv4/ipvs/ip_vs register_ip_vs_app_inc 0x739d25d7 +net/ipv4/ipvs/ip_vs register_ip_vs_scheduler 0xe9f05dd8 +net/ipv4/ipvs/ip_vs unregister_ip_vs_app 0xb044a934 +net/ipv4/ipvs/ip_vs unregister_ip_vs_scheduler 0xc395742c +net/ipv4/netfilter/arp_tables arpt_do_table 0x56016a0e +net/ipv4/netfilter/arp_tables arpt_register_table 0x1d5ee9a8 +net/ipv4/netfilter/arp_tables arpt_register_target 0xcff4c655 +net/ipv4/netfilter/arp_tables arpt_unregister_table 0x895a67cc +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x0f7e0165 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0xaa330112 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0xe36cf0ee +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0xacf5343f +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x79ebb3f8 +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0x5ccc07e6 +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0x2ffc2f04 +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0xf4eec7cd +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0x7ac88271 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0xf37eda71 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0xff2df741 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0x59f7c906 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x96825716 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0xba751352 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0x3e591586 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x6de9ddfb +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0x6596a7cb +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0xa60559db +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0xd6252c72 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x5a403bc5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0x2b4ec0f9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0xdcf0dcf6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0xb8a9d0b8 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x0deaac0d +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x40402998 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0x373874be +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0xfe820a7c +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x39a90680 +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x04bf193b +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0x14c160bb +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0x494f6672 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x12d0be69 +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0x0d9186f4 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0xe135157c +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0x541d898b +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0xb7c05930 +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x1df5faf5 +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0xdcf644a7 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0xfa9b619a +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0x96d16225 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0xcb0fdfe6 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0x548d899f +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0xab03e90c +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0xc50fc0c3 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0xa480133f +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0x9266d14e +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0x859a2406 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0xaf192103 +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0xbae0ccb5 +net/ipv4/netfilter/ip_nat ip_nat_packet 0x2d8cdcec +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0xe9468615 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0xd65a5ba1 +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x124ef02d +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0xb2ad0934 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x49eba2d5 +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0xca29bf02 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0x8a3622a6 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x15f8674f +net/ipv4/netfilter/ip_tables ipt_do_table 0xb4bfd481 +net/ipv4/netfilter/ip_tables ipt_find_target 0xc2518b39 +net/ipv4/netfilter/ip_tables ipt_register_match 0x7aff17e0 +net/ipv4/netfilter/ip_tables ipt_register_table 0x99f940ee +net/ipv4/netfilter/ip_tables ipt_register_target 0xa05a735e +net/ipv4/netfilter/ip_tables ipt_unregister_match 0x5df9ed7a +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x49f79785 +net/ipv4/netfilter/ip_tables ipt_unregister_target 0x6e672f5b +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0x08ffcbca +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0x4127dcf4 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0xce8e74b0 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0x61d6313d +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0xb695bd50 +net/ipv6/ipv6 inet6_add_protocol 0x70e5e6a0 +net/ipv6/ipv6 inet6_bind 0x815e2332 +net/ipv6/ipv6 inet6_del_protocol 0x4ff202d8 +net/ipv6/ipv6 inet6_getname 0xa1fcaf95 +net/ipv6/ipv6 inet6_ioctl 0x83c779a6 +net/ipv6/ipv6 inet6_register_protosw 0xbe70d2e0 +net/ipv6/ipv6 inet6_release 0x80d12cc9 +net/ipv6/ipv6 inet6_unregister_protosw 0xf96739fc +net/ipv6/ipv6 ip6_route_me_harder 0xe2deed1c +net/ipv6/ipv6 ip6_route_output 0x7fb64caf +net/ipv6/ipv6 ip6_xmit 0x1ebb8c93 +net/ipv6/ipv6 ipv6_chk_addr 0x982b7989 +net/ipv6/ipv6 ipv6_get_saddr 0x2d1489e2 +net/ipv6/ipv6 ipv6_getsockopt 0x76a44cf5 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0x34eef3be +net/ipv6/ipv6 ipv6_setsockopt 0x1ae53b25 +net/ipv6/ipv6 ndisc_mc_map 0x3abbdea4 +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x9e68b5fd +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0xa6d1e7de +net/ipv6/ipv6 xfrm6_rcv_spi 0x3973ed22 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0xd7651100 +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0xd5746a15 +net/ipv6/netfilter/ip6_tables ip6t_register_table 0xb5771f13 +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x49e0af76 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0x0deec1cc +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x2f65c675 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0x78f97798 +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0xb02aa36a +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0xd89e9310 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0x2468b46a +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/irda/ircomm/ircomm ircomm_close 0x454d6eb2 +net/irda/ircomm/ircomm ircomm_connect_request 0x660a2faf +net/irda/ircomm/ircomm ircomm_connect_response 0x8fe8a61e +net/irda/ircomm/ircomm ircomm_control_request 0x026aeee7 +net/irda/ircomm/ircomm ircomm_data_request 0x75e70068 +net/irda/ircomm/ircomm ircomm_disconnect_request 0x1b65cd31 +net/irda/ircomm/ircomm ircomm_flow_request 0x8402ea56 +net/irda/ircomm/ircomm ircomm_open 0xe7a3f582 +net/irda/irda alloc_irdadev 0x48002bfa +net/irda/irda async_unwrap_char 0xddf1fcd7 +net/irda/irda async_wrap_skb 0x9664741b +net/irda/irda hashbin_delete 0x9f3fdb15 +net/irda/irda hashbin_find 0xc9697ed6 +net/irda/irda hashbin_get_first 0xafb532f6 +net/irda/irda hashbin_get_next 0xdd673d0a +net/irda/irda hashbin_insert 0xf10e95cc +net/irda/irda hashbin_lock_find 0x7bee2e3d +net/irda/irda hashbin_new 0x96c5cfee +net/irda/irda hashbin_remove 0x229d35b6 +net/irda/irda hashbin_remove_this 0x9722368a +net/irda/irda irda_debug 0x38a20e5b +net/irda/irda irda_device_dongle_cleanup 0xbba1ac5a +net/irda/irda irda_device_dongle_init 0xbf51bf29 +net/irda/irda irda_device_register_dongle 0x090134ec +net/irda/irda irda_device_set_media_busy 0x56ad4440 +net/irda/irda irda_device_unregister_dongle 0xc964c8a8 +net/irda/irda irda_init_max_qos_capabilies 0x6b043eba +net/irda/irda irda_notify_init 0x3b2c6bb6 +net/irda/irda irda_param_extract_all 0x993ad14b +net/irda/irda irda_param_insert 0x2036ad06 +net/irda/irda irda_param_pack 0x91815586 +net/irda/irda irda_qos_bits_to_value 0x448b8aaa +net/irda/irda irda_setup_dma 0xd6deeaae +net/irda/irda irda_task_delete 0x50f20932 +net/irda/irda irda_task_execute 0xe6d6161f +net/irda/irda irda_task_next_state 0xfbf473ac +net/irda/irda iriap_close 0x9d86bf49 +net/irda/irda iriap_getvaluebyclass_request 0x9be43707 +net/irda/irda iriap_open 0x2b11e2a2 +net/irda/irda irias_add_integer_attrib 0x87b3f3d3 +net/irda/irda irias_add_octseq_attrib 0x26c6095d +net/irda/irda irias_add_string_attrib 0x315da11c +net/irda/irda irias_delete_object 0x1c8a1c31 +net/irda/irda irias_delete_value 0xb9394173 +net/irda/irda irias_find_attrib 0x49291c9d +net/irda/irda irias_find_object 0x09676c38 +net/irda/irda irias_insert_object 0xa337379a +net/irda/irda irias_new_integer_value 0x06a3ee58 +net/irda/irda irias_new_object 0x6082a8bf +net/irda/irda irias_new_octseq_value 0x591d1bbd +net/irda/irda irias_new_string_value 0x38dde4e1 +net/irda/irda irias_object_change_attribute 0xbcd3ef13 +net/irda/irda irlap_close 0x4a4e1bf3 +net/irda/irda irlap_open 0x4fea3687 +net/irda/irda irlmp_close_lsap 0x071029dc +net/irda/irda irlmp_connect_request 0xa424277b +net/irda/irda irlmp_connect_response 0x0a3b876a +net/irda/irda irlmp_data_request 0x8bbc84f5 +net/irda/irda irlmp_disconnect_request 0x2f169878 +net/irda/irda irlmp_discovery_request 0xbe40ace9 +net/irda/irda irlmp_get_discoveries 0xedd521c2 +net/irda/irda irlmp_open_lsap 0xdd94eecf +net/irda/irda irlmp_register_client 0x7042bc54 +net/irda/irda irlmp_register_service 0x07d3647c +net/irda/irda irlmp_service_to_hint 0xde4c6b3c +net/irda/irda irlmp_unregister_client 0x763e54a4 +net/irda/irda irlmp_unregister_service 0x46c1c4a2 +net/irda/irda irlmp_update_client 0x7957f728 +net/irda/irda irttp_close_tsap 0x6caa0189 +net/irda/irda irttp_connect_request 0x711ca5cc +net/irda/irda irttp_connect_response 0x83dec550 +net/irda/irda irttp_data_request 0xcb297558 +net/irda/irda irttp_disconnect_request 0x46caa761 +net/irda/irda irttp_dup 0x1cf76451 +net/irda/irda irttp_flow_request 0x071e8d6f +net/irda/irda irttp_open_tsap 0xcc97b4c0 +net/irda/irda irttp_udata_request 0x90a14d5f +net/irda/irda proc_irda 0x8c6e23c2 +net/lapb/lapb lapb_connect_request 0xbf121825 +net/lapb/lapb lapb_data_received 0x2e85763e +net/lapb/lapb lapb_data_request 0x85c02a47 +net/lapb/lapb lapb_disconnect_request 0x9fad72df +net/lapb/lapb lapb_getparms 0x01bd278d +net/lapb/lapb lapb_register 0x875a8f76 +net/lapb/lapb lapb_setparms 0x54c1cebf +net/lapb/lapb lapb_unregister 0x58b1afab +net/netfilter/nfnetlink __nfa_fill 0x29c599d5 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0x620158a4 +net/netfilter/nfnetlink nfnetlink_subsys_register 0x4ade0b07 +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0xad292662 +net/netfilter/nfnetlink nfnetlink_unicast 0xae9910b7 +net/rxrpc/rxrpc rxrpc_add_service 0xbbb57afd +net/rxrpc/rxrpc rxrpc_call_abort 0xc2c9519c +net/rxrpc/rxrpc rxrpc_call_read_data 0x84724b72 +net/rxrpc/rxrpc rxrpc_call_write_data 0x38d88299 +net/rxrpc/rxrpc rxrpc_create_call 0xd8381d4c +net/rxrpc/rxrpc rxrpc_create_connection 0x3e0d0383 +net/rxrpc/rxrpc rxrpc_create_transport 0x6f778baf +net/rxrpc/rxrpc rxrpc_del_service 0x2f4d2cd8 +net/rxrpc/rxrpc rxrpc_put_call 0x4c438aa2 +net/rxrpc/rxrpc rxrpc_put_connection 0x0f3b993a +net/rxrpc/rxrpc rxrpc_put_transport 0x60750611 +net/sunrpc/auth_gss/auth_rpcgss g_make_token_header 0x00c52ef5 +net/sunrpc/auth_gss/auth_rpcgss g_token_size 0xb5dea7ef +net/sunrpc/auth_gss/auth_rpcgss g_verify_token_header 0xf8b2ff6e +net/sunrpc/auth_gss/auth_rpcgss gss_decrypt_xdr_buf 0xea21adad +net/sunrpc/auth_gss/auth_rpcgss gss_encrypt_xdr_buf 0x0a341d98 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get 0x08fa0a5e +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_name 0x41f3ab46 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_get_by_pseudoflavor 0xd698ff0f +net/sunrpc/auth_gss/auth_rpcgss gss_mech_put 0x52c00a98 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_register 0xc097a928 +net/sunrpc/auth_gss/auth_rpcgss gss_mech_unregister 0xf75dd656 +net/sunrpc/auth_gss/auth_rpcgss gss_pseudoflavor_to_service 0x544a8deb +net/sunrpc/auth_gss/auth_rpcgss gss_service_to_auth_domain_name 0x72a6bcaf +net/sunrpc/auth_gss/auth_rpcgss krb5_decrypt 0xe362aa8f +net/sunrpc/auth_gss/auth_rpcgss krb5_encrypt 0x31ddd8a1 +net/sunrpc/auth_gss/auth_rpcgss make_checksum 0x42c56c75 +net/sunrpc/auth_gss/auth_rpcgss print_hexl 0x4c2f4b6d +net/sunrpc/auth_gss/auth_rpcgss svcauth_gss_register_pseudoflavor 0x8d1a827e +net/sunrpc/sunrpc auth_domain_find 0xce9b7a1f +net/sunrpc/sunrpc auth_domain_lookup 0xa74157e3 +net/sunrpc/sunrpc auth_domain_put 0xb7e2b4a5 +net/sunrpc/sunrpc auth_unix_add_addr 0xb8520a43 +net/sunrpc/sunrpc auth_unix_forget_old 0x758f9c49 +net/sunrpc/sunrpc auth_unix_lookup 0xd1d4e136 +net/sunrpc/sunrpc cache_check 0x47989c9a +net/sunrpc/sunrpc cache_flush 0x71fa908a +net/sunrpc/sunrpc cache_fresh 0xce72669f +net/sunrpc/sunrpc cache_init 0xc244025c +net/sunrpc/sunrpc cache_purge 0x49bedfb3 +net/sunrpc/sunrpc cache_register 0xcee13b26 +net/sunrpc/sunrpc cache_unregister 0x79888678 +net/sunrpc/sunrpc nfs_debug 0xaf5bf6ef +net/sunrpc/sunrpc nfsd_debug 0xbf9d1b96 +net/sunrpc/sunrpc nlm_debug 0x53445f68 +net/sunrpc/sunrpc put_rpccred 0x6a871080 +net/sunrpc/sunrpc qword_add 0xedcf6be4 +net/sunrpc/sunrpc qword_addhex 0xc8e96dea +net/sunrpc/sunrpc qword_get 0xe97f4ce5 +net/sunrpc/sunrpc read_bytes_from_xdr_buf 0x6bd94311 +net/sunrpc/sunrpc rpc_bind_new_program 0xfbf90714 +net/sunrpc/sunrpc rpc_call_async 0xe5e95adb +net/sunrpc/sunrpc rpc_call_setup 0xe6880083 +net/sunrpc/sunrpc rpc_call_sync 0xa4a7a593 +net/sunrpc/sunrpc rpc_clnt_sigmask 0x80dad785 +net/sunrpc/sunrpc rpc_clnt_sigunmask 0x7ed6da6d +net/sunrpc/sunrpc rpc_clone_client 0x4f084881 +net/sunrpc/sunrpc rpc_create_client 0x64d73260 +net/sunrpc/sunrpc rpc_debug 0x31a89d59 +net/sunrpc/sunrpc rpc_delay 0x31f774d4 +net/sunrpc/sunrpc rpc_destroy_client 0x4aec89d3 +net/sunrpc/sunrpc rpc_execute 0xd101f2ca +net/sunrpc/sunrpc rpc_init_task 0x4b9a7fb7 +net/sunrpc/sunrpc rpc_init_wait_queue 0x11e11d3f +net/sunrpc/sunrpc rpc_killall_tasks 0xbc3dd7df +net/sunrpc/sunrpc rpc_max_payload 0xf1506fed +net/sunrpc/sunrpc rpc_mkpipe 0x21b398d4 +net/sunrpc/sunrpc rpc_new_child 0x2d68d7d9 +net/sunrpc/sunrpc rpc_new_client 0xdddfea23 +net/sunrpc/sunrpc rpc_new_task 0x2fe9d788 +net/sunrpc/sunrpc rpc_proc_register 0xb783b440 +net/sunrpc/sunrpc rpc_proc_unregister 0x5bd26000 +net/sunrpc/sunrpc rpc_queue_upcall 0xd23519a9 +net/sunrpc/sunrpc rpc_release_client 0x8fac068f +net/sunrpc/sunrpc rpc_release_task 0x25359621 +net/sunrpc/sunrpc rpc_restart_call 0x7cdc14b1 +net/sunrpc/sunrpc rpc_run_child 0x19ca2480 +net/sunrpc/sunrpc rpc_setbufsize 0xbde4fa82 +net/sunrpc/sunrpc rpc_shutdown_client 0xecc3b9db +net/sunrpc/sunrpc rpc_sleep_on 0x52d0f49a +net/sunrpc/sunrpc rpc_unlink 0x9296bec2 +net/sunrpc/sunrpc rpc_wake_up 0xe2c0d089 +net/sunrpc/sunrpc rpc_wake_up_next 0xea051a36 +net/sunrpc/sunrpc rpc_wake_up_status 0x6bd6a967 +net/sunrpc/sunrpc rpc_wake_up_task 0x27e9935e +net/sunrpc/sunrpc rpcauth_create 0x4c493eee +net/sunrpc/sunrpc rpcauth_free_credcache 0x584ac9e6 +net/sunrpc/sunrpc rpcauth_init_credcache 0x47430893 +net/sunrpc/sunrpc rpcauth_lookup_credcache 0x7ffa1311 +net/sunrpc/sunrpc rpcauth_lookupcred 0x7a2505a7 +net/sunrpc/sunrpc rpcauth_register 0xf4cdf2e9 +net/sunrpc/sunrpc rpcauth_unregister 0x285c4c50 +net/sunrpc/sunrpc rpciod_down 0xbabf0f35 +net/sunrpc/sunrpc rpciod_up 0x375492a4 +net/sunrpc/sunrpc svc_auth_register 0x22fa5db8 +net/sunrpc/sunrpc svc_auth_unregister 0x0f668ba9 +net/sunrpc/sunrpc svc_authenticate 0x0e819f52 +net/sunrpc/sunrpc svc_create 0x2a7e2130 +net/sunrpc/sunrpc svc_create_thread 0x03779c12 +net/sunrpc/sunrpc svc_destroy 0x6d66f714 +net/sunrpc/sunrpc svc_drop 0xe90a1428 +net/sunrpc/sunrpc svc_exit_thread 0xa93235c5 +net/sunrpc/sunrpc svc_makesock 0xde441206 +net/sunrpc/sunrpc svc_proc_register 0xe3ae5b3d +net/sunrpc/sunrpc svc_proc_unregister 0x12e280e3 +net/sunrpc/sunrpc svc_process 0x12b57141 +net/sunrpc/sunrpc svc_recv 0x09ff37b6 +net/sunrpc/sunrpc svc_reserve 0x9a5b0208 +net/sunrpc/sunrpc svc_seq_show 0x8363512a +net/sunrpc/sunrpc svc_set_client 0x09921190 +net/sunrpc/sunrpc svc_wake_up 0x295b3bd3 +net/sunrpc/sunrpc svcauth_unix_purge 0x6eea229d +net/sunrpc/sunrpc unix_domain_find 0x96946e44 +net/sunrpc/sunrpc xdr_buf_from_iov 0x388251bd +net/sunrpc/sunrpc xdr_buf_read_netobj 0x039e3ebd +net/sunrpc/sunrpc xdr_buf_subsegment 0x6ded689f +net/sunrpc/sunrpc xdr_decode_array2 0xe362a11b +net/sunrpc/sunrpc xdr_decode_netobj 0x1be57115 +net/sunrpc/sunrpc xdr_decode_string 0x6755aa62 +net/sunrpc/sunrpc xdr_decode_string_inplace 0x7bd87272 +net/sunrpc/sunrpc xdr_decode_word 0xef52390e +net/sunrpc/sunrpc xdr_encode_array2 0x33155bf3 +net/sunrpc/sunrpc xdr_encode_netobj 0x29c6f164 +net/sunrpc/sunrpc xdr_encode_opaque 0x0e9e79d5 +net/sunrpc/sunrpc xdr_encode_opaque_fixed 0x587d494b +net/sunrpc/sunrpc xdr_encode_pages 0x8d18a397 +net/sunrpc/sunrpc xdr_encode_string 0xabc0fe0c +net/sunrpc/sunrpc xdr_encode_word 0xafcdb86a +net/sunrpc/sunrpc xdr_init_decode 0x9cd8d92c +net/sunrpc/sunrpc xdr_init_encode 0x65f47e91 +net/sunrpc/sunrpc xdr_inline_decode 0xb2f5de40 +net/sunrpc/sunrpc xdr_inline_pages 0x9f675162 +net/sunrpc/sunrpc xdr_read_pages 0xe924ed8f +net/sunrpc/sunrpc xdr_reserve_space 0xb4675e44 +net/sunrpc/sunrpc xdr_shift_buf 0x53a15db7 +net/sunrpc/sunrpc xdr_write_pages 0x3711e8f5 +net/sunrpc/sunrpc xprt_create_proto 0x53f2f995 +net/sunrpc/sunrpc xprt_set_timeout 0xbce67dc0 +net/wanrouter/wanrouter lock_adapter_irq 0x6b14bb8d +net/wanrouter/wanrouter register_wan_device 0x81dfce0d +net/wanrouter/wanrouter unlock_adapter_irq 0x53a2e800 +net/wanrouter/wanrouter unregister_wan_device 0x0ebe03d1 +net/wanrouter/wanrouter wanrouter_encapsulate 0x5afd833f +net/wanrouter/wanrouter wanrouter_type_trans 0xac0c1ace +security/commoncap cap_bprm_apply_creds 0x99b81a3d +security/commoncap cap_bprm_secureexec 0x85f76294 +security/commoncap cap_bprm_set_security 0x7c2336cf +security/commoncap cap_capable 0xb71e0f71 +security/commoncap cap_capget 0x6c161f4e +security/commoncap cap_capset_check 0xd852c313 +security/commoncap cap_capset_set 0x85685c41 +security/commoncap cap_inode_removexattr 0xb3019080 +security/commoncap cap_inode_setxattr 0x00dcc2b6 +security/commoncap cap_netlink_recv 0x25114759 +security/commoncap cap_netlink_send 0x7beaf41f +security/commoncap cap_ptrace 0x5070bd87 +security/commoncap cap_settime 0x819cc9ba +security/commoncap cap_syslog 0xe1dd5368 +security/commoncap cap_task_post_setuid 0x13ea5cf8 +security/commoncap cap_task_reparent_to_init 0x7f49e21f +security/commoncap cap_vm_enough_memory 0xaf236a7b +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x59168bfa +sound/core/seq/instr/snd-ainstr-fm snd_seq_fm_init 0xa759f38d +sound/core/seq/instr/snd-ainstr-simple snd_seq_simple_init 0x9596ac1c +sound/core/seq/snd-seq snd_seq_create_kernel_client 0xccec802a +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0xc7b4ac8f +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0x742794b8 +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0xfd6c172f +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x89947013 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x039453f8 +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x137a80d1 +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-instr snd_seq_instr_event 0xf02bb907 +sound/core/seq/snd-seq-instr snd_seq_instr_find 0x3a6ab315 +sound/core/seq/snd-seq-instr snd_seq_instr_free_use 0x9a4c5e93 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free 0x8b6d0c74 +sound/core/seq/snd-seq-instr snd_seq_instr_list_free_cond 0x2a687b76 +sound/core/seq/snd-seq-instr snd_seq_instr_list_new 0x4f46dcf1 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_alloc_set 0x7b6f0fa7 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_free_set 0xcfb054f4 +sound/core/seq/snd-seq-midi-emul snd_midi_channel_set_clear 0x10121a16 +sound/core/seq/snd-seq-midi-emul snd_midi_process_event 0x789db613 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x30657d29 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0xdbdd9ad1 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x24b8399a +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x195c80b1 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x866949af +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x8db6a0a8 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0xe9e12582 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0x48e008d5 +sound/core/seq/snd-seq-virmidi snd_virmidi_new 0x24535664 +sound/core/snd copy_from_user_toio 0x518bb7f8 +sound/core/snd copy_to_user_fromio 0xe243dde3 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0x61d54cf5 +sound/core/snd snd_card_file_add 0x48393e96 +sound/core/snd snd_card_file_remove 0xae0aec7a +sound/core/snd snd_card_free 0x7883c323 +sound/core/snd snd_card_free_in_thread 0x6308fcb2 +sound/core/snd snd_card_new 0x996b06cb +sound/core/snd snd_card_pci_resume 0xe1264259 +sound/core/snd snd_card_pci_suspend 0x751ce31d +sound/core/snd snd_card_proc_new 0x43a7aec7 +sound/core/snd snd_card_register 0x391f8815 +sound/core/snd snd_card_set_generic_dev 0xc717b0ad +sound/core/snd snd_card_set_generic_pm_callback 0x904e005d +sound/core/snd snd_card_set_pm_callback 0x68bcf783 +sound/core/snd snd_cards 0x22448121 +sound/core/snd snd_component_add 0x5e052a88 +sound/core/snd snd_ctl_add 0x29070dd9 +sound/core/snd snd_ctl_elem_read 0xf060e138 +sound/core/snd snd_ctl_elem_write 0xf39cc8e1 +sound/core/snd snd_ctl_find_id 0x6a84ebfe +sound/core/snd snd_ctl_find_numid 0x416812e9 +sound/core/snd snd_ctl_free_one 0x72550e5e +sound/core/snd snd_ctl_new 0xbfbb1a36 +sound/core/snd snd_ctl_new1 0x69003aca +sound/core/snd snd_ctl_notify 0x97a5773a +sound/core/snd snd_ctl_register_ioctl 0xa830bf1b +sound/core/snd snd_ctl_register_ioctl_compat 0xf852991d +sound/core/snd snd_ctl_remove 0x268985be +sound/core/snd snd_ctl_remove_id 0x6ebf34bb +sound/core/snd snd_ctl_rename_id 0x9e471261 +sound/core/snd snd_ctl_unregister_ioctl 0x28e40e03 +sound/core/snd snd_ctl_unregister_ioctl_compat 0xecd9e4c6 +sound/core/snd snd_device_free 0x8b2adc7e +sound/core/snd snd_device_new 0x6e8fe4ef +sound/core/snd snd_device_register 0x5f2abddb +sound/core/snd snd_dma_disable 0x70c15ac1 +sound/core/snd snd_dma_pointer 0x191e88cf +sound/core/snd snd_dma_program 0x18e1683f +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0x67c5a673 +sound/core/snd snd_info_create_module_entry 0x7b66a930 +sound/core/snd snd_info_free_entry 0xfc2376c1 +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0x49ed13a4 +sound/core/snd snd_info_unregister 0x0afa2d79 +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0xd72b7768 +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_power_wait 0xa94ee9f1 +sound/core/snd snd_register_device 0x4ac6c345 +sound/core/snd snd_register_oss_device 0x4af52d0b +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0x1fe6fac4 +sound/core/snd snd_unregister_device 0x3e36b62a +sound/core/snd snd_unregister_oss_device 0x81eb91e2 +sound/core/snd-hwdep snd_hwdep_new 0xf4417dcd +sound/core/snd-page-alloc snd_dma_alloc_pages 0xe0d92d98 +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0xde41b766 +sound/core/snd-page-alloc snd_dma_free_pages 0x19ab5edb +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0x52ccf232 +sound/core/snd-page-alloc snd_dma_reserve_buf 0x12b24101 +sound/core/snd-page-alloc snd_free_pages 0x19cc2ce3 +sound/core/snd-page-alloc snd_malloc_pages 0xc6829020 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x0beab9b1 +sound/core/snd-pcm snd_pcm_devices 0x52c0cb34 +sound/core/snd-pcm snd_pcm_format_big_endian 0x93878ece +sound/core/snd-pcm snd_pcm_format_linear 0x8733f967 +sound/core/snd-pcm snd_pcm_format_little_endian 0x8bbdc311 +sound/core/snd-pcm snd_pcm_format_name 0xedd5b5bd +sound/core/snd-pcm snd_pcm_format_physical_width 0xa8edfa41 +sound/core/snd-pcm snd_pcm_format_set_silence 0xdf124602 +sound/core/snd-pcm snd_pcm_format_signed 0xe2c5f868 +sound/core/snd-pcm snd_pcm_format_silence_64 0xda29bc77 +sound/core/snd-pcm snd_pcm_format_size 0xa2658908 +sound/core/snd-pcm snd_pcm_format_unsigned 0x95a60aa5 +sound/core/snd-pcm snd_pcm_format_width 0x55eb2175 +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0xed2561f5 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0xbd54f045 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0x30749c7e +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x776912b8 +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0xaf839323 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0xd3da6a38 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x135dab9c +sound/core/snd-pcm snd_pcm_hw_constraint_step 0x2ec0e743 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0xb56058a6 +sound/core/snd-pcm snd_pcm_hw_constraints_init 0xd95f2084 +sound/core/snd-pcm snd_pcm_hw_param_first 0x1d00949b +sound/core/snd-pcm snd_pcm_hw_param_last 0x2ca6eba4 +sound/core/snd-pcm snd_pcm_hw_param_mask 0x2272165b +sound/core/snd-pcm snd_pcm_hw_param_near 0xe576d72d +sound/core/snd-pcm snd_pcm_hw_param_set 0xe3b5900e +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0x85ccfba6 +sound/core/snd-pcm snd_pcm_hw_rule_add 0xd83ad45d +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0xafad79cb +sound/core/snd-pcm snd_pcm_kernel_ioctl 0x4c83b7f3 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0xa4dbc851 +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0x97e6fc7b +sound/core/snd-pcm snd_pcm_lib_free_pages 0x11c1b734 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x2c5a1d3e +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0xe37231cf +sound/core/snd-pcm snd_pcm_lib_mmap_iomem 0xd727b8ca +sound/core/snd-pcm snd_pcm_lib_period_bytes 0x95fce483 +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x2f969f8e +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0xffcf85cb +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0x8b25a23f +sound/core/snd-pcm snd_pcm_lib_read 0x35db6ffb +sound/core/snd-pcm snd_pcm_lib_readv 0x7a6fd43b +sound/core/snd-pcm snd_pcm_lib_write 0x45577369 +sound/core/snd-pcm snd_pcm_lib_writev 0x33454514 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x99a6197d +sound/core/snd-pcm snd_pcm_link_rwlock 0x011bbb0e +sound/core/snd-pcm snd_pcm_mmap_data 0x5d34f000 +sound/core/snd-pcm snd_pcm_new 0x59f9913f +sound/core/snd-pcm snd_pcm_new_stream 0x30cc4d87 +sound/core/snd-pcm snd_pcm_notify 0xa030494d +sound/core/snd-pcm snd_pcm_open_substream 0x8fe34552 +sound/core/snd-pcm snd_pcm_period_elapsed 0x4357a25d +sound/core/snd-pcm snd_pcm_release_substream 0x554ca166 +sound/core/snd-pcm snd_pcm_set_ops 0x6a475888 +sound/core/snd-pcm snd_pcm_set_sync 0x483e4abf +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0xabc235c7 +sound/core/snd-pcm snd_pcm_stop 0xa8911c35 +sound/core/snd-pcm snd_pcm_suspend 0x246df52f +sound/core/snd-pcm snd_pcm_suspend_all 0x6fd6547a +sound/core/snd-rawmidi snd_rawmidi_drain_input 0x73421086 +sound/core/snd-rawmidi snd_rawmidi_drain_output 0x2930cd44 +sound/core/snd-rawmidi snd_rawmidi_drop_output 0xdad3c610 +sound/core/snd-rawmidi snd_rawmidi_info 0x3fdd5c34 +sound/core/snd-rawmidi snd_rawmidi_info_select 0xd3202c72 +sound/core/snd-rawmidi snd_rawmidi_input_params 0x7b7e426c +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x083e714d +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0xb4d34538 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0xea1700a1 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x3e7c6a5b +sound/core/snd-rawmidi snd_rawmidi_new 0x04d3921b +sound/core/snd-rawmidi snd_rawmidi_output_params 0x4f93b49b +sound/core/snd-rawmidi snd_rawmidi_receive 0xdd3ddad6 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x8ccf096b +sound/core/snd-rawmidi snd_rawmidi_transmit 0x9030c420 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x4b1af551 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x894f501a +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0x7e44ef6b +sound/core/snd-timer snd_timer_close 0x207be7cf +sound/core/snd-timer snd_timer_continue 0xa7675a5e +sound/core/snd-timer snd_timer_global_free 0xa369a8b2 +sound/core/snd-timer snd_timer_global_new 0x872b977b +sound/core/snd-timer snd_timer_global_register 0x69fdc2bc +sound/core/snd-timer snd_timer_global_unregister 0xa1eb1f4a +sound/core/snd-timer snd_timer_interrupt 0xf63faf8a +sound/core/snd-timer snd_timer_new 0xa4966bbf +sound/core/snd-timer snd_timer_notify 0x266d8e41 +sound/core/snd-timer snd_timer_open 0x08ae964a +sound/core/snd-timer snd_timer_pause 0xbcc0206d +sound/core/snd-timer snd_timer_resolution 0xea07deb1 +sound/core/snd-timer snd_timer_start 0xe5585c43 +sound/core/snd-timer snd_timer_stop 0x85f41bd7 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_interrupt 0x93762478 +sound/drivers/mpu401/snd-mpu401-uart snd_mpu401_uart_new 0x71b9d454 +sound/drivers/opl3/snd-opl3-lib snd_opl3_create 0x9c9c51dc +sound/drivers/opl3/snd-opl3-lib snd_opl3_hwdep_new 0xd79445f0 +sound/drivers/opl3/snd-opl3-lib snd_opl3_init 0x905d6a6f +sound/drivers/opl3/snd-opl3-lib snd_opl3_interrupt 0xa4832b88 +sound/drivers/opl3/snd-opl3-lib snd_opl3_new 0x4e691e7f +sound/drivers/opl3/snd-opl3-lib snd_opl3_regmap 0x05060a19 +sound/drivers/opl3/snd-opl3-lib snd_opl3_reset 0xaf9d48eb +sound/drivers/opl3/snd-opl3-lib snd_opl3_timer_new 0xc812b055 +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0xd972960c +sound/drivers/vx/snd-vx-lib snd_vx_create 0xdec17582 +sound/drivers/vx/snd-vx-lib snd_vx_delay 0xb16b852e +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0xf3e7a48d +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x270396c7 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0xf7157be4 +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0xa1fdbe0c +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0x0236a952 +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0xc0bd7cef +sound/i2c/other/snd-ak4114 snd_ak4114_build 0xc9678c69 +sound/i2c/other/snd-ak4114 snd_ak4114_check_rate_and_errors 0x99a327b2 +sound/i2c/other/snd-ak4114 snd_ak4114_create 0xfb9e156d +sound/i2c/other/snd-ak4114 snd_ak4114_external_rate 0xbbdd2104 +sound/i2c/other/snd-ak4114 snd_ak4114_reg_write 0x942e9687 +sound/i2c/other/snd-ak4114 snd_ak4114_reinit 0x2900c895 +sound/i2c/other/snd-ak4117 snd_ak4117_build 0x18e44078 +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0xfb674d87 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0x2365cf3c +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0xc48301c3 +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x85a442ae +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x814773e2 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_build_controls 0x05ec84a3 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_init 0x7c2a7542 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_reset 0x6ca03720 +sound/i2c/other/snd-ak4xxx-adda snd_akm4xxx_write 0x2879968a +sound/i2c/other/snd-tea575x-tuner snd_tea575x_exit 0x47039827 +sound/i2c/other/snd-tea575x-tuner snd_tea575x_init 0x78a473e6 +sound/i2c/snd-cs8427 snd_cs8427_create 0x0fde636d +sound/i2c/snd-cs8427 snd_cs8427_iec958_active 0xdf3900f7 +sound/i2c/snd-cs8427 snd_cs8427_iec958_build 0x52bf9601 +sound/i2c/snd-cs8427 snd_cs8427_iec958_pcm 0xd7fd94b6 +sound/i2c/snd-cs8427 snd_cs8427_reg_write 0x1b7d25f4 +sound/i2c/snd-cs8427 snd_cs8427_reset 0x42c5bdbd +sound/i2c/snd-i2c snd_i2c_bus_create 0xae48c2fd +sound/i2c/snd-i2c snd_i2c_device_create 0xb28b0612 +sound/i2c/snd-i2c snd_i2c_device_free 0x832da97a +sound/i2c/snd-i2c snd_i2c_probeaddr 0x5da9bd8b +sound/i2c/snd-i2c snd_i2c_readbytes 0x97f03660 +sound/i2c/snd-i2c snd_i2c_sendbytes 0x33dddbb5 +sound/isa/sb/snd-sb-common snd_sbdsp_command 0x30c0bbb0 +sound/isa/sb/snd-sb-common snd_sbdsp_create 0xf978fdb8 +sound/isa/sb/snd-sb-common snd_sbdsp_get_byte 0x66106eaf +sound/isa/sb/snd-sb-common snd_sbdsp_reset 0x848f94b3 +sound/isa/sb/snd-sb-common snd_sbmixer_add_ctl 0xd88e5191 +sound/isa/sb/snd-sb-common snd_sbmixer_new 0x4f36ccff +sound/isa/sb/snd-sb-common snd_sbmixer_read 0xaa33f073 +sound/isa/sb/snd-sb-common snd_sbmixer_write 0xfad208c5 +sound/oss/ac97_codec ac97_alloc_codec 0xa5567a6a +sound/oss/ac97_codec ac97_probe_codec 0x07581ca0 +sound/oss/ac97_codec ac97_read_proc 0xbae4da72 +sound/oss/ac97_codec ac97_register_driver 0x681c9f5d +sound/oss/ac97_codec ac97_release_codec 0x6497a931 +sound/oss/ac97_codec ac97_restore_state 0x449096c1 +sound/oss/ac97_codec ac97_save_state 0x2604cabc +sound/oss/ac97_codec ac97_set_adc_rate 0xfc96dcda +sound/oss/ac97_codec ac97_set_dac_rate 0x6b92d4c8 +sound/oss/ac97_codec ac97_tune_hardware 0x0787d732 +sound/oss/ac97_codec ac97_unregister_driver 0x3771c065 +sound/oss/aci aci_port 0x0d82adb6 +sound/oss/aci aci_rw_cmd 0xcc7c4cd8 +sound/oss/aci aci_version 0x93350c87 +sound/oss/ad1848 ad1848_control 0xc04f6f67 +sound/oss/ad1848 ad1848_detect 0x845a1638 +sound/oss/ad1848 ad1848_init 0x12be3868 +sound/oss/ad1848 ad1848_unload 0x9bf1cc62 +sound/oss/ad1848 adintr 0xf8832770 +sound/oss/ad1848 attach_ms_sound 0x3d9f37b4 +sound/oss/ad1848 probe_ms_sound 0x65e6d1ca +sound/oss/ad1848 unload_ms_sound 0xb29a9148 +sound/oss/mpu401 attach_mpu401 0xac89dda7 +sound/oss/mpu401 intchk_mpu401 0x5fe6dd42 +sound/oss/mpu401 mpuintr 0x871374e3 +sound/oss/mpu401 probe_mpu401 0x5c8d3e32 +sound/oss/mpu401 unload_mpu401 0x5febf284 +sound/oss/opl3 opl3_detect 0x67481767 +sound/oss/opl3 opl3_init 0x3a57a5ed +sound/oss/sb_lib probe_sbmpu 0x6b1e85e1 +sound/oss/sb_lib sb_be_quiet 0x42424109 +sound/oss/sb_lib sb_dsp_detect 0xd8a2731c +sound/oss/sb_lib sb_dsp_init 0x6f508924 +sound/oss/sb_lib sb_dsp_unload 0xc4884969 +sound/oss/sb_lib smw_free 0x450f9aea +sound/oss/sb_lib unload_sbmpu 0x74afd69c +sound/oss/sound DMAbuf_close_dma 0xc88b42ab +sound/oss/sound DMAbuf_inputintr 0xeb315d99 +sound/oss/sound DMAbuf_open_dma 0x06b3013d +sound/oss/sound DMAbuf_outputintr 0x987bcf12 +sound/oss/sound DMAbuf_start_dma 0xe056b71c +sound/oss/sound MIDIbuf_avail 0x1f395686 +sound/oss/sound audio_devs 0x58bca2c2 +sound/oss/sound cent_tuning 0x03ce7ff7 +sound/oss/sound compute_finetune 0x04c87ec8 +sound/oss/sound conf_printf 0x0f280035 +sound/oss/sound conf_printf2 0x7bdf0907 +sound/oss/sound do_midi_msg 0xb51587f6 +sound/oss/sound load_mixer_volumes 0xa1d5f04f +sound/oss/sound midi_devs 0x7b61573f +sound/oss/sound midi_synth_aftertouch 0xf1ea8a20 +sound/oss/sound midi_synth_bender 0xba7dd041 +sound/oss/sound midi_synth_close 0xad45df73 +sound/oss/sound midi_synth_controller 0x892093e0 +sound/oss/sound midi_synth_hw_control 0xb14b22cd +sound/oss/sound midi_synth_ioctl 0xaef743b2 +sound/oss/sound midi_synth_kill_note 0x2aa31695 +sound/oss/sound midi_synth_load_patch 0xf7426da3 +sound/oss/sound midi_synth_open 0xf6b3a2fb +sound/oss/sound midi_synth_panning 0xdb400afa +sound/oss/sound midi_synth_reset 0x56504ca2 +sound/oss/sound midi_synth_send_sysex 0xfddcbfb3 +sound/oss/sound midi_synth_set_instr 0xd85be938 +sound/oss/sound midi_synth_setup_voice 0x4ff47e9d +sound/oss/sound midi_synth_start_note 0x9bdaf24d +sound/oss/sound mixer_devs 0x48f5dad6 +sound/oss/sound note_to_freq 0x5d986fc9 +sound/oss/sound num_audiodevs 0x4cd01bdd +sound/oss/sound num_midis 0xa1eae7cf +sound/oss/sound num_mixers 0x9d845b18 +sound/oss/sound semitone_tuning 0x8b84aeb1 +sound/oss/sound seq_copy_to_input 0x7679ee76 +sound/oss/sound seq_input_event 0x17ba231d +sound/oss/sound sequencer_init 0xf78f6363 +sound/oss/sound sequencer_timer 0x90bd9714 +sound/oss/sound sound_alloc_dma 0x9a95733f +sound/oss/sound sound_alloc_mididev 0xba413f87 +sound/oss/sound sound_alloc_mixerdev 0x1b3df3cf +sound/oss/sound sound_alloc_synthdev 0xc748d109 +sound/oss/sound sound_alloc_timerdev 0x51e354b2 +sound/oss/sound sound_close_dma 0x418f5fbe +sound/oss/sound sound_free_dma 0x394cb088 +sound/oss/sound sound_install_audiodrv 0x95dca041 +sound/oss/sound sound_install_mixer 0x3a4cbe68 +sound/oss/sound sound_open_dma 0xcc4b8797 +sound/oss/sound sound_timer_devs 0x6b5265aa +sound/oss/sound sound_timer_init 0x2161d5e8 +sound/oss/sound sound_timer_interrupt 0xe2675a79 +sound/oss/sound sound_timer_syncinterval 0xfa6871be +sound/oss/sound sound_unload_audiodev 0xa948751e +sound/oss/sound sound_unload_mididev 0xa6bb414c +sound/oss/sound sound_unload_mixerdev 0xa51c913b +sound/oss/sound sound_unload_synthdev 0x06339815 +sound/oss/sound sound_unload_timerdev 0xa41ead5f +sound/oss/sound synth_devs 0xec19d0de +sound/oss/uart401 probe_uart401 0xaf54b923 +sound/oss/uart401 uart401intr 0x8a87560a +sound/oss/uart401 unload_uart401 0xecfdd9c9 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0xb7bdc15c +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0xe91f839a +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0xf21036d0 +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0x65a764f2 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0x48f6afdf +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x3c897677 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0xd062fbda +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0x48dedd32 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0x450b697f +sound/pci/ac97/snd-ac97-codec snd_ac97_resume 0x58ac22b7 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0x71fdc003 +sound/pci/ac97/snd-ac97-codec snd_ac97_suspend 0x440f34d1 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x5a089c44 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0x2b7a5c57 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0x549b9e0f +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0x1a73aaf0 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0x4b802229 +sound/pci/ac97/snd-ak4531-codec snd_ak4531_mixer 0x9278a0e5 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_memblk_map 0x698a5460 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_read 0x43af4584 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_ptr_write 0xb852fb9b +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_alloc 0x92fe476c +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_bzero 0xd319d1f6 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_copy_from_user 0x5d50e59f +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_synth_free 0xcf56c7b5 +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_alloc 0x81b1b16f +sound/pci/emu10k1/snd-emu10k1 snd_emu10k1_voice_free 0x854802cc +sound/pci/hda/snd-hda-codec snd_hda_build_controls 0xb7567de2 +sound/pci/hda/snd-hda-codec snd_hda_build_pcms 0xc488d0d1 +sound/pci/hda/snd-hda-codec snd_hda_bus_new 0x2984b8ec +sound/pci/hda/snd-hda-codec snd_hda_calc_stream_format 0xc34a54c6 +sound/pci/hda/snd-hda-codec snd_hda_codec_new 0x8fadb947 +sound/pci/hda/snd-hda-codec snd_hda_codec_read 0xfc4416ee +sound/pci/hda/snd-hda-codec snd_hda_codec_setup_stream 0xb257adad +sound/pci/hda/snd-hda-codec snd_hda_codec_write 0xba52a573 +sound/pci/hda/snd-hda-codec snd_hda_get_sub_nodes 0x7df42412 +sound/pci/hda/snd-hda-codec snd_hda_queue_unsol_event 0x99a3a8a7 +sound/pci/hda/snd-hda-codec snd_hda_resume 0x9330143b +sound/pci/hda/snd-hda-codec snd_hda_sequence_write 0x6f4856db +sound/pci/hda/snd-hda-codec snd_hda_suspend 0x98c9a5d2 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_build_controls 0x44f57bdc +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_free 0xb8108183 +sound/pci/ice1712/snd-ice17xx-ak4xxx snd_ice1712_akm4xxx_init 0x85955405 +sound/pci/trident/snd-trident snd_trident_alloc_voice 0xba351ae2 +sound/pci/trident/snd-trident snd_trident_free_voice 0x57e3b0be +sound/pci/trident/snd-trident snd_trident_start_voice 0xa528dec6 +sound/pci/trident/snd-trident snd_trident_stop_voice 0xd88b5a89 +sound/pci/trident/snd-trident snd_trident_synth_alloc 0x94525653 +sound/pci/trident/snd-trident snd_trident_synth_copy_from_user 0xd89fc652 +sound/pci/trident/snd-trident snd_trident_synth_free 0x5a6e8c8f +sound/pci/trident/snd-trident snd_trident_write_voice_regs 0x8f7b6955 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0x34fc7228 +sound/soundcore register_sound_midi 0xc4c1c3d3 +sound/soundcore register_sound_mixer 0x9afc955c +sound/soundcore register_sound_special 0x537c9dd0 +sound/soundcore register_sound_special_device 0xd5023d39 +sound/soundcore register_sound_synth 0x8c81c92a +sound/soundcore sound_class 0x9ffc8c3a +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +sound/synth/emux/snd-emux-synth snd_emux_free 0xb002c6c2 +sound/synth/emux/snd-emux-synth snd_emux_lock_voice 0xc9e344c6 +sound/synth/emux/snd-emux-synth snd_emux_new 0x0b66ef6c +sound/synth/emux/snd-emux-synth snd_emux_register 0x7d295424 +sound/synth/emux/snd-emux-synth snd_emux_terminate_all 0x84bcc635 +sound/synth/emux/snd-emux-synth snd_emux_unlock_voice 0x5139776c +sound/synth/emux/snd-emux-synth snd_sf_linear_to_log 0x655cb202 +sound/synth/snd-util-mem __snd_util_mem_alloc 0xd3c1adac +sound/synth/snd-util-mem __snd_util_mem_free 0x1fd6c8dc +sound/synth/snd-util-mem __snd_util_memblk_new 0x6b442bbf +sound/synth/snd-util-mem snd_util_mem_alloc 0xb13b09a0 +sound/synth/snd-util-mem snd_util_mem_avail 0xc6d9c71f +sound/synth/snd-util-mem snd_util_mem_free 0xea2de30c +sound/synth/snd-util-mem snd_util_memhdr_free 0x7ad0c23d +sound/synth/snd-util-mem snd_util_memhdr_new 0x0c5322df +sound/usb/snd-usb-lib snd_usb_create_midi_interface 0xa1325725 +sound/usb/snd-usb-lib snd_usbmidi_disconnect 0xd9d2bb03 +sound/usb/snd-usb-lib snd_usbmidi_input_start 0x16756dc0 +sound/usb/snd-usb-lib snd_usbmidi_input_stop 0x63343b1d +vmlinux I_BDEV 0xbc7415fb +vmlinux SELECT_DRIVE 0x4ce2a6ac +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0xf37ff3e6 +vmlinux __alloc_pages 0x5e2a02ac +vmlinux __alloc_percpu 0x55f2580b +vmlinux __alloc_skb 0xb18f7d94 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0xfb6621cb +vmlinux __bio_clone 0x3a145bb5 +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0x3560ce14 +vmlinux __bread 0xd62da816 +vmlinux __breadahead 0xf8fc40b5 +vmlinux __break_lease 0x68a609e8 +vmlinux __brelse 0x7482b778 +vmlinux __builtin_strlen 0xe3ed7844 +vmlinux __check_region 0xf1d0cdab +vmlinux __clear_user 0xf3341268 +vmlinux __const_udelay 0xeae3dfd6 +vmlinux __cpufreq_driver_target 0xd59b64a8 +vmlinux __create_workqueue 0xbb1b1fce +vmlinux __d_path 0x690535d9 +vmlinux __delay 0x466c14a7 +vmlinux __dev_get_by_index 0x50ef9ed9 +vmlinux __dev_get_by_name 0x7e351707 +vmlinux __dev_remove_pack 0x11091648 +vmlinux __down_failed 0x7a7ef853 +vmlinux __down_failed_interruptible 0xccd52b12 +vmlinux __down_failed_trylock 0xe9a60ad6 +vmlinux __down_read 0x8df63884 +vmlinux __down_read_trylock 0x7bfad8b0 +vmlinux __down_write 0x0d4c5812 +vmlinux __down_write_trylock 0x3810bd1a +vmlinux __downgrade_write 0x158c90d5 +vmlinux __dst_free 0x51892955 +vmlinux __elv_add_request 0x3c880e99 +vmlinux __find_get_block 0x7a6fe1a1 +vmlinux __free_pages 0x0f419a27 +vmlinux __generic_file_aio_read 0xabce6318 +vmlinux __generic_unplug_device 0xa30bea03 +vmlinux __get_free_pages 0x93fca811 +vmlinux __get_user_1 0x167e7f9d +vmlinux __get_user_2 0x8f9c199c +vmlinux __get_user_4 0x6729d3df +vmlinux __get_user_8 0x6d334118 +vmlinux __getblk 0x423d845a +vmlinux __ide_abort 0xadad3164 +vmlinux __ide_dma_bad_drive 0x5b27174c +vmlinux __ide_dma_check 0x32b1a4bd +vmlinux __ide_dma_end 0xf26ea620 +vmlinux __ide_dma_good_drive 0x897898a6 +vmlinux __ide_dma_host_off 0x0656fdef +vmlinux __ide_dma_host_on 0x196a91b8 +vmlinux __ide_dma_lostirq 0xf37a21a2 +vmlinux __ide_dma_off 0xe716fa1a +vmlinux __ide_dma_off_quietly 0xd718074a +vmlinux __ide_dma_on 0x57f57cf3 +vmlinux __ide_dma_timeout 0xe71d3afe +vmlinux __ide_end_request 0x124bdce4 +vmlinux __ide_error 0xa693a65c +vmlinux __ide_pci_register_driver 0x67e2f276 +vmlinux __inet_lookup_listener 0xb007af7e +vmlinux __inet_twsk_hashdance 0x6fabb3bf +vmlinux __inet_twsk_kill 0x72b3dbb7 +vmlinux __init_timer_base 0xfcafa2e2 +vmlinux __inode_dir_notify 0x4a43cd60 +vmlinux __insert_inode_hash 0x7b9bc102 +vmlinux __invalidate_device 0xbd094481 +vmlinux __ioremap 0x9eac042a +vmlinux __ip_route_output_key 0xd4f56136 +vmlinux __ip_select_ident 0xea3c6f98 +vmlinux __kfifo_get 0x69a6b354 +vmlinux __kfifo_put 0xd68d028d +vmlinux __kfree_skb 0x7b9bf4d0 +vmlinux __kill_fasync 0x7526b4e8 +vmlinux __kmalloc 0x5a34a45c +vmlinux __lock_buffer 0x5ce5041c +vmlinux __lock_page 0x1e824ee3 +vmlinux __mark_inode_dirty 0x4c33ae14 +vmlinux __memcpy 0xc16fe12d +vmlinux __memcpy_fromio 0xf666cbb3 +vmlinux __memcpy_toio 0x5252f304 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xb0edb54a +vmlinux __module_put_and_exit 0x5ae3432e +vmlinux __ndelay 0xdf8c695a +vmlinux __neigh_event_send 0x4f1676a9 +vmlinux __neigh_for_each_release 0x12a52653 +vmlinux __net_timestamp 0x264bffdb +vmlinux __netdev_watchdog_up 0xbca934d0 +vmlinux __nla_put 0x5643f4b4 +vmlinux __nla_reserve 0x46cbcbc5 +vmlinux __page_cache_release 0x0fff14cd +vmlinux __pagevec_lru_add 0xf838e1ae +vmlinux __pagevec_release 0x9b2ebd1f +vmlinux __pci_register_driver 0x625b687b +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0x7233f6e2 +vmlinux __put_user_1 0xc3aaf0a9 +vmlinux __put_user_2 0x5a4896a8 +vmlinux __put_user_4 0xb2fd5ceb +vmlinux __put_user_8 0xb8e7ce2c +vmlinux __read_lock_failed 0xa1bf4e7d +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0xa2e04b4a +vmlinux __scm_destroy 0x7b2f8164 +vmlinux __scm_send 0xebc30e05 +vmlinux __secpath_destroy 0x16e19be4 +vmlinux __serio_register_driver 0x8a7a01e2 +vmlinux __serio_register_port 0xb4a621c7 +vmlinux __serio_unregister_port_delayed 0x098e207d +vmlinux __set_page_dirty_buffers 0x3fdde200 +vmlinux __set_page_dirty_nobuffers 0xc6543f3b +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x8820cbb4 +vmlinux __skb_checksum_complete 0x85f82a47 +vmlinux __skb_linearize 0x9ab24012 +vmlinux __strncpy_from_user 0xc003c637 +vmlinux __supported_pte_mask 0xfb3a28c3 +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x267fc65b +vmlinux __tasklet_schedule 0xf397b9aa +vmlinux __tcf_em_tree_match 0x5fca51e5 +vmlinux __udelay 0x9e7d6bd0 +vmlinux __up_read 0x6f4da02b +vmlinux __up_wakeup 0x1042cbb5 +vmlinux __up_write 0x4bc75df3 +vmlinux __user_walk 0x9e6012d2 +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0x7cb5e9a9 +vmlinux __wait_on_bit_lock 0xa396c2b5 +vmlinux __wait_on_buffer 0x9aaa2f18 +vmlinux __wake_up 0xb505bbf8 +vmlinux __wake_up_bit 0xd2d4e0b6 +vmlinux __wake_up_sync 0xe72be616 +vmlinux __write_lock_failed 0xc8a0c38e +vmlinux __xfrm_policy_check 0xcd60a82d +vmlinux __xfrm_policy_destroy 0xca450a4a +vmlinux __xfrm_route_forward 0x51545ad0 +vmlinux __xfrm_state_destroy 0x3d7aa4f6 +vmlinux _atomic_dec_and_lock 0x9f334253 +vmlinux _ctype 0x8d3894f2 +vmlinux _read_lock 0xce0f1efc +vmlinux _read_lock_bh 0x8ddd843c +vmlinux _read_lock_irq 0x48bf8541 +vmlinux _read_lock_irqsave 0x323ea127 +vmlinux _read_trylock 0x379d8c2c +vmlinux _read_unlock 0xf890c5b2 +vmlinux _read_unlock_bh 0xf5a5b6c1 +vmlinux _read_unlock_irq 0x8bcb73d2 +vmlinux _read_unlock_irqrestore 0x16df1f51 +vmlinux _spin_lock 0x65d4de80 +vmlinux _spin_lock_bh 0x690e213d +vmlinux _spin_lock_irq 0x2a081302 +vmlinux _spin_lock_irqsave 0x1099d3f4 +vmlinux _spin_trylock 0xa2ea55a2 +vmlinux _spin_trylock_bh 0x4bd1ef5f +vmlinux _spin_unlock 0x25f3fbb2 +vmlinux _spin_unlock_bh 0x0318750f +vmlinux _spin_unlock_irq 0xe2b554d6 +vmlinux _spin_unlock_irqrestore 0x7601ed74 +vmlinux _write_lock 0x531415e6 +vmlinux _write_lock_bh 0xf5fdb220 +vmlinux _write_lock_irq 0x5cc6f938 +vmlinux _write_lock_irqsave 0x106d3d0a +vmlinux _write_trylock 0xeafca145 +vmlinux _write_unlock 0xdf6f7bfa +vmlinux _write_unlock_bh 0xdc680625 +vmlinux _write_unlock_irq 0x2c859803 +vmlinux _write_unlock_irqrestore 0xb8e0d4e7 +vmlinux acpi_acquire_global_lock 0x70d8ab82 +vmlinux acpi_bus_add 0x000ca7af +vmlinux acpi_bus_generate_event 0x435ac3c9 +vmlinux acpi_bus_get_device 0xb8578835 +vmlinux acpi_bus_get_power 0x7389c9a8 +vmlinux acpi_bus_get_status 0x99e48a3d +vmlinux acpi_bus_receive_event 0x141dbf9b +vmlinux acpi_bus_register_driver 0x289a3020 +vmlinux acpi_bus_set_power 0xcb733bf2 +vmlinux acpi_bus_start 0xf0073959 +vmlinux acpi_bus_unregister_driver 0x01f3929b +vmlinux acpi_clear_event 0x0fd00a68 +vmlinux acpi_dbg_layer 0xb3284531 +vmlinux acpi_dbg_level 0xca8acc78 +vmlinux acpi_disable_event 0xb758b225 +vmlinux acpi_disabled 0x1a45cb6c +vmlinux acpi_ec_read 0x50a0e15a +vmlinux acpi_ec_write 0x7ff7a286 +vmlinux acpi_enable_event 0x6237f6b5 +vmlinux acpi_enable_gpe 0xf47d47e0 +vmlinux acpi_enter_sleep_state 0xfe047ce6 +vmlinux acpi_enter_sleep_state_s4bios 0x20092385 +vmlinux acpi_evaluate_integer 0xc598bf3e +vmlinux acpi_evaluate_object 0x1d146440 +vmlinux acpi_evaluate_reference 0x9044cb34 +vmlinux acpi_extract_package 0xd041334b +vmlinux acpi_fadt 0xddcb58d9 +vmlinux acpi_fadt_is_v1 0x01438985 +vmlinux acpi_get_child 0xda268faa +vmlinux acpi_get_current_resources 0x967c2a85 +vmlinux acpi_get_devices 0xee46feef +vmlinux acpi_get_firmware_table 0x5331e1b5 +vmlinux acpi_get_handle 0x2bfeb410 +vmlinux acpi_get_name 0x08c4f629 +vmlinux acpi_get_next_object 0x170c25ee +vmlinux acpi_get_object_info 0x797435d0 +vmlinux acpi_get_parent 0xfb0443fb +vmlinux acpi_get_pci_id 0x058c75d9 +vmlinux acpi_get_pci_rootbridge_handle 0x1f8ec1b3 +vmlinux acpi_get_physical_device 0xbd1fd851 +vmlinux acpi_get_register 0x2b5d6f73 +vmlinux acpi_get_sleep_type_data 0x8d8d96c6 +vmlinux acpi_get_table 0x3b289c5b +vmlinux acpi_get_type 0x0d3dda14 +vmlinux acpi_in_suspend 0xf78a658e +vmlinux acpi_install_address_space_handler 0xff03752f +vmlinux acpi_install_fixed_event_handler 0x5ac376a5 +vmlinux acpi_install_gpe_block 0xda8ddbdf +vmlinux acpi_install_gpe_handler 0x02aff2f4 +vmlinux acpi_install_notify_handler 0xd9091363 +vmlinux acpi_map_lsapic 0xda0a6b0e +vmlinux acpi_os_create_semaphore 0x9f8733e2 +vmlinux acpi_os_delete_semaphore 0xe65a005c +vmlinux acpi_os_free 0x43b9bbb4 +vmlinux acpi_os_printf 0x667cecc9 +vmlinux acpi_os_queue_for_execution 0xdb9d67ff +vmlinux acpi_os_read_pci_configuration 0xd94c1770 +vmlinux acpi_os_read_port 0xbdaf5b07 +vmlinux acpi_os_signal 0x874aea72 +vmlinux acpi_os_signal_semaphore 0x8cdbc08d +vmlinux acpi_os_sleep 0x540f9040 +vmlinux acpi_os_stall 0x69005013 +vmlinux acpi_os_wait_events_complete 0xc9ab2eef +vmlinux acpi_os_wait_semaphore 0x2565a159 +vmlinux acpi_os_write_port 0x7d94f746 +vmlinux acpi_pci_irq_enable 0xa2bd9fe4 +vmlinux acpi_pci_register_driver 0xd1472061 +vmlinux acpi_pci_unregister_driver 0x43385ad9 +vmlinux acpi_register_gsi 0x36d5355b +vmlinux acpi_register_ioapic 0x636a5691 +vmlinux acpi_release_global_lock 0x3e2ae3a8 +vmlinux acpi_remove_address_space_handler 0xfcfaa928 +vmlinux acpi_remove_fixed_event_handler 0x2005e68a +vmlinux acpi_remove_gpe_block 0x8e002cda +vmlinux acpi_remove_gpe_handler 0xb07dfb3d +vmlinux acpi_remove_notify_handler 0x2bb55d6e +vmlinux acpi_resource_to_address64 0x263b54cc +vmlinux acpi_root_dir 0x1497c67a +vmlinux acpi_set_current_resources 0xdc24d101 +vmlinux acpi_set_gpe_type 0xa3bbcd80 +vmlinux acpi_set_register 0x4a9d86e3 +vmlinux acpi_specific_hotkey_enabled 0x46621493 +vmlinux acpi_strict 0xa59c0666 +vmlinux acpi_unmap_lsapic 0xd18b6eb2 +vmlinux acpi_unregister_ioapic 0xe716baed +vmlinux acpi_walk_namespace 0x19d5d20a +vmlinux acpi_walk_resources 0x375c5115 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0xd5f1b7df +vmlinux add_disk_randomness 0x92929aea +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0xb2a9db5b +vmlinux add_wait_queue 0x4dbc2aea +vmlinux add_wait_queue_exclusive 0x3258cc21 +vmlinux adjust_resource 0xfd05bd8a +vmlinux agp3_generic_cleanup 0xc2424641 +vmlinux agp3_generic_configure 0x4b085dbf +vmlinux agp3_generic_fetch_size 0xde9b17ed +vmlinux agp3_generic_sizes 0x546264cf +vmlinux agp3_generic_tlbflush 0x8fc23972 +vmlinux agp_add_bridge 0xcfef6124 +vmlinux agp_alloc_bridge 0x72ab829a +vmlinux agp_allocate_memory 0x741e3f73 +vmlinux agp_backend_acquire 0xdb85c41f +vmlinux agp_backend_release 0x55e3a263 +vmlinux agp_bind_memory 0x7f5acb55 +vmlinux agp_bridge 0x8c681606 +vmlinux agp_bridges 0x673f815e +vmlinux agp_collect_device_status 0xe3f86276 +vmlinux agp_copy_info 0xc0541d87 +vmlinux agp_create_memory 0x6f6bb66a +vmlinux agp_device_command 0xe6d5c272 +vmlinux agp_enable 0x2befa643 +vmlinux agp_find_bridge 0x00a7765e +vmlinux agp_free_key 0xd0fef3b2 +vmlinux agp_free_memory 0x18c997f3 +vmlinux agp_generic_alloc_by_type 0x60d14191 +vmlinux agp_generic_alloc_page 0x0822e49f +vmlinux agp_generic_create_gatt_table 0x64d12485 +vmlinux agp_generic_destroy_page 0xbba27749 +vmlinux agp_generic_enable 0x1c092d7a +vmlinux agp_generic_free_by_type 0xb832d59a +vmlinux agp_generic_free_gatt_table 0xf7e1ac38 +vmlinux agp_generic_insert_memory 0xbc44585f +vmlinux agp_generic_mask_memory 0x21a87bcd +vmlinux agp_generic_remove_memory 0x4511e92e +vmlinux agp_memory_reserved 0xe089cfcc +vmlinux agp_num_entries 0xd6feefa5 +vmlinux agp_off 0x7538b132 +vmlinux agp_put_bridge 0x43b89855 +vmlinux agp_remove_bridge 0x48fbdf23 +vmlinux agp_try_unsupported_boot 0xc5d9c46c +vmlinux agp_unbind_memory 0xb8feebad +vmlinux aio_complete 0x73838bdb +vmlinux aio_put_req 0x48556f8d +vmlinux alloc_buffer_head 0x0ef77225 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0xd4a5e280 +vmlinux alloc_disk_node 0xcdbc635d +vmlinux alloc_etherdev 0xf940b1cf +vmlinux alloc_fcdev 0xad029819 +vmlinux alloc_fddidev 0xdcaec2a2 +vmlinux alloc_hippi_dev 0x26ed2005 +vmlinux alloc_netdev 0xa9d7650a +vmlinux alloc_page_buffers 0xcce79890 +vmlinux alloc_trdev 0x434f1f87 +vmlinux alloc_tty_driver 0x3f72a8e2 +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0xbfde5830 +vmlinux anon_transport_class_unregister 0x6001b267 +vmlinux arch_acpi_processor_init_pdc 0x576df302 +vmlinux arch_register_cpu 0x2dd16564 +vmlinux arch_unregister_cpu 0x0237b57a +vmlinux arp_broken_ops 0x11803df6 +vmlinux arp_create 0xf842615e +vmlinux arp_find 0xcbdc0357 +vmlinux arp_rcv 0x01b9b1e0 +vmlinux arp_send 0x60096215 +vmlinux arp_tbl 0xf3dfaa52 +vmlinux arp_xmit 0x0670e195 +vmlinux atm_alloc_charge 0x5dfda859 +vmlinux atm_charge 0xd6c93f86 +vmlinux atm_dev_deregister 0x34a5bafc +vmlinux atm_dev_lookup 0x0ec6a853 +vmlinux atm_dev_register 0xfbfd7641 +vmlinux atm_init_aal5 0xc7fbe6f1 +vmlinux atm_pcr_goal 0xf49bc67a +vmlinux atm_proc_root 0x197f12b8 +vmlinux attribute_container_add_attrs 0x4f7f7544 +vmlinux attribute_container_add_class_device 0x964475a5 +vmlinux attribute_container_add_class_device_adapter 0xbcc05b6f +vmlinux attribute_container_class_device_del 0xc210c8bc +vmlinux attribute_container_classdev_to_container 0xf6638d65 +vmlinux attribute_container_device_trigger 0xffbb45e9 +vmlinux attribute_container_find_class_device 0xdc56f559 +vmlinux attribute_container_register 0x83640b5c +vmlinux attribute_container_remove_attrs 0x7e6277c8 +vmlinux attribute_container_remove_device 0xd310733e +vmlinux attribute_container_trigger 0x5115f2bb +vmlinux attribute_container_unregister 0xee6614df +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux bad_dma_address 0x1675606f +vmlinux balance_dirty_pages_ratelimited 0x5cf10a6c +vmlinux bd_claim 0xa7003306 +vmlinux bd_release 0x9d4ff47e +vmlinux bd_set_size 0xc00a4985 +vmlinux bdev_read_only 0x80fba546 +vmlinux bdevname 0x0b693788 +vmlinux bdget 0x417a5ef8 +vmlinux bdput 0xb49101c5 +vmlinux bfifo_qdisc_ops 0x36eaef53 +vmlinux bio_add_page 0x8700cde5 +vmlinux bio_alloc 0x90314ad7 +vmlinux bio_alloc_bioset 0x733018b8 +vmlinux bio_clone 0x9069a29d +vmlinux bio_copy_user 0x2aca90dd +vmlinux bio_endio 0x92c9e6b9 +vmlinux bio_free 0xa21e8f0f +vmlinux bio_get_nr_vecs 0xda9bae01 +vmlinux bio_hw_segments 0x7ccb3b5c +vmlinux bio_init 0x4661bd53 +vmlinux bio_map_kern 0x08abd511 +vmlinux bio_map_user 0x1088ecf4 +vmlinux bio_pair_release 0x3949497c +vmlinux bio_phys_segments 0x37ab77be +vmlinux bio_put 0xb3cb81ab +vmlinux bio_split 0xc3a46139 +vmlinux bio_split_pool 0x44722aee +vmlinux bio_uncopy_user 0x566b7fbf +vmlinux bio_unmap_user 0x7223b2e7 +vmlinux bioset_create 0xb9b704ad +vmlinux bioset_free 0x2f2c32e4 +vmlinux bit_waitqueue 0x6d89d0e3 +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0xf1d7b384 +vmlinux blk_alloc_queue_node 0x0c2133a6 +vmlinux blk_cleanup_queue 0xcce85856 +vmlinux blk_complete_barrier_rq 0x37b377e8 +vmlinux blk_complete_barrier_rq_locked 0x73f1017d +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x7353f818 +vmlinux blk_end_sync_rq 0x6c14f8eb +vmlinux blk_execute_rq 0xb95596b3 +vmlinux blk_get_backing_dev_info 0x82776764 +vmlinux blk_get_queue 0x4c054f64 +vmlinux blk_get_request 0x71f6df2c +vmlinux blk_init_queue 0xfbc941dd +vmlinux blk_init_queue_node 0x6758a56a +vmlinux blk_insert_request 0x2830f15a +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0xec71c457 +vmlinux blk_put_request 0xa224f206 +vmlinux blk_queue_activity_fn 0xcb831ffb +vmlinux blk_queue_bounce 0x628d7917 +vmlinux blk_queue_bounce_limit 0x20483259 +vmlinux blk_queue_dma_alignment 0xbe949786 +vmlinux blk_queue_end_tag 0xf7c788fd +vmlinux blk_queue_find_tag 0x873fe461 +vmlinux blk_queue_free_tags 0x7f5db260 +vmlinux blk_queue_hardsect_size 0x3b480831 +vmlinux blk_queue_init_tags 0x781f4fc1 +vmlinux blk_queue_invalidate_tags 0x80cdc7cb +vmlinux blk_queue_issue_flush_fn 0x5068a400 +vmlinux blk_queue_make_request 0xaf0f06d2 +vmlinux blk_queue_max_hw_segments 0x9327f97c +vmlinux blk_queue_max_phys_segments 0x63381733 +vmlinux blk_queue_max_sectors 0x70941e1e +vmlinux blk_queue_max_segment_size 0xe4ed942b +vmlinux blk_queue_merge_bvec 0x9ec4a613 +vmlinux blk_queue_ordered 0x9eb9c142 +vmlinux blk_queue_prep_rq 0x74dbcfb5 +vmlinux blk_queue_resize_tags 0x06869cb0 +vmlinux blk_queue_segment_boundary 0x4cf99cbb +vmlinux blk_queue_stack_limits 0xc8716f3f +vmlinux blk_queue_start_tag 0xba12a059 +vmlinux blk_register_region 0x5ac03026 +vmlinux blk_remove_plug 0x42a6b3c0 +vmlinux blk_requeue_request 0x69e9eb50 +vmlinux blk_rq_bio_prep 0x86cb8f73 +vmlinux blk_rq_map_kern 0x10822bd5 +vmlinux blk_rq_map_sg 0xea44df4c +vmlinux blk_rq_map_user 0x25625069 +vmlinux blk_rq_map_user_iov 0x6fbb32b1 +vmlinux blk_rq_unmap_user 0x2862dcf1 +vmlinux blk_run_queue 0xc1a6576f +vmlinux blk_start_queue 0x7c43f3df +vmlinux blk_stop_queue 0xd8218b46 +vmlinux blk_sync_queue 0xe04bd49d +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0xcd81a49f +vmlinux blkdev_ioctl 0xc81e5dfe +vmlinux blkdev_issue_flush 0x3b0aef86 +vmlinux blkdev_put 0xb6389379 +vmlinux block_all_signals 0x4edd72f7 +vmlinux block_commit_write 0x627c7d05 +vmlinux block_invalidatepage 0x9830933c +vmlinux block_prepare_write 0x311e870d +vmlinux block_read_full_page 0x86d6e107 +vmlinux block_sync_page 0x9194e4b8 +vmlinux block_truncate_page 0x4910bda0 +vmlinux block_write_full_page 0x916cdbcb +vmlinux bmap 0xb93b0d23 +vmlinux boot_cpu_data 0x0f47f5b5 +vmlinux boot_option_idle_override 0xef9aedfc +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0x086e1c98 +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0x0be31f9a +vmlinux bus_create_file 0x83949c53 +vmlinux bus_find_device 0xc73164cf +vmlinux bus_for_each_dev 0xceebb554 +vmlinux bus_for_each_drv 0x79ca659e +vmlinux bus_register 0xbacfd3cb +vmlinux bus_remove_device 0x5bd3dff7 +vmlinux bus_remove_file 0x7135182c +vmlinux bus_rescan_devices 0x6fcf6888 +vmlinux bus_unregister 0xfb4530d6 +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x4d5b49eb +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x7255ab75 +vmlinux cap_bset 0x59ab4080 +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x10d1854b +vmlinux cdev_alloc 0x4dd93f51 +vmlinux cdev_del 0xfd0d8471 +vmlinux cdev_init 0x0aacd4fe +vmlinux change_page_attr 0x08d5c89b +vmlinux check_disk_change 0xdcc46998 +vmlinux class_create 0xc5a19646 +vmlinux class_create_file 0xa34d3bdc +vmlinux class_destroy 0x92332ca4 +vmlinux class_device_add 0x1c68d718 +vmlinux class_device_create 0x1071958e +vmlinux class_device_create_bin_file 0x96ebfcfe +vmlinux class_device_create_file 0xda4a456d +vmlinux class_device_del 0x105840a8 +vmlinux class_device_destroy 0xf32581a7 +vmlinux class_device_get 0x69eb92b7 +vmlinux class_device_initialize 0x7fc80a16 +vmlinux class_device_put 0x38c1438c +vmlinux class_device_register 0xc8de953f +vmlinux class_device_remove_bin_file 0x25f0bf98 +vmlinux class_device_remove_file 0xf2bd473f +vmlinux class_device_unregister 0x9725adb5 +vmlinux class_get 0x03874c00 +vmlinux class_interface_register 0x2615e35d +vmlinux class_interface_unregister 0x6281779a +vmlinux class_put 0xa5113fb3 +vmlinux class_register 0xb6f99bda +vmlinux class_remove_file 0xbb9d5958 +vmlinux class_unregister 0xcb572107 +vmlinux clear_inode 0x7af64f87 +vmlinux clear_page 0x3d9ee9f0 +vmlinux clear_page_dirty_for_io 0x458a3caa +vmlinux clear_user 0x7aec9089 +vmlinux clip_tbl_hook 0x5060757b +vmlinux close_bdev_excl 0x0f58d4f3 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0xcaf5516c +vmlinux complete_all 0xef1bc982 +vmlinux complete_and_exit 0x0f167e68 +vmlinux compute_creds 0xa127d989 +vmlinux con_copy_unimap 0x68b45a65 +vmlinux con_set_default_unimap 0x933d3489 +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0x60fa99a7 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0x9107e6da +vmlinux console_stop 0x5bf7e413 +vmlinux cont_prepare_write 0xbd243ccc +vmlinux contig_page_data 0xa365de5b +vmlinux copy_from_user 0x945bc6a7 +vmlinux copy_fs_struct 0x7a2e34da +vmlinux copy_in_user 0xf116d4b5 +vmlinux copy_io_context 0x6df93675 +vmlinux copy_page 0x33b84f74 +vmlinux copy_strings_kernel 0xb2ea2c6e +vmlinux copy_to_user 0xbe499d81 +vmlinux copy_user_generic 0x21e5679c +vmlinux cpu_callout_map 0x215073d1 +vmlinux cpu_core_map 0xff0700b2 +vmlinux cpu_data 0x75de9530 +vmlinux cpu_idle_wait 0xb53ae573 +vmlinux cpu_khz 0xd6b33026 +vmlinux cpu_online_map 0x20267f8c +vmlinux cpu_pda 0xe123ad36 +vmlinux cpu_possible_map 0xd112f981 +vmlinux cpu_present_map 0x16b79c81 +vmlinux cpu_sibling_map 0x82ca1de2 +vmlinux cpu_sysdev_class 0xf97e432e +vmlinux cpufreq_cpu_get 0x5b06a606 +vmlinux cpufreq_cpu_put 0xe364cae6 +vmlinux cpufreq_driver_target 0xa1e22785 +vmlinux cpufreq_get 0x9305f8e6 +vmlinux cpufreq_get_policy 0x212c95b7 +vmlinux cpufreq_gov_performance 0xfe028ce7 +vmlinux cpufreq_governor 0xc2018172 +vmlinux cpufreq_notify_transition 0xe6488b47 +vmlinux cpufreq_parse_governor 0xfa88ca1c +vmlinux cpufreq_register_driver 0x05380ec3 +vmlinux cpufreq_register_governor 0x0c9a5699 +vmlinux cpufreq_register_notifier 0xadaa2657 +vmlinux cpufreq_set_policy 0xcbce3ab4 +vmlinux cpufreq_unregister_driver 0xfc696b1c +vmlinux cpufreq_unregister_governor 0x65437636 +vmlinux cpufreq_unregister_notifier 0x3b3016d3 +vmlinux cpufreq_update_policy 0x8664f62e +vmlinux crc32_be 0xc09651d9 +vmlinux crc32_le 0x92ea4ae4 +vmlinux create_empty_buffers 0x5bb81f4b +vmlinux create_proc_entry 0xc7add320 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0x69515073 +vmlinux crypto_free_tfm 0x5cfc3542 +vmlinux crypto_hmac 0x9c8798ef +vmlinux crypto_hmac_final 0x0b01b397 +vmlinux crypto_hmac_init 0xec153865 +vmlinux crypto_hmac_update 0x32db1e2e +vmlinux crypto_register_alg 0x573da94d +vmlinux crypto_unregister_alg 0x2f2fe73e +vmlinux csum_ipv6_magic 0xd79301a3 +vmlinux csum_partial 0xf1e29eae +vmlinux csum_partial_copy_from_user 0x7cf86690 +vmlinux csum_partial_copy_fromiovecend 0x883c8eca +vmlinux csum_partial_copy_nocheck 0xa2963be1 +vmlinux csum_partial_copy_to_user 0xeb7268d1 +vmlinux current_fs_time 0x89902473 +vmlinux current_io_context 0x5675affc +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0x95e2c77b +vmlinux d_alloc_anon 0x528b504a +vmlinux d_alloc_name 0x812ed277 +vmlinux d_alloc_root 0x645f766c +vmlinux d_delete 0x155c5560 +vmlinux d_find_alias 0x307e3aab +vmlinux d_genocide 0x1adef972 +vmlinux d_instantiate 0x654a6a41 +vmlinux d_instantiate_unique 0x641181d2 +vmlinux d_invalidate 0x2256e3db +vmlinux d_lookup 0xd3896c61 +vmlinux d_move 0xc3c6e805 +vmlinux d_path 0xe92b2121 +vmlinux d_prune_aliases 0x725872e6 +vmlinux d_rehash 0xeb5f93a2 +vmlinux d_splice_alias 0x54bd9f15 +vmlinux d_validate 0x5306581c +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0x9df278cc +vmlinux dcache_dir_close 0x32b03587 +vmlinux dcache_dir_lseek 0x0149a0ad +vmlinux dcache_dir_open 0x8f95ad82 +vmlinux dcache_lock 0x9c4fb5fb +vmlinux dcache_readdir 0xc3ef979e +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0x7679fb90 +vmlinux default_backing_dev_info 0xf9c1d178 +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0x4fe938d4 +vmlinux default_llseek 0xab62b3cd +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x3274e250 +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0x0f4f8f26 +vmlinux del_timer 0x9b1622fc +vmlinux del_timer_sync 0xcf58e6f3 +vmlinux dentry_open 0x92bd9453 +vmlinux dentry_unhash 0x4a9af93d +vmlinux dequeue_signal 0x81b4c383 +vmlinux deregister_atm_ioctl 0x0ca59b1b +vmlinux destroy_8023_client 0x97624077 +vmlinux destroy_EII_client 0x5e25b1fa +vmlinux destroy_workqueue 0xe2584a6a +vmlinux dev_add_pack 0xd6c2db12 +vmlinux dev_alloc_name 0x1d687f7c +vmlinux dev_base 0xd898dcdf +vmlinux dev_base_lock 0xcbc6fc20 +vmlinux dev_change_flags 0xc71b1fa0 +vmlinux dev_close 0xa45379a4 +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0xb06ece89 +vmlinux dev_get_by_index 0x1b4a8466 +vmlinux dev_get_by_name 0xd4bff989 +vmlinux dev_get_flags 0xa70fe7b6 +vmlinux dev_getbyhwaddr 0x28697317 +vmlinux dev_getfirstbyhwtype 0xa3de3f28 +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0x2a8e77e4 +vmlinux dev_mc_delete 0xdbcbcc58 +vmlinux dev_mc_upload 0x5643bf35 +vmlinux dev_open 0xbd768597 +vmlinux dev_queue_xmit 0x64ffcad1 +vmlinux dev_remove_pack 0xf71eac00 +vmlinux dev_set_allmulti 0x741ad50c +vmlinux dev_set_mac_address 0x65b8dcb2 +vmlinux dev_set_mtu 0x54f1cbe4 +vmlinux dev_set_promiscuity 0x60315052 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0xf5debbb5 +vmlinux device_attach 0x88f69532 +vmlinux device_bind_driver 0xd58b7178 +vmlinux device_create_file 0xf8a47f81 +vmlinux device_del 0x55f56789 +vmlinux device_for_each_child 0x01996710 +vmlinux device_initialize 0xd572d173 +vmlinux device_pm_set_parent 0x06ccbeeb +vmlinux device_power_down 0x9241c3ee +vmlinux device_power_up 0x4b88e224 +vmlinux device_register 0x94498002 +vmlinux device_release_driver 0x23765e5c +vmlinux device_remove_file 0x8c49df1b +vmlinux device_resume 0x6dcf00dd +vmlinux device_suspend 0xb27005f5 +vmlinux device_unregister 0x1069adf1 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0x54f90aae +vmlinux die_chain 0x492a6534 +vmlinux disable_hlt 0x794487ee +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disable_timer_nmi_watchdog 0xf2fb62ee +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_alloc_coherent 0x96a89d18 +vmlinux dma_free_coherent 0xfb4b097d +vmlinux dma_get_required_mask 0xe381b9a6 +vmlinux dma_ops 0x27018b49 +vmlinux dma_pool_alloc 0xbca32635 +vmlinux dma_pool_create 0xd8ea4a25 +vmlinux dma_pool_destroy 0x893fae61 +vmlinux dma_pool_free 0x1b95ff82 +vmlinux dma_set_mask 0x38d6b5b4 +vmlinux dma_spin_lock 0xfedbb44a +vmlinux dma_supported 0xd2f3025c +vmlinux dnotify_parent 0xd6236945 +vmlinux do_SAK 0x8bfed810 +vmlinux do_add_mount 0x3cc7d6e6 +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0x643dc4f7 +vmlinux do_gettimeofday 0x72270e35 +vmlinux do_kern_mount 0x7421b19b +vmlinux do_mmap_pgoff 0x60f66069 +vmlinux do_munmap 0x3035e590 +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x01af93ff +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0x27cbbea7 +vmlinux do_softirq_thunk 0xfd0315f0 +vmlinux do_sync_read 0xf7c36fc2 +vmlinux do_sync_write 0x012a579b +vmlinux do_unblank_screen 0x600683d3 +vmlinux dpm_runtime_resume 0x09ef2adf +vmlinux dput 0xccf08913 +vmlinux dq_data_lock 0xcd948d98 +vmlinux dqstats 0xf4f52f93 +vmlinux dquot_acquire 0x067a360b +vmlinux dquot_alloc_inode 0x6383eeab +vmlinux dquot_alloc_space 0x55dfc68f +vmlinux dquot_commit 0x6cf05629 +vmlinux dquot_commit_info 0x0f4f5af8 +vmlinux dquot_drop 0xf2fc5b65 +vmlinux dquot_free_inode 0x75077fd7 +vmlinux dquot_free_space 0x1a3703a7 +vmlinux dquot_initialize 0x53d8e375 +vmlinux dquot_mark_dquot_dirty 0x5dbc23e5 +vmlinux dquot_release 0x26340f1c +vmlinux dquot_transfer 0xdcd076a1 +vmlinux drive_info 0x744aa133 +vmlinux drive_is_ready 0x880d9d22 +vmlinux driver_attach 0xac6237db +vmlinux driver_create_file 0xe2532762 +vmlinux driver_find 0x42bb6a5e +vmlinux driver_find_device 0x9b198ce6 +vmlinux driver_for_each_device 0x36a291ed +vmlinux driver_register 0x419cb9b1 +vmlinux driver_remove_file 0x84ee2b5b +vmlinux driver_unregister 0x1fbc15b2 +vmlinux drop_super 0x977f43e3 +vmlinux dst_alloc 0xa95258d1 +vmlinux dst_destroy 0x766aca43 +vmlinux dump_stack 0x6b2dc060 +vmlinux ec_read 0xba2d8594 +vmlinux ec_write 0x876dafc3 +vmlinux eighty_ninty_three 0xe7ebddb7 +vmlinux elevator_exit 0xd8f10c39 +vmlinux elevator_init 0x5c635602 +vmlinux elv_add_request 0x95e1f753 +vmlinux elv_completed_request 0x61a916ca +vmlinux elv_dequeue_request 0x95a053bb +vmlinux elv_dispatch_sort 0xa4324c40 +vmlinux elv_next_request 0xd0b41f55 +vmlinux elv_queue_empty 0x57bcd135 +vmlinux elv_register 0x1b9505ef +vmlinux elv_requeue_request 0x287b6e44 +vmlinux elv_rq_merge_ok 0xcdbd5162 +vmlinux elv_try_merge 0xf3dd5e5b +vmlinux elv_unregister 0x01a5cc26 +vmlinux emergency_restart 0xd0c05159 +vmlinux empty_zero_page 0xc2c8ec85 +vmlinux enable_hlt 0x9c7077bd +vmlinux enable_irq 0xfcec0987 +vmlinux enable_timer_nmi_watchdog 0x13f54343 +vmlinux end_buffer_async_write 0x549ed934 +vmlinux end_buffer_read_sync 0xb003ac95 +vmlinux end_buffer_write_sync 0x3917b7d9 +vmlinux end_page_writeback 0xa59298a6 +vmlinux end_pfn 0xefe8e01c +vmlinux end_request 0xa98a9418 +vmlinux end_that_request_chunk 0x5a74214a +vmlinux end_that_request_first 0xab145562 +vmlinux end_that_request_last 0xb0940908 +vmlinux eth_type_trans 0x35f42537 +vmlinux ether_setup 0x2118a750 +vmlinux ethtool_op_get_link 0xf559ccf1 +vmlinux ethtool_op_get_perm_addr 0x2f5ede14 +vmlinux ethtool_op_get_sg 0xab05f75f +vmlinux ethtool_op_get_tso 0x02402189 +vmlinux ethtool_op_get_tx_csum 0x845ce556 +vmlinux ethtool_op_get_ufo 0x790b1213 +vmlinux ethtool_op_set_sg 0x187e456f +vmlinux ethtool_op_set_tso 0x61c38a54 +vmlinux ethtool_op_set_tx_csum 0x514b0e6e +vmlinux ethtool_op_set_tx_hw_csum 0xb55bec6e +vmlinux ethtool_op_set_ufo 0xe672c72a +vmlinux exit_fs 0x797bcc0f +vmlinux f_setown 0xa186c56e +vmlinux fasync_helper 0x645bab11 +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x810f253f +vmlinux fb_con_duit 0xabb080d2 +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0x76b609ee +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0xc0987cdb +vmlinux fb_get_buffer_offset 0x389ba007 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0xb3352576 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0xd7fc402c +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0xc4eed567 +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0xf733ffc6 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0xea8a914a +vmlinux fb_set_suspend 0xae3de52e +vmlinux fb_set_var 0x57b048fe +vmlinux fb_show_logo 0x9afa1cd2 +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0xd8367136 +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fd_install 0x5c8f56a8 +vmlinux fddi_type_trans 0x977aa77e +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x11c1ba69 +vmlinux file_fsync 0xe373c2b7 +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0x3a18ac02 +vmlinux filemap_fdatawait 0x241943f7 +vmlinux filemap_fdatawrite 0xddc00a72 +vmlinux filemap_flush 0x5342c99c +vmlinux filemap_nopage 0x4e652273 +vmlinux filemap_populate 0x4c751d38 +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0xbb39fe4e +vmlinux filp_open 0x3b831c97 +vmlinux find_bus 0x35f506bd +vmlinux find_first_bit 0x2274556d +vmlinux find_first_zero_bit 0xb3d2bf12 +vmlinux find_get_page 0x21ec292c +vmlinux find_inode_number 0x2f0046c7 +vmlinux find_lock_page 0x0c980cdc +vmlinux find_next_bit 0x44809893 +vmlinux find_next_zero_bit 0x699ce795 +vmlinux find_next_zero_string 0x9e6fe266 +vmlinux find_or_create_page 0xfb2418e2 +vmlinux find_task_by_pid_type 0x64cc1662 +vmlinux find_trylock_page 0x3266ac4f +vmlinux find_vma 0x3b11194f +vmlinux finish_wait 0x8bc0ef5c +vmlinux firmware_register 0x716ce90e +vmlinux firmware_unregister 0x457a1df1 +vmlinux flock_lock_file_wait 0xef6c3214 +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_old_exec 0x96a8e40f +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x35860841 +vmlinux flush_tlb_page 0x2a9fb254 +vmlinux flush_workqueue 0x2d75f2dc +vmlinux follow_down 0xedf927a8 +vmlinux follow_up 0x72940a1a +vmlinux force_sig 0x5636a679 +vmlinux fput 0x4f9318e4 +vmlinux framebuffer_alloc 0x6a584ab3 +vmlinux framebuffer_release 0xc113b875 +vmlinux free_buffer_head 0x6a7e862d +vmlinux free_dma 0x72b243d4 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0x076d13b1 +vmlinux free_pages 0x4302d0eb +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0x35ec36de +vmlinux freeze_bdev 0x4b611b28 +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0xf036fc98 +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0xcc16aa57 +vmlinux gen_replace_estimator 0x11cc7fd8 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x37e92a58 +vmlinux generic_block_bmap 0x11a02a24 +vmlinux generic_commit_write 0xe707e274 +vmlinux generic_cont_expand 0xef7af702 +vmlinux generic_delete_inode 0x65188e45 +vmlinux generic_drop_inode 0x2958b9df +vmlinux generic_file_aio_read 0x29182e80 +vmlinux generic_file_aio_write 0x81848618 +vmlinux generic_file_aio_write_nolock 0x57f8cdb1 +vmlinux generic_file_buffered_write 0x368ae022 +vmlinux generic_file_direct_write 0x1cdd6fd9 +vmlinux generic_file_llseek 0xc96a1a2f +vmlinux generic_file_mmap 0xf2659ae0 +vmlinux generic_file_open 0x11c44624 +vmlinux generic_file_read 0xcbde8f2a +vmlinux generic_file_readonly_mmap 0xaacdf7a2 +vmlinux generic_file_readv 0x6f076155 +vmlinux generic_file_sendfile 0x75fe2f3a +vmlinux generic_file_write 0x40f9689b +vmlinux generic_file_write_nolock 0xb6f0c563 +vmlinux generic_file_writev 0xe632951b +vmlinux generic_fillattr 0x5d676c8c +vmlinux generic_getxattr 0x56f859ac +vmlinux generic_ide_ioctl 0x0a09e331 +vmlinux generic_listxattr 0xffb2f1b6 +vmlinux generic_make_request 0xe4689719 +vmlinux generic_osync_inode 0x506f68e2 +vmlinux generic_permission 0x20a2bd7c +vmlinux generic_read_dir 0xf3cd77f6 +vmlinux generic_readlink 0x65a74c18 +vmlinux generic_removexattr 0x3b864df2 +vmlinux generic_ro_fops 0x475c4c5f +vmlinux generic_setxattr 0x7e78d02c +vmlinux generic_shutdown_super 0x515bd306 +vmlinux generic_unplug_device 0xcb8761de +vmlinux generic_write_checks 0xd945c845 +vmlinux genl_register_family 0x67ef3800 +vmlinux genl_register_ops 0x2c45091c +vmlinux genl_sock 0x9dc47771 +vmlinux genl_unregister_family 0xd769e1f3 +vmlinux genl_unregister_ops 0xd682991d +vmlinux get_agp_version 0x75623ffd +vmlinux get_bus 0xdbfb4914 +vmlinux get_cmos_time 0xb31ddfb4 +vmlinux get_cpu_sysdev 0x2ee9ff91 +vmlinux get_dcookie 0x51bc8628 +vmlinux get_device 0x98ade465 +vmlinux get_disk 0xd8d88c96 +vmlinux get_driver 0x9082b396 +vmlinux get_empty_filp 0x96aaaf2f +vmlinux get_fs_type 0xfe956868 +vmlinux get_io_context 0xa810bcd9 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0x03bb0e15 +vmlinux get_sb_nodev 0x72676a30 +vmlinux get_sb_pseudo 0x4b914dd3 +vmlinux get_sb_single 0x4b86d4a7 +vmlinux get_super 0x72d1751a +vmlinux get_task_mm 0xf87c73f2 +vmlinux get_unmapped_area 0x64a20235 +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x74666636 +vmlinux get_wchan 0x498d34f8 +vmlinux get_write_access 0x2b7bc760 +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x2019c2aa +vmlinux global_cache_flush 0xa4d4f0e6 +vmlinux global_flush_tlb 0x3167ea19 +vmlinux gnet_stats_copy_app 0x438635a3 +vmlinux gnet_stats_copy_basic 0xb8dd1da3 +vmlinux gnet_stats_copy_queue 0x68fc5dd7 +vmlinux gnet_stats_copy_rate_est 0xb8e57f47 +vmlinux gnet_stats_finish_copy 0xaa818a86 +vmlinux gnet_stats_start_copy 0x4d58382c +vmlinux gnet_stats_start_copy_compat 0x589ef3f7 +vmlinux grab_cache_page_nowait 0x5677294b +vmlinux groups_alloc 0xda9f6355 +vmlinux groups_free 0x41ac4793 +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0xed0a60e9 +vmlinux have_submounts 0x8eb72c5a +vmlinux high_memory 0x8a7d1c31 +vmlinux hippi_type_trans 0x68a37793 +vmlinux hpet_alloc 0x686f1325 +vmlinux hpet_control 0x1de314f3 +vmlinux hpet_register 0x741f1f6e +vmlinux hpet_unregister 0x63dfe1b4 +vmlinux hwmon_device_register 0xd0c78c8a +vmlinux hwmon_device_unregister 0xd32315dd +vmlinux ia32_setup_arg_pages 0x341970cb +vmlinux ia32_sys_call_table 0x3cf4209c +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x4b3bbbef +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_acpi_exec_tfs 0xc05c4ccf +vmlinux ide_acpi_get_timing 0x519a894d +vmlinux ide_acpi_init 0x079e8627 +vmlinux ide_acpi_push_timing 0x545f13c8 +vmlinux ide_add_setting 0x6583dbb7 +vmlinux ide_build_dmatable 0xc6b351ba +vmlinux ide_build_sglist 0xd02aae92 +vmlinux ide_bus_type 0xfad4e197 +vmlinux ide_config_drive_speed 0x8bc5dca2 +vmlinux ide_destroy_dmatable 0xd7896707 +vmlinux ide_dma_enable 0x2c938ec3 +vmlinux ide_dma_intr 0x809369ef +vmlinux ide_dma_setup 0xe7b8531f +vmlinux ide_dma_speed 0x170066d0 +vmlinux ide_dma_start 0x90b9efaf +vmlinux ide_dma_verbose 0x5449b1fc +vmlinux ide_do_drive_cmd 0x0a7c6853 +vmlinux ide_do_reset 0xcec589a2 +vmlinux ide_dump_status 0xb726013d +vmlinux ide_end_drive_cmd 0x944a50c7 +vmlinux ide_end_request 0x829bd37a +vmlinux ide_error 0x0b5e598f +vmlinux ide_execute_command 0x45740c15 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x519cd588 +vmlinux ide_get_error_location 0x6b99553b +vmlinux ide_hwifs 0xa0141d13 +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0x9a3d2811 +vmlinux ide_init_drive_cmd 0x8d51f59b +vmlinux ide_init_sg_cmd 0x63f3312b +vmlinux ide_lock 0xb2e7506b +vmlinux ide_map_sg 0xd59b1988 +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x35331a29 +vmlinux ide_pci_unregister_driver 0xd9d8e066 +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0xe397e4a7 +vmlinux ide_register_hw 0xdf73ada9 +vmlinux ide_register_hw_with_fixup 0xb3ec1f28 +vmlinux ide_register_region 0x696ef8aa +vmlinux ide_register_subdriver 0x846606e9 +vmlinux ide_set_handler 0xf2ccfbd4 +vmlinux ide_set_xfer_rate 0xff3a6349 +vmlinux ide_setup_dma 0x7bd44820 +vmlinux ide_setup_pci_device 0xec6afc1d +vmlinux ide_setup_pci_devices 0x6a9623d4 +vmlinux ide_setup_pci_noise 0x126fc1f3 +vmlinux ide_spin_wait_hwgroup 0x4e39c9ef +vmlinux ide_stall_queue 0xd35cae7a +vmlinux ide_undecoded_slave 0x7a355fa0 +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0xc25aa105 +vmlinux ide_unregister_subdriver 0x78fc916d +vmlinux ide_use_dma 0x234e3d92 +vmlinux ide_wait_not_busy 0xec6b5c10 +vmlinux ide_wait_stat 0x41bb2a7c +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0xa45faea7 +vmlinux idr_find 0x9ee01363 +vmlinux idr_get_new 0x4e4e7628 +vmlinux idr_get_new_above 0x7ad6c0fa +vmlinux idr_init 0x4baa35f2 +vmlinux idr_pre_get 0x18cab6cd +vmlinux idr_remove 0x0e54a306 +vmlinux iget5_locked 0x733077d2 +vmlinux iget_locked 0xc2564082 +vmlinux igrab 0x91adc677 +vmlinux ilookup 0xef67c407 +vmlinux ilookup5 0xf3c5410f +vmlinux ilookup5_nowait 0x72c70895 +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0x33833f5e +vmlinux in_egroup_p 0x42a4bdf2 +vmlinux in_group_p 0x31ebadcd +vmlinux in_lock_functions 0x09d44df9 +vmlinux inet6_lookup 0x6907da0f +vmlinux inet6_lookup_listener 0x8b8252d5 +vmlinux inet_accept 0xe5d887f4 +vmlinux inet_add_protocol 0xf87212a8 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0x9c14124e +vmlinux inet_bind_bucket_create 0x1c6cfb8c +vmlinux inet_bind_hash 0xd1b12218 +vmlinux inet_csk_accept 0xb7353891 +vmlinux inet_csk_clear_xmit_timers 0x0499a4c7 +vmlinux inet_csk_clone 0xce3499a1 +vmlinux inet_csk_delete_keepalive_timer 0x97fe0642 +vmlinux inet_csk_destroy_sock 0x6c8aed8e +vmlinux inet_csk_get_port 0x00e19d45 +vmlinux inet_csk_init_xmit_timers 0x84b2c7c5 +vmlinux inet_csk_listen_start 0x1124094e +vmlinux inet_csk_listen_stop 0x86ce63e7 +vmlinux inet_csk_reqsk_queue_hash_add 0x2b25e97c +vmlinux inet_csk_reqsk_queue_prune 0x91ff44d9 +vmlinux inet_csk_reset_keepalive_timer 0x00196721 +vmlinux inet_csk_route_req 0x9ab2fc36 +vmlinux inet_csk_search_req 0x64006aa0 +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0x9eecd6b2 +vmlinux inet_dgram_connect 0x817bfbc6 +vmlinux inet_dgram_ops 0xe0826d14 +vmlinux inet_diag_register 0x8cf43e70 +vmlinux inet_diag_unregister 0x25181c0a +vmlinux inet_getname 0x4c0bc098 +vmlinux inet_ioctl 0x3317f035 +vmlinux inet_listen 0x236f55f9 +vmlinux inet_listen_wlock 0xff4be60e +vmlinux inet_put_port 0x57cc6cdb +vmlinux inet_register_protosw 0xbe5f1428 +vmlinux inet_release 0x110baec5 +vmlinux inet_select_addr 0x6ae22b0a +vmlinux inet_sendmsg 0x457f511d +vmlinux inet_shutdown 0x2699ad71 +vmlinux inet_sk_rebuild_header 0x304fbb97 +vmlinux inet_sock_destruct 0xfb5b1405 +vmlinux inet_stream_connect 0x5d06857b +vmlinux inet_stream_ops 0x88d1ff5f +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x1f6f339e +vmlinux inet_twsk_deschedule 0x488cb4dd +vmlinux inet_twsk_schedule 0xe9e58dfe +vmlinux inet_unregister_protosw 0x165c3812 +vmlinux inetdev_by_index 0x27a827d3 +vmlinux init_buffer 0x29854b2d +vmlinux init_level4_pgt 0x95e0a76b +vmlinux init_mm 0x34cb9605 +vmlinux init_rwsem 0x43bd96e0 +vmlinux init_special_inode 0x2c19a636 +vmlinux init_task 0x3f6c7b0d +vmlinux init_timer 0x9c02700d +vmlinux inode_add_bytes 0x893d4dca +vmlinux inode_change_ok 0x29bac96d +vmlinux inode_get_bytes 0x6cb7f4d7 +vmlinux inode_init_once 0xa52d6538 +vmlinux inode_needs_sync 0x46ee6837 +vmlinux inode_set_bytes 0xb5b1b463 +vmlinux inode_setattr 0xcc75e14a +vmlinux inode_sub_bytes 0x09c0d12f +vmlinux inode_update_time 0x6acd74bb +vmlinux inotify_dentry_parent_queue_event 0x90b4c683 +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0x6005c576 +vmlinux inotify_inode_queue_event 0x8813db8a +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0x1e551438 +vmlinux input_allocate_device 0x45d9797a +vmlinux input_class 0x878bfc51 +vmlinux input_close_device 0xf0fb7d8d +vmlinux input_event 0xecba29cb +vmlinux input_flush_device 0x392f102e +vmlinux input_grab_device 0xb239a6ac +vmlinux input_open_device 0x66cfec27 +vmlinux input_register_device 0x2e811ec6 +vmlinux input_register_handler 0xd12c3114 +vmlinux input_release_device 0x4ef25bae +vmlinux input_unregister_device 0x12c53a4d +vmlinux input_unregister_handler 0x3f1d1a31 +vmlinux insert_resource 0xdc3992ac +vmlinux install_page 0xeba07f48 +vmlinux int_sqrt 0xb678366f +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x96b98d3c +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0x50719384 +vmlinux interruptible_sleep_on_timeout 0xf57cb5c1 +vmlinux invalidate_bdev 0x6c752c91 +vmlinux invalidate_inode_pages 0x7bd2da3f +vmlinux invalidate_inode_pages2 0x721249a1 +vmlinux invalidate_inode_pages2_range 0xa8cce8d3 +vmlinux invalidate_inodes 0xdca83957 +vmlinux invalidate_partition 0x08952215 +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0xed1d6760 +vmlinux iomem_resource 0x9efed5af +vmlinux iommu_bio_merge 0xaf52c2d3 +vmlinux iommu_merge 0x634cd7ee +vmlinux iommu_sac_force 0xac37dfec +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0xc5534d64 +vmlinux ioread16_rep 0x5857b225 +vmlinux ioread16be 0xf065f629 +vmlinux ioread32 0xe484e35f +vmlinux ioread32_rep 0x3f0546a8 +vmlinux ioread32be 0xfdb9b629 +vmlinux ioread8 0xf10de535 +vmlinux ioread8_rep 0xf441ac43 +vmlinux ioremap_nocache 0x3762cb6e +vmlinux iounmap 0xedc03953 +vmlinux iov_shorten 0x92392cd9 +vmlinux iowrite16 0x8c183cbe +vmlinux iowrite16_rep 0x8cc79cab +vmlinux iowrite16be 0x69a0ca7d +vmlinux iowrite32 0x436c2179 +vmlinux iowrite32_rep 0xbfc177bc +vmlinux iowrite32be 0x6acb973d +vmlinux iowrite8 0x0727c4f3 +vmlinux iowrite8_rep 0xa4b94fea +vmlinux ip4_datagram_connect 0x8fe4ee88 +vmlinux ip_build_and_send_pkt 0x9c95c520 +vmlinux ip_cmsg_recv 0x8da4d4d0 +vmlinux ip_compute_csum 0xe5e298ea +vmlinux ip_ct_attach 0xf8e79e27 +vmlinux ip_defrag 0xbe1b2a2f +vmlinux ip_fragment 0xa67d40e4 +vmlinux ip_generic_getfrag 0x26217d32 +vmlinux ip_getsockopt 0xdbe0885d +vmlinux ip_mc_dec_group 0xb17b4f00 +vmlinux ip_mc_inc_group 0xb4638fb3 +vmlinux ip_mc_join_group 0x948c93b0 +vmlinux ip_queue_xmit 0x71d7c3e0 +vmlinux ip_route_input 0x9087b34c +vmlinux ip_route_me_harder 0x0f10cce3 +vmlinux ip_route_output_flow 0xfede6d8b +vmlinux ip_route_output_key 0xce6349d6 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0xa37b7441 +vmlinux ip_setsockopt 0x980fc004 +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0x25650898 +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0x471b111a +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0x588578ae +vmlinux is_bad_inode 0xf0ba4132 +vmlinux is_console_locked 0x944a564d +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux iunique 0x900fcc72 +vmlinux iw_handler_get_spy 0x85ab8f0c +vmlinux iw_handler_get_thrspy 0x93109c73 +vmlinux iw_handler_set_spy 0xe94de95f +vmlinux iw_handler_set_thrspy 0x8724879a +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0xa24f8b47 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0x514d6bad +vmlinux kernel_recvmsg 0x03c8c0b7 +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0xfa8a60fe +vmlinux kernel_subsys 0x9c408621 +vmlinux kernel_thread 0x7ca341af +vmlinux key_alloc 0xc1464a22 +vmlinux key_create_or_update 0x550f044e +vmlinux key_instantiate_and_link 0xcb293155 +vmlinux key_link 0x49a74aa4 +vmlinux key_negate_and_link 0x49577c7d +vmlinux key_payload_reserve 0xbb3a3325 +vmlinux key_put 0x547dd8ea +vmlinux key_revoke 0x4107cbbe +vmlinux key_task_permission 0x52b3f659 +vmlinux key_type_user 0x71a9140b +vmlinux key_unlink 0x7b8df84a +vmlinux key_update 0x95ceb864 +vmlinux key_validate 0x140dfb83 +vmlinux keyring_clear 0x438b2a41 +vmlinux keyring_search 0x37fc3c65 +vmlinux kfifo_alloc 0xc0fe22d7 +vmlinux kfifo_free 0xe1837904 +vmlinux kfifo_init 0x35b3ef67 +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0x79037cd1 +vmlinux kill_anon_super 0xa06c0e83 +vmlinux kill_block_super 0x5078c7cb +vmlinux kill_fasync 0x27f2c212 +vmlinux kill_litter_super 0xdd2c0335 +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xf679e5b3 +vmlinux klist_add_head 0xf6466d8d +vmlinux klist_add_tail 0x475fa23b +vmlinux klist_del 0x6d53788c +vmlinux klist_init 0xaeaa2d96 +vmlinux klist_iter_exit 0x89233c35 +vmlinux klist_iter_init 0xbd66c03e +vmlinux klist_iter_init_node 0x7af9ca0d +vmlinux klist_next 0x96a3499c +vmlinux klist_node_attached 0xa5a3f1c3 +vmlinux klist_remove 0xb876b119 +vmlinux km_new_mapping 0xd8ba128c +vmlinux km_policy_notify 0x0dbe2ca2 +vmlinux km_state_notify 0xf46a0924 +vmlinux km_waitq 0xcf8432ef +vmlinux kmem_cache_alloc 0xb74e0864 +vmlinux kmem_cache_create 0x0ff9782d +vmlinux kmem_cache_destroy 0xf4256f7d +vmlinux kmem_cache_free 0xe44ddd34 +vmlinux kmem_cache_name 0x16249845 +vmlinux kmem_cache_shrink 0xc4ce44a6 +vmlinux kmem_cache_size 0x9da172f4 +vmlinux kmem_find_general_cachep 0xaa7f63a0 +vmlinux kobject_add 0x492a1cf5 +vmlinux kobject_del 0xeae5fd66 +vmlinux kobject_get 0x0b472dbd +vmlinux kobject_hotplug 0xe57992c7 +vmlinux kobject_init 0xb29eb45e +vmlinux kobject_put 0x9182f325 +vmlinux kobject_register 0x2d48dff2 +vmlinux kobject_set_name 0x9cfada32 +vmlinux kobject_uevent 0x769b9418 +vmlinux kobject_uevent_atomic 0x78dda783 +vmlinux kobject_unregister 0xb7c2eca6 +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x1fc0589d +vmlinux kset_register 0xdb9c4816 +vmlinux kset_unregister 0xa8781add +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x2bb07bbf +vmlinux kthread_create 0xe4178085 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0x91e37d8b +vmlinux kthread_stop_sem 0x0c79f609 +vmlinux kzalloc 0x5a3b6eca +vmlinux laptop_mode 0x76d3cd60 +vmlinux lease_get_mtime 0x09188297 +vmlinux lease_modify 0x994fd8df +vmlinux linkwatch_fire_event 0xb42c3b2d +vmlinux ll_rw_block 0x2a430b4b +vmlinux llc_add_pack 0xd6bbe42b +vmlinux llc_build_and_send_ui_pkt 0x275028a4 +vmlinux llc_mac_hdr_init 0x47838b54 +vmlinux llc_remove_pack 0x38b92846 +vmlinux llc_sap_close 0x771a45a8 +vmlinux llc_sap_find 0xa74391f7 +vmlinux llc_sap_list 0x52d7b2fd +vmlinux llc_sap_list_lock 0xd6a44e66 +vmlinux llc_sap_open 0x041f72cd +vmlinux llc_set_station_handler 0x7f66cef8 +vmlinux llc_station_mac_sa 0x5c372971 +vmlinux load_gs_index 0xc79e571d +vmlinux load_nls 0x100fec76 +vmlinux load_nls_default 0xcf86197e +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_cpu_hotplug 0xba813bd6 +vmlinux lock_cpu_hotplug_interruptible 0xdd7ee0f9 +vmlinux lock_kernel 0x3656bf5a +vmlinux lock_may_read 0x3ff0ff45 +vmlinux lock_may_write 0xe9a20a01 +vmlinux lock_rename 0xe65f9b7d +vmlinux lock_sock 0x37794ebd +vmlinux locks_copy_lock 0x3d421797 +vmlinux locks_init_lock 0x95ec381c +vmlinux locks_mandatory_area 0xe6b5d1e7 +vmlinux locks_remove_posix 0x36440037 +vmlinux lookup_create 0x1fd259ec +vmlinux lookup_hash 0xacee8bd2 +vmlinux lookup_instantiate_filp 0xebea7934 +vmlinux lookup_one_len 0x47a360d6 +vmlinux loopback_dev 0xfeb62ddd +vmlinux loops_per_jiffy 0xba497f13 +vmlinux make_8023_client 0x7d668b0a +vmlinux make_EII_client 0x5cfad322 +vmlinux make_bad_inode 0xf7dbc337 +vmlinux malloc_sizes 0x9a167c87 +vmlinux map_page_into_agp 0xff35cf40 +vmlinux mapping_tagged 0x4b4601fb +vmlinux mark_buffer_async_write 0x3e807d55 +vmlinux mark_buffer_dirty 0xdf9d0a8c +vmlinux mark_buffer_dirty_inode 0x063dd8ca +vmlinux mark_info_dirty 0x3675c558 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0xb451fc7a +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_cstate 0x93805374 +vmlinux max_mapnr 0x01139ffc +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0x544a08ab +vmlinux may_umount_tree 0xc4e23bbe +vmlinux mb_cache_create 0x4e873058 +vmlinux mb_cache_destroy 0xd5263820 +vmlinux mb_cache_entry_alloc 0x553b5f11 +vmlinux mb_cache_entry_find_first 0x3a32f078 +vmlinux mb_cache_entry_find_next 0x745c8375 +vmlinux mb_cache_entry_free 0xccd61a29 +vmlinux mb_cache_entry_get 0x51f07b44 +vmlinux mb_cache_entry_insert 0x16bde8be +vmlinux mb_cache_entry_release 0xe29505b2 +vmlinux mb_cache_shrink 0x2a793c14 +vmlinux mem_map 0x0c25eda6 +vmlinux memchr 0xc740c64a +vmlinux memcmp 0x2fa5a500 +vmlinux memcpy 0x6067a146 +vmlinux memcpy_fromiovec 0x36139a51 +vmlinux memcpy_fromiovecend 0x9bc565c5 +vmlinux memcpy_toiovec 0x2876a6d3 +vmlinux memmove 0xa3a5be95 +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0x3d84bcc6 +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0xaaa24b26 +vmlinux mempool_create_node 0xd01c94ac +vmlinux mempool_destroy 0x794a03ee +vmlinux mempool_free 0x7f42aeb6 +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x68d1b773 +vmlinux memscan 0x9c0ea3cd +vmlinux memset 0x3fa03a97 +vmlinux memset_io 0x4327f0d5 +vmlinux misc_deregister 0x89d33c35 +vmlinux misc_register 0x692585bc +vmlinux mmput 0xf94c9ef0 +vmlinux mnt_pin 0xae1caeb7 +vmlinux mnt_unpin 0xa0acb8c1 +vmlinux mntput_no_expire 0xe0aba6b2 +vmlinux mod_reg_security 0xf663414e +vmlinux mod_timer 0xda6bb4ad +vmlinux mod_unreg_security 0xc8a1fe18 +vmlinux module_add_driver 0x9d360a0c +vmlinux module_refcount 0x3b0c564a +vmlinux module_remove_driver 0xc470424e +vmlinux monotonic_clock 0x9669ecc8 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0xefde3b8d +vmlinux mpage_readpages 0x1655309a +vmlinux mpage_writepage 0xe0f801ab +vmlinux mpage_writepages 0xf474d288 +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux mtrr_add 0x56179c5f +vmlinux mtrr_del 0x272d394e +vmlinux multipath_alg_register 0xa5ca2f21 +vmlinux multipath_alg_unregister 0x289125b2 +vmlinux n_tty_ioctl 0x47309865 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x7239616b +vmlinux neigh_changeaddr 0x9bdeefee +vmlinux neigh_compat_output 0xaadadebe +vmlinux neigh_connected_output 0xf790e239 +vmlinux neigh_create 0x99b48eaa +vmlinux neigh_delete 0x4d89f228 +vmlinux neigh_destroy 0xa751abd9 +vmlinux neigh_dump_info 0x51b8c14b +vmlinux neigh_event_ns 0xa6db5eb9 +vmlinux neigh_for_each 0xfa70dc95 +vmlinux neigh_ifdown 0x9e1fbf28 +vmlinux neigh_lookup 0x905a55ef +vmlinux neigh_lookup_nodev 0xe8af0147 +vmlinux neigh_parms_alloc 0xedc3e632 +vmlinux neigh_parms_release 0x53e1c94b +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0x53155b70 +vmlinux neigh_seq_next 0x0e4059f3 +vmlinux neigh_seq_start 0x6c0febe4 +vmlinux neigh_seq_stop 0xffa7ddaa +vmlinux neigh_sysctl_register 0x644325a7 +vmlinux neigh_sysctl_unregister 0x13ae5cd3 +vmlinux neigh_table_clear 0xde13fe4e +vmlinux neigh_table_init 0xc248f280 +vmlinux neigh_update 0x8d9a2027 +vmlinux neigh_update_hhs 0x49bf749f +vmlinux neightbl_dump_info 0x6fd95e88 +vmlinux neightbl_set 0xc965786a +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0xf8e0f097 +vmlinux netdev_features_change 0x599d456a +vmlinux netdev_rx_csum_fault 0xc9bb5517 +vmlinux netdev_set_master 0xe12b1e5e +vmlinux netdev_state_change 0x4f65b779 +vmlinux netif_carrier_off 0x11575a59 +vmlinux netif_carrier_on 0x8192edd6 +vmlinux netif_receive_skb 0x03683810 +vmlinux netif_rx 0x870b0aac +vmlinux netif_rx_ni 0x8784b4fa +vmlinux netlink_ack 0x1388474e +vmlinux netlink_broadcast 0x026b1054 +vmlinux netlink_dump_start 0x9209008c +vmlinux netlink_kernel_create 0x90a39648 +vmlinux netlink_queue_skip 0xa6002bdf +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0x63213d96 +vmlinux netlink_set_err 0xccc07372 +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0x74d19edf +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x97c10c02 +vmlinux netpoll_parse_options 0x2fa562d4 +vmlinux netpoll_poll 0x74876728 +vmlinux netpoll_queue 0x62e39490 +vmlinux netpoll_send_udp 0x7044aa8d +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0x4b6cb22a +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0x2d000c33 +vmlinux next_thread 0x20c413b4 +vmlinux nf_ct_attach 0x63cd1782 +vmlinux nf_getsockopt 0x92fa392e +vmlinux nf_hook_slow 0x395787e6 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0x290f03f9 +vmlinux nf_log_register 0x405f39e1 +vmlinux nf_log_unregister_logger 0x30603f01 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0x9293fdde +vmlinux nf_register_queue_handler 0x43582b37 +vmlinux nf_register_queue_rerouter 0xc13abe77 +vmlinux nf_register_sockopt 0xe7617351 +vmlinux nf_reinject 0xfbf87012 +vmlinux nf_setsockopt 0x57c3495d +vmlinux nf_unregister_hook 0x16f6923b +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0x32f3f8e8 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x613d6803 +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0x4c4c956e +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0x06cd74c1 +vmlinux nla_reserve 0x50007c5a +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0xa33f7c7c +vmlinux nla_validate 0x2cc98162 +vmlinux nmi_active 0x069dcda8 +vmlinux nmi_watchdog 0xda928914 +vmlinux no_llseek 0x2e26f5d9 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x125739ec +vmlinux nobh_prepare_write 0xf24c00eb +vmlinux nobh_truncate_page 0xed6d8773 +vmlinux nobh_writepage 0xa752c99b +vmlinux node_online_map 0x6a7acf23 +vmlinux node_possible_map 0x33eca077 +vmlinux nonseekable_open 0xd2ef4a10 +vmlinux noop_qdisc 0xbbbc62f6 +vmlinux noop_qdisc_ops 0xfe17dddc +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x4ba78dd1 +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0x7dfa364e +vmlinux open_by_devnum 0x9a25f1d5 +vmlinux open_exec 0x7ab89146 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_bug 0x189c5fd1 +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux overflowgid 0x7171121c +vmlinux overflowuid 0x8b618d08 +vmlinux p80211_resume 0xe2252743 +vmlinux p80211_suspend 0x05503e28 +vmlinux p80211netdev_hwremoved 0x8e0f4e13 +vmlinux p80211netdev_rx 0x012a49b6 +vmlinux p80211skb_free 0x5c2bf77c +vmlinux p80211skb_rxmeta_attach 0x177c42cd +vmlinux page_follow_link_light 0x7863d712 +vmlinux page_put_link 0x74914b8b +vmlinux page_readlink 0x28eed11e +vmlinux page_symlink 0x6fac9dc8 +vmlinux page_symlink_inode_operations 0x0d1e1e60 +vmlinux pagevec_lookup_tag 0x221d5933 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0xb7233983 +vmlinux path_release 0x1ac872fd +vmlinux path_walk 0x724d5281 +vmlinux pci_add_new_bus 0xef3a0ba9 +vmlinux pci_alloc_consistent 0x941888f4 +vmlinux pci_assign_resource 0xab62fe5c +vmlinux pci_block_user_cfg_access 0x5b2493ec +vmlinux pci_bus_add_device 0xa16604a8 +vmlinux pci_bus_add_devices 0x53e9676a +vmlinux pci_bus_alloc_resource 0xd58eeec7 +vmlinux pci_bus_assign_resources 0x1708d968 +vmlinux pci_bus_find_capability 0xbedb20f5 +vmlinux pci_bus_max_busnr 0xbc3ec846 +vmlinux pci_bus_read_config_byte 0xc7fa379d +vmlinux pci_bus_read_config_dword 0xe854dc6b +vmlinux pci_bus_read_config_word 0x168cb34d +vmlinux pci_bus_size_bridges 0x50bcbc3c +vmlinux pci_bus_type 0x4519895b +vmlinux pci_bus_write_config_byte 0xad2ba9eb +vmlinux pci_bus_write_config_dword 0xdc5ad9ab +vmlinux pci_bus_write_config_word 0x60595013 +vmlinux pci_choose_state 0x13f03c51 +vmlinux pci_clear_mwi 0xd66de010 +vmlinux pci_create_bus 0xa88b97b1 +vmlinux pci_dev_driver 0x44ac3c4f +vmlinux pci_dev_get 0x63a3e5a3 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0x841c3a09 +vmlinux pci_disable_device 0xfded5f05 +vmlinux pci_disable_msi 0xf165f658 +vmlinux pci_disable_msix 0xd9b43a14 +vmlinux pci_do_scan_bus 0xcfa6b35a +vmlinux pci_enable_bridges 0x5e3a7555 +vmlinux pci_enable_device 0xbcd38c27 +vmlinux pci_enable_device_bars 0x9d688778 +vmlinux pci_enable_msi 0x3e1cc4d4 +vmlinux pci_enable_msix 0x9d4d7ef5 +vmlinux pci_enable_wake 0xe62817ff +vmlinux pci_find_bus 0x32fc70ae +vmlinux pci_find_capability 0xf8c6974d +vmlinux pci_find_device 0xf8268150 +vmlinux pci_find_device_reverse 0xbb809bfb +vmlinux pci_find_next_bus 0xcde001d6 +vmlinux pci_find_next_capability 0x682ab1b4 +vmlinux pci_find_parent_resource 0x4c0ae546 +vmlinux pci_find_slot 0x8b4fa5d2 +vmlinux pci_fixup_device 0xa4baa27e +vmlinux pci_free_consistent 0xd30dbf37 +vmlinux pci_get_class 0x478ff7a9 +vmlinux pci_get_device 0xefb75670 +vmlinux pci_get_slot 0xba2ecacd +vmlinux pci_get_subsys 0x7dd2d261 +vmlinux pci_intx 0x4a17137b +vmlinux pci_iomap 0xc2c5ae3d +vmlinux pci_iounmap 0xdf7610bb +vmlinux pci_map_rom 0x6bd587e3 +vmlinux pci_map_rom_copy 0x9968bf06 +vmlinux pci_match_device 0xc367f0d8 +vmlinux pci_match_id 0x4c4ab734 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_mem_start 0x3da171f9 +vmlinux pci_osc_control_set 0x20c8fc33 +vmlinux pci_osc_support_set 0xed9003ef +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0x1f8f015f +vmlinux pci_proc_attach_device 0x791ebf37 +vmlinux pci_proc_detach_bus 0x62ea2328 +vmlinux pci_release_region 0xf8b05ecc +vmlinux pci_release_regions 0x5dbc03f7 +vmlinux pci_remove_behind_bridge 0xb4756677 +vmlinux pci_remove_bus 0x9a1de263 +vmlinux pci_remove_bus_device 0xccee2521 +vmlinux pci_remove_device_safe 0x07bbb908 +vmlinux pci_remove_rom 0xd60fdb26 +vmlinux pci_request_region 0x15a3acef +vmlinux pci_request_regions 0x40761ff7 +vmlinux pci_restore_bars 0xc5223930 +vmlinux pci_restore_state 0x625793a0 +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0xe83144b3 +vmlinux pci_scan_bridge 0x9f39d976 +vmlinux pci_scan_bus_parented 0x204d1dc7 +vmlinux pci_scan_child_bus 0x90647854 +vmlinux pci_scan_single_device 0xd3bcead4 +vmlinux pci_scan_slot 0xeac189b5 +vmlinux pci_set_consistent_dma_mask 0x3cb0c711 +vmlinux pci_set_dma_mask 0xfacd2e58 +vmlinux pci_set_master 0xec7c92f1 +vmlinux pci_set_mwi 0x0344f158 +vmlinux pci_set_power_state 0x7ea19419 +vmlinux pci_setup_cardbus 0xee4cf88b +vmlinux pci_unblock_user_cfg_access 0x174a5631 +vmlinux pci_unmap_rom 0x1fbc5a6a +vmlinux pci_unregister_driver 0x47c41826 +vmlinux pci_walk_bus 0xa67f5290 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pcie_port_service_register 0x4d98497d +vmlinux pcie_port_service_unregister 0x6d027f38 +vmlinux pciserial_init_ports 0x13526a0e +vmlinux pciserial_remove_ports 0x4fb7573e +vmlinux pciserial_resume_ports 0xe20b51fe +vmlinux pciserial_suspend_ports 0xc393e529 +vmlinux per_cpu__kstat 0xca09a9af +vmlinux per_cpu__softnet_data 0x994f3fee +vmlinux percpu_counter_mod 0xa6fe1216 +vmlinux permission 0x80584025 +vmlinux pfifo_qdisc_ops 0x576df4ae +vmlinux platform_add_devices 0x07b43edd +vmlinux platform_bus 0xf28cc103 +vmlinux platform_bus_type 0x295a66e5 +vmlinux platform_device_add 0xffcee863 +vmlinux platform_device_add_data 0x4b83e100 +vmlinux platform_device_add_resources 0x79be36a9 +vmlinux platform_device_alloc 0x1f9f44e0 +vmlinux platform_device_put 0xa4f422c4 +vmlinux platform_device_register 0x4ae8e998 +vmlinux platform_device_register_simple 0x97214fc8 +vmlinux platform_device_unregister 0xe66e1093 +vmlinux platform_driver_register 0xf943c55e +vmlinux platform_driver_unregister 0x713fa8e4 +vmlinux platform_get_irq 0x154abc09 +vmlinux platform_get_irq_byname 0xe05defe7 +vmlinux platform_get_resource 0x2f6dc167 +vmlinux platform_get_resource_byname 0x3356ce17 +vmlinux pm_active 0xebd387f6 +vmlinux pm_idle 0xf890fe7f +vmlinux pm_power_off 0x60a32ea9 +vmlinux pm_register 0x2099274a +vmlinux pm_send_all 0xe3016e92 +vmlinux pm_unregister 0x2e1bf603 +vmlinux pm_unregister_all 0x005d6cf1 +vmlinux pneigh_enqueue 0x4f4c5639 +vmlinux pneigh_lookup 0x092adc9c +vmlinux pnp_activate_dev 0x8de27c57 +vmlinux pnp_device_attach 0xe21acbb0 +vmlinux pnp_device_detach 0xfd72b0a7 +vmlinux pnp_disable_dev 0x3b4fbe32 +vmlinux pnp_init_resource_table 0x16084899 +vmlinux pnp_is_active 0x84fc074d +vmlinux pnp_manual_config_dev 0x587ad7dc +vmlinux pnp_register_card_driver 0x8bfc8b08 +vmlinux pnp_register_driver 0xa264142e +vmlinux pnp_release_card_device 0x727142c9 +vmlinux pnp_request_card_device 0x70c0b47e +vmlinux pnp_resource_change 0xf577ec2b +vmlinux pnp_unregister_card_driver 0x3eaf3998 +vmlinux pnp_unregister_driver 0x2d7ae622 +vmlinux poll_freewait 0xa401b67e +vmlinux poll_initwait 0x7eea6cd0 +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0x83c43dc1 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x886aa274 +vmlinux posix_acl_equiv_mode 0x50d56018 +vmlinux posix_acl_from_mode 0x8c537c45 +vmlinux posix_acl_from_xattr 0x42acbf72 +vmlinux posix_acl_permission 0x0869d08d +vmlinux posix_acl_to_xattr 0xb055d8da +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0x89798c85 +vmlinux posix_lock_file 0xca760b35 +vmlinux posix_lock_file_wait 0xdc10e12d +vmlinux posix_locks_deadlock 0x3b6d72cb +vmlinux posix_test_lock 0x14b347f7 +vmlinux posix_timer_event 0x6ec05618 +vmlinux posix_unblock_lock 0x1c9bf083 +vmlinux pre_task_out_intr 0xe6ad1962 +vmlinux preempt_schedule 0x43b0c9c3 +vmlinux prepare_binprm 0x358c5ac6 +vmlinux prepare_to_wait 0x43b27463 +vmlinux prepare_to_wait_exclusive 0x893e7778 +vmlinux printk 0xdd132261 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0x6e266557 +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0xe1283214 +vmlinux proc_dointvec 0xb6ecde2b +vmlinux proc_dointvec_jiffies 0x6aed5e3e +vmlinux proc_dointvec_minmax 0xba128834 +vmlinux proc_dointvec_ms_jiffies 0x23903478 +vmlinux proc_dointvec_userhz_jiffies 0xf6b31466 +vmlinux proc_dostring 0x3706cc8d +vmlinux proc_doulongvec_minmax 0xccd70cf8 +vmlinux proc_doulongvec_ms_jiffies_minmax 0x757e967e +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0x7ce2e8f2 +vmlinux proc_net 0xf899b81b +vmlinux proc_net_netfilter 0xc3b811b3 +vmlinux proc_net_stat 0xbe00f0dc +vmlinux proc_root 0xf51054a3 +vmlinux proc_root_driver 0x0911c005 +vmlinux proc_root_fs 0xb55aa9b5 +vmlinux proc_symlink 0x2e6ade15 +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux profile_pc 0x875e1a1b +vmlinux proto_register 0xfae43f37 +vmlinux proto_unregister 0x621ea30a +vmlinux ps2_cmd_aborted 0x8046a2e5 +vmlinux ps2_command 0x6d95bd79 +vmlinux ps2_drain 0x39024270 +vmlinux ps2_handle_ack 0x76def972 +vmlinux ps2_handle_response 0x81bd20ee +vmlinux ps2_init 0xc54026d9 +vmlinux ps2_schedule_command 0x817e5277 +vmlinux ps2_sendbyte 0x4fe45569 +vmlinux pskb_copy 0xa1b423a0 +vmlinux pskb_expand_head 0xcf528454 +vmlinux pskb_put 0x84802cd8 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0x73e94e8b +vmlinux put_cmsg 0x43ec913a +vmlinux put_device 0x441ededf +vmlinux put_disk 0x8d535714 +vmlinux put_driver 0x775dd6a1 +vmlinux put_files_struct 0xe2b0362e +vmlinux put_io_context 0xdbb7bd90 +vmlinux put_page 0x584235f0 +vmlinux put_tty_driver 0x4640efdf +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0x4d92ef8a +vmlinux qdisc_create_dflt 0x9ed9a908 +vmlinux qdisc_destroy 0x8633d669 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0xd821e551 +vmlinux qdisc_lookup 0x70b1b75e +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0x06c403a7 +vmlinux qdisc_restart 0x9daf3d9b +vmlinux qdisc_unlock_tree 0x7b7a2fc1 +vmlinux queue_delayed_work 0x42c54347 +vmlinux queue_work 0x94a9a951 +vmlinux radix_tree_delete 0x898049c9 +vmlinux radix_tree_gang_lookup 0x35ef380e +vmlinux radix_tree_gang_lookup_tag 0xed493232 +vmlinux radix_tree_insert 0x72e6283f +vmlinux radix_tree_lookup 0x76e635da +vmlinux radix_tree_lookup_slot 0x41706e2f +vmlinux radix_tree_tag_clear 0x9ee300df +vmlinux radix_tree_tag_set 0xd73b9fb5 +vmlinux radix_tree_tagged 0xb52b2186 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_cache_page 0xf7f5253a +vmlinux read_cache_pages 0x41a65635 +vmlinux read_dev_sector 0x1caa5937 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0x7dcb1e49 +vmlinux redraw_screen 0x71fa4850 +vmlinux refrigerator 0x35c2ba9e +vmlinux register_8022_client 0x5f5ae8c0 +vmlinux register_acpi_bus_type 0x88cd8754 +vmlinux register_atm_ioctl 0x8b7fc093 +vmlinux register_binfmt 0xbd382aae +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0xab3f526a +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0xa03ca621 +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_die_notifier 0x53986488 +vmlinux register_exec_domain 0x61a96e8d +vmlinux register_filesystem 0xa3357bc6 +vmlinux register_firmware 0x40359ccb +vmlinux register_framebuffer 0xa398aaae +vmlinux register_gifconf 0x2677c744 +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_key_type 0xe211efc2 +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0x6ef5875c +vmlinux register_netdevice 0xcfccb47c +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x637cb42a +vmlinux register_posix_clock 0xd3779a0b +vmlinux register_qdisc 0x25788b4f +vmlinux register_quota_format 0x1d9c102b +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0x66c08932 +vmlinux register_snap_client 0x8b1223b2 +vmlinux register_sysctl_table 0x5072b8a1 +vmlinux register_sysrq_key 0x840d02aa +vmlinux register_tcf_proto_ops 0x5bff85dd +vmlinux register_timer_hook 0x93817c41 +vmlinux register_wlandev 0x50b4420a +vmlinux registered_fb 0xa0c44d0f +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x6ef56f31 +vmlinux release_lapic_nmi 0x4129043e +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x98046620 +vmlinux remap_pfn_range 0x80be93d5 +vmlinux remote_llseek 0xa7588f68 +vmlinux remove_arg_zero 0x098d6045 +vmlinux remove_inode_hash 0xfec5f92d +vmlinux remove_proc_entry 0x6141d87a +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0x3119a42f +vmlinux remove_wait_queue 0xe12d87eb +vmlinux reqsk_queue_alloc 0xb1e41a9f +vmlinux reqsk_queue_destroy 0x6972ed0f +vmlinux request_dma 0x7054a3e4 +vmlinux request_firmware 0xd6da5e81 +vmlinux request_firmware_nowait 0xccff0ed4 +vmlinux request_irq 0x5271af5d +vmlinux request_key 0x80532adf +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux reserve_lapic_nmi 0xb903b498 +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x83230e05 +vmlinux rtc_control 0xc9b27289 +vmlinux rtc_lock 0x831988d6 +vmlinux rtc_register 0xfdab2b9c +vmlinux rtc_unregister 0xeddfe49d +vmlinux rtnetlink_links 0xb5f6b59f +vmlinux rtnetlink_put_metrics 0xca713fbd +vmlinux rtnl 0x4f6f7b18 +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0xee0fef1f +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux sb_min_blocksize 0xda56359d +vmlinux sb_set_blocksize 0x43d9c434 +vmlinux sched_setscheduler 0xd6a6ee3e +vmlinux schedule 0x01000e51 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0xe076c2fb +vmlinux scm_fp_dup 0x5b3f7c9f +vmlinux scnprintf 0x7bb4de17 +vmlinux screen_info 0xe7bf7d05 +vmlinux scsi_cmd_ioctl 0x12755c95 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux search_binary_handler 0xb40609d6 +vmlinux secpath_dup 0x8e1ee283 +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0x49769686 +vmlinux securityfs_create_dir 0xdf0c53f9 +vmlinux securityfs_create_file 0x9a0549be +vmlinux securityfs_remove 0xa18f1852 +vmlinux send_sig 0x346aed1e +vmlinux send_sig_info 0xff99e09c +vmlinux seq_escape 0x3028e926 +vmlinux seq_lseek 0x641adfa9 +vmlinux seq_open 0x6dbba09b +vmlinux seq_path 0x3b813893 +vmlinux seq_printf 0x56820594 +vmlinux seq_putc 0x6eef5d4d +vmlinux seq_puts 0x0516c869 +vmlinux seq_read 0xd91315b6 +vmlinux seq_release 0xb09a0a6a +vmlinux seq_release_private 0x65704f02 +vmlinux serial8250_register_port 0x78d444f8 +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0xe291f39f +vmlinux serio_interrupt 0x4ac3beef +vmlinux serio_open 0x0be8304e +vmlinux serio_reconnect 0x13f33d75 +vmlinux serio_rescan 0xa3249dd5 +vmlinux serio_unregister_child_port 0xad37477c +vmlinux serio_unregister_driver 0x783ba56d +vmlinux serio_unregister_port 0x8a1e6764 +vmlinux set_anon_super 0x9b2a9207 +vmlinux set_bh_page 0xdad8ddcf +vmlinux set_binfmt 0x301617bf +vmlinux set_blocksize 0x4c0b25c9 +vmlinux set_cpus_allowed 0x059af998 +vmlinux set_current_groups 0x999fe899 +vmlinux set_device_ro 0xc7844bc7 +vmlinux set_disk_ro 0x87bf5767 +vmlinux set_nmi_callback 0x2285b831 +vmlinux set_page_dirty 0x5ad2139b +vmlinux set_page_dirty_lock 0x49fe2650 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0x0ef340cb +vmlinux setlease 0xb14dab8b +vmlinux setup_arg_pages 0x5faa5f5e +vmlinux sget 0xd15b2c7b +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x861ba5e0 +vmlinux shrink_dcache_sb 0x057119fc +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x6a5fa363 +vmlinux simple_attr_close 0x8aebb292 +vmlinux simple_attr_open 0x52201c61 +vmlinux simple_attr_read 0x8f7ec619 +vmlinux simple_attr_write 0xa67db063 +vmlinux simple_commit_write 0x4029e8a8 +vmlinux simple_dir_inode_operations 0x1952e588 +vmlinux simple_dir_operations 0xc47de366 +vmlinux simple_empty 0xce3d97fc +vmlinux simple_fill_super 0xa66fac72 +vmlinux simple_getattr 0x2bce355f +vmlinux simple_link 0x9cbff703 +vmlinux simple_lookup 0x5c323f3c +vmlinux simple_pin_fs 0xf854587f +vmlinux simple_prepare_write 0x503c2f24 +vmlinux simple_read_from_buffer 0x5a5e7ea3 +vmlinux simple_readpage 0x9d9ca2d1 +vmlinux simple_release_fs 0x4a338ade +vmlinux simple_rename 0x486b3d63 +vmlinux simple_rmdir 0xe51079d9 +vmlinux simple_statfs 0x2db5cf73 +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0xe15f25bf +vmlinux simple_transaction_get 0x22744f2b +vmlinux simple_transaction_read 0x0ef956cd +vmlinux simple_transaction_release 0x16b9965d +vmlinux simple_unlink 0xe2454979 +vmlinux single_open 0xf46c557b +vmlinux single_release 0x41cdfcd7 +vmlinux sk_alloc 0x49a86aa7 +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0x1d1daa06 +vmlinux sk_common_release 0xed40558b +vmlinux sk_free 0xa3fb1a0d +vmlinux sk_reset_timer 0x4f9cd731 +vmlinux sk_run_filter 0x17cbabd7 +vmlinux sk_send_sigurg 0xc8fae64d +vmlinux sk_stop_timer 0xeecc8f3e +vmlinux sk_stream_error 0x6cd53cc9 +vmlinux sk_stream_kill_queues 0x2384d159 +vmlinux sk_stream_mem_schedule 0x5e9965c7 +vmlinux sk_stream_rfree 0xf56e9d7d +vmlinux sk_stream_wait_close 0xbec9b773 +vmlinux sk_stream_wait_connect 0x550d279a +vmlinux sk_stream_wait_memory 0x0cdc5b68 +vmlinux sk_stream_write_space 0xfee241a3 +vmlinux sk_wait_data 0xffe86b40 +vmlinux skb_abort_seq_read 0x05b0f1b1 +vmlinux skb_append 0x5b7155d8 +vmlinux skb_append_datato_frags 0x1123c741 +vmlinux skb_checksum 0x3707bbfb +vmlinux skb_checksum_help 0x1c4d51c8 +vmlinux skb_clone 0x8e79321f +vmlinux skb_clone_fraglist 0x1a123895 +vmlinux skb_copy 0x2adc151c +vmlinux skb_copy_and_csum_bits 0x2c031c2d +vmlinux skb_copy_and_csum_datagram_iovec 0x3a6cfc14 +vmlinux skb_copy_and_csum_dev 0x805a9d6d +vmlinux skb_copy_bits 0x53cef74a +vmlinux skb_copy_datagram_iovec 0x0abadff2 +vmlinux skb_copy_expand 0x10d7342c +vmlinux skb_cow_data 0x46ffc990 +vmlinux skb_dequeue 0x78966932 +vmlinux skb_dequeue_tail 0x95a401da +vmlinux skb_find_text 0x50df4430 +vmlinux skb_free_datagram 0x5e41c2d8 +vmlinux skb_icv_walk 0x75e93563 +vmlinux skb_insert 0xae5215fe +vmlinux skb_make_writable 0x347c6e94 +vmlinux skb_migrate 0x84df8541 +vmlinux skb_over_panic 0x637a4273 +vmlinux skb_pad 0xec520b3f +vmlinux skb_prepare_seq_read 0x3a4fc395 +vmlinux skb_queue_head 0x36684ac3 +vmlinux skb_queue_purge 0xfdf4b20d +vmlinux skb_queue_tail 0x9e9ea907 +vmlinux skb_realloc_headroom 0xaaefdcbb +vmlinux skb_recv_datagram 0x6e866f3f +vmlinux skb_seq_read 0xdd88c324 +vmlinux skb_split 0xa45a1f20 +vmlinux skb_store_bits 0x05a2cf90 +vmlinux skb_to_sgvec 0x08db8315 +vmlinux skb_under_panic 0x2fc2d3e2 +vmlinux skb_unlink 0x294d15c2 +vmlinux sleep_on 0x4823b05a +vmlinux sleep_on_timeout 0x370bfb3a +vmlinux smp_call_function 0x0014bfd1 +vmlinux smp_num_siblings 0xd1f6c5f3 +vmlinux snprintf 0xaf25400d +vmlinux sock_alloc_send_skb 0xb3d5518c +vmlinux sock_common_getsockopt 0x8ac57eda +vmlinux sock_common_recvmsg 0x1e7ea83c +vmlinux sock_common_setsockopt 0x5a8c254a +vmlinux sock_create 0x18cb2505 +vmlinux sock_create_kern 0xc8fffea8 +vmlinux sock_create_lite 0x77615dd0 +vmlinux sock_enable_timestamp 0x4bbe2b02 +vmlinux sock_get_timestamp 0xb1552ac3 +vmlinux sock_i_ino 0x90409bfb +vmlinux sock_i_uid 0xd9c898ed +vmlinux sock_init_data 0x353f28f1 +vmlinux sock_kfree_s 0xb7a21564 +vmlinux sock_kmalloc 0xdec6086e +vmlinux sock_map_fd 0x812c42dd +vmlinux sock_no_accept 0x9e66c880 +vmlinux sock_no_bind 0xd5f0807e +vmlinux sock_no_connect 0x29280f0f +vmlinux sock_no_getname 0x5902f295 +vmlinux sock_no_getsockopt 0x7b469197 +vmlinux sock_no_ioctl 0x75d0fb9a +vmlinux sock_no_listen 0xdf9d5d23 +vmlinux sock_no_mmap 0x9553637e +vmlinux sock_no_poll 0x199738d3 +vmlinux sock_no_recvmsg 0xdca6107d +vmlinux sock_no_sendmsg 0xd12e586c +vmlinux sock_no_sendpage 0x4f135795 +vmlinux sock_no_setsockopt 0x3f36d13e +vmlinux sock_no_shutdown 0xd2e7127c +vmlinux sock_no_socketpair 0x51e074a5 +vmlinux sock_recvmsg 0xc5a3ce29 +vmlinux sock_register 0xae3dd59c +vmlinux sock_release 0x5d35c686 +vmlinux sock_rfree 0xf489fa35 +vmlinux sock_sendmsg 0x39360762 +vmlinux sock_setsockopt 0x31285acb +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0x3d552c6c +vmlinux sock_wfree 0x1ed21c2f +vmlinux sock_wmalloc 0xb1b571f9 +vmlinux sockfd_lookup 0xecfee832 +vmlinux sonet_copy_stats 0x89195dc3 +vmlinux sonet_subtract_stats 0x1a24e5e2 +vmlinux sort 0x9ca95a0e +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux start_tty 0xa3d7651c +vmlinux steal_locks 0xb01a45b6 +vmlinux stop_tty 0x35443765 +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0xafe82e10 +vmlinux strlcat 0xb11fa1ce +vmlinux strlcpy 0x672144bd +vmlinux strlen 0x25ec1b28 +vmlinux strncat 0x234509f3 +vmlinux strnchr 0x7242e96d +vmlinux strncmp 0x85abc85f +vmlinux strncpy 0x7ec9bfbc +vmlinux strncpy_from_user 0x24428be5 +vmlinux strnicmp 0x756e6992 +vmlinux strnlen 0xcc07af75 +vmlinux strnlen_user 0xbcc308bb +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0x3fa913da +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0x6a15b495 +vmlinux submit_bh 0xc0196f94 +vmlinux submit_bio 0x64903db6 +vmlinux subsys_create_file 0x417d17d9 +vmlinux subsys_remove_file 0x77df0531 +vmlinux subsystem_init 0x819634ac +vmlinux subsystem_register 0x22dd59a7 +vmlinux subsystem_unregister 0x77f53e63 +vmlinux suid_dumpable 0xb694c524 +vmlinux swap_io_context 0xbbc814df +vmlinux swiotlb 0x47636033 +vmlinux swiotlb_alloc_coherent 0x48384a93 +vmlinux swiotlb_dma_mapping_error 0xaaeb10d3 +vmlinux swiotlb_dma_supported 0x61f8fa72 +vmlinux swiotlb_free_coherent 0x7871f7a9 +vmlinux swiotlb_init 0x8e0594bc +vmlinux swiotlb_map_sg 0xd0c8d28d +vmlinux swiotlb_map_single 0x38e435b5 +vmlinux swiotlb_sync_sg_for_cpu 0xfc5c950a +vmlinux swiotlb_sync_sg_for_device 0x72f8e34c +vmlinux swiotlb_sync_single_for_cpu 0xdd6fa7fa +vmlinux swiotlb_sync_single_for_device 0x22573e5d +vmlinux swiotlb_sync_single_range_for_cpu 0x92c5bc47 +vmlinux swiotlb_sync_single_range_for_device 0x6565fba1 +vmlinux swiotlb_unmap_sg 0xf50cc15a +vmlinux swiotlb_unmap_single 0xf07b72d8 +vmlinux switch_APIC_timer_to_ipi 0xa5c79544 +vmlinux switch_ipi_to_APIC_timer 0xac7eb84c +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0x23c0756e +vmlinux sync_dirty_buffer 0x3f2915be +vmlinux sync_inode 0x2ad7ccc8 +vmlinux sync_mapping_buffers 0xa4f26dc9 +vmlinux sync_page_range 0x0201c226 +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xdcb0349b +vmlinux sys_ioctl 0x208ce54a +vmlinux sys_open 0xe269ea1c +vmlinux sys_read 0x12703a3e +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sysctl_intvec 0x04ebf6d3 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0x4ca9673f +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0x20a28466 +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0x8a0b8c22 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x53d2e9e4 +vmlinux sysdev_class_unregister 0x2f49a890 +vmlinux sysdev_create_file 0x71d7be53 +vmlinux sysdev_driver_register 0xa0a01a23 +vmlinux sysdev_driver_unregister 0xd4fb385a +vmlinux sysdev_register 0x42f1ae79 +vmlinux sysdev_remove_file 0x83bdc9f6 +vmlinux sysdev_unregister 0x7587fac1 +vmlinux sysfs_chmod_file 0xc8f4a291 +vmlinux sysfs_create_bin_file 0xeaba621f +vmlinux sysfs_create_dir 0x1a412f7d +vmlinux sysfs_create_file 0xaca557f3 +vmlinux sysfs_create_group 0x53c41afb +vmlinux sysfs_create_link 0xd87145fc +vmlinux sysfs_remove_bin_file 0x278fe9bd +vmlinux sysfs_remove_dir 0xcc50a37e +vmlinux sysfs_remove_file 0x25445175 +vmlinux sysfs_remove_group 0x9d41ff14 +vmlinux sysfs_remove_link 0x87537606 +vmlinux sysfs_rename_dir 0x11d963a4 +vmlinux sysfs_update_file 0xddcb0009 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0x6d803f4f +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0x7125e15f +vmlinux task_nice 0x9ca13e66 +vmlinux task_no_data_intr 0x6d5d248c +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0x0965e085 +vmlinux tc_classify 0x87c9f5c7 +vmlinux tcf_em_register 0xfac90f3d +vmlinux tcf_em_tree_destroy 0xd4a90db9 +vmlinux tcf_em_tree_dump 0x72032473 +vmlinux tcf_em_tree_validate 0x08a1a6d6 +vmlinux tcf_em_unregister 0x328cf4d3 +vmlinux tcf_exts_change 0x0ba6b217 +vmlinux tcf_exts_destroy 0x85024348 +vmlinux tcf_exts_dump 0x24a604d7 +vmlinux tcf_exts_dump_stats 0x2cd2011e +vmlinux tcf_exts_validate 0xda622bee +vmlinux tcf_police 0x8c37bc57 +vmlinux tcf_police_destroy 0x9db102ce +vmlinux tcf_police_dump 0x0689a487 +vmlinux tcf_police_dump_stats 0x118e787a +vmlinux tcf_police_hash 0x8493d6e7 +vmlinux tcf_police_ht 0x59979e7f +vmlinux tcf_police_locate 0xdc0b2fa6 +vmlinux tcf_police_lookup 0x33fcccbc +vmlinux tcf_police_new_index 0x7ae0f6c9 +vmlinux tcp_check_req 0xd889d002 +vmlinux tcp_child_process 0x00c0cb5d +vmlinux tcp_close 0x29649043 +vmlinux tcp_connect 0xc91e7023 +vmlinux tcp_create_openreq_child 0xed068746 +vmlinux tcp_death_row 0xb08bb168 +vmlinux tcp_disconnect 0x7b7f3475 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0xeb93445c +vmlinux tcp_getsockopt 0x49adc31f +vmlinux tcp_hashinfo 0xcebb7266 +vmlinux tcp_init_congestion_ops 0x5e498ee7 +vmlinux tcp_init_xmit_timers 0x251bfeb4 +vmlinux tcp_ioctl 0x58085202 +vmlinux tcp_make_synack 0x97450974 +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0x62068952 +vmlinux tcp_poll 0xe886f79d +vmlinux tcp_proc_register 0x669a865a +vmlinux tcp_proc_unregister 0x8842c64d +vmlinux tcp_prot 0x8c987407 +vmlinux tcp_rcv_established 0xbd50fb2c +vmlinux tcp_rcv_state_process 0x4969af3d +vmlinux tcp_read_sock 0x2718425d +vmlinux tcp_recvmsg 0x76657b29 +vmlinux tcp_register_congestion_control 0xbfc82a2c +vmlinux tcp_reno_cong_avoid 0xd0fef4db +vmlinux tcp_reno_min_cwnd 0x43a68513 +vmlinux tcp_reno_ssthresh 0xe344ab8e +vmlinux tcp_sendmsg 0x446dcfa6 +vmlinux tcp_sendpage 0x95745790 +vmlinux tcp_setsockopt 0xcb9a39bc +vmlinux tcp_shutdown 0x77ac16ca +vmlinux tcp_simple_retransmit 0x4549679b +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0x23ca3790 +vmlinux tcp_timewait_state_process 0x1e447bfe +vmlinux tcp_unhash 0x56ffde65 +vmlinux tcp_unregister_congestion_control 0x6b49f254 +vmlinux tcp_v4_conn_request 0x0be202c1 +vmlinux tcp_v4_connect 0x7b58e9df +vmlinux tcp_v4_destroy_sock 0x17b90825 +vmlinux tcp_v4_do_rcv 0xde720d0f +vmlinux tcp_v4_remember_stamp 0x5b8e439e +vmlinux tcp_v4_send_check 0x49b6e4ae +vmlinux tcp_v4_syn_recv_sock 0x773b9ff3 +vmlinux test_clear_page_dirty 0xc596d1c1 +vmlinux test_set_page_writeback 0x29c09401 +vmlinux textsearch_destroy 0xc33f68aa +vmlinux textsearch_find_continuous 0x39aa36c3 +vmlinux textsearch_prepare 0xa1ac9571 +vmlinux textsearch_register 0x235df69e +vmlinux textsearch_unregister 0x6f0d3248 +vmlinux thaw_bdev 0xdb453206 +vmlinux timespec_trunc 0xc045ad4e +vmlinux totalram_pages 0xde9360ba +vmlinux touch_nmi_watchdog 0xf51ae235 +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux tr_source_route 0x5c9f68fa +vmlinux tr_type_trans 0xb2bf569e +vmlinux transport_add_device 0x7fa3343b +vmlinux transport_class_register 0xbdac1b1d +vmlinux transport_class_unregister 0x78ae1658 +vmlinux transport_configure_device 0x3ba01022 +vmlinux transport_destroy_device 0xe2915bc8 +vmlinux transport_remove_device 0x1bcc3051 +vmlinux transport_setup_device 0x26ba4747 +vmlinux truncate_inode_pages 0xe8b77a05 +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0xe415dafc +vmlinux try_to_release_page 0xf00e24ac +vmlinux tty_check_change 0x50bd8d2f +vmlinux tty_flip_buffer_push 0xc8c0b1ae +vmlinux tty_get_baud_rate 0x9b5899a6 +vmlinux tty_hangup 0xb229451b +vmlinux tty_hung_up_p 0x3a278312 +vmlinux tty_ldisc_deref 0xa5d02df8 +vmlinux tty_ldisc_flush 0xb4a9a978 +vmlinux tty_ldisc_get 0xd4a7ad39 +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x00e3895f +vmlinux tty_ldisc_ref_wait 0x7cdead09 +vmlinux tty_name 0x7acc53b5 +vmlinux tty_register_device 0x4339398d +vmlinux tty_register_driver 0x63aeac40 +vmlinux tty_register_ldisc 0xeb98638b +vmlinux tty_set_operations 0x84410693 +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0x804cc5a1 +vmlinux tty_unregister_driver 0xe6c45867 +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0x9d0ef51e +vmlinux tty_wait_until_sent 0x416e34e9 +vmlinux tty_wakeup 0x41a2ae64 +vmlinux uart_add_one_port 0x37d3ac02 +vmlinux uart_get_baud_rate 0xdc3dfd87 +vmlinux uart_get_divisor 0x7066384f +vmlinux uart_match_port 0x1b6bac9e +vmlinux uart_register_driver 0xb921d5a5 +vmlinux uart_remove_one_port 0x2481f175 +vmlinux uart_resume_port 0xdf91dd00 +vmlinux uart_suspend_port 0x7e033336 +vmlinux uart_unregister_driver 0xb6370b4c +vmlinux uart_update_timeout 0xd91a56ba +vmlinux uart_write_wakeup 0x6e29c850 +vmlinux udp_disconnect 0x4a3890d2 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0x7425ac56 +vmlinux udp_ioctl 0x2bb70e89 +vmlinux udp_poll 0x6cce2ffc +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x95937993 +vmlinux udp_proc_unregister 0x3476f791 +vmlinux udp_prot 0x9126695d +vmlinux udp_sendmsg 0x7e8e7909 +vmlinux uhci_check_and_reset_hc 0xcab5f3c9 +vmlinux uhci_reset_hc 0x187a40cb +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unload_nls 0xbd8910e9 +vmlinux unlock_buffer 0x0cc6bae5 +vmlinux unlock_cpu_hotplug 0xdbb6cbd9 +vmlinux unlock_kernel 0xb1f975aa +vmlinux unlock_new_inode 0x327a9f98 +vmlinux unlock_page 0x45d4e07c +vmlinux unlock_rename 0x7275b70e +vmlinux unmap_mapping_range 0xf1d546a0 +vmlinux unmap_page_from_agp 0xca7c154d +vmlinux unmap_underlying_metadata 0xcef9cfbb +vmlinux unregister_8022_client 0x68416490 +vmlinux unregister_acpi_bus_type 0xbb405eb4 +vmlinux unregister_binfmt 0xee706898 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0x4420eb94 +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_exec_domain 0xc5015176 +vmlinux unregister_filesystem 0xd41867ee +vmlinux unregister_framebuffer 0xe1e196e2 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_key_type 0xbb2eeeb7 +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0x6a0adf83 +vmlinux unregister_netdevice 0xb5ce799a +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0xe3aee950 +vmlinux unregister_qdisc 0x58d85ee6 +vmlinux unregister_quota_format 0x79aa2063 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0xf289a920 +vmlinux unregister_snap_client 0x12419db9 +vmlinux unregister_sysctl_table 0xab9fe464 +vmlinux unregister_sysrq_key 0x45c4d379 +vmlinux unregister_tcf_proto_ops 0x72b8b8e3 +vmlinux unregister_timer_hook 0x57da507b +vmlinux unregister_wlandev 0xc61a3d3d +vmlinux unset_nmi_callback 0x2ef9373e +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0x39396b52 +vmlinux update_region 0xba46828f +vmlinux user_describe 0x45cc541d +vmlinux user_destroy 0x64ba8f80 +vmlinux user_duplicate 0x7c947788 +vmlinux user_instantiate 0x9ef2d1a7 +vmlinux user_match 0x8e3bbf39 +vmlinux user_read 0xbe9f2657 +vmlinux user_update 0x49a9c8f2 +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0x67cd4622 +vmlinux vc_cons 0xf626c9f1 +vmlinux vc_resize 0xcf36b028 +vmlinux vcc_hash 0x2cc2d52d +vmlinux vcc_insert_socket 0xb795e54d +vmlinux vcc_release_async 0x92f07025 +vmlinux vcc_sklist_lock 0xb8a20d62 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0x645fa554 +vmlinux vfs_follow_link 0x44c65828 +vmlinux vfs_fstat 0x2a0837e6 +vmlinux vfs_get_dqblk 0x38eeff04 +vmlinux vfs_get_dqinfo 0xb395a4f2 +vmlinux vfs_getattr 0xd37a556b +vmlinux vfs_link 0x8bc0d2d1 +vmlinux vfs_llseek 0x93c5c926 +vmlinux vfs_lstat 0x12344839 +vmlinux vfs_mkdir 0x7a77b1a7 +vmlinux vfs_mknod 0x5f7acae3 +vmlinux vfs_permission 0xb0ed1149 +vmlinux vfs_quota_off 0xc9f61d5b +vmlinux vfs_quota_on 0x8b000c97 +vmlinux vfs_quota_on_mount 0xb8c70e5f +vmlinux vfs_quota_sync 0xd1792862 +vmlinux vfs_read 0x34ec8d97 +vmlinux vfs_readdir 0x763bf5df +vmlinux vfs_readlink 0x986b85ac +vmlinux vfs_readv 0xc9e1146c +vmlinux vfs_rename 0xb356209f +vmlinux vfs_rmdir 0xf5d3640f +vmlinux vfs_set_dqblk 0xc8b1f84d +vmlinux vfs_set_dqinfo 0xddf2c416 +vmlinux vfs_stat 0x787feff6 +vmlinux vfs_statfs 0x21b7f32d +vmlinux vfs_symlink 0x9adb2f57 +vmlinux vfs_unlink 0x1bed5ac6 +vmlinux vfs_write 0x0c22d23f +vmlinux vfs_writev 0x1f400a68 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x6993ee3c +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_to_page 0x6c942c6e +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0xb0c34e34 +vmlinux vmtruncate 0x40f9bb88 +vmlinux vprintk 0x777a8e29 +vmlinux vscnprintf 0xf3522c9c +vmlinux vsnprintf 0x0e57f111 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0xdfa4a7d0 +vmlinux wait_for_completion_interruptible 0x5ca670a0 +vmlinux wait_for_completion_interruptible_timeout 0x7dde7069 +vmlinux wait_for_completion_timeout 0x139c77f7 +vmlinux wait_on_page_bit 0x5ebc5f11 +vmlinux wait_on_sync_kiocb 0xd910c0f1 +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0x2d7dee69 +vmlinux wireless_send_event 0xbc95af32 +vmlinux wireless_spy_update 0x12f77515 +vmlinux wlan_setup 0x825c6503 +vmlinux wlan_unsetup 0x28e07e18 +vmlinux write_inode_now 0xcba7d03d +vmlinux write_one_page 0xfcb9a8d1 +vmlinux x86_acpiid_to_apicid 0x062bdb0e +vmlinux x86_cpu_to_apicid 0xc39d1fd0 +vmlinux xfrm4_rcv 0x04e14cb1 +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0x2fc5e2e5 +vmlinux xfrm_bundle_ok 0x620a12c0 +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0x9119b8da +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0x3f49c090 +vmlinux xfrm_dst_lookup 0xf2fe9d29 +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0xa39a56d1 +vmlinux xfrm_find_acq_byseq 0xb28fc3cb +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0x144b4c65 +vmlinux xfrm_init_state 0x08f8264e +vmlinux xfrm_lookup 0xb89e8977 +vmlinux xfrm_parse_spi 0x622ca503 +vmlinux xfrm_policy_alloc 0xe2046e5c +vmlinux xfrm_policy_byid 0xab6cd11b +vmlinux xfrm_policy_bysel 0x0bc07824 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x9d02970a +vmlinux xfrm_policy_list 0x66a7ce51 +vmlinux xfrm_policy_register_afinfo 0x6a26b61d +vmlinux xfrm_policy_unregister_afinfo 0x2f05baf0 +vmlinux xfrm_policy_walk 0x514e9b86 +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0x5b0b5ae2 +vmlinux xfrm_register_type 0x44a6df12 +vmlinux xfrm_replay_advance 0x7dc944f4 +vmlinux xfrm_replay_check 0xaebdf291 +vmlinux xfrm_state_add 0x572d0d49 +vmlinux xfrm_state_alloc 0xfff5dce6 +vmlinux xfrm_state_check 0x51d30d87 +vmlinux xfrm_state_check_expire 0x118dcda6 +vmlinux xfrm_state_delete 0x488ae874 +vmlinux xfrm_state_delete_tunnel 0xf0834e4a +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0xaeac5596 +vmlinux xfrm_state_lookup 0xae9785a2 +vmlinux xfrm_state_mtu 0x34627ba6 +vmlinux xfrm_state_register_afinfo 0x0d6783cb +vmlinux xfrm_state_unregister_afinfo 0x2cf3b649 +vmlinux xfrm_state_update 0xf257af67 +vmlinux xfrm_state_walk 0x745e1b72 +vmlinux xfrm_unregister_km 0x4f1e2edd +vmlinux xfrm_unregister_type 0xe8e2cca4 +vmlinux xfrm_user_policy 0xbbb61a5b +vmlinux xrlim_allow 0x02e3c20f +vmlinux xtime 0xb56717cf +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0xe78e9dd3 +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0xec0e0473 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/amd64/amd64-xeon.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/amd64/amd64-xeon.modules @@ -0,0 +1,1561 @@ +3c359 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-xxxx +6pack +8021q +8139cp +8139too +8390 +9p2000 +a3d +aacraid +abyss +ac +ac97_codec +acecad +acenic +aci +acpi-cpufreq +acpiphp +acpiphp_ibm +acpi_sbs +acquirewdt +act200l-sir +actisys-sir +acx +ad1848 +ad1889 +adfs +adi +adlib_card +adm1021 +adm1025 +adm1026 +adm1031 +adm8211 +adm9240 +adv7170 +adv7175 +adv717x +advansys +advantechwdt +aec62xx +aedsp16 +aes +aes-x86_64 +affs +af_key +af_packet +ah4 +ah6 +ahci +aic79xx +aic7xxx +aic7xxx_old +aic94xx +aiptek +airo +airo_cs +airprime +ali-ircc +alim1535_wdt +alim15x3 +alim7101_wdt +ambassador +amd74xx +amd76xrom +amd8111e +analog +anubis +aoe +appletalk +appletouch +applicom +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +arptable_filter +arp_tables +arpt_mangle +asb100 +asfs +asix +asus_acpi +at76c503 +at76c503-i3861 +at76c503-i3863 +at76c503-rfmd +at76c503-rfmd-acc +at76c505a-rfmd2958 +at76c505-rfmd +at76c505-rfmd2958 +at76c651 +at76_usbdfu +ata_piix +aten +atiixp +ati_remote +ati_remote2 +atmel +atmel_cs +atmel_pci +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +auerswald +auth_rpcgss +autofs +autofs4 +av5100 +avma1_cs +avm_cs +avmfritz +ax25 +axnet_cs +b1 +b1dma +b1pci +b1pcmcia +b2c2-flexcop +b2c2-flexcop-pci +b2c2-flexcop-usb +b44 +backlight +battery +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm43xx +befs +belkin_sa +bfs +bfusb +binfmt_misc +bitblit +blkmtd +block2mtd +blowfish +bluecard_cs +bluetooth +bnep +bnx2 +bonding +bpa10x +bpck +bpqether +br2684 +bridge +bsd_comp +bt3c_cs +bt819 +bt856 +bt865 +bt878 +btcx-risc +bttv +btuart_cs +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +button +bw-qcam +c4 +capability +capi +capidrv +capifs +capmode +cassini +cast5 +cast6 +catc +cciss +cdc-acm +cdc_ether +cdc_subset +cdrom +cfbcopyarea +cfbfillrect +cfbimgblt +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +ch +chipreg +cicada +cifs +cinergyT2 +cirrusfb +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm4000_cs +cm4040_cs +cmd64x +cmtp +cn +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comm +commoncap +configfs +container +cp2101 +cpcihp_generic +cpcihp_zt5550 +cpia +cpia_pp +cpia_usb +cpqarray +cpu5wdt +cpufreq_conservative +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace +cpuid +c-qcam +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs46xx +cs53l32a +cs5520 +cs5530 +ct82c710 +cx22700 +cx22702 +cx24110 +cx25840 +cx8800 +cx8802 +cx88-blackbird +cx88-dvb +cx88xx +cxacru +cxgb +cy82c693 +cyber2000fb +cyberjack +cyblafb +cyclades +cyclomx +cycx_drv +cypress_m8 +cytherm +dabusb +DAC960 +davicom +dazuko +db9 +dc395x +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +dcdbas +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +dell_rbu +des +dev_acpi +dgrs +dib3000-common +dib3000mb +dib3000mc +digi_acceleport +dilnetpc +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dm-bbr +dm-crypt +dm-emc +dmfe +dm-mirror +dm-mod +dm-multipath +dm-round-robin +dm-snapshot +dmx3191d +dm-zero +dn_rtmsg +doc2000 +doc2001 +doc2001plus +docecc +docprobe +dpc7146 +drm +ds1337 +ds1374 +ds1621 +ds9490r +dsbr100 +dscc4 +dss1_divert +dst +dst_ca +dstr +ds_w1_bridge +dtl1_cs +dtlk +dummy +dv1394 +dvb-bt8xx +dvb-core +dvb-pll +dvb-ttpci +dvb-ttusb-budget +dvb-usb +dvb-usb-a800 +dvb-usb-cxusb +dvb-usb-dibusb-common +dvb-usb-dibusb-mb +dvb-usb-dibusb-mc +dvb-usb-digitv +dvb-usb-dtt200u +dvb-usb-nova-t-usb2 +dvb-usb-umt-010 +dvb-usb-vp702x +dvb-usb-vp7045 +e100 +e1000 +eagle-usb +eata +eata_pio +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +econet +eepro100 +eeprom +efs +ehci-hcd +elo +elsa_cs +em28xx +em8300 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +em_text +emu10k1-gp +em_u32 +eni +epat +epca +epia +epic100 +eql +esi-sir +esp4 +esp6 +eth1394 +eurotechwdt +evbug +evdev +exportfs +ext2 +ext3 +fakephp +fan +farsync +fat +faulty +faxl3 +fbcon +fdomain +fdomain_cs +fealnx +firestream +fit2 +fit3 +floppy +fm801-gp +fmvj18x_cs +font +forcedeth +fore_200e +freevxfs +freq_table +friq +frpw +fsam7400 +fscher +fscpos +ftape +ftdi_sio +ftl +fuse +g450_pll +gadgetfs +gamecon +gameport +garmin_gps +gdth +generic +generic_serial +gen_probe +g_ether +gf2k +g_file_storage +girbil-sir +gl518sm +gl520sm +gl620a +gnbd +grip +grip_mp +g_serial +guillemot +gunze +gx1fb +g_zero +hamachi +hangcheck-timer +hci_uart +hci_usb +hci_vhci +hdaps +hdlc +hdlcdrv +he +hermes +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hidp +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hotkey +hp100 +hp4x +hpfs +hpt34x +hpt366 +hwmon-vid +hw_random +hysdn +i2c_acpi_ec +i2c-algo-bit +i2c-algo-pca +i2c-algo-pcf +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-core +i2c-dev +i2c-i801 +i2c-i810 +i2c-isa +i2c-matroxfb +i2c-nforce2 +i2c-parport +i2c-parport-light +i2c-pca-isa +i2c-piix4 +i2c-prosavage +i2c-savage4 +i2c-sis5595 +i2c-sis630 +i2c-sis96x +i2c-stub +i2c-via +i2c-viapro +i2c-voodoo3 +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i6300esb +i810 +i810_audio +i82092 +i830 +i8xx_tco +i915 +ib700wdt +ib_cm +ib_core +ib_ipoib +ibm_acpi +ib_mad +ibmasm +ibmasr +ibmcam +ib_mthca +ib_sa +ib_srp +ib_ucm +ib_umad +ib_uverbs +ichxrom +ide-cd +ide-cs +ide-disk +ide-floppy +ide-generic +ide-pnp +ide-scsi +ide-tape +idmouse +idt77252 +ieee1394 +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +iforce +imm +inftl +initio +intel-agp +interact +io_edgeport +io_ti +ip2 +ip2main +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipaq +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipddp +ipg +ip_gre +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipr +ips +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_physdev +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ip_vs +ip_vs_dh +ip_vs_ftp +ip_vs_lblc +ip_vs_lblcr +ip_vs_lc +ip_vs_nq +ip_vs_rr +ip_vs_sed +ip_vs_sh +ip_vs_wlc +ip_vs_wrr +ipw +ipw2100 +ipw2200 +ipw3945 +ipx +ircomm +ir-common +ircomm-tty +irda +irda-usb +ir-kbd-gpio +ir-kbd-i2c +irlan +irnet +irport +irtty-sir +ir-usb +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isdnloop +islsm +islsm_device +islsm_pci +islsm_usb +isofs +istallion +it821x +it87 +itmtouch +ixgb +ixj +ixj_pcmcia +jbd +jedec_probe +jffs +jffs2 +jfs +joydev +joydump +jsm +kafs +kahlua +kaweth +kbic +kbtab +kernelcapi +keyspan +keyspan_pda +khazad +kl5kusb105 +kobil_sct +konicawc +ktti +kyrofb +l2cap +l3udss1 +l440gx +l64781 +lanai +lapb +lapbether +lcd +ldusb +lec +legousbtower +lgdt330x +libata +libcrc32c +libphy +lightning +linear +litelink-sir +lkkbd +llc2 +lm63 +lm75 +lm77 +lm78 +lm80 +lm83 +lm85 +lm87 +lm90 +lm92 +lmc +lockd +loop +lp +lpfc +lxt +ma600-sir +machzwd +macmodes +magellan +map_absent +map_funcs +map_ram +map_rom +marvell +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1619 +max6875 +mcp2120-sir +mct_u232 +md4 +mdc800 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mga +michael_mic +microcode +microtek +mii +minix +mISDN_capi +mISDN_core +mISDN_dsp +mISDN_dtmf +mISDN_isac +mISDN_l1 +mISDN_l2 +mISDN_x25dte +mk712 +mkiss +mmc_core +moxa +mpoa +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu401 +mrv8k +msdos +msp3400 +msr +mt312 +mt352 +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtdconcat +mtdcore +mtdpart +mtdram +mtouch +mtouchusb +multipath +multipath_drr +multipath_random +multipath_rr +multipath_wrandom +mwave +mxb +mxser +nand +nand_ecc +nand_ids +natsemi +nbd +ncpfs +ndiswrapper +ne2k-pci +neofb +net1080 +net2280 +netconsole +netrom +netsc520 +nettel +netwave_cs +newtonkbd +nfnetlink +nfnetlink_log +nfnetlink_queue +nfs +nfsd +nftl +n_hdlc +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +nls_cp737 +nls_cp775 +nls_cp850 +nls_cp852 +nls_cp855 +nls_cp857 +nls_cp860 +nls_cp861 +nls_cp862 +nls_cp863 +nls_cp864 +nls_cp865 +nls_cp866 +nls_cp869 +nls_cp874 +nls_cp932 +nls_cp936 +nls_cp949 +nls_cp950 +nls_euc-jp +nls_iso8859-1 +nls_iso8859-13 +nls_iso8859-14 +nls_iso8859-15 +nls_iso8859-2 +nls_iso8859-3 +nls_iso8859-4 +nls_iso8859-5 +nls_iso8859-6 +nls_iso8859-7 +nls_iso8859-9 +nls_koi8-r +nls_koi8-ru +nls_koi8-u +nls_utf8 +nmclan_cs +n_r3964 +ns558 +ns83820 +ns87415 +nsc-ircc +ntfs +nvidiafb +nvram +nxt2002 +nxt200x +nxt6000 +ohci1394 +ohci-hcd +old_belkin-sir +olympic +omninet +on20 +on26 +onenand +opl3 +opl3sa2 +oprofile +opti621 +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_pci +orinoco_plx +orinoco_tmd +osst +ov511 +ov511_decomp +ov518_decomp +ovcamchip +paride +parkbd +parport +parport_cs +parport_pc +parport_serial +pas2 +pbe5 +pc300 +pc87360 +pca9539 +pcc_acpi +pcd +pcf8574 +pcf8591 +pci +pci200syn +pciehp +pci_hotplug +pcilynx +pcips2 +pcmcia +pcmcia_core +pcmciamtd +pcnet32 +pcnet_cs +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pdc202xx_new +pdc202xx_old +pdc_adma +pegasus +pf +pg +phidgetkit +phidgetservo +phonedev +phram +physmap +piix +pktcdvd +pktgen +pl2303 +plat-ram +plip +plusb +pluto2 +pm2fb +pmc551 +pnc2000 +podxtpro +powermate +powernow-k8 +ppa +ppdev +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +processor +psmouse +pss +pt +pwc +qla1280 +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas408 +qlogicfc +qnx4 +qsemi +quickcam +quota_v1 +quota_v2 +r1000 +r128 +r8169 +r8187 +r818x +radeon +radeonfb +radio-gemtek-pci +radio-maestro +radio-maxiradio +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +raw +raw1394 +ray_cs +realcap +redboot +reed_solomon +reiserfs +relayfs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rio500 +riscom8 +rivafb +rndis_host +rocket +romfs +root_plug +rose +rpcsec_gss_krb5 +rpcsec_gss_spkm3 +rrunner +rsrc_nonstatic +rt2400 +rt2500 +rt2570 +rt61 +rtc8564 +rtl8150 +rxrpc +rz1000 +s1d13xxxfb +s2io +s5h1420 +saa5246a +saa5249 +saa6588 +saa6752hs +saa7110 +saa7111 +saa7114 +saa7115 +saa711x +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7134-oss +saa7146 +saa7146_vv +saa7185 +safe_serial +sas_class +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb +sb1000 +sbc60xxwdt +sbc8360 +sbc_gxx +sb_lib +sbni +sbp2 +sc1200 +sc1200wdt +sc520cdp +sc520_wdt +scb2_flash +sch_atm +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +sco +scsi_debug +scsi_mod +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi +scsi_transport_spi2 +sctp +scx200_acb +sdhci +sd_mod +se401 +seclvl +sedlbauer_cs +sedlfax +serial_cs +serio_raw +sermouse +serpent +serport +serverworks +sg +sha1 +sha256 +sha512 +shaper +shpchp +sidewinder +siimage +sir-dev +sis +sis190 +sis5513 +sis5595 +sis900 +sisfb +sisusbvga +sk98lin +skfp +skge +sky2 +sl811_cs +sl811-hcd +slc90e66 +slhc +slip +slram +smbfs +smc91c92_cs +smsc47b397 +smsc47m1 +smsc-ircc2 +sn9c102 +snd +snd-ac97-bus +snd-ac97-codec +snd-ad1889 +snd-ainstr-fm +snd-ainstr-simple +snd-ak4114 +snd-ak4117 +snd-ak4531-codec +snd-ak4xxx-adda +snd-ali5451 +snd-als4000 +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-azt3328 +snd-bt87x +snd-bt-sco +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs8427 +snd-dummy +snd-emu10k1 +snd-emu10k1-synth +snd-emu10k1x +snd-emux-synth +snd-ens1370 +snd-ens1371 +snd-es1938 +snd-es1968 +snd-fm801 +snd-hda-codec +snd-hda-intel +snd-hdsp +snd-hdspm +snd-hwdep +snd-i2c +snd-ice1712 +snd-ice1724 +snd-ice17xx-ak4xxx +snd-intel8x0 +snd-intel8x0m +snd-korg1212 +snd-maestro3 +snd-mixart +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-nm256 +snd-opl3-lib +snd-opl3-synth +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-rme32 +snd-rme96 +snd-rme9652 +snd-rtctimer +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-instr +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-oss +snd-seq-virmidi +snd-serial-u16550 +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-trident-synth +snd-usb-audio +snd-usb-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +softcursor +softdog +sony_acpi +sound +soundcore +sp8870 +sp887x +spaceball +spaceorb +spca5xx +specialix +spectrum_cs +speedstep-centrino +speedtch +squashfs +sr_mod +sstfb +st +stallion +starfire +stinger +stir4200 +stradis +strip +stv0297 +stv0299 +stv680 +sundance +sungem +sungem_phy +sunhme +suni +sunkbd +sunrpc +sx +sx8 +sym53c500_cs +sym53c8xx +synaptics-usb +synclink +synclink_cs +synclinkmp +syncppp +sysv +t1pci +tc1100-wmi +tcrypt +tda10021 +tda1004x +tda7432 +tda8083 +tda80xx +tda9840 +tda9875 +tda9887 +tdfx +tdfxfb +tea +tea6415c +tea6420 +tekram-sir +teles_cs +tg3 +tgr192 +thermal +tileblit +tipar +ti_usb_3410_5052 +tlclk +tmdc +tms380tr +tmscsim +tmspci +toshiba_acpi +touchkitusb +tpm +tpm_atmel +tpm_infineon +tpm_nsc +trident +tridentfb +triflex +trix +trm290 +ts5500_flash +ts_bm +tsdev +ts_fsm +ts_kmp +ttpci-eeprom +ttusb_dec +ttusbdecfe +tulip +tun +tuner +tuner-3036 +turbografx +tvaudio +tveeprom +tvmixer +tvp5150 +twidjoy +twofish +typhoon +uart401 +uart6850 +udf +ufs +uhci-hcd +uinput +uli526x +ultracam +umem +unionfs +uPD98402 +usbatm +usbcore +usbhid +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usb-storage +usbtest +usbvideo +uss720 +v4l1-compat +v4l2-common +ves1820 +ves1x93 +vesafb +vfat +vga16fb +vgastate +via +via686a +via82cxxx +via-ircc +via-rhine +via-velocity +vicam +video +video1394 +video-buf +video-buf-dvb +videocodec +videodev +visor +vlsi_ir +v_midi +vpx3220 +vsxxxaa +w1_ds2433 +w1_smem +w1_therm +w6692pci +w83627ehf +w83627hf +w83627hf_wdt +w83781d +w83792d +w83877f_wdt +w83977af_ir +w83977f_wdt +w83l785ts +w9966 +w9968cf +wacom +wafer5823wdt +wanrouter +wanxl +warrior +wavelan_cs +wbsd +wdt_pci +whiteheat +winbond-840 +wire +wl3501_cs +wm8775 +wp512 +x1205 +x25 +x25_asy +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xircom_tulip_cb +xor +xpad +xtkbd +xusbatm +yam +yealink +yellowfin +yenta_socket +zatm +zaurus +zd1201 +zd1211 +zftape +zft-compressor +zlib_deflate +zr36016 +zr36050 +zr36060 +zr36067 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/hppa/hppa64-smp +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/hppa/hppa64-smp @@ -0,0 +1,3758 @@ +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0xc81aadc0 +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0x5258da20 +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0xac5db655 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xdc30c180 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/block/loop loop_register_transfer 0xbda5edee +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/cdrom/cdrom cdrom_get_last_written 0x11363838 +drivers/cdrom/cdrom cdrom_get_media_event 0xa9fe3095 +drivers/cdrom/cdrom cdrom_ioctl 0x5fbcd623 +drivers/cdrom/cdrom cdrom_media_changed 0xef8e1fe7 +drivers/cdrom/cdrom cdrom_mode_select 0x5840ba7a +drivers/cdrom/cdrom cdrom_mode_sense 0x9bc24e34 +drivers/cdrom/cdrom cdrom_number_of_slots 0x61df0391 +drivers/cdrom/cdrom cdrom_open 0xaeeeb1d1 +drivers/cdrom/cdrom cdrom_release 0x39062529 +drivers/cdrom/cdrom init_cdrom_command 0x344adbd5 +drivers/cdrom/cdrom register_cdrom 0xbd88ad0c +drivers/cdrom/cdrom unregister_cdrom 0xa897f9bf +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/input/serio/hil_mlc hil_mlc_register 0x7e8f8d0f +drivers/input/serio/hil_mlc hil_mlc_unregister 0x459cf07a +drivers/input/serio/hp_sdc hp_sdc_dequeue_transaction 0xeaf270fc +drivers/input/serio/hp_sdc hp_sdc_enqueue_transaction 0x2208bf8b +drivers/input/serio/hp_sdc hp_sdc_release_cooked_irq 0xd97b8d49 +drivers/input/serio/hp_sdc hp_sdc_release_hil_irq 0x2d7c4a70 +drivers/input/serio/hp_sdc hp_sdc_release_timer_irq 0x9dccd37d +drivers/input/serio/hp_sdc hp_sdc_request_cooked_irq 0x4233a8eb +drivers/input/serio/hp_sdc hp_sdc_request_hil_irq 0xcf402f97 +drivers/input/serio/hp_sdc hp_sdc_request_timer_irq 0xb12bc1bd +drivers/md/dm-mirror dm_create_dirty_log 0x16327f88 +drivers/md/dm-mirror dm_destroy_dirty_log 0xc535cfc4 +drivers/md/dm-mirror dm_register_dirty_log_type 0xc62ab2f3 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x10a3e20d +drivers/md/dm-mod dm_get_device 0xbc95a258 +drivers/md/dm-mod dm_get_mapinfo 0x5c9a4c1f +drivers/md/dm-mod dm_io_async 0xfa542464 +drivers/md/dm-mod dm_io_async_bvec 0x5d1299f7 +drivers/md/dm-mod dm_io_async_vm 0x50699718 +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0xba58d054 +drivers/md/dm-mod dm_io_sync_bvec 0x63b41939 +drivers/md/dm-mod dm_io_sync_vm 0x2e71f549 +drivers/md/dm-mod dm_put_device 0xa5f7e8c5 +drivers/md/dm-mod dm_register_target 0xed736efb +drivers/md/dm-mod dm_table_event 0x12e5227f +drivers/md/dm-mod dm_table_flush_all 0xbddb64ca +drivers/md/dm-mod dm_table_get 0x15e523de +drivers/md/dm-mod dm_table_get_mode 0x33a94ec1 +drivers/md/dm-mod dm_table_get_size 0xc2ac0a56 +drivers/md/dm-mod dm_table_put 0x16f1eff4 +drivers/md/dm-mod dm_table_unplug_all 0x879c7bcc +drivers/md/dm-mod dm_unregister_target 0x83220f28 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0xf211eac5 +drivers/md/dm-mod kcopyd_client_create 0x70f54154 +drivers/md/dm-mod kcopyd_client_destroy 0xf6ec044e +drivers/md/dm-mod kcopyd_copy 0x4c2a3029 +drivers/md/md-mod bitmap_close_sync 0xd0e04fce +drivers/md/md-mod bitmap_daemon_work 0x789e9307 +drivers/md/md-mod bitmap_end_sync 0x2c97b31e +drivers/md/md-mod bitmap_endwrite 0x370ca770 +drivers/md/md-mod bitmap_start_sync 0xe7a9e8d5 +drivers/md/md-mod bitmap_startwrite 0x0dfe69a4 +drivers/md/md-mod bitmap_unplug 0x3e81219e +drivers/md/md-mod md_check_recovery 0xf47fe36c +drivers/md/md-mod md_done_sync 0x6a77c4f2 +drivers/md/md-mod md_error 0xbfde1afd +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x18e0cc58 +drivers/md/md-mod md_unregister_thread 0x2d30e6c6 +drivers/md/md-mod md_wakeup_thread 0x491183a3 +drivers/md/md-mod md_write_end 0x526d6d1a +drivers/md/md-mod md_write_start 0x0398574f +drivers/md/md-mod register_md_personality 0x63d17c58 +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0xbae9ddcc +drivers/message/fusion/mptbase mpt_HardResetHandler 0x2150e321 +drivers/message/fusion/mptbase mpt_add_sge 0x375d8126 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0x16a163ea +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0x927f43b3 +drivers/message/fusion/mptbase mpt_attach 0x550be366 +drivers/message/fusion/mptbase mpt_config 0x7e0b244e +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0xd2ecd0e8 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0xb550b49e +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x69d802be +drivers/message/fusion/mptbase mpt_findImVolumes 0xc0286a21 +drivers/message/fusion/mptbase mpt_free_fw_memory 0xf6c635a5 +drivers/message/fusion/mptbase mpt_free_msg_frame 0xf30e3ced +drivers/message/fusion/mptbase mpt_get_msg_frame 0x79cec882 +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0xdb16df0d +drivers/message/fusion/mptbase mpt_proc_root_dir 0xebec30ae +drivers/message/fusion/mptbase mpt_put_msg_frame 0x1cf841f2 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0xfa4c0230 +drivers/message/fusion/mptbase mpt_register 0xafe0cc2a +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0xbedd9bf7 +drivers/message/fusion/mptbase mpt_send_handshake_request 0x40d5d07e +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_toolbox 0x4eb217b5 +drivers/message/fusion/mptbase mpt_verify_adapter 0x85810b3c +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x5a2f9d83 +drivers/message/fusion/mptscsih mptscsih_abort 0xe009230b +drivers/message/fusion/mptscsih mptscsih_bios_param 0xcce54b83 +drivers/message/fusion/mptscsih mptscsih_bus_reset 0xe845bc45 +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x060cbc56 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0x116f751f +drivers/message/fusion/mptscsih mptscsih_event_process 0x36d9d375 +drivers/message/fusion/mptscsih mptscsih_host_reset 0x258e1f55 +drivers/message/fusion/mptscsih mptscsih_info 0x57a788a3 +drivers/message/fusion/mptscsih mptscsih_io_done 0x9d71134c +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0xdd0bc016 +drivers/message/fusion/mptscsih mptscsih_proc_info 0x04e3ff0c +drivers/message/fusion/mptscsih mptscsih_qcmd 0xa3e48fe4 +drivers/message/fusion/mptscsih mptscsih_remove 0xc10a928d +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0x25c1c787 +drivers/message/fusion/mptscsih mptscsih_shutdown 0x068e5a55 +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0xea40c6ed +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x655e5f3f +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0xfcb45300 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x25ed6539 +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_cntxt_list_add 0xd0dbb224 +drivers/message/i2o/i2o_core i2o_cntxt_list_get 0xcca1dc08 +drivers/message/i2o/i2o_core i2o_cntxt_list_get_ptr 0x6234e055 +drivers/message/i2o/i2o_core i2o_cntxt_list_remove 0xfcb0490e +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0xb13e5ed5 +drivers/message/i2o/i2o_core i2o_device_claim_release 0x0f6b4497 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0x76beff0a +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x9febc82c +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0xe0d1c736 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0x202fbd50 +drivers/message/i2o/i2o_core i2o_driver_register 0x8f9515ee +drivers/message/i2o/i2o_core i2o_driver_unregister 0x309d21e2 +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0x60d905ae +drivers/message/i2o/i2o_core i2o_exec_lct_get 0xb984b67e +drivers/message/i2o/i2o_core i2o_find_iop 0x3bda8fdd +drivers/message/i2o/i2o_core i2o_iop_find_device 0xd9afb948 +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x0d35cfe4 +drivers/message/i2o/i2o_core i2o_msg_nop 0x7d31fb7e +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0xe5a2232f +drivers/message/i2o/i2o_core i2o_parm_field_get 0xfb67aea8 +drivers/message/i2o/i2o_core i2o_parm_issue 0x5a9090b7 +drivers/message/i2o/i2o_core i2o_parm_table_get 0x787e6389 +drivers/message/i2o/i2o_core i2o_status_get 0xfbab37a8 +drivers/net/8390 NS8390_init 0x9b000b01 +drivers/net/8390 __alloc_ei_netdev 0x7c856f74 +drivers/net/8390 ei_close 0x0ad65705 +drivers/net/8390 ei_interrupt 0xf8dd9ad5 +drivers/net/8390 ei_open 0x383a2d98 +drivers/net/8390 ei_poll 0x1f4668ac +drivers/net/mii generic_mii_ioctl 0x1d67ffd0 +drivers/net/mii mii_check_gmii_support 0x992f23a4 +drivers/net/mii mii_check_link 0x936da7c5 +drivers/net/mii mii_check_media 0xf06bc8f9 +drivers/net/mii mii_ethtool_gset 0xc3f3fe94 +drivers/net/mii mii_ethtool_sset 0xc780e9c7 +drivers/net/mii mii_link_ok 0x292ba2b2 +drivers/net/mii mii_nway_restart 0xb20e7dbc +drivers/net/phy/libphy genphy_config_advert 0x547a08e0 +drivers/net/phy/libphy genphy_config_aneg 0xf63cff90 +drivers/net/phy/libphy genphy_read_status 0x2ca03f51 +drivers/net/phy/libphy mdiobus_register 0x93d0cee3 +drivers/net/phy/libphy mdiobus_unregister 0x80446675 +drivers/net/phy/libphy phy_attach 0xf92d0ff8 +drivers/net/phy/libphy phy_connect 0x6d75ce6a +drivers/net/phy/libphy phy_detach 0x2ea4e776 +drivers/net/phy/libphy phy_disable_interrupts 0x53b9ae46 +drivers/net/phy/libphy phy_disconnect 0xb6647394 +drivers/net/phy/libphy phy_driver_register 0x70919753 +drivers/net/phy/libphy phy_driver_unregister 0xa6714389 +drivers/net/phy/libphy phy_enable_interrupts 0x0882e248 +drivers/net/phy/libphy phy_print_status 0x5ee9ba08 +drivers/net/phy/libphy phy_read 0x12f85a48 +drivers/net/phy/libphy phy_sanitize_settings 0x22e7e18b +drivers/net/phy/libphy phy_start 0xf9e3a523 +drivers/net/phy/libphy phy_start_aneg 0x1fb83b43 +drivers/net/phy/libphy phy_start_interrupts 0xf2c2d730 +drivers/net/phy/libphy phy_stop 0x329ff076 +drivers/net/phy/libphy phy_stop_interrupts 0xc77f0009 +drivers/net/phy/libphy phy_write 0xb297ee48 +drivers/net/ppp_generic ppp_channel_index 0x6475033c +drivers/net/ppp_generic ppp_input 0x941339d2 +drivers/net/ppp_generic ppp_input_error 0x7fa3aa2c +drivers/net/ppp_generic ppp_output_wakeup 0x766e807e +drivers/net/ppp_generic ppp_register_channel 0x3517db76 +drivers/net/ppp_generic ppp_register_compressor 0x3c3dd628 +drivers/net/ppp_generic ppp_unit_number 0xa8e14369 +drivers/net/ppp_generic ppp_unregister_channel 0xe1f30243 +drivers/net/ppp_generic ppp_unregister_compressor 0x64568115 +drivers/net/pppox pppox_unbind_sock 0x22dd7b5e +drivers/net/pppox register_pppox_proto 0x318fe4f1 +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x6a47fcc2 +drivers/net/slhc slhc_free 0xeb3c59ef +drivers/net/slhc slhc_init 0x86de1d74 +drivers/net/slhc slhc_remember 0x9536b7c2 +drivers/net/slhc slhc_toss 0x3b36a20a +drivers/net/slhc slhc_uncompress 0xa532de34 +drivers/net/sungem_phy mii_phy_probe 0x98ef315e +drivers/net/wireless/airo init_airo_card 0xf9e2bb5f +drivers/net/wireless/airo reset_airo_card 0x985e11fc +drivers/net/wireless/airo stop_airo_card 0x3b3df98c +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0xea760ec8 +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0x30ee58ee +drivers/net/wireless/hostap/hostap hostap_80211_rx 0x741b7266 +drivers/net/wireless/hostap/hostap hostap_add_interface 0x967a7147 +drivers/net/wireless/hostap/hostap hostap_add_sta 0x64aa70f1 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0x0099525a +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0xba977f15 +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0x35b9d350 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0x9b8f1d2f +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0xdafff481 +drivers/net/wireless/hostap/hostap hostap_get_porttype 0xf082a85b +drivers/net/wireless/hostap/hostap hostap_get_stats 0x50ee69d3 +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0x1279d348 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x7457c7c8 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x4b047c61 +drivers/net/wireless/hostap/hostap hostap_info_init 0xa3ffe212 +drivers/net/wireless/hostap/hostap hostap_info_process 0x3ec31574 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0x4826d7f2 +drivers/net/wireless/hostap/hostap hostap_init_data 0xb8567980 +drivers/net/wireless/hostap/hostap hostap_init_proc 0x6f65fd96 +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0xeda1dd2d +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x1ba51211 +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0xf8c3fb73 +drivers/net/wireless/hostap/hostap hostap_proc 0x28f6f1eb +drivers/net/wireless/hostap/hostap hostap_remove_interface 0x2fbef096 +drivers/net/wireless/hostap/hostap hostap_remove_proc 0x1ee6db87 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0x44af14ff +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0x2d82c89f +drivers/net/wireless/hostap/hostap hostap_set_encryption 0x3bb62187 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0xf722d250 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0x3b04356d +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0x1c95913f +drivers/net/wireless/hostap/hostap hostap_set_string 0x19e27ba6 +drivers/net/wireless/hostap/hostap hostap_set_word 0xb42615ae +drivers/net/wireless/hostap/hostap hostap_setup_dev 0x45df8532 +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x5863055b +drivers/net/wireless/hostap/hostap hostap_update_rates 0x34558a9b +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x6af2cf9a +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0xe2b83b12 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0xd53f861f +drivers/net/wireless/orinoco __orinoco_down 0x7f54a419 +drivers/net/wireless/orinoco __orinoco_up 0x86767f30 +drivers/net/wireless/orinoco alloc_orinocodev 0x35ff4595 +drivers/net/wireless/orinoco free_orinocodev 0x681091fd +drivers/net/wireless/orinoco orinoco_interrupt 0x95438e21 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x4624b1cd +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0x1cbb008a +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x80dc60b8 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0x6553d9d9 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x30ba7311 +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0xa7f273b9 +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x9bb64e49 +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0xfb869f57 +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0x6820220d +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0x521c8a81 +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0xddeb3a38 +drivers/net/wireless/prism54_softmac/islsm register_islsm 0xae72b3d0 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0x27d8d96d +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0xd83c6ae7 +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0x73c329db +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0x7beea118 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0x181ea176 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0x8589996f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x46e11a37 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0xf5ad57aa +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0x7994d8ca +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0x7aa715a6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0x5668557c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0x0ca57ac0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0x4966af24 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x9c57418e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0x915017c2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0x00d3f5c7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0xc0e73ce7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0x2fa9c31d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x475b7a55 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0x08108852 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0xab8b942a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0xbfaff3d2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0x40eecdb6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0xacc3f659 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x0e6fb536 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0xf22dc9a1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0x0ca590b7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x38bed61f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x785fa5df +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0xef7bfacd +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0x4241b506 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0xa317f402 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x3781936d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0x28c831f6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0x8c99a591 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0x7211fc87 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x5ef8211f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0x91cf96fd +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0x8181f12b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x3cf5d936 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0xa607790f +drivers/parport/parport parport_announce_port 0x28d14dba +drivers/parport/parport parport_claim 0x3e02848c +drivers/parport/parport parport_claim_or_block 0x2b6742cb +drivers/parport/parport parport_find_base 0xb560dc8b +drivers/parport/parport parport_find_number 0xdf3c772b +drivers/parport/parport parport_get_port 0xee50d2da +drivers/parport/parport parport_ieee1284_ecp_read_data 0x71902335 +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xd266f19a +drivers/parport/parport parport_ieee1284_ecp_write_data 0xf3aca71c +drivers/parport/parport parport_ieee1284_epp_read_addr 0x98fdef4a +drivers/parport/parport parport_ieee1284_epp_read_data 0x60bce28f +drivers/parport/parport parport_ieee1284_epp_write_addr 0x6043de9a +drivers/parport/parport parport_ieee1284_epp_write_data 0x4189881c +drivers/parport/parport parport_ieee1284_interrupt 0x85b2e6f4 +drivers/parport/parport parport_ieee1284_read_byte 0x5d65e0cb +drivers/parport/parport parport_ieee1284_read_nibble 0x905f658b +drivers/parport/parport parport_ieee1284_write_compat 0xe29b1175 +drivers/parport/parport parport_negotiate 0xcac49cdb +drivers/parport/parport parport_put_port 0x517c2102 +drivers/parport/parport parport_read 0x3e692261 +drivers/parport/parport parport_register_device 0x449c7e80 +drivers/parport/parport parport_register_driver 0xf7cc5ca6 +drivers/parport/parport parport_register_port 0xd2ccf7ea +drivers/parport/parport parport_release 0xb709efa9 +drivers/parport/parport parport_remove_port 0x7374c47a +drivers/parport/parport parport_set_timeout 0x49ae475f +drivers/parport/parport parport_unregister_device 0xe181ba50 +drivers/parport/parport parport_unregister_driver 0x53e4aef8 +drivers/parport/parport parport_wait_event 0x813e0185 +drivers/parport/parport parport_wait_peripheral 0xf3064f0a +drivers/parport/parport parport_write 0x32bf1883 +drivers/parport/parport_pc parport_pc_probe_port 0x9f6a3c41 +drivers/parport/parport_pc parport_pc_unregister_port 0x3e9bf831 +drivers/pcmcia/pcmcia cs_error 0x65c0ced4 +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0xe300e8e9 +drivers/pcmcia/pcmcia pcmcia_deregister_client 0xe55fbad0 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0xdbfe64d7 +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0x901a4752 +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0xda408f19 +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0xa6356526 +drivers/pcmcia/pcmcia pcmcia_get_status 0xf15a7955 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0x8e2dee0a +drivers/pcmcia/pcmcia pcmcia_get_window 0xf63063bf +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0xffc1b1a4 +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0xc619afcc +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0x81475994 +drivers/pcmcia/pcmcia pcmcia_register_client 0xa232b92a +drivers/pcmcia/pcmcia pcmcia_register_driver 0xabda2a2a +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x19fed2b3 +drivers/pcmcia/pcmcia pcmcia_release_io 0x1c23e8ed +drivers/pcmcia/pcmcia pcmcia_release_irq 0xe73475bb +drivers/pcmcia/pcmcia pcmcia_release_window 0x71a5913e +drivers/pcmcia/pcmcia pcmcia_request_configuration 0x4db43ec5 +drivers/pcmcia/pcmcia pcmcia_request_io 0x9c176ef4 +drivers/pcmcia/pcmcia pcmcia_request_irq 0x78ef7a82 +drivers/pcmcia/pcmcia pcmcia_request_window 0xa78182a7 +drivers/pcmcia/pcmcia pcmcia_reset_card 0x2c508f61 +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0xf6622948 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0x81a8d39b +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0xaaf144e0 +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x23823876 +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0x36f325b3 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0x3ff720d2 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0xd72ff1f3 +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0x9f82646b +drivers/pcmcia/pcmcia_core pccard_reset_card 0xa708c905 +drivers/pcmcia/pcmcia_core pccard_static_ops 0x7e8d51f7 +drivers/pcmcia/pcmcia_core pccard_validate_cis 0xf2253955 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0x14839bb1 +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0xdb673de9 +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0x60149ddd +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0x54034984 +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0xeca31699 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0x7a7a0272 +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x09a8fc2c +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0x016d9415 +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0x353feed0 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xf99214a4 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0x2914632b +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0x88f85324 +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0xd3225e97 +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0x062c687d +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0x0ffe5a56 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0xe886b0e5 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0x0b2658a8 +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0xf9a9ecc6 +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x74ac6049 +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0x5fc3b7ac +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0xa5a13e31 +drivers/pcmcia/pcmcia_core release_cis_mem 0xa939b53d +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0xb4a9011f +drivers/scsi/53c700 NCR_700_detect 0x67f8f73f +drivers/scsi/53c700 NCR_700_intr 0x92565439 +drivers/scsi/53c700 NCR_700_release 0x10c341f4 +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x450508bb +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0xec14e08e +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x5c4c29e7 +drivers/scsi/qlogicfas408 qlogicfas408_abort 0xc792ba1c +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0x7b6441c5 +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0x5930c4a0 +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0xdde196d1 +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x0c32d554 +drivers/scsi/qlogicfas408 qlogicfas408_info 0x24a91b94 +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0xca23f18b +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0x0ff9dd0f +drivers/scsi/raid_class raid_class_release 0x7842a1a3 +drivers/scsi/raid_class raid_component_add 0xfba54a68 +drivers/scsi/sas/sas_class sas_register_ha 0xa464ee10 +drivers/scsi/sas/sas_class sas_unregister_ha 0x2b4debbb +drivers/scsi/scsi_transport_fc fc_attach_transport 0xaa470d31 +drivers/scsi/scsi_transport_fc fc_release_transport 0x583da6d9 +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x0a4491d8 +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0x9c968eda +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x78a78271 +drivers/scsi/scsi_transport_fc fc_remove_host 0xf380b4ac +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0xa3ba701e +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0xde1b1a33 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x08205392 +drivers/scsi/scsi_transport_sas sas_attach_transport 0x51f6a1ac +drivers/scsi/scsi_transport_sas sas_phy_add 0xb4b3160d +drivers/scsi/scsi_transport_sas sas_phy_alloc 0xe89fc3cc +drivers/scsi/scsi_transport_sas sas_phy_delete 0x8332cdbc +drivers/scsi/scsi_transport_sas sas_phy_free 0x33127b6a +drivers/scsi/scsi_transport_sas sas_release_transport 0xa9b16061 +drivers/scsi/scsi_transport_sas sas_remove_host 0x85c15847 +drivers/scsi/scsi_transport_sas sas_rphy_add 0x53fb1cca +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x9d7fc69d +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x26b03348 +drivers/scsi/scsi_transport_sas sas_rphy_free 0xc01bdd10 +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0xb699cacb +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0xa3886cdf +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x2da9033d +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0x131b60f2 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x1a6e20da +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0xcabcfe9e +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0xd23a0943 +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x956797e8 +drivers/usb/core/usbcore usb_alloc_dev 0x085bebfa +drivers/usb/core/usbcore usb_alloc_urb 0x99cfa70e +drivers/usb/core/usbcore usb_altnum_to_altsetting 0x7545fda9 +drivers/usb/core/usbcore usb_buffer_alloc 0x3abd9dc3 +drivers/usb/core/usbcore usb_buffer_free 0x34831b12 +drivers/usb/core/usbcore usb_buffer_map_sg 0x5cdaa84b +drivers/usb/core/usbcore usb_buffer_unmap_sg 0x2ac76c7f +drivers/usb/core/usbcore usb_bulk_msg 0x7ee111a8 +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0x798b14eb +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0x53397756 +drivers/usb/core/usbcore usb_claim_bandwidth 0xd41aecde +drivers/usb/core/usbcore usb_clear_halt 0xf88fce58 +drivers/usb/core/usbcore usb_control_msg 0x7c56a02e +drivers/usb/core/usbcore usb_create_hcd 0x7604d081 +drivers/usb/core/usbcore usb_deregister 0x40fc3384 +drivers/usb/core/usbcore usb_deregister_dev 0xd7cd76c0 +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0x47058127 +drivers/usb/core/usbcore usb_driver_claim_interface 0x5f5b53ad +drivers/usb/core/usbcore usb_driver_release_interface 0xdb65d15e +drivers/usb/core/usbcore usb_find_device 0xaff24962 +drivers/usb/core/usbcore usb_find_interface 0x43953241 +drivers/usb/core/usbcore usb_free_urb 0x67f3be44 +drivers/usb/core/usbcore usb_get_current_frame_number 0x827b6708 +drivers/usb/core/usbcore usb_get_descriptor 0x672a365a +drivers/usb/core/usbcore usb_get_dev 0x31914e5d +drivers/usb/core/usbcore usb_get_intf 0x84e38b41 +drivers/usb/core/usbcore usb_get_status 0x5ec973f8 +drivers/usb/core/usbcore usb_get_string 0x752562fb +drivers/usb/core/usbcore usb_get_urb 0xe234a4df +drivers/usb/core/usbcore usb_hc_died 0xb23a98b8 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0x9c251ad1 +drivers/usb/core/usbcore usb_hcd_pci_probe 0xf6fa748b +drivers/usb/core/usbcore usb_hcd_pci_remove 0xbbccb95e +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0xbc597858 +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0x35ff0406 +drivers/usb/core/usbcore usb_ifnum_to_if 0x2cf7af9e +drivers/usb/core/usbcore usb_init_urb 0xf5b7da80 +drivers/usb/core/usbcore usb_kill_urb 0x6309181e +drivers/usb/core/usbcore usb_lock_device 0xc83f230b +drivers/usb/core/usbcore usb_lock_device_for_reset 0xeef2ab92 +drivers/usb/core/usbcore usb_match_id 0xe112ad38 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0xe5b0d5ad +drivers/usb/core/usbcore usb_put_dev 0xaf882f6e +drivers/usb/core/usbcore usb_put_hcd 0x9e8ae859 +drivers/usb/core/usbcore usb_put_intf 0x4aebc1ea +drivers/usb/core/usbcore usb_register 0x09be25ff +drivers/usb/core/usbcore usb_register_dev 0xb33c07eb +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0xa33cf230 +drivers/usb/core/usbcore usb_remove_hcd 0xb62e00ea +drivers/usb/core/usbcore usb_reset_configuration 0x12e07e81 +drivers/usb/core/usbcore usb_reset_device 0xce6ac614 +drivers/usb/core/usbcore usb_set_device_state 0xc12f4d06 +drivers/usb/core/usbcore usb_set_interface 0xafc75a80 +drivers/usb/core/usbcore usb_sg_cancel 0xc6e13d30 +drivers/usb/core/usbcore usb_sg_init 0x7ec70304 +drivers/usb/core/usbcore usb_sg_wait 0x482da8a8 +drivers/usb/core/usbcore usb_string 0x2f0e58cb +drivers/usb/core/usbcore usb_submit_urb 0xe5b4c7c9 +drivers/usb/core/usbcore usb_trylock_device 0x1c8cb1df +drivers/usb/core/usbcore usb_unlink_urb 0x64cee66d +drivers/usb/core/usbcore usb_unlock_device 0x213e29ca +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/host/sl811-hcd sl811h_driver 0xa2758e5c +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0x30c3d4ea +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0x0d719ca8 +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0xb28f2cf7 +fs/configfs/configfs config_group_init 0xa4ed3152 +fs/configfs/configfs config_group_init_type_name 0x34123951 +fs/configfs/configfs config_item_get 0xe3b1949f +fs/configfs/configfs config_item_init 0xa6e98051 +fs/configfs/configfs config_item_init_type_name 0x71249382 +fs/configfs/configfs config_item_put 0xb27c2026 +fs/configfs/configfs config_item_set_name 0xa678a49b +fs/configfs/configfs configfs_register_subsystem 0xd311e217 +fs/configfs/configfs configfs_unregister_subsystem 0xff60ae00 +fs/exportfs/exportfs export_op_default 0x96993507 +fs/exportfs/exportfs find_exported_dentry 0x37259093 +fs/fat/fat fat_add_entries 0x2c6baae1 +fs/fat/fat fat_alloc_new_dir 0xb73a40cf +fs/fat/fat fat_attach 0x14bd36a4 +fs/fat/fat fat_build_inode 0xc3284733 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0xca1c2213 +fs/fat/fat fat_dir_empty 0xcb7101cc +fs/fat/fat fat_fill_super 0xdfdb26ed +fs/fat/fat fat_free_clusters 0xb9e9b602 +fs/fat/fat fat_fs_panic 0xcf2b4aa0 +fs/fat/fat fat_get_dotdot_entry 0xf0f18e2b +fs/fat/fat fat_notify_change 0x89e8004d +fs/fat/fat fat_remove_entries 0x1782bed9 +fs/fat/fat fat_scan 0xe6101050 +fs/fat/fat fat_search_long 0xc76ce0cb +fs/fat/fat fat_sync_bhs 0x10b44c49 +fs/fat/fat fat_sync_inode 0xbb8fc7e2 +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0xd9764a2d +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0x453a5513 +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0x9ead06f1 +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0xdbb0018d +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0x32782d93 +fs/jbd/jbd journal_abort 0x3e09b602 +fs/jbd/jbd journal_ack_err 0x30c03ffb +fs/jbd/jbd journal_blocks_per_page 0x505551c3 +fs/jbd/jbd journal_check_available_features 0x05d99d15 +fs/jbd/jbd journal_check_used_features 0x4ac4a981 +fs/jbd/jbd journal_clear_err 0xc6987891 +fs/jbd/jbd journal_create 0x49e1a7b4 +fs/jbd/jbd journal_destroy 0x2327d0e7 +fs/jbd/jbd journal_dirty_data 0xc479c3a8 +fs/jbd/jbd journal_dirty_metadata 0x78533d42 +fs/jbd/jbd journal_errno 0x1afae016 +fs/jbd/jbd journal_extend 0x702c693d +fs/jbd/jbd journal_flush 0xf2e9379f +fs/jbd/jbd journal_force_commit 0x00fd0884 +fs/jbd/jbd journal_force_commit_nested 0xa88ef5bf +fs/jbd/jbd journal_forget 0xf8346ec0 +fs/jbd/jbd journal_get_create_access 0xb1558305 +fs/jbd/jbd journal_get_undo_access 0x98fb13cb +fs/jbd/jbd journal_get_write_access 0x4e6cfe20 +fs/jbd/jbd journal_init_dev 0x2b9d1439 +fs/jbd/jbd journal_init_inode 0x45840000 +fs/jbd/jbd journal_invalidatepage 0xa2e46a85 +fs/jbd/jbd journal_load 0xf1b43d09 +fs/jbd/jbd journal_lock_updates 0x1936226c +fs/jbd/jbd journal_release_buffer 0x1c01ca0e +fs/jbd/jbd journal_restart 0xf02c7bf3 +fs/jbd/jbd journal_revoke 0x43a8fa03 +fs/jbd/jbd journal_set_features 0xdba62d0d +fs/jbd/jbd journal_start 0x079fa1d6 +fs/jbd/jbd journal_start_commit 0x53848fff +fs/jbd/jbd journal_stop 0xecca40b6 +fs/jbd/jbd journal_try_to_free_buffers 0xb768a307 +fs/jbd/jbd journal_unlock_updates 0x7e77519d +fs/jbd/jbd journal_update_format 0x5e616d2d +fs/jbd/jbd journal_update_superblock 0xd2a11995 +fs/jbd/jbd journal_wipe 0x2a47f12b +fs/jbd/jbd log_wait_commit 0xbc142732 +fs/nfsd/nfsd nfs4_acl_add_ace 0x1bb3671e +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x81a17396 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0xf56c2017 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0x1d747ce3 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xbaeb4700 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0xfcf4c723 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0x4a96e7ad +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0x2fa40d44 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x43bce54e +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0x36418553 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0x521e0726 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0x62c12825 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0x8e865c00 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x6e810725 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0x093fa10c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xa82a8645 +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0x3490d51c +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0x549c1545 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0x9e7fba0d +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0x0b2ce2b3 +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0x10af03a1 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0x97c33fee +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0xc738356d +fs/relayfs/relayfs relay_buf_full 0x36d58270 +fs/relayfs/relayfs relay_close 0x3bd34a8d +fs/relayfs/relayfs relay_flush 0xa4c2f048 +fs/relayfs/relayfs relay_open 0x6feb3947 +fs/relayfs/relayfs relay_reset 0x2799c0ba +fs/relayfs/relayfs relay_subbufs_consumed 0x4a58ef2f +fs/relayfs/relayfs relay_switch_subbuf 0x28faa8c5 +fs/relayfs/relayfs relayfs_create_dir 0x0cd8c6b5 +fs/relayfs/relayfs relayfs_file_operations 0x5adef7c4 +fs/relayfs/relayfs relayfs_remove_dir 0x0e36e9f5 +lib/crc-ccitt crc_ccitt 0x651c2313 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x9aabc564 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x41bcd8b3 +lib/libcrc32c crc32c_le 0x13c0c38e +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/bridge/bridge br_should_route_hook 0xf7884df2 +net/bridge/netfilter/ebtables ebt_do_table 0x0263f546 +net/bridge/netfilter/ebtables ebt_register_match 0x10395ae2 +net/bridge/netfilter/ebtables ebt_register_table 0xdaea6512 +net/bridge/netfilter/ebtables ebt_register_target 0x01120fcf +net/bridge/netfilter/ebtables ebt_register_watcher 0xd49a0e8e +net/bridge/netfilter/ebtables ebt_unregister_match 0x37acbcbf +net/bridge/netfilter/ebtables ebt_unregister_table 0xe3103910 +net/bridge/netfilter/ebtables ebt_unregister_target 0xc444fbc5 +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x2e4980cd +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0xd846acb9 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0xb5b65e72 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x0fece10d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xb34906b8 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0x3d0fbdbc +net/dccp/dccp ccid_init 0x042682b6 +net/dccp/dccp ccid_register 0x9edeaecc +net/dccp/dccp ccid_unregister 0xb46a1d48 +net/dccp/dccp dccp_hashinfo 0xe0475d23 +net/dccp/dccp dccp_insert_option 0x3cbfb033 +net/dccp/dccp dccp_insert_option_elapsed_time 0xcb26fdf1 +net/dccp/dccp dccp_insert_option_timestamp 0xd91c4b33 +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0x092b7cc0 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0x311097a7 +net/ieee80211/ieee80211 alloc_ieee80211 0x491035c5 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0xa5274892 +net/ieee80211/ieee80211 ieee80211_channel_to_index 0x1d7c1eeb +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0xc65f47b4 +net/ieee80211/ieee80211 ieee80211_get_channel 0xee3f7e55 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0x4fa38545 +net/ieee80211/ieee80211 ieee80211_get_geo 0x13801a3e +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0x5654cc39 +net/ieee80211/ieee80211 ieee80211_rx 0xccb62820 +net/ieee80211/ieee80211 ieee80211_rx_mgt 0x750ad595 +net/ieee80211/ieee80211 ieee80211_set_geo 0xb7657cef +net/ieee80211/ieee80211 ieee80211_tx_frame 0x97d2d8a8 +net/ieee80211/ieee80211 ieee80211_txb_free 0x690d9897 +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0x752bce93 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0xe935f2c6 +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x627a353d +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0x31741094 +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0xe0265824 +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x1c66d5c0 +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x4e50fb51 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0xdf2704f5 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x02edce9e +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0x86a38083 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x90b3e774 +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0xd18ca6d1 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0xbc7d165d +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0x8f69ca23 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0xb83ddd62 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0xe1dd720d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0xe1e8b524 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0xc567f04a +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0x7ab23446 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0x8ec0dd5e +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0xf92c50df +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0xa9e8fb4f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0x73c3508f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0xaadd3962 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x389dd804 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0xae1c3164 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x87f386b3 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x26537b36 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0xff4d12db +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0xad904eb3 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x352fb37b +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0xab67a77c +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x91f8041c +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x7fd3e9c0 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0x09026d71 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0x0a1cac24 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0xb2291cb2 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0xa18c3bb2 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0x9d49c7ba +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0xe3571f77 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x9f5db9fe +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0x184f5210 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0x118e8b88 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0xbc7e7497 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x6d3c1834 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x2a6cd279 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x1cfe368d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0x5f19944e +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x7bdeaf49 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0xd8b2c223 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0x8a228202 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0xbabc3d26 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x5d92e7c0 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x785edaa2 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0x75534ce8 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0x31ec4f17 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0xd65943d8 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0xdc5d9b7a +net/ipv4/netfilter/arp_tables arpt_do_table 0xead2e0fc +net/ipv4/netfilter/arp_tables arpt_register_table 0x559ca9bf +net/ipv4/netfilter/arp_tables arpt_register_target 0xf94f5f0a +net/ipv4/netfilter/arp_tables arpt_unregister_table 0x2fd630eb +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x55bd569d +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x07ea1134 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0xbd6ea391 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0x35c79211 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x25820194 +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0xd45c1f8f +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0x7a1e994f +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x5a66eb82 +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0x8d4323ee +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0x9f2cb36c +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0x6c5d8d33 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0xcfa30f15 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x5b7706c6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0x32151db2 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0xdc0f2513 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x9e825390 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0x6fd339f6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0x7f17409a +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0x5885d00a +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x819525e4 +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0xe5d90017 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x30d77694 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x0afa5d36 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0xad89b11b +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x9b3cfa73 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0x205f2907 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0x976e7662 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x7cc4081e +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0xe5dcff93 +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0x9deba2bd +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0x86875ecc +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x9d516fdb +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0x87a136d7 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0xe209e92a +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0xf69f1415 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x499864dd +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x501b319d +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0xc552d8df +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0x4954030e +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0xc031c01b +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0x8ce55160 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0xacedcf53 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0xa7921d8c +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0xf8423995 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0xf2a4a10c +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0x159fc574 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0x41a1e07d +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0x6b8dbb22 +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0x230fbd05 +net/ipv4/netfilter/ip_nat ip_nat_packet 0x7871e76e +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x87858b0f +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x1d2e012d +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x02835b50 +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0x5fbcdc0e +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x3d88aef4 +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0x8b3b04f5 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0x09a65090 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x0f35dd6a +net/ipv4/netfilter/ip_tables ipt_do_table 0x708f072e +net/ipv4/netfilter/ip_tables ipt_find_target 0xe0f5e0b4 +net/ipv4/netfilter/ip_tables ipt_register_match 0x34c88609 +net/ipv4/netfilter/ip_tables ipt_register_table 0xec96d3b3 +net/ipv4/netfilter/ip_tables ipt_register_target 0xaeb48dc9 +net/ipv4/netfilter/ip_tables ipt_unregister_match 0xa6f3169a +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x219844e7 +net/ipv4/netfilter/ip_tables ipt_unregister_target 0xefab019c +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0x7245b81f +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0xbd77aaec +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0xf0c429e2 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0x5e2bf66d +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x6b223739 +net/ipv6/ipv6 inet6_add_protocol 0x1952647c +net/ipv6/ipv6 inet6_bind 0x86c3fcf0 +net/ipv6/ipv6 inet6_del_protocol 0xb1a722f0 +net/ipv6/ipv6 inet6_getname 0x699bcdb8 +net/ipv6/ipv6 inet6_ioctl 0x0e16efbf +net/ipv6/ipv6 inet6_register_protosw 0xf97fb99e +net/ipv6/ipv6 inet6_release 0x39596054 +net/ipv6/ipv6 inet6_unregister_protosw 0xe328cb1e +net/ipv6/ipv6 ip6_route_me_harder 0x48eda935 +net/ipv6/ipv6 ip6_route_output 0xc5f43835 +net/ipv6/ipv6 ip6_xmit 0x389ecbe9 +net/ipv6/ipv6 ipv6_chk_addr 0x9b50f3d4 +net/ipv6/ipv6 ipv6_get_saddr 0xc5f5f3a0 +net/ipv6/ipv6 ipv6_getsockopt 0x344dec9b +net/ipv6/ipv6 ipv6_push_nfrag_opts 0x57f60976 +net/ipv6/ipv6 ipv6_setsockopt 0x66e86d32 +net/ipv6/ipv6 ndisc_mc_map 0xa0eafcc2 +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x2eb7daf2 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0x4e1a900e +net/ipv6/ipv6 xfrm6_rcv_spi 0xbb36ed32 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0xeb96f502 +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0xd381a6f6 +net/ipv6/netfilter/ip6_tables ip6t_register_table 0xec07cda8 +net/ipv6/netfilter/ip6_tables ip6t_register_target 0xb176b014 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0x22c9a0fb +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x5d9d1a3c +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0x40a3018e +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0x3c8ab355 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0xb197d7ea +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0x9bfeefd7 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/netfilter/nfnetlink __nfa_fill 0x91cf77cd +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0xc3cefa5e +net/netfilter/nfnetlink nfnetlink_subsys_register 0xf665422f +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0x1b914513 +net/netfilter/nfnetlink nfnetlink_unicast 0x6eaa817d +net/sched/police tcf_police 0x06ef1ff4 +net/sched/police tcf_police_destroy 0xbc4b72c6 +net/sched/police tcf_police_dump 0x04f48f78 +net/sched/police tcf_police_dump_stats 0xcfeac3a5 +net/sched/police tcf_police_hash 0x8493d6e7 +net/sched/police tcf_police_ht 0x8d894736 +net/sched/police tcf_police_locate 0xf7c6bc6b +net/sched/police tcf_police_lookup 0x6c6e4ce9 +net/sched/police tcf_police_new_index 0x7ae0f6c9 +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x71be5fe7 +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x14d51c23 +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0x26e1a94b +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0x07e7f631 +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x3e7025e9 +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x89947013 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x7438e59b +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x7ac451e1 +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x20a6608e +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0x7d7fce56 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x5c9108a3 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x2b68e19a +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x27b4902e +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0xc4780079 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0x797b2662 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0x9d2936fd +sound/core/snd copy_from_user_toio 0x518bb7f8 +sound/core/snd copy_to_user_fromio 0xe243dde3 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0xfcdaab88 +sound/core/snd snd_card_file_add 0x79498bc4 +sound/core/snd snd_card_file_remove 0x1b88f580 +sound/core/snd snd_card_free 0x0ec26ae0 +sound/core/snd snd_card_free_in_thread 0x9e95116b +sound/core/snd snd_card_new 0xdbb25de2 +sound/core/snd snd_card_proc_new 0x7e6a275c +sound/core/snd snd_card_register 0xd73f84c8 +sound/core/snd snd_card_set_generic_dev 0xf47c9dd4 +sound/core/snd snd_cards 0x80dd9199 +sound/core/snd snd_component_add 0x916e735a +sound/core/snd snd_ctl_add 0x088331db +sound/core/snd snd_ctl_elem_read 0x65b10a9d +sound/core/snd snd_ctl_elem_write 0xeb3c9d89 +sound/core/snd snd_ctl_find_id 0xcf873405 +sound/core/snd snd_ctl_find_numid 0x40051b67 +sound/core/snd snd_ctl_free_one 0x9f69ae5e +sound/core/snd snd_ctl_new 0x1b354da4 +sound/core/snd snd_ctl_new1 0x9e2e9a14 +sound/core/snd snd_ctl_notify 0xcbe6760b +sound/core/snd snd_ctl_register_ioctl 0x29da32d1 +sound/core/snd snd_ctl_register_ioctl_compat 0x01d90c62 +sound/core/snd snd_ctl_remove 0xf34a4c24 +sound/core/snd snd_ctl_remove_id 0xb69b5955 +sound/core/snd snd_ctl_rename_id 0x0ba812c5 +sound/core/snd snd_ctl_unregister_ioctl 0x0eaa82d0 +sound/core/snd snd_ctl_unregister_ioctl_compat 0x795363eb +sound/core/snd snd_device_free 0xc0a78601 +sound/core/snd snd_device_new 0x78ec45e8 +sound/core/snd snd_device_register 0x9a894d2d +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0x64cdd411 +sound/core/snd snd_info_create_module_entry 0x7c9ce771 +sound/core/snd snd_info_free_entry 0x304ef075 +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0x99b9a230 +sound/core/snd snd_info_unregister 0x050b8366 +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0x1fb7bfc3 +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_register_device 0xfccbac07 +sound/core/snd snd_register_oss_device 0xba96a399 +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0xf7b50bad +sound/core/snd snd_unregister_device 0x434daeea +sound/core/snd snd_unregister_oss_device 0x223a8ff8 +sound/core/snd-hwdep snd_hwdep_new 0x3d572233 +sound/core/snd-page-alloc snd_dma_alloc_pages 0x7dfdc32e +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0xad4d2317 +sound/core/snd-page-alloc snd_dma_free_pages 0x01522704 +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0xa3aa7012 +sound/core/snd-page-alloc snd_dma_reserve_buf 0x89f8c601 +sound/core/snd-page-alloc snd_free_pages 0x19cc2ce3 +sound/core/snd-page-alloc snd_malloc_pages 0xc6829020 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x65f0da5e +sound/core/snd-pcm snd_pcm_devices 0x2cd127c8 +sound/core/snd-pcm snd_pcm_format_big_endian 0x09d405a0 +sound/core/snd-pcm snd_pcm_format_linear 0x1d607209 +sound/core/snd-pcm snd_pcm_format_little_endian 0x11ee487f +sound/core/snd-pcm snd_pcm_format_name 0x77863ed3 +sound/core/snd-pcm snd_pcm_format_physical_width 0x32be712f +sound/core/snd-pcm snd_pcm_format_set_silence 0xfa4027da +sound/core/snd-pcm snd_pcm_format_signed 0x78967306 +sound/core/snd-pcm snd_pcm_format_silence_64 0x407a3719 +sound/core/snd-pcm snd_pcm_format_size 0xe8decdc0 +sound/core/snd-pcm snd_pcm_format_unsigned 0x0ff581cb +sound/core/snd-pcm snd_pcm_format_width 0xcfb8aa1b +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0xbc02a27c +sound/core/snd-pcm snd_pcm_hw_constraint_list 0xc8b80b53 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0xc43b024d +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x8bcd4d35 +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0x29338e29 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x7aebc0d6 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0xbca7c81d +sound/core/snd-pcm snd_pcm_hw_constraint_step 0x700723b2 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0x6a144881 +sound/core/snd-pcm snd_pcm_hw_constraints_init 0x57d673ba +sound/core/snd-pcm snd_pcm_hw_param_first 0x44877af7 +sound/core/snd-pcm snd_pcm_hw_param_last 0x468852c4 +sound/core/snd-pcm snd_pcm_hw_param_mask 0x907729e4 +sound/core/snd-pcm snd_pcm_hw_param_near 0x0ea16857 +sound/core/snd-pcm snd_pcm_hw_param_set 0xb8c623cf +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0xc6d09dc7 +sound/core/snd-pcm snd_pcm_hw_rule_add 0xb8f3ec42 +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0xbdc6ca1e +sound/core/snd-pcm snd_pcm_kernel_ioctl 0x89b3d1b0 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x3298534a +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0xaf3430b6 +sound/core/snd-pcm snd_pcm_lib_free_pages 0xb3e2c89f +sound/core/snd-pcm snd_pcm_lib_ioctl 0x5ff22cf8 +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0xddb33eae +sound/core/snd-pcm snd_pcm_lib_period_bytes 0xaab42ffd +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0xdb6b0efe +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0xbbdf2393 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0xbbfc3dab +sound/core/snd-pcm snd_pcm_lib_read 0xc719de7f +sound/core/snd-pcm snd_pcm_lib_readv 0x1900db98 +sound/core/snd-pcm snd_pcm_lib_write 0xc7973d89 +sound/core/snd-pcm snd_pcm_lib_writev 0x93901c69 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x58d9355f +sound/core/snd-pcm snd_pcm_link_rwlock 0x5a82694b +sound/core/snd-pcm snd_pcm_mmap_data 0x7b5665f5 +sound/core/snd-pcm snd_pcm_new 0xb2fdd863 +sound/core/snd-pcm snd_pcm_new_stream 0xf3a6c2af +sound/core/snd-pcm snd_pcm_notify 0x69661606 +sound/core/snd-pcm snd_pcm_open_substream 0x854abbfb +sound/core/snd-pcm snd_pcm_period_elapsed 0xa3c6abdf +sound/core/snd-pcm snd_pcm_release_substream 0x38c9dae4 +sound/core/snd-pcm snd_pcm_set_ops 0xb999d7b0 +sound/core/snd-pcm snd_pcm_set_sync 0xe54c1e79 +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0xab2482cf +sound/core/snd-pcm snd_pcm_stop 0x1dd4344d +sound/core/snd-rawmidi snd_rawmidi_drain_input 0xc691cdfe +sound/core/snd-rawmidi snd_rawmidi_drain_output 0xef73794e +sound/core/snd-rawmidi snd_rawmidi_drop_output 0xf5104e6b +sound/core/snd-rawmidi snd_rawmidi_info 0xa53e29d9 +sound/core/snd-rawmidi snd_rawmidi_info_select 0x7b1d4470 +sound/core/snd-rawmidi snd_rawmidi_input_params 0x5ab63505 +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x513f1919 +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0xcbbef37a +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0x2bfba8e3 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x3a123572 +sound/core/snd-rawmidi snd_rawmidi_new 0xc899323b +sound/core/snd-rawmidi snd_rawmidi_output_params 0xb1912ec3 +sound/core/snd-rawmidi snd_rawmidi_receive 0xaafaef50 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x7e137539 +sound/core/snd-rawmidi snd_rawmidi_transmit 0xb955da3e +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x8fa43272 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x3b874fa8 +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0xda2423da +sound/core/snd-timer snd_timer_close 0x7cdb35de +sound/core/snd-timer snd_timer_continue 0xe2818ce1 +sound/core/snd-timer snd_timer_global_free 0xbf6ce4ee +sound/core/snd-timer snd_timer_global_new 0xb059cd51 +sound/core/snd-timer snd_timer_global_register 0xc678f9b1 +sound/core/snd-timer snd_timer_global_unregister 0x791856ab +sound/core/snd-timer snd_timer_interrupt 0xbe16ae11 +sound/core/snd-timer snd_timer_new 0x015d7027 +sound/core/snd-timer snd_timer_notify 0x7e2625e3 +sound/core/snd-timer snd_timer_open 0x00e2c804 +sound/core/snd-timer snd_timer_pause 0xf12cd87d +sound/core/snd-timer snd_timer_resolution 0x990e0e77 +sound/core/snd-timer snd_timer_start 0x12f4e04b +sound/core/snd-timer snd_timer_stop 0x25f68014 +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x51553ec7 +sound/drivers/vx/snd-vx-lib snd_vx_create 0x067e21cb +sound/drivers/vx/snd-vx-lib snd_vx_delay 0x0a8a2718 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x82de5f1c +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x3e6cddf1 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0xce16a1a0 +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x9b239d5d +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0x33118b48 +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0x69fc696f +sound/i2c/other/snd-ak4117 snd_ak4117_build 0x45e1b18c +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0xaf5bc2d2 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0x8133d967 +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x51f52aa6 +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x7662f2dc +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x1f4445d5 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x4efb9b36 +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0x8bbc9f1c +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0x8ff79d35 +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0xed506e17 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0x38a4c970 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x7883fea8 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x987a628c +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0x8c32012e +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0x99319418 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0x1aedb8ca +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x9fc09055 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0xef42f978 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0x1b8c41b0 +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0x40dcd375 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0xdf75f853 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0x2b9f52dd +sound/soundcore register_sound_midi 0x97dddc1c +sound/soundcore register_sound_mixer 0xf4c7016c +sound/soundcore register_sound_special 0x75e2bd3c +sound/soundcore register_sound_special_device 0xe68c9d63 +sound/soundcore register_sound_synth 0x0cf4f699 +sound/soundcore sound_class 0xcde0adb2 +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +vmlinux $$divI 0x9ea93a0c +vmlinux $$divI_10 0xe3bf4573 +vmlinux $$divI_12 0xbbd3fcb2 +vmlinux $$divI_14 0x536636f1 +vmlinux $$divI_15 0x92e8e931 +vmlinux $$divI_3 0x02a01458 +vmlinux $$divI_5 0xea15de1b +vmlinux $$divI_6 0x73f7b81a +vmlinux $$divI_7 0xb27967da +vmlinux $$divI_9 0xe00f4cdc +vmlinux $$divU 0x3a456c00 +vmlinux $$divU_10 0xaff8e832 +vmlinux $$divU_12 0xf79451f3 +vmlinux $$divU_14 0x1f219bb0 +vmlinux $$divU_15 0xdeaf4470 +vmlinux $$divU_3 0x2c1d0b79 +vmlinux $$divU_5 0xc4a8c13a +vmlinux $$divU_6 0x5d4aa73b +vmlinux $$divU_7 0x9cc478fb +vmlinux $$divU_9 0xceb253fd +vmlinux $$mulI 0xf86ddff0 +vmlinux $$remI 0xe7e9bddf +vmlinux $$remU 0x4305ebd3 +vmlinux EISA_bus 0x7413793a +vmlinux I_BDEV 0x0c1e39d5 +vmlinux SELECT_DRIVE 0x65b34e24 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0xd7a86422 +vmlinux __alloc_pages 0x3d4f244c +vmlinux __alloc_percpu 0x55f2580b +vmlinux __alloc_skb 0x6a7138f4 +vmlinux __ashldi3 0x40f07981 +vmlinux __ashrdi3 0xedd9106d +vmlinux __atomic_hash 0x7a81d4e6 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0xa58bd4d9 +vmlinux __bio_clone 0xc4fcc633 +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0x026b1da8 +vmlinux __bread 0xe850d881 +vmlinux __breadahead 0xc7decbce +vmlinux __break_lease 0x745f73c1 +vmlinux __brelse 0xe6c60464 +vmlinux __canonicalize_funcptr_for_compare 0xf38ab871 +vmlinux __check_region 0xf1d0cdab +vmlinux __cmpxchg_u32 0x12fa180d +vmlinux __cmpxchg_u64 0x17fc8840 +vmlinux __create_workqueue 0xeb8ea4da +vmlinux __d_path 0xe0d8591d +vmlinux __dev_get_by_index 0x958da20d +vmlinux __dev_get_by_name 0xf768693d +vmlinux __dev_remove_pack 0xdd2d0c6e +vmlinux __divdi3 0xe8679178 +vmlinux __down 0xca26a15f +vmlinux __down_interruptible 0x8a37bc96 +vmlinux __down_read 0x1bb20d36 +vmlinux __down_read_trylock 0x71bc891d +vmlinux __down_write 0xa99fba32 +vmlinux __down_write_trylock 0x2e5de2a7 +vmlinux __downgrade_write 0xd0828cee +vmlinux __dst_free 0x32c0dc22 +vmlinux __elv_add_request 0xc4c495bc +vmlinux __find_get_block 0xcb0488f0 +vmlinux __free_pages 0x9a5fc828 +vmlinux __generic_file_aio_read 0x7f61250f +vmlinux __generic_unplug_device 0x29df0697 +vmlinux __get_free_pages 0x93fca811 +vmlinux __getblk 0x2c68ffcd +vmlinux __ide_abort 0xa1061600 +vmlinux __ide_dma_bad_drive 0x6ee2f757 +vmlinux __ide_dma_check 0x61cfc46b +vmlinux __ide_dma_end 0xd3db67a1 +vmlinux __ide_dma_good_drive 0x48adb342 +vmlinux __ide_dma_host_off 0xaf650149 +vmlinux __ide_dma_host_on 0x4e914d38 +vmlinux __ide_dma_lostirq 0x04e9a631 +vmlinux __ide_dma_off 0x3b7cbf58 +vmlinux __ide_dma_off_quietly 0xc5b15790 +vmlinux __ide_dma_on 0x3314d8b1 +vmlinux __ide_dma_timeout 0x8e26da8c +vmlinux __ide_end_request 0x0002bcb8 +vmlinux __ide_error 0x6d2b652f +vmlinux __ide_pci_register_driver 0x21ac9f35 +vmlinux __inet_lookup_listener 0x020faacc +vmlinux __inet_twsk_hashdance 0xd6cc37cc +vmlinux __inet_twsk_kill 0xadabd1dc +vmlinux __init_timer_base 0x049a5196 +vmlinux __inode_dir_notify 0x7e93f7e3 +vmlinux __insert_inode_hash 0x11106add +vmlinux __invalidate_device 0xfd3cf37d +vmlinux __ioremap 0x9eac042a +vmlinux __ip_route_output_key 0x9cb29261 +vmlinux __ip_select_ident 0xa255e299 +vmlinux __kfifo_get 0x07527e0d +vmlinux __kfifo_put 0x7c775173 +vmlinux __kfree_skb 0x174acf23 +vmlinux __kill_fasync 0x37cb2da5 +vmlinux __kmalloc 0x5a34a45c +vmlinux __lock_buffer 0xdfb4d295 +vmlinux __lock_page 0x89c2fb28 +vmlinux __lshrdi3 0xff67b37f +vmlinux __mark_inode_dirty 0xa59cb3c2 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xbffc0a90 +vmlinux __moddi3 0x903ab395 +vmlinux __module_put_and_exit 0x1ef6d271 +vmlinux __muldi3 0x800e4ffa +vmlinux __neigh_event_send 0xd092b07a +vmlinux __neigh_for_each_release 0x4f17b962 +vmlinux __net_timestamp 0x47e624d8 +vmlinux __netdev_watchdog_up 0x561a6f3e +vmlinux __nla_put 0xeacc8ea6 +vmlinux __nla_reserve 0x4da9a2e0 +vmlinux __page_cache_release 0xaa37a018 +vmlinux __pagevec_lru_add 0x3e9c227e +vmlinux __pagevec_release 0x0197cb1f +vmlinux __pci_register_driver 0x1b83c4ac +vmlinux __per_cpu_offset 0x280f9f14 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0x4ad038d0 +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0x62203bc9 +vmlinux __scm_destroy 0x2340f023 +vmlinux __scm_send 0x20e2831a +vmlinux __scsi_add_device 0x16bdc62b +vmlinux __scsi_device_lookup 0x2194d9a0 +vmlinux __scsi_device_lookup_by_target 0x44dc7450 +vmlinux __scsi_iterate_devices 0x75c44210 +vmlinux __scsi_print_command 0xfef96e23 +vmlinux __scsi_print_sense 0x69d38ed9 +vmlinux __secpath_destroy 0x7dbafdc6 +vmlinux __serio_register_driver 0x7db8ccc1 +vmlinux __serio_register_port 0x67672383 +vmlinux __serio_unregister_port_delayed 0x5a8ff5b7 +vmlinux __set_page_dirty_buffers 0x906c266d +vmlinux __set_page_dirty_nobuffers 0x0a6a26ad +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0xf11e5ff5 +vmlinux __skb_checksum_complete 0x61548628 +vmlinux __skb_linearize 0x6083a8b0 +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x267fc65b +vmlinux __tasklet_schedule 0xf397b9aa +vmlinux __tcf_em_tree_match 0x0452d858 +vmlinux __udivdi3 0x32093cc7 +vmlinux __umoddi3 0x4a541e2a +vmlinux __up 0x6a008bb3 +vmlinux __up_read 0x31632568 +vmlinux __up_write 0x256617e9 +vmlinux __user_walk 0x5df129eb +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0xb2ba62b5 +vmlinux __wait_on_bit_lock 0x80428c80 +vmlinux __wait_on_buffer 0x0e3cd7a3 +vmlinux __wake_up 0xdb09708f +vmlinux __wake_up_bit 0x5315f750 +vmlinux __wake_up_sync 0xf4488540 +vmlinux __xchg32 0xc387ec0b +vmlinux __xchg64 0x5732f1ca +vmlinux __xchg8 0x4e7bc574 +vmlinux __xfrm_policy_check 0x24b12766 +vmlinux __xfrm_policy_destroy 0x9c5a808e +vmlinux __xfrm_route_forward 0x67fd37fa +vmlinux __xfrm_state_destroy 0x845bfd59 +vmlinux _atomic_dec_and_lock 0x16250200 +vmlinux _ctype 0x8d3894f2 +vmlinux _read_lock 0xffcf89d3 +vmlinux _read_lock_bh 0x038820ba +vmlinux _read_lock_irq 0x16670359 +vmlinux _read_lock_irqsave 0x45a6062d +vmlinux _read_trylock 0xca92b48b +vmlinux _read_unlock 0x11f03ddc +vmlinux _read_unlock_bh 0x3e1b21e8 +vmlinux _read_unlock_irq 0x933fa080 +vmlinux _read_unlock_irqrestore 0xb52090d7 +vmlinux _spin_lock 0x429328d9 +vmlinux _spin_lock_bh 0x8bcc3a3a +vmlinux _spin_lock_irq 0x6220b988 +vmlinux _spin_lock_irqsave 0xdd5a37a7 +vmlinux _spin_trylock 0x3922d605 +vmlinux _spin_trylock_bh 0x3906b93c +vmlinux _spin_unlock 0x01e9f0ee +vmlinux _spin_unlock_bh 0x53d91e59 +vmlinux _spin_unlock_irq 0xb6439c4e +vmlinux _spin_unlock_irqrestore 0x0df15005 +vmlinux _write_lock 0x0dcc06da +vmlinux _write_lock_bh 0x294bcef9 +vmlinux _write_lock_irq 0xf998d09d +vmlinux _write_lock_irqsave 0xe3d12a23 +vmlinux _write_trylock 0x9adb1bcf +vmlinux _write_unlock 0xbd35ea27 +vmlinux _write_unlock_bh 0xa2fdd892 +vmlinux _write_unlock_irq 0x2373de5b +vmlinux _write_unlock_irqrestore 0xbee53b2b +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0x018cb2bd +vmlinux add_disk_randomness 0x6005b741 +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0x731f8c21 +vmlinux add_wait_queue 0x6989875b +vmlinux add_wait_queue_exclusive 0x33b3949a +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0xa204cbe2 +vmlinux aio_put_req 0x6cfe8eca +vmlinux alloc_buffer_head 0xa8ea3e49 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0xccf4b322 +vmlinux alloc_disk_node 0xf80cf209 +vmlinux alloc_etherdev 0x14e532f7 +vmlinux alloc_netdev 0x5e6c77f7 +vmlinux alloc_page_buffers 0xac67edab +vmlinux alloc_tty_driver 0x5a558e5c +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0x3252011c +vmlinux anon_transport_class_unregister 0xd208056f +vmlinux arp_broken_ops 0x6fadf236 +vmlinux arp_create 0x15cae8ea +vmlinux arp_find 0xebc09fe5 +vmlinux arp_rcv 0x0690be08 +vmlinux arp_send 0x582b4cca +vmlinux arp_tbl 0xae5c5443 +vmlinux arp_xmit 0x62e2396a +vmlinux attribute_container_add_attrs 0x376fd5af +vmlinux attribute_container_add_class_device 0xccc80b4d +vmlinux attribute_container_add_class_device_adapter 0x3aac233c +vmlinux attribute_container_class_device_del 0x90b260c6 +vmlinux attribute_container_classdev_to_container 0xf82733f7 +vmlinux attribute_container_device_trigger 0x75f228ac +vmlinux attribute_container_find_class_device 0xf32fe9a7 +vmlinux attribute_container_register 0x52e9faef +vmlinux attribute_container_remove_attrs 0x3f26f12d +vmlinux attribute_container_remove_device 0xf5c633b2 +vmlinux attribute_container_trigger 0x6c657ab2 +vmlinux attribute_container_unregister 0xe563b88f +vmlinux auth_domain_find 0xce9b7a1f +vmlinux auth_domain_lookup 0xa74157e3 +vmlinux auth_domain_put 0xb7e2b4a5 +vmlinux auth_unix_add_addr 0xb8520a43 +vmlinux auth_unix_forget_old 0x758f9c49 +vmlinux auth_unix_lookup 0xd1d4e136 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x61d6f071 +vmlinux bd_claim 0x63ceedd2 +vmlinux bd_release 0xf826754f +vmlinux bd_set_size 0x99ea6b2f +vmlinux bdev_read_only 0xe8bf0fd6 +vmlinux bdevname 0xe226fa19 +vmlinux bdget 0x7d7a8f1b +vmlinux bdput 0x9653dbc7 +vmlinux bfifo_qdisc_ops 0x6165ba0e +vmlinux bio_add_page 0x17830954 +vmlinux bio_alloc 0xb71ea6da +vmlinux bio_alloc_bioset 0xaed5ee8b +vmlinux bio_clone 0x9605091f +vmlinux bio_copy_user 0x11e4bc3f +vmlinux bio_endio 0xa45c6e30 +vmlinux bio_free 0xe7fb8f73 +vmlinux bio_get_nr_vecs 0xf6a8bfd2 +vmlinux bio_hw_segments 0x0e78fd1a +vmlinux bio_init 0x462a46ba +vmlinux bio_map_kern 0xfdf89c21 +vmlinux bio_map_user 0x10977628 +vmlinux bio_pair_release 0x354cb4d7 +vmlinux bio_phys_segments 0xabd2510c +vmlinux bio_put 0xb741c035 +vmlinux bio_split 0x342d5269 +vmlinux bio_split_pool 0x2146f99f +vmlinux bio_uncopy_user 0x02ccaac0 +vmlinux bio_unmap_user 0x8af359fc +vmlinux bioset_create 0x68c208d9 +vmlinux bioset_free 0x35146399 +vmlinux bit_waitqueue 0xcb7bc48a +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0xcacf3a06 +vmlinux blk_alloc_queue_node 0xf6033271 +vmlinux blk_cleanup_queue 0xe554752b +vmlinux blk_complete_barrier_rq 0x214dcef6 +vmlinux blk_complete_barrier_rq_locked 0x694d5e36 +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x725aa746 +vmlinux blk_end_sync_rq 0x66af42f4 +vmlinux blk_execute_rq 0xd04a5809 +vmlinux blk_get_backing_dev_info 0x63642107 +vmlinux blk_get_queue 0x880feb91 +vmlinux blk_get_request 0x29b04ed3 +vmlinux blk_init_queue 0x404143f3 +vmlinux blk_init_queue_node 0xe156b920 +vmlinux blk_insert_request 0x1be8d89c +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0xbb1f8359 +vmlinux blk_put_request 0x76abe115 +vmlinux blk_queue_activity_fn 0xb2b2af44 +vmlinux blk_queue_bounce 0x59aabab8 +vmlinux blk_queue_bounce_limit 0x5c8dd2eb +vmlinux blk_queue_dma_alignment 0x22583b80 +vmlinux blk_queue_end_tag 0x9403aa53 +vmlinux blk_queue_find_tag 0x6b9c704e +vmlinux blk_queue_free_tags 0x4a3a9c61 +vmlinux blk_queue_hardsect_size 0xee91bb11 +vmlinux blk_queue_init_tags 0x1fad0931 +vmlinux blk_queue_invalidate_tags 0xa44a2bd7 +vmlinux blk_queue_issue_flush_fn 0xeb8c4b8b +vmlinux blk_queue_make_request 0x7023e0a2 +vmlinux blk_queue_max_hw_segments 0xbf302d2c +vmlinux blk_queue_max_phys_segments 0x7f36cc46 +vmlinux blk_queue_max_sectors 0x68e2870a +vmlinux blk_queue_max_segment_size 0xf3c3cea8 +vmlinux blk_queue_merge_bvec 0x89e20e7f +vmlinux blk_queue_ordered 0x48c7338e +vmlinux blk_queue_prep_rq 0x0d47692d +vmlinux blk_queue_resize_tags 0x2a8430a2 +vmlinux blk_queue_segment_boundary 0xce765d43 +vmlinux blk_queue_stack_limits 0x088c1be0 +vmlinux blk_queue_start_tag 0xbc2fb699 +vmlinux blk_register_region 0x675e1aa9 +vmlinux blk_remove_plug 0x690a7bc9 +vmlinux blk_requeue_request 0xf6a3f691 +vmlinux blk_rq_bio_prep 0xa9208bdf +vmlinux blk_rq_map_kern 0x4d9af8f1 +vmlinux blk_rq_map_sg 0x3433b17d +vmlinux blk_rq_map_user 0x233b93f9 +vmlinux blk_rq_map_user_iov 0x52f2339f +vmlinux blk_rq_unmap_user 0x68f16b0c +vmlinux blk_run_queue 0x9feedf94 +vmlinux blk_start_queue 0x99e81602 +vmlinux blk_stop_queue 0xf0812da1 +vmlinux blk_sync_queue 0x023737d7 +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0xbc8fef6c +vmlinux blkdev_ioctl 0x3ce7ef48 +vmlinux blkdev_issue_flush 0x0e083798 +vmlinux blkdev_put 0xf45d89e2 +vmlinux block_all_signals 0xc74785b2 +vmlinux block_commit_write 0xd69f41a3 +vmlinux block_invalidatepage 0x56ff6daf +vmlinux block_prepare_write 0xf2ac9663 +vmlinux block_read_full_page 0xf3c45a0f +vmlinux block_sync_page 0x41353fdc +vmlinux block_truncate_page 0x19c3607f +vmlinux block_write_full_page 0xfa0f63ea +vmlinux bmap 0xe5faf7dd +vmlinux boot_cpu_data 0x98403e2c +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0xeb155183 +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0xd907c8b7 +vmlinux bus_create_file 0xe53d5c40 +vmlinux bus_find_device 0xbc9b2fa3 +vmlinux bus_for_each_dev 0x76f6f61d +vmlinux bus_for_each_drv 0x535bd2c6 +vmlinux bus_register 0x428debba +vmlinux bus_remove_device 0x5b6f569f +vmlinux bus_remove_file 0x3d4e3fe9 +vmlinux bus_rescan_devices 0x2085bb33 +vmlinux bus_unregister 0xb020098d +vmlinux cache_check 0xced71f12 +vmlinux cache_flush 0x71fa908a +vmlinux cache_fresh 0x7642cbdc +vmlinux cache_init 0xc244025c +vmlinux cache_purge 0xc6ad3fa1 +vmlinux cache_register 0xe82ac4c2 +vmlinux cache_unregister 0x151adc39 +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x43c852aa +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x80685258 +vmlinux cap_bprm_apply_creds 0x3525f467 +vmlinux cap_bprm_secureexec 0x9fd84cbd +vmlinux cap_bprm_set_security 0xb05f95e1 +vmlinux cap_bset 0x59ab4080 +vmlinux cap_capable 0x362bc3a8 +vmlinux cap_capget 0x8d65fb17 +vmlinux cap_capset_check 0xe8749b2e +vmlinux cap_capset_set 0xd909fcd9 +vmlinux cap_inode_removexattr 0x7887b66e +vmlinux cap_inode_setxattr 0xc0fb299d +vmlinux cap_netlink_recv 0x54b1c928 +vmlinux cap_netlink_send 0x6f4b31ae +vmlinux cap_ptrace 0x27d42a4d +vmlinux cap_settime 0x819cc9ba +vmlinux cap_syslog 0xe1dd5368 +vmlinux cap_task_post_setuid 0x372390b2 +vmlinux cap_task_reparent_to_init 0xa7fe1ff4 +vmlinux cap_vm_enough_memory 0xaf236a7b +vmlinux capable 0x7dceceac +vmlinux cdev_add 0xc9ce2c37 +vmlinux cdev_alloc 0x3ce4b731 +vmlinux cdev_del 0x78a4eaf5 +vmlinux cdev_init 0x8ee80ca4 +vmlinux cfb_copyarea 0x98ea1bb9 +vmlinux cfb_fillrect 0x4243a298 +vmlinux cfb_imageblit 0xdbf5db1b +vmlinux check_disk_change 0xa0ba6305 +vmlinux class_create 0xbfc85aa7 +vmlinux class_create_file 0x02fa2666 +vmlinux class_destroy 0x78bda7d2 +vmlinux class_device_add 0x4ed640e2 +vmlinux class_device_create 0xce335c76 +vmlinux class_device_create_bin_file 0xaea2ef2e +vmlinux class_device_create_file 0xd9c5a3a4 +vmlinux class_device_del 0x971e92da +vmlinux class_device_destroy 0x9d899f33 +vmlinux class_device_get 0x1208c466 +vmlinux class_device_initialize 0xa594982a +vmlinux class_device_put 0xd0671425 +vmlinux class_device_register 0xd263fd10 +vmlinux class_device_remove_bin_file 0x7dd2e03e +vmlinux class_device_remove_file 0xf600156c +vmlinux class_device_unregister 0x66e112bb +vmlinux class_get 0xe4f1cfe0 +vmlinux class_interface_register 0xce1f3269 +vmlinux class_interface_unregister 0x43aa4059 +vmlinux class_put 0xd0f97949 +vmlinux class_register 0xa84bae49 +vmlinux class_remove_file 0xff686a7f +vmlinux class_unregister 0xf6d2cc42 +vmlinux clear_inode 0x7e018528 +vmlinux clear_page_dirty_for_io 0x3b6804fa +vmlinux close_bdev_excl 0x2a6867b9 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0x2581543c +vmlinux complete_all 0xa2d4c119 +vmlinux complete_and_exit 0xfd59d987 +vmlinux compute_creds 0xc8b5ebed +vmlinux con_copy_unimap 0x651360f9 +vmlinux con_set_default_unimap 0x250b570a +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0x5f0c5570 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0xa45b2cb2 +vmlinux console_stop 0x3ef20722 +vmlinux cont_prepare_write 0xdd1f96c7 +vmlinux copy_from_user 0x0d6c963c +vmlinux copy_fs_struct 0x60176750 +vmlinux copy_in_user 0x8d944cbb +vmlinux copy_io_context 0x5e031a22 +vmlinux copy_strings_kernel 0x50ea0977 +vmlinux copy_to_user 0x2f287f0d +vmlinux cpu_online_map 0x34627942 +vmlinux cpu_possible_map 0x6d08b230 +vmlinux cpu_present_map 0x6a7f3730 +vmlinux cpu_sysdev_class 0x4ee34c94 +vmlinux crc32_be 0xc09651d9 +vmlinux crc32_le 0x92ea4ae4 +vmlinux create_empty_buffers 0x1fa09373 +vmlinux create_proc_entry 0x8095addd +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0x0b711953 +vmlinux crypto_free_tfm 0x6433aedd +vmlinux crypto_hmac 0xc4894f81 +vmlinux crypto_hmac_final 0x5d104ece +vmlinux crypto_hmac_init 0x9fa68194 +vmlinux crypto_hmac_update 0x09955b22 +vmlinux crypto_register_alg 0xe6682b29 +vmlinux crypto_unregister_alg 0x81f469a0 +vmlinux csum_partial 0x94095c16 +vmlinux csum_partial_copy_from_user 0x7cf86690 +vmlinux csum_partial_copy_fromiovecend 0x883c8eca +vmlinux csum_partial_copy_nocheck 0xa2963be1 +vmlinux current_fs_time 0xfdde1fdc +vmlinux current_io_context 0x4c373cfe +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0x0f3d0220 +vmlinux d_alloc_anon 0xce445557 +vmlinux d_alloc_name 0xfe42e7e0 +vmlinux d_alloc_root 0xf8907371 +vmlinux d_delete 0x541aad72 +vmlinux d_find_alias 0xacb13fb6 +vmlinux d_genocide 0x806bd417 +vmlinux d_instantiate 0xe1aefd37 +vmlinux d_instantiate_unique 0x8aa64f25 +vmlinux d_invalidate 0xb36ea29d +vmlinux d_lookup 0x51c76d04 +vmlinux d_move 0xabe1873e +vmlinux d_path 0x245d40d8 +vmlinux d_prune_aliases 0xad47a232 +vmlinux d_rehash 0x0e098b68 +vmlinux d_splice_alias 0xe6fcb76a +vmlinux d_validate 0x4ae85ef3 +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0xc15bb2b6 +vmlinux dcache_dir_close 0x19023aae +vmlinux dcache_dir_lseek 0xef842ec8 +vmlinux dcache_dir_open 0xfdbb89b5 +vmlinux dcache_lock 0x179ec4b8 +vmlinux dcache_readdir 0xa496fdef +vmlinux dcache_stride 0x29fe2400 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0x0330532d +vmlinux default_backing_dev_info 0xd528f356 +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0x52d0a001 +vmlinux default_llseek 0x5fee441c +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0xc7c67251 +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0xe73d8d65 +vmlinux del_timer 0x5943d3e7 +vmlinux del_timer_sync 0x594eac68 +vmlinux dentry_open 0xeef134fe +vmlinux dentry_unhash 0xc235afb9 +vmlinux dequeue_signal 0xa7670a32 +vmlinux destroy_8023_client 0xf204d558 +vmlinux destroy_workqueue 0x67fd0633 +vmlinux dev_add_pack 0x135185e4 +vmlinux dev_alloc_name 0xc79e4762 +vmlinux dev_base 0xf819c808 +vmlinux dev_base_lock 0xf58ca172 +vmlinux dev_change_flags 0xec59303e +vmlinux dev_close 0x25a85788 +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0x0d78b422 +vmlinux dev_get_by_index 0x110be6ce +vmlinux dev_get_by_name 0x3f8a9914 +vmlinux dev_get_flags 0x5910e2c0 +vmlinux dev_getbyhwaddr 0x5111779e +vmlinux dev_getfirstbyhwtype 0x4d8ad641 +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0x182454b3 +vmlinux dev_mc_delete 0x4b67633b +vmlinux dev_mc_upload 0xdf502f19 +vmlinux dev_open 0x6be88314 +vmlinux dev_queue_xmit 0x9f90265a +vmlinux dev_remove_pack 0x144ec7c1 +vmlinux dev_set_allmulti 0xfc17ed5f +vmlinux dev_set_mac_address 0x66102291 +vmlinux dev_set_mtu 0x7d16fc2c +vmlinux dev_set_promiscuity 0x19c591cd +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0x11e791d4 +vmlinux device_attach 0xc62ae3e3 +vmlinux device_bind_driver 0xa29c1f02 +vmlinux device_create_file 0x6e6087be +vmlinux device_del 0x03a0b911 +vmlinux device_for_each_child 0xbe72ae69 +vmlinux device_initialize 0x34a125c4 +vmlinux device_register 0xc5174d15 +vmlinux device_release_driver 0xed60ef44 +vmlinux device_remove_file 0x8a6d034d +vmlinux device_to_hwpath 0x3c1454c7 +vmlinux device_unregister 0x935d83d4 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0xc8360fb3 +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_get_required_mask 0x73923376 +vmlinux dma_pool_alloc 0xd2e529c7 +vmlinux dma_pool_create 0x38bfe1d5 +vmlinux dma_pool_destroy 0x7f97bce1 +vmlinux dma_pool_free 0x18f1228b +vmlinux dnotify_parent 0xd7a54391 +vmlinux do_SAK 0x04c3caa2 +vmlinux do_add_mount 0x2d8250a2 +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0xdea4e7ed +vmlinux do_gettimeofday 0x836a55de +vmlinux do_kern_mount 0xf8291caf +vmlinux do_mmap_pgoff 0x041bcbab +vmlinux do_munmap 0xa08504cc +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x09766af7 +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0x27cbbea7 +vmlinux do_sync_read 0x489fac0a +vmlinux do_sync_write 0xd3080ed7 +vmlinux do_unblank_screen 0x600683d3 +vmlinux dput 0x0c488bd7 +vmlinux drive_is_ready 0x20238746 +vmlinux driver_attach 0xeaba0e3c +vmlinux driver_create_file 0x625c4392 +vmlinux driver_find 0x6cbc4795 +vmlinux driver_find_device 0x6cd4fbc7 +vmlinux driver_for_each_device 0xf2e7c4d8 +vmlinux driver_register 0x53ebf461 +vmlinux driver_remove_file 0x136627c6 +vmlinux driver_unregister 0x550da226 +vmlinux drop_super 0xa0da875f +vmlinux dst_alloc 0x81c15c1c +vmlinux dst_destroy 0x5acb56d6 +vmlinux dump_stack 0x6b2dc060 +vmlinux eighty_ninty_three 0x24408f66 +vmlinux eisa_bus_type 0xcd5712d6 +vmlinux eisa_driver_register 0xc6c6c14d +vmlinux eisa_driver_unregister 0x400a4fa8 +vmlinux elevator_exit 0x18216c94 +vmlinux elevator_init 0x8cd9d044 +vmlinux elv_add_request 0x845c39fd +vmlinux elv_completed_request 0x919c2760 +vmlinux elv_dequeue_request 0x258e5816 +vmlinux elv_dispatch_sort 0xb19d2608 +vmlinux elv_next_request 0xaa684d1f +vmlinux elv_queue_empty 0xe58b9ee0 +vmlinux elv_register 0xcbcf0937 +vmlinux elv_requeue_request 0xceb592d1 +vmlinux elv_rq_merge_ok 0x5abcea45 +vmlinux elv_try_merge 0x92efdd8a +vmlinux elv_unregister 0x5872e07c +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_irq 0xfcec0987 +vmlinux end_buffer_async_write 0x77aa5a9c +vmlinux end_buffer_read_sync 0x3fe7b071 +vmlinux end_buffer_write_sync 0x39704feb +vmlinux end_page_writeback 0x35d60d68 +vmlinux end_request 0xfce8385c +vmlinux end_that_request_chunk 0x774eea4b +vmlinux end_that_request_first 0x07d741f0 +vmlinux end_that_request_last 0xb8973d8f +vmlinux eth_type_trans 0xa4e0754d +vmlinux ether_setup 0x743e7230 +vmlinux ethtool_op_get_link 0x45e2f93a +vmlinux ethtool_op_get_perm_addr 0x697dfa7d +vmlinux ethtool_op_get_sg 0x691eab28 +vmlinux ethtool_op_get_tso 0x35138603 +vmlinux ethtool_op_get_tx_csum 0xe33880c0 +vmlinux ethtool_op_get_ufo 0xd02a412c +vmlinux ethtool_op_set_sg 0xcd4f66b2 +vmlinux ethtool_op_set_tso 0xde7a18f5 +vmlinux ethtool_op_set_tx_csum 0xa24976dc +vmlinux ethtool_op_set_tx_hw_csum 0xa1ab1230 +vmlinux ethtool_op_set_ufo 0x20316a87 +vmlinux exit_fs 0xc5a0ef11 +vmlinux f_setown 0x7fa38e53 +vmlinux fasync_helper 0xad4280ad +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0xdbcbedc9 +vmlinux fb_con_duit 0x58b5e1ed +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0x2770508a +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0x84e86c22 +vmlinux fb_get_buffer_offset 0x38bdb9a1 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0x14189a03 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0x3318c9f6 +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0xdf6214bd +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x10c2d2f6 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0xb2bddc25 +vmlinux fb_set_suspend 0xdee8c8d6 +vmlinux fb_set_var 0x0cd8faae +vmlinux fb_show_logo 0xde0f2534 +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x93f322c5 +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fbcon_set_bitops 0x81436a69 +vmlinux fbcon_set_tileops 0x28f877ac +vmlinux fd_install 0x45805527 +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x08a72e40 +vmlinux file_fsync 0xabe84748 +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0x4daa87b5 +vmlinux filemap_fdatawait 0x4aa2010d +vmlinux filemap_fdatawrite 0xfdad62b9 +vmlinux filemap_flush 0xbeaab39d +vmlinux filemap_nopage 0x7663fce0 +vmlinux filemap_populate 0x77d2b537 +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0xf263aede +vmlinux filp_open 0xfa161909 +vmlinux find_bus 0x6f5ed76a +vmlinux find_font 0xf7584a9c +vmlinux find_get_page 0xeb77af49 +vmlinux find_inode_number 0x3da04e27 +vmlinux find_lock_page 0x318a028d +vmlinux find_or_create_page 0xad9e518a +vmlinux find_task_by_pid_type 0x4a3137c5 +vmlinux find_trylock_page 0x3222b433 +vmlinux find_vma 0x792ea78b +vmlinux finish_wait 0x271f4d2a +vmlinux firmware_register 0x909fd81d +vmlinux firmware_unregister 0x5915499c +vmlinux fixup_get_user_skip_1 0x6c911f35 +vmlinux fixup_get_user_skip_2 0xf5737934 +vmlinux fixup_put_user_skip_1 0x85bdbbce +vmlinux fixup_put_user_skip_2 0x1c5fddcf +vmlinux flock_lock_file_wait 0x04467bf6 +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_all_caches 0x7e3ddcc0 +vmlinux flush_cache_all_local 0xa1cdce17 +vmlinux flush_data_cache_local 0x21c1455c +vmlinux flush_dcache_page 0x26c72e40 +vmlinux flush_kernel_dcache_page 0xe8500931 +vmlinux flush_kernel_dcache_range_asm 0x831f7f68 +vmlinux flush_kernel_icache_range_asm 0x307acde8 +vmlinux flush_old_exec 0x1e78351c +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x6e033834 +vmlinux flush_workqueue 0x26bde710 +vmlinux follow_down 0x32ef3088 +vmlinux follow_up 0x95018896 +vmlinux force_sig 0xcda4e482 +vmlinux fput 0xa95dbd5e +vmlinux framebuffer_alloc 0xad04634d +vmlinux framebuffer_release 0x621089ff +vmlinux free_buffer_head 0x6372b13c +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0x42fd1591 +vmlinux free_pages 0x4302d0eb +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0xd7df82eb +vmlinux freeze_bdev 0xfb5fc953 +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0x9800ed93 +vmlinux g_make_token_header 0x00c52ef5 +vmlinux g_token_size 0xb5dea7ef +vmlinux g_verify_token_header 0xf8b2ff6e +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0x0f93d64c +vmlinux gen_replace_estimator 0x46b64038 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x6001ccc2 +vmlinux generic_block_bmap 0x61def51b +vmlinux generic_commit_write 0xd3a14729 +vmlinux generic_cont_expand 0x3a4cf167 +vmlinux generic_delete_inode 0xc0a6482f +vmlinux generic_drop_inode 0x7fc7d69f +vmlinux generic_file_aio_read 0x373ebcc3 +vmlinux generic_file_aio_write 0xe0d3a54d +vmlinux generic_file_aio_write_nolock 0xcac560e6 +vmlinux generic_file_buffered_write 0xdabc71f5 +vmlinux generic_file_direct_write 0x36568916 +vmlinux generic_file_llseek 0x2f10add3 +vmlinux generic_file_mmap 0xddf28fd0 +vmlinux generic_file_open 0xaa1eba3a +vmlinux generic_file_read 0x5a03170c +vmlinux generic_file_readonly_mmap 0x8c6ce85b +vmlinux generic_file_readv 0xce305f7c +vmlinux generic_file_sendfile 0x20964d64 +vmlinux generic_file_write 0xfda9d91e +vmlinux generic_file_write_nolock 0x6d6cdcad +vmlinux generic_file_writev 0x6daa1243 +vmlinux generic_fillattr 0xed04277a +vmlinux generic_getxattr 0x7910f702 +vmlinux generic_ide_ioctl 0x84cac220 +vmlinux generic_listxattr 0x476f2663 +vmlinux generic_make_request 0x36471589 +vmlinux generic_osync_inode 0x598f3963 +vmlinux generic_permission 0xe452c042 +vmlinux generic_read_dir 0x0af961ce +vmlinux generic_readlink 0x66ad1299 +vmlinux generic_removexattr 0x5cb39523 +vmlinux generic_ro_fops 0xbf4622da +vmlinux generic_setxattr 0x251e1fed +vmlinux generic_shutdown_super 0xd3bb9446 +vmlinux generic_unplug_device 0x897340f2 +vmlinux generic_write_checks 0xbe9abd65 +vmlinux genl_register_family 0xe737ed27 +vmlinux genl_register_ops 0xfbb925d3 +vmlinux genl_sock 0x842caca7 +vmlinux genl_unregister_family 0xea6489fb +vmlinux genl_unregister_ops 0xae207d2e +vmlinux get_bus 0x15c8c57d +vmlinux get_cpu_sysdev 0xd95d315e +vmlinux get_dcookie 0x7ac4d7f5 +vmlinux get_default_font 0x093e3659 +vmlinux get_device 0x42b4bc61 +vmlinux get_disk 0x86c71aed +vmlinux get_driver 0xe10edb1f +vmlinux get_empty_filp 0x258e7eff +vmlinux get_fs_type 0xde33398b +vmlinux get_io_context 0x9f396ad3 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_pci_node_path 0xaac19b6d +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0x5f125ef4 +vmlinux get_sb_nodev 0x6a3404d6 +vmlinux get_sb_pseudo 0xa8ba0f27 +vmlinux get_sb_single 0x02f7c084 +vmlinux get_super 0x1390e31b +vmlinux get_task_mm 0xac53a168 +vmlinux get_unmapped_area 0x09e48e3a +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0xb4d831e8 +vmlinux get_write_access 0x749e3c08 +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x6edc791d +vmlinux gnet_stats_copy_app 0x1ebda0d5 +vmlinux gnet_stats_copy_basic 0x5934cbec +vmlinux gnet_stats_copy_queue 0x27350174 +vmlinux gnet_stats_copy_rate_est 0x1ec9641e +vmlinux gnet_stats_finish_copy 0xb45b005f +vmlinux gnet_stats_start_copy 0xa2fca4f6 +vmlinux gnet_stats_start_copy_compat 0x5f06b1bb +vmlinux grab_cache_page_nowait 0x886b7ee9 +vmlinux groups_alloc 0x51cd47e2 +vmlinux groups_free 0x111bcb2c +vmlinux gsc_alloc_irq 0x9e11c47b +vmlinux gsc_claim_irq 0xcc794ffc +vmlinux gss_decrypt_xdr_buf 0xe683174f +vmlinux gss_encrypt_xdr_buf 0xce996477 +vmlinux gss_mech_get 0x9a027b9b +vmlinux gss_mech_get_by_name 0x6b0cf58a +vmlinux gss_mech_get_by_pseudoflavor 0x46eda7f4 +vmlinux gss_mech_put 0xf52294ad +vmlinux gss_mech_register 0x558bd46b +vmlinux gss_mech_unregister 0x293efb2f +vmlinux gss_pseudoflavor_to_service 0x3c9ea35d +vmlinux gss_service_to_auth_domain_name 0x9674fe5d +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0x92a3e4be +vmlinux have_submounts 0xd337a5f1 +vmlinux high_memory 0x8a7d1c31 +vmlinux hppa_dma_ops 0xf7f003cf +vmlinux hwmon_device_register 0x82baf340 +vmlinux hwmon_device_unregister 0xe4376c82 +vmlinux hwpath_to_device 0xec75c2ac +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0xaa36132b +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_add_setting 0xf24a2a52 +vmlinux ide_build_dmatable 0xd5545854 +vmlinux ide_build_sglist 0x1bccf087 +vmlinux ide_bus_type 0x2c2d368c +vmlinux ide_config_drive_speed 0x600391ec +vmlinux ide_destroy_dmatable 0x13663f9b +vmlinux ide_dma_enable 0xb7afb3b3 +vmlinux ide_dma_intr 0x1eb8055c +vmlinux ide_dma_setup 0x60765f41 +vmlinux ide_dma_speed 0x0a7d0a8a +vmlinux ide_dma_start 0xf2694da2 +vmlinux ide_dma_verbose 0xa56d3575 +vmlinux ide_do_drive_cmd 0x78bfc152 +vmlinux ide_do_reset 0x81ec746e +vmlinux ide_dump_status 0xb8bb61f0 +vmlinux ide_end_drive_cmd 0x5644d13e +vmlinux ide_end_request 0x9c6caa98 +vmlinux ide_error 0x430393be +vmlinux ide_execute_command 0x6c382814 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0xf9eab9b0 +vmlinux ide_get_error_location 0xf5ee36cf +vmlinux ide_hwifs 0x6dcfa08e +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0xc6826fd1 +vmlinux ide_init_drive_cmd 0xed76c7ba +vmlinux ide_init_sg_cmd 0xf14e7193 +vmlinux ide_lock 0xb0e42262 +vmlinux ide_map_sg 0x7f6c05e7 +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0x6a3dc59c +vmlinux ide_pci_unregister_driver 0xa5535bcb +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0x807b7e3b +vmlinux ide_register_hw 0x8c2e4e97 +vmlinux ide_register_hw_with_fixup 0x01695011 +vmlinux ide_register_region 0x61008dcb +vmlinux ide_register_subdriver 0x20cce22d +vmlinux ide_set_handler 0xa9256de7 +vmlinux ide_set_xfer_rate 0xc23fada4 +vmlinux ide_setup_dma 0x7b6400d9 +vmlinux ide_setup_pci_device 0xd64e2d18 +vmlinux ide_setup_pci_devices 0xf78821dc +vmlinux ide_setup_pci_noise 0x0afed732 +vmlinux ide_spin_wait_hwgroup 0x3da4fbd9 +vmlinux ide_stall_queue 0x829a2047 +vmlinux ide_undecoded_slave 0xee68af6e +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0xaa12c0ab +vmlinux ide_unregister_subdriver 0x5161124c +vmlinux ide_use_dma 0x1d0dfe4d +vmlinux ide_wait_not_busy 0x1597d54b +vmlinux ide_wait_stat 0x3a27290a +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0x3e7c8d66 +vmlinux idr_find 0x63e984fa +vmlinux idr_get_new 0xef70e5e7 +vmlinux idr_get_new_above 0x9ad5aa16 +vmlinux idr_init 0x153cbb99 +vmlinux idr_pre_get 0xf226f24b +vmlinux idr_remove 0x320094b2 +vmlinux iget5_locked 0x912573cf +vmlinux iget_locked 0xc8555017 +vmlinux igrab 0xd7a72666 +vmlinux ilookup 0x885d5e62 +vmlinux ilookup5 0xf452bd86 +vmlinux ilookup5_nowait 0xf3e8bd6f +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0xec7ac56b +vmlinux in_egroup_p 0xd8a2ab95 +vmlinux in_group_p 0xc3cf1128 +vmlinux in_lock_functions 0x09d44df9 +vmlinux inb 0x6671bac0 +vmlinux inet6_lookup 0xaf8168bc +vmlinux inet6_lookup_listener 0x577dd8f7 +vmlinux inet_accept 0xccadbd0c +vmlinux inet_add_protocol 0x2fde06b7 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0xa0ced9af +vmlinux inet_bind_bucket_create 0xa36f819b +vmlinux inet_bind_hash 0xe3ce2ae5 +vmlinux inet_csk_accept 0x0951d5ac +vmlinux inet_csk_clear_xmit_timers 0xdcc8891f +vmlinux inet_csk_clone 0xede4b860 +vmlinux inet_csk_delete_keepalive_timer 0x514f1997 +vmlinux inet_csk_destroy_sock 0x50f1a3b7 +vmlinux inet_csk_get_port 0x5569ecd7 +vmlinux inet_csk_init_xmit_timers 0x4e689ece +vmlinux inet_csk_listen_start 0x6ff7c8d2 +vmlinux inet_csk_listen_stop 0x3f27d1cf +vmlinux inet_csk_reqsk_queue_hash_add 0xb544702b +vmlinux inet_csk_reqsk_queue_prune 0xc0b44058 +vmlinux inet_csk_reset_keepalive_timer 0x1f6d27db +vmlinux inet_csk_route_req 0x84634512 +vmlinux inet_csk_search_req 0xc66366a1 +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0xcfb08a67 +vmlinux inet_dgram_connect 0xb735329f +vmlinux inet_dgram_ops 0xe7d97b2d +vmlinux inet_diag_register 0x16512954 +vmlinux inet_diag_unregister 0xd4fe1325 +vmlinux inet_getname 0xea978ec8 +vmlinux inet_ioctl 0x68925c93 +vmlinux inet_listen 0x5078316c +vmlinux inet_listen_wlock 0x28fe224b +vmlinux inet_put_port 0x1b694b4f +vmlinux inet_register_protosw 0xb4fc0e9d +vmlinux inet_release 0x8977d1e7 +vmlinux inet_select_addr 0xe9613c00 +vmlinux inet_sendmsg 0x47c0abc8 +vmlinux inet_shutdown 0x8635c3b9 +vmlinux inet_sk_rebuild_header 0xee4140a7 +vmlinux inet_sock_destruct 0x8cab03e6 +vmlinux inet_stream_connect 0xa2bc04af +vmlinux inet_stream_ops 0xd7d32c41 +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x92b8de29 +vmlinux inet_twsk_deschedule 0x5528f7f4 +vmlinux inet_twsk_schedule 0xf1e345d8 +vmlinux inet_unregister_protosw 0x2df12efe +vmlinux inetdev_by_index 0x1aca741f +vmlinux init_buffer 0x198989aa +vmlinux init_mm 0x806a3355 +vmlinux init_rwsem 0x493feefe +vmlinux init_special_inode 0x14f07606 +vmlinux init_task 0x9103244d +vmlinux init_timer 0xa676f823 +vmlinux inl 0xd377477b +vmlinux inode_add_bytes 0x25db152e +vmlinux inode_change_ok 0x1dab0e27 +vmlinux inode_get_bytes 0x857fd5a7 +vmlinux inode_init_once 0xf4f85c02 +vmlinux inode_needs_sync 0xe620a7aa +vmlinux inode_set_bytes 0x2e56cbd3 +vmlinux inode_setattr 0x23cf6e09 +vmlinux inode_sub_bytes 0x0c940829 +vmlinux inode_update_time 0x216079d5 +vmlinux inotify_dentry_parent_queue_event 0xa518352d +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0xa459fdec +vmlinux inotify_inode_queue_event 0xf5880626 +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0x29d7bc75 +vmlinux input_allocate_device 0x8aad3f95 +vmlinux input_class 0xd8752c06 +vmlinux input_close_device 0xb72221a6 +vmlinux input_event 0x4665b193 +vmlinux input_flush_device 0xe509cf18 +vmlinux input_grab_device 0xbc2b7865 +vmlinux input_open_device 0xa91cc51d +vmlinux input_register_device 0xdefa1605 +vmlinux input_register_handler 0xeb1c31cc +vmlinux input_release_device 0xc29455f0 +vmlinux input_unregister_device 0x2307321e +vmlinux input_unregister_handler 0x7cfe71fa +vmlinux insb 0x10902bf7 +vmlinux insert_resource 0xdc3992ac +vmlinux insl 0x73e0877a +vmlinux install_page 0x1667377e +vmlinux insw 0x69010b06 +vmlinux int_sqrt 0xb678366f +vmlinux int_to_scsilun 0xea10212a +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x96998dbd +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0x7e613127 +vmlinux interruptible_sleep_on_timeout 0xd96c8608 +vmlinux invalidate_bdev 0x0ca3595e +vmlinux invalidate_inode_pages 0x48224223 +vmlinux invalidate_inode_pages2 0x1430a139 +vmlinux invalidate_inode_pages2_range 0x7653b410 +vmlinux invalidate_inodes 0x4482abfd +vmlinux invalidate_partition 0xb60bc972 +vmlinux inw 0x493dc1ef +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0x339ee2d6 +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0xc5534d64 +vmlinux ioread16_rep 0x5857b225 +vmlinux ioread16be 0xf065f629 +vmlinux ioread32 0xe484e35f +vmlinux ioread32_rep 0x3f0546a8 +vmlinux ioread32be 0xfdb9b629 +vmlinux ioread8 0xf10de535 +vmlinux ioread8_rep 0xf441ac43 +vmlinux iounmap 0x5fb196d4 +vmlinux iov_shorten 0x92392cd9 +vmlinux iowrite16 0x8c183cbe +vmlinux iowrite16_rep 0x8cc79cab +vmlinux iowrite16be 0x69a0ca7d +vmlinux iowrite32 0x436c2179 +vmlinux iowrite32_rep 0xbfc177bc +vmlinux iowrite32be 0x6acb973d +vmlinux iowrite8 0x0727c4f3 +vmlinux iowrite8_rep 0xa4b94fea +vmlinux ip4_datagram_connect 0x0c83b19f +vmlinux ip_build_and_send_pkt 0x6b5fe685 +vmlinux ip_cmsg_recv 0x05ae5986 +vmlinux ip_ct_attach 0xb2b955b9 +vmlinux ip_defrag 0xfd261e16 +vmlinux ip_fragment 0x0e966eed +vmlinux ip_generic_getfrag 0xe81fb3f9 +vmlinux ip_getsockopt 0xfb1a4e05 +vmlinux ip_mc_dec_group 0x5886ddf7 +vmlinux ip_mc_inc_group 0x1a99e0f1 +vmlinux ip_mc_join_group 0x2321997e +vmlinux ip_queue_xmit 0xc7ac6f8d +vmlinux ip_route_input 0xe05f88b6 +vmlinux ip_route_me_harder 0xf2c0fb44 +vmlinux ip_route_output_flow 0x07a72719 +vmlinux ip_route_output_key 0xd4f35256 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0x434ccab0 +vmlinux ip_setsockopt 0x3c1a8215 +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0xd7084cb6 +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0x53b8279b +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0xaf6e2c01 +vmlinux irq_stat 0xa32b0300 +vmlinux is_bad_inode 0x87c604aa +vmlinux is_console_locked 0x944a564d +vmlinux isa_bridge 0xcc6dc170 +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux iunique 0xb61d6035 +vmlinux iw_handler_get_spy 0xafbb1aca +vmlinux iw_handler_get_thrspy 0xdffdbd22 +vmlinux iw_handler_set_spy 0x197ae4a2 +vmlinux iw_handler_set_thrspy 0xff651919 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x99f051d9 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0x52990f4d +vmlinux kernel_recvmsg 0xaa64bcaa +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0xc0960a25 +vmlinux kernel_subsys 0xbeeae686 +vmlinux kernel_thread 0x7e9ebb05 +vmlinux kfifo_alloc 0x5cc5b658 +vmlinux kfifo_free 0x08a64e7c +vmlinux kfifo_init 0xfa31cd3b +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0xb3fd03dc +vmlinux kill_anon_super 0x9de657b2 +vmlinux kill_block_super 0x64cf4a83 +vmlinux kill_fasync 0xfb114a7c +vmlinux kill_litter_super 0x11e242f8 +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xec10e63a +vmlinux klist_add_head 0xe14bb3a2 +vmlinux klist_add_tail 0x8bd126f9 +vmlinux klist_del 0x7081deed +vmlinux klist_init 0x83ba3c87 +vmlinux klist_iter_exit 0x5dbca5b8 +vmlinux klist_iter_init 0xba799312 +vmlinux klist_iter_init_node 0xee8c66d5 +vmlinux klist_next 0x0d1a949b +vmlinux klist_node_attached 0x1d1ee37c +vmlinux klist_remove 0x88277446 +vmlinux km_new_mapping 0x52942a38 +vmlinux km_policy_notify 0xf7037b63 +vmlinux km_state_notify 0x962423e9 +vmlinux km_waitq 0x9b0f1de9 +vmlinux kmem_cache_alloc 0x25bd5820 +vmlinux kmem_cache_create 0x1badcc6b +vmlinux kmem_cache_destroy 0x01d5c256 +vmlinux kmem_cache_free 0x0873c4e0 +vmlinux kmem_cache_name 0xf7817e58 +vmlinux kmem_cache_shrink 0x1e313462 +vmlinux kmem_cache_size 0x6240bd8f +vmlinux kmem_find_general_cachep 0xd734bb2c +vmlinux kobject_add 0x60136c17 +vmlinux kobject_del 0x11fe95cb +vmlinux kobject_get 0x83993ef8 +vmlinux kobject_hotplug 0xe5b53d95 +vmlinux kobject_init 0x71e954aa +vmlinux kobject_put 0x6747fd6b +vmlinux kobject_register 0x5384bbca +vmlinux kobject_set_name 0x8d2dfa62 +vmlinux kobject_uevent 0xfbd460cd +vmlinux kobject_uevent_atomic 0x73ee046b +vmlinux kobject_unregister 0x2b8b0453 +vmlinux krb5_decrypt 0x80282c17 +vmlinux krb5_encrypt 0xac9a56b2 +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0xabb8393d +vmlinux kset_register 0x72290aef +vmlinux kset_unregister 0x3ced7c34 +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0xc19050d9 +vmlinux kthread_create 0x73a9e7e4 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0xbba60d3b +vmlinux kthread_stop_sem 0xccdcd225 +vmlinux kzalloc 0x5a3b6eca +vmlinux laptop_mode 0x76d3cd60 +vmlinux lclear_user 0x57b8d504 +vmlinux lease_get_mtime 0xd396bf5c +vmlinux lease_modify 0x24344333 +vmlinux linkwatch_fire_event 0x0dbaad73 +vmlinux ll_rw_block 0x893b0ad9 +vmlinux load_nls 0x02ec804a +vmlinux load_nls_default 0x3b94dd2c +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_cpu_hotplug 0xba813bd6 +vmlinux lock_cpu_hotplug_interruptible 0xdd7ee0f9 +vmlinux lock_kernel 0x3656bf5a +vmlinux lock_may_read 0x8e7b6fe0 +vmlinux lock_may_write 0xd9e303b9 +vmlinux lock_rename 0xb1fa7087 +vmlinux lock_sock 0xd299f625 +vmlinux lockd_down 0xa7b91a7b +vmlinux lockd_up 0xf6933c48 +vmlinux locks_copy_lock 0xf6085619 +vmlinux locks_init_lock 0xd1caf880 +vmlinux locks_mandatory_area 0x5270c842 +vmlinux locks_remove_posix 0xcbdf69a6 +vmlinux lookup_create 0xe98fbd6f +vmlinux lookup_hash 0x5ddad305 +vmlinux lookup_instantiate_filp 0x389f375c +vmlinux lookup_one_len 0xbfe87d65 +vmlinux loopback_dev 0x4a50ff19 +vmlinux loops_per_jiffy 0xba497f13 +vmlinux lstrncpy_from_user 0x58d282f6 +vmlinux lstrnlen_user 0xd624bb77 +vmlinux make_8023_client 0x83efc75d +vmlinux make_bad_inode 0x3c934e62 +vmlinux make_checksum 0xde4dab74 +vmlinux malloc_sizes 0xad2ce19f +vmlinux mapping_tagged 0x59d7d5b3 +vmlinux mark_buffer_async_write 0x15465859 +vmlinux mark_buffer_dirty 0x12050871 +vmlinux mark_buffer_dirty_inode 0xc5dc5ba1 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x6aa83d36 +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0xd1d02129 +vmlinux may_umount_tree 0x39267f58 +vmlinux memchr 0xc740c64a +vmlinux memcmp 0xc7ec28b0 +vmlinux memcpy 0x236c8c64 +vmlinux memcpy_fromio 0xfbbb764c +vmlinux memcpy_fromiovec 0x36139a51 +vmlinux memcpy_fromiovecend 0x9bc565c5 +vmlinux memcpy_toio 0xa1d60f0f +vmlinux memcpy_toiovec 0x2876a6d3 +vmlinux memmove 0x5dbbe98e +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xcfaf79ba +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0xbe8a1485 +vmlinux mempool_create_node 0x31448a4a +vmlinux mempool_destroy 0xe5077a8f +vmlinux mempool_free 0x37a9798f +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x931d2521 +vmlinux memscan 0x9c0ea3cd +vmlinux memset 0xde0bdcff +vmlinux memset_io 0x6da41e98 +vmlinux misc_deregister 0x105c04a9 +vmlinux misc_register 0x5eb82588 +vmlinux mmput 0xc294bb8f +vmlinux mnt_pin 0x978a7fc6 +vmlinux mnt_unpin 0x54ad3891 +vmlinux mntput_no_expire 0xc38d415d +vmlinux mod_reg_security 0xf7424627 +vmlinux mod_timer 0x400a2c21 +vmlinux mod_unreg_security 0x25e6cb40 +vmlinux module_add_driver 0x5ea66366 +vmlinux module_refcount 0xd979b9cc +vmlinux module_remove_driver 0xee5cc2de +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0x1caad365 +vmlinux mpage_readpages 0xd32b4e35 +vmlinux mpage_writepage 0xe4207c62 +vmlinux mpage_writepages 0x4cc45455 +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux n_tty_ioctl 0xdb30ec13 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x4673e471 +vmlinux neigh_changeaddr 0xd5834db3 +vmlinux neigh_compat_output 0x574b590a +vmlinux neigh_connected_output 0x1fe26dde +vmlinux neigh_create 0x2a5da290 +vmlinux neigh_delete 0xe644d0c9 +vmlinux neigh_destroy 0xdc2fd577 +vmlinux neigh_dump_info 0x3649ec42 +vmlinux neigh_event_ns 0x6fc00f3e +vmlinux neigh_for_each 0x2e569065 +vmlinux neigh_ifdown 0x4429447f +vmlinux neigh_lookup 0x23b379d5 +vmlinux neigh_lookup_nodev 0x7555030e +vmlinux neigh_parms_alloc 0x8cd7e7dc +vmlinux neigh_parms_release 0x172bd885 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0x2b5dfeb1 +vmlinux neigh_seq_next 0x91958ca0 +vmlinux neigh_seq_start 0x8e5c5be0 +vmlinux neigh_seq_stop 0x21eb9f9c +vmlinux neigh_sysctl_register 0x4c6b8d35 +vmlinux neigh_sysctl_unregister 0x97d428d5 +vmlinux neigh_table_clear 0x5e5b8b88 +vmlinux neigh_table_init 0xa2443d30 +vmlinux neigh_update 0xdb75d579 +vmlinux neigh_update_hhs 0xfd47c86c +vmlinux neightbl_dump_info 0xdfcd41c3 +vmlinux neightbl_set 0x4cefda59 +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0xadc41b91 +vmlinux netdev_features_change 0x1c36f1b0 +vmlinux netdev_rx_csum_fault 0x2d1334a2 +vmlinux netdev_set_master 0x3cc89d0f +vmlinux netdev_state_change 0x9dc23261 +vmlinux netif_carrier_off 0x2749bfce +vmlinux netif_carrier_on 0xb515f35a +vmlinux netif_receive_skb 0x9d5c5ba4 +vmlinux netif_rx 0xd53558e5 +vmlinux netif_rx_ni 0x9528f2eb +vmlinux netlink_ack 0x9f565a29 +vmlinux netlink_broadcast 0x3c4a1e05 +vmlinux netlink_dump_start 0x308e7341 +vmlinux netlink_kernel_create 0xbad503da +vmlinux netlink_queue_skip 0xdf22ff9c +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0x2bdbf13f +vmlinux netlink_set_err 0xa6881608 +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0xaa5589c9 +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x501176c2 +vmlinux netpoll_parse_options 0x8398e3f6 +vmlinux netpoll_poll 0x68509964 +vmlinux netpoll_queue 0x1c49fb9f +vmlinux netpoll_send_udp 0xa404fbbe +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0xb11a7f9b +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0x69413b85 +vmlinux next_thread 0xfae42ea0 +vmlinux nf_ct_attach 0x0b22302b +vmlinux nf_getsockopt 0xa6585d15 +vmlinux nf_hook_slow 0x24e90c10 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0xc048bb4b +vmlinux nf_log_register 0x50e03a8e +vmlinux nf_log_unregister_logger 0x1f97d690 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0x3a3df25e +vmlinux nf_register_queue_handler 0xed5810ce +vmlinux nf_register_queue_rerouter 0x54ede6e3 +vmlinux nf_register_sockopt 0x6bc17335 +vmlinux nf_reinject 0xcfeaafd5 +vmlinux nf_setsockopt 0xb79d36b8 +vmlinux nf_unregister_hook 0x8cc1a40f +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0x2116d483 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x3654bd83 +vmlinux nfs_debug 0xaf5bf6ef +vmlinux nfsd_debug 0xbf9d1b96 +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0x4c4c956e +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0x532eb6dc +vmlinux nla_reserve 0x2057bb31 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0xa33f7c7c +vmlinux nla_validate 0x2cc98162 +vmlinux nlm_debug 0x53445f68 +vmlinux nlmclnt_proc 0x4e088ca7 +vmlinux nlmsvc_ops 0x8518d409 +vmlinux no_llseek 0x5f15e699 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0xa4c4ea2e +vmlinux nobh_prepare_write 0xa7a8c1eb +vmlinux nobh_truncate_page 0x9aa3c7a0 +vmlinux nobh_writepage 0xa9b42fe2 +vmlinux node_data 0xc918d075 +vmlinux node_online_map 0x4385b98f +vmlinux node_possible_map 0x8838ae64 +vmlinux nonseekable_open 0xb6b64826 +vmlinux noop_qdisc 0xc05f1b56 +vmlinux noop_qdisc_ops 0x8f77de6a +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x838c175b +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0x3b20f127 +vmlinux open_by_devnum 0xce2a40d2 +vmlinux open_exec 0x4661264e +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux outb 0xe2bbd43a +vmlinux outl 0x22c26a55 +vmlinux outsb 0x12ea337e +vmlinux outsl 0x24bd930a +vmlinux outsw 0x533903d8 +vmlinux outw 0x8c66ce6b +vmlinux p80211_resume 0x80f7c229 +vmlinux p80211_suspend 0xeea75d9b +vmlinux p80211netdev_hwremoved 0x983bb915 +vmlinux p80211netdev_rx 0x64ff334c +vmlinux p80211skb_free 0x46c4141d +vmlinux p80211skb_rxmeta_attach 0xe6584b33 +vmlinux pa_tlb_lock 0xbf9a06bd +vmlinux page_follow_link_light 0x97f19a91 +vmlinux page_put_link 0x271c4575 +vmlinux page_readlink 0x82ce9125 +vmlinux page_symlink 0xf8828925 +vmlinux page_symlink_inode_operations 0xb633532f +vmlinux pagevec_lookup_tag 0xe746f524 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0x6895eddc +vmlinux path_release 0xd15f06cd +vmlinux path_walk 0x08233d48 +vmlinux pci_add_new_bus 0x2bee5ac1 +vmlinux pci_assign_resource 0x2677ca88 +vmlinux pci_block_user_cfg_access 0x1c424e3b +vmlinux pci_bus_add_device 0x9623b8e1 +vmlinux pci_bus_add_devices 0x011e1fdf +vmlinux pci_bus_alloc_resource 0x4361ec77 +vmlinux pci_bus_assign_resources 0x8c8a4a92 +vmlinux pci_bus_find_capability 0xc042f23e +vmlinux pci_bus_max_busnr 0x166aa820 +vmlinux pci_bus_read_config_byte 0xa9f753ba +vmlinux pci_bus_read_config_dword 0xda70dd0f +vmlinux pci_bus_read_config_word 0x77a93c1f +vmlinux pci_bus_size_bridges 0x6045740e +vmlinux pci_bus_type 0x3615a713 +vmlinux pci_bus_write_config_byte 0x2163cebf +vmlinux pci_bus_write_config_dword 0x6b590d34 +vmlinux pci_bus_write_config_word 0x60229de9 +vmlinux pci_choose_state 0x377bc727 +vmlinux pci_clear_mwi 0x45d8b607 +vmlinux pci_create_bus 0x525aeea9 +vmlinux pci_dev_driver 0x28513ab8 +vmlinux pci_dev_get 0x50e3a5b1 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0xaf10047a +vmlinux pci_disable_device 0x2459324b +vmlinux pci_do_scan_bus 0x3e4b2891 +vmlinux pci_enable_bridges 0x28eb5212 +vmlinux pci_enable_device 0xff9d3c86 +vmlinux pci_enable_device_bars 0xd27c6b54 +vmlinux pci_enable_wake 0xce3ac1b0 +vmlinux pci_find_bus 0x93085a8c +vmlinux pci_find_capability 0x77ad1eaf +vmlinux pci_find_device 0x009e01e9 +vmlinux pci_find_device_reverse 0x74f23601 +vmlinux pci_find_next_bus 0xa1ee3861 +vmlinux pci_find_next_capability 0x06d4c263 +vmlinux pci_find_parent_resource 0xdfbfbb56 +vmlinux pci_find_slot 0x3afb2167 +vmlinux pci_fixup_device 0x22d178f7 +vmlinux pci_get_class 0xb7d012fb +vmlinux pci_get_device 0xf471965c +vmlinux pci_get_slot 0xea58dc5d +vmlinux pci_get_subsys 0x5373ecaf +vmlinux pci_intx 0x1aa92739 +vmlinux pci_iomap 0x20c0d8ed +vmlinux pci_iounmap 0xb41944b3 +vmlinux pci_map_rom 0xc0f7c555 +vmlinux pci_map_rom_copy 0x723ed3b3 +vmlinux pci_match_device 0x21fde05f +vmlinux pci_match_id 0x87c6453a +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0x641d9ae4 +vmlinux pci_proc_attach_device 0xbdbf3501 +vmlinux pci_proc_detach_bus 0x641e9b54 +vmlinux pci_release_region 0x387309d2 +vmlinux pci_release_regions 0xc137edd9 +vmlinux pci_remove_behind_bridge 0x9ef3b0e3 +vmlinux pci_remove_bus 0x795ab032 +vmlinux pci_remove_bus_device 0x5836f8b3 +vmlinux pci_remove_device_safe 0xc6735d6c +vmlinux pci_remove_rom 0x1538c3f3 +vmlinux pci_request_region 0x6f612b77 +vmlinux pci_request_regions 0x181ee3fb +vmlinux pci_restore_bars 0xb372537a +vmlinux pci_restore_state 0x6ff91dc1 +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0xa920fff3 +vmlinux pci_scan_bridge 0x72b01cbd +vmlinux pci_scan_bus_parented 0x051f334d +vmlinux pci_scan_child_bus 0x9b4e4ebd +vmlinux pci_scan_single_device 0x23e30f86 +vmlinux pci_scan_slot 0xc48fbabc +vmlinux pci_set_consistent_dma_mask 0x6a0d429b +vmlinux pci_set_dma_mask 0x0bebe42a +vmlinux pci_set_master 0x5f414ee8 +vmlinux pci_set_mwi 0xc5a2b992 +vmlinux pci_set_power_state 0x2aaf36a3 +vmlinux pci_setup_cardbus 0xec5f4a24 +vmlinux pci_unblock_user_cfg_access 0x5bc64a1d +vmlinux pci_unmap_rom 0xcf06f037 +vmlinux pci_unregister_driver 0xe49c8f1c +vmlinux pci_walk_bus 0x2d8bee9c +vmlinux pcibios_bus_to_resource 0x5181ca40 +vmlinux pcibios_resource_to_bus 0x18515310 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pciserial_init_ports 0x13f80548 +vmlinux pciserial_remove_ports 0xbb980b20 +vmlinux pciserial_resume_ports 0x4bba37ab +vmlinux pciserial_suspend_ports 0x221eb1ce +vmlinux pdc_add_valid 0xcf96b65b +vmlinux pdc_get_initiator 0x53622bb3 +vmlinux pdc_iodc_read 0xab4e4345 +vmlinux pdc_lan_station_id 0xe7765108 +vmlinux pdc_stable_get_size 0xce67b3ce +vmlinux pdc_stable_initialize 0x90918311 +vmlinux pdc_stable_read 0x99049ca2 +vmlinux pdc_stable_verify_contents 0x1228329d +vmlinux pdc_stable_write 0x0423a8ab +vmlinux pdc_sti_call 0xf2b4938e +vmlinux pdc_tod_read 0x26f7f79a +vmlinux pdc_tod_set 0x6ae85394 +vmlinux per_cpu__kstat 0x09d429dc +vmlinux per_cpu__softnet_data 0xe5edc566 +vmlinux percpu_counter_mod 0x921ec48a +vmlinux permission 0xb3f43928 +vmlinux pfifo_qdisc_ops 0x00e2a1f3 +vmlinux pfnnid_map 0xe00fd713 +vmlinux platform_add_devices 0x33ca51fd +vmlinux platform_bus 0x988803ff +vmlinux platform_bus_type 0x7f1a4cde +vmlinux platform_device_add 0xa50a0916 +vmlinux platform_device_add_data 0xd4609d61 +vmlinux platform_device_add_resources 0xb5d99af4 +vmlinux platform_device_alloc 0xc4cac461 +vmlinux platform_device_put 0xfa250150 +vmlinux platform_device_register 0x0c43907d +vmlinux platform_device_register_simple 0x4c9afd0d +vmlinux platform_device_unregister 0x7e565e38 +vmlinux platform_driver_register 0x388dbd43 +vmlinux platform_driver_unregister 0x94f80158 +vmlinux platform_get_irq 0x819dddf0 +vmlinux platform_get_irq_byname 0x73643d38 +vmlinux platform_get_resource 0x189ebcad +vmlinux platform_get_resource_byname 0xc0fb7026 +vmlinux pm_power_off 0x60a32ea9 +vmlinux pneigh_enqueue 0x73e93949 +vmlinux pneigh_lookup 0x0340dff1 +vmlinux poll_freewait 0x5704c6a7 +vmlinux poll_initwait 0xb5ff1ac7 +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0xd32e52c7 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x640a7078 +vmlinux posix_acl_equiv_mode 0xd8282ff0 +vmlinux posix_acl_from_mode 0x3adc15b9 +vmlinux posix_acl_from_xattr 0x42acbf72 +vmlinux posix_acl_permission 0xf1542d5e +vmlinux posix_acl_to_xattr 0xb055d8da +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0xfa1d725d +vmlinux posix_lock_file 0xcfbbcfe8 +vmlinux posix_lock_file_wait 0x7cbf22c1 +vmlinux posix_locks_deadlock 0xc3023c0a +vmlinux posix_test_lock 0x8b3ee3af +vmlinux posix_timer_event 0x034c816b +vmlinux posix_unblock_lock 0x7bde3d86 +vmlinux pre_task_out_intr 0x5ecb8eec +vmlinux prepare_binprm 0x0175e600 +vmlinux prepare_to_wait 0x65f4af5f +vmlinux prepare_to_wait_exclusive 0x339d4841 +vmlinux print_hexl 0x4c2f4b6d +vmlinux print_pa_hwpath 0xe5b686c6 +vmlinux print_pci_hwpath 0xadcc513d +vmlinux printk 0xdd132261 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0xf7bb9f5d +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0x54dbcfeb +vmlinux proc_dointvec 0xa68ec1de +vmlinux proc_dointvec_jiffies 0x425f3e1b +vmlinux proc_dointvec_minmax 0xb071860d +vmlinux proc_dointvec_ms_jiffies 0xbfc5edcd +vmlinux proc_dointvec_userhz_jiffies 0x12348701 +vmlinux proc_dostring 0x66847756 +vmlinux proc_doulongvec_minmax 0x26a39b11 +vmlinux proc_doulongvec_ms_jiffies_minmax 0x31b93cc3 +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0x5fbf0e49 +vmlinux proc_net 0x4d6a45e4 +vmlinux proc_net_netfilter 0xef7c3114 +vmlinux proc_net_stat 0x2e586e5e +vmlinux proc_root 0xd6229a1e +vmlinux proc_root_driver 0x61d27129 +vmlinux proc_root_fs 0x52d9baba +vmlinux proc_symlink 0xed2168ca +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux profile_pc 0xc64b0f4a +vmlinux proto_register 0x86eb4c54 +vmlinux proto_unregister 0x3be4fae6 +vmlinux ps2_cmd_aborted 0x825e7829 +vmlinux ps2_command 0x331c6cfe +vmlinux ps2_drain 0x668414a3 +vmlinux ps2_handle_ack 0xeb980e7e +vmlinux ps2_handle_response 0xd15cb999 +vmlinux ps2_init 0x4a9a03b7 +vmlinux ps2_schedule_command 0x72fb3864 +vmlinux ps2_sendbyte 0xb425dc97 +vmlinux pskb_copy 0xde94c6dc +vmlinux pskb_expand_head 0xee28ee32 +vmlinux pskb_put 0xb497ad10 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0xbb7a164b +vmlinux put_cmsg 0x43ec913a +vmlinux put_device 0x32adf8e7 +vmlinux put_disk 0x6f7e52c1 +vmlinux put_driver 0x27ae2674 +vmlinux put_files_struct 0x153645e8 +vmlinux put_io_context 0xb2a4a66d +vmlinux put_page 0xe6f1d18f +vmlinux put_rpccred 0x56ac4a6c +vmlinux put_tty_driver 0xdc0d1c1d +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0xb2305b49 +vmlinux qdisc_create_dflt 0xb5188ea5 +vmlinux qdisc_destroy 0x121165b4 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0x418e1bde +vmlinux qdisc_lookup 0xfbb0ea8d +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0xb3bb6ab6 +vmlinux qdisc_restart 0x34c04029 +vmlinux qdisc_unlock_tree 0xd31508a6 +vmlinux queue_delayed_work 0x8bcee8ff +vmlinux queue_work 0xd2017ba8 +vmlinux qword_add 0xedcf6be4 +vmlinux qword_addhex 0xc8e96dea +vmlinux qword_get 0xe97f4ce5 +vmlinux radix_tree_delete 0x898049c9 +vmlinux radix_tree_gang_lookup 0x35ef380e +vmlinux radix_tree_gang_lookup_tag 0xed493232 +vmlinux radix_tree_insert 0x72e6283f +vmlinux radix_tree_lookup 0x76e635da +vmlinux radix_tree_lookup_slot 0x41706e2f +vmlinux radix_tree_tag_clear 0x9ee300df +vmlinux radix_tree_tag_set 0xd73b9fb5 +vmlinux radix_tree_tagged 0xb52b2186 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_bytes_from_xdr_buf 0x06e78c93 +vmlinux read_cache_page 0x282b8326 +vmlinux read_cache_pages 0x4ecd75f7 +vmlinux read_dev_sector 0xca95886e +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0x5b6049a3 +vmlinux redraw_screen 0xb402784e +vmlinux register_binfmt 0xd773693c +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0x1152acd4 +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x28105cf0 +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_exec_domain 0x16a72db7 +vmlinux register_filesystem 0x8e3c07eb +vmlinux register_firmware 0x40359ccb +vmlinux register_framebuffer 0x03bbc035 +vmlinux register_gifconf 0xbf646511 +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0x75d1d15a +vmlinux register_netdevice 0x63f253c4 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x36b16223 +vmlinux register_parisc_driver 0x166fce87 +vmlinux register_posix_clock 0x5e1bf2f7 +vmlinux register_qdisc 0x9c3a33e1 +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0x426401f7 +vmlinux register_sysctl_table 0x395030a1 +vmlinux register_sysrq_key 0x4139e443 +vmlinux register_tcf_proto_ops 0x4648a6ba +vmlinux register_timer_hook 0x2c7d132c +vmlinux register_wlandev 0xe0f5ef81 +vmlinux registered_fb 0x94eced78 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x6ef56f31 +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x707af73e +vmlinux remap_pfn_range 0xf0971d4d +vmlinux remote_llseek 0x7d6cbf2e +vmlinux remove_arg_zero 0x27088958 +vmlinux remove_inode_hash 0xa3d2b48d +vmlinux remove_proc_entry 0x4e19ecf5 +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0xf0ead4f9 +vmlinux remove_wait_queue 0x0ef22ade +vmlinux reqsk_queue_alloc 0x1e8ec200 +vmlinux reqsk_queue_destroy 0x45da0435 +vmlinux request_firmware 0xb0717b94 +vmlinux request_firmware_nowait 0x9ff5e30a +vmlinux request_irq 0x8e45dfca +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux rpc_bind_new_program 0x71a45ce2 +vmlinux rpc_call_async 0x1ace0fc4 +vmlinux rpc_call_setup 0x1aa2b8a7 +vmlinux rpc_call_sync 0xedb6821f +vmlinux rpc_clnt_sigmask 0x2f1f7b49 +vmlinux rpc_clnt_sigunmask 0xfe36a4a2 +vmlinux rpc_clone_client 0x69719a5d +vmlinux rpc_create_client 0x6546b472 +vmlinux rpc_debug 0x31a89d59 +vmlinux rpc_delay 0x6c0fc3a7 +vmlinux rpc_destroy_client 0x94207b35 +vmlinux rpc_execute 0x030b183b +vmlinux rpc_init_task 0xa6888da9 +vmlinux rpc_init_wait_queue 0x916aaa11 +vmlinux rpc_killall_tasks 0x4a6e9373 +vmlinux rpc_max_payload 0x8b659e32 +vmlinux rpc_mkpipe 0xf0791eee +vmlinux rpc_new_child 0x33a5b85e +vmlinux rpc_new_client 0x6e67101b +vmlinux rpc_new_task 0x6f32e8be +vmlinux rpc_proc_register 0x18fcb18b +vmlinux rpc_proc_unregister 0x5bd26000 +vmlinux rpc_queue_upcall 0xb738ea7f +vmlinux rpc_release_client 0x9e820ebf +vmlinux rpc_release_task 0x7d797333 +vmlinux rpc_restart_call 0xe269e2e4 +vmlinux rpc_run_child 0x435ed5f6 +vmlinux rpc_setbufsize 0xf43e3bcb +vmlinux rpc_shutdown_client 0x6679e632 +vmlinux rpc_sleep_on 0x1e0c8ccc +vmlinux rpc_unlink 0x9296bec2 +vmlinux rpc_wake_up 0x6d71e3af +vmlinux rpc_wake_up_next 0x1547fd7b +vmlinux rpc_wake_up_status 0xa5509e00 +vmlinux rpc_wake_up_task 0xae25d6d1 +vmlinux rpcauth_create 0x0e788021 +vmlinux rpcauth_free_credcache 0xc3b9eaf7 +vmlinux rpcauth_init_credcache 0x08afc9d3 +vmlinux rpcauth_lookup_credcache 0xf6ef37c0 +vmlinux rpcauth_lookupcred 0xaac423d6 +vmlinux rpcauth_register 0x84903386 +vmlinux rpcauth_unregister 0x22031e71 +vmlinux rpciod_down 0xbabf0f35 +vmlinux rpciod_up 0x375492a4 +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x83230e05 +vmlinux rtnetlink_links 0x41ba129a +vmlinux rtnetlink_put_metrics 0xf9696db3 +vmlinux rtnl 0x21a41fee +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0x4eeb65de +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux sb_min_blocksize 0x866e27ec +vmlinux sb_set_blocksize 0x291cf0d0 +vmlinux sched_setscheduler 0xabcad741 +vmlinux schedule 0x01000e51 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0x60e2a348 +vmlinux scm_fp_dup 0x3b6112eb +vmlinux scnprintf 0x7bb4de17 +vmlinux scsi_add_device 0x701618fc +vmlinux scsi_add_host 0x9b53ca4f +vmlinux scsi_adjust_queue_depth 0x361c2ead +vmlinux scsi_allocate_request 0xf09fbf18 +vmlinux scsi_bios_ptable 0xf6f1a048 +vmlinux scsi_block_requests 0x91a809b9 +vmlinux scsi_block_when_processing_errors 0x891c6ad8 +vmlinux scsi_bus_type 0x7cf97554 +vmlinux scsi_calculate_bounce_limit 0x53cda869 +vmlinux scsi_cmd_ioctl 0x0d6ed71f +vmlinux scsi_command_normalize_sense 0x67c8f90d +vmlinux scsi_command_size 0x9b05ea5c +vmlinux scsi_device_cancel 0x20f9946f +vmlinux scsi_device_get 0x9c03ced6 +vmlinux scsi_device_lookup 0xb0325f35 +vmlinux scsi_device_lookup_by_target 0x79219dec +vmlinux scsi_device_put 0xf23ef7f6 +vmlinux scsi_device_quiesce 0xa325d52b +vmlinux scsi_device_resume 0x74710984 +vmlinux scsi_device_set_state 0x1d3ead2f +vmlinux scsi_device_types 0x6df713c9 +vmlinux scsi_do_req 0x786c4dd9 +vmlinux scsi_execute 0x01872cb8 +vmlinux scsi_execute_req 0x5c28550f +vmlinux scsi_extd_sense_format 0x11267875 +vmlinux scsi_finish_command 0x67488f18 +vmlinux scsi_flush_work 0xc2c8410b +vmlinux scsi_free_host_dev 0xc6dcd52f +vmlinux scsi_get_command 0x5cbd1419 +vmlinux scsi_get_host_dev 0xd4f4c310 +vmlinux scsi_get_sense_info_fld 0x796fc5ce +vmlinux scsi_host_alloc 0xf168421d +vmlinux scsi_host_get 0xd2f39057 +vmlinux scsi_host_lookup 0xa8c415a0 +vmlinux scsi_host_put 0xbcd10b6e +vmlinux scsi_host_set_state 0x576cf628 +vmlinux scsi_internal_device_block 0x6c4bb5a8 +vmlinux scsi_internal_device_unblock 0x35c14352 +vmlinux scsi_io_completion 0x2cc58c78 +vmlinux scsi_ioctl 0xbe7e814b +vmlinux scsi_ioctl_send_command 0x3929ee35 +vmlinux scsi_is_host_device 0x2a0eda9b +vmlinux scsi_is_sdev_device 0x6bfb8a24 +vmlinux scsi_is_target_device 0xa7049410 +vmlinux scsi_mode_sense 0x3e8a4e54 +vmlinux scsi_nonblockable_ioctl 0xe4f3218d +vmlinux scsi_normalize_sense 0x0c65e73c +vmlinux scsi_partsize 0x4afe9a77 +vmlinux scsi_print_command 0xf4fc2375 +vmlinux scsi_print_msg 0x67f88938 +vmlinux scsi_print_req_sense 0xc5aba682 +vmlinux scsi_print_sense 0xd97fcb7f +vmlinux scsi_print_sense_hdr 0xca5dbc50 +vmlinux scsi_print_status 0x9cfd56c5 +vmlinux scsi_put_command 0xcc51b79a +vmlinux scsi_queue_work 0x8aaf634b +vmlinux scsi_register 0x551db61d +vmlinux scsi_register_driver 0x431110b3 +vmlinux scsi_register_interface 0xecbb93f4 +vmlinux scsi_release_request 0x6579b2e6 +vmlinux scsi_remove_device 0x485b9088 +vmlinux scsi_remove_host 0xe3fd91fe +vmlinux scsi_remove_target 0x26bfd45a +vmlinux scsi_report_bus_reset 0x08184970 +vmlinux scsi_report_device_reset 0x957db580 +vmlinux scsi_request_normalize_sense 0x11b97884 +vmlinux scsi_rescan_device 0x2c914e86 +vmlinux scsi_reset_provider 0x7b79049e +vmlinux scsi_scan_host 0xf3ea2969 +vmlinux scsi_scan_target 0x27ee3ae5 +vmlinux scsi_sense_desc_find 0x2b0ba2b0 +vmlinux scsi_sense_key_string 0x96cd2b04 +vmlinux scsi_set_medium_removal 0x604212b6 +vmlinux scsi_setup_blk_pc_cmnd 0xbb57d6dc +vmlinux scsi_target_block 0x574b58de +vmlinux scsi_target_quiesce 0xd235f093 +vmlinux scsi_target_resume 0x655a3dd5 +vmlinux scsi_target_unblock 0xb1bef6fd +vmlinux scsi_test_unit_ready 0xd3752f54 +vmlinux scsi_track_queue_full 0x03695bfb +vmlinux scsi_unblock_requests 0x6617fbaf +vmlinux scsi_unregister 0xead19fd2 +vmlinux scsicam_bios_param 0xa37d8b39 +vmlinux search_binary_handler 0x91584b23 +vmlinux secpath_dup 0xd37ab049 +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0xcb392a9c +vmlinux securityfs_create_dir 0x6d03dbc7 +vmlinux securityfs_create_file 0xcf03a6e1 +vmlinux securityfs_remove 0x48fa1127 +vmlinux send_sig 0xa523ffc3 +vmlinux send_sig_info 0x2aa9294b +vmlinux seq_escape 0x24d84cc9 +vmlinux seq_lseek 0x06dcf37f +vmlinux seq_open 0xf0cefbaa +vmlinux seq_path 0x64c5dd88 +vmlinux seq_printf 0xa0566033 +vmlinux seq_putc 0xe2861eb8 +vmlinux seq_puts 0xfb6b54b6 +vmlinux seq_read 0x17637229 +vmlinux seq_release 0x64a32d57 +vmlinux seq_release_private 0x0f36db7b +vmlinux serial8250_register_port 0x630e3e13 +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0x73dc70fa +vmlinux serio_interrupt 0x2047119a +vmlinux serio_open 0xb523258d +vmlinux serio_reconnect 0x89f75b5a +vmlinux serio_rescan 0x2b132af4 +vmlinux serio_unregister_child_port 0x3c1f1d3d +vmlinux serio_unregister_driver 0xbe4eced4 +vmlinux serio_unregister_port 0xc18ba652 +vmlinux set_anon_super 0x70fec634 +vmlinux set_bh_page 0x055e56a4 +vmlinux set_binfmt 0xe37b4cdb +vmlinux set_blocksize 0x5413ac65 +vmlinux set_cpus_allowed 0x19ce49a1 +vmlinux set_current_groups 0x72fbae28 +vmlinux set_device_ro 0xba008cfd +vmlinux set_disk_ro 0x6eae8866 +vmlinux set_page_dirty 0x5a57257f +vmlinux set_page_dirty_lock 0x5eb7a841 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0xe2242ea5 +vmlinux setlease 0x8fccd8bc +vmlinux setup_arg_pages 0xbc8aab45 +vmlinux sget 0xbbfe2da1 +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x6ff9449a +vmlinux shrink_dcache_sb 0x573faf3c +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x8ed6f0ed +vmlinux simple_attr_close 0xe8da960f +vmlinux simple_attr_open 0x619397e2 +vmlinux simple_attr_read 0x04ead670 +vmlinux simple_attr_write 0x9d11e860 +vmlinux simple_commit_write 0x7bd0bd69 +vmlinux simple_dir_inode_operations 0x09e3fcca +vmlinux simple_dir_operations 0x0a191c4e +vmlinux simple_empty 0x4a792796 +vmlinux simple_fill_super 0x5328f5e3 +vmlinux simple_getattr 0xc29619d2 +vmlinux simple_link 0x148b5f93 +vmlinux simple_lookup 0x04abb260 +vmlinux simple_pin_fs 0xc45d9816 +vmlinux simple_prepare_write 0x0606db1b +vmlinux simple_read_from_buffer 0x5a5e7ea3 +vmlinux simple_readpage 0xad0a9168 +vmlinux simple_release_fs 0x138c0bc2 +vmlinux simple_rename 0xc6f58594 +vmlinux simple_rmdir 0x963529c0 +vmlinux simple_statfs 0xa60f3cfd +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0xd346d570 +vmlinux simple_transaction_get 0x23127e45 +vmlinux simple_transaction_read 0x6d5de8e5 +vmlinux simple_transaction_release 0xc3071b05 +vmlinux simple_unlink 0xc76d0d7a +vmlinux single_open 0xa69bd558 +vmlinux single_release 0x8966cae3 +vmlinux sk_alloc 0x3ca165bd +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0x7eb12cc4 +vmlinux sk_common_release 0x95671226 +vmlinux sk_free 0x60b1d5e7 +vmlinux sk_reset_timer 0xc1b64c5d +vmlinux sk_run_filter 0x755eb389 +vmlinux sk_send_sigurg 0xe4890299 +vmlinux sk_stop_timer 0xc3ea6af0 +vmlinux sk_stream_error 0x119018c5 +vmlinux sk_stream_kill_queues 0xd14d2f08 +vmlinux sk_stream_mem_schedule 0x7986993b +vmlinux sk_stream_rfree 0x3b026e77 +vmlinux sk_stream_wait_close 0x41db6d32 +vmlinux sk_stream_wait_connect 0x4501c6bf +vmlinux sk_stream_wait_memory 0xe25d31f8 +vmlinux sk_stream_write_space 0x3904a981 +vmlinux sk_wait_data 0xf2abbad6 +vmlinux skb_abort_seq_read 0x50d78db0 +vmlinux skb_append 0x21027068 +vmlinux skb_append_datato_frags 0x99b70aba +vmlinux skb_checksum 0x3eb7fd8d +vmlinux skb_checksum_help 0x9c6ab010 +vmlinux skb_clone 0xf159d763 +vmlinux skb_clone_fraglist 0xde273c16 +vmlinux skb_copy 0x67b58a01 +vmlinux skb_copy_and_csum_bits 0x3e8ea276 +vmlinux skb_copy_and_csum_datagram_iovec 0xf918c89f +vmlinux skb_copy_and_csum_dev 0x4d66f8c8 +vmlinux skb_copy_bits 0xfad19b09 +vmlinux skb_copy_datagram_iovec 0x93747a79 +vmlinux skb_copy_expand 0x776ee698 +vmlinux skb_cow_data 0x754c322e +vmlinux skb_dequeue 0x327eae7e +vmlinux skb_dequeue_tail 0x4e5a44ba +vmlinux skb_find_text 0x003dacc6 +vmlinux skb_free_datagram 0x633687fc +vmlinux skb_icv_walk 0x42599ec9 +vmlinux skb_insert 0x2b863d67 +vmlinux skb_make_writable 0xb0ecd99a +vmlinux skb_over_panic 0x44644065 +vmlinux skb_pad 0x0af0e5cb +vmlinux skb_prepare_seq_read 0xa5e4fa7b +vmlinux skb_queue_head 0x3686a162 +vmlinux skb_queue_purge 0x7bd5b481 +vmlinux skb_queue_tail 0x3e6b941c +vmlinux skb_realloc_headroom 0x075223df +vmlinux skb_recv_datagram 0x85e05f97 +vmlinux skb_seq_read 0x35243a61 +vmlinux skb_split 0x20162927 +vmlinux skb_store_bits 0x6fa177b4 +vmlinux skb_to_sgvec 0x57a9cfaf +vmlinux skb_under_panic 0x0a61358b +vmlinux skb_unlink 0x4bc33afb +vmlinux sleep_on 0x8540b5be +vmlinux sleep_on_timeout 0x8d6ef862 +vmlinux smp_call_function 0x0014bfd1 +vmlinux snprintf 0xaf25400d +vmlinux sock_alloc_send_skb 0xdd9614d0 +vmlinux sock_common_getsockopt 0x4a22bc3c +vmlinux sock_common_recvmsg 0x05e060b3 +vmlinux sock_common_setsockopt 0x60675fa6 +vmlinux sock_create 0x2f9b18e8 +vmlinux sock_create_kern 0x473690f0 +vmlinux sock_create_lite 0x6aef5e5b +vmlinux sock_enable_timestamp 0x128db4a4 +vmlinux sock_get_timestamp 0x68392b88 +vmlinux sock_i_ino 0x138846e8 +vmlinux sock_i_uid 0x6eb75fbd +vmlinux sock_init_data 0x0fd84927 +vmlinux sock_kfree_s 0x0fae1b8d +vmlinux sock_kmalloc 0x14f28b3d +vmlinux sock_map_fd 0xfb76f9a0 +vmlinux sock_no_accept 0x5dd5bdc1 +vmlinux sock_no_bind 0xb7a7f28c +vmlinux sock_no_connect 0xbd8c0ffc +vmlinux sock_no_getname 0x46b8e602 +vmlinux sock_no_getsockopt 0x3e58d2b0 +vmlinux sock_no_ioctl 0xf7fc79cc +vmlinux sock_no_listen 0x2fe44367 +vmlinux sock_no_mmap 0x55d96f63 +vmlinux sock_no_poll 0xc6ede682 +vmlinux sock_no_recvmsg 0x2246e65a +vmlinux sock_no_sendmsg 0x10d49772 +vmlinux sock_no_sendpage 0x7cebe740 +vmlinux sock_no_setsockopt 0xbdc25016 +vmlinux sock_no_shutdown 0xc61e3df1 +vmlinux sock_no_socketpair 0xd46d02a2 +vmlinux sock_recvmsg 0xab342a2b +vmlinux sock_register 0xca996a2a +vmlinux sock_release 0x3d9e8bf0 +vmlinux sock_rfree 0x365c468b +vmlinux sock_sendmsg 0x197983e2 +vmlinux sock_setsockopt 0xf72f6f93 +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0xe7bb57f5 +vmlinux sock_wfree 0x254ce3db +vmlinux sock_wmalloc 0x78066f35 +vmlinux sockfd_lookup 0xf4d3d859 +vmlinux soft_cursor 0x16c39720 +vmlinux sort 0x9ca95a0e +vmlinux spi_attach_transport 0xa515e8e2 +vmlinux spi_display_xfer_agreement 0xdcc07742 +vmlinux spi_dv_device 0x5d717664 +vmlinux spi_release_transport 0x24113305 +vmlinux spi_schedule_dv_device 0x421e3efe +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux starget_for_each_device 0xbcd47dd7 +vmlinux start_tty 0x9fb0d94a +vmlinux steal_locks 0x6922bf88 +vmlinux sti_get_rom 0x99a5170d +vmlinux stop_tty 0xab4934ae +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0xafe82e10 +vmlinux strlcat 0xb11fa1ce +vmlinux strlcpy 0x672144bd +vmlinux strlen 0xdcb5671d +vmlinux strncat 0x234509f3 +vmlinux strnchr 0x7242e96d +vmlinux strncmp 0x85abc85f +vmlinux strncpy 0x7ec9bfbc +vmlinux strnicmp 0x756e6992 +vmlinux strnlen 0xcc07af75 +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0x3fa913da +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0x0ed7087d +vmlinux submit_bh 0x8825411f +vmlinux submit_bio 0x948ef48f +vmlinux subsys_create_file 0x528c7c82 +vmlinux subsys_remove_file 0x2c5641ac +vmlinux subsystem_init 0x66d904d8 +vmlinux subsystem_register 0x6f20c14d +vmlinux subsystem_unregister 0x25f8f32d +vmlinux suid_dumpable 0xb694c524 +vmlinux svc_auth_register 0x7e3ee440 +vmlinux svc_auth_unregister 0x0f668ba9 +vmlinux svc_authenticate 0x0d661134 +vmlinux svc_create 0x586bab78 +vmlinux svc_create_thread 0xe6b25da9 +vmlinux svc_destroy 0x3216480b +vmlinux svc_drop 0xb87977fe +vmlinux svc_exit_thread 0x4e8d591e +vmlinux svc_makesock 0xb98d8e73 +vmlinux svc_proc_register 0x06f13a60 +vmlinux svc_proc_unregister 0x12e280e3 +vmlinux svc_process 0xc15ccf23 +vmlinux svc_recv 0x4e8c5abc +vmlinux svc_reserve 0xbfad5e97 +vmlinux svc_seq_show 0xde30117a +vmlinux svc_set_client 0xbfb161d2 +vmlinux svc_wake_up 0x7aeb451d +vmlinux svcauth_gss_register_pseudoflavor 0x8d1a827e +vmlinux svcauth_unix_purge 0x6eea229d +vmlinux swap_io_context 0x8a1d6d8e +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0xe51f6cce +vmlinux sync_dirty_buffer 0xfc129db2 +vmlinux sync_inode 0x8686516a +vmlinux sync_mapping_buffers 0xec586891 +vmlinux sync_page_range 0x66e52620 +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xdcb0349b +vmlinux sys_ioctl 0x208ce54a +vmlinux sys_lseek 0xec2107f8 +vmlinux sys_open 0xe269ea1c +vmlinux sys_read 0x12703a3e +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sys_write 0x3c7eae23 +vmlinux sysctl_intvec 0x70654381 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0xc9b8d952 +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0x705b7f54 +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0xfe853970 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x27b68a79 +vmlinux sysdev_class_unregister 0xc2b448bc +vmlinux sysdev_create_file 0xe2426dbc +vmlinux sysdev_driver_register 0x94a30f9d +vmlinux sysdev_driver_unregister 0xa110f15a +vmlinux sysdev_register 0x82228458 +vmlinux sysdev_remove_file 0x2cb73a63 +vmlinux sysdev_unregister 0x7a03c8aa +vmlinux sysfs_chmod_file 0xacb02ae5 +vmlinux sysfs_create_bin_file 0x3afd03a8 +vmlinux sysfs_create_dir 0x1c42eeb6 +vmlinux sysfs_create_file 0xe8847869 +vmlinux sysfs_create_group 0x5c9bbd89 +vmlinux sysfs_create_link 0x6c735bb4 +vmlinux sysfs_remove_bin_file 0x82f1cf50 +vmlinux sysfs_remove_dir 0xde373767 +vmlinux sysfs_remove_file 0x1ac63aa3 +vmlinux sysfs_remove_group 0x422c0d8c +vmlinux sysfs_remove_link 0xb0417c4c +vmlinux sysfs_rename_dir 0x7c20de35 +vmlinux sysfs_update_file 0xf9a8173e +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0xb392a1d0 +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0x6a9dfe0e +vmlinux task_nice 0x7025942c +vmlinux task_no_data_intr 0xd221e445 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0x372fbdd7 +vmlinux tc_classify 0x972ff5ab +vmlinux tcf_action_dump_1 0xaac1cdfd +vmlinux tcf_action_exec 0x316e2fa4 +vmlinux tcf_em_register 0x17ee8f71 +vmlinux tcf_em_tree_destroy 0x5ff034e5 +vmlinux tcf_em_tree_dump 0x269996b5 +vmlinux tcf_em_tree_validate 0xc6e12793 +vmlinux tcf_em_unregister 0x659e4d40 +vmlinux tcf_exts_change 0xc050e720 +vmlinux tcf_exts_destroy 0x93d7e5d7 +vmlinux tcf_exts_dump 0x978538ce +vmlinux tcf_exts_dump_stats 0x850b12cf +vmlinux tcf_exts_validate 0x6ec51e05 +vmlinux tcf_register_action 0xa2a955b8 +vmlinux tcf_unregister_action 0xf49f2dca +vmlinux tcp_check_req 0x6bddd3c4 +vmlinux tcp_child_process 0x972dfab8 +vmlinux tcp_close 0xea2259f8 +vmlinux tcp_connect 0x8ca1cff6 +vmlinux tcp_create_openreq_child 0x5d9d8658 +vmlinux tcp_death_row 0x099a1bff +vmlinux tcp_disconnect 0xad1c8903 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0xe8bbeec2 +vmlinux tcp_getsockopt 0xcf73192e +vmlinux tcp_hashinfo 0xf5d17f37 +vmlinux tcp_init_congestion_ops 0x41c9138a +vmlinux tcp_init_xmit_timers 0xd7817796 +vmlinux tcp_ioctl 0x2a7403d6 +vmlinux tcp_make_synack 0x76a0939b +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0x44d6661e +vmlinux tcp_poll 0x69a46785 +vmlinux tcp_proc_register 0x5cc14ec1 +vmlinux tcp_proc_unregister 0x2dff44d9 +vmlinux tcp_prot 0xdf2c1b0c +vmlinux tcp_rcv_established 0x5ff3186e +vmlinux tcp_rcv_state_process 0x55b7e9e4 +vmlinux tcp_read_sock 0xef2158dd +vmlinux tcp_recvmsg 0xf09675a5 +vmlinux tcp_register_congestion_control 0x5d26d46e +vmlinux tcp_reno_cong_avoid 0xe25165d6 +vmlinux tcp_reno_min_cwnd 0x3786db29 +vmlinux tcp_reno_ssthresh 0x953227ec +vmlinux tcp_sendmsg 0xc092ec25 +vmlinux tcp_sendpage 0xb4a938b9 +vmlinux tcp_setsockopt 0x8bbad2a6 +vmlinux tcp_shutdown 0x9cb0ac48 +vmlinux tcp_simple_retransmit 0x4145c33c +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0xdc777be5 +vmlinux tcp_timewait_state_process 0xf751134c +vmlinux tcp_unhash 0xbab4a60c +vmlinux tcp_unregister_congestion_control 0x966a6ca3 +vmlinux tcp_v4_conn_request 0x3f87400d +vmlinux tcp_v4_connect 0xf07a8842 +vmlinux tcp_v4_destroy_sock 0x303008be +vmlinux tcp_v4_do_rcv 0x72ee5917 +vmlinux tcp_v4_remember_stamp 0x02710f28 +vmlinux tcp_v4_send_check 0x7758afdc +vmlinux tcp_v4_syn_recv_sock 0x3609ecad +vmlinux test_clear_page_dirty 0xfe629def +vmlinux test_set_page_writeback 0x85782ef3 +vmlinux textsearch_destroy 0x1ac603d6 +vmlinux textsearch_find_continuous 0x7faadd32 +vmlinux textsearch_prepare 0xb399bdd5 +vmlinux textsearch_register 0x9142bc39 +vmlinux textsearch_unregister 0x4d14c5c5 +vmlinux thaw_bdev 0x0877c927 +vmlinux timespec_trunc 0xc045ad4e +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux transport_add_device 0x2b980681 +vmlinux transport_class_register 0xa4cff6bc +vmlinux transport_class_unregister 0x85308300 +vmlinux transport_configure_device 0x66b56d66 +vmlinux transport_destroy_device 0x9fd42ca0 +vmlinux transport_remove_device 0x6ee47376 +vmlinux transport_setup_device 0xac9889b9 +vmlinux truncate_inode_pages 0xf8f84a15 +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0xfb4aa5d2 +vmlinux try_to_release_page 0x5fa8c439 +vmlinux tty_check_change 0xdbebac8b +vmlinux tty_flip_buffer_push 0x0b8b0f2e +vmlinux tty_get_baud_rate 0x3ea4f99a +vmlinux tty_hangup 0xb0af2c56 +vmlinux tty_hung_up_p 0x748a5389 +vmlinux tty_ldisc_deref 0x0e3610c4 +vmlinux tty_ldisc_flush 0xa9906334 +vmlinux tty_ldisc_get 0x7d60a27a +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x605bde13 +vmlinux tty_ldisc_ref_wait 0x19b7eb55 +vmlinux tty_name 0xd5049960 +vmlinux tty_register_device 0x2a5ede51 +vmlinux tty_register_driver 0xf071ff38 +vmlinux tty_register_ldisc 0x387e90b1 +vmlinux tty_set_operations 0x1cb11922 +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0xa2f17964 +vmlinux tty_unregister_driver 0x68d94c13 +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0x1242bad6 +vmlinux tty_wait_until_sent 0x4aa96be0 +vmlinux tty_wakeup 0x3549096f +vmlinux uart_add_one_port 0x93301008 +vmlinux uart_get_baud_rate 0x21b2d561 +vmlinux uart_get_divisor 0xfee808b5 +vmlinux uart_match_port 0xa4655113 +vmlinux uart_register_driver 0x94514e1c +vmlinux uart_remove_one_port 0xa63c79d1 +vmlinux uart_resume_port 0x2c263dad +vmlinux uart_suspend_port 0x6c15ba43 +vmlinux uart_unregister_driver 0xa268a23d +vmlinux uart_update_timeout 0xb87413ab +vmlinux uart_write_wakeup 0x2f56c1aa +vmlinux udp_disconnect 0x16ada426 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0x4a6ff104 +vmlinux udp_ioctl 0x0e0bf319 +vmlinux udp_poll 0xd09c96e6 +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0x479188c1 +vmlinux udp_proc_unregister 0xf76216fb +vmlinux udp_prot 0xc2920656 +vmlinux udp_sendmsg 0x1e54ba40 +vmlinux uhci_check_and_reset_hc 0x55a5cd51 +vmlinux uhci_reset_hc 0xd01fefcd +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unix_domain_find 0x96946e44 +vmlinux unload_nls 0x7390188f +vmlinux unlock_buffer 0x3a894a1a +vmlinux unlock_cpu_hotplug 0xdbb6cbd9 +vmlinux unlock_kernel 0xb1f975aa +vmlinux unlock_new_inode 0xecf5d2a9 +vmlinux unlock_page 0xe7f71f2d +vmlinux unlock_rename 0x9a04116f +vmlinux unmap_mapping_range 0x12655dcb +vmlinux unmap_underlying_metadata 0x53f1c72e +vmlinux unregister_binfmt 0xb6ae9831 +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0x3bec6e39 +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_exec_domain 0x6fbd81f3 +vmlinux unregister_filesystem 0x55702cda +vmlinux unregister_framebuffer 0x2ba0d24b +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0x6ff2613a +vmlinux unregister_netdevice 0xff34a461 +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0xcc8ece20 +vmlinux unregister_parisc_driver 0x613bac2e +vmlinux unregister_qdisc 0x998fc4a7 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0xa064de13 +vmlinux unregister_sysctl_table 0xe9eda88e +vmlinux unregister_sysrq_key 0x3f0739de +vmlinux unregister_tcf_proto_ops 0x7643f058 +vmlinux unregister_timer_hook 0xf807773e +vmlinux unregister_wlandev 0xba7a3d62 +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0x74eef206 +vmlinux update_region 0x58115fa8 +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0xa3796257 +vmlinux vc_cons 0x68f8183a +vmlinux vc_resize 0x7b117d80 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0xa471c6a9 +vmlinux vfs_follow_link 0x70f4fc5a +vmlinux vfs_fstat 0xcb841136 +vmlinux vfs_getattr 0x66f2851a +vmlinux vfs_link 0x1cd55010 +vmlinux vfs_llseek 0xea4e15a0 +vmlinux vfs_lstat 0x91d803ff +vmlinux vfs_mkdir 0xdcd5bfe6 +vmlinux vfs_mknod 0x452c4722 +vmlinux vfs_permission 0x53648d08 +vmlinux vfs_read 0x8dfc873a +vmlinux vfs_readdir 0xc459783e +vmlinux vfs_readlink 0xb739ab40 +vmlinux vfs_readv 0xafbd678f +vmlinux vfs_rename 0xd22b31d5 +vmlinux vfs_rmdir 0xa0146bf0 +vmlinux vfs_stat 0x4e193f40 +vmlinux vfs_statfs 0xb53d0c3c +vmlinux vfs_symlink 0x2f3aed09 +vmlinux vfs_unlink 0xfa4573c8 +vmlinux vfs_write 0x89014dd9 +vmlinux vfs_writev 0x78c0be03 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x69de93f4 +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_start 0x84ac94f2 +vmlinux vmalloc_to_page 0xd2357a8c +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0x3aca6185 +vmlinux vmtruncate 0x47fd7cf2 +vmlinux vprintk 0x777a8e29 +vmlinux vscnprintf 0xf3522c9c +vmlinux vsnprintf 0x0e57f111 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0xf69be488 +vmlinux wait_for_completion_interruptible 0xc7ad2fb8 +vmlinux wait_for_completion_interruptible_timeout 0xbf82ea61 +vmlinux wait_for_completion_timeout 0xc6b6d78c +vmlinux wait_on_page_bit 0x7fc4311e +vmlinux wait_on_sync_kiocb 0x2d70f2b9 +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0x68c64ede +vmlinux wireless_send_event 0x3aa4b59d +vmlinux wireless_spy_update 0x23516f08 +vmlinux wlan_setup 0x283fe4bd +vmlinux wlan_unsetup 0x25fa249c +vmlinux write_inode_now 0x5715cc1e +vmlinux write_one_page 0x0637da33 +vmlinux xdr_buf_from_iov 0x43a0821a +vmlinux xdr_buf_read_netobj 0xf1fe3955 +vmlinux xdr_buf_subsegment 0xa357e272 +vmlinux xdr_decode_array2 0x289b167e +vmlinux xdr_decode_netobj 0x1be57115 +vmlinux xdr_decode_string 0x6755aa62 +vmlinux xdr_decode_string_inplace 0x7bd87272 +vmlinux xdr_decode_word 0xc9d9bc5b +vmlinux xdr_encode_array2 0x5d580b4e +vmlinux xdr_encode_netobj 0x29c6f164 +vmlinux xdr_encode_opaque 0x0e9e79d5 +vmlinux xdr_encode_opaque_fixed 0x587d494b +vmlinux xdr_encode_pages 0x5ac2c153 +vmlinux xdr_encode_string 0xabc0fe0c +vmlinux xdr_encode_word 0x0257eb2b +vmlinux xdr_init_decode 0x688c4322 +vmlinux xdr_init_encode 0x4dde54e4 +vmlinux xdr_inline_decode 0x665c4562 +vmlinux xdr_inline_pages 0x25aa4696 +vmlinux xdr_read_pages 0xdcab31eb +vmlinux xdr_reserve_space 0x87b4e5b9 +vmlinux xdr_shift_buf 0xb49ca19c +vmlinux xdr_write_pages 0xfee3bcad +vmlinux xfrm4_rcv 0xe1c53d19 +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0x7875dc3d +vmlinux xfrm_bundle_ok 0x3b1d356d +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0x5f8e3aef +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0x12d9ff5f +vmlinux xfrm_dst_lookup 0x9ee44f51 +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0xcd0524ab +vmlinux xfrm_find_acq_byseq 0x1bff2423 +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0xf86a5381 +vmlinux xfrm_init_state 0x9ce062c0 +vmlinux xfrm_lookup 0x79570f66 +vmlinux xfrm_parse_spi 0x2e3d2048 +vmlinux xfrm_policy_alloc 0xe46b7c9c +vmlinux xfrm_policy_byid 0x86923b14 +vmlinux xfrm_policy_bysel 0xb9e4a0b5 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x545cb50c +vmlinux xfrm_policy_list 0x55511b37 +vmlinux xfrm_policy_register_afinfo 0x33caae2d +vmlinux xfrm_policy_unregister_afinfo 0x08a0159a +vmlinux xfrm_policy_walk 0x1c010576 +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0xda612825 +vmlinux xfrm_register_type 0x0d887ef8 +vmlinux xfrm_replay_advance 0x809513be +vmlinux xfrm_replay_check 0xf522304c +vmlinux xfrm_state_add 0xf0c6ccf3 +vmlinux xfrm_state_alloc 0xba39a552 +vmlinux xfrm_state_check 0xcc1aaa10 +vmlinux xfrm_state_check_expire 0x8346404f +vmlinux xfrm_state_delete 0xc5fe327e +vmlinux xfrm_state_delete_tunnel 0x908c15a2 +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0xc60050cd +vmlinux xfrm_state_lookup 0x86c32117 +vmlinux xfrm_state_mtu 0x281e21fa +vmlinux xfrm_state_register_afinfo 0x372b2098 +vmlinux xfrm_state_unregister_afinfo 0xfe4856e4 +vmlinux xfrm_state_update 0x81d99cfe +vmlinux xfrm_state_walk 0x9df66963 +vmlinux xfrm_unregister_km 0x7a0894d2 +vmlinux xfrm_unregister_type 0x6f82e1f4 +vmlinux xfrm_user_policy 0xaa5a2506 +vmlinux xprt_create_proto 0x0132810e +vmlinux xprt_set_timeout 0xbce67dc0 +vmlinux xrlim_allow 0x17c913b1 +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xe2628d76 +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x84f75b7b +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0x637f718c --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/hppa/hppa64-smp.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/hppa/hppa64-smp.modules @@ -0,0 +1,551 @@ +3c501 +3c503 +3c507 +3c509 +3c574_cs +3c589_cs +3c59x +53c700 +8021q +8139cp +8139too +8250_accent +8250_boca +8250_fourport +8250_hub6 +82596 +8390 +9p2000 +ac3200 +acecad +acenic +acx +adm8211 +aes +af_key +ah4 +ah6 +aic94xx +airo +airo_cs +amd8111e +anubis +arc4 +arcmsr +arptable_filter +arp_tables +arpt_mangle +at1700 +ati_remote2 +autofs +autofs4 +axnet_cs +b44 +bcm43xx +binfmt_misc +blowfish +bnx2 +bridge +bsd_comp +cassini +cast5 +cast6 +cdrom +ch +cicada +cifs +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm4000_cs +cm4040_cs +cman +cn +configfs +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs89x0 +cxgb +cyblafb +dabusb +davicom +dazuko +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +deflate +depca +dgrs +dl2k +dlm +dm-bbr +dm-crypt +dm-mirror +dm-mod +dm-snapshot +dm-zero +dummy +e100 +e1000 +e2100 +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +eepro +eepro100 +eexpress +ehci-hcd +em_cmp +emi26 +emi62 +em_meta +em_nbyte +em_text +em_u32 +epic100 +es3210 +esp4 +esp6 +eth16i +evdev +ewrk3 +exportfs +ext2 +ext3 +fat +faulty +fdomain_cs +fealnx +fmvj18x_cs +forcedeth +freevxfs +fuse +gact +generic +gfs +gnbd +hamachi +hermes +hilkbd +hil_kbd +hil_mlc +hil_ptr +hostap +hostap_cs +hostap_pci +hostap_plx +hp +hp100 +hp-plus +hp_sdc +hp_sdc_mlc +hp_sdc_rtc +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i82092 +i82365 +ide-cd +ide-cs +ide-disk +ide-generic +ide-scsi +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +initio +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipg +ip_gre +ipip +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipt +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ipw2100 +ipw2200 +iscsi_tcp +islsm +islsm_device +islsm_pci +islsm_usb +isofs +itmtouch +ixgb +jbd +jfs +khazad +lasi700 +lasi_82596 +ldusb +libcrc32c +libphy +linear +lne390 +lock_dlm +lock_gulm +lock_harness +lock_nolock +loop +lp +lp486e +lpfc +lxt +marvell +md4 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +michael_mic +mii +mirred +mptbase +mptctl +mptfc +mptsas +mptscsih +mptspi +mrv8k +msdos +multipath +natsemi +ne +ne2k-pci +ne3210 +netconsole +netwave_cs +nfnetlink +nfnetlink_log +nfnetlink_queue +nfsd +nls_cp437 +nls_iso8859-1 +nls_utf8 +nmclan_cs +ns83820 +ns87415 +ntfs +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ohci-hcd +oprofile +orinoco +orinoco_cs +orinoco_nortel +osst +parport +parport_cs +parport_pc +pcmcia +pcmcia_core +pcnet32 +pcnet_cs +pd6729 +pdc_stable +pedit +phidgetkit +pktcdvd +plip +podxtpro +police +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +psmouse +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas408 +qsemi +r1000 +r8169 +r8187 +r818x +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +ray_cs +realcap +reiserfs +relayfs +rpcsec_gss_spkm3 +rsrc_nonstatic +rt2400 +rt2500 +rt61 +s2io +sas_class +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi2 +sd_mod +seclvl +seeq8005 +serial_cs +serio_raw +serpent +sg +sha1 +sha256 +sha512 +shaper +simple +sis190 +sis900 +sk98lin +skge +sky2 +sl811_cs +sl811-hcd +slhc +slip +smbfs +smc9194 +smc91c92_cs +smc-ultra +smc-ultra32 +snd +snd-ac97-bus +snd-ac97-codec +snd-ak4117 +snd-atiixp-modem +snd-dummy +snd-emu10k1x +snd-harmony +snd-hdspm +snd-hwdep +snd-mixer-oss +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-seq +snd-seq-device +snd-seq-midi +snd-seq-midi-event +snd-seq-oss +snd-timer +snd-vx-lib +snd-vxpocket +soundcore +spectrum_cs +squashfs +sr_mod +st +starfire +sundance +sungem +sungem_phy +sunhme +sym53c500_cs +sym53c8xx +synaptics-usb +synclink_cs +tcic +tcrypt +tea +tg3 +tgr192 +tlclk +ts_bm +ts_fsm +ts_kmp +tulip +tun +twofish +typhoon +udf +uli526x +unionfs +usbcore +usbhid +usbkbd +usbmon +usbmouse +usb-storage +vfat +via-rhine +via-velocity +wavelan_cs +wd +wl3501_cs +wp512 +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xor +yealink +yellowfin +yenta_socket +zalon7xx +zlib_deflate --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/hppa/hppa32 +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/hppa/hppa32 @@ -0,0 +1,3701 @@ +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0x85415cc5 +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0x36453100 +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0xac5db655 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xdc30c180 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/block/loop loop_register_transfer 0xd83c7c11 +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/cdrom/cdrom cdrom_get_last_written 0xfea332c1 +drivers/cdrom/cdrom cdrom_get_media_event 0xdb76b7ac +drivers/cdrom/cdrom cdrom_ioctl 0xd9e1b520 +drivers/cdrom/cdrom cdrom_media_changed 0x948a4830 +drivers/cdrom/cdrom cdrom_mode_select 0x8232d186 +drivers/cdrom/cdrom cdrom_mode_sense 0xb34a0018 +drivers/cdrom/cdrom cdrom_number_of_slots 0xe5169035 +drivers/cdrom/cdrom cdrom_open 0x23d55c5f +drivers/cdrom/cdrom cdrom_release 0x15d15067 +drivers/cdrom/cdrom init_cdrom_command 0x344adbd5 +drivers/cdrom/cdrom register_cdrom 0xb3a7d95d +drivers/cdrom/cdrom unregister_cdrom 0x7b1e43ba +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/input/serio/hil_mlc hil_mlc_register 0x9883cf9a +drivers/input/serio/hil_mlc hil_mlc_unregister 0xaa1ed6f1 +drivers/input/serio/hp_sdc hp_sdc_dequeue_transaction 0x5099bf7b +drivers/input/serio/hp_sdc hp_sdc_enqueue_transaction 0x88ccda02 +drivers/input/serio/hp_sdc hp_sdc_release_cooked_irq 0xd97b8d49 +drivers/input/serio/hp_sdc hp_sdc_release_hil_irq 0x2d7c4a70 +drivers/input/serio/hp_sdc hp_sdc_release_timer_irq 0x9dccd37d +drivers/input/serio/hp_sdc hp_sdc_request_cooked_irq 0x4233a8eb +drivers/input/serio/hp_sdc hp_sdc_request_hil_irq 0xcf402f97 +drivers/input/serio/hp_sdc hp_sdc_request_timer_irq 0xb12bc1bd +drivers/md/dm-mirror dm_create_dirty_log 0xcbe8e184 +drivers/md/dm-mirror dm_destroy_dirty_log 0x144ae7fb +drivers/md/dm-mirror dm_register_dirty_log_type 0x79e24f69 +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x38ed2e10 +drivers/md/dm-mod dm_get_device 0xb4429dcc +drivers/md/dm-mod dm_get_mapinfo 0x59937ab9 +drivers/md/dm-mod dm_io_async 0x38281b31 +drivers/md/dm-mod dm_io_async_bvec 0xa393f1c5 +drivers/md/dm-mod dm_io_async_vm 0x12d9baff +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0x1529c0ac +drivers/md/dm-mod dm_io_sync_bvec 0xdd8d8ac3 +drivers/md/dm-mod dm_io_sync_vm 0x2d95038a +drivers/md/dm-mod dm_put_device 0xabd3c5cd +drivers/md/dm-mod dm_register_target 0x245463e2 +drivers/md/dm-mod dm_table_event 0xdc1f08d9 +drivers/md/dm-mod dm_table_flush_all 0x1b662e4a +drivers/md/dm-mod dm_table_get 0x86555dd3 +drivers/md/dm-mod dm_table_get_mode 0xb6f7e6fb +drivers/md/dm-mod dm_table_get_size 0x26df119d +drivers/md/dm-mod dm_table_put 0x5da1e508 +drivers/md/dm-mod dm_table_unplug_all 0xe182564e +drivers/md/dm-mod dm_unregister_target 0xb439f6e9 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x4c86ff25 +drivers/md/dm-mod kcopyd_client_create 0x8f5778c8 +drivers/md/dm-mod kcopyd_client_destroy 0x6acc72f9 +drivers/md/dm-mod kcopyd_copy 0xf9fba5aa +drivers/md/md-mod bitmap_close_sync 0x83f2e43e +drivers/md/md-mod bitmap_daemon_work 0x8b45a950 +drivers/md/md-mod bitmap_end_sync 0x7fc422c7 +drivers/md/md-mod bitmap_endwrite 0x37403229 +drivers/md/md-mod bitmap_start_sync 0x7704a0dc +drivers/md/md-mod bitmap_startwrite 0x469e2d9b +drivers/md/md-mod bitmap_unplug 0x3b5a8fa8 +drivers/md/md-mod md_check_recovery 0x12f9e1fa +drivers/md/md-mod md_done_sync 0x2bce081b +drivers/md/md-mod md_error 0xa7516024 +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0xc6abecc7 +drivers/md/md-mod md_unregister_thread 0x1b7cba75 +drivers/md/md-mod md_wakeup_thread 0xa0ca0157 +drivers/md/md-mod md_write_end 0xd8e5dbb8 +drivers/md/md-mod md_write_start 0xa3dd8e30 +drivers/md/md-mod register_md_personality 0x90933b46 +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0x1dd8889e +drivers/message/fusion/mptbase mpt_HardResetHandler 0xb93c945d +drivers/message/fusion/mptbase mpt_add_sge 0x375d8126 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0xf70aabc1 +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0x640ea881 +drivers/message/fusion/mptbase mpt_attach 0x8efbfb25 +drivers/message/fusion/mptbase mpt_config 0xfb6fbed3 +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0xf5b7622f +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0x0135356a +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x54ac8211 +drivers/message/fusion/mptbase mpt_findImVolumes 0xcb6c2b5a +drivers/message/fusion/mptbase mpt_free_fw_memory 0x70bd4b00 +drivers/message/fusion/mptbase mpt_free_msg_frame 0x9adee550 +drivers/message/fusion/mptbase mpt_get_msg_frame 0xab7a2db7 +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0x3f8b0bf8 +drivers/message/fusion/mptbase mpt_proc_root_dir 0x75679128 +drivers/message/fusion/mptbase mpt_put_msg_frame 0x5d5cd420 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x026fa2ed +drivers/message/fusion/mptbase mpt_register 0xde3a1461 +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0xbdc0a037 +drivers/message/fusion/mptbase mpt_send_handshake_request 0x673758ed +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_toolbox 0x0602cbd2 +drivers/message/fusion/mptbase mpt_verify_adapter 0x7cf8aaec +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x43a548c5 +drivers/message/fusion/mptscsih mptscsih_abort 0xe38086d2 +drivers/message/fusion/mptscsih mptscsih_bios_param 0x05a6c73c +drivers/message/fusion/mptscsih mptscsih_bus_reset 0x7b3752c7 +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0x0ac624e5 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0x494d8f3a +drivers/message/fusion/mptscsih mptscsih_event_process 0xe05a907b +drivers/message/fusion/mptscsih mptscsih_host_reset 0x20581046 +drivers/message/fusion/mptscsih mptscsih_info 0x14dff2e8 +drivers/message/fusion/mptscsih mptscsih_io_done 0x751403e5 +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x59134e42 +drivers/message/fusion/mptscsih mptscsih_proc_info 0xa8e5b941 +drivers/message/fusion/mptscsih mptscsih_qcmd 0x83c30259 +drivers/message/fusion/mptscsih mptscsih_remove 0x34ec38b4 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0x8b4af1e7 +drivers/message/fusion/mptscsih mptscsih_shutdown 0xd47bf3bd +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0x7c1efefc +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x535dec96 +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0x9f7e2173 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x099230f3 +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0x42e7f703 +drivers/message/i2o/i2o_core i2o_device_claim_release 0x48ff41e7 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0xaedb84a0 +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0xa86950b6 +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x2a1548d4 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0xa2567108 +drivers/message/i2o/i2o_core i2o_driver_register 0x08033ea1 +drivers/message/i2o/i2o_core i2o_driver_unregister 0x1318bb62 +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0x961c5b3d +drivers/message/i2o/i2o_core i2o_exec_lct_get 0x64f491d6 +drivers/message/i2o/i2o_core i2o_find_iop 0xed5c74e5 +drivers/message/i2o/i2o_core i2o_iop_find_device 0xd6bcf77a +drivers/message/i2o/i2o_core i2o_msg_get_wait 0xf81396a1 +drivers/message/i2o/i2o_core i2o_msg_nop 0x032b2d9a +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0x5c774f7a +drivers/message/i2o/i2o_core i2o_parm_field_get 0x6eabc867 +drivers/message/i2o/i2o_core i2o_parm_issue 0xf44a4dbf +drivers/message/i2o/i2o_core i2o_parm_table_get 0x53ae37ca +drivers/message/i2o/i2o_core i2o_status_get 0xd00c5a12 +drivers/net/8390 NS8390_init 0xbe4827f2 +drivers/net/8390 __alloc_ei_netdev 0xbbd8574a +drivers/net/8390 ei_close 0xc4976890 +drivers/net/8390 ei_interrupt 0xf8dd9ad5 +drivers/net/8390 ei_open 0x96235aa9 +drivers/net/8390 ei_poll 0x7f75a987 +drivers/net/mii generic_mii_ioctl 0x52b17e84 +drivers/net/mii mii_check_gmii_support 0xb24a2e1e +drivers/net/mii mii_check_link 0x1e4705cc +drivers/net/mii mii_check_media 0xbe87be4a +drivers/net/mii mii_ethtool_gset 0x019ddc92 +drivers/net/mii mii_ethtool_sset 0x90cc0ea4 +drivers/net/mii mii_link_ok 0x3b4faa66 +drivers/net/mii mii_nway_restart 0x1ca4fc39 +drivers/net/phy/libphy genphy_config_advert 0x0483d223 +drivers/net/phy/libphy genphy_config_aneg 0x865ccb36 +drivers/net/phy/libphy genphy_read_status 0xd3d5951d +drivers/net/phy/libphy mdiobus_register 0x0d3f637e +drivers/net/phy/libphy mdiobus_unregister 0x7ce901e6 +drivers/net/phy/libphy phy_attach 0x994f3487 +drivers/net/phy/libphy phy_connect 0xf2d91d13 +drivers/net/phy/libphy phy_detach 0x17179283 +drivers/net/phy/libphy phy_disable_interrupts 0x0ee3704b +drivers/net/phy/libphy phy_disconnect 0x2ed294c9 +drivers/net/phy/libphy phy_driver_register 0x377cbe00 +drivers/net/phy/libphy phy_driver_unregister 0x43d5a5ba +drivers/net/phy/libphy phy_enable_interrupts 0x5617779c +drivers/net/phy/libphy phy_print_status 0x5b6e2f44 +drivers/net/phy/libphy phy_read 0xe7fddd88 +drivers/net/phy/libphy phy_sanitize_settings 0x22ae3ff1 +drivers/net/phy/libphy phy_start 0xf1b4dac0 +drivers/net/phy/libphy phy_start_aneg 0xde25a503 +drivers/net/phy/libphy phy_start_interrupts 0x08ad1666 +drivers/net/phy/libphy phy_stop 0xc96dcea2 +drivers/net/phy/libphy phy_stop_interrupts 0x3b4b8a20 +drivers/net/phy/libphy phy_write 0xe0d9a488 +drivers/net/ppp_generic ppp_channel_index 0x795c5f5a +drivers/net/ppp_generic ppp_input 0x9b7c1959 +drivers/net/ppp_generic ppp_input_error 0xf7a1993b +drivers/net/ppp_generic ppp_output_wakeup 0x5346871a +drivers/net/ppp_generic ppp_register_channel 0xcaafb22a +drivers/net/ppp_generic ppp_register_compressor 0x8f1dcecd +drivers/net/ppp_generic ppp_unit_number 0xd3c5ac61 +drivers/net/ppp_generic ppp_unregister_channel 0x8d88127d +drivers/net/ppp_generic ppp_unregister_compressor 0x229814a9 +drivers/net/pppox pppox_unbind_sock 0xca121108 +drivers/net/pppox register_pppox_proto 0x1dc3723f +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x6a47fcc2 +drivers/net/slhc slhc_free 0xeb3c59ef +drivers/net/slhc slhc_init 0x86de1d74 +drivers/net/slhc slhc_remember 0x9536b7c2 +drivers/net/slhc slhc_toss 0x3b36a20a +drivers/net/slhc slhc_uncompress 0xa532de34 +drivers/net/sungem_phy mii_phy_probe 0x5b73215d +drivers/net/wireless/airo init_airo_card 0x74a00653 +drivers/net/wireless/airo reset_airo_card 0xcbbfd7ed +drivers/net/wireless/airo stop_airo_card 0xcbcb8bde +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0xf84c4a55 +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0xf83a55d8 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0xbbfda6c7 +drivers/net/wireless/hostap/hostap hostap_add_interface 0xf4485858 +drivers/net/wireless/hostap/hostap hostap_add_sta 0xb26a32c7 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0x3ba080e2 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0x1b912409 +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0x888c79bb +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0x7607d3bc +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0x457ffb7a +drivers/net/wireless/hostap/hostap hostap_get_porttype 0x787b01d0 +drivers/net/wireless/hostap/hostap hostap_get_stats 0x0871d00a +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0x050e1bfa +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x4b3276c1 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x2e6cd059 +drivers/net/wireless/hostap/hostap hostap_info_init 0x8fb4cc25 +drivers/net/wireless/hostap/hostap hostap_info_process 0x9cc1b7b0 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0x3c2475ef +drivers/net/wireless/hostap/hostap hostap_init_data 0x53ffeb8d +drivers/net/wireless/hostap/hostap hostap_init_proc 0x4fc4d672 +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0x9abc2489 +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0x2dbf85b9 +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0x9603038d +drivers/net/wireless/hostap/hostap hostap_proc 0x5581a1ee +drivers/net/wireless/hostap/hostap hostap_remove_interface 0xe5718dbb +drivers/net/wireless/hostap/hostap hostap_remove_proc 0xcac71987 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0x9ae25268 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0x48e7b186 +drivers/net/wireless/hostap/hostap hostap_set_encryption 0x357d1e84 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0xb4bb9087 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0xb1a219a7 +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0x804e612e +drivers/net/wireless/hostap/hostap hostap_set_string 0xd2c8d03a +drivers/net/wireless/hostap/hostap hostap_set_word 0x1dd2ce35 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0x17fb0480 +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0x40a0b199 +drivers/net/wireless/hostap/hostap hostap_update_rates 0xf8a06f8d +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x1fbb9e36 +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x4aa93c58 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x91dc4073 +drivers/net/wireless/orinoco __orinoco_down 0x249fc4e7 +drivers/net/wireless/orinoco __orinoco_up 0x6056813d +drivers/net/wireless/orinoco alloc_orinocodev 0x138229d2 +drivers/net/wireless/orinoco free_orinocodev 0x7aed261e +drivers/net/wireless/orinoco orinoco_interrupt 0x95438e21 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x48d8ef28 +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xb822c0f6 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x61d4a804 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0xeeb75383 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x8a85fe01 +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0x7b32efad +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x216e5fb1 +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0x2595aa2b +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0x3237ae16 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0xe6ed9c8a +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0xb47a6675 +drivers/net/wireless/prism54_softmac/islsm register_islsm 0x936081c3 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0x0c2a175c +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0xa12a7caa +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0xe6da3cb7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0x4d9a4acf +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0x01b7916b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0x8fdbe630 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0xa4ea411d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0x60dfe7e2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0x6977af6d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0xc623eea6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xd0fdbf18 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0x9a44243d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0x1f43da92 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x2b4a4431 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0xe31b1012 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0x7b3b2b98 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0xf9e309a5 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0x9c8bdd51 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0xf2b59876 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0x3eca833e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x342db072 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0x41602c88 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0x51e85af7 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x707d0702 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0xa0392a7e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0xfe69a8b0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0x7d85a2f4 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x801d7287 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x4a64be22 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0x49569041 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0xb2c20f32 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0xe84d5f80 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x8244e8a0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0xfbd6c62d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0xcf2be60f +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0x4cc7ec4b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x118b5271 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0x7814defe +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0x7a705b7c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x8380418d +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0xc48d0f2e +drivers/parport/parport parport_announce_port 0xc9d69863 +drivers/parport/parport parport_claim 0x512858e1 +drivers/parport/parport parport_claim_or_block 0x45cfe2ba +drivers/parport/parport parport_find_base 0x5369ccfd +drivers/parport/parport parport_find_number 0x54874492 +drivers/parport/parport parport_get_port 0x8a82fac7 +drivers/parport/parport parport_ieee1284_ecp_read_data 0xf547f897 +drivers/parport/parport parport_ieee1284_ecp_write_addr 0xc437217b +drivers/parport/parport parport_ieee1284_ecp_write_data 0x32bcf838 +drivers/parport/parport parport_ieee1284_epp_read_addr 0x797192e0 +drivers/parport/parport parport_ieee1284_epp_read_data 0xc9a7f83f +drivers/parport/parport parport_ieee1284_epp_write_addr 0x225a3cb4 +drivers/parport/parport parport_ieee1284_epp_write_data 0xd4d1e5f7 +drivers/parport/parport parport_ieee1284_interrupt 0x85b2e6f4 +drivers/parport/parport parport_ieee1284_read_byte 0x15d3ce4d +drivers/parport/parport parport_ieee1284_read_nibble 0x670e795c +drivers/parport/parport parport_ieee1284_write_compat 0xa5928260 +drivers/parport/parport parport_negotiate 0x6ae4fa7f +drivers/parport/parport parport_put_port 0xc2f35cbf +drivers/parport/parport parport_read 0xdea90971 +drivers/parport/parport parport_register_device 0xabecf04e +drivers/parport/parport parport_register_driver 0x4b228f96 +drivers/parport/parport parport_register_port 0x839e78a8 +drivers/parport/parport parport_release 0x9181e7c3 +drivers/parport/parport parport_remove_port 0x4be6707c +drivers/parport/parport parport_set_timeout 0x7897a73c +drivers/parport/parport parport_unregister_device 0x606be025 +drivers/parport/parport parport_unregister_driver 0x4a067b5c +drivers/parport/parport parport_wait_event 0x6da5b52d +drivers/parport/parport parport_wait_peripheral 0xc1922a5f +drivers/parport/parport parport_write 0xed8d7035 +drivers/parport/parport_pc parport_pc_probe_port 0x6e6012de +drivers/parport/parport_pc parport_pc_unregister_port 0x8aea58c1 +drivers/pcmcia/pcmcia cs_error 0x45868806 +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0xc6b5ab29 +drivers/pcmcia/pcmcia pcmcia_deregister_client 0x49ecc923 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0xd69661aa +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0x2c923c41 +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0xf2adb7a0 +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0x08a3a76f +drivers/pcmcia/pcmcia pcmcia_get_status 0xf14ce15e +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0xb921d0db +drivers/pcmcia/pcmcia pcmcia_get_window 0x98941186 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0x436eab0f +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x372a1a35 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0x1819a076 +drivers/pcmcia/pcmcia pcmcia_register_client 0x29837385 +drivers/pcmcia/pcmcia pcmcia_register_driver 0xc8ddc4d4 +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x6d45a453 +drivers/pcmcia/pcmcia pcmcia_release_io 0xd33a6782 +drivers/pcmcia/pcmcia pcmcia_release_irq 0x2a227d77 +drivers/pcmcia/pcmcia pcmcia_release_window 0xc2553636 +drivers/pcmcia/pcmcia pcmcia_request_configuration 0xa687f183 +drivers/pcmcia/pcmcia pcmcia_request_io 0x6598d4e1 +drivers/pcmcia/pcmcia pcmcia_request_irq 0x369a1187 +drivers/pcmcia/pcmcia pcmcia_request_window 0x1c9987ed +drivers/pcmcia/pcmcia pcmcia_reset_card 0x2e5aaf3c +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0xbeb0e2a6 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0x16161382 +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0xaa0a1dab +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x702b8d92 +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0x88bb3020 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0x56641b44 +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0x5e15a63c +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0xe86d63a0 +drivers/pcmcia/pcmcia_core pccard_reset_card 0xe7699e64 +drivers/pcmcia/pcmcia_core pccard_static_ops 0x9123f24d +drivers/pcmcia/pcmcia_core pccard_validate_cis 0xabf3aac7 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0x623eeddd +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0xf3e99a70 +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0x26672f03 +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0x926f8f1c +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0xe84475d3 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0x9ea25054 +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x9c0d0713 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0xe0b6a4a5 +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0x49b3014b +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xd7269cea +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0x6dea3d9f +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0x377552a7 +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x22454427 +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0x5847cef7 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0xbf1e34c5 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0x117f4ac8 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0x1ea45b01 +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0x53f4e599 +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x1b871bed +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0xb65bb352 +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0x454c704e +drivers/pcmcia/pcmcia_core release_cis_mem 0xae7df088 +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0xc8241bf3 +drivers/scsi/53c700 NCR_700_detect 0xa8c3eab4 +drivers/scsi/53c700 NCR_700_intr 0x92565439 +drivers/scsi/53c700 NCR_700_release 0xe3c38c6c +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x7fea0811 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0x1906e15a +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x217911af +drivers/scsi/qlogicfas408 qlogicfas408_abort 0x1de5fc7e +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0x0962f8ea +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0x12af91ef +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0xc3e764fa +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x0c32d554 +drivers/scsi/qlogicfas408 qlogicfas408_info 0x5578905f +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0x290f343f +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0xd48939f4 +drivers/scsi/raid_class raid_class_release 0x74ba75f9 +drivers/scsi/raid_class raid_component_add 0x9bf9eef5 +drivers/scsi/sas/sas_class sas_register_ha 0xbb364a86 +drivers/scsi/sas/sas_class sas_unregister_ha 0x2332c4de +drivers/scsi/scsi_transport_fc fc_attach_transport 0x55bc3871 +drivers/scsi/scsi_transport_fc fc_release_transport 0x93c3de03 +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x23a48ccf +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0x507cbd9a +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0x246ef112 +drivers/scsi/scsi_transport_fc fc_remove_host 0x6796cec4 +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0x3c293d01 +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0xcc301677 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0xafc47fce +drivers/scsi/scsi_transport_sas sas_attach_transport 0xaf2b8db1 +drivers/scsi/scsi_transport_sas sas_phy_add 0x2ea6b0b9 +drivers/scsi/scsi_transport_sas sas_phy_alloc 0xd8aac39c +drivers/scsi/scsi_transport_sas sas_phy_delete 0x4b06e8e1 +drivers/scsi/scsi_transport_sas sas_phy_free 0xa7c174a3 +drivers/scsi/scsi_transport_sas sas_release_transport 0xfb9ceb21 +drivers/scsi/scsi_transport_sas sas_remove_host 0xca030b99 +drivers/scsi/scsi_transport_sas sas_rphy_add 0xad535062 +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x0030fcfa +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x2ef632b7 +drivers/scsi/scsi_transport_sas sas_rphy_free 0x2e972000 +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0xdd3e9c35 +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0xd6b39d2e +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0xd525d7a5 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0x2392b00c +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x9f1234e7 +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0xb8551ccb +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0x684e7a79 +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x3634fa61 +drivers/usb/core/usbcore usb_alloc_dev 0x7935de8e +drivers/usb/core/usbcore usb_alloc_urb 0xffdfc242 +drivers/usb/core/usbcore usb_altnum_to_altsetting 0xd65a95a9 +drivers/usb/core/usbcore usb_buffer_alloc 0x506ce2d1 +drivers/usb/core/usbcore usb_buffer_free 0xf8709d92 +drivers/usb/core/usbcore usb_buffer_map_sg 0x8b0ef738 +drivers/usb/core/usbcore usb_buffer_unmap_sg 0xb84dfbad +drivers/usb/core/usbcore usb_bulk_msg 0x63a5d481 +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0xbdce49e9 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0x3f2f2253 +drivers/usb/core/usbcore usb_claim_bandwidth 0xe896e98a +drivers/usb/core/usbcore usb_clear_halt 0x519793e6 +drivers/usb/core/usbcore usb_control_msg 0xe454adb3 +drivers/usb/core/usbcore usb_create_hcd 0x0d0df386 +drivers/usb/core/usbcore usb_deregister 0x16a7cad9 +drivers/usb/core/usbcore usb_deregister_dev 0xc2b267e1 +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0x6b3bbfe8 +drivers/usb/core/usbcore usb_driver_claim_interface 0x7749c3b8 +drivers/usb/core/usbcore usb_driver_release_interface 0x53b10cd6 +drivers/usb/core/usbcore usb_find_device 0x906819b9 +drivers/usb/core/usbcore usb_find_interface 0x0f955875 +drivers/usb/core/usbcore usb_free_urb 0x70512dd4 +drivers/usb/core/usbcore usb_get_current_frame_number 0xd6506002 +drivers/usb/core/usbcore usb_get_descriptor 0x268b6b5e +drivers/usb/core/usbcore usb_get_dev 0x9648146b +drivers/usb/core/usbcore usb_get_intf 0x4d779096 +drivers/usb/core/usbcore usb_get_status 0x7e492b2b +drivers/usb/core/usbcore usb_get_string 0xc720e20a +drivers/usb/core/usbcore usb_get_urb 0xf46a2205 +drivers/usb/core/usbcore usb_hc_died 0x697e6db4 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0x82dc8292 +drivers/usb/core/usbcore usb_hcd_pci_probe 0xda91e081 +drivers/usb/core/usbcore usb_hcd_pci_remove 0x87b87a78 +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0x5c3b3615 +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0xff45e411 +drivers/usb/core/usbcore usb_ifnum_to_if 0x8a7d5ed5 +drivers/usb/core/usbcore usb_init_urb 0x4eefc69e +drivers/usb/core/usbcore usb_kill_urb 0x0cd02608 +drivers/usb/core/usbcore usb_lock_device 0x3396d3c3 +drivers/usb/core/usbcore usb_lock_device_for_reset 0x6b4e63ca +drivers/usb/core/usbcore usb_match_id 0xff7ad450 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0xcb0f7a2a +drivers/usb/core/usbcore usb_put_dev 0xb47d4aaf +drivers/usb/core/usbcore usb_put_hcd 0x29ddcfdd +drivers/usb/core/usbcore usb_put_intf 0x892a0828 +drivers/usb/core/usbcore usb_register 0x884db172 +drivers/usb/core/usbcore usb_register_dev 0x4bab8f17 +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x51f5a549 +drivers/usb/core/usbcore usb_remove_hcd 0xf471da78 +drivers/usb/core/usbcore usb_reset_configuration 0xfed47d2c +drivers/usb/core/usbcore usb_reset_device 0xe1e07d4d +drivers/usb/core/usbcore usb_set_device_state 0x217e612b +drivers/usb/core/usbcore usb_set_interface 0x3d1689ac +drivers/usb/core/usbcore usb_sg_cancel 0x1b362896 +drivers/usb/core/usbcore usb_sg_init 0xd983ada7 +drivers/usb/core/usbcore usb_sg_wait 0xcdaef259 +drivers/usb/core/usbcore usb_string 0x9090341a +drivers/usb/core/usbcore usb_submit_urb 0x852a050f +drivers/usb/core/usbcore usb_trylock_device 0xbf3e37c2 +drivers/usb/core/usbcore usb_unlink_urb 0xf2e74c40 +drivers/usb/core/usbcore usb_unlock_device 0x8a3e6275 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/host/sl811-hcd sl811h_driver 0xc87734a1 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0xc22185a0 +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0xb50cb1fe +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0xd0383062 +fs/configfs/configfs config_group_init 0x8fd2c10b +fs/configfs/configfs config_group_init_type_name 0xd54bd0b6 +fs/configfs/configfs config_item_get 0xbc10a499 +fs/configfs/configfs config_item_init 0xa70968fb +fs/configfs/configfs config_item_init_type_name 0x947f0102 +fs/configfs/configfs config_item_put 0xa9492c3a +fs/configfs/configfs config_item_set_name 0xab73f789 +fs/configfs/configfs configfs_register_subsystem 0x982e9eb6 +fs/configfs/configfs configfs_unregister_subsystem 0xc5d61c73 +fs/exportfs/exportfs export_op_default 0xbe8afe7d +fs/exportfs/exportfs find_exported_dentry 0xfc1d9be9 +fs/fat/fat fat_add_entries 0xcf40705e +fs/fat/fat fat_alloc_new_dir 0x30998e49 +fs/fat/fat fat_attach 0xc803bc8a +fs/fat/fat fat_build_inode 0x23abc9a6 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0x4ed2af0a +fs/fat/fat fat_dir_empty 0x90d39f52 +fs/fat/fat fat_fill_super 0x8c9d42e7 +fs/fat/fat fat_free_clusters 0xcd301cfb +fs/fat/fat fat_fs_panic 0xf09adc19 +fs/fat/fat fat_get_dotdot_entry 0x107ea288 +fs/fat/fat fat_notify_change 0x34983c81 +fs/fat/fat fat_remove_entries 0x0a5d5d74 +fs/fat/fat fat_scan 0x4c75a371 +fs/fat/fat fat_search_long 0xe12c7578 +fs/fat/fat fat_sync_bhs 0xdd944b9f +fs/fat/fat fat_sync_inode 0xd6e94d78 +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0x4834aa18 +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0x9212c3a4 +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0x242662e5 +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0xcccd8151 +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0x316fa87c +fs/jbd/jbd journal_abort 0xa15ef63e +fs/jbd/jbd journal_ack_err 0x461ff1ce +fs/jbd/jbd journal_blocks_per_page 0x3c6ff836 +fs/jbd/jbd journal_check_available_features 0xc1476e01 +fs/jbd/jbd journal_check_used_features 0x41d31199 +fs/jbd/jbd journal_clear_err 0x338b83b6 +fs/jbd/jbd journal_create 0x04706eb2 +fs/jbd/jbd journal_destroy 0xb9990443 +fs/jbd/jbd journal_dirty_data 0x46d35e36 +fs/jbd/jbd journal_dirty_metadata 0x78ec0cd7 +fs/jbd/jbd journal_errno 0x9b9563ad +fs/jbd/jbd journal_extend 0x2ce59885 +fs/jbd/jbd journal_flush 0x9ffff29d +fs/jbd/jbd journal_force_commit 0xdb4fe868 +fs/jbd/jbd journal_force_commit_nested 0xc873adcc +fs/jbd/jbd journal_forget 0x98b9d7e7 +fs/jbd/jbd journal_get_create_access 0xf868e05e +fs/jbd/jbd journal_get_undo_access 0x9ee25402 +fs/jbd/jbd journal_get_write_access 0x470b87da +fs/jbd/jbd journal_init_dev 0x15040a8b +fs/jbd/jbd journal_init_inode 0x64d7acb7 +fs/jbd/jbd journal_invalidatepage 0x7fc39fdc +fs/jbd/jbd journal_load 0xd77ca757 +fs/jbd/jbd journal_lock_updates 0x9e1d9833 +fs/jbd/jbd journal_release_buffer 0x37fc21cd +fs/jbd/jbd journal_restart 0x3c6daa46 +fs/jbd/jbd journal_revoke 0xc5bf9c5f +fs/jbd/jbd journal_set_features 0xb8519fd9 +fs/jbd/jbd journal_start 0x297d41aa +fs/jbd/jbd journal_start_commit 0x5094120c +fs/jbd/jbd journal_stop 0xc0c6f3e2 +fs/jbd/jbd journal_try_to_free_buffers 0x4aff65e8 +fs/jbd/jbd journal_unlock_updates 0xc0b0ab7d +fs/jbd/jbd journal_update_format 0xdd240dc4 +fs/jbd/jbd journal_update_superblock 0x864a1650 +fs/jbd/jbd journal_wipe 0x47fd50d8 +fs/jbd/jbd log_wait_commit 0x52d9a06f +fs/nfsd/nfsd nfs4_acl_add_ace 0x1bb3671e +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x687f6251 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0x1cb231d0 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0x1d747ce3 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xbaeb4700 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0x4deefa44 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0x7de2deef +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0x5d800428 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x43bce54e +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0x36418553 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0xa9f5379a +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0x4fee01cf +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0x511f9dce +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x25950d33 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0x22a28f02 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xa82a8645 +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0xe4b97099 +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0xbd0c9387 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0xfed4b89f +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0x86f212f5 +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0x5b0dcc00 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0x53a5e91f +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0xff4d9af7 +fs/relayfs/relayfs relay_buf_full 0xc27fd5b1 +fs/relayfs/relayfs relay_close 0x83723907 +fs/relayfs/relayfs relay_flush 0x54f099ac +fs/relayfs/relayfs relay_open 0x2c956875 +fs/relayfs/relayfs relay_reset 0x9d069905 +fs/relayfs/relayfs relay_subbufs_consumed 0x7b008d32 +fs/relayfs/relayfs relay_switch_subbuf 0x214e1ce0 +fs/relayfs/relayfs relayfs_create_dir 0xe5b5ff43 +fs/relayfs/relayfs relayfs_file_operations 0x01abbb6a +fs/relayfs/relayfs relayfs_remove_dir 0x0a46dff4 +lib/crc-ccitt crc_ccitt 0x3771b461 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x8ffdb3b8 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x2329b292 +lib/libcrc32c crc32c_le 0x37d0b921 +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/bridge/bridge br_should_route_hook 0x4825aeb7 +net/bridge/netfilter/ebtables ebt_do_table 0x85d31931 +net/bridge/netfilter/ebtables ebt_register_match 0x18d9cfbc +net/bridge/netfilter/ebtables ebt_register_table 0x31705d2d +net/bridge/netfilter/ebtables ebt_register_target 0x4075148b +net/bridge/netfilter/ebtables ebt_register_watcher 0xbbdc4ec2 +net/bridge/netfilter/ebtables ebt_unregister_match 0x721f2daf +net/bridge/netfilter/ebtables ebt_unregister_table 0xfcc99d16 +net/bridge/netfilter/ebtables ebt_unregister_target 0x9981f472 +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x52bea193 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0xd846acb9 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0xb5b65e72 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x0fece10d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xb34906b8 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0xd4923f8e +net/dccp/dccp ccid_init 0x630b6ab2 +net/dccp/dccp ccid_register 0x49eb8b74 +net/dccp/dccp ccid_unregister 0xe80ad2a3 +net/dccp/dccp dccp_hashinfo 0x5f8fd5c5 +net/dccp/dccp dccp_insert_option 0x38e35b20 +net/dccp/dccp dccp_insert_option_elapsed_time 0x2381eaec +net/dccp/dccp dccp_insert_option_timestamp 0x8859bd27 +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0xbb7d7a06 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0x0164c5f6 +net/ieee80211/ieee80211 alloc_ieee80211 0xf169f479 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0x95d3deda +net/ieee80211/ieee80211 ieee80211_channel_to_index 0xf2a4c353 +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0xaeb209f2 +net/ieee80211/ieee80211 ieee80211_get_channel 0xac6f6430 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0xb9d788cb +net/ieee80211/ieee80211 ieee80211_get_geo 0xa899ec21 +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0x7c117e17 +net/ieee80211/ieee80211 ieee80211_rx 0x7491dc85 +net/ieee80211/ieee80211 ieee80211_rx_mgt 0xab6895b9 +net/ieee80211/ieee80211 ieee80211_set_geo 0x9a718c31 +net/ieee80211/ieee80211 ieee80211_tx_frame 0x4969bb0a +net/ieee80211/ieee80211 ieee80211_txb_free 0xfb5b5130 +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0x000e7a62 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0x80c484bc +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x09e1d499 +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0x8b5b2a5b +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0x943b5293 +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x3f66f05d +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0xd24a1087 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0x59fbe4de +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x092cce60 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0xb4124170 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x8fb884c1 +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0x05063bdb +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x786b1078 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0x9adb20cd +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0xc84ddcfc +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0xb1efc0b1 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0xb85d1ee2 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0x8461666d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0x87484a65 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0xb3cd1f38 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0x7352d75a +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0xfc487eaf +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0x61694082 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0xa9657bb7 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x937c7362 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x23385e67 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x145aa4a1 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0xab47b720 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x634b8c15 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x07495b93 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x4549d128 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0x2a586f40 +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x01222f94 +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0xafbe1392 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0xcb49d77c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0xff4a064d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0xf44dfdd5 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0x0782a079 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0xfe4cffbe +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0x1d873ce4 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x8872bd5b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0x845dcd56 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0xfdfacd52 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x24ed36b1 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x29c0a6b1 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x89e24847 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0xd36f42ae +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0x6975cb14 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x08b3becb +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0x9d6aba1c +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0xd4aa5602 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0x7cb78e7d +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0xdb36f8ca +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x339a0560 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0xa3864525 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0x91175639 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0x620d965a +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x366cc19e +net/ipv4/netfilter/arp_tables arpt_do_table 0x7d173ade +net/ipv4/netfilter/arp_tables arpt_register_table 0xef21469e +net/ipv4/netfilter/arp_tables arpt_register_target 0x5f203d1b +net/ipv4/netfilter/arp_tables arpt_unregister_table 0xb3b3923b +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x790773ac +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x75b67a18 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0xc241c340 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0x995791b0 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x387422c2 +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0x4ba79afd +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0xc269c95b +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x81694bfb +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0xa18af5a9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0xf9519790 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0xbe5a568c +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0x0252fd76 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0xa9f73e63 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0xab1186b4 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0x41a42f9b +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0xeeaaaf7c +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0xf76b5000 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0xde440291 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0xd494ff28 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x95227581 +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0xa88ccd7c +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x7e51e0c2 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x9c1c57f9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x7cf23ebf +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x2755307b +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0x3f8a359a +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0x71f8f130 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x1f064ce5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x31329f73 +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0x9bcf67f0 +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0xbba74408 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x04bb27de +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0xb44254d6 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0x4b1611c0 +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0x00c4cf51 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x19a73ff3 +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x167beaa2 +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0x85227446 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0x31b26be2 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0xa6df207d +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0x91e1dfcf +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0xb9d25a48 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0x27135621 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x4ce45c3c +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0x1dadb0c2 +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0xb7f0eac9 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0x53bd175d +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0x3e55ce98 +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0x76c2d522 +net/ipv4/netfilter/ip_nat ip_nat_packet 0xbc1375fe +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0xf8db1bc3 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x501b1cfa +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x7fa2f79d +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0xb7342221 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0x98d153c4 +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0x2dfdd71d +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0x993a3c4a +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x628332aa +net/ipv4/netfilter/ip_tables ipt_do_table 0x6a3f8193 +net/ipv4/netfilter/ip_tables ipt_find_target 0x277fb8a9 +net/ipv4/netfilter/ip_tables ipt_register_match 0xedbf631a +net/ipv4/netfilter/ip_tables ipt_register_table 0x58ba8d9a +net/ipv4/netfilter/ip_tables ipt_register_target 0x1262a959 +net/ipv4/netfilter/ip_tables ipt_unregister_match 0x470134e1 +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x5c91d1ba +net/ipv4/netfilter/ip_tables ipt_unregister_target 0x9eca3cde +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0xb25a1a66 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0xe962b9af +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0x11065b31 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0x212f8666 +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x7e27d656 +net/ipv6/ipv6 inet6_add_protocol 0xbc0037d1 +net/ipv6/ipv6 inet6_bind 0xcd777007 +net/ipv6/ipv6 inet6_del_protocol 0x6b69cf58 +net/ipv6/ipv6 inet6_getname 0x10ceafd9 +net/ipv6/ipv6 inet6_ioctl 0xb81c8bd1 +net/ipv6/ipv6 inet6_register_protosw 0x6df7e05e +net/ipv6/ipv6 inet6_release 0x5349cec5 +net/ipv6/ipv6 inet6_unregister_protosw 0x03de8731 +net/ipv6/ipv6 ip6_route_me_harder 0xaf74519d +net/ipv6/ipv6 ip6_route_output 0x1f0797de +net/ipv6/ipv6 ip6_xmit 0x8ba8f87b +net/ipv6/ipv6 ipv6_chk_addr 0x410e9540 +net/ipv6/ipv6 ipv6_get_saddr 0x944ef88c +net/ipv6/ipv6 ipv6_getsockopt 0x54f30c05 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0xd28a170c +net/ipv6/ipv6 ipv6_setsockopt 0x75e921a5 +net/ipv6/ipv6 ndisc_mc_map 0xd9d5f75d +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x5b6512c6 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0x80e18ae4 +net/ipv6/ipv6 xfrm6_rcv_spi 0xaea665ca +net/ipv6/netfilter/ip6_tables ip6t_do_table 0x4ac83dec +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0x1c4b6553 +net/ipv6/netfilter/ip6_tables ip6t_register_table 0x9afa3749 +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x64d7aea1 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0x7bc0166e +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x4eee102e +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0xae0a0cbf +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0xebcc30db +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0x73eb3b60 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0x95a4da0e +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/netfilter/nfnetlink __nfa_fill 0x1cd6c671 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0x8a932e17 +net/netfilter/nfnetlink nfnetlink_subsys_register 0x940950a9 +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0xbfa98d5c +net/netfilter/nfnetlink nfnetlink_unicast 0xb9094b80 +net/sched/police tcf_police 0xeb62ee93 +net/sched/police tcf_police_destroy 0x872f17f6 +net/sched/police tcf_police_dump 0x112854a1 +net/sched/police tcf_police_dump_stats 0xec65f085 +net/sched/police tcf_police_hash 0x8493d6e7 +net/sched/police tcf_police_ht 0x93da8ff5 +net/sched/police tcf_police_locate 0x55c50a07 +net/sched/police tcf_police_lookup 0xf2477819 +net/sched/police tcf_police_new_index 0x7ae0f6c9 +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0xc4b67860 +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x7b4baa45 +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0x9af37ca9 +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0x2e110977 +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0xcc697139 +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0x1c5db47e +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x6f3f45fb +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x652e5613 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0xc45d349a +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x20b09520 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x94bcd226 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x2f00b54d +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x8d98548b +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0xc7bd34d4 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0xb9643a3b +sound/core/snd copy_from_user_toio 0xce3ca308 +sound/core/snd copy_to_user_fromio 0x602c96f0 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0x010e9102 +sound/core/snd snd_card_file_add 0x2d7b0824 +sound/core/snd snd_card_file_remove 0xec658ec7 +sound/core/snd snd_card_free 0x064ea9c7 +sound/core/snd snd_card_free_in_thread 0xdd0df050 +sound/core/snd snd_card_new 0x862cb3a5 +sound/core/snd snd_card_proc_new 0xec9bc8e6 +sound/core/snd snd_card_register 0x46c00603 +sound/core/snd snd_card_set_generic_dev 0x618cbe60 +sound/core/snd snd_cards 0x39c941ac +sound/core/snd snd_component_add 0xc05d8b1e +sound/core/snd snd_ctl_add 0xe3a2f4c8 +sound/core/snd snd_ctl_elem_read 0xa1199731 +sound/core/snd snd_ctl_elem_write 0xf3ad21d2 +sound/core/snd snd_ctl_find_id 0x68ec8f1c +sound/core/snd snd_ctl_find_numid 0xcb8e4f86 +sound/core/snd snd_ctl_free_one 0x252d7204 +sound/core/snd snd_ctl_new 0x0ba872d8 +sound/core/snd snd_ctl_new1 0x5cca6255 +sound/core/snd snd_ctl_notify 0xd4658cb3 +sound/core/snd snd_ctl_register_ioctl 0xa1a3f64d +sound/core/snd snd_ctl_remove 0x51011339 +sound/core/snd snd_ctl_remove_id 0x5c8cbcb6 +sound/core/snd snd_ctl_rename_id 0xdbe7d08a +sound/core/snd snd_ctl_unregister_ioctl 0xf5696495 +sound/core/snd snd_device_free 0xce143187 +sound/core/snd snd_device_new 0xa054ed5c +sound/core/snd snd_device_register 0x5261ac26 +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0xb77828bc +sound/core/snd snd_info_create_module_entry 0x511bbf6e +sound/core/snd snd_info_free_entry 0xef571e31 +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0xf305e7f5 +sound/core/snd snd_info_unregister 0xd6dccad4 +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0xd1ee8574 +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_register_device 0xb2f8adf7 +sound/core/snd snd_register_oss_device 0xf1500271 +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0xf0b930ae +sound/core/snd snd_unregister_device 0x4632fd4d +sound/core/snd snd_unregister_oss_device 0x7c9f1691 +sound/core/snd-hwdep snd_hwdep_new 0x329f4db7 +sound/core/snd-page-alloc snd_dma_alloc_pages 0x8361256c +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0xedb47306 +sound/core/snd-page-alloc snd_dma_free_pages 0xbf7a1e90 +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0x6b01499d +sound/core/snd-page-alloc snd_dma_reserve_buf 0xfe65f91b +sound/core/snd-page-alloc snd_free_pages 0x3b91f3af +sound/core/snd-page-alloc snd_malloc_pages 0xade88e76 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x65f0da5e +sound/core/snd-pcm snd_pcm_devices 0x5ddbff0b +sound/core/snd-pcm snd_pcm_format_big_endian 0x09d405a0 +sound/core/snd-pcm snd_pcm_format_linear 0x1d607209 +sound/core/snd-pcm snd_pcm_format_little_endian 0x11ee487f +sound/core/snd-pcm snd_pcm_format_name 0x77863ed3 +sound/core/snd-pcm snd_pcm_format_physical_width 0x32be712f +sound/core/snd-pcm snd_pcm_format_set_silence 0xfa4027da +sound/core/snd-pcm snd_pcm_format_signed 0x78967306 +sound/core/snd-pcm snd_pcm_format_silence_64 0x407a3719 +sound/core/snd-pcm snd_pcm_format_size 0x0bde331d +sound/core/snd-pcm snd_pcm_format_unsigned 0x0ff581cb +sound/core/snd-pcm snd_pcm_format_width 0xcfb8aa1b +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0x10e51290 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0xb4eaa588 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0x8216f562 +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0xbd677d52 +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0x60a3bcaa +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x1581f4e0 +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x5fc35dbf +sound/core/snd-pcm snd_pcm_hw_constraint_step 0xd7180897 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0x52b3626f +sound/core/snd-pcm snd_pcm_hw_constraints_init 0x9c125c12 +sound/core/snd-pcm snd_pcm_hw_param_first 0xa77e4b5d +sound/core/snd-pcm snd_pcm_hw_param_last 0xabff5d4d +sound/core/snd-pcm snd_pcm_hw_param_mask 0x6a04bffb +sound/core/snd-pcm snd_pcm_hw_param_near 0x3e119f10 +sound/core/snd-pcm snd_pcm_hw_param_set 0xec92346e +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0x8f27937e +sound/core/snd-pcm snd_pcm_hw_rule_add 0x4d4583ab +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0x49028371 +sound/core/snd-pcm snd_pcm_kernel_ioctl 0x99b0ee1f +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x5423bee0 +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0x7e0b04c3 +sound/core/snd-pcm snd_pcm_lib_free_pages 0x6ffc1e33 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x7af1bc0b +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x32c4f115 +sound/core/snd-pcm snd_pcm_lib_period_bytes 0x022b3cd7 +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0x0fe1aa11 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0xaf3f6910 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0xbbb3eaec +sound/core/snd-pcm snd_pcm_lib_read 0xe10c02e9 +sound/core/snd-pcm snd_pcm_lib_readv 0xed7d5344 +sound/core/snd-pcm snd_pcm_lib_write 0xc60e29d4 +sound/core/snd-pcm snd_pcm_lib_writev 0x10dcf9c8 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x8b551471 +sound/core/snd-pcm snd_pcm_link_rwlock 0x395e287f +sound/core/snd-pcm snd_pcm_mmap_data 0xb16d9854 +sound/core/snd-pcm snd_pcm_new 0x69e3e667 +sound/core/snd-pcm snd_pcm_new_stream 0xfe6ab3a2 +sound/core/snd-pcm snd_pcm_notify 0x30cae41a +sound/core/snd-pcm snd_pcm_open_substream 0x40492424 +sound/core/snd-pcm snd_pcm_period_elapsed 0x92e520ba +sound/core/snd-pcm snd_pcm_release_substream 0x6d5e8b98 +sound/core/snd-pcm snd_pcm_set_ops 0x942d9b5c +sound/core/snd-pcm snd_pcm_set_sync 0x547a15eb +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0x9c5ea6eb +sound/core/snd-pcm snd_pcm_stop 0x7b8a38e1 +sound/core/snd-rawmidi snd_rawmidi_drain_input 0xd6b4429f +sound/core/snd-rawmidi snd_rawmidi_drain_output 0xbabceab2 +sound/core/snd-rawmidi snd_rawmidi_drop_output 0x4c5a4652 +sound/core/snd-rawmidi snd_rawmidi_info 0x204a0ca7 +sound/core/snd-rawmidi snd_rawmidi_info_select 0xddb860fd +sound/core/snd-rawmidi snd_rawmidi_input_params 0xdd4a68f1 +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x48ee77fa +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0xa3c9b012 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0x7c96ca35 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x4d33255d +sound/core/snd-rawmidi snd_rawmidi_new 0xbc2931c4 +sound/core/snd-rawmidi snd_rawmidi_output_params 0x648a5e40 +sound/core/snd-rawmidi snd_rawmidi_receive 0xfced8ff5 +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x99c548e0 +sound/core/snd-rawmidi snd_rawmidi_transmit 0xa7f7d377 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x19f0aa25 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0xe6f9c798 +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0x94420b6c +sound/core/snd-timer snd_timer_close 0xabfd7e25 +sound/core/snd-timer snd_timer_continue 0xa8976110 +sound/core/snd-timer snd_timer_global_free 0xda4f4a4d +sound/core/snd-timer snd_timer_global_new 0xa0319346 +sound/core/snd-timer snd_timer_global_register 0x89cb77dd +sound/core/snd-timer snd_timer_global_unregister 0x155c79a4 +sound/core/snd-timer snd_timer_interrupt 0xa68ed939 +sound/core/snd-timer snd_timer_new 0x29c3117b +sound/core/snd-timer snd_timer_notify 0xa7207db9 +sound/core/snd-timer snd_timer_open 0x5b3c7faf +sound/core/snd-timer snd_timer_pause 0x917cef67 +sound/core/snd-timer snd_timer_resolution 0x44a1406d +sound/core/snd-timer snd_timer_start 0x7e566fda +sound/core/snd-timer snd_timer_stop 0x3fce433c +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x2e3d3cfe +sound/drivers/vx/snd-vx-lib snd_vx_create 0x3f2590ae +sound/drivers/vx/snd-vx-lib snd_vx_delay 0x178b7198 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x6d03596a +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0xa5b52482 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0x98621692 +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x9b239d5d +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0xa169e715 +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0x1eea805b +sound/i2c/other/snd-ak4117 snd_ak4117_build 0x7ef58c5b +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0x621f5904 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0x276043ec +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0xf92377ab +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0xe0773fc4 +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x94b5ed64 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0xe217f7d0 +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0xa66c523b +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0x022e1a05 +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0xbb158d07 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0xdc37b30e +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x83259e01 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x3eb2d8ce +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0x6643f587 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0x20d85349 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0xe70893a8 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x01b5808a +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0xc4bdd7d8 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0x5b5740d8 +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0x765ef4b9 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0xdf50d8e1 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0x2dc4c2f8 +sound/soundcore register_sound_midi 0x2812f0d6 +sound/soundcore register_sound_mixer 0x78ccbdeb +sound/soundcore register_sound_special 0x1f1934c7 +sound/soundcore register_sound_special_device 0xaa22913a +sound/soundcore register_sound_synth 0x34909981 +sound/soundcore sound_class 0x368ce08b +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +vmlinux $$divI 0x9ea93a0c +vmlinux $$divI_10 0xe3bf4573 +vmlinux $$divI_12 0xbbd3fcb2 +vmlinux $$divI_14 0x536636f1 +vmlinux $$divI_15 0x92e8e931 +vmlinux $$divI_3 0x02a01458 +vmlinux $$divI_5 0xea15de1b +vmlinux $$divI_6 0x73f7b81a +vmlinux $$divI_7 0xb27967da +vmlinux $$divI_9 0xe00f4cdc +vmlinux $$divU 0x3a456c00 +vmlinux $$divU_10 0xaff8e832 +vmlinux $$divU_12 0xf79451f3 +vmlinux $$divU_14 0x1f219bb0 +vmlinux $$divU_15 0xdeaf4470 +vmlinux $$divU_3 0x2c1d0b79 +vmlinux $$divU_5 0xc4a8c13a +vmlinux $$divU_6 0x5d4aa73b +vmlinux $$divU_7 0x9cc478fb +vmlinux $$divU_9 0xceb253fd +vmlinux $$dyncall 0xbccf7ff8 +vmlinux $$mulI 0xf86ddff0 +vmlinux $$remI 0xe7e9bddf +vmlinux $$remU 0x4305ebd3 +vmlinux $global$ 0x1d73adf1 +vmlinux EISA_bus 0x7413793a +vmlinux I_BDEV 0x4eb5c72b +vmlinux SELECT_DRIVE 0xd41338bc +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0xff9415c9 +vmlinux __alloc_pages 0xcab9e2d7 +vmlinux __alloc_skb 0x8b0919d5 +vmlinux __ashldi3 0x40f07981 +vmlinux __ashrdi3 0xedd9106d +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0xf93065a1 +vmlinux __bio_clone 0xf24a64a8 +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0xdc5293b0 +vmlinux __bread 0x2e44acb1 +vmlinux __breadahead 0x19b5ae79 +vmlinux __break_lease 0x21158e0b +vmlinux __brelse 0x8fbf6d0a +vmlinux __canonicalize_funcptr_for_compare 0xf38ab871 +vmlinux __check_region 0xf1d0cdab +vmlinux __cmpxchg_u32 0x12fa180d +vmlinux __create_workqueue 0xf39f7024 +vmlinux __d_path 0xe19c2868 +vmlinux __dev_get_by_index 0xb11c3cd0 +vmlinux __dev_get_by_name 0x37fc4bb3 +vmlinux __dev_remove_pack 0x615cf84e +vmlinux __div64_32 0x8ebf25f5 +vmlinux __down 0x60cd9852 +vmlinux __down_interruptible 0xa713b4ff +vmlinux __down_read 0x9c2571f4 +vmlinux __down_read_trylock 0xab680c96 +vmlinux __down_write 0x23838107 +vmlinux __down_write_trylock 0xe4a97c71 +vmlinux __downgrade_write 0xba3bda2a +vmlinux __dst_free 0x22fb2f77 +vmlinux __elv_add_request 0xd2df6e5c +vmlinux __find_get_block 0x990f923c +vmlinux __free_pages 0xc94a0aea +vmlinux __generic_file_aio_read 0x0449c181 +vmlinux __generic_unplug_device 0x3e050d12 +vmlinux __get_free_pages 0x93fca811 +vmlinux __getblk 0x0a77db15 +vmlinux __ide_abort 0x7ecd0d1f +vmlinux __ide_dma_bad_drive 0x57044f4d +vmlinux __ide_dma_check 0xea6e9d37 +vmlinux __ide_dma_end 0xbe72f090 +vmlinux __ide_dma_good_drive 0x7ed75ad7 +vmlinux __ide_dma_host_off 0xfbf34519 +vmlinux __ide_dma_host_on 0xb8a3a53a +vmlinux __ide_dma_lostirq 0x6d547da5 +vmlinux __ide_dma_off 0x2735ee9a +vmlinux __ide_dma_off_quietly 0x7bd7e0cc +vmlinux __ide_dma_on 0xa805e914 +vmlinux __ide_dma_timeout 0xd6cff7c9 +vmlinux __ide_end_request 0xa1c7f468 +vmlinux __ide_error 0x35775a19 +vmlinux __ide_pci_register_driver 0x403952d8 +vmlinux __inet_lookup_listener 0x438739bd +vmlinux __inet_twsk_hashdance 0xff7d1e2a +vmlinux __inet_twsk_kill 0x328b7531 +vmlinux __init_timer_base 0x82f04785 +vmlinux __inode_dir_notify 0x44b3c20d +vmlinux __insert_inode_hash 0x3307050c +vmlinux __invalidate_device 0x9bace07b +vmlinux __ioremap 0x9eac042a +vmlinux __ip_route_output_key 0x566f4a84 +vmlinux __ip_select_ident 0x27f0787b +vmlinux __kfifo_get 0x043b8483 +vmlinux __kfifo_put 0xaa527612 +vmlinux __kfree_skb 0xfacc97a0 +vmlinux __kill_fasync 0xdf68675c +vmlinux __kmalloc 0x12da5bb2 +vmlinux __lock_buffer 0x8111a97f +vmlinux __lock_page 0x5c92e162 +vmlinux __lshrdi3 0xff67b37f +vmlinux __mark_inode_dirty 0x30120a46 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xe051a0ac +vmlinux __module_put_and_exit 0x306d7b95 +vmlinux __muldi3 0x800e4ffa +vmlinux __neigh_event_send 0xcac529f8 +vmlinux __neigh_for_each_release 0xd2034d77 +vmlinux __net_timestamp 0x8aa27b13 +vmlinux __netdev_watchdog_up 0xf3bae2bb +vmlinux __nla_put 0x169b7401 +vmlinux __nla_reserve 0x85fd5537 +vmlinux __page_cache_release 0xc9d07ec5 +vmlinux __pagevec_lru_add 0xba7e6726 +vmlinux __pagevec_release 0x999248ce +vmlinux __pci_register_driver 0x309866b3 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0x24f32cb4 +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0x92a97ac4 +vmlinux __scm_destroy 0x2e081a2b +vmlinux __scm_send 0xb36f31c3 +vmlinux __scsi_add_device 0x77d098dc +vmlinux __scsi_device_lookup 0x6497e5dc +vmlinux __scsi_device_lookup_by_target 0xf2d8967e +vmlinux __scsi_iterate_devices 0x74095d38 +vmlinux __scsi_print_command 0xfef96e23 +vmlinux __scsi_print_sense 0x69d38ed9 +vmlinux __secpath_destroy 0xd4b36516 +vmlinux __serio_register_driver 0xc9deb927 +vmlinux __serio_register_port 0x40c7306c +vmlinux __serio_unregister_port_delayed 0xdd3d2696 +vmlinux __set_page_dirty_buffers 0x7b968ed5 +vmlinux __set_page_dirty_nobuffers 0x904d1c9c +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x27c27843 +vmlinux __skb_checksum_complete 0x1fac4f55 +vmlinux __skb_linearize 0x94ca86b3 +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x267fc65b +vmlinux __tasklet_schedule 0xf397b9aa +vmlinux __tcf_em_tree_match 0x87f567b3 +vmlinux __up 0x7d4506b0 +vmlinux __up_read 0xb2bf1312 +vmlinux __up_write 0x6ac45c28 +vmlinux __user_walk 0x6033e929 +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0x8f07d8ca +vmlinux __wait_on_bit_lock 0x9501d078 +vmlinux __wait_on_buffer 0x87513681 +vmlinux __wake_up 0xb6c70a7d +vmlinux __wake_up_bit 0x44c214d1 +vmlinux __wake_up_sync 0xffaf7bbb +vmlinux __xchg32 0xc387ec0b +vmlinux __xchg8 0x4e7bc574 +vmlinux __xfrm_policy_check 0x40ab0404 +vmlinux __xfrm_policy_destroy 0xeb05e919 +vmlinux __xfrm_route_forward 0xf03db5ea +vmlinux __xfrm_state_destroy 0x71af2ff5 +vmlinux _atomic_dec_and_lock 0x1edc9598 +vmlinux _ctype 0x8d3894f2 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0xba5c2b3a +vmlinux add_disk_randomness 0x8768f2cd +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0x1cb48b68 +vmlinux add_wait_queue 0xfd8dba4c +vmlinux add_wait_queue_exclusive 0x3e6caebd +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0x47bf8b74 +vmlinux aio_put_req 0x2f573cc8 +vmlinux alloc_buffer_head 0x9c411e51 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0x3476aefb +vmlinux alloc_disk_node 0x3a630959 +vmlinux alloc_etherdev 0xe2327aee +vmlinux alloc_netdev 0x89f39adc +vmlinux alloc_page_buffers 0xcf9f1718 +vmlinux alloc_tty_driver 0xdd2c9627 +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0xf00f45c1 +vmlinux anon_transport_class_unregister 0xfa9c482e +vmlinux arp_broken_ops 0xcc68cc6b +vmlinux arp_create 0x2c4b15cf +vmlinux arp_find 0x5a5e917b +vmlinux arp_rcv 0x1db4092a +vmlinux arp_send 0xe6602f0b +vmlinux arp_tbl 0x1b0b7d26 +vmlinux arp_xmit 0x93684df1 +vmlinux attribute_container_add_attrs 0xffe1201d +vmlinux attribute_container_add_class_device 0xb69540c5 +vmlinux attribute_container_add_class_device_adapter 0xe00cef89 +vmlinux attribute_container_class_device_del 0x7cf64cc7 +vmlinux attribute_container_classdev_to_container 0x4d6bcc5a +vmlinux attribute_container_device_trigger 0x604d7b6b +vmlinux attribute_container_find_class_device 0x25803ca2 +vmlinux attribute_container_register 0xce1edd9a +vmlinux attribute_container_remove_attrs 0x2d503ace +vmlinux attribute_container_remove_device 0x24a276da +vmlinux attribute_container_trigger 0x5eafd416 +vmlinux attribute_container_unregister 0x997e7dbf +vmlinux auth_domain_find 0xce9b7a1f +vmlinux auth_domain_lookup 0xa74157e3 +vmlinux auth_domain_put 0xb7e2b4a5 +vmlinux auth_unix_add_addr 0xb8520a43 +vmlinux auth_unix_forget_old 0x758f9c49 +vmlinux auth_unix_lookup 0xd1d4e136 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x8bb69457 +vmlinux bd_claim 0xa021cc10 +vmlinux bd_release 0xa91247c9 +vmlinux bd_set_size 0xf3fc27d1 +vmlinux bdev_read_only 0x655783f1 +vmlinux bdevname 0xdf9a9aa0 +vmlinux bdget 0x85082632 +vmlinux bdput 0xc8cda1ed +vmlinux bfifo_qdisc_ops 0x2f6cf941 +vmlinux bio_add_page 0x383037c1 +vmlinux bio_alloc 0x7d4b789c +vmlinux bio_alloc_bioset 0xa2018b47 +vmlinux bio_clone 0xe984ec7e +vmlinux bio_copy_user 0xd66dd240 +vmlinux bio_endio 0x7e4f8419 +vmlinux bio_free 0x28d1ccdd +vmlinux bio_get_nr_vecs 0x5cefc65f +vmlinux bio_hw_segments 0x86e27109 +vmlinux bio_init 0x7a52438f +vmlinux bio_map_kern 0x2f3acd55 +vmlinux bio_map_user 0xde7fa222 +vmlinux bio_pair_release 0x8cefa401 +vmlinux bio_phys_segments 0x3f598f94 +vmlinux bio_put 0xecb8c62f +vmlinux bio_split 0x3cae5348 +vmlinux bio_split_pool 0x27b47413 +vmlinux bio_uncopy_user 0xe4e8a683 +vmlinux bio_unmap_user 0xe1d9af2a +vmlinux bioset_create 0x1c875572 +vmlinux bioset_free 0x661e6ec8 +vmlinux bit_waitqueue 0xa9f1ed23 +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0x42c3e36a +vmlinux blk_alloc_queue_node 0x6923ff76 +vmlinux blk_cleanup_queue 0x22b759a7 +vmlinux blk_complete_barrier_rq 0x0c1409cc +vmlinux blk_complete_barrier_rq_locked 0x0c2338b6 +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x96d15778 +vmlinux blk_end_sync_rq 0x39d42a67 +vmlinux blk_execute_rq 0x613b9193 +vmlinux blk_get_backing_dev_info 0x8be451e7 +vmlinux blk_get_queue 0xe456a7c4 +vmlinux blk_get_request 0x2d6bd7bf +vmlinux blk_init_queue 0x03457239 +vmlinux blk_init_queue_node 0xdf9fb0d0 +vmlinux blk_insert_request 0x041ca58e +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0xb427759f +vmlinux blk_put_request 0x615f47ba +vmlinux blk_queue_activity_fn 0x0fdec77f +vmlinux blk_queue_bounce 0x1bcf3916 +vmlinux blk_queue_bounce_limit 0xf7e040c2 +vmlinux blk_queue_dma_alignment 0xfe2b86d9 +vmlinux blk_queue_end_tag 0x42bca623 +vmlinux blk_queue_find_tag 0x0d5281f1 +vmlinux blk_queue_free_tags 0x0d3b2c69 +vmlinux blk_queue_hardsect_size 0xdcd010da +vmlinux blk_queue_init_tags 0xd219804e +vmlinux blk_queue_invalidate_tags 0x4c813045 +vmlinux blk_queue_issue_flush_fn 0x04a948c1 +vmlinux blk_queue_make_request 0xc604f207 +vmlinux blk_queue_max_hw_segments 0x35cd1a03 +vmlinux blk_queue_max_phys_segments 0xc8298a29 +vmlinux blk_queue_max_sectors 0x52c5b291 +vmlinux blk_queue_max_segment_size 0xb7bd7cff +vmlinux blk_queue_merge_bvec 0xdd262d7d +vmlinux blk_queue_ordered 0x139013c9 +vmlinux blk_queue_prep_rq 0x8518b1fa +vmlinux blk_queue_resize_tags 0x16823c5e +vmlinux blk_queue_segment_boundary 0x61da074e +vmlinux blk_queue_stack_limits 0xfd48a001 +vmlinux blk_queue_start_tag 0x96c75483 +vmlinux blk_register_region 0x77e1c0b4 +vmlinux blk_remove_plug 0x03938f05 +vmlinux blk_requeue_request 0xe49ffaf5 +vmlinux blk_rq_bio_prep 0x1269b2fc +vmlinux blk_rq_map_kern 0x099c1fe7 +vmlinux blk_rq_map_sg 0x823c4aba +vmlinux blk_rq_map_user 0x738916a4 +vmlinux blk_rq_map_user_iov 0x25be7a23 +vmlinux blk_rq_unmap_user 0x2bae603e +vmlinux blk_run_queue 0x6ba1e3cb +vmlinux blk_start_queue 0xf1a6d5c4 +vmlinux blk_stop_queue 0xea5357e1 +vmlinux blk_sync_queue 0x75a075ce +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0xd457887e +vmlinux blkdev_ioctl 0x2015cdab +vmlinux blkdev_issue_flush 0xda2fb1bd +vmlinux blkdev_put 0xd8ee3594 +vmlinux block_all_signals 0xc74785b2 +vmlinux block_commit_write 0xa71b5b8e +vmlinux block_invalidatepage 0x6af50bdd +vmlinux block_prepare_write 0xf1fa9528 +vmlinux block_read_full_page 0x28a383af +vmlinux block_sync_page 0xc0570d6b +vmlinux block_truncate_page 0x177eed32 +vmlinux block_write_full_page 0x1318acc5 +vmlinux bmap 0xe288f012 +vmlinux boot_cpu_data 0x98403e2c +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0xa55d089e +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0x9f3fec6a +vmlinux bus_create_file 0x669e2692 +vmlinux bus_find_device 0xc379492c +vmlinux bus_for_each_dev 0x7a6380ae +vmlinux bus_for_each_drv 0x8212c5a8 +vmlinux bus_register 0xd0f0a835 +vmlinux bus_remove_device 0x2558bdf6 +vmlinux bus_remove_file 0xd7d7e88d +vmlinux bus_rescan_devices 0x60b092f5 +vmlinux bus_unregister 0xb0950ccb +vmlinux cache_check 0xce61e7d7 +vmlinux cache_flush 0x71fa908a +vmlinux cache_fresh 0x6dedb144 +vmlinux cache_init 0xc244025c +vmlinux cache_purge 0x5914c3fd +vmlinux cache_register 0xd392fc29 +vmlinux cache_unregister 0xf42400dc +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x43c852aa +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x74133525 +vmlinux cap_bprm_apply_creds 0xe3e22dec +vmlinux cap_bprm_secureexec 0x6c9f5fa1 +vmlinux cap_bprm_set_security 0x396161c3 +vmlinux cap_bset 0x59ab4080 +vmlinux cap_capable 0x102ae9a2 +vmlinux cap_capget 0x17587859 +vmlinux cap_capset_check 0xa51279de +vmlinux cap_capset_set 0xb67ccb9d +vmlinux cap_inode_removexattr 0x5ba084b0 +vmlinux cap_inode_setxattr 0x3ddb06e0 +vmlinux cap_netlink_recv 0x54b1c928 +vmlinux cap_netlink_send 0x6f4b31ae +vmlinux cap_ptrace 0x448c482d +vmlinux cap_settime 0x819cc9ba +vmlinux cap_syslog 0xe1dd5368 +vmlinux cap_task_post_setuid 0x372390b2 +vmlinux cap_task_reparent_to_init 0xe0df930b +vmlinux cap_vm_enough_memory 0xaf236a7b +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x11095942 +vmlinux cdev_alloc 0x2ab6cc7c +vmlinux cdev_del 0x81f5bbe9 +vmlinux cdev_init 0x2c0f596d +vmlinux cfb_copyarea 0xb6588091 +vmlinux cfb_fillrect 0x124a00c3 +vmlinux cfb_imageblit 0x4622e6df +vmlinux check_disk_change 0x81c905f6 +vmlinux class_create 0x0151a273 +vmlinux class_create_file 0xc7388f13 +vmlinux class_destroy 0x44f6626f +vmlinux class_device_add 0x16e03789 +vmlinux class_device_create 0x97006b80 +vmlinux class_device_create_bin_file 0xac20d004 +vmlinux class_device_create_file 0xf22e3384 +vmlinux class_device_del 0x04899eda +vmlinux class_device_destroy 0x745bca7f +vmlinux class_device_get 0x90810866 +vmlinux class_device_initialize 0x3236a72a +vmlinux class_device_put 0x2de498a8 +vmlinux class_device_register 0xcf14537b +vmlinux class_device_remove_bin_file 0xfef8694a +vmlinux class_device_remove_file 0xb83a7115 +vmlinux class_device_unregister 0x009f0426 +vmlinux class_get 0x4c942c10 +vmlinux class_interface_register 0x88fe6ad2 +vmlinux class_interface_unregister 0x17508a7c +vmlinux class_put 0xffcf8d33 +vmlinux class_register 0xb27e9eef +vmlinux class_remove_file 0x6d143bf2 +vmlinux class_unregister 0x785ff22d +vmlinux clear_inode 0xfc583f0a +vmlinux clear_page_dirty_for_io 0x2354c656 +vmlinux close_bdev_excl 0x035d4862 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0xa218bf61 +vmlinux complete_all 0x48f9f12d +vmlinux complete_and_exit 0x8e9eceaa +vmlinux compute_creds 0x4b05d7d9 +vmlinux con_copy_unimap 0xcc204dc1 +vmlinux con_set_default_unimap 0xdb6caafe +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0xa3a4ed03 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0xfdc6184c +vmlinux console_stop 0xa074da19 +vmlinux cont_prepare_write 0x9e8892ba +vmlinux contig_page_data 0xd600bb60 +vmlinux copy_from_user 0x0d6c963c +vmlinux copy_fs_struct 0xa523fe39 +vmlinux copy_in_user 0x8d944cbb +vmlinux copy_io_context 0x225b9be1 +vmlinux copy_strings_kernel 0x6bbc1ffe +vmlinux copy_to_user 0x2f287f0d +vmlinux cpu_present_map 0x5a4dac68 +vmlinux cpu_sysdev_class 0x9c8f699e +vmlinux crc32_be 0xb7b61546 +vmlinux crc32_le 0xa34f1ef5 +vmlinux create_empty_buffers 0x453977ee +vmlinux create_proc_entry 0x541178be +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0x094ac433 +vmlinux crypto_free_tfm 0x7ce7ae60 +vmlinux crypto_hmac 0x024724b7 +vmlinux crypto_hmac_final 0xb4b368ff +vmlinux crypto_hmac_init 0x87574f89 +vmlinux crypto_hmac_update 0xaf55307e +vmlinux crypto_register_alg 0xf2ee1cf8 +vmlinux crypto_unregister_alg 0x747d705a +vmlinux csum_partial 0x94095c16 +vmlinux csum_partial_copy_from_user 0x7cf86690 +vmlinux csum_partial_copy_fromiovecend 0x02876657 +vmlinux csum_partial_copy_nocheck 0xa2963be1 +vmlinux current_fs_time 0xd8a66662 +vmlinux current_io_context 0xb3194008 +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0x84b67dfc +vmlinux d_alloc_anon 0x71bcbf73 +vmlinux d_alloc_name 0xb308e172 +vmlinux d_alloc_root 0x47689955 +vmlinux d_delete 0xcfdf86e5 +vmlinux d_find_alias 0x1349d592 +vmlinux d_genocide 0x99d5012a +vmlinux d_instantiate 0x834972b4 +vmlinux d_instantiate_unique 0x7375e92c +vmlinux d_invalidate 0x87a4548c +vmlinux d_lookup 0xcc5ff173 +vmlinux d_move 0x20f6e29f +vmlinux d_path 0xf20389d7 +vmlinux d_prune_aliases 0xa15f3884 +vmlinux d_rehash 0xf3991507 +vmlinux d_splice_alias 0x0bcbda5f +vmlinux d_validate 0xd62bce0c +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0xab35933e +vmlinux dcache_dir_close 0xb38fd525 +vmlinux dcache_dir_lseek 0x0ab14de9 +vmlinux dcache_dir_open 0xd0a75f0c +vmlinux dcache_lock 0x412ddc0c +vmlinux dcache_readdir 0xc43e5597 +vmlinux dcache_stride 0x29fe2400 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0xe354e12d +vmlinux default_backing_dev_info 0xd561445b +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0x5eab5d82 +vmlinux default_llseek 0xb19c1b00 +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x57db8513 +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0x7be54aa1 +vmlinux del_timer 0xda264347 +vmlinux dentry_open 0x05f493be +vmlinux dentry_unhash 0x93cad5e6 +vmlinux dequeue_signal 0x85667694 +vmlinux destroy_8023_client 0x98fd6eba +vmlinux destroy_workqueue 0xff955d3b +vmlinux dev_add_pack 0x456ead7c +vmlinux dev_alloc_name 0x129b8f57 +vmlinux dev_base 0xbc409d1f +vmlinux dev_base_lock 0x144ed3a1 +vmlinux dev_change_flags 0x74d6205e +vmlinux dev_close 0x3c5de90c +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0xaa36f63c +vmlinux dev_get_by_index 0x43a2b57c +vmlinux dev_get_by_name 0xc5a46769 +vmlinux dev_get_flags 0xd2c477cf +vmlinux dev_getbyhwaddr 0x4eba85f3 +vmlinux dev_getfirstbyhwtype 0x78877865 +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0x605bc5d2 +vmlinux dev_mc_delete 0xb93b0742 +vmlinux dev_mc_upload 0x7c37ccab +vmlinux dev_open 0x0405f6e0 +vmlinux dev_queue_xmit 0x083b622c +vmlinux dev_remove_pack 0x32c9a437 +vmlinux dev_set_allmulti 0x1dcb30c5 +vmlinux dev_set_mac_address 0x1435a09a +vmlinux dev_set_mtu 0x6bd51821 +vmlinux dev_set_promiscuity 0x6eb6c9f6 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0xe6fccf33 +vmlinux device_attach 0xc3e70139 +vmlinux device_bind_driver 0x1cc343ff +vmlinux device_create_file 0xb647367b +vmlinux device_del 0xc72a0da9 +vmlinux device_for_each_child 0x629fab80 +vmlinux device_initialize 0x5e443908 +vmlinux device_register 0xb32ed9d7 +vmlinux device_release_driver 0x0c32bb72 +vmlinux device_remove_file 0xc296eacc +vmlinux device_to_hwpath 0x3be0faf4 +vmlinux device_unregister 0x96c47fdb +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0x77cee597 +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_get_required_mask 0x9ea04e60 +vmlinux dma_pool_alloc 0x1b93fb8a +vmlinux dma_pool_create 0xb71e4174 +vmlinux dma_pool_destroy 0xd1e1e169 +vmlinux dma_pool_free 0x9b1502aa +vmlinux dnotify_parent 0x5c089f70 +vmlinux do_SAK 0x52e857fe +vmlinux do_add_mount 0x4e814ffe +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0x04f0282b +vmlinux do_gettimeofday 0x836a55de +vmlinux do_kern_mount 0xf791c298 +vmlinux do_mmap_pgoff 0x67c76851 +vmlinux do_munmap 0x42bce95a +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x11d22d2d +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0x27cbbea7 +vmlinux do_sync_read 0x7813f90f +vmlinux do_sync_write 0xc59de04a +vmlinux do_unblank_screen 0x600683d3 +vmlinux dput 0xe9f34d61 +vmlinux drive_is_ready 0x4ba96b6f +vmlinux driver_attach 0x8630ab01 +vmlinux driver_create_file 0x265d705d +vmlinux driver_find 0x08d3cb08 +vmlinux driver_find_device 0x2ea7d8f9 +vmlinux driver_for_each_device 0xd48eb1b0 +vmlinux driver_register 0x127f4d90 +vmlinux driver_remove_file 0xf6bbbc05 +vmlinux driver_unregister 0xa499c2f8 +vmlinux drop_super 0x449f7d53 +vmlinux dst_alloc 0xac7bfd01 +vmlinux dst_destroy 0x312a6c50 +vmlinux dump_stack 0x6b2dc060 +vmlinux eighty_ninty_three 0x68e73816 +vmlinux eisa_bus_type 0x6a142673 +vmlinux eisa_driver_register 0xacd35aea +vmlinux eisa_driver_unregister 0x26d4611f +vmlinux elevator_exit 0x5817a039 +vmlinux elevator_init 0x54a76a44 +vmlinux elv_add_request 0x11226722 +vmlinux elv_completed_request 0x9a4680c1 +vmlinux elv_dequeue_request 0x090043fa +vmlinux elv_dispatch_sort 0x9ac39288 +vmlinux elv_next_request 0x4dde8ea4 +vmlinux elv_queue_empty 0x3fb353aa +vmlinux elv_register 0x48a55859 +vmlinux elv_requeue_request 0x9a0277aa +vmlinux elv_rq_merge_ok 0x108dc7a3 +vmlinux elv_try_merge 0x50173c24 +vmlinux elv_unregister 0xdb99cf4c +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_irq 0xfcec0987 +vmlinux end_buffer_async_write 0x0d6bfd0f +vmlinux end_buffer_read_sync 0x93703fe8 +vmlinux end_buffer_write_sync 0x4aae5176 +vmlinux end_page_writeback 0x477346f7 +vmlinux end_request 0x244d05f7 +vmlinux end_that_request_chunk 0x95b16ea6 +vmlinux end_that_request_first 0x861fe167 +vmlinux end_that_request_last 0xf8e66e3c +vmlinux eth_type_trans 0xac65520c +vmlinux ether_setup 0x91afd9f9 +vmlinux ethtool_op_get_link 0xba9b0972 +vmlinux ethtool_op_get_perm_addr 0x8e75833a +vmlinux ethtool_op_get_sg 0x702ba977 +vmlinux ethtool_op_get_tso 0x3baa80a2 +vmlinux ethtool_op_get_tx_csum 0x363c1c89 +vmlinux ethtool_op_get_ufo 0x7464c944 +vmlinux ethtool_op_set_sg 0xe06162d8 +vmlinux ethtool_op_set_tso 0xaac4d222 +vmlinux ethtool_op_set_tx_csum 0xc79d5a9d +vmlinux ethtool_op_set_tx_hw_csum 0x0071381e +vmlinux ethtool_op_set_ufo 0x74116a1e +vmlinux exit_fs 0xcd150ce5 +vmlinux f_setown 0x350d7aab +vmlinux fasync_helper 0x585aac66 +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x48a33411 +vmlinux fb_con_duit 0xd35d6740 +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0xfc905865 +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0x1096b120 +vmlinux fb_get_buffer_offset 0x618e5834 +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0xe77ec28d +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0x751c6f7a +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0x5013201f +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x6a7a5893 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0x75a3167a +vmlinux fb_set_suspend 0x8acc46cc +vmlinux fb_set_var 0x80fc1938 +vmlinux fb_show_logo 0xb0bc482f +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0xf7e7b778 +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fbcon_set_bitops 0x677555b3 +vmlinux fbcon_set_tileops 0x7f937abc +vmlinux fd_install 0xeb1e0340 +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0xaf2f10c6 +vmlinux file_fsync 0xf3beac23 +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0x95ef5427 +vmlinux filemap_fdatawait 0x0f40445c +vmlinux filemap_fdatawrite 0xa226cd7d +vmlinux filemap_flush 0x5682dc31 +vmlinux filemap_nopage 0x8eb40334 +vmlinux filemap_populate 0x68d4157e +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0xffac4a74 +vmlinux filp_open 0x5b3e0593 +vmlinux find_bus 0xb2a67473 +vmlinux find_font 0xf7584a9c +vmlinux find_get_page 0xacb916be +vmlinux find_inode_number 0xfb95e71a +vmlinux find_lock_page 0x1214ab8b +vmlinux find_or_create_page 0xc72f625f +vmlinux find_task_by_pid_type 0xcee75b06 +vmlinux find_trylock_page 0x5edd7141 +vmlinux find_vma 0x60794124 +vmlinux finish_wait 0x51493d94 +vmlinux firmware_register 0x5a5e76d3 +vmlinux firmware_unregister 0xdb9a2441 +vmlinux fixup_get_user_skip_1 0x6c911f35 +vmlinux fixup_get_user_skip_2 0xf5737934 +vmlinux fixup_put_user_skip_1 0x85bdbbce +vmlinux fixup_put_user_skip_2 0x1c5fddcf +vmlinux flock_lock_file_wait 0x68d8ac01 +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_all_caches 0x7e3ddcc0 +vmlinux flush_cache_all_local 0xa1cdce17 +vmlinux flush_data_cache_local 0x21c1455c +vmlinux flush_dcache_page 0x3a878f03 +vmlinux flush_kernel_dcache_page 0xe8500931 +vmlinux flush_kernel_dcache_range_asm 0x831f7f68 +vmlinux flush_kernel_icache_range_asm 0x307acde8 +vmlinux flush_old_exec 0x965f2cea +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x1c5e7c35 +vmlinux flush_workqueue 0x719aecaf +vmlinux follow_down 0x16594dc4 +vmlinux follow_up 0xad2d1865 +vmlinux force_sig 0x430e7fdd +vmlinux fput 0x82355d29 +vmlinux framebuffer_alloc 0x6aff0014 +vmlinux framebuffer_release 0x7b0fe9ae +vmlinux free_buffer_head 0xf09bd6b0 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0x978d07e7 +vmlinux free_pages 0x4302d0eb +vmlinux free_task 0x3a86b6c2 +vmlinux freeze_bdev 0xe08187d0 +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0x12a78304 +vmlinux g_make_token_header 0x00c52ef5 +vmlinux g_token_size 0xb5dea7ef +vmlinux g_verify_token_header 0xf8b2ff6e +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0x1c725e84 +vmlinux gen_replace_estimator 0x6c208b39 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic_block_bmap 0x498f8442 +vmlinux generic_commit_write 0xa666ed2a +vmlinux generic_cont_expand 0x719fec4d +vmlinux generic_delete_inode 0x9d68d36e +vmlinux generic_drop_inode 0xfe654976 +vmlinux generic_file_aio_read 0x47ca8ce1 +vmlinux generic_file_aio_write 0xead01b31 +vmlinux generic_file_aio_write_nolock 0x35951a76 +vmlinux generic_file_buffered_write 0x1d4f10f2 +vmlinux generic_file_direct_write 0xeec3d6b7 +vmlinux generic_file_llseek 0xbd400ea7 +vmlinux generic_file_mmap 0xa7fda42f +vmlinux generic_file_open 0xa242a1ab +vmlinux generic_file_read 0x8feff230 +vmlinux generic_file_readonly_mmap 0x0d377570 +vmlinux generic_file_readv 0xc4de2dfa +vmlinux generic_file_sendfile 0xbffb7cf0 +vmlinux generic_file_write 0x6ef14c42 +vmlinux generic_file_write_nolock 0xff6f152f +vmlinux generic_file_writev 0xf9898081 +vmlinux generic_fillattr 0x96abcc81 +vmlinux generic_getxattr 0xd270f5fe +vmlinux generic_ide_ioctl 0xde1c4274 +vmlinux generic_listxattr 0xb1e7ad36 +vmlinux generic_make_request 0x2ad78d29 +vmlinux generic_osync_inode 0xc1632012 +vmlinux generic_permission 0x95e79c31 +vmlinux generic_read_dir 0x9644a39e +vmlinux generic_readlink 0x8dea5130 +vmlinux generic_removexattr 0x4dbe47ed +vmlinux generic_ro_fops 0x3794d356 +vmlinux generic_setxattr 0x255155e6 +vmlinux generic_shutdown_super 0x30b8767b +vmlinux generic_unplug_device 0x92d13b04 +vmlinux generic_write_checks 0x80b36af3 +vmlinux genl_register_family 0x1eb04c3d +vmlinux genl_register_ops 0x1a99cc7a +vmlinux genl_sock 0x3ad8b7eb +vmlinux genl_unregister_family 0x1014e8fd +vmlinux genl_unregister_ops 0x85c00b99 +vmlinux get_bus 0xf5c0bc0c +vmlinux get_cpu_sysdev 0xb7b9b34a +vmlinux get_dcookie 0x66c7dbf6 +vmlinux get_default_font 0x093e3659 +vmlinux get_device 0xb97d44ac +vmlinux get_disk 0x96f8d942 +vmlinux get_driver 0x4cd1c7b1 +vmlinux get_empty_filp 0x8936fb11 +vmlinux get_fs_type 0xb38c8d60 +vmlinux get_io_context 0x5852008e +vmlinux get_jiffies_64 0x37e74642 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_pci_node_path 0xe9f9f708 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0xa6d1daf8 +vmlinux get_sb_nodev 0xd1f9c6e7 +vmlinux get_sb_pseudo 0x179babbe +vmlinux get_sb_single 0x53920d7c +vmlinux get_super 0x9b9306fb +vmlinux get_task_mm 0xb1a3ac53 +vmlinux get_unmapped_area 0x2c15464f +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0xbe6ab82c +vmlinux get_write_access 0xbcb29bd5 +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0xe06f8766 +vmlinux gnet_stats_copy_app 0x47b3c2cd +vmlinux gnet_stats_copy_basic 0x5e81ec5d +vmlinux gnet_stats_copy_queue 0x699a53cf +vmlinux gnet_stats_copy_rate_est 0x0d1ac2ab +vmlinux gnet_stats_finish_copy 0xcb9e527d +vmlinux gnet_stats_start_copy 0x7c47aee1 +vmlinux gnet_stats_start_copy_compat 0xc3ecd8f6 +vmlinux grab_cache_page_nowait 0x3d3ac334 +vmlinux groups_alloc 0x51cd47e2 +vmlinux groups_free 0x111bcb2c +vmlinux gsc_alloc_irq 0x9e11c47b +vmlinux gsc_claim_irq 0xcc794ffc +vmlinux gss_decrypt_xdr_buf 0xa0a811c9 +vmlinux gss_encrypt_xdr_buf 0xf6ec76fc +vmlinux gss_mech_get 0x792daf35 +vmlinux gss_mech_get_by_name 0x27d34902 +vmlinux gss_mech_get_by_pseudoflavor 0xf04171d5 +vmlinux gss_mech_put 0xa2c54429 +vmlinux gss_mech_register 0xefbd6832 +vmlinux gss_mech_unregister 0xa0374f69 +vmlinux gss_pseudoflavor_to_service 0xb09662b5 +vmlinux gss_service_to_auth_domain_name 0x60a7378b +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0xf320b7ab +vmlinux have_submounts 0x368efebd +vmlinux high_memory 0x8a7d1c31 +vmlinux hppa_dma_ops 0x5d44360b +vmlinux hwmon_device_register 0x03823216 +vmlinux hwmon_device_unregister 0xf3c4530e +vmlinux hwpath_to_device 0xbaef0cbf +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x121c8c34 +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_add_setting 0x5bc61c48 +vmlinux ide_build_dmatable 0x721da5ee +vmlinux ide_build_sglist 0xb60065f7 +vmlinux ide_bus_type 0x0091da34 +vmlinux ide_config_drive_speed 0xf2e6134a +vmlinux ide_destroy_dmatable 0x602d025f +vmlinux ide_dma_enable 0x22937ffc +vmlinux ide_dma_intr 0x80e50832 +vmlinux ide_dma_setup 0x51df9711 +vmlinux ide_dma_speed 0x40327639 +vmlinux ide_dma_start 0x92aef782 +vmlinux ide_dma_verbose 0x96a70dd6 +vmlinux ide_do_drive_cmd 0xe76238a3 +vmlinux ide_do_reset 0x1c4312bd +vmlinux ide_dump_status 0x75fda216 +vmlinux ide_end_drive_cmd 0x3422f62c +vmlinux ide_end_request 0x7a86919b +vmlinux ide_error 0xae1916cf +vmlinux ide_execute_command 0x8aebbf93 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0xffd952ea +vmlinux ide_get_error_location 0xefe1b35e +vmlinux ide_hwifs 0xb1cf3d4a +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0xbfcaf803 +vmlinux ide_init_drive_cmd 0x98df9958 +vmlinux ide_init_sg_cmd 0xae5d1db4 +vmlinux ide_lock 0xf1dced4c +vmlinux ide_map_sg 0xd297737f +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0xda110aba +vmlinux ide_pci_unregister_driver 0xfcf860cd +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0xcf49939b +vmlinux ide_register_hw 0x9bdb85f2 +vmlinux ide_register_hw_with_fixup 0x5070c25c +vmlinux ide_register_region 0x47fda079 +vmlinux ide_register_subdriver 0x48a0aa50 +vmlinux ide_set_handler 0x865063a1 +vmlinux ide_set_xfer_rate 0x0e8b6ea4 +vmlinux ide_setup_dma 0x9c5c3a25 +vmlinux ide_setup_pci_device 0xacfb7352 +vmlinux ide_setup_pci_devices 0x802a2e3f +vmlinux ide_setup_pci_noise 0x2744ae5d +vmlinux ide_spin_wait_hwgroup 0x80b5d886 +vmlinux ide_stall_queue 0xd03c8b0e +vmlinux ide_undecoded_slave 0x8cfbf851 +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0xbf28d084 +vmlinux ide_unregister_subdriver 0xeb01623b +vmlinux ide_use_dma 0x1a3eab05 +vmlinux ide_wait_not_busy 0x56806c2d +vmlinux ide_wait_stat 0x0a29aa0b +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0xdad53732 +vmlinux idr_find 0xf03b0e52 +vmlinux idr_get_new 0xb6c4e1ad +vmlinux idr_get_new_above 0xd09a6a3d +vmlinux idr_init 0xba95152a +vmlinux idr_pre_get 0xd4fe24f5 +vmlinux idr_remove 0xe64517b0 +vmlinux iget5_locked 0xdc4c7e23 +vmlinux iget_locked 0x8d79679b +vmlinux igrab 0x8faf8155 +vmlinux ilookup 0x0d82a030 +vmlinux ilookup5 0x7d2ed310 +vmlinux ilookup5_nowait 0xe17d643c +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0xc5d65d3a +vmlinux in_egroup_p 0xd8a2ab95 +vmlinux in_group_p 0xc3cf1128 +vmlinux inb 0x6671bac0 +vmlinux inet6_lookup 0x8f10ea69 +vmlinux inet6_lookup_listener 0x76c824b9 +vmlinux inet_accept 0x17e15226 +vmlinux inet_add_protocol 0x35cb5043 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0x222713dd +vmlinux inet_bind_bucket_create 0x34f6f317 +vmlinux inet_bind_hash 0x6b0fbcd2 +vmlinux inet_csk_accept 0x69492774 +vmlinux inet_csk_clear_xmit_timers 0x4dee9a01 +vmlinux inet_csk_clone 0x10d05879 +vmlinux inet_csk_delete_keepalive_timer 0xea31cd40 +vmlinux inet_csk_destroy_sock 0x8e0ed40d +vmlinux inet_csk_get_port 0x1d5bcbad +vmlinux inet_csk_init_xmit_timers 0xaf7d72cf +vmlinux inet_csk_listen_start 0xaffb0696 +vmlinux inet_csk_listen_stop 0x7ab47601 +vmlinux inet_csk_reqsk_queue_hash_add 0xe9e7d599 +vmlinux inet_csk_reqsk_queue_prune 0xc9d7bffa +vmlinux inet_csk_reset_keepalive_timer 0x5d88c91a +vmlinux inet_csk_route_req 0x2722d844 +vmlinux inet_csk_search_req 0x0fb7647e +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0xa7d8eba0 +vmlinux inet_dgram_connect 0xe81301c1 +vmlinux inet_dgram_ops 0x87b372ce +vmlinux inet_diag_register 0x91b89cea +vmlinux inet_diag_unregister 0xcdcba63d +vmlinux inet_getname 0x76684c4a +vmlinux inet_ioctl 0x9e78e18e +vmlinux inet_listen 0x3967d10a +vmlinux inet_listen_wlock 0x4e91cbe8 +vmlinux inet_put_port 0x21fd57d5 +vmlinux inet_register_protosw 0xc64540e2 +vmlinux inet_release 0x213b1f86 +vmlinux inet_select_addr 0x4b7bed32 +vmlinux inet_sendmsg 0xeb909219 +vmlinux inet_shutdown 0xa6656d30 +vmlinux inet_sk_rebuild_header 0x57ae093d +vmlinux inet_sock_destruct 0x7e26fa97 +vmlinux inet_stream_connect 0x7a65909a +vmlinux inet_stream_ops 0xeeb0f58a +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x5cc08906 +vmlinux inet_twsk_deschedule 0x560b87ee +vmlinux inet_twsk_schedule 0x79416477 +vmlinux inet_unregister_protosw 0x065a2961 +vmlinux inetdev_by_index 0xe6e8c781 +vmlinux init_buffer 0x3e863ac9 +vmlinux init_mm 0x2212ab6d +vmlinux init_rwsem 0x81a777f2 +vmlinux init_special_inode 0x4a64bd4c +vmlinux init_task 0x962611f0 +vmlinux init_timer 0x6c9087dd +vmlinux inl 0xd377477b +vmlinux inode_add_bytes 0x37d42a99 +vmlinux inode_change_ok 0xe5c82858 +vmlinux inode_get_bytes 0xeee5cede +vmlinux inode_init_once 0xb71335c9 +vmlinux inode_needs_sync 0x325f198b +vmlinux inode_set_bytes 0xa0ba4ffc +vmlinux inode_setattr 0xebf5a922 +vmlinux inode_sub_bytes 0xce776a83 +vmlinux inode_update_time 0x1f02e8a4 +vmlinux inotify_dentry_parent_queue_event 0xf622521c +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0xb4dd6599 +vmlinux inotify_inode_queue_event 0x1278e281 +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0x83597a49 +vmlinux input_allocate_device 0x014e43e6 +vmlinux input_class 0xa4982b3b +vmlinux input_close_device 0x90f37760 +vmlinux input_event 0x9d3836ce +vmlinux input_flush_device 0xc1a4cfe6 +vmlinux input_grab_device 0x5d162cc9 +vmlinux input_open_device 0xf06225b7 +vmlinux input_register_device 0xb0dfa41e +vmlinux input_register_handler 0x5d76b440 +vmlinux input_release_device 0xf14392a4 +vmlinux input_unregister_device 0x70adcd20 +vmlinux input_unregister_handler 0xe1b1deff +vmlinux insb 0x10902bf7 +vmlinux insert_resource 0xdc3992ac +vmlinux insl 0x73e0877a +vmlinux install_page 0x97b2cbd8 +vmlinux insw 0x69010b06 +vmlinux int_sqrt 0xb678366f +vmlinux int_to_scsilun 0xea10212a +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0x67c29584 +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0xf9b28bac +vmlinux interruptible_sleep_on_timeout 0xf51c639f +vmlinux invalidate_bdev 0x540e67d2 +vmlinux invalidate_inode_pages 0xf795fcb9 +vmlinux invalidate_inode_pages2 0xa4d7c62e +vmlinux invalidate_inode_pages2_range 0xcf57c310 +vmlinux invalidate_inodes 0x714b6cb9 +vmlinux invalidate_partition 0xf58d5bdd +vmlinux inw 0x493dc1ef +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0xb6d2f9df +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0xc5534d64 +vmlinux ioread16_rep 0x5857b225 +vmlinux ioread16be 0xf065f629 +vmlinux ioread32 0xe484e35f +vmlinux ioread32_rep 0x3f0546a8 +vmlinux ioread32be 0xfdb9b629 +vmlinux ioread8 0xf10de535 +vmlinux ioread8_rep 0xf441ac43 +vmlinux iounmap 0x5fb196d4 +vmlinux iov_shorten 0xc11d8093 +vmlinux iowrite16 0x8c183cbe +vmlinux iowrite16_rep 0x8cc79cab +vmlinux iowrite16be 0x69a0ca7d +vmlinux iowrite32 0x436c2179 +vmlinux iowrite32_rep 0xbfc177bc +vmlinux iowrite32be 0x6acb973d +vmlinux iowrite8 0x0727c4f3 +vmlinux iowrite8_rep 0xa4b94fea +vmlinux ip4_datagram_connect 0xc7cd9b6a +vmlinux ip_build_and_send_pkt 0xc31d7993 +vmlinux ip_cmsg_recv 0x0da9442a +vmlinux ip_ct_attach 0xd0505b9c +vmlinux ip_defrag 0xfc23afec +vmlinux ip_fragment 0xbd99782d +vmlinux ip_generic_getfrag 0xd22481b1 +vmlinux ip_getsockopt 0x5a37db30 +vmlinux ip_mc_dec_group 0xc5982a54 +vmlinux ip_mc_inc_group 0xc27cf200 +vmlinux ip_mc_join_group 0xe442e073 +vmlinux ip_queue_xmit 0x85ae8e18 +vmlinux ip_route_input 0x058722f0 +vmlinux ip_route_me_harder 0xe70b81be +vmlinux ip_route_output_flow 0xa03cbf7a +vmlinux ip_route_output_key 0x30581104 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0x434ccab0 +vmlinux ip_setsockopt 0xaab67b2d +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0xfd3c8035 +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0xf2f9788a +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0x44c3aeef +vmlinux irq_stat 0xc2dcf571 +vmlinux is_bad_inode 0x6b9254ac +vmlinux is_console_locked 0x944a564d +vmlinux isa_bridge 0x7b685870 +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux iunique 0xa190a72e +vmlinux iw_handler_get_spy 0x9a2801ae +vmlinux iw_handler_get_thrspy 0xbeaf654e +vmlinux iw_handler_set_spy 0xe9b7219a +vmlinux iw_handler_set_thrspy 0x68f98206 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x570646b4 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0x339269e3 +vmlinux kernel_recvmsg 0x38919473 +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0x1c4ba063 +vmlinux kernel_subsys 0x430ac64f +vmlinux kernel_thread 0x7e9ebb05 +vmlinux kfifo_alloc 0x8f9b86b2 +vmlinux kfifo_free 0x4719ba4e +vmlinux kfifo_init 0x4b9f3684 +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0x0bcabed3 +vmlinux kill_anon_super 0xc86e97c5 +vmlinux kill_block_super 0xa6039ff5 +vmlinux kill_fasync 0x25e5c075 +vmlinux kill_litter_super 0x652b08a6 +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xec10e63a +vmlinux klist_add_head 0x915acc1f +vmlinux klist_add_tail 0x89578b6b +vmlinux klist_del 0x84a1bc7c +vmlinux klist_init 0x9ea2eecb +vmlinux klist_iter_exit 0xb4d64e3c +vmlinux klist_iter_init 0x2cd3a4fb +vmlinux klist_iter_init_node 0xa3e837a8 +vmlinux klist_next 0xd5dd30ac +vmlinux klist_node_attached 0xba549831 +vmlinux klist_remove 0x99b82416 +vmlinux km_new_mapping 0x58f82e81 +vmlinux km_policy_notify 0x8df84be0 +vmlinux km_state_notify 0xd5db8772 +vmlinux km_waitq 0xef1a1668 +vmlinux kmem_cache_alloc 0x819e11d6 +vmlinux kmem_cache_create 0x35564826 +vmlinux kmem_cache_destroy 0x66ac6a6a +vmlinux kmem_cache_free 0x3613bb7a +vmlinux kmem_cache_name 0x2c215e72 +vmlinux kmem_cache_shrink 0xde488d37 +vmlinux kmem_cache_size 0xe2f7e393 +vmlinux kmem_find_general_cachep 0x8aeb508b +vmlinux kobject_add 0x8d2b3739 +vmlinux kobject_del 0xc706af48 +vmlinux kobject_get 0x78e08035 +vmlinux kobject_hotplug 0x6b89ef7a +vmlinux kobject_init 0x94b63e65 +vmlinux kobject_put 0xbbec4478 +vmlinux kobject_register 0x2bfcd528 +vmlinux kobject_set_name 0x6024c3a8 +vmlinux kobject_uevent 0xf401c061 +vmlinux kobject_uevent_atomic 0xb2109620 +vmlinux kobject_unregister 0x63767559 +vmlinux krb5_decrypt 0xbde26666 +vmlinux krb5_encrypt 0x3426da06 +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x907cceb0 +vmlinux kset_register 0x42b64b17 +vmlinux kset_unregister 0xe99b3f41 +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0xa5e86dbd +vmlinux kthread_create 0x2be9bee3 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0xde0ca9d6 +vmlinux kthread_stop_sem 0x873e4d72 +vmlinux kzalloc 0x1d10cdb2 +vmlinux laptop_mode 0x76d3cd60 +vmlinux lclear_user 0x57b8d504 +vmlinux lease_get_mtime 0x202b2d37 +vmlinux lease_modify 0xb564d56d +vmlinux linkwatch_fire_event 0xb199b56e +vmlinux ll_rw_block 0xe53a0fc4 +vmlinux load_nls 0xb0ace472 +vmlinux load_nls_default 0xe2c1fb22 +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_may_read 0xb5222e23 +vmlinux lock_may_write 0x717d7fef +vmlinux lock_rename 0xbfc5b9f2 +vmlinux lock_sock 0xd94c78de +vmlinux lockd_down 0xa7b91a7b +vmlinux lockd_up 0xf6933c48 +vmlinux locks_copy_lock 0x6f2b003e +vmlinux locks_init_lock 0xfeeccac8 +vmlinux locks_mandatory_area 0xe5bea8c5 +vmlinux locks_remove_posix 0xdd3fb9f4 +vmlinux lookup_create 0x3afdc6e1 +vmlinux lookup_hash 0x58a098ae +vmlinux lookup_instantiate_filp 0x54581c86 +vmlinux lookup_one_len 0xa2d4ae40 +vmlinux loopback_dev 0xdf03763a +vmlinux loops_per_jiffy 0xba497f13 +vmlinux lstrncpy_from_user 0x58d282f6 +vmlinux lstrnlen_user 0xd624bb77 +vmlinux make_8023_client 0xd4078c32 +vmlinux make_bad_inode 0xfa82f0e3 +vmlinux make_checksum 0xdbcadb66 +vmlinux malloc_sizes 0xa47da14e +vmlinux mapping_tagged 0x28acd3b2 +vmlinux mark_buffer_async_write 0xc134af8d +vmlinux mark_buffer_dirty 0x07aa997a +vmlinux mark_buffer_dirty_inode 0xb15014f4 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0xe76ca7c5 +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_mapnr 0x01139ffc +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0x45c943f2 +vmlinux may_umount_tree 0xf41d50dc +vmlinux mem_map 0x0f9fd45d +vmlinux memchr 0xdd27fa87 +vmlinux memcmp 0x71c90087 +vmlinux memcpy 0x2e60bace +vmlinux memcpy_fromio 0xfbbb764c +vmlinux memcpy_fromiovec 0x9fb3dd30 +vmlinux memcpy_fromiovecend 0x6e440b58 +vmlinux memcpy_toio 0xa1d60f0f +vmlinux memcpy_toiovec 0x9ceb163c +vmlinux memmove 0x99bb8806 +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xab53b0a8 +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0x1f7cc628 +vmlinux mempool_create_node 0xd3427f73 +vmlinux mempool_destroy 0xac54fc9f +vmlinux mempool_free 0x062aba95 +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x25ba121c +vmlinux memscan 0x4dec6038 +vmlinux memset 0x2bc95bd4 +vmlinux memset_io 0x6da41e98 +vmlinux misc_deregister 0x20a4564a +vmlinux misc_register 0xedd8b720 +vmlinux mmput 0x6e0bcee4 +vmlinux mnt_pin 0xb0e845a9 +vmlinux mnt_unpin 0x619ff1ba +vmlinux mntput_no_expire 0x95ad1974 +vmlinux mod_reg_security 0xe1a6255f +vmlinux mod_timer 0x56662b32 +vmlinux mod_unreg_security 0x6fd24c0e +vmlinux module_add_driver 0xb0385cf1 +vmlinux module_refcount 0x8018708e +vmlinux module_remove_driver 0x99ed51e1 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0x88bead2c +vmlinux mpage_readpages 0x09770d84 +vmlinux mpage_writepage 0xbffba316 +vmlinux mpage_writepages 0x500d12f6 +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux n_tty_ioctl 0xb8631a79 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x24888533 +vmlinux neigh_changeaddr 0x6009ddcc +vmlinux neigh_compat_output 0xa30acefd +vmlinux neigh_connected_output 0x881e69a6 +vmlinux neigh_create 0x574f78f2 +vmlinux neigh_delete 0xef278ec2 +vmlinux neigh_destroy 0x7707fc58 +vmlinux neigh_dump_info 0xb18dd5cf +vmlinux neigh_event_ns 0xacfd4cd0 +vmlinux neigh_for_each 0x6c813839 +vmlinux neigh_ifdown 0xe09ce83c +vmlinux neigh_lookup 0x5ea1a3b7 +vmlinux neigh_lookup_nodev 0x230a59ed +vmlinux neigh_parms_alloc 0xb747b72a +vmlinux neigh_parms_release 0x1ec00498 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0x29579122 +vmlinux neigh_seq_next 0x8e08d2db +vmlinux neigh_seq_start 0xbb729829 +vmlinux neigh_seq_stop 0x13113be2 +vmlinux neigh_sysctl_register 0x40df174a +vmlinux neigh_sysctl_unregister 0xdef0e9be +vmlinux neigh_table_clear 0x6c41ef42 +vmlinux neigh_table_init 0xdf59beaa +vmlinux neigh_update 0x1d9f156a +vmlinux neigh_update_hhs 0x3b2fe8e4 +vmlinux neightbl_dump_info 0x3b6c3748 +vmlinux neightbl_set 0x3cbcd16b +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0x8d80262a +vmlinux netdev_features_change 0x74618636 +vmlinux netdev_rx_csum_fault 0x64468aa3 +vmlinux netdev_set_master 0xb258139b +vmlinux netdev_state_change 0xa13be955 +vmlinux netif_carrier_off 0x83f22ac6 +vmlinux netif_carrier_on 0x5b82f131 +vmlinux netif_receive_skb 0x43f6d2ab +vmlinux netif_rx 0x1f06bfd7 +vmlinux netif_rx_ni 0x383a24bc +vmlinux netlink_ack 0xec2a5ce8 +vmlinux netlink_broadcast 0x5972fc8a +vmlinux netlink_dump_start 0x238f3b2c +vmlinux netlink_kernel_create 0x1b8e6c32 +vmlinux netlink_queue_skip 0x34e0add0 +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0x0b46eabb +vmlinux netlink_set_err 0x1d30bbd1 +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0x21be30ae +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x06644a18 +vmlinux netpoll_parse_options 0x485732dc +vmlinux netpoll_poll 0xa0273120 +vmlinux netpoll_queue 0x7c3d936f +vmlinux netpoll_send_udp 0x3e92851b +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0x6a4b0f96 +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0xa99f51fe +vmlinux next_thread 0xc5ae275e +vmlinux nf_ct_attach 0x2198ed96 +vmlinux nf_getsockopt 0xf649303e +vmlinux nf_hook_slow 0x3e9444e9 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0xdda0e2e4 +vmlinux nf_log_register 0xec024324 +vmlinux nf_log_unregister_logger 0xeccb6ca8 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0xbe775c7b +vmlinux nf_register_queue_handler 0x3a6b43e7 +vmlinux nf_register_queue_rerouter 0x4e55cbc7 +vmlinux nf_register_sockopt 0x1fe3a064 +vmlinux nf_reinject 0xd4383c72 +vmlinux nf_setsockopt 0x82bd4194 +vmlinux nf_unregister_hook 0x80a24c0b +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0x3e6205c6 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x0b373dd6 +vmlinux nfs_debug 0xaf5bf6ef +vmlinux nfsd_debug 0xbf9d1b96 +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0xbe0e5118 +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0xdb75bc1a +vmlinux nla_reserve 0xd396e7c8 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0x6cdc5c6b +vmlinux nla_validate 0x2cc98162 +vmlinux nlm_debug 0x53445f68 +vmlinux nlmclnt_proc 0xda9b25be +vmlinux nlmsvc_ops 0xfd5878e5 +vmlinux no_llseek 0x03fcd634 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x23acb962 +vmlinux nobh_prepare_write 0xc21bbb67 +vmlinux nobh_truncate_page 0xce6efcff +vmlinux nobh_writepage 0x46fbcb19 +vmlinux node_online_map 0x5a8f421e +vmlinux node_possible_map 0xca0d27a1 +vmlinux nonseekable_open 0xfaf354fb +vmlinux noop_qdisc 0xf89d3dc7 +vmlinux noop_qdisc_ops 0x6635a1e5 +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0xb667783d +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0xe6616409 +vmlinux open_by_devnum 0xba287b7a +vmlinux open_exec 0x4e547be6 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux outb 0xe2bbd43a +vmlinux outl 0x22c26a55 +vmlinux outsb 0x12ea337e +vmlinux outsl 0x24bd930a +vmlinux outsw 0x533903d8 +vmlinux outw 0x8c66ce6b +vmlinux p80211_resume 0xdd534192 +vmlinux p80211_suspend 0x182acd35 +vmlinux p80211netdev_hwremoved 0x0d09dafb +vmlinux p80211netdev_rx 0xf34ee4cf +vmlinux p80211skb_free 0x0db9a912 +vmlinux p80211skb_rxmeta_attach 0x3341a7b8 +vmlinux page_follow_link_light 0x6241a7b2 +vmlinux page_put_link 0x2a06ccc3 +vmlinux page_readlink 0x88baf760 +vmlinux page_symlink 0x70159774 +vmlinux page_symlink_inode_operations 0x4d239698 +vmlinux pagevec_lookup_tag 0x0382d57d +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux parisc_bus_is_phys 0xdd0590f9 +vmlinux path_lookup 0x420307de +vmlinux path_release 0x627218f3 +vmlinux path_walk 0xec561604 +vmlinux pci_add_new_bus 0x12ee74ad +vmlinux pci_assign_resource 0xce67acab +vmlinux pci_block_user_cfg_access 0x82203609 +vmlinux pci_bus_add_device 0x334ab590 +vmlinux pci_bus_add_devices 0x9afdc791 +vmlinux pci_bus_alloc_resource 0x88e13da6 +vmlinux pci_bus_assign_resources 0x0786902c +vmlinux pci_bus_find_capability 0x8cf4d6e9 +vmlinux pci_bus_max_busnr 0xb35722f1 +vmlinux pci_bus_read_config_byte 0x8ec6d26a +vmlinux pci_bus_read_config_dword 0xef44f0f8 +vmlinux pci_bus_read_config_word 0x798a3d5b +vmlinux pci_bus_size_bridges 0xc2d72fd6 +vmlinux pci_bus_type 0x120763f7 +vmlinux pci_bus_write_config_byte 0x49f04cdd +vmlinux pci_bus_write_config_dword 0x230eea8a +vmlinux pci_bus_write_config_word 0x87aa19af +vmlinux pci_choose_state 0x009aeef5 +vmlinux pci_clear_mwi 0xb6e70364 +vmlinux pci_create_bus 0xaec91b55 +vmlinux pci_dev_driver 0x3d1eed87 +vmlinux pci_dev_get 0x5dff6e0c +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0xc47fb19e +vmlinux pci_disable_device 0x68c73fab +vmlinux pci_do_scan_bus 0x33d08ad9 +vmlinux pci_enable_bridges 0x93cb8b4d +vmlinux pci_enable_device 0xf2ae3d8c +vmlinux pci_enable_device_bars 0x4ab78b38 +vmlinux pci_enable_wake 0x13a4fd90 +vmlinux pci_find_bus 0xa5e07175 +vmlinux pci_find_capability 0x290fcfe1 +vmlinux pci_find_device 0x20b4c48e +vmlinux pci_find_device_reverse 0x570f26db +vmlinux pci_find_next_bus 0x5d35feba +vmlinux pci_find_next_capability 0x8e37497a +vmlinux pci_find_parent_resource 0x9b27a643 +vmlinux pci_find_slot 0xaae02883 +vmlinux pci_fixup_device 0x8b51aa02 +vmlinux pci_get_class 0xb825a7c5 +vmlinux pci_get_device 0x5e832d0a +vmlinux pci_get_slot 0x1f14d614 +vmlinux pci_get_subsys 0xa0cd89b9 +vmlinux pci_intx 0xd5d5916f +vmlinux pci_iomap 0xc33af57b +vmlinux pci_iounmap 0xc1e62d6a +vmlinux pci_map_rom 0x2884739c +vmlinux pci_map_rom_copy 0x127fc077 +vmlinux pci_match_device 0x4d0e1e24 +vmlinux pci_match_id 0x091fd0e3 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0x1ef89685 +vmlinux pci_proc_attach_device 0xed9cf73c +vmlinux pci_proc_detach_bus 0x32cc7b29 +vmlinux pci_release_region 0x45311000 +vmlinux pci_release_regions 0xaca7a67c +vmlinux pci_remove_behind_bridge 0x0503f599 +vmlinux pci_remove_bus 0xd4bda3b8 +vmlinux pci_remove_bus_device 0x12feec39 +vmlinux pci_remove_device_safe 0x1a463586 +vmlinux pci_remove_rom 0xf68aae02 +vmlinux pci_request_region 0x0fe12e6a +vmlinux pci_request_regions 0x5ed20d09 +vmlinux pci_restore_bars 0xe3893389 +vmlinux pci_restore_state 0x066b2ce2 +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0xbe4ee8d4 +vmlinux pci_scan_bridge 0x5aab3993 +vmlinux pci_scan_bus_parented 0xb9881f95 +vmlinux pci_scan_child_bus 0x87937af7 +vmlinux pci_scan_single_device 0x2c16bab8 +vmlinux pci_scan_slot 0x5761e6a5 +vmlinux pci_set_consistent_dma_mask 0x47f344e2 +vmlinux pci_set_dma_mask 0x130cd8e5 +vmlinux pci_set_master 0xdf2bf1e4 +vmlinux pci_set_mwi 0x3fac37c4 +vmlinux pci_set_power_state 0xb0022100 +vmlinux pci_setup_cardbus 0xf9da597f +vmlinux pci_unblock_user_cfg_access 0x8a3e4800 +vmlinux pci_unmap_rom 0xaf02cf99 +vmlinux pci_unregister_driver 0x873af07f +vmlinux pci_walk_bus 0xdfd18099 +vmlinux pcibios_bus_to_resource 0xb231b82a +vmlinux pcibios_resource_to_bus 0xedbc8b04 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pciserial_init_ports 0x7ee44466 +vmlinux pciserial_remove_ports 0xbb715e8c +vmlinux pciserial_resume_ports 0x94f2375e +vmlinux pciserial_suspend_ports 0x80c2990b +vmlinux pdc_add_valid 0xcf96b65b +vmlinux pdc_get_initiator 0x53622bb3 +vmlinux pdc_iodc_read 0xab4e4345 +vmlinux pdc_lan_station_id 0xe7765108 +vmlinux pdc_stable_get_size 0xce67b3ce +vmlinux pdc_stable_initialize 0x90918311 +vmlinux pdc_stable_read 0x99049ca2 +vmlinux pdc_stable_verify_contents 0x1228329d +vmlinux pdc_stable_write 0x0423a8ab +vmlinux pdc_sti_call 0xf2b4938e +vmlinux pdc_tod_read 0x26f7f79a +vmlinux pdc_tod_set 0x6ae85394 +vmlinux per_cpu__kstat 0x0a56c7f3 +vmlinux per_cpu__softnet_data 0xcd971bde +vmlinux permission 0xff5475a3 +vmlinux pfifo_qdisc_ops 0x4eebe2bc +vmlinux platform_add_devices 0x493ff17c +vmlinux platform_bus 0x19d00fa7 +vmlinux platform_bus_type 0xb52bc228 +vmlinux platform_device_add 0x9f98aeb6 +vmlinux platform_device_add_data 0x34d6e9b5 +vmlinux platform_device_add_resources 0xdb2c8c06 +vmlinux platform_device_alloc 0xbe28af47 +vmlinux platform_device_put 0x3ad73436 +vmlinux platform_device_register 0x7a22ff5e +vmlinux platform_device_register_simple 0x06797643 +vmlinux platform_device_unregister 0x52b4cec0 +vmlinux platform_driver_register 0xa03201e5 +vmlinux platform_driver_unregister 0xcc52d335 +vmlinux platform_get_irq 0x4ec9879c +vmlinux platform_get_irq_byname 0x51a624bd +vmlinux platform_get_resource 0x8c6adfb4 +vmlinux platform_get_resource_byname 0xbae879c0 +vmlinux pm_power_off 0x60a32ea9 +vmlinux pneigh_enqueue 0x240b72bf +vmlinux pneigh_lookup 0x7fa55685 +vmlinux poll_freewait 0x375c5177 +vmlinux poll_initwait 0x557e19f6 +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0xd32e52c7 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x640a7078 +vmlinux posix_acl_equiv_mode 0xd8282ff0 +vmlinux posix_acl_from_mode 0x3adc15b9 +vmlinux posix_acl_from_xattr 0x85ac7f10 +vmlinux posix_acl_permission 0x5798aa42 +vmlinux posix_acl_to_xattr 0x1ecb9943 +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0x494a6f01 +vmlinux posix_lock_file 0x41ad0a26 +vmlinux posix_lock_file_wait 0x7ef838f8 +vmlinux posix_locks_deadlock 0xc434a44b +vmlinux posix_test_lock 0xf697b01e +vmlinux posix_timer_event 0x3fd11e38 +vmlinux posix_unblock_lock 0x6a382042 +vmlinux pre_task_out_intr 0xca009eda +vmlinux prepare_binprm 0xd5e9c1e0 +vmlinux prepare_to_wait 0x8085c7b1 +vmlinux prepare_to_wait_exclusive 0xadb792c2 +vmlinux print_hexl 0x4c2f4b6d +vmlinux print_pa_hwpath 0xd2cbb360 +vmlinux print_pci_hwpath 0x3acbd109 +vmlinux printk 0xdd132261 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0xa5af523d +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0x5736ab6c +vmlinux proc_dointvec 0x797be1ed +vmlinux proc_dointvec_jiffies 0xba5cec08 +vmlinux proc_dointvec_minmax 0x8e386767 +vmlinux proc_dointvec_ms_jiffies 0x9db2116f +vmlinux proc_dointvec_userhz_jiffies 0xe8a40a2c +vmlinux proc_dostring 0x07f11da0 +vmlinux proc_doulongvec_minmax 0xc80b1788 +vmlinux proc_doulongvec_ms_jiffies_minmax 0x83f13ce4 +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0x06c8c960 +vmlinux proc_net 0x4e872163 +vmlinux proc_net_netfilter 0xb59ea904 +vmlinux proc_net_stat 0x13cd72b8 +vmlinux proc_root 0x8da4119c +vmlinux proc_root_driver 0xaaafe790 +vmlinux proc_root_fs 0x1f508bdf +vmlinux proc_symlink 0x394edcfd +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux profile_pc 0xc64b0f4a +vmlinux proto_register 0x71eaee00 +vmlinux proto_unregister 0xf3e6a40f +vmlinux ps2_cmd_aborted 0xb1ec756f +vmlinux ps2_command 0xb9c4cb48 +vmlinux ps2_drain 0x69bdb5a8 +vmlinux ps2_handle_ack 0x40709d85 +vmlinux ps2_handle_response 0x5dd7aeda +vmlinux ps2_init 0x18cfb2de +vmlinux ps2_schedule_command 0xed44deef +vmlinux ps2_sendbyte 0x94d810b0 +vmlinux pskb_copy 0x0b431eee +vmlinux pskb_expand_head 0xe74e9619 +vmlinux pskb_put 0x608c3ebe +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0xb286266a +vmlinux put_cmsg 0xf39bf4d9 +vmlinux put_device 0x8b677153 +vmlinux put_disk 0xbbf22871 +vmlinux put_driver 0x8727e292 +vmlinux put_files_struct 0x123eefab +vmlinux put_io_context 0x75b4fe07 +vmlinux put_page 0x9ec60c14 +vmlinux put_rpccred 0xe2813431 +vmlinux put_tty_driver 0x6dfeffc8 +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0x055b0216 +vmlinux qdisc_create_dflt 0x51f501aa +vmlinux qdisc_destroy 0xf4a2ebc0 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0x860be290 +vmlinux qdisc_lookup 0xd9a3f0b4 +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0x386c1db3 +vmlinux qdisc_restart 0x555574ec +vmlinux qdisc_unlock_tree 0x0c1fb9af +vmlinux queue_delayed_work 0x8b5271bc +vmlinux queue_work 0x289e6c17 +vmlinux qword_add 0xedcf6be4 +vmlinux qword_addhex 0xc8e96dea +vmlinux qword_get 0xe97f4ce5 +vmlinux radix_tree_delete 0xa34bdcd0 +vmlinux radix_tree_gang_lookup 0x883e226b +vmlinux radix_tree_gang_lookup_tag 0xcc4e9047 +vmlinux radix_tree_insert 0x7dc88ba1 +vmlinux radix_tree_lookup 0x5c2da0c3 +vmlinux radix_tree_lookup_slot 0x6bbbfb36 +vmlinux radix_tree_tag_clear 0x374a51dd +vmlinux radix_tree_tag_set 0x7e92ceb7 +vmlinux radix_tree_tagged 0xdacd0c37 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_bytes_from_xdr_buf 0x29d3d173 +vmlinux read_cache_page 0x3005a889 +vmlinux read_cache_pages 0xe34df993 +vmlinux read_dev_sector 0x517330bc +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0xcc880b05 +vmlinux redraw_screen 0xfcdfb49d +vmlinux register_binfmt 0x995848ca +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0x61fb9fbb +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x13ddede4 +vmlinux register_exec_domain 0x8a30b0f2 +vmlinux register_filesystem 0xaf0b408d +vmlinux register_firmware 0x711cccd3 +vmlinux register_framebuffer 0x203a2d90 +vmlinux register_gifconf 0xfcfd1ba8 +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0x09c419ed +vmlinux register_netdevice 0x907b544b +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x5a75d9f4 +vmlinux register_parisc_driver 0xf64bd9fc +vmlinux register_posix_clock 0xb07b9a02 +vmlinux register_qdisc 0xb55ca779 +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0x47468d7f +vmlinux register_sysctl_table 0x75e524cb +vmlinux register_sysrq_key 0x96b77905 +vmlinux register_tcf_proto_ops 0x4078fa1a +vmlinux register_timer_hook 0x2c7d132c +vmlinux register_wlandev 0xf19a18f5 +vmlinux registered_fb 0x2ebadbe4 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x33934162 +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x374928ff +vmlinux remap_pfn_range 0xf3b8634f +vmlinux remote_llseek 0xc0b39a96 +vmlinux remove_arg_zero 0x717cf776 +vmlinux remove_inode_hash 0x00dcf761 +vmlinux remove_proc_entry 0xe01c687a +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0x8cf2fbe3 +vmlinux remove_wait_queue 0x36e47222 +vmlinux reqsk_queue_alloc 0xa28512c5 +vmlinux reqsk_queue_destroy 0xfc67cf84 +vmlinux request_firmware 0xe45b0143 +vmlinux request_firmware_nowait 0x1e6dd0b1 +vmlinux request_irq 0x8e45dfca +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux rpc_bind_new_program 0x7d31674e +vmlinux rpc_call_async 0x83c64a7d +vmlinux rpc_call_setup 0x8981ca5d +vmlinux rpc_call_sync 0xfed67d36 +vmlinux rpc_clnt_sigmask 0x0a15be0b +vmlinux rpc_clnt_sigunmask 0xc553b537 +vmlinux rpc_clone_client 0x2a048b4b +vmlinux rpc_create_client 0xd0714ceb +vmlinux rpc_debug 0x31a89d59 +vmlinux rpc_delay 0xadf5f228 +vmlinux rpc_destroy_client 0xa019e9ab +vmlinux rpc_execute 0xabd28398 +vmlinux rpc_init_task 0x105d2c4e +vmlinux rpc_init_wait_queue 0x9b8a689d +vmlinux rpc_killall_tasks 0xfe98a714 +vmlinux rpc_max_payload 0x09fb0ae7 +vmlinux rpc_mkpipe 0x015dccbb +vmlinux rpc_new_child 0x6a60bebe +vmlinux rpc_new_client 0x8e43e1c7 +vmlinux rpc_new_task 0x36c42a9f +vmlinux rpc_proc_register 0x12df11ef +vmlinux rpc_proc_unregister 0x5bd26000 +vmlinux rpc_queue_upcall 0xec30f035 +vmlinux rpc_release_client 0x16df11b9 +vmlinux rpc_release_task 0x7a8b87e5 +vmlinux rpc_restart_call 0x617957c7 +vmlinux rpc_run_child 0xf02c4d04 +vmlinux rpc_setbufsize 0x1938ebad +vmlinux rpc_shutdown_client 0x1ebde538 +vmlinux rpc_sleep_on 0x03882ce2 +vmlinux rpc_unlink 0x9296bec2 +vmlinux rpc_wake_up 0x49e5e765 +vmlinux rpc_wake_up_next 0x60d43014 +vmlinux rpc_wake_up_status 0x4e43d6e5 +vmlinux rpc_wake_up_task 0x5ea37cc0 +vmlinux rpcauth_create 0x9a5fc3b4 +vmlinux rpcauth_free_credcache 0x99b5bcf9 +vmlinux rpcauth_init_credcache 0xe4eeb96b +vmlinux rpcauth_lookup_credcache 0xf11abce0 +vmlinux rpcauth_lookupcred 0x3d975945 +vmlinux rpcauth_register 0x87700413 +vmlinux rpcauth_unregister 0xad97183b +vmlinux rpciod_down 0xbabf0f35 +vmlinux rpciod_up 0x375492a4 +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x85902f79 +vmlinux rtnetlink_links 0xaf31ee58 +vmlinux rtnetlink_put_metrics 0x2aa72d6a +vmlinux rtnl 0xac6bac1c +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0x99a1cba9 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux sb_min_blocksize 0x49b4eafd +vmlinux sb_set_blocksize 0x21561123 +vmlinux sched_setscheduler 0xb9ef4e83 +vmlinux schedule 0x01000e51 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0xa2035fa3 +vmlinux scm_fp_dup 0x6dcb3c3e +vmlinux scnprintf 0x28f35813 +vmlinux scsi_add_device 0xd67b7063 +vmlinux scsi_add_host 0x5be3733f +vmlinux scsi_adjust_queue_depth 0x09a8dafc +vmlinux scsi_allocate_request 0x6450a241 +vmlinux scsi_bios_ptable 0xcb39c06a +vmlinux scsi_block_requests 0x0b857b0f +vmlinux scsi_block_when_processing_errors 0xcc75d7a7 +vmlinux scsi_bus_type 0x08319746 +vmlinux scsi_calculate_bounce_limit 0xcf5003b8 +vmlinux scsi_cmd_ioctl 0x0143b72d +vmlinux scsi_command_normalize_sense 0xf8566b0f +vmlinux scsi_command_size 0x9b05ea5c +vmlinux scsi_device_cancel 0xe9ecd1fd +vmlinux scsi_device_get 0xadee2e3f +vmlinux scsi_device_lookup 0x0636bd1b +vmlinux scsi_device_lookup_by_target 0x6b2f7db0 +vmlinux scsi_device_put 0xae117f17 +vmlinux scsi_device_quiesce 0x2aa5fc63 +vmlinux scsi_device_resume 0x02a0ab18 +vmlinux scsi_device_set_state 0x125ab84c +vmlinux scsi_device_types 0x6df713c9 +vmlinux scsi_do_req 0x843bd0e6 +vmlinux scsi_execute 0xafc675d3 +vmlinux scsi_execute_req 0x9052a79b +vmlinux scsi_extd_sense_format 0x11267875 +vmlinux scsi_finish_command 0x4b259d89 +vmlinux scsi_flush_work 0x3c2c842e +vmlinux scsi_free_host_dev 0x876800ef +vmlinux scsi_get_command 0xb3ae2010 +vmlinux scsi_get_host_dev 0xa9a1a3fd +vmlinux scsi_get_sense_info_fld 0x796fc5ce +vmlinux scsi_host_alloc 0xcf2f9ac8 +vmlinux scsi_host_get 0xefe982f2 +vmlinux scsi_host_lookup 0x6a4367c5 +vmlinux scsi_host_put 0x832156ea +vmlinux scsi_host_set_state 0x744878b5 +vmlinux scsi_internal_device_block 0x66bb968b +vmlinux scsi_internal_device_unblock 0xdccc8dfe +vmlinux scsi_io_completion 0x4f5b5ae4 +vmlinux scsi_ioctl 0xa10f10ff +vmlinux scsi_ioctl_send_command 0x7e26b03d +vmlinux scsi_is_host_device 0xf83486a2 +vmlinux scsi_is_sdev_device 0xf51154ef +vmlinux scsi_is_target_device 0x41bfb6c2 +vmlinux scsi_mode_sense 0x2b68952e +vmlinux scsi_nonblockable_ioctl 0x42f3a0ce +vmlinux scsi_normalize_sense 0x0c65e73c +vmlinux scsi_partsize 0x4afe9a77 +vmlinux scsi_print_command 0x09e7dbf3 +vmlinux scsi_print_msg 0x67f88938 +vmlinux scsi_print_req_sense 0x5e996264 +vmlinux scsi_print_sense 0xd007f7b2 +vmlinux scsi_print_sense_hdr 0xca5dbc50 +vmlinux scsi_print_status 0x9cfd56c5 +vmlinux scsi_put_command 0xa224b604 +vmlinux scsi_queue_work 0x5c61a422 +vmlinux scsi_register 0x23dac964 +vmlinux scsi_register_driver 0x31b695bc +vmlinux scsi_register_interface 0x560e6e4c +vmlinux scsi_release_request 0x40ace65e +vmlinux scsi_remove_device 0xd4e7c9e5 +vmlinux scsi_remove_host 0xd7302e78 +vmlinux scsi_remove_target 0xd6a09bfd +vmlinux scsi_report_bus_reset 0xe5ab3f60 +vmlinux scsi_report_device_reset 0x60571e28 +vmlinux scsi_request_normalize_sense 0xbbe36365 +vmlinux scsi_rescan_device 0x121e96d1 +vmlinux scsi_reset_provider 0x5868fbc7 +vmlinux scsi_scan_host 0xb93a8b23 +vmlinux scsi_scan_target 0xcb7d0507 +vmlinux scsi_sense_desc_find 0x2b0ba2b0 +vmlinux scsi_sense_key_string 0x96cd2b04 +vmlinux scsi_set_medium_removal 0x71cb5145 +vmlinux scsi_setup_blk_pc_cmnd 0xa98c2c55 +vmlinux scsi_target_block 0x603665eb +vmlinux scsi_target_quiesce 0x8bd0a6a5 +vmlinux scsi_target_resume 0x2aead7f3 +vmlinux scsi_target_unblock 0x6eec2543 +vmlinux scsi_test_unit_ready 0x47a04810 +vmlinux scsi_track_queue_full 0xb9f2a24c +vmlinux scsi_unblock_requests 0x172b3d47 +vmlinux scsi_unregister 0x1ff249b5 +vmlinux scsicam_bios_param 0xf498094a +vmlinux search_binary_handler 0x5f9fa6d6 +vmlinux secpath_dup 0x026d8ce3 +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0xc0e3b708 +vmlinux securityfs_create_dir 0x1ce24591 +vmlinux securityfs_create_file 0x6e813c52 +vmlinux securityfs_remove 0xf3b202a9 +vmlinux send_sig 0x4baab989 +vmlinux send_sig_info 0x3938a2b0 +vmlinux seq_escape 0xa1db336e +vmlinux seq_lseek 0x3e240962 +vmlinux seq_open 0xa799bd14 +vmlinux seq_path 0xbe563e5a +vmlinux seq_printf 0xfb0296b0 +vmlinux seq_putc 0x00f91c75 +vmlinux seq_puts 0x62db7fcb +vmlinux seq_read 0xb6f8cdaf +vmlinux seq_release 0xd2fc1eb4 +vmlinux seq_release_private 0x3f2bd9fa +vmlinux serial8250_register_port 0xbd75b01c +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0x3670f90c +vmlinux serio_interrupt 0x3144344d +vmlinux serio_open 0x4615c159 +vmlinux serio_reconnect 0xf7eea472 +vmlinux serio_rescan 0x14255c9a +vmlinux serio_unregister_child_port 0x3aff8fd0 +vmlinux serio_unregister_driver 0x837b3adf +vmlinux serio_unregister_port 0xfb35e2c1 +vmlinux set_anon_super 0x66b0fe4d +vmlinux set_bh_page 0xb4078cf6 +vmlinux set_binfmt 0x3da068f9 +vmlinux set_blocksize 0xc4f10076 +vmlinux set_current_groups 0x72fbae28 +vmlinux set_device_ro 0xa54d22b8 +vmlinux set_disk_ro 0x71298f27 +vmlinux set_page_dirty 0xb4e5bc76 +vmlinux set_page_dirty_lock 0x591557a0 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0xe86ea54c +vmlinux setlease 0x1ab1934a +vmlinux setup_arg_pages 0x955f078e +vmlinux sget 0xd011e65e +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0x02176317 +vmlinux shrink_dcache_sb 0x2941660f +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x8ed6f0ed +vmlinux simple_attr_close 0x43bcd563 +vmlinux simple_attr_open 0xfeb87f6b +vmlinux simple_attr_read 0x5880e8c1 +vmlinux simple_attr_write 0xc03223d1 +vmlinux simple_commit_write 0x23ad357d +vmlinux simple_dir_inode_operations 0x473be76d +vmlinux simple_dir_operations 0xbe8124ee +vmlinux simple_empty 0x9c9a5795 +vmlinux simple_fill_super 0xd0b43d28 +vmlinux simple_getattr 0xc975ced6 +vmlinux simple_link 0x42a36642 +vmlinux simple_lookup 0x03e589a7 +vmlinux simple_pin_fs 0xd776d24a +vmlinux simple_prepare_write 0xffc2b3db +vmlinux simple_read_from_buffer 0x528c709d +vmlinux simple_readpage 0x055dacd2 +vmlinux simple_release_fs 0xdebe827e +vmlinux simple_rename 0xca3dcea4 +vmlinux simple_rmdir 0x34e8803f +vmlinux simple_statfs 0x376058ea +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0xfc71a78f +vmlinux simple_transaction_get 0x3e8168af +vmlinux simple_transaction_read 0x006bf5fa +vmlinux simple_transaction_release 0xb3c5604e +vmlinux simple_unlink 0x426e7608 +vmlinux single_open 0xc8815f81 +vmlinux single_release 0x852aa5b2 +vmlinux sk_alloc 0x86dedf93 +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0xd13d0730 +vmlinux sk_common_release 0xf7aa11c7 +vmlinux sk_free 0xc24988bb +vmlinux sk_reset_timer 0x297605b6 +vmlinux sk_run_filter 0xfdba1558 +vmlinux sk_send_sigurg 0x7e3ed02b +vmlinux sk_stop_timer 0xbfe09649 +vmlinux sk_stream_error 0x8f394b3a +vmlinux sk_stream_kill_queues 0xd997165c +vmlinux sk_stream_mem_schedule 0xfca71944 +vmlinux sk_stream_rfree 0xcee2b498 +vmlinux sk_stream_wait_close 0x959a9bcc +vmlinux sk_stream_wait_connect 0x4400f415 +vmlinux sk_stream_wait_memory 0x259785d8 +vmlinux sk_stream_write_space 0x31e47be0 +vmlinux sk_wait_data 0x16930237 +vmlinux skb_abort_seq_read 0x214d64c9 +vmlinux skb_append 0xa55878c9 +vmlinux skb_append_datato_frags 0x6b35b385 +vmlinux skb_checksum 0xdc72ad10 +vmlinux skb_checksum_help 0x845e0af7 +vmlinux skb_clone 0x248e0f51 +vmlinux skb_clone_fraglist 0x0533a7ce +vmlinux skb_copy 0x2b3de27e +vmlinux skb_copy_and_csum_bits 0x4b6d47fb +vmlinux skb_copy_and_csum_datagram_iovec 0xd86ac178 +vmlinux skb_copy_and_csum_dev 0xada034d9 +vmlinux skb_copy_bits 0x8e5796ab +vmlinux skb_copy_datagram_iovec 0x19f8de22 +vmlinux skb_copy_expand 0x69651678 +vmlinux skb_cow_data 0x189168f3 +vmlinux skb_dequeue 0x85e7785c +vmlinux skb_dequeue_tail 0xaf22659b +vmlinux skb_find_text 0xeaa98be9 +vmlinux skb_free_datagram 0x2faa2605 +vmlinux skb_icv_walk 0xf6a5ae4a +vmlinux skb_insert 0x73f9087c +vmlinux skb_make_writable 0x905bc039 +vmlinux skb_over_panic 0xb224e8d6 +vmlinux skb_pad 0xde5fcd2c +vmlinux skb_prepare_seq_read 0xa974a15e +vmlinux skb_queue_head 0xf28e66a8 +vmlinux skb_queue_purge 0x220af086 +vmlinux skb_queue_tail 0xbd06e3fa +vmlinux skb_realloc_headroom 0xfd2ca36c +vmlinux skb_recv_datagram 0x71fd9b77 +vmlinux skb_seq_read 0x3b8973e8 +vmlinux skb_split 0x1d0cf1dd +vmlinux skb_store_bits 0x67ba9066 +vmlinux skb_to_sgvec 0x5f8bd4a4 +vmlinux skb_under_panic 0x1f7228fc +vmlinux skb_unlink 0x7c441099 +vmlinux sleep_on 0xa07a8d22 +vmlinux sleep_on_timeout 0x092b007a +vmlinux snprintf 0x025da070 +vmlinux sock_alloc_send_skb 0xe4820a02 +vmlinux sock_common_getsockopt 0xad0b96e8 +vmlinux sock_common_recvmsg 0x56e5f9cc +vmlinux sock_common_setsockopt 0x19b36777 +vmlinux sock_create 0xc103df8d +vmlinux sock_create_kern 0x6d84ce5e +vmlinux sock_create_lite 0x5fea7136 +vmlinux sock_enable_timestamp 0xe6903f5c +vmlinux sock_get_timestamp 0x7f05d306 +vmlinux sock_i_ino 0xec8e1807 +vmlinux sock_i_uid 0xe5dff804 +vmlinux sock_init_data 0xadeea962 +vmlinux sock_kfree_s 0x7fc0ea1b +vmlinux sock_kmalloc 0x5432b5af +vmlinux sock_map_fd 0xa921cd24 +vmlinux sock_no_accept 0x265db2e0 +vmlinux sock_no_bind 0x0b2ef0bd +vmlinux sock_no_connect 0xf8153f58 +vmlinux sock_no_getname 0xf3913c9a +vmlinux sock_no_getsockopt 0x1c65600e +vmlinux sock_no_ioctl 0x52e82ef6 +vmlinux sock_no_listen 0x2901de17 +vmlinux sock_no_mmap 0x93fb749b +vmlinux sock_no_poll 0x8ddff069 +vmlinux sock_no_recvmsg 0x4a2d28a5 +vmlinux sock_no_sendmsg 0x92d4d6af +vmlinux sock_no_sendpage 0xdf0aa06b +vmlinux sock_no_setsockopt 0xb6a89a2f +vmlinux sock_no_shutdown 0xb603ca08 +vmlinux sock_no_socketpair 0xbbe4a185 +vmlinux sock_recvmsg 0x0f724c70 +vmlinux sock_register 0x50fea420 +vmlinux sock_release 0x92179f0d +vmlinux sock_rfree 0x33b062f8 +vmlinux sock_sendmsg 0xb2d3d081 +vmlinux sock_setsockopt 0xeeef75da +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0x6cc7cda4 +vmlinux sock_wfree 0x1dda5631 +vmlinux sock_wmalloc 0x268b14fa +vmlinux sockfd_lookup 0x1b730af9 +vmlinux soft_cursor 0xb813c666 +vmlinux sort 0x310917fe +vmlinux spi_attach_transport 0xd18519e0 +vmlinux spi_display_xfer_agreement 0x9e8fcf62 +vmlinux spi_dv_device 0xeb419c60 +vmlinux spi_release_transport 0xeec05113 +vmlinux spi_schedule_dv_device 0x915c573b +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux starget_for_each_device 0xee73c228 +vmlinux start_tty 0xd152c41f +vmlinux steal_locks 0x93f88486 +vmlinux sti_get_rom 0x04a5f250 +vmlinux stop_tty 0xdb55a548 +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0x6c1ce5ce +vmlinux strlcat 0xdd0a2ba2 +vmlinux strlcpy 0x73e20c1c +vmlinux strlen 0x97255bdf +vmlinux strncat 0xd627480b +vmlinux strnchr 0x0a3131f6 +vmlinux strncmp 0x84b183ae +vmlinux strncpy 0x328a05f1 +vmlinux strnicmp 0x4e830a3e +vmlinux strnlen 0xd9ce8f0c +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0xc7ec6c27 +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0xdb52a466 +vmlinux submit_bh 0x6e513531 +vmlinux submit_bio 0x66dc4b7b +vmlinux subsys_create_file 0xb8dfa991 +vmlinux subsys_remove_file 0x7550f755 +vmlinux subsystem_init 0x154f242d +vmlinux subsystem_register 0xcdd5bde3 +vmlinux subsystem_unregister 0x5170683e +vmlinux suid_dumpable 0xb694c524 +vmlinux svc_auth_register 0x69c45c67 +vmlinux svc_auth_unregister 0x0f668ba9 +vmlinux svc_authenticate 0xec29592c +vmlinux svc_create 0x9eb5d842 +vmlinux svc_create_thread 0x7738658c +vmlinux svc_destroy 0xfab5af73 +vmlinux svc_drop 0x99d2ea3d +vmlinux svc_exit_thread 0x954ed58e +vmlinux svc_makesock 0x767bcaae +vmlinux svc_proc_register 0xb3b4186e +vmlinux svc_proc_unregister 0x12e280e3 +vmlinux svc_process 0x0d9970bc +vmlinux svc_recv 0x60b61cbc +vmlinux svc_reserve 0xe8bbc3d7 +vmlinux svc_seq_show 0xc37add3d +vmlinux svc_set_client 0x12539f82 +vmlinux svc_wake_up 0xab6db394 +vmlinux svcauth_gss_register_pseudoflavor 0x8d1a827e +vmlinux svcauth_unix_purge 0x6eea229d +vmlinux swap_io_context 0xf1b378d9 +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0xb41f088d +vmlinux sync_dirty_buffer 0xe42e60b2 +vmlinux sync_inode 0x584517ed +vmlinux sync_mapping_buffers 0x5de56808 +vmlinux sync_page_range 0x82d76df7 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xdcb0349b +vmlinux sys_lseek 0xec2107f8 +vmlinux sys_open 0xe269ea1c +vmlinux sys_read 0x2efa450d +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sys_write 0x69b233d3 +vmlinux sysctl_intvec 0xb36066d2 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0x3b19dc39 +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0xe87f3c5c +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0x3d801c23 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x80e84db5 +vmlinux sysdev_class_unregister 0x999ac006 +vmlinux sysdev_create_file 0xa4c80fe4 +vmlinux sysdev_driver_register 0xe843d177 +vmlinux sysdev_driver_unregister 0xd9ea4cae +vmlinux sysdev_register 0x4eb74bbb +vmlinux sysdev_remove_file 0x954fb5b7 +vmlinux sysdev_unregister 0x1453d885 +vmlinux sysfs_chmod_file 0x9b9cd8ab +vmlinux sysfs_create_bin_file 0x63b32904 +vmlinux sysfs_create_dir 0x070e19aa +vmlinux sysfs_create_file 0xa59b3e20 +vmlinux sysfs_create_group 0x007a872f +vmlinux sysfs_create_link 0x08006748 +vmlinux sysfs_remove_bin_file 0x545057a4 +vmlinux sysfs_remove_dir 0xf751d9b8 +vmlinux sysfs_remove_file 0x7eed603d +vmlinux sysfs_remove_group 0xad4155b9 +vmlinux sysfs_remove_link 0x228073d0 +vmlinux sysfs_rename_dir 0x8a21367f +vmlinux sysfs_update_file 0xce8b6cf2 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0xfcc7984a +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0xec7bbbdc +vmlinux task_nice 0x1bad7e5b +vmlinux task_no_data_intr 0xe9feb57b +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0xd6edcf04 +vmlinux tc_classify 0x235fe0b8 +vmlinux tcf_action_dump_1 0x3422013f +vmlinux tcf_action_exec 0x691b6b38 +vmlinux tcf_em_register 0x1e3e473e +vmlinux tcf_em_tree_destroy 0x38939b0e +vmlinux tcf_em_tree_dump 0xd87c60d2 +vmlinux tcf_em_tree_validate 0x5beb557d +vmlinux tcf_em_unregister 0x98d55f83 +vmlinux tcf_exts_change 0x8320086f +vmlinux tcf_exts_destroy 0x7fba640e +vmlinux tcf_exts_dump 0x4d475c31 +vmlinux tcf_exts_dump_stats 0x6787d0a0 +vmlinux tcf_exts_validate 0x79e79404 +vmlinux tcf_register_action 0x9fd1536e +vmlinux tcf_unregister_action 0x049cc888 +vmlinux tcp_check_req 0x8443f01f +vmlinux tcp_child_process 0xa5f8db47 +vmlinux tcp_close 0x19854e99 +vmlinux tcp_connect 0xe912e13b +vmlinux tcp_create_openreq_child 0x2b0edc95 +vmlinux tcp_death_row 0x7d2c79c2 +vmlinux tcp_disconnect 0xa4a6e024 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x64828f30 +vmlinux tcp_getsockopt 0xb3a9626a +vmlinux tcp_hashinfo 0xed388f04 +vmlinux tcp_init_congestion_ops 0x585263f0 +vmlinux tcp_init_xmit_timers 0x06e2a9a4 +vmlinux tcp_ioctl 0x02c998ec +vmlinux tcp_make_synack 0x392920f7 +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0x72438714 +vmlinux tcp_poll 0x1b8419e7 +vmlinux tcp_proc_register 0x0f2ed7be +vmlinux tcp_proc_unregister 0x6c08b791 +vmlinux tcp_prot 0xf76fcaad +vmlinux tcp_rcv_established 0x8c60f905 +vmlinux tcp_rcv_state_process 0x8283c441 +vmlinux tcp_read_sock 0xa594e038 +vmlinux tcp_recvmsg 0x7aa20ede +vmlinux tcp_register_congestion_control 0xea248462 +vmlinux tcp_reno_cong_avoid 0x61941183 +vmlinux tcp_reno_min_cwnd 0x7ab70f65 +vmlinux tcp_reno_ssthresh 0x834c54d8 +vmlinux tcp_sendmsg 0x6c932ab5 +vmlinux tcp_sendpage 0x23452f7b +vmlinux tcp_setsockopt 0x2732892c +vmlinux tcp_shutdown 0x9f0bfcd3 +vmlinux tcp_simple_retransmit 0xae108902 +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0x1758599a +vmlinux tcp_timewait_state_process 0x2ccdffd6 +vmlinux tcp_unhash 0x83fed65c +vmlinux tcp_unregister_congestion_control 0xfb567b81 +vmlinux tcp_v4_conn_request 0x5f298ea4 +vmlinux tcp_v4_connect 0x3ef232f5 +vmlinux tcp_v4_destroy_sock 0xbc023584 +vmlinux tcp_v4_do_rcv 0x91a6666b +vmlinux tcp_v4_remember_stamp 0x70f7998b +vmlinux tcp_v4_send_check 0xba14696d +vmlinux tcp_v4_syn_recv_sock 0xd6cb9189 +vmlinux test_clear_page_dirty 0xd260e872 +vmlinux test_set_page_writeback 0xc6404c26 +vmlinux textsearch_destroy 0x0c5eca1c +vmlinux textsearch_find_continuous 0x8fdb27f1 +vmlinux textsearch_prepare 0x6bbc388b +vmlinux textsearch_register 0xcf482029 +vmlinux textsearch_unregister 0x08e5398d +vmlinux thaw_bdev 0xce9cf2bb +vmlinux timespec_trunc 0xc045ad4e +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux transport_add_device 0xc7448ded +vmlinux transport_class_register 0x2843afc8 +vmlinux transport_class_unregister 0xa24c2f0e +vmlinux transport_configure_device 0x99e62e84 +vmlinux transport_destroy_device 0xd7050c7b +vmlinux transport_remove_device 0x13900870 +vmlinux transport_setup_device 0x9fd02666 +vmlinux truncate_inode_pages 0xdc52fe6d +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0x57a8892f +vmlinux try_to_release_page 0xb92559e6 +vmlinux tty_check_change 0x7da9ffa0 +vmlinux tty_flip_buffer_push 0x7713f4f0 +vmlinux tty_get_baud_rate 0x81810f34 +vmlinux tty_hangup 0x83276c3a +vmlinux tty_hung_up_p 0x00e5e352 +vmlinux tty_ldisc_deref 0xe2d7581b +vmlinux tty_ldisc_flush 0xbfda21ea +vmlinux tty_ldisc_get 0x0a6971ff +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0xfe4d159d +vmlinux tty_ldisc_ref_wait 0x4144f4f7 +vmlinux tty_name 0x33ce3999 +vmlinux tty_register_device 0xa011d888 +vmlinux tty_register_driver 0x3648ae01 +vmlinux tty_register_ldisc 0xdce89f55 +vmlinux tty_set_operations 0xcab1ff32 +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0x221bc4c0 +vmlinux tty_unregister_driver 0x26dd6401 +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0x5c0ebafb +vmlinux tty_wait_until_sent 0xdfe5ef6e +vmlinux tty_wakeup 0x6bf2be07 +vmlinux uart_add_one_port 0x12e33f67 +vmlinux uart_get_baud_rate 0x7ff57c1b +vmlinux uart_get_divisor 0x88ef0802 +vmlinux uart_match_port 0x8936e26a +vmlinux uart_register_driver 0x83aea8e4 +vmlinux uart_remove_one_port 0x2023c8f3 +vmlinux uart_resume_port 0x3c9bba22 +vmlinux uart_suspend_port 0x4eda3b1d +vmlinux uart_unregister_driver 0xcf3b9ea2 +vmlinux uart_update_timeout 0xdad97065 +vmlinux uart_write_wakeup 0x46285f68 +vmlinux udp_disconnect 0x37f0ae6f +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0xabad83d7 +vmlinux udp_ioctl 0x2e5b16dc +vmlinux udp_poll 0x034fafa9 +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0xaf78d069 +vmlinux udp_proc_unregister 0xd9a5b53b +vmlinux udp_prot 0xead1d7f7 +vmlinux udp_sendmsg 0x89f3483d +vmlinux uhci_check_and_reset_hc 0xbc626db4 +vmlinux uhci_reset_hc 0x27f9c2b7 +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unix_domain_find 0x96946e44 +vmlinux unload_nls 0x9237acd8 +vmlinux unlock_buffer 0x84da615d +vmlinux unlock_new_inode 0x9e8fdadf +vmlinux unlock_page 0xfb0059d4 +vmlinux unlock_rename 0xbe610ffe +vmlinux unmap_mapping_range 0x10f1ccd2 +vmlinux unmap_underlying_metadata 0x73b9de99 +vmlinux unregister_binfmt 0x071eb32a +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0xc025270c +vmlinux unregister_exec_domain 0x42c96691 +vmlinux unregister_filesystem 0x8e95a955 +vmlinux unregister_framebuffer 0x670be362 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0xdff443a8 +vmlinux unregister_netdevice 0x87835c2c +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0x0bf06c99 +vmlinux unregister_parisc_driver 0x895f04e6 +vmlinux unregister_qdisc 0xe7507f62 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0xaa06697d +vmlinux unregister_sysctl_table 0xe4c41080 +vmlinux unregister_sysrq_key 0xeb97ec93 +vmlinux unregister_tcf_proto_ops 0xb0005000 +vmlinux unregister_timer_hook 0xf807773e +vmlinux unregister_wlandev 0xcc0b7be2 +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0xb38ffdd8 +vmlinux update_region 0xb570676c +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0x84b67329 +vmlinux vc_cons 0xe2ab8e52 +vmlinux vc_resize 0x8565e0c7 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0x807de8b8 +vmlinux vfs_follow_link 0xb6fdcfb5 +vmlinux vfs_fstat 0xcb841136 +vmlinux vfs_getattr 0x358ee68a +vmlinux vfs_link 0x01843962 +vmlinux vfs_llseek 0x8d9088bc +vmlinux vfs_lstat 0x91d803ff +vmlinux vfs_mkdir 0x793285bb +vmlinux vfs_mknod 0xc4c75352 +vmlinux vfs_permission 0xa1937606 +vmlinux vfs_read 0xa3927287 +vmlinux vfs_readdir 0x2998f901 +vmlinux vfs_readlink 0x9817bab0 +vmlinux vfs_readv 0xe77bca4f +vmlinux vfs_rename 0xfea38c2e +vmlinux vfs_rmdir 0x1487a09b +vmlinux vfs_stat 0x4e193f40 +vmlinux vfs_statfs 0x156f64f5 +vmlinux vfs_symlink 0x06a3d64f +vmlinux vfs_unlink 0x38019166 +vmlinux vfs_write 0x77c0077e +vmlinux vfs_writev 0x1b632424 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x958f9c5d +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_start 0x84ac94f2 +vmlinux vmalloc_to_page 0x37c03925 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0x68b2a90f +vmlinux vmtruncate 0x7822a0ae +vmlinux vprintk 0x777a8e29 +vmlinux vscnprintf 0x0ead5073 +vmlinux vsnprintf 0x6989a769 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0x25fa6f17 +vmlinux wait_for_completion_interruptible 0x891e32b8 +vmlinux wait_for_completion_interruptible_timeout 0x8d5642fc +vmlinux wait_for_completion_timeout 0x1fae7a0b +vmlinux wait_on_page_bit 0x9dcb32c7 +vmlinux wait_on_sync_kiocb 0xc6b7e69f +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0xf3b1548f +vmlinux wireless_send_event 0x105bb9d1 +vmlinux wireless_spy_update 0x8452d481 +vmlinux wlan_setup 0xd8afa774 +vmlinux wlan_unsetup 0x2a3361c9 +vmlinux write_inode_now 0x9aebc2fe +vmlinux write_one_page 0xac55c526 +vmlinux xdr_buf_from_iov 0xd79d8723 +vmlinux xdr_buf_read_netobj 0x7fa349bf +vmlinux xdr_buf_subsegment 0x214e869b +vmlinux xdr_decode_array2 0xd424398b +vmlinux xdr_decode_netobj 0x1be57115 +vmlinux xdr_decode_string 0x6755aa62 +vmlinux xdr_decode_string_inplace 0x7bd87272 +vmlinux xdr_decode_word 0x1508cf21 +vmlinux xdr_encode_array2 0x9ee45aa7 +vmlinux xdr_encode_netobj 0x29c6f164 +vmlinux xdr_encode_opaque 0x0e9e79d5 +vmlinux xdr_encode_opaque_fixed 0x587d494b +vmlinux xdr_encode_pages 0xedd7e283 +vmlinux xdr_encode_string 0xabc0fe0c +vmlinux xdr_encode_word 0x02f852bd +vmlinux xdr_init_decode 0x630a808c +vmlinux xdr_init_encode 0xefee4f25 +vmlinux xdr_inline_decode 0x9d13aae1 +vmlinux xdr_inline_pages 0x2cf6c740 +vmlinux xdr_read_pages 0x325cc049 +vmlinux xdr_reserve_space 0xf20b7c2f +vmlinux xdr_shift_buf 0xa1d95e2b +vmlinux xdr_write_pages 0x2f6de298 +vmlinux xfrm4_rcv 0xf07bb670 +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0x184ae219 +vmlinux xfrm_bundle_ok 0xeba22354 +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0x68a13258 +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0x8779271f +vmlinux xfrm_dst_lookup 0xbbe75ad6 +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0xd1a655a2 +vmlinux xfrm_find_acq_byseq 0x77eed9cd +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0x2063ce08 +vmlinux xfrm_init_state 0x39f5a359 +vmlinux xfrm_lookup 0x65c49f60 +vmlinux xfrm_parse_spi 0x6aa10ab9 +vmlinux xfrm_policy_alloc 0x209fc390 +vmlinux xfrm_policy_byid 0x75384e63 +vmlinux xfrm_policy_bysel 0xbd2cb4b3 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0xaf2015ff +vmlinux xfrm_policy_list 0x81dfde6c +vmlinux xfrm_policy_register_afinfo 0x293c24af +vmlinux xfrm_policy_unregister_afinfo 0x0f797ae2 +vmlinux xfrm_policy_walk 0x19858fff +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0x35fe8b7a +vmlinux xfrm_register_type 0xec8b0162 +vmlinux xfrm_replay_advance 0xda1e11ab +vmlinux xfrm_replay_check 0x377b5a83 +vmlinux xfrm_state_add 0xfb101159 +vmlinux xfrm_state_alloc 0x6584b2cc +vmlinux xfrm_state_check 0xd9a52cad +vmlinux xfrm_state_check_expire 0xfcfe9409 +vmlinux xfrm_state_delete 0x2929b8e1 +vmlinux xfrm_state_delete_tunnel 0x9920a784 +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0x9b579865 +vmlinux xfrm_state_lookup 0xfe6396af +vmlinux xfrm_state_mtu 0xc8849f4e +vmlinux xfrm_state_register_afinfo 0x09bc8fd9 +vmlinux xfrm_state_unregister_afinfo 0xe9566e8c +vmlinux xfrm_state_update 0xfe1797f8 +vmlinux xfrm_state_walk 0x7cfc9e20 +vmlinux xfrm_unregister_km 0x33c74863 +vmlinux xfrm_unregister_type 0x52d3354c +vmlinux xfrm_user_policy 0x58195473 +vmlinux xprt_create_proto 0x9785719f +vmlinux xprt_set_timeout 0xbce67dc0 +vmlinux xrlim_allow 0x2fad5be6 +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xf448c4e8 +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x7b93055b +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0x95a3d7c1 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/hppa/hppa64 +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/hppa/hppa64 @@ -0,0 +1,3708 @@ +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0x187c0e34 +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0xd7dac296 +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0xac5db655 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xdc30c180 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/block/loop loop_register_transfer 0xce94d687 +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/cdrom/cdrom cdrom_get_last_written 0xb4a47bbf +drivers/cdrom/cdrom cdrom_get_media_event 0x719e5dc2 +drivers/cdrom/cdrom cdrom_ioctl 0x90486d76 +drivers/cdrom/cdrom cdrom_media_changed 0xa73299e6 +drivers/cdrom/cdrom cdrom_mode_select 0x986b86d1 +drivers/cdrom/cdrom cdrom_mode_sense 0x434ac37f +drivers/cdrom/cdrom cdrom_number_of_slots 0xb36bbb75 +drivers/cdrom/cdrom cdrom_open 0x656854e1 +drivers/cdrom/cdrom cdrom_release 0x0ac9bf0f +drivers/cdrom/cdrom init_cdrom_command 0x344adbd5 +drivers/cdrom/cdrom register_cdrom 0x369a4318 +drivers/cdrom/cdrom unregister_cdrom 0x2fef3da8 +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/input/serio/hil_mlc hil_mlc_register 0xad7abe94 +drivers/input/serio/hil_mlc hil_mlc_unregister 0x0cb955eb +drivers/input/serio/hp_sdc hp_sdc_dequeue_transaction 0x5099bf7b +drivers/input/serio/hp_sdc hp_sdc_enqueue_transaction 0x88ccda02 +drivers/input/serio/hp_sdc hp_sdc_release_cooked_irq 0xd97b8d49 +drivers/input/serio/hp_sdc hp_sdc_release_hil_irq 0x2d7c4a70 +drivers/input/serio/hp_sdc hp_sdc_release_timer_irq 0x9dccd37d +drivers/input/serio/hp_sdc hp_sdc_request_cooked_irq 0x4233a8eb +drivers/input/serio/hp_sdc hp_sdc_request_hil_irq 0xcf402f97 +drivers/input/serio/hp_sdc hp_sdc_request_timer_irq 0xb12bc1bd +drivers/md/dm-mirror dm_create_dirty_log 0x472ba17f +drivers/md/dm-mirror dm_destroy_dirty_log 0x11d351d8 +drivers/md/dm-mirror dm_register_dirty_log_type 0xd2b8a65f +drivers/md/dm-mirror dm_unregister_dirty_log_type 0x70e44299 +drivers/md/dm-mod dm_get_device 0x3ac31d58 +drivers/md/dm-mod dm_get_mapinfo 0x9d67b105 +drivers/md/dm-mod dm_io_async 0xfdef9821 +drivers/md/dm-mod dm_io_async_bvec 0xfdf4d404 +drivers/md/dm-mod dm_io_async_vm 0xab817009 +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0x656c48bb +drivers/md/dm-mod dm_io_sync_bvec 0xd1f24f0f +drivers/md/dm-mod dm_io_sync_vm 0x69ba5eb9 +drivers/md/dm-mod dm_put_device 0xa5479ceb +drivers/md/dm-mod dm_register_target 0xb12fefce +drivers/md/dm-mod dm_table_event 0x46566c9b +drivers/md/dm-mod dm_table_flush_all 0xc0738558 +drivers/md/dm-mod dm_table_get 0x2d369cd9 +drivers/md/dm-mod dm_table_get_mode 0xd9bdbc5d +drivers/md/dm-mod dm_table_get_size 0x9f09d885 +drivers/md/dm-mod dm_table_put 0x4ef01910 +drivers/md/dm-mod dm_table_unplug_all 0xebe91bbe +drivers/md/dm-mod dm_unregister_target 0x81ec56d2 +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x5dea9e40 +drivers/md/dm-mod kcopyd_client_create 0xf67ef8f3 +drivers/md/dm-mod kcopyd_client_destroy 0x9beb51f6 +drivers/md/dm-mod kcopyd_copy 0xb816d6c9 +drivers/md/md-mod bitmap_close_sync 0xa1de49d4 +drivers/md/md-mod bitmap_daemon_work 0x6d3182ec +drivers/md/md-mod bitmap_end_sync 0x4fff89cb +drivers/md/md-mod bitmap_endwrite 0xf79a5ea8 +drivers/md/md-mod bitmap_start_sync 0xcfc444de +drivers/md/md-mod bitmap_startwrite 0xf8dfe166 +drivers/md/md-mod bitmap_unplug 0xbe9d9f08 +drivers/md/md-mod md_check_recovery 0x2d27eb54 +drivers/md/md-mod md_done_sync 0xe89a8f2c +drivers/md/md-mod md_error 0x6160530b +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x4ee93cba +drivers/md/md-mod md_unregister_thread 0x20de75bb +drivers/md/md-mod md_wakeup_thread 0x70919327 +drivers/md/md-mod md_write_end 0xa9bf79be +drivers/md/md-mod md_write_start 0x52bd3ebd +drivers/md/md-mod register_md_personality 0xec7c4e82 +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0x87d96edf +drivers/message/fusion/mptbase mpt_HardResetHandler 0xdf4a8e5f +drivers/message/fusion/mptbase mpt_add_sge 0x375d8126 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0x3dce8340 +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0xe8697daa +drivers/message/fusion/mptbase mpt_attach 0x012fe33f +drivers/message/fusion/mptbase mpt_config 0x867c93f8 +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0xdf26026e +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0x89df644d +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x1eb6a5d1 +drivers/message/fusion/mptbase mpt_findImVolumes 0x72f86365 +drivers/message/fusion/mptbase mpt_free_fw_memory 0x4d0034f2 +drivers/message/fusion/mptbase mpt_free_msg_frame 0x522479df +drivers/message/fusion/mptbase mpt_get_msg_frame 0xd1176bbc +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0xa5b8ef9d +drivers/message/fusion/mptbase mpt_proc_root_dir 0x4d5db2fd +drivers/message/fusion/mptbase mpt_put_msg_frame 0x8e3109c7 +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0xd7f0e361 +drivers/message/fusion/mptbase mpt_register 0x34373e16 +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0xa7974f3d +drivers/message/fusion/mptbase mpt_send_handshake_request 0x7f34cd9f +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_toolbox 0x7c13cc03 +drivers/message/fusion/mptbase mpt_verify_adapter 0x6bcc01c9 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0xd28900bb +drivers/message/fusion/mptscsih mptscsih_abort 0xcd418d68 +drivers/message/fusion/mptscsih mptscsih_bios_param 0x9bae0758 +drivers/message/fusion/mptscsih mptscsih_bus_reset 0x90b06b30 +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0xfc01412a +drivers/message/fusion/mptscsih mptscsih_dev_reset 0xe6d409d3 +drivers/message/fusion/mptscsih mptscsih_event_process 0x9eccf1b9 +drivers/message/fusion/mptscsih mptscsih_host_reset 0xf6077a91 +drivers/message/fusion/mptscsih mptscsih_info 0x778fa4fd +drivers/message/fusion/mptscsih mptscsih_io_done 0xe0a98ac3 +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0xa2d53387 +drivers/message/fusion/mptscsih mptscsih_proc_info 0x61187c2a +drivers/message/fusion/mptscsih mptscsih_qcmd 0x19da58f4 +drivers/message/fusion/mptscsih mptscsih_remove 0xf9caa609 +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0xd10859aa +drivers/message/fusion/mptscsih mptscsih_shutdown 0xefbab92b +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0xadc32ab3 +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x00964b37 +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0xc7811a16 +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x4a15d053 +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_cntxt_list_add 0x6e463c4f +drivers/message/i2o/i2o_core i2o_cntxt_list_get 0x0831f192 +drivers/message/i2o/i2o_core i2o_cntxt_list_get_ptr 0xd3e3e4df +drivers/message/i2o/i2o_core i2o_cntxt_list_remove 0x263d9ad0 +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0xd2b5d840 +drivers/message/i2o/i2o_core i2o_device_claim_release 0xc38acbbf +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0xd17788ac +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0x84a4a99d +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x7fe99950 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0x45a2f35e +drivers/message/i2o/i2o_core i2o_driver_register 0xf7dda176 +drivers/message/i2o/i2o_core i2o_driver_unregister 0x69d60901 +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0x0c677578 +drivers/message/i2o/i2o_core i2o_exec_lct_get 0xf06a02a7 +drivers/message/i2o/i2o_core i2o_find_iop 0x7e303df5 +drivers/message/i2o/i2o_core i2o_iop_find_device 0x9574a56f +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x3f7681a5 +drivers/message/i2o/i2o_core i2o_msg_nop 0x220815ea +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0xdf7cdd63 +drivers/message/i2o/i2o_core i2o_parm_field_get 0x2776cf7f +drivers/message/i2o/i2o_core i2o_parm_issue 0xbd7d76e7 +drivers/message/i2o/i2o_core i2o_parm_table_get 0xdda1a4fb +drivers/message/i2o/i2o_core i2o_status_get 0x6496addf +drivers/net/8390 NS8390_init 0x63cc39df +drivers/net/8390 __alloc_ei_netdev 0x4418988b +drivers/net/8390 ei_close 0xc9a0fc10 +drivers/net/8390 ei_interrupt 0xf8dd9ad5 +drivers/net/8390 ei_open 0x483c28e4 +drivers/net/8390 ei_poll 0x510f605b +drivers/net/mii generic_mii_ioctl 0x31e709c3 +drivers/net/mii mii_check_gmii_support 0x6bca3e0a +drivers/net/mii mii_check_link 0x1c48ca1c +drivers/net/mii mii_check_media 0x31a30bdc +drivers/net/mii mii_ethtool_gset 0xfd3c6281 +drivers/net/mii mii_ethtool_sset 0x76a54ee3 +drivers/net/mii mii_link_ok 0xa2acea30 +drivers/net/mii mii_nway_restart 0x0192aae8 +drivers/net/phy/libphy genphy_config_advert 0x3f196826 +drivers/net/phy/libphy genphy_config_aneg 0x3b57d135 +drivers/net/phy/libphy genphy_read_status 0xdc19ca8a +drivers/net/phy/libphy mdiobus_register 0x2591780a +drivers/net/phy/libphy mdiobus_unregister 0x7833c964 +drivers/net/phy/libphy phy_attach 0xf09f0339 +drivers/net/phy/libphy phy_connect 0x2fa63576 +drivers/net/phy/libphy phy_detach 0x3271e69d +drivers/net/phy/libphy phy_disable_interrupts 0x9099a738 +drivers/net/phy/libphy phy_disconnect 0x2a0a29a5 +drivers/net/phy/libphy phy_driver_register 0xa4433bb3 +drivers/net/phy/libphy phy_driver_unregister 0x43fab5a8 +drivers/net/phy/libphy phy_enable_interrupts 0xea50fb4e +drivers/net/phy/libphy phy_print_status 0xfb38e3ce +drivers/net/phy/libphy phy_read 0x1688e59a +drivers/net/phy/libphy phy_sanitize_settings 0x3a631351 +drivers/net/phy/libphy phy_start 0x82879214 +drivers/net/phy/libphy phy_start_aneg 0x9163bd0d +drivers/net/phy/libphy phy_start_interrupts 0x7b4f138b +drivers/net/phy/libphy phy_stop 0x6dd981f8 +drivers/net/phy/libphy phy_stop_interrupts 0x3b176345 +drivers/net/phy/libphy phy_write 0x89eb47cc +drivers/net/ppp_generic ppp_channel_index 0xda3ade52 +drivers/net/ppp_generic ppp_input 0x5df5c651 +drivers/net/ppp_generic ppp_input_error 0x3f95d8d9 +drivers/net/ppp_generic ppp_output_wakeup 0x85a8bab8 +drivers/net/ppp_generic ppp_register_channel 0x92a4f770 +drivers/net/ppp_generic ppp_register_compressor 0xf2584767 +drivers/net/ppp_generic ppp_unit_number 0x7d20404b +drivers/net/ppp_generic ppp_unregister_channel 0x6c158684 +drivers/net/ppp_generic ppp_unregister_compressor 0x53786f0b +drivers/net/pppox pppox_unbind_sock 0x538d0445 +drivers/net/pppox register_pppox_proto 0xce0f049d +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x6a47fcc2 +drivers/net/slhc slhc_free 0xeb3c59ef +drivers/net/slhc slhc_init 0x86de1d74 +drivers/net/slhc slhc_remember 0x9536b7c2 +drivers/net/slhc slhc_toss 0x3b36a20a +drivers/net/slhc slhc_uncompress 0xa532de34 +drivers/net/sungem_phy mii_phy_probe 0xd929f5e4 +drivers/net/wireless/airo init_airo_card 0xe3223bb7 +drivers/net/wireless/airo reset_airo_card 0xf32ef921 +drivers/net/wireless/airo stop_airo_card 0x20686aab +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0xa7bd74ee +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0x28f86c07 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0xbe48cfb5 +drivers/net/wireless/hostap/hostap hostap_add_interface 0x5d283679 +drivers/net/wireless/hostap/hostap hostap_add_sta 0xb9f0d2d2 +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0x5b336110 +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0xac27792c +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0x50a51b9b +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0xfd64ce4f +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0xb1b15e7c +drivers/net/wireless/hostap/hostap hostap_get_porttype 0x05aad878 +drivers/net/wireless/hostap/hostap hostap_get_stats 0x5ced5236 +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0x9d9734c9 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x6d43b49d +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0xe44769c6 +drivers/net/wireless/hostap/hostap hostap_info_init 0xdc65f63a +drivers/net/wireless/hostap/hostap hostap_info_process 0xcdefca99 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0x92288371 +drivers/net/wireless/hostap/hostap hostap_init_data 0x50b3d9a9 +drivers/net/wireless/hostap/hostap hostap_init_proc 0xbeae5823 +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0xf640e38d +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0xfaa0db18 +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0xd1b34acd +drivers/net/wireless/hostap/hostap hostap_proc 0x899afff1 +drivers/net/wireless/hostap/hostap hostap_remove_interface 0xa3ba21fb +drivers/net/wireless/hostap/hostap hostap_remove_proc 0x6fada64e +drivers/net/wireless/hostap/hostap hostap_set_antsel 0x4e7e32d9 +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0xf8fa1325 +drivers/net/wireless/hostap/hostap hostap_set_encryption 0x17541191 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x57147854 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0xdc364768 +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0x90abbcb6 +drivers/net/wireless/hostap/hostap hostap_set_string 0x0da6e2f1 +drivers/net/wireless/hostap/hostap hostap_set_word 0xc5d18f25 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0x50fab8aa +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0xde8715c3 +drivers/net/wireless/hostap/hostap hostap_update_rates 0x48be4e67 +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x2c241c78 +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x523d30a0 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0x63315a90 +drivers/net/wireless/orinoco __orinoco_down 0x470a6d69 +drivers/net/wireless/orinoco __orinoco_up 0x86c66de7 +drivers/net/wireless/orinoco alloc_orinocodev 0xfd047065 +drivers/net/wireless/orinoco free_orinocodev 0x345f591e +drivers/net/wireless/orinoco orinoco_interrupt 0x95438e21 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0xaacb0523 +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0xc2bf986a +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x93388d33 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0x0b628437 +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0x90a09feb +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0xdc7fe5f8 +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x216e5fb1 +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0x17d2b993 +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0xf703d02e +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0x6f20105f +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0xd8da4e7e +drivers/net/wireless/prism54_softmac/islsm register_islsm 0x3561c208 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0x55d74d5d +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0x246ab63f +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0x3810fead +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0x08986ed8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0x210d8197 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0x264a444c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0x9874c813 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0xde9fbdd1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0x96e7e7fc +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0x7aa715a6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0x5668557c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0xde66b922 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0x70a5c0ad +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x10cf9196 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0x588cebb1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0x325137b3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0x8a29ba19 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0xbcf6e8c3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x44a9af56 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0x2e250666 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x8af7fe1c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0x032cf720 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0x6c88e058 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0xa904ba69 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x8d7c4fe6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0xa32686d1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0x12e212b3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x57e722e2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0x3bccfb34 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0xc0de19d0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0x645c3305 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0xb49bf1de +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x8a84d045 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0xd471dc11 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0x1d8866ad +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0xac4cf2cf +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x62c168c3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0x7e70f9ac +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0x5cc01bcf +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0xdaf2d379 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0x116b9dac +drivers/parport/parport parport_announce_port 0xd59439ca +drivers/parport/parport parport_claim 0xa4409a3d +drivers/parport/parport parport_claim_or_block 0x79d3910f +drivers/parport/parport parport_find_base 0xfdf070aa +drivers/parport/parport parport_find_number 0x9cb99540 +drivers/parport/parport parport_get_port 0xbdaf606a +drivers/parport/parport parport_ieee1284_ecp_read_data 0x72bcc4b9 +drivers/parport/parport parport_ieee1284_ecp_write_addr 0x4855d053 +drivers/parport/parport parport_ieee1284_ecp_write_data 0x53a6534f +drivers/parport/parport parport_ieee1284_epp_read_addr 0x70ed8533 +drivers/parport/parport parport_ieee1284_epp_read_data 0x83c605af +drivers/parport/parport parport_ieee1284_epp_write_addr 0x1b573d1a +drivers/parport/parport parport_ieee1284_epp_write_data 0x00a4be06 +drivers/parport/parport parport_ieee1284_interrupt 0x85b2e6f4 +drivers/parport/parport parport_ieee1284_read_byte 0x3c8fcdd6 +drivers/parport/parport parport_ieee1284_read_nibble 0xb218de0f +drivers/parport/parport parport_ieee1284_write_compat 0x607649cd +drivers/parport/parport parport_negotiate 0x00077e14 +drivers/parport/parport parport_put_port 0x358eab58 +drivers/parport/parport parport_read 0x33bec091 +drivers/parport/parport parport_register_device 0x2dd871f7 +drivers/parport/parport parport_register_driver 0x5437eefa +drivers/parport/parport parport_register_port 0x5cb42117 +drivers/parport/parport parport_release 0x3a05636a +drivers/parport/parport parport_remove_port 0x6f7865ca +drivers/parport/parport parport_set_timeout 0x57b3ab2e +drivers/parport/parport parport_unregister_device 0x3c799410 +drivers/parport/parport parport_unregister_driver 0x2fe09a68 +drivers/parport/parport parport_wait_event 0xd9f8ad08 +drivers/parport/parport parport_wait_peripheral 0xd95fdade +drivers/parport/parport parport_write 0xb928a597 +drivers/parport/parport_pc parport_pc_probe_port 0x7c0610fc +drivers/parport/parport_pc parport_pc_unregister_port 0xb435f304 +drivers/pcmcia/pcmcia cs_error 0x1efd495d +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0x86de8784 +drivers/pcmcia/pcmcia pcmcia_deregister_client 0x590618ec +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0xf17eea51 +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0xf068f4fd +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0x5a1032c1 +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0x92c8c67b +drivers/pcmcia/pcmcia pcmcia_get_status 0xd1332731 +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0x4290a2ca +drivers/pcmcia/pcmcia pcmcia_get_window 0x8c173760 +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0x75f07d7b +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x1371a919 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0x4ed6b24c +drivers/pcmcia/pcmcia pcmcia_register_client 0x75065a8c +drivers/pcmcia/pcmcia pcmcia_register_driver 0x7a9a7464 +drivers/pcmcia/pcmcia pcmcia_release_configuration 0xc253a87c +drivers/pcmcia/pcmcia pcmcia_release_io 0x6e1788df +drivers/pcmcia/pcmcia pcmcia_release_irq 0xa82b4c3c +drivers/pcmcia/pcmcia pcmcia_release_window 0x5a158aaa +drivers/pcmcia/pcmcia pcmcia_request_configuration 0xc52287df +drivers/pcmcia/pcmcia pcmcia_request_io 0xfb0b53ab +drivers/pcmcia/pcmcia pcmcia_request_irq 0xf2796e8e +drivers/pcmcia/pcmcia pcmcia_request_window 0x11b4633c +drivers/pcmcia/pcmcia pcmcia_reset_card 0xd15dc1b8 +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0xd1d8d012 +drivers/pcmcia/pcmcia pcmcia_validate_cis 0x427f69fd +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0x83d56a52 +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x8efde679 +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0xe918cac7 +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0x6536ba4b +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0xc4841610 +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0xc8e9ba54 +drivers/pcmcia/pcmcia_core pccard_reset_card 0xd5e2e1e6 +drivers/pcmcia/pcmcia_core pccard_static_ops 0xf23274c6 +drivers/pcmcia/pcmcia_core pccard_validate_cis 0x5c8a101a +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0x46d79a26 +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0x26287696 +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0x9d3b401e +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0x2b43852d +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0xe440b069 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0x745cb288 +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0xccae734e +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0xd84bf7dc +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0x32332f30 +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xf8545541 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0xab47d404 +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0x03bb3fd4 +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0xf8057549 +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0xd280957b +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0x1f14d5c1 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0x2c7a26d5 +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0x1ea45b01 +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0x13d26ca7 +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0x00057072 +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0x4f09e0f8 +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0x2dd9bd0e +drivers/pcmcia/pcmcia_core release_cis_mem 0xa162fac9 +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0x222df0ce +drivers/scsi/53c700 NCR_700_detect 0x3550537f +drivers/scsi/53c700 NCR_700_intr 0x92565439 +drivers/scsi/53c700 NCR_700_release 0x7af234c4 +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x0130251b +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0xb89653e0 +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x0ada1f67 +drivers/scsi/qlogicfas408 qlogicfas408_abort 0xa23349b7 +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0x12619081 +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0xbaaac025 +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0xa1b03d34 +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x0c32d554 +drivers/scsi/qlogicfas408 qlogicfas408_info 0xcafd4e42 +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0xff99e769 +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0xa2a5a171 +drivers/scsi/raid_class raid_class_release 0x608f8048 +drivers/scsi/raid_class raid_component_add 0x9bd81d0b +drivers/scsi/sas/sas_class sas_register_ha 0x05a3f80e +drivers/scsi/sas/sas_class sas_unregister_ha 0x9612335b +drivers/scsi/scsi_transport_fc fc_attach_transport 0x67edff4c +drivers/scsi/scsi_transport_fc fc_release_transport 0x71af74ca +drivers/scsi/scsi_transport_fc fc_remote_port_add 0x63441a16 +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0x3b84a9cb +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0xfee8c38d +drivers/scsi/scsi_transport_fc fc_remove_host 0xf978e361 +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0x126cd476 +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0xb71e1d83 +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x8cf467e1 +drivers/scsi/scsi_transport_sas sas_attach_transport 0xfcaf174c +drivers/scsi/scsi_transport_sas sas_phy_add 0xf9c3a5b0 +drivers/scsi/scsi_transport_sas sas_phy_alloc 0x856894bd +drivers/scsi/scsi_transport_sas sas_phy_delete 0x6223134e +drivers/scsi/scsi_transport_sas sas_phy_free 0x93e5c2a3 +drivers/scsi/scsi_transport_sas sas_release_transport 0x9cf860d6 +drivers/scsi/scsi_transport_sas sas_remove_host 0x24409638 +drivers/scsi/scsi_transport_sas sas_rphy_add 0xc784dd6e +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x71b3a8ef +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x7b97d261 +drivers/scsi/scsi_transport_sas sas_rphy_free 0x95eeef45 +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0xca7dc416 +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0xd9467e77 +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0xe8ccd518 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0x7397cb09 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x50a50035 +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0x1d6b1726 +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0x1b5dd8f0 +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x22abf4e2 +drivers/usb/core/usbcore usb_alloc_dev 0x13dda2e7 +drivers/usb/core/usbcore usb_alloc_urb 0xa32de8bf +drivers/usb/core/usbcore usb_altnum_to_altsetting 0x7d277155 +drivers/usb/core/usbcore usb_buffer_alloc 0x0bb79278 +drivers/usb/core/usbcore usb_buffer_free 0xa7b1fc25 +drivers/usb/core/usbcore usb_buffer_map_sg 0x23cea167 +drivers/usb/core/usbcore usb_buffer_unmap_sg 0xfc720c18 +drivers/usb/core/usbcore usb_bulk_msg 0x81a6b2af +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0xbdce49e9 +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0xbb32767b +drivers/usb/core/usbcore usb_claim_bandwidth 0xa4b9377d +drivers/usb/core/usbcore usb_clear_halt 0x2897f98f +drivers/usb/core/usbcore usb_control_msg 0x16c4c6ed +drivers/usb/core/usbcore usb_create_hcd 0xe4c6213d +drivers/usb/core/usbcore usb_deregister 0x99591344 +drivers/usb/core/usbcore usb_deregister_dev 0x5c83166f +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0x30d26d85 +drivers/usb/core/usbcore usb_driver_claim_interface 0x270c53be +drivers/usb/core/usbcore usb_driver_release_interface 0x58e2710b +drivers/usb/core/usbcore usb_find_device 0xd980d83f +drivers/usb/core/usbcore usb_find_interface 0x9acd63d3 +drivers/usb/core/usbcore usb_free_urb 0xc7c8dc9e +drivers/usb/core/usbcore usb_get_current_frame_number 0x91adf347 +drivers/usb/core/usbcore usb_get_descriptor 0xaabb2f28 +drivers/usb/core/usbcore usb_get_dev 0xe5c47c5d +drivers/usb/core/usbcore usb_get_intf 0xb2a66d30 +drivers/usb/core/usbcore usb_get_status 0x5e3e537f +drivers/usb/core/usbcore usb_get_string 0x6aa534e8 +drivers/usb/core/usbcore usb_get_urb 0xb52adbbe +drivers/usb/core/usbcore usb_hc_died 0xcac45c2b +drivers/usb/core/usbcore usb_hcd_giveback_urb 0xc1a14756 +drivers/usb/core/usbcore usb_hcd_pci_probe 0xe12702a2 +drivers/usb/core/usbcore usb_hcd_pci_remove 0x561d6dd9 +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0x7b11742d +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0x51ac2a1a +drivers/usb/core/usbcore usb_ifnum_to_if 0x80d53369 +drivers/usb/core/usbcore usb_init_urb 0xa5bcb027 +drivers/usb/core/usbcore usb_kill_urb 0x279eb567 +drivers/usb/core/usbcore usb_lock_device 0x1234706c +drivers/usb/core/usbcore usb_lock_device_for_reset 0x58151510 +drivers/usb/core/usbcore usb_match_id 0x8ecd7197 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0xc0f288f6 +drivers/usb/core/usbcore usb_put_dev 0xd9f76d88 +drivers/usb/core/usbcore usb_put_hcd 0x8c5acb41 +drivers/usb/core/usbcore usb_put_intf 0x521c961f +drivers/usb/core/usbcore usb_register 0x77595685 +drivers/usb/core/usbcore usb_register_dev 0x42ca263e +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x1cbc8833 +drivers/usb/core/usbcore usb_remove_hcd 0xe87591c4 +drivers/usb/core/usbcore usb_reset_configuration 0xd7cb03a2 +drivers/usb/core/usbcore usb_reset_device 0xa0cc1678 +drivers/usb/core/usbcore usb_set_device_state 0xf52b297c +drivers/usb/core/usbcore usb_set_interface 0xe2929c4e +drivers/usb/core/usbcore usb_sg_cancel 0x81327346 +drivers/usb/core/usbcore usb_sg_init 0x8c35fb06 +drivers/usb/core/usbcore usb_sg_wait 0x9466ae01 +drivers/usb/core/usbcore usb_string 0x8d871b28 +drivers/usb/core/usbcore usb_submit_urb 0x517f8ce0 +drivers/usb/core/usbcore usb_trylock_device 0xcc24b84b +drivers/usb/core/usbcore usb_unlink_urb 0xe2004508 +drivers/usb/core/usbcore usb_unlock_device 0x52f0735d +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/host/sl811-hcd sl811h_driver 0xe5ffe1cd +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0xfb9b546b +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0x1f7009fb +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0xabe0aeaf +fs/configfs/configfs config_group_init 0x1b30dfeb +fs/configfs/configfs config_group_init_type_name 0x348a1a71 +fs/configfs/configfs config_item_get 0xdd4e4fb2 +fs/configfs/configfs config_item_init 0xa7b0803b +fs/configfs/configfs config_item_init_type_name 0x1165cc34 +fs/configfs/configfs config_item_put 0xc26657ab +fs/configfs/configfs config_item_set_name 0x44293775 +fs/configfs/configfs configfs_register_subsystem 0xc4c24f57 +fs/configfs/configfs configfs_unregister_subsystem 0x6277b32b +fs/exportfs/exportfs export_op_default 0xf254bc7b +fs/exportfs/exportfs find_exported_dentry 0xc175f483 +fs/fat/fat fat_add_entries 0xf2274f4d +fs/fat/fat fat_alloc_new_dir 0xdc03f362 +fs/fat/fat fat_attach 0x056e500c +fs/fat/fat fat_build_inode 0x1adda7d2 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0x9c689278 +fs/fat/fat fat_dir_empty 0x7e3ab307 +fs/fat/fat fat_fill_super 0x78a4bfca +fs/fat/fat fat_free_clusters 0x90ae281d +fs/fat/fat fat_fs_panic 0xe68eab35 +fs/fat/fat fat_get_dotdot_entry 0xb8cf15b2 +fs/fat/fat fat_notify_change 0x88629f0f +fs/fat/fat fat_remove_entries 0x152e910d +fs/fat/fat fat_scan 0x12af9045 +fs/fat/fat fat_search_long 0x975d559a +fs/fat/fat fat_sync_bhs 0xe2960216 +fs/fat/fat fat_sync_inode 0x5f59b336 +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0x0215ed9b +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0x9e2aebd3 +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0xf1b50cae +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0x78647723 +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0x6cf73b70 +fs/jbd/jbd journal_abort 0xc989636a +fs/jbd/jbd journal_ack_err 0xafc5f394 +fs/jbd/jbd journal_blocks_per_page 0xf301e955 +fs/jbd/jbd journal_check_available_features 0x993b3bca +fs/jbd/jbd journal_check_used_features 0x8a0900c5 +fs/jbd/jbd journal_clear_err 0x89445c92 +fs/jbd/jbd journal_create 0xd7ea0961 +fs/jbd/jbd journal_destroy 0xa7c5a21d +fs/jbd/jbd journal_dirty_data 0x2c69e6b5 +fs/jbd/jbd journal_dirty_metadata 0xf4775693 +fs/jbd/jbd journal_errno 0x7e06de23 +fs/jbd/jbd journal_extend 0x2f5de435 +fs/jbd/jbd journal_flush 0x804f982b +fs/jbd/jbd journal_force_commit 0xd5fac1a8 +fs/jbd/jbd journal_force_commit_nested 0xa4ba949b +fs/jbd/jbd journal_forget 0xbf215c99 +fs/jbd/jbd journal_get_create_access 0xad5d36ec +fs/jbd/jbd journal_get_undo_access 0x076910cc +fs/jbd/jbd journal_get_write_access 0x5a59b771 +fs/jbd/jbd journal_init_dev 0xa07975fe +fs/jbd/jbd journal_init_inode 0x867ac345 +fs/jbd/jbd journal_invalidatepage 0x406dcff9 +fs/jbd/jbd journal_load 0x2b65268f +fs/jbd/jbd journal_lock_updates 0xa0ec4c83 +fs/jbd/jbd journal_release_buffer 0xc19624e8 +fs/jbd/jbd journal_restart 0x93a4931c +fs/jbd/jbd journal_revoke 0x93b140fc +fs/jbd/jbd journal_set_features 0xa68329dc +fs/jbd/jbd journal_start 0xf0597d15 +fs/jbd/jbd journal_start_commit 0x0439eaef +fs/jbd/jbd journal_stop 0x33c0772c +fs/jbd/jbd journal_try_to_free_buffers 0x4431f139 +fs/jbd/jbd journal_unlock_updates 0xa3a2d37d +fs/jbd/jbd journal_update_format 0x044919f6 +fs/jbd/jbd journal_update_superblock 0x312faa6d +fs/jbd/jbd journal_wipe 0xdf0f987d +fs/jbd/jbd log_wait_commit 0xb3658ad7 +fs/nfsd/nfsd nfs4_acl_add_ace 0x1bb3671e +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x81a17396 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0xf56c2017 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0x1d747ce3 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xbaeb4700 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0xbe231e4a +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0xab0fda33 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0xc5ef8ad6 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x43bce54e +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0x36418553 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0x521e0726 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0x5911a0d2 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0xc405bf9f +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x1df80efa +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0x081dcb5f +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xa82a8645 +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0xfdc7a9b8 +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0xbd0c9387 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0xee9a8431 +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0x0f39f43e +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0x80b23301 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0x9c6511d7 +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0x256b9cfa +fs/relayfs/relayfs relay_buf_full 0x83ac634c +fs/relayfs/relayfs relay_close 0xee821695 +fs/relayfs/relayfs relay_flush 0xf9e5f927 +fs/relayfs/relayfs relay_open 0xd5afa388 +fs/relayfs/relayfs relay_reset 0x4a5ed9c7 +fs/relayfs/relayfs relay_subbufs_consumed 0xefca3d12 +fs/relayfs/relayfs relay_switch_subbuf 0x39ba0a15 +fs/relayfs/relayfs relayfs_create_dir 0xad0e6f1e +fs/relayfs/relayfs relayfs_file_operations 0x709bb138 +fs/relayfs/relayfs relayfs_remove_dir 0x19432757 +lib/crc-ccitt crc_ccitt 0x651c2313 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x9aabc564 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x41bcd8b3 +lib/libcrc32c crc32c_le 0x13c0c38e +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/bridge/bridge br_should_route_hook 0x03ac4816 +net/bridge/netfilter/ebtables ebt_do_table 0xc1fbaedb +net/bridge/netfilter/ebtables ebt_register_match 0x63982c60 +net/bridge/netfilter/ebtables ebt_register_table 0x633ed5e2 +net/bridge/netfilter/ebtables ebt_register_target 0xb6e849de +net/bridge/netfilter/ebtables ebt_register_watcher 0x58276af6 +net/bridge/netfilter/ebtables ebt_unregister_match 0xd9c91f17 +net/bridge/netfilter/ebtables ebt_unregister_table 0x7acfb663 +net/bridge/netfilter/ebtables ebt_unregister_target 0x9903e1de +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x1371a46b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0xd846acb9 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0xb5b65e72 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x0fece10d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xb34906b8 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0x57a8bdc4 +net/dccp/dccp ccid_init 0x8a52068e +net/dccp/dccp ccid_register 0x68a09e32 +net/dccp/dccp ccid_unregister 0x309940dc +net/dccp/dccp dccp_hashinfo 0x31c65548 +net/dccp/dccp dccp_insert_option 0x95755b1a +net/dccp/dccp dccp_insert_option_elapsed_time 0xede67df5 +net/dccp/dccp dccp_insert_option_timestamp 0xeb59a335 +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0x34c77fc3 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0x78ba6d6f +net/ieee80211/ieee80211 alloc_ieee80211 0xad60d34e +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0x7b4966f8 +net/ieee80211/ieee80211 ieee80211_channel_to_index 0x3c3d7859 +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0xcd62330d +net/ieee80211/ieee80211 ieee80211_get_channel 0x1d602df6 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0xe6c56cb0 +net/ieee80211/ieee80211 ieee80211_get_geo 0xc1b34825 +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0x4f40693d +net/ieee80211/ieee80211 ieee80211_rx 0x56a958da +net/ieee80211/ieee80211 ieee80211_rx_mgt 0x56f3ad68 +net/ieee80211/ieee80211 ieee80211_set_geo 0x79d84ac3 +net/ieee80211/ieee80211 ieee80211_tx_frame 0xd74d2df6 +net/ieee80211/ieee80211 ieee80211_txb_free 0x15165377 +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0x97d9e5fe +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0xf698f426 +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0x84488b1d +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0x6eb38007 +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0x56e7a12d +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x244b7305 +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0xd55bfe94 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0x54251ccf +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x4611480d +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0xb5931981 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x267eefb6 +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0x821cf231 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0xb48a37d6 +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0x50ba45b9 +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0xcd8ca4ce +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0xd8e891c5 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0xc5e6d435 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0xf2416032 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0xcec71baf +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0x807ea275 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0x552db819 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0x5b48be1c +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0x9af68d9c +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0xd8f38a0d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x883074ba +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0xacf85b31 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x7d60a70a +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x85ed30b6 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0xc7e83727 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x490e3069 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x2239df34 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0x3410e6f4 +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x61a033f2 +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x95505462 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0xa527dd41 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0xd81a9214 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0x88a90f63 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0x757fdd95 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0x2e54a00a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0xb477c69d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x68012648 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0xca43a262 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0x6e595989 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x26d9116a +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0xa99d084d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x0f614cab +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x2225a08d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0x1d1c8483 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x9676e202 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0xaf1a4d48 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0x5571b6b6 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0x45bcaebf +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x371c456a +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x14a3e29b +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0x63e7fd00 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0xfcee44dc +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0xac758d0c +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0x9ca4ebb4 +net/ipv4/netfilter/arp_tables arpt_do_table 0x96449c7a +net/ipv4/netfilter/arp_tables arpt_register_table 0xa6401a7b +net/ipv4/netfilter/arp_tables arpt_register_target 0xbea65f5d +net/ipv4/netfilter/arp_tables arpt_unregister_table 0x1314d50b +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x23f38fb1 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0xdb0e69f2 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0x830948fe +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0xa18b7ce7 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0xb857c74d +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0x757e7f0e +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0xfacd9fea +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0xb3667c5d +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0xeb2505fb +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0xfb105af7 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0xc138401f +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0xb15b1a9e +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x77ebcc35 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0x749c99f1 +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0xc0ffe5ca +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x2551575e +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0xe18b2c55 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0xf883d45e +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0x6db25243 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x6e61b59e +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0xa88ccd7c +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x122af292 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x63d0c29b +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x761c682f +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0xbf839a62 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0x8c38020b +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0xea389ca0 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0xd5ff6375 +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0x2049f12b +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0x962ba3bb +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0xa14cfd53 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0xf7b422d2 +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0xbd8b0e7d +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0xee549db1 +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0xb1af7acd +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x38110825 +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x06cd606c +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0x985869bc +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0xfb2fc72b +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0x48c79448 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0xa7b5b904 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0x123565ed +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0x71e945fe +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x7e5bcab4 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0x4a72b334 +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0xc3c6ba5e +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0x437eb9b3 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0xa0db623f +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0xbfa4734c +net/ipv4/netfilter/ip_nat ip_nat_packet 0xce7e0042 +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x61cbcab7 +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x86bcb30d +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0x4cfcee1e +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0x35513e78 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0xdd26fe5c +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0xc7f03de3 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0xb2d434d2 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0xa08929ef +net/ipv4/netfilter/ip_tables ipt_do_table 0xe154b548 +net/ipv4/netfilter/ip_tables ipt_find_target 0x5a558be0 +net/ipv4/netfilter/ip_tables ipt_register_match 0xb49dfbf4 +net/ipv4/netfilter/ip_tables ipt_register_table 0x586972d5 +net/ipv4/netfilter/ip_tables ipt_register_target 0x2b96f744 +net/ipv4/netfilter/ip_tables ipt_unregister_match 0x111d1552 +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x50674976 +net/ipv4/netfilter/ip_tables ipt_unregister_target 0x392e4827 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0xe87b26c0 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0x67295392 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0x11065b31 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0xb1f12e75 +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0xcce004ba +net/ipv6/ipv6 inet6_add_protocol 0x8282c3ec +net/ipv6/ipv6 inet6_bind 0x5ea6f5b7 +net/ipv6/ipv6 inet6_del_protocol 0xf96c93ce +net/ipv6/ipv6 inet6_getname 0x97d39140 +net/ipv6/ipv6 inet6_ioctl 0xd6820b66 +net/ipv6/ipv6 inet6_register_protosw 0xd321c829 +net/ipv6/ipv6 inet6_release 0xe755e4b2 +net/ipv6/ipv6 inet6_unregister_protosw 0x40c5f6d0 +net/ipv6/ipv6 ip6_route_me_harder 0xa4cfadc9 +net/ipv6/ipv6 ip6_route_output 0xe864a229 +net/ipv6/ipv6 ip6_xmit 0xc53f7858 +net/ipv6/ipv6 ipv6_chk_addr 0x0101b6a5 +net/ipv6/ipv6 ipv6_get_saddr 0xd5798fd0 +net/ipv6/ipv6 ipv6_getsockopt 0x1273cf05 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0xf9bc3b56 +net/ipv6/ipv6 ipv6_setsockopt 0xeacbcfc1 +net/ipv6/ipv6 ndisc_mc_map 0x672e174e +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0xd686ddb0 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0x4cd184f8 +net/ipv6/ipv6 xfrm6_rcv_spi 0x8b667fc8 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0xdc93a0d1 +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0x729a9731 +net/ipv6/netfilter/ip6_tables ip6t_register_table 0xa82042ea +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x501d56c3 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0xce4508ea +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x34455723 +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0x27363b7b +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0xac856595 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0x30fee01a +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0x9aded68d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/netfilter/nfnetlink __nfa_fill 0xfb86b016 +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0xc14c7397 +net/netfilter/nfnetlink nfnetlink_subsys_register 0x8015e28c +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0xd6b3798b +net/netfilter/nfnetlink nfnetlink_unicast 0x795eacbf +net/sched/police tcf_police 0xe96f0cbc +net/sched/police tcf_police_destroy 0x872f17f6 +net/sched/police tcf_police_dump 0xbc3eed04 +net/sched/police tcf_police_dump_stats 0xd476e568 +net/sched/police tcf_police_hash 0x8493d6e7 +net/sched/police tcf_police_ht 0x93da8ff5 +net/sched/police tcf_police_locate 0x55c50a07 +net/sched/police tcf_police_lookup 0xf2477819 +net/sched/police tcf_police_new_index 0x7ae0f6c9 +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x34f47643 +sound/core/seq/snd-seq snd_seq_create_kernel_client 0xae874101 +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0x91bff4ae +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0x53426715 +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x3e162ca5 +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0xb024e10f +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0xe99dc5c3 +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x652e5613 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0xc45d349a +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x20b09520 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x94bcd226 +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x2f00b54d +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x8d98548b +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0xc7bd34d4 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0xb9643a3b +sound/core/snd copy_from_user_toio 0x518bb7f8 +sound/core/snd copy_to_user_fromio 0xe243dde3 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0x0b11e1f7 +sound/core/snd snd_card_file_add 0xa70ae6d6 +sound/core/snd snd_card_file_remove 0x4c560a47 +sound/core/snd snd_card_free 0x70c01eb1 +sound/core/snd snd_card_free_in_thread 0xa3465fa9 +sound/core/snd snd_card_new 0xc1353944 +sound/core/snd snd_card_proc_new 0x7e723e57 +sound/core/snd snd_card_register 0x002e9c6b +sound/core/snd snd_card_set_generic_dev 0x920f10f4 +sound/core/snd snd_cards 0x31d4df9e +sound/core/snd snd_component_add 0xf5f47d00 +sound/core/snd snd_ctl_add 0x767b4924 +sound/core/snd snd_ctl_elem_read 0xac720b22 +sound/core/snd snd_ctl_elem_write 0x9dceb918 +sound/core/snd snd_ctl_find_id 0xe81e2911 +sound/core/snd snd_ctl_find_numid 0x92c5d401 +sound/core/snd snd_ctl_free_one 0xfb62e85e +sound/core/snd snd_ctl_new 0x54f71721 +sound/core/snd snd_ctl_new1 0x83a983a0 +sound/core/snd snd_ctl_notify 0xa1c49c2d +sound/core/snd snd_ctl_register_ioctl 0x3c2cfca0 +sound/core/snd snd_ctl_register_ioctl_compat 0xca11e44d +sound/core/snd snd_ctl_remove 0x30127f0e +sound/core/snd snd_ctl_remove_id 0xfeb65729 +sound/core/snd snd_ctl_rename_id 0xa9ead3fa +sound/core/snd snd_ctl_unregister_ioctl 0x01f4082d +sound/core/snd snd_ctl_unregister_ioctl_compat 0x16172094 +sound/core/snd snd_device_free 0xe7824ff3 +sound/core/snd snd_device_new 0x4eeb9bbf +sound/core/snd snd_device_register 0x9a382c8d +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0x3e44c755 +sound/core/snd snd_info_create_module_entry 0x3df37458 +sound/core/snd snd_info_free_entry 0x3854eb70 +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0x6cb80b9b +sound/core/snd snd_info_unregister 0xb4667616 +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0xa7df29bf +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_register_device 0x0ea7c303 +sound/core/snd snd_register_oss_device 0x1bba73d4 +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0x01c5f57c +sound/core/snd snd_unregister_device 0x2627156e +sound/core/snd snd_unregister_oss_device 0xeb1898a6 +sound/core/snd-hwdep snd_hwdep_new 0xa15a5b99 +sound/core/snd-page-alloc snd_dma_alloc_pages 0xade2cd23 +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0x6e5ae964 +sound/core/snd-page-alloc snd_dma_free_pages 0x600328d8 +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0xe392bd48 +sound/core/snd-page-alloc snd_dma_reserve_buf 0xab384bd3 +sound/core/snd-page-alloc snd_free_pages 0x19cc2ce3 +sound/core/snd-page-alloc snd_malloc_pages 0xc6829020 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x65f0da5e +sound/core/snd-pcm snd_pcm_devices 0xda379b87 +sound/core/snd-pcm snd_pcm_format_big_endian 0x09d405a0 +sound/core/snd-pcm snd_pcm_format_linear 0x1d607209 +sound/core/snd-pcm snd_pcm_format_little_endian 0x11ee487f +sound/core/snd-pcm snd_pcm_format_name 0x77863ed3 +sound/core/snd-pcm snd_pcm_format_physical_width 0x32be712f +sound/core/snd-pcm snd_pcm_format_set_silence 0xfa4027da +sound/core/snd-pcm snd_pcm_format_signed 0x78967306 +sound/core/snd-pcm snd_pcm_format_silence_64 0x407a3719 +sound/core/snd-pcm snd_pcm_format_size 0xe8decdc0 +sound/core/snd-pcm snd_pcm_format_unsigned 0x0ff581cb +sound/core/snd-pcm snd_pcm_format_width 0xcfb8aa1b +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0xdf8b1acb +sound/core/snd-pcm snd_pcm_hw_constraint_list 0x16e901a3 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0xc9bbb6fb +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x55ac6672 +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0x67172651 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x9842d91c +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0xa52ad287 +sound/core/snd-pcm snd_pcm_hw_constraint_step 0x1dff4533 +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0x37299482 +sound/core/snd-pcm snd_pcm_hw_constraints_init 0xf7a22fb2 +sound/core/snd-pcm snd_pcm_hw_param_first 0xbab55d7a +sound/core/snd-pcm snd_pcm_hw_param_last 0x61dd2afc +sound/core/snd-pcm snd_pcm_hw_param_mask 0xc749c0af +sound/core/snd-pcm snd_pcm_hw_param_near 0x8f8cd93e +sound/core/snd-pcm snd_pcm_hw_param_set 0xa02afb8c +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0xe30d8b8a +sound/core/snd-pcm snd_pcm_hw_rule_add 0xd14aa119 +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0x582db129 +sound/core/snd-pcm snd_pcm_kernel_ioctl 0xae3220a8 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x0b088318 +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0x32afe08e +sound/core/snd-pcm snd_pcm_lib_free_pages 0x7e26aae0 +sound/core/snd-pcm snd_pcm_lib_ioctl 0x2f42a742 +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x839958cd +sound/core/snd-pcm snd_pcm_lib_period_bytes 0x00bbcb3a +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0xdfcc9a03 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0x69364fea +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0xb4ca8d93 +sound/core/snd-pcm snd_pcm_lib_read 0x1d6e44d1 +sound/core/snd-pcm snd_pcm_lib_readv 0x38d08cf0 +sound/core/snd-pcm snd_pcm_lib_write 0x63821307 +sound/core/snd-pcm snd_pcm_lib_writev 0x330faee4 +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x5fe9b31a +sound/core/snd-pcm snd_pcm_link_rwlock 0x395e287f +sound/core/snd-pcm snd_pcm_mmap_data 0xf77ef23b +sound/core/snd-pcm snd_pcm_new 0xb18972e7 +sound/core/snd-pcm snd_pcm_new_stream 0x4655f77b +sound/core/snd-pcm snd_pcm_notify 0x48e0cbc7 +sound/core/snd-pcm snd_pcm_open_substream 0x3e04fc2d +sound/core/snd-pcm snd_pcm_period_elapsed 0x2e0eb35f +sound/core/snd-pcm snd_pcm_release_substream 0xb54224d0 +sound/core/snd-pcm snd_pcm_set_ops 0xb5ded3f1 +sound/core/snd-pcm snd_pcm_set_sync 0x4580eff5 +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0xd52bdbdd +sound/core/snd-pcm snd_pcm_stop 0x80dbcb65 +sound/core/snd-rawmidi snd_rawmidi_drain_input 0xa00a5127 +sound/core/snd-rawmidi snd_rawmidi_drain_output 0xe0a76eeb +sound/core/snd-rawmidi snd_rawmidi_drop_output 0x7ca03064 +sound/core/snd-rawmidi snd_rawmidi_info 0x8bd67f11 +sound/core/snd-rawmidi snd_rawmidi_info_select 0x76871143 +sound/core/snd-rawmidi snd_rawmidi_input_params 0xd29316c5 +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x23030091 +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0x0ee26a54 +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0x2d34731a +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x92cd32be +sound/core/snd-rawmidi snd_rawmidi_new 0x0d2babfb +sound/core/snd-rawmidi snd_rawmidi_output_params 0x51439b7e +sound/core/snd-rawmidi snd_rawmidi_receive 0x7098bccd +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x62a7dd04 +sound/core/snd-rawmidi snd_rawmidi_transmit 0x81a6a017 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0x2fa22d60 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0x09243b26 +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0xdc4c6e24 +sound/core/snd-timer snd_timer_close 0x31980878 +sound/core/snd-timer snd_timer_continue 0x7d87f38c +sound/core/snd-timer snd_timer_global_free 0x9f8e682b +sound/core/snd-timer snd_timer_global_new 0x072b3b6e +sound/core/snd-timer snd_timer_global_register 0x080b1480 +sound/core/snd-timer snd_timer_global_unregister 0xe23a57b6 +sound/core/snd-timer snd_timer_interrupt 0x3ad1a0d6 +sound/core/snd-timer snd_timer_new 0x57264dce +sound/core/snd-timer snd_timer_notify 0x3129362d +sound/core/snd-timer snd_timer_open 0x6fa723a8 +sound/core/snd-timer snd_timer_pause 0x1b899cfa +sound/core/snd-timer snd_timer_resolution 0xdf93b078 +sound/core/snd-timer snd_timer_start 0x3118a219 +sound/core/snd-timer snd_timer_stop 0x3ef2de57 +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0x3f8ac52e +sound/drivers/vx/snd-vx-lib snd_vx_create 0x866cff8d +sound/drivers/vx/snd-vx-lib snd_vx_delay 0xf69443dc +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0x3d22760f +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0xbf304841 +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0xc542d002 +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x9b239d5d +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0xb983005e +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0xbc9e4f5c +sound/i2c/other/snd-ak4117 snd_ak4117_build 0xd852cf4c +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0xca1e7b97 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0xf228877d +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x87b17e6b +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0xeea050a5 +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x237f4512 +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x9718fd80 +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0x7f950c2c +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0x681308b2 +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0xebcae6cf +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0xce34643b +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0x688b4c38 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0x4da0539f +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0xc53db05e +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0xe15f3955 +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0x29e1af57 +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0xce508373 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0x446de752 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0xa3d0c777 +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0xf580f179 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0xd67c61a0 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0xf62fffca +sound/soundcore register_sound_midi 0x27830f2d +sound/soundcore register_sound_mixer 0x07519342 +sound/soundcore register_sound_special 0x983a705c +sound/soundcore register_sound_special_device 0xa5ddbeb0 +sound/soundcore register_sound_synth 0x7d40ed19 +sound/soundcore sound_class 0x3528bb11 +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +vmlinux $$divI 0x9ea93a0c +vmlinux $$divI_10 0xe3bf4573 +vmlinux $$divI_12 0xbbd3fcb2 +vmlinux $$divI_14 0x536636f1 +vmlinux $$divI_15 0x92e8e931 +vmlinux $$divI_3 0x02a01458 +vmlinux $$divI_5 0xea15de1b +vmlinux $$divI_6 0x73f7b81a +vmlinux $$divI_7 0xb27967da +vmlinux $$divI_9 0xe00f4cdc +vmlinux $$divU 0x3a456c00 +vmlinux $$divU_10 0xaff8e832 +vmlinux $$divU_12 0xf79451f3 +vmlinux $$divU_14 0x1f219bb0 +vmlinux $$divU_15 0xdeaf4470 +vmlinux $$divU_3 0x2c1d0b79 +vmlinux $$divU_5 0xc4a8c13a +vmlinux $$divU_6 0x5d4aa73b +vmlinux $$divU_7 0x9cc478fb +vmlinux $$divU_9 0xceb253fd +vmlinux $$mulI 0xf86ddff0 +vmlinux $$remI 0xe7e9bddf +vmlinux $$remU 0x4305ebd3 +vmlinux EISA_bus 0x7413793a +vmlinux I_BDEV 0xa6d71e34 +vmlinux SELECT_DRIVE 0x4367ebbf +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0xd95aafa1 +vmlinux __alloc_pages 0x2af1a461 +vmlinux __alloc_skb 0x7faab20f +vmlinux __ashldi3 0x40f07981 +vmlinux __ashrdi3 0xedd9106d +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0x57c2b8aa +vmlinux __bio_clone 0xcacd8c3c +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0x9ed71aa4 +vmlinux __bread 0x38b37192 +vmlinux __breadahead 0x67356569 +vmlinux __break_lease 0x34d4ef17 +vmlinux __brelse 0x4dd4a016 +vmlinux __canonicalize_funcptr_for_compare 0xf38ab871 +vmlinux __check_region 0xf1d0cdab +vmlinux __cmpxchg_u32 0x12fa180d +vmlinux __cmpxchg_u64 0x17fc8840 +vmlinux __create_workqueue 0xe48c0632 +vmlinux __d_path 0x22bf87ae +vmlinux __dev_get_by_index 0xb98d221c +vmlinux __dev_get_by_name 0xcb5e707f +vmlinux __dev_remove_pack 0x17da24b0 +vmlinux __divdi3 0xe8679178 +vmlinux __down 0x60cd9852 +vmlinux __down_interruptible 0xa713b4ff +vmlinux __down_read 0x9c2571f4 +vmlinux __down_read_trylock 0xab680c96 +vmlinux __down_write 0x23838107 +vmlinux __down_write_trylock 0xe4a97c71 +vmlinux __downgrade_write 0xba3bda2a +vmlinux __dst_free 0x68de7aea +vmlinux __elv_add_request 0x96453022 +vmlinux __find_get_block 0xcb3daa46 +vmlinux __free_pages 0x3da63962 +vmlinux __generic_file_aio_read 0x49b82b98 +vmlinux __generic_unplug_device 0x7a28b154 +vmlinux __get_free_pages 0x93fca811 +vmlinux __getblk 0xa8065dba +vmlinux __ide_abort 0x3bb70d67 +vmlinux __ide_dma_bad_drive 0xe23f03fc +vmlinux __ide_dma_check 0xe702a798 +vmlinux __ide_dma_end 0x34407e3e +vmlinux __ide_dma_good_drive 0xd26762ac +vmlinux __ide_dma_host_off 0x165ca9a3 +vmlinux __ide_dma_host_on 0x27642aa5 +vmlinux __ide_dma_lostirq 0xe4df2bb3 +vmlinux __ide_dma_off 0x374b2086 +vmlinux __ide_dma_off_quietly 0xc7fb9470 +vmlinux __ide_dma_on 0x8419ba91 +vmlinux __ide_dma_timeout 0x3f3b959b +vmlinux __ide_end_request 0x20e5361c +vmlinux __ide_error 0x68f5a1b5 +vmlinux __ide_pci_register_driver 0x7b975c9a +vmlinux __inet_lookup_listener 0xa39455cd +vmlinux __inet_twsk_hashdance 0x57423b7b +vmlinux __inet_twsk_kill 0x7b3aa50a +vmlinux __init_timer_base 0x82f04785 +vmlinux __inode_dir_notify 0xaa0b13db +vmlinux __insert_inode_hash 0x2c26f2ba +vmlinux __invalidate_device 0xec5e29fb +vmlinux __ioremap 0x9eac042a +vmlinux __ip_route_output_key 0x33b648e3 +vmlinux __ip_select_ident 0x8189c484 +vmlinux __kfifo_get 0x043b8483 +vmlinux __kfifo_put 0xaa527612 +vmlinux __kfree_skb 0xb0fcdbb1 +vmlinux __kill_fasync 0x2f077fa4 +vmlinux __kmalloc 0x5a34a45c +vmlinux __lock_buffer 0x06afec33 +vmlinux __lock_page 0x8d63e042 +vmlinux __lshrdi3 0xff67b37f +vmlinux __mark_inode_dirty 0x031c98ea +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xe051a0ac +vmlinux __moddi3 0x903ab395 +vmlinux __module_put_and_exit 0xd4ef562b +vmlinux __muldi3 0x800e4ffa +vmlinux __neigh_event_send 0xbd322c7d +vmlinux __neigh_for_each_release 0x9a85b49d +vmlinux __net_timestamp 0x27397c65 +vmlinux __netdev_watchdog_up 0x93c387d4 +vmlinux __nla_put 0x4c3d5737 +vmlinux __nla_reserve 0x37f3367a +vmlinux __page_cache_release 0x144ff7cf +vmlinux __pagevec_lru_add 0xd486093d +vmlinux __pagevec_release 0x9d2731a3 +vmlinux __pci_register_driver 0x3bfa05f0 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0xc37114a6 +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0x2fb25b71 +vmlinux __scm_destroy 0xfa514617 +vmlinux __scm_send 0x3bfa3eba +vmlinux __scsi_add_device 0x32234174 +vmlinux __scsi_device_lookup 0x0b999ba7 +vmlinux __scsi_device_lookup_by_target 0xf052500c +vmlinux __scsi_iterate_devices 0x205ddc5a +vmlinux __scsi_print_command 0xfef96e23 +vmlinux __scsi_print_sense 0x69d38ed9 +vmlinux __secpath_destroy 0xe1c8990e +vmlinux __serio_register_driver 0x608261eb +vmlinux __serio_register_port 0xe8b6279b +vmlinux __serio_unregister_port_delayed 0x86183070 +vmlinux __set_page_dirty_buffers 0xb2e218a3 +vmlinux __set_page_dirty_nobuffers 0x1dcdd388 +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0x4c66f1d7 +vmlinux __skb_checksum_complete 0xe1984df9 +vmlinux __skb_linearize 0x241cba56 +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x267fc65b +vmlinux __tasklet_schedule 0xf397b9aa +vmlinux __tcf_em_tree_match 0x5ff3c554 +vmlinux __udivdi3 0x32093cc7 +vmlinux __umoddi3 0x4a541e2a +vmlinux __up 0x7d4506b0 +vmlinux __up_read 0xb2bf1312 +vmlinux __up_write 0x6ac45c28 +vmlinux __user_walk 0x1ba1d69d +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0x8f07d8ca +vmlinux __wait_on_bit_lock 0x9501d078 +vmlinux __wait_on_buffer 0x54ccd5c0 +vmlinux __wake_up 0xb6c70a7d +vmlinux __wake_up_bit 0x44c214d1 +vmlinux __wake_up_sync 0xffaf7bbb +vmlinux __xchg32 0xc387ec0b +vmlinux __xchg64 0x5732f1ca +vmlinux __xchg8 0x4e7bc574 +vmlinux __xfrm_policy_check 0x14ae82db +vmlinux __xfrm_policy_destroy 0xcb7aaa3a +vmlinux __xfrm_route_forward 0xf77e2d07 +vmlinux __xfrm_state_destroy 0x50328d76 +vmlinux _atomic_dec_and_lock 0x1edc9598 +vmlinux _ctype 0x8d3894f2 +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0x70342cdd +vmlinux add_disk_randomness 0x1c959036 +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0x3cf0f3b4 +vmlinux add_wait_queue 0xfd8dba4c +vmlinux add_wait_queue_exclusive 0x3e6caebd +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0xba8f4f12 +vmlinux aio_put_req 0x14492f1e +vmlinux alloc_buffer_head 0x810aeb1d +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0xe8a19359 +vmlinux alloc_disk_node 0x2fab4cfb +vmlinux alloc_etherdev 0x314e01a3 +vmlinux alloc_netdev 0xb89dc2fa +vmlinux alloc_page_buffers 0x95455bab +vmlinux alloc_tty_driver 0xdb01562d +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0xdddddb83 +vmlinux anon_transport_class_unregister 0x80b466c3 +vmlinux arp_broken_ops 0x9cafc869 +vmlinux arp_create 0x4e6ba7b9 +vmlinux arp_find 0x75338755 +vmlinux arp_rcv 0x774be6b6 +vmlinux arp_send 0x8279192a +vmlinux arp_tbl 0xd9eba3c3 +vmlinux arp_xmit 0x16cb218f +vmlinux attribute_container_add_attrs 0x753c0f4c +vmlinux attribute_container_add_class_device 0x6a30503a +vmlinux attribute_container_add_class_device_adapter 0x0829564d +vmlinux attribute_container_class_device_del 0x4adffa33 +vmlinux attribute_container_classdev_to_container 0x30cf8f03 +vmlinux attribute_container_device_trigger 0x4f0b98e7 +vmlinux attribute_container_find_class_device 0x8dfca8cc +vmlinux attribute_container_register 0x4d0e22eb +vmlinux attribute_container_remove_attrs 0x807092fe +vmlinux attribute_container_remove_device 0xba2175fe +vmlinux attribute_container_trigger 0x60c9ea7f +vmlinux attribute_container_unregister 0x0731c7bd +vmlinux auth_domain_find 0xce9b7a1f +vmlinux auth_domain_lookup 0xa74157e3 +vmlinux auth_domain_put 0xb7e2b4a5 +vmlinux auth_unix_add_addr 0xb8520a43 +vmlinux auth_unix_forget_old 0x758f9c49 +vmlinux auth_unix_lookup 0xd1d4e136 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x91a92636 +vmlinux bd_claim 0x3a0cc3f5 +vmlinux bd_release 0xafdf951f +vmlinux bd_set_size 0x30b8457f +vmlinux bdev_read_only 0x86ad48a3 +vmlinux bdevname 0x7ba74aff +vmlinux bdget 0x2eff78b0 +vmlinux bdput 0x8c9db2ae +vmlinux bfifo_qdisc_ops 0xba4efa21 +vmlinux bio_add_page 0xeeca1e7c +vmlinux bio_alloc 0x88b7d07d +vmlinux bio_alloc_bioset 0x8013a508 +vmlinux bio_clone 0x5be05de8 +vmlinux bio_copy_user 0xf296d019 +vmlinux bio_endio 0x5c8f5518 +vmlinux bio_free 0xdb2cb893 +vmlinux bio_get_nr_vecs 0xe907dc45 +vmlinux bio_hw_segments 0xda8e65a5 +vmlinux bio_init 0x0577302a +vmlinux bio_map_kern 0x7620f61f +vmlinux bio_map_user 0x7fde8a8d +vmlinux bio_pair_release 0xa07598fc +vmlinux bio_phys_segments 0xa1ff23a7 +vmlinux bio_put 0x110e73e5 +vmlinux bio_split 0x2b99abae +vmlinux bio_split_pool 0x27b47413 +vmlinux bio_uncopy_user 0x4aee656b +vmlinux bio_unmap_user 0xeb8fe011 +vmlinux bioset_create 0x1c875572 +vmlinux bioset_free 0x661e6ec8 +vmlinux bit_waitqueue 0xa9f1ed23 +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0x1b919a03 +vmlinux blk_alloc_queue_node 0x5e2b7884 +vmlinux blk_cleanup_queue 0x93692d34 +vmlinux blk_complete_barrier_rq 0x3694cee6 +vmlinux blk_complete_barrier_rq_locked 0x57b7c24f +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0x9b51d9f2 +vmlinux blk_end_sync_rq 0x43d004d4 +vmlinux blk_execute_rq 0x278a36ec +vmlinux blk_get_backing_dev_info 0xeb2cffc3 +vmlinux blk_get_queue 0xd4861554 +vmlinux blk_get_request 0x1b66f716 +vmlinux blk_init_queue 0x3f14a07b +vmlinux blk_init_queue_node 0xbd145c8d +vmlinux blk_insert_request 0xa4e2a93b +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0x269e1ddc +vmlinux blk_put_request 0xf5e765c3 +vmlinux blk_queue_activity_fn 0xe5d18153 +vmlinux blk_queue_bounce 0x073a2eea +vmlinux blk_queue_bounce_limit 0x99297285 +vmlinux blk_queue_dma_alignment 0xfde6ab6f +vmlinux blk_queue_end_tag 0xfe4f4a60 +vmlinux blk_queue_find_tag 0x4b80ce15 +vmlinux blk_queue_free_tags 0xaf4399f4 +vmlinux blk_queue_hardsect_size 0x7bf8bcca +vmlinux blk_queue_init_tags 0xba62061c +vmlinux blk_queue_invalidate_tags 0x4b7eb3b2 +vmlinux blk_queue_issue_flush_fn 0x3630ba75 +vmlinux blk_queue_make_request 0x79a79f7f +vmlinux blk_queue_max_hw_segments 0x6e522aef +vmlinux blk_queue_max_phys_segments 0xaf40677f +vmlinux blk_queue_max_sectors 0xca52c1a5 +vmlinux blk_queue_max_segment_size 0xda8ca5f4 +vmlinux blk_queue_merge_bvec 0x2ce29f6a +vmlinux blk_queue_ordered 0x09f698bd +vmlinux blk_queue_prep_rq 0xb6f53cf3 +vmlinux blk_queue_resize_tags 0x293b3198 +vmlinux blk_queue_segment_boundary 0x86ae5e0b +vmlinux blk_queue_stack_limits 0xe9b71b88 +vmlinux blk_queue_start_tag 0x2187bae9 +vmlinux blk_register_region 0xf5e4201c +vmlinux blk_remove_plug 0x1bd3e4f2 +vmlinux blk_requeue_request 0xc7a83fc8 +vmlinux blk_rq_bio_prep 0x7fbe5142 +vmlinux blk_rq_map_kern 0x73853614 +vmlinux blk_rq_map_sg 0x011c541f +vmlinux blk_rq_map_user 0x98febe45 +vmlinux blk_rq_map_user_iov 0xc309cf1c +vmlinux blk_rq_unmap_user 0x39329496 +vmlinux blk_run_queue 0x3566cb26 +vmlinux blk_start_queue 0xb6b8599d +vmlinux blk_stop_queue 0x63311000 +vmlinux blk_sync_queue 0xeb93ed86 +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0x8691aa29 +vmlinux blkdev_ioctl 0x6df3ee60 +vmlinux blkdev_issue_flush 0xeb5fd6f1 +vmlinux blkdev_put 0xc577766a +vmlinux block_all_signals 0xc74785b2 +vmlinux block_commit_write 0x04c4cee2 +vmlinux block_invalidatepage 0x59cf48f5 +vmlinux block_prepare_write 0xd632b8c3 +vmlinux block_read_full_page 0x1e0dea43 +vmlinux block_sync_page 0xe7f73876 +vmlinux block_truncate_page 0x21dc4716 +vmlinux block_write_full_page 0xfc5d48a2 +vmlinux bmap 0x657d7240 +vmlinux boot_cpu_data 0x98403e2c +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0x06193fd9 +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0x872e712a +vmlinux bus_create_file 0x3bc6f016 +vmlinux bus_find_device 0xf3fb4bbc +vmlinux bus_for_each_dev 0x541fef65 +vmlinux bus_for_each_drv 0x352bea68 +vmlinux bus_register 0x1325d322 +vmlinux bus_remove_device 0x65ad7272 +vmlinux bus_remove_file 0xaee4db50 +vmlinux bus_rescan_devices 0xa1e704a0 +vmlinux bus_unregister 0x5e8b2f86 +vmlinux cache_check 0x7e15b81e +vmlinux cache_flush 0x71fa908a +vmlinux cache_fresh 0x15754327 +vmlinux cache_init 0xc244025c +vmlinux cache_purge 0xac8a72f3 +vmlinux cache_register 0x05785233 +vmlinux cache_unregister 0x60919080 +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x43c852aa +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x7d458878 +vmlinux cap_bprm_apply_creds 0xa195d7ab +vmlinux cap_bprm_secureexec 0x3bd52936 +vmlinux cap_bprm_set_security 0x27b0e861 +vmlinux cap_bset 0x59ab4080 +vmlinux cap_capable 0xaa00d0ff +vmlinux cap_capget 0x1329dc56 +vmlinux cap_capset_check 0xc8640aa4 +vmlinux cap_capset_set 0x985e9703 +vmlinux cap_inode_removexattr 0x72c4ec50 +vmlinux cap_inode_setxattr 0x9eecd5d0 +vmlinux cap_netlink_recv 0x54b1c928 +vmlinux cap_netlink_send 0x6f4b31ae +vmlinux cap_ptrace 0xa4d0e244 +vmlinux cap_settime 0x819cc9ba +vmlinux cap_syslog 0xe1dd5368 +vmlinux cap_task_post_setuid 0x372390b2 +vmlinux cap_task_reparent_to_init 0xf77af910 +vmlinux cap_vm_enough_memory 0xaf236a7b +vmlinux capable 0x7dceceac +vmlinux cdev_add 0x17610c1e +vmlinux cdev_alloc 0x04ab411f +vmlinux cdev_del 0x26fb3673 +vmlinux cdev_init 0x1277f5e1 +vmlinux cfb_copyarea 0x774c9606 +vmlinux cfb_fillrect 0x4f9b09bf +vmlinux cfb_imageblit 0x9205f896 +vmlinux check_disk_change 0xa614eee6 +vmlinux class_create 0x15c5f0be +vmlinux class_create_file 0x563a7abb +vmlinux class_destroy 0xc537de3e +vmlinux class_device_add 0x73ee8257 +vmlinux class_device_create 0x801976b2 +vmlinux class_device_create_bin_file 0x1ff34ce8 +vmlinux class_device_create_file 0xcf526c1e +vmlinux class_device_del 0xaa193083 +vmlinux class_device_destroy 0x65648669 +vmlinux class_device_get 0x5545efb6 +vmlinux class_device_initialize 0x9d1ebdfb +vmlinux class_device_put 0x620fb924 +vmlinux class_device_register 0x4f3f778b +vmlinux class_device_remove_bin_file 0x38b8d73f +vmlinux class_device_remove_file 0xa190a4d0 +vmlinux class_device_unregister 0xc2a1309c +vmlinux class_get 0x4d5eae7a +vmlinux class_interface_register 0xf8daed6a +vmlinux class_interface_unregister 0xe3d2dd57 +vmlinux class_put 0xd2be1686 +vmlinux class_register 0xb47fec3c +vmlinux class_remove_file 0xbe139200 +vmlinux class_unregister 0xe29e47e5 +vmlinux clear_inode 0xfcc73f15 +vmlinux clear_page_dirty_for_io 0xb813e38f +vmlinux close_bdev_excl 0x63f8a01f +vmlinux color_table 0xf6bb4729 +vmlinux complete 0xa218bf61 +vmlinux complete_all 0x48f9f12d +vmlinux complete_and_exit 0x8e9eceaa +vmlinux compute_creds 0x7e303655 +vmlinux con_copy_unimap 0x673a47c0 +vmlinux con_set_default_unimap 0xc981554b +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0xa3a4ed03 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0xd0d726ac +vmlinux console_stop 0x1e912c7c +vmlinux cont_prepare_write 0xe08ac98a +vmlinux copy_from_user 0x0d6c963c +vmlinux copy_fs_struct 0xa4887c94 +vmlinux copy_in_user 0x8d944cbb +vmlinux copy_io_context 0x5abd63a7 +vmlinux copy_strings_kernel 0x43e4d06a +vmlinux copy_to_user 0x2f287f0d +vmlinux cpu_present_map 0x1a3f7887 +vmlinux cpu_sysdev_class 0x6ac8adf3 +vmlinux crc32_be 0xc09651d9 +vmlinux crc32_le 0x92ea4ae4 +vmlinux create_empty_buffers 0x9179b2f2 +vmlinux create_proc_entry 0xf552deca +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0x900d4d81 +vmlinux crypto_free_tfm 0x81ef9da3 +vmlinux crypto_hmac 0xb75bcbda +vmlinux crypto_hmac_final 0x38ebacc1 +vmlinux crypto_hmac_init 0xda4cb14f +vmlinux crypto_hmac_update 0x9926d18c +vmlinux crypto_register_alg 0xd75b57e7 +vmlinux crypto_unregister_alg 0x80b00f59 +vmlinux csum_partial 0x94095c16 +vmlinux csum_partial_copy_from_user 0x7cf86690 +vmlinux csum_partial_copy_fromiovecend 0x883c8eca +vmlinux csum_partial_copy_nocheck 0xa2963be1 +vmlinux current_fs_time 0xcbe2c685 +vmlinux current_io_context 0x80f3a703 +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0xcb727985 +vmlinux d_alloc_anon 0x56895a70 +vmlinux d_alloc_name 0xb06c5df3 +vmlinux d_alloc_root 0x605d7c56 +vmlinux d_delete 0x45343988 +vmlinux d_find_alias 0x347c3091 +vmlinux d_genocide 0x5c8230c5 +vmlinux d_instantiate 0xe29e1718 +vmlinux d_instantiate_unique 0x64ffd4be +vmlinux d_invalidate 0xf47fe8f9 +vmlinux d_lookup 0x551f16b2 +vmlinux d_move 0x6f60b7fe +vmlinux d_path 0xb2a0b60e +vmlinux d_prune_aliases 0x22d3dfa6 +vmlinux d_rehash 0x71423a53 +vmlinux d_splice_alias 0xf25b933d +vmlinux d_validate 0x0302987c +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0x8cf9d7ae +vmlinux dcache_dir_close 0x1b352a16 +vmlinux dcache_dir_lseek 0x4ea5aadc +vmlinux dcache_dir_open 0x071c49d2 +vmlinux dcache_lock 0x412ddc0c +vmlinux dcache_readdir 0xd69817e6 +vmlinux dcache_stride 0x29fe2400 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0x75f08044 +vmlinux default_backing_dev_info 0x43ddbe8c +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0xaddaba6a +vmlinux default_llseek 0x91538790 +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x2a683502 +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0x36c755e5 +vmlinux del_timer 0xda264347 +vmlinux dentry_open 0x73b407f1 +vmlinux dentry_unhash 0x682cb373 +vmlinux dequeue_signal 0x6594d125 +vmlinux destroy_8023_client 0x63239f9d +vmlinux destroy_workqueue 0xcb16276a +vmlinux dev_add_pack 0x25a728dc +vmlinux dev_alloc_name 0x9d8d0df0 +vmlinux dev_base 0x3ac1f8dd +vmlinux dev_base_lock 0x144ed3a1 +vmlinux dev_change_flags 0xed30f2b1 +vmlinux dev_close 0x5c9304be +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0xef1d9653 +vmlinux dev_get_by_index 0xd9cb8427 +vmlinux dev_get_by_name 0x77b1473c +vmlinux dev_get_flags 0x1a432b15 +vmlinux dev_getbyhwaddr 0x7a8a21a1 +vmlinux dev_getfirstbyhwtype 0x11bd25a0 +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0x5da3654b +vmlinux dev_mc_delete 0x820a3dd5 +vmlinux dev_mc_upload 0xc0144cab +vmlinux dev_open 0x2cc517ed +vmlinux dev_queue_xmit 0x9c14bca1 +vmlinux dev_remove_pack 0x828d8ad4 +vmlinux dev_set_allmulti 0x748232ae +vmlinux dev_set_mac_address 0xec5b43a9 +vmlinux dev_set_mtu 0x3f5e9ade +vmlinux dev_set_promiscuity 0x7e5c96b4 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0x7df54b1e +vmlinux device_attach 0x0f8139f4 +vmlinux device_bind_driver 0x73afecee +vmlinux device_create_file 0xa5f7f6b6 +vmlinux device_del 0x5ffee5f3 +vmlinux device_for_each_child 0x8d3c73a6 +vmlinux device_initialize 0x0cd0c043 +vmlinux device_register 0xf34c435a +vmlinux device_release_driver 0x591028c5 +vmlinux device_remove_file 0xd06c2bf2 +vmlinux device_to_hwpath 0x2c7ec2c4 +vmlinux device_unregister 0x16c3aa72 +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0x50fb0094 +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_get_required_mask 0xcc6fde90 +vmlinux dma_pool_alloc 0xdaba1cf5 +vmlinux dma_pool_create 0x1e650c7d +vmlinux dma_pool_destroy 0xb4b6a96b +vmlinux dma_pool_free 0x127a24ee +vmlinux dnotify_parent 0xd0854595 +vmlinux do_SAK 0x1aedf9ce +vmlinux do_add_mount 0x2ca95772 +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0x16754a63 +vmlinux do_gettimeofday 0x836a55de +vmlinux do_kern_mount 0x46048d66 +vmlinux do_mmap_pgoff 0x6d641bd9 +vmlinux do_munmap 0xd39f6cbf +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x3a36bcd9 +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0x27cbbea7 +vmlinux do_sync_read 0xea06121a +vmlinux do_sync_write 0xa9287c2a +vmlinux do_unblank_screen 0x600683d3 +vmlinux dput 0x27b3d098 +vmlinux drive_is_ready 0x8a1a79a3 +vmlinux driver_attach 0xdccc4dde +vmlinux driver_create_file 0xad00ac48 +vmlinux driver_find 0x29df6e70 +vmlinux driver_find_device 0x64e17074 +vmlinux driver_for_each_device 0x4491d51f +vmlinux driver_register 0x5a74e6a4 +vmlinux driver_remove_file 0x49d3b47c +vmlinux driver_unregister 0x4f5af13e +vmlinux drop_super 0x5decee1d +vmlinux dst_alloc 0xe32ab75f +vmlinux dst_destroy 0x52d3b9ea +vmlinux dump_stack 0x6b2dc060 +vmlinux eighty_ninty_three 0xf9c97832 +vmlinux eisa_bus_type 0xd941dc36 +vmlinux eisa_driver_register 0xbaed75ee +vmlinux eisa_driver_unregister 0xc3626d07 +vmlinux elevator_exit 0x83392258 +vmlinux elevator_init 0xc96e767f +vmlinux elv_add_request 0xd246708e +vmlinux elv_completed_request 0x8373cd3a +vmlinux elv_dequeue_request 0xc9879d43 +vmlinux elv_dispatch_sort 0xbe4f34ee +vmlinux elv_next_request 0x348e9904 +vmlinux elv_queue_empty 0x81031d21 +vmlinux elv_register 0x85d3927b +vmlinux elv_requeue_request 0x4e0473fa +vmlinux elv_rq_merge_ok 0x2ba914d3 +vmlinux elv_try_merge 0x79d3e8cc +vmlinux elv_unregister 0xea52754f +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_irq 0xfcec0987 +vmlinux end_buffer_async_write 0x6edf0d53 +vmlinux end_buffer_read_sync 0xc69ec0ae +vmlinux end_buffer_write_sync 0x995a34fe +vmlinux end_page_writeback 0x103a99e7 +vmlinux end_request 0x3e8f771c +vmlinux end_that_request_chunk 0xe9487777 +vmlinux end_that_request_first 0xb1ce80d9 +vmlinux end_that_request_last 0xa57411f2 +vmlinux eth_type_trans 0x5509ee06 +vmlinux ether_setup 0xc98c59bd +vmlinux ethtool_op_get_link 0xedd76a15 +vmlinux ethtool_op_get_perm_addr 0x8d13aef1 +vmlinux ethtool_op_get_sg 0xf9eb7019 +vmlinux ethtool_op_get_tso 0xf8c670b4 +vmlinux ethtool_op_get_tx_csum 0xcec87132 +vmlinux ethtool_op_get_ufo 0xbf56b6af +vmlinux ethtool_op_set_sg 0xc261f355 +vmlinux ethtool_op_set_tso 0xd3ec89d8 +vmlinux ethtool_op_set_tx_csum 0xc2024bd0 +vmlinux ethtool_op_set_tx_hw_csum 0x090ccaab +vmlinux ethtool_op_set_ufo 0xb7b6704e +vmlinux exit_fs 0x471c30ee +vmlinux f_setown 0x00205151 +vmlinux fasync_helper 0x41db18c7 +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0x33d9eca6 +vmlinux fb_con_duit 0x956ba42f +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0xb0d57ff0 +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0x5903073b +vmlinux fb_get_buffer_offset 0x34e77e3d +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0x68b607b2 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0x83f210cb +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0xa2f68813 +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x72b6b106 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0xd8ac0f48 +vmlinux fb_set_suspend 0x95ee11af +vmlinux fb_set_var 0x2c8e782b +vmlinux fb_show_logo 0x0a04a4d3 +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x315a6a12 +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fbcon_set_bitops 0x5bb75e2e +vmlinux fbcon_set_tileops 0xda807c5b +vmlinux fd_install 0x03e47e67 +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x403a9466 +vmlinux file_fsync 0x7edeed63 +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0x1124cec9 +vmlinux filemap_fdatawait 0xf198b358 +vmlinux filemap_fdatawrite 0x860952c1 +vmlinux filemap_flush 0x649be160 +vmlinux filemap_nopage 0xa87f0a7f +vmlinux filemap_populate 0x70a1f336 +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0xcf009be8 +vmlinux filp_open 0xcf754a33 +vmlinux find_bus 0x83940591 +vmlinux find_font 0xf7584a9c +vmlinux find_get_page 0x330445a0 +vmlinux find_inode_number 0xb0cf6cee +vmlinux find_lock_page 0xe8842bbb +vmlinux find_or_create_page 0x7ee80d94 +vmlinux find_task_by_pid_type 0x41eadc8f +vmlinux find_trylock_page 0xb13a9f24 +vmlinux find_vma 0x30648f5e +vmlinux finish_wait 0x51493d94 +vmlinux firmware_register 0xfbbfa8cc +vmlinux firmware_unregister 0xd82722d7 +vmlinux fixup_get_user_skip_1 0x6c911f35 +vmlinux fixup_get_user_skip_2 0xf5737934 +vmlinux fixup_put_user_skip_1 0x85bdbbce +vmlinux fixup_put_user_skip_2 0x1c5fddcf +vmlinux flock_lock_file_wait 0x26959cd3 +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_all_caches 0x7e3ddcc0 +vmlinux flush_cache_all_local 0xa1cdce17 +vmlinux flush_data_cache_local 0x21c1455c +vmlinux flush_dcache_page 0x9df8fcc3 +vmlinux flush_kernel_dcache_page 0xe8500931 +vmlinux flush_kernel_dcache_range_asm 0x831f7f68 +vmlinux flush_kernel_icache_range_asm 0x307acde8 +vmlinux flush_old_exec 0x2576b147 +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0x1dc821fd +vmlinux flush_workqueue 0xceaf1dcd +vmlinux follow_down 0x56d8bca1 +vmlinux follow_up 0x155b5a1b +vmlinux force_sig 0x9254fa76 +vmlinux fput 0x3394b8d8 +vmlinux framebuffer_alloc 0xcefc243b +vmlinux framebuffer_release 0x8daf94b1 +vmlinux free_buffer_head 0xb53ea4cb +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0x41d05827 +vmlinux free_pages 0x4302d0eb +vmlinux free_task 0x59046add +vmlinux freeze_bdev 0xfa2136a2 +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0x2f550f18 +vmlinux g_make_token_header 0x00c52ef5 +vmlinux g_token_size 0xb5dea7ef +vmlinux g_verify_token_header 0xf8b2ff6e +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0x1c725e84 +vmlinux gen_replace_estimator 0x6c208b39 +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic_block_bmap 0xc8223002 +vmlinux generic_commit_write 0x7c541075 +vmlinux generic_cont_expand 0x25173b51 +vmlinux generic_delete_inode 0xadcdd421 +vmlinux generic_drop_inode 0xca2e7b88 +vmlinux generic_file_aio_read 0x055b42e1 +vmlinux generic_file_aio_write 0x385dca96 +vmlinux generic_file_aio_write_nolock 0x3f478082 +vmlinux generic_file_buffered_write 0x82ce921b +vmlinux generic_file_direct_write 0xfc7f1d19 +vmlinux generic_file_llseek 0x034d99fc +vmlinux generic_file_mmap 0xfb9044f1 +vmlinux generic_file_open 0x33d012c1 +vmlinux generic_file_read 0xc2c136af +vmlinux generic_file_readonly_mmap 0x70a94814 +vmlinux generic_file_readv 0x2183b0c2 +vmlinux generic_file_sendfile 0x89d4ba9d +vmlinux generic_file_write 0x8c62fffc +vmlinux generic_file_write_nolock 0xc34b4e83 +vmlinux generic_file_writev 0xc287641d +vmlinux generic_fillattr 0xd774415f +vmlinux generic_getxattr 0x6fdd07f3 +vmlinux generic_ide_ioctl 0xca6c9ff8 +vmlinux generic_listxattr 0xdfa865b0 +vmlinux generic_make_request 0xd400a711 +vmlinux generic_osync_inode 0xf5d84db5 +vmlinux generic_permission 0xed901ddb +vmlinux generic_read_dir 0xd75dd1fd +vmlinux generic_readlink 0x0c603d9f +vmlinux generic_removexattr 0xebe51d1a +vmlinux generic_ro_fops 0x95a44d67 +vmlinux generic_setxattr 0x3da497f2 +vmlinux generic_shutdown_super 0xc5a297aa +vmlinux generic_unplug_device 0xaf9ff408 +vmlinux generic_write_checks 0x7bbb8bab +vmlinux genl_register_family 0x9a486806 +vmlinux genl_register_ops 0x6773cede +vmlinux genl_sock 0x25d4425c +vmlinux genl_unregister_family 0x13f86b50 +vmlinux genl_unregister_ops 0x24f6430b +vmlinux get_bus 0xe8f34c30 +vmlinux get_cpu_sysdev 0xa4e1bf8e +vmlinux get_dcookie 0x97457c61 +vmlinux get_default_font 0x093e3659 +vmlinux get_device 0xd26ac5e6 +vmlinux get_disk 0xa96d4689 +vmlinux get_driver 0x4923b6e5 +vmlinux get_empty_filp 0xcde4efd4 +vmlinux get_fs_type 0x939750ed +vmlinux get_io_context 0xe3766fa7 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_pci_node_path 0x15932188 +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0xab9fa5c6 +vmlinux get_sb_nodev 0x2a3abb4f +vmlinux get_sb_pseudo 0x868974a0 +vmlinux get_sb_single 0x8b64e5db +vmlinux get_super 0x85ef3a16 +vmlinux get_task_mm 0x62f4c693 +vmlinux get_unmapped_area 0x4726be25 +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0xd8eca435 +vmlinux get_write_access 0xa265d98b +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x6098ba16 +vmlinux gnet_stats_copy_app 0x47b3c2cd +vmlinux gnet_stats_copy_basic 0x5e81ec5d +vmlinux gnet_stats_copy_queue 0x699a53cf +vmlinux gnet_stats_copy_rate_est 0x0d1ac2ab +vmlinux gnet_stats_finish_copy 0xcb9e527d +vmlinux gnet_stats_start_copy 0x7c47aee1 +vmlinux gnet_stats_start_copy_compat 0xc3ecd8f6 +vmlinux grab_cache_page_nowait 0x2f032404 +vmlinux groups_alloc 0x51cd47e2 +vmlinux groups_free 0x111bcb2c +vmlinux gsc_alloc_irq 0x9e11c47b +vmlinux gsc_claim_irq 0xcc794ffc +vmlinux gss_decrypt_xdr_buf 0xe80d17db +vmlinux gss_encrypt_xdr_buf 0xcdefeb70 +vmlinux gss_mech_get 0x2565bc50 +vmlinux gss_mech_get_by_name 0xdcaa28b9 +vmlinux gss_mech_get_by_pseudoflavor 0x5d6caf8a +vmlinux gss_mech_put 0xbe5f0a83 +vmlinux gss_mech_register 0x12a254a6 +vmlinux gss_mech_unregister 0x63931b3e +vmlinux gss_pseudoflavor_to_service 0xfdc51933 +vmlinux gss_service_to_auth_domain_name 0xc1d650f6 +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0x057cc89b +vmlinux have_submounts 0xf661c3fd +vmlinux high_memory 0x8a7d1c31 +vmlinux hppa_dma_ops 0x883ff550 +vmlinux hwmon_device_register 0x7d5e5cae +vmlinux hwmon_device_unregister 0xc7482d1f +vmlinux hwpath_to_device 0xfa11b306 +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x83c848ed +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_add_setting 0xb4d8bb1f +vmlinux ide_build_dmatable 0x361438f3 +vmlinux ide_build_sglist 0xe9492eff +vmlinux ide_bus_type 0x24ff8ea7 +vmlinux ide_config_drive_speed 0x484051c7 +vmlinux ide_destroy_dmatable 0x407e1638 +vmlinux ide_dma_enable 0x8644005d +vmlinux ide_dma_intr 0x4d8b882a +vmlinux ide_dma_setup 0xc91833dd +vmlinux ide_dma_speed 0xe150a001 +vmlinux ide_dma_start 0xe7a7e556 +vmlinux ide_dma_verbose 0x9bd3bae9 +vmlinux ide_do_drive_cmd 0x311fe991 +vmlinux ide_do_reset 0xe2ec74a9 +vmlinux ide_dump_status 0xc728c4e1 +vmlinux ide_end_drive_cmd 0xfad9b8a7 +vmlinux ide_end_request 0x2f745429 +vmlinux ide_error 0xf76a9e89 +vmlinux ide_execute_command 0x535d0887 +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x00f54863 +vmlinux ide_get_error_location 0x09f24967 +vmlinux ide_hwifs 0x5457103a +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0xfdf4fef5 +vmlinux ide_init_drive_cmd 0x2f0f063d +vmlinux ide_init_sg_cmd 0x91fb4e03 +vmlinux ide_lock 0xf1dced4c +vmlinux ide_map_sg 0xc4fd48ed +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0xaf7ade44 +vmlinux ide_pci_unregister_driver 0xd9dbd189 +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0x1339a5e6 +vmlinux ide_register_hw 0x66cb7937 +vmlinux ide_register_hw_with_fixup 0xe9c69ef2 +vmlinux ide_register_region 0x4d004ceb +vmlinux ide_register_subdriver 0x2390a257 +vmlinux ide_set_handler 0x4c8b8bd3 +vmlinux ide_set_xfer_rate 0x00a5b153 +vmlinux ide_setup_dma 0xd6236b11 +vmlinux ide_setup_pci_device 0xc0b5aace +vmlinux ide_setup_pci_devices 0x95914c5c +vmlinux ide_setup_pci_noise 0x4d7e5237 +vmlinux ide_spin_wait_hwgroup 0x711e9bc3 +vmlinux ide_stall_queue 0xfe2c2c4f +vmlinux ide_undecoded_slave 0xd3674359 +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0xa9a6cfb5 +vmlinux ide_unregister_subdriver 0x3e2fa177 +vmlinux ide_use_dma 0x564d1549 +vmlinux ide_wait_not_busy 0x789803b3 +vmlinux ide_wait_stat 0x2128f0be +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0x34f9e7d5 +vmlinux idr_find 0x3b17b71d +vmlinux idr_get_new 0xc29e86a1 +vmlinux idr_get_new_above 0x7b022e51 +vmlinux idr_init 0x54b9c5cd +vmlinux idr_pre_get 0x6c072e4f +vmlinux idr_remove 0x2d69aeff +vmlinux iget5_locked 0xf1a39e08 +vmlinux iget_locked 0xc62e539b +vmlinux igrab 0xce1434e4 +vmlinux ilookup 0x560a9eab +vmlinux ilookup5 0x1e16c3ff +vmlinux ilookup5_nowait 0xaf811bf3 +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0xbf6ec1e9 +vmlinux in_egroup_p 0xd8a2ab95 +vmlinux in_group_p 0xc3cf1128 +vmlinux inb 0x6671bac0 +vmlinux inet6_lookup 0x1f6f4760 +vmlinux inet6_lookup_listener 0xe68927e4 +vmlinux inet_accept 0x1007994e +vmlinux inet_add_protocol 0x6312cbb9 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0xff2b1667 +vmlinux inet_bind_bucket_create 0x34f6f317 +vmlinux inet_bind_hash 0x0af58125 +vmlinux inet_csk_accept 0x422d04d1 +vmlinux inet_csk_clear_xmit_timers 0x466e306d +vmlinux inet_csk_clone 0x7cfac0e1 +vmlinux inet_csk_delete_keepalive_timer 0xc3a658c2 +vmlinux inet_csk_destroy_sock 0xb1b7d9a0 +vmlinux inet_csk_get_port 0xe0dcfda8 +vmlinux inet_csk_init_xmit_timers 0x8544279a +vmlinux inet_csk_listen_start 0x00a21b82 +vmlinux inet_csk_listen_stop 0xb6cc84cc +vmlinux inet_csk_reqsk_queue_hash_add 0x3f7922bb +vmlinux inet_csk_reqsk_queue_prune 0xf27a0e24 +vmlinux inet_csk_reset_keepalive_timer 0xe1b0fd60 +vmlinux inet_csk_route_req 0x5d3fdc91 +vmlinux inet_csk_search_req 0x5d16e389 +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0xb793f88a +vmlinux inet_dgram_connect 0x07e9d825 +vmlinux inet_dgram_ops 0x9741989c +vmlinux inet_diag_register 0xeb95487c +vmlinux inet_diag_unregister 0x5f03b5ad +vmlinux inet_getname 0xc711a4d7 +vmlinux inet_ioctl 0xd29da181 +vmlinux inet_listen 0x28c63f3f +vmlinux inet_listen_wlock 0x6d444c0b +vmlinux inet_put_port 0xf83f8e0e +vmlinux inet_register_protosw 0x53025421 +vmlinux inet_release 0x007d24ce +vmlinux inet_select_addr 0xa9c8a8ab +vmlinux inet_sendmsg 0xa2adceef +vmlinux inet_shutdown 0xe7199a65 +vmlinux inet_sk_rebuild_header 0x67eee38f +vmlinux inet_sock_destruct 0xe4492d42 +vmlinux inet_stream_connect 0xa41e033c +vmlinux inet_stream_ops 0x6bc537b8 +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0xb270b68e +vmlinux inet_twsk_deschedule 0xe222f6ab +vmlinux inet_twsk_schedule 0x2c5a4040 +vmlinux inet_unregister_protosw 0x50347ac1 +vmlinux inetdev_by_index 0xde7934bd +vmlinux init_buffer 0x74e425ef +vmlinux init_mm 0x9007532d +vmlinux init_rwsem 0x81a777f2 +vmlinux init_special_inode 0x3852b733 +vmlinux init_task 0x7b91ec6c +vmlinux init_timer 0x6c9087dd +vmlinux inl 0xd377477b +vmlinux inode_add_bytes 0x1d668b9b +vmlinux inode_change_ok 0x1056ffbf +vmlinux inode_get_bytes 0x6f072ff3 +vmlinux inode_init_once 0x30681f63 +vmlinux inode_needs_sync 0xc91f6faf +vmlinux inode_set_bytes 0xc78140d0 +vmlinux inode_setattr 0xbab223f8 +vmlinux inode_sub_bytes 0x6bb83d19 +vmlinux inode_update_time 0xe3197cfa +vmlinux inotify_dentry_parent_queue_event 0xc9971bc3 +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0xfa7ae9da +vmlinux inotify_inode_queue_event 0x01630dcd +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0x9d5b191b +vmlinux input_allocate_device 0xbfac64be +vmlinux input_class 0x4374a09c +vmlinux input_close_device 0x1a7e5d45 +vmlinux input_event 0xc3d74c46 +vmlinux input_flush_device 0xd0ea353e +vmlinux input_grab_device 0x0457435f +vmlinux input_open_device 0xa99a06f5 +vmlinux input_register_device 0x27ad99de +vmlinux input_register_handler 0x93c502fd +vmlinux input_release_device 0xf0de724a +vmlinux input_unregister_device 0xbe233639 +vmlinux input_unregister_handler 0x2effb82c +vmlinux insb 0x10902bf7 +vmlinux insert_resource 0xdc3992ac +vmlinux insl 0x73e0877a +vmlinux install_page 0xfd0dd564 +vmlinux insw 0x69010b06 +vmlinux int_sqrt 0xb678366f +vmlinux int_to_scsilun 0xea10212a +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0xeb922cb9 +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0xf9b28bac +vmlinux interruptible_sleep_on_timeout 0xf51c639f +vmlinux invalidate_bdev 0x4d731ab3 +vmlinux invalidate_inode_pages 0x93a86f77 +vmlinux invalidate_inode_pages2 0xd7be717f +vmlinux invalidate_inode_pages2_range 0x051ae3a7 +vmlinux invalidate_inodes 0x18a1afbe +vmlinux invalidate_partition 0x447a893d +vmlinux inw 0x493dc1ef +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0x281bcb23 +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0xc5534d64 +vmlinux ioread16_rep 0x5857b225 +vmlinux ioread16be 0xf065f629 +vmlinux ioread32 0xe484e35f +vmlinux ioread32_rep 0x3f0546a8 +vmlinux ioread32be 0xfdb9b629 +vmlinux ioread8 0xf10de535 +vmlinux ioread8_rep 0xf441ac43 +vmlinux iounmap 0x5fb196d4 +vmlinux iov_shorten 0x92392cd9 +vmlinux iowrite16 0x8c183cbe +vmlinux iowrite16_rep 0x8cc79cab +vmlinux iowrite16be 0x69a0ca7d +vmlinux iowrite32 0x436c2179 +vmlinux iowrite32_rep 0xbfc177bc +vmlinux iowrite32be 0x6acb973d +vmlinux iowrite8 0x0727c4f3 +vmlinux iowrite8_rep 0xa4b94fea +vmlinux ip4_datagram_connect 0x519f56cf +vmlinux ip_build_and_send_pkt 0x8965c66b +vmlinux ip_cmsg_recv 0x95b23851 +vmlinux ip_ct_attach 0xef73d885 +vmlinux ip_defrag 0xd24965a9 +vmlinux ip_fragment 0x6e3b4c65 +vmlinux ip_generic_getfrag 0xc49c026c +vmlinux ip_getsockopt 0x3201b44a +vmlinux ip_mc_dec_group 0x294a6957 +vmlinux ip_mc_inc_group 0x5249b05d +vmlinux ip_mc_join_group 0x0c731fa8 +vmlinux ip_queue_xmit 0x3556907f +vmlinux ip_route_input 0xf29ba570 +vmlinux ip_route_me_harder 0xd1d801ac +vmlinux ip_route_output_flow 0x469cb089 +vmlinux ip_route_output_key 0x5bccb4bc +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0x434ccab0 +vmlinux ip_setsockopt 0x7945f449 +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0x028cff10 +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0x93e0e7be +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0x78e21b80 +vmlinux irq_stat 0xa32b0300 +vmlinux is_bad_inode 0xbbb7caa5 +vmlinux is_console_locked 0x944a564d +vmlinux isa_bridge 0xe7d036b3 +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux iunique 0x6c10ea84 +vmlinux iw_handler_get_spy 0xed4b0697 +vmlinux iw_handler_get_thrspy 0xa5d6d581 +vmlinux iw_handler_set_spy 0xf9a971a8 +vmlinux iw_handler_set_thrspy 0xa49b1b5d +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x9720e4fd +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0x3948e537 +vmlinux kernel_recvmsg 0xfe54a794 +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0xb6ec769b +vmlinux kernel_subsys 0x8a367b7d +vmlinux kernel_thread 0x7e9ebb05 +vmlinux kfifo_alloc 0x8f9b86b2 +vmlinux kfifo_free 0x4719ba4e +vmlinux kfifo_init 0x4b9f3684 +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0x3f3775d6 +vmlinux kill_anon_super 0xd97f4e3a +vmlinux kill_block_super 0x31c8d2fa +vmlinux kill_fasync 0x4d448380 +vmlinux kill_litter_super 0x926a7ac8 +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xec10e63a +vmlinux klist_add_head 0x915acc1f +vmlinux klist_add_tail 0x89578b6b +vmlinux klist_del 0x84a1bc7c +vmlinux klist_init 0x9ea2eecb +vmlinux klist_iter_exit 0xb4d64e3c +vmlinux klist_iter_init 0x2cd3a4fb +vmlinux klist_iter_init_node 0xa3e837a8 +vmlinux klist_next 0xd5dd30ac +vmlinux klist_node_attached 0xba549831 +vmlinux klist_remove 0x99b82416 +vmlinux km_new_mapping 0x4ab71908 +vmlinux km_policy_notify 0x46850efc +vmlinux km_state_notify 0xcc66917e +vmlinux km_waitq 0xef1a1668 +vmlinux kmem_cache_alloc 0x4cb4a0e7 +vmlinux kmem_cache_create 0x4fbae568 +vmlinux kmem_cache_destroy 0xe9286338 +vmlinux kmem_cache_free 0x9a3e5621 +vmlinux kmem_cache_name 0xfa0e765a +vmlinux kmem_cache_shrink 0xfc4aaa96 +vmlinux kmem_cache_size 0x2dcd7209 +vmlinux kmem_find_general_cachep 0x17c5e60f +vmlinux kobject_add 0x40a451a4 +vmlinux kobject_del 0x9c0b096b +vmlinux kobject_get 0xd6cb6eb8 +vmlinux kobject_hotplug 0xa5c539a1 +vmlinux kobject_init 0x2275f779 +vmlinux kobject_put 0xf69c4e40 +vmlinux kobject_register 0x437c803f +vmlinux kobject_set_name 0x05dc2a36 +vmlinux kobject_uevent 0xc55e0ef3 +vmlinux kobject_uevent_atomic 0x3a944e29 +vmlinux kobject_unregister 0xf88cbced +vmlinux krb5_decrypt 0xcdffb388 +vmlinux krb5_encrypt 0x41a93c54 +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0x3a224c48 +vmlinux kset_register 0x95d54017 +vmlinux kset_unregister 0x3f015101 +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x7c0ea505 +vmlinux kthread_create 0x04fae463 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0xb48a0e24 +vmlinux kthread_stop_sem 0x892780a1 +vmlinux kzalloc 0x5a3b6eca +vmlinux laptop_mode 0x76d3cd60 +vmlinux lclear_user 0x57b8d504 +vmlinux lease_get_mtime 0x03e1b6a9 +vmlinux lease_modify 0xb70222f4 +vmlinux linkwatch_fire_event 0x58d565b8 +vmlinux ll_rw_block 0xa62f2cba +vmlinux load_nls 0xc2e1c9eb +vmlinux load_nls_default 0xdff26bc2 +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_may_read 0x30f584da +vmlinux lock_may_write 0x9839be9e +vmlinux lock_rename 0xe3346ca3 +vmlinux lock_sock 0xe7aec7c3 +vmlinux lockd_down 0xa7b91a7b +vmlinux lockd_up 0xf6933c48 +vmlinux locks_copy_lock 0xb2c81156 +vmlinux locks_init_lock 0xf3962bf7 +vmlinux locks_mandatory_area 0xb5b988eb +vmlinux locks_remove_posix 0x035bb53c +vmlinux lookup_create 0xbba903b0 +vmlinux lookup_hash 0xedd790be +vmlinux lookup_instantiate_filp 0x5c571fdf +vmlinux lookup_one_len 0x7f6f232d +vmlinux loopback_dev 0x68b26718 +vmlinux loops_per_jiffy 0xba497f13 +vmlinux lstrncpy_from_user 0x58d282f6 +vmlinux lstrnlen_user 0xd624bb77 +vmlinux make_8023_client 0xfdfd7f48 +vmlinux make_bad_inode 0x6a0dc8d6 +vmlinux make_checksum 0xcee23854 +vmlinux malloc_sizes 0x906c9837 +vmlinux mapping_tagged 0x8e078280 +vmlinux mark_buffer_async_write 0x564c7ea7 +vmlinux mark_buffer_dirty 0xed82327d +vmlinux mark_buffer_dirty_inode 0xa32aa3ad +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0xf301e9df +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0x8db8cd11 +vmlinux may_umount_tree 0x9f59470e +vmlinux memchr 0xc740c64a +vmlinux memcmp 0xc7ec28b0 +vmlinux memcpy 0x236c8c64 +vmlinux memcpy_fromio 0xfbbb764c +vmlinux memcpy_fromiovec 0x36139a51 +vmlinux memcpy_fromiovecend 0x9bc565c5 +vmlinux memcpy_toio 0xa1d60f0f +vmlinux memcpy_toiovec 0x2876a6d3 +vmlinux memmove 0x5dbbe98e +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0xab53b0a8 +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0x1f7cc628 +vmlinux mempool_create_node 0xd3427f73 +vmlinux mempool_destroy 0xac54fc9f +vmlinux mempool_free 0x062aba95 +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x25ba121c +vmlinux memscan 0x9c0ea3cd +vmlinux memset 0xde0bdcff +vmlinux memset_io 0x6da41e98 +vmlinux misc_deregister 0x4a012f93 +vmlinux misc_register 0x0aa758a4 +vmlinux mmput 0xe9c92388 +vmlinux mnt_pin 0x53c48788 +vmlinux mnt_unpin 0x03d4ac43 +vmlinux mntput_no_expire 0x0ad65d73 +vmlinux mod_reg_security 0x43cf319d +vmlinux mod_timer 0x56662b32 +vmlinux mod_unreg_security 0xbbb73e74 +vmlinux module_add_driver 0x4d7c7c29 +vmlinux module_refcount 0x5e10e53b +vmlinux module_remove_driver 0xfec7b1f6 +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0x47258b73 +vmlinux mpage_readpages 0x4ffe5c35 +vmlinux mpage_writepage 0xbf2e00ba +vmlinux mpage_writepages 0xcbc1cb2d +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux n_tty_ioctl 0xc6730a32 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0xc43ca2a1 +vmlinux neigh_changeaddr 0xf254b314 +vmlinux neigh_compat_output 0x5a746331 +vmlinux neigh_connected_output 0x63b823aa +vmlinux neigh_create 0x27a63a1d +vmlinux neigh_delete 0x4cad61a1 +vmlinux neigh_destroy 0xfc29b2ee +vmlinux neigh_dump_info 0xdeb25ad5 +vmlinux neigh_event_ns 0x15daac66 +vmlinux neigh_for_each 0xdd146f0d +vmlinux neigh_ifdown 0xd712acb9 +vmlinux neigh_lookup 0x2e48e158 +vmlinux neigh_lookup_nodev 0x42d8126c +vmlinux neigh_parms_alloc 0x606d04fd +vmlinux neigh_parms_release 0x457ab13e +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0x63effd4c +vmlinux neigh_seq_next 0x74b378a9 +vmlinux neigh_seq_start 0xe5484437 +vmlinux neigh_seq_stop 0xc11acb9e +vmlinux neigh_sysctl_register 0xa1390af5 +vmlinux neigh_sysctl_unregister 0x138b79fb +vmlinux neigh_table_clear 0xfa3e7533 +vmlinux neigh_table_init 0x4f482e0f +vmlinux neigh_update 0x445a20af +vmlinux neigh_update_hhs 0x4aee6de5 +vmlinux neightbl_dump_info 0x1eef6605 +vmlinux neightbl_set 0xe6fc08e7 +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0xc49e885e +vmlinux netdev_features_change 0xd2a77f66 +vmlinux netdev_rx_csum_fault 0xaebf7d49 +vmlinux netdev_set_master 0x44b59e35 +vmlinux netdev_state_change 0x4f879ffc +vmlinux netif_carrier_off 0xd56c2764 +vmlinux netif_carrier_on 0xbfc07292 +vmlinux netif_receive_skb 0xf5d11e94 +vmlinux netif_rx 0x1074334b +vmlinux netif_rx_ni 0xce64d3ca +vmlinux netlink_ack 0x57c67993 +vmlinux netlink_broadcast 0xdf53f6c0 +vmlinux netlink_dump_start 0x27fb5a31 +vmlinux netlink_kernel_create 0x20b18756 +vmlinux netlink_queue_skip 0x0d228c1c +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0x3a1124ad +vmlinux netlink_set_err 0xd6473350 +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0x6121b9e9 +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x952ace55 +vmlinux netpoll_parse_options 0x40b85bcb +vmlinux netpoll_poll 0xff672187 +vmlinux netpoll_queue 0x54555a62 +vmlinux netpoll_send_udp 0xc60c3aea +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0x151198fa +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0xa3b88017 +vmlinux next_thread 0xafda8609 +vmlinux nf_ct_attach 0xc415b18d +vmlinux nf_getsockopt 0xe4c52dd5 +vmlinux nf_hook_slow 0x699b3d2d +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0xa2861bc6 +vmlinux nf_log_register 0x8a5c1bef +vmlinux nf_log_unregister_logger 0x2e135740 +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0x7d280bfc +vmlinux nf_register_queue_handler 0x462e3373 +vmlinux nf_register_queue_rerouter 0x454e1964 +vmlinux nf_register_sockopt 0x9a311dfb +vmlinux nf_reinject 0xf944c607 +vmlinux nf_setsockopt 0x83c51ad2 +vmlinux nf_unregister_hook 0x065bad1c +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0xb82db51b +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0xd37f541f +vmlinux nfs_debug 0xaf5bf6ef +vmlinux nfsd_debug 0xbf9d1b96 +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0x4c4c956e +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0x3075b280 +vmlinux nla_reserve 0xd5e54065 +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0xa33f7c7c +vmlinux nla_validate 0x2cc98162 +vmlinux nlm_debug 0x53445f68 +vmlinux nlmclnt_proc 0x7c0f230f +vmlinux nlmsvc_ops 0xa4a561a6 +vmlinux no_llseek 0x46fca105 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x48ac3674 +vmlinux nobh_prepare_write 0x7f1903a6 +vmlinux nobh_truncate_page 0xe40c5b01 +vmlinux nobh_writepage 0xd48d8db4 +vmlinux node_data 0xc62633c2 +vmlinux node_online_map 0x4385b98f +vmlinux node_possible_map 0x8838ae64 +vmlinux nonseekable_open 0x8857401b +vmlinux noop_qdisc 0x44e21118 +vmlinux noop_qdisc_ops 0x823887d2 +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x6bec9ad5 +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0xe62a4330 +vmlinux open_by_devnum 0x76a819cb +vmlinux open_exec 0x3b721ee1 +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux outb 0xe2bbd43a +vmlinux outl 0x22c26a55 +vmlinux outsb 0x12ea337e +vmlinux outsl 0x24bd930a +vmlinux outsw 0x533903d8 +vmlinux outw 0x8c66ce6b +vmlinux p80211_resume 0x5fa828c7 +vmlinux p80211_suspend 0x92f34461 +vmlinux p80211netdev_hwremoved 0xbc296860 +vmlinux p80211netdev_rx 0xa75a3c76 +vmlinux p80211skb_free 0xfe53957f +vmlinux p80211skb_rxmeta_attach 0xb921aed3 +vmlinux page_follow_link_light 0xa0a3e3cf +vmlinux page_put_link 0x176d9e05 +vmlinux page_readlink 0x531e0b0d +vmlinux page_symlink 0x8b650a0d +vmlinux page_symlink_inode_operations 0x290cfee8 +vmlinux pagevec_lookup_tag 0x57122ae1 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux path_lookup 0xd8c845e7 +vmlinux path_release 0xe4e929df +vmlinux path_walk 0x56118283 +vmlinux pci_add_new_bus 0xe27a18ed +vmlinux pci_assign_resource 0xde439207 +vmlinux pci_block_user_cfg_access 0xbbcb0ea2 +vmlinux pci_bus_add_device 0x0bcfc4d9 +vmlinux pci_bus_add_devices 0x31fd03ec +vmlinux pci_bus_alloc_resource 0x6f4a5f95 +vmlinux pci_bus_assign_resources 0x04fc29ef +vmlinux pci_bus_find_capability 0x6b98ed43 +vmlinux pci_bus_max_busnr 0xd82000d5 +vmlinux pci_bus_read_config_byte 0x73ff5db8 +vmlinux pci_bus_read_config_dword 0x2d230076 +vmlinux pci_bus_read_config_word 0x86a44630 +vmlinux pci_bus_size_bridges 0xbf0c2208 +vmlinux pci_bus_type 0x2187080f +vmlinux pci_bus_write_config_byte 0xacfdce64 +vmlinux pci_bus_write_config_dword 0x3737e9d2 +vmlinux pci_bus_write_config_word 0xdec8160e +vmlinux pci_choose_state 0xed5bd737 +vmlinux pci_clear_mwi 0xa9028de0 +vmlinux pci_create_bus 0x3714367a +vmlinux pci_dev_driver 0x0cb0ed96 +vmlinux pci_dev_get 0x34485b50 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0xbcb5f4fb +vmlinux pci_disable_device 0x6a7253c2 +vmlinux pci_do_scan_bus 0xd8d59f32 +vmlinux pci_enable_bridges 0x8fd3b80e +vmlinux pci_enable_device 0x82d437a1 +vmlinux pci_enable_device_bars 0x6c87509f +vmlinux pci_enable_wake 0xef43e648 +vmlinux pci_find_bus 0x69453995 +vmlinux pci_find_capability 0x1ceff6c8 +vmlinux pci_find_device 0x9548c587 +vmlinux pci_find_device_reverse 0x54406842 +vmlinux pci_find_next_bus 0x5fd193bc +vmlinux pci_find_next_capability 0x74e3afb6 +vmlinux pci_find_parent_resource 0x12e226b8 +vmlinux pci_find_slot 0xee18a3a7 +vmlinux pci_fixup_device 0x8b8c1c5c +vmlinux pci_get_class 0xd7c185f1 +vmlinux pci_get_device 0x64684bda +vmlinux pci_get_slot 0x4b4103c2 +vmlinux pci_get_subsys 0xbb1bc53d +vmlinux pci_intx 0xb197b33e +vmlinux pci_iomap 0xd55c374d +vmlinux pci_iounmap 0xc2100d22 +vmlinux pci_map_rom 0xa2d0b193 +vmlinux pci_map_rom_copy 0x7b03e5a9 +vmlinux pci_match_device 0xe2056fab +vmlinux pci_match_id 0x789c169b +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0x5cc3b2f7 +vmlinux pci_proc_attach_device 0xd4aac6aa +vmlinux pci_proc_detach_bus 0x05df45d4 +vmlinux pci_release_region 0xacb57b37 +vmlinux pci_release_regions 0xcdd72941 +vmlinux pci_remove_behind_bridge 0xa6c284c3 +vmlinux pci_remove_bus 0x3032efde +vmlinux pci_remove_bus_device 0x4bd3c1a2 +vmlinux pci_remove_device_safe 0xc3788a1e +vmlinux pci_remove_rom 0x2c290203 +vmlinux pci_request_region 0xadd3760d +vmlinux pci_request_regions 0x4278a98a +vmlinux pci_restore_bars 0xfc01ade0 +vmlinux pci_restore_state 0xc9bc1a62 +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0xe3de91bd +vmlinux pci_scan_bridge 0xf519fa3f +vmlinux pci_scan_bus_parented 0x8a6255ce +vmlinux pci_scan_child_bus 0x84682d55 +vmlinux pci_scan_single_device 0x43f2988c +vmlinux pci_scan_slot 0x4ce19b3b +vmlinux pci_set_consistent_dma_mask 0x289ea6ac +vmlinux pci_set_dma_mask 0x2ab4fadb +vmlinux pci_set_master 0xd11cc0e8 +vmlinux pci_set_mwi 0x088f0874 +vmlinux pci_set_power_state 0x2c625982 +vmlinux pci_setup_cardbus 0xf276d4aa +vmlinux pci_unblock_user_cfg_access 0xc71fafb5 +vmlinux pci_unmap_rom 0xec3ee322 +vmlinux pci_unregister_driver 0x33c157a0 +vmlinux pci_walk_bus 0x75a7dd40 +vmlinux pcibios_bus_to_resource 0x919ed68d +vmlinux pcibios_resource_to_bus 0xa84f3234 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pciserial_init_ports 0x0a449c66 +vmlinux pciserial_remove_ports 0x38a1f3ee +vmlinux pciserial_resume_ports 0xa35cd89a +vmlinux pciserial_suspend_ports 0x10273aaa +vmlinux pdc_add_valid 0xcf96b65b +vmlinux pdc_get_initiator 0x53622bb3 +vmlinux pdc_iodc_read 0xab4e4345 +vmlinux pdc_lan_station_id 0xe7765108 +vmlinux pdc_stable_get_size 0xce67b3ce +vmlinux pdc_stable_initialize 0x90918311 +vmlinux pdc_stable_read 0x99049ca2 +vmlinux pdc_stable_verify_contents 0x1228329d +vmlinux pdc_stable_write 0x0423a8ab +vmlinux pdc_sti_call 0xf2b4938e +vmlinux pdc_tod_read 0x26f7f79a +vmlinux pdc_tod_set 0x6ae85394 +vmlinux per_cpu__kstat 0x09d429dc +vmlinux per_cpu__softnet_data 0x5e931170 +vmlinux permission 0x7d536e26 +vmlinux pfifo_qdisc_ops 0xdbc9e1dc +vmlinux pfnnid_map 0xe00fd713 +vmlinux platform_add_devices 0x28e3ffc0 +vmlinux platform_bus 0xf123a9fd +vmlinux platform_bus_type 0x3416d706 +vmlinux platform_device_add 0xbd572778 +vmlinux platform_device_add_data 0x77342b55 +vmlinux platform_device_add_resources 0x18a728cc +vmlinux platform_device_alloc 0x7f2b6bf2 +vmlinux platform_device_put 0xc7083c74 +vmlinux platform_device_register 0xb3034363 +vmlinux platform_device_register_simple 0x6dab0db4 +vmlinux platform_device_unregister 0x98f61080 +vmlinux platform_driver_register 0x3d3d8b49 +vmlinux platform_driver_unregister 0xeb9f5411 +vmlinux platform_get_irq 0x503ef044 +vmlinux platform_get_irq_byname 0x4eb2a27c +vmlinux platform_get_resource 0xdcc3626f +vmlinux platform_get_resource_byname 0x21d338d8 +vmlinux pm_power_off 0x60a32ea9 +vmlinux pneigh_enqueue 0xde3dba80 +vmlinux pneigh_lookup 0xff9454d8 +vmlinux poll_freewait 0xc35d7f53 +vmlinux poll_initwait 0xa5338138 +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0xd32e52c7 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x640a7078 +vmlinux posix_acl_equiv_mode 0xd8282ff0 +vmlinux posix_acl_from_mode 0x3adc15b9 +vmlinux posix_acl_from_xattr 0x42acbf72 +vmlinux posix_acl_permission 0x575d98a5 +vmlinux posix_acl_to_xattr 0xb055d8da +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0x12d56b46 +vmlinux posix_lock_file 0xd018ecaf +vmlinux posix_lock_file_wait 0x83bb35e0 +vmlinux posix_locks_deadlock 0x29b8ebfe +vmlinux posix_test_lock 0x1b929712 +vmlinux posix_timer_event 0x73435fc2 +vmlinux posix_unblock_lock 0x64ec7929 +vmlinux pre_task_out_intr 0x9f5ac34c +vmlinux prepare_binprm 0x0bfebe64 +vmlinux prepare_to_wait 0x8085c7b1 +vmlinux prepare_to_wait_exclusive 0xadb792c2 +vmlinux print_hexl 0x4c2f4b6d +vmlinux print_pa_hwpath 0xde229a2f +vmlinux print_pci_hwpath 0x1cd07304 +vmlinux printk 0xdd132261 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0xf2c3f8d9 +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0x2d76e031 +vmlinux proc_dointvec 0xbff113c1 +vmlinux proc_dointvec_jiffies 0x19e4910b +vmlinux proc_dointvec_minmax 0x98d4bc3c +vmlinux proc_dointvec_ms_jiffies 0x73aac23a +vmlinux proc_dointvec_userhz_jiffies 0xc2976477 +vmlinux proc_dostring 0xdeb1de18 +vmlinux proc_doulongvec_minmax 0x6cb63a5a +vmlinux proc_doulongvec_ms_jiffies_minmax 0x0e59245e +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0xd68940cc +vmlinux proc_net 0x34c76a3e +vmlinux proc_net_netfilter 0x905719fb +vmlinux proc_net_stat 0x3a11ba42 +vmlinux proc_root 0xa7b5e417 +vmlinux proc_root_driver 0x9ebad206 +vmlinux proc_root_fs 0x1a51e9a6 +vmlinux proc_symlink 0x6e872a7e +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux profile_pc 0xc64b0f4a +vmlinux proto_register 0xd498f394 +vmlinux proto_unregister 0xfa279bf2 +vmlinux ps2_cmd_aborted 0x9c31c645 +vmlinux ps2_command 0x1570cacb +vmlinux ps2_drain 0x09edc14d +vmlinux ps2_handle_ack 0xa01ebc6a +vmlinux ps2_handle_response 0xf53e5147 +vmlinux ps2_init 0x34515118 +vmlinux ps2_schedule_command 0xdecc9c53 +vmlinux ps2_sendbyte 0xf44b9530 +vmlinux pskb_copy 0xb0e1660f +vmlinux pskb_expand_head 0x7570f6be +vmlinux pskb_put 0xc649a6a6 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0x52aeaad5 +vmlinux put_cmsg 0x43ec913a +vmlinux put_device 0xa1f6c7b5 +vmlinux put_disk 0x8e761ad1 +vmlinux put_driver 0xbb1162f3 +vmlinux put_files_struct 0x3013b5da +vmlinux put_io_context 0x85cb7562 +vmlinux put_page 0x8e15b4c1 +vmlinux put_rpccred 0x1c0f73ea +vmlinux put_tty_driver 0xfd6b0af7 +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0x96837574 +vmlinux qdisc_create_dflt 0x438e04fb +vmlinux qdisc_destroy 0x5e51b292 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0x1390bbe7 +vmlinux qdisc_lookup 0x4c705e7e +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0x25499789 +vmlinux qdisc_restart 0x7eb87ecd +vmlinux qdisc_unlock_tree 0x40ec1a7c +vmlinux queue_delayed_work 0x5234f9f1 +vmlinux queue_work 0xb49e02fa +vmlinux qword_add 0xedcf6be4 +vmlinux qword_addhex 0xc8e96dea +vmlinux qword_get 0xe97f4ce5 +vmlinux radix_tree_delete 0x898049c9 +vmlinux radix_tree_gang_lookup 0x35ef380e +vmlinux radix_tree_gang_lookup_tag 0xed493232 +vmlinux radix_tree_insert 0x72e6283f +vmlinux radix_tree_lookup 0x76e635da +vmlinux radix_tree_lookup_slot 0x41706e2f +vmlinux radix_tree_tag_clear 0x9ee300df +vmlinux radix_tree_tag_set 0xd73b9fb5 +vmlinux radix_tree_tagged 0xb52b2186 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_bytes_from_xdr_buf 0xd9405ed9 +vmlinux read_cache_page 0x66b03db7 +vmlinux read_cache_pages 0x19005b9e +vmlinux read_dev_sector 0x2ff9b369 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0x87327049 +vmlinux redraw_screen 0x447a6bd8 +vmlinux register_binfmt 0x74bb3930 +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0xc14049c6 +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x9618fd01 +vmlinux register_exec_domain 0xd5a47c13 +vmlinux register_filesystem 0x892dd4dd +vmlinux register_firmware 0x40359ccb +vmlinux register_framebuffer 0x9b6beff0 +vmlinux register_gifconf 0xa57668dc +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0xb48ee983 +vmlinux register_netdevice 0x8d6f0252 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x9103e8d8 +vmlinux register_parisc_driver 0xd65cfadc +vmlinux register_posix_clock 0x5c835176 +vmlinux register_qdisc 0xe0854a38 +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0x661f5713 +vmlinux register_sysctl_table 0x8b07d2c0 +vmlinux register_sysrq_key 0xa156f556 +vmlinux register_tcf_proto_ops 0x86b59bdd +vmlinux register_timer_hook 0x2c7d132c +vmlinux register_wlandev 0x4b7b7c29 +vmlinux registered_fb 0xe10adea9 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x6ef56f31 +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0xa7773c9f +vmlinux remap_pfn_range 0xbded6d43 +vmlinux remote_llseek 0x7c4f1024 +vmlinux remove_arg_zero 0xff4e29ef +vmlinux remove_inode_hash 0xc819e6df +vmlinux remove_proc_entry 0x7b5354a7 +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0x2e006bcb +vmlinux remove_wait_queue 0x36e47222 +vmlinux reqsk_queue_alloc 0xadda8412 +vmlinux reqsk_queue_destroy 0x1662f7ed +vmlinux request_firmware 0xdab3e4b4 +vmlinux request_firmware_nowait 0xfa67de80 +vmlinux request_irq 0x8e45dfca +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux rpc_bind_new_program 0xde69c781 +vmlinux rpc_call_async 0x0aa2fdfc +vmlinux rpc_call_setup 0x26fcb965 +vmlinux rpc_call_sync 0x781ae196 +vmlinux rpc_clnt_sigmask 0x3905543b +vmlinux rpc_clnt_sigunmask 0x87bf58ce +vmlinux rpc_clone_client 0x045ac323 +vmlinux rpc_create_client 0x6d4920b8 +vmlinux rpc_debug 0x31a89d59 +vmlinux rpc_delay 0xf3fa757d +vmlinux rpc_destroy_client 0x0f170585 +vmlinux rpc_execute 0x8478ac67 +vmlinux rpc_init_task 0xe9c8de23 +vmlinux rpc_init_wait_queue 0x9b8a689d +vmlinux rpc_killall_tasks 0xe7d4dad7 +vmlinux rpc_max_payload 0x473d5b08 +vmlinux rpc_mkpipe 0xa5e5ffb7 +vmlinux rpc_new_child 0xb6c1a5f3 +vmlinux rpc_new_client 0x2527d698 +vmlinux rpc_new_task 0x1f33a960 +vmlinux rpc_proc_register 0x1fdc4fa1 +vmlinux rpc_proc_unregister 0x5bd26000 +vmlinux rpc_queue_upcall 0xb164595c +vmlinux rpc_release_client 0x9696fd8f +vmlinux rpc_release_task 0x30d1049a +vmlinux rpc_restart_call 0x15f18347 +vmlinux rpc_run_child 0x8a18f895 +vmlinux rpc_setbufsize 0x9894e2a9 +vmlinux rpc_shutdown_client 0xa0fe144e +vmlinux rpc_sleep_on 0xeb09df47 +vmlinux rpc_unlink 0x9296bec2 +vmlinux rpc_wake_up 0x49e5e765 +vmlinux rpc_wake_up_next 0xf8f5808e +vmlinux rpc_wake_up_status 0x4e43d6e5 +vmlinux rpc_wake_up_task 0x1f545223 +vmlinux rpcauth_create 0x5c3c1862 +vmlinux rpcauth_free_credcache 0x6cee7e9e +vmlinux rpcauth_init_credcache 0x2083ebca +vmlinux rpcauth_lookup_credcache 0xc545e715 +vmlinux rpcauth_lookupcred 0x5890e37f +vmlinux rpcauth_register 0xd04399ae +vmlinux rpcauth_unregister 0xde6cd037 +vmlinux rpciod_down 0xbabf0f35 +vmlinux rpciod_up 0x375492a4 +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x83230e05 +vmlinux rtnetlink_links 0x827b6b77 +vmlinux rtnetlink_put_metrics 0xc8381689 +vmlinux rtnl 0x994ae42a +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0x99a1cba9 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux sb_min_blocksize 0xb466c30b +vmlinux sb_set_blocksize 0x1b34b4e0 +vmlinux sched_setscheduler 0x36065028 +vmlinux schedule 0x01000e51 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0x86744d17 +vmlinux scm_fp_dup 0x1614a594 +vmlinux scnprintf 0x7bb4de17 +vmlinux scsi_add_device 0x5f6ecd74 +vmlinux scsi_add_host 0x463268ac +vmlinux scsi_adjust_queue_depth 0xdb4ee3f4 +vmlinux scsi_allocate_request 0xb6af5a46 +vmlinux scsi_bios_ptable 0x123f8ba5 +vmlinux scsi_block_requests 0xeef9ecae +vmlinux scsi_block_when_processing_errors 0xb857f17d +vmlinux scsi_bus_type 0x86653485 +vmlinux scsi_calculate_bounce_limit 0x0d54a5d5 +vmlinux scsi_cmd_ioctl 0x1953c128 +vmlinux scsi_command_normalize_sense 0xa80efdb2 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux scsi_device_cancel 0xa61115ff +vmlinux scsi_device_get 0xd7154015 +vmlinux scsi_device_lookup 0x04bc7b69 +vmlinux scsi_device_lookup_by_target 0x867ab9be +vmlinux scsi_device_put 0xcba7dab6 +vmlinux scsi_device_quiesce 0x36af8a56 +vmlinux scsi_device_resume 0x75b857bb +vmlinux scsi_device_set_state 0x0ff0e76b +vmlinux scsi_device_types 0x6df713c9 +vmlinux scsi_do_req 0xd3ea9fc6 +vmlinux scsi_execute 0xae064c9d +vmlinux scsi_execute_req 0x9ddef19f +vmlinux scsi_extd_sense_format 0x11267875 +vmlinux scsi_finish_command 0x4aaf1c47 +vmlinux scsi_flush_work 0xd315260e +vmlinux scsi_free_host_dev 0x95e715c8 +vmlinux scsi_get_command 0x570d4cdd +vmlinux scsi_get_host_dev 0x60cd9cfb +vmlinux scsi_get_sense_info_fld 0x796fc5ce +vmlinux scsi_host_alloc 0xbe62e0a7 +vmlinux scsi_host_get 0x8e347aaa +vmlinux scsi_host_lookup 0xdc44ec1b +vmlinux scsi_host_put 0x2587aa59 +vmlinux scsi_host_set_state 0x341ee8e3 +vmlinux scsi_internal_device_block 0xd27cb17c +vmlinux scsi_internal_device_unblock 0x5029d6c6 +vmlinux scsi_io_completion 0x77098fef +vmlinux scsi_ioctl 0xe2cb5950 +vmlinux scsi_ioctl_send_command 0xbc7f1bd0 +vmlinux scsi_is_host_device 0xe6dd5d31 +vmlinux scsi_is_sdev_device 0x108d6e94 +vmlinux scsi_is_target_device 0xaf11fb54 +vmlinux scsi_mode_sense 0x4ae4e83f +vmlinux scsi_nonblockable_ioctl 0x77812003 +vmlinux scsi_normalize_sense 0x0c65e73c +vmlinux scsi_partsize 0x4afe9a77 +vmlinux scsi_print_command 0x1adbc81e +vmlinux scsi_print_msg 0x67f88938 +vmlinux scsi_print_req_sense 0xc623a95d +vmlinux scsi_print_sense 0x491384c4 +vmlinux scsi_print_sense_hdr 0xca5dbc50 +vmlinux scsi_print_status 0x9cfd56c5 +vmlinux scsi_put_command 0x61664633 +vmlinux scsi_queue_work 0x5dfdb66a +vmlinux scsi_register 0x65b4f13f +vmlinux scsi_register_driver 0x7ea02390 +vmlinux scsi_register_interface 0xfb6c35b4 +vmlinux scsi_release_request 0xc40d6913 +vmlinux scsi_remove_device 0x98a9666b +vmlinux scsi_remove_host 0x9ac53cae +vmlinux scsi_remove_target 0xf528f921 +vmlinux scsi_report_bus_reset 0x5ca64fad +vmlinux scsi_report_device_reset 0xce9d4f6c +vmlinux scsi_request_normalize_sense 0xade8d898 +vmlinux scsi_rescan_device 0x175f4c2b +vmlinux scsi_reset_provider 0x5227e7f9 +vmlinux scsi_scan_host 0xe9be0271 +vmlinux scsi_scan_target 0xc08a2a07 +vmlinux scsi_sense_desc_find 0x2b0ba2b0 +vmlinux scsi_sense_key_string 0x96cd2b04 +vmlinux scsi_set_medium_removal 0x45330b01 +vmlinux scsi_setup_blk_pc_cmnd 0x227b4b5d +vmlinux scsi_target_block 0xcf790bab +vmlinux scsi_target_quiesce 0xa9f0983e +vmlinux scsi_target_resume 0xc23437cd +vmlinux scsi_target_unblock 0x993559ea +vmlinux scsi_test_unit_ready 0xaf3a0082 +vmlinux scsi_track_queue_full 0x823bb9bf +vmlinux scsi_unblock_requests 0xdf8bc582 +vmlinux scsi_unregister 0x55a51b09 +vmlinux scsicam_bios_param 0x9eb7a15f +vmlinux search_binary_handler 0x70d53f42 +vmlinux secpath_dup 0x874cdf0d +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0xd7bab0a3 +vmlinux securityfs_create_dir 0x75857bea +vmlinux securityfs_create_file 0x8ea0b7dd +vmlinux securityfs_remove 0x2117bf6e +vmlinux send_sig 0xc51e2807 +vmlinux send_sig_info 0x546b45cf +vmlinux seq_escape 0x684c4bfb +vmlinux seq_lseek 0x41a98e7f +vmlinux seq_open 0x6224b591 +vmlinux seq_path 0xd080fe97 +vmlinux seq_printf 0x97a5cd60 +vmlinux seq_putc 0x766ed19b +vmlinux seq_puts 0x0236a511 +vmlinux seq_read 0xdfad22e9 +vmlinux seq_release 0xb51fe34b +vmlinux seq_release_private 0xc066fc7c +vmlinux serial8250_register_port 0x3dc9cb9a +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0x06ad76db +vmlinux serio_interrupt 0x817fe50a +vmlinux serio_open 0xb16db479 +vmlinux serio_reconnect 0x7af69914 +vmlinux serio_rescan 0x6ce4a641 +vmlinux serio_unregister_child_port 0x93645558 +vmlinux serio_unregister_driver 0xc9667aa8 +vmlinux serio_unregister_port 0x734a775f +vmlinux set_anon_super 0x696c1e59 +vmlinux set_bh_page 0xa6590ddb +vmlinux set_binfmt 0xa287d752 +vmlinux set_blocksize 0xf9060f21 +vmlinux set_current_groups 0x72fbae28 +vmlinux set_device_ro 0x1eeccfa0 +vmlinux set_disk_ro 0x2b073f5c +vmlinux set_page_dirty 0xe09278c6 +vmlinux set_page_dirty_lock 0x7ae1deab +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0x39e99ce6 +vmlinux setlease 0x87916b12 +vmlinux setup_arg_pages 0x5660c163 +vmlinux sget 0x31ef7535 +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0xf6d91c06 +vmlinux shrink_dcache_sb 0xa1c8342a +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x8ed6f0ed +vmlinux simple_attr_close 0x08bedeee +vmlinux simple_attr_open 0x97e0b8d2 +vmlinux simple_attr_read 0x12aa475f +vmlinux simple_attr_write 0x30175b82 +vmlinux simple_commit_write 0x69abc916 +vmlinux simple_dir_inode_operations 0x107a96ec +vmlinux simple_dir_operations 0x82ffcef4 +vmlinux simple_empty 0xd326bdf0 +vmlinux simple_fill_super 0xf82f94a7 +vmlinux simple_getattr 0x04f5c2b7 +vmlinux simple_link 0x384e831e +vmlinux simple_lookup 0xa2f1e30c +vmlinux simple_pin_fs 0xfdbeee11 +vmlinux simple_prepare_write 0xc1bb3107 +vmlinux simple_read_from_buffer 0x5a5e7ea3 +vmlinux simple_readpage 0x63d1592b +vmlinux simple_release_fs 0x7ad192e0 +vmlinux simple_rename 0xa2e79658 +vmlinux simple_rmdir 0x39c6ef46 +vmlinux simple_statfs 0x3942223f +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0x6c40bd23 +vmlinux simple_transaction_get 0x35803ffd +vmlinux simple_transaction_read 0x0022daf7 +vmlinux simple_transaction_release 0xede177a1 +vmlinux simple_unlink 0x7153d8bd +vmlinux single_open 0xcf4bdc3a +vmlinux single_release 0x25cce099 +vmlinux sk_alloc 0x933fcb70 +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0xea04ad6d +vmlinux sk_common_release 0xe5e8d839 +vmlinux sk_free 0xe36d0f0e +vmlinux sk_reset_timer 0x33875dcb +vmlinux sk_run_filter 0x64d8ed4f +vmlinux sk_send_sigurg 0xbfc19280 +vmlinux sk_stop_timer 0x7d746e64 +vmlinux sk_stream_error 0x2443d961 +vmlinux sk_stream_kill_queues 0xbbf6e581 +vmlinux sk_stream_mem_schedule 0x95593624 +vmlinux sk_stream_rfree 0x3af67224 +vmlinux sk_stream_wait_close 0x680dd713 +vmlinux sk_stream_wait_connect 0x6a9b08c1 +vmlinux sk_stream_wait_memory 0x4cb85b9f +vmlinux sk_stream_write_space 0x74c8f229 +vmlinux sk_wait_data 0xd9002c42 +vmlinux skb_abort_seq_read 0x6eccbd56 +vmlinux skb_append 0xba63c11c +vmlinux skb_append_datato_frags 0xaf26c056 +vmlinux skb_checksum 0xed18354a +vmlinux skb_checksum_help 0xcc582cd3 +vmlinux skb_clone 0x9f2c77b0 +vmlinux skb_clone_fraglist 0xdba1d180 +vmlinux skb_copy 0x4dcf7a1f +vmlinux skb_copy_and_csum_bits 0xba17814e +vmlinux skb_copy_and_csum_datagram_iovec 0x99195418 +vmlinux skb_copy_and_csum_dev 0xce184acc +vmlinux skb_copy_bits 0x6b9c6efa +vmlinux skb_copy_datagram_iovec 0x0072b61e +vmlinux skb_copy_expand 0x224669b6 +vmlinux skb_cow_data 0x57ff1c58 +vmlinux skb_dequeue 0x2cd89ae9 +vmlinux skb_dequeue_tail 0x5b81ce41 +vmlinux skb_find_text 0xc8c00dc0 +vmlinux skb_free_datagram 0x8053f506 +vmlinux skb_icv_walk 0x0c0fbc0e +vmlinux skb_insert 0x76249129 +vmlinux skb_make_writable 0x27892e46 +vmlinux skb_over_panic 0x717ffc48 +vmlinux skb_pad 0x02907f6a +vmlinux skb_prepare_seq_read 0x3a42baaf +vmlinux skb_queue_head 0x5210c380 +vmlinux skb_queue_purge 0xa4d6c1eb +vmlinux skb_queue_tail 0x4aaa2748 +vmlinux skb_realloc_headroom 0x49ccfecf +vmlinux skb_recv_datagram 0x5ba8f77e +vmlinux skb_seq_read 0x38d7eae2 +vmlinux skb_split 0xa40d5a9f +vmlinux skb_store_bits 0x0e654597 +vmlinux skb_to_sgvec 0xf4e044f4 +vmlinux skb_under_panic 0xcb8164d3 +vmlinux skb_unlink 0x116f7327 +vmlinux sleep_on 0xa07a8d22 +vmlinux sleep_on_timeout 0x092b007a +vmlinux snprintf 0xaf25400d +vmlinux sock_alloc_send_skb 0x059a6ea7 +vmlinux sock_common_getsockopt 0x3fd74bba +vmlinux sock_common_recvmsg 0xec5f1bbe +vmlinux sock_common_setsockopt 0xc33a14f1 +vmlinux sock_create 0xabe9abd1 +vmlinux sock_create_kern 0xa40ffc46 +vmlinux sock_create_lite 0xbe48f0ea +vmlinux sock_enable_timestamp 0xb2624329 +vmlinux sock_get_timestamp 0x5297ce0f +vmlinux sock_i_ino 0x899f2cbb +vmlinux sock_i_uid 0xacf06652 +vmlinux sock_init_data 0x81ec3847 +vmlinux sock_kfree_s 0x1abd9583 +vmlinux sock_kmalloc 0x81fa80f9 +vmlinux sock_map_fd 0x96001a1e +vmlinux sock_no_accept 0x8fb623cc +vmlinux sock_no_bind 0xa0ca48ec +vmlinux sock_no_connect 0x70aada5b +vmlinux sock_no_getname 0xd02b725b +vmlinux sock_no_getsockopt 0xce45dd6f +vmlinux sock_no_ioctl 0x51f8c53d +vmlinux sock_no_listen 0xe26ff0a6 +vmlinux sock_no_mmap 0x59de7c79 +vmlinux sock_no_poll 0x9e97db48 +vmlinux sock_no_recvmsg 0xf45352cb +vmlinux sock_no_sendmsg 0x099f06fd +vmlinux sock_no_sendpage 0x23b41f77 +vmlinux sock_no_setsockopt 0xde13bc5e +vmlinux sock_no_shutdown 0xd759515c +vmlinux sock_no_socketpair 0x7faed1ff +vmlinux sock_recvmsg 0xc34efa9a +vmlinux sock_register 0x60c6ee66 +vmlinux sock_release 0xf27e495a +vmlinux sock_rfree 0xcb8fbbe2 +vmlinux sock_sendmsg 0x677deed3 +vmlinux sock_setsockopt 0xca5c0ae2 +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0x35bd96ba +vmlinux sock_wfree 0x1fb3b0aa +vmlinux sock_wmalloc 0xa21359b3 +vmlinux sockfd_lookup 0x965391c8 +vmlinux soft_cursor 0x02c37f76 +vmlinux sort 0x9ca95a0e +vmlinux spi_attach_transport 0x2861934e +vmlinux spi_display_xfer_agreement 0xcd9cff10 +vmlinux spi_dv_device 0x7ed025cb +vmlinux spi_release_transport 0xfabb8338 +vmlinux spi_schedule_dv_device 0x77093700 +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux starget_for_each_device 0x85893fa1 +vmlinux start_tty 0x1bcdef70 +vmlinux steal_locks 0xa4b4ca7a +vmlinux sti_get_rom 0x31e3ae61 +vmlinux stop_tty 0x0806382c +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0xafe82e10 +vmlinux strlcat 0xb11fa1ce +vmlinux strlcpy 0x672144bd +vmlinux strlen 0xdcb5671d +vmlinux strncat 0x234509f3 +vmlinux strnchr 0x7242e96d +vmlinux strncmp 0x85abc85f +vmlinux strncpy 0x7ec9bfbc +vmlinux strnicmp 0x756e6992 +vmlinux strnlen 0xcc07af75 +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0x3fa913da +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0xeec76dbf +vmlinux submit_bh 0xa7c7263a +vmlinux submit_bio 0x3c7c3ae2 +vmlinux subsys_create_file 0xc6e0e057 +vmlinux subsys_remove_file 0x27e4b833 +vmlinux subsystem_init 0xc7023bb9 +vmlinux subsystem_register 0xd8609b88 +vmlinux subsystem_unregister 0x13273743 +vmlinux suid_dumpable 0xb694c524 +vmlinux svc_auth_register 0x329ae73d +vmlinux svc_auth_unregister 0x0f668ba9 +vmlinux svc_authenticate 0x930a39b6 +vmlinux svc_create 0xb1808845 +vmlinux svc_create_thread 0xdd639bfe +vmlinux svc_destroy 0x6cc34b6d +vmlinux svc_drop 0xb837768c +vmlinux svc_exit_thread 0x5bd88c66 +vmlinux svc_makesock 0xf13a0158 +vmlinux svc_proc_register 0x4a02ca53 +vmlinux svc_proc_unregister 0x12e280e3 +vmlinux svc_process 0x6a783647 +vmlinux svc_recv 0xdadb4837 +vmlinux svc_reserve 0x30e9b19b +vmlinux svc_seq_show 0xccd5bbd9 +vmlinux svc_set_client 0x6c604943 +vmlinux svc_wake_up 0x1b4da58d +vmlinux svcauth_gss_register_pseudoflavor 0x8d1a827e +vmlinux svcauth_unix_purge 0x6eea229d +vmlinux swap_io_context 0xf24c29e4 +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0x431b2c8e +vmlinux sync_dirty_buffer 0x515f9529 +vmlinux sync_inode 0xa5753adc +vmlinux sync_mapping_buffers 0xa980bede +vmlinux sync_page_range 0x0629dbcd +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xdcb0349b +vmlinux sys_ioctl 0x208ce54a +vmlinux sys_lseek 0xec2107f8 +vmlinux sys_open 0xe269ea1c +vmlinux sys_read 0x12703a3e +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sys_write 0x3c7eae23 +vmlinux sysctl_intvec 0x71350da7 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0x1bb40ce1 +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0x42ba42be +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0xffd57756 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x275648f8 +vmlinux sysdev_class_unregister 0xf13ff4f0 +vmlinux sysdev_create_file 0x93f528d6 +vmlinux sysdev_driver_register 0x51e5f841 +vmlinux sysdev_driver_unregister 0x77622d8b +vmlinux sysdev_register 0x490c5823 +vmlinux sysdev_remove_file 0x3030f9a3 +vmlinux sysdev_unregister 0x407452ba +vmlinux sysfs_chmod_file 0x5d7cfedb +vmlinux sysfs_create_bin_file 0x450eabcd +vmlinux sysfs_create_dir 0x2a266d90 +vmlinux sysfs_create_file 0x2bacdf34 +vmlinux sysfs_create_group 0xc53ae40d +vmlinux sysfs_create_link 0x49c4cadd +vmlinux sysfs_remove_bin_file 0x208ccdde +vmlinux sysfs_remove_dir 0x19f4a07d +vmlinux sysfs_remove_file 0xd57e9589 +vmlinux sysfs_remove_group 0xf1cbe014 +vmlinux sysfs_remove_link 0x299d48cd +vmlinux sysfs_rename_dir 0xf9a43c02 +vmlinux sysfs_update_file 0x95ccd711 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0x213e5f2d +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0x7733cb26 +vmlinux task_nice 0x78595afe +vmlinux task_no_data_intr 0x2dd64f04 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0xd6edcf04 +vmlinux tc_classify 0xeeebd4f1 +vmlinux tcf_action_dump_1 0x70346ba3 +vmlinux tcf_action_exec 0xf9e9e6b0 +vmlinux tcf_em_register 0x2b6e9aac +vmlinux tcf_em_tree_destroy 0xdb2dda05 +vmlinux tcf_em_tree_dump 0x45356420 +vmlinux tcf_em_tree_validate 0xb389754e +vmlinux tcf_em_unregister 0x7250f61c +vmlinux tcf_exts_change 0xbf3dc802 +vmlinux tcf_exts_destroy 0xc9aa3032 +vmlinux tcf_exts_dump 0x20c8202c +vmlinux tcf_exts_dump_stats 0xc5737b98 +vmlinux tcf_exts_validate 0xfed0ccfc +vmlinux tcf_register_action 0xb2c91f42 +vmlinux tcf_unregister_action 0x73cad22b +vmlinux tcp_check_req 0x256da95b +vmlinux tcp_child_process 0xd58a4f09 +vmlinux tcp_close 0x4952db0c +vmlinux tcp_connect 0x9d1a7f11 +vmlinux tcp_create_openreq_child 0xb2dd3a04 +vmlinux tcp_death_row 0x09148094 +vmlinux tcp_disconnect 0x24adcfca +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x7db75855 +vmlinux tcp_getsockopt 0xdb9a2f51 +vmlinux tcp_hashinfo 0xcfbee593 +vmlinux tcp_init_congestion_ops 0xaa7fa03f +vmlinux tcp_init_xmit_timers 0xa7ab963a +vmlinux tcp_ioctl 0x291bb0da +vmlinux tcp_make_synack 0x0423e904 +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0xcc57886d +vmlinux tcp_poll 0xf10635bb +vmlinux tcp_proc_register 0x1e9f96c7 +vmlinux tcp_proc_unregister 0x599789e1 +vmlinux tcp_prot 0x610cbf0b +vmlinux tcp_rcv_established 0x946301bf +vmlinux tcp_rcv_state_process 0xffa50381 +vmlinux tcp_read_sock 0x7ddd3bd2 +vmlinux tcp_recvmsg 0xbddc11ae +vmlinux tcp_register_congestion_control 0x68aba27e +vmlinux tcp_reno_cong_avoid 0x2f69f99e +vmlinux tcp_reno_min_cwnd 0x222ee5c0 +vmlinux tcp_reno_ssthresh 0xd85465e7 +vmlinux tcp_sendmsg 0x53f00de3 +vmlinux tcp_sendpage 0xf66c8b42 +vmlinux tcp_setsockopt 0x8e40680a +vmlinux tcp_shutdown 0x8f1c3769 +vmlinux tcp_simple_retransmit 0x21193437 +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0xb1dae52e +vmlinux tcp_timewait_state_process 0x0c154fdc +vmlinux tcp_unhash 0xfb021b95 +vmlinux tcp_unregister_congestion_control 0xe8cf3c0e +vmlinux tcp_v4_conn_request 0xfe2aab33 +vmlinux tcp_v4_connect 0x3fec32bd +vmlinux tcp_v4_destroy_sock 0xf42db5ab +vmlinux tcp_v4_do_rcv 0xb1fd9e57 +vmlinux tcp_v4_remember_stamp 0xd18bea4f +vmlinux tcp_v4_send_check 0xd593c5ed +vmlinux tcp_v4_syn_recv_sock 0xddf59aa2 +vmlinux test_clear_page_dirty 0xf759bc25 +vmlinux test_set_page_writeback 0x35f38870 +vmlinux textsearch_destroy 0x875e259e +vmlinux textsearch_find_continuous 0x6601b4b4 +vmlinux textsearch_prepare 0x702a5399 +vmlinux textsearch_register 0x6d456a06 +vmlinux textsearch_unregister 0x2b02c1d3 +vmlinux thaw_bdev 0x13c6c42c +vmlinux timespec_trunc 0xc045ad4e +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux transport_add_device 0x2ac4d72d +vmlinux transport_class_register 0xc38b4a3e +vmlinux transport_class_unregister 0x92f84ec6 +vmlinux transport_configure_device 0xa57f9600 +vmlinux transport_destroy_device 0xfcb7ceeb +vmlinux transport_remove_device 0x73c9010d +vmlinux transport_setup_device 0x990b90f9 +vmlinux truncate_inode_pages 0x90b3c7ea +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0x9898897e +vmlinux try_to_release_page 0x0c3524dc +vmlinux tty_check_change 0xba9ffdf7 +vmlinux tty_flip_buffer_push 0xce554934 +vmlinux tty_get_baud_rate 0x46cab03a +vmlinux tty_hangup 0x2d60ab3c +vmlinux tty_hung_up_p 0x37100c9e +vmlinux tty_ldisc_deref 0xf9a11a92 +vmlinux tty_ldisc_flush 0x7c34d375 +vmlinux tty_ldisc_get 0x1fc5f2d2 +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0x7208a5a5 +vmlinux tty_ldisc_ref_wait 0x2c00d146 +vmlinux tty_name 0x954e7ceb +vmlinux tty_register_device 0xb0adb5d3 +vmlinux tty_register_driver 0x7dee50a6 +vmlinux tty_register_ldisc 0x67b7b09e +vmlinux tty_set_operations 0x3326f3e5 +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0x106630aa +vmlinux tty_unregister_driver 0x6b5e004d +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0xeb0d3221 +vmlinux tty_wait_until_sent 0xd89d257b +vmlinux tty_wakeup 0x91aa08c0 +vmlinux uart_add_one_port 0x6daf2ad2 +vmlinux uart_get_baud_rate 0x9a201e24 +vmlinux uart_get_divisor 0xec2f8ae8 +vmlinux uart_match_port 0x360e1598 +vmlinux uart_register_driver 0x72f77cba +vmlinux uart_remove_one_port 0x1ca371c7 +vmlinux uart_resume_port 0x1fc29545 +vmlinux uart_suspend_port 0x4e9a5ac3 +vmlinux uart_unregister_driver 0x533ce994 +vmlinux uart_update_timeout 0xb1223195 +vmlinux uart_write_wakeup 0x2b1fb24e +vmlinux udp_disconnect 0xe941d8c0 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0xabad83d7 +vmlinux udp_ioctl 0x3b8a8e0e +vmlinux udp_poll 0xb1ed8214 +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0xa2bb52ac +vmlinux udp_proc_unregister 0xd2610ed9 +vmlinux udp_prot 0x7cb2a251 +vmlinux udp_sendmsg 0x14ebc0f1 +vmlinux uhci_check_and_reset_hc 0x4a8d526c +vmlinux uhci_reset_hc 0x6dd92794 +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unix_domain_find 0x96946e44 +vmlinux unload_nls 0xc201ae16 +vmlinux unlock_buffer 0xdaac8ad1 +vmlinux unlock_new_inode 0xdb3856fd +vmlinux unlock_page 0x07345c9a +vmlinux unlock_rename 0x325735a6 +vmlinux unmap_mapping_range 0xa194043f +vmlinux unmap_underlying_metadata 0xbea3911a +vmlinux unregister_binfmt 0xfe10c0fd +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0xc0dbd474 +vmlinux unregister_exec_domain 0x07254133 +vmlinux unregister_filesystem 0xbb26b58a +vmlinux unregister_framebuffer 0xfd6cfbe5 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0x4c99e218 +vmlinux unregister_netdevice 0x22dde172 +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0xbcfd9a52 +vmlinux unregister_parisc_driver 0xacb66e41 +vmlinux unregister_qdisc 0x28d9d6f3 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0xa85b570b +vmlinux unregister_sysctl_table 0x77890db3 +vmlinux unregister_sysrq_key 0x3482cd0a +vmlinux unregister_tcf_proto_ops 0xd5d5f6f3 +vmlinux unregister_timer_hook 0xf807773e +vmlinux unregister_wlandev 0x6764dc36 +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0x6b12d179 +vmlinux update_region 0x00612696 +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0x84b67329 +vmlinux vc_cons 0xac059641 +vmlinux vc_resize 0x6d453e2a +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0x322aba00 +vmlinux vfs_follow_link 0xef2c355e +vmlinux vfs_fstat 0xcb841136 +vmlinux vfs_getattr 0x1a9f5d44 +vmlinux vfs_link 0x24ff328a +vmlinux vfs_llseek 0xe29affdc +vmlinux vfs_lstat 0x91d803ff +vmlinux vfs_mkdir 0x822999cd +vmlinux vfs_mknod 0xec4fe03c +vmlinux vfs_permission 0xa52434e3 +vmlinux vfs_read 0x45f92694 +vmlinux vfs_readdir 0xcd847c9c +vmlinux vfs_readlink 0x411df674 +vmlinux vfs_readv 0x131e1a30 +vmlinux vfs_rename 0xa6079ddc +vmlinux vfs_rmdir 0xdc803a28 +vmlinux vfs_stat 0x4e193f40 +vmlinux vfs_statfs 0x56e4b31f +vmlinux vfs_symlink 0x5ce4eeef +vmlinux vfs_unlink 0x4ace2d35 +vmlinux vfs_write 0x318666e1 +vmlinux vfs_writev 0xc8a4b28c +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x624269bb +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_start 0x84ac94f2 +vmlinux vmalloc_to_page 0x30014096 +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0x1b88351e +vmlinux vmtruncate 0x5e8c3240 +vmlinux vprintk 0x777a8e29 +vmlinux vscnprintf 0xf3522c9c +vmlinux vsnprintf 0x0e57f111 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0x25fa6f17 +vmlinux wait_for_completion_interruptible 0x891e32b8 +vmlinux wait_for_completion_interruptible_timeout 0x8d5642fc +vmlinux wait_for_completion_timeout 0x1fae7a0b +vmlinux wait_on_page_bit 0x490c4ebe +vmlinux wait_on_sync_kiocb 0x20257faf +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0x31cb8dd5 +vmlinux wireless_send_event 0xad86de16 +vmlinux wireless_spy_update 0xc743f8d7 +vmlinux wlan_setup 0xd48ddccc +vmlinux wlan_unsetup 0x4be5ea65 +vmlinux write_inode_now 0xc199d939 +vmlinux write_one_page 0x1f9bb1a5 +vmlinux xdr_buf_from_iov 0xc75519b1 +vmlinux xdr_buf_read_netobj 0x6ecd2bee +vmlinux xdr_buf_subsegment 0xf8f3f8b0 +vmlinux xdr_decode_array2 0x84b6e3fe +vmlinux xdr_decode_netobj 0x1be57115 +vmlinux xdr_decode_string 0x6755aa62 +vmlinux xdr_decode_string_inplace 0x7bd87272 +vmlinux xdr_decode_word 0xa18931e3 +vmlinux xdr_encode_array2 0x42dff42d +vmlinux xdr_encode_netobj 0x29c6f164 +vmlinux xdr_encode_opaque 0x0e9e79d5 +vmlinux xdr_encode_opaque_fixed 0x587d494b +vmlinux xdr_encode_pages 0xa0557c1d +vmlinux xdr_encode_string 0xabc0fe0c +vmlinux xdr_encode_word 0x8e626967 +vmlinux xdr_init_decode 0xf316701e +vmlinux xdr_init_encode 0xaaadcc15 +vmlinux xdr_inline_decode 0x84f4730d +vmlinux xdr_inline_pages 0x3541455d +vmlinux xdr_read_pages 0x99b27334 +vmlinux xdr_reserve_space 0x69c0947b +vmlinux xdr_shift_buf 0xd89a0680 +vmlinux xdr_write_pages 0x45cb8e83 +vmlinux xfrm4_rcv 0x757c5c87 +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0xa2427de5 +vmlinux xfrm_bundle_ok 0x8ec9b5ff +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0x68a13258 +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0xe96ab769 +vmlinux xfrm_dst_lookup 0x34166b42 +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0x08fa15b1 +vmlinux xfrm_find_acq_byseq 0x584731fe +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0x953cf482 +vmlinux xfrm_init_state 0xaaf8294d +vmlinux xfrm_lookup 0xc89ae966 +vmlinux xfrm_parse_spi 0x28fb69bf +vmlinux xfrm_policy_alloc 0x0019fc98 +vmlinux xfrm_policy_byid 0x7e677754 +vmlinux xfrm_policy_bysel 0x9a0ca5c7 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0x7cb56711 +vmlinux xfrm_policy_list 0x6d685878 +vmlinux xfrm_policy_register_afinfo 0x33cbafc1 +vmlinux xfrm_policy_unregister_afinfo 0xe973bfd4 +vmlinux xfrm_policy_walk 0xdcddc155 +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0xc80a57d5 +vmlinux xfrm_register_type 0xcfeefbe0 +vmlinux xfrm_replay_advance 0x451fe4f9 +vmlinux xfrm_replay_check 0x85cf9502 +vmlinux xfrm_state_add 0x0e682446 +vmlinux xfrm_state_alloc 0xfde93cf6 +vmlinux xfrm_state_check 0x0a69b3bb +vmlinux xfrm_state_check_expire 0xc623ef54 +vmlinux xfrm_state_delete 0xc8e7429c +vmlinux xfrm_state_delete_tunnel 0x72f3889c +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0x93220738 +vmlinux xfrm_state_lookup 0x62039474 +vmlinux xfrm_state_mtu 0x00e4f3db +vmlinux xfrm_state_register_afinfo 0x93295fad +vmlinux xfrm_state_unregister_afinfo 0xf362460e +vmlinux xfrm_state_update 0xccd2b1ac +vmlinux xfrm_state_walk 0x95d7ff53 +vmlinux xfrm_unregister_km 0xbe708c35 +vmlinux xfrm_unregister_type 0xfca138da +vmlinux xfrm_user_policy 0xfb04be96 +vmlinux xprt_create_proto 0x182b4e4f +vmlinux xprt_set_timeout 0xbce67dc0 +vmlinux xrlim_allow 0x061c6f7c +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xf448c4e8 +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0xd95dac3d +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0x0e186040 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/hppa/hppa32-smp +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/hppa/hppa32-smp @@ -0,0 +1,3751 @@ +cluster/cman/cman kcl_add_callback 0xaf3eb85b +cluster/cman/cman kcl_addref_cluster 0x8c4832f9 +cluster/cman/cman kcl_barrier_cancel 0x43bf5eb6 +cluster/cman/cman kcl_barrier_delete 0x08eb557e +cluster/cman/cman kcl_barrier_register 0xc664a57c +cluster/cman/cman kcl_barrier_setattr 0xe122c25c +cluster/cman/cman kcl_barrier_wait 0x87086111 +cluster/cman/cman kcl_cluster_name 0xde5612c6 +cluster/cman/cman kcl_get_all_members 0xd10c54e6 +cluster/cman/cman kcl_get_current_interface 0x3af85930 +cluster/cman/cman kcl_get_member_ids 0x885ff3a4 +cluster/cman/cman kcl_get_members 0xd47a921d +cluster/cman/cman kcl_get_node_addresses 0xd5eaf0c2 +cluster/cman/cman kcl_get_node_by_addr 0x3b33738c +cluster/cman/cman kcl_get_node_by_name 0x23669a37 +cluster/cman/cman kcl_get_node_by_nodeid 0x83c43133 +cluster/cman/cman kcl_get_services 0x03c0d25b +cluster/cman/cman kcl_global_service_id 0x873f8a99 +cluster/cman/cman kcl_is_quorate 0xc576f3f0 +cluster/cman/cman kcl_join_service 0x426c5ab8 +cluster/cman/cman kcl_leave_service 0xfd83a9a3 +cluster/cman/cman kcl_quorum_device_available 0x30183fa5 +cluster/cman/cman kcl_register_quorum_device 0xaaee1660 +cluster/cman/cman kcl_register_read_callback 0x8b4226e5 +cluster/cman/cman kcl_register_service 0xd825e459 +cluster/cman/cman kcl_releaseref_cluster 0x98b2c43d +cluster/cman/cman kcl_remove_callback 0x9023ce01 +cluster/cman/cman kcl_sendmsg 0x7b58c3ee +cluster/cman/cman kcl_start_done 0x390dcec0 +cluster/cman/cman kcl_unregister_quorum_device 0xd2ebaeba +cluster/cman/cman kcl_unregister_service 0x09b0b8b5 +cluster/dlm/dlm dlm_debug_dump 0xc4db1de8 +cluster/dlm/dlm dlm_init 0x00df6cd7 +cluster/dlm/dlm dlm_lock 0xac5db655 +cluster/dlm/dlm dlm_locks_dump 0xaf24753d +cluster/dlm/dlm dlm_new_lockspace 0xd358dc1a +cluster/dlm/dlm dlm_query 0xdc30c180 +cluster/dlm/dlm dlm_release 0x2ff0cd3a +cluster/dlm/dlm dlm_release_lockspace 0xcf9f3328 +cluster/dlm/dlm dlm_unlock 0x14d97760 +drivers/block/loop loop_register_transfer 0x60e529d0 +drivers/block/loop loop_unregister_transfer 0xbfee3ad5 +drivers/cdrom/cdrom cdrom_get_last_written 0x86e20066 +drivers/cdrom/cdrom cdrom_get_media_event 0xf2010684 +drivers/cdrom/cdrom cdrom_ioctl 0x2b33ef43 +drivers/cdrom/cdrom cdrom_media_changed 0x76e4b72c +drivers/cdrom/cdrom cdrom_mode_select 0x258055b6 +drivers/cdrom/cdrom cdrom_mode_sense 0xbfbeed12 +drivers/cdrom/cdrom cdrom_number_of_slots 0x314187cc +drivers/cdrom/cdrom cdrom_open 0x0ec7eb57 +drivers/cdrom/cdrom cdrom_release 0x3f11a424 +drivers/cdrom/cdrom init_cdrom_command 0x344adbd5 +drivers/cdrom/cdrom register_cdrom 0x653ee50c +drivers/cdrom/cdrom unregister_cdrom 0x5eae10cb +drivers/connector/cn cn_add_callback 0xdf3c19ec +drivers/connector/cn cn_del_callback 0xff5a8cfe +drivers/connector/cn cn_netlink_send 0xb10d55bc +drivers/input/serio/hil_mlc hil_mlc_register 0xb6a4f1b6 +drivers/input/serio/hil_mlc hil_mlc_unregister 0x46493978 +drivers/input/serio/hp_sdc hp_sdc_dequeue_transaction 0x1b8e0535 +drivers/input/serio/hp_sdc hp_sdc_enqueue_transaction 0xc5226cfa +drivers/input/serio/hp_sdc hp_sdc_release_cooked_irq 0xd97b8d49 +drivers/input/serio/hp_sdc hp_sdc_release_hil_irq 0x2d7c4a70 +drivers/input/serio/hp_sdc hp_sdc_release_timer_irq 0x9dccd37d +drivers/input/serio/hp_sdc hp_sdc_request_cooked_irq 0x4233a8eb +drivers/input/serio/hp_sdc hp_sdc_request_hil_irq 0xcf402f97 +drivers/input/serio/hp_sdc hp_sdc_request_timer_irq 0xb12bc1bd +drivers/md/dm-mirror dm_create_dirty_log 0x601c5d96 +drivers/md/dm-mirror dm_destroy_dirty_log 0x6b889a91 +drivers/md/dm-mirror dm_register_dirty_log_type 0x39b0845e +drivers/md/dm-mirror dm_unregister_dirty_log_type 0xd6b74ff9 +drivers/md/dm-mod dm_get_device 0x69b32315 +drivers/md/dm-mod dm_get_mapinfo 0x420d30bd +drivers/md/dm-mod dm_io_async 0xacc77f2e +drivers/md/dm-mod dm_io_async_bvec 0x6d7fdd49 +drivers/md/dm-mod dm_io_async_vm 0x1a43393b +drivers/md/dm-mod dm_io_get 0xb3576650 +drivers/md/dm-mod dm_io_put 0x0feae9a7 +drivers/md/dm-mod dm_io_sync 0x780e50cd +drivers/md/dm-mod dm_io_sync_bvec 0xe0c571d6 +drivers/md/dm-mod dm_io_sync_vm 0xf5b0ac09 +drivers/md/dm-mod dm_put_device 0xbf35ef18 +drivers/md/dm-mod dm_register_target 0x4cb40399 +drivers/md/dm-mod dm_table_event 0x7e56849f +drivers/md/dm-mod dm_table_flush_all 0x9b1df3c0 +drivers/md/dm-mod dm_table_get 0x693bdff0 +drivers/md/dm-mod dm_table_get_mode 0x856a2ab6 +drivers/md/dm-mod dm_table_get_size 0x206cc635 +drivers/md/dm-mod dm_table_put 0x0e40ddfe +drivers/md/dm-mod dm_table_unplug_all 0x1116e496 +drivers/md/dm-mod dm_unregister_target 0xce8d2dec +drivers/md/dm-mod dm_vcalloc 0xc79bcd36 +drivers/md/dm-mod kcopyd_cancel 0x44d98271 +drivers/md/dm-mod kcopyd_client_create 0xfe2a9510 +drivers/md/dm-mod kcopyd_client_destroy 0x0877e7a3 +drivers/md/dm-mod kcopyd_copy 0x61038697 +drivers/md/md-mod bitmap_close_sync 0x59b85676 +drivers/md/md-mod bitmap_daemon_work 0xf4e7d202 +drivers/md/md-mod bitmap_end_sync 0xe586cacd +drivers/md/md-mod bitmap_endwrite 0x6d05cf36 +drivers/md/md-mod bitmap_start_sync 0x000b4bc2 +drivers/md/md-mod bitmap_startwrite 0x29e3f352 +drivers/md/md-mod bitmap_unplug 0x3aa2e717 +drivers/md/md-mod md_check_recovery 0x4501aade +drivers/md/md-mod md_done_sync 0xc1b61a2a +drivers/md/md-mod md_error 0x30853f04 +drivers/md/md-mod md_print_devices 0xa8d36306 +drivers/md/md-mod md_register_thread 0x3e6ea397 +drivers/md/md-mod md_unregister_thread 0xe806597d +drivers/md/md-mod md_wakeup_thread 0x8d58ed72 +drivers/md/md-mod md_write_end 0xeb55be9b +drivers/md/md-mod md_write_start 0xbfe9127a +drivers/md/md-mod register_md_personality 0x0afc4af0 +drivers/md/md-mod unregister_md_personality 0x4c95198d +drivers/md/xor xor_block 0xbfd30a63 +drivers/message/fusion/mptbase ioc_list 0xdd805159 +drivers/message/fusion/mptbase mpt_GetIocState 0xaa0169bf +drivers/message/fusion/mptbase mpt_HardResetHandler 0xc1d6d736 +drivers/message/fusion/mptbase mpt_add_sge 0x375d8126 +drivers/message/fusion/mptbase mpt_alloc_fw_memory 0x1a4caeac +drivers/message/fusion/mptbase mpt_alt_ioc_wait 0xd96c7b07 +drivers/message/fusion/mptbase mpt_attach 0x6f5b3c0a +drivers/message/fusion/mptbase mpt_config 0xae42656d +drivers/message/fusion/mptbase mpt_deregister 0x6fb5ab71 +drivers/message/fusion/mptbase mpt_detach 0xa87cc394 +drivers/message/fusion/mptbase mpt_device_driver_deregister 0x17c3bdf6 +drivers/message/fusion/mptbase mpt_device_driver_register 0x8e89266f +drivers/message/fusion/mptbase mpt_event_deregister 0x73fec4bb +drivers/message/fusion/mptbase mpt_event_register 0x9e5e9a5a +drivers/message/fusion/mptbase mpt_findImVolumes 0x98d72c5e +drivers/message/fusion/mptbase mpt_free_fw_memory 0x30613f96 +drivers/message/fusion/mptbase mpt_free_msg_frame 0x2824cc71 +drivers/message/fusion/mptbase mpt_get_msg_frame 0xff91bf5b +drivers/message/fusion/mptbase mpt_lan_index 0x3b4f162e +drivers/message/fusion/mptbase mpt_print_ioc_summary 0xf2f572a6 +drivers/message/fusion/mptbase mpt_proc_root_dir 0x3c1705de +drivers/message/fusion/mptbase mpt_put_msg_frame 0x378e1b4a +drivers/message/fusion/mptbase mpt_read_ioc_pg_3 0x230c8c84 +drivers/message/fusion/mptbase mpt_register 0x44b81678 +drivers/message/fusion/mptbase mpt_reset_deregister 0xae4fb61e +drivers/message/fusion/mptbase mpt_reset_register 0x7b31bdca +drivers/message/fusion/mptbase mpt_send_handshake_request 0x03793e4a +drivers/message/fusion/mptbase mpt_stm_index 0x8532cc96 +drivers/message/fusion/mptbase mpt_toolbox 0x52448560 +drivers/message/fusion/mptbase mpt_verify_adapter 0x11884c05 +drivers/message/fusion/mptbase mptbase_sas_persist_operation 0x2a51f445 +drivers/message/fusion/mptscsih mptscsih_abort 0x4d22b372 +drivers/message/fusion/mptscsih mptscsih_bios_param 0x7f62f0be +drivers/message/fusion/mptscsih mptscsih_bus_reset 0xd92756ef +drivers/message/fusion/mptscsih mptscsih_change_queue_depth 0xc13a0145 +drivers/message/fusion/mptscsih mptscsih_dev_reset 0x26648080 +drivers/message/fusion/mptscsih mptscsih_event_process 0x6f6e0820 +drivers/message/fusion/mptscsih mptscsih_host_reset 0x83c4a899 +drivers/message/fusion/mptscsih mptscsih_info 0x0da5cd19 +drivers/message/fusion/mptscsih mptscsih_io_done 0x20732592 +drivers/message/fusion/mptscsih mptscsih_ioc_reset 0x790037dd +drivers/message/fusion/mptscsih mptscsih_proc_info 0x901986f8 +drivers/message/fusion/mptscsih mptscsih_qcmd 0x51304fbd +drivers/message/fusion/mptscsih mptscsih_remove 0xf62ce29b +drivers/message/fusion/mptscsih mptscsih_scandv_complete 0xab7a1289 +drivers/message/fusion/mptscsih mptscsih_shutdown 0x70d5623c +drivers/message/fusion/mptscsih mptscsih_slave_alloc 0xb481b3e8 +drivers/message/fusion/mptscsih mptscsih_slave_configure 0x8b7115d4 +drivers/message/fusion/mptscsih mptscsih_slave_destroy 0xf302bace +drivers/message/fusion/mptscsih mptscsih_taskmgmt_complete 0x6872aee0 +drivers/message/fusion/mptscsih mptscsih_timer_expired 0x764ddf1a +drivers/message/i2o/i2o_core i2o_controllers 0xb4c00dcf +drivers/message/i2o/i2o_core i2o_device_claim 0x500edceb +drivers/message/i2o/i2o_core i2o_device_claim_release 0x658ab0da +drivers/message/i2o/i2o_core i2o_driver_notify_controller_add_all 0x8eda133e +drivers/message/i2o/i2o_core i2o_driver_notify_controller_remove_all 0xb70c7b2e +drivers/message/i2o/i2o_core i2o_driver_notify_device_add_all 0x9b95cb35 +drivers/message/i2o/i2o_core i2o_driver_notify_device_remove_all 0x0e33c674 +drivers/message/i2o/i2o_core i2o_driver_register 0x687c1b33 +drivers/message/i2o/i2o_core i2o_driver_unregister 0xe5d7fed3 +drivers/message/i2o/i2o_core i2o_dump_message 0x2a843bef +drivers/message/i2o/i2o_core i2o_event_register 0xd5c6bfa6 +drivers/message/i2o/i2o_core i2o_exec_lct_get 0xd3d645b0 +drivers/message/i2o/i2o_core i2o_find_iop 0x979fdf6b +drivers/message/i2o/i2o_core i2o_iop_find_device 0x89f0392a +drivers/message/i2o/i2o_core i2o_msg_get_wait 0x1ff57c40 +drivers/message/i2o/i2o_core i2o_msg_nop 0xecdcf17a +drivers/message/i2o/i2o_core i2o_msg_post_wait_mem 0x331b7142 +drivers/message/i2o/i2o_core i2o_parm_field_get 0x91b0b452 +drivers/message/i2o/i2o_core i2o_parm_issue 0x19891f3b +drivers/message/i2o/i2o_core i2o_parm_table_get 0xff38912d +drivers/message/i2o/i2o_core i2o_status_get 0x2ce6553f +drivers/net/8390 NS8390_init 0xc6da6c76 +drivers/net/8390 __alloc_ei_netdev 0x5a52d738 +drivers/net/8390 ei_close 0x28a15d61 +drivers/net/8390 ei_interrupt 0xf8dd9ad5 +drivers/net/8390 ei_open 0x8cf7e521 +drivers/net/8390 ei_poll 0x309bc020 +drivers/net/mii generic_mii_ioctl 0xbfb7b22e +drivers/net/mii mii_check_gmii_support 0x47a3d13a +drivers/net/mii mii_check_link 0x38c6ed05 +drivers/net/mii mii_check_media 0x7399c465 +drivers/net/mii mii_ethtool_gset 0xd0747315 +drivers/net/mii mii_ethtool_sset 0xdfec484c +drivers/net/mii mii_link_ok 0x7d3ff579 +drivers/net/mii mii_nway_restart 0xe77e83fe +drivers/net/phy/libphy genphy_config_advert 0x403ccb93 +drivers/net/phy/libphy genphy_config_aneg 0xb69cb9ec +drivers/net/phy/libphy genphy_read_status 0xede7cdd2 +drivers/net/phy/libphy mdiobus_register 0xc8f6baed +drivers/net/phy/libphy mdiobus_unregister 0x1e0197c0 +drivers/net/phy/libphy phy_attach 0x4955c639 +drivers/net/phy/libphy phy_connect 0x27092bd1 +drivers/net/phy/libphy phy_detach 0x790c61da +drivers/net/phy/libphy phy_disable_interrupts 0x2024e1cf +drivers/net/phy/libphy phy_disconnect 0xa76abc23 +drivers/net/phy/libphy phy_driver_register 0x6178fffd +drivers/net/phy/libphy phy_driver_unregister 0x79e5ea86 +drivers/net/phy/libphy phy_enable_interrupts 0xef1d2e6e +drivers/net/phy/libphy phy_print_status 0x719daf21 +drivers/net/phy/libphy phy_read 0x1416c820 +drivers/net/phy/libphy phy_sanitize_settings 0xd482eb62 +drivers/net/phy/libphy phy_start 0x8f68cce9 +drivers/net/phy/libphy phy_start_aneg 0x61ca51ff +drivers/net/phy/libphy phy_start_interrupts 0xfa76239f +drivers/net/phy/libphy phy_stop 0x85a1edcb +drivers/net/phy/libphy phy_stop_interrupts 0xf027a874 +drivers/net/phy/libphy phy_write 0xb924faac +drivers/net/ppp_generic ppp_channel_index 0x42961be4 +drivers/net/ppp_generic ppp_input 0xd9fb9c9b +drivers/net/ppp_generic ppp_input_error 0xd92aaf11 +drivers/net/ppp_generic ppp_output_wakeup 0xf1c6064e +drivers/net/ppp_generic ppp_register_channel 0x5e311e6c +drivers/net/ppp_generic ppp_register_compressor 0x9b3e003d +drivers/net/ppp_generic ppp_unit_number 0x749572fd +drivers/net/ppp_generic ppp_unregister_channel 0x8dd16ab3 +drivers/net/ppp_generic ppp_unregister_compressor 0x11fde7e3 +drivers/net/pppox pppox_unbind_sock 0xc0b1f091 +drivers/net/pppox register_pppox_proto 0xb36447bf +drivers/net/pppox unregister_pppox_proto 0xe0ff7a18 +drivers/net/slhc slhc_compress 0x6a47fcc2 +drivers/net/slhc slhc_free 0xeb3c59ef +drivers/net/slhc slhc_init 0x86de1d74 +drivers/net/slhc slhc_remember 0x9536b7c2 +drivers/net/slhc slhc_toss 0x3b36a20a +drivers/net/slhc slhc_uncompress 0xa532de34 +drivers/net/sungem_phy mii_phy_probe 0xd7a23f0d +drivers/net/wireless/airo init_airo_card 0x81823f1e +drivers/net/wireless/airo reset_airo_card 0x36973b3d +drivers/net/wireless/airo stop_airo_card 0x7b33d81a +drivers/net/wireless/hermes hermes_allocate 0xd5168829 +drivers/net/wireless/hermes hermes_bap_pread 0xd3f714e5 +drivers/net/wireless/hermes hermes_bap_pwrite 0xc60b5e9e +drivers/net/wireless/hermes hermes_bap_pwrite_pad 0x2d86dfb4 +drivers/net/wireless/hermes hermes_docmd_wait 0xd54e219d +drivers/net/wireless/hermes hermes_init 0xd5336e5d +drivers/net/wireless/hermes hermes_read_ltv 0xd38d8ae2 +drivers/net/wireless/hermes hermes_struct_init 0xed47b224 +drivers/net/wireless/hermes hermes_write_ltv 0x4196c38b +drivers/net/wireless/hostap/hostap hostap_80211_get_hdrlen 0x6903f16c +drivers/net/wireless/hostap/hostap hostap_80211_header_parse 0xc15bb0b3 +drivers/net/wireless/hostap/hostap hostap_80211_prism_header_parse 0xdcb96b36 +drivers/net/wireless/hostap/hostap hostap_80211_rx 0x1edbf92d +drivers/net/wireless/hostap/hostap hostap_add_interface 0xf523c351 +drivers/net/wireless/hostap/hostap hostap_add_sta 0xe533180d +drivers/net/wireless/hostap/hostap hostap_add_wds_links 0xf4f4bf2d +drivers/net/wireless/hostap/hostap hostap_check_sta_fw_version 0x73f7c3b3 +drivers/net/wireless/hostap/hostap hostap_deauth_all_stas 0x626169c3 +drivers/net/wireless/hostap/hostap hostap_dump_rx_header 0x27a069d6 +drivers/net/wireless/hostap/hostap hostap_dump_tx_80211 0x29075b2c +drivers/net/wireless/hostap/hostap hostap_dump_tx_header 0x3abcbf80 +drivers/net/wireless/hostap/hostap hostap_free_data 0x597e53db +drivers/net/wireless/hostap/hostap hostap_get_porttype 0xbd190346 +drivers/net/wireless/hostap/hostap hostap_get_stats 0x5b871360 +drivers/net/wireless/hostap/hostap hostap_handle_sta_release 0x27df6133 +drivers/net/wireless/hostap/hostap hostap_handle_sta_rx 0xd7318fc4 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx 0x0353cdc5 +drivers/net/wireless/hostap/hostap hostap_handle_sta_tx_exc 0x1e32498c +drivers/net/wireless/hostap/hostap hostap_info_init 0x4de83d6c +drivers/net/wireless/hostap/hostap hostap_info_process 0xd6034b82 +drivers/net/wireless/hostap/hostap hostap_init_ap_proc 0x5d7b9b11 +drivers/net/wireless/hostap/hostap hostap_init_data 0x9507a54c +drivers/net/wireless/hostap/hostap hostap_init_proc 0x798a0f6a +drivers/net/wireless/hostap/hostap hostap_is_sta_assoc 0x309b1f03 +drivers/net/wireless/hostap/hostap hostap_is_sta_authorized 0xca1b3f8a +drivers/net/wireless/hostap/hostap hostap_master_start_xmit 0x0a40f9eb +drivers/net/wireless/hostap/hostap hostap_proc 0x3a394a80 +drivers/net/wireless/hostap/hostap hostap_remove_interface 0x39e10708 +drivers/net/wireless/hostap/hostap hostap_remove_proc 0xb1fbdd70 +drivers/net/wireless/hostap/hostap hostap_set_antsel 0x2d6a40fe +drivers/net/wireless/hostap/hostap hostap_set_auth_algs 0xe7dac31d +drivers/net/wireless/hostap/hostap hostap_set_encryption 0x94342a81 +drivers/net/wireless/hostap/hostap hostap_set_hostapd 0x0243f592 +drivers/net/wireless/hostap/hostap hostap_set_hostapd_sta 0x3e3bb2f5 +drivers/net/wireless/hostap/hostap hostap_set_multicast_list_queue 0xc089a779 +drivers/net/wireless/hostap/hostap hostap_set_roaming 0x790d3aaa +drivers/net/wireless/hostap/hostap hostap_set_string 0x82333ecb +drivers/net/wireless/hostap/hostap hostap_set_word 0x0942af83 +drivers/net/wireless/hostap/hostap hostap_setup_dev 0x5498918f +drivers/net/wireless/hostap/hostap hostap_tx_encrypt 0xbeb3ceab +drivers/net/wireless/hostap/hostap hostap_update_rates 0x2261a7c2 +drivers/net/wireless/hostap/hostap hostap_update_sta_ps 0x4e405222 +drivers/net/wireless/hostap/hostap hostap_wds_link_oper 0x414271a0 +drivers/net/wireless/hostap/hostap prism2_update_comms_qual 0xaead2197 +drivers/net/wireless/orinoco __orinoco_down 0x2910c0e7 +drivers/net/wireless/orinoco __orinoco_up 0xcf492b3f +drivers/net/wireless/orinoco alloc_orinocodev 0x80372aa3 +drivers/net/wireless/orinoco free_orinocodev 0x47ed2ea3 +drivers/net/wireless/orinoco orinoco_interrupt 0x95438e21 +drivers/net/wireless/orinoco orinoco_reinit_firmware 0x316ba643 +drivers/net/wireless/prism54_softmac/islsm alloc_islsm 0x3e2170c6 +drivers/net/wireless/prism54_softmac/islsm free_islsm 0x69e0d816 +drivers/net/wireless/prism54_softmac/islsm isl_debug 0x0e4bc92f +drivers/net/wireless/prism54_softmac/islsm isl_dump_bytes 0x73304ad9 +drivers/net/wireless/prism54_softmac/islsm isl_fn_enter 0x78ec8b7c +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit 0xcae1521d +drivers/net/wireless/prism54_softmac/islsm isl_fn_exit_v 0x62f920fa +drivers/net/wireless/prism54_softmac/islsm islsm_alloc_dump 0xf93580cf +drivers/net/wireless/prism54_softmac/islsm islsm_bootup_input 0xc17a0596 +drivers/net/wireless/prism54_softmac/islsm islsm_data_input 0xfdcbddea +drivers/net/wireless/prism54_softmac/islsm islsm_free 0x234591fc +drivers/net/wireless/prism54_softmac/islsm islsm_mode_set_filter 0x90d45cde +drivers/net/wireless/prism54_softmac/islsm islsm_ping_device 0x545d9303 +drivers/net/wireless/prism54_softmac/islsm islsm_request_firmware 0xdc2be7bf +drivers/net/wireless/prism54_softmac/islsm islsm_wait_timeout 0x1a6f909b +drivers/net/wireless/prism54_softmac/islsm register_islsm 0xd13541c2 +drivers/net/wireless/prism54_softmac/islsm unregister_islsm 0xa3da44cb +drivers/net/wireless/prism54_softmac/islsm_device uart_init_dev 0x1d0a6eba +drivers/net/wireless/prism54_softmac/islsm_device uart_release_dev 0x52a02076 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_alloc_ieee80211 0x08039566 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_free_ieee80211 0xab9b244a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_entries 0x27ce92f9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_deinit_handler 0x4e797913 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_crypt_delayed_deinit 0xe7ae8c9e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_beacon 0x7423c8a6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_get_crypto_ops 0xa01e05e6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_54g 0xc623eea6 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_is_shortslot 0xd0fdbf18 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_ps_tx_ack 0x5a6ac875 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_register_crypto_ops 0xf4375842 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_reset_queue 0x274c3fe3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx 0x440018a2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_rx_mgt 0xf6506791 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_start_protocol 0xcc681e05 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_softmac_stop_protocol 0xa8c990f1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_stop_queue 0x31a4bc87 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_txb_free 0x8756341a +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_unregister_crypto_ops 0x95b09bc0 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wake_queue 0x1d7bb934 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wlan_frequencies 0x04aff7a8 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wpa_supplicant_ioctl 0x265a672e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_encode 0x123c68cd +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_essid 0x5db76908 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_freq 0x2247223e +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_mode 0x798c482c +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_name 0x5c5fd929 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_power 0xb49ba5a1 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_rate 0x5940df37 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_scan 0x293c6d06 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_get_wap 0xcbf0710b +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_encode 0x0180c605 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_essid 0x8d81f710 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_freq 0x74cfcddb +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_mode 0x2f04a7c9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_power 0x64ad3bb9 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rate 0x0fc830d2 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_rawtx 0x799bd482 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_scan 0x7fb482e3 +drivers/net/wireless/rtl_ieee80211/ieee80211-rtl rtl_ieee80211_wx_set_wap 0xf0dbb73e +drivers/parport/parport parport_announce_port 0xd59a43be +drivers/parport/parport parport_claim 0x322dc53a +drivers/parport/parport parport_claim_or_block 0x4ac4be13 +drivers/parport/parport parport_find_base 0xa8644346 +drivers/parport/parport parport_find_number 0x1ea7eab2 +drivers/parport/parport parport_get_port 0xf0b4e808 +drivers/parport/parport parport_ieee1284_ecp_read_data 0x99498af7 +drivers/parport/parport parport_ieee1284_ecp_write_addr 0x2b29b352 +drivers/parport/parport parport_ieee1284_ecp_write_data 0xa304e3ae +drivers/parport/parport parport_ieee1284_epp_read_addr 0x72feee9f +drivers/parport/parport parport_ieee1284_epp_read_data 0x04a04dde +drivers/parport/parport parport_ieee1284_epp_write_addr 0x170f7dc6 +drivers/parport/parport parport_ieee1284_epp_write_data 0x9f222d3a +drivers/parport/parport parport_ieee1284_interrupt 0x85b2e6f4 +drivers/parport/parport parport_ieee1284_read_byte 0x1075529f +drivers/parport/parport parport_ieee1284_read_nibble 0xed246e36 +drivers/parport/parport parport_ieee1284_write_compat 0x371fed9f +drivers/parport/parport parport_negotiate 0x2e8e38a3 +drivers/parport/parport parport_put_port 0x6b1cb497 +drivers/parport/parport parport_read 0xd61bc534 +drivers/parport/parport parport_register_device 0x4ae9a1e5 +drivers/parport/parport parport_register_driver 0x4736ca08 +drivers/parport/parport parport_register_port 0x83747c16 +drivers/parport/parport parport_release 0x2fa20da5 +drivers/parport/parport parport_remove_port 0xdb30ad5b +drivers/parport/parport parport_set_timeout 0x30916f9f +drivers/parport/parport parport_unregister_device 0x8af20f68 +drivers/parport/parport parport_unregister_driver 0x2cc99d39 +drivers/parport/parport parport_wait_event 0x27ddf652 +drivers/parport/parport parport_wait_peripheral 0x0a870692 +drivers/parport/parport parport_write 0xa52661c5 +drivers/parport/parport_pc parport_pc_probe_port 0xc783f34f +drivers/parport/parport_pc parport_pc_unregister_port 0x56ffe389 +drivers/pcmcia/pcmcia cs_error 0xdcf5b0bb +drivers/pcmcia/pcmcia pcmcia_access_configuration_register 0x481287d5 +drivers/pcmcia/pcmcia pcmcia_deregister_client 0x45fa5e34 +drivers/pcmcia/pcmcia pcmcia_get_configuration_info 0xc36d86bb +drivers/pcmcia/pcmcia pcmcia_get_first_tuple 0xf4b7405c +drivers/pcmcia/pcmcia pcmcia_get_mem_page 0xf5851907 +drivers/pcmcia/pcmcia pcmcia_get_next_tuple 0xc0764afb +drivers/pcmcia/pcmcia pcmcia_get_status 0x412d575e +drivers/pcmcia/pcmcia pcmcia_get_tuple_data 0x60a8a44d +drivers/pcmcia/pcmcia pcmcia_get_window 0x104379eb +drivers/pcmcia/pcmcia pcmcia_map_mem_page 0x9be25c86 +drivers/pcmcia/pcmcia pcmcia_modify_configuration 0x3d0b49e3 +drivers/pcmcia/pcmcia pcmcia_parse_tuple 0xa882f90c +drivers/pcmcia/pcmcia pcmcia_register_client 0xb19eed54 +drivers/pcmcia/pcmcia pcmcia_register_driver 0x63b2c18a +drivers/pcmcia/pcmcia pcmcia_release_configuration 0x2eec98e5 +drivers/pcmcia/pcmcia pcmcia_release_io 0xc0977685 +drivers/pcmcia/pcmcia pcmcia_release_irq 0x3a4a2ed9 +drivers/pcmcia/pcmcia pcmcia_release_window 0xe1cce700 +drivers/pcmcia/pcmcia pcmcia_request_configuration 0x5fba5490 +drivers/pcmcia/pcmcia pcmcia_request_io 0x48f98d22 +drivers/pcmcia/pcmcia pcmcia_request_irq 0xf163a70d +drivers/pcmcia/pcmcia pcmcia_request_window 0xf2923273 +drivers/pcmcia/pcmcia pcmcia_reset_card 0xdc5a066f +drivers/pcmcia/pcmcia pcmcia_unregister_driver 0xfe0d220d +drivers/pcmcia/pcmcia pcmcia_validate_cis 0xcb508343 +drivers/pcmcia/pcmcia_core dead_socket 0xcf97f3bd +drivers/pcmcia/pcmcia_core destroy_cis_cache 0xc0166047 +drivers/pcmcia/pcmcia_core pccard_get_first_tuple 0x4f781b78 +drivers/pcmcia/pcmcia_core pccard_get_next_tuple 0x7502956f +drivers/pcmcia/pcmcia_core pccard_get_tuple_data 0x9df9df3b +drivers/pcmcia/pcmcia_core pccard_parse_tuple 0xcd2ac1c1 +drivers/pcmcia/pcmcia_core pccard_read_tuple 0x01618dc5 +drivers/pcmcia/pcmcia_core pccard_register_pcmcia 0xb7b94889 +drivers/pcmcia/pcmcia_core pccard_reset_card 0x2232c1af +drivers/pcmcia/pcmcia_core pccard_static_ops 0x1d14fac4 +drivers/pcmcia/pcmcia_core pccard_validate_cis 0xef06d8d2 +drivers/pcmcia/pcmcia_core pcmcia_adjust_io_region 0xce5873b7 +drivers/pcmcia/pcmcia_core pcmcia_adjust_resource_info 0xac8e7c5f +drivers/pcmcia/pcmcia_core pcmcia_eject_card 0xd70a1b72 +drivers/pcmcia/pcmcia_core pcmcia_find_io_region 0x42250029 +drivers/pcmcia/pcmcia_core pcmcia_find_mem_region 0xc6ff59c8 +drivers/pcmcia/pcmcia_core pcmcia_get_socket 0x7d857f58 +drivers/pcmcia/pcmcia_core pcmcia_get_socket_by_nr 0xd87efff5 +drivers/pcmcia/pcmcia_core pcmcia_insert_card 0x19cfa688 +drivers/pcmcia/pcmcia_core pcmcia_parse_events 0x6d06f6b5 +drivers/pcmcia/pcmcia_core pcmcia_put_socket 0x13dc8cbe +drivers/pcmcia/pcmcia_core pcmcia_read_cis_mem 0xa5282909 +drivers/pcmcia/pcmcia_core pcmcia_register_socket 0x3a3ee4a6 +drivers/pcmcia/pcmcia_core pcmcia_replace_cis 0x095e79b9 +drivers/pcmcia/pcmcia_core pcmcia_resume_card 0x387a6227 +drivers/pcmcia/pcmcia_core pcmcia_socket_class 0x1fc77fb4 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_resume 0x0a341fe6 +drivers/pcmcia/pcmcia_core pcmcia_socket_dev_suspend 0x99b0168f +drivers/pcmcia/pcmcia_core pcmcia_socket_list 0x212db8d2 +drivers/pcmcia/pcmcia_core pcmcia_socket_list_rwsem 0xc38fe41f +drivers/pcmcia/pcmcia_core pcmcia_suspend_card 0xb701631c +drivers/pcmcia/pcmcia_core pcmcia_unregister_socket 0xa7810721 +drivers/pcmcia/pcmcia_core pcmcia_validate_mem 0x6e2fa3b9 +drivers/pcmcia/pcmcia_core pcmcia_write_cis_mem 0x36f46003 +drivers/pcmcia/pcmcia_core release_cis_mem 0xcdf4cf53 +drivers/pcmcia/rsrc_nonstatic pccard_nonstatic_ops 0x56a41477 +drivers/scsi/53c700 NCR_700_detect 0x29436ea0 +drivers/scsi/53c700 NCR_700_intr 0x92565439 +drivers/scsi/53c700 NCR_700_release 0x67e1347d +drivers/scsi/megaraid/megaraid_mm mraid_mm_adapter_app_handle 0x2250c66e +drivers/scsi/megaraid/megaraid_mm mraid_mm_register_adp 0x8fbe7d19 +drivers/scsi/megaraid/megaraid_mm mraid_mm_unregister_adp 0x512c956d +drivers/scsi/qla2xxx/qla2xxx qla2x00_probe_one 0x090a4e3d +drivers/scsi/qla2xxx/qla2xxx qla2x00_remove_one 0x9c8ec80f +drivers/scsi/qlogicfas408 qlogicfas408_abort 0xb735fc0b +drivers/scsi/qlogicfas408 qlogicfas408_biosparam 0xeffaa4dd +drivers/scsi/qlogicfas408 qlogicfas408_bus_reset 0x1e29483d +drivers/scsi/qlogicfas408 qlogicfas408_detect 0x3fd8cd71 +drivers/scsi/qlogicfas408 qlogicfas408_disable_ints 0xa4ba3ea9 +drivers/scsi/qlogicfas408 qlogicfas408_get_chip_type 0xe76b3b20 +drivers/scsi/qlogicfas408 qlogicfas408_ihandl 0x0c32d554 +drivers/scsi/qlogicfas408 qlogicfas408_info 0x22cd5d71 +drivers/scsi/qlogicfas408 qlogicfas408_queuecommand 0x20f70688 +drivers/scsi/qlogicfas408 qlogicfas408_setup 0xf2b95199 +drivers/scsi/raid_class raid_class_attach 0x9cd9a60a +drivers/scsi/raid_class raid_class_release 0x0c53f892 +drivers/scsi/raid_class raid_component_add 0x91f41421 +drivers/scsi/sas/sas_class sas_register_ha 0x37228c95 +drivers/scsi/sas/sas_class sas_unregister_ha 0x478ece6e +drivers/scsi/scsi_transport_fc fc_attach_transport 0xa601478b +drivers/scsi/scsi_transport_fc fc_release_transport 0x6e921b8a +drivers/scsi/scsi_transport_fc fc_remote_port_add 0xed145f70 +drivers/scsi/scsi_transport_fc fc_remote_port_delete 0xaa487185 +drivers/scsi/scsi_transport_fc fc_remote_port_rolechg 0xe95785d8 +drivers/scsi/scsi_transport_fc fc_remove_host 0x35809367 +drivers/scsi/scsi_transport_fc scsi_is_fc_rport 0xeff598cb +drivers/scsi/scsi_transport_iscsi iscsi_conn_error 0xa00c3d76 +drivers/scsi/scsi_transport_iscsi iscsi_recv_pdu 0x9b0d92e7 +drivers/scsi/scsi_transport_iscsi iscsi_register_transport 0xadfccc4a +drivers/scsi/scsi_transport_iscsi iscsi_unregister_transport 0x03996ed9 +drivers/scsi/scsi_transport_sas sas_attach_transport 0xa3f9cb0a +drivers/scsi/scsi_transport_sas sas_phy_add 0x64ae1919 +drivers/scsi/scsi_transport_sas sas_phy_alloc 0x069fff74 +drivers/scsi/scsi_transport_sas sas_phy_delete 0xbf371080 +drivers/scsi/scsi_transport_sas sas_phy_free 0x4c1b085d +drivers/scsi/scsi_transport_sas sas_release_transport 0xe1dfc017 +drivers/scsi/scsi_transport_sas sas_remove_host 0x3c3c7116 +drivers/scsi/scsi_transport_sas sas_rphy_add 0xe52c5b1c +drivers/scsi/scsi_transport_sas sas_rphy_alloc 0x52b3ef81 +drivers/scsi/scsi_transport_sas sas_rphy_delete 0x1e826e47 +drivers/scsi/scsi_transport_sas sas_rphy_free 0x69131adb +drivers/scsi/scsi_transport_sas scsi_is_sas_phy 0x3f1c4eaf +drivers/scsi/scsi_transport_sas scsi_is_sas_rphy 0x31650c80 +drivers/scsi/scsi_transport_spi2 spi2_attach_transport 0x99872183 +drivers/scsi/scsi_transport_spi2 spi2_display_xfer_agreement 0x92619110 +drivers/scsi/scsi_transport_spi2 spi2_dv_device 0x98a5768d +drivers/scsi/scsi_transport_spi2 spi2_populate_ppr_msg 0xa3ff1593 +drivers/scsi/scsi_transport_spi2 spi2_populate_sync_msg 0xb540856a +drivers/scsi/scsi_transport_spi2 spi2_populate_width_msg 0xc204bd04 +drivers/scsi/scsi_transport_spi2 spi2_print_msg 0xfabf1b6a +drivers/scsi/scsi_transport_spi2 spi2_release_transport 0x9f0c5241 +drivers/scsi/scsi_transport_spi2 spi2_schedule_dv_device 0x6bfc5212 +drivers/usb/core/usbcore __usb_get_extra_descriptor 0x9924c496 +drivers/usb/core/usbcore usb_add_hcd 0x3841440f +drivers/usb/core/usbcore usb_alloc_dev 0x08a20b6f +drivers/usb/core/usbcore usb_alloc_urb 0xd855465f +drivers/usb/core/usbcore usb_altnum_to_altsetting 0xb855b45b +drivers/usb/core/usbcore usb_buffer_alloc 0x98c3c8fa +drivers/usb/core/usbcore usb_buffer_free 0x516b4400 +drivers/usb/core/usbcore usb_buffer_map_sg 0x85ea9f7e +drivers/usb/core/usbcore usb_buffer_unmap_sg 0x9b042f8b +drivers/usb/core/usbcore usb_bulk_msg 0x5602c2c2 +drivers/usb/core/usbcore usb_bus_list 0xace5c0fc +drivers/usb/core/usbcore usb_bus_list_lock 0x4b2ecc7c +drivers/usb/core/usbcore usb_calc_bus_time 0x7e64181d +drivers/usb/core/usbcore usb_check_bandwidth 0xe6625ef2 +drivers/usb/core/usbcore usb_claim_bandwidth 0xdac2221e +drivers/usb/core/usbcore usb_clear_halt 0x4044b1a7 +drivers/usb/core/usbcore usb_control_msg 0x483ee7fa +drivers/usb/core/usbcore usb_create_hcd 0x103a4cf3 +drivers/usb/core/usbcore usb_deregister 0x0d19ad39 +drivers/usb/core/usbcore usb_deregister_dev 0x44a94ecd +drivers/usb/core/usbcore usb_disabled 0x19a304ba +drivers/usb/core/usbcore usb_disconnect 0x2385e07d +drivers/usb/core/usbcore usb_driver_claim_interface 0xc4f1e488 +drivers/usb/core/usbcore usb_driver_release_interface 0x935d875b +drivers/usb/core/usbcore usb_find_device 0xcb5f788e +drivers/usb/core/usbcore usb_find_interface 0x373538cb +drivers/usb/core/usbcore usb_free_urb 0x9f45a124 +drivers/usb/core/usbcore usb_get_current_frame_number 0x09234214 +drivers/usb/core/usbcore usb_get_descriptor 0xca3b2e91 +drivers/usb/core/usbcore usb_get_dev 0x5ac3d132 +drivers/usb/core/usbcore usb_get_intf 0x5144fb6e +drivers/usb/core/usbcore usb_get_status 0x41a9430d +drivers/usb/core/usbcore usb_get_string 0x043c520b +drivers/usb/core/usbcore usb_get_urb 0x7caf9574 +drivers/usb/core/usbcore usb_hc_died 0x8a257d03 +drivers/usb/core/usbcore usb_hcd_giveback_urb 0x6f666eb6 +drivers/usb/core/usbcore usb_hcd_pci_probe 0xeb0879ab +drivers/usb/core/usbcore usb_hcd_pci_remove 0xe4d3a39c +drivers/usb/core/usbcore usb_hcd_poll_rh_status 0xf52a7320 +drivers/usb/core/usbcore usb_hub_tt_clear_buffer 0x4efa0b60 +drivers/usb/core/usbcore usb_ifnum_to_if 0xf8b5e4e7 +drivers/usb/core/usbcore usb_init_urb 0x97a3e68f +drivers/usb/core/usbcore usb_kill_urb 0x2cbc6b27 +drivers/usb/core/usbcore usb_lock_device 0x6cf16d62 +drivers/usb/core/usbcore usb_lock_device_for_reset 0x795128d0 +drivers/usb/core/usbcore usb_match_id 0xb3d28eb7 +drivers/usb/core/usbcore usb_mon_deregister 0xfed11ed1 +drivers/usb/core/usbcore usb_mon_register 0xb642fb04 +drivers/usb/core/usbcore usb_put_dev 0x5d938c6f +drivers/usb/core/usbcore usb_put_hcd 0x7adfd156 +drivers/usb/core/usbcore usb_put_intf 0xc1eb154b +drivers/usb/core/usbcore usb_register 0x214f9068 +drivers/usb/core/usbcore usb_register_dev 0x6c700db8 +drivers/usb/core/usbcore usb_register_notify 0x3be89d3c +drivers/usb/core/usbcore usb_release_bandwidth 0x824b2d1a +drivers/usb/core/usbcore usb_remove_hcd 0xaf6a6b3a +drivers/usb/core/usbcore usb_reset_configuration 0xdae49713 +drivers/usb/core/usbcore usb_reset_device 0x9696de94 +drivers/usb/core/usbcore usb_set_device_state 0x8879b98f +drivers/usb/core/usbcore usb_set_interface 0x3d701446 +drivers/usb/core/usbcore usb_sg_cancel 0x956c53f2 +drivers/usb/core/usbcore usb_sg_init 0xa4f05ca9 +drivers/usb/core/usbcore usb_sg_wait 0xe4adaed2 +drivers/usb/core/usbcore usb_string 0xec6ac428 +drivers/usb/core/usbcore usb_submit_urb 0x024a0e11 +drivers/usb/core/usbcore usb_trylock_device 0x5b91d71f +drivers/usb/core/usbcore usb_unlink_urb 0x128878de +drivers/usb/core/usbcore usb_unlock_device 0x8b8adf26 +drivers/usb/core/usbcore usb_unregister_notify 0xe9587909 +drivers/usb/host/sl811-hcd sl811h_driver 0xf5998b26 +drivers/usb/media/podxtpro/podxtpro podxtpro_create_files 0xbf78ebec +drivers/usb/media/podxtpro/podxtpro podxtpro_remove_files 0x7c2af57f +drivers/usb/media/podxtpro/podxtpro podxtpro_set_parameter 0x80526622 +fs/configfs/configfs config_group_init 0x8eb590b5 +fs/configfs/configfs config_group_init_type_name 0x80eb6926 +fs/configfs/configfs config_item_get 0xb11a979b +fs/configfs/configfs config_item_init 0x8eef4066 +fs/configfs/configfs config_item_init_type_name 0xaa70e097 +fs/configfs/configfs config_item_put 0xfffc30e6 +fs/configfs/configfs config_item_set_name 0x10f3bb4f +fs/configfs/configfs configfs_register_subsystem 0x22cc239f +fs/configfs/configfs configfs_unregister_subsystem 0xb9b60d3f +fs/exportfs/exportfs export_op_default 0x4ac4e917 +fs/exportfs/exportfs find_exported_dentry 0x2a9c58e5 +fs/fat/fat fat_add_entries 0x10f1290f +fs/fat/fat fat_alloc_new_dir 0x9f50e1d7 +fs/fat/fat fat_attach 0x557167fa +fs/fat/fat fat_build_inode 0xc64db678 +fs/fat/fat fat_date_unix2dos 0x08b18831 +fs/fat/fat fat_detach 0x6bcbc132 +fs/fat/fat fat_dir_empty 0xab7fb2c0 +fs/fat/fat fat_fill_super 0x7c740eca +fs/fat/fat fat_free_clusters 0xf3ef7c50 +fs/fat/fat fat_fs_panic 0xd78a5d19 +fs/fat/fat fat_get_dotdot_entry 0x3d56054e +fs/fat/fat fat_notify_change 0x89fa5c57 +fs/fat/fat fat_remove_entries 0x05950272 +fs/fat/fat fat_scan 0x91d050d5 +fs/fat/fat fat_search_long 0x11ec93fc +fs/fat/fat fat_sync_bhs 0xf88a9794 +fs/fat/fat fat_sync_inode 0x85c8b0d0 +fs/gfs_locking/lock_dlm/lock_dlm lock_dlm_debug_dump 0xba0e1714 +fs/gfs_locking/lock_harness/lock_harness lm_mount 0x5d74c67f +fs/gfs_locking/lock_harness/lock_harness lm_register_proto 0xebb238be +fs/gfs_locking/lock_harness/lock_harness lm_unmount 0x63bf0f6f +fs/gfs_locking/lock_harness/lock_harness lm_unregister_proto 0x204bec54 +fs/gfs_locking/lock_harness/lock_harness lm_withdraw 0xb991e099 +fs/jbd/jbd journal_abort 0xe56c1dcd +fs/jbd/jbd journal_ack_err 0x98016788 +fs/jbd/jbd journal_blocks_per_page 0xa0801fe4 +fs/jbd/jbd journal_check_available_features 0x836125f4 +fs/jbd/jbd journal_check_used_features 0xff2a582e +fs/jbd/jbd journal_clear_err 0xcf88f732 +fs/jbd/jbd journal_create 0x1407685a +fs/jbd/jbd journal_destroy 0xe1142d5f +fs/jbd/jbd journal_dirty_data 0x6d6c8173 +fs/jbd/jbd journal_dirty_metadata 0x93aaef21 +fs/jbd/jbd journal_errno 0x4054ec49 +fs/jbd/jbd journal_extend 0x9d1f8913 +fs/jbd/jbd journal_flush 0x91b32648 +fs/jbd/jbd journal_force_commit 0xf8963fdb +fs/jbd/jbd journal_force_commit_nested 0x122e714c +fs/jbd/jbd journal_forget 0x3dd25139 +fs/jbd/jbd journal_get_create_access 0xd8ec47de +fs/jbd/jbd journal_get_undo_access 0xceb4080e +fs/jbd/jbd journal_get_write_access 0x6e5c7877 +fs/jbd/jbd journal_init_dev 0x7158e410 +fs/jbd/jbd journal_init_inode 0xb58dc556 +fs/jbd/jbd journal_invalidatepage 0x89c9b6d2 +fs/jbd/jbd journal_load 0x9ff28ea4 +fs/jbd/jbd journal_lock_updates 0xbc7589b4 +fs/jbd/jbd journal_release_buffer 0xbbf72ac1 +fs/jbd/jbd journal_restart 0xc37da777 +fs/jbd/jbd journal_revoke 0xcf4ef3cf +fs/jbd/jbd journal_set_features 0x172ddf52 +fs/jbd/jbd journal_start 0xacffa607 +fs/jbd/jbd journal_start_commit 0xfd9187fb +fs/jbd/jbd journal_stop 0x40f91719 +fs/jbd/jbd journal_try_to_free_buffers 0x5a926897 +fs/jbd/jbd journal_unlock_updates 0xe677d4a4 +fs/jbd/jbd journal_update_format 0xcefab1db +fs/jbd/jbd journal_update_superblock 0xf7bc695e +fs/jbd/jbd journal_wipe 0x67b66e5f +fs/jbd/jbd log_wait_commit 0xc1343860 +fs/nfsd/nfsd nfs4_acl_add_ace 0x1bb3671e +fs/nfsd/nfsd nfs4_acl_free 0xb70fbe06 +fs/nfsd/nfsd nfs4_acl_get_whotype 0x5a157ae4 +fs/nfsd/nfsd nfs4_acl_new 0x20dbd7e0 +fs/nfsd/nfsd nfs4_acl_nfsv4_to_posix 0x03b4de46 +fs/nfsd/nfsd nfs4_acl_posix_to_nfsv4 0xf459098f +fs/nfsd/nfsd nfs4_acl_write_who 0x35e33c1e +fs/ocfs2/cluster/ocfs2_nodemanager mlog_and_bits 0x687f6251 +fs/ocfs2/cluster/ocfs2_nodemanager mlog_not_bits 0x1cb231d0 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_local_node_heartbeating 0xd60f2c6c +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating 0x1d747ce3 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_check_node_heartbeating_from_callback 0xbaeb4700 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_fill_node_map 0x1b89c6ee +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_register_callback 0xcae034d4 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_setup_callback 0x098fc6c9 +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_stop_all_regions 0x4900035b +fs/ocfs2/cluster/ocfs2_nodemanager o2hb_unregister_callback 0x9714e4ce +fs/ocfs2/cluster/ocfs2_nodemanager o2net_register_handler 0x43bce54e +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message 0x36418553 +fs/ocfs2/cluster/ocfs2_nodemanager o2net_send_message_vec 0xa9f5379a +fs/ocfs2/cluster/ocfs2_nodemanager o2net_unregister_handler_list 0xf1a5611d +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_configured_node_map 0xa87bc9e7 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_hb_ctl_path 0xe525ca6c +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_ip 0x220fd536 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_get_node_by_num 0x22aafcf1 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_get 0x48c75a6f +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_node_put 0x5fe34374 +fs/ocfs2/cluster/ocfs2_nodemanager o2nm_this_node 0xa82a8645 +fs/ocfs2/dlm/ocfs2_dlm dlm_errmsg 0xd7ba575e +fs/ocfs2/dlm/ocfs2_dlm dlm_errname 0xfb86b96f +fs/ocfs2/dlm/ocfs2_dlm dlm_migrate_lockres 0x006865b7 +fs/ocfs2/dlm/ocfs2_dlm dlm_print_one_lock 0xf50a813c +fs/ocfs2/dlm/ocfs2_dlm dlm_register_domain 0x2437942d +fs/ocfs2/dlm/ocfs2_dlm dlm_register_eviction_cb 0xa5495255 +fs/ocfs2/dlm/ocfs2_dlm dlm_setup_eviction_cb 0x7a1211f8 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_domain 0xea6467d0 +fs/ocfs2/dlm/ocfs2_dlm dlm_unregister_eviction_cb 0xd8fa57a6 +fs/ocfs2/dlm/ocfs2_dlm dlmlock 0x5451e3d6 +fs/ocfs2/dlm/ocfs2_dlm dlmunlock 0x16d8253e +fs/relayfs/relayfs relay_buf_full 0x73a65d47 +fs/relayfs/relayfs relay_close 0x66b4060b +fs/relayfs/relayfs relay_flush 0xd0f39d79 +fs/relayfs/relayfs relay_open 0x20956ffe +fs/relayfs/relayfs relay_reset 0xeae5e676 +fs/relayfs/relayfs relay_subbufs_consumed 0x0d12e3e5 +fs/relayfs/relayfs relay_switch_subbuf 0x67c4bd64 +fs/relayfs/relayfs relayfs_create_dir 0x9ec4744b +fs/relayfs/relayfs relayfs_file_operations 0xef9efc3d +fs/relayfs/relayfs relayfs_remove_dir 0x383fa5f8 +lib/crc-ccitt crc_ccitt 0x3771b461 +lib/crc-ccitt crc_ccitt_table 0x75811312 +lib/crc16 crc16 0x8ffdb3b8 +lib/crc16 crc16_table 0x02a6ce5a +lib/libcrc32c crc32c_be 0x2329b292 +lib/libcrc32c crc32c_le 0x37d0b921 +lib/zlib_deflate/zlib_deflate zlib_deflate 0x46bc0adc +lib/zlib_deflate/zlib_deflate zlib_deflateCopy 0x44b473e5 +lib/zlib_deflate/zlib_deflate zlib_deflateEnd 0x53dbeea6 +lib/zlib_deflate/zlib_deflate zlib_deflateInit2_ 0xdc6fabd4 +lib/zlib_deflate/zlib_deflate zlib_deflateInit_ 0xd441e182 +lib/zlib_deflate/zlib_deflate zlib_deflateParams 0x598527f7 +lib/zlib_deflate/zlib_deflate zlib_deflateReset 0x2b619e9d +lib/zlib_deflate/zlib_deflate zlib_deflate_workspacesize 0xf0caf44b +net/bridge/bridge br_should_route_hook 0x24084e1e +net/bridge/netfilter/ebtables ebt_do_table 0xf4da2352 +net/bridge/netfilter/ebtables ebt_register_match 0x2703cd69 +net/bridge/netfilter/ebtables ebt_register_table 0xfdd9cc5e +net/bridge/netfilter/ebtables ebt_register_target 0xfb1d72b5 +net/bridge/netfilter/ebtables ebt_register_watcher 0xac921622 +net/bridge/netfilter/ebtables ebt_unregister_match 0x8c7ddf1c +net/bridge/netfilter/ebtables ebt_unregister_table 0x91f3a03f +net/bridge/netfilter/ebtables ebt_unregister_target 0x5eadd3ea +net/bridge/netfilter/ebtables ebt_unregister_watcher 0x63452c01 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_calc_i_mean 0xffff1ec4 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_delete 0xc14edbd1 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_interval_new 0xc88f598b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_new 0xed82b007 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_li_hist_purge 0xb03b9b3b +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_add_packet 0xd846acb9 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_delete 0x33ad5e15 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_detect_loss 0x4e75fd53 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_find_data_packet 0xb5b65e72 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_new 0x0b616686 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_rx_hist_purge 0x9a1790d2 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_delete 0x90f3df52 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_find_entry 0x0fece10d +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_new 0x0a630e87 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge 0xea9b81e8 +net/dccp/ccids/lib/dccp_tfrc_lib dccp_tx_hist_purge_older 0xb34906b8 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x 0x0a487ea5 +net/dccp/ccids/lib/dccp_tfrc_lib tfrc_calc_x_reverse_lookup 0x6c252d29 +net/dccp/dccp ccid_exit 0xf8b002b8 +net/dccp/dccp ccid_init 0xbfbb2e5b +net/dccp/dccp ccid_register 0x97330701 +net/dccp/dccp ccid_unregister 0xca17d004 +net/dccp/dccp dccp_hashinfo 0x4826fc64 +net/dccp/dccp dccp_insert_option 0x371bc5b5 +net/dccp/dccp dccp_insert_option_elapsed_time 0x98224c0e +net/dccp/dccp dccp_insert_option_timestamp 0xc96a671b +net/dccp/dccp dccp_packet_name 0x86be7924 +net/dccp/dccp dccp_send_ack 0xe6803019 +net/dccp/dccp dccp_state_name 0x56ea266a +net/dccp/dccp dccp_timestamp 0x0a92d24b +net/ieee80211/ieee80211 alloc_ieee80211 0xefef26c7 +net/ieee80211/ieee80211 escape_essid 0xa9fb135f +net/ieee80211/ieee80211 free_ieee80211 0x9e445283 +net/ieee80211/ieee80211 ieee80211_channel_to_index 0x2ddf23a0 +net/ieee80211/ieee80211 ieee80211_freq_to_channel 0xbaaef522 +net/ieee80211/ieee80211 ieee80211_get_channel 0x1df97a50 +net/ieee80211/ieee80211 ieee80211_get_channel_flags 0xc84d9046 +net/ieee80211/ieee80211 ieee80211_get_geo 0x4bfd787c +net/ieee80211/ieee80211 ieee80211_is_valid_channel 0x48ba3e02 +net/ieee80211/ieee80211 ieee80211_rx 0x4571ed4d +net/ieee80211/ieee80211 ieee80211_rx_mgt 0xf059b82b +net/ieee80211/ieee80211 ieee80211_set_geo 0x23b1f82e +net/ieee80211/ieee80211 ieee80211_tx_frame 0x37bcec83 +net/ieee80211/ieee80211 ieee80211_txb_free 0x93ef2443 +net/ieee80211/ieee80211 ieee80211_wx_get_auth 0x4e17c232 +net/ieee80211/ieee80211 ieee80211_wx_get_encode 0x411672af +net/ieee80211/ieee80211 ieee80211_wx_get_encodeext 0xe3a474be +net/ieee80211/ieee80211 ieee80211_wx_get_scan 0xc02bce87 +net/ieee80211/ieee80211 ieee80211_wx_set_auth 0x1d316f33 +net/ieee80211/ieee80211 ieee80211_wx_set_encode 0x058693af +net/ieee80211/ieee80211 ieee80211_wx_set_encodeext 0x54ce2513 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_entries 0x4c6edd42 +net/ieee80211/ieee80211_crypt ieee80211_crypt_deinit_handler 0x279e265f +net/ieee80211/ieee80211_crypt ieee80211_crypt_delayed_deinit 0x69c19811 +net/ieee80211/ieee80211_crypt ieee80211_crypt_quiescing 0x4df6cea0 +net/ieee80211/ieee80211_crypt ieee80211_get_crypto_ops 0x0c0827bf +net/ieee80211/ieee80211_crypt ieee80211_register_crypto_ops 0x1e2bb009 +net/ieee80211/ieee80211_crypt ieee80211_unregister_crypto_ops 0x6147151e +net/ieee80211/softmac/ieee80211softmac alloc_ieee80211softmac 0x0fa7c10f +net/ieee80211/softmac/ieee80211softmac free_ieee80211softmac 0xa9762f87 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_clear_pending_work 0x622fa2df +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_fragment_lost 0x1eb77ce2 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_notify_gfp 0x6d384a08 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_scan_finished 0xa3005117 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_set_rates 0x3c777e6e +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_start 0x880d398f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_stop 0xdafa9ad5 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_essid 0xfafb509d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_genie 0x2081bb96 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_rate 0x14adfcf5 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_scan_results 0x666f860d +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_get_wap 0x138a8bcd +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_essid 0x8daf46a6 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_genie 0x57d5adad +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_rate 0x478b51f4 +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_set_wap 0x86b4ba3f +net/ieee80211/softmac/ieee80211softmac ieee80211softmac_wx_trigger_scan 0xb025047b +net/ieee80211_1_1_13/ieee80211_1_1_13 alloc_ieee80211_1_1_13 0x577091ea +net/ieee80211_1_1_13/ieee80211_1_1_13 free_ieee80211_1_1_13 0x85adf684 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_channel_to_index 0x5136b068 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_freq_to_channel 0x36f3e457 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel 0x0ca96136 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_channel_flags 0xa2de430b +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_get_geo 0x4e5e453e +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_is_valid_channel 0x39cad423 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx 0x231c2b11 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_rx_mgt 0xb422e343 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_set_geo 0xcea24bee +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_tx_frame 0x8239e77f +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_txb_free 0x14f5cdb7 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_auth 0x10cc870d +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encode 0x2867ddf2 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_encodeext 0x41bc4ec0 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_get_scan 0x46393e46 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_auth 0x92031011 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encode 0x9d676404 +net/ieee80211_1_1_13/ieee80211_1_1_13 ieee80211_1_1_13_wx_set_encodeext 0xc5f254e6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_entries 0x8c6a1943 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_deinit_handler 0x51d4d7a6 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_delayed_deinit 0x73f352a2 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_crypt_quiescing 0x5f518c72 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_get_crypto_ops 0xd13a6d8d +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_register_crypto_ops 0xc1c852c2 +net/ieee80211_1_1_13/ieee80211_1_1_13_crypt ieee80211_1_1_13_unregister_crypto_ops 0xe62744cb +net/ipv4/netfilter/arp_tables arpt_do_table 0x77b27b4f +net/ipv4/netfilter/arp_tables arpt_register_table 0x683bc3c4 +net/ipv4/netfilter/arp_tables arpt_register_target 0x4de1813d +net/ipv4/netfilter/arp_tables arpt_unregister_table 0x1d703de9 +net/ipv4/netfilter/arp_tables arpt_unregister_target 0x33d088cb +net/ipv4/netfilter/ip_conntrack __ip_conntrack_expect_find 0x7b5a2d30 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_find 0xec373ede +net/ipv4/netfilter/ip_conntrack __ip_conntrack_helper_find_byname 0x36076f27 +net/ipv4/netfilter/ip_conntrack __ip_conntrack_proto_find 0x9ba3d5fd +net/ipv4/netfilter/ip_conntrack __ip_ct_refresh_acct 0xdc133a9e +net/ipv4/netfilter/ip_conntrack invert_tuplepr 0x4a3e4b8a +net/ipv4/netfilter/ip_conntrack ip_conntrack_alloc 0xe5b108e9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_alter_reply 0x02f4e87a +net/ipv4/netfilter/ip_conntrack ip_conntrack_destroyed 0x264c099b +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_alloc 0xbd1198e9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_find 0xb97bae67 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_list 0x62ffb0b6 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_put 0xdf1302b0 +net/ipv4/netfilter/ip_conntrack ip_conntrack_expect_related 0x57187f11 +net/ipv4/netfilter/ip_conntrack ip_conntrack_find_get 0x1c66e8cd +net/ipv4/netfilter/ip_conntrack ip_conntrack_flush 0xcdb1850a +net/ipv4/netfilter/ip_conntrack ip_conntrack_free 0x9e387370 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash 0x386855a5 +net/ipv4/netfilter/ip_conntrack ip_conntrack_hash_insert 0x27ef0cdc +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_find_get 0x068f3937 +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_put 0x9cf710ef +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_register 0xe65635db +net/ipv4/netfilter/ip_conntrack ip_conntrack_helper_unregister 0x288a1040 +net/ipv4/netfilter/ip_conntrack ip_conntrack_htable_size 0x8ef8af4c +net/ipv4/netfilter/ip_conntrack ip_conntrack_lock 0x62e86d27 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_find_get 0x05560e96 +net/ipv4/netfilter/ip_conntrack ip_conntrack_proto_put 0x260af7d4 +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_register 0x2bcfc13e +net/ipv4/netfilter/ip_conntrack ip_conntrack_protocol_unregister 0x484117f4 +net/ipv4/netfilter/ip_conntrack ip_conntrack_tcp_update 0x58240c5e +net/ipv4/netfilter/ip_conntrack ip_conntrack_tuple_taken 0x5ee968c9 +net/ipv4/netfilter/ip_conntrack ip_conntrack_unexpect_related 0x983a963d +net/ipv4/netfilter/ip_conntrack ip_conntrack_untracked 0xf595a328 +net/ipv4/netfilter/ip_conntrack ip_ct_gather_frags 0x9cd00fc8 +net/ipv4/netfilter/ip_conntrack ip_ct_get_tuple 0xec61bb99 +net/ipv4/netfilter/ip_conntrack ip_ct_iterate_cleanup 0x23c4a9e0 +net/ipv4/netfilter/ip_conntrack ip_ct_log_invalid 0x74ad6de3 +net/ipv4/netfilter/ip_conntrack ip_ct_port_nfattr_to_tuple 0x8aebc0b9 +net/ipv4/netfilter/ip_conntrack ip_ct_port_tuple_to_nfattr 0x10d33b72 +net/ipv4/netfilter/ip_conntrack ip_ct_remove_expectations 0x583472f5 +net/ipv4/netfilter/ip_conntrack ip_ct_unlink_expect 0xb5dd3725 +net/ipv4/netfilter/ip_conntrack need_ip_conntrack 0x6012c55f +net/ipv4/netfilter/ip_conntrack_amanda ip_nat_amanda_hook 0x00bac00c +net/ipv4/netfilter/ip_conntrack_ftp ip_nat_ftp_hook 0x1489951d +net/ipv4/netfilter/ip_conntrack_irc ip_nat_irc_hook 0x1e4ecf58 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_add 0xcc06f6e4 +net/ipv4/netfilter/ip_conntrack_pptp ip_ct_gre_keymap_destroy 0xc727c42e +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_exp_gre 0xb6733a6b +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_expectfn 0x8793ca92 +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_inbound 0x4bfe7dce +net/ipv4/netfilter/ip_conntrack_pptp ip_nat_pptp_hook_outbound 0x64a84bf5 +net/ipv4/netfilter/ip_conntrack_tftp ip_nat_tftp_hook 0x271c295f +net/ipv4/netfilter/ip_nat ip_nat_cheat_check 0x1e4e73a8 +net/ipv4/netfilter/ip_nat ip_nat_follow_master 0xc7261e33 +net/ipv4/netfilter/ip_nat ip_nat_icmp_reply_translation 0xdf6b7f94 +net/ipv4/netfilter/ip_nat ip_nat_mangle_tcp_packet 0x729219a8 +net/ipv4/netfilter/ip_nat ip_nat_mangle_udp_packet 0x1d3c5d1d +net/ipv4/netfilter/ip_nat ip_nat_packet 0x2e2e1a8a +net/ipv4/netfilter/ip_nat ip_nat_port_nfattr_to_range 0x1e9ae9f4 +net/ipv4/netfilter/ip_nat ip_nat_port_range_to_nfattr 0x7f3b3f8c +net/ipv4/netfilter/ip_nat ip_nat_proto_find_get 0x9880204a +net/ipv4/netfilter/ip_nat ip_nat_proto_put 0xe557e46c +net/ipv4/netfilter/ip_nat ip_nat_protocol_register 0x65575af9 +net/ipv4/netfilter/ip_nat ip_nat_protocol_unregister 0xb312351b +net/ipv4/netfilter/ip_nat ip_nat_seq_adjust 0x54a45900 +net/ipv4/netfilter/ip_nat ip_nat_setup_info 0xc520a621 +net/ipv4/netfilter/ip_nat ip_nat_used_tuple 0x6773c020 +net/ipv4/netfilter/ip_tables ipt_do_table 0x59b5505d +net/ipv4/netfilter/ip_tables ipt_find_target 0xa809ceb1 +net/ipv4/netfilter/ip_tables ipt_register_match 0x7d9be669 +net/ipv4/netfilter/ip_tables ipt_register_table 0x25378470 +net/ipv4/netfilter/ip_tables ipt_register_target 0xd404a847 +net/ipv4/netfilter/ip_tables ipt_unregister_match 0x01708d18 +net/ipv4/netfilter/ip_tables ipt_unregister_table 0x8b0f35d8 +net/ipv4/netfilter/ip_tables ipt_unregister_target 0xd7af7144 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_deregister 0xdc0b7e43 +net/ipv4/xfrm4_tunnel xfrm4_tunnel_register 0x05fd9789 +net/ipv6/ipv6 __ipv6_addr_type 0x15792c26 +net/ipv6/ipv6 addrconf_lock 0x76660832 +net/ipv6/ipv6 icmpv6_err_convert 0xb905ad82 +net/ipv6/ipv6 icmpv6_send 0xadf76f55 +net/ipv6/ipv6 icmpv6_statistics 0x30123eb5 +net/ipv6/ipv6 in6_dev_finish_destroy 0x0efd44d0 +net/ipv6/ipv6 inet6_add_protocol 0x0abeb0a4 +net/ipv6/ipv6 inet6_bind 0x39cfe497 +net/ipv6/ipv6 inet6_del_protocol 0xfa8c48d3 +net/ipv6/ipv6 inet6_getname 0x2116e9cd +net/ipv6/ipv6 inet6_ioctl 0x90b6c784 +net/ipv6/ipv6 inet6_register_protosw 0x624c75ce +net/ipv6/ipv6 inet6_release 0xf8799df0 +net/ipv6/ipv6 inet6_unregister_protosw 0x447e23fa +net/ipv6/ipv6 ip6_route_me_harder 0x67a75040 +net/ipv6/ipv6 ip6_route_output 0x6f4c6c11 +net/ipv6/ipv6 ip6_xmit 0x19d6dec6 +net/ipv6/ipv6 ipv6_chk_addr 0xfc598bdf +net/ipv6/ipv6 ipv6_get_saddr 0xf40b20dc +net/ipv6/ipv6 ipv6_getsockopt 0x2e678e23 +net/ipv6/ipv6 ipv6_push_nfrag_opts 0x30465422 +net/ipv6/ipv6 ipv6_setsockopt 0xfa93a2c0 +net/ipv6/ipv6 ndisc_mc_map 0x7dfd7a20 +net/ipv6/ipv6 register_inet6addr_notifier 0xce19bac5 +net/ipv6/ipv6 rt6_lookup 0x350fd526 +net/ipv6/ipv6 unregister_inet6addr_notifier 0x538383c0 +net/ipv6/ipv6 xfrm6_rcv 0xd48c29cf +net/ipv6/ipv6 xfrm6_rcv_spi 0x02b22804 +net/ipv6/netfilter/ip6_tables ip6t_do_table 0x25997b2d +net/ipv6/netfilter/ip6_tables ip6t_ext_hdr 0xb8bddf33 +net/ipv6/netfilter/ip6_tables ip6t_register_match 0x1ea637da +net/ipv6/netfilter/ip6_tables ip6t_register_table 0xab0b74d2 +net/ipv6/netfilter/ip6_tables ip6t_register_target 0x4b764549 +net/ipv6/netfilter/ip6_tables ip6t_unregister_match 0xb7044123 +net/ipv6/netfilter/ip6_tables ip6t_unregister_table 0x7ad705fb +net/ipv6/netfilter/ip6_tables ip6t_unregister_target 0xd0922f77 +net/ipv6/netfilter/ip6_tables ipv6_find_hdr 0x1dc04483 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_alloc_spi 0x5c0ff22c +net/ipv6/xfrm6_tunnel xfrm6_tunnel_deregister 0xc4a8d409 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_free_spi 0xb656c67d +net/ipv6/xfrm6_tunnel xfrm6_tunnel_register 0xa3ee6681 +net/ipv6/xfrm6_tunnel xfrm6_tunnel_spi_lookup 0x01df0295 +net/netfilter/nfnetlink __nfa_fill 0x87f1d6ec +net/netfilter/nfnetlink nfattr_parse 0xef509d51 +net/netfilter/nfnetlink nfnetlink_send 0xc567a1ca +net/netfilter/nfnetlink nfnetlink_subsys_register 0x43839048 +net/netfilter/nfnetlink nfnetlink_subsys_unregister 0xfe0cabb5 +net/netfilter/nfnetlink nfnetlink_unicast 0xc36fcba3 +net/sched/police tcf_police 0xa6dd782a +net/sched/police tcf_police_destroy 0x17b15ff0 +net/sched/police tcf_police_dump 0xd1f6e033 +net/sched/police tcf_police_dump_stats 0x4c2568b5 +net/sched/police tcf_police_hash 0x8493d6e7 +net/sched/police tcf_police_ht 0x7ae70efd +net/sched/police tcf_police_locate 0x27c4edd0 +net/sched/police tcf_police_lookup 0xaf4dc56a +net/sched/police tcf_police_new_index 0x7ae0f6c9 +sound/core/oss/snd-mixer-oss snd_mixer_oss_ioctl_card 0x40ae9cf5 +sound/core/seq/snd-seq snd_seq_create_kernel_client 0x622383ed +sound/core/seq/snd-seq snd_seq_delete_kernel_client 0x6bb71038 +sound/core/seq/snd-seq snd_seq_dump_var_event 0xc2d760c8 +sound/core/seq/snd-seq snd_seq_event_port_attach 0x2aed0b7a +sound/core/seq/snd-seq snd_seq_event_port_detach 0x7b8699eb +sound/core/seq/snd-seq snd_seq_expand_var_event 0x970a9fb0 +sound/core/seq/snd-seq snd_seq_kernel_client_ctl 0x1a724fcc +sound/core/seq/snd-seq snd_seq_kernel_client_dispatch 0x02f65ee4 +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue 0x4116c49d +sound/core/seq/snd-seq snd_seq_kernel_client_enqueue_blocking 0x4fdd551a +sound/core/seq/snd-seq snd_seq_kernel_client_write_poll 0x7693546a +sound/core/seq/snd-seq snd_seq_set_queue_tempo 0x5d9bfcb2 +sound/core/seq/snd-seq snd_use_lock_sync_helper 0x89947013 +sound/core/seq/snd-seq-device snd_seq_autoload_lock 0xb90668b2 +sound/core/seq/snd-seq-device snd_seq_autoload_unlock 0x3a57f235 +sound/core/seq/snd-seq-device snd_seq_device_load_drivers 0x6339b6d0 +sound/core/seq/snd-seq-device snd_seq_device_new 0xd29ee5f5 +sound/core/seq/snd-seq-device snd_seq_device_register_driver 0x86478e59 +sound/core/seq/snd-seq-device snd_seq_device_unregister_driver 0xc622fb29 +sound/core/seq/snd-seq-midi-event snd_midi_event_decode 0x3bc9a918 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode 0xa2b5de10 +sound/core/seq/snd-seq-midi-event snd_midi_event_encode_byte 0x1fa93cd3 +sound/core/seq/snd-seq-midi-event snd_midi_event_free 0x70d8d4ce +sound/core/seq/snd-seq-midi-event snd_midi_event_new 0x543b92b6 +sound/core/seq/snd-seq-midi-event snd_midi_event_no_status 0x4f61725f +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_decode 0x75eb3b12 +sound/core/seq/snd-seq-midi-event snd_midi_event_reset_encode 0x238e107a +sound/core/snd copy_from_user_toio 0xce3ca308 +sound/core/snd copy_to_user_fromio 0x602c96f0 +sound/core/snd release_and_free_resource 0x2d9db01e +sound/core/snd snd_card_disconnect 0x2291742a +sound/core/snd snd_card_file_add 0x5f63e960 +sound/core/snd snd_card_file_remove 0x4a4080af +sound/core/snd snd_card_free 0xf842255b +sound/core/snd snd_card_free_in_thread 0x20f7c13e +sound/core/snd snd_card_new 0x4f359f54 +sound/core/snd snd_card_proc_new 0xca469eb3 +sound/core/snd snd_card_register 0xa0f0f595 +sound/core/snd snd_card_set_generic_dev 0x648d554d +sound/core/snd snd_cards 0xa8fa0dbe +sound/core/snd snd_component_add 0x6b175349 +sound/core/snd snd_ctl_add 0x92d12e64 +sound/core/snd snd_ctl_elem_read 0x259eb9cb +sound/core/snd snd_ctl_elem_write 0x6daf4a71 +sound/core/snd snd_ctl_find_id 0xee15fbf0 +sound/core/snd snd_ctl_find_numid 0x75705255 +sound/core/snd snd_ctl_free_one 0xcee5774f +sound/core/snd snd_ctl_new 0x611e2f1b +sound/core/snd snd_ctl_new1 0xb7836708 +sound/core/snd snd_ctl_notify 0xc69058e8 +sound/core/snd snd_ctl_register_ioctl 0x18f685a0 +sound/core/snd snd_ctl_remove 0x98cb4aff +sound/core/snd snd_ctl_remove_id 0x6cc24be7 +sound/core/snd snd_ctl_rename_id 0x9a552ee7 +sound/core/snd snd_ctl_unregister_ioctl 0x230145fd +sound/core/snd snd_device_free 0x7f390437 +sound/core/snd snd_device_new 0xce4a1e98 +sound/core/snd snd_device_register 0xbe6f5f58 +sound/core/snd snd_ecards_limit 0x3971b4df +sound/core/snd snd_info_create_card_entry 0x17e71175 +sound/core/snd snd_info_create_module_entry 0x6075c1cb +sound/core/snd snd_info_free_entry 0xddaf18cd +sound/core/snd snd_info_get_line 0x0a6fd27b +sound/core/snd snd_info_get_str 0xb213fe8b +sound/core/snd snd_info_register 0x3763a0e4 +sound/core/snd snd_info_unregister 0x1f3062ac +sound/core/snd snd_iprintf 0x2f0b152f +sound/core/snd snd_major 0x8f595b11 +sound/core/snd snd_mixer_oss_notify_callback 0xd1eb8dd1 +sound/core/snd snd_oss_info_register 0x8df3789f +sound/core/snd snd_register_device 0xe0460ef9 +sound/core/snd snd_register_oss_device 0xe4d353cb +sound/core/snd snd_request_card 0x4a3ea5c0 +sound/core/snd snd_seq_root 0x85183c22 +sound/core/snd snd_unregister_device 0x17971975 +sound/core/snd snd_unregister_oss_device 0x16510dc4 +sound/core/snd-hwdep snd_hwdep_new 0xdf471d87 +sound/core/snd-page-alloc snd_dma_alloc_pages 0x1e16da19 +sound/core/snd-page-alloc snd_dma_alloc_pages_fallback 0x50dfbecf +sound/core/snd-page-alloc snd_dma_free_pages 0xa9b626bc +sound/core/snd-page-alloc snd_dma_get_reserved_buf 0xd81c8a28 +sound/core/snd-page-alloc snd_dma_reserve_buf 0x093b8f7d +sound/core/snd-page-alloc snd_free_pages 0x3b91f3af +sound/core/snd-page-alloc snd_malloc_pages 0xade88e76 +sound/core/snd-pcm _snd_pcm_hw_param_min 0xa3be0ddb +sound/core/snd-pcm _snd_pcm_hw_param_set 0x43ab6d9f +sound/core/snd-pcm _snd_pcm_hw_param_setempty 0xb661a635 +sound/core/snd-pcm _snd_pcm_hw_param_setinteger 0xfe98f3f6 +sound/core/snd-pcm _snd_pcm_hw_params_any 0x6667da40 +sound/core/snd-pcm snd_interval_list 0xdc76d1ad +sound/core/snd-pcm snd_interval_ratnum 0x80408aa0 +sound/core/snd-pcm snd_interval_refine 0x1070ed29 +sound/core/snd-pcm snd_pcm_build_linear_format 0x65f0da5e +sound/core/snd-pcm snd_pcm_devices 0xd7770263 +sound/core/snd-pcm snd_pcm_format_big_endian 0x09d405a0 +sound/core/snd-pcm snd_pcm_format_linear 0x1d607209 +sound/core/snd-pcm snd_pcm_format_little_endian 0x11ee487f +sound/core/snd-pcm snd_pcm_format_name 0x77863ed3 +sound/core/snd-pcm snd_pcm_format_physical_width 0x32be712f +sound/core/snd-pcm snd_pcm_format_set_silence 0xfa4027da +sound/core/snd-pcm snd_pcm_format_signed 0x78967306 +sound/core/snd-pcm snd_pcm_format_silence_64 0x407a3719 +sound/core/snd-pcm snd_pcm_format_size 0x0bde331d +sound/core/snd-pcm snd_pcm_format_unsigned 0x0ff581cb +sound/core/snd-pcm snd_pcm_format_width 0xcfb8aa1b +sound/core/snd-pcm snd_pcm_hw_constraint_integer 0xcc22c981 +sound/core/snd-pcm snd_pcm_hw_constraint_list 0x761e6326 +sound/core/snd-pcm snd_pcm_hw_constraint_minmax 0xdca3c05d +sound/core/snd-pcm snd_pcm_hw_constraint_msbits 0x70a50c94 +sound/core/snd-pcm snd_pcm_hw_constraint_pow2 0xe8fffb30 +sound/core/snd-pcm snd_pcm_hw_constraint_ratdens 0x71498dab +sound/core/snd-pcm snd_pcm_hw_constraint_ratnums 0x5d95fb12 +sound/core/snd-pcm snd_pcm_hw_constraint_step 0xe1d20f6e +sound/core/snd-pcm snd_pcm_hw_constraints_complete 0xa699cb1c +sound/core/snd-pcm snd_pcm_hw_constraints_init 0xde650d01 +sound/core/snd-pcm snd_pcm_hw_param_first 0xe33e050c +sound/core/snd-pcm snd_pcm_hw_param_last 0x2c64f4be +sound/core/snd-pcm snd_pcm_hw_param_mask 0xfc23d982 +sound/core/snd-pcm snd_pcm_hw_param_near 0xf7a4d4d0 +sound/core/snd-pcm snd_pcm_hw_param_set 0x5c72e803 +sound/core/snd-pcm snd_pcm_hw_param_value_max 0x6d375137 +sound/core/snd-pcm snd_pcm_hw_param_value_min 0x132c8ec7 +sound/core/snd-pcm snd_pcm_hw_refine 0xb93b7344 +sound/core/snd-pcm snd_pcm_hw_rule_add 0x8c94d99a +sound/core/snd-pcm snd_pcm_kernel_capture_ioctl 0xda52c97b +sound/core/snd-pcm snd_pcm_kernel_ioctl 0x18afc797 +sound/core/snd-pcm snd_pcm_kernel_playback_ioctl 0x88609c20 +sound/core/snd-pcm snd_pcm_lib_buffer_bytes 0x1244de9a +sound/core/snd-pcm snd_pcm_lib_free_pages 0x4a3926bb +sound/core/snd-pcm snd_pcm_lib_ioctl 0x631bfcb9 +sound/core/snd-pcm snd_pcm_lib_malloc_pages 0x8f62a8af +sound/core/snd-pcm snd_pcm_lib_period_bytes 0x2ea51f2c +sound/core/snd-pcm snd_pcm_lib_preallocate_free_for_all 0xf054c5e9 +sound/core/snd-pcm snd_pcm_lib_preallocate_pages 0x0482bb2f +sound/core/snd-pcm snd_pcm_lib_preallocate_pages_for_all 0xd1bc3b4d +sound/core/snd-pcm snd_pcm_lib_read 0x7a9631d8 +sound/core/snd-pcm snd_pcm_lib_readv 0xd60c25a6 +sound/core/snd-pcm snd_pcm_lib_write 0xb749c07a +sound/core/snd-pcm snd_pcm_lib_writev 0x8beb2e5e +sound/core/snd-pcm snd_pcm_limit_hw_rates 0x91df99d4 +sound/core/snd-pcm snd_pcm_link_rwlock 0xb6c7c56c +sound/core/snd-pcm snd_pcm_mmap_data 0xb1d6b8fd +sound/core/snd-pcm snd_pcm_new 0x873c8dc8 +sound/core/snd-pcm snd_pcm_new_stream 0xedcabd4b +sound/core/snd-pcm snd_pcm_notify 0xc40bd6f6 +sound/core/snd-pcm snd_pcm_open_substream 0x54d816a5 +sound/core/snd-pcm snd_pcm_period_elapsed 0xfed628dd +sound/core/snd-pcm snd_pcm_release_substream 0xe5a77a4b +sound/core/snd-pcm snd_pcm_set_ops 0xea8ee737 +sound/core/snd-pcm snd_pcm_set_sync 0xd951d8d0 +sound/core/snd-pcm snd_pcm_sgbuf_ops_page 0x50ca39e1 +sound/core/snd-pcm snd_pcm_stop 0x56b823d4 +sound/core/snd-rawmidi snd_rawmidi_drain_input 0x53104de1 +sound/core/snd-rawmidi snd_rawmidi_drain_output 0xce9a7a1f +sound/core/snd-rawmidi snd_rawmidi_drop_output 0x021bf95b +sound/core/snd-rawmidi snd_rawmidi_info 0xcf35d892 +sound/core/snd-rawmidi snd_rawmidi_info_select 0x90377e22 +sound/core/snd-rawmidi snd_rawmidi_input_params 0x1ebc8471 +sound/core/snd-rawmidi snd_rawmidi_kernel_open 0x19e17369 +sound/core/snd-rawmidi snd_rawmidi_kernel_read 0x4f9d8cfb +sound/core/snd-rawmidi snd_rawmidi_kernel_release 0x3a0ecc83 +sound/core/snd-rawmidi snd_rawmidi_kernel_write 0x24ca52a7 +sound/core/snd-rawmidi snd_rawmidi_new 0x1f1fd561 +sound/core/snd-rawmidi snd_rawmidi_output_params 0x002bc1d5 +sound/core/snd-rawmidi snd_rawmidi_receive 0x604350bf +sound/core/snd-rawmidi snd_rawmidi_set_ops 0x3875f6e3 +sound/core/snd-rawmidi snd_rawmidi_transmit 0xa6f4ec34 +sound/core/snd-rawmidi snd_rawmidi_transmit_ack 0xa2f72a91 +sound/core/snd-rawmidi snd_rawmidi_transmit_empty 0xba1cb166 +sound/core/snd-rawmidi snd_rawmidi_transmit_peek 0xb9be798c +sound/core/snd-timer snd_timer_close 0xab498287 +sound/core/snd-timer snd_timer_continue 0xce882b1c +sound/core/snd-timer snd_timer_global_free 0x996a44e4 +sound/core/snd-timer snd_timer_global_new 0x37901838 +sound/core/snd-timer snd_timer_global_register 0x90d5910b +sound/core/snd-timer snd_timer_global_unregister 0x42b763a7 +sound/core/snd-timer snd_timer_interrupt 0x3ce5b2d0 +sound/core/snd-timer snd_timer_new 0x13042483 +sound/core/snd-timer snd_timer_notify 0x0ec18383 +sound/core/snd-timer snd_timer_open 0x3a65b4f3 +sound/core/snd-timer snd_timer_pause 0xe36a8aae +sound/core/snd-timer snd_timer_resolution 0xa090dddf +sound/core/snd-timer snd_timer_start 0x075fc6f9 +sound/core/snd-timer snd_timer_stop 0xf2da69c1 +sound/drivers/vx/snd-vx-lib snd_vx_check_reg_bit 0xf06f306c +sound/drivers/vx/snd-vx-lib snd_vx_create 0xc3d14848 +sound/drivers/vx/snd-vx-lib snd_vx_delay 0x5098d1c0 +sound/drivers/vx/snd-vx-lib snd_vx_dsp_boot 0xf08d1a8a +sound/drivers/vx/snd-vx-lib snd_vx_dsp_load 0x5739646c +sound/drivers/vx/snd-vx-lib snd_vx_free_firmware 0x1c0b11a8 +sound/drivers/vx/snd-vx-lib snd_vx_irq_handler 0x9b239d5d +sound/drivers/vx/snd-vx-lib snd_vx_load_boot_image 0x3bb7347a +sound/drivers/vx/snd-vx-lib snd_vx_setup_firmware 0xd649d609 +sound/i2c/other/snd-ak4117 snd_ak4117_build 0x95ca7179 +sound/i2c/other/snd-ak4117 snd_ak4117_check_rate_and_errors 0x2eb671c4 +sound/i2c/other/snd-ak4117 snd_ak4117_create 0xa3416e29 +sound/i2c/other/snd-ak4117 snd_ak4117_external_rate 0x522da1c6 +sound/i2c/other/snd-ak4117 snd_ak4117_reg_write 0x662ef47f +sound/i2c/other/snd-ak4117 snd_ak4117_reinit 0x734ac5af +sound/pci/ac97/snd-ac97-bus ac97_bus_type 0x4fd95888 +sound/pci/ac97/snd-ac97-codec snd_ac97_bus 0x29ffb6e7 +sound/pci/ac97/snd-ac97-codec snd_ac97_get_short_name 0x1b79d5bf +sound/pci/ac97/snd-ac97-codec snd_ac97_mixer 0x77498811 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_assign 0xa73e9434 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_close 0xac59a5ea +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_double_rate_rules 0xabe66f67 +sound/pci/ac97/snd-ac97-codec snd_ac97_pcm_open 0x682b66b6 +sound/pci/ac97/snd-ac97-codec snd_ac97_read 0xf9a21e6c +sound/pci/ac97/snd-ac97-codec snd_ac97_set_rate 0x028269ce +sound/pci/ac97/snd-ac97-codec snd_ac97_tune_hardware 0x292afb95 +sound/pci/ac97/snd-ac97-codec snd_ac97_update 0xc557be36 +sound/pci/ac97/snd-ac97-codec snd_ac97_update_bits 0xf56756ee +sound/pci/ac97/snd-ac97-codec snd_ac97_write 0x8cb91672 +sound/pci/ac97/snd-ac97-codec snd_ac97_write_cache 0x47c9f472 +sound/soundcore mod_firmware_load 0x39e3dd23 +sound/soundcore register_sound_dsp 0x9578d707 +sound/soundcore register_sound_midi 0x517eb74e +sound/soundcore register_sound_mixer 0xf32fce6c +sound/soundcore register_sound_special 0xb5b51118 +sound/soundcore register_sound_special_device 0x04ecf17f +sound/soundcore register_sound_synth 0x4624fe6e +sound/soundcore sound_class 0x8fb909e1 +sound/soundcore unregister_sound_dsp 0xcd083b10 +sound/soundcore unregister_sound_midi 0xfdab6de3 +sound/soundcore unregister_sound_mixer 0x7afc9d8a +sound/soundcore unregister_sound_special 0x99c95fa5 +sound/soundcore unregister_sound_synth 0xdf03108a +vmlinux $$divI 0x9ea93a0c +vmlinux $$divI_10 0xe3bf4573 +vmlinux $$divI_12 0xbbd3fcb2 +vmlinux $$divI_14 0x536636f1 +vmlinux $$divI_15 0x92e8e931 +vmlinux $$divI_3 0x02a01458 +vmlinux $$divI_5 0xea15de1b +vmlinux $$divI_6 0x73f7b81a +vmlinux $$divI_7 0xb27967da +vmlinux $$divI_9 0xe00f4cdc +vmlinux $$divU 0x3a456c00 +vmlinux $$divU_10 0xaff8e832 +vmlinux $$divU_12 0xf79451f3 +vmlinux $$divU_14 0x1f219bb0 +vmlinux $$divU_15 0xdeaf4470 +vmlinux $$divU_3 0x2c1d0b79 +vmlinux $$divU_5 0xc4a8c13a +vmlinux $$divU_6 0x5d4aa73b +vmlinux $$divU_7 0x9cc478fb +vmlinux $$divU_9 0xceb253fd +vmlinux $$dyncall 0xbccf7ff8 +vmlinux $$mulI 0xf86ddff0 +vmlinux $$remI 0xe7e9bddf +vmlinux $$remU 0x4305ebd3 +vmlinux $global$ 0x1d73adf1 +vmlinux EISA_bus 0x7413793a +vmlinux I_BDEV 0x42dade29 +vmlinux SELECT_DRIVE 0xf79a91d9 +vmlinux ____request_resource 0x7aec8c42 +vmlinux ___pskb_trim 0x48715d82 +vmlinux __alloc_pages 0x98ee1f96 +vmlinux __alloc_percpu 0x50c89f23 +vmlinux __alloc_skb 0xa18600f3 +vmlinux __ashldi3 0x40f07981 +vmlinux __ashrdi3 0xedd9106d +vmlinux __atomic_hash 0xab654359 +vmlinux __bdevname 0x6b1b67d3 +vmlinux __bforget 0xd12e29b7 +vmlinux __bio_clone 0xc18fe11b +vmlinux __bitmap_and 0xac3b3cee +vmlinux __bitmap_andnot 0xd02cc869 +vmlinux __bitmap_complement 0xf3bf0bce +vmlinux __bitmap_empty 0x6d27ef64 +vmlinux __bitmap_equal 0xc256e762 +vmlinux __bitmap_full 0xb0b847ac +vmlinux __bitmap_intersects 0xea10655a +vmlinux __bitmap_or 0x9f2bdaac +vmlinux __bitmap_shift_left 0x76bf656d +vmlinux __bitmap_shift_right 0x0acb1a3c +vmlinux __bitmap_subset 0x4a358252 +vmlinux __bitmap_weight 0x4cbbd171 +vmlinux __bitmap_xor 0xd0181f4f +vmlinux __blockdev_direct_IO 0x85f1127b +vmlinux __bread 0x3627be98 +vmlinux __breadahead 0xe77ec4c6 +vmlinux __break_lease 0xc6f9672b +vmlinux __brelse 0x4908bab0 +vmlinux __canonicalize_funcptr_for_compare 0xf38ab871 +vmlinux __check_region 0xf1d0cdab +vmlinux __cmpxchg_u32 0x12fa180d +vmlinux __create_workqueue 0xfefaa54d +vmlinux __d_path 0xf22902ef +vmlinux __dev_get_by_index 0x82818cec +vmlinux __dev_get_by_name 0x829285ea +vmlinux __dev_remove_pack 0xe71cd3e7 +vmlinux __div64_32 0x8ebf25f5 +vmlinux __down 0xe6eff0db +vmlinux __down_interruptible 0x4d047371 +vmlinux __down_read 0x5810b2a7 +vmlinux __down_read_trylock 0x19b623f9 +vmlinux __down_write 0xcb537bcd +vmlinux __down_write_trylock 0x3ae5b842 +vmlinux __downgrade_write 0xb815bc74 +vmlinux __dst_free 0xf4f6103c +vmlinux __elv_add_request 0x1d784efa +vmlinux __find_get_block 0xdc18461c +vmlinux __free_pages 0x94eaec5b +vmlinux __generic_file_aio_read 0xbb4e311e +vmlinux __generic_unplug_device 0x40fbf366 +vmlinux __get_free_pages 0x93fca811 +vmlinux __getblk 0x48dd206b +vmlinux __ide_abort 0x34bd9030 +vmlinux __ide_dma_bad_drive 0xf171bab2 +vmlinux __ide_dma_check 0x534baa98 +vmlinux __ide_dma_end 0xfc6a51f1 +vmlinux __ide_dma_good_drive 0xed3fb2ee +vmlinux __ide_dma_host_off 0x61ffd8cb +vmlinux __ide_dma_host_on 0x226db2b0 +vmlinux __ide_dma_lostirq 0x7d2d236d +vmlinux __ide_dma_off 0x5c8dd4dc +vmlinux __ide_dma_off_quietly 0x62680a53 +vmlinux __ide_dma_on 0x88f472d5 +vmlinux __ide_dma_timeout 0x341ff0ae +vmlinux __ide_end_request 0xb3c4ff06 +vmlinux __ide_error 0xf9165d81 +vmlinux __ide_pci_register_driver 0x1239ed11 +vmlinux __inet_lookup_listener 0x34c0143b +vmlinux __inet_twsk_hashdance 0xd7648ea7 +vmlinux __inet_twsk_kill 0x3ed4a2e0 +vmlinux __init_timer_base 0x6811916f +vmlinux __inode_dir_notify 0x190882d4 +vmlinux __insert_inode_hash 0x126d351e +vmlinux __invalidate_device 0xe78f1345 +vmlinux __ioremap 0x9eac042a +vmlinux __ip_route_output_key 0x2b27edd3 +vmlinux __ip_select_ident 0x6d24f2ec +vmlinux __kfifo_get 0x79d692f7 +vmlinux __kfifo_put 0x35285707 +vmlinux __kfree_skb 0x5ada2349 +vmlinux __kill_fasync 0x4ef0a05a +vmlinux __kmalloc 0x12da5bb2 +vmlinux __lock_buffer 0x570e70f1 +vmlinux __lock_page 0x72543a0c +vmlinux __lshrdi3 0xff67b37f +vmlinux __mark_inode_dirty 0x81e2c200 +vmlinux __mod_page_state 0x1db5c4e2 +vmlinux __mod_timer 0xb3c851f7 +vmlinux __module_put_and_exit 0x3fc6422d +vmlinux __muldi3 0x800e4ffa +vmlinux __neigh_event_send 0x07b29dc4 +vmlinux __neigh_for_each_release 0x1c715bad +vmlinux __net_timestamp 0x472916b5 +vmlinux __netdev_watchdog_up 0x34762e82 +vmlinux __nla_put 0x316666c4 +vmlinux __nla_reserve 0x3df0fef8 +vmlinux __page_cache_release 0x0a07478c +vmlinux __pagevec_lru_add 0x0688e0c4 +vmlinux __pagevec_release 0x8fb6bd77 +vmlinux __pci_register_driver 0x6ede1ccd +vmlinux __per_cpu_offset 0x280f9f14 +vmlinux __print_symbol 0xdf60cc27 +vmlinux __printk_ratelimit 0x82384d0b +vmlinux __pskb_pull_tail 0x68b00af9 +vmlinux __release_region 0xd49501d4 +vmlinux __request_region 0x1a1a4f09 +vmlinux __rta_fill 0x1433285b +vmlinux __scm_destroy 0x17fcaa2c +vmlinux __scm_send 0xfdac644d +vmlinux __scsi_add_device 0x77eb05b0 +vmlinux __scsi_device_lookup 0x6f508e23 +vmlinux __scsi_device_lookup_by_target 0x2a673b2f +vmlinux __scsi_iterate_devices 0x5cf8f913 +vmlinux __scsi_print_command 0xfef96e23 +vmlinux __scsi_print_sense 0x69d38ed9 +vmlinux __secpath_destroy 0xa03c3df2 +vmlinux __serio_register_driver 0x87155fe2 +vmlinux __serio_register_port 0x0b34a48b +vmlinux __serio_unregister_port_delayed 0xd6b593d3 +vmlinux __set_page_dirty_buffers 0xc57afed5 +vmlinux __set_page_dirty_nobuffers 0x7b98ec1b +vmlinux __set_personality 0x6a47571d +vmlinux __sk_stream_mem_reclaim 0xd7b407d4 +vmlinux __skb_checksum_complete 0x168f3619 +vmlinux __skb_linearize 0x93f30416 +vmlinux __symbol_get 0x868784cb +vmlinux __symbol_put 0x6e9dd606 +vmlinux __tasklet_hi_schedule 0x267fc65b +vmlinux __tasklet_schedule 0xf397b9aa +vmlinux __tcf_em_tree_match 0x1404710f +vmlinux __up 0x568313e4 +vmlinux __up_read 0x5995d7f3 +vmlinux __up_write 0xa7546b45 +vmlinux __user_walk 0x9d3115d4 +vmlinux __vm_enough_memory 0x8c97a7db +vmlinux __vmalloc 0x8e879bb7 +vmlinux __vmalloc_node 0xff9a2cdc +vmlinux __wait_on_bit 0x2e75d28a +vmlinux __wait_on_bit_lock 0x27b3a56e +vmlinux __wait_on_buffer 0x308ce333 +vmlinux __wake_up 0x910302ef +vmlinux __wake_up_bit 0xb485ab24 +vmlinux __wake_up_sync 0x92484696 +vmlinux __xchg32 0xc387ec0b +vmlinux __xchg8 0x4e7bc574 +vmlinux __xfrm_policy_check 0xf31a6129 +vmlinux __xfrm_policy_destroy 0x2dd44b56 +vmlinux __xfrm_route_forward 0x174b2db0 +vmlinux __xfrm_state_destroy 0xce05b9ab +vmlinux _atomic_dec_and_lock 0x0f23f015 +vmlinux _ctype 0x8d3894f2 +vmlinux _read_lock 0x6a48305b +vmlinux _read_lock_bh 0x03d5461c +vmlinux _read_lock_irq 0x4b2d8a4a +vmlinux _read_lock_irqsave 0x715ace97 +vmlinux _read_trylock 0xa63feb78 +vmlinux _read_unlock 0x95c20288 +vmlinux _read_unlock_bh 0x6c07f3c5 +vmlinux _read_unlock_irq 0xb44d328f +vmlinux _read_unlock_irqrestore 0x4ad406b7 +vmlinux _spin_lock 0x5b4db895 +vmlinux _spin_lock_bh 0xb3f19f04 +vmlinux _spin_lock_irq 0x095ebcc4 +vmlinux _spin_lock_irqsave 0x7d729ae8 +vmlinux _spin_trylock 0x79a67f43 +vmlinux _spin_trylock_bh 0x8996acdd +vmlinux _spin_unlock 0x299ebc35 +vmlinux _spin_unlock_bh 0x113f847c +vmlinux _spin_unlock_irq 0x57228bd1 +vmlinux _spin_unlock_irqrestore 0xa7421d0c +vmlinux _write_lock 0xf6aec921 +vmlinux _write_lock_bh 0xd6a4b6bf +vmlinux _write_lock_irq 0x042709e8 +vmlinux _write_lock_irqsave 0x8d6d05ca +vmlinux _write_trylock 0xdbb4f7b9 +vmlinux _write_unlock 0x847345aa +vmlinux _write_unlock_bh 0x54903b82 +vmlinux _write_unlock_irq 0x5ccd7174 +vmlinux _write_unlock_irqrestore 0x29eaa88f +vmlinux acquire_console_sem 0xf174ed48 +vmlinux add_disk 0x1fa4a280 +vmlinux add_disk_randomness 0x81f2ed33 +vmlinux add_hotplug_env_var 0x79aba27d +vmlinux add_taint 0xdc2adb35 +vmlinux add_to_page_cache 0xa1bac744 +vmlinux add_wait_queue 0x2beec627 +vmlinux add_wait_queue_exclusive 0xd49f2aa5 +vmlinux adjust_resource 0xfd05bd8a +vmlinux aio_complete 0x7bb8778e +vmlinux aio_put_req 0x38184140 +vmlinux alloc_buffer_head 0xb112eb04 +vmlinux alloc_chrdev_region 0x29537c9e +vmlinux alloc_disk 0x5a5f267d +vmlinux alloc_disk_node 0xbbd63901 +vmlinux alloc_etherdev 0x108ed527 +vmlinux alloc_netdev 0x372b4626 +vmlinux alloc_page_buffers 0x07174235 +vmlinux alloc_tty_driver 0x8e3e17fc +vmlinux allocate_resource 0xb859c3d0 +vmlinux allow_signal 0xd79b5a02 +vmlinux anon_transport_class_register 0xc9d14469 +vmlinux anon_transport_class_unregister 0x7ac0ffb6 +vmlinux arp_broken_ops 0x65990d92 +vmlinux arp_create 0x7fcedb17 +vmlinux arp_find 0xcd3f3158 +vmlinux arp_rcv 0x73aa20d7 +vmlinux arp_send 0x586eec27 +vmlinux arp_tbl 0xfd5cc75f +vmlinux arp_xmit 0x99f1893f +vmlinux attribute_container_add_attrs 0xef6ffd12 +vmlinux attribute_container_add_class_device 0x4a1b5ea9 +vmlinux attribute_container_add_class_device_adapter 0x970c45c1 +vmlinux attribute_container_class_device_del 0x9e5c4bd9 +vmlinux attribute_container_classdev_to_container 0x5ab776e4 +vmlinux attribute_container_device_trigger 0xc100fdbf +vmlinux attribute_container_find_class_device 0x97f4305e +vmlinux attribute_container_register 0x7009b1f7 +vmlinux attribute_container_remove_attrs 0xcf060459 +vmlinux attribute_container_remove_device 0x6b667966 +vmlinux attribute_container_trigger 0x3d7d9e44 +vmlinux attribute_container_unregister 0xfbf0b268 +vmlinux auth_domain_find 0xce9b7a1f +vmlinux auth_domain_lookup 0xa74157e3 +vmlinux auth_domain_put 0xb7e2b4a5 +vmlinux auth_unix_add_addr 0xb8520a43 +vmlinux auth_unix_forget_old 0x758f9c49 +vmlinux auth_unix_lookup 0xd1d4e136 +vmlinux autoremove_wake_function 0xc8b57c27 +vmlinux avenrun 0xf1e98c74 +vmlinux balance_dirty_pages_ratelimited 0x6e8545eb +vmlinux bd_claim 0x8082722d +vmlinux bd_release 0xcc8a90ac +vmlinux bd_set_size 0xeee87bb0 +vmlinux bdev_read_only 0x2eab0ab0 +vmlinux bdevname 0xcd7d307d +vmlinux bdget 0x34b771f1 +vmlinux bdput 0x41e2cf06 +vmlinux bfifo_qdisc_ops 0xb6e9ec3d +vmlinux bio_add_page 0xbff290cf +vmlinux bio_alloc 0xba45c3ce +vmlinux bio_alloc_bioset 0x2d1a2436 +vmlinux bio_clone 0x626e1a2e +vmlinux bio_copy_user 0x2a9dd96f +vmlinux bio_endio 0xef23b173 +vmlinux bio_free 0x2181a1e2 +vmlinux bio_get_nr_vecs 0xc97aa5c3 +vmlinux bio_hw_segments 0x9c093ff6 +vmlinux bio_init 0x43d4f30f +vmlinux bio_map_kern 0xf8ddb454 +vmlinux bio_map_user 0x47da3feb +vmlinux bio_pair_release 0x8863b8ed +vmlinux bio_phys_segments 0x22f8fe05 +vmlinux bio_put 0x8d4eca93 +vmlinux bio_split 0x8fd2d99f +vmlinux bio_split_pool 0x307174cc +vmlinux bio_uncopy_user 0x8ff76426 +vmlinux bio_unmap_user 0x2502614c +vmlinux bioset_create 0x925ac58e +vmlinux bioset_free 0x71db0980 +vmlinux bit_waitqueue 0x2b5a2f9c +vmlinux bitmap_allocate_region 0x1ace138d +vmlinux bitmap_bitremap 0xeea9dbaf +vmlinux bitmap_find_free_region 0x1551dc51 +vmlinux bitmap_parse 0xb97220ff +vmlinux bitmap_parselist 0x1b015d25 +vmlinux bitmap_release_region 0x8251bcc3 +vmlinux bitmap_remap 0x5594be03 +vmlinux bitmap_scnlistprintf 0x83a476ce +vmlinux bitmap_scnprintf 0x4c1182cb +vmlinux bitreverse 0xbaeb160c +vmlinux blk_alloc_queue 0xf311195d +vmlinux blk_alloc_queue_node 0x4fb1023f +vmlinux blk_cleanup_queue 0xfc1e554c +vmlinux blk_complete_barrier_rq 0x1aee0eeb +vmlinux blk_complete_barrier_rq_locked 0xb34c8d13 +vmlinux blk_congestion_wait 0x1d17e4bd +vmlinux blk_dump_rq_flags 0xaa5a0561 +vmlinux blk_end_sync_rq 0x55b87c3d +vmlinux blk_execute_rq 0x9aa3dfe1 +vmlinux blk_get_backing_dev_info 0x18844fa7 +vmlinux blk_get_queue 0xa0c7c418 +vmlinux blk_get_request 0xb534394f +vmlinux blk_init_queue 0xe2177a49 +vmlinux blk_init_queue_node 0x21b4eed8 +vmlinux blk_insert_request 0x5b3307d5 +vmlinux blk_max_low_pfn 0x1163f0a7 +vmlinux blk_max_pfn 0x82e59756 +vmlinux blk_plug_device 0x128a5ebd +vmlinux blk_put_request 0x130b4e2c +vmlinux blk_queue_activity_fn 0x0aba4134 +vmlinux blk_queue_bounce 0x72a45a74 +vmlinux blk_queue_bounce_limit 0x7fc54b11 +vmlinux blk_queue_dma_alignment 0x9f6a4e4a +vmlinux blk_queue_end_tag 0x262b5284 +vmlinux blk_queue_find_tag 0x173d2edf +vmlinux blk_queue_free_tags 0x8511e3a9 +vmlinux blk_queue_hardsect_size 0xaa60ed40 +vmlinux blk_queue_init_tags 0x4b250206 +vmlinux blk_queue_invalidate_tags 0x6f4f9df1 +vmlinux blk_queue_issue_flush_fn 0xd07a1325 +vmlinux blk_queue_make_request 0x62d10f32 +vmlinux blk_queue_max_hw_segments 0xd3a83206 +vmlinux blk_queue_max_phys_segments 0x1f5faf89 +vmlinux blk_queue_max_sectors 0x673195ed +vmlinux blk_queue_max_segment_size 0xb52a6335 +vmlinux blk_queue_merge_bvec 0x80954f5d +vmlinux blk_queue_ordered 0x2111ade6 +vmlinux blk_queue_prep_rq 0xad92610c +vmlinux blk_queue_resize_tags 0xeee83252 +vmlinux blk_queue_segment_boundary 0x0cb94b7f +vmlinux blk_queue_stack_limits 0x82c035dc +vmlinux blk_queue_start_tag 0x4fd5b88c +vmlinux blk_register_region 0xcc5aeca0 +vmlinux blk_remove_plug 0x4091eaca +vmlinux blk_requeue_request 0x764248f0 +vmlinux blk_rq_bio_prep 0x0107e475 +vmlinux blk_rq_map_kern 0x5260c4fa +vmlinux blk_rq_map_sg 0x00ee8d70 +vmlinux blk_rq_map_user 0xd79744da +vmlinux blk_rq_map_user_iov 0xe9e81237 +vmlinux blk_rq_unmap_user 0x780cb68f +vmlinux blk_run_queue 0xe7304f42 +vmlinux blk_start_queue 0xca5e1512 +vmlinux blk_stop_queue 0x52d5e9d7 +vmlinux blk_sync_queue 0x43fdbfd8 +vmlinux blk_unregister_region 0x3a9b6fb9 +vmlinux blkdev_get 0x0185008c +vmlinux blkdev_ioctl 0x9ed2c0a8 +vmlinux blkdev_issue_flush 0xcb084915 +vmlinux blkdev_put 0x25dacca4 +vmlinux block_all_signals 0xc74785b2 +vmlinux block_commit_write 0x71d994b5 +vmlinux block_invalidatepage 0xa8fe5967 +vmlinux block_prepare_write 0xfdd3853a +vmlinux block_read_full_page 0xde52d088 +vmlinux block_sync_page 0x1d6cacbc +vmlinux block_truncate_page 0xa94b575b +vmlinux block_write_full_page 0xe9d94346 +vmlinux bmap 0x022b0c8b +vmlinux boot_cpu_data 0x98403e2c +vmlinux br_fdb_get_hook 0x650128e7 +vmlinux br_fdb_put_hook 0xb494e82a +vmlinux br_handle_frame_hook 0xce538db7 +vmlinux brioctl_set 0x4e8a4d69 +vmlinux bus_add_device 0x6fc0ad0b +vmlinux bus_create_file 0x1d74993f +vmlinux bus_find_device 0x729d655f +vmlinux bus_for_each_dev 0x4517f183 +vmlinux bus_for_each_drv 0x18528533 +vmlinux bus_register 0x8b276a6b +vmlinux bus_remove_device 0xa8fe6239 +vmlinux bus_remove_file 0xc1cbe63c +vmlinux bus_rescan_devices 0x57477c06 +vmlinux bus_unregister 0x2bff1143 +vmlinux cache_check 0x24e347ec +vmlinux cache_flush 0x71fa908a +vmlinux cache_fresh 0xd54fb25c +vmlinux cache_init 0xc244025c +vmlinux cache_purge 0x04d2180f +vmlinux cache_register 0x03daa057 +vmlinux cache_unregister 0x2697b23e +vmlinux call_rcu 0x1251d30f +vmlinux call_rcu_bh 0x362e23ec +vmlinux call_usermodehelper_keys 0x43c852aa +vmlinux cancel_rearming_delayed_work 0xec09d845 +vmlinux cancel_rearming_delayed_workqueue 0x26bcd05c +vmlinux cap_bprm_apply_creds 0x55d83d55 +vmlinux cap_bprm_secureexec 0x44ce7997 +vmlinux cap_bprm_set_security 0x88edac4a +vmlinux cap_bset 0x59ab4080 +vmlinux cap_capable 0x6cc96727 +vmlinux cap_capget 0xc5e02ad3 +vmlinux cap_capset_check 0x0f27aa4c +vmlinux cap_capset_set 0x7df5611e +vmlinux cap_inode_removexattr 0x6576367c +vmlinux cap_inode_setxattr 0x56ebe6fe +vmlinux cap_netlink_recv 0x54b1c928 +vmlinux cap_netlink_send 0x6f4b31ae +vmlinux cap_ptrace 0xa8dd0ab6 +vmlinux cap_settime 0x819cc9ba +vmlinux cap_syslog 0xe1dd5368 +vmlinux cap_task_post_setuid 0x372390b2 +vmlinux cap_task_reparent_to_init 0x2b9f4d1f +vmlinux cap_vm_enough_memory 0xaf236a7b +vmlinux capable 0x7dceceac +vmlinux cdev_add 0xb4e790d6 +vmlinux cdev_alloc 0xc8645104 +vmlinux cdev_del 0x64f1c44c +vmlinux cdev_init 0x896f01de +vmlinux cfb_copyarea 0xbf117472 +vmlinux cfb_fillrect 0xe2f4b39c +vmlinux cfb_imageblit 0x1ee6c9ad +vmlinux check_disk_change 0x7a791dd9 +vmlinux class_create 0x4759ea1a +vmlinux class_create_file 0xd9f834c0 +vmlinux class_destroy 0xe305acd7 +vmlinux class_device_add 0xec656d62 +vmlinux class_device_create 0xac623d9a +vmlinux class_device_create_bin_file 0x0d43e6dc +vmlinux class_device_create_file 0x483e1fa8 +vmlinux class_device_del 0xc4f6f404 +vmlinux class_device_destroy 0x274daaad +vmlinux class_device_get 0x15b1af18 +vmlinux class_device_initialize 0xdc9ded78 +vmlinux class_device_put 0x48611f04 +vmlinux class_device_register 0xf36ba28c +vmlinux class_device_remove_bin_file 0x406ef150 +vmlinux class_device_remove_file 0x7ce4240e +vmlinux class_device_unregister 0x4e2d2e68 +vmlinux class_get 0x389c7059 +vmlinux class_interface_register 0x610af508 +vmlinux class_interface_unregister 0x9b107540 +vmlinux class_put 0x157c1a99 +vmlinux class_register 0xdb472f42 +vmlinux class_remove_file 0x898308a1 +vmlinux class_unregister 0x652d0a1f +vmlinux clear_inode 0x88e2639a +vmlinux clear_page_dirty_for_io 0x188bee39 +vmlinux close_bdev_excl 0x786558b7 +vmlinux color_table 0xf6bb4729 +vmlinux complete 0xfc60af03 +vmlinux complete_all 0x616afc36 +vmlinux complete_and_exit 0x10e5a560 +vmlinux compute_creds 0x079b7df9 +vmlinux con_copy_unimap 0xf1930359 +vmlinux con_set_default_unimap 0xdecb34c6 +vmlinux cond_resched 0xda4008e6 +vmlinux cond_resched_lock 0xb60caee2 +vmlinux cond_resched_softirq 0x272e7488 +vmlinux console_blank_hook 0xd25d4f74 +vmlinux console_blanked 0xb423dba1 +vmlinux console_conditional_schedule 0xbef43296 +vmlinux console_print 0xb714a981 +vmlinux console_printk 0x2592fc6c +vmlinux console_start 0x60155881 +vmlinux console_stop 0x75884cbc +vmlinux cont_prepare_write 0x8cd805e7 +vmlinux contig_page_data 0xa8638169 +vmlinux copy_from_user 0x0d6c963c +vmlinux copy_fs_struct 0xf379cd53 +vmlinux copy_in_user 0x8d944cbb +vmlinux copy_io_context 0x9eae1153 +vmlinux copy_strings_kernel 0xd9019797 +vmlinux copy_to_user 0x2f287f0d +vmlinux cpu_online_map 0x99bdf0a8 +vmlinux cpu_possible_map 0x5dfd3f0d +vmlinux cpu_present_map 0x2a0de3df +vmlinux cpu_sysdev_class 0x7550935c +vmlinux crc32_be 0xb7b61546 +vmlinux crc32_le 0xa34f1ef5 +vmlinux create_empty_buffers 0xc9689536 +vmlinux create_proc_entry 0xe05e7106 +vmlinux create_proc_ide_interfaces 0xab2c600e +vmlinux crypto_alg_available 0x2f849e07 +vmlinux crypto_alloc_tfm 0xd4518388 +vmlinux crypto_free_tfm 0xdf7f4c4e +vmlinux crypto_hmac 0xed4a2c12 +vmlinux crypto_hmac_final 0x199105e3 +vmlinux crypto_hmac_init 0x880ee16c +vmlinux crypto_hmac_update 0xe2f3bc81 +vmlinux crypto_register_alg 0x2f159f36 +vmlinux crypto_unregister_alg 0x82673052 +vmlinux csum_partial 0x94095c16 +vmlinux csum_partial_copy_from_user 0x7cf86690 +vmlinux csum_partial_copy_fromiovecend 0x02876657 +vmlinux csum_partial_copy_nocheck 0xa2963be1 +vmlinux current_fs_time 0x51ecfda9 +vmlinux current_io_context 0xf2d05cf1 +vmlinux current_kernel_time 0x74cc238d +vmlinux d_alloc 0xb0ae0e60 +vmlinux d_alloc_anon 0xa6e6362f +vmlinux d_alloc_name 0x0a625239 +vmlinux d_alloc_root 0x90321009 +vmlinux d_delete 0x3d14dc5a +vmlinux d_find_alias 0xc4135cce +vmlinux d_genocide 0xc5e96e6a +vmlinux d_instantiate 0x1b29959e +vmlinux d_instantiate_unique 0x6dfe1c94 +vmlinux d_invalidate 0xce034f3c +vmlinux d_lookup 0x85dd3b18 +vmlinux d_move 0x4c4c68ec +vmlinux d_path 0x26fb6f9a +vmlinux d_prune_aliases 0xad920d8a +vmlinux d_rehash 0x7e7169ae +vmlinux d_splice_alias 0x1f330bd7 +vmlinux d_validate 0x5819b3ef +vmlinux daemonize 0xdc43a9c8 +vmlinux datagram_poll 0x78cfbbea +vmlinux dcache_dir_close 0x9c0e5e08 +vmlinux dcache_dir_lseek 0xe7119d7c +vmlinux dcache_dir_open 0xd21d4f54 +vmlinux dcache_lock 0x420de6d1 +vmlinux dcache_readdir 0xef2bf144 +vmlinux dcache_stride 0x29fe2400 +vmlinux dcookie_register 0x3f238101 +vmlinux dcookie_unregister 0x92fb217b +vmlinux deactivate_super 0x1a974352 +vmlinux default_backing_dev_info 0xe4145b4e +vmlinux default_blu 0x10ee20bb +vmlinux default_grn 0x06fe3b14 +vmlinux default_hwif_mmiops 0x4b3fa3a0 +vmlinux default_llseek 0x8a287e62 +vmlinux default_red 0x3147857d +vmlinux default_unplug_io_fn 0x9b49fc66 +vmlinux default_wake_function 0xffd5a395 +vmlinux del_gendisk 0xabd73b10 +vmlinux del_timer 0xe30e452b +vmlinux del_timer_sync 0xeb3c41f1 +vmlinux dentry_open 0xcdf058e1 +vmlinux dentry_unhash 0x964d472c +vmlinux dequeue_signal 0xc6b9e8dd +vmlinux destroy_8023_client 0xf55327d0 +vmlinux destroy_workqueue 0x65171406 +vmlinux dev_add_pack 0x8bb0c7d7 +vmlinux dev_alloc_name 0x524834c2 +vmlinux dev_base 0x02f021d2 +vmlinux dev_base_lock 0x732e80a2 +vmlinux dev_change_flags 0x58ba67e6 +vmlinux dev_close 0xaa6ae414 +vmlinux dev_ethtool 0xd5614e73 +vmlinux dev_get_by_flags 0xc89100ee +vmlinux dev_get_by_index 0x8aee7b7b +vmlinux dev_get_by_name 0xcfdcca1b +vmlinux dev_get_flags 0xaae983a0 +vmlinux dev_getbyhwaddr 0x6ee992a5 +vmlinux dev_getfirstbyhwtype 0x00edf03d +vmlinux dev_ioctl 0x387c78a5 +vmlinux dev_load 0xa90fd3b7 +vmlinux dev_mc_add 0xc2ab4d60 +vmlinux dev_mc_delete 0x30c2c514 +vmlinux dev_mc_upload 0x87ff12ef +vmlinux dev_open 0xd7e1e01b +vmlinux dev_queue_xmit 0x859eaffe +vmlinux dev_remove_pack 0xbfb51a65 +vmlinux dev_set_allmulti 0x76da5f47 +vmlinux dev_set_mac_address 0x09fca9ec +vmlinux dev_set_mtu 0xd5cdb178 +vmlinux dev_set_promiscuity 0x9f7264b7 +vmlinux dev_valid_name 0x65414e67 +vmlinux device_add 0x8b09fd76 +vmlinux device_attach 0x658c02a2 +vmlinux device_bind_driver 0xc5e1cd0b +vmlinux device_create_file 0x366c14b1 +vmlinux device_del 0x44537f6e +vmlinux device_for_each_child 0x94f4c907 +vmlinux device_initialize 0x774ddf76 +vmlinux device_register 0x2a3f2d49 +vmlinux device_release_driver 0x1eb20f33 +vmlinux device_remove_file 0x2531d340 +vmlinux device_to_hwpath 0x46b1b3e1 +vmlinux device_unregister 0x0c522b7a +vmlinux devinet_ioctl 0x869c80ea +vmlinux dget_locked 0xa0946ccb +vmlinux disable_irq 0x3ce4ca6f +vmlinux disable_irq_nosync 0x27bbf221 +vmlinux disallow_signal 0xbb189cad +vmlinux dlci_ioctl_set 0xe5867808 +vmlinux dma_get_required_mask 0x7d7d2c08 +vmlinux dma_pool_alloc 0xfad17425 +vmlinux dma_pool_create 0x4e787c74 +vmlinux dma_pool_destroy 0xe0c48352 +vmlinux dma_pool_free 0xb7083f9a +vmlinux dnotify_parent 0xca985b81 +vmlinux do_SAK 0x21f983f0 +vmlinux do_add_mount 0x11c0b34b +vmlinux do_blank_screen 0xe5c78a99 +vmlinux do_brk 0x9eecde16 +vmlinux do_exit 0x5080386b +vmlinux do_generic_mapping_read 0xd59ec322 +vmlinux do_gettimeofday 0x836a55de +vmlinux do_kern_mount 0x375bfe2b +vmlinux do_mmap_pgoff 0x9c18dcad +vmlinux do_munmap 0xcd485fe9 +vmlinux do_posix_clock_nonanosleep 0xd9aaf367 +vmlinux do_posix_clock_nosettime 0x09548e7d +vmlinux do_posix_clock_notimer_create 0x2d73e202 +vmlinux do_settimeofday 0xd6035d05 +vmlinux do_softirq 0x27cbbea7 +vmlinux do_sync_read 0xa58c5dc3 +vmlinux do_sync_write 0x83908f58 +vmlinux do_unblank_screen 0x600683d3 +vmlinux dput 0xc4ddad1c +vmlinux drive_is_ready 0x7ef0154a +vmlinux driver_attach 0x8ddb0f0f +vmlinux driver_create_file 0x9317fee3 +vmlinux driver_find 0x3fc6e72f +vmlinux driver_find_device 0xa4176552 +vmlinux driver_for_each_device 0xf5a9fc15 +vmlinux driver_register 0x062d60c2 +vmlinux driver_remove_file 0xdfdc1289 +vmlinux driver_unregister 0xbd880169 +vmlinux drop_super 0xe69b019e +vmlinux dst_alloc 0x5cd979a5 +vmlinux dst_destroy 0xbbe8e261 +vmlinux dump_stack 0x6b2dc060 +vmlinux eighty_ninty_three 0xd4bf4c04 +vmlinux eisa_bus_type 0x05afc47e +vmlinux eisa_driver_register 0x49b0d405 +vmlinux eisa_driver_unregister 0x498b59eb +vmlinux elevator_exit 0xe600b0d9 +vmlinux elevator_init 0xfe7ccab7 +vmlinux elv_add_request 0xafaae5ac +vmlinux elv_completed_request 0xc5161c50 +vmlinux elv_dequeue_request 0xd845d572 +vmlinux elv_dispatch_sort 0x4036782d +vmlinux elv_next_request 0xc19bf791 +vmlinux elv_queue_empty 0x20c1ca81 +vmlinux elv_register 0xbba340f8 +vmlinux elv_requeue_request 0x120f55c7 +vmlinux elv_rq_merge_ok 0xed52fccb +vmlinux elv_try_merge 0x8c1aacc6 +vmlinux elv_unregister 0xf1d4d64e +vmlinux emergency_restart 0xd0c05159 +vmlinux enable_irq 0xfcec0987 +vmlinux end_buffer_async_write 0x1483aae3 +vmlinux end_buffer_read_sync 0x7e7367c8 +vmlinux end_buffer_write_sync 0xf8a7731b +vmlinux end_page_writeback 0xf9d0b0a8 +vmlinux end_request 0x7c05c4e6 +vmlinux end_that_request_chunk 0xf47ab487 +vmlinux end_that_request_first 0xa2231c98 +vmlinux end_that_request_last 0x214b2ddd +vmlinux eth_type_trans 0xcb29317a +vmlinux ether_setup 0xaeb21410 +vmlinux ethtool_op_get_link 0xdfd3eaae +vmlinux ethtool_op_get_perm_addr 0x37376703 +vmlinux ethtool_op_get_sg 0x6fe8ac99 +vmlinux ethtool_op_get_tso 0x38cefd6a +vmlinux ethtool_op_get_tx_csum 0x7eeb3ad5 +vmlinux ethtool_op_get_ufo 0xa4528b53 +vmlinux ethtool_op_set_sg 0x69d89cbd +vmlinux ethtool_op_set_tso 0xa4574fa5 +vmlinux ethtool_op_set_tx_csum 0x36c2e054 +vmlinux ethtool_op_set_tx_hw_csum 0xf1998aa9 +vmlinux ethtool_op_set_ufo 0x9f15c9ed +vmlinux exit_fs 0x583923bd +vmlinux f_setown 0x77b329a8 +vmlinux fasync_helper 0x04d8e198 +vmlinux fb_add_videomode 0x6d990e2b +vmlinux fb_alloc_cmap 0x07a890c8 +vmlinux fb_blank 0xcf434aea +vmlinux fb_con_duit 0x66c32930 +vmlinux fb_copy_cmap 0xeab419a2 +vmlinux fb_dealloc_cmap 0x098b71c6 +vmlinux fb_default_cmap 0xa56557ea +vmlinux fb_delete_videomode 0xa2235d26 +vmlinux fb_destroy_modedb 0x1dc36131 +vmlinux fb_destroy_modelist 0xc9561772 +vmlinux fb_edid_to_monspecs 0xff9ca065 +vmlinux fb_find_best_display 0x3154a9fe +vmlinux fb_find_best_mode 0x3d481654 +vmlinux fb_find_mode 0xa247fffc +vmlinux fb_find_mode_cvt 0xe3d6f284 +vmlinux fb_find_nearest_mode 0xaf12ad6e +vmlinux fb_firmware_edid 0x7daa2346 +vmlinux fb_get_buffer_offset 0xaf73fc5d +vmlinux fb_get_color_depth 0x5600904f +vmlinux fb_get_mode 0x77fa1363 +vmlinux fb_get_options 0xcb7131fb +vmlinux fb_invert_cmaps 0xf195c682 +vmlinux fb_match_mode 0x11d0d380 +vmlinux fb_mode_is_equal 0x9db7b1a0 +vmlinux fb_new_modelist 0xf6772cdc +vmlinux fb_pad_aligned_buffer 0x89d5538d +vmlinux fb_pad_unaligned_buffer 0x986e6135 +vmlinux fb_pan_display 0x2300bb9d +vmlinux fb_parse_edid 0x9c012508 +vmlinux fb_prepare_logo 0x35f65a81 +vmlinux fb_register_client 0x5934392b +vmlinux fb_set_cmap 0xb2ca5152 +vmlinux fb_set_suspend 0x7cbb4d59 +vmlinux fb_set_var 0xf3aaa4db +vmlinux fb_show_logo 0x7ab98565 +vmlinux fb_unregister_client 0xcc36f32e +vmlinux fb_validate_mode 0x9208a6d9 +vmlinux fb_var_to_videomode 0x461c6d01 +vmlinux fb_videomode_to_modelist 0xf2707cb1 +vmlinux fb_videomode_to_var 0xb5cdc522 +vmlinux fbcon_set_bitops 0xa85c4bd6 +vmlinux fbcon_set_tileops 0x06d2a04a +vmlinux fd_install 0xd2af5399 +vmlinux fg_console 0x4e6e8ea7 +vmlinux fget 0x2dc5bbd3 +vmlinux file_fsync 0x92ebf031 +vmlinux file_lock_list 0x6e85119d +vmlinux file_permission 0xbbbe8a87 +vmlinux filemap_fdatawait 0xc40bd193 +vmlinux filemap_fdatawrite 0x5d131e66 +vmlinux filemap_flush 0xda2318fe +vmlinux filemap_nopage 0xac79db77 +vmlinux filemap_populate 0x0715bb13 +vmlinux files_stat 0x03cada27 +vmlinux filp_close 0xcbe4e4e2 +vmlinux filp_open 0x1bea2066 +vmlinux find_bus 0x26d31b64 +vmlinux find_font 0xf7584a9c +vmlinux find_get_page 0x7ae61861 +vmlinux find_inode_number 0x50f5456f +vmlinux find_lock_page 0x04ae3bc0 +vmlinux find_or_create_page 0x662019e3 +vmlinux find_task_by_pid_type 0x1c1b8dfb +vmlinux find_trylock_page 0x78e7c3fe +vmlinux find_vma 0x169e4170 +vmlinux finish_wait 0x61c8a7f3 +vmlinux firmware_register 0xeddbe1e4 +vmlinux firmware_unregister 0x662d818d +vmlinux fixup_get_user_skip_1 0x6c911f35 +vmlinux fixup_get_user_skip_2 0xf5737934 +vmlinux fixup_put_user_skip_1 0x85bdbbce +vmlinux fixup_put_user_skip_2 0x1c5fddcf +vmlinux flock_lock_file_wait 0x4ca37164 +vmlinux flow_cache_genid 0x3d68bd4b +vmlinux flow_cache_lookup 0xbdf025aa +vmlinux flush_all_caches 0x7e3ddcc0 +vmlinux flush_cache_all_local 0xa1cdce17 +vmlinux flush_data_cache_local 0x21c1455c +vmlinux flush_dcache_page 0x7c7cd2b0 +vmlinux flush_kernel_dcache_page 0xe8500931 +vmlinux flush_kernel_dcache_range_asm 0x831f7f68 +vmlinux flush_kernel_icache_range_asm 0x307acde8 +vmlinux flush_old_exec 0x9e9ea660 +vmlinux flush_scheduled_work 0x00801678 +vmlinux flush_signals 0xf914300a +vmlinux flush_workqueue 0x30024217 +vmlinux follow_down 0x2b7b92bb +vmlinux follow_up 0xeda1f76f +vmlinux force_sig 0x47973120 +vmlinux fput 0xe70dbe26 +vmlinux framebuffer_alloc 0x8e9b95f8 +vmlinux framebuffer_release 0x98b0978c +vmlinux free_buffer_head 0xf683bbe8 +vmlinux free_irq 0xf20dabd8 +vmlinux free_netdev 0xad387903 +vmlinux free_pages 0x4302d0eb +vmlinux free_percpu 0xd012c83a +vmlinux free_task 0x7dc04d0a +vmlinux freeze_bdev 0x068cd910 +vmlinux fs_overflowgid 0xdf929370 +vmlinux fs_overflowuid 0x25820c64 +vmlinux fsync_bdev 0xe90dcd11 +vmlinux g_make_token_header 0x00c52ef5 +vmlinux g_token_size 0xb5dea7ef +vmlinux g_verify_token_header 0xf8b2ff6e +vmlinux gen_kill_estimator 0xeb37482a +vmlinux gen_new_estimator 0x05c832bf +vmlinux gen_replace_estimator 0x8e8cba8f +vmlinux generate_random_uuid 0xa681fe88 +vmlinux generic__raw_read_trylock 0x1ec28999 +vmlinux generic_block_bmap 0xe81a44ff +vmlinux generic_commit_write 0x26cb31b6 +vmlinux generic_cont_expand 0xe01cbf02 +vmlinux generic_delete_inode 0x11562a7c +vmlinux generic_drop_inode 0x22731120 +vmlinux generic_file_aio_read 0xd9e14834 +vmlinux generic_file_aio_write 0x62576575 +vmlinux generic_file_aio_write_nolock 0x758fa103 +vmlinux generic_file_buffered_write 0x5959b4f9 +vmlinux generic_file_direct_write 0x5a51e955 +vmlinux generic_file_llseek 0xc756b59a +vmlinux generic_file_mmap 0xe643b854 +vmlinux generic_file_open 0x690af4f2 +vmlinux generic_file_read 0xa2ad7aab +vmlinux generic_file_readonly_mmap 0x209cefd8 +vmlinux generic_file_readv 0x536c4bf2 +vmlinux generic_file_sendfile 0x6eab0e02 +vmlinux generic_file_write 0xf4df8420 +vmlinux generic_file_write_nolock 0x1363682d +vmlinux generic_file_writev 0x2c1be535 +vmlinux generic_fillattr 0xc446f1ad +vmlinux generic_getxattr 0x080320fc +vmlinux generic_ide_ioctl 0xf669443d +vmlinux generic_listxattr 0x2862c960 +vmlinux generic_make_request 0xa5469672 +vmlinux generic_osync_inode 0x7bb81546 +vmlinux generic_permission 0x39d72089 +vmlinux generic_read_dir 0xd8d777ee +vmlinux generic_readlink 0xe13a18be +vmlinux generic_removexattr 0x14fda2ce +vmlinux generic_ro_fops 0xe4bb2bb6 +vmlinux generic_setxattr 0xec3dd8fa +vmlinux generic_shutdown_super 0x5cd682ee +vmlinux generic_unplug_device 0x2d3d0559 +vmlinux generic_write_checks 0x62461f71 +vmlinux genl_register_family 0x925b5b22 +vmlinux genl_register_ops 0x5a29489f +vmlinux genl_sock 0xdbe241a3 +vmlinux genl_unregister_family 0x9b4be830 +vmlinux genl_unregister_ops 0xbb7ba77c +vmlinux get_bus 0x4c5fa533 +vmlinux get_cpu_sysdev 0x4eede14d +vmlinux get_dcookie 0x084ad9eb +vmlinux get_default_font 0x093e3659 +vmlinux get_device 0xc7e92bc1 +vmlinux get_disk 0x891420ed +vmlinux get_driver 0xb098296c +vmlinux get_empty_filp 0xff87e58f +vmlinux get_fs_type 0x1e8dc3b0 +vmlinux get_io_context 0xedb8bf07 +vmlinux get_jiffies_64 0x37e74642 +vmlinux get_option 0xb0e10781 +vmlinux get_options 0x868acba5 +vmlinux get_pci_node_path 0x7a0b88cb +vmlinux get_random_bytes 0x79aa04a2 +vmlinux get_sb_bdev 0xf38f202a +vmlinux get_sb_nodev 0x59cdfd39 +vmlinux get_sb_pseudo 0x83463980 +vmlinux get_sb_single 0x3271c694 +vmlinux get_super 0x4a8606b6 +vmlinux get_task_mm 0x076bfd63 +vmlinux get_unmapped_area 0x4c0060aa +vmlinux get_unused_fd 0x99bfbe39 +vmlinux get_user_pages 0x1bb95570 +vmlinux get_write_access 0x778f63b7 +vmlinux get_zeroed_page 0x9b388444 +vmlinux getname 0x7c60d66e +vmlinux getnstimeofday 0xa7c35c6b +vmlinux getnstimestamp 0x7e36a99e +vmlinux give_up_console 0x5159f117 +vmlinux gnet_stats_copy_app 0xe4fcb841 +vmlinux gnet_stats_copy_basic 0x4396dce2 +vmlinux gnet_stats_copy_queue 0x1c982feb +vmlinux gnet_stats_copy_rate_est 0x25f5ad11 +vmlinux gnet_stats_finish_copy 0x0d093a9f +vmlinux gnet_stats_start_copy 0x10373a83 +vmlinux gnet_stats_start_copy_compat 0xced26820 +vmlinux grab_cache_page_nowait 0xf2f43982 +vmlinux groups_alloc 0x51cd47e2 +vmlinux groups_free 0x111bcb2c +vmlinux gsc_alloc_irq 0x9e11c47b +vmlinux gsc_claim_irq 0xcc794ffc +vmlinux gss_decrypt_xdr_buf 0x69e42683 +vmlinux gss_encrypt_xdr_buf 0x3b7e06ea +vmlinux gss_mech_get 0x7bf538dd +vmlinux gss_mech_get_by_name 0x92d7abc1 +vmlinux gss_mech_get_by_pseudoflavor 0x246c8368 +vmlinux gss_mech_put 0x8d2fc640 +vmlinux gss_mech_register 0x20245b74 +vmlinux gss_mech_unregister 0x49906e71 +vmlinux gss_pseudoflavor_to_service 0x4a38f2e1 +vmlinux gss_service_to_auth_domain_name 0xc457c009 +vmlinux half_md4_transform 0x6def2db2 +vmlinux handle_sysrq 0x435629b6 +vmlinux have_submounts 0xba11f058 +vmlinux high_memory 0x8a7d1c31 +vmlinux hppa_dma_ops 0x59879707 +vmlinux hwmon_device_register 0x56159444 +vmlinux hwmon_device_unregister 0xee65ca34 +vmlinux hwpath_to_device 0xd01b1d7b +vmlinux icmp_err_convert 0xc998d641 +vmlinux icmp_send 0x4e19f186 +vmlinux icmp_statistics 0x5dab0ad2 +vmlinux ide_add_setting 0xbb46cce7 +vmlinux ide_build_dmatable 0x3c4e6ad8 +vmlinux ide_build_sglist 0x9252cd14 +vmlinux ide_bus_type 0x2b5717ee +vmlinux ide_config_drive_speed 0x6eed8a24 +vmlinux ide_destroy_dmatable 0x5ff86879 +vmlinux ide_dma_enable 0x4a9b19f5 +vmlinux ide_dma_intr 0x0a8d70b0 +vmlinux ide_dma_setup 0x155a898f +vmlinux ide_dma_speed 0xcc942207 +vmlinux ide_dma_start 0xf30d8285 +vmlinux ide_dma_verbose 0xf834dcce +vmlinux ide_do_drive_cmd 0x01867ea6 +vmlinux ide_do_reset 0x6074bcb7 +vmlinux ide_dump_status 0x4f603501 +vmlinux ide_end_drive_cmd 0xe52a037f +vmlinux ide_end_request 0xfbb9d938 +vmlinux ide_error 0x5990096d +vmlinux ide_execute_command 0xb6f4e78d +vmlinux ide_fix_driveid 0x824fa796 +vmlinux ide_fixstring 0x4101a975 +vmlinux ide_get_best_pio_mode 0x2c01748e +vmlinux ide_get_error_location 0x43cfeae9 +vmlinux ide_hwifs 0x11a08f0c +vmlinux ide_in_drive_list 0x3747fe2f +vmlinux ide_init_disk 0xd2b2feee +vmlinux ide_init_drive_cmd 0xc67f5d6b +vmlinux ide_init_sg_cmd 0x61a39565 +vmlinux ide_lock 0x33b756e8 +vmlinux ide_map_sg 0x788cbc63 +vmlinux ide_pci_create_host_proc 0x5a302432 +vmlinux ide_pci_setup_ports 0xdb0d0662 +vmlinux ide_pci_unregister_driver 0x60623004 +vmlinux ide_pio_timings 0x4186676c +vmlinux ide_rate_filter 0x8691989a +vmlinux ide_raw_taskfile 0xf1fa686a +vmlinux ide_register_hw 0x0db567f8 +vmlinux ide_register_hw_with_fixup 0x9e3346c1 +vmlinux ide_register_region 0xffaa0038 +vmlinux ide_register_subdriver 0xccd90441 +vmlinux ide_set_handler 0x92d8e07b +vmlinux ide_set_xfer_rate 0x6f60475e +vmlinux ide_setup_dma 0x4a71d672 +vmlinux ide_setup_pci_device 0x9769dea9 +vmlinux ide_setup_pci_devices 0x11c6da66 +vmlinux ide_setup_pci_noise 0x5980ae67 +vmlinux ide_spin_wait_hwgroup 0xe3348d04 +vmlinux ide_stall_queue 0xc7a57c8a +vmlinux ide_undecoded_slave 0x9de21b58 +vmlinux ide_unregister 0x0c486b72 +vmlinux ide_unregister_region 0x82f381bb +vmlinux ide_unregister_subdriver 0x306dc2cf +vmlinux ide_use_dma 0xc3800d9b +vmlinux ide_wait_not_busy 0x483168f9 +vmlinux ide_wait_stat 0x4930a488 +vmlinux ide_xfer_verbose 0xe2daeb0a +vmlinux ideprobe_init 0xec7f1697 +vmlinux idr_destroy 0xd08eab23 +vmlinux idr_find 0xadb82ea3 +vmlinux idr_get_new 0xbcef6f16 +vmlinux idr_get_new_above 0x35524093 +vmlinux idr_init 0xc940bb7b +vmlinux idr_pre_get 0xe7c4da0e +vmlinux idr_remove 0x90b1ed8e +vmlinux iget5_locked 0xbc260fe9 +vmlinux iget_locked 0x17431b83 +vmlinux igrab 0xae6900dc +vmlinux ilookup 0x7cb44ab9 +vmlinux ilookup5 0x8319ffdd +vmlinux ilookup5_nowait 0x49615a38 +vmlinux in_aton 0x83e0a162 +vmlinux in_dev_finish_destroy 0xe7e8885f +vmlinux in_egroup_p 0xd8a2ab95 +vmlinux in_group_p 0xc3cf1128 +vmlinux in_lock_functions 0x09d44df9 +vmlinux inb 0x6671bac0 +vmlinux inet6_lookup 0xeb754d4d +vmlinux inet6_lookup_listener 0x8ff820a6 +vmlinux inet_accept 0x6cc0f657 +vmlinux inet_add_protocol 0x546ef9e5 +vmlinux inet_addr_type 0xe8cf3ae7 +vmlinux inet_bind 0x47c86900 +vmlinux inet_bind_bucket_create 0x8d943eeb +vmlinux inet_bind_hash 0x012d2f99 +vmlinux inet_csk_accept 0xec30eafb +vmlinux inet_csk_clear_xmit_timers 0x63fa13ea +vmlinux inet_csk_clone 0x6f38a2e6 +vmlinux inet_csk_delete_keepalive_timer 0x4ef4e78f +vmlinux inet_csk_destroy_sock 0x50884ecc +vmlinux inet_csk_get_port 0xe844f465 +vmlinux inet_csk_init_xmit_timers 0x09c913eb +vmlinux inet_csk_listen_start 0x6b990ad3 +vmlinux inet_csk_listen_stop 0x3f2a81a7 +vmlinux inet_csk_reqsk_queue_hash_add 0x678c2474 +vmlinux inet_csk_reqsk_queue_prune 0x22587635 +vmlinux inet_csk_reset_keepalive_timer 0xff6ce6a5 +vmlinux inet_csk_route_req 0x35da8b9e +vmlinux inet_csk_search_req 0x4f70b7c2 +vmlinux inet_csk_timer_bug_msg 0x0422fe4a +vmlinux inet_del_protocol 0x94779981 +vmlinux inet_dgram_connect 0x532ae49c +vmlinux inet_dgram_ops 0xc8ee3e5f +vmlinux inet_diag_register 0x40419fdf +vmlinux inet_diag_unregister 0xd71f0cd8 +vmlinux inet_getname 0x2de2e557 +vmlinux inet_ioctl 0x0988f5f9 +vmlinux inet_listen 0x076cf1e1 +vmlinux inet_listen_wlock 0x458cef46 +vmlinux inet_put_port 0x4a2abe8a +vmlinux inet_register_protosw 0xb7ce5506 +vmlinux inet_release 0xea7c6e22 +vmlinux inet_select_addr 0x86635572 +vmlinux inet_sendmsg 0x36e535fa +vmlinux inet_shutdown 0xe48a8e2d +vmlinux inet_sk_rebuild_header 0x69bc5fb4 +vmlinux inet_sock_destruct 0xb77e9f66 +vmlinux inet_stream_connect 0xd5a8c832 +vmlinux inet_stream_ops 0x69f70b14 +vmlinux inet_twdr_hangman 0xcc1f1c3d +vmlinux inet_twdr_twcal_tick 0x1fcece42 +vmlinux inet_twdr_twkill_work 0xfbb469aa +vmlinux inet_twsk_alloc 0x56605bf5 +vmlinux inet_twsk_deschedule 0x16dfbe8c +vmlinux inet_twsk_schedule 0xbec6200b +vmlinux inet_unregister_protosw 0x21ad5c6f +vmlinux inetdev_by_index 0x321ff2fd +vmlinux init_buffer 0x53bb447e +vmlinux init_mm 0xb5786014 +vmlinux init_rwsem 0x24df486e +vmlinux init_special_inode 0xdda4c7c2 +vmlinux init_task 0xd999d47f +vmlinux init_timer 0x392cf906 +vmlinux inl 0xd377477b +vmlinux inode_add_bytes 0xa93f4024 +vmlinux inode_change_ok 0xfcdb27e6 +vmlinux inode_get_bytes 0x40896a01 +vmlinux inode_init_once 0x7dbd5c30 +vmlinux inode_needs_sync 0xff6f5d1c +vmlinux inode_set_bytes 0x099eeba0 +vmlinux inode_setattr 0xe57b87fb +vmlinux inode_sub_bytes 0x6850091c +vmlinux inode_update_time 0xa4522b84 +vmlinux inotify_dentry_parent_queue_event 0x5fcab9e2 +vmlinux inotify_get_cookie 0x00566d8f +vmlinux inotify_inode_is_dead 0xc5ee7c2b +vmlinux inotify_inode_queue_event 0x1d1df92d +vmlinux inotify_unmount_inodes 0xa5c36cec +vmlinux input_accept_process 0xcf0ae34a +vmlinux input_allocate_device 0x8c1aec8f +vmlinux input_class 0x747626a3 +vmlinux input_close_device 0xd103f005 +vmlinux input_event 0x22876792 +vmlinux input_flush_device 0xd0543b5f +vmlinux input_grab_device 0xb7852ff2 +vmlinux input_open_device 0x8b1c9895 +vmlinux input_register_device 0x8fcbad41 +vmlinux input_register_handler 0x5fe7654c +vmlinux input_release_device 0xf91b9f1a +vmlinux input_unregister_device 0x9b424ec6 +vmlinux input_unregister_handler 0xed95cabf +vmlinux insb 0x10902bf7 +vmlinux insert_resource 0xdc3992ac +vmlinux insl 0x73e0877a +vmlinux install_page 0xf502b2ca +vmlinux insw 0x69010b06 +vmlinux int_sqrt 0xb678366f +vmlinux int_to_scsilun 0xea10212a +vmlinux inter_module_get_request 0x0b6690b8 +vmlinux inter_module_put 0xba54631c +vmlinux inter_module_register 0xa1f7676d +vmlinux inter_module_unregister 0x4b569905 +vmlinux interruptible_sleep_on 0xd2b786a0 +vmlinux interruptible_sleep_on_timeout 0xa909f938 +vmlinux invalidate_bdev 0x1a8b596b +vmlinux invalidate_inode_pages 0x574f2272 +vmlinux invalidate_inode_pages2 0xf8a21a75 +vmlinux invalidate_inode_pages2_range 0xa1c5628d +vmlinux invalidate_inodes 0xd54bee1f +vmlinux invalidate_partition 0x3357f361 +vmlinux inw 0x493dc1ef +vmlinux io_schedule 0x93a6e0b2 +vmlinux ioctl_by_bdev 0xfc183cd1 +vmlinux iomem_resource 0x9efed5af +vmlinux ioport_map 0x594bf15b +vmlinux ioport_resource 0x865ebccd +vmlinux ioport_unmap 0xfc39e32f +vmlinux ioread16 0xc5534d64 +vmlinux ioread16_rep 0x5857b225 +vmlinux ioread16be 0xf065f629 +vmlinux ioread32 0xe484e35f +vmlinux ioread32_rep 0x3f0546a8 +vmlinux ioread32be 0xfdb9b629 +vmlinux ioread8 0xf10de535 +vmlinux ioread8_rep 0xf441ac43 +vmlinux iounmap 0x5fb196d4 +vmlinux iov_shorten 0xc11d8093 +vmlinux iowrite16 0x8c183cbe +vmlinux iowrite16_rep 0x8cc79cab +vmlinux iowrite16be 0x69a0ca7d +vmlinux iowrite32 0x436c2179 +vmlinux iowrite32_rep 0xbfc177bc +vmlinux iowrite32be 0x6acb973d +vmlinux iowrite8 0x0727c4f3 +vmlinux iowrite8_rep 0xa4b94fea +vmlinux ip4_datagram_connect 0x5cce1280 +vmlinux ip_build_and_send_pkt 0xf25e33d2 +vmlinux ip_cmsg_recv 0xfbee85d2 +vmlinux ip_ct_attach 0x119fdf8d +vmlinux ip_defrag 0x137974e2 +vmlinux ip_fragment 0x5937b134 +vmlinux ip_generic_getfrag 0x3e82ffa8 +vmlinux ip_getsockopt 0xd9a94ce6 +vmlinux ip_mc_dec_group 0x6ec14025 +vmlinux ip_mc_inc_group 0xa0324f6a +vmlinux ip_mc_join_group 0x4e0bbc73 +vmlinux ip_queue_xmit 0xc3273393 +vmlinux ip_route_input 0xba105f23 +vmlinux ip_route_me_harder 0x9718fea7 +vmlinux ip_route_output_flow 0x0e7d7e88 +vmlinux ip_route_output_key 0x225c4900 +vmlinux ip_rt_ioctl 0x94208e84 +vmlinux ip_send_check 0x434ccab0 +vmlinux ip_setsockopt 0xc55520f5 +vmlinux ip_statistics 0xcb19f6d6 +vmlinux iput 0xad301fc7 +vmlinux ipv4_config 0x26b99782 +vmlinux ipv4_specific 0x1f558eec +vmlinux ipv6_ext_hdr 0x8e0b7743 +vmlinux ipv6_skip_exthdr 0x43454673 +vmlinux irq_stat 0xc2dcf571 +vmlinux is_bad_inode 0x8914b988 +vmlinux is_console_locked 0x944a564d +vmlinux isa_bridge 0xe9573661 +vmlinux isa_dma_bridge_buggy 0xf82abc1d +vmlinux iunique 0xd5d8a57f +vmlinux iw_handler_get_spy 0xf388ee27 +vmlinux iw_handler_get_thrspy 0x312d4ac8 +vmlinux iw_handler_set_spy 0x612d3ab7 +vmlinux iw_handler_set_thrspy 0x8fd6a5d6 +vmlinux jiffies 0x7d11c268 +vmlinux jiffies_64 0xe24d3a97 +vmlinux kallsyms_lookup_name 0xe007de41 +vmlinux kblockd_flush 0xf4216711 +vmlinux kblockd_schedule_work 0x2781a8f9 +vmlinux kern_mount 0x362832b3 +vmlinux kernel_halt 0x054e550b +vmlinux kernel_kexec 0xf76f067b +vmlinux kernel_power_off 0xf184d189 +vmlinux kernel_read 0x82174a3b +vmlinux kernel_recvmsg 0xc2588b06 +vmlinux kernel_restart 0x1e7bbcb3 +vmlinux kernel_sendmsg 0xfc6e3019 +vmlinux kernel_subsys 0x259ae936 +vmlinux kernel_thread 0x7e9ebb05 +vmlinux kfifo_alloc 0x881a0e5f +vmlinux kfifo_free 0x970f0702 +vmlinux kfifo_init 0x2d17fa58 +vmlinux kfree 0x037a0cba +vmlinux kick_iocb 0x78f90677 +vmlinux kill_anon_super 0x38e9a143 +vmlinux kill_block_super 0xe3d07e2e +vmlinux kill_fasync 0x0079866b +vmlinux kill_litter_super 0x42d0212a +vmlinux kill_pg 0x38f29719 +vmlinux kill_proc 0x932da67e +vmlinux kill_proc_info_as_uid 0xec10e63a +vmlinux klist_add_head 0xd58d21d3 +vmlinux klist_add_tail 0x7f467094 +vmlinux klist_del 0x3cfc6482 +vmlinux klist_init 0x8081b447 +vmlinux klist_iter_exit 0xc2513c11 +vmlinux klist_iter_init 0x1fcd246d +vmlinux klist_iter_init_node 0x67e787b4 +vmlinux klist_next 0x1df6c67e +vmlinux klist_node_attached 0xf4c7a079 +vmlinux klist_remove 0x184d7903 +vmlinux km_new_mapping 0x245d5803 +vmlinux km_policy_notify 0x50eb9641 +vmlinux km_state_notify 0x9b538df5 +vmlinux km_waitq 0x4c26e956 +vmlinux kmem_cache_alloc 0x95023bdd +vmlinux kmem_cache_create 0x1aa99e09 +vmlinux kmem_cache_destroy 0xb186744f +vmlinux kmem_cache_free 0x6e6ab879 +vmlinux kmem_cache_name 0x1714cb71 +vmlinux kmem_cache_shrink 0xc89c2fc6 +vmlinux kmem_cache_size 0x6dfae38c +vmlinux kmem_find_general_cachep 0x4abe0f25 +vmlinux kobject_add 0x61c17095 +vmlinux kobject_del 0x55a917a0 +vmlinux kobject_get 0xcf5fcbde +vmlinux kobject_hotplug 0x559b168f +vmlinux kobject_init 0x33d60622 +vmlinux kobject_put 0x58655920 +vmlinux kobject_register 0xa7ed4bd7 +vmlinux kobject_set_name 0x0d969b9e +vmlinux kobject_uevent 0x185ce2b5 +vmlinux kobject_uevent_atomic 0xc273a97d +vmlinux kobject_unregister 0x40e6ebb2 +vmlinux krb5_decrypt 0x4a33ddae +vmlinux krb5_encrypt 0x9298ebd7 +vmlinux kref_get 0x8a1203a9 +vmlinux kref_init 0x3ae831b6 +vmlinux kref_put 0xcff53400 +vmlinux kset_find_obj 0xfa64160b +vmlinux kset_register 0x96701db3 +vmlinux kset_unregister 0x2d7e3064 +vmlinux kstrdup 0xc499ae1e +vmlinux kthread_bind 0x76ca2d15 +vmlinux kthread_create 0xaac8fbc8 +vmlinux kthread_should_stop 0xd2965f6f +vmlinux kthread_stop 0x3a6d81ec +vmlinux kthread_stop_sem 0x0e365d6a +vmlinux kzalloc 0x1d10cdb2 +vmlinux laptop_mode 0x76d3cd60 +vmlinux lclear_user 0x57b8d504 +vmlinux lease_get_mtime 0x97200221 +vmlinux lease_modify 0xe021c7ce +vmlinux linkwatch_fire_event 0x63227494 +vmlinux ll_rw_block 0x1b101c9d +vmlinux load_nls 0x1701edf9 +vmlinux load_nls_default 0xf890f775 +vmlinux local_bh_enable 0x0799aca4 +vmlinux lock_cpu_hotplug 0xba813bd6 +vmlinux lock_cpu_hotplug_interruptible 0xdd7ee0f9 +vmlinux lock_kernel 0x3656bf5a +vmlinux lock_may_read 0xbdc797a3 +vmlinux lock_may_write 0x21b8a4d3 +vmlinux lock_rename 0x874f74d5 +vmlinux lock_sock 0x4fe3ac58 +vmlinux lockd_down 0xa7b91a7b +vmlinux lockd_up 0xf6933c48 +vmlinux locks_copy_lock 0xcef75eeb +vmlinux locks_init_lock 0xd73266d7 +vmlinux locks_mandatory_area 0xf165b825 +vmlinux locks_remove_posix 0x09639f69 +vmlinux lookup_create 0xdca43b19 +vmlinux lookup_hash 0xc4e6e06d +vmlinux lookup_instantiate_filp 0x3bf25bb4 +vmlinux lookup_one_len 0x016455d3 +vmlinux loopback_dev 0x72f9c446 +vmlinux loops_per_jiffy 0xba497f13 +vmlinux lstrncpy_from_user 0x58d282f6 +vmlinux lstrnlen_user 0xd624bb77 +vmlinux make_8023_client 0x465394c5 +vmlinux make_bad_inode 0x9c22a95d +vmlinux make_checksum 0x819ded26 +vmlinux malloc_sizes 0x946af9e5 +vmlinux mapping_tagged 0x29464b65 +vmlinux mark_buffer_async_write 0x421ead3e +vmlinux mark_buffer_dirty 0x8c079808 +vmlinux mark_buffer_dirty_inode 0x418e62b8 +vmlinux mark_mounts_for_expiry 0x064db9a5 +vmlinux mark_page_accessed 0x8362c540 +vmlinux match_hex 0xad0413d4 +vmlinux match_int 0x4e3567f7 +vmlinux match_octal 0x815b5dd4 +vmlinux match_strcpy 0x8faaf828 +vmlinux match_strdup 0xc1d50464 +vmlinux match_token 0x86e9acae +vmlinux max_mapnr 0x01139ffc +vmlinux max_pfn 0xbe5149a0 +vmlinux may_umount 0x5ce6b1aa +vmlinux may_umount_tree 0x6a1a8609 +vmlinux mem_map 0xcc376203 +vmlinux memchr 0xdd27fa87 +vmlinux memcmp 0x71c90087 +vmlinux memcpy 0x2e60bace +vmlinux memcpy_fromio 0xfbbb764c +vmlinux memcpy_fromiovec 0x9fb3dd30 +vmlinux memcpy_fromiovecend 0x6e440b58 +vmlinux memcpy_toio 0xa1d60f0f +vmlinux memcpy_toiovec 0x9ceb163c +vmlinux memmove 0x99bb8806 +vmlinux memparse 0x23f2d36f +vmlinux mempool_alloc 0x03279d0a +vmlinux mempool_alloc_slab 0x183fa88b +vmlinux mempool_create 0x27269eb4 +vmlinux mempool_create_node 0x1bd8597c +vmlinux mempool_destroy 0xf36ba783 +vmlinux mempool_free 0x8136df9a +vmlinux mempool_free_slab 0x8a99a016 +vmlinux mempool_resize 0x3ae712a6 +vmlinux memscan 0x4dec6038 +vmlinux memset 0x2bc95bd4 +vmlinux memset_io 0x6da41e98 +vmlinux misc_deregister 0xde8fed68 +vmlinux misc_register 0xf4590ea8 +vmlinux mmput 0x5e66da64 +vmlinux mnt_pin 0x575f0aaf +vmlinux mnt_unpin 0xed85b33a +vmlinux mntput_no_expire 0x6c135df5 +vmlinux mod_reg_security 0xb46ba486 +vmlinux mod_timer 0x395b72a1 +vmlinux mod_unreg_security 0xcf8556fa +vmlinux module_add_driver 0x3aabd723 +vmlinux module_refcount 0x83e9e59f +vmlinux module_remove_driver 0xae655dec +vmlinux move_addr_to_kernel 0x5dfa4696 +vmlinux move_addr_to_user 0x38c99093 +vmlinux mpage_readpage 0xf108fd13 +vmlinux mpage_readpages 0x6dc526d4 +vmlinux mpage_writepage 0x8c92c1fc +vmlinux mpage_writepages 0xb28ab8d4 +vmlinux msleep 0xf9a482f9 +vmlinux msleep_interruptible 0xcc5005fe +vmlinux n_tty_ioctl 0x1a3bc082 +vmlinux names_cachep 0x568258c2 +vmlinux neigh_add 0x30bd6778 +vmlinux neigh_changeaddr 0x8f13a8d3 +vmlinux neigh_compat_output 0x20e4d8bd +vmlinux neigh_connected_output 0x67e78412 +vmlinux neigh_create 0x0465702e +vmlinux neigh_delete 0x80399e75 +vmlinux neigh_destroy 0xf871e827 +vmlinux neigh_dump_info 0xbde19a51 +vmlinux neigh_event_ns 0x3b0cc309 +vmlinux neigh_for_each 0xc8adf640 +vmlinux neigh_ifdown 0x90aae969 +vmlinux neigh_lookup 0x0d8bab6b +vmlinux neigh_lookup_nodev 0xcf91523f +vmlinux neigh_parms_alloc 0x31933442 +vmlinux neigh_parms_release 0x87df85e4 +vmlinux neigh_rand_reach_time 0x4188d439 +vmlinux neigh_resolve_output 0x79653730 +vmlinux neigh_seq_next 0x906dcee8 +vmlinux neigh_seq_start 0x642de54c +vmlinux neigh_seq_stop 0x7ccd6c10 +vmlinux neigh_sysctl_register 0xfc538194 +vmlinux neigh_sysctl_unregister 0x4344cfc0 +vmlinux neigh_table_clear 0x196fcd77 +vmlinux neigh_table_init 0xa927bcfd +vmlinux neigh_update 0x88132e23 +vmlinux neigh_update_hhs 0x237b677d +vmlinux neightbl_dump_info 0x92be0b68 +vmlinux neightbl_set 0xb8ab8841 +vmlinux net_disable_timestamp 0x199ed0cd +vmlinux net_enable_timestamp 0x54e6fcdd +vmlinux net_random 0x1c66f64c +vmlinux net_ratelimit 0xf6ebc03b +vmlinux net_srandom 0xff963ed8 +vmlinux net_statistics 0x0ded1ee1 +vmlinux netdev_boot_setup_check 0x1d5b8d46 +vmlinux netdev_features_change 0x1a005f90 +vmlinux netdev_rx_csum_fault 0x58fcb709 +vmlinux netdev_set_master 0xdc0447ec +vmlinux netdev_state_change 0xa3655d59 +vmlinux netif_carrier_off 0x013e2a88 +vmlinux netif_carrier_on 0x20ebebb1 +vmlinux netif_receive_skb 0x24f338ea +vmlinux netif_rx 0x0b0050df +vmlinux netif_rx_ni 0xc4c2bd32 +vmlinux netlink_ack 0xe75c19dc +vmlinux netlink_broadcast 0xc56611fe +vmlinux netlink_dump_start 0x7b6a142e +vmlinux netlink_kernel_create 0x479fd60e +vmlinux netlink_queue_skip 0x4b94a18a +vmlinux netlink_register_notifier 0xf78d04ab +vmlinux netlink_run_queue 0xf3629bde +vmlinux netlink_set_err 0xa6b116d3 +vmlinux netlink_set_nonroot 0x5a744b86 +vmlinux netlink_unicast 0xcbf924f3 +vmlinux netlink_unregister_notifier 0xf338d4c3 +vmlinux netpoll_cleanup 0x8d771b77 +vmlinux netpoll_parse_options 0x76572c5b +vmlinux netpoll_poll 0x6e881972 +vmlinux netpoll_queue 0xfbc32363 +vmlinux netpoll_send_udp 0xb4cdf41c +vmlinux netpoll_set_trap 0x612390ad +vmlinux netpoll_setup 0x3182f700 +vmlinux netpoll_trap 0x01902adf +vmlinux new_inode 0x17a21ba1 +vmlinux next_thread 0x09553759 +vmlinux nf_ct_attach 0x5543d359 +vmlinux nf_getsockopt 0x453bf574 +vmlinux nf_hook_slow 0xda1da2a0 +vmlinux nf_hooks 0x078b1fd2 +vmlinux nf_log_packet 0xc4045d21 +vmlinux nf_log_register 0x1534bcce +vmlinux nf_log_unregister_logger 0xa954471f +vmlinux nf_log_unregister_pf 0x76b45850 +vmlinux nf_register_hook 0xcf533553 +vmlinux nf_register_queue_handler 0x0bf6886f +vmlinux nf_register_queue_rerouter 0xa2a1423e +vmlinux nf_register_sockopt 0xfa880855 +vmlinux nf_reinject 0x21e4697e +vmlinux nf_setsockopt 0x0011d18d +vmlinux nf_unregister_hook 0x41abd946 +vmlinux nf_unregister_queue_handler 0x4df6e6de +vmlinux nf_unregister_queue_handlers 0x038acf78 +vmlinux nf_unregister_queue_rerouter 0xbd2d65a6 +vmlinux nf_unregister_sockopt 0x7baa9fba +vmlinux nfs_debug 0xaf5bf6ef +vmlinux nfsd_debug 0xbf9d1b96 +vmlinux nla_find 0x444779c4 +vmlinux nla_memcmp 0xbe0e5118 +vmlinux nla_memcpy 0xb60e34a8 +vmlinux nla_parse 0x3c26dcdd +vmlinux nla_put 0xe3416b70 +vmlinux nla_reserve 0x732d7bcc +vmlinux nla_strcmp 0xedbaee5e +vmlinux nla_strlcpy 0x6cdc5c6b +vmlinux nla_validate 0x2cc98162 +vmlinux nlm_debug 0x53445f68 +vmlinux nlmclnt_proc 0x8d714c57 +vmlinux nlmsvc_ops 0xeca084d6 +vmlinux no_llseek 0x9819a779 +vmlinux noautodma 0x70022241 +vmlinux nobh_commit_write 0x2cadd0f8 +vmlinux nobh_prepare_write 0xf88f1bb9 +vmlinux nobh_truncate_page 0x565c3315 +vmlinux nobh_writepage 0x062b4979 +vmlinux node_online_map 0x5a8f421e +vmlinux node_possible_map 0xca0d27a1 +vmlinux nonseekable_open 0x68c2af8e +vmlinux noop_qdisc 0xd88df7a1 +vmlinux noop_qdisc_ops 0x365565f1 +vmlinux notifier_call_chain 0x28846962 +vmlinux notifier_chain_register 0x60cec3b9 +vmlinux notifier_chain_unregister 0xf099679c +vmlinux notify_change 0x9ca6c43c +vmlinux nr_free_pages 0x0d0da68d +vmlinux nr_pagecache 0x7c20e14f +vmlinux num_physpages 0x0948cde9 +vmlinux num_registered_fb 0x6c61ce70 +vmlinux oops_in_progress 0xb1c3a01a +vmlinux open_bdev_excl 0x2e35565d +vmlinux open_by_devnum 0x70d5870e +vmlinux open_exec 0x8b0e020b +vmlinux open_softirq 0xedb042bd +vmlinux out_of_line_wait_on_bit 0xa0ceef51 +vmlinux out_of_line_wait_on_bit_lock 0xfcaa04a0 +vmlinux outb 0xe2bbd43a +vmlinux outl 0x22c26a55 +vmlinux outsb 0x12ea337e +vmlinux outsl 0x24bd930a +vmlinux outsw 0x533903d8 +vmlinux outw 0x8c66ce6b +vmlinux p80211_resume 0xffe89436 +vmlinux p80211_suspend 0x2a152218 +vmlinux p80211netdev_hwremoved 0x3a95a408 +vmlinux p80211netdev_rx 0x8185c8c3 +vmlinux p80211skb_free 0xc523fd7a +vmlinux p80211skb_rxmeta_attach 0xa105fce5 +vmlinux pa_tlb_lock 0xea0924d4 +vmlinux page_follow_link_light 0xf70938d7 +vmlinux page_put_link 0x8381876f +vmlinux page_readlink 0xf42bb595 +vmlinux page_symlink 0x44f897e9 +vmlinux page_symlink_inode_operations 0x6918b1c7 +vmlinux pagevec_lookup_tag 0x8f875345 +vmlinux panic 0x01075bf0 +vmlinux panic_blink 0x99ea12ce +vmlinux panic_notifier_list 0x0d5eeb25 +vmlinux panic_timeout 0x1f8544b8 +vmlinux param_array_get 0x806d5133 +vmlinux param_array_set 0x89cef6fb +vmlinux param_get_bool 0x5611e4ec +vmlinux param_get_byte 0xf465b72a +vmlinux param_get_charp 0xaa136450 +vmlinux param_get_int 0x89b301d4 +vmlinux param_get_invbool 0x5b384ebc +vmlinux param_get_long 0x53a21daf +vmlinux param_get_short 0x6483655c +vmlinux param_get_string 0x93304684 +vmlinux param_get_uint 0x72216fa9 +vmlinux param_get_ulong 0x7ded8240 +vmlinux param_get_ushort 0x5418d52a +vmlinux param_set_bool 0xdc76cbcb +vmlinux param_set_byte 0x5ad53dbc +vmlinux param_set_charp 0x2cd7da6c +vmlinux param_set_copystring 0x683a3221 +vmlinux param_set_int 0x98bd6f46 +vmlinux param_set_invbool 0x40f794f1 +vmlinux param_set_long 0x1992a2ba +vmlinux param_set_short 0x40046949 +vmlinux param_set_uint 0x8abac70a +vmlinux param_set_ulong 0x66eaa8a9 +vmlinux param_set_ushort 0xc4c5509d +vmlinux parisc_bus_is_phys 0xdd0590f9 +vmlinux path_lookup 0x2493508f +vmlinux path_release 0xd67bcd57 +vmlinux path_walk 0x9f26f321 +vmlinux pci_add_new_bus 0x9095c3d8 +vmlinux pci_assign_resource 0xf6cc89f5 +vmlinux pci_block_user_cfg_access 0x9a45dd9b +vmlinux pci_bus_add_device 0x87ea0fa9 +vmlinux pci_bus_add_devices 0x898b82f2 +vmlinux pci_bus_alloc_resource 0x371e84ab +vmlinux pci_bus_assign_resources 0x96251a0a +vmlinux pci_bus_find_capability 0x380efd29 +vmlinux pci_bus_max_busnr 0x346aebe5 +vmlinux pci_bus_read_config_byte 0x3d2ace75 +vmlinux pci_bus_read_config_dword 0x9b2bb11b +vmlinux pci_bus_read_config_word 0xc635f9ab +vmlinux pci_bus_size_bridges 0x1f9a205b +vmlinux pci_bus_type 0x19928f21 +vmlinux pci_bus_write_config_byte 0x5ecf9925 +vmlinux pci_bus_write_config_dword 0x92d9eaa9 +vmlinux pci_bus_write_config_word 0x73dc186f +vmlinux pci_choose_state 0x08d311ab +vmlinux pci_clear_mwi 0x3d67df79 +vmlinux pci_create_bus 0xde04687a +vmlinux pci_dev_driver 0x48446f64 +vmlinux pci_dev_get 0x28844ab0 +vmlinux pci_dev_present 0x3145216f +vmlinux pci_dev_put 0x065e23df +vmlinux pci_disable_device 0x433d27b0 +vmlinux pci_do_scan_bus 0x70fbb5ee +vmlinux pci_enable_bridges 0x86f20440 +vmlinux pci_enable_device 0x5c119117 +vmlinux pci_enable_device_bars 0xfeacabd0 +vmlinux pci_enable_wake 0xe5f3f3a2 +vmlinux pci_find_bus 0xec86b081 +vmlinux pci_find_capability 0x3b30771d +vmlinux pci_find_device 0x5fca8a72 +vmlinux pci_find_device_reverse 0xa1553255 +vmlinux pci_find_next_bus 0x87abb65b +vmlinux pci_find_next_capability 0x39feafb7 +vmlinux pci_find_parent_resource 0xa6810324 +vmlinux pci_find_slot 0x411d22ac +vmlinux pci_fixup_device 0xae115791 +vmlinux pci_get_class 0xdb29397b +vmlinux pci_get_device 0xadbe238a +vmlinux pci_get_slot 0x15e6b109 +vmlinux pci_get_subsys 0xe442c8a3 +vmlinux pci_intx 0x6d11e1ca +vmlinux pci_iomap 0xe74bde8d +vmlinux pci_iounmap 0x0aedec55 +vmlinux pci_map_rom 0x7309b0cf +vmlinux pci_map_rom_copy 0x97f1ea14 +vmlinux pci_match_device 0xc8e981c8 +vmlinux pci_match_id 0x71716cc1 +vmlinux pci_max_busnr 0xd95d22a5 +vmlinux pci_pci_problems 0xdc14eda7 +vmlinux pci_proc_attach_bus 0xd29f8a24 +vmlinux pci_proc_attach_device 0x01f0c218 +vmlinux pci_proc_detach_bus 0x2061f65c +vmlinux pci_release_region 0x83f8eea0 +vmlinux pci_release_regions 0x58d15752 +vmlinux pci_remove_behind_bridge 0xa5cbf1f7 +vmlinux pci_remove_bus 0x5e900261 +vmlinux pci_remove_bus_device 0xd587ba8e +vmlinux pci_remove_device_safe 0xd9f121e6 +vmlinux pci_remove_rom 0xe9aa2a22 +vmlinux pci_request_region 0x64d5506b +vmlinux pci_request_regions 0x99745356 +vmlinux pci_restore_bars 0x0b17cbb3 +vmlinux pci_restore_state 0xa655066c +vmlinux pci_root_buses 0x082c3213 +vmlinux pci_save_state 0xe289cb55 +vmlinux pci_scan_bridge 0x99d5e7eb +vmlinux pci_scan_bus_parented 0x7771a579 +vmlinux pci_scan_child_bus 0xc483973c +vmlinux pci_scan_single_device 0x4f1a2406 +vmlinux pci_scan_slot 0x8c309eb8 +vmlinux pci_set_consistent_dma_mask 0xb73a1b7f +vmlinux pci_set_dma_mask 0x59893751 +vmlinux pci_set_master 0xd008b1ae +vmlinux pci_set_mwi 0x9bc7cd6d +vmlinux pci_set_power_state 0x31899c59 +vmlinux pci_setup_cardbus 0xaea45eca +vmlinux pci_unblock_user_cfg_access 0xb51f5c4e +vmlinux pci_unmap_rom 0xd400b8ab +vmlinux pci_unregister_driver 0x1857308d +vmlinux pci_walk_bus 0x1665e200 +vmlinux pcibios_bus_to_resource 0x6b370f24 +vmlinux pcibios_resource_to_bus 0x4944b857 +vmlinux pcie_mch_quirk 0x7f8723bd +vmlinux pciserial_init_ports 0x072b0fcd +vmlinux pciserial_remove_ports 0x2f72cbff +vmlinux pciserial_resume_ports 0xff72ee14 +vmlinux pciserial_suspend_ports 0x428a7b0d +vmlinux pdc_add_valid 0xcf96b65b +vmlinux pdc_get_initiator 0x53622bb3 +vmlinux pdc_iodc_read 0xab4e4345 +vmlinux pdc_lan_station_id 0xe7765108 +vmlinux pdc_stable_get_size 0xce67b3ce +vmlinux pdc_stable_initialize 0x90918311 +vmlinux pdc_stable_read 0x99049ca2 +vmlinux pdc_stable_verify_contents 0x1228329d +vmlinux pdc_stable_write 0x0423a8ab +vmlinux pdc_sti_call 0xf2b4938e +vmlinux pdc_tod_read 0x26f7f79a +vmlinux pdc_tod_set 0x6ae85394 +vmlinux per_cpu__kstat 0x0a56c7f3 +vmlinux per_cpu__softnet_data 0x80393390 +vmlinux percpu_counter_mod 0xb5355742 +vmlinux permission 0xf97fa38b +vmlinux pfifo_qdisc_ops 0xd76ef7c0 +vmlinux platform_add_devices 0x27bc5a9a +vmlinux platform_bus 0x09b1648c +vmlinux platform_bus_type 0x371b1581 +vmlinux platform_device_add 0xe18dce02 +vmlinux platform_device_add_data 0xe7162bc4 +vmlinux platform_device_add_resources 0x188f53e3 +vmlinux platform_device_alloc 0xd560cc84 +vmlinux platform_device_put 0xd3bb36fa +vmlinux platform_device_register 0xda46ec70 +vmlinux platform_device_register_simple 0xaa2adb8a +vmlinux platform_device_unregister 0xfb15f050 +vmlinux platform_driver_register 0x0e8a94e9 +vmlinux platform_driver_unregister 0x04696cd5 +vmlinux platform_get_irq 0xb17237d0 +vmlinux platform_get_irq_byname 0x27145986 +vmlinux platform_get_resource 0x5cd7d61d +vmlinux platform_get_resource_byname 0x4ce29d7a +vmlinux pm_power_off 0x60a32ea9 +vmlinux pneigh_enqueue 0x98435173 +vmlinux pneigh_lookup 0xe75b705a +vmlinux poll_freewait 0xa57b9151 +vmlinux poll_initwait 0xef4ec09b +vmlinux posix_acl_alloc 0x0f1ef871 +vmlinux posix_acl_chmod_masq 0xd32e52c7 +vmlinux posix_acl_clone 0xc722227e +vmlinux posix_acl_create_masq 0x640a7078 +vmlinux posix_acl_equiv_mode 0xd8282ff0 +vmlinux posix_acl_from_mode 0x3adc15b9 +vmlinux posix_acl_from_xattr 0x85ac7f10 +vmlinux posix_acl_permission 0xd09ea341 +vmlinux posix_acl_to_xattr 0x1ecb9943 +vmlinux posix_acl_valid 0xaed013b9 +vmlinux posix_block_lock 0xa31e002c +vmlinux posix_lock_file 0x554d50c0 +vmlinux posix_lock_file_wait 0x406bb8c9 +vmlinux posix_locks_deadlock 0xae00bb70 +vmlinux posix_test_lock 0x4aa3fe13 +vmlinux posix_timer_event 0xce514987 +vmlinux posix_unblock_lock 0xe16faeae +vmlinux pre_task_out_intr 0x5051c8aa +vmlinux prepare_binprm 0x6d22399d +vmlinux prepare_to_wait 0x2f32f1df +vmlinux prepare_to_wait_exclusive 0x10adabc0 +vmlinux print_hexl 0x4c2f4b6d +vmlinux print_pa_hwpath 0x5a15aff4 +vmlinux print_pci_hwpath 0x93cae986 +vmlinux printk 0xdd132261 +vmlinux printk_ratelimit 0xa13798f8 +vmlinux probe_hwif_init 0x4ed39f8a +vmlinux probe_irq_mask 0x360b1afe +vmlinux probe_irq_off 0xab600421 +vmlinux probe_irq_on 0xb121390a +vmlinux proc_bus 0xd43807d5 +vmlinux proc_dointvec 0x064c7ce9 +vmlinux proc_dointvec_jiffies 0x663ba027 +vmlinux proc_dointvec_minmax 0x6355bc89 +vmlinux proc_dointvec_ms_jiffies 0x7b34eade +vmlinux proc_dointvec_userhz_jiffies 0xa52920b8 +vmlinux proc_dostring 0xc8a5cd6a +vmlinux proc_doulongvec_minmax 0x87e2358c +vmlinux proc_doulongvec_ms_jiffies_minmax 0xd5810902 +vmlinux proc_ide_read_capacity 0x46b2a30d +vmlinux proc_ide_read_geometry 0x50fed6f7 +vmlinux proc_mkdir 0xf2954728 +vmlinux proc_net 0xcd898dda +vmlinux proc_net_netfilter 0xfda4948d +vmlinux proc_net_stat 0x139758e2 +vmlinux proc_root 0x508d6f8b +vmlinux proc_root_driver 0x2f513834 +vmlinux proc_root_fs 0x457ad1df +vmlinux proc_symlink 0xfc40a84a +vmlinux profile_event_register 0x9159b9d6 +vmlinux profile_event_unregister 0x3c942368 +vmlinux profile_pc 0xc64b0f4a +vmlinux proto_register 0x6f740dea +vmlinux proto_unregister 0xb866b848 +vmlinux ps2_cmd_aborted 0xa965f5bd +vmlinux ps2_command 0xf72ebc9e +vmlinux ps2_drain 0xb86760a7 +vmlinux ps2_handle_ack 0x53afac9d +vmlinux ps2_handle_response 0xd8f3c724 +vmlinux ps2_init 0xf8f0b5d1 +vmlinux ps2_schedule_command 0x02117857 +vmlinux ps2_sendbyte 0x9882a465 +vmlinux pskb_copy 0xa0450266 +vmlinux pskb_expand_head 0x9fa957b2 +vmlinux pskb_put 0x8c2722d3 +vmlinux ptrace_notify 0x70c66486 +vmlinux put_bus 0xf3808428 +vmlinux put_cmsg 0xf39bf4d9 +vmlinux put_device 0xad279ae0 +vmlinux put_disk 0xb8941ce3 +vmlinux put_driver 0x02f5c25d +vmlinux put_files_struct 0xaca1036c +vmlinux put_io_context 0x187bc64f +vmlinux put_page 0x2acc220a +vmlinux put_rpccred 0x7afa3a27 +vmlinux put_tty_driver 0x87ce265f +vmlinux put_unused_fd 0x3f4547a7 +vmlinux qdisc_alloc 0xa452a466 +vmlinux qdisc_create_dflt 0x00021e80 +vmlinux qdisc_destroy 0x8d0df1c6 +vmlinux qdisc_get_rtab 0x3adce61c +vmlinux qdisc_lock_tree 0x60948e6b +vmlinux qdisc_lookup 0x5516a7b7 +vmlinux qdisc_put_rtab 0x821a0545 +vmlinux qdisc_reset 0xf4b31468 +vmlinux qdisc_restart 0xab765f21 +vmlinux qdisc_unlock_tree 0xd5ec602f +vmlinux queue_delayed_work 0xf7c05ecb +vmlinux queue_work 0x8d47d72e +vmlinux qword_add 0xedcf6be4 +vmlinux qword_addhex 0xc8e96dea +vmlinux qword_get 0xe97f4ce5 +vmlinux radix_tree_delete 0xa34bdcd0 +vmlinux radix_tree_gang_lookup 0x883e226b +vmlinux radix_tree_gang_lookup_tag 0xcc4e9047 +vmlinux radix_tree_insert 0x7dc88ba1 +vmlinux radix_tree_lookup 0x5c2da0c3 +vmlinux radix_tree_lookup_slot 0x6bbbfb36 +vmlinux radix_tree_tag_clear 0x374a51dd +vmlinux radix_tree_tag_set 0x7e92ceb7 +vmlinux radix_tree_tagged 0xdacd0c37 +vmlinux raise_softirq_irqoff 0x6876581b +vmlinux rb_erase 0x7ee8c5cb +vmlinux rb_first 0xf6c3815e +vmlinux rb_insert_color 0x7ec51f67 +vmlinux rb_last 0x92f67838 +vmlinux rb_next 0x44ba0f42 +vmlinux rb_prev 0xba8b14e3 +vmlinux rb_replace_node 0x9778b88b +vmlinux rcu_barrier 0x60a13e90 +vmlinux rcu_batches_completed 0x04486e88 +vmlinux read_bytes_from_xdr_buf 0x5fa96c66 +vmlinux read_cache_page 0xe82f5ab6 +vmlinux read_cache_pages 0xcb83ac0c +vmlinux read_dev_sector 0xcebfa550 +vmlinux recalc_sigpending 0xfb6af58d +vmlinux redirty_page_for_writepage 0x8ab9801f +vmlinux redraw_screen 0xaef4a864 +vmlinux register_binfmt 0x7e768c46 +vmlinux register_blkdev 0x71a50dbc +vmlinux register_chrdev 0xfff43a1a +vmlinux register_chrdev_region 0xd8e484f0 +vmlinux register_console 0x934ee683 +vmlinux register_cpu_notifier 0x4550ba8a +vmlinux register_exec_domain 0xb1a68a46 +vmlinux register_filesystem 0xabf4fca8 +vmlinux register_firmware 0x711cccd3 +vmlinux register_framebuffer 0xeb2b32e1 +vmlinux register_gifconf 0x58fa6fb1 +vmlinux register_inetaddr_notifier 0x3e45e9ff +vmlinux register_module_notifier 0x59d696b6 +vmlinux register_netdev 0x53ea37b5 +vmlinux register_netdevice 0xa65c1b67 +vmlinux register_netdevice_notifier 0x63ecad53 +vmlinux register_nls 0x9b5bb991 +vmlinux register_parisc_driver 0x4e83549a +vmlinux register_posix_clock 0xe121a66e +vmlinux register_qdisc 0x828b5525 +vmlinux register_reboot_notifier 0x1cc6719a +vmlinux register_security 0xce1c799f +vmlinux register_sysctl_table 0x967adeee +vmlinux register_sysrq_key 0x539a9c89 +vmlinux register_tcf_proto_ops 0x41840769 +vmlinux register_timer_hook 0x2c7d132c +vmlinux register_wlandev 0x2d9040e5 +vmlinux registered_fb 0xc128e5a7 +vmlinux release_console_sem 0x434fa55c +vmlinux release_firmware 0x33934162 +vmlinux release_resource 0x814e8407 +vmlinux release_sock 0x08a8d63e +vmlinux remap_pfn_range 0xf5e7038f +vmlinux remote_llseek 0x8cef6fef +vmlinux remove_arg_zero 0xfe6c456f +vmlinux remove_inode_hash 0x39d1704a +vmlinux remove_proc_entry 0x4c8728ce +vmlinux remove_shrinker 0x4ba0b42b +vmlinux remove_suid 0x12cc4d38 +vmlinux remove_wait_queue 0x9ff142cc +vmlinux reqsk_queue_alloc 0x15692c80 +vmlinux reqsk_queue_destroy 0x9d848a12 +vmlinux request_firmware 0x201b8d77 +vmlinux request_firmware_nowait 0xac16bbe4 +vmlinux request_irq 0x8e45dfca +vmlinux request_module 0x98adfde2 +vmlinux request_resource 0x41685cfb +vmlinux rpc_bind_new_program 0xd8b6efc9 +vmlinux rpc_call_async 0xad996ff1 +vmlinux rpc_call_setup 0x45e1bd4e +vmlinux rpc_call_sync 0xdc047e28 +vmlinux rpc_clnt_sigmask 0x1b2aa322 +vmlinux rpc_clnt_sigunmask 0xbd954eb9 +vmlinux rpc_clone_client 0xec32f562 +vmlinux rpc_create_client 0xdd69c626 +vmlinux rpc_debug 0x31a89d59 +vmlinux rpc_delay 0xe742708a +vmlinux rpc_destroy_client 0x8b6afdae +vmlinux rpc_execute 0xf6fa2e5d +vmlinux rpc_init_task 0x7eca922c +vmlinux rpc_init_wait_queue 0xed4c54d4 +vmlinux rpc_killall_tasks 0x6cf44813 +vmlinux rpc_max_payload 0x54d922ef +vmlinux rpc_mkpipe 0xef7135e6 +vmlinux rpc_new_child 0x2f17a0c6 +vmlinux rpc_new_client 0xbb9ccfdc +vmlinux rpc_new_task 0x732cc81e +vmlinux rpc_proc_register 0xd87d91ec +vmlinux rpc_proc_unregister 0x5bd26000 +vmlinux rpc_queue_upcall 0x9fc71e9b +vmlinux rpc_release_client 0x4c13010c +vmlinux rpc_release_task 0x03449bd2 +vmlinux rpc_restart_call 0x7b6f7280 +vmlinux rpc_run_child 0x9264f48c +vmlinux rpc_setbufsize 0xcd63d8cb +vmlinux rpc_shutdown_client 0xa848e9d6 +vmlinux rpc_sleep_on 0x097eeda6 +vmlinux rpc_unlink 0x9296bec2 +vmlinux rpc_wake_up 0xf2be417e +vmlinux rpc_wake_up_next 0x40fbd6ea +vmlinux rpc_wake_up_status 0xe10dffcf +vmlinux rpc_wake_up_task 0xe8114f03 +vmlinux rpcauth_create 0x27f0c7ed +vmlinux rpcauth_free_credcache 0x4e3750cd +vmlinux rpcauth_init_credcache 0x054808b6 +vmlinux rpcauth_lookup_credcache 0x3c97f406 +vmlinux rpcauth_lookupcred 0x481b788c +vmlinux rpcauth_register 0xc411231f +vmlinux rpcauth_unregister 0x2ca44e4e +vmlinux rpciod_down 0xbabf0f35 +vmlinux rpciod_up 0x375492a4 +vmlinux rtattr_parse 0xe49414e9 +vmlinux rtattr_strlcpy 0x85902f79 +vmlinux rtnetlink_links 0x1c21f90d +vmlinux rtnetlink_put_metrics 0x7172b4e9 +vmlinux rtnl 0xd1d2d7f4 +vmlinux rtnl_lock 0xc7a4fbed +vmlinux rtnl_lock_interruptible 0xd944eb80 +vmlinux rtnl_sem 0x1a9085e2 +vmlinux rtnl_unlock 0x6e720ff2 +vmlinux sb_min_blocksize 0xc569ca11 +vmlinux sb_set_blocksize 0xdee2336b +vmlinux sched_setscheduler 0x42362549 +vmlinux schedule 0x01000e51 +vmlinux schedule_delayed_work 0x899fb5b5 +vmlinux schedule_delayed_work_on 0xe793020b +vmlinux schedule_timeout 0xd62c833f +vmlinux schedule_timeout_interruptible 0x09c55cec +vmlinux schedule_timeout_uninterruptible 0xd0ee38b8 +vmlinux schedule_work 0x9ef8b8b5 +vmlinux scm_detach_fds 0x01784876 +vmlinux scm_fp_dup 0x22796629 +vmlinux scnprintf 0x28f35813 +vmlinux scsi_add_device 0x7faa2f31 +vmlinux scsi_add_host 0x6cb7b723 +vmlinux scsi_adjust_queue_depth 0x1c501777 +vmlinux scsi_allocate_request 0x65651f55 +vmlinux scsi_bios_ptable 0xde1a5e2b +vmlinux scsi_block_requests 0x7ec71263 +vmlinux scsi_block_when_processing_errors 0x16f8c91d +vmlinux scsi_bus_type 0xf6248035 +vmlinux scsi_calculate_bounce_limit 0x868428fc +vmlinux scsi_cmd_ioctl 0x3577f668 +vmlinux scsi_command_normalize_sense 0xe4865559 +vmlinux scsi_command_size 0x9b05ea5c +vmlinux scsi_device_cancel 0x3bd5339b +vmlinux scsi_device_get 0x3ad4e556 +vmlinux scsi_device_lookup 0xde89104a +vmlinux scsi_device_lookup_by_target 0x50affd09 +vmlinux scsi_device_put 0x4ffb95e5 +vmlinux scsi_device_quiesce 0x1dd34cd2 +vmlinux scsi_device_resume 0xb9a87fa3 +vmlinux scsi_device_set_state 0xb31a0732 +vmlinux scsi_device_types 0x6df713c9 +vmlinux scsi_do_req 0x0bbeb5b3 +vmlinux scsi_execute 0x8db117d7 +vmlinux scsi_execute_req 0x073191b1 +vmlinux scsi_extd_sense_format 0x11267875 +vmlinux scsi_finish_command 0xbb898fbe +vmlinux scsi_flush_work 0x181764ab +vmlinux scsi_free_host_dev 0x5cf41331 +vmlinux scsi_get_command 0xfac03b4f +vmlinux scsi_get_host_dev 0x16ba1cdf +vmlinux scsi_get_sense_info_fld 0x796fc5ce +vmlinux scsi_host_alloc 0x87af945b +vmlinux scsi_host_get 0x91be2281 +vmlinux scsi_host_lookup 0x8c9fa9c8 +vmlinux scsi_host_put 0x5675fd1a +vmlinux scsi_host_set_state 0xcab2e083 +vmlinux scsi_internal_device_block 0xf697a04a +vmlinux scsi_internal_device_unblock 0x6a5cf4f1 +vmlinux scsi_io_completion 0xd4c460c5 +vmlinux scsi_ioctl 0xd747f189 +vmlinux scsi_ioctl_send_command 0xe925361f +vmlinux scsi_is_host_device 0x9bf32a38 +vmlinux scsi_is_sdev_device 0x3c5fad6f +vmlinux scsi_is_target_device 0xe421a109 +vmlinux scsi_mode_sense 0xc2f32284 +vmlinux scsi_nonblockable_ioctl 0x7cef4c56 +vmlinux scsi_normalize_sense 0x0c65e73c +vmlinux scsi_partsize 0x4afe9a77 +vmlinux scsi_print_command 0xa7cefcbf +vmlinux scsi_print_msg 0x67f88938 +vmlinux scsi_print_req_sense 0x4a13671c +vmlinux scsi_print_sense 0xa6294e9b +vmlinux scsi_print_sense_hdr 0xca5dbc50 +vmlinux scsi_print_status 0x9cfd56c5 +vmlinux scsi_put_command 0x640d2aca +vmlinux scsi_queue_work 0xf9be1f88 +vmlinux scsi_register 0xc36e8d48 +vmlinux scsi_register_driver 0x0e6cf165 +vmlinux scsi_register_interface 0x8667f6bc +vmlinux scsi_release_request 0x5e6757e6 +vmlinux scsi_remove_device 0x922ea2be +vmlinux scsi_remove_host 0x096e2ed8 +vmlinux scsi_remove_target 0x5f71c319 +vmlinux scsi_report_bus_reset 0x7b9896b1 +vmlinux scsi_report_device_reset 0xee603dd4 +vmlinux scsi_request_normalize_sense 0xb417a2d3 +vmlinux scsi_rescan_device 0xfedc9532 +vmlinux scsi_reset_provider 0xfe252ee2 +vmlinux scsi_scan_host 0x797e9733 +vmlinux scsi_scan_target 0x323378dd +vmlinux scsi_sense_desc_find 0x2b0ba2b0 +vmlinux scsi_sense_key_string 0x96cd2b04 +vmlinux scsi_set_medium_removal 0xd393daa7 +vmlinux scsi_setup_blk_pc_cmnd 0x3125ae12 +vmlinux scsi_target_block 0x1802e4f2 +vmlinux scsi_target_quiesce 0xe11f318e +vmlinux scsi_target_resume 0x3b7a3dcd +vmlinux scsi_target_unblock 0x1a2430e5 +vmlinux scsi_test_unit_ready 0xb2f75b8a +vmlinux scsi_track_queue_full 0xa2890802 +vmlinux scsi_unblock_requests 0x10e02308 +vmlinux scsi_unregister 0xf131eae2 +vmlinux scsicam_bios_param 0xd3c295e5 +vmlinux search_binary_handler 0x2ae91ba7 +vmlinux secpath_dup 0x3c6afa76 +vmlinux secure_dccp_sequence_number 0x88745348 +vmlinux secure_tcp_sequence_number 0x1e68841f +vmlinux secure_tcpv6_port_ephemeral 0x8167795f +vmlinux secure_tcpv6_sequence_number 0x7c2ca2de +vmlinux securebits 0xabe77484 +vmlinux security_ops 0x0ab07ed7 +vmlinux securityfs_create_dir 0x774b0bd8 +vmlinux securityfs_create_file 0x08b5f0b4 +vmlinux securityfs_remove 0x5b865d51 +vmlinux send_sig 0x3a3a4c9c +vmlinux send_sig_info 0x9a5a8a9d +vmlinux seq_escape 0xe7e6f069 +vmlinux seq_lseek 0x7ff5fa80 +vmlinux seq_open 0xd8c862a4 +vmlinux seq_path 0x2ad33c91 +vmlinux seq_printf 0x4d95564a +vmlinux seq_putc 0xce6b8dee +vmlinux seq_puts 0x7b261eee +vmlinux seq_read 0xc98ba122 +vmlinux seq_release 0xf372aef8 +vmlinux seq_release_private 0xe0a9a7e9 +vmlinux serial8250_register_port 0x56f3ba49 +vmlinux serial8250_resume_port 0xc7208c3a +vmlinux serial8250_suspend_port 0xcc248d26 +vmlinux serial8250_unregister_port 0xcefcd99a +vmlinux serio_close 0xc8fa0a63 +vmlinux serio_interrupt 0x2232c8f4 +vmlinux serio_open 0x8bd256cf +vmlinux serio_reconnect 0x71e8de43 +vmlinux serio_rescan 0x08067b49 +vmlinux serio_unregister_child_port 0x1c4f6747 +vmlinux serio_unregister_driver 0xc68b1a12 +vmlinux serio_unregister_port 0x22590608 +vmlinux set_anon_super 0xb67618fc +vmlinux set_bh_page 0x14ffe132 +vmlinux set_binfmt 0x1a188b9e +vmlinux set_blocksize 0xa12c805a +vmlinux set_cpus_allowed 0xc23892bc +vmlinux set_current_groups 0x72fbae28 +vmlinux set_device_ro 0xb93d69a6 +vmlinux set_disk_ro 0x86fba097 +vmlinux set_page_dirty 0x74b8c47e +vmlinux set_page_dirty_lock 0x63c988c6 +vmlinux set_shrinker 0xe8d11cf8 +vmlinux set_user_nice 0xf3f59fcf +vmlinux setlease 0xfc8c6c03 +vmlinux setup_arg_pages 0x02dbb1b5 +vmlinux sget 0x94e2c007 +vmlinux sha_transform 0xf313da4e +vmlinux shrink_dcache_parent 0xd076261b +vmlinux shrink_dcache_sb 0xed61cceb +vmlinux si_meminfo 0xb3a307c6 +vmlinux sigprocmask 0x8ed6f0ed +vmlinux simple_attr_close 0x24fbbe00 +vmlinux simple_attr_open 0xa161e393 +vmlinux simple_attr_read 0x02c1cfa2 +vmlinux simple_attr_write 0x8399ea49 +vmlinux simple_commit_write 0x0639c771 +vmlinux simple_dir_inode_operations 0xec31aa61 +vmlinux simple_dir_operations 0x84b5aa76 +vmlinux simple_empty 0x6e2ce138 +vmlinux simple_fill_super 0x7c2f0488 +vmlinux simple_getattr 0xa7ed77d1 +vmlinux simple_link 0x817cc42c +vmlinux simple_lookup 0x50b919f6 +vmlinux simple_pin_fs 0x701afb18 +vmlinux simple_prepare_write 0x280f7470 +vmlinux simple_read_from_buffer 0x528c709d +vmlinux simple_readpage 0x1954d1e5 +vmlinux simple_release_fs 0x98cc39a9 +vmlinux simple_rename 0x83cf7033 +vmlinux simple_rmdir 0x69f5c7d4 +vmlinux simple_statfs 0x1d51f6cf +vmlinux simple_strtol 0x0b742fd7 +vmlinux simple_strtoul 0x20000329 +vmlinux simple_strtoull 0x61b7b126 +vmlinux simple_sync_file 0x097654ca +vmlinux simple_transaction_get 0xb53ec652 +vmlinux simple_transaction_read 0x1e028f9c +vmlinux simple_transaction_release 0xb5d98cc8 +vmlinux simple_unlink 0x25649202 +vmlinux single_open 0x98000673 +vmlinux single_release 0xa84d40a0 +vmlinux sk_alloc 0xe1562fb7 +vmlinux sk_chk_filter 0x53c0767c +vmlinux sk_clone 0x8487efab +vmlinux sk_common_release 0xabd3c1c8 +vmlinux sk_free 0x446824b9 +vmlinux sk_reset_timer 0x07fd7f83 +vmlinux sk_run_filter 0x67ea54b3 +vmlinux sk_send_sigurg 0x0c25af36 +vmlinux sk_stop_timer 0xc67c595a +vmlinux sk_stream_error 0xcaabcbfd +vmlinux sk_stream_kill_queues 0x1547f27e +vmlinux sk_stream_mem_schedule 0xbbb898dd +vmlinux sk_stream_rfree 0xba9970b9 +vmlinux sk_stream_wait_close 0x5910c1cc +vmlinux sk_stream_wait_connect 0xe69fe363 +vmlinux sk_stream_wait_memory 0x1c90936e +vmlinux sk_stream_write_space 0x16441f3b +vmlinux sk_wait_data 0x384a3c71 +vmlinux skb_abort_seq_read 0x5ae7cdb1 +vmlinux skb_append 0x2e1bdaed +vmlinux skb_append_datato_frags 0xaa7a7db5 +vmlinux skb_checksum 0x9b23138d +vmlinux skb_checksum_help 0xf906bae1 +vmlinux skb_clone 0x8f8813d9 +vmlinux skb_clone_fraglist 0x83dc8a3c +vmlinux skb_copy 0xf91ae89a +vmlinux skb_copy_and_csum_bits 0x8a8a6071 +vmlinux skb_copy_and_csum_datagram_iovec 0xf1fc7e7a +vmlinux skb_copy_and_csum_dev 0xfc853bba +vmlinux skb_copy_bits 0xfdbedcb2 +vmlinux skb_copy_datagram_iovec 0x4471c14f +vmlinux skb_copy_expand 0x7e20d23b +vmlinux skb_cow_data 0x931f5fc4 +vmlinux skb_dequeue 0x52c6a973 +vmlinux skb_dequeue_tail 0x85ad7cbd +vmlinux skb_find_text 0xc5069372 +vmlinux skb_free_datagram 0xc2fa3ea7 +vmlinux skb_icv_walk 0xb918937f +vmlinux skb_insert 0x75e91ddc +vmlinux skb_make_writable 0xf91f62c8 +vmlinux skb_over_panic 0x90c57dfc +vmlinux skb_pad 0xe18da347 +vmlinux skb_prepare_seq_read 0x9f496c94 +vmlinux skb_queue_head 0xa0c00f6a +vmlinux skb_queue_purge 0x6d6e1175 +vmlinux skb_queue_tail 0xf85082b6 +vmlinux skb_realloc_headroom 0x8d781bf2 +vmlinux skb_recv_datagram 0x06757c5b +vmlinux skb_seq_read 0x946abc9a +vmlinux skb_split 0x80463b77 +vmlinux skb_store_bits 0x156f437d +vmlinux skb_to_sgvec 0x558d1694 +vmlinux skb_under_panic 0x1744424f +vmlinux skb_unlink 0x1abb02bc +vmlinux sleep_on 0xa25df60c +vmlinux sleep_on_timeout 0x2c380d45 +vmlinux smp_call_function 0x0014bfd1 +vmlinux snprintf 0x025da070 +vmlinux sock_alloc_send_skb 0x137fe14f +vmlinux sock_common_getsockopt 0x2c18716e +vmlinux sock_common_recvmsg 0xd02b5002 +vmlinux sock_common_setsockopt 0xa26274ce +vmlinux sock_create 0x83c87232 +vmlinux sock_create_kern 0xa06ee8c9 +vmlinux sock_create_lite 0xb710b718 +vmlinux sock_enable_timestamp 0x44c76599 +vmlinux sock_get_timestamp 0xbb854db2 +vmlinux sock_i_ino 0x7b4ad2d8 +vmlinux sock_i_uid 0xa95a60ac +vmlinux sock_init_data 0x03b52835 +vmlinux sock_kfree_s 0x98824612 +vmlinux sock_kmalloc 0xeb86793a +vmlinux sock_map_fd 0x6b4f243f +vmlinux sock_no_accept 0xdaaa80aa +vmlinux sock_no_bind 0x8117411c +vmlinux sock_no_connect 0xd79810e5 +vmlinux sock_no_getname 0x70eefd8f +vmlinux sock_no_getsockopt 0xd4ba7951 +vmlinux sock_no_ioctl 0xdead1a50 +vmlinux sock_no_listen 0xa6bee09e +vmlinux sock_no_mmap 0x36cffbf5 +vmlinux sock_no_poll 0xe99b1cea +vmlinux sock_no_recvmsg 0xf8910aa6 +vmlinux sock_no_sendmsg 0x191637bf +vmlinux sock_no_sendpage 0xfbeb45ac +vmlinux sock_no_setsockopt 0xbe5804b1 +vmlinux sock_no_shutdown 0x121171da +vmlinux sock_no_socketpair 0x3a329431 +vmlinux sock_recvmsg 0x2f782bc7 +vmlinux sock_register 0xcab3d8d0 +vmlinux sock_release 0x1803b0ee +vmlinux sock_rfree 0x3d9950ce +vmlinux sock_sendmsg 0xa3771834 +vmlinux sock_setsockopt 0x7dcbe791 +vmlinux sock_unregister 0x2394a062 +vmlinux sock_wake_async 0xdd07e8df +vmlinux sock_wfree 0x0b746773 +vmlinux sock_wmalloc 0x0f6cf4fb +vmlinux sockfd_lookup 0xa4a22d0b +vmlinux soft_cursor 0x161d36ec +vmlinux sort 0x310917fe +vmlinux spi_attach_transport 0x564eb450 +vmlinux spi_display_xfer_agreement 0x80752906 +vmlinux spi_dv_device 0xf5a94e17 +vmlinux spi_release_transport 0x02ebc4fb +vmlinux spi_schedule_dv_device 0x11a5a48a +vmlinux sprintf 0x1d26aa98 +vmlinux sscanf 0x859204af +vmlinux starget_for_each_device 0x3b319bec +vmlinux start_tty 0x69360eea +vmlinux steal_locks 0xa6f9ef2b +vmlinux sti_get_rom 0xe5c10859 +vmlinux stop_tty 0x5c41e6f3 +vmlinux strcat 0x061651be +vmlinux strchr 0x349cba85 +vmlinux strcmp 0xe2d5255a +vmlinux strcpy 0xe914e41e +vmlinux strcspn 0x6c1ce5ce +vmlinux strlcat 0xdd0a2ba2 +vmlinux strlcpy 0x73e20c1c +vmlinux strlen 0x97255bdf +vmlinux strncat 0xd627480b +vmlinux strnchr 0x0a3131f6 +vmlinux strncmp 0x84b183ae +vmlinux strncpy 0x328a05f1 +vmlinux strnicmp 0x4e830a3e +vmlinux strnlen 0xd9ce8f0c +vmlinux strpbrk 0x9a1dfd65 +vmlinux strrchr 0x9f984513 +vmlinux strsep 0x85df9b6c +vmlinux strspn 0xc7ec6c27 +vmlinux strstr 0x1e6d26a8 +vmlinux struct_module 0x0505ef1f +vmlinux submit_bh 0xcfef60f1 +vmlinux submit_bio 0xc9f8fbc4 +vmlinux subsys_create_file 0x2a6298bb +vmlinux subsys_remove_file 0x18db931e +vmlinux subsystem_init 0x5794f4e9 +vmlinux subsystem_register 0x33ba34ed +vmlinux subsystem_unregister 0x5a8ad951 +vmlinux suid_dumpable 0xb694c524 +vmlinux svc_auth_register 0x61f065d4 +vmlinux svc_auth_unregister 0x0f668ba9 +vmlinux svc_authenticate 0x91939bd0 +vmlinux svc_create 0x92585bbd +vmlinux svc_create_thread 0xcf465d78 +vmlinux svc_destroy 0x05faa832 +vmlinux svc_drop 0x40be2d85 +vmlinux svc_exit_thread 0x023abb40 +vmlinux svc_makesock 0x90894ca7 +vmlinux svc_proc_register 0x37da8543 +vmlinux svc_proc_unregister 0x12e280e3 +vmlinux svc_process 0x4480e4b0 +vmlinux svc_recv 0x72024e33 +vmlinux svc_reserve 0x511fbd3a +vmlinux svc_seq_show 0x235c9450 +vmlinux svc_set_client 0xd6f2ebc4 +vmlinux svc_wake_up 0x5765b754 +vmlinux svcauth_gss_register_pseudoflavor 0x8d1a827e +vmlinux svcauth_unix_purge 0x6eea229d +vmlinux swap_io_context 0x8524076a +vmlinux symbol_put_addr 0x66d87d38 +vmlinux sync_blockdev 0xa558146f +vmlinux sync_dirty_buffer 0xd0524543 +vmlinux sync_inode 0x5f067957 +vmlinux sync_mapping_buffers 0x567e562b +vmlinux sync_page_range 0xc62ba3dc +vmlinux synchronize_irq 0xe523ad75 +vmlinux synchronize_kernel 0xad036394 +vmlinux synchronize_net 0x609f1c7e +vmlinux synchronize_rcu 0x6091797f +vmlinux sys_close 0xdcb0349b +vmlinux sys_lseek 0xec2107f8 +vmlinux sys_open 0xe269ea1c +vmlinux sys_read 0x2efa450d +vmlinux sys_tz 0xfe5d4bb2 +vmlinux sys_write 0x69b233d3 +vmlinux sysctl_intvec 0xa8282dc4 +vmlinux sysctl_ip_nonlocal_bind 0xdbcd416e +vmlinux sysctl_jiffies 0xcfd62123 +vmlinux sysctl_local_port_range 0xee08006f +vmlinux sysctl_ms_jiffies 0x53075adf +vmlinux sysctl_optmem_max 0xa108eb4d +vmlinux sysctl_rmem_max 0xb05fc310 +vmlinux sysctl_string 0x26c85735 +vmlinux sysctl_tcp_abc 0x2cd19491 +vmlinux sysctl_tcp_ecn 0x17df17bc +vmlinux sysctl_tcp_low_latency 0x2ba707a8 +vmlinux sysctl_tcp_mem 0xce36ded6 +vmlinux sysctl_tcp_reordering 0x99cdc86b +vmlinux sysctl_tcp_rmem 0x8d551bef +vmlinux sysctl_tcp_tso_win_divisor 0xe1df1e5f +vmlinux sysctl_tcp_tw_reuse 0x29f524fc +vmlinux sysctl_tcp_wmem 0xfc02b7ad +vmlinux sysctl_vfs_cache_pressure 0x82d79b51 +vmlinux sysctl_wmem_max 0xfac8865f +vmlinux sysdev_class_register 0x8ac64856 +vmlinux sysdev_class_unregister 0x63a3b5eb +vmlinux sysdev_create_file 0x5b6110b9 +vmlinux sysdev_driver_register 0x0dbba1b6 +vmlinux sysdev_driver_unregister 0x115e2044 +vmlinux sysdev_register 0xc3350eed +vmlinux sysdev_remove_file 0xb1901010 +vmlinux sysdev_unregister 0x1ea13275 +vmlinux sysfs_chmod_file 0xd7d0af66 +vmlinux sysfs_create_bin_file 0xc7b0cba5 +vmlinux sysfs_create_dir 0x12a66e08 +vmlinux sysfs_create_file 0x4cfcff89 +vmlinux sysfs_create_group 0xbc6f48f0 +vmlinux sysfs_create_link 0x7fcca090 +vmlinux sysfs_remove_bin_file 0x98fc200c +vmlinux sysfs_remove_dir 0x724dfbe9 +vmlinux sysfs_remove_file 0x5e2fd7f9 +vmlinux sysfs_remove_group 0xeec925aa +vmlinux sysfs_remove_link 0x8a4225ab +vmlinux sysfs_rename_dir 0x264a4ca1 +vmlinux sysfs_update_file 0x7476c0a7 +vmlinux system_bus_clock 0xee5a11eb +vmlinux system_state 0x2288378f +vmlinux system_utsname 0xb12cdfe7 +vmlinux take_over_console 0xf19c17f0 +vmlinux task_handoff_register 0x74abdafa +vmlinux task_handoff_unregister 0xea065e01 +vmlinux task_in_intr 0xee5ee0e6 +vmlinux task_nice 0xb72df115 +vmlinux task_no_data_intr 0x04f8d364 +vmlinux tasklet_init 0xa5808bbf +vmlinux tasklet_kill 0x79ad224b +vmlinux tasklist_lock 0xb18d9c07 +vmlinux tc_classify 0xf97c65bc +vmlinux tcf_action_dump_1 0x551916e0 +vmlinux tcf_action_exec 0x96601ff4 +vmlinux tcf_em_register 0x538e42a3 +vmlinux tcf_em_tree_destroy 0xb6dc7ac9 +vmlinux tcf_em_tree_dump 0xcd17460f +vmlinux tcf_em_tree_validate 0x7e3e9e87 +vmlinux tcf_em_unregister 0x8fb3e664 +vmlinux tcf_exts_change 0x82a28781 +vmlinux tcf_exts_destroy 0x97f1c910 +vmlinux tcf_exts_dump 0x0e5475fb +vmlinux tcf_exts_dump_stats 0x83e273c2 +vmlinux tcf_exts_validate 0x2dd524df +vmlinux tcf_register_action 0x31fde8dc +vmlinux tcf_unregister_action 0xa33d2ba3 +vmlinux tcp_check_req 0x65c563ea +vmlinux tcp_child_process 0x5f6c7887 +vmlinux tcp_close 0x4f959483 +vmlinux tcp_connect 0x8b7916a5 +vmlinux tcp_create_openreq_child 0x9ab20e9c +vmlinux tcp_death_row 0xed0ce88c +vmlinux tcp_disconnect 0x74271960 +vmlinux tcp_enter_memory_pressure 0xf3ff7ff4 +vmlinux tcp_get_info 0x1ebb72b1 +vmlinux tcp_getsockopt 0xfab353d5 +vmlinux tcp_hashinfo 0xf3af6d9a +vmlinux tcp_init_congestion_ops 0xf147df21 +vmlinux tcp_init_xmit_timers 0x3e9c1e45 +vmlinux tcp_ioctl 0xcde0392d +vmlinux tcp_make_synack 0x57b93af6 +vmlinux tcp_memory_allocated 0xa29b1708 +vmlinux tcp_memory_pressure 0x6403e338 +vmlinux tcp_orphan_count 0x71196147 +vmlinux tcp_parse_options 0x8fb86d97 +vmlinux tcp_poll 0x8c88b6d7 +vmlinux tcp_proc_register 0x6301ba39 +vmlinux tcp_proc_unregister 0x90bb5924 +vmlinux tcp_prot 0xacb2a328 +vmlinux tcp_rcv_established 0xe9267a83 +vmlinux tcp_rcv_state_process 0x7724b816 +vmlinux tcp_read_sock 0x70fab8ab +vmlinux tcp_recvmsg 0x4051d61d +vmlinux tcp_register_congestion_control 0x513273a3 +vmlinux tcp_reno_cong_avoid 0xcf676504 +vmlinux tcp_reno_min_cwnd 0xce7cbbee +vmlinux tcp_reno_ssthresh 0x0811792c +vmlinux tcp_sendmsg 0x057af7ce +vmlinux tcp_sendpage 0x4c25ae8d +vmlinux tcp_setsockopt 0xd240bbc0 +vmlinux tcp_shutdown 0xd0624346 +vmlinux tcp_simple_retransmit 0x69a6d1ef +vmlinux tcp_sockets_allocated 0x4f5651c3 +vmlinux tcp_statistics 0xebf1760f +vmlinux tcp_sync_mss 0xf2840daf +vmlinux tcp_timewait_state_process 0x64444f34 +vmlinux tcp_unhash 0x4d090bf2 +vmlinux tcp_unregister_congestion_control 0xe872e76c +vmlinux tcp_v4_conn_request 0x1b744af8 +vmlinux tcp_v4_connect 0xffbb0302 +vmlinux tcp_v4_destroy_sock 0x681553bb +vmlinux tcp_v4_do_rcv 0x3f549904 +vmlinux tcp_v4_remember_stamp 0xd18fd5b5 +vmlinux tcp_v4_send_check 0xdb04fa43 +vmlinux tcp_v4_syn_recv_sock 0xbb596c5e +vmlinux test_clear_page_dirty 0xe266c9ba +vmlinux test_set_page_writeback 0x8ce17072 +vmlinux textsearch_destroy 0x0751c3e8 +vmlinux textsearch_find_continuous 0x2c4b3294 +vmlinux textsearch_prepare 0x9932fba1 +vmlinux textsearch_register 0x93eb3121 +vmlinux textsearch_unregister 0x35a84775 +vmlinux thaw_bdev 0x07db6492 +vmlinux timespec_trunc 0xc045ad4e +vmlinux totalram_pages 0xde9360ba +vmlinux touch_softlockup_watchdog 0x6fcb87a1 +vmlinux transport_add_device 0x48071754 +vmlinux transport_class_register 0x3873454c +vmlinux transport_class_unregister 0x3f300998 +vmlinux transport_configure_device 0xcba910d2 +vmlinux transport_destroy_device 0x213fc9d5 +vmlinux transport_remove_device 0x438d693f +vmlinux transport_setup_device 0x7ea5a840 +vmlinux truncate_inode_pages 0x6f30e072 +vmlinux try_acquire_console_sem 0x69927dff +vmlinux try_to_free_buffers 0xd18d68fa +vmlinux try_to_release_page 0xcda9d58d +vmlinux tty_check_change 0x31dc8470 +vmlinux tty_flip_buffer_push 0x986e7382 +vmlinux tty_get_baud_rate 0xbf49fb64 +vmlinux tty_hangup 0x74b95a17 +vmlinux tty_hung_up_p 0x98ea26f1 +vmlinux tty_ldisc_deref 0xe394b011 +vmlinux tty_ldisc_flush 0x0ddbad6d +vmlinux tty_ldisc_get 0x397517cc +vmlinux tty_ldisc_put 0xf98b0275 +vmlinux tty_ldisc_ref 0xb0ad593d +vmlinux tty_ldisc_ref_wait 0x27b93ecf +vmlinux tty_name 0x127d78b0 +vmlinux tty_register_device 0x5b4bb55e +vmlinux tty_register_driver 0xbd997593 +vmlinux tty_register_ldisc 0xf18b18d8 +vmlinux tty_set_operations 0xb9f511d7 +vmlinux tty_std_termios 0x89ac5254 +vmlinux tty_termios_baud_rate 0x0060e766 +vmlinux tty_unregister_device 0x8d6d1c36 +vmlinux tty_unregister_driver 0xb401408b +vmlinux tty_unregister_ldisc 0xa120d33c +vmlinux tty_vhangup 0x4f1de701 +vmlinux tty_wait_until_sent 0x369ae04e +vmlinux tty_wakeup 0x0e2a9d70 +vmlinux uart_add_one_port 0xb6076b31 +vmlinux uart_get_baud_rate 0x3474fa53 +vmlinux uart_get_divisor 0xb8be37c4 +vmlinux uart_match_port 0x5edb8534 +vmlinux uart_register_driver 0x7fe08800 +vmlinux uart_remove_one_port 0x212a15cb +vmlinux uart_resume_port 0x3b3ee7b8 +vmlinux uart_suspend_port 0x9fed4a77 +vmlinux uart_unregister_driver 0xd8df9ff6 +vmlinux uart_update_timeout 0xcd8a177c +vmlinux uart_write_wakeup 0x612bc7ca +vmlinux udp_disconnect 0x44456ee2 +vmlinux udp_hash 0x493e25e1 +vmlinux udp_hash_lock 0xcccdd0d4 +vmlinux udp_ioctl 0xb835b992 +vmlinux udp_poll 0xc230220e +vmlinux udp_port_rover 0x43a83a72 +vmlinux udp_proc_register 0xb1420d96 +vmlinux udp_proc_unregister 0x1ef3f8fb +vmlinux udp_prot 0xb10cbe72 +vmlinux udp_sendmsg 0x8e8debc0 +vmlinux uhci_check_and_reset_hc 0x335b260a +vmlinux uhci_reset_hc 0xbe22c7a0 +vmlinux unblock_all_signals 0x0a2487e0 +vmlinux unix_domain_find 0x96946e44 +vmlinux unload_nls 0x5c29a78c +vmlinux unlock_buffer 0x39fa8bd1 +vmlinux unlock_cpu_hotplug 0xdbb6cbd9 +vmlinux unlock_kernel 0xb1f975aa +vmlinux unlock_new_inode 0xcc586a13 +vmlinux unlock_page 0x954250ac +vmlinux unlock_rename 0x674204d2 +vmlinux unmap_mapping_range 0x7033d872 +vmlinux unmap_underlying_metadata 0x5184352e +vmlinux unregister_binfmt 0x6a480bfb +vmlinux unregister_blkdev 0xeac1c4af +vmlinux unregister_chrdev 0xc192d491 +vmlinux unregister_chrdev_region 0x7485e15e +vmlinux unregister_console 0x36c6c841 +vmlinux unregister_cpu_notifier 0x74cc1cbe +vmlinux unregister_exec_domain 0xa467b8c7 +vmlinux unregister_filesystem 0x40f31d62 +vmlinux unregister_framebuffer 0xba119d62 +vmlinux unregister_inetaddr_notifier 0x760b437a +vmlinux unregister_module_notifier 0x7c904ded +vmlinux unregister_netdev 0x18c67338 +vmlinux unregister_netdevice 0x4518e17b +vmlinux unregister_netdevice_notifier 0xfe769456 +vmlinux unregister_nls 0x293c487a +vmlinux unregister_parisc_driver 0x8e0ed5f9 +vmlinux unregister_qdisc 0x1f709182 +vmlinux unregister_reboot_notifier 0x3980aac1 +vmlinux unregister_security 0x7e4eeb53 +vmlinux unregister_sysctl_table 0xd393a952 +vmlinux unregister_sysrq_key 0x195809b1 +vmlinux unregister_tcf_proto_ops 0xd77e81c7 +vmlinux unregister_timer_hook 0xf807773e +vmlinux unregister_wlandev 0x607020a9 +vmlinux unshare_files 0x04a20170 +vmlinux update_atime 0x75888f4a +vmlinux update_region 0xac62bba7 +vmlinux utf8_mbstowcs 0x7d850612 +vmlinux utf8_mbtowc 0x4ddc4b9f +vmlinux utf8_wcstombs 0x863cb91a +vmlinux utf8_wctomb 0xf82f1109 +vmlinux uts_sem 0x84248e80 +vmlinux vc_cons 0x1589438a +vmlinux vc_resize 0x4075bb84 +vmlinux vesa_modes 0xa598e29c +vmlinux vfree 0x2fd1d81c +vmlinux vfs_create 0xbf0369be +vmlinux vfs_follow_link 0xc1e2831e +vmlinux vfs_fstat 0xcb841136 +vmlinux vfs_getattr 0x24608a54 +vmlinux vfs_link 0x4ef29ce0 +vmlinux vfs_llseek 0x4f0de592 +vmlinux vfs_lstat 0x91d803ff +vmlinux vfs_mkdir 0x36452fcb +vmlinux vfs_mknod 0x63f9389c +vmlinux vfs_permission 0x43cbf165 +vmlinux vfs_read 0xfaafa1f4 +vmlinux vfs_readdir 0xfe68a8c3 +vmlinux vfs_readlink 0xed6a3aaa +vmlinux vfs_readv 0x0e721c4d +vmlinux vfs_rename 0x25b5fdde +vmlinux vfs_rmdir 0xb8e96110 +vmlinux vfs_stat 0x4e193f40 +vmlinux vfs_statfs 0xb9050fa7 +vmlinux vfs_symlink 0x566086f5 +vmlinux vfs_unlink 0x7ebb8799 +vmlinux vfs_write 0x990b87c6 +vmlinux vfs_writev 0x530244e6 +vmlinux vlan_ioctl_set 0x3797e731 +vmlinux vm_insert_page 0x36a28ea2 +vmlinux vmalloc 0xd6ee688f +vmlinux vmalloc_32 0xa0b04675 +vmlinux vmalloc_earlyreserve 0xddb12f67 +vmlinux vmalloc_node 0x23fd3028 +vmlinux vmalloc_start 0x84ac94f2 +vmlinux vmalloc_to_page 0x07715fcd +vmlinux vmalloc_to_pfn 0xcb51d0fd +vmlinux vmap 0x7f030580 +vmlinux vmtruncate 0x4e539d74 +vmlinux vprintk 0x777a8e29 +vmlinux vscnprintf 0x0ead5073 +vmlinux vsnprintf 0x6989a769 +vmlinux vsprintf 0x782b0008 +vmlinux vsscanf 0x9fc921bb +vmlinux vunmap 0xe7ead430 +vmlinux wait_for_completion 0xbff1ff37 +vmlinux wait_for_completion_interruptible 0x5927b026 +vmlinux wait_for_completion_interruptible_timeout 0xbaf4d91d +vmlinux wait_for_completion_timeout 0xb56e75fc +vmlinux wait_on_page_bit 0x631e154d +vmlinux wait_on_sync_kiocb 0x1014b389 +vmlinux wake_bit_function 0x24fdac79 +vmlinux wake_up_bit 0xa0fbac79 +vmlinux wake_up_process 0x48b8b399 +vmlinux wireless_send_event 0xbb966e35 +vmlinux wireless_spy_update 0xfb6b65ff +vmlinux wlan_setup 0xd07e1312 +vmlinux wlan_unsetup 0x8681834c +vmlinux write_inode_now 0x8d21879b +vmlinux write_one_page 0x7c4699e0 +vmlinux xdr_buf_from_iov 0x594cb723 +vmlinux xdr_buf_read_netobj 0x2ccebfd6 +vmlinux xdr_buf_subsegment 0xc4059ff2 +vmlinux xdr_decode_array2 0x0403d25b +vmlinux xdr_decode_netobj 0x1be57115 +vmlinux xdr_decode_string 0x6755aa62 +vmlinux xdr_decode_string_inplace 0x7bd87272 +vmlinux xdr_decode_word 0xbf826e7e +vmlinux xdr_encode_array2 0x04fa5563 +vmlinux xdr_encode_netobj 0x29c6f164 +vmlinux xdr_encode_opaque 0x0e9e79d5 +vmlinux xdr_encode_opaque_fixed 0x587d494b +vmlinux xdr_encode_pages 0xc58486d3 +vmlinux xdr_encode_string 0xabc0fe0c +vmlinux xdr_encode_word 0xb31c9306 +vmlinux xdr_init_decode 0x6bed0dc6 +vmlinux xdr_init_encode 0x69813004 +vmlinux xdr_inline_decode 0x5ebc7cbb +vmlinux xdr_inline_pages 0xe38c8c45 +vmlinux xdr_read_pages 0x3ec59f8c +vmlinux xdr_reserve_space 0x49687fe6 +vmlinux xdr_shift_buf 0x382412ff +vmlinux xdr_write_pages 0x01532b5a +vmlinux xfrm4_rcv 0x16c1f9fb +vmlinux xfrm_aalg_get_byid 0x5a16594c +vmlinux xfrm_aalg_get_byidx 0x6c672417 +vmlinux xfrm_aalg_get_byname 0x217ef805 +vmlinux xfrm_alloc_spi 0x8ff2013c +vmlinux xfrm_bundle_ok 0x8b3fd322 +vmlinux xfrm_calg_get_byid 0x744690cc +vmlinux xfrm_calg_get_byname 0x4c9bd9e3 +vmlinux xfrm_cfg_sem 0xec5c9886 +vmlinux xfrm_count_auth_supported 0x686c703f +vmlinux xfrm_count_enc_supported 0x9cb8037b +vmlinux xfrm_dst_ifdown 0x363a09d8 +vmlinux xfrm_dst_lookup 0xe61be033 +vmlinux xfrm_ealg_get_byid 0x06b7ca4c +vmlinux xfrm_ealg_get_byidx 0x1ded3e3d +vmlinux xfrm_ealg_get_byname 0xfab4bbc9 +vmlinux xfrm_find_acq 0xb5e8f570 +vmlinux xfrm_find_acq_byseq 0x9af5b7f4 +vmlinux xfrm_get_acqseq 0xbb5d343d +vmlinux xfrm_init_pmtu 0xb7134098 +vmlinux xfrm_init_state 0xfab9342d +vmlinux xfrm_lookup 0x80cac202 +vmlinux xfrm_parse_spi 0xac8c8817 +vmlinux xfrm_policy_alloc 0x97d520cc +vmlinux xfrm_policy_byid 0x0bb5d779 +vmlinux xfrm_policy_bysel 0x25bfdea0 +vmlinux xfrm_policy_flush 0x492f2c74 +vmlinux xfrm_policy_insert 0xa17d8558 +vmlinux xfrm_policy_list 0x752950d5 +vmlinux xfrm_policy_register_afinfo 0x496873c4 +vmlinux xfrm_policy_unregister_afinfo 0x1fb7c734 +vmlinux xfrm_policy_walk 0xd25a7c4e +vmlinux xfrm_probe_algs 0x28e23139 +vmlinux xfrm_register_km 0x8618ea2f +vmlinux xfrm_register_type 0x2f3d3dce +vmlinux xfrm_replay_advance 0xbd71f5a7 +vmlinux xfrm_replay_check 0x4031716c +vmlinux xfrm_state_add 0x7f5f9198 +vmlinux xfrm_state_alloc 0x349d46ae +vmlinux xfrm_state_check 0x3a1050d4 +vmlinux xfrm_state_check_expire 0x0dcecd32 +vmlinux xfrm_state_delete 0x99bec09b +vmlinux xfrm_state_delete_tunnel 0x6652537a +vmlinux xfrm_state_flush 0x6daf354f +vmlinux xfrm_state_insert 0x2fa72762 +vmlinux xfrm_state_lookup 0xaeb75963 +vmlinux xfrm_state_mtu 0x1f27e656 +vmlinux xfrm_state_register_afinfo 0xde4e0089 +vmlinux xfrm_state_unregister_afinfo 0xf876f8ba +vmlinux xfrm_state_update 0xc0c1bee6 +vmlinux xfrm_state_walk 0xcb18feaa +vmlinux xfrm_unregister_km 0xb7044b88 +vmlinux xfrm_unregister_type 0x046fc47d +vmlinux xfrm_user_policy 0x7c68c5e2 +vmlinux xprt_create_proto 0x4a129c67 +vmlinux xprt_set_timeout 0xbce67dc0 +vmlinux xrlim_allow 0x410c3aac +vmlinux xtime 0xb56717cf +vmlinux xtime_lock 0xa617d66a +vmlinux yield 0x760a0f4f +vmlinux zero_fill_bio 0x17cfcc93 +vmlinux zlib_inflate 0x6b60eef6 +vmlinux zlib_inflateEnd 0xba7921dc +vmlinux zlib_inflateIncomp 0x6d9e4435 +vmlinux zlib_inflateInit2_ 0x7d94391d +vmlinux zlib_inflateInit_ 0x7dcbc335 +vmlinux zlib_inflateReset 0xf56a3962 +vmlinux zlib_inflateSync 0x14b8247d +vmlinux zlib_inflateSyncPoint 0x39dec32c +vmlinux zlib_inflate_workspacesize 0xce5ac24f +vmlinux zone_table 0xe4f89c89 --- linux-source-2.6.15-2.6.15.orig/debian/abi/2.6.15-52.70/hppa/hppa32-smp.modules +++ linux-source-2.6.15-2.6.15/debian/abi/2.6.15-52.70/hppa/hppa32-smp.modules @@ -0,0 +1,556 @@ +3c501 +3c503 +3c507 +3c509 +3c574_cs +3c589_cs +3c59x +53c700 +8021q +8139cp +8139too +8250_accent +8250_boca +8250_fourport +8250_hub6 +82596 +8390 +9p2000 +ac3200 +acecad +acenic +acx +adm8211 +aes +af_key +ah4 +ah6 +aha152x_cs +aic94xx +airo +airo_cs +amd8111e +anubis +arc4 +arcmsr +arptable_filter +arp_tables +arpt_mangle +at1700 +ati_remote2 +autofs +autofs4 +axnet_cs +b44 +bcm43xx +binfmt_misc +blowfish +bnx2 +bridge +bsd_comp +cassini +cast5 +cast6 +cdrom +ch +cicada +cifs +cloop +cls_basic +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm4000_cs +cm4040_cs +cman +cn +configfs +crc16 +crc32c +crc-ccitt +cryptoloop +crypto_null +cs89x0 +cxgb +cyblafb +dabusb +davicom +dazuko +dccp +dccp_ccid3 +dccp_diag +dccp_tfrc_lib +deflate +depca +dgrs +dl2k +dlm +dm-bbr +dm-crypt +dm-mirror +dm-mod +dm-snapshot +dm-zero +dpt_i2o +dummy +e100 +e1000 +e2100 +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_ulog +ebt_vlan +ecc +eepro +eepro100 +eexpress +ehci-hcd +em_cmp +emi26 +emi62 +em_meta +em_nbyte +em_text +em_u32 +epic100 +es3210 +esp4 +esp6 +eth16i +evdev +ewrk3 +exportfs +ext2 +ext3 +fat +faulty +fdomain_cs +fealnx +fmvj18x_cs +forcedeth +freevxfs +fuse +gact +generic +gfs +gnbd +hamachi +hermes +hilkbd +hil_kbd +hil_mlc +hil_ptr +hostap +hostap_cs +hostap_pci +hostap_plx +hp +hp100 +hp-plus +hp_sdc +hp_sdc_mlc +hp_sdc_rtc +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i82092 +i82365 +ide-cd +ide-cs +ide-disk +ide-generic +ide-scsi +ieee80211 +ieee80211_1_1_13 +ieee80211_1_1_13_crypt +ieee80211_1_1_13_crypt_ccmp +ieee80211_1_1_13_crypt_tkip +ieee80211_1_1_13_crypt_wep +ieee80211_crypt +ieee80211_crypt_ccmp +ieee80211_crypt_tkip +ieee80211_crypt_wep +ieee80211-rtl +ieee80211softmac +initio +ip6_queue +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6t_ah +ip6t_dst +ip6t_esp +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_hl +ip6t_HL +ip6t_ipv6header +ip6t_length +ip6t_limit +ip6t_LOG +ip6t_mac +ip6t_mark +ip6t_MARK +ip6t_multiport +ip6t_NFQUEUE +ip6t_owner +ip6t_physdev +ip6t_REJECT +ip6t_rt +ip6_tunnel +ipcomp +ipcomp6 +ip_conntrack +ip_conntrack_amanda +ip_conntrack_ftp +ip_conntrack_irc +ip_conntrack_netbios_ns +ip_conntrack_netlink +ip_conntrack_pptp +ip_conntrack_proto_sctp +ip_conntrack_tftp +ipg +ip_gre +ipip +ip_nat +ip_nat_amanda +ip_nat_ftp +ip_nat_irc +ip_nat_pptp +ip_nat_snmp_basic +ip_nat_tftp +ip_queue +ipt +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +ipt_addrtype +ipt_ah +ipt_CLASSIFY +ipt_CLUSTERIP +ipt_comment +ipt_connbytes +ipt_connmark +ipt_CONNMARK +ipt_conntrack +ipt_dccp +ipt_dscp +ipt_DSCP +ipt_ecn +ipt_ECN +ipt_esp +ipt_hashlimit +ipt_helper +ipt_iprange +ipt_length +ipt_limit +ipt_LOG +ipt_mac +ipt_mark +ipt_MARK +ipt_MASQUERADE +ipt_multiport +ipt_NETMAP +ipt_NFQUEUE +ipt_NOTRACK +ipt_owner +ipt_pkttype +ipt_realm +ipt_recent +ipt_REDIRECT +ipt_REJECT +ipt_SAME +ipt_sctp +ipt_state +ipt_string +ipt_tcpmss +ipt_TCPMSS +ipt_tos +ipt_TOS +ipt_ttl +ipt_TTL +ipt_ULOG +ipv6 +ipw2100 +ipw2200 +iscsi_tcp +islsm +islsm_device +islsm_pci +islsm_usb +isofs +itmtouch +ixgb +jbd +jfs +khazad +lasi700 +lasi_82596 +ldusb +libcrc32c +libphy +linear +lne390 +lock_dlm +lock_gulm +lock_harness +lock_nolock +loop +lp +lp486e +lpfc +lxt +marvell +md4 +md-mod +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +michael_mic +mii +mirred +mptbase +mptctl +mptfc +mptsas +mptscsih +mptspi +mrv8k +msdos +multipath +natsemi +ne +ne2k-pci +ne3210 +netconsole +netwave_cs +nfnetlink +nfnetlink_log +nfnetlink_queue +nfsd +nls_cp437 +nls_iso8859-1 +nls_utf8 +nmclan_cs +ns83820 +ns87415 +nsp32 +nsp_cs +ntfs +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ohci-hcd +oprofile +orinoco +orinoco_cs +orinoco_nortel +osst +parport +parport_cs +parport_pc +pcmcia +pcmcia_core +pcnet32 +pcnet_cs +pd6729 +pdc_stable +pedit +phidgetkit +pktcdvd +plip +podxtpro +police +ppp_async +ppp_deflate +ppp_generic +ppp_mppe +pppoe +pppox +ppp_synctty +prism2_cs +prism2_pci +prism2_plx +prism2_usb +prism54 +psmouse +qla2100 +qla2200 +qla2300 +qla2322 +qla2xxx +qla6312 +qlogic_cs +qlogicfas408 +qsemi +r1000 +r8169 +r8187 +r818x +raid0 +raid1 +raid10 +raid5 +raid6 +raid_class +ray_cs +realcap +reiserfs +relayfs +rpcsec_gss_spkm3 +rsrc_nonstatic +rt2400 +rt2500 +rt61 +s2io +sas_class +sch_cbq +sch_dsmark +sch_gred +sch_hfsc +sch_htb +sch_ingress +sch_netem +sch_prio +sch_red +sch_sfq +sch_tbf +sch_teql +scsi_transport_fc +scsi_transport_iscsi +scsi_transport_sas +scsi_transport_spi2 +sd_mod +seclvl +seeq8005 +serial_cs +serio_raw +serpent +sg +sha1 +sha256 +sha512 +shaper +simple +sis190 +sis900 +sk98lin +skge +sky2 +sl811_cs +sl811-hcd +slhc +slip +smbfs +smc9194 +smc91c92_cs +smc-ultra +smc-ultra32 +snd +snd-ac97-bus +snd-ac97-codec +snd-ak4117 +snd-atiixp-modem +snd-dummy +snd-emu10k1x +snd-harmony +snd-hdspm +snd-hwdep +snd-mixer-oss +snd-page-alloc +snd-pcm +snd-pcm-oss +snd-pdaudiocf +snd-rawmidi +snd-seq +snd-seq-device +snd-seq-midi +snd-seq-midi-event +snd-seq-oss +snd-timer +snd-vx-lib +snd-vxpocket +soundcore +spectrum_cs +squashfs +sr_mod +st +starfire +sundance +sungem +sungem_phy +sunhme +sym53c500_cs +sym53c8xx +synaptics-usb +synclink_cs +tcic +tcrypt +tea +tg3 +tgr192 +tlan +tlclk +ts_bm +ts_fsm +ts_kmp +tulip +tun +twofish +typhoon +udf +uli526x +unionfs +usbcore +usbhid +usbkbd +usbmon +usbmouse +usb-storage +vfat +via-rhine +via-velocity +wavelan_cs +wd +wl3501_cs +wp512 +xfrm4_tunnel +xfrm6_tunnel +xfrm_user +xfs +xirc2ps_cs +xircom_cb +xor +yealink +yellowfin +yenta_socket +zalon7xx +zlib_deflate --- linux-source-2.6.15-2.6.15.orig/debian/README.Ubuntu-External-Drivers +++ linux-source-2.6.15-2.6.15/debian/README.Ubuntu-External-Drivers @@ -0,0 +1,130 @@ + EXTERNAL DRIVER: rhcluster + Description:: RedHat clustering system + + EXTERNAL DRIVER: acpi-sbs + Description: Smart Battery support + + EXTERNAL DRIVER: rtl8187 + Description: Realtek 8187 USB wireless driver + + EXTERNAL DRIVER: rtl8180 + Description: Realtek 8180 wireless driver + + EXTERNAL DRIVER: ndiswrapper + Description: Windows NDIS driver wrapper + + EXTERNAL DRIVER: unionfs + Description: Stackable unification file system + + EXTERNAL DRIVER: mrv8k + Description: Marvell wifi + + EXTERNAL DRIVER: sdhci + Description: Secure Digital MMC Driver + + EXTERNAL DRIVER: acerhk + Description: Acer Travelmate support for special keys + + Name: spca5xx + Description: SPCA5xx Family of Webcams + + EXTERNAL DRIVER: bcm43xx + Description: Description: Broadcom BCM43XX chipset driver + + EXTERNAL DRIVER: ieee80211softmac + Description: IEEE 802.11 Softmac driver + + EXTERNAL DRIVER: realtime-lsm + Description: Linux Security Module Realtime Driver + + EXTERNAL DRIVER: unionfs + Description: Stackable unification file system + + EXTERNAL DRIVER: linux-wlan-ng + Description: Linux WLAN-ng support (includes prism2 drivers) + + EXTERNAL DRIVER: misdn + Description: Modular ISDN Drivers + + EXTERNAL DRIVER: ipg + Description: ICPlus 1000A Gigabit Ethernet Driver + + EXTERNAL DRIVER: acx + Description: TI ACX 100/111 Wireless Driver + + EXTERNAL DRIVER: podxtpro + Description: Line6 PODxt Pro USB Driver + + EXTERNAL DRIVER: ov511 + Description: Driver for USB OV511/OV518 Cameras + + EXTERNAL DRIVER: rt2570 + Description: Realtek 2570 USB wireless driver + + EXTERNAL DRIVER: rt2400 + Description: Realtek 2400 wireless driver + + EXTERNAL DRIVER: rt2500 + Description: Realtek 2500 wireless driver + + EXTERNAL DRIVER:atmel_usb + Description: Driver for Atmel USB Wireless adaptors + + Name: OCFS2 + + Name: zd1211 + Description: USB ZD1211 based wireless device support + + Name: acerhk + Description: Acer Travelmate support for special keys + + Name: acx100 + Description: TI ACX100 Wireless chipset support (PCI/USB) + + Name: btsco + Description: Bluetooth SCO sound driver + + Name: pwc + Description: Updated PWC (Webcam) driver + + Name: at76c50x + Description: Atmel At76c 503/505 USB network driver + + Name: squashfs + Description: A squashed read-only filesystem + + Name: rfswitch + Description: Radio kill switch + + Name: quickcam + Description: Logitech Quickcam Support + + Name: sony_acpi + Description: Sony Laptop Support + + Name: cloop + Description: Compressed Loop Support + + Name: tc1100 + Description: IBM TC1100 WMI driver + + Name: wacom_acpi + Description: Enable Wacom tablet on IBM TC1100 + + Name: em8300 + Description: EM8300 MPEG-2 decoder device driver + + Name: cpad + Description: Synaptics cPad support + + Name: mppe + Description: Add Microsoft PPP compression/encryption support. + + Name: asfs + Description: Support for the Amiga SmartFilesystem + + Name: eagle-usb + Description: Eagle USB ADSL modem support + + Name: fsam7400 + Description: Amilo M7400 radio support for IPW2100 cards --- linux-source-2.6.15-2.6.15.orig/debian/commit-templates/update-configs +++ linux-source-2.6.15-2.6.15/debian/commit-templates/update-configs @@ -0,0 +1 @@ +[UBUNTU:debian] Update configs --- linux-source-2.6.15-2.6.15.orig/debian/commit-templates/newrelease +++ linux-source-2.6.15-2.6.15/debian/commit-templates/newrelease @@ -0,0 +1 @@ +[UBUNTU:debian] Start next release --- linux-source-2.6.15-2.6.15.orig/debian/commit-templates/bumpabi +++ linux-source-2.6.15-2.6.15/debian/commit-templates/bumpabi @@ -0,0 +1 @@ +[UBUNTU:debian] Bump ABI --- linux-source-2.6.15-2.6.15.orig/debian/commit-templates/patch +++ linux-source-2.6.15-2.6.15/debian/commit-templates/patch @@ -0,0 +1,16 @@ +# Examples: +# +# [UBUNTU:usb/media/spca5xx] Fix compile warnings +# +# [UBUNTU:debian] Update changelog +# +[UBUNTU:] + +# Only include PatchAuthor if it is not included in the Signed-off-by +# lines at the bottom +PatchAuthor: +# One of Submitted, Unsubmitted, Unknown, Rejected, "Ubuntu only" or "Merged in X.X.X" +UpstreamStatus: +# Reference a bug or mailing list URL +#Reference: +# Put detailed description here --- linux-source-2.6.15-2.6.15.orig/debian/commit-templates/external-driver +++ linux-source-2.6.15-2.6.15/debian/commit-templates/external-driver @@ -0,0 +1,16 @@ +# Name is the shortname of the driver (e.g. sk98lin). Description is +# basically the same as the one-line summary in Kconfig. URL is the +# location where the file can be downloaded from. Mask is +EXTERNAL DRIVER: +Description: +# These are used to check for newer versions. URL is the location where +# the file can be downloaded from. Mask is regex used to look for the +# filename (tarball), and version is the version being committed. +# Example: +# +# Url: http://www.foo.com/files/ +# Mask: foobar-(.*).tar.gz +# Version: 1.0.002 +Url: +Mask: +Version: --- linux-source-2.6.15-2.6.15.orig/cluster/dlm/lowcomms.c +++ linux-source-2.6.15-2.6.15/cluster/dlm/lowcomms.c @@ -299,6 +299,8 @@ saddr->sin6_port = cpu_to_be16(port); *addr_len = sizeof(struct sockaddr_in6); } + if ((sizeof(struct sockaddr_in6) - *addr_len) > 0) + memset((char *)saddr + *addr_len, 0, sizeof(struct sockaddr_in6) - *addr_len); } /* Close a remote connection and tidy up */ @@ -432,7 +434,7 @@ out_close: up_read(&con->sock_sem); - if (ret != -EAGAIN && !test_bit(CF_IS_OTHERCON, &con->flags)) { + if (ret != -EAGAIN) { close_connection(con, FALSE); /* Reconnect when there is something to send */ } @@ -515,11 +517,19 @@ othercon->rx_action = receive_from_sock; init_rwsem(&othercon->sock_sem); set_bit(CF_IS_OTHERCON, &othercon->flags); + } + if (!othercon->sock) { newcon->othercon = othercon; + othercon->sock = newsock; + newsock->sk->sk_user_data = othercon; + add_sock(newsock, othercon); + } + else { + printk("Extra connection from node %d attempted\n", nodeid); + result = -EAGAIN; + up_write(&newcon->sock_sem); + goto accept_err; } - othercon->sock = newsock; - newsock->sk->sk_user_data = othercon; - add_sock(newsock, othercon); } else { newsock->sk->sk_user_data = newcon; @@ -554,6 +564,7 @@ { int result = -EHOSTUNREACH; struct sockaddr_in6 saddr; + struct sockaddr_in6 my_addr; int addr_len; struct socket *sock; @@ -584,6 +595,16 @@ sock->sk->sk_user_data = con; con->rx_action = receive_from_sock; + /* Bind to local address before send */ + memcpy(&my_addr, &local_addr, sizeof(my_addr)); + make_sockaddr(&my_addr, 0, &addr_len); + result = sock->ops->bind(sock, (struct sockaddr *) &my_addr, + (int) sizeof(my_addr)); + + if (result < 0) { + printk("dlm: could not bind for connect: %d\n", result); + } + make_sockaddr(&saddr, dlm_config.tcp_port, &addr_len); add_sock(sock, con); @@ -717,7 +738,6 @@ init_rwsem(&con->sock_sem); spin_lock_init(&con->writequeue_lock); INIT_LIST_HEAD(&con->writequeue); - set_bit(CF_IS_OTHERCON, &con->flags); } memcpy(local_addr, node_addr->addr, node_addr->addr_len); @@ -887,15 +907,15 @@ if (len) { ret = sendpage(con->sock, e->page, offset, len, msg_flags); - if (ret == -EAGAIN || ret == 0) + if (ret == -EAGAIN || ret == 0) { + schedule(); goto out; + } if (ret <= 0) goto send_error; } - else { - /* Don't starve people filling buffers */ - schedule(); - } + /* Don't starve people filling buffers */ + schedule(); spin_lock(&con->writequeue_lock); e->offset += ret; --- linux-source-2.6.15-2.6.15.orig/security/keys/keyring.c +++ linux-source-2.6.15-2.6.15/security/keys/keyring.c @@ -501,6 +501,7 @@ /* * search the given keyring only (no recursion) * - keyring must be locked by caller + * - caller must guarantee that the keyring is a keyring */ key_ref_t __keyring_search_one(key_ref_t keyring_ref, const struct key_type *ktype, --- linux-source-2.6.15-2.6.15.orig/security/keys/key.c +++ linux-source-2.6.15-2.6.15/security/keys/key.c @@ -186,6 +186,7 @@ key->serial = 3; key_serial_next = key->serial + 1; +attempt_insertion: parent = NULL; p = &key_serial_tree.rb_node; @@ -200,40 +201,34 @@ else goto serial_exists; } - goto insert_here; + + /* we've found a suitable hole - arrange for this key to occupy it */ + rb_link_node(&key->serial_node, parent, p); + rb_insert_color(&key->serial_node, &key_serial_tree); + + spin_unlock(&key_serial_lock); + return; /* we found a key with the proposed serial number - walk the tree from * that point looking for the next unused serial number */ serial_exists: for (;;) { key->serial = key_serial_next; - if (key->serial < 2) - key->serial = 2; + if (key->serial < 3) + key->serial = 3; key_serial_next = key->serial + 1; - - if (!parent->rb_parent) - p = &key_serial_tree.rb_node; - else if (parent->rb_parent->rb_left == parent) - p = &parent->rb_parent->rb_left; - else - p = &parent->rb_parent->rb_right; + if (key->serial == 3) + goto attempt_insertion; parent = rb_next(parent); if (!parent) - break; + goto attempt_insertion; xkey = rb_entry(parent, struct key, serial_node); if (key->serial < xkey->serial) - goto insert_here; + goto attempt_insertion; } - /* we've found a suitable hole - arrange for this key to occupy it */ - insert_here: - rb_link_node(&key->serial_node, parent, p); - rb_insert_color(&key->serial_node, &key_serial_tree); - - spin_unlock(&key_serial_lock); - } /* end key_alloc_serial() */ /*****************************************************************************/ @@ -785,6 +780,10 @@ key_check(keyring); + key_ref = ERR_PTR(-ENOTDIR); + if (keyring->type != &key_type_keyring) + goto error_2; + down_write(&keyring->sem); /* if we're going to allocate a new key, we're going to have --- linux-source-2.6.15-2.6.15.orig/security/selinux/hooks.c +++ linux-source-2.6.15-2.6.15/security/selinux/hooks.c @@ -1290,7 +1290,7 @@ rc = task_has_perm(parent, child, PROCESS__PTRACE); /* Save the SID of the tracing process for later use in apply_creds. */ - if (!rc) + if (!(child->ptrace & PT_PTRACED) && !rc) csec->ptrace_sid = psec->sid; return rc; } --- linux-source-2.6.15-2.6.15.orig/ipc/util.c +++ linux-source-2.6.15-2.6.15/ipc/util.c @@ -181,8 +181,7 @@ if(new == NULL) return size; new->size = newsize; - memcpy(new->p, ids->entries->p, sizeof(struct kern_ipc_perm *)*size + - sizeof(struct ipc_id_ary)); + memcpy(new->p, ids->entries->p, sizeof(struct kern_ipc_perm *)*size); for(i=size;ip[i] = NULL; } --- linux-source-2.6.15-2.6.15.orig/include/linux/sysfs.h +++ linux-source-2.6.15-2.6.15/include/linux/sysfs.h @@ -72,6 +72,7 @@ void * s_element; int s_type; umode_t s_mode; + ino_t s_ino; struct dentry * s_dentry; struct iattr * s_iattr; }; --- linux-source-2.6.15-2.6.15.orig/include/linux/squashfs_fs.h +++ linux-source-2.6.15-2.6.15/include/linux/squashfs_fs.h @@ -5,7 +5,7 @@ * Squashfs * * Copyright (c) 2002, 2003, 2004, 2005, 2006 - * Phillip Lougher + * Phillip Lougher * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -24,6 +24,13 @@ * squashfs_fs.h */ +#ifndef CONFIG_SQUASHFS_2_0_COMPATIBILITY +#define CONFIG_SQUASHFS_2_0_COMPATIBILITY +#endif + +#define SQUASHFS_ALLOC(a) kmalloc(a, GFP_KERNEL) +#define SQUASHFS_FREE(a) kfree(a) +#define SQUASHFS_CACHED_FRAGMENTS 3 #define SQUASHFS_MAJOR 3 #define SQUASHFS_MINOR 0 #define SQUASHFS_MAGIC 0x73717368 @@ -156,8 +163,6 @@ #define SQUASHFS_FRAGMENT_INDEX_BYTES(A) (SQUASHFS_FRAGMENT_INDEXES(A) *\ sizeof(long long)) -#define SQUASHFS_CACHED_FRAGMENTS 3 - /* cached data constants for filesystem */ #define SQUASHFS_CACHED_BLKS 8 @@ -636,7 +641,7 @@ sizeof(struct squashfs_reg_inode_header_1));\ SQUASHFS_SWAP((s)->mtime, d, 24, 32);\ SQUASHFS_SWAP((s)->start_block, d, 56, 32);\ - SQUASHFS_SWAP((s)->file_size, d, 88, SQUASHFS_MAX_FILE_SIZE_LOG);\ + SQUASHFS_SWAP((s)->file_size, d, 88, 32);\ } #define SQUASHFS_SWAP_DIR_INODE_HEADER_1(s, d) {\ @@ -792,7 +797,7 @@ SQUASHFS_SWAP((s)->start_block, d, 64, 32);\ SQUASHFS_SWAP((s)->fragment, d, 96, 32);\ SQUASHFS_SWAP((s)->offset, d, 128, 32);\ - SQUASHFS_SWAP((s)->file_size, d, 160, SQUASHFS_MAX_FILE_SIZE_LOG);\ + SQUASHFS_SWAP((s)->file_size, d, 160, 32);\ } #define SQUASHFS_SWAP_DIR_INODE_HEADER_2(s, d) {\ --- linux-source-2.6.15-2.6.15.orig/include/linux/pci_ids.h +++ linux-source-2.6.15-2.6.15/include/linux/pci_ids.h @@ -1156,6 +1156,15 @@ #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1100 0x034E #define PCI_DEVICE_ID_NVIDIA_NVENET_14 0x0372 #define PCI_DEVICE_ID_NVIDIA_NVENET_15 0x0373 +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_IDE 0x0448 +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_AHCI 0x044C +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_AHCI2 0x044D +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_AHCI3 0x044E +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_AHCI4 0x044F +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_SATA 0x045C +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_SATA2 0x045D +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_SATA3 0x045E +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_SATA4 0x045F #define PCI_VENDOR_ID_IMS 0x10e0 #define PCI_DEVICE_ID_IMS_TT128 0x9128 @@ -1208,6 +1217,7 @@ #define PCI_DEVICE_ID_VIA_PX8X0_0 0x0259 #define PCI_DEVICE_ID_VIA_3269_0 0x0269 #define PCI_DEVICE_ID_VIA_K8T800PRO_0 0x0282 +#define PCI_DEVICE_ID_VIA_PT880ULTRA 0x0308 #define PCI_DEVICE_ID_VIA_8363_0 0x0305 #define PCI_DEVICE_ID_VIA_P4M800CE 0x0314 #define PCI_DEVICE_ID_VIA_8371_0 0x0391 @@ -1255,6 +1265,7 @@ #define PCI_DEVICE_ID_VIA_8783_0 0x3208 #define PCI_DEVICE_ID_VIA_8237 0x3227 #define PCI_DEVICE_ID_VIA_8251 0x3287 +#define PCI_DEVICE_ID_VIA_8237A 0x3337 #define PCI_DEVICE_ID_VIA_3296_0 0x0296 #define PCI_DEVICE_ID_VIA_8231 0x8231 #define PCI_DEVICE_ID_VIA_8231_4 0x8235 @@ -1350,6 +1361,7 @@ #define PCI_DEVICE_ID_SERVERWORKS_HE 0x0008 #define PCI_DEVICE_ID_SERVERWORKS_LE 0x0009 #define PCI_DEVICE_ID_SERVERWORKS_GCNB_LE 0x0017 +#define PCI_DEVICE_ID_SERVERWORKS_EPB 0x0103 #define PCI_DEVICE_ID_SERVERWORKS_OSB4 0x0200 #define PCI_DEVICE_ID_SERVERWORKS_CSB5 0x0201 #define PCI_DEVICE_ID_SERVERWORKS_CSB6 0x0203 @@ -1821,14 +1833,21 @@ #define PCI_DEVICE_ID_TIGON3_5780 0x166a #define PCI_DEVICE_ID_TIGON3_5780S 0x166b #define PCI_DEVICE_ID_TIGON3_5705F 0x166e +#define PCI_DEVICE_ID_TIGON3_5754M 0x1672 +#define PCI_DEVICE_ID_TIGON3_5755M 0x1673 #define PCI_DEVICE_ID_TIGON3_5750 0x1676 #define PCI_DEVICE_ID_TIGON3_5751 0x1677 #define PCI_DEVICE_ID_TIGON3_5715 0x1678 +#define PCI_DEVICE_ID_TIGON3_5715S 0x1679 +#define PCI_DEVICE_ID_TIGON3_5754 0x167a +#define PCI_DEVICE_ID_TIGON3_5755 0x167b #define PCI_DEVICE_ID_TIGON3_5750M 0x167c #define PCI_DEVICE_ID_TIGON3_5751M 0x167d #define PCI_DEVICE_ID_TIGON3_5751F 0x167e +#define PCI_DEVICE_ID_TIGON3_5787M 0x1693 #define PCI_DEVICE_ID_TIGON3_5782 0x1696 #define PCI_DEVICE_ID_TIGON3_5788 0x169c +#define PCI_DEVICE_ID_TIGON3_5787 0x169b #define PCI_DEVICE_ID_TIGON3_5789 0x169d #define PCI_DEVICE_ID_TIGON3_5702X 0x16a6 #define PCI_DEVICE_ID_TIGON3_5703X 0x16a7 --- linux-source-2.6.15-2.6.15.orig/include/linux/ipv6.h +++ linux-source-2.6.15-2.6.15/include/linux/ipv6.h @@ -145,6 +145,7 @@ __s32 max_desync_factor; #endif __s32 max_addresses; + __s32 accept_source_route; void *sysctl; }; @@ -167,6 +168,7 @@ DEVCONF_MAX_DESYNC_FACTOR, DEVCONF_MAX_ADDRESSES, DEVCONF_FORCE_MLD_VERSION, + DEVCONF_ACCEPT_SOURCE_ROUTE, DEVCONF_MAX }; --- linux-source-2.6.15-2.6.15.orig/include/linux/ext3_fs.h +++ linux-source-2.6.15-2.6.15/include/linux/ext3_fs.h @@ -494,6 +494,15 @@ { return container_of(inode, struct ext3_inode_info, vfs_inode); } + +static inline int ext3_valid_inum(struct super_block *sb, unsigned long ino) +{ + return ino == EXT3_ROOT_INO || + ino == EXT3_JOURNAL_INO || + ino == EXT3_RESIZE_INO || + (ino >= EXT3_FIRST_INO(sb) && + ino <= le32_to_cpu(EXT3_SB(sb)->s_es->s_inodes_count)); +} #else /* Assume that user mode programs are passing in an ext3fs superblock, not * a kernel struct super_block. This will allow us to call the feature-test --- linux-source-2.6.15-2.6.15.orig/include/linux/netfilter_ipv6/ip6_tables.h +++ linux-source-2.6.15-2.6.15/include/linux/netfilter_ipv6/ip6_tables.h @@ -474,7 +474,7 @@ extern int ip6t_ext_hdr(u8 nexthdr); /* find specified header and get offset to it */ extern int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset, - u8 target); + int target, unsigned short *fragoff); #define IP6T_ALIGN(s) (((s) + (__alignof__(struct ip6t_entry)-1)) & ~(__alignof__(struct ip6t_entry)-1)) --- linux-source-2.6.15-2.6.15.orig/include/linux/sysctl.h +++ linux-source-2.6.15-2.6.15/include/linux/sysctl.h @@ -524,6 +524,7 @@ NET_IPV6_MAX_DESYNC_FACTOR=15, NET_IPV6_MAX_ADDRESSES=16, NET_IPV6_FORCE_MLD_VERSION=17, + NET_IPV6_ACCEPT_SOURCE_ROUTE=18, __NET_IPV6_MAX }; --- linux-source-2.6.15-2.6.15.orig/include/linux/ide.h +++ linux-source-2.6.15-2.6.15/include/linux/ide.h @@ -589,7 +589,6 @@ unsigned noprobe : 1; /* from: hdx=noprobe */ unsigned removable : 1; /* 1 if need to do check_media_change */ unsigned attach : 1; /* needed for removable devices */ - unsigned is_flash : 1; /* 1 if probed as flash */ unsigned forced_geom : 1; /* 1 if hdx=c,h,s was given at boot */ unsigned no_unmask : 1; /* disallow setting unmask bit */ unsigned no_io_32bit : 1; /* disallow enabling 32bit I/O */ --- linux-source-2.6.15-2.6.15.orig/include/linux/topology.h +++ linux-source-2.6.15-2.6.15/include/linux/topology.h @@ -158,6 +158,15 @@ .nr_balance_failed = 0, \ } +#ifdef CONFIG_SCHED_MC +#ifndef SD_MC_INIT +/* for now its same as SD_CPU_INIT. + * TBD: Tune Domain parameters! + */ +#define SD_MC_INIT SD_CPU_INIT +#endif +#endif + #ifdef CONFIG_NUMA #ifndef SD_NODE_INIT #error Please define an appropriate SD_NODE_INIT in include/asm/topology.h!!! --- linux-source-2.6.15-2.6.15.orig/include/linux/squashfs_fs_sb.h +++ linux-source-2.6.15-2.6.15/include/linux/squashfs_fs_sb.h @@ -4,7 +4,7 @@ * Squashfs * * Copyright (c) 2002, 2003, 2004, 2005, 2006 - * Phillip Lougher + * Phillip Lougher * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -64,10 +64,11 @@ wait_queue_head_t waitq; wait_queue_head_t fragment_wait_queue; struct meta_index *meta_index; - struct inode *(*iget)(struct super_block *s, squashfs_inode_t \ + z_stream stream; + struct inode *(*iget)(struct super_block *s, squashfs_inode_t inode); - long long (*read_blocklist)(struct inode *inode, int \ - index, int readahead_blks, char *block_list, \ + long long (*read_blocklist)(struct inode *inode, int + index, int readahead_blks, char *block_list, unsigned short **block_p, unsigned int *bsize); int (*read_fragment_index_table)(struct super_block *s); }; --- linux-source-2.6.15-2.6.15.orig/include/linux/squashfs_fs_i.h +++ linux-source-2.6.15-2.6.15/include/linux/squashfs_fs_i.h @@ -4,7 +4,7 @@ * Squashfs * * Copyright (c) 2002, 2003, 2004, 2005, 2006 - * Phillip Lougher + * Phillip Lougher * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License --- linux-source-2.6.15-2.6.15.orig/include/asm-powerpc/iommu.h +++ linux-source-2.6.15-2.6.15/include/asm-powerpc/iommu.h @@ -88,17 +88,18 @@ extern struct iommu_table *iommu_init_table(struct iommu_table * tbl); extern int iommu_map_sg(struct device *dev, struct iommu_table *tbl, - struct scatterlist *sglist, int nelems, + struct scatterlist *sglist, int nelems, unsigned long mask, enum dma_data_direction direction); extern void iommu_unmap_sg(struct iommu_table *tbl, struct scatterlist *sglist, int nelems, enum dma_data_direction direction); extern void *iommu_alloc_coherent(struct iommu_table *tbl, size_t size, - dma_addr_t *dma_handle, gfp_t flag); + dma_addr_t *dma_handle, unsigned long mask, gfp_t flag); extern void iommu_free_coherent(struct iommu_table *tbl, size_t size, void *vaddr, dma_addr_t dma_handle); extern dma_addr_t iommu_map_single(struct iommu_table *tbl, void *vaddr, - size_t size, enum dma_data_direction direction); + size_t size, unsigned long mask, + enum dma_data_direction direction); extern void iommu_unmap_single(struct iommu_table *tbl, dma_addr_t dma_handle, size_t size, enum dma_data_direction direction); --- linux-source-2.6.15-2.6.15.orig/include/sound/ymfpci.h +++ linux-source-2.6.15-2.6.15/include/sound/ymfpci.h @@ -270,9 +270,10 @@ snd_ymfpci_pcm_type_t type; snd_pcm_substream_t *substream; ymfpci_voice_t *voices[2]; /* playback only */ - unsigned int running: 1; - unsigned int output_front: 1; - unsigned int output_rear: 1; + unsigned int running: 1, + output_front: 1, + output_rear: 1, + swap_rear: 1; unsigned int update_pcm_vol; u32 period_size; /* cached from runtime->period_size */ u32 buffer_size; /* cached from runtime->buffer_size */ @@ -345,6 +346,7 @@ snd_kcontrol_t *spdif_pcm_ctl; int mode_dup4ch; int rear_opened; + int rear_swap; int spdif_opened; struct { u16 left; @@ -370,11 +372,13 @@ ymfpci_t ** rcodec); void snd_ymfpci_free_gameport(ymfpci_t *chip); +int snd_ymfpci_suspend(struct pci_dev *pci, pm_message_t state); +int snd_ymfpci_resume(struct pci_dev *pci); int snd_ymfpci_pcm(ymfpci_t *chip, int device, snd_pcm_t **rpcm); int snd_ymfpci_pcm2(ymfpci_t *chip, int device, snd_pcm_t **rpcm); int snd_ymfpci_pcm_spdif(ymfpci_t *chip, int device, snd_pcm_t **rpcm); int snd_ymfpci_pcm_4ch(ymfpci_t *chip, int device, snd_pcm_t **rpcm); -int snd_ymfpci_mixer(ymfpci_t *chip, int rear_switch); +int snd_ymfpci_mixer(ymfpci_t *chip, int rear_switch, int rear_swap); int snd_ymfpci_timer(ymfpci_t *chip, int device); #endif /* __SOUND_YMFPCI_H */ --- linux-source-2.6.15-2.6.15.orig/include/sound/cs46xx.h +++ linux-source-2.6.15-2.6.15/include/sound/cs46xx.h @@ -1729,6 +1729,8 @@ struct pci_dev *pci, int external_amp, int thinkpad, cs46xx_t **rcodec); +int snd_cs46xx_suspend(struct pci_dev *pci, pm_message_t state); +int snd_cs46xx_resume(struct pci_dev *pci); int snd_cs46xx_pcm(cs46xx_t *chip, int device, snd_pcm_t **rpcm); int snd_cs46xx_pcm_rear(cs46xx_t *chip, int device, snd_pcm_t **rpcm); --- linux-source-2.6.15-2.6.15.orig/include/asm-x86_64/i387.h +++ linux-source-2.6.15-2.6.15/include/asm-x86_64/i387.h @@ -72,6 +72,23 @@ #define set_fpu_swd(t,val) ((t)->thread.i387.fxsave.swd = (val)) #define set_fpu_fxsr_twd(t,val) ((t)->thread.i387.fxsave.twd = (val)) +#define X87_FSW_ES (1 << 7) /* Exception Summary */ + +/* AMD CPUs don't save/restore FDP/FIP/FOP unless an exception + is pending. Clear the x87 state here by setting it to fixed + values. The kernel data segment can be sometimes 0 and sometimes + new user value. Both should be ok. + Use the PDA as safe address because it should be already in L1. */ +static inline void clear_fpu_state(struct i387_fxsave_struct *fx) +{ + if (unlikely(fx->swd & X87_FSW_ES)) + asm volatile("fnclex"); + alternative_input(ASM_NOP8 ASM_NOP2, + " emms\n" /* clear stack tags */ + " fildl %%gs:0", /* load to clear state */ + X86_FEATURE_FXSAVE_LEAK); +} + static inline int restore_fpu_checking(struct i387_fxsave_struct *fx) { int err; @@ -109,9 +126,40 @@ : [fx] "r" (fx), "0" (0)); if (unlikely(err)) __clear_user(fx, sizeof(struct i387_fxsave_struct)); + /* No need to clear here because the caller clears USED_MATH */ return err; } +static inline void __fxsave_clear(struct task_struct *tsk) +{ + /* Using "rex64; fxsave %0" is broken because, if the memory operand + uses any extended registers for addressing, a second REX prefix + will be generated (to the assembler, rex64 followed by semicolon + is a separate instruction), and hence the 64-bitness is lost. */ +#if 0 + /* Using "fxsaveq %0" would be the ideal choice, but is only supported + starting with gas 2.16. */ + __asm__ __volatile__("fxsaveq %0" + : "=m" (tsk->thread.i387.fxsave)); +#elif 0 + /* Using, as a workaround, the properly prefixed form below isn't + accepted by any binutils version so far released, complaining that + the same type of prefix is used twice if an extended register is + needed for addressing (fix submitted to mainline 2005-11-21). */ + __asm__ __volatile__("rex64/fxsave %0" + : "=m" (tsk->thread.i387.fxsave)); +#else + /* This, however, we can work around by forcing the compiler to select + an addressing mode that doesn't require extended registers. */ + __asm__ __volatile__("rex64/fxsave %P2(%1)" + : "=m" (tsk->thread.i387.fxsave) + : "cdaSDb" (tsk), + "i" (offsetof(__typeof__(*tsk), + thread.i387.fxsave))); +#endif + clear_fpu_state(&tsk->thread.i387.fxsave); +} + static inline void kernel_fpu_begin(void) { struct thread_info *me = current_thread_info(); --- linux-source-2.6.15-2.6.15.orig/include/asm-x86_64/proto.h +++ linux-source-2.6.15-2.6.15/include/asm-x86_64/proto.h @@ -92,7 +92,9 @@ extern int unhandled_signal(struct task_struct *tsk, int sig); extern void select_idle_routine(const struct cpuinfo_x86 *c); -extern void swiotlb_init(void); + +extern void gart_parse_options(char *); +extern void __init no_iommu_init(void); extern unsigned long table_start, table_end; @@ -106,12 +108,17 @@ extern int acpi_ht; extern int acpi_disabled; +#ifdef CONFIG_GART_IOMMU extern int fallback_aper_order; extern int fallback_aper_force; extern int iommu_aperture; -extern int iommu_aperture_disabled; extern int iommu_aperture_allowed; +extern int iommu_aperture_disabled; extern int fix_aperture; +#else +#define iommu_aperture 0 +#define iommu_aperture_allowed 0 +#endif extern int force_iommu; extern int reboot_force; --- linux-source-2.6.15-2.6.15.orig/include/asm-x86_64/smp.h +++ linux-source-2.6.15-2.6.15/include/asm-x86_64/smp.h @@ -55,6 +55,7 @@ extern cpumask_t cpu_core_map[NR_CPUS]; extern u8 phys_proc_id[NR_CPUS]; extern u8 cpu_core_id[NR_CPUS]; +extern u8 cpu_llc_id[NR_CPUS]; #define SMP_TRAMPOLINE_BASE 0x6000 --- linux-source-2.6.15-2.6.15.orig/include/asm-x86_64/gart-mapping.h +++ linux-source-2.6.15-2.6.15/include/asm-x86_64/gart-mapping.h @@ -0,0 +1,16 @@ +#ifndef _X8664_GART_MAPPING_H +#define _X8664_GART_MAPPING_H 1 + +#include +#include + +struct device; + +extern void* +gart_alloc_coherent(struct device *dev, size_t size, + dma_addr_t *dma_handle, gfp_t gfp); + +extern int +gart_dma_supported(struct device *hwdev, u64 mask); + +#endif /* _X8664_GART_MAPPING_H */ --- linux-source-2.6.15-2.6.15.orig/include/asm-x86_64/apic.h +++ linux-source-2.6.15-2.6.15/include/asm-x86_64/apic.h @@ -113,6 +113,12 @@ extern void setup_threshold_lvt(unsigned long lvt_off); +void smp_send_timer_broadcast_ipi(void); +void switch_APIC_timer_to_ipi(void *cpumask); +void switch_ipi_to_APIC_timer(void *cpumask); + +#define ARCH_APICTIMER_STOPS_ON_C3 1 + #endif /* CONFIG_X86_LOCAL_APIC */ extern unsigned boot_cpu_id; --- linux-source-2.6.15-2.6.15.orig/include/asm-x86_64/dma-mapping.h +++ linux-source-2.6.15-2.6.15/include/asm-x86_64/dma-mapping.h @@ -12,155 +12,176 @@ #include #include -extern dma_addr_t bad_dma_address; -#define dma_mapping_error(x) \ - (swiotlb ? swiotlb_dma_mapping_error(x) : ((x) == bad_dma_address)) - -void *dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, - gfp_t gfp); -void dma_free_coherent(struct device *dev, size_t size, void *vaddr, - dma_addr_t dma_handle); +struct dma_mapping_ops { + int (*mapping_error)(dma_addr_t dma_addr); + void* (*alloc_coherent)(struct device *dev, size_t size, + dma_addr_t *dma_handle, gfp_t gfp); + void (*free_coherent)(struct device *dev, size_t size, + void *vaddr, dma_addr_t dma_handle); + dma_addr_t (*map_single)(struct device *hwdev, void *ptr, + size_t size, int direction); + /* like map_single, but doesn't check the device mask */ + dma_addr_t (*map_simple)(struct device *hwdev, char *ptr, + size_t size, int direction); + void (*unmap_single)(struct device *dev, dma_addr_t addr, + size_t size, int direction); + void (*sync_single_for_cpu)(struct device *hwdev, + dma_addr_t dma_handle, size_t size, + int direction); + void (*sync_single_for_device)(struct device *hwdev, + dma_addr_t dma_handle, size_t size, + int direction); + void (*sync_single_range_for_cpu)(struct device *hwdev, + dma_addr_t dma_handle, unsigned long offset, + size_t size, int direction); + void (*sync_single_range_for_device)(struct device *hwdev, + dma_addr_t dma_handle, unsigned long offset, + size_t size, int direction); + void (*sync_sg_for_cpu)(struct device *hwdev, + struct scatterlist *sg, int nelems, + int direction); + void (*sync_sg_for_device)(struct device *hwdev, + struct scatterlist *sg, int nelems, + int direction); + int (*map_sg)(struct device *hwdev, struct scatterlist *sg, + int nents, int direction); + void (*unmap_sg)(struct device *hwdev, + struct scatterlist *sg, int nents, + int direction); + int (*dma_supported)(struct device *hwdev, u64 mask); + int is_phys; +}; -#ifdef CONFIG_GART_IOMMU +extern dma_addr_t bad_dma_address; +extern struct dma_mapping_ops* dma_ops; +extern int iommu_merge; -extern dma_addr_t dma_map_single(struct device *hwdev, void *ptr, size_t size, - int direction); -extern void dma_unmap_single(struct device *dev, dma_addr_t addr,size_t size, - int direction); +static inline int dma_mapping_error(dma_addr_t dma_addr) +{ + if (dma_ops->mapping_error) + return dma_ops->mapping_error(dma_addr); -#else + return (dma_addr == bad_dma_address); +} -/* No IOMMU */ +extern void *dma_alloc_coherent(struct device *dev, size_t size, + dma_addr_t *dma_handle, gfp_t gfp); +extern void dma_free_coherent(struct device *dev, size_t size, void *vaddr, + dma_addr_t dma_handle); -static inline dma_addr_t dma_map_single(struct device *hwdev, void *ptr, - size_t size, int direction) +static inline dma_addr_t +dma_map_single(struct device *hwdev, void *ptr, size_t size, + int direction) { - dma_addr_t addr; - - if (direction == DMA_NONE) - out_of_line_bug(); - addr = virt_to_bus(ptr); - - if ((addr+size) & ~*hwdev->dma_mask) - out_of_line_bug(); - return addr; + return dma_ops->map_single(hwdev, ptr, size, direction); } -static inline void dma_unmap_single(struct device *hwdev, dma_addr_t dma_addr, - size_t size, int direction) +static inline void +dma_unmap_single(struct device *dev, dma_addr_t addr,size_t size, + int direction) { - if (direction == DMA_NONE) - out_of_line_bug(); - /* Nothing to do */ + dma_ops->unmap_single(dev, addr, size, direction); } -#endif - #define dma_map_page(dev,page,offset,size,dir) \ dma_map_single((dev), page_address(page)+(offset), (size), (dir)) -static inline void dma_sync_single_for_cpu(struct device *hwdev, - dma_addr_t dma_handle, - size_t size, int direction) -{ - if (direction == DMA_NONE) - out_of_line_bug(); - - if (swiotlb) - return swiotlb_sync_single_for_cpu(hwdev,dma_handle,size,direction); +#define dma_unmap_page dma_unmap_single +static inline void +dma_sync_single_for_cpu(struct device *hwdev, dma_addr_t dma_handle, + size_t size, int direction) +{ + if (dma_ops->sync_single_for_cpu) + dma_ops->sync_single_for_cpu(hwdev, dma_handle, size, + direction); flush_write_buffers(); } -static inline void dma_sync_single_for_device(struct device *hwdev, - dma_addr_t dma_handle, - size_t size, int direction) +static inline void +dma_sync_single_for_device(struct device *hwdev, dma_addr_t dma_handle, + size_t size, int direction) { - if (direction == DMA_NONE) - out_of_line_bug(); - - if (swiotlb) - return swiotlb_sync_single_for_device(hwdev,dma_handle,size,direction); - + if (dma_ops->sync_single_for_device) + dma_ops->sync_single_for_device(hwdev, dma_handle, size, + direction); flush_write_buffers(); } -static inline void dma_sync_single_range_for_cpu(struct device *hwdev, - dma_addr_t dma_handle, - unsigned long offset, - size_t size, int direction) +static inline void +dma_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dma_handle, + unsigned long offset, size_t size, int direction) { - if (direction == DMA_NONE) - out_of_line_bug(); - - if (swiotlb) - return swiotlb_sync_single_range_for_cpu(hwdev,dma_handle,offset,size,direction); + if (dma_ops->sync_single_range_for_cpu) { + dma_ops->sync_single_range_for_cpu(hwdev, dma_handle, offset, size, direction); + } flush_write_buffers(); } -static inline void dma_sync_single_range_for_device(struct device *hwdev, - dma_addr_t dma_handle, - unsigned long offset, - size_t size, int direction) +static inline void +dma_sync_single_range_for_device(struct device *hwdev, dma_addr_t dma_handle, + unsigned long offset, size_t size, int direction) { - if (direction == DMA_NONE) - out_of_line_bug(); - - if (swiotlb) - return swiotlb_sync_single_range_for_device(hwdev,dma_handle,offset,size,direction); + if (dma_ops->sync_single_range_for_device) + dma_ops->sync_single_range_for_device(hwdev, dma_handle, + offset, size, direction); flush_write_buffers(); } -static inline void dma_sync_sg_for_cpu(struct device *hwdev, - struct scatterlist *sg, - int nelems, int direction) +static inline void +dma_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg, + int nelems, int direction) { - if (direction == DMA_NONE) - out_of_line_bug(); - - if (swiotlb) - return swiotlb_sync_sg_for_cpu(hwdev,sg,nelems,direction); - + if (dma_ops->sync_sg_for_cpu) + dma_ops->sync_sg_for_cpu(hwdev, sg, nelems, direction); flush_write_buffers(); } -static inline void dma_sync_sg_for_device(struct device *hwdev, - struct scatterlist *sg, - int nelems, int direction) +static inline void +dma_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, + int nelems, int direction) { - if (direction == DMA_NONE) - out_of_line_bug(); - - if (swiotlb) - return swiotlb_sync_sg_for_device(hwdev,sg,nelems,direction); + if (dma_ops->sync_sg_for_device) { + dma_ops->sync_sg_for_device(hwdev, sg, nelems, direction); + } flush_write_buffers(); } -extern int dma_map_sg(struct device *hwdev, struct scatterlist *sg, - int nents, int direction); -extern void dma_unmap_sg(struct device *hwdev, struct scatterlist *sg, - int nents, int direction); +static inline int +dma_map_sg(struct device *hwdev, struct scatterlist *sg, int nents, int direction) +{ + return dma_ops->map_sg(hwdev, sg, nents, direction); +} -#define dma_unmap_page dma_unmap_single +static inline void +dma_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents, + int direction) +{ + dma_ops->unmap_sg(hwdev, sg, nents, direction); +} extern int dma_supported(struct device *hwdev, u64 mask); -extern int dma_get_cache_alignment(void); -#define dma_is_consistent(h) 1 -static inline int dma_set_mask(struct device *dev, u64 mask) +/* same for gart, swiotlb, and nommu */ +static inline int dma_get_cache_alignment(void) { - if (!dev->dma_mask || !dma_supported(dev, mask)) - return -EIO; - *dev->dma_mask = mask; - return 0; + return boot_cpu_data.x86_clflush_size; } -static inline void dma_cache_sync(void *vaddr, size_t size, enum dma_data_direction dir) +#define dma_is_consistent(h) 1 + +extern int dma_set_mask(struct device *dev, u64 mask); + +static inline void +dma_cache_sync(void *vaddr, size_t size, enum dma_data_direction dir) { flush_write_buffers(); } -#endif +extern struct device fallback_dev; +extern int panic_on_overflow; + +#endif /* _X8664_DMA_MAPPING_H */ --- linux-source-2.6.15-2.6.15.orig/include/asm-x86_64/swiotlb.h +++ linux-source-2.6.15-2.6.15/include/asm-x86_64/swiotlb.h @@ -3,10 +3,14 @@ #include +#include + /* SWIOTLB interface */ -extern dma_addr_t swiotlb_map_single(struct device *hwdev, void *ptr, size_t size, - int dir); +extern dma_addr_t swiotlb_map_single(struct device *hwdev, void *ptr, + size_t size, int dir); +extern void *swiotlb_alloc_coherent(struct device *hwdev, size_t size, + dma_addr_t *dma_handle, gfp_t flags); extern void swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr, size_t size, int dir); extern void swiotlb_sync_single_for_cpu(struct device *hwdev, @@ -34,10 +38,10 @@ extern void swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents, int direction); extern int swiotlb_dma_mapping_error(dma_addr_t dma_addr); -extern void *swiotlb_alloc_coherent (struct device *hwdev, size_t size, - dma_addr_t *dma_handle, gfp_t flags); extern void swiotlb_free_coherent (struct device *hwdev, size_t size, void *vaddr, dma_addr_t dma_handle); +extern int swiotlb_dma_supported(struct device *hwdev, u64 mask); +extern void swiotlb_init(void); #ifdef CONFIG_SWIOTLB extern int swiotlb; @@ -45,4 +49,6 @@ #define swiotlb 0 #endif -#endif +extern void pci_swiotlb_init(void); + +#endif /* _ASM_SWTIOLB_H */ --- linux-source-2.6.15-2.6.15.orig/include/asm-x86_64/processor.h +++ linux-source-2.6.15-2.6.15/include/asm-x86_64/processor.h @@ -20,6 +20,7 @@ #include #include #include +#include #define TF_MASK 0x00000100 #define IF_MASK 0x00000200 @@ -65,6 +66,9 @@ __u32 x86_power; __u32 extended_cpuid_level; /* Max extended CPUID function supported */ unsigned long loops_per_jiffy; +#ifdef CONFIG_SMP + cpumask_t llc_shared_map; /* cpus sharing the last level cache */ +#endif __u8 apicid; __u8 booted_cores; /* number of cores as seen by OS */ } ____cacheline_aligned; --- linux-source-2.6.15-2.6.15.orig/include/asm-x86_64/pci.h +++ linux-source-2.6.15-2.6.15/include/asm-x86_64/pci.h @@ -42,18 +42,20 @@ #include #include #include +#include /* for have_iommu */ extern int iommu_setup(char *opt); -#ifdef CONFIG_GART_IOMMU /* The PCI address space does equal the physical memory * address space. The networking and block device layers use * this boolean for bounce buffer decisions * - * On AMD64 it mostly equals, but we set it to zero to tell some subsystems - * that an IOMMU is available. + * On AMD64 it mostly equals, but we set it to zero if a hardware + * IOMMU (gart) of sotware IOMMU (swiotlb) is available. */ -#define PCI_DMA_BUS_IS_PHYS (no_iommu ? 1 : 0) +#define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys) + +#ifdef CONFIG_GART_IOMMU /* * x86-64 always supports DAC, but sometimes it is useful to force @@ -79,7 +81,6 @@ #else /* No IOMMU */ -#define PCI_DMA_BUS_IS_PHYS 1 #define pci_dac_dma_supported(pci_dev, mask) 1 #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) --- linux-source-2.6.15-2.6.15.orig/include/asm-x86_64/system.h +++ linux-source-2.6.15-2.6.15/include/asm-x86_64/system.h @@ -14,12 +14,13 @@ #define __RESTORE(reg,offset) "movq (14-" #offset ")*8(%%rsp),%%" #reg "\n\t" /* frame pointer must be last for get_wchan */ -#define SAVE_CONTEXT "pushfq ; pushq %%rbp ; movq %%rsi,%%rbp\n\t" -#define RESTORE_CONTEXT "movq %%rbp,%%rsi ; popq %%rbp ; popfq\n\t" +#define SAVE_CONTEXT "pushf ; pushq %%rbp ; movq %%rsi,%%rbp\n\t" +#define RESTORE_CONTEXT "movq %%rbp,%%rsi ; popq %%rbp ; popf\t" #define __EXTRA_CLOBBER \ ,"rcx","rbx","rdx","r8","r9","r10","r11","r12","r13","r14","r15" +/* Save restore flags to clear handle leaking NT */ #define switch_to(prev,next,last) \ asm volatile(SAVE_CONTEXT \ "movq %%rsp,%P[threadrsp](%[prev])\n\t" /* save RSP */ \ --- linux-source-2.6.15-2.6.15.orig/include/asm-x86_64/topology.h +++ linux-source-2.6.15-2.6.15/include/asm-x86_64/topology.h @@ -60,4 +60,6 @@ #include +extern cpumask_t cpu_coregroup_map(int cpu); + #endif --- linux-source-2.6.15-2.6.15.orig/include/asm-x86_64/cpufeature.h +++ linux-source-2.6.15-2.6.15/include/asm-x86_64/cpufeature.h @@ -63,7 +63,9 @@ #define X86_FEATURE_CENTAUR_MCR (3*32+ 3) /* Centaur MCRs (= MTRRs) */ #define X86_FEATURE_K8_C (3*32+ 4) /* C stepping K8 */ #define X86_FEATURE_CONSTANT_TSC (3*32+5) /* TSC runs at constant rate */ -#define X86_FEATURE_UP (3*32+ 6) /* SMP kernel running on UP */ +#define X86_FEATURE_SYNC_RDTSC (3*32+6) /* RDTSC syncs CPU core */ +#define X86_FEATURE_FXSAVE_LEAK (3*32+7) /* FIP/FOP/FDP leaks through FXSAVE */ +#define X86_FEATURE_UP (3*32+8) /* SMP kernel running on UP */ /* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */ #define X86_FEATURE_XMM3 (4*32+ 0) /* Streaming SIMD Extensions-3 */ --- linux-source-2.6.15-2.6.15.orig/include/net/sctp/sctp.h +++ linux-source-2.6.15-2.6.15/include/net/sctp/sctp.h @@ -403,19 +403,6 @@ return ((head->next != head) && (head->next == head->prev)); } -/* Calculate the size (in bytes) occupied by the data of an iovec. */ -static inline size_t get_user_iov_size(struct iovec *iov, int iovlen) -{ - size_t retval = 0; - - for (; iovlen > 0; --iovlen) { - retval += iov->iov_len; - iov++; - } - - return retval; -} - /* Generate a random jitter in the range of -50% ~ +50% of input RTO. */ static inline __s32 sctp_jitter(__u32 rto) { @@ -459,12 +446,12 @@ * there is room for a param header too. */ #define sctp_walk_params(pos, chunk, member)\ -_sctp_walk_params((pos), (chunk), WORD_ROUND(ntohs((chunk)->chunk_hdr.length)), member) +_sctp_walk_params((pos), (chunk), ntohs((chunk)->chunk_hdr.length), member) #define _sctp_walk_params(pos, chunk, end, member)\ for (pos.v = chunk->member;\ pos.v <= (void *)chunk + end - sizeof(sctp_paramhdr_t) &&\ - pos.v <= (void *)chunk + end - WORD_ROUND(ntohs(pos.p->length)) &&\ + pos.v <= (void *)chunk + end - ntohs(pos.p->length) &&\ ntohs(pos.p->length) >= sizeof(sctp_paramhdr_t);\ pos.v += WORD_ROUND(ntohs(pos.p->length))) @@ -475,7 +462,7 @@ for (err = (sctp_errhdr_t *)((void *)chunk_hdr + \ sizeof(sctp_chunkhdr_t));\ (void *)err <= (void *)chunk_hdr + end - sizeof(sctp_errhdr_t) &&\ - (void *)err <= (void *)chunk_hdr + end - WORD_ROUND(ntohs(err->length)) &&\ + (void *)err <= (void *)chunk_hdr + end - ntohs(err->length) &&\ ntohs(err->length) >= sizeof(sctp_errhdr_t); \ err = (sctp_errhdr_t *)((void *)err + WORD_ROUND(ntohs(err->length)))) --- linux-source-2.6.15-2.6.15.orig/include/net/sctp/sm.h +++ linux-source-2.6.15-2.6.15/include/net/sctp/sm.h @@ -221,8 +221,7 @@ const struct sctp_chunk *, __u32 tsn); struct sctp_chunk *sctp_make_abort_user(const struct sctp_association *, - const struct sctp_chunk *, - const struct msghdr *); + const struct msghdr *, size_t msg_len); struct sctp_chunk *sctp_make_abort_violation(const struct sctp_association *, const struct sctp_chunk *, const __u8 *, --- linux-source-2.6.15-2.6.15.orig/include/net/sctp/structs.h +++ linux-source-2.6.15-2.6.15/include/net/sctp/structs.h @@ -683,6 +683,7 @@ __u8 tsn_gap_acked; /* Is this chunk acked by a GAP ACK? */ __u8 fast_retransmit; /* Is this chunk fast retransmitted? */ __u8 tsn_missing_report; /* Data chunk missing counter. */ + __u8 data_accepted; /* At least 1 chunk in this packet accepted */ }; void sctp_chunk_hold(struct sctp_chunk *); --- linux-source-2.6.15-2.6.15.orig/include/asm-sparc64/dma-mapping.h +++ linux-source-2.6.15-2.6.15/include/asm-sparc64/dma-mapping.h @@ -4,7 +4,146 @@ #include #ifdef CONFIG_PCI -#include + +/* we implement the API below in terms of the existing PCI one, + * so include it */ +#include +/* need struct page definitions */ +#include + +static inline int +dma_supported(struct device *dev, u64 mask) +{ + BUG_ON(dev->bus != &pci_bus_type); + + return pci_dma_supported(to_pci_dev(dev), mask); +} + +static inline int +dma_set_mask(struct device *dev, u64 dma_mask) +{ + BUG_ON(dev->bus != &pci_bus_type); + + return pci_set_dma_mask(to_pci_dev(dev), dma_mask); +} + +static inline void * +dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, + gfp_t flag) +{ + BUG_ON(dev->bus != &pci_bus_type); + + return pci_iommu_ops->alloc_consistent(to_pci_dev(dev), size, dma_handle, flag); +} + +static inline void +dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, + dma_addr_t dma_handle) +{ + BUG_ON(dev->bus != &pci_bus_type); + + pci_free_consistent(to_pci_dev(dev), size, cpu_addr, dma_handle); +} + +static inline dma_addr_t +dma_map_single(struct device *dev, void *cpu_addr, size_t size, + enum dma_data_direction direction) +{ + BUG_ON(dev->bus != &pci_bus_type); + + return pci_map_single(to_pci_dev(dev), cpu_addr, size, (int)direction); +} + +static inline void +dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, + enum dma_data_direction direction) +{ + BUG_ON(dev->bus != &pci_bus_type); + + pci_unmap_single(to_pci_dev(dev), dma_addr, size, (int)direction); +} + +static inline dma_addr_t +dma_map_page(struct device *dev, struct page *page, + unsigned long offset, size_t size, + enum dma_data_direction direction) +{ + BUG_ON(dev->bus != &pci_bus_type); + + return pci_map_page(to_pci_dev(dev), page, offset, size, (int)direction); +} + +static inline void +dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size, + enum dma_data_direction direction) +{ + BUG_ON(dev->bus != &pci_bus_type); + + pci_unmap_page(to_pci_dev(dev), dma_address, size, (int)direction); +} + +static inline int +dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction direction) +{ + BUG_ON(dev->bus != &pci_bus_type); + + return pci_map_sg(to_pci_dev(dev), sg, nents, (int)direction); +} + +static inline void +dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries, + enum dma_data_direction direction) +{ + BUG_ON(dev->bus != &pci_bus_type); + + pci_unmap_sg(to_pci_dev(dev), sg, nhwentries, (int)direction); +} + +static inline void +dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size, + enum dma_data_direction direction) +{ + BUG_ON(dev->bus != &pci_bus_type); + + pci_dma_sync_single_for_cpu(to_pci_dev(dev), dma_handle, + size, (int)direction); +} + +static inline void +dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, size_t size, + enum dma_data_direction direction) +{ + BUG_ON(dev->bus != &pci_bus_type); + + pci_dma_sync_single_for_device(to_pci_dev(dev), dma_handle, + size, (int)direction); +} + +static inline void +dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems, + enum dma_data_direction direction) +{ + BUG_ON(dev->bus != &pci_bus_type); + + pci_dma_sync_sg_for_cpu(to_pci_dev(dev), sg, nelems, (int)direction); +} + +static inline void +dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems, + enum dma_data_direction direction) +{ + BUG_ON(dev->bus != &pci_bus_type); + + pci_dma_sync_sg_for_device(to_pci_dev(dev), sg, nelems, (int)direction); +} + +static inline int +dma_mapping_error(dma_addr_t dma_addr) +{ + return pci_dma_mapping_error(dma_addr); +} + #else struct device; --- linux-source-2.6.15-2.6.15.orig/include/asm-sparc64/pgtable.h +++ linux-source-2.6.15-2.6.15/include/asm-sparc64/pgtable.h @@ -340,7 +340,7 @@ " .section .sun4v_2insn_patch, \"ax\"\n" " .word 661b\n" " andn %0, %4, %0\n" - " or %0, %3, %0\n" + " or %0, %5, %0\n" " .previous\n" : "=r" (val) : "0" (val), "i" (_PAGE_CP_4U | _PAGE_CV_4U), "i" (_PAGE_E_4U), @@ -689,6 +689,23 @@ #define pte_clear(mm,addr,ptep) \ set_pte_at((mm), (addr), (ptep), __pte(0UL)) +#ifdef DCACHE_ALIASING_POSSIBLE +#define __HAVE_ARCH_MOVE_PTE +#define move_pte(pte, prot, old_addr, new_addr) \ +({ \ + pte_t newpte = (pte); \ + if (tlb_type != hypervisor && pte_present(pte)) { \ + unsigned long this_pfn = pte_pfn(pte); \ + \ + if (pfn_valid(this_pfn) && \ + (((old_addr) ^ (new_addr)) & (1 << 13))) \ + flush_dcache_page_all(current->mm, \ + pfn_to_page(this_pfn)); \ + } \ + newpte; \ +}) +#endif + extern pgd_t swapper_pg_dir[2048]; extern pmd_t swapper_low_pmd_dir[2048]; @@ -740,6 +757,8 @@ #define kern_addr_valid(addr) \ (test_bit(__pa((unsigned long)(addr))>>22, sparc64_valid_addr_bitmap)) +extern int page_in_phys_avail(unsigned long paddr); + extern int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from, unsigned long pfn, unsigned long size, pgprot_t prot); --- linux-source-2.6.15-2.6.15.orig/include/asm-sparc64/pci.h +++ linux-source-2.6.15-2.6.15/include/asm-sparc64/pci.h @@ -42,7 +42,7 @@ struct pci_dev; struct pci_iommu_ops { - void *(*alloc_consistent)(struct pci_dev *, size_t, dma_addr_t *); + void *(*alloc_consistent)(struct pci_dev *, size_t, dma_addr_t *, gfp_t); void (*free_consistent)(struct pci_dev *, size_t, void *, dma_addr_t); dma_addr_t (*map_single)(struct pci_dev *, void *, size_t, int); void (*unmap_single)(struct pci_dev *, dma_addr_t, size_t, int); @@ -59,7 +59,7 @@ */ static inline void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size, dma_addr_t *dma_handle) { - return pci_iommu_ops->alloc_consistent(hwdev, size, dma_handle); + return pci_iommu_ops->alloc_consistent(hwdev, size, dma_handle, GFP_ATOMIC); } /* Free and unmap a consistent DMA buffer. --- linux-source-2.6.15-2.6.15.orig/include/asm-sparc64/mman.h +++ linux-source-2.6.15-2.6.15/include/asm-sparc64/mman.h @@ -59,4 +59,12 @@ #define MAP_ANON MAP_ANONYMOUS #define MAP_FILE 0 +#ifdef __KERNEL__ +#ifndef __ASSEMBLY__ +#define arch_mmap_check sparc64_mmap_check +int sparc64_mmap_check(unsigned long addr, unsigned long len, + unsigned long flags); +#endif +#endif + #endif /* __SPARC64_MMAN_H__ */ --- linux-source-2.6.15-2.6.15.orig/include/asm-sparc64/sfp-machine.h +++ linux-source-2.6.15-2.6.15/include/asm-sparc64/sfp-machine.h @@ -34,7 +34,7 @@ #define _FP_MUL_MEAT_D(R,X,Y) \ _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_D,R,X,Y,umul_ppmm) #define _FP_MUL_MEAT_Q(R,X,Y) \ - _FP_MUL_MEAT_2_wide_3mul(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) + _FP_MUL_MEAT_2_wide(_FP_WFRACBITS_Q,R,X,Y,umul_ppmm) #define _FP_DIV_MEAT_S(R,X,Y) _FP_DIV_MEAT_1_imm(S,R,X,Y,_FP_DIV_HELP_imm) #define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_1_udiv_norm(D,R,X,Y) --- linux-source-2.6.15-2.6.15.orig/include/asm-parisc/spinlock.h +++ linux-source-2.6.15-2.6.15/include/asm-parisc/spinlock.h @@ -144,4 +144,13 @@ return rw->counter < 0; } +/* + * write_can_lock - would write_trylock() succeed? + * @lock: the rwlock in question. + */ +static __inline__ int __raw_write_can_lock(raw_rwlock_t *rw) +{ + return !rw->counter; +} + #endif /* __ASM_SPINLOCK_H */ --- linux-source-2.6.15-2.6.15.orig/include/asm-mips/pgtable.h +++ linux-source-2.6.15-2.6.15/include/asm-mips/pgtable.h @@ -70,7 +70,15 @@ #define ZERO_PAGE(vaddr) \ (virt_to_page(empty_zero_page + (((unsigned long)(vaddr)) & zero_page_mask))) -#define __HAVE_ARCH_MULTIPLE_ZERO_PAGE +#define __HAVE_ARCH_MOVE_PTE +#define move_pte(pte, prot, old_addr, new_addr) \ +({ \ + pte_t newpte = (pte); \ + if (pte_present(pte) && pfn_valid(pte_pfn(pte)) && \ + pte_page(pte) == ZERO_PAGE(old_addr)) \ + newpte = mk_pte(ZERO_PAGE(new_addr), (prot)); \ + newpte; \ +}) extern void paging_init(void); --- linux-source-2.6.15-2.6.15.orig/include/asm-sparc/mman.h +++ linux-source-2.6.15-2.6.15/include/asm-sparc/mman.h @@ -59,4 +59,12 @@ #define MAP_ANON MAP_ANONYMOUS #define MAP_FILE 0 +#ifdef __KERNEL__ +#ifndef __ASSEMBLY__ +#define arch_mmap_check sparc_mmap_check +int sparc_mmap_check(unsigned long addr, unsigned long len, + unsigned long flags); +#endif +#endif + #endif /* __SPARC_MMAN_H__ */ --- linux-source-2.6.15-2.6.15.orig/include/asm-i386/i387.h +++ linux-source-2.6.15-2.6.15/include/asm-i386/i387.h @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -38,18 +39,39 @@ extern void kernel_fpu_begin(void); #define kernel_fpu_end() do { stts(); preempt_enable(); } while(0) +/* We need a safe address that is cheap to find and that is already + in L1 during context switch. The best choices are unfortunately + different for UP and SMP */ +#ifdef CONFIG_SMP +#define safe_address (__per_cpu_offset[0]) +#else +#define safe_address (kstat_cpu(0).cpustat.user) +#endif + /* * These must be called with preempt disabled */ static inline void __save_init_fpu( struct task_struct *tsk ) { + /* Use more nops than strictly needed in case the compiler + varies code */ alternative_input( - "fnsave %1 ; fwait ;" GENERIC_NOP2, - "fxsave %1 ; fnclex", + "fnsave %[fx] ;fwait;" GENERIC_NOP8 GENERIC_NOP4, + "fxsave %[fx]\n" + "bt $7,%[fsw] ; jnc 1f ; fnclex\n1:", X86_FEATURE_FXSR, - "m" (tsk->thread.i387.fxsave) - :"memory"); - tsk->thread_info->status &= ~TS_USEDFPU; + [fx] "m" (tsk->thread.i387.fxsave), + [fsw] "m" (tsk->thread.i387.fxsave.swd) : "memory"); + /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception + is pending. Clear the x87 state here by setting it to fixed + values. safe_address is a random variable that should be in L1 */ + alternative_input( + GENERIC_NOP8 GENERIC_NOP2, + "emms\n\t" /* clear stack tags */ + "fildl %[addr]", /* set F?P to defined value */ + X86_FEATURE_FXSAVE_LEAK, + [addr] "m" (safe_address)); + task_thread_info(tsk)->status &= ~TS_USEDFPU; } #define __unlazy_fpu( tsk ) do { \ --- linux-source-2.6.15-2.6.15.orig/include/asm-i386/apic.h +++ linux-source-2.6.15-2.6.15/include/asm-i386/apic.h @@ -138,6 +138,11 @@ extern int disable_timer_pin_1; +void smp_send_timer_broadcast_ipi(struct pt_regs *regs); +void switch_APIC_timer_to_ipi(void *cpumask); +void switch_ipi_to_APIC_timer(void *cpumask); +#define ARCH_APICTIMER_STOPS_ON_C3 1 + #else /* !CONFIG_X86_LOCAL_APIC */ static inline void lapic_shutdown(void) { } --- linux-source-2.6.15-2.6.15.orig/include/asm-i386/processor.h +++ linux-source-2.6.15-2.6.15/include/asm-i386/processor.h @@ -20,6 +20,7 @@ #include #include #include +#include /* flag for disabling the tsc */ extern int tsc_disable; @@ -65,6 +66,9 @@ int f00f_bug; int coma_bug; unsigned long loops_per_jiffy; +#ifdef CONFIG_SMP + cpumask_t llc_shared_map; /* cpus sharing the last level cache */ +#endif unsigned char x86_max_cores; /* cpuid returned max cores value */ unsigned char booted_cores; /* number of cores as seen by OS */ unsigned char apicid; @@ -101,6 +105,7 @@ extern int phys_proc_id[NR_CPUS]; extern int cpu_core_id[NR_CPUS]; +extern int cpu_llc_id[NR_CPUS]; extern char ignore_fpu_irq; extern void identify_cpu(struct cpuinfo_x86 *); --- linux-source-2.6.15-2.6.15.orig/include/asm-i386/system.h +++ linux-source-2.6.15-2.6.15/include/asm-i386/system.h @@ -12,9 +12,14 @@ struct task_struct; /* one of the stranger aspects of C forward declarations.. */ extern struct task_struct * FASTCALL(__switch_to(struct task_struct *prev, struct task_struct *next)); +/* + * Saving eflags is important. It switches not only IOPL between tasks, + * it also protects other tasks from NT leaking through sysenter etc. + */ #define switch_to(prev,next,last) do { \ unsigned long esi,edi; \ - asm volatile("pushl %%ebp\n\t" \ + asm volatile("pushfl\n\t" /* Save flags */ \ + "pushl %%ebp\n\t" \ "movl %%esp,%0\n\t" /* save ESP */ \ "movl %5,%%esp\n\t" /* restore ESP */ \ "movl $1f,%1\n\t" /* save EIP */ \ @@ -22,6 +27,7 @@ "jmp __switch_to\n" \ "1:\t" \ "popl %%ebp\n\t" \ + "popfl" \ :"=m" (prev->thread.esp),"=m" (prev->thread.eip), \ "=a" (last),"=S" (esi),"=D" (edi) \ :"m" (next->thread.esp),"m" (next->thread.eip), \ --- linux-source-2.6.15-2.6.15.orig/include/asm-i386/topology.h +++ linux-source-2.6.15-2.6.15/include/asm-i386/topology.h @@ -104,4 +104,6 @@ #endif /* CONFIG_NUMA */ +extern cpumask_t cpu_coregroup_map(int cpu); + #endif /* _ASM_I386_TOPOLOGY_H */ --- linux-source-2.6.15-2.6.15.orig/include/asm-i386/cpufeature.h +++ linux-source-2.6.15-2.6.15/include/asm-i386/cpufeature.h @@ -69,7 +69,9 @@ #define X86_FEATURE_K7 (3*32+ 5) /* Athlon */ #define X86_FEATURE_P3 (3*32+ 6) /* P3 */ #define X86_FEATURE_P4 (3*32+ 7) /* P4 */ -#define X86_FEATURE_UP (3*32+ 8) /* SMP kernel running on UP */ +#define X86_FEATURE_CONSTANT_TSC (3*32+ 8) /* TSC ticks at a constant rate */ +#define X86_FEATURE_UP (3*32+ 9) /* smp kernel running on up */ +#define X86_FEATURE_FXSAVE_LEAK (3*32+10) /* FXSAVE leaks FOP/FIP/FOP */ /* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */ #define X86_FEATURE_XMM3 (4*32+ 0) /* Streaming SIMD Extensions-3 */ --- linux-source-2.6.15-2.6.15.orig/include/asm-i386/mpspec_def.h +++ linux-source-2.6.15-2.6.15/include/asm-i386/mpspec_def.h @@ -75,7 +75,7 @@ { unsigned char mpc_type; unsigned char mpc_busid; - unsigned char mpc_bustype[6] __attribute((packed)); + unsigned char mpc_bustype[6]; }; /* List of Bus Type string values, Intel MP Spec. */ --- linux-source-2.6.15-2.6.15.orig/include/asm-ia64/mman.h +++ linux-source-2.6.15-2.6.15/include/asm-ia64/mman.h @@ -48,4 +48,12 @@ #define MAP_ANON MAP_ANONYMOUS #define MAP_FILE 0 +#ifdef __KERNEL__ +#ifndef __ASSEMBLY__ +#define arch_mmap_check ia64_mmap_check +int ia64_mmap_check(unsigned long addr, unsigned long len, + unsigned long flags); +#endif +#endif + #endif /* _ASM_IA64_MMAN_H */ --- linux-source-2.6.15-2.6.15.orig/include/asm-generic/pgtable.h +++ linux-source-2.6.15-2.6.15/include/asm-generic/pgtable.h @@ -159,17 +159,8 @@ #define lazy_mmu_prot_update(pte) do { } while (0) #endif -#ifndef __HAVE_ARCH_MULTIPLE_ZERO_PAGE +#ifndef __HAVE_ARCH_MOVE_PTE #define move_pte(pte, prot, old_addr, new_addr) (pte) -#else -#define move_pte(pte, prot, old_addr, new_addr) \ -({ \ - pte_t newpte = (pte); \ - if (pte_present(pte) && pfn_valid(pte_pfn(pte)) && \ - pte_page(pte) == ZERO_PAGE(old_addr)) \ - newpte = mk_pte(ZERO_PAGE(new_addr), (prot)); \ - newpte; \ -}) #endif /* --- linux-source-2.6.15-2.6.15.orig/lib/swiotlb.c +++ linux-source-2.6.15-2.6.15/lib/swiotlb.c @@ -464,7 +464,7 @@ */ dma_addr_t handle; handle = swiotlb_map_single(NULL, NULL, size, DMA_FROM_DEVICE); - if (dma_mapping_error(handle)) + if (swiotlb_dma_mapping_error(handle)) return NULL; ret = phys_to_virt(handle);